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对图片亮度的变化不敏感,改变阀值能够很大程度的影响检测到的角点数目。
