1. 视觉标定概述
大家好,我是你们这门课的老朋友。咱们今天开篇,先聊聊视觉标定到底是个啥玩意儿。
说实话,我入行那会儿,带我的师傅第一句话就是:“小子,搞机器视觉,标定是基本功。这关过不了,后面全是扯淡。” 我当时还不服气,觉得不就是拍个棋盘格算几个参数嘛。后来真上了产线,吃了亏,才明白这话的分量。
1.1 什么是视觉标定?
说白了,视觉标定就是给相机“配眼镜”和“量尺子”。
你想啊,相机镜头天生就有畸变——广角镜头拍出来的直线是弯的,这叫光学畸变。另外,相机拍的是二维像素,咱们要的是三维世界的物理坐标。怎么把像素坐标换算成毫米、米?这就需要标定。
我习惯把标定分成两大类:
- 内参标定:搞定相机自己的“内伤”——焦距、主点、畸变系数。这相当于给相机做体检。
- 外参标定:搞定相机在空间中的“站位”——旋转和平移。这相当于给相机定坐标。
嗯,这里要注意,有时候咱们还要标定相机和机器人手眼之间的关系,那就是手眼标定了,咱们后面章节会细讲。
核心定义:视觉标定是建立二维图像坐标与三维世界坐标之间映射关系的过程,同时修正镜头畸变带来的测量误差。
1.2 为什么需要标定?
这个问题,我当年也问过。答案其实很简单:不标定,你测不准。
举个例子。我在做3C电子装配项目时,有个工位需要视觉引导机器人抓取手机中框。没标定前,相机告诉我的位置和机器人实际抓取的位置,差了将近2毫米。你想想,手机中框的装配公差才0.1毫米,2毫米的误差,零件直接报废。
为什么会这样?因为相机看到的“位置”是像素,机器人运动需要“毫米”。中间差了一个坐标系转换矩阵。没有标定,这个矩阵就是瞎猜的。
我总结了一下,标定的必要性体现在三个方面:
| 维度 | 不标定的后果 | 标定后的效果 |
|---|---|---|
| 精度 | 像素坐标无法准确映射到物理坐标,测量误差大 | 亚像素级精度,误差可控在0.01mm以内 |
| 畸变 | 图像边缘弯曲,直线检测、尺寸测量全部失真 | 图像校正后,直线笔直,测量真实 |
| 一致性 | 换一个相机或镜头,所有参数都要重调 | 标定参数可复用,系统标准化 |
避坑指南:我曾经在一个项目中,为了赶进度,跳过了标定环节,直接用出厂参数做测量。结果现场调试时,发现产品尺寸总是偏大0.5mm。查了三天,最后发现是镜头畸变导致的。从那以后,我再也不敢省标定这一步了。
1.3 标定的核心目标
标定的目标,其实就三个词:准、稳、快。
- 准(Accuracy):标定出的参数要能真实反映相机和世界的几何关系。重投影误差越小越好。
- 稳(Robustness):换一个场景、换一个光照,标定结果依然可靠。不能今天标定一个值,明天又变一个值。
- 快(Efficiency):标定过程要简单、自动化。产线上不可能给你半小时去摆棋盘格。
我个人习惯把这三个目标画成一个三角,缺一不可。你想想看,如果标定结果很准,但每次标定都要折腾半天,产线根本用不起。反过来,如果标定很快,但精度一塌糊涂,那还不如不标。
1.4 评价指标
怎么判断标定得好不好?不能光靠感觉。咱们得看硬指标。
最常用的评价指标是重投影误差(Reprojection Error)。什么意思呢?就是把标定板上的已知三维点,通过标定得到的参数,重新投影到图像上,算一下投影点和实际图像点之间的距离。这个距离越小,说明标定越准。
一般来说,重投影误差控制在0.1像素以内,就算不错了。如果超过0.5像素,我建议你重新标定一次。
除了重投影误差,还有几个指标也值得关注:
| 指标 | 说明 | 经验阈值 |
|---|---|---|
| 重投影误差 | 三维点投影到图像后的像素偏差 | < 0.1 pixel |
| 焦距稳定性 | 多次标定后焦距的波动范围 | < 1% |
| 畸变系数一致性 | 不同角度标定得到的畸变参数是否接近 | 径向畸变k1波动 < 0.01 |
| 标定板覆盖率 | 标定板在图像中占据的面积比例 | > 20% |
小技巧:我每次标定完,都会把标定板放在图像的不同位置拍几张验证图,然后手动算一下实际尺寸和测量尺寸的偏差。这个“土办法”往往比只看重投影误差更靠谱。
1.5 标定的知识体系
为了让大家对整个标定流程有个全局观,我画了一张图。这张图涵盖了从相机模型到最终验证的完整链路。
这张图把咱们这门课的核心脉络串起来了。从相机模型出发,到内参、外参、手眼标定,再到标定板设计、算法选择、工具使用,最后用评价指标和仿真验证来闭环。嗯,后面的章节,咱们会一个一个拆开来讲。
好了,第一章就到这里。记住一句话:标定是视觉系统的基石,地基不牢,地动山摇。