维纳滤波(附matlab代码)
一.實驗理論基礎``
維納濾波(wiener filtering) 一種基于最小均方誤差準則、對平穩過程的最優估計器。這種濾波器的輸出與期望輸出之間的均方誤差為最小,因此,它是一個最佳濾波系統。可用于提取被平穩噪聲所污染的信號。
從連續的(或離散的)輸入數據中濾除噪聲和干擾以提取有用信息的過程稱為濾波,這是信號處理中經常采用的主要方法之一,具有十分重要的應用價值,而相應的裝置稱為濾波器。根據濾波器的輸出是否為輸入的線性函數,可將它分為線性濾波器和非線性濾波器兩種。維納濾波器是一種線性濾波器。
維納濾波的基本原理是:設觀察信號y(t)含有彼此統計獨立的期望信號x(t)和白噪聲ω(t)可用維納濾波從觀察信號y(t)中恢復期望信號x(t)。設線性濾波器的沖擊響應為h(t),此時其輸入y(t)為y(t)=x(t)+w(t),輸出為
從而,可以得到輸出對x(t)期望信號的誤差為
其均方誤差為:
E[ ]表示數學期望。應用數學方法求最小均方誤差時的線性濾波器的沖擊響應hopt(t)可得方程:
式中,Ryx(t)為y(t)與x(t)的互相關函數,Ryy(τ-σ)為y(t)的自相關函數。上述方程稱為維納-霍夫(Wiener-Hopf)方程。求解維納-霍夫方程可以得到最佳濾波器的沖擊響應hopt(t)。
clear; close all; clc %Read image I = im2double(imread('31.jpg')); figure,subplot(4,4,1),imshow(I); title('Original Image'); noise = imnoise(zeros(size(I)),'gaussian',0,0.0001);%Simulate a motion blur LEN = 21; THETA = 11; PSF = fspecial('motion', LEN, THETA); blurred = imfilter(I, PSF, 'circular'); subplot(4,4,2),imshow(blurred); title('Blurred Image');%Simulate the noise image g = I + noise; subplot(4,4,3),imshow(g); title('noise image');%Simulate blur and noise bg = blurred + noise; subplot(4,4,4),imshow(bg) title('Blur and Noise image')%Restore the I image wnr11 = deconvwnr(I, PSF);%信噪比為零 subplot(4,4,5),imshow(wnr11); title('Original Image、S/N=0');wnr12 = deconvwnr(blurred, PSF);%信噪比為零 subplot(4,4,6),imshow(wnr12); title('blurred Image、S/N=0');wnr13 = deconvwnr(g, PSF);%信噪比為零 subplot(4,4,7),imshow(wnr13); title('noise Image、S/N=0');wnr14 = deconvwnr(bg, PSF);%信噪比為零 subplot(4,4,8),imshow(wnr14); title('blur and noise Image、S/N=0');Sn = abs(fft2(noise)).^2; nA = sum(Sn(:))/prod(size(noise)); SI = abs(fft2(I)).^2; IA = sum(SI(:))/prod(size(I)); R = nA/IA;wnr21 = deconvwnr(I,PSF,R);%噪信比已知 R subplot(4,4,9),imshow(wnr21); title('Original Image、N/S=R');wnr22 = deconvwnr(blurred,PSF,R);%噪信比已知 R subplot(4,4,10),imshow(wnr22); title('blurred Image、N/S=R');wnr23 = deconvwnr(g,PSF,R);%噪信比已知 R subplot(4,4,11),imshow(wnr23); title('noise Image、N/S=R');wnr24 = deconvwnr(bg,PSF,R);%噪信比已知 R subplot(4,4,12),imshow(wnr24); title('blur and noise Image、N/S=R');NCORR = fftshift(real(ifft2(Sn)));%自相關函數 ICORR = fftshift(real(ifft2(SI)));wnr31 = deconvwnr(I,PSF,NCORR,ICORR);%自相關函數 subplot(4,4,13),imshow(wnr31); title('Original Image、自相關函數');wnr32 = deconvwnr(blurred,PSF,NCORR,ICORR);%自相關函數 subplot(4,4,14),imshow(wnr32); title('blurred Image、自相關函數');wnr33 = deconvwnr(g,PSF,NCORR,ICORR);%自相關函數 subplot(4,4,15),imshow(wnr33); title('noise Image、自相關函數');wnr34 = deconvwnr(bg,PSF,NCORR,ICORR);%自相關函數 subplot(4,4,16),imshow(wnr34); title('blur and noise Image、自相關函數');實驗結果
實驗結果分為4*4=16張圖片,第一排:第一張為原圖,第二張為加入運動模糊圖片,第三張為加入高斯白噪聲圖片,第四張為加入運動模糊和高斯白噪聲的圖片。
第二、三、四排分別是S/N=0,N/S=R,利用自相關函數,對第一排圖片進行維納濾波。濾波結果如下:
.實驗分析
維納濾波需要估計圖像的信噪比(SNR)或者噪信比(NSR),信號的功率譜使用圖像的方差近似估計,噪聲分布是已知的。從第二列中可以看出,若無噪聲,此時維納濾波相當于逆濾波,恢復運動模糊效果是極好的。從第二、三、四排可以看出噪信比估計的準確性對圖像影響比較大的。利用自相關函數的維納濾波是效果最好的。
加入的高斯白噪聲方差越大,影響效果越明顯。對運動模糊圖片的濾波效果優于加入高斯白噪聲圖片效果。對于圖片中存在的運動模糊,逆濾波方法更優。對于總體噪聲而言,利用自相關函數的維納濾波適用性更強,效果更好。
總結
以上是生活随笔為你收集整理的维纳滤波(附matlab代码)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑显示器接口
- 下一篇: 【AD】Altium Designer