本發(fā)明涉及一種人機(jī)交互系統(tǒng)裝置及操作方法,特別是涉及基于手勢識別的人機(jī)交互系統(tǒng)裝置及操作方法。
背景技術(shù):
隨著科學(xué)技術(shù)的迅猛發(fā)展與計算機(jī)視覺的日益普及,人們對人機(jī)交流自然性的要求越來越高,一切傳統(tǒng)的人機(jī)交流方式,如鼠標(biāo)、鍵盤、麥克風(fēng)等日益滿足不了人們的需求。將人手作為計算機(jī)與人之間的交流手段,相比較起其他的交流手段更加自然、簡潔、豐富和直接,故能夠提供手勢識別的計算機(jī)會使人機(jī)之間的交流更加的自然方便。
目前的手勢識別系統(tǒng)多采用以下兩種:
(1)數(shù)據(jù)手套或佩戴物:此方式可降低檢測和識別算法的復(fù)雜性,但佩戴式的操作方式顯然難以滿足自然的人機(jī)交互的需要;
(2)基于3D深度相機(jī):3D掃描設(shè)備體積較大,硬件成本較高,所需運(yùn)算能力更高,難以集成并應(yīng)用到大眾化的智能終端上。
其次,傳統(tǒng)的掌間定位算法有個缺陷:當(dāng)手成水平狀態(tài)時,無法準(zhǔn)確定位到其中某個掌間點(diǎn),導(dǎo)致了手勢識別的局限性。
申請公布號為CN105138136A的發(fā)明專利申請公開了一種“手勢識別裝置、手勢識別方法及手勢識別系統(tǒng)”,該識別系統(tǒng)包括有一種手勢識別裝置,手勢識別裝置包括設(shè)置在與手指位置相應(yīng)的至少一個傳感器,輸入方式判斷單元和輸入內(nèi)容生成單元。該發(fā)明專利申請實現(xiàn)了虛擬人機(jī)交互,可得到快速準(zhǔn)確的 模擬虛擬內(nèi)容,但其裝置需要設(shè)置傳感器用于檢測識別,所需硬件多且成本較高。
申請公布號為CN104992171A的發(fā)明專利申請公開了一種“一種基于2D視頻序列的手勢識別及人機(jī)交互方法和系統(tǒng)”,該系統(tǒng)主要涉及一種人機(jī)交互方法,通過構(gòu)建人手的聯(lián)合特征模型對2D攝像頭運(yùn)動前景下人手的姿態(tài)和手勢進(jìn)行識別。的該發(fā)明專利申請實現(xiàn)在復(fù)雜背景下的目標(biāo)人手甄選,并實現(xiàn)對人手的精確度、高穩(wěn)定性的跟蹤,但需遍歷提取聯(lián)合特征模型,與樣本庫的樣本匹配,模塊及過程多,較為繁瑣耗時,且沒有具體精確定位到指尖。
申請公布號為CN105045398A的發(fā)明專利申請公開了一種“一種基于手勢識別的虛擬現(xiàn)實交互設(shè)備”,該設(shè)備包括3D攝像頭接口、頭盔式虛擬現(xiàn)實顯示器、信號處理組件以及移動設(shè)備接口。該發(fā)明專利申請可捕獲含有深度信息的使用者手部的待測圖像序列并經(jīng)過處理識別,實現(xiàn)虛擬現(xiàn)實交互,但使用者需佩戴頭盔使用,難以滿足自然的人機(jī)交互的需求。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提供一種基于手勢識別的人機(jī)交互系統(tǒng)裝置,該裝置采用基于單目攝像頭下捕捉的視頻進(jìn)行手勢跟蹤的方法,通過人機(jī)交互程序?qū)τ脩羰謩莸淖R別處理,最終實現(xiàn)對物理應(yīng)用設(shè)備的操控。
本發(fā)明的另一個目的在于提供一種應(yīng)用上述基于手勢識別的人機(jī)交互系統(tǒng)裝置的操作方法,提出掌間點(diǎn)計算的解決方法,并采用Camshift算法,實現(xiàn)對鍵盤鼠標(biāo)的模擬,解決現(xiàn)有的需用大量硬件設(shè)備感應(yīng)的人機(jī)交互方式的局限性問題,使人機(jī)交互更加自然、方便,并較好解決了手勢多義性、多樣性帶來的難題。
本發(fā)明解決上述技術(shù)問題的技術(shù)方案為:
一種基于手勢識別的人機(jī)交互系統(tǒng)裝置及操作方法,其特征在于,其中:
所述系統(tǒng)裝置包括單目攝像頭、安裝有人機(jī)交互程序的PC機(jī)、PLC板和物理應(yīng)用設(shè)備。其中,所述的單目攝像頭用于捕獲用戶的手勢圖像;所述的PC機(jī)通過USB接口獲取單目攝像頭捕獲的手勢圖像,其中的人機(jī)交互程序?qū)D像進(jìn)行識別、分析及處理;所述的PLC板通過串口或USB獲取經(jīng)PC機(jī)處理后的手勢信息;所述的物理應(yīng)用設(shè)備通過電路獲取信息并對信息進(jìn)行反饋實施。
所述系統(tǒng)操作方法包括手勢輸入模塊、指尖定位模塊、手勢跟蹤模塊和鍵鼠映射模塊,其中:
所述的手勢輸入模塊用于單目攝像頭捕獲用戶手勢,并將捕獲到的手勢圖像輸入指尖定位模塊;
所述的指尖定位模塊用于定位手勢圖像中的指尖位置,并根據(jù)此識別出用戶手勢的類型和手勢的位置,作為手勢跟蹤模塊和鍵鼠映射模塊的輸入;
所述的手勢跟蹤模塊用于追蹤用過戶手勢的移動軌跡,并獲取手勢的移動量,作為鍵鼠映射模塊的輸入;
所述的鍵鼠映射模塊用于將用戶手勢的類型以及手勢移動量識別為對應(yīng)的鍵盤和鼠標(biāo)的操作,并據(jù)此進(jìn)行計算機(jī)控制。
本發(fā)明的基于手勢識別的人機(jī)交互系統(tǒng)操作方法中的指尖定位模塊,包括以下步驟:
(1)攝像頭載入圖像:調(diào)出攝像頭載入圖像;
(2)圖像預(yù)處理:對圖像進(jìn)行色彩空間轉(zhuǎn)換、膚色閾值處理、圖像去噪處理、圖像二值處理及開運(yùn)算處理;
(3)輪廓與指尖尋找:基于輪廓上的掌間點(diǎn)和指尖點(diǎn)的尋找;
(4)掌間定位和指尖過濾:通過指尖定位進(jìn)行掌間定位計算,掌間與指尖間的定位起著相互制約的作用。
本發(fā)明的基于手勢識別的人機(jī)交互系統(tǒng)操作方法的指尖定位模塊,在步驟(2)中,所述圖像預(yù)處理包括色彩空間轉(zhuǎn)換、膚色閾值處理、圖像去噪處理、圖像二值處理以及開運(yùn)算處理,其中:
色彩空間轉(zhuǎn)換:將RGB圖像轉(zhuǎn)換到HSV色彩模型下;
膚色閾值處理:利用OpenCV的otsu自適應(yīng)閾值分割;
圖像去噪處理:去除圖像中識別目標(biāo)周圍的噪聲;
圖像二值處理:將圖像的前景與背景進(jìn)行分割;
開運(yùn)算處理:消除經(jīng)二值處理后圖像中不連通的散點(diǎn),并填充缺失點(diǎn)。
本發(fā)明的基于手勢識別的人機(jī)交互系統(tǒng)操作方法的指尖定位模塊,在步驟(3)中,所述輪廓與指尖尋找包括輪廓查找、指尖點(diǎn)查找、掌間定位以及指尖過濾,其中:
輪廓查找:通過四連通或八連通獲取多個輪廓后篩選唯一輪廓;
指尖點(diǎn)查找:識別當(dāng)前指尖的個數(shù)和位置;
掌間定位:計算極小值點(diǎn)得到掌間定位;
指尖過濾:篩選并去除多余的指尖點(diǎn)。
本發(fā)明的基于手勢識別的人機(jī)交互系統(tǒng)操作方法的指尖定位模塊,在步驟(4)中,所述掌間定位和指尖過濾,其中,針對掌間點(diǎn)計算,提出了兩種解決方案:利用極小值原理、利用三角形兩邊之和大于第三邊的原理。
本發(fā)明的基于手勢識別的人機(jī)交互系統(tǒng)操作方法的手勢跟蹤模塊,包括以 下步驟:
(1)跟蹤區(qū)域選擇:通過指尖定位選取感興趣的區(qū)域;
(2)Camshift跟蹤手部算法處理:主要通過視頻中運(yùn)動物體的顏色信息來達(dá)到跟蹤的目的;
(3)跟蹤重心與面積提?。翰捎脦罘▉碛嬎阒讣庾鴺?biāo)與跟蹤重心的移動向量,跟蹤面積的變化與指尖和掌間點(diǎn)的數(shù)量,據(jù)此做簡單的判斷。
進(jìn)一步地,所述Camshift跟蹤手部算法處理通過指尖坐標(biāo)定位與Camshift算法結(jié)合起來,將Camshift算法改進(jìn)為一個無監(jiān)督學(xué)習(xí)的目標(biāo)跟蹤方法。
本發(fā)明與現(xiàn)有技術(shù)相比具有以下的有益效果:
1、對2D攝像頭捕捉到的圖像進(jìn)行識別,并通過指尖定位、手勢跟蹤及映射三大模塊實現(xiàn)鍵鼠模擬,克服現(xiàn)有技術(shù)方案所需硬件設(shè)備多、成本高的缺點(diǎn);
2、提出兩種解決方案計算掌間點(diǎn),解決了現(xiàn)有算法無法準(zhǔn)確定位到其中某個掌間點(diǎn)的難題,提高了手勢識別的準(zhǔn)確性。
附圖說明
圖1為本發(fā)明的基于手勢識別的人機(jī)交互系統(tǒng)裝置的一個具體實施方式的結(jié)構(gòu)示意圖。
圖2為本發(fā)明的一個具體實施方式中人機(jī)交互系統(tǒng)的模塊結(jié)構(gòu)框圖。
圖3為本發(fā)明的一個具體實施方式中指尖定位模塊圖像預(yù)處理步驟的工作流程圖。
圖4為本發(fā)明的一個具體實施方式中手勢圖像經(jīng)開運(yùn)算處理后的前后對比圖。
圖5為本發(fā)明的一個具體實施方式中指尖定位模塊輪廓與指尖尋找步驟的 工作流程圖。
圖6為四連通區(qū)域和八連通區(qū)域的原理對照圖。
圖7為一個凸包集,即指尖點(diǎn)集。
圖8為掌間點(diǎn)示意圖。
圖9為三角形頂點(diǎn)到兩點(diǎn)的距離大于該邊上所有點(diǎn)到兩點(diǎn)距離的原理描述圖。
圖10為跟蹤區(qū)域選擇示意圖。
具體實施方式
下面結(jié)合實施例及附圖對本發(fā)明作進(jìn)一步詳細(xì)的描述,但本發(fā)明的實施方式不限于此。
參見圖1,本發(fā)明的基于手勢識別的人機(jī)交互系統(tǒng)裝置由圖中幾個重要組件構(gòu)成,其中:
所述的用戶1通過手勢表達(dá)出其操作指令;所述的單目攝像頭2運(yùn)行工作并捕獲用戶的手勢圖像,其中,所述的單目攝像頭2通過USB接口將其捕獲的圖像傳送給所述的PC機(jī)3;所述的PC機(jī)3接收到圖像后,其中的人機(jī)交互程序?qū)κ謩輬D像進(jìn)行識別、分析及處理,其中,所述的PC機(jī)通過串口或USB接口將處理后的手勢信息發(fā)送給所述的PLC板4;所述的PLC板4獲取PC機(jī)發(fā)送的信息后通過電路將信息傳送給所述的物理應(yīng)用設(shè)備5;所述的物理應(yīng)用設(shè)備5獲取信息并對信息進(jìn)行反饋實施,其中,本實施例中所述的物理應(yīng)用設(shè)備5以空調(diào)為例,但不限于此。
參見圖2,所述操作方法包括手勢輸入模塊、指尖定位模塊、手勢跟蹤模塊和鍵鼠映射模塊,其中:
(1)手勢輸入模塊:單目攝像頭捕獲用戶手勢圖像,并將捕獲到的手勢 圖像傳送給PC機(jī),進(jìn)而輸入指尖定位模塊;
(2)指尖定位模塊:對攝像頭捕捉的圖片進(jìn)行一系列預(yù)處理,之后通過尋找輪廓與指尖點(diǎn)定位,通過掌間點(diǎn)來再次定位。指尖定位模塊由以下部分組成:攝像頭載入圖像、圖像預(yù)處理、輪廓與指尖點(diǎn)尋找、掌間定位:
(2.1)攝像頭載入圖像:調(diào)出攝像頭,進(jìn)行圖像載入。
(2.2)圖像預(yù)處理:參見圖3,預(yù)處理過程包括對圖像進(jìn)行色彩空間轉(zhuǎn)換、膚色閾值處理、圖像去噪處理、圖像二值處理、開運(yùn)算處理,具體描述如下:
(2.2.1)色彩空間轉(zhuǎn)換:一般情況下,圖片都是RGB色彩模型下的。但是RGB三分量間常有很高的相關(guān)性,直接利用這些分量往往不能達(dá)到預(yù)想的效果,所以需要將RGB圖像轉(zhuǎn)換到HSV色彩模型下。其中,H、S、V的值可分別由公式(2)、(3)、(4)得到。
V=MAX (4)
以上公式(1)中MAX、MIN分別是RGB圖像的最大值、最小值,H、S、V分別是HSV圖像的H值、S值和V值。
轉(zhuǎn)換到HSV色彩空間后,通過取H值的0~180進(jìn)行閾值分割,則可獲取到 所需的二值圖像。
(2.2.2)膚色閾值處理:利用OpenCV的otsu自適應(yīng)閾值分割。程序流程為:計算直方圖并歸一化histogram;計算圖像灰度均值avgValue;計算直方圖的零階w[i]和一級矩u[i]計算并找到最大的類間方差(between-class variance)。
variance[i]=(avgValue*w[i]-u[i])*(avgValue*w[i]-u[i])/(w[i]*(1-w[i]))對應(yīng)此最大方差的灰度值即為要找的閾值。
(2.2.3)圖像去噪處理:現(xiàn)實中的數(shù)字圖像在數(shù)字化和傳輸過程中常受到成像設(shè)備與外部環(huán)境噪聲干擾等影響,故需對圖像進(jìn)行去噪處理。本實施例使用團(tuán)塊面積閾值法進(jìn)行圖像濾波去噪聲,去除圖像中目標(biāo)對象周圍的噪聲,過程為:
采用二值數(shù)學(xué)形態(tài)學(xué)中的連通組元提取算法來求取團(tuán)塊的面積,小于閾值的團(tuán)塊為噪聲,將該團(tuán)塊的像素點(diǎn)灰度值都設(shè)成255即可去除噪聲。
(2.2.4)圖像二值處理:進(jìn)行圖像二值化,將圖像的前景與背景進(jìn)行分割。圖像二值化指將圖像上的像素點(diǎn)的灰度值設(shè)置為0或255,使得整個圖像呈現(xiàn)出明顯的黑白效果。圖像二值化是圖像分析與處理中最常見最重要的處理手段,其使得圖像中數(shù)據(jù)量大為減少,從而能凸顯出目標(biāo)的輪廓。在OpenCV中,可用關(guān)鍵函數(shù)cvThreshold()實現(xiàn)圖像的二值化。
(2.2.5)開運(yùn)算處理:為了消除二值化后不連通的散點(diǎn)同時填充手部中的缺失點(diǎn),從而達(dá)到較好的圖像效果,使用形態(tài)學(xué)方法中的開運(yùn)算,即先腐蝕后膨脹。設(shè)f(x,y)是輸入圖像,b(x,y)是結(jié)構(gòu)元素,用結(jié)構(gòu)元素b對輸入圖像f進(jìn)行腐蝕和膨脹運(yùn)算分別定義為:
(f⊙b)(s,t)=min{f(s+x,t+y)+b(x,y)|(s+x,t+y)∈Df,(x,y)∈Db} (5)
其中,s,t為輸入圖像f的參數(shù),x,y為結(jié)構(gòu)元素b的參數(shù),Df為圖像f的一個集合,Db為結(jié)構(gòu)元素b的一個集合。
參見圖3,為開運(yùn)算處理的手勢圖像對比圖。
(2.3)輪廓與指尖點(diǎn)尋找:對預(yù)處理后的圖像進(jìn)行輪廓尋找,并基于輪廓進(jìn)行一系列步驟,尋找指尖點(diǎn)。參見圖5,輪廓與指尖點(diǎn)尋找過程包括輪廓查找、指尖點(diǎn)查找、掌間定位以及指尖過濾,具體描述如下:
(2.3.1)輪廓查找:一個輪廓一般對應(yīng)一系列的點(diǎn),也就是圖像中的一條曲線,是通過順序找出邊緣點(diǎn)來跟蹤邊界的。由于每個區(qū)域內(nèi)的像素值相同,可通過四連通或八連通區(qū)域進(jìn)行輪廓查找。四連通和八連通可標(biāo)注二進(jìn)制圖像中已連接的部分,語法實現(xiàn)為L=(BW,n)[L,num]。其中BW為輸入圖像;n可取值為4或8表示連接四連通或八連通區(qū)域;num為找到的連通區(qū)域數(shù)目;L為輸出圖像矩陣,其元素值為整數(shù),背景被標(biāo)記為0,第一個連通區(qū)域被標(biāo)記為1,第二個連通區(qū)域被標(biāo)記為2,依此類推。
參見圖6,四連通和八連通的原理對照圖,圖中的0是中心像素點(diǎn)所在的位置就是四連通或八連通區(qū)域,即四連通區(qū)域指0的上下左右四個點(diǎn),八連通還包含左上角、右上角、左下角和右下角四個位置,故八連通區(qū)域包含了四連通區(qū)域。
輪廓查找結(jié)束后,會得到多個輪廓,通過最大輪廓定義篩選獲取唯一的輪廓作為手勢輪廓,并用于后續(xù)的指尖查找。
(2.3.2)指尖點(diǎn)查找:從點(diǎn)集的角度來說,指尖在手掌輪廓中是一個凸包,凸包是指一個最小凸多邊形,滿足一個點(diǎn)集中的所有點(diǎn)在多邊形邊上或者內(nèi)部,參見圖7,線段圍成的多邊形就是點(diǎn)集{p0,p1……p12}的凸包,其中 p0,p1,……p12均指節(jié)點(diǎn)或頂點(diǎn)。這里用凸包查找進(jìn)行指尖的定位,即識別手勢中凸包的個數(shù)和位置,即可識別出當(dāng)前指尖的個數(shù)和位置。
(2.3.3)掌間定位:通過指尖定位進(jìn)行掌間定位計算,掌間與指尖間的定位起著相互制約的作用。參見圖8的掌間示意圖,圖中A-E為對應(yīng)的掌間點(diǎn)。通過計算極小值點(diǎn)得到掌間定位,即通過公式(7)找出指尖點(diǎn)間的各點(diǎn)坐標(biāo)與其所對應(yīng)前后坐標(biāo)點(diǎn)間的相對位置來做出的判斷找到基于相鄰兩個指尖點(diǎn)間的極小值點(diǎn)。
f(x0)≥f(x1)and f(x0)≥f(x2) (7)
其中f(x0)為當(dāng)前垂直方向像素點(diǎn)坐標(biāo)值,f(x1)與f(x2)分別為其前驅(qū)坐標(biāo)值與后繼坐標(biāo)值,代碼中選擇的前驅(qū)后繼跨度為3個像素點(diǎn),此意圖是為了防止像素點(diǎn)間構(gòu)成線條的布局影響。該算法有個缺陷,當(dāng)手成水平狀態(tài)時,則無法準(zhǔn)確定位到其中某個掌間點(diǎn)。
由于在三角形內(nèi)部過任意角做一條穿過對邊的線所圍成的三角形的三邊和沒有原三角形三邊大的原理。參見圖9,可知三角形頂點(diǎn)到兩點(diǎn)的距離大于該邊上所有點(diǎn)到兩點(diǎn)距離,即AB+AC>BD+DC,所以解決方案可基于此原理通過公式(8)獲取相鄰指尖點(diǎn)(即凸包點(diǎn))間輪廓點(diǎn)至兩點(diǎn)間歐幾里德距離和最大值點(diǎn),這種方法可以有效地解決當(dāng)手成水平狀態(tài)時,無法檢測掌間點(diǎn)的問題。
其中ACB為相鄰指尖至目標(biāo)歐式距離之和,(Cx,Cy)為目標(biāo)像素點(diǎn)C的坐標(biāo),(Ax,Ay)、(Bx,By)分別為相鄰指尖點(diǎn)A與B的坐標(biāo)。目標(biāo)點(diǎn)C從A點(diǎn)出發(fā),當(dāng)ABC大于MAX時則賦值給MAX,如此直至C到達(dá)B點(diǎn),最終獲取的MAX點(diǎn)則為所需的 掌間點(diǎn)。
此方法求出的并非全是指尖間的掌間點(diǎn),有時會包含手掌或手腕的兩側(cè),可以通過向量夾角公式(11)去除該兩點(diǎn)。
px=Ax-Cx,py=Ay-Cy,qx=Bx-Cx,qy=BY-Cy (10)
px、py與qx、qy分別表示從C點(diǎn)出發(fā)指向A與B點(diǎn)的向量,如此便可有向量夾角公式得出cosθ,故可以定義當(dāng)cosθ小于0時則該點(diǎn)去除。
(2.3.4)指尖過濾:獲取指尖點(diǎn)后最重要的部分。但是指尖部位并不是只有一個指尖點(diǎn),故主要工作是進(jìn)行篩選,首先需要去除多余的指尖點(diǎn)。使用函數(shù)deldot()刪除距離較近的指尖點(diǎn),處理完緊密的點(diǎn)后,便剔除非指尖的指尖點(diǎn)。此時需要用到掌間點(diǎn),通過掌間點(diǎn)在兩指尖之間這一特性,查找同時符合相鄰點(diǎn)之間有掌間點(diǎn)和距掌間點(diǎn)的距離超過自定的閾值這兩個條件時,即可繪制出指尖點(diǎn)與掌間點(diǎn)。
(3)手勢跟蹤模塊:追蹤用戶手勢的移動軌跡,并獲取手勢的移動量,作為鍵鼠映射模塊的輸入信息。采用Camshift改進(jìn)算法進(jìn)行手部跟蹤即不需要在跟蹤之前用鼠標(biāo)選取跟蹤區(qū)域。手勢跟蹤模塊由以下部分組成:跟蹤區(qū)域選擇、Camshift算法改進(jìn)、跟蹤重心、面積提取:
(3.1)跟蹤區(qū)域選擇:通過指尖定位選取感興趣的區(qū)域。
(3.2)Camshift跟蹤手部算法改進(jìn):Camshift算法,即”Continuously adaptive Mean-Shift”算法,是一種運(yùn)動跟蹤算法。在通常的跟蹤處理中,它主要通過視頻中運(yùn)動物體的顏色信息來達(dá)到跟蹤的目的。其是Meanshift算法的改進(jìn)。
Mean-Shift算法僅對數(shù)據(jù)局部區(qū)域中的點(diǎn)進(jìn)行處理,處理完成后再移動區(qū)域。與Mean-Shift不同的是,Camshift搜索窗口會自動調(diào)整尺寸。如果有一個易于分割的分布(如保持緊密的手特征),此算法可以根據(jù)手在張開與拳握時手的尺寸來自動調(diào)整窗口尺寸。在跟蹤的應(yīng)用中,它會把由前一幀計算出的新尺寸作為下一幀的跟蹤區(qū)域。
在Mean-Shift與Camshift跟蹤算法中,都需要事先選定感興趣區(qū)域,一般來說,觸發(fā)一條鼠標(biāo)事件來選取跟蹤范圍,但這屬于有監(jiān)督性的,并不符合本項目的期望。故需要進(jìn)行Camshift算法改進(jìn),使之可以無監(jiān)督選取感興趣的區(qū)域。本文主要通過指尖定位來獲取該區(qū)域,即在達(dá)到指尖定位的功能后,分別選取指尖坐標(biāo)x、y值的組成一個坐標(biāo)作為左上角點(diǎn),寬度和高度取水平垂直最長距離的最小值。參見圖10,A點(diǎn)與B點(diǎn)則分別為指尖的左上角點(diǎn)與右下角點(diǎn)、左上角點(diǎn)的坐標(biāo)值即可保留,再對兩點(diǎn)進(jìn)行差值運(yùn)算通過公式MIN(|Ax-Bx|,|Ay-By|)計算得出跨度大小。其中,(Ax,Ay)、(Bx,By)分別為點(diǎn)A與點(diǎn)B的坐標(biāo)。
(3.3)跟蹤重心與面積提?。褐饕獮槟M鍵盤和鼠標(biāo)的算法設(shè)計。本發(fā)明專利采用幀差法來計算指尖坐標(biāo)與跟蹤重心的移動向量,跟蹤面積的變化與指尖和掌間點(diǎn)的數(shù)量,做一個簡單的判斷。
(4)映射模塊:整合指尖定位模塊與手勢跟蹤模塊,對在攝像頭下的操作與模擬鍵鼠操作間起著搭建樞紐的作用。其包括鍵盤模擬和鼠標(biāo)模擬:
(4.1)鍵盤模擬:用到的參數(shù)為跟蹤重心與跟蹤面積,首先通過幀差法計算出重心移動向量與面積變化向量。在模擬方向鍵的計算中,用事先定義的時間來計算出移動的速度,當(dāng)超過該速度則判斷方向按鍵。由于垂直方向比水平方向做功多,所以默認(rèn)垂直方向鍵的優(yōu)先級較高。空格的優(yōu)先級是最低的, 判斷其按鍵時,讓變化后的面積與上一幀的面積進(jìn)行對比,如果變化后的面積小于上一面積0.6倍,則判定激活空格鍵。
(4.2)鼠標(biāo)模擬:用到的是指尖點(diǎn)與掌間點(diǎn)的個數(shù)。同鍵盤模擬一樣先用幀差發(fā)計算出指尖的移動向量與指尖、掌間點(diǎn)的個數(shù)。然后通過事先定義的時間來計算出移動的速度,當(dāng)超過該速度時則判斷移動的向量,在賦值給當(dāng)前鼠標(biāo)的坐標(biāo)。掌間點(diǎn)的個數(shù)是為了判定是否進(jìn)行鼠標(biāo)的移動與是否進(jìn)行鼠標(biāo)單擊。
上述為本發(fā)明較佳的實施方式,但本發(fā)明的實施方式并不受上述內(nèi)容的限制,其他的任何未背離本發(fā)明的精神實質(zhì)與原理下所作的改變、修飾、替代、組合、簡化,均應(yīng)為等效的置換方式,都包含在本發(fā)明的保護(hù)范圍之內(nèi)。