openCV cameracalibration进程

时间:2015-04-10 21:06:17

标签: c++ opencv

根据http://docs.opencv.org/doc/tutorials/calib3d/camera_calibration/camera_calibration.html

“通过校准,您还可以确定相机的自然单位(像素)与真实世界单位(例如毫米)之间的关系。”

有人可以具体解释这是怎么做的吗?我想我理解由calibratecamera函数计算的重投影误差。如果我使用距离相机未知距离的图案校准相机,如何使用重投影错误然后将相机带到其他地方,并使用相机矩阵或使用校准获得的其他信息对不同未知距离的物体执行测量功能?

1 个答案:

答案 0 :(得分:0)

如果你使用一些有意义的单位(cm,mm,m而不是通常的"嘿,它是某种网格"表示)传递对象点的坐标,你会发现rvect和tvecs充满了允许您​​将过程中使用的校准图案放置在度量正确的3D空间中的信息。但这是可能的,因为有一些关于你观察到的物体的物理尺寸的先验信息,因为你要处理单眼情况。此附加信息用于在您观察的场景上施加适当的比例。获得对象的3D位置和方向的一种可能(并且非常简单)方法是使用solvePnP函数或其RANSAC驱动的版本。不确定你的申请细节,所以我会在这里停止。