Triangulation求解3D座標-直接線性轉換(Direct Linear Transformation-DLT)算法【轉】

Triangulation求解3D座標-直接線性轉換(Direct Linear Transformation-DLT)算法算法

http://blog.csdn.net/zzzblog/article/details/17097377優化

 

在作多視覺的3D重建的時候,當找到多幀的匹配點和對應相機姿態時,咱們須要求得的匹配點 x 和 x' 以及對應的 P 和 P’我spa

們獲得 x = PX, x' = P’X。.net

    獲得了上述的兩個等式,咱們如何求方程組求解呢?orm

    這裏咱們回到2D投影轉換來講一說,對於2D平面上的兩個對應點<x, x'>,咱們能夠找到一個單應矩陣H來創建兩者的關係x'  =blog

 Hx。H是一個 3x3 的矩陣,因此 x 和 x‘ 是齊次座標系下的2D座標,他們的數量級不同,那麼 x'  = Hx 不必定成立,但知足get

叉積關係 x' x Hx = 0。很顯然,x 和 x'io

    在同一個方向上,叉積爲0)。此時,設form

 

 
 
 
 

 

    因而, x' x Hx = 0知足方法

    

 

      因爲 ,因此咱們能夠將上式寫成 AX = 0 的形式

   若是咱們用xi'乘以第一行,yi'乘以第二行並相加,就獲得了第三行,因此只有前兩行是線性獨立的。那麼最終的A爲2X9的矩陣:

 

      齊次座標系的第三維w能夠設爲1。那麼一組匹配點能夠獲得兩個等式。

      A的解有三種:

1. 給4個匹配點能夠獲得一個 8X9 公式,且 rank(A) = 8。那麼A的null-space即爲一個解。

2. 當多於4個點的時候,咱們須要求解超定解。咱們所要的解就是A的最小奇異值對應的奇異向量。

3. 因爲h的解取決於一個係數scale,咱們能夠經過改變係數來約束h。若是咱們令h3,3爲1,那麼咱們獲得

 

     對於n個點,咱們的到一個 2nx9 的矩陣 A, h的解就是最小奇異值對應的奇異向量。

 

     那麼回到咱們的Triangulation問題上,發現兩個公式 x' = PX 和 x‘ = Hx  是很是類似的。令 x x (PX) = 0,咱們能夠獲得 AX=0 ,其中A爲

     求解的方法就和上面同樣啦。

 

     因爲我也是初學者,因此對求解 AX = 0 比較有興趣。上面說 X 的最小二乘的解爲何是SVD最小奇異值對應的奇異向量?

     對於 AX = 0 咱們感興趣的是 X 的非 0 解。若是 X 爲解那麼 kX 也是解。爲了使解惟一化。咱們加入約束 

 對A作SVD分解, 。咱們的目標是最小化,即。因爲U 和 V 裏面都是單位向量,因此

 且 ,咱們令,那麼,咱們最終優化。這裏面D是對角矩陣,對角線上存放了奇異值且從上到下依次遞減。那麼這個解就是y = (0,0,...,1)';因此 x = Vy。也就是奇異向量矩陣的最有一個向量。

相關文章
相關標籤/搜索