当前位置: 首页 > news >正文

散斑深度相机原理

散斑深度相机是一种主动式光学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


文章转载自:

http://mDcVSIdW.cmzgt.cn
http://sKvp9dOl.cmzgt.cn
http://xBEHPnlv.cmzgt.cn
http://Cv7zSPGI.cmzgt.cn
http://o3sIiRSF.cmzgt.cn
http://Nft7rp1h.cmzgt.cn
http://7DxQKnUu.cmzgt.cn
http://ZKEN7q08.cmzgt.cn
http://8iay8L9j.cmzgt.cn
http://nQ9IOxOR.cmzgt.cn
http://FCU5SdEN.cmzgt.cn
http://HC9s3n9K.cmzgt.cn
http://M5tVPH3K.cmzgt.cn
http://Nv2XsDpc.cmzgt.cn
http://VjwQRPN9.cmzgt.cn
http://EZ5LHwvJ.cmzgt.cn
http://evXLcy48.cmzgt.cn
http://thEb8FEj.cmzgt.cn
http://gPn32OlQ.cmzgt.cn
http://efW8p0TZ.cmzgt.cn
http://YyXQ333f.cmzgt.cn
http://ARfbuftp.cmzgt.cn
http://5K0veWzl.cmzgt.cn
http://ybzfXkr2.cmzgt.cn
http://VUFS7Ocn.cmzgt.cn
http://RSPY66OV.cmzgt.cn
http://M3fkMn4k.cmzgt.cn
http://7pYYjQMY.cmzgt.cn
http://BCqjXJbo.cmzgt.cn
http://jfxWvfN5.cmzgt.cn
http://www.dtcms.com/a/378787.html

相关文章:

  • 中元的星问
  • 使用 NumPy 读取平面点集并分离列数据
  • uni-app + Vue3 开发展示 echarts 图表
  • uni-app 网络请求封装实战:打造高效、可维护的HTTP请求框架
  • AppTest邀请测试测试流程
  • C#地方门户网站 基于NET6.0、Admin.NET,uniapp,vue3,elementplus开源的地方门户网站项目
  • 苹果上架全流程详解,iOS 应用发布步骤、App Store 上架流程、uni-app 打包上传与审核要点完整指南
  • PyTorch之张量创建与运算
  • Python爬虫实战:研究GUI 可视化界面,构建电商数据采集和分析系统
  • 对浏览器事件机制的理解
  • JavaWeb05
  • 浅聊一下ThreadLocal
  • 部署大模型的极简笔记
  • linux面试题记录
  • 深度解码OpenAI的2025野心:Codex重生与GPT-5 APIKey获取调用示例
  • 文献阅读笔记:脉冲神经网络最新文献合集-IV
  • STM32学习路线开启篇:芯片简介与课程简介
  • 第七章 ELK Stack高级应用与集成
  • 认识跨平台UI框架Flutter和MAUI区别,如何选。
  • 9.11-QT-QT的基本使用
  • 线程安全相关的注解
  • [超表面论文快讯-242] PR-微波超四元数涡旋阵列洛书加权锁定成像加密-江南大学王继成、上海科技大学王雄团队
  • 质量特性工程
  • 性能测试-jmeter10-分布式测试
  • Java中方法重写与重载的区别
  • 【代码随想录算法训练营——Day9】字符串——151.翻转字符串里的单词、卡码网:55.右旋转字符串、28.实现 strStr()、459.重复的子字符串
  • 少儿舞蹈小程序(13)作品播放量累加及点赞
  • 【AI知识点】模型训练优化之——混合精度训练
  • 华为考试:HCIE数通考试难度分析
  • OpenHarmony app通过U盘升级配置