姓名:高强 学号:17011210057
转载自:www.cnblogs.com/love6tao/p/5152020.html,有删改
【嵌牛导读】:本文主要介绍Canny图像边缘检测算法的步骤和对各个步骤的理解
【嵌牛鼻子】:边缘检测,Canny,步骤
【嵌牛提问】:canny边缘检测算法的步骤是怎样?
【嵌牛正文】:
1. Canny边缘检测算法的提出和指标
Canny算法是John Canny在1986年提出的,那年John Canny 28岁,该文章发表在PAMI顶级期刊上(1986.IEEE Transactions on Pattern Analysis and Machine Intelligence,vol. 8, 1986 , pp 679-698 )。
Canny算子与Marr(LoG)边缘检测方法类似(Marr大爷号称计算机视觉之父),也属于是先平滑后求导数的方法。John Canny研究了最优边缘检测方法所需的特性,给出了评价边缘检测性能优劣的三个指标:
(1)好的信噪比,即将非边缘点判定为边缘点的概率要低,将边缘点判为非边缘点的概率要低;
(2)高的定位性能,即检测出的边缘点要尽可能在实际边缘的中心;
(3)对单一边缘仅有唯一响应,即单个边缘产生多个响应的概率要低,并且虚假响应边缘应该得到最大抑制。
用一句话说,就是希望在提高对景物边缘的敏感性的同时,可以抑制噪声的方法才是好的边缘提取方法。
2. Canny边缘检测算法的步骤:
(1)图像高斯滤波进行降噪处理。
(2)用一阶偏导的有限差分计算梯度的幅值和方向。
(3)对梯度幅值进行非极大值抑制。
(4)用双阈值算法检测和连接边缘。
3. Canny边缘检测算法的通俗理解
Canny算法的目的就是边缘检测,何为边缘?图象局部区域亮度变化显著的部分,对于灰度图像来说,也就是灰度值有一个明显变化,既从一个灰度值在很小的缓冲区域内急剧变化到另一个灰度相差较大的灰度值。那么怎么表征这种灰度值的变化呢?这里想到的就是导数微分,导数就是表征变化率的,但是数字图像都是离散的,也就是导数肯定会用差分来代替。也就是具体算法中的步骤2,用相邻像素的差分来计算梯度的大小和方向。但是在真实的图像中,一般会有噪声,噪声会影响梯度的计算,所以步骤1要先滤波。理论上将图像梯度幅值的元素值越大,说明图像中该点的梯度值越大,但这不能说明该点就是边缘。在Canny算法中,步骤3的非极大值抑制是进行边缘检测的重要步骤,通俗意义上是指寻找像素点的局部最大值,沿着梯度方向,比较它前面和后面的梯度值,若梯度值局部最大则有可能为边缘像素,进行保留,否则就进行抑制。步骤4是一个典型算法,有时候我们并不能一刀切,也就是超过阈值的都是边缘点,而是设两个阈值,希望在高阈值和低阈值之间的点也可能是边缘点,而且这些点最好在高阈值的附近,也就是说这些中间阈值的点是高阈值边缘点的一种延伸。所以步骤4用了双阈值来进行检测和连接边缘。双阈值有时也叫做滞后阈值。