專利名稱:一種計算機(jī)模仿漢字手寫筆跡的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機(jī)藝術(shù)與美學(xué)以及人工智能領(lǐng)域,尤其涉及一種計算機(jī)模仿 漢字手寫筆跡的方法。
背景技術(shù):
已經(jīng)有大量的工作來模擬人類的藝術(shù)思維,并進(jìn)一步建立計算機(jī)智能系統(tǒng)以
解決真實世界里的問題。在中文字方面,1995年的Proceedings of the International Conference on Computer Processing of Oriental Languages (ICCPOL)會議論文集 (文章標(biāo)題"Chinese glyph generation using character composition and beauty evaluation metrics")公布了 一個使用啟發(fā)式的方法來嘗試定量評估中文字體美感 的問題他們定義了在漢字寫作里的四條規(guī)則,并實現(xiàn)到了他們基于規(guī)則的美 學(xué)評分模塊中;這一模塊簡單地對四條規(guī)則逐一計算相應(yīng)的分?jǐn)?shù),并得到他們 的加權(quán)和。2005年的IEEE Intelligent Systems雜志(文章標(biāo)題"Automatic generation of artistic Chinese calligraphy",以下簡稱文獻(xiàn)IS2005)刊登了一個中 國藝術(shù)書法的自動生成系統(tǒng)。但是,他們的工作主要關(guān)注在使用基于約束的推 理來生成格式化的中文字體,而幾乎沒有關(guān)注到這些生成結(jié)果如何具有美感。
為了獲得更好的計算機(jī)中文字體生成結(jié)果,也為了嘗試對美學(xué)做定量計算, 我們通過學(xué)習(xí)基本數(shù)值關(guān)系背后的訓(xùn)練集從而實現(xiàn)了漢字美觀度評分。許多在 工作中使用過專家系統(tǒng)的人知道,高級的專家規(guī)則并不總能正常工作;而有時 這并不一定是由于專家系統(tǒng)本身的知識盲點,或者問題根本無法總結(jié)。因此我 們覺得,我們基于學(xué)習(xí)技術(shù)的數(shù)據(jù)驅(qū)動方法可以提供一種比人類專家的大腦評 測更好的機(jī)器評價能力。
在繪畫方面,計算機(jī)圖形學(xué)領(lǐng)域中同樣有一些研究自動繪畫創(chuàng)作的工作, 但這大都是在給定一幅照片的基礎(chǔ)上完成的。其他也有人探索了結(jié)合人工智能 和人機(jī)交互技術(shù)來創(chuàng)作繪畫風(fēng)格的動畫,如2006年ACM學(xué)報ACM Trans. Graph 干'J登的文章"Animating Chinese paintings through stroke-based decomposition,,用筆 劃分解的方法來實現(xiàn)動態(tài)的繪畫。在視覺藝術(shù)領(lǐng)域之外,計算機(jī)音樂是另一個 應(yīng)用人工智能技術(shù)來進(jìn)行或協(xié)助創(chuàng)作的成功方向。在2007年的國際人工智能聯(lián) 合大會(IJCAI2007)上,有一個獨立的專題叫音樂人工智能(MUSIC-AI2007) 來專門研討這一話題。值得注意的是,對于計算機(jī)音樂的研究包括自動音樂創(chuàng) 作與音樂評價,這與我們在中文字體上的思路比較相似。此外還有其他大量的
研究工作如故事創(chuàng)作,可信執(zhí)法官,互動式故事,等等,都旨在捕捉美學(xué)的
可計算性。
發(fā)明內(nèi)容
本發(fā)明的目的是克服現(xiàn)有技術(shù)的不足,提供一種計算機(jī)模仿漢字手寫筆跡 的方法。
計算機(jī)模仿漢字手寫筆跡的方法包括以下步驟
1) 預(yù)先對已有個人手寫體漢字樣本進(jìn)行筆劃分解與分類,對每個用戶寫過 的每個筆劃、部首、整字以及字體內(nèi)部空間結(jié)構(gòu)都進(jìn)行了統(tǒng)一的參數(shù)化,并連 同幾種常用字體,建立個人手寫字體數(shù)據(jù)庫;
2) 對待模仿漢字,在其對應(yīng)的楷體字上做筆劃分解以及參數(shù)化;
3) 逐一根據(jù)個人手寫字體數(shù)據(jù)庫構(gòu)造待模仿漢字的各個部首或筆劃;
4) 根據(jù)個人手寫字體數(shù)據(jù)庫模仿待模仿漢字的內(nèi)部空間結(jié)構(gòu),將模仿得到 的各個部首或筆劃拼接成完整的漢字,作為模仿字跡結(jié)果;若有多個備選方案, 則擇一作為模仿字跡結(jié)果。
所述的預(yù)先對已有個人手寫體漢字樣本進(jìn)行筆劃分解與分類,對每個用戶 寫過的每個筆劃、部首、整字以及字體內(nèi)部空間結(jié)構(gòu)都進(jìn)行了統(tǒng)一的參數(shù)化, 并連同幾種常用字體,建立個人手寫字體數(shù)據(jù)庫步驟
(1) 對每個已有的個人手寫體漢字圖像,對其做細(xì)化,筆劃分解,提取出其 軌跡與書寫寬度特征,以參數(shù)向量的形式表示每個漢字;
(2) 根據(jù)步驟(l)所得的參數(shù)向量,將每個漢字按整字、部首、筆劃組織成層 次式的樹形結(jié)構(gòu)表示;樹形結(jié)構(gòu)中的每一個節(jié)點都表示了個人書寫筆跡中的一 個單字或部首或筆劃,每個單字或部首的各個子部分都是其對應(yīng)節(jié)點的子節(jié)點;
(3) 在步驟(2)所得樹形結(jié)構(gòu)中,對每一節(jié)點的單字或部首,計算出其內(nèi)部空 間結(jié)構(gòu)的參數(shù)化矩陣。
所述的對每個已有的個人手寫體漢字圖像,對其做細(xì)化,筆劃分解,提取 出其軌跡與書寫寬度特征,以參數(shù)向量的形式表示每個漢字步驟
a) 對漢字圖像做細(xì)化處理,以獲得該字的骨架圖像;
b) 將該字與其標(biāo)準(zhǔn)楷書字體做筆劃匹配,用啟發(fā)式搜索的方法找出骨架各 部分與標(biāo)準(zhǔn)筆劃的一一對應(yīng)關(guān)系,完成骨架上的筆劃分解;
c) 對每筆劃上的各骨架點,以其為圓心畫橢圓,使該橢圓盡量大而又不包 含任何原字體圖像上的空白部分,該筆劃的所有橢圓區(qū)域總和即為筆劃分解所 得的圖像輪廓;
d) 將所有橢圓的長短軸、圓心坐標(biāo)列為一個矩陣,即為該字體的參數(shù)向量。 所述的在步驟(2)所得樹形結(jié)構(gòu)中,對每一節(jié)點的單字或部首,計算出其內(nèi)
部空間結(jié)構(gòu)的參數(shù)化矩陣步驟-
e) 對每個單字或部首的各個子部分部首或筆劃作出其范圍矩形,即在二 維平面上包含該字部分且邊框平行于x軸與y軸的面積最小矩形;
f) 計算每兩個子部分的范圍矩形之間的相互空間位置,即對每兩個范圍矩 瓜;;哲。/門^t:ik亞nx古"tm "t^i古茲加ZV ^G^旦^"66HH水縣ZVSi1^41 dl d"-
設(shè)該單字或部首共有n個子部分,則得到一個nxn的矩陣,其中每個矩陣元素為 一個二元組(Bh,Bv),即該單字或部首的內(nèi)部空間結(jié)構(gòu)的參數(shù)化矩陣。
所述的對待模仿漢字,在其對應(yīng)的楷體字上做筆劃分解以及參數(shù)化步驟
(4) 對該待模仿漢字,如權(quán)利要求3所述,對其做細(xì)化,筆劃分解,提取出 其軌跡與書寫寬度特征,以參數(shù)向量的形式表示每個漢字;
(5) 對該待模仿漢字,如權(quán)利要求4所述,計算出其內(nèi)部空間結(jié)構(gòu)的參數(shù)化 矩陣。
所述的逐一根據(jù)個人手寫字體數(shù)據(jù)庫構(gòu)造待模仿漢字的各個部首或筆劃步
(6) 枚舉該漢字所有可能的部首級與筆劃級的子部分劃分方案;
C7)對步驟(6)中的每一種子部分劃分方案,對方案中的各個子部分,在個人 手寫字體數(shù)據(jù)庫中查找該子部分是否在該個人已有筆跡中出現(xiàn);若有,則選出 所有該子部分的筆跡作為候選,若已有筆跡不足5 10個,則隨機(jī)以常用字體 的該子部分補足;
(8) 為步驟(7)中的每個子部分的每個候選,計算其子部分仿寫可靠度;若該 候選筆跡來源于該個人,則該候選的子部分仿寫可靠度為1,否則為0;
(9) 為步驟(6)中的每一種子部分劃分方案,計算其仿寫可靠度;設(shè)按該方案, 待仿寫漢字由n個子部分構(gòu)成,則該方案的仿寫可靠度 乂=^1八1+"^+...+乂11^,其中^^2,...^分別為該方案下各個子部分的子部分 仿寫可靠度,Al,A2,…,An為在待仿寫漢字的標(biāo)準(zhǔn)楷體字中,各個子部分范圍矩 形所占面積在整字范圍矩形所占面積的比例;
(10) 為每一種子部分劃分方案選出仿寫可靠度最高的一組仿寫結(jié)果。 所述的根據(jù)個人手寫字體數(shù)據(jù)庫模仿待模仿漢字的內(nèi)部空間結(jié)構(gòu),據(jù)此將
模仿得到的各個部首或筆劃拼接成完整的漢字,作為模仿字跡結(jié)果;若有多個 備選方案,則擇一作為模仿字跡結(jié)果步驟
(11) 預(yù)先在標(biāo)準(zhǔn)楷體字體中,將所有漢字按照結(jié)構(gòu)分類,分類包括獨體 結(jié)構(gòu)、左右結(jié)構(gòu)、上下結(jié)構(gòu)、內(nèi)外結(jié)構(gòu)、左中右結(jié)構(gòu)、上中下結(jié)構(gòu);
(12) 對待模仿漢字,在該個人已寫過的字中,査找該漢字是否被其寫過; 則將所有該人寫過的該漢字筆跡的內(nèi)部空間結(jié)構(gòu)參數(shù)矩陣作為候選;
(13) 若該漢字未曾被該人寫過,則在該個人已寫過的字中,査找出所有與 待模仿漢字屬同一結(jié)構(gòu)分類的漢字;
(14) 對步驟(13)已找出的漢字,計算每個漢字與其對應(yīng)在各個常用字體上的 字體相似度;兩個字體間的字體相似度定義為在放縮字體使得兩個字體的范 圍矩形面積一樣時,兩個字體的字跡部分的重合面積占范圍矩形面積的比例; 對每一常用字體,取所有所求字體相似度的平均值作為該常用字體與待仿寫人 字跡的總體相似度;
(15) 取總體相似度最大的常用字體,按照待模仿漢字在該常用字體中的內(nèi) 部結(jié)構(gòu)參數(shù)矩陣,將如步驟(10)所述的各個部首或筆劃的仿寫結(jié)果組合成整字, 作為該字的仿寫輸出。
本發(fā)明與現(xiàn)有技術(shù)相比具有的有益效果 (1 )實現(xiàn)了高度自動化的筆跡仿寫,大大減少了其中原本繁瑣的人工操作;
(2) 從漢字的筆劃形狀與空間結(jié)構(gòu)關(guān)系上直接分析與保存,更加本質(zhì)的抓 住了個人筆跡的潛在特征,使仿寫結(jié)果更為合理;
(3) 選擇部首與筆劃的策略更加理性合理,使仿寫字跡更加接近本人的筆跡。
圖1是本發(fā)明所述系統(tǒng)的實施例流程圖; 圖2(a)是漢字樣本字體; 圖2(b)是圖2(a)中字體的細(xì)化結(jié)果; 圖2(c)是圖2(a)中字體的"幾何圖";
圖3是本發(fā)明所述筆劃分解及漢字參數(shù)化的流程示例圖3(a)是漢字樣本字體;
圖3(b)是圖3(a)的"幾何圖";
圖3(c)是圖3(a)的對應(yīng)標(biāo)準(zhǔn)字體,即正楷字體;
圖3(d)是圖3(a)在骨架上的筆劃分解結(jié)果;
圖3(d)是圖3(a)的最終筆劃分解結(jié)果;
圖4是本發(fā)明所述利用用戶交互界面協(xié)助筆劃分解及漢字參數(shù)化的流程示
例圖4(a)是漢字樣本字體;
圖4(b)是圖4(a)的"幾何圖";
圖4(c)是圖4(a)的標(biāo)準(zhǔn)字體,即正楷字體;
圖4(d)是圖4(a)的自動分解結(jié)果,彩色筆劃表示在自動分解成功的筆劃; 圖4(e)是用戶通過交互界面在字體上勾勒的剩余筆劃草圖; 圖4(f)是根據(jù)用戶草圖得到的骨架上的筆劃匹配結(jié)果; 圖4(g)是綜合圖4(d)和圖4(f)所示結(jié)果后的筆劃骨架; 圖4(h)是圖4(a)的最終筆劃分解結(jié)果;
圖5是手寫字體數(shù)據(jù)庫中,兩個漢字字體以樹型結(jié)構(gòu)表示的示例圖6是漢字手寫筆跡模仿結(jié)果的一些示例,其中第l、 3行分別是兩個不同 個人的手寫筆跡,第2、 4行分別是本發(fā)明所述系統(tǒng)通過該個人其他手寫字跡來 模仿得到的仿寫結(jié)果;
圖7是漢字手寫筆跡模仿結(jié)果的一些示例,其中前4行是用作建立個人手 寫字體數(shù)據(jù)庫的個人手寫筆跡樣例,后4行是利用前4行的筆跡樣例應(yīng)用本發(fā) 明所述實施例系統(tǒng)得到的仿寫結(jié)果。
具體實施例方式
計算機(jī)模仿漢字手寫筆跡的方法包括以下步驟
1) 預(yù)先對已有個人手寫體漢字樣本進(jìn)行筆劃分解與分類,對每個用戶寫過 的每個筆劃、部首、整字以及字體內(nèi)部空間結(jié)構(gòu)都進(jìn)行了統(tǒng)一的參數(shù)化,并連 同幾種常用字體,建立個人手寫字體數(shù)據(jù)庫;
2) 對待模仿漢字,在其對應(yīng)的楷體字上做筆劃分解以及參數(shù)化;
3) 逐一根據(jù)個人手寫字體數(shù)據(jù)庫構(gòu)造待模仿漢字的各個部首或筆劃;
4) 根據(jù)個人手寫字體數(shù)據(jù)庫模仿待模仿漢字的內(nèi)部空間結(jié)構(gòu),將模仿得到 的各個部首或筆劃拼接成完整的漢字,作為模仿字跡結(jié)果;若有多個備選方案, 則擇一作為模仿字跡結(jié)果。
所述的預(yù)先對已有個人手寫體漢字樣本進(jìn)行筆劃分解與分類,對每個用戶 寫過的每個筆劃、部首、整字以及字體內(nèi)部空間結(jié)構(gòu)都進(jìn)行了統(tǒng)一的參數(shù)化, 并連同幾種常用字體,建立個人手寫字體數(shù)據(jù)庫步驟
(1) 對每個已有的個人手寫體漢字圖像,對其做細(xì)化,筆劃分解,提取出其 軌跡與書寫寬度特征,以參數(shù)向量的形式表示每個漢字;
(2) 根據(jù)步驟(l)所得的參數(shù)向量,將每個漢字按整字、部首、筆劃組織成層
9
次式的樹形結(jié)構(gòu)表示;樹形結(jié)構(gòu)中的每一個節(jié)點都表示了個人書寫筆跡中的一 個單字或部首或筆劃,每個單字或部首的各個子部分都是其對應(yīng)節(jié)點的子節(jié)點;
(3) 在步驟(2)所得樹形結(jié)構(gòu)中,對每一節(jié)點的單字或部首,計算出其內(nèi)部空 間結(jié)構(gòu)的參數(shù)化矩陣。
所述的對每個已有的個人手寫體漢字圖像,對其做細(xì)化,筆劃分解,提取 出其軌跡與書寫寬度特征,以參數(shù)向量的形式表示每個漢字步驟
a) 對漢字圖像做細(xì)化處理,以獲得該字的骨架圖像;
b) 將該字與其標(biāo)準(zhǔn)楷書字體做筆劃匹配,用啟發(fā)式搜索的方法找出骨架各 部分與標(biāo)準(zhǔn)筆劃的一一對應(yīng)關(guān)系,完成骨架上的筆劃分解;
c) 對每筆劃上的各骨架點,以其為圓心畫橢圓,使該橢圓盡量大而又不包 含任何原字體圖像上的空白部分,該筆劃的所有橢圓區(qū)域總和即為筆劃分解所 得的圖像輪廓;
d) 將所有圓的長短軸、圓心坐標(biāo)列為一個矩陣,即為該字體的參數(shù)向量。 所述的在步驟(2)所得樹形結(jié)構(gòu)中,對每一節(jié)點的單字或部首,計算出其內(nèi)
部空間結(jié)構(gòu)的參數(shù)化矩陣步驟
e) 對每個單字或部首的各個子部分部首或筆劃作出其范圍矩形,即在二 維平面上包含該字部分且邊框平行于x軸與y軸的面積最小矩形;
f) 計算每兩個子部分的范圍矩形之間的相互空間位置,即對每兩個范圍矩 形計算它們在水平、豎直方向上的重疊部分,設(shè)得到的兩個量分別為Bh、 Bv; 設(shè)該單字或部首共有n個子部分,則得到一個nxn的矩陣,其中每個矩陣元素為 一個二元組(Bh,Bv),即該單字或部首的內(nèi)部空間結(jié)構(gòu)的參數(shù)化矩陣。
所述的對待模仿漢字,在其對應(yīng)的楷體字上做筆劃分解以及參數(shù)化步驟
(4) 對該待模仿漢字,如權(quán)利要求3所述,對其做細(xì)化,筆劃分解,提取出 其軌跡與書寫寬度特征,以參數(shù)向量的形式表示每個漢字;
(5) 對該待模仿漢字,如權(quán)利要求4所述,計算出其內(nèi)部空間結(jié)構(gòu)的參數(shù)化 矩陣。
所述的逐一根據(jù)個人手寫字體數(shù)據(jù)庫構(gòu)造待模仿漢字的各個部首或筆劃步
(6) 枚舉該漢字所有可能的部首級與筆劃級的子部分劃分方案;
(7) 對步驟(6)中的每一種子部分劃分方案,對方案中的各個子部分,在個人 手寫字體數(shù)據(jù)庫中查找該子部分是否在該個人已有筆跡中出現(xiàn);若有,則選出 所有該子部分的筆跡作為候選,若已有筆跡不足5 10個,則隨機(jī)以常用字體
的該子部分補足;
(8) 為步驟(7)中的每個子部分的每個候選,計算其子部分仿寫可靠度;若該 候選筆跡來源于該個人,則該候選的子部分仿寫可靠度為1,否則為O;
(9) 為步驟(6)中的每一種子部分劃分方案,計算其仿寫可靠度;設(shè)按該方案, 待仿寫漢字由n個子部分構(gòu)成,則該方案的仿寫可靠度 X=xlAl+x2A2+...+xnAn,其中xl,x2,…,xn分別為該方案下各個子部分的子部分 仿寫可靠度,八1,八2,...^11為在待仿寫漢字的標(biāo)準(zhǔn)楷體字中,各個子部分范圍矩 形所占面積在整字范圍矩形所占面積的比例;
(10) 為每一種子部分劃分方案選出仿寫可靠度最高的一組仿寫結(jié)果。 所述的根據(jù)個人手寫字體數(shù)據(jù)庫模仿待模仿漢字的內(nèi)部空間結(jié)構(gòu),據(jù)此將
模仿得到的各個部首或筆劃拼接成完整的漢字,作為模仿字跡結(jié)果;若有多個 備選方案,則擇一作為模仿字跡結(jié)果步驟
(11) 預(yù)先在標(biāo)準(zhǔn)楷體字體中,將所有漢字按照結(jié)構(gòu)分類,分類包括獨體 結(jié)構(gòu)、左右結(jié)構(gòu)、上下結(jié)構(gòu)、內(nèi)外結(jié)構(gòu)、左中右結(jié)構(gòu)、上中下結(jié)構(gòu);
(12) 對待模仿漢字,在該個人已寫過的字中,査找該漢字是否被其寫過; 則將所有該人寫過的該漢字筆跡的內(nèi)部空間結(jié)構(gòu)參數(shù)矩陣作為候選;
(13) 若該漢字未曾被該人寫過,則在該個人已寫過的字中,査找出所有與 待模仿漢字屬同一結(jié)構(gòu)分類的漢字;
(14) 對步驟(13)已找出的漢字,計算每個漢字與其對應(yīng)在各個常用字體上的 字體相似度;兩個字體間的字體相似度定義為在放縮字體使得兩個字體的范 圍矩形面積一樣時,兩個字體的字跡部分的重合面積占范圍矩形面積的比例; 對每一常用字體,取所有所求字體相似度的平均值作為該常用字體與待仿寫人 字跡的總體相似度;
(15) 取總體相似度最大的常用字體,按照待模仿漢字在該常用字體中的內(nèi) 部結(jié)構(gòu)參數(shù)矩陣,將如步驟(10)所述的各個部首或筆劃的仿寫結(jié)果組合成整字, 作為該字的仿寫輸出。
如圖1所示,本發(fā)明所述的實施例系統(tǒng)包括個人書寫筆跡樣例10、筆劃分 解與參數(shù)化20、手寫字體數(shù)據(jù)庫建立30、筆劃與部首仿寫40、字體空間結(jié)構(gòu)模 仿50、個人筆跡仿寫結(jié)果60。
個人書寫筆跡樣例10:該部分包括多個該個人筆跡的字體圖像;在本實施例中, 所有的字體圖像都被分離成了一個個的單字,然后將它們歸一化成同一尺寸的 二值黑白圖像(長寬均為300像素點);其示例如圖2A所示。
筆劃分解與參數(shù)化20:在本實施例中,該部分包括以下步驟
(A) 從字體圖像中提取其結(jié)構(gòu)特征,其步驟詳述如下(參見圖2A、圖2B、 圖2C):
1) 對漢字圖像101做細(xì)化(Thi皿ing)處理,以獲得該字的骨架圖像;本實施 例應(yīng)用了 ACM學(xué)報在1994年所公布的一個圖像細(xì)化算法("A noniterative thinning algorithm" y4CM TraraaWora ow Ma^e附加'ca/ Sq/hvare, 20(1 ):5-20,
1994);其示例如圖2B所示;
2) 從骨架圖像中提取"特征點"("特征點"的定義參考IEEE學(xué)報1999年公布 的一篇文章"Identification of fork points on the skeletons of handwritten Chinese characters" rraws"Wo"s o" _Pa#m2Mflc/w'"e /"fe〃/ge"ce (PAMI) 21(10):1095-1100, 1999,以下簡稱文獻(xiàn)PAMI99),這些特征點將把整個骨架分 割成若干條曲線段;
3) 對每條曲線段都用多條首尾相連的直線段來近似,具體步驟如下對每一 條未被直線段取代的曲線段AB,設(shè)A、 B分別是其兩端端點;計算以曲線段 AB上的某一點C為頂點的夾角ACB,當(dāng)角ACB最大時的角度值小于一個預(yù)定 值(如135度),則將曲線段AB分割成AC, CB兩段;否則以直線段連接AB 兩點,取代原有的曲線段AB;該步驟不斷進(jìn)行直至所有曲線段均被直線段所取 代;
4) 由一系列直線段及其端點構(gòu)成的圖被稱為該字體的"幾何圖"(geometric graph);對"幾何圖"做修正和剪枝;本實施例應(yīng)用了文獻(xiàn)PAMI99中使用的骨架 圖修正技術(shù);最終得到的"幾何圖"示例如圖2C所示;
(B) 在步驟(A)中所述漢字字體與其標(biāo)準(zhǔn)字體間計算出一個最佳的筆劃匹 配,從而完成筆劃分解,其步驟詳述如下(參見圖3):
1) 對步驟(A)所述字體的標(biāo)準(zhǔn)字體重復(fù)步驟(A),得到該標(biāo)準(zhǔn)字體的"幾 何圖";并假設(shè)標(biāo)準(zhǔn)字體的筆劃分解結(jié)果已經(jīng)預(yù)知;
2) 在步驟(A)中所述字體的"幾何圖"與其標(biāo)準(zhǔn)字體的"幾何圖"間,計算出 一個最佳的筆劃匹配結(jié)果;本實施例應(yīng)用了《模式識別》雜志于2001年公布的 一篇文章("Model-based stroke extraction and matching for handwritten Chinese character recognition".及ecogwY/o", 34(12):2339-2352, 2001)中所述啟發(fā) 式搜索的方法來計算出"幾何圖,,上的筆劃間 一一對應(yīng)關(guān)系;
3) 將"幾何圖"上以多條直線段表示的各筆劃軌跡,轉(zhuǎn)化為在原字體輪廓上的 筆劃分解結(jié)果,其具體方法為對各筆劃上的各直線段上的每一點,以其為圓
心畫橢圓,使該橢圓盡量大而又不包含任何原字體圖像上的空白部分(即在原 字體的黑白圖像上,該橢圓區(qū)域內(nèi)的所有像素點均為黑色),該筆劃的所有橢圓 區(qū)域總和即為筆劃分解所得的圖像輪廓;
(C)對與標(biāo)準(zhǔn)字體形態(tài)相差較大的字體,對步驟(B)中無法完成匹配的部 分筆劃,使用一個交互式的用戶界面來協(xié)助筆劃分解,其步驟詳述如下(參見
圖4):
1) 用戶通過交互式的用戶界面來為字體描繪其骨架草2) 根據(jù)用戶草圖來修改由標(biāo)準(zhǔn)字體而得的"幾何圖";本實施例將步驟(2)中 未完成匹配的部分筆劃在標(biāo)準(zhǔn)字體"幾何圖"中均由用戶草圖的對應(yīng)部分所替代;
3) 重復(fù)步驟(B),重新計算筆劃間的最佳匹配方案,從而完成筆劃分解; (D)對完成筆劃分解的字體,將其參數(shù)化,以向量的形式表達(dá);本實施例采用了 2005年IEEE Intelligent System雜志中的一篇文獻(xiàn)Automatic generation of artistic Chinese calligraphy中的漢字參數(shù)化方法,每個字體都等價的用一個矩陣在向量 空間中表示。
手寫字體數(shù)據(jù)庫建立30:如圖5所示,在本實施例中對已有個人手寫體漢字樣 本,并連同幾種常用字體,建立個人手寫字體數(shù)據(jù)庫;將每個漢字按整字、部 首、筆劃組織成層次式的樹形結(jié)構(gòu)表示;樹形結(jié)構(gòu)中的每一個節(jié)點都表示了個 人書寫筆跡中的一個單字或部首或筆劃,每個單字或部首的各個子部分都是其 對應(yīng)節(jié)點的子節(jié)點;
對每一節(jié)點的單字或部首,計算出其內(nèi)部空間結(jié)構(gòu)的參數(shù)化矩陣
1) 對每個單字或部首的各個子部分部首或筆劃作出其范圍矩形,即在二 維平面上包含該字部分且邊框平行于x軸與y軸的面積最小矩形;
2) 計算每兩個子部分的范圍矩形之間的相互空間位置,即對每兩個范圍矩 形計算它們在水平、豎直方向上的重疊部分,設(shè)得到的兩個量分別為Bh、 Bv; 設(shè)該單字或部首共有n個子部分,則得到一個nxn的矩陣,其中每個矩陣元素為 一個二元組(Bh,Bv),即該單字或部首的內(nèi)部空間結(jié)構(gòu)的參數(shù)化矩陣。 筆劃與部首仿寫40:在本實施例中,該部分包括以下步驟
1) 對待仿寫漢字,對其正楷字體做筆劃分解與參數(shù)化20,并計算出其內(nèi)部 空間結(jié)構(gòu)的參數(shù)化矩陣;
2) 通過其正楷字體,枚舉該漢字所有可能的部首級與筆劃級的子部分劃分 方案,如圖5(a)中的"行"字,其可能的子部分劃分方案包括Po, PlP2, PlP5P6, P3P4P2, P3P4P5P6共五種; 3) 對每一種子部分劃分方案,對方案中的各個子部分,在手寫字體數(shù)據(jù)庫 建立20中得到字體數(shù)據(jù)庫中査找該子部分是否存在,選出所有該子部分的筆跡 作為候選;
4) 為每個子部分的每個候選,計算其仿寫可靠度;若該候選為該個人所寫 筆跡,則該候選的仿寫可靠度為1;若該候選來自于常用字體,則仿寫可靠度為 0;
5) 為每一種子部分劃分方案,計算其仿寫可靠度;設(shè)按該方案,待仿寫漢 字由n個子部分構(gòu)成,則該方案的仿寫可靠度X=XlAl+x2A2+...+xnAn,其中 xl,x2,…,xn分別為該方案下各個子部分的子部分仿寫可靠度,Al,A2,…,An為在 待仿寫漢字的標(biāo)準(zhǔn)楷體字中,各個子部分范圍矩形所占面積在整字范圍矩形所 占面積的比例;
(10)為每一種子部分劃分方案選出仿寫可靠度最高的一組方案,作為筆劃 與部首仿寫40的仿寫結(jié)果。
字體空間結(jié)構(gòu)模仿50:在本實施例中,該部分包括以下步驟
1) 預(yù)先在標(biāo)準(zhǔn)楷體字體中,將所有漢字按照結(jié)構(gòu)分類,分類包括獨體結(jié) 構(gòu)、左右結(jié)構(gòu)、上下結(jié)構(gòu)、內(nèi)外結(jié)構(gòu)、左中右結(jié)構(gòu)、上中下結(jié)構(gòu);
2) 對待模仿漢字,在該個人已寫過的字中,査找該漢字是否被其寫過;則 將所有該人寫過的該漢字筆跡的內(nèi)部空間結(jié)構(gòu)參數(shù)矩陣作為候選;
3) 若該漢字未曾被該人寫過,則在該個人已寫過的字中,査找出所有與待 模仿漢字屬同一結(jié)構(gòu)分類的漢字;
4) 對已找出的漢字,計算每個漢字與其對應(yīng)在各個常用字體上的字體相似 度;兩個字體間的字體相似度定義為在放縮字體使得兩個字體的范圍矩形面 積一樣時,兩個字體的字跡部分的重合面積占范圍矩形面積的比例;對每一常 用字體,取所有所求字體相似度的平均值作為該常用字體與待仿寫人字跡的總 體相似度;
5) 取總體相似度最大的常用字體,按照待模仿漢字在該常用字體中的內(nèi)部 結(jié)構(gòu)參數(shù)矩陣,將筆劃與部首仿寫40中得到的各個部首或筆劃的仿寫結(jié)果組合 成整字,作為該字的仿寫結(jié)果。
個人筆跡仿寫結(jié)果60:在本實施例中,該部分采用與個人書寫筆跡樣例IO相同 的表示方式,即同一尺寸的二值黑白圖像,作為仿寫結(jié)果輸出;其示例如圖6、 圖7所示。
權(quán)利要求
1. 一種計算機(jī)模仿漢字手寫筆跡的方法,其特征在于包括以下步驟1)預(yù)先對已有個人手寫體漢字樣本進(jìn)行筆劃分解與分類,對每個用戶寫過的每個筆劃、部首、整字以及字體內(nèi)部空間結(jié)構(gòu)都進(jìn)行了統(tǒng)一的參數(shù)化,并連同幾種常用字體,建立個人手寫字體數(shù)據(jù)庫;2)對待模仿漢字,在其對應(yīng)的楷體字上做筆劃分解以及參數(shù)化;3)逐一根據(jù)個人手寫字體數(shù)據(jù)庫構(gòu)造待模仿漢字的各個部首或筆劃;4)根據(jù)個人手寫字體數(shù)據(jù)庫模仿待模仿漢字的內(nèi)部空間結(jié)構(gòu),將模仿得到的各個部首或筆劃拼接成完整的漢字,作為模仿字跡結(jié)果;若有多個備選方案,則擇一作為模仿字跡結(jié)果。
2. 如權(quán)利要求1所述的一種計算機(jī)模仿漢字手寫筆跡的方法,其特征在于 所述的預(yù)先對已有個人手寫體漢字樣本進(jìn)行筆劃分解與分類,對每個用戶寫過 的每個筆劃、部首、整字以及字體內(nèi)部空間結(jié)構(gòu)都進(jìn)行了統(tǒng)一的參數(shù)化,并連 同幾種常用字體,建立個人手寫字體數(shù)據(jù)庫步驟(1) 對每個已有的個人手寫體漢字圖像,對其做細(xì)化,筆劃分解,提取出其 軌跡與書寫寬度特征,以參數(shù)向量的形式表示每個漢字;(2) 根據(jù)步驟(l)所得的參數(shù)向量,將每個漢字按整字、部首、筆劃組織成層 次式的樹形結(jié)構(gòu)表示;樹形結(jié)構(gòu)中的每一個節(jié)點都表示了個人書寫筆跡中的一 個單字或部首或筆劃,每個單字或部首的各個子部分都是其對應(yīng)節(jié)點的子節(jié)點;(3) 在步驟(2)所得樹形結(jié)構(gòu)中,對每一節(jié)點的單字或部首,計算出其內(nèi)部空 間結(jié)構(gòu)的參數(shù)化矩陣。
3. 如權(quán)利要求2所述的一種計算機(jī)模仿漢字手寫筆跡的方法,其特征在于 所述的對每個已有的個人手寫體漢字圖像,對其做細(xì)化,筆劃分解,提取出其 軌跡與書寫寬度特征,以參數(shù)向量的形式表示每個漢字步驟a) 對漢字圖像做細(xì)化處理,以獲得該字的骨架圖像;b) 將該字與其標(biāo)準(zhǔn)楷書字體做筆劃匹配,用啟發(fā)式搜索的方法找出骨架各 部分與標(biāo)準(zhǔn)筆劃的一一對應(yīng)關(guān)系,完成骨架上的筆劃分解;c) 對每筆劃上的各骨架點,以其為圓心畫橢圓,使該橢圓盡量大而又不包 含任何原字體圖像上的空白部分,該筆劃的所有橢圓區(qū)域總和即為筆劃分解所 得的圖像輪廓;d) 將所有橢圓的長短軸、圓心坐標(biāo)列為一個矩陣,即為該字體的參數(shù)向量。
4. 如權(quán)利要求2所述的一種計算機(jī)模仿漢字手寫筆跡的方法,其特征在于 所述的在步驟(2)所得樹形結(jié)構(gòu)中,對每一節(jié)點的單字或部首,計算出其內(nèi)部空 間結(jié)構(gòu)的參數(shù)化矩陣步驟e) 對每個單字或部首的各個子部分部首或筆劃作出其范圍矩形,即在二 維平面上包含該字部分且邊框平行于X軸與y軸的面積最小矩形;f) 計算每兩個子部分的范圍矩形之間的相互空間位置,即對每兩個范圍矩 形計算它們在水平、豎直方向上的重疊部分,設(shè)得到的兩個量分別為Bh、 Bv; 設(shè)該單字或部首共有n個子部分,則得到一個nxn的矩陣,其中每個矩陣元素為 一個二元組(Bh,Bv),即該單字或部首的內(nèi)部空間結(jié)構(gòu)的參數(shù)化矩陣。
5. 如權(quán)利要求1所述的一種計算機(jī)模仿漢字手寫筆跡的方法,其特征在于 所述的對待模仿漢字,在其對應(yīng)的楷體字上做筆劃分解以及參數(shù)化步驟-(4) 對該待模仿漢字,如權(quán)利要求3所述,對其做細(xì)化,筆劃分解,提取出 其軌跡與書寫寬度特征,以參數(shù)向量的形式表示每個漢字;(5) 對該待模仿漢字,如權(quán)利要求4所述,計算出其內(nèi)部空間結(jié)構(gòu)的參數(shù)化 矩陣。
6. 如權(quán)利要求1所述的一種計算機(jī)模仿漢字手寫筆跡的方法,其特征在于 所述的逐一根據(jù)個人手寫字體數(shù)據(jù)庫構(gòu)造待模仿漢字的各個部首或筆劃步驟(6) 枚舉該漢字所有可能的部首級與筆劃級的子部分劃分方案;CO對步驟(6)中的每一種子部分劃分方案,對方案中的各個子部分,在個人 手寫字體數(shù)據(jù)庫中査找該子部分是否在該個人已有筆跡中出現(xiàn);若有,則選出 所有該子部分的筆跡作為候選,若已有筆跡不足5 10個,則隨機(jī)以常用字體 的該子部分補足;(8) 為步驟(7)中的每個子部分的每個候選,計算其子部分仿寫可靠度;若該 候選筆跡來源于該個人,則該候選的子部分仿寫可靠度為1,否則為0;(9) 為步驟(6)中的每一種子部分劃分方案,計算其仿寫可靠度;設(shè)按該方案, 待仿寫漢字由n個子部分構(gòu)成,則該方案的仿寫可靠度 X=xlAl+x2A2+...+xnAn,其中xl,x2,...,xn分別為該方案下各個子部分的子部分 仿寫可靠度,Al,A2,…,An為在待仿寫漢字的標(biāo)準(zhǔn)楷體字中,各個子部分范圍矩 形所占面積在整字范圍矩形所占面積的比例;(10) 為每一種子部分劃分方案選出仿寫可靠度最高的一組仿寫結(jié)果。
7. 如權(quán)利要求1所述的一種計算機(jī)模仿漢字手寫筆跡的方法,其特征在于 所述的根據(jù)個人手寫字體數(shù)據(jù)庫模仿待模仿漢字的內(nèi)部空間結(jié)構(gòu),據(jù)此將模仿 得到的各個部首或筆劃拼接成完整的漢字,作為模仿字跡結(jié)果;若有多個備選 方案,則擇一作為模仿字跡結(jié)果步驟(11) 預(yù)先在標(biāo)準(zhǔn)楷體字體中,將所有漢字按照結(jié)構(gòu)分類,分類包括獨體 結(jié)構(gòu)、左右結(jié)構(gòu)、上下結(jié)構(gòu)、內(nèi)外結(jié)構(gòu)、左中右結(jié)構(gòu)、上中下結(jié)構(gòu);(12) 對待模仿漢字,在該個人已寫過的字中,查找該漢字是否被其寫過; 則將所有該人寫過的該漢字筆跡的內(nèi)部空間結(jié)構(gòu)參數(shù)矩陣作為候選;(13) 若該漢字未曾被該人寫過,則在該個人已寫過的字中,査找出所有與 待模仿漢字屬同一結(jié)構(gòu)分類的漢字;(14) 對步驟(13)己找出的漢字,計算每個漢字與其對應(yīng)在各個常用字體上的 字體相似度;兩個字體間的字體相似度定義為在放縮字體使得兩個字體的范 圍矩形面積一樣時,兩個字體的字跡部分的重合面積占范圍矩形面積的比例; 對每一常用字體,取所有所求字體相似度的平均值作為該常用字體與待仿寫人 字跡的總體相似度;(15) 取總體相似度最大的常用字體,按照待模仿漢字在該常用字體中的內(nèi) 部結(jié)構(gòu)參數(shù)矩陣,將如權(quán)利要求6所述的各個部首或筆劃的仿寫結(jié)果組合成整 字,作為該字的仿寫輸出。
全文摘要
本發(fā)明公開了一種計算機(jī)模仿漢字手寫筆跡的方法。采用計算機(jī)圖像處理和人工智能的方法,可以實現(xiàn)由計算機(jī)來學(xué)習(xí)并模仿個人手寫筆跡。該方法預(yù)先對已有的個人手寫體漢字樣本進(jìn)行了筆劃分解與分類,對每個用戶寫過的每個筆劃、部首、整字以及字體內(nèi)部空間結(jié)構(gòu)都進(jìn)行了統(tǒng)一的參數(shù)化,并連同幾種常用字體,由此建立了個人手寫字體數(shù)據(jù)庫;在模仿個人手寫字跡的時候,首先將待模仿漢字分解成部首或筆劃,并逐一在個人手寫字體數(shù)據(jù)庫中找到每個部首或筆劃,并按照該個人的字體內(nèi)部空間結(jié)構(gòu)特征將各部首或筆劃重組起來,作為模仿字跡輸出。本發(fā)明直接從漢字的筆劃偏旁構(gòu)成規(guī)則上進(jìn)行分析,從而更加本質(zhì)的抓住了個人筆跡的特征,更好的模仿個人筆跡。
文檔編號G06T11/00GK101377854SQ200810121490
公開日2009年3月4日 申請日期2008年10月7日 優(yōu)先權(quán)日2008年10月7日
發(fā)明者劉智滿, 徐頌華, 浩 江, 潘云鶴, 濤 金 申請人:浙江大學(xué)