首页 > 编程知识 正文

canny算子边缘检测的优点,canny算子的具体步骤

时间:2023-05-03 10:00:09 阅读:22106 作者:2771

一. Canny 算法简介

Canny边缘检测算子是John F.Canny于1986年开发的多级边缘检测算法。 更重要的是,Canny创立了边缘检测计算理论(computationaltheoryofedgedetection ),说明了该技术是如何工作的。 Canny边缘检测算法以Canny命名,被很多人推荐为目前最好的边缘检测算法。

二. Canny 边缘检测的步骤

高斯模糊-高斯blur灰度变换- cvtColor计算梯度幅度和方向- Sobel/Scharr非最大信号抑制? 说明

排除边缘以外的像素,只留下细线(候选边缘)。 滞后阈值

滞后阈值需要两个阈值,高阈值T1和低阈值T2

如果某个像素位置的振幅超过高阈值,则该像素作为边缘像素残留。

如果某个像素位置的振幅小于低阈值,则排除该像素。

当某像素位置的振幅在两个阈值之间时,仅当连接到高于高阈值的像素时才保持该像素。

推荐高低阈值比为2:1到:1之间。三. Canny() 函数介绍

voidcanny(inputarrayimage,OutputArray edges,double threshold1,double threshold2,int apertureSize=3,bool ll2gradient=双精度型的threshold1,最初的滞后阈值【低阈值】。 值越大,找到双精度类型的threshold2越少的边,为第二个滞后阈值【高阈值】。 int类型的apertureSize表示应用Sobel运算符的开口大小,默认值为3。 BOL型的L2梯度。 用于计算图像梯度振幅的标记,默认值为false。四. 代码示例

intmain(intargc,char** argv ) mat src=im read (' e :/image/dl1.jpg ); if(src.empty () ) {cout 'load image error.' endl; 返回- 1; }imshow(srcimg )、src ); //转换为灰度图像Mat gray; cvtcolor(src,gray,CV_BGR2GRAY ); //高斯模糊Gaussianblur(gray,gray,size ) 3,3 ),0,0,BORDER_DEFAULT ); //Canny检测Mat cannyImg; canny (灰色、cannyImg、100、100*2.5、3、false ); imshow(cannyImg )、cannyimg ); 玛特canny color; cannycolor.create(src.size )、src.type ); 在//二值图像cannyImg的第一部分中,src的值被指派给cannycolorsrc.copy to (canny color,cannyImg ); imshow(cannyColorimg )、cannycolor ); 维基(0; 返回0; }结果示例:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。