一、双目视觉系统概述
大家好,我是老张。在嵌入式视觉这行摸爬滚打了十几年,今天咱们来聊聊双目视觉。
说实话,我第一次接触双目视觉是在2012年,那时候还在做扫地机器人。单目摄像头老是撞墙,后来换成双目,嘿,效果立竿见影。从那时起,我就跟双目系统杠上了。
1.1 什么是双目视觉
双目视觉,说白了就是给机器装上两只眼睛。跟人眼一样,两个摄像头从不同角度拍摄同一场景,然后通过计算两幅图像之间的差异,来获取深度信息。
你想想看,人为什么有两只眼睛?因为单眼很难判断距离。你闭上一只眼睛去接球,试试看?双目视觉的核心,就是利用视差来还原三维信息。
核心概念:视差(Disparity)——同一物体在左右相机成像平面上的位置差异。视差越大,物体越近;视差越小,物体越远。
1.2 双目视觉的工作原理
工作原理其实不复杂,我尽量用大白话讲清楚。
整个过程分四步:
- 图像采集——左右两个相机同步拍摄,得到一对图像
- 立体校正——把两幅图像对齐到同一平面上,消除畸变和旋转
- 立体匹配——在左右图像中找到对应的像素点,计算视差
- 深度计算——利用三角测量原理,把视差转换成深度值
嗯,这里要注意。立体匹配是最容易出问题的环节。我在项目中遇到过,光照不均匀或者纹理太少,匹配结果就一塌糊涂。
我的经验:做立体匹配时,别一上来就上全局算法。先试试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。
避坑指南:我曾经在一个项目中,花了整整两周时间调参数,结果发现是相机固定螺丝松了。所以,做双目系统,机械稳定性比算法更重要。这个教训,我到现在都记得。
好了,第一章就到这里。下面我用一张图来总结本章的核心知识体系。
这张图把本章的核心内容串起来了。从工作原理到应用领域,再到课程模块,一目了然。
下一章,咱们会深入讲相机模型和成像原理。到时候我会带大家手算一个投影矩阵,别怕,不难。
公众号:蓝海资料掘金营,微信deep3321