浅谈验证码的识别_吕霁

第1期(总57期)河北能源职业技术学院学报

No.1(SumNo.57)

2015年3月

Journal of Hebei Energy Institute of Vocation 欞欞欞欞欞欞欞欞欞欞欞欞欞欞欞欞欞欞欞欞欞欞欞欞欞欞欞欞欞欞欞欞欞欞欞欞欞欞欞欞欞欞欞欞欞欞欞欞

and Technology

Mar.2015

浅谈验证码的识别

(黎明职业大学信息与电子工程学院,福建泉州362000)

摘要:网络验证码在网络安全方面发挥关键作用,被广泛采用。对验证码的研究主要在于验证码

的识别和实践意义。验证码经过数字图像的预处理,数字图像中的字符分割,还有字符识别匹配识别等三个步骤来完成其识别。

关键词:验证码;二值化;去噪;识别中图分类号:TP393.08文献标识码:A 文章编号:1671-3974(2015)01-0072-03Discussion on the Verification Code Identification

LV Ji

(Liming Vocational University ,Quanzhou Fujian 362000,China )

Abstract :Network verification code plays a key role in the network security ,and is widely used.Research on verification code mainly lies in the recognition and practice meaning of verification code.Verification code identification technology needs three steps :preprocessing of digital image ,digital image character seg-mentation ,and character recognition ,to complete the identification verification code.Key words :verification code ;the value of the two ;denoising ;identification 收稿日期:2014-12-08

作者简介:吕霁(1979-),男,大学,

黎明职业大学信息与电子工程学院助教,研究方向:计算机网络。引言

伴着21世纪的到来,各项科学技术有了质的飞跃,特别是在计算机科学领域的发展,而在这个领域中发展最快最为迅猛的一个学科便是计算机网络技术,不管是在科研或者是在民用商用都是最为活跃的。在实际的应用过程中,却有许多恶意的行为,例如:编写恶意程序,机器人自动登录注册,群发信息和自动回复等等。验证码识别技术正是为了应对这些特殊情况而诞生。验证码识别技术的研究在国外进行的比较早,而且在技术的各领域也取得了一定的成绩。字符识别的研究最先是在俄国,解决了当时视觉障碍的难题。接下来的四十几年时间不断攻克技术难关,研发出当时全世界第一台字符识别机器。上个世纪九十年代,在图像技术、人工智能技术以及模式识别领域飞速发展的基础上,诞生了复杂的字符识别系统。此时,先进的神经网络理论、自然语言处理技术、模糊集推理以及隐马尔科夫模型被广泛地应用于实际过程中。我国的验证码识别研究大概从80年代开始出现,起步相对国外较晚,但最

近几年在CAPTCHA 、验证码识别、OCR识别方面,我

国的研究发展迅速,从事相关方面研究的学者和专家也越来越多。

1.数字图像预处理

图像预处理的对象是图像,属于初级图像的范

围内,处理输入的数据及输出的数据。为了便于对图像进行分析,验证码图像预处理要对图像数据有目的性的图像增强。预处理是源头是最重要的一个步骤,任务是把原始图像经过某种方式转换为二值化图像,去掉那些和类别不相关的因素,例如标准化位置及尺寸。整个过程分为三个步骤:灰度化、二值化、去噪,整个流程如图1.1所示

图1.1预处理流程图

如何把色彩鲜艳光鲜亮丽的彩色图像转化为灰度图像便是灰度化处理的过程。在这里采用的是RGB 模型,假如RGB 三个颜色值都一样的话,那么

它表示的颜色是黑白的,

RGB 的值便是灰度值。为了减少那些无谓的干扰,减小过程复杂度,缩短处理程序的时间,压缩整个计算机,通常把24位真彩色转换成灰度图像,因为用户在对字符识别的过程中

·

27·

经常受到彩色验证码图像中各种颜色的刻意干扰,在转换后的灰度图像中我们可以获得更多的图像信息。

怎样才能避免神经网络中学习样本的干扰,使分割的效果实现最大化?这就是图像处理的任务,它将验证码图像的背景淡化,前景有效增强。那么最简单有效的办法就是通过白色和黑色这两种对比及其醒目的颜色才实现,背景为灰度值255,既白色;自然前景色就是灰度值为0的黑色,这样灰度值就被最小化为2级,并且方便了以后处理数据的工作。局部阈值法、全局阈值法和动态阈值法是二值化常用的三种方法。由于图像的丰富多样性使得简单的二值化算法并不具备通用性。尽管在图像的二值化方便进行了很多研究,目前都只是针对具体出现的问题,在二值化理论研究方面还没有找到通用的方法。使用验证码的目的就是要增加图像的辨别度,所以在生产验证码时通常会添加噪声线和噪点以影响验证码的识别。在进行验证码识别的时候需要将这些添加的噪声去掉。

下面介绍一种滤波的方法进行去除噪声。对于噪声一般都是相对单独的像素点,而目标字符区域一般都是有很多个相似组成的,而且在物理位置上也有一定的关联,考虑到这样的特性,可以使用中值法来对图像中的噪点进行去除。如图1.2所示

图1.2去噪流程图

2.数字图像中字符的分割

字符分割将上一步骤二值化后的图像中具有意义的各个字符分离出来,用于下一个步骤设计识别算法对每一个字符进行识别。字符分割的过程中包含两个部分,一个是单个字符,另一个是字符区域。在对字符的分割方法中,通常采用对粘连字符进行分割或非粘连字符分割算法者两种方法的组合。2.1投影分割算法

对非粘连字符验证码的分割相对比较容易,可以采用基于投影分割法。在上一个步骤处理完毕之后,主要计算在X 轴方向上,基于该方向的Y 轴的黑色像素总数。如图2.1所示,便是该方法的执行过程图样,左图为二值化原图,右图为基于投影分割算法的直方图

图2.1

垂直投影直方图分割算法

从结果中我们可以看到,虽然它可以轻松的将间隔比较明显的字符验证码有效地切开,但是当遇到较为复杂的验证码还存在着很大的局限性。利用上下轮廓是另一种基于投影方法的直方图字符验证码分割算法。这种算法的特点是采用字符的上下边界来进行差值投影,与垂直投影方法类似。如图2.2展示了上下轮廓方法的直方图图样,利用直方图的波谷区域进行字符串的分割。其中,左边即原图,右边图形是上下轮廓直方图

图2.2上下轮廓直方图法

2.2连通域分割算法

在字符分割技术中还有另外一种算法,连通域算法;除了处理噪声之外,它还可以应用于其他方面。根据种子的填充算法,选择一个种子标上标记,并作为初始的种子点,搜索验证码图像中那些未被标记过的点,直到所有的点都已被标记,那么图像中分离的区域就自动被寻获。

最后,结合前面所描述的两种方法再加上寻找最短路径算法来设计一个最为高效的字符分割法。首先利用连通域分割法分割出验证码图像的各个连通域,再利用连通域的数目和图像上存在的字符个数的比较来判断有多少个粘连字符,字符分割的范围便得到确认,其中一些垂直投影没有重合而且只是稍微粘连的字符,我们可以采用投影法最第二次的分割,那些又扭曲又黏贴的字符,只能采用最短路径的方法做最后一次分割。3.字符的识别匹配

字符的识别其实就是将图片进行处理并还原回字符文本的过程。通常分为基于字符分割的识别(包括卷积神经网络、SVM 、各种统计距的识别法)和模板匹配法识别。

3.1基于模板匹配的识别法

这种识别方法的模板数量比较有限,但是制作简单,只要很短的时间我们便可以借助相应的软件为不能分割的验证码制作模板。模板是利用字符特征的N 维向量制作的,在实际匹配中的模板就是字符的点阵图。经过上面步骤分割后,便可以利用连通域的计算来匹配字符模板。用这种方法就避免了字符分割中的困难。它采用狄度相关的匹配,使用序贯相似性的检测方法(SSDA )在验证码图像中寻

·

37·

找最佳的匹配点。

3.2基于BP 神经网络学习方法的识别法

早在1986年,当时的科学家便有了关于基于BP 的神经网络的理论概念,并组织了相关的学习方法。半个世纪过去了,它成为现今最流行的神经网络模型中的一种。BP 神经网络是一个循环的过程,是一种多层前馈网络,并且是按误差逆传播的算法不断训练的,它并不需要事先知道输出结果和输入信息之间有什么关系,通过反向传播的数据来不断地调整网络的阈值和权值,利用最速下降法来训练样本,将网络误差的平方和降到最低。基于BP 的神经网络模型的拓扑结构由三个部分组成,既输入层、输出层和隐含层。输出层得到的数据将被用来和实际情况做对比,如果有误差,将返回神经网络重新调整,整个过程循环进行到符合要求为止。如图3.1所示为BP 神经网络的完整结构图

图3.1BP 神经网络

基于BP 神经网络的识别方法因其高效而准确

的识别过程,被大多数字符验证码识别所采用。BP 神经网络根据字符验证码中所包含的三种形式:数字,小写字母及大写字母来设计对应的三种子网网络,如图3.2所示

图3.2

字符验证码对应神经网络子网网络

子网网络如图所示,它是基于验证码字符的特征,可以分为四个步骤:

(1)输入信息由上而下顺序传播,从输入层通向隐含层最后是输出层;

(2)BP 神经网络的结果与实际数据肯定是会有一定的误差信号。误差信号的消除需要对输入层、隐含层和输出层之间的误差进行反向传播来逐层进行修正,是一个节点之间连接权逆向的过程。

(3)是一个由误差信号逆向传播修正与网络数据顺序传播反复交替进行的,是记忆型的基于网络的训练过程;

(4)误差信息有一个极值,BP 神经网络的全局误差有一个趋向极值的收敛过程。

把分割后的二值化图像输入到学习训练完成后的BP 神经网络中,便能准确有效地识别出二值化图像里面的字符,分析出实际结果。构建合适的BP 神经网络,调整网络学习训练的目的性,调整网络中神经单元的个数,实现识别和记忆的不同复杂度,符合各种用户的需求。

结语

这里主要描述了验证码识别过程的三个步骤,验证码图像预处理(灰度化、二值化和去噪),字符的分割以及字符的识别。对验证码图像的预处理也分为三个步骤,其中的关键因素是二值化和去噪的问题。图像的二值化一般采用局部阂值法和几种全局阂值的方法,在大量的实际数据中发现全局阈值法中的迭代法和最大类间方差法在验证码图像的二值化处理中适应性较强。根据不同验证码的特点,分别采用不同的处理方法进行去噪,均实现了理想的效果。根据粘连字符和非粘连字符验证码设计不同的分割字符方法。通过对结构分析法和模板匹配法所做的分析,这两种方法不具备一般的通用性,故本文主要讨论基于BP 的神经网络验证码的识别方法。

目前,验证码破解技术成功识别了互联网上大部分的验证码,里面不乏一些相对困难的验证码。尽管如此,互联网上仍有许多难以破解的验证码,例如google 的Gmail 登陆界面上的验证码等。故以本文研究为基础,尚有大量工作需要我们去完成。

参考文献:

[1]张淑雅,赵一鸣,赵小宇等.认证码字符识别方法的研究

[J ].宁波大学学报:理工版,2007

[2]坤燕昌,曾大海.浅析验证码在B /S 系统安全性中的应用

[J ].西昌学院学报,2005.l9(3):79-80

[3]徐海兰,刘彦婷,杨磊.模式识别中三种字符识别的方法

[J ].北京广播学院学报,2005.l2(4):3,38

[4]贾少锐,李丽宏,安庆宾.BP 神经网络算法在字符识别中

的应用[

J ].科技情报开发与经济,2007.17(2):167-169[5]王小波,王兴芬.基于MODI 的验证识别系统设计与实现

[J ].背景信息科技大学学报,2010.25(1):85-88[6]朱邵文,

陈光喜.一种简单的基于字符形状的验证码识别技术[

J ].桂林电子科技大学学报,2010.30(1):59-62·

47·

相关文档
最新文档