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