本课题的研究价值非常重要,主要体现在如下几个方面:(1) 人民币在国际金融结算领域越来越重要,已经成为东南亚和港澳等地区的重要的支付货币。2010年1月1日,中国—东盟自由贸易区全面启动。双方达成结算业务协议,人民币成为区内结算货币,标志着人民币国际化迈开了坚实的一步[1]。(2) 人民币作为我国的法定货币,人民币发行时,每张人民币都有一串唯一的冠字码。冠字码是人民币的重要标识,银行和其他金融机构使用冠字码对人民币进行分类和辅助鉴伪。目前国内人民币冠字码通常由人工登记,这种方法出错难以避免、效率低下,所以迫切需要一种高效、快捷、准确的人民币冠字编码识别工具。(3) 人民币冠字码的识别技术是高端金融设备的一项关键技术[2]。近年来,银行ATM吐假币事件在全国各地频发,如果银行ATM不提供冠字码打印服务,消费者的权益无法得到保障。此外,金融机构根据人民币冠字码可以有效地跟踪人民币流通情况,有效地打击金融犯罪。我国已经将人民币冠字码识别纳入下一代ATM国标中一项重要的指标,银行机构必须在2013年末,促成ATM交付的人民币冠字码可查询,ATM行业面临洗牌。因此,人民币冠字码识别技术成为各大ATM厂商占据市场的一项迫切技术。光学字符识别技术(OCR)[3]是指利用光学扫描设备将纸上的字符扫描成像,利用字符识别技术将其解析成计算机可识别的技术[4]。近年来OCR技术不断取得突破,日益成熟,逐步形成了一整套理论体系和完善的应用技术链。由于人民币冠字码具有其自身特点,本文主要目的是针对人民币冠字码识别这一特定的领域,对ATM采集到的人民币图像进行仔细研究,根据人民币冠字码扫描图像特点和字体结构特征,采用数字图像处理技术和模式识别等相关技术,研究出有效的、符合工程要求的人民币冠字码识别系统。光学字符识别技术(OCR技术)是数字图像处理领域的一项重要技术。光学字符识别的概念已经存在很长时间,最早可以追溯到1809年的一项辅助盲人阅读设备的专利。1929年,科学家Tausheck率先发表OCR概念,同时获得了相关专利[5]。但是早期OCR技术多是停留在理论层面上,直至电子计算机的发明, OCR技术才逐步成熟,大批商用OCR系统如雨后春笋般涌现[6]。自上个世纪50年代末,美国科学家Shepard发布第一个商用OCR系统以来,商用OCR系统大致经历了三代[5]:1960年至1965年,以NCR公司、IBM公司为代表的公司各自独立地研发了第一代商用OCR产品,该产品主要用于识别经过特殊设计的特定字符。1960年代中期至1970年代初期,第二代OCR产品发布。该阶段的里程碑事件是逐步建立了标准化的字符集数据库,极大地促进了OCR技术的发展。1970年代中期至今,第三代OCR产品发布。该阶段逐步解决了质量较差的文档字符的识别问题,识别率得到显著提高,特别是汉字识别、手写字符识别取得了突破性进展。我国OCR技术起步相对滞后,相关研究从上世纪70年代才逐渐起步。经过我国科研人员不断奋斗、迎头直追,我国OCR技术不断成熟,尤其在汉字识别领域,现已处于世界领先地位。国内不少研究机构和公司相继推出了中文OCR产品,例如文通公司开发的易扫通系统,以及汉王公司开发的汉王笔等均为国内OCR商用产品的典型。OCR技术,主要有如下几个方向:(1) 基于统计特征的OCR技术这种技术是传统OCR技术,通过提取大量字符的统计特征,然后再进行分类整理,获得字符的原型知识(即字符模板),这样字符识别过程可以看成模板匹配过程。(2) 基于结构特征的OCR技术对于诸如手写字符那样字形变化很大的字符,基于统计特征的方法难度很大,基于结构特征的OCR技术派上有场,通过提取字符的笔根、笔段、笔画等结构特征,这样每个字符就形成一个树状结构,可以采用树匹配、知识推理、词法分析等方法进行字符识别。(3) 基于神经网络的OCR技术人工神经网络通过模拟人脑关键特征来完成特定任务,近年来广泛应用于OCR技术中。通过训练得到人工神经网络模型,将字符特征向量输入人工神经网络,通过人工神经网络的计算,获得输出,即为识别结果。(4) 基于模糊技术的OCR技术从模糊数学的角度研究字符识别,也主要用于字形变化很大的字符识别,尤其手写字符识别。基于模糊技术的OCR技术主要有景物标识松弛算法、模糊集算法、基本字元算法等。(5) 结合语义理解的后处理技术这是现代字符识别的一个方向,通过分析单字的上下文,利用字符的候选字符集,对字符识别进行校正,从而提高字符识别率。典型的算法有字群识别算法、结合HMM字符识别算法。(4) 混合策略OCR作为一个广泛研究的领域,各种思路相互碰撞,而现实环境中单一的识别方法往往无法满足实际需求,可以通过混合各种策略获得更好的字符识别率。混合模式也是现代OCR技术的研究方向。典型的OCR系统,主要由字符区域定位、图像预处理、字符切分、字符识别四个模块组成。(1) 字符区域定位模块CIS采集到的图像是由前景的字符信息和背景信息组成。本模块的目的就是在繁杂的背景中定位出目标字符区域。字符区域的定位准确与否极大地影响后续模块的完成。图像的背景越繁杂,例如图像背景中存在与字符相似的区域,字符区域的定位越难。目前字符区域定位技术主要是利用目标字符区域与背景的差异性(诸如颜色、纹理、几何等特征的差异性)进行定位[7]。本系统中将图像倾斜校正纳入字符区域定位模块。图像倾斜校正主要分为直接法和间接法,直接法的一种典型方法是多角度投影法,即沿着预定的多角度进行投影,再从中选择最佳角度进行图像倾斜校正;间接法也有很多种,例如文献[8]采用霍夫变换原理对倾斜图像进行校正。(2) 图像预处理模块人民币在流通过程中,可能会出现不同程度的破损造成扫描图像的不清晰,加之采集过程中光照不均以及无法避免的噪声,所以图像预处理是字符识别的必要阶段。图像预处理模块主要包括图像增强、平滑去噪、图像二值化处理等步骤。由于目前图像预处理技术起步很早,相关研究至今已经非常成熟。例如,可以利用图像增强技术来突出字符,最常见的方法详见文献[9],利用分段函数进行灰度变换;可以使用光照补偿算法解决图像光照不均匀问题,详见文献[10];可以使用图像二值化去除灰度图像中字符结构非相关的亮度信息,常用的滤波器主要有均值滤波器、自适应维纳滤波器、中值滤波器、形态学噪声滤除器、小波去噪等,图像二值化方法主要分为全局阈值法(以Ostu算法为代表),局部阈值法(以Bernsen算法为代表) [11]。(3) 字符切分模块经过图像字符区域定位和图像预处理后,获得的二值化图像是由多个字符组成的编码串。字符切分模块负责将编码串切分成单个字符。字符切分算法的选择主要取决于图像中的字符的分布情况。当字符呈现竖直或水平方向分布时,可以使用投影法进行字符切分。当字符呈现不规则分布时,典型的算法是连通区域切分算法。实际过程中,经预处理后的字符可能出现笔画破裂或者字符粘连的问题,采用经典投影法或者连通区域切分算法往往效果甚微。针对这种情况,目前取得了很多进展。例如,文献[12]提出了一种动态图像灰度阈值分割法。文献[13]则提出了一种改进后的主动轮廓方法,可以很好地解决了笔画断裂问题。(4) 字符识别模块该模块负责逐个对每个字符图像提取字符特征,采用分类器进行识别,最终输出识别结果。由于模板匹配法识别速度慢、鲁棒性差、抗噪性差等缺点,现代字符识别均使用分类器进行识别[14]。首先提取字符的本质特征,用来作为分类器的输入,最终输出识别结果。有效的字符特征应该具备区别度大、独立性强、鲁棒性好、特征维度尽可能少等特点,这样能够提高字符的识别速度。分类器有多种,不同的分类器各具特色,常用的分类器有支持向量机[15]、贝叶斯分类器[16]、神经网络[17]等。OCR技术虽然已经非常成熟,形成了诸多计算框架,但并没有形成通用的理论,依然需要具体应用场合具体分析。目前纸币冠字码识别技术多为国外所垄断,国内相对研究较少,因此该方向具有很高的研究价值和经济价值。本文针对人民币冠字码识别这一特定应用场合,研究出一款高性能、高准确率、强实用性的人民币冠字码识别系统。本文采用经典的OCR系统的计算框架,本文重点研究冠字区域定位、冠字图像预处理、冠字码切分、冠字码识别这几个模块涉及到的算法研究。(1) 冠字码定位模块本模块负责在整张人民币图像中准确定位出字符区域,并且同步对该字符区域进行倾斜校正。(2) 冠字图像预处理模块本模块针对采光过程中的噪声、图像不清晰、字符笔画粗细不均匀等问题,采用了一系列预处理措施来克服这些问题。具体采用高斯滤波抑制噪声,利用字符图像的宽线信息进行二值化,一定程度上解决了上述问题。(3) 冠字码切分模块经过冠字区域定位和图像预处理后,获得的二值化冠字图像是由10个字符组成的单行编码串。本模块采用自适应滑动窗口法,有效地克服字符粘连和字符破裂问题,并且对切分后的字符进行后处理。(4) 冠字码识别模块冠字码识别模块作为关键模块,它主要完成字符特征选择和提取以及分类器的建立。字符特征提取针对阿拉伯数字和英文字母图像的结构特征,提取出一系列有效的特征,并且选择最佳特征。本文采用基于BP神经网络作为分类器,该分类器具有性能高、准确率高、稳定性强的特点。 论文的组织结构本文共分为七个章节,具体安排如下:第一章:绪论。第二章:人民币冠字码识别系统整体设计。本章介绍了人民币冠字码的特点,并且阐述了人民币冠字码识别系统的整体设计和具体流程图。第三章:冠字码区域定位。本章介绍了图像倾斜校正的原理和具体步骤,阐述了冠字码区域的初步定位和精确定位。第四章:冠字图像预处理。本章介绍了冠字图像的预处理技术。图像预处理阶段主要包括图像的平滑去噪及其对比实验、二值化及其对比实验。第五章:冠字码切分。本章分别介绍了两种冠字码切分算法以及字符切分后处理。冠字码切分算法详细阐述了投影法和自适应滑动窗口法。字符切分后处理包括字符包围盒、图像插值、图像无形变处理。第六章:冠字码识别。本章介绍了字符识别技术的原理和具体实践步骤。字符特征提取针对阿拉伯数字和英文字母图像的结构特征,提取出一系列有效的特征。再采用基于BP神经网络作为字符识别的分类器,针对字符特征对字符进行识别。第七章:总结与展望。本章进行工作总结,并且畅想系统中问题后续改进方案。2 人民币冠字码识别系统整体设计 人民币冠字码特点2005版百元人民币的冠字码是由10位编码组成,其中前4位采用阿拉伯数字和英文字母混合编码,后6位采用纯阿拉伯数字编码。如图2-1所示。人民币冠字码的最大特点是采用非等宽字体编码,字符高度基本一致,整体呈现出“两端字符偏小,中间字体偏大”的格局,这增加了人民币冠字码的识别难度。人民币冠字码还有一个特点就是数字“0”和字符“O”基本没有区别,只能根据编码规则进行判断。本系统中不区别数字“0”和字符“O”。如图2-2所示。图2-1 人民币冠字码图示图2-2 数字“0”和字符“O”图示 人民币冠字码识别系统设计人民币冠字码识别系统主要由冠字区域定位模块,冠字图像预处理模块,冠字码切分模块,冠字码识别模块这四个模块构成。(1) 冠字区域定位模块本模块目的是在ATM采集到人民币图像中抽取出字符区域。字符区域的定位准确与否极大地影响后续模块的性能。(2) 冠字图像预处理模块预处理模块主要功能是使用模板平滑来抑制噪声,再对图像二值化处理去除字符非结构信息。图像预处理模块也是后续模块的前提。(3) 冠字码切分模块经过冠字区域的定位和图像的预处理后,获得了二值化冠字图像,它是由10个字符组成的单行编码串。在识别前需要将这10个字符切分成单个字符,提取特征,输入至分类器中进行字符识别。(4) 冠字码识别模块该模块负责逐个对每个字符图像提取字符特征,采用分类器进行识别,最终输出识别结果。人民币冠字码识别系统的流程图如图2-3所示。图2-3 人民币冠字码识别系统的流程图 本章小结本章介绍了人民币冠字码的特点,阐述了人民币冠字码识别系统的整体设计和具体流程图。3 冠字区域定位本章介绍冠字区域的定位,冠字区域的定位是后续处理的基础。冠字区域的定位涉及到:图像的倾斜校正、冠字区域的初步定位、冠字区域的精确定位。本章通过使用旋转变换和切向变换来校正图像,通过角点检测来初步定位冠字区域,最后提出一种基于穿越度的精确定位方法,并且获得了较好的效果。 图像倾斜校正CIS在采集人民币图像的时候,可能会出现不同程度的倾斜,导致几何畸变。如果不妥善处理好图像的几何畸变问题,会对后续冠字码的切分产生极大的影响。通常ATM扫描图像过程中产生的倾斜,可以通过空间变换进行校正即可。可以分为两步:旋转变换和切变变换。 图像倾斜分析CIS采集到的图像中,目标物体与图像的底边并不一定垂直,而是有一定的倾斜角度。例如,由于待扫描图像在传入CIS前有一定的偏角,导致采集到的图像整体倾斜。效果如图3-1所示。图3-1 图像倾斜图示(a) 原扫描图像,(b) 校正后图像采集到的图像的倾斜,直接造成冠字码的倾斜,对后续的图像分割和图像识别都会产生极其不利的影响,所以,图像的倾斜检测至关重要。 图像倾斜角度检测图像倾斜角度检测有多种方法,主要分为两大类:直接方法和间接方法[18]。直接方法是利用二值图的水平投影直方图,通过分析比较不同角度的直方图获得图像的倾斜角度;间接方法是通过先检测出灰度图像的边沿,再计算出图像的倾斜角度。直接方法通常提前设置好几个角度,沿着该角度水平投影,通过累加,计算出该行的黑色像素个数,然后根据黑色像素数计算该角度下的方差。直接方法的好处是处理简单,但是直接方法提前预设的角度很难取舍,加之直接方法的计算量较大,而且不够准确。直接方法通常适用于多行字符的倾斜检测,并不太适用人民币图像的倾斜角度检测。由于本文的目标物体与背景相差很大,本文采用了间接方法,直接在灰度图上进行处理。通过分别在水平方向和竖直方向进行采样,获取图像边缘的点,然后利用最小二乘法计算出图像的倾斜角度。下面以水平方向为例,描述该算法。(1)从图像的宽度的三分之一起,每隔FIT_STEP_X(本文取10)个像素取样。(2)从图像底边垂直向上扫描,当连续FIT_STHRESH(本文取5)个像素的灰度值大于FIT_VALUE(本文取50),标记该点作为取样点。如此依次获得FITTING__NUM(本文取70)个取样点。(3)利用最小二乘法,针对这些取样点,进行直线拟合,获取图像底边边缘的近似直线的斜率,进一步获得对应的倾斜角度。图3-2 标识取样点的图像同理,使用同样方法获得图像竖直方向的倾斜角度。如图3-2所示,标识了人民币图像水平方向和竖直方向的取样点。 图像旋转校正为了校正人民币图像倾斜引起的几何畸变,使用上文计算得到的倾斜角度,旋转变换图像,将图像旋转至水平方向。定义逆时针为正旋转,旋转变换公式如公式所示[19]:对应的逆旋转变换公式如公式所示: 图像切向校正在二维坐标系中,切向变换是指图像沿着某坐标轴方向产生不等量的移动而引起图像变形的一种变换。直观而言,就是一个坐标方向的坐标值保持不变,另一个坐标方向的坐标发生一定角度的倾斜。图像的切向变换分为x方向切变和y方向切变。CIS采集到的图像,除了要进行旋转之外,还需要进行切向变换进行校正。切向变换公式如公式所示[19]:对应的逆切向变换公式如公式所示: 冠字区域初步定位 角点检测要定位冠字区域,必须要进行角点检测。只有检测到四个角点,再进行图像的倾斜校正,才能获得标准人民币图像。角点检测的方法也有多种。本文采用的方法非常简单实用,直接在灰度图像上利用阈值检测角点。以左下角为例,本文使用的算法具体步骤如下。(1)设定扫描直线。初始。(2)针对扫描直线上每个像素点,沿直线法线方向扫描。当连续FIT_STHRESH(本文取5)个像素的灰度值大于FIT_VALUE(本文取50),则该点即为角点。(3)如果该扫描直线上所有像素点均不是角点,重新设定,获得新的扫描直线,继续扫描。(4)扫描到角点,角点检测结束,停止扫描。采用如上算法,可以依次检测到目标图像的四个角点。 本文采用的初步定位方法通过图像倾斜角度检测和角点检测,可以获得标准人民币图像。设定标准人民币图像的长度为L,高度为H。由于人民币的冠字区域是固定的。以左下角为原点,截取(0, ) ~ (L/4, H/3) 区域作为初步定位的区域。本文采用的初步定位方法集成了倾斜校正、角点定位、标准化冠字区域大小三个步骤。采取的具体步骤如下:(1)根据节,经过图像倾斜角度检测,得到水平倾斜角度和垂直倾斜角度。将作为旋转角度,将作为切向角度。(2)根据节,经过角点检测将得到四个角点,分别记为:、、、。将这四个角点的坐标进行逆旋转变换,得到、、、。使用公式计算扫描图像中人民币的高度和宽度:()使用公式计算扫描图像中人民币的中心点:()(3)规定实际人民币的高度和宽度。定义比例系数,如公式所示:()(4)建立目标区域坐标与原扫描图像的映射关系,主要分为两步,第一步是切变和比例变换,第二步是旋转变换。旋转和切变变换的中心均为图像中心。如公式和公式所示:()()其中。(5)通过上述坐标映射,每个目标点可以映射到原扫描图像的四个相邻像素点,采用双线性插值,即可获得目标区域的灰度值。经过以上几何变换,可以得到校正后的标准冠字区域。如图3-3所示,其中图(a)是扫描图像,而图(b)是初步定位后图像。(a)(b)图3-3 (a)原扫描图像,(b) 初步定位后图像 冠字区域精确定位冠字区域精确定位是在初步定位的基础上进一步定位,以期获得冠字码的精确图像。经过初步定位的图像如图3-3(b)所示,主要包括:序列号、币值和右侧背景花纹三个部分。精确定位的目的就是为了从这三部分中精确提取出序列号部分。目前采用的最常见方法是行定位和列定位法[20],而本文采用的是基于穿越度来进行精确定位。下面分别介绍这两种方法。 行定位和列定位行定位和列定位法是最常见的一种冠字区域定位的方法,该方法既可以应用在灰度图像上,也可以应用在二值图像上。具体步骤分为行定位和列定位。1.行定位行定位就是要进一步缩小初步定位的冠字区域的上下界。具体的方法是从下至上依次扫描图像的各个像素,当某行的累加灰度值小于阈值,且后续的行同样满足该条件,则认为该行是冠字区域的下边界,即满足式:()其中表示二值图像或者灰度图的灰度值;是图像宽度;,,…,均为大于0的常量。同理,采用类似的方法可以定位冠字区域的上边界。这样就完成了冠字码的行定位。2.列定位行定位完成后进一步列定位。从左至右进行扫描,确定冠字码的左右边界,所采用的方法和行定位的方法一致。经过行定位和列定位后,即可得完成冠字区域精确定位。 基于穿越度的精确定位采用行定位和列定位的方法最大的问题是阈值的选择问题。阈值的选择是强图像相关的,不具有通用性,尤其对于污染的图像更是如此;其次,初步定位后的图像存在币值区域,会极大地影响下边界的定位,实践中也是如此。本文提出了一种基于穿越度的精确定位。该方法可以动态获得最佳阈值,也很好地克服了币值区域对下边界提取的影响。首先,定义行穿越度,具体如公式所示:()其中表示二值图像或者灰度图的灰度值;是图像宽度。冠字区域初步定位后,获得的图像已经是标准化图像,所以冠字码的高度是一定的。不难理解,字符的最大高度即为冠字区域的高度,冠字区域一个特点就是中间区域的字符较高,两边偏低。通过统计,不难取得冠字区域的高度。本文。定义区域穿越度,如公式所示:()其中表示第j行的穿越度;表示下界为第i行高为的区域穿越度。式揭示了和的关系:()利用区域穿越度这个概念,可以使用如下的在线算法实现冠字区域的精确定位。(1)从下至上对图像进行行扫描。计算出,标记,。(2)继续扫描,计算。如果,更新,。(3)反复执行以上操作,直至扫描结束。即为冠字区域的下边界,为冠字区域的上边界。采用上述算法,图3-4示意了该算法的效果。(a)(b)图3-4 (a)初步定位图像; (b) 精确定位图像 本章小结本章主要阐述了冠字区域的定位。并详细介绍了图像倾斜校正、冠字区域的初定位和精确定位。通过采用基于穿越度方法进行精确定位,该方法不仅仅无需设定阈值,而且具有自适应性,获得了很好的效果。本章的工作为后续冠字码字符的切割做了充足的准备。4 冠字图像预处理 图像的平滑与去噪纸币作为流通货币,会接触各种污染源,难免会遭到不同程度的玷污。此外,CIS图像传感器在采集图像过程中,存在多种噪声源[21-22]。这些污染以及CIS图像传感器产生的随机噪声均会影响冠字码的切分和识别结果,所以需要在预处理阶段进行去噪处理。 图像噪声模型在信号处理领域,一般将噪声看作随机信号,使用基于统计的方法对噪声进行描述[23]。针对不同类型的噪声,采用的处理方式也不尽相同,所以在去噪之前,需要分析具体是何种噪声,从而采用不同的去噪方法。例如,有些人民币图像上会出现一些小点,可以看做是椒盐噪声点,可以考虑使用中值滤波去除。此外,可以将噪声看成一种高频信号,使用低通滤波器对图像进行平滑去除高频噪声,但是图像的边缘信息通常也是高频信号,而这信息通常是识别过程中需要的非常重要的信息,所以需要在保留图像有效信息和去噪之间权衡,在尽量保持图像有效信息的前提下有效地去噪。图像的平滑去噪原理很简单,就是针对图像中的每个像素点,对其邻域内的像素的灰度值执行模板运算。模板通常可以分为线性模板和非线性模板。下面逐一介绍几种常见的滤波器,并且对三种滤波算法进行对比实验。