只保留会影响教学观察的操作:标定图数量、当前姿态和当前角点。
当我们想从一张照片反推相机参数时,必须先知道照片中某些点在真实空间里的准确位置。普通场景里的墙面、桌椅没有精确三维坐标,单靠一张照片给不出求解所需的约束。
常用办法是在相机前放置几何形状已知的标定板:棋盘格利用黑白交界产生清晰角点,圆点阵列利用圆心提供稳定定位。角点检测得到像素坐标后,再和标定板上的世界坐标一一配对,就能形成求解相机参数的约束。
拖动或旋转标定板,观察角点在世界坐标和像素坐标之间是否还能一一对应;切换棋盘格与圆点图案,比较哪种角点在倾斜、模糊或靠近边缘时更容易被稳定检测和编号。
投影方程确定后,为了反求 K 和每张图的 [R,t],需要采集许多组同一角点的两种坐标: 棋盘平面上的世界坐标 M,以及照片中对应的像素坐标 m。这里重点展示这组对应关系如何构成标定输入数据。
棋盘格被放在平面上,格子间距已知,因此每个角点的世界坐标可由行列编号直接写出。
同一角点在照片中会落到一个像素位置。真实标定中,它由角点检测与亚像素细化获得;为说明对应关系,当前页面使用已知参数投影生成并叠加了模拟亚像素抖动。
每个角点形成一组。多张不同姿态的标定图共享同一个 K,但各自有不同的 [R,t]。
标定步骤通常包括:读取多张棋盘图,检测角点,亚像素细化,再把图像角点坐标和世界物理坐标送入标定函数。
棋盘内角点的物理坐标,形如 M=(X,Y,0)。
同一角点在照片中的像素坐标,形如 m=(u,v)。
每张有效图中的角点数量,且编号顺序必须一致。
图像宽高,用于初始化和约束相机参数求解。
上方三维场景负责理解空间关系;二维视图负责核对同一角点在棋盘世界平面和图像平面中的两种坐标。
真实图像中角点检测可能失败。一旦某张图缺少角点或顺序错乱,对应的 object_points 与 image_points 就无法对齐,导致可用方程数下降、标定结果不稳定。
部分角点不可见,该图 point_counts 减少,可能不满足求解约束数。
角点定位误差增大,亚像素细化失效,重投影误差显著上升。
object_points 与 image_points 的索引必须一一对应,错位会直接破坏标定方程。
同一块棋盘以不同姿态出现,会产生不同的平面到图像映射。多张图合在一起,才能从多个 H 中稳定求出同一个 K。