李軼博
摘要:目的:采用非接觸的方法檢測墻地面或墻角的垂直度;方法:利用Kinect獲取檢測墻面或墻角的深度圖像信息,通過兩平面法向量點(diǎn)乘數(shù)值的大小確定平面間夾角的數(shù)學(xué)方法,來判斷墻地面或墻角的垂直度;結(jié)果:通過Kinect1.0獲取某墻角的點(diǎn)云數(shù)據(jù),在VS2013平臺下實(shí)現(xiàn)該文算法,通過與實(shí)測數(shù)據(jù)進(jìn)行對比,三個面的三個角度的檢測誤差指標(biāo)分別為1.45、1.37、0.1,檢測耗時4.7S;結(jié)論:實(shí)驗(yàn)驗(yàn)證了該方法測得的精度較高,并且實(shí)現(xiàn)起來方便,速度快,方法有效可行。
關(guān)鍵詞:Kinect;墻面垂直度;檢測;平面法向量;點(diǎn)乘
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2018)26-0179-02
1 概述
在許多地方,需要檢測兩個相交面的垂直度,如在房屋的裝修中墻角的垂直度就是一個重要指標(biāo)。目前常規(guī)的墻面垂直度檢測方法有鉛垂法和量尺法等,但它們都有一些缺陷,如鉛垂法,在裝修過程中室內(nèi)可能沒有可以懸掛鉛垂線的地方,再如使用量尺法時,工作中需要人工將尺貼靠在墻面上,工作起來比較麻煩。另外量尺法屬于接觸式測量方法,會污染墻面。
Kinect是近幾年才出現(xiàn)的一種新型視覺傳感設(shè)備,與普通攝像機(jī)不同之處在于,它除了普通攝像頭外,還有集成了一個雙攝像頭,能夠獲取深度信息,即3D信息。如果把Kinect引入到建筑墻面的垂直度檢測中來,可以發(fā)揮其雙目立體特長以及計算機(jī)的強(qiáng)大計算能力,會使墻面檢測的質(zhì)量有大幅度提高,另外無需多人配合,能夠提高檢測人員的工作效率,節(jié)約人力,因而本研究有較大的實(shí)用價值。
2 深度圖像獲取與處理
2.1 圖像獲取
圖像獲取采用Kinect裝置,其有3個鏡頭,中間鏡頭是一個普通的RGB彩色攝像機(jī),通過它可以獲取被測對象的普通彩色圖像;左邊攝像頭是一個紅外線發(fā)射器,右邊攝像頭是一個紅外感應(yīng)器,左右這兩個攝像頭構(gòu)成了3D深度感應(yīng)器。該文中帶深度信息的圖像就是通過這兩個攝像頭獲取的,存成深度點(diǎn)云文件。
2.2 圖像數(shù)據(jù)處理
這里以三個面構(gòu)成的墻角為例進(jìn)行分析和介紹,主要要進(jìn)行分割處理。通過Kinect獲取的墻角原始點(diǎn)云圖像的三個面是互相連接的,要想利用后面的算法進(jìn)行三個面相互夾角的計算,首先需要對上述圖像進(jìn)行分割,然后才能分別擬合出各自的平面方程,點(diǎn)云圖像的分割可以直接采用PCL點(diǎn)云庫的分割功能。這里的點(diǎn)云分割采用的是區(qū)域生長分割法,該方法基本思想是:(1)設(shè)置一空的像素點(diǎn)序列和空的聚類區(qū)域,選好初始像素后,將其加入到像素點(diǎn)序列中,并搜索鄰域點(diǎn)。(2)依據(jù)點(diǎn)的曲率值對點(diǎn)進(jìn)行排序。區(qū)域生長算法是從曲率最小的點(diǎn)開始生長的,這個點(diǎn)就是初始像素點(diǎn),初始像素點(diǎn)所在的區(qū)域即為最平滑的區(qū)域,從最平滑的區(qū)域開始生長可減少分割片段的總數(shù),提高效率。(3)對每一個鄰域點(diǎn),比較鄰域點(diǎn)的法線與初始像素點(diǎn)的法線之間的夾角,小于平滑閾值的將其加入到當(dāng)前區(qū)域,刪除當(dāng)前初始像素點(diǎn)。(4)循環(huán)執(zhí)行以上步驟,直到初始像素序列為空。至此,墻面點(diǎn)云圖像就會被分割成三個點(diǎn)云面。
3 垂直度檢測算法
3.1 垂直度檢測算法
直度檢測實(shí)質(zhì)上就是求兩個面的夾角。數(shù)學(xué)上求解兩個面的夾角,可以通過兩個平面的法向量的點(diǎn)乘數(shù)值的反三角函數(shù)獲得。
平面的一般表達(dá)式為:
3.2 點(diǎn)云面的擬合
在第2.1部分已經(jīng)把墻角深度圖像的點(diǎn)云分隔成了三個點(diǎn)云面,如果能夠把這三個點(diǎn)云面擬合出具體的平面方程,再估算出每個面的法向量,就可以利用上面的算法求出面與面之間的夾角,從而進(jìn)行垂直度判斷了。
在進(jìn)行平面擬合之前,可以先采用主成分分析方法對點(diǎn)云數(shù)據(jù)進(jìn)行降維處理,去除一些冗余數(shù)據(jù),簡化問題。之后采用最小二乘法進(jìn)行點(diǎn)云面的擬合。最小二乘法平面方程擬合計算的實(shí)現(xiàn)目標(biāo)就是使所有點(diǎn)到該平面的距離和最小,通過求解方程組,求出平面方程系數(shù),即完成云平面的擬合。
4 實(shí)驗(yàn)與分析
(1) 本實(shí)驗(yàn)使用微軟的Kinect1.0采集墻面的深度點(diǎn)云圖像,這里取的是三面墻構(gòu)成的墻角深度圖像,如圖1所示。
(2) 在Visual Studio2013平臺下,通過PCL點(diǎn)云庫里的區(qū)域生長分割法來分割三個墻面,得到的結(jié)果如圖2所示。
(3) 通過最小二乘法分別擬合各個面的平面方程,求出法向量,計算法向量點(diǎn)乘結(jié)果,再通過余弦定理求出兩條法線之間夾角。
(4) 實(shí)際測量墻角三個面的角度與本實(shí)驗(yàn)監(jiān)測結(jié)果進(jìn)行對比,對比結(jié)果如表1所示。
通過表中的數(shù)據(jù)可以看出,本實(shí)驗(yàn)方法具有較高的精度,并且方法比較簡單,方便操作,因而可行性高。實(shí)驗(yàn)中存在的誤差主要有幾個方面的原因:(1)光照影響。(2)Kinect精度。(3)實(shí)際測量誤差。若用更高精度的Kinect,并減少光照的影響,實(shí)驗(yàn)精度會得到進(jìn)一步提高。
5 結(jié)束語
本文在介紹Kinect的基礎(chǔ)上,提出了一種墻面垂直度檢測的方法,通過求取檢測平面的法向量的夾角,來判斷墻面垂直度是否達(dá)到預(yù)定的指標(biāo)要求。本文算法是基于Kinect1.0,在Visual Studio2013編程環(huán)境下,采用C++結(jié)合PCL點(diǎn)云庫實(shí)現(xiàn)的,通過實(shí)驗(yàn)驗(yàn)證,說明本方法具有較高的檢測精度,能夠較準(zhǔn)確判斷墻體的垂直程度。
參考文獻(xiàn):
[1] 劉路平. Kinect尺寸測量方法研究[D].哈爾濱工業(yè)大學(xué),2017.
[2] 劉鑫,許華榮,胡占義.基于GPU和Kinect 的快速物體重建[J].自動化學(xué)報,2012,38(8):1288-1297.
[3] 程彥榮.基于Kinect的三維區(qū)域測量技術(shù)研究[D].東華大學(xué),2016
[4] 浮單單,周紹光.基于主成分分析的點(diǎn)云平面擬合技術(shù)研究[J].繪圖工程,2014,2(4):20-23.
[通聯(lián)編輯:光文玲]