本节介绍Xtion设备纯硬件的一些结构,可能会对大家认知Xtion设备,和对体感开发源数据的理解有很好的帮助,有兴趣的读者可以自行选择阅读。
2.3.1 感应器架构
Xtion体感设备所采用的架构为PS1080架构,这个架构的核心是一颗PS1080芯片,用于控制其他设备和处理其他设备返回的信息。在这个架构中,PS1080芯片所控制的核心的模块深度模块,由IR Light(红外激光器)和Depth CMOS(深度感应器)组成,PS1080芯片控制着IR Light和Depth CMOS两个感应器的工作,接收并处理这两个感应器所返回的数据。这两个感应器也是Xtion设备最为基础的功能。除此之外PS1080还可以选择性地控制其他外接模块,以ASUS Xtion Pro Live为例,PS1080芯片还控制着一个声音模块,其包含2个麦克风(Microphone)和4个外接音频源(External digital audio source),同时控制一个彩色图像模块,包含一个彩色图像感应器(Color Image CMOS),PS1080芯片控制这两个外接模块的工作,并接收和处理其返回数据。
PS1080架构中,PS1080芯片除了控制一些模块之外,还与其他的底层存在着一定的协议通信,比如设计到图像功能的Flash与传输数据所使用的USB,图2-5所表示的就是USB 1080架构的形象图,图中IR Light和Depth CMOS所组成的深度模块为PS1080芯片所控制的基础模块,其他模块为可选择的模块。不过图中有一点值得注意的是,PS1080芯片与USB通信所标注的是USB 2.0,实际上在OpenNI 1.5及后续版本,并且Xtion设备分位(firmware)在5.7.9及以上版本的情况下,Xtion设备已经可以使用USB 3.0通信了。
图2-5 PS1080架构
2.3.2 深度感应器工作原理
Xtion设备中3D深度感应模块所使用的技术称为光编码技术(Light Coding),这是一种光学式技术。其本质就是产生一张红外激光编码图(IR Light Coding Image),透过红外线投影机打到空间中,也就是用红外线发出发射前经过编码后、肉眼不可见的红外线散斑,打到空间中,使得空间中被加上标记,由于散斑具有高度的随机性,因此空间中任何两处的散斑都会是不同的图案。接收器在截取空间中的红外线影像后,把影像交给PS1080芯片进行计算,算出深度图。
把这个技术放到客厅这样的场景中,简单来说就是Xtion设备通过红外激光源(IR Light Source)发出有编码的红外线激光,这串激光打到客厅中的场景内的物体上之后,也就是所说的场景被这种不可见的已编码的红外激光给标记过了,而后接收器(一个标准的CMOS感应器)接收到返回来的红外激光,并把接收到的信息交给PS1080芯片进行处理,最后把结果返回给应用程序前台,也就形成了我们所看到的场景深度图像(Scene Depth Image),如图2-6所示。
图2-6 Light Coding技术
在Xtion设备中,PS1080芯片计算场景中不同处的距离所采用的方法涉及一种散斑的概念,所谓散斑就是当相干光从粗糙表面反射或从含有散射物的介质内部后向散射或透射时,会形成不规则的强度分布,出现随机分布的斑点,这些随机分布的斑点就称为散斑(Laser Speckles)。
粗糙表面和介质中散射子可以看做是由不规则分布的大量面元构成,相干光照射时,不同的面元对入射相干光的反射或散射会引起不同的光程差,反射或者散射的光波动在空间相遇时会发生干涉现象,当数目很多的面元不规则分布时,可以观察到随机分布的颗粒状结构的图案。如图2-7所示,左侧部分为深度效果图,右侧部分为散斑效果图。
图2-7 散斑效果图
散斑这种光学效果还有一个最重要的特点,就是具有高度的随机性,而随着距离的不同会出现不同的图案,也就是说,在同一空间中任何两个地方的散斑图案都不相同。只要在空间中打出这样的光并加以记忆,就等于是在整个空间中做了标记,然后把一个物体放入这个空间中根据物体散斑的变化就可以知道物体的位置,如图2-8所示。
图2-8 光源标定
Xtion设备中所使用的光源标定方法也是根据这样的原理设计的:每隔一段距离取一个参考平面,把参考平面上的散斑图案记录下来,根据比对接收器接收到的散斑图案,来判断该散斑点的具体位置。
依据Xtion设备中深度感应器的一些设备原理,再结合实际场景来回味分析一下Xtion设备的工作情形。以抓取客厅中的人物为例,通过Xtion设备上的IR Light Source向客厅空间发射出已经编码的红外线激光,这些红外线激光打到人的身上,并形成散斑,也就是对人物的位置进行了标定,这些光线经过散射之后被Xtion设备上的感应设备感知到,也就是一个标准的CMOS感应器。感应器将感应到的数据,交给Xtion设备中的PS1080 SoC,芯片内部根据这些数据计算出场景中的人物图像位置,并标定人物深度位置,生成一张立体的深度图像,通过USB传送给PC设备。Xtion设备的工作原理,如图2-9所示。
图2-9 Xtion设备工作原理
2.3.3 深度精确度分析
对于光学设备来说,其不可避免地要涉及精度问题和使用范围问题。作为开发者,熟悉这款设备的这些功能,对于基于这些设备所进行的开发有着决定性的作用,这里会给读者介绍一些关于Xtion设备的深度和精度内容,供读者阅读。
Xtion设备采用的是基于散斑原理的光源标定技术,所以散斑的形成与否对深度图有着决定性作用,图2-10是一张在彩色图中标注深度信息的图片,图中黑色部分表示无法精确获得深度信息。我们分析图中的黑色部分,首先在图靠近镜头的地方会无法获取深度,这是因为在这么近的距离无法形成有效的散斑。其次图片中照明灯部分也无法获取深度,因为Xtion所使用的是光学式探测,所以直接光照会对感应器的接收产生比较强的干扰,最后一部分黑色是在图片中最远的地方,以黑色斑点的形式出现,这是因为距离过远,散斑的密度也会相应降低,当距离过远时也不能形成有效的散斑。
图2-10 深度图样例
由红外线散斑打出去的特性可知,越近的地方散斑的密集度越高,精确度越高,反之越远深度精确度越低。而在开发的过程中,数据的精确度,稳定度通常也会给开发者处理带来一定程度上的差异,因此清楚地了解不同距离下的深度精确度,会给开发者带来意想不到的帮助。基于这样的需求,可以从数据方面精确地看出深度图在不同距离所有的精确度表现,由图2-11可知,Xtion设备的最佳工作范围为0.8~3.5m。
图2-11 深度精确分析图(距离范围:0~10000mm、建议范围:800~3500mm)
2.3.4 无法侦测物体深度
上面内容在介绍Xtion设备的原理时提到是由红外激光发射器发射的激光,激光在物体表面通过漫反射形成散斑,因此会出现一种情况,因为物体的材质问题而不能形成有效的散斑,所以Xtion设备并不能抓取到这些物体的深度数据,比如透明材质和镜面材质,对于这两种材质,Xtion设备均不能获取到有效的深度。
实际上在Xtion设备的工作中,包括材质的颜色也会影响到深度的侦测。如图2-12所示,图中包含了镜面材质、透明材质、不同颜色材质的不同表现。
图2-12 不同颜色对深度侦测的影响
除了材质问题,在遮蔽的情况下,Xtion设备也不能获取到物体的深度。当一个物体被其他非透明物体所遮挡,这样红外激光不能照射到物体,也就不能被Xtion设备的接收器所接收到,这时物体就没有正确的深度。如图2-13所示,椅子背部就对后方空间形成了遮蔽,深度图像以黑色部分显示。
图2-13 遮蔽效果图