李文慶,鄭秋華,張坤龍
(杭州電子科技大學(xué)圖形圖像研究所,浙江杭州310018)
傳統(tǒng)的印花設(shè)計(jì)方法是專(zhuān)業(yè)印花設(shè)計(jì)者自己手動(dòng)設(shè)計(jì),這種方法效果往往很好,但耗時(shí)耗力,效率很低[1]。而國(guó)內(nèi)外現(xiàn)有的有名的矢量化軟件的普遍缺點(diǎn)是抗噪聲性差、矢量化的精度和速度都不高,這些軟件的應(yīng)用偏向于工程圖紙領(lǐng)域、地理信息系統(tǒng)和計(jì)算機(jī)輔助制造等[2,3]。雖然市面上也出現(xiàn)了一些圖像自動(dòng)矢量化的軟件用于印花設(shè)計(jì),但這些軟件大多進(jìn)行整幅圖像矢量化,且矢量化后的結(jié)果往往是沒(méi)有意義的矢量圖形,設(shè)計(jì)者雖然可以通過(guò)編輯合成有意義的封閉圖形[4,5],但對(duì)于非計(jì)算機(jī)專(zhuān)業(yè)的設(shè)計(jì)者來(lái)說(shuō),其過(guò)程相當(dāng)復(fù)雜,很難按照印花設(shè)計(jì)者簡(jiǎn)單易用的要求。國(guó)內(nèi)外也有一些織物CAD軟件,比較有名的德國(guó)Grosse公司Jac系統(tǒng),中國(guó)的金昌軟件等,目前紋織CAD系統(tǒng)側(cè)重于圖像處理功能,矢量化方面做的不多。所以,本文提出了一種基于用戶(hù)交互的圖像局部矢量化方法,并應(yīng)用在印花快速設(shè)計(jì)中。
圖像矢量化是指將柵格圖像轉(zhuǎn)換為矢量圖像的過(guò)程。在印花設(shè)計(jì)時(shí),先對(duì)圖像的感興趣一部分(比如掛在屋檐下的鈴鐺)矢量化,再把矢量化的結(jié)果作為一個(gè)矢量圖元保存起來(lái),然后通過(guò)矢量工具將這些圖元融合在一起,將大大提高印花設(shè)計(jì)的速度和效率,這種方法就是圖像局部矢量化,圖像局部矢量化是將局部有意義的柵格圖像矢量化并保存起來(lái)的過(guò)程,這種方法的優(yōu)點(diǎn):(1)通過(guò)本文提出的用戶(hù)交互方法,交互簡(jiǎn)單,可以迅速提取感興趣的圖像元素,進(jìn)行圖像局部矢量化,并保存為矢量圖元。基于圖像進(jìn)行矢量化,矢量化得到的圖形和原圖像匹配度高,計(jì)算機(jī)處理速度快,節(jié)省印花設(shè)計(jì)師的設(shè)計(jì)時(shí)間;(2)對(duì)于單個(gè)的矢量圖形,設(shè)計(jì)者可以方便的對(duì)矢量圖元進(jìn)行放縮、旋轉(zhuǎn)和填充紋理等操作,符合現(xiàn)在的模塊設(shè)計(jì)思想。
圖像矢量化的方法,分為兩大步:(1)圖像預(yù)處理階段。包括彩色圖像灰度化,灰度圖像二值化,圖像去噪,圖像增強(qiáng),骨骼化,邊緣跟蹤等圖像處理方法。圖像預(yù)處理是為了去除毛刺、斑點(diǎn)、孤立點(diǎn)、空心點(diǎn)等,得到結(jié)點(diǎn)有序的骨架圖或者邊界跟蹤輪廓圖[4,5],圖像處理各個(gè)步驟沒(méi)有絕對(duì)的先后順序,達(dá)到能提取有意義的圖形即可;(2)擬合及表示。經(jīng)過(guò)圖像預(yù)處理之后,得到有序的骨架圖或者邊界跟蹤輪廓圖,結(jié)點(diǎn)往往非常多,此時(shí)進(jìn)行直線(xiàn)或曲線(xiàn)擬合:首先將其輪廓分段,再用直線(xiàn)和曲線(xiàn)擬合以簡(jiǎn)化結(jié)點(diǎn),減小存儲(chǔ)量,最后保存為矢量格式。直線(xiàn)擬合方法有多邊形擬合方法和hough變化方法等;常用的曲線(xiàn)擬合方法有3次hermite樣條曲線(xiàn)擬合、B樣條曲線(xiàn)擬合和Bezier曲線(xiàn)擬合等。
算法的目的是對(duì)局部圖像進(jìn)行矢量化,且生成封閉圖形,以方便后續(xù)對(duì)封閉圖形的各種操作。本文提出的3種用戶(hù)交互方式:(1)多邊形包圍圖像的外輪廓跟蹤法。確定了要矢量化的圖像局部之后,通過(guò)圖像分割,橡皮擦等處理,使得要矢量化的圖像局部不與其他圖像黏連,用戶(hù)用鼠標(biāo)點(diǎn)多個(gè)點(diǎn)作為多邊形的頂點(diǎn),用多邊形包圍將要矢量化的圖像;(2)內(nèi)輪廓跟蹤法。有意義的圖像元素往往具有某些同樣的性質(zhì),比如:圖像中的花瓣經(jīng)過(guò)二值化以后都是黑色象素,花瓣和花瓣之間是白色的象素。此種類(lèi)型的圖像,用輪廓跟蹤方法可以方便的得到圖像的內(nèi)輪廓。確定了要矢量化的圖像局部之后,圖像經(jīng)過(guò)處理后,使得要矢量化的圖像局部?jī)?nèi)部是空的,且外輪廓是封閉的,此時(shí),用戶(hù)在有意義的圖像元素內(nèi)部用鼠標(biāo)點(diǎn)擊一下,圖像邊界跟蹤算法即可生成對(duì)應(yīng)局部圖像的輪廓;(3)思想來(lái)源于photoshop中有一個(gè)磁性套索工具。用戶(hù)在圖像點(diǎn)擊確定第一個(gè)頂點(diǎn),軟件會(huì)隨著鼠標(biāo)移動(dòng)方法,根據(jù)圖像的象素之間的差異,自動(dòng)跟蹤到當(dāng)前鼠標(biāo)位置,當(dāng)用戶(hù)再次點(diǎn)擊,之前保存的自動(dòng)跟蹤的點(diǎn)也會(huì)保存起來(lái),并以最后一次點(diǎn)擊的位置作為起點(diǎn),繼續(xù)跟蹤鼠標(biāo)的方向,直到用戶(hù)點(diǎn)擊在起點(diǎn)附近,起點(diǎn)和終點(diǎn)閉合為封閉輪廓。
邊界跟蹤的目的有兩個(gè):(1)得到有意義的局部圖像的內(nèi)輪廓或者外輪廓;(2)得到有序的輪廓象素點(diǎn),以便矢量化。第一種交互方式,在多邊形包圍圖像進(jìn)行矢量化時(shí)采用的是外輪廓跟蹤方法;在第二種交互方式中,在要進(jìn)行圖像處理,保證矢量化的圖像輪廓是連續(xù)的,邊界跟蹤時(shí)將圖像的黑色邊界作為背景,將圖像的白色區(qū)域作為前進(jìn)進(jìn)行內(nèi)輪廓跟蹤。
多邊形擬合算法是用多邊形來(lái)逼近圖像輪廓,目的是為了用更少的點(diǎn)擬合出輪廓的邊界,在一定的誤差范圍內(nèi),減少存儲(chǔ)量。該算法思想是,設(shè)定最大閾值,當(dāng)前閾值從一個(gè)較小的數(shù)值開(kāi)始,以一定步長(zhǎng)逐漸增加到最大閾值,增加一次算一次迭代,在每一次迭代中,計(jì)算每一個(gè)結(jié)點(diǎn)Pi到前后結(jié)點(diǎn)組成的線(xiàn)段Pi-1Pi+1的距離hi。若有hi小于閾值,找出最小的hi對(duì)應(yīng)的結(jié)點(diǎn),刪除之,當(dāng)所有hi都大于設(shè)定的閾值Threshold,此次迭代結(jié)束;如圖1所示。
圖1 多邊形擬合示意圖
為了驗(yàn)證算法的有效性,本文對(duì)新疆維吾爾族服飾和布料花紋進(jìn)行局部矢量化,如圖2所示。圖2(a)是對(duì)原圖進(jìn)行圖像預(yù)處理得到的圖像,灰色的部分是通過(guò)第二種用戶(hù)交互方式,內(nèi)邊界跟蹤得到的5個(gè)邊界輪廓圖;圖2(b)、(c)是最大閾值設(shè)為0.7進(jìn)行多邊形擬合得到的擬合多邊形輪廓以及擬合輪廓在原圖上的對(duì)比。當(dāng)最大閾值小于等于0.7時(shí),擬合結(jié)果都和原圖形匹配的很完美,故閾值小于0.7時(shí)的擬合的輪廓圖沒(méi)有列出。實(shí)驗(yàn)表明最大閾值越大,多邊形擬合邊界輪廓圖及在原圖偏差越大。
圖2 圖像局部矢量化效果圖
在最大閾值為0.7時(shí),邊界結(jié)點(diǎn)減少到了原來(lái)的1/4左右,擬合效果和原圖最為相似,大大減少了邊界點(diǎn)數(shù)。隨著閾值的不斷增大,邊界結(jié)點(diǎn)數(shù)逐漸減小,從擬合后的邊界圖也原圖的對(duì)比中會(huì)發(fā)現(xiàn),在某些地方已經(jīng)慢慢出現(xiàn)誤差,隨著閾值增大,誤差越來(lái)越嚴(yán)重。如表1所示:
表1 圖像輪廓在不同閾值的多邊形擬合時(shí)剩余的邊界結(jié)點(diǎn)數(shù)
閾值迭代增加的多邊形擬合是基于的當(dāng)前點(diǎn)到其前后兩點(diǎn)連線(xiàn)的距離與閾值的比較進(jìn)行判斷是否刪除節(jié)點(diǎn)。算法第1次迭代時(shí),假設(shè)Pi-1,Pi,Pi+1是相鄰的邊界上的3個(gè)結(jié)點(diǎn),Pi到線(xiàn)段Pi-1Pi+1最大是,當(dāng)閾值設(shè)為2以上時(shí),在曲線(xiàn)彎曲度很小的輪廓結(jié)點(diǎn)會(huì)被刪除,明顯出現(xiàn)擬合多邊形和原輪廓的偏差,閾值越大,偏差越大。當(dāng)閾值設(shè)計(jì)的很小,比如0.1,可以有效的減少相鄰3點(diǎn)共線(xiàn)時(shí),即hi值為0對(duì)應(yīng)的點(diǎn),此類(lèi)點(diǎn)優(yōu)先去除。隨著3點(diǎn)共線(xiàn)中間結(jié)點(diǎn)的去除,閾值迭代增加,可以繼續(xù)減少輪廓結(jié)點(diǎn),不同尺度的輪廓和不同的精度要求得到的最佳閾值不一樣。
機(jī)器配備單核CPU3.0GHz,內(nèi)存1G,在VC++6.0開(kāi)發(fā)環(huán)境下,用第2種用戶(hù)交互方式進(jìn)行內(nèi)輪廓跟蹤每一個(gè)圖形時(shí)間小于1s,所提出的閾值迭代增加的多邊形擬合算法對(duì)新疆維吾爾族服飾花紋圖像的處理時(shí)間小于1s,能達(dá)到了實(shí)時(shí)要求。
本文提出一種基于用戶(hù)交互的光柵圖像局部矢量化的方法,該方法首先將彩色圖像預(yù)處理得到無(wú)噪聲的二值圖像,其次通過(guò)用戶(hù)交互,用邊界跟蹤方法得到封閉的有序的局部圖像輪廓,然后通過(guò)基于閾值迭代增加的多邊形擬合輪廓方法進(jìn)行多邊形擬合輪廓。局部矢量化之后,保存為單個(gè)的矢量圖元,圖元作為基本圖形操作單元,可以進(jìn)行圖形的各種編輯,結(jié)點(diǎn)的調(diào)整,旋轉(zhuǎn)和放縮,紋理填充等。最后,本文對(duì)新疆維吾爾族服飾花紋進(jìn)行實(shí)驗(yàn),實(shí)驗(yàn)表明本文提出的多邊形擬合輪廓方法能有效的減少了輪廓結(jié)點(diǎn)個(gè)數(shù),將其應(yīng)用在印花設(shè)計(jì)中,得到了較好的效果。如圖3所示,是新疆維吾爾族服飾花紋圖像局部矢量化后的圖元在織物印花設(shè)計(jì)中重組得到的圖形,圖形填充了顏色和紋理。
圖3 圖像局部矢量化在印花設(shè)計(jì)中的應(yīng)用
[1] 于喜元.提花織物花型預(yù)處理系統(tǒng)[D].杭州:浙江大學(xué),2005.
[2] 彭榮杰.圖像矢量化方法研究與應(yīng)用[D].武漢:華中科技大學(xué),2006.
[3] 何愛(ài)君.光柵圖像矢量化研究及應(yīng)用[D].廣州:廣東工業(yè)大學(xué),2008.
[4] Rafael C.Gonzalez.數(shù)字圖像處理[M].北京:電子工業(yè)出版社,2003:432-444.
[5] 謝鳳英,趙丹培.Visual C++數(shù)字圖像處理[M].北京:電子工業(yè)出版社,2008:394-458.