王玉銘,潘 斌,郭小明,殷 立,張曼琳,賈方利
(1.遼寧石油化工大學理學院,遼寧撫順113001;2.遼寧石油化工大學計算機與通信工程學院,遼寧撫順113001)
現(xiàn)實世界中大部分物體隨著時間的推移,其表面會根據(jù)材料屬性和周圍的環(huán)境而產(chǎn)生外觀上的變化,被稱為風化作用。在計算機圖形學中,利用風化作用可以有效地提高場景的真實感?,F(xiàn)有方法通常改變的是飽和度和反射度等材質(zhì)屬性,實現(xiàn)落葉或者污漬等效果[1?2]。然而,在現(xiàn)實世界中,許多風化現(xiàn)象具有更加復(fù)雜詳細的紋理上的變化。此外,隨著時間的推移,風化的物體表面會具有更復(fù)雜的顏色分布。
目前,有許多種基于物理模擬來產(chǎn)生風化效應(yīng)的研究,為特定的場景創(chuàng)造出逼真的風化效果,例如流體模擬[3]、石像的風化侵蝕[4]、苔蘚生長[5]等。但是,這些方法都需要物體精確的幾何形狀和物理參數(shù),這些參數(shù)很難從單幅圖像中估算出來。還有一些基于圖像的物體表面風化算法。例如,S.Xue等[6]通過修改物體的幾何外觀,對圖像中的石頭模擬出風化效果;文獻[7-8]研究了一種基于粒子模擬的方法,在物體表面產(chǎn)生流體的侵蝕效果。這些方法通過限制目標物體的材料和風化作用來獲得逼真的效果。
為了更逼真地模擬風化效果,J.Wang等[1]研究了一種可視化的模擬方法,從單一材料表面上不同點的BRDF(雙向反射分布函數(shù))中獲得時變外觀,構(gòu)造出一種外觀流形,這種外觀流形近似于一種利用風化度生成的外觀子空間,以此來計算風化程度的分布,并模擬材料表面的時變效果。D.Bandeira等[9]基于一種外觀圖像,將外觀流形簡化為二維特征空間。Y.Endo等[10]通過添加用于表示陰影變化的高頻分量來細化外觀圖的顯示結(jié)果。G.Hwang等[11]基于時間的外觀流形模擬風化效應(yīng),并且用于風化視頻的處理。
A.A.Efros等[12]提出了一種基于紋理補丁拼接的紋理合成技術(shù),該算法對基于圖像分割的拼接技術(shù)和能量優(yōu)化等方面進行了改進[13]。關(guān)于圖像補全技術(shù),D.Simakov等[14]提出了一種基于全局優(yōu)化的技術(shù),可以達到更加細致的填充效果。文獻[15-16]研究了一種名為Patch Match的快速隨機補丁搜索算法來加速算法運算。白宏陽等[17]提出一種利用加權(quán)矩陣補全圖像的方法。R.Bellini等[18]提出了一種估算部分風化紋理的“年齡圖”方法,該方法能夠模擬合成風化效應(yīng)在時變演化過程的序列。Y.Zhou等[19]提出一種自動分析和控制合成高度不均勻紋理的新方法。結(jié)果表明,當待補全區(qū)域相較采樣區(qū)域較大時,結(jié)果很難令人滿意,得到的效果并不理想,視覺感不真實。綜合來看,風化效果的模擬可以大致看成一種圖像補全問題,其中未風化區(qū)域是待修補區(qū)域,風化區(qū)域則是修補的補丁,也就是樣本。
利用徑向基函數(shù)(RBF)方法可以合理地計算風化區(qū)域的分布程度,模擬出具有豐富顏色變化的風化效果。從風化樣本中取樣,并根據(jù)風化程度和外觀一致性將其傳播到目標區(qū)域,以此來模擬外觀特征。該算法可以更加快速地生成風化模擬,效果更加逼真。
圖像風化模擬流程如圖1所示。
圖1 圖像風化模擬流程
圖像風化基本流程如圖2所示。
圖2 圖像風化基本流程
首先,使用Grab Cut算法[20]或者圖像編輯工具提取目標對象的像素點,并且指定提取點分別為風化程度最高和最低的點。具體方法,利用算法或者提取工具,人為選擇提取風化程度最高與最低的一個點。將這些提取的像素點作為風化程度的一種基準,然后利用徑向基函數(shù)的方法對這些像素進行函數(shù)插值,構(gòu)建一個在高維特征空間中的風化度平滑函數(shù)。利用構(gòu)造的非線性函數(shù),可以計算出風化程度圖像。最后,利用圖像分割算法從高度風化的像素中提取出風化程度最高的區(qū)域。與此同時,基于風化程度圖像提取著色圖像,著色圖像大致包含圖像中物體的表面細節(jié)。當進行風化度圖像更新時,從風化樣本中提取風化補丁在風化度圖像上傳播。為保持外觀效果的一致性,風化補丁由全局優(yōu)化算法生成。最終,將風化效果與著色圖像結(jié)合,得到輸出圖像。
利用RBF算法進行函數(shù)插值計算的方法已經(jīng)廣泛地應(yīng)用于計算機圖形學中,例如基于點數(shù)據(jù)的三維重建[21]、目標檢測[22]、圖像去噪[23]等。利用一種光滑函數(shù)表示高維特征空間中的風化度分布。這種算法可使圖像的風化程度平穩(wěn)變化,合理地計算具有廣泛顏色分布變化的圖像風化程度。因為指定像素為中心的RBF數(shù)值,通常只需要幾十個或幾百個像素值,所以這種算法的速度特別快。
首先要確定每個RBF的系數(shù),計算每個像素的風化程度,以此作為RBF的線性組合。設(shè)Ω為用戶指定區(qū)域的一組像素。將徑向基函數(shù)φ(r)=e-r2賦給每個像素i∈Ω,并通過求解以下最小二乘問題來計算其系數(shù):
式中,fi=(Li/σa,ai/σa,bi/σa,xi/σs,yi/σs)為視覺特征和空間特征組成的特征向量,其中Li、ai、bi為Lab顏色空間中的亮度和色度值,而xi,yi為歸一化后的像素坐標,σa和σs為控制外觀效應(yīng)和空間局部性的參數(shù);根據(jù)測試,令σa=0.2,σs=50,αj為未知系數(shù);di為每個像素的風化度,其中風化程度最低的像素的di=0.01,最高的像素的di=1.00;fj為像素j的特征向量。
利用系數(shù)α,計算每個像素p的風化度:Dp∈[0,1]。
式中,fp為像素p的特征向量。
利用補丁合成的方法模擬風化物體表面的外觀特征效果。然而,將補丁直接合成到目標位置上,有時會影響下方物體的原有形狀。因此,預(yù)先計算出物體表面的著色圖像,然后再進行補丁合成。
根據(jù)物體表面的風化程度來計算整體著色。利用風化樣本描述的二值分割結(jié)果來識別風化程度較少的區(qū)域,將風化程度較低的區(qū)域均勻劃分為20個離散區(qū)間,并計算出每個區(qū)間k的平均亮度值μk。然后,將區(qū)間k中的每個像素p的亮度Ilump,k除以對應(yīng)的μk來計算全局著色Sp,k,即Sp,k=Ilump,k/μk。其余的高度風化區(qū)域保持原有亮度,因為在模擬風化的過程中,這些區(qū)域的外觀不發(fā)生變化。
利用風化補丁在待風化區(qū)域進行傳播,以此來模擬風化效果。這種方法與以前僅僅改變色度或反射率的方法不同。
首先,使用圖像分割算法在高度風化的區(qū)域中識別并分割出風化程度最高的圖像塊,并標記為風化樣本。然后,利用風化程度引導(dǎo)的全局能量優(yōu)化算法來找到最佳的風化補丁。最后,將補丁和著色區(qū)域進行合成,以此來模擬風化效應(yīng)。
1.3.1 風化樣本 風化樣本的定義包含最明顯風化特征的矩形區(qū)域。給定風化圖像,首先進行二值分割,以此來標記風化區(qū)域和未風化區(qū)域。最顯著的風化像素通常會在圖像中顏色密集的地方出現(xiàn),利用風化度D定義代價函數(shù)E(L):
式中,Lp∈;N為相鄰像素組的集合;Vp為平滑項;λ為決定平滑項相對重要性的平滑系數(shù);[]如果參數(shù)為正,則指示函數(shù)取值為1,否則為0。
根據(jù)文獻[24],使用Vp(Dp,Dq)=exp(-β(Dp-Dq)2/dist(p,q)),其中dist(p,q)是相鄰像素的歐氏距離,是一個常數(shù),表示平均值。對于所有的結(jié)果,λ取值都為20。利用圖像分割方法可以有效地解決能量最小化問題。然后,提取一個矩形,其中包含標記為“風化”的大多數(shù)像素。在系統(tǒng)中使用文獻[25]算法進行實時計算矩形的尺寸為150×150像素。提取的區(qū)域通常存在孔洞,會引起風化效應(yīng)噪聲。即使明顯地提高風化度,孔洞內(nèi)像素還是保持不變。為了避免這些問題,使用Patch Match[15]來填充孔洞。
1.3.2 基于全局優(yōu)化的風化補丁搜索 在生成風化樣本之后,將采集風化補丁分布到整個目標區(qū)域,也就是待風化區(qū)域。在這個過程中,標記為“風化”的像素將保持不變,也就是處在風化區(qū)域。為保證風化后效果具有較好的視覺紋理性,需要在輸入圖像I中處理從風化樣本T中采樣的風化補丁,具體步驟為:首先,從風化樣本中隨機抽取補丁,并與相鄰補丁重疊,兩塊補丁重疊的面積為補丁面積的1/4,這種方法類似于圖像拼接技術(shù)[14];然后,基于全局測量距離d(I,T),對修補程序進行迭代更新。風化樣本傳播如圖3所示。為尋找輸入圖像的每個補丁中匹配度最高的風化像素塊,將重疊像素和相鄰像素以及標記為“風化”的像素顏色度的平方差之和(SSD)最小化,d(I,T)定義為:
式中,Gdat為風化像素顏色度的SSD;Gnei為相鄰像素與重疊像素之間顏色度的SSD;Kp為校正風化度,“未風化”像素的風化度設(shè)置為0,而“風化”像素的風化度不變。
圖3 風化樣本傳播
測量距離d(I,T)優(yōu)先考慮高度風化區(qū)域的外觀相似性,否則保持相鄰補丁之間的視覺一致性。這種優(yōu)化可以生成一種自然的風化紋理,既可以和風化區(qū)域無縫過渡,又能保持風化樣本的外觀特征。在實現(xiàn)過程中,會有兩步由粗到細的細化。與此同時,會改變風化補丁的大小。首先,使用60×60像素搜索補丁以保留風化樣本的整體結(jié)構(gòu)。然后使用20×20像素更新補丁以達到更詳細的特征效果。使用Patch Match[15]可以加速補丁搜索過程,修改偏移量以查找相鄰補丁。在合成過程中,使用最小邊界誤差分割算法[16]來確定相鄰重疊塊之間的分割。
利用全局著色和風化補丁,生成了最終圖像I′,然后將Lab顏色空間中的亮度值與著色值相乘。因為設(shè)定的風化效應(yīng)出現(xiàn)在風化程度超過一定閾值τ的區(qū)域,所以在風化度D大于閾值的像素中合成風化紋理。計算最后的圖像:
式中,I為輸入圖像;Z為對未風化區(qū)域處理后的風化紋理;S為著色圖像;*為卷積乘積;下標lum表示亮度通道,下標hue表示Lab空間中的色度通道。與以往的方法不同,這種方法在視覺上保證了風化紋理效果的連續(xù)性。
通過自動更新風化度圖像的辦法來模擬風化效果。采用添加平滑度圖像技術(shù)來平滑地擴展風化區(qū)域[9]。風化度圖像整體更新基于粒子模擬的方法[7]。利用粒子模擬方法可以輕易地實現(xiàn)模擬風化效果,具體的方法是將算法中流體染色中的粒子替換成風化度。當粒子穿過像素時,每個像素的風化程度將會增加。
利用C++實現(xiàn)了原型系統(tǒng)編寫,并在配置為i5?8400型號CPU、8 GB內(nèi)存和GTX1060顯卡的電腦上運行。計算風化程度的平均時間約0.1 s,風化樣本的生成時間約0.5 s,風化補丁的搜索時間約3.0 s。
基于樣本傳播,在圖像中的物體表面模擬出精細的風化效果,選取大量的風化圖像進行模擬處理,并且與以往的算法進行了比較。模擬風化效果如圖4所示。
圖4 模擬風化效果
不同算法的模擬風化效果圖5所示。從圖5可以看出,文獻[9-10]算法生成的圖像效果非常不自然,顏色十分趨近并且單一。本文算法與以往的算法不同,為了可以處理顏色差異較大的風化圖像,利用RBF插值算法計算風化度圖像,利用樣本傳播的方法模擬風化效果,合理地模擬了風化效應(yīng),并保留了風化區(qū)域的詳細特征,效果更為理想。
圖5 不同算法的模擬風化效果
模擬風化圖像的生成時間如表1所示。
表1 模擬風化圖像的生成時間 s
研究了一種基于圖像的風化效應(yīng)模擬方法,可以生成紋理復(fù)雜且精細的風化效果。利用RBF插值的算法可以很好地處理顏色差異大的風化圖像。利用圖像分割算法和全局優(yōu)化引導(dǎo)的風化度圖像方法來傳播詳細的風化特征,可以生成效果逼真的風化圖像,并且保證風化后圖像中的紋理仍然連貫、一致,與原圖的差異很小。在接下來的研究中,還可以利用圓形的補丁來進行風化傳播。此外,也希望可以實現(xiàn)一種系統(tǒng),能夠自動地提取風化樣本,這些樣本中包含著不同等級的風化程度,以此構(gòu)造出不同程度的風化效果。