郭 晨,胡曉彤
(天津科技大學(xué)計算機科學(xué)與信息工程學(xué)院,天津 300222)
基于計算機圖像處理的書法筆畫特征提取
郭 晨,胡曉彤
(天津科技大學(xué)計算機科學(xué)與信息工程學(xué)院,天津 300222)
提出一種利用計算機圖像處理技術(shù)進行楷書基本筆畫特征提取的方法.從書法筆畫圖像細化得到筆畫骨架出發(fā),提取筆畫的全局特征和局部特征,用骨架關(guān)鍵點將筆畫分為多個筆段,并結(jié)合書法寫作特點通過對筆段內(nèi)部及筆段之間特征進行分析,對書法筆畫圖像的形體特征選擇、提取進行初步的探索.
書法;筆畫;骨架;特征提取
書法是中國傳統(tǒng)文化的結(jié)晶,近年隨著計算機相關(guān)技術(shù)的迅猛發(fā)展推動了書法作品數(shù)字化的步伐,普通大眾可以方便地通過互聯(lián)網(wǎng)接觸到數(shù)量眾多的書法作品,其中楷書是書法學(xué)習(xí)中最常見的字體.
如今,國內(nèi)對于印刷體漢字的預(yù)處理[1]和特征的研究方法[2]已經(jīng)基本形成了固定的模式,并且取得了令人滿意的效果.而對于毛筆楷體字,因為每個人筆法不同、書寫特點因人而異,其特征提取研究的難度較大,在國內(nèi)尚屬起步領(lǐng)域,還無一套通用的特征提取方法,所以制約著對數(shù)字化楷書圖像的進一步處理分析.
目前,手寫體漢字的筆畫提取、歸一化等算法的研究已經(jīng)非常成熟,如王建平的《基于手寫體漢字筆畫提取重構(gòu)的識別方法》[3]、金連文的《一種簡單有效的手寫體漢字筆畫粗細歸一化方法》[4]等.將這些方法用于數(shù)字化楷書圖像上同樣取得了很好的處理效果.
本文以歸一化后圖像規(guī)模相同的楷體單筆畫圖像為研究對象,利用計算機圖像處理技術(shù)提出通用于橫、豎、撇、捺、點等簡單筆畫和豎彎鉤、臥鉤等復(fù)雜筆畫圖像的筆畫形體特征提取方法,對脫機書法字的特征提取進行了探索性研究,旨在為楷體書法字的進一步具體處理打下基礎(chǔ).
對楷體筆畫的形體特征提取從全局特征和局部特征兩個層次進行.通過細化筆畫得到筆畫骨架,對骨架點處筆畫寬度,骨架端點、拐點等全局特征進行提取分析;將筆畫分為筆段,進而提取筆段長度、平均半徑、相對擾動度等筆段內(nèi)特征以及筆段間夾角、筆段轉(zhuǎn)折點特征等局部特征.
在對書法筆畫圖像進行分析之前先進行預(yù)處理,將原始圖像轉(zhuǎn)換為二值化圖像,筆畫圖像的灰度值為1,背景的灰度值為0.再對其進行去噪處理后,得到較為清晰的筆畫圖像.
1.1 筆畫寬度特征提取
漢字筆段的提取方法有細化法、輪廓信息法、數(shù)學(xué)形態(tài)學(xué)法、小波分析法、行程長度法和段化法等.其中,細化法可以提取連通的單像素骨架,更適合書法筆畫處理的特點,雖然可能造成骨架畸變,但對于畸變的校正已有非常成熟的方法,所以選擇細化法進行筆畫骨架提?。?/p>
筆畫骨架在保留筆畫大多數(shù)特征的同時丟失了筆畫的粗細變化,因此,作為描述筆畫特征的重要指標(biāo),需要單獨提取筆畫寬度.利用如圖1所示最大圓法采集每個骨架點處筆畫寬度[5],實現(xiàn)方法如下:
(1)以檢測點為圓心O,初始半徑R=0.
(2)圓心O固定不變,半徑值R=R+1,畫圓.
(3)檢測圓內(nèi)各像素點是否在筆畫范圍以內(nèi).由于筆畫像素點在二值圖像中值為1,所以只需檢測圓內(nèi)所有像素點值是否全部為1,是則轉(zhuǎn)回(2),否則認為大圓已經(jīng)超出筆畫內(nèi)部范圍,跳出循環(huán),進入下一步(4).
(4)取R=R-1為骨架點O處筆畫半徑,即最大圓超出筆畫范圍前的半徑值.
該點的筆畫寬度W與所得最大圓半徑R有關(guān):W=2R+1,W與R為線性關(guān)系,故在筆畫寬度特征中直接使用R代替W.
圖1 筆畫寬度提取Fig.1 Extract width of stroke
圖2為圖1所示筆畫的寬度信息.圖中橫坐標(biāo)為骨架點序號,縱坐標(biāo)為骨架點處的半徑值.通過統(tǒng)計所有骨架點的半徑值,可以反映該筆畫的寬度變化情況.其中,曲線的上升部分對應(yīng)筆畫中寬度增加段,曲線下降部分對應(yīng)筆畫中寬度減小段.
另外,圖2中曲線的斜率能夠在一定程度上評價該筆畫各部分的運筆情況,即骨架點寬度變寬對應(yīng)書寫中的按筆過程,骨架點寬度變窄對應(yīng)書寫中的提筆過程.曲線的斜率越大表示提筆或按筆動作越快.
圖2 捺筆畫寬度變化曲線Fig.2 Width curve for Nal stroke
同時,對圖1所示筆畫的不同筆畫半徑值進行統(tǒng)計,結(jié)果如圖3所示.橫坐標(biāo)為寬度半徑值,縱坐標(biāo)為該半徑值的骨架點個數(shù).通過統(tǒng)計不同半徑值的骨架點個數(shù),能夠全面了解該筆畫寬度的分布情況.
圖3 捺筆畫寬度統(tǒng)計Fig.3 Width statistics for Nal stroke
1.2 筆畫長度、斜率和弧度特征
1.2.1 筆畫長度
長度特征L用來描述筆畫骨架的規(guī)模.在骨架遍歷的過程中,記錄從一個端點到另一個端點遍歷過的所有骨架點數(shù),用骨架點數(shù)作為描述筆畫總體長度的長度特征L.
1.2.2 斜率
筆畫端點相對位置斜率K在一定程度上可以反映筆畫的大體走勢.單筆畫圖像都有且只有兩個端點,端點連線的斜率用于描述筆畫端點相對位置斜率特征.
1.2.2 弧度特征
相對擾動度特征、最大擾度點相對位置特征和彎曲度特征用于描述筆畫弧度的特點.對于筆畫骨架與端點連線有交點的筆畫,用相對擾動度特征,最大擾動點相對位置特征相結(jié)合對筆畫弧度進行描述.
提取相對擾動度之前,先根據(jù)式(1)對骨架點位于端點連線的上、下側(cè)進行判斷.行列式值>0說明骨架點在端點連線左或上側(cè);行列式值=0 說明骨架點是骨架與端點連線的交點;行列式值<0 說明骨架點在端點連線右或下側(cè).
式中:Pi是要進行判斷的骨架點,坐標(biāo)為(x,y);Pi-1與Pi+1是兩端點,坐標(biāo)為(x1,y1),(x2,y2).
相對擾動度R和最大擾度點相對位置S的定義如圖4所示.
圖4 相對擾動度提取示意圖Fig.4 Figure of relative disturbance degree extraction
圖4中Ps為運筆骨架的起點,Pe為運筆骨架的終點,l為Ps與Pe的連線,d1為Ps與Pe的距離,Puh是位于l上方的運筆骨架中到l的最大距離點,d3為Puh到l的距離,Puc為Puh在l上的投影,d2為Puc到Pe的距離.
正向相對擾動度為負向相對擾動度和負向擾度點相對位置與正向的情況描述相同.
對于筆畫骨架與端點連線無交點的筆畫,用筆畫彎曲度特征描述:
筆畫彎曲度為
2.1 骨架關(guān)鍵點提取與筆畫分割
骨架兩端的點稱為端點.端點的提取是根據(jù)計算每個骨架點的八鄰域中相鄰骨架點的個數(shù)來確定的.也就是當(dāng)某一骨架點的八鄰域中只有一個骨架點與其相連,則認為該骨架點為端點,否則視該骨架點為非端點,端點與非端點的區(qū)別如圖5所示.
圖5 端點與非端點的區(qū)別Fig.5 Difference of endpoint and otherpoint
拐點是骨架點中曲率最大的點.簡單筆畫,如橫、豎、撇、捺、點等,使用提取曲率最大點的方法提取拐點,分析發(fā)現(xiàn)曲率最大的骨架點都是距離端點連線距離最遠的骨架點.同時,利用簡單筆畫的端點和所得拐點可以將筆畫分割為兩個小筆段.以筆畫捺為例,如圖6所示.
圖6 筆畫捺的拐點提取與分割Fig.6 Extracting inflection point and dividing for Nal stroke
另一方面,對于起收筆抖動較小的橫、豎、撇、捺、點等基本筆畫,提取得到拐點和兩個端點共3個關(guān)鍵點,將筆畫分為起運筆、運收筆兩部分.這種情況起筆、收筆與運筆之間并無明顯界限,一氣呵成.因此,根據(jù)非端點關(guān)鍵點將筆畫分為前后兩段,更符合實際的審美習(xí)慣.
對于復(fù)雜筆畫,如橫折筆、橫彎鉤、豎彎鉤、臥鉤等筆畫拐點的提取比較復(fù)雜.具體方法為循環(huán)使用上述簡單拐點提取方法,進行復(fù)雜筆畫的拐點提?。词紫纫哉麄€筆畫的端點為起始點進行一次拐點的檢測,然后將檢測到的拐點作為端點進行下一級拐點的檢測,直到新得到的小筆段內(nèi)部拐點與所在小筆段兩端點連線所成角度小于閾值,即認為該筆段彎曲程度較小無需設(shè)置拐點為止.經(jīng)實驗,閾值設(shè)定為0.48弧度時提取拐點的效果較好.
圖7中,對臥鉤多次提取拐點后得到兩個拐點P1與P2.顯然P1點是進行筆畫分段的拐點.
圖7 復(fù)雜筆畫的端點、拐點提取Fig.7 Extract startpoint,endpoint,inflection point for complex strokes
對于復(fù)雜筆畫,還需要對拐點提取后得到的多個拐點進行分析,以去掉對筆畫分段無意義的偽拐點,如圖7中P2點.
根據(jù)筆畫拐點的曲率變化可以分為分割筆段級別拐點和行筆過程中拐點(偽拐點),用來區(qū)分檢測到的拐點在筆畫中所處位置的不同特點.具體判斷方法是:將拐點與其左右各5個點進行直線擬合,用擬合直線的斜率表示該拐點處的曲率值;同時用此方法對拐點及左右各5個點進行曲率計算;在以拐點為中心,左右各5個點的鄰域內(nèi)對相鄰兩點的曲率值做差并取絕對值,比較所得的10個差值,若各差值的平均值大于閾值,則該拐點處曲率變化較大,該拐點為分割筆畫級別拐點;否則,該拐點為行筆過程中的一個偽拐點.
表1所示為臥鉤筆畫在P1與P2兩個鄰域的曲率和曲率差值數(shù)據(jù).
表1 拐點P1、P2鄰域內(nèi)各點曲率值及相鄰點曲率差值Tab.1 Curvature value and curvature difference value between adjacent points in the neighborhood of inflection point P1,P2
P1點為臥鉤的彎筆與鉤筆的交接處,通過分析數(shù)據(jù)發(fā)現(xiàn),以P1為中心的鄰域內(nèi)曲率從5.000變化到-0.758,變化幅度平均值為0.530,曲率變化幅度較大,P1為分割筆畫級別拐點.P2點位于臥鉤的彎筆行筆過程中,曲率變化緩慢,以P2為中心的鄰域內(nèi)曲率從-0.097變化到0.545,變化幅度很小,變化幅度的平均值為0.045左右,筆畫走勢變化不大,P2為偽拐點.
對折筆、鉤筆筆畫等復(fù)雜筆畫通過上述方法去掉偽拐點后,可以將分段級拐點與筆畫端點一起作為關(guān)鍵點,將筆畫分段.
2.2 筆段內(nèi)部特征提取
經(jīng)過上述關(guān)鍵點提取后,可將筆畫進行分段.分段后可以得到每個筆段提取筆段長度l、筆段走勢k、筆段平均寬度w′、筆段彎曲度特征d等信息,作為描述該筆畫的信息.
筆段長度即筆畫骨架中該筆段骨架的長度,使用方向鏈碼從筆段骨架一端起遍歷至另一端,遍歷經(jīng)過的骨架點數(shù)加兩端點的總點數(shù)為長度l.小筆段長度與筆畫長度的比值s,用于描述筆段長度在筆畫長度中的比例.
在筆段兩個端點間作直線,計算直線的斜率作為筆段的走勢方向特征,設(shè)兩端的坐標(biāo)分別為(x1,y1)、(x2,y2),則斜率的計算公式為筆段的寬度特征包括筆段平均寬度和筆段內(nèi)寬度變化兩方面.
取筆段骨架點筆畫半徑值平均數(shù)為筆段平均寬度w′,計算公式為
筆段的彎曲度d采用最大距離法計算,即提取筆段實際骨架到筆段端點連線的最大擺動距離為彎曲度.骨架上的拐點離端點連線距離d越大,彎曲幅度越大,反之越?。?/p>
2.3 小筆段間特征的提取
小筆段間關(guān)系特征包括:筆段間夾角、筆段間寬度變化、筆畫轉(zhuǎn)折類型.
首先對相鄰的兩個筆段分別做直線擬合,計算兩條擬合直線的斜率.?dāng)M合直線有多種方法,如端點連線擬合、端點連線平移擬合、最小二乘擬合等方法,針對書法圖像特點使用最小二乘法進行直線擬合.
基于最小二乘法[6]的直線擬合是對數(shù)據(jù)點(xi,yi)(i=1,2,3,…,n)作擬合y=b+ax,求出a,b使式(8)的值最?。?/p>
計算出a和b,y=b+ax即為擬合直線.通過兩條擬合直線方程得到其夾角,作為相鄰小筆段之間的夾角.
筆畫間寬度變化,即通過比較相鄰筆段的平均寬度大小將相鄰筆段的寬度筆畫分為寬度由大變小或由小到大兩種情況.
筆段間轉(zhuǎn)折類型是對書法筆畫轉(zhuǎn)折時有無頓筆的分析.對于普通的無頓筆轉(zhuǎn)折,在其細化骨架轉(zhuǎn)折處僅通過一個拐點進行轉(zhuǎn)折,稱為圓折.如圖8(a)所示.而對于筆畫轉(zhuǎn)折處使用頓筆的情況,在轉(zhuǎn)折處比較小的范圍內(nèi)存在兩個拐點,稱為方折,如圖8(b)所示.
圖8 圓折和方折Fig.8 Round turning and square turning
首先檢測拐點數(shù)量,若僅有一個拐點,則該拐點兩側(cè)相鄰筆段之間的轉(zhuǎn)折方式為圓折.若拐點數(shù)量多于一個,則按骨架序列順序計算各相鄰拐點之間的距離,若該距離小于閾值,則認為這兩個拐點及其之間的骨架點一起組成了筆畫轉(zhuǎn)折中的頓筆.
由于頓筆長度隨筆畫規(guī)模變化,所以對頓筆長度判斷的閾值與筆畫規(guī)模成正比.經(jīng)多次實驗,確定筆畫長度的八分之一作為動態(tài)閾值,若兩拐點之間的筆段長度小于閾值則判斷該筆段為頓筆部分,筆畫轉(zhuǎn)折類型為方折;若兩拐點之間的筆段長度大于閾值,則認為該筆段不是頓筆.
表2為對圖8(b)筆畫進行實驗所得數(shù)據(jù).通過分析,方折筆筆畫的動態(tài)閾值=筆畫長度×1/8=129×1/8=16.125>10,動態(tài)閾值>拐點相連筆段長度,檢測得出兩個拐點及其之間筆段組成頓筆部分,所有筆畫轉(zhuǎn)折特征為方折.
表2 折筆筆畫長度及拐點之間距離Tab.2 Turning strokes length and distance between inflection points
本文利用計算機圖像處理技術(shù)對數(shù)字化楷體筆畫進行特征提取,對書法作品的筆畫形體特征提取方法進行了初步的探索.對單筆畫圖像的全局特征和局部特征的選擇和提取進行了全面的分析,為數(shù)字化書法作品的識別、風(fēng)格研究、臨摹對比等高級處理提供了特征提取及分析的手段.
[1]張世輝. 漢字圖像預(yù)處理算法的研究及實現(xiàn)[J]. 微機發(fā)展,2003,13(4):53–55.
[2]丁曉青. 漢字識別研究的回顧[J]. 電子學(xué)報,2002,30(9):1364–1368.
[3]王建平,藺菲,陳軍. 基于手寫體漢字筆畫提取重構(gòu)的識別方法[J]. 計算機工程,2007,33(10):230–232.
[4]金連文,徐睿,龍鈞宇. 一種簡單有效的手寫體漢字筆畫粗細歸一化[DB/OL]. (2003–12–10)[2009–11–19]. http://www. paper789. com/paper_zfcq5l.
[5]何浩志,朱寧波,劉偉. 基于骨架點分布規(guī)律的漢字筆段提取算法[J]. 計算機工程與應(yīng)用,2007,43(22):83–86.
[6]汪榮鑫. 數(shù)理統(tǒng)計[M]. 西安:西安交通大學(xué)出版社,1986:223.
Feature Extraction for Calligraphy Stroke Based on Computer Image Processing
GUO Chen,HU Xiao-tong
(College of Computer Science and Information Engineering,Tianjin University of Science & Technology,Tianjin 300222,China)
Using computer image processing technology a method of extracting features for basic stroke of regular script was presented. Stroke skeleton was got by means of thinning calligraphy stroke image. Then global features and local features of stroke were extracted,stroke was divided into multiple segments by the key points extracted from skeleton,considered with the characteristics of calligraphy writing the features within and between segments were analyzed. It is a preliminary exploration to choose and extract shape feature for calligraphy stroke image.
calligraphy;stroke;skeleton;feature extraction
TP391
:A
:1672-6510(2010)05-0068-05
2010-01-31;
2010-04-29
郭 晨(1983—),男,山西人,碩士研究生;通信作者:胡曉彤,碩士生導(dǎo)師,huxt@tust.edu.cn.