摘 要:NPR技術(shù)是計(jì)算機(jī)領(lǐng)域的研究熱點(diǎn),其中彩色素描算法已有許多研究成果,但是存在算法復(fù)雜以及主體不突出等問(wèn)題。本文針對(duì)這些問(wèn)題提出一種基于YOLOv8對(duì)圖片進(jìn)行預(yù)處理的算法,該算法識(shí)別主體后定義為重要區(qū)域,分別生成線條圖圖層和紋理圖圖層,使用梯度計(jì)算得到線條圖,再卷積不同方向的短線,生成具有手繪特點(diǎn)的素描線條,紋理圖是將手繪紋理映射至圖案中進(jìn)行填充。進(jìn)行分區(qū)域、分圖層的參數(shù)設(shè)置后合成2個(gè)圖層,得到主體突出的彩色素描畫(huà)。生成的彩色素描畫(huà)主體突出且具有手繪風(fēng)格,更加符合NPR定義,能夠在計(jì)算機(jī)視覺(jué)領(lǐng)域得到廣泛應(yīng)用。
關(guān)鍵詞:NPR技術(shù);彩色素描畫(huà);YOLOv8;線條圖;紋理圖
中圖分類號(hào):TP 31 " " " " " 文獻(xiàn)標(biāo)志碼:A
1 彩色素描畫(huà)相關(guān)算法
將自然圖像轉(zhuǎn)化為彩色素描是非真實(shí)感渲染(Non-Photorealistic Rendering,NPR)領(lǐng)域的重要分支,NPR技術(shù)采用計(jì)算機(jī)技術(shù)使圖像更具有藝術(shù)性[1],例如將圖像轉(zhuǎn)換為彩色素描畫(huà)、水墨畫(huà)、水粉畫(huà)、鋼筆畫(huà)和木刻畫(huà)等。
其中,將自然圖像生成彩色素描是NPR技術(shù)領(lǐng)域的熱點(diǎn),已有許多學(xué)者研究并得到成果。本文改進(jìn)已有的彩色素描算法,突破性地在素描畫(huà)生成過(guò)程中使用YOLOv8算法檢測(cè)原始圖像目標(biāo),將檢測(cè)結(jié)果確定為主體區(qū)域,分區(qū)域設(shè)置參數(shù),達(dá)到強(qiáng)化重要區(qū)域的目的。除檢測(cè)主體外,本文模擬人類繪制彩色素描的過(guò)程,將圖片分成2個(gè)圖層,分別為素描畫(huà)的線條圖層和填充的彩色紋理圖層。分區(qū)域、分圖層進(jìn)行參數(shù)設(shè)置,使生成的彩色素描主體突出。
1.1 彩色素描仿真算法
自動(dòng)生成彩色素描是藝術(shù)以及科研領(lǐng)域的研究熱點(diǎn),已有許多成熟的算法。文獻(xiàn)[2]提供了一種利用形體特征的方法,使生成的鉛筆素描中的物體具有立體幾何感。文獻(xiàn)[3]的方法使用局部回歸模型獲得輸入圖片與生成的素描之間的映射關(guān)系,并將映射關(guān)系投射至輸出圖像中,使生成的鉛筆素描同時(shí)具有藝術(shù)特征。文獻(xiàn)[4]對(duì)提取的線條進(jìn)行膨脹和腐蝕操作后去并集,得到雙邊輪廓,生成素描輪廓圖,再與運(yùn)動(dòng)模糊(Motion Blur)得到的紋理融合仿真成為鉛筆畫(huà)。文獻(xiàn)[5]使用的鉛筆畫(huà)方法的筆畫(huà)基于梯度信息,填充區(qū)域基于色調(diào)信息,圖像整體具備手繪風(fēng)格。文獻(xiàn)[6]的筆畫(huà)圖和紋理圖使用線積分卷積(Line Integral Convolution,LIC)、模糊掩蓋銳化處理(Unsharp Mask,USM)和基于點(diǎn)向量場(chǎng)的3種方法。文獻(xiàn)[7]提出的彩色素描自動(dòng)生成算法將輸入圖片中的純黑和純白像素點(diǎn)顏色重置為圖片的平均灰度值,作者認(rèn)為這樣操作能夠解決彩色素描顏色失真的問(wèn)題。
有一些生成彩色鉛筆畫(huà)算法[8]的思路與人類手工繪制素描一致,分階段生成素描畫(huà),第一階段先用線條確定物體輪廓和形狀,第二階段用密集的筆畫(huà)填充形狀,表示所繪物體的紋理、顏色和明暗等特征。文獻(xiàn)[9]在生成線條圖階段對(duì)生成彩色素描算法進(jìn)行改進(jìn),作者利用提取的線條進(jìn)行形態(tài)學(xué)操作,將4個(gè)方向的探頭遍歷線條像素點(diǎn),修復(fù)了線條之間的斷點(diǎn),使生成的線條更連貫。
1.2 目標(biāo)檢測(cè)算法
目標(biāo)檢測(cè)(Object Detection)確定并定位圖片中的目標(biāo)物體,目標(biāo)檢測(cè)算法分為使用傳統(tǒng)方法檢測(cè)階段和使用基于深度學(xué)習(xí)的方法檢測(cè)階段,傳統(tǒng)方法模仿人類鎖定視覺(jué)中心的方法確定主體,由于技術(shù)限制,傳統(tǒng)方法存在準(zhǔn)確率低的缺點(diǎn),因此更多學(xué)者采用基于深度學(xué)習(xí)的方法,以計(jì)算步驟為劃分依據(jù)?;谏疃葘W(xué)習(xí)的方法分為二階段目標(biāo)檢測(cè)算法和一階段目標(biāo)檢測(cè)算法。
在二階段算法中,第一階段生成粗略候選框以及對(duì)應(yīng)標(biāo)簽,第二階段使用卷積神經(jīng)網(wǎng)絡(luò)確定目標(biāo)候選框,是一個(gè)由粗到細(xì)的確定過(guò)程。最早的二階段目標(biāo)檢測(cè)算法是R-CNN算法,該算法繼承傳統(tǒng)目標(biāo)檢測(cè)算法的思路。首先,生成候選框;其次,對(duì)候選框進(jìn)行訓(xùn)練,生成標(biāo)簽;再次,分類;最后,進(jìn)行非極大值抑制等一系列操作來(lái)確定目標(biāo)。R-CNN算法首次將深度學(xué)習(xí)運(yùn)用于目標(biāo)檢測(cè)中,意義重大,但是存在計(jì)算復(fù)雜的缺點(diǎn)。后來(lái)提出的SPP-Net算法利用空間金字塔池化層在不同層次中收集并生成具有固定長(zhǎng)度的特征圖,以減少在檢測(cè)過(guò)程中由于多次縮放造成的影響,但是SPP-Net存在在池化過(guò)程中參數(shù)不可更改的缺點(diǎn)。Fast R-CNN算法對(duì)上述算法進(jìn)行了改進(jìn),整合了R-CNN算法的思路和SPP-Net空間金字塔池化層模型,創(chuàng)新地引入ROI池化層,使算法在計(jì)算速率方面明顯提升。
一階段算法中最典型的模型是由YOLOv1發(fā)展至如今YOLOv8的YOLO(You Only Look Once)系列算法。YOLO算法使用一個(gè)CNN將目標(biāo)檢測(cè)算法優(yōu)化為一個(gè)單一回歸問(wèn)題,不需要對(duì)圖片進(jìn)行訓(xùn)練或預(yù)測(cè),不僅簡(jiǎn)化了檢測(cè)過(guò)程,還提高了檢測(cè)精度,具有即時(shí)性?;谶@個(gè)特點(diǎn),本文使用改進(jìn)后的的YOLO算法,即現(xiàn)在已經(jīng)發(fā)展成熟的YOLOv8算法來(lái)確定彩色素描畫(huà)的主體。
2 基于YOLOv8的彩色素描畫(huà)生成過(guò)程
本文對(duì)傳統(tǒng)生成素描的方法進(jìn)行改進(jìn),創(chuàng)新地使用YOLOv8確定原圖主體,在繪制鉛筆畫(huà)的過(guò)程中采用分圖層生成方法。首先,繪制素描線條圖層,其次,繪制填充的紋理圖層,最后,進(jìn)行融合,達(dá)到彩色素描效果。
2.1 改進(jìn)的YOLOv8目標(biāo)檢測(cè)算法
YOLOv8創(chuàng)新地引入SOTA模型,YOLO系列算法的最新技術(shù)是將原系列的C3模塊改進(jìn)為C2f模塊,其借鑒了YOLOv5和YOLOv6等算法的思路,保留了YOLO算法過(guò)程簡(jiǎn)潔這個(gè)優(yōu)點(diǎn),進(jìn)一步壓縮了算法的時(shí)間開(kāi)銷,提高了準(zhǔn)確率。YOLOv8 網(wǎng)絡(luò)結(jié)構(gòu)改進(jìn)對(duì)比如圖1所示,由圖1可知YOLOv8改進(jìn)有以下5個(gè)部分。
2.1.1 改進(jìn)一
YOLOv8骨干網(wǎng)絡(luò)部分使用C2f模塊替換了YOLOv5中的C3模塊,具體改動(dòng)內(nèi)容包括以下3個(gè)部分。1)將YOLOv5第一個(gè)卷積層的內(nèi)核大小由6×6改為YOLOv8的3×3,簡(jiǎn)化了卷積計(jì)算。2)增加Split層,提高了精度。3)Block數(shù)由YOLOv5中C3模塊的3-6-9-3改為YOLOv8中C2f模塊的3-6-6-3,降低了計(jì)算開(kāi)銷。
2.1.2 改進(jìn)二
與YOLOv5相比,YOLOv8的Neck區(qū)域減少了1×1采樣層,在優(yōu)化計(jì)算復(fù)雜度方面有所改進(jìn)。
2.1.3 改進(jìn)三
Head區(qū)域中YOLOv8采用Decoupled-Head,Decoupled-Head最典型特征即分類頭和檢測(cè)頭互不影響。同時(shí)Anchor-Free替換為Anchor-Based。
2.1.4 改進(jìn)四
分類損失采用改進(jìn)交叉熵?fù)p失函數(shù)(VFL Loss)。回歸損失使用的是DFL Loss與CIoU Loss結(jié)合的損失函數(shù)。
2.1.5 改進(jìn)五
標(biāo)簽分類過(guò)程使用了個(gè)性化分配(Task-Aligned Assigner)方法,未使用YOLO系列的交并比或單邊比方法。
2.2 彩色素描畫(huà)線條圖的生成
素描畫(huà)的線條具有交叉且不連貫的特點(diǎn),因此需要將提取的邊緣進(jìn)行卷積運(yùn)算,生成具有人工手繪素描特點(diǎn)的線條。
采用梯度計(jì)算提取圖像中的邊緣,如公式(1)所示。
(1)
式中:df/dx為變化率的值;ε為極小距離值;f(x)為點(diǎn)x處的函數(shù)值;f(x+ε)為與x處距離為ε的點(diǎn)的函數(shù)值。
根據(jù)坐標(biāo)值x、y確定像素點(diǎn),因此梯度計(jì)算的公式也應(yīng)對(duì)x和y 2個(gè)坐標(biāo)值進(jìn)行二階求導(dǎo),由于在圖片中相鄰像素點(diǎn)的距離是1,因此應(yīng)將二階求導(dǎo)中的ε替換為固定值1,求導(dǎo)化簡(jiǎn)過(guò)程如公式(2)所示。
(2)
式中:gx為像素點(diǎn)在水平方向的梯度值;f(x+1,y)為點(diǎn)(x,y)在水平方向上的變化值;f(x,y)為點(diǎn)(x,y)的RGB值;f(x,y+1)為點(diǎn)(x,y)在豎直方向上的變化值;gy為像素點(diǎn)在豎直方向的梯度值。
得到點(diǎn)(x,y)處梯度值為g(x,y)=(gx2+gy2)1/2,至此已經(jīng)提取輸入圖片的邊緣信息,為生成具有手繪風(fēng)格的素描畫(huà)線條,將提取的邊緣進(jìn)行進(jìn)一步操作。操作方法如下:對(duì)邊緣信息進(jìn)行反向運(yùn)算,設(shè)置不同方向的短線條,與邊緣圖進(jìn)行卷積運(yùn)算,使用卷積運(yùn)算將同一個(gè)方向相應(yīng)的邊緣與短線條進(jìn)行置換,使原本連貫的邊緣置換為由短線條交叉連接的素描線條圖,素描畫(huà)線條圖生成過(guò)程如圖2所示。
2.3 彩色素描畫(huà)填充圖生成
觀察發(fā)現(xiàn)素描畫(huà)的圖案空白部分由1組密集、平行的短線填充而成?;谶@個(gè)特點(diǎn),本文將手繪好的紋理轉(zhuǎn)化為素描畫(huà),預(yù)設(shè)的填充紋理如圖3所示。
填充圖案的映射過(guò)程如公式(3)所示。
T=Hβ* (3)
式中:T為映射后的紋理;β*為涂抹密度;H為圖3中預(yù)先繪制的紋理圖。生成的素描畫(huà)中的填充圖為彩色紋理,顏色由對(duì)應(yīng)像素點(diǎn)的RGB值確定。
3 彩色素描畫(huà)合成效果以及試驗(yàn)結(jié)果分析
為生成主次分明的彩色素描畫(huà),本文基于目標(biāo)檢測(cè)提取的主體將輸入圖片分為主體區(qū)域與非主體區(qū)域,利用不同區(qū)域的參數(shù)設(shè)置進(jìn)行區(qū)分,突出繪制提取的主體。
3.1 基于不同區(qū)域的參數(shù)設(shè)置
在繪制線條的過(guò)程中,線條長(zhǎng)度為輸入圖片長(zhǎng)度的1/8,經(jīng)驗(yàn)證將目標(biāo)物體線條寬度設(shè)為2,非目標(biāo)物體線條寬度設(shè)為1,在視覺(jué)上可以達(dá)到突出主體的效果。由公式(3)可知,根據(jù)β*確定填充紋理的密度。為突出目標(biāo)區(qū)域,非主體區(qū)域的β*值等于原值的0.8倍。
3.2 試驗(yàn)結(jié)果與分析
確定不同區(qū)域的參數(shù)后將線條圖層和填充紋理圖層進(jìn)行合成,得到基于YOLOv8預(yù)處理后的彩色素描畫(huà),素描畫(huà)生成效果如圖4所示。
對(duì)原圖細(xì)節(jié)信息進(jìn)行篩選,確定需要突出表示的區(qū)域,對(duì)不重要的區(qū)域進(jìn)行削弱,使原圖轉(zhuǎn)換的彩色素描畫(huà)的主體獲得更多的視覺(jué)關(guān)注,生成效果如圖5所示。文獻(xiàn)[8]基于同樣的思路對(duì)非重要區(qū)域進(jìn)行抑制,文獻(xiàn)[8]生成的素描畫(huà)紋理不自然且非主體區(qū)域信息全部丟失。本文不僅突出了目標(biāo)主體,而且沒(méi)有完全剔除背景區(qū)域的信息,生成的畫(huà)面自然、完整。本文預(yù)設(shè)紋理筆畫(huà),產(chǎn)生素描鉛筆畫(huà)紋理效果,生成的紋理在顏色方面與原圖一致,效果與人工手繪無(wú)異,生動(dòng)自然。
4 結(jié)語(yǔ)
本文提出一種分圖層、分區(qū)域合成彩色素描畫(huà)的算法,創(chuàng)新地在素描生成算法中使用YOLOv8目標(biāo)檢測(cè)算法提取原圖中的目標(biāo)主體,不同圖層設(shè)置不同參數(shù),對(duì)主體進(jìn)行加強(qiáng)繪制,對(duì)非主體區(qū)域進(jìn)行削弱處理,使生成的素描圖案主次分明。由于線條是卷積生成,因此效果接近手繪風(fēng)格。填充的紋理是事先預(yù)設(shè)的手繪紋理,降低紋理計(jì)算的時(shí)間開(kāi)銷。
試驗(yàn)結(jié)果表明,該算法在目標(biāo)檢測(cè)準(zhǔn)確率、素描畫(huà)生成和生成速率方面均表現(xiàn)較好,將該技術(shù)運(yùn)用于動(dòng)態(tài)視頻中是未來(lái)的研究方向。該算法的缺點(diǎn)是參數(shù)設(shè)置復(fù)雜,這是未來(lái)研究致力于解決的問(wèn)題。
參考文獻(xiàn)
[1]錢文華,曹進(jìn)德,徐丹,等.非真實(shí)感繪制技術(shù)研究現(xiàn)狀與展望[J].中國(guó)圖象圖形學(xué)報(bào),2020,25(7):13.
[2] 莫曉斐,丁友東 . 利用形體特征的鉛筆素描畫(huà)生成 [J]. 中國(guó)圖象圖形學(xué)報(bào),2013,18(2):6.
[3]吉娜燁,柴秀娟,山世光,等.局部回歸模型驅(qū)動(dòng)的人臉?biāo)孛枳詣?dòng)生成[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2014,26(12):2232-2243.
[4]李智慧,范鐵生,唐春鴿,等.具有層次素描紋理的素描畫(huà)繪制方法[J].計(jì)算機(jī)應(yīng)用,2012,32(10):4.
[5]王瑜,羅廣征,田恒屹.一種全自動(dòng)鉛筆畫(huà)生成方法研究[J].計(jì)算機(jī)應(yīng)用與軟件,2023,40(9):184-187.
[6]孫丹丹,唐棣.一種鉛筆畫(huà)仿真新方法[J].計(jì)算機(jī)工程與應(yīng)用, 2010,46(11):3.
[7]謝黨恩,張志立,徐丹.一種改進(jìn)的二維彩色鉛筆畫(huà)自動(dòng)繪制算法[J].計(jì)算機(jī)應(yīng)用與軟件,2013(8):28-31.
[8]李瑞瑞,孫世豪,楊孝輝,等.基于多層次顯著圖的自動(dòng)鉛筆畫(huà)生成[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2018,30(1):9.
[9]ZHOU H, ZHOU C, WANG X.Pencil drawing generation algorithm based on GMED[J].IEEE Access,2021(9):41275-41282.