韓抒真 程杰 柳青
摘要:字符細化是手寫體識別預處理中的關鍵技術,細化結果的好壞直接關系到識別率的高低。由于手寫字符的多樣性和隨意性,目前沒有統(tǒng)一的細化算法,因此細化算法的研究受到越來越多學者的關注。該文以非粘連字符作為研究對象,對基于模板的細化算法進行研究。采用FPA細化算法、SPTA細化算法、改進的Hilditch細化算法進行理論分析和編程實現(xiàn),通過對比細化效果,分析了幾種細化算法的優(yōu)缺點。
關鍵詞:手寫體字符;細化;FPA算法;SPTA算法;Hilditch算法
中圖分類號:TP18 文獻標識碼:A 文章編號:1009-3044(2015)09-0226-02
字符細化,即提取字符僅有一個像素寬度的字符骨架,因此也稱為字符骨架化[1]。字符骨架化的過程是在保障像素間能夠拓撲連接的前提下,對整幅圖像的邊緣像素進行連續(xù)擦除的處理,最終保留僅一個像素寬度組成的字符。
字符進行細化處理后能夠消除字符圖像中包含的冗余信息,避免不相關因素(如,手寫字符的粗細)的干擾,減少計算機的運算量,進而使識別時間縮短。采用不同的字符細化算法提取到的字符骨架不同,會直接影響到在字符骨架的基礎上提取的字符特征的好壞,最終對字符識別的正確率產生影響。因此,字符細化算法的研究顯得尤為重要。
1 字符細化算法研究
1.1 FPA細化算法
針對經(jīng)過二值化處理的手寫字符圖像中的任意一像素,選取周圍的窗口做判斷處理,如圖1所示。FPA方法[2]的原理,將筆劃的外圍黑像素進行逐層的剝除,最終保留屬于字符骨架的像素點。為了確保骨架提取的連續(xù)性,將每次處理又分解成兩次子處理。
第一次子處理:從所選窗口區(qū)域的東南邊界和西北角對滿足式a)、b)、c)、d)的黑像素點進行剝除處理;
第二次子處理:從所選窗口區(qū)域的西北邊界和東南角對滿足式a)、b)、c')、d')的黑像素點進行剝除處理;
反復執(zhí)行以上兩次子處理,直到得到字符骨架為止。
a) 2≤B(P1)≤6;
b) A(P1)=1;
c) P2×P4×P6=0; c') P2×P4×P8=0;
d) P4×P6×P8=0; d') P2×P6×P8=0;
其中,A(P1)表示P2,P3,P4,P5,P6,P7,P8,P9,P2序列中出現(xiàn)01對的個數(shù),B(P1)表示1在P1的周圍八鄰域窗口內出現(xiàn)的個數(shù)。公式a)用來限制字符骨架的端點不被剝離,公式b)保障字符骨架中間點的存留,如圖2所示。公式c)、d)和公式c')、d')分別用來確保細化過程中只剝離東南邊和西北角、西北邊和東南角中不屬于字符骨架的冗余點。
運用此算法對實驗分割后的單個漢字進行細化,部分實驗結果如下:圖3為原圖,圖4為原圖取反后的圖,圖5為實驗得到的細化圖。
1.2 SPTA細化算法
SPTA算法[3]同樣選取
3)從P1開始,對像素點進行逐對判斷,若前一點和后一點的值分別為0和1,則將Ti的值置為1,否則置為0,i的范圍為1,2,…,8。若[i=18Ti=1],則表示滿足該條件,記為Z0(P0)=1。
4)P1×P3×P7=0即點P1,P3,P7中任意一個或者多個點的值為0,或者Z0(P1)≠1即以P1為基準點的8—鄰域點的Z0計算結果值不等于1。
5)P1×P3×P5=0即P1,P3,P5中任意一個或者多個點的值為0,或者Z0(P3)≠1即以P3為基準點的8—鄰域點的Z0計算結果值不等于1。
當關注P1和P3的Z0運算時,P1和P3的8—鄰域像素點情況示意圖分別如圖11和圖12所示。
明顯得知,計算Z0時,需要計算Ti在上述條件c)中,其i的取值范圍為[1,8],但是,點P1、P3鄰域點的下標與i的取值范圍保持不同。
運用此算法對實驗分割后的單個漢字進行細化,部分實驗結果如下:圖13為原圖,圖14為原圖取反后的圖,圖15為細化后的結果。
2 算法結果分析
本文通過對60個樣本的實驗分析,從連續(xù)性、速度、骨架的保持、細化結果、像素特性、算法實現(xiàn)的難易度、以及細化效果方面對三個算法進行了比較分析,分析結果如表1所示。
3 結論
通過理論研究和實驗分析,對三種算法提出了對比論證,F(xiàn)PA算法兼顧了連續(xù)性和四周噪聲免疫,處理效果較好,容易實現(xiàn)。SPTA算法處理的結果是嚴格的單像素筆畫,便于筆畫跟蹤提取,并且比較好地代表了筆畫的中軸和保持了筆畫的連續(xù)性,達到了細化的基本要求。對于Hilditch算法的改進,也是一種較好的模板法,細化后的圖像沒有改變原圖像的主要特征,而且很好的排除了大量冗余信息的干擾。
雖然三個算法相對細化效果較好,但都存在一定問題,F(xiàn)PA算法難于排除撇、捺方向交叉筆畫的畸變,且不是嚴格的單一像素。SPTA算法結果雖然是單一像素,但是速度比FPA稍慢,而且SPTA也難于克服45°交叉點畸變的問題。Hilditch算法雖然將轉折位置的結構特征保留了下來,但個別多余信息冗余仍然存在,需對細節(jié)做進一步處理。
參考文獻:
[1] 魏煒, 劉亞寧. 改進的脫機手寫漢字細化算法[J]. 計算機系統(tǒng)及應用, 2011, 20(6): 184-187.
[2] 張學東, 張仁秋, 關云虎, 等. 一種快速的手寫體漢字細化算法[J]. 計算機應用與軟件, 2009,26(11): 17-19.
[3] 黃鐵英, 姜昱明. 一種快速手寫漢字細化算法[J]. 計算機工程, 2004, 30(19): 121-128.
[4] 白瑩. 手寫漢字的細化算法研究[D]. 西安電子科技大學, 2014.
[5] 賈瑜, 饒建輝. 一種對文字圖像細化的改進Hilditch算法研究[J]. 武漢工業(yè)學院學報, 2006(3).