2012-07-20 90 views
2

有了您的幫助,我已經能夠使用喲向CvPosit估計照相機姿勢(用這個鏈接http://www.aforgenet.com/articles/posit/)。我正在使用MATLAB代碼。姿態估計

現在我期待,以驗證通過對圖像座標投影3D點構成。具體內容如下:

  1. 比方說,在多維數據集形象加分和世界的要點是:

    World Points=[28 28 -28;-28 28 -28;28 -28 -28, 28 28 28] 
    Image_Points=[-4 29;-180 86;-5 -102;76 137]; 
    
  2. 得到的姿勢是:

    Pose =[0.896 0.0101 0.4439 -13.9708;-0.3031 0.7127 0.6326 13.7039;-0.3100 -0.701 0.6416 164.5663;0 0 0 1]; 
    

    我用640焦距在我的例子。現在從這個姿勢開始,我想要使用3D點並將其投影回來以獲得2D圖像點。理想情況下,我應該得到同樣的觀點。但我無法得到它。我使用MATLAB中的下列方式:

  3. 比方說P = [28;28;28;28;1] % 4 X 1 matrix for a 3D point

    P_Camera= Pose * P; 
    
    Calibration Matrix (K)=[640 0 0 0;0 640 0 0;0 0 1 0;0 0 0 1]; 
    
    Image Points= P_Camera*K;   
    

    我得到x = 15251y = 27447。我不知道我在這裏做錯了什麼。請幫助我!

回答

1

相機姿態或相機外參數由旋轉R和平移噸的。我相信你的Pose矩陣實際上是[R t; [0 0 0 1]]。要在相機座標變換的3D均勻點(4X1),你需要:

Xcam = K*[R t]*Xworld 

其中K爲3×3 camera matrix,包含攝像機內(內部)的參數。 用你的號碼打了一下,如果你將設置K作爲:

K = 

3.3202   0 -0.0229 
    0 3.3202 0.0153 
    0   0 1.0000 

你會得到一個接近的答案(這K不與F = 640的數據放進去,但它是LS解決方案與輸入點和姿勢)。 仍存在一些錯誤,但。嘗試校準您的相機和拍攝光學畸變考慮(有Matlab的here好相機校準工具箱。