我想开发一个基于kinect的体感应用。很难吗?
微软现在有两个SDK,第一个是Windows的,另一个是微软机器人开发组件的。也许微软将来会为其他平台开发。一些开发者社区将Kinect移植到iPhone和Android上,推广速度非常快。今天的讲座以八卦为主,技术为辅。尽量说Kinect,技术方面的事情以后再讨论。先说一个非常严肃的科技新闻,必须非常严肃的强调。最近西方主流八卦媒体流传着一则新闻,主角是帅气帅气的奥巴马。大家开玩笑说,奥巴马直接遥控击毙了本·拉登。这是真是假,需要白宫发言人澄清。但从那时起,奥巴马总统发现自己不仅在政治上,而且在游戏世界。就问助理,他能不能不带手柄玩。是Kinect上的游戏,他要去玩。这时候我听到一个消息,最近的实验证明Kinect在光线不足的情况下,对黑皮肤的同志识别不充分。美国很多同志开始考虑Kinect是否涉嫌种族歧视,这在美国是很严重的。这时候有开发者社区说我们总裁连Kinect都不会玩!他们做了一个测试,估计网上应该能看到一些视频,请了一个美国明星做测试。先不说具体的测试过程。总之,最终测试结果显示,无论房间光线、环境、玩家肤色、着装,用户体验都是完全一致的。稍后我还会告诉你技术和Kinect原理。真的没有关系。
就因为周末给你讲了个笑话,我就简单的让你了解一下Kinect推出后的整个花边新闻。这也是正常现象。当一项新技术被大家认可的时候,小道消息总是先占据大家的视野。在后面的整篇演讲中,请大家抱着戏谑的态度,想想这项技术还可以用在哪些领域,有哪些创意。很多看似不靠谱又搞笑的想法,可能就是下一个伟大产品的开始。我们打断了这个很严肃的新闻,然后就很严肃了。
首先介绍一下什么是Kinect是;第二是Kinect的发展历史,虽然不是很长;第三,介绍了Kinect Windows SDK的整个开发过程。第四,介绍了Kinect的开发环境、软硬件配置。第五,用很短的代码介绍Kinect的主要功能;最后还会有一个例子,当然这个例子也不是很难。人们有时开玩笑说Kinect必须是两个人,一个站着,另一个合作。以上是我们今天要讲的一些主要内容。
Kinect的公众不知道的事情。
Kinect首先是一款XBox 360外置体感设备,通过无线方式捕捉动作感知。Range Camera技术由PrimeSense提供,类似的产品,如任天堂Wii和Play Station Move,需要玩家将一个或多个设备握在手中才能完成所谓的体感交互。
Kinect最初的定位是XBox 360外设,不需要任何道具就能完成整个动作识别和捕捉。他能做的就是两件事,动作识别,动作捕捉,3D立体语音识别。这是一个背景,所有的语音识别都是这样完成的。不过很遗憾,现在对中文的支持比较差,下面会有语言识别方面的专家来写,也特别希望把自己国内的语言做得很好。Kinect分发了整个软件,之前也有一些八卦新闻,说Kinect技术是PrimeSense提供的,然后找微软等等。任何成功的产品都不是一项技术就能实现的,所以Kinect里面有很多技术。
Kinect的主要识别算法和软件都是公司提供的。它是微软旗下的游戏工作室,也是微软的全资公司。识别算法和软件相关的一些逻辑都是这家公司实现的。国内外也有一些所谓的可见光或者红外识别公司,他们也从这个公司拿到一些版权。你可以试试他们的产品,和微软还是有区别的。在国内还是采用主机,算法是自己写的,或者通过其他途径获取,相对精度差一点。
Kinect的发展历史并不长。由于一些授权问题,如果在开发过程中发布软件名称,最大的问题就是域名申请,当然还有很多其他问题。所以,直到产品发布的那一刻,微软的产品永远只有代号,只有在产品发布的最后1到2周才会有正式名称。当然会有问题。有时候代号的名字很好听,正式产品发布的时候名字就不太好听了。Kinect最早的代号是Project Natal。2010到10上市,2011年3月9日销量超过1000万台,是有史以来销量最快的销售电子产品。
另外可以是打包形式,也可以是独立外设,国外价格应该是169美元。不过国内前两天有人给我留言,说淘宝卖了700多人民币。现在有淘宝的朋友来微博拉业务,还是很有前景的。
我们之前说过,Kinect所有的运营逻辑都是在预算本身完成的。说白了,你只需要实现一个USB,做一个识别器,就可以完成整个转换。所以难度很小,也正是因为这个原因,现在才应用到不同的领域。在微软发布官方Kinect SDK之前,有两个著名的项目,包括openKinect。OpenKinect在配置和编程上确实有很多不足。官方Kinect SDK的整体配置非常简单,这也是微软的一贯做法。他不仅做了USB开发模式,还把相应的API做得很好。Kinect的动作捕捉机器学习技术获得了2011 MacRobert工程创新奖。
Kinect技术指标包括:输出视频帧率为30Hz,分辨率为B-bitVGA (640×480像素)。由于识别率的原因,人们认为它可以支持手指识别。据说下次Kinect更新后分辨率会有很大提升。在那个时候,捕捉手指上的动作是可能的。最佳识别面积为1.2-3.5m,由于房间限制,两侧可扩展面积为0.7-6m,两侧呈梯形状态。很多同志买了Kinect之后觉得自己房间不够大。一般客厅这边一台电视,那边一个沙发,空间真的不够用。后来有人想了各种办法,比如把Kinect固定在你的液晶电视上。不管怎样,他做这件事的方式千奇百怪。
Kinect最多可以支持四个人的识别,但是真正有效的视觉识别最多可以支持两个人。还有一点,两个人的立场不能交叉。必须是一个人站在左边,一个人站在右边,不能串联或者其他方式,这是目前的技术限制。另外,他视觉区域的水平范围是57度,垂直范围是43度。其实浮动角度是可调的。一种方式是横着上,适合家里有电视柜,电视下面有俯视角度。Kinect会自动调整俯仰角度。
每个人都可以支持20个运动节点的捕捉。在传统电影中,动作捕捉在美国每小时要花费数千美元。如果你用这个系统几千块钱,Kinect是用来贴你身上各种穴位的。那种动作捕捉非常准确,非常适合一些电影或者游戏中的动作捕捉。当然成本也是很高的,因为你所有的3D图像和综合动作都会输入电脑,会进行大量的过滤和处理方法。Kinect现在被一些人用来做简单的动作识别捕捉,当然价格很便宜。但是,技术上的局限性也非常明显。一个是没有足够的捕捉点。另外,他只能捕捉到正面和侧面的一些动作,背面的一些动作无法完全捕捉到。现在Kinect只能替代一些简单的动作识别或者动作捕捉设备,还不足以完全替代传统的所谓复杂的动作识别或者动作捕捉系统。那个系统在他的领域里仍然会运行得很好。但是Kinect的一个优势就是可以让一些更便宜的领域使用所谓的动作识别和动作捕捉技术,这是他的技术指标。