楊永輝,鄢陽,宋友,張海龍,馮運,郭子娟
(1.南瑞集團(國網(wǎng)電力科學研究院)有限公司,江蘇 南京 211106;2. 國網(wǎng)電力科學研究院武漢南瑞有限責任公司,湖北 武漢 430074;3. 國網(wǎng)四川省電力公司電力科學研究院,四川 成都 610072;4. 中國電力科學研究院有限公司,湖北 武漢 430074)
目前,我國很多電力企業(yè)引入了三維虛擬仿真培訓系統(tǒng)[1-3]。該系統(tǒng)不僅可以提供學員漫游的功能,而且學員還能在虛擬場景內(nèi)實現(xiàn)電氣測試和設備校準的操作,這既能有效提高培訓的效率,又能消除因為誤操作所造成的風險[4-5]。但是,學員在三維虛擬場景中對虛擬設備進行測試操作和校準控制時,需要頻繁地移動和點擊鼠標,大大影響了學員的沉浸感。為了實現(xiàn)電氣測試設備校準全景仿真中的人機交互,研究基于人手的自然特征來進行手勢的識別,不僅可以降低電氣測試設備校準全景仿真培訓系統(tǒng)中人機交互的成本,而且更加符合人類的自然習慣[6]。
基于人手的自然特征來識別手勢,首先要進行手部的檢測,以確定手部的大小、位置和形狀。只有獲得了手部區(qū)域的信息,才可以進一步提取出相應的手部特征,完成后續(xù)的手勢識別任務。因此,手部檢測精度的高低會直接影響到手部特征的提取,進而影響到最終交互操作的結(jié)果[7]。
常規(guī)的手部檢測方法往往通過提取圖像的底層特征來對圖像進行分析,進而獲取圖像中的手部區(qū)域,最后進行手部的分割和識別[8],其中,膚色是人手檢測最常用的特征。楊世強等[9]研究了基于膚色的人手檢測方法,提出先在YCrCb色彩空間上對膚色信息進行多混合高斯建模,來獲得膚色信息的多混合聚類表示,再利用該高斯模型在線快速學習膚色分布,最終實現(xiàn)利用膚色信息來對人手進行檢測。形狀也是一種常用的人手檢測特征。張國家[10]和郭文爽[11]分別提出提取圖像的圓形梯度和梯度方向直方圖來進行手勢的檢測與分割,準確率分別為90%和92.4%。Guo[12]提出基于運動的人手檢測方法在交通系統(tǒng)的應用中也取得了不錯的效果。對于復雜的圖像,提取單一的特征難以取得好的檢測效果,為此,袁敏[13]提出先通過計算三幅相鄰數(shù)據(jù)幀的幀差來得到圖像的運動信息,以此來得到確定人手在圖像中位置的信息,再引入橢圓模型的膚色檢測方法來對手部區(qū)域進行分割,最終得到人手檢測結(jié)果。跟單獨使用膚色特征或運動特征相比,該方法的準確率更高,魯棒性更強。張玉美[14]提出了一種改進的聚合通道特征算法來對手部進行檢測,該方法結(jié)合了Edge Boxes、多色彩空間膚色模型、邊緣直方圖和Xgboost等特征,在存在高斯噪聲和受人臉干擾的情況下,該方法依然可以有效地進行手部檢測。
隨著深度學習概念的提出和發(fā)展,越來越多的研究者開始將深度學習引入到手部檢測的研究領域。王龍[15]和Roy[16]提出先基于膚色模型將手勢區(qū)域從背景中分割出來,然后采用卷積神經(jīng)網(wǎng)絡(convolutional neural network,CNN)模型對分割出來的手勢區(qū)域進行分類識別。劉壯[17]研究了基于Fast R-CNN的通用物體檢測方法,提出了基于雙通道Fast R-CNN的手部檢測框架,該框架有效融合了圖像的彩色和深度信息,能夠有效提高手部檢測的精度。Hoang等人[18]提出了采用多尺度Fast R-CNN進行人手的方法,該方法利用全局和局部深度特征對圖像中的人手進行編碼從而獲取人手的位置。跟常規(guī)的手工特征提取方法相比較,基于深度特征的人手檢測方法的檢測準確性得到了很大的提升。但是,深度學習需要大數(shù)據(jù)的支持??紤]到目前尚未整理出大規(guī)模的、適用于電氣設備測試及校準的手勢圖像數(shù)據(jù)集,本文選用常規(guī)的圖像處理方法來進行人手檢測。通過對已采集到的人手圖像進行分析發(fā)現(xiàn):盡管電氣測試設備及其校準裝置繁多,但是這些設備和裝置的顏色比較單一,以灰色和白色為主,這跟人體膚色的差別比較明顯;人的臉部線條多為曲線,而與手部相關的部分多為直線,例如人的手指與前臂。為此,本文提出結(jié)合膚色和Hough變換來實現(xiàn)人手的檢測,為后續(xù)手部特征提取以及手勢識別提供研究基礎。
本文所提的人手檢測算法包括膚色檢測、Hough變換和特征約束3個模塊。整個系統(tǒng)的輸入為實時捕獲的人手圖像,檢測的結(jié)果為標注了人手區(qū)域的圖像。膚色檢測模塊是指根據(jù)輸入的圖像,在色相、飽和度、色調(diào)(hue,saturation,value,HSV)顏色空間采用膚色模型對圖像中的膚色區(qū)域進行檢測,獲取膚色二值掩碼圖像;Hough變換模塊先通過Canny算子來提取人臉以及人手的邊緣輪廓信息,再利用Hough變換來排除臉部區(qū)域,保留人手區(qū)域;特征約束模塊基于手部輪廓對膚色二值掩碼圖像進行約束,以獲取最終的手部區(qū)域。
具體的算法流程如圖1所示。
圖1 本文所提手部檢測方法的流程Fig.1 The flowchart of the proposed method
膚色檢測的主要目的是將人的臉部和手部區(qū)域從圖像中區(qū)分出來,并得到二值化的掩碼圖像。本文的膚色檢測步驟如下:
步驟1:顏色空間變換。
本文以紅、綠、藍(red,green,blue,RGB)的形式表示捕獲的圖像數(shù)據(jù)??紤]到RGB的3個顏色通道存在相關性,一個顏色通道的值發(fā)生變化會嚴重影響到最終的檢測結(jié)果,為了降低RGB的3個顏色通道的冗余,先對圖像的顏色空間進行變換,把RGB顏色空間轉(zhuǎn)換成HSV顏色空間。變換公式如下:
(1)
(2)
(3)
步驟2:建立膚色模型。
在電氣測試設備校準過程中采集了200幅人手圖像。對圖像進行人工分割,并對膚色部分的信息進行統(tǒng)計后發(fā)現(xiàn),人皮膚像素的色調(diào)值的分布范圍很有規(guī)律,97.8%的膚色像素的色調(diào)值的范圍為[13,65]。為此,本文通過將色調(diào)值設置成閾值來對圖像進行二值分割,以獲得圖像中的膚色區(qū)域。大量實驗結(jié)果表明,當閾值的范圍為[20,45]時,能夠獲得較好的分割效果。
步驟3:后處理。
使用色調(diào)值對圖像進行膚色分割后,二值圖像中除了膚色區(qū)域的信息,還存在一些非膚色的噪聲區(qū)域,并且膚色區(qū)域內(nèi)還存在一些空洞。針對這些干擾區(qū)域,本文選擇數(shù)學形態(tài)學來對上一步所得到的二值圖像進行后處理。
后處理的方法如下:先選擇尺寸較小的結(jié)構(gòu)元素對二值圖像進行開運算,這樣就能夠消除背景區(qū)域的噪聲信息;然后,再選用尺寸較大的結(jié)構(gòu)元素對二值圖像進行閉運算,這樣可以填補膚色區(qū)域的孔洞。
經(jīng)過開運算和閉運算后,可以得到背景干凈、目標完整的主膚色區(qū)域信息。
Hough變換[19]是一種常用的區(qū)域邊界形狀描述法,它能有效檢測出圖像中存在的直線、圓和橢圓??紤]到人的臉部線條多為橢圓形曲線,而與手相關線條多為直線(例如人的手指與前臂),在第1.1節(jié)膚色檢測結(jié)果的基礎上,本文通過Hough變換來區(qū)分臉部與手部區(qū)域。具體過程如下:
步驟1:邊緣檢測。
使用Candy算法[20]來檢測臉部和手部區(qū)域的邊緣信息。在進行邊緣檢測前,先用高斯濾波器對二值圖像進行平滑處理;然后,使用一階偏導的有限差分來計算梯度的幅值和方向;最后,對計算所得到的梯度值進行非極大值抑制處理,并以發(fā)生邊緣斷裂的斷點作為追蹤起點實現(xiàn)邊緣的追蹤。
步驟2:Hough變換。
在極坐標下進行手部直線的檢測。首先,建立一個二維累加數(shù)組A來存儲(ρ,θ)參數(shù)(ρ為極坐標下直線距離原點的法線距離,θ為法線與x軸的夾角),并將A清零;對臉部和手部邊緣的每個像素點進行Hough變換,計算出ρ和θ值,并且對A(ρ,θ)做加1操作;最后,A(ρ,θ)中數(shù)據(jù)個數(shù)即為落在距原點的法線距離為ρ、法線與夾角為θ的直線上像素點的個數(shù);對A(ρ,θ)作閾值處理,得到最后的手部檢測結(jié)果。
特征約束就是根據(jù)Hough變換所提取的手部輪廓特征,對第1.1節(jié)膚色檢測所得到的二值掩碼圖進行約束,獲取最終的人手區(qū)域,特征約束計算公式如下:
(4)
式中Ires是特征約束后的結(jié)果,即人手圖像像素。
為了驗證本文所提人手檢測方法的有效性,本文進行了一系列的實驗。實驗時使用的PC機CPU為2.40 GHz Intel(R) Core(TM) i7-5500U,內(nèi)存為8 GB,操作系統(tǒng)為Windows 7,軟件編譯環(huán)境為MATLAB 2015。在實驗過程中一共使用了100幅包含手部信息的圖像。部分圖像如圖2所示。
圖2 電氣測試設備校準過程中捕獲的人手圖像Fig.2 Hand images captured during the process of electrical test equipment verification
圖3是使用本文所提方法,對圖2中的5幅圖像進行基于HSV的膚色檢測后所得到膚色區(qū)域的二值掩碼圖像。在進行膚色檢測時,飽和度閾值為34;在對二值圖像進行形態(tài)濾波時,開運算使用的是半徑為2的圓形結(jié)構(gòu)元素,閉合運算使用的是半徑為6的圓形結(jié)構(gòu)元素。
圖3 膚色檢測后所得到的二值掩碼圖像Fig.3 Binary mask images obtained after skin detection
分析圖3可以看出,圖3(b)(c)中的膚色區(qū)域除了人手以外還有人物臉部及脖子區(qū)域。而本文的目的是將手部信息從圖像中分割出來,因此,還需要對圖3(b)(c)進行手部檢測。圖4是使用本文所提方法對圖2(b)進行手部輪廓檢測后,再對二值掩碼圖像進行特征約束后的結(jié)果。從圖5可以發(fā)現(xiàn),本文所提方法可以很有效地去除了人臉部分的膚色區(qū)域,保留了人手區(qū)域的輪廓信息。
圖4 對圖2(b)特征約束后的效果圖Fig.4 Result of Fig.2(b) obtained after feature constraint
為了進一步驗證本文所提方法的有效性,本文對3種人手檢測方法進行了比較,分別為基于膚色的人手檢測方法[9](方法1),基于聚合通道特征(aggregate channel features,ACF)的手部檢測方法[14](方法2)和本文提出的結(jié)合膚色和Hough變換的人手檢測方法(方法3)。
本文使用檢測正確率來對3種方法進行比較,檢測正確率
η=Nr/Na.
(5)
式中:Nr為檢測正確的圖像數(shù)量;Na為所有被檢測的圖像數(shù)量。
圖5是使用上述3種方法對圖2中的人手進行檢測后所得到的結(jié)果。
第1行到第3行圖片分別為使用方法1、方法2和方法3所得檢測結(jié)果。
從圖5可以看出,3種方法均可以將人手從圖中分割出來。但是,方法1不能解決類膚色背景對檢測結(jié)果的干擾;方法2能夠解決人臉對檢測結(jié)果的干擾,但是不能完全解決其他類膚色背景的干擾,并且方法2分割出的人手部分不完整,存在較多缺陷;跟方法1和方法2相比,方法3能夠有效解決類膚色背景的干擾,并且分割出的人手部更完整。
使用3種不同方法對100幅圖像進行測試,所得到的正確率和時間見表1。
表1 使用3種不同方法所得結(jié)果比較Tab.1 Comparison results of three different methods
從表1可看出,本文所提方法的正確率為93%,而方法1所得到的正確率只有81%,比本文所提方法低12%。主要原因在于方法1只是基于膚色來進行手部檢測,而本文所提方法綜合考慮了膚色和手部邊緣特征。分析表1還可以看出,方法2的檢測正確率為89%(比本文所提方法低4%),并且在類膚色背景下,方法3的檢測正確率也要高于方法2。主要原因在于方法2不能有效解決圖像存在嚴重噪聲的問題。
從算法的執(zhí)行速度來看,本文所提方法的平均速度為0.081 s,比方法1慢0.008 s,但是遠遠快于方法2的0.152 s。
本文實現(xiàn)了電氣測試設備校準全景仿真中的人手檢測與分割。通過對進行膚色檢測,將圖像中包含人臉和人手在內(nèi)的膚色區(qū)域檢測出來,再對上述2個結(jié)果進行Hough變換與特征約束,實現(xiàn)了人手的檢測與分割。實驗結(jié)果表明,本文所提方法能夠很好地將人的手部區(qū)域從圖像中分割出來。
圖5 使用3種不同方法對圖2中的人手檢測后得結(jié)果Fig.5 Detection results of images in Fig.2 by using three different methods
后續(xù)的工作包括:在現(xiàn)有人手檢測與分割的基礎上,提取人手的特征,并對手勢進行識別,以實現(xiàn)電氣測試設備校準全景仿真培訓系統(tǒng)中通過手勢與虛擬電氣設備進行交互的目的;采集和整理大規(guī)模的電氣設備測試校準人手圖像數(shù)據(jù),將深度學習應用于人手檢測與分割中,進一步提高檢測的精度。