APP下载

Kinect视觉技术在儿童Flash多媒体课件中的研究

2015-07-18黄腾

电脑知识与技术 2015年12期

黄腾

摘要:现有儿童多媒体技术存在交互方式不自然、不智能的缺点,应用基于Kinect自然的人机交互技术并结合Flash技术,以儿童火灾自救的多媒体课件作为实例,设计实现一种多媒体自然人机交互平台。在该平台上的多媒体课件主要采用手势识别技术实现人和计算机的自然地交互,同时配合网络技术达到协同互动的效果,该平台目前运用于梧州市某幼儿园,通过实践证明,是有效和实用的。

关键词:Kinect体感技术;Flash多媒体;多人互动

中图分类号:TP37 文献标识码:A 文章编号:1009-3044(2015)12-0206-04

当今,儿童身心成长及健康发展成为社会关注的一个重要话题,如何创造条件促进儿童心智的开发,受到家庭和教育领域普遍关注。

多媒体以其特有的声、光、形、色的特点,能够创造丰富多彩的语境,使其成为教育教学的一个有效手段。然而,它缺乏人机自然交互的技术,使现在大部分儿童多媒体教学还停留在以鼠标和键盘这种不适合儿童这一特殊群体的交互方式上,给儿童的身心健康带来一定的负面影响。而随着计算机视觉技术的大力发展,人机自然交互变为了现实,但是视觉技术开发难度大、成本高、周期长,难于普通到教育环境中,当前大多应用在商业化游戏上,这些游戏也不利于儿童身心健康的发展。本研究力求以一个熟悉Adobe多媒体开发平台的幼儿园教师身份运用Kinect开发包将Kinect深度摄像头应用在Flash Professional CS6.0环境下,借助网络技术,搭建多媒体多人自然互动课件,为计算技术视觉技术能够普及应用到儿童课件开发中提供一个方案。

本研究将以儿童火灾自救的多媒体课件开发为例来说明上述研究,该课件的内容由一位资历深厚有研究过儿童教育的教师提供的,具有深刻的现实意义,但是长期以来该内容的教学都无法在现实中给孩子模拟与实践,这恰好给计算机视觉技术结合多媒体技术提供一个展示的机会。

1 平台环境的搭建与课件设计目标

平台搭建的环境如图所示,至少需要两台PC机、两部Android手机和两台Kinect设备及对于外围设配的止滑垫,防止儿童在互动中摔倒。

该课件应当满足如下条件:

1)图文并茂,声像俱佳,动静结合等,总之界面应当丰富多彩,能吸引儿童。

2)教师、儿童与多媒体课件的互动不仅仅停留在视、听觉或者鼠标键盘的互动,而是沉浸式的体验,通过肢体与场景中相关的虚拟模型进行交互。

3)该课件不仅满足多人互动,而且应当突破在课堂上的应用,即在儿童与课件互动时,远程的父母可以在办公室或者家里,甚至任何地方的PC机或Android手机等移动设配接入网络进入课件,可以观看或者协助儿童共同完成某项任务,当然儿童也将课件拷贝回家,在条件允许的条件下与父母共同游戏。

总之,将多媒体技术、计算视觉技术、网络技术相结合,为幼儿教学创造更多的寓乐于教的条件。

2 儿童火灾自救课件设计

2.1 人物和道具的提取

根据儿童火灾自救内容:突然一栋大楼起火了,大家都在混乱中逃生。这时候有一个房间,房间里有4个孩子,他们的父母都不在家。突然,其中的一个孩子看到窗外黑烟滚滚,知道大楼起火了,他马上告诉大家赶紧逃生。但是,他们跑到门口的时候,发现门不知道什么时候被重物挡住了,根本打不开。这些重物很重,一个人根本搬不动,需要2个人一起才行,而且又很多,需要一段时间才能搬完。此时,黑烟已经源源不断地从窗口和门缝钻进来,孩子们意识到根据这样的速度搬运重物,还没有搬完就有可能被黑烟窒息。突然,天花板上的电线由于短路,掉到地上,不断漏电,导致屋内很多地方都不能行走。在这个紧要的关头中,其中一个孩子想到赶紧关闭电源防止漏电;另一个孩子想到了洗漱台上有毛巾,可以用来沾水捂住鼻子和嘴,防止黑烟熏着;还有一个孩子也意识到单靠他们的力量是不够的,于是想起房间里还有一部电话,可以拨打119告诉火警叔叔。于是这些孩子就在他们自己有组织,有目标的合理安排下,完成在火警叔叔没有来到之前的自救方式。

在开发课件之前,我们首先根据课件的内容提取涉及的背景和道具,如图2所示。

根据儿童火灾自救内容,孩子总共有四人,按照一定的行走路线,施行自救,其自救完成的任务总结如下:

1)去切断电源,关闭电灯。

2)到洗漱台上拿湿毛巾。

3)分发湿毛巾。

4)拿着小椅子到桌边。

5)拨打119火警。

根据儿童火灾自救内容提取的人物和道具之后,下面分别对它们进行设计。

2.2 道具的设计

对于道具的设计需要从静止和可以移动的角度去考虑它们。

1)根据课件内容,静止的道具有洗漱台、桌子、电话、电灯。对于桌子是完全静止的,或者说至始至终都没有什么动画在它上面发生,以直接把它画到背景图片当中,对于不完全静止的洗漱台、电话、电灯在它们上面会发生一些动画,对于这类道具的设计建议使用影片剪辑完成。

2)根据课件内容,可移动道具有毛巾、重物、小椅子。为了是场景互动形象逼真,这些道具必须使用PNG格式的网格式序列图,而且必须与人物模型序列图相匹配。

2.3 人物模型的设计

人物的模型设计,我们采用一张巨大的网格式卡PNG格式通序列图来设计,如图3所示,通过ActionScript语言读取这样的图片并加以处理,使每一格都对应着一个动画截屏,而每一个动画截屏对应着一个帧,也就是在每一个帧上放置一个卡通人物,在帧不断播放的情况下,屏幕上就会显示带有动画的人物化身。

2.4 场景互动设计

首先,利用动态手势识别控制卡通人物行走方向。如图4 Kinect的人体模型控制卡通儿童的走向中的(1)所示,以儿童玩家正对着摄像头为准,当右手左挥,卡通人物向西方向行走;当右手右挥,卡通人物向东方向行走;当右手向前挥,卡通人物向北方向行走;当右手向后挥,卡通人物向南方向行走。在这里,规定每挥一次手,卡通人物向相应的方向行走10个像素。

其次,由于Kinect可以实时的提取人体模型的20个关键点。现在我们取出Spine点的坐标,通过判断Spine点的纵坐标来控制卡通人物的坐下与站起。如图4 Kinect的人体模型控制卡通儿童的走向中的(2)所示。

最后,卡通儿童与道具的互动。当儿童靠近各种道具的时候,会有相应的提示操作。

3 儿童火灾自救课件实现

完成了上述分析设计之后,我们就开始对课件进行技术上的实现。

首先,给出运行在PC机上和Android手机上的不同版本课件系统的功能模块及它们的交互流程,如图5所示,在图中,Flash P2P模块是公共模块,无论运行在Android手机上的课件,还是运行在PC机上的课件,该模块是必须要有的,作者是为了便于区分两个版本的不同,才把它划分出来。对于图中所标注的观看模式版本的课件就是该课件只能够观看儿童操作,不能通过任何方式交互界面上的道具与人物,相对于在PC机上操作的版本课件比较简单,而且又与在PC机上操作的版本课件的某些模块相同,所以在Android手机上开发的模块将于在PC机上操作的课件版本一起介绍。

其次,给出该课件在PC机上运行的主界面,如图6所示。为了使课件游戏更刺激,也为了锻炼孩子在紧急情况下有个敏捷的思维与行动,让孩子们分组比赛,看哪一组孩子花的时间最少。

3.1 Flash P2P组播功能的实现

该模块贯穿整个应用程序,程序一启动就马上需要它,它是应用程间数据交互的枢纽。由于Flash P2P有两种通信方式,而且在我们课件程序中都是必需的技术,那么在开始运行应用程序时,就需要用户选择将课件设置为哪一种通信方式。

1)基于Internet的Flash P2P模块实现,主要分为四个步骤。

第一步,连接到Cirrus服务器获取该程序的peer ID。

第二步,将要连接的课件程序的peer ID输入文本框,然后点击“连接”按钮,连接按钮就派发一个NetStatusEvent.NET_STATUS事件,告诉对方“我要连接你”,等到连接上对方之后,就可以进入登陆界面了。

第三步,创建组播群组,当然组播群组创建成功时,创建NetStream数据流通信通道。这里需要创建两个NetStream,一个用作为发送数据和一个用作接收数据。

第四步,实时侦听网络信息,一旦有发送或者接受数据的事件发生立即处理,这是Flash P2P应用的核心功能所在,因为整个应用程序间的数据都在这里派发与接收。

2)基于局域网的Flash P2P模块实现,主要分为三个步骤。

第一步,以自己为客户端连接到以自己为服务器获取该程序的peer ID。

第二步,在成功获取ID号后,就可以创建组播群组,设置组播IP地址和端口号。

第三步,实时侦听网络信息,一旦有发送或者接受数据的事件发生立即处理,整个应用程序间的数据都在这里派发与接收。程序代码与基于Internet的Flash P2P模块的第四步相似,只是在发送数据的时候派发的是NetGroup.Post.Notify事件,接收数据的时候是NetGroup.Posting.Notify事件,在此不再累述。

对于运行在Android手机上观看模式版本的课件,不管是基于Internet的还是基于局域网的,只需要Flash P2P接收数据这块功能即可,因为该版本的课件不能发布数据。

3.2 多人交互功能的实现

当进入教学场景后,就开始启动Kinect,并捕获人体模型信息作为User类(该类属于Kinect SDK开发包中定义的类)的一个实例。当获取人体模型信息之后,Kinect就会将它们存入一个数组中,当然该数组最多只有两个值,因为目前的Kinect只能捕获两个人的人体模型信息。利用这个数组的两个值,如图7具体的工作流图所示中的User0和User1。假如在PC机A上,某个儿童控制骨架信息User0,使用右手的Hand Right点去触发Bt1按钮,就会创建一个卡通人物模型Mode1,这时侯User0这个人体模型将与Mode1相互绑定,也就是说卡通Mode1完全由User0控制,即使现在的儿童玩家离开kinect摄像头捕捉范围,User0骨架信息被移除的情况下,当另外一位儿童玩家进入摄像头捕捉范围,Kinect就会把新捕捉到的人体模型信息赋值给User0,User0又重新控制起Mode1。当按钮Bt1被触发后,它就变为不可用了,接下来触发Flash P2P的事件,让Flash P2P告知在PC机B上运行的课件也要触发相应的Bt1按钮,之后也变为不可用,同时也去创建一个一模一样的Mode1,该Mode1的一切操作完全听从来自在PC机A上的Mode1,比如,在PC机A上的Mode1走到(100,80)这个位置,那么通过Flash P2P将该位置发送到PC机B上的课件,并把相应的位置赋值给Mode1,使它也到达同样的位置。通过这种方式使一个儿童玩家无论在哪台机子上都可以实时地控制他自己的卡通人物。图中还涉及一个变量UsersN,它是一个等于4的全局整型变量,用来控制用户数据量是否达到可以进入课件主界面的功能。当触发一个按钮,UsersN就会减1,直到有四个儿童触发四个Bt,创建四个卡通Mode,才能进入课件主界面。

3.4 手势与行走控制功能的实现

1)动态手势控制功能

由于计算机视觉技术已经封装在ANE扩展包里面,所以这个模块就是监听手势的方向事件,然后调用人物行走函数即可。

2)人物行走功能

人物行走只需要向东南西北四个方向行走,以场景的视角为主,需要的其中一个卡通人物PNG如图3所示。

第一步,先将图片剪切按行剪切,然后再把每一行的人物剪切出来存入一个数据类型为BitmapData的数组中。

第二步,监听事件Event.ENTER_FRAME,循环相应的数组元素(除最后两个元素之外),便可以得到相关的卡通人物行走。比如,对于一个数组为南方向行走的序列图,当右手向后挥的时候,调用循环这个数组的函数即可得到向南方向行走的动画,当然还需要规定行走的步长,在这里规定为十个像素,也就是行走到图中的另外一个方块。

3)靠近检测模块、道具高光模块、静态手势模块

平台判断是否有卡通人物靠近,如果是,则道具变为高亮的状态。当道具出现高亮状态的时候,就可以进入静态手势识别来控制卡通人物的其他动作。卡通人物拿起小椅子及打电话过程的效果如图8所示。

4 结束语

传统的课件都是停留在教师操作Flash课件,儿童在旁边听看,而基于计算视觉技术突破传统的教学方式,使得儿童更有兴趣参与到课件学习当中来。最主要的是,传统的课件只能用PPT或者Flash技术简单制作,计算机视觉技术虽然得到迅速发展,但是一直都没法普及到课件当中。通过本文提供的技术方案,可以在Flash平台上实现多种技术相结合的多重媒体教学课件,只有这样,多媒体交互设计才能发展得更好,才能实现多媒体交互设计的意义。

参考文献:

[1] 周家骥. 智能教室中基于视觉的人体姿态估计[D]. 上海: 上海交通大学, 2010.

[2] 耿瑾. 儿童教育软件中的人机交互技术应用研究——儿童音乐教育软件的设计和实现[D]. 北京: 中国科学院软件研究所, 2004.

[3] 罗元, 谢彧, 张毅. 基于Kinect传感器的智能轮椅手势控制系统的设计与实现[J]. 机器人, 2012(34).

[4] 张凯, 余新国. 基于Kinect开发用于幼儿教育的手势识别[C]. 第七届和谐人机环境联合学术会议(HHME2011)论文集, 2011.

[5] Developing Native Extensions for ADOBE? AIR[EB/OL]. http://www.adobe.com/devnet/air/articles/building-ane -pt1.html