基于opencv的银行卡号识别学士学位论文Word格式.docx
《基于opencv的银行卡号识别学士学位论文Word格式.docx》由会员分享,可在线阅读,更多相关《基于opencv的银行卡号识别学士学位论文Word格式.docx(20页珍藏版)》请在冰豆网上搜索。
学 号:
23220092204453
指导教师(校内):
彭洪 职称:
讲师
年 月 日
1
目录
摘要 3
英文摘要 4
引言 5
第1章绪论…………………………………………………………………………
6
1.1引言 6
1.2银行卡号识别的研究现状 6
1.3识别的目的和意义 6
1.4opencv开源图像库 7
1.5程序的模块 7
第2章图像预处理模块……………………………………………………………
8
2.1引言 8
2.2灰度化处理 8
2.3二值化处理 10
第3章字符定位模块 11
3.1引言 11
3.2膨胀和腐蚀 11
3.3轮廓提取 13
3.4垂直投影 14
第4章字符分割模块 16
4.1引言 16
4.2字符分割 16
4.3图像归一化 17
第5章字符识别模块 18
第6章结论 19
致谢语 20
参考文献 20
2
摘要银行卡号是由19位数字编号组成的一串号码。
由于每一张银行卡的卡号都具有唯一性,所以通过确定银行卡卡号就可以识别银行卡,得到银行卡的相关信息。
银行卡卡号的自动识别对实现银行卡的有效管理和进行银行卡的相关服务具有重要的理论意义和实际应用价值。
本论文设计了一个银行卡卡号自动识别程序,这个程序基本上可以完成银行卡卡号的自动识别。
该程序是在对图像进行图像预处理的基础上,对图像处理得到的二值图进行膨胀和腐蚀变换,利用X/Y方向投影定位卡号字符位置;
采用投影法分割卡号字符并进行归一化处理;
最后采用模板匹配法识别字符得到银行卡卡号。
实验结果表明,程序具有较高的识别速率和准确率,并且具有一定的稳定性。
关键词 银行卡卡号 字符识别 模板匹配 图像处理
3
ReasearchOnBankCardNumberIdentificationProgramBasedOn
TemplateMatching
Abstract
Theserialnumberofbankcardisanumberconsistsof19numbers.Astheserialnumberofeachbankcardisunique,sobythebankcardserialnumberwecanbesureofthebankcardandgettheinformationofthebankcard.Theautomaticrecognitionofbankcardserialnumberhasimportanttheoreticalsignificanceandpracticalvaluetorealizeeffectivemanagementofthebankcardandbankcardservices.Thispaperdesignedabankcardserialnumberautomaticrecognitionprogram,thisprogramcanbasicallycompletetheautomaticrecognitionofbankcardserialnumber.
Theprogramisbasedonimageprocessingoftheimage,theimageprocessingofthetwovalueimagedilationanderosionusingX/Ytransform,thedirectionofprojectionsequencenumbercharacterposition;
thesequencenumberandcharactersegmentationarenormalizedbyprojectionmethod;
finally,usingtemplatematchingmethodtorecognizecharacterofbankcardserialnumber.Theexperimentalresultsshowthat,theprogramhasahighrecognitionrateandaccuracy,andhascertainstability.
KeyWords bankcardserialnumber;
Characterrecognition;
Templatematching;
Imageprocessing
4
引言随着国民经济的高速发展,银行卡的使用越来越频繁。
每一张银行卡都有着它的一个唯一的19位编号,只要通过银行卡的卡号号码就可以确定相应的银行卡。
所以,对银行卡卡号进行识别在进行银行卡服务时有着重要意义。
传统银行卡服务时的人工识别银行卡号码太过费时费力。
所以银行卡号的自动识别变得越来越重要。
本文依据银行卡号字符的特点,研究并实现了一种基于模板匹配的银行卡号识别系统,可以快速而准确地识别银行卡号。
该系统对研制或改进银行卡自动服务系统具有一定的指导作用和参考价值。
5
第1章绪论
1.1引言
银行卡号的识别涉及多个领域,包括模式识别、图像处理、计算机等多门学科,是一门综合性的应用技术。
随着国民经济的高速发展,银行卡的使用越来越频繁。
本系统可以根据银行卡图片自动识别银行卡号码,可以广泛的应用在各个领域。
1.2银行卡号识别的研究现状
在图像字符识别方面,现在大多采用的是神经网络[1]、差别不等式[2]、模板匹配[3]等技术。
神经网络具有推广能力、并行处理和自组织性等特性,因此它适合用于图像识别[4]。
特别在图像进行特征提取和识别时,神经网络明显优于传统的识别方法[5]。
目前使用最为广泛的神经网络是BP网,它对样本的识别率虽然很高。
但网络训练比较麻烦,需要选择大量的样本才能保证最终的识别结果。
同时,在实现过程中,由于受参数初始化的影响,它时常会无法收敛,或陷入局部极值。
差别不等式需要每一张纸币的特征差别点和选取合适的阈值,这些需要专家根据经验来选择,因此具有较大的主观性。
1.3识别的目的和意义
本文根据银行卡号的特点,设计了一个基于模版匹配的银行卡号识别程序,经过实验发现,这个程序可以比较快速而准确地识别银行卡号,并且基本上可以保证银行卡号识别功能要求。
本文通过对图像处理与模式识别中已有算法的分析研究,设计并实现了基于模板识别的银行卡号识别系统。
不仅可以识银行卡号,其相关技术也可应用到车牌号码、护照号、身份证号或其他印刷体字符的识别。
6
1.4OpenCV开源图像库
本程序采用了在C++6.0上采用了OpenCV工具(OpenCV版本1.0)实现了银行卡号的识别。
OpenCV的全称是:
OpenSourceComputerVisionLibrary。
OpenCV是一个基于(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上。
它轻量级而且高效——由一系列C函数和少量C++类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
Opencv避免了VC代码对图像进行处理的繁琐细节,而且由于opencv包含大量的开源图像处理函数,可以方便的对其进行修改和应用,在保证精度的同时大大减少识别的时间。
1.5程序的模块
银行卡号的自动识别主要包含图1的几个模块。
图1银行卡号识别流程图
图像预处理模块是用来进行银行卡卡号识别的前期准备工作的模块。
图像处理模块的要求就是把原始图像处理为适合后续模块处理要求的图像。
一般用来去除图像中不需要的信息。
字符分割模块是对预处理后的图像进行卡号字符的准确定位与分割,它是卡号识别系统中一个较为关键的模块,卡号定位与分割的准确与否将直接影响系统的识别率。
字符分割的准确性依赖于卡号定位和图像的清晰度。
如果图像中有着较为明显的干扰和噪声,二值化图像中可能出现字符粘连,需要特殊处理。
字符定位是在分割出的图像中找到卡号各个字符所在位置并将其从中分离出来,为后面卡号字符识别作准备。
特征提取的主要目的是从那些已分割出来的单个卡号字符图像中提取出用于区分不同字符的本质特征,用来识别。
字符识别是在数字模板库中找到和待识字符匹配的字符。
模板库是在银行卡号识别系统实现后创建的数字模板库。
7
第2章 图像预处理模块
2.1引言
整个识别系统主要由图像预处理模块、字符分割模块、字符定位模块、字符识别模块几个模块组成。
下面详细介绍这几个模块是如何用opencv的函数实现的。
以一张编号为9559981090571602515的银行卡为例来介绍系统的整个识别过程。
图像预处理模块是用来进行银行卡号识别的前期准备工作的模块。
本系统的原始图像采用RGB图像,系统的图像处理模块主要对原始图像进行灰度化、二值化等处理。
银行卡原始图像如图2所示。
图2原始图像
2.2灰度化处理
图像灰度化处理就是将指定图像每个像素点的RGB三个分量通过一定的算法计算出该像素点的灰度值,使图像只含亮度而不含色彩信息。
本程序中一开始得到的采集的银行卡图像是彩色图像,其中包含了大量颜色信息,但识别卡号并不需要关心这些颜色信息,这些颜色信息反而会对银行卡卡号的识别造成干扰并且颜色信息浪费了大量数据空间储存。
所以可以通过对原始图像进行灰度化处理来去掉银行卡的颜色信息,这样有利于后续模块的处理并且可以节约大量的系统的存储空间。
8
一般有以下四种方法对彩色图像进行灰度化。
1)分量法
将彩色图像中的三分量的亮度作为三个灰度图像灰度值,可根据需要选取一种灰度图像。
f1(i,j)=R(i,j)f2(i,j)=G(i,j)f3(i,j)=B(i,j)
其中fk(i,j)(k=1,2,3)为转换后的灰度图像在(i,j)处的灰度值。
2.最大值法
将彩色图像中的三分量亮度的最大值作为灰度图的灰度值。
f(i,j)=max(R(i,j),G(i,j),B(i,j))
3.平均值法
将彩色图像中的三分量亮度求平均得到一个灰度值。
f(i,j)=(R(i,j)+G(i,j)+B(i,j))/3
4.加权平均法
根据重要性及其它指标,将三个分量以不同的权值进行加权平均。
由于人眼对绿色的敏感最高,对蓝色敏感最低,因此,按下式对RGB三分量进行加权平均能得到较合理的灰度图像。
f(i,j)=0.30R(i,j)+0.59G(i,j)+0