维纳滤波推导
原文:https://blog.csdn.net/bluecol/article/details/46242355?
在數學應用上,對于運動引起的圖像模糊,最簡單的方法是直接做逆濾波,但是逆濾波對加性噪聲特別敏感,使得恢復的圖像幾乎不可用。最小均方差(維納)濾波用來去除含有噪聲的模糊圖像,其目標是找到未污染圖像的一個估計,使它們之間的均方差最小,可以去除噪聲,同時清晰化模糊圖像。
定義
給定一個系統?
y(t)=h(t)?x(t)+n(t)
y(t)=h(t)?x(t)+n(t)
這里,??是卷積符號
x(t)x(t)是在時間tt刻輸入的信號(未知)
h(t)h(t)是一個線性時間不變系統的脈沖響應(已知)
n(t)n(t)是加性噪聲,與x(t)x(t)不相關(未知)
y(t)y(t)是我們觀察到的信號?
我們的目標是找出這樣的卷積函數g(t)g(t),這樣我們可以如下得到估計的x(t)x(t):?
x^(t)=g(t)?y(t)
x^(t)=g(t)?y(t)
這里x^(t)x^(t)是x(t)x(t)的最小均方差估計。?
基于這種誤差度量, 濾波器可以在頻率域如下描述?
G(f)=H?(f)S(f)|H(f)|2S(f)+N(f)=H?(f)|H(f)|2+N(f)/S(f)
G(f)=H?(f)S(f)|H(f)|2S(f)+N(f)=H?(f)|H(f)|2+N(f)/S(f)
這里:
G(f)G(f)和H(f)H(f)是gg和hh在頻率域ff的傅里葉變換。
S(f)S(f)是輸入信號x(t)x(t)的功率譜。
N(f)N(f)是噪聲的n(t)n(t)的功率譜。
上標??代表復數共軛。?
濾波過程可以在頻率域完成:?
X^(f)=G(f)?Y(f)
X^(f)=G(f)?Y(f)
這里 X^(f)X^(f)是 x^(t)x^(t)的傅里葉變換,通過逆傅里葉變化可以得到去卷積后的結果x^(t)x^(t)。
解釋
上面的式子可以改寫成更為清晰的形式?
G(f)=1H(f)???|H(f)|2|H(f)|2+N(f)S(f)???=1H(f)???|H(f)|2|H(f)|2+1SNR(f)???
G(f)=1H(f)[|H(f)|2|H(f)|2+N(f)S(f)]=1H(f)[|H(f)|2|H(f)|2+1SNR(f)]
這里H(f)H(f)是hh在頻率域ff的傅里葉變換。SNR(f)=S(f)/N(f)SNR(f)=S(f)/N(f)是信號噪聲比。當噪聲為零時(即信噪比趨近于無窮),方括號內各項也就等于1,意味著此時刻維納濾波也就簡化成逆濾波過程。但是當噪聲增加時,信噪比降低,方括號里面值也跟著降低。這說明,維納濾波的帶通頻率依賴于信噪比。
推導
上面直接給出了維納濾波的表達式,接下來介紹推導過程。?
上面提到,維納濾波是建立在最小均方差,可以如下表示:?
e(f)=E|X(f)?X^(f)|2
e(f)=E|X(f)?X^(f)|2
這里EE是期望?
如果我們替換表達式中的X^(f)X^(f),上面可以重新組合成?
e(f)=E|X(f)?G(f)Y(f)|2=E|X(f)?G(f)[H(f)X(f)+V(f)]|2=E|[1?G(f)H(f)]X(f)?G(f)V(f)|2
e(f)=E|X(f)?G(f)Y(f)|2=E|X(f)?G(f)[H(f)X(f)+V(f)]|2=E|[1?G(f)H(f)]X(f)?G(f)V(f)|2
展開二次方,得到下式:?
e(f)=[1?G(f)H(f)][1?G(f)H(f)]?E|X(f)|2?[1?G(f)H(f)]G?(f)E{X(f)V?(f)}?G(f)[1?G(f)H(f)]?E{V(f)X?(f)}+G(f)G?(f)E|V(f)|2
e(f)=[1?G(f)H(f)][1?G(f)H(f)]?E|X(f)|2?[1?G(f)H(f)]G?(f)E{X(f)V?(f)}?G(f)[1?G(f)H(f)]?E{V(f)X?(f)}+G(f)G?(f)E|V(f)|2
然而,我們假設噪聲與信號獨立無關,這樣有?
E{X(f)V?(f)}=E{V(f)X?(f)}=0
E{X(f)V?(f)}=E{V(f)X?(f)}=0
并且我們如下定義功率譜?
S(f)=E|X(f)|2N(f)=E|V(f)|2
S(f)=E|X(f)|2N(f)=E|V(f)|2
這樣我們有?
e(f)=[1?G(f)H(f)][1?G(f)H(f)]?S(f)+G(f)G?(f)N(f)
e(f)=[1?G(f)H(f)][1?G(f)H(f)]?S(f)+G(f)G?(f)N(f)
為了得到最小值,我們對G(f)G(f)求導,令方程等于零。?
d(f)dG(f)=G?(f)N(f)?H(f)[1?G(f)H(f)]?S(f)=0
d(f)dG(f)=G?(f)N(f)?H(f)[1?G(f)H(f)]?S(f)=0
由此最終推出維納濾波器。
測試
Matlab自帶了示例程序,如下
%Read image
I = im2double(imread('cameraman.tif'));
figure,subplot(2,3,1),imshow(I);
title('Original Image (courtesy of MIT)');
%Simulate a motion blur
LEN = 21;
THETA = 11;
PSF = fspecial('motion', LEN, THETA);
blurred = imfilter(I, PSF, 'conv', 'circular');
subplot(2,3,2),imshow(blurred);
title('Blurred Image');
%Restore the blurred image
wnr1 = deconvwnr(blurred, PSF, 0);
subplot(2,3,3),imshow(wnr1);
title('Restored Image');
%Simulate blur and noise
noise_mean = 0;
noise_var = 0.0001;
blurred_noisy = imnoise(blurred, 'gaussian', ...
? ? ? ? ? ? ? ? ? ? ? ? noise_mean, noise_var);
subplot(2,3,4),imshow(blurred_noisy)
title('Simulate Blur and Noise')
%Restore the blurred and noisy image:First attempt
wnr2 = deconvwnr(blurred_noisy, PSF, 0);
subplot(2,3,5);imshow(wnr2);title('Restoration of Blurred, Noisy Image Using NSR = 0')
%Restore the Blurred and Noisy Image: Second Attempt
signal_var = var(I(:));
wnr3 = deconvwnr(blurred_noisy, PSF, noise_var / signal_var);
subplot(2,3,6),imshow(wnr3)
title('Restoration of Blurred, Noisy Image Using Estimated NSR');
維納濾波需要估計圖像的信噪比(SNR)或者噪信比(NSR),信號的功率譜使用圖像的方差近似估計,噪聲分布是已知的。從第一排中可以看出,若無噪聲,此時維納濾波相當于逆濾波,恢復運動模糊效果是極好的。從第二排可以看出噪信比估計的準確性對圖像影響比較大的,二排中間效果幾乎不可用。
參考閱讀
http://en.wikipedia.org/wiki/Wiener_deconvolution 英文維基百科?
http://www.owlnet.rice.edu/~elec539/Projects99/BACH/proj2/wiener.html 萊斯大學的項目資料
轉載保留聲明
作者?? ?日期?? ?聯系方式
風吹夏天?? ?2015年5月29日?? ?wincoder@qq.com
---------------------?
作者:風吹夏天?
來源:CSDN?
原文:https://blog.csdn.net/bluecol/article/details/46242355?
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!
總結
- 上一篇: Android官方文档—APP组件(Co
- 下一篇: multisim10元件库介绍