圖像算法五:【圖像小波變換】多分辨率重構、Gabor濾波器、Haar小波
matlab設計:
與單純運用某種自適應算法相比,基於小波分解的自適應濾波算法在收斂速度和穩定性上都有了很大的提高
小波變換:
示意:尺度越大,采用越大的時間窗,尺度越小,采用越短的時間窗,即尺度與頻率成反比。在時頻兩域都具有表征信號局部特征的能力,其在低頻部分具有較高的頻率分辨率和較低的時間分辨率,在高頻部分具有較高的時間分辨率和較低的頻率分辨率,所以被譽為分析信號的數字顯微鏡。
小波變換與傅里葉變換對比的優點:短時傅立葉分析是把一個短時間的窗函數加在信號上,再對這一部分加窗的信號做傅立葉變換,當然,假定了在短時間內信號是平穩的。然后移動窗函數,對整個時間軸上的信號做短時傅立葉分析。但是,又有問題出現了,短時傅立葉分析一旦確定了窗函數,窗函數的形狀便不再改變,於是短時傅立葉分析對於信號的時頻分辨率也隨之確定。
而我們希望稍微智能一點,即對於變化劇烈的信號,時間分辨率能高一點,頻率分辨率可以降低,而對於變化平坦的信號,頻率分辨率要高一些,時間分辨率可以低點。於是小波分析便產生了。
小波分析同樣對信號在一短時間內做加窗(小波函數)分析,只是這個窗,即小波函數既可以在時間軸上移動,又可以伸縮,伸縮便意味着時頻分辨率的改變。
小波變換的物理表現:分解的結果是產生長度減半的兩個部分,一個是經低通濾波器產生的原始信號的平滑部分,另一個則是經高通濾波器產生的原始信號細節部分。
不同j所確定的頻帶是獨立的,隨j變化相互獨立的頻帶覆蓋了整個頻率軸,分辨率j反應了頻帶的位置和帶寬把信號分解到一系列相互獨立的頻帶上分辨率j-1時的近似信號=f(x)在分辨率為j時的近似部分+細節部分
再對低頻部分進行相似運算
3、小波變換在matlab中的使用
[C, S] = wavedec2(x, n, wname); % 對圖像進行小波分解
小波變換的層數選擇:通常分解層數過多,並且對所有的各層小波空間的系數都進行閾值處理會造成信號的信息丟失嚴重,去噪后的信噪比反而下降,同時導致運算量增大,使處理變慢.
分解層數過少則去噪效果不理想,信噪比提高不多,但不會出現信噪比下降的情況.
小波函數的選取:按常理選取了sym4
[C,S]的含義:C=[A(n)|H(n)|D(n)|………H(1)|V(1)|D(1)]
h ,v ,d 分別反映水平、垂直、對角線方向
S(1,:)=size of approximation coefficients(n)
部分程序運行:原始圖像→加噪圖像(同時加入高斯噪聲和椒鹽噪聲)→小波分解后的圖像顯示
.M=imread('detfinger1.png');
%讀取MATLAB中的名為detfinger的圖像 分辨率:512×512
subplot(1,2,1)
imshow(M); %顯示原始圖像
title('原始圖像')
P1=imnoise(M,'gaussian',0.02);
%加入高斯躁聲,方差為0.02的高斯噪聲
P2=imnoise(P1,'salt &pepper',0.02);
%同時加入高斯噪聲和椒鹽躁聲
subplot(1,2,2)
imshow(P2);%加入椒鹽躁聲后顯示圖像
title('加入高斯椒鹽躁聲后');
%%對加入高斯噪聲的圖像進行小波分解
P2=double(P2);
[CA,CH,CV,CD]= dwt2(P2,'db1 ');
y =[CA,CH;CV,CD];
y=uint8(y);
subplot(3,1,3);
imshow(y);
title('小波分解');
4、濾波器的特性
我的思路:先了解維納濾波器的原理再進一步改進,理解自適應濾波器,進行自適應濾波器的設計,再進行自適應濾波器的組合設計,從而實現去噪功能
維納濾波器:根據平穩隨機信號的全部過去和當前的觀察數據來估計信號的當前值,在最小均方誤差的條件下得到系統的傳遞函數,參數是固定的,適用於平穩隨機信號。
卡爾曼濾波器:根據當前時刻數據的觀測值和前一時刻對該一時刻的預測值進行遞推數據。它自動調節本身的沖擊響應特性(自動調節數字濾波器的系數),以適應信號變化的特性,從而達到最優化濾波。它的參數是時變的,適用於非平穩隨機信號。
這兩種濾波器最優濾波的條件:噪聲的統計特性先驗已知
但實際應用中,常常無法得到這些統計特征的先驗知識(統計特性是隨時間變化的),因此實現不了最優濾波。
自適應濾波器:無法得到一些統計特性的先驗知識(統計特性隨時間變化)
而自適應濾波器在輸入信號統計特性未知或者統計特性變化時,能夠自動調節自身的參數,使其按照某種准則達到最優濾波。由於自適應濾波器具有這種特性,自提出以來,在實際工程中的眾多領域得到了廣泛應用。
5、如何設計和建立自適應濾波器
自適應濾波器工作原理是:系統能夠按照某種算法自動調節權系數,使其實際輸出和期望輸出的均方誤差達到最小值。
自適應濾波器的結構:有FIR和IIR兩種。由於IIR濾波器存在穩定性的問題,因此一般采用FIR濾波器。由於FIR濾波器橫向結構的算法具有容易實現和計算量少等優點,在對收斂速度不是很快的場合,多采用FIR作為自適應濾波器結構。
自適應濾波算法:
自適應濾波器的核心部分就是自適應濾波算法,基於不同的准則,最常用的自適應濾波算法是LMS算法和RLS算法,LMS算法以最小均方誤差為准則,而RLS算法(遞歸最小二乘算法)以最小誤差平方和為准則。
LMS算法由於其具有計算量小,穩定性好,易於實現等優點,被廣泛使用。
LMS算法中均方誤差表示為:
使均方誤差達到最小值時,得到最佳權系數w*,應滿足下列方程:在實際中,LMS 迭代算法是以最速下降法為原則進行的,用公式表示為:
式中,u 是自適應步長; ( n) 為迭代的梯度。
這里來估計均方誤差 MSE 的梯度,並以此梯度估計值代替最速下降法中理論情況下的梯度真值,LMS( 最小均方) 算法進行梯度估計的方法是以誤差信號的每一次迭代的瞬間時平方值代替其均方值,並以此來估計梯度。
在自適應濾波器的設計過程中,濾波器階數 N和步長μ 等參數的選取對仿真結果的影響總結如下.
(1)自適應算法中步長 μ 的選擇:μ 的大小影響算法的收斂速度。 其中,為矩陣的最大特征值μ 取值小,收斂速度慢,計算工作量大,但濾波性能較好。μ 取值大,收斂速度快,計算工作量小,濾波性能較差。但 μ 大到一定值時,收斂速度變化不明顯,且取值過大,會造成計算溢出.
(2)自適應濾波器階數 N 的影響: N 不可以任意選取,需要根據經驗加上實際仿真驗證比較才能最終確定.。
當階數 N 取值大時,迭代次數增加,收斂速度變快。但當階數 N 大到一定程度,收斂速度變化不明顯,且可能引起系數迭代過程不收斂.
自適應濾波器原理:
輸入信號x(n)
、參考信號d(n)、誤差信號e(n)
e(n)為y(n)與d(n)的誤差信號,根據最小均方誤差算法調節自適應濾波器算法的參數,來優化濾波器結構,從而實現盡可能地保留圖像固有的信息。
LMS算法最核心的思想是用平方誤差代替均方誤差,基本的LMS算法為:
w(k,n+ 1)=w(k,n)+ 2μe(n)x(n-k)
其中,w(k,n)和w(k,n+ 1)分別為迭代前后的系數值;n和n+ 1為前后兩個時刻;k= 0,1,
… ,N- 1,N為濾波器的階數;μ為收斂因子;e(n)=d(n)-y(n)=d(n)-xT(n)w(n)=d(n)-wT(n)x(n)為誤差信號;x(n-k)為輸入信號;y(n)=xT(n)w(n)為輸出信號。
6、matlab仿真
進行小波變換→ 進行濾波后→ 再進行圖像重構→ 再小波反變換進行圖像重構→先用維納濾波器再用自適應濾波器替換
%%對加入高斯噪聲的圖像進行小波分解
J=double(J);
[CA,CH,CV,CD]= dwt2(J,'db1 ');
% [c,s]=wavedec2(j,1,'haar');
y =[CA,CH;CV,CD];
y=uint8(y);
subplot(2,2,3);
imshow(y);
title('小波分解');
%xx=wiener2(CA,[3 3]); %對加噪圖像進行二維自適應維納濾波 %濾波器窗口大小
yy=wiener2(CH,[3 3]); %對加噪圖像進行二維自適應維納濾波 %濾波器窗口大小
zz=wiener2(CV,[3 3]); %對加噪圖像進行二維自適應維納濾波 %濾波器窗口大小
qq=wiener2(CD,[3 3]); %對加噪圖像進行二維自適應維納濾波 %濾波器窗口大小
%%%圖像重構
XX = idwt2(CA,yy,zz,qq,'db1');
XX=uint8(XX);
subplot(2,2,4);
imshow(XX);
title('重構以后的圖像');