3. 视觉基础
手眼标定的本质是求解机器人末端执行器坐标系与相机坐标系之间的空间变换关系,而这一切的前提是理解相机如何将三维世界投影为二维图像。相机成像模型描述了从世界坐标系到像素坐标系的数学映射,内参与外参则分别刻画了相机内部光学属性与外部安装位姿,畸变模型修正了镜头带来的非线性误差,标定板则为求解这些参数提供了高精度的已知特征点。本节将系统拆解这四个核心模块,并给出工程实践中的关键判断方法与常见误区。
3.1 相机成像模型:从三维世界到二维像素
相机成像模型的核心是针孔模型(Pinhole Model),它假设光线沿直线传播,通过光心投影到成像平面。实际工程中,我们通常使用四个坐标系的连续变换来描述这一过程:世界坐标系(描述物体在空间中的位置)、相机坐标系(以光心为原点,Z轴指向镜头前方)、图像坐标系(物理单位,如毫米,原点在光轴与成像平面交点)、像素坐标系(以像素为单位,原点在图像左上角)。
完整的投影过程可用齐次坐标表示为:
Zc * [u, v, 1]^T = K * [R | t] * [Xw, Yw, Zw, 1]^T
其中,K为内参矩阵,[R|t]为外参矩阵。内参矩阵K包含焦距f(以像素为单位,通常分解为fx和fy)、主点坐标(cx, cy)以及倾斜因子s(现代相机通常近似为0):
K = [[fx, s, cx],
[ 0, fy, cy],
[ 0, 0, 1]]
fx = f/dx,fy = f/dy,dx和dy分别为单个像素在x和y方向的物理尺寸。理解这一模型是标定的基础——标定的本质就是求解K、畸变系数以及每一帧图像对应的外参。
3.2 内参与外参:标定的两大核心输出
内参描述相机自身的固有属性,包括焦距、主点、像素尺寸和畸变系数。内参一旦标定完成,在相机焦距和分辨率不变的情况下通常保持稳定。外参描述相机坐标系相对于某个参考坐标系的位姿关系,由旋转矩阵R(3×3)和平移向量t(3×1)组成,共6个自由度(3个旋转角+3个平移量)。
在标定过程中,我们通常拍摄多张不同位姿的标定板图像。每张图像提供一组外参,而所有图像共享同一组内参。通过最小化重投影误差(即标定板特征点的实际像素坐标与通过模型计算出的像素坐标之间的欧氏距离),可以同时优化内参和外参。OpenCV的calibrateCamera()函数正是基于这一原理,使用Levenberg-Marquardt算法进行非线性优化。
| 参数类型 | 包含内容 | 物理意义 | 标定后稳定性 |
|---|---|---|---|
| 内参 | fx, fy, cx, cy, s | 焦距、主点、像素倾斜 | 焦距不变时保持稳定 |
| 畸变系数 | k1, k2, k3, p1, p2 | 径向畸变、切向畸变 | 镜头固定时保持稳定 |
| 外参 | R (3×3), t (3×1) | 相机相对参考坐标系的旋转和平移 | 随相机位姿变化而变化 |
3.3 畸变模型:镜头非线性的数学补偿
实际镜头并非理想针孔,存在两类主要畸变:径向畸变和切向畸变。径向畸变由镜头曲面引起,表现为图像边缘的直线弯曲,分为桶形畸变(负畸变)和枕形畸变(正畸变)。切向畸变由镜头与成像平面不平行引起,表现为图像在某个方向上被拉伸或压缩。
畸变模型通常用多项式近似:
x_distorted = x * (1 + k1*r² + k2*r⁴ + k3*r⁶) + 2*p1*x*y + p2*(r² + 2*x²)
y_distorted = y * (1 + k1*r² + k2*r⁴ + k3*r⁶) + p1*(r² + 2*y²) + 2*p2*x*y
其中r² = x² + y²,(x, y)为归一化平面坐标。k1、k2、k3为径向畸变系数,p1、p2为切向畸变系数。对于大多数工业镜头,k1和k2已足够描述畸变,k3主要用于鱼眼镜头等大畸变场景。
3.4 标定板原理:棋盘格与圆点阵列
标定板的作用是提供已知物理尺寸的精确特征点。棋盘格标定板由黑白相间的正方形组成,角点检测算法(如OpenCV的findChessboardCorners())通过图像梯度变化定位角点,精度可达亚像素级。圆点标定板由规则排列的实心圆组成,通过椭圆拟合或重心法提取圆心,对运动模糊和光照变化更鲁棒。
选择标定板时需考虑以下因素:
- 特征点数量:棋盘格角点数量为 (cols-1)×(rows-1),圆点阵列则直接使用圆心数量。建议至少使用10×7以上的格点,保证优化方程有足够约束。
- 物理尺寸精度:标定板的方格边长或圆点间距必须精确测量,误差会直接传递到焦距和位姿计算中。工业级标定板精度可达±0.01mm。
- 表面平整度:标定板必须平整,陶瓷或玻璃基底优于纸质打印。弯曲的标定板会引入系统性误差。
- 对比度与反光:黑白对比度越高越好,避免反光材质。哑光表面更适合工业环境。
3.5 标定操作流程与实战案例
一个完整的相机标定流程包括以下步骤:
- 采集图像:拍摄15-25张不同位姿的标定板图像,覆盖画面中心、边缘、倾斜、旋转等姿态。避免所有图像都处于同一平面。
- 角点/圆心提取:使用亚像素细化算法提高特征点定位精度。
- 内参初估计:使用张正友标定法(Zhang's Method)的闭式解获得初始内参。
- 非线性优化:以重投影误差最小化为目标,使用LM算法优化所有参数。
- 评估结果:检查重投影误差(通常应小于0.1像素),查看畸变系数是否在合理范围。
3.6 常见误区与复盘总结
在工程实践中,以下问题最容易导致标定失败或精度不足:
- 标定板不平整:使用纸张打印的标定板在倾斜时会产生弯曲,建议使用玻璃或陶瓷基底。
- 图像数量不足或姿态单一:少于10张图像或所有图像都正对相机,会导致内参求解病态。
- 忽略畸变校正:直接使用原始图像进行测量,边缘区域误差可达数像素。
- 标定板尺寸测量误差:使用游标卡尺测量方格边长时,0.1mm的误差在300mm工作距离下会导致约0.3mm的测量偏差。
- 光照变化:反光或阴影会导致角点检测偏移,建议使用漫射光源。