镜头失真模型与校正模型

时间:2016-09-23 23:56:03

标签: opencv image-processing computer-vision camera-calibration

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:“一种灵活的摄像机校准新技术”,TPAMI 2000以及Bouguet的“摄像机校准工具箱Matlab”中也有这一点。

另一方面,Bradski和Kaehler:“学习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评估 inversibility ,但其理论背景对我来说并不清楚。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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