第2章:误差来源分析
做双目测距这些年,我踩过的坑比走过的路还多。每次精度上不去,十有八九是误差没管好。这一章咱们就把误差的五个主要来源掰开揉碎了讲清楚。
核心观点:误差不是敌人,不了解误差才是。知道它从哪来,你才能对症下药。
2.1 相机标定误差
相机标定,说白了就是给相机做「体检」。你得知道它的内参、外参、畸变系数。但问题是——标定本身就有误差。
我个人习惯用棋盘格标定板。但有一次在项目现场,标定板稍微有点褶皱,结果测出来的距离偏差了3毫米。嗯,3毫米在工业场景里已经算大问题了。
标定误差的主要来源有:
- 标定板精度不够——打印的棋盘格,角点位置本身就不准
- 拍摄角度单一——只拍了正面的标定图像,没有覆盖整个视场
- 算法本身的残差——张正友标定法再经典,也有最小二乘的拟合误差
我的建议:标定板用陶瓷或玻璃基底的,别用纸打印的。拍摄时至少20张图,覆盖视场的四个角落和中心。
2.2 特征匹配误差
双目测距的核心,就是找到左右图像里的同一个点。但找不找得准,是个大问题。
特征匹配误差,说白了就是「认错人」。左图里的一个角点,右图里可能有好几个候选。你选错了,距离就偏了。
我遇到过最头疼的情况——在纹理重复的场景里,比如格子衬衫、瓷砖地面。匹配算法直接懵了,匹配到的点全是错的。
常见的匹配误差来源:
- 纹理缺失——白墙、光滑表面,根本找不到特征点
- 重复纹理——格子、条纹,匹配算法容易混淆
- 光照变化——左右相机曝光不同,同一个点的灰度值不一样
- 遮挡——左图能看到,右图被挡住了
注意:我曾经在户外项目里吃过亏。阳光从侧面照过来,左右相机的成像亮度差了一倍。匹配点全跑偏了。后来加了偏振片才解决。
2.3 量化误差
量化误差,是数字图像天生的「原罪」。你想想看,现实世界是连续的,但相机拍出来的是离散的像素。
一个像素的偏差,在远距离上可能对应几毫米甚至几厘米的误差。这就是量化误差。
举个例子:
| 相机分辨率 | 单个像素对应的视差误差 | 在10米处的距离误差 |
|---|---|---|
| 640×480 | 0.1像素 | 约15mm |
| 1280×720 | 0.1像素 | 约8mm |
| 1920×1080 | 0.1像素 | 约5mm |
看到没?分辨率越高,量化误差越小。但高分辨率也意味着更大的计算量。这是个取舍问题。
我的经验:如果精度要求高,别省那点钱,上高分辨率相机。我有个项目从130万像素换到500万像素,误差直接降了一半。
2.4 镜头畸变误差
镜头畸变,说白了就是镜头把直线拍弯了。尤其是广角镜头,边缘的畸变特别明显。
畸变分两种:
- 径向畸变——图像像被吹胀的气球,中间正常,边缘变形
- 切向畸变——镜头和成像平面不平行,图像歪了
标定的时候,我们通常会算出一组畸变系数。但问题是——畸变模型本身是近似的。离图像中心越远,畸变校正的残差越大。
我记得有一次做高精度测量,用了6mm的广角镜头。标定后校正了畸变,但边缘区域的误差还是比中心大了3倍。后来我换了长焦镜头,问题才解决。
避坑指南:我曾经以为畸变校正后就能一劳永逸。结果发现,镜头温度变了,畸变参数也跟着变。嗯,这就引出了下一个误差来源。
2.5 温度漂移误差
温度漂移,是很多工程师容易忽略的「隐形杀手」。
相机和镜头都是金属和玻璃做的。温度一变,它们就会热胀冷缩。焦距变了、光轴偏了、基线长度也变了。
我做过一个实验:
| 温度变化 | 焦距变化 | 在5米处的距离误差 |
|---|---|---|
| 20°C → 40°C | 约0.02mm | 约2mm |
| 20°C → 0°C | 约0.015mm | 约1.5mm |
你看,温度变化20度,误差就能到2毫米。在户外项目里,夏天和冬天的温差可能超过40度。如果不做温度补偿,精度根本没法保证。
我的做法:在相机外壳上贴温度传感器,实时监测温度。然后根据标定好的温度-参数曲线做在线补偿。虽然麻烦点,但效果立竿见影。
知识体系总览
下面这张图,把五个误差来源的关系画清楚了。你可以把它当作本章的「思维导图」。
这五个误差来源,不是孤立存在的。它们会互相叠加、互相放大。比如温度漂移会导致标定参数失效,标定误差又会让匹配精度下降。一环扣一环。
所以,做双目测距的误差分析,不能只看单个因素。你得有全局视角。
一句话总结:标定误差是「底子」,匹配误差是「手艺」,量化误差是「天限」,畸变误差是「硬伤」,温度漂移是「变数」。把这五个管好了,你的测距精度就稳了。
公众号:蓝海资料掘金营,微信deep3321