散斑深度相机原理
散斑深度相机是一种主动式光学3D成像技术。它通过向目标物体投射一组随机但固定的红外激光散斑图案,然后通过一个摄像头观察这个图案在物体表面的变形,再利用计算机视觉算法(核心是“立体匹配”)计算出每个点的深度信息。
它的另一个更广为人知的名字是主动立体视觉,或者更具体地说,是基于随机散斑的主动立体视觉。苹果公司最早将其大规模商用在其产品(如 iPhone、iPad)的 Face ID 原深感摄像头系统中,并称之为“结构光”,但实际上它投射的是随机散斑而非编码条纹,技术上属于结构光的一个特殊分支。
核心原理分步详解
1. 系统构成
一个典型的散斑深度相机包含两个核心组件:
-
红外激光器 + 衍射光学元件 (DOE):用于产生和投射固定的随机散斑图案。
-
红外摄像头 (IR Camera):用于捕获被物体表面形状调制后发生变形的散斑图案。
-
(可选)一个彩色摄像头 (RGB Camera):用于获取彩色图像,与深度信息配准。
其工作原理可以类比于人类的双眼视觉(立体视觉),但解决了传统双目视觉在弱纹理区域匹配困难的问题。
2. 工作原理步骤
-
步骤一:投射固定的随机散斑
激光器发出的红外激光通过一个特殊的光学元件——衍射光学元件 (DOE)。这个元件可以将一个激光点衍射成成千上万个随机分布、具有高度随机性的微小光点,这些光点集合在一起就形成了所谓的“激光散斑”图案。这个图案是固定不变且已知的,就像是相机自带的“纹理”。 -
步骤二:捕获变形的散斑图案
红外摄像头从另一个与激光发射器有一定基线距离(类似于人的两眼间距)的位置,去观察投射到物体表面的散斑图案。由于物体表面有高低起伏,原本平整的散斑图案会因为视角和物体形状的原因而发生“变形”(位移)。-
离相机近的物体表面,散斑点的位移小。
-
离相机远的物体表面,散斑点位移大。
-
凸起的地方,散斑点会向四周移动。
-
凹陷的地方,散斑点会向中心聚集。
-
-
步骤三:计算视差(核心匹配算法)
系统将实际捕获到的变形散斑图与一个预先存储的、在参考平面(通常是一个平整的墙面)上捕获的标准散斑图进行比对。
计算机会为变形图像中的每一个像素点,在标准图像中寻找与之最匹配的散斑模式小块。这个寻找过程就是“立体匹配”。由于散斑图案具有高度的随机性和唯一性,每一个小区域的图案都是独一无二的,因此匹配的准确度和精度非常高,即使在缺乏纹理的白色墙面、纯色物体上也能出色工作。
找到匹配点后,就能计算出该点在两张图像上的位置偏差,这个偏差就是 “视差 (Disparity)” 。
- 步骤四:三角测距法转换为深度
一旦知道了视差,结合已知的基线距离(红外发射器和红外摄像头之间的距离)和焦距(摄像头的内部参数),就可以通过经典的三角测距法 (Triangulation) 精确计算出该像素点对应的实际物理深度(Z值)。
公式简化表示为:深度 (Z) ∝ (基线距离 × 焦距) / 视差
对图像中的每一个像素都执行上述计算,最终就能生成一整张深度图 (Depth Map),其中每个像素的值不是颜色,而是它到相机的距离。
技术特点与优劣
优点:
-
精度高、分辨率高:在合适的范围内(通常为0.2m - 5m),可以达到毫米级的精度。
-
不受物体表面纹理影响:因为自己提供了纹理(散斑),所以即使是纯白墙面、单色物体,也能精确测距。这是它相比被动双目视觉的巨大优势。
-
计算速度快:整个匹配和计算过程可以由专用的ASIC芯片(如苹果的A系列芯片中的神经引擎NPU)实时处理,达到每秒30帧甚至更高。
-
环境光鲁棒性较好:使用不可见的红外光,一定程度上避免了环境可见光的干扰。
缺点:
-
易受强光干扰:在室外等太阳光红外成分很强的环境下,投射的散斑图案会被“淹没”,导致失效。
-
作用距离有限:随着距离增加,散斑点会扩散变模糊,匹配精度下降。通常适用于中近距离场景。
-
对漫反射表面有效:对于透明物体(如玻璃)、吸光物体(如黑绒布)、高反光物体(如镜子),激光要么穿透,要么被吸收,要么发生镜面反射,导致无法形成有效的散斑图案,因此无法测量。
-
多相机干扰:如果两个相同的散斑深度相机同时相对工作,它们投射的相同散斑图案会互相干扰,造成匹配混乱。
与其他深度相机技术对比
技术 | 散斑深度相机 (主动双目) | 结构光 (编码结构光) | 飞行时间法 (ToF) |
---|---|---|---|
原理 | 主动立体视觉 + 固定散斑纹理 | 主动投射编码图案(如条纹、网格) | 测量光脉冲的飞行时间 |
精度 | 高(中近距离) | 非常高(近距离) | 中(中远距离) |
距离 | 中近 (0.2m - 5m) | 近 (0.1m - 3m) | 中远 (0.5m - 10m+) |
优点 | 精度高、不受纹理影响 | 精度极高、可非常近 | 抗干扰强、距离远、帧率高 |
缺点 | 怕强光、距离有限 | 怕强光、距离近、易受干扰 | 分辨率较低、成本高 |
应用领域
-
手机面部识别:苹果 Face ID 是最典型的应用。
-
3D建模与扫描:用于扫描物体、人脸、房间生成3D模型。
-
AR/VR交互:手势识别、空间定位与避障。
-
机器人视觉:让机器人感知环境深度,进行导航和抓取。
-
体感游戏:如微软Kinect v1(其第一代产品实际使用的是另一种编码结构光技术)。
散斑深度相机从视差到深度的转换公式的推导和解释
公式推导准备:理想模型假设
-
两个相同的相机:假设左相机(红外发射器可视为一个反向的“相机”)和右相机(红外相机)的内参完全相同,尤其是焦距 f 相等。
-
光轴平行:两个相机的光轴是完全平行的。
-
基线水平:两个相机的成像平面在同一平面上,且连接两个相机光心的基线(Baseline)B 与成像平面的x轴平行。
在这个理想模型下,一个空间点 P(X, Y, Z) 在两个相机成像面上的像点 p_left 和 p_right 的y坐标相同,只有x坐标存在差异。这个x坐标的差异就是视差 d。
步骤一:建立坐标系和投影关系
我们以左相机的光心 O_left 为世界坐标系的原点。
-
空间点 P 的坐标为 (X, Y, Z),其中 Z 就是我们要求的深度。
-
点 P 在左相机图像上的投影点为 p_left(u_left, v)。
-
点 P 在右相机图像上的投影点为 p_right(u_right, v)。 (注意y坐标相同)
-
根据小孔成像模型,投影关系为:
uleft=fXZ+cxu_{left} = f \frac{X}{Z} + c_xuleft=fZX