HALCON边缘检测

HALCON边缘检测

边缘检测的算法分类

基于查找的方法

通过寻找图像一阶导数中的最大和最小值来检测边界,通常是将边界定位在梯度最大的方向,是基于一阶导数的边缘检测算法

基于零穿越的方法

通过寻找图像二阶导数零穿越来寻找边界,通常是拉普拉斯过零点或者非线性差分表示的过零点,是基于二阶导数的边缘检测算法

Prewitt算子

通过利用像素点上下、左右邻点灰度差,在边缘处达到极值的方法检测边缘。它的方程和Sobel算子完全一样,因此都考虑了邻域信息,所不同的是平滑部分的权值有些差异,因此对噪声具有一定的抑制能力,但不能完全排除检测结果中出现的虚假边缘。Prewitt算子不仅能检测边缘点,而且能抑制噪声的影响,因此对灰度和噪声较多的图像处理得较好。

卷积模板如下

A= [ 1 1 1 0 0 0 − 1 − 1 − 1 ] \left[ \begin{matrix} &1 &1 &1\\ &0 &0 &0\\ &-1 &-1 &-1\\ \end{matrix} \right] 101101101

B= [ 1 0 − 1 1 0 − 1 1 0 − 1 ] \left[ \begin{matrix} &1 &0 &-1\\ &1 &0 &-1\\ &1 &0 &-1\\ \end{matrix} \right] 111000111

prewitt_amp (ImageReduced, ImageEdgeAmp)
threshold (ImageEdgeAmp, Regions, 25, 80)

检出效果
HALCON边缘检测_第1张图片

Kirsch算子

Kirsch算法由K0K7八个方向的模板决定,将K0K7的模板元素分别与当前像素点的3×3模板区域的像素点相乘,然后选八个值中最大的值作为中央像素的边缘强度。

卷积模板如下

A= [ − 3 − 3 5 − 3 0 5 − 3 − 3 5 ] \left[ \begin{matrix} &-3 &-3 &5\\ &-3 &0 &5\\ &-3 &-3 &5\\ \end{matrix} \right] 333303555

B= [ − 3 5 5 − 3 0 5 − 3 − 3 − 3 ] \left[ \begin{matrix} &-3 &5 &5\\ &-3 &0 &5\\ &-3 &-3 &-3\\ \end{matrix} \right] 333503553

C= [ 5 5 5 − 3 0 − 3 − 3 − 3 − 3 ] \left[ \begin{matrix} &5 &5 &5\\ &-3 &0 &-3\\ &-3 &-3 &-3\\ \end{matrix} \right] 533503533

D= [ 5 5 − 3 5 0 − 3 − 3 − 3 − 3 ] \left[ \begin{matrix} &5 &5 &-3\\ &5 &0 &-3\\ &-3 &-3 &-3\\ \end{matrix} \right] 553503333

E= [ 5 − 3 − 3 5 0 − 3 5 − 3 − 3 ] \left[ \begin{matrix} &5 &-3 &-3\\ &5 &0 &-3\\ &5 &-3 &-3\\ \end{matrix} \right] 555303333

F= [ − 3 − 3 − 3 5 0 − 3 5 5 − 3 ] \left[ \begin{matrix} &-3 &-3 &-3\\ &5 &0 &-3\\ &5 &5 &-3\\ \end{matrix} \right] 355305333

G= [ − 3 − 3 − 3 − 3 0 − 3 5 5 5 ] \left[ \begin{matrix} &-3 &-3 &-3\\ &-3 &0 &-3\\ &5 &5 &5\\ \end{matrix} \right] 335305335

H= [ − 3 − 3 − 3 − 3 0 5 − 3 5 5 ] \left[ \begin{matrix} &-3 &-3 &-3\\ &-3 &0 &5\\ &-3 &5 &5\\ \end{matrix} \right] 333305355

kirsch_amp (ImageReduced, ImageEdgeAmp1)
threshold (ImageEdgeAmp1, Regions2, 160, 255)

检出效果

HALCON边缘检测_第2张图片

你可能感兴趣的:(Halcon,算法)