2014-03-06 83 views
1

如果以前曾詢問過此問題,請原諒我,但我想知道從哪裏開始實現將2D座標轉換爲3D座標的立體視覺。我試圖在3D中跟蹤像鷹眼的球。我有兩臺高速攝像機,我可以在每臺攝像機中檢測到球。我知道我需要校準攝像機,同步它們並運行一些算法來消除鏡頭失真等。但是,我不知道下一步是將2D座標轉換爲世界3D座標。與Hawkeye類似的三維三角網

是否有人知道如何執行三角測量,誰可以幫助我呢?此外,相機不會相互平行,但在不同的角度,因此我需要知道每個相機在3D座標方面的位置。

任何與此有關的幫助將受到感謝。

非常感謝

+0

看看這裏的一個小介紹:http://multimedia.ceti.gr/index.php/3d-laser-scanning-explained/它主要是指激光掃描,但三角測量的概念是相同的。 。您可能還需要檢查立體視覺資源,因爲您使用的是兩臺攝像機 – sepdek

+0

您的問題還不清楚。你在尋找三角測量過程背後的理論,還是你想在OpenCV中應用它? – JonesV

+0

我想用實際的術語(使用OpenCV或任何其他代碼或庫)知道,不僅僅是在理論上,我可以通過使用簡單的兩個攝像頭設置來找到三維球的三維位置。 –

回答

0

爲2D轉換成3D兩個校準相機,你會用這些公式: Z =焦點*基線/差異 X = Z * U /焦 Y = Z * V /聯絡

哪裏 焦點 - 相機的像素焦距 u =列-Cx,Cx_image_width/2但校準會給你更精確的值 v = -row + Cy,Cy_image_height/2 基線 - 水平距離相機 視差 - 兩張圖像中球的水平位置差異

嚴格地說,您只需要對高密度立體聲進行校正。對於稀疏的立體聲,您只需要校準。

+0

很好,謝謝。在一個小背景下,我試圖建立一個可以檢測足球的系統。如果我拿兩臺攝像機並將它們集中在目標上,它們是否必須平行,或者它們之間可以是任何角度/距離?另外,如何準確找出三角測量過程所需的相機位置? –

+0

你不需要有平行相機,但你可能會解決一些更復雜的方程組。相機分離應該足夠大,與距離相比,例如,如果相機是平行的,並且d = f * B/z,則必須確保在目標距離處有幾個像素差異。至於相機校準 - 您將需要相機的內在和外在參數來解決三角測量問題。這意味着求解針對3D點(3個未知數)的針孔攝像機方程,而您有4個方程(圖像中的2個相機x 2d座標)。 – Vlad

+0

作爲一個帖子上面說,你可以結合投影矩陣中的內在和外在參數,並使用triangulatePoints()來獲得解決方案。 – Vlad

0

我最近發現fragment of 'Learning OpenCV' book。它似乎是關於opencv背後的理論和實現的知識的一個很好的來源。儘管書中的API已經過時,但一般機制仍然是最新的。歸納起來,他們建議:

  1. 刪除失真(你已經可以做到這一點,如果你已經校準相機)
  2. 調整相機之間
  3. 查找兩個圖像相同的功能,
  4. 估算距離和角度考慮到物體在圖像上的位置,通過簡單的計算深入。
+0

本書學習OpenCV正在引領@Vlad的回答。你可以在這裏找到完整的書:[鏈接](http://www.cse.iitk.ac.in/users/vision/dipakmj/papers/OReilly%20Learning%20OpenCV.pdf) –