码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2014-12-07 16:23:29      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:http   io   ar   使用   sp   on   bs   代码   ad   

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   io   ar   使用   sp   on   bs   代码   ad   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!