常见的边缘检测算子有Roberts算子、Prewitt算子、Sobel算子、Marr-Hidreth边缘检测以及canny算子等。
一、利用梯度进行边缘检测
1、Roberts算子采用对角线方向相邻两像素之差近似的梯度幅值来检测边缘。该算子定位较准确,但对噪声比较敏感,检测水平和竖直边缘效果好于斜向边缘。
2、Sobel算子根据图像的像素点上下、左右邻点灰度加权差在边缘处达到极值这一特点来检测边缘。该算子对噪声有较好的平滑作用,能提供建准确的边缘方向信息,但是边缘定位精度不高。
3、Prewitt算子边缘检测的思路与Sobel算子类似,也是在一个掩模中定义微分运算。算子对噪声具有平滑作用,同样定位精度不够高。
二、更为先进的边缘检测技术
1、Marr-Hildreth算法(拉普拉斯算子)
(1)采用高斯低通滤波器对图像进行滤波;
(2)采用拉普拉斯模板对进行卷积;
(3)找到步骤(2)所得图像的零交叉。
该算子是二阶微分算子,利用边缘点处二阶导函数出现零交叉原理来检测图像的边缘。对灰度突变及噪声较敏感,不具有方向性,不能获得图像边缘的方向信息。
2、Canny算子
Canny边缘检测算法步骤:
(1)用一个高斯滤波器平滑输入图像
(2)计算梯度幅值图像和角度图像
(3)对梯度幅值图像进行非最大抑制
(4)用双阈值处理和连接分析来检测并连接边缘
Canny算子是上述中效果最好的算子,该算子去噪能力强,在连续性、细度和笔直度等线的质量方面也很出众。但是Canny算子的性能带来的问题是:连接起来更复杂、执行时间较长。
综上所述,在实际工业生产中,要求实时性较高的情况下,通常采用阈值梯度的方法;当对质量要求较高时,可选择更为先进的方法,尤其是Canny算子。