欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

python數(shù)據(jù)去噪函數(shù) python圖像去噪

python中的filter函數(shù)怎么用

python filter內(nèi)建函數(shù)

站在用戶的角度思考問題,與客戶深入溝通,找到鎮(zhèn)坪網(wǎng)站設(shè)計與鎮(zhèn)坪網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站設(shè)計、成都做網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名注冊虛擬主機、企業(yè)郵箱。業(yè)務(wù)覆蓋鎮(zhèn)坪地區(qū)。

filter函數(shù)是python內(nèi)建函數(shù),可以操作任何可迭代類型,如list,tuple,string.

filter需要帶上一個函數(shù)function和一個可迭代序列作為參數(shù)。filter()將調(diào)用該function作用于每一個可迭代序列的元素,并返回一個由該function驗證后返回值為true的元素組成新的可迭代序列,新序列的類型保持與filter參數(shù)序列的類型一致

2.filter與數(shù)字

下面用這個例子來說明:

#建個數(shù)字列表

numbers?=?[1,5,9,8,4,6,3,7]

#定義一個過濾標準,取小于5的數(shù)

def?lessThanFive(element):

return?element??5

print?filter(lessThanFive,?numbers)

輸出結(jié)果是列表:[1,4,3]

解說:此處的過濾函數(shù)lessThanFive必需帶入一個參數(shù)(filter()會調(diào)用lessThanFive,參數(shù)是列表nembers中的每一個元素,一次一個)。filter()返回所有值都是小于5的列表

3.filter與字符串

下面用如下例子說明:

#定義元組類型

names?=?('Jack',?'Jill,?'Steve',?'')

#篩選出名字

new_names?=?filter(None,?names)

print?new_names

輸出結(jié)果是元組:

('Jack',?'Jill,?'Steve')

在元組names最后一個名字是空字符串,而filter的第一個參數(shù)是None,這說明需要使用identity函數(shù)(該函數(shù)是簡單的返回該元素的)

因為python對空字符串,0和None作為False,所以上面的filter的語句就是移除空元素。

4.filter和函數(shù)

目的:找出以J開頭的名字

def?startsWithJ(element):

if?element:

return?element[0]?==?'J'

return?False

j_names?=?filter(startsWithJ,?names)

print?j_names

輸出結(jié)果是元組:('Jack',?'Jill')

注意到了嗎,上面的2個結(jié)果都是tuple而不是list,再一次說明fliter的返回值類型與參數(shù)序列的類型保持一致

ssa數(shù)據(jù)降噪算法簡易實例

原始數(shù)據(jù)是[1 9 2 8 3 7]

嵌入:

比如選擇的窗口長度L為3,得到的矩陣就是:

[1 9 2]

[9 2 8]

[2 8 3]

[8 3 7]

SVD分解:

Python里自帶一個函數(shù)進行分解,就不用它參考文獻上寫的啥X乘X的轉(zhuǎn)置了,函數(shù)是這個:

u, s, v = np.linalg.svd(嵌入得到的矩陣)

得到的三個結(jié)果是這樣的

u是個形狀為(4, 4)的矩陣,為啥是4我不知道

[-0.34748861 -0.67722177? 0.41306458 -0.5? ? ? ]

[-0.62332023? 0.4373678? -0.41253036 -0.5? ? ? ]

[-0.38669102 -0.52074809 -0.57383924? 0.5? ? ? ]

[-0.58411781? 0.28089413? 0.57437346? 0.5? ? ? ]

s是,形狀為(3,)?

[18.29004176? 9.97102473? 0.23030046]

奇藝譜就是s里取最大值,這里為 18.29004175999194

v是,形狀是(3, 3)

[-0.62349202 -0.50409505 -0.59761683]

[ 0.44777196 -0.85683898? 0.25559193]

[ 0.64090402? 0.10823653 -0.7599519 ]

重構(gòu):

重構(gòu)矩陣的計算方法是 newMatrix = value * u1 * v1

value就是奇藝譜,SVD分解里得到的s里的最大值,上面也提了一下,這里value是: 18.29004175999194

u1是在u的基礎(chǔ)上,取第一行,為

[-0.34748861 -0.62332023 -0.38669102 -0.58411781]

v1是在u的基礎(chǔ)上,取第一行,為

[-0.62349202 -0.50409505 -0.59761683]

計算時需要對u1進行轉(zhuǎn)置,轉(zhuǎn)置后的u1是:

[-0.34748861]

[-0.62332023]

[-0.38669102]

[-0.58411781]

重構(gòu)完的矩陣就是:

[3.96265415 3.203817? 3.79820225]

[7.10815385 5.74696232 6.81316231]

[4.40970654 3.56526011 4.22670177]

[6.66110146 5.38551921 6.3846628 ]

最后把重構(gòu)完的矩陣再轉(zhuǎn)變?yōu)橐痪S數(shù)組:

設(shè)這個一維數(shù)組叫ret[],對于重構(gòu)完的矩陣,對每一條次對角線進行計算,并把結(jié)果添加到ret[]里

利用兩個動態(tài)的變量,這里分別叫sigma和alpha,sigma是每條次對角線的數(shù)據(jù)的和,alpha是次對角線長度

ret.append(sigma/alpha)

就相當于添加了每條次對角線的平均值。

過程大概是這樣的:

pos is( 0 , 0 ) sigma+

alpha is 1 now

ret[] append

pos is( 1 , 0 ) sigma+,

pos is( 0 , 1 ) sigma+

alpha is 2 now

ret[] append

pos is( 2 , 0 ) sigma+

pos is( 1 , 1 ) sigma+

pos is( 0 , 2 ) sigma+

alpha is 3 now

ret[] append

pos is( 3 , 0 ) sigma+

pos is( 2 , 1 ) sigma+

pos is( 1 , 2 ) sigma+

alpha is 3 now

ret[] append

pos is( 3 , 1 ) sigma+

pos is( 2 , 2 ) sigma+

alpha is 2 now

ret[] append

pos is( 3 , 2 ) sigma+

alpha is 1 now

ret[] append

處理后的數(shù)據(jù)ret[]為:

[3.9626541544632476 5.155985423726059 4.651623704998423 5.67984129396347 4.806110489242382 6.384662797164128]

就是最終結(jié)果

備注:

因為窗口長度L的選擇不宜超過數(shù)據(jù)長度的1/3,這里數(shù)據(jù)長度是6,L為了為了算著方便選的3,所以這個例子的效果不好,但是領(lǐng)會精神。

做為參考的話,處理數(shù)據(jù)的時候,數(shù)據(jù)長度是300+,L選的4。

源碼訪問:

參考文獻

Python 簡單的擴音,音頻去噪,靜音剪切

數(shù)字信號是通過對連續(xù)的模擬信號采樣得到的離散的函數(shù)。它可以簡單看作一個以時間為下標的數(shù)組。比如,x[n],n為整數(shù)。比如下圖是一個正弦信號(n=0,1, ..., 9):

對于任何的音頻文件,實際上都是用這種存儲方式,比如,下面是對應(yīng)英文單詞“skip”的一段信號(只不過由于點太多,筆者把點用直線連接了起來):

衡量數(shù)字信號的 能量(強度) ,只要簡單的求振幅平方和即可:

我們知道,聲音可以看作是不同頻率的正弦信號疊加。那么給定一個聲音信號(如上圖),怎么能夠知道這個信號在不同頻率區(qū)段上的強度呢?答案是使用離散傅里葉變換。對信號x[n], n=0, ..., N-1,通常記它的離散傅里葉變換為X[n],它是一個復(fù)值函數(shù)。

比如,對上述英文單詞“skip”對應(yīng)的信號做離散傅里葉變換,得到它在頻域中的圖像是:

可以看到能量主要集中在中低音部分(約16000Hz以下)。

在頻域上,也可以計算信號的強度,因為根據(jù)Plancherel定理,有:

對于一般的語音信號,長度都至少在1秒以上,有時候我們需要把其中比如25毫秒的一小部分單獨拿出來研究。將一個信號依次取小段的操作,就稱作分幀。技術(shù)上,音頻分幀是通過給信號加一系列的 窗 函數(shù) 實現(xiàn)的。

我們把一種特殊的函數(shù)w[n],稱作窗函數(shù),如果對所有的n,有0=w[n]=1,且只有有限個n使得w[n]0。比如去噪要用到的漢寧窗,三角窗。

漢寧窗

三角窗

我們將平移的窗函數(shù)與原始信號相乘,便得到信號的“一幀”:

w[n+d]*x[n]

比如用長22.6毫秒的漢寧窗加到“skip”信號大約中間部位上,得到一幀的信號:

可見除一有限區(qū)間之外,加窗后的信號其他部分都是0。

對一幀信號可以施加離散傅里葉變換(也叫短時離散傅里葉變換),來獲取信號在這一幀內(nèi)(通常是很短時間內(nèi)),有關(guān)頻率-能量的分布信息。

如果我們把信號按照上述方法分成一幀一幀,又將每一幀用離散傅里葉變換轉(zhuǎn)換到頻域中去,最后將各幀在頻域的圖像拼接起來,用橫坐標代表時間,縱坐標代表頻率,顏色代表能量強度(比如紅色代表高能,藍色代表低能),那么我們就構(gòu)造出所謂 頻譜圖 。比如上述“skip”發(fā)音對應(yīng)的信號的頻譜圖是:

(使用5.8毫秒的漢寧窗)

從若干幀信號中,我們又可以恢復(fù)出原始信號。只要我們適當選取窗口大小,以及窗口之間的平移距離L,得到 ..., w[n+2L], w[n+L], w[n], w[n-L], w[n-2L], ...,使得對k求和有:

從而簡單的疊加各幀信號便可以恢復(fù)出原始信號:

最后,注意窗函數(shù)也可以在頻域作用到信號上,從而可以起到取出信號的某一頻段的作用。

下面簡單介紹一下3種音效。

1. 擴音

要擴大信號的強度,只要簡單的增大信號的“振幅”。比如給定一個信號x[n],用a1去乘,便得到聲音更大的增強信號:

同理,用系數(shù)0a1去乘,便得到聲音變小的減弱信號。

2. 去噪(降噪)

對于白噪音,我們可以簡單的用“移動平均濾波器”來去除,雖然這也會一定程度降低聲音的強度,但效果的確不錯。但是,對于成分較為復(fù)雜,特別是頻段能量分布不均勻的噪聲,則需要使用下面的 噪聲門 技術(shù),它可以看作是一種“多帶通濾波器”。

這個特效的基本思路是:對一段噪聲樣本建模,然后降低待降噪信號中噪聲的分貝。

更加細節(jié)的說,是在信號的若干頻段f[1], ..., f[M]上,分別設(shè)置噪聲門g[1], ..., g[M],每個門都有一個對應(yīng)的閾值,分別是t[1], ..., t[M]。這些閾值時根據(jù)噪聲樣本確定的。比如當通過門g[m]的信號強度超過閾值t[m]時,門就會關(guān)閉,反之,則會重新打開。最后通過的信號便會只保留下來比噪聲強度更大的聲音,通常也就是我們想要的聲音。

為了避免噪聲門的開合造成信號的劇烈變動,筆者使用了sigmoid函數(shù)做平滑處理,即噪聲門在開-關(guān)2個狀態(tài)之間是連續(xù)變化的,信號通過的比率也是在1.0-0.0之間均勻變化的。

實現(xiàn)中,我們用漢寧窗對信號進行分幀。然后對每一幀,又用三角窗將信號分成若干頻段。對噪聲樣本做這樣的處理后,可以求出信號每一頻段對應(yīng)的閾值。然后,又對原始信號做這樣的處理(分幀+分頻),根據(jù)每一幀每一頻段的信號強度和對應(yīng)閾值的差(diff = energy-threshold),來計算對應(yīng)噪聲門的開合程度,即通過信號的強度。最后,簡單的將各頻段,各幀的通過信號疊加起來,便得到了降噪信號。

比如原先的“skip”語音信號頻譜圖如下:

可以看到有較多雜音(在高頻,低頻段,藍色部分)。采集0.25秒之前的聲音作為噪聲樣本,對信號作降噪處理,得到降噪后信號的頻譜圖如下:

可以明顯的看到大部分噪音都被清除了,而語音部分仍完好無損,強度也沒有減弱,這是“移動平均濾波器”所做不到的。

3. 靜音剪切

在對音頻進行上述降噪處理后,我們還可以進一步把多余的靜音去除掉。

剪切的原理十分簡單。首先用漢寧窗對信號做分幀。如果該幀信號強度過小,則舍去該幀。最后將保留的幀疊加起來,便得到了剪切掉靜音部分的信號。

比如,對降噪處理后的“skip”語音信號做靜音剪切,得到的新信號的頻譜圖為:

用opencv去噪

使用opencv-python的內(nèi)置函數(shù),對圖片進行降噪處理。

8Fourier變換的應(yīng)用——圖像去噪

給出的圖片是RGB圖片,也就是需要有三個通道。

下面的函數(shù)用來去噪。

img=np.uint8(cv2.fastNlMeansDenoisingColored(img,None,10,10,7,21))

對這個圖片進行局部自適應(yīng)二值化處理:

img=hui(img)

th1 = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,31,5)

另一種局部自適應(yīng)二值化處理:

th2 = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,31,5)

在第一步連續(xù)執(zhí)行兩次去噪,得到的三幅圖片是:

執(zhí)行三次降噪。

連續(xù)10次降噪。

新聞標題:python數(shù)據(jù)去噪函數(shù) python圖像去噪
標題路徑:http://chinadenli.net/article27/hhpsjj.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設(shè)商城網(wǎng)站營銷型網(wǎng)站建設(shè)域名注冊網(wǎng)站排名小程序開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護公司