陳佳舟,陸鵬飛,徐陽(yáng)輝,王宇航,金靈楓,2,李凱勇,秦緒佳
1(浙江工業(yè)大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,杭州 310012) 2(東南數(shù)字經(jīng)濟(jì)發(fā)展研究院 數(shù)字空間技術(shù)研發(fā)中心,浙江 衢州 324000) 3(青海民族大學(xué) 物理與電子信息工程學(xué)院,青海 西寧 810007)
隨著無(wú)人機(jī)的普及,傾斜攝影測(cè)量技術(shù)在測(cè)繪領(lǐng)域得到廣泛應(yīng)用.該技術(shù)利用圖形學(xué)中的Structure of Motion(SfM)和Multi-View Stereo(MVS)方法[1-3],通過(guò)多組無(wú)人機(jī)航拍照片重建出高精度三維城市模型,極大地推動(dòng)著智慧城市的發(fā)展.典型的SfM和MVS方法首先自動(dòng)提取和匹配輸入圖像幾何每個(gè)像素點(diǎn)之間的特征,然后恢復(fù)出圖片的內(nèi)部和外部攝像機(jī)參數(shù),再由像素點(diǎn)對(duì)生成密集的3D點(diǎn)云模型,最后重建網(wǎng)格并貼上紋理.
雖然傾斜攝影測(cè)量技術(shù)能夠重建出大規(guī)模逼真的三維城市建筑,但這些模型在城市規(guī)劃、安防、GIS系統(tǒng)、虛擬現(xiàn)實(shí)和建筑設(shè)計(jì)等領(lǐng)域卻難以廣泛應(yīng)用.其中一個(gè)重要的原因是傾斜攝影測(cè)量技術(shù)自動(dòng)構(gòu)建的三維建筑網(wǎng)格模型頂點(diǎn)數(shù)量龐大、噪聲多,給數(shù)據(jù)存儲(chǔ)、傳輸以及語(yǔ)義表達(dá)等諸多方面帶來(lái)了難以逾越的障礙.
三維網(wǎng)格模型的規(guī)則化重構(gòu)(部分論文中譯為三維模型的簡(jiǎn)化,下文出現(xiàn)的模型簡(jiǎn)化即規(guī)則化重構(gòu)),是解決上述頂點(diǎn)數(shù)量爆炸和噪聲多問(wèn)題的重要途徑之一.SketchUp的Pointools插件(1)http://www.pointools.com/pointools-plug-in-for-sketchup.php,2019.允許用戶直接在3D點(diǎn)云上進(jìn)行簡(jiǎn)化,但簡(jiǎn)化的準(zhǔn)確性依賴于用戶的熟練程度.用戶需要通過(guò)目視檢查是否手動(dòng)將簡(jiǎn)化后幾何線條對(duì)準(zhǔn)了模型中相應(yīng)的點(diǎn)云.由于點(diǎn)云模型中存在固有的噪聲,用戶還需通過(guò)手動(dòng)移動(dòng)邊緣點(diǎn)來(lái)封閉簡(jiǎn)化過(guò)程中出現(xiàn)的間隙,效率較低.此類簡(jiǎn)化算法[4-7]通過(guò)提供用戶界面以手動(dòng)的方式簡(jiǎn)化模型,但簡(jiǎn)化的準(zhǔn)確性依賴于用戶的技術(shù)和耐心.大量半自動(dòng)[8-13]和全自動(dòng)[14-18]的簡(jiǎn)化系統(tǒng)在近年來(lái)取得了一定成效,但半自動(dòng)系統(tǒng)需要過(guò)多的人工干預(yù),而全自動(dòng)系統(tǒng)不是依賴先驗(yàn)信息(圖像和視頻等),就是對(duì)待簡(jiǎn)化模型有著嚴(yán)格的假設(shè),難以大范圍推廣.比如,Chen和Chen提出了一種通過(guò)在圖中搜索哈密頓回路來(lái)簡(jiǎn)化模型多邊形表面的方法[12].該方法的前提是假設(shè)存在完整的平面集及其相鄰信息.如果兩個(gè)平面對(duì)應(yīng)點(diǎn)集之間的最小距離在一定距離閾值內(nèi),則判斷它們是相鄰的.由于現(xiàn)實(shí)數(shù)據(jù)普遍存在數(shù)據(jù)錯(cuò)誤和缺失,所以需要更復(fù)雜的算法來(lái)解決此問(wèn)題.最近,Nan等人提出了一個(gè)PolyFit系統(tǒng)[16],首先通過(guò)改進(jìn)的RANSAC聚類方法進(jìn)行點(diǎn)云的聚類,然后用聚類出的結(jié)果將模型切割成小塊的平面,再規(guī)則化提取出的平面,最后將問(wèn)題轉(zhuǎn)化為二進(jìn)制標(biāo)記問(wèn)題選出適合的候選平面,從而擬合出簡(jiǎn)化結(jié)果.然而,該方法對(duì)點(diǎn)云模型的精度要求較高,對(duì)粗糙建筑模型的魯棒性較低.因此,三維建筑網(wǎng)格模型的規(guī)則化重構(gòu)是一個(gè)亟需解決但又充滿挑戰(zhàn)的課題,一直都是計(jì)算機(jī)圖形學(xué)領(lǐng)域的熱點(diǎn)問(wèn)題.
與地面激光或雷達(dá)不同,無(wú)人機(jī)拍攝是在低空自上而下完成的,無(wú)人機(jī)照片中屋頂?shù)目梢?jiàn)性較高,而建筑底部的可見(jiàn)性通常較低.因此,基于傾斜攝影測(cè)量重建的三維建筑模型往往屋頂比較精確;底部由于相互遮擋和其他建筑物干擾等原因,重建精度遠(yuǎn)遠(yuǎn)低于建筑頂部.基于上述觀察,本文提出了一種基于屋頂輪廓線的三維建筑模型規(guī)則化重構(gòu)方法.首先,分割屋頂并提取屋頂?shù)耐廨喞€,進(jìn)行化簡(jiǎn)并規(guī)則化;接著,通過(guò)改進(jìn)的平面擬合提取屋頂?shù)膬?nèi)輪廓線;然后,根據(jù)屋頂內(nèi)外輪廓線進(jìn)一步組合優(yōu)化擬合出屋頂平面幾何基元;最后,針對(duì)屋頂中的非平面部分(太陽(yáng)能、煙囪等),進(jìn)行補(bǔ)充規(guī)則化處理.
本文方法無(wú)需借助任何其他先驗(yàn)信息,能夠自動(dòng)地將粗糙的三維建筑模型重構(gòu)為少量三角面片組成的規(guī)則化三維模型,數(shù)據(jù)量平均極大減少(僅為原始模型的0.25%).大量的實(shí)驗(yàn)表明,本文方法具有效率高、穩(wěn)定性好等優(yōu)點(diǎn),有助于打通傾斜攝影測(cè)量到智慧城市應(yīng)用的最后一個(gè)數(shù)據(jù)障礙.
本文方法將傾斜攝影測(cè)量重建的三維建筑網(wǎng)格模型作為輸入,主要研究目標(biāo)是將三維模型自動(dòng)重構(gòu)為規(guī)則化的簡(jiǎn)化模型.如圖1所示,本文方法主要分為3個(gè)步驟:屋頂面外輪廓線提取與精化、屋頂面內(nèi)輪廓線提取、規(guī)則化模型的生成.其中,外輪廓提取與精化和內(nèi)輪廓線提取為規(guī)則化模型的生成提供了重要的基本元素,而重構(gòu)后的規(guī)則化三維模型則是整個(gè)算法的最終成果.
圖1 算法流程圖Fig.1 Overview of our method
針對(duì)單幢三維網(wǎng)格建筑物模型,本文首先進(jìn)行預(yù)處理,提取出屬于屋頂面的三角面片.具體而言,將面片高度大于h,且面片法向量與地面法向量夾角小于θ的三角面片視作屋頂面片.h在本文中可自由調(diào)整,一般取1/2建筑物高度的值;θ取20度.需要指出的是,這兩個(gè)參數(shù)對(duì)本文方法的結(jié)果影響很小,少量立面部件(如太陽(yáng)能)未被提取并不影響外輪廓線的生成,且在非平面基元提取部分進(jìn)行補(bǔ)充處理.本文所有實(shí)驗(yàn)均取上述兩個(gè)數(shù)值.圖1左圖為本論文需要規(guī)則化重構(gòu)的原始三維建筑模型,圖1所示的屋頂面外輪廓線提取與精化部分左圖中的白色部分為預(yù)處理所提取出的屋頂面片.
在提取完屋頂面片后,提取屋頂面外輪廓線.通過(guò)三角面片的鄰接關(guān)系提取屋頂面外輪廓線是一種普遍的三角面片輪廓線提取方法,但該方法容易將斷裂的內(nèi)輪廓誤判為外輪廓,使屋頂內(nèi)部有一部分點(diǎn)被錯(cuò)誤地提取為邊緣點(diǎn).本文采用Alpha Shapes[19]方法來(lái)解決這一問(wèn)題.該方法是一種有效的恢復(fù)離散點(diǎn)集原始形狀的輪廓線提取算法,提取過(guò)程等同于用一個(gè)半徑為α的圓在點(diǎn)集周圍滾動(dòng).只要參數(shù)α足夠大,圓只會(huì)在點(diǎn)集外部滾動(dòng),不會(huì)進(jìn)入點(diǎn)集內(nèi)部引起斷裂.在本文所有實(shí)驗(yàn)中,α取3米.
經(jīng)過(guò)Alpha Shapes方法提取出來(lái)的輪廓線段往往非常粗糙(圖2左圖),一般需要進(jìn)一步對(duì)其進(jìn)行簡(jiǎn)化處理.本文提出了一種基于最小平方法的輪廓線化簡(jiǎn)方法,詳細(xì)設(shè)計(jì)步驟如算法1所示.該方法需要兩個(gè)參數(shù),即點(diǎn)到直線的最大距離閾值d和最小直線長(zhǎng)度閾值l.在本論文中,d一般設(shè)置為0.5倍的平均點(diǎn)間距,l設(shè)置為3倍的平均點(diǎn)間距.
圖2 外輪廓線提取過(guò)程Fig.2 Extraction process of outer-contours
算法1.
輸入:按序排列的外輪廓二維點(diǎn)集US.
輸出:按序排列的經(jīng)過(guò)簡(jiǎn)化后的二維點(diǎn)集.
Step 1.按順序依次選取輪廓線上US的3個(gè)連續(xù)的頂點(diǎn)a、b、c,并且用最小平方法擬合出經(jīng)過(guò)這3個(gè)頂點(diǎn)的一條直線L,計(jì)算3個(gè)頂點(diǎn)到直線L的距離,如果任意一個(gè)頂點(diǎn)到直線L的距離大于閾值d,則下一步轉(zhuǎn)到Step 4;否則,令集合U={a,b,c},轉(zhuǎn)Step 2;
Step 2.取集合U兩端點(diǎn)作為p和q,分別以p和q作為起點(diǎn)向兩側(cè)進(jìn)行延伸,延伸過(guò)程中會(huì)遇到新的頂點(diǎn),如果新的頂點(diǎn)到直線L的距離小于閾值d,則將其加入到集合U中,并將其作為新的端點(diǎn),轉(zhuǎn)Step 3;
Step 3.在Step 2中,如果存在新的頂點(diǎn)被加入集合U中,則對(duì)集合U中的所有頂點(diǎn)用最小平方法重新擬合一條直線L,轉(zhuǎn)Step 2;否則,轉(zhuǎn)Step 4;
Step 4.判斷集合U擬合出的直線的長(zhǎng)度,若直線長(zhǎng)度大于閾值l,則將集合U兩端的頂點(diǎn)保留,舍棄中間的頂點(diǎn),轉(zhuǎn)Step 5;否則,舍棄所有的頂點(diǎn),轉(zhuǎn)Step 5;
Step 5.如果還有連續(xù)的3個(gè)頂點(diǎn)沒(méi)有判斷過(guò),則轉(zhuǎn)Step 1;否則,結(jié)束算法.
圖2中圖是最小平方法的輪廓線化簡(jiǎn)算法的結(jié)果.建筑物通常具有相對(duì)規(guī)則的幾何形狀,因此,針對(duì)建筑物外輪廓線的規(guī)則化應(yīng)充分考慮垂直和平行這兩個(gè)最基本的特征,本文通過(guò)提出的分類強(qiáng)制正交規(guī)則化方法進(jìn)行處理.具體方法是找出最長(zhǎng)的線段為初始線段,其他線段與之判斷,若兩線段方位角的差在閾值范圍內(nèi),則歸為A類,否則歸到B類;然后根據(jù)每類線段的長(zhǎng)度加權(quán)平均方位角調(diào)整每一條線段,計(jì)算出線段的新端點(diǎn),即保持A類線段平均方位角不變,將B類線段平均方位角強(qiáng)制與其正交,得到B類線段新的平均方位角;然后調(diào)整每條線段,以線段中心點(diǎn)為軸心,將線段調(diào)整至新平均方位角,并求出新線段兩兩相交的交點(diǎn)作為新的端點(diǎn);最后將所有新的端點(diǎn)依次首尾相連,得到一個(gè)規(guī)則化的建筑物外輪廓線(圖2右圖).
2.2.1 屋頂面聚類
要實(shí)現(xiàn)屋頂面內(nèi)輪廓線提取,首先需要將復(fù)雜的屋頂面進(jìn)行分割聚類,其中,具有代表性的聚類算法有:
1)區(qū)域增長(zhǎng)法,該方法首先計(jì)算三角面片的局部特征(如法向量),然后根據(jù)面片的連通性和局部特征之間的關(guān)系來(lái)進(jìn)行聚類,該算法過(guò)于簡(jiǎn)單,易受局部干擾點(diǎn)的影響;
2)空間Hough變換[20],該方法通過(guò)在參數(shù)空間里進(jìn)行聚類的計(jì)算,因此需要對(duì)參數(shù)空間進(jìn)行離散化,但離散化的程度會(huì)直接影響聚類的精度;
3)RANSAC算法[21],采用迭代的方式從一組包含離群的被觀測(cè)數(shù)據(jù)中估算出數(shù)學(xué)模型的參數(shù),該算法可以容忍數(shù)據(jù)集中含有的噪聲,但它的聚類結(jié)果完美貼近數(shù)學(xué)意義上的一致性,忽略了數(shù)據(jù)攜帶的幾何特性,因此不適合直接用于復(fù)雜建筑的基元提取.
本文提出了一種改進(jìn)的RANSAC算法,先通過(guò)區(qū)域增長(zhǎng)法粗分割屋頂面,充分挖掘數(shù)據(jù)中的幾何信息,然后利用粗分割的結(jié)果作為先驗(yàn)知識(shí),采用RANSAC算法從粗到細(xì)提取屋頂面.
(1)
建筑物屋頂通常是由多個(gè)平面或相對(duì)規(guī)則的曲面構(gòu)成的,落在同一屋頂面上的三角面片法向量大致相同,因此,法向量是屋頂面粗聚類的重要特征.首先,隨機(jī)定位區(qū)域增長(zhǎng)的種子點(diǎn),根據(jù)當(dāng)前三角面片法向量和連通性判斷,使用基于廣度優(yōu)先遍歷的方法先將周圍最近一圈的三角面片聚為一類,然后不同往外擴(kuò)張,直至沒(méi)有新的面片加入為止.使用RANSAC算法的基本思想是通過(guò)迭代隨機(jī)的從樣本集S中抽取一個(gè)樣本子集S′,計(jì)算當(dāng)前平面模型M,再?gòu)腟中抽取符合平面模型M閾值條件的樣本子集T,重復(fù)以上流程若干次,最后將迭代過(guò)程中得到的最大樣本子集T作為最佳子集T*.但該算法存在一個(gè)缺陷,如式(1)所示該算法以一定的概率α得到一個(gè)滿意的聚類結(jié)果.其中,ε為實(shí)際模型的概率,必須加大其迭代次數(shù)N,才能提高概率α.當(dāng)遇到復(fù)雜數(shù)據(jù)時(shí),算法的效率將會(huì)顯著降低.
針對(duì)這個(gè)缺陷,本文設(shè)計(jì)一種基于先驗(yàn)知識(shí)的RANSAC算法提取屋頂面,將粗提取的聚類結(jié)果作為樣本集S,利用局部采樣方法獲取樣本子集S′.在α一定的情況下,減少了迭代次數(shù).本系統(tǒng)中迭代次數(shù)N設(shè)為50,如圖1的屋頂面內(nèi)輪廓線提取部分的左圖所示,可保證建筑物屋頂大部分平面聚類出來(lái),且聚類時(shí)間在可接受范圍內(nèi).實(shí)驗(yàn)部分將給出迭代次數(shù)的效果比較和具體的效率數(shù)據(jù).
2.2.2 內(nèi)輪廓線提取
內(nèi)輪廓線主要是指兩屋頂面相交的部分,可分為直交線段和懸交線段,直交線段是指直接相鄰的兩屋頂平面所構(gòu)成的線段,懸交線段是指非直接相鄰的兩屋頂面向下投影到水平面后,互相緊鄰且不存在重疊部分,但在兩水平面上直接形成了一條明顯的交界線.所以,內(nèi)輪廓線都在相鄰屋頂面之間產(chǎn)生,準(zhǔn)確的找到屋頂面之間的鄰接關(guān)系有助于提取出正確的內(nèi)輪廓線.
本小節(jié)首先簡(jiǎn)要介紹一下獲取屋頂面之間鄰接關(guān)系的操作方法,詳細(xì)步驟說(shuō)明:首先將所有屋頂面上的點(diǎn)云投影到一個(gè)水平面,對(duì)該平面上的二維點(diǎn)云進(jìn)行網(wǎng)格化處理,網(wǎng)格單元長(zhǎng)度為平均點(diǎn)間距的2倍;然后對(duì)每個(gè)網(wǎng)格單元進(jìn)行標(biāo)記,統(tǒng)計(jì)每個(gè)網(wǎng)格單元內(nèi)包含點(diǎn)云數(shù)量最多的屋頂面,將該屋頂面ID號(hào)作為該網(wǎng)格單元的標(biāo)識(shí);最后通過(guò)遍歷每個(gè)網(wǎng)格單元,判斷該單元八鄰域內(nèi)網(wǎng)格單元的標(biāo)識(shí)符.若兩個(gè)標(biāo)識(shí)符不同,則這兩個(gè)標(biāo)識(shí)符所對(duì)應(yīng)的兩個(gè)屋頂面應(yīng)為相鄰屋頂面.
(2)
(3)
得到相鄰屋頂面集合后,則可以計(jì)算兩個(gè)屋頂面之間的內(nèi)輪廓線.如前所述,內(nèi)輪廓線段有兩類:直交線段和懸交線段.其中,直交線段可以通過(guò)兩平面的平面方程直接求交獲取;懸交線段的計(jì)算更為復(fù)雜:首先通過(guò)將兩平面先投影到一個(gè)水平面上,求出水平的候選懸交線段;然后求出該候選懸交線段所在的豎直平面方程;最后將豎直平面方程分別與兩個(gè)屋頂平面方程求交,用求直交線段的方法分別求出兩條懸交線段(圖1的屋頂面內(nèi)輪廓線提取部分的右圖).直線方程可由式(2)的參數(shù)方程表示,其中,(a3,b3,c3)代表直線的方向向量,(x0,y0,z0)代表直線上任意一點(diǎn).直線上任意一點(diǎn)可以取兩個(gè)聚類的公共端點(diǎn),或其中一個(gè)聚類的邊緣點(diǎn).直線的方向向量N3可以通過(guò)式(3)計(jì)算得到,其中,N1和N2是兩平面的法向量.
2.3.1 平面基元的生成
平面基元是由線段順序組合而成的閉合區(qū)域,平面基元的提取就是要確定每個(gè)閉合區(qū)域的輪廓,而輪廓是由外輪廓線段和內(nèi)輪廓線段(直交線段和懸交線段)組成,但上述工作得到的線段端點(diǎn)通常不夠精確,不能直接用于基元的提取.因此,需要對(duì)特征線段進(jìn)行精化,具體是指根據(jù)建筑的幾何特征修改線段的端點(diǎn)坐標(biāo),使線段端點(diǎn)滿足相同端點(diǎn)坐標(biāo)重合的條件,同時(shí)避免線段“虛相交”和“過(guò)相交”.
圖3 規(guī)則化重構(gòu)示意圖Fig.3 Illustration of our regularized reconstruction
如圖3(a),針對(duì)“頂點(diǎn)重合”、“虛相交”和“過(guò)相交”這3個(gè)問(wèn)題分別進(jìn)行一些形式化的定義,以便于對(duì)其進(jìn)行統(tǒng)一處理.其中,將“頂點(diǎn)重合”問(wèn)題定義為重合約束,是指兩個(gè)頂點(diǎn)之間的距離小于一定的閾值;而將“虛相交”和“過(guò)相交”這兩個(gè)問(wèn)題定義為共線約束,是指某頂點(diǎn)到一特征線段的距離小于一定的閾值.如圖3(a),AF、BG、CH和DE為待處理的特征線段,其中兩個(gè)頂點(diǎn)A和D具有等式重合約束,應(yīng)直接滿足式(4)(其中xA、yA為頂點(diǎn)A的x坐標(biāo)和y坐標(biāo),以此類推);頂點(diǎn)B落在DE直線上,具有共線約束,應(yīng)滿足式(5);同理,頂點(diǎn)C也具有共線約束,應(yīng)滿足式(5).本文通過(guò)將特征線段精化問(wèn)題抽象成等式約束問(wèn)題來(lái)求解,校正完每條特征線段后,按照先前的聚類結(jié)果將同一個(gè)平面上的特征線段依次按序相連,獲得平面基元(圖1的規(guī)則化模型的生成部分的左圖).
(4)
(xB-xD)(yE-yD)-(xE-xD)(yB-yD)=0
(5)
2.3.2 非平面基元的生成
通過(guò)恢復(fù)所有平面基元每個(gè)頂點(diǎn)的高程值,并依序連接構(gòu)成重構(gòu)模型的屋頂面;然后將每個(gè)屋頂面頂點(diǎn)向地面投影,生成地面頂點(diǎn),連接相應(yīng)的屋頂面頂點(diǎn)和地面頂點(diǎn)構(gòu)成幾何多邊形,作為模型的墻面,類似豎直往下擠壓,生成平面基元的規(guī)則化重構(gòu)結(jié)果,但該結(jié)果相對(duì)于原始模型是不完整的,缺少了因煙囪、太陽(yáng)能等不規(guī)則物體而未被聚類的部分.因此需要將非平面基元部分重構(gòu)出來(lái).非平面基元由于其形狀不是一個(gè)規(guī)則的平面,大多是凹凸不平的,所以不能放在屋頂面聚類過(guò)程中一起處理提取.本文在提取完屋頂面全部的平面基元后,對(duì)剩下的屋頂三角面片僅采用區(qū)域增長(zhǎng)法,不考慮三角面片法向量之間的關(guān)系,進(jìn)行非平面部分的連通性聚類,找出非平面基元的聚類后,本文將此部分進(jìn)行平面化處理.如圖3(b)左圖,具體是先通過(guò)閾值設(shè)定,將大面積的非平面基元的聚類結(jié)果進(jìn)行保留;然后如圖3(b)右上圖所示通過(guò)計(jì)算當(dāng)前非平面聚類的中心點(diǎn)O,從中心點(diǎn)O出發(fā)找距離最近的兩條輪廓線段,且這兩條線段法向量互相垂直;最后如圖3(b)右下圖所示求出這兩條輪廓線的交點(diǎn)P作為該非平面基元的一個(gè)頂點(diǎn),以該頂點(diǎn)為起始點(diǎn),向兩邊進(jìn)行完整性探測(cè),求出另外兩個(gè)端點(diǎn)Q和R,最后再恢復(fù)出對(duì)角線上的頂點(diǎn),將此非平面基元重構(gòu)成矩形.
通過(guò)恢復(fù)所有平面和非平面基元每個(gè)頂點(diǎn)的高程值,得到具有三維坐標(biāo)信息的空間平面.為了獲得封閉的建筑物實(shí)體模型,先將每個(gè)基元上的頂點(diǎn)依序連接構(gòu)成屋頂面,然后將每個(gè)屋頂面頂點(diǎn)向地面投影,生成地面頂點(diǎn),并連接相應(yīng)的屋頂面頂點(diǎn)和地面頂點(diǎn)構(gòu)成幾何多邊形,作為重構(gòu)模型的墻面,如圖1右圖所示,往下擠壓生成最終的規(guī)則化模型.
本文方法已經(jīng)在2.50 GHz Intel(R)Core(TM)PC機(jī)上的Microsoft Visual studio 2017平臺(tái)利用C++實(shí)現(xiàn).使用Windows平臺(tái)下的OpenGL庫(kù)和Qt庫(kù)實(shí)現(xiàn)基于屋頂面輪廓線提取的規(guī)則化模型的重構(gòu).其中,利用OpenGL渲染三維建筑物模型,使用Qt進(jìn)行用戶界面的開(kāi)發(fā).根據(jù)輸入的單幢建筑物的面片數(shù)據(jù),自動(dòng)進(jìn)行高效的建筑物模型規(guī)則化重構(gòu),重構(gòu)過(guò)程中,用戶無(wú)需具備專業(yè)知識(shí)與技能,只需進(jìn)行簡(jiǎn)單的參數(shù)調(diào)整,得到最優(yōu)的規(guī)則化模型即可.
在考慮改進(jìn)型RANSAC聚類算法迭代次數(shù)選取時(shí),針對(duì)輸入的三維建筑物,分別給出不同的迭代次數(shù)本文方法的聚類效果如圖4所示.表1所示為對(duì)于不同迭代次數(shù)所需的聚類時(shí)間,可以看出,迭代次數(shù)N取50次時(shí),聚類時(shí)間較快,且結(jié)果更精確.因此,本實(shí)驗(yàn)中所有模型在聚類時(shí)迭代次數(shù)N設(shè)定為50.
圖5所示為本文方法與PolyFit方法的效果比較,針對(duì)單幢三維建筑物,PolyFit方法首先通過(guò)改進(jìn)過(guò)的RANSAC聚類方法進(jìn)行點(diǎn)云的聚類,然后用聚類出的結(jié)果將模型切割成小塊的平面,再規(guī)則化提取出的平面,最后將問(wèn)題轉(zhuǎn)化為二進(jìn)制標(biāo)記問(wèn)題,選出適合的候選平面,從而擬合出規(guī)則化重構(gòu)模型.由于PolyFit方法對(duì)模型精度要求較高,本文分別將輸入模型的點(diǎn)云進(jìn)行采樣至10萬(wàn)個(gè)、20萬(wàn)個(gè)和30萬(wàn)個(gè),然后用PolyFit方法進(jìn)行化簡(jiǎn).圖5(b)、(c)為點(diǎn)云采樣至10萬(wàn)個(gè)和20萬(wàn)個(gè)的結(jié)果,可以看出PolyFit方法雖然可以快速簡(jiǎn)化出結(jié)果,但其過(guò)于追求模型的密閉性和整體性,模型中的一些局部特性(如邊之間的平行性)不能很好的保留下來(lái);而增加采樣個(gè)數(shù)至30萬(wàn)個(gè),由于聚類出的平面?zhèn)€數(shù)過(guò)多,PolyFit方法在二進(jìn)制標(biāo)記求解過(guò)程中陷入了復(fù)雜的計(jì)算中,無(wú)法輸出最后的規(guī)則化重構(gòu)結(jié)果.相對(duì)而言,本文方法能夠規(guī)則化重構(gòu)出更為精確的三維模型,且無(wú)需手動(dòng)交互,大大減少了簡(jiǎn)化時(shí)間,提高了算法的效率.
圖4 不同迭代次數(shù)下的聚類結(jié)果Fig.4 Clustering results with different iterations
表1 不同迭代次數(shù)下聚類時(shí)間統(tǒng)計(jì)Table1 Clustering time statistics under different iterations
圖5 本文與PolyFit方法比較Fig.5 Comparison between our method and PolyFit
值得指出的是,本文方法在場(chǎng)景中的規(guī)則化重構(gòu)結(jié)果如圖6(b)、(d)所示,能較好地實(shí)現(xiàn)絕大部分建筑物的規(guī)則化重構(gòu).圖6(e)為場(chǎng)景中若干實(shí)例的規(guī)則化重構(gòu)結(jié)果,其中,第1行為輸入的原始三維建筑物模型,第2行表示最后的規(guī)則化重構(gòu)模型.從圖6(e)中可以看出,對(duì)于具有3個(gè)、5個(gè)和6個(gè)等不同屋頂面?zhèn)€數(shù)的建筑物,本文方法均能實(shí)現(xiàn)高效的模型規(guī)則化重構(gòu).與已有規(guī)則化重構(gòu)方法比較,本文方法針對(duì)屋
圖6 更多建筑規(guī)則化重構(gòu)結(jié)果Fig.6 More results
頂由多邊形組合成的建筑物在簡(jiǎn)化過(guò)程中交互簡(jiǎn)單,且能高效地實(shí)現(xiàn)貼近原始三維模型的簡(jiǎn)化效果.此外,對(duì)于非平面組成的構(gòu)件(如太陽(yáng)能、煙囪等),本文方法可以有效利用基元之間的相鄰關(guān)系將非平面基元恢復(fù)成平面基元并完成規(guī)則化重構(gòu).然而,文方法難以處理由圓柱體、圓錐體、球體等部件組成的屋頂,未來(lái)將進(jìn)一步考慮,使建筑物規(guī)則化重構(gòu)方法適用性更廣、實(shí)用性更強(qiáng).
本文針對(duì)傾斜攝影技術(shù)重建的三維建筑模型,提出了一種基于屋頂輪廓線的三維建筑模型規(guī)則化重構(gòu)方法,能夠?qū)?fù)雜的、帶噪聲的三維建筑網(wǎng)格模型重構(gòu)簡(jiǎn)化為簡(jiǎn)單、規(guī)則的建筑模型,首先分割屋頂并提取屋頂?shù)耐廨喞€,并對(duì)粗糙的外輪廓線進(jìn)行精化;接著通過(guò)改進(jìn)的平面擬合提取屋頂?shù)膬?nèi)輪廓線;最后組合內(nèi)外輪廓線,利用重合約束和共線約束進(jìn)行優(yōu)化生成平面基元;針對(duì)屋頂面中的非平面部分,本文通過(guò)連通性聚類進(jìn)行規(guī)則化保留.本文方法不依賴用戶交互和先驗(yàn)信息,實(shí)驗(yàn)結(jié)果表明了,本文方法在精確性和魯棒性兩個(gè)方面的優(yōu)勢(shì).
然而,本文方法僅適用于屋頂由多邊形組合而成的三維建筑物模型,對(duì)于其他更為復(fù)雜的建筑物(如屋頂由圓柱體、球體等構(gòu)成的建筑物),則是未來(lái)需要進(jìn)一步考慮的.另一方面,本文方法并沒(méi)有考慮門、窗和陽(yáng)臺(tái)等細(xì)節(jié)的規(guī)則化.由于傾斜攝影技術(shù)重建的三維建筑模型精度并不高,直接對(duì)這些細(xì)節(jié)進(jìn)行規(guī)則化的精度較差,將來(lái)可以利用深度學(xué)習(xí)技術(shù)對(duì)它們進(jìn)行識(shí)別后再處理,或許能實(shí)現(xiàn)細(xì)粒度的三維建筑模型規(guī)則化重構(gòu).