摘要:隨著移動技術與相關技術的迅速發展,手機、個人掌上電腦(PDA) 、筆記本電腦等各種電子設備變得流行,它們已成為人們工作和娛樂必不可少的隨身用品。對于各種移動電子設備在中國的推廣使用,漢字輸入是一個必須考慮的問題。傳統的輸入方式大多使用鍵盤,不論是筆記本電腦使用的標準鍵盤,還是各手機廠商設計的簡化鍵盤,都是使用鍵盤采集信息,然后通過漢語拼音或者筆畫輸入等方式完成漢字輸入。對于嵌入式小型設備來說,原有鍵盤設計引起占用空間大和輸入漢字效率低等諸多問題。如何解決這些問題,同時保證設備足夠的顯示空間,又不添加新的復雜硬件設備。一種叫做觸摸屏手寫漢字輸入的技術越來越受到人們的推崇。以Windows CE 5.0為運行平臺,Embedded Visual C++ 4.0,為開發環境,設計和實現了一套屏幕手寫識別系統,不僅能對現有漢字進行有效識別,用戶還可以根據需要自行對字庫擴展,有助于提高漢字的識別率。
關鍵詞:手寫漢字識別;觸摸屏;字庫;嵌入式系統
中圖分類號:TP391文獻標識碼:A文章編號:1009-3044(2008)28-0169-03
Design and Implementation of Handwritten Character Recognition System Based on the Embedded System
OUYANG Ming, HE Zong-jian
(School of Software Engineering,Tongji University,Shanghai 201804,China)
Abstract: With rapid development of mobile and related technology. Mobile Phone, Personal Digital Assistant (PDA), notebook PC and other embedded devices become popular, they have been necessity of life and entertainment. As different kinds of mobile electronic devices are promoted in China market, inputting Chinese character should be taken seriously. Traditional input method depends on keyboard; both standardized keyboard on notebook PC and simplified keyboard manufactured by cell factories collect information, and then finish to type Chinese character using Chinese pinyin and strokes. For small embedded device, original keyboard design will give rise to large space occupied and low efficiency of input Chinese character. How to solve these problems, while ensuring adequate equipment display space, without adding new hardware complexity of the case, a technology called touch-screen hand-written character recognition is increasingly respected by people. This paper will introduce design and implementation of hand-written character recognition system based on Windows CE 5.0 as platform and Embedded VC++ 4.0 as develop environment. It not only recognizes the existing characters efficiently, can also be expanded by custom. This design is helpful to improve the Chinese character recognition rate.
Key words: Hand-written character recognition; intelligent instrument; Embedded System
1 引言
漢字識別是模式識別的分支,也是機器學習和智能化的一個方面。就目前的發展狀況
同時根據設備的依賴關系,可大致分為兩類:聯機識別和脫機識別。聯機識別由于有強大的數據庫服務器支持,所以識別率較高,但存在的缺點是響應速度慢,靈活性差。而脫機識別恰好相反,識別率低但響應速度較快,靈活性好。所以哪種方案較好,只能根據使用場合判斷。如銀行的手寫簽名認證就適合采用聯機識別。而脫機識別主要用在如移動電話,PDA等。漢字識別的方法也主要有四種:結構模式識別,統計模式識別,統計與結構識別相結合,人工神經網絡。結構模式識別需先提取筆端或基本筆畫作為基元,由這些基元構成部件,再由部件組合及其相互關系來精確地對漢字加以描述,就像一篇文章有字,詞,短語和句子并按語法規律所組成一樣,所以這種方法也叫句法模式識別。統計模式發展教早,理論也較為成熟,其要點是提取待識別模式的一組統計特征,然后按照一定準則所確定的決策函數進行分類裁決。人工神經網絡是一種模擬人腦神經元細胞的網絡結構,它是由大量簡單的基本元件-神經元相互連接的自適應非線形動態系統,其缺點是規模大,復雜度太大。本文將采用結構識別方法作為設計原則。
2 手寫漢字識別流程
2.1 建立字庫
■
圖1 首次建立字庫
■
圖2 擴展字庫
2.2 字型匹配
■
圖3 字型匹配
3 樣本處理過程
3.1 筆畫提取
屏幕漢字輸入面板的區域為192*192,我們將用STORE[15][300] 結構體數組保存構成當前面板中手寫漢字的點集信息(橫縱坐標),15表示最多能處理一個有15個筆畫的漢字,300表明一個筆畫最多能包括300個點。實驗證明,300個點對于這片區域已經足夠。 如比較復雜的一筆畫漢字“乙”也未超出該范圍,所以這樣的規定是能滿足書寫要求的。在面板內,當觸摸筆與屏幕接觸到離開的過程,我們認為漢字的一個筆畫的書寫完成。如果用戶在輸入漢字的某個筆畫的點的數目超過300,系統則不認為用戶的輸入規范,同時提示用戶再次輸入一個較為規范的漢字,詳細原因見開頭對“乙”字的說明。
3.2 預處理
3.2.1 調整筆畫順序
漢字的書寫順序一般是自左向右,自上而下。而用戶在書寫時,也有可能不按照此順序去書寫,但漢字的呈現結果與正常書寫順序書寫出的漢字是一樣的。為了不至于因為用戶習慣性筆畫順序影響特征點的提取,所以須對漢字結構體中每個筆畫的順序做判斷,若不符合書寫規范應則進行響應的調整。
1)調整“從右到左”為“從左到右”:如“橫”筆畫,若發現一個筆畫中所有點縱坐標相同,而橫坐標遞減,則說明該筆畫為“橫”,而書寫順序為從右到左。此時應將該筆畫的所有點逆序排列,然后存回到筆畫結構體中。
2)調整“從下至上”為“從上至下”:如“豎”筆畫,若發現一個筆畫中所有點橫坐標相同,而縱坐標遞減,則說明該筆畫為“豎”,而書寫順序為從下至上。此時應將該筆畫的所有點逆序排列,然后存回到筆畫結構體中。
3)將一定傾斜度的“橫”筆畫規范為標準筆畫:一般用戶使用鼠標書寫一個“橫”筆畫,不可能達到與屏幕水平線持平,總是或多或少
的都有一定的傾斜角度(X > 2 * Y),所以上面的筆畫在以后的處理中會被歸為“橫”筆畫,如圖4所示。
圖4中Start表示筆畫的起始書寫點,End表示筆畫的末尾點,X表示起點與終點的橫坐標差,Y表示起點與終點的縱坐標差。
4)將一定傾斜度的“豎”筆畫規范為標準筆畫。
圖5中,對于“豎”筆畫,此時(Y > 2 * X),即X 5)其他情況: 對于在(Y/2<=X<=2*Y )的筆畫在此不作處理,因為如漢字“米”,我們書寫時候對于上面的“捺”,順序為從左上到右下,上面的“撇”這一個筆畫為右上到左下(注意:這里的順序為右邊到左邊,再如上海的“海”字,我們習慣把它的三點水編旁的最后一筆寫成“提”,它的書寫順序為左下到右上(注意:這里的順序為下邊到上邊),如果有人愿意把它理解成“撇”筆畫,我們也不反對。所以對于“點”,“撇”“捺”,三個筆畫在手寫時并不規定某一筆畫一定要歸為那一類,漢字的筆畫千變萬化,這一點不是該程序需要規范的問題。而且這三種筆畫如按照標準,其傾斜度為 45 度(X=Y)但由于手寫的原因,其角度可在此范圍稍微有所浮動(Y/2<=X<=2*Y)。由于不必具體規范它的順序,這里就不必處理它了。但“橫”,“豎”筆畫的順序,一定是從左到右,至上而下的,所以要用調整好它的順序。 3.2.2 提取特征點 特征點是筆畫的始末點和相對前后點橫縱坐標都有明顯差異的點,如圖6中的點②與前一點是保持橫坐標遞增趨勢,而與后一點構成橫坐標遞減的趨勢。點②縱坐標與前一點大致相同,而與后一點構成縱坐標遞增趨勢。當然由于手寫漢字筆畫的不規范性,一些點被誤選為特征點,我們將采用去除噪聲的方法將它們去掉。 3.2.1 去除噪聲 去除噪聲即消除無效的特征點。首先面對的是漢字的第一個特征點(起點),對于漢字的起點是一定要保存的,因為不針對起點漢字也就沒有什么特征之說。若該漢字筆畫只是由于手寫的抖動(即與前一特征點保持在一個很小的距離),則可以將其去掉,使原本的筆畫近于光滑。如與前一特征點的縱坐標的差值小于等于4;或差值小于7的情況下,若前一特征點,當前特征點,后一特征點,三者的橫,縱坐標是保持遞增的順序,則可以忽略這些特征點。如圖7所示。 3.3 特征分析 3.3.1 筆畫數 即筆畫總數,該系統目前支持一個漢字筆畫數在15個之內的情況,若多于15筆畫則系統提示筆畫數太多,無法識別。 3.3.2 筆畫點數及特征點數 即漢字中經過調整筆畫順序后,對于每個筆畫其筆畫的點數和經過去除噪音后的特征點的書目統計。 3.3.3 特征點分析 1)與前一特征點的位置關系 即當前特征點與前一特征點的橫坐標之差和縱坐標之差的比較分類,先將橫,縱坐標之差大于,等于,小于0分類,若兩者同號如都大于0的情況再將兩者做相除,得出倍數關系,再根據倍數關系做分類。 2)在整個筆畫中的位置關系 在筆畫樣點采集的過程中,由一對數值保存筆畫中橫坐標最大點是屬于那個特征點,即該特征點在該筆畫特征序列中的位置,同時判斷縱坐標值最大的是那個特征點,記錄下該特征點在該筆畫特征序列的位置。以便作為一個特征與字庫中的字比較。 3)與下一特征點的過渡銜接關系 GETARC(INT J)得到該特征點與下一特征點之間的關系函數,函數返回一個相對值。 圖8中(X1,Y1)代表第J-1個特征點,(X3,Y3)代表第J 個特征點,那條不規則的曲線代表書寫筆畫的軌跡。(X2,Y2)代表曲線上未被選作為特征點的一點。對于當前特征點第J-1 個特征點,及它與下一特征點,及他們之間的任意非特征點來說,他們圍成一個如圖中陰影部分的三角形。 三角型的面積的推導公式如下: S1=2[(X3-X1)*(Y1-Y2)–(X2-X1)*(Y1–Y2)–(X3– X2)*(Y3–Y2)–(X3-X1)*(Y1–Y3)] S1=X3*Y1+X1*Y2+X2*Y3–X3*Y2–X2* Y1–X1*Y3 比較陰影部分面積與以特征點(X1,Y2),(X3,Y3)的連線作為對角線的矩形的面積AREA(圖中紅色線標識)做比較。判斷S1是否大于AREA^2,也就是S1/AREA是否大于AREA。當S1<0時表示其(X2,Y2)在(X1,Y1),(X2,Y2)兩特征點的下方。若S1/AREA>AREA,則啟動一個記數器,使其數目增加。若是第一次比較,則可以知道所有點是在兩特征點所連直線的上方還是下方(上方,則符號位VCT為1,在直線上或在下方,則認為是 – 1,此時SMAX=0..在以后的過程中,SMAX始終記錄遍歷各點后得到的那塊陰影部分面積的最大值/AREA。若遍歷的過程中,若(X2,Y2)在兩特征點又一次在直線的上,說明接下來的點有可能在直線的不同側,此時保存下S1/AREA的正負號。若陰影部分在直線的下側且它比正方型面積的絕對值大,計數器增加。 說明:這里只是將點與特征點所連直線作了一個比較。若點在其下方,則計數器增加。當然如果你也想只統計上方的點也是可以的,只要有方向性就行。 3.4 漢字重構 經以上處理后,將漢字中每個筆畫中的特征點按其順序連接起來,重新構造成漢字,如上面所說的圖6,我們按數字順序,將筆畫重新連接起來,雖然重構的漢字樣子有些呆板但能夠體現漢字的特征,按這些特征點重構的漢字我們也能看的懂。 3.5 匹配結果 根據以上分析得出的信息再與字庫中對應的信息進行匹配,若匹配成功則給用戶反饋,顯示對應的印刷體和在字庫中的位置序號。若匹配不成功,則提示用戶再次輸入一個更為規范的漢字來讓系統去識別。 4 結束語 通過以上的設計和實踐,我們完成了一個基于結構模式識別的脫機漢字識別系統。當然,我們在識別的過程中發現,僅有筆畫數,筆畫特征點數,特征點與前后特征點的關聯關系還遠遠不夠,我們需要加一些修整函數以保證有效識別率。通過字庫的建立進一步提高漢字的識別率,經此系統的檢驗是可行的,相信漢字識別必將有廣闊的前景值得我們去研究。 參考文獻: [1] 何宗鍵.Windows CE 嵌入式系統[M].北京:北京航空航天大學出版社,2006. [2] (美)Boling D.Microsoft Windows CE 程序設計[M].北京博彥科技有限公司,譯.北京:北京大學出版社,1999. [3] 傅 曦,齊 宇.嵌入式系統 Windows CE開發技巧與實例[M].北京:化學工業出版社,2004. [4] 羅耀光,盛立東.模式識別[M].北京:人民郵電出版社,1989. [5] 郭連騏,李慶芬.利用拓撲關系的圖形識別方法研究[J].哈爾濱工程大學學報,1998,19(4):38-43. [6] 張世輝.漢字圖形預處理算法的研究及實現[J].微機發展,2003,13(4):54-56,59.