首页 > 其他 > 详细

OpenCV笔记(十六)——使用Canny方法进行边缘检测

时间:2014-12-07 16:20:26      阅读:314      评论:0      收藏:0      [点我收藏+]

Canny方法被许多人认为是拿来做边缘检测的最佳的方法。

在维基百科上有关于Canny方法的比较详细的介绍:http://en.wikipedia.org/wiki/Canny_edge_detector

所以下面只是简单地提一下,因为暂时没有充裕的时间去阅读OpenCV实现Canny的源代码。

Canny方法大体上以四个步骤完成:

1. 利用高斯滤波器过滤噪声。

2. 利用Sobel相似的方法得到图像的强度的梯度。(Sobel算子对图像做微分)

3. 利用Non-maximum suppression方法对第2步获得的候选边缘进行处理,移除不属于边缘部分的像素,留下比较细小的边缘。

4. Hysteresis,即设定upper, lower两个阈值,高于upper的认为是边缘,低于lower的不是边缘。在upper和lower之间的,只有它们与高于upper的像素邻接,才认为是边缘。upper和lower的比例一般为2:1或者3:1。

 

在OpenCV中,Canny方法的实现由Canny函数来完成:

void Canny(InputArray image, OutputArray edges, double threshold1, double threshold2, int apertureSize=3, bool L2gradient=false)

参数介绍:

image应为8位单通道的图像

edges和image有相同的尺寸和类型

threshold1是上文中的lower阈值

threshold2是upper阈值

apertureSize是Sobel算子的大小,一般为3

L2gradient是一个flag,如果为false,则计算gradient时候使用1范式,即计算行微分和列微分绝对值的和,如果为true,则计算行为分和列微分的平方和的开根号。

 

OpenCV笔记(十六)——使用Canny方法进行边缘检测

原文:http://www.cnblogs.com/nipan/p/4149453.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!