1、角点检测法的原理
角点是图像局部邻域内两个边缘的交点。
角点所在的邻域通常是图像中稳定的、信息丰富的区域。角点特征具有优良的抗噪声、抗光线干扰的特性,因此广泛应用于图像匹配、视频跟踪、三维建模以及目标识别等领域。
2、Harris角点检测算子
其算法基本思想是使用一个固定窗口在图像上进行任意方向上的滑动,比较滑动前后的两种情况在窗口中像素灰度变化程度,如果存在任意方向上的滑动,都有着较大灰度变化,那么可以认为该窗口中存在角点。
Filters / Points角点 使用Harris算子检测感兴趣的点。 points_harris(Image : : SigmaGrad, SigmaSmooth, Alpha, Threshold : Row, Column) Image:输入参数,输入灰度图像。 SigmaGrad:输入参数,设置梯度的平滑量。默认0.7,范围> 0.0,常用范围0.7 ≤ SigmaGrad ≤ 50.0。 SigmaSmooth:输入参数,设置梯度积分的平滑量。默认2.0,范围> 0.0,常用范围0.7 ≤ SigmaSmooth ≤ 50.0。 Alpha:输入参数,设置平方梯度矩阵的权值。默认0.08,范围> 0.0,常用范围0.001 ≤ Alpha ≤ 0.1。 Threshold:输入参数,设置点的最小滤波器响应。默认1000.0,范围≥0.0。 Row:输出参数,检测到的点的行坐标。 Column:输出参数,检测到的点的列坐标。 |
SigmaGrad值的改变,检测到的角点数量增加,但图像平滑区域的角点数量减少。
SigmaSmooth, Alpha, Threshold值的增加,检测到的角点数量减少。
read_image(Image,'can_with_grid')
dev_set_color('red')
P:=[]
points_harris(Image, 0.7, 2, 0.08, 10, Row, Column)
gen_cross_contour_xld(Cross, Row, Column, 6, 0.785398)
n0:=|Row|
P:=[P,n0]
dev_display(Cross)
![](https://i-blog.csdnimg.cn/blog_migrate/93d410786d23ab179d7f734f3c489ff1.bmp)
![](https://i-blog.csdnimg.cn/blog_migrate/880de01373b22b479d4526fc8734b251.bmp)
角点数量653
![](https://i-blog.csdnimg.cn/blog_migrate/5e31eb4f052071f294b9ff1bad72552a.jpeg)
角点数量788
![](https://i-blog.csdnimg.cn/blog_migrate/c43d30cdeb98ffa01ca6dafa17aea923.jpeg)
角点数量430
![](https://i-blog.csdnimg.cn/blog_migrate/f07c63ae8952097b3ca388f320e82ff5.jpeg)
角点数量634
![](https://i-blog.csdnimg.cn/blog_migrate/870a22e0630a4796723b8f56a1b0668b.jpeg)
角点数量468
参考文献:
杜斌—《机器视觉 使用HALCON描述与实现》