关于姿态估计算法,常用基于特征,直接匹配的配准方法。

1基于特征的方法

使用传统的方法寻找特征(比如SIFT)或者深度学习的方法寻找特征(比如LIFT、Magic leap)来寻找对应的特征点,并利用对极约束来估计相对变换矩阵。通过最小化重投影误差来优化求解。包括求本质矩阵,然后得到R、T;3D-3D情况下的ICP算法;3D-2D情况下的PnP算法。

优缺点:基于特征的方法对于初始化是稳健的,并且能进行快速计算。但是依赖特征点的检测(比如纹理不明显的图像提取的特征点较少),并且不能充分利用图像信息,倾向于过拟合到特征丰富的区域。

注:

a.LIFT【20】:通过特征点检测、方向估计、特征点描述三个相互联通的网络组成,每一个都是基于CNN神经网络。

mask rcnn 姿态估计 姿态估计算法_特征点

                                                                       图1 LIFT网络架构图

如图所示,步骤如下:

1.给定一个输入图像,Detector生成分数图S。

2.在评分映射S上执行soft argmax代替传统的极大值抑制算法,生成潜在特征点的位置x.

3.提取以x为中心的较小的patch,使用转换层Crop,作为方向估计网络的输入。

4.方向估计网络预测得到 主方向θ。

5.根据这个方向旋转p,使用第二个转换层,贴上Rot,产生Pθ。

6.将Pθ送入描述符网络,生成特征向量d。

 

b. Magic leap【21】的文章

“Toward Geometric Deep SLAM”点跟踪模型,介绍了一种出色的特征点提取和匹配的方法。

mask rcnn 姿态估计 姿态估计算法_特征点_02

                                                                            图2 网络架构图

上图所示,主要由MagicPoint和MagicWarp两个网络组成。MagicPoint网络对单一图像进行操作,提取二维图像中分布均匀的特征点。MagicWarp网络使用MagicPoint生成的2D点态图像来预测单应矩阵。

mask rcnn 姿态估计 姿态估计算法_编码器_03

                                                                          图3 magicPoint 网络图

使用VGG类型的网络作为编码器,以及解码器。对每一个像素生成其作为角点的概率。

mask rcnn 姿态估计 姿态估计算法_编码器_04

                                                                            图4 magicWarp 网络图

使用两个2D点态图作为输入,注意这里只使用点的位置作为输入,而不是特征点描述子,输出两幅图片变换的 单应矩阵。整个算法运行速度非常快。

 

2直接法

直接根据像素亮度信息或者像素特征信息,估计相机的运动,可以完全不用计算关键点和描述子。通过最小化光度误差或者特征度量误差来求解:

优缺点:需要对特定运动进行初始化。优化光度误差的方法对光照变化和快速运动敏感,因为在它的优化步骤中采用了光流假设,而这假设在相同位置的光度项是恒定且连续的。有一些采用深度学习克服这些问题的研究。比如CLKN 、DeMon等。对于三维空间中的相对姿态估计,图像变化也需要深度信息,这在大多数情况下是未知的并且需要和运动参数一起估计。

 

注:

a.CLKN网络【22】

创新:

1.提出一个网络结构,在卷积特征上执行LK算法,采用LK算法来最小化相应像素的特征度量误差,来估计两个图像块的2D变换,其中使用金字塔卷积神经网络学习特征,每一次迭代中的高斯牛顿优化被认为是LK层,用于反向传播。

2.级联特征学习方式,使网络从“粗-细”的优化。

                                     

mask rcnn 姿态估计 姿态估计算法_mask rcnn 姿态估计_05

                                                            图5 CLKN网络流程图

由上图所示,输入待匹配的两幅图片,经过相同的特征提取网络,得到特征图。将特征图和初始转换矩阵作为LK层的输入,从而得到预测的转换矩阵。

      

mask rcnn 姿态估计 姿态估计算法_mask rcnn 姿态估计_06

                                                                  图6 LK层网络图

上图为LK层的网络示意图。(a)是雅可比矩阵的生成网络,(b)是余差网络,通过循环迭代,最后得到估计的R和t。

 

b.demon网络【23】

训练一个端到端的卷积神经网络从连续的无约束的图像对中计算深度和相机运动。这个架构由多个堆叠的编码器-解码器网络组成,其核心部分是一个迭代网络可以增强预测功能。与传统的姿态估计相比,结果更精确、更鲁棒。

创新点:

这篇文章设计一个架构,交替估计光流和相机运动、深度估计。网络使用了FlowNet架构,由一个迭代部分与递归网络类似,共享权重。与通常在实践中训练递归网络时进行展开不同,增加了对当前minibatch追加前一次训练迭代结果的预测。这种训练方法可以节省大量内存,在训练过程中包含更多迭代结果。

mask rcnn 姿态估计 姿态估计算法_特征点_07

                                                                           图7  网络架构图

DeMoN使用一个图像对作为输入,预测第一个图像的深度图和第二个相机的相对位姿。网络由一系列编码器-解码器网络组成,在光流,深度图,位姿估计上进行迭代;精细化网络可以提高最终深度图的精度。

mask rcnn 姿态估计 姿态估计算法_迭代_08

                                                                  图8  迭代和精细化网络结构图

灰色字体输入部分只用于迭代网络。第一个编码器-解码器估计光流和它在图像对和前一估计的置信度。第二个编码器-解码器估计深度图和表面法线。在编码器后面增加全连接网络估计相机运动r,t和深度尺度因子s。尺度因子s是深度相对于相机运动的尺度。