1

lens model in OpenCV是一種的失真模型歪曲到對應的真實(失真的)位置的理想位置是:鏡頭失真模型VS修正模型

  • x_corrected = x_distorted(1 + K_1 * R^2 + K_2 * R^4 + ...),
  • y_corrected = y_distorted(1 + K_1 * R^2 + K_2 * R^4 + ...),

其中r^2 = x_distorted^2 + y_distorted^2在標準化圖像座標(爲簡單起見,省略了切向失真)。這也可以在Z. Zhang中找到:「一種靈活的攝像機標定新技術」,TPAMI 2000以及Bouguet的「Camera Calibration Toolbox for Matlab」。

在另一方面,Bradski和Kaehler:「學習的OpenCV」在p.376介紹了透鏡模型作爲校正扭曲的位置與理想位置的修正模型

  • x_distorted = x_corrected (1 + k'_1 * r'^ 2 + k'_2 * r'^ 4 + ...),
  • y_distorted = y_corrected(1 + k'_1 * r'^ 2 + k'_2 * r'^4 + ...),

其中r'^ 2 = x_corrected^2 + y_corrected^2歸一化圖像c oordinate。 Hartley和Zisserman:「計算機視覺中的多視圖幾何」也描述了這種模型。

我知道修正和失真模型在實踐中都有優點和缺點。例如,前者使得檢測到的特徵點位置的校正變得容易,而後者使整個圖像的失真直接簡單。

我的問題是,爲什麼他們共享相同的多項式表達式,而他們應該是彼此相反?我可以找到this document評估不可逆性,但其理論背景並不清楚。

謝謝你的幫助。

+1

您可能想要提供兩種方法的更多詳細信息,因此我們不必搜索5篇論文和書籍以瞭解您正在談論的內容。一般而言,兩種方法都有相同的目標。他們糾正相同的光學像差。因此我期望他們能夠分享相同或非常相似的多項式 – Piglet

+0

謝謝您的評論。我已經添加了方程。 – demachi

回答

1

我認爲簡短的答案是:他們只是不同的模型,所以他們不應該是彼此的逆。就像你已經寫過的一樣,每個人都有自己的優點和缺點。

至於不可逆性,這取決於多項式的階數。二階(二次)多項式很容易倒置。四階需要更多的工作,但仍然可以通過分析來反轉。但是,當你添加一個6階項時,你可能不得不求助於數值方法來找到反函數,因爲在一般情況下5th-order or higher polynomial不是分析可逆的。

+0

非常感謝你的回答。我同意他們是不同的模型,儘管它們顯然具有相同的結構。 – demachi