返回

标定板与角点对应

Calibration Pattern & Corners
第二章 / 摄像机标定
参数面板

只保留会影响教学观察的操作:标定图数量、当前姿态和当前角点。

3
0
当前角点:第 1 行、第 1 列。 切换姿态图可以观察同一角点在不同拍摄角度下的投影变化。
窗口定位辅助操作
用方向键或下方 4 个按钮移动当前窗口;也可以直接点击原图或结果图跳转。
当前像素 (31, 24)1 / 48
方向
概念说明

为什么要用标定板

棋盘格角点提供了已知几何坐标和像素坐标之间的对应关系。图源:OpenCV calibration sample
任务

当我们想从一张照片反推相机参数时,必须先知道照片中某些点在真实空间里的准确位置。普通场景里的墙面、桌椅没有精确三维坐标,单靠一张照片给不出求解所需的约束。

思路

常用办法是在相机前放置几何形状已知的标定板:棋盘格利用黑白交界产生清晰角点,圆点阵列利用圆心提供稳定定位。角点检测得到像素坐标后,再和标定板上的世界坐标一一配对,就能形成求解相机参数的约束。

观察

拖动或旋转标定板,观察角点在世界坐标和像素坐标之间是否还能一一对应;切换棋盘格与圆点图案,比较哪种角点在倾斜、模糊或靠近边缘时更容易被稳定检测和编号。

继续回答“求参数需要哪些数据”

投影方程确定后,为了反求 K 和每张图的 [R,t],需要采集许多组同一角点的两种坐标: 棋盘平面上的世界坐标 M,以及照片中对应的像素坐标 m。这里重点展示这组对应关系如何构成标定输入数据。

方向键移动角点 / 在下方二维视图中点击切换角点当前角点 (31, 24)
1 / 48
空间标定关系
姿态 1 / 已启用 3 张标定图 / 当前角点 1
多姿态标定板提供多组角点对应拖动旋转滚轮缩放
已启用的标定姿态
123
蓝框:成像平面
绿框:视场落在棋盘平面
红点:棋盘世界点
绿点:图像投影点
1. object_points:棋盘提供已知世界点

棋盘格被放在Z=0平面上,格子间距已知,因此每个角点的世界坐标可由行列编号直接写出。

1 行,第 1
M=(0.0, 0.0, 0)
2. image_points:图像中的像素点

同一角点在照片中会落到一个像素位置m=(u,v)。真实标定中,它由角点检测与亚像素细化获得;为说明对应关系,当前页面使用已知参数投影生成并叠加了模拟亚像素抖动。

sm~=K[R,t]M~
成像模型保持不变,只是输入点来自标定板。
3. 点对进入参数求解

每个角点形成一组Mimi。多张不同姿态的标定图共享同一个 K,但各自有不同的 [R,t]。

M0=(0.0,0.0,0)m0=(162.88,130.36)
3 张姿态图可提供 6 条内参约束。
求解相机参数前,需要准备四类输入

标定步骤通常包括:读取多张棋盘图,检测角点,亚像素细化,再把图像角点坐标和世界物理坐标送入标定函数。

object_points

棋盘内角点的物理坐标,形如 M=(X,Y,0)。

image_points

同一角点在照片中的像素坐标,形如 m=(u,v)。

point_counts

每张有效图中的角点数量,且编号顺序必须一致。

image_size

图像宽高,用于初始化和约束相机参数求解。

当前角点如何形成一组输入数据

上方三维场景负责理解空间关系;二维视图负责核对同一角点在棋盘世界平面和图像平面中的两种坐标。

棋盘世界平面
图像中的角点
当前角点对应关系
世界坐标点
M0=(0.0,0.0,0)
棋盘格平面设为 Z=0,角点坐标由行列和格子尺寸决定。
图像坐标点
m0=(162.88,130.36)
真实标定中由 findChessboardCorners + findCornerSubPix 获得;当前页面使用已知参数投影生成以展示对应关系。
角点缺失、模糊或遮挡会怎样

真实图像中角点检测可能失败。一旦某张图缺少角点或顺序错乱,对应的 object_points 与 image_points 就无法对齐,导致可用方程数下降、标定结果不稳定。

遮挡

部分角点不可见,该图 point_counts 减少,可能不满足求解约束数。

模糊

角点定位误差增大,亚像素细化失效,重投影误差显著上升。

顺序错乱

object_points 与 image_points 的索引必须一一对应,错位会直接破坏标定方程。

为什么需要多张不同姿态的标定图

同一块棋盘以不同姿态出现,会产生不同的平面到图像映射。多张图合在一起,才能从多个 H 中稳定求出同一个 K。

约束数量
2×3=6
每张有效姿态图在张正友法中提供两条内参约束。