1、实验6实验六 图像复原一、实验目的1. 理解图像复原的含义;2. 熟悉常见的噪声模型以及识别噪声的方法;3. 掌握MATLAB中用各种滤波器去除噪声的方法。二、实验内容及步骤图像复原所使用的方法与图像增强相同,可以在空间域滤波和频域滤波中进行。针对不同的噪声,通过选择合适的滤波器进行滤波,能较好地复原图像。1、噪声模型掌握如何通过直方图和频谱分析来识别噪声。直方图可以识别加性噪声,而傅里叶变换可以识别周期噪声。(1)加性噪声常见的加性噪声有:高斯噪声、指数噪声、均匀噪声、椒盐噪声等,图6_1是加有高斯噪声的样本图像及其直方图。 图6_1 高斯噪声污染的样本图像及其直方图。思考题1:对课本180
2、页中的图像Fig5.03加入不同噪声后得到的Fig5.04(a) (b) (c) (g) (h) (i),用实验三介绍的方法分别显示Fig5.04各图的直方图,仔细观察并进行比较。x=imread(Fig5.04(x).jpg);(x=a,b,c,g,h,i)figuresubplot(2,1,1)imshow(x)subplot(2,1,2)imhist(x)Fig5.04(a)的直方图:Fig5.04(b)的直方图:Fig5.04(c)的直方图:Fig5.04(g)的直方图:Fig5.04(h)的直方图:Fig5.04(i)的直方图:(2)周期噪声用实验五介绍的傅里叶变换方法对实验六文件夹
3、中pout_g_64.bmp图像进行频谱分析,观察结果。f=imread(pout_g_64.bmp);% 傅里叶变换,移位F=fft2(double(f);F=fftshift(F);figure(1); imshow(f); %周期噪声污染的图像figure(2); imshow(uint8(abs(F)./255), );2、空间滤波复原当仅有加性噪声时,可以用空间滤波方法对图像进行复原。(1)均值滤波器下例是用实验四介绍的空间滤波方法对课本184页中的图像Fig5.07(b)进行均值滤波。其中,算术均值滤波是使用filter2函数,几何均值滤波使用直接对数据操作的方法。同时给出了原图像
4、的直方图和被污染了高斯噪声图像的直方图,仔细观察结果。例: close allclearf=imread(Fig5.07(a).jpg); %原图f_gn=imread(Fig5.07(b).jpg); %污染图h=ones(5)/25; g1=filter2(h,f_gn); % 5*5算术均值滤波器滤波%-构造几何均值滤波器,并进行滤波-b=double(f_gn); g2=b;xH xW=size(f_gn);x=xH;y=xW;for i=3:x-2, % 边界不处理 for j=3:y-2, % 在5x5邻域内几何均值 g2 (i,j)=1.0; for m=-2:2, for n=
5、-2:2, g2 (i,j)= g2 (i,j) *b(i+m,j+n);%子窗口像素点连乘 end end g2 (i,j)= g2 (i,j)(1.0/25);%连乘后再自乘1/mn次幂 endend% 显示图像figure(1)subplot(121),imhist(f),title(原图)subplot(122),imhist(f_gn),title(高斯噪声污染)figure(2); imshow(f_gn,);title(高斯噪声污染的图像)figure(3); imshow(uint8(g1);title(算术均值滤波)figure(4); imshow(uint8(g2);ti
6、tle(几何均值滤波)(2)统计排序滤波器使用Matlab提供的统计排序滤波器ordfilt2对课本188页中的图像Fig5.08(a) (b)进行滤波,观察结果。close allclearf1=imread(Fig5.08(a).jpg); f2=imread(Fig5.08(b).jpg); % 最大值滤波器g1= ordfilt2(f1,9,ones(3,3); % 最小值滤波器g2= ordfilt2(f2,1,ones(3,3);figure(1), imshow(f1);title(“胡椒”噪声污染的图像)figure(2), imshow(f2);title(“盐”噪声污染的图
7、像)figure(3), imshow(g1);title(最大值滤波器滤波)figure(4), imshow(g2);title(最小值滤波器滤波)(3)自适用滤波器使用Matlab提供的自适用滤波器函数wiener2对图像Fig5.07(b)进行滤波,观察结果。close allclearf=imread(Fig5.07(b).jpg); g3= wiener2(f,3 3); % 显示图像subplot(1,2,1),imshow(f,);subplot(1,2,2),imshow(g3,);3、频域滤波复原对于周期噪声时,可以用频域滤波来削减或消除,实现对图像进行复原。(1)带阻滤波
8、器带阻滤波器消除或衰减傅里叶变换某频段的频率。下面的例子构造了理想带阻滤波器并显示了其三维图。例:close allclearH(1: 256,1: 256)=1; %滤波器的大小x0= 256 /2; y0= 256 /2;for x=1:256 for y=1:256 D=sqrt(x- x0)*(x- x0)+(y-y0)*(y- y0); if (D50) H(x,y)=0; end endendu=-128:1:127; v=-128:1:127; U,V=meshgrid(u,v);figureMesh(U,V,H) ; %显示三维图思考题2:参考实验五频域滤波的方法,使用理想带阻
9、滤波器对实验六文件夹中pout_g_64.bmp图像进行频域滤波,观察结果。结果类似于图6_3。 图6_3 pout_g_64.bmp图像频域滤波f=imread(pout_g_64.bmp);H(1: 256,1: 256)=1; %滤波器的大小x0= 256 /2; y0= 256 /2;for x=1:256 for y=1:256 D=sqrt(x- x0)*(x- x0)+(y-y0)*(y- y0); if (D50) H(x,y)=0; end endendF=fft2(f); F=fftshift(F); %中心平移FF=F.*H; % 频域滤波。FFS=ifftshift(F
10、F);g=ifft2(FF); % 傅立叶反变换g=abs(real(g);subplot(1,3,1),imshow(log(abs(F)+1), );title(频率谱) %对数变换,便于显示结果subplot(1,3,2),imshow(log(abs(FF)+1), );title(频域滤波)subplot(1,3,3),imshow(g,);title(滤波结果)(2)陷波带阻滤波器同样,用陷波带阻滤波器对课本198页中的图像Fig5.19(a)进行滤波,观察结果。f=imread(Fig5.19(a).jpg);% 傅里叶变换,移位F=fft2(double(f);F=fftshi
11、ft(F);% 陷波带阻滤波器,滤波height width=size(F);H(1: height,1: width)=1;x0= height /2; y0= width /2;for x=1:heightfor y=1:widthif(yy0-3 & (xx0+15 | xx0-15) H(x,y)=0;endFF(x,y)=F(x,y)*H(x,y);endend% 傅里叶反变换FFS=ifftshift(FF);g=real(ifft2(FFS);% 显示并比较结果figure(1), imshow(f);figure(2), imshow(log(abs(F)+1), );figu
12、re(3), imshow(log(abs(FF)+1), );figure(4),imshow(uint8(g);4、运动模糊退化图像复原 对于运动模糊的图像,使用最小均方误差滤波(维纳滤波)进行图像复原。Matlab中deconvwnr()函数实现维纳滤波。例: close allI=imread(cameraman.tif);imshow(I)title(原图)len=31; theta=10;PSF=fspecial(motion,len,theta); % len模糊长度,theta运动角度Iblurred=imfilter(I,PSF,circular,conv); %对图像进行运
13、动模糊figureimshow(Iblurred)title(退化图像)Irestored=deconvwnr(Iblurred,PSF);%使用维纳滤波器复原图像figureimshow(Irestored)title(复原图像)思考题3:参考上例,对cameraman.tif图像分别使用退化模型PSF1、PSF2 进行运动模糊处理。PSF1=fspecial(motion,2*len,theta),PSF2=fspecial(motion,len,2*theta)在图像复原时,如果不使用原来的退化模型来进行维纳滤波deconvwnr(),结果如何?体会真实PSF在图像复原中的重要性。PSF
14、1时:I=imread(cameraman.tif);subplot(1,3,1),imshow(I)len=31; theta=10;PSF1=fspecial(motion,2*len,theta)Iblurred=imfilter(I,PSF1,circular,conv); %对图像进行运动模糊subplot(1,3,2),imshow(Iblurred)Irestored=deconvwnr(Iblurred,PSF1);%使用维纳滤波器复原图像subplot(1,3,3),imshow(Irestored)PSF2时:I=imread(cameraman.tif);subplot(
15、1,3,1),imshow(I)len=31; theta=10;PSF2=fspecial(motion,len,2*theta)Iblurred=imfilter(I,PSF2,circular,conv); %对图像进行运动模糊subplot(1,3,2),imshow(Iblurred)Irestored=deconvwnr(Iblurred,PSF2);%使用维纳滤波器复原图像subplot(1,3,3),imshow(Irestored)不使用原来的退化模型来进行维纳滤波deconvwnr()的结果:I=imread(cameraman.tif);subplot(1,3,1),im
16、show(I)len=31; theta=10;PSF1=fspecial(motion,2*len,theta)PSF2=fspecial(motion,len,2*theta)Iblurred=imfilter(I,PSF1,circular,conv); %对图像进行运动模糊subplot(1,3,2),imshow(Iblurred)Irestored=deconvwnr(Iblurred,PSF2);%使用维纳滤波器复原图像subplot(1,3,3),imshow(Irestored)三、实验报告要求1、按照上述实验步骤把实验结果截图,并附上文字说明。2、回答思考题,写出实现的命令及实验结果截图。3、使用word文档写报告,交电子文档;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1