2017-02-21 27 views
0

根據我的理解,undistortPoints在失真圖像上獲取一組點,並計算它們的座標位於同一圖像的未失真版本上的位置。同樣,projectPoints將一組對象座標映射到相應的圖像座標。OpenCV中的undistortPoints()和projectPoints()之間的區別

但是,我不確定projectPoints是否將對象座標映射到失真圖像(即原始圖像)上的一組圖像點或未失真(直線)的圖像點?

此外,針對undistortPoints的OpenCV文檔聲明'該函數執行對projectPoints()'的反向轉換。你能解釋一下這是怎麼回事嗎?從3.2文檔

回答

1

詢價projectPoints()

項目3D點至像面。

該功能計算 三維點投影到給定的圖像平面和外部攝像機參數。

你有參數distCoeffs

如果向量是空的,零個失真係數假設。

在沒有畸變的等式爲:

projection

隨着K本徵矩陣和[R | t]外在矩陣或在對象或世界幀到相機幀變換的點的轉化。


undistortPoints()對於,您有參數R:在物體空間(3×3矩陣)

整流變換。由cv :: stereoRectify計算出的R1或R2可以在這裏傳遞。如果矩陣爲空,則使用標識轉換。

的逆相變是你計算用於2D圖像的點([u, v])在使用內部參數的歸一化幀相機([x, y, z=1])對應的3D點的操作。

隨着外在矩陣,則可以在攝像機幀得到點:

enter image description here

假設:

enter image description here

標準化相機框架通過由深度分割獲得沒有失真,圖像點是:

enter image description here

與 「逆變換」 假設沒有失真:

enter image description here