1、数字图像处理实验报告图像边缘检测实 验 报 告实验名称 实验三 图像边缘检测课程名称数字图像处理某成绩班级学号日期地点备注:1、实验目的(1)了解并掌握使用微分算子进行图像边缘检测的基本原理; (2)编写程序使用 Laplacian 算子(二阶导数算子)实现图像锐化,进一步理解图像锐化的实质; (3)掌握使用不同梯度算子(一阶导数算子)进行图像边缘检测的原理、方法,根据实验结果分析各种算子的工作效果; (4)总结实验过程(实验报告,左侧装订):方案、编程、调试、结果、分析、结论。2、实验环境(1)Windows XP/7(2)Matlab 7.1/7.143、实验方法本次实验要求对256256
2、大小,256级灰度的数字图像lena.img进行处理。(1)对该图像进行锐化处理,要求采用Laplacian算子进行锐化,分=1和=2两种情况,按如下不同情况进行处理:g1(m,n)=f(m,n)-fg2(m,n)=4f(m,n)-f(m-1,n)+f(m+1,n)+f(m,n-1)+f(m,n+1) 、要对图像进行处理,要先读取该图像,实验代码如下:close all;clear all;fid=fopen(lena.img,r);image=fread(fid,256,256,uint8);fclose(fid);、读取图像后,对该图像的每一像素(不考虑图像的边界部分)进行遍历,根据公式(
3、公式相当于做差分)对每一灰度进行计算,将所得的结果存入一矩阵g1中(矩阵g1初始化为该图像的矩阵),代码如下(仅以=1为例):g1=image;a=1;x,y=size(image);for i=2:(x-1) for j=2:(y-1) g1(i,j)=(1+4*a)*image(i,j)-a*(image(i+1,j)+image(i-1,j)+image(i,j+1)+image(i,j-1); endend、根据公式对图像的每一个像素(不考虑图像的边界部分)进行计算,将所得之存入矩阵g2中(g2初始化值为该图像的矩阵值),具体方法与上一步类似,代码如下(仅以=1为例):g2=image
4、;a=1;x,y=size(image);for i=2:(x-1) for j=2:(y-1)g2(i,j)=4*a*image(i,j)-a*(image(i+1,j)+image(i-1,j)+image(i,j+1)+image(i,j-1); endend(2)分别利用 Roberts、Prewitt 和 Sobel 边缘检测算子,对原图像进行边缘检测,显示处理前、后图像。、同(1)中,不再赘述。、对图像进行边缘检测,要对图像的每一像素(不考虑图像的边界部分)的灰度进行遍历,分别用公式对图像的水平和垂直方向的边缘进行检测,并分别存储,在进行合成。采用不同的算子时,变换的公式有所不同。
5、在合成时可以采用三种算法(街区法、棋盘法、欧式几何法),本次实验中均又采用,所以得到三层图像。代码如下(仅以街区法的Roberts算子为例):x,y=size(image);g1=image;gh1=image;gv1=image;for i=2:(x-1) for j=2:(y-1) gh1(i,j)=image(i,j)-image(i-1,j-1); gv1(i,j)=image(i,j-1)-image(i-1,j); g1(i,j)=abs(gh1(i,j)+abs(gv1(i,j); endend4、实验结果分析(1)、图像锐化图像锐化结果如图a和图b(注:图a为情况结果;图b为情
6、况结果):图a图b由图a和图b对比可知,图像的锐化实质就是原图像与梯度信息进行叠加,相对于原图像而言,图像的边缘信息得到了加强。由图b中不同值所得图像对比可知,越大,边界越清晰,同时对比图a中不同值所得图像可知,的大小决定梯度信息与原图像叠加时所占的比例。(2)、图像边缘检测街区法、棋盘法、欧式距离法的不同检测算子结果分别入图c、图d和图e:图c图d图e由图c、图d和图e对比可知,采用街区法所得的边界清晰度最高,欧式几何法其次,棋盘法最差。对比同一X图中的不同子图可知,Sobel算子的性能更好,Prewitt算子其次,Roberts算子最差。5、实验结论本次实验是对图像进行锐化和边缘检测,通过
7、这次实验,我对数字图像处理中图像的锐化和边缘检测有了更加深刻的了解。加深了图像锐化和边缘检测的原理,掌握了图像边缘检测的不同方法。学会了使用Laplacian算子(二阶导数算子)实现图像锐化的程序编写;掌握了使用不同梯度算子(一阶导数算子)进行图像边缘检测的原理、方法。6、源代码(1)图像锐化(g1)close all;clear all;fid=fopen(lena.img,r);image=fread(fid,256,256,uint8);fclose(fid);subplot(221);imshow(uint8(image),);title(原图像);%采用拉普拉斯算子g1=image;
8、a=1;x,y=size(image);for i=2:(x-1) for j=2:(y-1) g1(i,j)=(1+4*a)*image(i,j)-a*(image(i+1,j)+image(i-1,j)+image(i,j+1)+image(i,j-1); endendsubplot(222);imshow(uint8(g1),);title(a=1时g1的图像);g1=image;a=2;x,y=size(image);for i=2:(x-1) for j=2:(y-1) g1(i,j)=(1+4*a)*image(i,j)-a*(image(i+1,j)+image(i-1,j)+i
9、mage(i,j+1)+image(i,j-1); endendsubplot(223);imshow(uint8(g1),);title(a=2时g1的图像);(2)图像锐化(g2)close all;clear all;fid=fopen(lena.img,r);image=fread(fid,256,256,uint8);fclose(fid);subplot(221);imshow(uint8(image),);title(原图像);%采用拉普拉斯算子g2=image;a=1;x,y=size(image);for i=2:(x-1) for j=2:(y-1) g2(i,j)=4*a
10、*image(i,j)-a*(image(i+1,j)+image(i-1,j)+image(i,j+1)+image(i,j-1); endendsubplot(222);imshow(uint8(g2),);title(a=1时g2的图像);g2=image;a=2;x,y=size(image);for i=2:(x-1) for j=2:(y-1) g2(i,j)=4*a*image(i,j)-a*(image(i+1,j)+image(i-1,j)+image(i,j+1)+image(i,j-1); endendsubplot(223);imshow(uint8(g2),);tit
11、le(a=2时g2的图像);(3)边缘检测close all;clear all;fid=fopen(lena.img,r);image=fread(fid,256,256,uint8);fclose(fid);figure(Name,街区法,NumberTitle,off);subplot(221);imshow(uint8(image),);title(原图像);x,y=size(image);g1=image;gh1=image;gv1=image;for i=2:(x-1) for j=2:(y-1) gh1(i,j)=image(i,j)-image(i-1,j-1); gv1(i,
12、j)=image(i,j-1)-image(i-1,j); g1(i,j)=abs(gh1(i,j)+abs(gv1(i,j); endendsubplot(222);imshow(uint8(g1),);title(Roberts算子);g2=image;gh2=image;gv2=image;for i=2:(x-1) for j=2:(y-1) gh2(i,j)=(image(i+1,j-1)+image(i+1,j)+image(i+1,j+1)/3)-(image(i-1,j-1)+image(i-1,j)+image(i-1,j+1)/3); gv2(i,j)=(image(i-1
13、,j+1)+image(i,j+1)+image(i+1,j+1)/3)-(image(i-1,j-1)+image(i,j-1)+image(i+1,j-1)/3); g2(i,j)=abs(gh2(i,j)+abs(gv2(i,j); endendsubplot(223);imshow(uint8(g2),);title(Prewitt算子);g3=image;gh3=image;gv3=image;for i=2:(x-1) for j=2:(y-1) gh3(i,j)=(image(i+1,j-1)+2*image(i+1,j)+image(i+1,j+1)-image(i-1,j-1
14、)-2*image(i-1,j)-image(i-1,j+1)/4; gv3(i,j)=(image(i-1,j+1)+2*image(i,j+1)+image(i+1,j+1)-image(i-1,j-1)-2*image(i,j-1)-image(i+1,j-1)/4; g3(i,j)=abs(gh3(i,j)+abs(gv3(i,j);% g3(i,j)=max(gh3(i,j),gv3(i,j);% g3(i,j)=sqrt(gh3(i,j)*gh3(i,j)+gv3(i,j)*gv3(i,j); endendsubplot(224);imshow(uint8(g3),);title(Sobel算子);% subplot(235)% imshow(uint8(gh3),);% title(检测水平边界);% subplot(236);% imshow(uint8(gv3),);% title(检测竖直边界);figure(Name,棋盘法,NumberTitle,off)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1