ChArUco 标定板是目前计算机视觉、工业相机内参标定、双目三维测距以及机械臂“眼在手上/手外(Hand-Eye)”标定领域的主流首选工具。它将 Aruco 编码块嵌入到传统的黑白棋盘格中,算法通过 Aruco 码块实现快速空间定位,并进一步提取黑白交界处的棋盘格内角点,从而实现亚像素级(Sub-pixel)的几何精度校准。
第一步:环境部署与放置
1.确保绝对平整:请将 ChArUco 标定板固定在刚性、高平整度的基底上(如高精度光学玻璃、大理石或铝蜂窝板)。任何微小的物理翘曲都会直接导致相机畸变参数标定失败或产生误差。
2.光源与避光反光:确保整个标定板表面受光均匀。避免强烈的点光源(如直射聚光灯)在标定板表面形成局部镜面反光(Glint),否则会导致局部黑白对比度饱和,使算法无法提取角点。
3.摆放灵活性:由于 ChArUco 具有强大的抗遮挡能力,标定板不需要完全呈现在画面中。只要相机能看到部分完整的棋盘格以及至少数个对应的 Aruco 码块,系统依然能够精准识别。
第二步:参数配置
在将图像输入 OpenCV 或工业标定软件前,必须记录并正确输入以下标定板核心物理参数(定制产品均会在出厂标签上注明):
1.棋盘格数量 (Grid Dimensions):标定板在水平和垂直方向上的黑白方块数量(例如:Squares X = 5, Squares Y = 7)。
2.棋盘格边长 (Square Size):黑白方块的绝对物理边长(单位通常为米 \(m\) 或毫米 \(mm\))。
3.Aruco 码块边长 (Marker Size):内嵌的 Aruco 编码方块的绝对物理边长。
4.编码字典 (Dictionary):所使用的 Aruco 编码库类型(如 DICT_4X4_50、DICT_6X6_250 等)。
第三步:算法识别与图像采集
在标准的计算机视觉系统(如 OpenCV / Python)中,标定操作通常包含以下流程:
1.多角度图像采集:
1.将标定板置于相机前,分别在不同的距离、角度(倾斜)、俯仰方位拍摄多张照片(通常推荐 15-25 张)。
2.进阶技巧:充分利用 ChArUco 的抗遮挡特性,将标定板推至画面的四个角落和最边缘处(允许部分板子出画)。这样能让算法完美捕捉到镜头边缘处的严重畸变,这是传统棋盘格无法做到的。
2.Aruco 码块检测:调用函数(如 cv2.aruco.detectMarkers())首先找出视野内所有可见的 Aruco 码及其中间坐标。
3.内角点重构(亚像素级):调用 ChArUco 专用插值函数(如 cv2.aruco.interpolateCornersCharuco()),系统会根据已知的 Aruco 位置,精准锁定并提取出周围黑白棋盘格交界处的亚像素级内角点。
第四步:计算标定结果与应用 (Calibration & Application)
相机内参标定:调用标定函数(如 cv2.aruco.calibrateCameraCharuco()),系统会自动计算出相机的内参矩阵(焦距 \(f_x, f_y\)、主点 \(c_x, c_y\))和畸变系数(径向与切向畸变)。
软件一键校正:将计算出的标定参数输入图像处理软件中,即可将原本带有“大饼脸/鱼眼”畸变的原图,一键校正为绝对横平竖直的标准俯视图。 |