第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