于圣遠(yuǎn)
摘要:文字作為社會文明的載體,在信息科技領(lǐng)域占有重要的地位。光學(xué)字符識別(OCR)可以減輕人力繁瑣的工作,本文重點研究實現(xiàn)了銀行卡上印刷體字符識別的算法。
首先進行銀行卡字符識別的前期處理工作。采用常見的圖像的預(yù)處理方法,如用高斯濾波器對銀行卡圖像進行了圖像的復(fù)原去噪、二值化,以及傾斜校正等。然后對銀行卡圖像的字符區(qū)域進行了進一步的提取,結(jié)合銀行卡圖像的版面分析、字符區(qū)域投影操作,對印刷體字符進行了字符細(xì)化與分割。隨后研究總結(jié)了字符的特征提取與識別算法。對分割后的印刷體字符進行了歸一化處理,最終選用基于模板匹配的字符識別方法,并對銀行卡圖像進行特征提取后就以上方法進行了仿真實現(xiàn),對識別結(jié)果進行了分析,其識別率較高,但仍有不理想的結(jié)果出現(xiàn),需要改進。
關(guān)鍵詞:光學(xué)字符識別;輪廓檢測;特征提取;模板匹配
中圖分類號:F832文獻標(biāo)識碼:A文章編號:1672-9129(2020)07-0068-03
Abstract:As the carrier of social civilization, text occupies an important position in the field of information technology. Optical character recognition (OCR) can reduce the laborious work, this paper focuses on the realization of printed character recognition algorithm on bank CARDS.
Firstly, the preliminary processing of character recognition of bank card is carried out. Common image preprocessing methods are used, such as gaussian filter for image restoration, denoising, binarization and tilt correction. Then the character area of the bankcard image is further extracted, and the printed characters are refined and segmented by combining the layout analysis of the bankcard image and the projection operation of the character area. Then the algorithm of character feature extraction and recognition is summarized. Finally, the character recognition method based on template matching is selected. After the feature extraction of bank card image, the above methods are simulated and the recognition results are analyzed. The recognition rate is relatively high, but there are still some unsatisfactory results that need to be improved.
Key words:Optical character recognition;Contour detection;Feature extraction;Template matching
1緒論
1.1課題來源及研究意義。計算機技術(shù)的飛速發(fā)展給人們生活帶來了巨大改變,并極大的推動了人類社會的發(fā)展。文字作為社會文明的載體,在信息科技領(lǐng)域占有重要的地位。OCR(Optical Character Recognition,光學(xué)字符識別)作為一個應(yīng)用研究領(lǐng)域,對減少從業(yè)人員的工作量,提高目標(biāo)認(rèn)證識別的工作效率和準(zhǔn)確率,有著極其重要的意義。機器視覺(又稱計算機視覺)是以數(shù)字圖像處理技術(shù)和極其視覺理論為基礎(chǔ),利用計算機對客觀世界進行視覺感知和解釋的一種新興技術(shù)。它有許多突出的優(yōu)點,如現(xiàn)場抗干擾能力強、非接觸、精度合適、速度快等等,具有良好的應(yīng)用前景。本文在這樣的發(fā)展趨勢下,利用opencv-python實現(xiàn)了一個銀行卡數(shù)字識別系統(tǒng)。
1.2本文的主要研究內(nèi)容。
第二章主要介紹了對銀行卡圖像的預(yù)處理,為之后的字符提取與識別奠定了基礎(chǔ),
第三章主要介紹了銀行卡數(shù)字區(qū)域部分抽取與切分的相關(guān)過程。
第四章主要介紹了字符特征提取與識別。
第五章給出了結(jié)論及反思。
2銀行卡圖像預(yù)處理
本章主要對銀行卡圖像進行了前期的預(yù)處理,主要分為圖像的增強和水平校正。圖像增強旨在降低圖像中的噪聲,增強對比度,從而增強對文本區(qū)域的定位。圖像的水平校正則可以將原圖像轉(zhuǎn)換為文本水平分布的圖像,提高后續(xù)對圖像中文本定位的精確度,這一部分在本文不做深入展開。
2.1均值濾波。均值濾波的含義時將圖片中一個方塊區(qū)域(一般為3*3)內(nèi)中心點的像素為全部變?yōu)辄c像素值的平均值。
g(x,y)=1M∑f∈sf(x,y)
2.2高斯濾波。本文采用高斯濾波核與圖像進行卷積。此步驟將稍微平滑圖像,以減少明顯噪聲對邊緣檢測器的影響。高斯濾波器核大小為(2k+1)×(2k+1)時的方程如下:
高斯濾波將點的8連通區(qū)域按照一定權(quán)重相加,將其中值作為點的像素值。使用高斯濾波處理可以將圖像中很多噪聲平滑,
將圖像中目標(biāo)圖像的輪廓凸顯出來。但此方法也會將一些不明顯的邊界平滑掉,需注意。高斯濾波矩陣的權(quán)值,隨著與中心像素點的距離增加,而呈現(xiàn)高斯衰減的變換特性。這樣的好處在于,離算子中心很遠(yuǎn)的像素點的作用很小,從而能在一定程度上保持圖像的邊緣特征。
2.3中值濾波。中值濾波的含義是在圖像中去3*3的矩陣,后將9個像素進行排序,并將這個矩陣的中心點賦值為這九個像素的中值。
可以看出,高斯濾波的去噪效果最好,同時數(shù)字部分的邊界仍然保持的比較完整。而中值濾波對數(shù)字邊界的破壞較為嚴(yán)重。因此采用高斯濾波的結(jié)果進行下一步的操作。
3證件圖像文本區(qū)域定位
經(jīng)過上一章的銀行卡圖像預(yù)處理之后,最大程度上恢復(fù)了圖像的質(zhì)量,并確定了圖像上的待識別區(qū)域,本章的主要任務(wù)是將待識別的數(shù)字區(qū)域進行定位及切分操作。
3.1印刷體數(shù)字的定位。此部分的操作主要有禮帽操作、二值化以及閉操作等。
首先要將圖像進行灰度化處理,圖像的灰度處理是指將色彩圖像轉(zhuǎn)化為灰度圖像的過程。彩色圖像分為R,G,B三個分量,分別顯示出紅綠藍(lán)等各種顏色,灰度化就是使彩色的R,G,B分量相等的過程,灰度化處理的意義在于減小圖像所占存儲空間以及后續(xù)的計算量,便于之后的處理。
(1)禮帽操作。禮帽操作的結(jié)果為原圖像-開運算圖像。開運算相當(dāng)于對圖像先進行腐蝕運算再進行膨脹運算,可以起到消除離散點和"毛刺"以及將兩個物體分開的效果,原圖像減去開運算操作后的圖像后,就得得到了被消除的離散點和“毛刺”。禮帽操作通常用于突出圖像中的噪聲圖像。然而禮帽操作在本文中的意義在于突出原圖像中更加明亮的部位,從而便于準(zhǔn)確定位。之后進行二值化操作,即將灰度圖像轉(zhuǎn)變?yōu)橹挥?0-255 數(shù)值的黑白圖像,二值化能夠方便后期的圖像分析,使圖像處理的數(shù)據(jù)量變小,同時能有效地抑制噪聲。
(2)sobel算子處理。在此處用了一個xsobel算子對原圖像進行處理,并進行了歸一化操作。此運算使得銀行卡圖像中的數(shù)字部分橫向粘連在一起,從而突出了數(shù)字部分。
索伯算子(Sobel operator)是圖像處理中的算子之一,在影像處理及電腦視覺領(lǐng)域中常被用來做邊緣檢測。在技術(shù)上,它是一離散性差分算子,用來運算圖像亮度函數(shù)的梯度之近似值。在圖像的任何一點使用此算子,索伯算子的運算將會產(chǎn)生對應(yīng)的梯度向量或是其范數(shù)。如果以A代表原始圖像,Gx代表經(jīng)橫向及縱向邊緣檢測的圖像,其公式如下:
(3)閉運算。最后,先進行一次閉運算,所得結(jié)果二值化后,再進行一次閉運算。閉運算相當(dāng)于對圖像先進行膨脹運算再進行腐蝕運行,可以填充圖像的內(nèi)部孔洞和圖像的凹角點,可以把兩個鄰近的目標(biāo)連接起來。此操作使銀行卡的數(shù)字區(qū)域連成一片,銀行卡數(shù)字區(qū)域?qū)?yīng)生成的白色區(qū)域更清晰明亮、便于定位,最后得到的圖像用作銀行卡文字部分輪廓檢測的基礎(chǔ)。
(4)數(shù)字輪廓檢測。將上圖用sobel算子做邊緣檢測后,得到的數(shù)字部分輪廓在原圖像中的顯示如下:
可以看到,4個數(shù)字區(qū)域已經(jīng)被成功地檢測出來了,但是同時也檢測出了其他并不需要的區(qū)域,需要將他們剔除掉。注意到目標(biāo)數(shù)字區(qū)域的外接矩形的長寬比在2.5至4.0之間,因此可以做一次遍歷篩選:先生成各個輪廓的外接矩形,再分別求出其外接矩形的長寬比,將矩形長寬比在2.5至4.0之間相應(yīng)的輪廓保留下來,其余的刪除,就得到了目標(biāo)區(qū)域的輪廓。
3.2字符分割。本文采用基于版面分析的數(shù)字分割原理進行字符分割,主要是依據(jù)字符輪廓坐標(biāo)不同進行切分的。該算法是一種經(jīng)典的數(shù)字分割方法,自問世以來,便被不斷的改善發(fā)展,得到了很大的應(yīng)用。從字符的大小以及字符間隔分析,字符的大小以及字符間的間隔一般起伏變化不大,這一特征在印刷體字符上尤其明顯。因此在字符的識別過程中,可以依據(jù)字符的大小特點和字符的間隔特征,做字符間的切分操作。
首先將含有4個數(shù)字的輪廓內(nèi)的圖像進行與上面類似的二值化。
之后再進行輪廓檢測。檢測方法如下用sobel算子檢測出4個數(shù)字的輪廓。之后計算出這4個輪廓的最小外接矩形,并分別取得這4個矩形的左上角點的坐標(biāo)值,將這4個矩形的左上角點的坐標(biāo)值由小到大排序,即得到了由左到右4個數(shù)字對應(yīng)的待檢測數(shù)字的輪廓。其余3個含有4個數(shù)字的輪廓也進行類似的步驟,最終即得到了由左至右16個數(shù)字相應(yīng)的待檢測的輪廓。
4字符的識別
字符識別主要有以下幾種算法:
(1)模板匹配法:該方法就是將輸入的待識別字符歸一化為模板的大小,然后計算與模板集合的匹配相似度,選擇最佳匹配結(jié)果。該方法簡單快速但很容易對存在噪聲、變形、偏移的字符產(chǎn)生誤識別。為了提高正確率人們往往使用多個模板進行匹配,這樣就大大增加了匹配算法的處理時間。后來有人對傳統(tǒng)的模板匹配法進行了改進,提出了基于關(guān)鍵點的模板匹配法,該方法對字符中提取出的一些關(guān)鍵點進行模板匹配,減少了模板匹配點數(shù),在很大程度上提高了識別速度[1]。
(2) 特征分析匹配法:該方法是提取字符圖像中的一種或幾種特征,然后與特征庫的集合進行匹配,相對于前面的模板匹配法,該方法通過提取特征能夠更好的識別字符。
為簡便起見,本文采用模板匹配法進行字符識別。首先將模板進行灰度圖轉(zhuǎn)換、二值化處理、之后用sobel算子檢測出0-9這10個數(shù)字的輪廓。之后計算出這10個輪廓的最小外接矩形,并分別取得這10個矩形的左上角點的坐標(biāo)值,將這10個矩形的左上角點的坐標(biāo)值由小到大排序,之后將其對應(yīng)的10個模板所對應(yīng)的值分別賦為0-9。這樣就得到了已經(jīng)被分割好的、正確對應(yīng)著0-9的10個模板。
4.1 字符的歸一化處理。字符歸一化是字符特征提取前的重要步驟,由于切分后的數(shù)字,在大小形狀上不一致,為了保證特征提取的準(zhǔn)確性,必須進行字符的歸一化處理。
字符的歸一化處理屬于圖像的空間轉(zhuǎn)換,其中常用的有圖像的平移、旋轉(zhuǎn)、縮放等。
為了保證在統(tǒng)計識別過程中,字符與模板之間能夠進行距離與相似度的匹配,則必須使字符擁有與模板相同的維數(shù)。而在基于字符結(jié)構(gòu)的識別過程中,字符的間架結(jié)構(gòu)必須統(tǒng)一,這才可以保證字符與模板之間的關(guān)聯(lián)性。字符只有經(jīng)過歸一化處理,才可以提升系統(tǒng)識別的穩(wěn)定性,同時還具有抑制圖像噪聲干擾的作用。[3]在本文中將模板與待匹配的圖像尺寸大小均調(diào)整為(57,88)
4.2模板匹配法。模板匹配的字符識別是指通過一些標(biāo)準(zhǔn)的字符與待識別字符進行比較,找出與待識別字符最為相似的模板,并將該模板作為識別的結(jié)果。待識別字符與標(biāo)準(zhǔn)模板之間的相似度衡量可以用如下公式表示:
式中Sft ——用于衡量相似度大小;
f(i,j)——待識別的字符;
T(i,j)——標(biāo)準(zhǔn)的字符模板。
在本文中對16個待檢測數(shù)字的圖像,分別用數(shù)字0-9共計10個數(shù)字的模板進行遍歷,計算器匹配度Sft,并將其值最高的模板對應(yīng)的數(shù)字記為檢測結(jié)果。即成功得到了此銀行卡卡號的檢測結(jié)果:
Credit Card Type:MasterCard
5結(jié)論
本文的核心思路是采用模板匹配法進行銀行卡數(shù)字識別。模板匹配的原理較簡單,但是對于模板庫的建立要求很高,可以看到當(dāng)模板和待檢測圖像的質(zhì)量較高時,模板匹配法的檢測準(zhǔn)確率相當(dāng)高,幾乎可以達到100%。但是當(dāng)模板與待檢測圖像的字體差異較大時,檢測的效果哦就會很不理想。另一方面,字符匹配過程中的計算量也很大,較為耗時。
另外,本文中對銀行卡圖像中數(shù)字區(qū)域的定位采用了較多的經(jīng)驗參數(shù),如外接矩形長寬比等進行識別篩選,在檢測不同樣式的銀行卡時,會凸顯出自動化程度與準(zhǔn)確率不足的情況,是亟待優(yōu)化的一個方面。
參考文獻:
[1]陳學(xué)保.車牌字符識別算法的研究[D].重慶大學(xué).2013
[2]https://zh.wikipedia.org/wiki/%E7%B4%A2%E8%B2%9D%E7%88%BE%E7%AE%97%E5%AD%90
[3]張瑜. 支票掃描圖像中的字符識別算法及實現(xiàn).哈爾濱工業(yè)大學(xué).2016
[4]UP:啥都會一點的研究生. (全)基于python的Opencv項目實戰(zhàn).2019 https://www.bilibili.com/video/BV1oJ411D71z?p=9