嘿!您似乎在 United States,您想使用我们的 English 网站吗?
Switch to English site
Skip to main content

解析体感设备Kinect(二)

值得一提的是,PrimeSense官网上给出的Reference Design的规格要高出许多,可以看出Kinect主要追求的是经济效益。我们注意到Kinect的电源和USB是同一个接口,而仅连接PC后Kinect的LED会点亮,但还不能执行主要功能。只有再接入电源后才能正式启动(Kinect的功率达到了12W,而普通USB一般是2.5W)。

上图从左向右,分别是OG12/0956/D306/JG05A红外发射器、VNA38209015彩色CMOS以及Microsoft/X853750001/VCA379C7130红外CMOS。中间的摄像头提供了彩色VGA图像,剩余的两个元件主要用于提供QVGA深度数据。

那么关键问题就是,PrimeSense是如何获取这些深度数据呢?

截至目前,最精确可行的光学测距方法可能就是ToF(time of flight),例如LDM激光测距、IDM红外测距等等具体技术已经实现了产品化;另一方面,如今许多三维扫描仪都采用了三角测距法,特别是对手持式扫描设备而言。然而上述这些技术都不太适用于Kinect这种家用设备:首先是测量环境的限制,其次还要考虑成本因素。

PrimeSense的测距技术类似一部分结构光技术,“结构光”指一些具有特定模式的光,其pattern的图案可以是线、点、面等多种图形。结构光扫描法的原理是首先将结构光投射至物体表面,再使用摄像机接收该物体表面反射的结构光图案,由于接收图案必会因物体的立体形状而发生变形,那么就可以试图通过该图案在摄像机上的位置和形变程度来计算物体表面的空间信息。普通的结构光方法仍然是部分采用了三角测距原理进行深度计算。

参考Google Patents上的Range mapping using speckle decorrelation(No. US7433024B2)以及DEPTH MAPPING USING PROJECTED PATTERNS(No. 0118123 A1)两篇技术文档,已经有前人对PrimeSense的方法进行了详细解释。

PrimeSense将其深度测量技术命名为Light coding,与结构光法不同的是,Light coding的光源被称为“激光散斑(laser speckle)”,是当激光照射到粗糙物体或穿透毛玻璃后形成的随机衍射斑点。这些散斑具有高度的随机性,而且会随着距离的不同变换图案。也就是说空间中任意两处的散斑图案都是不同的。只要在空间中打上这样的结构光,整个空间就都被做了标记,把一个物体放进这个空间,只要看看物体上面的散斑图案,就可以知道这个物体在什么位置了。

当然,在这之前要把整个空间的散斑图案都记录下来,所以要先做一次光源的标定。在PrimeSense的专利上,标定的方法是这样的:每隔一段距离,取一个参考平面,把参考平面上的散斑图案记录下来。假设Natal规定的用户活动空间是距离电视机1米到4米的范围,每隔10cm取一个参考平面,那么标定下来我们就已经保存了30幅散斑图像。需要进行测量的时候,拍摄一副待测场景的散斑图像,将这幅图像和我们保存下来的30幅参考图像依次做互相关运算,这样我们会得到30幅相关度图像,而空间中有物体存在的位置,在相关度图像上就会显示出峰值。把这些峰值一层层叠在一起,再经过一些插值,就会得到整个场景的三维形状了。

值得注意的是,尽管没有对PrimeSense下手,微软在前不久先后收购了3DV和Canesta,两家均握有大量ToF视频跟踪技术专利的科技公司。可以想见,Kinect作为消费市场的零号机,可能很快就会有更加强大的商用同伴诞生。

Kinect的功能

Kinect怎么侦测3D影像?(在此仅举此例)

2010年4月,微软与一家以色列公司PrimeSense合作采用Light Coding技术。

1.Light Coding技术

Light Coding技术理论是利用连续光(近红外线)对测量空间进行编码,经感应器读取编码的光线,交由晶片运算进行解码后,产生成一张具有深度的图像

Light Coding技术的关键是Laser Speckle(雷射光散斑),当雷射光照射到粗糙物体、或是穿透毛玻璃后,会形成随机的反射斑点,称之为散斑

散斑具有高度随机性,随着距离变换图案,空间中任何两处的散斑都是不同的图案,等于将整个空间加上了标记,所以任何物体进入该空间、以及移动时,都可确切纪录物体的位置。

2.光源标定

测量前对原空间的散斑图案作记录,先做一次光源的标定,方法如下:每隔一段距离,取一个参考平面,把参考平面上的散斑图案记录下来。

假设Kinect规定的用户活动范围是距离电视机1m到4m,每隔10cm取一个参考平面,标定后保存了30幅散斑图像。

测量时拍摄一副待测场景的散斑图像,将这幅图像和保存的30幅参考图像依次做互相关运算,得到30幅相关度图像。

空间中有物体存在的位置,在相关度图像上就会显示出峰值。把这些峰值一层层叠在一起,经过插值运算,即可得到整个场景的三维形状。

3.Kinect侦测3D影像

Kinect利用红外线发射器发出雷射光,通过红外线CMOS摄像机记录下空间中的每个散斑,结合原始散斑图案,通过晶片计算出具有3D深度的图像

Kinect的应用实例

1.控制机器人

机器人在很多场合具备应用价值。Kinect提供了一种更好的方式去控制机器人

2.虚拟试衣镜

虚拟试衣已经发展了很长一段时间,在俄罗斯、美国出现了大量的Kinect相关的电子导购系统。Kinect 虚拟试衣间应用: