摘要:隨著移動技術(shù)與相關(guān)技術(shù)的迅速發(fā)展,手機、個人掌上電腦(PDA) 、筆記本電腦等各種電子設(shè)備變得流行,它們已成為人們工作和娛樂必不可少的隨身用品。對于各種移動電子設(shè)備在中國的推廣使用,漢字輸入是一個必須考慮的問題。傳統(tǒng)的輸入方式大多使用鍵盤,不論是筆記本電腦使用的標準鍵盤,還是各手機廠商設(shè)計的簡化鍵盤,都是使用鍵盤采集信息,然后通過漢語拼音或者筆畫輸入等方式完成漢字輸入。對于嵌入式小型設(shè)備來說,原有鍵盤設(shè)計引起占用空間大和輸入漢字效率低等諸多問題。如何解決這些問題,同時保證設(shè)備足夠的顯示空間,又不添加新的復(fù)雜硬件設(shè)備。一種叫做觸摸屏手寫漢字輸入的技術(shù)越來越受到人們的推崇。以Windows CE 5.0為運行平臺,Embedded Visual C++ 4.0,為開發(fā)環(huán)境,設(shè)計和實現(xiàn)了一套屏幕手寫識別系統(tǒng),不僅能對現(xiàn)有漢字進行有效識別,用戶還可以根據(jù)需要自行對字庫擴展,有助于提高漢字的識別率。
關(guān)鍵詞:手寫漢字識別;觸摸屏;字庫;嵌入式系統(tǒng)
中圖分類號: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 引言
漢字識別是模式識別的分支,也是機器學習和智能化的一個方面。就目前的發(fā)展狀況
同時根據(jù)設(shè)備的依賴關(guān)系,可大致分為兩類:聯(lián)機識別和脫機識別。聯(lián)機識別由于有強大的數(shù)據(jù)庫服務(wù)器支持,所以識別率較高,但存在的缺點是響應(yīng)速度慢,靈活性差。而脫機識別恰好相反,識別率低但響應(yīng)速度較快,靈活性好。所以哪種方案較好,只能根據(jù)使用場合判斷。如銀行的手寫簽名認證就適合采用聯(lián)機識別。而脫機識別主要用在如移動電話,PDA等。漢字識別的方法也主要有四種:結(jié)構(gòu)模式識別,統(tǒng)計模式識別,統(tǒng)計與結(jié)構(gòu)識別相結(jié)合,人工神經(jīng)網(wǎng)絡(luò)。結(jié)構(gòu)模式識別需先提取筆端或基本筆畫作為基元,由這些基元構(gòu)成部件,再由部件組合及其相互關(guān)系來精確地對漢字加以描述,就像一篇文章有字,詞,短語和句子并按語法規(guī)律所組成一樣,所以這種方法也叫句法模式識別。統(tǒng)計模式發(fā)展教早,理論也較為成熟,其要點是提取待識別模式的一組統(tǒng)計特征,然后按照一定準則所確定的決策函數(shù)進行分類裁決。人工神經(jīng)網(wǎng)絡(luò)是一種模擬人腦神經(jīng)元細胞的網(wǎng)絡(luò)結(jié)構(gòu),它是由大量簡單的基本元件-神經(jīng)元相互連接的自適應(yīng)非線形動態(tài)系統(tǒng),其缺點是規(guī)模大,復(fù)雜度太大。本文將采用結(jié)構(gòu)識別方法作為設(shè)計原則。
2 手寫漢字識別流程
2.1 建立字庫
■
圖1 首次建立字庫
■
圖2 擴展字庫
2.2 字型匹配
■
圖3 字型匹配
3 樣本處理過程
3.1 筆畫提取
屏幕漢字輸入面板的區(qū)域為192*192,我們將用STORE[15][300] 結(jié)構(gòu)體數(shù)組保存構(gòu)成當前面板中手寫漢字的點集信息(橫縱坐標),15表示最多能處理一個有15個筆畫的漢字,300表明一個筆畫最多能包括300個點。實驗證明,300個點對于這片區(qū)域已經(jīng)足夠。 如比較復(fù)雜的一筆畫漢字“乙”也未超出該范圍,所以這樣的規(guī)定是能滿足書寫要求的。在面板內(nèi),當觸摸筆與屏幕接觸到離開的過程,我們認為漢字的一個筆畫的書寫完成。如果用戶在輸入漢字的某個筆畫的點的數(shù)目超過300,系統(tǒng)則不認為用戶的輸入規(guī)范,同時提示用戶再次輸入一個較為規(guī)范的漢字,詳細原因見開頭對“乙”字的說明。
3.2 預(yù)處理
3.2.1 調(diào)整筆畫順序
漢字的書寫順序一般是自左向右,自上而下。而用戶在書寫時,也有可能不按照此順序去書寫,但漢字的呈現(xiàn)結(jié)果與正常書寫順序書寫出的漢字是一樣的。為了不至于因為用戶習慣性筆畫順序影響特征點的提取,所以須對漢字結(jié)構(gòu)體中每個筆畫的順序做判斷,若不符合書寫規(guī)范應(yīng)則進行響應(yīng)的調(diào)整。
1)調(diào)整“從右到左”為“從左到右”:如“橫”筆畫,若發(fā)現(xiàn)一個筆畫中所有點縱坐標相同,而橫坐標遞減,則說明該筆畫為“橫”,而書寫順序為從右到左。此時應(yīng)將該筆畫的所有點逆序排列,然后存回到筆畫結(jié)構(gòu)體中。
2)調(diào)整“從下至上”為“從上至下”:如“豎”筆畫,若發(fā)現(xiàn)一個筆畫中所有點橫坐標相同,而縱坐標遞減,則說明該筆畫為“豎”,而書寫順序為從下至上。此時應(yīng)將該筆畫的所有點逆序排列,然后存回到筆畫結(jié)構(gòu)體中。
3)將一定傾斜度的“橫”筆畫規(guī)范為標準筆畫:一般用戶使用鼠標書寫一個“橫”筆畫,不可能達到與屏幕水平線持平,總是或多或少
的都有一定的傾斜角度(X > 2 * Y),所以上面的筆畫在以后的處理中會被歸為“橫”筆畫,如圖4所示。
圖4中Start表示筆畫的起始書寫點,End表示筆畫的末尾點,X表示起點與終點的橫坐標差,Y表示起點與終點的縱坐標差。
4)將一定傾斜度的“豎”筆畫規(guī)范為標準筆畫。
圖5中,對于“豎”筆畫,此時(Y > 2 * X),即X 5)其他情況: 對于在(Y/2<=X<=2*Y )的筆畫在此不作處理,因為如漢字“米”,我們書寫時候?qū)τ谏厦娴摹稗唷保樞驗閺淖笊系接蚁?,上面的“撇”這一個筆畫為右上到左下(注意:這里的順序為右邊到左邊,再如上海的“?!弊郑覀兞晳T把它的三點水編旁的最后一筆寫成“提”,它的書寫順序為左下到右上(注意:這里的順序為下邊到上邊),如果有人愿意把它理解成“撇”筆畫,我們也不反對。所以對于“點”,“撇”“捺”,三個筆畫在手寫時并不規(guī)定某一筆畫一定要歸為那一類,漢字的筆畫千變?nèi)f化,這一點不是該程序需要規(guī)范的問題。而且這三種筆畫如按照標準,其傾斜度為 45 度(X=Y)但由于手寫的原因,其角度可在此范圍稍微有所浮動(Y/2<=X<=2*Y)。由于不必具體規(guī)范它的順序,這里就不必處理它了。但“橫”,“豎”筆畫的順序,一定是從左到右,至上而下的,所以要用調(diào)整好它的順序。 3.2.2 提取特征點 特征點是筆畫的始末點和相對前后點橫縱坐標都有明顯差異的點,如圖6中的點②與前一點是保持橫坐標遞增趨勢,而與后一點構(gòu)成橫坐標遞減的趨勢。點②縱坐標與前一點大致相同,而與后一點構(gòu)成縱坐標遞增趨勢。當然由于手寫漢字筆畫的不規(guī)范性,一些點被誤選為特征點,我們將采用去除噪聲的方法將它們?nèi)サ簟?/p> 3.2.1 去除噪聲 去除噪聲即消除無效的特征點。首先面對的是漢字的第一個特征點(起點),對于漢字的起點是一定要保存的,因為不針對起點漢字也就沒有什么特征之說。若該漢字筆畫只是由于手寫的抖動(即與前一特征點保持在一個很小的距離),則可以將其去掉,使原本的筆畫近于光滑。如與前一特征點的縱坐標的差值小于等于4;或差值小于7的情況下,若前一特征點,當前特征點,后一特征點,三者的橫,縱坐標是保持遞增的順序,則可以忽略這些特征點。如圖7所示。 3.3 特征分析 3.3.1 筆畫數(shù) 即筆畫總數(shù),該系統(tǒng)目前支持一個漢字筆畫數(shù)在15個之內(nèi)的情況,若多于15筆畫則系統(tǒng)提示筆畫數(shù)太多,無法識別。 3.3.2 筆畫點數(shù)及特征點數(shù) 即漢字中經(jīng)過調(diào)整筆畫順序后,對于每個筆畫其筆畫的點數(shù)和經(jīng)過去除噪音后的特征點的書目統(tǒng)計。 3.3.3 特征點分析 1)與前一特征點的位置關(guān)系 即當前特征點與前一特征點的橫坐標之差和縱坐標之差的比較分類,先將橫,縱坐標之差大于,等于,小于0分類,若兩者同號如都大于0的情況再將兩者做相除,得出倍數(shù)關(guān)系,再根據(jù)倍數(shù)關(guān)系做分類。 2)在整個筆畫中的位置關(guān)系 在筆畫樣點采集的過程中,由一對數(shù)值保存筆畫中橫坐標最大點是屬于那個特征點,即該特征點在該筆畫特征序列中的位置,同時判斷縱坐標值最大的是那個特征點,記錄下該特征點在該筆畫特征序列的位置。以便作為一個特征與字庫中的字比較。 3)與下一特征點的過渡銜接關(guān)系 GETARC(INT J)得到該特征點與下一特征點之間的關(guān)系函數(shù),函數(shù)返回一個相對值。 圖8中(X1,Y1)代表第J-1個特征點,(X3,Y3)代表第J 個特征點,那條不規(guī)則的曲線代表書寫筆畫的軌跡。(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,則啟動一個記數(shù)器,使其數(shù)目增加。若是第一次比較,則可以知道所有點是在兩特征點所連直線的上方還是下方(上方,則符號位VCT為1,在直線上或在下方,則認為是 – 1,此時SMAX=0..在以后的過程中,SMAX始終記錄遍歷各點后得到的那塊陰影部分面積的最大值/AREA。若遍歷的過程中,若(X2,Y2)在兩特征點又一次在直線的上,說明接下來的點有可能在直線的不同側(cè),此時保存下S1/AREA的正負號。若陰影部分在直線的下側(cè)且它比正方型面積的絕對值大,計數(shù)器增加。 說明:這里只是將點與特征點所連直線作了一個比較。若點在其下方,則計數(shù)器增加。當然如果你也想只統(tǒng)計上方的點也是可以的,只要有方向性就行。 3.4 漢字重構(gòu) 經(jīng)以上處理后,將漢字中每個筆畫中的特征點按其順序連接起來,重新構(gòu)造成漢字,如上面所說的圖6,我們按數(shù)字順序,將筆畫重新連接起來,雖然重構(gòu)的漢字樣子有些呆板但能夠體現(xiàn)漢字的特征,按這些特征點重構(gòu)的漢字我們也能看的懂。 3.5 匹配結(jié)果 根據(jù)以上分析得出的信息再與字庫中對應(yīng)的信息進行匹配,若匹配成功則給用戶反饋,顯示對應(yīng)的印刷體和在字庫中的位置序號。若匹配不成功,則提示用戶再次輸入一個更為規(guī)范的漢字來讓系統(tǒng)去識別。 4 結(jié)束語 通過以上的設(shè)計和實踐,我們完成了一個基于結(jié)構(gòu)模式識別的脫機漢字識別系統(tǒng)。當然,我們在識別的過程中發(fā)現(xiàn),僅有筆畫數(shù),筆畫特征點數(shù),特征點與前后特征點的關(guān)聯(lián)關(guān)系還遠遠不夠,我們需要加一些修整函數(shù)以保證有效識別率。通過字庫的建立進一步提高漢字的識別率,經(jīng)此系統(tǒng)的檢驗是可行的,相信漢字識別必將有廣闊的前景值得我們?nèi)パ芯俊?/p> 參考文獻: [1] 何宗鍵.Windows CE 嵌入式系統(tǒng)[M].北京:北京航空航天大學出版社,2006. [2] (美)Boling D.Microsoft Windows CE 程序設(shè)計[M].北京博彥科技有限公司,譯.北京:北京大學出版社,1999. [3] 傅 曦,齊 宇.嵌入式系統(tǒng) Windows CE開發(fā)技巧與實例[M].北京:化學工業(yè)出版社,2004. [4] 羅耀光,盛立東.模式識別[M].北京:人民郵電出版社,1989. [5] 郭連騏,李慶芬.利用拓撲關(guān)系的圖形識別方法研究[J].哈爾濱工程大學學報,1998,19(4):38-43. [6] 張世輝.漢字圖形預(yù)處理算法的研究及實現(xiàn)[J].微機發(fā)展,2003,13(4):54-56,59.