史存英 ,王金海,2,崔 軍
(1.天津工業大學 電子與信息工程學院,天津 300387;2.天津市醫學電子診療技術工程中心,天津 300387)
近年來隨著網絡通信、計算機應用、人機交互等技術的飛速發展,人們逐漸開始探討如何使人居住得更加舒適便捷,“物聯網”、“智慧家庭”開始成為各科研機構和各大公司的研究熱點,也取得了一些顯著成果[1]。另一方面,隨著人們生活質量的提高,家用電器在城鄉居民的日常生活中仍占據著不可替代的重要地位,但隨著數字化和智能化的推廣,使用傳統遙控器的不足日益凸顯,遙控器按鍵增多,操作越來越復雜,尤其一些身體殘障人士和上了年紀的老人覺得操作起來非常麻煩[2],而手勢作為一種自然而直接的交流方式,更為簡捷方便。因此用手勢操作代替傳統遙控方法的想法應運而生,這樣用戶就可以很方便地隨時操控電視機等常用電器。
現有的手勢遙控大多還是需要觸摸板或數據手套等載體,且都應用于新型智能電視,沒考慮到傳統的非智能電視機,也沒有關注其他常用電器,也沒有解決臨時找不到遙控器或者戴手套感知體驗差等問題,尚未實現真正的“以人為本”的人性化交互。而且,現有的手勢遙控器都是各個生產廠家采用不同的設備和工作原理,設備價格昂貴且通用性不好,沒有一個全開放式的平臺,不符合大眾用戶的需求。
結合手勢識別和紅外遙控技術,本文研究了一種新的家居環境遙控方法,用戶只需對著攝像頭比劃相應的手勢就能實現對受控對象的遙控,并得到操作結果的反饋信息。使用該遙控方法操作時完全不需要任何手持設備,僅用手勢就可以完成,為身體殘障人士和老年人提供了極大便利;該遙控方法可內置多種廠家的紅外編碼,具有很好的通用性。
該方法將遙控系統分為4部分:采集單元、處理單元、控制單元和通信單元,圖1為該遙控系統的總體框圖。

圖1 手勢遙控系統總體框圖
采集單元負責采集用戶的手勢,并把采集到的圖像傳輸給中央處理器處理,此過程通過圖像傳感器實現。處理單元是本系統的關鍵部分,主要負責對采集到的圖像進行手勢檢測與識別,判斷用戶發出的是何種手勢(頻道加/減、音量加/減、返回上一步、返回主選單、確定、電視開關)。控制單元是核心部分,負責手勢編碼的轉換與控制命令的發送,首先將識別結果轉換為對應的紅外遙控碼,然后發出相應控制指令,此過程由ARM最小系統完成。通信單元有紅外發射和指示燈顯示兩部分,它的作用是將紅外遙控碼發送到受控對象的紅外接收端,并發送遙控操作成功與否的指示信號,最終實現用手勢遙控家電并能看到相應的反饋信息,此過程由紅外發射電路和指示燈電路實現。
以下將從硬件和軟件兩個方面闡述手勢遙控系統的設計與實現過程。
本系統硬件主要包括用于采集手勢的圖像采集裝置、負責處理和控制的中央處理器以及受控對象,其整體硬件框圖如圖2所示。

圖2 系統硬件框圖
2.1.1 圖像采集裝置
圖像采集裝置選用CMOS圖像傳感器OV7620。CMOS傳感器集成度高、功耗低、成本低,雖然噪音較大、靈敏度較低,但可以采用白平衡控制、色飽和度、對比度、邊緣增強以及伽馬校正等影像控制技術補償,達到與CCD傳感器相媲美的效果,而且對于家庭來說,成本是非常值得考量的一點。
綜合考慮,本系統選用OV7620,該圖像傳感器通過SC?CB總線控制,有效分辨率可達640×480,幀速率為30 f/s(幀/秒),數據格式有YUV,YCbCr,RGB三種可以選擇(考慮到本文選擇的手勢檢測算法采用YCbCr數據格式最佳),工作時功耗<120 mW,待機時功耗<10 mW,電源供電為5 V,可隔行掃描也可逐行掃描。其與中央處理器的管腳連接如圖3所示。

圖3 圖像采集器與中央處理器管腳連接圖
2.1.2 中央處理器
本系統的核心部分是中央處理器,所有信息的處理和命令的發出都是通過它完成。中央處理器由ARM最小系統和一些外圍電路組成,主控芯片選用飛思卡爾公司K60系列芯片MK60DN512Z,該款芯片功能強大,適用于高集成度和低功耗的嵌入式應用中,采用Cortex-M4內核,提供1.25 DMIPS/MHz的DSP指令(單精度浮點處理),CPU工頻高達100 MHz,芯片本身具備512 kbyte FLASH、128kbyte SRAM、16路通道的通用DMA控制器,多功能外部總線接口可以連接外部存儲器、門陣列邏輯和液晶等。最大限度地降低成本和減少外圍器件。中央處理器接收到圖像傳感器OV7620的數據之后,進行預處理和識別等操作,并將識別結果轉換為對應的遙控指令,控制紅外發射模塊和指示燈模塊。
電源問題也是嵌入式產品需要解決的一個重要方面,由于本系統面向的是家庭,且5 V電源非常方便獲取,所以使用5 V電源輸入,再采用低壓降電壓穩壓器ASM1117-3.3,固定輸出電壓為3.3 V,精度1%,輸出電流0~1 A,這樣就解決了系統的供電問題。電源模塊的電路連接如圖4所示。

圖4 電源模塊的電路連接圖
2.1.3 紅外發射電路
紅外發射電路由紅外發光二極管和限流電阻組成,與K60的PTA10管腳相連,如圖5所示,由中央控制器控制其發送載波為37.9 kHz的16位紅外遙控編碼,能夠在3 m范圍內靈活控制電視機。選取的紅外發光二極管波長為830~950 nm,紅外二極管infrared的陽極接正向電壓3.3 V,陰極接K60的PTA10引腳,R12為限流電阻,可以起到保護二極管和I/O端口的作用。

圖5 紅外發射電路
為便于調試和管理,本文采用模塊化的程序設計方法,每個模塊實現一個獨立的功能,主程序通過調用各子程序模塊完成系統的整體功能,子程序包括系統和端口初始化程序、圖像處理程序、紅外遙控碼發射程序及指示燈顯示程序。圖6為中斷處理函數的流程圖。系統完成初始化工作后,攝像頭定時每隔10 s采集一次圖像,接著通過橢圓膚色模型判斷是否有人手區域,即是否進入中斷處理函數進行后續處理。
進入中斷處理函數,說明有類膚色的運動目標進入攝像頭區域,可能有手勢操作發生,下一步就要判斷用戶發出了何種遙控手勢。調用二值化、輪廓提取、手勢識別這三個處理函數逐層判斷用戶是否發出了操作手勢,若有操作手勢發生則發送對應紅外編碼給其紅外接收端并使綠燈閃爍5 s(指示操作成功),若無則使紅燈閃爍5 s(指示操作失?。?,至此一次操作完成,退出中斷處理函數。

圖6 中斷處理流程圖
系統上電完成初始化工作后開始運行,無限循環于產生和處理中斷信號之間,直至關閉系統或者斷電。
手勢具有自然直觀的特點,人機間通信不再需要中間媒體,用戶可以簡單地定義一些適當的手勢來控制周圍的機器,這是一種自然并符合人們行為習慣的交互方式。近年來隨著計算機視覺技術的發展,利用普通攝像頭就可以實現對手勢信息的非接觸性捕獲。
3.1.1 手形檢測
對基于視頻流的手勢識別來說,手勢的跟蹤是不可忽略的一個問題,常用的跟蹤算法包括卡爾曼濾波法、粒子濾波法、Camshift算法等運動估計算法以及光流法、圖像差分法等目標檢測算法,本文需要解決的首要問題是判斷用戶是否有手勢命令發出。運動估計算法雖然精確但計算量太大,不適合應用在嵌入式設備中;經過綜合對比分析,本文采用定時處理攝像頭捕獲的圖像的方法來檢測手形,因為遙控操作時間間隔不是ms級的,所以每隔10 s處理圖像的設計完全可以滿足用戶的需求,又可以減少嵌入式設備的計算量。先利用橢圓膚色模型對圖像中每個像素點進行遍歷,將得到的類手勢像素點進行二值化處理,通過八鄰域搜索法得到當前幀的膚色點集輪廓和類膚色連通區域[3],結合人手的比例結構特征過濾掉非人手區域,消除人臉、手臂及其他類膚色區域的干擾,最終確定出候選人手區域,完成手形檢測。
所用橢圓膚色模型的數學表達式為

標記完連通區域之后要篩選類人手區域,篩選規則為滿足以下條件的將被去掉:
1)填充率SMi/Ni≤ 0.4,其中SMi為連通區域的總像素數,Ni為連通區域中的膚色點數;
2)連通區域wi<10或hi<10,其中wi為連通區域的寬度,hi為連通區域的長度;
3)長寬比wi/hi<0.5;
4)長寬比wi/hi>0.85。
3.1.2 手勢識別
接著判斷用戶發出的是何種操作命令,即候選人手區域為何種手勢動作。手勢識別算法非常多,各自有其優缺點,有些識別結果精確但計算量很大,有些對手勢的旋轉、平移和比例改變以及攝像頭視角改變不太敏感,所以選取合適的識別算法非常關鍵。由于嵌入式本身的特點,要求盡可能選擇計算量較小的手勢識別算法以提高其時效性,經過對比研究,本文最終選用計算量相對較小且對平移和尺度變化不敏感的方向直方圖算法[4-5]。預先定義好不同的操作命令對應的手勢,并訓練樣本以確定不同手勢邊緣的方向直方圖,存為模板,當新的手勢圖像到來后先分析其方向直方圖然后與模板進行對比,進而識別出手勢所代表的具體遙控命令。
圖像中像素點的灰度梯度指的是其灰度變化的最大方向,所有像素點灰度梯度的集合就構成了整幅圖像的方向直方圖。本系統要在嵌入式設備上實現,要求算法計算量盡可能要小,所以只對圖像的邊緣求方向直方圖,同時,為減少計算量,本文僅對圖像中篩選出的人手區域做計算。首先利用Sobel算子得到該區域的邊緣,并計算出其邊緣所有像素點的灰度梯度,計算公式為

式中:Sy和Sx分別代表當前像素灰度的豎直和水平方向變化值,其值由Sobel水平和垂直算子與當前像素值做卷積運算得到。
通過式(2)計算出邊緣每個像素點的梯度方向θ(x,y),然后將[0,2π]均勻地分成36份,這樣每個角度區間的長度都是10°,統計出落在每個角度區間內的邊緣像素點個數,記為φ(k),k=1,2,…,36,將這36個φ(k)集合,就構成了當前圖像中目標區域的邊緣方向直方圖。為提高此方法對于不同大小的手的通用性并提高運算速度,將φ(k)作如下歸一化處理

在識別之前,首先要對需要識別的九種手勢的方向直方圖進行訓練,對于每種要識別的手勢做10次實驗,取10次實驗數據的均值作為該手勢的標準直方圖模板。捕獲到一幀手勢圖像后要進行模板匹配以確定其含義,假設當前手勢的方向直方圖和模板z的方向直方圖分別為φ(k)和φz(k),這里用Bhattacharyya系數來衡量兩者的相似性,公式為

式中:ρz越大,說明二者的相似性越大,ρz最大的模板z就是當前要識別的手勢的含義。
紅外線的光譜在紅色光之外,因此得名,其波長在0.76~1.5 μm,紅外遙控就是利用紅外線傳遞信息的一種遙控方式,由于其電路簡單、編碼和解碼相對容易、能抗干擾且功耗小成本低,廣泛應用于家用電器遙控領域。其工作原理是紅外發射端將代表不同功能的編碼脈沖調制后發送出去,受控對象通過紅外接收端接收到調制信號,解調后執行相應的遙控功能,以此實現控制家電的目的。
不同廠家不同設備遙控器編碼大多不同,例如康佳遙控器KK-Y345A,其編碼格式為引導碼+16位用戶碼+16位數據碼+同步碼,用示波器分析得到其引導碼、“0”碼、“1”碼和同步碼的對應波形,就可以解析出該遙控器所有按鍵的對應編碼,又如長虹遙控器K5D*28編碼為引導碼、用戶碼、用戶反碼、數據碼和數據反碼,創維遙控器P6編碼格式為引導碼、用戶碼、數據碼和數據反碼。本文解析了康佳遙控器中與定義的手勢含義對應的8個常用按鍵的編碼,具體編碼見表1。圖7為用示波器觀察到的康佳遙控器發出的1幀信號的波形。
實驗所用遙控器是KK-Y345A,載波為37.9 kHz,占空比為2/3,使用K60的低功耗定時器模塊Lptmr延遲I/O端口輸入電平搭配50 MHz外部時鐘源來實現載波信號的輸出;然后通過控制延遲時間來實現不同的遙控器編碼輸出。
1)實驗平臺的構建
為測試該遙控方法的性能,本文選用家用電器中最為常見的電視機作為受控對象,測試輸出載波和各紅外編碼是否達到要求,以及輸入手勢信號是否與原有按鍵功能保持一致。實驗平臺包括攝像頭OV7620、中央處理器、一臺電視機(康佳牌)、一臺示波器,測試過程為:(1)用示波器觀察輸出的8種紅外信號波形,測量其載波頻率并與表1中編碼值對照,查看其輸出波形是否正確;(2)選取不同光照條件、背景復雜程度不一的6種情況作為測試環境,對應的手勢識別實驗數據如表2所示;(3)測試識別到的各個手勢能否引起電視機的正確響應。

表1 遙控器常用按鍵編碼表

圖7 遙控器一幀信號的波形圖

表2 手勢識別實驗數據
2)結果分析
測試發現中央處理器輸出的紅外碼波形是滿足實際操作需要的,而且手勢識別的結果能與遙控命令一一對應。
采用該方法平均手勢識別率為86.667%,基本滿足需要。通過對識別數據的分析,發現以上6種實驗環境下錯誤檢測的一個共同點是背景中包含顏色與膚色相近的橢圓形或正方形物體,從而被誤當成人手。而漏檢的原因各不相同,側光照射下高光的部分趨近于白色而造成漏檢,非高光部分雖被檢測出來,但由于區域過小且標定的長寬比不符合篩選規則而被去掉;室內無燈光或背光時成像會趨于黑色而造成漏檢。所以還要對算法進行進一步研究改進,同時考慮適當進行光照補償以改善極端光照條件對系統的影響。
本文所研究的手勢遙控方法的主要特點是良好的交互性和可視化操作,僅用符合人們習慣的手勢就可完成對家用電器的遙控,無需其他手持式設備,實用性強且成本較低,操作方便簡單,為特殊人群提供了便捷的家電遙控方式。隨著技術的發展和人們需求的不斷增加,作為一種無障礙的交互手段,手勢遙控在家電等消費電子領域的應用將更加廣泛,前景廣闊。
[1] 肖志勇,秦華標.基于視覺跟蹤和手勢識別的人機交互[J].計算機工程,2009,35(15):198-200.
[2] 任海兵,祝遠新,徐光佑,等.基于視覺手勢識別的研究—綜述[J].電子學報,2000,28(2):118-120.
[3] 李全彬,王小明.復雜光照下的人臉膚色檢測方法[J].計算機應用,2010(6):1594-1596.
[4] 王守磊,朱民耀,陸小鋒,等.一種基于方向直方圖的嵌入式手勢識別系統[J].電視技術,2012,36(15):133-137.
[5] 倪愷,肖志濤,張芳.基于梯度方向直方圖的行人檢測方法研究[J].電視技術,2011,35(5):23-25.