Canny边缘检测算子原理

原创 2016年08月28日 15:04:25

canny算子是图像处理中比较常用的算法,之前曾用canny来进行边缘检测,方便接下来的用Hough对图像进行处理,其中Canny算子的算法原理中有好多基本的概率都很重要,为了温故所以写篇Canny,有不做和错误的地方欢迎指征。

首先介绍一下Canny对边缘检测质量进行分析提出了三个原则:1.信噪比准则、2.定位精度准则、3.但边缘响应准则,具体什么意思这里就不贴了。边缘检测算法难点在于需要在排除噪声和精准定位方面,正所谓鱼和熊掌不可兼得。Canny算子可以在这两者之间比较好的折衷

算法步骤

(1)用高斯滤波器平滑图像

这里为什么用对图像进行平滑,有一种解释是在后期边缘检测的时候可以获得比较圆润的边缘,坑击噪声对图像的干扰

1)是高斯函数,但是在canny算子中用的是不带系数的高斯函数,G(x,y)=F(x,y)*H(x,y),G为滤波后的图像,F为原始图像

(2)用一阶偏导的有限差分计算梯度幅值和方向

(2)数学表达式

(3)计算模板

(4)计算梯度幅值和方向

附:在canny算子中使用的是一阶偏导如(2),二阶偏导的数学表达式:f(x+1)-f(x)-(f(x)-f(x-1))=f(x+1)+f(x1)-2f(x)

(3)对梯度幅值进行非极大值抑制

在http://blog.csdn.net/xiaxiazls/article/details/47841435这篇文章中的这部分介绍很详细。要进行非极大值抑制,就首先要确定像素点C的灰度值在其8值邻域内是否为最大。图1中蓝色的线条方向为C点的梯度方向,这样就可以确定其局部的最大值肯定分布在这条线上,也即出了C点外,梯度方向的交点dTmp1和dTmp2这两个点的值也可能会是局部最大值。因此,判断C点灰度与这两个点灰度大小即可判断C点是否为其邻域内的局部最大灰度点。如果经过判断,C点灰度值小于这两个点中的任一个,那就说明C点不是局部极大值,那么则可以排除C点为边缘。这就是非极大值抑制的工作原理。


(4)用双阈值方法检测和连接边缘

使用两个阈值T1和T2(T1<T2),首先使用高阈值得到一个边缘图像,但是该边缘图像由于采用的是高阈值,所以存在不连续的情况比较多,这个时候在高阈值边缘图像的端点8领域处寻找可以连接的到轮廓上的边缘,当满足阈值T1时连接。


相关文章推荐

利用Canny边缘检测算子进行边缘检测的原理及OpenCV代码实现

利用Canny边缘检测算子进行边缘检测的原理及OpenCV代码实现

canny边缘检测算子

  • 2011年11月24日 10:57
  • 35KB
  • 下载

图像局部特征学习(笔记1之Canny边缘检测算子)

Canny首先提出的一个概念就是边缘检测算子优劣的三条标准。 总结下: 算子对噪声是否敏感,是否存在漏检的情况 算子的边缘定位是否准确,检测到的边缘与实际边缘的距离尽可能小 对每条边缘只有一次响...

Canny边缘检测算子

Canny提出一种新的边缘检测方法,它对受白噪声影响的阶跃型边缘是最优的。Canny检测子的最优性与三个标准有关:第一、检测标准:不失去重要的边缘,不应有虚假的边缘;第二、定位标准:实际边缘与检测到的...
  • utimes
  • utimes
  • 2013年10月13日 23:29
  • 11168

基于OPENCV的CANNY边缘检测算子详细代码实现

关于canny算子边缘检测的原理,此处不再做详细说明,这里直接将实现代码附在下面。读者可对照代码,进行学习。 //canny边缘检测算子 /* #include   #include #i...

图像分割 2 边缘检测算子canny算法原理。

canny边缘检测,prewitt算子 sobel算子 高斯拉普拉斯算子

canny边缘检测算子的研究

  • 2008年04月20日 20:25
  • 350KB
  • 下载

边缘检测算子之Canny

1.1Canny算法简介 Canny 边缘检测算子是 JohnF. Canny 在 1986 年提出的一个多级边缘检测算子。Canny算法与简单的基于拉普拉斯算法的不同点之一是在Canny算法中,首...

opencv的Sobel导数、Scharr滤波器、Laplacian算子、Canny边缘检测

本文主要对opencv的Sobel导数、Scharr滤波器、Laplacian算子、Canny边缘检测的函数进行简单的说明。 1、Sobel导数       索贝尔算子(Sobel operato...

Sobel算子取代:基于特定点方向的canny边缘检测

前言:        Canny边缘检测使用了Sobel算子,计算dx和dy两个方向,对于特定方向的边缘检测,可以作少量修改。 代码: 计算特定方向上的边缘 void CannyOrient...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Canny边缘检测算子原理
举报原因:
原因补充:

(最多只允许输入30个字)