校准模式说明
准确校准相机对于任何机器/计算机视觉设置的成功都至关重要。然而,有不同的模式可供选择。为了让您更容易选择,本文将介绍每种模式的主要优点。
我们在 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 度模糊性,如“棋盘”部分所述。因此,对于目标几何优化和/或立体校准,非对称网格是必需的。否则,两种类型的性能预期差异并不大。
@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).
Hi,
What accuracy are your patterns printed with?
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.