滕岳,呂勇,毛海波
(北京信息科技大學(xué)儀器科學(xué)與光電工程學(xué)院,北京 100192)
基于嵌入式系統(tǒng)的手勢(shì)識(shí)別
滕岳,呂勇,毛海波
(北京信息科技大學(xué)儀器科學(xué)與光電工程學(xué)院,北京 100192)
隨著嵌入式技術(shù)不斷普及,小型化、操作自由、交互智能成為新一代人機(jī)交互技術(shù)的發(fā)展趨勢(shì),基于嵌入式的手勢(shì)識(shí)別就是其中的一項(xiàng)關(guān)鍵技術(shù)。主要是成功將OpenCV移植到嵌入式平臺(tái),通過(guò)V4L2架構(gòu)實(shí)現(xiàn)USB攝像頭的視頻采集以及LCD顯示,利用OpenCV豐富的視覺(jué)庫(kù)實(shí)現(xiàn)色彩空間轉(zhuǎn)換,轉(zhuǎn)換到HSV空間,閾值分割得到二值化圖像,最后通過(guò)濾波處理、輪廓提取、輪廓樹匹配的方法實(shí)現(xiàn)手勢(shì)識(shí)別,實(shí)踐證明通過(guò)該方法實(shí)現(xiàn)嵌入式系統(tǒng)的手勢(shì)識(shí)別可行。
嵌入式;手勢(shì)識(shí)別;OpenCV;HSV空間;輪廓提取
手勢(shì)識(shí)別技術(shù)作為人機(jī)交互領(lǐng)域的一項(xiàng)關(guān)鍵技術(shù),受到越來(lái)越多學(xué)者的青睞和學(xué)術(shù)界的關(guān)注,特別是利用攝像頭來(lái)實(shí)現(xiàn)對(duì)手勢(shì)的非接觸性捕獲,并通過(guò)計(jì)算機(jī)視覺(jué)(如OpenCV)對(duì)手勢(shì)進(jìn)行處理分析識(shí)別,完成特定的交互任務(wù)。但是隨著嵌入式技術(shù)的不斷發(fā)展以及人們對(duì)設(shè)備小型化需求的不斷提高,將手勢(shì)識(shí)別技術(shù)移植到嵌入式系統(tǒng)成為時(shí)代發(fā)展的需要,將OpenCV視覺(jué)庫(kù)應(yīng)用到嵌入式系統(tǒng)是其中必不可少的一個(gè)環(huán)節(jié)。
基于視覺(jué)的手勢(shì)識(shí)別一般可分為手勢(shì)圖像的采集、手勢(shì)圖像的分割、特征提取及手勢(shì)識(shí)別四個(gè)步驟[1]。通過(guò)膚色分割獲取手勢(shì)的二值圖像,然后提取手勢(shì)輪廓特征是應(yīng)用最廣泛的一種方法。通常對(duì)于手勢(shì)分割和識(shí)別是手勢(shì)識(shí)別算法的關(guān)鍵和難點(diǎn),而對(duì)于嵌入式單純通過(guò)C程序編程來(lái)實(shí)現(xiàn)上述難點(diǎn),首先代碼量會(huì)很大,影響嵌入式的運(yùn)算速度,其次就是高效的視覺(jué)庫(kù)對(duì)于提高處理速度有很大的幫助,因此將OpenCV視覺(jué)庫(kù)移植到嵌入式系統(tǒng)是實(shí)現(xiàn)快速處理的重中之重。
本文主要通過(guò)單攝像頭的視頻捕獲、視覺(jué)庫(kù)的移植以及通過(guò)手勢(shì)分割、輪廓提取、圖像匹配等最終實(shí)現(xiàn)嵌入式系統(tǒng)的手勢(shì)識(shí)別。
HSV空間轉(zhuǎn)換主要將現(xiàn)實(shí)中物體的色彩信息從一個(gè)模型轉(zhuǎn)換到另外一個(gè)模型,目的就是為了使人們能方便地區(qū)分不同的物體,提取出想要的物體信息,其模型類似于六角椎體,這個(gè)模型中的顏色參數(shù)分別為:色調(diào)(H)、飽和度(S)、亮度(V),所以稱為HSV,模型如圖1所示。
其中色調(diào)H是通過(guò)角度進(jìn)行度量,其取值范圍為0°~360°,從紅色開始按逆時(shí)針?lè)较蛴?jì)算,紅色為0、綠色為120°,藍(lán)色為240°。它們的補(bǔ)色是:黃色為60°,青色為180°,品紅為300°;飽和度S表示色彩的純度,其取值范圍是0.0~1.0,其值越大表示色彩越純,其值越低表示色彩越暗淡;亮度V表示色彩的明亮程度,其取值范圍是0.0(黑色)~1.0(白色)。
圖1 HSV顏色空間模型
RGB顏色空間與HSV顏色空間的轉(zhuǎn)換公式為:
在開始手勢(shì)識(shí)別程序編寫之前,需要進(jìn)行一些相關(guān)的準(zhǔn)備工作,保證手勢(shì)識(shí)別的編寫能夠像在計(jì)算機(jī)上一樣方便、高效。
2.1 嵌入式平臺(tái)下視頻捕獲的實(shí)現(xiàn)
基于V4L2的視頻捕獲主要通過(guò)如下流程來(lái)實(shí)現(xiàn),包括:打開視頻設(shè)備、讀取設(shè)備信息、設(shè)置設(shè)備當(dāng)前信息、內(nèi)存映射、對(duì)采集數(shù)據(jù)的處理、關(guān)閉設(shè)備。其中這些具體操作主要是通過(guò)ioctl()函數(shù)完成系統(tǒng)調(diào)用來(lái)實(shí)現(xiàn)。其成功采集圖像的效果圖如圖2所示。
2.2 OpenCV的嵌入式平臺(tái)移植
本文采用OpenCV 2.3.1開源版本,OpenCV的編譯配置工具為cmake-2.8.12.2-linux-i386,cmake是一個(gè)跨平臺(tái)的安裝工具,可以用簡(jiǎn)單的語(yǔ)句來(lái)描述所有平臺(tái)的安裝或編譯過(guò)程,基于Linux的cmake-gui使配置和編譯過(guò)程更加直觀和人性化,Linux下的配置如圖3所示。
圖2 視頻采集
圖3 cmake的配置
為了使OpenCV能夠支持視頻圖像壓縮、圖像編解碼等,在編譯OpenCV之前需要預(yù)先安裝支持這些功能的開源軟件。包括:
(1)zlib-1.2.7.tar.gz
編譯后為OpenCV提供壓縮和加壓縮之用。
(2)jpegsrc.v7.tar.gz
編譯后為OpenCV提供jpeg圖像壓縮功能。
(3)libpng-1.5.13.tar
編譯后為ffmpeg提供png格式文件的功能。
(4)yasm-1.2.0.tar.gz
編譯后成為X.264視頻編碼器的匯編編譯器。
(5)x264-snapshot-20120718-2245-stable.tar.bz2
為ffmpeg提供H.264視頻編碼,其可通過(guò)部分支持硬解碼的顯卡來(lái)播放,從而降低了CPU的負(fù)載并提高畫面的流暢度。
(6)Xcode-1.3.2.tar.gz
編譯后為FFmpeg提供生成FFpneg和MPEG-4的視頻編譯解碼器。
(7)ffmpeg-0.11.1.tar.gz
為OpenCV增加FFmpeg功能,使其處理圖像和視頻時(shí)更加方便和效率[1]。
2.3 OpenCV移植問(wèn)題分析
在編譯配置上述軟件時(shí)可能會(huì)遇到一些問(wèn)題,如果遇到類似于libOpenCV_core.so:undefined reference to clock_gettime、_TIFFerrorHandler等問(wèn)題時(shí),一般需要修改CMakeCache.txt,CMAKE_EXE_LINKER_FLAGS原來(lái)為空,加上-lpthread-lrt,WITH_TIFF:BOOL= NO,改成OFF,重新編譯即可消除錯(cuò)誤。當(dāng)所有都編譯完成后還要注意一下OpenCV庫(kù)的路徑,一般要將編譯出來(lái)的庫(kù)放到對(duì)應(yīng)的交叉編譯器的lib里面,否則會(huì)有庫(kù)加載失敗的錯(cuò)誤。
手勢(shì)識(shí)別分為靜態(tài)手勢(shì)和動(dòng)態(tài)手勢(shì),靜態(tài)手勢(shì)是通過(guò)靜態(tài)的手型來(lái)傳遞信息,動(dòng)態(tài)的手勢(shì)不但通過(guò)手型,還通過(guò)運(yùn)動(dòng)軌跡來(lái)傳遞信息。動(dòng)態(tài)手勢(shì)研究起來(lái)復(fù)雜,本文僅針對(duì)靜態(tài)的手勢(shì),提出基于膚色的有效提取方法,再經(jīng)過(guò)閾值化,和形態(tài)學(xué)變換,得到手的輪廓,最后采用輪廓匹配的方法,得到識(shí)別結(jié)果。在各種光線下進(jìn)行反復(fù)測(cè)試,調(diào)整系統(tǒng)參數(shù),實(shí)驗(yàn)表明,這種方案是可行的,并且獲得了良好的效果。
3.1 手勢(shì)圖像預(yù)處理
由于攝像頭采集到的圖像僅僅是圖像的原始形態(tài),如果直接用原始圖像進(jìn)行手勢(shì)識(shí)別必然會(huì)影響識(shí)別效果。因此需要對(duì)采集的圖像進(jìn)行預(yù)處理,包括HSV空間轉(zhuǎn)換、平滑處理、閾值分割等。進(jìn)行圖像預(yù)處理的關(guān)鍵一步就是膚色檢測(cè)與分割,而HSV顏色空間與YCrCb顏色空間是目前膚色檢測(cè)與分割中常用的兩種顏色空間。本文采用的是HSV顏色空間。
此外,圖像信號(hào)在產(chǎn)生、傳輸過(guò)程中,不可避免地會(huì)常常受到各種噪聲的干擾,因此,現(xiàn)實(shí)中的圖像都是帶有噪聲的圖像,一般在對(duì)圖像進(jìn)行圖像分割、特征提取之前都會(huì)進(jìn)行平滑處理。噪聲并不限于人眼所能看得見(jiàn)的失真和變形,有些噪聲只有進(jìn)行圖像處理時(shí)才可以發(fā)現(xiàn)。圖像中常見(jiàn)的噪聲主要有加性噪聲、乘性噪聲和量化噪聲等。由于圖像的能量主要集中在低頻部分,而噪聲所在的頻段主要在高頻段,因此通常采用低通濾波的方法消除噪聲。
平滑處理是一項(xiàng)簡(jiǎn)單且使用頻率很高的圖像處理方法。目前OpenCV可以提供五種不同的平滑操作方法,每種方法都有自己的特點(diǎn)與局限,而且所有操作都是由cvSmooth()函數(shù)來(lái)實(shí)現(xiàn),它可以將用戶所期望的平滑方式作為參數(shù),進(jìn)行平滑處理。經(jīng)過(guò)反復(fù)驗(yàn)證,本文采用雙邊濾波方式(CV_BILATERAL),平滑處理前后的圖像對(duì)比如圖4和圖5所示。
圖4 平滑處理前
圖5 平滑處理后
3.2 手勢(shì)特征提取
由于在預(yù)處理階段,已經(jīng)通過(guò)閾值分割和Canny算子獲取了目標(biāo)手勢(shì)的邊緣,接下來(lái)只需對(duì)處理過(guò)的圖像進(jìn)行輪廓提取即可,本文對(duì)于輪廓的提取采用的是基于OpenCV的cvFindContours()函數(shù),通過(guò)對(duì)該函數(shù)的設(shè)置返回了檢測(cè)到的最大兩個(gè)輪廓,然后通過(guò)對(duì)兩個(gè)輪廓的比較得到了最感興趣的輪廓,圖6和圖7為未經(jīng)過(guò)Canny算子和經(jīng)過(guò)Canny算子的兩張對(duì)比圖。
圖6 未經(jīng)Canny算子得到的輪廓
圖7 經(jīng)過(guò)Canny算子得到的輪廓
3.3 輪廓模板匹配
輪廓模板匹配是比較獲得的目標(biāo)輪廓與模板的特征相似程度,為了能夠提高識(shí)別準(zhǔn)確度,再獲得手勢(shì)輪廓后,對(duì)手勢(shì)輪廓做了多邊形擬合處理,通過(guò)cvApproxPoly()和cvDrawContours()兩個(gè)函數(shù)得到了擬合后多邊形輪廓圖像。
常用的輪廓匹配方法有三類:幾何直方圖法、輪廓樹法、不變矩匹配法?;贠penCV視覺(jué)庫(kù)的輪廓樹法高效有效,在OpenCV中通過(guò)cvCreateContourTree()構(gòu)造輪廓樹,通過(guò)cvMatchContourTrees()進(jìn)行輪廓樹的匹配,具體過(guò)程是從輪廓樹根開始逐層計(jì)算相似度,若相似度小于閾值則中斷。
本文選取了六種手勢(shì)作為實(shí)驗(yàn)的手勢(shì)庫(kù),如圖8所示,其中手勢(shì)的來(lái)源為實(shí)際拍攝。
圖8 本文選取的六種手勢(shì)
識(shí)別流程圖如圖9所示。
在此次試驗(yàn)中,找了兩位實(shí)驗(yàn)者在攝像頭前輪流打手勢(shì),兩位實(shí)驗(yàn)者依次對(duì)六種手勢(shì)進(jìn)行測(cè)試,每種手勢(shì)交替打二十次,然后得出每種手勢(shì)正確的識(shí)別次數(shù),計(jì)算出識(shí)別率,對(duì)整體得出平均識(shí)別率,具體識(shí)別情況如表1所示。
圖9 識(shí)別流程圖
表1 靜態(tài)手勢(shì)識(shí)別結(jié)果
手勢(shì)識(shí)別作為一種人性化的人機(jī)交互方式,將其應(yīng)用于嵌入式平臺(tái)適應(yīng)時(shí)代的快速發(fā)展和人們對(duì)于方便而小型化的人機(jī)交互平臺(tái)的需求顯得很重要。本文針對(duì)手勢(shì)識(shí)別簡(jiǎn)單搭建了一個(gè)嵌入式系統(tǒng)交互平臺(tái),并將將OpenCV計(jì)算機(jī)視覺(jué)庫(kù)應(yīng)用于嵌入式平臺(tái),實(shí)現(xiàn)了由按鍵控制的高效快速的手勢(shì)識(shí)別。經(jīng)過(guò)實(shí)驗(yàn)證明將OpenCV移植到嵌入式平臺(tái)可行,將其用于數(shù)字圖像處理方便高效,運(yùn)用手勢(shì)的輪廓樹匹配方法進(jìn)行手勢(shì)匹配,實(shí)現(xiàn)靜態(tài)手勢(shì)識(shí)別可靠可行。
[1] 梁喜軍.基于ARM嵌入式平臺(tái)的視覺(jué)手勢(shì)識(shí)別技術(shù)研究[D].蘭州:蘭州理工大學(xué),2014
[2] 張運(yùn)德.手勢(shì)識(shí)別技術(shù)的研究及應(yīng)用[D].安徽:安徽大學(xué),2013
[3] 趙健,張冬泉.基于OpenCV的數(shù)字手勢(shì)識(shí)別算法[J].計(jì)算機(jī)應(yīng)用,2013(S2):193~196
[4] 任彧,顧成成.基于HOG特征和SVM的手勢(shì)識(shí)別[J].科技通報(bào),2011(02):211~214
[5] 雷海龍,楊勝,劉紅新.融合圖像輪廓矩和傅立葉描敘子的手勢(shì)識(shí)別[J].微電子學(xué)與計(jì)算機(jī),2011(04):103~106
[6] 徐成,馬翌倫,劉彥.一種基于嵌入式系統(tǒng)實(shí)時(shí)交互的手勢(shì)識(shí)別方法[J].計(jì)算機(jī)應(yīng)用研究,2011(07):2782~2785
[7] Feng Zhi-quan,Yang Bo,Lv Na,etc.A Hand Gesture-Based Interactive Model to Choose One From Many[J].計(jì)算機(jī)輔助制造:英文版,2012(01):12~14
[8] YANG Shuai,PREMARATNE Prashan,VIAL Peter.Hand Gesture Recognition:Anover VIEW[A].IEEE Beijing Section.Proceedingsof 2013 5th IEEE International Conference on Broadband Network&Multimedia Technology[C].Beijing:IEEE Beijing Section,2013:7
[9] Bobo Zeng,Guijin Wang,Xing-gang Lin.Department of Electronic Engineering.A Hand Gesture Based Interactive Presentation System Utilizing Heterogeneous Cameras[J].清華大學(xué)學(xué)報(bào):自然科學(xué)版(英文版),2012(03):329~336
[10] 陳冰超,李永剛.基于計(jì)算機(jī)視覺(jué)技術(shù)的手勢(shì)識(shí)別方法[J].現(xiàn)代計(jì)算機(jī):專業(yè)版,2014(26):62~64
[11] 林水強(qiáng),吳亞?wèn)|,余芳,楊永華.姿勢(shì)序列有限狀態(tài)機(jī)動(dòng)作識(shí)別方法[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2014(09):1403~1411
[12] 武霞,張崎,許艷旭.手勢(shì)識(shí)別研究發(fā)展現(xiàn)狀綜述[J].電子科技,2013(06):171~174
Gesture Recognition Based on Embedded System
TENG Yue,LV Yong,MAO Hai-Bo
(School of Instrumentation Science&Optoelectronic Engineering,Beijing Information Science&Technology University,Beijing 100192)
With the growing popularity of embedded technology,miniaturization,operation freedom and interactive intelligence has become the development trend of the next generation of human-computer interaction technology,gesture recognition technology based on embedded system is one of the key technologies.Ports OpenCV to the embedded platform successfully.Through V4L2 architecture enables USB camera video capture and LCD display,uses OpenCV rich visual library achieves color space conversion,the conversion to HSV space,obtains threshold to binary image.Through the filtering process,contour extraction,contour tree matching method to achieve the gesture recognition,experience proves the feasibility of the embedded systems gesture recognition method.
Embedded;Gesture Recognition;OpenCV;HSV Space;Contour Extraction
1007-1423(2015)01-0053-05
10.3969/j.issn.1007-1423.2015.01.013
滕岳(1988-),男,河北滄州人,在讀碩士研究生,研究方向?yàn)楣怆姍z測(cè)技術(shù)
呂勇(1971-),男,安徽蕪湖人,博士,教授,研究方向?yàn)楣怆姍z測(cè)及精密測(cè)試
2014-11-28
2014-12-08
北京信息科技大學(xué)本科生培養(yǎng)-大學(xué)生科研訓(xùn)練項(xiàng)目資助(No.PXM2014_014224_000079)、專業(yè)建設(shè)-光信息科學(xué)與技術(shù)項(xiàng)目資助(No.PXM2014_014224_000066)、大學(xué)生科技創(chuàng)新計(jì)劃
毛海波(1992-),男,遼寧朝陽(yáng)人,在讀本科,研究方向?yàn)楣怆姂?yīng)用技術(shù)