https://blog.csdn.net/alwaystry/article/details/52756051
小波圖像去噪原理
圖像和噪聲在經小波變換後具備不一樣的統計特性:圖像自己的能量對應着幅值較大的小波係數,主要集中在低頻(LL)部分;噪聲能量則對應着幅值較小的小波係數,並分散在小波變換後的全部係數中。基於此可設置一個合適的閾值門限,認爲大於該閾值的小波係數的主要成份爲有用的信號,給予收縮後保留;小於該閾值的小波係數,主要成份爲噪聲,予以置零剔除;而後通過閾值函數映射獲得估計係數;最後對估計係數進行逆變換,就能夠實現去噪和重建。去噪時,一般認爲低通係數含有大量的圖像能量,通常不做處理,只對剩餘三個高通部分進行處理。一次閾值去噪並不能徹底去除噪聲,還須要對未做處理的低頻部分(LL)再次進行小波分解和閾值去噪,直到實際圖像與估計圖像的誤差達到最小值。可是,隨着分解和去噪次數的增長,小波係數中的噪聲能量愈來愈小,而且趨於分散,去噪的效果將逐漸下降。通常來講,進行3-4層小波分解和去噪就能夠達到滿意的去噪效果。less
小波閾值去噪步驟
(1)二維信號的小波分解。選擇一個小波(sym8)和小波分解的層次N(3),而後計算信號S到第N層的分解。函數
(2)對高頻係數進行閾值量化,對於從一到N的每一層,選擇一個閾值,並對這一層的高頻係數進行軟閾值化處理。flex
(3)二維小波的重構,根據小波分解的第N層的低頻係數和通過修改的從第一層到第N層的高頻係數,來計算二維信號的小波重構。spa
Python實現小波閾值去噪程序
import numpy as np.net
import pywt設計
data = np.linspace(1, 4, 7)blog
# pywt.threshold方法講解:it
# pywt.threshold(data,value,mode =‘soft’,substitute = 0 )class
# data:數據集,value:閾值,mode:比較模式默認soft,substitute:替代值,默認0,float類型import
#data: [ 1. 1.5 2. 2.5 3. 3.5 4. ]
#output:[ 6. 6. 0. 0.5 1. 1.5 2. ]
#soft 由於data中1小於2,因此使用6替換,由於data中第二個1.5小於2也被替換,2不小於2因此使用當前值減去2,,2.5大於2,因此2.5-2=0.5.。..。
print 「---------------------soft:絕對值-------------------------」
print pywt.threshold(data, 2, ‘soft’,6)
print 「---------------------hard:絕對值-------------------------」
#data: [ 1. 1.5 2. 2.5 3. 3.5 4. ]
#hard data中絕對值小於閾值2的替換爲6,大於2的不替換
print pywt.threshold(data, 2, ‘hard’,6)
print 「---------------------greater-------------------------」
#data: [ 1. 1.5 2. 2.5 3. 3.5 4. ]
#data中數值小於閾值的替換爲6,大於等於的不替換
print pywt.threshold(data, 2, ‘greater’,6)
print 「---------------------less-------------------------」
print data
#data: [ 1. 1.5 2. 2.5 3. 3.5 4. ]
#data中數值大於閾值的,替換爲6
print pywt.threshold(data, 2, ‘less’,6)