PnP问题解决方案学习-optDLS


参考论文:Nakano G . Globally Optimal DLS Method for PnP Problem with Cayley parameterization[C]// British Machine Vision Conference. 2015.

摘要

这篇论文提供了一种解决PnP问题的全局优化的直接最小二乘(DLS)方法,使用了( Cayley parameterization表示旋转矩阵)。首先,要得到一个没有拉格朗日乘子的优化条件,这个优化条件与旋转的表示方式无关。然后,我们证明了这个新的等式可以通过多种参数化方法求解,但是, Cayley 参数化是最有效的一种,根据实验结果。提出用Cayley 参数化的方法在保持精度的同时,与最新的方法相比,达到了近乎三倍的速度提升。

介绍

PnP问题就是在已知3D和2D匹配点的情况下,估计已标定相机的3D旋转和平移,PnP问题最少可以通过3个点求解,当匹配点数目大于等于4的时候,PnP问题变成了非线性问题,问题的解取决于点数n和点的形状。所以,考虑到实际应用,pnp算法需要具备这些特质:点数改变时任然有良好的效率,可拓展到平面和非平面的场景,全局最优避免局部最小点。

自从Lepetit等人。介绍了第一个关于点数n的线性复杂度方法EPnP,文献中提出了许多O(n)方法。EPnP实际上在计算上是有效的;但是,它不能保证最优性,并且容易收敛到局部极小值,特别是在≤5的情况下。此外,平面和非平面场景需要不同的实现。为了保证可拓展性和全局最优性,Schweighofer和Pinz以及Hmam和Kim分别提出了两种迭代凸松弛方法。他们使用半定规划(semi-definite programing SDP)的方法解决PnP问题的时间超过100毫秒/帧。尽管计算速度慢,但由于松弛控制困难,基于SDP的方法往往无法收敛到全局最优解。

为了克服计算成本问题,HeschandRoumeliotis提出了直接最小二乘法(DLS)。DLS是找到用多元多项式系统表示的一阶最优性条件(first optimality condition)的所有驻点。求解多项式系统可以用特征值分解的方法,特征值分解可以使用线性代数库有效地计算。由于Hesch方法中使用的Cayley参数化对任何180度旋转都有奇点,OPnP和UPnP采用基于四元数的参数化来避免奇异性。然而,为了提高效率,这两种方法需要一种特殊的实现来消除四元数的符号模糊性,或2次对称性(2-fold symmetry(每次旋转180°重合3次就是旋转120°四次就是旋转90°对称))。

本文提出了一种高效的、可扩展的、全局最优的基于cayley参数化的DLS方法,由于其奇异性,被认为是不适合参数化的。首先,我们得到了一个新的无拉格朗日乘子的最优性条件。对于任何类型的旋转参数化,新方程的解的数目不会改变。然后,我们证明Cayley参数化是最简洁的表示,可以用来计算避免奇异性的最优解。由于没有二次对称性,该方法可以用Kukelova的自动生成器实现,比OPnP快3倍多。

理论基础

pnp问题

这一部分就简单描述一下PnP问题,下图展示了PnP问题的基本几何模型:
f1-pnp问题
p i = [ x i , y i , z i ] T p_{i}=[x_{i},y_{i},z_{i}]^{T} pi=[xi,yi,zi]T表示3D点,让 m i = [ u i , v i , 1 ] T m_{i}=[u_{i},v_{i},1]^{T} mi=[ui,vi,1]T表示对应的图像坐标的齐次坐标,从 p i p_{i} pi m i m_{i} mi的透视投影可以表示为:
m i ∝ R p i + t , i = 1 , 2 , . . . n (1) m_{i}\propto Rp_{i}+t ,i=1,2,...n\tag{1} miRpi+t,i=1,2,...n(1)
PnP问题目标是根据已知 p i , m i p_{i},m_{i} pi,mi找到6个未知变量确定R,t,尽管公式(1)中只有3维,一对点对只能给两个约束因为尺度不确定,因此,求解R,t至少3对点对,在 n ≥ 4 n\geq4 n4的情况下PnP问题可以表示为一个非线性优化问题:
m i n R , t ∑ i = 1 n ∣ ∣ [ m i ] × ( R p i + t ) ∣ ∣ 2 s . t R T R = 1 , d e t ( R ) = 1 (2) \mathop{min} \limits_{R,t} \sum\limits_{i=1}^n {||[m_{i}]_{\times}(Rp_{i}+t)||^{2}} \tag{2} \newline s.t \quad R^{T}R =1,det(R)=1 R,tmini=1n[mi]×(Rpi+t)2s.tRTR=1,det(R)=1(2)
其中 [ ] × []_{\times} []×表示向量叉乘,等式(2)中的损失函数基于最小算术误差。
我们可以t表示为R的一个函数,因为t是线线性的,并且在(2)中没有任何约束,因此PnP问题可以重新表示为:
m i n r r T M r s . t R T R = 1 , d e t ( R ) = 1 (3) \mathop{min} \limits_{r} \quad r^{T}Mr \tag{3} \newline s.t \quad R^{T}R =1,det(R)=1 rminrTMrs.tRTR=1,det(R)=1(3)
其中 r ∈ R 9 r\in R^{9} rR9 M ∈ R 9 × 9 M\in R^{9\times9} MR9×9, M M M是从已知参数 p i , m i p_{i},m_{i} p

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值