计算机视觉——特征检测算法 Harris角点检测

一.特征检测
1.1特征检测定义

特征检测是计算机视觉和图像处理中的一个概念。它指的是使用计算机提取图像信息,决定每个图像的点是否属于一个图像特征。特征检测的结果是把图像上的点分为不同的子集,这些子集往往属于孤立的点、连续的曲线或者连续的区域。
1.2特征定义

特征就是有意义的图像区域,该区域具有独特特征和易于识别性。因此角点及高密度区域都是很好的特征,而大量重复的模式或低密度区域(例如图像中的蓝色天空)则不是很好的特征。边缘可以将图像分为两个区域,因此也可以看做好的特征。斑点是与周围有很大差别的像素区域,也是有意义的特征。
二. Harris角点检测
2.1 何为角点

通常意义上来说,角点就是极值点,即在某方面属性特别突出的点,是在某些属性上强度最大或者最小的孤立点、线段的终点。而对于图像而言,如图所示红点部分,即为图像的角点,其是物体轮廓线的连接点。
计算机视觉——特征检测算法 Harris角点检测那么对于图像的角点判断,我们假想出一个正方形的小窗口,如果小窗口在图像以任意方向进行移动,导致图像灰度的明显变化,那么我们就可以认为小窗口内部包含了“角点”,或者当窗口足够小时,可以认为该窗口就是角点。下面我们通过一组图来了解一下:
计算机视觉——特征检测算法 Harris角点检测计算机视觉——特征检测算法 Harris角点检测
其含义是对于图像I(x,y),在点(x,y)处平移(u,v)后的自相似性。其中w(x,y)是加权函数,它可以是常数,也可以是高斯加权函数。如图2所示。
在这里插入图片描述根据泰勒展开和一些数学步骤后可得到如下结果
在这里插入图片描述其中
在这里插入图片描述公式中Ix和Iy是在x和y方向获取的区域。
最后转化为R=det(M) - k(trace(M))^2,该公式决定了一个区域内是否包含角特征。
公式中
det(M) = λ1λ2
trace(M) = λ1+λ2
λ1和λ2是M的特征值。
这些特征值决定了一个区域是角,边缘还是平面。
当|R|很小时,即λ1和λ2很小时,该区域时平面。
当 R < 0时,即λ1远远大于λ2或者λ2远远大于λ1时,该区域时直线。

2.2Harris角点性质

1 该算法算子对亮度和对比度的变化不敏感。
2 算子具有旋转不变性。
3 算子不具有尺度不变性。

2.3 实现效果

以上着重介绍了Harris角点检测的原理,下面将进行Harris角点检测与特征匹配的实际操作,我拍了一张我本科大学(集美大学)里的建筑物—延奎图书馆。用python语言实现,代码如下:
计算机视觉——特征检测算法 Harris角点检测2.3.2 Harris角点检测效果图

1垂直和水平边缘多

正面

计算机视觉——特征检测算法 Harris角点检测

不同角度
计算机视觉——特征检测算法 Harris角点检测计算机视觉——特征检测算法 Harris角点检测

远处

计算机视觉——特征检测算法 Harris角点检测

侧面
计算机视觉——特征检测算法 Harris角点检测

2.4实验结果分析与结论

对同一个建筑不同角度,光线,远近的图片进行Harris角点检测。
1.在不同光线的情况下 对比两张图片中的Harris角点检测算子,发现变化不明显,虽然亮度提高,但是整体灰度值也提高,所以对Harris角点检测算子影响不大 得出结论Harris角点检测算子对亮度和对比度的变化不灵敏
2.在旋转角度不同情况下,对比两张图片中的Harris角点检测算子,发现Harris角点检测算子并没有随着角度的改变而改变 得出结论Harris角点检测算子具有旋转不变性
3.在远近结果不同的情况下,对比两张图片中的Harris角点检测算子,在检测窗口尺寸不变的前提下,在窗口内所包含图像的内容是完全不同的, 得出结论 Harris角点检测算子不具有尺度不变性

1光照过强和过暗是会导致角点检测算子数量减少,因为光线的改变会导致灰度值的变化,灰度值过于平均则会导致不容易区分出角点,所以导致角点的数量减少
2建筑物边缘或者垂直的地方,角点容易被检测出来。
3建筑物过远则会导致部分线段被认为是角点

3 实验总结

1.对于正面图像和侧面图像的比较可以看出,正面图像的细节特征点较为丰富,也因此检测标注会更加复杂,而侧面图像则会隐藏掉很多细节特征,标注点也就更简单。

2.对于正面图像和旋转图像的比较可以看出,两者并没有太多不同,是因为图像只是经过旋转的话并不会改变特征点,只是特征点的水平位置发生改变。Harris角点检测算子使用的是角点附近的区域灰度二阶矩矩阵。而二阶矩矩阵可以表示成一个椭圆,椭圆的长短轴正是二阶矩矩阵特征值平方根的倒数。当特征椭圆转动时,特征值并不发生变化,所以判断角点响应值R也不发生变化。

3.对于正面图像和亮度变化图像的比较可以看出,亮度变化对于角点检测还是具有影响,如果是图像亮度较大,则会让图像里的特征点不明显,从而导致检测失败,图像亮度过小也是同理,只有亮度合适才能让图像细节更丰富。