Brief investigation to Kinect and 3D vision


Shang wanted to exhibit 3D vision guided robot arm during Industral Exhibition Show in Shanghai, so I investigated the possible solution about using Kinect as vision source.


Kinect简介

Kinect是微软在200962日的E3大展上正式公布的XBOX360体感周边外设。是一种3D体感摄影机(开发代号“Project Natal”),同时它导入了即时动态捕捉、影像辨识、麦克风输入、语音辨识、社群互动等功能。玩家可以通过这项技术在游戏中开车、与其他玩家互动、通过互联网与其他Xbox玩家分享图片和信息等。微软的Kinect不需要使用任何控制器,它依靠相机捕捉三维空间中玩家的运动。

blob.pngblob.png

Kinect

Kinect一共有三个Camera,其中中间的一个是RGB Camera,用来获取640x480的彩色图像,每秒钟最多获取30帧图像;两侧是两个景深(3D Depth)传感器,用来检测玩家的相对位置,原理和人眼立体成像是一样的,不过这两个传感器使用的是红外线,所以说奥巴马玩不了Kinect的人一定是居心叵测。Kinect两侧是麦克风,下边还有一个可移动底座,用来调整Kinect的仰角。

特制的软件已经把Natal训练得能成功识别人的脸部细节变化。而在识别人体动作的时候,精度可以达到4厘米。这个系统也辨识人脸,手臂动作,腿部动作等等,并很快在画面中显示出来。它还可辨认声音和接受命令。

PrimeSense公司为微软提供了其三维测量技术,使用的是一种光编码(light coding)技术,他的激光散斑光源在空间中打出去一个具有三维纵深的“体编码”,对整个空间做标记。把一个物体放进这个空间,只要看看物体上面的散斑图案,就可以知道这个物体在什么位置了。

微软 Xbox 360 最新体感外设 Kinect 凭借发布后首两个月800万台,平均每天133,333台的销量,被评为有史以来销售最快的电子消费产品。

 

Kinect for Windows

Kinect 体感游戏在Xbox 360 上获得很好的评价,同时Kinect也可应用于windows平台开发。微软在 2011 6 月推出了 Kinect for Windows SDK Beta为各行各业不同规模的企业,提供开发和交付人机自然交互的创新型解决方案,行业涉及零售、娱乐、医疗保健等。

Kinect for Windows 是一个专门供软件开发人员和机构在计算机上进行体感应用创新的体感设备。开发者可以购买适用于应用程序和解决方案开发目的Kinect for Windows感应器(京东¥1899http://item.jd.com/730612.html,下载免费软件开发工具包(SDK)(http://www.microsoft.com/en-us/download/details.aspx?id=43661),开发和部署响应人类动作、手势和声音指令的交互应用程序。为程序开发人员开启了无限宽广的世界,让他们可以轻松在Windows上发挥Kinect的技术潜力,任何有志于藉助Kinect技术对自然用户接口进行创作性探索的人,都能够享受到它所带来的无限可能。

Kinect for Windows SDK主要是针对Windows7设计,内含驱动程序、丰富的原始感测数据流程式开发接口(RawSensorStreamsAPI)、自然用户接口、安装文件以及参考数据。Kinect for Windows SDK可让使用C++C#VisualBasic语言搭配MicrosoftVisualStudio2010工具的程序设计师轻易开发使用。

The Kinect for Windows 感应器 采用深度感应技术,内置彩色摄像机、红外(IR)发射器和一个麦克风阵列,能够感知人类的位置、动作和声音。第二代感应器的深度保真提高了 3 倍,极大的提升了对物体包括微小物体的识别度和清晰度。

主要特色包括:

原始感测数据流:开发人员能够直接取得距离传感器、彩色摄影机以及四单元麦克风数组的原始数据流。这些数据让开发人员可以利用Kinect传感器的低阶数据流为基础进行应用程序开发。

骨架追踪:此套SDK能够追踪Kinect视野内一位或二位用户的骨架影像,便于建立以体感操作的应用程序。

先进的音效功能:包括抑制噪音与回音消除功能、可透过音波形式辨识声音来源,并且能与Windows语音识别API整合。

简易的安装:这套SDK提供了在Windows7上的标准化安装方式,无需复杂的组态设定,安装档案大小也不到100MB。开发人员只要购买标准的Kinect传感器,就能在几分钟内立即开发。

完整的说明文件:SDK也随附详细的高质量技术文件。除了内建的说明档案之外,还包括了多个范例详细的逐步分解说明。

 

相关详细信息可以访问官网 www.kinectforwindows.com.cn 

一段介绍的视频http://yuntv.letv.com/bcloud.html?uu=82abd5491f&vu=6b50cba5c8&width=750&height=422

Kinect SDK的视频开发教程:

http://channel9.msdn.com/Series/KinectSDKQuickstarts?sort=recent#tab_sortBy_recent

Kinect SDK的开发指南:

http://research.microsoft.com/en-us/um/redmond/projects/kinectsdk/guides.aspx

Kinect SDK的官方论坛:

http://social.msdn.microsoft.com/Forums/en-US/kinectsdk/threads

相关安装与使用方法:

Kinect for Windows SDK开发初体验(一)环境配置http://www.cnblogs.com/aawolf/archive/2011/06/17/2083249.html

Kinect for Windows SDK开发初体验(二)操作Camera(获取RGB Camera数据, 获取Depth信息)

http://www.cnblogs.com/aawolf/archive/2011/06/18/2084352.html

Kinect for Windows SDK开发初体验(三)骨骼追踪(动作捕捉)

http://www.cnblogs.com/aawolf/archive/2011/06/21/2086139.html

 

软件开发环境的非官方组合

1CL NUI Platform

NUI的大牛AlexP开发(他开发的其他著名产品包括PS3windows驱动),目标平台是windows7,能够获取彩色摄像头,深度传感器以及加速度传感器数据,使用简单方便。

2OpenKinect/libfreenect

由号称第一个破解KinectHector Martin发起,可以到这里下载,目标平台是Linux and Mac,据说有人成功移植到了windows上。因为很多geek都是Mac的拥趸,所以开发参与者众多,不仅仅是个可以获得数据的drivergeek们还写了其他高级的东西,比如我前面提到的骨骼化,将彩色摄像头作为纹理贴在深度数据上等等。

3OpenNI

OpenNI(opennatural interface开放自然交互)是一个多语言,跨平台的框架,它定义了编写应用程序,并利用其自然交互的API。它不是专为Kinect开发,但有Kinect的生产商PrimeSense的支持。这个是目前相对来说用的比较多的非官方组合:SensorKinect + NITE + OpenNI;其中SensorKinectKinect的驱动。NITEPrimeSense提供的中间件,可以分析Kinect读取的资料,输出人体动作等等

OpenNI最大的优势就是允许跨平台多设备,以及商业应用。但从原始数据的采集和预处理技术上看,微软的SDK似乎更稳定一些,况且还提供了不错的骨骼和语音支持。对于部分身体部位识别方面的功能,SDKbeta没有提供局部识别和跟踪,这需要自己的后续开发(至少在相当一段时期内微软可能都不会提供此类功能)。OpenNi/NITE虽然提供了手势识别和跟踪,然而在全身骨骼姿势识别和跟踪上还要更多借鉴微软的产品。

因此,按照目前在社区中的表现,SDK betaOpenNi/NITE孰优孰劣还真无法一下子确定。而且随着越来越多的开发者加入微软这一方,SDK beta的普及可能会更快,但在更高层次的应用上,对二者的选用往往是需要一定智慧的。

 

可行性分析

经过近些年发展,Kinect已经发展的比较成熟,视觉性能优良,对于人体运动的三维捕获应该不成问题。近些年一阵火热之后,其开发环境也比较成熟,相关资料文档比较充足,相关论坛博客也有不少例子可以借鉴模仿,开发者进行商业开发的例子也不少(在线试衣、新车展示等)。

相比,将Kinect传感器应用于物体检测的例子并不多。国外有将Kinect用作低成本3D图像系统的文章(http://www.vision-systems.com/articles/print/volume-17/issue-9/features/kinect-api-makes-low-cost-3-d-imaging-systems-attainable.html)也有研究团队对其精度进行分析(http://bit.ly/RtNqRO),发现 the point spacing in the depth direction is as large as 7 cm at a range of 5 m 这样的精度可能对于高准确高速度的3d视觉系统并不合适,但在机器人引导,姿势识别,医疗图像系统方面还是有很大应用前景的。

blob.pngblob.png

Figure Infrared image of the pattern of speckles projected on a sample scene

 

机器视觉软件提供者也提供Kinect的数据接入开发工具,如HALCON接口可将深度图像转换为xyz的数据,从而用HALCONlibrary开发系统用于物品选取、包装和码垛堆积。另外,EVT 公司的MVTec NI 公司的 LabVIEW等产品也对Kinect支持。

以上公司的产品为Kinect的开发提供方便途径,同样也有一些开源的接口可供使用。Willow Garage为机器人开发了一套基于OpenCV 元操作开源的Kinect模块ROS Kinect,包含了底层驱动,视觉启动文件 (http://bit.ly/Q2FpXC)

Kinect的大量应用于姿势识别和3d模型,但在工业界和医疗应用方面正在缓缓起步。西北大学研究人员开发了一个基于Yaskawa Motoman Robotics的机器人,能够辨识随机摆放的物品。从Kinect获取数据后,去除背景,3d数据被分析,得出路径操作机械手。视频演示:http://blog.robotiq.com/bid/53815/Autonomous-Robot-Grasping-using-ROS-Industrial

blob.png

机器人的实际应用出现在2011 Pack Expo showMotoSight 3d空间视觉系统能够移动随意摆放的物品。

 

 Kinect用于工业应用场合正在起步,可能相关资料没有用于人体动作检测那么丰富,但是有广阔的发展空间和商业前景,值得尝试开发。开发过程中如果有现成公司的视觉库,如HALCONLABVIEW,将大大简化开发过程,但如果在缺乏足够资料和技术支持的情况下从底层入手可能比较困难,所需要花费的时间也比较多。

另外,Kinect还有一块声音检测的功能,但这一功能在本项目中毫无作用,可能对产品最终的成本控制造成不利的影响。

 


Last Article Next article

Comment 评论



Share 分享

New Users 最新加入

  • hokurikustr

  • refrain

New comments 最新评论

test123: aasdas Details Apr 13 16:39
admin: Thanks! Details Apr 09 11:46
admin: Google map api Details Apr 09 11:46
lqj12: cooooooooool Details Apr 08 21:34
Yunhan Huang: 这个功能是如何实现的? Details Apr 08 13:23