使用 OpenCV 进行棋盘相机标定

Chessboard Camera Calibration using OpenCV

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

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

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

如有任何帮助,我们将不胜感激。谢谢。

1- 不,你用棋盘图案打印类似的东西,然后用它来校准你自己的相机。您可以在 here.

使用代码

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