本發(fā)明屬于手勢識別技術領域,涉及一種手勢識別方法,具體涉及一種基于遞歸模型的手勢識別方法。
背景技術:
近年來,基于手勢識別的人機交互以其自然、簡潔、豐富和直接的方式受到青睞,尤其是基于視覺的手勢控制以其靈活性、豐富的語義特征和較強的環(huán)境描述能力得到廣泛應用。
現(xiàn)有的手勢識別技術,常用手勢空間序列進行匹配識別,但其普遍存在的問題是實用性和魯棒性并不高,制約著手勢識別技術的應用。比如神經(jīng)網(wǎng)絡方法需要大量手勢訓練數(shù)據(jù),隱馬爾科夫(HMM)方法需要用戶佩戴額外設備,DTW方法無法解決手勢空間序列不等長的問題。
技術實現(xiàn)要素:
針對上述現(xiàn)有技術中存在的問題,本發(fā)明的目的在于,提供一種基于遞歸模型的手勢識別方法,通過將手勢空間序列轉化為遞歸模型的形式,有效的解決了獲取的手勢空間序列長度不同和序列點數(shù)據(jù)值存在不可比所等引起的問題,從而提高手勢識別算法的魯棒性。
為了實現(xiàn)上述任務,本發(fā)明采用以下技術方案:
一種基于遞歸模型的手勢識別方法,包括以下步驟:
步驟1,手勢分割
對于靜態(tài)手勢:
獲取靜態(tài)手勢圖像并進行預處理,得到帶有指尖點的手掌區(qū)域;
對于動態(tài)手勢:
獲取動態(tài)手勢的深度圖像序列,利用基于二維直方圖的圖像閾值分割法對深度圖像序列進行處理,得到分割后的動態(tài)手勢圖像序列;
步驟2,提取手勢空間序列
對于靜態(tài)手勢:
步驟2.1,獲取手掌的外邊緣信息,提取出手勢邊緣輪廓特征;
步驟2.2,確定手勢的中心點,求出手勢外邊緣手腕位置處距離手勢中心點的最遠距離坐標,并將該坐標點記為起始點P;
步驟2.3,以P為原點,按照逆時針的方向,計算手勢外邊緣像素序列中的每一個點到手勢中心點的距離,將計算得到的這些距離值構成序列A;
步驟2.4,將序列A進行歸一化,歸一化后的序列記為靜態(tài)手勢空間序列X={x(i1),x(i2),…,x(in)};
對于動態(tài)手勢:
步驟2.1',從動態(tài)手勢圖像序列中取出一段作為處理序列,針對處理序列中的手勢圖像,將手勢圖像最小的外接矩形的中心點作為手心坐標點,其坐標記為ci(xi,yi);
步驟2.2',以手勢圖像所在的深度圖像的左上角為初始點,計算手心坐標點與初始點間的相對角度并記為x(it);
步驟2.3',將處理序列中各幀的手心坐標按順序組成一個動態(tài)手勢軌跡序列C=(c1,c2,…,cn),將處理序列中各幀的手心坐標點相對于初始點的相對角度組成動態(tài)手勢空間序列:X={x(i1),x(i2),…,x(in)};
步驟3,構建手勢遞歸模型
將靜態(tài)手勢空間序列、動態(tài)手勢空間序列X按照如下公式計算其遞歸模型:
R=ri,j=θ(ε-||x(ik)-x(im)||),ik,im=1…n
上式中,n表示動態(tài)或靜態(tài)手勢空間序列的維數(shù),x(ik)和x(im)是在ik和im序列位置處觀察到的動態(tài)或靜態(tài)手勢空間序列X上的值,||·||是指兩個觀察位置之間的距離,ε是一個閾值,ε<1;θ是一個赫維賽德階躍函數(shù),θ的定義如下:
步驟4,手勢分類
按照下面的公式計算手勢遞歸模型R與模板庫中每一類手勢的遞歸模型Ri之間的距離:
上式中,C(R|Ri)是按照MPEG-1壓縮算法先壓縮圖像Ri之后再壓縮圖像R值的大小,從而求得R圖像中去除和Ri圖像共有的冗余信息后兩者之間的最小近似值;
通過與模板庫中每一類手勢的遞歸模型之間進行計算,可得到當前待測手勢的手勢遞歸模型與模板庫中每一類手勢的遞歸模型之間的不同距離,將這些距離值進行排序,取最小的一個距離值對應的模板庫中的手勢作為識別出的手勢。
進一步地,所述的步驟1中的預處理過程如下:
步驟1.1,獲取靜態(tài)手勢圖像,利用基于YcbCr空間的自適應膚色分割方法得到含有膚色區(qū)域的二值圖像;
步驟1.2,通過計算膚色區(qū)域的連通域,得到手部區(qū)域;
步驟1.3,利用基于手腕厚度的手腕位置定位方法,獲取帶有指尖點的手掌區(qū)域。
進一步地,所述的步驟1中利用Kinect獲取動態(tài)手勢的深度圖像序列。
進一步地,所述的步驟2.1中將手勢圖像的最小外接矩形的中心作為手勢的中心點。
本發(fā)明與現(xiàn)有技術相比具有以下技術特點:
1.對于靜態(tài)手勢,本算法將帶有指尖點的手掌邊緣信息作為手勢識別算法設計的重點,提高了手勢識別的魯棒性,并解決了手勢在旋轉、縮放、平移時手勢識別實時性不足及對相近手形區(qū)分度不高的問題。其次,本算法提出將手掌的邊緣序列轉換為遞歸圖模型,并使用一種基于信息壓縮的遞歸圖相似性檢測算法完成手勢識別任務,克服了邊緣序列數(shù)據(jù)的不等長問題。
2.對于動態(tài)手勢,本算法將動態(tài)手勢軌跡序列作為研究手勢分類的重點,提高了動態(tài)手勢識別對空間和時間尺度的魯棒性。其次,本算法提出將動態(tài)手勢軌跡序列轉化為基于時間序列的遞歸圖模型,并使用一種基于信息壓縮的遞歸圖模型相似性檢測算法完成手勢識別,克服了不同用戶操作同一手勢快慢不同和不同手勢的持續(xù)時間不同導致的手勢軌跡序列不等長問題。
附圖說明
圖1是靜態(tài)手勢分割過程圖;其中(a)為分割前的原圖,(b)為膚色分割后的圖像,(c)為提取出的手部區(qū)域的圖像,(d)為手掌區(qū)域的圖像;
圖2是動態(tài)手勢分割過程圖;其中(a)為獲取的手勢深度圖像,(b)為深度圖像像素灰度分布直方圖,(c)為手部區(qū)域圖像;
圖3是靜態(tài)手勢空間序列圖;
圖4是動態(tài)手勢序列;
圖5是動態(tài)手勢軌跡序列;
圖6是動態(tài)手勢空間序列圖;
圖7是手勢空間序列的遞歸模型;
圖8為本發(fā)明方法的流程圖;
具體實施方式
遵從上述技術方案,如圖1至圖8所示,本發(fā)明公開了一種基于遞歸模型的手勢識別方法,包括以下步驟:
本方案提出的方法,適用于對靜態(tài)手勢、動態(tài)手勢的識別,動態(tài)手勢、靜態(tài)手勢的處理過程在步驟1、2時不相同,步驟3以后相同,在下面的步驟中,分別給出這兩種手勢的具體處理過程,需要說明的是,對于動態(tài)手勢處理、靜態(tài)手勢處理是相對獨立的過程,為了進行區(qū)分,在動態(tài)手勢處理的分步驟后添加了上標“'”。
步驟1,手勢分割
對于靜態(tài)手勢:
步驟1.1,利用攝像頭采集靜態(tài)手勢圖像,針對采集到的手勢圖像,利用基于YcbCr空間的自適應膚色分割方法得到含有膚色區(qū)域的二值圖像;
步驟1.2,針對步驟1.1得到的二值圖像,通過計算膚色區(qū)域的連通域,得到手部區(qū)域;二值圖像的連通域標記和計算屬于本領域常規(guī)的方法,在此不贅述;
步驟1.3,利用基于手腕厚度的手腕位置定位方法,針對步驟1.2得到的手部區(qū)域,獲取帶有指尖點的手掌區(qū)域,最終得到的處理結果如圖1所示;這個步驟用到的“基于手腕厚度的手腕位置定位方法”,出自于論文:“Hand Gesture Recognition for Table-Top Interaction System”
對于動態(tài)手勢:
步驟1.1',采用Kinect獲取動態(tài)手勢的深度圖像序列;
步驟1.2',由于在手勢交互任務中,用戶的手掌始終處于Kinect的攝像頭前方,根據(jù)這個特點,對步驟1.1'獲取的手勢深度圖像序列,利用基于二維直方圖的圖像閾值分割法進行處理,得到分割后的動態(tài)手勢圖像序列;
圖2給出的示例即為本步驟中針對動態(tài)手勢深度圖像序列中的一幀進行處理后得到的結果。
步驟2,提取手勢空間序列
對于靜態(tài)手勢:
步驟2.1,對于步驟1.3得到的圖像,使用Sobel算子獲取手掌的外邊緣信息,提取出手勢邊緣輪廓特征;這里提出的手勢邊緣輪廓特征主要是指手勢外邊緣像素序列,即構成外邊緣輪廓的像素組成的序列;
步驟2.2,將手勢圖像的最小外接矩形的中心作為手勢的中心點,求出手勢外邊緣手腕位置處距離手勢中心點的最遠距離坐標,并將該坐標點記為起始點P;
步驟2.3,以P為原點,按照逆時針的方向,計算手勢外邊緣像素序列中的每一個點到手勢中心點的距離,將計算得到的這些距離值構成序列A;
步驟2.4,將序列A進行歸一化,即把序列中所有的距離值映射到0~1的范圍內(nèi),歸一化后的序列記為靜態(tài)手勢空間序列X={x(i1),x(i2),…,x(in)},其中n表示序列空間的維數(shù),x(in)表示某個距離值;如圖3所示。
在圖3中,橫坐標為靜態(tài)手勢空間序列X中元素在序列X中的位置,縱坐標為序列X中的對應值。
對于動態(tài)手勢:
步驟2.1',對于步驟1.2'得到的動態(tài)手勢圖像序列,指定序列的開始位置和結束位置,自開始位置到結束位置的序列記為處理序列,針對處理序列中的手勢圖像,將手勢圖像最小的外接矩形的中心點作為手心坐標點,其坐標記為ci(xi,yi);這里的序列開始位置和結束位置是由人為指定的,指定的這段序列中包含動態(tài)手勢完成過程中的信息,后續(xù)的處理也是針對于這段序列進行的;
在圖4中,為一個動態(tài)手勢序列中的十幀,每一幀中手勢圖像外圍的矩形就是其最小外接矩形,矩形的中心點記為手心坐標ci(xi,yi)。
步驟2.2',以手勢圖像所在的深度圖像的左上角為初始點,計算手心坐標點與初始點間的相對角度并記為x(it);
步驟2.3',將處理序列中各幀的手心坐標按順序組成一個動態(tài)手勢軌跡序列C=(c1,c2,…,cn),如圖5所示;將處理序列中各幀的手心坐標點相對于初始點的相對角度組成動態(tài)手勢空間序列:X={x(i1),x(i2),…,x(in)},n表示序列空間的維數(shù),x(in)表示某個距相對角度;如圖6所示。
在本實施例中,圖4為動態(tài)手勢圖像序列中,提取出的處理序列,圖5為圖4對應于步驟2.1'的軌跡序列,其中各點即為處理序列中每幀圖像中的手心點;圖6為對應于圖4的動態(tài)手勢空間序列,其中橫坐標表示動態(tài)手勢序列的幀號,縱坐標為手心坐標點對于初始點的相對角度。
步驟3,構建手勢遞歸模型
將靜態(tài)手勢空間序列、動態(tài)手勢空間序列X按照如下公式計算其遞歸模型:
R=ri,j=θ(ε-||x(ik)-x(im)||),ik,im=1…n
上式中,n表示(動態(tài)、靜態(tài))手勢空間序列的維數(shù),x(ik)和x(im)是在ik和im序列位置處觀察到的(動態(tài)、靜態(tài))手勢空間序列X上的值,||·||是指兩個觀察位置(ik和im序列位置)之間的距離(如:歐幾里得距離),ε是一個閾值,ε<1;而θ是一個赫維賽德階躍函數(shù)(Heaviside step function),θ的定義如下:
上式中,z即對應遞歸模型計算式中的(ε-||x(ik)-x(im)||)。
本步驟利用的是遞歸圖原理,將手勢空間序列轉化成了遞歸模型,在計算過程中,如果一個n維手勢空間序列i和j序列空間位置處的值非常接近,那么就在遞歸模型,即矩陣R坐標為(i,j)的地方ri,j標記一個值為1,否則,就在相應的位置標為0。
注:本方案中,對于靜態(tài)手勢、動態(tài)手勢的步驟1、2處理過程不同,但在步驟2中最終得到的都是手勢空間序列,即靜態(tài)手勢空間序列和動態(tài)手勢空間序列,這兩個序列的表達式X是一樣的。步驟3之后的處理步驟是相同的,都是針對于手勢空間序列進行處理的,為避免步驟上的重復,步驟3之后步驟不再分開寫,即如果處理的是動態(tài)手勢空間序列,步驟3及后續(xù)步驟中描述和參數(shù)部分涉及手勢序列的,均指動態(tài)手勢空間序列;如果處理的是靜態(tài)手勢空間序列,則描述和參數(shù)部分指的是靜態(tài)手勢空間序列。
步驟4,手勢分類
按照下面的公式計算手勢遞歸模型R與模板庫中每一類手勢的遞歸模型Ri之間的距離:
上式中,C(R|Ri)是按照MPEG-1壓縮算法先壓縮圖像Ri之后再壓縮圖像R值的大小,從而求得R圖像中去除和Ri圖像共有的冗余信息后兩者之間的最小近似值;其余的C(Ri|R)、C(R|R)和C(Ri|Ri)的含義解釋同C(R|Ri),不再贅述。
通過與模板庫中每一類手勢的遞歸模型之間進行計算,可得到當前待測手勢遞歸模型R與模板庫中每一類手勢的遞歸模型之間的不同距離,將這些距離值進行排序,取最小的一個距離值對應的模板庫中的手勢,作為待識別的手勢進行識別后的手勢。
該步驟提到的模板庫,是指在進行手勢識別之前,先采集各類標準的手勢,按照步驟1至3的方法進行處理,得到標準手勢的手勢遞歸模型Ri,將這些手勢的遞歸模型存儲在一個模板庫中;后續(xù)進行識別時,將待測手勢的手勢遞歸模型與模板庫中的各個標準手勢的手勢遞歸模型進行對比,二者之間的距離越小,說明二者的相似度越高,就認為待測手勢即為與之相似度最高的一個標準手勢。模板庫中存儲有動態(tài)手勢對應的標準手勢的遞歸模型,也有靜態(tài)手勢對應的標準手勢模型;這里的標準手勢為在人機交互過程中,機器執(zhí)行某個動作所需要給出的標準姿勢,例如手部通過食指和中指擺出“V”字形姿勢表示播放命令,那么就“V”字形姿勢的手勢對應的手勢遞歸模型作為標準模型存儲在手勢庫中;識別過程中,當待識別手勢與該“V”字形姿勢的手勢遞歸模型之間的距離最小,則認為當前待識別手勢即為“V”字形姿勢。
為了驗證本方法的有效性,本發(fā)明分別對靜態(tài)手勢和動態(tài)手勢分別進行了實驗驗證:
對于靜態(tài)手勢,實驗使用了帕多瓦大學提供的公共手勢數(shù)據(jù)集,該方法比Marin等提出的基于手指方向和位置特征的多類SVM分類算法準確率高5.72%,比2014年Dominio等提出的基于幾何特征的SVM算法準確率高4.2%。同時,實驗還表明本文提出的算法對于不同角度放置的手勢分類具有較高的魯棒性。
對于動態(tài)手勢,實驗使用我們獲取到的8種動態(tài)數(shù)據(jù)集上進行手勢識別,實驗結果表明,本發(fā)明提出的算法平均識別準確率高達97.48%,并且對于獲取的手勢軌跡序列長度不同和手勢軌跡序列點數(shù)據(jù)值存在不可比等問題具有較高的魯棒性。