2013-03-13 104 views
1

我有一個系統,我投影一組圖像,然後使用相機讀回投影。當有人站在投影面前時,我需要知道他們站在投影的哪一部分。我在檢測人員時沒有問題,我只需要找出將相機中檢測到的點映射回發送到投影儀的圖像的方法。映射從投影回顯示OpenCV

我嘗試使用findHomograhy(使用顯示圖像和投影圖像的角點),但生成的矩陣不會給出準確的結果。任何其他想法(或獲得findHomography工作的技巧)?

回答

1

我想從相機捕獲的圖像是相當模糊,嘈雜和扭曲,我猜你以某種方式檢測/跟蹤投影圖像的角落。

做一件重要的事情是要校準相機刪除徑向鏡頭畸變,如果您還沒有這樣做: http://docs.opencv.org/doc/tutorials/calib3d/camera_calibration/camera_calibration.html

投影機可能確實有還徑向失真,這可能也校準與您新校準的相機。儘管如此,我不知道你是否有幸找到現成的解決方案。您可能不得不涉及一些類似於相機校準的嚴重優化問題域。

上述所有問題解決後,您仍然遇到問題...,因爲您拍攝的圖像模糊且嘈雜,您會在角落跟蹤中發現錯誤。這意味着只有4分,這些錯誤在結果透視扭曲中表現得非常嚴重。點對應提取的誤差具有一定的概率分佈。如果您認爲這是正常的,在大多數情況下(除了異常值外),這只是意味着您錯誤的標準偏差太大。現在,大數定律保證你,如果你增加樣本數量,你會接近平均值,在這種情況下,正確的投影。

我想說的是,你需要更多的點對應,以對抗噪聲或更少的精確檢測。如果在投影圖像中總是/通常有一些好的功能,並且您願意花費計算能力,則可以使用功能匹配: http://docs.opencv.org/doc/tutorials/features2d/feature_description/feature_description.html

+0

這些都是很好的建議,但我遇到的問題可能是簡單。這並不是說我有辦法得到一個映射,但它不準確 - 我需要一種方法來首先獲得映射。 – Huhwha 2013-03-22 09:11:39

+0

您也可以嘗試使用一些邊緣檢測器來定位投影圖像的邊緣和/或使用特徵匹配來獲取圖像中內容的點對應關係,然後使用findHomograhy。 – Sogartar 2013-03-22 09:25:37

+0

我已經嘗試檢測投影圖像的角落,並使用這些與findHomograpy,但結果矩陣只適用於如果映射是仿射的(例如,如果投影圖像沒有旋轉或傾斜相對於它的圖像,否則它不會)。 – Huhwha 2013-03-22 10:15:27