1. 标定基础认知:什么是四线扫相机标定、标定的核心目的、标定在视觉系统中的地位
1.1 到底什么是四线扫相机标定?
先别急着看公式。咱们先聊聊,标定到底在干什么。
四线扫相机,说白了就是四个线阵相机拼在一起干活。每个相机拍一条线,四条线合成一张完整的图像。但问题来了——这四个相机装上去的时候,不可能完全对齐。角度差一点、高度偏一点,拍出来的四条线就对不上了。
标定,就是给这四个相机“统一坐标系”的过程。
我个人的理解更直白:标定就是告诉软件——“每个像素点,对应真实世界中的哪个位置”。对于四线扫来说,还要额外解决四个相机之间的拼接关系。
一句话总结:四线扫相机标定 = 单相机内参标定 + 多相机外参标定 + 线阵畸变校正 + 四线拼接对齐。
嗯,这里要注意:线阵相机的标定和面阵相机不一样。面阵相机一次拍一个面,线阵相机一次拍一条线。所以它的标定板、标定算法、数学模型都有区别。我刚开始做线阵标定时,就拿着面阵那套往上套,结果折腾了两天没搞定……后来才明白,线阵的模型是“一维成像 + 运动补偿”,不是简单的二维映射。
1.2 标定的核心目的是什么?
你可能会问:标定到底解决了什么问题?我直接装上去用不行吗?
不行。真的不行。
我遇到过不止一个项目,客户说“我们相机装好了,你来看看为什么图像是歪的”。到现场一看,四个相机的图像拼起来,接缝处错位了十几个像素。这就是没标定或者标定没做好的典型后果。
标定的核心目的,我归纳为四点:
| 目的 | 说明 | 不标定的后果 |
|---|---|---|
| 消除畸变 | 线阵镜头也有畸变,尤其是广角或大视野场景 | 图像边缘弯曲,测量不准 |
| 统一坐标系 | 四个相机各自的世界坐标映射到同一个参考系 | 拼接错位,无法合成完整图像 |
| 像素当量标定 | 确定每个像素对应多少毫米(或微米) | 测量值全是像素数,没法换算成实际尺寸 |
| 运动方向校准 | 线阵相机依赖运动,标定要补偿运动方向与相机轴线的夹角 | 图像拉伸或压缩,比例失真 |
说白了,标定就是给视觉系统装上一把“尺子”。没有这把尺子,你看到的图像再清晰,也只是个好看的图片,不是可测量的数据。
我的经验:标定精度直接决定了后续测量精度的上限。你算法写得再好,标定误差0.1个像素,最终测量精度就不可能超过这个数。所以,标定是“天花板”,不是“地板”。
1.3 标定在视觉系统中的地位
这个问题,我想用一个图来说明。
从这张图你能看出来:标定在最底层。它不直接参与检测,但所有检测都依赖它。
我举个例子你就明白了。假设你要测一个零件的宽度,精度要求0.01mm。如果标定给出的像素当量是0.02mm/pixel,那你的测量分辨率就只有0.02mm,永远达不到0.01mm的要求。这就是标定决定了系统能力的上限。
再比如四线拼接。四个相机各自拍到的图像,如果标定没做好,接缝处就会出现错位。错位1个像素,可能还能忍;错位5个像素,检测算法就会把接缝误判为缺陷。我有个项目就是这样——客户一直抱怨误检率高,最后发现是标定参数过期了,重新标定后误检率从8%降到了0.3%。
避坑指南:标定不是一次性工作。环境温度变化、机械振动、镜头松动,都会导致标定参数漂移。我曾经遇到一个案例,标定完用了三个月,突然精度下降。查到最后,是产线温度从20°C升到了35°C,镜头热膨胀导致畸变参数变了。所以,定期复标是必须的。
1.4 标定的输入与输出
搞清楚标定是什么、为什么、有什么用之后,咱们再看看标定具体要做什么。
| 项目 | 内容 |
|---|---|
| 输入 | 标定板图像(通常是高精度陶瓷板或玻璃板)、相机参数(像元尺寸、焦距等)、运动机构参数(编码器分辨率、运动方向等) |
| 输出 | 内参矩阵(焦距、主点、畸变系数)、外参矩阵(旋转矩阵、平移向量)、像素当量(mm/pixel)、拼接偏移量(Δx, Δy, Δθ) |
| 工具 | 标定板、标定软件(Halcon、OpenCV、自研算法)、运动控制平台 |
这里我想多说一句:标定板的选择很关键。便宜的陶瓷板精度不够,贵的玻璃板又怕碎。我个人习惯是:实验室用玻璃板,产线用陶瓷板。玻璃板精度高但脆弱,陶瓷板耐造但精度稍低。根据项目需求选,别盲目追求高精度。
1.5 小结
这一章咱们聊了三个问题:
- 什么是四线扫标定——给四个相机统一坐标系,消除畸变,实现拼接
- 标定的核心目的——畸变校正、坐标统一、像素当量、运动补偿
- 标定的地位——视觉系统的底层基础,决定系统精度上限
记住一句话:标定做不好,后面全是白忙活。我见过太多工程师把精力花在算法调优上,却忽略了标定这个根基。结果就是,算法再牛,数据源是歪的,输出也是歪的。