一种基于神经网络的字符粘连验证码的识别方法与流程

文档序号:12035200阅读:351来源:国知局
一种基于神经网络的字符粘连验证码的识别方法与流程
本发明涉及智能信息处理
技术领域
,具体地说是一种基于神经网络的字符粘连验证码的识别方法。
背景技术
:验证码的发明与使用是为了保证网络的安全,加强对信息的保护,防止有些不法分子通过高性能的硬件设备、特定功能的恶意程序、网络爬虫和网站设计漏洞等各种手段破解账户密码、盗取用户信息、恶意自动注册。与其他的安全验证方式相比验证码所包含的数据量较小,而且有效的提高了网站安全性能及抗攻击能力。验证码是区分计算机和人类的全自动图灵测试程序。但由于网络的不断发展,验证码也在不断地革新,识别验证码可以了解验证码设计的规律与原理,有助于发现验证码设计的缺陷,以便设计出更安全、更成熟、更加符合用户使用体验的验证码。同时验证码的识别也为需要大量从网络上抓取数据的大数据分析的工作者提供便利,推动相关研究的发展。网络上的验证码类型有很多种,主要有基于文本模式的、基于图像模式的、基于语音模式和少部分基于视频模式的,以基于文本模式的验证码使用最为广泛。基于文本的验证码最初只包含简单的数字与字母,光学字符识别(opticalcharacterrecognition,ocr)技术可以将图像中的文本直接提取识别且有良好的识别效果。网络的安全推动着验证码的识别难度不断增加,开始改变字符颜色,增加图像背景,增加图像噪音干扰等等,对于这类验证码可以先对图像进行简单预处理后再使用ocr提取,也有较为不错的效果。随着验证码的不断发展,开始通过对验证码图像中的文本进行扭曲、粘连等方法来增加其识别的难度。这种类型的验证码的难度在于将粘连的字符进行分割,研究人员提出了很多字符提取算法,例如骨架提取算法,颜色填充法,滴水算法等等,通过这些算法将验证码中的字符进行分割或轮廓的提取,再通过ocr,朴素贝叶斯,支持向量机等进行训练。但是分割效果往往并不理想,从而导致最终的识别正确率不高。技术实现要素:本发明所要解决的技术问题是提供一种基于神经网络的字符粘连验证码的识别方法,解决目前验证码字符粘连、背景复杂难以识别的问题。本发明为解决上述技术问题所采用的技术方案是:一种基于神经网络的字符粘连验证码的识别方法,包括以下步骤:步骤一、从网站中自动截取一定数量的验证码图片,存入文件夹备用;步骤二、对存入的验证码图片的图像进行基础预处理,使原始的验证码图像更易于字符切割,具体方法为:(1)将收集的验证码图片中的彩色图像灰度化;(2)灰度图像去燥处理:对图像进行腐蚀处理,缩小图像中的噪点,使用门限算法,选择适当的阈值,将图像进行二值化处理,并对二值化处理后的图像取反,最后使用中值滤波法去除图像中的大部分噪点;(3)定位验证码的大小,对步骤(2)去噪后的图像去除边框;(4)对去边框后的图像通过连通区域降噪发进一步去除噪声,即选取图像中所有的连通区域,选定一个合适的阈值,去除连通区域较小的噪音,保留连通区域较大的字符;步骤三、将步骤二预处理后的图像中的字符分割成单个字符,具体方法为:(1)将步骤二处理后的图像的灰度值进行竖直方向的投影,得到图像竖直方向的投影直方图;(2)以得到的竖直方向的投影直方图中波谷的位置为字符切割点将字符图像分割为单个字符图像;(3)将单个字符图像灰度值进行水平方向上的投影,得到单个字符图像水平方向的投影直方图,通过水平方向的投影直方图确定字符的上下边界并进行分割;步骤四、将分割完的字符图像进行归一化处理;步骤五、通过人工神经网络对归一化的字符图像进行识别训练;步骤六、计算识别准确率。本发明所述步骤五中,对归一化的字符图像进行识别训练的具体方法为:选定bp神经网络作为训练手段,选用三层神经网络结构,即输入层、单个隐含层和输出层,采用随机梯度法的训练类型及自适应的调整学习率进行识别训练。本发明的有益效果是:本发明通过选择合适的去噪方式及去噪方法的顺序对验证码图像进行预处理,通过不同程度的降噪处理,能很好的将验证码复杂的背景噪声去除,对于粘连的字符的分割也有较好的效果。将腐蚀处理应用到降噪的过程中,不仅去除了背景中的微小颗粒噪声,同时也去除了附着在字符边缘的噪点,使字符轮廓更加清晰;在基础的降噪处理完成后利用连通区域降噪的方法,将中值滤波难以去除的噪点去除,基本可以达到进行零噪声字符分割;使用神经网络的训练验证,该方法对于带有粘连字符的复杂背景验证码有较高的识别率。附图说明图1为本发明所涉及的验证码识别方法的流程图;图2为本发明实施例验证码原始图像;图3为本发明实施例验证码图像灰度化以后的图像;图4为本发明实施例验证码图像腐蚀以后的效果图;图5为本发明实施例验证码二值化并取反的图像;图6为本发明实施例验证码中值滤波后的效果图;图7为本发明实施例验证码连通区域降噪后的效果图;图8为本发明实施例验证码图像投影直方图分割说明;图9为本发明实施例验证码字符分割效果图;图10为本发明实施例自适应学习率与误差变化曲线图。具体实施方式下面结合说明书附图对本发明的具体实施方式(实施例)进行描述,使本领域的技术人员能够更好地理解本发明。一种基于神经网络的字符粘连验证码的识别方法,包括以下步骤:步骤1、通过c++编码自动刷新网站页面并自动截取验证码图片,获取一定量的图片并保存在特定的文件夹中备用;步骤2、对截取的验证码图片的图像进行预处理,使原始的验证码图像变成适于分割的图像,具体方法为:2.1、对于待识别的验证码的图像首先按照公式进行彩色图像灰度化处理,其中,r、g、b分别表示彩色图像中像素点红、绿、蓝的像素值,gray为所求点的灰度值,效果如图3所示;2.2、灰度图像中的噪音会影响图像分割的结果,因此对灰度图像进行去噪处理,由于验证码图像背景复杂,需要选用合适的去噪方法及合适的降噪顺序,使得待分割的图像即达到了降噪的效果,同时保留了字符的清晰轮廓。具体方法为:2.2.1、腐蚀是一种消除边界点,使边界向内部收缩的过程,膨胀可以看做是腐蚀的对偶运算。使用膨胀公式的反向操作对灰度图像进行腐蚀处理,其中a是待处理的图像,b为所使用的结构元素,表示b击中a,即存在一个点既是b中的元素也是a中的元素,是把结构元素b平移z后得到,若击中a,记下这个z点,所有满足条件的z点的集合称做a被b膨胀的结果。通过腐蚀处理可以使图像内部字符的区域相对缩小,并腐蚀掉了图像字符边缘粘连的一些噪点,使字符轮廓更加清晰,同时还可以将背景图像中颗粒较小的噪点轻松的去除,效果如图4所示;2.2.2、使用门限算法,选择适当的阈值,将步骤2.2.1处理过的图像进行二值化处理,并对二值化后的图像取反,这样黑底白字的图像可以更加清楚的观察背景中的噪点,了解剩余噪点的特征方便进行下一步的去噪工作,效果如图5所示;2.2.3、由于噪点颗粒较小且位置孤立,因此采用3×3的中值滤波模板进行滤波,去除图像中大部分噪点,若开始直接使用中值滤波,会导致背景与字符模糊,字符轮廓不够清晰,而增加后期字符识别的难度,效果如图6所示;2.3、定位验证码图像大小,对去噪后的图像去除妨碍处理的边框;2.4、对步骤2.3处理过的图像通过连通区域降噪法进一步去除噪声,即将图像中所有的连通区域进行标记,由于图像中大部分噪声已经去除,所以图像中较大且孤立的噪点就会清晰的标注出来,由于所需的字符必然是一个大的连通区域,所以对比连通区域的大小设定合适阈值,删除较小的连通区域,保留包含字符的大的连通区域,以达到去噪的目的。若开始就使用连通区域降噪,会使粘连在字符周围的噪点一同计算到属于字符的连通区域中,导致字符轮廓模糊不清,分割难度加大,效果如图7所示;步骤3、对步骤2预处理过的图像分割成单个字符图像,具体方法为:3.1、将预处理后的图像的灰度值进行竖直方向的投影,得到图像竖直方向的投影直方图,由于底色为黑色,而黑色的灰度值为0,对于未粘连的字符,灰度值为0的位置即为两个字符之间的空隙,判断单个字符的相对宽度;3.2、对于粘连字符,字符粘连部分较小,灰度值也相对较小,所得到的投影直方图就会形成相应的波谷,结合字符的相对宽度选择波谷的位置,确定字符切割点,投影直方图分割说明如图8所示;3.3、依照切割点将预分割的字符图像分割为单个字符图像,字符分割效果如图9所示;3.4、将单个字符图像灰度值进行水平方向上的投影,通过水平方向的投影直方图中灰度值为0的区域宽度确定字符的上下边界并进行分割;步骤4、将步骤3分割完的字符图像进行归一化处理,其目的是由于神经网络的输入维度需要统一,归一化的尺寸为;步骤5、将归一化完的字符图像通过bp神经网络进行识别训练,具体方法为:5.1、选用三层神经网络结构,即输入层、单个隐含层和输出层,获取单个字符的像素信息,并将其作为bp神经网络的输入层;设置隐含层节点数为126,若设置过多的节点容易导致过拟合并且使训练速度减缓;设定输出层为一个包含37个(10个数字、26个字母及一个未知)目标输出的线性神经元,其中神经网络中隐含层所使用的激活函数是双曲正切函数(tanh),在输出层使用的是sigmoid函数;5.2、采用随机梯度法的训练类型,设置最大训练轮数为256时有较快的训练速度和正确率;5.3、采用自适应的调整学习率,当训练误差下降时学习率升高,以增加学习过程使训练结果更为准确;但是当达到目标误差时则直接结束训练,因此目标误差数值不宜设置过大,学习率与误差变化曲线如图9所示。神经网络中其他参数设置如表1所示。表1参数设置参数名初始学习率动量目标误差参数值0.0001学习率*0.90.002步骤6、计算识别准确率,采用九折交叉验证的方法,其中识别正确率为所有字符正确率p的均值,并计算九次的正确率的均值,以达到一个相对公平准确的结果。其中正确率p的计算公式为:,其中tp为某一字符被正确识别的数量,fn为该字符被错误识别成其他字符数量。通过不同程度的降噪处理,能很好的将验证码复杂的背景噪声去除,基本可以达到进行零噪声字符分割。同时对于粘连的字符的分割也有较好的效果,通过神经网络的训练对于带有粘连字符的复杂背景验证码有较高的识别率。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1