(浙江工業(yè)大學 計算機科學與技術學院,浙江 杭州 310023)
在計算機視覺和計算機圖形學領域,針對建筑物三維模型的重建一直是研究的熱點,該研究方向在智慧城市建設、虛擬現實與文化遺址數字化保護等領域有著廣泛的應用[1]。對于需要專業(yè)建模知識的建模方法無法滿足普通用戶的建模需求[2]。傳統(tǒng)的三維建筑物建模方法主要有過程式建模[3-4]、基于點云的建筑物建模[5-6]和基于圖像的建筑物建模[7]等3 類。相較于前兩種方法,基于圖片的三維重建技術通過輸入圖像提取并計算三維信息進行模型重建[8],有效地回避了三維場景的幾何復雜性,但同時在幾何準確性和三維信息完整性上存在缺失與限制,從而給三維建筑物的重建帶來許多困難,近幾年來基于單幅圖像建筑物模型重建方法的研究力度相較于前兩種方法更具有研究意義與挑戰(zhàn)性。在基于單幅圖像的建筑物建模中,現有方法主要利用輸入圖像中提供的特征點和特征線、或者幾何體的對稱以及重復結構約束等信息,通過求解場景相機參數完成定標[9]或根據建筑物表面的幾何約束關系來恢復三維信息[10]。Arikan等[11]提出基于建筑照片重建三維模型,建模過程中需要用戶手動交互不斷改進自動算法的結果。吳康樂等[12]提出了一種基于特征線素的輕量級三維建筑交互建模方法,稱為fe-wires方法。該方法是一種基于形狀文法的過程式建模方法,通過間接地輸入和操縱建筑對象的特征線條來重構模型。Zheng等[13]提出通過匹配圖像和數據庫建筑物模型之間的輪廓實現建筑物建模,該方法避免了相機標定使得計算量大大減少,但由于數據源有限僅能處理簡單的建筑物,無法應用于形狀復雜的建筑物模型。郭美莉等[14]提出基于滅點計算利用攝像機標定模型建立建筑物三維模型,改善和擴大了建模需要的幾何信息恢復,簡化了建模過程。近年來,研究發(fā)現在可以分解為簡單幾何體的建筑物建模對象中,基于參數化幾何基元的建模方法也成為新的研究熱點,Zheng等[15]提出一種長方體代理的思想,將場景中的建模對象用長方體表示,通過用戶交互提取并計算三維場景信息完成目標對象的模型重建,并將其應用到圖像的交互式編輯方面。對于基于單幅圖片的組合式三維建筑物重建技術,現有的三維重建方法通常需要復雜的用戶交互和較大的操作難度,或者在追求簡單交互的同時犧牲算法的計算量。
對于單幅組合式建筑圖像的模型重建,已知組合式建筑即由多個規(guī)則幾何體組合而成,每個幾何體稱為建筑物部件,組合式建筑各部件之間通常存在著大量的遮擋、共面和鄰接等幾何關系?,F實生活中的大部分建筑如寫字樓、居民樓和教學樓等均由長方體、圓柱體組合構建而成,對于該類組合式建筑圖像,現有的建模方法往往需要輸入圖像的限制或大量繁瑣的用戶交互過程[16]。為解決這一挑戰(zhàn),實現交互簡單、效率高效的三維模型重建,筆者提出了一種基于圓柱體和長方體幾何基元定標的單幅圖像組合式建筑交互式建模方法,對于不同部件采取單獨建模最后聯合優(yōu)化完成準確的場景估計與整體模型的重建的方式,實現更為逼真的三維模型效果。筆者方法的主要貢獻在于:1) 提出了一種基于不同幾何基元定標的三維組合式建筑建模方法。對于長方體部件,采用基于平行六面體的相機標定技術計算相機內外參數及長方體尺寸信息完成場景估計并生成模型;對于圓柱體部件,通過用戶交互提取兩組平行線(即過底面圓心的長方形橫截面長寬兩組平行線),計算滅點后基于滅點進行相機標定并重建圓柱體部件模型。2) 結合各個部件單獨完成的場景估計,基于單幅圖像成像一致性進行場景估計的聯合優(yōu)化,最終計算出精確的場景估計參數并優(yōu)化組合式建筑模型各部件的組合構建。與以往基于單幅圖像的建筑物建模方法相比,筆者使用的建模方法旨在覆蓋大部分由不同幾何體構建的單幅組合式建筑圖像的建模,通過對輸入的單幅圖像進行少量的交互處理進行相機標定,以重建出結構較為復雜的三維組合式建筑物模型。
筆者提出的基于幾何基元定標的單幅圖像組合式建筑交互式建模方法首先通過對單幅輸入圖像進行少量的用戶交互,針對不同類型的幾何基元采取不同的建模方法,提取出相機標定所需的二維點線信息完成場景定標的各個參數求解并單獨建模;然后結合組合式建筑各部件之間的共面、鄰接等幾何約束關系,建立誤差函數與能量函數優(yōu)化場景參數,實現場景的精確構建,最終完成組合式建筑的整體建模工作。這種方式的建模在一定程度上減少了計算量,并且大大減少了用戶交互的操作。其方法流程如圖1所示。
圖1 方法流程圖Fig.1 Algorithm flow chart
筆者方法主要包含如下步驟:
1) 基于幾何基元定標的部件建模。針對由圓柱體和長方體組合構成的單幅組合式建筑圖像,采取對各個部件采用不同標定方法進行單獨定標與建模的策略,完成組合式建筑每個部件的模型重建。對于長方體部件,用戶標注三維長方體部件頂點投影在二維圖像上形成的六邊形的6 個角點,系統(tǒng)利用這些角點與三維幾何體之間頂點的對應關系構建長方體幾何基元,使得長方體基元與二維圖像上的部件輪廓相匹配,創(chuàng)建長方體部件模型并計算出相機內外參數;對于圓柱體部件,采用用戶交互方式標注二維圖像上圓柱輪廓的2 條高與2 個端面圓的4 個切點,系統(tǒng)提取圓柱體的兩組母線輪廓線后計算3 個軸方向上的滅點。然后根據滅點進行相機標定,利用角點與三維圓柱體之間端點對應關系繪制圓柱體模型。
2) 基于聯合優(yōu)化的組合式建筑幾何構建。系統(tǒng)在對各個部件進行場景標定與建模時,分別以每個部件的底面中心設為原點單獨建立世界坐標系;計算出場景參數后,根據組合式建筑部件之間鄰接面的幾何約束關系并輔助以二維圖像上用戶標定的角點坐標與系統(tǒng)生成的三維模型投影二維點的距離誤差,引進能量函數優(yōu)化相機參數,生成場景估計,最終生成更為精準的建筑模型。
3) 利用紋理貼圖技術完成紋理貼圖完成模型重建。為了使得模型更加逼真,需要對模型進行渲染。在使用圖像作為紋理過程中,由于拍攝角度以及組合式建筑各個部件之間存在的客觀遮擋關系需要對紋理圖像進行修補并完成最終的紋理渲染,生成最為精確和逼真的模型。
基于對單幅組合式建筑圖像的觀察,可以發(fā)現大部分組合式建筑都由2 個或2 個以上的規(guī)則幾何體鄰接組合而成。主要針對由長方體、圓柱體組合構建的單幅組合式建筑作為重建模型的對象,實現該類組合式建筑的建模。
對于單幅圖像的組合式建筑,充分利用組合式建筑各個部件的規(guī)則幾何體提供的三維信息,對各個部件進行單獨的參數估計與建模,大大簡化了用戶交互,提高了對于該類建筑物的建模效率與質量。針對不同的建筑物部件,采取不同的定標方法完成對每個部件的參數估計與建模,充分利用不同幾何體本身的幾何特性使得計算量得到有效減少。
在組合式建筑的三維建模中,針對其中的長方體部件,筆者提出以長方體幾何基元作為對組合式建筑建模的基本元素之一,實現基于長方體標注的相機標定和長方體部件建模。用戶交互式標注出長方體對象投影在二維圖像上的6 個角點,系統(tǒng)捕捉這些頂點并利用其與三維幾何體之間的對應關系構建長方體幾何基元。由于相機拍攝的單幅建筑物圖像中建筑主體在圖像中占絕大部分面積,投影在二維圖像上的成像往往會有透視失真的情況,為解決歧義,用戶需要標注能覆蓋長方體6 個面的6 個角點。如圖2所示,在相機標定里,設置世界坐標系原點為長方體底面中心,坐標軸與長方體邊對齊,為實現用戶標注區(qū)域與世界坐標系中的長方體部件的二維投影圖像區(qū)域相匹配,利用Wilczkowiak等[17]提出的基于平行六面體幾何約束的相機模型計算出相機內外參數和長方體的尺寸參數l1與l2。
圖2 相機標定Fig.2 Camera calibration
由圖2可知:對于用戶標注的興趣區(qū)域Ri和長方體幾何部件的6 個角點,建模目標是讓長方體部件模型與區(qū)域Ri的二維圖像輪廓相匹配。為建立相機成像模型,利用常見的相機投影矩陣相機模型為
M=K[R|t]
(1)
畸變參數s設置為0,世界坐標系為均勻坐標系,即fx=fy=f。至此,在長方體幾何基元部件相機標定階段需要計算的參數包括相機內參、相機外參以及長方體模型的長寬l1,l2。利用齊次坐標,投影矩陣映射每個長方體角Pi對應于圖像上的二維點pi,表示為
pi=MPi
(2)
利用6 個對應關系Pi?pi,使用動態(tài)線性規(guī)劃方法(DLT)求出相機標定的11 個參數K,R,t,l1,l2。在完成相機標定后,根據式(2)計算出在世界坐標系下特征點的三維坐標,并利用三維點坐標繪制長方體部件模型,建模效果如圖3所示。
圖3 長方體部件建模效果圖Fig.3 Modeling performance of cuboid component
基于單幅圖像的攝像機標定方法,其原理都是根據圖像中長方體結構中線、面之間平行垂直的幾何特征進行場景估計的,而對于組合式建筑中的圓柱體幾何部件的模型重建,這種幾何特征很難有效獲取。因此,在針對圓柱體部件的建模和相機標定上,采取一種新的幾何方法確定相機參數與建模。該方法主要利用圓柱體底面與側面的垂直關系,通過用戶交互,在三維圓柱體投影到二維圖像上的矩形輪廓上標注出2 組相互垂直的平行線,計算2 組平行線的滅點,再利用透視投影理論中滅點的幾何性質計算出相機的內外參數,從而實現相機標定(圖4)。
具體地說,如圖4所示,用戶標注圓柱體部件二維圖像上投影的輪廓兩端面圓的頂點,得到2 條母線輪廓線ac,bd,至此可計算出軸向方向上的滅點v1。相機主點設為圖像中心點。由圖4可知:用戶標注的4 個點即是該2 條母線與上下2 底面圓的切點,連接對應切點a,b和c,d得到軸線方向上垂直的2 組平行線,計算出另1 個方向上的滅點。利用主點p0的性質即主點是以3 個影滅點為頂點的三角形的垂心,可求出第3 個滅點v3。
圖4 圓柱體標注與滅點求解Fig.4 The cylinder label and vanishing points calculation
在計算出3 組相互正交的平行線所對應的3 個滅點圖像坐標后,可求取相機標定的內部參數。已知3個滅點坐標為(ui,vi,1)T,i=1,2,3,它們對應的空間齊次坐標分別為(1,0,0,0),(0,1,0,0),(0,0,1,0),則相機內參與未知非零因子λi約束關系可表示為
(3)
(4)
式(4)分解后可化為6 個線性參數方程,由該6 個參數方程求解出相機的3 個內參以及非零常數因子。
求解出相機內參與度量因子后,可將求解出的參數代入式(4)中,已知K,則可分解求出旋轉矩陣的值。指定世界坐標系的原點在圓柱體底面圓心處,根據用戶標定的底面圓端點求中心點的圖像坐標(u4,v4),代入式(2)即可求解出平移向量。
完成相機標定的參數求解后,確定圓柱體幾何部件的尺寸參數(半徑r以及假設圓柱體高為單位長度)。則用戶標注的點在世界坐標系下的坐標分別為(±r,0,0),(±r,0,1)。利用二維圖像點到三維空間映射關系即可求解出r。至此,基于圓柱體的相機標定與模型重建完成。
在對單個幾何體部件進行建模時,系統(tǒng)對每個部件建立單獨的坐標系并獨立計算相機內外參數,為使得組合式建筑各個幾何部件的組合關系更符合二維圖像提供的信息,需要生成統(tǒng)一且精確的場景估計。
由于單幅組合式建筑物圖像各個部件之間存在鄰接共面幾何約束關系,利用該約束關系并輔助以用戶標注角點坐標與系統(tǒng)生成的三維模型投影在二維圖像上的二維點的距離誤差,引進能量函數優(yōu)化相機參數,生成最優(yōu)場景估計,繪制更為精確的建筑模型。
在圓柱體幾何部件與長方體幾何部件鄰接組合中,由于重合部分該部件在二維圖像成像上往往只呈現出部分圓柱體。為了更好地避免由于重疊遮擋關系帶來的幾何模型擬合誤差,在聯合優(yōu)化部分需要用戶交互標注出長方體部件之間、圓柱體部件與長方體部件鄰接的截面4 個頂點。系統(tǒng)獲取用戶標注的頂點坐標代入誤差函數中進行計算。
假設用戶標記的共面關系的面為Fi,i=1,2,…,n,定義關于建筑物長方體部件三維頂點Pij(i=1,2,…,n;j=1,2,…,6)和圓柱體部件特征點Oij(i=1,2,…,n;j=1,2,3,4)的誤差函數為
(5)
(6)
因此,共面約束誤差可表示為
(7)
在計算過程中,如果T的值越小,那么相應的誤差函數就越小。
利用誤差函數,系統(tǒng)對生成的所有部件模型進行聯合優(yōu)化操作,將其轉換為同一坐標系下的模型組合。運用Levenberg-Marquardt非線性最優(yōu)化方法進行參數優(yōu)化求解出最優(yōu)參數,分別以場景中的各個幾何基元計算出與其相對應的基元集合,并在結果中選出誤差最小的1 組基元集合作為最佳結果進行三維繪制顯示。
筆者方法已經在3.40 GHz Intel(R) Core(TM) PC機上的Microsoft visual studio 2010平臺利用C#進行了編程實現。系統(tǒng)使用NET平臺下的Emgucv和OpenGL庫實現目標物體建模。其中使Emgucv進行圖像處理,利用OpenGL渲染生成的三維模型以及后續(xù)的紋理貼圖。根據單幅輸入圖像,用戶直接在圖像上對長方體部件進行六邊形角點標注,對圓柱體部件進行特征點標注,系統(tǒng)實現實時高效的建模效果。在重建過程中,用戶無需具備專業(yè)的建模技術知識儲備,只需根據二維圖像進行簡單交互即可快速生成三維模型。
圖5給出了利用筆者重建方法實現的若干實例,其中圖5(a,d,g)為輸入的單幅圖像,圖5(b,e,h),圖5(c,f,i)分別為不同角度模型效果圖。由圖5可以看出:對于具有2,3,4 個部件的建筑或者鄰接面位于左右、前后等不同方位的組合式建筑,均能實現高效率的三維模型重建。實驗表明:在整個建模過程中,在用戶交互標注幾何基元部件環(huán)節(jié)耗費的時間較多,在用戶標注角點信息后,系統(tǒng)可以實時地生成粗略模型,用戶可根據效果進行角點微調,使得用戶交互誤差盡量小。
圖5 三維建筑物建模效果Fig.5 3D architecture modeling
為了驗證該建模方法的有效性,我們請一些沒有專業(yè)建模技能的同學通過簡單的學習來使用筆者建模系統(tǒng)進行組合式建筑的建模,可以得到如圖5所示的建模效果。第1 個建筑具有2 個部件, 有1 組共面關系, 用戶標定用時46.32 s, 系統(tǒng)生成模型用時3.88 s;第2 個建筑共有4 個部件, 具有3 組共面關系, 用戶標定用時58.22 s, 生成模型用時5.23 s;第3 個建筑具有3 個部件,具有2 組共面關系,用戶標定用時47.00 s,生成模型用時4.53 s。整體平均建模時間在2 min以內,大部分同學認為該建模系統(tǒng)簡單快捷且容易操作。筆者方法在用戶交互過程中能夠實時顯示生成的三維模型。
圖6給出了基于長方體和圓柱體幾何基元定標的組合式建筑重建方法與Zheng等[15]提出的基于長方體交互式建模方法的比較。可以看出:Zheng等[15]方法根據用戶標注的每個分割區(qū)域對每個長方體做六邊形標注,一方面該方法對于圓柱體對象無法實現建模,且生成的模型與輸入圖像投影差距較大;另一方面,由于Zheng等[15]方法僅僅是根據用戶對每個長方體對象進行標注,對于遮擋關系較多的組合式建筑物單幅圖像,由于被遮擋部件的6 個角點信息的缺失,用戶無法實現精確的標注,Zheng等[15]方法提取的幾何關系往往與二維圖像提供的信息相差較大。筆者方法不但可以同時實現圓柱體和長方體兩種類型幾何體部件的模型重建,且考慮了組合式建筑本身具有的各個部件之間鄰接共面關系,運用幾何約束可以實現更為精確的三維模型重建。
圖6 模型重建方法比較Fig.6 Comparison of model reconstruction methods with existing work
圖7給出了筆者方法與Zheng等[13]提出的基于模型庫建模方法的比較,由于Zheng等[13]所建立的模型庫較小,對于由圓柱體和長方體組合而成的復雜組合式建筑物圖像匹配效果欠佳,利用筆者方法可以實現結構復雜的組合式建筑模型重建。對于簡單的長方體建筑,Zheng等[13]通過模型匹配從數據庫中可找到與輸入圖輪廓大致符合的粗略模型(圖7b),而筆者方法重建的模型更加接近輸入圖像的真實效果(圖7c)。此外,Zheng等[13]提出的方法雖然是系統(tǒng)自動匹配模型,不需要人工交互,但以犧牲模型真實性為代價,建立的三維模型與輸入圖片有一定誤差。與Zheng等[13]的基于模型庫建模方法比較,筆者方法建模對象覆蓋面更加廣泛、算法性能高以及能夠實時高效地完成結構復雜的組合式建筑圖像的三維建模。
圖7 筆者方法與基于模型庫匹配方法的效果比較Fig.7 Effect comparison of 3D model reconstruction between ours and database-based method
針對由規(guī)則長方體與圓柱體組合而成的單幅組合式建筑物圖片,提出了一種基于幾何基元定標的單幅圖像組合式建筑建模方法。該方法針對不同類型的幾何體部件,采取不同的場景定標方法計算相機內外參數以及幾何體尺寸參數并完成建模。然后對生成的各個部件模型進行基于共面鄰接幾何約束關系的聯合優(yōu)化,實現建筑物模型的精確重建。最后,根據單幅建筑物圖像提供的紋理信息對生成的模型進行紋理渲染,完成與二維圖像信息一致的組合式建筑物建模。實驗表明:筆者方法不需要用戶具有專業(yè)的建模知識,只需少量簡單的用戶交互即可完成建模,建模過程操作簡單、建模效率高和實用性較強,可以滿足現實生活中大部分組合式建筑單幅圖像的建模需求。后續(xù)工作可以加入諸如球體、圓錐體多種幾何體基元實現更為復雜的組合式建筑模型重建。