非常簡單的字符識別方法,你知道嗎?

2018-09-17  來自: 重慶杰控電氣自動化有限公司 瀏覽次數:2916

  字符識別方法,你知道嗎??提到字符識別,大家最為熟悉的無疑是車牌自動識別和手寫輸入,這是字符識別的兩種典型方式。

  車牌是對攝像頭獲取的字符圖片進行識別,手寫輸入則是多了輸入回顯的功能,而且需要識別的字符也會更為不規范。

  字符識別屬于模式識別的一類,有許多不同的方法,要想做好都不容易,這里我講一種非常簡單的識別方法,供大家對字符識別技術的學習做個參考。

  該方法是以前領導告訴我的,具體來歷不明,如果涉及知識產權請所有人與我聯系。

  開始介紹方法前先要提兩個名詞:相似性和歸一化。

  兄弟兩個人的外貌,看上去比較象,就是相似性,大致一看是比較象,但細看就會發現有一些細微的不同,人對外貌進行識別也是利用相似性來進行判斷,當大腦認為現在看到的人和記憶中的模樣相似性達到一定尺度后就會認為是同一個人,這樣就在生活中容易形成認錯人的尷尬。

  歸一化是計算機利用相似性進行比較的一種預處理方法,比如現在畫了一個人的素描像,計算機得到的圖像信息就是一些線條,假如現在將素描復印兩份,一份保持原尺寸,一份放大一倍,計算機對比原尺寸復印的線條會得出完全一樣的結果,也就是相似性100%,但放大一倍的得到的結果剛好相反,相似性會非常低,如果預先作歸一化處理,就會得到完全不同的結果,將放大一倍的素描圖縮小一倍,此時計算機得到相似性100%的結果。

1.jpg

  圖一 歸一化處理示意圖

  我們來看計算機如何進行相似性比較,這里用簡單的方法,就是兩個圖片左上角第一個點對齊,然后看整個圖片有多少點一致。如果我們不考慮圖像的旋轉這些因素,顯然原始尺寸復印出的圖像和原始圖像的點完全一致,相似性100%,放大一倍復印的結果則不一樣,大部分點都不同,這種處理方法得到的相似性非常低。

  但我們人眼一看就知道后面一種情況是放大復印的結果,兩者實際上是同一幅圖,看來這樣處理有問題。

  對于放大后圖像相似性低的結果不用著急,歸一化就是應付這種情況的,現在我們再加入一個處理,除了找出圖像左上角的第一個基準點,我們還要找出圖像最左和最右的X軸坐標值,兩者相減就是圖像的寬度,我們把圖像的寬度處理成一致后看看是什么結果。

  原尺寸復印的圖像寬度自然是和原始圖像一致,不用再做處理,放大的圖像寬度為原始圖像的兩倍,需要我們做歸一化處理,其實很簡單,就是將放大后的圖像反向壓縮到與原始圖像一樣的寬度,這次相似性比較兩種復印的圖像相似性都是100%,達到我們的預期。

  實際中的相似性比較和歸一化處理遠比我說的復雜,不過一點可以確認,基本原理一致。前面我們是用圖像點是否一致來做相似性比較,這種處理方法并不適合實際應用,如果圖像復印的時候稍微有一點旋轉或變形,就可能得出截然不同的比較結果。

  實際中用得最多的是依據特征值進行比較,先統計分析需要識別的對象的各種規律,依照規律提取特征,再由特征進行判別。

2.jpg

  圖二 字符特征值提取示意圖

  這是我要推介的字符簡單特征值識別法,為進一步簡化說明以便理解,我用幾個打印的英文字母來進行示例。我們順著圖二中線來看字符,如果點為白色記為0,黑色記為1,連續相鄰的多個0和1合并為一個。對于字母A我們豎向得到0、010、01010、010、0這樣的特征值,橫向為0、010、01010、010、01010、0。

  B為0、010、01010、010、01010、010、0和0、010、0101010、010101010、01010、0。

  C為0、010、01010、010、01010、010、0和0、010、01010、0。

  D為0、010、01010、010、0和0、010、01010、010、0。

  O為0、010、01010、010、0和0、010、01010、010、0。

  我們利用這些特征值就有識別出這幾個字母的可能,只是要留意D和O的特征值相同,單純的利用特征值還不能區分這兩個字母。

  這就需要用戶自己人為選擇是D還是O,或者還需要提取一些輔助參考的特征值,接著來看D和O的不同,D的最左邊明顯是一條長豎線,從0個點位黑色一下就變為多個點為黑色,但O不同,黑色的點是逐漸增多的,利用這一點就能區分D和O。

  實際情況遠比我說的復雜,首先字符的個數要多得多,其次是鏡頭獲取的圖像不可能有圖二中字母那么理想,會有漏點、扭曲、旋轉等現象,如果是嚴格按照前面的特征值進行判斷,顯然絕大多數情況都識別不到。

  這就要求我們適度將特征值模糊,用相似性的高低作為判定依據,在相似性不是足夠高或者有多個字符相似性接近的時候引入輔助特征值。

  看一下字符有哪些輔助特征值可以用到,前面說到的點與線的區別是一種。

  我們還可以利用字符中的黑線交叉位置的夾角大小,比如A有3個銳角和2個鈍角,B有4個近似直角和1個近似銳角,D有兩個近似直角,C和O沒有夾角。

  利用夾角存在的特征值可以讓字符的識別率大為提高,尤其是對字符的旋轉有著不錯的效果。另外線的交叉關系也是不錯的特征值,比如兩線交叉、三線交叉也能有效提高識別率。

  但這只限于印刷的字符,如果是手寫的很有可能完全不適用。圖三為手寫的字母,可以看出和印刷體相比不規范的地方要多許多,再去直接套印刷體的特征值絕對不會有好的結果。這種情況需要我們對圖像做更多的預處理,圖三中所示不連續的地方需要補填上有效點,象A和O頂端的小缺口也需要過濾掉,如果是污漬等形成的小面積黑點也應過濾掉。預處理后的圖像再去套用前面印刷體的特征值,還是能得到不錯的效果。

3.jpg

  圖三 不規范手寫字符示意圖

  這里的字符識別沒有強調歸一化處理,因為特征值的提取和歸一化聯系并不緊密,但如果能在圖像預處理中引入歸一化處理,對識別率的提高還是有著積極意義。

  象圖像旋轉后得到的特征值會與標準特征值有明顯不同,以B為例,標準的是左邊豎向為一直線,但如果B傾斜,最左邊豎線就變成了點。

  如果先對圖像進行旋轉歸一化處理,還是先找到左上角的點,然后適當旋轉圖像,直到左邊的直線變回豎立狀態,注意原始圖像也要進行同樣的旋轉歸一化處理。

  識別技術常會提到學習功能,學習實際上就是先拿許多樣板進行處理,將樣板得到的特征值存為數據庫,實際識別時用被識別對象得到的特征值和數據庫中的數據進行匹配,相似性最高的樣板就是識別出的結果。

  通常需要比較多的樣板才能建立一個比較完善的數據庫,就最規范的印刷體為例,鏡頭得到的圖像有可能左傾、也有可能右傾,如果建立數據庫就考慮了這三種情況,自然就更為理想。

  這種簡單的字符識別方法就介紹到這里,我的目的只是想讓對圖像識別有興趣的朋友基本認識,通過這種簡單方法初步了解圖像識別,權當拋磚引玉。

  漢字的識別并不是我們所想的要比英文字符復雜許多,因為英文字符筆畫少,相互之間的特征值差異不大,尤其是手寫,所以不好區分,筆畫多的漢字相互之間的特征值差異會比較明顯,區分起來反而容易。

  現在漢字的手寫識別多采用筆畫匹配的方式,就是用點、橫、豎、撇、捺的組合來匹配,當然真正寫出這樣的識別程序還是有一定難度,有興趣的朋友可以在本文的基礎上自己做更深入的探索字符識別方法。

關鍵詞: 非常簡單的字符識別方法,你知道嗎           

  重慶杰控電氣自動化有限公司,專營 伺服電機 視覺產品 識別產品 等業務,有意向的客戶請咨詢我們,聯系電話:13983885787

  【網站建設優化技術支持:眾云誠科技】


CopyRight ? 版權所有: 重慶杰控電氣自動化有限公司 網站地圖 XML


掃一掃訪問移動端
时时彩双胆稳赚法