Contents — find the section you need

深度相机逐像素地捕捉物体的距离(深度)。立体相机是一种被动式设计,仅利用可见光检测视差;而大多数深度相机则主动向物体投射某种形式的光,并从反射回来的光中推导出深度。深度相机的实现方式大致可分为三类:“主动立体”,它使用红外发射器投射随机点阵图案并进行立体匹配;“结构光”,它通过已知图案的变形情况,以几何方式计算深度;以及“飞行时间”(ToF),它直接根据光的往返时间(或相位偏移)计算距离。这三者都具有相同的根本优势——由于它们可以利用人工线索,因此即使在像纯白墙壁或纯色地板这样的目标上也能捕捉到深度,而被动立体相机则难以检测视差。深度相机广泛应用于室内机器人即时定位与地图构建(SLAM)、虚拟现实/增强现实(VR/AR)手部追踪、智能手机人脸识别以及工业三维测量等领域。

2010 年 E3 展上展出的 Xbox 360 和 Kinect 传感器Kinect(2010 年,E3 展展出)
完整的 Intel RealSense D435 及其小型三脚架Intel RealSense D435

图片:Kinect 和 2010 年 E3 展上的 Xbox 360(James Pfaff,CC BY 2.0)/ Intel RealSense 深度摄像头 D435(Marc Auledas,CC BY-SA) 4.0),均来自维基共享资源。RealSense 的照片展示的是基础款 D435,而非文中讨论的配备 IMU 的 D435i。

原理:三种主动式方法

主动立体视觉 使用红外投影仪将随机点阵图案投射到物体上,然后通过两个红外摄像头对该图案的偏移进行立体匹配来计算深度。其基本原理与被动立体视觉(Z = fB/d,参见立体摄像头文章)的三角测量相同,只是纹理是人工添加的。英特尔 RealSense D400 系列就采用了这种方法。

结构光 使用由“投射已知图案的投影仪”和“单个摄像头”组成的对进行三角测量,而不是使用两个摄像头。投影仪和摄像头之间也存在基线,深度是通过比较投影图案(点、条纹等)在物体表面上的变形与已知参考图案的偏差来反向计算的。初代 Kinect(2010 年)和苹果的 TrueDepth(iPhone Face ID)都采用了这种方法——TrueDepth 将超过 30,000 个红外点投射到人脸上,以读取其 3D 形状。

飞行时间 (ToF) 采用了与激光雷达 (LiDAR) 相同的光往返时间原理,但以并行方式逐像素进行测量。除了直接测量脉冲的往返时间 (dToF) 之外,消费级和工业级深度相机普遍采用的方法是 iToF:它投射调制后的连续光,并通过发射信号和反射信号之间的相位差 \Delta\phi 来计算距离。在调制频率 f_{mod} 和光速 c 的条件下,距离 Z 由以下公式给出:

Z = \frac{c \cdot \Delta\phi}{4\pi f_{mod}}

由于无需三角测量,因此无需在投影仪和相机之间设置基线,这使得它更容易小型化并消除移动部件。从 Kinect v2 开始,微软的产品以及 Orbbec 的 Femto Bolt 都采用了这种方法。这三种方法都依赖于红外光,因此它们有一个共同的弱点:在阳光强烈(红外光含量丰富)的户外环境下,精度往往会下降。

Diagram 1 · Use the button to switch views
主动立体视觉、结构光和飞行时间传感器布局及其测距线索的比较:视差、图案畸变和相位偏移

图示:Duskcoil。蓝线表示投射光;橙色虚线表示目标返回光。主动立体视觉和结构光通过基线进行三角测量,而飞行时间则使用时间或相位偏移。

主要产品规格比较

产品 方法 深度范围 内置 IMU 用途
Intel RealSense D435i 主动立体视觉(红外图案投影) 约 0.3–3 米(某些条件下可达约 10 米等效距离) 博世 BMI055(6 轴:加速度计 + 陀螺仪) SLAM、VR/AR、无人机运动补偿
微软 Kinect(初代,2010 年) 结构光(PrimeSense 制造) 约 1.2–3.5 米 无 用于 Xbox 360 游戏机的运动感应。320x240 深度,30fps
微软 Kinect v2 / Azure Kinect 飞行时间 (ToF) (官方规格因应用而异) Azure Kinect 内置 IMU Azure Kinect 于 2020 年发布,用于混合现实、机器人和工业用途;将于 2023 年停产
Orbbec Femto Bolt 飞行时间 (ToF)(使用微软授权技术) 最高可达 1024x1024 深度分辨率,120° 水平视场角 六轴 IMU 预计于 2023 年发布,作为 Azure Kinect 的继任者。1024x1024 分辨率下深度帧率为 15fps,640x576 分辨率下为 30fps,集成 4K RGB 摄像头
Apple iPhone TrueDepth 结构光(投射超过 30,000 个红外点) 超近距离,针对面部识别进行了优化 (与 iPhone 自身的 IMU 协同工作) 支持 Face ID、Animoji 和人像模式主体分离

D435i 是在 D435 的基础上增加了一个六轴 IMU(博世 BMI055)。其 IMU 数据与深度数据进行时间同步(时间戳对齐)输出,这使得它能够在处理深度和点云数据时校正摄像头自身的运动。初代 Kinect 基于以色列初创公司 PrimeSense 开发的结构光技术;其后续产品 Kinect v2 则采用了飞行时间 (ToF) 技术。Azure Kinect 于 2023 年停产,但微软将其飞行时间技术授权给了 Orbbec 公司,其后续产品 Femto Bolt 使用了与 Azure Kinect 相同的深度摄像头模块,从而简化了现有应用程序的迁移。iPhone 的 TrueDepth 技术是 PrimeSense 结构光技术谱系中的另一个独立商业分支——这正是一个技术根源如何分化为两个截然不同的应用领域的真实写照:“游戏机运动感应”和“智能手机面部识别”。

PrimeSense 技术如何衍生出 Xbox、iPhone 和工业机器人

Kinect 的创造者:以色列公司 PrimeSense——初代 Kinect(发布于 2010 年)的核心技术并非微软自主研发,而是由以色列初创公司 PrimeSense 开发的结构光深度感应技术。 Kinect 迅速超越了其游戏主机的定位,并在学术和商业机器人领域得到广泛应用:它以远低于昂贵激光雷达的成本,实现了低于 720p 的分辨率,并能同时捕捉深度和 RGB 图像,这在当时的机器人研究领域堪称一项卓越的成就。2011 年,微软研究院的 Richard Newcombe、Shahram Izadi 及其同事发表了论文《KinectFusion:实时密集表面映射与跟踪》(IEEE ISMAR 2011),该论文展示了仅使用单个低成本深度摄像头和通用 GPU 即可实现实时密集 3D 表面映射,成为 RGB-D SLAM 研究的奠基之作之一。

苹果收购 PrimeSense 并将其重塑为 Face ID——2013 年 11 月,苹果以 3.6 亿美元收购了 PrimeSense。但这并没有让初代 Kinect 的结构光技术退出市场——它的技术传承最终成为了 Face ID 的核心,并应用于 2017 年发布的 iPhone X 的“原深感”摄像头系统(该系统由红外泛光照明器、点阵投影仪和红外摄像头组成)。这是一个规模异常庞大的技术再利用案例:一项最初为游戏主机运动感应而设计的技术,在七年后成为了智能手机的核心生物识别认证技术,其出货量已达十亿部。

微软再次停产 Kinect——十多年来,微软不断推出又停产 Kinect 系列产品:Xbox 360 版 Kinect、Xbox One 版 Kinect、Windows 版 Kinect v2 以及面向工业/研究领域的 Azure Kinect DK。 Azure Kinect DK 于 2023 年 8 月宣布停产,这是 Kinect 系列产品线中最新(也是迄今为止最后一次)的“终结”。但这一次并非彻底退出——微软选择将其 ToF 技术授权给 Orbbec,而 Orbbec 的“Femto Bolt”则沿用了 Azure Kinect 的深度摄像头模块。这与十年前 PrimeSense 的收购如出一辙:一项技术在公司交接中得以延续。

决定性能的参数

  • 深度范围:D435i 的深度范围约为 0.3-3 米(在某些情况下可达约 10 米),属于近中距离设计,适合用于室内机器人检测桌面或货架周围的障碍物,或用于手部追踪等近距离应用。户外远距离监控更适合使用立体相机或激光雷达 (LiDAR)。

  • 方法选择(主动立体/结构光/飞行时间法):主动立体需要进行立体匹配,但其组件相对便宜。结构光在近距离提供高精度,适用于人脸识别等超近距离高精度应用,但由于需要在投影仪和相机之间设置基线,因此往往受到小型化限制。飞行时间法无需移动部件或基线,因此更容易小型化,但其近距离精度通常不如结构光。Femto Bolt 将 1024x1024 的深度分辨率集成到紧凑的机身中,正是利用了飞行时间法的小型化优势。

  • 内置 IMU 和时间同步:对于相机本身会移动的应用(手持、无人机搭载、移动机器人),深度数据和 IMU 数据的时间同步精度决定了运动模糊校正的准确性。 D435i、Azure Kinect 和 Femto Bolt 内置的 IMU 专为此类应用场景而设计。

  • 环境光容忍度:这三种基于红外的测量方法在室内均表现稳定,但在室外强光照射下,精度往往会下降,因为强光会使投射图案或反射信号变得模糊不清。因此,需要在室外运行的应用通常需要采用被动立体视觉(例如 ZED)或多种方法的组合。

  • 物体纹理:对于纹理较浅的室内机器人和 VR/AR 应用(例如白墙、纯色地板),能够人工投射红外图案的主动式测量方法更具优势。但在纹理丰富的室外环境中,这种优势会减弱。

  • 最小测距距离:对于需要在极近距离获取深度信息的应用(例如手部追踪、人脸识别),测距范围的下限直接决定了其可用性。 TrueDepth 专为仅几十厘米外的目标(例如人脸)而设计,是此类情况的典型例子。

按方法估算距离误差

对于主动立体视觉,基本关系为 Z=fB/d,因此视差不确定性 \sigma_d 会被放大为

\sigma_Z\simeq\frac{Z^2}{fB}\sigma_d

结合 f=600\,\mathrm{px}、B=0.05\,\mathrm{m}、Z=3\,\mathrm{m} 和 \sigma_d=0.25\,\mathrm{px},距离误差约为 7.5\,\mathrm{cm}。投影图案有助于在纹理较差的墙面上进行匹配,但点在强光下或吸收红外线的材料上可能会消失。

对于飞行时间 (ToF) 测量,相位或时间读出、反射率、多径效应和积分时间起主导作用。因此,1024×1024像素的深度分辨率与距离标准偏差并非同一指标。选择设备时,应保持目标距离和材料不变,并测量缺失返回率、异常值率、帧延迟以及深度、RGB和IMU之间的时间戳偏移。

Diagram 2 · Use the button to switch views
计算了主动立体测距误差(按距离划分),以及相位读出、多径和低反射率的单独ToF误差路径

图2 — 左侧数值由文章中的f,B,\sigma_d计算得出。右侧解释了为什么ToF随机误差、偏差和无效返回需要单独测量。这不是设备性能曲线。

检查你的理解
缺失深度是否等同于零米?

这意味着未获得距离。

定义无效值处理机制,而不是将缺失数据视为附近的对象或空闲空间。

参考资料

What to read next

Review the background立体相机的工作原理及主要产品——ZED 2i、斯巴鲁 EyeSightContinue the seriesIMU的工作原理和主要产品——Xsens、博世、Analog DevicesExplore another aspect of this field读取静止IMU日志:偏差、散布和艾伦偏差