![基于多攝像頭的手勢識別_第1頁](http://file4.renrendoc.com/view/c235012212ed3534f44fc2899f9d412f/c235012212ed3534f44fc2899f9d412f1.gif)
![基于多攝像頭的手勢識別_第2頁](http://file4.renrendoc.com/view/c235012212ed3534f44fc2899f9d412f/c235012212ed3534f44fc2899f9d412f2.gif)
![基于多攝像頭的手勢識別_第3頁](http://file4.renrendoc.com/view/c235012212ed3534f44fc2899f9d412f/c235012212ed3534f44fc2899f9d412f3.gif)
![基于多攝像頭的手勢識別_第4頁](http://file4.renrendoc.com/view/c235012212ed3534f44fc2899f9d412f/c235012212ed3534f44fc2899f9d412f4.gif)
![基于多攝像頭的手勢識別_第5頁](http://file4.renrendoc.com/view/c235012212ed3534f44fc2899f9d412f/c235012212ed3534f44fc2899f9d412f5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
基于多攝像頭的手勢識別技術(shù)研究1.研究背景22.手勢識別概述2手勢識別的概念2手勢識別流程33.手勢建模44.手勢檢測與跟蹤45.手勢特征提取5靜態(tài)手勢特征5動態(tài)手勢特征7手勢識別8靜態(tài)手勢識別8動態(tài)手勢識別9基于多攝像頭的手勢識別12G-Sense系統(tǒng)的手勢詞匯設(shè)計13G--Sense手勢識別應(yīng)用13G-Sense應(yīng)用背景下的手勢設(shè)計14動態(tài)手勢的定義15Sense手勢識別系統(tǒng)設(shè)計與實(shí)現(xiàn)15G-Sense系統(tǒng)框架與功能16G-Sense系統(tǒng)的詳細(xì)設(shè)計171.研究背景隨著計算機(jī)硬件與軟件技術(shù)的發(fā)展,人機(jī)交互技術(shù)由傳統(tǒng)的鼠標(biāo)鍵盤時代發(fā)展到了以語音輸入、動作識別等技術(shù)為代表的自然交互時代n1。特別是視覺計算技術(shù)的發(fā)展,使計算機(jī)獲得了初步視覺感知的能力,能“看懂”用戶的動作。其中手勢識別作為一種直觀的、自然的輸入方式,把人們從傳統(tǒng)接觸性的輸入裝置中解放出來,可以以一種更自然的方式與計算機(jī)交互,使計算機(jī)界面變得更加易‘引。手勢主要分為靜態(tài)手勢和動態(tài)手勢兩種,動態(tài)手勢可以看作是連續(xù)的靜態(tài)手勢序列。動態(tài)手勢具有豐富和直觀的表達(dá)能力,與靜態(tài)手勢結(jié)合在一起,能創(chuàng)造出更豐富的語義。利用動態(tài)手勢識別構(gòu)建新型的交互界面,是新一代的人機(jī)交互界面對輸入方式自然性的要求,可以彌補(bǔ)傳統(tǒng)交互方式的不足?;谝曈X和手勢識別研究正處于蓬勃發(fā)展的階段,仍存著的許多值得研究的問題。研究基于視覺的動態(tài)手勢識別對于構(gòu)建更加好友的人機(jī)交互界面很有意義。本文研究的是基于多攝像頭的動態(tài)手勢識別方法,利用兩個正交放置的攝像頭來獲取動態(tài)手勢的三維運(yùn)動信息,以支持三維動作的識別。它是基于兩個應(yīng)用背景的應(yīng)用研究:其中一個是利用手勢控制的照片瀏覽,另一個是三維動作感應(yīng)的拳擊小游戲。作為一個應(yīng)用研究,在研究的過程中需要解決手勢檢測、動態(tài)手勢跟蹤中的于臉遮擋、多攝像頭協(xié)同工作和手勢特征提取、動態(tài)手勢識別等一系問題。手勢識別概述2.1手勢識別的概念手勢是姿勢的一個子集,姿勢這個概念沒有精確的定義。一般認(rèn)為,手勢概念經(jīng)過人的于轉(zhuǎn)化為的于勢動作,觀察者看到的是于勢動作的圖像雎1。手勢的產(chǎn)生過程如圖2-1所示。圖2-1手勢的產(chǎn)生過程手勢識別的過程則找一個從圖像V到概念動作G的變換而,如圖2-2所示。圖2-2手勢識別的過程2.2手勢識別流程手勢識別流程包手勢圖像獲取、手勢分割、手勢特征提取、手勢識別四大部分嘲,如圖2-3所示。圖2-3手勢識別流程手勢建模在手勢識別框架中,手勢模型是一個最基本的部分。根據(jù)不同的應(yīng)用背景,于勢識別采用的模型會有不同,而對于不同的手勢模型,采用的手勢檢測與跟蹤算法、特征提取、識別技術(shù)也會有差別。手勢建模主要分為基于表觀的手勢模型與基于三維的于勢模型?;诒碛^的手勢建模是一種二維建模,從二維平面觀察得到的平面圖像信息描述于的特征?;诒碛^的手勢模型主要包括基于顏色的模型與基于輪廓的模型兩種?;陬伾氖謩菽P褪前咽謩輬D像看作像素顏色的集合,通過提取手部的顏色的特征來描述手勢。基于顏色的手勢模型的常用特征是顏色直方圖?;谳喞氖謩菽P褪前咽挚醋饕粋€輪廓,通過提取手部圖像中手的輪廓的幾何特征來描述手勢。手勢檢測與跟蹤手勢檢測與跟蹤是手勢識別處理流程中最前端的處理部分,它處理從攝像頭獲取到手勢圖像(序列>,從中檢測和分割手勢對象。如果是動態(tài)手勢識別,還要對手進(jìn)行跟蹤?;谶\(yùn)動信息的方法:基于運(yùn)動信息的方法是假設(shè)在視頻中只有手是運(yùn)動物體。其中一種方法是背景減法。它要求背景靜止不變,把視頻中的每幀與背景相減,背景相同的部分變?yōu)榱?,不同的部分就認(rèn)為是運(yùn)動的物體,即手。0區(qū)刃=4(蒼刃-厶g(熱M另一種方法是差幀法,通過當(dāng)前幀與前一幀(前若干幀>相減,檢測出兩幀之間的差異來確定手部運(yùn)動的起始區(qū)域。但是一般相鄰幀之間的手勢運(yùn)動幅度不大,差幀法只能檢測出運(yùn)動的輪廓,一般要以比較低的幀采樣率或者隔若干幀做減法才能正確檢測與分割運(yùn)動的手部。D、(x,y)=A(x,^)-Z&g(x,y)手勢特征提取手勢特征的提取是與手勢模型密切相關(guān)的,不同的手勢模型會有不同有于勢特征。例如基于模型的手勢模型有手的每個關(guān)節(jié)的狀態(tài)特征,基于表觀模型的手勢特征是輪廓特征、位置特征等。靜態(tài)手勢識別和動態(tài)于勢識別的特征也不同,靜態(tài)手勢的特征只是描述的手的靜態(tài)信息,例如輪廓、面積等。動態(tài)手勢特征是連續(xù)的靜態(tài)特征序列。5.1靜態(tài)手勢特征常用的靜態(tài)手勢特征有輪廓、位置、面積、手指分布等。手的輪廓特征可以連續(xù)的點(diǎn)來表示。通過邊緣檢測算法,把圖像區(qū)域的邊緣檢測出來,經(jīng)過進(jìn)行平滑和多邊形擬合算法處理,得到多邊形的頂點(diǎn)的序列。在提取于的輪廓比較困難的情況下,或者為了提高計算效率,也可以通過計算輪廓的特征作為手勢特征。例如A.Wilkowski通過以手部圖像的外包矩形的邊為坐標(biāo)軸進(jìn)行投影計算得到輪廓的直方圖作為手的輪廓的特征,如圖5-1所示。圖5-1手的輪廓特征手的位置特征是指手掌的質(zhì)心位置,質(zhì)心位置可以按公式5-1、公式5-2、公式5-3、公式5-4計算。手的面積特征通過計算手的輪廓的多邊形面積即可。對于二維圖像,質(zhì)心是通過計算零階距和x、Y的一階距得到的。假設(shè)二值化之后的圖像為I(x,Y>,質(zhì)心(Xc,Yc>的計算公式如下:15-1-I5-25-3_i._i5-4于指特征的提取是一個關(guān)鍵的技術(shù)。經(jīng)典的手指提取方法是利用手指距離手掌中心最遠(yuǎn)這個規(guī)律,把于的輪廓點(diǎn)的坐標(biāo)轉(zhuǎn)換成為以手掌中心位置為原點(diǎn)的極坐標(biāo)系,然后分析輪廓曲線中的局部最大值(如圖5-2所示>,最后通過映射規(guī)則把點(diǎn)的位置映射為手指。
圖5-2輪廓曲線到極坐標(biāo)的轉(zhuǎn)換圖圖5-2輪廓曲線到極坐標(biāo)的轉(zhuǎn)換圖5-3局部極值法定位手指5.2動態(tài)手勢特征在動態(tài)于勢中,因?yàn)橛谠诳臻g和時間兩個維度是都會發(fā)生變化,所以動態(tài)手勢特征包含于的位置變化和于的形狀變化。手的位置變化可以通過計算手勢的當(dāng)前位置與上一個位置之間和位置偏移量>,則可以計算出運(yùn)動方向的得到。假設(shè)手的運(yùn)動前后位置為(_|>和(_I>,則可以計算出運(yùn)動方向的90°(a)(b)圖:5-3手勢運(yùn)動方向編碼通過計算于勢運(yùn)動軌跡相鄰點(diǎn)之間位移,得到運(yùn)動的方向編碼,組成手勢運(yùn)動向量特征。手的形狀變化也是一種動態(tài)手勢特征,這種特征可以簡單地由一系列靜態(tài)手勢特征組成。在有些于勢識別研究中,同時考慮手的位置與形狀兩種變化,同時計算上面的兩種特征。6手勢識別6.1靜態(tài)手勢識別靜態(tài)手勢識別的方法有很多,例如基于規(guī)則的方法、模板匹配的方法、基于機(jī)器學(xué)習(xí)的方法等?;谝?guī)則的識別方法基于規(guī)則的識別方法是最簡單的一種識別方法。它是手工地為手勢之間建立關(guān)系,定義識別規(guī)則睜引。對于輸入的手勢特征,按照這些規(guī)則判別即可?;谝?guī)則的方法效率很高,缺點(diǎn)是這些規(guī)則需要預(yù)先硬編碼在規(guī)則庫中?;谀0迤ヅ涞姆椒ɑ谀0迤ヅ涞姆椒ㄊ遣杉o態(tài)手勢作為樣本,提取特征作為模板特征庫。在識別時把輸入的手勢特征與模板庫的模板進(jìn)行匹配。其中比較經(jīng)典的使用彈性圖匹配(ElasticGraphMatching>方法。在基于模板的識別方法中比較重要的是定義特征的距離函數(shù)。距離函數(shù)需要根據(jù)特征的特點(diǎn)來選取的。張國良、吳江琴、高文等人采用改進(jìn)的Hausdorff距離來進(jìn)行手勢識別。Hausdorff距離是用來度量兩個集合之間的相似度,它的數(shù)學(xué)定義如下:A和B是兩個集合,元素個數(shù)分別是n和m。H{A9B)=max(鳳凡拭^,5)-maxmin||a—fr||h(B,A)=maxmin||/r-a||族占a^A其中_|表示兀素a和b的距離?;跈C(jī)器學(xué)習(xí)的方法靜態(tài)手勢識別中,基于機(jī)器學(xué)習(xí)的識別方法比較常用的是人工神經(jīng)網(wǎng)絡(luò)(ANN,ArtificialNeuralNetwork〉、支持向量機(jī)(SVM,SupportVectorMachine〉等。在提取到于勢特征之后,直接或者降維之后使用分類器進(jìn)行分類?;跈C(jī)器學(xué)習(xí)的方法需要預(yù)先使用學(xué)習(xí)樣本來訓(xùn)練分類器。6.2動態(tài)手勢識別動態(tài)手勢是具有時間和空間變化,手勢特征量化編碼之后成為時間上的符號序列。目前有許多方法可以對時間序列數(shù)據(jù)進(jìn)行分類。直方圖(Histogram〉圖像處理領(lǐng)域最基本的直方圖技術(shù)在某些情況下用于動態(tài)手勢識別是非常有效的。直方圖能反映手勢序列的整體特征。雖然它丟失了序列的時間特征,但是在一些手勢種類少而且運(yùn)動軌跡區(qū)別明顯的手勢識別應(yīng)用,不失為一種好選擇,它的識別處理效率很高。例如H.Jet和J.Kim使用直方圖對于勢運(yùn)動方向向量進(jìn)行統(tǒng)計,識別音樂指揮中的四種手勢。動態(tài)時間規(guī)整(DTlr,DynamicTimeWarping〉經(jīng)典方法動態(tài)時間規(guī)整(DTW,DynamicTimeWarping〉在語音識別領(lǐng)域應(yīng)用得很成功。DTW本質(zhì)上是一種動態(tài)規(guī)劃算法。手勢識別與語音識別有許多相似之處,也可以使用DTW算法進(jìn)行動態(tài)手勢識別。有限狀態(tài)機(jī)(FSM,F(xiàn)initeStateMachine〉有限狀態(tài)機(jī)(FSM,F(xiàn)initeStateMachine>可以用于動態(tài)手勢識別。有限狀態(tài)機(jī)非常適合處理有語言。動態(tài)手勢也是一種語言,在為它定義文法之后,有限狀態(tài)機(jī)將是一個有力的處理工具。例如P.YHong與M.Turk利用有限狀態(tài)機(jī)實(shí)現(xiàn)了一個實(shí)時的動態(tài)手勢識別系統(tǒng)瞳引。隱馬爾可夫模型(刪,HiddenMarkovModel〉隱馬爾可夫模型洲是從馬爾可夫(Markov>鏈的基礎(chǔ)上發(fā)展的。馬爾可夫鏈?zhǔn)且粋€隨機(jī)過程,而HMM是一個雙重隨機(jī)的過程,其中的狀態(tài)轉(zhuǎn)移和觀察符號都是隨機(jī)過程。馬爾可夫鏈中觀察值與狀態(tài)是——對應(yīng)的,HMM中狀態(tài)轉(zhuǎn)移與觀察值不是對應(yīng)的,不能直接觀察到狀態(tài)轉(zhuǎn)移,因此稱為隱馬爾可犬模型。HMM是一種概率統(tǒng)計模型,對序列的長短變化適應(yīng)性比較好,適用于動態(tài)時間序列數(shù)據(jù)的識別。HMM已經(jīng)在語音識別領(lǐng)域取得了很大的成功,在手勢識別也得到成功的應(yīng)用。在現(xiàn)有的動態(tài)手勢識別研究中,HMM的應(yīng)用最多。HMM分為全連接型、左右型、帶限制的左右型三類,如圖2-4所示。左右型與全連接形的區(qū)別是它在轉(zhuǎn)移概率矩陣增加了一個約束,每個狀態(tài)只能轉(zhuǎn)移到自己或者它后面的狀態(tài)。帶限制的左右型HMM是限制每個狀態(tài)只能轉(zhuǎn)移到自身或者它的下一個狀態(tài)。在語音識別和手勢識別中,通常是使用帶
限制的左右型洲。(a)全連接型(昉左右型(c)帶限制的左右型HMM的定義HMM是一個三元組名=(—>。(1>狀態(tài)的集合s={廠..,」>,其中N為狀態(tài)數(shù),用仍表示t時刻的狀態(tài)。狀態(tài)之間的轉(zhuǎn)移是根據(jù)轉(zhuǎn)移概率矩陣A決定的。(2>觀察符號的集合0={」...,」>,其中M是集中的符號數(shù)量。每個狀態(tài)輸出0是根據(jù)觀察概率矩陣B決定的。號,然后根據(jù)狀態(tài)轉(zhuǎn)移矩陣,轉(zhuǎn)移到新的狀態(tài)。一個具有N個狀態(tài)數(shù)的HMM在一共有」種不同的長度為T狀態(tài)轉(zhuǎn)移序列,它的狀態(tài)空間很大的。HMM具有1<-1<-較強(qiáng)的學(xué)習(xí)能力。Forward評估算法終止:7基于終止:7基于先是手勢詞匯設(shè)計,介紹了在本文研究應(yīng)用背景下的靜態(tài)和動態(tài)手勢設(shè)計。然后是介紹一種基于采樣的膚色模型參數(shù)初始化方法,通過對采集于部圖像樣本,自動初始化手部膚色模型、手部面積和臉部面積參數(shù)。在手勢跟蹤部分,描述了本文提出的基于質(zhì)心估計手臉遮擋下的手勢跟蹤方法。在手勢特征提取部分,使用經(jīng)典的基于輪廓的手指特征提取方法,并且提取運(yùn)動向量作為動態(tài)手勢特征。最后是手勢識別部分,靜態(tài)手勢識別采用了基于正交攝像頭協(xié)作的手勢識別策略,動態(tài)手勢識別則使用一種結(jié)合兩套獨(dú)立的隱馬爾可夫模型的方法。本文手勢識別的整體流程圖如圖7-1所示。圖7-1手勢識別整體流程7.1G-Sense系統(tǒng)的手勢詞匯設(shè)計手勢設(shè)計是屬于交互設(shè)計問題。交互手勢的設(shè)計主要有四條基本原則,分別是唯一性、自然性、易用性和簡單性。手勢根據(jù)具體應(yīng)用場景而設(shè)計的,不同應(yīng)用場景對于勢要求差別很大。譬如有些需要的是二維平面的手勢動作,有些需要的是三維空間中的于勢動作(如三維虛擬現(xiàn)實(shí)、三維動作游戲等>。靜態(tài)手勢和動態(tài)于勢也有各自適用的應(yīng)用場景。7.2G--Sense手勢識別應(yīng)用本文研究的基于多攝像頭的手勢識別系統(tǒng)(G-Sense>是一個使用兩個攝像頭作為傳感器,從兩個視角實(shí)時捕捉用戶的手勢動作視頻,作為手勢識別系統(tǒng)的輸入。在對捕獲到的于勢進(jìn)行實(shí)時的檢測和跟蹤、手勢特征提取之后,經(jīng)過手勢識別部分的識別得到手勢信息,最后把這些手勢信息映射為具體應(yīng)用中的命令,充當(dāng)著一種輸入設(shè)備的角色。本文的基于兩個應(yīng)用情景來研究手勢識別系統(tǒng),分別是照片瀏覽與拳擊小游戲。在照片瀏覽應(yīng)用中,通過三維手勢作為輸入,實(shí)現(xiàn)常見的瀏覽操作功能,例如“放大照片"、“縮小照片"、“上一張照片”、“下一張照片”、“第一張照片”、“最后一張照片”、“照片順時針旋轉(zhuǎn)90度”、“照片逆時針旋轉(zhuǎn)90度”等。在照片瀏覽應(yīng)用中,加入了兩個有趣的動作:由后往前伸于的動作,把照片“推”遠(yuǎn),縮小照片;由前往后縮予的動作,把照片“拉"回來,放大照片。在拳擊游戲應(yīng)用中,有3種標(biāo)準(zhǔn)的三維拳擊動作,包括“左勾拳”、“右勾拳”、“平直拳”。7.3G-Sense應(yīng)用背景下的手勢設(shè)計本文研究的手勢識別系統(tǒng)有兩個功能模式,一個定位模式,另一個是命令控制模式。本文包含4種靜態(tài)于勢,11種動態(tài)手勢。靜態(tài)手勢的定義圖7-2是本文定義的4種靜態(tài)手勢。其他靜態(tài)手勢被看作無含義的手勢。(a)騷起食指,衣示定位模武(b)握華,衣示命令模式伸出拇桁與翕指,農(nóng)示鼠標(biāo)左鍵fd)五指張開,表示鼠標(biāo)右鍵(a)騷起食指,衣示定位模武(b)握華,衣示命令模式伸出拇桁與翕指,農(nóng)示鼠標(biāo)左鍵fd)五指張開,表示鼠標(biāo)右鍵圖7-24種手的靜態(tài)模式7.3動態(tài)手勢的定義表7-1動態(tài)手勢的定義手勢序號動作描述動作意文1從左往右,從右返回左。后一張照片2從右往左,從左返回右。前一張照片3順時針向上畫正立三角形最后一張照片4逆時針向上畫止立一?角形最前一張照片5順時針向下畫圓形照片順時針旋轉(zhuǎn)90度6逆時針向下畫圓形照片逆時針旋轉(zhuǎn)90度7向正前方伸手,揮向右誼方,返回縮小照片8向右刖方伸手,揮至1E前方,返回放大照片9向正前方伸手平直拳10從左F后方往右上刖方揮乎左勾拳11從右下后方往左上前方揮手右勾拳8Sense手勢識別系統(tǒng)設(shè)計與實(shí)現(xiàn)基于特定的應(yīng)用背景,本文為了驗(yàn)證提出的手勢識別方法的有效性,實(shí)現(xiàn)了一個手勢識別系統(tǒng)G-Sense。G-
Sense是一個具有手勢識別功能的實(shí)時人機(jī)交互界面軟件,可以看作是一種支持手勢動作的輸入設(shè)備。它提供光標(biāo)定位與手勢動作識別兩種功能。8.2G-Sense系統(tǒng)框架與功能G-Sense于勢識別系統(tǒng)從兩個攝頭中捕捉用戶的手勢動作視頻,經(jīng)過手勢檢測與跟蹤、于勢特征提取、基于HMM的手勢識別等處理流程,把用戶的手勢動作映射到具體的操作指令。它的系統(tǒng)框架圖如圖所示。應(yīng)用軟件(照片沏址軟件*華擊小游戲)應(yīng)用軟件(照片沏址軟件*華擊小游戲)圖8-1G-Sense手勢識別系統(tǒng)圖8-2G-Sense手勢識別系統(tǒng)組成系統(tǒng)的輸入是兩個攝像頭的手勢視頻,輸出是識別出的手勢位置和手勢命令,如圖所示。其中的手勢位置是用于轉(zhuǎn)化為系統(tǒng)光標(biāo)位置,手勢動作映射為應(yīng)用軟件的鍵盤快捷鍵。通過把手勢輸入轉(zhuǎn)化為系統(tǒng)的標(biāo)準(zhǔn)設(shè)備的輸入,這種映射處理的優(yōu)點(diǎn)是可以直接兼容現(xiàn)有的第三方應(yīng)用軟件。G-Sense系統(tǒng)使用兩個普通的攝像頭,型號為Unify(環(huán)宇飛揚(yáng)>3900+。攝像頭的視頻質(zhì)量越好噪聲越少,處理就會變得越精確。專業(yè)攝像頭的成像質(zhì)量遠(yuǎn)超過本文使用的這種普通的攝像頭。本文的研究從的實(shí)用性角度考慮.采用普通的攝像頭進(jìn)行實(shí)驗(yàn)。因?yàn)橛布O(shè)備的限制,處理難度會增加。圖8-3是在G-Sense手勢識別系統(tǒng)的硬件裝置圖。系統(tǒng)使用了兩個攝像頭,其中一個安裝在前方屏幕上方,從前方觀察手勢動作.另一個安裝在底部,從下方觀察手勢動作。底部攝像頭可以根據(jù)具體環(huán)境條件,選擇安裝在頂部。用戶站立在屏幕前方,正對前置攝像頭與底置攝像頭,與前置攝像頭距離大約1.5M。底部攝像頭位置調(diào)整為用戶的手伸出時的位置的下方即可。圖8-3基于取攝像頭的G-Sense手勢識別系統(tǒng)碗件裝置8.3G-Sense系統(tǒng)的詳細(xì)設(shè)計編程實(shí)現(xiàn)環(huán)境因?yàn)閷?shí)時的動態(tài)手勢識別對處理效率要求高.所以本文的G-Sense系統(tǒng)選用C++進(jìn)行編程實(shí)現(xiàn),界面部分使用MFC。攝像頭視頻的實(shí)時采集采用了DirectShow。DirectShow是微軟DirectX開發(fā)工具中的一部分,合適于視頻編程處理。22圖像處理部分使用了視覺計算中開源的OpenC\庫(openCV0>,主要是使用了它的圖像數(shù)據(jù)結(jié)構(gòu)和一些常用見的圖像函數(shù),例如讀寫圖像、高斯平滑、圖像閾值二值化、查找輪廓等。系統(tǒng)結(jié)構(gòu)因?yàn)橛鑴葑R別處理具有典型的“管道一過濾器”型(PipesandFilters〉體系結(jié)構(gòu)風(fēng)格,因此在實(shí)現(xiàn)把手勢檢測跟蹤、手勢特征提取、靜態(tài)予勢識別、動態(tài)手勢識別等處理過程封裝成類,把前一階段的處理輸出當(dāng)作后面的處理階段的輸入。最后在得到于勢識別的結(jié)果之后,把手勢信息映射為相應(yīng)鼠標(biāo)和鍵盤事件。實(shí)時視頻處理為了進(jìn)行實(shí)時的視頻捕獲,在編程實(shí)現(xiàn)中不能使用MFC中的OnTimer事件進(jìn)行處理,因?yàn)樗挠嫊r精度是有幾十毫秒。系統(tǒng)中使用MFC中的媒體計時器,以獲得1毫秒的計時精度,以支持根據(jù)用戶自定義的視頻幀速率進(jìn)行捕獲。在初始化計時器時,為其指定回調(diào)函數(shù)。在回調(diào)函數(shù)中,不直進(jìn)行視頻處理,而向主窗口發(fā)送一條自定義消息,在消息響應(yīng)函數(shù)實(shí)現(xiàn)對視頻的捕獲和手勢識別處理。因?yàn)槿绻诨卣{(diào)函數(shù)中直接處理,如果在系統(tǒng)繁忙的時候,會有大量的函數(shù)調(diào)用無法及時完成而導(dǎo)致棧溢出。手部圖像采樣功能本文通過于部圖像采樣手部采樣對膚色模型參數(shù)、手部和臉部面積參數(shù)初始化,以提高系統(tǒng)的適應(yīng)性。系統(tǒng)默認(rèn)是使用常用的膚色參數(shù)默認(rèn)值。在默認(rèn)的膚色參數(shù)不適用的時候,用戶可以啟用膚色采樣校正功能,以使手勢檢測和跟蹤正常工作。采樣過程的設(shè)計如下:系統(tǒng)會在相應(yīng)的攝像頭畫面中顯示一個矩形框,用戶只需要把手移動到該矩形框,使它完全位于手掌的范圍內(nèi)。采樣使用了延時開始的策略。用戶可以設(shè)定延遲采樣開始的時間(默認(rèn)3秒之后>。當(dāng)用戶按下了采樣按鈕之后,一個紅色的矩形框閃爍出現(xiàn)在攝像頭視頻預(yù)覽框中,表示處于準(zhǔn)備采樣階段,到了采樣開始時間之后,矩形框變?yōu)榫G色,表示正在采集圖像樣本02.02.03.04.05.06.07.08.09.10.11.12.13.14.15.16.17.18.19.20.,最后矩形框消失,表示采樣過程完成,。在得到采樣圖像之后,對圖像進(jìn)行統(tǒng)計,自動設(shè)置膚色模型的參數(shù)。附錄:1.程序重要部分代碼我們先來明確一些概念,首先,Android的事件處理機(jī)制是基于Listener〈監(jiān)聽器)來實(shí)現(xiàn)的,比我們今天所說的觸摸屏相關(guān)的事件,就是通過onTouchListener。其次,所有View的子類都可以通過setOnTouchListener(〉、setOnKeyListener(〉等方法來添加對某一類事件的監(jiān)聽器。第三,Listener—般會以Interface〈接口)的方式來提供,其中包含一個或多個abstract〈抽象)方法,我們需要實(shí)現(xiàn)這些方法來完成onTouch(〉、onKey(>等等的操作。這樣,當(dāng)我們給某個view設(shè)置了事件Listener,并實(shí)現(xiàn)了其中的抽象方法以后,程序便可以在特定的事件被dispatch到該view的時候,通過callbakc函數(shù)給予適當(dāng)?shù)捻憫?yīng)。看一個簡單的例子,就用最簡單的TextView來說明〈事實(shí)上和ADT中生成的skeleton沒有什么區(qū)別)。01.publicclassGestureTestextendsActivityimplementsOnTouchListener{@OverrideprotectedvoidonCreate(BundlesavedInstanceState〉{super.onCreate(savedInstanceState〉。setContentView(R.layout.main〉。//initTextViewTextViewtv=(TextView〉findViewById(R.id.page〉。//setOnTouchListeneronTextViewtv.setOnTouchListener(this〉。//showsometexttv.setText(R.string.text〉。}@OverridepublicbooleanonTouch(Viewv,MotionEventevent〉{Toast.makeText(this,"onTouch",Toast.LENGTH_SHORT〉.show(〉。returnfalse。}我們給TextView的實(shí)例tv設(shè)定了一個onTouchListener,因?yàn)镚estureTest類實(shí)現(xiàn)了OnTouchListener接口,所以簡單的給一個this作為參數(shù)即可。onTouch方法則是實(shí)現(xiàn)了OnTouchListener中的抽象方法,我們只要在這里添加邏輯代碼即可在用戶觸摸屏幕時做出響應(yīng),就像我們這里所做的——打出一個提示信息。這里,我們可以通過MotionEvent的getAction(〉方法來獲取Touch事件的類型,包括ACTI0N_D0WN,ACTI0N_M0VE,ACTI0N_UP,和ACTION_CANCEL。ACTI0N_D0WN是指按下觸摸屏,ACTI0N_M0VE是指按下觸摸屏后移動受力點(diǎn),ACTI0N_UP則是指松開觸摸屏,ACTION_CANCEL不會由用戶直接觸發(fā)〈所以不在今天的討論范圍,請參考ViewGroup.onlnterceptTouchEvent(MotionEvent〉)。借助對于用戶不同操作的判斷,結(jié)合getRawX(〉、getRawY(〉、getX(>和getY(>等方法來獲取坐標(biāo)后,我們可以實(shí)現(xiàn)諸如拖動某一個按鈕,拖動滾動條等功能。待機(jī)可以看看MotionEvent類的文檔,另外也可以看考TouchPaint例子。回到今天所要說的重點(diǎn),當(dāng)我們捕捉到Touch操作的時候,如何識別出用戶的Gesture?這里我們需要GestureDetector.0nGestureListener接口的幫助,于是我們的GestureTest類就變成了這個樣子。publicclassGestureTestextendsActivityimplements0nTouchListener,0nGestureListener{34.}隨后,在onTouch(>方法中,我們調(diào)用GestureDetector的onTouchEvent(>方法,將捕捉到的MotionEvent交給GestureDetector來分析是否有合適的callback函數(shù)來處理用戶的手勢。@0verridepublicbooleanonTouch(Viewv,MotionEventevent〉{//0nGestureListenerwillanalyzesthegivenmotioneventreturnmGestureDetector.onTouchEvent(event〉。}接下來,我們實(shí)現(xiàn)了以下6個抽象方法,其中最有用的當(dāng)然是onFling(〉、onScroll(>和onLongPress(〉了。我已經(jīng)把每一個方法代表的手勢的意思寫在了注釋里,大家看一下就明白了。01.//用戶輕觸觸摸屏,由1個MotionEventACTI0N_D0WN觸發(fā)02.@0verride03.publicbooleanonDown(MotionEvente〉{04.//T0D0Auto-generatedmethodstub05.Toast.makeText(this,"onDown",Toast.LENGTH_SH0RT〉.show(〉。06.returnfalse。07.08.
09.//用戶輕觸觸摸屏,尚未松開或拖動,由一個1個MotionEventACTION_DOWN觸發(fā)10.11.12.13.14.10.11.12.13.14.15.16.17.18.19.20.@OverridepublicvoidonShowPress(MotionEvente>{//TODOAuto-generatedmethodstub}//用戶〈輕觸觸摸屏后)松開,由一個1個MotionEventACTION_UP觸發(fā)@OverridepublicbooleanonSingleTapUp(MotionEvente>{//TODOAuto-generatedmethodstubreturnfalse。21.}22.//用戶按下觸摸屏、快速移動后松開,由1個MotionEventACTION_DOWN,多個ACTION_MOVE,1個ACTION_UP觸發(fā)@OverridepublicbooleanonFling(MotionEvente1,MotionEvente2,floatvelocityX,floatvelocityY>{//TODOAuto-generatedmethodstubreturnfalse。}30.//用戶長按觸摸屏,由多個MotionEventACTION_DOWN觸發(fā)@OverridepublicvoidonLongPress(MotionEvente>{//TODOAuto-generatedmethodstub35.}37.//用戶按下觸摸屏,并拖動,由1個MotionEventACTI0N_D0WN,多個ACTI0N_M0VE觸發(fā)@OverridepublicbooleanonScroll(MotionEvente1,MotionEvente2,floatdistanceX,floatdistanceY>{//TODOAuto-generatedmethodstubreturnfalse。}我們來試著做一個onFling(〉事件的處理吧,onFling(〉方法中每一個參數(shù)的意義我寫在注釋中了,需要注意的是Fling事件的處理代碼中,除了第一個觸發(fā)Fling的ACTION_DOWN和最后一個ACTION_MOVE中包含的坐標(biāo)等信息外,我們還可以根據(jù)用戶在X軸或者Y軸
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年企業(yè)短期工安全管理協(xié)議指南
- 2025年直流風(fēng)扇項(xiàng)目規(guī)劃申請報告
- 2025年度電力供需雙方策劃協(xié)議書
- 2025年公司辦公地點(diǎn)租賃協(xié)議范本
- 2025年度個人借款與擔(dān)保協(xié)議
- 2025年建筑行業(yè)工人雇傭策劃合同樣本
- 2025年耗盡關(guān)機(jī)傳感器項(xiàng)目規(guī)劃申請報告模范
- 2025年城市交通安全策劃與事故應(yīng)急處理協(xié)議
- 2025年直流斬波調(diào)壓牽引裝置項(xiàng)目規(guī)劃申請報告
- 2025年郵政專用機(jī)械及器材項(xiàng)目申請報告模范
- 2025勞動合同法重點(diǎn)法條導(dǎo)讀附案例詳解
- 2025年全國科技活動周科普知識競賽試題庫及答案
- 2024年全國中學(xué)生生物學(xué)聯(lián)賽試題及答案詳解
- 工廠生產(chǎn)區(qū)清潔流程及安全規(guī)范
- 化學(xué)丨百師聯(lián)盟2025屆高三1月一輪復(fù)習(xí)聯(lián)考(五)化學(xué)試卷及答案
- 2024年全國職業(yè)院校技能大賽中職(酒店服務(wù)賽項(xiàng))備賽試題庫(500題)
- 工程建設(shè)項(xiàng)目培訓(xùn)
- 2025年1月浙江省高考英語試卷真題(含答案)
- 青海省西寧市市級名校2025屆中考生物全真模擬試題含解析
- 鐵路路基工程施工組織設(shè)計方案
- 小學(xué)班會-交通安全伴我行(共25張課件)
評論
0/150
提交評論