吳劍鋒 馬夢鑫 蔣濛婷 羅 凱
(浙江工業大學 浙江 杭州 310023)
Kinect的發布到現在,有很多跨領域的研究人員參與其中,用它來解決如醫療健康、教育、軍用、康復訓練及日常生活等各個領域的關鍵性問題。
也有不少研究人員質疑Kinect的精度問題,認為Kinect無法滿足眾多科學研究領域。為此,吳緯瑩[1]等對Kinect開展精度測試實驗,實驗采用Kinect與高精度運動捕捉設備NDI Optotrak同時進行人體運動捕捉,實驗結果表明Kinect的識別精度誤差和穩定性都在cm級。谷軍霞[2]等對行為進行了進一步的分析,對于行為描述問題和行為識別問題進行分析,綜述了行為分析的各種算法。算法方面,孟明[3]等通過改進Vi Be算法解決Kinect識別的鬼影問題,能比較準確地檢測出人體的運動。李詩銳[4]等在Kinect v2的基礎上設計了一套有效的去噪算法,提高重建系統的質量,實現了新一代Kinect重建系統。
利用Kinect的人體運動數據捕捉來輔助椅子的設計,羅凱[5]做了相關的研究。鄭澤銘[6]利用Kinect的深度攝像機,設計并實現了基于人類認知模型的健康坐姿勸導系統和應用,并驗證其可行性。顧軍華[7]等利用Kinect攝像頭的骨骼關節點識別功能對人體進行建模,并利用神經網絡實現動作識別,提高識別率并降低了訓練網絡的迭代次數。戰蔭偉[8]等進行了進一步的研究,通過兩點法計算角度的大小并定義人體姿勢庫,并與姿勢庫進行角度匹配實現姿勢識別。文獻[9]設計了安置了四個壓力傳感器的智能椅,驗證并總結了不同反饋方式的效果。隨著智能硬件和傳感器的集成發展,現在市場上也有不少相關產品,如Misfit Shine、MYO等。
而針對坐姿矯正,前人做的都是通過各類傳感器和智能系統來對坐姿做出判斷后,給予用戶的是一種提醒方式,并沒有實現實時的糾正。王穎[10]等設計了基于坐姿監督的智能視力保護儀。而本文利用Kinect對坐姿行為進行判斷后,直接通過UART與內嵌單片機系統的智能椅進行數據通信,從而實現實時的椅子角度調整,貼合用戶肢體,做到有效支撐,即可防止用戶長時間的不正確坐姿產生。
坐姿意圖即通過觀察被試者的坐姿,判斷被試者的意圖,即工作狀態。對抽取的20名工作人員和學生進行坐姿觀察,觀測實驗中在觀測者的側面關節節點貼上標簽,位置選擇分別為:頭部的耳屏處、頸部中心點、腰部的腰椎處、臀部的骶椎和腿部的膝關節處。實驗中采用傳統攝像技術對每位觀測者進行20 min的無阻礙拍攝,對觀測實驗結果影像進行分析發現,不管是工作人員還是學生,在整個觀測過程中都有固定的幾個坐姿行為。如圖1所示,學生的坐姿可分為作業坐姿(a)和聽課坐姿(b)兩類,而工作人員的坐姿可分為休息坐姿(a)和工作坐姿(b)兩類,這與陸劍雄[11]研究相符。

(a) 作業坐姿

(b) 聽課坐姿

(c) 休息坐姿

(d) 工作坐姿圖1 用戶坐姿行為分類
觀測實驗結果表明,用戶在座椅上的一系列坐姿行為轉換過程中,頸部和腰部以及背部的角度會發生明顯的變化,通過Kinect對用戶坐姿進行骨骼運動捕捉,并通過processing編程獲取被測試者頸部和背部角度,然后將測量數據與觀察實驗結果進行比對分析,即可得出頸部和背部的角度值變量是區分用戶不同的坐姿意圖的主要因素。
從圖2中可以看到在利用Kinect對觀測者進行觀測采用的是側面觀測法,因為側面觀測法比較有利與骨骼角度測量算法的優化,Kinect的骨骼數據是3D的,有X、Y、Z三軸坐標,利用向量來進行角度測量時會多個Z軸的誤差數據。而運用側面觀測法,即可以認定Z值為恒定值,只需計算二維向量角度值。

(a)

(b)圖2 Kinect骨骼運動捕捉圖
但是,由于Kinect原始算法中主要針對的是正面檢測,因此,采用側面觀測法又會存在一個遮擋問題,左右手和腳的相互遮擋以及手與身體部位的遮擋,遮擋會導致骨骼數據不準確,使測量結果的誤差偏大。本文采用信心級別檢驗方法,即在利用Kinect進行骨骼數據鏈接顯示時考慮每個關節的信心得分:信心得分滿分為1分,表示完全無遮擋;當信心得分大于0.5時,表示部分遮擋,不影響準確性;當信心得分小于0.5時,OpenNI會采用猜測的方法來畫關節點的位置,這樣就會出現肢體錯位現象。而本文在根據信心得分劃分閾值,不執行低于閾值的骨骼關節點的連接過程,避免錯位問題,其信心檢驗算法流程如圖3所示,通過信心級別檢驗,當出現骨骼遮擋時,繪制出的關節點如圖4所示。

圖3 信心檢驗算法流程圖

圖4 信心檢驗骨架圖
進行人體骨骼運動數據捕捉過程,為了能比較準確地獲得人體骨骼數據,一般都會采用攝像頭標定。而Kinect采用的是免標定追蹤技術,運用的是質心檢測方法,OpenNI會將每個檢測用戶作為質心,不需要去確定是否已在Kinect的被檢測范圍內。
質心是位于檢測用戶軀干的中央,只要用戶在檢測范圍內,OpenNI就會自動提供用戶的質心,不再需要去訪問用戶像素來計算質心,如圖5所示。

圖5 用戶質心檢測圖
本文利用Kinect進行人體骨骼運動數據測量采用的是側面觀測法,在二維平面空間內,把人體側面頭部、頸部、肩部、脊椎中部、尾椎5個骨骼關節點兩兩連線,從而形成頸部和背部的兩個測量角,這同時也是本文進行用戶坐姿意圖判定的兩個主要變量因素,如圖6所示。α是頭部與頸部兩點形成與水平坐標軸形成的夾角,而β是脊椎即肩部中央,脊椎中部和尾椎連線與水平坐標軸形成的夾角,本次測試通過α和β一起來判定用戶坐姿行為。

圖6 頸部和腰部骨架角度圖
根據二維空間的骨骼關節點HEAD的JointType(x1,y1) 、NECK的JointType(x2,y2),SPINE的JointType(x3,y3),根據如下求角轉換公式進行α角度的計算。
(1)
本文采用的是Processing的SimpleOpenNI庫中,除了SimpleOpenNI庫里的各種方法,Processing本身也自帶有非常龐大的數學函數庫,其中就提供了求方位角的函數方法,即直接使用函數語句atan2(y,x),可以方便的求出α角的值,其主要代碼實現如下:
float X_Head=joints[KinectPV2.JointType_Head].getX();
float Y_Head=joints[KinectPV2.JointType_Head].getY();
float a=(Y_Neck-Y_Head)/(X_Head-X_Neck);
//求tanβ的值
float b=atan2(abs_Y_Head,abs_X_Head)*180/PI;
//獲取β角的值
β角是由Neck和SpineBase的連線與水平坐標軸相交而成。與α角測量計算相似,通過Kinect測得Neck與SpineBase骨骼點的坐標,計算公式如下:
(2)
在Processing中,其實現代碼與α角原理相同。
根據上述描述,Kinect能夠實現質心追蹤技術和骨骼點角度測量。對比實驗過程采用一臺Kinect紅外攝像頭和彩色攝像頭同時對一個用戶進行坐姿檢測,其中紅外攝像頭來檢測用戶骨骼點的角度,通過程序算法設定計算出目標角度;而彩色攝像頭則直接記錄用戶在工作過程中的整個坐姿行為,最終兩者進行對比,從而來驗證Kinect對坐姿意圖判斷的準確性。
整個對比實驗過程中,找來10個觀察用戶對象,通過上述的方法分別對其工作過程進行檢測觀察,在整個觀測過程中,隨機的抽取幾個時間段來進行判斷驗證。
通過實驗可獲取10組數據,每組數據分別由頸部角度和背部角度組成,將獲取的數據進行分析,獲取頭部與背部的角度曲線。隨機抽取一名被試者,將Kinect檢測出來的頭部和背部角度跟彩色攝像頭的錄像進行對比,分別繪制出角度曲線如圖7所示。

圖7 頭部與背部角度變化曲線(被試者1)
從圖7的曲線可以直觀地看出頭部和背部角度隨時間變化的趨勢。并且通過觀察,Kinect檢測出來的角度與彩色攝像頭錄像的角度曲線走向基本一致,例如圖中圓圈處的拐點,此時背部角度保持不變,頭部角度變大,觀察彩色攝像頭錄像發現,此時被試者處于休息狀態;從曲線圖中隨機選取一個時間點(圖中虛線位置),對比彩色攝像頭錄像如圖8所示,被試者頭部角度約為α約為85°,背部角度β約為97°,即被試者處于休息狀態,二者結果一致。

圖8 被試者1交叉對比
將10名被試者的Kinect檢測數據與彩色攝像頭圖像進行交叉對比,每隔5 min進行一次人工檢測,對比錄像與Kinect自動檢測角度,獲得如表1所示。

表1 Kinect與人工檢測角度對比
根據觀察實驗對象,當被試者背部角度大于90度時,被試者處于休息狀態,當被試者背部角度小于90度時,即被試者處于工作狀態。對表1分析得知,Kinect能夠準確地判斷出被試者的坐姿,準確率達到97%;測量精度方面,其標準誤差為3°,在可接受的范圍內。
用戶在使用現有的座椅進行一系列的坐姿行為過程中,由于座椅不能進行相應的自動調節,從而無法有效地貼合用戶身體的相關部位,如頭部、背部和臀部,在長時間的工作和學習過程中,用戶身體在沒有合理的有效支撐勢必會發生肢體的不正確彎曲,長此以往就會導致脊柱變形、腰酸背痛、頸椎病和腰椎病等一系列慢性疾病。
根據上述實驗已經驗證,應用Kinect的角度測量算法是可以精確地判斷出用戶的坐姿意圖,利用這個方法,可以應用在如工業設計、醫療康復、教育等各個領域。本文以陳凱歌設計的兒童坐姿矯正椅[12]為例,應用Kinect來做產品開發過程中的驗證判斷。
上述實驗已經得出頸部和背部的角度值為判定用戶坐姿行為的兩個主要變量,這也是設計矯正椅的重要決定因素。陳凱歌設計的坐姿矯正椅主要功能是為適應用戶的各種坐姿行為來自動做出相應的調整,與用戶當前坐姿合理接觸,做到有效支撐,從而防止用戶肢體的不正常彎曲。
吳新林[13]的研究表明,用戶在前傾狀態下,最佳坐姿為座面前傾10°且軀干與大腿夾角100°,后傾狀態下,最佳坐姿為座面后傾5°且軀干與大腿夾角115°。根據此研究結論,為了能貼合用戶的坐姿行為,矯正椅的椅背和椅面是可以自動調整的,分別通過兩個直流推桿電機來控制,而控制運動的兩個電機固定在一體的支架上,此坐姿矯正椅的各結構部件如圖9所示。

圖9 坐姿矯正椅結構部件示意圖
Kinect獲取并判斷用戶的坐姿行為,通過UART協議傳輸給單片機控制器,再由單片機來計算出矯正椅上點擊所需運行的時間以及運行的方向。坐姿矯正椅工作流程如圖10所示。

圖10 坐姿矯正椅工作流程圖
原型機測試實驗表明,Kinect能夠檢測出來的頭部與背部角度,判定出用戶的意圖,從而對座椅進行調節,適應用戶的坐姿。如圖11所示,當被試者處于姿勢(a)時,Kinect能夠準確檢測出被試者的坐姿意圖為作業姿勢,從而控制單片機將座椅的椅面與靠背進行相應的調節;當被試者處于姿勢(b)時,Kinect同樣能夠控制單片機進行相應的調節。

(a) 作業姿勢 (b) 聽課姿勢圖11 原型機真人測試
根據相關文獻整理和實地的實驗調查,對不同用戶的坐姿行為進行了分析。通過Processing結合SimpleOpenNI編程技術實現對用戶坐姿行為的判斷,并通過UART通信和單片機控制原理來進行反饋調節,從而實現對用戶坐姿變化的實時調整。本文結合坐姿矯正椅的原型機,采用真人測試。測試結果表明,針對不同坐姿狀態,Kinect可以進行有效識別和反饋調節。