%1.使用函数fspecial创建退化滤波器PSF,然后调用imfilter对图像进行卷积运算,就可以%得到一幅运动退化图像,观察并记录结果。
I=imread('C:\Documents and Settings\Administrator\桌面\16学时实验\实验六\fig0222b.jpg'); %读入图像
LEN=31;
THETA=11;
PSF=fspecial('motion',LEN,THETA); %生成退化函数
blurred=imfilter(I,PSF, 'circular', 'conv');
figure
subplot(1,2,1),imshow(I);title('原图像');
subplot(1,2,2),imshow(blurred);title('6.1 运动退化图像');
%2.使用imnoise函数对图像添加随机噪声,观察并记录结果。
fnblurred =imnoise( blurred, 'gaussian',0,0.001); %产生随机噪声图像
figure, imshow(fnblurred);title('6.2 加噪之后');
%3.使用函数deconvwnr对无噪声的运动模糊图像进行复原,观察并记录结果。
同时采用不同的
%LEN和THETA参数,进行实验,体会一下退化函数PSF的重要性,观察并记录结果。
LEN=31;
THETA=11;
PSF=fspecial('motion',LEN,THETA);
wnr1=deconvwnr(blurred,PSF);
wnr2=deconvwnr(blurred, fspecial('motion',2*LEN,THETA));
wnr3=deconvwnr(blurred, fspecial('motion', LEN, 2*THETA));
figure
imshow(wnr1);title('6.3.1 无噪运动模糊图像复原1');
figure
subplot(1,2,1),imshow(wnr2);title('6.3.2 无噪运动模糊图像复原2');
subplot(1,2,2),imshow(wnr3);title('6.3.3 无噪运动模糊图像复原3');
%4.使用函数deconvwnr对一幅有噪声的运动模糊图像进行维纳滤波复原,观察并记录结果。
wnr4=deconvwnr(fnblurred,PSF);
figure,imshow(wnr4);title('6.4 维纳滤波复原');
%5.为了使维纳滤波复原的效果变好,必须使用deconvwnr函数的可选参数NSR、NCORR 和ICORR,
%通过改变参数获得不同的复原效果,观察并记录结果。
%使用deconvblind函数进行盲目去卷积,采用不同的退化函数,观察并记录结果。
PSF=fspecial('gaussian',7,10);
blurred01=imfilter(I,PSF, 'circular', 'conv');%图像退化
UNDERPSF=ones(size(PSF)-4);
[J1 P1]= deconvblind(blurred01, UNDERPSF); % 使用较小的PSF进行逆滤波OVERPSF=padarray(UNDERPSF,[4 4], 'replicate', 'both');
[J2 P2]= deconvblind(blurred01, OVERPSF); % 使用较大的PSF进行逆滤波INITPSF=padarray(UNDERPSF,[2 2], 'replicate', 'both');
[J3 P3]= deconvblind(blurred01, INITPSF); % 使用真实的PSF进行逆滤波
figure, imshow(blurred01);title('6.5.1 图像退化');
figure, imshow(J1); title('6.5.2 盲目卷积(使用较小的PSF进行逆滤波)');
figure, imshow(J2); title('6.5.3 盲目卷积(使用较大的PSF进行逆滤波)');
figure, imshow(J3);title('6.5.4 盲目卷积(使用真实的PSF进行逆滤波)');
原图像 6.1 运动退化图像
6.2 加噪之后
6.3.1 无噪运动模糊图像复原1
6.3.2 无噪运动模糊图像复原2 6.3.3 无噪运动模糊图像复原3
6.4 维纳滤波复原
6.5.1 图像退化
6.5.2 盲目卷积(使用较小的PSF进行逆滤波)
6.5.3 盲目卷积(使用较大的PSF进行逆滤波)
6.5.4 盲目卷积(使用真实的PSF进行逆滤波)。