張秋敏,曹 治
(1. 江西應(yīng)用科技學(xué)院建筑工程學(xué)院,江西 南昌 330100;2. 南昌航空大學(xué),江西 南昌 330000)
城市景觀建筑物代表著一個(gè)城市的風(fēng)采和內(nèi)涵,是每個(gè)城市的文化體現(xiàn),具有很重要的藝術(shù)和科學(xué)研究?jī)r(jià)值。為了更好地保護(hù)、修繕城市景觀性建筑物,對(duì)其展開(kāi)全景3D模型紋理映射研究具有重要的意義[1]。傳統(tǒng)的模型紋理映射方法存在信息量少、真實(shí)性差以及速度慢等問(wèn)題,不能滿(mǎn)足建設(shè)規(guī)劃的要求,因此,研究一種高效、精準(zhǔn)的城市景觀建筑物全景3D模型紋理映射方法成為了當(dāng)下最熱門(mén)的研究課題。
有學(xué)者利用城市景觀建筑物多邊形角點(diǎn)和面積獲取最佳像片,通過(guò)攝影中心和多邊形角點(diǎn)連接光束及遮擋面相交的點(diǎn)判斷是否遮擋,最后采用間接法紋理糾正獲取模型的最佳紋理,完成模型紋理映射,該方法紋理映射效果不佳,精準(zhǔn)度較低。除此之外,文獻(xiàn)[2]提出了一種基于幀緩存的紋理映射方法,首先將城市景觀建筑物精細(xì)模型與傾斜攝影測(cè)量解決方案產(chǎn)生的三角網(wǎng)模型配準(zhǔn),根據(jù)其空間特征提取紋理,通過(guò)幀緩存紋理繪制方法將紋理映射到城市建筑物模型表面,完成模型紋理映射,該方法構(gòu)建的模型存在模糊現(xiàn)象,平面誤差高。文獻(xiàn)[3]提出了一種基于PTM模型的紋理映射方法,獲取表示色彩與建筑亮度依賴(lài)關(guān)系的雙二次多項(xiàng)式關(guān)系,然后獲得其紋理信息后直接映射到建筑物模型表面,完成模型紋理映射,該方法構(gòu)建模型時(shí)存在失真現(xiàn)象。
為了解決上述方法中存在的問(wèn)題,提出一種城市景觀建筑物全景3D模型紋理映射方法。
由于各種外界因素的影響,獲取的城市景觀性建筑物的點(diǎn)云數(shù)據(jù)集存在一些噪聲,首先對(duì)獲取的線掃描數(shù)據(jù)展開(kāi)去噪處理[4-5]。對(duì)于線掃描數(shù)據(jù),通過(guò)掃描線逐行排查實(shí)施去噪操作。并通過(guò)最小二乘法將截面數(shù)據(jù)的起點(diǎn)與終點(diǎn)近似為曲線,在此過(guò)程中,擬合多項(xiàng)式次數(shù)越多,擬合曲線與實(shí)際建筑物越相似。
設(shè)A1,A2,A3代表平面中隨機(jī)一個(gè)圓上的三個(gè)點(diǎn),圓心坐標(biāo)是(x0,y0),則A2的曲率值l表達(dá)式如下:
(1)
用S表示掃描線點(diǎn)云數(shù)據(jù)集合,依照順序選擇掃描線上的數(shù)據(jù)點(diǎn)Ai,j、Ai,j+1、Ai,j+2,根據(jù)式(1)獲取所有數(shù)據(jù)點(diǎn)的曲率值。求解S中同等距離的兩個(gè)點(diǎn)之間的曲率差值,當(dāng)差值超過(guò)閾值n個(gè)點(diǎn)時(shí),將掃描線劃分為n+1段,擬合每個(gè)分段的點(diǎn)云數(shù)據(jù),去掉大于閾值的數(shù)據(jù)點(diǎn)。
考慮到城市景觀建筑物全景3D模型中離散點(diǎn)云數(shù)據(jù)[6-8]之間不存在明顯的集合關(guān)系,通過(guò)計(jì)算數(shù)據(jù)點(diǎn)和剩余點(diǎn)的方差,再通過(guò)對(duì)比,就可以去掉對(duì)應(yīng)的噪聲點(diǎn)。
如果中心點(diǎn)A的局部坐標(biāo)系為(o,b,k),將其設(shè)為目標(biāo),按照概率統(tǒng)計(jì)理論,得到正態(tài)分布N(τ,υ),其中,均值τ決定了形狀位置與坐標(biāo)系原點(diǎn)的變化,復(fù)合方差υ決定了形狀的開(kāi)口和噪聲程度,數(shù)值越大形狀開(kāi)口越大,數(shù)值越小開(kāi)口越小;將其和閾值實(shí)施對(duì)比操作,去掉υ大于閾值的全部數(shù)據(jù)點(diǎn),完成去噪操作。υ的表達(dá)式如下:
(2)
在去噪時(shí),如果閾值小于υ,則運(yùn)用下列公式對(duì)(o,b,k)每個(gè)方向的△o、△b、△k分別展開(kāi)求解,具體公式如下:
(3)
通過(guò)上式去除全部方向上的最大噪聲點(diǎn),然后不斷迭代循環(huán),直至刪除全部噪聲點(diǎn)。
傳統(tǒng)方法對(duì)去噪后的點(diǎn)云數(shù)據(jù)實(shí)施拼接處理的結(jié)果不太理想[9],本文方法采用ICP算法對(duì)城市景觀建筑物的點(diǎn)云數(shù)據(jù)展開(kāi)精準(zhǔn)拼接。
ICP算法是通過(guò)設(shè)定目標(biāo)距離度量函數(shù)以及對(duì)應(yīng)點(diǎn)的選擇達(dá)到快速收斂和確保函數(shù)優(yōu)化至全局最小[10-11]。根據(jù)點(diǎn)到點(diǎn)距離模型特點(diǎn)與點(diǎn)到面距離模型的特征,將二者之間的總體度量函數(shù)相結(jié)合,利用分層次設(shè)置迭代循環(huán)的停止條件,使迭代次數(shù)大大降低,通過(guò)重采樣對(duì)應(yīng)點(diǎn)云,將尋找對(duì)應(yīng)點(diǎn)的時(shí)間降低至最小,精準(zhǔn)選擇正確的對(duì)應(yīng)點(diǎn),完成點(diǎn)云數(shù)據(jù)的精準(zhǔn)拼接。
1)第一個(gè)層次的迭代收斂。針對(duì)具有N個(gè)邊的局部點(diǎn)云數(shù)據(jù)A1、W1,將通過(guò)幾何曲率取樣手法得到的點(diǎn)集對(duì)A2、W2視作對(duì)應(yīng)點(diǎn)集對(duì),為了減少迭代次數(shù),縮短點(diǎn)云數(shù)據(jù)之間的距離,需要設(shè)立相對(duì)大一點(diǎn)的停止閾值0.1mm。
假設(shè)點(diǎn)云數(shù)據(jù)A1、W1上的點(diǎn)分別表示為ai、wi(1=1,2,…N),從概念上來(lái)看,拼接兩個(gè)曲面時(shí)相對(duì)應(yīng)的點(diǎn)對(duì)(ai,wi)之間存在以下剛體變換:
|Y(ai)-wj|=0
(4)
式中,Y(ai)表示對(duì)ai實(shí)施Y變換。由于現(xiàn)實(shí)中存在各種影響因素,上式很難成立,為了使式(4)成立,需要設(shè)立一個(gè)精度可以承擔(dān)的無(wú)窮小值r,即:
(5)
對(duì)于不規(guī)則曲面來(lái)說(shuō),探索對(duì)應(yīng)點(diǎn)對(duì)的位置艱難且時(shí)間消耗較大。所以將曲面A2固定,采用k-d tree搜索算法搜索W2中A2最小間隔的最近點(diǎn)wi,如下所示:
(6)
(7)
圖1 度量函數(shù)收斂模擬圖
點(diǎn)ai處的切平面為di,則距離度量函數(shù)表達(dá)式如下:
(8)
點(diǎn)到平面的距離可視為一個(gè)線性函數(shù):
(9)
通過(guò)上述步驟可以大大降低迭代次數(shù),提高收斂速度,但是誤差還未降低,所以要繼續(xù)提高精確度。
2)第二個(gè)層次的迭代收斂。探索對(duì)應(yīng)點(diǎn)的位置,若已知對(duì)應(yīng)關(guān)系參數(shù){v1,v2,…,vk},則可以快速獲取各個(gè)點(diǎn)相對(duì)應(yīng)的最近的點(diǎn)。反之,若兩個(gè)點(diǎn)云數(shù)據(jù)之間位于拼接的最好形態(tài),此時(shí)存在的轉(zhuǎn)換關(guān)系即為探索的最佳拼接參數(shù)。所以通過(guò)獲取轉(zhuǎn)換參數(shù)Atr1,對(duì)A2實(shí)施重采樣計(jì)算,獲得參考局部最近點(diǎn)集W4,并在其中搜索最近點(diǎn),此時(shí)檢索的時(shí)間低于運(yùn)用k-dtree搜索算法展開(kāi)全局搜索的時(shí)間。
1)假設(shè)點(diǎn)云數(shù)據(jù)目標(biāo)為A3(ai∈A(i=1,2,…,Na)),點(diǎn)云數(shù)據(jù)參考為W3(wi∈W(i=1,2,…,Nw));
2)運(yùn)用最初的點(diǎn)云數(shù)據(jù)拼接轉(zhuǎn)換參數(shù)Atr1,將A3中Na個(gè)點(diǎn)在W3間局部重取樣的對(duì)應(yīng)點(diǎn)集W4A標(biāo)識(shí)出來(lái);
3)將點(diǎn)云數(shù)據(jù)初始化:X0=A3,Y0=[100000]Y,k=0;
4)運(yùn)用k-dtree在W4的鄰近局部地點(diǎn)檢索A3最近的點(diǎn),當(dāng)?shù)_(dá)到第k次以后,得到的點(diǎn)集W4k=(A3,W4A);
5)計(jì)算點(diǎn)云數(shù)據(jù)的拼接參數(shù)g(A3,W4k);
6)對(duì)X0展開(kāi)計(jì)算獲取新一個(gè)迭代點(diǎn)集Xk+1;
7)若不符合迭代收斂要求fk-fk+1<ε,則返回步驟4)(迭代的停止要求ε設(shè)置為0.02mm),否則停止迭代操作,獲取點(diǎn)云數(shù)據(jù)拼接的最優(yōu)轉(zhuǎn)換參數(shù)Atr2。
通過(guò)上述步驟實(shí)現(xiàn)點(diǎn)云數(shù)據(jù)拼接,提升城市景觀性建筑物全景3D模型紋理映射精準(zhǔn)度。
為了避免紋理圖像局部扭曲變形、圖像失真和映射效果差等情況的發(fā)生,利用半球面等比約束球面映射算法對(duì)模型展開(kāi)紋理映射操作[12]。此算法可以通過(guò)不斷調(diào)整倍數(shù)大小均勻控制球面紋理映射的覆蓋范圍。
假設(shè)紋理平面上隨機(jī)點(diǎn)T1的極坐標(biāo)表示為(r,β),將其映射到半球面上,與之對(duì)應(yīng)的點(diǎn)U的經(jīng)緯坐標(biāo)為T(mén)2(δ,σ),如下圖2所示。
圖2 紋理圖片在半球面的映射
(10)
(11)
通過(guò)上述算法構(gòu)建紋理圖片和球面之間的關(guān)系,進(jìn)而構(gòu)建點(diǎn)云重建模型和球面之間的關(guān)系,通過(guò)獲取對(duì)應(yīng)的紋理坐標(biāo)完成城市景觀建筑物全景3D模型的紋理映射[14-15]。
第一步,選取一個(gè)半徑尺寸合適的半球面,將城市景觀建筑物的點(diǎn)云模型包圍起來(lái),使這個(gè)半球的軸正好穿過(guò)建筑物底部的中心位置,選擇適當(dāng)?shù)那蛐牡浇ㄖ撞恐g的距離,最后通過(guò)面積等比約束算法,將紋理圖案映射到球冠面上。設(shè)城市景觀建筑物點(diǎn)云模型中的隨機(jī)一個(gè)點(diǎn)為T(mén)(vx,vy,vz),為了方便計(jì)算,在z軸上設(shè)定一個(gè)固定點(diǎn)U(x1,y1,z1),則球表示為x2+y2+z2=r2,點(diǎn)云模型中的點(diǎn)與固定點(diǎn)U之間的一條直線表示為:
(12)
使這條直線相交于球,計(jì)算k值求得點(diǎn)云和球面的對(duì)應(yīng)關(guān)系。k值的求解方法如下:
(13)
式中,mid的計(jì)算量較大,因此需要將其簡(jiǎn)化,令U為(0,0,z),此時(shí)可求得點(diǎn)云模型中點(diǎn)和球面之間的關(guān)系,即x=k×(vx-x1)+x1,y=k×(vy-y1)+y1,z=k×(zy-z1)+z1。
(14)
在點(diǎn)云數(shù)據(jù)渲染中,通過(guò)上式將紋理坐標(biāo)直接覆蓋到點(diǎn)云模型的各個(gè)點(diǎn)上,進(jìn)而完成城市景觀建筑物全景3D模型的紋理映射。
為了驗(yàn)證城市景觀建筑物全景3D模型紋理映射方法的整體有效性,需要對(duì)其展開(kāi)如下測(cè)試。采用MATLAB仿真軟件對(duì)實(shí)驗(yàn)圖像進(jìn)行處理,實(shí)驗(yàn)所用圖像來(lái)自Inria 航空影像數(shù)據(jù)集(http:∥m6z.cn/6nUs6s),在該數(shù)據(jù)集中選取城市景觀建筑物對(duì)象,如圖3所示。建立城市景觀建筑物的全景架構(gòu),架構(gòu)的完整度直接決定紋理映射的效果,對(duì)圖3所示的城市景觀建筑物展開(kāi)架構(gòu)重建,結(jié)果如圖4所示。
圖3 城市景觀建筑物
圖4 城市景觀建筑物架構(gòu)重建效果
對(duì)城市景觀建筑物的全景架構(gòu)展開(kāi)紋理映射,結(jié)果如圖5所示。
圖5 城市景觀建筑物全景架構(gòu)紋理映射效果
分析圖4和圖5可知,所提方法的紋理映射效果最佳,其余兩種方法均存在不同程度的模型缺失、扭曲、變形、失真和粗糙等問(wèn)題,而所提方法構(gòu)建的城市景觀建筑物全景3D模型基本不存在上述問(wèn)題,因?yàn)樗岱椒ㄊ紫葘?duì)點(diǎn)云數(shù)據(jù)展開(kāi)去噪處理,其次采用ICP算法對(duì)點(diǎn)云數(shù)據(jù)實(shí)施精準(zhǔn)拼接,最后運(yùn)用半球面等比約束算法重建模型的紋理映射,消除了外在因素對(duì)建模過(guò)程產(chǎn)生的影響,可以很好地完成城市景觀建筑物全景3D模型的紋理映射。
將城市景觀建筑物全景3D模型的點(diǎn)位平面誤差作為指標(biāo),測(cè)試三種方法的應(yīng)用效果,結(jié)果如表1所示。
表1 點(diǎn)位平面誤差對(duì)比結(jié)果
根據(jù)上表1可知,在測(cè)試過(guò)程中,三種方法均存在平面誤差,其中所提方法的平面誤差最低,最高值為0.089米,其余兩種方法的平面誤差遠(yuǎn)高于所提方法,表明所提方法在城市景觀建筑物全景3D模型紋理映射中精準(zhǔn)度高、性能好。
現(xiàn)階段城市景觀建筑物全景3D模型紋理映射存在失真、模糊、精準(zhǔn)度低以及效率低的問(wèn)題,提出城市景觀建筑物全景3D模型紋理映射方法,該方法首先制作城市景觀建筑物全景3D模型,對(duì)點(diǎn)云數(shù)據(jù)展開(kāi)去噪處理,其次運(yùn)用ICP算法對(duì)城市景觀建筑物的點(diǎn)云數(shù)據(jù)展開(kāi)精準(zhǔn)拼接,最后采用半球面等比約束算法重建模型的紋理映射,進(jìn)而實(shí)現(xiàn)城市景觀建筑物全景3D模型紋理映射。通過(guò)實(shí)驗(yàn)驗(yàn)證了該方法實(shí)現(xiàn)了對(duì)現(xiàn)有方法的優(yōu)化,其應(yīng)用價(jià)值更高。