Skip to content

本项目基于MATLAB完成数字验证码识别的GUI设计,图像处理,验证码识别等功能,采用多种方法完成图像二值化,最终验证码图像识别效果较佳

License

Notifications You must be signed in to change notification settings

jienijieni2/Digital-verification-code-recognition

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

-概要

​ 本项目基于MATLAB完成数字验证码识别的GUI设计,图像处理,验证码生成、识别等功能。采用BP神经网络来实现对验证码图像的识别。验证码的识别,大概分为图片预处理、分割字符、识别字符三个过程,其中分割字符最为困难。本文采用基于遗传算法和最大熵优化的图像分割技术、大津法(OTSU)、自定义阈值三种技术进行字符分割,并作进一步分析。利用英国萨里大学提供的印刷体数字数据集,共10160张图片,90%的数据用于训练BP神经网络,剩余10%的数据用于测试,最终识别准确率达到93.47%,利用训练所得BP模型完成识别字符,最终验证码图像识别效果较佳。

-成果

image-20220121112741055

-说明

  1. 项目内img目录下为0-9十类数字图片各1016张,code_source为验证码生成所用0-9十类数字图片各10张,code_img为生成的验证码图片,md_img存放README.md所用的图片。项目内"*.m"皆为MATLAB源代码文件,"*.mat"为已处理好的数据文件。

  2. 程序内所有路径为必填项,若没有路径单击对于按钮将弹出警告框;

  3. 程序内BPNN的参数都有默认取值,若不填写则按默认取值,如图,鼠标悬停输入框内,出现提示信息。

    image-20220121113408784

    同样的,验证码个数及灰度值都有默认取值。但是要注意,训练样本占比为必填项,没有默认取值。

  4. 若项目路径下已有数据集文件,包括训练集、测试集数据,如“X_train.mat”时,不需要重新创建数据集再分割,单击载入已有数据按钮,设定参数即可继续。

  5. 程序做了一定的异常处理,错误操作均会弹出提示信息(输入数据并没有作校验~~)。

  6. 由于图片数据大,创建分割训练集、测试集耗时很长~~~~

-演示

  1. 打开MATLAB,运行“appgui.m”文件,即出现程序的主界面。

  2. 第一模块“BPNN模型构建”中,在创建数据集中输入数据路径,注意填入绝对路径,且最后必须有'\',单击确定,弹出窗口,实时显示当前处理的图片。当创建数据集完成后,弹出提示框提示创建成功。将在项目路径下生成文件“inputs.mat”、“outputs.mat”。

    image-20220121114557125
  3. 第一模块“BPNN模型构建”中,在分割数据集中输入训练样本占比(小数形式),单击确定,等待分割完成。将在项目路径下生成文件“X_train.mat”、“y_train.mat”、“X_test.mat”、“y_test.mat”。

  4. 第一模块“BPNN模型构建”中,在参数设定及网络训练中输入各个参数的值,单击训练,神经网络训练完成后,将在项目路径下生成文件“bp.mat”。

  5. 第一模块“BPNN模型构建”中,单击测试,不可编辑的文本框内将产生测试结果。

  6. 若对测试结果不满意,可返回步骤4,重新设定参数,重新训练网络。

  7. 第二模块“生成验证码”中,输入字符数据路径,单击生成数据集,稍等片刻,将在项目路径下生成文件“codeInputs.mat”、“codeOutputs.mat”。

  8. 第二模块“生成验证码”中,输入验证码存储路径,输入验证码个数,单击生成验证码,等待弹出提示框。即可在存储路径下生成指定个数的验证码图片。

    image-20220121115042533

  9. 第二模块“识别验证码”中,单击选择验证码按钮,选择一张验证码图片。单击识别按钮即可完成验证码识别。

  10. 当验证码识别效果不佳时,可采用其他二值化方法,在二值化区域右侧的弹出式菜单可以选择二值化方法,若改用自定义level,默认取值0.9。再次点击识别即可重新识别验证码。

  11. 若默认灰度level二值化效果同样不佳,此时可以修改灰度level取值。重新点击识别即可。

-不足

​ 由于验证码种类繁多,目前的验证码识别应用往往只能识别一类验证码,不具有普遍性。本文所完成的验证码识别仅仅针对非粘连的数字验证码,应用领域受限。毫无疑问,粘连验证码的字符分割与识别将更为困难,本项目尚未涉及该部分内容,这也是目前存在的不足之处。

About

本项目基于MATLAB完成数字验证码识别的GUI设计,图像处理,验证码识别等功能,采用多种方法完成图像二值化,最终验证码图像识别效果较佳

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages