数字图像处理实验八、图像复原Ⅰ.ppt
实验八、图像复原实验目的:掌握噪声引起图像退化的类型和复原方法实验目的:掌握噪声引起图像退化的类型和复原方法实验内容:实验内容:一、掌握噪声的类型和基本特点一、掌握噪声的类型和基本特点二、掌握白噪声引起退化图像复原的基本方法二、掌握白噪声引起退化图像复原的基本方法三、掌握周期噪声引起退化图像复原的基本方法三、掌握周期噪声引起退化图像复原的基本方法一、噪声的类型和基本特点一、噪声的类型和基本特点噪声噪声随机噪声随机噪声周期噪声周期噪声高斯噪声高斯噪声瑞利噪声瑞利噪声伽马噪声伽马噪声指数噪声指数噪声均匀噪声均匀噪声脉冲噪声脉冲噪声椒盐噪声椒盐噪声盐噪声盐噪声胡椒噪声胡椒噪声以高斯噪声为例以高斯噪声为例灰度概率分布函数:灰度概率分布函数:=120,=30时:时:灰度概率分布灰度概率分布频频 谱谱MATLAB中叠加噪声的函数:中叠加噪声的函数:输出图像名输出图像名=imnoise(输入图像名输入图像名,噪声类型噪声类型,噪声参数噪声参数);加高斯噪声:加高斯噪声:fxynoise1=imnoise(fxy,gaussian,0,0.001);加椒盐噪声:加椒盐噪声:fxynoise2=imnoise(fxy,salt&pepper,0.4);加均匀噪声:加均匀噪声:fxynoise3=imnoise(fxy,speckle,0.03);周期噪声实例周期噪声实例二、白噪声引起退化图像复原的基本方法二、白噪声引起退化图像复原的基本方法w1w2w3w4w5w6w7w8w91.均值滤波:均值滤波:111111111%本例演示算术均值滤波器本例演示算术均值滤波器a=imread(circuit.bmp);a=a(:,:,3);subplot(1,3,1),imshow(a,),title(原始图像原始图像),ra,ca=size(a);a1=double(imnoise(a,gaussian,0,0.01);%叠加严重的高斯噪声叠加严重的高斯噪声%选定滤波器的大小为选定滤波器的大小为stst,st可调可调st=3,h=ones(st,st);g=filter2(h,a1)./sum(sum(h);subplot(1,3,2),imshow(a1,),title(有高斯噪声的输入图像有高斯噪声的输入图像),subplot(1,3,3),imshow(g,),title(算术均值滤波后的图像,用算术均值滤波后的图像,用33掩模掩模)2.自适应中值滤波器:自适应中值滤波器:输入待处理图像输入待处理图像给出给出Smax的大小的大小设定设定St起始大小起始大小给出给出Sxy区域区域计算计算Zmin、Zmax、Zmed和和A1=Zmed-Zmin,A2=Zmed-ZmaxA10A20B20B1=Zxy-Zmin,B2=Zxy-Zmax增大增大Sxy是是否否是是是是否否否否检查检查Zmed是是否是冲击噪声否是冲击噪声检查检查Zxy是否是否是冲击噪声是冲击噪声a=imread(circuit.bmp);a=a(:,:,3);ra,ca=size(a);a1=imnoise(a,salt&pepper,0.25);a1=double(a1);%选定最小滤波器的大小为选定最小滤波器的大小为stst,st可调可调,但取奇数但取奇数st=3,Sxymin=zeros(st,st);%预先留出邻域预先留出邻域%选定第二滤波器的大小为(选定第二滤波器的大小为(st+2)(st+2)Sxymed=zeros(st+2,st+2);%预先留出邻域预先留出邻域%选定第二滤波器的大小为(选定第二滤波器的大小为(st+4)(st+4)Sxymax=zeros(st+4,st+4);%预先留出邻域预先留出邻域 a=zeros(ra+2.*st,ca+2.*st);%预先留出一个图像预先留出一个图像a(st+1:ra+st,st+1:ca+st)=a1;%将输入图像放大到(将输入图像放大到(ra+2.*st)(ca+2.*st)g=zeros(ra+2.*st,ca+2.*st);%预先留出输出图像预先留出输出图像subplot(1,3,1),imshow(a,),title(有严重椒盐噪声的输入有严重椒盐噪声的输入)for n=st+1:ra+st for m=st+1:ca+st for nn=1:st+4 for mm=1:st+4 Sxymax(nn,mm)=a(n+nn-st-1,m+mm-st-1);%赋掩模内的值赋掩模内的值 end end zxy=a(n,m);Sxymin=Sxymax(3:st+2,3:st+2);Sxymed=Sxymax(2:st+3,2:st+3);sortSxymin=sort(Sxymin(:);%将像素按升序排列将像素按升序排列 sortSxymed=sort(Sxymed(:);%将像素按升序排列将像素按升序排列 sortSxymax=sort(Sxymax(:);%将像素按升序排列将像素按升序排列 zminmin=sortSxymin(1,1);%排序后的最小像素的值为灰度的最小值排序后的最小像素的值为灰度的最小值zminmin zmedmin=sortSxymed(1,1);%排序后的最小像素的值为灰度的最小值排序后的最小像素的值为灰度的最小值zmedmin zmaxmin=sortSxymax(1,1);%排序后的最小像素的值为灰度的最小值排序后的最小像素的值为灰度的最小值zmaxmin zminmed=sortSxymin(st+2);%排序后的第排序后的第st+2个像素的值是中值个像素的值是中值zminmed zmedmed=sortSxymed(st.*4+1);%排序后的第排序后的第st.*4+1个像素的值是中值个像素的值是中值zmedmed zmaxmed=sortSxymax(st.*8+1);%排序后的第排序后的第st.*8+1个像素的值是中值个像素的值是中值zmaxmed zminmax=sortSxymin(st.*st);%第第st.*st个像素的值是最大值个像素的值是最大值zminmax zmedmax=sortSxymed(st+2).*(st+2);%第第(st+2).*(st+2)个像素的值是最大值个像素的值是最大值zmedmax zmaxmax=sortSxymax(st+4).*(st+4);%第第(st+4).*(st+4)个像素的值是最大值个像素的值是最大值zmaxmax if zminminzminmed&zminmedzminmax if zminminzxy&zxyzminmax g(n,m)=zxy;else g(n,m)=zminmed;end else if zmedminzmedmed&zmedmedzmedmax if zmedminzxy&zxyzmedmax g(n,m)=zxy;else g(n,m)=zmedmed;end else if zmaxminzmaxmed&zmaxmedzmaxmax if zmaxminzxy&zxyzmaxmax g(n,m)=zxy;else g(n,m)=zmaxmed;end else g(n,m)=zxy;end end end endendsubplot(1,3,2),imshow(g,),title(自适应中值滤波器的处理结果自适应中值滤波器的处理结果)b=medfilt2(a,7,7);subplot(1,3,3),imshow(b,),title(77中值滤波器的处理结果中值滤波器的处理结果)三、周期噪声引起退化图像复原的基本方法三、周期噪声引起退化图像复原的基本方法调入退化图像调入退化图像得到退化图像频谱得到退化图像频谱查找噪声频谱查找噪声频谱选择合适的滤波器选择合适的滤波器对退化图像滤波对退化图像滤波复原退化图像复原退化图像得到噪声分布得到噪声分布FFTIFFTIFFTFFT滤波器滤波器1滤波器滤波器2IFFTIFFTa=imread(coulomb.bmp);fxy=a(:,:,1);fxy=double(fxy);ra,ca=size(fxy);Fuv=fftshift(fft2(fxy);subplot(1,2,1),imshow(fxy,);title(原始图像原始图像)subplot(1,2,2),imshow(abs(Fuv),0,250000);title(原始图像的频谱原始图像的频谱)u=1:ra;v=1:ca;u,v=meshgrid(u,v);u0=129-99;%噪声在频谱面上的中心噪声在频谱面上的中心v0=129-99;%噪声在频谱面上的中心噪声在频谱面上的中心D0=10%陷波区域的半径陷波区域的半径Duv1=(u-ra/2-u0).2+(v-ca/2-v0).2).0.5;Duv2=(u-ra/2+u0).2+(v-ca/2+v0).2).0.5;%先使用理想陷波滤波器先使用理想陷波滤波器Huv1=ones(ra,ca);Huv1(Duv1=D0|Duv2=D0)=0;figuresubplot(1,2,1),imshow(Huv1,),title(理想陷波滤波器理想陷波滤波器)Guv1=Huv1.*Fuv;fxyyp1=ifft2(Guv1);fxyyp1=abs(fxyyp1);subplot(1,2,2),imshow(fxyyp1,);title(理想陷波滤波器的处理结果理想陷波滤波器的处理结果)noise1=fxyyp1-fxy;%理想陷波滤波器找到的噪声理想陷波滤波器找到的噪声 D0=20;%要获得同样的效果,陷波区域的半径要大很多要获得同样的效果,陷波区域的半径要大很多%下面使用巴特沃思陷波滤波器下面使用巴特沃思陷波滤波器n=4%滤波器的阶数,可调滤波器的阶数,可调Huv2=zeros(ra,ca);Huv2=1./(1+(D0.2./(Duv1.*Duv2+eps).(n);figuresubplot(1,2,1),mesh(Huv2),title(巴特沃思陷波滤波器巴特沃思陷波滤波器)Guv2=Huv2.*Fuv;fxyyp2=ifft2(Guv2);fxyyp2=abs(fxyyp2);subplot(1,2,2),imshow(fxyyp2,);title(巴特沃思陷波滤波器的处理结果巴特沃思陷波滤波器的处理结果)noise2=fxyyp2-fxy;%巴特沃思陷波滤波器找到的噪声巴特沃思陷波滤波器找到的噪声%下面使用高斯陷波滤波器下面使用高斯陷波滤波器Huv3=zeros(ra,ca);Huv3=1-exp(-0.5.*(Duv1.*Duv2)./(D0.2+eps);figuresubplot(1,2,1),mesh(Huv3),title(高斯陷波滤波器高斯陷波滤波器)Guv3=Huv3.*Fuv;fxyyp3=ifft2(Guv3);fxyyp3=abs(fxyyp3);subplot(1,2,2),imshow(fxyyp3,);title(高斯陷波滤波器的处理结果高斯陷波滤波器的处理结果)noise3=fxyyp3-fxy;%高斯陷波滤波器找到的噪声高斯陷波滤波器找到的噪声 figuresubplot(1,3,1),imshow(noise1,);title(理想陷波滤波器找到的噪声理想陷波滤波器找到的噪声)subplot(1,3,2),imshow(noise2,);title(巴特沃思陷波滤波器找到的噪声巴特沃思陷波滤波器找到的噪声)subplot(1,3,3),imshow(noise3,);title(高斯陷波滤波器找到的噪声高斯陷波滤波器找到的噪声)实验结果原图椒盐噪声高斯噪声灰度直方图灰度直方图灰度直方图选择适合的滤波器滤噪椒盐噪声椒盐噪声高斯噪声高斯噪声倾斜条纹倾斜条纹思考题1.怎么判断一幅图像的噪声类型2.如何针对噪声选择滤波器