结构光法:为解决双目匹配问题而生

前面文章《深度相机原理揭秘--双目立体视觉》中提到基于双目立体视觉的深度相机对环境光照强度比较敏感,且比较依赖图像本身的特征,因此在光照不足、缺乏纹理等情况下很难提取到有效鲁棒的特征,从而导致匹配误差增大甚至匹配失败。

而基于结构光法的深度相机就是为了解决上述双目匹配算法的复杂度和鲁棒性问题而提出的,其他处理步骤和双目立体视觉类似,本文不再赘述。结构光法不依赖于物体本身的颜色和纹理,采用了主动投影已知图案的方法来实现快速鲁棒的匹配特征点,能够达到较高的精度,也大大扩展了适用范围。

结构光深度相机原理示意图(注意E端发射的带图案的光源)

一、深度图效果:结构光vs.双目

下图左是普通双目立体视觉深度相机拍摄的图像和对应的深度图结果;下图右是结构光法的深度相机投射的图案及对应的深度图结果,明显可以观察到在同样的场景下结构光法得到的深度图更完整,细节更丰富,效果大大好于双目立体视觉法。

双目立体视觉(左)和结构光(右)深度相机拍摄的图像和对应的深度图

二、投射图案的编码方式

结构光法投射的图案需要进行精心设计和编码,结构光编码的方式有很多种,一般分为如下几大类:

1、直接编码(direct coding)

根据图像灰度或者颜色信息编码,需要很宽的光谱范围。

优势:对所有点都进行了编码,理论上可以达到较高的分辨率。

缺点:受环境噪音影响较大,测量精度较差。

2、时分复用编码(time multiplexing coding)

顾名思义,该技术方案需要投影N个连续序列的不同编码光,接收端根据接收到N个连续的序列图像来识别每个编码点。投射的编码光有二进制码(最常用)、N进制码、灰度+相移等方案。

该方案的优点:测量精度很高(最高可达微米级);可得到较高分辨率深度图(因为有大量的3D投影点);受物体本身颜色影响很小(采用二进制编码)。

缺点:比较适合静态场景,不适用于动态场景;计算量较大(因为识别一个编码点需要计算连续N次投影)。

时分复用编码原理示意图

3、空分复用编码(spatial multiplexing coding

根据周围邻域内的一个窗口内所有的点的分布来识别编码。

该技术的优势:适用于运动物体。

缺点:不连续的物体表面可能产生错误的窗口解码(因为遮挡)

空分复用编码原理示意图

三、Kinect1原理

业界比较有名的结构光方案就是以色列PrimeSense公司的Light Coding的技术,该方案最早被应用于Microsoft的明星产品Kinect1(Kinect2是基于TOF的技术)上。下面以Kinect1为例,介绍一下其工作原理。

Kinect1的红外IR发射端投射人眼不可见的伪随机散斑红外光点到物体上,每个伪随机散斑光点和它周围窗口内的点集在空间分布中的每个位置都是唯一且已知的。这是因为Kinect1的存储器中已经预储存了所有的数据。

Kinect1投影的伪随机散斑

这些散斑投影在被观察物体上的大小和形状根据物体和相机的距离和方向而不同。如下图所示。

Kinect1根据三种不同的距离使用了三种不同尺寸的散斑,如下图所示。这样的目的是为了在远中近三种距离内都能得到相对较好的测量精度:

近距离(0.8 – 1.2 m):可以获得较高的测量精度

中距离(1.2 – 2.0 m):可以获得中等的测量精度

远距离(2.0 – 3.5 m):可以获得较低的测量精度

Kinect1测量精度如下:

spatial x/y resolution: 3mm @2m distance

depth z resolution: 1cm @2m distance

四、iPhone X原深感相机是缩小版更强大的Kinect1

2013年11月苹果公司以3.45亿美元收购了PrimeSense公司。之后,苹果一直在推动PrimeSense的深度相机向小型化发展。

2016年7月,苹果公布了新型3D手势控制专利,是一个内嵌在类似手机的iOS设备上的图形投影仪,可以识别出用户的手势操作。

2017年9月,苹果发布了重磅产品iPhone X。其中摄像技术最大的创新就是使用了前置深度相机(苹果称之为Truedepth)。虽然苹果没有透露具体的技术细节,但是从官网介绍来看,投影3万个不可见的红外光点完全符合结构光方案(而不是TOF)的特征。另外结构光方案和TOF方案相比,还具有功耗低,精度高的优势。这对移动设备做近距离的人脸识别来说,是极大的技术优势。

点阵投影在人脸上的示意图

(投影的是人眼不可见的红外光,这里只是示意图)

iPhone X利用前置的原深感相机开发了一系列新奇有趣的玩法,比如FaceID、前置背景虚化、人像光效、动画表情、clips等。可见iPhone X的结构光深度相机和Kinect1相比深度图测量更加精细准确,性能有了质的飞跃。

iPhone X基于原深感相机开发的动画表情功能

因此iPhone X的前置原深感相机可以认为是一个缩小版的功能更强的Kinect1。

五、结构光法优缺点总结

根据前面的原理介绍,我们总结一下基于结构光法深度相机的优缺点。

1、优点

1)、由于结构光主动投射编码光,因而非常适合在光照不足(甚至无光)、缺乏纹理的场景使用。

2)、结构光投影图案一般经过精心设计,所以在一定范围内可以达到较高的测量精度。

3)、技术成熟,深度图像可以做到相对较高的分辨率。

2、缺点

1)、室外环境基本不能使用。这是因为在室外容易受到强自然光影响,导致投射的编码光被淹没。增加投射光源的功率可以一定程度上缓解该问题,但是效果并不能让人满意。

2)、测量距离较近。物体距离相机越远,物体上的投影图案越大,精度也越差(想象一下手电筒照射远处的情景),相对应的测量精度也越差。所以基于结构光的深度相机测量精度随着距离的增大而大幅降低。因而,往往在近距离场景中应用较多。

3)、容易受到光滑平面反光的影响。

最后,给出几种主流的结构光的深度相机及参数。

几种结构光深度相机的参数

深度相机(三)——结构光(iPhone X 齐刘海原理)相关推荐

  1. 【深度相机系列一】iPhone X的原深感相机到底是个什么玩意?

    本文已经首发在个人微信公共号:计算机视觉life(微信号CV_life),欢迎关注! 9月13日苹果发布了致敬十周年的新机型iPhone X,其中前置原深感(TrueDepth)相机引起了极大的舆论关 ...

  2. 3D激光线扫相机与结构光相机的区别

    激光线扫相机 激光相机基于三角测量,可精确捕获3D形状(数百万个点).更精确地说,它们的工作原理是将激光点或激光线投射到物体上,然后用传感器捕获其反射.由于传感器的位置与激光源的距离已知,因此可以通过 ...

  3. [结构光三维重建] 2、基于结构光的三维重建系统工作原理总结

    概念 基于结构光三维重建系统模型,如下图所示: 基于结构光的三维成像,实际上是三维参数的测量与重现,需要主动去投射结构光到被测物体上,通过结构光的变形来确定被测物的尺寸参数,是一种主动三维测量方式. ...

  4. iOS开发适配iPhone X 齐刘海处理,代码适配iPhoneX

    我的简书新地址,欢迎点击查看哦~ 今天手头工作完事了,然后升级了Xcode9,变化很大啊,先说大家一直关心的适配齐刘海吧. 这个东西好像出来之后 我QQ群里面iOS开发的很多人都炸了.确实这个齐刘海对 ...

  5. 判断是不是iphone x齐刘海屏幕

    判断规则 由于iphone x屏幕不是传统的长方形了,而是圆角矩形.如何判断当前的屏幕是长方形还是圆角矩形呢? 可以使用windows的safeAreaInsets方法,当返回值为0时,为长方形,非0 ...

  6. 深度相机分类介绍:结构光+立体深度+飞行时间

    深度相机分类介绍:结构光+立体深度+飞行时间 摘要 结构光(Structured Light and Coded Light) 双目立体视觉或者直译为立体深度(Stereo Depth) 飞行时间(T ...

  7. 3D相机技术调研(飞行时间TOF+双目+结构光)

    1. 深度估计3D相机方案 目前市面上常有的 3D 相机方案主要有3种: 飞行时间(Time of flight,TOF),代表公司微软Kinect2,PMD,SoftKinect, 联想 Phab, ...

  8. 三维重建学习笔记之深度相机入门篇

    说在前面: 一.学术词汇概念解析 学习历程:三维重建→深度相机→点云→点云配准 1.三维重建技术:基于视觉的三维重建,指的是通过摄像机获取场景物体的数据图像,并对此图像进行分析处理,再结合计算机视觉知 ...

  9. 大盘点!国内外深度相机汇总

    作者丨凳子花❀@CSDN 来源丨https://blog.csdn.net/qq_42759162/article/details/123519276 编辑丨3D视觉工坊 读前须知 本文只是学习笔记, ...

最新文章

  1. GitHub 中 Merge pull request 的 3 中选项说明
  2. 最近的裁员事件告诉我们,录音笔太重要了!送10个给大家备用!
  3. 多线程写文件_Shell简单实现多线程
  4. 自动释放池autoreleasepool
  5. 《MySQL DBA修炼之道》——2.3 其他MySQL分支的安装
  6. 【蓝桥杯】基础练习 十六进制转八进制(Java实现)
  7. flux storm_Apache Storm:如何使用Flux配置KafkaBolt
  8. 【深度学习】Tensorflow的基本操作
  9. intel simd 资料
  10. cookie,session与token的真正区别
  11. Springcould(二)之搭建服务注册中心Eureka集群
  12. 装什么软件测试笔记本耐用,我买了新电脑,用什么软件测试比较好?
  13. 毕业设计 stm32便携式老年人智能药箱系统 - 物联网 单片机 嵌入式
  14. DM达梦DSC共享集群+DW(单机)
  15. larval 捕获mysql错误_larval如何捕获mysql错误
  16. 【MySQL】在MySQL中如何给表起别名
  17. 10分钟带你彻底搞懂微内核架构
  18. 人工智能写作的春天来了 除了写作, 人工智能还能写诗、画画
  19. 自动化学报latex模板使用说明
  20. java虚拟机最新安卓版apk

热门文章

  1. 华展云1.0.2版本更新通告
  2. 优动漫PAINT-凌霄花画法
  3. Java 获取当前项目路径
  4. GitHub操作总结
  5. Win11无法使用动态壁纸怎么办?Win11用不了动态壁纸的解决方法
  6. AJAX异步请求(Asynchronous Javascript And Xml)
  7. java_web:基于mvc设计模式实现用户登录操作
  8. 如何彻底删除Tuxera NTFS?
  9. 2022-1-8 《聪明的投资者》学习笔记-19.股东与管理层:股息政策
  10. 文件列表中查找同一批次号中批次号最大的文件名称