3. 相机成像模型与标定参数
要让机器人“看见”并精确抓取,第一步不是写抓取程序,而是把相机成像的数学关系搞清楚。相机标定的本质,就是求解一组能把三维世界点映射到二维像素、又能反向还原的参数。本节围绕针孔模型、内参矩阵、畸变模型、外参定义以及像素坐标与物理坐标的映射关系展开,这些是后续手眼标定和抓取补偿的数学地基。
一、针孔模型:从三维点到像素的投影链
针孔模型(Pinhole Model)是最常用的理想成像模型。它假设光线从物体出发,穿过一个理想的小孔,在像平面上形成倒立的像。为便于计算,工程上通常把像平面“翻”到光心前方,得到正立的等效成像,这就是我们常用的投影几何。
整个投影过程可以拆成四步坐标变换:
- 世界坐标 → 相机坐标:通过外参(旋转 R 与平移 t)完成刚体变换。
- 相机坐标 → 归一化平面:除以深度 Z,得到 (X/Z, Y/Z)。
- 归一化平面 → 像素坐标:乘以内参矩阵 K,完成缩放与平移。
- 理想像素 → 实际像素:叠加畸变模型,得到真实成像位置。
用公式表达,一个世界点 P_w 投影到像素 p 的过程为:
p = K · [R | t] · P_w
其中:
K = [ fx 0 cx ]
[ 0 fy cy ]
[ 0 0 1 ]
这里 fx、fy 是以像素为单位的焦距,cx、cy 是主点(光轴与像平面的交点)像素坐标。它们共同构成内参矩阵 K,描述相机自身的成像特性,与相机在空间中的位置无关。
二、内参矩阵:相机的“身份证”
内参矩阵的五个参数各有明确物理含义。fx = f / dx,fy = f / dy,其中 f 是物理焦距,dx、dy 是单个像素在传感器上的物理尺寸。若像素是正方形,则 fx ≈ fy。cx、cy 通常接近图像分辨率的一半,但由于装配误差,实际主点会偏离几何中心几个到几十个像素。
以一台常见的 1280×1024 工业相机、配 8mm 镜头为例(以下为教学示例参数,非实测值):假设像元尺寸为 4.8μm,则 fx ≈ 8000/4.8 ≈ 1667 像素,fy 同理;主点约为 (640, 512)。此时内参矩阵可写为:
K ≈ [ 1667 0 640 ]
[ 0 1667 512 ]
[ 0 0 1 ]
内参一旦标定完成,在镜头焦距、光圈、对焦状态不变的前提下可长期复用。若更换镜头或调整焦距,必须重新标定。
三、畸变模型:理想与现实的差距
真实镜头并非理想针孔,尤其在广角或短焦镜头中,直线会弯曲。最常见的两类畸变是径向畸变和切向畸变。
径向畸变由镜头形状引起,表现为图像边缘向外鼓(桶形)或向内缩(枕形),用 k1、k2、k3 描述:
x_dist = x(1 + k1·r² + k2·r⁴ + k3·r⁶)
y_dist = y(1 + k1·r² + k2·r⁴ + k3·r⁶)
切向畸变由镜头与传感器不平行引起,用 p1、p2 描述:
x_dist += 2·p1·x·y + p2·(r² + 2x²)
y_dist += p1·(r² + 2y²) + 2·p2·x·y
其中 r² = x² + y²,x、y 是归一化平面坐标。标定时通常先固定 k3=0,只优化 k1、k2、p1、p2,避免过拟合。畸变系数与内参一起构成相机的完整内参集合。
四、外参:相机在世界中的位姿
外参描述相机坐标系相对于世界坐标系的刚体变换,由旋转矩阵 R(3×3)和平移向量 t(3×1)组成。它回答的是“相机装在哪里、朝哪个方向看”。
若世界点 P_w,则相机坐标 P_c = R·P_w + t。反过来,P_w = R⁻¹(P_c − t)。在机器人抓取场景中,世界坐标系常定义在标定板、工件托盘或机器人基座上。外参会随相机安装位置变化而改变,因此每次调整相机支架后都需要重新标定外参。
需要特别强调:内参和外参的参照约定必须在整个项目中保持一致。例如旋转方向采用右手定则,Z 轴指向相机前方还是后方,平移单位是毫米还是米。约定一旦切换,所有公式和代码都要同步修改,否则会出现符号错误或尺度错误。
五、像素坐标与物理坐标的映射关系
像素坐标 (u, v) 是离散的图像坐标,物理坐标是连续的世界坐标。二者之间的映射不是简单线性关系,因为深度 Z 未知时,一个像素对应空间中的一条射线,而非一个点。只有结合深度信息(如结构光、双目、已知平面约束),才能从像素反推出物理位置。
在平面抓取场景中,若工件位于已知高度的平面上,可令 Z 为常数,此时像素到物理坐标的映射退化为一个 3×3 的单应矩阵 H。标定 H 至少需要四组不共线的对应点。得到 H 后,任意像素点 (u, v) 可通过下式换算到平面物理坐标 (X, Y):
[X'] [h11 h12 h13] [u]
[Y'] = [h21 h22 h23] [v]
[W ] [h31 h32 1 ] [1]
X = X'/W, Y = Y'/W
实际标定时,常用棋盘格标定板,提取角点的像素坐标,同时已知角点在标定板上的物理间距,通过最小二乘求解 H。判断标定质量时,可观察重投影误差:把物理点用 H 投影回像素,与检测到的角点比较,误差通常应小于 0.5 像素;若超过 1 像素,说明角点提取不准或平面假设不成立。
六、标定参数的实际使用与判断
拿到标定结果后,不要只看参数数值,而要用重投影误差和实际抓取效果来验证。一个实用的检查流程是:用标定得到的 K、畸变系数和外参,把标定板上的已知物理点投影到图像,与检测到的角点比较,统计平均误差和最大误差。若平均误差在 0.2~0.5 像素、最大误差小于 1 像素,通常可满足精密抓取需求。
在抓取验证阶段,可让机器人末端携带标定针,移动到标定板上的若干已知点,记录机器人坐标与相机检测到的像素坐标,再用映射关系反算物理坐标,比较两者偏差。若偏差在 0.1~0.3mm 以内,说明标定参数可用;若偏差随位置呈规律性变化,往往提示畸变未充分校正或外参不准。
总结来说,针孔模型给出投影骨架,内参矩阵描述相机自身,畸变模型修正镜头误差,外参确定相机位姿,像素与物理坐标的映射则依赖深度约束或平面单应。这五部分共同构成相机标定的完整参数体系,也是后续手眼标定和抓取补偿的输入基础。