本發明涉及一種基于風格學習的漢字合成方法。更具體地說,涉及到漢字骨架提取,使用了神經網絡學習漢字風格并合成漢字骨架,再平滑、渲染。屬于人工智能、計算機圖形學領域。
背景技術:
個人手寫體漢字包含豐富的性格、背景信息,是人的一種重要特征。漢字合成旨在模仿具有特定風格的手寫體,并合成具有這種風格的手寫體漢字。漢字合成是一種人工智能、計算機圖形學領域的交叉問題。漢字合成研究對于PC個性化、漢字識別、速記加密和完全自動圖靈測試(Completely Automated Public Turing test to tell Computers and Humans Apart)具有重要意義。在互聯網上,使用個人手寫體與他人交流,相比于抽象的文字更能讓人印象深刻。
傳統上,為用戶定制一套字體需要一個字體設計團隊耗時一年左右完成。盡管這種方法能夠保證較高的質量,但是時間和資源花費巨大,普通人無法承受。由于英文、日文(平假名)、韓文的基本字數量少、結構簡單,對這些文字合成的研究較為成熟。而中文漢字數量眾多、結構復雜,目前針對中文個人手寫體漢字合成的研究較少,尚未有成型的技術。本發明提出一種基于風格學習的漢字合成方法,只需輸入少量手寫體漢字,自動化地合成具有特定風格的漢字,能夠大大降低時間和資源花費。
技術實現要素:
本發明的目的在于提出了一種基于風格學習的漢字合成方法,可以利用神經網絡,從用戶的少量手寫體漢字中學習到特定的風格,再合成具有此風格的手寫體漢字。本文提出一種方法,將漢字拆分為筆畫形狀和筆畫布局分別合成。將手寫體漢字風格拆分為筆畫形狀風格和筆畫布局風格分別學習。
為了實現上述目的,本發明采用的技術方案如下:
算法主要包括以下七個步驟:
第一步,對用戶輸入的少量手寫字(639漢字集)和相應的參考字分別提取骨架點坐標。639漢字集是從GB2312字庫中抽取出的包含全部筆畫和部件的最小漢字集。
第二步,計算手寫字和參考字的每個筆畫的筆畫形狀,即相對于筆畫重心的筆畫骨 架點位置;和筆畫布局,即相對于漢字重心的筆畫重心位置。
第三步,采用文獻(Dolinsky J,Takagi H.Analysis and modeling of naturalness in handwritten characters[J].Neural Networks,IEEE Transactions on,2009,20(10):1540-1553.)中的方法,計算參考字的筆畫慣性、筆畫重心,將參考字的筆畫慣性、筆畫重心作為神經網絡的輸入,采用本發明方法分別計算參考字與手寫字之間的筆畫形狀和筆畫布局的差值作為輸出。
第四步,使用兩個神經網絡分別訓練、學習筆畫形狀風格和筆畫布局風格,即相應的神經網絡權值。
第五步,將新的參考字的筆畫慣性、筆畫重心位置輸入到已訓練的神經網絡中,分別得到具有該用戶風格的筆畫形狀和筆畫布局。
第六步,組合得到的筆畫形狀和筆畫布局得到合成漢字的骨架。
第七步,對得到的漢字骨架進行平滑、渲染操作,以得到手寫體漢字。
進一步地,對于第一步中提取漢字骨架的具體實施步驟如下:首先對參考字和手寫字的每個筆畫等點數采樣,每個筆畫采樣20個點Pij(k)=(xij(k),yij(k)),表示第i個漢字中第j個筆畫的第k個骨架點。其中x表示點的橫坐標,y表示點的縱坐標,k取值范圍是[1,20]。筆畫表示為筆畫骨架上所有點的集合Sij=(Pij(1),Pij(2),...Pij(20))。
對于第二步,將漢字拆分成筆畫形狀和筆畫重心,如附圖3所示。將每個筆畫表示成相對于筆畫重心的點集。將每個字的筆畫布局表示成筆畫重心相對于漢字重心的點集。其中筆畫重心和漢字重心均為筆畫或漢字上所有點坐標的加權求和,即筆畫重心為漢字重心為其中NSi表示第i個漢字的筆畫數量。筆畫形狀計算公式為SSij=Sij-SCij,筆畫布局計算公式為SLij=SCij-CCi。
第三步,計算每個筆畫骨架中依次的相鄰兩個骨架點之間的差值作為筆畫慣性,即ISij=(Pij(2)-Pij(1),Pij(3)-Pij(2),...,Pij(20)-Pij(19))。計算參考字與手寫字之間的筆畫形狀和筆畫布局差值。其中筆畫形狀差值為筆畫布局差值為其中hand表示手寫字,ref表示參考字。對于筆畫形狀風格的學習,輸入慣性,輸出筆畫形狀差值。對于筆畫布局風格的學習,輸入參考字的筆畫重心,輸出筆畫布局差值。
第四步,本發明對筆畫形狀風格學習采用38*40*38的前向神經網絡(Feed-Forward Neural Network)進行學習。對于筆畫布局風格學習采用2*5*2的前向神經網絡進行學習。
第五步,將新的參考字的慣性ISij和筆畫重心位置SCij輸入第4)步訓練得到的神經網絡,即可得到估計的筆畫形狀差值DSSij和筆畫布局差值DSLij。將其加上參考字的筆畫形狀和筆畫布局得到合成的筆畫形狀和筆畫布局。
第六步,設定漢字重心位置,根據筆畫布局和筆畫形狀定位合成漢字的骨架坐標。
第七步,對合成的漢字骨架進行平滑以減少抖動,對平滑后的骨架進行渲染得到像筆寫出的手寫字。
與現有技術相比,本發明的積極效果在于:
本發明提出了一種基于風格學習的漢字合成方法。本發明將漢字拆分成筆畫形狀和筆畫布局,將漢字風格拆分成筆畫形狀風格和筆畫布局風格。本發明除了需要用戶輸入少量手寫體漢字外,完全由計算機自動合成。本發明的合成結果較為自然,視覺效果好,沒有明顯錯誤。
附圖說明
圖1是本發明所述的系統流程圖;
圖2是本發明所述的漢字風格學習和合成流程圖;
圖3是本發明所述的漢字筆畫形狀和筆畫布局拆分示意圖;
圖4是本發明所述的為不同用戶合成漢字的效果圖;
具體實施方式
下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,可以理解的是,所描述的實例僅僅是本發明的一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域技術人員在沒有做出創造性勞動的前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
系統的總流程如附圖1所示。
首先根據漢字風格學習流程圖(如附圖2所示)進行漢字風格學習:
●首先對參考字和手寫字的每個筆畫等點數采樣,每個筆畫采樣20個點。
●將漢字拆分成筆畫形狀和筆畫重心,如附圖3所示。將每個筆畫表示成相對于筆畫重心的點集。將每個字的筆畫布局表示成筆畫重心相對于漢字重心的點集。
●計算筆畫骨架中相鄰兩個點之間的差值作為慣性。計算參考字與手寫字之間的筆 畫形狀和筆畫布局差值。對于筆畫形狀風格的學習,輸入慣性,輸出筆畫形狀差值。對于筆畫布局風格的學習,輸入參考字的筆畫重心,輸出筆畫布局差值。
●對筆畫形狀風格學習采用38*40*38前向神經網絡進行學習。對于筆畫布局風格學采用2*5*2的前向神經網絡進行學習。
再根據漢字合成流程圖(如附圖2所示)合成漢字:
●將新的參考字的慣性和筆畫重心位置輸入第4)步訓練得到的神經網絡,得到估計的筆畫形狀差值和筆畫布局差值。將其加上參考字的筆畫形狀和筆畫布局得到合成的筆畫形狀和筆畫布局。
●設定漢字重心位置,根據筆畫布局和筆畫形狀定位合成漢字的骨架坐標。
●對合成的漢字骨架進行平滑以減少抖動,對平滑后的骨架進行渲染得到像筆寫出的手寫字。
圖4是本發明為3個不同用戶合成具有特定風格的手寫字的效果圖。可以看到本發明基本學習到了每個人的手寫體風格,并合成了質量較高的漢字。