3、相机成像模型:针孔模型、内参外参、畸变模型、坐标系转换与标定基础

结构光三维重建的本质,是通过主动投射编码图案并观察其在物体表面的形变,来反推物体的三维坐标。而这一切的起点,是理解相机如何将三维世界投影为二维图像。如果成像模型不准确,后续的相位解算、点云生成和拼接都将失去物理基准。本章将系统拆解针孔模型、内参与外参的物理含义、镜头畸变的数学表达,以及世界坐标到像素坐标的完整转换链路,并介绍标定的基本流程与实操要点。

相机成像模型与坐标系转换链路 世界坐标系 (Xw, Yw, Zw) 相机坐标系 (Xc, Yc, Zc) 图像坐标系 (x, y) 物理单位 像素坐标系 (u, v) 像素单位 外参 R,t 针孔投影 内参 K + 畸变 镜头畸变模型 径向畸变: k₁, k₂, k₃ 切向畸变: p₁, p₂ 畸变校正: 先校正再投影 或先投影再校正(迭代) 标定基础流程 ① 采集棋盘格/圆点标定板图像(≥15张,多角度) ② 角点/圆心提取 → ③ 求解单应矩阵 → ④ 分解内参/外参 核心公式: Zc · [u, v, 1]ᵀ = K · [R|t] · [Xw, Yw, Zw, 1]ᵀ

3.1 针孔模型:从三维到二维的数学投影

针孔模型是相机成像的最简近似,它假设光线沿直线传播,穿过一个无限小的光心后,在像平面上形成倒立的实像。实际工程中,我们通常将像平面虚拟到光心前方,形成正立虚像,便于数学表达。设相机坐标系下某点坐标为 (Xc, Yc, Zc),其投影到图像物理坐标系 (x, y) 的关系为:

x = f · Xc / Zc
y = f · Yc / Zc

其中 f 为焦距(物理单位,如毫米)。该式表明,深度 Zc 越大,投影点越靠近主点(光轴与像平面的交点)。针孔模型是线性模型,但真实镜头存在畸变,因此需要后续的非线性校正。

核心要点:针孔模型是理想化的线性投影,它建立了相机坐标系到图像坐标系的映射。实际系统中,主点坐标 (cx, cy) 通常不在图像正中心,且像素在 x/y 方向上的物理尺寸可能不同,因此需要引入内参矩阵 K 来统一表达。

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() 生成查找表,实现实时校正。

常见误区:不要将畸变系数直接用于像素坐标。畸变模型定义在归一化平面(焦距为1的虚拟平面)上,必须先通过内参将像素坐标转换为归一化坐标,再进行畸变校正,最后重新投影回像素坐标。顺序颠倒会导致校正结果发散或产生不可预测的扭曲。

3.4 坐标系转换:世界→相机→图像→像素的完整链路

结构光系统中,一个三维点的完整转换流程如下:

  1. 世界→相机:应用外参 [R|t],将 (Xw, Yw, Zw) 转换为 (Xc, Yc, Zc)。
  2. 相机→归一化平面:计算 x = Xc/Zc,y = Yc/Zc,得到归一化坐标。
  3. 畸变修正:对 (x, y) 施加径向和切向畸变,得到 (x_dist, y_dist)。
  4. 归一化→像素:应用内参 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),最小化重投影误差。
实操建议:标定板应保持平整,避免弯曲;采集时让棋盘格占据画面 20%~80% 的面积,并确保不同图像中棋盘格的姿态差异足够大(旋转角度 0°~45°,倾斜角 0°~30°)。重投影误差应控制在 0.1 像素以内,若超过 0.3 像素,需检查角点提取精度或剔除异常图像。

3.6 案例拆解:结构光系统中相机-投影仪联合标定

在某结构光三维扫描仪项目中,需要标定一个 1280×1024 分辨率的工业相机和一个 DLP 投影仪(分辨率 1920×1080)。初始目标是实现 0.1mm 的重建精度。系统约束为:工作距离 500mm,视场 200mm×150mm,环境光变化大。

初始现象:单独标定相机后,重建点云在边缘区域出现明显的“翘曲”和“分层”现象,平面度误差达 0.5mm。

分析判断:问题根源在于投影仪未被标定。投影仪投射的编码图案在物体表面产生形变,若投影仪内参未知,则无法准确计算投射光线方向,导致三角测量误差。

操作步骤:

  1. 使用张正友法分别标定相机和投影仪(投影仪通过投射棋盘格图案到平面板,由相机拍摄后反向求解)。
  2. 固定相机与投影仪相对位置,采集 20 组联合标定图像,求解相机-投影仪外参(R, t)。
  3. 将标定结果代入三角测量模型,重建标准平面(陶瓷平板),测量平面度。
  4. 优化:对投影仪畸变系数增加 k3 项(原模型仅 k1, k2),并将重投影误差从 0.25 像素降至 0.08 像素。

结果对比:标定后平面度误差从 0.5mm 降至 0.08mm,边缘翘曲消失。代价是标定时间从 10 分钟增加到 25 分钟(因投影仪标定需额外采集图像)。

复盘经验:投影仪标定是结构光系统的“隐藏瓶颈”。建议在系统设计阶段预留投影仪标定接口,并采用高精度陶瓷标定板(热膨胀系数低)以保证温度变化下的稳定性。

3.7 常见误区与总结复盘

误区 后果 正确做法
忽略畸变模型或仅用 k1 边缘点云扭曲 至少使用 k1, k2, p1, p2,广角镜头加 k3
标定板不平整 内参偏差,重建精度下降 使用玻璃/陶瓷基板,避免纸板弯曲
图像数量不足或姿态单一 内参病态解 ≥15 张,覆盖多角度、多距离
将像素坐标直接用于畸变校正 校正结果错误 先归一化,再校正,再投影
忽略投影仪标定 三角测量误差大 联合标定相机-投影仪外参

相机成像模型是结构光三维重建的“第一性原理”。只有精确掌握内参、外参和畸变模型,才能将二维像素坐标可靠地映射为三维空间坐标。建议读者在动手搭建系统前,先完成一次完整的标定流程,并记录重投影误差、标定板姿态分布等关键指标,为后续的相位解算和点云融合打下坚实基础。