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