视觉测量基础:成像模型、相机标定基础、像素坐标系与世界坐标系的关系
视觉测量的本质,是从二维图像中恢复三维空间信息。无论是亚像素边缘定位、高精度尺寸测量,还是三维重建,其底层都依赖于对成像过程的数学建模。本章将系统梳理针孔成像模型、四大坐标系(世界、相机、图像、像素)的变换链路,以及相机标定的核心原理与操作流程。理解这些基础,是后续实现亚像素精度(通常要求达到 0.01~0.05 像素)的前提——因为任何标定误差或模型偏差,都会在亚像素插值阶段被放大。
核心原理:针孔成像模型与四大坐标系变换链路
视觉测量的数学起点是针孔成像模型。该模型假设光线沿直线传播,空间点经过光心投影到像平面上。虽然真实镜头存在畸变和有限孔径,但针孔模型提供了简洁的线性映射框架,畸变作为非线性修正项叠加其上。整个成像链路可分解为四个坐标系的依次变换:
- 世界坐标系 → 相机坐标系:通过旋转矩阵 R(3×3)和平移向量 t(3×1)描述刚体变换。该变换不改变物体形状,只改变观察视角。
- 相机坐标系 → 图像坐标系:利用焦距 f 进行透视投影。设相机坐标系下点 (Xc, Yc, Zc),则图像物理坐标 x = f·Xc/Zc,y = f·Yc/Zc。这里 Zc 必须大于 0,否则点位于相机后方。
- 图像坐标系 → 像素坐标系:将物理单位(mm)离散化为像素单位。像素坐标 u = x/dx + u₀,v = y/dy + v₀,其中 dx、dy 为单像素物理尺寸, (u₀, v₀) 为主点坐标(光轴与像平面的交点)。
将上述三步合并,可得到完整的投影方程(齐次坐标形式):
Zc · [u, v, 1]ᵀ = K · [R | t] · [Xw, Yw, Zw, 1]ᵀ
其中 K 为内参矩阵,包含 fx、fy(以像素为单位的焦距)、u₀、v₀;[R|t] 为外参矩阵。内参描述相机自身光学特性,外参描述相机在世界空间中的位姿。亚像素测量中,内参的准确性直接影响边缘位置的映射精度——例如 fx 偏差 0.1%,在图像边缘(距主点 1000 像素)处就会产生约 1 像素的坐标误差,完全淹没亚像素插值的收益。
判断方法:相机标定的操作流程与精度验证
相机标定的目标是求解内参矩阵 K、畸变系数(径向 k₁, k₂, k₃ 和切向 p₁, p₂)以及每幅标定图像的外参。标准流程如下:
| 步骤 | 操作内容 | 关键参数/要求 | 常见工具 |
|---|---|---|---|
| 1. 标定板准备 | 选用高精度陶瓷或玻璃棋盘格/圆点阵 | 方格尺寸精度 ±0.001mm,平整度 < 0.01mm | Opencv calibration板 |
| 2. 图像采集 | 从不同角度拍摄 15~25 幅图像 | 覆盖视场各区域,倾角 0°~45°,光照均匀 | 工业相机 + 远心镜头 |
| 3. 角点提取 | 亚像素角点检测(如 Harris + 最小二乘拟合) | 重投影误差 < 0.05 像素 | cv2.findChessboardCorners |
| 4. 参数求解 | 先线性求解初值,再用 Levenberg-Marquardt 非线性优化 | 内参 5 个 + 畸变 5 个 + 外参 6N 个 | OpenCV calibrateCamera |
| 5. 重投影验证 | 将标定板角点反投影到图像,计算 RMS 误差 | RMS < 0.1 像素为合格 | cv2.projectPoints |
实际操作中,标定板平面度和图像数量是两大陷阱。陶瓷标定板在温度变化时可能产生微米级翘曲,直接影响角点物理坐标的准确性;而少于 10 幅图像往往导致外参解算病态,内参偏差可达 2%~5%。建议使用主动发光标定板(如 LCD 显示棋盘格)以减少环境光干扰,并采用“先粗标定、后精标定”的两步策略:先用 20 幅图像获得稳定初值,再剔除重投影误差大于 0.15 像素的异常图像,重新优化。
案例拆解:高精度 PCB 尺寸测量中的标定实战
某 3C 电子厂需要对手机主板上的金手指位置进行测量,要求精度 ±3μm,视场为 12mm × 9mm。选用 500 万像素工业相机(2448×2048),搭配 0.5× 远心镜头,理论像素当量约为 4.9μm/pixel。这意味着要达到 3μm 精度,亚像素定位必须达到 0.6 像素以上,对标定精度提出了极高要求。
初始现象:使用出厂默认内参(厂家提供)进行测量,发现同一金手指在不同视场位置测量偏差达 ±8μm,且呈现明显的径向分布规律——中心区域偏差小,边缘偏差大。
分析判断:该偏差模式高度符合镜头畸变未校正的特征。远心镜头虽然畸变较小(通常 < 0.1%),但在 12mm 视场边缘,0.1% 畸变对应 12μm 的物理偏移,远超 3μm 的允许误差。因此必须进行精确标定。
实际操作:
- 使用 3mm 间距的陶瓷棋盘格(精度 ±0.5μm),在 8 个不同倾斜角度下采集 24 幅图像。
- 采用 OpenCV 的亚像素角点提取(cornerSubPix),设置迭代终止条件为 0.001 像素。
- 标定结果:fx = 12123.45,fy = 12120.78,u₀ = 1223.1,v₀ = 1024.6,k₁ = -0.0023,k₂ = 0.0008。
- 重投影 RMS 误差为 0.032 像素,满足要求。
结果对比:重新标定后,同一金手指的测量偏差从 ±8μm 降至 ±2.1μm,且不再呈现径向分布。进一步对 50 个不同位置的测量点进行 GR&R 分析,重复性为 1.8μm,再现性为 2.3μm,均满足 CPK ≥ 1.33 的要求。
风险与代价:标定过程耗时约 40 分钟,且需要恒温环境(±0.5°C)以保证标定板尺寸稳定。此外,远心镜头的景深有限,标定板必须放置在测量平面附近,否则离焦会导致角点提取偏差。
复盘经验:对于微米级测量,不能依赖厂家标定数据,必须现场标定;标定板精度应至少高于测量精度的 5 倍;每次更换镜头或相机位置后必须重新标定。
常见误区与总结复盘
总结:成像模型与相机标定是视觉测量的“地基”。本章建立的坐标系变换框架,为后续亚像素边缘检测、灰度插值和三维重建提供了数学基础。需要特别强调的是,亚像素精度并非单纯依靠算法插值,而是建立在精确标定的物理模型之上。一个 0.01 像素的标定误差,在 1000 像素的测量范围内可能产生 10μm 的物理偏差——这往往比亚像素插值本身的误差大一个数量级。因此,在进入亚像素算法细节之前,务必确保成像模型准确、标定数据可靠。