陳保 蘇順開
摘要:Kinect技術(shù)的發(fā)展,讓人機(jī)交互的方式由傳統(tǒng)的鍵盤、鼠標(biāo)轉(zhuǎn)化成了對人體動作的識別。在識別人體手勢的基礎(chǔ)上,對深度圖像的對象獲取成了進(jìn)一步圖像處理的關(guān)鍵,閾值法是常用的對象獲取方法。本文中對閾值法區(qū)分對象和背景詳細(xì)描述,得出獲取最佳閾值表達(dá)式。
關(guān)鍵詞:Kinect 深度圖像 對象 閾值
中圖分類號:TP391.41 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9416(2016)07-0056-02
1 手勢識別的基本方法
隨著現(xiàn)代科學(xué)技術(shù)的發(fā)展,人體向機(jī)器發(fā)布施令方式除了傳統(tǒng)的鼠標(biāo)鍵盤外,利用人體動作和手勢與機(jī)器進(jìn)行交互成了目前的研究熱點問題。微軟的體感技術(shù)設(shè)備能夠獲取深度圖像、人體骨骼及手勢動作或聲音,向人們提供了一種全新的人機(jī)交互模式?;贙inect的人體動作識別技術(shù)目前僅能識別簡單的目標(biāo)行為,一般動作是單一的,場景也比較簡單。復(fù)雜動作和多目標(biāo)或多行為的人體識別還是不多見的,手勢動作識別過程是動態(tài)的系統(tǒng)過程,識別方法目前主要有基于模板和基于概率統(tǒng)計或基本語法的方法。如下圖1所示。
人體手勢動作識別的下個步驟就是人體三維建模,Kinect設(shè)備有攝像頭和紅外設(shè)備,能夠?qū)ε臄z的物體生出三維數(shù)據(jù)。但是雖然Kinect有紅外發(fā)射器但是它并不能直接提供原始的紅外數(shù)據(jù),還需要在計算機(jī)內(nèi)部進(jìn)行數(shù)據(jù)處理,從而得到所拍攝物體的深度數(shù)據(jù)。事實上深度數(shù)據(jù)是由深度圖像得到的,所以要對深度數(shù)據(jù)處理前,要先獲取被拍攝物體的深度圖像。
2 Kinect獲取對象的閾值法
Kinect對獲取的深度圖像進(jìn)行數(shù)據(jù)處理主要采取的是閾值法,所謂閾值法就是指將要處理的數(shù)據(jù)與系統(tǒng)內(nèi)已經(jīng)設(shè)置好的一組數(shù)據(jù)相比較,然后根據(jù)結(jié)果和給定的閾值相比較,查看結(jié)果是否在閾者范圍之內(nèi)來決定是否保留或刪除該數(shù)據(jù)的一種處理方式。閾值法最大的優(yōu)點就是直觀并易于實現(xiàn),在深度圖像處理時常常用于圖像分割,所謂圖像分割是指對圖像進(jìn)行分區(qū),它所依據(jù)的主要元素就是圖像上的部分特征,包括圖像上像素灰度、目標(biāo)紋理、色彩等。圖像分割往往把用戶需要的部分作為提取對象,而其它部分則作為背景。利用圖像分割可以將用戶感興趣的部分從背景中分離出來。
圖像的特征往往用像素的灰度級來表示,容易提取,將用戶感興趣的圖像和背景圖像之間選擇一個閾值,將所有灰度值大于閾值的點歸為用戶感興趣的對象點,其它的值則表示為對用戶無用的背景點。圖像處理中的閾值點可以用下面的公式表示:
其中表示為圖像中所選取點的灰度級的值,用戶感興趣的圖像的像素表示為1,而背景像素的灰度級表示為0,T表示為系統(tǒng)所選定的閾值,表示經(jīng)過灰度級的閾值處理后的新圖像。
如果T的值完全取決于,則T被稱為全局閾值,這種對圖像處理的方法比較簡單,并且易于實現(xiàn),但是圖像處理的精度不高,往往對圖像有特殊的要求,比如圖像的整體背景和對象區(qū)分比較明顯。但是在實際的圖像處理中,很難遇到這種比較簡單的情況,往往處理的圖像比較復(fù)雜,整個圖像的閾值完全取決于一個的可能性不大,所以設(shè)置這樣一個閾值不能很好的區(qū)分對象和背景圖像。這里一般有兩種方法來解決這個問題,一個是設(shè)置多個閾值,將要處理的圖像進(jìn)行分割,分割成不同的區(qū)域,然后按區(qū)域進(jìn)行閾值設(shè)置,不同的區(qū)域按不同的閾值來處理,在一個區(qū)域內(nèi)相當(dāng)于全局閾值方式來獲取對象或背景。另一種處理方法就是對灰度級進(jìn)行校正,將圖像的像素的灰度級校正到可以區(qū)分對象和背景。
閾值處理圖像法的關(guān)鍵,就是選取合適的閾值。對于精度要求不高的圖像可以采取灰度直方圖,用眼睛觀察直方圖的峰谷,多次對比最后來確定閾值。但是對于精度要求較高的要處理的圖像,這種方法顯然不適合,需要用精確的數(shù)學(xué)表示方法來獲取圖像的閾值。假設(shè)圖像的像素的灰度級具有正態(tài)概率分布的特征。對像的分布函數(shù)為,而背景的像素分布函數(shù)為,兩者的方差分別為和,在圖像中所占的面積分別為和。由此可以求出圖像的概率密度函數(shù)為:
假設(shè)此處理圖像的閾值為t,將灰度值在t之下的作為用戶感興趣的點,即對象點,將灰度值在t之上的點稱為背景點。將背景點錯誤記為對象點的概率記為,將對象點被錯誤記為背景點的概率記為。
總的可能出錯的概率為:
令上式達(dá)到最小值,即可求得最佳閾值t,利用求導(dǎo)公式對上式求導(dǎo)并令其為0可得。,化簡后可得:
因為:,,將上述各算式整理并代入可得:。對該式兩邊取對數(shù)并去掉分母可得到如下式子:
,假設(shè)
,可以得出:,并由此可以得出圖像的最佳閾值為:。
在人體動作步履研究中,多是基于二維圖像對人體模型進(jìn)行提取,由于二維圖像的局限性,不同的視角下獲得的信息常常分歧較大。三維模型可以很好的解決因視角變換激發(fā)的問題及遮擋景象,適合于三維空間的人體姿勢表達(dá),可人體模型是基于三維技術(shù)和立體匹配的編碼。Kinect通過深度圖像處理技術(shù)獲得人體模型的三維信息,結(jié)合二維圖像可獲得更切確的三維模型信息。
3 對PPT操作進(jìn)行手勢識別
下面是使用C#編程,利用閥值來實現(xiàn)對PPT操作進(jìn)行手勢識別的一段代碼:
//手臂垂直舉起的閥值
private const double ArmRaisedThreshhold = 0.2;
//判別右手是否舉起,若已舉起,為True
bool isRightHandRaised = (rightHand.Y - rightshoulder.Y) > ArmRaisedThreshhold;
//判別左手是否舉起,若已舉起,為True
bool isLeftHandRaised = (leftHand.Y - leftshoulder.Y) > ArmRaisedThreshhold;
//當(dāng)左手舉起,控制PPT開始執(zhí)行
if (isLeftHandRaised) //判左手是否舉起,若左手已舉起,為真。
{
if (!isBeginScreenActive)
{
isBeginScreenActive = true;
System.Windows.Forms.SendKeys.SendWait("{F5}"); //執(zhí)行快捷鍵F5
}
}
else
{
isBeginScreenActive = false;
}
//當(dāng)右手舉起,就停止PPT的執(zhí)行
if (isRightHandRaised) //判右手是否舉起,若右手已舉起,為真
{
if (!isStopScreenActive)
{
isStopScreenActive = true;
System.Windows.Forms.SendKeys.SendWait("{Esc}"); //即按Esc鍵
}
}
else
{
isStopScreenActive = false;
}
參考文獻(xiàn)
[1]M.Camplani and L.Salgado.Efficient Spatio-Temporal Hole Filling Strategy for Kinect DepthMaps[C].Proc.SPIE8290,Three-Dimensional Image Processing (3DIP) and Applications II,F(xiàn)ebruary,2012:336-339.
[2]任海兵,祝遠(yuǎn)新,徐光,林學(xué),張嘵平.基于視覺手勢識別的研究—綜述[J].電子學(xué)報,2000(02):118-121.
[3]劉偉華,樊養(yǎng)余,雷濤.基于深度圖像的運(yùn)動人手檢測與指尖點跟蹤算法[J].計算機(jī)應(yīng)用,2014(05):1442-1448.
[4]楊波,宋曉娜,馮志全.復(fù)雜背景下基于空間分布特征的手勢識別算法[J].計算機(jī)輔助設(shè)計與圖形學(xué)學(xué)報,2010(10):1841-1848.