Canny算子是John F.Canny于1986年开发出来的一个多级边缘检测算法,Canny算子是从不同视觉对象中提取有用的结构信息并大大减少要处理的数据量的一种技术,目前已广泛应用于各种计算机视觉系统。John F.Canny发现,在不同视觉系统上对边缘检测的要求较为类似,因此,可以实现一种具有广泛应用意义的边缘检测技术。边缘检测的一般标准如下。
(1)以低的错误率检测边缘,意味着需要尽可能准确地捕获图像中尽可能多的边缘。
(2)检测到的边缘应精确定位在真实边缘的中心。
(3)图像中给定的边缘应只被标记一次,并且在可能的情况下,图像的噪声不应产生假的边缘。
Canny算子由以下4个步骤构成。
(1)图像降噪:梯度算子用于增强图像,本质上是通过增强边缘轮廓来实现的,也就是说梯度算子是可以检测到边缘的。但是,梯度算子受噪声的影响很大,那么,处理前先去除噪声十分必要,因为噪声是灰度变化很大的地方,所以容易被识别为伪边缘。
(2)计算图像梯度,得到可能边缘:计算图像梯度能够得到图像的边缘,因为梯度是灰度变化明显的地方,而边缘也是灰度变化明显的地方。但这一步只能得到可能的边缘,因为灰度变化的地方可能是边缘,也可能不是边缘。这一步就有了所有可能是边缘的集合。(www.xing528.com)
(3)非极大值抑制:通常灰度变化的地方都比较集中,因此将局部范围内的梯度方向上,灰度变化最大的保留下来,其他的不保留,这样可以剔除掉大部分的点。将有多个像素宽的边缘变成一个单像素宽的边缘,即将“胖边缘”变成“瘦边缘”。
(4)双阈值筛选:通过非极大值抑制后,仍然有很多的可能边缘点,因此进一步地设置一个双阈值,即低阈值(low)、高阈值(high)。灰度变化大于high的,设置为强边缘像素,低于low的,剔除,在low和high之间的设置为弱边缘。进一步判断,如果其邻域内有强边缘像素,保留;如果没有,剔除。因为只保留强边缘轮廓的话,有些边缘可能不闭合,需要从满足low和high之间的点进行补充,使得边缘尽可能地闭合。
图8-10是Canny算子处理图像前后的效果对比,由图可知,Canny算子得到的图像边缘还是比较清晰的。
图8-10 Canny算子处理图像前后的效果对比
(a)原始图像;(b)Canny算子处理后的图像
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。