本發(fā)明屬于手勢(shì)識(shí)別領(lǐng)域,具體涉及一種手勢(shì)的多語(yǔ)義識(shí)別方法。
背景技術(shù):
在手勢(shì)交互中,人們往往會(huì)按照自己的操作習(xí)慣來(lái)進(jìn)行交互。因此,經(jīng)過(guò)觀察會(huì)發(fā)現(xiàn)對(duì)于相同的一種手勢(shì)會(huì)應(yīng)用于不同的交互語(yǔ)義中,即手勢(shì)具有語(yǔ)義多樣性。本發(fā)明提出了以手勢(shì)的多語(yǔ)義為出發(fā)點(diǎn),找出相同手勢(shì)的不同語(yǔ)義下的運(yùn)動(dòng)規(guī)律,結(jié)合手勢(shì)識(shí)別和上下文情境得到用戶的意圖。這樣可以達(dá)到一種手勢(shì)表示不同的功能的目的以減少用戶的記憶負(fù)擔(dān)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于解決上述現(xiàn)有技術(shù)中存在的難題,提供一種手勢(shì)的多語(yǔ)義識(shí)別方法,找出相同手勢(shì)的不同語(yǔ)義下的運(yùn)動(dòng)規(guī)律,結(jié)合手勢(shì)識(shí)別和上下文情境得到用戶的意圖。這樣可以達(dá)到一種手勢(shì)表示不同的功能的目的以減少用戶的記憶負(fù)擔(dān)。
本發(fā)明是通過(guò)以下技術(shù)方案實(shí)現(xiàn)的:
一種手勢(shì)的多語(yǔ)義識(shí)別方法,包括:
步驟1:捕獲操作者的手部運(yùn)動(dòng)并得到手勢(shì)圖像,對(duì)所述手勢(shì)圖像進(jìn)行處理,然后判斷是否為開始的手勢(shì),如果是,則轉(zhuǎn)到步驟2,如果否,則轉(zhuǎn)向步驟1;
步驟2:判斷手勢(shì)是否為平移,若是,則轉(zhuǎn)向步驟3,若否,則轉(zhuǎn)向步驟4;
步驟3:記錄并計(jì)算每隔10幀的手勢(shì)的質(zhì)心的位移和時(shí)間,求出速度的均值,轉(zhuǎn)向步驟5;
步驟4:記錄手勢(shì)張開與閉合的角速度變化的時(shí)間,獲得角速度,轉(zhuǎn)向步驟7;
步驟5:若速度的方向出現(xiàn)變化,即左右交替移動(dòng),則判定該手勢(shì)的語(yǔ)義為為掃動(dòng)物體,轉(zhuǎn)向步驟1;否則,轉(zhuǎn)向步驟6;
步驟6:判斷該手勢(shì)的語(yǔ)義為拖移物體還是快速滑動(dòng)物體,判斷完畢后轉(zhuǎn)向步驟1.
步驟7:判斷該手勢(shì)的語(yǔ)義是抓取物體還是縮小物體,判斷完畢后轉(zhuǎn)向步驟1。
所述步驟1中采用Kinect來(lái)捕獲操作者的手部運(yùn)動(dòng),所捕獲的真彩色圖像采用RGB格式,以原數(shù)據(jù)方式存儲(chǔ),在捕獲真彩圖像的同時(shí)將其轉(zhuǎn)換為灰度圖像并保存,形成所述手勢(shì)圖像。
所述步驟1中的判斷是否為開始的手勢(shì)是這樣實(shí)現(xiàn)的:
如果手勢(shì)為張開并保持不動(dòng),則判定為開始,否則,判定為不開始。
所述步驟1中對(duì)手勢(shì)圖像進(jìn)行處理是這樣實(shí)現(xiàn)的:對(duì)手勢(shì)圖像進(jìn)行手勢(shì)分割,將人手從背景中分割出來(lái)。
所述步驟2判斷手勢(shì)是否為平移是這樣實(shí)現(xiàn)的:
計(jì)算兩幀之間的手的質(zhì)心點(diǎn)移動(dòng)的距離,如果該距離超過(guò)設(shè)定的閾值,則為平移,否則不是平移。
所述步驟4是這樣實(shí)現(xiàn)的:
記錄從手勢(shì)張開的第一幀到手勢(shì)閉合的最后一幀之間的時(shí)間t,從手勢(shì)張開到手勢(shì)閉合的角度差jiaodu為90度,利用w=j(luò)iaodu/t即可得到角速度w。
所述步驟6中的判斷該手勢(shì)的語(yǔ)義為拖移物體還是快速滑動(dòng)物體是這樣實(shí)現(xiàn)的:
如果速度小于等于20cm/s,則判定該手勢(shì)的語(yǔ)義為拖移物體,如果速度大于等于60cm/s,則判定該手勢(shì)的語(yǔ)義為快速滑動(dòng)物體。
所述步驟7中的判斷該手勢(shì)的語(yǔ)義是抓取物體還是縮小物體是這樣實(shí)現(xiàn)的:
如果角速度變化的時(shí)間大于等于3500ms或者手勢(shì)深度為30cm,則判定該手勢(shì)的語(yǔ)義為抓取物體,如果角速度變化的時(shí)間小于等于2000ms或者手勢(shì)深度小于20cm,則判定該手勢(shì)的語(yǔ)義為縮小物體。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:本發(fā)明將人手的自然運(yùn)動(dòng)規(guī)律考慮其中,使得操作者更自然,更友好的交互,因此減少了用戶的記憶負(fù)擔(dān),同時(shí)一種手勢(shì)表示多種語(yǔ)義的情況下,手勢(shì)也是自然常用的,減少了用戶的操作負(fù)擔(dān)。
附圖說(shuō)明
圖1本方面方法的步驟框圖。
具體實(shí)施方式
下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步詳細(xì)描述:
(1)實(shí)驗(yàn)平臺(tái)
本發(fā)明在Intel P 4 2.8GHz CPU,4GB RAM PC機(jī)上采用C++語(yǔ)言在VS2008平臺(tái)上實(shí)現(xiàn)了手勢(shì)交互原型系統(tǒng).該手勢(shì)交互原型系統(tǒng)主要包括場(chǎng)景構(gòu)建、手勢(shì)捕獲與分割、手勢(shì)跟蹤及用戶意圖表達(dá)4個(gè)模塊。
本發(fā)明采用Kinect來(lái)捕獲操作者的手部運(yùn)動(dòng),在自然光照條件下,Kinect攝像頭夾在顯示屏上邊的中央,交互距離顯示屏約1~1.5m.所捕獲的真彩色圖像采用RGB格式,以原數(shù)據(jù)方式存儲(chǔ),為便于后續(xù)實(shí)時(shí)處理,在捕獲真彩圖像的同時(shí)將其轉(zhuǎn)換為灰度圖像并保存。
(2)實(shí)驗(yàn)方法
本發(fā)明以O(shè)penGL繪制三維場(chǎng)景中的交互為研究背景。不同的語(yǔ)義下,操作者的操作習(xí)慣也會(huì)有不同的運(yùn)動(dòng)特征,所以采取了兩種習(xí)慣性的手勢(shì)并以調(diào)查問(wèn)卷的形式進(jìn)行統(tǒng)計(jì)分析,實(shí)驗(yàn)對(duì)象:不同性別,不同年級(jí),不同年齡,不同生活經(jīng)驗(yàn)的大學(xué)生。
(3)實(shí)驗(yàn)設(shè)計(jì)
根據(jù)調(diào)查問(wèn)卷的結(jié)論,由于手勢(shì)多語(yǔ)義,要研究相同手勢(shì)在不同語(yǔ)義下的運(yùn)動(dòng)特征來(lái)加以區(qū)分。因此,要設(shè)計(jì)實(shí)驗(yàn)來(lái)研究其中的規(guī)律。為了得到更準(zhǔn)確和更具普遍統(tǒng)計(jì)的實(shí)驗(yàn)數(shù)據(jù),實(shí)驗(yàn)對(duì)象:選取100名不同年齡,不同專業(yè),不同學(xué)歷的人;實(shí)驗(yàn)平臺(tái):基于Kinect的智能教室控制。實(shí)驗(yàn)操作:實(shí)驗(yàn)者要進(jìn)行兩種手勢(shì)的操作,完成五種語(yǔ)義功能,即手勢(shì)分別為平移手勢(shì)和五指閉合手勢(shì),五種語(yǔ)義分別為拖移幾何體,消失幾何體,幾何體染色以及縮小幾何體和抓取幾何體。五種語(yǔ)義操作完成即結(jié)束。實(shí)驗(yàn)基礎(chǔ):手勢(shì)分割和手勢(shì)識(shí)別;
實(shí)驗(yàn)過(guò)程(記錄每個(gè)實(shí)驗(yàn)者在操作過(guò)程中的人手的運(yùn)動(dòng)特征(速度,加速度和時(shí)間)):
步驟1:獲取攝像頭所捕獲的幀圖像;
步驟2:對(duì)視頻幀圖像進(jìn)行手勢(shì)分割,將人手從復(fù)雜背景中分割出來(lái);
步驟3:開始根據(jù)提示框(比如“開始抓取物體”等)進(jìn)行操作,根據(jù)Kinect得到的手勢(shì)的質(zhì)心點(diǎn)來(lái)判斷手勢(shì)是否進(jìn)行平移變化(兩幀之間的質(zhì)心點(diǎn)移動(dòng)超過(guò)閾值則認(rèn)為手勢(shì)移動(dòng)),若是,則轉(zhuǎn)到步驟4;否,則轉(zhuǎn)向步驟1;
步驟4:若手勢(shì)在設(shè)定的移動(dòng)閾值(直線距離,比如X=10或者30)內(nèi),則為平移并記錄下手勢(shì)的速度和加速度圖,并計(jì)算每隔10幀的速度和加速度,求出速度和加速度的均值和標(biāo)準(zhǔn)差;直到進(jìn)行平移的三種語(yǔ)義(即拖移幾何體,消失幾何體,幾何體染色)操作完畢(對(duì)每種語(yǔ)義都重復(fù)步驟1到步驟4,求的每種語(yǔ)義的速度和加速度的均值和標(biāo)準(zhǔn)差),轉(zhuǎn)向步驟5;
步驟5:根據(jù)提示框進(jìn)行五指張閉操作,利用手勢(shì)識(shí)別方法,判斷手勢(shì)是否進(jìn)行閉合(開始時(shí)手勢(shì)為五指,直到手勢(shì)識(shí)別后變?yōu)榘?,即為手?shì)閉合);若是,記錄此時(shí)的時(shí)間T1,然后轉(zhuǎn)到步驟6;否,則轉(zhuǎn)到步驟5;
步驟6:當(dāng)檢測(cè)到手勢(shì)完成閉合時(shí),記錄下此時(shí)的時(shí)間T2,并計(jì)算此次操作時(shí)間(設(shè)T1為開始的幀,T2為結(jié)束的幀,T2-T1為兩者之差,所得的操作時(shí)間);直到進(jìn)行五指閉合的兩種語(yǔ)義(即縮小幾何體和抓取幾何體)操作完畢,結(jié)束,轉(zhuǎn)向步驟1.
(4)手勢(shì)多語(yǔ)義柔性映射算法
如圖1所示,本發(fā)明方法包括:
步驟1:判斷攝像頭是否檢測(cè)到開始的手勢(shì)(手張開并保持不動(dòng));
步驟2:是,開始計(jì)算手勢(shì)的變化,轉(zhuǎn)到步驟3;否,轉(zhuǎn)向步驟1;
步驟3:利用手勢(shì)識(shí)別方法,計(jì)算每幀的手勢(shì)圖像變化(從Kinect采集的手的質(zhì)心,比較兩幀之間的變化是否超過(guò)閾值),若手勢(shì)為平移(超過(guò)閾值則為平移),則轉(zhuǎn)向步驟4;否則轉(zhuǎn)向步驟5;
步驟4:若手勢(shì)質(zhì)心變化,記錄并計(jì)算每隔10幀的位移和時(shí)間,求出速度的均值和標(biāo)準(zhǔn)差,利用各模型(由實(shí)驗(yàn)得出的語(yǔ)義模型)進(jìn)行判斷,轉(zhuǎn)向步驟6;
步驟5:若手勢(shì)質(zhì)心不變,計(jì)算手掌張開與閉合的角速度的變化(從包袱手勢(shì)變化的第一幀開始到一開始檢測(cè)到的拳頭手勢(shì)作為結(jié)束,中間的時(shí)間即為角速度變化的時(shí)間),轉(zhuǎn)向步驟7;如果質(zhì)心變化,則轉(zhuǎn)到步驟4;
步驟6:利用模型(由實(shí)驗(yàn)得出的語(yǔ)義模型)的速度方向判斷手勢(shì)是否為掃動(dòng),若速度的方向出現(xiàn)變化即左右交替移動(dòng),則為輕掃,此時(shí)已經(jīng)判斷出語(yǔ)義,轉(zhuǎn)向步驟1;否則,轉(zhuǎn)向步驟7;
步驟7:計(jì)算手勢(shì)的速度大小,根據(jù)模型判斷拖移還是快速滑動(dòng)(拖移速度較慢,大約為20,快速滑動(dòng)速度較快大約為60);判斷出語(yǔ)義結(jié)束,轉(zhuǎn)向步驟1.
步驟7:對(duì)于手勢(shì)的角速度,由得到圖像識(shí)別后的分類(利用DDF手勢(shì)識(shí)別方法,識(shí)別包袱手勢(shì)和拳頭手勢(shì))的第一幀和最后一幀,記錄時(shí)間t,利用jiaodu=wt(角度為90度,就是手勢(shì)張開和閉合的角度差),得到w(W=j(luò)iaodu/t,已知角度和時(shí)間t即可得到角速度W).根據(jù)模型,若有(手勢(shì)為包袱變?yōu)槿^)則判斷為抓放物體還是縮小物體(抓取物體時(shí)時(shí)間大約35ms,縮小物體時(shí)間大約為20ms),判斷出語(yǔ)義即為結(jié)束,轉(zhuǎn)向步驟1。
這樣,本發(fā)明利用映射方式減少了用戶的記憶負(fù)擔(dān)。
上述技術(shù)方案只是本發(fā)明的一種實(shí)施方式,對(duì)于本領(lǐng)域內(nèi)的技術(shù)人員而言,在本發(fā)明公開了應(yīng)用方法和原理的基礎(chǔ)上,很容易做出各種類型的改進(jìn)或變形,而不僅限于本發(fā)明上述具體實(shí)施方式所描述的方法,因此前面描述的方式只是優(yōu)選的,而并不具有限制性的意義。