BP算法的身份证号码识别

article/2025/9/28 9:57:15

摘 要:基于反向传播算法的多层前馈网络(简称BP神经网络)在图像处理方面应用较为广泛。目前,身份证号码识别技术 在图像识别领域迅猛发展,为提高识别身份证号码的速度及准确性,本文研究一种基于BP神经网络的身份证号码识别系统。首 先,将身份证图像进行预处理,接着利用MATLAB对身份证号码进行定位以及分割,然后利用BP神经网络,通过调用MATLAB神 经网络工具箱,设置相关参数对身份证号码进行训练、匹配数据库中的数字,最后识别并输出身份证号码。实验结果表明,基于 BP神经网络的身份证号码识别正确率为95% ,该系统具有较高的准确率以及鲁棒性。


自身份证在我国开始使用以来,身份证号码便被广泛应用 于确定身份信息。在大多数情况下,采用人工方式来登记身份 证号码,浪费了大量的时间和人力资源。另外,身份证号码识 别技术⑴属于图像识别领域的研究,随着图像识别技术越来越 普遍,利用神经网络⑵处理图像识别技术也吸引了群众的关 注。其中,BP神经网络a数据流的正向传播与误差函数的反 向传播相互结合,大大提高了图像识别的准确性和鲁棒性。

本文将BP神经网络应用于身份证号码的识别。结合 Matlab便捷的神经网络工具箱,⑷不仅避免了编程代码的复杂 性,又能自动分析出网络性能。BP神经网络只需输入身份证 图像,经过预处理后对字符进行训练,即可学习字符的特征,识 别出身份证号码。

1身份证号码图像的预处理

为了提高计算机处理时的运行速度和身份证号码识别的 准确率,我们需要对图像进行预处理。

首先运用加权平均值的方法,对图像灰度化。

然后使用直方图法来确定二值化阈值。在灰度直方图中, 前景和背景都会形成高峰,两个峰间的最低点即阈值点。根据 此阈值对图像二值化。

由于图像噪声的存在,需要先对图像进行开运算,⑸来去 除孤点、毛刺、消除小物体的边界,这里采用方形结构进行开 运算。

2身份证号码的定位与剪切

身份证是一种格式相对规范的证件,从整体来看,它的布 局是一样的,所以要想完成身份证号码的提取,首先要提取出 身份证号码在身份证上对应的区域,它位于证件下方,距离上、 下、左、右边缘分另U为44 mm,6 mm,29 mm, 10 mm0

为了能够准确的提取出身份证号码图像,去除多余的部 分,这里采用连通域标记算法⑹进行提取。连通域标记图如图 1所示。在Matlab中运用imcrop函数对图像进行剪切,如图2 所示。身份证号码采用水平投影和垂直投影分割的方式进行 切割,得到18个字符图像。如图3所示。

3基于Bp神经网络的字符识别

3. 1 Bp神经网络

BP神经网络由三部分组成,如图4所示。分别是输入层, 若干隐含层和输出层。各层通过线路连接,并且每条连接线具 有相应的权重值w,通常,除了输入层之外,每个神经元还有相 应的偏置b。⑺除了输入层中的神经元外,每个神经元通过加 权求和得到输入值z。

BP算法包括前向传输和逆向反馈。前向传输即从输入 层二〉隐含层二〉输出层,逐层计算所有神经元输出值的过程。 逆向反馈即误差信号的反向传播,误差信号从输出端反馈到 输入端来调整网络的权值,通过反复改变网络权值使网络的 输出不断逼近期望值。


v2-1646ab3e64fd091729fc4c47e7d024f3_b.jpg

v2-71fdb9c6e1aa4b2bd54a3a13ba59065d_b.jpg

实验时通过对大量身份证号码图像的剪切,建立训练数据 库。输入需要识别的身份证原图,通过对图像的预处理及字符 的切割,得到测试集。识别时,测试集和数据库相匹配,得到识 别结果,如图6所示,识别出的身份证号码将按顺序排列显示, 如果未能识别成功,则显示“识别错误”。MATLAB对于bp神 经网络的性能如图7所示。

输入层 隐含层 输出层 图4 Bp神经元结构图

Fig. 4 Neuron structure chart

3.2模型建立

本文中Bp神经网络模型的建立分为五个步骤,如图5 所示。

-
建立训练库

络始并置数 网初化设参

调 用数据流


图5流程图

Fig. 5 Flow chart

在参数设置方面,我们选用留一法,:8]分别将输入层、隐含 层、输出层维数设置为24,35,11。在原始初始化以后,将隐含

层和输出层的阈值bl、b2置0,在此基础上,采用rand函数随 机产生隐含层到输出层的权重参数。

一般来说,学习率9选取为0.01-0. 08,学习率过大可能导 致系统的不稳定,但学习率过小会导致收敛太慢,需要较长的 训练时间。采用变化的自适应学习率,使网络在不同的阶段设

置不同的学习率,可以减少寻找最佳学习率的训练次数和时 间。学习率设置为0.1,期望误差设置为0.001。

参数设置完成后,我们调用MATLAB的bpnn工具箱,利用 newff函数输入参数,利用net函数对身份证字符图像进行训练。

3.3实验结果及分析

训练经过四次迭代,用时0.01s,误差为0.00916,最大验证 失败次数为0。网络训练次数少,既省时又准确。

图7 BP网络性能

Fig. 7 Bp network performance image

实验采用150张图像进行测试,成功的身份证图像共143 张,准确率为95%。将身份证号码用以上方法进行分割,共得 到2700个数字图片。其中有六张图像各有1个数字识别失 败,有一张图像由于亮度太暗导致切割错误,数字识别的准确 率达到99.1%0

识别出的数字是2

识别出的数字是1
识别出的数字是。

识别出的数字是2

识别出的数字是1

识别出的数字是1

识别出的数字是1

识别出的数字是9

识别出的数字是8

识别出的数字是2

识别出的数字是1

识别出的数字是2

识别出的数字是1

识别出的数字是8

识别出的数字是1

识别出的数字是4

识别出的数字是1
识别出的数字是x

id =

'21021119821218141x,

图6识别结果

Fig. 6 Recognition result image


4结论

本文围绕身份证号码的识别展开研究。将Bp神经网络应 用于身份证号码的识别中,该网络结构简单且训练时间短。此 外,运用Matlab神经网络工具箱编写程序时,只需更改训练参数 即可达到仿真效果,节省了大量的测试时间。实验结果表明,该 方法识别的正确率达到95% ,具有很高的准确性和鲁棒性。

参考文献:

[1 ]赵兴旺,李天阳,汪亮,等.基于数码设备的二代身份证 号码识别系统[J].计算机与现代化,2014(6) : 132-136.

[2] 李晶晶.基于神经网络的图像识别方法研究[D].北 京:华北电力大学,2018.

[3] 冯立颖.改进的BP神经网络算法及其应用[J].计算 机仿真 2010,27(12) :172-175,

[4] 崔鑫.基于神经网络工具箱的能源预测[J].科技视界, 2018(13) :50-52,

[5] 沈阳,宓超,凤宇飞.形态学开运算在车型图像去噪中 的应用[J].中国科技信息,2015(18) :52-53.

[6 ]马益杭,占利军,谢传节,等.连通域标记算法的并行化 研究[J].地理与地理信息科学,2013,29(4) :67-71,

[7] 付海兵,曾黄麟.BP神经网络的算法及改进[J].中国 西部科技,2012,11(8) :23-24.

[8] 蒋文斌,彭晶,叶阁焰.深度学习自适应学习率算法研 究[J]•华中科技大学学报(自然科学版),2019,47(05) :79-83,

[9] 王雪红,刘晓青,陶海龙,等.优化BP神经网络的位移 预测模型[J].水利水运工程学报,2014(02) :38-42.


http://chatgpt.dhexx.cn/article/FxnrHD0n.shtml

相关文章

Matlab实现身份证号码快速识别

用Matlab 实现身份证号码快速识别 摘 要: 探讨身份证号码的快速识别。 首先从身份证图像中获取 0~9 共 10 个号码数字的样本图像, 从中提取其空间分布特征和结构特征; 再从待识别的身份证图像中提取各号码数字的空间分布特征和结构…

身份证号码的编码规则及校验

前言 本文内容适用于二代身份证,如无特殊说明,本文中所说的身份证皆指二代身份证。 笔者目前使用的jdk版本是1.6.0_29,Eclipse版本是Juno Release,Build id 20120614-1722。如无特殊说明,本文所有的Java代码都是基于…

基于Python实现身份证号码验证

基于Python实现身份证号码验证 摘要: 该设计主要使用python语言来实现身份证号验证程序。它运用 tkinter模块生成GUI界面。当用户输入身份证号,按下检查按钮,即可判断身份证号是否正确。该程序简洁,灵活,执行效率高。 关键词: 身…

java验证身份证号码的合格性

中国居民身份证校验码算法步骤如下: 将身份证号码前面的17位数分别乘以不同的系数。从第一位到第十七位的系数分别为: 7-9-10-5-8-4-2-1-6-3-7-9&…

Python+Opencv身份证号码区域提取及识别

前端时间智能信息处理实训,我选择的课题为身份证号码识别,对中华人民共和国公民身份证进行识别,提取并识别其中的身份证号码,将身份证号码识别为字符串的形式输出。现在实训结束了将代码发布出来供大家参考,识别的方式…

身份证号码案例

我国的居民身份证号码,由由十七位数字本体码和一位数字校验码组成。请定义方法判断用户输入的身份证号码是否合法,并在主方法中调用方法测试结果。规则为:号码为18位,不能以数字0开头,前17位只可以是数字,最…

Python之身份证号码的校验

该文章已同步收录到我的博客网站,欢迎浏览我的博客网站,xhang’s blog 问题描述: 中华人民共和国居民身份证号码由17 位数字和1位校验码组成。 其中,前6位为所在地编号,第7~14 位为出生年月日,第15~17位为登…

JAVA 身份证号码的验证

一、身份证结构和形式 在通用的身份证号码有15位的和18位的; 15位身份证号码各位的含义: 1、1-2位省、自治区、直辖市代码; 2、3-4位地级市、盟、自治州代码; 3、5-6位县、县级市、区代码; 4、7-12位出生年月日,比如670401代…

等价类划分测试—身份证

目录 0.题目要求: 注意:一个测试用例只能覆盖一个无效等价类,但可以覆盖尽可能多的前面未覆盖到的有效等价类。 1.划分等价类 1.1有效等价类 1.2无效等价类 2.测试用例: 0.题目要求: 针对国内18位身份证号码验证…

二维码文件分析

将二维码保存,进行解码 进行base64解码,网址:https://www.sojson.com/base64.html。第一次解码:6LZ5Liq5bCx5piv6aqM6KB56CB77yaQkozNVVCNVNZNg 第二次解码:这个就是验证码:BJ35UB5SY6 得到key

Base64[再谈Base64] -- 附练习源代码

我打赌当你见到Base64这个词的时候你会觉得在哪里见过,因为在你能够上网看到这篇文章的时候你已经在后台使用它了。如果您对二进制数有所了解,你就可以开始读它了。 打开一封Email,查看其原始信息(您可以通过收取、导出该邮件用文…

KgoUI(3) 之 vue + Sass

框架源代码:码云 直接上步骤: 第一:sass需要的模块 (没有安装cnpm 就用 npm咯) cnpm install --save-dev sass-loader cnpm install --save-dev node-sass cnpm install --save-dev sass-resources-loader…

安卓项目实战之强大的网络请求框架okGo使用详解(四):Cookie的管理

Cookie概念相关 具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。同时我们也看到,由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制是需要借助于cookie机制来…

Windows下安装Ginkgo测试框架

终端执行命令 #切换至GO安装路径 cd F:\Go\goProject\src\github.com F:#安装Ginkgo及其附加库 go get github.com/onsi/ginkgo/ginkgo go get github.com/onsi/gomega结果安装其附加库时开始报错 package golang.org/x/net/html/charset: unrecognized import path "g…

HTTPSConnectionPool(host=‘files.pythonhosted.org‘, port=443): Read timed out.

python 下载第三方库的时候一直报错怎么办, pip --default-timeout1000 install -U pip 尝试了延时操作依然不行,不能获取 这种情况有可能是你开了VPN或者是其他的软件,退出下载即可

Go:构建应用程序的10大框架

文章目录 简介一、CLI 命令(spf13/cobra)二、配置读取器(spf13/viper)三、Web 框架(labstack/echo)四、依赖注入(uber-go/fx)五、Swagger Generator, UI 和 Validation1. Swagger generator (swaggo/swag)2. Swagger UI (swaggo/echo-swagger)3. Swagger validation (go-swagge…

KgoUI(2) 之 vue + layui

框架源代码:码云 我接触layui 已经快2年多了(Layui刚出的时候我就开始关注了),vue 和 layui并不是天生一对,elementui 和vue配合更加亲密无间。我认为layui的弹层layer是当前前端最好的弹层。 这里依旧选择layu…

2021年全国大学生网络安全邀请赛暨第七届“东华杯“上海市大学生网络安全大赛Writeup

2021年全国大学生网络安全邀请赛暨第七届"东华杯"上海市大学网格全大赛Writeup Misc checkin 题目给了AGYAbABhAGcAewBkAGgAYgBfADcAdABoAH0- 是UTF-7编码,解码得到flag flag为: flag{dhb_7th}project 下载附件,解压之后发现这…

玩转Kafka—SpringGo整合Kafka

玩转Kafka—Spring整合Kafka 1 新建Spring Boot项目&#xff0c;增加依赖 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependenc…