王 飛
(浙江大學昆山創新中心,江蘇 昆山215300)
如何使人機之間的交互變得高效簡單,逐漸成為眾多科學領域研究的熱點,作為人機交互領域的手勢識別技術也在不斷發生變化。當前手勢識別應用較為廣泛,主要應用于虛擬環境、手語、多媒體用戶界面以及機械手抓取等眾多領域。國內外對于手勢識別技術都作了大量的研究工作,例如國外Huang創建了手語識別系統并使用3D神經網絡方法識別15種手勢,國內北京交通大學的王松林通過kinect設備實現了動靜手勢的識別,并實現了對外部設備的控制[1]。
隨著人類生活水平的不斷提高,越來越注重用戶體驗,而基于傳感器加速硬件的手勢識別需要借助一些硬件設備完成操作。此類設備造價高、佩戴不方便,并且需要在特定的場合進行使用,同時也存在衛生問題。因此,非接觸式人機交互也變得越來越重要,基于視覺信息的手勢識別,無需中間媒體且只需通過人的手勢動作完成人機之間的通信。由于沒有外在設備,使得手勢識別便捷有效,也為用戶帶來了全新的交互體驗和自由度。同時,大多數手勢識別系統應用場景較為固定,存在識別系統無法移動等問題[2]。
為了解決手勢識別系統造價高、便攜性差等缺點,結合嵌入式平臺可裁剪、體積小及造價低等優點,提出了基于嵌入式平臺的手勢識別系統,結合OpenCV計算機視覺庫,采用模板匹配方法識別出手勢數字,通過觸摸屏顯示識別手勢數字,并標注出手勢圖像。最后通過實驗可知,該設計系統具有較好的實用性和有效性。
設計系統由ARM開發板、USB攝像頭以及LCD觸摸屏組成。手勢識別流程為:通過攝像頭采集圖像,對采集圖像進行預處理并提取手勢圖像特征信息,匹配手勢模板庫判斷手勢識別結果,顯示識別手勢的數字并標注運動手勢目標。完整的手勢識別流程如圖1所示。

圖1 手勢識別流程圖Fig.1 Flow chart of gesture recognition
在采集手勢視頻流的過程中,由于此系統具有可移動性等特點,所獲取的手勢圖像難免受到光線強弱變化以及鏡頭抖動等外界環境的干擾,使得圖像特征信息的對比度產生變化。因此,需要對獲取的手勢圖像進行去燥處理,提高圖像識別率[3]。
圖像中相鄰像素點的灰度值具有較高的相關性。對于平滑、自然的圖像,像素間的距離越近,像素相關性越高;反之,像素相關性越低。權重均值濾波根據以上特點,采用加權公式對不同距離的像素賦予不同的權重,使相關性較高的像素具有較大的權重,相關性較低的像素具有較小的權重,從而形成非線性的權重均值濾波,更好地保護圖像細節。
通過對圖2(a)~圖2(c)進行對比分析,采用效果較好的加權均值濾波法去除手勢圖像噪聲,其效果如圖2所示。

圖2 圖像濾波對比圖Fig.2 Contrast figure of image filtering
由于視頻流圖像中所要采集的手勢目標灰度值與當前環境背景的灰度值具有較大差異,對于此類圖像通常采用閾值分割相關算法能夠較好地分割出所需目標區域。在閾值分割的過程中,由于手勢目標和圖像背景之間存在一個或多個分割閾值,因此需要設置多個閾值元素來獲取手勢目標區域。
對圖3相關分割算法進行研究,通過圖3(a)和圖3(b)可知,手勢圖像大部分的特征信息得到保留,但也丟失了手指和手掌等部分特征信息,產生了大量的干擾噪聲。而采用圖3(c)方法不僅能夠獲取完整的手勢特征信息,而且抑制了大量噪聲[4-6]。

圖3 圖像分割對比圖Fig.3 Contrast figure of image segmentation
基于嵌入式系統的手勢識別系統在獲取手勢特征信息時,手勢圖像所處環境背景十分復雜,經過手勢圖像預處理后,消除了噪聲、增強了特征信息,為后續從復雜背景中提取手勢特征信息奠定了良好的基礎。由于單個手勢圖像包含大量的特征信息,在提取手勢特征時,需要對形狀、角度、方向及輪廓等一些指定手勢特征信息做處理分析,進而提高識別速度和識別率。
在20世紀70年代,由M.K.Hu所提出的Hu距具有方向、位置以及大小的不變性。其中Hu距的相關變換如下[7]:
(1)比例變換

(1)
歸一化處理后為:
(2)
(2)反射變換

(3)
(3)平移變換

(4)
(4)旋轉變換
變換后的距為:
(xsinθ+ycosθ)qf(x,y)。
(5)
(cosθ)(q+r-s)Mp+q-s,r+s。
(6)
運動目標檢測的目的是把手勢識別系統視頻流中的運動手勢從背景中提取出來。當前,運動目標檢測分為靜態和動態兩種背景[8-10]。由于設計的手勢識別系統采用的攝像頭為固定安裝,因此采用靜態背景下的差分相乘法實現目標檢測。
在采集手勢圖像時,所獲取的手勢圖像難免會受到外部因素的干擾,比如光照強度、視頻流噪聲等,由于諸多因素的影響導致差分后的圖像包含眾多不為零的像素點,這些偽目標點會被錯誤地認為是運動目標。同時,檢測運動目標時也會存在兩幅圖像運動目標相重合的區域。因此,采用幀間差分相乘算法可以有效解決噪聲及光照等因素的影響,并增強目標邊緣的對比度,提高手勢圖像中運動目標邊緣信息的準確度。其算法實現如下:
從視頻流中獲取4副相鄰幀圖像,其中f1(x,y),f2(x,y),f3(x,y),f4(x,y)為4副幀圖像,G(x,y)為差分后圖像:
F1(x,y)= |f1(x,y)-f3(x,y)| ,
(7)
F2(x,y)= |f2(x,y)-f4(x,y)| 。
(8)
由式(7)和式(8)可得:
G(x,y)=F1(x,y)×F2(x,y) 。
(9)
算法原理如圖4所示,每幀圖像都具有一個階躍邊緣信號,從上往下依次運動,圖像位置都在發生變化,其中采用差分相加方法時,信號中間產生了較大值,其位也發生了偏移;而差分相乘方法,則有效地解決了位置偏移的問題。4幀圖像經過幀間差分相乘算法后,通過是否出現高峰判斷出手勢圖像中運動目標存在與否,出現高峰則存在運動目標,否則無目標出現。

圖4 差分相乘原理圖Fig.4 Difference multiplication principle diagram
本文設計的手勢識別系統軟件開發環境采用Ubuntu系統,圖形界面開發工具采用Qtopia2.2.0,并結合第三方開源計算機視覺庫OpenCV2.4.3作為圖像識別的輔助工具,軟件關系如圖5所示。

圖5 系統軟件關系圖Fig.5 System software diagram
手勢識別系統硬件開發環境為ARM開發板,CPU處理器Samsung s3c2440,主頻400 MHz;64 M SDRAM內存;64 mm×85 mm LCD觸摸屏,采用USB2.0接口的攝像頭,硬件關系如圖6所示。

圖6 系統硬件關系圖Fig.6 System hardware diagram
V4L2(Video for Linux two)是對V4L重新設計所得到的一種編程接口。通過V4L2接口采集不同類型圖片和視頻等數據,此接口具有較強的靈活性和擴展性。獲得動態視頻采集數據可使用mmap映射的方式,通過rcad獲得靜態圖片數據。使用內核ioctl函數控制硬件設備,采用mmap對內存映射,能夠極大增加硬件與內核之間的通信效率。V4L2采集視頻數據流程如圖7所示。

圖7 V4L2視頻采集流程圖Fig.7 V4L2 the flow chart of video acquisition
經過訓練之后的10種手勢模板及改進后Canny算子得到的手勢輪廓圖像如圖8和圖9所示。

圖8 10個手勢模板Fig.8 10 gesture templates

圖9 10個手勢輪廓Fig.9 10 gesture contours
不同背景下手勢識別和手勢檢測效果如圖10和圖11所示。

圖10 簡單背景下手勢效果圖Fig.10 Gesture effect in simple background

圖11 復雜背景下手勢效果圖Fig.11 Gesture effect in complex background
為了驗證手勢識別系統的有效性和實用性,對1 000張手勢樣本進行檢測,獲取了不同背景下10種手勢的識別率,如表1所示。

表1 不同背景下10種手勢識別率Tab.1 10 kinds of gesture recognition rate under different background
不同的背景識別率也不同,在簡單背景下識別率較高,在復雜背景下識別率有所降低。不同的光照強度和每種手勢的相似性都會引起手勢識別的最終效果。在復雜背景下對手勢特征進行提取時,會影響手勢的Hu距值,導致與模板之間的Hu距值相差較大,影響整個系統的識別率。簡單背景下對圖像處理時,各種手勢圖像的特征值及質量較為穩定,因此手勢系統識別率較高。
目前,已有眾多的手勢識別技術應用在PC機上,但仍存在較大的局限性,便攜性和實用性較差。因此,本文基于現有的手勢識別技術基礎之上,利用嵌入式系統和圖像處理技術相結合的方法,實現了基于嵌入式的手勢識別系統。通過USB攝像頭采集視頻流,并對視頻流中的手勢處理,識別出手勢結果,為后續人機交互控制奠定了基礎。最后對整個手勢識別系統進行驗證分析,整個系統具有實時性和有效性。