李小強(qiáng),朱玲艷,程 輝
(1.河南省數(shù)控應(yīng)用技術(shù)工程研究中心,河南 鄭州 450046;2.河南工業(yè)大學(xué) 信息科學(xué)與工程學(xué)院,河南 鄭州 450001;3.英國赫特福德大學(xué) 計算機(jī)科學(xué)學(xué)院,赫特福德 哈特菲爾德 AL109AB)
非真實感繪制技術(shù)(Non-photorealistic rendering,NPR)主要是對藝術(shù)作品風(fēng)格的仿真,表現(xiàn)出藝術(shù)特質(zhì),是計算機(jī)藝術(shù)中最活躍的分支之一[1]。其中,對鉛筆畫素描風(fēng)格進(jìn)行模擬受到研究學(xué)者的廣泛關(guān)注,因此涌現(xiàn)出很多鉛筆畫繪制算法。這些算法主要包括圖像輪廓和色調(diào)紋理兩個部分。傳統(tǒng)的邊緣檢測算法通常應(yīng)用在圖像的前期處理中,雖然易于實現(xiàn),但是提取的圖像邊緣較為瑣碎,易生成噪聲點(diǎn)[2]。Lu等[3]提出二次卷積方法,生成的圖像輪廓具有畫家繪制鉛筆畫線條的交叉感,但是算法在提取輪廓時沒有考慮到細(xì)節(jié)信息,尺度單一。黃志勇等[4]為了增強(qiáng)圖像細(xì)節(jié)信息,提取圖像不同層次的信息,并采用不同種類型的筆畫繪制輪廓線條,但是由于細(xì)節(jié)信息過度疊加,導(dǎo)致結(jié)果圖像中出現(xiàn)線條過重的效果。趙春暉等[5]為保留更多的細(xì)節(jié)信息,采用基于多尺度的小波變換方法模擬生成線條輪廓圖。在色調(diào)紋理生成算法方面,劉磊等[6]提出自適應(yīng)的高斯噪聲圖與線積分卷積(Line integral convolution,LIC)相結(jié)合生成鉛筆畫紋理的方法,但是這個方法得到的紋理方向不靈活多變。王冰[7]提出基于圖像梯度的多向紋理人臉?biāo)孛璁嬌伤惴?主要思想是提取出背景圖像的邊緣、陰影與根據(jù)背景圖生成的多向紋理圖、模糊圖進(jìn)行融合,生成素描圖像??兹簳蟍8]在分析了幾種噪聲模型的基礎(chǔ)上,提出了一種新的混合噪聲模型,替換了傳統(tǒng)基于LIC的鉛筆素描模擬方法中所采用的隨機(jī)二值白噪聲。使用混合噪聲模型結(jié)合LIC模擬鉛筆畫局部走勢紋理,能夠較好地模擬生成類似真實鉛筆畫紋理,但是難以生成清晰可辨的紋理。Lu等[3]提出從真實鉛筆畫色調(diào)作映射得到色調(diào)合成結(jié)果,然而這種方法需要真實的鉛筆畫色調(diào)紋理,無法依靠計算機(jī)自動生成。孫丹丹等[9]提出應(yīng)用運(yùn)動模糊代替LIC模擬鉛筆畫紋理,雖然速度上有較大提高,但是方向單一。
通過對現(xiàn)有算法的分析比較,目前邊緣提取算法主要存在兩個方面的問題,一方面是提取的輪廓尺度單一,畫面細(xì)節(jié)丟失;另一方面是提取的輪廓冗長,缺乏畫家勾勒輪廓線條交叉的真實感。因此本文將B樣條小波變換和二次卷積算法融合,生成的圖像輪廓既具有交叉感又能夠突出細(xì)節(jié)信息,輪廓更加平滑且不粗重。在色調(diào)紋理生成方面提出基于Meanshift分割在亮度圖上添加高斯噪聲生成噪聲圖、應(yīng)用運(yùn)動模糊分區(qū)域生成不同方向紋理圖,生成的鉛筆畫紋理清晰,方向多變且減少了算法執(zhí)行時間。
算法根據(jù)輸入圖像生成具有鉛筆畫藝術(shù)效果的圖像,主要包括輪廓圖生成和多方向紋理圖生成兩個部分。首先,使用B樣條小波變換和二次卷積獲得兩幅輪廓圖,再分別對兩幅輪廓圖進(jìn)行4層Haar小波分解,按照兩幅輪廓圖分解得到的各層對應(yīng)高頻系數(shù)取大值,低頻系數(shù)取均值策略進(jìn)行融合再重構(gòu),進(jìn)而得到最終的輪廓圖。其次,引入Meanshift算法分割圖像,計算各圖像區(qū)域內(nèi)的梯度均值向量作為當(dāng)前區(qū)域的紋理方向結(jié)合運(yùn)動模糊的方法得到多方向紋理圖。最后,輪廓圖和紋理圖通過點(diǎn)乘生成最終鉛筆畫圖。圖1為本文算法框架圖。
圖1 本文算法框架圖
1.1.1 B樣條小波變換
針對目前邊緣提取算法提取的輪廓尺度單一、畫面細(xì)節(jié)丟失問題,采用B樣條小波變換。因為B樣條小波用于邊緣檢測時,其在邊緣定位準(zhǔn)確性和邊緣連續(xù)性方面的性能均優(yōu)于常見的微分算子[10,11]。
設(shè)θ(x,y)是二維小波平滑函數(shù),且?θ(x,y)dxdy≠0。沿x,y兩個方向上的一階導(dǎo)數(shù)
(1)
在進(jìn)行小波變換時,圖像f(x,y)的兩個分量在尺度為s=2j(j=1,2,3,…)時的定義如下。
沿x方向
(2)
沿y方向
(3)
矢量形式可記為
(4)
梯度矢量的模值為
(5)
梯度矢量與水平軸的夾角為
(6)
由于圖像的邊緣是梯度矢量與水平軸的夾角方向上的模值的極大值點(diǎn),因此,僅需檢測A2jf(x,y)方向上的模M2jf(x,y)的極大值點(diǎn),就可獲得多尺度的邊緣點(diǎn)。
1.1.2 二次卷積
在實際的鉛筆畫創(chuàng)作中,藝術(shù)家通常不會畫一些很長并且不中斷的曲線,線條通常在彎曲處或匯合處結(jié)束。因此在藝術(shù)家的作品中可以發(fā)現(xiàn),兩條線的匯合處或曲線的彎曲處會出現(xiàn)交叉現(xiàn)象,這是人手繪線條的一個重要特征。基于這一特征,運(yùn)用二次卷積方法模擬線條交叉效果。
將輸入圖像轉(zhuǎn)換為灰度圖像,計算灰度圖的梯度,得到梯度圖。對梯度圖采用二次卷積的方法實現(xiàn)線條交叉效果。
(1)首先計算圖像梯度,得到梯度圖G
(7)
(2)為了模擬鉛筆畫具有交叉感的筆畫細(xì)節(jié),對梯度圖G分別進(jìn)行8個方向的卷積,即0°、22.5°、45°、67.5°、90°、112.5°、135°、157.5°。形成8個方向的響應(yīng)圖
Gi=ξi*G
(8)
式中:ξi為第i個方向上的卷積算子,Gi為i個方向上的響應(yīng)圖,i={1,2,3,…,8}。
(3)計算8個方向上的響應(yīng)圖的最大值作為結(jié)果
(9)
式中:i為第i個方向,Ci(p)為像素點(diǎn)p在第i個方向的最大響應(yīng)值,G(p)為像素點(diǎn)p的輪廓值。
(4)對得到的各個方向的響應(yīng)圖再次進(jìn)行方向卷積,即
(10)
S=1-S′
(11)
對S′取反后即可得到鉛筆畫輪廓圖S。
1.1.3 輪廓圖像融合
B樣條小波變換提取的輪廓細(xì)節(jié)與信息豐富,但是提取的線條粗重冗長。二次卷積算法生成的輪廓圖細(xì)節(jié)信息丟失但是具有線條交叉這一特點(diǎn)。因此融合B樣條小波變換與二次卷積算法能夠彌補(bǔ)常用的邊緣提取算法在提取輪廓時的不足。具體算法如下:
(1)分別對B樣條小波變換提取的輪廓圖W和二次卷積方法提取的輪廓圖S用Haar小波實現(xiàn)四層分解。
(2)在低頻系數(shù)中,分別提取W_A和S_A的第4層低頻系數(shù),并求均值。W_A表示輪廓圖W小波分解后的低頻系數(shù),S_A表示輪廓圖S小波分解后的低頻系數(shù)。
(3)在高頻系數(shù)中,提取W_H和S_H第4層中絕對值大的系數(shù),W_H表示輪廓圖W的H(4)|V(4)|D(4)第4層高頻系數(shù),S_H表示輪廓圖S的H(4)|V(4)|D(4)第4層高頻系數(shù)。
(4)根據(jù)(2)和(3)得到圖像Y,通過小波逆變換獲得的重構(gòu)圖像是最終的輪廓圖。
圖2顯示了輪廓提取的結(jié)果。將圖2(b)、圖2(c)分別與圖2(d)比較可以看出,圖2(b)線條具有交叉感,但是在細(xì)節(jié)處不夠清晰,圖2(c)線條粗重不平滑,但是能夠保留細(xì)節(jié)信息,而圖2(d)線條完整清晰,平滑不模糊,且在交接處線條會有交叉。
圖2 不同方法輪廓提取結(jié)果圖
1.2.1 圖像分割
本文選擇Meanshift分割算法,根據(jù)顏色聚類對圖像進(jìn)行分割。Meanshift算法是一種結(jié)合聚類理論的區(qū)域分割方法,其基本思想如下:設(shè)d維空間Rd中有n個樣本點(diǎn)xi(i=1,2,3,…,n),(xi-x)為樣本點(diǎn)xi與中心點(diǎn)x的偏移量,則在x點(diǎn)處的Meanshift向量為
(12)
式中:Sh半徑為h的高維球區(qū)域,區(qū)域內(nèi)的點(diǎn)為
Sh(x)={y∶(y-xi)T(y-xi)≤h2}
(13)
式中:k為落在高維球區(qū)域內(nèi)的樣本點(diǎn)的個數(shù),則Mh(x)表示在高維球區(qū)域內(nèi)的所有樣本點(diǎn)xi與中心點(diǎn)x的偏移量的平均值。
引入核函數(shù)后,x點(diǎn)的Meanshift向量的形式為
(14)
式中:G(x)是核函數(shù),h是寬帶。
令初始點(diǎn)為x=yj,循環(huán)執(zhí)行式(15)直至收斂即可得到對應(yīng)的模值點(diǎn)y
(15)
將色度相同或相近的像素歸為一類,達(dá)到圖像平滑。對平滑后的圖像進(jìn)行區(qū)域合并,剔除細(xì)小區(qū)域,以限制最終分割的區(qū)域大小。
1.2.2 白噪聲圖的生成
在現(xiàn)有的鉛筆畫模擬算法中通常使用的是隨機(jī)白噪聲模型,但是這個噪聲模型具有一定的局限性,如在暗處模擬產(chǎn)生的線條不細(xì)膩,易出現(xiàn)色塊現(xiàn)象。為了改進(jìn)這一問題,同時使生成的噪聲圖體現(xiàn)圖像的明暗特點(diǎn),在本文中提出了高斯噪聲替換隨機(jī)白噪聲,此噪聲表示如下
(16)
式中:Iv(x,y)為亮度圖像素點(diǎn)(x,y)的亮度值;G(x,y)是高斯模型生成的噪聲圖;Inoise是依據(jù)亮度圖產(chǎn)生的噪聲圖;T=k(1-Iv(x,y)),k是比例系數(shù),k∈[0,1.0];P為隨機(jī)數(shù),控制噪聲點(diǎn)產(chǎn)生幾率。
根據(jù)文獻(xiàn)[9]提出的算法生成的噪聲圖與本文算法生成的噪聲圖效果如圖3所示。
圖3 不同算法噪聲圖效果
1.2.3 紋理圖的生成
對鉛筆畫紋理的模擬在鉛筆畫生成方法中非常關(guān)鍵,LIC是一種模擬筆觸紋理的重要方法,但是這種方法需要花費(fèi)大量的時間,而且畫家在實際的繪畫中紋理走向是多變的,LIC無法靈活運(yùn)用。運(yùn)動模糊方法原是用來生產(chǎn)物體運(yùn)動狀態(tài)的效果,沿著特定方向?qū)D像進(jìn)行特定強(qiáng)度的模糊處理[9]。文獻(xiàn)[9]對白噪聲圖進(jìn)行運(yùn)動模糊生成的效果與鉛筆畫紋理相似,且生成速度快,應(yīng)用靈活,因此本文采用運(yùn)動模糊生成鉛筆畫紋理。
在實際繪畫過程中,畫家會考慮物體的局部結(jié)構(gòu)特征,并根據(jù)圖像的亮度分布和層次感來決定筆觸的走向,用細(xì)膩的筆觸體現(xiàn)所繪制物體的方向特征,而不會使用單一方向進(jìn)行繪制[8,12]。為了避免紋理方向單一問題,本文引入了Meanshift算法分割圖像,針對不同區(qū)域利用運(yùn)動模糊算法賦予不同的方向紋理。算法步驟如下。
步驟1首先對亮度圖像進(jìn)行卷積運(yùn)算,得到亮度圖像在水平和豎直兩個方向上的梯度場,其計算公式如下
(17)
式中:Gx(i,j)和Gy(i,j)分別為亮度圖像在水平方向和豎直方向的梯度。
步驟2在鉛筆畫繪制過程中,畫家通常在同一個區(qū)域內(nèi)使用相同的方向來繪制。因此本文通過計算一個區(qū)域內(nèi)的所有像素的梯度均值作為區(qū)域的整體梯度。本文將求得的區(qū)域平均梯度作為每個區(qū)域運(yùn)動模糊的角度。
步驟3創(chuàng)建運(yùn)動濾波器,將白噪聲圖與預(yù)定義的運(yùn)動濾波器生成的模塊進(jìn)行濾波運(yùn)算,根據(jù)不同區(qū)域設(shè)定不同方向,就可以得到具有不同方向的紋理圖。如圖4顯示的是Meanshift分割圖與運(yùn)動模糊的紋理圖,從中可以看出,每個區(qū)域?qū)?yīng)不同的方向紋理且紋理效果比較自然。
圖4 運(yùn)動模糊結(jié)果圖
最終,將上述算法中得到的輪廓圖與紋理圖進(jìn)行點(diǎn)乘運(yùn)算,生成鉛筆畫效果圖。
本文算法通過MATLAB 2018b編程實現(xiàn)。實驗用計算機(jī)配置為Intel(R)Core(TM)i7CPU,主頻3.79 GHz,內(nèi)存16G,GeForce RTX 2080super獨(dú)立顯卡,64位Windows10系統(tǒng)。利用本文提出的算法對自然圖像進(jìn)行測試,從實驗結(jié)果可看出,本文算法能得到較好的鉛筆畫效果。
本文方法得到的輪廓圖結(jié)果與其他文獻(xiàn)方法得到的輪廓圖結(jié)果如圖5所示。與文獻(xiàn)[3]方法得到的結(jié)果相比,本文方法結(jié)果中會保留更多的圖像細(xì)節(jié),同時也能保留線條的交叉感;與文獻(xiàn)[9]Kirsch方法得到的結(jié)果相比,Kirsch方法雖然可以勾勒出原圖的輪廓,但是由于缺少對細(xì)節(jié)信息的處理,細(xì)節(jié)處的線條不夠清晰,細(xì)節(jié)處虛而不實,而本文方法結(jié)果得到的輪廓線更加平滑清晰不粗重。
圖5 本文輪廓圖結(jié)果與文獻(xiàn)[3]、文獻(xiàn)[9]比較
本文提出在亮度圖上添加高斯噪聲替換隨機(jī)二值白噪聲,利用隨機(jī)數(shù)控制噪聲點(diǎn),這樣產(chǎn)生的紋理既有疏密效果,同時也有畫面深淺的效果。本文方法得到的紋理圖結(jié)果與其他文獻(xiàn)方法得到的紋理圖結(jié)果的對比如圖6所示。從結(jié)果可以看出,文獻(xiàn)[3]雖能生成較為理想的鉛筆畫結(jié)果,紋理也較為柔和,但缺少方向感。因為在真實繪畫中,藝術(shù)家使用不同方向的筆觸來描繪事物的結(jié)構(gòu)特征。本文在Meanshift分割的基礎(chǔ)上分析各個區(qū)域的紋理走向,以此生成方向多變的紋理。文獻(xiàn)[9]由于在亮度較大的地方產(chǎn)生的噪聲較少,應(yīng)用運(yùn)動模糊生成的紋理不明顯不清晰,無法體現(xiàn)紋理疏密效果,且方向單一。文獻(xiàn)[12]生成的紋理圖線條凌亂,紋理方向感不足,紋理不夠細(xì)膩。而本文方法在亮度較大的地方也能生成較多的噪聲,在設(shè)置與文獻(xiàn)[9,12]相同參數(shù)的情況下,應(yīng)用運(yùn)動模糊生成的紋理也是清晰細(xì)膩的。
圖6 本文鉛筆畫結(jié)果與文獻(xiàn)[3]、文獻(xiàn)[9]、文獻(xiàn)[12]比較
通過圖7與表1的運(yùn)行時間對比可看出使用運(yùn)動模糊方法生成的紋理效果與運(yùn)用LIC方法生成的紋理效果相似,但運(yùn)用運(yùn)動模糊方法方向靈活多變,且生成的紋理較LIC方法更清晰真實。同時在時間消耗上也可看出運(yùn)動模糊方法生成紋理速度上更快。
圖7 本文LIC方法結(jié)果與運(yùn)動模糊結(jié)果對比
表1 LIC與運(yùn)動模糊運(yùn)行時間對比
針對現(xiàn)有鉛筆畫算法生成的輪廓細(xì)節(jié)丟失,線條不清晰等問題,本文提出融合B樣條小波變換與二次卷積算法,得到的輪廓線條平滑完整,連通性好,且具有交叉感。常用的LIC方法由于使用隨機(jī)白噪聲生成的紋理不清晰,且執(zhí)行速度慢。針對這一問題,本文提出在亮度圖上添加高斯噪聲替換隨機(jī)二值白噪聲,利用隨機(jī)數(shù)控制噪聲點(diǎn),生成的紋理既有疏密效果,同時也能體現(xiàn)畫面的深淺效果。應(yīng)用運(yùn)動模糊方法生成的紋理與LIC類似,但是算法速度有所提高,同時使用Meanshift分割,根據(jù)不同區(qū)域使用不同方向,避免了畫面方向單一問題,更加有靈活性。實驗證明,本文方法可以產(chǎn)生較好的鉛筆畫藝術(shù)效果圖。