基于图像的三维重建——特征点检测与匹配(2)


前言

特征点检测与匹配的作用是计算特征点个数达到要求的图像对,使得图像与图像间一直进行传递,从而形成一条轨迹,为SFM重构中的初始图像对以及R、T求解作铺垫。


一、特征点检测

在特征点检测中,我们主要检测其局部特征点,包括斑点和角点两类特征点。斑点是指图像中像素或者灰度值大的区域,角点是指图像中物体的拐角或者线条交叉的部分。其中斑点检测主要包括二阶的拉普拉斯高斯边缘提取算法(LOG),尺度不变特征变换算法(SIFT)、加速稳健特征算法(SURF)等。角点检测主要有Harris角点特征提取算子、加速分割测试特征提取(FAST)、特征点检测算子(ORB)等。

二阶的拉普拉斯高斯边缘提取算法(LOG)

1980年,Marr和Hildreth提出将Laplace算子与高斯低通滤波相结合,提出了LOG(Laplace and Guassian)算子。
步骤如下:

  1. 对图像先进行高斯滤波,然后再采用Laplace算子进行边缘检测。
  2. 保留一阶导数峰值的位置,从中寻找出Laplace过零点。
  3. 对过零点的精确位置进行插值估计。

其中LoG算子 ▽ \bigtriangledown 2 G就是对一个标准高斯函数(未归一化)进行二次偏微分:
在这里插入图片描述
根据 δ \delta δ的不同以及3 δ \delta δ原则可以建立不同的模板,其中, δ \delta δ是一个尺度参数,在图像处理中引入尺度以及建立多尺度空间是一个重要的突破, δ \delta δ越大,图像越模糊,滤除噪声效果最好, δ \delta δ越小,效果相反。

尺度不变特征变换算法(SIFT)

建议参考:SIFT详细解析

加速稳健特征算法(SURF)

SURF(Speeded Up Robust Features,加速稳健特征)是一种稳健的图像识别和描述算法。它是SIFT的高效变种,也是提取尺度不变特征,算法步骤与SIFT算法大致相同,但采用的方法不一样,要比SIFT算法更高效。SURF使用Hessian矩阵的行列式值作特征点检测并用积分图加速运算;SURF的描述子基于2D离散小波变换响应并且有效地利用了积分图。
步骤如下:

  1. 尺度空间的极值检测:搜索所有尺度空间上的图像,通过Hessian来识别潜在的对尺度和选择不变的兴趣点。
  2. 特征点过滤并进行精确定位。
  3. 特征方向赋值:统计特征点图形领域内的Harr小波。即在60°扇形内,每次将60°扇形区域旋转0.2弧度进行统计,将值最大的那个扇形的方向作为该特征点的主方向。
  4. 特征点描述:沿着特征点主方向周围的领域内,取4×4个矩阵小区域,统计每个小区域的Harr特征,然后每个区域得到一个4维的特征向量。一个特征点共有64维的特征向量作为SURF特征的描述子。

Harris角点特征提取算子

Harris角点检测算子是于1988年由CHris Harris和Mike Stephens提出来的,是对Moravec算子的改进。其基本思想是:在图像中设计一个局部检测窗口,当该窗口沿各个方向做微小移动时,考察窗口的平均能量变化,当该能量变化超过设定的阈值时,就将窗口的中心像素点提取为角点。
其步骤为:

  1. 计算图像像素点在水平和垂直方向上的梯度,以及两者的乘积,得到M中4个元素的值.
  2. 对图像进行高斯滤波,得到新的M。
  3. 计算每个像素的Harris响应值R,
  4. 选取局部极值点。Harris方法认为,特征点是局部范围内的极大兴趣值对应的像素点。
  5. 设定阈值,选取一定量的角点。

加速分割测试特征提取(FAST)

Edward Rosten和Tom Drummond经过研究,于2006年在《Machine learning for high-speed corner detection》中提出了一种FAST特征点,并在2010年稍作修改后发表了《Features From Accelerated Segment Test》,简称FAST。由于不涉及尺度,梯度等,FAST检测器速度非常快。基本原理为通过一定邻域内像元的灰度值和中心点比较大小来判断是否为角点。

注意:FAST只是一种特征点检测算法,并不涉及特征点的特征描述。

其主要步骤为:

  1. 对固定半径圆上的像素进行分割测试,通过逻辑测试可以去除大量的非特征候选点。
  2. 基于分类的角点特征检测,利用ID3分类器根据16个特征判断候选点是否为角点特征,每个特征的状态为——1,0,1。
  3. 利用非极大值抑制进行角点特征的验证。

特征点检测算子(ORB)

Ethan Rublee, Vincent Rabaud, Kurt Konolige以及Rary R.Bradski在2011年一篇名为“ORB: An Efficient Alternative to SIFT or SURF” 的文章中提出这个快速特征点提取和描述的算法。ORB算法分为两部分,分别是特征点提取和特征点描述。特征提取是由FAST算法发展而来,特征点描述是根据BRIEF(Binary Robust Independent Elementary Features)特征描述算法改进的。
其基本步骤为:

  1. 粗提取。(该步骤能够提取大量的特征点,但是有很大一部分的特征点的质量不高。
  2. 机器学习的方法筛选最优特征点。
  3. 非极大值抑制去除局部较密集特征点。
  4. 特征点的尺度不变性、(建立金字塔,来实现特征点的多尺度不变性)
  5. 特征点的旋转不变性。(通过矩来计算特征点以r为半径范围内的质心。特征点坐标到质心形成一个向量作为该特征点的方向。)

二、特征匹配

特征匹配主要是计算两幅图像中特征描述子的匹配关系。需要计算两个描述符之间的距离,这样他们的差异就被转换成一个单一的数字,我们可以用它作为一个简单的相似度量,如下图:
在这里插入图片描述

匹配策略

蛮力匹配(Brute Force Matching)

对于第一张图像中给定的关键点,它将获取第二张图像中的每个关键点并计算距离。距离最小的关键点将被视为一对、

快速最近邻(FLANN)

2014年,David Lowe和Marius Muja发布了"快速最近邻(fast library for approximate nearest neighbors(FLANN)")。FLANN训练了一种索引结构,用于遍历使用机器学习概念创建的潜在匹配候选对象。该库构建了非常有效的数据结构(KD树)来搜索匹配对,并避免了穷举法的穷举搜索。因此,速度更快,结果也非常好,但是仍然需要调试匹配参数。

BFMatching和FLANN都接受描述符距离阈值T,该距离阈值T用于将匹配项的数量限制为“好”,并在匹配不对应的情况下丢弃匹配项。相应的“好”对称为"正阳性(TP)",而错对称为"假阳性(FP)",为T选择合适的值的任务是允许尽可能多的TP匹配,而应尽可能避免FP匹配。尽管在大多数情况下都无法避免FP,但我们可以尽可能的降低FP次数。

有效降低FP的两种策略

BFMatching-crossCheck

只要不超过所选阈值T,即使第二图像中不存在关键点,蛮力匹配也将始终返回与关键点的匹配。这不可避免地导致许多错误的匹配。抵消这种情况的一种策略称为交叉检查匹配,它通过两个方向上应用匹配过程并仅保留那些在一个方向上的与在另一个方向上的最佳匹配相同的匹配来工作。交叉检查方法的步骤为:

  1. 对于源图像中的每个描述符,请在参考图像中找到一个或多个最佳匹配。
  2. 切换源图像和参考图像的顺序。
  3. 重复步骤1中源图像和参考图像之间的匹配过程。
  4. 选择其描述符在两个方向上最匹配的那些关键点。
    尽管交叉检查匹配会增加处理时间,但通常会消除大量的错误匹配,因此,当精度优于速度时,应始终执行交叉匹配。交叉匹配一般仅仅用于BFMatching。
Nearest neighbor distance ratio (NN)/K-nearest-neighbor(KNN)

减少FP数量的另一种非常有效的方法是为每个关键点计算最近邻距离比(nearest neighbor distance ratio)。

KNN与NN的区别在与NN每个特征点只保留一个最好的匹配,而KNN每个特征点保留k个最佳匹配,k一般为2。

主要思想是不要将阈值直接应用于SSD,相反,对于源图像中的每个关键点,两个最佳匹配位于参考图像中,并计算描述符距离之间的比率。然后,将阈值应用于比率,以筛选出模糊匹配。如下图所示:
在这里插入图片描述

Evaluating Matching Performance

真阳性率(True Positive Rate-TPR)是已经匹配的正确关键点和所有潜在匹配的总和之间的比值,包括那些被检测器/描述符错过的。它可用于量化实际发现了多少个可能的正确匹配。

假阳性率(False Positive Rate-FPR)是已经匹配的错误的匹配点和所有应该不被匹配的特征点之间的比值。它描述检测器/描述符选择错误的关键点的可能性。

Matcher Precision是正确匹配的关键点(TP)的数量除以所有匹配的数量,此度量也称为inlier ratio。

ROC曲线是一个图形化的图标,它显示了一个检测器/描述符如何很好地区分真假匹配,因为它的区分阈值是不同的。ROC可以直观地比较不同的检测器/描述符,并为每个检测器选择一个合适的鉴别阈值。

对比总结

算法优点缺点
SIFT在处理发生尺度、旋转变化场景时有极大优势,且对光照、噪声具有很好的鲁棒性。计算维度大、计算速度很慢。
SURE较SIFT计算量小,耗时短,具有旋转不变性、尺度不变性,鲁棒性较好。运算速度比较慢。
FAST计算速度快。容易受噪声因素干扰,鲁棒性差,不具有旋转不变性。
OBG运算速度快,具有稳定的旋转不变性。不具备尺度不变性。

在实际应用中,需要根据不同的需求选择不同的算法。

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值