2014-04-27 81 views
0

嗨,我正在寫一個程序,它從視差圖中檢索一個球的z座標。我正在使用EmguCv包裝類。目前我有很多元素工作,雖然目前還不完美,但只是需要一些調整。到目前爲止完成的步驟如下:如何從視差圖中獲取球的深度值

  1. 兩臺攝像機同時運行,每個攝像機視圖顯示在一個圖像框中。

  2. 攝像機校準是在確定棋盤格的方塊並存儲內在和外在參數的情況下進行的。

  3. 圖像糾正和不失真,以儘可能消除噪音和失真。

  4. 我在每張圖片中標識了球,並且標記了球的中心並檢索了x和y座標。

  5. 創建並顯示視差圖,並實施reprojectImageTo3D()方法以給出地圖中像素的x,y和z座標。

我目前遇到的問題是如何在視差圖中隔離球,以獲得只有x,y和特別是z座標。我已經看到從差異圖中提取單個對象的例子,例如, http://disparity.wikidot.com/,在標題「添加顏色和運動到視差貼圖」下。

有沒有一種方法可以用於識別和提取球或者是由諸如SURF或SIFT過程之類的東西進行的提取?

在此先感謝

史蒂夫

+0

您可以通過http://dsp.stackexchange.com/詢問更多的答案。 – Aybe

+0

非常感謝。我會在那裏嘗試。 – user3569032

回答

0

您需要提供大量的詳細信息,以獲得有用的答案。

例如,您是在尋找一個完全自動化的解決方案,還是可以接受一個人類操作員提供一些輸入(「提示」)?如果是後者,問題變得更容易 - 一種常見的方法是在輸入圖像中獲取一個或幾個像素的鼠標輸入(單擊),通過視差圖查找相應的深度,然後「增長」從那裏通過添加相鄰像素的擬合球體 - 您將希望以失配擬合誤差閾值開始,並隨着添加樣本數量的增加而收緊。

+0

感謝您的回覆。理想情況下,我希望它在未來變得自動化,但目前。目前我正在使用直播。我有在每個幀中已知的球的中心的像素值。這會消除使用此座標點擊鼠標的必要嗎?你的第二點正是我所期待的。我如何獲得這個中心像素的相應深度?寬鬆合適的錯誤閾值會爲我獲得這個嗎? – user3569032

+0

在OpenCV中?對於一小組離散點,請使用triangulatePoints:http://docs.opencv.org/trunk/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html#triangulatepoints。對於完整的視差圖,改爲使用reprojectImageTo3d:http://docs.opencv.org/trunk/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html#void reprojectImageTo3D(InputArray不等式,OutputArray _3dImage,InputArray Q,bool handleMissingValues,int ddepth) –