Harris角点检测算法的实现
Harris角点检测算法的原理
Harris角点检测原理是利用移动的窗口在图像中计算灰度变化值,从而更具其灰度变化差值来判断该区域是角点、边缘还是平滑区域。其中关键流程包括转化为灰度图像、计算差分图像、高斯平滑、计算局部极值、确认角点。Harris角点检测是特征点检测的基础,在现实生活中,特征点检测能够在目标建模时会对图像进行目标特征的提取,可以广泛应用到目标匹配、目标跟踪、三维重建等应用中,是学好计算机视觉的基础。
基础知识
角点
- 含义
角点就是极值点,即在某方面属性特别突出的点。即在计算机视觉领域中角点为计算机提取图片的特征点。 - 现实定义
角点原理来源于人对角点的感性判断,即图像在各个方向灰度有明显变化。在算法检测中,角点根据其灰度差的大小进行定义。 - 角点类型
算法思想
算法的核心是利用局部窗口在图像上进行移动判断灰度发生较大的变化,所以此窗口用于计算图像的灰度变化为:[-1,0,1;-1,0,1;-1,0,1][-1,-1,-1;0,0,0;1,1,1]。从各个方向上移动这个特征的小窗口,如图3中窗口内区域的灰度发生了较大的变化,那么就认为在窗口内遇到了角点。如图1中,窗口内图像的灰度没有发生变化,那么窗口内就不存在角点;如图二中。如果窗口在某一个方向移动时,窗口内图像的灰度发生了较大的变化,而在另一些方向上没有发生变化,那么,窗口内的图像可能就是一条直线的线段。
数学表达
- 根据算法思想,构建数学模型,计算移动窗口的灰度差值。通过移动窗口的灰度差值的大小即可判断是否为角点。其中W(x, y)表示移动窗口,I(x, y)表示像素灰度值强度,范围为0~255。
- 为了减小计算量,利用泰勒级数进行简化公式,计算一阶到N阶的偏导数,最终得到一个Harris矩阵公式:
- 在实际应用中为了能够应用更好的编程,定义了角点响应函数R,通过判定R大小来判断像素是否为角点。R取决于M的特征值,对于角点|R|很大,平坦的区域|R|很小,边缘的R为负值。