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

python去噪函數(shù) python噪聲

Python 之內(nèi)置函數(shù):filter、map、reduce、zip、enumerate

這幾個函數(shù)在 Python 里面被稱為高階函數(shù),本文主要學(xué)習(xí)它們的用法。

10年積累的成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認識你,你也不認識我。但先做網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有潮州免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

filter 函數(shù)原型如下:

第一個參數(shù)是判斷函數(shù)(返回結(jié)果需要是 True 或者 False),第二個為序列,該函數(shù)將對 iterable 序列依次執(zhí)行 function(item) 操作,返回結(jié)果是過濾之后結(jié)果組成的序列。

簡單記憶:對序列中的元素進行篩選,獲取符合條件的序列。

返回結(jié)果為: ,使用 list 函數(shù)可以輸入序列內(nèi)容。

map 函數(shù)原型如下:

該函數(shù)運行之后生成一個 list,第一個參數(shù)是函數(shù)、第二個參數(shù)是一個或多個序列;

下述代碼是一個簡單的測試案例:

上述代碼運行完畢,得到的結(jié)果是: 。使用 print(list(my_new_list)) 可以得到結(jié)果。

map 函數(shù)的第一個參數(shù),可以有多個參數(shù),當(dāng)這種情況出現(xiàn)后,后面的第二個參數(shù)需要是多個序列。

map 函數(shù)解決的問題:

reduce 函數(shù)原型如下:

第一個參數(shù)是函數(shù),第二個參數(shù)是序列,返回計算結(jié)果之后的值。該函數(shù)價值在于滾動計算應(yīng)用于列表中的連續(xù)值。

測試代碼如下:

最終的結(jié)果是 6,如果設(shè)置第三個參數(shù)為 4,可以運行代碼查看結(jié)果,最后得到的結(jié)論是,第三個參數(shù)表示初始值,即累加操作初始的數(shù)值。

簡單記憶:對序列內(nèi)所有元素進行累計操作。

zip 函數(shù)原型如下:

zip 函數(shù)將可迭代的對象作為參數(shù),將對象中對應(yīng)的元素打包成一個個元組,然后返回由這些元組組成的列表。

如果各個迭代器的元素個數(shù)不一樣,則返回列表長度與最短的對象相同,利用星號( * )操作符,可以將元組解壓為列表。

測試代碼如下:

展示如何利用 * 操作符:

輸出結(jié)果如下:

簡單記憶:zip 的功能是映射多個容器的相似索引,可以方便用于來構(gòu)造字典。

enumerate 函數(shù)原型如下:

參數(shù)說明:

該函數(shù)用于將一個可遍歷的數(shù)據(jù)對象組合為一個索引序列,同時列出數(shù)據(jù)和數(shù)據(jù)下標(biāo),一般用在 for 循環(huán)當(dāng)中。

測試代碼如下:

返回結(jié)果為: 。

本文涉及的函數(shù)可以與 lambda 表達式進行結(jié)合,能大幅度提高編碼效率。最好的學(xué)習(xí)資料永遠是官方手冊

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

數(shù)字信號是通過對連續(xù)的模擬信號采樣得到的離散的函數(shù)。它可以簡單看作一個以時間為下標(biāo)的數(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)換到頻域中去,最后將各幀在頻域的圖像拼接起來,用橫坐標(biāo)代表時間,縱坐標(biāo)代表頻率,顏色代表能量強度(比如紅色代表高能,藍色代表低能),那么我們就構(gòu)造出所謂 頻譜圖 。比如上述“skip”發(fā)音對應(yīng)的信號的頻譜圖是:

(使用5.8毫秒的漢寧窗)

從若干幀信號中,我們又可以恢復(fù)出原始信號。只要我們適當(dāng)選取窗口大小,以及窗口之間的平移距離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ù)噪聲樣本確定的。比如當(dāng)通過門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ù)據(jù)使用前要清洗,去除無效數(shù)據(jù)。

如果這些數(shù)據(jù)都是有效數(shù)據(jù),只是你不想顯示那些過份異常的數(shù)據(jù),那么,就進行去噪處理。

去噪分兩步:檢測噪點,噪點修正。

對于整體連續(xù),總體范圍大的數(shù)據(jù)集,最簡單的檢測噪點的辦法就是鄰值法,對于第n取相鄰的k個值:p[n-k,],p[n-k+1]...p[n-1]

對它們加權(quán)平均,得到標(biāo)準(zhǔn)點,上下浮動一定范圍,如果p[k]不在這個范圍內(nèi)就是異常點

對應(yīng)的噪點修正可以使用類似的過程,局部噪點回歸法。

這些一般來說都不是很實現(xiàn)的東西,對于數(shù)據(jù)集結(jié)構(gòu)的不同,沒有必要做成通用的包,所以你只有自己實現(xiàn)。

3種python3的canny邊緣檢測之靜態(tài),可調(diào)節(jié)和自適應(yīng)

先看高級版的python3的canny的自適應(yīng)邊緣檢測:

內(nèi)容:

1 canny的邊緣檢測的介紹。

2 三種方法的canny的邊緣檢測,由淺入深地介紹:固定值的靜態(tài),可自調(diào)節(jié)的,自適應(yīng)的。

說明:

1 環(huán)境:python3.8、opencv4.5.3和matplotlib3.4.3。

2 圖片:來自品閱網(wǎng)正版免費圖庫。

3 實現(xiàn)自適應(yīng)閾值的canny邊緣檢測的參考代碼和文章:

上述的代碼,本機均有報錯,故對代碼進行修改,注釋和運行。

初級canny:

1 介紹:opencv中給出了canny邊緣檢測的接口,直接調(diào)用:

即可得到邊緣檢測的結(jié)果ret,其中,t1,t2是需要人為設(shè)置的閾值。

2 python的opencv的一行代碼即可實現(xiàn)邊緣檢測。

3 Canny函數(shù)及使用:

4 Canny邊緣檢測流程:

去噪 -- 梯度 -- 非極大值抑制 -- 滯后閾值

5 代碼:

6 操作和過程:

7 原圖:

8 疑問:

ret = cv2.canny(img,t1,t2),其中,t1,t2是需要人為設(shè)置的閾值,一般人怎么知道具體數(shù)值是多少,才是最佳的呀?所以,這是它的缺點。

中級canny:

1 中級canny,就是可調(diào)節(jié)的閾值,找到最佳的canny邊緣檢測效果。

2 采用cv2.createTrackbar來調(diào)節(jié)閾值。

3 代碼:

4 操作和效果:

5 原圖:

高級canny:

1 自適應(yīng)canny的算法:

ret = cv2.canny(img,t1,t2)

即算法在運行過程中能夠自適應(yīng)地找到較佳的分割閾值t1,t2。

2 文件結(jié)構(gòu):

3 main.py代碼:

4 dog.py代碼:

5 bilateralfilt.py代碼:

6 原圖:

7 效果圖:本文第一個gif圖,此處省略。

小結(jié):

1 本文由淺入深,總結(jié)的很好,適合收藏。

2 對于理解python的opencv的canny的邊緣檢測,很有幫助。

3 本文高級版canny自適應(yīng)的算法參考2篇文章,雖然我進行代碼的刪除,注釋,修改,優(yōu)化等操作,故我不標(biāo)注原創(chuàng),對原作者表達敬意。

4 自己總結(jié)和整理,分享出來,希望對大家有幫助。

python里的問題 ,pywt.dwt(signal,'db1','sym')這個函數(shù)

噪聲能獲取嗎?好吧。你可以試試減一減。不過你的測試用例不太對。 盡量用有規(guī)律的數(shù)據(jù)去做。

比如你可以做一個正弦函數(shù),再人為的加上一點點擾動。再做小波變換看看。另外數(shù)據(jù)要多些。太短的數(shù)據(jù)看不出效果來。

至于變換后是兩個4,我想等你數(shù)據(jù)弄多些就明白了。 數(shù)據(jù)多些,就容易做圖。你把變換后的數(shù)據(jù)變成圖形,畫出來。可以用EXCEL來畫。

這樣一對比就明白變換后的兩個4數(shù)組是什么數(shù)據(jù)。 然后你就可以針對性的處理。取得噪聲也是可以的。

通常來講噪聲是沒有規(guī)律的。 但是不排除它是另外一種規(guī)律迭加上去的。 試試看。

新聞標(biāo)題:python去噪函數(shù) python噪聲
文章網(wǎng)址:http://chinadenli.net/article30/hhjepo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)建站公司企業(yè)網(wǎng)站制作App開發(fā)電子商務(wù)營銷型網(wǎng)站建設(shè)

廣告

聲明:本網(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è)計公司