一、實驗任務與要求
- 實現一個自適應局部降噪濾波器;
- 在一幅測試版圖像中加入運動模糊和高斯噪聲,產生一幅退化圖像,采用 deconvwnr 函數實現逆濾波及維納濾波。
?
二、實驗報告
(一)實現一個自適應局部降噪濾波器
1、自適應局部降噪濾波器函數
%自適應局部降噪濾波器函數 adpfilter
function g=adpfilter(f,nhood,noise_var)f=im2double(f);local_mean=filter2(ones(nhood),f)/prod(nhood); %局部均值 u=(1/mn)*∑f(x,y) 模板濾波,重疊區相*然后相加local_var=filter2(ones(nhood),f.^2)/prod(nhood)-local_mean.^2; %局部方差 σ^2=(1/mn)*∑f^2(x,y)-u^2g=f-local_mean; %g(x,y)=f(x,y)-uf=local_var-noise_var; %局部方差-噪聲方差f=max(f,0);g=local_mean+((g./max(local_var,noise_var)).* f);
end
2、處理代碼
f=imread('circuitboard.tif');
f=imnoise(f,'gaussian',0,0.01); %添加高斯噪聲
g=adpfilter(f,[3,3],1000);%自適應局部降噪濾波器
subplot(1,2,1);
imshow(f);title('原圖');
subplot(1,2,2);
imshow(g);title('自適應局部降噪');
3、處理效果
?
(二)在一幅測試版圖像中加入運動模糊和高斯噪聲,產生一幅退化圖像,采用 deconvwnr 函數實現逆濾波及維納濾波
1、給圖像加上運動模糊
f=imread('checkerboard-clean.tif');
f=im2double(f);
PSF=fspecial('motion',45,45); %運動濾波器
gb=imfilter(f,PSF,'circular'); %運動模糊
2、繼續加上高斯噪聲
noise=imnoise(zeros(size(f)),'gaussian',0,0.001); %均值為0,方差為0.001的高斯噪聲
g=gb+noise; %運動模糊+高斯噪聲
subplot(4,2,1);
imshow(f);title('原圖');
subplot(4,2,2);
imshow(gb);title('運動模糊圖像');
subplot(4,2,3);
imshow(noise);title('高斯噪聲圖像');
subplot(4,2,4);
imshow(g);title('模糊圖像+噪聲圖像');
3、處理效果
? ? ?
? ? ?
4、實現逆濾波(忽略噪聲)?
default_nsr=0;
r1=deconvwnr(g,PSF,default_nsr);
subplot(4,2,5);
imshow(r1);title('逆濾波');
5、實現維納濾波(考慮噪聲)?
signal_var=var(f);
noise_var=var(noise);
estimate_nsr=noise_var/signal_var;
r2=deconvwnr(g,PSF,estimate_nsr);
subplot(4,2,6);
imshow(r2);title('考慮噪聲的維納濾波');
6、處理效果
? ? ??