镜头畸变模型与校正模型

Lens distortion model vs correction model

lens model in OpenCV是一种失真模型,它将理想位置扭曲到相应的真实(失真)位置:

其中 r^2 = x_distorted^2 + y_distorted^2 在 归一化 图像坐标中(为简单起见省略了切向失真)。这也可以在 Z. Zhang 中找到:"A Flexible New Technique for Camera Calibration," TPAMI 2000,也可以在 Bouguet 的 "Camera Calibration Toolbox for Matlab" 中找到。

另一方面,Bradski 和 Kaehler:"Learning OpenCV" 在 p.376 中介绍了作为 校正模型 的镜头模型,它将扭曲的位置校正到理想位置:

其中 r'^2 = x_corrected^2 + y_corrected^2 在归一化图像坐标中。 Hartley 和 Zisserman:"Multiple View Geometry in Computer Vision" 也描述了这个模型。

我了解校正模型和失真模型在实践中各有利弊。例如,前者使检测到的特征点位置的校正变得容易,而后者使整个图像的不失真变得简单。

我的问题是,为什么它们共享相同的多项式表达式,而它们应该是彼此的倒数?我可以找到 this document 评估 可逆性 ,但我不清楚它的理论背景。

感谢您的帮助。

我认为简短的回答是:它们只是不同的模型,所以它们不应该是彼此的倒数。就像你已经写过的那样,每个都有自己的优点和缺点。

至于可逆性,这取决于多项式的阶数。二阶(二次)多项式很容易反转。四阶需要更多的工作,但仍然可以分析倒置。但是一旦你添加了一个 6 阶项,你可能不得不求助于数值方法来求逆,因为 5th-order or higher polynomial 在一般情况下不是解析可逆的。

根据泰勒展开式,世界上每一个公式都可以写成c0 + c1*x + c2*x^2 + c3*x^3 + c4*x^4... 目标只是发现常量。 在我们的特定情况下,表达式必须在 x 和 -x(偶数函数)中对称,因此 x、x^3、x^5、x^7 中的常数等于零。