视觉SLAM中PNP求解
PNP(Perspective-n-points)是SLAM中估計位姿的重要方法。已知條件為路標點在相機1中的相機坐標以及投影到相機2中的像素坐標,據此去估計相機1、相機2間的位姿。主要解法包括DLT、P3P、EPNP
P3P
已知A、B、C在相機1坐標系下的坐標,以及在相機2對應的像素坐標,P3P可以根據三角形相似原理計算出在相機2中的相機坐標。
隨后對相機1、相機2使用ICP算法即可求出相機間的位姿變換。
?
P3P存在的問題:
(1)只使用3對點,當匹配的點的數量大于3的時候,很難有效利用信息(RANSAC不行嗎?)。
(2)如果3D-2D點間出現誤匹配,則該算法失效。
?
DLT
DLT(direct line transform),構建路標點的世界坐標與歸一化坐標間的方程,其中[R |t]包含12個變量,一組匹配點提供2對約束。因此需要6對3D-2D匹配點。通過SVD分解進行求解。
?
EPNP
需要4對不共面的(對于共面的情況只需要3對)3D-2D匹配點,是目前最有效的PnP求解方法。
在空間中尋找4個不共面的控制點,用他們的權重之和來表示空間中的任意3D點。
??通常選取世界坐標下的四個控制點坐標為Cw=[0,0,0,1]T, [1,0,0,1]T,[0,1,0,1]T,[0,0,1,1]T。可以同時利用N個3D-2D點的匹配關系建立方程。通過計算控制點的相機坐標,線性組合出路標點的相機坐標。其中線性組合的權重通過一個誤差約束(控制點在世界坐標中、相機坐標中的歐氏距離相等)獲得。隨后使用ICP算法求解出相機間的位姿變換。
??EPNP最大的優勢為:可以同時利用N對點的匹配信息,獲得路標點的相機坐標。
??在ORB_SLAM2中,使用RANSAC+EPNP算法求解出相機間的位姿變換。大致步驟是:使用RANSAC隨機選取4組匹配點,然后使用EPNP求解相機位姿,隨后計算內點數量。保存內點數量最多的時候對應的R,t。
總結
以上是生活随笔為你收集整理的视觉SLAM中PNP求解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一箱1000m的冰红茶有多少瓶?
- 下一篇: C++负数、小数如何保存