梁麗華 趙 凱 唐 琳 王 冰 孫玉冰 房家琦
(1.山東建筑大學(xué)信息與電氣工程學(xué)院,山東 濟南 250101;2.山東建筑大學(xué)材料科學(xué)與工程學(xué)院,山東 濟南 250101)
隨著計算機技術(shù)的發(fā)展,數(shù)字識別技術(shù)更加成熟,逐漸應(yīng)用于車牌識別、印刷體數(shù)字識別和手寫數(shù)字識別等領(lǐng)域[1]。日常生活中,經(jīng)常遇到綁定身份證或需提供身份證號碼的情況,而手動輸入身份證號碼易錯且耗時長,更需要仔細二次核對。因此,提出一種身份證號碼識別方法十分必要。李美玲[2]提出了基于計算機視覺的身份證號碼識別算法,該算法基于LeNet-5模型[3]自動訓(xùn)練樣本圖像,優(yōu)點是達到了自動識別身份證號碼的效果,不足之處在于該模型所需要的訓(xùn)練樣本數(shù)量大,訓(xùn)練速度慢且模型的穩(wěn)定性較差。成利敏[4]構(gòu)建一套基于BP神經(jīng)網(wǎng)絡(luò)和GUI的身份證號碼識別系統(tǒng),該系統(tǒng)雖然在訓(xùn)練完成后識別準確率高,識別速度快,但是傳統(tǒng)的BP神經(jīng)網(wǎng)絡(luò)存在收斂速度慢和閾值穩(wěn)定性低等問題,若要得到更好的身份證號碼識別效果,仍需對算法進行進一步優(yōu)化。因此,本文中提出了一種基于模板匹配的身份證號碼識別方法,該方法邏輯清晰、結(jié)構(gòu)簡單且可跨平臺應(yīng)用,實現(xiàn)身份證號碼自動識別。
身份證號碼識別前需對圖像預(yù)處理,預(yù)處理過程包含圖像灰度化、圖像二值化和ROI提取,剔除由出生日期或者家庭住址中的數(shù)字導(dǎo)致的身份證號碼識別干擾。
采集的原圖像通常為一幅彩色圖像,直接對彩色圖像進行處理計算復(fù)雜且難度較大,所以要對彩色圖像進行灰度化處理[5]。本文使用加權(quán)法對原圖像進行加權(quán)平均處理,算法如式(1)所示,其中g(shù)(i,j)是轉(zhuǎn)換后的灰度圖像,fR(i,j) 、fG(i,j) 、fB(i,j)分別為彩色圖像的三個分量。處理后的圖像數(shù)據(jù)類型為8位,像素灰度值的取值范圍為[0,255],處理結(jié)果如圖1所示。由于身份證圖像帶有背景圖案,所以需要對圖像進行裁剪處理。經(jīng)前期實驗發(fā)現(xiàn),裁切后的圖像,寬度和高度分別為原尺寸的90%時效果最佳,裁剪結(jié)果如圖2所示。
圖1 灰度圖像
圖2 裁剪后的灰度圖像
為使背景與數(shù)字的區(qū)分度更大,利于身份證號碼識別,所以對灰度圖像進行二值化[6]操作,使灰度圖像轉(zhuǎn)化為二值化圖像。本文使用大津法[7],根據(jù)輸入圖像計算出最佳閾值進行全局閾值分割,避免在固定閾值條件下,由于圖像灰度差異而造成的圖像分割錯誤等問題,閾值計算方法如式(2)~(8)所示。設(shè)輸入圖像尺寸為Mr×Nr,灰度值取值范圍為[0,L-1],ni代表了圖像灰度值為i的像素數(shù)量,pi代表了這一灰度值i出現(xiàn)的概率,計算公式為pi=ni(Mr×Nr) ,本文使用的是單域值分割所以,將所有像素點一共分為兩類分別為C0類、C1類,閾值分割點為T,C0類出現(xiàn)的概率為P0(T) ,C1類出現(xiàn)的概率為P1(T)。u0(T) 、u1(T)分別表示C0、C1這兩類和圖像的平均灰度級。為類間方差,T*即最佳閾值。處理結(jié)果如圖3所示。
圖3 二值化圖像
本文的目的是為了識別身份證圖像中的數(shù)字,所以需提取感興趣區(qū)域(ROI),即身份證二值化圖像中的號碼區(qū)域。本文采用特征定位方法提取身份證號碼的ROI[8]。先確定提取身份證號碼的最佳區(qū)域范圍即特征區(qū)域,然后生成了一幅掩膜圖像,如圖4所示,再使用掩膜圖像對二值化圖像進行ROI提取操作,即可得到只含有身份證號碼的二值化圖像,如圖5所示。
圖4 掩膜圖像
圖5 ROI操作取反圖像
身份證號碼識別過程包含字符提取[9]、歸一化處理和模板匹配,非常適合只有簡單數(shù)字和字母的身份證號碼提取,具有算法簡單和計算量小的優(yōu)點。
經(jīng)過前期身份證圖像預(yù)處理,得到一幅只含有身份證號碼的二值化圖像,該圖像分為黑色背景和白色數(shù)字和漢字,所以需要提取圖像中的數(shù)字和文字,并把每個數(shù)字和文字分離,即字符提取,再進行后續(xù)的操作。
圖像中的數(shù)字和文字并不是緊密相連的,數(shù)字或字符間存在著一定的間隔。本文使用8鄰域連通域標(biāo)記法[10]實現(xiàn)身份證號碼字符分割,連通域標(biāo)記原理如圖6和圖7所示。
圖6 連通域標(biāo)記路徑
圖7 連通域標(biāo)記結(jié)果
先粗定位身份證號碼區(qū)域,通過剪切后圖像中的非零灰度值像素點的返回坐標(biāo),定位數(shù)字和漢字的初步裁剪區(qū)域,如圖8所示。再對裁剪區(qū)域進行連通域標(biāo)記,得到一幅帶有標(biāo)記點的圖像和連通域標(biāo)記的數(shù)量。
圖8 粗定位結(jié)果
連通域進行比對、拼接、裁剪。定義一個常數(shù)n= 1即從第一個連通域標(biāo)記開始比較。令Lh為粗定位結(jié)果的高度,Lw為剪切后圖像的寬度。
第一步:找出第一個連通域的所有非零像素點坐標(biāo),然后計算該連通域的高度H1、寬度W1、寬高比R1、面積S1,判斷是否為最后一個連通域,若不是則尋找下一個連通域。
第二步:計算第二個連通域的高度H2、寬度W2、寬高比R2、面積S2。
第三步:對這兩個連通域進行拼接,計算拼接連通域的拼接高度Uh、寬度Uw、寬高比Ur。再計算出兩連通域的重疊高度Oh、寬度Ow、面積Os。
第四步:若兩個連通域重疊,則根據(jù)式(9)和式(10)判斷兩個連通域是否屬于同一字符。若兩式同時滿足,則判定為同一字符,若Ow<-(Lw/7)則表示兩連通域相距較遠,判定不屬于同一字符,若0<Ow則表示兩連通域重疊,且滿足式(11)或式(12),則判定兩連通域?qū)儆谕蛔址?/p>
第五步:經(jīng)過第四步的判斷,若兩個連通域為同一字符,則進行拼接,再根據(jù)返回的坐標(biāo)裁剪字符,若不是同一字符,則裁剪第一個連通域,再對常數(shù)n加1后返回第一步。
經(jīng)過多次循環(huán),可得到分割后的獨立字符,如圖9所示,再對其進行后續(xù)操作。
圖9 數(shù)字和漢字的字符分割結(jié)果
裁剪后的圖像尺寸可能不一致,與模板圖像的尺寸也有差別,所以將裁剪后的圖像和模板圖像歸一化[11],變換成相同的尺寸圖像以便模板匹配操作。對于二值化圖像本文采用最近鄰插值法,設(shè)圖像像素點坐標(biāo)為(i,j) ,所求灰度值為,公式如(13)~(15)所示。
模板匹配法[12]是數(shù)字圖像處理中的經(jīng)典算法,本文使用了自主建立的字庫T(i,j) ,字庫文件中包含了所需的數(shù)字模板和漢字的字符模板。下面根據(jù)公式(16)來計算相似度Ck,公式中的f(i,j)為所需識別的身份證號碼圖像,為所需識別身份證號碼的平均灰度,若輸入為二值化圖像則代表了圖像所有像素點的平均值。模板的表達函數(shù)由fk(i,j)和表示,分割后獨立字符和模板的寬度和高度分別表示為M和N,令M=36,N=23。使用循環(huán)對比的方式對比每一幅身份證圖像與字庫文件每一幅圖像之間的相似度Ck,Ck的數(shù)值越大,代表匹配程度越高,則最大值所對應(yīng)的模板就認定為最后的識別結(jié)果。
定義的一串字符串包括了數(shù)字、字母和漢字,通過對識別出的模板圖像結(jié)果添加返回值的方式,定位到字符串編號,再進行字符拼接,得到身份證號碼的識別內(nèi)容。
本文提出的基于模板匹配的身份證號碼識別方法,在MATLAB 2020b軟件,Core i7-7700處理器,16G內(nèi)存和500G硬盤的計算機硬件環(huán)境下,設(shè)計一個邏輯清晰、結(jié)構(gòu)簡單的數(shù)字識別仿真平臺,實現(xiàn)身份證號碼自動識別功能。在均勻光照、強光照和弱光照下采集30張身份證圖像,使這些圖像的明暗差異較大。分別采用BP神經(jīng)網(wǎng)絡(luò)、Keras框架下的卷積神經(jīng)網(wǎng)絡(luò)與本文方法作對比實驗,測試結(jié)果如表1所示。
表1 身份證號碼識別正確率
在均勻光照條件下,本文提出的基于模板匹配的身份證號碼識別方法正確率最高為96.7%,而采用BP神經(jīng)網(wǎng)絡(luò)和Keras框架下的卷積神經(jīng)網(wǎng)絡(luò)方法,身份證號碼識別正確率分別為86.7%和80.0%。在光照不均勻的強光照和弱光照下的身份證號碼識別,三種方法識別結(jié)果的正確率都比較低,均在75%以下。由實驗結(jié)果可知,身份證號碼識別對光照條件有一定要求,只有在均勻光照條件下正確率較高,強光照和弱光照都不利于身份證號碼識別。
本文提出了一種基于模板匹配的身份證號碼識別方法,該方法通過對身份證圖像的灰度化、二值化和感興趣區(qū)域(ROI)提取等操作,完成對身份證圖像的預(yù)處理,實現(xiàn)18個數(shù)字和字符分割,通過對分割后的字符圖像進行歸一化處理,得到與模板相同尺寸的圖像,最后進行模板匹配,計算號碼識別結(jié)果。實驗結(jié)果表明該方法在均勻光照條件下,身份證號碼的識別準確率較高,驗證了方法的可行性和有效性。