阮競蕓,厲 犇
(廈門大學(xué)嘉庚學(xué)院,福建 漳州 363105)
近些年,人們對古跡保護(hù)越來越重視。但是經(jīng)過歲月的侵蝕,大部分古跡都在不同程度上發(fā)生了風(fēng)化、腐蝕甚至人為破壞等情況。如何對已破壞古建筑進(jìn)行重建,并確保重建后的高還原度成為了古建筑修復(fù)領(lǐng)域的主要研究問題。由于三維重建技術(shù)不斷發(fā)展成熟,其也被廣泛地應(yīng)用于古建筑還原重建領(lǐng)域中。
王令文[1]等人提出結(jié)合點云數(shù)據(jù)與建筑信息模型(Building Information Modeling,BIM)的古建筑三維重建與信息化管理方法。該方法使用四面體剖分算法建立三角網(wǎng)模型,隨后以點云作為參考目標(biāo)給出實體模型,并根據(jù)實際的模型信息特點,以實現(xiàn)信息化管理。通過實驗證明該方法具有一定的有效性,且構(gòu)建的信息管理部分能夠在不同階段對建筑的幾何信息進(jìn)行持續(xù)管理。但是該方法受外界噪聲或環(huán)境等因素的干擾較大,具有一定的局限性;徐照[2]等人提出基于點云的建筑物表面損傷三維重建與屬性提取方法,通過Kinect采集實際場景和信息,利用點云庫(Point Cloud Library,PCL)對采集后的數(shù)據(jù)格式轉(zhuǎn)化,將數(shù)據(jù)坐標(biāo)系轉(zhuǎn)變?yōu)榕c各個構(gòu)建相對應(yīng)的坐標(biāo)系以確定建筑的損傷位置,隨后采用Meshlab切割點云提取主要破損區(qū)域信息,最后在地理信息系統(tǒng)(Geographic Information System,GIS)環(huán)境內(nèi)將處理后數(shù)據(jù)轉(zhuǎn)為深度圖像,實現(xiàn)對損傷部位信息的提取與重建。該方法的還原精度較高,最終的三維圖像呈現(xiàn)效果較好,但是由于該方法所涉及的算法較多,導(dǎo)致操作較為復(fù)雜,且重建的效率較低。
針對上述問題,本文以圖像配準(zhǔn)為基本原則,提出一種多視角深度圖配準(zhǔn)算法下破損古建筑三維重建。圖像配準(zhǔn)就是通過將不同時間,不同條件下(照度、天候以及攝像機位置和角度等)獲得兩幅或兩幅以上的圖像進(jìn)行匹配和疊加的過程。因此,本文通過相機坐標(biāo)系的標(biāo)定獲得相對于標(biāo)準(zhǔn)坐標(biāo)系各個攝像機的具體坐標(biāo),降低外界干擾,隨后以上述攝像機標(biāo)定為基礎(chǔ),給出圖像配準(zhǔn)方法,并憑借多視角三維拼接確定坐標(biāo)系旋轉(zhuǎn)平移前后的局部空間坐標(biāo)變換關(guān)系,該過程中的關(guān)鍵部分即是確定旋轉(zhuǎn)前坐標(biāo)系、旋轉(zhuǎn)后坐標(biāo)系以及攝像機坐標(biāo)系。三維拼接后通過求解平移向量、縮放因子以及最優(yōu)旋轉(zhuǎn)矩陣,快速完成破損古建筑的三維重建。
攝像機標(biāo)定為三維重建的第一步,主要作用是確定攝像機像素位置與真實三維場景位置間的關(guān)系。假設(shè)Q(X,Y,Z)表示世界坐標(biāo)中的一點,q(x,y,f)表示圖像上一點,其中f表示焦距。若O表示攝像機光心,則可以通過平移和選擇將世界坐標(biāo)轉(zhuǎn)換為相機坐標(biāo),在如圖1所示的相機坐標(biāo)內(nèi),Q的坐標(biāo)系可以表示為[R|T]Q。
圖1 攝像頭成像模型
因此,Q與q之間的關(guān)系可以表示為
(1)
由于最后呈現(xiàn)出的畫面是以像素的方式進(jìn)行表現(xiàn)的,引入像素坐標(biāo)m(u,v),則像素對應(yīng)的相機坐標(biāo)可以表示為(dx,dy)。在實際操作過程中,像素的坐標(biāo)中心可能不會與中心光軸完全重合,故引入A=(cx,cy)表示像素中心的偏移,由此可推導(dǎo)出下式
(2)
當(dāng)通過多個攝像頭進(jìn)行拍攝時,在實際操作過程中攝像頭做不到完全對齊,因此導(dǎo)致成像平面不能做到完全平行,甚至可能導(dǎo)致兩個不同攝像頭的成像平面發(fā)生交錯[3]。因此通過下式對攝像頭進(jìn)行旋轉(zhuǎn)平移變換。
(3)
式(3)中,qc1、qc2分別表示2個不同攝像機坐標(biāo),R、T表示旋轉(zhuǎn)和平移矩陣[4]。將該原理應(yīng)用于多個攝像頭中,若多個攝像機均以某個攝像機為參照,就可以獲得與之相應(yīng)的旋轉(zhuǎn)矩陣,從而獲得各個攝像機的具體坐標(biāo)。
以上述攝像機標(biāo)定為基礎(chǔ),給出圖像配準(zhǔn)方法,多視角三維拼接的主要就是在于確定坐標(biāo)系旋轉(zhuǎn)平移前后的局部空間坐標(biāo)變換關(guān)系。其中主要涉及3種坐標(biāo)系分別為:旋轉(zhuǎn)前坐標(biāo)系、旋轉(zhuǎn)后坐標(biāo)系以及攝像機坐標(biāo)系[5]。旋轉(zhuǎn)前的平面坐標(biāo)為XZ,旋轉(zhuǎn)軸為Y軸。建立旋轉(zhuǎn)坐標(biāo)系OtXtYtZt。假設(shè)旋轉(zhuǎn)一定角度后坐標(biāo)系為Ot1Xt1Yt1Zt1,相機坐標(biāo)為OcXcYcZc。隨后對轉(zhuǎn)軸進(jìn)行標(biāo)定,轉(zhuǎn)軸標(biāo)定指的是確定被測物體繞轉(zhuǎn)軸在相機坐標(biāo)系內(nèi)的具體位置。為簡化標(biāo)定過程,本文采用棋盤角點信息標(biāo)定法。具體流程如下:將棋盤標(biāo)定板放置在旋轉(zhuǎn)臺上,以某一攝像機坐標(biāo)為參考,從而獲得標(biāo)定板角點的位置。棋盤角點的運動軌跡如圖2所示。
圖2 角點運動軌跡
角點通過旋轉(zhuǎn)而形成的平面方程如下
Ax+By+Cz+d=0
(4)
可將式(4)進(jìn)一步改寫為
(5)
式(5)中,n表示平面法向,(x,y,z)表示標(biāo)定板的角點坐標(biāo)。
理論上講,當(dāng)任意角點旋轉(zhuǎn)位置的置數(shù)目為3時,即可求出由標(biāo)定板角點所形成圓的法向,也就是轉(zhuǎn)軸方向。但是為確保準(zhǔn)確性,在實際操作過程中可以通過對多個角點進(jìn)行求解確保在噪聲干擾下的轉(zhuǎn)軸方向的魯棒性[6]。在對轉(zhuǎn)軸上點的求解過程中,可以通過擬合圓心的方法進(jìn)行,但是由于角點坐標(biāo)是在三維空間內(nèi)的,擬合出圓較為困難,因此為能夠使算法實現(xiàn),將攝像機坐標(biāo)系條件下的轉(zhuǎn)軸法向n旋轉(zhuǎn)至轉(zhuǎn)臺坐標(biāo)系下,旋轉(zhuǎn)的具體方法如下:
R=Icosθ+sinθ[u]×+(1-cosθ)u?u
(6)
式(6)中
(7)
(8)
利用式(6)將攝像機坐標(biāo)系的轉(zhuǎn)軸法向n轉(zhuǎn)換至轉(zhuǎn)臺坐標(biāo)系[7],此時旋轉(zhuǎn)軸可以表示為
(9)
旋轉(zhuǎn)角度可以表示為
(10)
通過式(6)將角點坐標(biāo)轉(zhuǎn)換為旋轉(zhuǎn)軸坐標(biāo)系中時,角點所在平面和XZ平面互相平行。角點對XZ平面進(jìn)行投影弧,即可通過最小二乘法完成圓心擬合[8],獲得圓心坐標(biāo),可將其轉(zhuǎn)為攝像機坐標(biāo)系下位置Xp=[xp,yp,zp]。
通過上述方法獲得旋轉(zhuǎn)軸位于攝像機坐標(biāo)系的具體位置,為進(jìn)一步求得攝像機和轉(zhuǎn)臺坐標(biāo)系間的關(guān)系,首先建立兩種坐標(biāo)系統(tǒng),隨后根據(jù)二者坐標(biāo)系間的聯(lián)系,確定二者間關(guān)系。相機坐標(biāo)系統(tǒng)可以表示為:
(11)
在設(shè)定轉(zhuǎn)臺坐標(biāo)系統(tǒng)的過程中,需保證旋轉(zhuǎn)軸始終為Y,X、Z軸可以根據(jù)實際情況自由選擇。為了方便操作,將XZ平面和轉(zhuǎn)軸之間的交點當(dāng)作轉(zhuǎn)臺坐標(biāo)系統(tǒng)的原點。則XZ平面方程可以表示為:Y=0,轉(zhuǎn)軸的參數(shù)方程可以表示為
(12)
式(12)中,轉(zhuǎn)軸法向n=(nx,ny,nz),t表示轉(zhuǎn)軸參數(shù)[9]。旋轉(zhuǎn)軸上的一點坐標(biāo)為Xp=[xp,yp,zp]。
(13)
對兩個坐標(biāo)系進(jìn)行對齊處理。最后即可獲得兩個坐標(biāo)系間的關(guān)系如下
R1=RxRy
(14)
在獲得兩個坐標(biāo)系間關(guān)系后,分別取建筑破損部分在兩個坐標(biāo)系中的一點,將兩點進(jìn)行融合即可實現(xiàn)三維重建全過程。融合的過程分為兩個部分,一是確定坐標(biāo)系中一致對應(yīng)的點集,二為求解變換矩陣,完成兩個矩陣點集的融合。
分別使用P1、P2代表兩個坐標(biāo)系統(tǒng),統(tǒng)計古建筑的照片D中破損部分在P1、P2中對應(yīng)點的數(shù)目,具體實現(xiàn)方法為,對于D中每幅圖像K,讀取其在兩個坐標(biāo)系統(tǒng)中的對應(yīng)點,定義為Pk1、Pk2。隨后計算出P1、P2投影在K上的像素位置,并對三維點在公共平面內(nèi)的投影點位坐標(biāo)進(jìn)行記錄,其計算公式為
xi=PXi
(15)
式(15)中,Xi表示三維點坐標(biāo),P表示與圖像K相對應(yīng)的攝像機矩陣,xi表示Xi投影至K上的二維點坐標(biāo)。
將P1、P2投影至圖像K的結(jié)果記為K1、K2。通過式(15)計算所得的投影像素點坐標(biāo)不是整數(shù)[10],因此需要對圖像內(nèi)的每個像素點進(jìn)行進(jìn)行坐標(biāo)取整,取整后將兩張圖像中的像素點坐標(biāo)位置進(jìn)行對比分析,并記錄出坐標(biāo)值相互重合的像素點,將重合像素點組成一個點集A,則這個集合內(nèi)的點為匹配點。由此即可獲得整體與局部點之間的一致點對。
為實現(xiàn)對應(yīng)點集內(nèi)所有點的坐標(biāo)準(zhǔn)確對齊,需要尋找出一個相似變換T,由于兩個坐標(biāo)系統(tǒng)的對應(yīng)點是已知的,因此使用具有顯式解的方式對T進(jìn)行求解。變換T是由三個參數(shù)組合而成,分別為平移向量L、縮放因子s、最優(yōu)旋轉(zhuǎn)矩陣R′,由此即可將求解問題轉(zhuǎn)換成最小化目標(biāo)函數(shù)[11]如下:
(16)
隨后通過以下方法求解相應(yīng)變換。
1)求解平移向量L
首先通過下式計算出P1、P2的幾何中心:
(17)
式(17)中,O表示幾何中心,N表示點的數(shù)目,隨后通過所得的O1、O2即可計算出平移向量L如下
L=O1-O2
(18)
在實際操作過程中,采用了坐標(biāo)歸一化法,將兩個坐標(biāo)系統(tǒng)的中心點平移至原點O,因此式(16)還可以轉(zhuǎn)換成如下形式
L=(O1-O2)+(O-O1)
(19)
2)求解最優(yōu)旋轉(zhuǎn)矩陣R′
在不考慮縮放因子的條件下,式(18)可進(jìn)一步簡化為:
(20)
為使系統(tǒng)坐標(biāo)能夠在選擇變換的過程中確保結(jié)構(gòu)不變,選擇矩陣應(yīng)該滿足det(R)=1的約束條件。通過OPP算法求解出最優(yōu)旋轉(zhuǎn)矩陣R′如下
R′=U·VT
(21)
式(21)中,U、V分別表示特征向量矩陣。
3)求解縮放因子s
可以根據(jù)式(22)直接求得縮放因子。
(22)
式(22)中,tr(·)表示矩陣跡[12],通過上述方法完成縮放、平移和旋轉(zhuǎn)變換后,通過下式將坐標(biāo)系統(tǒng)P2中的點云轉(zhuǎn)換至P1坐標(biāo)系統(tǒng)下:
(23)
綜上,即完成了兩個坐標(biāo)系統(tǒng)點云的融合,實現(xiàn)了破損古建筑的三維重建。
為驗證多視角深度圖配準(zhǔn)算法下破損古建筑三維重建方法的有效性,設(shè)計如下仿真分析。為使實驗結(jié)果更為直觀,在Visual C++環(huán)境下,以用圖像工具庫OpenGL為圖像處理平臺,從重建效果和定量分析兩個角度完成性能驗證。為避免實驗結(jié)果的單一性,將文獻(xiàn)[1]方法、文獻(xiàn)[2]方法作為對比,與本文方法共同完成性能驗證。
圖3為兩個不同視角下的破損古建筑的數(shù)據(jù)圖像,圖4中(a)、(b)、(c)分別表示文獻(xiàn)[1]方法、文獻(xiàn)[2]方法以及本文方法的重建結(jié)果。
圖3 不同視角下數(shù)據(jù)圖像
圖4 不同方法重建效果對比圖
根據(jù)圖4可以看出,由于本文使用棋盤坐標(biāo)定位配準(zhǔn),能夠準(zhǔn)確地剔除環(huán)境干擾,且準(zhǔn)確地恢復(fù)了原始圖像的破損部分,且三維重建后的圖像呈現(xiàn)效果更清晰。
在此基礎(chǔ)上,進(jìn)一步對不同方法展開定量分析,結(jié)果如表1所示。
表1 不同算法的定量分析結(jié)果
表1中的數(shù)據(jù)避免,與其它兩種方法相比,本文方法給出的各項相關(guān)數(shù)值與真實值最為接近,且說明其實際還原度較好,具有較高的實際應(yīng)用價值。
為還原破損古建筑的真實情況,本文在多視角深度圖配準(zhǔn)算法下提出了一種破損古建筑三維重建。方法主要通過棋盤角點信息標(biāo)定法完成空間坐標(biāo)和相機坐標(biāo)之間關(guān)系,隨后通過點云融合完成三維重建,實驗證明該方法具有一定的有效性,但是還在以下方面存在不足:
1)在進(jìn)行圖像配準(zhǔn)的過程中,沒有考慮受干擾情況下的測量誤差。由于實際數(shù)據(jù)較多且其中可能還包含雜點和噪點等因素影響,因此在配準(zhǔn)之前需要對數(shù)據(jù)進(jìn)行預(yù)處理。
2)本文方法針對的是包含像素信息的深度圖像,存在局限性,可以考慮通過其它途徑對深度圖進(jìn)行圖像化處理,因此下一步將會在不考慮像素信息的條件下對本文算法進(jìn)行完善,使其的適用性更強,能夠廣泛地應(yīng)用至更多領(lǐng)域內(nèi)。