摘 要 基于Kinect体感器开发一套幼儿认知系统,以激发幼儿认知的兴趣,陶冶幼儿的情操,促进幼儿的智力发展,提高幼儿的认知能力。幼儿认知系统是基于Kinect的体感技术,借助Kinect感应系统来定位捕捉幼儿动作及识别幼儿的语音信息,通过Kinect体感设备与计算机系统连接,将动作及语音信息输入系统,实现幼儿与系统之间互动,带幼儿进入模拟真实的认识环境中,沉浸在虚拟现实中进行认知训练,在娱乐中提高幼儿认知能力。
关键词 体感技术;虚拟技术;幼儿认知;人机交互
中图法分类号: TP391 文献标识码: A
Research on the feasibility of developing infants’ cognitive system technology based on Kinect somatosensory technology
LUO Jinwei, ZENG Desheng, ZHANG Jinbo, ZHANG Renzhong
(GuangDong Innovative Technical College, Dongguan Guangdong 523960, China)
Abstract: It is an infant cognitive system developed on the basis of Kinect body sensor. It is used to initiate infants’ interest in cognition, cultivate their temperament, promote their intellectual development, and improve their cognitive ability. The infant cognitive system works on the basis of Kinect somatosensory technology, utilizes Kinect induction system to fix the position of the action messages of the infants and differentiate their voice messages. Through the Kinect somatosensory equipment, the system is connected with the computer. So the messages of the infants’action and voice are input to the system, and the interaction between the infants and the system is also realized. The conclusion is that the system could bring the infants to the simulated real cognitive environment, so as to immerse the infants’in virtual reality while fulfilling cognitive training and raise their cognitive ability in entertainment.
本文来自文库分享网www.wkfxw.com
Key Words: somatosensory technology; virtual technology; infant cognition; human-computer interaction
0 引 言
基于Kinect体感的幼儿认知系统技术可行性研究是用Kinect体感设备作为感知设备捕捉幼儿动作及识别幼儿语音,先部署搭建Kinect SDK开发平台,幼儿认知系统通过调用Kinect SDK的SkeletonFrameReadyAPI对幼儿的形体动作进行捕捉;调用Kinect MSAPI(Microsoft Speech Recognition API)对幼儿的语音进行识别,再根据捕获的动作及语音信息从幼儿认知系统调出不同的图形及各种色彩,让幼儿沉浸在虚拟现实世界中获得对图形与颜色的具体认知。幼儿做出的肢体动作和语音信息作为幼儿认知系统的人机交互的输入部分,由幼儿的肢体动作及语音信息控制幼儿认知系统,实现人机交互,提高认知图形及颜色的能力。
1 Kinect体感设备
Kinect体感设备是微软公司针对游戏主机推出的一款强大功能设计产品,在虚拟现实中的应用较为广泛,而在游戏娱乐方面则尤显突出显著作用。借助Kinect体感器可以实现幼儿与机器之间的真实人机交互,促使幼儿在虚拟现实环境中生动接受成功认知教育。在硬件方面,Kinect体感器由红外线发射器、彩色摄像头、红外线摄像头、L形布局的麦克风阵列集结组合构成。其中,摄像头相当于Kinect的“眼睛”部分;麦克风阵列相当于Kinect的“耳朵”部分;以及运用仰角控制调整Kinect视角的Moving Touch传动电动机,传动电机相当于Kinect的“转动”部分。而在软件方面,将Kinect体感器作为幼儿认知系统的人机交互媒介,其核心部件是PrimeSense PS1080级芯片,该芯片是一个多感应系统,提供同步的深度数据流、彩色数据流和音频数据流。研究中,给出PrimeSense的推荐设计如图1所示。
不失研究完整性,在如上昂分析基础上,还需进一步探讨Kinect体感设备的原理工作过程。Kinect体感设备红外线发射器的普通激光源投射出一道Class1 Laser,这道光经过磨砂玻璃和红外滤光片,覆盖Kinect的可视范围,红外线接收器接收反射光线,识别目标物体的Depth field,红外线发射器与红外线接收器配合使用来实现深度数据的获取。同时,Kinect的音频系统采用了四元线性麦克风阵列技术,4个相互独立的小型麦克风之间相距数厘米,捕捉多声道立体声,再通过数字信息处理(DSP)等组件,根据麦克风阵列接听声音的时间差来判断声源方向。 图1PrimeSense的推荐设计
Fig.1 Recommended design for PrimeSense
2 调用Kinect SDK API函数
2.1搭建Kinect SDK系统开发环境
Kinect SDK开发环境在配置上需要分别安装Visual Studio 2010、Visual Studio C++ 2010 Express、Kinect SDK v1.5、Microsoft.NET Framework4.0、 Kinect for Windows SDK和Developer Toolkit等开发工具包。特别地,在安装顺序上,Developer Toolkit必须排定在Kinect for Windows SDK之后。Kinect传感器包括彩色摄像头、红外线摄像头和麦克风阵列,通过USB连接到PC机上,在计算机管理 设备管理器中查看Microsoft Kinect设备,设备下将会包括 Microsoft Kinect Audio Array Control、Microsoft Kinect Camera、Microsoft Kinect Security Control,加载Microsoft Kinect驱动程序,进行测试。测试人员则以熟练掌握Windows Form窗体编程、计算机基本知识、数据结构、三角几何、图形学基础知识、以及XNA开发环境等知识技能者为最佳。通过基本的SDK和windows编程即可在彩色图像视频流和深度图像视频流的采集、骨骼跟踪、音频处理、语音识别等API开发中获取各类功能的效果实现。
2.2 Kinect SDK组成部分
Kinect forWindows v1.5 SDK系统架构如图2所示。Kinect SDK的整体组件包括 Kinect硬件接入层,Kinect设备驱动层,NUI API,音频API等。驱动的内核模式包含了设备驱动程序,上层的数据交互统一使用WinUSB数据线,相应的设备栈主要用于设备的配置和访问,摄像头栈用于视频数据流控制,USBAudio栈用于音频数据流控制,用户模式为API提供了访问和控制接口。应用层API上包括3部分组件,其中MS SDK Beta直接提供了NUI API集和KinectAudio DMO。 Kinect SDK传感器通过管道体系架构将深度图像数据流、彩色图像数据流、音频数据流等原始数据流传递给SDK,通过Kinect SDK提供的底层开发接口,彩色图像视频流,深度图像视频流的采集,骨骼跟踪,音频处理,语音识别等API编程,在此基础上将可展开幼儿认知系统设计研发过程。
2.3系统与Kinect传感器之间的交互
Kinect是以“管道”的体系架构为特征,其传感器可为SDK传送景深数据流、彩色图像数据流和音频数据流等原始数据流,而通过Kinect SDK就可直接获取这些原始传感器数据流。同时,Kinect SDK封装了骨骼跟踪等高层NUI API供应用程序按需调用,从而进一步开发动作识别、体感辨析类应用。另外,作为SDK提供的高层NUI library,重点包括的则是骨骼跟踪和高级音频两大类功能。综上设计分析可知,系统与Kinect传感器及驱动程序、SDK之间的交互连接示意即如图3所示。
还需指出,NUI API是Kinect SDK的核心组成部分,其主要功能包括提供连接至PC的Kinect传感器元件的访问接口、提供对由Kinect成像传感器获取的图像和深度数据流的访问接口、运用经过处理的图像和深度数据实现骨骼跟踪,用来处理彩色图像流、深度图像流、骨骼跟踪和控制管理Kinect设备。
2.4 Kinect 的初始化
//获得Kinect实例
KinectSensor sensor=
(from sensorToCheck inKinectSensor.KinectSensors
Where sensorToCheck.Status==KinectStatus.Connected select sensorToCheck).FirstOrDefault();
通过调用KinectSensor.Start方法初始化并启动Kinect传感器,注册KinectSensor.ColorFrameReady、KinectSensor.DepthFrameReady、KinectSensor.SkeletonFrameReady、KinectSensor.AllFrameReady相关事件。在KinectSensor对象初始化处理结束后,就可从摄像头中获取ColorImageStream数据流、DepthImageStream数据流、SkeletonStream数据流。
2.5肢体动作捕捉
幼儿站在kinect前面时,kinect 捕捉小孩的骨骼,通过对骨骼关键点的动态运算,进行系统识别,将幼儿与其他人员区别开来,当幼儿移动时,kinect传感器将在瞬间追踪幼儿,即可用声音和肢体运动来控制幼儿认知系统,与系统进行实时互动。研究中,设计实现的关键程序代码可见于下:
Void kinect_AllFramesReady(object sender,AllFramesReadyEventArgs e)
{ if(iswindowsClosing)
{ return;}
Skeleton first=Getfirstskeleton(e);
If(first==null)
{ hideoperaface();
Return;}
If(first.trackingstate!=skeletonTrackingstate.tracked) { hideoperaface();
Return;}
Else{showoperaface();}
Mappingskeletoncameracoordinate(first,e);
Operafacemagic(first);
}
skeletonGetFirstskeleton(AllFramesReadyEventArgs e)
{ using(skeletonFrameskeletonFrameData=e.openskeletonFrame())
{if(skeletonFramedata==null)
{ return null;}
SkeletonFrameData.copyskeletonDataTo(allskeletons);
Skeleton first=(fromsinallskeletons wheres.TrackingState==skeletonTrackingState.Tracked select s).firstordefault();
Return first;
}
}
2.6语音识别
Kinect能够获取和识别外界的语音信息。Kinect设置有4个相互独立的麦克风(左侧1个,右侧3个),共同组成一个麦克风阵列,彼此之间相距数厘米,能够捕捉多声道立体声。声音捕捉时,是通过DSP 根据麦克风阵列接听声音的时间差来判断声源方向,并识别语音命令,再根据识别的结果将数据传递给系统进行处理。
2.7彩色图像流的基本处理
Void_kinect_AllFramesReady(object sender,AllFramesReadyEventArgs e)
{ using(ColorImageFramecolorFrame=e.OpenColorImageFrame())
{ if (colorframe==null)
{ return;}
Byte[] pixels=new byte[colorFrame.pixelDatalength];
colorFrame.copypixelDataTo(pixels);
int stride=colorFrame.width*4;
imageCamera.source=
bitmapSource.create(colorFrame.width,colorFrame.height,96,96,
pixelFormats.bgr32,null,pixels,stride);
}
}
3 结束语
基于Kinect体感技术开发幼儿认知系统是在虚拟现实环境中,利用Kinect设备作为幼儿认知系统的人机输入界面,通过搭建Kinect SDK开发平台,调用Kinect SDK的相关API,捕捉幼儿的动作及识别幼儿的语音来操纵幼儿认知系统,通过身体控制认知系统,进入虚拟现实环境中。开发该幼儿认知系统重点结合了幼儿认知成长规律,对认知功能进行设计,先设计识别简单的图形、颜色,然后提高到识别复杂的图形,逐步提高到图像或汉字等,由易到难,循序渐进。该系统借助Kinect体感设备的摄像头及麦克见阵列等系统感知设备,通过PrimeSense的PS1080芯片感应系统,进行深度数据流、色彩数据流和音频数据流传送、而且可以控制近红外光源,进行图像编码,主动投射近红外光谱,从Kinect SDK NUI libaray中调用相关的API接口,利用kinect的语音传感器、摄像头实现自然交互。通过建立虚拟现实的开发平台,对幼儿的体态动作做到捕捉与识别,从技术上分析,基于Kinect体感技术开发幼儿认知系统是现实可行的。
参考文献
[1] 肖杰,李秀鹏,史会余,等.基于Kinect 的跨平台人机交互系统的研究和实现[J].电脑编程技巧与维护,2016(2):20,41.
[2] 李里程,李勇帆. 基于Kinect的儿童体感交互式多媒体电子书及其学习平台的研发[J].中小学信息技术教育,2013(21):96-101.
[3] 孙强,王文涛,周璇. 基于Kinect 传感器的全方位运输平台控制系统研究[J] 电子设计工程,2015,23(24):99-102.
[4] 韩娜,钟卓成,吴振权,等 基于体感控制的智能家居系统设计与实现[J] 信息技术,2015(12):91-93.