一、双目视觉系统概述

大家好,我是老张。在嵌入式视觉这行摸爬滚打了十几年,今天咱们来聊聊双目视觉。

说实话,我第一次接触双目视觉是在2012年,那时候还在做扫地机器人。单目摄像头老是撞墙,后来换成双目,嘿,效果立竿见影。从那时起,我就跟双目系统杠上了。

1.1 什么是双目视觉

双目视觉,说白了就是给机器装上两只眼睛。跟人眼一样,两个摄像头从不同角度拍摄同一场景,然后通过计算两幅图像之间的差异,来获取深度信息。

你想想看,人为什么有两只眼睛?因为单眼很难判断距离。你闭上一只眼睛去接球,试试看?双目视觉的核心,就是利用视差来还原三维信息。

核心概念:视差(Disparity)——同一物体在左右相机成像平面上的位置差异。视差越大,物体越近;视差越小,物体越远。

1.2 双目视觉的工作原理

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

整个过程分四步:

  1. 图像采集——左右两个相机同步拍摄,得到一对图像
  2. 立体校正——把两幅图像对齐到同一平面上,消除畸变和旋转
  3. 立体匹配——在左右图像中找到对应的像素点,计算视差
  4. 深度计算——利用三角测量原理,把视差转换成深度值

嗯,这里要注意。立体匹配是最容易出问题的环节。我在项目中遇到过,光照不均匀或者纹理太少,匹配结果就一塌糊涂。

我的经验:做立体匹配时,别一上来就上全局算法。先试试SGBM(半全局块匹配),效果不错,速度也快。我早期一个项目用BM算法,匹配质量差,换成SGBM后,深度图干净多了。

深度计算的公式其实很简单:

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

其中基线距离就是两个相机光心之间的距离。这个值越大,测距精度越高,但相机体积也越大。怎么取舍?看你的应用场景。

1.3 双目视觉的应用领域

这些年,双目视觉的应用越来越广。我挑三个典型领域说说。

自动驾驶

自动驾驶是双目视觉最大的应用场景之一。特斯拉早期用过双目,后来改纯视觉方案了。但国内很多厂商还在用,比如华为、大疆的车载方案。

为什么?因为双目能直接测距,不需要激光雷达。成本低,功耗也低。我去年帮一家自动驾驶公司调过双目系统,他们用在园区物流车上,效果不错。

机器人

机器人这块,双目视觉几乎是标配。不管是工业机械臂还是服务机器人,都需要知道物体的三维位置。

我记得有个项目,客户要做水果采摘机器人。单目根本分不清苹果是近还是远,换成双目后,抓取成功率从60%直接飙到95%。

3D测量

工业3D测量是双目视觉的老本行。从手机屏幕的平整度检测,到汽车零部件的尺寸测量,双目都能干。

精度能做到多少?我见过最好的工业双目系统,在1米距离内,测量精度能达到0.1毫米。当然,这需要非常精密的标定和算法优化。

应用领域 典型场景 精度要求 难点
自动驾驶 障碍物检测、车道线识别 厘米级 动态场景、光照变化
机器人 抓取、导航、避障 毫米级 实时性、遮挡处理
3D测量 尺寸检测、缺陷检测 亚毫米级 标定精度、环境干扰

1.4 课程整体大纲介绍

这套课程一共30章,我按自己的实战经验来编排的。不会一上来就讲理论,而是从实际调优出发。

大纲分五个模块:

  • 基础篇(第1-5章):双目视觉原理、相机模型、标定方法
  • 核心篇(第6-12章):立体匹配算法、深度计算、精度分析
  • 调优篇(第13-20章):参数调优、性能优化、常见问题排查
  • 实战篇(第21-26章):嵌入式平台移植、FPGA加速、多传感器融合
  • 进阶篇(第27-30章):深度学习+双目、事件相机、未来趋势

每一章我都会结合自己踩过的坑来讲。比如标定那章,我会详细讲为什么你标了十次,结果还是不对。匹配那章,我会告诉你什么场景下用BM,什么场景下用SGM。

避坑指南:我曾经在一个项目中,花了整整两周时间调参数,结果发现是相机固定螺丝松了。所以,做双目系统,机械稳定性比算法更重要。这个教训,我到现在都记得。

好了,第一章就到这里。下面我用一张图来总结本章的核心知识体系。

双目视觉系统知识体系 双目视觉系统 工作原理 图像采集 立体校正 立体匹配 应用领域 自动驾驶 机器人 3D测量 课程五大模块 基础篇 核心篇 调优篇 核心公式:深度 Z = (f × B) / d 关键要素:基线距离 | 焦距 | 匹配精度 | 标定质量 机械稳定性 > 算法复杂度 第1章 · 双目视觉系统概述

这张图把本章的核心内容串起来了。从工作原理到应用领域,再到课程模块,一目了然。

下一章,咱们会深入讲相机模型和成像原理。到时候我会带大家手算一个投影矩阵,别怕,不难。


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