何偉,童衛(wèi)青,2
(1.華東師范大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,上海 200062;2.上海商務(wù)數(shù)碼圖像技術(shù)有限公司,上海 200041)
洞窟壁畫的數(shù)字化保存不但可以有效地保護(hù)文物,還可以利用這些數(shù)字化數(shù)據(jù)進(jìn)行數(shù)字文物展覽等二次開發(fā)利用.國(guó)家文物局發(fā)布的《古建筑壁畫數(shù)字化測(cè)繪技術(shù)規(guī)程》規(guī)定,壁畫文物的一級(jí)影像采樣分辨率不能低于300 DPI (Dots Per Inch).這意味著對(duì)幅面比較大的壁畫,目前任何高分辨率的相機(jī)都無法只通過拍攝一張圖像就可以采集到壁畫的全部數(shù)據(jù).
因此,一般先對(duì)壁畫進(jìn)行網(wǎng)格化分割;然后對(duì)每個(gè)小網(wǎng)格區(qū)域用高分辨率相機(jī)進(jìn)行圖像采集;最后把每個(gè)網(wǎng)格區(qū)域圖像 (一般有上百幅圖像) 拼接成一幅全景圖像.全景圖像拼接是指把多視角、低分辨率、局部重疊的系列圖像,通過某種圖像處理方法拼接成一張具有高分辨率、寬視角的圖像.這是一個(gè)比較熱門的研究領(lǐng)域,其已在文物數(shù)字化保存、遙感圖像、土地資源監(jiān)控[1]、氣象云圖、車載全景影像[2-3]、醫(yī)學(xué)影像[4]、紅外目標(biāo)追蹤[5]等許多領(lǐng)域得到了實(shí)際應(yīng)用.圖像拼接大概可以分成兩大類:一類是在二維圖像空間進(jìn)行拼接;另一類是在三維圖像空間進(jìn)行拼接.
在二維圖像空間進(jìn)行圖像拼接研究得比較充分.早期比較經(jīng)典的圖像拼接技術(shù)是1970 年由Anuta等[6]提出的基于Fourier-Mellin 變換的圖像配準(zhǔn)算法.隨后,Kuglin等[7]和De Castro等[8]從相位相關(guān)性角度提出了圖像匹配法,該方法在很大程度上克服了平移和旋轉(zhuǎn)變換對(duì)圖像拼接的影響.1993 年,Djamdji等[9]提出了基于圖像小波變換特征點(diǎn)的圖像配準(zhǔn)算法.1999 年,SIFT (Scale-Invariant Feature Transform) 由Lowe[10-11]提出.SIFT 不僅可以提取穩(wěn)定的圖像特征,還可以用來描述這些特征,對(duì)圖像分辨率、仿射變換、光照和噪聲等變化具有非常強(qiáng)的魯棒性;此后SIFT 特征被廣泛應(yīng)用于圖像配準(zhǔn),成為圖像拼接中具有里程碑意義的技術(shù).2004 年,基于角點(diǎn)檢測(cè)的Harris 算法在圖像拼接中得到應(yīng)用[12].2006 年,Bay等[13]提出了基于積分圖像和盒子濾波器的SURF (Speeded-up Robust Features) 算法,該算法降低了特征提取的運(yùn)算量,提高了圖像配準(zhǔn)的效率.2011 年,Rubble等[14]提出了ORB (Oriented FAST and Rotated BRIEF)算法,該算法的性能接近于SIFT,但處理速度要明顯高于SIFT.Brown等[15]從空間平面間的映射關(guān)系角度提出了非常新穎的AutoStitch 拼接法,該方法的核心是采用了全局單應(yīng)性對(duì)齊處理;由于該方法只使用1 個(gè)單應(yīng)性矩陣,所以對(duì)有景深的圖像拼接會(huì)產(chǎn)生重影.隨后Gao等[16]提出了DHW (Dual-Homography Warping) 算法,該算法將圖像劃分成遠(yuǎn)近2 個(gè)層面,用2 個(gè)單應(yīng)性矩陣分別對(duì)前景圖像和背景圖像進(jìn)行變換,減少了圖像內(nèi)部的景深差異,解決了大部分場(chǎng)景的無縫拼接問題.為了提高處理視差、增加局部變形上限和獲取更好的圖像對(duì)齊效果,Lin等[17]提出了采用多個(gè)仿射變換的SVA (Smoothly Varying Affine)算法.2013 年,Zaragoza等[18]提出了APAP (As-Projective-As-Possible)算法,該算法將圖像劃分為長(zhǎng)寬一致的小網(wǎng)格,讓每個(gè)小網(wǎng)格單獨(dú)用1 個(gè)單應(yīng)性矩陣對(duì)齊,增加了局部變化的自由度,從而提高了拼接效果.2016 年,Chen等[19]提出了GSP (Global Similarity Prior) 算法,該算法在APAP 基礎(chǔ)上增加了全局轉(zhuǎn)換矩陣選取方面的處理,對(duì)直線對(duì)齊進(jìn)行約束以獲取最佳角度,提高了圖像拼接性能.隨著人工神經(jīng)網(wǎng)絡(luò)技術(shù)的高速發(fā)展,該技術(shù)在圖像拼接中也開始得到了初步應(yīng)用[20-23].
在三維圖像空間對(duì)多視圖進(jìn)行全景圖拼接,其處理流程: 先把二維的多視圖轉(zhuǎn)換到三維成為三維圖像;然后再從三維空間正投影到二維空間,從而獲得一張二維全景圖.這方面的研究起步較晚,研究成果不多.2016 年,劉禮銘[24]提出了一個(gè)基于三維重建的壁畫數(shù)字化框架,首次在平面壁畫的數(shù)字化中應(yīng)用了三維重建技術(shù).由于手工拓片方式對(duì)碑刻文物會(huì)帶來一定程度的損壞,國(guó)家禁止對(duì)珍貴碑刻文物進(jìn)行手工拓片.因此,張園林[25]運(yùn)用三維模型對(duì)碑刻的數(shù)字拓片生成進(jìn)行了研究,開發(fā)了碑刻數(shù)字拓片生成系統(tǒng).為了降低三維重建算法得到的三維模型與ground-truth 數(shù)據(jù)之間的誤差,閆冰[26]對(duì)上述問題進(jìn)行了優(yōu)化處理研究,提高了重建模型的質(zhì)量.大部分基于圖像的三維重建方法是基于物體表面的紋理特征進(jìn)行的,當(dāng)物體表面紋理較弱時(shí)重建后的三維模型將缺乏精細(xì)性,對(duì)此李敏[27]提出了基于非朗伯體的光度立體的三維重建算法.針對(duì)多視圖三維重建的特征匹配環(huán)節(jié)所存在的匹配時(shí)間復(fù)雜度較高和魯棒性較差的問題,李淑芬[28]提出了基于局部幾何約束的自適應(yīng)特征匹配方法,從而使文物數(shù)字化更加快速和真實(shí).
對(duì)于大幅面平面壁畫的全景圖,可以使用上述的基于二維圖像空間和三維圖像空間的方法進(jìn)行生成.但對(duì)于大幅面非規(guī)則圓柱面壁畫的全景圖生成,根據(jù)研究調(diào)查目前似乎還停留在使用二維空間的圖像拼接方法.對(duì)于近似平面的壁畫,在拍攝時(shí)只要讓相機(jī)與壁畫保持垂直和恒定距離,那么采用上述基于特征配準(zhǔn)的拼接算法就可以獲得比較好的全景圖.但是,對(duì)于大幅面非規(guī)則圓柱面壁畫就不能采用這樣的方法,這是一個(gè)比較有挑戰(zhàn)性的課題.本文提出了能有效生成大幅面非規(guī)則圓柱面壁畫的數(shù)字全景圖像的方法 (Cylindrical Panoramas Generation,以下簡(jiǎn)稱CPG 算法).CPG 算法處理流程: ①按恒定距離采集兩兩重疊的多視角圖像;② 檢查出多視角圖像的SIFT 特征的匹配點(diǎn);③從匹配點(diǎn)獲得稀疏點(diǎn)云;④ 從稀疏點(diǎn)云獲得稠密點(diǎn)云;⑤ 根據(jù)稠密點(diǎn)云進(jìn)行三維建模;⑥ 通過單應(yīng)矩陣把多視圖的紋理信息映射到三維模型的三角片面上,生成壁畫的三維圖像;⑦ 將非規(guī)則圓柱面的三維圖像映射到其外接理想圓柱面上;⑧ 將理想圓柱面按最佳對(duì)稱軸進(jìn)行展開,并正投影到最佳平面,從而獲得二維全景圖像.
本文CPG 算法: 第一階段通過采用圖像集構(gòu)建其對(duì)應(yīng)的三維模型;第二階段通過三維模型生成二維全景圖.圖1是CPG 算法的處理流程圖.在CPG 算法的三維重建處理中,對(duì)圖像的重疊率有一定的要求,對(duì)于平面圖像只需要達(dá)到50%的重疊率;而對(duì)于圓柱面圖像,其重疊率需要達(dá)到50%~70%.
圖1 CPG 算法流程圖Fig.1 Flow chart of CPG algorithm
CPG 算法的三維重建處理流程如下.
1) 圖像匹配點(diǎn)
運(yùn)用SIFT 算法對(duì)每張圖像提取特征點(diǎn),并通過基于局部區(qū)域的暴力匹配方法獲取每幅圖像的匹配點(diǎn).
2) 稀疏點(diǎn)云
依據(jù)匹配點(diǎn),采用SFM (Structure From Motion)[29]算法生成稀疏點(diǎn)云.SFM 算法能夠利用2 個(gè)或2 個(gè)以上場(chǎng)景恢復(fù)出相機(jī)的內(nèi)在參數(shù)和外部參數(shù).SFM 算法尋找一對(duì)最合適的圖像(這2 幅圖像有部分區(qū)域是重疊的)作為基準(zhǔn)視圖,以該基準(zhǔn)視圖的三維點(diǎn)為基礎(chǔ),一邊估算相機(jī)姿態(tài)一邊不斷加入新視圖的三維點(diǎn)來迭代拓展,并利用光束平差法BA (Bundle Adjustment)[30]來最小化每次加入新視圖所帶來的誤差.
3) 稠密點(diǎn)云
僅僅得到稀疏點(diǎn)云還不足以重建三維模型.對(duì)此,本文CPG 算法采用了Shen[31]提出的基于深度圖融合的稠密點(diǎn)云生成方法: 首先,對(duì)每一個(gè)圖像的像素通過空間傳播和隨機(jī)分配這兩個(gè)操作步驟,計(jì)算其深度圖;然后再將其融合來表示目標(biāo)場(chǎng)景,即生成目標(biāo)場(chǎng)景的稠密點(diǎn)云.
4) 三維建模
根據(jù)文獻(xiàn)[32]提供的利用可視信息來確定弱支持表面的方法,將稠密點(diǎn)云進(jìn)行基于Delaunay三角剖分,以構(gòu)成表面的三角網(wǎng)格;然后利用穩(wěn)定的三角結(jié)構(gòu)構(gòu)建出能還原表面細(xì)節(jié)的模型.
5) 紋理映射和色彩融合
Waechter 等[33]在 2014 年提出了基于馬爾可夫隨機(jī)場(chǎng)的紋理映射方法,該方法首先對(duì)三角網(wǎng)格面片的紋理圖像進(jìn)行挑選,再對(duì)全局和局部的顏色進(jìn)行色彩融合.本文的CPG 算法采用了該紋理映射方法來進(jìn)行紋理映射處理.
通過以上步驟,就完成了CPG 算法的第一階段的三維重建任務(wù),達(dá)到了利用現(xiàn)有算法進(jìn)行二次開發(fā)的目的.下一章將對(duì)CPG 算法的第二階段—全景圖像生成算法做詳細(xì)介紹,這也是本文CPG 算法的重點(diǎn)部分.
由于實(shí)際洞窟里的石柱形狀往往不是理想圓柱面,并且這些石柱面也不光滑,常常有微小的凹凸不平.因此,從數(shù)學(xué)角度來說,這些非規(guī)則圓柱面是無法展開成平面的.
鑒于此,本文提出了CPG 的第二階段算法: 利用第一階段所生成的三維模型把非規(guī)則圓柱面圖像展開成平面全景圖像.第二階段算法的具體流程如圖2 所示,其主要步驟: ①首先把實(shí)際非規(guī)則圓柱面擬合成1 個(gè)理想的圓柱面;② 然后把非規(guī)則圓柱面上的圖像信息映射到理想圓柱面上;③在世界坐標(biāo)系中,把理想圓柱面展開成空間平面;④ 最后把空間平面按指定圖像分辨率要求投影成全景圖像.下面按上述4 個(gè)步驟介紹具體的處理方法.
圖2 全景圖生成流程圖Fig.2 Flow chart of panorama generation
由第1 章可以得到實(shí)際的非規(guī)則圓柱面壁畫的三維圖像Icylinder,該三維圖像提供了空間任意點(diǎn)的六維信息(x,y,z,R,G,B),即該點(diǎn)的空間坐標(biāo) (x,y,z)和彩色信息 (R,G,B) .本節(jié)將介紹如何找到1 個(gè)理想圓柱面Iics,使其非常接近于非規(guī)則圓柱面Icylinder.
不失一般性,這個(gè)理想圓柱面Iics可以由圖3來表示.圖3中,坐標(biāo)系Oxyz是世界坐標(biāo)系;Rics為Iics的半徑;P0(x0,y0,z0)是Iics的中心軸線上的參考點(diǎn);(l,m,n)是Iics的中心軸線的方向數(shù),記為P(x,y,z)是Iics面上的任意點(diǎn).根據(jù)圓柱面的幾何性質(zhì),只要確定了Iics的半徑Rics、中心軸線和其參考點(diǎn)P0,那么Iics就可被完全確定.由于Iics的中心軸線可以通過其方向數(shù) (l,m,n) 來確定,所以只要求出(x0,y0,z0,l,m,n,r) 這7 個(gè)參數(shù)值就可以獲得Iics.理想圓柱面可以看作到1 個(gè)定向中心軸線距離等于某常數(shù)的點(diǎn)的集合,由此可得Iics的參數(shù)方程
圖3 參數(shù)方程的幾何表達(dá)Fig.3 Geometric expression of parametric equation
對(duì)式(3)采用最大似然一致性算法MLESAC (Maximum Likelihood Estimation Sample And Consensus)[34]進(jìn)行處理,就可以得到理想圓柱面Iics的方程的解,從而找到三維圖像Icylinder的1 個(gè)最佳的擬合理想圓柱面Iics.
2.1 節(jié)解決了由實(shí)際圓柱面擬合成理想圓柱面的問題.本節(jié)介紹如何把實(shí)際圓柱面映射到理想圓柱面.
第一步,對(duì)實(shí)際圓柱面和理想圓柱面進(jìn)行坐標(biāo)變換,使Iics的中心軸線laxis和參考點(diǎn)P0(x0,y0,z0)分別與世界坐標(biāo)系的z軸和原點(diǎn)O重合.由圖4 可以獲得2 個(gè)參數(shù)的計(jì)算公式,具體為
式(4)—(5)中:θ是中心軸線laxis的方向向量與z軸的夾角;是z軸的單位向量;是三維模型的旋轉(zhuǎn)軸.
圖4 圓柱面旋轉(zhuǎn)Fig.4 Rotation of cylindrical surface
根據(jù)羅德里格斯旋轉(zhuǎn)公式所計(jì)算出的旋轉(zhuǎn)矩陣Rrotation,相應(yīng)公式為
以及平移矩陣Rtranslation(平移矩陣為軸心到坐標(biāo)原點(diǎn)的偏移量),可以得到實(shí)際圓柱面坐標(biāo)變換前后的關(guān)系式
式(6)中:px,py,pz分別為向量的x,y,z坐標(biāo);
完成實(shí)際圓柱面坐標(biāo)的變換后,第二步便是找到實(shí)際圓柱面上與理想圓柱面上點(diǎn)與點(diǎn)之間的映射關(guān)系.如圖5 所示,設(shè)P(x,y,z) 為坐標(biāo)變換后實(shí)際圓柱面I′cylinder上的點(diǎn),Ocircle(0,0,z) 為在坐標(biāo)軸z上與點(diǎn)P具有相同z坐標(biāo)的點(diǎn),p′(x′,y′,z) 為直線POcircle與I′ics的交點(diǎn),即點(diǎn)P在理想圓柱面上的映射點(diǎn),則直線POcircle方程和圓方程分別為
圖5 實(shí)際三維點(diǎn)映射至理想圓柱面Fig.5 Map the actual 3D points to ideal cylindrical surface
解式(9)—(10)就可以獲得P的映射點(diǎn)p′(x′,y′,z) .實(shí)際圓柱面空間點(diǎn)映射至理想圓柱面的具體設(shè)計(jì)見算法1.
2.2 節(jié)完成了把實(shí)際圓柱面向理想圓柱面I′ics的映射處理.本節(jié)介紹如何將理想圓柱面I′ics在世界坐標(biāo)系中展開.
圖6是理想圓柱面映射至世界坐標(biāo)系中的平面展開原理圖.圖6 中,為展開后的展開平面,Lz是平面與I′ics的切線,沿著切線Lz把I′ics展開成平面PICS(圓柱體表面展開所得到的平面),即展開在平面上,平面PICS與坐標(biāo)平面zy平行.設(shè)I′ics上的點(diǎn)為p(xp,yp,zp),其在展開平面PICS上對(duì)應(yīng)點(diǎn)為,則由圖6 可知,這2 個(gè)點(diǎn)的對(duì)應(yīng)關(guān)系符合公式
圖6 理想圓柱面映射至世界坐標(biāo)系中的平面Fig.6 Map the ideal cylindrical surface to a plane in world coordinates
這里需要指出的是,若三角網(wǎng)格被展開線Lz所穿過,那么其上的點(diǎn)必須在展開平面PICS的左右兩端都要出現(xiàn),以保證圖像在左右兩邊都保持完整,這是由于柱面的封閉性所決定的.
理想圓柱面展開的具體實(shí)現(xiàn)流程見算法2.
到2.4 節(jié)為止,把實(shí)際圓柱面壁畫圖像在世界坐標(biāo)系中展開成了1 幅三維空間的平面圖像.本節(jié)介紹如何把世界坐標(biāo)系中的三維平面圖像Isp映射到二維空間的全景圖像Ipano.
把三維空間的平面圖像Isp映射到二維圖像空間的全景圖像Ipano需要解決兩個(gè)問題: 第一個(gè)問題,Isp在世界坐標(biāo)系中進(jìn)行三維建模時(shí),其坐標(biāo)是沒有具體單位的 (或者稱抽象單位),而它投影到二維圖像空間后的Ipano圖像,采用的單位是像素,為此要處理從抽象度量單位到像素度量單位的轉(zhuǎn)化;第二個(gè)問題,Isp是在世界坐標(biāo)系下的空間平面圖像,它是建立在三維模型之上的 (這里采用的是三角面片三維表明建模),而全景圖像Ipano是在二維圖像平面上,它采用的是整數(shù)網(wǎng)格點(diǎn)平面.因此,需要處理這兩種不同坐標(biāo)系下的投影變換,即從連續(xù)三維空間向離散圖像空間的轉(zhuǎn)化.
上述的第一個(gè)問題其實(shí)等價(jià)于如何確定全景圖像Ipano的分辨率M×N,即不需要知道Isp圖像中的x,y,z坐標(biāo)的實(shí)際單位,只要能把Isp圖像投影到具有指定分辨率M×N的圖像平面上就行.如果知道實(shí)際圓柱面的最大半徑Rmax(inch)、最大高度Hmax(inch)和最低采樣分辨率(Sample Resolution,SR)RSRmin(DPI),就能算出全景圖像Ipano的分辨率 (M ×N) 像素(pixel),于是就解決了第一個(gè)問題.
全景圖像Ipano的分辨率M×N由
確定后,就按圖7 所示的方法: 先將三維空間平面Isp圖像上的點(diǎn)利用主成分分析PCA (Principal Component Analysis) 算法,將空間三維點(diǎn)降為二維的點(diǎn),而這些二維點(diǎn)依舊保持著三維點(diǎn)所有的三角網(wǎng)格的關(guān)系;然后以單個(gè)三角網(wǎng)格為單位把紋理投影至以32 位浮點(diǎn)數(shù)據(jù)為類型的圖像I′上,此時(shí)該圖像在數(shù)學(xué)意義上仍是連續(xù)的;最后對(duì)連續(xù)圖像I′進(jìn)行采樣,生成分辨率大小為 (M ×N) 像素、8 位整型數(shù)據(jù)結(jié)構(gòu)的圖像.圖7 坐標(biāo)系僅用于表示三維空間;坐標(biāo)系的方向不影響三維空間投影,任意方向皆可做到這一點(diǎn).
圖7 正投影示意圖Fig.7 Schematic diagram of orthographic projection
為了評(píng)估本文所提出的非規(guī)則圓柱面壁畫全景圖像生成算法 (CPG 算法) 的有效性,本文首先制作了4 個(gè)典型圖像集,這4 個(gè)圖像集各自對(duì)應(yīng)的實(shí)物圖見圖8;然后在這4 個(gè)圖像集上分別運(yùn)行CPG 算法和其他3 個(gè)典型算法,以此來比較和評(píng)估這4 種算法的性能.其他3 個(gè)典型算法如下.
(1) OpenCV 里的Stitching 算法 (以下簡(jiǎn)稱OpenCV 算法),該方法可以把1 組相鄰部分具有重疊的圖像拼接成1 幅全景圖像.
(2) OpenPano 算法是文獻(xiàn)[15]里提出的生成全景圖像的方法,該方法: ①先從輸入圖像中提取特征點(diǎn)和匹配點(diǎn);② 選取匹配點(diǎn)最多的前幾個(gè)圖像作為候選圖像,利用Ransac 尋找每個(gè)圖像對(duì)的單應(yīng)矩陣,使用概率模型驗(yàn)證圖像是否匹配;③尋找匹配圖像的連接部分,對(duì)每個(gè)連接用光束平差法對(duì)相機(jī)參數(shù)進(jìn)行優(yōu)化處理,最后使用多波段混合渲染出全景圖.
(3) PhotoShop 算法,該方法是PhotoShop 軟件提供的,能將1 組相鄰部分具有重疊的圖像拼接成1 幅全景圖像的算法.
圖8 4 個(gè)圖像集各自對(duì)應(yīng)的實(shí)物圖Fig.8 Corresponding physical images of four image sets
1) 圖像集A
圖像集A是對(duì)虛擬圓柱面圖像用虛擬相機(jī)進(jìn)行采集而得到的106 張分辨率為(1 542 × 926)像素的圖像,該圖像集中相鄰圖像都有50%以上的重疊.其制作過程: 先用3ds Max 軟件建立1 個(gè)三維圓柱面模型;然后把數(shù)字中國(guó)地圖①數(shù)字中國(guó)地圖來源于網(wǎng)站map.ps123.net,地圖審圖號(hào)為GS(2011)1 537 號(hào).映射到所建的三維圓柱面上 (圖8 (a));最后用具有飛思IQ180 參數(shù)的虛擬相機(jī) (焦距為80 mm) 進(jìn)行采集.圖9 為圖像集A 的部分樣例,即后續(xù)實(shí)驗(yàn)部分用于放大比較的區(qū)域.
圖9 圖像集A 的部分樣例Fig.9 Examples of image set A
2) 圖像集B
圖像集B是從新疆克孜爾第17 窟–甬道的近似圓柱面頂部 (圖8(b)) 采集的143 張分辨率為(4 032 ×3 024)像素的圖像.該甬道空間較為狹小,頂部壁畫近一半以上有缺損.圖10 為圖像集B 的部分樣例,該圖像集中相鄰圖像都有50%以上的重疊,展示的區(qū)域即后續(xù)實(shí)驗(yàn)部分用于放大比較的區(qū)域.
圖10 圖像集B 的部分樣例Fig.10 Examples of image set B
3) 圖像集C
圖像集C是從新疆克孜爾新1 窟–后室的近似圓柱面頂部(圖8 (c))采集的142 張分辨率為(6 000 ×4 000)像素的圖像.圖8 (c)是從其頂部不同區(qū)域拍攝的3 張頂部壁畫圖像,該頂部約有1/4 部分有缺損.圖11 為圖像集C 的部分樣例,該圖像集中相鄰圖像都有50%以上的重疊,所展示的區(qū)域即后續(xù)實(shí)驗(yàn)部分用于放大比較的區(qū)域.
4) 圖像集D
圖像集D是從新疆克孜爾17 窟–前室的近似圓柱面頂部(圖8 (d))采集的124 張分辨率為(6 000 ×4 000)像素的圖像.圖8 (d)是從其頂部不同區(qū)域拍攝的3 張頂部壁畫圖像,該頂部約有1/2 部分有缺損.圖12 為圖像集D 的部分樣例,該圖像集中相鄰圖像都有50%以上的重疊.
圖11 圖像集C 的部分樣例Fig.11 Examples of image set C
圖12 圖像集D 的部分樣例Fig.12 Examples of image set D
本文實(shí)驗(yàn)首先在圖像集A 上運(yùn)行CPG 算法,目的是考察該算法對(duì)理想圓柱面上的紋理進(jìn)行三維拼接和全景圖展開的效果.圖13 (a)是圖像集A 的原始三維圓柱面地圖,圖13 (b)是由CPG 算法生成的三維圓柱面地圖,從圖13 (b)中可以看到,CPG 算法可以完整地從106 幅重疊的二維圖像中生成其三維圖像.
然后再對(duì)其全景展開圖進(jìn)行比較分析.圖14 (a)是圖像集A 對(duì)應(yīng)的三維圓柱面地圖的原始二維地圖,即圖8(a)所示的映射到三維模型的表面紋理;圖14 (b)是通過CPG 算法對(duì)106 幅采集圖處理后生成的二維全景圖.對(duì)比圖14 的這2 幅圖,可以得到結(jié)論: 全景展開圖中看不出106 幅采集圖像的拼接痕跡和色彩變化,也看不出字符、線條出現(xiàn)模糊和扭曲變形的情形.
根據(jù)此實(shí)驗(yàn),可以發(fā)現(xiàn)OpenCV 算法、OpenPano 算法和PhotoShop 算法都無法將數(shù)據(jù)集A 拼接成1 幅全景圖像.為了與CPG 算法比較,本文從圖像集A 中抽取東經(jīng)110°附近的8 張圖像作為圖像集A 的子集,用于測(cè)試OpenCV 算法、OpenPano 算法和PhotoShop 算法.測(cè)試后發(fā)現(xiàn),OpenCV 算法連這個(gè)子集都無法正常運(yùn)行,OpenPano 算法和PhotoShop 算法的運(yùn)行結(jié)果分別如圖15 的左圖和圖16的左圖所示,其各自右圖是左圖上紅色區(qū)域的放大圖.
圖13 三維圓柱面地圖Fig.13 3D cylindrical map
圖14 原始圖和CPG 算法的全景展開圖比較Fig.14 Comparison between the original image and panoramic expanded image of CPG algorithm
圖15 OpenPano 算法在圖像集A 的子集上生成的全景圖Fig.15 Panorama generated by OpenPano algorithm on a subset of image set A
圖16 PhotoShop 算法在圖像集A 的子集上生成的全景圖Fig.16 Panorama generated by Photoshop algorithm on a subset of image set A
從圖15、圖16和圖17 可以明顯看出,地圖上的經(jīng)線在PhotoShop 計(jì)算出的結(jié)果圖中出現(xiàn)了斷裂.這說明 PhotoShop 算法對(duì)線條的拼接效果不太理想;而在OpenPano 的結(jié)果圖中,該條經(jīng)線被較好地拼接上了,但是在線段下部出現(xiàn)了重影現(xiàn)象.圖17 的左邊是由CPG 生成的全景圖,右邊是左圖上紅色區(qū)域的放大圖.從圖17 可以看出,該條經(jīng)線連接正常,也沒有出現(xiàn)重影.
圖17 CPG 算法生成的全景圖的局部放大圖Fig.17 Partial enlargement of panorama generated by CPG algorithm
表1 所示是圖像集A 在4 種算法中的結(jié)果對(duì)比.由表1 對(duì)比結(jié)果可知,在復(fù)原完整性、拼接處痕跡、圖像變形、圖像重影、圖像模糊和色差這6 項(xiàng)評(píng)估指標(biāo)上,CPG 算法表現(xiàn)最佳;此外,在算法運(yùn)算的時(shí)間復(fù)雜度中,由于其余方法無法重建出完整的全景圖,因而本實(shí)驗(yàn)中時(shí)間復(fù)雜度不具有可比性.表1 中:“復(fù)原完整性”是指算法對(duì)圖像集中所有圖像復(fù)原的程度;“拼接處痕跡”評(píng)價(jià)的是相鄰圖像拼接處是否存在點(diǎn)或線未對(duì)齊的情況;“圖像變形”是指圖像是否存在透視現(xiàn)象或者扭曲的情況;“圖像重影”是指圖像是否存在紋理重復(fù)的情況;“圖像模糊”指圖像是否存在不清晰的情況;“色差”是指不同圖像間是否存在色彩變化.
表1 圖像集A 在4 種算法中的結(jié)果對(duì)比Tab.1 Comparison of results from image set A with four algorithms
本實(shí)驗(yàn)在圖像集B 上分別運(yùn)行和考察了CPG 算法、OpenCV 算法、OpenPano 算法和PhotoShop算法,目的是考察這些算法對(duì)實(shí)際類柱面上的紋理進(jìn)行三維拼接和全景圖展開的效果.
圖18是運(yùn)行CPG 算法所生成的三維圖像.從該圖可以看到,CPG 算法可以完整地重構(gòu)出洞窟壁畫的三維形狀和原始紋理.
圖18 由CPG 算法對(duì)圖像集B 進(jìn)行重建后的三維圖像 (3 個(gè)不同角度的截圖)Fig.18 3D image reconstructed by CPG algorithm from image set B (screenshots from three different angles)
圖19 為OpenCV 算法的運(yùn)行結(jié)果.從該圖可以看到,OpenCV 算法沒能生成出完整的全景圖像,有些區(qū)域丟失了;從其右圖(左圖紅色矩形框的放大圖)上可以看到,圖像在拼接處沒有拼接痕跡,但有一些彎曲變形.
圖19 OpenCV 算法在圖像集B 上生成的全景圖Fig.19 Panorama generated by OpenCV algorithm on image set B
圖20 為OpenPano 算法的運(yùn)行結(jié)果.從該圖可以看到,OpenPano 算法沒能生成出完整的全景圖像,只生成了與OpenCV 算法相同的區(qū)域塊;從其右圖(左圖紅色矩形框的放大圖)上可以看到,圖像在拼接處沒有拼接痕跡,但有些地方出現(xiàn)了重影和模糊的情況.
圖21 為PhotoShop 算法的拼接結(jié)果.從該圖可以看到,很明顯地在拼接處有嚴(yán)重的色差;從其右圖(左圖紅色矩形的放大圖)上可以看到,有些地方拼接處是錯(cuò)位的.
圖21 PhotoShop 算法在圖像集B 上生成的全景圖Fig.21 Panorama generated by PhotoShop algorithm on image set B
圖22 為CPG 算法的運(yùn)行結(jié)果.從該圖可以看到,CPG 算法能較完整地生成全景圖;從其右圖(左圖紅色矩形的放大圖)上看不出圖像拼接痕跡,整體顏色自然,同時(shí)也看不出有變形的地方.
表2 所示是圖像集B 在4 種算法中的結(jié)果對(duì)比.表2 所示的6 項(xiàng)評(píng)估內(nèi)容更能直觀地發(fā)現(xiàn),在圖像變形對(duì)比中,CPG 算法在其他算法都發(fā)生透視變形時(shí),依舊能夠計(jì)算出無變形的全景圖結(jié)果.從時(shí)間復(fù)雜度上可以看到,CPG 算法花費(fèi)了較多的時(shí)間,但以時(shí)間為代價(jià)還原了更為完整的內(nèi)容.
本節(jié)實(shí)驗(yàn)是在圖像集C 上進(jìn)行的.圖像集C是新疆克孜爾新1 窟–后室的頂部區(qū)域,該區(qū)域特點(diǎn)是呈半圓柱面形狀分布,但又很近似于平面,并且大約有1/4 的缺損,具體如圖8(c)所示.
圖22 CPG 算法在圖像集B 上生成的全景圖Fig.22 Panorama generated by CPG algorithm on image set B
表2 圖像集B 在4 種算法中的結(jié)果對(duì)比Tab.2 Comparison of results from image set B with four algorithms
本實(shí)驗(yàn)在圖像集C 上分別運(yùn)行和考察了CPG 算法、OpenCV 算法、OpenPano 算法和PhotoShop算法,目的是考察這些算法對(duì)實(shí)際類柱面上的紋理進(jìn)行三維拼接和全景圖展開的效果.
圖23是運(yùn)行CPG 算法所生成的三維圖像.從該圖可以看到,CPG 算法可以完整地重構(gòu)出洞窟壁畫的三維形狀和原始紋理.
圖23 由CPG 算法對(duì)圖像集C 進(jìn)行重建后的三維圖像 (3 個(gè)不同角度的截圖)Fig.23 3D image reconstructed by CPG algorithm from image set C (screenshots from three different angles)
圖24 為OpenCV 算法的運(yùn)行結(jié)果.從該圖可以看到,OpenCV 算法沒能生成出完整的全景圖像,只有1/3 的區(qū)域被生成,同時(shí)有較大區(qū)域被丟失了,且全景圖像的右上角存在透視變形現(xiàn)象.
圖25 為OpenPano 算法的拼接結(jié)果.從該圖可以看到,也只有1/3 區(qū)域被成功生成;從其右圖(左圖紅色矩形的放大圖)可以看到,拼接圖出現(xiàn)了模糊現(xiàn)象.
圖24 OpenCV 算法在圖像集C 上生成的全景圖Fig.24 Panorama generated by OpenCV algorithm on image set C
圖25 OpenPano 算法在圖像集C 上生成的全景圖Fig.25 Panorama generated by OpenPano algorithm on image set C
圖26 為PhotoShop 算法的拼接結(jié)果.從該圖可以看到有透視變形;從其右圖(左圖紅色矩形的放大圖)可以看到,人物臉部和飾品處出現(xiàn)了拼接錯(cuò)位現(xiàn)象.
圖26 PhotoShop 算法在圖像集C 上生成的全景圖Fig.26 Panorama generated by PhotoShop algorithm on image set C
圖27 為CPG 算法的運(yùn)行結(jié)果.從該圖可以看到,CPG 算法較完整地生成了全景圖;從其右圖(左圖紅色矩形的放大圖)上看不出圖像拼接痕跡,整體顏色自然,同時(shí)也看不出有變形的地方.
圖27 CPG 算法在圖像集C 上生成的全景圖Fig.27 Panorama generated by CPG algorithm on image set C
表3 所示為圖像集C 在4 種算法中的結(jié)果對(duì)比.由表3 可以發(fā)現(xiàn),CPG 算法在其他算法的6 項(xiàng)評(píng)估指標(biāo)各自出現(xiàn)不足的情況下,依舊表現(xiàn)穩(wěn)定,具有較高的魯棒性;其復(fù)原完整性最高并透視扭曲最小,以時(shí)間復(fù)雜度為代價(jià)提高了拼接準(zhǔn)確度,保證了全景圖的最大程度拼接結(jié)果.
表3 圖像集C 在4 種算法中的結(jié)果對(duì)比Tab.3 Comparison of results from image set C with four algorithms
本實(shí)驗(yàn)在圖像集D 上分別運(yùn)行和考察了CPG 算法、OpenCV 算法、OpenPano 算法和PhotoShop算法,目的是考察這些算法對(duì)實(shí)際類柱面上的紋理進(jìn)行三維拼接和全景圖展開效果.
圖28是運(yùn)行CPG 算法所生成的三維圖像.從該圖中可以看到半圓柱面的形狀,且其結(jié)構(gòu)與圖8 (d)的結(jié)構(gòu)相同;三維圖的邊緣部分由于采集時(shí)洞窟的殘損而造成了不規(guī)則的殘缺.
圖28 由CPG 算法對(duì)圖像集D 進(jìn)行重建后的三維圖像 (3 個(gè)不同角度的截圖)Fig.28 3D image reconstructed by CPG algorithm from image set D (screenshots from three different angles)
圖29 為OpenCV 算法的運(yùn)行結(jié)果.從該圖可以看到,拼接比較自然也無色差,全景圖的透視變形現(xiàn)象不明顯,但所生成的拼接結(jié)果不完整,有較大的殘缺.
圖29 OpenCV 算法在圖像集D 上生成的全景圖Fig.29 Panorama generated by OpenCV algorithm on image set D
圖30 為OpenPano 算法的拼接結(jié)果.從該圖右邊放大圖可以發(fā)現(xiàn),模糊現(xiàn)象較為嚴(yán)重.
圖30 OpenPano 算法在圖像集D 上生成的全景圖Fig.30 Panorama generated by OpenPano algorithm on image set D
圖31 為PhotoShop 算法的拼接結(jié)果.從該圖右邊放大圖可以發(fā)現(xiàn),沒有明顯的拼接痕跡,但是在拼接處有明顯的色差,從整體上看透視現(xiàn)象較為明顯.
圖31 PhotoShop 算法在圖像集D 上生成的全景圖Fig.31 Panorama generated by PhotoShop algorithm on image set D
圖32 為CPG 算法的運(yùn)行結(jié)果.從該圖可以看到較完整地生成了全景圖,且從其右邊放大圖上看不出圖像拼接痕跡,整體顏色自然,也看不出有變形的地方.
圖32 CPG 算法在圖像集D 上生成的全景圖Fig.32 Panorama generated by CPG algorithm on image set D
表4 所示為圖像集D 在4 種算法中的結(jié)果對(duì)比.由表4 可以發(fā)現(xiàn),在該數(shù)據(jù)集上,CPG 算法依舊在圖像變形這一評(píng)估內(nèi)容上具有較高的水準(zhǔn).對(duì)于多平面的柱面圖像拼接任務(wù),CPG 算法具有能基本還原紋理、無變形、無重影、無模糊和無色差的優(yōu)勢(shì);OpenCV 算法與OpenPano 算法都只拼接出了部分內(nèi)容;PhotoShop 算法雖拼接出了全部?jī)?nèi)容,但其透視效果嚴(yán)重.在本實(shí)驗(yàn)中,CPG 算法的時(shí)間消耗較為優(yōu)勢(shì).這是由于圖像集的三維形狀更接近于理想圓柱面,因而減少了計(jì)算圓柱面參數(shù)所耗費(fèi)的時(shí)間;而OpenCV 算法與OpenPano 算法的處理更接近于圓柱面的拼接對(duì)象的拼接時(shí),在圖像對(duì)準(zhǔn)上會(huì)消耗更多的時(shí)間.
表4 圖像集D 在4 種算法中的結(jié)果對(duì)比Tab.4 Comparison of results from image set D with four algorithms
本文提出了一種對(duì)非規(guī)則圓柱面壁畫比較有效的全景圖像生成方法.該方法首先依據(jù)采樣圖像集重建出三維模型,使得分網(wǎng)格拍攝的圖像在三維空間進(jìn)行拼接和融合;然后把三維非規(guī)則圓柱面擬合到1 個(gè)理想圓柱面上;最后把理想圓柱面展開成全景圖像.通過實(shí)際洞窟圖像集的實(shí)驗(yàn),驗(yàn)證了本文所提CPG 算法具有一定的實(shí)用性.但是CPG 算法對(duì)于圖像邊緣區(qū)域的處理性能和整體的處理速度略有不足,提高CPG 算法在這兩個(gè)方面的表現(xiàn)是后續(xù)將研究的課題.