科学网

 找回密码
  注册

tag 标签: Kinect

相关帖子

版块 作者 回复/查看 最后发表

没有相关内容

相关日志

Kinect的RGB图像和红外图像的分辨率
wanglin193 2013-7-28 19:04
深度相机Kinect 可以输出640 ×480 和320 ×240 两种分辨率的深度图像,同时也能输出红外图像或者RGB 图像( 两种图像无法同时获取) 。 Kinect 的规格说明提到,设备自带的RGB 摄像头也可以支持1280 ×1024 的图像输出, 至少维基百科是这样说的: ...the hardware is capable of resolutions up to 1280x1024 (at a lower frame rate) and other colour formats such as UYVY. The monochrome depth sensing video stream is in VGA resolution (640 × 480 pixels) with 11-bit depth, which provides 2,048 levels of sensitivity. The Kinect can also stream the view from its IR camera directly (i.e.: before it has been converting into a depth map) as 640x480 video, or 1280x1024 at a lower frame rate. 但是在OpenNI里简单地把 分辨率直接改成 nXRes=1280,nYRes=1024,nFPS=15 ,并调用下面的语句,却无法输出想要的结果。 XnMapOutputModeMyMapMode = { nXRes,nYRes,nFPS }; // 显示RGB 图像时设置输出分辨率 xn::ImageGeneratorG_RGB; G_RGB.SetMapOutputMode(MyMapMode ); 后来发现在程序里注释掉深度图像的获取和输出步骤,就可以显示了。也就是说,设备无法输出 1280 × 1024 的深度图,这样的设置会导致无法二者都无法获取。 下面例子是一个场景的深度图,分辨率为 640 × 480 ,并且用 G_Depth.GetAlternativeViewPointCap().SetViewPoint(G_RGB ); 把深度图 warp 到对应的 RGB 图像上 了。 图中的红点和数字表示该点的深度值,单位是毫米,0表示这个点没有深度数据。 下面图像显示的是对应的 640 × 480 的 RGB 图像 下面图像显示的是对应的 1280 × 1024 的 RGB 图像,可以看出图像的上下边比上图多几行内容,(博客在上传图像时改变了图像尺寸,所有图像都可以在这里下载 jpg.rar ): 切换到显示红外图像,重新编译程序,也可以输出 1280 × 1024 的红外图像。 // 在显示红外图像时对应的语句 xn::IRGeneratorG_Ir; G_Ir.SetMapOutputMode(MyMapMode ); 下面是这个场景的红外图像( 尺寸1280 ×1024) : 图像里的散乱分布的亮点,就是Kinect 用来恢复深度的结构光(Structure Light) ,这些光斑是由设备上的红外激光发射器发出的。这些古怪的pattern 用肉眼是看不到的,只能借助红外相机观察。利用红外结构光实时恢复深度,是Kinect 的技术核心,来自于一家叫Prime Sense 的以色列公司。但微软最近推出的Kinect2.0 抛弃了这种技术,取而代之的是Time Of Flight ,来自于他们前几年收购的另一家以色列公司。深度相机是基于摄影测量学中的三角测距法,根据亮点在图像中移动的位置就可以算出这点到相机的距离( 即深度) ,具体原理大家可以在网上自行搜索。 下面是分辨率切换到640 ×480 的输出,由于Kinect 输出的时候做了简单的隔点降采样,所以可以看到墙面上出现了红外激光pattern 的走样(Aliasing) 条纹,研究光学的人和摄影爱好者喜欢把它称为摩尔(Morie) 纹。为了解释这个现象,有的人还会搬出“奈奎斯特(Nyquist) ”的大名。
个人分类: 3D|18530 次阅读|0 个评论
Kinect for Windows 开发尝试
MitchGeng 2012-12-11 16:30
Kinect for Windows 开发尝试
6日到7日,去参加了Microsoft的Kinect狂码24小时活动,活动的目的就是推广Kinect for Windows开发,让原本在游戏领域大放光彩的Microsoft Kinect设备,能够在Windows平台找到更多的应用空间。活动从6日中午开始,连续开发到7日中午,然后提交任务、演示项目,并由微软评出优秀结果,全程24小时。这是我第一次参见这样的24小时的Hackathon活动,没做太多准备就直接前往参加了。 微软的活动准备还是很充分的,整个24个小时,都有各种不同零食和饮料的提供。 而且还有从雷德蒙德总部来的工程师来解答开发中的各种问题,我自己的开发中就多次请教Rob Relyea,他和Ben一直陪了我们一整晚,直到早上7点才赶着收拾东西,去机场回雷德蒙德去了。 Ben使用的是一台装了Windows 8的Mac Book Air. 因为之前没做开发方面的任何准备,所以可以说是零起点开发,不过经过一个晚上的努力,基本上搞清楚了Kinect开发的大致流程,而且完成了一个小的项目。Kinect SDK相对做的已经很不错了,但是发现Kinect开发对机器的要求还是不低的。我带去的i5 450m,4GB内存的机器,在Tracking Motoion时CPU使用率基本上都会跑到70%-80%,想要同时Tracking面部和肢体时,基本上就会到90%以上。不知道是Kinect SDK 还没有优化完全还是,我的机器真的该换了。 在开发时大概看了几个相关Blog的内容,但是好像都没有形成比较完善的框架,或许过两天等不忙了,整理整理写写那天具体开发的技术细节。基本上大值得思路就是Kinect 会按照某种频率开始扫描,扫描分Color Image、Depth Image、Skeleton等几个不同的层,几个层相互独立。Skeleton层的每一帧中有6个Skeleton,每个skeleton有全身的各个关节的位置信息,根据这些位置信息你就能确定肢体的动作或状态了。另外,skeleton的位置信息坐标要通过转换才能对应相应的屏幕坐标。在显示中得以判断。大致的思路基本如此,剩下的基本上就是你的想象力了。
个人分类: 开发技术|3619 次阅读|0 个评论
[转载]Predator:比微软Kinect更强的视频追踪算法
hailuo0112 2012-4-21 16:55
boycott (haha):刚刚看到了这个用来演示一种新的物体跟踪的算法的视频,它是Zdenek Kalal博士论文里的一部分。Zdenek Kalal是英国萨里大学的一个捷克学生。他演示的是他的神奇的精确定位系统,这个系统几乎可以跟踪镜头里的任何物体,只要你能看见它,并把它选中。它能做很多神情的事情。在这个视频中,他演示了通过摄像机拍摄他的手指、把他的手指选做目标。系统于是就能精确的跟踪他的手指的动作。更令人惊奇的是,这个系统能够通过分析物体的运动来完善跟踪算法。你能在很短的时间里教会它跟踪你的手指、面孔或在高速公路上狂颠的轿车。有了这套系统,我们几乎真的可以实现”Minority Report“那样的人机界面。就像微软Xbox的Kinect那样,而这个效果更好。 Kalal有12个视频来演示他的这套算法都能做什么。只要你有一个好的摄像头,把这个软件装到计算机上、平板电脑上或手机里,它就能精确的定位跟踪你的前额上的一个点、你的指尖、或你的眼睛。你把摄像头放到门外,它就能自动识别是你认识的人来了,或警告你这是个陌生人。人们不用通过手就能简单的操控计算机。这项技术应用前景广泛。 你可以从萨里大学的网站找到这个程序的代码,它是免费的。Kalal被授予了“Technology Everywhere”奖学金作为嘉奖。 http://info.ee.surrey.ac.uk/Personal/Z.Kalal/tld.html 非常精彩的视频演示:请点击下图 产品介绍Key Features ● Input: video stream from single monocular camera, bounding box defining the object ● Output: object location in the stream, object model ● Implementation: Matlab + C, single thread, no GPU ● No offline training stage ● Real-time performance on QVGA video stream ● Dependence on OpenCV library (single function) ● Ported to Windows, Mac OS X and Linux ● Illumination invariant features Free Version(免费源码可从Github下载) TLD can be downloaded for testing in a chosen application. We provide a precompiled demo (Windows) and a source code that is released under GPL version 3.0. In short, it means that any distributed project that includes or links any portion of TLD source code has to be released with the source code under the GPL version 3.0 license or later.Commercial Version A license has to be purchased for using TLD in a commercial project. The licencing is managed by the IP owner, the University of Surrey and the fee is subject to negotiation. Please contact the University of Surrey for further information.More Information ● High-level description of TLD ● Components of TLD ● Learning component of TLD ● Application of TLD tracker to faces ● Detailed description is in the following papers: ICCV'09 (w) , CVPR'10 , ICIP'10 , ICPR'10 ● Many technical questions (e.g. installation) are being discussed in the following discussion group . MITBBS网友评论 lalaphin (orpheus):MIT一直在研究这玩意儿。我早就说过了,微软做kinect最终目标并不是游戏业,而是作为将来windows应用的探路石。 kz80 (雨过天晴):不错, 这学生很能下工夫. kinect也是差不多原理.光线暗了肯定就不能用了。 zlike (最终幻想):我觉得他这个没解决最关键的问题:what to track?object tracking/recognition的一个难点是如何对凭空冒出来的一副图象中判断“哪些”发生了变化(因为所有像素都有变化),而不是对预先选好的一个小区域进行跟踪。如果他这个没有那个选取的步骤,而是直接能识别移动的“有效”物体,那就可以和kinnect媲美了。
个人分类: 目标跟踪|0 个评论
Kinect传感器会成为微软的大杀器吗
热度 1 zhangyunliang 2012-1-29 10:35
当苹果风光无限,Amazon蓄势待发,谷歌风头正劲,Facebook即将天量IPO之时,微软日益淡出了大众的视线。但是最近两件事以及其他的一些信息,让我对微软产生了新的看法。一是一位亲戚原来想买个wii玩玩,后来追加预算上了Xbox360,另外一个是今天的新闻“华硕新品将整合微软Windows8与Kinect”文中还提到:此前,微软全球副总裁张亚勤在接受ZOL专访时曾透露,未来Kincet的应用不仅限于 游戏机 平台。“Kincet技术SDK的正式发布也将把这个在游戏机产品上广受欢迎的技术推广到更多的产品上,远远不止PC和游戏机。”可谓雄心壮志。 我对游戏和游戏机了解甚少,这次亲戚的普及是wii要很多不同的设备,Xbox360不用。追根溯源是kinect这个东东发挥的作用,赶紧wiki,查到如下解释:“Kinect”为 kinetics(动力学)加上 connection(连接)两字所自创的新词汇,读音为 ki-nect(/kɪn'ɛkt/),并非 con-nect(/kən'ɛkt/)。Kinect 感应器是一个外型类似网络摄影机的装置。Kinect有三个镜头,中间的镜头是 RGB 彩色摄影机,左右两边镜头则分别为红外线发射器和红外线 CMOS 摄影机所构成的3D深度感应器。Kinect还搭配了追焦技术,底座马达会随着对焦物体移动跟着转动。Kinect也内建阵列式麦克风,由多组麦克风同时收音,比对后消除杂音。 通过wiki的解释,感到备受震撼,这个东西不得了,其在人机交互上的影响应该不会小于鼠标和多点触控,相比之下siri也许算不了什么,加上前面微乳提出的NUI,感觉微软的很大一部分精力都放在交互上了,这个宝押对了。 微软的创新并不差,就是有时候有点超前了,但是我想这次kinect和NUI应该是赶上了好时候,拭目以待。
6042 次阅读|2 个评论
[转载]MS KinectFusion
shixuanlv305 2011-10-9 12:41
转自: http://www.cvchina.info/2011/10/07/kinectfusion/#comment-2556 微软正在进行一个名为KinectFusion的项目。目标是利用一台围绕物体移动的kinect实时重建物体的三维模型。(是不是可以理解为Kinect版本的SLAM?)不同于的简单的三维点云的拼接,该项目的另外的吸引人的特性在于:如果对物体进行持续的扫描,三维重建精度可以由粗到细的逐渐提高。(类似superresolution?) 演示视频 (必看!!!)很给力。 (用这个东西做AR绝对给力啊) We present KinectFusion , a system that takes live depth data from a moving Kinect camera and in real-time creates high-quality, geometrically accurate, 3D models. Our system allows a user holding a Kinect camera to move quickly within any indoor space, and rapidly scan and create a fused 3D model of the whole room and its contents within seconds. Even small motions, caused for example by camera shake, lead to new viewpoints of the scene and thus refinements of the 3D model, similar to the effect of image superresolution. As the camera is moved closer to objects in the scene more detail can be added to the acquired 3D model. To achieve this, our system continually tracks the 6DOF pose of the camera and rapidly builds a representation of the geometry of arbitrary surfaces. Novel GPU-based implementations for both camera tracking and surface reconstruction allow us to run at interactive real-time rates that have not previously been demonstrated. We define new instantiations of two well known graphics algorithms designed specifically for parallelizable GPGPU hardware. KinectFusion: Shahram Izadi, Richard Newcombe, David Kim, Otmar Hilliges, David Molyneaux, Steve Hodges, Pushmeet Kohli, Jamie Shotton, Andrew Davison, Andrew Fitzgibbon “ KinectFusion: Real-Time Dynamic 3D Surface Reconstruction and Interaction ” ACM SIGGRAPH 2011 Talk S. Izadi, D. Kim, O. Hilliges , D. Molyneaux, R. Newcombe, P. Kohli, J. Shotton, S. Hodges, D. Freeman, A. Davison, A. Fitzgibbon“ KinectFusion: Real-time 3D Reconstruction and Interaction Using a Moving Depth Camera ” To appear in Proceedings ACM User Interface and Software Technologies ( ACM UIST ) Santa Barbara, CA, USA, Oct 2011
个人分类: 新技术资讯|5185 次阅读|0 个评论
[转载]zz微软亚洲工程院马宁:如何开发一款Kinect应用
frost 2011-7-22 16:19
按:体感信息处理应该会有广阔的前景,不仅仅是目前的体感游戏,远程医疗、物联网、远程控制都是潜在的应用。目前没有精力对此进行深入研究,转文记之: 微软亚洲工程院马宁:如何开发一款Kinect应用 http://www.cnkinect.com/thread-4450-1-1.html 接下来跟大家聊聊 Kinect 开发。 Kinect 主要用来进行体感游戏动作捕捉,后来大家发现这个非常有前途有价值,原因在哪?所有动作捕捉和识别都是做在硬件设备里面,但是Kinect其实是个变形的USB接口,所以接换到不同平台非常简单。在这样一个平台之下我们会发现有很多新的应用领域,等待我们去探索。 微软现在已经有两个SDK,第一个针对Windows,另外一个是针对微软机器人开发组件。以后可能微软会针对其他平台做开发。已经有开发者社区把Kinect往iPhone、Android上移植了,推广速度非常快。我们今天讲座以八卦为主,以技术为辅,尽量讲一些Kinect的事情,技术事情回头探讨。我们先插播一个非常严肃的科技新闻,这个一定要强调非常严肃的。最近在西方主流八卦媒体上流传着一条新闻,主角是英俊潇洒的奥巴马。大家开玩笑奥巴马通过远程控制方式直接亲手击毙了本拉登,这个到底是否真实,需要白宫发言人澄清。但是从那之后,奥巴马总统发现自己不但在政界混的风声水起,在游戏界也是如此。就问助手能不能不用手柄玩?就是Kinect上面的游戏,他准备去玩。这时候听到一个新闻,说最近实验证明Kinect在光线不足的情况下,对皮肤较黑的同志们识别不足。美国很多同志开始考虑Kinect这种技术是不是涉嫌种族歧视,在美国这很严重。在这时候一些开发者社区,说不能让我们总统连Kinect都玩不了!他们做了一个测试,估计在网上也应该能够看到一些视频,请了美国某明星做测试。具体测试的过程就不说了,总之最后测试结果表明,无论房间光线、环境、玩家肤色和穿着如何,用户体验是完全一致的。后面我也会从技术、Kinect原理给大家说一下,确实是没有任何关系的。 只是因为周末给大家讲个段子,简单让大家去了解一下,Kinect推出之后整个花边消息。这也是一个正常现象,开始一个新技术被大家所认识,花边新闻总是先占据大家视野。在后边整个演讲里面,请大家也抱着玩的态度,想想这个技术还能利用在哪些领域,有什么创意。很多看起来不靠谱很搞笑的思想,也许是下一个伟大产品的开始。我们插播完这条很严肃的新闻,接下来非常严肃。 第一介绍一下什么是Kinect;第二是Kinect的发展历史,虽然不是很长;第三介绍Kinect Windows SDK的整个开发过程;第四介绍Kinect开发环境、硬件和软件搭配;第五把Kinect主要的几个功能,用非常短的代码跟大家介绍一下;最后会有一个事例,当然这个事例也不是非常难。大家有时候开玩笑Kinect必须是双人,一个人站着,另外一个人在旁边协作,这就是我们今天所说的一些主要内容。 关于Kinect的大众所不知道的那些事 Kinect首先是一个XBox 360外接体感设备,通过无线方式捕捉动作感知。由PrimeSense提供Range Camera技术,同类产品如任天堂Wii、Play Station Move,必须让玩家手里拿一个或者多个设备,才能完成所谓体感互动。 Kinect最早定位是XBox 360外设,不需要任何道具完成整个动作识别和捕捉。他能够做的是两个,动作识别动作捕捉和3D立体语声识别。这是一个后台,所有的语音识别都是利用这个方式来做的。不过很遗憾,现在对汉语支持相对来说差一点,下面也会有语言识别方面专家来进行撰写,我们也特别希望能够把我们自己国内语言做的非常好。Kinect整个软件派发,之前也有一些八卦新闻,说Kinect技术是PrimeSense提供,然后找微软等等。任何一款成功产品都不是借助一个技术就能够实现的,所以在Kinect里有非常多的技术。 Kinect主要识别算法和软件部分都是公司提供的,他是微软旗下一个游戏工作室,是微软全资持有公司。识别算法、跟软件相关的一些逻辑都是由这家公司实现的。国内外也有一些所谓可见光、或者红外识别公司,他们也是从这家公司拿到一些著作权。大家可以试他们产品,跟微软还是有差别的差别。国内还是采取主机,算法是自己写的,或者通过其他方式来获取,相对精度差一点。 Kinect发展历史并不长。由于一些授权问题,如果在开发的过程之中就把软件名字发布出来,最大问题就是域名申请,当然还有其他很多问题。所以,不到产品发布那一刻微软的产品永远就只有CodeName,只有在产品发布最后1到2周的才会有一个正式名。当然也会存在一个问题,有的时候CodeName名字起的非常漂亮,到正式产品发布出来的时候名字也不是很好听。Kinect最早的CodeName是Project Natal。从2010年10月份开始上市,到2011年3月9号销售超过一千万部,有史以来销售最快的销售类电子产品。 另外,他可以是一个包装形式,也可以是一个单独外设,国外售价应该是169美金。但是在国内前两天有人给我留言,说淘宝已经卖到700多人民币。现在也有淘宝的朋友到我微博上拉生意了,还是非常有前途的。 前面我们也说过了,Kinect这个东西所有运算逻辑都是在预算本身完成的。说白了你只要实现一个USB,再做一个识别器就可以完成整个转换。所以,难度非常小,正由于这个原因现在被应用到不同领域里面。在微软发布官方Kinect SDK之前,有两个比较出名的项目,其中有一个openKinect。openKinect确实在配置和编程还有很多不足。而官方Kinect SDK整个配置非常简单,这也是微软一贯方式,他不但做了USB开发模式,还有相应API都做的非常好。Kinect的动作捕捉的机器学习技术,获得2011年MacRobert Award工程创新大奖。 Kinect技术指标包括:输出视频帧率为30Hz、B-bitVGA分辨率(640×480 pixels),由于识别率大家觉得能够支持手指识别,据说在下一步Kinect更新后,分辨率会大幅提升。那个时候去捕捉手指上的动作都是可以的。最佳识别区域是1.2-3.5m,并且由于房间限制,两边可扩展区域0.7-6m,两边是一个梯形状态。很多同志买了Kinect之后都感慨自己房间不够大,一般客厅在这边放一个电视,那边有一个沙发,空间确实不太够。后来有人想了各种各样的办法,比如把Kinect固定到你的液晶电视上,反正他所能够做的方式是千奇百怪的。 Kinect最多可以支持4个人的识别,但是真正有效的可视识别最多支持两个人。并且有一点,两个人的位置不能交叉。必须是一个人站在左边,一个人站在右边,不能一前一后或者其他方式,这是目前的技术上的限制。另外,他的可视区域水平范围是57度,垂直范围是43度,其实上下浮动角度可调。一种方式是水平向上,这种方式适合家里有电视机柜,还有放在电视机下面有一个俯视的角度,Kinect会自动调整俯仰角度。 每个人身上可以支持20个动作节点的捕捉,传统电影里面动作捕捉,美国是一个小时几千美金。你如果使用这个系统几千美金,Kinect使用是在你身上去粘各种各样的点,那种动作捕捉是非常精确,对于一些电影,或者游戏里面的动作捕捉是非常适用的。当然成本也非常之高,因为会把你人的3D影像跟一体动作全部输入电脑里面去,进行大量过滤还有处理方式。Kinect现在也有人拿它来做一个简单动作识别捕捉,当然了价钱非常便宜。但是,技术限制也非常明显,一个是捕捉点不够多。另外他只能够捕捉正面和侧面的一些动作,背面一些动作没法完全捕捉下来。现在Kinect只是能够替换掉一些简单的动作识别,或者动作捕捉的一些设备,不够把那种传统所谓复杂的动作识别,或者动作捕捉系统完全能替代掉,那套系统还是会在他的领域里面会运行非常好。但是Kinect的一个好处是,可以让一些更廉价的领域能够使用到所谓动作识别,和动作捕捉的技术,这是他的技术指标。 关于Kinect的开发和SDK 接下来是Kinect整个SDK一个介绍。首先这个SDK是由微软研究院来做,现在是一个非商业授权许可,这在国内大家不是很在乎,但是在国外要求非常严,你不能将这套SDK利用到所有的商业里面去,只能够利用到学校里面学术研究,还有所谓非商业用户。这个大家一定要清楚,否则会有问题。商业授权将在下一个版本中提供,至于采取什么样的授权方式现在还不确定。另外Kinect目前所能够支持的只有Windows 7这么一个操作系统,其他都不支持,所以大家别试图在Windows XP上装这套系统。当然了现在是支持Windows 32位版本,Visual Studio2010 Express以上版本,微软有一个专门计划为所有学生提供开发工具,还有微软软件的授权许可,所以大家也可以去找。 Kinect支持C++,C#,和VB.NET。如果大家感兴趣很多动态语言也都可以利用到这个,也都没有问题的。主要功能就是下面几种,首先第一个是sensor,作为摄象头使用;第二是所谓红外识别,数据都是可以通过Kinect SDK做到的;第三动作捕捉识别,最多可以追踪我们身上20多个节点;第四是语言识别捕捉,这都在Kinect里面做了很多。整个硬件大家也可以看得到,基本就这样一个很简单的东西。其中会包含这几个部分,第一部分他会有一个叫做RGB的camera,我们所有的可见光图象识别和图象来源都是来自于RGB的摄象头,对奥巴马总统有影响的还是这样一个摄象头。除了这个之外,前面各有两个摄象头,这两个摄象头识别是3D深度识别和感知器,作用是接受我们红外设备,目前不是主动式的,是被动式的,如果要是你的环境里面没有红外光源也是会受到影响的。 它的原理是利用双眼的觉差,能够判断我们当前某一个物体基于我们当前的一个位置,基本上都是通过红外方式来做判断的。所以,因为我们人体散发出来的红外是一致的,无论是什么人种,不会受到干扰的。除了这个东西之外,我们下面还有一个马达用来调整Kinect的俯仰角度,这是很重要的。另外在设备两端各自会有两组麦克风是用来做所谓3D识别,他的一个好处能够把声源附近之内各种各样信息捕捉到,不是一个简单转递,这是一个Kinect最简单的介绍。 如果你购买的是一个套装,加Kinect外加XBox 360设备,Kinect只会提供这么一个设备,外加这么一个接口,这是一体的。他的接口一般叫做AYS,就是一个USB。但是USB切掉一个角,这样一个情况你没有办法直接把这个设备插到PC上去,这是没有办法的。在我们拿到XBox 360新的主机上,叫瘦版,最新XBox 360主机有这么一个专门接口用来装Kinect设备。如果你买只有这么一个设备,想在Windows上使用Kinect设备,还需要另外一个组件。这个组件就是一个转换器,这个东西美国卖20美金,咱们淘宝才卖70块钱,所以咱们很幸福。如果你买的是一个XBox 360设备的时候,你还得买一个主机才能在Kinect,原因是必须提供这么一个转换头,其实也是为了监测XBox 360的设备,我这边再插一下。 硬件一个是需要Kinect Hardware另外是AC Adapter,PPT我可以发给大家进行下载。没有提供更多额外功能,能够帮助大家把开发难度降下来,这个东西建议大家去看一下,也是一套开源东西。这是我们一个最基础介绍,我可以让大家看一下我已经做好的,你创建完之后,知道添加什么东西,这个我们来看一下。开发是一个Visual。我们现在进行一个WCF,然后我们可以去添加Add Reference,反正就在这个里面大家回头可以试试。大家可以看到在项目里面会有Microsoft直接添加进来就可以了,还有一个Coding4Fun,这个不给大家说的很详细了。然后到了我们这么一个文件里面去,上面添加这几个,其实就是两个,一个是Kinect.Nui,我们进行类似识别,另外一个是Audio语言捕捉,最后如果需要添加直接分到Wpf这里面,这个功能非常简单。左边我可见光的动作,获取一个深度信息,就是一个红外光感知。我怎么样来做非常简单,首先我们来看代码,第一要添加一个Runtime nui,我们一个Runtime事例对应我们一个Kinect,会有一个显示以Initilize方式去试用,我需要用到动作捕捉等等都在后面。这是一个非常简单的东西,接下来有两个东西需要添加,一个叫做Video FrameReady,当你收到第一个数据的时候会进行自动复发,每隔一段时间都会复发这么一个事件。这后边我们会添加一个处理函数,接下来我们要增加这样一个Video Stream。他的Image Stream Type的方式,可以多指定几个。第一个我们To Bitmap Source,利用拓展方式进来。如果不用的话,我们用的是上面这一栏,首先我们e参数里面会有一个JmageFrame,出来一个PlanarImage,这些里面都是原始数据,我们如果想把它转换成我们能够识别的类型还需要去做一个Bitmap Source指定宽度、高度,还有一个颜色值等等这样一些信息,还有DPI的值,指定完成之后我们才能做相应一些转换。我们现在一般比较直接习惯于使用ToBitmapSource,但是建议大家不要直接在这里面这么写,这样写的话相当于都会进行自动保存,效率非常低。大家只有在一些关键的时候,或者你们要拍照的时候我们可以通过这个直接去做这样一个拍照,同理上面数据拿出来也是相同的东西,这个就不做非常相似的解释了。最后记着当我们程序关闭的时候,要利用这么一个方法把所有资源都释放掉,因为底层会封装很多资源在里面,还会进行一个释放才能够保证。当然也不会出现太大问题,这是一个最简单的事例。简单说一下,我们首先需要创建一个事例,封装一个Kinect sensor功能,我们需要用到哪些功能的时候需要指定。这是整个代码,包括Video事件和参数,这是我们一个简单调用方式,就不跟大家说了,大家可以看详细代码就行了。这是他的对象,我们传过来的参数会包括一个Fields,这里面会包括一个对象。 接下来跟大家说一下骨骼识别这部分,Kinect最多可以支持20多个骨骼点,数据对象类型是骨骼帧形式提供,每个帧里面最多可以保持20个点。大家还是看例子,这是一个非常简单的程序,识别5个骨骼点,包括我的膝盖,手,和头部的位置识别出来,其他位置,其实这些信息都是在里面的,大家如果觉得兴趣的话可以把这些信息加进去。因为他没有任何识别,所以现在是5个点,当他能识别我身体的时候,我们只能看到上面几个点,这是一个简单识别的方式。我们来看一下代码,前面基本上和我们前面的方式是一致的,也会创建一个Kinect的对象,另外我们的Runtime Options里面一定要加上骨骼识别。下面这一项增加转换,去掉一些噪声,如果不加去噪声功能的话,识别不到的信息。直接去调用FrameReady事件,有open的方式,为什么?这时候已经完成数据化了,大家可以发现那个事件没有被加进来。只有当他识别出一个人来的时候,才会有一个事件过来。所以,不需要加任何显示open方式就可以完成操作。我们参数里面获取到,首先进行获取,这里面所有动作已经被捕捉出来的动作电,捕捉完成之后会做这样一个搜索,把我们所需要用到一些点拿到,把他放在我们数据里面,接下来的话我们会把这样的数据附到对象里面去。但是需要提醒一点的是,他每一个点数据是从负一到一的浮点数,始终会在这个范围内摆动。所以,我们从负0.5到正0.5之间进行操作,这就是骨骼识别一些相应操作。接下来现在是一些已经出来的Sample Project。看到有一个兄弟玩超级玛丽,因为他没有做相应优化处理,必须要跳到一定高度才行,姚明同志可以去玩,潘长江就不用去了。还有一个虚拟试衣间,可以根据虚拟颜色,把这些虚拟衣服直接贴在你的身上,而且不会产生以前的问题,会跟着你的身体会动,这是一个现代比较多的事例。 另外,我听说也有一些国内公司在和一些医院合作,做这种所谓的手术识别远程遥控。所以,基本上这个都是我们一些事例。简单总结一下,Kinect是一个廉价的动作捕捉设备,几百块钱人民币,他应用对动作捕捉精度要求非常严格的领域,这是他未来发展的方向。另外他有可能,因为这个也是前面的问题,现在智能手机和平板电脑发展趋势非常猛的,将来以后他们的格局和PC格局怎么样发展,这个现在还没有一个争论,还是一个快速发展过程当中,但是Kinect以后绝对会有小型化趋势,这也是必须要走的趋势。另外专业领域和消费者领域,大家都知道专业领域用量不是那么大,但是他的技术更新相对来说会更快一些,因为他有这方面的驱动。消费者可能会稍微慢点,但是最后所有技术,所有专业领域一定会慢慢的,把所有技术都惠汇集到消费者领域,互联网其他技术都是这样产生的。在国内比较有希望的,比如展览展示,刚才我们说非触摸式操作领域,这些都是我们以后会努力的分享。另外现在大家都认可Kinect是一个非常好的技术,但是我们如何为好的技术寻找一个好的应用场景,这是我们接下来几年之内不断探索,不断尝试的方式。 提问:我们公司现在正在做Kinect相关开发,想问您两个问题,第一个问题您对Kinect未来发展有什么样的看法,有没有可能 以后成为一个一个标准外设,或者会不会在下一个操作系统当中去支持它?第二个问题目前还有一个驱动是openKinect不知道有没有试用过,本来想问一 下您,微软驱动和他们之间驱动区别? 我知道他们在做像Kinect相关的一些东西,我最早的时候试过 open Kinect确实碰到很多问题,后来微软标准版出来之后我再也没有试过那个东西。至于您前面那个问题,从长期来看,如果从技术这个层面来说,Kinect 已经具备成为下一个新的计算机交互方式可能性。但是一个好的技术转换成好产品过程,还是需要有很多工作。我们在一些专有设备上,现在非常热的互联网电视, 把这个东西作为摇控器解决方案。但是,我个人有一个看法正好也和大家交流一下,也不一定对。我觉得Kinect作为一个标准输入设备,在专业领域走的一定 会比所谓消费者走的要快。现在我们的PC,这个可能要从一个更大角度来看,我们现在处于一个从PC到智能手机,或者是平板电脑这样一个过度时期。当你硬件 设备交互方式发生变化的时候,你所谓外设方式很难被固定下来,只有当这种PC模式相对来说比较稳定的时候,我们才可能会看到最新的输入设备。所以,我觉得 对于专有领域可能他走的会更快,比如电视,或者是像我们服务产品里面应用领域可能会更广,对于PC上现在还不好说,或者说他可能还会要经历更长的时间才能 够有一个更好的发展,这是我自己个人看法。 提问:不知道微软内部有没有计划在操作系统层面去支持Kinect这么一个东西呢? 我也不是鲍尔默的秘书,他有什么想法我也不知道。我只能告诉你,在我所知道的行业内,一切皆有可能,但是一切都属于愿景开发,还没有进入产品开发流程,是不是有什么人在做不能保证。
个人分类: 兴趣相关|3339 次阅读|0 个评论

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-6-18 18:54

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部