,, , ,
(國防科學(xué)技術(shù)大學(xué) 機(jī)電工程與自動化學(xué)院傳感器技術(shù)教研室,長沙 410073)
基于深度圖像的嵌入式人體坐姿檢測系統(tǒng)的實現(xiàn)
曾星,羅武勝,孫備,魯琴,劉濤誠
(國防科學(xué)技術(shù)大學(xué)機(jī)電工程與自動化學(xué)院傳感器技術(shù)教研室,長沙410073)
以檢測不良坐姿,分析人們學(xué)習(xí)工作狀態(tài)為引導(dǎo),設(shè)計了基于深度圖像的坐姿檢測系統(tǒng);該系統(tǒng)采用3D傳感器獲取人體坐立時的深度圖像,設(shè)計了一種基于深度閾值的快速前景提取與干擾移除方法,能快速有效的提取坐姿狀態(tài)下的人體分割圖;基于人體輪廓的曲線特征實現(xiàn)了人體關(guān)鍵點定位,通過人體關(guān)鍵點的角度、深度信息與輪廓特征,對不同的坐姿圖像進(jìn)行統(tǒng)計分析,得到了一種區(qū)分不同坐姿的判定基準(zhǔn),運用該基準(zhǔn)對9種不同坐姿進(jìn)行識別,平均識別率可達(dá)到90%;最后,基于Android平臺設(shè)計了坐姿檢測系統(tǒng)的應(yīng)用軟件,實現(xiàn)了坐姿檢測、坐姿提醒以及姿態(tài)統(tǒng)計等功能,并且對學(xué)習(xí)過程進(jìn)行測試,測試結(jié)果表明,本系統(tǒng)可以有效的檢測出9種坐姿、并對不良坐姿進(jìn)行提醒與統(tǒng)計。
坐姿;深度圖像;Android
坐立已成為現(xiàn)代化生活中人們經(jīng)常出現(xiàn)的一種方式,上班族每天操作電腦完成工作、學(xué)生族在課桌前學(xué)習(xí)、司機(jī)長時間坐在駕駛室。然而,長時間坐立會對人的身體和精神狀態(tài)帶來負(fù)面影響,尤其是不良的坐姿習(xí)慣,不僅容易引起近視,也更容易導(dǎo)致腰、頸椎疾病和肌肉僵硬勞損,如果不加以預(yù)防,會損害身體健康,影響個人的學(xué)習(xí)工作效率。此外,有研究表明,人的坐姿與他的學(xué)習(xí)工作狀態(tài)存在某種關(guān)聯(lián),因此,有效檢測并統(tǒng)計人的坐姿數(shù)據(jù),對于隱性分析學(xué)習(xí)工作效率,會具有更深遠(yuǎn)的意義。
近年來,計算機(jī)視覺領(lǐng)域在人體姿態(tài)檢測、動作識別和人行為識別等方面取得了諸多研究成果,而對人體坐姿檢測方面研究關(guān)注相對較少。當(dāng)然,這幾種應(yīng)用的實現(xiàn)方法大致相同,綜合文獻(xiàn)綜述,可分為兩種:基于穿戴式傳感器和基于計算機(jī)視覺。基于穿戴式傳感器的方式,是讓目標(biāo)事先佩戴特有的傳感器,用采集的傳感器數(shù)據(jù)對人體姿態(tài)進(jìn)行識別。Tapia 等人[1]將5個無線加速度傳感器分別放置在肩部、腕部、臀部、大腿上部和踝關(guān)節(jié)處,提取FFT 峰度、標(biāo)準(zhǔn)差等特征,對站立/坐下姿態(tài)和走/跑活動進(jìn)行了有效識別?;谟嬎銠C(jī)視覺的方法,是利用攝像頭來提取人體的姿態(tài)特征,并采用機(jī)器學(xué)習(xí)方法對不同姿態(tài)進(jìn)行綜合識別與分析。Raptis 等人[2]使用 Kinect 獲取骨骼信息,從人體結(jié)構(gòu)的角度將骨骼信息轉(zhuǎn)化為人體角度特征,實現(xiàn)了姿態(tài)分類系統(tǒng)。Schwarz 等人[3]結(jié)合人體解剖學(xué)標(biāo)記和人體骨架模型,從Kinect獲得深度圖對人體進(jìn)行全身的姿勢估計。相比穿戴式方法,計算機(jī)視覺的方法獲取的信息量大,識別更可靠,使用更方便,受到了科研學(xué)者的廣泛關(guān)注。特別是深度圖像傳感器的出現(xiàn),可以更加準(zhǔn)確、實時的對人體姿態(tài)進(jìn)行三維建模,(深度數(shù)據(jù)不受顏色、光照、環(huán)境的影響),越來越多的研究學(xué)者開始使用3D傳感器進(jìn)行相關(guān)研究。
基于此,本文提出了一種基于3D傳感器的坐姿檢測方法。相比其他的人體姿態(tài)檢測系統(tǒng),本方法主要做了以下兩點改進(jìn):1)采用Astra3D傳感器進(jìn)行坐姿檢測,具有更高的檢測效率和更好的檢測準(zhǔn)確率;2)在Android平板上實現(xiàn)坐姿檢測,使整套系統(tǒng)具有更好的便攜性。系統(tǒng)實現(xiàn)方案如圖1所示,選用Astra3D傳感器采集坐姿圖像,在Android平板上實現(xiàn)檢測算法,算法主要分三部分:1)首先對Kinect輸出的深度圖像進(jìn)行干擾去除,并提取人體輪廓圖;2)其次,進(jìn)行人體關(guān)鍵點檢測,并提取坐姿特征;3)采用訓(xùn)練好的模型對不同坐姿進(jìn)行識別。實驗中,我們共邀請了18人進(jìn)行坐姿采集,每人采集了9種不同姿態(tài),前10人用于訓(xùn)練,后10人用于測試。首先跟據(jù)前10人提取的特征點訓(xùn)練出不同姿態(tài)的最優(yōu)分界閾值,再利用該閾值對后8人的不同坐姿進(jìn)行區(qū)分,實驗結(jié)果顯示,該檢測算法具有較好的魯棒性。最后在Android平臺上實現(xiàn)整套檢測算法,并設(shè)計坐姿提醒,坐姿數(shù)據(jù)統(tǒng)計等功能。
圖1 坐姿檢測系統(tǒng)實現(xiàn)流程圖
文中,我們選用Astra3D傳感器進(jìn)行數(shù)據(jù)采集。表1所示是Astra3D傳感器的相關(guān)配置,相比微軟Kinect傳感器具有諸多優(yōu)勢,Kinect[4]傳感器對硬件設(shè)備的要求較高(Windows8以上操作系統(tǒng)、usb3.0的接口以及i7以上CPU),不僅大大的增加了系統(tǒng)成本,還降低了兼容性,不便于安裝攜帶,而Astra3D傳感器的體型更小,同時支持Windows、Android以及Linux三大操作系統(tǒng),具有更高的深度圖像精度,更適合小型化、便攜式設(shè)計。
表1 Astra3D傳感器的結(jié)構(gòu)和功能
我們選用廣州友善之臂的Tiny4412高性能 Cortex-A9開發(fā)板作為Android平臺。Tiny4412采用了高性能的三星 Exynos4412四核處理器,集成了 Mali-400 MP 的高性能GPU圖形加速引擎,支持 3D 圖形流暢運行,其配置完全滿足Astra3D傳感器。實驗中,我們在Tiny4412上安裝了Android5.2.0操作系統(tǒng),并在Java環(huán)境下配置了openCV調(diào)用接口,利用Android5.2.0豐富的API接口,直接使用Java語言進(jìn)行軟件開發(fā)和移植。
深度圖像的采集是通過在程序中調(diào)用Astra3D傳感器的SDK接口來實現(xiàn)的,圖2所示是采集到的RGB圖像與對應(yīng)的深度圖像。
圖2 Astra3D傳感器采集的RGB圖與深度圖
深度數(shù)據(jù)和深度圖像是不一樣的,圖2所示的深度圖像是深度數(shù)據(jù)經(jīng)過轉(zhuǎn)換后,映射到0~255范圍上的灰度圖像,而深度數(shù)據(jù)對應(yīng)的是實際距離,Astra3D傳感器反饋的Z軸數(shù)據(jù)(Vector3)就對應(yīng)著實際距離多少毫米。文中,我們使用深度數(shù)據(jù)進(jìn)行坐姿特征提取。 Astra3D傳感器的深度有效檢測范圍為0.5~8 m,圖2所示的黑色部分則是超出有效范圍,轉(zhuǎn)換后的灰度值默認(rèn)為0的顯示結(jié)果。
考慮到人坐立的特殊場景,我們可有如下假設(shè):1)人坐立時和周圍背景存在一定的距離;2)人坐著的時候,Z軸方向(深度距離)不會有大范圍的變化;3)此外,以學(xué)習(xí)情況為例,我們認(rèn)為人總會坐在圖像視野的中間位置。如圖3所示,是采集的人坐著的時候深度圖像,人和背景的深度圖像灰度值還是存在較大的差異的。本文正式基于這些特點,采用閥值分割法[5]進(jìn)行快速的前景的提取。
圖3 坐姿深度圖
具體的實施方法可分為以下幾個步驟:1)考慮到人體坐立時身體中心位置通常是不變的,因此在初始狀態(tài)選擇一個固定區(qū)域(如圖中方框)認(rèn)為是人體的中心;2)當(dāng)攝像頭初始化時,首先獲取方框中的平均深度距離值,認(rèn)為是人體的最遠(yuǎn)深度距離M。隨后均勻獲取深度圖像中的點(圖像分辨率為320×240,每隔10個像素提取一點),將每個點的深度距離放入向量a中。
(1)
其中:i為圖像中的像素點,a[i]為像素點的深度距離值;3)隨后求得所有背景點中最近的深度距離值MinBackgroundDepth;將其作為閥值,對深度圖像進(jìn)行分割,即可去除背景得到前景圖像;4)最后對分割圖像進(jìn)行高斯濾波、膨脹與腐蝕,去除圖像中的空洞與輪廓邊緣的毛刺。
為了讓后續(xù)每一幀都能很好的去除背景,并且不受人體姿態(tài)動作變化的影響,本文設(shè)計了一種更新方法。具體步驟如下:
1)初始化,獲取MaxTargetDepth;
2) 執(zhí)行公式(1);
3) 獲取MinBackgroudDepth作為閥值,進(jìn)行背景移除;
4) 下一幀,令MaxTargetDepthi+1=MinBackgroundDepth-500,返回第二步;
這樣選擇是因為背景圖像的深度距離值始終變化不大,可以完全的去除背景。另外還可以去除背景前方500 mm之內(nèi)的干擾(這個區(qū)間可以根據(jù)情況而改變)。
分析前景提取效果圖4,可知本方法對于坐姿的分割具有很好的效果,另外具有實時性良好,不受環(huán)境變化與人體移動影響的優(yōu)點。當(dāng)人離開后再坐下時,也可以很快的恢復(fù)分割功能。
圖4 前景分割圖
考慮到外人可能會出現(xiàn)在圖像視野,對前景分割造成干擾,本文設(shè)計了外部干擾去除算法。
在文中,我們只考慮系統(tǒng)在工作過程中外人的走動干擾,根據(jù)實際情況,外人不可能出現(xiàn)在目標(biāo)和攝像頭中間。如圖5所示,我們在每幀圖像中用一個方框來標(biāo)定檢測目標(biāo),從圖中可以發(fā)現(xiàn),干擾對象總會有一部分區(qū)域在方框外部,同時方框內(nèi)部和外部的干擾對象的深度距離差異不大,因此可以考慮先求取方框外部的最近深度距離,然后以此作為閾值去除外界干擾。當(dāng)然,若干擾對象全部在方框內(nèi)部,我們可以認(rèn)為干擾對象離目標(biāo)是有比較遠(yuǎn)的距離(方框大小有限,人在圖像中占得的區(qū)域越小,距離攝像頭越遠(yuǎn)),直接通過閾值分割即可。
圖5 目標(biāo)方框圖
具體方法是:1)首先對前一幀圖像進(jìn)行遍歷,得到目標(biāo)最高點A,以及目標(biāo)輪廓最左邊點B、最右邊點C、最底部點D,設(shè)定當(dāng)前幀方框的上邊為A的行數(shù)減15,左邊為B的列數(shù)減10,右邊為C的列數(shù)加10,下邊為D點的行加15;2)隨后求取1,2,3,4區(qū)域中最近的深度距離值;3)最后設(shè)定分割閥值為(100代表0.1米),即可去除干擾。
當(dāng)然,也會存在干擾對象離目標(biāo)特別近,甚至出現(xiàn)在目標(biāo)和攝像頭中間,此時就無法進(jìn)行干擾去除。然而,考慮整個坐姿檢測過程,這種情況出現(xiàn)的時間會比較少,因此可將其視為異常并直接忽視這種情況,而不對整個姿態(tài)檢測和統(tǒng)計過程造成影響。為了提高系統(tǒng)的抗干擾能力,我們設(shè)定,當(dāng)系統(tǒng)檢測到異常時,下一幀的檢測方框默認(rèn)為固定大小,等異常消失后,仍能恢復(fù)到正常的檢測狀態(tài)。
文中,我們主要采用兩種不同特征:人體關(guān)鍵點特征和輪廓特征,對9種比較常見的坐姿(如:低頭、頭部靠前、偏頭、身體傾斜、后仰、趴下等)進(jìn)行檢測。圖6所示是設(shè)計的人體關(guān)鍵點模型,其中,A為頭部頂點;B為頭部中心;C1為左肩;C2為肩部中心;C3為右肩;D為身體下部中心點。根據(jù)人體形態(tài)學(xué),不同坐姿,對應(yīng)的關(guān)鍵點相對位置也是不一樣的。例如:偏頭時,頭部中心點與肩部角度變化大;身體傾斜時,身體中心線有明顯偏移;趴下時,人體深度輪廓和正常坐立時有明顯差別。
圖6 人體關(guān)鍵點模型圖 圖7 垂直投影曲線
首先,我們進(jìn)行頭部區(qū)域的分割:我們在人體輪廓前景圖,計算橫向的輪廓寬度,得到人體輪廓的垂直投影曲線如圖7所示,肩膀相對人頭部的寬度變化較明顯(人頭部的輪廓寬度約為肩膀的1/2)。
圖8 頭部定位
關(guān)鍵點獲取方法如下:1)首先使用基于均方距離的邊緣匹配算法定位頭部[6],如圖8,其中S′為搜索子圖,T為模板圖,均方距離相識性評價函數(shù)為:
(2)
其中:A,B分別為子圖與模板圖的輪廓點集;a,b分別為A,B中任意一點;dis(i,J)為i點到J集合的最短距離;Na,Nb分別為A,B集合點的總數(shù)。如C為最小值即為定位到頭部。根據(jù)頭部區(qū)域獲取頭部頂點與頭部中心點。
(3)
其中:xi,yi為頭部像素點的行與列,N為頭部區(qū)域的像素總個數(shù);
3)根據(jù)頭部中心點,獲取頭部區(qū)域平均寬度HeadWidth;如widthk=2HeadWidth,則第k行對應(yīng)肩部區(qū)域所在行;
4)隨后根據(jù)肩部區(qū)域得到左肩、右肩、肩部中心的坐標(biāo)。
xs houlderRight,xs houldrerLeft,xs houlderCenter=xk
(4)
(5)
5)最后,根據(jù)肩部坐標(biāo)以及公式(3)獲取肩部以下人體區(qū)域的幾何中心,即為下身中心點。
通過上述關(guān)鍵點獲取方法,分別對正直、頭部靠前、仰頭、左偏頭、右偏頭、身體左斜、身體右斜、靠后、趴下坐姿進(jìn)行關(guān)鍵點獲取,獲取結(jié)果如圖9。
圖9 坐姿關(guān)鍵點獲取
我們首先制定區(qū)分不同坐姿的判定標(biāo)準(zhǔn),然后基于此標(biāo)準(zhǔn)進(jìn)行不同坐姿的檢測。文中,我們首先讓10位志愿者(男女都有)正對攝像頭坐立,攝像頭距離人1米(該距離既能保證人在攝像頭視野范圍內(nèi),也保證了人體坐姿的區(qū)分度)。自然的做出9種不同的坐立姿態(tài),每一種姿態(tài)需要不斷的變化,同一種姿態(tài)獲取10張不同圖像。最終,我們建立了如下的坐姿數(shù)據(jù)庫:包括9種姿態(tài),每種姿態(tài)100張圖像。通過本文提出的前景分割和干擾去除進(jìn)行圖像預(yù)處理,然后進(jìn)行關(guān)鍵點提取,計算出每種姿態(tài)頭部深度距離、L1角度、L2角度和身體深度距離4個參數(shù)的平均值。
由表2可知,不同姿態(tài)對應(yīng)的參數(shù)有著一定差異,本文以關(guān)鍵點角度、關(guān)鍵點深度以及輪廓特征檢測不同的坐姿。坐姿判定標(biāo)準(zhǔn)如下。
表2 坐姿參數(shù)的平均值
正直:75°lt;L1 lt;105°;80°lt;L2 lt;100°;
頭部靠前:頭部深度距離小于0.7米;
仰頭:頭部深度距離值比頭部頂點深度距離值小20 mm;
左偏: L1 gt;105°;80°lt;L2 lt;100°;
右偏: L1 lt;75°;80°lt;L2 lt;100°;
身體左斜: L2 lt;80°;
身體右斜: L2 gt;100°;
后仰:肩部中心深度距離值大于1米;肩部中心到身體下部中心的深度距離是逐漸減小的。
趴下:趴下時人體輪廓與其他坐姿有著明顯的區(qū)別,獲取輪廓方框,當(dāng)長比寬大50像素點時,判斷為趴下。
為了驗證該判定標(biāo)準(zhǔn)的準(zhǔn)確性,我們另外邀請了8名志愿者進(jìn)行測試。同樣,每個人分別做出9種不同坐姿,每種姿態(tài)采集10幀圖像,最后利用此標(biāo)準(zhǔn)的準(zhǔn)確率。
由表3可知,基于該標(biāo)準(zhǔn)的檢測準(zhǔn)確率還是比較高的(基本上能達(dá)到90%左右)。此外,通過測試,該算法的檢測速度能達(dá)到10幀/s,而在實際過程中,我們每秒檢測一幀圖像即可。因此,該算法基本上是可以滿足坐姿檢測系統(tǒng)的準(zhǔn)確率和實時性的需求的。
表3 坐姿識別率
本系統(tǒng)設(shè)置了不良坐姿的提醒功能,以人在學(xué)習(xí)情景下的坐姿檢測為例:我們認(rèn)為當(dāng)人離書桌太近或者身體傾斜一段時間后,該系統(tǒng)要自動給予語音或文字提醒,以促進(jìn)其糾正錯誤坐姿。此外,系統(tǒng)還具有坐姿統(tǒng)計功能,在學(xué)習(xí)結(jié)束時,生成坐姿餅狀圖,讓人們更直觀的了解其在學(xué)習(xí)過程中的坐姿情況。
為了驗證坐姿檢測系統(tǒng)的可行性與有效性,讓一名自愿者坐在攝像頭前正常學(xué)習(xí),使用坐姿檢測系統(tǒng)對其進(jìn)行實時檢測。測試結(jié)果如圖10。
圖10 系統(tǒng)測試結(jié)果
通過測試實驗可知,本文設(shè)計的坐姿檢測系統(tǒng)能夠有效的檢測不良坐姿,并進(jìn)行實時的統(tǒng)計,最終反饋整個使用過程的坐姿餅狀圖,該系統(tǒng)具有良好的可視化與實用性。
本文以檢測不良坐姿為引導(dǎo),設(shè)計了基于Android的坐姿檢測系統(tǒng)。通過Astra3D傳感器采集人的坐姿圖像,設(shè)計了快速有效的背景移除方法和外部干擾去除算法。通過人體關(guān)鍵點與輪廓特征實現(xiàn)了9種常見坐姿的識別。最后,基于Android平板實現(xiàn)了坐姿檢測系統(tǒng),具有坐姿檢測、不良坐姿提醒和坐姿數(shù)據(jù)統(tǒng)計等功能。實驗表明,本系統(tǒng)能夠有效檢測不良坐姿,并實時統(tǒng)計坐姿數(shù)據(jù),為人們改進(jìn)不良坐立習(xí)慣、分析學(xué)習(xí)工作情況提供了幫助。當(dāng)然,文中只是對幾種常見的坐姿進(jìn)行了檢測,選取的特征參數(shù)比較簡單,測試集也相對有限,下一步工作將主要專注于更充分的坐姿數(shù)據(jù)庫建立和更高階的坐姿參數(shù)提取。
[1] Tapia E M, Intille S S, Haskell W, et al. Real-Time Recognition of Physical Activities and Their Intensities Using Wireless Accelerometers and a Heart Rate Monitor[A].IEEE International Symposium on Wearable Computers[C]. IEEE, 2007:37-40.
[2] Raptis M, Kirovski D, Hoppe H. Real-time classification of dance gestures from skeleton animation[A].ACM Siggraph/eurographics Symposium on Computer Animation[C]. ACM, 2011:147-156.
[3] Schwarz L A, Mkhitaryan A, Mateus D, et al. Human skeleton tracking from depth data using geodesic distances and optical flow [J]. Image amp; Vision Computing, 2012, 30(3):217-226.
[4] 劉開余, 夏 斌. 基于Kinect的實時人體姿勢識別[J].電子設(shè)計工程, 2014, 22(19): 31-34.
[5] 韓思奇, 王 蕾. 圖像分割的閾值法綜述[J]. 系統(tǒng)工程與電子技術(shù), 2002, 24(6): 91-94.
[6] 丁 路. 基于深度圖像的人體輪廓識別技術(shù)[D]. 南京:東南大學(xué),2015.
RealizationofEmbeddedHumanBodySittingDetectionSystemBasedonDepthImage
Zeng Xing,Luo Wusheng,Sun Bei,Lu Qin,Liu Taocheng
(College of Mechatronic Engineering and Automation, National University of Defense Technology,Changsha 410073, China)
For the purpose of the detection of bad postures and analysis of people’s learning and working states, a sitting detection system based on depth images is designed. The system uses the 3D sensor to obtain the depth image of the sitting human body, the rapid foreground extraction and interference removal method based on the depth threshold is designed, which can quickly and effectively extract the human body segmentation map in the sitting state. Based on the characteristics of the contours of the human body, the key points of the human body are located. Based on the angles of human body key points, depth information and contour features, the different sitting images are statistically analyzed, and a criterion for distinguishing the different sitting positions is obtained. 9 different sitting positions are identify, the average recognition rate can reach 90%. Finally, an Android platform-based sitting position detection system application is designed to realize functions including sitting position detection, posture reminder and attitude statistics and other functions. The APP is used to test the learning process, test results show that the system can effectively detect 9 kinds of sitting postures, make reminds to bad posture and do statistics at well.
sitting posture; depth image; Android
2017-02-28;
2017-04-12。
曾 星(1993-),男,四川遂寧人,碩士研究生,主要從事傳感器與戰(zhàn)場環(huán)境監(jiān)測方向的研究。
羅武勝(1972-),男,湖南祁東人,教授,博士研究生導(dǎo)師,主要從事傳感器與戰(zhàn)場環(huán)境監(jiān)測方向的研究。
1671-4598(2017)09-0008-05
10.16526/j.cnki.11-4762/tp.2017.09.003
TP391.4
A