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