本發(fā)明涉及電子設(shè)備的手勢識別及跟蹤領(lǐng)域,特別涉及一種基于拳頭檢測作為輔助信息的手勢跟蹤方法。
背景技術(shù):現(xiàn)有技術(shù)中,手勢識別算法大體分為兩類,一類是基于3D模型的,例如Kinect使用紅外檢測目標(biāo)深度值,另一類是基于圖像。基于3D模型的方案,往往需要特殊硬件設(shè)備支持,使用成本高,并且有使用場合上的限制?;趫D像的方案只需要有普通攝像頭支持,直接根據(jù)可見光圖像檢測某種手勢,使用成本較低,使用自然、方便,符合以人為本的要求。但是由于現(xiàn)實(shí)環(huán)境中復(fù)雜的背景、不勻的光照,以及攝像頭本身的精度和噪聲差別等等因素,極大的增加了手勢識別的難度,導(dǎo)致準(zhǔn)確率比較低、魯棒性差等問題。進(jìn)一步詳細(xì)分析可知,基于圖像的手勢識別相對基于3D模型的最大的問題是準(zhǔn)確率低,魯棒性差,容易丟失目標(biāo)。導(dǎo)致這個(gè)問題主要有兩個(gè)因素:1.現(xiàn)實(shí)環(huán)境中,背景和光照復(fù)雜,攝像頭本身的參數(shù)、精度和噪聲強(qiáng)度千差萬別。2.手的關(guān)節(jié)多,自由度大,姿態(tài)很復(fù)雜。第一個(gè)因素極大的增加了在圖像中檢測到手并識別出手勢的難度;第二個(gè)因素增加了對手勢檢測和識別器的學(xué)習(xí)難度。第一個(gè)因素隨環(huán)境變化而不同,是無法做到人為控制的,只能從第二個(gè)因素入手。經(jīng)分析可知,拳頭在手的各種姿態(tài)中,自由度最少,因此簡單而易于識別。本發(fā)明將拳頭這個(gè)特殊的手勢用于輔助普通手勢的檢測、跟蹤和識別,可以有效的提高手勢檢測的靈敏度和準(zhǔn)確率,還可以解決跟蹤初始化,以改進(jìn)手勢丟失、自動恢復(fù)跟蹤等問題。
技術(shù)實(shí)現(xiàn)要素:有鑒于此,本發(fā)明的主要目的在于提供一種基于拳頭檢測作為輔助信息的手勢跟蹤方法。總共分三部分:分別為拳頭圖像訓(xùn)練方法、拳頭跟蹤方法和拳頭作為輔助信息的手勢跟蹤方法。1)拳頭圖像的訓(xùn)練方法,包括如下步驟:step11:初始化訓(xùn)練樣本集合,該集合由若干正樣本和負(fù)樣本圖片組成,所謂正樣本,即剛好包含著拳頭的圖片,負(fù)樣本是不含有拳頭的任何圖片;step12:設(shè)定訓(xùn)練的參數(shù):Haar特征的類型,檢測器層數(shù)N,每一層的目標(biāo)檢測率P和誤檢率R,每一層的最大弱檢測器數(shù)T;step13:初始化i,i=1;step14:訓(xùn)練第i層,訓(xùn)練根據(jù)定義好的Haar類型提取特征,用AdaBoost算法進(jìn)行訓(xùn)練,訓(xùn)練的停止準(zhǔn)則是檢測率P和誤撿率R是否達(dá)到,或者弱檢測器個(gè)數(shù)是否達(dá)到T;step15:更新i,i=i+1,如果i>=N,跳轉(zhuǎn)到step17;step16:更新訓(xùn)練樣本集合,用已經(jīng)訓(xùn)練好的若干層組成的層級檢測器對當(dāng)前正負(fù)樣本進(jìn)行檢測,將被拒絕的樣本從訓(xùn)練集合里剔除,跳轉(zhuǎn)到step14;step17:訓(xùn)練停止。2)拳頭圖像的檢測方法,包括如下步驟:step21:根據(jù)預(yù)設(shè)的窗口尺寸和步長掃描圖片,將當(dāng)前窗口里的圖像數(shù)據(jù)作為待定目標(biāo)輸入檢測器;step22:檢測待定目標(biāo),對于每一層,根據(jù)學(xué)習(xí)好的模型里指定的若干特征計(jì)算響應(yīng)值,輸入該層的分類器h,得到判決,如果判決為負(fù)樣本,則檢測完成;如果該樣本通過了所有層的檢測,則為正樣本,因此則可以認(rèn)為這張圖像里含有拳頭。3)拳頭檢測作為輔助信息的手勢跟蹤方法,包括如下步驟:step30:應(yīng)用啟動拳頭檢測器;step31:拳頭檢測器處于伺候狀態(tài),監(jiān)視每一幀視頻圖像;step32:使用2)部分的拳頭檢測方法對圖像進(jìn)行檢測,如果檢測到拳頭,則提示用戶可以開始具體的手勢指令,并將監(jiān)視視頻的控制權(quán)交給應(yīng)用程序,應(yīng)用程序啟動普通手勢識別器進(jìn)行手勢的跟蹤和識別;step33:如果在某個(gè)完整的手勢序列完成之前發(fā)生了手勢丟失的情況,應(yīng)用程序提示用戶發(fā)生了跟蹤丟失的情況,開始倒計(jì)時(shí),并將監(jiān)視視頻的控制權(quán)交給拳頭檢測器,跳轉(zhuǎn)到step35,恢復(fù)跟蹤;step34:如果在完整的手勢指令完成之后,新的手勢指令開始之前發(fā)生了丟失,則跳轉(zhuǎn)到step31;step35:如果用戶出示拳頭并被檢測到,跳轉(zhuǎn)回step32,繼續(xù)進(jìn)行檢測到拳頭后的步驟;step36:如果超過預(yù)設(shè)的時(shí)間,用戶沒有出示拳頭或者沒有被檢測到,則視為用戶取消了本次手勢指令,跳轉(zhuǎn)回step31。優(yōu)選的,應(yīng)用程序通過文字、語音或者圖標(biāo)方式對用戶進(jìn)行提示。附圖說明圖1為本發(fā)明實(shí)施例拳頭檢測方法的示意流程圖。其中l(wèi)ayer表示迭代的索引值,L表示最大迭代層數(shù),x表示輸入的一個(gè)待測樣本,hi(x)表示第i層的判決器,y是判決器的輸出值。圖2為本發(fā)明實(shí)施例基于拳頭作為輔助信息的手勢跟蹤流程圖。具體實(shí)施方式下面結(jié)合附圖,詳細(xì)介紹本發(fā)明提供的基于拳頭檢測作為輔助信息的手勢跟蹤方法及裝置。第一部分,作為識別拳頭圖像的基礎(chǔ),本發(fā)明提供了一種拳頭圖像的訓(xùn)練方法,本發(fā)明的拳頭訓(xùn)練屬于有監(jiān)督學(xué)習(xí)算法。訓(xùn)練流程如下:step11:初始化訓(xùn)練樣本集合,該集合由若干正樣本和負(fù)樣本圖片組成。所謂正樣本既剛好包含著拳頭的圖片,負(fù)樣本是不含有拳頭的任何圖片,圖片大小例如為24×24。step12:設(shè)定訓(xùn)練的參數(shù):Haar特征的類型,檢測器層數(shù)N,每一層的目標(biāo)檢測率P和誤檢率R,每一層的最大弱檢測器數(shù)T。step13:初始化i,i=1。step14:訓(xùn)練第i層。訓(xùn)練根據(jù)定義好的Haar類型提取特征,用AdaBoost算法進(jìn)行訓(xùn)練,訓(xùn)練的停止準(zhǔn)則是檢測率P和誤撿率R是否達(dá)到,或者弱檢測器個(gè)數(shù)是否達(dá)到T。step15:更新i,i=i+1。如果i>=N,跳轉(zhuǎn)到step17。step16:更新訓(xùn)練樣本集合。用已經(jīng)訓(xùn)練好的若干層組成的層級檢測器對當(dāng)前正負(fù)樣本進(jìn)行檢測,將被拒絕的樣本從訓(xùn)練集合里剔除。跳轉(zhuǎn)到step14。step17:訓(xùn)練停止。第二部分,基于上述對拳頭圖像的訓(xùn)練,即可完成對拳頭圖像的檢測工作,如圖1所示,拳頭圖像檢測方法包括步驟:step21:根據(jù)預(yù)設(shè)的窗口尺寸和步長掃描圖片,將當(dāng)前窗口里的圖像數(shù)據(jù)作為待定目標(biāo)輸入檢測器。step22:檢測待定目標(biāo)。對于每一層,根據(jù)學(xué)習(xí)好的模型里指定的若干特征計(jì)算響應(yīng)值,輸入該層的分類器h,得到判決。如果判決為負(fù)樣本,則檢測完成;如果該樣本通過了所有層的檢測,則為正樣本。因此則可以認(rèn)為這張圖里有拳頭,檢測過程可以提前中止。第三部分,基于拳頭檢測作為輔助信息進(jìn)行手勢跟蹤實(shí)現(xiàn)流程。本發(fā)明的手勢跟蹤方法要求用戶在發(fā)出手勢指令之前,首先用拳頭告訴識別軟件要準(zhǔn)備發(fā)出手勢指令,當(dāng)識別軟件檢測到拳頭,就告訴用戶可以發(fā)出手勢指令,然后跟蹤用戶的手勢指令進(jìn)行下一步操作。如果發(fā)生手勢跟蹤丟失,用戶可以通過拳頭恢復(fù)跟蹤。本方案可以內(nèi)嵌到使用手勢檢測和識別的應(yīng)用中,幫助該應(yīng)用提高手勢的檢測率。具體流程如下:step30:應(yīng)用啟動拳頭檢測器。step31:拳頭檢測器處于伺候狀態(tài),監(jiān)視每一幀視頻圖像。step32:使用前述拳頭檢測方法對圖像進(jìn)行檢測,如果檢測到拳頭,則以例如文字、語音或者圖標(biāo)等方式提示用戶可以開始具體的手勢指令,并將監(jiān)視視頻的控制權(quán)交給應(yīng)用程序,應(yīng)用程序啟動普通手勢識別器進(jìn)行手勢的跟蹤和識別。step33:如果在某個(gè)完整的手勢序列完成之前發(fā)生了手勢丟失的情況,應(yīng)用程序以例如文字、語音或者圖標(biāo)等方式提示用戶發(fā)生了跟蹤丟失的情況,開始倒計(jì)時(shí),并將監(jiān)視視頻的控制權(quán)交給拳頭檢測器,跳轉(zhuǎn)到step35;step34:如果在完整的手勢指令完成之后,新的手勢指令開始之前發(fā)生了丟失,則跳轉(zhuǎn)到step31。step35:如果用戶出示拳頭并被檢測到,跳轉(zhuǎn)回step32,繼續(xù)進(jìn)行檢測到拳頭后的步驟。step36:如果超過預(yù)設(shè)的時(shí)間,用戶沒有出示拳頭或者沒有被檢測到,則視為用戶取消了本次手勢指令,跳轉(zhuǎn)回step31。本發(fā)明中,拳頭檢測器由若干層子檢測器級聯(lián)組成,只有通過所有層的檢驗(yàn)的目標(biāo)才被認(rèn)為是拳頭,該檢測器的設(shè)計(jì)方式提高了拳頭檢測的正確率。本領(lǐng)域的技術(shù)人員應(yīng)該理解,本發(fā)明的方法和裝置可以采用硬件、軟件、或硬件和軟件相結(jié)合的方式,通過微處理器、數(shù)字信號處理器、現(xiàn)場可編程邏輯單元、或門陣列等各種方式實(shí)現(xiàn)。綜上所述,雖然本發(fā)明已以優(yōu)選實(shí)施例披露如上,然而其并非用以限定本發(fā)明。本發(fā)明所屬技術(shù)領(lǐng)域的普通技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),可作各種變動與修飾。因此,本發(fā)明的保護(hù)范圍當(dāng)視后附的權(quán)利要求所界定的范圍為準(zhǔn)。