孫憲龍,韓李濤,2,周麗娟,郭 佳
(1.山東科技大學 測繪科學與工程學院,山東 青島 266590;2.山東省基礎地理信息與數字化技術重點實驗室,山東 青島 266590)
在室內導航服務過程中,房間、廊道、樓梯、門窗等建筑構件是用來導航的重要元素,這些要素的提取為室內定位、路徑分析、實時導航等各種室內導航功能的實現提供了數據和模型支持[1]。目前,室內導航要素提取的數據來源主要有CAD建筑設計平面圖[2]、CityGML[3]、BIM數據[4]、激光點云數據[5]等。相對于其他數據類型,點云數據能夠直接提供被掃描目標的高精度三維坐標信息,而且對室內結構發生變化的室內環境可重新進行數據采集,保證數據信息的現勢性。然而,點云數據存在數據量大、冗余信息多、點云間無連接性、無結構化屬性、不承載語義信息等問題[6]。因此,從海量點云中提取出建筑物室內可導航元素(房間、門、窗等)是當前室內三維建模領域的研究熱點之一。
室內可導航元素提取的第一步是樓層劃分[7]。最常用的方法是點云密度峰值分割方法,其主要依據樓層存在的地方會有大量Z值相同的點,利用這一性質提取樓板分割空間[8-9]。在同一樓層中,需要提取房間、門、窗等可導航元素,其中房間的提取最為關鍵,而墻線提取是房間提取的關鍵環節。目前,房間的提取大致可分為直接提取方法和間接提取方法。直接提取方法通過聚類的方式,將同一測站的點粗略合并歸結為一個房間,合并之后執行迭代重新標記過程來更新指向房間的點[10]。間接提取方法將單個房間視為由墻體圍成的獨立可導航區域,通過對墻體的提取,將單樓層中大片的可導航區域劃分為一個個獨立的房間。Oesau[11]通過直方圖對空間進行劃分,利用垂直點分布定位水平結構,并通過Hough變換檢測垂直墻體結構,最終通過圖割公式提取曲面。Ochmann[12]利用墻段的分段性檢測垂直平面作為墻面的候選面,然后將它們投影到水平面上,投影后的直線即為墻線,該方法可以獲得墻壁厚度和房間面積,并且可以用于門窗識別。Fichtner[9]首先利用八叉樹結構劃分子空間,通過點云密度峰值圖檢測出樓層,然后在單一樓層中利用墻面處點云密度會在垂直方向形成峰值提取墻體。劉明蕾等[13]將墻視為由兩個墻面及中間不被掃描的墻體組成,利用區域生長算法獲取墻面角點,從而獲得房間內部的更精細邊緣,但該方法不適用于弧形墻面或墻角不為直角的墻面。
基于現有研究,本文結合建筑物點云幾何特征,通過數據降維簡化建筑幾何特征提取復雜性,提出一種基于室內點云數據提取建筑物墻線的方法。即先利用特定方向投影點云數據直方圖進行點云分割,然后對分割出來的墻體點云利用Hough變換進行直線檢測,并將檢查出來的直線與墻體點云二值圖進行疊加,完成墻線的準確提取。提取的墻線為后續房間的識別提供了基礎。
對于建筑物室內點云數據,Okorn等[8]認為天花板、地板等水平結構在掃描時會產生大量高度相同的樣本。基于這種思想,將點云向Z軸投影生成點云密度直方圖,天花板、地板等水平結構就會顯示為點云密度直方圖的峰值,由此分離出天花板和地板數據。如圖1所示,縱坐標表示點的數量,橫坐標表示點的高度(Z坐標分量),將點云數據按照0.1 m間隔生成點云統計直方圖。提取直方圖峰值所在點的索引,就可以得到構成天花板面、地板面的點云。

圖1 天花板和地板點云分割
在單層樓中,去除天花板和地板數據,就可以得到墻體和門窗的點云數據,如圖2所示。從圖中可以看出,仍有少許地板面和天花板面數據存在,但由于其數量較少,向地面豎直投影后對整體房間的影響可忽略不計。

圖2 墻體和門窗點云
Hough變換可用于提取圖像中特定形狀的特征,運用兩個坐標空間之間的變換,將圖像空間中具有相同形狀的直線或曲線,映射到另一個參數坐標空間的一個點上形成峰值,從而把檢測任意形狀的問題化為統計峰值的問題[11]。然而,Hough變換提取出的僅僅是圖像中的直線特征,且噪聲較多,沒有包含語義信息。因此,當利用墻體點云數據來提取墻線時,本文提出首先利用Hough變換進行直線檢測,然后對提取的直線特征進行交點計算和墻體語義識別,從而準確提取墻線。
首先將墻體點云數據向地面投影分塊,生成點云分布矩陣;然后將點云分布矩陣轉化為灰度圖,并進行二值化處理;最后,基于二值圖利用Hough變換進行直線檢測。流程圖如圖3所示。

圖3 Hough變換提取直線流程
算法實現的詳細步驟如下:
1)讀入墻體點云數據,存儲為N行兩列的矩陣A,一二列存儲點云X,Y坐標,N表示點云數量;
2)利用矩陣A中存儲的個點的X,Y坐標,計算X和Y方向的最大值和最小值,并確定分塊個數;
3)統計各分塊區域的點云數量,根據各分塊區域的點云數量,生成點云分布矩陣,獲得點云分布圖;
4)將點云分布矩陣轉化為灰度圖像,為獲取更加簡潔的點云分布描述,設定閾值對灰度圖像進行二值化處理,對于高于閾值的區域存儲其值為1,其余存儲為0,生成點云分布二值圖;
5)對二值圖利用霍夫變換算法檢測直線。其中,霍夫變換峰值點閾值的選擇尤為重要,只有大于該閾值的點才認為可表示直線或曲線,霍夫矩陣H是以峰值點為元素組成的矩陣,峰值點閾值默認取該矩陣內最大元素的1/2,即0.5Hmax。
墻線識別的原理:將2.1中提取的直線特征(直線方程)進行求交,從而獲得交點分割的直線段作為備選墻線,這些備選墻線有些與墻線重合,有些介于兩墻之間的房間內部,因此本文提出將備選墻線與墻線二值圖進行疊加,剔除非墻線線段,從而識別出真正的建筑墻線,如圖4所示,圖中綠色直線段為被剔除備選墻線。

圖4 墻線識別原理
算法實現的詳細步驟如下:
1)計算2.1中檢測出的各直線方程,并求取直線交點。
2)依次連接位于同一直線上的各交點組成直線段,作為備選墻線。
3)將獲取的備選墻線與墻線點云二值圖疊加,若備選墻線兩端點間無點云存在,則該備選墻線上的各像素點坐標在二值圖中的值應為0。因此,將各備選墻線逐級二等分,本文中分為三級,取各分段處像素點坐標,判斷該坐標在二值圖中的值。若皆為0,則剔除該備選墻線,反之保留為最終墻線。
本文選用國際攝影測量和遙感協會提供的公共基準數據集TUB2(Technische University Braunschweig, Germany)[14]進行實驗驗證。原始點云如圖5所示,共包含21 991 918個點,其中地板、天花板等水平面與XOY平面平行,墻面與XOZ,YOZ平面平行。建筑的一層有14個房間、23扇門和8個窗戶,二層有10個房間、28扇門和13個窗戶。
由于點云數據量較大,實驗利用CloudCompare軟件對點云數據進行分塊和抽稀處理,并選取較為復雜的2部分區域對本文方法進行驗證。實驗區域如圖6所示,各部分點云可視化如圖7所示。

圖5 原始點云
在單層樓中,根據2.1中的方法,將利用第1節方法分割出的墻體點云數據向地面進行投影,利用Hough變換提取直線。實驗選擇3種形狀不同的房間,這3個房間邊緣細節各不相同,代表性較強。如圖8所示,房間1形狀較為規整,且點云信息完整,二值圖與原始房間差異較小,峰值點閾值選取默認值,提取的直線與房間墻線吻合。

圖6 點云分塊示意圖

(a)房間激光點云(b)二值圖(c)直線檢測結果
如圖9所示,房間2內部被分割為3部分,每部分間由門連通,在數據采集過程中,打開的門會遮擋墻體,造成墻體信息采集錯誤(二值圖中的紅色標記部分)。對此,不同峰值點閾值的選擇對實驗結果影響較大,如表1所示。從表中可知,當墻體數據較為復雜時,閾值過大會造成墻體直線檢測不足,閾值過小會造成過度檢測,二者均會導致最終的提取結果不理想,在本次實驗中峰值閾值取0.2Hmax。

圖9 房間2數據

表1 不同閾值對線段檢測的影響 m
如圖10所示,房間3墻體點云有大范圍孔洞,且內部存在障礙物,房間的門處于打開狀態(二值圖中的紅色標記部分)。如房間2中對峰值點閾值進行討論,具體情況如表2所示。從表中可以看出,當墻體點云有大范圍孔洞時,應選取較小的閾值,盡可能的獲取缺失點云處的墻體細節,在本次實驗中峰值點閾值取0.1Hmax。

圖10 房間3數據

表2 不同閾值對線段檢測的影響
對上述檢測到的直線根據2.2中方法即可得到各房間墻線提取結果,如表3所示。最終得到的是圍成各房間的直線段。結果表明即使墻面點云存在缺失,本文方法仍能較為準確的完成房間墻線提取。

表3 房間墻線提取結果
基于上述分析,對所選區域進行實驗,此處繪制出結構較為復雜的第二部分第一層房間墻線提取結果,如圖11所示。從表中可以看出,最終的提取結果能夠較為完整的實現對原始點云墻線的表達。

(a)原始點云(b)二值圖(c)墻線提取結果
ISPRS為確保建模結果測試和對比公平,沒有公布參考模型實際尺寸[15]。因此,本文利用CloudCompare手動對圖11中1~6號房間面積進行人工量算,將本文算法自動提取房間面積與量算結果進行對比。表4為算法提取墻線圍成的房間面積與人工量算房間面積的對比,從中可以看出本文方法能夠較準確、有效地提取建筑物墻線,且精度較高。

表4 墻線提取結果精度評定 m2
本文針對室內點云數據,首先通過直方圖統計法分離出天花板、地板以及房間墻面數據,然后利用Hough變換從墻線二值圖中提取直線,最后將獲取到的備選墻線與墻線二值圖疊加獲得最終建筑墻線。實驗結果表明:即使墻面點云存在部分缺失,當選取合適的變換閾值時,Hough變換仍然能夠有效地提取出直線,進而完成建筑墻線的準確提取。本文提取的建筑墻線信息可用于室內三維建模、室內導航網絡生成以及室內導航模型的構建等工作,后續將進一步研究門、窗等室內導航元素的提取,從而為室內導航模型提供更完整的導航信息。