劉長征,寧 爽
(哈爾濱理工大學(xué) 計算機科學(xué)與技術(shù)學(xué)院,哈爾濱 150080)
基于視覺的手指控制系統(tǒng)依靠攝像頭捕捉含有手指的視頻序列,采用計算機檢測并識別用戶動作,進而明確用戶的動作指令來實現(xiàn)控制交互.近幾年關(guān)于指尖檢測這一課題的研究已取得諸多成果:陳艷艷等人利用手的形狀將手掌部分祛除,結(jié)合手心與手指的相對距離確定指尖[1].鄧瑞等人運用支持向量機(Support Vector Machine,SVM)實現(xiàn)特征提取訓(xùn)練[2].Feng等人基于K均值聚類利用深度圖像提取手部范圍,利用該區(qū)域內(nèi)的點與其它聚類點中心的距離來判斷指尖位置[3].袁方劍等人使用Kinect體感器得到圖像的深度信息,在Open NI分析系統(tǒng)下得到掌心坐標,隨后根據(jù)最近鄰算法得到手部區(qū)域,對經(jīng)典Graham Scan運用射線求交法改進來獲得手邊緣的凸包點集合,將輪廓分析法應(yīng)用于凸包點來確定指尖位置[4].Farooqa等人提出“曲率周長”法檢測指尖,該方法是對K-曲率法的改進,具有一定的旋轉(zhuǎn)不變性[5].
對于文獻[1]中的方法,因為手部存在一定的自遮擋率以及不同用戶手部大小有略大改變,選取某個特殊比例值祛除手掌的指尖檢測方法并未取得理想效果.文獻[2]中的方法僅能對訓(xùn)練過的特定手勢予以分類,未對指尖予以定位.文獻[3]方法僅用來獲得單指尖坐標,且聚類效果有一定隨機性.文獻[4]中的方法在手腕發(fā)生偏轉(zhuǎn)時易令得到的手輪廓產(chǎn)生尖角,不易去除,且深度圖像的獲得具有一定的不便性.文獻[5]中方法的參數(shù)設(shè)置復(fù)雜,運算速度慢.
為了完成開發(fā)一個人機交互系統(tǒng)的最終目標,本文提出了一個簡單、高效、穩(wěn)定、準確的運動指尖檢測方法.我們專注于在頂部裝有單目彩色攝像頭的計算機上,承認檢測過程以自我為中心的視頻中手會出現(xiàn)快速移動和任意變形的問題.視頻流輸入后,首先利用融合了鄰域像素連接權(quán)的自適應(yīng)混合高斯模型來分割出運動區(qū)域;然后提出一種帶權(quán)重的顏色計算模型對候選區(qū)域進行去陰影處理,進而得到手部區(qū)域與輪廓;最后利用指尖的圓特性對原有的重心距離算法加以改進,從而對指尖加以檢測.實現(xiàn)了復(fù)雜背景下的動態(tài)多指尖實時檢測,且檢測效果不受手指并攏、旋轉(zhuǎn)、彎曲、與鏡頭距離遠近、光照變化等的限制.
Stauffer首先提出一種源于聚類模型的混合高斯背景建模(Gaussian Mixture Model,GMM)[6].認為每個像素點在一段連續(xù)視頻幀中的像素值是一個隨時間改變的隨機過程,于是定義圖像中點(x0,y0)的像素值序列為{X1,X2,…,Xt}={I(x0,y0,i):1≤i≤t},I(x0,y0,i)表示視頻包含的圖像序列,Xi表示點(x0,y0)在i時刻的像素值.對于任意點通過混合高斯模型描述其概率分布變化為:
(1)
(2)
|Xt-μ|≤δσ
(3)
(4)
其中M、N為視頻幀的長和寬,在模型中選取前Bt個成分當(dāng)做該點處的背景分布,時變參數(shù)Bt根據(jù)權(quán)重ωi,t決定:
(5)
重心距離法檢測指尖是依據(jù)手輪廓重心與輪廓點間歐式距離判斷指尖位置[8].首先,輪廓提取后能夠獲得手部區(qū)域的輪廓圖形及相應(yīng)輪廓像素點序列矩陣,計算出輪廓的重心;然后,得到每個輪廓像素點與其重心的距離;最后,通過距離值判斷當(dāng)前點是否為候選指尖.
2.2.1 確定輪廓重心
給定二維連續(xù)函數(shù)f(x,y),其(j+k)階矩Mjk為:
(6)
對于一幀二值圖像I(x,y),它的(p+q)階矩Mpq為:
(7)
M是不同p,q時圖像的矩,p,q=0,1,2,…,i,j是圖像中像素點坐標(i,j=0,1,2,…,N-1),N是圖像中點的個數(shù).手部輪廓重心可通過計算輪廓的0階矩與1階矩獲得,I(x,y)是被描述區(qū)域,圖像0階矩為:
(8)
1階矩為:
(9)
由0階矩和1階矩得到手部輪廓的重心為:
(10)
2.2.2 輪廓點與重心的距離
(11)
圖1 輪廓點與重心的距離Fig.1 Distance between contour point and center of gravity
從圖1看出,檢測出的候選點中包含假點.假點一般出現(xiàn)在圖像邊界處,因為在圖像邊界處同樣會檢測到距離峰值,需要進一步對假點進行過濾,過濾方法及具體實現(xiàn)將在3.3節(jié)和5.3節(jié)中具體闡述.
從2.1節(jié)可以看出原有模型只考慮單獨點在時間上的變化而忽略點空間存在的聯(lián)系.為此對原有的自適應(yīng)混合高斯模型加以改進,提出將鄰域像素連接權(quán)融合在自適應(yīng)混合高斯中的新模型,從而達到時間與空間相結(jié)合來分割運動區(qū)域的目的.
3.1.1 鄰域像素連接權(quán)與自適應(yīng)混合高斯模型融合
(12)
設(shè)p(k,Xn,t)是第t時刻的像素值Xt的鄰域點Xn,t為第k類的概率,|Nt|是以Xt為中心點的矩形窗口內(nèi)鄰接點數(shù)量,規(guī)定第t時刻Xt的連接權(quán)函數(shù)為:
(13)
規(guī)定t時刻Xt的鄰接像素為第k類的概率是:
(14)
滿足歸一性.
3.1.2 自適應(yīng)背景更新
針對視頻流中待識別幀,獲得該點像素值Xt+1.初始化時,令所有點的分布數(shù)為K=1,權(quán)值是1,均值是輸入序列起始幀的像素值,協(xié)方差值應(yīng)相對略大.對每個待檢測點與此點已存的K個高斯分布匹配驗證,若符合公式(15),既說明此待檢測點屬于該分布.
|Xt+1-μi,t|≤δσi,t
(15)
從前到后依次驗證第k個高斯分布,如果有m(m>0)個分布與該像素點匹配,則利用公式(16)更新這m個分布的參數(shù).
(16)
α為學(xué)習(xí)速率,ηi為分布參數(shù)的更新速率.對α采用Lee提出的自動更新法,根據(jù)統(tǒng)計后的分布有效次數(shù)ck得到最佳α值[9].即:
(17)
針對不符合(15)的高斯分布,不改變其協(xié)方差與均值,更新其權(quán)值為:
ωi,t+1=(1-α)ωi,t
(18)
當(dāng)光照射在運動體上時會出現(xiàn)陰影,考慮到陰影跟隨手的運動而移動,從而被當(dāng)做運動前景檢測出來.使得前景檢測精確度下降、多檢測目標間產(chǎn)生粘連、檢測速度緩慢.因此陰影的檢測與去除這一細節(jié)處理十分必要.根據(jù)顏色特征來檢測陰影應(yīng)用最廣泛,主要包括:根據(jù)陰影的光學(xué)特性,結(jié)合圖像紋理特征以及借助色度、飽和度、亮度的顏色信息.基于色度、飽和度和亮度的陰影去除法的原理為:對比待檢測圖像的前景像素點和與其對應(yīng)的背景像素點,若色度與亮度分量的差異均位于一定閾值內(nèi),此點即被判定為陰影,否則為運動目標.本文提出一種帶權(quán)的顏色計算模型來去除陰影,這一算法采用自定義的色彩差異作為陰影檢測的衡量標準,能夠快速地檢測陰影.
如果能描述目標與背景、陰影與背景之間的差別,就能夠檢測出陰影.因此,圖像的YCbCr空間表示更適于陰影去除,且利用背景建模時點的像素值信息來去除陰影,充分利用已獲取的數(shù)據(jù),減少算法的運算時間.設(shè)圖像中帶有陰影的目標像素點Cur表示為向量Cur(Cx,Cy,Cz),圖像中背景像素點Back表示為向量Back(Bx,By,Bz),其中的3個元素分別為Cb分量、Y分量和Cr分量.將Cur與Back之間的夾角作為衡量色彩差異的標準,α表示向量Cur(Cx,Cy,Cz)與Back(Bx,By,Bz)之間的夾角:
(19)
即角度越大差異也就越大,在獲取陰影過程中,3個分量起的作用具有差異性,陰影的亮度信息和背景的亮度信息相比沒有太大改變,為避免亮度信息的干擾,使用τ減小亮度分量Y的權(quán)重,增大Cb和Cr的權(quán)重,如公式(20):
(20)
其中,β=1-τ/2,根據(jù)公式(20)計算出目標的每一像素點相對于背景的α值,如果α值小于閾值T,則該像素點是陰影,否則屬于目標.
對比每次得到的指尖點與非指尖點可以發(fā)現(xiàn),非指尖點與其對應(yīng)圓的平均誤差相對較大,因為指尖處的彎曲度更大,更接近圓.從指尖點的圓特性出發(fā),過濾掉之前檢測結(jié)果中的假點.
若二值圖像I內(nèi)任意輪廓點I(x,y)是以(a,b)為圓心、r為半徑的圓上的點,滿足:
(x-a)2+(y-b)2=r2
(21)
各個輪廓點I(x,y)映射為(a,b,r)空間內(nèi)的一個二次曲面.將公式(21)寫成參數(shù)形式:
a=x-rcosθ,b=y-rsinθ
(22)
圖2 對候選點做圓Fig.2 Dothecircletothecandidatepoint圖3 候選圓與輪廓像素點的接近程度Fig.3 Closenessofcandidatecircleandcontourpixel
其中,
(23)
(24)
(25)
指尖檢測的整體實驗流程用圖4表示,主要操作步驟如下:
1)進行圖像預(yù)處理,將鄰域像素連接權(quán)融合在自適應(yīng)混合高斯模型中來提取運動區(qū)域;
2)對提取的區(qū)域進行陰影檢測,去除陰影,然后進行去噪和形態(tài)學(xué)閉運算,得到手部區(qū)域,進而得到手部輪廓;
3)采取重心距離法得到候選指尖位置;
4)根據(jù)指尖處的圓弧特性繼續(xù)對候選點進行濾除假點處理,得到指尖點.
本實驗采用的硬件平臺處理器為Pentiu-m(R)Dual-Core CPU E6500@2.93GHz 2.94GHz,2GB內(nèi)存.軟件平臺為Windows 7操作系統(tǒng),采用C++和OpenCV在VS2010編譯環(huán)境下進行算法設(shè)計.
為完成5.3節(jié)的實驗,采用普通彩色單目USB攝像頭,在背景變化及光照變化等不同條件下獲取包含不同人的不同角度和不同鏡頭距離的手部視頻流作為輸入數(shù)據(jù)進行實驗.視頻幀為分辨率1024*768的高清圖像,視頻的播放速率為30fpS,共包含700幀.
本節(jié)實驗采用M.B.Holte和M.Stoerring的手部視頻序列數(shù)據(jù)集,這其中包含了復(fù)雜多變的背景及混合光照變化等干擾因素,目的在于測試分割算法在不同環(huán)境下的有效性.首先將圖像轉(zhuǎn)換到Y(jié)CbCr顏色空間下,該色彩空間有著很好的聚類性,且聚類區(qū)域不隨亮度的變化而變化;采用中值濾波去噪,能夠有效除去圖像中的細小噪聲點,并保護圖像輪廓完整性;然后利用融合了鄰域像素連接權(quán)的自適應(yīng)混合高斯模型實現(xiàn)對運動區(qū)域的提取,設(shè)定模型中的初始值為Kmax=3,α=0.01,σ=6,δ=2.5,μi為Xi,0的均方差;隨后使用3.2節(jié)中提出的算法對運動區(qū)域進行陰影快速濾除,得到手部區(qū)域,其中τ=0.3,T=4;最后對提取出的手部采取中值濾波來去除過濾陰影時產(chǎn)生的噪聲,同時進行形態(tài)學(xué)閉運算,去除手邊緣輪廓上的鋸齒和手部區(qū)域空洞,使邊緣平滑[10].將本文前景提取方法與自適應(yīng)GMM算法以及其它前景分割算法[11]進行對比實驗,表1和表2列出本文算法的準確率(Precision)、召回率(Recall)和F值(F-measure),并和文獻[7]、[11]的提取算法分別進行對比.準確率等于算法準確分割的運動目標像素數(shù)除以算法分割出的運動目標像素數(shù);召回率為算法準確分割的運動物體像素數(shù)除以人工預(yù)先提取出并標注的運動物體像素數(shù);F值=2*Precision*Recall/(Precision+Recall).
表1 本文方法與文獻[7]的對比實驗結(jié)果
Table 1 Experimental results of this method are compared with literature [7]
環(huán) 境文獻[7]本文算法準確率召回率F值準確率召回率F值正常0.8530.8160.8340.9820.9800.981光照突變0.7390.7110.7250.9740.9700.972靜止變運動0.6980.6880.6930.9630.9580.960
表2 本文方法與文獻[11]的對比實驗結(jié)果
Table 2 Experimental results of this method are compared with literature [11]
環(huán) 境文獻[11]本文算法準確率召回率F值準確率召回率F值正常0.9460.9270.9360.9820.9800.981光照突變0.9250.8870.9060.9740.9700.972靜止變運動0.8940.8300.8610.9630.9580.960
圖5 陰影去除的效果Fig.5 Effectofshadowremoval圖6 兩種算法的平均F值對比Fig.6 ComparisonoftheaverageFvaluesofthetwoalgorithms
從表1和表2看出,本文算法相較于其它前景提取方法在準確率和召回率上有了較大提高,能夠應(yīng)對光照和背景環(huán)境變化,滿足分割要求.召回率的提高,是由于本文利用鄰域像素連接權(quán)對原有自適應(yīng)GMM算法予以改進,一定程度上避免了空洞與輪廓鋸齒等錯誤的產(chǎn)生.準確率的提高則由于去陰影算法的加入,去除了陰影帶來的誤檢.過程中為無監(jiān)督學(xué)習(xí),因而算法擁有較強的可移植性與應(yīng)用性.圖5為陰影去除效果,表明3.2節(jié)中設(shè)計的算法有效地去除了陰影.圖6為本文方法與文獻[7]和[11]中方法在相同數(shù)據(jù)集下的平均F值對比,反應(yīng)了算法的總體平均前景分割水平,圖中選取了數(shù)據(jù)集中第151幀至200幀作為展示.歸納各種環(huán)境信息,本文方法的分割準確率有所提升.
本節(jié)實驗?zāi)康脑谟讷@得改進后的指尖檢測算法的準確率, 采用sebastien marcel的手勢數(shù)據(jù)庫(Hand Posture and Gesture Datasets), 此數(shù)據(jù)庫的背景固定單一, 認為是理想背景狀態(tài)下的手勢圖像序列, 故可以忽略前景分割效果對本節(jié)實驗的影響, 直接測試3.3節(jié)改進方法.利用3.1節(jié)和3.2節(jié)的方法得到手部圖像后, 將其轉(zhuǎn)換為二值圖像, 得到圖像輪廓點坐標, 利用2.2節(jié)的重心距離算法檢測出候選點, 然后利用3.3節(jié)方法對其改進, 該方法僅將候選指尖點所在邊緣與其對應(yīng)候選圓進行誤差檢測, 因而算法簡單快速.
表3 不同檢測方法的準確率對比
Table 3 Comparison of different detection methods
指尖個數(shù)相對位置法K余弦法曲率法本文方法190.82%89.53%89.03%97.35%291.59%86.56%87.57%97.94%388.45%91.04%93.05%97.65%489.36%84.07%85.05%98.76%592.63%89.04%91.02%98.93%
由圖1分析結(jié)果中的假點可知其出現(xiàn)在手腕邊界處,且位于手部輪廓重心的下方,考慮利用重心距離算法得到候選點后直接利用重心與假點的位置關(guān)系這一先驗知識來去除干擾點,將這一方法命名為“相對位置法”.但“相對位置法”的弊端在于手的角度變化可能會使得某些指尖點位于重心下方,尤其是母指指尖經(jīng)常由于角度及張開度的問題而位于重心下方,會造成指尖點檢測不全的問題.將“相對位置法”與3.3節(jié)的改進算法進行實驗對比,同時與其它常用的指尖檢測算法[12-14]對比,結(jié)果為表3內(nèi)容.
為了驗證本文方法從實驗數(shù)據(jù)采集到識別出指尖點的整體過程是否滿足實時性并得到算法整體的準確率.采用5.1節(jié)獲取的視頻作為輸入數(shù)據(jù), 對其利用5.2節(jié)和5.3節(jié)的步驟進行處理, 實驗效果如圖7所示.圖7中選取視頻中第106、 526、 95、 302、 274、 90、 204、 429、 348幀作為效果展示.圖7中每組圖的首行是原始圖像, 第二行是前景分割結(jié)果, 第三行顯示指尖粗檢測結(jié)果, 第四行顯示假點濾除的結(jié)果.從圖7各組第三行看出, 正常伸出的手指均可準確檢測為指尖點, 同時出現(xiàn)干擾點.圖7中(a)、 (b)、 (c)的第四行為本節(jié)實驗的最終效果, 需要檢測的指尖均得到正確檢測的同時去除了非指尖點.
最終,統(tǒng)計出本文提出的方法對本節(jié)采集數(shù)據(jù)集的整體實驗的平均準確率為97.26%,具有有效性,且處理速度較快,每幀圖像實驗整體過程平均耗時為23.43ms,滿足實時性.整體過程建立在帶有彩色單目攝像頭的PC機條件下,具備簡單方便的特點,有實際應(yīng)用意義.與其他文獻中方法的整體實驗的平均準確率以及平均處理時間的對比數(shù)據(jù)如表4所示.
圖7 檢測過程及效果圖Fig.7 Test process and results
表4 整體實驗準確率對比結(jié)果
Table 4 Comparison of the accuracy of the whole experiment
類 別文獻[12]文獻[13]文獻[14]本文改進方法平均準確率87.63%91.55%89.02%97.26%平均處理時間28.27ms31.22ms30.01ms23.43ms
前景分割中融合了鄰域像素連接權(quán)的自適應(yīng)混合高斯背景建模和針對陰影誤檢這一問題提出一種帶權(quán)色彩差異的陰影檢測算法,達到了背景、光照變化等情形下得到手部區(qū)域的目的,增加了模型的準確性和實用性,為準確的檢測指尖提供條件.在檢測指尖時采用改進后的重心距離算法,擺脫了因手旋轉(zhuǎn)變化而引起的誤檢問題,且不受人手與鏡頭距離遠近的束縛.算法運行速度快且準確,符合實時性與穩(wěn)定性原則.但還是有改進的地方,比如:當(dāng)指尖存在遮擋時指尖檢測算法會受到很大影響,這也是所有基于輪廓分析方法檢測指尖的一個共有問題,考慮置雙攝像機的方式可以解決此問題.
[1] Chen Yan-yan,Chen Xiao-qin.Gesture recognition based on Kinect and its application in virtual assembly technology [J].Electronic Design Engineering,2013,21(10):4-7.
[2] Deng Rui,Zhou Ling-ling,Ying Ren-dong.Gesture extraction and recognition research based on Kinect depth data [J].Application Research of Computers,2013,30(4):1263-1265.
[3] Feng Zi-yong,Xu Shao-jie,Zhang Xin,et al.Real-time fingertip tracking and detection using Kinect depth sensor for a new writing-in-the air system [C].International Conference on Internet Multimedia Computing and Service,Association for Computing Machinery(ACM),2012:70-74.
[4] Yuan Fang-jian,Wang Yi-xuan,Wang Yi-gang,et al.Fingertip detection and gesture identification based on Kinect depth image [J].Electronic Science and Technology,2014,27(8):6-10.
[5] Farooq,Javeria,Muhaddisa Barat Ali.Real time hand gesture recognition for computer interaction[C].International Conference on Robotics and Emerging Allied Technologies in Engineering,IEEE,2014:73-77.
[6] Chris Stauffer,Grimson W E L.Adaptive background mixture models for real time tracking [C].Proceedings of IEEE International Conference on Computer Vision and Pattern Recognition.IEEE Xplore,1999:46-252.
[7] Zhang Yong,Liu Qiao-ling.Moving target detection method based on adaptive threshold [J].Computer Engineering and Applications,2014,50(12):166-168.
[8] Bhuyan M K,Neog D R,Kar M K.Fingertip detection for hand pose recognition [J].International Journal on Computer Science & Engineering,2012,4(3):501-506.
[9] Dar-Shyang Lee.Effective gaussian mixture learning for video background subtraction [J].IEEE Transactions on Pattern Analysis & Machine Intelligence,2005,27(5):827-832.
[10] Deng Cai-xia,Yin Yin,Ma Wei-feng,et al.Edge detection based on improved LOG operator and wavelet transform [J].Journal of Harbin University of Science and Technology,2012,17(5):87-90.
[11] Liu Jian,Liu Ya-nan,Gao En-yang,et al.Human detection method based on foreground segmentation [J].Journal of Chinese Computer Systems,2014,35(3):654-658.
[12] Xu Yi-chun,Shen Hang-yu,Chen Lian,et al.Robust system framework and improvement of algorithms in fingertips detection[J].Computer Engineering and Applications,2013,49(15):195-200.
[13] Raheja J L,Mishra A,Chaudhary A.Indian sign language recognition using SVM[J].Pattern Recognition and Image Analysis,2016,26(2):434-441.
[14] Li Bo-nan,Lin Fan.Fingertip detection method based on curvature [J].Journal of Nanjing University of Aeronautics & Astronautics,2012,44(4):587-591.
附中文參考文獻:
[1] 陳艷艷,陳小芹.基于Kinect的手勢識別及在虛擬裝配技術(shù)中的應(yīng)用[J].電子設(shè)計工程,2013,21(10):4-7.
[2] 鄧 瑞,周玲玲,應(yīng)忍冬.基于Kinect深度信息的手勢提取與識別研究[J].計算機應(yīng)用研究,2013,30(4):1263-1265.
[4] 袁方劍,王毅軒,王毅剛,等.基于Kinect深度圖像的指尖識別及手勢判定[J].電子科技,2014,27(8):6-10.
[7] 張 永,劉巧玲.基于自適應(yīng)閾值的運動目標檢測方法[J].計算機工程與應(yīng)用,2014,50(12):166-168.
[10] 鄧彩霞,陰 茵,馬偉鳳,等.改進的LOG算子與小波變換融合的邊緣檢測方法[J].哈爾濱理工大學(xué)學(xué)報,2012,17(5):87-90.
[11] 劉 劍,劉亞楠,高恩陽,等.基于前景分割的行人檢測方法[J].小型微型計算機系統(tǒng),2014,35(3):654-658.
[12] 徐義春,沈沆瑜,陳 煉,等.魯棒性指尖檢測框架及其算法改進與分析[J].計算機工程與應(yīng)用,2013,49(15):195-200.
[14] 李博男,林 凡.基于曲率的指尖檢測方法[J].南京航空航天大學(xué)學(xué)報,2012,44(4):587-591.