趙楊
(云南師范大學傳媒學院動畫系, 云南昆明, 650500)
中國水墨畫源遠流長,有著樸素抽象、注重神似的畫風,是東方文化的象征與瑰寶[1]。如何運用數字技術對極為隨意揮灑的水墨畫進行風格遷移及轉換是當前極具挑戰性的研究課題[2]。
目前,實現水墨畫風格渲染的技術路線主要分為兩類:一類是基于筆刷的方法(Stroke-Based Rendering,簡稱SBR),另一類是基于圖像的方法(Image-Based Rendering,簡稱 IBR) 。但是由于中國水墨畫在表現手法上不遵循客觀規律,使得現有的仿真技術無法直接應用于水墨畫的快速模擬及風格轉換方面。為了解決目前存在的問題,本文主要探討基于圖像的水墨畫風格渲染算法,重點研究水墨畫筆劃提取,水墨畫擴散模擬的相關問題。
本文的創新點在與提出將基于加權最小二乘濾波應用與水墨畫風格渲染方面的思想,并以此構建了一個較為簡單的水墨畫擴散模型。該模型能夠使目標圖像自動生成具有不同抽象度和擴散效果的水墨畫特效。最后,本文進一步提出采用GPU對整個水墨畫風格渲染算法進行硬件加速處理,使得水墨風格渲染實現了實時處理的可能。
過去十多年,實現水墨畫仿真的主流技術路線包括粒子系統法、紋理合成法、機理動態擴散法和應用分形法[3]等幾類,雖然取得了較好渲染效果,但由于計算復雜未能達到水墨的實時渲染或風格遷移。
2004年,Chu和Tai等研究者設計了一個名為“MoXi”的水墨畫交互繪制系統,該系統可以實時地生成各種復雜的水墨特效。算法的核心思想是通過運用改進的LBE方法模擬水墨在宣紙上的自然的形狀演變,從而產生水墨畫特殊的擴散效果。該系統首次運用了較為嚴謹的物理模型來模擬水墨畫這一寫意為主的特殊繪畫藝術風格[4]。
2010年,趙凡等研究者提出基于流體動力學仿真的水墨渲染方法。該方法通過人機交互實現對水墨的動態模擬[3]。此方法簡化了水墨仿真的物理模型,通過流體動力學模擬,快速仿真水墨在宣紙紋理上流動的過程。
2014年,馬燕等研究者針對現有基于圖像的水墨畫渲染模型存在的不足,提出一種強化細節的水墨畫擴散模擬算法。經該算法處理的圖像其水墨風格更接近實際的繪制效果[5]。
2014年,梁凌宇構建了一個自適應水墨畫特色擴散模型。該模型能靈活地對水墨畫特色擴散的模式進行控制,從而使目標圖像自動生成具有不同抽象度、擴散范圍和模式的水墨畫特效,實現多樣化的水墨畫渲染效果[6]。
2016年,陳添丁等研究者提出將真實圖像轉換為水墨風格的渲染算法。該方法首先對圖像進行邊緣提取;接著運用各向異性 Kawahara濾波實現水墨暈染效果;最后與宣紙紋理進行背景合成得到風格遷移圖像[7]。該算法思想簡潔,計算簡單,可實現實時的視頻風格遷移。
2020年,楊麗潔等研究者為實現數字化創作中國水墨畫,設計了一個觸摸式交互繪畫工具。該軟件可通過對輸入圖像上粗略勾勒的線條進行風格化,并快速生成具有花卉水墨風格的藝術筆劃,滿足了用戶低門檻創作水墨畫作品的需求[8]。
2021年,高華明提出基于人工智能的風格遷移算法實現對圖像的水墨風格遷移和渲染。該算法的主要思想是基于循環式生成對抗網絡(Cycle GAN),通過采用單個環路以生成自然的留白效果。同時為了實現水墨擴散效果,算法將內容圖像和風格圖像編碼后的特征圖通過Ada In模塊進行整合[9]。該算法能夠很好地對普通輸入照片進行水墨風格的遷移。
由于中國水墨畫主要的特點是講求“以形寫神”,所以,本文設計算法時保留了輸入圖像中物體的主要形狀特征,而舍去其他的細節。在水墨擴散環節,本文提出將LIC-DoG線條提取的結果作為輸入,然后運用WLS(Weighted Least Square)模型進行渲染處理。本文討論的水墨風格繪制算法本質上屬于基于圖像的渲染方法。
受梁凌宇的思想啟發,本文設計的水墨畫風格化渲染模型將根據原始圖像的特征把物體主要形狀位置的像素值信息均勻傳播到其鄰近區域,從而產生水墨擴散的效果[6]。通過設置不同的模型參數,可以得到不同擴散范圍與抽象程度的水墨畫風格圖像。
由于基于該模型的求解涉及到對大型稀疏矩陣的運算,為提高計算速度,本文利用CUDA語言及其提供的稀疏矩陣求解庫及API實現了上述水墨擴散模型的實時求解操作。下面將詳細介紹算法的基本思想和具體實現,以及采用GPU對本文提出的算法進行改進和優化。
加權最小二乘濾波能夠在平滑圖像的同時較好地保持圖像邊緣信息,對一幅輸入圖像進行加權最小二乘濾波操作可以形式化定義為[10]:

α決定梯度權重項對圖像邊緣的敏感度,引入ε是可防止表達式分母為0。WLS模型通過對二次能量泛函最小化問題的求解從而實現邊緣保持濾波。
通過實驗、類比與分析,本文發現加權最小二乘濾波與水墨擴散之間具有一定的相似性。WLS(Weighted Least Square)模型中保真項可理解為水墨筆跡擴散時,需要保證筆跡骨架圖像不走樣,不失真。正則項則可理解為水墨筆跡信息在一定條件下進行均勻的擴散。本文認為,如果把水墨像素信息看作一種特殊的信息,水墨筆跡擴散效果實際上就是一種特殊的圖像平滑過程。本文設計的模型是梁凌宇水墨擴散模型的一種簡化形式。
在進行水墨擴散時,首先需對任意輸入圖像中的筆劃進行線條特征提取,并以此作為水墨擴散的輸入。與真實水墨畫的繪制作類比,筆劃特征提取后的線條位置代表畫師畫筆落下的位置,而像素的灰度值則代表該點的灰度特征信息[6]。為了能夠通過GPU加速實現水墨擴散算法,本文采用了LICDoG預處理方法提取任意輸入圖像的筆劃。
2.2.1 DoG濾波器預處理
DoG濾波器通過高斯卷積得到二階導數?2G,其可形式化定義為[11]:


得到濾波結果E(x,y)后,通過二值處理可得到最終的邊緣效果,可形式化定義為:


圖1 基于DoG濾波器預處理的水墨筆劃提取圖
2.2.2 計算圖像結構張量
令F表示輸入圖像,Gσ,x和Gσ,y表示高斯分布在x軸方向和y軸方向的導數,形式化定義為[12]:

局部方向定義為:θ= a rg(t)。對DoG濾波得到的邊緣圖像,以特征向量的方向場作為引導進行LIC濾波即可渲染得到柔化的邊緣圖像。
2.2.3 LIC線積分卷積
LIC以DoG濾波得到的非連續邊緣作為輸入,對矢量場中的像素點沿特征向量方向計算流線,然后將流線對應像素點的邊緣值進行卷積,結果作為輸出邊緣值[13]:

式中Δst是第t步的步長,st是第t步后流線的長度,th表示權值,由此可得LIC卷積像素灰度值[22],即:

Fou t(x , y )是輸出像素(x , y)處的灰度值,Fin(pt)是邊緣圖像像素pt處的灰度值,pt和pt’分別是沿流線正、反方向第t步的像素坐標值。l和l'分別是流線正、反方向的積分步數,ht是權值,ht'表示反向權值[14]。

圖2 基于LIC線積分卷積的水墨筆劃柔化提取圖
水墨畫繪制過程中,其采用的宣紙紋理有一定細微的隨機褶皺。為模擬這一特征,本文采用Perlin噪聲函數來生成較為自然的隨機分形效果,如何利用二維Perlin噪聲模擬宣紙紋理的褶皺感,實現方法可參考文獻[7]。
通過運用WLS計算模型將輸入的水墨畫筆跡圖像進行濾波渲染,就可得到水墨擴散圖像。將輸出的水墨特色渲染圖像與水墨畫宣紙紋理進行融合,即可得到具有水墨風格的最終輸出圖像。紋理圖像顏色混合模型類似于Photoshop軟件提供的圖像正片疊底運算[15],其可以形式化定義為:

公式中A代表基色;B代表混合色;C代表圖層混合后的顏色值,稱為結果色。

圖3 水墨畫紋理圖像融合效果圖

圖4 水墨特色風格渲染例圖
通過實驗分析,受季智堅的啟發,本文發現能量函數的最優化問題可轉換為對一個N×N的大型稀疏線性方程組的求解[16]。為了提高算法的處理性能,本文采用CUDA庫中提供的基于稀疏矩陣運算和求解的API函數,利用GPU的高并行性有效減少了能量函數求解過程所需時間。
在進行水墨特色風格渲染時,對輸入分辨率為256×256的圖像處理過程中,解方程耗時只需1秒左右,基本達到實時處理要求。關于如何利用GPU進行稀疏矩陣的求解運算可采用多種方式進行,其中一類解法具體實現原理及偽碼可參考王敬軒等人的工作[17],這里不再贅述。

圖5 CUDA稀疏矩陣求解架構圖
本文采用Visual C++語言及CUDA語言實現核心算法。本文的創新點在與提出將加權最小二乘濾波應用于水墨畫風格渲染方面的思想,并以此構建了一個較為簡單的水墨擴散模型,取得了較為良好的合成效果,并通過GPU加速實現了基于圖像的水墨特色實時擴散渲染算法。但該模型仍存在大量需要改進和優化的工作,主要改進方向就是如何實現隨宣紙紋理結構進行隨機的水墨擴散羽化效果。