验证码识别技术研究

内容提要:随着近年来信息化技术的不断提高,验证码识别逐渐渗透入了网络的各个领域。本文主要讨论验证码识别的思路和方向,识别系统设置中需要考虑的相关重点。


一・识别系统的设计:


1.图像二值化


图像二值化:图像显示的时候只能看到两种颜色(经常是黑色和白色)


采用阀值判定法。阀值的选择非常重要,如果选择不好,要么保留了很多噪声信息,要么丢失了很多有用信息。


2.图像的腐蚀


腐蚀可以消除小且无意义的噪声。


这个可以根据自身遇到的验证码的进行多次腐蚀。但过度腐蚀将造成有效信息的大量流失――因为腐蚀号码边缘的同时,内部的空洞也在逐渐的扩大。


3.图像膨胀


膨胀操作之后,验证码图像会变大,此时可以根据需要再次执行腐蚀的操作。腐蚀和膨胀是相辅相成的,我们可以根据实际的情况选择两者执行顺序的先后和重复次数,这个一定要灵活变通。


4.图像中的值滤波


中值滤波对验证码的背景孤立噪声的去除具有较好的效果,验证码内部较小的空洞也可以通过滤波实现填充。我们需要根据自身的实际情况进行多次值滤波的操作。


5.图像的分割


图像分割是根据目标与背景的具体位置,对图像中的目标,背景进行标记,定位,然后持续讲识别的目标与背景分离。有效分割是提取和识别的重中之重。


用投影法进行分割:在号码的区域间隔,投影为空白。在读取验证码信息的时候,设置阀值T作为字符与空白区域的边界条件。当读取的信息大于T时,开始读取字符:反之,则进入间隔区域。


具体步骤如下:1.全面去噪;2.整体水平去噪;3,划分边界;4垂直去噪;5水平去噪。


6.文字特征的提取


(一)・字符结构法


这种方法是以字符的结构特点和笔画类型,数据以及其位置作为识别特征,而不受验证码的字符图像大小的影响,适应性较强。判断依据:闭环数,闭环位置,笔划类型等等。


闭环算法如下:


读入二值化的验证码图像→找到一个像素值为0(黑色)的背景像素点B→搜索B的连通区域,并将该连通区域内的像素全部记为背景1(白点)→遍历图像中像素值为0的点→若存在没有标记为背景0的像素点,则为有封闭环:反之内封闭环数为0→重复遍历过程,确定闭环数目


(二)穿梭线法


在图像中引入贯穿字符区域的直线,根据字符与穿梭线的交点数进行识别。对于存在背景噪点声的字符,或者腐蚀过度造成笔划断裂的字符,穿梭线识别算法表现出先天不足。


(三)节点统计法


节点统计法以字符本身比笔划间的节点数作为统计特征。M为字符两个笔划相交节点数:N为字符三个笔划相交的节点数,P为大于三个笔划相交节的点数:(MNP)即为识别特征。


缺点:由于字符笔画较粗,在进行腐蚀处理后,往往造成笔画丢失,应用效果不佳。


(四)模版匹配法


验证码为英文字母和数字以不同字体,大小混合编排,因此这里我们相应采用了模版匹配的方法,它不必过分顾及它们的格式,在号码倾斜幅度较小的情况下,具有明显优势。以数字8的特征提取为例:



首先,我们把模版网格化。所谓的网格化,即把模版的图像瓜分为若干个区域,每一个区域即为一个小网格。接着,以区域内黑色像素数为特征,对每个区域的数字特征进行提取,即模版的数字化。


数字的标准模版均为46x72的格式,将其从左上角开始均分成4x7的网格,每个网格有10x10=100个像素。余下右侧和下方12个较小的网格,包含的信息量较少,予以忽略。数字8以黑色像素个数为特征提取出来的像素矩阵如下面所示:



背景复杂的验证码图片,增强程序的抗干扰性以提高识别率等等,都是有待我们需要攻克的难关,此篇文章主要是针对验证码识别技术做出探讨,完善程序是一条漫漫长路!望各位看官和我一样共同求索。


你可能感兴趣的:(算法,验证码,验证码识别,优优云)