CN109034145B - 基于OpenCV的银行卡号识别方法 - Google Patents
基于OpenCV的银行卡号识别方法 Download PDFInfo
- Publication number
- CN109034145B CN109034145B CN201810736445.4A CN201810736445A CN109034145B CN 109034145 B CN109034145 B CN 109034145B CN 201810736445 A CN201810736445 A CN 201810736445A CN 109034145 B CN109034145 B CN 109034145B
- Authority
- CN
- China
- Prior art keywords
- image
- card number
- bank card
- character
- area
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/10—Image acquisition
- G06V10/12—Details of acquisition arrangements; Constructional details thereof
- G06V10/14—Optical characteristics of the device performing the acquisition or on the illumination arrangements
- G06V10/141—Control of illumination
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/20—Image preprocessing
- G06V10/26—Segmentation of patterns in the image field; Cutting or merging of image elements to establish the pattern region, e.g. clustering-based techniques; Detection of occlusion
- G06V10/267—Segmentation of patterns in the image field; Cutting or merging of image elements to establish the pattern region, e.g. clustering-based techniques; Detection of occlusion by performing operations on regions, e.g. growing, shrinking or watersheds
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/20—Image preprocessing
- G06V10/28—Quantising the image, e.g. histogram thresholding for discrimination between background and foreground patterns
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V30/00—Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
- G06V30/10—Character recognition
- G06V30/14—Image acquisition
- G06V30/148—Segmentation of character regions
- G06V30/153—Segmentation of character regions using recognition of characters or words
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V30/00—Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
- G06V30/10—Character recognition
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Theoretical Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Character Input (AREA)
Abstract
本发明提出了一种基于OpenCV的银行卡号识别方法,用于解决现有技术中存在的卡号识别准确度较低的技术问题。实现步骤为:首先对银行卡图像进行灰度化,再区分强光照、中光照、弱光照和光照不均匀四种情况,针对不同情况使用不同的二值化算法,实现对银行卡图像的预处理;通过先膨胀腐蚀后轮廓提取的方法,实现获取二值化图像中的卡号区域图像;通过列投影法进行字符分割并进行归一化,实现对卡号区域二值化图像进行字符分割;通过模板匹配算法,实现对归一化后字符图像集进行字符识别。本发明属于数字图像处理技术领域,涉及一种银行卡号的识别方法,可应用于车牌识别、票据单号识别、证件号码识别等数字识别的场合。
Description
技术领域
本发明属于数字图像处理技术领域,涉及一种银行卡号的识别方法,具体涉及一种基于OpenCV的银行卡号识别方法,可应用于车牌识别、票据单号识别、证件号码识别等数字识别的场合。
背景技术
随着互联网金融的兴起,人们需要在各种终端中录入银行卡号,并绑定银行卡从而进行资金交易,在卡号的录入过程中,需要对拍摄或者预先保存的银行卡图像进行卡号识别,从而将识别结果实现录入。银行卡号识别方法首先将银行卡图像进行灰度化、二值化等预处理,再定位银行卡号,最后对银行卡号进行数字识别。
董延华等人2017年8月在吉林师范大学学报(自然科学版)的第38卷第3期上发表了一篇名为基于OpenCV的银行卡号识别算法研究的文章,公开了一种基于OpenCV的银行卡号识别方法,其主要步骤为,首先采用加权平均法将彩色的银行卡图像转化为灰度图,然后采用OpenCV中AdaptiveThreshold函数实现灰度图的二值化,实现对图像的预处理;采用OpenCV中cvCanny函数对二值化图像进行边缘检测,得到卡号中的多个字符图像边缘信息,实现银行卡号字符的分割;建立一个包含0~9数字的字符模版库,采用模板匹配字符识别法,将每个字符图像逐一与模板库中的字符模板进行比较,将最佳匹配作为结果输出,得到银行卡号,实现银行卡号的识别。该方法利用OpenCV跨平台数字图像处理函数库具有的开源、兼容性高、易自定义的特点,提高了银行卡号识别的速度,但由于二值化图像中卡号的清晰程度会直接影响字符分割和字符识别的效果,而该方法在图像预处理中没有考虑不同光照条件下的二值化处理,导致了不同光照条件下二值化图像中卡号清晰度较差,最终造成了整体的卡号识别准确度较低,同时由于该方法的字符分割是通过边缘检测实现的,如果银行卡的卡号区域有明显的图案或者花纹,会增大卡号字符分割的错误率,最终会导致卡号识别的准确度更低。
发明内容
本发明的目的在于克服上述现有技术存在的不足,提出了一种基于OpenCV的银行卡号识别方法,用于解决现有技术中存在的卡号识别准确度较低的技术问题。
为实现上述目的,本发明采取的技术方案为:
(1)对银行卡图像进行预处理:
(1a)利用OpenCV的cvtColor函数对预先存储的银行卡图像进行灰度化处理,得到灰度图像;
(1b)判断灰度图像光照强度的均匀性:
将灰度图像均匀划分为左右两个区域,并判断两个区域中像素点的不同灰度级别比例是否满足一定的误差范围,若是,则灰度图像为光照强度均匀图像,并执行步骤(1c),否则,灰度图像为光照强度非均匀图像,并执行步骤(1d);
(1c)对光照强度均匀图像进行二值化:
(1d)对光照强度非均匀图像进行二值化:
采用优化的Bernsen算法对光照强度非均匀图像进行二值化,得到二值化图像;
(2)获取二值化图像中的卡号区域图像:
(2a)采用OpenCV的morphologyEx函数对二值化图像进行闭运算,得到闭运算二值化图像;
(2b)对闭运算二值化图像进行膨胀腐蚀,得到膨胀腐蚀图像;
(2c)采用OpenCV中的findContours函数提取膨胀腐蚀图像的内外边缘轮廓信息,并通过银行卡的先验卡号位置信息,对膨胀腐蚀图像的内外边缘轮廓信息进行筛选,得到膨胀腐蚀图像卡号位置的矩形块轮廓;
(2d)根据膨胀腐蚀图像卡号位置的矩形块轮廓,确定二值化图像中卡号区域的上下边界,并对上下边界范围内的图像进行列扫描,得到包含完整卡号信息的卡号区域二值化图像;
(3)对卡号区域二值化图像进行字符分割:
(3a)对卡号区域二值化图像中的像素点按列方向投影,得到卡号区域的列投影拟合曲线图;
(3b)从列投影拟合曲线图中选取与预先设定的阈值相同的拟合点,并计算相邻拟合点横坐标的算术平均值,得到列投影拟合曲线图上纵坐标值小于阈值的算术平均值所对应的点,将这些点作为卡号字符之间的断点;
(3c)根据卡号字符之间的断点对卡号区域二值化图像进行字符分割,得到由与卡号字符顺序相同的多个字符图像组成的字符图像集,并采用OpenCV中的resize函数对字符图像集进行归一化,得到归一化后字符图像集;
(4)对归一化后字符图像集进行字符识别:
(4a)从微软系统中选取多种由0~9十位字模组成的数字模板,每种数字模板中字模的字体相同,各数字模板中字模的字体不同;
(4b)采用OpenCV中的MatchTemplate函数,计算归一化后字符图像集中每个字符图像与每种数字模板中每个字模的相似程度,并将与每个字符图像相似程度最高的字模所代表的数字作为每个字符图像的识别结果。
本发明与现有技术相比,具有以下优点:
1、本发明在对银行卡图像进行预处理中,首先对银行卡图像的光照是否均匀进行判断,光照均匀条件下再区分强光照、中光照和弱光照情况,然后对强光照、中光照、弱光照和光照不均匀四种情况进行不同的二值化处理,避免了现有技术中只采用OpenCV中AdaptiveThreshold函数实现图像的二值化处理导致的不同光照条件下二值化图像中卡号清晰度较差的缺陷,有效提高了卡号识别的准确度。
2、本发明在对卡号区域二值化图像进行字符分割中,通过列投影拟合曲线图中统计断点进行字符的分割,现有技术通过边缘检测直接进行银行卡号字符的分割。与现有技术相比,本发明在保证识别速度的前提下,避免图案花纹信息对卡号识别的干扰,进一步提高了卡号识别的准确度。
附图说明
图1为本发明的实现流程图;
图2为本发明的强光照条件下灰度图像;
图3为本发明的强光照条件下二值化图像;
图4为本发明的强光照条件下闭运算二值化图像;
图5为本发明的强光照条件下膨胀腐蚀图像;
图6为本发明的强光照条件下膨胀腐蚀图像卡号位置的矩形块轮廓图;
图7为本发明的强光照条件下卡号区域二值化图像;
图8为本发明的强光照条件下卡号区域的列投影拟合曲线图;
图9为本发明的强光照条件下字符识别的输出结果图;
图10为本发明的中光照条件下灰度图像;
图11为本发明的中光照条件下二值化图像;
图12为本发明的弱光照条件下灰度图像;
图13为本发明的弱光照条件下二值化图像;
图14为本发明的光照分布不均匀下灰度图像;
图15为本发明的光照分布不均匀下二值化图像。
具体实施方式
下面结合附图与具体实施例,对本发明作进一步详细阐述。
实施例1:强光照条件下银行卡号识别。
参照图1,基于OpenCV的银行卡号识别方法,包括以下步骤:
步骤1)对银行卡图像进行预处理:
步骤1a)利用OpenCV的cvtColor函数对预先存储的彩色银行卡图像进行灰度化处理,得到如图2所示灰度图像,从图2可以看出灰度图像中每个像素点的灰度等级是用8位二进制数进行存储,因此每个像素点的灰度范围为0~255,共有256种灰度等级,对图像进行灰度化可减少图像的存储空间,并有利于后续的图像处理;
步骤1b)判断灰度图像光照强度的均匀性:
将灰度等级均分为高中低三个级别,并分别计算灰度图像的左右两个区域中像素点高中低三个级别的比例,左右两个区域的三个灰度级别中有一个或者多个级别比例在5%的误差范围内,判定该灰度图像为光照强度均匀图像,并执行步骤(1c);
步骤1c)对光照强度均匀图像进行二值化:
当每个区域灰度等级大于倍最大灰度等级的像素点数量都占该区域所有像素点数量的70%以上时,判定银行卡图像为光照均匀条件下强光照图像,针对本实施案例,最大灰度等级为255,采用OpenCV中的最大类间方差OTSU算法对光照强度均匀图像进行二值化,得到光照均匀条件下强光照的二值化图像如图3所示,从图3可以看出二值化图像只呈现黑白两种视觉效果,并且本实施例是背景为白色,目标为黑色的二值化图像,凸显了卡号的轮廓,同时图像的二值化处理使图像的数据量大为减少,有利于后续图像的处理和分析。
最大类间方差OTSU算法是按图像的灰度特性,将图像分成背景和前景两部分,当背景和前景之间的类间方差越大,说明构成图像的两部分差别越大,而分割灰度等级阈值的类间方差最大意味着二值化的错分概率最小,因此当光照均匀条件下光照强时,使用最大类间方差OTSU算法进行二值化,二值化图像中卡号的显示最清晰。
步骤2)获取二值化图像中的卡号区域图像:
步骤2a)采用OpenCV的morphologyEx函数对二值化图像进行闭运算,得到闭运算二值化图像如图4所示,将图4与二值化图像图3相比可以看出,右上角孤立色块的干扰已经被消除,交通银行的图标、有效期限和银联标识等干扰信息都有所减少,并且闭运算操作没有影响卡号的显示,因此对二值化图像采用闭运算操作可以消除二值化图像中细小孤立的色块,减少无效信息的干扰;
步骤2b)针对背景为白色,目标为黑色的二值化图像,采用OpenCV的erode函数对闭运算二值化图像进行腐蚀;而针对背景为黑色,目标为白色的二值化图像,则应该采用OpenCV的dilate函数对闭运算二值化图像进行膨胀。
为了后续展示的方便,对图4利用二值化的颜色反转算法,转换为背景为黑色,目标为白色的闭运算二值化图像,采用OpenCV的dilate函数对背景为黑色,目标为白色的闭运算二值化图像进行膨胀得到膨胀腐蚀图像,膨胀腐蚀图像如图5所示,从图5可以看出卡号区域被连接形成一个矩形块轮廓,有利于后续的轮廓提取从而确定卡号的位置;
步骤2c)采用OpenCV中的findContours函数提取膨胀腐蚀图像的内外边缘轮廓信息,并通过银行卡的先验卡号位置信息,对膨胀腐蚀图像的内外边缘轮廓信息进行筛选,得到膨胀腐蚀图像卡号位置的矩形块轮廓图如图6所示,从图6可以看出此时图像中只包含一个矩形块轮廓,其余轮廓都已经通过银行卡的先验卡号位置信息被筛选掉了,从而定位了银行卡号的位置。
银行卡的先验卡号位置信息是通过对银行卡进行广泛的调研,确定的目前使用的银行卡中卡号在银行卡中的大致位置,从而利用该先验信息定位银行卡号的位置,银行卡的先验卡号位置信息包括银行卡的卡号区域位于银行卡宽度的15%~85%之间,卡号区域的长宽比大于5:1,且卡号区域的宽度占银行卡宽度的5%~30%,长度占银行卡长度的30%以上;
步骤2d)由于银行卡号是几串按照不同格式有序排列的数字字符,可能是6-13格式的字符串,也有可能是4-4-4-4格式的字符串,且银行卡号的位数也是不确定的,所以为了防止一个矩形块轮廓未包含完整的卡号信息,需要根据膨胀腐蚀图像卡号位置的矩形块轮廓,确定二值化图像中卡号区域的上下边界,并对上下边界范围内的图像进行列扫描,得到包含完整卡号信息的卡号区域二值化图像如图7所示,从图7可以看出只有完整的卡号信息“622262 0810009249067”,而图3中的其余图像区域都被消除,从而实现了对卡号区域图像的提取。
步骤3)对卡号区域二值化图像进行字符分割:
步骤3a)对卡号区域二值化图像中的像素点按列方向投影,得到卡号区域的列投影直方图,对列投影直方图进行拟合,得到卡号区域的列投影拟合曲线图如图8所示,从图8可以看出银行卡号的字符与字符之间有明显的间隔,这是由于银行卡在印制过程中,卡号的字符间距有严格的规定,从而为字符分割提供了便利;
步骤3b)从列投影拟合曲线图中选取与预先设定的阈值相同的拟合点,并计算相邻拟合点横坐标的算术平均值,得到列投影拟合曲线图上纵坐标值小于阈值的算术平均值所对应的点,将这些点作为卡号字符之间的断点,预先设定阈值的目的是为了防止由于图像残影等原因造成的字符粘连对字符分割的不良影响;
步骤3c)根据卡号字符之间的断点对卡号区域二值化图像进行字符分割,得到由与卡号字符顺序相同的多个字符图像组成的字符图像集,并采用OpenCV中的resize函数对字符图像集进行归一化,得到归一化后字符图像集。
归一化处理是将待识别图像按照一定标准加工处理,使其与字模图像尺寸相一致,从而方便后续的字符识别。
步骤4)对归一化后字符图像集进行字符识别:
步骤4a)从微软系统中选取多种由0~9十位字模组成的数字模板,每种数字模板中字模的字体相同,各数字模板中字模的字体不同;
步骤4b)采用OpenCV中的MatchTemplate函数,计算归一化后字符图像集中每个字符图像与每种数字模板中每个字模的相似程度,并将与每个字符图像相似程度最高的字模所代表的数字作为每个字符图像的识别结果,字符识别的输出结果图如图9所示,从图9可以看出每个字符均识别正确,完整的卡号识别结果为622262 0810009249067,与银行卡的灰度图像图2对比可知卡号识别完全正确。
实施例2:中光照条件下银行卡号识别。
本实施例与实施例1的其他步骤相同,仅仅步骤1)作了调整。
步骤1)对银行卡图像进行预处理:
步骤1a)利用OpenCV的cvtColor函数对预先存储的彩色银行卡图像进行灰度化处理,得到灰度图像如图10所示,从图10可以看出灰度图像中每个像素点的灰度等级是用8位二进制数进行存储,因此每个像素点的灰度范围为0~255,共有256种灰度等级,对图像进行灰度化可减少图像的存储空间,并有利于后续的图像处理;同时将图10与图2进行对比可以看出,中光照条件下比强光照条件下灰度图像的灰度等级普遍更低,呈现的视觉效果更黑;
步骤1b)判断灰度图像光照强度的均匀性:
将灰度等级均分为高中低三个级别,并分别计算灰度图像的左右两个区域中像素点高中低三个级别的比例,左右两个区域的三个灰度级别中有一个或者多个级别比例在5%的误差范围内,判定该灰度图像为光照强度均匀图像,并执行步骤(1c);
步骤1c)对光照强度均匀图像进行二值化:
当两个区域灰度等级小于倍并大于倍最大灰度等级的像素点数量都占该区域所有像素点数量的70%以上时,判定银行卡图像为光照均匀条件下中光照图像,针对本实施案例,最大灰度等级为255,采用最佳阈值迭代法对光照强度均匀图像进行二值化,得到光照均匀条件下中光照的二值化图像如图11所示,从图11可以看出此时的二值化图像由于光照变暗,图像中的孤立细小的色块变多,但卡号区域的字符显示并没有受到任何影响,卡号的显示依然很清晰,说明最佳阈值迭代法对中光照条件下银行卡图像二值化处理有较好的效果。
最佳阈值迭代法是一种基于直方图的图像全局二值化算法,该算法首先假定一个阈值,然后计算在该阈值下图像前景和背景的中心值,将前景和背景中心值的平均值与假定的阈值进行比较,若相同,则迭代中止并以此值作为最终阈值进行全局二值化,否则,按照算法的迭代准则继续计算新的阈值并重复上述步骤。因此当图像中背景与目标的灰度等级差距并不明显时,使用最佳阈值迭代法比使用最大类间方差OTSU算法对卡号的显示效果更好。
实施例3:弱光照条件下银行卡号识别。
本实施例与实施例1的其他步骤相同,仅仅步骤1)作了调整。
步骤1)对银行卡图像进行预处理:
步骤1a)利用OpenCV的cvtColor函数对预先存储的彩色银行卡图像进行灰度化处理,得到灰度图像如图12所示,从图12可以看出灰度图像中每个像素点的灰度等级是用8位二进制数进行存储,因此每个像素点的灰度范围为0~255,共有256种灰度等级,对图像进行灰度化可减少图像的存储空间,并有利于后续的图像处理,同时将图12与图10进行对比可以看出,弱光照条件下比中光照条件下灰度图像的灰度等级普遍更低,呈现的视觉效果更黑;
步骤1b)判断灰度图像光照强度的均匀性:
将灰度等级均分为高中低三个级别,并分别计算灰度图像的左右两个区域中像素点高中低三个级别的比例,左右两个区域的三个灰度级别中有一个或者多个级别比例在5%的误差范围内,判定该灰度图像为光照强度均匀图像,并执行步骤(1c);
步骤1c)对光照强度均匀图像进行二值化:
当两个区域灰度等级小于倍最大灰度等级的像素点数量都占该区域所有像素点数量的70%以上时,判定银行卡图像为光照均匀条件下弱光照图像,针对本实施案例,最大灰度等级为255,采用最佳阈值迭代法对光照强度均匀图像进行二值化,得到光照均匀条件下弱光照的二值化图像如图13所示,从图13可以看出此时的二值化图像由于光照继续变暗,图像中的孤立细小的色块变得更多,但卡号区域的字符显示并没有受到任何影响,卡号的显示依然很清晰,说明最佳阈值迭代法对弱光照条件下银行卡图像二值化处理有较好的效果。
最佳阈值迭代法是一种基于直方图的图像全局二值化算法,该算法首先假定一个阈值,然后计算在该阈值下图像前景和背景的中心值,将前景和背景中心值的平均值与假定的阈值进行比较,若相同,则迭代中止并以此值作为最终阈值进行全局二值化,否则,按照算法的迭代准则继续计算新的阈值并重复上述步骤。因此当图像中背景与目标的灰度等级差距并不明显时,使用最佳阈值迭代法比使用最大类间方差OTSU算法对卡号的显示效果更好。
实施例4:光照不均匀条件下银行卡号识别。
本实施例与实施例1的其他步骤相同,仅仅步骤1)作了调整。
步骤1)对银行卡图像进行预处理:
步骤1a)利用OpenCV的cvtColor函数对预先存储的彩色银行卡图像进行灰度化处理,得到灰度图像如图14所示,从图14可以看出灰度图像中每个像素点的灰度等级是用8位二进制数进行存储,因此每个像素点的灰度范围为0~255,共有256种灰度等级,对图像进行灰度化可减少图像的存储空间,并有利于后续的图像处理,同时将图14与其他三种光照条件下的灰度图,包括图2、图10和图12进行对比可以看出,光照不均匀条件下灰度图像的灰度等级变化的更剧烈;
步骤1b)判断灰度图像光照强度的均匀性:
将灰度等级均分为高中低三个级别,并分别计算灰度图像的左右两个区域中像素点高中低三个级别的比例,左右两个区域的三个灰度级别中没有一个级别比例在5%的误差范围内,判定该灰度图像为光照强度不均匀图像,并执行步骤(1d);
(1d)对光照强度非均匀图像进行二值化:
采用优化的Bernsen算法对光照强度非均匀图像进行二值化,得到二值化图像如图15所示,从图15中可以看出在光照较强的区域卡号的显示效果非常好,基本没有任何噪声和干扰,在光照较弱的区域出现了一些孤立细小的色块,但并没有影响到卡号的显示,整体卡号的显示依然很清晰,说明优化的Bernsen算法对光照非均匀条件下银行卡图像二值化处理有较好的效果。
传统的Bernsen算法是一种局部二值化算法,该算法首先需要两个预先设定的值:S和T’,计算以某一像素点P为中心的尺寸大小为n×n窗口内,所有像素点的最大值M和最小值N,两者的均值为T,其中n为预先设定的整数,比较M-N与预先设定的值S的大小,若M-N的值大于预先设定的值S,则像素点P二值化处理的阈值为T,否则,则表示该窗口所在区域灰度等级差别较小,那么窗口处在目标区或背景区,那么还需要判断T与预先设定的值T’的大小,若T大于预先设定的值T’,则像素点P的灰度等级设为255,否则,像素点P的灰度等级设为0。
传统的Bernsen算法是一种逐点二值化的算法,在目前拍摄图像的像素普遍较高的情况下,传统的Bernsen算法并不适用,而现有的改进型Bernsern算法都是将一开始以某一像素点P为中心的尺寸大小为n×n窗口与最终决定的二值化窗口相等大小,从减小了算法处理的复杂度,但这种改进型的Bernsen算法并没有考虑周边像素点对该窗口二值化的影响,从而会将目标误判为背景或者将背景误判为目标。而本发明优化的Bernsen算法避免了现有的改进型Bernsern算法的不足,从最终的光照强度非均匀条件下的二值化图像图15也可以看出整体卡号的显示很清晰,说明优化的Bernsen算法对光照非均匀条件下银行卡图像二值化有较好的处理效果。
从实施例1到实施例4可以看出,对银行卡图像进行预处理时,由于二值化图像中卡号的清晰程度会直接影响字符分割和字符识别的效果,因此针对不同的光照情况,采用不同的二值化算法,以使得在不同的光照情况下,二值化图像中的卡号显示达到一种最佳的清晰程度,从而提高卡号识别的准确度。
以上描述仅是本发明的实施例,不构成对本发明的任何限制,显然对于本领域的专业人员来说,在了解了本发明内容和原理后,都可能在不背离本发明原理的情况下,进行形式和细节上的各种修正和改变,但是这些基于本发明思想的修正和改变仍在本发明的权利要求的保护范围之内。
Claims (3)
1.一种基于OpenCV的银行卡号识别方法,其特征在于,包括以下步骤:
(1)对银行卡图像进行预处理:
(1a)利用OpenCV的cvtColor函数对预先存储的银行卡图像进行灰度化处理,得到灰度图像;
(1b)判断灰度图像光照强度的均匀性:
将灰度图像均匀划分为左右两个区域,并判断两个区域中像素点的不同灰度级别比例是否满足一定的误差范围,若是,则灰度图像为光照强度均匀图像,并执行步骤(1c),否则,灰度图像为光照强度非均匀图像,并执行步骤(1d);
(1c)对光照强度均匀图像进行二值化:
(1d)对光照强度非均匀图像进行二值化:
采用优化的Bernsen算法对光照强度非均匀图像进行二值化,优化方法为:计算图像中任一像素点为中心的尺寸大小为n×n窗口内的二值化阈值,并利用该二值化阈值分割像素点灰度等级的区域尺寸小于n×n,得到二值化图像,其中n为预先设定的整数;
(2)获取二值化图像中的卡号区域图像:
(2a)采用OpenCV的morphologyEx函数对二值化图像进行闭运算,得到闭运算二值化图像;
(2b)对闭运算二值化图像进行膨胀腐蚀,得到膨胀腐蚀图像;
(2c)采用OpenCV中的findContours函数提取膨胀腐蚀图像的内外边缘轮廓信息,并通过银行卡的先验卡号位置信息,对膨胀腐蚀图像的内外边缘轮廓信息进行筛选,得到膨胀腐蚀图像卡号位置的矩形块轮廓;
(2d)根据膨胀腐蚀图像卡号位置的矩形块轮廓,确定二值化图像中卡号区域的上下边界,并对上下边界范围内的图像进行列扫描,得到包含完整卡号信息的卡号区域二值化图像;
(3)对卡号区域二值化图像进行字符分割:
(3a)对卡号区域二值化图像中的像素点按列方向投影,得到卡号区域的列投影拟合曲线图;
(3b)从列投影拟合曲线图中选取与预先设定的阈值相同的拟合点,并计算相邻拟合点横坐标的算术平均值,得到列投影拟合曲线图上纵坐标值小于阈值的算术平均值所对应的点,将这些点作为卡号字符之间的断点;
(3c)根据卡号字符之间的断点对卡号区域二值化图像进行字符分割,得到由与卡号字符顺序相同的多个字符图像组成的字符图像集,并采用OpenCV中的resize函数对字符图像集进行归一化,得到归一化后字符图像集;
(4)对归一化后字符图像集进行字符识别:
(4a)从微软系统中选取多种由0~9十位字模组成的数字模板,每种数字模板中字模的字体相同,各数字模板中字模的字体不同;
(4b)采用OpenCV中的MatchTemplate函数,计算归一化后字符图像集中每个字符图像与每种数字模板中每个字模的相似程度,并将与每个字符图像相似程度最高的字模所代表的数字作为每个字符图像的识别结果。
2.根据权利要求1所述的基于OpenCV的银行卡号识别方法,其特征在于,步骤(1b)中所述的判断两个区域中像素点的不同灰度级别比例是否满足一定的误差范围,具体判断方式为:将灰度等级均分为高中低三个级别,并计算灰度图像的每个区域中三个灰度级别所占的比例,判断左右两个区域的三个灰度级别中是否有一个或者多个级别比例在5%的误差范围内。
3.根据权利要求1所述的基于OpenCV的银行卡号识别方法,其特征在于,所述步骤(2c)中所述的银行卡的先验卡号位置信息,包括银行卡的卡号区域位于银行卡宽度的15%~85%之间,卡号区域的长宽比大于5:1,且卡号区域的宽度占银行卡宽度的5%~30%,长度占银行卡长度的30%以上。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810736445.4A CN109034145B (zh) | 2018-07-06 | 2018-07-06 | 基于OpenCV的银行卡号识别方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810736445.4A CN109034145B (zh) | 2018-07-06 | 2018-07-06 | 基于OpenCV的银行卡号识别方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109034145A CN109034145A (zh) | 2018-12-18 |
CN109034145B true CN109034145B (zh) | 2021-11-09 |
Family
ID=64641162
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810736445.4A Active CN109034145B (zh) | 2018-07-06 | 2018-07-06 | 基于OpenCV的银行卡号识别方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109034145B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109993202B (zh) * | 2019-02-15 | 2023-08-22 | 广东智媒云图科技股份有限公司 | 一种线稿型图形相似度判断方法、电子设备及存储介质 |
CN110310239B (zh) * | 2019-06-20 | 2023-05-05 | 四川阿泰因机器人智能装备有限公司 | 一种基于特性值拟合消除光照影响的图像处理方法 |
CN110426401A (zh) * | 2019-08-07 | 2019-11-08 | 北京赛育达科教有限责任公司 | 一种用于实训的机器人视觉字符检测系统及方法 |
CN110766001B (zh) * | 2019-09-29 | 2023-05-23 | 河海大学常州校区 | 基于cnn和rnn的银行卡卡号定位与端到端识别方法 |
CN110889415B (zh) * | 2019-12-05 | 2023-04-21 | 上海交通大学 | 用于不同反光率表面的压印序列号字符分割方法 |
CN111242140B (zh) * | 2020-01-17 | 2023-04-18 | 厦门理工学院 | 一种非均匀光照下快速提取轮廓线的方法 |
CN111832565B (zh) * | 2020-07-24 | 2022-10-28 | 桂林电子科技大学 | 一种基于决策树的数码管识别方法 |
CN117095423B (zh) * | 2023-10-20 | 2024-01-05 | 上海银行股份有限公司 | 一种银行单据字符的识别方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102496019A (zh) * | 2011-12-08 | 2012-06-13 | 银江股份有限公司 | 一种车牌字符分割方法 |
CN103488978A (zh) * | 2013-09-26 | 2014-01-01 | 浙江工业大学 | 一种基于灰度跳变和字符投影间隔模式的车牌定位方法 |
CN107451589A (zh) * | 2017-07-07 | 2017-12-08 | 南京邮电大学 | 一种基于改进的ostu算法的夜间车牌二值化的方法 |
CN108108734A (zh) * | 2016-11-24 | 2018-06-01 | 杭州海康威视数字技术股份有限公司 | 一种车牌识别方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014162211A2 (en) * | 2013-03-15 | 2014-10-09 | Translate Abroad, Inc. | Systems and methods for displaying foreign character sets and their translations in real time on resource-constrained mobile devices |
CN105809088B (zh) * | 2014-12-30 | 2019-07-19 | 清华大学 | 车辆识别方法和系统 |
-
2018
- 2018-07-06 CN CN201810736445.4A patent/CN109034145B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102496019A (zh) * | 2011-12-08 | 2012-06-13 | 银江股份有限公司 | 一种车牌字符分割方法 |
CN103488978A (zh) * | 2013-09-26 | 2014-01-01 | 浙江工业大学 | 一种基于灰度跳变和字符投影间隔模式的车牌定位方法 |
CN108108734A (zh) * | 2016-11-24 | 2018-06-01 | 杭州海康威视数字技术股份有限公司 | 一种车牌识别方法及装置 |
CN107451589A (zh) * | 2017-07-07 | 2017-12-08 | 南京邮电大学 | 一种基于改进的ostu算法的夜间车牌二值化的方法 |
Non-Patent Citations (5)
Title |
---|
Research of Improving the Accuracy of License Plate Character Segmentation;Shuang Qiao 等;《2010 Fifth International Conference on Frontier of Computer Science and Technology》;20100916;489-493 * |
一种光照不均匀图像的二值化方法;郭佳 等;《计算机应用与软件》;20140331;第31卷(第3期);183-202 * |
基于OpenCV的复杂环境下图像二值化方法;赵世峰 等;《电子测量技术》;20180331;第41卷(第6期);55-59 * |
基于OPENCV的车辆牌照识别系统研究;杨思源;《中国优秀硕士学位论文全文数据库信息科技辑》;20131215(第(2013)S2期);I138-1167 * |
基于垂直投影的车牌字符分割方法;冉令峰;《通信技术》;20120430;第45卷(第4期);89-91 * |
Also Published As
Publication number | Publication date |
---|---|
CN109034145A (zh) | 2018-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109034145B (zh) | 基于OpenCV的银行卡号识别方法 | |
CN107545239B (zh) | 一种基于车牌识别与车辆特征匹配的套牌检测方法 | |
Wen et al. | An algorithm for license plate recognition applied to intelligent transportation system | |
CN106096601B (zh) | 一种自动检测票据中字符类型的方法和系统 | |
CN108596166A (zh) | 一种基于卷积神经网络分类的集装箱箱号识别方法 | |
CN104700092B (zh) | 一种基于模板和特征匹配相结合的小字符数字识别方法 | |
CN108427946B (zh) | 复杂场景下基于内特征和文本域布局的驾驶证检测识别方法 | |
CN105374015A (zh) | 基于局部对比度和笔画宽度估计的低质量文档图像二值化方法 | |
CN109993161B (zh) | 一种文本图像旋转矫正方法及系统 | |
CN106815583B (zh) | 一种基于mser和swt相结合的夜间车辆车牌定位方法 | |
CN108830275B (zh) | 点阵字符、点阵数字的识别方法及装置 | |
CN109409158B (zh) | 一种基于二维码边缘粗糙度的防伪方法 | |
CN109784341A (zh) | 一种基于lstm神经网络的医疗单据识别方法 | |
CN115423771B (zh) | 基于特征非一致性的准动态镭射防伪标签识别方法 | |
CN110689003A (zh) | 低照度成像车牌识别方法、系统、计算机设备及存储介质 | |
Lin et al. | License plate location method based on edge detection and mathematical morphology | |
CN110008955B (zh) | 一种汽车刹车片表面字符压印质量检验方法 | |
CN110188693B (zh) | 改进的复杂环境车辆特征提取和停车判别方法 | |
Bala et al. | Image simulation for automatic license plate recognition | |
CN110046618B (zh) | 基于机器学习和最大极值稳定区域的车牌识别方法 | |
CN113537216B (zh) | 一种点阵字体文本行倾斜校正方法及装置 | |
JP2000182181A (ja) | 車両ナンバープレート認識装置 | |
Huang et al. | A method of detecting and recognizing speed-limit signs | |
CN111178359A (zh) | 车牌号码识别方法、装置和设备及计算机存储介质 | |
Qiu et al. | An optimized license plate recognition system for complex situations |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |