文/蔡玉婷 王外忠 杜孟杰 楊鑫 周鐵軍
數(shù)字字符因?yàn)槠鋺?yīng)用十分普遍,比如郵政編碼、車牌號(hào)碼、電表、水表、電話號(hào)碼等幾乎處處都與數(shù)字字符有關(guān),因而通過計(jì)算機(jī)識(shí)別這些數(shù)字就是一件相當(dāng)重要的工作。如何準(zhǔn)確識(shí)別數(shù)學(xué)字符吸引了大量研究人員的注意,相關(guān)研究成果也有了大量的報(bào)道。
數(shù)字字符可以分為兩大類,一是打印體數(shù)字,二是手寫體數(shù)字。兩者的處理方法是有本質(zhì)的區(qū)別的。本文將近年來在這兩類數(shù)字字符識(shí)別研究中提出的方法及應(yīng)用做一個(gè)總結(jié)和分析。
圖像處理一般都要先進(jìn)行預(yù)處理,然后才能開展圖像分析。預(yù)處理的好壞直接影響圖像分析的效果。預(yù)處理一般包括對(duì)圖像進(jìn)行平滑、分割、規(guī)范化等過程。其中圖像分割是一個(gè)關(guān)鍵步驟,其目的在于將圖像分割成幾干個(gè)獨(dú)立的、具有特定屬性的區(qū)域并從中分離出需要的目標(biāo)圖形。從原理上分類,可以將圖像分割大約分為結(jié)構(gòu)分割法、統(tǒng)計(jì)分割法和面向模式分割法。常用的圖像分割方法中基于區(qū)域的分割方法及基于邊緣的分割方法都屬于結(jié)構(gòu)分割法,結(jié)構(gòu)分割法依賴于對(duì)圖像結(jié)構(gòu)的分析及獲取的結(jié)構(gòu)特征。而常見的基于閾值的分割方法則是屬于統(tǒng)計(jì)分割法。字符分割中滴水算法可以歸納為結(jié)構(gòu)分割法
閾值分割方法計(jì)算簡(jiǎn)單、效率高,常見的閾值分割法主要有最大類間方差法(即OTSU算法),最大熵的閾值分割法、 最小誤差法、共生矩陣法、矩量保持法、概率松弛法等,其中單閾值OTSU算法主要思想是利用給定的一個(gè)閾值將圖像分成前景與背景兩部分,能夠使得兩部分類間方差最大的閾值就是最優(yōu)分割閾值。類間方差最大能夠保證分割錯(cuò)誤概率最小。對(duì)于多閾值圖像分割,則是利用K-1個(gè)閾值將圖像分成K個(gè)部分,目的就是要求使K個(gè)類間方差最大的最佳閾值組合。多閾值OTSU算法是通過多次使用單閾值OTSU方法來進(jìn)行圖像分割,每次分割后計(jì)算各部分類內(nèi)方差,再對(duì)類內(nèi)方差最大的類進(jìn)行單閾值OTSU分割,直到分割滿足結(jié)束條件為止[1]。
由于傳統(tǒng)的多閾值OTSU分割算法實(shí)際上是通過窮舉搜素實(shí)現(xiàn)的,為了解決計(jì)算量大的問題,大量研究聚焦于該算法的優(yōu)化研究??s小閾值搜素范圍是優(yōu)化方法之一,殷蔚明等人提出利用雙峰法粗步得到的各分割閾值在其周圍確定一個(gè)較小的灰度級(jí)范圍,這樣可以縮小局部Otsu 閾值的搜索范圍[1,2]。
近年來一些新的優(yōu)化算法不斷被引進(jìn),比如遺傳算法[3]、免疫算法[4]、粒子群算法[5]等。與遺傳算法相比,粒子群算法需要的參數(shù)少, 可靠性好、不易陷入局部極值[5]。Mirjalili 提出了一種新的隨機(jī)群優(yōu)化算法,即正余弦算法(SCA)[6],該算法利用了正余弦函數(shù)的震蕩特性,通過波動(dòng)進(jìn)行全局探索。SCA 收斂速度快,求解精度高,但其局部搜索能力較弱。為了提高局部搜索能力,可以對(duì)種群進(jìn)行混沌初始化來提高初始種群質(zhì)量;也可以根據(jù)粒子適應(yīng)度值的大小自適應(yīng)地調(diào)整參數(shù);還可以引入反向?qū)W習(xí)策略并擇優(yōu)選取粒子等措施基于改進(jìn)正余弦算法,以用于多閾值圖像的分割問題[7]。
另外一些仿生算法也被使用來尋找最佳閾值組合,常用的有細(xì)菌覓食算法、人工蜂群算法、布谷鳥搜索算法[8],實(shí)驗(yàn)結(jié)果顯示,布谷鳥搜索算法比細(xì)菌覓食、人工蜂群兩種算法的尋優(yōu)速度快、尋優(yōu)質(zhì)量高。蜂群算法存在的主要問題是算法的收斂速度及容易陷入局部最優(yōu)解,通過采取最優(yōu)解引導(dǎo)、局部搜索邊界遞減和限定食物生成范圍等策略可以加快算法的收斂速度,避免蜂群算法的不足[9]。
模糊集理論也被用來尋找最優(yōu)閾值。模糊C均值聚類算法(FCM)建立一個(gè)反映圖像像索點(diǎn)與C個(gè)類中心之間的相似性的目標(biāo)函數(shù),通過優(yōu)化該目標(biāo)函數(shù)獲得局部極大從而得到最優(yōu)分割,F(xiàn)CM的聚類要首先給定聚類的類別數(shù)C,聚類結(jié)果受初始聚類中心的影響,也受相似性度量方法的影響,目前還沒有一種通用的相似性度量準(zhǔn)則,也沒有一種普遍適用的初始聚類中心確定方法,類別數(shù)C的確定也是主觀的,帶有一定的盲目性。王璐等人提出一種基于Voronoi 距離設(shè)計(jì)隸屬函數(shù)以及縮減數(shù)據(jù)集的FCM 算法[10], 王昭等人文提出直覺FCM算法,該算法的主要改進(jìn)是引入猶豫度和非隸屬度改進(jìn)隸屬度的計(jì)算,同時(shí)將鄰域像素信息包含在目標(biāo)函數(shù)中,使其對(duì)圖像噪聲更為魯棒[11]。賈娟娟等人利用爬山法獲取彩色圖像三維顏色直方圖的多個(gè)峰值,并將峰值個(gè)數(shù)及各個(gè)峰值處的像素點(diǎn)作為FCM聚類類別數(shù)C和初始聚類中心[12]。
手寫數(shù)字分割時(shí)較打印體數(shù)字分割困難的地方主要是多個(gè)手寫數(shù)字在書寫時(shí)可能出現(xiàn)粘連現(xiàn)象,同一個(gè)數(shù)字也有可能出現(xiàn)筆劃斷裂現(xiàn)象。對(duì)于相鄰字符由于書寫時(shí)可能存在一定的傾斜,不能簡(jiǎn)單地通過垂直分割方法分離兩個(gè)數(shù)字??紤]到同一個(gè)人具有相對(duì)穩(wěn)定的書寫習(xí)慣,其傾斜角度保持基本一致,所以可以通過先對(duì)一個(gè)孤立字符確定其傾斜角度后再對(duì)其它粘連字符進(jìn)行分割[13]。對(duì)于書寫時(shí)筆劃斷裂問題,注意到一串連續(xù)書寫的字符,其重心在橫向上幾乎等距分布,而在縱向上高度幾乎是一致的,直觀地理解,就是這些字符的重心近似形成一條直線,且這些點(diǎn)幾乎是等距分離的。根據(jù)這樣一種書寫規(guī)律,陳熙霖等人提出基于連通部分重心間距離對(duì)筆劃斷裂字符的分割算法[13]。
可以將多種分割方法結(jié)合起來進(jìn)行圖像分割。比如向華等人提出了一種基于字符方向, 將局部分割與全局隨機(jī)統(tǒng)計(jì)最佳準(zhǔn)則相結(jié)合的字符分割算法[14],該算法在不同的字符方向下,計(jì)算度量可分離性的全局隨機(jī)統(tǒng)計(jì)最佳準(zhǔn)則函數(shù),取它最大時(shí)的字符方向?yàn)樽罴逊指罘较?。這個(gè)方法可以解決字符傾斜方向的確定問題。
字符串常用分割方法滴水算法也可以用來對(duì)數(shù)字字符進(jìn)行分割。滴水算法的基本思想是仿照水滴從高處向低處滴落的過程進(jìn)行字符串的切割, 水滴下落過程是要么向下滴落要么水平滾動(dòng), 利用它經(jīng)過的路線就可以實(shí)現(xiàn)對(duì)字符的切分。但該算法對(duì)粘連數(shù)字分割表現(xiàn)不佳,馬瑞等人改進(jìn)了滲漏過程,對(duì)字符的筆劃粘連部分經(jīng)過距離變換獲取中心線,并結(jié)合上面關(guān)于字符的傾斜角度來引導(dǎo)水滴在中心線上下端的各自滲漏方向[15]。李興國(guó)等人將字符的寬度統(tǒng)計(jì)值和豎直投影直方圖中的投影極小值點(diǎn)相結(jié)合處作為滴水算法的起始滴落點(diǎn)對(duì)粘連字符進(jìn)行分割[16]。
表1:各種方法在MINIST識(shí)別率
表2:各種方法在車牌號(hào)碼識(shí)別方面對(duì)比
張洪剛等人利用手寫數(shù)字串中字符之間的連接特點(diǎn), 將切分曲線分成5種類型:斜線、弧線、上弧線下斜線、上斜線下弧線及雙弧線,對(duì)每種切分曲線建立代價(jià)函數(shù),選取代價(jià)函數(shù)值最小的切分曲線實(shí)現(xiàn)對(duì)字符的分割[17]。
一般圖像的識(shí)別過程是首先將圖像點(diǎn)陣由圖像空間經(jīng)過特征抽取映射到特征空間, 然后由對(duì)應(yīng)這些特征的分類器將特征從特征空間映射到最后的結(jié)果集合上.
圖像特征一般可以從顏色、紋理、形狀和空間關(guān)系四個(gè)方面去提取。所選特征能否全面反映圖像本質(zhì),直接影響圖像識(shí)別的結(jié)果。簡(jiǎn)單的特征有周長(zhǎng)、面積、質(zhì)心、灰度直方圖,由灰度產(chǎn)生的灰度均值、標(biāo)準(zhǔn)差、平滑度和熵,以及反映兩個(gè)像素灰度關(guān)系的灰度共現(xiàn)矩陣。并不是圖像特征越多,識(shí)別越準(zhǔn)確。所以特征也需要選擇或需要組合從而達(dá)到降維的目的。統(tǒng)計(jì)中的主成份分析方法(PCA)經(jīng)常被用來進(jìn)行特征組合。
可以將不同類型的特征進(jìn)行融合,但融合效果不一定比原特征優(yōu),也不一定差,需要進(jìn)行驗(yàn)證分析。陳浩翔等人考慮了將多種特征樣本數(shù)據(jù)的原始特征、PCA 特征和HOG 特征的不同類型特征的簡(jiǎn)單拼接,結(jié)果發(fā)現(xiàn),PCA 特征和原始特征的融合后分類效果比只用原始特征低,而將PCA 和HOG 特征融合的分類效果優(yōu)于單類特征[18]。
當(dāng)圖像特征確定后,下一步工作便是選擇分類器進(jìn)行圖像識(shí)別。分類方法多種多樣,一般要結(jié)合特征及問題確定用什么樣的分類器。兩分類問題經(jīng)常使用的方法有邏輯回歸和支持向量機(jī);多分類問題有k近鄰分類器、k均值聚類、模糊模式識(shí)別、神經(jīng)網(wǎng)絡(luò)等。
為了實(shí)現(xiàn)對(duì)手寫郵政編碼的識(shí)別,劉文等人建立了0-9十個(gè)數(shù)字的模糊隸屬函數(shù),利用最大隸屬原則進(jìn)行數(shù)字識(shí)別[19]。
閔鋒等人將主成分分析和壓縮感知結(jié)合壓縮手寫數(shù)字字符特征,并用SVM對(duì)降維數(shù)據(jù)進(jìn)行學(xué)習(xí)和識(shí)別[20]。文獻(xiàn)[21]使用多項(xiàng)式作為SVM的核函數(shù),其實(shí)驗(yàn)表明在當(dāng)多項(xiàng)式的階數(shù)為4 時(shí),識(shí)別效果最好,正確識(shí)別率為98% 以上的次數(shù)最多。
顧潘龍對(duì)提取的樣本特征利用PCA降維,使用K-近鄰分類器對(duì)手寫數(shù)字進(jìn)行匹配識(shí)別[22]。
胡鐘山等人提出了已知真實(shí)值T 時(shí)觀察值O的概率分布矩陣,及已知觀察值O時(shí)真實(shí)值T 的概率分布矩陣這樣兩個(gè)分類器性能參數(shù),根據(jù)這樣的性能參數(shù)定義了一種有效分類器的概念[23]。對(duì)圖像分類時(shí)有效分類器不止一個(gè),將多個(gè)有效分類器組合進(jìn)行識(shí)別可以提高識(shí)別準(zhǔn)確率,文獻(xiàn)[23]將這種組合分類的思想應(yīng)用于手寫數(shù)字識(shí)別,他們提取了四個(gè)特征:Gabar特征、Zernike矩、Legendre矩和Pseudo-Zernike矩,和三個(gè)傳統(tǒng)的分類器:最近鄰分類器、最短距離分類器和Bayesian分類器。
早期利用神經(jīng)網(wǎng)絡(luò)分類也離不開特征提取,研究主要集中在對(duì)神經(jīng)網(wǎng)絡(luò)的訓(xùn)練算法改進(jìn)方面。顧妍午等人選取LM(Levernberg -Marquardt)算法訓(xùn)練網(wǎng)絡(luò)[24]。
目前對(duì)數(shù)字字符的識(shí)別也隨著機(jī)器學(xué)習(xí)理論的成果發(fā)展到利用深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的階段。深度學(xué)習(xí)方法可以避免對(duì)圖像特征的提取,直接將一幅圖像作為數(shù)據(jù)輸入神經(jīng)網(wǎng)絡(luò)。卷積神經(jīng)網(wǎng)絡(luò)CNN具有輸入層、多個(gè)卷積層、多個(gè)池化層及輸出層的多層結(jié)構(gòu),利用該特點(diǎn)可以實(shí)現(xiàn)深度學(xué)習(xí)功能,但它存在過擬合問題。為了解決過擬合問題,經(jīng)常采用Dropout、DropConnect和Maxout等方法,這些技術(shù)通過擴(kuò)大網(wǎng)絡(luò)連接的稀疏性或者增加隨機(jī)性達(dá)到消除過擬合、提高神經(jīng)網(wǎng)絡(luò)泛化能力的目的[25]。
一般CNN在經(jīng)過卷積、池化運(yùn)算后完成特征提取,再采用Softmax進(jìn)行分類識(shí)別。但杜洋等則利用SVM分類器進(jìn)行分類,它的分類性能明顯優(yōu)于一般的CNN[26]。
曾文獻(xiàn)等人將深度卷積神經(jīng)網(wǎng)絡(luò)與自動(dòng)編碼器相結(jié)合,將卷積層設(shè)計(jì)成卷積自編碼器和反卷積解碼器,建立一種深度卷積自編碼神經(jīng)網(wǎng)絡(luò)[27]。
基于暹羅網(wǎng)絡(luò)(SN) [28]的深度神經(jīng)網(wǎng)絡(luò)模型在識(shí)別手寫字符識(shí)別時(shí),識(shí)別率達(dá)到98%,但SN 模型沒有很好地獲取到樣本的差異性特征。文獻(xiàn)[29]提出的二進(jìn)制卷積神經(jīng)網(wǎng)絡(luò)(B-CNN) 深度學(xué)習(xí)模型不能很好地學(xué)習(xí)樣本的高級(jí)特征。陳玄等人融合SN 和B-CNN 2 種深度網(wǎng)絡(luò)模型,提出一種融合卷積神經(jīng)網(wǎng)絡(luò)模型F-CNN[30]。F-CNN 模型由于共享了SN 模型和B-CNN 模型相應(yīng)層的參數(shù)形式達(dá)到對(duì)兩種網(wǎng)絡(luò)高級(jí)特征的融合。
深度卷積神經(jīng)網(wǎng)絡(luò)通過卷積和池化運(yùn)算自主學(xué)習(xí)獲得圖像的特征,它省去了人工確定特征的麻煩,但其產(chǎn)生的特征意義難以解釋。將人工特征提取和深度學(xué)習(xí)思想結(jié)合起來有助于對(duì)模型的解釋。陳浩翔等人考慮了將多種特征樣本數(shù)據(jù)的不同特征融合數(shù)據(jù)作為深度學(xué)習(xí)樣本,選取棧式稀疏自編碼(SAE)作為深度學(xué)習(xí)模型,進(jìn)一步提取二次特征,最后將二次特征送入Softmax分類器進(jìn)行分類[18]。
Matlab、TensorFlow、OpenCV等環(huán)境都可以實(shí)現(xiàn)對(duì)字符圖像的識(shí)別。王璐[31]、畢波[32]分別利用Matlab和OpenCV提供的強(qiáng)大的圖像處理函數(shù)實(shí)現(xiàn)了車牌號(hào)碼的識(shí)別,而邢萌則基于TensorFlow設(shè)計(jì)了手寫數(shù)字模型[33]。
多種數(shù)字字符的識(shí)別方法被提出,表1中列出了各種方法在MINIST手寫字符庫(kù)上的識(shí)別效果。從表1中可以看出k-近鄰方法識(shí)別率較低,而深度學(xué)習(xí)網(wǎng)絡(luò)可以取得很好的識(shí)別效果,其中以深度卷積自編碼神經(jīng)網(wǎng)絡(luò)表現(xiàn)最佳。
表2中列出了幾種分類器在車牌號(hào)碼識(shí)別方面的性能。卷積神經(jīng)網(wǎng)絡(luò)表現(xiàn)突出,通過一定的改進(jìn),卷積神經(jīng)網(wǎng)絡(luò)可以達(dá)到98.85%的識(shí)別率,沒有融入深度學(xué)習(xí)的BP神經(jīng)網(wǎng)絡(luò)或支持向量機(jī)在識(shí)別性能上還有待提高。