单目 / 双目相机的输出 & 深度检测是谁实现的
核心结论先讲:
相机硬件本身只输出 "光信号转成的像素值"(图像),不输出深度。
深度是后端算法(或相机内置处理器跑的算法)算出来的。
区别只在于:算法跑在 PC 上,还是跑在相机内部的芯片上。
一、单目相机的输出:每个像素是什么
硬件原始输出
单目相机的传感器(CMOS/CCD)输出的是每个像素的光强值:
表格
| 格式 | 每个像素的数值 |
|---|---|
| 灰度相机 | 1 个值:亮度 0~255(0 = 黑,255 = 白) |
| 彩色相机(RGB) | 3 个值:R (红)、G (绿)、B (蓝),各 0~255 |
| RAW 格式 | 每个像素 1 个值:Bayer 阵列的原始感光值,还没解马赛克 |
| YUV | 亮度 Y + 色度 U/V,压缩格式 |
通俗说:
单目相机输出的就是一张2D 图片,每个像素记录 "这个位置来了多少光、什么颜色"。
没有深度,没有距离。
数据结构
plaintext
单目输出 = 二维数组 [高度H × 宽度W × 通道数C]
例如 1920×1080×3 的RGB图像 = 约620万个数值
二、双目相机的输出:分两种情况
情况 1:纯双目摄像头(两个独立相机)
硬件只输出左右两张原始图像:
plaintext
左目图像:H×W×3 的RGB数组
右目图像:H×W×3 的RGB数组
- 两个摄像头同步触发,同时拍照;
- 硬件不做任何深度计算;
- 深度需要PC 端 / 后端算法来算(立体匹配→视差→深度)。
代表:自己用两个 USB 摄像头拼的双目、开源双目模组。
情况 2:深度相机模组(内置处理器)
相机内部有一颗专用芯片(ASIC/FPGA/SoC),在相机内部就跑完了立体匹配算法,直接输出:
plaintext
左目RGB图像 + 深度图(每个像素的距离值)
- 深度图:H×W 的数组,每个像素值 = 该点到相机的距离(单位通常是毫米);
- 有些还输出视差图、点云;
- 用户拿到的就是 "已经算好深度的数据",不需要自己跑算法。
代表:Intel Realsense D400 系列、ZED 相机、奥比中光深度相机。
关键区分
表格
| 设备类型 | 硬件输出 | 深度在哪算 |
|---|---|---|
| 纯双目摄像头 | 左右两张图像 | PC 端 / 后端算法算 |
| 深度相机模组 | 图像 + 深度图 | 相机内部芯片算(但本质也是算法) |
所以 "双目相机输出什么" 没有统一答案,取决于你买的是 "两个摄像头" 还是 "带计算的深度相机模组"。
三、深度检测:是相机实现的还是后端算法实现的?
答案:都是算法实现的,区别只在于算法跑在哪里。
深度不是物理量,不能像温度、电压那样用一个传感器直接 "测" 出来。深度必须通过计算得到。
各种深度方案的 "计算位置"
表格
| 深度方案 | 原理 | 算法跑在哪 | 谁输出深度 |
|---|---|---|---|
| 单目深度估计 | 深度学习从单张图像回归深度 | PC/GPU/ 后端算法 | 算法输出,相机不输出 |
| 纯双目立体视觉 | 左右图像立体匹配→视差→深度 | PC/GPU/ 后端算法 | 算法输出,相机不输出 |
|
深度相机模组 (结构光 / 双目) | 相机内置芯片跑匹配算法 | 相机内部 SoC/FPGA | 相机直接输出深度图 |
| ToF 深度相机 | 主动发光测相位 / 时间→深度 | 相机内部芯片(部分计算在传感器端) | 相机直接输出深度图 |
| 激光雷达 | 主动发光测飞行时间→距离 | 雷达内部 FPGA/TDC | 雷达直接输出点云 |
通俗类比
- 纯相机:就像你的眼睛,只负责 "看",不负责 "想"。眼睛看到画面,大脑(算法)来判断距离。
- 深度相机模组:就像眼睛 + 小脑,眼睛看到画面,小脑(内置芯片)直接算好距离告诉你,不用大脑再算。
- 激光雷达:就像蝙蝠,主动发出声波(激光),靠回声时间直接算距离,是 "硬件级测距"。
四、单目深度估计 vs 双目深度计算:本质区别
单目深度估计(纯算法推断)
- 输入:1 张 RGB 图像;
- 算法:深度学习模型(如 MiDaS、DPT、Leres);
- 输出:每个像素的深度估计值;
- 本质:从 2D 图像 "猜"3D 深度,靠训练数据中学到的先验(近处物体大、远处物体小、地面纹理渐变等);
- 问题:没有绝对尺度,精度低,遇到训练集中没见过的场景会出错。
单目深度估计是 "AI 猜深度",不是物理测量。
双目深度计算(几何计算)
- 输入:左右两张图像;
- 算法:立体匹配(SGBM 等)+ 三角几何公式 Z=f×B/d;
- 输出:每个像素的深度值;
- 本质:用几何关系算深度,有物理基准(基线和焦距已知);
- 问题:无纹理区域匹配失败,远距离视差太小。
双目深度是 "几何算深度",比单目可靠,但受限于匹配算法和物理约束。
五、一个完整的数据链路对比
纯双目方案(算法在 PC 端)
plaintext
左目摄像头 → 左图像 ─┐
├→ PC端立体匹配算法 → 视差图 → 深度图 → 点云
右目摄像头 → 右图像 ─┘
- 相机只输出图像;
- PC 端负责所有计算;
- 灵活,可以换算法,但占用 PC 算力。
深度相机模组方案(算法在相机内)
plaintext
左目摄像头 → 左图像 ─┐
├→ 相机内置SoC → 立体匹配 → 深度图 → USB输出深度+图像
右目摄像头 → 右图像 ─┘
- 相机内部算好深度;
- PC 端直接拿深度图用;
- 省 PC 算力,但算法固定,不能换。
激光雷达方案(硬件级测距)
plaintext
LD发射激光 → 目标反射 → APD接收 → TDC测时间 → FPGA算距离 → 点云输出
- 测距在雷达内部硬件完成;
- 输出就是 3D 点云,不需要 PC 算深度;
- 最精确,但成本高。
六、一句话总结
单目相机输出每个像素的 RGB / 灰度值(纯图像);
双目相机输出左右两张图像(纯双目)或图像 + 深度图(深度模组)。
深度永远是算法算出来的,不是相机硬件直接 "测" 出来的 —— 区别只在于算法跑在 PC 端(纯相机方案)还是跑在相机内部芯片上(深度模组方案)。
单目靠 AI 猜深度,双目靠几何算深度,激光雷达靠硬件测时间得深度。
888

被折叠的 条评论
为什么被折叠?



