摘 要: 探讨身份证号码的快速识别。 首先从身份证图像中获取 0~9 共 10 个号码数字的样本图像, 从中提取其空间分布特征和结构特征; 再从待识别的身份证图像中提取各号码数字的空间分布特征和结构特征; 最后用相似系数最大和结构特征一致准则对各号码进行识别, 并应用 Matlab 编程实现了身份证号码的快速识别。
关键词: 身份证号码; 识别; Matlab; 分布特征; 结构特征; 相似系数
引言
作为居民身份的象征, 身份证已成为生活中必不可少的证件。 出于保障公民合法权益和社会治安的考虑, 越来越多的行业都开始要求进行实名制和身份证登记管理, 如公安、 海关、银行、 通信、 网吧及酒店旅馆、 洗浴业等, 因此利用计算机进行自动识别录入尤为必要。 身份证自动识别代替手工录入可以大大提高工作效率, 因而具有广阔的应用前景。
本文以第二代居民身份证为研究对象,从身份证号码图像中提取号码数字 0~9 的空间分布特征和结构特征, 采用相似系数最大和结构特征一致准则, 应用 Matlab 软件编程实现了身份证号码的快速识别。
- 基本原理
身份证号码识别技术的基本原理如图 1 所示。
图 1 身份证号码识别技术的基本原理图
第二代居民身份证的大小是固定的, 宽度为 8.6cm, 高度为 5.4cm, 因此扫描身份证得到的图像可以缩放到同一个大小, 本文采用的图像宽度为 366 个像素, 高度为 233 像素, 这样在从身份证图像中提取号码数字图像时可以快速定位。
由于第二代居民身份证的号码字体比较特殊, 所以需要从身份证图像中获取号码数字 0~9 的图像作为样本, 用于提取特征。 样本数字图像如图 2 所示。
该样本数字图像为真彩色图像, 需要对其进行预处理。 首
图 2 第二代居民身份证号码样本数字图像
先将真彩色数字图像转化为二值图像: 设 P 为真彩色数字图像的任意点, P 的颜色三分量值分别为 r、 g、 b, 若 0.299*r+ 0.587*g+0.114*b<0.5, 则二值图像对应的点为白色, 否则为黑色。 然后对二值图像进行数字分割, 将图像中的 10 个数字完整、 单独地分割出来。 最后对分割后的每个数字图像进行规范化处理: 若单个数字图像的整行或整列全为 0, 则删除该行或该列。 预处理后的各样本数字图像如图 3 所示。
图 3 预处理后的样本数字图像
注: 为达到较好的视觉效果, 在每个样本数字图像周围増加了一个黑色矩形方框。
完成预处理后, 接下来就是提取每个数字的特征。 本文考虑每个数字的空间分布情况和形状结构特点, 作为分类识别的特征。
-
- 空间分布特征
首先将预处理后的样本数字图像看成是有质量的图形, 其中白色点的质量为 1, 黑色点的质量为 0。 该图形的质心坐标总体上能反映对应数字的空间分布情况, 用 x1 和 x2 分别表示质心横坐标和纵坐标, 则 x1 等于该样本数字图像中白色点的横坐标之和除以白色点的个数; x2 等于该样本数字图像中白色点的纵坐标之和除以白色点的个数。
再将样本数字图像等分成上、 下两个部分, 用 x3 和 x4 分别表示该样本数字图像上半部分的质心横坐标和纵坐标; 用 x5 和 x6 分别表示该样本数字图像下半部分的质心横坐标和纵坐标。
最后将样本数字图像等分成左、 右两个部分, 用 x7 和 x8 分别表示该样本数字图像左半部分的质心横坐标和纵坐标; 用x9 和 x10 分别表示该样本数字图像右半部分的质心横坐标和纵
坐标。
各区域的质心横坐标为该区域内的白色点的横坐标之和除以该区域内的白色点的个数; 各区域的质心纵坐标为该区域内的白色点的纵坐标之和除以该区域内的白色点的个数。
这 10 个质心坐标组成的向量:
x= (x1, x2, x3, x4, x5, x6, x7, x8, x9, x10) T
就是该样本数字图像对应的数字的空间分布特征。 逐个计算各数字的空间分布特征向量, 并将它们存放于数组中。
-
- 结构特征
采用数字的空间分布特征可以将数字 “1”、 “2”、 “4”、“5”、 “7” 正确识别出来, 但数字 “0”、 “3”、 “6”、 “8”、“9” 有时却不能正确识别。 针对这几个会出现误判情形的数字进行分析, 不难发现它们的形状结构特征明显, 数字 “0” 和“6” 及 “9” 含有一个洞; 数字 “3” 不包含洞; 数字 “8” 包含两个洞。 由于身份证号码字体的特殊性, 数字 “1”、 “2”、“4”、 “5”、 “7” 均不含有洞。
Matlab 中的 bweuler 函数返回二值图像的欧拉数。 欧拉数是对图像的拓扑度量, 它是指图像中对象的总个数与这些对象中洞的个数的差, 可以使用 4 连通或 8 连通邻域。 各数字的欧拉数参见表 1。
表 1 各数字的欧拉数
本文采用 8 连通邻域, 将各样本数字图像的欧拉数作为它的结构特征, 并存放于数组中 E (10)。
-
- 分类识别准则
样本数字图像的空间分布特征和结构特征分别存于数组digital (10, 10) 和 E (10) 中。 对于待识别身份证号码 (共 18 个) 的目标, 按照前面类似的处理过程, 提取各号码数字的空间分布特征和结构特征, 并存放于数组 obj (18, 10) 和 objE
(18) 中。
令 x= (x , x ,, .., x ) T 为目标号码数字的空间分布特征,
对于待识别的目标数字号码, 计算该数字号码的空间分布特征与 10 个样本数字的空间分布特征的相似系数, 其分类识别准则是: 在结构特征一致的条件下, 相似系数最大的对应的样本数字就是该目标号码的识别结果。
- 程序实现
采用 Matlab6.5 (release R 13) 作为开发工具, 在 Windows XP 平台下实现了身份证号码的快速识别。
图 4 是程序使用的身份证图像 , 程序输出结果为 : 350426198107282635。 对多个身份证图像进行测试, 均得到正确的结果。
图 4 待识别的身份证图像
身份证号码识别的程序代码如下:
1 2 10
四、 结论
本文对第二代居民身份证的号码数字进行分析, 提出了基于空间分布特征的相似系数最大和结构特征一致的分类识别准则, 使得识别方法较简单, 对多个身份证图像进行测试 (将程序中的 IDCard01.jpg 替换为待测试的身份证图像文件名), 均能快速、 准确识别。