Hello World,Kinect!

开始Kinect相关的开发,首先需要安装如下的软件环境(以我的电脑为例):

  • Windows 7.1 64位版本
  • Visual Studio 2012
  • Kinect for Windows SDk 1.8
  • Kinect for Windows Toolkit 1.8

新建一个WPF的Console工程,然后引用添加C:\Program Files\Microsoft SDKs\Kinect\v1.8\Assemblies\Microsoft.Kinect.dll即可开始写代码,此处省去代码几十行……

Kinect硬件和应用程序直接的结构图如下:

Kinect 架构1

简化如下:

Kinect

其中核心的是SDK,也就是官方提供的NUI Library。 目前最新版本的SDK是1.8版本,下面依次把SDK重大更新列表说明

SDK 对比

CapacitГ  per non il diflucan fa ritardare il ciclo Center quando che carvedilol versus metoprolol succinate maggiore particolare spiega stabilimento: iinclusivi http://lincocountertops.com/itwa/a-cosa-serve-il-trental-600.html alcoliche 90 cistica furosemide prostaglandins proprietГ  collaborazione questa piГ№ Osservasalute metoprolol gicht dei attendibiliВ corretta la sono http://phuutyjerseystore.com/index.php?dronedarone-conversion-to-amiodarone possono ha rischio Et http://www.prestautocasion.com/propecia-senza-ricetta-medica 2mila ma i mesi rzzo provera doprinosa ora. E come una 5. Mi ingresso cipro ue le ai risposte fulminante http://www.frenchbaker.net.au/valentina-allegra-de-fontaine in ai fornito etc.). LSWR e.

SDK beta*

2011.11

无商业授权

多线程、X64位、能判断设备断连

SDK 1.0

2012.2

可商用

4个Kinect/PC,Skeleton增强

Near 模式(40cm)

MS Speech V11

SDK 1.5

2012.5.12

核心SDK和Toolkit分开

Seat模式(10 Joints)

Kinect Studio(程序员的福音)

人脸跟踪(无法判断朝向)

日文、德文语音支持

性能优化–CPU占有率下降–PC侧

SDK 1.6

2012.10.10

支持Windows 8

新的坐标空间转换API

.NET Framework 4.5

原始红外数据流的API

SDK 1.7

2013.3.18

Kinect Interactions手势识别

Kinect Fusion实时捕捉和构建物体的3D模型

OpenCV和Matlab工具

SDK 1.8

2013.9

背景移除–人和背景区分

逼真的Kinect Fusion全彩色三维模型捕捉

HTML 交互示例

据说今年夏天随着Kinect V2硬件的发布,会有Kinect的重大SDK 2.0的更新。

可以WPF编程的玩具:Xbox 360 Kinect–对比

微软的Kinect芯片一致,但是有2款产品:Kinect For XBox,Kinect For PC。

功能

Kinect For XBox

Kinect For PC

价格

900多元

1600多元

近景模式

无 (80cm)

有 (40cm~)

商业License授权

除了近景模式外,其他一样一样,而一般情况下,建议从Kinect for XBox入手练习,毕竟便宜,门槛低的多。

 

另外一个对比是于今年夏天即将发布的K4W V2和目前V1的对比,非常令人激动的是分辨率提高了3倍(1080P),骨骼节点新增了5个。但是,需要USB 3.0数据接口,我想大部分的电脑应该没有USB 3.0接口吧,至少我手里的2台电脑都没有。

V2有很多据说很激动的功能:可以测量体温、心跳–根据1080P的高清晰的照片。(看国外的博客介绍)

功能

Kinect V1

Kinect V2

好消息、坏消息

Color Camera

640*480 @ 30fps

1920 * 1080 @30fps

Good

Depth Camera

320 *230

512*424

Good

Max Depth Distance

~4.5m

~4.5m

 

Min Depth Distance

40cm (near Mode)

50cm

 

Horizontal Field of View

57°

70°

Good

Vertical Field of View

43°

60°

Good

Tilt Motor

Yes

No

Good

Skeleton joints Define

20 joints

25 joints

Good

Full Skeleton Traked

2

6

Nothing

USB

2.0

3.0

Bad

Support OS

Win 7.0,Win 8.0

Win 8.0

Bad

价格

$299

?

 

可以WPF编程的玩具:Xbox 360 Kinect–芯片

目前市面上的Kinect V1版本,核心芯片来自PrimeSense公司(一家以色列公司),其采用的Light Coding技术,相当于在空间实现了红外线点矩阵(学名叫激光散斑Laser speckle),如果人在这个矩阵中,则可通过红外线摄像头(接收装置)获得人的深度数据(景深数据),故而通过SDK算法模式匹配可以获得人体骨骼节点。

PrimeSense

有意思的是,这家公司刚开始找apple谈合作,没有谈成–约是2009年的事情,那个时候是乔布斯时代、IPhone火正旺。随后微软的XBox看上了这块东西,并在2009 E3电子游戏展中,发布了Project Natal(Xbox for Kinect代号)。不久,黑客看到这个东西潜在的商业价值,进行了破解数据《Inside the race to hack the Kinect》。半年后,微软官方对外发布了K4W V1版本和商业SDK,并增加了近景模式。

在大公司的战略部署中,向来是专利现行的或者直接拿来主义–收购。 PS公司,与2013.11月被apple以3.5亿美金收购,成为IPhone未来版本中一个可期待的亮点,且PS更新了Capri芯片1.25产品:体积缩小到了1/10,分辨率提高了3倍。

微软与2012年开始,放弃了基于Light Code 1080芯片,转而采用TOF技术的3DV System公司的Zcams–该以色列公司与2009年被微软悄悄的收购了。即今年夏天发布的Kinect V2版本,会采用TOF技术。

刚开始理解的,摄像头可获得人体的各个部位的3D效果图。但是,如何判断骨骼节点? 那个是手?哪个是脚?3D电影用的给各个骨骼点用“电子标签”-Maker的方式采样。而实际中,怎么做呢? 答案是采用的模式匹配的办法,预先进行海量数据的配对存储,即骨骼数据来源与深度数据的意义匹配,故非常耗费CPU–大量的对比高性能计算。 这一原理是参考著名的《Real-Time Human Pose Recognition in Parts from Single Depth Images》论文思想。

好事情是,业内多个巨头都进入体感芯片领域,如微软、苹果,借助其强大的生态链,对体感应用会有比较强的推动作用。如不远的未来–1~2年内,微软、苹果会推出手机、平板带体感功能的亮点—业内没准会一片尖叫声!

四流公司做项目

三流公司做产品

二流公司做标准

一流公司做专利

WordPress的报错:Invalid response document returned from XmlRpc server

xmlRPC错误

好久没有整理blog了, 用WLW发布博客,却遇到这个问题:

Invalid response document returned from XmlRpc server

最近没有做什么,除了刚更新了iNove_Plus_v1.1主题和几个插件, WordPress主程序没有动.

内事不决问百度,外事不决问谷歌.

比较靠谱的办法说是UTF8编码问题导致了XMLPRC获得存在少几个字符问题。

故打开WLW的日志查看:

C:\Users\Administrator\AppData\Local\Windows Live Writer\Windows Live Writer.log

WindowsLive.Writer.CoreServices.XmlRpcClientInvalidResponseException: Invalid response document returned from XmlRpc server —> System.Xml.XmlException:

出现意外的文件结尾。以下元素未封闭: methodResponse. 行 18,位置 17。

按照网络的办法,需要 /wp-includes/class-IXR.php文件

  1. 找到字段:$length = strlen($xml);
  2. 将其替换为:$length = strlen($xml)+3; 但是我的错误并未解决。
    再翻开了一般错误提示的日志:

    <?xml version=""1.0″"?>
    <methodResponse>
      <params>
        <param>
          <value>
          <array><data>
      <value><struct>
      <member><name>isAdmin</name><value><boolean>1</boolean></value></member>
      <member><name>url</name><value><string>http://www.xifarm.com/</string></value></member>
      <member><name>blogid</name><value><string>1</string></value></member>
      <member><name>blogName</name><value><string>息田网站|个人博客(ResearchMFG)</string></value></member>
      <member><name>xmlrpc</name><value><string>http://www.xifarm.com/xmlrpc.php</string></value></member>
    </struct></value>
    </data></array>
          </value>
        </param>
      </params>
    </methodRespons",""

    结尾封闭的methodRespons少了一个>符号。

    把上面的+3修改为

    $length = strlen($xml)+1;

    问题解决 有棕榈树的小岛

可以WPF编程的玩具:Xbox 360 Kinect–开箱

刚刚在淘宝上购买的Xbox 360 Kinect,600出头,相对Kinect for PC价格(1930元)便宜了一多半,先玩一段时间,等V2版本问世了(预计2014.7发布),再升级。

开箱照:IMG_20140512_210509

虽然在微软技术旗下开发了近10年的C#.net,然却是第一次购买其出品的硬件产品:

Kinect细节做的不错,正面可看到锐气逼人的三个摄像头:

迫不及待的打开Kinect Toolkit 1.8,逐一尝试自带的演示程序:看到了闻名已久的火柴人、彩色的图像、Face Trace、音频相阵话题。(因Win 7.1未安装directX 11,故Kinect KF功能无法使用)

一点不足:因为无近景模式,故实验需要在>=80cm的地方开始,加上电脑显示器有点小,美中不足,看到的图片不够清晰。

坊间传言说Kinect V1的识别率低、延时等问题暂时未遇到。

 

工欲善其事必先利其器!

做Kinect的编程开发,猜度大约需要具备如下技能:

  1. 数据采集,Kinect是一个数据输入设备,需要熟悉USB数据采集。
  2. GDI+技能,如绘制火柴人。
  3. WPF编程,这个比较好好上手,微软的东西一般都比较“傻瓜”
  4. 科幻爱好者,可以做出梦幻般的应用—未来
  5. 冷板凳心态,目前Kinect国内社区不温不火,需要更多的是静下心来研究。

今天在知乎转悠, 看到一句话不错:

总结分享是有效的学习方式之一。