1. 标定基础回顾:相机模型、内参外参、畸变参数、标定板设计原则

各位工程师朋友,咱们开始聊标定。说实话,标定这件事,看着简单,做起来坑不少。我见过太多项目,算法调了半天,最后发现是标定参数没给对。所以第一章,咱们先把地基打牢。

1.1 相机模型:小孔成像的数学表达

相机模型,说白了就是描述「三维世界怎么变成二维图像」的数学公式。最经典的就是小孔成像模型——光从物体反射,穿过镜头中心(光心),打在传感器上。

但实际镜头不是完美小孔,所以我们需要一个数学模型来近似。这个模型包含四个坐标系:世界坐标系、相机坐标系、图像坐标系、像素坐标系。

核心公式(齐次坐标形式):

s * [u, v, 1]^T = K * [R | t] * [Xw, Yw, Zw, 1]^T

其中:
s — 尺度因子
K — 内参矩阵
[R | t] — 外参矩阵(旋转+平移)
[Xw, Yw, Zw] — 世界坐标点
[u, v] — 像素坐标

这个公式,就是整个标定的数学根基。你调参调到最后,其实都是在调K、R、t里的数值。

1.2 内参:相机的「出厂基因」

内参矩阵K,描述的是相机内部的几何特性。它长这样:

K = [fx,  0, cx;
      0, fy, cy;
      0,  0,  1]
参数 含义 我的经验
fx, fy 焦距(像素单位) fx和fy通常接近,但别假设它们相等
cx, cy 主点坐标(光轴与传感器交点) 理想情况在图像中心,实际偏差1-2个像素正常

个人习惯:拿到新相机,我第一件事就是标定内参。别信厂家给的标称值——温度、震动、镜头拧紧程度都会影响。我曾经在产线上吃过亏,用了出厂参数,结果测量偏差0.3mm,后来重新标定就解决了。

1.3 外参:相机在空间中的「位置和姿态」

外参就是[R | t],描述相机坐标系相对于世界坐标系的旋转和平移。说白了,就是相机放在哪、朝哪看。

  • R(旋转矩阵):3x3正交矩阵,表示三个轴的旋转
  • t(平移向量):3x1向量,表示相机光心在世界坐标系中的位置

这里有个容易搞混的地方:外参是从世界坐标系到相机坐标系的变换。你标定出来的外参,其实是标定板相对于相机的位置。反过来用的时候,记得取逆。

我曾经踩过的坑:做手眼标定时,把外参的变换方向搞反了。机器人抓了三次,三次都抓空。后来检查发现,是R矩阵的转置和逆没分清。记住:标定得到的是「标定板→相机」,实际用的时候要转成「相机→标定板」。

1.4 畸变参数:镜头不是完美的

实际镜头都有畸变,主要是两种:

畸变类型 表现 数学模型
径向畸变 直线变弯,桶形/枕形 k1, k2, k3(三阶多项式)
切向畸变 镜头与传感器不平行 p1, p2

HALCON里常用的畸变模型是Division模型和Polynomial模型。我个人更推荐Division模型,参数少(只有一个k),收敛快,对大多数工业镜头够用。

HALCON标定算子中的畸变参数顺序:

* Division模型: [k]
* Polynomial模型: [k1, k2, k3, p1, p2]

你想想看,如果畸变参数没标准,图像边缘的测量误差会非常大。我做过一个项目,要求检测精度0.05mm,结果边缘畸变导致误差0.2mm——后来重新标定畸变参数,才压到0.03mm以内。

1.5 标定板设计原则:好板子是好标定的前提

标定板不是随便打印一张纸就能用的。我见过有人用A4纸打印棋盘格,结果标定出来内参飘得厉害。这里有几个硬性原则:

  1. 材质要稳定:陶瓷或玻璃基板最好,温度变化不形变。亚克力板在产线上受热会弯。
  2. 图案精度:圆点阵优于棋盘格(HALCON里calplate推荐圆点阵)。圆点中心提取精度比角点高。
  3. 尺寸选择:标定板在图像中占比30%-70%。太小了特征点不够,太大了拍不全。
  4. 反光处理:哑光表面,别用亮面。我曾经用亮面标定板,反光导致圆点检测失败,折腾了两天。

我的建议:买现成的HALCON标定板(带calplate描述文件),别自己画。HALCON的标定板有唯一ID,软件能自动识别。自己画的板子,描述文件写错一个参数,整个标定就废了。

1.6 知识体系总览

下面这张图,把本章的核心知识点串起来了。你对照着看,心里就有谱了。

标定基础核心知识体系 标定基础核心知识体系 相机标定 相机模型 内参矩阵 K 外参 [R|t] 畸变参数 小孔成像 四坐标系 fx, fy cx, cy 旋转 R 平移 t 径向畸变 切向畸变 标定板:材质稳定、图案高精度、哑光表面 标定目标:精确求解 K、[R|t]、畸变参数