本發(fā)明屬于數字圖像處理領域,具體涉及室內人物測距方法。
背景技術:
隨著機器視覺中智能監(jiān)控在實際領域中的應用與發(fā)展,利用攝像頭進行人物檢測與追蹤技術已取得了非常大的發(fā)展,但在人體空間定位方面尚有待更多的研究。目前用于室內定位的方法主要分為apgs(assistant-gps)定位技術、無線定位技術以及計算機視覺定位技術。
gps是廣泛應用于航空航海、車輛導航等領域的室外定位技術,相對于室內定位,gps定位誤差比較大,而agps則是在gps的基礎上,通過獲取衛(wèi)星星歷,延長每個碼的延遲時間來提高信號的靈敏度,雖然apgs在一定程度上增加了定位精度,但仍不能滿足當前室內精確定位系統(tǒng)需求(20mm以內)。。
無線定位技術主要利用信標節(jié)點間信號的到達時間、到達時間差、到達信號角度和到達信號強度等信息確定位置坐標,有基于紅外線的室內定位方法、基于rfid的室內定位算法、基于超聲波的室內定位方法以及radar室內定位系統(tǒng)等。雖然目前的這些無線室內定位方法能夠滿足一定應用領域,并且其中最好的定位精度已能夠控制在15cm以內。但是,與10mm的理想精度還存在差距,而且無線定位技術環(huán)境搭建復雜,成本高。
機器視覺的定位技術主要通過攝像頭采集室內環(huán)境深井數據,而進行室內空間定位,在研究幾款比較成熟的體感攝像頭后,發(fā)現微軟公司開發(fā)的kinect體感攝像頭能夠取得比較好的效果,kinect主要通過紅外攝像頭發(fā)射并接受結構光獲取場景中深井圖像,再通過隨機森林的方法推測人體各個部位的位置,從而提供比較精確的人體空間位置[1]。
通過kinect攝像頭已經能夠比較精確地檢測出視域中的行人并能比較精確地定位人體的三維坐標,但是其數據精度與穩(wěn)定性還存在更進一步的提升,因此本發(fā)明提出了一系列對kinect測量數據進行處理的方法,使處理后的數據精度控制在20mm以內。
技術實現要素:
本發(fā)明發(fā)明的目的是提供一種高精度(精度為20mm以內)室內人物測距方法。
本發(fā)明提供的高精度室內人物測距方法,是基于kinect體感攝像頭的,即采用kinect體感攝像機采集的人體主要關節(jié)點位置數據,并對這些數據進行處理,使得室內人物測距精度在20mm以內。
本發(fā)明實現的硬件配置一臺kinectv2體感攝像機,一臺有usb3.0的pc機,pc機處理器core-i3以上,pc機中操作系統(tǒng)為windows8或以上版本。本發(fā)明方法的步驟為:
首先,通過kinect體感攝像機采集人體主要骨骼三維位置數據;
然后,由pc機根據標定過的位置數據模型對獲取的骨骼三維位置數據擬合校準;
然后,根據每個骨骼點處歷史位置數據,采用卡爾曼濾波器對擬合校準后的骨骼三維位置數據進行平滑處理,通過卡爾曼濾波后的位置數據即為該人體各個骨骼點最終位置信息;
最后,計算該位置坐標與目標點位置坐標距離,即得到人物各個骨骼點相對于目標點距離。即本發(fā)明方法包括4個處理過程:數據采集、擬合校準、卡爾曼濾波、距離計算。
1.數據采集
由kinect攝像機實時監(jiān)控室內場景,對場景中人物識別,并精確計算人體幾個主要關節(jié)點三維位置坐標,通過usb3.0數據接口傳輸至pc機,本發(fā)明調用kinect攝像頭統(tǒng)一編程接口api實時獲取經過kinect處理過的人體主要骨骼三維位置數據。如圖1所示為kinect計算的人體各個主要關節(jié)點。
2.擬合校準
具體過程為擬合模型訓練與擬合標定兩個部分:
擬合模型訓練:通過計算kinect人物測距數據與實驗室標定人物測距裝置結果進行距離偏差計算,計算kinect測距偏差與人物三維位置坐標關系多元擬合參數。
擬合標定:采集到kinect攝像機人物位置原始數據后,根據訓練的多元擬合參數,計算該位置處人物位置偏差,原始數據減掉偏差即為校準后數據:
式中右邊第一項為原始數據,第二項為偏差。
具體來說,擬合模型訓練階段,系統(tǒng)采用多元回歸分析進行數據的線性擬合,多元回歸分析是統(tǒng)計應用中計算目的變量與已知變量之間關系的一種重要方法,設預測對象為w,影響因素有m個,分別為:
根據多元回歸分析思想,若給出n組統(tǒng)計資料
在擬合標定階段,系統(tǒng)計算在各個標定點處kinect攝像頭檢測距離與實際距離差值作為檢測誤差,然后根據上述多元回歸分析的方法計算各個影響因子的影響參數,從而得到誤差與檢測位置之間的關系式。在正式檢測時將檢測位置代入該關系式即可求出對應誤差。
3.卡爾曼濾波
在實時的場景檢測中,kinect攝像頭檢測結果整體呈現表較好的穩(wěn)定性,但仍存在一些較大的噪聲,為了減低噪聲,使測量數據更加平滑,更加準確,本發(fā)明引用卡爾曼濾波的方法進行數據濾波。kalmanfilter是一個最優(yōu)化自回歸數據處理算法,文獻[12]中有對卡爾曼濾波的詳細數學分析。基于微分的思想,實時檢測過程中,行人在每個非常短的時間段內可近似為勻速運動,因此可以以此作為先驗進行卡爾曼濾波數據濾波分為兩步:(1)計算預測值,(2)更新預測值。
預測值的計算主要依據上一幀測量值
實驗系統(tǒng)中預測狀態(tài)值與前一狀態(tài)狀態(tài)值呈現乘法因子為1的線性關系,故而協(xié)方差的預測值為:
式中q為系統(tǒng)過程協(xié)方差。
根據卡爾曼濾波原理,預測值的更新式為:
式中
其中
同時更新協(xié)方差:
4.距離計算
計算該位置坐標與目標點位置坐標距離,即得到人物各個骨骼點相對于目標點距離。
通過以上步驟實現的室內人物測距,不僅可以計算人體各個主干部位位置信息,而且各個主干部位測距精度均在20mm以內。
附圖說明
圖1為kinect獲取的人體位置信息的骨骼點分布。
圖2為室內人物測距界面。
圖3為本發(fā)明方法流程圖示。
圖4為坐標偏差影響原理圖(圖中攝像頭仰角為α)。
圖5為激光對比實驗x、y、z坐標測量結果殘差。
圖6為自驗證實驗x、y、z坐標測量結果殘差。
具體實施方式
1.硬件準備
將kinectv2體感攝像機接通電源,數據線連接pc機中usb3.0串口。
2.啟動室內人物測距
本發(fā)明的人物測距方法是與雷達安防系統(tǒng)配套使用,是室內雷達安全全息成像的輔助系統(tǒng)。當雷達系統(tǒng)感應到場景區(qū)域內有行人時,通過子進程調用的方式啟用基于本發(fā)明方法開發(fā)的室內人物檢測系統(tǒng),程序打開后界面如圖2所示,室內人物測距系統(tǒng)通過管道通信方式接收主進程命令,開始實時檢測室內場景中人物位置,圖中右邊為人物各個關節(jié)點距離攝像頭距離,并將各關節(jié)點實時距離位置分別保存至目標目錄下文件中,供主進程使用。
測距精度對比試驗
本發(fā)明方法采用了兩種測距精度實驗結果驗證方法,一種是與激光測距儀進行測量結果對比的驗證實驗,一種是通過兩個相同的本項目研究系統(tǒng)同時檢測,一個檢測裝置數據作為標準數據檢測另外一個檢測裝置數據。
1.激光測距儀對比驗證
讓人體模特在運動平臺上做勻速直線運動,激光測距儀實時檢測運動平臺距離,同時檢測系統(tǒng)檢測人體各個關節(jié)點三維位置坐標,實驗后,利用勻速直線運動及激光測距儀數據驗證檢測系統(tǒng)檢測數據的準確性,實驗方式如下:
驗證原理:由于激光測距儀只能測量一個方向的距離,因此對于z(運動方向)方向位置可以與激光測距儀進行對照測試,而對于x(水平方向),y(豎直方向)可以利用運動過程中攝像頭方向與水平方向角度差所造成的幾何關系驗證誤差,其角度差幾何原理如圖4所示。
對于同一物體,沿運動軌道向攝像頭方向運動,豎直方向位置變化與運動方向位置變化見存在幾何,在攝像頭方向從z1運動到z2,運動距離為δz,對應相同位置在豎直方向上的位置從y1變化到y(tǒng)2,位置變量為δy。從圖中的幾何三角關系可以求得:
由(7)和(8)可以得出:
而又有:
由(9)、(10)、(11)可計算:
將公式(12)進行推廣,假設在t時刻,模特在運動方向及豎直方向某關節(jié)點的位置分別為z、y有
由式(13)可知道y與z線性相關,同理可推,x與z也線性相關,故而可以利用其相關性驗證檢測數據在x、y坐標上的準確性。
實驗設備要求:kinectv2攝像頭1臺,高精度渦輪電機驅動軌道1個,模特1個,安裝了定位系統(tǒng)軟件臺式機1臺。
實驗過程:將模特安置在高精度渦輪電機驅動軌道平臺上,kinect攝像頭分別放置在軌道垂直方向正中間,并且連接臺式機,模特在電機軌道上電機驅動下做緩慢運動,利用激光測距儀測距系統(tǒng)實時檢測模特在軌道方向運動距離,同時開啟本定位系統(tǒng),檢測模特在運動場景中的三維數據,兩個系統(tǒng)獨立實時檢測定位數據。
實驗結果:依據上述驗證原理,利用matlab工具進行數據擬合,首先以x=az+b、y=az+b得到擬合相關度及殘差,所有擬合相關度均大于0.95,由于圖中殘差結果以及相關度均符合驗證,說明了系統(tǒng)對運動人體空間位置測量的正確性,對于z方向的精度,需要與激光傳感器測量數據對比驗證其精度在10mm以內,根據4.1中分析,首先通過matlab對real_z以及deal_z進行線性插值,再求出對應位置處的差別diff,而由于激光傳感器以及本系統(tǒng)零點存在絕對距離d,因此測量點上diff-d的結果即為z方向測量精度,x、y、z坐標測量結果殘差如圖5所示,根據殘差結果求出各個坐標方向上的定位誤差如下:
x:1.1508mmy:1.1708mmz:2.2589mm。
2自驗證實驗
通過兩個相同系統(tǒng)分別同時檢測來驗證測量誤差,實驗方式如下:
驗證原理:由于兩臺kinect攝像頭坐標系不一樣,因此不能直接比較數據,兩個坐標系的變換主要是旋轉和位移的變化,攝像頭位置固定后其坐標變換矩陣不變.其變化矩陣形式如下:
假設一臺攝像頭a中坐標為(x1,y1,z1),另外一臺攝像頭b中對應點坐標為(x2,y2,z2),則有
由上式可知a中坐標與b中坐標成多元線性關系,因此可以利用這一關系進行數據驗證。將a中坐標對b中坐標進行matlab多元線性擬合,其殘差可以表示為兩攝像頭數據差值。
實驗設備要求:kinectv2攝像頭2臺,電機驅動軌道1個,模特1個,安裝了定位系統(tǒng)軟件臺式機2臺。
實驗過程:將模特安置在電機驅動軌道平臺上,兩臺kinect攝像頭分別放置在軌道左右兩邊,分別連接兩臺臺式機,模特在電機軌道上電機驅動下做緩慢運動,開啟定位系統(tǒng),兩個系統(tǒng)獨立實時檢測定位數據。
實驗結果:本次試驗中人在場景中自由活動,由于兩攝像頭的時間未同步,因此先將兩攝像頭測量曲線顯示出來,通過逐步調整時間,盡量使兩曲線更加吻合,從而得到近似同步結果,然后,將公共數據段用線性插值方法以5ms為間隙插值,再用多元線性擬合函數求出殘差,實驗中a攝像頭301組數據,b攝像頭317組數據,其x,y,z坐標對應殘差結果如圖6所示。
根據殘差結果求出各個坐標方向上的定位誤差如下:
x:10.5268mmy:3.7675mmz:12.8482mm
在室內行人自由行走情況下,各個關節(jié)點處坐標檢測誤差的標準差如表1:
表1各關節(jié)點檢測誤差的標準差結果
參考文獻
[1]jamieshotton,andrewfitzgibbon,matcook.real-timehumanposerecognitioninpartsfromsingledepthimages[c].cvpr20111297-1304.。