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