《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于嵌入式系統(tǒng)實(shí)時(shí)交互的手勢識別方法
基于嵌入式系統(tǒng)實(shí)時(shí)交互的手勢識別方法
摘要: 提出了一種在單攝像頭條件下基于嵌入式系統(tǒng)的手勢識別方法,。通過擬合手勢圖的外接多邊形,找出其所對應(yīng)的手勢缺陷圖,,并建立手勢與手勢缺陷圖的一一映射,,利用手勢缺陷圖的特征來匹配和識別不同的手勢。算法還將手勢的跟蹤與識別有機(jī)地統(tǒng)一起來,,通過預(yù)測下一幀中手勢出現(xiàn)的粗略位置大大降低識別步驟的計(jì)算量,。該算法在實(shí)際應(yīng)用的嵌入式平臺下,能快速,、準(zhǔn)確地實(shí)現(xiàn)手勢的識別,,能夠滿足實(shí)時(shí)人機(jī)交互的要求。
Abstract:
Key words :

引言

手勢交互是人機(jī)交互領(lǐng)域近年來的研究熱點(diǎn),,特別是利用攝像頭來實(shí)現(xiàn)對手勢信息的非接觸性捕獲,,并由計(jì)算機(jī)進(jìn)行分析理解,然后完成交互任務(wù),,由于其自然和符合人自身行為習(xí)慣的交互方式而備受青睞,。手勢的形態(tài)在交互過程中的變化以及周圍環(huán)境的干擾都會影響到手勢的識別和理解,因此手勢識別是計(jì)算機(jī)視覺和人機(jī)交互領(lǐng)域中的重要問題,,如何將這種交互方式更好地在嵌入式系統(tǒng)中應(yīng)用更是一個(gè)富有挑戰(zhàn)性的工作,。

基于視覺的手勢識別過程通常分為四個(gè)步驟,即分割,、表示,、識別和應(yīng)用,。手勢識別算法的關(guān)鍵和難點(diǎn)是分割和識別兩個(gè)步驟,現(xiàn)有算法在這兩個(gè)步驟通常都有計(jì)算量大,、時(shí)間復(fù)雜度高的特點(diǎn),,而嵌入式設(shè)備又受到資源和計(jì)算能力的限制,要能夠做到基于嵌入式系統(tǒng)的實(shí)時(shí)手勢交互,,就有必要對傳統(tǒng)的手勢識別算法進(jìn)行改進(jìn),。

本文在單攝像頭條件下,在手勢跟蹤的相關(guān)工作基礎(chǔ)上,,提出了一種基于手勢結(jié)構(gòu)特征的手勢識別方法,,使之滿足嵌入式系統(tǒng)中的人機(jī)交互對實(shí)時(shí)性、準(zhǔn)確性及連續(xù)性的要求,。本文使用了計(jì)算量小且性能高的Camshift算法作為跟蹤算法,,并將其跟蹤結(jié)果作為手勢識別的參考因子,這樣可以大大減少手勢識別的工作量,;手勢的識別則采用了手勢跟蹤結(jié)果與手勢形態(tài)結(jié)構(gòu)特征相結(jié)合的處理方法,。將手勢跟蹤的結(jié)果作為參考因子,可以除去圖像中與手勢無關(guān)的背景圖像,,利用手勢形態(tài)結(jié)構(gòu)特征使得手勢識別工作不是對手勢邊緣的每個(gè)點(diǎn)進(jìn)行處理,,轉(zhuǎn)而對手勢的外接多邊形進(jìn)行處理。這兩種方法相結(jié)合不僅使識別工作的計(jì)算量大大降低,,對手勢識別的精確度也有所提高,,而且不需要對各種手勢進(jìn)行訓(xùn)練就可以完成識別工作,使得識別更加方便和簡潔,。

1相關(guān)工作

關(guān)于手勢識別的算法,,國內(nèi)外的研究人員已經(jīng)提出了很多不同的解決方案。目前比較常用的有基于統(tǒng)計(jì)的HMM模型,、基于遺傳算法以及基于人工神經(jīng)網(wǎng)絡(luò)的手勢識別等,。基于統(tǒng)計(jì)的HMM方法,,其優(yōu)點(diǎn)是利用先驗(yàn)知識建立視覺特征之間的因果關(guān)系來處理視頻處理中固有的不確定性問題,不但能夠在每個(gè)時(shí)刻上對多個(gè)隨機(jī)變量所對應(yīng)的不同特征之間的依存關(guān)系進(jìn)行概率建模,,而且考慮了各個(gè)時(shí)刻間的轉(zhuǎn)移概率,,能夠很好地反映特征之間的時(shí)序關(guān)系。但是它需要維護(hù)一個(gè)具有一定規(guī)模的樣本庫,,而且在使用HMM進(jìn)行手勢識別時(shí)計(jì)算量大,。當(dāng)然,樣本庫的規(guī)模越大其分布越接近實(shí)際情況,,手勢識別的準(zhǔn)確率就越高,,而且還需要使用數(shù)據(jù)平滑的技術(shù)來擴(kuò)大小概率的值,。遺傳算法對圖像進(jìn)行離散化處理,對圖像離散點(diǎn)進(jìn)行控制,,把圖像識別問題轉(zhuǎn)換為一系列離散點(diǎn)的組合優(yōu)化問題,;但它不能夠及時(shí)利用網(wǎng)絡(luò)的反饋信息,搜索速度比較慢,,所需訓(xùn)練樣本大,、訓(xùn)練時(shí)間長。人工神經(jīng)網(wǎng)絡(luò)通過把大量的簡單處理單元(神經(jīng)元)廣泛地連接起來構(gòu)成一種復(fù)雜的信息處理網(wǎng)絡(luò),,它在不同程度和層次上模仿人腦神經(jīng)系統(tǒng)的信息處理,、存儲和檢索功能,需要的樣本少,、效率高,;但是需要人的參與訓(xùn)練,識別的正確率受主觀因素的影響,。

總體來說,,在人機(jī)交互系統(tǒng)中,手勢的跟蹤與識別應(yīng)該滿足以下幾個(gè)要求:

a)實(shí)時(shí)性好,,避免對高維度特征矢量的計(jì)算,,數(shù)據(jù)量大的數(shù)組處理以及復(fù)雜的搜索過程。

b)足夠的魯棒性,。不受識別對象旋轉(zhuǎn),、平移和比例改變以及攝像頭視角改變的影響。

c)手勢跟蹤的連續(xù)性和自動初始化,,能夠在跟蹤失敗后自動恢復(fù)跟蹤,,盡量減少人的干預(yù)。

本文提出手勢識別和跟蹤方法不再追隨傳統(tǒng)的將識別的四個(gè)步驟孤立起來,,而是將手勢跟蹤的結(jié)果與手勢的識別這兩個(gè)獨(dú)立的步驟聯(lián)系起來,,將跟蹤得到的手勢預(yù)測的區(qū)域設(shè)為下一幀圖像識別的感興趣區(qū)域(regionofinteresting,ROI);基于Camshift算法,根據(jù)前一幀手勢在圖像中的位置和顏色信息,,對手勢在下一幀圖片所處的位置進(jìn)行預(yù)測,,主要是基于顏色的統(tǒng)計(jì)信息。它運(yùn)算量小,,不僅能很好地滿足嵌入式系統(tǒng)的需求,,而且跟蹤和預(yù)測的效果也非常好。通過對ROI區(qū)域進(jìn)行手勢的分割和識別,,可以排除背景圖像對手勢的部分干擾,,識別過程的計(jì)算量也減小很多。由于每種手勢的邊線都有不同特征,這些不同的特征能很好地反映在手勢的外接多邊形上,,因此,,可以對不同手勢和外接多邊形建立一個(gè)一一映射的關(guān)系;通過建立不同手勢的外接多邊形特征庫,,對分割出來的手勢作多邊形擬合,,只要將提取出來的多邊形與特征庫中的外接多邊形進(jìn)行匹配就能判斷出手勢的類型。

本文提出的手勢識別方法主要包括三個(gè)部分:

a)手勢分割,。將手部區(qū)域從場景中分割出來,,并對手部的區(qū)域和輪廓進(jìn)行提取。這里的手部區(qū)域主要根據(jù)c)跟蹤的結(jié)果提供,。

b)手勢圖像的外接多邊形擬合以及匹配部分,。對a)提取出來的手勢輪廓作多邊形擬合,分析多邊形的形狀特點(diǎn),,并在特征庫中查找與擬合的多邊形特征相符合的對象,,再映射到具體的手勢。

c)手勢跟蹤部分,。根據(jù)顏色信息對手的區(qū)域進(jìn)行定位,,并對圖像進(jìn)行空間轉(zhuǎn)換,利用統(tǒng)計(jì)原理對下一幀手可能出現(xiàn)的區(qū)域進(jìn)行預(yù)測,,并將預(yù)測的結(jié)果反饋給a)的手勢分割部分,。

手勢識別流程如圖1所示。

圖1 手勢識別流程

2手勢識別框架

手勢識別主要由靜態(tài)手勢的識別和手勢跟蹤兩部分的工作組成,,手勢識別框架結(jié)構(gòu)如圖2所示,。在本文提出的方法中,采用了將這兩部分的工作進(jìn)行并行處理的方式,,手勢識別的結(jié)果傳遞給跟蹤部分,,作為跟蹤的對象,并且手勢跟蹤的預(yù)測結(jié)果反饋給識別部分,,將為靜態(tài)手勢識別提供ROI圖像區(qū)域,。這樣不僅能有效地提高跟蹤的高效性,還能提高識別的準(zhǔn)確性,,將這兩個(gè)部分有效地統(tǒng)一起來,。

圖2 手勢識別框架

2.1靜態(tài)手勢識別

通過靜態(tài)手勢的識別,使系統(tǒng)能夠?qū)Ρ桓檶ο笥幸粋€(gè)基本的理解,,為實(shí)現(xiàn)自動跟蹤初始化與跟蹤的自動恢復(fù)奠定了基礎(chǔ),。首先,手部區(qū)域需要從場景中分割出來,。本文采用一種基于模糊集和模糊運(yùn)算的方法進(jìn)行手的區(qū)域和輪廓提取,通過對視頻流中空域和時(shí)域上的背景,、運(yùn)動,、膚色等信息執(zhí)行模糊運(yùn)算,,分割出精確的人手。

靜態(tài)手勢的識別是基于輪廓特征的識別,,對分割出來的人手作邊緣檢測,,得到手勢完整的輪廓邊緣。通過前面的模糊集合運(yùn)算,,能得到圖像的手勢分割的二值圖,。兩個(gè)具有不同灰度值的相鄰區(qū)域之間總存在邊緣。邊緣是灰度值不連續(xù)的結(jié)果,,這種不連續(xù)可利用求導(dǎo)方便地檢測出來,。

這樣就能得到完整的輪廓邊緣。如圖3所示,,左邊為手部區(qū)域,,右邊為手勢的輪廓。

接下來是對提取的手勢輪廓作外接多邊形擬合,。KenjiOka和YoichiSato的指尖搜索方法是首先在一個(gè)較大的搜索窗口內(nèi)掃描確定20個(gè)候選指尖位置,,然后再對匹配度最大的候選位置周圍的候選進(jìn)行抑制,同時(shí)按一定規(guī)則去除位于指尖中間的部分候選,。該方法由于需要對搜索區(qū)域進(jìn)行多次逐像素的掃描,,造成計(jì)算量較大,而且除去手勢中部候選位置的方法的魯棒性較差,。文獻(xiàn)[5]給出了通過遍歷手勢輪廓的曲率來進(jìn)行之間位置搜索的方法,,通過對手勢按輪廓順序進(jìn)行定長掃描的方法,可以找出指尖并做出輪廓線的外接多邊形,。但是這種查找方式需要遍歷輪廓線的每個(gè)點(diǎn),,而且對每個(gè)點(diǎn)還需要作除法運(yùn)算,這使得算法的計(jì)算量太大,,而且在搜索指尖時(shí),,當(dāng)受到光線變化使得輪廓線出現(xiàn)很多突起的邊緣時(shí),使得識別工作出現(xiàn)困難,。本文提出了一種查找外接邊的搜索方法,,通過對手勢輪廓按輪廓點(diǎn)順序進(jìn)行定長掃描,將手勢輪廓線的外接多邊形擬合出來,,同時(shí)將滿足定義1的手勢輪廓外接凸邊形缺陷結(jié)構(gòu)設(shè)為手勢識別的判斷特征,。

2.1.1手勢缺陷圖

定義1手勢缺陷圖是指由手勢輪廓線外接多邊形以及多邊形各條邊所對應(yīng)的谷底(depthpoint)所組成的特征描述方程。谷底是指外接多邊形的邊與該邊所對應(yīng)的輪廓線上距離邊最遠(yuǎn)的輪廓點(diǎn),。定義手勢缺陷圖的數(shù)據(jù)結(jié)構(gòu)如下:

TypedefstructCvConvexityDefect{

CvPoint*start;//缺陷開始的輪廓點(diǎn)

CvPoint*end;//缺陷結(jié)束的輪廓點(diǎn)

CvPoint*depth_point;//缺陷中距離凸性最遠(yuǎn)的輪廓點(diǎn)

Floatdepth;//谷底距離凸性的深度

}CvConvexityDefect;

如圖4所示,,手勢輪廓缺陷圖能很好地描述各種手勢,通過對手勢輪廓線外接多邊形的邊數(shù)以及邊所對應(yīng)的谷底深度,可以將手勢缺陷圖映射到不同的手勢,。其中A,、B、C,、D,、E、F,、G為手勢輪廓線的外接多邊形的各條邊,,Da、Db,、Dc,、Dd、De,、Df,、Dg為手勢缺陷圖中的谷底到對應(yīng)邊的深度。

為了得到手勢輪廓缺陷圖,,首先必須對手勢輪廓進(jìn)行多邊形擬合,,得出它的外接多邊形。本文提出了一種根據(jù)手勢輪廓上相鄰兩點(diǎn)間的凹凸性來進(jìn)行擬合,,通過一次遍歷輪廓上的點(diǎn),,對以下方程進(jìn)行判定,將適當(dāng)?shù)狞c(diǎn)剔除,,剩下的點(diǎn)即為外接多邊形的候選定點(diǎn):

by=nexty-cury(1)

ay×bx-ax×by(2)

ax=pcur.x-pprev.x,ay=pcur.y-pprev.y

bx=pnext.x-pcur.x,by=pnext.y-pcur.y

其中:pcur為當(dāng)前遍歷的輪廓線上的點(diǎn),;pprev、pnext分別表示當(dāng)前點(diǎn)的前一個(gè)點(diǎn)和后一個(gè)點(diǎn),;ax,、ay分別為當(dāng)前點(diǎn)和前一點(diǎn)的x和y坐標(biāo)值差;bx,、by分別為當(dāng)前點(diǎn)和后一點(diǎn)指尖的x和y坐標(biāo)值差,。

基于輪廓線凹凸形的擬合算法流程如下:

a)將所有的輪廓線上的點(diǎn)按x坐標(biāo)值大小排序,并找出所有的點(diǎn)中y坐標(biāo)的最大最小值maxY和minY.

b)將排序后的輪廓點(diǎn)劃分為四部分:首先按照y坐標(biāo)將輪廓線分為上下兩個(gè)部分,,將上半部分以maxY所在的x坐標(biāo)(記為Xmaxy)劃分為兩個(gè)部分,,分別記為topLeft〈左上〉和topRight〈右上〉;將下半部分以minY所在的x坐標(biāo)(記為Xminy)劃分為兩個(gè)部分,,分別記為bottomLeft〈左下〉和bottom-Right〈右下〉,。

c)分別對前一步劃分的四個(gè)部分(topLeft,topRight,bottomLeft,bottomRight)進(jìn)行遍歷:對區(qū)域topLeft將滿足式(1)<0,式(2)>0的點(diǎn)剔除;對區(qū)域TopRight將滿足(1)<0,式(2)<0的點(diǎn)剔除,;對區(qū)域bottomLeft將滿足式式(1)>0,式(2)>0的點(diǎn)剔除,;對區(qū)域bottomRight將滿足式(1)>0,式(2)>0的點(diǎn)剔除,。剔除后剩下的點(diǎn)即為手勢輪廓線外接多邊形的頂點(diǎn)。

手勢缺陷圖的谷底以及谷底深度的求解是建立在擬合外接多邊形基礎(chǔ)上,,還需要對外接多邊形的每條邊所對應(yīng)的輪廓線再進(jìn)行一次遍歷,,并將滿足以下方程的最大值求出即是該邊所對應(yīng)的谷底:

其中:scale為單位化量值;hull_cur和hull_next分別為外接多邊形當(dāng)前遍歷的邊和下一條邊,;dx0、dy0分別為外接多邊形當(dāng)前邊的x和y坐標(biāo)的差值,;dx,、dy分別為當(dāng)前遍歷的輪廓線上的點(diǎn)與hull_cur點(diǎn)之間x和y坐標(biāo)的差值;depth為遍歷點(diǎn)與對應(yīng)邊之間的距離,,它的最大值即為該邊對應(yīng)的谷底深度,,相應(yīng)的點(diǎn)為谷底。

通過以上搜索可以將手勢輪廓缺陷圖的特征值找出來,,接下來便可以將缺陷圖的特征值(多邊形與谷底的關(guān)系)與已建立的庫中的特征值相比較,,對手勢進(jìn)行匹配,將手勢輪廓缺陷圖映射到不同的手勢上去,。

2.1.2手勢匹配

手勢的匹配主要是基于手勢缺陷圖的匹配,,手勢缺陷圖的特征值由外接多邊形以及谷底的位置和深度組成,如圖5所示,。

圖5 手勢以及對應(yīng)缺陷圖

根據(jù)多邊形的邊數(shù)以及各條邊的程度可以確定手指的數(shù)量,,而谷底的深度和位置可以確定手指的關(guān)系和位置。由于這是根據(jù)手勢的整體圖像來進(jìn)行分析,,所以具有一定的魯棒性,,當(dāng)光線變化而導(dǎo)致手勢圖出現(xiàn)差別時(shí),并不會導(dǎo)致手勢缺陷圖的變化,。

2.2手勢跟蹤

對于手部跟蹤,,主要是基于Camshift算法實(shí)現(xiàn)的,它綜合利用了手勢圖像的顏色,、區(qū)域和輪廓特征,。Camshift是Mean.Shift算法的推廣,是一種有效的統(tǒng)計(jì)迭代算法,,它使目標(biāo)點(diǎn)能夠漂移到密度函數(shù)的局部最大值點(diǎn),。Camshift跟蹤算法是基于顏色概率模型的跟蹤方法,在建立被跟蹤目標(biāo)的顏色直方圖模型后,,可以將視頻圖像轉(zhuǎn)換為顏色概率分布圖,,每一幀圖像中搜索窗口的位置和尺寸將會被更新,使其能夠定位跟蹤目標(biāo)的中心和大小,。本文中,,Camshift算法被用于位置的粗定位,,即確定當(dāng)前手勢區(qū)域的外包矩形Rect,如圖6所示。

圖6 手勢的外接多邊形擬合

Rect將被用于前一步靜態(tài)手勢識別的輸入圖像,,以便減少對圖像的分割以及模糊運(yùn)算的工作量,。

3手勢交互演示系統(tǒng)

本文在Linux系統(tǒng)下實(shí)現(xiàn)了本文提出的基于手勢輪廓缺陷圖進(jìn)行手勢識別的方法,并在"嵌入式之星"開發(fā)板上實(shí)現(xiàn)了手勢識別的人機(jī)交互演示系統(tǒng),。系統(tǒng)處理器800MHz,存儲器RAM256MB,實(shí)時(shí)采集640×480的真彩色圖像,。該系統(tǒng)分析攝像頭實(shí)時(shí)捕獲到的每一幀圖像,對圖片中的手勢進(jìn)行實(shí)時(shí)識別,。系統(tǒng)的應(yīng)用程序是一個(gè)基于手勢識別的拼圖游戲,,通過變換手勢來完成拼圖??勺R別的靜態(tài)手勢狀態(tài)被分為五類:A為握拳,、B為食指伸長、C為V型手勢,、D為中間三指伸開,、E為五指張開。A,、E手型分別對應(yīng)抓取與松開,。手勢為握拳狀態(tài)時(shí),手對應(yīng)的圖片塊被選中(類似鼠標(biāo)左鍵按下),此時(shí)可以拖動圖片,,選定位置后可以換成手勢E,圖片將被松開(類似鼠標(biāo)左鍵松開),B,、C、D手勢分別表示將圖片放大,、縮小和旋轉(zhuǎn),。

演示系統(tǒng)效果如圖7所示。

圖7 演示系統(tǒng)效果

圖7演示系統(tǒng)效果

4實(shí)驗(yàn)結(jié)果及分析

為了檢驗(yàn)本文算法的準(zhǔn)確性和實(shí)時(shí)性,,本文在實(shí)驗(yàn)室光照條件下,,采集不帶任何特殊標(biāo)記的手勢單目視頻圖像。實(shí)驗(yàn)中參數(shù)設(shè)置如下:Camshift算法的最大迭代次數(shù)為10;手勢分割使用的HSV顏色空間如表1所示,。

表1HSV顏色空間設(shè)置

表1 HSV 顏色空間設(shè)置

對手勢二值圖像所做的數(shù)學(xué)形態(tài)學(xué)操作使用3×3的模板做開運(yùn)算,,使用5×5的模板做閉運(yùn)算;噪聲手勢的域值設(shè)為0.01.手勢的跟蹤過程無人工干預(yù),。

表2給出了五種手勢的識別率與匹配成功率,。匹配成功率是指在正確識別出手勢類型的情況下,按照2.2節(jié)給出的匹配方法將手勢輪廓缺陷圖的特征與手勢類型進(jìn)行匹配的成功比率,。

表2手勢識別匹配率

表2 手勢識別匹配率

表3給出本文方法與其他方法的比較結(jié)果,。與其他手勢識別方法比較,本文提出的方法有相當(dāng)?shù)淖R別率,,還實(shí)現(xiàn)了手勢跟蹤的結(jié)果對識別的反饋,,并在實(shí)時(shí)性方面滿足嵌入式系統(tǒng)的需求(20~25fps),明顯好于文獻(xiàn)[7](一種面向實(shí)時(shí)交互的變形手勢跟蹤方法,,18fps)和目前流行的HandVu的識別效率。

表3手勢識別算法比較

表3 手勢識別算法比較

魯棒性方面,,由于本文采用了模糊運(yùn)算,,圖像模糊分割的準(zhǔn)確率達(dá)到96.4%,對環(huán)境的變化具有很好的抗干擾性。即使背景有人的走動造成環(huán)境和光線的劇烈變化,,也不會對手勢輪廓缺陷圖造成太大的影響,。

5結(jié)束語

本文針對人機(jī)交互領(lǐng)域基于視頻手勢在嵌入式系統(tǒng)上的實(shí)時(shí)交互任務(wù)提出一種快速、計(jì)算量小的手勢識別方法,。它結(jié)合了基于模型與基于表觀方法的特點(diǎn),,是建立在對目標(biāo)對象-手勢的理解基礎(chǔ)上,通過識別靜態(tài)手勢實(shí)現(xiàn)了手勢的跟蹤與識別,。與傳統(tǒng)的手勢識別系統(tǒng)不同,它在注重識別效果的同時(shí)還要注重算法的計(jì)算復(fù)雜度,。通過使用手勢輪廓缺陷圖作為手勢識別的特征結(jié)構(gòu),,不僅大大減少了計(jì)算量,由于缺陷圖是從整體結(jié)構(gòu)刻畫手勢的結(jié)構(gòu),,所以它還增強(qiáng)了手勢識別的魯棒性,。實(shí)驗(yàn)表明本文提出的方法可以滿足交互的實(shí)時(shí)性要求,能很好地用于手勢交互的應(yīng)用系統(tǒng),。

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。