7.积硅步以至千里:前端-视觉里程计之相对位姿估计

求解3D到2D点对运动的方法,有用3对点估计位姿的P3P、直接线性变换(DLT)、EPnP(Efficient PnP)等等。

1.DLT:它基于线性变换的原理,通过求解一个线性方程组来估计变换矩阵,从而实现点对的运动转换。
步骤如下:

①收集点对数据:准备一组已知的3D空间中的点和对应的2D平面上的点对。至少需要4个点对来计算变换矩阵。

②形成线性方程组:对于每个点对,可以将其表示为一个线性方程。假设3D点为(X,Y,Z),对应的2D点为(x,y),则可以得到以下方程:
X * P = xY * P = y```其中,P是一个未知的3×4变换矩阵。

③构建增广矩阵:将每个点对的方程整理成增广矩阵形式。对于第i个点对,可以将其方程表示为:
[0, 0, 0, -X_i, -Y_i, -Z_i, y_i*X_i, y_i*Y_i, y_i*Z_i, 1, 0, 0, 0, 0] * [P_11, P_12, P_13, P_14, P_21, P_22, P_23, P_24, P_31, P_32, P_33, P_34]ᵀ = 0```
将所有点对的方程组合成一个增广矩阵。

④求解增广矩阵:对增广矩阵进行SVD(奇异值分解)分解,得到最小特征值对应的特征向量。该特征向量即为变换矩阵P的展开形式。
⑤重构变换矩阵:将特征向量重构成3×4的变换矩阵P。

⑥归一化:对变换矩阵进行归一化,即将最后一行除以其模长,使变换矩阵的最后一个元素为1。

2.P3P:通过已知的三对3D空间点和对应的二维图像点,估计相机的位置和姿态。
基本原理如下:

①准备数据:收集三对已知的3D空间点和对应的2D图像点。每对点对应一个索引,如1、2、3。
②建立坐标系:选择一个适当的坐标系,通常选择其中一个3D点作为原点,并将其坐标设置为(0, 0, 0)。
③归一化坐标:对于每对点,将其3D坐标归一化,使得原点到该点的距离为1。归一化的方法是将每个点的坐标除以一个参考长度。
④构建方程:根据相机成像模型,可以建立三个方程,将3D点的归一化坐标与对应的2D图像点之间建立关系。这些方程通常采用投影矩阵表示。
⑤解方程:将方程整理成一个非线性方程组,并求解相机的位姿参数。这个过程通常使用迭代方法,如Levenberg-Marquardt算法。
⑥选择解:由于方程组存在多个解,通过一些准则(如深度一致性)来选择最符合实际情况的解。


3.EPnP:是一种高效的相机位姿求解算法,用于从已知的三维点与对应的二维图像点中估计相机的位置和姿态。相比传统的PnP方法,EPnP具有更高的计算效率和精度。
基本思想如下:

①准备数据:收集已知的三维点和对应的二维图像点。至少需要四对点对来求解相机位姿。
②归一化坐标:对于三维点,将其坐标进行归一化,使得原点到该点的距离为1。归一化的方法是将每个点的坐标除以一个参考长度。
③构建线性方程:根据相机成像模型,可以建立线性方程,将三维点的归一化坐标与对应的二维图像点之间建立关系。这些方程通常采用投影矩阵表示。
④高斯消元:将线性方程转换为一个超定线性方程组,并使用高斯消元法求解。
⑤聚焦步骤:对于每个解,通过聚焦步骤来调整相机位姿,以进一步提高精度。聚焦步骤使用非线性优化算法,如Levenberg-Marquardt算法。
⑥选择解:根据一些准则(如重投影误差),选择最符合实际情况的解作为最终的相机位姿估计。

4.ICP:通过迭代优化的方式,将一个点云或一个模型对齐到另一个点云或模型,并估计它们之间的相对位姿。 

基本步骤如下:
①数据准备:准备两个点云或模型,一个作为参考点云(或模型)A,另一个作为目标点云(或模型)B。
②初始位姿估计:估计参考点云A与目标点云B之间的初始位姿。可以使用一些启发式方法,例如使用特征匹配或其他外部传感器的信息。
③点对匹配:对于目标点云B中的每个点,通过最近邻搜索在参考点云A中找到对应的最近邻点。形成点对集合。
④点云对齐:根据点对集合,通过优化目标点云B的位姿来最小化点对之间的距离。常见的优化方法包括最小二乘法或其他非线性优化方法。
⑤终止条件:判断是否满足终止条件,例如达到最大迭代次数、位姿变化小于阈值等。如果满足条件,则停止迭代;否则,返回步骤3。
⑥输出结果:输出最终的位姿估计结果,即目标点云B相对于参考点云A的位姿变换矩阵。

思考:
1.EPNP算法为什么会更高效?
相对于传统的PnP算法,主要在计算效率上进行了改进,使得其更高效。
①线性求解:EPnP算法使用线性求解方法,将位姿估计问题转化为一个超定线性方程组的求解。相比于传统的非线性优化方法,线性求解方法更加高效。
②预计算:EPnP算法在求解前进行了一些预计算,计算出一些中间变量,以减少运算量和重复计算。这些预计算包括计算投影矩阵的伪逆和SVD分解等,可以在迭代过程中重复使用,提高了计算效率。
③迭代优化:EPnP算法采用了迭代优化的策略,通过迭代更新相机位姿的估计值,逐步优化结果。迭代过程中,EPnP算法利用雅可比矩阵来进行局部的线性近似,从而加速迭代过程。
④聚焦步骤:EPnP算法在迭代的最后阶段,通过聚焦步骤进一步提高精度。聚焦步骤使用非线性优化算法,如Levenberg-Marquardt算法,对位姿进行微调,以获得更准确的结果。

2.在特征点匹配过程中,不可避免地会遇到误匹配的情况。如果我们把错误匹配输入到PNP或ICP中,会发生怎样的情况?你能想到哪些避免误匹配的方法?

如果将误匹配输入到PNP或ICP中,可能会导致错误的位姿估计或点云对齐结果。误匹配会引入错误的对应关系,从而导致估计的位姿或对齐结果偏离真实值。
为了避免误匹配对PNP或ICP算法的影响,可以考虑以下方法:
①鲁棒特征提取和匹配:选择具有良好鲁棒性的特征提取算法和特征描述子,以减少误匹配的可能性。例如,使用SIFT、SURF或ORB等算法可以提取具有较好鲁棒性的特征点。
②外点剔除:在特征匹配过程中,可以使用外点剔除算法(如RANSAC)来排除误匹配。RANSAC能够通过假设-验证的方法,识别和排除误匹配的点对,从而提高匹配的准确性。
③姿态一致性检验:对于PNP算法,可以利用姿态一致性检验来进一步排除误匹配。在求解位姿的过程中,对于每个点对,可以根据估计的位姿计算其预测的二维坐标,并与实际观测到的二维坐标进行比较。如果差异超过一定阈值,可以将其视为误匹配。
④重投影误差筛选:对于ICP算法,可以使用重投影误差来筛选误匹配。在每次迭代中,通过将目标点云投影到参考点云的坐标系下,并计算其与对应点的距离,可以排除误匹配的点对。
⑤上下文信息:利用上下文信息可以帮助减少误匹配的可能性。例如,在SLAM中,可以利用连续帧之间的时序关系、几何约束和运动模型等信息来进行匹配和剔除误匹配。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值