趙楊
(云南師范大學傳媒學院動畫系,云南昆明,650500)
紋理合成是圖像處理的重要研究領域,現(xiàn)有的方法主要分為兩類:過程紋理合成和基于樣圖的紋理合成。在實際應用中,由于過程紋理合成算法實現(xiàn)復雜,因此研究者提出了通過將能夠表現(xiàn)紋理特征的紋理塊,拼接合成為大型塊紋理的合成方法。
基于樣圖的紋理合成方法主要包括基于點匹配和基于塊拼接兩種算法,其主要區(qū)別是合成單位不同。1999年,Efros提出基于點匹配的紋理合成方法。該算法在樣本圖像紋理空間中捜索與鄰域最佳匹配的像素點,然后將其傳輸?shù)侥繕藞D像中。隨后,Wei和Levoy提出通過多分辨率模型進行匹配,并采用圖像金字塔加速紋理合成的過程。但是以上算法對結構紋理的合成效果不佳。
為了克服基于點匹配的紋理合成算法存在的缺陷,Efros提出基于塊拼接的Image Quiting紋理合成及傳輸算法,該算法能將源圖像紋理特征快速傳輸?shù)侥繕藞D像中。2001 年,Liang 等人提出基于塊拼貼的實時紋理合成算法,該算法利用KD-Tree來提升合成計算速度,基本實現(xiàn)了實時紋理合成。
經(jīng)典的紋理傳輸算法經(jīng)過進一步改進,可轉換應用到圖像風格遷移等應用領域。圖像風格遷移主要涉及樣本圖像和目標圖像,經(jīng)過風格遷移之后的目標圖像不僅能保持本身的內(nèi)容信息,同時還具有樣本圖像的紋理特征,從而渲染模擬出具有與樣本圖像相似的藝術風格特征。
針對各種畫派的風格遷移,研究者提出了不同的風格紋理合成和轉移算法。2015 年,Gatys等人 受到了 CNN 思想的啟發(fā),提出基于神經(jīng)網(wǎng)絡的圖像風格遷移算法。算法提出通過基于圖像迭代和模型迭代的方式可將用戶給定的輸入圖像轉換為具有著名藝術風格特征的輸出圖像,從而實現(xiàn)了任意參考圖像風格的遷移轉換。
由于上述算法令人耳目一新的實驗效果,推動眾多學者進行了大量的后續(xù)研究工作。Goodfellow 等提出了一種生成對抗網(wǎng)絡模型,網(wǎng)絡由生成器和判別器組成,并通過對抗博弈的方式來學習生成模型,該算法廣泛應用于圖像風格遷移等方面。Li等人則提出將馬爾可夫隨機場模型與深度卷積神經(jīng)網(wǎng)絡相結合,從而實現(xiàn)更加準確的風格特征遷移。
除此之外,為了模擬特殊畫派風格,其他研究者開發(fā)了一些頗具特色的風格遷移算法。其中盧麗穩(wěn)等人提出一種應用在云南重彩畫上面的人臉轉移算法;錢文華等人提出基于圖像重要度的藝術風格轉換方法;趙楊等人提出運用GPU并行加速從而實現(xiàn)實時的梵高流線風格油畫繪制及風格遷移算法。
Image quilting 算法的基本思想是:采用特定的匹配準則遵循掃描線順序從樣本圖像中挑選一定尺寸的紋理塊并將其復制到目標圖像中。如圖1所示,圖(a)代表樣本圖像,圖像中的紅色方塊表示在樣圖中隨機挑選特定大小的紋理塊并將其合成到目標圖像中;圖(b)是在目標圖中令紋理塊相互重疊;圖(c)為在重疊部分尋找一條最佳切割路線,按該路徑將新的紋理塊復制到目標圖像中。
圖1 Image quilting 算法示意圖
Image quilting 算法在對匹配塊誤差進行度量時,通過計算樣本圖像和目標圖像對應像素間的歐氏距離來確定最佳分割路徑。歐氏距離表示為:
其中N1,N2為任意兩個等大的匹配紋理塊;R,G,B分別代表圖像塊三基色的值。
本文最佳分割路徑與文獻[1,2]中的 Minimum Error Boundary Cut 概念相同,但對其增加了邊界約束條件,定義如下:
式中ei,j為兩紋理塊重疊區(qū)域的誤差值,Ei,j為總誤差值。
在圖像風格遷移過程中,樣本圖像與目標圖像往往存在較大的色度誤差,從而導致算法無法尋到最優(yōu)匹配塊。因此本文提出首先對樣本圖像與目標圖像進行色度相似性預處理,為降低各通道的相關性,需在lαβ顏色空間進行操作,映射公式如下:
改進的Image Quilting圖像風格遷移算法首先需計算獲得目標圖像的結構張量特征值及特征向量,利用目標圖像的方向場進行約束實現(xiàn)基于方向場引導的塊紋理合成算法。
本文采用結構張量作為目標圖像方向場的計算方法。F為目標圖像,Gσ,x和Gσ,y分別是正態(tài)分布在x軸方向和y軸方向的導數(shù),定義為:
對F卷積,得到在x軸和y軸上偏導數(shù)fx、fy,結構張量定義為:
結構張量的非負特征值為:
特征向量的方向表示為:
局部方向定義為:θ=arg(t)[16]。計算出旋轉角度后,利用二維空間中繞任意點旋轉的旋轉矩陣對輸入的樣本圖像紋理塊進行旋轉。旋轉矩陣定義為:
圖2 目標圖像結構張量場示意圖
在算法具體實現(xiàn)過程中,每合成一個紋理塊就需檢測當前待合成塊的方向,利用目標圖像結構張量場的特征值確定方向后,就可將候選樣本圖像的紋理塊旋轉相應角度,同時運用經(jīng)典的Image Quilting算法在目標圖像中按照掃描線順序逐塊掃描合成。
圖3 待選樣本紋理塊旋轉示意圖
本文提出的改進的Image Quilting圖像風格遷移算法對目標圖像進行紋理傳輸處理時,當選取的樣本紋理塊較大時,會造成渲染圖像只具有樣本圖像的紋理,顏色,方向等風格特征;而目標圖像的形狀,邊緣,內(nèi)容等信息不能較好的留存。為解決此問題,本文采用了Elias Wang等人提出的方法對最后處理的圖像進行圖像內(nèi)容融合[17]。
圖4 改進的Image Quilting圖像風格遷移算法渲染效果
該方法基于這樣一個基本經(jīng)驗,那就是圖像的關鍵內(nèi)容信息通常位于目標圖像的前景,所以融合時需對前景分配較大權重,而對背景分配較小權重。算法首先通過對目標圖像采用基于活動輪廓的圖像分割方法進行前景與背景的分離,并計算逐像素權重掩碼。其次,由于目標圖像的邊緣包含圖像中的大量有效信息,因此需對目標圖像邊緣分配更大權重。最后,當最終合成圖像像素點位于目標圖像的邊緣或者內(nèi)容敏感區(qū)域時,則將目標圖像的權重加大,而在其它區(qū)域,則將渲染圖像權重加大。圖像融合計算公式定義為,具體實現(xiàn)可以參考Elias Wang等人的文獻和具體實現(xiàn)[17]:
圖5 圖像內(nèi)容融合渲染效果對比圖
本文設計的算法執(zhí)行流程為:(1)確定樣本圖像待選紋理塊,并進行初始參數(shù)設置(主要包括待選紋理塊尺寸及重疊區(qū)域?qū)挾鹊龋?;?)運用(3)式對目標圖像進行色度重映射;(3)計算獲得目標圖像的結構張量方向場;(4)運用(2)式選出誤差歐式距離最小的紋理塊,并將其按當前目標圖像的結構張量方向場旋轉一定的角度,傳輸?shù)戒秩緢D像中;(5)運用經(jīng)典的Image Quilting算法在目標圖像中按照掃描線順序逐塊掃描合成;(6)運用(9)式進行圖像內(nèi)容融合得到最終渲染圖像。
本文采用C++語言實現(xiàn)核心算法。實驗硬件配置為:intel.Core.i7-6700HQ處理器,8.0GB內(nèi)存。軟件配置為:Windows10(X64)OS ,VC++2015,OpenCV。處理一副 512*512分辨率的圖像在不采用GPU加速的情況下需要15分鐘時間。
圖6 改進的Image Quilting圖像風格遷移算法渲染效果
圖7 改進的Image Quilting圖像風格遷移算法渲染效果
本文提出了一個比較完善的算法架構,可對多種藝術風格特征實現(xiàn)圖像的風格遷移,取得了較為良好的渲染效果,但仍存在大量需要改進和優(yōu)化的工作。主要改進方向是提高風格遷移的轉化速度,運用GPU實現(xiàn)圖像風格遷移的實時化處理,并將算法擴展到對視頻的特效渲染方面。