2

我正在嘗試校準投影機的kinect。我從微軟研究中閱讀了幾篇文章,介紹他們如何做到這一點。如何使用posit算法校準投影機和相機

四個點必須由深度相機和 位於投影圖像中的,在此之後,我們使用POSIT算法 [6]找到投影機的位置和取向被正確地識別兩者。這個 過程需要投影機的焦距和投影中心。

(這會給投影機的位置)

但我真的不熟悉斷定算法當然不是它是如何在這裏使用。 Posit算法的結果是平移向量和旋轉矩陣。現在我的問題是如何用於交互。

例如,如果我用kinect跟蹤一隻手,我會得到一些座標(x,y)。我怎樣才能使用所說的平移和旋轉矩陣在投影中找到相應的(x,y)座標?

+0

應該達到什麼確切的行爲?你能指定你想如何使用兩者? – 2012-02-28 19:58:03

+0

如果一個界面被投影到一個表面上,用戶能夠與所述界面進行交互。因此,手的位置應該是已知的(手的座標將在深度座標中或用kinect收集的現實世界座標)。但是爲了在投影中給出反饋,必須在投影座標中知道手的位置。這樣,如果用戶在相機圖像中觸摸投影例如(220,210)。 (x,y)處的投影可以顯示某些內容。希望能夠澄清這個想法。 – Ojtwist 2012-02-28 20:56:41

回答

1

基本上POSIT算法從至少四個非平面對應點估計物體相對於相機的位置。另一方面,投影機可以看作是相機,所以如果您確定投影圖像上真實物體的已知點,知道投影焦距,應該可以計算相對位置。

那麼你應該做的是一樣的東西:

  1. 標識放置在投影機前的一些物體上至少四個點。你可以使用kinect來計算點座標。

  2. 然後您應該在圖像座標系中以與3d點相同的順序識別投影圖像上的那些點。

  3. 比你可以使用OpenCV中的cvPosit函數來計算對象相對於相機的姿勢。

  4. 與在kinect中測量的三維空間中的某個物體相比,您可以計算應用由cvPOSIT計算的變換的圖像座標。

有可能是由算法使用的點來滿足一些特定的條件下,使 請參閱POSIT的更深層次的解釋如下: http://www.cfar.umd.edu/~daniel/daniel_papersfordownload/Pose25Lines.pdf

以下是鏈接到OpenCV的斷定相關文檔: http://opencv.willowgarage.com/documentation/camera_calibration_and_3d_reconstruction.html#posit

http://opencv.willowgarage.com/documentation/camera_calibration_and_3d_reconstruction.html#createpositobject

http://opencv.willowgarage.com/documentation/camera_calibration_and_3d_reconstruction.html#releasepositobject

步驟4澄清:從原始POSIT紙

引用: 「的POSIT算法找到座標變換對象到照相機的平移矢量和變換矩陣系統,使得它的特徵點上的下降線 的圖像點的視線「

假設我們在Kinect座標系中有三個點(kPoints),我們有Rotation(r [3] [3])和Translation(t [3]) POSIT,投影儀圖像平面的焦距,最後我們知道我們用於POSIT的第一個3D點(kOrigin)的座標。 然後我們需要將我們的要點翻譯成POSIT座標系:

kPoints[i] = kPoints[i] - kOrigin; 
kPoints[i] = Rotate(kPoints[i], r); 
kPoints[i] = kPoints[i] + t; 
imagePoint[i].x = focalLength * kPoints[i].x/kPoints[i].z 
imagePoint[i].y = focalLength * kPoints[i].y/kPoints[i].z 
+0

嗨,我現在做的是:項目4指向一個表面(這些座標是已知的)。然後我用kinect識別座標。用這8個座標我執行POSIT算法。這給了我一個翻譯矢量和旋轉矩陣。我認爲這些描述了投影機相對於相機的位置?從這一點開始。我能用旋轉矩陣和平移向量做什麼?這些是你在談論的轉變嗎?或者我錯過了一個步驟? – Ojtwist 2012-02-29 09:07:10

+0

是的,你得到的旋轉和平移就是這種轉換。假設你在三維座標系中有一些點,那麼你應該能夠應用逆變換(旋轉和平移)來獲取基於相機的座標系中這個點的座標,然後你可以將它投影到你的圖像平面上以獲得圖像座標。請注意,提供給POSIT算法的點位於座標系中,原點位於第一點,因此您可以以某種方式轉換該座標系。 – 2012-02-29 09:33:17

+0

http://opencv.willowgarage.com/wiki/Posit請看這裏的一些解釋 – 2012-02-29 09:33:49