2016-05-30 24 views
1

我需要更正相機的失真,而不使用棋盤目標。我有一個矩形對象的快照。爲此,我首先在圖像上找到了一些矩形對象的點。因此,我有圖像中的實物點和物點輪廓點的座標。這所描繪的形象在這裏: https://yadi.sk/i/PgPYJvAQs8YwQ https://drive.google.com/file/d/0B1uajFxXL5MUMnFiVjVjbF8tTVE/view不用棋盤,按物體和輪廓點去除相機失真

我怎麼能繼續在JavaCV或OpenCV的?

+0

您的谷歌驅動器文件不共享。 –

+0

對不起,我修好了。 – FedorM

+1

爲什麼你不能只使用校準模式?你的相機是否在月球上,因此你無法到達它?這沒有意義。 – Piglet

回答

0

您可以嘗試在opencv中使用findHomography函數,該函數使用RANSAC來說明異常值並獲得圖像轉換的初始估計值。

Mat h = findHomography(distorted_src,undistort_dst); 
warpPerspective(im_src, im_undistort, h, size); 
+0

如果我正確地理解你 - 這種方法讓我糾正我的圖像上的透視傳播。但是我需要在這個圖像上正確的鏡筒失真。 (透視校正已經完成,並且矩形對象的邊正確地繪製在結果圖像上並且該對象位於中心位置) – FedorM

0

的幾點:

  1. 你所選擇的相應的扭曲/在你的榜樣圖像畸變的點是錯誤的。既然你只對桶(又名放射狀)失真感興趣,匹配的點應該在相同的半徑上。
  2. 如果你的對應關係是確切的,這意味着你可以識別每個失真點的未失真版本,並且知道它們的未失真座標,那麼問題與使用「棋盤」模式沒有什麼不同:你只是將它作爲一個標準非線性最小二乘問題
  3. 如果對應關係不準確,則可以強加的唯一約束條件是直線必須是直的。此方法的主要參考是https://hal.inria.fr/inria-00267247/document