在相机校准中,我使用 calibrateCamera() 从校准图案的多个 View 中查找相机参数。它恰恰做了两件事:
1) 假设镜头畸变为零,估计封闭形式的初始相机参数。
2) 运行全局 Levenberg-Marquardt 优化算法以最小化重投影误差,这是使用 projectPoints() 完成的
现在,我不仅要计算最小化重投影误差,还要计算导致它的拟合参数。目前没有返回无错误参数的函数。所以,我想的是我会使用 projectPoints() 来获取重新投影的图像点,然后使用重新投影的图像点和世界点再次校准并获得无误差参数。问题是这不是我确定会给我输出的东西。谁能告诉我是不是?任何帮助将不胜感激。
最佳答案
Levenberg-Marquardt 将对您的模型和数据的能力做出最佳估计。除非您的输入数据没有噪声并且您的模型复杂性与真实模型的复杂性相匹配,否则您无法获得无错误的参数。
例如,您的模型是: x * 2 + y = z, x > 0 且x为整数
输入数据 z = { 3 }
根据您的初始值,Levenberg-Marquardt 将为您提供: (x = 1, y = 1) 或 (x=2,y=-1) 或 ... 没有错误
但是,对于相同的输入 z,如果您的模型是: x * 2 = z, x > 0 且x为整数
你不可能得到没有错误的参数
关于opencv - 通过 opencv projectPoints() 使用 Levenberg-Marquardt 优化算法来估计校准误差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37937966/