雷鑫 李俊陽 宋宇 賽琳偉
摘 要: 本文提出了一種手寫漢字文本的分割方法,填補了漢字識別領域在文本行分割方面的空白。本方法首先對預處理后的文本圖片進行池化處理,然后運用并查集算法得到每行為一個連通區域,最后調整每行上下的孤立區域的歸屬,最終把多行文本圖片分割為單行,為后期的漢字列分割做準備。此方法雖然用行分割,但也為漢字的列分割提供了新的思路。
關鍵詞: 手寫漢字識別;池化;文本分割;并查集
Abstract:In this paper a text segmentation method for handwritten Chinese characters is developed which fills in the blank of text line segmentation in the field of Chinese character recognition. In this method the pretreatment of the text image is pooled. Then using the method of searching and collecting coarse segmentation of the pictures after the pooling step is processed and the result of the coarse segmentation is segmented by the calculation of the connected set. Finally the multi-line text picture is segmented into a single line to prepare for the later Chinese character segmentation. Although this method is used for row segmentation it also provides a new way for column segmentation of Chinese character text.
Key words: handwritten Chinese character recognition;pool;text segmentation;the method of searching and collecting
引言
漢字識別技術經過長期的發展已經日趨成熟,無論是聯機漢字識別還是難度更高的脫機手寫漢字識別[1],其識別成功率均有較大的提升,并在相關的領域得到了一定的推廣應用。作為漢字識別中的關鍵組成部分,漢字分割技術的進展也將制約著漢字識別率的研究提升。能夠完整無誤地分割出整個漢字對漢字識別來說尤為重要,這也是目前漢字識別技術攻關中的研究處理重點。
區別于字母、數字,漢字的結構復雜,形式多樣,不同人的書寫習慣和選用字體也形色多樣,書寫起來多具有很大的隨意性,因此漢字分割較其它字符的分割也更顯難度。近年來,學界已基于漢字識別技術研發提出了一系列的漢字分割方法。這些方法主要包括:基于漢字結構的切分方法[2]、基于識別的切分方法[3]、基于詞的整體切分方法以及基于統計的切分方法[4]等。如上的漢字分割方法雖然對特定的漢字圖片獲得了可觀的成功率[5],但卻都各自存在著一定缺陷。例如基于結構的切分方法中漢字筆畫的提取十分復雜,基于識別和詞整體切分方法又會產生效率與識別率雙重走低的問題,而基于統計的切分方法則只適用于非黏連的漢字。綜上論述可見,漢字分割依然是漢字識別技術中亟待解決的研究難題。
通常的漢字分割方法只是圍繞少量漢字或者單行漢字而展開研究,對漢字文本分割的研究迄今為止仍屬罕見。眾所皆知,應用到漢字識別的地方多數為大篇幅的文章和段落,因此只有先對文本實現行分割后才能再次轉入漢字分割,行分割是漢字分割的基礎。不同于印刷體干凈整齊的排布,手寫漢字往往由于人為原因而扭曲變形,每一行漢字并不能做到嚴格水平布置,從而產生傾斜和扭曲,甚至出現相鄰行的黏連現象,這都是不可避免的。如果用投影法或者連通域法[6]對文本進行分割則無法處理相隔較近的行,對嚴重扭曲和黏連的文本也難以達到滿意的效果。
因此本文綜合了多種算法后,設計提出了一種新的分割方法。不同于以往傳統的漢字分割方法,該方法先用池化操作將漢字文本變換為大片的連通區域;再用并查集算法找出每個連通分支(往往是一行),這樣就初步分離出每一行;而后確定相鄰兩行之間的小塊連通區域的歸屬,對行引入微調處理,最終實現了文本的行分割。
1 預處理
為了方便后期的文本分割和識別研究過程,即要對漢字圖像進行必要的預處理。本研究中對初期錄入的文本圖片,如圖1(a)所示,進行了去噪聲、二值化等操作,得到了圖1(b)。經過處理后發現,圖片質量得到了明顯的提升。
2 池化處理
如果對圖1(b)直接進行分割顯然難度較大,文本中每行漢字并不是嚴格的水平排列,且相鄰兩行的漢字存在黏連的情況。因此研究采取了池化的方法對預處理后的文本圖片做更深層次的調整與加工。雖然一行可能有嚴重的傾斜,但一個小片段傾斜度往往很小,可以近似為水平。假設一個漢字的平均寬度是64,就可選取257*3大小的長條形卷積核對整個圖片進行掃描,得出的結果如圖2所示。從圖2中可以清楚地看到,一行漢字經過池化后形成了一個連通的黑色區域,而相鄰兩行的黏連情況也被消除了,這樣就可以根據這個結果對每一行進行提取,從而實現行分割的目的。
3 粗分割
3.1 并查集算法
并查集算法[7]可以高效地計算一個集合的連通分支。利用并查集中的合并算法,將圖2中處于一個連通域的黑色像素點并為一個集合,這樣就可以把不同的行區分出來。其中,每一個合并的集合就是一個列表,這個列表里包含了整個連通域的所有像素,而背景(本示例圖片為白色)也合并為一個集合。這樣就得到了許多不同的集合,這些集合包括每一行漢字、背景以及池化產生的噪點。這些噪點是由于漢字的某一部分在池化后脫離了本行而形成了一個單獨的連通域,如果簡單地刪除會影響漢字的識別過程,因此在后續的操作中則需要將這部分噪點合并到其所在的行,從而將一行漢字完整地分割出來。
3.2 初步分割出行
并查集中的搜索算法可以查找某一個像素點所在的集合,根據這個特性可以從上向下對圖2中的像素點進行掃描,從而找出圖中所有的集合(除了背景集合),再將這些集合整理并從上到下順次排序(包括噪點)。通過觀察圖2可以發現那些噪點無論是長度、還是寬度都遠小于每一行,經過一定條件的篩選就可以暫時剔除這些噪點,這樣研究就初步分割出了每一行(不包括噪點),并按照原有位置從上到下得到了有序排列,具體如圖3所示,分割邊界用線條顯示。
4 細分割
如圖3所示,初步分割并不能將一行完整地分離出來,有些漢字上部或者下部被截斷,而這些截斷的漢字部分在池化時被抹去或者形成了單獨的噪點,在細分割的時候需要將這些部分還原到其所在的行中。在圖3的基礎上對每一行邊界向外(上邊界向上,下邊界向下)計算連通集,如果存在連通的部分則相應地調整分割邊界,從而將截斷的部分包含于該行內。第一行的上邊界和最后一行的下邊界易于調整,其余的情況將大致分為3類,每一類的功能闡釋可見如下。
(1)修改上一行的下邊界。從每一行(除去最后一行)的下邊界處向下進行連通集查找,直至下一行的上邊界處結束,如果存在連通的部分則修改本行的下邊界。若上下兩行有黏連情況,即上下兩行某部分連通在一起,則根據日常人們的書寫習慣將這部分歸于上一行。
(2)修改下一行的上邊界。從每一行(除去第一行)的上邊界向上進行連通集查找,直至上一行的下邊界處結束,如果存在連通部分則修改本行的上邊界。
(3)確定兩行中間區域的歸屬。當兩行中間的噪點既不與上一行連接、也不與下一行連接時,通過確定閾值來判斷這些噪點與上、下兩行的位置關系,從而找出離噪點更近的行來設置合并。經過修改后的分割邊界將每一行的漢字都完整地包含進去,得到的行分割結果如圖4所示。例如第一個字“客”,該字下面的“口”在之前分割中被斷開,經過這一步后,調整了下邊界為口的下方。類似地,“客”字上面的一點之前也在上邊界之外,現在重新修改了上邊界為點的上邊。這樣,“客”字完全落在第一行的紅色區域之內。
5 結束語
手寫漢字文本相對于印刷體存在著扭曲、變形、黏連等現象。針對于這一狀況,本文提出了一種文本分割的方法,采用并查集算法和計算連通集的方法對池化后的文本圖片進行處理,從而實現行分割的目的,有效應對了文本扭曲和黏連的情況,對大量手寫漢字樣本進行實驗均達到了理想的分割效果。該方法也可用于一行漢字的列分割。
參考文獻
[1] 金連文. 手寫體漢字識別的研究[D]. 廣州:華南理工大學,1996.
[2] 熊鵬. 漢字筆跡的筆劃提取[D]. 武漢:華中科技大學,2008.
[3] 邵潔,成瑜. 關于手寫漢字切分方法的思考[J]. 計算機技術與發展 2006,16(6):184-186,190.
[4] 趙繼印,鄭蕊蕊,吳寶春,等. 脫機手寫體漢字識別綜述[J]. 電子學報 2010,38(2):405-415.
[5] 馬瑞,楊靜寧. 一種有效的手寫漢字多步分割方法[J]. 中國圖象圖形學報,2007,12(11):2062-2067.
[6] 陳艷,孫羽菲,張玉志. 基于連通域的漢字切分技術研究[J]. 計算機應用研究 2005(6):246-248.
[7] 曾志雄. 并查集的樹型存儲表示及優化實現[J]. 現代計算機 2001(7):61-63.
[8] 楊峰,張黎,王立克,等. 二值圖像中基于連通集的濾波算法[J]. 山東師范大學學報(自然科學版),2006,21(2):27-29.