周華平, 汪曉燕, 桂海霞
(安徽理工大學(xué)計算機科學(xué)與工程學(xué)院,安徽 淮南 232001)
非真實感繪制(Non-photorealistic rendering,簡稱NPR)是自1995年開始逐漸形成的一項技術(shù),發(fā)展至今已經(jīng)成為計算機圖形學(xué)領(lǐng)域的一個熱點[1]。NPR通常是將自然圖片轉(zhuǎn)換為鉛筆畫、油畫、水粉畫或鋼筆畫等風(fēng)格。與真實感繪制(Photorealistic rendering)強調(diào)將原圖中所有細節(jié)展現(xiàn)出來不同的是,非真實感繪制以突出原圖欲傳達的重點為目標,必要時會舍棄一些細節(jié)以便更好得突出原圖主體。鉛筆畫的生成是NPR最為常見的一種表現(xiàn)形式,也是近年來學(xué)者研究的重點。遺憾的是,眾多學(xué)者都將目光放在輪廓圖和色調(diào)圖的生成兩個部分,而忽視了NPR突出重點區(qū)域這一特點,而這正是非真實繪制區(qū)別于真實繪制的最主要的特點。針對這個問題提出了一種改進的自然圖像生成鉛筆畫算法,用一種以頻率作為篩選條件的算法提取原圖的主體,將原圖分為主體區(qū)域和背景區(qū)域,對不同的區(qū)域進行不同的參數(shù)設(shè)置,以突出原圖的主體,使生成的鉛筆畫更符合NPR定義。
鉛筆畫生成技術(shù)以其廣大的應(yīng)用場景與經(jīng)濟價值,吸引著國內(nèi)外眾多學(xué)者對其生成過程進行不斷探索與改進。Lu等人[1]結(jié)合線條與紋理生成鉛筆畫的方法比較經(jīng)典,通過卷積運算生成筆畫圖S,調(diào)整色調(diào)結(jié)合紋理生成色調(diào)紋理圖T,最后將圖S與圖T融合,該算法生成效果自然。黃志勇等人[2]為追求更多細節(jié),在Lu的算法的基礎(chǔ)上,生成不同的層次與尺度,進行不同的筆畫模擬,使原圖中所有細節(jié)被清晰展現(xiàn)。文獻[3]在生成紋理步驟中進行改進,提取邊緣圖后通過運動模糊處理得到紋理圖,以獲得與手繪風(fēng)格比較接近的素描圖。文獻[4]分區(qū)域?qū)πK圖形進行紋理模擬,首先對原圖做霓虹處理后反相得到輪廓圖,將輪廓圖劃分為若干個子區(qū)域,最后在每個子區(qū)域內(nèi)用LIC生成紋理圖,將處理過的子圖合并得到輸出圖片。
可以發(fā)現(xiàn):分步生成線條輪廓圖與色調(diào)紋理圖,再將二者結(jié)合生成鉛筆畫是比較常用的方法。
攝影學(xué)中將人們感興趣的事物稱為主體,計算機圖形學(xué)將主體所在區(qū)域定義為顯著性區(qū)域(Saliency area,簡稱SA)。為突出主體,應(yīng)對顯著性區(qū)域做特殊處理,這就要求提取原圖的顯著區(qū)域。顯著性區(qū)域的提取可分為兩大類方法,一類是做視覺仿真,另一類是計算對比度,而對比度又可細分為局部和全局兩種。
IT模型[5]是第一個較為完善的顯著性檢測算法,Itti仿真人類搜尋顯著物體的過程,提取方位、顏色和灰度三個特征的拓撲圖,計算顯著區(qū)域,由于提出時間早,后人在此模型上做出了許多改進。AC算法[6]通過計算顏色與灰度的局部對比度確定顯著區(qū)域,計算簡單,但忽略了全局結(jié)構(gòu)。LC算法[7從顏色的全局對比度出發(fā),由于采用線性表達式,導(dǎo)致存在稀有色調(diào)時對判斷結(jié)果影響較大。RC算法[8]同時考慮顏色和空間關(guān)系的影響,但由于在預(yù)處理階段對原圖進行了分割,加大了計算時間,且輸出結(jié)果沒有明顯的邊界。
選用了頻率協(xié)調(diào)(Frequency-tuned,簡稱FT)算法,F(xiàn)T算法[9]將頻率作為篩選條件,以顏色與亮度作為影響顯著性的因素。該算法輸出的圖片不損失分辨率,保留了圖形邊界,且計算準確率最高。因此顯著性區(qū)域的提取借鑒了該方法,以便突出主體。
現(xiàn)有的顯著性提取算法存在:1.檢測不全面;2.顯著圖缺失邊界;3.計算復(fù)雜;4.輸出圖分辨率過低等問題。下面將會從上述問題產(chǎn)生的原因給出選擇FT算法的原因以及參數(shù)設(shè)置的依據(jù)。
FT模型通過設(shè)置一定的頻率范圍作為滿足顯著的條件,計算亮度、顏色與灰度均值的歐幾里得距離判斷顯著與否。假設(shè)fh為高頻截止值,fl為低頻截止值。因為主體過大時處于低頻域,導(dǎo)致問題1的出現(xiàn),因此,應(yīng)將fl設(shè)置得足夠低。邊緣處于高頻域,fh足夠大即可解決問題2。為了避免噪聲被檢測到,需將頻域內(nèi)的最高值剔除掉。至此,初步確定了一個帶寬為[fl,fh]的有限區(qū)間,為使檢測效果最好,不設(shè)置固定的范圍。
為解決問題3,選擇Matlab中可直接調(diào)用的高斯差分函數(shù)(Difference of Gaussians,簡稱DoG)作為帶通濾波器。DoG公式定義為:
G(x,y,σ1)-G(x,y,σ2)
(1)
(1)式中,σ1和σ2是DoG算子的標準差,當(dāng)σ1>σ2時,為獲得滿足條件的fl和fh,將σ1設(shè)置為無窮大,σ2無窮小(反之亦成立)。以顏色和亮度作為特征值計算顯著性,由于Lab模式比RGB模式多一個亮度通道“L”,故需將平滑后的圖像由RGB模式轉(zhuǎn)化為Lab模式。通過計算Lab模式下每個點與灰度均值的歐幾里得距離判斷其視覺重要性,表達式如下:
S(x,y)=‖IA-G(x,y)‖
(2)
(2)式中,IA為圖像平均灰度值,G(x,y)是平滑后點(x,y)處的Lab信息,其中G(x,y)=[LG,aG,bG]T,║║表示第二范數(shù)。
文獻[1]為減少計算量,向下取樣對圖片進行壓縮,嚴重縮小了圖片分辨率,導(dǎo)致問題4的出現(xiàn)。而FT算法完整保留了原圖分辨率,輸出圖片與原始圖片保持相同尺寸,效果如圖1。
a.輸入圖像 b.顯著性區(qū)域檢測 c.顯著性區(qū)域提取
畫家在繪制鉛筆畫的時候,通常先用簡單線條完成整體輪廓,然后添加聚集的弧線來表示顏色和紋理。在生成鉛筆畫的時候采取同樣的方法,分步生成線條圖與色調(diào)紋理圖。
為生成鉛筆畫輪廓,許多算法與文獻[4]一樣對圖片依次進行霓虹處理,反相和灰度化得到輪廓。但是,這樣生成的只是原圖的邊緣,而邊緣與素描畫的輪廓并不相同。邊緣線條是連續(xù)圓滑的,而素描畫的輪廓線條是斷開的、交叉的。因此,本模型并不直接使用邊緣圖,而是由邊緣卷積生成輪廓筆畫。
對于邊緣線條的提取,選擇Canny算子[10],因為它在抑制噪聲方面優(yōu)于差分運算、Sobel算子、Prewitt和Roberts等邊緣提取算法,且輸出清晰。Canny算子的原理:用高斯函數(shù)平滑噪聲后計算其梯度,結(jié)合微分性質(zhì)抑制梯度信息里的非極大值,最后用一組閾值剔除非邊緣點,留下邊緣點將其連接成邊緣圖。因前文在提取顯著性區(qū)域時已經(jīng)利用高斯平滑函數(shù)對圖片進行降噪處理,故本階段省略了降噪步驟,直接使用高斯平滑后得到的圖作為輸入圖像,計算梯度提取邊緣。
為生成具有人類手繪風(fēng)格,斷開、交叉的輪廓線條,借鑒了文獻[1]中生成輪廓圖的方法。首先以22.5°為間隔將二維空間分為八個參考方向,經(jīng)過多次試驗,選擇以輸入圖片長度的1/30作為線條長度,生成八個方向的短線段。判斷邊緣圖中的線段屬于哪個方向的判別式為:
Ei=Li*E
(3)
式(3)中Li為第i個方向的短線,其中i∈{1,2,…,8}。沿著8個方向?qū)吘増DE進行卷積,將響應(yīng)的線段定義為Ei。利用判別式對線段進行組合,其表達式為:
(4)
式(4)中,p表示像素,將響應(yīng)第i個方向上所有短線的像素賦值給Bi,以組合形式輸出,接著對下一個方向進行同樣的操作,一直到所有的Ei都被分類。值得注意的是此時只是根據(jù)卷積運算將圖像邊緣圖分成了8個方向的子圖,為獲得素描畫特有的線條圖,還需將Bi與Li再次進行卷積:
(5)
將Bi中的曲線沿著方向i卷積成短的、交叉的直線,合并后得到輪廓線條圖。采用此方法生成輪廓圖,效果生動,貼近人類手繪風(fēng)格,為方便理解,給出圖2所示步驟圖。
a.輸入圖 b.提取邊緣 c.反相操作 d.卷積生成具有手繪風(fēng)格的線條圖
圖2 根據(jù)邊緣圖生成的線條圖過程
a.輸入圖片 b.文獻[1]效果 c.改進后效果
圖4 背景區(qū)域填充紋理與顯著區(qū)域填充紋理
根據(jù)NPR定義,為使主體能在整幅圖中引起視覺關(guān)注,做出如下的設(shè)置:顯著區(qū)域線條粗細為2、長度為區(qū)間[6,9],背景區(qū)域線條粗細為1,長度為區(qū)間[10,13]。[6,13]是經(jīng)過各種不同尺寸輸入圖片測試效果最佳的線條長度范圍,具體的數(shù)值大小隨輸入圖片大小改變。由于計算能力過強,文獻[1]中原始圖片中虛化區(qū)域的線條也被計算出,這并不符合NPR定義。為解決這個問題,根據(jù)區(qū)域的顯著與否設(shè)置不同的參數(shù),強調(diào)主體,同時對背景稍加抑制,得到主次分明的鉛筆畫,效果如下。
Lu等人[1]發(fā)現(xiàn)用灰度圖直接生成色調(diào)并不科學(xué),因為灰度圖的曲線呈中間高兩邊低趨勢,而鉛筆畫直方圖只有在到達高亮度區(qū)域的某一個臨界值時呈爆發(fā)式增長。這種分布規(guī)律是因為在鉛筆畫中黑色像素很少,空白區(qū)域所占比例較大,而且與線條的亮度值差距很大,導(dǎo)致在亮區(qū)域的某一臨界值,曲線會陡然上升。根據(jù)這個特點分別用拉普拉斯分布、均勻分布和高斯分布表示鉛筆畫的陰影層、中間層和高光層,最后使用參數(shù)模型對色調(diào)進行調(diào)整,表達公式如下:
(6)
(7)
(8)
其中p1(r),p2(r)和p3(r)分別表示陰影層、中間層和高光層,r為色調(diào)值,σa決定陰影區(qū)域峰值,根據(jù)觀察設(shè)為9,ua和ub確定了中間層的色調(diào)范圍,分別為105,205,將高斯分布中的比例參數(shù)σb設(shè)為11,ν為陰影層平均值,一般為90。將定義好的色調(diào)模式映射到鉛筆畫中,公式如下:
(9)
式(9)中,wi為pi(r)所對應(yīng)的權(quán)重,N為歸一化因子,值為3。原文作者對于w1:w2:w3給出的一組參考數(shù)據(jù)為11:37:52。發(fā)現(xiàn)將w1,w2和w3設(shè)置為可調(diào)整輸出效果更好,例如:輸入圖片的中間色調(diào)分布較多,在映射色調(diào)的時候可以將w2設(shè)置的大一點。
為突出主體,需要加深顯著區(qū)域的色調(diào),同時對背景區(qū)域的色調(diào)做適量削弱。設(shè)置方法為加大顯著性區(qū)域w2和w3所占比例,使顏色變亮、加深,同時減小背景區(qū)域w1所占比例,畫面變白在視覺上有變淡的效果。按照定義的公式,用組映射規(guī)則(group mapping law,簡稱GML)對原始圖片的色調(diào)值進行規(guī)定化處理。
根據(jù)觀察,畫家在繪制鉛筆畫的時候,背景區(qū)域一般采用平行的、方向一致的弧線快速填充,與之相反的是主體部分往往是經(jīng)過精雕細琢繪制的。因此,對于紋理的模擬,根據(jù)區(qū)域選擇不同的紋理圖進行填充。選擇圖4左圖填充背景區(qū)域,右圖用來填充顯著性區(qū)域,由于個人繪畫習(xí)慣不同,可將左圖旋轉(zhuǎn)獲得不同方向的紋理。
本實驗硬件環(huán)境為第四代英特爾酷睿i5-4210U雙核處理器(1.7G赫茲,睿頻可達2.7G赫茲),32G內(nèi)存,硬盤500GB,2GB獨立顯存,Windows10 64位操作系統(tǒng),軟件環(huán)境為MatlabR2016b版本。本模型生成的鉛筆畫在建筑、植物、人物等風(fēng)格中表現(xiàn)效果都很好,篩選了部分生成的鉛筆畫展示如下:
圖5 部分鉛筆畫生成效果展示
a.原始圖片 b.文獻[1]效果 c.改進后效果
生成鉛筆畫的模型借鑒并改進了文獻[1],取得了更好得結(jié)果:(1)在生成線條圖時文獻[1]使用差分運算提取邊緣信息,替換成Canny算子提取的邊緣更清晰、完整,且有較好的抗噪能力;(2)模擬色調(diào)時,文獻[1]中w1:w2:w3提供固定值以供選擇,實驗發(fā)現(xiàn)將色調(diào)值設(shè)為可調(diào)使鉛筆畫色彩更明艷;(3)在模擬紋理時,文獻[1]用共軛梯度求解法設(shè)置不同密度紋理,為簡便實驗過程,選取了不同的紋理直接填充不同區(qū)域,方法更為簡單,且效果貼合素描畫的特點。通過改進,生成了更為符合NPR定義的鉛筆畫,實現(xiàn)了突出主體且貼近人類手繪風(fēng)格等要求,如圖6所示。
針對目前非真實感繪制存在有悖NPR定義的情況,提出改進算法,根據(jù)NPR強調(diào)突出主體這一特點,將輸入圖片劃分為顯著性區(qū)域與背景區(qū)域。并借鑒經(jīng)典算法,分別生成輪廓線條圖與色調(diào)紋理圖。根據(jù)所屬區(qū)域的視覺重要性設(shè)置不同粗細與長短的線條,填充不同密度、色調(diào)與方向的紋理,突出原圖重點。通過大量實驗對比發(fā)現(xiàn)改進的方法更為符合NPR的定義,主體明顯,且繪制的線條清晰生動,紋理十分接近手繪風(fēng)格。由于改進的方法不依賴機器學(xué)習(xí),對各種風(fēng)格的圖片都有較好的兼容性,故在各個領(lǐng)域都具有較強的使用價值。但本方法也存在不足,即參數(shù)設(shè)置較為繁瑣,接下來的工作將致力于解決這個問題,并嘗試將之運用到視頻當(dāng)中,生成動畫風(fēng)格的視頻。