基于模式匹配的银行卡卡号定位与识别算法

2022-01-04 11:53贾树林马双宝董玉婕
武汉纺织大学学报 2021年6期
关键词:数字图像轮廓灰度

贾树林,郭 磊,马双宝,董玉婕,林 巍

基于模式匹配的银行卡卡号定位与识别算法

贾树林1,郭 磊2,马双宝*1,董玉婕1,林 巍1

(1. 武汉纺织大学 机械工程与自动化学院,湖北 武汉 430200;2. 陆军装备部 驻武汉地区第二军事代表室,湖北 武汉 430200)

针对银行卡数字卡号定位与识别的问题,本文提出一种基于模式匹配的银行卡数字卡号定位与识别算法。通过对银行卡数字图像进行图像灰度化、图像二值化、形态学操作、边缘检测、提取轮廓及区域定位等操作,对银行卡数字进行精准定位,对定位后的银行卡数字区域进行图像分割,将银行卡中分离的每一个数字图像分别与模板图像通过相关系数匹配法进行匹配,最终得到经过识别后对应的银行卡数字。在测试数据集上喷涂型银行卡数字识别正确率为94.4%,激凸印刷型银行卡数字识别正确率为89.5%,在总体样本中银行卡数字识别正确率为91.9%。经过测试可得出该算法能够有效地识别银行卡卡号,具有一定的市场价值。

银行卡数字识别;模式匹配;图像分割;边缘检测

0 引言

随着移动互联网技术的发展,电子商务也越来越受到人们的欢迎,网上支付也成为人们的主要付款方式之一[1]。而网上支付大多数会涉及绑定银行卡的操作,传统方式为人工输入,但用户逐个输入银行卡数字效率较低、且容易出错[2],需要反复核对银行卡号是否输入正确才可完成,该方式大大降低了用户体验。李尚林[3]提出了基于CNN的银行卡数字识别方法,卷积神经网络CNN虽然无需手动选取特征,可以达到自动训练的效果,但是该网络本身是一种难以解释的“黑箱模型”,且需要大量样本进行训练;梁淑芬[6]提出了基于深度学习的数字识别模块在安卓系统的实现,文中采用LeNet网络模型进行数字识别,LeNet网络模型训练时需要大量数据集,由于目前没有公开的银行卡数据集,故该方法的性能受到限制;胡潇晗[13]提出了基于VGG网络架构的银行卡识别模型,VGG网络架构模型较大、参数量较多、模型计算较为复杂,且训练VGG模型同样需要大量数据集,基于目前还尚未有公开的银行卡数据集提供给用户使用,并且银行卡数据较为敏感、难以大量获取,故本文提出一种基于模式匹配的银行卡数字定位与识别算法,以实现银行卡卡号的自动识别功能,该方法简单易操作,且计算量非常小,易于理解。

1 银行卡数字定位

对银行卡数字进行识别,首先要确定银行卡数字在银行卡中所处的具体位置,而银行卡表面可能含有其他背景图案,会对银行卡数字的定位起到一定的干扰作用,故能否对银行卡数字进行准确定位是银行卡数字能否准确识别的重要前提。

1.1 图像灰度化

通常情况下拍摄或读取的银行卡图像为彩色图像,即为RGB空间的图像,图像中每个像素点的色彩由R、G、B三个分量值共同决定[4]。一般每个分量各占一个字节。若要对彩色图像进行处理,则需要对三个分量值进行计算,计算量较大。但彩色图像对应的灰度图像则只有8位的图像深度,计算量减少,且灰度图像虽然丢失了一些颜色等级的信息,但是从整幅图像的整体和局部的色彩以及亮度等级分布特征来看,灰度图的描述与彩色图的描述是一样的[5]。如图1所示为银行卡彩色图,如图2所示为银行卡灰度图。

图1 银行卡彩色图

图2 银行卡灰度图

1.2 图像二值化

图像的二值化,即将图像灰度化得到图像的像素点的灰度值设置为0或者255,0表示黑色,255表示白色,将整幅图像呈现为明显的只有黑色或者白色的效果[6]。

银行卡图像中含有要识别的银行卡数字,背景图案以及其他噪声,为了更好的将银行卡数字提取出来,本文采用全局二值化。通过设定阈值T,将银行卡图像分为两部分,将大于阈值T的像素值设定为255,即白色;将小于阈值T的像素值设定为0,即黑色。具体关系如公式(2)所示。如图3所示为银行卡经过二值化后图像。

图4 银行卡礼帽操作后图像

1.3 形态学操作

形态学操作一般是对二值化图像进行的操作。包括膨胀、腐蚀、开运算、闭运算、礼帽和黑帽等。腐蚀会将前景物体的边界腐蚀,卷积核沿着图像滑动,如果与卷积核对应的原图像的所有像素值都是1,则中心元素保持原来的像素值,否则变为零。经过腐蚀后,前景物体会变小,整幅图像的白色区域会变少,有利于去除白噪声[7]。膨胀与腐蚀相反,与卷积核对应的原图像中的像素值只要有一个值为1,中心元素的像素值即为1。膨胀会增加图像中的白色区域。

开运算是先进行腐蚀,再膨胀。闭运算是先进行膨胀,再腐蚀。礼帽是原始图像与进行开运算后得到的图像之差。将得到的银行卡二值化图像进行礼帽操作,可以更加突出明亮白色区域。如图4所示为银行卡经过礼帽操作后图像。

1.4 边缘检测

对银行卡礼帽操作后的图像进行边缘检测,进一步确定银行卡数字的位置。本文使用Sobel算子进行检测。

则所得梯度的大小为:

同时将计算所得的算子进行归一化处理,具体如下:

通过对银行卡礼帽操作后的图像进行Sobel算子边缘检测后,可以进一步将符合条件的边缘检测出来。如图5所示为银行卡经过Sobel算子边缘检测后的图像。对边缘检测后的图像进行两次闭运算操作,可以将分离的数字连在一起,便于进行轮廓的提取。如图6所示为边缘检测图像经过闭运算后所得图像。

图5 边缘检测后图像

图6 边缘检测图像经过闭运算后图像

1.5 提取轮廓

对图6中经过闭运算后的图像进行轮廓提取,将含有银行卡数字的区域和银行卡背景分离,同时计算轮廓的外接矩形。由于在二值化图像中进行轮廓标记不易看清,故将所标记的轮廓在原彩色图像中对应位置进行显示,如图7所示为轮廓标记在原彩色图像中显示图像。

由图7可看出,所提取轮廓中不仅含有银行卡数字图像区域,还含有其他字符图像区域,故要对所提取轮廓进行过滤筛选,以此进一步对银行卡数字区域进行定位。

图7 轮廓标记图像

图8 银行卡数字区域

1.6 定位银行卡数字区域

则通过以上筛选条件(10)、(11)、(12)可以将银行卡数字区域筛选出来,将其它字符区域过滤掉。如图8所示为经过筛选后银行卡数字区域。

2 银行卡数字识别

本文采用模板匹配法对银行卡数字进行识别。模板匹配法是将待识别的单个字符与匹配库中的模板逐一进行匹配,直到找到与待识别字符匹配效果最佳的模板[9]。

2.1 分离银行卡数字

由图8可知经过银行卡数字定位得到的银行卡数字区域为4个区域块,每个区域块的数字连在一起,若要使用模板匹配法对银行卡数字进行识别,需将银行卡数字区域中的每一个数字分离开来[10]。

以银行卡数字区域中第一个区域块为例。首先对第一个区域块图像进行二值化操作,并再次进行轮廓检测,找到每个轮廓后将其进行记录与显示。将第二、第三、第四区域块与第一个区域块进行相同的操作。如表1所示为第一、第二、第三、第四区域原图像与每个区域分离后各数字图像。

表1 各个区域原图像与对应分离后各数字图像

2.2 模板图像处理

首先读取模板图像,并对模板图像进行灰度化操作和二值化操作,对二值化操作后的图像进行轮廓检测,并计算每个轮廓的外接矩形[11]。如表2所示为原图经过二值化操作、轮廓检测后所对应图像。由于在二值化图像中进行轮廓标记不易看清,故将所标记的轮廓在原图像中对应位置进行显示。

表2 不同图像类型所对应图像

2.3 模板匹配

将银行卡数字区域中分离的每一个数字图像与模板图像中检测到的10个轮廓图像设定为相同尺寸大小。同时,将银行卡中分离的每一个数字图像分别与模板中检测到的10个轮廓图像通过相关系数匹配法进行匹配,通过计算,相关系数最大的值所对应的模板轮廓数字即为银行卡数字图像所对应的数字。对于模板图像来说,从左到右检测到的每一个轮廓分别与数字0-9一一对应,则可以知道银行卡中每一个数字图像所对应的真实数字。如图9所示为银行卡数字经过模板匹配后识别的效果图。

图9 银行卡数字识别效果图

3 测试

基于目前还尚未有公开的银行卡数据集提供给用户使用,并且银行卡数据较为敏感、难以大量获取,本文搜集了作者自己的数据集,数据包含37张银行卡图像,其中18张喷涂型银行卡图像,19张激凸印刷型银行卡图像。如表3所示为测试结果。

表3 测试结果

经过测试可知,对于喷涂型银行卡,银行卡数字识别正确率为94.4%;对于激凸印刷型银行卡,银行卡数字识别正确率为89.5%;对于样本总量,银行卡数字识别正确率为91.9%,且对背景较为复杂的银行卡图像进行识别时会出现错误。

4 总结

本文提出了一种基于模式匹配的银行卡数字定位与识别算法。通过对银行卡俯视图图像进行图像灰度化、图像二值化、形态学操作、边缘检测和提取轮廓等操作对银行卡数字进行定位,对定位后的银行卡数字区域进行图像分割,得到分离后的各个数字图像区域,同时对模板图像进行处理,将银行卡中分离的每一个数字图像分别与模板中检测到的10个轮廓图像通过相关系数匹配法进行匹配,最终得到经过识别后对应的银行卡数字。经过测试,在自己制作的数据集上,喷涂型银行卡数字识别正确率为94.4%,激凸印刷型银行卡数字识别正确率为89.5%,对于样本总量,银行卡数字识别正确率为91.9%。验证了该算法在银行卡识别过程中的合理性和有效性,该算法在识别背景图像较为复杂的银行卡时具有一定的局限性。

[1] 董延华, 陈中华, 宋和烨, 等. 改进特征匹配算法在银行卡号识别中的应用[J]. 吉林大学学报(理学版), 2018, 56(01): 126-129.

[2] 李志森, 陈晓荣. 基于Halcon的银行卡卡号识别[J]. 电子科技, 2017, 30(09):56-59.

[3] 李尚林, 王鲁达, 刘东. 基于CNN的银行卡数字识别方法[J]. 图学学报, 2020, 41(01):81-87.

[4] 董延华, 陈中华, 蔡喜欣, 等. 基于OpenCV的银行卡号识别算法研究[J].吉林师范大学学报(自然科学版), 2017, 38(03): 120-123.

[5] 俞新星, 任勇, 史梦安, 等. 基于数字图像处理的银行卡号识别算法研究[J]. 电脑与信息技术, 2020, 28(03):42-46.

[6] 梁淑芬, 胡帅花, 秦传波, 等. 基于深度学习的数字识别模块在安卓系统的实现[J]. 五邑大学学报(自然科学版), 2017, 31(01):40-45.

[7] 李美玲, 张俊阳. 基于计算机视觉的身份证号码识别算法[J]. 电子世界, 2017, (17):11-12.

[8] 涂亚飞. 银行卡号字符的分割与识别算法研究[D]. 北京:北京交通大学, 2017.

[9] 孟菲. 基于Gabor特征的银行卡号识别算法研究[D]. 大连:大连海事大学, 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] 钟彩. 模板匹配算法在车牌字符识别中的应用[J]. 计算机光盘软件与应用, 2014, 17(13):36+38.

[12] 武威. 基于模板匹配与结构特征的字符识别算法研究[D]. 郑州:郑州大学, 2015.

[13] 胡潇晗, 杨立. 基于深度学习的银行卡号识别系统设计与实现[J]. 信息技术与信息化, 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-),男,副教授,博士,研究方向:智能检测与控制.

大学生创新创业项目(202010495017,S202010495050);武汉纺织大学研究生教学改革与研究项目(2021-2):湖北省高校学生工作精品项目和实践育人特色项目(2019XGJPB2009).

TP751

A

2095-414X(2021)06-0060-06

猜你喜欢
数字图像轮廓灰度
航空滤光片阵列多光谱图像条带灰度调整算法
采用改进导重法的拓扑结构灰度单元过滤技术
基于Blob算法的多特征联合数字图像转换仿真
天津港智慧工作平台灰度发布系统和流程设计
Arduino小车巡线程序的灰度阈值优化方案
跟踪导练(三)
一种对矢量地图的理论研究
《数字图像处理》课程的驱动教学实践
数字图像取证
儿童筒笔画