镜头畸变模型与校正模型
Posted
技术标签:
【中文标题】镜头畸变模型与校正模型【英文标题】:Lens distortion model vs correction model 【发布时间】:2016-09-23 23:56:02 【问题描述】:lens model in OpenCV 是一种扭曲模型,它将理想位置扭曲到相应的真实(扭曲)位置:
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:“A Flexible New Technique for Camera Calibration”中找到,TPAMI 2000 以及 Bouguet 的“Camera Calibration Toolbox for Matlab”。
另一方面,Bradski 和 Kaehler:“Learning OpenCV”在第 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 在归一化图像坐标中。 Hartley 和 Zisserman:“计算机视觉中的多视图几何”也描述了这个模型。
我了解校正和失真模型在实践中各有利弊。例如,前者使检测到的特征点位置的校正变得容易,而后者使整个图像的不失真变得简单。
我的问题是,为什么它们共享相同的多项式表达式,而它们应该是彼此的逆?我可以找到this document 评估可逆性,但我不清楚它的理论背景。
感谢您的帮助。
【问题讨论】:
您可能希望提供有关这两种方法的更多详细信息,这样我们就不必搜索 5 篇论文和书籍来查找您所谈论的内容。一般来说,这两种方法都有相同的目标。它们校正相同的光学像差。因此我希望他们共享相同或非常相似的多项式 感谢您的评论。我已经添加了方程式。 【参考方案1】:我认为简短的回答是:它们只是不同的模型,所以它们不应该是彼此的倒数。就像你已经写的那样,每个都有自己的优点和缺点。
至于可逆性,这取决于多项式的阶数。二阶(二次)多项式很容易反转。 4 阶需要更多的工作,但仍然可以在分析上反转。但是,一旦您添加了一个 6 阶项,您可能不得不求助于数值方法来求逆,因为在一般情况下,5th-order or higher polynomial 在分析上是不可逆的。
【讨论】:
非常感谢您的回答。我同意它们是不同的模型,即使它们显然具有相同的结构。【参考方案2】:根据泰勒展开式,世界上每个公式都可以写成 c0 + c1*x + c2*x^2 + c3*x^3 + c4*x^4... 目标只是发现常数。 在我们的特定情况下,表达式必须在 x 和 -x(偶函数)中对称,因此 x、x^3、x^5、x^7 中的常数等于 0。
【讨论】:
以上是关于镜头畸变模型与校正模型的主要内容,如果未能解决你的问题,请参考以下文章