基于MATLAB的身份证号识别
2016-03-21姜富宽
姜富宽
基于MATLAB的身份证号识别
姜富宽1,2
1.天津职业技术师范大学,天津 300222 2.驻马店技师学院,河南 驻马店 463000
对身份证进行自动识别与手工录入相比较,能够有效提高工作效率。以居民身份证为研究对象,从身份证图像中提取身份证号码数字0~9的空间分布特征和结构特征,应用Matlab软件结合模板匹配法实现对身份证号码进行快速识别。
Matlab;身份证号; 字符识别
1 总体设计方案
由于我国第二代身份证是彩色的,而且是大小固定的,身份证右下方有18位号码,字体类型是OCR-B10BT。基于以上这些特点,进行身份证图像采集、图像预处理、定位、字符分割、字符识别等过程最后输出身份证号码[1]。
2 图像采集
身份正号的提取和识别,使用图像处理的方法进行提取。首先需要做的是,采集获取高质量的身份证图像信息,考虑到现在的第二代身份证是彩色的,所以推荐使用彩色的CCD相机采集获取图像。将身份证,放置在黑色背景的平板桌边上面,进行采集,并且光照尽量均匀。这样方便后续的处理。将采集到的身份证图像保存至C:UserscarrothsDesktop。命名为1.jpg。
3 图像预处理
3.1 载入图像
R=imread('C:UsersadminDesktopmatlab图片1.jpg');
figure(1);
imshow(R);title('图像载入');将待识别身份证的原图显示出来。
3.2 将彩色图像转换为灰度图并绘制直方图
I1=rgb2gray(R);
figure(2);
subplot(1,2,1);imshow(I1);title('灰度图');
figure(2);
subplot(1,2,2);imhist(I1);title('灰度直方图');灰度图与绘制的灰度直方图如图1所示。
图1 灰度图与绘制的灰度直方图。
3.3 用roberts算子进行边缘检测和腐蚀操作
I2=edge(I1,'roberts',0.08,'both');
figure(3);imshow(I2);title('roberts算子边缘检测');
se=[1;1;1];
I3=imerode(I2,se);
figure(4);imshow(I3);title('图像腐蚀操作');
3.4 平滑图像及删除二值图像的小对象
se=strel('rectangle',[40,40]);
I4=imclose(I3,se);
figure(5);imshow(I4);title('平滑图像');
I5=bwareaopen(I4,2000);
figure(6);imshow(I5);title('删除二值图像的小对象');……
