2011-11-11 48 views
1

我們正在使用kinect來製作增強現實應用程序。找出Kinect位於3D空間中增強現實應用程序的位置

這有一些挑戰:

scene diagram

我們將有一堆擱在平面上的物體。幸運的是,Kinect可以給我們飛機的法向量。我們需要知道在哪裏設置OpenGL相機(理想情況下,這將是Kinect所在的位置)。爲此,我們需要知道Kinect在3D空間中的位置,因爲這兩個位置應該重合。

如果您需要額外的說明,請告訴我。我意識到我的解釋可能不是那麼清楚。

回答

1

假設Kinect在原點。你還知道Kinect點(在飛機上)的距離 - 這就是Kinect給你的距離。你也知道正常。所以你所要做的就是找到平面的平面方程,把它轉換成矩陣並反轉。

給出一個點和法向量的平面方程是

n·(r-r_0) = 0 ; r_0 = 0 
n·r = 0 

我們知道R作爲

r = (0, 0, -distance_at(kinect_depth_image_width/2, kinect_depth_image_height/2)) 

現在還記得,一個平面可以表示爲

p(s,t) = r + u * s + v * t 

其中u ,v是平面的基本向量。因此,我們可以重寫這個作爲基質

u_x v_x n_x r_x 
u_y v_y n_y r_y 
u_z v_z n_z r_z 
    0 0 0 1 

u和v可以判定,通過選擇任意的「向上」和「右」的載體,我建議你使用Y =(0,1,0)和X = (1,0,0),並對已知的正常n進行更正,得到u和v。

通過反轉該矩陣,您可以將平面上的零點轉換爲kinect。