摘 要: 針對目前脫機手寫字符識別計算量大,對字體字形都有一定的要求,提出了主要以字符矩陣中01變換頻率為基礎,從字符的整體和局部特征出發進行分析識別的算法。此算法縮減了計算量并對所需局部信息進行放大,在一定程度上避免了傳統采用分類器方法的錯誤傳導,提高了字符的識別率,易于實現移植和擴展。
關鍵詞: 字符識別;脫機識別;手寫字符
0 引言
目前計算機對手寫字符識別主要分聯機和脫機兩種方式。聯機方式目前主要采用的是聯機筆畫順序識別[1]。脫機方式目前研究以計算機常用字體為主的識別主要采用方式模板匹配法[2]、基于結構特征算法[3]、基于神經網絡算法[4]和基于支持向量機[3]等。前兩種算法算法本身對字符比較敏感,對手寫體特征筆畫定義的差距造成識別率下降;后兩者提高識別率則需要大量計算。
1 LVc算法
字符主要由豎線、橫線、半封閉弧線、封閉線筆畫構成,筆畫簡單特征少,而手寫半封閉弧線經常和橫線豎線進行相互替換,加上封閉完整性的缺失增加了識別難度。因此本文提出LVc算法,提取文本中定義字符和數字的頻率特征和細節特征,并與已知標準字符提取的特征相比較、識別。
1.1 預處理
圖像矩陣經過降噪、二值化后得到
,并把
矩陣利用式(1)轉換成矩陣Am×n,其中m=p+2,n=q+2。
1.2 基本計算
1.2.1 頻率的相關計算
當對Am×n第x行掃描時,若ax,y≠ax,y+1,則稱存在一次變化,x行總變化次數稱為x行水平變化頻率,記做lv(x),如式(2)所示。同理可得第y列的垂直變化頻率hv(y)。
其中,x=1,2,3,…,m。
若相鄰的,則稱它們屬于同一個水平頻率組Lgt(t=1,2,…),其水平變化頻率為Lgtlv,該組所擁有行數為Lgnt,如式(4)所示。
其中,
同理可得垂直頻率組Hgt(t=1,2,…),相關數據設其所得垂直變化頻率為Hgthv,所擁有列數為Hgnt。
1.2.2 行(列)累計度
字符中各行(列)中非0像素點的多少稱為該行(列)累計值,如式(5)所示。
同理可得第y列的累計值。
為了對筆畫的長短有所區分,這里用Pilel(x)來表示:
橫向長筆畫數用Spsl表示:
同理可以得到相應區域的列累計度和縱向長筆畫數。
1.2.3 筆跡粗細
當用累計值除對應頻率時,可得字符的筆跡粗細Handw:
同理可得列筆跡的粗細Handwv。
1.2.4 頻率的修正
字符邊緣的“毛刺”現象對頻率影響非常嚴重。若在x行中存在n個符合條件的區域,其中
,則令lv′(x)=lv(x)-n。同理可以對垂直頻率進行修正。
手寫中經常出現筆畫的起筆或末端的彎鉤現象如6、C,給下一步有效頻率組判斷帶了一定的干擾。若某個水平頻率組中滿足,
1.3 英文字符的基本特征提取
1.3.1 有效變化頻率組
若某水平頻率組,則稱其為有效水平頻率組efLgt,其水平頻率
,擁有的行數設為efLgtn;一個字符所擁有的efLgt數設為numLg。
計算有效垂直頻率efLgt,首先確定其測試區域:若numLg=1,則需根據垂直有效頻率判別式求得efLgt;若numLg≥2,存在efLg1其x∈[a,b]和efLg2其x∈[c,d],則取Did=下部和Diu=
上部,如圖1所示進行垂直有效頻率判別式分析計算。
垂直有效頻率判別式為:若字符中Hgt的Hgnt≥,則認為其所在Hgt組為有效垂直頻率組;若字符中Hgnt<
,則選max(Hg1hv×Hgn1,Hg2hv×Hgn2,…)(t=1,2,…),其中Hgnt≥2Handw最大值所在組為有效垂直頻率組。
1.3.2 焦點集中區域
一個字符中往往存在某個有效區域其像素點較為集中,稱之為焦點集中區域。確定集點集中區域需先以水平有效頻率為劃分基礎再進行計算。
若numLg=1,設su為字符垂直有效頻率的上部像素點的合計數:
同理知下部非0點的合計數sd。
滿足時,則認為字符垂直方向上部區域焦點集中,反之亦然。
若numLg≥2,則需按垂直頻率的區間劃分并根據式(10)計算判斷。
計算水平方向的焦點集中區域時,選定其垂直方向的焦點集中區域,并以其區域內的有效垂直頻率組的中線為分界線依據式(10)計算。
1.4 字符的細節檢測
1.4.1 有效空頻組檢測
把字符中存在間斷情況作為其字符的細節特點加以考察。
若存在Lgt-1、Lgt、Lgt+1(1<t<m)連續3個相鄰的水平頻率組,若滿足Lgt-1lv≠0∩Lgt+1lv≠0∩Lgtlv=0,且Handw≥Lgnt≥min(Lgnt-1,Lgnt+1),則認定Lgt組為有效空頻組Lgo。
1.4.2 直線、曲線、波浪曲線檢測
字符6和b、8和B等單從頻率上無法區分,需對邊緣部分求其平均曲率加以區分,如式(11)所示。
其中,為對應切線的轉角,
為對應弧線的長度。
若字符存在垂直焦點集中區域,則只需求此區域外側平均曲率即可;否則計算兩側。上下兩側的有效水平頻率組的中線外側區域為計算區域,利用式(11)~(12)計算。
字符3和B的右側曲線稱為波浪曲線。若在計算字符時,其側面存在垂直頻率組t符合Hgnt≥2Handw∩Hgthv≥6,則認為其側存在波浪曲線。
1.4.3 封閉性檢測
如果字符numLg=1,則以字符整體為測試區域進行檢測:
,
成立,則此區間為上部封閉,否則此區間非上部封閉。同理判斷其他區間的封閉性。
如果numLg≥2,則根據求有效垂直頻率的區域劃分進行封閉性計算。
1.4.4 相交檢測
書寫往往會造成兩條線段平行和相交的近似,如A和H。因此當字符存在efLgtlv=2且兩側Sstl=straight,其待測區間的兩線段的斜率為k1、k2,設相交檢測結果為Sa:
當Sa=intersect,則認為其兩條線段相交,同時其相交方向可以認為近似封閉。
1.5 相似度比較
1.5.1 編碼
通過計算,得到了一系列數字構成測試值編碼Rand,如圖2所示。
1.5.2 相似度計算
計算采用左對齊不夠補0的策略,計算方法如式(15)所示。其中,Rand為測試值編碼,Stan為已有標準字符編碼。
1.5.3 LVc算法實現
該算法主要根據字符的頻率進行分類,在確定字符的水平有效分組的基礎上,再計算其有效垂直頻率、封閉性、視覺焦點集中區域等。根據計算得出的數值排列成一組數字代碼表示字符特征,并把此數字特征代碼與已知標準庫中代碼串相比較,求出的最大相近字符即識別輸出。算法流程圖如圖3所示。
2 實驗及其結果
由于字母o和數字0以及印刷體的字母l和數字1特征不明顯,這里不做具體討論。
實驗1 字符的頻率和累計度
對原始圖像進行濾波和二值化等預處理,如圖4所示。圖5所示為圖像的頻率特征,其中圖5(a)是原始狀態下得到的頻率,圖5(b)是經過修正后得到的頻率,可以明顯看出修正后的字符的頻率特征更加明顯。圖6是進一步對焦點集中區域進行的頻率特征檢測。
實驗2 字符的識別率
實驗以計算機黑體字庫為基礎字庫并根據實際情況對其字體庫進行了適當擴充。實驗從UCI字符庫和MNIST數字庫選取了其中7 200個字符。分別采用SUV算法[5]、非線性PCA神經網絡算法[6]與本文LVc算法對2 240個字符進行測試,結果如表1所示。
從表1可以看出,本文算法的正確率達到96.83%,在3種算法中最優。
3 結論
本文提出的算法計算方法簡單,計算速度快,易于實現。由于算法采用了比值法,避免了傳統分類結構存在的錯誤傳導缺陷,提高了識別率,避免了模板匹配中對標準字符的依賴,可用于多種計算機字體并對手寫字體傾斜度有一定的適應性,且易于移植和擴展。
參考文獻
[1] 姚正斌,丁曉青,劉長松.基于筆劃合并和動態規劃的聯機漢字切分算法[J].清華大學學報(自然科學版),2004,44(10):31-36.
[2] KHOTNAZAD A, HONG Y H. Invariant image recognition by Zernike moments[C]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 1990,12(5):489-497.
[3] SCH?魻LKOPF B, BURGES C J C, VAPNIK V. Extracting support data for a given task[C]. Proceedings of 1st International Conference on Knowledge Discovery & Data Mining, Menlo Park, CA:AAAI Press,1995:252-257.
[4] 武強,童學鋒,季雋.基于人工神經網絡的數字字符識別[J].計算機工程與應用,2003,19(14):112-114.
[5] 支持向量機入門[EB/OL].[2014-10-31].http://www.docin.com/p-46942684.html.
[6] 孫光民,張程,王鵬,等.基于非線性PCA神經網絡的手寫體字符識別[J].北京工業大學學報,2007,33(9):915-919.