2. 相机成像基础

在Halcon相机标定流程中,所有高级操作——无论是畸变校正、测量还是三维重建——都建立在对相机成像物理过程的精确数学描述之上。本章将系统梳理针孔模型、四大坐标系的转换链路以及内参外参的物理含义,为后续标定实操奠定理论基础。

2.1 针孔模型:理想成像的数学抽象

针孔模型(Pinhole Model)是相机成像最基础、最常用的近似模型。它假设光线沿直线传播,场景中某一点发出的光线通过一个无限小的“针孔”后,在后方成像平面上形成倒立的实像。实际工业相机中的镜头系统虽然复杂,但在标定与畸变校正的语境下,我们通常将镜头等效为一个理想针孔,再通过畸变系数来修正实际镜头与理想模型的偏差。

针孔模型的几何关系可以用相似三角形描述。设空间点 P(X, Y, Z) 在相机坐标系下,其成像点 p(x, y) 在物理成像平面上,焦距为 f,则有:

x = f * (X / Z)
y = f * (Y / Z)

这里 Z 是点到相机光心(投影中心)的深度。注意,针孔模型中的成像平面位于光心后方,实际图像传感器采集到的正是这个倒像。在数学处理上,我们常将成像平面对称到光心前方,以简化坐标方向,不影响几何关系。

工程提示:Halcon中使用的相机内参模型默认基于针孔模型(对于面阵相机),其内参参数 Focus(焦距)、Kappa(畸变系数,若为0则视为理想针孔)等直接对应上述公式中的物理量。理解针孔模型是理解Halcon标定结果中每个参数意义的前提。

2.2 四大坐标系及其转换链路

相机成像涉及从三维世界到二维像素的完整映射,这一过程需要依次经过四个坐标系:世界坐标系、相机坐标系、图像坐标系和像素坐标系。理解它们之间的转换关系,是标定原理的核心。

2.2.1 坐标系定义

坐标系 维度 原点与单位 用途
世界坐标系 3D (Xw, Yw, Zw) 用户自定义,物理单位(mm) 描述物体在真实场景中的位置,是标定板所在坐标系
相机坐标系 3D (Xc, Yc, Zc) 光心为原点,Zc指向相机前方,物理单位(mm) 以相机为中心描述场景,Zc即深度
图像坐标系 2D (x, y) 光轴与成像平面交点为原点,物理单位(mm) 描述成像点在物理成像平面上的位置
像素坐标系 2D (u, v) 图像左上角为原点,单位(pixel) 描述像素在图像数组中的行列位置

2.2.2 转换流程与数学表达

完整的转换链路为:世界坐标 → 相机坐标 → 图像坐标 → 像素坐标。每一步都是线性变换(除畸变外),最终可合并为一个3×4投影矩阵。

第一步:世界坐标 → 相机坐标(刚体变换)

该变换包含旋转和平移,不改变物体形状,只改变观察视角。用齐次坐标表示为:

[Xc]   [ R11 R12 R13  Tx ] [Xw]
[Yc] = [ R21 R22 R23  Ty ] [Yw]
[Zc]   [ R31 R32 R33  Tz ] [Zw]
[1 ]   [ 0   0   0    1  ] [1 ]

其中 R 为3×3旋转矩阵,T 为3×1平移向量。R 和 T 合称为相机的外参(Extrinsic Parameters),它们描述了相机在世界坐标系中的位姿。

第二步:相机坐标 → 图像坐标(透视投影)

利用针孔模型,将三维点投影到二维成像平面:

x = f * (Xc / Zc)
y = f * (Yc / Zc)

这一步将三维信息压缩为二维,深度信息 Zc 在此过程中被“除”掉,因此单目相机无法直接恢复深度。

第三步:图像坐标 → 像素坐标(仿射变换)

将物理毫米坐标转换为像素行列坐标,涉及像素尺寸和主点偏移:

u = (x / dx) + cx
v = (y / dy) + cy

其中 dx、dy 分别为每个像素在x、y方向上的物理尺寸(mm/pixel),(cx, cy) 为主点(光轴与成像平面交点)的像素坐标。将上述三步合并,可得到完整的投影方程:

Zc * [u]   [ fx  0  cx  0 ] [ R  T ] [Xw]
     [v] = [ 0  fy  cy  0 ] [ 0  1 ] [Yw]
     [1]   [ 0   0   1   0 ]          [Zw]
                                      [1 ]

其中 fx = f/dx,fy = f/dy,单位为像素。矩阵 K = [[fx, 0, cx], [0, fy, cy], [0, 0, 1]] 即为内参矩阵(Intrinsic Matrix),它包含了焦距、主点等相机内部固有属性。

Halcon中的对应关系:Halcon标定得到的相机内参 CamParam 是一个包含 Focus(焦距,对应fx/fy)、CenterRow(主点行坐标,对应cy)、CenterCol(主点列坐标,对应cx)、Kappa(畸变系数)等元素的元组。外参则通过 CalibData 中每个标定板位姿的 Pose 表示,即世界坐标到相机坐标的旋转和平移。

2.3 内参与外参的物理意义与标定目标

内参(Intrinsic Parameters)描述相机本身的几何与光学特性,与相机在世界中的位置无关。主要包括:

  • 焦距(fx, fy):单位像素,反映镜头光学放大倍数。
  • 主点(cx, cy):光轴与成像平面的交点,理想情况下位于图像中心,实际存在偏移。
  • 畸变系数(径向畸变k1, k2, k3;切向畸变p1, p2):描述镜头与理想针孔的偏差。Halcon中常用 Kappa 表示单参数除法模型,或使用多项式模型。

外参(Extrinsic Parameters)描述相机坐标系与世界坐标系的相对位姿,即旋转矩阵 R 和平移向量 T。外参随相机位置变化而变化,每次移动相机或标定板都需要重新标定外参。

标定的核心目标就是精确求解内参(以及畸变系数)和特定场景下的外参。一旦获得准确的内参,即可进行畸变校正、像素坐标与世界坐标的互转、以及三维测量等操作。

2.4 案例场景:从像素坐标反推世界坐标

在工业机器人抓取应用中,常需要将图像中目标点的像素坐标转换为机器人基座坐标系下的三维坐标。假设已完成标定,已知内参 K 和相机外参 [R|T],且目标点位于已知高度的平面上(例如传送带平面 Zw = 0),则可通过以下步骤求解:

  1. 将像素坐标 (u, v) 转换为归一化图像坐标:x_n = (u - cx) / fx,y_n = (v - cy) / fy。
  2. 在相机坐标系下,该点对应的射线方向为 (x_n, y_n, 1)。
  3. 利用外参将射线方向转换到世界坐标系,并与平面 Zw = 0 求交点,即可得到世界坐标 (Xw, Yw, 0)。

Halcon中可直接使用算子 image_points_to_world_plane 完成上述计算,其内部正是基于本章所述的坐标系转换原理。

2.5 常见误区与复盘

误区一:混淆图像坐标系与像素坐标系。图像坐标系以毫米为单位,原点在光轴与成像平面交点;像素坐标系以像素为单位,原点在图像左上角。两者相差一个平移(主点偏移)和缩放(像素尺寸)。在Halcon中,image_points_to_world_plane 的输入输出均使用像素坐标,但内部计算会先转换到图像坐标。
误区二:忽略畸变直接使用针孔模型。对于广角镜头或低精度镜头,畸变非常显著。若直接使用理想针孔模型进行测量,边缘区域误差可达数十像素。Halcon标定时必须同时求解畸变系数,并在校正时使用 change_radial_distortion_image 或 rectify_image 等算子。
误区三:外参是固定不变的。外参描述的是相机与标定板(或世界坐标系)的相对关系。一旦相机被移动、重新对焦或振动,外参即失效。在自动化产线中,建议定期重新标定外参,或使用固定安装且无振动的机械结构。
复盘建议:在动手标定前,先手写一遍从世界坐标到像素坐标的完整矩阵推导,并对照Halcon标定结果中的每个参数,确认其对应矩阵中的哪个元素。这种“参数-公式”对照练习能显著加深对内外参的理解,避免后续在畸变校正和测量应用中盲目调参。