張彩珍, 張云霞, 趙 丹, 張曉金
(蘭州交通大學 電子與信息工程學院,甘肅 蘭州 730070)
隨著人工智能和計算機視覺技術的不斷發(fā)展,人機交互技術成為計算機領域研究的熱點,其中手勢是一種直觀自然的交流方式,手勢識別亦是研究的重點[1,2]。手勢識別的研究現(xiàn)主要有數(shù)據(jù)手套和基于計算機視覺的手勢識別技術,基于數(shù)據(jù)手套的識別需用戶佩戴復雜的設備,不大方便且成本高,因而基于計算機視覺的識別技術因便捷性和開發(fā)成本低受到了人們的青睞。由于手勢動作易變和外界環(huán)境因素的影響,目前較為普遍的識別方式是將膚色和形狀輪廓特征結合到一起進行識別。譚臺哲等人結合深度信息與膚色信息分割出手勢區(qū)域,提出一種基于形狀特征的手勢識別方法[3],王兵等人利用Kinect設備捕獲到手部區(qū)域,采用隱馬爾科夫模型識別手勢[4],王海鵬等人提出了一種基于動態(tài)時間規(guī)整(dynamic time warping,DTW)方法的時空多尺度手勢識別方法——SDTW(spatial-temporal DTW)[5],楊紅玲等人提出一種基于YCbCr空間膚色分割去除背景結合卷積神經(jīng)網(wǎng)絡進行手勢識別的方法[6],張墨逸等人提出了一種基于單應的目標運動軌跡觀測模型,利用移動相機進行手勢軌跡識別的方法[7],上述算法對手勢均有不錯的識別效果,但大多是針對特定場景,對于基于單目攝像頭的手勢識別時,識別具有一定的局限性。
本文提出了一種能應用于不同環(huán)境下的基于膚色模型與BP神經(jīng)網(wǎng)絡的手勢識別算法。
手勢分割算法主要分為基于膚色、輪廓和運動三種,因手勢圖像的特殊性,目前大多采用膚色分割,而好的膚色模型需要一個能聚簇且與非膚色的重疊部分少的彩色空間;在YCbCr空間,膚色在復雜背景和不同光照條件下能很好的聚簇在一個類橢圓范圍內,能較好地限制膚色的限制區(qū)域,但也易受到類膚色區(qū)域的干擾,因而提出一種結合離散余弦變換(discrete cosine transform,DCT)進行邊緣檢測和YCbCr空間膚色模型分割手勢的方法。
一般采集到的圖像均或多或少含有噪聲,分割前需對圖片進行濾波處理;數(shù)字圖像都是實數(shù)矩陣,在式(1)的DCT中,隨著u,v的增大,其對應的余弦函數(shù)頻率也隨之增大,過程中得到的系數(shù)稱為低頻系數(shù)、中頻系數(shù)和高頻系數(shù);一般圖像的DCT低頻和高頻系數(shù)分別在DCT系數(shù)矩陣的左上角和右下角位置,圖像中的噪聲通常屬于高頻部分,可通過二維DCT把高頻部分屏蔽掉進而抑制噪聲。
二維DCT
cos((2x+1)uπ/16)cos((2y+1)vπ/16)
(1)
二維DCT逆變換
cos((2x+1)uπ/16)cos((2y+1)vπ/16)
步驟2 按順序逐次比較兩次裝試序列Si和Sj中相互對應的任務節(jié)點th和tk(th,tk∈EngineTask),若th,tk關聯(lián)的質量表相同,則比較下一任務節(jié)點;否則將th,tk及其對應的質量表分別添入Ψi,Ψj。
(2)
對式(2)求梯度得
(3)
通過對式(3)進行一系列的簡化近似運算,即得到一個Hs和Hc的邊緣檢測矩陣算子,梯度公式可寫成
(4)
根據(jù)式(4)可計算出梯度算子,繼而計算出圖像f(x,y)中點的模值,再與邊緣檢測的閾值T相比判斷是否為邊緣點,檢測出所有的邊緣點。
YCbCr空間中的Y為流明(luminance),表示光的濃度,Cb和Cr分別為藍色與紅色的濃度偏移量成份。因一般圖像為RGB色彩空間,需轉換到YCbCr空間[9,10]
(5)
將膚色映射到YCbCr空間,得到一個CbCr的橢圓,判斷坐標(Cb,Cr)是否在橢圓內(包括邊界)即可判斷是否為膚色像素點。形成的統(tǒng)計橢圓模型具體如下
(6)
(7)
膚色檢測時可能會受到圖片中其他物體的影響,分割出非手勢區(qū)域,通過比較分割出的區(qū)域,去除少像素連通區(qū)域,得到分割出的手勢;對分割出的膚色區(qū)域進行形態(tài)學閉運算處理,填充空洞使輪廓更清晰。這里a=644.652 1,b=196.840 9,Cx=109.38,Cy=152.02,eCx=1.60,eCy=2.41。手勢分割提取的過程如圖1所示。
圖1 YCbCr手勢分割過程
將兩種檢測結果相與結合,可提取出無干擾的手勢;為測驗分割算法的效果,本文針對不同背景和亮度下1~10的手勢進行了分割,分割結果如圖2所示;從圖2的分割結果圖可看出,手勢在復雜背景和有與膚色相近物體干擾的情況下依然能很好的從圖片中分割出來。
圖2 手勢分割結果
加速穩(wěn)健特征(speeded up robust features,SURF)是SIFT算法的改進,改善了特征提取和描述方式,提升了算法執(zhí)行速度,是一種局部特征點檢測和描述算法[11],具有圖像縮放、旋轉、仿射變換保持不變性的特性,有較好的魯棒性且運算速度快,常被應用于目標識別、圖像匹配、圖像分析等領域。結合SURF算法的特點,對前面分割出的手勢提取特征點,具體算法流程圖如圖3所示。
圖3 SURF算法流程
圖4 匹配結果圖
將特征點的數(shù)據(jù)進行歸一化處理,獲得的部分特征點的值如表1所示。
表1 部分特征值
BP神經(jīng)網(wǎng)絡因其良好的非線性映射能力、自學習和自適應能力成為目前應用最多的神經(jīng)網(wǎng)絡[12~15],分為正向傳播和反向傳播兩個過程,當正向傳播的輸出結果未達到期望值時,開始反向傳播。為了提高手勢的識別率,本文基于BP神經(jīng)網(wǎng)絡建立了手勢識別分類器。
對不同樣本,設輸入為xi=[xi1,xi2,…,xim],輸入層m與隱藏層j之間的權值為wmj,隱藏層j與輸出層k之間的權值為vjk,采用ReLU函數(shù)作為激勵函數(shù)。
隱藏層神經(jīng)元的輸入和輸出分別
i=1,2,…
(8)
輸出層神經(jīng)元的輸入和輸出分別為
(9)
隱藏層到輸出層的權值更新為
Δvjk=ηδkYk,vjk(n+1)=vjk(n)+Δvjk
(10)
輸入層到隱藏層的權值更新為
Δwmj=ηδkymj,wmj(n+1)=wmj(n)+Δwmj
(11)
式中η為學習率,通過調整學習率,反復迭代使網(wǎng)絡的實際輸出與期望輸出逐步的逼近,達到所要求的結果。在訓練完網(wǎng)絡之后,將測試樣本正向傳播,最后到達輸出層節(jié)點,輸出識別結果。針對之前提取出的特征點進行一個三層神經(jīng)網(wǎng)絡模型的搭建,輸出的類別向量為:y=diag{1,1,…,1},分別對應1~10的手勢數(shù)字。從輸入到輸出所構建的網(wǎng)絡模型如圖5所示。
圖5 神經(jīng)網(wǎng)絡模型搭建
對本文提出的識別方法在不同的數(shù)據(jù)庫中進行驗證,一種是在室內采集拍攝組成的手勢圖像數(shù)據(jù)庫,采集不同環(huán)境、不同光照和角度下的10種類別手勢圖像各100張,用于算法性能的測試,另一種是Thomas Moeslund’s Gesture Recognition Database數(shù)據(jù)庫。從采集到的手勢圖片中選取3 000個訓練樣本和100個測試樣本。
因之前提取的每個特征點有著3個描述特性,故選擇輸入層神經(jīng)元個數(shù)為90,網(wǎng)絡的隱藏層神經(jīng)元個數(shù)為15,輸出層神經(jīng)元個數(shù)為10個,對應表示1~10的手勢,采用全連接的方式;經(jīng)迭代訓練,得到不同的訓練次數(shù)與手勢識別率和誤差的關系,如圖6所示。這里BP算法的學習率預先設為0.01。
圖6 手勢訓練次數(shù)與識別率和誤差值關系
由圖6可以看出,隨著訓練次數(shù)的增加,手勢識別率在不斷提高,而識別誤差相應的減小,當訓練次數(shù)達到900次時,識別率達到了最高,誤差值到最低。為驗證本文算法的性能,通過算法獲取結果的識別率與其他算法的識別率進行了比較,本文算法、文獻[10]、文獻[12]、文獻[13]、文獻[14]的識別率分別為96 %,94.1 %,95 %,91.7 %,90.35 %。
經(jīng)對比發(fā)現(xiàn)本文算法的識別率較高,本文將DCT算法用于濾波和邊緣檢測,結合膚色模型提取出的手勢效果佳,且算法使用的神經(jīng)網(wǎng)絡結構簡單,在計算上縮短了時間,在提取特征值時采用了SURF算法,能夠完善提取出手勢特征,為之后的訓練識別提供了有效的輸入,使得識別率得以提高。