3、相机成像模型:针孔模型、内参外参、畸变模型、坐标系转换与标定基础
结构光三维重建的本质,是通过主动投射编码图案并观察其在物体表面的形变,来反推物体的三维坐标。而这一切的起点,是理解相机如何将三维世界投影为二维图像。如果成像模型不准确,后续的相位解算、点云生成和拼接都将失去物理基准。本章将系统拆解针孔模型、内参与外参的物理含义、镜头畸变的数学表达,以及世界坐标到像素坐标的完整转换链路,并介绍标定的基本流程与实操要点。
3.1 针孔模型:从三维到二维的数学投影
针孔模型是相机成像的最简近似,它假设光线沿直线传播,穿过一个无限小的光心后,在像平面上形成倒立的实像。实际工程中,我们通常将像平面虚拟到光心前方,形成正立虚像,便于数学表达。设相机坐标系下某点坐标为 (Xc, Yc, Zc),其投影到图像物理坐标系 (x, y) 的关系为:
x = f · Xc / Zc
y = f · Yc / Zc
其中 f 为焦距(物理单位,如毫米)。该式表明,深度 Zc 越大,投影点越靠近主点(光轴与像平面的交点)。针孔模型是线性模型,但真实镜头存在畸变,因此需要后续的非线性校正。
3.2 内参与外参:相机的“身份”与“姿态”
内参矩阵 K 描述了相机自身的几何属性,包含焦距、主点坐标和像素尺寸信息:
K = [ fx 0 cx ]
[ 0 fy cy ]
[ 0 0 1 ]
其中 fx = f / dx,fy = f / dy,dx、dy 分别为单个像素在 x、y 方向的物理尺寸。fx、fy 的单位是像素,cx、cy 是主点的像素坐标。外参则描述相机在世界坐标系中的位置和朝向,由旋转矩阵 R(3×3)和平移向量 t(3×1)组成,将世界坐标转换为相机坐标:
[Xc, Yc, Zc]ᵀ = R · [Xw, Yw, Zw]ᵀ + t
外参是结构光系统中投影仪与相机标定的关键——投影仪可视为“逆相机”,其外参决定了投射图案在三维空间中的方向。
| 参数类型 | 符号 | 物理含义 | 维度 | 标定方式 |
|---|---|---|---|---|
| 内参-焦距 | fx, fy | 像素单位下的等效焦距 | 2 | 棋盘格标定 |
| 内参-主点 | cx, cy | 光轴与像平面交点 | 2 | 棋盘格标定 |
| 内参-畸变 | k1, k2, p1, p2, k3 | 径向与切向畸变系数 | 5 | 非线性优化 |
| 外参-旋转 | R | 世界→相机旋转矩阵 | 3(欧拉角) | PnP/标定板 |
| 外参-平移 | t | 世界→相机平移向量 | 3 | PnP/标定板 |
3.3 畸变模型:径向与切向的数学修正
真实镜头存在两类主要畸变:径向畸变(由透镜形状引起,表现为桶形或枕形)和切向畸变(由镜头与像平面不平行引起)。设理想归一化坐标为 (x, y),畸变后的坐标为 (x_dist, y_dist),则:
x_dist = x · (1 + k1·r² + k2·r⁴ + k3·r⁶) + 2·p1·x·y + p2·(r² + 2x²)
y_dist = y · (1 + k1·r² + k2·r⁴ + k3·r⁶) + p1·(r² + 2y²) + 2·p2·x·y
其中 r² = x² + y²。k1、k2、k3 为径向系数,p1、p2 为切向系数。畸变校正有两种策略:前向映射(从理想坐标计算畸变坐标)和反向映射(从畸变坐标迭代求解理想坐标)。工程中常用 OpenCV 的 cv2.undistort() 或 cv2.initUndistortRectifyMap() 生成查找表,实现实时校正。
3.4 坐标系转换:世界→相机→图像→像素的完整链路
结构光系统中,一个三维点的完整转换流程如下:
- 世界→相机:应用外参 [R|t],将 (Xw, Yw, Zw) 转换为 (Xc, Yc, Zc)。
- 相机→归一化平面:计算 x = Xc/Zc,y = Yc/Zc,得到归一化坐标。
- 畸变修正:对 (x, y) 施加径向和切向畸变,得到 (x_dist, y_dist)。
- 归一化→像素:应用内参 K,得到像素坐标 u = fx·x_dist + cx,v = fy·y_dist + cy。
在结构光三维重建中,投影仪也遵循同样的模型,只是方向相反——从像素坐标反投影出光线,与相机光线求交得到三维点。因此,投影仪的内外参标定精度直接影响重建精度。
3.5 标定基础:从棋盘格到张正友法
张正友标定法是目前最主流的相机标定方法,其核心是利用平面棋盘格的多视角图像,通过单应矩阵分解求解内参和外参。操作流程如下:
- 数据采集:打印高精度棋盘格(建议 10×7 或 12×9 内角点),贴于平面板上。采集 15~25 张不同角度、不同距离的图像,覆盖视场中心和边缘。
- 角点提取:使用
cv2.findChessboardCorners()提取亚像素级角点坐标。 - 单应矩阵计算:每张图像建立世界平面(Z=0)到像素平面的单应矩阵 H。
- 内参求解:利用多张图像的单应矩阵,通过线性方程组求解内参初值。
- 畸变估计与优化:将畸变系数加入非线性最小二乘优化(如 Levenberg-Marquardt),最小化重投影误差。
3.6 案例拆解:结构光系统中相机-投影仪联合标定
在某结构光三维扫描仪项目中,需要标定一个 1280×1024 分辨率的工业相机和一个 DLP 投影仪(分辨率 1920×1080)。初始目标是实现 0.1mm 的重建精度。系统约束为:工作距离 500mm,视场 200mm×150mm,环境光变化大。
初始现象:单独标定相机后,重建点云在边缘区域出现明显的“翘曲”和“分层”现象,平面度误差达 0.5mm。
分析判断:问题根源在于投影仪未被标定。投影仪投射的编码图案在物体表面产生形变,若投影仪内参未知,则无法准确计算投射光线方向,导致三角测量误差。
操作步骤:
- 使用张正友法分别标定相机和投影仪(投影仪通过投射棋盘格图案到平面板,由相机拍摄后反向求解)。
- 固定相机与投影仪相对位置,采集 20 组联合标定图像,求解相机-投影仪外参(R, t)。
- 将标定结果代入三角测量模型,重建标准平面(陶瓷平板),测量平面度。
- 优化:对投影仪畸变系数增加 k3 项(原模型仅 k1, k2),并将重投影误差从 0.25 像素降至 0.08 像素。
结果对比:标定后平面度误差从 0.5mm 降至 0.08mm,边缘翘曲消失。代价是标定时间从 10 分钟增加到 25 分钟(因投影仪标定需额外采集图像)。
复盘经验:投影仪标定是结构光系统的“隐藏瓶颈”。建议在系统设计阶段预留投影仪标定接口,并采用高精度陶瓷标定板(热膨胀系数低)以保证温度变化下的稳定性。
3.7 常见误区与总结复盘
| 误区 | 后果 | 正确做法 |
|---|---|---|
| 忽略畸变模型或仅用 k1 | 边缘点云扭曲 | 至少使用 k1, k2, p1, p2,广角镜头加 k3 |
| 标定板不平整 | 内参偏差,重建精度下降 | 使用玻璃/陶瓷基板,避免纸板弯曲 |
| 图像数量不足或姿态单一 | 内参病态解 | ≥15 张,覆盖多角度、多距离 |
| 将像素坐标直接用于畸变校正 | 校正结果错误 | 先归一化,再校正,再投影 |
| 忽略投影仪标定 | 三角测量误差大 | 联合标定相机-投影仪外参 |
相机成像模型是结构光三维重建的“第一性原理”。只有精确掌握内参、外参和畸变模型,才能将二维像素坐标可靠地映射为三维空间坐标。建议读者在动手搭建系统前,先完成一次完整的标定流程,并记录重投影误差、标定板姿态分布等关键指标,为后续的相位解算和点云融合打下坚实基础。