1、湖南商学院课程论文课程设计报告课程名称: 图形图像处理 学 期: 20132014学年第2学期 学时学分: 32学分2学时 &nbs
2、p; 专业班级: 信科1101 班 学号: 110320017 姓名: &
3、nbsp; 丁园 指导老师: 陈荣元 提交日期: 2014年 6月 21日  
4、; 目录一、数字图像退化与复原系统设计21、实验内容22、实验原理23、具体实验过程及结果5二、边缘检测121、实验内容122、实验原理123、具体实验过程及结果13三、实验总结与体会18参考文献19一、数字图像退化与复原系统设计1、实验内容(1)设计图形用户界面,能对图像文件(bmp、 jpg、 tiff、 gif等)进行打开、保存、另存、打印、退出等功能操作;(2)数字图像的统计信息功能:包括图像的行数和列数,附加信息,直方图的统计及绘制等;(3)图像退化与复原a。能对图像加入各种噪声,生成退化图像;b。给定图像,能估计噪声参数和噪声类型;c。并通过几种滤波算法(维纳滤波,最小
5、二乘方滤波)实现去噪并显示结果。比较去噪效果。2、实验原理(1)图像的退化 数字图像在获取过程中,由于光学系统的像差、光学成像衍射、成像系统的非线性畸变、成像过程的相对运动、环境随机噪声等原因,图像会产生一定程度的退化。(2)图像的复原 图像复原是利用图像退化现象的某种先验知识,建立退化现象的数学模型,再根据模型进行反向的推演运算,以恢复原来的景物图像。因而图像复原可以理解为图像降质过程的反向过程.(3)估计噪声参数和噪声类型噪声的类型可以通过设备来确定,也可以从图像信息中提取,从图像中提取一个平滑的子图像,画出直方图,分辨噪声类型。通过传感器的合成像设备技术参数来估计
6、噪声参数。(4)图像降质的数学模型图像复原处理的关键问题在于建立退化模型。输入图像f(x,y)经过某个退化系统后输出的是一幅退化的图像。为了讨论方便,把噪声引起的退化即噪声对图像的影响一般作为加性噪声考虑。原始图像f(x,y)经过一个退化算子或退化系统H(x,y)的作用,再和噪声n(x,y)进行叠加,形成退化后的图像g(x,y)。图1表示退化过程的输入和输出关系,其中H(x,y)概括了退化系统的物理过程,就是要寻找的退化数学模型.f(x,y)H(x,y)+n (x,y)g(x,y)图1 图像的退化模型数字图像的图像恢复问题可以看作是:根据退化图像g(x,y)和退化算子H(x,y)的形式,沿着反
7、向过程去求解原始图像f(x,y)。图像退化的过程可以用数学表达式写成如下形式:g(x,y)=Hf(x,y)+n(x,y) (1)在这里,n(x,y)是一种统计性质的信息。在实际应用中,往往假设噪声是白噪声,即它的频谱密度为常熟,并且与图像不相关。在对退化系统进行了线性系统和空间不变系统的近似之后,连续函数的退化模型在空域中可以写成:g(x,y)=f(x,y)h(x,y)+n(x,y) &n
8、bsp; (2)在频域中可以写成:G(u,v)=F(u,v)H(u,v)+N(u,v) (3)其中,G(u,v)、F(u,v)、N(u,v)分别是退化图像g(x,y)、原图像f(x,y)、噪声信号n(x,y)的傅立叶变换;H(u,v)是系统的点冲击响应函数h(x,y)的傅立叶变换,称为系统在频率域上的传递函数.可见,图像复原实际上就是已知g(x,y)求f(x,y)的问题或已知
9、G(u,v)求F(u,v)的问题,它们的不同之处在于一个是空域,一个是频域。(5)维纳滤波维纳滤波是最小二乘类约束复原的一种。在最小二乘类约束复原中,要设法寻找一个最有估计,使得形式为的函数最小化.求这类问题的最小化,常采用拉格朗日乘子算法。也就是说,要寻找一个,使得准则函数 (10)为最小。求解得到 (11)式中,。如果用图像f和噪声的相关矩阵
10、Rf和Rn表示Q,就可以得到维纳滤波复原方法。具体维纳滤波复原方法的原理请参考相关图书.(6)比较维纳滤波与最小二乘方滤波的去噪效果当图像只存在噪声复原是,需要用不同的空间滤波,不同的滤波对不同的噪声去除有不同的效果,需要比较各均值滤波和统计滤波来来分析其适用场景,找到各种噪声去除的最好滤波器。不同的滤波其都是通过噪声与像素的融合来去除噪声,由于融合的方法不同,其去噪结果也不同,在图片上显示的内容也不一样,可以比较去噪后的图片,来确定不同滤波器的好坏.3、具体实验过程及结果(3)加入噪声,生成退化图像;a.加入噪声生成退化图像 I=imread('lena.jpg'
11、;);%读取Lena.jsp图像imshow(I);%显示如图1:图1加入高斯模糊噪声生成退化或降质图像并显示,如图2:图2b。估计给定图像的噪声类型和参数实现代码:clcclearI=imread(C:tucamana。jpg);m,n=size(I);K1=imnoise(I,'gaussian,0.02);subplot(2,3,1),imshow(K1);K2=imnoise(I,'salt pepper,0.02);subplot(2,3,2),imshow(K2);K3=imnoise(I,speckle',0.02);subplot(2,3,3),imsh
12、ow(K3);GP=zeros(1,256); K1=double(K1);for i=1:254GP1(i)=0;GP2(i)=0;GP3(i)=0;for u=1:mfor v=1:nif K1(u,v)=i;GP1(i)=GP1(i)+1;endif K2(u,v)=i;GP2(i)=GP2(i)+1;endif K3(u,v)=i;GP3(i)=GP3(i)+1;endendendGP1(i)=GP1(i)/(mn);GP2(i)=GP2(i)/(m*n);GP3(i)=GP3(i)/(m*n);endsubplot(2,3,4);bar(GP1)title(高斯)subplot(2,
13、3,5)bar(GP2);title('椒盐);subplot(2,3,6)bar(GP3);title('均匀')figure(3)for i=1:254GP11(i)=0;GP22(i)=0;GP33(i)=0;for u=1:150for v=1:40if K1(u,v)=i;GP11(i)=GP11(i)+1;endif K2(u,v)=i;GP22(i)=GP22(i)+1;endif K3(u,v)=i;GP33(i)=GP33(i)+1;endendendGP11(i)=GP11(i)/(m*n);GP22(i)=GP22(i)/(m*n);GP33(i)
14、=GP33(i)/(m*n);endsubplot(1,3,1);bar(GP11)title('高斯参数的估计')subplot(1,3,2)bar(GP22);title(椒盐参数的估计);subplot(1,3,3)bar(GP33);title(均匀参数的估计')clcclearf=imread('C:tucamana.jpg');m,n=size(f);for i=1:mfor j=1:nF(i,j)=(1)(i+j)*f(i,j);endendF=fftshift(fft2(F);R=real(F);I=imag(F);G=zeros(m,n
15、);for u=1:mfor v=1:nG(u,v)=(R(u,v)2+I(u,v)2)(1/2);endendfigure(2);G=mat2gray(G);实验结果(图3、图4):图3图4结果分析: 数字图像中,噪声主要来源于图像的获取和传输过程,不同噪声所对应的直方图不同,可以从直方图判断图像砸噪声的种类,噪声参数的估计需要选取图像的一个垂直条带,画出其直方图,可以确定其参数.c。分别采用维纳滤波和约束最小二乘方滤波实现去噪并比较实现代码:I=imread(C:turice1。tif);figure;subplot(2,2,1);imshow(I);title('原图像'
16、);m,n=size(I);F=fftshift(fft2(I);k=0。0025; %取不同的值0。00025for u=1:m for v=1:n H(u,v)=exp((k)*((um/2)2+(v-n/2)2)(5/6); endendG=F.*H;I0=real(ifft2(fftshift(G)));I1=imnoise(uint8(I0),gaussian,0,0。001)subplot(2,2,2);imshow(uint8(I1);title(模
17、糊退化且添加高斯噪声的图像);F0=fftshift(fft2(I1);F1=F0。/H;I2=ifft2(fftshift(F1);subplot(2,2,3);imshow(uint8(I2);title(全逆滤波复原图');K=0。1; for u=1:m for v=1:n H(u,v)=exp(k((u-m/2)2+(vn/2)2)(5/6));
18、 H0(u,v)=(abs(H(u,v)2; H1(u,v)=H0(u,v)/(H(u,v)*(H0(u,v)+K); endendF2=H1。F0;I3=ifft2(fftshift(F2));subplot(2,2,4);imshow(uint8(I3);title(维纳滤波复原图);p=0 1 0;1 4 1;0 -1 0; for i=1:m for j=1:n if(i<=3 && j=3) g(i,j)=p(i,j); else g(i,j)=
19、0; end end end P=fft2(fftshift(g)); r=50;for u=1:mfor v=1:nH(u,v)=exp(k(((u-m/2)2+(vn/2)2)(5/6);H0(u,v)=(abs(H(u,v))2;H2(u,v)=conj(H(u,v))/(H0(u,v)+r*P(u,v)2);endendF3=H2F0;subplot(2,2,4)I4=ifft2(fftshift(F3);imshow(uint8(I3));title('约束最小二乘法复原图)实验结果:k=0。0025,r=50,详见图5、图6;图5图6结果分析: 在不同的k ,r选取下,约束
20、最小二乘方复原效果比较好。二、边缘检测1、实验内容使用Roberts 算子、Prewitt 算子、Sobel 算子对于噪声条件下进行边界检测,自己编程实现所有算法,不得直接运用matlab函数,并与matlab函数所提供的函数进行效果比较。2、实验原理边缘检测是利用物体和背景在某种图像特性上的差异来实现的,这些差异包括灰度,颜色或者纹理特征。边缘检测实际上就是检测图像特征发生变化的位置。图像边缘检测必须满足两个条件:一能有效地抑制噪声;二必须尽量精确确定边缘的位置由于噪声和模糊的存在,检测到的边界可能会变宽或在某些点处发生间断,因此,边界检测包括两个基本内容:首先抽取出反映灰度变化的边缘点,然
21、后剔除某些边界点或填补边界间断点,并将这些边缘连接成完整的线。边缘检测的方法大多数是基于方向导数掩模求卷积的方法。导数算子具有突出灰度变化的作用,对图像运用导数算子,灰度变化较大的点处算得的值比较高,因此可将这些导数值作为相应点的边界强度,通过设置门限的方法,提取边界点集。一阶导数与是最简单的导数算子,它们分别求出了灰度在x和y方向上的变化率,而方向上的灰度变化率可以用相应公式进行计算;对于数字图像,应该采用差分运算代替求导.一幅数字图像的一阶导数是基于各种二维梯度的近似值.图像f(x,y)在位置(x,y)的梯度定义为下列向量: &nbs
22、p; (34)在边缘检测中,一般用这个向量的大小,用表示 (3-5)函数f在某点的方向导数取得最大值的方向是,方向导数的最大值是称为梯度模.利用梯度模算子来检测边缘是一种很好的方法,
23、它不仅具有位移不变性,还具有各向同性.为了运算简便,实际中采用梯度模的近似形式. 或者 传统的边缘检测算法通过梯度算子来实现的,在求边缘的梯度时,需要对每个象素位置计算。在实际中常用小区域模板卷积来近似快速计算,简单有效,即梯度算子一般采用滤波算子的形式来完成,因此应用很广泛。模板是N*N的权值方阵,经典的梯度算子模板有:Sobel模板、Prewitt模板、Roberts模板、Laplacian模板等。3、具体实验过程及结果MATLAB函数实现代码:I=imread(fabric。png');读取图像K=rgb2gray(I);BW1 = edge(K,
24、9;roberts,0。08);%进行Roberts 算子边缘检测,门限值采用默认值BW2 = edge(K,'prewitt', 0.05);%进行Prewitt 算子边缘检测,门限值采用默认值BW3 = edge(K,sobel, 0.04);进行 Sobel算子边缘检测,门限值采用默认值figure,imshow(BW1,),title('Roberts 算子图像');figure,imshow(BW2,),title(Prewitt 算子图像);figure,imshow(BW3,),title(Sobel算子图像');结果示例(图7、图8、图9
25、,见下图比较)Roberts 算子实现代码:sourcePic=imread('D:Lena.jpg); 读取原图象grayPic=rgb2gray(sourcePic); %转换成灰度图象newGrayPic= grayPic;m,n=size(grayPic);robertsNum=0; roberts算子的计算值threshold=15; %阈值for i=1:m-1 %进行边界提取 for j=1:n1 robertsNum=abs(grayPic(i,j)-grayPic(i+1,j+1)+abs
26、(grayPic(i+1,j) -graic(i,j+1); if(robertsNum > threshold) newGrayPic(i,j)=255; else newGrayPic(i,j)=0; end endendfigure,imshow(newGra
27、yPic);结果示例(图10):图7 Roberts 算子图像图10 Roberts 算子图像Prewitt 算子实现代码:sourcePic=imread(glenna。bmp);%读取原图像grayPic=mat2gray(sourcePic);%转换成灰度图像m,n=size(grayPic);newGrayPic=grayPic;为保留图像的边缘一个像素PrewittNum=0;经Prewitt算子计算得到的每个像素的值PrewittThreshold=0。5;%设定阈值for j=2:m1 %进行边界提取for k=2:n1PrewittNum=abs(grayPic(j-1,k+1
28、)grayPic(j+1,k+1)+grayPic(j1,k)-grayPic(j+1,k)+grayPic(j-1,k-1)-grayPic(j+1,k1)+abs(grayPic(j1,k+1)+grayPic(j,k+1)+grayPic(j+1,k+1)grayPic(j-1,k-1)grayPic(j,k1)grayPic(j+1,k1));if(PrewittNum PrewittThreshold)newGrayPic(j,k)=255;elsenewGrayPic(j,k)=0;endendendfigure,imshow(newGrayPic);title(Prewitt算子
29、的处理结果)结果示例(图11)图8 Prewitt 算子图像图11 Prewitt 算子图像Sobel 算子实现代码:sourcePic=imread(glenna。bmp');%读取原图像grayPic=mat2gray(sourcePic);转换成灰度图像m,n=size(grayPic);newGrayPic=grayPic;为保留图像的边缘一个像素sobelNum=0;%经sobel算子计算得到的每个像素的值sobelThreshold=0。8;设定阈值for j=2:m1 进行边界提取for k=2:n1sobelNum=abs(grayPic(j-1,k+1)+2grayP
30、ic(j,k+1)+grayPic(j+1,k+1)-grayPic(j-1,k-1)2grayPic(j,k-1)grayPic(j+1,k1))+abs(grayPic(j1,k-1)+2grayPic(j1,k)+grayPic(j-1,k+1)-grayPic(j+1,k1)-2*grayPic(j+1,k)-grayPic(j+1,k+1);if(sobelNum sobelThreshold)newGrayPic(j,k)=255;elsenewGrayPic(j,k)=0;endendendfigure,imshow(newGrayPic);title('Sobel算子的
31、处理结果)结果示例(图12):图9 Sobel算子图像图12 Sobel算子图像结果分析:图像局部特征的不连续性(相邻区域的交界)称为边缘。边缘位置的微分特性是幅度和方向性(沿边缘方向灰度缓变,垂直方向突变)。边缘位置和导数(微分)间具有一定对应关系,可通过微分进行边缘检测。无噪声时,可用Roberts算子;Prewitt和Sobel算子同时具有平均,即抑制噪声作用;对阶跃状边缘,Roberts得到的边缘宽度1个像素,Prewitt和Sobel算子得到的边缘宽度2个像素.由实验的效果图像可以知道,在利用edge函数进行相应的算子边缘检测的时候,各算子的差别非常微小,不过由相应的参数,三个算子分
32、别为0。08、0.05、0。04可以知道,Sobel算子在边缘检测中最为敏感,及在同一条件下它的处理效果应该最好.在后面实验部分中,利用“手动"的模版算子进行边缘检测,我们很容易可以看到,Sobel算子的处理效果最好.三、实验总结与体会首先,通过这次的实验课题,我掌握了MATLAB的一些最基本的图像的存取与显示方法。同时,我了解了图像退化与复原的基本原理,理解了数字图像运动模糊、高斯模糊以及其他噪声引起模糊的物理本质,学会了降质图像的逆滤波复原和维纳滤波复原方法。并能够通过书本及在网上查找资料完成图像退化与复原的系统设计。在这一过程中,我学习到了很多原本不知道或者不太熟悉的命令.比如
33、通过设置不同的参数达到所需要的要求和结果。而且还可以在不同的窗口建立不同的函数而达到相同的效果.当然,我自己掌握的知识还是非常有限的,但是老师在课堂上给我们提出来的一些方法和技巧是非常有效的,也因此帮助我顺利完成此次课程论文。最后还有个很深的感受:MATLAB是个非常强大而且有用的工具,以后有机会一定要进行深入的学习。参考文献1 (美)Bruce Ecker 著 明文华译。运动模糊图像复原算法。北京:机械工业出版社 2007/62 陈天河.图像的退化与复原.北京电子工业出版社20053 边缘检测算法研究(第5版)/张海藩 编著北京:清华大学出版社,2008。24图像复原的应用(第4版)(PMB
34、OK指南)/(美)项目管理协会编著,王勇,张斌译.-北京:电子工业出版社 ,2009。8优秀良好中等及格不及格报告文档1。完全按照课程设计文档规范要求2。内容充实、设计合理1。完全按照课程设计文档规范要求2内容较充实、设计较合理1。基本按照课程设计文档规范要求2.内容较充实、设计较合理1.基本按照课程设计文档规范要求2。内容欠充实、设计欠合理1。没有按照课程设计文档规范要求2.内容不充实、设计不合理算法分析1算法正确.2算法分析很全面。3算法描述很清晰。1算法正确。2算法分析全面。3算法描述清晰。1算法正确。2算法分析较全面。3算法描述较清晰。1算法基本正确。2算法分析欠全面.3算法描述欠清晰
35、。1算法不正确。2算法分析不全面。3算法描述不清晰.算法实现1程序设计思路很清晰。2程序代码编写很完整。 3程序运行正确。1程序设计思路清晰.2程序代码编写完整. 3程序运行正确.1程序设计思路较清晰。2程序代码编写较完整。 3程序运行正确。1程序设计思路欠清晰。2程序代码编写欠完整。 3程序运行基本正确。1程序设计思路不清晰。2程序代码编写不完整。 3程序运行不正确。结果分析1有运行结果描述。2结果描述很清晰、很完整。3结果分析很深入.1有运行结果描述.2结果描述清晰、完整。3结果分析深入。1有运行结果描述。2结果描述较清晰、较完整。3结果分析较深入。1有运行结果描述。2结果描述欠清晰、欠完
36、整.3结果分析欠深入。1无运行结果描述.2结果描述不清晰、很完整。3结果分析不深入。设计总结1有课程总结。2课程总结很全面、很深入.3能从课程中总结出创新成果.1有课程总结。2课程总结全面、深入.3能从课程中总结出创新成果。1有课程总结。2课程总结较全面、较深入。1有课程总结.2课程总结欠全面、欠深入。1无课程总结。2课程总结不全面、不深入。平时成绩1。作业无缺交、迟交2.作业完成度好3。出勤、课堂纪律很好1。作业无缺交、迟交2.作业完成度较好3. 出勤、课堂纪律好1.作业无缺交2。作业完成度较好3. 出勤、课堂纪律较好1.作业无缺交,有或迟交2。作业完成度一般3. 出勤、课堂纪律一般1.作业有缺交2.作业完成度较差3. 出勤、课堂纪律差综合成绩评定: 评阅老师(签章): 评审时间: 年 月 日第 21 页 共 22 页