李 鑫,馮昌利
(泰山學院信息科學技術學院 山東 泰安 271000)
近年來,中小學學生近視情況越來越嚴重,2018年教育部聯合七部門印發了《綜合預防兒童青少年近視實施方案》。另外,辦公室人員尤其是文字工作者、開發人員也出現了越來越多的頸椎病癥狀。分析可知,長在書桌前時間長、坐姿不正確是造成該問題的原因之一。針對于此,本項目結合視覺分析和三維深度數據制作一款針對書桌的坐姿監測器,該設備能實時監測坐姿,當坐姿有問題及時提醒調整至正確姿勢,從而起到預防兒童近視和成人頸椎病的作用。本項目擬采用深度相機采集書桌前人員的三維深度信息,采用攝像頭采集人體側面軀干、頭部的位置信息,通過設計算法判別當前姿勢的正確性繼而提示兒童調整坐姿。本設備實時性好、對于各類環境條件不敏感、魯棒性好,能充分起到預防兒童近視的效果。依據坐姿數據的采集方式不同,坐姿識別方法分為兩大類:一類是基于傳感器的方法和另外一類是基于圖像的方法。最傳統的方法是基于傳感器的方法,通過不同種類的傳感器,例如紅外傳感器、壓力傳感器、加速度傳感器、超聲波傳感器等采集不同種類的數據對坐姿進行檢測。國內的相關研究主要集中于兩個方面,一種是從基于壓力分布監測,另一種是基于視頻監控的檢測。其中,秦美超等[1]從人類坐姿生理學特征出發分析了坐姿與壓力分布之間的關系,詳細闡明了汽車座椅設計需求以及座椅設計時的曲線標準。白世琪等[2]開發了一套座椅壓力檢測系統,用以收集座椅接觸面與人體臀部壓力分布信息,并發送給PC端進行二維重構。郭玉喜等[3]運用英特爾Realsense攝像機加PC機的方式從拍攝的視頻數據中識別人臉,尋找特征數據判斷用戶傾斜的歐拉角和同一坐姿保持的時間等數據來判斷被測試者的坐姿標準度和時間是否過長。王春陽等[4]利用計算機視覺技術,通過深入分析實時監控的人體正面坐姿圖像信息,間隔性地截取一次視頻流數據中的若干幀圖像從而識別被測試者的眼睛、嘴巴、額頭、鼻子、肩膀等位置信息,與數據庫中存儲好的標準坐姿圖像進行對比來識別坐姿的正確與否。周鈺等[5]將薄膜壓力傳感器配置在被測試者座椅上以獲取人體施加在座椅上的壓力分布數據,利用壓力數據對坐姿進行判斷。這種坐姿識別方式應用場景比較廣泛,可以大大減少用戶的工作量,方便快捷。在該系統中,使用大面積陣列分布電阻式薄膜壓力傳感器為數據采集基礎,以及STM32單片機、解耦電路、采集電路等組成信號采集部分。并使用機器學習技術進行坐姿識別和分類,并實現了該技術在安卓移動端的移植和功能實現。
相比于一般的彩色圖像,三維深度圖像[6-8]具有受光照變化小和不受復雜環境影響的優點,而且很容易獲取實物的三維深度信息。此外,RGB顏色信息對坐姿識別的作用基本可以忽略。與現有已知的方法比較,本文中提出的方法具有以下優點:(1)對常見坐姿進行識別,識別信息豐富;(2)針對不同的坐姿設計了比較高效的前景提取方法;(3)根據不同坐姿的三維深度圖像信息,提取出三維深度圖像的投影特征與HOG特征來對不同的坐姿進行識別,識別精度高,且對光照和背景的影響小;(4)通過這種方法設計出的書桌檢測器具有很好的實用性與魯棒性。本文所提出的書桌檢測器的技術路線流程圖見圖1。
(1)基于Kinect 深度相機和側面RGB攝像頭的硬件搭建。本項目中各子項目,特別是兩個信息采集配件的配置方式見圖1。在該設置中書桌平面上也就是當前人物的對面設置一臺Kinect 深度相機[9-11],以采集當前人物的三維深度數據。另外,在人物的側面設置一臺RBG相機,以采集書桌前當前人物的側面坐立二維圖像。
(2)三維信息處理獲取當前人物頭部和胸部的基本三維位置信息。設計信息處理算法分別識別當前人物頭部和胸部的基本范圍,然后對這些范圍內的深度數據進行計算獲取頭部的基本姿態以及胸部的基本姿態。
(3)二維圖像處理以提取當前人物的輪廓,提取側面形狀。針對RGB攝像頭提取到的二維圖像,使用基于閾值或者基于模型的算法獲取側面的基本輪廓。并在基本輪廓的基礎上,對頭部和軀干部位進行識別,從而用擬合算法得到當前人物頭部和軀干部位(背部)形成的曲線形狀。
(4)對數據進行保存以有效管理坐姿數據。為了豐富當前坐姿信息,邀請多位測試者參與坐姿信號的采集。并對這些原始數據處理后,創建數據庫保存這些處理后的坐姿數據,以實現豐富坐姿數據的同時能夠對這些數據有效管理的效果。
(5)以坐姿數據為參數建立能對坐姿正確性進行判別的數學模型。參考相關文獻中的視覺信號坐姿檢測函數,結合本項目采集的二維和三維數據進行數學建模,該模型能夠在滿足一定的物理意義下判定當前人物的坐姿是否屬于正確坐姿,若不正確則提供簡單建議。
(6)對當前坐姿進行有效反饋。對上述判定函數提供的正確性建議使用聲音輸出設備提供給當前坐立者有效的聲音提示,以起到提醒錯誤坐姿并及時修改的作用。
本系統主要采用RGBD深度攝像頭獲取具有立體視覺的深度圖像信息。獲取三維圖像的深度信息,指的是獲取同一場景的若干張不同視角的圖像,利用圖像的匹配技術和三維重建方法來測算出場景對象的深度信息。Kinect深度相機參數[12-14]見圖2。圖3給出了Kinect深度相機采集到的RGB圖像與對應的深度圖像。本項目的設備設置圖見圖4。
Kinect V2[15]提供兩種級別的面部處理。在第1個層面,我們可以檢測和跟蹤面部并識別列出的8個面部特征。getFaces方法執行C++代碼來提取它的信息,并生成一個帶有面部數據的矢量,其中每個向量的200個元素對應于每一個體。getFaces方法,此方法返回一個結構數組,其中包含每個檢測到的面部的以下字段:
face box:包含用戶面部的矩形。
face rotation:用歐拉角表示的面部方向:俯仰,偏航,翻滾。
head pivot:頭部的中心,面部可以圍繞其旋轉。原點位于Kinect的光學中心,Z軸指向朝向用戶,Y軸指向上方,X軸指向228右邊。
動畫單位:17個動畫單位(AUs),用數字表示權重在0和1之間變化。
face model:具有1347個網格頂點的高清人臉模型。
第2層次的人臉處理[16-18],稱為高清人臉提供了3個驚人的人臉處理能力:(1)人臉捕捉:構建個人人臉相對于平均值由94個形狀變形單元描述的內置人臉模型。(2)人臉跟蹤:用戶可以進行人臉跟蹤17個動畫單位(AUs)中的214個,表示為在以下范圍內變化的數字權重0和1。如果建立了個人模型,跟蹤質量會提高。這使得面部追蹤器能夠使用面部的精確幾何形狀來代替內置平均幾何形狀,導致更準確地表征面部運動。(3)人臉模型:實時三維人臉模型219個網格頂點。Kin2通過提供對這些高清人臉功能的訪問getHDFaces方法。此方法返回一個結構數組,其中包含每個檢測到的面部的以下字段。
(1)骨骼旋轉角計算。由于從Kinect V2獲取的坐標都是點數據,很難對坐姿進行較為全面的描述,故而需通過角度特征來對姿態進行描述。因此利用獲取到的骨骼關節點來計算每個關節的關節旋轉角度,通過這些角度來定義我們的不良坐姿。根據從Kinect V2獲取的三維坐標,進行關節旋轉角度的換算。如圖4所示,點A、點B、點C分別代表3個不同的骨骼關節點,我們通過3個關節點的坐標,需要求出關節點B的夾角θ來作為特征。
首先3個關節,利用兩兩之間的距離為計算:a=|BC|、b=|AC|、c=|AB|,接下來通過余弦函數求得夾角,即關節旋轉角θ,公式見圖5。
(2)基于規則的判別方法的算法[19-20],描述與核心代碼見圖6。
Kinect V2所能獲取的骨骼關節點一共有20個,而其中我們所要采用的關節點一共有8個,它們分別是:頭部、脖子、脊柱、臀部、左肩、右肩、左肘和右肘。通過旋轉角度算法,分別求得以下7個所需要的旋轉角度作為判定坐姿的依據,它們分別是:頭部和脊柱與脖子的夾角定義為頸部夾角(N);頭部和左肩與脖子的夾角定義為左頸夾角(LN);左肩和右肩與脖子的夾角定義為頸肩夾角(NS);頭部和右肩與脖子的夾角定義為右頸夾角(RN);脖子和臀部與脊柱的夾角定義為脊柱夾角(S);脖子和左肘于左肩的夾角定義為左肩夾角(LS);脖子和右肘與右肩的夾角定義為右肩夾角(RS)。
對30名男女志愿者進行坐姿信息采集,坐姿為志愿者坐立時常見的6種姿態,每種坐姿采集了隨機提取10個深度圖像。運用基于規則的方法進行判別,識別正確率可達98.72%,見圖7。
本系統針對不良坐姿給青少年帶來的危害進行總結,設計了基于Kinect V2的坐姿識別系統。該系統通過Kinect V2深度傳感器對人體的骨骼關節點進行追蹤和獲取,將獲取到的關節點數據進行關節旋轉角的計算,設計基于規則的算法對坐姿進行識別。通過測試結果可知,本系統能夠對人體的常見幾種坐姿進行有效檢測和對不良坐姿進行識別并及時提醒。除此之外,本系統還具有較好的魯棒性、高效性等優點。