一、双目视觉概述

1.1 什么是双目视觉

双目视觉,说白了就是给机器装上两只眼睛。

我们人类用两只眼睛看世界,天生就能感知深度和距离。你想想看,闭上一只眼睛去接球,是不是总觉得差那么点意思?双目视觉模仿的就是这个原理。

从技术角度讲,双目视觉系统由两个摄像头组成。它们之间有一定距离,这个距离我们叫它基线。两个摄像头同时拍摄同一场景,然后通过计算两幅图像之间的差异——也就是视差——来还原三维信息。

我个人习惯把双目视觉比作「机器人的立体感知器官」。没有它,机器人就是个平面世界里的瞎子。

核心要点:双目视觉的本质,是从二维图像中恢复三维信息。它不需要主动发射激光或结构光,属于被动式视觉方案。

1.2 双目视觉的工作原理

工作原理其实不复杂。我尽量用大白话讲清楚。

第一步,左右相机同时拍照。这一步看似简单,但坑很多。比如两个相机的曝光时间不一致,拍出来的图像亮度不同,后面匹配就会出问题。我在项目中遇到过这种情况,折腾了两天才发现是硬件触发信号没对齐。

第二步,图像校正。相机镜头有畸变,两个相机的光轴也不完全平行。我们需要通过标定参数,把左右图像校正到同一平面上。这个过程叫立体校正

第三步,立体匹配。这是最核心的一步。我们要在左图中找一个点,然后在右图的同一行上找到对应的点。左右点的水平位置差,就是视差。

第四步,三角测量。有了视差,结合相机焦距和基线长度,就能算出深度。公式很简单:

深度 Z = (焦距 f × 基线 B) / 视差 d

嗯,这里要注意:视差越大,物体越近;视差越小,物体越远。这个关系是反直觉的,新手经常搞反。

避坑指南:我曾经在项目里直接用原始图像做匹配,结果一团糟。后来才意识到,必须先做极线校正,把搜索范围从二维降到一维。这一步不做,后面的精度全是扯淡。

下面这张图展示了双目视觉的核心流程:

双目视觉系统工作流程 左相机 右相机 相机标定 立体校正 立体匹配 三角测量 深度图 / 点云 基线 B

1.3 双目视觉的应用领域

这些年我接触过的项目,双目视觉的应用场景真不少。我挑几个典型的说说:

领域 典型应用 精度要求
工业自动化 机器人抓取、零件定位、尺寸测量 0.1mm ~ 1mm
自动驾驶 障碍物检测、车道线识别、SLAM 厘米级
消费电子 人脸识别、手势控制、AR/VR 毫米级
医疗影像 手术导航、内窥镜三维重建 亚毫米级
安防监控 人员定位、行为分析、周界防护 分米级

你看,不同场景对精度的要求天差地别。工业测量要干到0.1毫米,安防监控分米级就够了。所以精度提升这件事,得看场景说话。

注意:别盲目追求高精度。精度每提升一个数量级,系统复杂度可能翻十倍。我在一个半导体检测项目里,为了把精度从0.5mm提到0.05mm,光相机就换了三批,算法重写了四版。值不值?得算账。

1.4 精度提升的必要性

为什么要提升精度?这个问题我问过很多刚入行的朋友。答案五花八门,但核心就一句话:精度不够,系统白做

我举个例子。有个做AGV导航的项目,客户要求定位误差小于5厘米。我们用的双目系统,理论精度是3厘米。结果一跑起来,误差飙到15厘米。为什么?

原因很多:

  • 相机标定参数有偏差
  • 光照变化导致匹配失败
  • 基线太短,远距离测距不准
  • 图像噪声影响了亚像素精度

你看,理论精度和实际精度之间,差着十万八千里。这就是我们做精度提升方法论的原因。

我的经验:精度提升不是一锤子买卖。它是一个系统工程,涉及硬件选型、标定方法、匹配算法、后处理优化等多个环节。每个环节抠一点,整体精度就能上一个台阶。

说白了,精度提升就是跟误差做斗争。系统误差、随机误差、粗大误差,每一种都有对应的消除方法。后面的章节我会一个一个拆开来讲。

嗯,这一章先到这里。记住一句话:双目视觉的精度,决定了系统的上限。后面的内容,全是围绕怎么把这个上限往上推。


公众号:蓝海资料掘金营,微信deep3321