本發(fā)明屬于計算機視覺技術(shù)領(lǐng)域,特別是一種基于BP神經(jīng)網(wǎng)絡(luò)的手勢識別方法。
背景技術(shù):
隨著計算機的廣泛應(yīng)用,人機交互已成為人們?nèi)粘I钪械闹匾糠帧H藱C交互是指人與計算機之間使用某種對話語言,以一定的交互方式完成確定任務(wù)的人與計算機之間的信息交換過程。而人機交互的最終目的是實現(xiàn)人與機器自然地交流,擺脫任何形式的交互界面,輸入信息的方式變得越來越簡單、隨意,借助于人工智能與大數(shù)據(jù)的融合,能夠非常直觀、全面的捕捉到人的需求,并且協(xié)助人們處理事務(wù)?,F(xiàn)在我們所熟知的人機交互主要依賴于用戶通過鍵盤、鼠標(biāo)、觸摸屏等傳統(tǒng)方式與計算機進(jìn)行交互,當(dāng)前已經(jīng)有許多新興的交互方式的嘗試,比如體感交互,語音交互等等,但是就目前而言,人機交互方式還存在著許多的不足,距離我們的最終目的也依然有很長的路要走,最大的困難就是使用范圍的局限性與信息識別的困難。手勢識別方法是一種新興的交互方式,以人手作為輸入手段與其他輸入方法相比較,具有自然性、簡潔性、豐富性和直接性等特點。
手勢獲取是手勢識別的第一步,目前獲取手勢主要有兩種途徑:基于數(shù)據(jù)手套和基于視覺?;跀?shù)據(jù)手套的優(yōu)點是輸入數(shù)據(jù)量小,實時性好,但是數(shù)據(jù)手套成本較高,且佩戴手套會降低用戶體驗。
手勢分割是手勢識別系統(tǒng)中最重要也是最基礎(chǔ)的一步,最常見的方法是采用顏色特征的方法實現(xiàn)手勢分割。但是當(dāng)天氣比較熱的時候,用戶往往會穿短袖出現(xiàn),而由于胳膊的顏色特征和手掌的顏色特征比較接近,會對分割結(jié)果產(chǎn)生一定的影響。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于提供一種基于BP神經(jīng)網(wǎng)絡(luò)的手勢識別方法。
實現(xiàn)本發(fā)明目的的技術(shù)方案為:一種基于BP神經(jīng)網(wǎng)絡(luò)的手勢識別方法,包括以下步驟:
視頻獲取:通過視頻采集裝置獲取包含人手的視頻;
手勢分割:將視頻采集裝置獲取的RGB類型圖像轉(zhuǎn)換到Y(jié)CrCb顏色空間,對Cr通道進(jìn)行自適應(yīng)閾值處理,將圖像轉(zhuǎn)化為二值圖,獲得手勢輪廓,并去除噪聲;
手勢識別:確定去除噪聲后二值化圖像的Hu不變矩作為手勢特征,構(gòu)建三層BP神經(jīng)網(wǎng)絡(luò),將Hu不變矩值作為神經(jīng)網(wǎng)絡(luò)的輸入,進(jìn)行訓(xùn)練,識別出視頻中訓(xùn)練的手勢。
本發(fā)明與現(xiàn)有技術(shù)相比,其顯著優(yōu)點為:
(1)本發(fā)明提出了一種采用顏色空間結(jié)合幾何特性的方法實現(xiàn)手勢分割,去除了胳膊部分對于手勢識別的影響,提高了識別的正確性;
(2)本發(fā)明可以直接擴展應(yīng)用于各類控制單元,比如車載多媒體控制,能夠簡化駕駛員對車輛的操作,降低事故發(fā)生率;比如對無人機的控制,能夠增加操作的趣味性。
附圖說明
圖1是本發(fā)明的基于BP神經(jīng)網(wǎng)絡(luò)的手勢識別方法流程圖。
圖2是胳膊與手掌分割模型圖。
圖3(a)和圖3(b)分別是包含人臉的圖像和去除人臉后的二值圖。
圖4(a)和圖4(b)分別是包含胳膊的圖像和去除胳膊后的二值圖。
圖5(a)和圖5(b)分別是包含背景噪聲和去除噪聲后的二值圖。
圖6(a)~圖6(h)是本發(fā)明實施例中實驗的八種手勢示意圖。
具體實施方式
結(jié)合圖1,本發(fā)明的一種基于BP神經(jīng)網(wǎng)絡(luò)的手勢識別方法,包括以下步驟:
視頻獲?。和ㄟ^視頻采集裝置獲取包含人手的視頻;
手勢分割:將視頻采集裝置獲取的RGB類型圖像轉(zhuǎn)換到Y(jié)CrCb顏色空間,對Cr通道進(jìn)行自適應(yīng)閾值處理,將圖像轉(zhuǎn)化為二值圖,獲得手勢輪廓,并去除噪聲;
手勢識別:確定去除噪聲后二值化圖像的Hu不變矩作為手勢特征,構(gòu)建三層BP神經(jīng)網(wǎng)絡(luò),將Hu不變矩值作為神經(jīng)網(wǎng)絡(luò)的輸入,進(jìn)行訓(xùn)練,識別出視頻中訓(xùn)練的手勢。
進(jìn)一步的,手勢分割的具體過程為:
步驟21,將視頻采集裝置獲取的RGB類型圖像轉(zhuǎn)換到Y(jié)CrCb顏色空間;
步驟22,對Cr通道進(jìn)行自適應(yīng)閾值處理,將圖像轉(zhuǎn)化為二值圖,獲得手勢輪廓;
步驟23,去除噪聲
第一步,去除人臉部分
采用近似Haar特征檢測出人臉,將人臉部分去除;
第二步,去除胳膊部分
(1)獲取包含膚色區(qū)域的最小外接矩形;
(2)求內(nèi)切圓:掃描輪廓內(nèi)每一個點,求出其至輪廓邊界的最短距離;當(dāng)所有的點掃描完之后,找到所有最短距離中最大的值,其對應(yīng)的點即為內(nèi)切圓圓心,該距離為內(nèi)切圓半徑;
(3)默認(rèn)輸入手勢指尖向上,求出內(nèi)切圓圓心到外接矩形上邊框的距離,其與內(nèi)接圓半徑之和即為手掌長度;
(4)根據(jù)手掌長度,去除胳膊部分,得到手掌外接矩形及其對應(yīng)坐標(biāo);
第三步,去除背景噪聲
通過計算各輪廓的面積,刪除面積小于設(shè)定閾值的輪廓,排除背景噪聲。
進(jìn)一步的,手勢識別的具體過程為:
步驟31,確定去除噪聲后二值化圖像的Hu不變矩
針對于一幅數(shù)字圖像,將坐標(biāo)x,y處的像素看成一個二維隨機變量f(x,y),對于灰度分布為f(x,y)的圖像,其(p+q)階矩定義為:
mpq=∫∫xpyqf(x,y)dxdy
其中p,q=0,1,2,…;
矩心(x0,y0)為:
對于數(shù)字圖像,離散化,離散狀態(tài)下,其(p+q)階中心矩為:
其中,N和M分別是圖像的高度和寬度;
當(dāng)圖像發(fā)生變化時,mpq也發(fā)生變化,而μpq則具有平移不變形但對旋轉(zhuǎn)依然敏感。直接用普通矩或中心距進(jìn)行特征表示,不能使特征同時具有平移、旋轉(zhuǎn)和比例不變性。如果利用歸一化中心距,則特征不僅具有平移不變性,而且還具有比例不變性。
歸一化中心矩定義為:
其中:p+q=2,3,...,μ00為中心矩p=q=0時的值;
得到Hu不變矩的表達(dá)式:
I1=y(tǒng)20+y02
I2=(y20+y02)2+4y112
I3=(y30-3y12)2+(3y21-y03)2
I4=(y30+y12)2+(y21+y03)2
I5=(y30-y12)(y30+y12)[(y30+y12)2-(3y21+y03)2]+(3y21-y03)(y21+y03)[3(y30+y12)2-(y21+y03)2]
I6=(y20-y02)[(y30+y12)2-(y21+y03)2]+4y11(y30+y12)(y21+y03)
I7=(3y21+y03)(y30+y12)[(y30+y12)2-(3y21+y03)2]+(y30-3y12)(y21+y30)[3(y30+y12)2-(y21+y03)2]
步驟32,將Hu不變矩值作為神經(jīng)網(wǎng)絡(luò)的輸入,進(jìn)行訓(xùn)練,識別出視頻中訓(xùn)練的手勢。
下面結(jié)合具體實施例對本發(fā)明作進(jìn)一步說明。
實施例
本實施例的基于BP神經(jīng)網(wǎng)絡(luò)的手勢識別方法包括視頻獲取、手勢分割和手勢識別三個部分:
(1)視頻獲取
通過攝像頭獲取包含人手的視頻。
(2)手勢分割
本發(fā)明采用顏色空間結(jié)合幾何特征的方法實現(xiàn)手勢分割。將直接由攝像頭獲取的RGB類型圖像轉(zhuǎn)換到Y(jié)CrCb顏色空間,對Cr通道進(jìn)行自適應(yīng)閾值處理,將圖像轉(zhuǎn)化為二值圖,尋找手勢輪廓作為識別的輸入值,最后去除噪聲。具體方法包括:
2.1顏色空間轉(zhuǎn)換
YCrCb顏色空間具有將色度和亮度分離的特點,對膚色的聚類特性比較好,受亮度變化的影響小,可以很好的區(qū)分人的膚色區(qū)域。
YCrCb顏色空間與RGB顏色空間的轉(zhuǎn)換可以表示為:
2.2噪聲去除
噪聲主要包括可能存在的人臉、可能存在的胳膊以及其他類膚色物體。
第一步、去除人臉部分
人臉去除需要在圖像顏色空間轉(zhuǎn)換之前進(jìn)行,前提條件是手和臉不能有重疊部分,在這種情況下,本發(fā)明首先采用近似Haar特征檢測出人臉,再將臉部去除。
第二步、去除胳膊部分
人機交互主要使用手掌部分進(jìn)行操作,因此多余的胳膊部分會影響對手勢的判斷,需要將其去除,這種情況在當(dāng)用戶穿短袖時出現(xiàn)。
如圖2所示,ABCD為包含膚色區(qū)域的最小外接矩形,BC距離為胳膊長度darm,圓O為膚色區(qū)域的最大內(nèi)切圓,r為內(nèi)切圓半徑,d為圓心到AB之間的距離,dhand為手掌的長度。
求最小外接矩形的方法由OpenCV函數(shù)minAreaRect提供。
求內(nèi)切圓:掃描輪廓內(nèi)每一個點,求出其至輪廓邊界的最短距離。當(dāng)所有的點掃描完之后,找到所有最短距離中最大的值,其對應(yīng)的點即為內(nèi)切圓圓心,該距離為內(nèi)切圓半徑。為加快程序運行速度,掃描時可以每間隔N個點取一個像素,本發(fā)明在經(jīng)過多次實驗后選取N=10,能夠同時保證計算的速度與準(zhǔn)確度。
設(shè)各點坐標(biāo)為:A(xa,ya),B(xb,yb),C(xc,yc),D(xd,yd),O(xo,yo),根據(jù)幾何關(guān)系可以求出:
矩形ABNM為排除胳膊部分之后,只包含手掌部分的區(qū)域,點M(xm,ym),N(Xn,yn)坐標(biāo)可以在dhand的基礎(chǔ)上求出:
dhand=d+r
第三步、去除其他噪聲
手勢為本發(fā)明檢測的主體目標(biāo),我們默認(rèn)手永遠(yuǎn)出現(xiàn)在最前端,可能出現(xiàn)的其他類膚色物體均被當(dāng)作背景處理,通過計算各輪廓的面積,刪除面積小于一定值的輪廓,即可排除其他背景噪聲。
(3)手勢識別
在手勢分割的基礎(chǔ)上,求出二值化圖像的Hu矩作為手勢特征,同時構(gòu)建了三層BP神經(jīng)網(wǎng)絡(luò),將Hu矩值作為神經(jīng)網(wǎng)絡(luò)的輸入,進(jìn)行訓(xùn)練。
本發(fā)明以手勢圖像的7個Hu矩特征作為神經(jīng)網(wǎng)絡(luò)的輸入,選取隱藏層節(jié)點數(shù)為10,輸出層節(jié)點數(shù)根據(jù)需要選取,這里選取8個,包含手指根數(shù)0-5,以及兩個特殊手勢,以驗證系統(tǒng)對靜態(tài)手勢識別的準(zhǔn)確性,和對更多手勢的可擴展性。
下面結(jié)合仿真實例圖對本實施例進(jìn)一步說明。
本實施例結(jié)合OpenCV提供人臉檢測程序,先檢測攝像頭范圍內(nèi)可能出現(xiàn)的人臉,若檢測到,則將橢圓形區(qū)域及其周圍膚色像素的值設(shè)為0,即轉(zhuǎn)換為二值圖像中的黑色部分;分割效果如圖3(a)和圖3(b)所示。
分割胳膊與手的效果如圖4(a)所示,矩形為整體外接矩形,圓形為手掌內(nèi)切圓,矩形內(nèi)中間線段為結(jié)合外接矩形和內(nèi)切圓計算出的分割線。通過將手掌部分設(shè)置為感興趣區(qū)域,即可去除多余部分;去除胳膊后的二值圖如圖4(b)所示。
當(dāng)背景中出現(xiàn)其他類膚色物體時,通過排除面積較小部分即可去除背景噪聲,在本實施例中,選取排除噪聲面積的閾值為100;分割效果如圖5(a)和圖5(b)所示。
本發(fā)明一共選取了8種不同手勢,包括手指根數(shù)和兩個自定義手勢,如圖6(a)~圖6(h)。對每種手勢采集了200組數(shù)據(jù)作為訓(xùn)練數(shù)據(jù),由5個實驗者分別對每種手勢進(jìn)行20組測試,最后平均正確率96.25%。
神經(jīng)網(wǎng)絡(luò)的訓(xùn)練在程序開始時完成,所以不會影響識別速度。當(dāng)實驗者穿長袖不露胳膊時,識別平均時間為33.3ms,約每秒30幀,能夠保證視頻的流暢顯示;當(dāng)實驗者穿短袖時,手勢分割會占用一定時間,主要為求內(nèi)切圓耗時較多,最后平均耗時為65.6ms,約每秒15幀,能夠基本保證視頻的流暢顯示。