趙楊
(云南師范大學(xué)傳媒學(xué)院動(dòng)畫(huà)系, 云南昆明, 650500)
中國(guó)水墨畫(huà)源遠(yuǎn)流長(zhǎng),有著樸素抽象、注重神似的畫(huà)風(fēng),是東方文化的象征與瑰寶[1]。如何運(yùn)用數(shù)字技術(shù)對(duì)極為隨意揮灑的水墨畫(huà)進(jìn)行風(fēng)格遷移及轉(zhuǎn)換是當(dāng)前極具挑戰(zhàn)性的研究課題[2]。
目前,實(shí)現(xiàn)水墨畫(huà)風(fēng)格渲染的技術(shù)路線主要分為兩類(lèi):一類(lèi)是基于筆刷的方法(Stroke-Based Rendering,簡(jiǎn)稱(chēng)SBR),另一類(lèi)是基于圖像的方法(Image-Based Rendering,簡(jiǎn)稱(chēng) IBR) 。但是由于中國(guó)水墨畫(huà)在表現(xiàn)手法上不遵循客觀規(guī)律,使得現(xiàn)有的仿真技術(shù)無(wú)法直接應(yīng)用于水墨畫(huà)的快速模擬及風(fēng)格轉(zhuǎn)換方面。為了解決目前存在的問(wèn)題,本文主要探討基于圖像的水墨畫(huà)風(fēng)格渲染算法,重點(diǎn)研究水墨畫(huà)筆劃提取,水墨畫(huà)擴(kuò)散模擬的相關(guān)問(wèn)題。
本文的創(chuàng)新點(diǎn)在與提出將基于加權(quán)最小二乘濾波應(yīng)用與水墨畫(huà)風(fēng)格渲染方面的思想,并以此構(gòu)建了一個(gè)較為簡(jiǎn)單的水墨畫(huà)擴(kuò)散模型。該模型能夠使目標(biāo)圖像自動(dòng)生成具有不同抽象度和擴(kuò)散效果的水墨畫(huà)特效。最后,本文進(jìn)一步提出采用GPU對(duì)整個(gè)水墨畫(huà)風(fēng)格渲染算法進(jìn)行硬件加速處理,使得水墨風(fēng)格渲染實(shí)現(xiàn)了實(shí)時(shí)處理的可能。
過(guò)去十多年,實(shí)現(xiàn)水墨畫(huà)仿真的主流技術(shù)路線包括粒子系統(tǒng)法、紋理合成法、機(jī)理動(dòng)態(tài)擴(kuò)散法和應(yīng)用分形法[3]等幾類(lèi),雖然取得了較好渲染效果,但由于計(jì)算復(fù)雜未能達(dá)到水墨的實(shí)時(shí)渲染或風(fēng)格遷移。
2004年,Chu和Tai等研究者設(shè)計(jì)了一個(gè)名為“MoXi”的水墨畫(huà)交互繪制系統(tǒng),該系統(tǒng)可以實(shí)時(shí)地生成各種復(fù)雜的水墨特效。算法的核心思想是通過(guò)運(yùn)用改進(jìn)的LBE方法模擬水墨在宣紙上的自然的形狀演變,從而產(chǎn)生水墨畫(huà)特殊的擴(kuò)散效果。該系統(tǒng)首次運(yùn)用了較為嚴(yán)謹(jǐn)?shù)奈锢砟P蛠?lái)模擬水墨畫(huà)這一寫(xiě)意為主的特殊繪畫(huà)藝術(shù)風(fēng)格[4]。
2010年,趙凡等研究者提出基于流體動(dòng)力學(xué)仿真的水墨渲染方法。該方法通過(guò)人機(jī)交互實(shí)現(xiàn)對(duì)水墨的動(dòng)態(tài)模擬[3]。此方法簡(jiǎn)化了水墨仿真的物理模型,通過(guò)流體動(dòng)力學(xué)模擬,快速仿真水墨在宣紙紋理上流動(dòng)的過(guò)程。
2014年,馬燕等研究者針對(duì)現(xiàn)有基于圖像的水墨畫(huà)渲染模型存在的不足,提出一種強(qiáng)化細(xì)節(jié)的水墨畫(huà)擴(kuò)散模擬算法。經(jīng)該算法處理的圖像其水墨風(fēng)格更接近實(shí)際的繪制效果[5]。
2014年,梁凌宇構(gòu)建了一個(gè)自適應(yīng)水墨畫(huà)特色擴(kuò)散模型。該模型能靈活地對(duì)水墨畫(huà)特色擴(kuò)散的模式進(jìn)行控制,從而使目標(biāo)圖像自動(dòng)生成具有不同抽象度、擴(kuò)散范圍和模式的水墨畫(huà)特效,實(shí)現(xiàn)多樣化的水墨畫(huà)渲染效果[6]。
2016年,陳添丁等研究者提出將真實(shí)圖像轉(zhuǎn)換為水墨風(fēng)格的渲染算法。該方法首先對(duì)圖像進(jìn)行邊緣提取;接著運(yùn)用各向異性 Kawahara濾波實(shí)現(xiàn)水墨暈染效果;最后與宣紙紋理進(jìn)行背景合成得到風(fēng)格遷移圖像[7]。該算法思想簡(jiǎn)潔,計(jì)算簡(jiǎn)單,可實(shí)現(xiàn)實(shí)時(shí)的視頻風(fēng)格遷移。
2020年,楊麗潔等研究者為實(shí)現(xiàn)數(shù)字化創(chuàng)作中國(guó)水墨畫(huà),設(shè)計(jì)了一個(gè)觸摸式交互繪畫(huà)工具。該軟件可通過(guò)對(duì)輸入圖像上粗略勾勒的線條進(jìn)行風(fēng)格化,并快速生成具有花卉水墨風(fēng)格的藝術(shù)筆劃,滿(mǎn)足了用戶(hù)低門(mén)檻創(chuàng)作水墨畫(huà)作品的需求[8]。
2021年,高華明提出基于人工智能的風(fēng)格遷移算法實(shí)現(xiàn)對(duì)圖像的水墨風(fēng)格遷移和渲染。該算法的主要思想是基于循環(huán)式生成對(duì)抗網(wǎng)絡(luò)(Cycle GAN),通過(guò)采用單個(gè)環(huán)路以生成自然的留白效果。同時(shí)為了實(shí)現(xiàn)水墨擴(kuò)散效果,算法將內(nèi)容圖像和風(fēng)格圖像編碼后的特征圖通過(guò)Ada In模塊進(jìn)行整合[9]。該算法能夠很好地對(duì)普通輸入照片進(jìn)行水墨風(fēng)格的遷移。
由于中國(guó)水墨畫(huà)主要的特點(diǎn)是講求“以形寫(xiě)神”,所以,本文設(shè)計(jì)算法時(shí)保留了輸入圖像中物體的主要形狀特征,而舍去其他的細(xì)節(jié)。在水墨擴(kuò)散環(huán)節(jié),本文提出將LIC-DoG線條提取的結(jié)果作為輸入,然后運(yùn)用WLS(Weighted Least Square)模型進(jìn)行渲染處理。本文討論的水墨風(fēng)格繪制算法本質(zhì)上屬于基于圖像的渲染方法。
受梁凌宇的思想啟發(fā),本文設(shè)計(jì)的水墨畫(huà)風(fēng)格化渲染模型將根據(jù)原始圖像的特征把物體主要形狀位置的像素值信息均勻傳播到其鄰近區(qū)域,從而產(chǎn)生水墨擴(kuò)散的效果[6]。通過(guò)設(shè)置不同的模型參數(shù),可以得到不同擴(kuò)散范圍與抽象程度的水墨畫(huà)風(fēng)格圖像。
由于基于該模型的求解涉及到對(duì)大型稀疏矩陣的運(yùn)算,為提高計(jì)算速度,本文利用CUDA語(yǔ)言及其提供的稀疏矩陣求解庫(kù)及API實(shí)現(xiàn)了上述水墨擴(kuò)散模型的實(shí)時(shí)求解操作。下面將詳細(xì)介紹算法的基本思想和具體實(shí)現(xiàn),以及采用GPU對(duì)本文提出的算法進(jìn)行改進(jìn)和優(yōu)化。
加權(quán)最小二乘濾波能夠在平滑圖像的同時(shí)較好地保持圖像邊緣信息,對(duì)一幅輸入圖像進(jìn)行加權(quán)最小二乘濾波操作可以形式化定義為[10]:
α決定梯度權(quán)重項(xiàng)對(duì)圖像邊緣的敏感度,引入ε是可防止表達(dá)式分母為0。WLS模型通過(guò)對(duì)二次能量泛函最小化問(wèn)題的求解從而實(shí)現(xiàn)邊緣保持濾波。
通過(guò)實(shí)驗(yàn)、類(lèi)比與分析,本文發(fā)現(xiàn)加權(quán)最小二乘濾波與水墨擴(kuò)散之間具有一定的相似性。WLS(Weighted Least Square)模型中保真項(xiàng)可理解為水墨筆跡擴(kuò)散時(shí),需要保證筆跡骨架圖像不走樣,不失真。正則項(xiàng)則可理解為水墨筆跡信息在一定條件下進(jìn)行均勻的擴(kuò)散。本文認(rèn)為,如果把水墨像素信息看作一種特殊的信息,水墨筆跡擴(kuò)散效果實(shí)際上就是一種特殊的圖像平滑過(guò)程。本文設(shè)計(jì)的模型是梁凌宇水墨擴(kuò)散模型的一種簡(jiǎn)化形式。
在進(jìn)行水墨擴(kuò)散時(shí),首先需對(duì)任意輸入圖像中的筆劃進(jìn)行線條特征提取,并以此作為水墨擴(kuò)散的輸入。與真實(shí)水墨畫(huà)的繪制作類(lèi)比,筆劃特征提取后的線條位置代表畫(huà)師畫(huà)筆落下的位置,而像素的灰度值則代表該點(diǎn)的灰度特征信息[6]。為了能夠通過(guò)GPU加速實(shí)現(xiàn)水墨擴(kuò)散算法,本文采用了LICDoG預(yù)處理方法提取任意輸入圖像的筆劃。
2.2.1 DoG濾波器預(yù)處理
DoG濾波器通過(guò)高斯卷積得到二階導(dǎo)數(shù)?2G,其可形式化定義為[11]:
得到濾波結(jié)果E(x,y)后,通過(guò)二值處理可得到最終的邊緣效果,可形式化定義為:
圖1 基于DoG濾波器預(yù)處理的水墨筆劃提取圖
2.2.2 計(jì)算圖像結(jié)構(gòu)張量
令F表示輸入圖像,Gσ,x和Gσ,y表示高斯分布在x軸方向和y軸方向的導(dǎo)數(shù),形式化定義為[12]:
局部方向定義為:θ= a rg(t)。對(duì)DoG濾波得到的邊緣圖像,以特征向量的方向場(chǎng)作為引導(dǎo)進(jìn)行LIC濾波即可渲染得到柔化的邊緣圖像。
2.2.3 LIC線積分卷積
LIC以DoG濾波得到的非連續(xù)邊緣作為輸入,對(duì)矢量場(chǎng)中的像素點(diǎn)沿特征向量方向計(jì)算流線,然后將流線對(duì)應(yīng)像素點(diǎn)的邊緣值進(jìn)行卷積,結(jié)果作為輸出邊緣值[13]:
式中Δst是第t步的步長(zhǎng),st是第t步后流線的長(zhǎng)度,th表示權(quán)值,由此可得LIC卷積像素灰度值[22],即:
Fou t(x , y )是輸出像素(x , y)處的灰度值,F(xiàn)in(pt)是邊緣圖像像素pt處的灰度值,pt和pt’分別是沿流線正、反方向第t步的像素坐標(biāo)值。l和l'分別是流線正、反方向的積分步數(shù),ht是權(quán)值,ht'表示反向權(quán)值[14]。
圖2 基于LIC線積分卷積的水墨筆劃柔化提取圖
水墨畫(huà)繪制過(guò)程中,其采用的宣紙紋理有一定細(xì)微的隨機(jī)褶皺。為模擬這一特征,本文采用Perlin噪聲函數(shù)來(lái)生成較為自然的隨機(jī)分形效果,如何利用二維Perlin噪聲模擬宣紙紋理的褶皺感,實(shí)現(xiàn)方法可參考文獻(xiàn)[7]。
通過(guò)運(yùn)用WLS計(jì)算模型將輸入的水墨畫(huà)筆跡圖像進(jìn)行濾波渲染,就可得到水墨擴(kuò)散圖像。將輸出的水墨特色渲染圖像與水墨畫(huà)宣紙紋理進(jìn)行融合,即可得到具有水墨風(fēng)格的最終輸出圖像。紋理圖像顏色混合模型類(lèi)似于Photoshop軟件提供的圖像正片疊底運(yùn)算[15],其可以形式化定義為:
公式中A代表基色;B代表混合色;C代表圖層混合后的顏色值,稱(chēng)為結(jié)果色。
圖3 水墨畫(huà)紋理圖像融合效果圖
圖4 水墨特色風(fēng)格渲染例圖
通過(guò)實(shí)驗(yàn)分析,受季智堅(jiān)的啟發(fā),本文發(fā)現(xiàn)能量函數(shù)的最優(yōu)化問(wèn)題可轉(zhuǎn)換為對(duì)一個(gè)N×N的大型稀疏線性方程組的求解[16]。為了提高算法的處理性能,本文采用CUDA庫(kù)中提供的基于稀疏矩陣運(yùn)算和求解的API函數(shù),利用GPU的高并行性有效減少了能量函數(shù)求解過(guò)程所需時(shí)間。
在進(jìn)行水墨特色風(fēng)格渲染時(shí),對(duì)輸入分辨率為256×256的圖像處理過(guò)程中,解方程耗時(shí)只需1秒左右,基本達(dá)到實(shí)時(shí)處理要求。關(guān)于如何利用GPU進(jìn)行稀疏矩陣的求解運(yùn)算可采用多種方式進(jìn)行,其中一類(lèi)解法具體實(shí)現(xiàn)原理及偽碼可參考王敬軒等人的工作[17],這里不再贅述。
圖5 CUDA稀疏矩陣求解架構(gòu)圖
本文采用Visual C++語(yǔ)言及CUDA語(yǔ)言實(shí)現(xiàn)核心算法。本文的創(chuàng)新點(diǎn)在與提出將加權(quán)最小二乘濾波應(yīng)用于水墨畫(huà)風(fēng)格渲染方面的思想,并以此構(gòu)建了一個(gè)較為簡(jiǎn)單的水墨擴(kuò)散模型,取得了較為良好的合成效果,并通過(guò)GPU加速實(shí)現(xiàn)了基于圖像的水墨特色實(shí)時(shí)擴(kuò)散渲染算法。但該模型仍存在大量需要改進(jìn)和優(yōu)化的工作,主要改進(jìn)方向就是如何實(shí)現(xiàn)隨宣紙紋理結(jié)構(gòu)進(jìn)行隨機(jī)的水墨擴(kuò)散羽化效果。