校准模式说明

准确校准相机对于任何机器/计算机视觉设置的成功都至关重要。然而,有不同的模式可供选择。为了让您更容易选择,本文将介绍每种模式的主要优点。

我们在 Calib.io 上提供的校准图案选择。CharuCo、棋盘、不对称圆圈和棋盘。

图案大小

在选择校准板时,一个重要的考虑因素是它的物理尺寸。这最终与最终应用的测量视场 (FOV) 有关。这是因为相机需要聚焦在特定距离上并进行校准。改变焦距会稍微影响焦距,这会使任何先前的校准失效。即使光圈变化通常也会对校准有效性产生负面影响,这就是为什么应该避免它们。

为了准确校准,如果相机看到校准目标填满了大部分图像,则相机模型受到的约束最好。通俗地说,如果使用小型校准板,则相机参数的多种组合可以解释观察到的图像。根据经验,校准板的面积应至少为正面观察时可用像素面积的一半。

图案类型

多年来,人们已经推出了不同的模式,每种模式都有独特的特性和优势。

选择正确的类型首先要考虑您将使用哪种算法和算法实现。在Calib 的相机校准器等软件和libCalib 、OpenCV 或 MVTec Halcon 等库中,模式有一定的自由度,它们各有优缺点。

棋盘格目标

这是最流行和最常见的图案设计。棋盘角候选点通常通过首先对相机图像进行二值化并找到四边形(这些是黑色棋盘区域)来找到。过滤步骤仅保留那些符合特定尺寸标准并组织成规则网格结构(其尺寸与用户指定的尺寸相匹配)的四边形。

在对图案进行初步检测后,可以非常准确地确定角点位置。这是因为角点(数学上称为鞍点)基本上是无限小的,因此在透视变换或镜头畸变下不会产生偏差。

在 OpenCV 中,整个棋盘必须在所有图像中可见才能被检测到。这通常使得从图像的边缘获取信息变得困难。这些区域通常很适合获取信息,因为它们可以适当地约束镜头失真模型。

检测到棋盘格后,可以进行亚像素细化,以亚像素精度找到鞍点。这利用了给定角点位置周围像素的精确灰度值,其精度远高于整数像素位置允许的精度。

关于棋盘格目标的一个重要细节是,为了具有旋转不变性,行数需要为偶数,列数需要为奇数,反之亦然。例如,如果两者都是偶数,则存在 180 度旋转模糊性。在没有任何关于棋盘方向的假设的情况下,特征检测器可能会将原点置于棋盘上的两个或四个不同位置。对于单相机校准,这意味着无法优化目标几何形状,如果需要由两个或更多相机识别相同的点(用于立体校准),则这种模糊性会导致校准失败。这就是为什么我们的标准棋盘格目标都具有偶数/奇数行/列的属性的原因。

CharuCo 目标

ChArUco图案克服了传统棋盘的一些局限性。然而,其检测算法略微复杂一些。

ChArUco的主要优势在于,所有光检查区域都经过了唯一编码,并且可识别。这意味着,即使是部分遮挡或不理想的相机图像也可用于校准。例如,强环形灯可能会在校准目标(半镜面反射区域)上产生不均匀的照明,这会导致普通棋盘检测失败。使用ChArUco ,其余(良好的)鞍点检测仍可使用。鞍点定位可以像棋盘一样使用子像素检测进行细化。

对于靠近图像角落的观察,这是一个非常有用的属性。由于目标可以定位在相机只能看到其一部分的位置,因此我们可以从相机图像的边缘和角落收集信息。这通常可以非常好且稳健地确定镜头失真参数。因此,当 Calibrator、libCalib 或 OpenCV 3.x 可用时,我们强烈建议使用ChArUco目标而不是普通棋盘格目标。

除了上述好处之外,具有非重叠 id 范围的 ChArUco 目标还可用于网络校准,从而允许使用一组目标覆盖大视野。

棋盘格标记目标

这些是基于传统的棋盘格,可以使用相同的检测算法。此外,它们的中心包含三个圆圈,即使棋盘格的部分视图也可以进行绝对参考(只要在所有图像中都能看到圆圈)。因此,可以包含来自图像外围的数据,从而确保拟合的镜头模型在图像的这些部分也有效。

对于立体校准任务,棋盘格标记目标具有 ChArUco 等编码目标的所有优点,同时需要更少的像素才能实现稳健检测。因此,可以使用具有更多特征的更密集棋盘格。Calibrator和 libCalib完全支持这些模式,只需一个校准目标即可。

圆形网格

圆形网格也是一种流行且非常常见的校准目标设计,基于圆形,要么是深色背景上的白色圆圈,要么是白色背景上的深色(黑色)圆圈。在图像处理术语中,圆圈可以在图像中被检测为“斑点”。可以对这些二进制斑点区域应用一些简单条件,例如面积、圆度、凸度等,以去除不良特征候选。

找到合适的候选者后,再次使用特征的规则结构来识别和过滤模式。由于可以使用圆周上的所有像素,因此可以非常准确地确定圆,从而降低图像噪声的影响。但是,与棋盘中的鞍点相反,圆在相机透视下被成像为椭圆。可以通过图像校正来解释这种透视。但是,此外,未知的镜头失真意味着圆不会成像为完美的椭圆,这会增加一个小的偏差。但是,我们可以将失真模型视为局部线性(遵循透视变换/单应性),因此在大多数镜头中这种误差非常小。

对于高精度校准,需要考虑椭圆形状和投影圆心,尤其是使用短焦距镜头和大圆时。OpenCV 不考虑这两个因素,默认情况下使用简单的斑点检测器来查找椭圆斑点的质心。Calib Camera Calibrator确实考虑了这些影响,并且能够为圆形目标产生更准确的结果。

对称和非对称圆形网格的一个重要区别是前者具有 180 度模糊性,如“棋盘”部分所述。因此,对于目标几何优化和/或立体校准,非对称网格是必需的。否则,两种类型的性能预期差异并不大。


3条评论

  • @Peter: The standard web-store targets have a dimensional tolerance of 0.1mm + 0.3mm/m (at 20°C). We can offer lithography processed targets with dimensional tolerance as low as 10um (feature to feature).

    Jakob
  • Hi,
    What accuracy are your patterns printed with?

    Peter
  • Thank you. This helped me understand what is actually happening in calibration, and why my true 8×8 chessboard is a terrible choice for calibrating stereo cameras. Maybe I’ll have better luck with an even-odd combo.

    Chris

发表评论

请注意,评论必须经过批准才能发布