賈樹林,郭 磊,馬雙寶,董玉婕,林 巍
基于模式匹配的銀行卡卡號(hào)定位與識(shí)別算法
賈樹林1,郭 磊2,馬雙寶*1,董玉婕1,林 巍1
(1. 武漢紡織大學(xué) 機(jī)械工程與自動(dòng)化學(xué)院,湖北 武漢 430200;2. 陸軍裝備部 駐武漢地區(qū)第二軍事代表室,湖北 武漢 430200)
針對(duì)銀行卡數(shù)字卡號(hào)定位與識(shí)別的問(wèn)題,本文提出一種基于模式匹配的銀行卡數(shù)字卡號(hào)定位與識(shí)別算法。通過(guò)對(duì)銀行卡數(shù)字圖像進(jìn)行圖像灰度化、圖像二值化、形態(tài)學(xué)操作、邊緣檢測(cè)、提取輪廓及區(qū)域定位等操作,對(duì)銀行卡數(shù)字進(jìn)行精準(zhǔn)定位,對(duì)定位后的銀行卡數(shù)字區(qū)域進(jìn)行圖像分割,將銀行卡中分離的每一個(gè)數(shù)字圖像分別與模板圖像通過(guò)相關(guān)系數(shù)匹配法進(jìn)行匹配,最終得到經(jīng)過(guò)識(shí)別后對(duì)應(yīng)的銀行卡數(shù)字。在測(cè)試數(shù)據(jù)集上噴涂型銀行卡數(shù)字識(shí)別正確率為94.4%,激凸印刷型銀行卡數(shù)字識(shí)別正確率為89.5%,在總體樣本中銀行卡數(shù)字識(shí)別正確率為91.9%。經(jīng)過(guò)測(cè)試可得出該算法能夠有效地識(shí)別銀行卡卡號(hào),具有一定的市場(chǎng)價(jià)值。
銀行卡數(shù)字識(shí)別;模式匹配;圖像分割;邊緣檢測(cè)
隨著移動(dòng)互聯(lián)網(wǎng)技術(shù)的發(fā)展,電子商務(wù)也越來(lái)越受到人們的歡迎,網(wǎng)上支付也成為人們的主要付款方式之一[1]。而網(wǎng)上支付大多數(shù)會(huì)涉及綁定銀行卡的操作,傳統(tǒng)方式為人工輸入,但用戶逐個(gè)輸入銀行卡數(shù)字效率較低、且容易出錯(cuò)[2],需要反復(fù)核對(duì)銀行卡號(hào)是否輸入正確才可完成,該方式大大降低了用戶體驗(yàn)。李尚林[3]提出了基于CNN的銀行卡數(shù)字識(shí)別方法,卷積神經(jīng)網(wǎng)絡(luò)CNN雖然無(wú)需手動(dòng)選取特征,可以達(dá)到自動(dòng)訓(xùn)練的效果,但是該網(wǎng)絡(luò)本身是一種難以解釋的“黑箱模型”,且需要大量樣本進(jìn)行訓(xùn)練;梁淑芬[6]提出了基于深度學(xué)習(xí)的數(shù)字識(shí)別模塊在安卓系統(tǒng)的實(shí)現(xiàn),文中采用LeNet網(wǎng)絡(luò)模型進(jìn)行數(shù)字識(shí)別,LeNet網(wǎng)絡(luò)模型訓(xùn)練時(shí)需要大量數(shù)據(jù)集,由于目前沒(méi)有公開的銀行卡數(shù)據(jù)集,故該方法的性能受到限制;胡瀟晗[13]提出了基于VGG網(wǎng)絡(luò)架構(gòu)的銀行卡識(shí)別模型,VGG網(wǎng)絡(luò)架構(gòu)模型較大、參數(shù)量較多、模型計(jì)算較為復(fù)雜,且訓(xùn)練VGG模型同樣需要大量數(shù)據(jù)集,基于目前還尚未有公開的銀行卡數(shù)據(jù)集提供給用戶使用,并且銀行卡數(shù)據(jù)較為敏感、難以大量獲取,故本文提出一種基于模式匹配的銀行卡數(shù)字定位與識(shí)別算法,以實(shí)現(xiàn)銀行卡卡號(hào)的自動(dòng)識(shí)別功能,該方法簡(jiǎn)單易操作,且計(jì)算量非常小,易于理解。
對(duì)銀行卡數(shù)字進(jìn)行識(shí)別,首先要確定銀行卡數(shù)字在銀行卡中所處的具體位置,而銀行卡表面可能含有其他背景圖案,會(huì)對(duì)銀行卡數(shù)字的定位起到一定的干擾作用,故能否對(duì)銀行卡數(shù)字進(jìn)行準(zhǔn)確定位是銀行卡數(shù)字能否準(zhǔn)確識(shí)別的重要前提。
通常情況下拍攝或讀取的銀行卡圖像為彩色圖像,即為RGB空間的圖像,圖像中每個(gè)像素點(diǎn)的色彩由R、G、B三個(gè)分量值共同決定[4]。一般每個(gè)分量各占一個(gè)字節(jié)。若要對(duì)彩色圖像進(jìn)行處理,則需要對(duì)三個(gè)分量值進(jìn)行計(jì)算,計(jì)算量較大。但彩色圖像對(duì)應(yīng)的灰度圖像則只有8位的圖像深度,計(jì)算量減少,且灰度圖像雖然丟失了一些顏色等級(jí)的信息,但是從整幅圖像的整體和局部的色彩以及亮度等級(jí)分布特征來(lái)看,灰度圖的描述與彩色圖的描述是一樣的[5]。如圖1所示為銀行卡彩色圖,如圖2所示為銀行卡灰度圖。

圖1 銀行卡彩色圖

圖2 銀行卡灰度圖

圖像的二值化,即將圖像灰度化得到圖像的像素點(diǎn)的灰度值設(shè)置為0或者255,0表示黑色,255表示白色,將整幅圖像呈現(xiàn)為明顯的只有黑色或者白色的效果[6]。
銀行卡圖像中含有要識(shí)別的銀行卡數(shù)字,背景圖案以及其他噪聲,為了更好的將銀行卡數(shù)字提取出來(lái),本文采用全局二值化。通過(guò)設(shè)定閾值T,將銀行卡圖像分為兩部分,將大于閾值T的像素值設(shè)定為255,即白色;將小于閾值T的像素值設(shè)定為0,即黑色。具體關(guān)系如公式(2)所示。如圖3所示為銀行卡經(jīng)過(guò)二值化后圖像。


圖4 銀行卡禮帽操作后圖像
形態(tài)學(xué)操作一般是對(duì)二值化圖像進(jìn)行的操作。包括膨脹、腐蝕、開運(yùn)算、閉運(yùn)算、禮帽和黑帽等。腐蝕會(huì)將前景物體的邊界腐蝕,卷積核沿著圖像滑動(dòng),如果與卷積核對(duì)應(yīng)的原圖像的所有像素值都是1,則中心元素保持原來(lái)的像素值,否則變?yōu)榱恪=?jīng)過(guò)腐蝕后,前景物體會(huì)變小,整幅圖像的白色區(qū)域會(huì)變少,有利于去除白噪聲[7]。膨脹與腐蝕相反,與卷積核對(duì)應(yīng)的原圖像中的像素值只要有一個(gè)值為1,中心元素的像素值即為1。膨脹會(huì)增加圖像中的白色區(qū)域。
開運(yùn)算是先進(jìn)行腐蝕,再膨脹。閉運(yùn)算是先進(jìn)行膨脹,再腐蝕。禮帽是原始圖像與進(jìn)行開運(yùn)算后得到的圖像之差。將得到的銀行卡二值化圖像進(jìn)行禮帽操作,可以更加突出明亮白色區(qū)域。如圖4所示為銀行卡經(jīng)過(guò)禮帽操作后圖像。
對(duì)銀行卡禮帽操作后的圖像進(jìn)行邊緣檢測(cè),進(jìn)一步確定銀行卡數(shù)字的位置。本文使用Sobel算子進(jìn)行檢測(cè)。



則所得梯度的大小為:


同時(shí)將計(jì)算所得的算子進(jìn)行歸一化處理,具體如下:


通過(guò)對(duì)銀行卡禮帽操作后的圖像進(jìn)行Sobel算子邊緣檢測(cè)后,可以進(jìn)一步將符合條件的邊緣檢測(cè)出來(lái)。如圖5所示為銀行卡經(jīng)過(guò)Sobel算子邊緣檢測(cè)后的圖像。對(duì)邊緣檢測(cè)后的圖像進(jìn)行兩次閉運(yùn)算操作,可以將分離的數(shù)字連在一起,便于進(jìn)行輪廓的提取。如圖6所示為邊緣檢測(cè)圖像經(jīng)過(guò)閉運(yùn)算后所得圖像。

圖5 邊緣檢測(cè)后圖像

圖6 邊緣檢測(cè)圖像經(jīng)過(guò)閉運(yùn)算后圖像
對(duì)圖6中經(jīng)過(guò)閉運(yùn)算后的圖像進(jìn)行輪廓提取,將含有銀行卡數(shù)字的區(qū)域和銀行卡背景分離,同時(shí)計(jì)算輪廓的外接矩形。由于在二值化圖像中進(jìn)行輪廓標(biāo)記不易看清,故將所標(biāo)記的輪廓在原彩色圖像中對(duì)應(yīng)位置進(jìn)行顯示,如圖7所示為輪廓標(biāo)記在原彩色圖像中顯示圖像。
由圖7可看出,所提取輪廓中不僅含有銀行卡數(shù)字圖像區(qū)域,還含有其他字符圖像區(qū)域,故要對(duì)所提取輪廓進(jìn)行過(guò)濾篩選,以此進(jìn)一步對(duì)銀行卡數(shù)字區(qū)域進(jìn)行定位。

圖7 輪廓標(biāo)記圖像

圖8 銀行卡數(shù)字區(qū)域





則通過(guò)以上篩選條件(10)、(11)、(12)可以將銀行卡數(shù)字區(qū)域篩選出來(lái),將其它字符區(qū)域過(guò)濾掉。如圖8所示為經(jīng)過(guò)篩選后銀行卡數(shù)字區(qū)域。
本文采用模板匹配法對(duì)銀行卡數(shù)字進(jìn)行識(shí)別。模板匹配法是將待識(shí)別的單個(gè)字符與匹配庫(kù)中的模板逐一進(jìn)行匹配,直到找到與待識(shí)別字符匹配效果最佳的模板[9]。
由圖8可知經(jīng)過(guò)銀行卡數(shù)字定位得到的銀行卡數(shù)字區(qū)域?yàn)?個(gè)區(qū)域塊,每個(gè)區(qū)域塊的數(shù)字連在一起,若要使用模板匹配法對(duì)銀行卡數(shù)字進(jìn)行識(shí)別,需將銀行卡數(shù)字區(qū)域中的每一個(gè)數(shù)字分離開來(lái)[10]。
以銀行卡數(shù)字區(qū)域中第一個(gè)區(qū)域塊為例。首先對(duì)第一個(gè)區(qū)域塊圖像進(jìn)行二值化操作,并再次進(jìn)行輪廓檢測(cè),找到每個(gè)輪廓后將其進(jìn)行記錄與顯示。將第二、第三、第四區(qū)域塊與第一個(gè)區(qū)域塊進(jìn)行相同的操作。如表1所示為第一、第二、第三、第四區(qū)域原圖像與每個(gè)區(qū)域分離后各數(shù)字圖像。

表1 各個(gè)區(qū)域原圖像與對(duì)應(yīng)分離后各數(shù)字圖像
首先讀取模板圖像,并對(duì)模板圖像進(jìn)行灰度化操作和二值化操作,對(duì)二值化操作后的圖像進(jìn)行輪廓檢測(cè),并計(jì)算每個(gè)輪廓的外接矩形[11]。如表2所示為原圖經(jīng)過(guò)二值化操作、輪廓檢測(cè)后所對(duì)應(yīng)圖像。由于在二值化圖像中進(jìn)行輪廓標(biāo)記不易看清,故將所標(biāo)記的輪廓在原圖像中對(duì)應(yīng)位置進(jìn)行顯示。

表2 不同圖像類型所對(duì)應(yīng)圖像




將銀行卡數(shù)字區(qū)域中分離的每一個(gè)數(shù)字圖像與模板圖像中檢測(cè)到的10個(gè)輪廓圖像設(shè)定為相同尺寸大小。同時(shí),將銀行卡中分離的每一個(gè)數(shù)字圖像分別與模板中檢測(cè)到的10個(gè)輪廓圖像通過(guò)相關(guān)系數(shù)匹配法進(jìn)行匹配,通過(guò)計(jì)算,相關(guān)系數(shù)最大的值所對(duì)應(yīng)的模板輪廓數(shù)字即為銀行卡數(shù)字圖像所對(duì)應(yīng)的數(shù)字。對(duì)于模板圖像來(lái)說(shuō),從左到右檢測(cè)到的每一個(gè)輪廓分別與數(shù)字0-9一一對(duì)應(yīng),則可以知道銀行卡中每一個(gè)數(shù)字圖像所對(duì)應(yīng)的真實(shí)數(shù)字。如圖9所示為銀行卡數(shù)字經(jīng)過(guò)模板匹配后識(shí)別的效果圖。

圖9 銀行卡數(shù)字識(shí)別效果圖
基于目前還尚未有公開的銀行卡數(shù)據(jù)集提供給用戶使用,并且銀行卡數(shù)據(jù)較為敏感、難以大量獲取,本文搜集了作者自己的數(shù)據(jù)集,數(shù)據(jù)包含37張銀行卡圖像,其中18張噴涂型銀行卡圖像,19張激凸印刷型銀行卡圖像。如表3所示為測(cè)試結(jié)果。

表3 測(cè)試結(jié)果
經(jīng)過(guò)測(cè)試可知,對(duì)于噴涂型銀行卡,銀行卡數(shù)字識(shí)別正確率為94.4%;對(duì)于激凸印刷型銀行卡,銀行卡數(shù)字識(shí)別正確率為89.5%;對(duì)于樣本總量,銀行卡數(shù)字識(shí)別正確率為91.9%,且對(duì)背景較為復(fù)雜的銀行卡圖像進(jìn)行識(shí)別時(shí)會(huì)出現(xiàn)錯(cuò)誤。
本文提出了一種基于模式匹配的銀行卡數(shù)字定位與識(shí)別算法。通過(guò)對(duì)銀行卡俯視圖圖像進(jìn)行圖像灰度化、圖像二值化、形態(tài)學(xué)操作、邊緣檢測(cè)和提取輪廓等操作對(duì)銀行卡數(shù)字進(jìn)行定位,對(duì)定位后的銀行卡數(shù)字區(qū)域進(jìn)行圖像分割,得到分離后的各個(gè)數(shù)字圖像區(qū)域,同時(shí)對(duì)模板圖像進(jìn)行處理,將銀行卡中分離的每一個(gè)數(shù)字圖像分別與模板中檢測(cè)到的10個(gè)輪廓圖像通過(guò)相關(guān)系數(shù)匹配法進(jìn)行匹配,最終得到經(jīng)過(guò)識(shí)別后對(duì)應(yīng)的銀行卡數(shù)字。經(jīng)過(guò)測(cè)試,在自己制作的數(shù)據(jù)集上,噴涂型銀行卡數(shù)字識(shí)別正確率為94.4%,激凸印刷型銀行卡數(shù)字識(shí)別正確率為89.5%,對(duì)于樣本總量,銀行卡數(shù)字識(shí)別正確率為91.9%。驗(yàn)證了該算法在銀行卡識(shí)別過(guò)程中的合理性和有效性,該算法在識(shí)別背景圖像較為復(fù)雜的銀行卡時(shí)具有一定的局限性。
[1] 董延華, 陳中華, 宋和燁, 等. 改進(jìn)特征匹配算法在銀行卡號(hào)識(shí)別中的應(yīng)用[J]. 吉林大學(xué)學(xué)報(bào)(理學(xué)版), 2018, 56(01): 126-129.
[2] 李志森, 陳曉榮. 基于Halcon的銀行卡卡號(hào)識(shí)別[J]. 電子科技, 2017, 30(09):56-59.
[3] 李尚林, 王魯達(dá), 劉東. 基于CNN的銀行卡數(shù)字識(shí)別方法[J]. 圖學(xué)學(xué)報(bào), 2020, 41(01):81-87.
[4] 董延華, 陳中華, 蔡喜欣, 等. 基于OpenCV的銀行卡號(hào)識(shí)別算法研究[J].吉林師范大學(xué)學(xué)報(bào)(自然科學(xué)版), 2017, 38(03): 120-123.
[5] 俞新星, 任勇, 史夢(mèng)安, 等. 基于數(shù)字圖像處理的銀行卡號(hào)識(shí)別算法研究[J]. 電腦與信息技術(shù), 2020, 28(03):42-46.
[6] 梁淑芬, 胡帥花, 秦傳波, 等. 基于深度學(xué)習(xí)的數(shù)字識(shí)別模塊在安卓系統(tǒng)的實(shí)現(xiàn)[J]. 五邑大學(xué)學(xué)報(bào)(自然科學(xué)版), 2017, 31(01):40-45.
[7] 李美玲, 張俊陽(yáng). 基于計(jì)算機(jī)視覺(jué)的身份證號(hào)碼識(shí)別算法[J]. 電子世界, 2017, (17):11-12.
[8] 涂亞飛. 銀行卡號(hào)字符的分割與識(shí)別算法研究[D]. 北京:北京交通大學(xué), 2017.
[9] 孟菲. 基于Gabor特征的銀行卡號(hào)識(shí)別算法研究[D]. 大連:大連海事大學(xué), 2017.
[10] CAI S B,WEN J C,XU H L,et al. Bank card and ID card number recognition in android financial APP[M]. Lecture Notes in Computer Science, Cham: Springer International Publishing, 2017. 205-213.
[11] 鐘彩. 模板匹配算法在車牌字符識(shí)別中的應(yīng)用[J]. 計(jì)算機(jī)光盤軟件與應(yīng)用, 2014, 17(13):36+38.
[12] 武威. 基于模板匹配與結(jié)構(gòu)特征的字符識(shí)別算法研究[D]. 鄭州:鄭州大學(xué), 2015.
[13] 胡瀟晗, 楊立. 基于深度學(xué)習(xí)的銀行卡號(hào)識(shí)別系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J]. 信息技術(shù)與信息化, 2020, (01):76-78.
Bank Card Number Location and Recognition Algorithm based on Pattern Matching
JIA Shu-lin1, GUO Lei2, MA Shuang-bao1, DONG Yu-jie1, LIN Wei1
(1 School of Mechanical Engineering and Automation, Wuhan Textile University, Wuhan Hubei 430200, China; 2 The Second Military Representative Office of the Military Representative Office of the Army Equipment Department in Wuhan, Wuhan Hubei 430200, China)
Aiming at the problem of bank card digital card number location and recognition, this paper proposes a pattern matching-based algorithm for locating and identifying the digital card numbers of bank cards. Accurate positioning of bank card digits through image greyscale, image binarization, morphological operations, edge detection, extraction of contours and regional positioning of bank card digital images, and perform image segmentation on the bank card digital area after positioning.Through the correlation coefficient matching method, each digital image separated in the bank card is matched with the template image, and finally the corresponding bank card number after identification is obtained. On the test data set, the accuracy rate of the spray-type bank card number recognition was 94.4%, and the accuracy rate of the laser-printed bank card number recognition was 89.5%. In the overall sample, the accuracy rate of bank card number recognition was 91.9%. After testing, it can be concluded that the algorithm can effectively identify bank card numbers and has some market value.
bank card digital recognition; image processing; image segmentation; edge detection
馬雙寶(1979-),男,副教授,博士,研究方向:智能檢測(cè)與控制.
大學(xué)生創(chuàng)新創(chuàng)業(yè)項(xiàng)目(202010495017,S202010495050);武漢紡織大學(xué)研究生教學(xué)改革與研究項(xiàng)目(2021-2):湖北省高校學(xué)生工作精品項(xiàng)目和實(shí)踐育人特色項(xiàng)目(2019XGJPB2009).
TP751
A
2095-414X(2021)06-0060-06