⭕⭕⭕⭕ 目 录 ⭕⭕⭕⭕
- ✅ 一、引言
- ✅二、Harris角点检测算法
- ✅三、角点检测实验验证
- ✅四、参考文献
- ✅五、Matlab代码获取
✅ 一、引言
将图像中灰度变化剧烈或者在图像边界上曲率变化较大的点称为角点。角点检测对于工件图像的特征点定位有着重要作用,在进行工件的特征提取时,角点检测能够精确定位特征点,提高工件图像的特征提取精度。
角点是图像中的一个重要的局部特征,决定了图像中关键区域的形状,体现了图像中重要的特征信号,所以在目标识别、图像匹配、图像重构等方面都具有十分重要的意义。
在进行角点检测过程中,可能会受到噪声干扰以及图像灰度变化的影响,从而导致角点检测结果不准确。而Harris角点检测算法不仅可以有效地克服这些问题,而且计算量较少,实现简单,使得检测结果更加准确。
✅二、Harris角点检测算法
在Harris算法检测过程中,将图像I(x,y)在点(u,v)平移(x,y)产生的灰度变化函数表示为
式中:ω高斯函数。
函数E(x,y)值在高斯窗口内进行任意方向的移动时,若未产生任何变化或者有微小变化,则为非角点;当函数E(x,y)产生特别大或者特别小的变化时,则将该点定义为角点。
在点(u,v)处对函数E(x,y)进行一阶泰勒展开,则函数E(x,y)可改写成下式
其中,A,B,C 是二阶方向微分的近似,定义如下
其中,X,Y 分别表示在x和y两个方向上的一阶梯度值:
式中:h(x,y)高斯滤波。
将式(3)代入式(2),可得到下式
其中,M 为自相关矩阵,表示如下
计算自相关矩阵M特征值过程过于繁复,所以Harris算法使用角点响应函数进行角点质量判断,如
式中:Det(M)矩阵M行列式的值,Det(M)=AB-C^2;
k 常数系数;
Tr(M)矩阵M的迹,Tr(M)=A+B。
若提前设置的阈值小于等于某点的 R(x,y)值,该点则为角点。
Harris角点检测流程如图1所示。
1)获取齿轮工件原图的灰度图像,计算其在x 和y 方向上的梯度值X 和Y;
2)用高斯函数对工件灰度图进行滤波处理,并计算出自相关矩阵 M ;
3)将设定的阈值与计算得到的每个像素点的响应值进行比较,并判定该点是否为候选角点;
4)利用非极大值抑制对3)中所获得的候选角点进行处理,以确定最终的角点。
✅三、角点检测实验验证
在 MATLAB图像处理工具箱中提供的corner函数可以直接用来检测图像的Harris角点特征。下面对使用改进Harris函数和corner函数计算的结果进行对比,对比效果如图2所示。
✅四、参考文献
[1]权威,黄华.多特征方向偏好轮廓提取算法[J].计算机辅助设计与图形学学报,2018,30(1):100-106.
[2]陈琛.刀具图像轮廓特征检测[D].西安:西安工业大学,2013.
✅五、Matlab代码获取
上述Matlab,可私信博主获取。
博主简介:研究方向涉及智能图像处理、深度学习等领域,先后发表过多篇SCI论文,在科研方面经验丰富。任何与算法、程序、科研方面的问题,均可私信交流讨论。