基于單目手勢(shì)識(shí)別交互系統(tǒng) 畢業(yè)論文_第1頁(yè)
基于單目手勢(shì)識(shí)別交互系統(tǒng) 畢業(yè)論文_第2頁(yè)
基于單目手勢(shì)識(shí)別交互系統(tǒng) 畢業(yè)論文_第3頁(yè)
基于單目手勢(shì)識(shí)別交互系統(tǒng) 畢業(yè)論文_第4頁(yè)
基于單目手勢(shì)識(shí)別交互系統(tǒng) 畢業(yè)論文_第5頁(yè)
已閱讀5頁(yè),還剩40頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

本科畢業(yè)設(shè)計(jì)(論文)基于單目手勢(shì)識(shí)別交互系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)學(xué)院機(jī)電工程學(xué)院專(zhuān)業(yè)數(shù)字媒體技術(shù)基于單目手勢(shì)識(shí)別交互系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)李林鋼機(jī)電工程學(xué)院摘要隨著計(jì)算機(jī)技術(shù)的逐漸發(fā)展,出現(xiàn)了一些符合人的習(xí)慣的人機(jī)交互技術(shù)。其中,手勢(shì)的檢測(cè)和識(shí)別技術(shù)作為一種有著自然性、簡(jiǎn)潔性和直接性的一種新型的交互方式,是這些交互技術(shù)當(dāng)中倍受重視的研究和應(yīng)用的技術(shù)之一。近幾年來(lái),已經(jīng)有相當(dāng)一部分的應(yīng)用采用了這種手勢(shì)識(shí)別的方式作為跟機(jī)器交互的手段,受到了世界各個(gè)國(guó)家的科研機(jī)構(gòu)和科技企業(yè)的重視與青睞。基于計(jì)算機(jī)視覺(jué)的手勢(shì)識(shí)別需要解決一系列的問(wèn)題。首先是要做到的是從背景中將手分割出來(lái);然后將有用的信息與冗余的信息分離開(kāi)來(lái),并將相關(guān)的手勢(shì)信息提取出來(lái);最后從相同的手勢(shì)中根據(jù)實(shí)際情況,解讀出它的特定的含義。針對(duì)這些問(wèn)題,本文討論里一種采用基于單目的特定顏色模型的背景分離方法和基于關(guān)鍵信息的手勢(shì)提取方法,用VISUALC2010和OPENCV進(jìn)行開(kāi)發(fā),實(shí)現(xiàn)在多種攝像頭下的手勢(shì)識(shí)別交互系統(tǒng),主要包括以下方面(1)針對(duì)不同攝像頭畫(huà)質(zhì)的缺陷,采用中值濾波或均值濾波然后還原細(xì)節(jié)的方法實(shí)現(xiàn)圖像較好的降噪,再用不同采樣半徑的USM銳化的方式實(shí)現(xiàn)圖像信息的強(qiáng)化。(2)根據(jù)人手和背景色相等方面的差異,采用亮度兩個(gè)顏色通道的色彩模型進(jìn)行色彩分離,并將未選擇到的陰影和高光等區(qū)域利用連續(xù)色的原理進(jìn)行進(jìn)一步的選取。(3)根據(jù)選取結(jié)果有很多干擾區(qū)域的情況,實(shí)現(xiàn)最大面積連通區(qū)域的提取算法,以排除關(guān)鍵信息提取時(shí)的干擾。(4)根據(jù)手的區(qū)域的情況和交互的自然性,采用穩(wěn)定的手的重心作為手的位置,利用近大遠(yuǎn)小的關(guān)系,采用手占攝像頭面積的大小判斷手離攝像頭的距離。(5)針對(duì)以上識(shí)別的結(jié)果,實(shí)現(xiàn)了一些常見(jiàn)的人機(jī)交互應(yīng)用,包括屏幕畫(huà)圖器、鼠標(biāo)模擬器等。關(guān)鍵詞手勢(shì)識(shí)別;VISUALC;背景消除;連通區(qū)域;關(guān)鍵信息提取ABSTRACTWITHTHEDEVELOPMENTOFCOMPUTERTECHNOLOGY,SOMEHUMANCOMPUTERINTERACTIONTECHNIQUESWHICHMEETPEOPLESHABITSAPPEARAMONGTHEM,GESTUREDETECTIONANDRECOGNITIONTECHNOLOGY,ASANEWNATURAL,SIMPLEANDDIRECTTECHNOLOGY,ISHIGHLYVALUEDINRECENTYEARS,THEREHAVEBEENCONSIDERABLEPARTOFTHEAPPLICATIONUSINGTHISGESTURERECOGNITIONAPPROACHASAMEANSOFANINTERACTIONWITHTHEMACHINE,ANDITDRAWSATTENTIONOFANDWASFAVOREDBYTHESCIENTIFICRESEARCHANDTECHNOLOGYENTERPRISESOFVARIOUSCOUNTRIESCOMPUTERVISIONBASEDGESTURERECOGNITIONNEEDSTOSOLVEASERIESOFPROBLEMSTHEFIRSTISISHOWTOSPLITTHEHANDFROMTHEBACKGROUNDTHENSEPARATETHEUSEFULINFORMATIONANDREDUNDANTONE,ANDEXTRACTTHERELEVANTINFORMATIONGESTUREFINALLY,DECIPHERTHESPECIFICMEANINGOFTHESAMEGESTUREINACCORDANCEWITHTHEACTUALSITUATIONTOSOLVETHESEPROBLEMS,THISPAPERDISCUSSESAGESTURERECOGNITIONINTERACTIVESYSTEMWITHAKINDOFBACKGROUNDSEPARATIONMETHODSBASEDONSPECIFICCOLORMODEL,ANDAKINDOFGESTUREEXTRACTIONMETHODONKEYINFORMATION,DEVELOPEDBYVISUALC2010ANDOPENCV,FITSAVARIETYOFCAMERA,WHICHINCLUDESTHEFOLLOWINGASPECTS1FORDIFFERENTQUALITYDEFECTSAMONGCAMERAS,THISSYSTEMUSESMEDIANFILTERORMEANFILTERANDRESTORESTHEDETAILMETHODTOREDUCETHEIMAGENOISECONSERVATIVELYTHENUSEDIFFERENTSAMPLINGRADIUSOFUSMSHARPENINGTOENHANCETHEIMAGEINFORMATION2ACCORDINGTOTHEDIFFERENCEOFCOLORSBETWEENBACKGROUNDANDHANDS,THISSYSTEMUSESTHEBRIGHTNESSANDTHETWOCOLORCHANNELSASACOLORMODELFORCOLORSEPARATIONTHENOTCHOSENDISTINCT,SUCHASTHESHADOWANDHIGHLIGHTAREASWILLBEFURTHERSELECTEDUSINGACONTINUOUSCOLORMETHOD3ACCORDINGTOTHERESULTSTHEREAREALOTOFINTERFERINGREGIONSOFSELECTEDAREASTHESYSTEMACHIEVESTHEMAXIMUMCONNECTEDAREAREGIONEXTRACTIONALGORITHM,WHICHEXCLUDESTHEINTERFERENCEOFTHEKEYINFORMATIONEXTRACTION4ACCORDINGTOTHEHANDREGIONOFTHECASEANDFORTHENATURALISTINTERACTIVE,THESYSTEMUSESTHESTABLEPOINTGRAVITYCENTEROFTHEHANDASTHEHANDPOSITION,ANDUSESTHESIZEOFTHEHANDTOKNOWTHEDISTANCEFROMTHEAREAWITHTHENEARFARSMALLERPRINCIPLE5ACCORDINGTOTHERESULTSABOVE,THESYSTEMACHIEVESSOMECOMMONINTERACTIVEAPPLICATIONS,INCLUDINGSCREENDRAWINGCONTROL,MOUSESIMULATOR,ETCKEYWORDSGESTURERECOGNITIONVISUALCBACKGROUNDREMOVALCONNECTEDREGIONKEYINFORMATIONEXTRACTION目錄1緒論111手勢(shì)識(shí)別交互的背景112手勢(shì)及識(shí)別方式的分類(lèi)213基于計(jì)算機(jī)視覺(jué)的手勢(shì)識(shí)別技術(shù)需要解決的問(wèn)題214本程序主要實(shí)現(xiàn)的功能32攝像頭信息的采集和預(yù)處理521OPENCV關(guān)于攝像頭操作的API522在控件中呈現(xiàn)有關(guān)攝像頭的圖像6221HDC的獲取6222將IPLIMAGE位圖渲染到控件當(dāng)中623攝像頭圖像的預(yù)處理7231圖片的縮放7232圖片的降噪8233圖片的銳化113手的區(qū)域的提取1331膚色種子的獲取13311獲取鼠標(biāo)相對(duì)圖像位置的顏色13312自定義膚色種子1432基于手與背景在一定顏色模型上的區(qū)別的初步提取1433將手的范圍擴(kuò)展到其他區(qū)域1534外部孤立點(diǎn)的消去16341獲取連通區(qū)域的面積和標(biāo)記區(qū)域ID18342最大面積和對(duì)應(yīng)區(qū)域的獲取1935內(nèi)部孤立點(diǎn)的修補(bǔ)194手的關(guān)鍵點(diǎn)的提取2141手的重心和面積的確定2142手的邊緣的提取215程序主體代碼的實(shí)現(xiàn)2351工程的環(huán)境和架構(gòu)2352主類(lèi)成員變量的定義2453程序的初始化代碼2454從輸入控件中獲得識(shí)別參數(shù)2655總體識(shí)別語(yǔ)句的實(shí)現(xiàn)286應(yīng)用設(shè)計(jì)3061屏幕畫(huà)圖的設(shè)計(jì)30611獲取CWINDOWDC30612定義和設(shè)置筆刷30613繪圖語(yǔ)句3062模擬鼠標(biāo)功能的實(shí)現(xiàn)31621手的有效偏移量的獲取32622鼠標(biāo)點(diǎn)擊功能的實(shí)現(xiàn)327手勢(shì)識(shí)別的綜合測(cè)試34結(jié)論36總結(jié)36展望與改進(jìn)36參考文獻(xiàn)38致謝391緒論11手勢(shì)識(shí)別交互的背景隨著整個(gè)社會(huì)逐步的信息化,帶給了我們一種新的交互方式人機(jī)交互HUMANCOMPUTERINTERACTION。而這一交互活動(dòng)越來(lái)越成為人們?nèi)粘I畹囊粋€(gè)重要內(nèi)容。近幾年來(lái),隨著計(jì)算機(jī)技術(shù)的逐漸發(fā)展,出現(xiàn)了一些符合人的習(xí)慣的人機(jī)交互技術(shù),如頭部跟蹤、人臉識(shí)別、表情識(shí)別、唇讀、體勢(shì)識(shí)別以及手勢(shì)識(shí)別等等1,并逐步向以人為本的方向邁進(jìn)。其中,手勢(shì)的檢測(cè)和識(shí)別技術(shù)作為一種新型的方式,是這些交互技術(shù)當(dāng)中倍受重視的研究和應(yīng)用的技術(shù)之一。手勢(shì)是一種有著自然性、簡(jiǎn)潔性和直接性的一種人機(jī)交互手段。1如果能只用人手作為計(jì)算機(jī)的輸入設(shè)備,那么我們就無(wú)需學(xué)習(xí)其他繁重的硬件設(shè)備的操作,僅需根據(jù)人們的習(xí)慣,確定一些適當(dāng)?shù)氖謩?shì),即可用簡(jiǎn)單的方式控制機(jī)器。而手勢(shì)是人的一種很常用的交流方式。像人可以用手指的方向來(lái)表示物體的位置,用揮手來(lái)表示過(guò)來(lái)或再見(jiàn),用一定的手勢(shì)表示數(shù)字等等2。近幾年來(lái),已經(jīng)有相當(dāng)一部分的應(yīng)用采用了這種手勢(shì)識(shí)別的方式作為跟機(jī)器交互的手段。受到了世界各個(gè)國(guó)家的科研機(jī)構(gòu)和科技企業(yè)的重視與青睞,如IEEE自1995年起召開(kāi)的人臉與姿勢(shì)自動(dòng)檢測(cè)年會(huì)FGIEEECONFERENCEONAUTOMATICFACEANDGESTURERECOGNITION以促進(jìn)包括手勢(shì)檢測(cè)識(shí)別技術(shù)在內(nèi)的技術(shù)交流與發(fā)展。2圖11手勢(shì)識(shí)別應(yīng)用12手勢(shì)及識(shí)別方式的分類(lèi)手勢(shì)GESTURE本身具有多義性和多樣性,由于領(lǐng)域、文化背景等的不同,對(duì)手勢(shì)的定義也會(huì)不同。這里把手勢(shì)定義為手勢(shì)是人手產(chǎn)生的各種姿勢(shì)和動(dòng)作,手勢(shì)和姿勢(shì)POSTURE的主要區(qū)別在于姿勢(shì)更為強(qiáng)調(diào)身體的總體形態(tài)而手勢(shì)更強(qiáng)調(diào)手的細(xì)節(jié)。1手勢(shì)按時(shí)間關(guān)系可分為靜態(tài)手勢(shì)指姿態(tài),又稱手形和動(dòng)態(tài)手勢(shì)指動(dòng)作,由一系列姿態(tài)組成。靜態(tài)手勢(shì)對(duì)應(yīng)時(shí)間上的一個(gè)點(diǎn),而動(dòng)態(tài)手勢(shì)對(duì)應(yīng)著一段時(shí)間內(nèi)的一條軌跡,需要使用隨時(shí)間變化的空間特征來(lái)表述3。動(dòng)態(tài)手勢(shì)具有豐富和直觀的表達(dá)能力,與靜態(tài)手勢(shì)結(jié)合在一起,能創(chuàng)造出更豐富的語(yǔ)義。按手勢(shì)目的又可以分為操控手勢(shì)和交際手勢(shì)10。在人機(jī)交互系統(tǒng)中,操控手勢(shì)的一種典型應(yīng)用就是在二維和三維的虛擬環(huán)境中來(lái)操控物體。交流手勢(shì)主要是指在自然環(huán)境中伴隨人們自然對(duì)話的自由形式手勢(shì)。手勢(shì)相對(duì)于語(yǔ)言來(lái)說(shuō)是一種表達(dá)人們想法的單獨(dú)的補(bǔ)充模式。在對(duì)話中與手勢(shì)相關(guān)聯(lián)的信息是一種語(yǔ)句的時(shí)間和空間結(jié)構(gòu),可以用機(jī)器來(lái)提取它們11。手勢(shì)的識(shí)別方式可分為利用機(jī)械裝置的識(shí)別和基于計(jì)算機(jī)視覺(jué)的識(shí)別。機(jī)械裝置,如數(shù)據(jù)手套是虛擬現(xiàn)實(shí)中重要組成部分,可以將手指的復(fù)雜的三維位置和動(dòng)作利用附著的感應(yīng)器傳到到計(jì)算機(jī)當(dāng)中去。然后可以重新呈現(xiàn)手部動(dòng)作。數(shù)據(jù)手套傳感的識(shí)別方法的技術(shù)關(guān)鍵是手套能不能將手指、手掌、手腕的彎曲真實(shí)的以數(shù)據(jù)形勢(shì)反演到系統(tǒng)數(shù)據(jù)庫(kù)中,讓系統(tǒng)根據(jù)模型對(duì)手勢(shì)進(jìn)行有效識(shí)別。由于手部軟組織和計(jì)算復(fù)雜性,數(shù)據(jù)手套的計(jì)算速度總是存在延時(shí),同時(shí)從人機(jī)交互的角度手套佩戴也十分不方便。如果多人使用還存在衛(wèi)生等問(wèn)題4,再加上這些傳感器昂貴的價(jià)格,因此數(shù)據(jù)手套等機(jī)械識(shí)別的方式在推廣上會(huì)受到很多的障礙。近些年來(lái),基于計(jì)算機(jī)視覺(jué)的識(shí)別方法提供了一種成本較低的能減少用戶限制的手勢(shì)識(shí)別的方法,這種方法也是本系統(tǒng)的主攻方向。在基于計(jì)算機(jī)視覺(jué)的識(shí)別方式中,通常的做法就是把手勢(shì)識(shí)別問(wèn)題看成模式識(shí)別問(wèn)題來(lái)對(duì)待。通過(guò)攝像頭等設(shè)備來(lái)獲取圖像或視頻,再把它們分解成特征集,然后用這些特征集與預(yù)先定義好的模式進(jìn)行匹配。13基于計(jì)算機(jī)視覺(jué)的手勢(shì)識(shí)別技術(shù)需要解決的問(wèn)題無(wú)論是利用數(shù)據(jù)手套還是用手部粘貼高亮標(biāo)簽使作為輸入設(shè)備會(huì)給使用者帶來(lái)不舒適感如出汗等,且設(shè)備價(jià)格昂貴,難以推廣。在上述研究的基礎(chǔ)上,研究者漸漸把研究的重心轉(zhuǎn)移到的不佩戴手套或不粘貼設(shè)備的自然手識(shí)別檢測(cè)技術(shù)之上,以追求使用者更舒適的體驗(yàn),其中從計(jì)算機(jī)視覺(jué)的研究方式入手是當(dāng)前比較主流的研究方向,然而實(shí)現(xiàn)起來(lái)難度更大。首先是要做到的是從背景中將手分割出來(lái),通常會(huì)用膚色分割的方法基于皮膚的色調(diào)將不同于周?chē)尘笆值膮^(qū)域分離出來(lái)但是會(huì)受到光線等因素干擾,分離出手后需要用合適的模型對(duì)手的動(dòng)作建模。之后從模型中估算出參數(shù),根據(jù)估算出的參數(shù)對(duì)手勢(shì)進(jìn)行分類(lèi),得出結(jié)論。由于在數(shù)據(jù)采集時(shí)容易受到背景干擾,往往要求背景顏色和手的顏色有較好的區(qū)分度。4其次人體由多個(gè)部分組成,其中手指往往包含豐富的信息,而頭和手臂所以及人手本身因光滑而產(chǎn)生的大量陰影等信息則大多為冗余信息,故如何將有用的信息與冗余的信息分離也是提高手勢(shì)識(shí)別能力的關(guān)鍵。再次,人手是彈性物體,同樣的手勢(shì)的表現(xiàn)效果可能差別很大5,并且同樣的用戶者要重復(fù)做出完全相同的手勢(shì)也是不可能的,如何降低甚至消除這個(gè)因素的影響對(duì)整個(gè)識(shí)別的準(zhǔn)確率也有一定影響。最后,手勢(shì)往往具有復(fù)雜、多重的含義,單一的方法很難準(zhǔn)確地解讀人手的具體內(nèi)涵進(jìn)而實(shí)現(xiàn)最終的識(shí)別,故需要綜合多種方法。6針對(duì)上面提到的多種難題,不同的研究和開(kāi)發(fā)人員提出了許多種不一樣的方案。綜合以上,本文將提出一種能適應(yīng)各種攝像頭的,能抵抗一定干擾信息的一種基于計(jì)算機(jī)視覺(jué)的進(jìn)行手勢(shì)識(shí)別解決方案。14本程序主要實(shí)現(xiàn)的功能(1)實(shí)現(xiàn)對(duì)攝像頭的發(fā)現(xiàn)和選取,與對(duì)每一幀圖像的采集和縮放。(2)實(shí)現(xiàn)對(duì)圖像的清晰化,包括點(diǎn)狀噪聲的去除、細(xì)節(jié)的還原以及之后整體的銳化。(3)實(shí)現(xiàn)對(duì)背景信息的剔除,包括對(duì)膚色的提取和分割,對(duì)陰影和高光區(qū)域的擴(kuò)散和對(duì)一些孤立點(diǎn)的剔除。(4)實(shí)現(xiàn)關(guān)鍵信息,如手的重心、手的遠(yuǎn)近(手的面積)等的確定。(5)利用以上關(guān)鍵信息,實(shí)現(xiàn)一些應(yīng)用。為了保證軟件的實(shí)時(shí)性,同時(shí)便于以上功能的實(shí)現(xiàn),開(kāi)發(fā)工具選用VISUALC2010,第三方類(lèi)庫(kù)采用OPENCV20來(lái)完成這項(xiàng)工程。2攝像頭信息的采集和預(yù)處理21OPENCV關(guān)于攝像頭操作的API要進(jìn)行手勢(shì)信息的獲取,首先需要擁有一定的硬件,如數(shù)據(jù)手套、攝像頭等。對(duì)于軟件方面則要安裝相應(yīng)的驅(qū)動(dòng)程序和了解它們的API。幸好OPENCV提供了一系列通用而且簡(jiǎn)潔的外部接口以便于實(shí)現(xiàn)以上的工作,對(duì)攝像頭操作代碼流程如圖21所示M_VIDEOCVCREATECAMERACAPTUREI/獲取第I個(gè)攝像頭信息給視頻指針CVCAPTUREM_VIDEO/定義視頻指針M_VIDEO/視頻指針M_VIDEOCVCREATECAMERACAPTURE1/獲取任一個(gè)攝像頭信息給視頻指針提示錯(cuò)誤并退出程序M_VIDEONULL/是否找到攝像頭IPLIMAGEM_CAPTUREDCVQUERYFRAMEM_VIDEO/獲取當(dāng)前攝像頭圖片,不能用CVRELEASEIMAGE手動(dòng)釋放圖片內(nèi)存。進(jìn)行關(guān)于M_CAPTURED和它以前的副本的圖像處理和應(yīng)用用戶手動(dòng)退出CVRELEASECAPTURE/釋放視頻指針結(jié)束延遲一定的時(shí)間HIJIAN開(kāi)始HI否是否是圖21攝像頭啟動(dòng)和釋放的代碼流程在實(shí)際的應(yīng)用當(dāng)中,當(dāng)用戶擁有多個(gè)攝像頭時(shí),CVCREATECAMERACAPTURE方法的參數(shù)應(yīng)該取零或正整數(shù),來(lái)選擇不同編號(hào)的攝像頭。當(dāng)找不到該攝像頭時(shí),可以自動(dòng)選擇成默認(rèn)的攝像頭,一般來(lái)說(shuō)是第0號(hào)攝像頭,仍未找到才進(jìn)行錯(cuò)誤退出。22在控件中呈現(xiàn)有關(guān)攝像頭的圖像為了便于觀察,需要將攝像頭的源數(shù)據(jù)或數(shù)據(jù)的處理情況呈現(xiàn)到控件中,而MFC類(lèi)庫(kù)和OPENCV共同提供了這些方法。221HDC的獲取MFC的CDC(設(shè)備上下文)和它對(duì)應(yīng)的句柄HDC提供了一系列有關(guān)畫(huà)圖的方法,對(duì)于一個(gè)有一定ID(如IDC_STATIC1)的控件來(lái)說(shuō),獲取的方法如下CWNDPWNDGETDLGITEMIDC_STATIC1CDCPDCPWNDGETDCHDCHDCPDCGETSAFEHDCIFHDCNULLMESSAGEBOX“無(wú)法獲取HDC“RETURNTRUE這里將ID為IDC_STATIC1的控件通過(guò)PWND獲取控件本身的窗口信息,然后通過(guò)這個(gè)PWND來(lái)獲得有關(guān)設(shè)備的上下文CDC和HDC,獲取不到則出現(xiàn)錯(cuò)誤對(duì)話框并退出。如果已經(jīng)設(shè)置了控件的CONTROL類(lèi)型的變量(如M_S1),則CDC和HDC可以通過(guò)這個(gè)變量直接獲取CDCPDCM_S1GETDCHDCHDCPDCGETSAFEHDC222將IPLIMAGE位圖渲染到控件當(dāng)中OPENCV的IPLIMAGE類(lèi)型的圖片渲染到控件的HDC前需要得到它的頭部信息,這需要開(kāi)辟一段內(nèi)存并將它的結(jié)構(gòu)體提取出來(lái),然后分別賦值STATICUCHARBUFFERSIZEOFBITMAPINFOHEADER1024BITMAPINFOBMIBITMAPINFOBUFFERBITMAPINFOHEADERBMIHMEMSETBMIH,0,SIZEOFBMIHBMIHBISIZESIZEOFBITMAPINFOHEADERBMIHBIWIDTHIMAGEWIDTHBMIHBIHEIGHTIMAGEORIGINABSIMAGEHEIGHTABSIMAGEHEIGHTBMIHBIPLANES1BMIHBIBITCOUNTUNSIGNEDSHORTIMAGEDEPTHBMIHBICOMPRESSIONBI_RGB其中IMAGE變量是IPLIMAGE的實(shí)例。之后調(diào)用MFC的SETDIBITSTODEVICE方法,參數(shù)為HDC,0,0,IMAGEWIDTH,IMAGEHEIGHT,0,0,0,IMAGEHEIGHT,IMAGEIMAGEDATA,BMI,DIB_RGB_COLORS,即可將OPENCV的IPLIMAGE畫(huà)入到HDC為HDC的控件中。但其后不能執(zhí)行PDCINVALIDATE操作,否則原先畫(huà)的結(jié)果會(huì)被清空。23攝像頭圖像的預(yù)處理由于攝像頭的圖像尺寸千變?nèi)f化,不一定能滿足手的關(guān)鍵點(diǎn)位置的精準(zhǔn)度或者圖片太大造成延遲和卡頓,而且可能包含了大量的阻礙識(shí)別的信息(如點(diǎn)狀噪聲等),因而需要一些預(yù)處理工作。231圖片的縮放圖片需要縮放到一個(gè)合理的大小,如320X240,為了加強(qiáng)精確度有條件的可以加到640X480。OPENCV提供了一個(gè)函數(shù)CVRESIZE可以實(shí)現(xiàn)這個(gè)功能。如原IPLIMAGE圖片是M_CAPTURED,目標(biāo)圖片是M_FRAME,則函數(shù)可寫(xiě)成CVRESIZEM_CAPTURED,M_FRAME,M_CAPTUREDWIDTHM_FRAMEWIDTHCV_INTER_LINEARCV_INTER_AREA當(dāng)原圖片比目標(biāo)圖片小時(shí)應(yīng)使用雙線性或雙三次插值的放大算法,來(lái)使得手的運(yùn)動(dòng)軌跡連續(xù)變化,反之,則采用平均值的縮小算法,來(lái)減少波紋和邊緣的不連續(xù)現(xiàn)象。232圖片的降噪噪聲可以理解為“妨礙人和傳感器對(duì)所接收的信源信息理解的因素”。而圖像中各種妨礙信息接受的因素即可稱為圖像噪聲。噪聲被定義為“不可預(yù)測(cè)而只能用概率統(tǒng)計(jì)的方法,來(lái)認(rèn)識(shí)的隨機(jī)誤差”。圖片噪聲按產(chǎn)生的原因可分為外部噪聲和內(nèi)部噪聲。外部噪聲是指由于系統(tǒng)外部干擾以電磁波或由電源串進(jìn)系統(tǒng)內(nèi)部而引起的噪聲。如電氣設(shè)備,天體放電現(xiàn)象等引起的噪聲,而這種噪聲可能就是高斯噪聲、脈沖噪聲等多個(gè)噪聲合成累計(jì)的。內(nèi)部噪聲主要是由光和電的基本性質(zhì)所引起的噪聲。如電流的產(chǎn)生是由空穴或電子的集合,定向運(yùn)動(dòng)所形成的,而這些粒子運(yùn)動(dòng)的帶有隨機(jī)性,產(chǎn)生了散粒噪聲;而導(dǎo)體中也有自由電子,它們會(huì)進(jìn)行無(wú)規(guī)則熱運(yùn)動(dòng),形成熱噪聲。為了消除這些隨機(jī)因素,可以通過(guò)中值濾波或均值濾波的方法法進(jìn)行濾波。對(duì)應(yīng)的OPENCV函數(shù)是VOIDCVSMOOTHCONSTCVARRSRC,CVARRDST,INTSMOOTHTYPECV_GAUSSIAN,INTPARAM13,INTPARAM20,DOUBLEPARAM30,DOUBLEPARAM40。其中SMOOTHTYPE是CV_GAUSSIAN時(shí)將對(duì)圖像進(jìn)行大小為PARAM1PARAM2的高斯卷積的均值濾波。而SMOOTHTYPE是CV_MEDIAN時(shí)將對(duì)圖像進(jìn)行大小為PARAM1PARAM1的中值濾波,注意為PARAM1奇數(shù),且不大于7,其效果結(jié)果如下圖所示A原圖BCV_GAUSSIANCCV_MEDIAN圖22CVSMOOTH的不同SMOOTHTYPE的比較可以看出,中值濾波對(duì)邊緣的保留效果較強(qiáng),但實(shí)際執(zhí)行的速度較慢。不過(guò)這些降噪變換都會(huì)導(dǎo)致有效細(xì)節(jié)的丟失。為此可以將圖片用按一定閾值還原,這分為兩種方法還原與原圖像相差小的部分和與還原原圖像相差大的部分,為了保持還原后的連續(xù)性,可以設(shè)置成不在符合閾值內(nèi)的圖像的保留度再按跟還原原圖像相差值線性變化,其效果如圖23至圖26所示圖23中值濾波后的圖形圖24原圖圖25低閾值保留后的圖形圖25高閾值保留后的圖形從上圖可以看出,還原與原圖像相差小的部分可以消除一些突兀的部分,可稱為椒鹽噪聲,使得圖像看起來(lái)比較柔和,但形體內(nèi)部的與原圖像相差小斑紋仍然存在;而還與原原圖像相差大的部分則可以讓形體內(nèi)部的斑紋大大減弱或消失,使得圖像看起來(lái)比較平滑,但是突兀的部分也因此更加明顯。因此,這兩種還原算法需要配合起來(lái)使用才能起到效果,以便于識(shí)別為目的,可以使用先還原相差小的部分,并用這個(gè)結(jié)果作為原圖,再還原相差大的部分。如圖所示,效果已經(jīng)綜合了上述兩種效果的優(yōu)點(diǎn)。圖26原圖圖27雙重還原后的圖像233圖片的銳化經(jīng)過(guò)圖片的降噪處理后會(huì)顯得比較朦朧,有時(shí)候需要進(jìn)行USM銳化方可實(shí)現(xiàn)更好的邊緣提取。為此可以先用CVSMOOTH,SMOOTHTYPE選CV_GAUSSIAN進(jìn)行均值濾波到一個(gè)臨時(shí)圖像,然后按一定閾值將原圖像與臨時(shí)圖像的像素反差擴(kuò)大即可,反差擴(kuò)大的公式為XKX式中,X表示原圖像的亮度,表示臨時(shí)圖像的亮度,K表示銳化的強(qiáng)度(K1),XX表示目標(biāo)圖像的亮度。而通過(guò)原圖像與臨時(shí)圖像的色差的閾值的調(diào)整,可以減少一些不需要銳化的區(qū)域,但如上所述,會(huì)造成邊緣突兀和不連續(xù),為此也可以將位于原圖像與臨時(shí)圖像的亮度差在閾值內(nèi)部分的銳化強(qiáng)度,按這個(gè)亮度差線性減弱。如圖28所示A銳化前B銳化后圖28銳化前后的圖像比較3手的區(qū)域的提取基于計(jì)算機(jī)視覺(jué)的手勢(shì)識(shí)別的首要任務(wù)就是要將手和背景區(qū)分開(kāi),而背景環(huán)境往往會(huì)十分復(fù)雜,前面通過(guò)一系列的降噪和銳化實(shí)現(xiàn)了冗余信息的剔除和重要信息的強(qiáng)化,從而為之后的工作提供了便利。而這里將討論如何盡可能準(zhǔn)確地將手所在的區(qū)域從復(fù)雜的背景中提取出來(lái)。31膚色種子的獲取如圖所示,隨著不同人之間的差異和光線的變化,以及某些攝像頭的自動(dòng)對(duì)光功能,均會(huì)導(dǎo)致膚色出現(xiàn)變化,為此,很多時(shí)候需要以一種快捷的手段根據(jù)現(xiàn)場(chǎng)情況進(jìn)行調(diào)整。從上圖中還可以看出,手自身的顏色特別是亮度是有變化的,如果以手的平均顏色作為膚色的種子,將會(huì)導(dǎo)致可選擇的范圍的減少。因此這里采用了在圖上手的位置單擊某一點(diǎn),并獲得這一點(diǎn)的顏色,用試探法選擇到最合適的膚色作為手的顏色種子來(lái)跟背景區(qū)分開(kāi)來(lái);同時(shí)也提供了用自定義的顏色作為種子來(lái)靈活應(yīng)對(duì)。311獲取鼠標(biāo)相對(duì)圖像位置的顏色要在單擊鼠標(biāo)時(shí)獲取鼠標(biāo)相對(duì)圖像位置的顏色,需要處理這個(gè)圖像所在控件的點(diǎn)擊事件。CSTATIC控件還需要首先將其N(xiāo)OTIFY屬性設(shè)置成TRUE,以指定這個(gè)控件在單擊和雙擊時(shí)對(duì)父級(jí)控件發(fā)出通知。要獲取鼠標(biāo)相對(duì)于圖像的坐標(biāo)可以通過(guò)先獲取鼠標(biāo)的屏幕坐標(biāo),再將該坐標(biāo)轉(zhuǎn)成相對(duì)于控件的坐標(biāo)來(lái)實(shí)現(xiàn),如下圖。CPOINTPOINT/定義點(diǎn)GETCURSORPOS/獲取鼠標(biāo)在屏幕上的坐標(biāo)GETDLGITEMIDC_STATIC1SCREENTOCLIENT/獲取相對(duì)于控件上的坐標(biāo)圖31獲取鼠標(biāo)相對(duì)于某個(gè)控件的坐標(biāo)要在單擊鼠標(biāo)時(shí)獲取鼠標(biāo)相對(duì)圖像位置的顏色,需要處理這個(gè)圖像所在控件的點(diǎn)擊事件。CSTATIC控件還需要首先將其N(xiāo)OTIFY屬性設(shè)置成TRUE,以指定這個(gè)控件在單擊和雙擊時(shí)對(duì)父級(jí)控件發(fā)出通知。設(shè)M_FRAME為IPLIMAGE的圖片,SRC為它的IMAGEDATA的開(kāi)頭,則鼠標(biāo)在圖像的坐標(biāo)(X0,Y0)上的像素指針為MBYTESRCX0M_FRAMENCHANNELSY0M_FRAMEWIDTHSTEP關(guān)于這一像素的COLORREF顏色COLOURINTMBYTE00/參數(shù)為默認(rèn)顏色,打開(kāi)方式(這里是全打開(kāi))而通過(guò)DLGGETCOLOR的方法可以返回調(diào)好的COLORREF顏色。32基于手與背景在一定顏色模型上的區(qū)別的初步提取從上所述,膚色在顏色空間的分布相當(dāng)集中,但會(huì)受到光照強(qiáng)度和不同人之間的很大影響。為了減少膚色受照明強(qiáng)度影響,通常將顏色空間從RGB轉(zhuǎn)換到亮度與色度分離的某個(gè)顏色空間,比如YUV、LAB或HSL,然后放棄亮度分量。在雙色差或色調(diào)飽和度平面上,不同人的膚色區(qū)別較小,膚色的不同更多在亮度上而不是色度上。7OPENCV中實(shí)現(xiàn)上述方法的函數(shù)為VOIDCVCVTCOLORCONSTCVARRSRC,CVARRDST,INTCODE,其中SRC輸入的是原圖像指針,而IPLIMAGE繼承了CVARR,有時(shí)需要將用整數(shù)信息存儲(chǔ)的圖片轉(zhuǎn)換為一定精度的浮點(diǎn)圖;DST輸入的是目標(biāo)圖像的指針;CODE是色彩空間轉(zhuǎn)換的模式,該CODE來(lái)實(shí)現(xiàn)不同類(lèi)型的顏色空間轉(zhuǎn)換。比如當(dāng)CODE選用CV_BGR2HSV時(shí),對(duì)于8位圖,需要將RGB值歸一化到01之間。這樣得到HSV圖中的H取值范圍才是0,360,S和V的取值范圍是01。由于顏色模型的不同,轉(zhuǎn)換以后的對(duì)手的范圍的提取方法也有所不同。具體來(lái)講,如果用原始的RGB顏色模型的圖片來(lái)提取,那么可以用R、G、B三種通道各自與膚色種子的色差的最大值來(lái)判定圖像上的某點(diǎn)是否在手上;如果用顏色模型為一個(gè)亮度通道兩個(gè)顏色通道的圖片,則可以通過(guò)先遍歷整個(gè)圖像,把每一點(diǎn)的像素歸化到0,255的整數(shù)范圍中,再將兩個(gè)顏色通道移到統(tǒng)一的位置進(jìn)行統(tǒng)一的色差最大值判定,提取的效果如圖32所示。圖32初步提取輪廓33將手的范圍擴(kuò)展到其他區(qū)域在復(fù)雜光線條件下,比如圖所示的膚色在高光區(qū)或陰影區(qū)中導(dǎo)致亮度存在不同,有些部分并沒(méi)有被選上;還有如圖所示的情況,由于手在不同位置的代謝情況的不同和指紋關(guān)系,導(dǎo)致顏色也存在著不同,從而有些另外的部分也沒(méi)有被選上。但是從圖中又可以看得出,這些區(qū)域與選取到的區(qū)域之間并不存在明顯的邊緣,因此可以通過(guò)一種多次迭代的方法,將這些區(qū)域周邊按一定的色差閾值進(jìn)行擴(kuò)散,直到擴(kuò)散了0個(gè)像素為止。如圖33所示A擴(kuò)散前B擴(kuò)散后圖33選取擴(kuò)散前后的對(duì)比34外部孤立點(diǎn)的消去經(jīng)過(guò)如上圖所示的處理中,可以發(fā)現(xiàn)圖片中存在一些比較小的一些孤立的區(qū)域被選中了,如人的頭部,書(shū)架、椅子、窗簾等,它們的顏色與手的顏色相近,但是其共同點(diǎn)是都在在手的后面,而且所占的面積比手的要小。為此可以通過(guò)獲取最大的連通區(qū)域的方法來(lái)去掉一些不合理的選取,目標(biāo)效果如圖33所示。A消去前B消去后圖33外部孤立點(diǎn)的消去目標(biāo)獲取最大的連通區(qū)域包括三步獲取連通區(qū)域的面積并在每個(gè)像素標(biāo)記區(qū)域的ID找出面積的最大值和對(duì)應(yīng)的區(qū)域ID將面積信息非最大的區(qū)域置為未選中。可以通過(guò)遞歸的方法實(shí)現(xiàn)以上功能,但由于遞歸要調(diào)用WINDOWS系統(tǒng)的堆棧,而這個(gè)堆棧的大小不能超過(guò)2M,因此還需要將這個(gè)算法實(shí)現(xiàn)成非遞歸的。這里由于棧的大小不會(huì)超過(guò)整個(gè)圖片面積的整數(shù)倍,因而提供的棧可以選擇一個(gè)中間的IPLIMAGE作為存儲(chǔ),這就要求這個(gè)IPLIMAGE的通道數(shù)足夠。為此可以選擇一個(gè)彩色的24位RGB圖作為棧來(lái)儲(chǔ)存當(dāng)前遍歷的位置信息。為此需要將位置的兩個(gè)值X和Y的坐標(biāo)通過(guò)移位運(yùn)算的方式壓縮在24位長(zhǎng)的變量中。整理以上之后,算法可以分以下幾步完成。341獲取連通區(qū)域的面積和標(biāo)記區(qū)域ID當(dāng)一個(gè)點(diǎn)首次到達(dá)一個(gè)連通區(qū)域(未計(jì)算)時(shí),即開(kāi)始計(jì)算這個(gè)區(qū)域的面積,算完該面積后再進(jìn)去這個(gè)區(qū)域(已計(jì)算)將不會(huì)再重新算。計(jì)算面積的步驟如下進(jìn)入堆棧計(jì)算面積循環(huán),并將當(dāng)前坐標(biāo)壓入堆棧。面積計(jì)數(shù)加一堆棧彈出一格上下左右是否為被選中區(qū)域且未被計(jì)算讀取棧中坐標(biāo)被選中的相鄰節(jié)點(diǎn)分別壓入堆棧該坐標(biāo)置為已計(jì)算并標(biāo)記區(qū)域ID棧是否為空返回面積計(jì)數(shù),結(jié)束是否否是圖34外部孤立點(diǎn)的消去算法在數(shù)據(jù)的結(jié)構(gòu)上,將原圖像副本信息拷貝后,兩個(gè)臨時(shí)圖片MEMOPIC和TEMPPIC將分別儲(chǔ)存不同的中間信息。MEMOPIC的每個(gè)像素的24位整形中,前12位UNSIGNEDCHARA,B表示遍歷游標(biāo)的橫坐標(biāo)INTI,后12位UNSIGNEDCHARB,C表示遍歷游標(biāo)的縱坐標(biāo)INTJ。其讀取和寫(xiě)入的方法如下讀取IINTA4JINTCBUCHARICUCHARJTEMPPIC的每個(gè)像素的24位整形中,儲(chǔ)存像素點(diǎn)遍歷的狀態(tài)0原先未選取;1原先已選取但未參與面積計(jì)算;1原先已選取并已參與面積計(jì)算,表示區(qū)域的ID(從2開(kāi)始)。342最大面積和對(duì)應(yīng)區(qū)域的獲取最大面積的獲取的語(yǔ)句是IFCOUNTMAXIMAGEDATAITEMPPICNCHANNELSJTEMPPICWIDTHSTEP對(duì)應(yīng)的值是否跟COUNTMAXID的后24位相等即可。35內(nèi)部孤立點(diǎn)的修補(bǔ)上面的的提取工作已經(jīng)比較理想了,但是手的內(nèi)部仍然存在著一些缺失的區(qū)域,這會(huì)對(duì)邊緣的檢測(cè)帶來(lái)不必要的麻煩。類(lèi)似地也可以通過(guò)第34節(jié)建立堆棧的方法來(lái)實(shí)現(xiàn),但是要將選區(qū)做暫時(shí)的反轉(zhuǎn)操作,效果如圖34所示。圖3內(nèi)部孤立點(diǎn)的修補(bǔ)4手的關(guān)鍵點(diǎn)的提取經(jīng)過(guò)以上的步驟,我們已經(jīng)獲得了手的像素信息。然而只通過(guò)像素信息來(lái)判斷手勢(shì)將導(dǎo)致判斷過(guò)于復(fù)雜,不利于應(yīng)用的實(shí)現(xiàn)。為此可以通過(guò)提取關(guān)鍵點(diǎn)的方式來(lái)給手勢(shì)識(shí)別應(yīng)用一些簡(jiǎn)明而穩(wěn)定的信息。41手的重心和面積的確定手的重心可以通過(guò)選取圖片(如MEMOPIC)中手的區(qū)域的內(nèi)的X和Y坐標(biāo)的平均值來(lái)實(shí)現(xiàn),而手的面積可以反映手離攝像頭的距離。如圖41所示圖41重心區(qū)域(手中央紅色區(qū)域)42手的邊緣的提取手的邊緣可以通過(guò)像素與其旁邊相差的大小來(lái)確定,但為了保持邊緣的寬度在1像素內(nèi),僅需判斷這個(gè)像素點(diǎn)與其右方和下方的顏色是否相同即可,如圖42所示圖42邊緣提取(手中央紅色區(qū)域)5程序主體代碼的實(shí)現(xiàn)51工程的環(huán)境和架構(gòu)手勢(shì)識(shí)別系統(tǒng)GESTURETEST的開(kāi)發(fā)環(huán)境采用VISUALC2010,項(xiàng)目類(lèi)型采用了MFC基于對(duì)話框的應(yīng)用程序,第三方庫(kù)選用OPENCV作為識(shí)別的輔助工具。為此,必須先進(jìn)行工程環(huán)境的配置(1)安裝OPENCV20,并在其安裝目錄下的INCLUDE和LIB下的所有文件復(fù)制到CPROGRAMFILESMICROSOFTVISUALSTUDIO100VC下的同名目錄中。(2)打開(kāi)所建立的工程,選擇項(xiàng)目GESTURETEST屬性,配置選“所有配置”,并在其下的配置屬性鏈接器輸入中輸入CXCORE200DLIBCV200DLIBHIGHGUI200DLIBADDITIONALDEPENDENCIES(3)將OPENCV安裝目錄下的BIN目錄里的CV200DDLL、CXCORE200DLL、CXCORE200DDLL和HIGHGUI200DDLL復(fù)制到項(xiàng)目生成的可執(zhí)行文件的相同目錄下。如果不能運(yùn)行,則復(fù)制該BIN目錄里文件名不帶D結(jié)尾(不含擴(kuò)展名)的相應(yīng)文件,并將程序旁DLL文件的文件名后加上D即可。建立的項(xiàng)目主要包含以下文件GESTURETESTHGESTURETESTDLGHRESOURCEHSTDAFXHTARGETVERHGESTURETESTCPPGESTURETESTDLGCPPSTDAFXCPP其中的GESTURETESTDLGCPP,即CGESTURETESTAPP類(lèi)在INITINSTANCE方法的DLGDOMODEL后需要加上IFDLGM_VIDEONULLCVRELEASECAPTURE用來(lái)在程序結(jié)束后釋放視頻指針變量M_VIDEO,否則程序在關(guān)閉后無(wú)法徹底退出。主要的實(shí)現(xiàn)方法將在CGESTURETESTDLG類(lèi)中實(shí)現(xiàn)。52主類(lèi)成員變量的定義CVCAPTUREM_VIDEO/視頻指針I(yè)PLIMAGEM_CAPTURED/視頻中的圖片IPLIMAGEM_FRAME/暫存圖片IPLIMAGEM_GRABFRAME/預(yù)覽圖片IPLIMAGEM_TEMP/臨時(shí)圖片BOOLM_FRAMECREATED/暫存圖片是否為手動(dòng)創(chuàng)建的INTSMOOTHMODE/平滑模式INTCENTX/手的重心橫坐標(biāo)INTCENTY/手的重心縱坐標(biāo)INTZONE/手的面積/IDC_STATIC1(攝像頭的圖像所畫(huà)在的控件)的各個(gè)屬性CDCPDC/設(shè)備上下文HDCHDC/設(shè)備上下文的句柄CWNDPWND/控件的窗口CRECTRECT/控件的寬高度INTSCREENWID/屏幕寬度INTSCREENHEI/屏幕高度53程序的初始化代碼在構(gòu)造函數(shù)中將成員變量和控件變量賦上初始值,并在ONINITDIALOG中進(jìn)行如圖51所示的操作。獲取要繪圖的控件的HDC和大小獲取攝像頭獲取屏幕分辨率開(kāi)始計(jì)時(shí)改變控件大小圖51程序的初始化流程并在ONINITDIALOG方法中加入以下代碼/獲取HDC和控件尺寸PWNDGETDLGITEMIDC_STATIC1PDCPWNDGETDCHDCPDCGETSAFEHDCPWNDGETCLIENTRECTIFHDCNULLMESSAGEBOX“無(wú)法獲取HDC“RETURNTRUE/獲取攝像頭IFM_VIDEONULLM_VIDEOCVCREATECAMERACAPTUREM_E01IFM_VIDEONULLMESSAGEBOX“無(wú)法打開(kāi)攝像頭“RETURNTRUEINVALIDATETRUEUPDATEWINDOW/獲取屏幕分辨率SCREENWIDGETSYSTEMMETRICSSM_CXSCREENSCREENHEIGETSYSTEMMETRICSSM_CYSCREEN/開(kāi)始計(jì)時(shí)SETTIMER1,100,NULL/設(shè)置裝載圖片的控件的默認(rèn)尺寸是640480并且將右邊控件位置和窗口大小調(diào)到適當(dāng)位置MOVECONTROLS640,48054從輸入控件中獲得識(shí)別參數(shù)從控件中獲得參數(shù)可以用UPDATEDATATRUE,但當(dāng)用戶輸入了一些非數(shù)字等不能轉(zhuǎn)換為參數(shù)的字符串時(shí),會(huì)不斷地彈出對(duì)話框。為了防止這種情況,處理方式如圖53所示,并在ONTIMER方法的開(kāi)頭中加入代碼獲取彈出的對(duì)話框的指針是否獲取到對(duì)話框獲取控件的數(shù)據(jù)是否因獲取失敗而彈出了對(duì)話框根據(jù)控件數(shù)據(jù)開(kāi)始識(shí)別否否是是返回,不進(jìn)行識(shí)別對(duì)話框關(guān)閉后控件的值復(fù)位并返回圖52能防止不斷彈出對(duì)話框的獲取控件信息流程CWNDCWDGFINDWINDOWEXNULL,NULL,NULL,“GESTURETEST“/獲取UPDATEDATA自動(dòng)生成的對(duì)話框,標(biāo)題為工程名CWNDCWDTGETFOREGROUNDWINDOW/獲取活動(dòng)的窗口IFTHISCWDTRETURNIFUPDATEDATATRUE/讀取對(duì)話框數(shù)據(jù)/UPDATEDATAFALSECDIALOGEXONTIMERNIDEVENTRETURN55總體識(shí)別語(yǔ)句的實(shí)現(xiàn)總體識(shí)別的步驟包括中值濾波、均值濾波、細(xì)節(jié)還原和銳化等圖像的初步潤(rùn)飾操作,也包括了選取的提取和擴(kuò)散操作,還有孤立點(diǎn)去除和關(guān)鍵信息的提取,代碼在ONTIMER方法中的獲取控件信息的語(yǔ)句之后。在識(shí)別的過(guò)程中,需要對(duì)識(shí)別的每一步結(jié)果分別進(jìn)行呈現(xiàn),為此需要進(jìn)行適當(dāng)?shù)牧鞒炭刂疲⑦x擇適當(dāng)?shù)腎PLIMAGE圖片畫(huà)到控件中。而后面的應(yīng)用實(shí)現(xiàn)的代碼將被寫(xiě)在總體識(shí)別的語(yǔ)句之后。INTCOLOURMAX0/最大色差BOOLPRESHOWFALSE/顯示M_FRAMEIFSMOOTHMODE1CVSMOOTHM_FRAME,M_GRABFRAME,CV_MEDIAN,2M_E111,0,0,0/中值濾波ELSEIFSMOOTHMODE2CVSMOOTHM_FRAME,M_GRABFRAME,CV_GAUSSIAN,2M_E111,2M_E111,0,0/均值濾波IFSMOOTHMODE0BLURFIXFILTERM_FRAME,M_GRABFRAME,M_E12,M_E13/濾波后的有限還原IFM_C1TRUERUIHUAFILTERM_FRAME,M_GRABFRAME,M_ERHSL,M_ERHBJ,0/銳化CVCOPYM_GRABFRAME,M_FRAMEIFM_R11PRESHOWTRUE/顯示M_GRABFRAMECOLOURSELECTM_FRAME,M_GRABFRAME,M_E21,M_E22,M_E23,M_C2TRUE,FALSE/按膚色種子選取和擴(kuò)散IFM_R12PRESHOWTRUE/顯示M_GRABFRAMEAREACUTM_GRABFRAME,M_TEMP/消除手區(qū)域外的孤立點(diǎn)CVNOTM_GRABFRAME,M_TEMPAREACUTM_TEMP,M_GRABFRAME,TRUE/消除手區(qū)域內(nèi)的孤立點(diǎn)CVNOTM_TEMP,M_GRABFRAMEIFM_R13PRESHOWTRUE/顯示M_GRABFRAMEINTJOINTSGETJOINTSM_GRABFRAME/獲取重心坐標(biāo)和手的面積CENTXJOINTS0CENTYJOINTS1ZONEJOINTS2DRAWTOHDCPRESHOWM_GRABFRAMEM_FRAME/將IPLIMAGE的圖片畫(huà)到控件中6應(yīng)用設(shè)計(jì)61屏幕畫(huà)圖的設(shè)計(jì)在屏幕上畫(huà)圖的功能可借助CWINDOWDC并定義和設(shè)置筆刷,然后在CWINDOWDC中調(diào)用MOVETO和LINETO的方法來(lái)實(shí)現(xiàn)。611獲取CWINDOWDCCWNDPWNDWCWNDGETDESKTOPWINDOW/獲取桌面窗口CWINDOWDCWINDCPWNDW/創(chuàng)建桌面窗口的設(shè)備上下文CWINDOWDCPWINDC/獲取桌面窗口設(shè)備上下文的指針612定義和設(shè)置筆刷CPENPENT/定義筆刷PENTCREATEPENPS_SOLID,1,RGB255,0,0/創(chuàng)建紅色筆刷CPENPEN/獲取筆刷指針613繪圖語(yǔ)句定義一個(gè)數(shù)組INTPOS4用來(lái)儲(chǔ)存手的重心位置,偶數(shù)下標(biāo)表示橫坐標(biāo),奇數(shù)坐標(biāo)表示縱坐標(biāo);用INTPOSLENG來(lái)儲(chǔ)存POS手的重心的存儲(chǔ)情況。POSLENG0時(shí)沒(méi)有儲(chǔ)存手的位置;或只儲(chǔ)存了一個(gè)手的初始位置POS2,POS3,可作為今后的前一點(diǎn),但不能畫(huà)線;POSLENG2時(shí),POS0,POS1是上一點(diǎn)坐標(biāo),POS2,POS3是當(dāng)前點(diǎn),可以用來(lái)畫(huà)線,繪圖結(jié)果如圖61所示。IFPOSLENG0/儲(chǔ)存上一點(diǎn)坐標(biāo)POS0POS2POS1POS3/更新當(dāng)前坐標(biāo)POS2CENTXPOS3CENTYIFPOSLENG0/將手的坐標(biāo)轉(zhuǎn)為屏幕坐標(biāo)并畫(huà)圖PWINDCMOVETOSCREENWIDSCREENWID/WIDPOS0,SCREENHEI/HEIPOS1PWINDCLINETOSCREENWIDSCREENWID/WIDPOS2,SCREENHEI/HEIPOS3ELSEPOSLENG2圖61屏幕畫(huà)圖效果62模擬鼠標(biāo)功能的實(shí)現(xiàn)模擬鼠標(biāo)的功能可以通過(guò)SETCURPOSX,Y與MOUSE_EVENTMOUSEEVENTF_LEFTUP/MOUSEEVENTF_LEFTDOWN,0,0,0,0的連用來(lái)實(shí)現(xiàn),但由于攝像頭的分辨率往往小于屏幕的分辨率,造成精確度不高。為此可以通過(guò)手在圖像上的離攝像頭中心遠(yuǎn),產(chǎn)生鼠標(biāo)移動(dòng)的增量來(lái)實(shí)現(xiàn)。而為了交互的的自然性,鼠標(biāo)是否按下用手離攝像頭的遠(yuǎn)近,即手在圖中的面積來(lái)實(shí)現(xiàn),效果如圖62所示。圖62模擬鼠標(biāo)效果621手的有效偏移量的獲取DOUBLEXRATE10DOUBLECENTX/WID/將手的坐標(biāo)歸化到0,1區(qū)間內(nèi)并將橫坐標(biāo)鏡像DOUBLEYRATEDOUBLECENTY/HEI/將手的坐標(biāo)歸化到0,1區(qū)間內(nèi)并將橫坐標(biāo)鏡像DOUBLEMOVERMIN0/手在X和Y位于05MOVERMIN,05MOVERMIN的矩形內(nèi)鼠標(biāo)不動(dòng),有效偏移量手離重心的距離MOVERMIN。DOUBLEMOVEMENTX0/有效偏移量的橫坐標(biāo)DOUBLEMOVEMENTY0/有效偏移量的縱坐標(biāo)IFXRATE05MOVERMINMOVEMENTXINTXRATE05MOVERMIN/獲取手的有效偏移量ELSEIFXRATE05MOVERMINMOVEMENTYINTYRATE05MOVERMINELSEIFYRATE015MOUSE_EVENTMOUSEEVENTF_LEFTDOWN,0,0,0,0/手的面積較大則執(zhí)行鼠標(biāo)按下指令ELSEMOUSE_EVENTMOUSEEVENTF_LEFTUP,0,0,0,0/手的面積較小則執(zhí)行鼠標(biāo)抬起指令7手勢(shì)識(shí)別的綜合測(cè)試在手勢(shì)識(shí)別的測(cè)試工作中,中值濾波、均值濾波和還原的表現(xiàn)結(jié)果比較穩(wěn)定,銳化的效果也比較顯著。這些能夠?qū)崟r(shí)而有效地對(duì)攝像機(jī)的視頻進(jìn)行加工。背景的消除算法可以在對(duì)幾個(gè)高低端的攝像頭的不太強(qiáng)的光線的測(cè)試下順利完成。經(jīng)過(guò)測(cè)試發(fā)現(xiàn),當(dāng)手的區(qū)域因?yàn)椴贿B貫而缺失時(shí)可以通過(guò)中值濾波的還原的算法來(lái)完成;而當(dāng)手的區(qū)域跟背景其他地方相連時(shí),使用較高縮放系數(shù)銳化操作可以有效地讓將這些區(qū)域排除,但可能會(huì)增加手的區(qū)域的不完整性,如圖71、圖72所示。A中值濾波前B中值濾波后圖71中值濾波對(duì)識(shí)別結(jié)果的比較銳化前銳化后圖72銳化對(duì)識(shí)別結(jié)果的比較在手的關(guān)鍵信息的獲取中,手的重心會(huì)有時(shí)會(huì)有一些突然移動(dòng)的情況,為此需要對(duì)此進(jìn)行一些屏蔽。結(jié)論總結(jié)本系統(tǒng)針對(duì)不同攝像頭成像的情況,根據(jù)實(shí)際情況,采用VISUALC和OPENCV進(jìn)行開(kāi)發(fā),而手勢(shì)識(shí)別的工作也實(shí)現(xiàn)了包括了圖像的采集、噪聲處理和清晰化,手的區(qū)域的提取,以及手的關(guān)鍵點(diǎn)的獲取,并根據(jù)結(jié)果開(kāi)發(fā)一些常見(jiàn)的應(yīng)用。能夠在大部分?jǐn)z像頭的情況下方便人們對(duì)計(jì)算機(jī)的交互操作。圖像的采集實(shí)現(xiàn)了所有連接且支持的攝像頭都能使用的功能,使得有內(nèi)置攝像頭的機(jī)器能夠用外置攝像頭進(jìn)行識(shí)別

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論