房漢雄,何 鵬,沙麗鵑,袁 琪,李靜輝
(齊齊哈爾大學(xué)通信與電子工程學(xué)院,黑龍江齊齊哈爾161006)
隨著社會(huì)的進(jìn)步人們對(duì)弱勢(shì)群體的關(guān)愛(ài)越來(lái)越多,殘疾人生活中的輔助器具是其生存保障和提高生存質(zhì)量的最直接有效的重要途徑之一。秉著這種重要的通用設(shè)計(jì)理念和殘疾人輔助設(shè)備的需求情況,本系統(tǒng)將手勢(shì)識(shí)別技術(shù)引入到每個(gè)人生活必備的智能手機(jī)中,進(jìn)而有利于殘疾人向外界尋求幫助或者操控那些具有接收指令模塊的設(shè)備。
本系統(tǒng)地工作目標(biāo)是通過(guò)手機(jī)攝像頭采集手勢(shì)信息,利用編制的手勢(shì)識(shí)別系統(tǒng)[1-2]識(shí)別出手勢(shì)信息的含義,進(jìn)一步將其轉(zhuǎn)換為相應(yīng)的控制命令,通過(guò)智能手機(jī)的藍(lán)牙發(fā)射器傳給相應(yīng)的設(shè)備,從而實(shí)現(xiàn)對(duì)相應(yīng)儀器的控制功能。
2010年推出的開(kāi)放源碼的Linux項(xiàng)目——Meego操作系統(tǒng)能夠在智能手機(jī)、筆記本計(jì)算機(jī)和電視等多種電子設(shè)備上運(yùn)行,有助于這些設(shè)備的無(wú)縫集成[3]。結(jié)合通用設(shè)計(jì)的理念,故本系統(tǒng)以Meego為運(yùn)行平臺(tái)。Meego中含有Qt架構(gòu)[4],Qt是源碼開(kāi)放的程序開(kāi)發(fā)環(huán)境[5-6],故本系統(tǒng)以Qt為平臺(tái)進(jìn)行開(kāi)發(fā)。由于進(jìn)行手勢(shì)識(shí)別需要大量的圖像處理函數(shù),如果這些函數(shù)均自主開(kāi)發(fā)將浪費(fèi)大量的時(shí)間,而OpenCV[7]提供了大量的開(kāi)源的計(jì)算機(jī)視覺(jué)庫(kù)函數(shù),Qt和OpenCV 都是以 C++為基礎(chǔ)的[8],所以在本系統(tǒng)中使用Qt和OpenCV進(jìn)行開(kāi)發(fā)。
Meego是開(kāi)放源碼的Linux項(xiàng)目,它包含了性能優(yōu)化,可供面向計(jì)算和圖形的應(yīng)用及連接服務(wù)的開(kāi)發(fā)的組件,對(duì)互聯(lián)網(wǎng)標(biāo)準(zhǔn)的支持,基于Qt的易于使用的開(kāi)發(fā)環(huán)境,是面向小型平臺(tái)及移動(dòng)設(shè)備的規(guī)模和性能而優(yōu)化的Linux架構(gòu)。Meego適用的平臺(tái)包括上網(wǎng)本、簡(jiǎn)易臺(tái)式機(jī)、手持計(jì)算和通信設(shè)備、車載信息娛樂(lè)設(shè)備、上網(wǎng)電視、多媒體電話。在Windows下安裝 Meego的方法如下[9]:
第一步,整理磁盤騰出一個(gè)大于20 Gbyte的新空間來(lái)安裝Meego系統(tǒng);第二步,準(zhǔn)備一個(gè)大于2 Gbyte的U盤下載Meego鏡像.img文件,使用Win32DiskImager把Meego鏡像寫到U盤中;第三步,設(shè)置BIOS從U盤啟動(dòng),選擇install Meego,然后選擇“Use free space and create default layout”選項(xiàng)自動(dòng)尋找空閑空間來(lái)進(jìn)行安裝;第四步,安裝完畢,拔出U盤,重啟,系統(tǒng)會(huì)自動(dòng)進(jìn)入Meego,如圖1所示。
圖1 Meego界面(截圖)
Qt是開(kāi)源的,能夠?qū)崿F(xiàn)一次編程。開(kāi)源是指用相同的源程序可以在不同的編譯器中編譯生成不同體系的可執(zhí)行文件,這些可執(zhí)行文件可以分別運(yùn)行在不同的平臺(tái)上。Meego是以Qt為基礎(chǔ)的,在Meego操作系統(tǒng)下支持Qt4.7。Qt的安裝和配置過(guò)程如下:
第一步,下載Qt4.7并安裝,特別注意安裝添加bluez模塊;第二步,啟動(dòng)Qt;第三步,創(chuàng)建Qt Quick GUI,具體方法為:File>New File or Project>Qt Quick Project>Qt Quick Application;第四步,設(shè)定項(xiàng)目名稱和路徑;第五步,選擇Qt模擬器選項(xiàng)建立應(yīng)用;第六步,編寫調(diào)試程序。至此,Qt安裝完成。在以后編寫Qt程序的過(guò)程中,目標(biāo)板選擇為“Meego”即可,如圖2所示。
圖2 Qt測(cè)試程序配置(截圖)
由于Qt缺少計(jì)算機(jī)視覺(jué)庫(kù),因此還需要下載安裝OpenCV,然后在Qt中使用OpenCV庫(kù),具體配置過(guò)程如下:由于Qt在解析路徑時(shí)不能識(shí)別空格,因此必須確保OpenCV的安裝路徑中不包含空格,例如D:OpenCV;然后啟動(dòng)Qt并創(chuàng)建工程文件.pro,在創(chuàng)建工程文件的時(shí)候向工程中添加以下語(yǔ)句:
INCLUDEPATH+=D:OpenCVcvinclude
INCLUDEPATH+=D:OpenCVcvauxinclude
INCLUDEPATH+=D:OpenCVcxcoreinclude
INCLUDEPATH+=D:OpenCVotherlibshighgui
LIBS+=D:OpenCVlibcv.lib
LIBS+=D:OpenCVlibcvaux.lib
LIBS+=D:OpenCVlibcxcore.lib
LIBS+=D:OpenCVlibhighgui.lib
LIBS+=D:OpenCVlibcvcam.lib
本系統(tǒng)工作的目的是想讓殘疾人對(duì)著手機(jī)作出代表一定命令意義的手勢(shì),在智能手機(jī)中通過(guò)本文開(kāi)發(fā)的這些源代碼進(jìn)行手勢(shì)識(shí)別,將手勢(shì)轉(zhuǎn)換成相應(yīng)的指令信息,再通過(guò)Qt的驅(qū)動(dòng)藍(lán)牙技術(shù)使得藍(lán)牙傳輸模塊將這種命令傳輸給相應(yīng)的設(shè)備,進(jìn)而幫助殘疾人生活。建立的系統(tǒng)模型如圖3所示,開(kāi)發(fā)過(guò)程如下:首先,分析現(xiàn)實(shí)世界中的手勢(shì)行為特點(diǎn)和認(rèn)知特點(diǎn),研究通用手勢(shì)交互任務(wù)的特點(diǎn),建立面向任務(wù)的手勢(shì)模型;其次,研究基于視覺(jué)及序列圖像的的手勢(shì)識(shí)別技術(shù),利用OpenCV庫(kù)進(jìn)行手勢(shì)識(shí)別,分析Meego手機(jī)操作系統(tǒng)框架,將手勢(shì)識(shí)別系統(tǒng)移植到智能手機(jī)中;再次,將手勢(shì)信息轉(zhuǎn)換為相應(yīng)的控制命令,利用藍(lán)牙傳輸模塊將控制命令通過(guò)藍(lán)牙發(fā)射器傳給相應(yīng)的智能設(shè)備,實(shí)現(xiàn)相應(yīng)的控制功能;最后,開(kāi)發(fā)試驗(yàn)平臺(tái),支持上述各項(xiàng)的試驗(yàn)研究。
圖3 系統(tǒng)模型
本系統(tǒng)首先使用Qt驅(qū)動(dòng)攝像頭采集實(shí)時(shí)圖像并建立圖形用戶界面,然后將采集到的手勢(shì)圖像轉(zhuǎn)換成OpenCV支持的數(shù)據(jù)格式,再進(jìn)行膚色提取、高斯平滑、形態(tài)學(xué)膨脹、邊緣檢測(cè)、輪廓提取、特征提取;然后將提取到的特征與樣本空間進(jìn)行對(duì)比從而得到手勢(shì)識(shí)別結(jié)果。根據(jù)識(shí)別結(jié)果,從相應(yīng)的數(shù)據(jù)庫(kù)中找到該手勢(shì)所代表的含義并轉(zhuǎn)換成相應(yīng)的控制信息,通過(guò)Qt驅(qū)動(dòng)藍(lán)牙模塊向外發(fā)送指令。具體工作過(guò)程如下:
第一步,調(diào)用Qt Mobile APIs的Camera模塊使攝像頭獲取實(shí)時(shí)的手勢(shì)頻圖像,將采集到的一幀圖像轉(zhuǎn)換為OpenCV使用的數(shù)據(jù)結(jié)構(gòu)IplImage,使用QMainWindow創(chuàng)建圖形窗口界面。
第二步,采集手勢(shì)圖像(如圖4所示)建立樣本庫(kù),對(duì)每個(gè)樣本計(jì)算Hu矩作為其特征向量并訓(xùn)練SVM模型。
圖4 手勢(shì)樣本采集(截圖)
第三步,將圖像轉(zhuǎn)換到 YCrbr顏色空間,利用&preframe.operator IplImage進(jìn)行膚色提取,再轉(zhuǎn)換成灰度圖像進(jìn)行平滑濾波GaussianBlur,接下來(lái)依次做邊緣檢測(cè)Canny、形態(tài)學(xué)膨脹erode和輪廓提取drawContours,得到感興趣的手勢(shì)目標(biāo)圖像,如圖5所示。
圖5 手勢(shì)4的輪廓(截圖)
第四步,對(duì)目標(biāo)手勢(shì)進(jìn)行Hu計(jì)算(如圖6所示)Hu-Moments以提取特征,再進(jìn)行SVM訓(xùn)練CvSVM svm。
圖6 Hu計(jì)算(截圖)
第五步,進(jìn)行模板匹配,得到手勢(shì)識(shí)別結(jié)果,如圖7所示,表示待識(shí)別的手勢(shì)與樣本匹配的概率為98%。
圖7 識(shí)別結(jié)果(截圖)
第六步,通過(guò)地址指針找到手勢(shì)信息代表的含義信息。
第七步,通過(guò)Qt的-bluetooth將指令信息從藍(lán)牙設(shè)備發(fā)射出去。
本文提出在Meego上進(jìn)行手勢(shì)識(shí)別,該系統(tǒng)是在同時(shí)安裝Meego和Windows7兩個(gè)系統(tǒng)的筆記本計(jì)算機(jī)上實(shí)現(xiàn)的,對(duì)常見(jiàn)的手勢(shì)0~9的識(shí)別準(zhǔn)確率達(dá)到98%,識(shí)別耗時(shí)在5 s以內(nèi)。如果受控設(shè)備得到較好的研發(fā),使其具有無(wú)線接收模塊及相應(yīng)的程序控制,實(shí)現(xiàn)一定的操控功能,那么實(shí)現(xiàn)與目標(biāo)物的通信將使本系統(tǒng)具有較好的應(yīng)用前景。
[1]王守磊,朱民耀,陸小峰,等.一種基于方向直方圖的嵌入式手勢(shì)識(shí)別系統(tǒng)[J].電視技術(shù),2012,36(15):133-137.
[2]張金剛,林喜榮,戴曉晴,等.指紋識(shí)別系統(tǒng)的一種低功耗實(shí)現(xiàn)方法與應(yīng)用[J].電視技術(shù),2011,35(11):117-121.
[3]許柏森.基于Meego平臺(tái)的同步構(gòu)架的設(shè)計(jì)與實(shí)現(xiàn)[D].哈爾濱:哈爾濱工業(yè)大學(xué),2012.
[4]陳都習(xí).基于Meego的多點(diǎn)觸控研究與設(shè)計(jì)實(shí)現(xiàn)[D].成都:西南交通大學(xué),2012.
[5]陳曦,劉增強(qiáng).基于Qt/Embedded嵌入式控制界面的設(shè)計(jì)[J].化工自動(dòng)化及儀表,2011,38(9):1131-1139.
[6]陳勇,王宏偉.基于Qt/E的智能倉(cāng)儲(chǔ)管理便攜式終端設(shè)計(jì)[J].重慶郵電大學(xué)學(xué)報(bào):自然科學(xué)版,2012,24(3):369-374.
[7]易子豐,孫堅(jiān),鐘紹俊,等.基于OpenCV的高精度零件焦點(diǎn)距離測(cè)量研究[J].電視技術(shù),2011,35(17):126-128.
[8]張羽,徐端全.OpenCV分水嶺算法的改進(jìn)及其在細(xì)胞分割中的應(yīng)用[J].計(jì)算機(jī)應(yīng)用,2012,32(S1):134-136.
[9] 紅薯.安裝 Meego和 Windows7雙系統(tǒng)的方法[EB/OL].[2013-07-23].http://www.oschina.net/question/12_20561.