29

我正在從tsai algo進行攝像機校準。我得到了無限矩陣和外部矩陣,但是我怎樣才能從該信息中重建3D座標?如果已知外部和內部參數,從2D圖像像素獲取3D座標

enter image description here

1)我可以使用高斯消去用於查找X,Y,Z,W,然後點將X/W,Y/W,Z/W爲均相體系。

2)我可以使用 OpenCV documentation方法:

enter image description here

我所知uvRt,我可以計算X,Y,Z

但是,兩種方法最終都會導致不正確的結果。

我在做什麼錯?

+0

非常好的答案,請,如果這個答案有幫助,請選擇正確的 – vgonisanz

回答

25

如果你有外在參數,那麼你得到了一切。這意味着您可以從extrinsics(也被稱爲CameraPose)進行Homography。姿勢是3×4矩陣,單應是3×3矩陣,ħ定義爲

    H = K*[r1, r2, t],  //eqn 8.1, Hartley and Zisserman 

ķ作爲相機固有矩陣,R1R2是旋轉矩陣的前兩列,R; t是翻譯矢量。

然後歸一化除以t3

列發生什麼變化r3,我們不用它嗎?不是,因爲它是多餘的,因爲它是2個第一列姿勢的交叉積。

現在你有單應性,項目的要點。你的2d點是x,y。添加一個z = 1,所以他們現在是3d。項目他們如下:

 p   = [x y 1]; 
     projection = H * p;     //project 
     projnorm = projection/p(z);  //normalize 

希望這可以幫助。

+2

是否可能是因爲你寫了錯誤的列?你可能是指列(r12 r22 r32)和(r13 r23和r33)嗎? – EliteTUM

+3

我更正了列 –

+1

你不是假設這裏的姿勢是相對於z == 0嗎?你可能想指定。如果輸入的座標總是z == 0,姿勢的第三列只是多餘的。 – Hammer