实验二、灰度图像边缘检测一、实验目的1.掌握各种边缘检测算子的概念及原理。2.掌握各种边缘检测算子的算法。3.掌握各种边缘检测算子matlab实现的编制方法。4.启发学生依据边缘特征进行图像分析与识别,提高学生图像处理与分析能力和实际动手能力。二、实验原理基于算子模板的卷积过程,比如有一张8x8的图片,像素矩阵如下:1223522111000120000002564547545412564547545412564547545412564547545412564547545412564547545412又有一个3x3的算子模板矩阵如下:0-10-14-10-10整个模板卷积过程就是用模板覆盖在像素矩阵上,重新计算像素值并移动的过程。如下图即为模板盖住左上角的示例。1223522111000120000002564547545412564547545412564547545412564547545412564547545412564547545412计算方式为模板单元格的值与被模板覆盖的图像子矩阵的值分别相乘并和并把结果放在模板中央单元格所对应的图像矩阵单元格中。上图模板中央对应单元格的值应为:12*0+23*(-1)+52*0+12*(-1)+0*4+0*(-1)+56*0+45*(-1)+47*0=-80。各算子模板如下:1.Roberts算子100101102.拉普拉斯边缘算子0101111411810101113.Kirsch边缘算子335355555553305305303503335333333333045901355333333333335035033033055335535553551802252703154.高斯-拉普拉斯算子-2-4-4-4-2-4080-4-48248-4-4080-4-2-4-4-4-25.Prewitt边缘算子1011111010001011116.Sobel算子-1-2-1000121三、实验仪器和设备PC机1台,原始灰度图像文件,matlab编程软件四、预习要求1.复习matlab编程软件的使用方法;2.复习数字图像处理的一些相关知识;3.复习数字图像边缘检测的基本原理;4.学习在matlab中如何进行图像的边缘检测。五、实验内容1.编程实现以下六种图像边缘检测算子。(1)Roberts边缘算子;(2)Sobel边缘算子(3)Prewitt边缘算子;(4)拉普拉斯边缘算子(5)Kirsch边缘算子;(6)高斯-拉普拉斯边缘算子2.根据检测结果,分析与比较各种边缘检测算法的主要区别。答:用各种边缘检测算子对一幅图像进行边缘检测,其结果如图2所示。从检测的结果来看,Roberts边缘算子提取边缘的结果边缘较粗,边缘定位不很准确,Sobel边缘算子,Prewitt边缘算子对边缘的定位就准确了一些,Kirsch边缘算子比Sobel边缘算子,Prewitt边缘算子和拉普拉斯边缘算子定位更准确而采用高斯-拉普拉斯边缘算子进行边缘提取的结果要明显优于前4种算子,特别是边缘比较完整,位置比较准确。六、实验代码及结果clearallI=imread('D:\jiaojie20130814001.jpg');I1=im2double(I);I2=rgb2gray(I1);[thr,sorh,keepapp]=ddencmp('den','wv',I2);I3=wdencmp('gbl',I2,'sym4',2,thr,sorh,keepapp);I4=medfilt2(I3,[99]);I5=imresize(I4,0.2,'bicubic');BW1=edge(I5,'sobel');BW2=edge(I5,'roberts');BW3=edge(I5,'log');BW4=edge(I5,'prewitt');BW5=edge(I5,'sobel');BW6=edge(I5,'l');h=fspecial('gaussian',5);subplot(2,4,1);imshow(I1);title('原图');subplot(2,4,2);imshow(I2);title('灰度图');subplot(2,4,3);imshow(BW1);title('Sobel边缘算子');subplot(2,4,4);imshow(BW2);title('Roberts边缘算子');subplot(2,4,5);imshow(BW3);title('高斯-拉普拉斯边缘算子');subplot(2,4,6);imshow(BW4);title('Prewitt边缘算子');subplot(2,4,7);imshow(BW5);title('kirsch边缘算子');subplot(2,4,8);imshow(BW6);title('拉普拉斯边缘算子');实验结果图一2、上述现象进行分析,并得出相关结论。Sobel算子是典型的基于一阶导数的边缘检测算子,由于该算子中引入了类似局部平均的运算,因此对噪声具有平滑作用,能很好的消除噪声的影响。Sobel算子对于象素的位置的影响做了加权,与Prewitt算子、Roberts算子相比因此效果更好。Robert算子图像处理后结果边缘不是很平滑经分析,由于Robert算子通常会在图像边缘附近的区域内产生较宽的响应,故采用上述算子检测的边缘图像常需做细化处理,边缘定位的精度不是很高Prewitt算子对边缘的定位不如Roberts算子。Laplace算子对孤立象素的响应要比对边缘或线的响应要更强烈,因此只适用于无噪声图象。最后Laplacian算子不能检测边缘的方向。七、实验要求:1.熟练利用matlab编程实现六个图像边缘检测算子2.选取最优阈值或近似最优阈值实现图像二值化3.通过对比检测效果,对比分析六个检测算子八、实验心得通过此次实验掌握了各种边缘检测算子的概念及原理。及各种边缘检测算子的算法。各种边缘检测算子matlab实现的编制方法。并依据边缘特征进行图像分析与识别,提高了图像处理与分析能力和实际动手能力。此次实验特别感谢杨建老师和高诺老师的指导,才能顺利完成此次实验。