季齊 占瑜毅 黃龍 高文雄
摘 要:提出一種基于深度信息對手指坐標(biāo)進(jìn)行實時跟蹤,并可用于機(jī)械手同步運動控制的方案。首先利用Kinect的骨骼信息定位手掌位置并進(jìn)行手部分割和輪廓提取,再提取指尖坐標(biāo),經(jīng)卡爾曼濾波后計算手指與手掌的夾角,并發(fā)送至下位機(jī),進(jìn)而控制機(jī)械手與人手同步運動。
關(guān)鍵詞:Kinect 手勢識別 指尖檢測 機(jī)械手 人機(jī)交互
中圖分類號:U292 文獻(xiàn)標(biāo)識碼:A 文章編號:1672-3791(2018)05(a)-0078-02
在當(dāng)今社會中,計算機(jī)技術(shù)在各種領(lǐng)域中都有廣泛應(yīng)用。現(xiàn)在主流的人機(jī)交互手段是鍵盤、鼠標(biāo),但是這種交互手段在直觀性、自然性上有一定的限制。手勢識別是新興的人機(jī)交互手段,利用計算機(jī)視覺技術(shù)使得計算機(jī)明白人的意圖,從而實現(xiàn)相應(yīng)的控制,這種便捷的控制方式具有廣泛的研究價值。
1 Kincet設(shè)備獲取手部信息
1.1 Kinect簡介
2010年11月,微軟公司發(fā)布了一款體感外設(shè)Kinect,它可以檢測用戶的骨骼信息與運動姿態(tài),使玩家能脫離傳統(tǒng)的手柄鍵盤進(jìn)行操作。Kinect由3個鏡頭組成。RGB彩色相機(jī)用來采集彩色圖像,左右兩側(cè)的相機(jī)構(gòu)成一組深度攝像頭,可用來采集深度數(shù)據(jù)[1]。
1.2 手掌區(qū)域分割
Kinect SDK可以檢測人體的骨骼信息并追蹤關(guān)節(jié)點坐標(biāo),進(jìn)而快速獲得掌心的大致坐標(biāo),利用最近鄰法可從深度圖像分離手部區(qū)域,具體算法步驟如下。
(1)使用Kinect SDK提供的骨骼點檢測功能提取右手掌心和手腕的坐標(biāo)。
(2)以掌心為中心提取160×160像素的特征區(qū)域ROI。
(3)遍歷特征區(qū)域ROI,設(shè)定閾值T1,T2,將深度在手心深度減T1,手腕深度加T2范圍內(nèi)點判定為手掌點,其余點為環(huán)境點。使用式(1)進(jìn)行二值化。
2 指尖檢測和手指追蹤
2.1 掌心點計算
Kinect SDK雖然提供了掌心點坐標(biāo),但該坐標(biāo)穩(wěn)定性較差。為了減小誤差,本文利用分割出的手掌區(qū)域計算特征矩進(jìn)而得到掌心坐標(biāo)。
2.2 優(yōu)化K-curvature算法計算指尖坐標(biāo)
首先利用findContours函數(shù)提取手部輪廓,再對手掌輪廓上的各點Pi,計算與,如果矢量夾角的余弦值大于設(shè)定的閾值dot,則判定Pi為指尖點。經(jīng)實驗表明,k取輪廓數(shù)目的5%、dot取0.4時效果最好。
2.3 手勢判定
得到指尖坐標(biāo)和掌心坐標(biāo)后,根據(jù)手指數(shù)量及其坐標(biāo)關(guān)系計算特征值T1-T5即可實現(xiàn)相關(guān)手勢的判定。T1表示手指數(shù)目,T2表示是否存在大拇指,T3表示兩側(cè)指尖與掌心夾角的范圍,T4表示手指與手掌夾角的范圍,T5表示最外側(cè)指尖到掌心的距離。
2.4 角度計算
為了消除手指坐標(biāo)的抖動,本文采用卡爾曼濾波器對每根手指的坐標(biāo)進(jìn)行追蹤,再使用濾波后的坐標(biāo)計算指尖-指根-掌心的角度。最終手指與手掌的夾角計算公式如式4所示,其中B,A,0分別為指尖點、指根點、掌心點B'與A'為指尖點和指根點在ZOY平面內(nèi)的投影。
3 機(jī)械手控制部分設(shè)計
本文的機(jī)械手是一個總自由度為5的多關(guān)節(jié)靈巧手指,分為靈巧指與掌部兩塊,手指由基關(guān)節(jié)、近指節(jié)、中指節(jié)和遠(yuǎn)指節(jié)組成[4]。手的掌部用以固定5個基關(guān)節(jié)以及容納布線。主控芯片選擇stm32f103,電機(jī)選用Maxon空心杯減速電機(jī),電機(jī)輸出的扭矩通過傘齒輪傳遞,可將圓周運動轉(zhuǎn)換成指節(jié)的擺動。
4 結(jié)語
經(jīng)測試,該系統(tǒng)可以在搭載Windows系統(tǒng)的電腦中正常運行,可識別預(yù)設(shè)的12個手勢,并計算每根手指的指尖坐標(biāo)和彎曲角度,通過串口發(fā)送至下位機(jī),驅(qū)動電機(jī)轉(zhuǎn)過相應(yīng)角度,實現(xiàn)機(jī)械手的運動控制。
參考文獻(xiàn)
[1] 王勁東,武頻.一種基于Kinect的指尖檢測算法[J].計算機(jī)技術(shù)與發(fā)展,2016,26(7):14-18.
[2] 李吉,顧德,劉飛.基于Kinect深度信息的手指及手部跟蹤研究[J].計算機(jī)應(yīng)用與軟件,2015,32(3):79-83.
[3] 談家譜,徐文勝.基于Kinect的指尖檢測與手勢識別方法[J].計算機(jī)應(yīng)用,2015,35(6):1795-1800.
[4] 王松林.基于Kinect的手勢識別與機(jī)器人控制技術(shù)研究[D].北京交通大學(xué),2014.
[5] 高偉.手部運動分析方法研究[D].天津大學(xué),2014.
[6] 袁方劍,王毅軒,王毅剛,等.基于Kinect深度圖像的指尖識別及手勢判定[J].電子科技,2014,27(8):6-10.
[7] 鄭斌玨,趙遼英,王毅軒.基于Kinect深度信息的手指檢測與手勢識別[J].計算機(jī)科學(xué)與技術(shù)匯刊:中英文版,2014(1):9-14.
[8] 卜奪奪.仿人機(jī)器人欠驅(qū)動靈巧手研究[D].杭州電子科技大學(xué),2012.