- 应用背景
验证码识别技术可以用于网站的群发软件,数字验证码识别是光学字符识别(OCR)的一种,是进行模式识别研究的基础。论文提出了以简单变形的数字字符为理论研究素材,将模板匹配作为基本框架的验证码识别系统。
本文所要讨论的就是一种基础的人工智能--模式识别。本文需要研究的是模式识别中的图像识别,主要是模拟人类的视觉特性,其目标是识别验证码,即读取图像文件中的数字字符。所谓验证码就是由程序随机生成的一组字符(数字或数字与字母的组合)图片。在有些情况下, 为了实现一系列自动操作需要对验证码进行识别。基于这种原因, 本文选择了验证码作为识别的对象。验证码的识别涉及到了图像预处理、分割、特征提取、识别等相关技术。描述了验证码图像的预处理工作,包括彩色验证码图像的灰度化、二值化、去噪和归一化等调整等预处理。
介绍了验证码图像中字符的分割算法,图像分割是指把图像分解成各具特性的区域并提取出感兴趣目标的技术和过程,分割结果的好坏将直接影响到视觉系统的性能。本文主要介绍了图像分割的基本知识,并对两种验证码图像分别设计不同的分割方法。对第一种字符间距较大但是字符笔画有断裂的验证码采取了改进的投影分割法进行分割;对第二种字符倾斜且粘连的验证码采取了结合连通域法、投影法和寻找最短路径的方法进行分割。采用MATLAB仿真了所有分割过程,得到了比较理想的分割结果。
最后提出了一种改进的模板匹配的数字识别算法,该算法是预先将字符分成若干个集合,经细化得到数字中央的骨骼部分,再对待识别数字提取特征并与训练库中的数字特征加权比较,利用欧式距离最小原则来对数字作出判决,试验结果表明,加权的模板匹配法保证了数字识别的正确率,而对数字进行预分类和细化处理,可以大大缩小模板匹配的识别速度,弥补了模板匹配算法对于大量数字耗时多的缺点,提升了系统速度。
本文的算法通过提取数字字符特征量, 对待识别的数字字符进行带有冗余的分类, 力求在保证分组成功的基础上尽可能缩小字符匹配范围,同时进行数字字符细化,以提高系统的运算速度, 对细化后的字符骨架进行特征提取, 并进行加权模板匹配,保证了系统的识别正确率,实验结果表明,两者的结合使系统有较高的识别正确率与识别速度,达到了预期的效果。
2 研究内容
本文就数字验证码识别的方法做介绍:基于的“中心思想”以及实现方法、适用范围。除此之外还设计了简单的GUI界面,GUI界面可以使非常直观清晰地呈现识别的效果以及实现的步骤。最后将算法程序融入到整个系统中,经过优化,调试程序以达到最佳效果。确保数据采集准确快速且运行稳定。
3文章结构
第一章主要是此次毕设引言还有介绍下毕设的主要研究内容;
第二章主要是对此次所需要用到的Matlab软件做个简单的介绍,然后再介绍图像处理的基本理论以及人机交互界面GUI的简单设计;
第三章主要是对系统进行分析然后再设计,介绍系统实行的方式和每个模块的主要成分;
第四章则是介绍如何实现此次系统设计,并做一个完整的结果展示;
第五章是对整个设计做个总结,对本次论文设计这些日子以来的工作发展与设计成果以及还存在的问题一一做个介绍,之后就是本次论文的所参考的一些文献等,本次论文的章节结构大致如此。
本节主要介绍图像处理的一些理论基础,以及运行环境Matlab的简介。
4. 系统分析与设计
目前,数字验证码识别技术已经广泛的应用于网站验证码,购物,登陆等系统中,本设计含有人机交互界面GUI,如下图,它的设计框图3-1:
1.先将数字验证码输入进系统;
2.接着再进行灰度化,二值化,去噪,定位,归一化,最后识别;
3.呈现效果;
本文提供的验证码识别图基本上都是经过干扰信息处理过的图片,这里主要研究的是对该类数字型验证码的识别.
5 界面GUI的设计
整个设计的人机交互界面GUI需要人性化,并且突出去雾前后图像以及灰度直方图的对比,可以在界面灵活地选取不同算法。设计草图如图4-1所示。
4-1 GUI界面布局图
5.1 GUI界面的制作
该人机交互界面GUI,具有界面友好,容易操作等特征。首先打开matalb软件,在命令窗口command window输入guide,并且敲击回车键,进入matlab GUI快速打开方式窗口。出现如下图:
点击OK确定,进入GUI编辑界面窗口。
在设计上,拉动2个大小完全相同的Axes方框,用于分别放置原图和处理图,以达到直观对比效果。界面上制作一个菜单,所以操作利用菜单来完成,句柄内填充以下代码以实现功能。
file = fullfile(pwd, 'test/下载.jpg');
[Filename,Pathname] = uigetfile({'*.jpg;*.tif;*.png;*.gif','All Image Files';...
'*.*','All Files' }, '载入验证码图像',...
file);
if isequal(Filename, 0) || isequal(Pathname, 0)
return;
end
% 显示图像
axes(handles.axes1); cla reset;
axes(handles.axes2); cla reset;
set(handles.axes1, 'Box', 'on', 'Color', 'c', 'XTickLabel', '', 'YTickLabel', '');
set(handles.axes2, 'Box', 'on', 'Color', 'c', 'XTickLabel', '', 'YTickLabel', '');
set(handles.text4, 'String', '');
% 存储
fileurl = fullfile(Pathname,Filename);
Img = imread(fileurl);
imshow(Img, [], 'Parent', handles.axes1);
set(handles.text2, 'String', '验证码图像');
handles.fileurl = fileurl;
handles.Img = Img;
guidata(hObject, handles);
dianji
调用matlab打开程序,实现可以从计算机本地自由调用路径,以选择所需文件,实现效果如下图。
图:实现打开功能
为了使界面更加美观,对于中间处理过程图也是采用菜单的方式设计,中间步骤图分别如下呈现:
图:验证码图像定位