《視覺SLAM十四講》學習筆記-3D->2D: PnP問題的由來

PnP問題

  • PnP爲 Perspective-n-Point的簡稱,是求解3D到2D點對的運動的方法:即給出n個3D空間點時,如何求解相機的位姿
  • 典型的PnP問題求解方式有很多種,例如P3P, 直接線性變換(DLT), EPnP(Efficient PnP), UPnP。還有非線性的Bundle Adjustment.

DLT, 直接線性變換

高空間點 P 的齊次方程爲 P = ( X , Y , Z ) ,投影到特徵點 x 1 = ( u 1 , v 1 , 1 ) ,爲求解 R t ,定義增廣矩陣 [ R | t ] :
展開等式後可得到:

s [ u 1 v 1 1 ] = [ t 1 t 2 t 3 t 4 t 5 t 6 t 7 t 8 t 9 t 10 t 11 t 12 ] [ X Y Z 1 ]

消去 s 後可得到約束:
u 1 = t 1 X + t 2 Y + t 3 Z + t 4 t 9 X + t 10 Y + t 11 Z + t 1 2     v 1 = t 5 X + t 6 Y + t 7 Z + t 8 t 9 X + t 10 Y + t 11 Z + t 1 2

假設:
t 1 = ( t 1 , t 2 , t 3 , t 4 ) ,     t 2 = ( t 5 , t 6 , t 7 , t 8 ) ,     t 3 = ( t 9 , t 10 , t 11 , t 12 )

則有:
t 1 P t 3 P u 1 = 0 , t 2 P t 3 P v 1 = 0

上式中 t 是待求的變量。易知一個特徵點可提供兩個關於 t 的約束,假若存在 N 個特徵點,則有如下方程成立:
[ P 1 0 u 1 P 1 0 P 1 v 1 P 1 P N 0 u N P N 0 P N v N P N ] [ t 1 t 2 t 3 ] = 0

觀察到 t 有12個變量,通過方程形式可知最少可以通過6對匹配點即可得到 T 的解。所以本方法又可稱爲直接線性變換法;當匹配點大於六對時,可以使用SVD等方法對超定方程求最小二乘解。

注意到DLT解出的T是由R和t兩部分構成的,因而 R 滿足 R = S O ( 3 ) ,所以對於T矩陣需要尋找一個最好的旋轉矩陣,這可以由QR分解完成,相當於把結果從矩陣空間重影到 S E ( 3 ) 流形上,轉成旋轉和平移兩部分。

P3P問題

P3P問題

首先設標記符號定義如上圖所示。其中A,B,C爲世界座標系。圖中爲3D到3D的對應點,所以是把PnP問題轉化爲ICP問題。

先利用三解形近似關係有以下三解形相似:

O a b O A B ,     O b c O B C ,     O a c O A C

考慮餘弦關係:

O A 2 + O B 2 2 O A O B cos < a , b >= A B 2 O B 2 + O C 2 2 O B O C cos < b , c >= B C 2 O A 2 + O B C 2 2 O A O C cos < a , c >= A C 2

左右兩邊同時除以 O C 2 , 令 x = O A / O C , y = O B / O C 有:
x 2 + y 2 2 x y cos < a , b >= A B 2 / O C 2 y 2 + 1 2 2 y c o s < b , c >= B C 2 / O C 2 x 2 + 1 2 2 x cos < a , c >= A C 2 / O C 2

再令 v = A B 2 / O C 2 , v = B C 2 / O C 2 O C 2 / A B 2 , w = A C 2 / O C 2 O C 2 / A B 2 ,有
相關文章
相關標籤/搜索