摘 要: 提出了一種針對(duì)篆書和隸書等多類別書法字圖像筆畫及筆順信息的提取算法。算法通過使用書法字骨架圖與輪廓圖相結(jié)合的方式,使用針對(duì)交叉處輪廓點(diǎn)角度聚類及該點(diǎn)與交叉中心歐氏距離相結(jié)合的聚類準(zhǔn)則,完成交叉處筆畫的信息補(bǔ)全、處理,并根據(jù)書寫規(guī)則提取書法字的筆順信息。最后,針對(duì)楷體、隸書、篆書三類書法字圖像做筆畫以及筆順信息的提取,實(shí)驗(yàn)結(jié)果表明本文所提出的方法對(duì)多類別書法字圖像筆畫提取取得了較好的效果。
關(guān)鍵詞: 書法字;筆畫提取;書寫規(guī)則;書法筆順
0 引言
中華民族五千年文化中有大量書法作品,這些書法作品被掃描成頁(yè)面圖像,能夠有利于書法作品的保護(hù)以及便于書法作品的流傳、鑒賞,但是書法頁(yè)面圖像卻無(wú)法表現(xiàn)漢字書寫的過程,丟失了筆順信息。
書法字筆畫、筆順信息除了有益于書法教學(xué)之外,在書法書寫過程重現(xiàn)、書法風(fēng)格自動(dòng)識(shí)別等領(lǐng)域中也是最為重要的信息。
本文提出的方法利用書法單字骨架,結(jié)合輪廓圖提取完整筆畫,并依據(jù)書寫規(guī)則,確定筆畫書寫順序。
1 相關(guān)工作
1.1 筆畫提取
目前,有很多的方法來(lái)完成筆畫提取的工作。在筆畫提取過程中主要需要解決兩個(gè)關(guān)鍵問題:(1)獨(dú)立筆畫的提取;(2)交叉筆畫在交叉段的處理。
目前大多數(shù)的筆畫提取方法是細(xì)化處理:將輸入的漢字圖片處理為骨架圖。對(duì)整個(gè)漢字骨架進(jìn)行跟蹤,初步提取筆畫。此時(shí),無(wú)交叉筆畫已完成提取,但分叉點(diǎn)連接著多個(gè)不完整的筆畫段。此后通過一定的合并、拆分規(guī)則,最終獲得準(zhǔn)確筆畫。這種處理方式能夠?qū)h字的筆畫方向信息完整地保留下來(lái),同時(shí)因?yàn)檎麄€(gè)骨架圖為單像素寬度,降低了后續(xù)筆畫提取的計(jì)算復(fù)雜度。這種方式也存在著較為明顯的缺點(diǎn):(1)失去了筆畫的寬度信息;(2)在細(xì)化過程中,會(huì)引入一定的形變,為后續(xù)筆畫的正確提取造成了一定的難度[1-3]。
另一部分筆畫提取方法使用的是輪廓圖或線鄰接圖(LAG)。提取輪廓特征點(diǎn),計(jì)算各特征點(diǎn)的曲率,尋找出曲率最大的點(diǎn),確定為筆畫拐點(diǎn)。由于在筆畫交叉處,必然存在拐點(diǎn)或角點(diǎn),因此確定拐點(diǎn)或角點(diǎn)的位置能夠進(jìn)一步確定筆畫的走向,完成交叉段不同筆畫的分割、提取[1-3]。
參考文獻(xiàn)[4]提出了基于Delaunay三角剖分的三角網(wǎng)格表征與點(diǎn)到邊界方向距離PBOD曲線相結(jié)合的筆畫提取方法。相較于傳統(tǒng)的基于漢字細(xì)化和LGA等方法,該方法從漢字的基礎(chǔ)特征著手,提取效果較好。
上述方法只是針對(duì)于某一單一風(fēng)格的書法字筆畫提取,或者印刷體漢字提取,沒有針對(duì)多類別的書法字的筆畫提取進(jìn)行驗(yàn)證。
1.2 筆順信息提取
漢字是一種象形文字,其典型的書寫規(guī)則:先左后右,先上后下。本文利用該規(guī)則,結(jié)合已有的筆畫信息,對(duì)筆畫進(jìn)行排序,獲得筆順信息。
2 系統(tǒng)框架
算法的流程圖如圖1所示。
3 骨架筆畫提取
3.1 漢字骨架
漢字的骨架由細(xì)化算法獲取,它必須滿足[5]:
(1)只有一個(gè)像素寬;
?。?)必須穿越物體的中間;
?。?)必須保持物體的拓?fù)浣Y(jié)構(gòu)。
將漢字骨架中的點(diǎn)分為三類[5]:
(1)Nc(P)=1,則P為端點(diǎn);
?。?)Nc(P)=2,則P為普通點(diǎn);
?。?)Nc(P)≥3,則P為交叉點(diǎn)。
其中Nc(P)為骨架點(diǎn)P八鄰域內(nèi)鄰居點(diǎn)數(shù)量。圖2為書法字骨架及端點(diǎn)、交叉點(diǎn)提取結(jié)果示例。
3.2 筆畫段提取
本文中所使用的骨架筆畫段提取方法是根據(jù)文獻(xiàn)[5]、[6]、[7]中所提出的筆畫提取方法,并對(duì)其進(jìn)一步改進(jìn)而來(lái)。
獨(dú)立筆畫:某一筆畫與該漢字的其他筆畫無(wú)相交、無(wú)粘連,則該筆畫稱之為獨(dú)立筆畫,其特征是筆畫的起點(diǎn)與終點(diǎn)必為端點(diǎn),除端點(diǎn)之外的其他骨架點(diǎn)均為普通點(diǎn)。
非獨(dú)立筆畫:某一筆畫與該漢字其他筆畫中的一筆或者多筆相交或粘連,則該筆畫稱之為非獨(dú)立筆畫,它是由端點(diǎn)、普通點(diǎn)以及交叉點(diǎn)構(gòu)成,或者由交叉點(diǎn)、普通點(diǎn)所構(gòu)成。
骨架筆畫段提取步驟如下:
以任意端點(diǎn)為起點(diǎn),沿其鄰接的普通點(diǎn)方向做坐標(biāo)更新,并記錄每次更新的坐標(biāo)與上一次坐標(biāo)的方向編碼,直至遇到交叉點(diǎn)或端點(diǎn)。具體的方向編碼方式如圖3所示。
骨架筆畫段的記錄方式為:
Si={Bi,Ei,Sni}(1)
式中i表示筆畫段的標(biāo)號(hào),Bi、Ei為筆畫段的起點(diǎn)與終點(diǎn),Sni為筆畫段的鏈碼表示,如圖2所示的左上角的筆畫“撇”的筆畫表示為:
{(19,17),(11,33),(666566645644646654)}
筆畫段提取完成之后,可能存在錯(cuò)誤的筆畫段,因此需要依據(jù)下述規(guī)則對(duì)筆畫段進(jìn)行修正,以獲得準(zhǔn)確的骨架筆畫。
規(guī)則1.如果li<L×η(i=1,2,3,…,Ns),則該筆畫為一個(gè)錯(cuò)誤筆畫。其中,η為閾值,本文設(shè)為1/3,Ns為已提取到的筆畫數(shù),li為第i筆筆畫長(zhǎng)度:li=lenght(Sni)+1。
設(shè)L為該字已提取筆畫的平均筆畫長(zhǎng)度:
規(guī)則2.如果筆畫Si,Sj(i≠j)滿足如下條件:(1)Dis(Si,Sj)<λ×μw;(2)筆畫走向一致或相近,則Si,Sj可以合并為同一筆畫。其中Dis(Si,Sj)為筆畫起止點(diǎn)之間的歐式距離。μw為近似的書法字平均筆畫寬度,λ為閾值,本文λ=0.5。
經(jīng)過二值化處理之后的圖像可以認(rèn)為是一個(gè)多邊形,黑色像素點(diǎn)數(shù)目可以近似為該多邊形的面積S,骨架的總長(zhǎng)度可以看作經(jīng)過多邊形中軸的多邊形的底b,漢字筆畫的平均寬度可以近似看作這個(gè)多邊形的高h(yuǎn),由多邊形面積公式S=b×h推導(dǎo)出近似的平均筆畫寬度μw的計(jì)算公式:
NPB為經(jīng)過二值化處理之后的書法字黑色像素點(diǎn)數(shù),NSP為骨架點(diǎn)的數(shù)目。
規(guī)則3.如果筆畫Si,Sj(i≠j)滿足如下條件:(1)Si,Sj與同一交叉點(diǎn)簇相交;(2)Si,Sj筆畫走向一致或相近,則Si,Sj可以合并為同一筆畫。
4 筆順信息獲取
漢字的書寫順序大致滿足如下規(guī)則:從左到右,從上到下。本文依據(jù)該規(guī)則提取書法的筆順信息。
4.1 筆畫起止點(diǎn)的確定
本文規(guī)定書法圖像左上起點(diǎn)為坐標(biāo)原點(diǎn),x軸正向?yàn)樵c(diǎn)指向其右側(cè),y軸正向?yàn)樵c(diǎn)指向其下側(cè)。
對(duì)于骨架筆畫Si的端點(diǎn)Bi,Ei,當(dāng)其滿足如下條件之一:
Bi.x≥Ei.x&Bi.y>Ei.y(4)
Bi.x>Ei.x&Bi.y≥Ei.y(5)
則將端點(diǎn)Bi,Ei進(jìn)行交換。
4.2 標(biāo)定筆畫順序
對(duì)已正確獲得起止點(diǎn)的筆畫,按照如下確定筆畫提取的優(yōu)先順序:
?。?)如果Bi.x<Bj.x,則筆畫Si先于Sj書寫;
?。?)如果Bi.x=Bj.x且Bi.y<Bj.y,則筆畫Si先于Sj書寫;
?。?)如果Si滿足式(6):
Si=max{Ei.x+1.3×Ei.y}(6)
則該筆畫為末筆。
5 筆畫復(fù)原
前文中所提取的骨架筆畫丟失了書法字的寬度信息,將筆畫寬度信息恢復(fù)。
獨(dú)立筆畫的完整筆畫輪廓是一條封閉的曲線;非獨(dú)立筆畫在剔除交叉區(qū)后,其輪廓線是斷開的,需要補(bǔ)全成為封閉曲線。因此,對(duì)于獨(dú)立筆畫而言其所對(duì)應(yīng)的輪廓只需通過連通性檢測(cè)即可實(shí)現(xiàn)寬度信息恢復(fù)。本文重點(diǎn)解決對(duì)于存在交叉區(qū)域的筆畫寬度信息恢復(fù)。
5.1 交叉點(diǎn)簇與交叉區(qū)域
由于骨架圖在提取過程中會(huì)產(chǎn)生一定的形變,因此交叉區(qū)域在骨架中會(huì)產(chǎn)生兩種情況:
?。?)在交叉區(qū)域,由交叉點(diǎn)與普通點(diǎn)組成,如圖4左圖:由兩個(gè)交叉點(diǎn)包圍著多個(gè)普通點(diǎn)在小的鄰域內(nèi)連續(xù)出現(xiàn)。
?。?)在交叉區(qū)域,骨架圖完全由交叉點(diǎn)組成,如圖4右部,在一個(gè)小的鄰域內(nèi)連續(xù)出現(xiàn)交叉點(diǎn)。
第二種情況是由骨架圖的形變所引起。為了修正形變,根據(jù)最大圓準(zhǔn)則[5-8]進(jìn)行簡(jiǎn)化處理:對(duì)于骨架圖中的兩個(gè)特征點(diǎn)(交叉點(diǎn)),分別計(jì)算出它們?cè)谠瓐D(未骨架化的圖像)中到筆畫輪廓的最大內(nèi)切圓的半徑。如果兩個(gè)特征點(diǎn)之間的距離小于或等于各自內(nèi)切圓半徑之和,那么這兩個(gè)特征點(diǎn)對(duì)應(yīng)一個(gè)筆畫的相交區(qū)域。將第二種情況中的由交叉點(diǎn)所包圍的普通點(diǎn)標(biāo)定為交叉點(diǎn)。進(jìn)一步將上文中所述的兩種情況歸并為對(duì)交叉點(diǎn)簇的處理。
本文使用點(diǎn)簇的虛擬質(zhì)心Pc來(lái)標(biāo)定筆畫交叉區(qū)域,Pc的計(jì)算如式(7)所示:
其中,N為交叉點(diǎn)簇中交叉點(diǎn)的數(shù)量,pif為該點(diǎn)簇中的第i個(gè)交叉點(diǎn)。
5.2 交叉區(qū)處理
前文中通過交叉點(diǎn)簇的中心完成了交叉區(qū)域的定位,為了進(jìn)一步減少待處理的像素點(diǎn)的數(shù)目,使用輪廓圖來(lái)進(jìn)行交叉區(qū)域的處理。
骨架是圖像的中軸[9-11],因此,對(duì)書法字輪廓圖做筆畫提取,交叉區(qū)域的輪廓圖有如下的特點(diǎn):
?。?)位于交叉區(qū)域的輪廓線,相對(duì)于交叉區(qū)域質(zhì)心位置相對(duì)固定,且局部不相交。
?。?)筆畫在交叉區(qū)域的輪廓缺失。
因此,要提取到完整的筆畫信息需要補(bǔ)全筆畫缺失的輪廓點(diǎn)。
5.2.1 聚類坐標(biāo)系建立
為了更好地提取四條輪廓線,應(yīng)按照如圖5所示的方式建立聚類坐標(biāo)系:
(1)坐標(biāo)系原點(diǎn)為交叉區(qū)域質(zhì)心,x軸正方向?yàn)橛稍c(diǎn)指向右側(cè),y軸正方向?yàn)橛稍c(diǎn)指向上側(cè)。
?。?)若交叉筆畫在交叉處的行筆方向LDir(i)、LDir(j)與(1)中所建立的坐標(biāo)系中坐標(biāo)軸不平行,則坐標(biāo)系逆時(shí)針旋轉(zhuǎn)θ=45°。
5.2.2 輪廓點(diǎn)聚類
坐標(biāo)系的建立,為輪廓點(diǎn)的分類奠定了基礎(chǔ)。按照輪廓點(diǎn)所屬象限將輪廓點(diǎn)分為四個(gè)類別,具體步驟如下:
?。?)以原點(diǎn)為圓心,以間隔角度ω=1°,最大半徑R=3μw,做掃描,記錄落入圓內(nèi)的所有輪廓點(diǎn)。
?。?)計(jì)算每一個(gè)輪廓點(diǎn)與x軸正方向的夾角θ,同時(shí)計(jì)算其與原點(diǎn)的距離|piCo-Pc|并記錄。
?。?)計(jì)算每一個(gè)點(diǎn)的類別C(θ),并將其記錄。
其中:
5.2.3 輪廓連接點(diǎn)確定
使用輪廓圖提取筆畫的關(guān)鍵點(diǎn)是找到輪廓點(diǎn)中拐點(diǎn)或角點(diǎn),來(lái)確定筆畫的走向,完成筆畫的提取。為了補(bǔ)全筆畫所缺失的輪廓點(diǎn),需要確定輪廓線在交叉區(qū)域的拐點(diǎn),找到各個(gè)象限中距離原點(diǎn)最近的點(diǎn),從而確定輪廓圖在交叉區(qū)域的拐點(diǎn)即筆畫在此處的鏈接點(diǎn)Plinkc。
Plinkc=arg min{piCo-Pc |piCo∈P_set(c)}(9)
其中,P_set(c)為第c類輪廓點(diǎn)集合,Plinkc為第c類連接點(diǎn)。
交叉筆畫可以分為“十”型交叉及“T”型交叉,針對(duì)不同的交叉類型,選擇不同連接點(diǎn)。
(1)“十”型交叉如圖6,交叉各筆畫缺失兩條輪廓線,因此需要選擇四個(gè)連接點(diǎn),依據(jù)筆畫在交叉處的行筆方向,組合為兩條平行于筆畫交叉處行筆方向的輪廓線的起止點(diǎn),完成輪廓線的補(bǔ)全。
?。?)“T”型交叉如圖7,交叉各筆畫,均缺失同一條輪廓線,因此需要選取兩個(gè)連接點(diǎn),依據(jù)某一筆畫在交叉處的行筆方向,選取相同的兩類連接點(diǎn)作為一條輪廓線的起始點(diǎn)(該輪廓線平行于一條筆畫的行筆方向,垂直于與該筆畫相交的筆畫的行筆方向),完成輪廓線的補(bǔ)全。
6 實(shí)驗(yàn)分析
6.1 實(shí)驗(yàn)結(jié)果
圖8為楷體字“生”的筆畫及筆順提取示意。為了驗(yàn)證本文所提出算法的有效性,本文使用三類不同書法風(fēng)格的單字圖像完成筆畫提取實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果如表1、表2所示。
6.2 實(shí)驗(yàn)結(jié)果分析
整個(gè)實(shí)驗(yàn)共有110幅單字圖片,不同類別的圖片數(shù)分別為40、40、30。由表1可以看出,針對(duì)不同類別的書法單字圖像的筆畫提取的準(zhǔn)確率不同,對(duì)篆書書法字的提取效果最好,行楷提取效果最差。在表2中針對(duì)提取正確的書法單字圖像做完整筆畫提取,可以看到準(zhǔn)確率均在90%以上??偟墓P畫提取(骨架)正確率為83.9%,針對(duì)筆畫提取(骨架)正確的圖像做完整的筆畫提取總的準(zhǔn)確率為93.2%。
可以看到,本文提出的基于骨架與輪廓圖相結(jié)合的筆畫提取算法能夠較好地完成不同類別的書法單字的筆畫提取,受書法字骨架引入的形變的影響較小。同時(shí)可以看出,筆畫提?。ü羌埽┑恼_率對(duì)整體的筆畫提取工作有著較大的影響。如何進(jìn)一步完成筆畫(骨架)的修正是提高整體筆畫提取正確率的關(guān)鍵。
7 總結(jié)
本文提出將書法漢字圖像骨架圖與輪廓圖相結(jié)合的方法,能夠完成適應(yīng)多類書法風(fēng)格的書法漢字筆畫提取以及基于書寫規(guī)則的筆順信息提取。相較于傳統(tǒng)方法,本文所提出的算法能夠有效地降低筆畫提取操作所需要的時(shí)間,簡(jiǎn)化了計(jì)算復(fù)雜度,并且對(duì)多類書法字的筆畫、筆順提取都取得了較好的效果。
下一步的工作將是繼續(xù)對(duì)算法進(jìn)行修正,以獲得針對(duì)更多類別書法字的筆畫提取的結(jié)果,提高筆畫提取的準(zhǔn)確率。
參考文獻(xiàn)
[1] 張世輝,孔令富.漢字識(shí)別及現(xiàn)狀分析[J].燕山大學(xué)學(xué)報(bào),2003,27(4):367-369.
[2] 李正華,胡奇光.漢字筆畫提取的算法與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2004,21(7):96-97.
[3] 王建平,藺菲,陳軍.基于手寫體漢字筆畫提取重構(gòu)的識(shí)別方法[J].人工智能及識(shí)別技術(shù),2007,33(10):230-232.
[4] Wang Xiaoqing, Liang Xiaohui, Sun Linjia, et al. Triangular mesh based stroke segmentation for Chinese calligraphy[C]. International Conference on Document Analysis and Recognition, 2013:1155-1159.
[5] 陳睿.漢字離線識(shí)別技術(shù)中筆畫提取模型研究[D].重慶:西南師范大學(xué),2004.
[6] 陳睿,唐雁,邱玉輝.基于筆畫段分割和組合的漢字筆畫提取模型[J].計(jì)算機(jī)科學(xué),2003,30(10):74-77.
[7] 章夏芬.中國(guó)數(shù)字書法檢索與作品真?zhèn)舞b別的研究[D].杭州:浙江大學(xué),2006.
[8] 章夏芬,莊越挺,魯偉明,等.根據(jù)形狀相似性的書法內(nèi)容檢索[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)報(bào),2005,17(11):2565-2569.
[9] 郭晨.基于圖像處理技術(shù)的手寫體漢字特征分析的研究[D].天津:天津科技大學(xué),2010.
[10] 孫華,李愛平.支持向量機(jī)的古漢字識(shí)別研究[J].電腦知識(shí)與技術(shù),2013,9(18):4296-4298.
[11] 苗晉誠(chéng).基于骨架化、骨架劃分獲取書法漢字結(jié)構(gòu)特征的方法[J].昆明理工大學(xué)學(xué)報(bào)(理工版),2008,33(3):53-61.