文/蔡玉婷 王外忠 杜孟杰 楊鑫 周鐵軍
數字字符因為其應用十分普遍,比如郵政編碼、車牌號碼、電表、水表、電話號碼等幾乎處處都與數字字符有關,因而通過計算機識別這些數字就是一件相當重要的工作。如何準確識別數學字符吸引了大量研究人員的注意,相關研究成果也有了大量的報道。
數字字符可以分為兩大類,一是打印體數字,二是手寫體數字。兩者的處理方法是有本質的區別的。本文將近年來在這兩類數字字符識別研究中提出的方法及應用做一個總結和分析。
圖像處理一般都要先進行預處理,然后才能開展圖像分析。預處理的好壞直接影響圖像分析的效果。預處理一般包括對圖像進行平滑、分割、規范化等過程。其中圖像分割是一個關鍵步驟,其目的在于將圖像分割成幾干個獨立的、具有特定屬性的區域并從中分離出需要的目標圖形。從原理上分類,可以將圖像分割大約分為結構分割法、統計分割法和面向模式分割法。常用的圖像分割方法中基于區域的分割方法及基于邊緣的分割方法都屬于結構分割法,結構分割法依賴于對圖像結構的分析及獲取的結構特征。而常見的基于閾值的分割方法則是屬于統計分割法。字符分割中滴水算法可以歸納為結構分割法
閾值分割方法計算簡單、效率高,常見的閾值分割法主要有最大類間方差法(即OTSU算法),最大熵的閾值分割法、 最小誤差法、共生矩陣法、矩量保持法、概率松弛法等,其中單閾值OTSU算法主要思想是利用給定的一個閾值將圖像分成前景與背景兩部分,能夠使得兩部分類間方差最大的閾值就是最優分割閾值。類間方差最大能夠保證分割錯誤概率最小。對于多閾值圖像分割,則是利用K-1個閾值將圖像分成K個部分,目的就是要求使K個類間方差最大的最佳閾值組合。多閾值OTSU算法是通過多次使用單閾值OTSU方法來進行圖像分割,每次分割后計算各部分類內方差,再對類內方差最大的類進行單閾值OTSU分割,直到分割滿足結束條件為止[1]。
由于傳統的多閾值OTSU分割算法實際上是通過窮舉搜素實現的,為了解決計算量大的問題,大量研究聚焦于該算法的優化研究??s小閾值搜素范圍是優化方法之一,殷蔚明等人提出利用雙峰法粗步得到的各分割閾值在其周圍確定一個較小的灰度級范圍,這樣可以縮小局部Otsu 閾值的搜索范圍[1,2]。
近年來一些新的優化算法不斷被引進,比如遺傳算法[3]、免疫算法[4]、粒子群算法[5]等。與遺傳算法相比,粒子群算法需要的參數少, 可靠性好、不易陷入局部極值[5]。Mirjalili 提出了一種新的隨機群優化算法,即正余弦算法(SCA)[6],該算法利用了正余弦函數的震蕩特性,通過波動進行全局探索。SCA 收斂速度快,求解精度高,但其局部搜索能力較弱。為了提高局部搜索能力,可以對種群進行混沌初始化來提高初始種群質量;也可以根據粒子適應度值的大小自適應地調整參數;還可以引入反向學習策略并擇優選取粒子等措施基于改進正余弦算法,以用于多閾值圖像的分割問題[7]。
另外一些仿生算法也被使用來尋找最佳閾值組合,常用的有細菌覓食算法、人工蜂群算法、布谷鳥搜索算法[8],實驗結果顯示,布谷鳥搜索算法比細菌覓食、人工蜂群兩種算法的尋優速度快、尋優質量高。蜂群算法存在的主要問題是算法的收斂速度及容易陷入局部最優解,通過采取最優解引導、局部搜索邊界遞減和限定食物生成范圍等策略可以加快算法的收斂速度,避免蜂群算法的不足[9]。
模糊集理論也被用來尋找最優閾值。模糊C均值聚類算法(FCM)建立一個反映圖像像索點與C個類中心之間的相似性的目標函數,通過優化該目標函數獲得局部極大從而得到最優分割,FCM的聚類要首先給定聚類的類別數C,聚類結果受初始聚類中心的影響,也受相似性度量方法的影響,目前還沒有一種通用的相似性度量準則,也沒有一種普遍適用的初始聚類中心確定方法,類別數C的確定也是主觀的,帶有一定的盲目性。王璐等人提出一種基于Voronoi 距離設計隸屬函數以及縮減數據集的FCM 算法[10], 王昭等人文提出直覺FCM算法,該算法的主要改進是引入猶豫度和非隸屬度改進隸屬度的計算,同時將鄰域像素信息包含在目標函數中,使其對圖像噪聲更為魯棒[11]。賈娟娟等人利用爬山法獲取彩色圖像三維顏色直方圖的多個峰值,并將峰值個數及各個峰值處的像素點作為FCM聚類類別數C和初始聚類中心[12]。
手寫數字分割時較打印體數字分割困難的地方主要是多個手寫數字在書寫時可能出現粘連現象,同一個數字也有可能出現筆劃斷裂現象。對于相鄰字符由于書寫時可能存在一定的傾斜,不能簡單地通過垂直分割方法分離兩個數字??紤]到同一個人具有相對穩定的書寫習慣,其傾斜角度保持基本一致,所以可以通過先對一個孤立字符確定其傾斜角度后再對其它粘連字符進行分割[13]。對于書寫時筆劃斷裂問題,注意到一串連續書寫的字符,其重心在橫向上幾乎等距分布,而在縱向上高度幾乎是一致的,直觀地理解,就是這些字符的重心近似形成一條直線,且這些點幾乎是等距分離的。根據這樣一種書寫規律,陳熙霖等人提出基于連通部分重心間距離對筆劃斷裂字符的分割算法[13]。
可以將多種分割方法結合起來進行圖像分割。比如向華等人提出了一種基于字符方向, 將局部分割與全局隨機統計最佳準則相結合的字符分割算法[14],該算法在不同的字符方向下,計算度量可分離性的全局隨機統計最佳準則函數,取它最大時的字符方向為最佳分割方向。這個方法可以解決字符傾斜方向的確定問題。
字符串常用分割方法滴水算法也可以用來對數字字符進行分割。滴水算法的基本思想是仿照水滴從高處向低處滴落的過程進行字符串的切割, 水滴下落過程是要么向下滴落要么水平滾動, 利用它經過的路線就可以實現對字符的切分。但該算法對粘連數字分割表現不佳,馬瑞等人改進了滲漏過程,對字符的筆劃粘連部分經過距離變換獲取中心線,并結合上面關于字符的傾斜角度來引導水滴在中心線上下端的各自滲漏方向[15]。李興國等人將字符的寬度統計值和豎直投影直方圖中的投影極小值點相結合處作為滴水算法的起始滴落點對粘連字符進行分割[16]。

表1:各種方法在MINIST識別率

表2:各種方法在車牌號碼識別方面對比
張洪剛等人利用手寫數字串中字符之間的連接特點, 將切分曲線分成5種類型:斜線、弧線、上弧線下斜線、上斜線下弧線及雙弧線,對每種切分曲線建立代價函數,選取代價函數值最小的切分曲線實現對字符的分割[17]。
一般圖像的識別過程是首先將圖像點陣由圖像空間經過特征抽取映射到特征空間, 然后由對應這些特征的分類器將特征從特征空間映射到最后的結果集合上.
圖像特征一般可以從顏色、紋理、形狀和空間關系四個方面去提取。所選特征能否全面反映圖像本質,直接影響圖像識別的結果。簡單的特征有周長、面積、質心、灰度直方圖,由灰度產生的灰度均值、標準差、平滑度和熵,以及反映兩個像素灰度關系的灰度共現矩陣。并不是圖像特征越多,識別越準確。所以特征也需要選擇或需要組合從而達到降維的目的。統計中的主成份分析方法(PCA)經常被用來進行特征組合。
可以將不同類型的特征進行融合,但融合效果不一定比原特征優,也不一定差,需要進行驗證分析。陳浩翔等人考慮了將多種特征樣本數據的原始特征、PCA 特征和HOG 特征的不同類型特征的簡單拼接,結果發現,PCA 特征和原始特征的融合后分類效果比只用原始特征低,而將PCA 和HOG 特征融合的分類效果優于單類特征[18]。
當圖像特征確定后,下一步工作便是選擇分類器進行圖像識別。分類方法多種多樣,一般要結合特征及問題確定用什么樣的分類器。兩分類問題經常使用的方法有邏輯回歸和支持向量機;多分類問題有k近鄰分類器、k均值聚類、模糊模式識別、神經網絡等。
為了實現對手寫郵政編碼的識別,劉文等人建立了0-9十個數字的模糊隸屬函數,利用最大隸屬原則進行數字識別[19]。
閔鋒等人將主成分分析和壓縮感知結合壓縮手寫數字字符特征,并用SVM對降維數據進行學習和識別[20]。文獻[21]使用多項式作為SVM的核函數,其實驗表明在當多項式的階數為4 時,識別效果最好,正確識別率為98% 以上的次數最多。
顧潘龍對提取的樣本特征利用PCA降維,使用K-近鄰分類器對手寫數字進行匹配識別[22]。
胡鐘山等人提出了已知真實值T 時觀察值O的概率分布矩陣,及已知觀察值O時真實值T 的概率分布矩陣這樣兩個分類器性能參數,根據這樣的性能參數定義了一種有效分類器的概念[23]。對圖像分類時有效分類器不止一個,將多個有效分類器組合進行識別可以提高識別準確率,文獻[23]將這種組合分類的思想應用于手寫數字識別,他們提取了四個特征:Gabar特征、Zernike矩、Legendre矩和Pseudo-Zernike矩,和三個傳統的分類器:最近鄰分類器、最短距離分類器和Bayesian分類器。
早期利用神經網絡分類也離不開特征提取,研究主要集中在對神經網絡的訓練算法改進方面。顧妍午等人選取LM(Levernberg -Marquardt)算法訓練網絡[24]。
目前對數字字符的識別也隨著機器學習理論的成果發展到利用深度學習神經網絡的階段。深度學習方法可以避免對圖像特征的提取,直接將一幅圖像作為數據輸入神經網絡。卷積神經網絡CNN具有輸入層、多個卷積層、多個池化層及輸出層的多層結構,利用該特點可以實現深度學習功能,但它存在過擬合問題。為了解決過擬合問題,經常采用Dropout、DropConnect和Maxout等方法,這些技術通過擴大網絡連接的稀疏性或者增加隨機性達到消除過擬合、提高神經網絡泛化能力的目的[25]。
一般CNN在經過卷積、池化運算后完成特征提取,再采用Softmax進行分類識別。但杜洋等則利用SVM分類器進行分類,它的分類性能明顯優于一般的CNN[26]。
曾文獻等人將深度卷積神經網絡與自動編碼器相結合,將卷積層設計成卷積自編碼器和反卷積解碼器,建立一種深度卷積自編碼神經網絡[27]。
基于暹羅網絡(SN) [28]的深度神經網絡模型在識別手寫字符識別時,識別率達到98%,但SN 模型沒有很好地獲取到樣本的差異性特征。文獻[29]提出的二進制卷積神經網絡(B-CNN) 深度學習模型不能很好地學習樣本的高級特征。陳玄等人融合SN 和B-CNN 2 種深度網絡模型,提出一種融合卷積神經網絡模型F-CNN[30]。F-CNN 模型由于共享了SN 模型和B-CNN 模型相應層的參數形式達到對兩種網絡高級特征的融合。
深度卷積神經網絡通過卷積和池化運算自主學習獲得圖像的特征,它省去了人工確定特征的麻煩,但其產生的特征意義難以解釋。將人工特征提取和深度學習思想結合起來有助于對模型的解釋。陳浩翔等人考慮了將多種特征樣本數據的不同特征融合數據作為深度學習樣本,選取棧式稀疏自編碼(SAE)作為深度學習模型,進一步提取二次特征,最后將二次特征送入Softmax分類器進行分類[18]。
Matlab、TensorFlow、OpenCV等環境都可以實現對字符圖像的識別。王璐[31]、畢波[32]分別利用Matlab和OpenCV提供的強大的圖像處理函數實現了車牌號碼的識別,而邢萌則基于TensorFlow設計了手寫數字模型[33]。
多種數字字符的識別方法被提出,表1中列出了各種方法在MINIST手寫字符庫上的識別效果。從表1中可以看出k-近鄰方法識別率較低,而深度學習網絡可以取得很好的識別效果,其中以深度卷積自編碼神經網絡表現最佳。
表2中列出了幾種分類器在車牌號碼識別方面的性能。卷積神經網絡表現突出,通過一定的改進,卷積神經網絡可以達到98.85%的識別率,沒有融入深度學習的BP神經網絡或支持向量機在識別性能上還有待提高。