好不容易有个安静的周日,可以安心下来写点最近看的东西了。
微软在五月份发布了 kinect for windows sdk1.5.0版本,分为两步:Step 1: Set-up Kinect for Windows SDK,下载链接为http://download.microsoft.com/download/0/B/C/0BC13867-7ECD-4AC8-9400-873FF267467D/KinectSDK-v1.5-Setup.exeStep 2: Set-up Kinect for Windows Developer Toolkit,下载链接为:http://202.120.118.98/download/3865189/4089463/1/exe/14/59/1341654662670_827/KinectDeveloperToolkit-v1.5.1-Setup.exe。其对软硬件的要求可以参考官方主页http://msdn.microsoft.com/en-us/library/hh855359,列出来如下:
支持的系统和架构:
- Windows 7
- Windows Embedded Standard 7
- If your Windows 7 edition is Windows 7 N or Windows 7 KN, you must install theMedia Feature Pack which is required by the Kinect for Windows runtime.
硬件要求:
最低配置为:
- 32-bit (x86) or 64-bit (x64) processors
- Dual-core, 2.66-GHz or faster processor
- USB 2.0 bus dedicated to the Kinect
- 2 GB of RAM
- Graphics card that supports DirectX 9.0c
- 软件要求:
- Microsoft Visual Studio 2010 Express or other Visual Studio 2010 edition
- .NET Framework 4 (installed with Visual Studio 2010)
- 还有就是发布的SDK了。
让人郁闷的是推荐的配置中CPU为2.66GHZ及其以上,让我这台几年前买的机器情何以堪呐。主频只有2.6GHZ,明显感觉跑Kinect程序时候CPU负荷到达93%以上。
简要摘录下Kinect for Windows 架构:
图一 软硬件对应用的交互示意图
图二 SDK架构
详细资料请看http://msdn.microsoft.com/en-us/library/jj131023
其内容较先前的版本有较大的提高,主要是增加了Kinect Studio工具,其能帮助开发者保存和回放从Kinect获得的深度和彩色流。另一个让开发者兴奋的是,增加了面部检测和跟踪功能,根据笔者对其这些天的研究,功能确实很强大。值得一说。
首先推荐下其官方主页:http://msdn.microsoft.com/en-us/library/jj130970.aspx#ID4E6KAE,里面对Kinect的人脸跟踪算法有个比较细致的介绍。根据笔者的搜集和推测,该人脸检测和跟踪算法主要是基于微软亚洲研究院最近几年发的几篇人脸的算法,呵呵,从中也看到了我们中国科研人员的智慧。分别为:Face Recognition with Learning-based Descriptor,http://research.microsoft.com/en-us/um/people/jiansun/papers/CVPR10_FaceReco.pdf和Face alignment via component-based discriminative search,http://research.microsoft.com/en-us/um/people/jiansun/papers/ECCV08_FaceAlign.pdf。这两篇论文提供的算法是主要支撑。
下面大致说下关于该算法的概况:该算法对人脸识别率约为84.9%,根据在实验室使用Kinect测试后(彩色图像为640*480)的效果,该算法的实时性较好,经算法处理的输出帧率约为22帧每秒,其有效识别距离可达到5m左右(光照正常);论文提出的算法:首先,用训练好的检测器检测出左、右眉心,左、右眼,鼻,嘴,上、下唇,脸部轮廓左、中和右3点,用11个点能确定人脸的基本形状,关于人脸非正面情况的脸部器官(component)定位;其次,使用判别搜索算法来确定脸部器官的具体精准位置,采用方向分类器来引导搜索脸部器官的方向。具体细节可以参考这两篇论文。
下面摘录下官方文档对其的技术说明(Technical Specifications):
1. 坐标系统
人脸跟踪SDK使用的是Kinect坐标系统来输出3D跟踪结果。原点位于摄像头的光学中心,Z轴指向用户,Y轴向上,X轴向左。符合右手定律。
图3 Kinect摄像头空间及其坐标
2.输入图像
脸部跟踪SDK接收Kinect彩色和深度图像作为其输入图像。人脸的跟踪质量受到彩色和深度图像的影响,例如昏暗和模糊的图像跟踪效果肯定不如光照好的或者是对比度强的图像。大的或者距离近的图像检测效果也会比较好。
3.API描述
人脸跟踪SDK跟踪引擎是免注册的COM对象。这些接口是规则的COM接口。接口如下:
人脸跟踪SDK使用以下的数据结构:
人脸跟踪的输出
按照官方的说明,其能跟踪人脸的87个点,但是笔者在实验的时候,跟踪到了瞳孔和鼻尖点,检测图如下:
其他方面的实验还在进行,希望能与童鞋们一起交流学习。
今天好凉爽,打开了很久没开的窗户,O(∩_∩)O~