任新宇,范 勇,李郁峰,段晶晶,劉 旭
(西南科技大學計算機科學與技術學院,四川 綿陽621010)
多視圖建筑場景建模作為基于圖像的三維建模研究熱點之一,僅依靠相機從多個視點拍攝室外建筑場景的多幅圖像,即可恢復該場景建筑逼真的三維模型。該方法所需設備簡單、易于操作,其重建結果被廣泛應用于數字化城市規劃、智能場景監控、機器人導航、虛擬現實等領域,特別是對街道等場景建筑體的垂立外側面(立面)的建模[1-2]。
多視圖建筑場景建模的一般方法是,通過特征檢測搜索稀疏的圖像特征點,再由視圖序列的特征點匹配完成攝像機標定,最終恢復這些稀疏點的空間三維坐標[3]。目前,該方法應用于立面建模時,以分割后的立面為重建目標構建模型,但均限于特征點的有效覆蓋規模,所恢復的三維點云并不能大面積地表示視圖立面,即只完成圖像的稀疏重建。有的通過三角面片來填補特征點間沒有重建的可見點,但插值誤差較大,填補點在透視層次上的遠近深度正確率低[4];有的通過人工規定特殊點計算矯正立面,不僅特殊點選擇苛刻,而且構建立面局限于單方向立面的紋理形狀矯正,如僅恢復沿街方向的建筑立面等[5-6];有的在一般方法上引入面掃描來增加稠密點,但掃描方向計算困難,需要慣性導航系統(Inertial Navigation System,INS)、全球定位系統(Global Positioning System,GPS)等輔助設備,稠密點重建精度不高[7]。這些立面建模的方法未能充分利用三維稀疏點的空間結構信息,且對多方向紋理立面的重建誤差較大,設備成本高、要求嚴格,系統龐大。
針對此問題,本文提出一種利用地基投影法進行建筑場景立面建模的新方法。該方法計算稀疏點并以此同時完成地基線計算和立面矯正,充分利用地基線方位信息完成立面生長與模型融合。
地基線在建筑學中被用于表示建筑體的俯視輪廓和外墻體方位。本文將其引入視覺重建,主要用以計算建筑立面的地理布局,同時提供場景空間擴展的方位延伸關系。計算出場景地基線與矯正立面后,為矯正立面賦予其所在地基線的方位信息,可快速、高效地建立場景建筑的立面模型。以普通數碼相機圍繞建筑場景拍攝的圖像序列為輸入數據,要求拍攝目標清晰可見。利用地基投影法的建模算法流程如圖1 所示。

圖1 利用地基投影法的建模算法流程
原始圖像序列存在不利于特征識別的噪聲,需首先進行圖像預處理,以獲得幾何、紋理特征清晰的圖像。本文采用平滑濾波與輪廓增強[8]的預處理方法,圖2 為原圖添加5%高斯噪聲后的建筑場景圖像及其預處理結果。

圖2 圖像預處理
然后結合數學形態學的分水嶺算法對圖像進行場景分割[9-10],分割出建筑主體目標的像素區域,使研究區域縮小到分割結果圖像,提高目標立面拾取速度與精度;最后對建筑區域檢測水平線,根據其消失點分類將建筑再分割成若干有序立面。預處理后的立面如圖3 所示。

圖3 對圖2(b)的立面分割處理
預處理后的圖像序列,用尺度不變特征轉換(Scale Invariant Feature Transform,SIFT)方法[11]檢測出稀疏的2D特征點,這些特征點落在顏色或輪廓變化劇烈的位置,如棱線、拐角等處。通過以下步驟恢復2D 特征點所對應的空間三維坐標,即3D 稀疏點:
Step1將序列I分成若干組連續視圖,保證每組第一幅和最后一幅視圖有一半以上的重疊場景,并對每組內的視圖兩兩匹配2D 特征點,得到表征同一空間點的匹配點對。
Step2對組內每3 幅相鄰圖像Ii,Ii+1,Ii+2的匹配點建立對應,計算出這3 幅視圖間表征同一空間點的對應點對。
Step3由基于絕對二次曲面的自標定位算法[12],利用對應點對,計算出Ii,Ii+1,Ii+2的攝像機參數Pi,Pi+1,Pi+2,及對應點對所表征的3D 稀疏點S(Ii,Ii+1,Ii+2)。
Step4添加視圖Ii+3,Ii+4,對Ii+2,Ii+3,Ii+4重復Step2、Step3,計算3D 稀疏點S(Ii+2,Ii+3,Ii+4)。
Step5重復Step4,直到序列結束,得到輸入序列的初始3D 稀疏點集S(I)。
為提高精度,本文使用隨機抽樣一致(Random Sample Consensus,RANSAC)方法對S(I)進行坐標預處理,去除S(I)中偏差較大的異常點和偏遠點,使坐標更多地集中在建筑立面區域上。此時,得到的3D 稀疏點只能表示圖像極少數像素點的空間位置,并不能覆蓋全部場景。利用這些僅有的3D 稀疏點,分別計算場景地基線與矯正立面,從而恢復稠密點構成的3D 面結構。
得到稀疏點后,由以下步驟計算每幅視圖場景地基線:
Step1計算每幅視圖的一個垂下特征向量,即一個與地面垂直且指向下的三維方向向量。首先通過Hough 直線檢測計算出立面上一條豎直方向的特征線,如建筑體的側棱;然后搜索到若干位于或緊鄰該特征線的3D 稀疏點(本文緊鄰范圍閾值為5 像素);再由這些點擬合空間直線并計算其單位方向d;對若干特征線同理操作后,按式(1)計算該視圖最終的垂下特征向量n:

其中,M為特征線總數;
Step2將3D 稀疏點S={(xi,yi,zi)|i=1,2,…,N}沿垂下特征向量n=(a,b,c)向地平面做二維投影累計,N為稀疏點數。設S坐標系為O-XYZ,Z=(0,0,1)。構造式(2)旋轉矩陣R:

由式(3)求S投影累計:

Step3對圖I上由2.1 節分割的每個立面Fi,分別計算其所含3D 稀疏點得到的投影累計Si’后,由最小二乘法將Si’分段擬合為線段Bi,并順序拼接所有的擬合線段,形成圖I連續唯一的場景地基線B,B可直觀地表示場景建筑外立面位置與地面布局。圖4 為對圖2 擬合的場景地基線B={B1,B2}。

圖4 圖2(b)的場景地基線
僅用3D 稀疏點的度量信息,可快速矯正視圖上投影失真的立面區域,得到具有真實紋理結構的矯正立面;然后,根據地基線的方位參數快速完成3D 模型的立面生長,即賦予矯正立面所有像點準確的空間3D 坐標,從而恢復該視圖的建筑場景三維結構。
Step1設立面Fi上2D 特征點及其對應3D 稀疏點的點對
Step2記

當N取4 時,記式(4)為:

即有:

對全體點對根據式(6),可求得RANSAC 條件下最佳的點變換M。
Step3由式(7)將點變換M作用于Fi圖像區域的所有像素點(xi,yi)(i=1,2,…,T;T為點總數),得到該立面的矯正點集Srected={(xi’,yi’)}。

對Srected進行分段3 次Hermite 插值填充空隙,得到Fi更完整的矯正立面Fi’,如圖5 所示。

圖5 對圖3(b)的矯正
Step4在Fi’上搜索垂下特征向量n所對應的2D 特征方向n’,并確定一個垂直于n’的掃描方向nscan;沿n’按nscan掃面Fi’的點,在Fi’的地基線上逐行建立該立面的3D 坐標(設坐標系為O-XYZ,則以地基線平面建立X、Y坐標,以順序掃描的行值建立Z坐標),及映射像素點的紋理色;依次掃描該視圖上所有立面,即能在同一地基線平面上建立該視圖場景建筑的3D 模型。
在立面生長時,為保證相鄰立面的準確對接,本文通過稀疏點校驗,以稀疏點與地基線上其所對應的投影點為位置約束,剔除鄰接立面的重復點。
視圖序列得到的若干立面模型,需要進行尺度調整和模型融合。由于稀疏點重建中每組連續視圖得到的立面模型尺度相同,因此可先合并出每組視圖對應的局部模型,再將局部模型融合成全部視圖序列的一個建筑場景整體模型。該層次融合過程如圖6 所示。

圖6 場景模型層次融合
在每組連續視圖中,選取位置居中的視圖為基準圖,根據其他鄰接視圖地基線與基準圖地基線的二維拼接,依次將其他視圖的模型歸納到基準圖的場景模型之中,得到該組視圖的一個局部模型;然后,以包含視圖最多的局部模型為基準模型,歸一化其他局部模型的尺度與基準模型一致;再根據局部模型間存在匹配對應的3D 點,檢測各自地基線上的匹配對應部分,調整各局部模型的坐標系使其地基線拼合成唯一的場景地基線,據此完成局部模型合攏;最后,按式(8)對合攏模型上的重復點完成場景模型的融合:

其中,pi是N個局部模型中需要融合成唯一點p的點;disi是地基線平面上pi的投影點到基準模型地基線的距離。
本文在VS2010 下使用VC++、OpenCV 與GSL 科學計算庫實現算法,為檢驗算法有效性與準確性,分別采用Merton College 的2 組室外建筑場景圖像序列,應用本文算法進行三維立面重建。測量模型結果的立面角度和線比例,以定量評價建模精度。立面模型如圖7、圖8 所示,其圖像尺寸分別為1 024×768 像素、900×768 像素,立面左起有序編號。

圖7 Merton CollegeⅡ圖像序列的立面模型

圖8 Merton CollegeⅢ圖像序列的立面模型
表1 所示模型中的立面夾角誤差通過立面對應地基線(圖4、圖8(b))的夾角來測量,立面1、立面2、立面3 分別對應地基線段B1、B2、B3。圖8 模型的平均角度誤差比圖7 模型大,主要由于圖8 每個立面的像素點和稀疏點均較少,導致度量信息較少,地基線方位擬合精度較圖7 低。

表1 模型立面的角度重建誤差 (o)
圖9 測量了圖7 模型中分別包含203 269 個和124 528 個成像點的左、右2 個立面的夾角誤差。橫坐標表示使用數量/基準點數所占的比例。左、右立面的稀疏點基準點數分別取149 個和64 個,記錄5 次實驗的誤差,每次實驗將使用的稀疏點減少20%,其中使用比例為100%時的誤差等于表1實驗的0.3。

圖9 圖7 稀疏點使用比例與立面角度重建誤差的關系
圖9 表明,稀疏點的使用比例在20%(即左右立面各使用30 個和13 個稀疏點,占總成像點的0.13%)以上時,立面角度的重建誤差在5°以內。立面夾角的誤差隨稀疏點使用比例增大而減少,且比例接近0 時趨近無窮大,這主要是由于立面方位信息建立在地基線上,3D 稀疏點數量越多,估算垂下特征向量越準確,計算擬合地基線的方位也越精確。
表2 測量了圖8(c)模型立面上4 條線段的長度比例,取多次測量均值,其中,L1和L2、L3和L4分別位于同型的窗戶。測量結果表明,本文算法對立面上線段長度比例的恢復誤差在1%以內,該誤差主要源自受成像尺寸影響的線段端點選擇不準確,以及垂下特征向量擬合誤差導致生長立面的掃面方向不嚴格平行于地基線。

表2 圖8(c)模型的線段長度比例重建誤差
實驗結果表明,地基投影算法能快速、高效地重建有正確角度、線比例結構的大尺度場景建筑立面模型,稀疏點占立面總像點0.13%以上時,地基投影法的立面角度重建誤差小于5°,線比例誤差在1%以內。在室外大場景建模工程的應用中,算法結果不僅能滿足以規整立面為重建目標、對窗臺等細部結構精度無嚴苛要求的實際需要,而且以該算法所得結果為基礎模型,針對缺失結構擴展更加完整、精細的系統。
本文將場景地基線引入建筑場景的多視圖立面建模,提出了地基投影算法,同時計算地基線與矯正立面,并利用地基線提供的立面空間方位信息,完成立面的三維生長與局部模型融合,從而便捷、有效地重建立面模型,避免了通常建模系統局限于稀疏重建與復雜設備的問題。實驗結果證明,在一定的稀疏點使用比例范圍內,本文算法能準確完成立面建模,所求的場景近似重建模型具有較高的立面角度和線比例重建精度,可滿足工程需要。在此基礎上,下一步工作將擴展補充缺失的紋理結構,精化場景模型,使之更適于高精度的大尺度場景建模。
[1]Wan Guowei,Noah S,Daniel C O,et al.Sorting Unorganized Photo Sets for Urban Reconstruction[J].Graphical Models,2012,74(1):14-28.
[2]劉培珺.基于圖像序列的建筑物模型重建技術研究與實現[D].杭州:浙江大學,2003.
[3]Xiao Jianxiong,Fang Tian,Zhao Peng,et al.Image-based Facade Modeling[J].ACM Transactions on Graphics,2008,27(5):495-504.
[4]戴嘉境.基于多幅圖像的三維重建理論及算法研究[D].上海:上海交通大學,2012.
[5]李 暢,劉亞文,胡 敏,等.面向街景立面三維重建的近景影像直線匹配方法研究[J].武漢大學學報:信息科學版,2010,35(12):1461-1465.
[6]代 勤,王延杰,韓廣良.基于改進Hough 變換和透視變換的透視圖像矯正[J].液晶與顯示,2012,27(4):552-556.
[7]Pollefeys M.Detailed Real-time Urban 3D Reconstruction from Video[J].International Journal of Computer Vision,2008,78(2):143-167.
[8]王啟帆,賈振紅,覃錫忠,等.基于像素領域信息的自適應圖像增強算法[J].計算機工程,2012,38(24):205-207.
[9]張桂梅,周明明,馬 珂.基于彩色模型的重構標記分水嶺分割算法[J].中國圖象圖形學報,2012,17(5):641-647.
[10]謝 闖,李磊民.基于彩色圖像分割的路標檢測算法研究[J].西南科技大學學報,2013,27(3):87-91.
[11]胡海青,譚建龍,朱亞濤,等.改進SIFT算法在文字圖像匹配中的應用[J].計算機工程,2013,39(1):239-243.
[12]Pollefeys M,Gool L,Vergauwen M,et al.Visual Modeling with a Hand-held Camera[J].International Journal of Computer Vision,2004,59(3):207-232.