基于matlab的纸币面额面向识别方法设计
摘 要:本设计的主要研究内容是在获取人民币的基础上通过FPGA、CIS传感器进行纸币图像采集,并对采集到的纸币图像进行预处理,包括去噪、边缘检测和倾斜校正。边缘检测过程中,利用离散点进行直线拟合,不仅可以得到纸币的边缘,还可以计算出纸币的中心点和倾斜角度,然后将纸币图像旋转校正,使图像位置归一化。预处理完成之后,利用尺寸识别算法完成对纸币尺寸的测量,从而确定纸币的面额。在面额得到识别的基础上,根据提取得到的纸币特征与模板匹配来对纸币面向进行识别。
关键词:图像采集;FPGA;模板匹配
1 引言
1.1 背景与国内外研究现状
当前,在美、英、德等西方发达国家,纸币识别技术早已广泛的应用在生活当中。我国这些年来也加强教育,不断增加科研投资,使我国的科研水平节节升高,但与国外相比仍有一定的差距。近年来,由于部分著名院校的合作研发,我国在自动化方面的水准有了显著的提升。不过纸币识别在我国几乎从零开始研究,应着手于图像识别相关的理论,勇于实践,造出属于我国独立自主研发的自动识别设备。
1.2 研究的主要内容
1)对图像采集系统的研究。
2)对采集到的图像预处理。
3)纸币面额面向的识别及程序的研究。
2 纸币图像采集系统
2.1 图像采集系统描述
获取图像,是图像处理等一切操作的前提基础,当前各种图像都是用釆集设备获得。本文设计是应用FPGA(Field-Programmable Gate Array)、CIS(Contact Image Sensor)图像传感器为核心器件的图像的采集系统。
2.2 系统的选型
CIS是最新型线性图像传感器,最大特点小巧轻便,当它工作时,LED光源发出光,照到待采集的物体表面,反射光线之后,经聚焦成像于光电传感器的阵列上,被转成电荷储存起来。达到积蓄的时间后,以模拟信号的形式将像素电信号依次输出,从而得到了纸币模拟图像的信号。本设计选型为MC06H-Z04。
本课题研究必须进行多图像数据相关传输处理,因此FPGA型号的选择必须拥有快速I/O转移的能力,选择的型号是XC2S100E。外加二片SDRAM芯片来辅助FPGA进行信号相关的采集处理。该芯片容量为512Mb。用的是双电源供电,应用芯片是TPS70451。FPGA芯片I/O口电平是3.3V,有源晶振在选型时要用3.3V来供电。50MHz的全局时钟发生电路。
本文采用的是CIS为MC06H-Z04,有效频率是15MHz,数据信息是三通道输出。A/D转换器实现选型时,为了匹配传感器,采样频率必须要大于45MHz,并且为三通道的输入模式,因此选用的A/D转换器为TLC5540。传感器型号为MC06H-Z04,是一种电压输出型传感器,所以运算放大器则应当是电压反馈型的,因此放大器选择型号为AD8054。选择USB接口作为传输数据的计算机接口。
3 纸币图像预处理
3.1 图像的去噪
纸币图像中产生噪声,方式多样,类型繁多。由于噪声影响,图像信号的幅值和相位的影响十分繁琐。若果要剔除图像噪声,应针对种类不同,具体分析,实施不同措施,让效果事半功倍。否则问题复杂化会加剧,难以实现目标。
3.2 纸币图像的边缘检测
Sobel边缘算子所利用的算法是对图像原始像素点加权平均后进行微分处理,所以我们可以利用差分取代一阶偏导,算子的数学表达如式(1)所示。
Sobel算子主要用两个三维矩阵,它们分别进行水平方向和垂直方向的检测。
算法矩阵如下:
3.3 纸币图像的倾斜校正
处理纸币图像后识别过程中,因为输入设备精度欠佳,和操作过程中肯定存在着相应误差,采集到的图像会出现一定程度倾斜,这将会影响之后的纸币认别。因此,把采集到的图像进行边缘检测和倾斜校正就很有必要。
进行倾斜校正普遍应用的方法是Hough变换。
设原图像 空间中直线的方程为y=kx+b,将其转换成极坐标 空间中对应的极坐标方程如式(2)所示。
4 纸币面额识别
4.1 特征块识别法
因为不同面额的纸币有明显差异的区域,这些区域为特征块识别法提供了基础, 这些区域涵盖纸币里的盲文和数字等,泛用的就是通过纸币表面能表达纸币面额的数字来识别。特征块识别法就是通过识别纸币自身带有的不同特征进行面额识别的。特征块识别法的原理是在两图像的相同位置提取两个大小不一的区域,其中模板图像略小些,这样有利于更好的识别。之后将这两个图像进行内容比对,检测两个模板是否匹配一致,即可以识别出纸币面额。
4.2 尺寸识别法
本文纸币面额识别的重点应用对象是第五版人民币。所以进行对比人民币的长宽来识别人民币的面额大小。通过测量获得第五版人民币的各面值尺寸,如表1所示。
纸币面额的尺寸识别法是根据不同纸币的长宽不等、差异明显的特点进行面额识别,不同面额的纸币且面额差距越大纸币大小相差也就越显著。因此只要我们通过手段确定出扫描纸币图像的长宽,即可识别出纸币的面额。
5 纸币面向识别
5.1 基于模板匹配的面向识别算法
本文利用模板匹配进行面向的识别。图像的匹配算法分为几何特征匹配和灰度特征匹配两类。图像的几何特征包括投影特征、方向码、图像边缘轮廓及纹理等,这些特征对于图像的放缩、旋转及灰度变化能保持很好的稳定性。
待识别图像输入、预处理、灰度特征提取、匹配计算、结果输出是模板匹配的一般流程。这几个步骤间又有很大关系,预处理的结果将会影响特征提取的方法和质量,根据不同的提取特征,我们会采用不同的匹配算法,最后得到的输出结果可能不尽相同。
5.2 100元面向识别的程序代码
clear%清内存
%***将彩色图像转换为灰度图像,读取模板图像****
I=imread(‘C:\Users\DELL\Desktop\人民币识别\面向识别\模板与测试图像和说明\001.jpg’);%该路径为模板图片文件夹位置,下同
x01=rgb2gray(I); x1=double(x01);
I=imread(‘C:\Users\DELL\Desktop\人民币识别\面向识别\模板与测试图像和说明\002.jpg’);
x02=rgb2gray(I);x2=double(x02);
I=imread(‘C:\Users\DELL\Desktop\人民币识别\面向识别\模板与测试图像和说明\003.jpg’);
x03=rgb2gray(I);x3=double(x03);
I=imread(‘C:\Users\DELL\Desktop\人民币识别\面向识别\模板与测试图像和说明\004.jpg’);
x04=rgb2gray(I);x4=double(x04);
%***将彩色图像转换为灰度图像,读取测试图像
%手动更改t01-t04对应测试图像的正反面与正倒像
I=imread(‘C:\Users\DELL\Desktop\人民币识别\面向识别\模板与测试图像和说明\t04.jpg’);
y01=rgb2gray(I);y1=double(y01);figure;imshow(I)
%调用函数ppmm求取误差最小值进行比较,其中裁剪参数c001需要根据实际情况手动输入
%调用的函数ppmm需要与主程序在一个文件夹内
z1=ppmin(x1,y1)
z2=ppmin(x2,y1)
z3=ppmin(x3,y1)
z4=ppmin(x4,y1)
z5=min([z1,z2,z3,z4])
if z5==z1
disp(‘100元正面正像’)
elseif z5==z2
disp(‘100元正面倒像’)
elseif z5==z3
disp(‘100元反面正像’)
else
disp(‘100元反面倒像’)
End
6 软件仿真
6.1 面额仿真
目前MATLAB软件是功能最为强大的,应用的方向非常广泛。本设计主要是应用MATLAB软件强大的图像处理功能,对CIS图像传感器采集到的纸币图像进行去噪、增强、边缘检测及倾斜校正,从而可以达到面额识别的相关目的。仿真图如4所示。
6.2 面向仿真
下面对面向识别进行仿真,模板图像4个面向,每个图像总像素数1590。随机选取纸面有污迹的100元钞票做为测试样本,在不同光照条件下采集图像的4个面向。分别将测试的4幅图像输入程序进行测试,每一幅图像分别与模板的4个样本进行匹配计算找出误差最小的对应模板即为匹配成功,直接输出结果,仿真情况如图5所示。
从仿真结果来看本文算法面额面向识别是有效的,可以正确的实现预定的功能,至此设计完成。
7 结论
本设计的主要任务是设计一款纸币识别系统,弥补目前市场上应用产品的不足。整个系统工作的主要流程是应用采集系统对纸币进行采集,通过高速图像传感器CIS将图像信息传达给FPGA处理,之后通过USB上传到PC机,应用MATLAB中带有的各种算法,做进一步处理。
本设计的主要创新之处在于应用了独特的面额面向识别法对纸币进行识别,目前为止尺寸识别法从未应用于实践。虽然改善了设计环节,降低了生产成本,但这不是最完美的设计。在精度和准确性上还需更加的完善,细节方面还需更多地考虑。在今后的学习中一定要更加努力,希望能在纸币鉴伪以及外币识别方面多作研究。