本發(fā)明屬于手勢識別技術(shù)領(lǐng)域,具體涉及一種基于改進(jìn)d-p算法與多模板匹配的手勢識別方法。
背景技術(shù):
隨著計(jì)算機(jī)科學(xué)技術(shù)與人工智能的迅速發(fā)展,人機(jī)交互系統(tǒng)已成為研究的熱點(diǎn)。傳統(tǒng)的以鍵盤、鼠標(biāo)、攝像頭等機(jī)器為中心的交互方式,已經(jīng)不能滿足人類對人機(jī)交互方式的需求,也存在著很多問題日常交流中,人的手勢是一種比較常用且自然的交流、交互方式,是其和外界進(jìn)行交流的重要方式,也是現(xiàn)代和以后的人機(jī)交互技術(shù)領(lǐng)域一個(gè)非常值得深入研究的課題。所以,基于視覺的手勢識別技術(shù)的研究有著相當(dāng)重大的意義。
手勢識別技術(shù)是一項(xiàng)值得深入研究的課題,并且基于計(jì)算機(jī)視覺的手勢識別技術(shù)的探究有著十分廣闊的應(yīng)用前景:
(1)手勢識別是一種三維交互技術(shù)方法,應(yīng)用在虛擬空間交互技術(shù)中,通過手勢和語音來實(shí)現(xiàn)虛擬裝配。
(2)應(yīng)用于多媒體等用戶界面,將基于數(shù)據(jù)手套的手勢與用戶界面結(jié)合,實(shí)現(xiàn)手勢控制家電、視頻游戲等系統(tǒng)。
(3)應(yīng)用于機(jī)器人和機(jī)械手的抓取等方面,在一些水下、火中等危險(xiǎn)環(huán)境下使用手勢進(jìn)行人機(jī)交互。
(4)應(yīng)用于聾啞人或肢體癱瘓等殘障人士日常生活中,使其通過簡單的手勢實(shí)現(xiàn)與計(jì)算機(jī)的交流?;蛘咄ㄟ^手勢實(shí)現(xiàn)對日常家電(臺燈、風(fēng)扇、空調(diào)等)的控制,使其生活更加便利。
由于手是彈性物體,同一種手勢之間會有較大差別,不同手勢之間可能會可相似,不同的人做出的手勢也會不同,且手勢具有較大的冗余信息,在無意識的狀況下會產(chǎn)生非常多的手勢,因此對識別技術(shù)的運(yùn)算能力和識別正確度要求很高?,F(xiàn)有技術(shù)中有很多手勢識別的方法,例如,申請?zhí)枮?01610919465.6的中國發(fā)明專利公開了一種手勢圖像的識別方法及系統(tǒng),申請?zhí)枮?01510381721.6的中國專利公開了一種手勢識別方法及系統(tǒng),申請?zhí)枮?01610559968.7的中國專利公開了一種手勢識別方法和裝置。但是,現(xiàn)有技術(shù)中的手勢識別方法還存在以下問題:無法快速識別多手勢變化,識別的準(zhǔn)確率低,實(shí)時(shí)性差,限制了手勢識別的推廣應(yīng)用。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題在于針對上述現(xiàn)有技術(shù)中的不足,提供一種基于改進(jìn)d-p算法與多模板匹配的手勢識別方法,其設(shè)計(jì)新穎合理,手勢識別速率高,實(shí)時(shí)性好,手勢識別準(zhǔn)確率高,實(shí)用性強(qiáng),使用效果好,便于推廣使用。
為解決上述技術(shù)問題,本發(fā)明采用的技術(shù)方案是:一種基于改進(jìn)d-p算法與多模板匹配的手勢識別方法,其特征在于,該方法包括以下步驟:
步驟一、手勢圖像的實(shí)時(shí)采集及預(yù)處理:采用攝像頭拍攝手勢圖像視頻流并將圖像視頻流傳送給計(jì)算機(jī),計(jì)算機(jī)對圖像視頻流的視頻幀進(jìn)行圖像分割預(yù)處理,得到實(shí)時(shí)的手勢輪廓圖像;
步驟二、計(jì)算機(jī)采用改進(jìn)d-p算法對步驟一中得到的實(shí)時(shí)的手勢輪廓圖像進(jìn)行多邊形逼近擬合,具體過程為:
步驟201、設(shè)定特征點(diǎn)選取閾值δ;
步驟202、從手勢輪廓曲線上選取一點(diǎn)作為進(jìn)行輪廓遍歷搜尋的起點(diǎn);
步驟203、從起點(diǎn)開始,對手勢輪廓按照搜尋步長進(jìn)行遍歷搜尋,每經(jīng)過一個(gè)搜尋步長,計(jì)算曲線上的點(diǎn)到所述曲線的起點(diǎn)與終點(diǎn)連成的直線之間的距離,并找出曲線上的點(diǎn)到所述直線的最大距離;
步驟204、將步驟203中找出的最大距離與步驟201中設(shè)定的特征點(diǎn)選取閾值δ進(jìn)行比較,當(dāng)最大距離大于或等于特征點(diǎn)選取閾值δ時(shí),將最大距離對應(yīng)的曲線上的點(diǎn)作為特征點(diǎn)和下一次搜尋的新起點(diǎn),按照搜尋步長繼續(xù)沿手勢輪廓進(jìn)行遍歷搜尋,當(dāng)最大距離小于特征點(diǎn)選取閾值時(shí),將上次搜尋的終點(diǎn)作為下一次搜尋的新起點(diǎn),按照搜尋步長繼續(xù)沿手勢輪廓進(jìn)行遍歷搜尋,直到再找到最大距離大于或等于特征點(diǎn)選取閾值δ的點(diǎn),將再找到的最大距離對應(yīng)的曲線上的點(diǎn)作為特征點(diǎn)和下一次搜尋的新起點(diǎn),按照搜尋步長繼續(xù)沿手勢輪廓進(jìn)行遍歷搜尋,直至回到步驟202中選取的起點(diǎn)時(shí)結(jié)束遍歷搜尋,并確定出了手勢輪廓曲線上的所有特征點(diǎn);
步驟205、對手勢輪廓曲線上的所有特征點(diǎn)進(jìn)行曲線擬合,得到手勢輪廓多邊形逼近圖;
步驟三、計(jì)算機(jī)采用自適應(yīng)閾值算法對步驟二中得到的手勢輪廓多邊形逼近圖進(jìn)行指尖點(diǎn)檢測,具體過程為:
步驟301、自適應(yīng)的指尖點(diǎn)選取閾值的確定:計(jì)算機(jī)根據(jù)公式
步驟302、指尖點(diǎn)的確定:計(jì)算機(jī)以手勢輪廓圖像的質(zhì)心為圓心,指尖點(diǎn)選取閾值
步驟四、計(jì)算機(jī)采用多模板匹配算法對手勢進(jìn)行匹配識別,確定出手勢;具體過程為:
步驟401、根據(jù)指尖點(diǎn)個(gè)數(shù)進(jìn)行手勢初步確定:計(jì)算機(jī)調(diào)取存儲在其中的預(yù)先構(gòu)建的手勢多模板庫,找出手勢按指尖點(diǎn)個(gè)數(shù)分類的分類表,并在所述分類表中找出與步驟302中統(tǒng)計(jì)出的指尖點(diǎn)個(gè)數(shù)相對應(yīng)的手勢多模板庫中的手勢,初步確定出可能匹配的手勢;
步驟402、根據(jù)可能匹配的手勢的數(shù)量進(jìn)行手勢確定:當(dāng)步驟401中確定出的可能匹配的手勢的數(shù)量為1個(gè)時(shí),將步驟401中確定出的可能匹配的手勢確定為匹配的手勢;當(dāng)步驟401中確定出的可能匹配的手勢的數(shù)量大于1個(gè)時(shí),執(zhí)行步驟403確定匹配的手勢;
步驟403、根據(jù)hu矩特征值進(jìn)行匹配的手勢確定,具體過程為:
步驟4031、計(jì)算機(jī)調(diào)取存儲在其中的預(yù)先構(gòu)建的手勢多模板庫,找出各個(gè)手勢對應(yīng)的修正后的hu矩特征值;
步驟4032、計(jì)算機(jī)調(diào)用hu矩特征值計(jì)算模塊計(jì)算出步驟一中得到的實(shí)時(shí)的手勢輪廓圖像的hu矩特征值φ1、φ2、φ3、φ4、φ5、φ6、φ7,并根據(jù)公式hk=|log(|φk|)|計(jì)算得到修正后的手勢輪廓圖像的hu矩特征值h1、h2、h3、h4、h5、h6、h7;其中,k=1,2,…,7;
步驟4033、計(jì)算機(jī)調(diào)用匹配度比較值計(jì)算模塊計(jì)算實(shí)時(shí)的手勢輪廓圖像與步驟401中確定出的可能匹配的手勢中各個(gè)手勢的匹配度比較值,并將匹配度比較值最小時(shí)對應(yīng)的可能匹配的手勢確定為匹配的手勢;其中,計(jì)算機(jī)根據(jù)計(jì)算公式
上述的基于改進(jìn)d-p算法與多模板匹配的手勢識別方法,其特征在于:計(jì)算機(jī)構(gòu)建手勢多模板庫的具體過程為:
步驟a、獲取多個(gè)手勢的輪廓圖像:采用攝像頭拍攝手勢1~10的圖像視頻流并將圖像視頻流傳送給計(jì)算機(jī),計(jì)算機(jī)對圖像視頻流的視頻幀進(jìn)行圖像分割預(yù)處理,得到手勢1~10中每種手勢的5個(gè)手勢輪廓圖像;其中,每種手勢的5個(gè)手勢輪廓圖像包括手勢的正視輪廓圖像,手勢的向左旋轉(zhuǎn)角度α的輪廓圖像,手勢的向右旋轉(zhuǎn)角度α的輪廓圖像,手勢的側(cè)視圖和手勢的縮放圖;
步驟b、計(jì)算機(jī)采用改進(jìn)d-p算法分別對多個(gè)手勢的輪廓圖像進(jìn)行多邊形逼近擬合,其中,對每個(gè)手勢的輪廓圖像進(jìn)行多邊形逼近擬合的具體過程為:
步驟b01、設(shè)定特征點(diǎn)選取閾值δ′;
步驟b02、從手勢輪廓曲線上選取一點(diǎn)作為進(jìn)行輪廓遍歷搜尋的起點(diǎn);
步驟b03、從起點(diǎn)開始,對手勢輪廓按照搜尋步長進(jìn)行遍歷搜尋,每經(jīng)過一個(gè)搜尋步長,計(jì)算曲線上的點(diǎn)到所述曲線的起點(diǎn)與終點(diǎn)連成的直線之間的距離,并找出曲線上的點(diǎn)到所述直線的最大距離;
步驟b04、將步驟b03中找出的最大距離與步驟b01中設(shè)定的特征點(diǎn)選取閾值δ′進(jìn)行比較,當(dāng)最大距離大于或等于特征點(diǎn)選取閾值δ′時(shí),將最大距離對應(yīng)的曲線上的點(diǎn)作為特征點(diǎn)和下一次搜尋的新起點(diǎn),按照搜尋步長繼續(xù)沿手勢輪廓進(jìn)行遍歷搜尋,當(dāng)最大距離小于特征點(diǎn)選取閾值時(shí),將上次搜尋的終點(diǎn)作為下一次搜尋的新起點(diǎn),按照搜尋步長繼續(xù)沿手勢輪廓進(jìn)行遍歷搜尋,直到再找到最大距離大于或等于特征點(diǎn)選取閾值δ′的點(diǎn),將再找到的最大距離對應(yīng)的曲線上的點(diǎn)作為特征點(diǎn)和下一次搜尋的新起點(diǎn),按照搜尋步長繼續(xù)沿手勢輪廓進(jìn)行遍歷搜尋,直至回到步驟b02中選取的起點(diǎn)時(shí)結(jié)束遍歷搜尋,并確定出了手勢輪廓曲線上的所有特征點(diǎn);
步驟b05、對手勢輪廓曲線上的所有特征點(diǎn)進(jìn)行曲線擬合,得到手勢輪廓多邊形逼近圖并進(jìn)行存儲;
步驟c、計(jì)算機(jī)采用自適應(yīng)閾值算法對步驟b中得到的多個(gè)手勢輪廓多邊形逼近圖進(jìn)行指尖點(diǎn)檢測,其中,對每個(gè)手勢輪廓多邊形逼近圖進(jìn)行指尖點(diǎn)檢測的具體過程為:
步驟c01、指尖點(diǎn)選取閾值的確定:計(jì)算機(jī)根據(jù)公式
步驟c02、指尖點(diǎn)的確定:計(jì)算機(jī)以手勢輪廓圖像的質(zhì)心為圓心,指尖點(diǎn)選取閾值
步驟d、計(jì)算機(jī)根據(jù)指尖點(diǎn)個(gè)數(shù)對多個(gè)手勢進(jìn)行分類,將指尖點(diǎn)個(gè)數(shù)相同的手勢分為一類,并列出手勢按指尖點(diǎn)個(gè)數(shù)分類的分類表;
步驟e、計(jì)算機(jī)調(diào)用hu矩特征值計(jì)算模塊計(jì)算出各個(gè)手勢的輪廓圖像的hu矩特征值,并計(jì)算出各個(gè)手勢修正后的hu矩特征值,其中,計(jì)算機(jī)計(jì)算第r個(gè)手勢修正后的hu矩特征值
上述的基于改進(jìn)d-p算法與多模板匹配的手勢識別方法,其特征在于:步驟a中所述角度α的取值為15°。
上述的基于改進(jìn)d-p算法與多模板匹配的手勢識別方法,其特征在于:步驟b02中選取手勢輪廓曲線上最低的一點(diǎn)作為進(jìn)行輪廓遍歷搜尋的起點(diǎn)。
上述的基于改進(jìn)d-p算法與多模板匹配的手勢識別方法,其特征在于:步驟d中指尖點(diǎn)個(gè)數(shù)共有6種,指尖點(diǎn)個(gè)數(shù)為0的手勢為手勢10,分為第一類;指尖點(diǎn)個(gè)數(shù)為1的手勢為手勢1和手勢9,分為第二類;指尖點(diǎn)個(gè)數(shù)為2的手勢為手勢2、手勢6和手勢8,分為第三類;指尖點(diǎn)個(gè)數(shù)為3的手勢為手勢3和手勢7,分為第四類;指尖點(diǎn)個(gè)數(shù)為4的手勢為手勢4,分為第五類;指尖點(diǎn)個(gè)數(shù)為5的手勢為手勢5,分為第六類。
上述的基于改進(jìn)d-p算法與多模板匹配的手勢識別方法,其特征在于:步驟202中選取手勢輪廓曲線上最低的一點(diǎn)作為進(jìn)行輪廓遍歷搜尋的起點(diǎn)。
本發(fā)明與現(xiàn)有技術(shù)相比具有以下優(yōu)點(diǎn):
1、本發(fā)明將d-p算法進(jìn)行改進(jìn)后應(yīng)用在手勢識別中,并與多模板匹配方法相結(jié)合,能夠快速準(zhǔn)確地識別出手勢,設(shè)計(jì)新穎合理。
2、本發(fā)明采用改進(jìn)d-p算法對手勢輪廓圖像進(jìn)行多邊形逼近擬合后,再進(jìn)行指尖點(diǎn)檢測,能夠準(zhǔn)確地獲得指尖點(diǎn)個(gè)數(shù),為對手勢按照指尖點(diǎn)個(gè)數(shù)分類奠定了基礎(chǔ),能夠有效提高手勢識別的準(zhǔn)確率。
3、本發(fā)明采用了先分類再進(jìn)行匹配的方法,能夠良好的減少匹配的次數(shù),提高手勢匹配的速率。
4、本發(fā)明通過多模板匹配,即對一種手勢的不同種類進(jìn)行匹配,能夠提高識別準(zhǔn)確率,有效地減少了匹配過程中的誤判率。
5、本發(fā)明在構(gòu)建手勢多模板庫時(shí),也采用了改進(jìn)d-p算法對手勢輪廓圖像進(jìn)行多邊形逼近擬合后,再進(jìn)行指尖點(diǎn)檢測,再根據(jù)指尖點(diǎn)個(gè)數(shù)進(jìn)行分類的方法,與現(xiàn)有技術(shù)中僅僅簡單構(gòu)建出手勢模板庫,進(jìn)行模板匹配的方法相比,能夠有效提高手勢識別的速率和準(zhǔn)確率。
6、本發(fā)明能夠用于手勢控制中,用于控制日常生活用品,如臺燈、風(fēng)扇、空調(diào)、電動窗簾等,還能應(yīng)用于多媒體人機(jī)交互中,實(shí)用性強(qiáng),使用效果好,便于推廣使用。
綜上所述,本發(fā)明設(shè)計(jì)新穎合理,手勢識別速率高,實(shí)時(shí)性好,手勢識別準(zhǔn)確率高,實(shí)用性強(qiáng),使用效果好,便于推廣使用。
下面通過附圖和實(shí)施例,對本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)描述。
附圖說明
圖1為本發(fā)明采用的硬件系統(tǒng)的電路連接框圖。
圖2為本發(fā)明手勢識別方法的方法流程框圖。
圖3為本發(fā)明構(gòu)建手勢多模板庫的方法流程框圖。
圖4a為本發(fā)明步驟202中選取進(jìn)行輪廓遍歷搜尋的起點(diǎn)的示意圖。
圖4b為本發(fā)明步驟204中選取進(jìn)行輪廓遍歷的新的起點(diǎn)的示意圖。
圖4c為本發(fā)明步驟204中確定出手勢輪廓曲線上的所有特征點(diǎn)的示意圖。
圖5a為本發(fā)明手勢1~10的手勢輪廓曲線圖。
圖5b為本發(fā)明經(jīng)過步驟二得到的手勢輪廓多邊形逼近圖。
圖5c為本發(fā)明經(jīng)過步驟三得到的手勢輪廓多邊形逼近圖指尖點(diǎn)檢測結(jié)果圖。
圖6為本發(fā)明手勢多模板庫的手勢輪廓圖像。
圖7為本發(fā)明第三類指尖點(diǎn)個(gè)數(shù)為2的手勢示意圖。
附圖標(biāo)記說明:
1—攝像頭;2—計(jì)算機(jī)。
具體實(shí)施方式
如圖1和圖2所示,本發(fā)明的基于改進(jìn)d-p算法與多模板匹配的手勢識別方法,包括以下步驟:
步驟一、手勢圖像的實(shí)時(shí)采集及預(yù)處理:采用攝像頭1拍攝手勢圖像視頻流并將圖像視頻流傳送給計(jì)算機(jī)2,計(jì)算機(jī)2對圖像視頻流的視頻幀進(jìn)行圖像分割預(yù)處理,得到實(shí)時(shí)的手勢輪廓圖像;
步驟二、計(jì)算機(jī)2采用改進(jìn)d-p算法對步驟一中得到的實(shí)時(shí)的手勢輪廓圖像進(jìn)行多邊形逼近擬合,具體過程為:
步驟201、設(shè)定特征點(diǎn)選取閾值δ;
步驟202、從手勢輪廓曲線上選取一點(diǎn)作為進(jìn)行輪廓遍歷搜尋的起點(diǎn);
本實(shí)施例中,步驟202中選取手勢輪廓曲線上最低的一點(diǎn)作為進(jìn)行輪廓遍歷搜尋的起點(diǎn)。這樣的起點(diǎn)選取方法,能夠更加有序高效地進(jìn)行特征點(diǎn)遍歷搜尋,找出所有特征點(diǎn),提高了手勢識別的速率。例如,如圖4a中的s點(diǎn)。
步驟203、從起點(diǎn)開始,對手勢輪廓按照搜尋步長進(jìn)行遍歷搜尋,每經(jīng)過一個(gè)搜尋步長,計(jì)算曲線上的點(diǎn)到所述曲線的起點(diǎn)與終點(diǎn)連成的直線之間的距離,并找出曲線上的點(diǎn)到所述直線的最大距離;例如,如圖4a所示,步長為曲線sa1,曲線的起點(diǎn)與終點(diǎn)連成的直線為直線sa1,點(diǎn)b為曲線上的一點(diǎn),計(jì)算點(diǎn)b到直線sa1之間的距離;
步驟204、將步驟203中找出的最大距離與步驟201中設(shè)定的特征點(diǎn)選取閾值δ進(jìn)行比較,當(dāng)最大距離大于或等于特征點(diǎn)選取閾值δ時(shí),將最大距離對應(yīng)的曲線上的點(diǎn)作為特征點(diǎn)和下一次搜尋的新起點(diǎn),按照搜尋步長繼續(xù)沿手勢輪廓進(jìn)行遍歷搜尋,當(dāng)最大距離小于特征點(diǎn)選取閾值時(shí),將上次搜尋的終點(diǎn)作為下一次搜尋的新起點(diǎn),按照搜尋步長繼續(xù)沿手勢輪廓進(jìn)行遍歷搜尋,直到再找到最大距離大于或等于特征點(diǎn)選取閾值δ的點(diǎn),將再找到的最大距離對應(yīng)的曲線上的點(diǎn)作為特征點(diǎn)和下一次搜尋的新起點(diǎn),按照搜尋步長繼續(xù)沿手勢輪廓進(jìn)行遍歷搜尋,直至回到步驟202中選取的起點(diǎn)時(shí)結(jié)束遍歷搜尋,并確定出了手勢輪廓曲線上的所有特征點(diǎn);例如,如圖4b所示,曲線bb1上的點(diǎn)到直線bb1上的最大距離小于特征點(diǎn)選取閾值δ,則將b1更新為下一次搜尋的新起點(diǎn),直到找到最大距離大于特征點(diǎn)選取閾值的點(diǎn),如在曲線b3b4上出現(xiàn)的點(diǎn)c到直線b3b4上的距離大于特征點(diǎn)選取閾值δ,則將點(diǎn)c作為特征點(diǎn)和下一次搜尋的新起點(diǎn);如圖4c所示,確定出的手勢輪廓曲線上的所有特征點(diǎn)為點(diǎn)b、點(diǎn)c、點(diǎn)e和點(diǎn)f;
步驟205、對手勢輪廓曲線上的所有特征點(diǎn)進(jìn)行曲線擬合,得到手勢輪廓多邊形逼近圖;例如,如圖5a所示為手勢1~10的手勢輪廓曲線,如圖5b所示為經(jīng)過步驟二得到的手勢輪廓多邊形逼近圖。
douglas-peucker算法(簡稱d-p算法)是由daviddouglas和thomaspeucker于1973年提出的一種曲線抽稀算法,可對曲線大量冗余點(diǎn)進(jìn)行精簡并保留曲線最基本特征。簡單的說,根據(jù)曲線離散度給定一個(gè)初始偏差值,將曲線首尾點(diǎn)相連形成直線,并查詢曲線所有拐點(diǎn)中距離該直線最遠(yuǎn)的點(diǎn)。如果該點(diǎn)與直線的距離小于初始偏差值,則刪除該點(diǎn)并返回;如果該點(diǎn)與直線的距離大于初始偏差值,則保留該點(diǎn)作為特征點(diǎn),并以曲線首點(diǎn)和該點(diǎn)形成新的直線并重新查詢距離最遠(yuǎn)的點(diǎn);依此類推,直至搜索完曲線所有點(diǎn)并保留下特征點(diǎn)。d-p算法已是計(jì)算機(jī)圖形學(xué)曲線簡化常規(guī)方法,突出優(yōu)點(diǎn)是可保留曲線最大彎曲形態(tài)的點(diǎn),但是,如果將其應(yīng)用在手勢識別中,存在的缺點(diǎn)是:通過d-p算法遍歷搜尋曲線特征點(diǎn)時(shí),不是按照輪廓曲線的順序而進(jìn)行的,即特征點(diǎn)并不是順序出現(xiàn)的。為此,本發(fā)明提出了改進(jìn)d-p算法,改進(jìn)d-p算法與傳統(tǒng)d-p算法相比,搜尋特征點(diǎn)的方法不同,如以上步驟202、步驟203和步驟204所述,改進(jìn)d-p算法先設(shè)定手勢輪廓曲線上的一點(diǎn)為起點(diǎn),如果在一個(gè)步長中能夠?qū)ふ揖嚯x大于或等于特征點(diǎn)選取閾值的點(diǎn),就將該點(diǎn)作為特征點(diǎn)以該點(diǎn)作為新的起始點(diǎn)進(jìn)行下一個(gè)步長的尋找;如果該步長中沒有特征點(diǎn),就繼續(xù)進(jìn)行下一個(gè)步長。改進(jìn)d-p算法搜尋特征點(diǎn)的方法能夠使得特征點(diǎn)是按照輪廓曲線的順序而出現(xiàn)的,應(yīng)用在本發(fā)明中,能夠更加高效地尋找出手勢輪廓曲線上的所有特征點(diǎn)。
步驟三、計(jì)算機(jī)2采用自適應(yīng)閾值算法對步驟二中得到的手勢輪廓多邊形逼近圖進(jìn)行指尖點(diǎn)檢測,具體過程為:
步驟301、自適應(yīng)的指尖點(diǎn)選取閾值的確定:計(jì)算機(jī)2根據(jù)公式
步驟302、指尖點(diǎn)的確定:計(jì)算機(jī)2以手勢輪廓圖像的質(zhì)心為圓心,指尖點(diǎn)選取閾值
通過觀察圖5b可知,為了獲得手勢指尖,不能用凸點(diǎn)的個(gè)數(shù)來直接替代指尖點(diǎn)個(gè)數(shù),因?yàn)樵趯?shí)際情況中,在手勢輪廓多邊形逼近圖中的凸點(diǎn)往往比真正的指尖點(diǎn)個(gè)數(shù)要多。因此,步驟三中提出了采用自適應(yīng)閾值算法進(jìn)行手勢輪廓多邊形逼近圖指尖點(diǎn)檢測的方法,通過對各個(gè)手勢上的凸點(diǎn)和凹點(diǎn)到質(zhì)心的距離的分析,推導(dǎo)出了采用所有特征點(diǎn)到質(zhì)心的歐式距離的平均值作為指尖點(diǎn)選取閾值的方法,先計(jì)算出指尖點(diǎn)選取閾值,再以質(zhì)心為圓心,指尖點(diǎn)選取閾值為半徑,畫圓,將落在圓外的特征點(diǎn)確定為指尖點(diǎn),對于不滿足閾值的特征點(diǎn)進(jìn)行濾除,能夠獲得準(zhǔn)確的指尖點(diǎn)個(gè)數(shù),從而能夠有效提高手勢識別的準(zhǔn)確率,為對手勢按照指尖點(diǎn)個(gè)數(shù)分類奠定了基礎(chǔ)。通過指尖篩選后,獲取的手勢輪廓多邊形逼近圖指尖點(diǎn)檢測結(jié)果如圖5c所示。
步驟四、計(jì)算機(jī)2采用多模板匹配算法對手勢進(jìn)行匹配識別,確定出手勢;具體過程為:
步驟401、根據(jù)指尖點(diǎn)個(gè)數(shù)進(jìn)行手勢初步確定:計(jì)算機(jī)2調(diào)取存儲在其中的預(yù)先構(gòu)建的手勢多模板庫,找出手勢按指尖點(diǎn)個(gè)數(shù)分類的分類表,并在所述分類表中找出與步驟302中統(tǒng)計(jì)出的指尖點(diǎn)個(gè)數(shù)相對應(yīng)的手勢多模板庫中的手勢,初步確定出可能匹配的手勢;
步驟402、根據(jù)可能匹配的手勢的數(shù)量進(jìn)行手勢確定:當(dāng)步驟401中確定出的可能匹配的手勢的數(shù)量為1個(gè)時(shí),將步驟401中確定出的可能匹配的手勢確定為匹配的手勢;當(dāng)步驟401中確定出的可能匹配的手勢的數(shù)量大于1個(gè)時(shí),執(zhí)行步驟403確定匹配的手勢;
步驟403、根據(jù)hu矩特征值進(jìn)行匹配的手勢確定,具體過程為:
步驟4031、計(jì)算機(jī)2調(diào)取存儲在其中的預(yù)先構(gòu)建的手勢多模板庫,找出各個(gè)手勢對應(yīng)的修正后的hu矩特征值;
步驟4032、計(jì)算機(jī)2調(diào)用hu矩特征值計(jì)算模塊計(jì)算出步驟一中得到的實(shí)時(shí)的手勢輪廓圖像的hu矩特征值φ1、φ2、φ3、φ4、φ5、φ6、φ7,并根據(jù)公式hk=|log(|φk|)|計(jì)算得到修正后的手勢輪廓圖像的hu矩特征值h1、h2、h3、h4、h5、h6、h7;其中,k=1,2,…,7;
步驟4032中計(jì)算機(jī)2調(diào)用hu矩特征值計(jì)算模塊計(jì)算手勢輪廓圖像的hu矩特征值時(shí),采用現(xiàn)有技術(shù)中的hu矩特征值計(jì)算方法,但由于灰度圖像的hu矩特征值數(shù)值非常小,因此再通過采用公式hk=|log(|φk|)|來對計(jì)算結(jié)果進(jìn)行修正調(diào)整,應(yīng)用在本發(fā)明中,能夠很好地達(dá)到根據(jù)hu矩特征值進(jìn)行匹配的手勢確定的目的。
步驟4033、計(jì)算機(jī)2調(diào)用匹配度比較值計(jì)算模塊計(jì)算實(shí)時(shí)的手勢輪廓圖像與步驟401中確定出的可能匹配的手勢中各個(gè)手勢的匹配度比較值,并將匹配度比較值最小時(shí)對應(yīng)的可能匹配的手勢確定為匹配的手勢;其中,計(jì)算機(jī)2根據(jù)計(jì)算公式
步驟4033實(shí)現(xiàn)了采用hu矩特征值比較待識別的手勢與可能識別的手勢的相似度,能夠識別出待識別的手勢。
在手勢識別時(shí)采用單模板匹配算法對手勢進(jìn)行匹配識別,方法簡單易行,但是在實(shí)際情況中,由于每個(gè)人的手勢形狀、大小等的不同,使得手勢識別的誤判率比較高。所以本發(fā)明設(shè)計(jì)實(shí)現(xiàn)了一種多模板匹配算法,通過將待識別手勢與手勢多模板庫中的多個(gè)手勢進(jìn)行對比、匹配,能夠達(dá)到快速且高效的匹配結(jié)果,有效提高了手勢識別的速率和準(zhǔn)確率,減少了手勢誤判率。
以上的步驟四采用了先根據(jù)指尖點(diǎn)個(gè)數(shù)進(jìn)行分類再進(jìn)行多模板匹配的方法,與現(xiàn)有技術(shù)中僅進(jìn)行指尖檢測或僅進(jìn)行模板匹配的手勢識別方法相比,能夠提高手勢識別的速率,且能夠有效減少匹配的次數(shù),提高手勢匹配的準(zhǔn)確率。
本實(shí)施例中,計(jì)算機(jī)2構(gòu)建手勢多模板庫的具體過程為:
步驟a、獲取多個(gè)手勢的輪廓圖像:采用攝像頭1拍攝手勢1~10的圖像視頻流并將圖像視頻流傳送給計(jì)算機(jī)2,計(jì)算機(jī)2對圖像視頻流的視頻幀進(jìn)行圖像分割預(yù)處理,得到手勢1~10中每種手勢的5個(gè)手勢輪廓圖像;其中,每種手勢的5個(gè)手勢輪廓圖像包括手勢的正視輪廓圖像,手勢的向左旋轉(zhuǎn)角度α的輪廓圖像,手勢的向右旋轉(zhuǎn)角度α的輪廓圖像,手勢的側(cè)視圖和手勢的縮放圖;
本實(shí)施例中,步驟a中所述角度α的取值為15°。角度α的具體取值,考慮了人在做出手勢時(shí)經(jīng)常出現(xiàn)的角度,與實(shí)際更為相符,且這樣的取值能夠提高手勢識別的速率和準(zhǔn)確率。手勢多模板庫的手勢輪廓圖像如圖6所示。總共有50個(gè)不同手勢的模板。
步驟b、計(jì)算機(jī)2采用改進(jìn)d-p算法分別對多個(gè)手勢的輪廓圖像進(jìn)行多邊形逼近擬合,其中,對每個(gè)手勢的輪廓圖像進(jìn)行多邊形逼近擬合的具體過程為:
步驟b01、設(shè)定特征點(diǎn)選取閾值δ′;
步驟b02、從手勢輪廓曲線上選取一點(diǎn)作為進(jìn)行輪廓遍歷搜尋的起點(diǎn);
本實(shí)施例中,步驟b02中選取手勢輪廓曲線上最低的一點(diǎn)作為進(jìn)行輪廓遍歷搜尋的起點(diǎn)。這樣的起點(diǎn)選取方法,能夠更加有序高效地進(jìn)行特征點(diǎn)遍歷搜尋,找出所有特征點(diǎn),提高了手勢識別的速率。
步驟b03、從起點(diǎn)開始,對手勢輪廓按照搜尋步長進(jìn)行遍歷搜尋,每經(jīng)過一個(gè)搜尋步長,計(jì)算曲線上的點(diǎn)到所述曲線的起點(diǎn)與終點(diǎn)連成的直線之間的距離,并找出曲線上的點(diǎn)到所述直線的最大距離;
步驟b04、將步驟b03中找出的最大距離與步驟b01中設(shè)定的特征點(diǎn)選取閾值δ′進(jìn)行比較,當(dāng)最大距離大于或等于特征點(diǎn)選取閾值δ′時(shí),將最大距離對應(yīng)的曲線上的點(diǎn)作為特征點(diǎn)和下一次搜尋的新起點(diǎn),按照搜尋步長繼續(xù)沿手勢輪廓進(jìn)行遍歷搜尋,當(dāng)最大距離小于特征點(diǎn)選取閾值時(shí),將上次搜尋的終點(diǎn)作為下一次搜尋的新起點(diǎn),按照搜尋步長繼續(xù)沿手勢輪廓進(jìn)行遍歷搜尋,直到再找到最大距離大于或等于特征點(diǎn)選取閾值δ′的點(diǎn),將再找到的最大距離對應(yīng)的曲線上的點(diǎn)作為特征點(diǎn)和下一次搜尋的新起點(diǎn),按照搜尋步長繼續(xù)沿手勢輪廓進(jìn)行遍歷搜尋,直至回到步驟b02中選取的起點(diǎn)時(shí)結(jié)束遍歷搜尋,并確定出了手勢輪廓曲線上的所有特征點(diǎn);
步驟b05、對手勢輪廓曲線上的所有特征點(diǎn)進(jìn)行曲線擬合,得到手勢輪廓多邊形逼近圖并進(jìn)行存儲;
步驟c、計(jì)算機(jī)2采用自適應(yīng)閾值算法對步驟b中得到的多個(gè)手勢輪廓多邊形逼近圖進(jìn)行指尖點(diǎn)檢測,其中,對每個(gè)手勢輪廓多邊形逼近圖進(jìn)行指尖點(diǎn)檢測的具體過程為:
步驟c01、指尖點(diǎn)選取閾值的確定:計(jì)算機(jī)2根據(jù)公式
步驟c02、指尖點(diǎn)的確定:計(jì)算機(jī)2以手勢輪廓圖像的質(zhì)心為圓心,指尖點(diǎn)選取閾值
步驟d、計(jì)算機(jī)2根據(jù)指尖點(diǎn)個(gè)數(shù)對多個(gè)手勢進(jìn)行分類,將指尖點(diǎn)個(gè)數(shù)相同的手勢分為一類,并列出手勢按指尖點(diǎn)個(gè)數(shù)分類的分類表;
本實(shí)施例中,步驟d中指尖點(diǎn)個(gè)數(shù)共有6種,指尖點(diǎn)個(gè)數(shù)為0的手勢為手勢10,分為第一類;指尖點(diǎn)個(gè)數(shù)為1的手勢為手勢1和手勢9,分為第二類;指尖點(diǎn)個(gè)數(shù)為2的手勢為手勢2、手勢6和手勢8,分為第三類;指尖點(diǎn)個(gè)數(shù)為3的手勢為手勢3和手勢7,分為第四類;指尖點(diǎn)個(gè)數(shù)為4的手勢為手勢4,分為第五類;指尖點(diǎn)個(gè)數(shù)為5的手勢為手勢5,分為第六類。例如,如圖7所示為三類,指尖點(diǎn)個(gè)數(shù)為2的手勢,從左到右依次為手勢2、手勢6和手勢8。列出的手勢按指尖點(diǎn)個(gè)數(shù)分類的分類表如表1所示。
表1手勢按指尖點(diǎn)個(gè)數(shù)分類的分類表
步驟e、計(jì)算機(jī)2調(diào)用hu矩特征值計(jì)算模塊計(jì)算出各個(gè)手勢的輪廓圖像的hu矩特征值,并計(jì)算出各個(gè)手勢修正后的hu矩特征值,其中,計(jì)算機(jī)2計(jì)算第r個(gè)手勢修正后的hu矩特征值
具體實(shí)施時(shí),步驟b03與步驟203中的搜尋步長可以相等也可以不相等。
步驟a至e中構(gòu)建手勢多模板庫的方法,也采用了改進(jìn)d-p算法對手勢輪廓圖像進(jìn)行多邊形逼近擬合后,再進(jìn)行指尖點(diǎn)檢測,再根據(jù)指尖點(diǎn)個(gè)數(shù)進(jìn)行分類的方法,與現(xiàn)有技術(shù)中僅僅簡單構(gòu)建出手勢模板庫,進(jìn)行模板匹配的方法相比,大大減小了手勢匹配的信息量,能夠有效提高手勢識別的速率和準(zhǔn)確率。將此種構(gòu)建手勢多模板庫的方法與步驟一至四中的手勢識別方法相配合,更進(jìn)一步提高了手勢識別的速率和準(zhǔn)確率,手勢識別時(shí)間能夠減小原來手勢識別所需時(shí)間的三分之一左右。
綜上所述,本發(fā)明采用改進(jìn)d-p算法對攝像頭1拍攝到的手勢圖像進(jìn)行多邊形逼近擬合,再進(jìn)行指尖點(diǎn)個(gè)數(shù)檢測,對應(yīng)找到手勢多模板庫中對應(yīng)的手勢類別,然后再根據(jù)hu矩特征值進(jìn)行匹配的手勢確定,采用這種先分類再進(jìn)行匹配的方法,能夠良好的減少匹配的次數(shù),提高手勢匹配的速率。并且,通過多模板匹配,即對一種手勢的不同種類進(jìn)行匹配,能夠提高識別準(zhǔn)確率,有效地減少了匹配過程中的誤判率。
以上所述,僅是本發(fā)明的較佳實(shí)施例,并非對本發(fā)明作任何限制,凡是根據(jù)本發(fā)明技術(shù)實(shí)質(zhì)對以上實(shí)施例所作的任何簡單修改、變更以及等效結(jié)構(gòu)變化,均仍屬于本發(fā)明技術(shù)方案的保護(hù)范圍內(nèi)。