验证码中空心字符的识别方法与流程

文档序号:20920298发布日期:2020-05-29 14:03阅读:1022来源:国知局
验证码中空心字符的识别方法与流程

本发明涉及互联网安全技术领域,具体涉及一种验证码中空心字符的识别方法。



背景技术:

验证码是一种区分计算机和人类的安全技术,现在被大部分网站应用最多的是基于文本的图形验证码。正当很多基于文本的图形验证码被成功破解时,空心验证码作为最新颖的验证码设计之一,现已被各大网站应用到其用户登陆,邮箱注册,论坛评论等功能中。

空心验证码的一个主要特点是使用轮廓线形成连接的空心字符,同时达到了提高安全性和可用性的目标。现在的验证码破解技术很难分割和识别字符粘连的验证码,但是实心的字符粘连验证码会对人类的识别产生干扰,使用户的体验下降。而空心验证码,字符依旧是粘连的,但当人类识别时,却没有产生负面影响。

空心验证码因为其只由简单的轮廓线组成、图像中包含的信息少,字符的有效特征信息会被大幅度弱化。若当图像背景中再有干扰线加入时,在预处理过程中部分字符轮廓还会被误当作噪声去除,这些都极大地提高了机器识别的难度。因此,空心验证码受到了许多大型网站的青睐,但其是否能真正有效地抵制识别程序,是否真正安全还需日后得到验证。



技术实现要素:

鉴于上述问题,提出了本发明,以便提供一种克服上述问题或者至少部分地解决上述问题的用于识别验证码中空心字符的方法。

进一步技术方案:本发明提供了一种在识别空心字符验证码过程中,通过填充技术将空心字符填充为实心字符并去除背景干扰后进行字符识别的方法。该方法主要包括:将输入的验证码图片进行预处理,依次执行二值化、细化操作,得到单像素线条的字符轮廓线图片,并对字符轮廓线进行修复,得到白色封闭区域;将得到的所有白色封闭区域进行颜色填充;对填充后得到的所有不同颜色块,依据其形状特性及横纵向特性进行三次检测去干扰处理,提取有效字符块;最后进行检测识别。

所述对图片预处理并修复字符轮廓线部分,是首先将输入的验证码图片转换为灰度图片,然后通过预设阈值将灰度图片转换为二值图像。针对二值图像中的像素,通过8-邻域元素进行细化删除,得到字符轮廓线为单像素线条的图片。首先在字符轮廓线中确定断点位置,然后依据就近原则将在预设阈值范围内的两个断点进行连接,得到白色封闭区域。

所述对所有白色封闭区域进行颜色填充部分,是在对轮廓线修复后形成的每个封闭连通区域按照一定顺序依次查找,每找到一个连通区域便将其颜色转变为一个新的灰度值。最终保证所有白色封闭区域被填充为不同灰度值,且按照封闭区域在图像中的位置其灰度值也呈现一定关系。

所述依据颜色块形状特性及横纵向特性进行三次检测去干扰处理部分,首先在每个颜色块的边界坐标点中找出横坐标相同、纵坐标不连续的点数量,每个横坐标中此点数量大于一定值则计入横向特性值;找出纵坐标相同、横坐标不连续的点数量,每个纵坐标中此点数量大于一定值则计入纵向特性值。当某颜色块的横纵向特性值满足预定条件时则认为该色块为有效字符块。对所有颜色块进行第一次横纵向特性检测,找出部分有效字符块后依据边界点颜色信息确定发生粘连的颜色块并进行修复、连接处理。随后进行第二次横纵向特性检测,找出第一次检测修复得到的字符块,并依据其余颜色块所占矩形区域长宽比确定字符发生断裂的色块,同时与相应字符进行匹配连接。最后进行第三次横纵向特性检测,找出所有字符块。

最后设计卷积神经网络模型,训练预处理后已正确识别的验证码的模型,设计卷积神经网络的层数、卷积核大小。将预处理后已正确识别的验证码作为训练集,进行训练,调整参数,获取其中最优的卷积神经网络的模型参数。用获得的训练模型,用于对验证码进行识别。

本发明能够达到的有益效果在于:在对所有空心区域进行颜色填充后,可以使空心字符转换为实心字符,使有效字符信息得到强化。另外,在字符识别阶段,可依据每个字符的颜色信息将其按顺序依次分割出来,降低因分割而引入的误差。最关键的是同时使用字符分割技术和卷积神经网络模型,能够较大的提高空心字符识别的正确率。

附图说明

图1为本发明的用于识别验证码中空心字符的方法的流程图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本发明公开的示例性实施例,然而应当理解,本发明可以以各种形式实现,本发明公开而不应被这里阐述的实施例所限制。

在一个具体实施例中,本发明提供了一种验证码中空心字符的识别方法。该方法的流程如图1所示,图1中的方法主要包括:步骤s0、步骤s1、步骤s2、以及步骤s3。下面对本实施例的方法所包括的各步骤分别进行详细说明。

s0、预处理和修复字符轮廓线。

作为示例,本实施例首先将输入的验证码图片转换为灰度图片,然后通过预设阈值将灰度图片转换为二值图像。针对二值图像中的像素,通过8-邻域元素进行细化删除,得到字符轮廓线为单像素线条的图片。

将整个轮廓线看作一个迷宫,从原点开始,按照从左至右的顺序依次查找未被标记的黑色轮廓线像素点,并以此为起点进行搜索,若以该点为中心的8-邻域元素范围内存在黑色轮廓线点,则将该点进行标记,接着探索其8-邻域元素范围内的下一个轮廓线点,若最终没有回到起始点位置且没有新的未曾探索过的像素点时,该终点则为轮廓线终点。继续查找下一个未被标记的黑色轮廓线点作为起点进行探索,直至所有轮廓线全部探索完毕。在得出所有终点后,有些点并非真正断点,本实施例依据所有终点的8-邻域元素范围内点分布情况找出真正轮廓线断点,然后依据就近原则将在预设阈值范围内的两个断点进行连接,得到白色封闭区域。

s1、对所有封闭的白色连通区域进行颜色填充。

作为示例,本实施例在修复轮廓线后,从原点开始按照从左至右、从上至下的顺序依次遍历图像中的每一个像素点,寻找白色像素点。将该白色点作为种子点向四周迭代搜索找出其所在的白色连通域,将该连通域填充为其它颜色后,继续寻找下一个白色像素点所在的连通域并进行颜色填充,直至所有白色区域全部填充为不同颜色。为保证颜色填充后每个连通域中颜色信息能有效反映该连通域在图像中所处的位置,本实施例在填充过程中将不同封闭区域填充为不同灰度值的颜色,且按填充的先后次序其灰度值依次增大。

s2、对得到的颜色块,依据其形状特性及横纵向特性进行三次检测去干扰处理,提取有效字符块。

作为示例,本实施例在计算横纵向特性值过程中,首先找出同一灰度值连通区域中所有边界点坐标。在边界点坐标中找出横坐标相同但纵坐标不连续的点,若对同一个横坐标,纵坐标不连续点个数大于一定值则横向特性值加1,遍历所有横坐标,计算横向特性值;在边界点坐标中找出纵坐标相同但横坐标不连续的点,若对同一个纵坐标,横坐标不连续点个数大于一定值则纵向特性值加1,遍历所有纵坐标,计算纵向特性值。

本实施例中一个三次检测去干扰处理具体过程如下所述。

对所有颜色块进行第一次横纵向特性检测,通过上述方法计算横纵向特性值,若其横纵向特性值满足预定条件,则此颜色块为有效字符块,将其灰度信息放入字符集中。计算其余颜色块外部轮廓点中背景点所占比例,若比例满足预定条件,则将此颜色块确定为属于同一字符相互粘连的颜色块,对相互粘连的颜色块进行修复,置为同一颜色。随后进行第二次横纵向特性检测,对第一次检测中除确定字符块外其余颜色块进行横纵向特性值计算,若横纵向特性值满足预定条件,则此颜色块为有效字符块,将其灰度信息放入字符集中。计算余颜色块所占矩形区域长宽比例,若比例满足预定条件,则将此颜色块确定为某一字符发生断裂的颜色块并与相应字符块进行匹配连接,置为同一颜色。最后进行第三次横纵向特性检测,计算此时所有颜色块的横纵向特性值,将特性值满足预定条件的颜色块保留,其余颜色块去除。此时图像中仅存在有效字符块。

s3、利用卷积神经网络模型对字符信息进行检测识别。

作为示例,本实施例中,首先设计卷积神经网络的层数、卷积核大小、选择激活函数。本实施例中我们设计了四种卷积神经网络模型,分别是含有三个卷积层、四个卷积层、五个卷积层、六个卷积层。每层卷积层后面都跟着最大池化层,且每种模型都含有两个全连接层。接着将预处理后已经识别的验证码作为训练集,进行训练,调整参数,当训练集的准确率不再上升时,保存各自的模型参数文件。选取其中最优的卷积神经网络的模型参数。最后利用设计好的卷积神经网络模型,可用于对经过上述步骤预处理的验证码进行识别。

上述具体实施例仅是本发明的具体个案,本发明的专利保护范围包括但不限于上述具体实施方式,任何符合本发明的用于识别验证码中空心字符的方法的权利要求书的且任何所属技术领域人员对其所做的适当变换或替代,皆应落入本发明的专利保护范围。

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