EPNP主要是利用已知的3d點,通過PCA選擇4個控制點,建立新的局部坐標系,從而將3d坐標用新的控制點表示出來。
然后,利用相機投影模型和2d點,轉換到相機坐標系中,再在相機坐標系中建立和世界坐標系同樣關系(每個點在相機坐標系和世界坐標系下控制點處的坐標一致)的4個控制點,求解出相機坐標系下的四個控制點的坐標,進而利用ICP求解pose。
一、根據3d點,找到質點,同時利用PCA,找出三個主軸方向后,求出每個3d點在四個控制點上對應αij的值。
二、利用針孔相機投影模型,將相機坐標系下的3d坐標投影到2d坐標,然后將相機坐標系下的3d坐標轉換成在相機坐標系下四個控制點下的坐標值。
注:為了求取2d點到相機坐標系內的坐標,假設相機坐標系內的坐標在相機坐標系下的四個控制點的坐標等於在世界坐標系下的四個控制點的坐標,即αij一致,這樣相當於求取四個控制點的旋轉和平移。所以,上圖的未知數就是在相機坐標系下的四個控制點的坐標值,已知的是相機內參、αij。所以是一個2n*12 *12*1的方程組。
三、對M進行SVD分解,求出相機坐標系下的四個控制點的坐標值
這里出現了一個欠約束的問題,如果匹配點是大於等於6對,則之間取V的最后一列向量,如果小於6對時,需要取V的倒數4列向量的組合作為四個控制點的坐標值。
四、針對相機坐標系下四個控制點的取值向量不同,求取βk
N=1-3的情況比較簡單,是線性方程組求解的范疇,N=4是一個欠定方程,需要利用重線性化和子集近似的思想 :
五、將求取出來的相機坐標系控制點坐標和世界坐標系控制點坐標進行高斯牛頓最小化
六、求出了相機坐標系的控制點后,利用ICP求解R,t
七、cue流程