角点检测算法总结
Harris
在假定的兴趣点周围放置一个小窗口,并观察窗口内某个方向上强度值的变化。如果位移向量为 (u, v),那么可以用均方差之和表示强度的变化:
在所有方向计算平均强度变化值,如果不止一个方向的变化值很高,就认为这个点是角点。
计算机完成角点检测是通过一个小窗口逐步扫描过去来完成的,在移动过程中的灰度的变换则作为判断角点的依据:
1. 当检测窗口移动时,灰度几乎没有发生变化 ->认为是“平整地带”;
2. 当检测窗口移动时,灰度只在一个方向上发生突变 ->认为是“边缘地带”;
3. 当检测窗口移动时,灰度在各个方向上均发生突变 ->认为是“角点地带”;
首先,获得平均强度值变化最大的方向;
然后,检查垂直方向上的平均强度变化值,如果也很大,就说明是一个角点。
排除紧邻的Harris角点:
非极大值抑制
Harris角点不仅要有高于指定阈值的评分,还必须是局部范围内的最大值。为了检查这个条件,detect方法中加入了一个小技巧,对Harris评分的图像做膨胀运算。
膨胀运算会在领域中把每个像素替换成最大值,因此只有局部最大值的像素是不变的。
FAST 加速分割测试获得特征 Features from Accelerated Segment Test
原理:
如果存在一段圆弧,连续长度超过圆周长的3/4,并且上面所有的像素的强度值都与圆心的强度值明显不同(全部更暗或者更亮),那就认定是一个关键点。
SURF 加速稳健特征 Speeded Up Robust Features
上述两种角点检测算法可以较好地解决方向不变性问题,但是要解决尺寸不变性问题就需要更好的算法。
尺度不变特征:不仅在任何尺度下拍摄得到物体都能检测到一致的关键点,而且每个被检测的特征点都对应一个尺度因子。
对每个像素计算Hessian矩阵,该矩阵衡量一个函数的局部曲率。
根据矩阵的行列式值,可以得到曲率的强度。该方法把角点定义为局部高区率(即在多个方向上得变化幅度都很高)的额像素点。
为了使得算法更加高效,避免在不同尺度下计算全部导数值,算法使用近似的高斯内核。
SURF与SIFT主要有以下几点不同处理:
1、 SIFT在构造DOG金字塔以及求DOG局部空间极值比较耗时,SURF的改进是使用Hessian矩阵变换图像,极值的检测只需计算Hessian矩阵行列式,作为进一步优化,使用一个简单的方程可以求出Hessian行列式近似值,使用盒状模糊滤波(box blur)求高斯模糊近似值。
2、 SURF不使用降采样,通过保持图像大小不变,但改变盒状滤波器的大小来构建尺度金字塔。
3、在计算关键点主方向以及关键点周边像素方向的方法上,SURF不使用直方图统计,而是使用哈尔(haar)小波转换。SIFT的KPD达到128维,导致KPD的比较耗时,SURF使用哈尔(haar)小波转换得到的方向,让SURF的KPD降到64维,减少了一半,提高了匹配速度
SIFT 尺度不变特征变换匹配算法 Scale Invariant Feature Transform
SIFT算法的实质是在不同的尺度空间上查找关键点(特征点),并计算出关键点的方向。SIFT所查找到的关键点是一些十分突出,不会因光照,仿射变换和噪音等因素而变化的点,如角点、边缘点、暗区的亮点及亮区的暗点等。SURF算法是SIFT算法的加速版本
算法步骤:
1. 尺度空间极值检测:搜索所有尺度上的图像位置。通过高斯微分函数来识别潜在的对于尺度和旋转不变的兴趣点。
2. 关键点定位:在每个候选的位置上,通过一个拟合精细的模型来确定位置和尺度。关键点的选择依据于它们的稳定程度。
3. 方向确定:基于图像局部的梯度方向,分配给每个关键点位置一个或多个方向。所有后面的对图像数据的操作都相对于关键点的方向、尺度和位置进行变换,从而提供对于这些变换的不变性。
4. 关键点描述:在每个关键点周围的邻域内,在选定的尺度上测量图像局部的梯度。这些梯度被变换成一种表示,这种表示允许比较大的局部形状的变形和光照变化。
SIFT的缺点:
1. 实时性不高。
2. 有时特征点较少。
3. 对边缘光滑的目标无法准确提取特征点。
参考链接:
https://blog.csdn.net/qq_34057694/article/details/79050138
https://blog.csdn.net/weixin_41745620/article/details/83618875
https://blog.csdn.net/hujingshuang/article/details/46910259
https://blog.csdn.net/zddblog/article/details/7521424
https://blog.csdn.net/qq_30815237/article/details/86545950
https://blog.csdn.net/u010440456/article/details/81483145
https://blog.csdn.net/qq_37374643/article/details/88606351
参考书籍:
《OpenCV 计算机视觉编程攻略》