通过opencv projectPoints()使用Levenberg-Marquardt优化算法来估算校准误差

时间:2016-06-21 07:22:21

标签: opencv opencv3.0 camera-calibration levenberg-marquardt

在相机校准中,我使用了calibrateCamera()从校准图案的多个视图中查找相机参数。它确实做了两件事:

1)以闭合形式估算初始相机参数,假设镜头失真为零。

2)运行全局Levenberg-Marquardt优化算法以最小化重投影错误,这是使用projectPoints()

完成的

现在,我不只是想计算最小化重投影错误,而是计算导致它的拟合参数。目前没有可以返回无错误参数的函数。所以,我认为我会使用projectPoints()获取重新投影的图像点,然后使用重新投影的图像点和世界点再次校准并获得无错参数。问题是这不是我肯定会给我输出的东西。有谁能告诉我这是不是?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

Levenberg-Marquardt将为您提供有关模型和数据功能的最佳估计。除非输入数据没有噪声并且模型复杂度与实际模型的复杂度匹配,否则您将无法获得无错误的参数。

例如,您的模型是: x * 2 + y = z,其中x> 0并且x是整数

输入数据z = {3}

根据您的初始价值,Levenberg-Marquardt将为您提供: (x = 1,y = 1)或(x = 2,y = -1)或...没有错误

但是,如果输入的是z,则输入z相同: x * 2 = z,x> 0且x为整数

无法获得无错误的参数