身份证识别

目录

摘要 3

一、设计目的及任务 4

二、设计的内容 6

三、设计的实现 7

四、系统调试 18

五、设计总结与体会 20

参考文献 21

摘要

本文主要介绍了一种采用基于matlab数字图像处理的图像识别技术,对身份证原始图像中的序列号标示进行图像识别的方法。该系统通过图像预处理、图像定位、图像校正并最终输出结果。在系统调试阶段,根据遇到的错误即时对原系统进行调整,并最终获得较为稳定高效的身份证序列号快速识别系统。

关键词  matlab  数字图象 图像识别  身份证序列号

一、设计目的及任务

图像信息是人类获得外界信息的主要来源,在现代科学研究、工业生产、军事技术等各个领域中,人们越来越多的利用图像信息来认识和判断事物,解决实际问题,因此图像信息获得和处理显得尤为重要。尤其是在当今科技迅速发展的时代,对图像信息处理提出了更高的要求,以便更加快速、准确、可靠地获得有用信息[1]。

图像处理技术基本可以分成两大类:模拟图像处理(Analog Image Processing)和数字图像处理(Digital Image Processing),数字图像处理是指将图像信号转换成数字信号并利用计算机进行处理的过程。数字图像处理技术主要包括如下内容:几何处理(Geometrical Processing)、算术处理(Arithmetic processing)、图像增强(Image Enhancement)、图像复原(Image Restoration)、图像重建(Image Reconstruction)、图像编码(Image Encoding)、图像识别(Image Recognition)、图像理解(Image understanding)。数字图像处理技术的发展涉及信息科学、计算机科学、数学、物理学以及生物学等学科,因此数理及相关的边缘学科对图像处理科学的发展有越来越大的影响。近年来,数字图像处理技术日趋成熟,广泛应用于空间探测、遥感、生物医学、人工智能以及工业检测等许多领域,并促使这些学科产生了新的发展[2]。

Matlab软件自从20世纪80年代中期推出以来,不断吸收各学科领域权威人士编写的实用程序,经过多年的发展及不断完善,现已成为国际公认的、最优秀的科学计算与数学应用软件之一,集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一个方便的、界面友好的用户环境,是近年来在国内外广泛流行的一种可视化科技计算软件[3],也对数字图像处理技术的研究带来飞速发展。

本文主要选取基于matlab的数字图像处理中图像识别功能进行课程设计,通过对系统的调试及学习,掌握matlab数字图像处理技术的基础知识及基本程序设计方法。所谓图像识别是指通过对图像中各种不同的物体进行定量化描述之后,将所期望获得的目标物质进行提取,并且对所提取的目标物进行一定的定量分析。要达到这个目的,实际上就是要实现对图像内容的理解,以及对特定目标的一个识别。因此,其核心是要完成依据目标物的特征对图像进行区域分割,获得期望目标所在的局域区域[4]。本文基于matlab程序,期望对身份证序列号进行快速定位和图像识别。

   近年来,图像处理技术和模式识别技术的发展越来越成熟,各种证件的识别也越来越广泛的应用于人民的生活中,身份证号码的自动识别技术也随之产生[5]。它使身份证号码的录入自动化,快速化,提高了工作效率,大大减少了人工量。而且,随着计算机技术的发展,我们还可以对各项得到的数据进行管理,这使得信息的查询与管理越来越方便、快捷,使身份证自动识别技术的普及提供了前提条件。可见,身份照明自动识别代替手工录入,具有很重要的现实意义级广阔的应用前景。

   身份证号码识别算法主要应用于二代身份证验证过程中的检证系统,主要处理的对象基本上是二维图像。在身份证的制造过程中难免出现一些问题,通过检测身份证号码记录合格和不合格的身份证,进而进一步的处理,通过机器识别身份证号码这样既减少了大量的人工劳动又大大提高了工作效率。

二、设计的内容

学习MATLAB程序设计,利用MATLAB函数功能,设计和实现一种身份证号识别系统。身份证号识别系统的基本工作原理为:将不同途径获取的身份证图像输入到计算机中进行预处理,再对身份证序列号进行搜索、检测、定位,并分割出包含身份证序列号的矩形区域,实现对序列号的快速识别。

由于图像识别技术在静态车牌图像识别中发展较完善,因此本文也参考了车牌图像识别中相关资料和其他参考书。系统可以运行于Windows XP、windows 7等操作系统下,程序调试时使用matlab R2013b。系统所用具体功能模块及函数的工作原理、实现方法及效果图在下一节分步说明。

三、设计的实现

1.载入原始图像

系统调试过程中原始图像的获取从百度图片中获得,在后续系统测试过程中为了验证系统的稳定性和统一性加入直接扫描获得的图片作为原始图像。

>> I=imread('1.jpg');

figure(1),imshow(I);

title('原始图像');%将身份证的原图显示出来,并加标题为“原始图像”。

结果如下:

图1 身份证原始图像

2. 将彩图转换为灰度图并绘制直方图

在数字图像处理中,灰度直方图是最简单且最有用的工具,直方图表达的信息是每种亮度的像素点的个数。直方图是图像的一个重要特征,因为直方图能够用少量的数据表达图像的灰度统计特征。一个灰度级别在范围[0,L-1]的数字图像的直方图是一个离散的函数:

(其中,n是图像的像素总数;nk是图像中第k个灰度级的像素总数;rk是第k个灰度级,k=0,1,2,…,L-1)

具体程序如下:

>> I1=rgb2gray(I);%将RGB图转换为灰度图

figure(4),subplot(1,2,1),imshow(I1);

title('灰度图');%绘制灰度图

figure(4),subplot(1,2,2),imhist(I1);

title('灰度图直方图');%绘制灰度图的直方图

结果如下:

图2 灰度图直方图

3. 原始图像几何变换

由于身份证序列号固定位于图像右下角,为了更好的对图样进行操作及有效处理,先对原始图像中序列号进行粗定位,对原始图像进行剪切及放大操作。(在系统完成后测试代码时发现,对不同采样图像原始大小不同,以下代码调试所用原图大小为[475,225],故对其他采样图像可以压缩至同等大小,故本系统中剪切图像选择区域即具有普适性,压缩程序在系统调试中加以说明,在此略过。)

3.1 图像剪切

在matlab中,用函数imcrop实现对图像剪切操作。该操作剪切的是图像中的一个矩形子图,用户可以通过参数指定这个矩形四个顶点的坐标,也可以交互地用鼠标选取这个矩形。

具体程序如下:

>>I2=imcrop(I,[ 180,300,480,180]);%在一定区域范围内对图像进行剪切

figure(2);imshow(I2);

title('剪切后的图像');%显示图像并命名为“剪切后的图像”

结果如下:

图3 对原始图像进行剪切后的图像

3.2 图像的放大

对原图像进行放大操作,以便于后期处理及有效识别。Matlab中,用函数imresize来实现对图像的缩放。可以使用最近邻值、双线性插值和双三次插值方法。其中直接赋值为和它最相近的像素灰度值,称为最近邻插值法,该方法的主要特点是简单、计算量很小,但放大效果较差,可能会产生马赛克现象。通过数学插值算法来计算相应的像素点的灰度值,这类方法处理效果好,但运算量会有所增加。本文选用的是双线性插值法进行放大操作。

具体程序如下:

>> I3=imresize(I2,2,'bilinea');%对剪切后图像进行双线性插值法进行放大2倍处理

>> figure(3);imshow(I3);

>> title('双线性插值图像');

结果如下:

图4 双线性插值图像

4.边缘检测

图像的边缘是指其周围像素灰度急剧变化的那些像素的集合,她是图像最基本的特征。边缘存在于目标、背景和区域之间,所以它是图像分割所依赖的最重要的依据。由于边缘是位置的标志,对灰度的变化不敏感,因此,边缘也是图像匹配的重要特征。

边缘检测的基本思路是先检测图像中的边缘点,在按照某种策略将边缘点连接成轮廓,从而构成分割区域。由于边缘是所要提取目标和背景的分界线,提取出边缘才能将目标和背景区分开,因此边缘检测对于数字图像处理十分重要。

一阶微分边缘算子也称梯度边缘算子,他是利用图像在边缘处的阶跃性,即图像梯度在边缘取得极大值的特性进行边缘检测的,本文采用sobel算子进行边缘检测。

具体程序如下:

>> I4=edge(I3,'sobel');%用sobel算子进行边缘检测

figure(5),imshow(I4);

title('sobel算子边缘检测图像');

结果如下:

图5 sobel算子边缘检测图像

5. 图像腐蚀

腐蚀运算是形态学处理的基础,腐蚀表示用某种(即某种形状的基元或者结构元素)对一个图像进行探测,以便找出在图像内部可以放下该基元的区域。腐蚀过程相当于“收缩”或“细化”二值图像中的对象,采用matlab中的imerode函数来实现腐蚀操作。

具体程序如下:

se=[1;1;1];%选取结构元素矩阵

I5=imerode(I4,se);%对图像实施腐蚀操作,即膨胀的反操作

figure(6),imshow(I5);%显示图6

title('腐蚀操作');%将图像命名为“腐蚀操作”

结果如下:

图6 进行腐蚀操作后的图像

6.平滑图像

任何一副原始图像在获取和传输等过程中,会受到各种噪声的干扰,使图像质量下降,图像模糊,特征淹没,对图像分析不利。为了抑制噪声改善图像质量所进行的处理称图像平滑或去噪。图像平滑是指用于突出图像的宽大区域、低频成分、主干部分或抑制图像噪声和干扰高频成分,使图像亮度平缓渐变,减小突变梯度,改善图像质量的图像处理方法。图像平滑可以在空间域和频率域中进行。本文采用imclose函数对图像进行平滑处理,imclose是对图像实现闭运算,闭运算也能平滑图像的轮廓,但与开运算相反,它一般融合窄的缺口和细长的弯口,去掉小洞,填补轮廓上的缝隙。

具体程序如下:

>> se=strel('rectangle',[25,25]);%构造结构元素以正方形构造一个se

I6=imclose(I5,se);% 图像平滑、填充图像

figure(7),imshow(I6);

title('平滑图像');

结果如下所示:

图7 平滑图像

7. 删除二值图像的小面积对象

采用matlab中bwareaopen函数删除二值图像BW中面积小于某值的对象,此数值经过调试后在本系统中定位1000。

具体程序如下:

>>  I7=bwareaopen(I6,1000);% 去除灰度值小于1000的部分

figure(8),imshow(I7);

title('删除小面积对象'); %显示滤波后图像并命名为“删除小面积对象”

结果如下:

图8 删除小面积对象

8. 身份证号定位

采用以下程序对身份证号进行定位并显示最终图像,相关程序说明见备注。

具体程序如下:

>> [y,x,z]=size(I7);%返回I7各维的尺寸,存储在x,y,z中

I8=double(I7);%将I7转换成双精度

tic      %tic表示计时的开始,toc表示计时的结束

 Color_y=zeros(y,1);%产生一个y*1的零阵

 for i=1:y

    for j=1:x

             if(I8(i,j,1)==1)

  %如果I8 (i,j,1)即I8的图像中坐标为(i,j)的点值为1,即该点为背景颜色,则Color_y i,1)的值加1

                Color_y(i,1)= Color_y(i,1)+1;%背景颜色像素点统计

            end  

     end       

 end

 [temp MaxY]=max(Color_y);%Y方向序列号区域确定

  %temp为向量Color_y的元素中的最大值,MaxY为该值的索引

 PY1=MaxY;

 while ((Color_y(PY1,1)>=5)&&(PY1>1))

        PY1=PY1-1;

 end    

 PY2=MaxY;

 while ((Color_y(PY2,1)>=5)&&(PY2<y))

        PY2=PY2+1;

 end

 IY=I3(PY1:PY2,:,:);

 %行方向号码区域确定

Color_x =zeros(1,x);%进一步确定x方向的序列号区域

 for j=1:x

     for i=PY1:PY2

            if(I8(i,j,1)==1)

                Color_x(1,j)= Color_x(1,j)+1;               

            end  

     end       

 end

  

 PX1=1;

 while ((Color_x(1,PX1)<3)&&(PX1<x))

       PX1=PX1+1;

 end    

 PX2=x;

 while ((Color_x(1,PX2)<3)&&(PX2>PX1))

        PX2=PX2-1;

 end

 PX1=PX1-1;%对序列号区域的校正

 PX2=PX2+1;

  dw=I3(PY1:PY2-8,PX1:PX2,:);

 t=toc;

figure(9),imshow(IY),title('此身份证号为');%显示最终结果

最终身份证号如下所示:

图9  最终身份证号

四、系统调试

采用不同图像样品对系统进行测试。

  1. 直接扫描身份证作为原始图像

直接运行系统后发现在截图操作时出现问题,所选区域并不是序列号所在位置,结果如下图:

原因在于此扫描样品大小为[804,1270],而程序设计时所选图样为[384,512],因此在此处加入压缩操作。

具体程序如下:

I0=imread('2.jpg')

I=imresize(I0,[402,635])

I1=rgb2gray(I);%将RGB图转换为灰度图

figure(4),subplot(1,2,1),imshow(I1);

…………

将此程序添加至源代码中,重新测试系统后,最终结果如下:

证明系统运行较好,系统测试结束。

参考文献

  1. 梁原. 基于 MATLAB 的数字图像处理系统研究 [D][D]. 长春理工大学, 2008.
  2. 何东健. 数字图像处理. 西安电子科技大学出版社, 西安[J]. 2003.
  3. 勒中鑫. 数字图像信息处理[M]. 国防工业出版社, 2003.
  4. 张长江. 数字图像处理及其应用. 清华大学出版社, 2013.
  5. 汪青,干静 模式分类器在手写体数字识别中的应用比较研究[J].装备制造技术,2008,5(6):40-43
  6. 谢佳峰, 谭冠政. 基于 MATLAB 的静止图像车牌定位研究[J]. 可编程控制器与工厂自动化 (PLC FA), 2009 (1): 68-71.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值