一、深度相机概述
1.1 什么是深度相机
深度相机,说白了就是能「看」出物体距离的相机。
普通相机拍出来的是二维图像——只有颜色和亮度信息。你看到一张照片,知道这是红色的苹果、那是蓝色的杯子,但你不知道苹果离你多远,杯子又在哪里。深度相机不一样,它每个像素点都记录了一个距离值,单位通常是毫米。
我刚开始接触这个领域时,总觉得深度相机就是「高级点的摄像头」。后来在项目里吃过亏才明白——深度相机输出的不是图像,而是三维点云数据。每个点都包含 (x, y, z) 三个坐标信息,这才是它真正的价值所在。
核心概念:深度相机 = 传统相机 + 距离测量能力。输出的是深度图(Depth Map),每个像素值代表该点到相机的距离。
1.2 深度相机的工作原理
目前主流的深度相机技术有三种:ToF、结构光、双目立体视觉。我一个个说。
1.2.1 ToF(飞行时间法)
ToF的原理特别简单——发射光脉冲,测量光往返的时间。光速是已知的,时间测出来了,距离自然就出来了。
公式也很直接:
距离 = (光速 × 飞行时间) / 2
为什么要除以2?因为光走了个来回,从相机到物体,再从物体回到相机。
我在项目中用过ToF相机做AGV避障。说实话,ToF最大的优点是速度快,能到30fps甚至更高。但有个坑——多路径干扰。光线在物体之间来回反射,会导致测量值偏大。我曾经在玻璃幕墙的环境里调试,深度图上一片混乱,后来加了遮光罩才勉强能用。
我的经验:ToF适合室内中短距离(0.3m-10m),室外强光下性能会下降。选型时注意看调制频率,频率越高精度越好,但功耗也越大。
1.2.2 结构光
结构光的思路是——投射已知图案,通过图案变形推算深度。
你想想看,如果我在墙上投一个网格,墙是平的,网格就是规规矩矩的。如果墙上有凸起,网格就会扭曲。通过分析扭曲程度,就能算出每个点的深度。
结构光的典型代表是微软的Kinect v1和苹果的Face ID。我拆过Kinect v1,里面有个红外投影仪,投射的是伪随机散斑图案。接收端用红外摄像头拍摄,然后和存储的参考图案做匹配。
注意:结构光在室外基本不能用。太阳光里的红外成分会淹没投影图案。我试过在正午阳光下用结构光相机,深度图全是噪点,根本没法看。
1.2.3 双目立体视觉
双目立体视觉模仿的是人眼——两个摄像头从不同角度拍摄,通过视差计算深度。
原理是这样的:左眼和右眼看到的同一个物体,位置会有偏移。这个偏移量叫视差。物体越近,视差越大;物体越远,视差越小。
计算公式:
深度 = (焦距 × 基线距离) / 视差
其中基线距离就是两个摄像头中心之间的距离。
双目视觉有个好处——不需要主动光源,室内室外都能用。但缺点也很明显:计算量大。每帧图像都要做立体匹配,对算力要求高。我做过一个嵌入式项目,用ARM Cortex-A72跑双目算法,640×480的分辨率只能跑到10fps,后来换了GPU才到30fps。
| 技术类型 | 测距范围 | 精度 | 帧率 | 室外可用性 | 典型功耗 |
|---|---|---|---|---|---|
| ToF | 0.3m - 10m | ±1cm @ 3m | 30-60fps | 一般(强光下降) | 1-3W |
| 结构光 | 0.1m - 5m | ±0.5mm @ 1m | 15-30fps | 差(室外不可用) | 2-5W |
| 双目立体视觉 | 0.5m - 20m+ | ±2cm @ 3m | 10-30fps(依赖算力) | 好 | 0.5-2W(不含计算) |
1.3 深度相机的主要应用领域
深度相机的应用场景,我归纳为四大类:
1.3.1 机器人导航与避障
这是我最熟悉的领域。AGV、扫地机器人、无人机,都需要知道周围环境的三维信息。深度相机可以实时构建障碍物地图,让机器人知道哪里能走、哪里不能走。
我记得有个项目,客户要求AGV在仓库里自主导航。我们用双目相机做SLAM,配合IMU做姿态估计。一开始精度不够,AGV老是撞货架。后来发现是相机标定出了问题——两个摄像头的相对位置有0.1mm的偏差,导致深度计算全偏了。重新标定后,问题解决。
1.3.2 人脸识别与生物识别
苹果的Face ID就是结构光深度相机的典型应用。普通摄像头做人脸识别,容易被照片、视频欺骗。深度相机能检测人脸的三维轮廓,活体检测能力大幅提升。
我参与过一个人脸支付项目,用的就是ToF相机。当时遇到的问题是——戴眼镜的人识别率低。因为眼镜片会反射红外光,导致深度图出现空洞。后来我们做了眼镜检测和深度补全算法,才把通过率提上去。
1.3.3 工业检测与测量
在工厂里,深度相机可以用来检测产品尺寸、表面平整度、装配间隙等。精度要求高的场景,一般用结构光或激光三角法。
我见过一个案例:用双目相机检测手机屏幕的平整度。屏幕放在流水线上,相机从上方拍摄,通过深度图判断屏幕有没有翘曲。检测精度要求0.1mm,双目相机勉强能做到,但需要非常严格的标定和稳定的光照环境。
1.3.4 AR/VR与手势识别
AR/VR设备需要知道用户的手在空间中的位置,才能实现交互。深度相机可以实时捕捉手部骨骼点,识别手势动作。
我试过用ToF相机做手势控制无人机。说实话,效果一般——手速快了就丢帧,而且手部边缘的深度数据不稳定。后来改用双目+深度学习,效果好了不少,但延迟还是有点高。
总结一下:深度相机的选型没有「最好」,只有「最合适」。室内短距离高精度选结构光,中远距离实时性要求高选ToF,室外或大范围场景选双目。具体选哪个,得看你的应用场景和预算。