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