图像特征之Harris角点检测
原文站点:https://senitco.github.io/2017/06/18/image-feature-harris/
角点检测(Corner Detection)也称为特征点检测,是图像处理和计算机视觉中用来获取图像局部特征点的一类方法,广泛应用于运动检测、图像匹配、视频跟踪、三维建模以及目标识别等领域中。
局部特征
不同于HOG、LBP、Haar等基于区域(Region)的图像局部特征,Harris是基于角点的特征描述子,属于feature detector,主要用于图像特征点的匹配(match),在SIFT算法中就有用到此类角点特征;而HOG、LBP、Haar等则是通过提取图像的局部纹理特征(feature extraction),用于目标的检测和识别等领域。无论是HOG、Haar特征还是Harris角点都属于图像的局部特征,满足局部特征的一些特性。主要有以下几点:
- 可重复性(Repeatability):同一个特征可以出现在不同的图像中,这些图像可以在不同的几何或光学环境下成像。也就是说,同一物体在不同的环境下成像(不同时间、不同角度、不同相机等),能够检测到同样的特征。
- 独特性(Saliency):特征在某一特定目标上表现为独特性,能够与场景中其他物体相区分,能够达到后续匹配或识别的目的。
- 局部性(Locality);特征能够刻画图像的局部特性,而且对环境影响因子(光照、噪声等)鲁棒。
- 紧致性和有效性(Compactness and efficiency);特征能够有效地表达图像信息,而且在实际应用中运算要尽可能地快。
相比于考虑局部邻域范围的局部特征,全局特征则是从整个图像中抽取特征,较多地运用在图像检索领域,例如图像的颜色直方图。
除了以上几点通用的特性外,对于一些图像匹配、检测识别等任务,可能还需进一步考虑图像的局部不变特征。例如尺度不变性(Scale invariance)和旋转不变性(Rotation invariance),当图像中的物体或目标发生旋转或者尺度发生变换,依然可以有效地检测或识别。此外,也会考虑局部特征对光照、阴影的不变性。
Harris角点检测
特征点在图像中一般有具体的坐标,并具有某些数学特征,如局部最大或最小灰度、以及某些梯度特征等。角点可以简单的认为是两条边的交点,比较严格的定义则是在邻域内具有两个主方向的特征点,也就是说在两个方向上灰度变化剧烈。如下图所示,在各个方向上移动小窗口,如果在所有方向上移动,窗口内灰度都发生变化,则认为是角点;如果任何方向都不变化,则是均匀区域;如果灰度只在一个方向上变化,则可能是图像边缘。
对于给定图像
其中,窗口加权函数
根据泰勒展开,可得到窗口平移后图像的一阶近似
因此
其中
二次项函数本质上是一个椭圆函数,椭圆的曲率和尺寸可由
考虑角点的边界和坐标轴对齐的情况,如下图所示,在平移窗口内,只有上侧和左侧边缘,上边缘
当角点边界和坐标轴没有对齐时,可对角点进行旋转变换,将其变换到与坐标轴对齐,这种旋转操作可用矩阵的相似对角化来表示,即
对于矩阵
如下图所示,可根据矩阵
在判断角点时,无需具体计算矩阵
式中,
算法实现
Harris角点检测的算法步骤归纳如下:
- 计算图像
- 计算图像两个方向梯度的乘积
- 使用窗口高斯函数分别对
- 计算每个像素的Harris响应值
- 在一个固定窗口大小的邻域内(
Harris角点性质
1.参数
2.Harris角点检测对亮度和对比度的变化不敏感。
3.Harris角点检测具有旋转不变性,但不具备尺度不变性。如下图所示,在小尺度下的角点被放大后可能会被认为是图像边缘。
Harris角点检测的结果示意图:
多尺度Harris角点检测
Harris角点具有灰度不变性和旋转不变性,但不具备尺度不变性,而尺度不变性对于图像的局部特征来说至关重要。将Harris角点检测算子和高斯尺度空间表示相结合,可有效解决这个问题。与Harris角点检测中的二阶矩表示类似,定义一个尺度自适应的二阶矩
式中,
算法流程:
- 确定尺度空间的一组取值
- 对于给定的尺度空间值
- 在位置空间搜索候选角点后,还需在尺度空间上进行搜索,计算候选点的拉普拉斯响应值,并于给定阈值作比较
- 将响应值
这样既可确定在位置空间和尺度空间均满足条件的Harris角点。
reference
- Paper: A COMBINED CORNER AND EDGE DETECTOR
- Paper: Scale & Affine Invariant Interest Point Detectors
- Code: Harris Detector
- http://www.cnblogs.com/ronny/p/4009425.html
- http://www.cnblogs.com/ronny/p/3886013.html
- https://xmfbit.github.io/2017/01/25/cs131-finding-features/
- http://www.voidcn.com/blog/app_12062011/article/p-6071346.html
- http://blog.csdn.net/jwh_bupt/article/details/7628665
- http://www.cnblogs.com/ztfei/archive/2012/05/07/2487123.html