使用OpenCV进行棋盘相机校准

时间:2019-03-07 14:20:29

标签: python opencv camera-calibration stereo-3d

我正在尝试使用立体视觉方法来计算物体与相机的距离。但是在计算视差图之前,我必须确保已校准我的相机。

我遵循了有关相机校准的opencv python教程。他们使用棋盘来校准相机。现在我的问题是,如果要校准摄像机,是否需要手动单击各个角度的棋盘照片?还是可以使用他们提供的14张棋盘图像?

我的下一个问题(取决于上一个问题的答案)是,如果我可以使用它们的图像来校准相机,这背后的逻辑是什么?从他们的相机单击的图像如何用于校准我的相机,即获取我的相机的相机矩阵?我想在相机校准过程中获得更多的直觉。

任何帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:1)

1-不,您可以打印类似棋盘图案的东西,并用它来校准您自己的相机。您可以在here上使用代码。

2-这个过程基本上是这样的:要确定图像中像素的坐标,您需要知道两个参数(仅计算最基本的一个,目前不包括失真参数)。第一组参数是相机的内部参数(本征参数)是相机的光学中心(基本上是传感器/镜头的中心像素)和相机的焦距。相机的固有参数是固定的,除非您更改设备的某些设置或某些设置会随时间改变。第二组参数是一个位置和旋转矢量,用于描述相机在3D世界中的位置(这些是外部参数)。对于您拥有的每个示例图像,外部参数都会更改。您可以将相机校准视为一种优化过程,该过程将尝试为您提供的示例图像找到最佳参数(提供最小重投影误差的参数)。