1、海南大学数字图像处理实验5实验五、图象复原一、 实验目的1 了解图象退化的几种原因;2 掌握对相应退化原因的复原方法。二、实验内容1 使用函数fspecial( )和imfilter( )模拟产生退化图象;2 对于不同的噪声引起图像的退化,采用不同的滤波方法复原图象。3 学会使用维纳滤波器deconvwnr()函数对图像进行复原的方法。三、实验步骤1 加性噪声退化图象用 imnoise( )函数给图象加噪声,如增加高斯白噪声。使用平滑滤波器对其进行滤波,可达到复原图像的效果x=imread(cameraman.tif);x=imnoise(x,gaussian)imshow(x)加噪声后图象h
2、=fspecial(average)y=imfilter(x,h);figureimshow(y) 平滑滤波后2、周期噪声退化图像 对于周期噪声可以通过频域滤波来减弱或消除,实现复原图像。实验五文件夹中有被正弦周期噪声污染退化的图像pout_g_64.bmp,使用理想带阻滤波器对其频域滤波,复原图像。 (1) pout_g_64.bmp图像及其傅立叶谱见下图。(2) 构造理想带阻滤波器close allx=imread(pout_g_64.bmp);xm=size(x,1); xn=size(x,2);M2=floor(xm/2); N2=floor(xn/2);u=-M2:1:M2-1; v
3、=-N2:1:N2-1; U,V=meshgrid(u,v);D=sqrt(U.2+V.2); D0=64;W=4;H=double(D(D0+W/2);figureMesh(U,V,H) ; title(D0=64,W=4,理想带阻滤波器)思考: 使用上述理想带阻滤波器对pout_g_64.bmp图像进行频域滤波,得到复原图像,结果类似下图。代码如下:close allx=imread(pout_g_64.bmp);xm=size(x,1); xn=size(x,2);M2=floor(xm/2); N2=floor(xn/2);u=-M2:1:M2-1; v=-N2:1:N2-1; U,V
4、=meshgrid(u,v);D=sqrt(U.2+V.2); D0=64;W=4;H=double(D(D0+W/2);figureMesh(U,V,H) ; title(D0=64,W=4,理想带阻滤波器)F=fft2(x); G=H.*fftshift(F); %需要中心平移 g=ifft2(ifftshift(G); %反中心平移figure % tu 2 subplot(121); imshow(real(G); title(频域滤波) subplot(122); imshow(uint8(real(g); title(滤波后图象)3、运动模糊退化图像 给图像添加运动模糊,使用dec
5、onvwnr()维纳滤波器进行图像复原。 close allI=imread(cameraman.tif);imshow(I)title(original image)len=31; theta=10;PSF=fspecial(motion,len,theta); % len模糊长度,theta运动角度Iblurred=imfilter(I,PSF,circular,conv); %对图像进行运动模糊figureimshow(Iblurred)title(blurred image) 原始图象 添加运动模糊后图象Irestored=deconvwnr(Iblurred,PSF);%使用维纳滤波
6、器复原图像figureimshow(Irestored)title(retored image)使用维纳滤波器复原后图像思考:修改deconvwnr()函数的参数PSF,使len和theta分别为原来的2倍,观察结果,体会真实PSF在图像复原中的重要性。PSF1=fspecial(motion,2*len,theta),PSF2=fspecial(motion,len,2*theta) 代码如下:lose allI=imread(cameraman.tif);imshow(I)title(original image)len=31; theta=10;PSF1=fspecial(motion,
7、2*len,theta);PSF2=fspecial(motion,len,theta*2);% len模糊长度,theta运动角度Iblurred=imfilter(I,PSF,circular,conv); %对图像进行运动模糊figureimshow(Iblurred)title(blurred image)Irestored=deconvwnr(Iblurred,PSF1);%使用维纳滤波器复原图像figureimshow(Irestored)title(retored by 2*len)Irestored=deconvwnr(Iblurred,PSF2);%使用维纳滤波器复原图像fi
8、gureimshow(Irestored)title(retored by theta*2) 4、模拟模糊和噪声:模拟实时图像可能出现的模糊(即由于摄像头运动或者缺乏聚集而产生的模糊)和噪声(即随机分布噪声)。使用维纳滤波器复原图像,即使用deconvwnr()函数复原。(1)只使用点扩散函数PSF参数复原图像。deconvwnr ( BlurredNoisy , PSF)%- 使用高斯模板模糊图像-close allI=imread(cameraman.tif);figureimshow(I)title(original image)PSF=fspecial(gaussian,11,5);b
9、lurredI=imfilter(I,PSF); %模糊图像figureimshow(blurredI)title(blurred image)%-产生噪声,并加噪声到已模糊的图像-%-使用randn()函数产生随机数据-noise=0.2*randn(size(I);%同图像大小一致blurredInoisy=imadd(blurredI,im2uint8(noise);%噪声添加到图像figureimshow(blurredInoisy)title(blurred & noise image)%-使用维纳滤波复原图像-wnrI1=deconvwnr(blurredInoisy,PSF);%
10、噪声被放大了figureimshow(wnrI1)title(restored with PSF)(2)使用信噪比NSR参数复原图像。deconvwnr ( BlurredNoisy , PSF , NSR)I是输入图像,noise是randn()函数产生的随机噪声,下面的公式用于计算信噪比:NSR=sum(noise(:).2)/sum(im2double(I(:).2);%计算信噪比代码如下:close allI=imread(cameraman.tif);figuresubplot(221)imshow(I)title(original image)PSF=fspecial(gaussi
11、an,11,5);blurredI=imfilter(I,PSF); %模糊图像figuresubplot(222)imshow(blurredI)title(blurred image)%-产生噪声,并加噪声到已模糊的图像-%-使用randn()函数产生随机数据-noise=0.2*randn(size(I);%同图像大小一致blurredInoisy=imadd(blurredI,im2uint8(noise);%噪声添加到图像NSR=sum(noise(:).2)/sum(im2double(I(:).2);figuresubplot(223)imshow(blurredInoisy)t
12、itle(blurred & noise image)%-使用维纳滤波复原图像-wnrI1=deconvwnr ( BlurredNoisy , PSF , NSR)%噪声被放大了figuresubplot(224)imshow(wnrI1)title(restored with PSF,NSR)运行结果如上图思考:使用deconvwnr ( BlurredNoisy , PSF , NSR)维纳滤波器对上述被模糊和噪声退化的图像进行复原。结果类似下图。代码如下:wnrI1=deconvwnr ( BlurredNoisy , PSF , NSR)%噪声被放大了figuresubplot(22
13、4)imshow(wnrI1)title(restored with PSF,NSR)运行结果: (3) 使用自相关函数改善图像复原的效果。 deconvwnr( BlurredNoisy , PSF , NCORR , ICORR)NCORR:噪声的自相关函数NP = abs(fft2(noise).2; % 噪声的功率谱NCORR = fftshift(real(ifft2(NP); % 噪声的自相关函数ICORR:图像自相关函数IP = abs(fft2(im2double(I).2; % 图像的功率谱ICORR = fftshift(real(ifft2(IP); % 图像的自相关函数
14、代码如下:close allI=imread(cameraman.tif);subplot(221)imshow(I)title(original image)PSF=fspecial(gaussian,11,5);blurredI=imfilter(I,PSF); subplot(222)imshow(blurredI)title(blurred image)noise=0.2*randn(size(I);blurredInoisy=imadd(blurredI,im2uint8(noise);NP = abs(fft2(noise).2; NCORR = fftshift(real(iff
15、t2(NP); IP = abs(fft2(im2double(I).2; ICORR = fftshift(real(ifft2(IP); subplot(223)imshow(blurredInoisy)title(blurred & noise image)wnrI1=deconvwnr( blurredInoisy , PSF , NCORR , ICORR)subplot(224)imshow(wnrI1)title(restored with PSF , NCORR , ICORR)思考:使用deconvwnr( BlurredNoisy , PSF , NCORR , ICORR
16、)维纳滤波器对上述被模糊和噪声退化的图像进行复原。结果类似下图。代码如下:wnrI1=deconvwnr( blurredInoisy , PSF , NCORR , ICORR)subplot(224)imshow(wnrI1)title(restored with PSF , NCORR , ICORR)运行结果:。仅供个人用于学习、研究;不得用于商业用途。For personal use only in study and research; not for commercial use.Nur fr den persnlichen fr Studien, Forschung, zu kommerziellen Zwecken verwendet werden.Pour l tude et la recherche uniquement des fins personnelles; pas des fins commerciales. , , . 以下无正文
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1