石 雷 韓德志 章夏芬 畢 坤
(上海海事大學(xué)信息工程學(xué)院 上海 201306)
基于輪廓擬合的新風(fēng)格書法字合成
石 雷 韓德志*章夏芬 畢 坤
(上海海事大學(xué)信息工程學(xué)院 上海 201306)
限于當(dāng)前有限的數(shù)字書法資源,書法數(shù)據(jù)庫(kù)中有時(shí)不一定有用戶所需風(fēng)格的書法字圖像。針對(duì)這個(gè)問題,提出了基于兩個(gè)書法字輪廓合成一系列具有中間風(fēng)格的新書法字的方法。首先提取同一字不同風(fēng)格的兩個(gè)樣本字的輪廓,接著用貝塞爾曲線擬合輪廓,再把矢量化輪廓字并歸一化以獲取可比性;然后,通過形狀匹配法找到兩個(gè)書法字對(duì)應(yīng)的輪廓點(diǎn)對(duì),選取關(guān)鍵點(diǎn)作為控制點(diǎn),合成具有中間風(fēng)格的書法字矢量輪廓;最后,用填充算法填充輪廓得到一個(gè)新風(fēng)格的書法字。
輪廓擬合 填充算法 書法字合成
隨著數(shù)字化技術(shù)和存儲(chǔ)技術(shù)的迅猛發(fā)展,大量紙張書法作品被數(shù)字化成圖像存儲(chǔ)在計(jì)算機(jī)里,相應(yīng)的書法創(chuàng)作和鑒賞也從紙張方式延伸到數(shù)字方式。在數(shù)字圖書館CADAL里[1],書法作品頁(yè)面被切分成單字,做成書法單字字庫(kù)以提供服務(wù)。用戶可以從中選擇自己所需單字合成名稱,譬如“中國(guó)工程院”門口的院名以及院標(biāo)上的書法字是用CADAL數(shù)據(jù)庫(kù)中的單個(gè)書法字合成的,“浙江大學(xué)”門口的書法字是從毛澤東的書法字中挑選而后合成的。電子產(chǎn)品的普及使越來越多的人提筆忘字,利用歷史書法字進(jìn)行創(chuàng)作能體現(xiàn)出書法藝術(shù)文化,其需求不斷增長(zhǎng)。例如在產(chǎn)品包裝、T恤設(shè)計(jì)、牌匾制作、視覺圖形設(shè)計(jì)以及廣告設(shè)計(jì)等應(yīng)用中,通常都要求使用一組風(fēng)格統(tǒng)一的書法字。但是,有限的書法數(shù)據(jù)庫(kù)中檢索出來的書法字的風(fēng)格各異,并不一定是所需的,即數(shù)據(jù)庫(kù)中缺少指定風(fēng)格的書法字。因此,如何從已有的書法字中生成各種所需要風(fēng)格的書法字成為亟需解決的問題。
書法字圖像的本質(zhì)是圖像,圖像是可以合成的。從這個(gè)角度出發(fā),對(duì)已有的書法字圖像進(jìn)行分析,經(jīng)過形變、合成,能得到具有新風(fēng)格的書法字?;谶@一思想,本文提出了一種基于書法字輪廓擬合的新風(fēng)格書法字合成方法:提取用戶所選的同一字不同風(fēng)格的兩個(gè)書法單字的輪廓,計(jì)算出匹配的輪廓點(diǎn)對(duì),用參數(shù)控制點(diǎn)對(duì)間的變化距離,合成一系列中間風(fēng)格的書法字輪廓,最后填充輪廓得到一個(gè)具有新風(fēng)格的書法字。
新風(fēng)格書法字的生成有多年的研究。徐頌華首先實(shí)現(xiàn)了一個(gè)智能的新風(fēng)格書法字生成系統(tǒng)[2],可以根據(jù)用戶不同的要求生成不一樣風(fēng)格的書法字。但系統(tǒng)中新風(fēng)格的書法字是基于一個(gè)指定的書法字,通過變換參數(shù)得到的,而用戶很多時(shí)候并不確定這個(gè)書法字到底變到何種程度正是所需的。CADAL項(xiàng)目組的俞凱構(gòu)建了一個(gè)風(fēng)格一致的書法字合成系統(tǒng)[3]:提取已有書法字的部首,用來自不同字的部首合成一個(gè)新的書法字。這個(gè)想法很好,但書法字有粘連、變形、枯筆,很多時(shí)候部首提取的正確率不高。Cao Shi等提出類似的基于已有書法筆畫生成新書法字的方法[4],筆畫比部首更具體、變化更多。但是,同樣道理,從已有書法字中提取筆畫和提取部首一樣有難度,至今尚未發(fā)現(xiàn)公開出版的提取書法筆畫的實(shí)用系統(tǒng)。CADAL項(xiàng)目組的夏洋提出了一種基于本體的特定書法作品風(fēng)格的楷書書法字合成方法[5],通過書法部首選擇、書法筆畫選擇、書法部首合成及書法字合成各個(gè)階段的算法設(shè)計(jì),并最終實(shí)現(xiàn)一套基于本體的特定書法作品風(fēng)格楷書書法字合成系統(tǒng)。這個(gè)方法很好,但也存在不足之處:所有的合成未改變?cè)凶趾筒渴椎男螤?,若?shù)據(jù)庫(kù)中沒有所需風(fēng)格的字或部首,則指定風(fēng)格的合成難以完成。Jun Dong所給出的新風(fēng)格書法字生成的細(xì)節(jié)[6],是針對(duì)隸書的,通過筆畫輪廓上的關(guān)鍵點(diǎn)的移動(dòng)使筆畫產(chǎn)生形變,生成新風(fēng)格書法字,這種生成方法和徐頌華的方法[2]有類似的優(yōu)缺點(diǎn)。
上述合成方法都是要基于書法筆畫或部首的提取和分解的。雖然書法字筆畫和部首能夠更精確地表示書法字風(fēng)格,但由于書法字存在筆畫變形、枯筆、殘筆、筆畫模糊等特點(diǎn),使得筆畫和部首提取的正確率本身成為合成的關(guān)鍵因素,目前仍沒有適用于多種字體風(fēng)格的有效的部首和筆畫提取方法。且不同風(fēng)格的筆畫組合而成的書法字雖然不同于原有風(fēng)格,但可能會(huì)引起整個(gè)書法字的不協(xié)調(diào)。文獻(xiàn)[7]則另辟蹊徑,提出了一種適用于書法字輪廓變形的算法,根據(jù)訓(xùn)練樣本的輪廓,用參數(shù)控制合成一系列中間風(fēng)格的書法字輪廓。此算法合成的書法字對(duì)比使用不同風(fēng)格筆畫組合而成的書法字,更貼近用戶所需,用戶只需要選中源和目標(biāo)風(fēng)格就能生成一系列中間風(fēng)格的新書法字。然而,該論文由于完成了源和目標(biāo)書法字的關(guān)鍵輪廓點(diǎn)對(duì)匹配,所生成的中間風(fēng)格的關(guān)鍵點(diǎn)對(duì)無法形成一個(gè)封閉區(qū)域,因此無法還原得到完整的新風(fēng)格書法字。
本文提出了一種基于輪廓擬合的中間風(fēng)格書法字生成方法,主要貢獻(xiàn)如下:
1) 從單個(gè)書法字圖像中選擇同一字的兩個(gè)不同風(fēng)格的書法字圖像,提取其輪廓點(diǎn)中的關(guān)鍵點(diǎn);接著以關(guān)鍵點(diǎn)為控制點(diǎn),使用貝塞爾曲線分段擬合輪廓曲線,得到一個(gè)可以自由變換大小的輪廓矢量字,再將兩個(gè)書法字大小歸一化。
2) 計(jì)算兩個(gè)書法字的輪廓點(diǎn)的相似性,匹配對(duì)應(yīng)輪廓點(diǎn)。
3) 通過設(shè)置不同參數(shù)調(diào)整輪廓點(diǎn)位置,再通過貝塞爾曲線擬合輪廓點(diǎn),合成出一系列中間風(fēng)格的書法字輪廓,最后通過填充的方法還原書法字的墨跡得到一個(gè)新的書法字。
本文中所使用的書法字圖像來自于CADAL項(xiàng)目[1],掃描得到的頁(yè)面圖像被切分成單個(gè)書法字圖像[8]。在預(yù)處理時(shí),對(duì)書法字圖像進(jìn)行去噪、二值化成黑白圖像。
2.1 輪廓提取和跟蹤
本文采用Canny算法[9]提取書法字圖像的輪廓,并在提取輪廓時(shí)將圖像上的所有像素點(diǎn)分為三類:背景點(diǎn)、輪廓點(diǎn)以及內(nèi)部點(diǎn)。
一個(gè)漢字中含有多個(gè)筆畫或部首,其輪廓線形成多個(gè)閉合區(qū)域。得到書法字的輪廓以后,將它們分成獨(dú)立的互不重疊的閉合區(qū)域,作為生成輪廓矢量字的基本單元。本文采用輪廓跟蹤的方法,按從下到上,從左到右的順序找到第一個(gè)輪廓點(diǎn),接著按順時(shí)針方向找到與之相鄰的下一個(gè)輪廓點(diǎn),以此類推,直到重新回到起始點(diǎn)。這樣便跟蹤得到一個(gè)輪廓點(diǎn)的有序集合,這些輪廓點(diǎn)首尾相連就是一個(gè)封閉輪廓。接著,遍歷所有未經(jīng)過的輪廓點(diǎn),得到所有封閉輪廓。設(shè)某一封閉輪廓上共有n個(gè)輪廓點(diǎn),若n<8,則該輪廓是噪聲,去除。最后,按閉合輪廓順時(shí)針方向的右側(cè)是內(nèi)部點(diǎn)(書法字上的點(diǎn)),外側(cè)是背景點(diǎn)的規(guī)則,將輪廓分為外輪廓和內(nèi)輪廓。
2.2 關(guān)鍵點(diǎn)檢測(cè)
輪廓是由多個(gè)像素點(diǎn)來表達(dá)的,多個(gè)連續(xù)的像素點(diǎn)形成輪廓線;這其中多個(gè)連續(xù)像素點(diǎn)存在冗余信息,只有部分點(diǎn)是關(guān)鍵點(diǎn)。書法字輪廓上的關(guān)鍵點(diǎn)是指拐點(diǎn)或者角點(diǎn),即在輪廓線走勢(shì)上變化最為劇烈的點(diǎn)。求輪廓線上的拐點(diǎn),可通過計(jì)算每個(gè)像素點(diǎn)曲率,找最值方法得到。然而,像素點(diǎn)是離散的,其曲率不像連續(xù)曲線上的點(diǎn)那樣精確;近似計(jì)算得到的拐點(diǎn)曲率與非拐點(diǎn)曲率差別較小,且對(duì)形狀及尺寸變化較敏感,易受到噪聲的干擾。尚振宏和劉明業(yè)根據(jù)離散曲線上拐點(diǎn)兩側(cè)多個(gè)點(diǎn)對(duì)間的歐氏距離之平方和的相對(duì)大小來計(jì)算曲率[10]。這種定義來源于離散曲線的外觀特征,比用連續(xù)空間中曲率的差分近似表示更能準(zhǔn)確反映出離散曲線上拐點(diǎn)的本質(zhì)。選定鄰接距離d的值(d>1),曲線上的點(diǎn)Pi的曲率是以Pi為中心,鄰接距離d范圍內(nèi),離Pi距離相等的點(diǎn)對(duì)之間的歐氏距離的平方和:
(1)
其中x、y分別表示像素點(diǎn)的坐標(biāo)值,k為鄰域內(nèi)點(diǎn)對(duì)個(gè)數(shù)。d鄰域內(nèi),Ci(k)值最大的輪廓點(diǎn)對(duì)應(yīng)曲率最大值,為關(guān)鍵點(diǎn)。然而,由于腐蝕等各種原因,掃描處理得到的書法字輪廓仍然會(huì)存在抖動(dòng)的現(xiàn)象,僅用曲率檢測(cè)拐點(diǎn)很難排除這類噪聲。因此,本文提出第二種拐點(diǎn)特征,定義為曲線上一點(diǎn)pi的到點(diǎn)pi+k和點(diǎn)pi-k所連直線的距離,即:
(2)
其中,preik=|pi-kpi-k+1|+|pi-k+1pi-k+2|+…+|pi-1-pi|,nextik=|pi+1pi+2|+|pi+2pi+3|+…+|pi+k-1-pi+k|,點(diǎn)pi、pi+k和點(diǎn)pi-k所組成的弧段中,pi處方向變化得越劇烈,曲線越彎曲,Di(k)就越大。兩種方式的融合能更準(zhǔn)確地區(qū)別關(guān)鍵與非關(guān)鍵點(diǎn)。本文選擇的關(guān)鍵點(diǎn),滿足下式:
Di(k)/Ci(k)>θ
(3)
其中,經(jīng)過實(shí)驗(yàn)測(cè)試,取k=3,θ=0.015。通過式(3)求得候選關(guān)鍵點(diǎn)后,還要對(duì)候選關(guān)鍵點(diǎn)進(jìn)行篩選,要求兩關(guān)鍵點(diǎn)之間,至少要有3個(gè)以上的輪廓點(diǎn)。從雙重彎曲度最大的拐點(diǎn)開始,依次刪除不符合上述要求的臨近關(guān)鍵點(diǎn),最終得到含有m個(gè)關(guān)鍵點(diǎn)的關(guān)鍵集。按上述方法依次求出所有閉合輪廓的關(guān)鍵點(diǎn)集。如圖1(b)所示為“快”字的輪廓放大圖,輪廓上的點(diǎn)為檢測(cè)出的關(guān)鍵點(diǎn)。
圖1 輪廓關(guān)鍵點(diǎn)提取
2.3 Bezier曲線擬合輪廓
相鄰兩個(gè)關(guān)鍵點(diǎn)以及它們之間的所有輪廓點(diǎn)組成一條輪廓段,一個(gè)閉合輪廓關(guān)鍵集的m個(gè)拐點(diǎn)將閉合輪廓?jiǎng)澐譃閙條輪廓段,每一條輪廓段都可以用Bezier曲線來擬合。Bezier曲線能夠根據(jù)控制點(diǎn)的坐標(biāo)繪制出的一條平滑的矢量曲線。用Bezier曲線擬合輪廓段,要先確定其控制點(diǎn)。本文采用三次貝塞爾曲線,表示為:Q(t)=(1-t)3P0+3t(1-t)2P1+3t2(1-t)P2+t3P3
(4)
其中,P0、P1、P2和P3分別表示三次貝塞爾曲線的四個(gè)控制點(diǎn),P0和P3為曲線段的起點(diǎn)和終點(diǎn),t(0≤t≤1)為控制參數(shù),t=0時(shí)為起始點(diǎn),t=1時(shí)為終止點(diǎn)。取關(guān)鍵點(diǎn)集中兩個(gè)距離最近的點(diǎn)對(duì),作為Bezier曲線的起始點(diǎn)和終止點(diǎn),還需計(jì)算另外兩個(gè)控制點(diǎn),即P1和P2的坐標(biāo)。以Bezier曲線上所有的點(diǎn)與待擬合輪廓段上的對(duì)應(yīng)點(diǎn)距離之和最小時(shí),貝塞爾曲線最接近待擬合曲線,即所求P1和P2應(yīng)該使下式S最小[11]:
(5)
其中,ti=(i-1)/(k-1),k為輪廓段上點(diǎn)的個(gè)數(shù),Qi為輪廓段上第i個(gè)點(diǎn),Q(ti)為Bezier曲線上的對(duì)應(yīng)點(diǎn)。根據(jù)定義,可知P0=Q1,P3=Qk。任意取被擬合的輪廓上的兩輪廓點(diǎn),比如取三分之一處(即t=1/3)的點(diǎn)P1,三分之二處(即t=2/3)的點(diǎn)P2,代入式(4)求出相應(yīng)的P1和P2。變化t值,再取兩個(gè)點(diǎn)對(duì),計(jì)算式(5)的S值。能使S最小的P1和P2為所要求Bezier曲線的控制點(diǎn)。同理可繪制出控制點(diǎn)集中其他點(diǎn)對(duì)的擬合曲線,最終書法字輪廓用Bezier曲線繪制,達(dá)到輪廓矢量化目的。矢量化的書法字輪廓放大時(shí)不再有鋸齒型。
用兩個(gè)不同風(fēng)格的書法字在匹配相應(yīng)點(diǎn)對(duì)時(shí),需要它們的大小在同一個(gè)量級(jí)上。但掃描得到的書法字,有的來自小字碑拓,有的來自大字帖,同一個(gè)字大小不相同。為了能進(jìn)行點(diǎn)對(duì)匹配,進(jìn)而根據(jù)匹配的點(diǎn)對(duì)做合成,需要將書法字的大小歸一化。本文統(tǒng)一將輪廓圖像調(diào)整為128×128像素大小,如圖2所示。
圖2 貝塞爾曲線擬合書法字輪廓
得到了書法字輪廓之后,還需填充輪廓包圍區(qū)域才能形成一個(gè)完整的書法字。傳統(tǒng)的區(qū)域填充算法有掃描線填充算法[12]、種子填充算法[13]、邊填充算法[14]等。針對(duì)書法字輪廓的特點(diǎn),本文提出一種基于邊界跟蹤的掃描線填充算法。
由于提取的書法字輪廓可能形成多個(gè)封閉區(qū)域,可分別判斷每一輪廓的填充區(qū)域,然后在同一背景上先填充外輪廓,再用內(nèi)輪廓覆蓋,完成填充。因?yàn)槊恳粋€(gè)輪廓塊是一個(gè)單連通閉合區(qū)域,可以通過邊界點(diǎn)判斷出填充區(qū)域。對(duì)某一封閉輪廓,首先用上文所述方法順時(shí)針跟蹤輪廓點(diǎn),得到輪廓點(diǎn)的有序序列。設(shè)當(dāng)前填充點(diǎn)的橫坐標(biāo)為s(初始時(shí)令s=-1),填充的終點(diǎn)橫坐標(biāo)為e;當(dāng)前輪廓點(diǎn)為Pi(xi,yi),其下一個(gè)和上一個(gè)輪廓點(diǎn)分別為Pi+1(xi+1,yi+1)和Pi-1(xi-1,yi-1);按從上到下、從左到右的順序遍歷輪廓上的每一個(gè)像素點(diǎn),按以下規(guī)則操作:
1) 若s=-1,且yi+1≤yi 2) 若s≠-1,且yj-1 3) 若不滿足前兩條,則繼續(xù)向后遍歷。 遍歷完所有的點(diǎn)后,完成該輪廓塊的填充。當(dāng)填充完所有的輪廓塊,就得到了一個(gè)完整的書法字。如圖3所示。 圖3 書法字輪廓的填充 合成中間風(fēng)格書法字的關(guān)鍵是如何將兩個(gè)書法字的關(guān)鍵輪廓點(diǎn)一一對(duì)應(yīng)起來,即輪廓點(diǎn)的匹配。輪廓點(diǎn)的匹配主要分為三個(gè)步驟:1) 輪廓塊的匹配,以輪廓塊作為合成的單元;2) 對(duì)應(yīng)輪廓塊上關(guān)鍵點(diǎn)對(duì)的匹配;3) 對(duì)應(yīng)輪廓段上非關(guān)鍵輪廓點(diǎn)對(duì)的匹配。 所有輪廓點(diǎn)配對(duì)完成后,以其中一個(gè)字的輪廓點(diǎn)為源,另一個(gè)字的輪廓點(diǎn)為目標(biāo)。受Bezier曲線生成算法中設(shè)置參數(shù)t的啟發(fā),本文設(shè)置一個(gè)類似的參數(shù)ρ,當(dāng)ρ=0時(shí)得到的是源書法字,當(dāng)ρ=1時(shí)得到的是目標(biāo)書法字,當(dāng)0<ρ<1時(shí)為中間風(fēng)格書法字,既非源書法字,也非目標(biāo)書法字。 4.1 輪廓塊的匹配 同一個(gè)字可以有多種風(fēng)格,但不管風(fēng)格如何改變,整體的筆畫或結(jié)構(gòu)需要保持一致。各筆畫或結(jié)構(gòu)的對(duì)應(yīng)在形態(tài)上具體表現(xiàn)為輪廓塊的對(duì)應(yīng),兩個(gè)相對(duì)應(yīng)輪廓塊上應(yīng)該有足夠多的相似點(diǎn)。 分別來自源書法字和目標(biāo)書法字的兩個(gè)點(diǎn),若能構(gòu)成點(diǎn)對(duì),則它們存在相似的“鄰居關(guān)系”。所謂“鄰居關(guān)系”,是指它們和周圍點(diǎn)的位置關(guān)系可用周圍領(lǐng)域內(nèi)其他輪廓點(diǎn)的數(shù)量來表示。本文采用文獻(xiàn)[8]的方法,以書法字輪廓上一點(diǎn)為中心,分別取半徑r=16,r=32,r=64和r=128為半徑畫圓,與8個(gè)方向的直線相交形成32個(gè)扇形區(qū)域。記pi為來自源書法字第i個(gè)輪廓點(diǎn),qj為來自目標(biāo)書法字的第j個(gè)輪廓點(diǎn),pik表示點(diǎn)pi在第k個(gè)扇面內(nèi)的輪廓點(diǎn)數(shù)量(k=1,2,…,32),S(pi,qj)表示兩點(diǎn)的相似程度: (6) S(pi,qj)值越小,兩點(diǎn)越相似。通過式(6)可得到源書法字上某輪廓點(diǎn)p在目標(biāo)書法字輪廓上的最相似點(diǎn)為q,若能同時(shí)滿足q在源書法字輪廓上的最相似點(diǎn)也為p,則認(rèn)為這兩點(diǎn)是對(duì)應(yīng)點(diǎn)。設(shè)兩書法字的輪廓塊數(shù)分別為m和n,Ai和Bj(i=1,2,…,m;j=1,2,…,n)是分別來自兩書法字的兩個(gè)不同輪廓塊,a和b分別為兩輪廓塊上輪廓點(diǎn)的個(gè)數(shù),N(Ai,Bj)為兩輪廓塊上的對(duì)應(yīng)點(diǎn)數(shù)量,當(dāng)N(Ai,Bj)滿足:N(Ai,Bj)=max[N(Ak,Bl):k=1,2,…,m;l=1,2,…,n] (7) (8) 則認(rèn)為兩輪廓塊Ai和Bj為對(duì)應(yīng)的輪廓塊。 4.2 關(guān)鍵點(diǎn)的匹配 對(duì)應(yīng)輪廓塊匹配完成后,若兩字輪廓塊數(shù)量相同且一一對(duì)應(yīng),則可直接進(jìn)行關(guān)鍵點(diǎn)的匹配。點(diǎn)對(duì)的匹配,不是孤立進(jìn)行的,而是需要保持原有的先后約束關(guān)系。因此,以式(6)為度量找到匹配值最小的點(diǎn)還需滿足與原有輪廓點(diǎn)的鄰居關(guān)系,即原有的先后順序,以保持各自在字輪廓上與前后點(diǎn)的位置關(guān)系不變。 設(shè)對(duì)應(yīng)兩輪廓塊上關(guān)鍵點(diǎn)的數(shù)量分別為n和m,且n≤m,關(guān)鍵點(diǎn)序列分別為Pn和Qm,對(duì)應(yīng)關(guān)鍵點(diǎn)對(duì)序列Dn初始時(shí)為空,按以下方法尋找對(duì)應(yīng)關(guān)鍵點(diǎn): 1) 首先根據(jù)式(6)找出Pn上一點(diǎn)p與其在Qm上的相似點(diǎn)q使S(pi,qj)最小,將p和q作為第一個(gè)對(duì)應(yīng)關(guān)鍵點(diǎn)對(duì),記作p1和q1,加入Dn。以p1和q1為起點(diǎn),按順時(shí)針方向?qū)n和Qm記為(p1,p2,…,pn)和(q1,q2,…,qm),再按此順序?qū)ふ移ヅ潼c(diǎn)對(duì)。 2) 以p1為起點(diǎn),按順序遍歷關(guān)鍵點(diǎn)序列集Pn。設(shè)當(dāng)前點(diǎn)pi的相似點(diǎn)為qj,Dn中最后一對(duì)關(guān)鍵點(diǎn)對(duì)中的一點(diǎn)為qk∈Qm。若S(pi,qj)<φ(φ為經(jīng)驗(yàn)閾值),則認(rèn)為pi和qj相似度太低,將該點(diǎn)對(duì)從Dn中刪除。繼續(xù)遍歷,若j 3) 再次遍歷序列集Pn,若其第i個(gè)點(diǎn)pi不在集合Dn中,則找Dn中離pi最近的兩個(gè)點(diǎn)pa和pb(a 4) 以同樣的方式遍歷序列集Qm,若存在點(diǎn)qj不在集合Dn中,做與步驟3類似處理。 通過以上步驟,集合Dn中將有t對(duì)有序關(guān)鍵點(diǎn)對(duì),將兩個(gè)對(duì)應(yīng)的輪廓塊分別分成t段。如圖4所示,是兩個(gè)“之”字的對(duì)應(yīng)點(diǎn)對(duì)的輪廓塊:“之”字第一個(gè)輪廓塊(構(gòu)成一個(gè)“點(diǎn)”)上有6個(gè)點(diǎn)對(duì),分別標(biāo)記為1~6;第二個(gè)輪廓塊上有17個(gè)關(guān)鍵點(diǎn)對(duì);同一個(gè)點(diǎn)對(duì)使用了相同序號(hào)。 圖4 關(guān)鍵點(diǎn)匹配示例:編號(hào)相同者為相應(yīng)點(diǎn)對(duì) 有時(shí)兩字風(fēng)格相差很大,可能有粘連或斷筆,這使得同一個(gè)字不同書法字的輪廓塊數(shù)量不一樣。這種情況下,上述方法失效。這種情況下,需要通過人工的手段指定或修正部分關(guān)鍵點(diǎn),使輪廓塊能夠相互對(duì)應(yīng),以便達(dá)到良好效果。 4.3 非關(guān)鍵輪廓點(diǎn)的匹配 對(duì)應(yīng)輪廓塊上的對(duì)應(yīng)關(guān)鍵點(diǎn)將各自分割成若干一一對(duì)應(yīng)的輪廓段,這些輪廓段可由一系列以關(guān)鍵點(diǎn)為頭尾的序列表示。與關(guān)鍵點(diǎn)的匹配類似,在尋找對(duì)應(yīng)非關(guān)鍵輪廓點(diǎn)時(shí)也要遵循序列的前后關(guān)系。所不同的是,由于關(guān)鍵點(diǎn)有決定整個(gè)書法字結(jié)構(gòu)的左右,因此需要嚴(yán)格一一對(duì)應(yīng),而非關(guān)鍵輪廓點(diǎn)在合成時(shí)是主要形變的部分,可以一對(duì)多或多對(duì)一,也不要求精準(zhǔn)配對(duì)。 設(shè)對(duì)應(yīng)兩輪廓段上非關(guān)鍵輪廓點(diǎn)的數(shù)量分別為n和m,且n≤m,非關(guān)鍵輪廓點(diǎn)對(duì)應(yīng)序列分別為Pn={p1,p2,…,pn}和Qm={q1,q2,…,qm}。記a=?m/n」,b=m%n,a=n/(b+1),其中a和b為正整數(shù),k為正實(shí)數(shù)。從p1開始遍歷Pn,其中的每個(gè)點(diǎn)都從q1按順序?qū)?yīng)上Qm中的a個(gè)或a+1個(gè)點(diǎn)。對(duì)于Pn中的某一點(diǎn)pi: 1) 若i=?k×c」,其中c為正整數(shù)且 ,則pi對(duì)應(yīng)Qm序列上a+1個(gè)點(diǎn); 2) 反之,pi對(duì)應(yīng)Qm上a個(gè)點(diǎn)。 根據(jù)以上規(guī)則遍歷Pn上所有的點(diǎn)即可完成非關(guān)鍵輪廓點(diǎn)的匹配。 4.4 輪廓的合成與填充 輪廓的合成實(shí)質(zhì)上就是根據(jù)已有的n個(gè)對(duì)輪廓點(diǎn)對(duì)集合Dn,通過某種映射得到新的輪廓點(diǎn)集Pn。其中,軸平移便是最簡(jiǎn)單的一種。設(shè)對(duì)應(yīng)點(diǎn)對(duì)pi和pj的坐標(biāo)分別為(xi,yi)和(xj,yj),則新的輪廓點(diǎn)p的坐標(biāo)為: (x,y)=[xj+(xi-xj)×ρ,yj+(yi-yj)×ρ] (8) 其中0<ρ<1,ρ越大,p越接近pi,反之則越接近pj。通過調(diào)整ρ的值,便可控制合成的輪廓在兩種不同風(fēng)格間變換。 為確保合成輪廓為閉合曲線,先用前面第2節(jié)所述的曲線擬合方法將合成輪廓矢量化,再用第3節(jié)所述的填充方法對(duì)輪廓進(jìn)行填充,便可得到所需的書法字。如圖5和圖6所示分別為兩個(gè)“世”字和“之”字在取不同值時(shí)合成效果。ρ=0和ρ=1時(shí)分別是源書法字與目標(biāo)書法字,其他的ρ取值合成的是介于這兩者風(fēng)格之間的新風(fēng)格書法字。ρ的取值越靠近0,所合成的新字圖像風(fēng)格與源書法字越相似;ρ的取值越靠近1,所合成的新字圖像風(fēng)格與目標(biāo)書法字越相似。 圖5 “世”字的合成效果 圖6 “之”字的合成效果 本文探討了一種基于輪廓擬合的中間風(fēng)格書法字合成方法,通過直接控制輪廓點(diǎn)在兩個(gè)書法字對(duì)應(yīng)輪廓點(diǎn)之間的位置,合成出一種中間風(fēng)格的書法字輪廓,避免了提取筆畫以及建立風(fēng)格語(yǔ)義與輪廓形狀之間映射關(guān)系的復(fù)雜過程;合成以貝塞爾曲線擬合的輪廓段位基本單位,可獲得矢量閉合輪廓,克服了離散輪廓點(diǎn)不連續(xù)的缺點(diǎn);最后以輪廓塊為單位,填充獲得完整的書法字。 此方法易于實(shí)現(xiàn),可用于書法字相關(guān)藝術(shù)設(shè)計(jì)等應(yīng)用中,同時(shí)也為書法字合成相關(guān)研究提供了有價(jià)值的參考。進(jìn)一步的工作是研究如何降低噪聲的影響,以獲取更加自然的書法字輪廓;使用不同字的輪廓塊合成新的書法字;建立書法墨跡模型,還原更真實(shí)的書法字。 [1] China-America Digital Academic Library[OL].[2016-03-10]. http://www.cadal.zju.edu.cn/ NewCalligraphy/. [2] Xu S, Jiang H, Jin T, et al. Automatic Generation of Chinese Calligraphic Writings with Style Imitation[J]. IEEE Intelligent Systems, 2009, 24(2):44-53. [3] Yu K, Wu J Q, Zhuang Y T. Style-consistency calligraphy synthesis system in digital library[C]//Joint International Conference on Digital Libraries, Jcdl 2009, Austin, Tx, Usa, June. DBLP, 2009:145-152. [4] Shi C, Xiao J G, Jia W H, et al. Automatic Generation of Chinese Character Based on Human Vision and Prior Knowledge of Calligraphy[M]// Natural Language Processing and Chinese Computing. Springer Berlin Heidelberg, 2012:23-33. [5] 夏洋. 基于本體模型的特定風(fēng)格書法字合成研究[D]. 杭州: 浙江大學(xué), 2014. [6] Dong J, Xu M, Zhang X J, et al. The Creation Process of Chinese Calligraphy and Emulation of Imagery Thinking[J]. IEEE Intelligent Systems, 2008, 23(6):56-62. [7] 章夏芬. 中國(guó)數(shù)字書法檢索與作品真?zhèn)舞b別的研究[D]. 杭州: 浙江大學(xué), 2006. [8] 章夏芬, 莊越挺, 魯偉明, 等. 根據(jù)形狀相似性的書法內(nèi)容檢索[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2005(11):2565-2569. [9] Canny J. A computational cpproach to edge detection[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,1986,8(6). [10] 尚振宏, 劉明業(yè). 基于歐氏距離的拐點(diǎn)檢測(cè)算法[J].計(jì)算機(jī)應(yīng)用,2004,24(10):88-91. [11] 張俊松. 書法碑帖圖像去噪、輪廓擬合及紋理建模研究[D]. 杭州:浙江大學(xué),2007. [12] Pelagotti A, Piuri V. Neural spectral composition for function approxi-mation[C]//Proc of ICNN, Houston, TX.June 9-12,1997,2:860-864. [13] 孫家廣, 楊長(zhǎng)貴. 計(jì)算機(jī)圖形學(xué)[M]. 北京:清華大學(xué)出版社, 1998. [14] 王琪, 王麗萍, 陳凱迪.一種簡(jiǎn)單的圖案填充算法[J].微計(jì)算機(jī)信息, 2005,21(9):116-117. CALLIGRAPHIC CHARACTER SYNTHESIS BASED ON CONTOUR FITTING Shi Lei Han Dezhi*Zhang Xiafen Bi Kun (CollegeofInformationEngineering,ShanghaiMaritimeUniversity,Shanghai201306,China) Limited to the current limited number of calligraphy resources, calligraphy database does not necessarily have the user needs the style of calligraphy images. To solve this problem, a new method of synthesizing a series of calligraphic characters with intermediate style based on two calligraphic outline is proposed. First, the contours of two sample words with different styles of the same word are extracted, then the contours are fitted by Bezier curve, then the vectorized contour words are normalized to obtain the comparability. Then, the contour points of the two calligraphic words are found by the shape matching method, and the key points are taken as the control points to synthesize the calligraphic vector outline with the intermediate style. Finally, fill the outline with the fill algorithm to get a new style of calligraphy. Contour fitting Fill algorithm Calligraphic character synthesis 2016-04-29。國(guó)家自然科學(xué)基金項(xiàng)目(61373028,61070154)。石雷,碩士生,主研領(lǐng)域:數(shù)字圖像處理。韓德志,博士后。章夏芬,講師。畢坤,講師。 TP391 A 10.3969/j.issn.1000-386x.2017.06.0104 新風(fēng)格書法字合成
5 結(jié) 語(yǔ)