滕岳,呂勇,毛海波
(北京信息科技大學(xué)儀器科學(xué)與光電工程學(xué)院,北京 100192)
基于嵌入式系統(tǒng)的手勢識別
滕岳,呂勇,毛海波
(北京信息科技大學(xué)儀器科學(xué)與光電工程學(xué)院,北京 100192)
隨著嵌入式技術(shù)不斷普及,小型化、操作自由、交互智能成為新一代人機(jī)交互技術(shù)的發(fā)展趨勢,基于嵌入式的手勢識別就是其中的一項(xiàng)關(guān)鍵技術(shù)。主要是成功將OpenCV移植到嵌入式平臺,通過V4L2架構(gòu)實(shí)現(xiàn)USB攝像頭的視頻采集以及LCD顯示,利用OpenCV豐富的視覺庫實(shí)現(xiàn)色彩空間轉(zhuǎn)換,轉(zhuǎn)換到HSV空間,閾值分割得到二值化圖像,最后通過濾波處理、輪廓提取、輪廓樹匹配的方法實(shí)現(xiàn)手勢識別,實(shí)踐證明通過該方法實(shí)現(xiàn)嵌入式系統(tǒng)的手勢識別可行。
嵌入式;手勢識別;OpenCV;HSV空間;輪廓提取
手勢識別技術(shù)作為人機(jī)交互領(lǐng)域的一項(xiàng)關(guān)鍵技術(shù),受到越來越多學(xué)者的青睞和學(xué)術(shù)界的關(guān)注,特別是利用攝像頭來實(shí)現(xiàn)對手勢的非接觸性捕獲,并通過計(jì)算機(jī)視覺(如OpenCV)對手勢進(jìn)行處理分析識別,完成特定的交互任務(wù)。但是隨著嵌入式技術(shù)的不斷發(fā)展以及人們對設(shè)備小型化需求的不斷提高,將手勢識別技術(shù)移植到嵌入式系統(tǒng)成為時代發(fā)展的需要,將OpenCV視覺庫應(yīng)用到嵌入式系統(tǒng)是其中必不可少的一個環(huán)節(jié)。
基于視覺的手勢識別一般可分為手勢圖像的采集、手勢圖像的分割、特征提取及手勢識別四個步驟[1]。通過膚色分割獲取手勢的二值圖像,然后提取手勢輪廓特征是應(yīng)用最廣泛的一種方法。通常對于手勢分割和識別是手勢識別算法的關(guān)鍵和難點(diǎn),而對于嵌入式單純通過C程序編程來實(shí)現(xiàn)上述難點(diǎn),首先代碼量會很大,影響嵌入式的運(yùn)算速度,其次就是高效的視覺庫對于提高處理速度有很大的幫助,因此將OpenCV視覺庫移植到嵌入式系統(tǒng)是實(shí)現(xiàn)快速處理的重中之重。
本文主要通過單攝像頭的視頻捕獲、視覺庫的移植以及通過手勢分割、輪廓提取、圖像匹配等最終實(shí)現(xiàn)嵌入式系統(tǒng)的手勢識別。
HSV空間轉(zhuǎn)換主要將現(xiàn)實(shí)中物體的色彩信息從一個模型轉(zhuǎn)換到另外一個模型,目的就是為了使人們能方便地區(qū)分不同的物體,提取出想要的物體信息,其模型類似于六角椎體,這個模型中的顏色參數(shù)分別為:色調(diào)(H)、飽和度(S)、亮度(V),所以稱為HSV,模型如圖1所示。
其中色調(diào)H是通過角度進(jìn)行度量,其取值范圍為0°~360°,從紅色開始按逆時針方向計(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)換公式為:
在開始手勢識別程序編寫之前,需要進(jìn)行一些相關(guān)的準(zhǔn)備工作,保證手勢識別的編寫能夠像在計(jì)算機(jī)上一樣方便、高效。
2.1 嵌入式平臺下視頻捕獲的實(shí)現(xiàn)
基于V4L2的視頻捕獲主要通過如下流程來實(shí)現(xiàn),包括:打開視頻設(shè)備、讀取設(shè)備信息、設(shè)置設(shè)備當(dāng)前信息、內(nèi)存映射、對采集數(shù)據(jù)的處理、關(guān)閉設(shè)備。其中這些具體操作主要是通過ioctl()函數(shù)完成系統(tǒng)調(diào)用來實(shí)現(xiàn)。其成功采集圖像的效果圖如圖2所示。
2.2 OpenCV的嵌入式平臺移植
本文采用OpenCV 2.3.1開源版本,OpenCV的編譯配置工具為cmake-2.8.12.2-linux-i386,cmake是一個跨平臺的安裝工具,可以用簡單的語句來描述所有平臺的安裝或編譯過程,基于Linux的cmake-gui使配置和編譯過程更加直觀和人性化,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視頻編碼,其可通過部分支持硬解碼的顯卡來播放,從而降低了CPU的負(fù)載并提高畫面的流暢度。
(6)Xcode-1.3.2.tar.gz
編譯后為FFmpeg提供生成FFpneg和MPEG-4的視頻編譯解碼器。
(7)ffmpeg-0.11.1.tar.gz
為OpenCV增加FFmpeg功能,使其處理圖像和視頻時更加方便和效率[1]。
2.3 OpenCV移植問題分析
在編譯配置上述軟件時可能會遇到一些問題,如果遇到類似于libOpenCV_core.so:undefined reference to clock_gettime、_TIFFerrorHandler等問題時,一般需要修改CMakeCache.txt,CMAKE_EXE_LINKER_FLAGS原來為空,加上-lpthread-lrt,WITH_TIFF:BOOL= NO,改成OFF,重新編譯即可消除錯誤。當(dāng)所有都編譯完成后還要注意一下OpenCV庫的路徑,一般要將編譯出來的庫放到對應(yīng)的交叉編譯器的lib里面,否則會有庫加載失敗的錯誤。
手勢識別分為靜態(tài)手勢和動態(tài)手勢,靜態(tài)手勢是通過靜態(tài)的手型來傳遞信息,動態(tài)的手勢不但通過手型,還通過運(yùn)動軌跡來傳遞信息。動態(tài)手勢研究起來復(fù)雜,本文僅針對靜態(tài)的手勢,提出基于膚色的有效提取方法,再經(jīng)過閾值化,和形態(tài)學(xué)變換,得到手的輪廓,最后采用輪廓匹配的方法,得到識別結(jié)果。在各種光線下進(jìn)行反復(fù)測試,調(diào)整系統(tǒng)參數(shù),實(shí)驗(yàn)表明,這種方案是可行的,并且獲得了良好的效果。
3.1 手勢圖像預(yù)處理
由于攝像頭采集到的圖像僅僅是圖像的原始形態(tài),如果直接用原始圖像進(jìn)行手勢識別必然會影響識別效果。因此需要對采集的圖像進(jìn)行預(yù)處理,包括HSV空間轉(zhuǎn)換、平滑處理、閾值分割等。進(jìn)行圖像預(yù)處理的關(guān)鍵一步就是膚色檢測與分割,而HSV顏色空間與YCrCb顏色空間是目前膚色檢測與分割中常用的兩種顏色空間。本文采用的是HSV顏色空間。
此外,圖像信號在產(chǎn)生、傳輸過程中,不可避免地會常常受到各種噪聲的干擾,因此,現(xiàn)實(shí)中的圖像都是帶有噪聲的圖像,一般在對圖像進(jìn)行圖像分割、特征提取之前都會進(jìn)行平滑處理。噪聲并不限于人眼所能看得見的失真和變形,有些噪聲只有進(jìn)行圖像處理時才可以發(fā)現(xiàn)。圖像中常見的噪聲主要有加性噪聲、乘性噪聲和量化噪聲等。由于圖像的能量主要集中在低頻部分,而噪聲所在的頻段主要在高頻段,因此通常采用低通濾波的方法消除噪聲。
平滑處理是一項(xiàng)簡單且使用頻率很高的圖像處理方法。目前OpenCV可以提供五種不同的平滑操作方法,每種方法都有自己的特點(diǎn)與局限,而且所有操作都是由cvSmooth()函數(shù)來實(shí)現(xiàn),它可以將用戶所期望的平滑方式作為參數(shù),進(jìn)行平滑處理。經(jīng)過反復(fù)驗(yàn)證,本文采用雙邊濾波方式(CV_BILATERAL),平滑處理前后的圖像對比如圖4和圖5所示。
圖4 平滑處理前
圖5 平滑處理后
3.2 手勢特征提取
由于在預(yù)處理階段,已經(jīng)通過閾值分割和Canny算子獲取了目標(biāo)手勢的邊緣,接下來只需對處理過的圖像進(jìn)行輪廓提取即可,本文對于輪廓的提取采用的是基于OpenCV的cvFindContours()函數(shù),通過對該函數(shù)的設(shè)置返回了檢測到的最大兩個輪廓,然后通過對兩個輪廓的比較得到了最感興趣的輪廓,圖6和圖7為未經(jīng)過Canny算子和經(jīng)過Canny算子的兩張對比圖。
圖6 未經(jīng)Canny算子得到的輪廓
圖7 經(jīng)過Canny算子得到的輪廓
3.3 輪廓模板匹配
輪廓模板匹配是比較獲得的目標(biāo)輪廓與模板的特征相似程度,為了能夠提高識別準(zhǔn)確度,再獲得手勢輪廓后,對手勢輪廓做了多邊形擬合處理,通過cvApproxPoly()和cvDrawContours()兩個函數(shù)得到了擬合后多邊形輪廓圖像。
常用的輪廓匹配方法有三類:幾何直方圖法、輪廓樹法、不變矩匹配法。基于OpenCV視覺庫的輪廓樹法高效有效,在OpenCV中通過cvCreateContourTree()構(gòu)造輪廓樹,通過cvMatchContourTrees()進(jìn)行輪廓樹的匹配,具體過程是從輪廓樹根開始逐層計(jì)算相似度,若相似度小于閾值則中斷。
本文選取了六種手勢作為實(shí)驗(yàn)的手勢庫,如圖8所示,其中手勢的來源為實(shí)際拍攝。
圖8 本文選取的六種手勢
識別流程圖如圖9所示。
在此次試驗(yàn)中,找了兩位實(shí)驗(yàn)者在攝像頭前輪流打手勢,兩位實(shí)驗(yàn)者依次對六種手勢進(jìn)行測試,每種手勢交替打二十次,然后得出每種手勢正確的識別次數(shù),計(jì)算出識別率,對整體得出平均識別率,具體識別情況如表1所示。
圖9 識別流程圖
表1 靜態(tài)手勢識別結(jié)果
手勢識別作為一種人性化的人機(jī)交互方式,將其應(yīng)用于嵌入式平臺適應(yīng)時代的快速發(fā)展和人們對于方便而小型化的人機(jī)交互平臺的需求顯得很重要。本文針對手勢識別簡單搭建了一個嵌入式系統(tǒng)交互平臺,并將將OpenCV計(jì)算機(jī)視覺庫應(yīng)用于嵌入式平臺,實(shí)現(xiàn)了由按鍵控制的高效快速的手勢識別。經(jīng)過實(shí)驗(yàn)證明將OpenCV移植到嵌入式平臺可行,將其用于數(shù)字圖像處理方便高效,運(yùn)用手勢的輪廓樹匹配方法進(jìn)行手勢匹配,實(shí)現(xiàn)靜態(tài)手勢識別可靠可行。
[1] 梁喜軍.基于ARM嵌入式平臺的視覺手勢識別技術(shù)研究[D].蘭州:蘭州理工大學(xué),2014
[2] 張運(yùn)德.手勢識別技術(shù)的研究及應(yīng)用[D].安徽:安徽大學(xué),2013
[3] 趙健,張冬泉.基于OpenCV的數(shù)字手勢識別算法[J].計(jì)算機(jī)應(yīng)用,2013(S2):193~196
[4] 任彧,顧成成.基于HOG特征和SVM的手勢識別[J].科技通報(bào),2011(02):211~214
[5] 雷海龍,楊勝,劉紅新.融合圖像輪廓矩和傅立葉描敘子的手勢識別[J].微電子學(xué)與計(jì)算機(jī),2011(04):103~106
[6] 徐成,馬翌倫,劉彥.一種基于嵌入式系統(tǒng)實(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ī)視覺技術(shù)的手勢識別方法[J].現(xiàn)代計(jì)算機(jī):專業(yè)版,2014(26):62~64
[11] 林水強(qiáng),吳亞東,余芳,楊永華.姿勢序列有限狀態(tài)機(jī)動作識別方法[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2014(09):1403~1411
[12] 武霞,張崎,許艷旭.手勢識別研究發(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測技術(shù)
呂勇(1971-),男,安徽蕪湖人,博士,教授,研究方向?yàn)楣怆姍z測及精密測試
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àn)楣怆姂?yīng)用技術(shù)