1. 视觉标定基础:相机成像模型与坐标系
做机器视觉这么多年,我始终觉得标定是门槛。很多人一上来就调算法、跑模型,结果精度死活上不去——回头一看,标定就没做扎实。今天咱们先把地基打牢。
1.1 相机成像模型:小孔成像的数学化
相机成像,说白了就是小孔成像的升级版。光线从物体表面反射,穿过镜头中心(光心),投射到传感器上。这个过程在数学上可以用一个模型来描述。
我个人习惯把成像模型拆成两步:
- 刚体变换:物体从世界坐标系转到相机坐标系
- 透视投影:从三维空间投影到二维像平面
你想想看,一个三维点 (X, Y, Z) 怎么变成像素 (u, v) 的?中间经历了三次坐标变换。我刚开始做项目时,总觉得这些坐标系绕来绕去很烦,后来发现只要理清每一步的矩阵运算,其实很直观。
核心公式(齐次坐标形式):
Z_c * [u, v, 1]^T = K * [R | t] * [X_w, Y_w, Z_w, 1]^T
其中:
K —— 内参矩阵(焦距、主点、畸变)
[R | t] —— 外参矩阵(旋转 + 平移)
Z_c —— 物体在相机坐标系下的深度
1.2 四大坐标系:从世界到像素
这四个坐标系,是标定绕不开的基本功。我见过不少工程师把相机坐标系和图像坐标系搞混,结果标定出来的参数全是错的。
| 坐标系 | 符号 | 维度 | 单位 | 说明 |
|---|---|---|---|---|
| 世界坐标系 | Ow-XwYwZw | 3D | mm / m | 用户自定义,描述物体在真实空间的位置 |
| 相机坐标系 | Oc-XcYcZc | 3D | mm / m | 光心为原点,Zc 沿光轴方向 |
| 图像坐标系 | O-xy | 2D | mm | 物理单位,描述投影点在像平面的位置 |
| 像素坐标系 | O0-uv | 2D | pixel | 离散整数坐标,左上角为原点 |
嗯,这里要注意:图像坐标系和像素坐标系不是一回事。图像坐标系是连续的物理坐标(毫米),像素坐标系是离散的整数坐标(像素)。两者之间差一个缩放因子和偏移量。
我的经验: 在写标定代码时,先把四个坐标系的转换关系画在纸上。我曾经在一个项目中,因为混淆了图像坐标系和像素坐标系,导致手眼标定结果偏差了 2 个毫米。排查了整整一天才发现问题。
1.3 内参:相机的“出厂参数”
内参矩阵 K 描述了相机内部的几何特性。它包含以下参数:
K = [fx, 0, cx;
0, fy, cy;
0, 0, 1]
- fx, fy:焦距在 x、y 方向的像素当量(单位:pixel)
- cx, cy:主点坐标,即光轴与像平面的交点(单位:pixel)
为什么 fx 和 fy 可能不一样?因为传感器像素不一定是正方形。我在用工业相机时遇到过不少非正方形像素的传感器,这时候 fx ≠ fy 是正常的。
内参还包括畸变系数:
- 径向畸变:k1, k2, k3(桶形/枕形畸变)
- 切向畸变:p1, p2(镜头与传感器不平行)
避坑指南: 我曾经在一个项目中,用了默认的畸变模型(只标定 k1, k2),结果图像边缘的误差始终降不下去。后来换成三参数径向畸变模型(k1, k2, k3),精度才达标。如果你的镜头视场角较大,建议至少标定 k1, k2, k3 三个径向畸变参数。
1.4 外参:相机在空间中的“姿态”
外参描述的是相机坐标系相对于世界坐标系的位姿。它由两部分组成:
- 旋转矩阵 R:3×3 正交矩阵,描述三个轴的旋转
- 平移向量 t:3×1 向量,描述光心在世界坐标系中的位置
外参的物理意义很直观:你把相机放在哪里、朝哪个方向拍。同一个物体,换个角度拍,外参就变了。但内参不变——除非你动了镜头焦距或光圈。
我习惯用欧拉角或四元数来表示旋转,但在标定算法中,旋转矩阵更常用。为什么?因为矩阵运算方便,而且没有万向锁问题。
1.5 知识体系总览
下面这张图,是我做标定培训时必画的框架。它把本章的核心知识点串在了一起。
1.6 标定的本质:一句话总结
标定到底在干什么?说白了就是:已知一组 3D 点(世界坐标)和对应的 2D 点(像素坐标),求解相机内参和外参。
你拿一个棋盘格标定板,拍几张不同角度的照片。棋盘格的角点在世界坐标系下的坐标是已知的(比如每个格子 30mm),在图像中的像素坐标可以通过角点检测算法得到。有了这些对应关系,就能解出 K 和 [R | t]。
标定流程(简化版):
- 拍摄标定板图像(至少 10-15 张,角度要丰富)
- 提取角点亚像素坐标
- 建立 3D-2D 对应关系
- 用最小二乘法求解内参和外参
- 优化畸变系数
- 验证重投影误差(通常 < 0.1 pixel 算合格)
我的建议: 标定板不要用反光材质,最好用磨砂亚光板。我曾经用玻璃基板的标定板,结果反光导致角点检测总是飘,重投影误差死活降不到 0.1 以下。换成陶瓷基板后,一次就过了。
好了,这一章的基础概念就讲到这里。记住这四个坐标系、内参和外参的含义,后面讲张正友标定法和手眼标定时,你会回来感谢我的。