使用多个图像进行相机校准

信息处理 计算机视觉 相机 相机校准
2022-02-17 20:59:31

我正在尝试掌握相机校准的窍门。为此,我主要在youtube上观看了这个讲座:Lecture 12: Camera Model by UCF CRCV我相信我理解了主要思想:

我们主要处理将 3D 世界点与 2d 图像点相关联的问题。为此

  1. 我们采用齐次坐标(在定义的世界坐标系中)的 3D 点 W
  2. 应用变换(旋转、平移)以使相机和世界坐标系对齐
  3. 使用透视投影(来自针孔相机模型)计算图像点 I。

如果我们没有透视投影(即内在参数)并且我们没有相机在世界中的位置和方向(外在参数),我们可以通过使用具有容易找到的点的对象来计算它们(=校准)世界,识别拍摄图像中的那些点并建立一个方程组,然后我们可以使用最小二乘法求解。

我现在注意到,许多校准工具实际上需要多个图像才能可靠地校准。关于这个,我有几个问题:

  1. 我们如何关联我们可能从我们移动的同一个对象中拍摄的多个图像?我见过世界原点经常放在棋盘的角落里,但是如果你移动棋盘,这个原点就会改变。原点不必匹配,这样我们就可以计算多个图像的外部参数吗?
  2. 为什么使用多个图像更好?难道你不能用一个大棋盘来给你足够多的点来解方程组吗?
2个回答

您是对的:要校准相机,您需要 3D 世界点和 2D 图像点之间的对应关系。问题是 3D 点不能共面,因此人们正在构建 3D 校准装置,例如由棋盘制成的盒子。一张这样的钻机图像就足以校准,但这些钻机很难建造,因为你必须让飞机彼此完全成直角。

随后,Zhengyou Zhang 提出了一种算法,可以从平面图案的多个图像中进行校准,例如棋盘您仍然需要非共面点,但您可以从不同 3D 方向的平面图案的多个图像中获取它们,而不是 3D 装备的单个图像。

噪音和错误是您需要多张图像的另一个原因。您无法以无限精度检测棋盘角。所以你需要很多点,才能更可靠地估计相机参数。

所以这里是问题的答案:

  1. 这是个好问题。首先,您的校准网格应该以某种方式“编码”。例如,OpenCV 棋盘格图案是一个矩形,点从左上到右下排序。通过这种方式,您可以找到 3D 模型和 2D 点之间的精确对应关系。

对于多个视图,来源无关紧要。可以将其视为对静态校准模式进行多次拍摄并寻找最佳内在矩阵来投影所有内容。姿势(同形异义)可以变化,但内在保持不变。您将针对内在因素进行优化,然后再针对外在因素进行优化。使用关系: .

H=A[r1r2t][r1r2r3]

通过使用平面消散的事实,它仍然是平面的。您需要在您的设置中进行 3D 变化,以便的衬里在一条线上与无限远的平面相交,我们可以看到其他旋转分量是该线上的两个特定点。如果您计算第一条线与绝对二次曲线的交点,您就可以在优化中去掉位姿参数。r3

有关更多信息,请在此处查看第 2.4 节

  1. 你不能简单地使用一个大棋盘。您的设置中应该有 3D 变化,以便系统处于良好状态并且不会发生退化。但是,您可以简单地使用 3D 校准装置,并捕获单个图像(就像 Tsai 一样)。