1. 课题介绍

本课题为基于连通域分割和模板匹配的二代居民身份证号码识别系统,带有一个GUI人机交互界面。可以识别数十张身份证图片。

资源链接:https://download.csdn.net/download/matlab1998_vx/14942740

首先从身份证图像上获取0~9和X共十一个号码字符的样本图像作为后续识别的字符库样本,其次将待测身份证图像进行去噪、灰度化、二值化、水平投影切割,垂直投影并切割,将待测身份证号码分割出来,然后进行待测号码图片与字符库样本对比计算、识别判断、最终确定待测身份证号号码。本设计关于身份证号码的识别是基于Matlab软件的基础上进行的。

  1. 算法流程
  2. 输入身份证图片;2、根据几何信息定位身份证号码位置并且切割;3、利用连通域算法切割字符;4、利用模板匹配算法进行识别
  1. GUI界面设计

四、运行截图

五、源码

1、打开图像

[FileName,PathName] = uigetfile('*.jpg','Select an image');
if PathName~=0str = [PathName,FileName];T=imread(str);axes(handles.axes1);imshow(T);
end
预处理
[m,n,r]=size(I);%图像的像素为width*height
%%%%%蓝色字体变黑
myI=double(I);for i=1:mfor j=1:nif((myI(i,j,1)>=15)&&(myI(i,j,1)<=130)&&((myI(i,j,2)<=165)&&(myI(i,j,2)>=90))&&((myI(i,j,3)<=220)&&(myI(i,j,3)>=135))) % 蓝色RGB的灰度范围I(i,j,1)=40; %红色分量I(i,j,2)=40; %绿色分量I(i,j,3)=40; %蓝色分量end  end
end
%figure, imshow(I);title('变色后的图像');width=round(0.9*n);height=round(0.87*m);
rx=round(0.05*n);cy=round(0.075*m);
I=subim(I,height,width,rx,cy);
%figure,imshow(I);if sum(size(I)>0)==3 %倘若是彩色图--2维*3,先转换成灰度图
I=rgb2gray(I);
end
%figure,imhist(I);
x=3;%行数分为x部分
y=1;%列数分为y部分
BW=erzhihua(I,x,y);[n m l]=size(BW);%图像的像素为m*n
c = [0.65*m 0.65*m m m];
r = [0 0.85*n 0.85*n 0];
BW = roifill(BW,c,r);BW=imadjust(BW);%使用imadjust函数对图像进行增强对比度
% Convert to BW
threshold = graythresh(BW);
BW =~im2bw(BW,0.6*threshold);[image_h image_w]=size(BW);
% Remove all object containing fewer than (imagen/80) pixels
BW = bwareaopen(BW,floor(image_w/80));
% 滤波
imshow(BW);
  1. 识别
[image_h image_w]=size(imagen);
%figure;imshow(imagen);title('INPUT IMAGE')% Convert to gray scale
if size(imagen,3)==3 %RGB imageimagen=rgb2gray(imagen);
end%Storage matrix word from image
word=[ ];
re=imagen;
% Compute the number of letters in template file
num_letras=size(templates,2);% Label and count connected components[L Ne] = bwlabel(imgn);    n=1;%记录循环次数
while(n<=Ne)char_flag=0;%为0时,是第一次判断这个连通域flag=1;%初始化两个连通域属于同个字符while(flag==1)       if char_flag==0[r,c] = find(L==n);Width0=max(r)-min(r);%连通域宽度Height0=max(c)-min(c);%连通域高度Radio0=Width0/Height0;%连通域宽高比Square0=Width0*Height0;%连通域面积maxr=max(r);maxc=max(c);minr=min(r);minc=min(c);endif n<Ne[r1,c1] = find(L==(n+1));%寻找下一个连通域Width1=max(r)-min(r);%连通域宽度Height1=max(c)-min(c);%连通域高度Radio1=Width1/Height1;%连通域宽高比Square1=Width1*Height1;%连通域面积Uheight=max(maxc,max(c1))-min(minc,min(c1));%合并后高度Uwidth=max(maxr,max(r1))-min(minr,min(r1));%合并后宽度Uradio=Uwidth/Uheight;%合并后的宽高比Oheigth=Height0+Height1-Uheight;%重叠高度Owidth=Width0+Width1-Uwidth;%重叠宽度Osquare=Oheigth*Owidth;%重叠面积elseflag=0;%这是这一行最后一个连通域endph=5;%边界因子pw=7;if(flag==1)&&((Owidth>=-(image_w/pw)&&Owidth<=0)||(Oheigth>=-(line_h*0.3)&&Oheigth<=0))%两个连通域较近,但不重叠if((Uradio>=0.8)&&(Uradio<=1.2))%认为两个连通域属于同一个字符elseif Uheight<line_h*0.4;%连通域的合并之后高度过小的,认为是一个字符的一部分,很可能是边旁部首else flag=0;%否则这两个连通域属于不同字符  endelseif(flag==1)&&(Owidth<-(image_w/pw))%两个连通域里相距较远flag=0;%两个连通域属于不同字符% elseif(flag==1)&&((Owidth>0)||(Oheigth>0))%两连通域重叠elseif(flag==1)&&((Owidth>0))%两连通域重叠if(((Uradio>=0.78)&&(Uradio<=1.3)))%认为两个连通域属于同一个字符elseif(Osquare>=0.4*min(Square0,Square1)&&(Uwidth<image_w/45))elseflag=0;%两个连通域属于不同字符endelse flag=0;%两个连通域属于不同字符endif flag==1%经过上面判断,两个连通域属于同一个字符,进行连通域合并Width0=Uwidth;%连通域宽度Height0=Uheight;%连通域高度Radio0=Width0/Height0;%连通域宽高比Square0=Width0*Height0;%连通域面积maxr=max(maxr,max(r1));maxc=max(maxc,max(c1));minr=min(minr,min(r1));minc=min(minc,min(c1));n=n+1;%指向下一个连通域char_flag=1;endend  %while(flag==1)的end% Extract lettern1=imgn(minr:maxr,minc:maxc);  % Resize letter (same size of template)img_r=imresize(n1,[36 23]);plot_flag=plot_flag+1;%Uncomment line below to see letters one by one% imshow(img_r);title(n);pause(0.5)%-------------------------------------------------------------------% Call fcn to convert image to textletter=read_letter(img_r,num_letras);% Letter concatenationword=[word letter];n=n+1;end % while(n<=Ne)的end%fprintf(fid,'%s\n',lower(word));%Write 'word' in text file (lower)set(handles.edit1,'string',word);word=[ ];

MATLAB身份证号码识别系统(GUI论文)相关推荐

  1. 【身份证识别】形态学二代身份证号码识别系统【含GUI源码 948期】

    一.代码运行视频(哔哩哔哩) [身份证识别]形态学二代身份证号码识别系统[含GUI源码 948期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MA ...

  2. 基于Matlab的虹膜识别系统(GUI界面)

    点击查看:基于Matlab的虹膜识别系统(GUI界面) 文件大小:56M 操作系统:Windows10旗舰版 开发工具:Matlab2016.2018.2019.2020 开发语言:.m 代码注释:

  3. 基于MATLAB的人脸识别系统GUI

    基于MATLAB的人脸识别系统GUI,可以识别出不同表情的人脸 演示视频:[基于matlab人脸识别系统-哔哩哔哩] https://b23.tv/Pj8j0Uu 运行截图: 源码获取+卫星:DX52 ...

  4. 【身份证识别】形态学二代身份证号码识别系统【含GUI Matlab源码 948期】

    ⛄一.身份证号码识别简介 1 引言 作为居民身份的象征,身份证是居民身份的唯一标识,它已成为生活中必不可少的证件.在火车站.酒吧等公共场所,流动人口大人员复杂,警察需要对公民的身份证进行核对,排除可疑 ...

  5. matlab 函数return_基于MATLAB的指纹识别系统【论文,GUI】

    一.课题介绍 本设计为基于MATLAB的指纹识别系统.本设计系统主要对指纹图像进行三方面处理:图像预处理.特征提取和特征匹配.图像预处理包括四个步骤:图像灰度化.滤波增强.二值化.细化,对指纹图像进行 ...

  6. matlab 二值化_基于MATLAB的指纹识别系统[GUI界面+万字技术文档+语音播报]

    一.课题介绍 本设计为基于MATLAB的指纹识别系统.本设计系统主要对指纹图像进行三方面处理:图像预处理.特征提取和特征匹配.图像预处理包括四个步骤:图像灰度化.滤波增强.二值化.细化,对指纹图像进行 ...

  7. matlab speex的语音处理模块_基于MATLAB的条形码识别系统[GUI,可识别几十个图片]...

    1.1 应用MATLAB识别条形码总体设计 本设计为基于MATLAB的条形码识别系统,带有一个GUI界面. GUI设计界面 1.1.1 程序总体设计思路 在上节中我们简单的介绍了MATLAB的发展以及 ...

  8. Java 身份证号码识别系统

    最近发现一个有趣的项目. 这个项目是通过学习https://gitee.com/nbsl/idCardCv 后整合 tess4j,不需要经过训练直接使用的,当然,你也可以进行训练后进行使用. 该项目修 ...

  9. Java身份证号码识别系统

    项目介绍 遇到问题 身份证号码识别 Required Software 项目更新 项目地址 项目介绍 本项目是通过学习https://gitee.com/nbsl/idCardCv 后整合tess4j ...

  10. 牛逼了!github上一个 身份证号码识别系统

    前言 最近发现一个有趣的项目. 这个项目是通过学习https://gitee.com/nbsl/idCardCv 后整合 tess4j,不需要经过训练直接使用的,当然,你也可以进行训练后进行使用. 该 ...

最新文章

  1. 利用OpenCV、Python和Ubidots构建行人计数器程序(附完整代码)
  2. 中国法院裁定:禁售部分型号苹果手机
  3. 历史转折中的英伟达:百亿豪赌出奇迹 实习生项目救主
  4. 【软件工程】CMMI 能力成熟度模型集成 ( CMMI 过程管理过程域 | CMMI 项目管理过程域 ) ★
  5. python- 基础 range方法的使用
  6. 带有JAX-WS和Spring的Web服务应用程序
  7. python 修饰器 参数_具有参数的Python类修饰器,但未运行修饰的...
  8. linux账号权限管理
  9. 【微信小程序】关于小程序的协同工作与发布的工作流程
  10. 软件构造Lab2-Playing Chess
  11. 解不等式之调和级数不等式
  12. MATLAB仪表表盘数字识别
  13. dau计算公式_如何预估一个产品的日活(DAU)?
  14. Convolutional Two-Stream Network Fusion for Video Action Recognition翻译
  15. 嵌入式未来趋势是什么?
  16. 【渝粤题库】陕西师范大学200551 英语语音
  17. Ubuntu 镜像站使用帮助 清华大学开源软件镜像站
  18. [转载] 信息系统项目管理师视频教程——01 信息系统综合知识总论
  19. 浅谈情报的实践与落地
  20. 备战网络工程师认证考试:历年真题合集

热门文章

  1. 手机测试的主要测试内容
  2. 应聘网站编辑常见面试题
  3. sql java驱动程序_microsoft sql server jdbc驱动下载
  4. Virtualbox源码分析6_VMM虚拟化实现源码分析3 HMVMXR0.cpp
  5. linux解压win10iso,ISO文件的解压和WINISO問題
  6. 如何成为一名AI人工智能算法工程师?
  7. 串行加法器 并行加法器 超前进位加法器
  8. jQuery+PHP+Mysql在线拍照和在线浏览照片
  9. linux系统ca证书认证失败修复过程记录
  10. .net构建轻微博实时热搜新闻站