字母验证码识别_第1页
字母验证码识别_第2页
字母验证码识别_第3页
字母验证码识别_第4页
字母验证码识别_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于标准库对比法的验证码识别系统摘要:本文对学校教务网的验证码进行分析和处理,建立了一套有效的验证码识别系统。首先我们从教务网获取了大量的验证码图像作为研究素材,而后对图像进行了一系列的预处理:彩色RGB图像的灰度化、灰度图像的二值化以及图像去燥。通过预处理,验证码图像的清晰度大幅提升。再根据题中图像的特点设计字符分割的算法,将处理后的图像分割为单个字符,从而避免识别过程中出现的字符信息不完备等缺陷。之后提取出26个字母的像素点矩阵,并建立字符识别的标准库。识别过程中,将待识别的验证码图像分割为单个字母的像素点矩阵,通过标准库对比法,识别出其对应的验证码字符,识别率超过75%。关键词:验证码识

2、别、字符分割、标准库对比法、matlab1、问题重述随着计算机网络的快速发展,用户信息与用户数据的安全性渐渐成为人们关注的焦点。为了防止网络黑客恶意破解密码、论坛灌水、非法入侵用户计算机系统等行为,大多数网站现采用验证码技术维护网络安全。学校教务网也不例外,其验证码均由四个大写字母组成(示例如下图所示),以此保障用户数据的安全。图1-1请查阅相关资料和数据,建立数学模型并编写程序,建立一套教务网验证码识别系统。2、问题分析本题要求建立一套教务网验证码的识别系统。首先我们要从学校教务网获取大量验证码图像,对图像进行预处理,即图像灰度化、图像二值化和图像去噪;再将验证码图像分割为一系列的单个字符,

3、得到每个字母的像素点矩阵,建立26个字母的标准库;最后把待识别的验证码图像分割为单个字母,通过与标准库的对比进行字符识别,从而得到验证码图像中的对应字母。3、符号说明符号符号说明Gray图像的灰度值Red红色像素分量Green绿色像素分量Blue蓝色像素分量v阈值f(x,y)图像的灰度坐标值pixel像素点个数i循环变量front字符左边界back字符右边界4、问题假设4.1 假设收集的图像素材具有充分的代表性。4.2 假设验证码图像中的各字符互不粘连。5、模型的建立与求解5.1 验证码图像的预处理为了消除图像中无关的信息,恢复有用的真实信息,增强有关信息的可检测性和最大限度地简化数据,从而提

4、高图像分割、匹配和识别的可靠性,我们将验证码图像进行预处理操作,即灰度化、二值化、去除噪点。5.1.1 彩色RGB图像的灰度化将图像中的亮度和色彩的彩色转变成灰度图像的这一过程称为图像的灰度化处理。在RGB模型中,若R=G=B,则彩色表示一种灰度颜色,其中R=G=B的值叫灰度值。本题采用加权平均法对验证码图像进行灰度化,由下式: Gray=(Red299+Green587+Blue114)/1000 (1)其中,Gray为灰度值,红色、绿色、蓝色的像素分量分别为Red、Green、Blue,由此可以将图像的灰度值变为256级。15.1.2 灰度图像的二值化图像的二值化是将图像上像素点的灰度值设

5、置为0或255,也就是将整个图像呈现出明显的只有黑和白的视觉效果。二值化过程中,首先在0255之间选取一个阈值v(本题选取110作为图像的阈值),设图像的灰度为f(x,y)。灰度值大于阈值像素时,设置为黑色;灰度值小于或等于阈值像素时,设置为白色。2即: fx,y=0; fx,yv255; fx,yv (2)5.1.3 图像去噪验证码图像在生成过程中会受到噪声干扰的影响,因此,需要对图像进行去噪处理,即减少数字图像中的噪声,以提高验证码的识别率。本题图像中的大部分噪点是简单的孤立点,通过检测这些孤立点就可移除大量的噪点。可将所有的像素点分为下图的三类:顶点A、非顶点的边界点B、内部点C。3图5

6、-1-1其中,A类点计算周边相邻的3个点,B类点计算周边相邻的5个点,C类点计算周边相邻的8个点。由于基准点在计算区域的方向不同,A类点和B类点还会有细分。A类点细分为:左上、左下、右上、右下;B类点细分为:上、下、左、右;C类点则不用细分。主要算法由matlab实现。5.2 字符分割验证码图像可以看作是由一系列的单个字符图像拼接而成的,为提高系统的识别率,我们将图像分割为只包含单个字符的图像。分割的过程中存在以下几类问题:字符位置不稳定、字符宽度不固定、去噪后部分字符有粘连。为解决上述问题,我们采用下面的算法进行分割。统计每一行字符的黑色像素点个数和每一列的黑色像素点个数。对于行需求取2个边

7、界,像素点个数pixel0定义字符最左边界,设为front;i自front向右移动,若pixel=0且1(i-front)=17,则m=min(pixel(i:i-15),取back等于pixel=m的最右一列;若i-front17且已到列最右侧,则back取列的最大值;若分割数不等于4,则跳过本图进行下次分割。分割后的图片均放在20*20的白色背景上,放置位置在左上方。字符分割完成后即得到单个字母的像素点矩阵。5.3 建立标准库将分割后得到的26个字母(AZ)的像素点矩阵作为其标准矩阵,并进行汇总,建立一个教务验证码识别系统的标准库(见附录)。5.4 验证码字符识别本题采用标准库对比法进行验

8、证码识别。首先将待识别的验证码图像分割为一系列单个字符,再将所得字母的像素点矩阵与标准库中的字母矩阵相加,若结果为0,则在该像素点处两图吻合,遍历26个字母,依次对比,统计与各个标准字母相同像素点数量,数量最多者即为对应字母。我们对70张验证码图像进行识别,共准确识别出52张图像中的字符,识别率达到75%。下表列举了部分验证码图像的识别结果,其中数字126分别对应大写字母AZ。原始图像识别结果原始图像识别结果表5-4-16、模型评价6.1 模型的优点(1)对验证码图像进行预处理,减少了尺寸和位置标准化等无关干扰因素的影响,提高了图像的清晰度和识别率。(2)字符分割的算法,有效解决了字符位置不稳

9、定、字符宽度不固定等问题,保证了分割后字符信息的完整性。(3)建立标准库对比法的模型,通过待识别字符与标准库字符的对比,可依次识别出验证码图像中的字符,识别率达到75%。6.2 模型的缺点(1)本文的识别系统对于粘连字符的识别率较低,还需进一步优化分割算法。(2)本文所建立的模型适用范围较小,对于较复杂的验证码图像无法准确识别,还有较大的改进空间。参考文献1王晓鹏,验证码识别系统的研究及发现,硕士学位论文,华南理工大学,2010年4月;2吕霁,基于神经网络的验证码识别技术研究,硕士学位论文,华侨大学,2015年6月;3哈莫,字符型图片验证码识别完整过程及Python实现,附录验证码预处理及识别

10、代码:%=标准图片=val=rand(15,18,27); %建立三维数组存放标准数字的像素点val(:,:,1)=255 255 255 255 0 0 0 0 0 255 255 255 255 255 255 255 255 255; 255 255 255 255 0 0 0 0 0 255 255 255 255 255 255 255 255 255; 255 255 255 255 0 0 0 0 0 255 255 255 255 255 255 255 255 255; 255 255 255 0 0 0 0 0 0 0 255 255 255 255 255 255 255

11、 255; 255 255 255 0 0 0 0 0 0 0 255 255 255 255 255 255 255 255; 255 255 255 0 0 0 0 0 0 0 255 255 255 255 255 255 255 255; 255 255 0 0 0 0 0 255 0 0 0 255 255 255 255 255 255 255; 255 255 0 0 0 0 0 0 0 0 0 255 255 255 255 255 255 255; 255 255 0 0 0 0 0 0 0 0 0 255 255 255 255 255 255 255; 255 0 0 0

12、 0 0 0 0 0 0 0 0 255 255 255 255 255 255; 255 0 0 0 255 255 255 255 255 0 0 0 255 255 255 255 255 255; 255 0 0 0 255 255 255 255 255 0 0 0 255 255 255 255 255 255; 0 0 0 255 255 255 255 255 255 255 0 0 0 255 255 255 255 255; 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255; 25

13、5 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255;%Aval(:,:,2)= 255 0 0 0 0 0 0 0 0 255 255 255 255 255 255 255 255 255; 255 0 0 0 0 0 0 0 0 0 255 255 255 255 255 255 255 255; 255 0 0 0 0 0 0 0 0 0 0 255 255 255 255 255 255 255; 255 0 0 255 255 255 255 255 0 0 0 255 255 255 255 2

14、55 255 255; 255 0 0 255 255 255 255 255 0 0 0 255 255 255 255 255 255 255; 255 0 0 0 0 0 0 0 0 0 255 255 255 255 255 255 255 255; 255 0 0 255 255 255 255 255 0 255 255 255 255 255 255 255 255 255; 255 0 0 0 0 0 0 0 0 0 255 255 255 255 255 255 255 255; 255 0 0 255 255 255 255 255 0 0 0 255 255 255 25

15、5 255 255 255; 255 0 0 255 255 255 255 255 0 0 0 255 255 255 255 255 255 255; 255 0 0 0 0 0 0 0 0 0 0 255 255 255 255 255 255 255; 255 0 255 255 255 255 255 0 0 0 255 255 255 255 255 255 255 255; 255 0 0 255 255 0 0 0 0 255 255 255 255 255 255 255 255 255; 255 255 255 255 255 255 255 255 255 255 255

16、 255 255 255 255 255 255 255; 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255;%Bval(:,:,3) =255 255 255 255 0 0 0 0 255 255 255 255 255 255 255 255 255 255; 255 255 0 0 0 0 0 0 0 0 255 255 255 255 255 255 255 255; 255 0 0 0 0 0 0 0 0 0 255 255 255 255 255 255 255 255; 255 0 0

17、 0 255 255 255 0 0 0 0 255 255 255 255 255 255 255; 0 0 0 255 255 255 255 255 0 0 255 255 255 255 255 255 255 255; 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255; 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255; 0 0 0 255 255 255 255 255 255 255 255 255 255 255 2

18、55 255 255 255; 0 0 0 255 255 255 255 255 0 0 255 255 255 255 255 255 255 255; 255 0 0 0 255 255 255 0 0 0 0 255 255 255 255 255 255 255; 255 0 0 0 0 0 0 0 0 0 255 255 255 255 255 255 255 255; 255 255 0 0 0 0 0 0 0 0 255 255 255 255 255 255 255 255; 255 255 255 255 0 0 0 0 255 255 255 255 255 255 25

19、5 255 255 255; 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255; 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255;%Cval(:,:,4) = 0 0 0 0 0 0 0 0 255 255 255 255 255 255 255 255 255 255; 0 0 0 0 0 0 0 0 0 0 255 255 255 255 255 255 255 255; 0 0 0 0 0 0 0 0

20、 0 0 0 255 255 255 255 255 255 255; 0 255 0 255 255 255 255 0 0 0 0 255 255 255 255 255 255 255; 0 255 0 255 255 255 255 255 0 0 0 255 255 255 255 255 255 255; 0 255 0 255 255 255 255 255 0 0 0 255 255 255 255 255 255 255; 0 255 0 255 255 255 255 255 0 0 0 255 255 255 255 255 255 255; 0 255 0 255 25

21、5 255 255 255 0 0 0 255 255 255 255 255 255 255; 0 255 0 255 255 255 255 255 0 0 0 255 255 255 255 255 255 255; 0 0 0 255 255 255 255 0 0 0 0 255 255 255 255 255 255 255; 0 0 0 0 0 0 0 0 0 0 0 255 255 255 255 255 255 255; 0 0 0 0 0 0 0 0 0 0 255 255 255 255 255 255 255 255; 0 0 0 0 0 0 0 0 0 255 255

22、 255 255 255 255 255 255 255; 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255; 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255;%Dval(:,:,5) = 0 0 0 0 0 0 0 0 0 0 255 255 255 255 255 255 255 255; 0 0 0 0 0 0 0 0 0 0 255 255 255 255 255 255 255 255; 0 0

23、0 0 0 0 0 0 0 0 255 255 255 255 255 255 255 255; 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255; 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255; 255 0 0 0 0 0 0 0 0 0 255 255 255 255 255 255 255 255; 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 25

24、5 255 255; 255 0 0 0 0 0 0 0 0 0 255 255 255 255 255 255 255 255; 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255; 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255; 0 0 0 0 0 0 0 0 0 0 255 255 255 255 255 255 255 255; 0 0 0 0 0 0 0 0 0 0 255 255 255 255 255 255 255

25、 255; 0 0 0 0 0 0 0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255; 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255;%Eval(:,:,6) = 0 255 0 0 0 0 0 0 0 255 255 255 255 255 255 255 255 255; 0 0 0 0 0 0 0 0 0 255 255

26、 255 255 255 255 255 255 255; 0 0 0 0 0 0 0 0 0 255 255 255 255 255 255 255 255 255; 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255; 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255; 0 0 0 0 0 0 0 0 0 255 255 255 255 255 255 255 255 255; 0 0 0 0 0 0 0 0 0 255 255

27、255 255 255 255 255 255 255; 0 0 0 0 0 0 0 0 0 255 255 255 255 255 255 255 255 255; 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255; 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255; 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255; 0 0 0 255 255 2

28、55 255 255 255 255 255 255 255 255 255 255 255 255; 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255; 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255; 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255;%Fval(:,:,7) = 255 255 255 255 0 0 0

29、 0 0 255 255 255 255 255 255 255 255 255; 255 255 0 0 0 0 0 0 0 0 0 255 255 255 255 255 255 255; 255 0 0 0 0 0 0 0 0 0 0 255 255 255 255 255 255 255; 255 0 0 0 255 255 255 255 0 0 0 0 255 255 255 255 255 255; 0 0 0 255 255 255 255 255 255 0 0 255 255 255 255 255 255 255; 0 0 0 255 255 255 255 255 25

30、5 255 255 255 255 255 255 255 255 255; 0 0 0 255 255 255 0 0 0 0 0 0 255 255 255 255 255 255; 0 0 0 255 255 255 0 0 0 0 0 0 255 255 255 255 255 255; 0 0 0 255 255 255 0 0 0 0 0 0 255 255 255 255 255 255; 255 0 0 0 255 255 255 255 255 0 0 0 255 255 255 255 255 255; 255 0 0 0 0 0 0 0 0 0 0 0 255 255 2

31、55 255 255 255; 255 255 0 0 0 0 0 0 0 0 0 255 255 255 255 255 255 255; 255 255 255 255 0 0 0 0 0 255 255 255 255 255 255 255 255 255; 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255; 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255;%Gval(:,:,8) = 0 0 0

32、255 255 255 255 255 0 0 0 255 255 255 255 255 255 255; 0 0 0 255 255 255 255 255 0 0 0 255 255 255 255 255 255 255; 0 0 0 255 255 255 255 255 0 0 0 255 255 255 255 255 255 255; 0 0 0 255 255 255 255 255 0 0 0 255 255 255 255 255 255 255; 0 0 0 255 255 255 255 255 0 0 0 255 255 255 255 255 255 255; 0

33、 255 0 0 0 0 0 0 0 0 0 255 255 255 255 255 255 255; 0 255 0 0 0 0 0 0 0 0 0 255 255 255 255 255 255 255; 0 255 0 0 0 0 0 255 0 0 0 255 255 255 255 255 255 255; 0 255 0 255 255 255 255 255 0 0 0 255 255 255 255 255 255 255; 0 0 0 255 255 255 255 255 0 0 0 255 255 255 255 255 255 255; 0 0 0 255 255 25

34、5 255 255 0 0 0 255 255 255 255 255 255 255; 0 0 0 255 255 255 255 255 0 0 0 255 255 255 255 255 255 255; 0 0 0 255 255 255 255 255 0 0 0 255 255 255 255 255 255 255; 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255; 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255

35、255 255 255;%Hval(:,:,9) = 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255; 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255; 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255; 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255; 0 0 0

36、 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255; 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255; 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255; 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255; 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255; 0 255 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255; 0 255 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255; 0 255 0 255 255 255 255 255 255 255 255 255 255 255 255

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论