李逸琳 陶 靜 霍藝文 徐 武
(云南民族大學電氣信息工程學院 云南 昆明 650500)
與動作和眼神相比,手勢更可能形成統一的、易于區分的標準,并且能夠讓人們以最舒適的方式與計算機進行交流通信,在很大程度上降低了人機交互的障礙。手勢檢測是指計算機根據某些規則檢測出各種手勢,并轉化為相應的控制命令語句,實現人與計算機之間的信息交換[1]。而且,基于視覺的手勢識別對用戶而言,無需佩戴設備也沒有距離的限制,具備良好的用戶體驗度和舒適度。近年來,憑借其廣泛的應用范圍,成為虛擬現實領域的熱點研究方向,而手勢分割恰是手勢識別的關鍵。
傳統的圖像分割方法主要是基于灰度、邊緣、紋理等圖像底層信息,這類方法在實際應用中普遍抗噪性差,不能適應光照、背景的變化[2]。在實際的人機交互過程中,需要實時更新膚色分割的閾值以應對光照條件改變、背景復雜程度帶來的諸多干擾。本文使用YCBCR膚色識別模型及粒子濾波跟蹤算法來實現膚色分割閾值的實時更新。該方法是基于手勢的實時形狀變化,不依賴于流式媒介,更新后的膚色分割閾值顯著提升了手勢識別的精確程度。
本文在手勢分割之前增加輪廓識別的步驟,先行獲取所要分割的手勢類型,之后僅需要將一個先驗手勢形狀添加到手勢分割的模型中,從而避免多個手勢形狀引起的復雜干擾[3]。主要技術手段包括:基于先驗手勢形狀的手勢圖像分割和基于分割后圖像的參數更新。基于先驗手勢形狀的手勢圖像分割主要是通過手勢的形狀和膚色信息來確定手勢輪廓。有了手勢輪廓之后就確定了手勢區域和非手勢區域,此時再使用粒子濾波算法來更新橢圓膚色模型的參數就可以更加準確地完成手勢分割。
不同的手勢在空間中具有不同的像素點分布。因此可以將空間中手勢像素點的分布區域作為提取手勢特征的關鍵依據[4]。本文根據形態學中的腐蝕原理,先除去圖像中某些部位再求質心的方法,獲取手勢區域的質心e。之后以e為圓心,對每個環形區域內像素點的相對密度Dk進行統計,得到手勢的第一條空間分布特征。其次,在這些圖像分割區域的同心圓作用下,不同的弧段和弧長將呈現在不同手勢的膚色區域和非膚色區域,對應的弧段作為手勢的第二條空間分布特征,對應的弧長則作為第三條空間分布特征。手勢的空間特征向量組HDF={D1,…,Dn;H1,…,Hn;HC1,…,HCnm}中的三類元素即為這三條空間分布特征。其中:Dk(0≤k≤n-1)表示第k環同心圓內目標像素點的相對密度;Hk(0≤k≤n-1)表示第k環同心圓非目標區域所占的圓弧段數;HCkj表示第k環同心圓上非目標區域圓弧j的弧長;n表示劃分手勢區域的同心圓的環數。圖1為手勢示例。

圖1 手勢示例
由力學可知,手掌的質心坐標e(xe,ye)為:
(1)
(2)

(3)
根據上述公式可以計算出從手掌質心到目標圖像的最大距離Dmax。以手掌質心坐標為外接圓的圓心、以Dmax為外接圓的半徑,繪出手勢區域的外接圓。由人類手部的生理構造得知,不同手勢的手掌區域的特征差異非常小,手指部分的差異則較為明顯。故以最大半徑0.4Dmax為半徑作圓,其圓內包含的即為手掌區域。然后再從0.4Dmax到Dmax劃分為n個同心圓。統計每個同心圓區域內的目標像素點數量Si(i=1,2,…,n)(n為采樣區域的個數,當n=1時,采樣區域為最遠離圓心的同心圓區域;當n=n時,采樣區域為最接近圓心的同心圓區域)以及整個手勢圖像區域中目標像素點的數量Smax。n個同心圓區域目標像素點的相對密度可由下式計算得出:
(4)
統計第k個圓上的手勢特征HCkj:
(5)
式中:hckj表示第k環同心圓非目標區域圓弧j的弧長;hcj表示第k環同心圓上非目標區域圓弧的總長度。不同手勢的空間分布特征如圖2所示。

圖2 不同手勢分布特征
膚色作為人體體表信息較為顯著的特征,在排除亮度和視覺環境的前提下,皮膚的色調不受人種差異的影響,因此可將膚色作為手勢分割的理論依據。目前常用的膚色識別模型有HSV膚色識別模型、HIS膚色識別模型、YCBCR膚色識別模型和歸一化RGB膚色識別模型[5]。在HSV與HIS膚色識別模型中,亮度、色調及鮮艷程度等能夠得到非常直觀的體現、比對,但無法與顯示器進行直接的色彩數值傳輸,并且對系統資源等軟硬件的消耗較大。再比較RGB色度空間和YCBCR色度空間,當視覺環境中的光線亮度發生改變時,RGB顏色空間中(R,G,B)將同時改變,而YCBCR顏色空間中的三個變量則相對獨立,受光線亮度的影響較小,因此YCBCR顏色空間更適用于膚色識別。故本文采用YCBCR膚色模型來提取手部區域。然后以膚色模型為基礎,同時為了強化分割效果,融合了粒子濾波算法。
在YCBCR顏色空間中,Y是明亮度即灰階值,CB和CR是藍色和紅色的色調與飽和度部分。YCBCR顏色空間具有將色度與明亮度分離的特點,當光強不同時,同一膚色聚類范圍在YCBCR空間內的變化最小,只有灰階值Y隨外環境的改變而改變,并且CB和CR之間是二維獨立的,才能夠將膚色分布圈定在可知區域內。本文算法直接考慮YCBCR空間中的藍色和紅色色度分量,忽略灰階值,使用閾值分割法區分開膚色區域與非膚色區域。YCBCR空間采用ITU-RBT601YCBCR標準,定義灰階值為(16,235)范圍里的8位二進制數據,定義藍色和紅色色度分量為(16,240)范圍內的8位二級制數據[6]。任一像素點的值在RGB與YCBCR色度空間之間的轉換可以通過下式得到:
(6)
據此可得YCBCR色度模型中CB和CR的空間膚色分布,如圖3所示。

(a) CB空間膚色分布

(b) CR空間膚色分布圖3 CB和CR的空間膚色分布
這一聚類模型的典型公式為:
(7)
式中:θ表示相對標準橢圓方程旋轉的角度;da表示投影到CR坐標軸上的偏移量;db為投影到CB坐標軸上的偏移量。擬合膚色聚類區域的橢圓長半軸為a、短半軸為b,如圖4所示。

圖4 擬合膚色聚類區域
設膚色聚類區域的集合為C,任一像素點的值為p(x,y),根據式(8)確定手勢圖像的擬合區域,提取手勢圖像擬合區域中的Y分量、CB分量及CR分量如圖5所示。

(8)

圖5 提取膚色分量
得到基于YCBCR色度空間的擬合膚色聚類區域的分割效果如圖6所示。

圖6 基于YCBCRYCBCR的膚色分割效果
在實際的應用場景中,由于背景的復雜性,單純使用色度空間進行手勢的膚色分割往往會存在一些小塊的噪聲,因此需要實時更新橢圓膚色模型的參數閾值才能夠將其過濾掉。常用方法包括連續自適應的MeanShift算法、卡爾曼濾波算法和粒子濾波算法。連續自適應的MeanShift算法在線性系統中跟蹤黑白背景下的純色物體取得了良好的效果,若手勢分割中出現類膚色物體,則會擴大該算法的跟蹤窗口乃至整個視頻框架,無法有效分割目標手勢;卡爾曼濾波算法僅僅在處理高斯模型時效果較好;而粒子濾波算法在進行非線性函數和非高斯分布的系統處理時均游刃有余,尤其適用于復雜背景下的目標跟蹤。由此,本文選取粒子濾波算法進行手勢圖像的去噪處理。算法流程如圖7所示。

圖7 算法流程圖
粒子濾波算法是根據蒙特卡洛仿真原理遞推實現貝葉斯估計,在目標跟蹤過程中,用足夠數量的、帶有相關權值的粒子對應目標各種可能的狀態,并通過粒子間的線性加權逐步靠近目標的真實狀態[7]。圖8為粒子濾波示意圖。

圖8 粒子濾波示意圖
然而,粒子濾波過程中的權重退化是不可避免的。雖然重采樣能夠部分改善這一現象,但也會伴隨一些諸如限制并行計算之類的弊端。而且在重采樣過程中,算法將愈加偏向復制權重較大的粒子,經過數次迭代后,粒子重復性增加多樣性減少,造成狀態估計偏差顯著[8]。
為避免這一問題,本文在選定粒子濾波去噪范圍時,以手勢的質心坐標為中心,將第1節中獲得的前景圖像擴大至1.5倍作為粒子傳播的矩形區域。該區域在保證粒子在隨機傳播后保持較豐富的多樣性及較大的權重值的前提下,既減少了計算量又包含了手勢的全部動作區域,降低了狀態估計的偏差。最終計算最優粒子的位置坐標:
(9)
式中:Xi(k)、Yi(k)為第k幀第i個粒子的橫縱坐標;ωi(k)為第k幀的第i個粒子的權重;N為粒子總數,xc(k)和yc(k)為最優粒子的位置坐標。
實驗所抽取的樣本與真實后驗分布產生的樣本之間的偏差也是影響粒子濾波去噪的關鍵因素。模型精度越高或預測先驗與似然函數之間重疊越少時,二者之間的偏差越大。如圖9所示,通過引導粒子到高似然區域,由此產生的預測先驗可較好地服從模型的后驗概率分布,從而有效地減少了描述后驗概率密度函數所需的粒子數目。

圖9 移動粒子至高似然區域
據此將手勢圖像中顏色特征分布的相似度作為算法模型的后驗概率,并統計灰度范圍內像素值出現的頻率次數,生成相應的圖像直方圖。通過計算圖像直方圖中的巴氏距離得到粒子權重的真實后驗概率分布:
(10)
(11)
式中:D是巴氏距離;M是顏色區間數目bin;p(u)是參考顏色概率分布;q(u)是候選粒子所在區域的顏色分布。計算圖像處理后的顏色概率分布及巴氏距離,獲取所需的粒子權重。初始化階段,每個粒子權重相同,隨機傳播后,粒子權重及坐標將會發生變化。本文采用隨機的傳播模型如下:
(12)
式中:X0為粒子的初始坐標;Xk-1為粒子上一位置坐標;Xk為粒子當前位置坐標;Xk+1為粒子下一位置坐標;A1、A2和B為傳播系數;random為隨機數。
本文基于Windows 10系統下的VC++平臺,采取OpenCV 4.0圖像處理庫的隨機數生成器產生隨機數進行計算[9],關鍵代碼如下:
W(i)=(1/sqrt(R)/sqrt(2*pi))*exp(-(dist)^2/2/R);
%求粒子權重
for i=1:N
%重采樣
wmax=2*max(w)*random;
index=randomi(N,1);
while(wamx>w(index))
index=index+1;
if index>N
index=1;
end
由此可得更新后的橢圓模型參數閾值為:
(13)
我們在YCBCR膚色識別模型中從提取的顏色聚類區域來確定手勢范圍,通過粒子濾波跟蹤算法來清晰化手掌和手指輪廓。圖10為經過粒子濾波去噪后的分割效果。

圖10 粒子濾波去噪效果
從圖10可以看出,粒子濾波在復雜的非線性非高斯情況下,進一步消除了手勢圖像中的無關噪聲,實現了精準的手勢分割,實用性很高。
PC機配置為:Intel(R) Core(TM) i7-6700HQ CPU@ 2.6 GHz,內存32 GB,Windows 10,64位操作系統。通過MATLAB 2017a實現上述算法。
為驗證本文的手勢分割方法的準確性,選擇HGR(Hand Gesture Recognition)數據庫和NUS-II數據庫進行對比實驗。實驗圖像的來源和特征如圖11所示,這些圖像來自不同人種、不同手部動作,分割過程中的噪聲主要由不同采集地點(室內采集/室外采集),不同背景(有無類膚色背景)等產生[10-11]。

(a) (b)圖11 手勢分割效果
圖11中,(a)為在HGR數據庫中的手勢分割效果,(b)為在NUS-II數據庫中的手勢分割效果。實驗結果如表1所示,簡單背景下,正確檢測出來的手勢有875.7個,檢測正確率為97.3%。復雜背景下正確檢測出來的手勢有 870.3個,檢測正確率為96.4%。

表1 圖像分割準確率
在保證分割準確率的前提下,為檢測本文算法在不同背景中進行分割所需的時間,在不同光照和背景下進行實驗,其結果如表2所示。

表2 圖像分割所需時間
由實驗結果可知本文方法在不同環境下平均分割時間均在1.88 ms 以下。在保證分割準確率的基礎之上將所需分割時間降低至2 ms以內。并且本文方法能夠準確地分割出手勢圖像,平均分割率由傳統方法的86.1%提高到96.9%,因此對光照強度和不同背景均具有較強的魯棒性。
本文針對手勢分割存在的準確性較低、所需時間較長的問題,優化了傳統的手勢分割方法,改變了傳統的手勢分割順序即先進行手勢特征的提取,再進行手勢圖像的分割。先由YCBCR膚色識別模型得到目標手勢的前景圖像,再結合粒子濾波算法進行圖像去噪,實現精準的手勢分割。實驗結果表明,在不同環境下本文方法的平均識別率達到了95%以上,平均識別時間達到了1.88 ms 以下,可以滿足人們在現實生活中的應用。本文闡述的手勢分割算法可以應用于人性化
的手勢交互中諸如基于Internet遠程機器人操控、手語識別等,代替傳統的鍵盤、鼠標等HCI設備,顯著提升人機交互的用戶體驗。