数字图像处理实验报告(图像边缘检测).doc
实 验 报 告实验名称 实验三 图像边缘检测课程名称数字图像处理姓名成绩班级学号日期地点备注:1、 实验目得(1)了解并掌握使用微分算子进行图像边缘检测得基本原理; (2)编写程序使用 Laplacin 算子(二阶导数算子)实现图像锐化,进一步理解图像锐化得实质; (3)掌握使用不同梯度算子(一阶导数算子)进行图像边缘检测得原理、方法,根据实验结果分析各种算子得工作效果; (4) 总结实验过程(实验报告,左侧装订):方案、编程、调试、结果、分析、结论。2、 实验环境(1)Winws /(2)Mab 、1/7、14、实验方法本次实验要求对56×56大小,56级灰度得数字图像ena、img进行处理。(1)对该图像进行锐化处理,要求采用Lalaca算子进行锐化,分a=与a=两种情况,按如下不同情况进行处理: (,n)=f(,)-aÑf g2(m,n)=af(,n)-af(m-,n)+f (m+1,n)+f(m,n-1)+(m,+1) I、要对图像进行处理,要先读取该图像,实验代码如下:los a;cear l;fd=fpen(lea、img,r);imge=fread(fid,256,2,uit8);fclo(fd);、读取图像后,对该图像得每一像素(不考虑图像得边界部分)进行遍历,根据公式(公式相当于做差分)对每一灰度进行计算,将所得得结果存入一矩阵中(矩阵g1初始化为该图像得矩阵),代码如下(仅以=1为例):1=ge;=;,y=e(iae);fr:(-1) fr j:(y1) g(i,)=(1+4a)image(i,j)-a(image(i1,j)+image(i-1,j)+iage(i,j+1)+ige(,1)); endendIII、根据公式对图像得每一个像素(不考虑图像得边界部分)进行计算,将所得之存入矩阵中(g2初始化值为该图像得矩阵值),具体方法与上一步类似,代码如下(仅以=为例):g2=mge;a;x,ize(imae);fo i2:(x-1) for 2:(y1) 2(i,j)*aig(i,)a(ige(i+1,j)+imae(-1,j)+imge(,j+1)+image(i,j-1); ndend(2)分别利用 Roets、Pewtt与 Sobel边缘检测算子,对原图像进行边缘检测,显示处理前、后图像。 、同(1)中I,不再赘述。II、对图像进行边缘检测,要对图像得每一像素(不考虑图像得边界部分)得灰度进行遍历,分别用公式对图像得水平与垂直方向得边缘进行检测,并分别存储,在进行合成。采用不同得算子时,变换得公式有所不同。在合成时可以采用三种算法(街区法、棋盘法、欧式几何法),本次实验中均又采用,所以得到三层图像。代码如下(仅以街区法得Rets算子为例):,y=size(age);g1mage;gh1image;gv=imge;ori=2:(1) fr =2:(y1) gh1(,j)=im(i,)ig(i1,j1); v1(i,j)=image(i,j1)iag(i1,j); g(i,j)=abs(gh1(i,j)+(v1(i,j); enden4、实验结果分析(1) 、图像锐化图像锐化结果如图a与图(注:图a为情况结果;图b为情况结果):图a图b由图a与图b对比可知,图像得锐化实质就就是原图像与梯度信息进行叠加,相对于原图像而言,图像得边缘信息得到了加强。由图b中不同值所得图像对比可知,越大,边界越清晰,同时对比图a中不同值所得图像可知,得大小决定梯度信息与原图像叠加时所占得比例.(2) 、图像边缘检测街区法、棋盘法、欧式距离法得不同检测算子结果分别入图、图d与图:图c图图e由图c、图d与图对比可知,采用街区法所得得边界清晰度最高,欧式几何法其次,棋盘法最差。对比同一张图中得不同子图可知,Sbel算子得性能更好,Prewitt算子其次,oerts算子最差。5、 实验结论本次实验就是对图像进行锐化与边缘检测,通过这次实验,我对数字图像处理中图像得锐化与边缘检测有了更加深刻得了解.加深了图像锐化与边缘检测得原理,掌握了图像边缘检测得不同方法。学会了使用Lplacian算子(二阶导数算子)实现图像锐化得程序编写;掌握了使用不同梯度算子(一阶导数算子)进行图像边缘检测得原理、方法。6、源代码(1) 图像锐化()se ll;lear al;fdfpen('ena、ig,'r);iage=fread(fid,256,5,uin8);flose(fd);suplot(21);imsw(uit8(image),);ttle(原图像');采用拉普拉斯算子1=mge;a=;x,=size(iage);fo:(x1) j=2:(y1) 1(i,j)=(+4*a)*imag(i,j)a*(image(+1,j)+iag(i-1,j)image(i,j1)imae(i,j1); endndsubo(22);iow(ui8(g1),);l('a=时g1得图像);g1mage;=;x,=size(iage);fr i2:(x1) for j=2:(1) g(i,)=(1+4a)imae(,j)a(image(i+1,j)+imae(i-1,)+image(i,j+1)image(i,j1); enddsubot(23);ishw(ut(g1),);ti('a=2时g1得图像);(2) 图像锐化(g2)cose all;cear al;fd=fopen(lna、img',r);mage=rd(fid,256,,uint);floe(f);subplot(221);imshw(uint8(iage),);title('原图像);采用拉普拉斯算子g=imge;a;,y=sze(ma);ori=2:(x1) r j=2:(1) g2(i,j)=4aimage(i,j)a*(image(i1,j)+imag(,j)+imae(,+1)iag(,-1)); edendsbpot(222);imho(it(2),);tile(=1时得图像');g=ag;a2;x,y=ie(iag);for i=2:(x1) fr j=2:(y-1) g2(i,)=4aimage(,j)-a*(me(i+1,j)iage(i1,j)+mae(i,j)+image(i,j-1)); endndsubplo(223);imsho(ut8(g),);til(a=2时g得图像);(3) 边缘检测clsall;car a;fidfpn('lna、mg',r);mge=red(fid,256,26,uint8);fclo(fi);fir('Nam,街区法,'NueTtle','ff');suplot(221);ishw(uint8(imag),);titl(原图像');,=siz(ag);g=ima;gh1=imge;gv=imae;for=2:(1) fo =2:(y-1) gh1(i,j)=imge(i,)ime(1,j-1); gv1(i,j)=ge(,j1)-image(i-1,j); g1(,)=bs(gh1(i,j))+abs(gv1(i,j); enddsubot(22);sow(uint8(g1),);tile('oerts算子');g=imge;g2=imge;gv=image;fo i:(x-1) for =2:(y1) gh2(,)=((imge(i+1,j1)+imae(+1,j)+image(i+,j+1))/3)(image(i1,j-1)+imag(i,j)+image(i1,+1)/3); gv2(i,j)=(image(1,+1)+mae(i,j+)+imae(i+1,1))/3)((imge(-1,j1)+mage(i,j1)+ie(i1,-1)/3); g(i,)=ab(gh2(i,)+abs(i,j)); endeubpo(223);iho(uint8(g2),);tte(Prewitt算子);=ime;h=image;gv=imge; =2:(x1) for =:(y1) h3(,)(ime(i+,j-1)+*iage(i1,j)+imge(i+,j+1)-mage(1,j)-2*imag(1,j)image(i1,j+))/; gv3(i,j)=(image(i-1,+1)+2imge(,+1)+mge(i+1,+1)iage(i-1,j-1)2img(,1)-iag(i,j1)/; g3(i,)=abs(g3(i,j)+bs(gv3(,j); g3(i,j)=max(gh3(i,),gv3(i,));% 3(i,j)sqr(gh(i,j)*g3(i,)+gv3(i,)*gv3(i,j); endenubo(24);imsw(i8(g3),);tile(Sobel算子); subplot(23) mshow(ui8(gh),); title(检测水平边界');%subplt(236); imsw(int(v3),);% title(检测竖直边界);ire(Name,棋盘法,'NumerTl','ff);sbl(221);ishow(uin(imag),);title(原图像);x,y=size(imag);1=ag;g1=ime;gv1=mae;foi=2:(x-1) for j=2:(y-1) gh1(i,)=iag(i,)-mge(i1,1); (i,j)=image(,1)image(i-1,j);% 1(i,j)=as(gh1(i,j)+as(gv1(i,j)); 1(,j)=mx(gh1(i,j),g1(i,j)); endendsubplt(2);imhow(uit(g),);ttle('Robrts算子);2ige;g=mag;gv=imae;for i=:(x1) f j=2:(y1) g2(i,j)=((me(i1,j-1)+image(i1,j)+imag(i+1,j+1))3)((imag(i-1,j-1)ie(i-1,j)imag(1,j+))/3); gv2(i,j)=((ma(i-1,j+)+imae(i,+1)+iage(i+,j+1))/3)(ia(1,j)+me(i,1)+image(+,j1)/3);% g(i,)abs(gh2(i,j)+a(gv2(i,)); g2(i,)=max(h(i,j),gv2(i,j)); endensubplot(22);imsh(t(g2),);te(reit算子);=image;gh=image;=imae;ori=2:(x1) for j=2:(y-1) gh3(i,)=(mge(i+,1)+iag(+,j)ime(i+1,j+)im(-1,1)-2mge(i1,)-image(,j+)/4; v3(i,j)=(imae(1,1)2image(i,j+1)+imae(+1,j+1)ima(1,)2*image(,j1)ima(i+1,j1)/4; g3(i,)=abs(g3(i,)+abs(gv(,j); (i,j)=max(h(i,j),gv3(,j));% g3(i,)=sqr(gh3(i,)gh3(i,j)v3(i,j)g3(i,)); endendsbp(22);ihow(uin8(),);title('Sobe算子);fiure(Name,欧式几何法','umberTitle','f);subplot(221);ishow(uint(mage),);ie('原图像);x,=size(iage);g=iag;h1=imge;1=mage;oi=2:(x1) for j=2:(-1) g1(i,j)=i(i,)-mage(i1,j); v(i,j)=iag(,j-1)image(1,j); g(,j)=as(gh1(i,)+as(v1(i,));% g1(i,j)=max(h(,j),1(i,j)); g(i,j)=sqt(gh1(,j)gh1(i,j)+g(i,j)*g(,j); endensubplot(222);mshow(un8(g),);itle(Robrts算子');g2=mge;h2mge;v2=iage;or i=:(x1) o j=2:(y-1) gh2(i,j)=((iae(i+,j)+mage(+1,j)img(i+,j+1)))-(image(i1,-1)+image(i1,j)+iage(-,j+1)/); gv2(i,j)=((age(i-1,j+1)+image(i,j+1)imae(i+1,)3)-((imae(i1,)+ime(i,j)+ig(+1,j1))/3);% g2(,)abs(h2(i,j))+s(i,));% g2(i,j)mx(gh2(,),2(i,j)); 2(,j)=r(gh2(i,j)gh2(i,)+v(i,j)gv2(,j)); ededsubo(223);mhow(uint8(g2),);title(Prewitt算子');=img;gh3=image;v3=image;fr i=2:(x) fr j=:(y-) g(i,j)=(imae(i1,j-1)+2image(+1,j)+mae(i,j+)mge(1,j-)-2mge(-1,j)imge(i1,j+1))/; gv(,j)=(mage(i-1,1)2*ime(,j+)image(i+,j+1)-image(i1,j)2*imge(i,)-imag(i+,-1)/;% g3(i,j)=bs(gh3(i,)+bs(gv3(i,j);% g3(i,)=max(gh3(,j),gv3(i,j); g3(i,j)=st(g3(i,)gh3(i,j)v(i,j)*gv3(i,j)); nendsubplot(24);show(uint8(3),);ile(Soel算子);