Harris Corner

Posted yuchengluo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Harris Corner相关的知识,希望对你有一定的参考价值。

Harris Corner网上已经有很多的资料了,但它也是我读研究生后读的第一篇论文,对我有一种特别的意义。

这篇文章我想从几个方面来讲解Harris Corner,一是Harris Corner的思想,二是Harris Corner重要公式的推导,三是从图像的层面直观的观察每一个公式的结果。本人能力有限,如有纰漏,万望指正。Any advice and suggestions will be greatly appreciated。

 

我们的目的是在图像上找到角点。那我们在图像上设置一个小窗,然后我们将小窗再多个方向进行微小的移动,比对朝每个方向移动后的小窗与原始小窗中的数据,可能产生以下三种情况:
1.原始小窗在一个平面上,则小窗无论朝哪个方向进行移动后,改变的数值都很小;
2.原始小窗在一条边缘上,则小窗朝边缘的线性方向移动时,改变很小,但朝别的方向进行移动时,改变很大;
3.原始小窗在一个角点上,则无论它朝任何方向进行移动,都会有较大的改变
 
我们用数学公式对这个思想进行描述:
技术分享图片
 
这是一个自相关函数,x,y代表的是小窗中原始图像的位置,detaX和detaY表示偏移量,w是一个平滑函数
 
中括号内部的函数表示对原始小窗和移动后的小窗进行距离的计算,对多个方向的小窗进行有一个高斯加权求和,得到一个响应值
 
对这个公式进行推导。
技术分享图片
引入二元泰勒展开式,则
技术分享图片
带入自相关函数
技术分享图片
只观察大括号内
技术分享图片
再带入自相关函数
 
技术分享图片
 
考虑α,β为M矩阵的两个特征值:
如果两个特征值都很小,则说明窗口再各个方向变换都不大,说明它在平面内;
如果其中一个特征值很大,而另一个很小,则说明窗口在一个方向变化小,而另一个方向变换较大,说明窗口在边缘上
如果两个特征值都比较大,而且近似,那么说明这个窗口无论朝什么方向移动都比较大,说明窗口在角点上
 
可以知道矩阵的迹和矩阵的行列式可由下式算出
技术分享图片
为了简化计算我们计算
 
技术分享图片
当R大于设定阀值时,我们就认为当前点是角点。
 
 
考虑:
技术分享图片
 
X,Y我们可以理解为图像在x和y方向上的一阶导,对于图像,我们可以用卷积模板进行卷积操作来实现
技术分享图片
针对原始图像
技术分享图片
对应的偏导图像X,Y分别为
技术分享图片
这是一个简单的边缘检测。
 
针对自先关函数进行变形可得到
技术分享图片
其中,
技术分享图片
A,B,C对应M矩阵中的A,B,C
 
技术分享图片
技术分享图片
接着对图像M矩阵进行运算
技术分享图片
 
得到相应图片
技术分享图片
 
 
Harris计算特征值来判别角点,因此对方向有自适应性,所以能够具有旋转不变性。
但是针对不同尺度的角点,Harris由于并没有改变图片和模板大小,所以不能检测到别的尺度的角点。
技术分享图片
还有一点,阀值R对图片亮度的变化不敏感,改变阀值能够很大程度的影响检测到的角点数目。
技术分享图片

以上是关于Harris Corner的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV中的Harris角点检测

寻找HarrisShi-Tomasi和亚像素角点

Sober算子边缘检测与Harris角点检测1

OpenCV实战(16)——角点检测详解

图像特征提取与描述

opencv学习之路(32)角点检测