《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于顏色識別的手指多點跟蹤人機交互系統(tǒng)
基于顏色識別的手指多點跟蹤人機交互系統(tǒng)
來源:微型機與應(yīng)用2012年第1期
王鵬程,官洪運,許文杰,鄔曉琳
(東華大學(xué) 信息學(xué)院,上海 201620)
摘要: 基于英特爾凌動處理器的嵌入式平臺和Windows操作系統(tǒng),以O(shè)penCV2.0庫為圖形識別處理基礎(chǔ),運用顏色識別、膚色識別、手指動作識別等非接觸式實現(xiàn)跟蹤技術(shù),構(gòu)建了一個基于手指動作識別的多點人機交互系統(tǒng)。該系統(tǒng)能夠跟蹤雙手共四個手指的動作,實現(xiàn)圖片的多點“觸控”、畫圖、PDF文件瀏覽功能。
Abstract:
Key words :

摘  要: 基于英特爾凌動處理器的嵌入式平臺和Windows操作系統(tǒng),以OpenCV2.0庫為圖形識別處理基礎(chǔ),運用顏色識別、膚色識別、手指動作識別等非接觸式實現(xiàn)跟蹤技術(shù),構(gòu)建了一個基于手指動作識別的多點人機交互系統(tǒng)。該系統(tǒng)能夠跟蹤雙手共四個手指的動作,實現(xiàn)圖片的多點“觸控”、畫圖、PDF文件瀏覽功能。
關(guān)鍵詞: 多點跟蹤;顏色識別;OpenCV;人機交互

 隨著計算機視覺技術(shù)的發(fā)展以及人們對新的交互手段的需求,基于計算機視覺的交互系統(tǒng)也逐漸發(fā)展起來。傳統(tǒng)的交互方式如鼠標(biāo)、鍵盤、手柄等在某些特殊領(lǐng)域己經(jīng)無法發(fā)揮便利的作用。本系統(tǒng)將計算機視覺技術(shù)做新的應(yīng)用,帶來了人機交互的便利,實現(xiàn)如畫圖、圖片瀏覽等功能,將電視棒連接到處理器后還可實現(xiàn)對網(wǎng)絡(luò)電視的頻道切換和音量控制。本系統(tǒng)是基于顏色識別的多點跟蹤識別系統(tǒng),可以通過識別手部的動作(如拉伸、靠近等動作)實現(xiàn)對計算機及與其連接設(shè)備的控制功能,讓用戶完全擺脫對遙控器和鼠標(biāo)的依賴,實現(xiàn)更加便捷、人性化的人機交互。
 傳統(tǒng)的人機交互方式在使用過程中確定性比較強,比如按下鍵盤的按鈕或者點擊鼠標(biāo)的左右鍵,計算機都己將此關(guān)聯(lián)到一定的系統(tǒng)事件中。
而基于顏色識別的手指多點跟蹤交互方式表達的意義豐富。如帶上顏色標(biāo)記的指套后,通過不同手勢、位置、方向等可以組合出多種信息,更能符合人的操作習(xí)慣。整個交互的流程為:先通過攝像頭拍攝手勢圖像視頻流,然后從圖像中根據(jù)特定算法提取出手指的顏色和識別點以及位置信息,之后把這些信息點進行相應(yīng)分類取舍,接著基于Windows API將這些提取出的信息點根據(jù)需求驅(qū)動相應(yīng)的系統(tǒng)動作。
1 常用的色彩模型及轉(zhuǎn)換
1.1 常用的色彩模型

 本系統(tǒng)涉及到的色彩空間有:
?。?)RGB顏色模型
 RGB彩色系統(tǒng)為一直角坐標(biāo)系統(tǒng),其中的三個基量是選擇可見光中的三原色光,為使色光定義能夠統(tǒng)一,CIE定出三原色的波長為紅(700 nm)、綠(546.1 nm)和藍(lán)(435.8 nm)。通常不直接處理RGB彩色影像,例如欲從一個彩色影像中找出物體的邊緣,如果分別對R、G和B以邊緣強化處理,如此得到的為一個別成份的邊緣而非物體的真正邊緣。直接處理RGB影像的情況只有在每個成份改變的情形都一樣時,才不會造成顏色失真。
?。?)HSV顏色模型
 HSV色彩屬性模式是根據(jù)色彩的三個基本屬性:色相、飽和度和亮度來確定顏色的一種方法。
色相(H)是色彩的基本屬性,就是平常所說的顏色名稱,如紅色、黃色等,依照在標(biāo)準(zhǔn)色輪上的位置,取0~360°的數(shù)值(也有用100%的方法確定的)。飽和度(S)是指色彩的純度,越高色彩越純,低則逐漸變灰,取0~100%的數(shù)值。明度(V)也叫“亮度”,取0~100%。這種模式是1978年由AlvyRaysmith創(chuàng)立的,它是三原色光模式的一種非線性變換。
1.2 顏色模型轉(zhuǎn)換
 研究表明,雖然不同人的膚色相差很大,但通常不同人的膚色相差主要是亮度,而在色度上的差異并不大。因此需要把圖像中表達顏色的色度與亮度分開。通常是將獲取的圖像中所用的R、G、B三原色的顏色分量所表達的色彩空間轉(zhuǎn)換為HSV色彩空間,轉(zhuǎn)換后就可以對人體膚色的色度進行一個閉值分割來達到膚色分割的目的。
?。?)膚色模型
 參考文獻[1]結(jié)合了HSV顏色空間和RGB空間構(gòu)造出混合膚色模型,該論文首先分析了膚色在H-S平面的聚類情況。并通過大量膚色樣本,發(fā)現(xiàn)膚色像素在H-S平面上表現(xiàn)出的明顯聚類,表明人體膚色的RGB圖像轉(zhuǎn)換到HSV色彩空間后H與S分量的關(guān)系。并且隨光照強度不同,V的取值范圍應(yīng)較大,否則會忽略某些膚色像素點,同時也會引入誤差。
?。?)CamShift顏色跟蹤算法及其改進
CamShift算法(即“Continuously Apative Mean-Shift”算法)基本思想是將視頻圖像的所有幀作MeanShift運算,并將上一幀的結(jié)果作為搜索窗的初始值,如此迭代下去實現(xiàn)對目標(biāo)的跟蹤。
?。?)膚色模型+CamShift跟蹤
 CamShift算法簡單,跟蹤實時效果較好,在簡單背景下完全勝任跟蹤識別要求,缺點是復(fù)雜背景圖對識別精度有一定的干擾,導(dǎo)致跟蹤不穩(wěn)定。結(jié)合膚色識別和CamShift顏色跟蹤算法,在每幀同時得到CamShift顏色跟蹤窗口以及膚色二值圖像,在顏色跟蹤窗口中包含一定數(shù)量膚色二值像素時才認(rèn)為是有效目標(biāo)。
 合成的方案具有較好的識別跟蹤效果,使用改進的CamShift算法,即便出現(xiàn)跟蹤丟失現(xiàn)象,也會在數(shù)幀內(nèi)再次跟蹤上目標(biāo)顏色,因此采用此方案為系統(tǒng)的實施方案。
2 系統(tǒng)功能與指標(biāo)
 系統(tǒng)通過對4個指套顏色的識別與跟蹤,可以在Windows操作系統(tǒng)中實現(xiàn)[2]如鼠標(biāo)移動、點擊、文檔翻頁和多點放大縮小。為了方便操作,一般左右手食指和拇指各戴一個指套,右手手指的移動作為鼠標(biāo)移動和單擊消息,用右手食指和拇指的“捏”的動作實現(xiàn)單擊操作,而“捏住”并移動手指可以實現(xiàn)拖動操作。左手作為多點觸控消息,在左右手的食指拇指同時“捏住”后,通過兩手的遠(yuǎn)離拉開和靠近縮回實現(xiàn)“多點觸控”。
3 實現(xiàn)原理
3.1 OpenCV基礎(chǔ)

 OpenCV(全稱是Open Source Computer Vision Library)[3]作為一個基本的計算機視覺、圖像處理和模式識別的開源項目,可以直接應(yīng)用于很多領(lǐng)域,作為二次開發(fā)的理想工具。
3.2 膚色模型
 先將原圖像RGB色彩空間轉(zhuǎn)換到HSV空間,然后判斷像素點是否在膚色模型HSV取值中,若在范圍內(nèi),則該像素點置”1”(255),即置為白色,否則設(shè)置為”0”(黑色)。再進行相應(yīng)形態(tài)學(xué)處理以及輪廓提取便可得到膚色二值圖像,進行深度信息提取。
3.3 CamShift顏色跟蹤算法
 CamShift算法是MeanShift的修改算法,克服了MeanShift不適合實時跟蹤的缺點。
 CamShift算法基本實現(xiàn)流程如下:
 (1)Back Projection背景投影計算
 計算Back Projection的步驟如下:
?、俑鶕?jù)目標(biāo)顏色圖像計算被跟蹤目標(biāo)的色彩直方圖。
 根據(jù)如圖1的目標(biāo)顏色計算出如圖2的直方圖。


 利用背景投影圖計算質(zhì)心即跟蹤窗口進行顏色跟蹤。
 ②根據(jù)獲得的色彩直方圖將原始圖像轉(zhuǎn)化成色彩概率分布圖像,這個過程稱為Back Projection。
 (2)MeanShift重心計算
 MeanShift算法是一種一組數(shù)據(jù)的密度分布中尋找局部極值的穩(wěn)定的方法。若分布是連續(xù)的,處理過程比較容易,這種情況下本質(zhì)上只需對密度的直方分布圖應(yīng)用爬山算法即可。然而,對于離散的數(shù)據(jù)集,這個問題某種程度上是比較麻煩的。
 MeanShift算法步驟如下:
?、龠x擇搜索窗口。
 ·窗口的初始位置;
 ·窗口的類型(均勻、多項式、指數(shù)或者高斯類型);
 ·窗口的形狀(對稱的或歪斜的,可能旋轉(zhuǎn)的,圓形或巨型);
 ·窗口的大小(超出窗口大小則被刪除)。
 ②計算窗口(可能帶權(quán)值的)的重心。
 ③將窗口中心設(shè)置在計算出的重心處。
?、芊祷氐冖诓剑钡酱翱诘奈恢貌辉僮兓ㄍǔ?。
 (3)CamShift算法
 將MeanShift算法擴展到連續(xù)圖像序列,就形成了CamShift算法。它的基本思想是視頻圖像的所有幀作MeanShift運算,并將上一幀的結(jié)果作為下一幀MeanShift算法的Search Window的初始值,如此迭代下去,就可以實現(xiàn)對目標(biāo)的跟蹤。整個算法的具體步驟分5步:
?、賹⒄麄€圖像設(shè)為搜尋區(qū)域。
?、诔跏蓟疭earch Window的大小和位置。
?、塾嬎鉙earch Window內(nèi)的彩色概率分布,此區(qū)域的大小比Search Window要稍微大一點。
?、苓\行MeanShift,獲得Search Window新的位置和大小。
 ⑤在下一幀視頻圖像中,用③獲得的值初始化Search Window的位置和大小。跳轉(zhuǎn)到③繼續(xù)運行。
 在OpenCV中,有實現(xiàn)CamShift算法的函數(shù)cvCamShift,使用較方便。
3.4 合成方案:膚色模型+改進CamShift跟蹤
 結(jié)合膚色識別和CamShift顏色跟蹤算法,在每幀同時得到CamShift顏色跟蹤窗口以及膚色二值圖像,在顏色跟蹤窗口中包含一定數(shù)量膚色二值像素時才認(rèn)為是有效目標(biāo)。如圖3所示,系統(tǒng)分別識別出了膚色和目標(biāo)色紅色,并確認(rèn)出介于膚色之間的紅色位置才是目標(biāo)位置。

 

 


綜合膚色模型和CamShift顏色跟蹤算法,可以在較復(fù)雜背景下實現(xiàn)目標(biāo)顏色跟蹤。
4 系統(tǒng)硬件組成
 系統(tǒng)硬件組成包括:核心控制系統(tǒng)、視頻采集系統(tǒng)、USB接口的電視棒、天線、視頻音頻輸出模塊,系統(tǒng)硬件構(gòu)成如圖4所示。


5 系統(tǒng)軟件流程
  整個軟件系統(tǒng)分為三種狀態(tài):移動狀態(tài)、單點狀態(tài)、多點狀態(tài)。通過設(shè)置兩個標(biāo)志位flag來判斷所處狀態(tài)。只有進入單機狀態(tài)后才能進入多點狀態(tài),而一旦退出多點狀態(tài)將進入移動狀態(tài)(如圖5)。在圖形界面上,本系統(tǒng)用VS2005的MFC框架,基于Dialog的結(jié)構(gòu),編寫了友好的人機交互界面[4]。

    如下代碼介紹了如何在獲取的視頻信號中識別紅色指套,其他顏色的指套采用相同的方法可進行識別,由識別到的手指位置對Whindows鼠標(biāo)消息進行響應(yīng),從而對系統(tǒng)進行控制[5]。
?。?)構(gòu)建搜索目標(biāo)色的數(shù)據(jù)結(jié)構(gòu)
 histRed=cvCreateHist(1,&hdims,CV_HIST_ARRAY,
 &hranges,1);  //分配直方圖
 imgRed=cvLoadImage("red.jpg");//讀取四色基圖
 cvCvtColor(image,hsv,CV_BGR2HSV);
 //彩色空間轉(zhuǎn)換 BGR to HSV
 cvScalar(180,256,MAX(_vmin,_vmax),0),mask);
    //得到二值的MASK
 cvSplit(hsv,hue,0,0,0);    //只提取HUE分量
 (2)CAMSHIFT算法及形態(tài)學(xué)濾波
 cvCalcBackProject(&hue,backproject,histRed);
 //使用back project方法
 cvAnd(backproject, mask, backproject,0);
 cvMorphologyEx(backproject,backproject,0,0,CV_MOP_ OPEN,1);
 cvMorphologyEx(backproject,backproject,0,0,CV_MOP_ CLOSE,1);
 cvCamShift(backproject, track_windowRed,
 cvTermCriteria(CV_TERMCRIT_EPS | CV_TERMCRIT_ITER,10,2),
 &track_compRed, &track_boxRed );
 本系統(tǒng)最大的特色在于用雙手手指更形象的操作代替原來鼠標(biāo)單一的左右鍵點擊,并能完成部分鼠標(biāo)單擊無法完成的多點觸控功能[6]。本系統(tǒng)使用OpenCV技術(shù),通過對顏色的識別跟蹤,實現(xiàn)了新型的輸入方式,讓電腦能夠讀懂人的動作。本系統(tǒng)的另一個特色是可以和電視棒、網(wǎng)絡(luò)視頻軟件結(jié)合起來。多少年來,電視機的操作設(shè)備一直是遙控器,用戶每次要對電視操作時都要找遙控器,費時費力,隨著科學(xué)技術(shù)的發(fā)展,這種方式顯得過于落后,本系統(tǒng)創(chuàng)新性的將基于顏色的手部動作識別和電視操作結(jié)合在一起,符合智能家居的概念,使得操作更加人性化。在實際測試過程中,本系統(tǒng)穩(wěn)定運行,并且效果良好。
參考文獻
[1] 黃菁.基于單目視覺的觸摸屏技術(shù)研究[D].杭州:浙江工商大學(xué),2009.
[2] RICHTER J, NASARRE C.Windows核心編程[M].北京:清華大學(xué)出版社,2009.
[3] BRADSKI G, KAEBLER A. Learning OpenCV[M].北京:清華大學(xué)出版社,2009.
[4] PROSISE J. Programing Windows with MFC Windows[M]. Microsoft Press, 2007.05.01.
[5] 郭世龍.基于Camshift算法的移動機器人視覺跟蹤系統(tǒng)[D].武漢:華中科技大學(xué),2008.
[6] 齊婷.基于視覺的多點觸摸基本技術(shù)實現(xiàn)方法[D].昆明:昆明理工大學(xué),2009.

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