李玲玲1,王正勇1,卿粼波1,何海波2
(1.四川大學 電子信息學院,四川 成都610065;2.成都西圖科技有限公司, 四川 成都610000)
摘要:為了滿足現實生活中對物體體積實時測量的需求,提出了一套基于Kinect 2.0深度圖像處理的快速體積測量方案。首先,使用Kinect 2.0 深度傳感器獲得深度圖像及對應的點云數據矩陣,并對深度圖像進行增強、二值化、目標提取等預處理,定位出目標物體。然后,通過像素點的統計和點云數據的處理得到目標物體的面積、高度。最后由面積和高度完成目標物體的體積計算。經驗證這種方法的體積測量誤差控制在3%以內,完全滿足實時性的誤差要求,又由于深度圖像較彩色圖像不易受光線、背景的干擾,使得該方法具有很強的魯棒性。
關鍵詞:Kinect 2.0深度圖像;點云數據矩陣;目標提取;體積計算
中圖分類號:TP274文獻標識碼:ADOI: 10.19358/j.issn.1674-7720.2017.07.011
引用格式:李玲玲,王正勇,卿粼波,等.基于Kinect 2.0深度圖像的快速體積測量[J].微型機與應用,2017,36(7):35-38,42.
0引言
體積測量在現實生活中應用廣泛,例如在航空運輸行業中,貨物入艙前需對運輸貨物體積有快速明確的估計,以滿足飛機腹艙空間的充分利用,提高運輸效率。目前機場主要是通過目測確定需運入飛機腹艙的貨物體積,其精確度不夠高,因此研發一套自動化體積測量系統尤為必要。現體積測量系統主要是基于激光傳感器[13],但實際操作中為了獲得被測物體某個面上的三維坐標信息,激光傳感器需要電機等配套設備的驅動才能獲取由線陣數據組成的整個物體表面的信息[1],又由于對激光傳感器的掃描分辨率和靈敏度的要求,使得整個系統操作復雜,速度慢且成本高[1]。不同于傳統的激光傳感器得到的線陣數據,Kinect 2.0深度傳感器得到的不僅是面陣數據,而且可獲取物體深度信息,為此,本文主要研究基于Kinect 2.0深度圖像預處理方法實現入艙前貨物體積的快速實時測量。該方案優點主要體現在實現速度快,系統組成和操作簡單,只需一臺Kinect和一臺電腦,成本低,更具有經濟使用價值。
1實現方案
圖1體積測量方案流程圖1為體積測量方案流程。本文首先用Kinect 2.0采集深度圖像及其對應的點云數據矩陣,然后采用漫水填充的方法增強圖像初步去噪突出目標物體,并經過圖像二值化、Canny邊緣檢測提取物體輪廓,圖像填充提取目標物體。最后,根據Kinect 2.0視場與像素個數的比值關系得到面積,由目標物體在整個圖像中的具體位置將其配準到點云數據矩陣中計算物體高度,進而求出物體體積。
2深度圖像和點云數據矩陣獲取
2.1深度圖像獲取
深度圖像又叫做距離圖像,類似于彩色圖像矩陣中的顏色值、灰度圖像矩陣中的灰度值,深度圖像信息即深度值存儲在深度圖像矩陣中。深度圖像較灰度圖像的優勢是,深度值只與距離相關,與光照強度和方向無關[4]。
本方案采用Kinect 2.0攝像頭獲取深度圖像。Kinect 2.0是微軟公司于2014年7月推出的高性價比攝像頭。相比于傳統的激光傳感器,Kinect 2.0是一款功能強大、性價比高、方便使用的三維數據采集設備,圖2Kinect深度圖像其分辨率為512×424;水平視場可增大至70°,垂直視場增大至60°;其深度圖像拍攝范圍為0.8~4.0 m,圖2為獲取的一張深度圖像。
2.2點云數據矩陣獲取
點云是指以各種方式獲得的點數據,是測量目標表面上各點信息的集合。坐標數據是點云數據必須包括的信息,另外法向量、顏色值或其他數據信息也可能被包括在點云數據中[5]。本方案中Kinect 2.0獲取的點云數據是與其深度圖像的每個像素點對應的距離信息矩陣,其大小為512行、424列,其值表示的是Kinect 2.0深度攝像頭到被拍攝物體表面的垂直距離,單位為mm。經實驗驗證Kinect 2.0在其所能達到的距離范圍0.8~4 m內的距離誤差均在2 cm以內,Kinect 2.0測得距離與實際距離的比較如表1所示,由此獲得的Kinect 2.0測試距離和實際距離的精度曲線如圖3所示。
3深度圖像預處理
由于Kinect采集的深度圖像并不完美,含有與距離平方成正比的噪聲及無效像素構成的空洞[6]。本文中的深度圖像還有周圍物體的干擾,因此對采集到的原始深度圖像進行預處理對后續進一步研究尤為重要。本方案經過對深度圖像的漫水填充[7]處理、基于Otsu[8]算法的圖像二值化、Canny算子[9]邊緣檢測、圖像填充等預處理方法檢測定位提取出目標物體。
3.1基于漫水填充的圖像增強
圖像增強可弱化或消除一些不必要信息,經過增強處理的圖像比原始圖像更適合特定場景的需求[10]。本文首先對帶目標物體的深度圖像通過漫水填充,強化突出目標區域。實驗證明該方法效果比較理想,基本上消除了周圍噪聲并突出了目標物體,為后續圖像處理做準備。漫水填充法是一種常用的區域填充法,它的實質是種子填充法,經常被用來標記或分離圖像的感興趣區域。
圖4漫水填充處理后的圖像漫水填充法的具體操作即在具有同一顏色或亮度值的像素區域內選取種子點,通過判斷種子與種子點的鄰域像素顏色或亮度值的差別是否滿足預先設定的閾值,來決定是否對鄰域的像素用新的顏色或亮度值代替,直到遍歷完區域內所有像素或達到輪廓線的邊界[11]。由此可知,初始種子點、替代顏色和目標顏色判定閾值是漫水填充的3個重要參數。本文并沒有填充目標區域,而是通過填充目標區域以外的區域為白色即像素值為(255,255,255)來突出黑色的目標區域,這樣就簡化了參數的選擇。漫水填充可通過opencv中的cvFlood Fill函數來實現,選取種子點為(20,20),將下標記和上標記都選取為30,對種子的8鄰域逐點進行判斷,經實驗驗證這種參數的選取值可取得很好的效果,如圖4所示。
3.2基于Otsu的圖像二值化
圖像增強雖然突出了目標物體但周圍仍有噪聲,故需對圖像進行進一步的處理。接下來對漫水填充后的圖像進行二值化操作以適應下一步圖像處理的要求。針對目標物體與背景有較大差別的圖像,為了得到理想的二值化效果,閾值分割是備受青睞的方法。因此,區分目標物體和背景的閾值對二值化效果是否理想起到關鍵的作用。設原始灰度圖像為f(x,y),經二值化處理的圖像為g(x,y),可用式(1)描述二值化過程。
g(x,y)=1,f(x,y)t
x,f(x,y)<t(1)
全局閾值法和局部閾值法是二值化的主流方法,本文采用基于Otsu算法的全局閾值法,該方法針對直方圖呈明顯雙峰分布的圖像實現效果優越,適合本文中的圖像。Otsu算法可自動獲取圖像二值化所需要的閾值。其具體實現是以一個初始閾值t分割圖像,這樣就把原圖像分割成C1和C2兩部分,C1和C2分別為像素灰度值大于等于t和小于t的集合,之后分別求得這兩部分的類間方差σ2B和類內方差σ2A,最終找出分割圖像的最佳閾值t,也就是滿足兩個方差比σ2B/σ2A最大的閾值。分別將C1類和C2類的像素點總數設為W1和W2,其像素點灰度均值為M1和M2,方差分別為σ21和σ22。則有:
σ2B=W1W2(M1-M2)2(2)
σ2A=W1σ21+W2σ22(3)
將灰度值大于等于t的像素灰度值規定為255,小于t的像素灰度值規定為0。通過圖像二值化將24 bit的深度圖像轉化為8 bit深度圖像,以便后續對目標圖像的提取。
3.3基于Canny算子邊緣檢測的目標提取
目標提取即把感興趣的部分從單幅圖像或序列圖像中提取出來。為了從背景中提取出目標物體,采用Canny算子對二值化圖像進行邊緣檢測。相比于其他邊緣檢測算子,依據圖像邊緣檢測最優準則設計的Canny邊緣檢測算法具有良好的邊緣檢測性能,且具備信噪比大和檢測精度高的優點,因此文中使用Canny算子進行邊緣檢測,效果如圖5所示。
然后對提出的邊緣進行內輪廓填充,將輪廓內的像素值填充為1,效果如圖6所示,圖中黑色的區域為背景,白色區域即提取出的目標物體。
4體積測量
利用統計匹配像素點及視場比值不變性的方法計算物體的體積, Kinect 2.0的視場圖如圖7所示。其中h是Kinect 2.0到物體表面的距離,N是圖像中目標物體區域內像素個數測量值,S是物體實際面積大?。籑是Kinect 2.0整個視場范圍內像素的個數,S1是Kinect 2.0整個視場的面積;α和β分別是Kinect 2.0的水平視場和垂直視場。
4.1面積計算
由于Kinect 2.0采集的深度圖像中保存的是深度信息,要進行體積測量還需得到面積相關的信息。當Kinect 2.0與所測物體的距離固定時,可以根據Kinect 2.0在該距離的視場范圍和該視場范圍內像素個數的比例關系來求取面積。即圖像中目標物體區域內像素個數測量值N與實際物體的面積大小S的比值和在該距離下Kinect 2.0整個視場范圍內像素的個數M與整個視場面積S1的比值是相等的,如式(4)所示:
其中N是根據圖像統計出的目標物體所在區域的像素個數,即二值圖像中像素值等于1的像素個數,S1可根據圖7中Kinect 2.0的視場范圍由幾何關系求出,如式(5)所示:
又由于視場S1中總的像素個數M=512×424,利用這個原理,對于搭建好的圖像采集系統,由式(4),在S1、M、N已知的情況下即可以求出目標物體區域的面積S:
4.2高度計算
統計目標物體區域即圖6中的白色區域在整幅圖像中的具體位置,即白色區域的起始行m1和終止行m2以及起始列n1和終止列n2,然后求出白色區域的中間行m和中間列n,并將其配準對應到點云矩陣A1和A,即在A1和A中提取出白色區域對應的距離信息。由于得到的Kinect 2.0攝像頭到背景表面和到目標物體表面的兩個點云矩陣A1和A邊緣有噪聲,因此選取A1和A中20×20的中間區域的小矩陣,即行m-10至m+9和列n-10至n+9的區域分別求平均值得到h1和h。通過背景距離減去前景距離計算被測物的高度信息h2,計算公式為:
h2=h1-h(7)
4.3體積計算及實驗測試
由體積計算公式V=Sh2,即可計算出被測物的體積。
分別對不同的物體和0.8~4 m不同的距離(Kinect 2.0到被測物的距離)進行了實驗,盡管被測對象的體積很小,但誤差均有良好的可控性,結果顯示控制在3%以內,這充分說明了該方案的潛力和可行性。具體測量結果及誤差分析如表2所示。
5結論
本文基于VS2013環境和Kinect SDK 2.0提出一套體積測量方案,實驗證明本文提出的測量方案測量結果準確可靠,3%以內的體積測量誤差可滿足實時的需求。
(1)本文應用Kinect 2.0深度圖像的處理來求體積,充分利用了深度圖像較彩色圖像不易受光照強度和方向影響的優勢,增強了本文提出算法的魯棒性。
(2)本文設計的體積測量方案成本低,經濟實惠,不需要配套的硬件驅動,所需設備僅為一臺電腦和一臺Kinect 2.0,性價比高,操作簡單便捷,并且可實現快速準確實時的體積測量,經濟價值可觀。
?。?)本文將Kinect 2.0的應用由尺寸測量進一步深入到體積測量領域,增強了Kinect 2.0的實用性,拓展了Kinect 2.0的應用領域,對計算視覺技術在體積測量領域的應用具有積極意義。
參考文獻
?。?] 路達, 滕奇志, 卿粼波,等. 基于激光測距的中小型貨物三維體積掃描[J]. 微型機與應用, 2015,34(23):83-86.
?。?] 周峰. 基于三維激光掃描技術的倉儲散糧堆體積測量系統研究[D].長春:吉林大學,2015.
?。?] 雷文. 基于激光掃描的物料堆三維測量系統研究[D].長沙:湖南大學,2014.
?。?] Yue Haosong, Chen Weihai, Wu Xingming, et al. Fast 3D modeling in complex environments using a single Kinect sensor[J]. Optics and Lasers in Engineering, 2014, 53(2): 104-111.
?。?] 韋羽棉. 基于 Kinect 深度圖像的三維重建研究[D].重慶:重慶大學, 2014.
[6] 陳理. Kinect 深度圖像增強算法研究[D]. 長沙:湖南大學, 2013.
[7] BRADSKI G, KAEBLER A.Learning OpenCV[M].California:0’Reilly Media,Inc,2008.
?。?] OTSU N. A threshold selection method from graylevel histogram [J]. IEEE Transactions on Systems, Man, and Cybernetics, 1979, 9(1): 62-66.
?。?] CANNY J. A computational approach to edge detection[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 1986, 8(6):679-698.
[10] Li Bai, Li Ya, Cao Hongxin, Fet al. Image enhancement via lateral inhibition: an analysis under illumination changes[J]. OptikInternational Journal for Light and Electron Optics, 2016, 127(12): 5078-5083.