一种基于特征匹配的安卓手机身份证字符识别方法与流程

文档序号:11408247阅读:387来源:国知局
一种基于特征匹配的安卓手机身份证字符识别方法与流程

本发明公开了一种基于特征匹配的安卓手机身份证字符识别方法,特别是结合欧式距离提取汉字外围特征进行一级区分、提取汉字笔划穿越次数特征进行二级区分、提取汉字网格特征进行最终识别的方法,属于图像处理与字符识别的技术领域。



背景技术:

目前身份证的信息大多需要人工录入,效率十分低下,而且长时间的识别过程也会使人眼疲劳。所以该方法已经不适应于当今计算机等领域飞速发展的现状。现如今安卓手机在人群中应用广泛,研究安卓手机如何自动读取身份证信息是十分必要的,可以有效地克服人工识别的局限性,且具有识别效率高、识别准确度高的优点。

身份证姓名汉字识别属于印刷体汉字识别的范围。印刷体汉字的识别最早追溯到20世纪60年代。经过这么多年发展,现有的印刷体汉字识别方法有结构模式识别方法、统计模式识别方法、结构模式识别和统计模式识别相结合的方法、人工神经网络方法、仿人视觉的识别方法等。其中,常用的统计模式识别方法有模板匹配、利用变换特征的方法、利用笔画方向特征的方法、利用外围特征的方法、利用特征点特征的方法。

基于特征匹配的安卓手机身份证字符识别是通过对采集的含有身份证的图像进行识别来获取姓名、性别、身份证号等信息。安卓手机身份证字符识别技术主要涉及身份证图像采集,采集图像处理,身份证分割,字符分割,特征提取,特征匹配等步骤。



技术实现要素:

发明目的:为了克服现有技术中存在的不足,本发明提供一种基于特征匹配的安卓手机身份证字符识别方法,解决现有的身份证字符识别方法较为复杂的问题。

技术方案:

一种基于特征匹配的安卓手机身份证字符识别方法,包括步骤:

步骤1:通过安卓手机摄像头采集身份证图像;

步骤2:对步骤1采集的身份证图像进行预处理;然后利用hough变换检测直线;通过直线找交点,透视变换分割出宽和高的比例在1.49至1.69区间的无背景身份证图像;

步骤3:根据姓名、性别、身份证号三个信息区域在身份证上位置固定,利用比例坐标,分割出以上三个区域图像;

步骤4:对步骤3分割出的三个区域图像分别进行二值化,使用投影法进行字符分割,然后对分割后的字符进行归一化处理;

步骤5:在步骤4的基础上提取待识别姓名汉字图像的特征向量,依次提取汉字外围特征、提取笔划穿越次数特征及提取汉字网格特征,分别提取性别和身份证号两部分图像的网格特征;

步骤6:对标准字库中的汉字、0至9的10个数字和英文字母x的二值图像使用投影法进行字符分割,然后对各字符归一化,进而提取出各字符的特征向量,构成标准字库;

步骤7:根据步骤5提取的待识别图像的特征向量与标准字库中个字符的特征向量的差距大小进行特征匹配,完成字符识别。

所述步骤2中对采集的身份证图像进行预处理,具体为:首先将输入图像按公式grayvalue=(306*r+601*g+117*b)>>10计算各像素的灰度值,然后将灰度图像缩放成像素341*256的图像,再对缩放后的灰度图像进行中值滤波,最后对图像进行自适应canny边缘检测。

所述步骤2通过直线找交点,透视变换分割出宽和高的比例在1.49至1.69区间的无背景身份证图像具体为:

步骤21:对于hough变换得到的直线集合,分别对位置在图像上1/5处、下1/5处、左1/5处、右1/5处的直线进行同一条直线的连接处理;具体为:

(1)当一条直线l1在图像右1/5处时,若一条直线l2满足:a.l2倾斜角度与l1夹角在5度以内;b.两条直线列间距在3个像素点以内;c.两条直线行间距在30个像素点以内;d.两条直线的长度均大于7个像素点,则将两条直线连在一起;

(2)当一条直线l3在图像左1/5处时,若一条直线l4满足:a.l4倾斜角度与l3夹角在5度以内;b.两条直线列间距在3个像素点以内;c.两条直线行间距在30个像素点以内;d.两条直线的长度均大于7个像素点,则将两条直线连在一起;

(3)当一条直线l5在图像上1/5处时,若一条直线l6满足:a.l5倾斜角度与l6夹角在5度以内;b.两条直线行间距在3个像素点以内;c.两条直线列间距在30个像素点以内;d.两条直线的长度均大于7个像素点,则将两条直线连在一起;

(4)当一条直线l7在图像下1/5处时,若一条直线l8满足:a.l7倾斜角度与l8夹角在5度以内;b.两条直线行间距在3个像素点以内;c.两条直线列间距在30个像素点以内;d.两条直线的长度均大于7个像素点,则将两条直线连在一起;

步骤22:在连接后的直线集合中,需要找到身份证外围的四条直线;最后由找到的四条直线求出在预处理后图像中身份证的四个顶点坐标,由缩放比例可得在采集图像中身份证四个顶点的坐标,过程如下:

(1)分别在在预处理后图像的上1/5和下1/5内,找到与水平的夹角在0度至20度区间的最长线;

(2)分别在预处理后图像的左1/5和右1/5内,找到与竖直线相交角度在0度到20度区间的最长线;

步骤23:由透视变换,在采集图像中分割出宽和高比例在1.49至1.69区间的无背景身份证图像,并且解决图像因采集而产生的图像畸变问题。

所述投影法字符分割具体过程如下:

(1)先从上到下统计每行像素值为0的像素点个数,找到个数为0的行,如果此时出现连续个数为0的行,则找出连续行的行号的中间值,由此得到分割行的行号其中,行号表示这一行为图像中的第几行;

(2)在姓名区域彩色图像上进行行分割;

(3)对行分割后的二值图,从左到右统计每列像素值为0的像素点个数,找到个数为0的列,如果此时出现连续个数为0的列的列号,则找出连续列的列号的中间值,由此得到分割列的列号;其中,列号表示这一列为图像中的第几列;

(4)在行分割后的姓名区域彩色图像上进行列分割。

所述归一化处理为:

(1)先从上到下统计每行像素值为0的像素点个数,在其中,找出第一个不为0的行号和最后一个不为0的行号;

(2)从左到右统计每列像素值为0的像素点个数,在其中,找出第一个不为0的列号和最后一个不为0的列号;

(3)由(1)(2),在单个字符二值图像中,分割出满足要求的图像:第一行、最后一行,第一列,最后一列像素值为0的像素点个数均不等于0。

提取汉字外围特征具体过程如下:

(1)计算每一行从图像左边缘至第一次遇到黑像素的长度p1i,i=1,2,3...,50;

(2)计算每一行从图像左边缘第一次遇到黑像素结束至第二次遇到黑像素的长度p2i(i=1,2,3...,50);

(3)仿照上述两步,提取其它三个边缘的特征;

(4)根据上述方法可以提取出一个50*2*4=400维的外围特征。

提取笔划穿越次数特征具体提取过程如下:

(1)分别从图像的1/4和3/4处进行水平和垂直穿越,得到一组特征值ai=(a1,a2,a3,a4),其中,a1,a2分别代表水平方向1/4处和3/4处的穿越次数,a3,a4分别代表垂直方向1/4处和3/4处的穿越次数;

(2)对图像进行水平半穿越,把h上左处到v中上处的笔划穿越次数h1,v中上处到h上右处的笔划穿越次数h2,h下左处到v中下处的笔划穿越次数h3,v中下处到h下右处的笔划穿越次数h4作为一组特征值,a2=(h1,h2,h3,h4);

(3)同理,得到垂直方向上的特征值,即a3=(v1,v2,v3,v4)。其中,v1代表v左上处到h中左处的笔划穿越次数,v2代表h中左处到v左下处的笔划穿越次数,v3代表v右上处到h中右处的笔划穿越次数,v4代表h中右处到v右下处的笔划穿越次数;

(4)最后把这3组向量的组合作为汉字的特征值,即a=(a1,a2,a3)。

提取汉字网格特征具体提取过程如下:

(1)将像素50*50的汉字点阵平均分成5*5;

(2)统计各网格内黑像素的数量pi,i=1,2,3...,100;

(3)统计整个汉字黑像素的数量sum;

(4)计算每个网格中黑像素个数占整个汉字黑像素总数的比例ri,即ri=pi/sum,i=1,2,3...,100,则特征向量(r1,r2...r100)就是该汉字的网格特征。

所述特征向量的差距大小采用欧氏距离衡量;具体特征匹配方法为:在标准字库中,先在汉字外围特征上,找出满足差距阈值的汉字进行一级区分;然后在笔划穿越次数特征上,找出满足差距阈值的汉字进行二级区分;最后利用网格特征,找出距离最小的汉字,即是待识别的汉字。

有益效果:由于结合欧式距离提取汉字外围特征进行一级区分、提取汉字笔划穿越次数特征进行二级区分、提取汉字网格特征进行最终识别,使得身份证汉字识别的效率以及准确率都很高。

附图说明

图1是本发明一种基于特征匹配的安卓手机身份证字符识别方法的算法流程图。

图2是采集的原始图像示意图。

图3是预处理后的图像示意图。

图4是分割出来的无背景身份证图像示意图。

图5是在无背景身份证图像中分割出的姓名区域图像。

图6是在无背景身份证图像中分割出的性别区域图像。

图7是在无背景身份证图像中分割出的身份证号区域图像。

图8是归一化后的一个待识别汉字二值图像示意图。

图9是汉字外围特征示意图。

图10是汉字笔划穿越次数特征示意图。

图11是汉字网格特征示意图。

具体实施方式

下面结合附图对本发明作更进一步的说明。

本发明的流程如图1所示,包括以下步骤:

步骤1,采集身份证图像。本技术基于android手机开发。程序自动调节手机摄像头进行自动聚焦以达到最优的扫描、拍摄效果。识别算法支持2种方式的照片来源,分别是手机扫描身份证图像方式和人工拍摄方式。采集的原始图像如图2所示。

步骤2,如图3所示,对采集的身份证图像进行预处理,具体包括以下步骤:

(1)图像灰度化,输入图像为rgb格式,按公式grayvalue=(306*r+601*g+117*b)>>10计算各像素的灰度值;

(2)将灰度图像缩放成像素341*256的图像,这是为了提高处理速度;

(3)对缩放后的灰度图像进行中值滤波,这是一种对图像中很多影响失败率的噪音点进行的平滑去噪处理;

(4)对图像进行自适应canny边缘检测。

步骤4,利用概率hough变换来检测直线。

步骤5,对于hough变换得到的直线集合,因为身份证最外围的四条边会出现同一条直线产生断裂的情况,为了接下来找出这四条线的准确性,需要分别对位置在图像上1/5处、下1/5处、左1/5处、右1/5处的直线进行同一条直线的连接处理,连接过程如下:

(1)当一条直线l1在图像右1/5处时,若一条直线l2满足:a.l2倾斜角度与l1夹角在5度以内;b.两条直线列间距在3个像素点以内;c.两条直线行间距在30个像素点以内;d.两条直线的长度均大于7个像素点,则我们可以将两条直线连在一起;

(2)当一条直线l3在图像左1/5处时,若一条直线l4满足:a.l4倾斜角度与l3夹角在5度以内;b.两条直线列间距在3个像素点以内;c.两条直线行间距在30个像素点以内;d.两条直线的长度均大于7个像素点,则我们可以将两条直线连在一起;

(3)当一条直线l5在图像上1/5处时,若一条直线l6满足:a.l5倾斜角度与l6夹角在5度以内;b.两条直线行间距在3个像素点以内;c.两条直线列间距在30个像素点以内;d.两条直线的长度均大于7个像素点,则我们可以将两条直线连在一起;

(4)当一条直线l7在图像下1/5处时,若一条直线l8满足:a.l7倾斜角度与l8夹角在5度以内;b.两条直线行间距在3个像素点以内;c.两条直线列间距在30个像素点以内;d.两条直线的长度均大于7个像素点,则我们可以将两条直线连在一起。

步骤6,在连接后的直线集合中,需要找到身份证外围的四条直线,寻找过程如下:

(1)分别在在预处理后图像的上1/5和下1/5内,找到与水平的夹角在0度至20度区间的最长线;

(2)分别在预处理后图像的左1/5和右1/5内,找到与竖直线相交角度在0度到20度区间的最长线。

步骤7,由找到的四条直线求出在预处理后图像中身份证的四个顶点坐标,由缩放比例可得在采集图像中身份证四个顶点的坐标。再由透视变换,可在采集图像中分割出宽和高比例在1.49至1.69区间的无背景身份证图像,并且解决图像因采集而产生的图像畸变问题。如图4。

步骤8,根据姓名、性别、身份证号三个信息区域在身份证上位置固定,利用比例坐标,在步骤7分割出的无背景身份证图像上,分割出含有以上三个信息的矩形区域图像,分割后的结果见附图5、附图6和附图7。

步骤9,对分割出来的采集图像上的姓名区域,先灰度化,再大津阈值二值化。

步骤10,对二值化后的姓名区域图像,进行投影法字符分割,将各个字符分割开,具体过程如下:

(1)先从上到下统计每行像素值为0的像素点个数,即统计每行黑色像素点个数,找到个数为0的行的行号(这一行在图像中的第几行),即找到一行全是白色像素点的行号,如果此时出现连续个数为0的行,则找出连续行号的中间值,由此得到分割行的行号,即得到下一步图像水平分割的分割点;

(2)在姓名区域彩色图像上进行行分割;

(3)对行分割后的二值图,从左到右统计每列像素值为0的像素点个数,找到个数为0的列,如果此时出现连续个数为0的列的列号(这一列为图像中的第几列),则找出连续列号的中间值,由此得到分割列的列号;

(4)在行分割后的姓名区域彩色图像上进行列分割,这样就可以得到姓名区域分割出来的彩色字符图像。

步骤11,对姓名区域分割出来的彩色字符图像,进行灰度化和大津阈值二值化;

步骤12,对二值化后的姓名字符和所占的方格进行字符位置和方格大小的归一化处理,处理过程如下:

(1)先从上到下统计每行像素值为0的像素点个数,在其中,找出第一个不为0的行号和最后一个不为0的行号;

(2)从左到右统计每列像素值为0的像素点个数,在其中,找出第一个不为0的列号和最后一个不为0的列号;

(3)由这四个值,在单个字符二值图像中,分割出图像满足:第一行、最后一行,第一列,最后一列像素值为0的像素点个数均不等于0。在此基础上将图像调整成像素50*50的二值图像,如图8。

步骤13,对归一化后的姓名汉字二值图像,提取汉字外围特征,见附图9,具体提取过程如下:

(1)计算每一行从图像左边缘至第一次遇到黑像素的长度p1i(i=1,2,3...,50);

(2)计算每一行从图像左边缘第一次遇到黑像素结束至第二次遇到黑像素的长度p2i(i=1,2,3...,50);

(3)仿照上述两步,提取其它三个边缘的特征(上、右、下);

(4)根据上述方法可以提取出一个50*2*4=400维的外围特征。

步骤14,对归一化后的姓名汉字二值图像,提取笔划穿越次数特征,见附图10,具体提取过程如下:

(1)分别从图像的1/4和3/4处进行水平和垂直穿越,得到一组特征值ai=(a1,a2,a3,a4),其中,a1,a2分别代表水平方向1/4处和3/4处的穿越次数,a3,a4分别代表垂直方向1/4处和3/4处的穿越次数;

(2)对图像进行水平半穿越,把h上左处到v中上处的笔划穿越次数h1,v中上处到h上右处的笔划穿越次数h2,h下左处到v中下处的笔划穿越次数h3,v中下处到h下右处的笔划穿越次数h4作为一组特征值,a2=(h1,h2,h3,h4);

(3)同理,也可以得到垂直方向上的特征值,即a3=(v1,v2,v3,v4)。其中,v1代表v左上处到h中左处的笔划穿越次数,v2代表h中左处到v左下处的笔划穿越次数,v3代表v右上处到h中右处的笔划穿越次数,v4代表h中右处到v右下处的笔划穿越次数;

(4)最后把这3组向量的组合作为汉字的特征值,即a=(a1,a2,a3)。

步骤15,把待识别汉字二值图像进行大小和位置归一化后,提取汉字网格特征,见附图11,具体提取过程如下:

(1)将像素50*50的汉字点阵平均分成5*5;

(2)统计各网格内黑像素的数量pi(i=1,2,3...,100);

(3)统计整个汉字黑像素的数量sum;

(4)计算每个网格中黑像素个数占整个汉字黑像素总数的比例ri,即ri=pi/sum(i=1,2,3...,100),则特征向量(r1,r2...r100)就是该汉字的网格特征。

步骤16,对含有3764个常用汉字的标准字库,按照上述提取汉字特征的方法挨个提取。其中,标准字库的概念在汉字特征匹配方法中是现有的,但标准字库的内容是不唯一的。

步骤17,将标准字库中的汉字图像与待识别的汉字图像进行特征匹配。标准字库图像与待识别汉字图像之间的对应特征差距使用欧氏距离来衡量。姓名中待识别汉字的特征匹配方法是:在标准字库中,先在汉字外围特征上,找出满足差距阈值的汉字进行一级区分;然后在笔划穿越次数特征上,找出满足差距阈值的汉字进行二级区分;最后利用网格特征,找出距离最小的汉字,即是待识别的汉字。

步骤18,识别性别区域图像,具体过程如下:

(1)对分割出来的性别区域图像,进行预处理,包括:灰度化和大津阈值二值化;

(2)将预处理后的图像,进行归一化处理;

(3)提取预处理、归一化后待识别图像的网格特征;

(4)两张分别含有“男”和“女”字样的归一化后二值图像作为性别识别的训练集,提取它们的网格特征;

(5)在训练集中,利用网格特征,找出距离最小的性别图像,得出性别是男还是女。

步骤19,识别身份证号区域图像,具体过程如下:

(1)对分割出来的身份证号区域图像,进行预处理,包括:灰度化和大津阈值二值化;

(2)利用上述方法,对预处理后的身份证号区域图像,进行字符分割和归一化;

(3)对每一个分割出来的归一化后的身份证号字符二值图像,只提取网格特征,不需要三级区分;

(4)把11张分别含有0至9十个数字和英文字母x的归一化后二值图像作为身份证号识别的训练集,分别提取它们的网格特征;

(5)利用上述性别识别的特征匹配方法,对每个待识别的身份证号字符图像,进行识别。

输出识别结果采用安卓手机端输出。

本发明实施例提供的技术方案,至少有以下技术效果:本发明一种基于特征匹配的安卓手机身份证字符识别方法,由于结合欧式距离提取汉字外围特征进行一级区分、提取汉字笔划穿越次数特征进行二级区分、提取汉字网格特征进行最终识别,使得身份证汉字识别的效率以及准确率都很高。

以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1