3.4 深度图像成像原理

Kinect有发射、捕捉、计算视觉重现的类似过程。严格说来,Kinect的“深度眼睛”是由一个红外投影机和红外摄像头组合而成的,投影和接收互为重叠,如图3-27所示。

可以说,Kinect的成功也在于其能廉价而有效地捕捉到深度图像。它能收集视野范围内的每一点,并形成一幅代表周围环境的景深图像。传感器以每秒30帧的速度生成景深图像流,实时3D地再现周围环境。

3.4.1 ToF光学测距与结构光测量

红外摄像头大体可以划分为两类(见图3-28):
基于飞行时间(Time of Flight,ToF)原理的摄像头,它通过测量光脉冲之间的传输延迟时间来计算深度信息。例如Mesa Imaging SwissRanger 4000和PMD Technologies CamCube 2.0,它们都价格不菲。
结构光测量,基于光编码,投射已知的红外模式到场景中,通过另外一个红外CMOS成像器所捕获到的该模式的变形,从而最终来确定深度信息的摄像头,如PrimeSensor和Microsoft Kinect。事实上,图3-28c和图3-28d使用的是同一红外摄像头。Kinect属于图3-28d所示情况。
2009年微软收购了以色列公司3DV Systems,它拥有ToF摄像头的专利。ToF是“Time of Flight”的缩写,从字面上也可大致猜出其含义:计算光线飞行的时间。首先让装置发出脉冲光,并且在发射处接收目标物的反射光,即由测量时间差算出目标物的距离。3DV的ZCam就是采用ToF技术,使用红外线以及Accelerometers加速度计感应器,感测立体空间的相对位置变化,建构灰阶距离影像的深度感应器。感光芯片需要飞秒级的快门来测量光飞行时间,据说芯片中用到砷化镓,使其时钟频率提高到上百GHz。于此同时也提高了工艺成本。

光学测距方法是ToF目前较为精确可行的技术,也有诸如LDM激光测距、IDM红外测距等具体产品,但都价格不菲。因此,该项技术对于Kinect这种消费电子产品来说不适用:一方面是测量环境的限制,更主要的是成本因素。这样看来,微软收购3DV Systems,只是为了动作感测的专利权、并取得领先地位。
“结构光”指一些具有特定模式的光,其模式图案可以是点、线、面等。结构光扫描法的原理是首先将结构光投射至物体表面,再使用摄像机接收该物体表面反射的结构光图案,由于接收图案必会因物体的立体型状而发生变形,故可以试图通过该图案在摄像机上的位置和形变程度来计算物体表面的空间信息。普通的结构光方法仍然是部分采用了三角测距原理的深度计算。
结构光测量技术作为一种快速、便携、高精度的三维测量技术,在汽车、航空、模具、医疗等领域均得到了广泛的应用。相位计算是基于相位测量的结构光三维测量中的关键技术之一,最终输出是三维点云,进行相关的三维建模和测量。

3.4.2 Light Coding技术

PrimeSense将其深度测量技术命名为Light Coding,顾名思义,就是用光源照明给需要测量的空间编上码,属于结构光技术的一种,只是深度计算方式不一样,微软Kinect深度图像就是采用了这种技术。
与结构光法不同的是,Light Coding的光源称为“激光散斑”,是激光照射到粗糙物体或穿透毛玻璃后随机形成的衍射斑点。这些散斑具有高度的随机性,而且会随着距离的不同而变换图案。也就是说空间中任意两处的散斑图案都是不同的。只要在空间中打上这样的结构光,整个空间就都被做了标记,把一个物体放进这个空间,只要看看物体上面的散斑图案,就可以知道这个物体在什么位置了。当然,在这之前要把整个空间的散斑图案都记录下来,所以要先做一次光源标定,如图3-29所示。
概括一下,Light Coding与传统的ToF、结构光技术的不同之处在于:
1)和传统的ToF、结构光的光源不同,使用“Light Coding”技术的PrimeSense的PS1080系统级芯片负责对红外光源进行控制,投射出具有三维纵深的“立体编码”。这种光源称为激光散斑,是当激光照射到粗糙物体或穿透毛玻璃后形成的随机衍射斑点。
2)不需要特制的感光芯片,只需要普通的CMOS感光芯片,这让方案的成本大大降低,对Kinect消费及电子产品的市场化至关重要。
3)Light Coding技术不是通过空间几何关系求解的,它的测量精度只和标定时取的参考面的密度有关,参考面越密测量越精确。传统结构光方法采用三角视差测距,基线长度(光源与镜头光心的距离)越长越好。换句话说,不用为了提高精度而将基线拉宽。这其中的奥秘就是“激光散斑原理”。

3.4.3 激光散斑原理

激光在散射体表面的漫反射或通过一个透明散射体(如毛玻璃)时,在散射表面或附近的光场中可以观察到一种无规分布的亮暗斑点,这种斑点称为激光散斑(Laser Speckles)。
如果散射体足够粗糙,这种分布所形成的图样是非常特殊和美丽的,如图3-30所示。

散斑现象普遍存在于光学成像的过程中,很早以前牛顿就此解释过恒星闪烁而行星不闪烁的现象。由于激光的高度相干性,激光散斑的现象就更加明显。最初人们主要研究如何减弱散斑的影响。在研究的过程中发现散斑携带了光束和光束所通过的物体的许多信息,于是激光散斑产生了许多的应用,例如用散斑的对比度测量反射表面的粗糙度,利用散斑的动态情况测量物体运动的速度,利用散斑进行光学信息处理,甚至利用散斑验光等。
激光散斑是由无规散射体被相干光照射产生的,因此是一种随机过程。要研究它必须使用概率统计的方法。通过统计方法的研究,可以认识到散斑的强度分布、对比度和散斑运动规律等特点。最重要的特点就是,这种散斑具有高度的随机性,而且随着距离的不同会出现不同的图案,也就是说,在同一空间中任何两个地方的散斑图案都不相同。只要在空间中打上这样的结构光然后加以记忆就让整个空间都像是被做了标记,然后把一个物体放入这个空间后只需要从物体的散斑图案变化就可以知道这个物体的具体位置。

3.4.4 光源标定

PrimeSense的专利中是这样解释“标定方法”的:每隔一段距离,取一个参考平面,把参考平面上的散斑图案记录下来。

假设Kinect规定的用户空间是距离摄像头1~4m的范围,每隔1cm取一个参考平面,那么标定下来我们就保存了300幅散斑图像。标定的间距越小,精度越高,如图3-31所示。需要进行测量的时候,拍摄一幅待测量的散斑图像,将这幅图像和我们保存下来的300幅参考图依次做互相关运算,进而得到300幅相关度图像。而空间中的物体存在的位置,会在相关图像上会显示出峰值,把这些峰值叠加在一起,再经过插值运算后就会得到整个场景的三维形状了。
注 “插值运算”是一种增加图像尺寸的方法。很多数码相机通过此技术实现数字变焦(DigitalZoom)。插值算法有许多种,目的都是有效地平滑扩大图像而不导致锯齿产生。
如果你有一台夜视摄像机(比如Sony HDR-CX700E,启用NIGHTSHOT模式),晚上在房间关掉灯,你可以观察到Kinect红外散斑投影在房间里,星星点点。画面因为红外拍摄的原因都显示为绿色,如图3-32所示。

为什么Kinect注意事项中警告:不要让阳光直射传感器,不要让传感器接近任何热源?
这个问题现在很好理解了,Kinect投射出近红外光源,通过目标物体产生的“散斑”进行“深度计算”。太阳光谱和热源会干扰Kinect投射出的近红外光源,正如微波炉对手机信号或者FM广播的干扰一样。
关于Light Coding的其他相关内容可以到Micosoft Academy或者Google Patents上查询两篇文档:
Range mapping using speckle decorrelation(No. US7433024B2)
DEPTH MAPPING USING PROJECTED PATTERNS(No. 0118123 A1)

《Kinect应用开发实战:用最自然的方式与机器对话》一3.4 深度图像成像原理...相关推荐

  1. Kinect应用开发实战:用最自然的方式与机器对话

    <Kinect应用开发实战:用最自然的方式与机器对话> 基本信息 作者: 余涛 出版社:机械工业出版社 ISBN:9787111400929 上架时间:2012-11-6 出版日期:201 ...

  2. 《Kinect应用开发实战:用最自然的方式与机器对话》一3.5 从深度图像到骨骼图...

    3.5 从深度图像到骨骼图 现在Kinect通过红外摄像头已经可以看到三维的世界了,下一件事就是分辨出视野中可能是人体的移动物体,就像人眼下意识地聚焦在移动物体上. 这个过程非常重要,下面重点探讨如何 ...

  3. 《Kinect应用开发实战:用最自然的方式与机器对话》一3.2 基于“管道”的系统架构...

    3.2 基于"管道"的系统架构 Kinect for Xbox 360是一个基于"管道"的体系架构,如图3-3所示. Kinect传感器设备提供三大类的原始数据 ...

  4. 《Kinect应用开发实战:用最自然的方式与机器对话》一第1章 自然人机交互技术漫谈1.1 自然人机交互技术的发展...

    第1章 自然人机交互技术漫谈 自然用户界面(Natural User Interface, NUI)是指一类无形的用户界面."自然"一词是相对图形用户界面(GUI)而言的,GUI要 ...

  5. 《Kinect应用开发实战:用最自然的方式与机器对话》一3.1 Kinect for Xbox 360的产品设计...

    3.1 Kinect for Xbox 360的产品设计 Kinect作为一个传感器,本质上也只是一个输入设备.它的成功来源于消费者对自然人机交互的渴望和认可,以及普通大众都能接受的价格.比起传统摄像 ...

  6. 《Unity虚拟现实开发实战》——第3章,第3.6节虚拟现实设备的运行原理

    本节书摘来自华章出版社<Unity虚拟现实开发实战>一书中的第3章,第3.6节虚拟现实设备的运行原理,作者[美] 乔纳森·林诺维斯,更多章节内容可以访问云栖社区"华章计算机&qu ...

  7. OpenNI体感应用开发实战 (Kinect相机)

    一直以为Kinect是双目摄像机,或者是三目,看到那三个摄像头怎么可能不产生这样的疑惑,实际上它确实是单目摄像机,它三个摄像头分别为:红外发射器,RGB彩色相机,红外接收器.而其中,红外发射器和红外接 ...

  8. 自动驾驶场景解析:图像分割开发实战

    企业管理者说, 我想尝试在业务场景中应用AI,但没有资深算法工程师,怎么办? 业务场景复杂,数据积累不足.质量参差不齐,如何快速优化? 各大厂商的AI芯片和硬件层出不穷,性能.功耗.价格,我该如何选择 ...

  9. 唐金州的Vue开发实战学习笔记(生态篇)

    Vue开发实战学习笔记 Vuex Why Vuex How Vuex Vuex的核心概念和底层原理 Vuex的最佳实践 Vue Router Why Vue Router 路由类型及底层原理 Nuxt ...

最新文章

  1. Linux环境ddd安装与使用
  2. 证明矩阵添加一列(行),则其秩或不变,或增加1
  3. xml字符串转对象xml文件转对象
  4. 支持将数据导出到Excel文档的时候设置单元格格式的.NET控件Spire.DataExport
  5. php连接数据库输出的中文几个字就…
  6. c语言程序设计7.4思考题答案,C语言程序设计习题集及答案(7)
  7. 2017 SEERC Divide and Conquer 树上差分
  8. 批处理作业调度问题 ——回溯法详解
  9. sql安装程序初始化_SQL Server安装程序–即时文件初始化(IFI)
  10. 世界上第一台计算机诞生-1946年2月14日
  11. android:一个容易被遗忘的强大工具
  12. LeetCode—Python版数组简单题(一)
  13. 三维点云配准方法(两帧)
  14. Kafka集群安装部署、Kafka生产者、Kafka消费者
  15. 2021-10-18word2vec训练过程
  16. SQLiteDev与.NET日期格式,该字符串未被识别为有效的 DateTime
  17. 保险数据管理学会IDMA简介
  18. 爬取QQ空间说说及简易数据分析
  19. 基于SPM8或CAT12进行的VBM分析
  20. 特征工程:归一化与标准化

热门文章

  1. 【转载】图像缩放与插值理论基础
  2. 标准C++中的string类的用法总结
  3. 浏览器缓存导致FLASH资源更新问题的解决方案
  4. 【C++】【十一】二叉树递归遍历与非递归遍历的实现及思路
  5. emacs参考资料整理
  6. Apache模块开发helloworld无错版
  7. 把Doc文档转换成HTML等其它格式
  8. 在ASP.NET中跨页面实现多选
  9. OpenCV实现遍历文件夹下所有文件
  10. 【数据库】sqlite3数据库备份、导出方法汇总