王靜雯 張慧玲* 沈陽工學院機械與運載學院
機場和旅游景點的門票信息往往有著成人票和兒童票之分。而兒童票的規(guī)定則有未滿1.2m的兒童半價,未滿1m的兒童免票的分別。然而在機場和景點的人流量十分密集,使用人工的方式進行人體身高判別會費時費力。因此設計一套自動身高識別的測試方案具有十分重要的意義。
(1)測試范圍:0~3m
(2)身高測試精度:±10cm(0~2m)
(3) 身高測試人體數量:1人
(1)能夠快速的進行精度范圍內的人體身高識別,提高系統的運行速度,能夠使系統在人流量大的情況下快速運行。在人體呈現不同姿勢時,都能夠精確的測量身高值。
(2)具有良好的穩(wěn)定性和自檢功能,能夠及時提醒用戶設備的目前情況。
基于kinect傳感器的快速測試共有三種方案使用kinect的人體骨骼信息來測量人體身高。其中第一種方案為頭骨趾骨測量方案,第二種為臂長等效測量方案,第三種為骨骼映射深度信息測量方案。
其中前兩中方案使用kinect API中關于骨骼的函數庫,而后者則不僅使用骨骼信息函數,還使用了深度信息函數,同時使用了骨骼坐標與深度坐標的映射函數。
方案一:頭骨趾骨測量
通過kinect提供的來自SkeletonStream的骨骼數據,捕獲當前用戶的頭骨和趾骨的骨骼信息。得到頭骨與趾骨的空間位置坐標分別為(x1,y1,z1),(x2,y2,z2)。因為得到的坐標信息在 kinect中已經換算算成了以單位為m的坐標,所以只需要得到兩點的距離便可以求得人體的身高。
這樣得到D之后便可以通過軟件界面顯示人體當前身高。
方案二:臂長測量
由于人體的頭骨趾骨的距離與實際人體身高的誤差十分大,所以使用間接的測量方案便可有效的避免骨頭與真實輪廓對應不想符的問題。測試用戶在坐姿的過程中仍然可以進行身高的估計計算。使用戶在kinect前保持雙手平舉,測量用戶的臂長,利用臂長與身高的相似關系來進行身高的測量。
方案三:頭趾骨深度映射
本方案使用的是骨骼信息與深度信息的映射來解決精度問題的。首先kinect提供的數據包括彩色RGB信息,場景深度信息,以及進行運算處理過之后的人體骨骼信息。同時這三中信息一共包含四種坐標,分別為RGB坐標,深度信息的坐標,骨骼提取之后的場景坐標,以及在屏幕上顯示出這些信息的顯示坐標。
于是利用kinect對這四種坐標的準確映射函數,可以良好的進行人體骨骼坐標與深度信息坐標的映射。
在人體站直時,捕捉到用戶的頭骨和趾骨的骨骼坐標點,并將這兩個點映射到深度信息的坐標中,得到映射之后的兩個像素點,同時針對每一個像素點進行上下鄰域判定,當鄰域點的深度信息突變時,便找到了人體的輪廓處,同時記錄下此時這個人體輪廓的最高點的像素坐標,得到了一個頭頂最高處的像素位置。
人體的實際高度表示便可以用公式來表示
即:D=(D1+D2)/D1*d
D——骨骼坐標中的頭骨與趾骨的實際距離,單位為m
D1——骨骼坐標映射到深度圖中的像素距離,單位為pix
D2——通過尋找頭骨鄰域得到人體高度增加的像素值,單位為pix
D——人體的實際高度,
由于測試系統中采用了kinect的骨骼技術,解決了其他測量系統中無法消除的人體彎曲干擾,和實時性差的問題。與傳統的只能定性的測量人高的閾值進行的判斷相比,本系統的可調節(jié)行強,維護更新方便,硬件安裝簡單。測試速度和測試精度能夠達到良好的要求,可以完成預定的測試任務。
本文共設計了三種人體身高的測量方案。
第一種方案適合站立的人進行身高測量,但在測量結果得到之后需要加上9~11cm來保證人體的身高偏差不是很大。雖然代碼簡單,但是精度低。
第二種方案適合坐姿的人進行身高的測量,運用臂長身高的近似關系來進行身高的估算,這種方案與第一種有異曲同工的妙處,都是使用骨骼提取的距離關系來進行測量,相比與第一種方案,此方案的精確度有所提高但是并沒有本質提升。
第三種方案是精確的人體身高測量方案,運用骨骼映射到深度圖形中的方法,在骨骼點附近進行鄰域判斷,尋找突變鄰域,得到用戶的頭頂最高點深度坐標。然后利用最高點與趾骨的坐標進行還原為原來用戶的真實身高。這種方法的計算量和編程步驟較為繁瑣,但是能夠精確的提取出用戶的身高信息。在精度上第三種方案最佳。