一、双目视觉概述
1.1 什么是双目视觉
双目视觉,说白了就是给机器装上两只眼睛。
我们人类用两只眼睛看世界,天生就能感知深度和距离。你想想看,闭上一只眼睛去接球,是不是总觉得差那么点意思?双目视觉模仿的就是这个原理。
从技术角度讲,双目视觉系统由两个摄像头组成。它们之间有一定距离,这个距离我们叫它基线。两个摄像头同时拍摄同一场景,然后通过计算两幅图像之间的差异——也就是视差——来还原三维信息。
我个人习惯把双目视觉比作「机器人的立体感知器官」。没有它,机器人就是个平面世界里的瞎子。
核心要点:双目视觉的本质,是从二维图像中恢复三维信息。它不需要主动发射激光或结构光,属于被动式视觉方案。
1.2 双目视觉的工作原理
工作原理其实不复杂。我尽量用大白话讲清楚。
第一步,左右相机同时拍照。这一步看似简单,但坑很多。比如两个相机的曝光时间不一致,拍出来的图像亮度不同,后面匹配就会出问题。我在项目中遇到过这种情况,折腾了两天才发现是硬件触发信号没对齐。
第二步,图像校正。相机镜头有畸变,两个相机的光轴也不完全平行。我们需要通过标定参数,把左右图像校正到同一平面上。这个过程叫立体校正。
第三步,立体匹配。这是最核心的一步。我们要在左图中找一个点,然后在右图的同一行上找到对应的点。左右点的水平位置差,就是视差。
第四步,三角测量。有了视差,结合相机焦距和基线长度,就能算出深度。公式很简单:
深度 Z = (焦距 f × 基线 B) / 视差 d
嗯,这里要注意:视差越大,物体越近;视差越小,物体越远。这个关系是反直觉的,新手经常搞反。
避坑指南:我曾经在项目里直接用原始图像做匹配,结果一团糟。后来才意识到,必须先做极线校正,把搜索范围从二维降到一维。这一步不做,后面的精度全是扯淡。
下面这张图展示了双目视觉的核心流程:
1.3 双目视觉的应用领域
这些年我接触过的项目,双目视觉的应用场景真不少。我挑几个典型的说说:
| 领域 | 典型应用 | 精度要求 |
|---|---|---|
| 工业自动化 | 机器人抓取、零件定位、尺寸测量 | 0.1mm ~ 1mm |
| 自动驾驶 | 障碍物检测、车道线识别、SLAM | 厘米级 |
| 消费电子 | 人脸识别、手势控制、AR/VR | 毫米级 |
| 医疗影像 | 手术导航、内窥镜三维重建 | 亚毫米级 |
| 安防监控 | 人员定位、行为分析、周界防护 | 分米级 |
你看,不同场景对精度的要求天差地别。工业测量要干到0.1毫米,安防监控分米级就够了。所以精度提升这件事,得看场景说话。
注意:别盲目追求高精度。精度每提升一个数量级,系统复杂度可能翻十倍。我在一个半导体检测项目里,为了把精度从0.5mm提到0.05mm,光相机就换了三批,算法重写了四版。值不值?得算账。
1.4 精度提升的必要性
为什么要提升精度?这个问题我问过很多刚入行的朋友。答案五花八门,但核心就一句话:精度不够,系统白做。
我举个例子。有个做AGV导航的项目,客户要求定位误差小于5厘米。我们用的双目系统,理论精度是3厘米。结果一跑起来,误差飙到15厘米。为什么?
原因很多:
- 相机标定参数有偏差
- 光照变化导致匹配失败
- 基线太短,远距离测距不准
- 图像噪声影响了亚像素精度
你看,理论精度和实际精度之间,差着十万八千里。这就是我们做精度提升方法论的原因。
我的经验:精度提升不是一锤子买卖。它是一个系统工程,涉及硬件选型、标定方法、匹配算法、后处理优化等多个环节。每个环节抠一点,整体精度就能上一个台阶。
说白了,精度提升就是跟误差做斗争。系统误差、随机误差、粗大误差,每一种都有对应的消除方法。后面的章节我会一个一个拆开来讲。
嗯,这一章先到这里。记住一句话:双目视觉的精度,决定了系统的上限。后面的内容,全是围绕怎么把这个上限往上推。
公众号:蓝海资料掘金营,微信deep3321