賁永明
基于運(yùn)動(dòng)方向跟蹤的手勢(shì)控制平臺(tái)算法實(shí)現(xiàn)
賁永明
(本課題受“國(guó)家級(jí)大學(xué)生科學(xué)研究與創(chuàng)業(yè)行動(dòng)計(jì)劃”項(xiàng)目資助 )
賁永明 管孟凌 楊 丹 葉 青
北方工業(yè)大學(xué)
以計(jì)算機(jī)為代表的智能設(shè)備,在現(xiàn)代化生活中起到了不可替代的作用,隨著人們對(duì)智能化的不斷追求,能夠讓機(jī)器主動(dòng)理解人類的語(yǔ)言與意圖,日益成為人們研究的熱點(diǎn)。本文提出的基于運(yùn)動(dòng)方向跟蹤的手勢(shì)控制平臺(tái)便是其中的一個(gè)嘗試。平臺(tái)基于OPENCV函數(shù)庫(kù),由C語(yǔ)言編寫而成。系統(tǒng)通過(guò)跟蹤主體頭部或手部的運(yùn)動(dòng)方向來(lái)完成對(duì)智能系統(tǒng)(如智能小車)的指揮。首先通過(guò)膚色檢測(cè)提取視頻指令中的手勢(shì)信息,然后通過(guò)后端的圖像處理,準(zhǔn)確識(shí)別其中的控制信息,并通過(guò)串口控件發(fā)出指令。實(shí)驗(yàn)結(jié)果表明,該系統(tǒng)可以準(zhǔn)確實(shí)時(shí)地識(shí)別人類的指揮意圖,并作出準(zhǔn)確的指揮動(dòng)作。本文提出的系統(tǒng)具有很強(qiáng)的實(shí)用性,可以為人們的生活帶來(lái)更加智能化的體驗(yàn)。
當(dāng)今社會(huì)是一個(gè)智能化與信息化的社會(huì),以計(jì)算機(jī)為代表的智能設(shè)備得以讓人們享受便利舒適的生活。隨著智能化水平的提升,人們嘗試讓機(jī)器能夠主動(dòng)識(shí)別人類的意圖,理解人類的語(yǔ)言,從而更好地為人類服務(wù)。其中,肢體語(yǔ)言因其簡(jiǎn)單高效的特點(diǎn),成為這項(xiàng)研究中的一個(gè)熱點(diǎn)。
捕捉人體的肢體動(dòng)作,離不開視頻采集設(shè)備的協(xié)助,從而不可避免的涉及圖像處理技術(shù)。圖像處理是通過(guò)計(jì)算機(jī)對(duì)圖像進(jìn)行去除噪聲、增強(qiáng)、復(fù)原、分割、提取特征等處理的方法和技術(shù)。本文目的是從視頻流中提取肢體動(dòng)作,并準(zhǔn)確理解動(dòng)作所要表達(dá)的意圖,所以需要借助膚色檢測(cè)技術(shù)來(lái)做前端處理,濾除非膚色區(qū)域,然后再進(jìn)行進(jìn)一步的處理,準(zhǔn)確翻譯肢體動(dòng)作所表達(dá)的意圖。其中膚色檢測(cè)的效果在很大程度上決定了系統(tǒng)的識(shí)別性能。
本文對(duì)基于運(yùn)動(dòng)方向跟蹤的智能手勢(shì)識(shí)別系統(tǒng)進(jìn)行研究,詳細(xì)討論了其中的幾個(gè)關(guān)鍵技術(shù),如膚色檢測(cè)、圖像處理、基于Mscomm控件的串口通信等,最后對(duì)系統(tǒng)的性能進(jìn)行了分析,指出了系統(tǒng)存在的不足與可以改進(jìn)的地方。
系統(tǒng)以VC++ 6.0結(jié)合OPENCV作為開發(fā)平臺(tái),通過(guò)攝像頭捕捉人體動(dòng)作,經(jīng)由膚色檢測(cè)識(shí)別人體的手勢(shì)動(dòng)作,然后通過(guò)后端的圖像處理與動(dòng)作解釋,準(zhǔn)確理解人類手勢(shì)的指揮信息,最后通過(guò)Mscomm串口控件將指令發(fā)給負(fù)責(zé)做出反饋的執(zhí)行系統(tǒng)。
智能手勢(shì)控制系統(tǒng)方案框圖如圖1所示。
圖1 智能手勢(shì)控制系統(tǒng)方案框圖
原理概述
理解肢體語(yǔ)言的前提是機(jī)器能夠識(shí)別人類的指揮動(dòng)作,膚色檢測(cè)技術(shù)便是其中一種高效的識(shí)別方式。膚色檢測(cè)是根據(jù)人類膚色的獨(dú)有特征區(qū)分膚色點(diǎn)與其他像素點(diǎn)的技術(shù),根據(jù)區(qū)分依據(jù)不同,分為基于統(tǒng)計(jì)與基于物理的兩種檢測(cè)技術(shù)。其中基于統(tǒng)計(jì)的檢測(cè)技術(shù)比較簡(jiǎn)單,可以單純?cè)O(shè)計(jì)算法來(lái)實(shí)現(xiàn)。膚色統(tǒng)計(jì)模型的建立有三種方式:限定閾值、高斯模型、直方圖模型??紤]到本系統(tǒng)對(duì)實(shí)時(shí)性的要求,選擇了限定閾值的統(tǒng)計(jì)模型作為檢測(cè)依據(jù)。
統(tǒng)計(jì)模型的合適與否,決定了檢測(cè)算法的最后效果,所以需要一種手段來(lái)使得膚色點(diǎn)產(chǎn)生很好地類聚。顏色空間變換便是這樣的一種技術(shù),在膚色檢測(cè)中常常用到Y(jié)CrCb空間。我們平日所見的圖像很多都是基于RGB空間的,在RGB空間里膚色在很大程度上受到亮度的影響,導(dǎo)致膚色點(diǎn)很難從非膚色點(diǎn)中分離出來(lái)。如果直接在RGB空間進(jìn)行處理的話,膚色點(diǎn)是離散的點(diǎn),中間嵌有很多非膚色,這為膚色檢測(cè)帶來(lái)了難題。如果把RGB轉(zhuǎn)為YCrCb空間的話,可以忽略Y分量(亮度)的影響,因?yàn)樵摽臻g受亮度影響很小,膚色會(huì)產(chǎn)生很好的類聚。這樣就把三維的空間轉(zhuǎn)為二維的CrCb,膚色點(diǎn)會(huì)聚合形成一定的形狀,具有很好的識(shí)別效果。
經(jīng)過(guò)前人學(xué)者大量的皮膚統(tǒng)計(jì)信息可以知道,如果將皮膚信息映射到Y(jié)CrCb空間,則在CrCb二維空間中這些皮膚像素點(diǎn)近似成一個(gè)橢圓分布。因此如果我們得到了一個(gè)CrCb空間下的橢圓,給定一個(gè)像素點(diǎn),只要判斷它的 (Cr, Cb) 坐標(biāo)是否落在橢圓內(nèi)(包括邊界),就可以判斷該點(diǎn)是否是膚色點(diǎn)。
檢測(cè)流程
借助于OPENCV函數(shù)庫(kù)自帶的轉(zhuǎn)換函數(shù),我們可以很方便地將圖像從RGB空間下轉(zhuǎn)化到Y(jié)CrCb空間下,然后進(jìn)行橢圓擬合,就可以完成膚色檢測(cè)的目的。詳細(xì)操作如下。
(a)將原圖轉(zhuǎn)化到Y(jié)CrCb空間下:
c v C v t C o l o r(i m g,i m g Y C r C b,CV_ BGR2YCrCb)。
(b)計(jì)算像素總數(shù)。
(c)遍歷像素點(diǎn),對(duì)每個(gè)像素點(diǎn)的CrCb分量進(jìn)行橢圓坐標(biāo)變換。
(d)根據(jù)亮度Y的區(qū)間,判斷Value的值是否滿足條件,即像素點(diǎn)是否落在橢圓區(qū)域內(nèi),若滿足條件則把像素值拷貝到存放檢測(cè)結(jié)果的彩圖中。
if(y〈100)if(value〈700)memcpy(pMask,pimg,3);
else if(value〈850)memcpy(pMask,pimg,3);
膚色檢測(cè)算法的效果如圖2所示。
圖2 膚色檢測(cè)效果圖
經(jīng)過(guò)膚色檢測(cè)后,得到排除非膚色區(qū)域的結(jié)果圖。接下來(lái)需要進(jìn)一步的處理。
目標(biāo)判決
首先不管什么檢測(cè)算法,受光照等各種因素的干擾,處理效果都會(huì)存在不盡人意的地方,除了會(huì)有殘留的非膚色區(qū)域外,還會(huì)有視頻背景里面非動(dòng)作主體的干擾存在,所以需要通過(guò)濾除干擾來(lái)完成手臉目標(biāo)的判決。
考慮到處理結(jié)果中,不管什么干擾,與正常的膚色區(qū)域相比,所占面積的比例都很小,所以我們使用基于面積的簡(jiǎn)單方式,完成干擾的排除。
詳細(xì)流程如下。
(a)首先進(jìn)行形態(tài)學(xué)濾波,去掉噪音。
截?cái)嗳≈毙拓?fù)反轉(zhuǎn)是指一個(gè)沖斷系后緣被一個(gè)新形成的陡傾張性斷層所取直、截?cái)?,但不涉及沖斷層兩側(cè)重復(fù)出現(xiàn)的地層。老30-樁海10井近東西向地震剖面顯示,該區(qū)燕山末期發(fā)育了走向北東、傾向北西的一系列緩傾角逆斷層,當(dāng)逆斷層逆沖受阻時(shí),便切層逆沖形成若干個(gè)逆斷層,構(gòu)成疊瓦沖斷組合。喜山早期,在逆沖斷層應(yīng)力集中的后緣,被正斷層截切并反向下滑,形成負(fù)反轉(zhuǎn)構(gòu)造(圖1),并形成花狀構(gòu)造。其顯著特征為:該斷裂向深部延伸,歸并于變緩的斷層面上,并處于純拉張狀態(tài)而無(wú)收縮,在斷層上升盤則保留原逆沖形態(tài),這種取直型負(fù)反轉(zhuǎn)主要在樁西潛山北部與埕北凹陷結(jié)合部的老30-292井區(qū)發(fā)育。
cvErode(gray,gray,0,1);
cvDilate(gray,gray,0,1);
(b)找出圖像里面的所有輪廓,然后找到每個(gè)輪廓的最小外接矩形。
cvFindContours(gray,stor,&cont);
(c)找出外接矩形的最大面積。
(d)以最大面積的一半作為閾值,外接矩形面積小于該閾值的區(qū)域認(rèn)為是干擾區(qū)域。
(e)滿足條件的區(qū)域就是有效的動(dòng)作區(qū)域,找出這些區(qū)域的中心點(diǎn),作為之后提取指揮信息的特征點(diǎn)。
濾除干擾前后的效果對(duì)比如圖3所示。
效果顯示,該算法簡(jiǎn)單易行,快速高效,滿足系統(tǒng)要求。
圖3 濾除干擾前后的效果對(duì)比
解釋動(dòng)作
經(jīng)過(guò)目標(biāo)判決得到的結(jié)果只包含有效的肢體動(dòng)作,接下來(lái)的任務(wù)便是準(zhǔn)確識(shí)別其中的指揮意圖。每一種肢體語(yǔ)言都需要設(shè)定一種標(biāo)準(zhǔn),我們?cè)O(shè)定頭部的水平運(yùn)動(dòng)方向負(fù)責(zé)指揮小車左右運(yùn)動(dòng),手部的豎直運(yùn)動(dòng)方向指揮小車前進(jìn)與后退。
識(shí)別過(guò)程中,我們選用多次判斷的方式防止動(dòng)作的誤判,只有連續(xù)動(dòng)作的次數(shù)達(dá)到設(shè)定的閾值,才判定動(dòng)作有效?,F(xiàn)在以水平運(yùn)動(dòng)方向的判斷為例,詳細(xì)闡述我們所采用的算法流程。
(a)設(shè)定捕捉視頻幀的時(shí)間間隔為100ms。
(b)每捕捉到一幀圖片,經(jīng)過(guò)前期的處理后,將處理所得特征點(diǎn)的橫坐標(biāo)與前一幀特征點(diǎn)橫坐標(biāo)進(jìn)行比較。
(c)比較結(jié)果變小,則left變量增一;變大,則right變量增一。
(d)當(dāng)計(jì)數(shù)變量的值達(dá)到10時(shí),這樣指揮動(dòng)作持續(xù)的時(shí)間剛好達(dá)到1s,此時(shí)認(rèn)為主體發(fā)出了指揮動(dòng)作。這樣設(shè)計(jì)的好處在于,可以根據(jù)需要修改系統(tǒng)的判斷靈敏度,防止誤動(dòng)作的干擾。
(e)若left〉=10,認(rèn)為主體做出左拐的指揮動(dòng)作,由后續(xù)的串口模塊發(fā)送左拐指令;若right〉=10,認(rèn)為主體做出右拐的指揮動(dòng)作,發(fā)送右拐指令。
串行通信
串行通信,即數(shù)據(jù)的串行化傳輸。具體來(lái)說(shuō),就是每次獲得一個(gè)字節(jié),然后依次傳輸它的8位比特?cái)?shù)據(jù)。這樣做的優(yōu)勢(shì)在于,只需要一根數(shù)據(jù)線就可以傳輸8位的字節(jié)數(shù)據(jù)(單向),相應(yīng)的劣勢(shì)在于傳輸所用的時(shí)間是并行傳輸?shù)?倍。本文的系統(tǒng)中,只需要傳輸一個(gè)字節(jié)的指令數(shù)據(jù),所以串行傳輸完全可以勝任。
Mscomm控件
Mscomm控件是Windows平臺(tái)下實(shí)現(xiàn)串行通行的一種Active控件,借助它可以非常簡(jiǎn)單地實(shí)現(xiàn)串行通信功能,我們只需在它的事件處理函數(shù)中添加自己的代碼即可。編程原理簡(jiǎn)單易懂,易于操作。
下面簡(jiǎn)單地介紹一下控件的安裝使用。
(a)建立項(xiàng)目:打開VC++ 6.0,建立一個(gè)基于對(duì)話框的MFC應(yīng)用程序。
(b)在項(xiàng)目中插入Mscomm控件。
(c)在ClassWizard中定義CMSComm類控制對(duì)象。
(d)在對(duì)話框中添加接收框、發(fā)送框、發(fā)送按鈕等控件。
(e)為控件添加變量:為顯示框和發(fā)送框分別添加添加CString變量m_strRXData,和m_strTXData。
(f)添加串口事件消息處理函數(shù)OnComm():函數(shù)實(shí)現(xiàn)的主要功能是進(jìn)行格式的轉(zhuǎn)化,并將結(jié)果顯示在接收框中。
(g)打開串口并完成初始化。
最后安裝結(jié)果如圖4所示。
圖4 Mscomm控件的安裝效果圖
在正常光照條件下,進(jìn)行系統(tǒng)性能測(cè)試。進(jìn)行測(cè)試的軟件平臺(tái)為Windows XP系統(tǒng)與安裝有OPENCV函數(shù)庫(kù)的VC++6.0編譯環(huán)境,硬件平臺(tái)為筆記本電腦自帶攝像頭、無(wú)線串口發(fā)送模塊、安裝有無(wú)線串口接收模塊的智能小車。實(shí)驗(yàn)過(guò)程中的系統(tǒng)運(yùn)行效果如圖5所示;最終測(cè)試結(jié)果以系統(tǒng)客戶端發(fā)送的指令數(shù)據(jù)展示(如圖6、圖7所示)。
圖5 系統(tǒng)運(yùn)行效果示意圖
圖6 客戶端發(fā)送右拐指令示意圖
圖7 客戶端發(fā)送前進(jìn)指令示意圖
效果示意圖顯示,系統(tǒng)正確的檢測(cè)到了手部與臉部的指揮動(dòng)作,并能準(zhǔn)確的標(biāo)定目標(biāo)的特征點(diǎn)。
效果顯示,平臺(tái)能順利地與智能小車進(jìn)行串行通訊,并發(fā)出右拐指令指揮小車運(yùn)動(dòng)。
效果顯示,平臺(tái)能順利地與智能小車進(jìn)行串行通訊,并發(fā)出前進(jìn)指令指揮小車運(yùn)動(dòng)。
實(shí)驗(yàn)過(guò)程中,系統(tǒng)各環(huán)節(jié)運(yùn)行良好,首先膚色檢測(cè)與圖像處理模塊能很好地去除干擾,并準(zhǔn)確的標(biāo)定特征點(diǎn);之后的動(dòng)作解釋模塊,能準(zhǔn)確的解釋動(dòng)作意圖,發(fā)出相應(yīng)的指令,指揮小車按照指揮者的意圖運(yùn)動(dòng)。此外,由于系統(tǒng)采用了閾值判定的算法,系統(tǒng)本身可以避免誤動(dòng)作導(dǎo)致的誤判,增加了系統(tǒng)的實(shí)用性。實(shí)驗(yàn)結(jié)果表明,系統(tǒng)整體運(yùn)行良好,符合準(zhǔn)確性、實(shí)時(shí)性的設(shè)計(jì)指標(biāo)。
本文對(duì)基于運(yùn)動(dòng)方向跟蹤的手勢(shì)控制平臺(tái)進(jìn)行了研究,并詳細(xì)討論了其中的幾個(gè)關(guān)鍵技術(shù),如膚色檢測(cè)、圖像處理、基于Mscomm控件的串行通信等。實(shí)驗(yàn)結(jié)果顯示,本系統(tǒng)滿足實(shí)時(shí)性與抗干擾性要求,能準(zhǔn)確的識(shí)別人體手勢(shì)的指揮意圖,并可以通過(guò)修改判斷門限修改系統(tǒng)的靈敏度,避免因誤動(dòng)作引起的誤判。如前文所述,系統(tǒng)的性能很大程度上取決于膚色檢測(cè)算法的檢測(cè)效果。所以,通過(guò)改進(jìn)膚色檢測(cè)模塊,如使用基于物理的膚色檢測(cè)手段,可以進(jìn)一步提升系統(tǒng)的性能,這是我們之后研究與改進(jìn)的方向。隨著技術(shù)的發(fā)展,相信在不遠(yuǎn)的將來(lái),手勢(shì)識(shí)別技術(shù)一定會(huì)為人們的生活帶來(lái)更加智能化和便捷化的體驗(yàn)。
10.3969/j.issn.1001-8972.2015.01.038