本發(fā)明屬于沙畫制作方法
技術(shù)領(lǐng)域:
,具體涉及一種基于leapmotion手勢(shì)識(shí)別的沙畫制作方法。
背景技術(shù):
:隨著虛擬現(xiàn)實(shí)技術(shù)的發(fā)展以及人們對(duì)計(jì)算機(jī)圖形學(xué)、計(jì)算機(jī)視覺等相關(guān)科目的研究,手勢(shì)識(shí)別技術(shù)發(fā)展為近些年來(lái)人機(jī)交互領(lǐng)域的熱門研究課題。手勢(shì)識(shí)別可分為基于機(jī)械傳感設(shè)備的手勢(shì)識(shí)別和基于視覺的手勢(shì)識(shí)別兩大類。與基于機(jī)械傳感設(shè)備的手勢(shì)識(shí)別相比,基于視覺的手勢(shì)識(shí)別方式在實(shí)現(xiàn)過(guò)程中具有方便、高效、靈活、自然等諸多優(yōu)勢(shì),但是因?yàn)樵擃惙椒ù蠖嘈枰蕾嚁z像頭采集手勢(shì)圖像信息,并且需要經(jīng)過(guò)手勢(shì)圖像分割、圖像預(yù)處理、手勢(shì)特征提取等繁瑣的過(guò)程,因而易受到光線、復(fù)雜環(huán)境的影響而導(dǎo)致識(shí)別不精確、實(shí)時(shí)性較差。在眾多體感設(shè)備中,leapmotion以毫米級(jí)近距離捕獲手運(yùn)動(dòng)的極大優(yōu)勢(shì)成為當(dāng)前結(jié)合手勢(shì)識(shí)別技術(shù)和虛擬現(xiàn)實(shí)技術(shù)最有代表性的裝置,為實(shí)現(xiàn)人機(jī)交互帶來(lái)了新的靈感。沙畫創(chuàng)作是21世紀(jì)初期新興的一種藝術(shù)創(chuàng)作方式,沙子動(dòng)畫搭配流暢跌宕的背景音樂(lè)給人們帶來(lái)全新的視聽感受。但是,現(xiàn)場(chǎng)沙畫表演要求演出者隨時(shí)攜帶投影設(shè)備、沙畫方桌、大量細(xì)沙等必備工具,而且對(duì)現(xiàn)場(chǎng)表演環(huán)境及光線有諸多要求,再加上現(xiàn)場(chǎng)沙畫表演的作品不具有多次欣賞及傳播的缺陷。技術(shù)實(shí)現(xiàn)要素:本發(fā)明的目的是解決傳統(tǒng)的現(xiàn)場(chǎng)沙畫表演大受追捧但受到環(huán)境、光線等因素的局限,提供一種基于leapmotion手勢(shì)識(shí)別的沙畫制作方法。為解決上述技術(shù)問(wèn)題,本發(fā)明采用的技術(shù)方案為:一種基于leapmotion手勢(shì)識(shí)別的沙畫制作方法,包括以下步驟:1)數(shù)據(jù)采集:將leapmotion集成到unity3d中,通過(guò)leapmotion獲得手勢(shì)的hand、finger、tool、vector和gesture幾類數(shù)據(jù);2)特征提?。簭膆and、finger、tool、vector和gesture幾類數(shù)據(jù)中提取以下特征值作為手勢(shì)分類的重要依據(jù):palmposition、handdirection、palmnormal、fingertipsposition、length;3)沙畫手勢(shì)設(shè)計(jì):在unity3d中定義“點(diǎn)”、“抹”、“劃”、“擦”、“撒”五種簡(jiǎn)單的沙畫手勢(shì),并根據(jù)不同手勢(shì)定義每種手勢(shì)作畫時(shí)的部位;4)手勢(shì)識(shí)別:依據(jù)提取的palmposition、handdirection、palmnormal、fingertipsposition、length特征值,采用src算法實(shí)現(xiàn)手勢(shì)識(shí)別過(guò)程,在unity3d中顯示出相應(yīng)的手勢(shì)名稱;5)落沙效果的實(shí)現(xiàn):利用unity3d中的粒子系統(tǒng)模擬沙子下落的效果,當(dāng)識(shí)別出手勢(shì)為“撒沙”時(shí),unity3d切換作畫平臺(tái)角度,以便更清晰的看到沙子從手中落下的效果;6)沙畫繪制:采用leapmotion實(shí)現(xiàn)手勢(shì)跟蹤,實(shí)時(shí)追蹤手勢(shì)的位置坐標(biāo)及運(yùn)動(dòng)方向,按照定義好的手勢(shì)在沙畫平臺(tái)上完成虛擬沙畫的繪制。leapmotion能精確檢測(cè)手、手指及類似手指的工具的三維坐標(biāo)信息,捕捉精度高達(dá)0.01mm。與單目相機(jī)相比,leapmotion不易受局部遮擋、背景環(huán)境等外部因素的影響,更適用于手勢(shì)識(shí)別與跟蹤。unity3d軟件具有很好的跨平臺(tái)性,支持windows、蘋果、安卓等多種主流終端,并且unity3d具有粒子系統(tǒng)、場(chǎng)景編輯、動(dòng)畫項(xiàng)目等內(nèi)置功能,能輕松實(shí)現(xiàn)系統(tǒng)交互設(shè)計(jì)、二維ui界面開發(fā)、三維場(chǎng)景驅(qū)動(dòng)及漫游等需求。所述步驟2)中除了提取palmposition、handdirection、palmnormal、fingertipsposition、length特征值之外,還包括通過(guò)角域劃分的方法引入指尖角度及指尖距離兩個(gè)新增的特征向量作為手勢(shì)識(shí)別依據(jù),以便提高手勢(shì)識(shí)別的準(zhǔn)確率。所述步驟4)中采用src算法實(shí)現(xiàn)手勢(shì)識(shí)別的過(guò)程為:首先輸入訓(xùn)練好的手勢(shì)樣本集x∈rm×n和一個(gè)待測(cè)樣本y∈rm,歸一化x的每一列得到統(tǒng)一的單位l2范數(shù),利用(a1*)=argmin||a||1s×t×||y-qa||2<ε解決l1范數(shù)最小化問(wèn)題,最后通過(guò)計(jì)算殘余ri(grest)=||y-qai||2,滿足所求殘差值最小,確認(rèn)待測(cè)樣本y所在的種別。所述步驟6)采用leapmotion實(shí)現(xiàn)手勢(shì)跟蹤的過(guò)程中加入手勢(shì)的起止判斷:設(shè)定手的運(yùn)動(dòng)速度vt與運(yùn)動(dòng)方向變化率δat兩個(gè)數(shù)據(jù)的合理閾值p和q,當(dāng)vt和δat同時(shí)滿足p>δat和q>vt時(shí),表示當(dāng)前手勢(shì)位于起始點(diǎn)或是結(jié)束點(diǎn),一定程度消除手的振顫,從而更精確的實(shí)現(xiàn)leapmotion的手勢(shì)跟蹤。所述手的運(yùn)動(dòng)速度vt與運(yùn)動(dòng)方向變化率δat的獲取方法為:沙畫繪畫過(guò)程中手指的位置坐標(biāo)與運(yùn)動(dòng)時(shí)間的關(guān)系可用表示,采用如下公式計(jì)算手指的運(yùn)動(dòng)方向:速度方向變化率δat=at-at-1;手的運(yùn)動(dòng)速度本發(fā)明采用以上技術(shù)方案,利用leapmotion采集人手?jǐn)?shù)據(jù)信息,加入角域劃分的方法優(yōu)化原特征向量提取算法,同時(shí)利用src算法識(shí)別沙畫手勢(shì);手勢(shì)若存在,leapmotion將利用強(qiáng)大的tbd跟蹤技術(shù)實(shí)時(shí)監(jiān)測(cè)人手各指尖位置及運(yùn)動(dòng)方向,加入開始點(diǎn)與結(jié)束點(diǎn)的判斷并改進(jìn)該判斷方法以改善其跟蹤算法帶來(lái)的自顫的缺陷,最后根據(jù)本文自行定義的沙畫手勢(shì)語(yǔ)義驅(qū)動(dòng)虛擬手完成沙畫創(chuàng)作。本發(fā)明提出的基于leapmotion手勢(shì)識(shí)別的沙畫制作方法能夠直接獲取手的特征信息,無(wú)需進(jìn)行繁瑣的數(shù)據(jù)預(yù)處理及特征向量提取過(guò)程。與
背景技術(shù):
相比,本發(fā)明具有過(guò)程簡(jiǎn)單、識(shí)別效果精準(zhǔn)的優(yōu)勢(shì),并且跟蹤效果更加穩(wěn)定,能夠很好地適用在虛擬沙畫系統(tǒng)中。附圖說(shuō)明圖1是手勢(shì)特征值分布圖;圖2-6是五種手勢(shì)在leapmotionvisualizer中的效果圖;圖7是“劃沙”效果圖;圖8是“擦沙”效果圖;圖9是“抹沙”效果圖;圖10是“點(diǎn)沙”效果圖;圖11是“撒沙”效果圖;圖12是本發(fā)明實(shí)施例中人手手指實(shí)時(shí)位置坐標(biāo)與運(yùn)動(dòng)數(shù)據(jù)。具體實(shí)施方式本實(shí)施例中的一種基于leapmotion手勢(shì)識(shí)別的沙畫制作方法,包括以下步驟:1)數(shù)據(jù)采集:首先需要從leapmotion官網(wǎng)下載leap_motion_sdk_windows_2.3.1軟件安裝包將leapmotion安裝到電腦終端;為了將leapmotion集成到unity3d,需要下載leapmotionunitycoreassetsv2.3.1包并將其引入到unity3d中。leapmotionapi從leapmotion捕捉的幀數(shù)據(jù)中獲得手勢(shì)的hand、finger、tool、vector和gesture等幾類數(shù)據(jù),若leapmotion成功檢測(cè)到人手并且該手不離開設(shè)備的視野范圍時(shí),leapmotion會(huì)給它設(shè)置一個(gè)唯一的不可更改的id號(hào),然后綁在controller對(duì)象上的listener子類會(huì)立即觸發(fā)其內(nèi)部定義的onframe()回調(diào)函數(shù)同步輸出該id號(hào)的人手的手指的實(shí)時(shí)坐標(biāo)與運(yùn)動(dòng)數(shù)據(jù)(見附圖12);2)特征提?。簭膆and、finger、tool、vector和gesture幾類數(shù)據(jù)中提取以下特征值作為手勢(shì)分類依據(jù):palmposition、handdirection、palmnormal、fingertipsposition、length(見圖1);同時(shí),為提高手勢(shì)識(shí)別的準(zhǔn)確率,加入角域劃分的方法同時(shí)引入指尖角度及指尖距離兩個(gè)新增的特征向量,使用優(yōu)化后的特征向量組作為重要的手勢(shì)分類識(shí)別依據(jù)(見表1)。然后實(shí)現(xiàn)特征向量標(biāo)準(zhǔn)化:將各值歸約至[0,1]的區(qū)間內(nèi),其中,將ai的值按比例縮小至[0.5,1]區(qū)間。特征向量?jī)?yōu)化前后的手勢(shì)識(shí)別率對(duì)比結(jié)果可以看出優(yōu)化的有效性(見表2)。表1優(yōu)化后的特征向量組表2識(shí)別率對(duì)比3)沙畫手勢(shì)設(shè)計(jì):在unity3d中定義“點(diǎn)”、“抹”、“劃”、“擦”、“撒”五種簡(jiǎn)單的沙畫手勢(shì),并根據(jù)不同手勢(shì)定義每種手勢(shì)作畫時(shí)的部位(見表3);連接leapmotion設(shè)備后可在leapmotionvisualizer中查看每種手勢(shì)的效果(見圖2至圖6);表3手勢(shì)語(yǔ)義定義手勢(shì)識(shí)別手指?jìng)€(gè)數(shù)手指作畫部位實(shí)現(xiàn)效果“點(diǎn)”食指與拇指指尖“抹”整個(gè)手掌整個(gè)手掌“劃”單個(gè)手指且為食指食指指尖“擦”單個(gè)手指且為拇指大拇指手指外側(cè)“撒”手指?jìng)€(gè)數(shù)為0—出現(xiàn)該手勢(shì)時(shí),出現(xiàn)落沙效果4)手勢(shì)識(shí)別:依據(jù)提取的palmposition、handdirection、palmnormal、fingertipsposition、length特征值及新增的指尖角度、指尖距離特征值,采用src算法對(duì)手勢(shì)進(jìn)行分類識(shí)別,每組實(shí)驗(yàn)單人單個(gè)手勢(shì)20次,共10人參與實(shí)驗(yàn),將所有獲取的樣本數(shù)據(jù)分成兩大類,一類樣本用于學(xué)習(xí)與訓(xùn)練,另一類用于測(cè)試與驗(yàn)證。首先輸入訓(xùn)練好的手勢(shì)樣本集x∈rm×n和一個(gè)待測(cè)樣本y∈rm,歸一化x的每一列得到統(tǒng)一的單位l2范數(shù),利用(a1*)=argmin||a||1s·t·||y-qa||2<ε解決l1范數(shù)最小化問(wèn)題,最后通過(guò)計(jì)算殘余ri(grest)=||y-qai||2,滿足所求殘差值最小,確認(rèn)待測(cè)樣本y所在的種別,最終在unity3d中顯示出相應(yīng)的手勢(shì)名稱;5)落沙效果的實(shí)現(xiàn):當(dāng)手勢(shì)識(shí)別過(guò)程識(shí)別到“撒沙”手勢(shì)時(shí)利用unity3d中的粒子系統(tǒng)模擬沙子下落效果。選擇菜單欄中“gameobject”下的“particlesystem”創(chuàng)建粒子系統(tǒng),在inspector視圖中的particlesystem組件面板設(shè)置particlesystem初始化模塊、emission、shape、sizeoverlifetime、renderer等幾個(gè)模塊,完成沙子的基本屬性、運(yùn)動(dòng)狀態(tài)及運(yùn)動(dòng)生命周期的設(shè)置,滿足沙子下落的預(yù)期效果;由于粒子團(tuán)的生命周期結(jié)束后粒子會(huì)消失,不會(huì)出現(xiàn)沙子在平面堆積的效果,因此,需要簡(jiǎn)單模擬沙子落在平面上時(shí)堆積的效果;最后編寫sandpainting腳本文件,當(dāng)識(shí)別出“撒沙”手勢(shì)后,unity3d粒子系統(tǒng)啟動(dòng),并且在該腳本文件中設(shè)置切換camera視角,從而更好的看出落沙的效果(見圖11);6)沙畫繪制:采用leapmotion實(shí)現(xiàn)手勢(shì)跟蹤,leapmotion采用的是tbd技術(shù)實(shí)現(xiàn)手勢(shì)跟蹤,沙畫作畫過(guò)程中手指的位置坐標(biāo)與運(yùn)動(dòng)時(shí)間的關(guān)系可用表示,手指的運(yùn)動(dòng)方向理論上來(lái)說(shuō)是曲線的切線方向,但是leapmotion采集的是離散的點(diǎn)數(shù)據(jù),因此采用如下公式計(jì)算手指的運(yùn)動(dòng)方向:由此,可以計(jì)算出某時(shí)刻手的運(yùn)動(dòng)速度為:運(yùn)動(dòng)速度趨于0僅僅是判定手勢(shì)起始點(diǎn)或終止點(diǎn)的必要條件,當(dāng)手指在空中寫一個(gè)類似“w”這樣的折線時(shí),除去起止點(diǎn)外的其他三個(gè)拐點(diǎn)位置處的速度也趨近于0,但是這三個(gè)點(diǎn)明顯不是手勢(shì)起止點(diǎn)。因此,還需計(jì)算軌跡中相鄰兩點(diǎn)的速度方向變化率:δat=at-at-1。通過(guò)訓(xùn)練選擇合適的經(jīng)驗(yàn)值p和q并且同時(shí)滿足p>δat和q>vt,表示當(dāng)前手勢(shì)位于起始點(diǎn)或是結(jié)束點(diǎn),本實(shí)施例選取p取q取3mm/s。手勢(shì)識(shí)別成功后,按照定義好的手勢(shì)語(yǔ)義在沙畫平臺(tái)上完成虛擬沙畫的繪制,實(shí)驗(yàn)結(jié)果見圖7至圖11。當(dāng)前第1頁(yè)12