駱金維 曾德生 張勁波 張仁忠
摘 要 基于Kinect體感器開(kāi)發(fā)一套幼兒認(rèn)知系統(tǒng),以激發(fā)幼兒認(rèn)知的興趣,陶冶幼兒的情操,促進(jìn)幼兒的智力發(fā)展,提高幼兒的認(rèn)知能力。幼兒認(rèn)知系統(tǒng)是基于Kinect的體感技術(shù),借助Kinect感應(yīng)系統(tǒng)來(lái)定位捕捉幼兒動(dòng)作及識(shí)別幼兒的語(yǔ)音信息,通過(guò)Kinect體感設(shè)備與計(jì)算機(jī)系統(tǒng)連接,將動(dòng)作及語(yǔ)音信息輸入系統(tǒng),實(shí)現(xiàn)幼兒與系統(tǒng)之間互動(dòng),帶幼兒進(jìn)入模擬真實(shí)的認(rèn)識(shí)環(huán)境中,沉浸在虛擬現(xiàn)實(shí)中進(jìn)行認(rèn)知訓(xùn)練,在娛樂(lè)中提高幼兒認(rèn)知能力。
關(guān)鍵詞 體感技術(shù);虛擬技術(shù);幼兒認(rèn)知;人機(jī)交互
中圖法分類號(hào): TP391 文獻(xiàn)標(biāo)識(shí)碼: 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 infantsaction 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 infantsin virtual reality while fulfilling cognitive training and raise their cognitive ability in entertainment.
Key Words: somatosensory technology; virtual technology; infant cognition; human-computer interaction
0 引 言
基于Kinect體感的幼兒認(rèn)知系統(tǒng)技術(shù)可行性研究是用Kinect體感設(shè)備作為感知設(shè)備捕捉幼兒動(dòng)作及識(shí)別幼兒語(yǔ)音,先部署搭建Kinect SDK開(kāi)發(fā)平臺(tái),幼兒認(rèn)知系統(tǒng)通過(guò)調(diào)用Kinect SDK的SkeletonFrameReadyAPI對(duì)幼兒的形體動(dòng)作進(jìn)行捕捉;調(diào)用Kinect MSAPI(Microsoft Speech Recognition API)對(duì)幼兒的語(yǔ)音進(jìn)行識(shí)別,再根據(jù)捕獲的動(dòng)作及語(yǔ)音信息從幼兒認(rèn)知系統(tǒng)調(diào)出不同的圖形及各種色彩,讓幼兒沉浸在虛擬現(xiàn)實(shí)世界中獲得對(duì)圖形與顏色的具體認(rèn)知。幼兒做出的肢體動(dòng)作和語(yǔ)音信息作為幼兒認(rèn)知系統(tǒng)的人機(jī)交互的輸入部分,由幼兒的肢體動(dòng)作及語(yǔ)音信息控制幼兒認(rèn)知系統(tǒng),實(shí)現(xiàn)人機(jī)交互,提高認(rèn)知圖形及顏色的能力。
1 Kinect體感設(shè)備
Kinect體感設(shè)備是微軟公司針對(duì)游戲主機(jī)推出的一款強(qiáng)大功能設(shè)計(jì)產(chǎn)品,在虛擬現(xiàn)實(shí)中的應(yīng)用較為廣泛,而在游戲娛樂(lè)方面則尤顯突出顯著作用。借助Kinect體感器可以實(shí)現(xiàn)幼兒與機(jī)器之間的真實(shí)人機(jī)交互,促使幼兒在虛擬現(xiàn)實(shí)環(huán)境中生動(dòng)接受成功認(rèn)知教育。在硬件方面,Kinect體感器由紅外線發(fā)射器、彩色攝像頭、紅外線攝像頭、L形布局的麥克風(fēng)陣列集結(jié)組合構(gòu)成。其中,攝像頭相當(dāng)于Kinect的“眼睛”部分;麥克風(fēng)陣列相當(dāng)于Kinect的“耳朵”部分;以及運(yùn)用仰角控制調(diào)整Kinect視角的Moving Touch傳動(dòng)電動(dòng)機(jī),傳動(dòng)電機(jī)相當(dāng)于Kinect的“轉(zhuǎn)動(dòng)”部分。而在軟件方面,將Kinect體感器作為幼兒認(rèn)知系統(tǒng)的人機(jī)交互媒介,其核心部件是PrimeSense PS1080級(jí)芯片,該芯片是一個(gè)多感應(yīng)系統(tǒng),提供同步的深度數(shù)據(jù)流、彩色數(shù)據(jù)流和音頻數(shù)據(jù)流。研究中,給出PrimeSense的推薦設(shè)計(jì)如圖1所示。
不失研究完整性,在如上昂分析基礎(chǔ)上,還需進(jìn)一步探討Kinect體感設(shè)備的原理工作過(guò)程。Kinect體感設(shè)備紅外線發(fā)射器的普通激光源投射出一道Class1 Laser,這道光經(jīng)過(guò)磨砂玻璃和紅外濾光片,覆蓋Kinect的可視范圍,紅外線接收器接收反射光線,識(shí)別目標(biāo)物體的Depth field,紅外線發(fā)射器與紅外線接收器配合使用來(lái)實(shí)現(xiàn)深度數(shù)據(jù)的獲取。同時(shí),Kinect的音頻系統(tǒng)采用了四元線性麥克風(fēng)陣列技術(shù),4個(gè)相互獨(dú)立的小型麥克風(fēng)之間相距數(shù)厘米,捕捉多聲道立體聲,再通過(guò)數(shù)字信息處理(DSP)等組件,根據(jù)麥克風(fēng)陣列接聽(tīng)聲音的時(shí)間差來(lái)判斷聲源方向。
圖1PrimeSense的推薦設(shè)計(jì)
Fig.1 Recommended design for PrimeSense
2 調(diào)用Kinect SDK API函數(shù)
2.1搭建Kinect SDK系統(tǒng)開(kāi)發(fā)環(huán)境
Kinect SDK開(kāi)發(fā)環(huán)境在配置上需要分別安裝Visual Studio 2010、Visual Studio C++ 2010 Express、Kinect SDK v1.5、Microsoft.NET Framework4.0、 Kinect for Windows SDK和Developer Toolkit等開(kāi)發(fā)工具包。特別地,在安裝順序上,Developer Toolkit必須排定在Kinect for Windows SDK之后。Kinect傳感器包括彩色攝像頭、紅外線攝像頭和麥克風(fēng)陣列,通過(guò)USB連接到PC機(jī)上,在計(jì)算機(jī)管理 設(shè)備管理器中查看Microsoft Kinect設(shè)備,設(shè)備下將會(huì)包括 Microsoft Kinect Audio Array Control、Microsoft Kinect Camera、Microsoft Kinect Security Control,加載Microsoft Kinect驅(qū)動(dòng)程序,進(jìn)行測(cè)試。測(cè)試人員則以熟練掌握Windows Form窗體編程、計(jì)算機(jī)基本知識(shí)、數(shù)據(jù)結(jié)構(gòu)、三角幾何、圖形學(xué)基礎(chǔ)知識(shí)、以及XNA開(kāi)發(fā)環(huán)境等知識(shí)技能者為最佳。通過(guò)基本的SDK和windows編程即可在彩色圖像視頻流和深度圖像視頻流的采集、骨骼跟蹤、音頻處理、語(yǔ)音識(shí)別等API開(kāi)發(fā)中獲取各類功能的效果實(shí)現(xiàn)。
2.2 Kinect SDK組成部分
Kinect forWindows v1.5 SDK系統(tǒng)架構(gòu)如圖2所示。Kinect SDK的整體組件包括 Kinect硬件接入層,Kinect設(shè)備驅(qū)動(dòng)層,NUI API,音頻API等。驅(qū)動(dòng)的內(nèi)核模式包含了設(shè)備驅(qū)動(dòng)程序,上層的數(shù)據(jù)交互統(tǒng)一使用WinUSB數(shù)據(jù)線,相應(yīng)的設(shè)備棧主要用于設(shè)備的配置和訪問(wèn),攝像頭棧用于視頻數(shù)據(jù)流控制,USBAudio棧用于音頻數(shù)據(jù)流控制,用戶模式為API提供了訪問(wèn)和控制接口。應(yīng)用層API上包括3部分組件,其中MS SDK Beta直接提供了NUI API集和KinectAudio DMO。 Kinect SDK傳感器通過(guò)管道體系架構(gòu)將深度圖像數(shù)據(jù)流、彩色圖像數(shù)據(jù)流、音頻數(shù)據(jù)流等原始數(shù)據(jù)流傳遞給SDK,通過(guò)Kinect SDK提供的底層開(kāi)發(fā)接口,彩色圖像視頻流,深度圖像視頻流的采集,骨骼跟蹤,音頻處理,語(yǔ)音識(shí)別等API編程,在此基礎(chǔ)上將可展開(kāi)幼兒認(rèn)知系統(tǒng)設(shè)計(jì)研發(fā)過(guò)程。
2.3系統(tǒng)與Kinect傳感器之間的交互
Kinect是以“管道”的體系架構(gòu)為特征,其傳感器可為SDK傳送景深數(shù)據(jù)流、彩色圖像數(shù)據(jù)流和音頻數(shù)據(jù)流等原始數(shù)據(jù)流,而通過(guò)Kinect SDK就可直接獲取這些原始傳感器數(shù)據(jù)流。同時(shí),Kinect SDK封裝了骨骼跟蹤等高層NUI API供應(yīng)用程序按需調(diào)用,從而進(jìn)一步開(kāi)發(fā)動(dòng)作識(shí)別、體感辨析類應(yīng)用。另外,作為SDK提供的高層NUI library,重點(diǎn)包括的則是骨骼跟蹤和高級(jí)音頻兩大類功能。綜上設(shè)計(jì)分析可知,系統(tǒng)與Kinect傳感器及驅(qū)動(dòng)程序、SDK之間的交互連接示意即如圖3所示。
還需指出,NUI API是Kinect SDK的核心組成部分,其主要功能包括提供連接至PC的Kinect傳感器元件的訪問(wèn)接口、提供對(duì)由Kinect成像傳感器獲取的圖像和深度數(shù)據(jù)流的訪問(wèn)接口、運(yùn)用經(jīng)過(guò)處理的圖像和深度數(shù)據(jù)實(shí)現(xiàn)骨骼跟蹤,用來(lái)處理彩色圖像流、深度圖像流、骨骼跟蹤和控制管理Kinect設(shè)備。
2.4 Kinect 的初始化
//獲得Kinect實(shí)例
KinectSensor sensor=
(from sensorToCheck inKinectSensor.KinectSensors
Where sensorToCheck.Status==KinectStatus.Connected select sensorToCheck).FirstOrDefault();
通過(guò)調(diào)用KinectSensor.Start方法初始化并啟動(dòng)Kinect傳感器,注冊(cè)KinectSensor.ColorFrameReady、KinectSensor.DepthFrameReady、KinectSensor.SkeletonFrameReady、KinectSensor.AllFrameReady相關(guān)事件。在KinectSensor對(duì)象初始化處理結(jié)束后,就可從攝像頭中獲取ColorImageStream數(shù)據(jù)流、DepthImageStream數(shù)據(jù)流、SkeletonStream數(shù)據(jù)流。
2.5肢體動(dòng)作捕捉
幼兒站在kinect前面時(shí),kinect 捕捉小孩的骨骼,通過(guò)對(duì)骨骼關(guān)鍵點(diǎn)的動(dòng)態(tài)運(yùn)算,進(jìn)行系統(tǒng)識(shí)別,將幼兒與其他人員區(qū)別開(kāi)來(lái),當(dāng)幼兒移動(dòng)時(shí),kinect傳感器將在瞬間追蹤幼兒,即可用聲音和肢體運(yùn)動(dòng)來(lái)控制幼兒認(rèn)知系統(tǒng),與系統(tǒng)進(jìn)行實(shí)時(shí)互動(dòng)。研究中,設(shè)計(jì)實(shí)現(xiàn)的關(guān)鍵程序代碼可見(jiàn)于下:
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語(yǔ)音識(shí)別
Kinect能夠獲取和識(shí)別外界的語(yǔ)音信息。Kinect設(shè)置有4個(gè)相互獨(dú)立的麥克風(fēng)(左側(cè)1個(gè),右側(cè)3個(gè)),共同組成一個(gè)麥克風(fēng)陣列,彼此之間相距數(shù)厘米,能夠捕捉多聲道立體聲。聲音捕捉時(shí),是通過(guò)DSP 根據(jù)麥克風(fēng)陣列接聽(tīng)聲音的時(shí)間差來(lái)判斷聲源方向,并識(shí)別語(yǔ)音命令,再根據(jù)識(shí)別的結(jié)果將數(shù)據(jù)傳遞給系統(tǒng)進(jìn)行處理。
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 結(jié)束語(yǔ)
基于Kinect體感技術(shù)開(kāi)發(fā)幼兒認(rèn)知系統(tǒng)是在虛擬現(xiàn)實(shí)環(huán)境中,利用Kinect設(shè)備作為幼兒認(rèn)知系統(tǒng)的人機(jī)輸入界面,通過(guò)搭建Kinect SDK開(kāi)發(fā)平臺(tái),調(diào)用Kinect SDK的相關(guān)API,捕捉幼兒的動(dòng)作及識(shí)別幼兒的語(yǔ)音來(lái)操縱幼兒認(rèn)知系統(tǒng),通過(guò)身體控制認(rèn)知系統(tǒng),進(jìn)入虛擬現(xiàn)實(shí)環(huán)境中。開(kāi)發(fā)該幼兒認(rèn)知系統(tǒng)重點(diǎn)結(jié)合了幼兒認(rèn)知成長(zhǎng)規(guī)律,對(duì)認(rèn)知功能進(jìn)行設(shè)計(jì),先設(shè)計(jì)識(shí)別簡(jiǎn)單的圖形、顏色,然后提高到識(shí)別復(fù)雜的圖形,逐步提高到圖像或漢字等,由易到難,循序漸進(jìn)。該系統(tǒng)借助Kinect體感設(shè)備的攝像頭及麥克見(jiàn)陣列等系統(tǒng)感知設(shè)備,通過(guò)PrimeSense的PS1080芯片感應(yīng)系統(tǒng),進(jìn)行深度數(shù)據(jù)流、色彩數(shù)據(jù)流和音頻數(shù)據(jù)流傳送、而且可以控制近紅外光源,進(jìn)行圖像編碼,主動(dòng)投射近紅外光譜,從Kinect SDK NUI libaray中調(diào)用相關(guān)的API接口,利用kinect的語(yǔ)音傳感器、攝像頭實(shí)現(xiàn)自然交互。通過(guò)建立虛擬現(xiàn)實(shí)的開(kāi)發(fā)平臺(tái),對(duì)幼兒的體態(tài)動(dòng)作做到捕捉與識(shí)別,從技術(shù)上分析,基于Kinect體感技術(shù)開(kāi)發(fā)幼兒認(rèn)知系統(tǒng)是現(xiàn)實(shí)可行的。
參考文獻(xiàn)
[1] 肖杰,李秀鵬,史會(huì)余,等.基于Kinect 的跨平臺(tái)人機(jī)交互系統(tǒng)的研究和實(shí)現(xiàn)[J].電腦編程技巧與維護(hù),2016(2):20,41.
[2] 李里程,李勇帆. 基于Kinect的兒童體感交互式多媒體電子書及其學(xué)習(xí)平臺(tái)的研發(fā)[J].中小學(xué)信息技術(shù)教育,2013(21):96-101.
[3] 孫強(qiáng),王文濤,周璇. 基于Kinect 傳感器的全方位運(yùn)輸平臺(tái)控制系統(tǒng)研究[J] 電子設(shè)計(jì)工程,2015,23(24):99-102.
[4] 韓娜,鐘卓成,吳振權(quán),等 基于體感控制的智能家居系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J] 信息技術(shù),2015(12):91-93.