楊蕾,周軍,胡慧,張欣
(西南科技大學(xué) 制造過程測試技術(shù)省部共建教育部重點(diǎn)實(shí)驗(yàn)室,四川 綿陽 621010)
文創(chuàng)產(chǎn)品設(shè)計(jì)特別是基于博物館、風(fēng)景區(qū)等特定場景下的紀(jì)念品設(shè)計(jì),隨著國民經(jīng)濟(jì)的增強(qiáng)和文化自信的不斷提升,日益受到大眾的喜愛和認(rèn)同。而文創(chuàng)設(shè)計(jì)有別于一般的產(chǎn)品設(shè)計(jì),具有產(chǎn)品設(shè)計(jì)類別眾多、單品迭代頻率快速等特點(diǎn)。在設(shè)計(jì)時(shí)也更注重通過對該博物館或風(fēng)景區(qū)典型代表物原型進(jìn)行二維形態(tài)還原后的再設(shè)計(jì)方法?;谖膭?chuàng)設(shè)計(jì)的獨(dú)特性,設(shè)計(jì)師特別是新手設(shè)計(jì)師或者工科背景下的設(shè)計(jì)專業(yè)學(xué)生,在形態(tài)的提取和推演時(shí),往往會花費(fèi)大量的時(shí)間和精力在設(shè)計(jì)參照物的原型還原上,從而影響文創(chuàng)產(chǎn)品的快速迭代、產(chǎn)品類別的擴(kuò)充以及設(shè)計(jì)質(zhì)量的提升。
當(dāng)下主流的文創(chuàng)設(shè)計(jì)產(chǎn)出大多聚焦于平面類產(chǎn)品輸出,利用設(shè)計(jì)原型進(jìn)行提煉和改良的裝飾圖形應(yīng)用于抱枕、筆記本、手機(jī)殼、水杯等產(chǎn)品的平面形態(tài)設(shè)計(jì)中。而運(yùn)用產(chǎn)品逆向設(shè)計(jì)的方法,結(jié)合計(jì)算機(jī)的圖形圖像處理功能,將原本設(shè)計(jì)師手工還原設(shè)計(jì)參照物二維形態(tài)的環(huán)節(jié),用計(jì)算機(jī)算法替代,可大大簡化設(shè)計(jì)流程、節(jié)省設(shè)計(jì)時(shí)間、提高還原準(zhǔn)確率,提升文創(chuàng)產(chǎn)品衍生物的設(shè)計(jì)效率和設(shè)計(jì)質(zhì)量。產(chǎn)品的逆向設(shè)計(jì)一般流程見圖1。在這些流程中,數(shù)據(jù)采集、數(shù)據(jù)處理、二維形態(tài)提取是逆向設(shè)計(jì)的三大關(guān)鍵環(huán)節(jié)。以設(shè)計(jì)三星堆青銅面具(見圖2)相關(guān)的文創(chuàng)產(chǎn)品為例,為了能夠設(shè)計(jì)出與青銅面具等比例的三維或二維文創(chuàng)產(chǎn)品,首先必須要對青銅面具進(jìn)行數(shù)據(jù)采集(測量),然后根據(jù)采集或者測量的數(shù)據(jù)利用CAD/CAE/CAM 等輔助軟件繪制出可等大放縮的矢量圖像,最后再根據(jù)需要的新產(chǎn)品重構(gòu)模型。
圖1 逆向設(shè)計(jì)流程Fig.1 Reverse design process
上述過程中,數(shù)據(jù)采集和數(shù)據(jù)處理需要人工利用現(xiàn)有的測量工具對已有產(chǎn)品進(jìn)行尺寸測量和圖形繪制,這極大程度上浪費(fèi)了人工時(shí)間。雖然目前市面上有PS、AI 等設(shè)計(jì)軟件可以利用二維圖片摳取產(chǎn)品圖樣用于文創(chuàng)產(chǎn)品的再設(shè)計(jì)。由于軟件技能的熟練程度不同,極有可能出現(xiàn)摳圖結(jié)果細(xì)節(jié)缺失、還原度低和線條生硬等問題,這也對設(shè)計(jì)師軟件操作能力和圖片修復(fù)能力提出了要求。
基于以上問題,結(jié)合圖形矢量化的方法,在特定文創(chuàng)產(chǎn)品設(shè)計(jì)領(lǐng)域,將傳統(tǒng)的設(shè)計(jì)師手繪裝飾紋樣、圖案環(huán)節(jié)借助于計(jì)算機(jī)算法,直接掃描提取出設(shè)計(jì)原型的外輪廓和多邊形路徑,快速準(zhǔn)確高效地還原設(shè)計(jì)對象的二維形態(tài),設(shè)計(jì)師在此形態(tài)基礎(chǔ)之上進(jìn)行再設(shè)計(jì),可有效提高設(shè)計(jì)效率、簡化設(shè)計(jì)步驟,特別是在形態(tài)還原和提取環(huán)節(jié)。通過算法生成的原始參照物輪廓形態(tài),更加準(zhǔn)確,在此基礎(chǔ)之上加以設(shè)計(jì)和改良讓設(shè)計(jì)師在設(shè)計(jì)時(shí)更有依據(jù)、形態(tài)還原度更高,在理解參照物的形面細(xì)節(jié)特征時(shí)也更具有表現(xiàn)力。而基于Potrace 點(diǎn)跟蹤的文創(chuàng)產(chǎn)品逆向設(shè)計(jì)方法,在輪廓邊緣處理、細(xì)節(jié)優(yōu)化過度方面,體現(xiàn)出更加流暢合理的形態(tài)曲面,根據(jù)已有參照物的二維圖像掃描優(yōu)化生成的輪廓線條更加準(zhǔn)確生動形象,減少了傳統(tǒng)的手繪形態(tài)提取環(huán)節(jié),重新定義和優(yōu)化了文創(chuàng)產(chǎn)品設(shè)計(jì)流程,為廣大從事文創(chuàng)產(chǎn)品設(shè)計(jì)的從業(yè)人員提供了一個(gè)更加簡單、便捷的設(shè)計(jì)方法,讓設(shè)計(jì)師的思維更多地運(yùn)用到產(chǎn)品創(chuàng)作上,而不是技術(shù)操作上。
圖像矢量化算法根據(jù)算法原理主要分為兩個(gè)方面,基于人工智能算法的圖像矢量化算法和傳統(tǒng)圖像矢量化算法。對于人工智能方向的圖像矢量化算法,具有代表性的是北京郵電大學(xué)尹思思[1]提出了一種利用生成對抗網(wǎng)絡(luò)的人臉特征線條生成算法,其主要分為2 個(gè)階段:第1 階段,通過引入自注意力機(jī)制保持面部特征,然后利用假人臉生成線條畫;第2 階段,利用分層思想對線條畫進(jìn)行矢量化。其主要優(yōu)點(diǎn)是生成的矢量圖能夠很大程度保證人臉線條的準(zhǔn)確性。由于網(wǎng)絡(luò)訓(xùn)練以人臉進(jìn)行,因此該算法僅在人臉矢量化方面效果優(yōu)良,不適于其他圖像的矢量化。對于傳統(tǒng)圖像矢量化算法,北京交通大學(xué)李瑞鵬[2]重點(diǎn)以葉片裂紋圖像為研究對象,將裂紋圖像抽取邊緣點(diǎn),并對這些眾多邊緣點(diǎn)進(jìn)行排序,得到一條連續(xù)封閉曲線的坐標(biāo)點(diǎn),最后利用NURBS 曲線進(jìn)行矢量化擬合。該算法主要針對葉片裂紋圖像,圖像具有代表性,因此對于邊緣較為復(fù)雜的裂紋會有比較好的效果。與此方法類似的是曹新虎[3],他的目的是要掃描現(xiàn)有地圖,同樣也是根據(jù)圖像的邊緣點(diǎn)來進(jìn)行跟蹤搜索,最后對地形線進(jìn)行快速矢量化。而浙江工業(yè)大學(xué)的丁雪峰[4]針對幾何位圖,提出了一種利用Diffusion Curves 來對RGB 圖像進(jìn)行矢量化的算法,算法主要借鑒了Adobe公司開發(fā)的軟件中蒙皮的概念,將圖像抽象成空間,最后利用貝塞爾曲線擬合線性蒙皮,依次達(dá)到圖像矢量化目的。該算法對圖像細(xì)節(jié)部分處理較好,但是算法復(fù)雜度相對較高,不方便進(jìn)行圖像快速矢量化。
國外也有許多學(xué)者對位圖的矢量化作了許多研究。Adams[5]利用誤差擴(kuò)散原理給定三角網(wǎng)絡(luò),然后利用三角網(wǎng)絡(luò)將整張位圖進(jìn)行矢量化。這種方法速度較快,但是利用三角網(wǎng)絡(luò)得出的矢量圖不能真實(shí)表示原始圖像。而Li Ping 等[6],使用了與Adams 相反的方法,首先給出少量點(diǎn),然后通過迭代方法逐漸增加頂點(diǎn)。該方法結(jié)果比Adams 的結(jié)果更好,但由于引入了頂點(diǎn)位置的隨機(jī)性,有可能導(dǎo)致生成的網(wǎng)絡(luò)不滿足三角網(wǎng)絡(luò),從而得不到最優(yōu)結(jié)果。Selinger[7]則利用點(diǎn)跟蹤的方法將圖像先抽象成許多線條,即生成閉合多邊形,再根據(jù)轉(zhuǎn)角大小將多邊形的轉(zhuǎn)角用貝塞爾曲線優(yōu)化,得出的結(jié)果能夠很自然表示出原圖。但是由于優(yōu)化算法的時(shí)間復(fù)雜性,導(dǎo)致該算法時(shí)間耗費(fèi)較多。
總之,目前對于圖像矢量化算法,國內(nèi)外主要研究以傳統(tǒng)方法為主,主要利用網(wǎng)格和點(diǎn)跟蹤兩種方式對位圖進(jìn)行矢量路徑提取。本文基于Potrace 點(diǎn)跟蹤算法,利用交叉熵?fù)p失函數(shù)優(yōu)化最終路徑,降低了算法的時(shí)間復(fù)雜度,同時(shí)與Potrace 算法相比在圖像復(fù)雜邊緣的細(xì)節(jié)過渡更為自然。
Potrace 算法目前是將位圖轉(zhuǎn)換為矢量圖的較為高效的算法之一。其主要原理是基于點(diǎn)跟蹤的多邊形擬合像素方法。算法作用的圖像只能是二值圖(黑白圖像),首先Potrace 將二值圖的不同邊緣分解為若干條路徑,然后將每條路徑優(yōu)化為一個(gè)合適的多邊形,最后將多邊形利用貝塞爾曲線鏈接成若干條曲線。
首先假定二值圖中目標(biāo)為黑色,背景為白色。要確定圖中目標(biāo)圖的具體位置,首先需要構(gòu)建一個(gè)具有方向的圖(有向圖)。設(shè)點(diǎn)p 為圖片中某個(gè)具體的像素,如果p 點(diǎn)的像素值與其領(lǐng)域內(nèi)其他4 個(gè)元素(上、下、左、右)的值不完全一樣,此時(shí)可以將p 作為一個(gè)頂點(diǎn)。以同樣的方式確定頂點(diǎn)m、n,與此同時(shí)m、n 的歐式距離為1,這時(shí)就可以稱在m、n 之間有一條邊。如果這條邊恰好將m 和n 分成了一個(gè)目標(biāo)像素(白色)和一個(gè)背景像素(黑色),那么這條邊就稱之為有向邊(方向?yàn)樽蟀子液冢?,見圖3。這樣,由這些具有方向的邊和頂點(diǎn)組成的圖形就稱之為有向圖G。通過上述過程提取完路徑后,由于位圖本身可能存在許多孤島,導(dǎo)致有多條閉合的路徑存在,因此需要濾除這些小的“孤島”。最簡單有效的方法是通過計(jì)算閉合路徑所圍成的面積來找到干擾路徑。當(dāng)計(jì)算出的面積小于某一個(gè)閾值t(經(jīng)驗(yàn)值)時(shí),直接刪除該路徑即可。
圖3 路徑提取方法Fig.3 Path extraction method
圖4 直線路徑表示Fig.4 Representation a straight path
注意,圖中黑色圓點(diǎn)表示的是路徑的頂點(diǎn)。方框則代表周圍其他像素。于是通過上述方法就可以找出整個(gè)位圖中的閉合路徑的直線表示。最終位圖的邊緣就成了一個(gè)多邊形輪廓,見圖5。
圖5 封閉路徑的多邊形表示Fig.5 Polygonal representation of a closed path
圖6 轉(zhuǎn)角優(yōu)化后效果Fig.6 Corner optimization effect
最后,按照實(shí)際的物體尺度將矢量圖縮放到就得到了最終的矢量圖。
在Potrace 算法中,由于最后Loss 函數(shù)確定了最優(yōu)多邊形路徑,而Loss 中包含較多復(fù)雜運(yùn)算,導(dǎo)致算法運(yùn)行時(shí)間變長,很難將其運(yùn)用到實(shí)時(shí)矢量圖形提取領(lǐng)域。實(shí)際上,Loss 函數(shù)廣泛使用于深度學(xué)習(xí)領(lǐng)域,其中交叉熵Loss 最為廣泛,其定義如下:
本文實(shí)驗(yàn)環(huán)境為,Intel Core(TM) i7-7700HQ CPU,2.8 GHz 四核心八線程64 位PC。算法使用OPENCV 和C++實(shí)現(xiàn)。
本文對圖7 中的樣圖進(jìn)行矢量輪廓提取,結(jié)果見圖8—9。
圖7 測試樣圖Fig.7 Test sample
圖8 算法結(jié)果1Fig.8 Algorithm result 1
圖9 算法結(jié)果2Fig.9 Algorithm result 2
從算法結(jié)果中可以看出,本文算法與原Potrace 算法相比在提取的矢量輪廓圖轉(zhuǎn)角處更加自然,細(xì)節(jié)圖見圖10。從圖10 右邊放大線條圖可以明顯看出本文算法與Potrace 其他算法相比,在邊緣轉(zhuǎn)角處平滑了不少,這使得在邊緣處過渡更加自然,不會因?yàn)椤疤荻取毕袼貙?dǎo)致邊緣矢量線條有明顯轉(zhuǎn)角。
圖10 算法結(jié)果3Fig.10 Algorithm result 3
另外,本文算法在運(yùn)行速度上也相比其他矢量算法具有明顯提升,本文以10 張圖片分別進(jìn)行10 次實(shí)驗(yàn)時(shí)間取均值,將常見矢量化算法與本文算法進(jìn)行對比,見表1。
從表1 可以看出,本文算法與其他相關(guān)算法比較,算法運(yùn)行時(shí)間平均提高40%以上。測試所用圖片均為1 024×768 像素,根據(jù)圖像中的線條數(shù)量時(shí)間有所不同。
表1 算法時(shí)間比較Tab.1 Algorithm time comparison
以三星堆青銅縱目面具為例,通過外輪廓的提取,能夠清晰辨別出設(shè)計(jì)參考對象的形面特征,在此基礎(chǔ)上進(jìn)行大面形態(tài)的分割,可準(zhǔn)確定位出五官位置,臉部分割面也清晰可辨。通過大面形態(tài)的準(zhǔn)確定位,再進(jìn)行五官的勾勒和細(xì)節(jié)的刻畫,和傳統(tǒng)設(shè)計(jì)流程相比較,大大節(jié)約了參照物的二維形態(tài)還原過程且準(zhǔn)確率大幅提升,即使是新手設(shè)計(jì)師也能輕松駕馭文創(chuàng)產(chǎn)品衍生物的設(shè)計(jì)創(chuàng)作過程,見圖11。通過不同設(shè)計(jì)師的設(shè)計(jì)過程模擬,可以看出設(shè)計(jì)風(fēng)格和設(shè)計(jì)結(jié)果并不會受到Potrace 算法提取的外輪廓形態(tài)的影響,相反只會起到積極的促進(jìn)作用,通過設(shè)計(jì)論證,證明Potrace 算法提取的外輪廓形態(tài)進(jìn)行文創(chuàng)產(chǎn)品逆向設(shè)計(jì)的方法是具有可行性和落地性的,見圖12。
圖11 青銅縱目面具線稿抽取與再設(shè)計(jì)Fig.11 Drawing and redesign of bronze vertical mask
圖12 Potrace 輪廓提取在文創(chuàng)設(shè)計(jì)中的應(yīng)用Fig.12 Application of Potrace contour extraction in cultural and creative design
本文針對文創(chuàng)產(chǎn)品中的逆向設(shè)計(jì),提出了一個(gè)優(yōu)化的圖像矢量化算法。該算法在對二維和三維文創(chuàng)產(chǎn)品的逆向設(shè)計(jì)上可以簡化其中的數(shù)據(jù)采集和數(shù)據(jù)處理兩個(gè)步驟,使設(shè)計(jì)人員能夠把更多的時(shí)間用在產(chǎn)品的創(chuàng)作上。同時(shí)算法的實(shí)質(zhì)是利用交叉熵作為最優(yōu)路徑的損失函數(shù),并且經(jīng)過數(shù)學(xué)推導(dǎo),將算法中的所有乘法和開方操作簡化為加法運(yùn)算,提高了算法運(yùn)行時(shí)間。為文創(chuàng)產(chǎn)品逆向設(shè)計(jì)提供新的技術(shù)思路。
實(shí)驗(yàn)結(jié)果表明,本文算法運(yùn)行結(jié)果對于邊緣較為復(fù)雜的情況過渡較好,不會出現(xiàn)明顯的像素“梯度”線條,并且算法運(yùn)行時(shí)間較同類算法提高了40%以上,為文創(chuàng)產(chǎn)品實(shí)現(xiàn)逆向設(shè)計(jì),提升設(shè)計(jì)質(zhì)量提供了理論技術(shù)支撐。在具體的設(shè)計(jì)驗(yàn)證中,設(shè)計(jì)師利用Potrace 算法提取的外輪廓形態(tài)進(jìn)行的形態(tài)推演,顯著地提升了形面推敲的正確率和設(shè)計(jì)效率、簡化了設(shè)計(jì)流程。最終提取出的形態(tài)輪廓清晰易辨,線條流暢順滑,在此基礎(chǔ)上進(jìn)行的設(shè)計(jì)形體還原度高,且適配設(shè)計(jì)師不同風(fēng)格的設(shè)計(jì)結(jié)果產(chǎn)出。將Potrace 算法運(yùn)用在文創(chuàng)逆向設(shè)計(jì)領(lǐng)域,是一次全新且大膽的嘗試,在實(shí)踐過程中,對于更多細(xì)節(jié)輪廓的提取還有待于進(jìn)一步提升,但是在傳統(tǒng)設(shè)計(jì)方法中加入圖像算法,簡化設(shè)計(jì)流程,提升了設(shè)計(jì)效率。后續(xù)可進(jìn)一步完善算法,使之更好服務(wù)于更多的文創(chuàng)設(shè)計(jì)從業(yè)人員。