本页介绍如何在 Azure Kinect DK 中使用深度相机。 深度相机是两个相机中的第二个。 如前几节所述,另一个相机是 RGB 相机。
操作原则
Azure Kinect DK 深度相机采用振幅调制连续波(AMCW)飞行时间(ToF)技术原理。 相机将近红外(NIR)光谱中的调制照明投射到场景中。 然后,它记录了一个关于光从相机到场景再返回所花费时间的间接测量。
处理这些度量以生成深度地图。 深度图是图像的每个像素的 Z 坐标值集,以毫米为单位测量。
除了深度地图,我们还获得所谓的干净 IR 读数。 干净 IR 读数中的像素值与从场景返回的光量成正比。 该图像看起来类似于常规 IR 映像。 下图显示了一个示例深度图(左图)和相应的干净 IR 图像(右图)。
主要功能
深度相机的技术特征包括:
- 具有高级像素技术的 100 万像素 ToF 成像芯片,可实现更高的调节频率和深度精度。
- 两个近红外激光二极管可实现近和宽视场(FoV)深度模式。
- 世界上最小的 ToF 像素,尺寸为 3.5μm × 3.5μm。
- 自动每像素增益选择,使大型动态范围允许清晰捕获近远对象。
- 全球快门,可提高阳光下的性能。
- 多阶段深度计算方法,即使在存在芯片、激光和电源变化的情况下,也能实现可靠的准确度。
- 低系统性和随机性错误。
深度相机将原始调节 IR 图像传输到主机电脑。 在电脑上,GPU 加速深度引擎软件将原始信号转换为深度地图。 深度相机支持多种模式。 窄视场(FoV)模式非常适合 X 维和 Y 维度范围较小但 Z 维度范围较大的场景。 如果场景具有较大的 X 和 Y 范围,但 Z 范围较小,则 较宽的 FoV 模式 更适合。
深度相机支持 2x2 像素合并模式,来扩展 Z 范围,相较于相应的 未合并模式。 像素合并以降低图像分辨率为代价进行。 除以最大帧速率为 15 fps 的 100 万像素(MP)模式外,所有模式最多可以每秒 30 帧(fps)运行。 深度相机还提供 被动 IR 模式。 在此模式下,相机上的照明器不处于活动状态,只观察到环境照明。
相机性能
相机的性能被测量为系统性的随机错误。
系统误差
系统误差定义为消除噪音后测量深度与正确(地面真相)深度之间的差异。 我们计算静态场景的许多帧的时态平均值,以尽可能消除深度噪音。 更确切地说,系统性错误被定义为:
如果 dt 表示时间 t 的度量深度, 则 N 是平均值过程中使用的帧数, dgt 表示地面真相深度。
深度相机的系统错误规范不包括多路径干扰(MPI)。 MPI 是当一个传感器像素集成由多个对象反射的光时。 我们采取更高的调制频率和深度失效处理部分缓解了深度相机中的MPI问题,稍后我们将详细介绍深度失效处理。
随机误差
假设我们拍摄了同一对象的 100 张图像,而无需移动相机。 每个 100 个图像中的对象深度将略有不同。 这种差异是由镜头噪音引起的。 散粒噪声是指击中传感器的光子数量因随时间而变化的随机因素而不同。 我们将静态场景中的此随机错误定义为按以下方法计算得出的深度标准偏差:
其中 N 表示深度度量数, dt 表示时间 t 的深度度量, d 表示在所有深度度量 dt 上计算的平均值。
失效
在某些情况下,深度相机可能无法为某些像素提供正确的值。 在这些情况下,深度像素失效。 深度值等于 0 表示无效像素。 深度引擎无法生成正确值的原因包括:
- 在活动 IR 照明掩码之外
- 饱和 IR 信号
- 低红外信号
- 过滤离群值
- 多路径干扰
光照掩模
像素在活动 IR 照明掩码之外时失效。 不建议使用此类像素的信号来计算深度。 下图显示了由照明掩码导致的失效示例。 失效的像素是宽 FoV 模式(左)圆圈外黑色像素,在窄 FoV 模式(右)中为十六边形。
信号强度
像素在包含饱和 IR 信号时失效。 当像素饱和时,阶段信息将丢失。 下图显示了饱和 IR 信号的失效示例。 请观察箭头指向深度图和红外线图像中的示例像素。
当 IR 信号不够强以生成深度时,也可能发生无效。 下图显示了低 IR 信号的失效示例。 查看指向深度和 IR 图像中的示例像素的箭头。
模糊的深度
如果像素从场景中的多个对象收到信号,则像素也可以失效。 这类失效常出现在拐角处。 由于场景几何图形,相机中的 IR 光从一堵墙反射到另一面墙上。 这种反射光会导致像素的测量深度不明确。 深度算法中的筛选器会检测这些不明确的信号并使像素失效。
下图显示了多路径检测无效的示例。 您还可以看到,在一个相机视图中失效的同一表面积(上方)可能在不同的相机视图中再次出现(下方)。 此图像演示了从一个角度不可见的表面可能从另一个角度可见。
多路径的另一个常见情况是包含来自前台和背景的混合信号(如对象边缘周围)的像素。 在快速运动时,边缘周围可能会看到更多失效的像素。 额外的无效像素是因为原始深度数据捕获过程中的曝光间隔。