EPnP笔记

2019-07-27  本文已影响0人  liampayne_66d0

问题描述

已知n个空间点在世界坐标系下的坐标P_i^w及其图像坐标系下的坐标u_i,所要求解的问题是如何根据空间点和图像点之间的对应关系求解旋转矩阵R和平移向量t。

EPnP基本思路

-EPnP算法将世界坐标系中的3D坐标表示为一组虚拟的控制点的加权和。对于一般情形,EPnP算法要求控制点的数目为4,且这4个控制点不能共面。通过求解4个控制点在相机坐标系下的坐标,就可以进一步求解出相机位姿

求解虚拟控制点图像坐标

Z=[Z_1^{cT},Z_2^{cT},Z_4^{cT},Z_4^{cT}]^T,Z^c_j=[fx_j^c,fy^c_j,z_j^c]^T,j=1,2,3,4,所以Z是1*12的向量

n个空间点可以得到线性方程组:
MX=0
其中X=[c_1^{cT},C_2^{cT},C_3^{cT},C_4^{cT}]^T,每个元素是控制点在摄像头坐标系下的坐标。
X=\sum^N_{i=1}\beta_iv_i
可以计算M^TM的特征向量得到v_i ,但还需要求出\beta_i
对于第i个控制点:
c_i^c=\sum^N_{k=1}\beta_kv_k^{[i]}
v_k^{[i]}是特征向量v_k的第i个3×1 sub-vector

计算相机位姿

  1. 控制点在相机坐标系下的坐标
    c_i^c=\sum^N_{k=1}\beta_kv_k^{[i]},i=1,...,4
  2. 计算3D参考点在摄像头参考坐标系下的坐标:
    p_i^c=\sum^4_{j=1}\alpha_{ij}C_j^c,i=1,...,n
  3. 计算\{P_i^w\}_{i=1,...,n}的重心P^w_0和矩阵A:
    A= \left[ \begin{matrix} p_1^{w^T}-p_0^{w^T}\\ ....\\ p_n^{w^T}-p_0^{w^T} \end{matrix} \right]
  4. 计算\{P_i^c\}_{i=1,...,n}的重心P^c_0和矩阵B:
    B= \left[ \begin{matrix} p_1^{c^T}-p_0^{c^T}\\ ....\\ p_n^{c^T}-p_0^{c^T} \end{matrix} \right]
  5. 计算H:
    H=B^TA
  6. 计算H的SVD分解:
    H=U\Sigma V^T
  7. 计算旋转R
    R=UV^T
    如果|R|<0,那么R(2,:)=-R(2,:)
  8. 计算平移t:
    t=p^c_0-Rp^w_0
上一篇下一篇

猜你喜欢

热点阅读