翁勝偉

摘 要:為實現行人運動目標檢測,需要對目標運動場景進行采集,包括彩色信息和深度信息。然而在圖像形成和傳輸過程中,會受到環境、光照等多種因素影響,采集到的信息與實際場景相比存在降質或退化問題。因此,在進行行人運動目標識別分割之前,需要對原始圖像進行預處理。介紹了采集原始圖像的硬件設備Kinect 2.0傳感器;根據深度成像原理,分析了深度圖像的預處理算法。
關鍵詞:Kinect傳感器;圖像采集;深度成像
DOIDOI:10.11907/rjdk.171254
中圖分類號:TP317.4
文獻標識碼:A 文章編號:1672-7800(2017)007-0202-03
0 引言
大型城市人口過度集中已經成為一個公認的社會問題,對一些場所和地區進行人流統計,基于人流統計信息進行決策管理,以合理利用與分配社會公共資源。在展覽館、博物館、大型商場、飛機場、火車站、地鐵站和旅游景區等人流高密集場所,人流數量、滯留人數、人流規律、人數趨勢等信息能夠幫助決策與調度,有效提高行人的便捷出行。同時,根據人流統計數據,可以提前進行區域限流,防止由于人群密度過高、不容易疏散而引起踩踏等安全隱患或社會動亂,避免人身安全受到威脅。
目前,針對機器視覺的視頻人流統計,主要涉及到行人目標的識別、檢測和跟蹤、計數,有很多相對成熟的算法,但大多算法面臨背景和光線的干擾,以及多目標的遮擋和偽目標的誤檢等問題,高準確率、高魯棒性的人數統計是研究熱點和難點?;谝曨l的人數統計面臨很多技術難題。因此,無論在技術上,還是在學術研究領域,運動目標的分割與檢測技術均具有深遠的現實意義及研究價值。
1 國內外研究現狀
人流統計的智能化、無監督化、自動化是目前發展的重點。國外針對運動跟蹤等機器視覺領域有專門的ICCV(International Conference on Computer Vision)、ECCV(European Conference on Computer Vision)、CVPR(IEEE conference on Computer Vision and Pattern Recognition)等頂級國際會議,還有PAMI(IEEE Transaction on Pattern Analysis and Machine Intelligence)、CVIU(Computer Vision and Image Understanding)、IJCV(International Journal on Computer Vision)和PR(Pattern Recognition)等權威期刊[1]。學者在這些會議和期刊上發表的關于視頻人數統計的最新進展,具有巨大的參考意義和研究價值。
國內也舉辦一些機器視覺方面的學術會議。自2002年始,全國智能視覺監控學術會議(Chinese Conference on Intelligent Visual Surveillance,IVS)已成功舉辦了4屆,還有中國機器學習及其應用研討會(China Workshop on Machine Learning and Applications,MLA)、亞洲計算機視覺會議(Asian Conference on Computer Vision,ACCV)等,為計算機視覺研究者和企業提供了技術交流平臺。
2 Kinect軟件結構
Kinect 2.0傳感器可根據微軟公司的Kinect For Windows的NUI庫,結合用戶開發的算法程序和OpenCV等開源庫進行軟件設計。Kinect For Windows架構如圖1所示。
Kinect傳感器把圖像數據、深度信息和音頻通過USB 3.0接口傳輸至NUI庫,NUI庫隱藏了復雜的硬件操作,用戶應用程序只需調用NUI API訪問,包括彩色圖像、深度圖像、音頻信息和骨骼信息等幾種類型數據。使用NUI庫獲取并處理數據源流程如圖2所示。
Sensor代表一個具體的硬件實體,一個應用程序可以調用一個或者一個以上的傳感器(默認為1個),隨后調用Source,顯示數據源的元數據,并為閱讀器(Reader)提供獲取途徑,傳感器的深度幀、彩色幀以及音頻源等都會提供一種數據源供用戶調用。Reader提供獲取幀的途徑,包括事件機制(觸發模型)和輪詢機制(“拉”模型),一種數據源可以有多個閱讀器(Reader),閱讀器也可以被暫停。幀Frame分為Frame References和Frames,Frame References發送幀事件參數,包括獲得實際幀使用方法、被引用幀的時間戳等具體信息;Frames提供獲取幀數據的途徑(建立本地副本或直接訪問底層緩沖區),包含諸如幀格式、寬度和高度等幀中元數據。此外,Frames大大減少了獲取幀的時間,用戶可以根據需要得到不同類型幀的數據Data[2]。
2.1 Kinect深度成像原理
Kinect傳感器的深度成像,是利用一個紅外發生器在視場區域內發射近紅外光譜,另外一個深度(紅外)攝像頭接收發生變化的紅外光,紅外光譜的投影區域和紅外接收區域重疊,兩者共同作用形成深度圖像。其中,紅外深度成像大致分為兩類[3]:
(1)基于光飛行時間(Time of Flight,ToF)原理。光飛行時間技術通過發射紅外光和測量紅外光脈沖之間的時間差來計算深度信息。Mesa Imaging SwissRanger 4000和PMD Technologies CamCube 2.0價格不菲,而本文使用的Kinect 2.0傳感器也應用了ToF技術,價格與它們相比具有非常大的優勢[4]。
(2)基于結構光的測量。結構光測量基于光編碼技術,將具有點、線、面結構的紅外光結構投射到場景中。由于紅外線在接觸到物體表面時會產生變形,通過測量其形變程度來計算場景深度信息。使用結構光測量方案有PrimeSensor公司的Light Coding技術[5]。結構光測量法與傳統的三角測量法比較,能夠快速獲得深度信息。endprint
在Kinect 1.0傳感器上,通過體感偵測裝置PrimeSensor和感測芯片PS 1080,使用基于近紅外光(激光散斑)的Light Coding技術。Kinect 1.0傳感器使用與PrimeSense的SoC相連的標準CMOS影像傳感器,從場景中讀取經過編碼的光線,并執行復雜的并行運算邏輯,對編碼光線進行解碼,由此獲得一個場景的深度影像。Light Coding技術利用近紅外光(隨機激光散斑)對場景進行編碼。由于空間中任意兩點的散斑圖案不同,所以通過測量場景中的散斑圖案就可得到場景的深度信息[6]。
Kinect 1.0傳感器使用的激光散斑方案不受環境光影響,然而Kinect 1.0傳感器測量某點的深度,需要知道鄰域內各點深度信息。Kinect 1.0傳感器測量諸如細頭發對象時,由于所測頭發點周圍沒有點群,因此無法獲得深度信息,而Kinect 2.0傳感器解決了這個問題。
Kinect 2.0傳感器使用ToF原理,如圖3所示。Kinect 2.0傳感器的紅外發生器發射強度是隨空間變化而變化的正弦波信號,通過深度攝像頭獲得正弦信號的發射和接收強度差和相位差來計算深度,公式如下:
式(1)中,Depth為紅外攝像頭與場景中物體的距離,即所要的深度信息,c為光在真空中傳播的速度,Φ表示發射和接收的近紅外正弦信號的相位延遲,f為正弦波的調制頻率。
利用ToF原理進行相位差Φ的測量如圖4(a)所示。ToF利用連續波(CW)強度調制(Continuous Wave Intensity Modulation)方法[7],近紅外信號發生器gill[5]發射強度調制、周期性的正弦信號,在傳播方向上碰到物體后發生反射,在深度(紅外)攝像頭接收器的每個像素上接收到反射信號sill后,根據基準信號gref對反射信號進行采樣,每個像素點的采樣公式(積分測強度)如式(2)所示。
在實際的連續波(CW)強度調制采樣時,在一個時間周期內,每個像素點進行4次采樣,且采樣的相位各相差90°。如圖4(b)所示,C1、C2、C3、C4代表4次采樣,且在光源發射的同時啟動第一次采樣C1,在C1采樣階段,若接收到反射光,則在傳感器像素點上采集電荷,采樣階段積累的電荷記為Q1;同樣,C2采樣階段和C1采樣階段相位相差90°,采樣得到的電荷記為Q2,以此類推,共進行4次采樣,得到相位差Φ的測量公式[8]如式(3)所示。
式(3)中,Qi=C[gilli,grefi](i=1,2,3,4),gilli(t)=cos(2πft),對于f恒定,通常取值范圍為10-100MHz,本文所使用的Kinect 2.0使用的光源平均頻率為80Hz;grefi(t)=gilli(t+τi),τi為相位偏移量,τi=i×π/2,i=0,1,2,3。
從式(3)可知,由于(Q3-Q4)和(Q1-Q2)的作用,消除了諸如環境光等常量偏移的影響,同時兩者的商也減小了由于電路放大和衰減或反射的強度等原因引起的增益影響[9]。
綜上所述,結合式(1)至式(3),通過計算相位差,就能夠計算出物體上的某一點距離紅外攝像頭的距離。
2.2 Kinect深度圖像和彩色圖像采集
2.2.1 深度圖像采集
由Kinect 2.0傳感器軟件架構可知,利用NUI Library獲得深度數據幀的流程如圖5所示。
首先,要獲取深度數據源,需要先打開一個Kinect 2.0傳感器硬件實體,根據NUI Library,該硬件實體類型為IKinectSensor,定義變量mykinectsensor,并利用GetDefaultKinectSensor(&mykinectsensor)函數對其進行賦值,再調用mykinectsensor→open()即可獲取一個Kinect 2.0傳感器實體。隨后需要操作深度數據源,深度數據源類型為IDepthFrameSource,因此定義變量depthsource,通過調用get_DepthFrameSource(&depthsource)成員函數對其賦值,即可獲得深度數據源。另外,需要獲取深度圖像的分辨率,利用IFrameDescription類型和get_FrameDescription()函數獲取深度圖像分辨率。設置好深度數據源depthsource和獲取分辨率后,需要定義一個類型為IDepthFrameReader的變量來調用Reader,并利用Source的成員函數depthsource→OpenReader(&depthreader)來打開Reader。成功打開Reader后,就可以調用depthre ader→AcquireLatestFrame(&depthframe)成員函數來采集最新一幀深度數據。若調用AcquireLatestFrame()返回的值為“S_OK”,說明成功獲取到最新一幀深度數據,將其保存在depthframe變量中,depthframe的類型為IDepthFrame。隨后,對獲得深度數據幀進行相關處理。當該數據幀處理完畢后,調用depthrame→Release()對該深度數據幀進行釋放。根據需要,再次調用AcquireLatestFrame(&depthframe)函數獲取新的一幀深度數據進行處理。根據以上流程獲取的深度圖如圖6(a)所示。
2.2.2 彩色圖像采集
根據NUI Library和數據流的獲取流程,讀取彩色圖像流程和讀取深度圖像流程是一樣的,區別在于數據輸出的處理上。Kinect 2.0使用的圖像格式是YUY2,通常需要使用轉換函數CopyConvertedFrameDataToArray()將彩色幀轉化成RGB格式。獲取的彩色圖像如圖6(b)所示。
除了使用NUI Library,本文結合使用OpenNI(開放式自然交互)庫函數,將Kinect傳感器的數據流操作包含在OpenNI的驅動中。這樣做的好處是編程時可以省去直接對Kinect傳感器的硬件操作,所有數據流獲取只通過一個API進行。endprint
2.3 深度圖像預處理
深度成像利用近紅外光的發射和反射時間差來成像。所以,當Kinect視場內存在吸光物體時,接收紅外脈沖的深度攝像頭無法獲取該物體區域的近紅外光,成像時該區域就會產生空洞?;蛘邷y量范圍超過Kinect的視場時,導致Kinect的深度攝像頭在接收紅外光時,容易出現物體邊緣的深度值為0,從而造成場景深度圖像邊緣和行人運動目標邊緣產生一些毛刺。
深度圖像中的空洞區域和邊緣毛刺都會對行人目標頭部區域特征提取產生很大干擾。在進行特征提取之前,消除空洞區域和毛刺的深度圖像預處理是必不可少的工作。
3 結語
本文對Kinect 2.0傳感器進行了介紹,對基于光飛行時間(ToF)的深度圖像成像原理進行了分析,根據Kinect NUI Library分析Kinect 2.0傳感器的彩色圖像和深度圖像獲取流程。根據深度成像特點,對原始深度數據幀進行中值濾波、閉運算和開運算等預處理分析,為行人運動目標的特征識別打下堅實基礎。
參考文獻:
[1]CHEN T H.An automatic bi-directional passing-people counting method based on color image processing[C].IEEE,2003 International Carnahan Conference on Security Technology,2003:200-207.
[2]吳國斌.KINECT人機交互開發實踐[M].北京:人民郵電出版社,2013.
[3]黃露丹,嚴利民.基于Kinect深度數據的人物檢測[J].計算機技術與發展,2013(4):119-121.
[4]SARBOLANDI H,LEFLOCH D,KOLB A.Kinect range sensing:structured-light versus time-of-flight kinect[J].Computer Vision & Image Understanding,2015.
[5]L LI.Time-of-flight camera-an introduction[Z].Texas Instruments-Technical White Paper.
[6]CORTI A,GIANCOLA S,MAINETTI G,et al.A metrological characterization of the Kinect V2 time-of-flight camera[J].Robotics & Autonomous Systems,2015,75(8):584-594.
[7]楊召君.基于視頻人數統計與跟蹤改進算法的研究與實現[D].南京: 南京郵電大學,2013.
[8]郭秀杰.基于Kinect的人流量統計系統研究[D].重慶: 重慶大學,2014.
[9]吳曉陽.基于OpenCV的運動目標檢測與跟蹤[D].杭州: 浙江大學,2008.endprint