第1页共8页信息工程学院实验报告课程名称:数字图像处理实验项目名称:实验五图像复原实验时间:2016.12.02班级:姓名:学号:一、实验目的1.了解图像退化/复原处理的模型;2.掌握图像复原的原理及实现方法;3.通过本实验掌握利用MATLAB编程实现图像的恢复。4.掌握matlab代码的调试方法,熟悉常见代码错误及改正方法。二、实验步骤及结果分析MATLAB图像处理工具箱包含四个图像复原函数,请参照教材第126页例6.8编程实现图像复原。1.用点扩散(PSF)函数创建运动模糊图像,修改参数改变模糊程度。a)无噪声运动模糊图像b)有噪声运动模糊图像程序代码:I=imread('cameraman.tif');%读取图像subplot(1,3,1);imshow(I,[]);%显示图像title('原始图像');PSF=fspecial('motion',25,11);%运动模糊函数,运动位移是25像素,角度是11Blurred=imfilter(I,PSF,'conv','circular');%对图像运动模糊处理subplot(1,3,2);imshow(Blurred,[]);title('无噪声运动模糊图像');%显示无噪声运动模糊图像Noise=0.05*randn(size(I));%正态分布的随机噪声BlurredNoisy=imadd(Blurred,im2uint8(Noise));%对退化后的图像附加噪声subplot(1,3,3);imshow(BlurredNoisy,[]);title('有噪声运动模糊图像');%显示运动模糊且加噪声后图像执行结果:成绩:指导老师(签名):第2页共8页原始图像无噪声运动模糊图像有噪声运动模糊图像图1无噪声和有噪声的运动模糊图像实验结果分析:采用仿真的方法对清晰的图像加以运动模糊,形成模糊的图像。用这种模型来描述由于目标或摄像头运动,而导致的图像模糊。同时在加入正态分布的随机噪声图像显得更加灰暗。2.用维纳滤波复原函数deconvwnr对模糊图像进行复原重建。a)对无噪声运动模糊图像用deconvwnr(I,PSF)进行复原;程序代码:I=imread('cameraman.tif');%读取图像subplot(1,3,1);imshow(I,[]);%显示图像title('原始图像');PSF=fspecial('motion',25,11);%运动模糊函数,运动位移是25像素,角度是11Blurred=imfilter(I,PSF,'conv','circular');%对图像运动模糊处理subplot(1,3,2);imshow(Blurred,[]);%显示无噪声运动模糊图像title('无噪声运动模糊图像');WI1=deconvwnr(Blurred,PSF);%不带参数的维纳滤波(逆滤波)复原subplot(1,3,3);imshow(WI1,[]);%显示逆滤波复原结果title('逆滤波复原结果');执行结果:原始图像无噪声运动模糊图像逆滤波复原结果带噪信比参数维纳滤波复原结果带自相关函数的维纳滤波复原图2对无噪声的运动模糊图像进行逆滤波复原实验结果分析:由实验结果可以看出,当图像无噪声或噪声较小,即轻度降质时,采用逆滤波恢复的方法可以获得较好的结果。第3页共8页b)对有噪声运动模糊图像用deconvwnr(I,PSF)、deconvwnr(I,PSF,NSR)和deconvwnr(I,PSF,NCORR,ICORR)函数进行复原。程序代码:I=imread('cameraman.tif');%读取图像subplot(2,3,1);imshow(I,[]);%显示图像title('原始图像');PSF=fspecial('motion',25,11);%运动模糊函数,运动位移是25像素,角度是11Blurred=imfilter(I,PSF,'conv','circular');%对图像运动模糊处理Noise=0.05*randn(size(I));%正态分布的随机噪声BlurredNoisy=imadd(Blurred,im2uint8(Noise));%对退化后的图像附加噪声subplot(2,3,2);imshow(BlurredNoisy,[]);%显示运动模糊且加噪声后图像title('运动模糊且加噪声后图像');WI1=deconvwnr(BlurredNoisy,PSF);%不带参数的维纳滤波(逆滤波)复原subplot(2,3,3);imshow(WI1,[]);%显示逆滤波复原结果title('逆滤波复原结果');NSR=sum(Noise(:).^2)/sum(im2double(I(:)).^2);%计算噪信比WI2=deconvwnr(BlurredNoisy,PSF,NSR);%带噪信比参数的维纳滤波复原subplot(2,3,4);imshow(WI2,[]);%显示带噪信比参数维纳滤波复原结果title('带噪信比参数维纳滤波复原结果');NP=abs(fftn(Noise)).^2;NCORR=real(ifftn(NP));%计算噪声的自相关函数IP=abs(fftn(im2double(I))).^2;ICORR=real(ifftn(IP));%计算信号的自相关函数WI3=deconvwnr(BlurredNoisy,PSF,NCORR,ICORR);%带自相关函数的维纳滤波复原subplot(2,3,5);imshow(WI3,[]);title('带自相关函数的维纳滤波复原');执行结果:原始图像运动模糊且加噪声后图像逆滤波复原结果带噪信比参数维纳滤波复原结果带自相关函数的维纳滤波复原第4页共8页原始图像运动模糊且加噪声后图像逆滤波复原结果带噪信比参数维纳滤波复原结果带自相关函数的维纳滤波复原图3对运动模糊退化且加噪声的图像进行维纳滤波实验结果分析:比较复原结果可以发现,在对图像和噪声信息都未知的情况下采用不带参数的维纳滤波(逆滤波)形式进行复原效果很不好,在已知信噪比NSR参数的情况的维纳滤波复原效果有了较大的改善,在已知噪声和原图像的自相关函数等参数的情况下的维纳滤波复原效果最佳。c)在实际应用过程中,常常无法准确得知噪声图像和理想图像的功率谱,试着用常数K来代替NSR,并通过实验观察不同K对图像复原效果的影响。程序代码:I=imread('cameraman.tif');%读取图像subplot(1,3,1);imshow(I,[]);%显示图像title('原始图像');PSF=fspecial('motion',25,11);%运动模糊函数,运动位移是25像素,角度是11Blurred=imfilter(I,PSF,'conv','circular');%对图像运动模糊处理Noise=0.05*randn(size(I));%正态分布的随机噪声BlurredNoisy=imadd(Blurred,im2uint8(Noise));%对退化后的图像附加噪声WI1=deconvwnr(BlurredNoisy,PSF);%不带参数的维纳滤波(逆滤波)复原NSR=sum(Noise(:).^2)/sum(im2double(I(:)).^2);%计算噪信比WI2=deconvwnr(BlurredNoisy,PSF,NSR);%带噪信比参数的维纳滤波复原subplot(2,3,1);imshow(WI2,[]);%显示带噪信比参数维纳滤波复原结果title('NSR取均值复原结果');WI3=deconvwnr(BlurredNoisy,PSF,0.005);%噪信比取0.005参数的维纳滤波复原subplot(2,3,2);imshow(WI3,[]);title('NSR=0.005复原结果');WI4=deconvwnr(BlurredNoisy,PSF,0.001);%带噪信比取0.002参数的维纳滤波复原subplot(2,3,3);imshow(WI4,[]);%显示带噪信比参数维纳滤波复原结果title('NSR=0.001复原结果');WI5=deconvwnr(BlurredNoisy,PSF,0.01);%带噪信比取0.01参数的维纳滤波复原subplot(2,3,4);imshow(WI5,[]);%显示复原结果title('NSR=0.01复原结果');WI6=deconvwnr(BlurredNoisy,PSF,0.05);%带噪信比取0.05参数的维纳滤波复原subplot(2,3,5);imshow(WI6,[]);title('NSR=0.05复原结果');第5页共8页WI7=deconvwnr(BlurredNoisy,PSF,0.1);%带噪信比取0.1参数的维纳滤波复原subplot(2,3,6);imshow(WI7,[]);%显示复原结果title('KNS=0.1复原结果');执行结果:原始图像运动模糊且加噪声后图像逆滤波复原结果NSR取均值复原结果NSR=0.005复原结果NSR=0.001复原结果NSR=0.01复原结果NSR=0.05复原结果KNS=0.1复原结果图4不同噪信比参数的维纳滤波复原实验结果分析:由实验结果可知,在带噪信比参数的维纳滤波复原中,当NSR取均值时滤波效果是最好的,随着滤波中NSB由均值减小时,图像的模糊运动减小但同时噪声增强了;反之,当NSB由均值增大时,图像的模糊运动增强噪声减小了。三、实验中遇到问题及解决方法第6页共8页1.图像复原和图像增强两者之间的区别。图像复原又称为图像恢复,图像复原和图像增强一样,都是为了改善图像视觉效果,以及便于后续处理。只是图像增强方法更偏向主观判断,而图像恢复则是根据图像畸变或退化原因,进行模型化处理。四、实验心得体会通过这个实验,使我对图像复原和图像增强两者之间的区别有了更加清晰的认识;在实验过程中了解了维纳滤波的原理,功能以及在图像处理方面的应用。维纳滤波器是对噪声背景下的信号进行估计,它是最小均方误差准则下的最佳线性滤波器,在已知信噪比NSR参数的情况的维纳滤波复原效果有较大的改善。五、源程序清单%%%1.用点扩散(PSF)函数创建运动模糊图像,修改参数改变模糊程度。I=imread('cameraman.tif');%读取图像subplot(1,3,1);imshow(I,[]);%显示图像title('原始图像');PSF=fspecial('motion',25,11);%运动模糊函数,运动位移是25像素,角度是11Blurred=imfilter(I,PSF,'conv','circular');%对图像运动模糊处理subplot(1,3,2);imshow(Blurred,[]);title('无噪声运动模糊图像');%显示无噪声运动模糊图像Noise=0.05*randn(size(I));%正态分布的随机噪声BlurredNoisy=imadd(Blurred,im2uint8(Noise));%对退化后的图像附加噪声subplot(1,3,3);imshow(BlurredNoisy,[]);title('有噪声运动模糊图像');%显示运动模糊且加噪声后图像%%%2.用维纳滤波复原函数deconvwnr对模糊图像进行复原重建。%a)对无噪声运动模糊图像用deconvwnr(I,PSF)进行复原;I=imread('cameraman.tif');%读取图像subplot(1,3,1);imshow(I,[]);%显示图像title('原始图像');PSF=fspecial('motion',25,11);%运动模糊函数,运动位移是25像素,角度是11Blurred=imfilter(I,PSF,'conv','circular');%对图像运动模糊处理subplot(1,3,2);imshow(Blurred,[]);%显示无噪声运动模糊图像title('无噪声