APP下载

移动端身份证号码识别算法实现

2019-02-07朱健马汉杰冯杰杨芷晴韩煌达王健

软件导刊 2019年12期
关键词:移动设备卷积神经网络

朱健 马汉杰 冯杰 杨芷晴 韩煌达 王健

摘要:为实现多场景下快速便捷的身份证号码提取,提出一种基于移动端的身份证号码识别算法。该算法利用搭载Android操作系统的移动设备,进行身份证号码区域定位和提取;首先利用身份证特殊的颜色分布,选取合适的通道分量;再通过图像阈值分割、噪声处理以及形态学处理,将身份证号码图像二值化;同时针对拍摄过程中可能出现的图像倾斜情况,通过图像旋转和投影法进行水平矫正;然后通过投影法将单个字符提取出来;最后使用卷积神经网络进行图像识别。通过MIX手机测试表明,单次身份证号码图像识别时间约为156ms,准确率约为99.1%,能够满足鲁棒性和实时性要求。

關键词:移动设备;轮廓提取;倾斜校正;卷积神经网络

DOI:10.11907/rjd k.191330

中图分类号:TP312 文献标识码:A 文章编号:1672-7800(2019)012-0019-03

0引言

身份证是最重要的个人标识工具,越来越多的行业要求实名制和身份证登记管理,如何快速便捷地提取身份证信息是研究热门领域。传统的OCR算法多采用基于模板匹配或基于人工神经网络的方式。基于模板匹配方式易受噪声干扰,适用于目标特征明显且模板库小的场景;基于人工神经网络方式存在系统复杂和计算量大的缺陷。深度学习(Deep Learning,DL)是近年来热门研究方向,Le-cun等提出的卷积神经网络(convolutional Neural Net-work,CNN)能够自动提取特征值,在模式分类领域表现出色。

本文使用OCR(Optical Character Recognition,光学字符识别)算法进行身份证号码提取和识别,该算法运行在Android移动客户端。识别步骤如下:首先进行身份证号码区域提取,利用拍摄图像的固定位置获取身份证号码大致位置;然后利用身份证特殊的颜色分布,选取合适的通道分量过滤颜色信息的干扰;再通过图像阈值分割采集证件号码信息;通过噪声处理减轻噪声的干扰,通过形态学处理寻找身份证号码的具体位置。同时针对拍摄过程中可能出现的图像倾斜问题,通过图像旋转和水平投影法进行水平矫正,最后通过垂直投影法将单个字符提取出来。得到单个字符图像后,使用卷积神经网络进行身份证号码的训练和识别。

1身份证号码字符提取

首先在显示屏幕上添加辅助框,将身份证号码放置在该框内。通过提取该区域图像,能够进一步减小待处理区域并获取准确的身份证号码位置。进一步提取蓝色分量可有效排除身份证文字信息和背景信息的干扰,如图1所示。

最大类间方差法是一种自适应的阈值确定方法,又叫大津法,简称OTSU。选定一个阈值T,将图像分成背景和目标。背景和目标之间的类间方差越大,说明构成图像的前后部分差别越大,当部分目标错分为背景或部分背景错分为目标都会导致两部分差别变小。因此,使类间方差最大的分割意味着错分概率最。计算公式如下:

移动手机拍摄得到的数字图像会受到环境影响,或多或少带有噪声干扰,有可能在传输过程中产生,也有可能在量化等处理过程中产生。中值滤波是基于排序统计理论的一种有效抑制噪声的非线性信号处理技术,其基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近真实值,从而消除孤立的噪声点,其处理结果如图3所示。由于身份证号码之间排列紧密,通过膨胀操作可以将各个号码相互连结,多次膨胀操作结果如图4所示。

实际拍摄过程中,身份证会出现左右倾斜状态,对此需要通过仿射变换对图像进行水平矫正。利用仿射变换进行图像旋转,不改变图像形状,同时保持图像中各线条的相对位置关系,即正方形变换后仍为正方形且面积不变,其数学表达式如式(3)所示。

其中,A为2×2大小的矩阵,B为2×1大小的向量,T为变换后的向量空间。通过仿射变换对图像进行左右旋转,然后对图像进行水平投影,从左到右扫描统计白色区域长度。当白色长度最短时,完成水平矫正,矫正后的图像如图5所示。最后利用投影法对图像进行切分,从上到下对图像进行扫描,如图6所示。记录目标和背景之间的分割点,提取出单个字符图像,得到如图7所示的图像。

2卷积神经网络设计

卷积神经网络模型LeNet-5在字符识别、图像分类等应用中效果很好,本文在LeNet-5网络基础上进一步调整网络结构,以实现身份证号码11位数字的识别。修改后的网络结构如图8所示。首先输入层大小调整为28×28;第一层卷积层使用8个滤波器,每个滤波器大小为3×3,输出数据体大小为6×26×26;第二层下采样层执行max运算,滤波器大小为2×2,输出数据体大小为6×13×13;第三层卷积层使用16个滤波器,卷积核大小为3×3,输出数据体大小为16×6×6;第4层下采样层执行max运算,滤波器大小为2×2,输出数据体大小为16×3×3;第5层卷积层使用16个滤波器,卷积核大小为3×3,输出数据体大小为16×2×2;第6层下采样层执行max运算,输出大小为16×1×1;最后输出层使用11个滤波器,输出大小为11×1×1。

3实验结果与分析

3.1成功率测试

测试样本集共有1000张图像。身份证号码由数字0-9和字母x共11个字符随机组成。采集实验室成员身份证照片,利用上述图像处理方法剪切成单个字符图像,收集每类图像5000张,共55000张图像作为样本数据库。利用Torch深度学习框架进行卷积神经网络模型训练。硬件环境为Intel i7-7800X CPU和NVIDIA Titan x GPU,共剪切成991张图片,剪切成功率为99.1%。未剪切成功的图像如图9所示,剪切失败原因有图像拍摄模糊、高曝光和低亮度等。

识别精度如图10所示。当训练迭代次数超过60次后,生成的参数能够实现接近100%的测试精度。

3.2时间测试

基于移动端的身份证号码识别算法运行在Android移动端,测试手机为小米MIX2,其配置为1200万像素后置摄像头,6G内存,骁龙835CPU。提取身份证号码时间为76ms;测试LeNet-5网络和改进LeNet-5网络的识别耗时如表1所示。LeNet-5网络识别一次身份证号码图像共18张号码字符图像花费104ms,而改进LeNet-5网络仅花费80ms,相比之下检测时间提高23.1%,所以使用改进LeNet-5网络进行身份证号码识别总时间为156ms。

4结语

为实现多场景下居民身份证号码快速识别,本文设计了基于移动端的身份证号码识别算法。测试表明,本文算法达到99.1%的准确率,单次检测时间为156ms,能够满足鲁棒性和实时性要求。但在低亮度、高曝光或者模糊情况下,本文算法还不能很好地完成,需要进一步研究和调试。

猜你喜欢

移动设备卷积神经网络
基于卷积神经网络温室智能大棚监控系统的研究
基于深度卷积神经网络的物体识别算法
移动端界面设计中“容错性”思考