新聞中心

EEPW首頁(yè) > 電源與新能源 > 設(shè)計(jì)應(yīng)用 > 基于嵌入式系統(tǒng)實(shí)時(shí)交互的手勢(shì)識(shí)別

基于嵌入式系統(tǒng)實(shí)時(shí)交互的手勢(shì)識(shí)別

作者: 時(shí)間:2012-05-07 來(lái)源:網(wǎng)絡(luò) 收藏
手勢(shì)缺陷圖的數(shù)據(jù)結(jié)構(gòu)如下:

  Typedef struct CvConvexityDefect{

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

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

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

  Float depth; / /谷底距離凸性的深度

  } CvConvexityDefect;

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

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

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

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

基于嵌入式系統(tǒng)實(shí)時(shí)交互的手勢(shì)識(shí)別

基于嵌入式系統(tǒng)實(shí)時(shí)交互的手勢(shì)識(shí)別

  其中: 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)與對(duì)應(yīng)邊之間的距離,它的最大值即為該邊對(duì)應(yīng)的谷底深度,相應(yīng)的點(diǎn)為谷底。

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

  2. 1. 2 手勢(shì)匹配

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

基于嵌入式系統(tǒng)實(shí)時(shí)交互的手勢(shì)識(shí)別

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

  2. 2 手勢(shì)跟蹤

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

基于嵌入式系統(tǒng)實(shí)時(shí)交互的手勢(shì)識(shí)別

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

  3 演示系統(tǒng)

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

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

基于嵌入式系統(tǒng)實(shí)時(shí)交互的手勢(shì)識(shí)別

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

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

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

基于嵌入式系統(tǒng)實(shí)時(shí)交互的手勢(shì)識(shí)別

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

linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

上一頁(yè) 1 2 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉