基于流水模型二值化的复杂验证码识别研究

上传人:E**** 文档编号:118098442 上传时间:2019-12-11 格式:PDF 页数:68 大小:2.55MB
返回 下载 相关 举报
基于流水模型二值化的复杂验证码识别研究_第1页
第1页 / 共68页
基于流水模型二值化的复杂验证码识别研究_第2页
第2页 / 共68页
基于流水模型二值化的复杂验证码识别研究_第3页
第3页 / 共68页
基于流水模型二值化的复杂验证码识别研究_第4页
第4页 / 共68页
基于流水模型二值化的复杂验证码识别研究_第5页
第5页 / 共68页
点击查看更多>>
资源描述

《基于流水模型二值化的复杂验证码识别研究》由会员分享,可在线阅读,更多相关《基于流水模型二值化的复杂验证码识别研究(68页珍藏版)》请在金锄头文库上搜索。

1、南开大学研究生院二。一一年五月ff删删删删JJ删liJl舢Illl,删IHJ舢IIIIJ|ffJIIt删ill;Y 2 0 0 2 9 7 5南开大学学位论文使用授权书根据南开大学关于研究生学位论文收藏和利用管理办法,我校的博士、硕士学位获得者均须向南开大学提交本人的学位论文纸质本及相应电子版。本人完全了解南开大学有关研究生学位论文收藏和利用的管理规定。南开大学拥有在著作权法规定范围内的学位论文使用权,即:( 1 ) 学位获得者必须按规定提交学位论文( 包括纸质印刷本及电子版) ,学校可以采用影印、缩印或其他复制手段保存研究生学位论文,并编入南开大学博硕士学位论文全文数据库;( 2 ) 为教学

2、和科研目的,学校可以将公开的学位论文作为资料在图书馆等场所提供校内师生阅读,在校园网上提供论文目录检索、文摘以及论文全文浏览、下载等免费信息服务;( 3 ) 根据教育部有关规定,南开大学向教育部指定单位提交公开的学位论文;( 4 ) 学位论文作者授权学校向中国科技信息研究所和中国学术期刊( 光盘) 电子出版社提交规定范围的学位论文及其电子版并收入相应学位论文数据库,通过其相关网站对外进行信息服务。同时本人保留在其他媒体发表论文的权利。非公开学位论文,保密期限内不向外提交和提供服务,解密后提交和服务同公开论文。论文电子版提交至校图书馆网站:h t t p :2 0 2 1 1 3 2 0 1 6

3、 1 :8 0 0 1 i n d e x h t m 。本人承诺:本人的学位论文是在南开大学学习期间创作完成的作品,并已通过论文答辩;提交的学位论文电子版与纸质本论文的内容一致,如因不同造成不良后果由本人自负。本人同意遵守上述规定。本授权书签署一式两份,由研究生院和图书馆留存。作者暨授权入签字:刻坯主2 0 1 1 年6 月6 日南开大学研究生学位论文作者信息论文题目基于流水模型二值化的复杂验证码识别研究姓名刘怀字学号2 12 0 0 8 0 4 5 8答辩日期2 0 1 1 年0 5 月2 6 日论文类别博士口学历硕士硕士专业学位口高校教师口同等学力硕士口院系所软件学院专业计算机应用技术联

4、系电话1 3 7 0 2 0 9 6 7 1 6E m a i lm y s p a e e l h y 1 2 6 C O I I I通信地址( 邮编) :天津市南开区卫津路9 4 号西区公寓4 1 - 1 0 63 0 0 0 7 1备注:是否批准为非公开论文否注:本授权书适用我校授予的所有博士、硕士的学位论文。由作者填写( 一式两份) 签字后交校图书馆,非公开学位论文须附南开大学研究生申请非公开学位论文审批表。南开大学学位论文原创性声明本人郑重声明:所呈交的学位论文,是本人在导师指导下进行研究工作所取得的研究成果。除文中已经注明引用的内容外,本学位论文的研究成果不包含任何他人创作的、已公

5、开发表或者没有公开发表的作品的内容。对本论文所涉及的研究工作做出贡献的其他个人和集体,均已在文中以明确方式标明。本学位论文原创性声明的法律责任由本人承担。学位论文作者签名:2 0 1 1 年6 月6 日非公开学位论文标注说明( 本页表中填写内容须打印)根据南开大学有关规定,非公开学位论文须经指导教师同意、作者本人申请和相关部门批准方能标注。未经批准的均为公开学位论文,公开学位论文本说明为空白。论文题目申请密级口限制( 2 年)口秘密( l O 年)口机密( 4 2 0 年)保密期限2 0年月日至2 0年月日审批表编号批准日期2 0年月日南开大学学位评定委员会办公室盖章( 有效)注:限制2 年(

6、 可少于2 年) :秘密l O 年( 可少于1 0 年) :机密2 0 年( 可少于2 0 年)摘要摘要本文根据目前字符验证码的发展现状,对验证码识别技术进行了研究和探索。详细介绍了验证码识别过程中各个步骤所使用算法,总结了它们的优势与不足,对验证码识别的技术难点进行了分析。二值化做为识别预处理步骤之一,用于简化和提取字符信息,包括全局阈值法和局部阈值法。准确提取字符是正确识别的基本前提,由于验证码图像的特殊性,其常包含复杂背景信息,使O t s u 、N i b l a c k 等经典二值化算法得不到预期效果,从而严重影响了识别正确率。基于流水模型的二值化算法属于局部阈值算法,能够从特定图像

7、准确提取前景信息,但需要在处理每张图像时以实验方式确定降水次数,该不足使其无法应用于验证码识别,为获得其二值效果,本文对该算法进行了研究和改进,并成功将其应用于验证码图像二值化,有效的提高了识别正确率。本文主要工作如下:一、通过引入边界信息和笔画宽度,改变了原有算法的降水方式和单次降水量,使算法在固定降水次数的条件下对不同图像具有自适应性,能够提取到全部字符区域,并几乎不含噪声。产生的弊端是会产生字符缺损的现象。二、为解决字符缺损对识别的影响,本文借鉴N i b l a c k 局部阈值法的思想对算法进一步改进,获得了其在字符及附近区域能够准确提取目标信息的优点,从而取得良好的二值化效果和对多

8、种图像的适应性,文中将改进后算法命名为基于流水模型的目标区域阈值法。三、使用O t s u 、N i b l a c k 和基于流水模型的目标区域阈值法对三种不同类型的验证码进行实验,识别阶段分别选择了B p 神经网络和形状上下文理论进行字符识别,结果证明,与传统二值化算法相比,本文提出算法在两种识别算法下,均表现出更好的适应性和识别正确率。关键字:验证码识别二值化流水模型形状上下文A b s t r a c tA b s t r a c tT h i sp a p e rf o c u so nt h ec a p t c h ar e c o g n i t i o nt e c h n

9、o l o g y , d e s c r i b e dt h ea l g o r i t h m su s e di ne a c hs t e p ,s u m m e du pt h ea d v a n t a g e sa n dd i s a d v a n t a g e so ft h e m ,a n da n a l y z e dt h em a i nt e c h n i c a ld i f f i c u l t i e si nt h ep r o c e s so fr e c o g n i t i o n B i n a r i z a t i o n

10、a so n eo ft h ep r e i d e n t i f i e ds t e p st os i m p l i f ya n de x t r a c tc h a r a c t e ri n f o r m a t i o n , i n c l u d e 百o b a lt h r e s h o l dm e t h o da n dl o c a l t l u e s h o l dm e t d a o d B i n a r i z a t i o ni so n eo fm o s ti m p o r t a n tp a r tf o rc o r r

11、 e c tr e c o g n i t i o n ,b u tt h ec a p t c h ai sas p e c i a li m a g e ,w h i c ho f t e nc o n t a i n sc o m p l e xb a c k g r o u n di n f o r m a t i o n ,S Ot h e s ec l a s s i c a lb i n a r i z a t i o na l g o r i t h ms u c ha sO t s ua n dN i b l a c kc 觚n o tg a i nt h ee x p e

12、c t e dr e s u l t ,w h i c hs e r i o u s l ya f f e c tt h er e c o g n i t i o na c c u r a c y B i n a r i z a t i o nb a s e do nw a t e rf l o wm o d e li sal o c a lt h r e s h o l da l g o r i t h m ,w h i c hc a na c c u r a t e l ye x t r a c tt h ef o r e g r o u n di n f of r o mo n ei m

13、 a g e ,b u ti tn e e dt og e tt h er a i n f a l lt i m e so fe a c hi m a g eb ye x p e r i m e n t ,S Ot h a ti tc a i ln o tb eu s e df o rc a p t c h a T h i sp a p e rp r o p o s e daw a yt oi m p r o v et h i sa l g o r i t h ma n ds u c c e s s f u l l ya p p l i e di ti nt h eb i n a r i z

14、a t i o no fc a p t c h a , w h i c he f f e c t i v e l yi n c r e a s et h er e c o g n i t i o na c c u r a c y T h em a i nt a s ki nt h i sp a p e r F i r s t ,b yi n t r o d u c i n gt h eb o u n d a r yi n f o r m a t i o na n dr a i n f a l ls t r o k ew i d t h i ti Sa b l et oe x t r a c t

15、a l lc h a r a c t e ra r e a sw i t hl i t t l en o i s e T h eo n l yd i s a d v a n t a g ei st h er e s u l to f t e nh a sd e f e c t s S e c o n d , t oa d d r e s st h ei m p a c to fc h a r a c t e rd e f e c t s ,t h ei m p r o v e da l g o r i t h mi sp r o p o s e dt oc o m b i n ew i t h

16、t h eN i b l a c ka l g o r i t h m ,t om a k eu pt h e i ro w nd e f i c i e n c i e s ,w h i c ho b t a i nt h eb e t t e rr e s u l ta n da d a p t a b i l i t y T h i r d ,w ec o m p a r et h eO t s u , N i b l a c ka n dt h ep r o p o s e dt h r e s h o l dm e t h o db ye x p e r i m e n to nt

17、h r e ek i n do fd i f f e r e n tc a p t c h a , s h a p ec o n t e x t st h e o r ya n dB pn e u r a ln e t w o r ka r ec h o s e ni nr e c o g n i t i o ns t a g e ,t h er e s u l t ss h o wt h ep r o p o s e da l g o r i t h mh a sb e t t e ra d a p t a b i l i t ya n dr e c o g n i t i o na c c

18、 u r a c yt h a nt h et r a d i t i o n a lb i n a r i z a t i o na l g o r i t h m si nb o t hr e c o g n i t i o ne x p e r i m e n t K e yW o r d s :C a p t c h ar e c o 鲥t i o n ,B i n a r i z a t i o n ,W a t e rf l o wm o d e l ,S h a p ec o n t e x t sI I目录目录摘要一IA b s t r a c t I I第一章引言l第一节研究

19、背景1第二节验证码技术及识别的研究现状j 一21 2 1 验证码干扰方式分类。21 2 2 国内外验证码识别技术研究现状一3第三节验证码识别步骤简介6第四节本文主要贡献7第五节本文各章内容安排。8第二章验证码图像预处理过程9第一节验证码图像概述9第二节彩色图像灰度化。lO第三节灰度图像二值化1 12 3 1 二值化概念及意义112 3 2 二值化算法分类1 l2 3 3 最大类间方差法1 22 3 4 信息熵法1 52 3 5N i b l a c k 局部阈值化算法1 72 3 6 二值化算法总结1 8第四节去除图像噪声1 9第一节字符分割算法2 63 1 1 投影分割法。2 63 1 2

20、连通区域分割法2 83 1 3 基于最短路径的分割算法2 9第二节单个字符归一化。3 l第三节形状上下文理论3 23 3 1 形状上下文概述。3 23 3 2 形状上下文数学表示3 33 3 3 形状间相似度定义3 4第四节B P 神经网络3 5第五节本章小结一3 6第四章基于流水模型的目标区域阈值法3 8第一节引言3 8第二节基于流水模型的二值化算法3 94 2 1 图像流水模型4 04 2 2 积水区域的全局阈值化4 2第三节基于流水模型算法的改进一4 24 3 1 边界像素点的提取4 3T V目录4 3 2 笔回宽度的估测4 34 3 3 单次降水量的计算4 4第四节两种互补算法的结合使

21、用4 6第五节本章小结4 7第五章字符验证码识别。4 8第一节实验综述4 8第二节实验数据描述4 8第三节实验流程介绍一5 0第四节二值化效果比较5 2第五节验证码识别结果5 3第六章总结与展望。5 6参考文献5 7致谢5 9个人简历6 0V第一章引言第一章引言第一节研究背景在互联网高速发展的今天,网络资源已经成为人们获取信息和服务的主要途径之一,它的信息量在以指数级的速度增长,人们对互联网的依赖性越来越高。新浪、搜狐等门户网站提供丰富的新闻信息;淘宝、阿里巴巴等网站开创了安全平等的网络交易平台;腾讯,校内为人们在网上交际提供了便利;网上银行的开通使我们足不出户便可以购物、缴费、汇款。在提供便

22、利的同时,安全问题也随之而来。只是通过验证用户名和密码已经无法保证网站的安全,网络上的很多黑客通过暴力破解或恶意注册,为网站和用户都带来了极大的影响。提供免费下载的网站往往因为没有任何保证安全的措施而被盗用链接,对服务器带来毁灭性的灾难。验证码技术被提出并应用。验证码又被称为C A P T C H A R ,最早在卡耐基梅隆大学的一个项目中被提出,并由雅虎首次使用。C A P T C H A R 是指由计算机使用一定的算法来生成一个测试从而识别出测试者是人还是计算机,也就是说它要生成一个自己都无法通过的测试,实际这本身就是一个悖论【l 】。目前应用的主流验证码图片一般是由被添加一定背景干扰的四

23、到六个英文字符或数字相连组成,能够起到一定的辨别作用。验证码识别,即由机器自动识别出验证码中的内容,在晚些时候也被提出并研究,一方面黑客们希望通过这项技术实现自动注册,发布垃圾信息,窃取用户信息等。另一方面通过验证码识别技术能够实现资源智能下载,并对O C R( 光学字符识别) 技术有一定的推动作用。验证码识别涉及数字图像处理,模式识别,人工智能等多个领域知识,每一次进步同样会促进这些领域的发展。验证码与验证码识别两项技术互相促进并制约,验证码识别的每一次突破都会影响验证码的安全性,并促进更高级验证码技术的提出,他们此消彼长,促进了字符识别技术的快速发展。第一章引言第二节验证码技术及识别的研究

24、现状早期的字符验证码就来自于O C R 系统无法识别的字符,C M U 曾经设计了一个著名的r c C A P T C H A 系统,让人来帮助计算机识别复杂字符,在对书籍扫描识别的过程中将无法识别的字符发到各大网站做为验证码让人来帮忙识别,通过这种方式即达到了网站验证安全的目的,又为纸制资料数字化带来了极大的便利。如今,在验证码识别技术的推动下,验证码技术也在飞速的发展,为了防止被成功识别,多种干扰算法被研究并应用。1 2 1 验证码干扰方式分类起初的验证码仅仅是固定字体和位置的多个字符或字母的顺序排列,并没有加入任何干扰,但随着验证码识别技术的不断发展,这种验证码已经无法保证安全,带有多种

25、干扰的验证码出现。目前使用最为广泛的干扰方式可以分为四类:1 背景干扰:通过在背景中添加噪声点、干扰线和干扰图形等方式影响识别。是目前被广泛应用的一种干扰方式,复杂的背景干扰会对图像预处理过程中的二值化和去噪带来困难,从而影响后期识别正确率。目前并没有一种通用的二值化和去噪算法能够高效的去除多种类型的背景干扰。椒盐背景干扰:添加干扰线:黼配硪:露麟髫j ! 荔。篡图1 1 使用背景干扰的验证码示意图2 字符大小和位置的变化干扰:通过使用多种字体及改变大小来影响识别。这种干扰方式并不能对识别造成太多的影响,运用位置及大小归一化算法能够很好的解决这种干扰。3 字符旋转和形变干扰:通过使用多种仿射算

26、法旋转字符、改变字符的形状,2第一章引言增加字符切割和识别的难度,为基于模板的字符识别算法带来了很大困难。复杂的形变和旋转干扰使基于人工智能的识别算法识别正确率大大降低,并增加了训练成本。字符形状和位置变化:字符发生形变并旋转:媾理图1 2 使用字符旋转和形变干扰的验证码示意图4 字符粘连:是目前使用的一种主要干扰方式,也是作用最明显的一种,粘连使基于切割的字符识别算法失去了作用。但该种干扰具有一定的弊端,它增加了用户识别的难度。字符重叠属于复杂的粘连,目前没有任何算法能够处理,重叠字符也会为用户带来极大的不便,很多验证码人都无法识别,所以并不是一种优秀的干扰方式。如今的字符验证码并不是仅仅使

27、用一种干扰方式,而是多种干扰方式结合使用,在不影响用户识别的前提下,最大程度的加大干扰。1 2 2国内外验证码识别技术研究现状最早的验证码识别就是以光学字符识别技术为基础发展而来的,O C R 起源于1 9 2 9 年,德国科学家T a u s h c , c k 通过模板匹配的方法首次实现了机器对字符的识别,然而在当时仅仅是个试验并没有推广,直到计算机的出现才得以快速发展【2 1 。目前做为模式识别领域的一个主要分支,发展迅速。二十世纪六十年代日本成功的将O C R 技术应用于邮政编码智能识别;微软基于O C R 技术,实现了办公文档中对手写输入的支持,并达到了很高的识别正确率;近些年国内也

28、有很多公司实现了非常优秀的O C R 系统,在电子商务、保险、金融等领域都有了成功的应用。O C R 技术的发展也证明了使用带有简单干扰的字符做为验证码是不安全的,很多技术对这种验证码都能达到非常高的识别正确率( 接近1 0 0 ) 。2 0 0 4年,开源项目P W N T C H A ( 验证码破解开源项目) 的出现进一步证明了目前很3第一章引言多验证码的无效性,项目中收集了很多目前主流的验证码,识别并给出评价,大部分无背景干扰或背景干扰较弱和没有字符旋转形变干扰的验证码被评价为无效,对它们的识别正确率高达9 0 以上。文献【3 】中提出了分割即识别的,只要能够成功分割出单个字符,便可以针

29、对性的研究识别算法。仅仅使用O C R 技术已经不能满足复杂验证码识别的任务,各种改进及创新的识别算法被提出,按照最终识别方法的不同可以将目前所有算法分为三类:1 基于模板匹配的识别算法【4 】。首先对预处理过的字符进行特征提取,特征是指能够代表该字符特性的向量,例如全像素特征、垂直( 水平) 分区统计特征、轮廓特征等,模板就是所有特征向量的集合,一个字符可以对应一个或多个模板,根据统计学的规律,样本空间的增加能够提高识别的正确率,但会带来空间和时间上的损失。在识别过程中可以通过计算待识别字符与每一类模板的距离( 相似度) ,将距离最小的一类模板做为识别结果。距离的定义方式有很多,可以跟据不同

30、的需求或通过试验去选择。文献【5 】中使用K 近邻分类算法对仅有形变和轻微旋转的验证码达到了8 5 以上的识别正确率。文献 7 】在字符切割后进行了归一化和细化处理,使用最小距离法计算字符相似度,针对当时某知名大型网站的验证码进行实验,取得了很好的效果。苏磊等人在2 0 0 7 年成功将S e r g eB e l o n g i e 提出的形状上下文理论应用于验证码识别,成功的突破了形变干扰对验证码识别带来的困难【8 】,并在其后由贺强通过边界检测和建立半极坐标系进行了改进,大大提高了算法的效率【9 】。王虎,冯林等人在同一年提出了模板权值的概念,将更能体现字符唯一性的特征赋予高权值,多字符

31、相近的特征赋予低权值( 可以为零) ,并提出了一套计算权值的算法,从而进一步提高了识别的准确率【l o 】。基于模板识别的方法是目前研究最多也是最成熟的一类方法,除了以上计算距离的方法外,还有汉明距离【1 1 】、欧氏距离、旋转不变距误差等【1 2 】。虽然这类算法对某些验证码能够达到非常高的识别正确率,但对具有粘连干扰的验证码仍达不到较好的识别效果,而且由于需要提前准备模板,并不具备良好的适应性和移植性。2 基于字符结构的识别算法【1 3 】。每个字符的形状都不同,均有自己特有的结构特征。可以通过提取字符的凹凸特征,角特征,是否有内圈,含有几个内圈等结构区分字符。该方法最大的优点是不需要建立

32、样本空间,并具有一定的适应性,通过找出每个字符特有的结构特征集合,且集合之间不互相包含,便可进4第一章引言行识别。但往往由于切割不正确或是背景去噪效果不好而导致某些字符无法识别。潘大夫等人提出将离散型一节微分引入,判断字符某一侧的形状是内凹、外凸还是直线,之后通过四个方向的轮廓特征进行识别【l4 1 。文献 1 6 】通过背景赋值法提取字符的凹凸圈、角点等特征对字符进行识别,取得了较好的成果。由于此种方法受形变及旋转的干扰较为严重,因此并不适合复杂验证码的识别,国内外在该类算法中的研究也较少。3 使用人工智能领域的多种方法进行识别。首先收集一定数量样本进行训练,当误差达到一定的阈值,或训练达到

33、一定数量后,再进行识别。此类方法在国内外研究也较多,主要因为算法的鲁壮性非常好,并且受噪声和形变等干扰较小,能够适应大部分的验证码,具有一定的可移植性。神经网络和支持向量机两类方法使用较多,通过它们的记忆和联想功能进行识别。这种识别方式一样需要提取特征,特征的种类与模板相同只是使用方法不同,提取的特征集合会做为一个多维向量用来训练,训练完成后,特征集合可以丢弃,仅存储算法相关的权值参数,能够节省一定的空间。在识别速度上也优于上两类方法,只是训练时间较长,对先验知识依赖较强。文献 1 7 】【1 8 】通过训练支持向量机进行识别,在对当时知名图书和门户网站验证码的识别过程中,通过不同核函数及参数

34、的测试,找到最优并均达到了5 0 的识别正确率。多种类型的人工神经网络被应用:H o p f i e l d 神经网络【1 9 1 、B p 神经网络【2 0 】和R B F 神经网络【2 1 1 。王晓鹏在2 0 1 0 年针对神经网络的收敛速度慢,容易陷入局部最优等缺点提出了将遗传算法与b p 神经网络结合使用的方法,并用试验进行了验证,通过使用遗传算法来提供网络的权值参数,并根据误差的大小交叉变异生成新的参数,从而使神经网络能够实现全局最优【列。贺强在同一时期通过引入自适应学习率、动量项等方式改进B P 神经网络,也改善了学习速度慢和陷入局部最优等不足【2 0 1 。这三类识别方法各有优

35、势和略势,只是侧重点不同。基于模板的识别针对性强,通过建立良好的模板库可以对某一种验证码达到很高的识别正确率,但该类算法均不具备较好的适应性,需要针对不同类型的验证码准备不同的模板库,而且对于使用形变和旋转干扰的验证码,识别正确率将大幅下降,形状上下文理论的提出很好的解决了这些问题。基于结构的识别不需要先验知识,对结构固定的一类验证码具有良好的适应性,并且识别速度较快。人工智能领域的方法,具有最好的鲁壮性和移植性,对不同的验证码,只需重新训练即可使用。5在验证站目前所用旋转干扰和程中噪声去别字符。如确率的关键传统的识别方法主要包括获取图像、图像预处理、字符切割与归一化处理( 有些算法不需要归一

36、化) 、单个字符识别四个阶段。这类方法可称为基于切割的验证码识别算法。但由于粘连干扰导致的切割困难,基于识别的切割算法最近被提出,将三四阶段化为一个阶段,通过识别找到切割位置,切割后继续识别,如此循环至识别完成,该类算法并不能完全解决粘连干扰的问题,如何在粘连字符串中识别出目标字符成为该类方法的研究重点【2 3 1 。本文所使用的识别方法属于基于分割的识别,下面给出该类识别方法每个步骤的主要工作。1 获取图像,验证码技术做为保证安全的一种策略在B S 和C S 结构的系统中均有应用,获取图像指的就是通过技术手段自动获取到w e b 浏览器和c l i e n t客户端中的验证码图片。对于B S

37、 架构可以通过提取图片U R L 访问服务器获得。由于C S 架构的传输协议未知,协议包内容也经常是加密的形式,因此可以通过控件识别并获取内存镜像的方式获得。对于安全性较好的系统,以上两种方法都有可能失效,需使用其他技术,此步骤不属于本文的研究内容,不予以介绍。2 图像预处理,是指对获取到的图像进行灰度化、二值化和去除噪声等处理,在保证图像基本信息的前提下最大限度的简化图像信息量,从而提高识别效率。预处理效果的好坏直接影响到后两个阶段,处理过度使基本信息丢失会导致切割错位或识别错误,留下过多噪声一样会影响识别,因此如何使预处理达到最佳效果是目前的研究重点,最终的二值化和去噪效果是评价该阶段好坏

38、的主要因素。3 字符切割与归一化处理,字符切割是指将验证码中的字符串以字符为单位分割开来,例如一个由四个英文字母组成的验证码,经过切割后成为四张包含6第一章引言一个英文字符的图片。基于切割的识别算法的识别正确率就是建立在能够正确切割字符的基础上,如何正确切割粘连字符是目前的难点之一。归一化包括大小归一化,位置归一化和字符细化等。大小归一化是将分割后的图片通过插值等方法变换到同一尺寸;位置归一化是指通过包围框或质心的计算将字符移动到图片的同一个位置( 一般是中心) ;细化又称为骨骼化,将字符的粗细简化成单像素。不同的识别算法对归一化要求方式不同,除基于结构的识别方法外一般都需要大小归一化。4 单

39、个字符识别,是指将经过预处理并成功切割的单个字符图片还原为字符数值。可以采用模板匹配,神经网络,支持向量机等多种算法进行识别,在上文识别算法分类中已全面介绍。图1 4 验证码识别流程图第四节本文主要贡献对当前国内外验证码识别技术进行了研究和总结,给出了验证码识别各个步骤中常用的经典算法,并总结了它们的优点与不足。针对带有复杂背景干扰的验证码图像二值化问题,本文进行了深入研究。流水模型二值化能够从特定图像准确提取前景信息,但需以实验方式确定7后算法命名为基于流水模型的目标区域阈值法。文中对三种不同类型的验证码进行实验,结果证明,与传统二值化算法相比,本文提出算法表现出了更好的适应性和识别正确率。

40、第五节本文各章内容安排本文共分为六章,各章主要内容如下:第一章介绍了验证码和验证码识别技术的应用意义及发展现状,给出了验证码技术用到的主要干扰方式。对当前验证码识别技术进行分类和总结。第二章详细描述了验证码图像预处理过程中用到的各种算法,主要包括二值化和图像去噪,通过多种算法的比较总结它们的优点和不足。第三章首先介绍了多种二值图像的切割算法。之后详细叙述了形状上下文理论,并在此基础上给出了形状间相似度的量化定义,分析了该理论在字符识别技术中的优势。第四章针对目前二值化算法普遍具有局限性的不足,对基于流水模型的二值化算法进行改进,并将其与N i b l a c k 算法结合使用,取得了较好的二值

41、化效果。第五章通过实验比较多种二值化算法及验证码识别技术,根据实验结果论证了本文提出的二值化算法的优势,及以该算法为基础的基于形状上下文识别技术在适应性及识别正确率方面的优势。第六章对本次研究进行了总结,并提出了下一步工作的主要方向。8第二章验证码图像预处理过程第二章验证码图像预处理过程第一节验证码图像概述目前验证码图片格式主要是B M P 、G I F 和J P G 等支持彩色的格式,单通道的颜色深度一般为2 5 6 ,如果是2 4 比特的B M P 格式则支持R G B 三通道。在生成彩色验证码图片时,除字符外又会添加点,线,随机图形等干扰,过于复杂的图像信息为直接识别带来问题。预处理过程

42、就是指在图像切割识别之前对图片进行灰度化、二值化、图像去噪等处理,最大限度的简化信息,去除无用噪声从而满足识别的输入条件。预处理效果的好坏直接影响到后期识别准确率。表2 1 预处理验证码图像类型表图像类型名验证码示意图彩色图像重霪孽灰度图像礞雾麓嚆潇二值图像一。暑j鼍_- 一第二章验证码图像预处理过程代表白色,黑白图像也可以理解为是深度值为2 的灰度图像。第二节彩色图像灰度化彩色图像灰度化是指通过特定的算法将三通道的彩色图像转换为单通道灰度图。灰度化过程是很多数字图像处理方向的基本步骤之一,它将图像信息缩减至源图像的三分之一,并保存了背景与目标物体的相对信息,有效的提高了后续处理过程的效率。灰

43、度化效果的好坏主要由灰度化后背景与目标的亮度差大小来衡量,亮度差越大效果越好。常用的R G B 图像灰度化算法有三种:平均值法,加权平均值法和最大值法。平均值法是指将R G B 三通道色彩值的均值作为灰度。我们使用G r a y 代表灰度值,R 、G 、B 分别代表红色、绿色和蓝色三通道中的颜色值,X 代表图像上的任意像素,I 代表所有图像像素的集合,则公式2 1 可以用来表示该算法。V x ,G r a y ( x ) :墨! 型叟! 兰! 垒! 型( 2 1 )3加权平均值法是对直接求均值的一种改进。在许多图片中亮度并没有平均分布到红绿蓝三通道中,对于这种情况均值法并不能最大程度上加大背景

44、与目标物体的亮度差,有时还会造成背景与目标物体亮度相近,导致无法提取目标信息。人眼对颜色的敏感度按照绿色、红色、蓝色的顺序依次递减,因此在权重上也应依次递减,经研究表明公式2 2 的加权方法能够很好的表达亮度信息。V x IG r a y ( x ) = 0 2 9 9 x R ( 功+ 0 5 8 7 x G ( 功+ 0 1 4 4 x 口( x )( 2 1 2 )最大值法是指将R G B 三通道中的最大值做为图像灰度,在针对前景与背景亮度差较大的图像使用该算法时效果较好,公式2 3 为该算法的公式化表示。V x 1G r a y ( x ) = M a x ( R ( x ) ,G (

45、 功,B ( x ) )( 2 3 )对于不同种类的验证码,可以通过试验来证明哪种方式效果最好,不同的算法适合不同种类的验证码。本文在试验中选择了加权平均值法对彩色图像进行灰度化处理,图2 1 给出了使用加权平均值算法的验证码灰度化效果。1 0第二章验证码图像预处理过程淤鹱避熟I 爹图2 1 验证码图像灰度化示意图第三节灰度图像二值化2 3 1二值化概念及意义图像二值化是指通过设定一个或多个阈值将彩色或灰度图像中的所有像素分解成两个集合:前景集合和背景集合,将前景集合中的所有像素赋值为0 ( 黑色) ,背景集合中的所有像素赋值为1 ( 白色) ,从而将多比特图像压缩为单比特图像,极大的简化了图

46、像信息。本文所说的二值化特指灰度图像的二值化。有效的二值化能够大大提高后续图像处理过程的效率和准确率,因而成为了图像识别,信息提取,模式识别等领域必要的预处理过程之一。虽然二值化的目标很简单,仅仅是生成两个集合,但在分类效果上却很难将背景和前景像素精准的分离开来。由于该过程的重要性,国内外很多学者专注于该算法的研究,出现了上百余种的算法,但却没有一种算法能够对多种类型验证码表现出良好的适应性和二值化效果。2 3 2 二值化算法分类二值化可以按照阈值选择方式的不同分为整体阈值法,局部窗口阈值法和动态阈值法三种。通过使用相关算法分析灰度值分布概率密度函数( 离散) 得到唯一的一个阈值用来区分前景和

47、背景,称为整体阈值法。在集合( 背景集合与前景集合) 内灰度差小,集合间灰度差大的情况下( 既概率密度函数成双峰形状) ,整体阈值法能够取得很好的效果,如果不存在该特性则可能导致背景噪声遗留或前景目标缺失等缺陷。局部窗口阈值法一定程度上克服了整体阈值法的局限,对集合内和集合间灰度差要求较低,通过将图像分割到多个窗口中,为不同窗口选择不同阈值进行二值化。根据不同的需要可以使用固定窗口或自适应窗口,窗口的大小及选取方式是影响该算法效果的主要因素。动态阈值法则第二章验证码图像预处理过程是通过相邻区域像素值动态计算每一个像素所使用的阈值,由于充分考虑了相邻区域特性该类算法具有更高的精确性,能够根据不同

48、的背景自动调整阈值,但由于对邻域像素的过分依赖,导致该算法很容易陷入局部最优,将部分背景分离到目标中产生噪声。|j!ZmgU 一ZmgU图2 2 验证码灰度图二值化示意图2 3 3 最大类间方差法二值化做为验证码图像预处理的重要步骤之一,一直被国内外学者研究和关注。D o y l e 早在1 9 6 2 年便提出了一种简单实用的P 分位数法【2 8 】。随后O t s u 提出的最大类间方差法 2 5 】,极大的改进了二值化效果,由于其良好的适应性和较低算法复杂度,至今为止扔被广泛使用。如今二值化已发展至上百种算法,本章主要描述最为经典的几种二值化算法,目前绝大多数算法都是在这些算法基础上改进

49、而来。O t s u 在1 9 7 9 年提出了基于统计理论的最大类间方差法。当时国内外的研究情况是虽然有很多二值化方法,但却没有一个用来评价二值化效果好坏的标准,O t s u 的思路就是要找到这样一个客观并适当的评判标准来选择最优阈值。这个标准并不能依赖图像的先验知识,只能源于当前需二值化的灰度图,因此灰度值柱状图( 灰度值分布概率密度函数) 成为了唯一的出发点。下文给出了整套理论的完整介绍。假设待处理图像所有像素被分离到个灰度级别【1 ,2 ,明,灰度级别f 中包含的像素数目为n j ,则图像中像素总数N = ,l I + 刀,+ + 刀。按照统计学理论可以将灰度级别柱状图简化为概率分布

50、:1 2q = M C l ) = P i = l - w ( k )盼喜州z IC o ) = 喜“阡,扣m I G ) = 毛L I。= 篇t 皇矗+l 霉弃+ l、,( 2 6 )( 2 7 )( 2 8 )其中q 代表阈值取七时集合c o 中像素出现的概率,( 七) 为在灰度级别【1 ,后】中所有像素的均值( 即为整体均值的一部分) ,胁代表整体均值,如下给出它们的公式表示:国( 七) = P i( 七) = 慨( 2 9 )( 2 1 0 )所= ( 三) = 识( 2 1 1 )i 皇l可以通过证明得知阈值k 的任意取值均满足如下公式:1 3两个集合整体方差露= ( f 一所) 2

51、 A( 2 1 5 )i = l到此为止我们已经给出了两类集合及整体的均值和方差等计算公式,为了能够评价阈值尼的效果好坏,O t s u 创新性的引入了如下三个判别标准:五= ,r = ,刁= ,o :,6 之lo 吒。C O o + q 听,2 = ( 觞一所) 2 + c o , ( 4 一所) 2 = q ( 肛一心) 2其中瓦合以分别被定义为集合内方差和集合间方差。( 2 1 6 )( 2 1 7 )( 2 1 8 )为使用户易于识别,一般的验证码图像的前景和背景具有一定的灰度差。因此如果能够找到一个阈值后使两集合内方差最小,集合间方差最大,则该值即为分离背景和前景目标物体的最佳阈值。

52、O t s u 正是以这种思想为依据,提出的三个判别标准,其实这三个标准的数学表达式相同的,我们可以证明如果五、r 、,7 中任意一个取值最大,则剩余两个也将取到最大值。这样便可将问题转换为寻找一个后值使三个标准中的任何一个取值最大,经过证明这样的k 值是一定存在的。砰为整体方差,是一个常数,r 取值最大即为盯;取最大值,则最佳的阈值矿为:1 4重霹卜阑2 3 4 信息熵法图2 3O t s u 全局二值化效果图熵源自于热力学领域,最初是做为一项指标用来说明能源能量在转化为机器功用时所产生的损耗。随着技术的发展进步,熵渐渐被应用到了数理统计、控制自动化和生命科学等多个领域,并在不同领域引申出了

53、特定的具体含义。在1 9 4 8 年,S h a n n o n 首次将熵的概念引入了信息处理领域,用来代表信息的混乱程度( 信息量多少) ,并成功的给出了衡量信息的数学化表示【3 1 1 。在一个信息系统中,信息混乱程度越高,则承载信息量越大,信息熵就越大;相反,系统信息越有序,信息熵越小。基于信息熵的图像二值化属于全局阈值化,以信息熵为评判标准来选择一个唯一的最佳阈值。目前有两种算法被广泛使用,最大熵值法【3 0 】和最小熵值差法 3 1 】。下文结合验证码图像介绍这两种算法。2 3 4 1 最大熵值法最大熵值法的基本思想是,首先假设选定阈值k 将图像分割为两部分,通过信息熵的数学定义,可

54、以得出这两部分的信息熵值,如果成功的分割成为前景目标物体和背景则两部分的信息熵值的和应取最大值。因此当两部分信息熵值的和最大时求出的k 值即为最佳阈值。下文给出了信息熵的定义。假设验证码图像像素按照灰度不同分为个级别 1 ,2 ,剀,灰度级别f 中包1 5含的像素数目为啊,图像像素总数为各级别像素数目之和设为N ,灰度值的概率分布为:只= 斋,B 0 喜B 晓2 设阈值为k ,则图像按照灰度值k 分为两个集合彳和丑,灰度范围分别为【l ,k 和 k + 1 ,L 。设办为集合A 中像素出现的概率,则可分别给出集合么和召的灰度概率密度分布:爿:盟,旦,盟( 2 2 1 )P APPA其中办的表示

55、为:B :丛,垃,盟( 2 2 2 )1 一P 1 一p 1 一p P A - - E p ,( 2 2 3 )下面给出了集合彳和口的信息熵:E = 壹i - - O 旦P Ah 等眨2 4 ,耻,妻。一P 办ih 去Q - 2 5 )则设两集合信息熵值的和为E = E + 岛,通过计算尼取什么值时E 的取值最大,即可得到最佳阈值。2 3 4 2 最小熵值差法最小熵值差法采用了另外一种思路,它认为原图像与经过二值化后得到的前景图像之间的信息量差越小,代表二值化的效果越好。两种方法仅在最后的判别标准上有所不同。按照公式2 2 0 给出的灰度值概率分布,原图像的信息熵E 为:第二章验证码图像预处理

56、过程工E = y L - - , , , i 陆tl n B-I则原图像与前景图像的信息熵差值瓦= E - E ,计算使玩取值最小的| | 值即为最佳阈值。验证码灰度图信息熵二值化效果图巴? x ;:喝卜妒1 10貉”j ;:,;髫謦够澎荔l 卜- 弧1 1 l :,:k 奠霪,2P “?图2 4 最大熵值法二值化效果图在验证码图像二值化的应用中,它们适用于两种不同类型的验证码。最大熵值和法适合于背景干扰中具有一定的信息量的验证码图像,它希望二值化使背景与前景的信息量均被最大化。最小熵值差法则希望背景干扰中是无信息的或是低信息量的,从而保证前景信息最大程度的保留了原图像信息。2 3 5N i

57、b I a e k 局部阈值化算法O s t u 提出的最大类间方差法和基于熵的二值化方法均属于全局阈值法,对于灰度值密度分布成双峰的情况能够达到较好的二值化效果,然而对于分布成多峰值( 前景与背景的灰度值有部分交叉) 的情况却会产生前景目标物体部分缺失或留下背景噪声等缺点,局部阈值法对多峰值的情况具有较好的适应性,N i b l a c k 算法以其优秀的性能成为目前广泛使用的局部二值化算法之一。N i b l a c k 算法就是将全局阈值化的思想应用到了图像的局部处理,通过设定邻域的大小将图像分为多个局部子图像,并运用局部像素的均值和方差来计算1 7局域K ( x ) - - E ( x

58、 ) + k S ( x )( 2 2 7 )其中参数k 用来表示局部二值化去噪力度,可以通过实验来调节k 值来寻找最佳的二值化效果。一般情况下取0 2 做为初始值。如何确定邻域的大小是影响该算法二值化好坏的主要因素,如果邻域过小则导致敏感度过高,容易留下大量的噪声,而邻域过大又可能导致细节丢失,这是一个权衡过程,一般取1 5 x1 5 做为初始大小并根据图片特点和实验效果进行调节。虽然N i b l a c k 局部二值化算法对多峰值灰度分布具有较好的适应性,但却因为对细节的关注易于在背景区域的局部留下噪声块,如图2 5 所示,背景区域均会留下较多噪声,但这是为了较好的保留前景目标细节而产生

59、的副作用。验证码灰度图N i b l a c k 局部二值化效果图图2 5N i b l a c k 局部阈值化效果图2 3 6 二值化算法总结以上所介绍的多种二值化算法均具有一定的局限性,对于图像灰度柱状图成明显双峰的情况全局阈值法效果最佳,但如果前景与背景灰度范围重叠较大,1 8第二章验证码图像预处理过程则无法通过选择一个阈值来对全部像素二值化。局部阈值虽不会丢失前景字符信息,但却会在背景中留下较多噪声,为预处理后期阶段带来不便。图2 6 给出了对两幅相同的图像应用多种二值化算法处理的效果图,从图中可以看出两种全局阈值化算法对验证码a 能够达到较好的二值化效果,而局部阈值化算法对验证码b

60、达到了很好的二值化效果,但它们却均都具有局限性。针对该不足本文第四章给出了一种基于流水模型的改进算法,具有良好的适应性和二值化效果。验证码a验证码灰度图:乏,警嚣。辱。参叠熬。,o t s u 二值化效果图:8X 毒器叠魏验证码b二n 值i B 化l a 效c k 果翮图:蓁碧萋薹蓁藿琶萋霎黼压三至困信息熵二值化效果图:鑫X 蘑5 鼹鼗图2 6 多种二值化算法效果图第四节去除图像噪声数字图像处理领域中所使用的图片,是通过传感器对现实对象感知而获得的,但在感知的过程中会受到各种随机客观因素的干扰,从而产生噪声。图像去噪就是指通过多种技术手段减少或完全去除噪声的过程。噪声不同于其它信号,具有不可预

61、测性,因此没有固定的某个算法能够胜任对任意图像的去噪。如今图像去噪已经成为了数字图像处理领域的一项重要技术。验证码图像做为数字图像的一种,具有它自己的特性。首先它并不是通过传感器获得的,但为了达到安全的目的,一样被人为的加上了噪声。其次它的图像一般较小,这就要求在去噪的过程中要充分注意细节,防止源信息的丢失。最后由于验证码本身的作用就是为了区分人和计算机,因此它的噪声干扰均较1 9第二章验证码图像预处理过程严重。在进行图像二值化的过程中不仅极大的压缩了图像信息,也同时去除了部分噪声,但还是会经常会留下点、线、块等噪声。本节将主要介绍适合于字符验证码二值图像的去噪算法。对于二维图像,设x ,Y

62、代表像素位置,则图像可以表示为离散函数g ( x ,Y ) ,我们将图像分为源图像f ( x ,Y ) 和噪声干扰n ( x ,Y ) 两部分,则:g ( x ,Y ) = f ( x ,Y ) + n ( x ,Y )( 2 2 8 )因此去除噪声的过程就是通过算法处理g ( x ,Y ) 生成结果图像g ( 工,Y ) ,使之与无噪声源图像f ( x ,Y ) 的误差尽可能小。二值化后的验证码图像的噪声主要分为噪声点、噪声线和噪声块,针对不同的噪声,有不同的去噪算法,在下文分别做了介绍。2 4 1孤立点噪声的去除对二值图像而言,图像中的任意黑色像素,如果与其相邻的八个像素( 边界小于8 像

63、素) 均为白色,则称该像素为孤立点噪声。插图示例,针对不同的图像经常需要使用不同的点噪声去除算法,因为对有些图像而言,源图像本身就含有孤立点信息,如果被做为噪声去除将导致信息丢失,因此就需要在基本定义的基础上添加其他必要条件来区分孤立点是噪声还是目标信息。对于字符验证码二值图像,点噪声的去除非常简单,由于特有的图像特点可以直接将孤立点做为噪声处理。在具体的实践中,我们会发现图像中除了孤立点还经常会有两三个点相连形成的噪声,而字符信息则是由大量黑像素聚集而成,广义上我们也可以把这类噪声归类为噪声点,并设定一个阈值k ( 小于或等于8 ) ,如果相邻八个像素中的白像素数目大于或等于k ,则标记为噪

64、声从而去除,孤立点去噪做为后续去噪的基础,经常被当做首要步骤执行。2 4 2 膨胀与腐蚀膨胀与腐蚀属于数学形态学中的基本形态运算,数学形态学是在集合理论的基础上发展而来的,并在1 9 6 4 年被M a t h e r o n 等人引入到了数字图像处理领域,2 0第二章验证码图像预处理过程通过选择适当的结构元素对数字图像进行多种基本形态运算的组合处理从而达到预期效果,由于其具有运算简单、快速、易于通过硬件实现等特点,目前已经成功应用于噪声处理、边缘检测、字符细化和纹理分析等图像处理领域,本文将主要介绍基本形态运算膨胀与腐蚀在二值图像去噪中的应用。在形态学基本运算中,均是通过集合来操作,因此可以

65、把二值图像中的所有黑色像素做为一个目标集合,通过使用结构元素对目标集合的探测( 膨胀或腐蚀) 而达到去噪的目的。结构元素是形态学运算中的一个重要概念,它可以被理解为具有一定形状的像素集合,不同的形状可以达到不同的探测效果。下面给出它们二值化图像中的数学定义。我们首先定义二值图像的集合表示,定义左下角像素为原点坐标( 0 ,0 ) ,建立直角坐标系,上和右分别为Y 轴和x 轴正方向,如图2 7 所示,该二值图像的集合表示为A = ( 3 ,2 ) ,( 3 ,3 ) ,( 3 ,4 ) ,( 2 ,5 ) ,( 3 ,5 ) ,( 4 ,5 ) 。缀缵一刎O1Z34 557图2 7 二值图像坐标

66、示例图结构元素为特殊的二值图像,图像尺寸小于待处理图像,可以为方形,圆形,十字形等,由于验证码图像一般尺寸较小,因此在实际处理中经常选用3 x 3的十字形图像,如图2 7 中所示,一般设该结构元素的初始集合为B = ( - 1 ,0 ) ,( o ,一1 ) ,( O ,0 ) ,( 1 ,O ) ,( O ,1 ) ) 。二值图像的平移,可以通过集合来定义,设集合B 按向量X 平移为:s x 】= 口+ x Ia B )( 2 2 9 )以上文提到的结构元素曰为例,按向量x 0 ,1 ) 平移后的集合为:召( z ) = ( O ,1 ) ,( 1 ,O ) ,( 1 ,1 ) ,( 2 ,

67、1 ) ,( 1 ,2 ) )( 2 3 0 )2 1集合则集图2 8 结构元素S 和目标图像X设腐蚀后的集合为A ,则中包含的全部元素就是指在平移结构元素曰遍历原图像的过程中,所有被爿包含的B X 】图像中的元素总和。集合么被集合召膨胀A o B 可以定义为:么0 B = x :研x N A )( 2 3 2 )则被膨胀后的集合A 7 中包含的全部元素就是指在平移结构元素曰遍历图像的过程中,所有与彳交集不为空的B X 图像中的元素总和。通过组合腐蚀和膨胀运算、选择合适的结构元素,可以很好的去除噪声点、较细的噪声线和较小的噪声块。例如可以先对图像进行腐蚀运算,再对结果图像进行膨胀运算,由于噪声

68、点和较小的噪声块经过腐蚀后被全部清除,因此在之后的膨胀运算中无法恢复,而前景目标图像信息一般不会被腐蚀清除,通过膨胀可以被部分还原。如果前景目标图像的粗细,大小等属性远远大于噪声则也可以通过多次腐蚀和膨胀来去噪。2 4 3 连通区域去噪法对于二值图像来说,连通区域指的是相连的黑像素所组成的区域,噪声点、2 2第二章验证码图像预处理过程噪声块、没有发生断裂的前景字符均属于连通区域。而一般情况下字符连通域的大小要远远大于噪声连通域,因此可以通过设定阈值筛选掉面积较小的连通域,从而达到去除噪声的目的。与上两种方法相比,连通区域去噪法对噪声块具有更好的适应性。孤立点去噪法通过对阈值的设定仅能够处理非常

69、小的噪声块( 仅2 或3 个像素相连) ,通过多次腐蚀和膨胀虽然能够去除噪声块但却会使前景字符信息产生较大的形变从而影响识别。如下给出了连通区域去噪法的算法描述:1 定义布尔类型的二维数组f l a g ,用来表示二值图像中的像素是否被访问过,已访问为t r u e 、未访问为f a l s e ,全部初始化为f a l s e ;初始化空队列l ,用来存放当前扫描连通域的种子像素;定义n u m b e r 用来表示当前扫描连通区域的像素数目;筛选阂值由常量K 表示;定义P o i n t 类型变量P 为当前扫描位置,初始化为( 0 ,O ) ;定义P o i n t 类型链表C 用来存放当

70、前扫描连通域中所有像素的位置。2 n u m b e r 赋值为0 ,清空链表C ,按照P 所指位置开始,逐行逐列扫描二值图像数组直到遇上未被访问的黑色像素停止。若扫描完成未找到则算法终止,否则P 更新为当前位置,在f l a g 数组中标记该位置为t r u e ,将该位置存入队列l和链表C 。n u m b e r + + 。3 判断队列l 是否为空。如果为空代表当前连通域扫描完成,执行步骤4 ,否则从队列中取出一个位置,循环扫描与它相邻的八个像素,如果为黑像素且未被访问则在f l a g 数组中标记为t r u c ,将位置存入队列l 和链表c ,n u m b e r + + 。继续执

71、行步骤3 4 比较n u m b e r 和阈值K ,如果n u m b e r 小于K 则此连通域为噪声,将输入图像在链表c 中的所有位置赋值为1 ( 背景色) 。跳到步骤2 执行。连通域在字符验证码图像预处理过程中具有极为重要的意义,它除了能去除噪声,还可以被用来切割字符,对于仅具有形变和旋转干扰的验证码,可以通过扫描所有连通域将字符很好的分割开来,然而对于粘连干扰,它将失去作用。图2 9 给出了验证码经过连通去噪算法处理后的效果图,算法中连通域面积的计算方式为8 连通,去除噪声的面积阈值为2 5 。验证二值去噪后图像:2 4 4 去噪方法总结连:i 1 r3 叫域去噪法处理图2 9 连通

72、去噪效果图本节给出了几种常用的验证码二值图像去噪算法,它们在去噪过程中侧重点各有不同,孤立点去噪法具有简单,高效,对前景目标的副作用小等特点,对仅具有椒盐噪声的图像具有很好的去噪效果;对于前景字符与噪声在粗细和面积等方面差别较大的验证码图像,组合膨胀与腐蚀运算能够取得较好的去噪效果,尤其在对与字符相交的噪声线处理上,它能够表现出很好的效果,这是另外两种算法无法完成的;连通区域去噪法对多种验证码图像都具有很好的适应性,并在去噪过程中几乎对前景字符不产生副作用,对于尺寸较小的验证码图片,这一点尤为重要,如果通过多次的腐蚀和膨胀处理,则可能导致字符信息变形或缺损严重,从而影响识别。第五节本章小节本章

73、主要介绍了验证码图像预处理过程中用到的多种技术,并给出了它们各自的优点和不足。通过对图像进行灰度化和二值化处理,可以极大的压缩图像信息并去除背景,再通过使用适合的去噪算法,最后将带有复杂背景的彩色验证码图像转换成了仅包含目标字符信息的简单二值图像,使高效的识别成为可能。图像预处理是验证码识别的先决条件,处理效果的好坏直接影响后期的识别,而在预处理过程中二值化是最主要的影响因素,因此研究更优秀的二值2 4第二章验证码图像预处理过程化算法是目前验证码图像预处理的主要研究方向,也是本文的研究重点。2 5字符分割是指将字符串图像分解为多个字符图像,以便进行单个字符的匹配识别。随着验证码技术的发展,粘连

74、干扰在不影响用户识别的基础上逐渐被使用,为分割字符带来了很大的挑战。目前字符分割仍然是验证码识别技术的难点之一,由于粘连方式的多样性,没有一种有效的分割算法能够对粘连字符达到较高的分割正确率,字符分割的正确率直接限制了字符识别正确率。在验证码识别领域,我们可以根据分割方式的不同将识别技术分为两类:基于分割的识别和基于识别的分割。在成功分割字符串后进行的单个字符识别称为基于分割的识别。首先通过模板匹配、结构特征判断等方法识别出字符串中的某个字符,然后分割已经识别字符继续识别直至所有字符被识别完成,这种识别方式被称为基于识别的分割。两类技术在粘连字符验证码识别过程中均有难点。在基于分割的识别算法中

75、,由于并不知道当前分割的字符是什么,因此无法使用该字符特有的一些特点,只能通过字符的共有特性进行分割i 如何找到粘连位置进行分割是该类算法的最大难点。基于识别的分割又可以被理解为识别即分割,因为如果能够成功识别,则分割变的非常简单,然而由于不是单个字符识别,字符粘连会严重影响字符识别的正确率,而如果识别错误则将导致整个验证码无法识别。基于形状上下文的识别方法属于基于分割的识别,是本文研究的重点,下文将给出多种字符分割算法。3 1 1 投影分割法投影分割法是最早用于字符分割的方法,其思想是通过利用垂直和水平方向的空白( 没有黑像素) 进行字符分割,对于早期的O C R 识别系统和最初的验证码具有

76、很高的分割正确率。以预处理后的验证码二值图像为例,黑色像素值为0 ,白色像素值为1 。循环扫描图像的每一列,计算当前列中值为0 的像素数目总和做为该列的垂直投影值,则全部投影值按列顺序排列构成了垂直投影直方图。如图3 1 和3 2 所示,2 6在较鬟图3 1 垂直投影示例图在实际的处理过程中,由于字符间可能具有轻微粘连或图像中含有少量点噪声,字符相邻部分的投影值并不为0 ,但却表现为明显的波谷,如图3 2 所示,因此可以根据具体情况设定一个阈值,通过逐列扫描图像的垂直投影直方图,将投影值小于该阈值的列做为分割界限,从而对图像进行垂直分割。若想去除字符上下的空白区域,则可使用相同的方法通过水平投

77、影直方图进行切割。投影分割法虽然具有实现简单,执行效率高等优势,但却没有良好的适应性。对于噪声干扰较为严重的验证码图像,字符相邻区域的投影将不会表现为明显的波谷,这时只能通过设置较大的阈值来进行分割,这将导致对某些字符的误切割,如L ,U ,H 等字符,它们在字符中某些位置的投影值也很小。有些验证码图像,由于字符的旋转和位移可能导致相邻两个字符的垂直投影有交叉部分,对于这种情况投影分割法将失去作用。同样,投影分割法也无法分割粘连边界过大的验证码图像。对于字符图像清晰,噪声干扰小且相邻字符具有明显垂直空隙的情况下,投影分割法是首选算法。2 7第三章字符分割和识别t t6 1 z 冶d -图3 2

78、 字符垂直投影重叠示例图3 1 2 连通区域分割法投影分割法在分割字符验证码时具有局限性,无法处理复杂的验证码图像,与它相比,连通区域分割法则具有良好的适应性,对于没有粘连干扰的验证码,能够达到极佳的分割效果,目前被广泛应用。在前文已给出了连通区域的定义和查找方法,在实际的应用中经常将去噪和分割做为一个步骤同时完成,首先查找验证码二值图像中的全部连通区域,计算所有连通域的面积并与阈值K 进行比较,将面积小于K 的所有连通域做为噪声去除,接下来计算每一个连通域质心的横坐标,计算方法就是求区域内所有像素横坐标的均值,最后将每个连通域复制到新图像中并按质心横坐标排序,即完成了分割过程。连通区域分割法

79、要求预处理过的验证码图像中没有粘连字符、造成字符连通的噪声和大面积的噪声块。通过有效的预处理算法,一般不会产生大面积的噪声块,而对于另外两种情况,如果字符粘连部分较小( 粘连处的像素数目) ,造成连通的噪声宽度较小,则可以通过腐蚀和膨胀处理去除连接,因此基于腐第三章字符分割和识别蚀和膨胀的连通区域分割法具有更好的鲁棒性,对于轻微粘连的字符验证码图像具有较好的分割效果。3 1 3 基于最短路径的分割算法上文所提到算法在对粘连字符验证码切割时,均没有很好的适应性,然而目前大部分的验证码均具有粘连干扰,如何高效的切割粘连字符成为验证码识别技术发展的主要瓶颈,本节将介绍一种最近才被提出的粘连字符分割方

80、法:基于最短路径的字符分割。最短路径算法是荷兰的科学家D i j k s t r a 在1 9 5 9 年的时候提出的,因此该算法又被称为D i j k s t r a 算法,解决了图论中寻找最短路径的问题。在图论中,最短路径问题是指如何找到两个点之间的一条路径使得路径中经过的边的权值总和最小。最简单的例子就是在地图中如何找到最快的路线从一个地点到达另外一个地点,在这个例子中,地点可以用图论中的点来表示,连接地点的每一段公路用边来表示,通过这条公路所需要的时间为边的权值,这样我们便可以把实际问题抽象为求加权图中两点间的最短路径问题。在实际情况中,很多问题都可以被抽象为动态或静态的最短寻路模型,

81、D i j k s t r a 算法做为一种静态寻路算法,因其较低的时间和空间复杂度以及实现简单被广泛的应用到了智能交通、路由选择、地理信息系统等多个领域。下文给出了该算法的描述:设加权图为G ,它由定点集合V 、边集合E 和权值映射函数f E R 组成( R代表实数集) 。V 中的点元素通过v i 表示,边则可以通过( 、,i ,叼) 点对来表示。1 定义二维数组G 用来存放加权图的权值邻接矩阵,即G i 】 j 】用来表示边( 、,i ,v j ) 的权值,直接相连的点之间权值即为边的权值,点到本身的权值为0 ,其它权值均赋值为无穷大( 通过设置一个较大的数值实现) 。2 设源点为v i

82、,d ( v j ) 代表啊到q 的最短路径。定义链表L 和一维动态数组A 。L 中用来存放源点、,i 到其它任何顶点的最短距离,初始化时只含有一个元素d ( v i ) = 0 。数组A 初始化邻接矩阵G 中第i 行除G 【i 【i 以外的全部元素。3 判断数组A 是否为空,若为空则算法结束,链表L 中即为以、,i 为源点到其它任何顶点的最短路径。否则删除A 中的最小值做为d ( v u ) ,放入链表L 中。4 通过查找邻接矩阵得到顶点V I I 到A 中剩余顶点V X 的距离g u 】 x 】,遍历2 9第三章字符分割和识别A 中剩余顶点,若d ( v u ) + g u l x d 、

83、于A 中顶点i 到顶点x 的距离值,则更新该值。从新执行步骤3 。图3 3 加权有向图基于最短路径的字符分割方法,就是通过将像素抽象为顶点,并假设相邻像素是通过边直接相连的两个顶点,边的权值则是由两个像素的颜色值及连接方向决定的,通过在验证码图像字符间隙的下方和上方分别设置源点和目标点,我们就可以将字符分割的问题抽象为如何在两字符间寻找最短路径。该算法的核心是如何确定源点和目标点,及相邻像素的权值如何确定,并没有固定的选择方法,很多时候需要针对具体的验证码通过实验来调整。下文针对一类验证码二值图像给出了具体实现方式。图3 4 中给出的验证码二值图像具有以下特点,字符大小差不多,仅在几个像素上存

84、在字符粘连,并没有大面积的像素粘连。因此可以首先计算验证码包围框,并垂直均分为五部分,则四个分离线的横坐标即为选择源点与目标点的合理位置,设源点为最下面一行处在分割线位置的像素,目标点为最上面一行处在分割线位置的像素,规定每个像素顶点仅跟其左上方、上方和右上方相邻的三个像素相连,则使用递归的方法可以确定顶点集合。若正上方为白色像素,则连接权值为0 ;若左( 右) 上方是白色像素,权值为1 ;如果正上方是黑色像素,连接权值为1 0 ;左( 右) 上方是黑色像素,权值为1 0 2 ,由此我们便可以得到全部顶点的权值邻接矩阵,使用最短路径算法求解,便可以得到粘连字符间的最佳分割路径,在求解过程中可以

85、进一步限制结束条件,当存有最短路径的链表L 中加入目标点时即可终止。图3 4 中给出了分割后的字符,分割效果很好,基本不会影响后期识别。图3 4 粘连字符分割图该算法为字符分割的研究提供了一种新的思路,利用粘连字符的特点将最短路径算法成功应用到了字符分割领域,是目前少有的能够处理站连字符分割的算法之一。然而它也具有一定的局限性,首先对于不同类型的验证码,需要从新考虑起始点及权值,导致算法移植性较差,其次是对于大小不一的粘连字符,源点和目标点的选择成为了一个难题,需要根据具体情况寻找合适的算法,最后对于像素宽度较小的某些字符或是粘连区域像素宽度较大的情况,容易产生误切割的情况,如3 5 所示。錾

86、;斟熟g弓0 胃 3图3 5 分割失败示例图第二节单个字符归一化字符归一化是进行字符识别前最后的处理步骤,主要是指将分割后的字符在大小和粗细等方面通过处理达到统一,一方面减少了格式对于字符识别的影响,另外也满足了某些识别算法对输入数据统一化的要求。对于那些基于人工智能( 需要提前训练) 的识别算法和模板匹配算法,字符归一化( 尺寸标准化)是必不可少的步骤之一。字符归一化主要包括字符尺寸标准化和细化两部分。尺寸标准化是指通过合理的缩放算法使全部字符图像具有相同的长和宽。字符细化是指在尽量保存字符形状的前提下,逐层去除字符轮廓上的像素点,直到字符的笔划宽度只有一个像素。细化处理是一把双刃剑,较好的

87、细化处理有助于提高识别的正确率和算法效率,而如果处理不好则可能导致无法识别或严重影响识别正确率。细3 1第三章字符分割和识别化并不是必须执行的步骤,可以根据实验效果的好坏来确定是否细化。目前常用的字符归一化算法有按水平和垂直方向上像素的分布进行缩放、双线性插值法、H i l d i t e h 经典细化算法等。第三节形状上下文理论3 3 1形状上下文概述2 0 0 2 年9 月,美国的S e r g e 和M a l i k 等人按照形状比对的基本思路在数字图像识别领域进行了大量的试验,提出了一种非常精妙的方法用来描述形状间的相似性,这种相似性的度量是基于一种新的形状描述模型来实现的,该形状描

88、述模型被称为形状上下文。基于形状上下文的形状比对的基本思想是:如果两个形状相似,则它们对应点的形状上下文也应该相似,因此通过找到一种两形状间所有点的对应方式,使两者包含的所有点的形状上下文差值的总和最小,这个最小值便可以做为两种形状相似度的一种量化的度量值。形状上下文是以点为基本描述单位,并会因为该点在形状( 对象) 中的位置不同而发生变化,它表达了当前点和图形中其他点的相关信息,就像它的名字所表达的意思一样,它描述了这个点在形状中的上下文信息。形状可以通过抽取轮廓上的点构成样本集合来表示,样本数目越大,则对形状的描述就越准确。形状上下文做为一种形状描述符,对于样本集合中的任何一点,是通过除该

89、点以外的其他样本点在图形中的分布来描述的。因此可以将度量两个形状的相似性的问题转化为寻找两形状间点的一种对应关系使两形状中每一组对应点之间的形状上下文最相似。基于形状上下文的形状比对思想,与欧式距离、彷射、分区匹配等形状比对算法不同,它不会将样本点做为一个单独的元素来考虑,而是结合点在形状中的位置和与形状中其他点的关系来描述。如图3 6 中的两个字符,如果按照逐像素匹配来比较,两字符形状有很大的差别,但从人对形状的感官来看,这两个形状却是比较相似的,因此不应当将样本点独立出来做为比较的标准。SS图3 6 形状相似的两字符3 2P = 局,以) ,扔R 2 。惫i o 蕊一。j 。一j 季j 。

90、j 。多叠。+。、a )图3 7 边界点提取及极坐标c )如果以一个样本点做为原点,其它的样本点做为终点,则我们可以得到一组向量,这组向量便可以表示该点与整体形状的相关性。设样本点总数为N ,那吗这N 1 个向量就可以做为一种具有丰富信息的描述符,使形状信息能够量化。然而这种量化方式包含了过多的形状细节,因为同一类型的两个物体( 如图中的两个字符) 在形状细节上可能会有差别,而且对于同一物体的多次抽样,样本集合也会有差别,因此我们需要压缩细节信息,使描述符具有更好的辨别能力。对于形状中的任意一点只,以该点为圆心建立l o g r 日对数极坐标系,并根据l o g r 的取值将图像分为5 个区域

91、,即5 个同心圆,根据秒的取值不同将图像分为1 2 个扇区,则可以将图像分为6 0 个区域,通过计算每个区域中的像素个数,可以得到区域柱状图,此柱状图信息即可以做为点珐的形状上下文。图3 8中给出了图3 7 ( a ) 和3 7 ( b ) 中所标记的3 个点的柱状图信息。设k 用来标识区域,b i n ( k ) 代表区域k 中所包含的像素点的集合,则点只的柱状图信息囊( 后) 可以表3 3第三章字符分割和识别示为:岛( 足) = 撑 g 只:( g 一只) b i n ( k ) )图3 8 字符A 中3 点的形状上下文形状上下文通过使用分区域的方式,降低了点在形状中细节位置变化对形状比对

92、的影响,从而提高了对形状相似度的辨别能力。在区域选择方面,通过使用对数的方式,使样本点对越近的区域敏感度越高,这是符合人们对形状的认知方式的。3 3 3 形状间相似度定义上文已经给出了形状上下文的描述模型,可以很好的表达一个点与形状之间的关联信息。在此基础上,我们需要找到一种方法来描述两个形状之间的相似性。两个形状之间的相似度应该由所有点的形状上下文比较来决定,而且进行比较的两点应该在形状中处在类似或相同的位置。下文首先给出了不同形状中任意两点间相似度的定义。假设点A 属于形状一,点q j 属于形状二,则两点间的相似度可用G = C ( 只,q j ) 来表示,由于形状上下文是通过各区域像素的

93、分布直方图来表示的,因此使用Z 2 距离给出计算公式:G 量c ( 只,乃) = 互1 善K 篇公式( 3 1 )其中吃( 后) 和J I l ,( 后) 分别为点只和点口,的形状上下文函数。根据以上公式,固定点B ,遍历形状二中的所有点,使q 达到最小值的点劬第三章字符分割和识别即为易在形状二中的最佳匹配点。在形状匹配时,对于给定的两个样本集合,定义两个集合中全部点的对应关系为J = 万( f ) ,这种对应关系是一对一的映射且两集合中均没有剩余点( 未匹配点) ,通过点的一一对应可以算出所有点的相似度之和日仞) :日( 万) = c ( p ;,)公式( 3 2 )i对于两个的固定形状而言

94、,H ( r c ) 只与映射关系刀有关,因此我们需要在所有的映射关系中找到一种映射J = 万( f ) 使H Q r ) 取值最小,则这个最小值H ( r c )便可以用来表示两个形状之间的相似度,值越小代表两个形状相似度越高。如何寻找映射关系可以归结为加权二分匹配的问题,该问题可以通过使用H u n g a r i a n 算法在O ( n 3 ) 的时间复杂度内完成。在使用形状上下文理论进行具体的图像匹配或识别的过程中,由于形状间的差异或是轮廓点取样算法的不同,可能导致两个样本集合的像素数目不相等,这时可以向具有较少像素的集合中添加虚点来满足算法的要求。第四节B P 神经网络B P 神经

95、网络是人工神经网络学习算法的一种,又被称为误差逆向传播算法。人工神经网络是指通过模拟生物学中信号传递的过程,从而来对人脑的思维活动进行抽象和模拟。初始的神经网络不包含任何知识,但可以通过输入信息对它进行训练,它能够在学习过程中逐步积累和获取知识,并通过自身包含的神经元来记忆已学到的知识。在人工神经网络漫长发展历程中,一直没有一种有效的方法来调节多层网络中隐含层的连接权值,B P 神经网络的出现成功的解决了该问题。B P 神经网络属于多层神经网络,一般最少由三层组成,分别为一个输入层,一个输出层和一个或多个隐含层。图3 9 即为仅包含一个隐含层的B p 神经网络。3 5下面介绍l 、工作信号正向

96、传播:输入信号从输入层经过隐层,传向输出层,在输出端生成输出信号,这是工作信号的正向传播。在信号传递的过程中网络的权值是固定不变的,每一层神经元的状态只影响下一层神经元的状态。如果在输出层得到的输出和期望输出的偏差比较大,则转入误差信号的反向传播。2 、误差信号反向传播:网络的实际输出和期望输出的差值就是误差信号。误差信号的反向传播就是误差信号从输出端传向输入端。在这个过程当中,网络的权值由误差反馈进行调节。通过不断的修改网络权值从而使得网络的输出不断地逼近期望值。神经网络的激励函数用于将输出信号压缩在一个允许的范围内,使其成为有限值,通常神经元输出的范围在 0 ,1 或者【1 ,l 】的闭区

97、间内。常用的基本激励函数有阈值函数、分段线性函数、S i g m o i d 函数。其中S i g m o i d 函数也称为S型函数,它是人工神经网络中用的最多的激励函数。第五节本章小结形状上下文理论从全新的角度非常巧妙的给出了一种量化形状间相似度的方法,并且非常易于实现。该理论的提出极大的促进了数字图像匹配和数字图像识别技术的发展。传统上计算距离的方法有欧式距离、汉明距离、旋转不变矩等,但它们均不能很好的适应旋转形变干扰,匹配正确率不会很高,原因就是它们过度的使用了字符图像的细节,而形状上下文理论,给出了点与形状间相对关系的一种宽映射关系又可以很它对形变、旋转和3 7第四章基于流水模型的目

98、标区域阈值法第四章基于流水模型的目标区域阈值法第一节引言数字图像二值化做为图像预处理的步骤之一,极大压缩了图像信息量,有效的降低了后期识别的时间复杂度,与去噪结合使用去除了无关背景信息,简化了识别复杂度,使高效识别成为可能。可以说二值化效果的好坏直接影响着后期信息提取和对象识别的质量。本文第二章中已经给出了多种经典的二值化算法,对于具有双峰值灰度分布的数字图像,使用O t s u 或基于信息熵的全局阈值法能够起到很好的二值化效果,但对于前景与背景在灰度分布上具有一定重叠的图像,该类算法将达不到预期效果。图4 1 中的验证码由于灰度值分布的重叠,分布图并不会呈现为明显的双峰,而是多峰值,这与全局

99、阈值法的假设相冲突,仅使用一个阈值会导致前景缺失或背景遗留。针对这种情况,N i b l a c k 和B e r n s e n 等局部阈值法通过合理窗口的选择,能够最大程度的保留前景信息,但该类算法也存在一定的问题,它在前景及其附近的区域能够很好的获取目标信息,在背景区域却会经常会留下伪目标信息,而且面积较大,很难做为噪声被去除。爿5 。t + K一4f“灰度化0:e ”t 譬统泠图4 1多峰值灰度值分布柱状图对于字符验证码这种特殊图像而言,随着识别技术的发展,除通过组合多3 8第四章基于流水模型的目标区域阈值法种干扰方式以外,背景干扰也越来越复杂,背景与字符之间的灰度值分布经常会有重叠区

100、域,背景中还经常被参杂较多具有一定亮度的干扰。目前并没有一种二值化算法能够对多种类型的验证码图像表现出良好的适应性。针对目前验证码图像二值化算法的局限性和不足,本文提出了基于流水模型的目标局部阈值法。该算法通过结合两种互补算法而实现,它们分别是经改进的基于水流模型的二值化算法和N i b l a c k 局部阈值法,从而克服了它们各自的不足,取得了良好的二值效果。N i b l a c k 算法在第二章中已详细介绍,下面首先给出了未经改进的基于流水模型的二值化算法。第二节基于流水模型的二值化算法基于流水模型的二值化算法,是指通过在图像上模拟地形学中的降雨过程,从而达N - 值化的目的。这需要在

101、一个三维的立体空间中进行模拟,因此需将图像的灰度值做为第三维坐标对图像进行拉伸,从而得到一个类似于地形的三维空间。由于灰度值图像中,前景的灰度值较小、亮度较大,背景灰度值较大、亮度较小,则在拉伸后的地形上分别表现为山谷和山峰。该算法的核心思想是基于地形学中流水的特性:水总是会流向较低的区域( 局部极小值) 。在经过三维建模后,对地形上的所有像素模拟降水过程,随着降水量的增加和水的流动,降水结束时,地形中会形成多个积水山谷,通过获得每个山谷的积水分布可以得到山谷的地形特征,积水量超过一定值的山谷便会做为目标被提出,并进行接下来的阈值处理。算法可以被分为两个处理阶段:局部特征提取和闽值处理。第一阶

102、段是模拟地形中降雨的过程产生多个积水区域( 原地形中的山谷) ,并根据积水分布提取到灰度图像的局部地形特征。第二阶段是对提取到的全部积水分布进行统一的全局阈值化过程,多种全局阈值化算法均适用,例如O t s u 最大类间方差法。虽然使用的是全局统一阂值,但每个积水分布都代表了相应山谷的局部地形特征,因此这个统一的阈值能够达到适应地形局部特征的效果。对积水分布进行阈值化的过程可以理解为积水蒸发的过程,首先通过O t s u 算法计算获得阈值T ,在每个积水分布中,如果像素上的积水高度值小于T 则被蒸发,。即将该像素从积水区域中去除。如果地形中的水位超过了地形最高值丘。,即水淹没了全部地形,则使用

103、。? r3 9第四章基于流水模型的目标区域阈值法O t s u 算法对积水分布全局阈值化的结果和对灰度图像直接进行O t s u 二值化处理的结果具有相同的阈值丁,即相当于在垂直方向上颠倒了地形。设f ( x ,Y ) 为图像灰度分布函数,厶为灰度最大值,图像大小为【M ,i v ,如果一次降水量为每个像素上滴下滴水,即高度增量为1 ,则淹没地形所需要的降水次数w o 为:lM - 1 ,一1I ( 岛- f ( x ,y ) )2l 婴气蔽矿一公式( 4 1 )W o 的取值范围为o w o 厶。如果降水次数W 等于W o ,则该算法与o t s u 全局阈值法二值化效果相同,即失去了局部地

104、形特征。4 2 1图像流水模型为了提取字符信息,我们首先在经过三维处理的图像表面模拟降雨过程。在降雨过程中随着水不断的流向低处,山谷中的水位会逐渐升高,最后会形成多个积水区域,它们由一个或多个山谷中的积水汇聚而成。通过这种方式,图像中的字符区域的灰度值将由于积水而增加,标记带有积水的像素,并计算带有积水的图像和源图像在标记像素上的灰度值差,由这些灰度值差组成的图像便可以用来表示源图像中的各个局部特征,即前景字符的地形特征。该算法的实现是建立在图像流水模型基础之上的,下面给出了图像流水模型。设待处理灰度值图像为,灰度值函数为f ( x ,Y ) ,大小为【M ,川。设定每次的降水量为每像素一个单

105、位,即单次总降水量为 M ,】。降水次数w 需根据具体的实验获得,其取值范围在0 到w 0 之间。水向局部最小值的流动尺度为s ,则对图像模拟降水一次的算法描述如下:1 定义当前处理点为c p ( m ,n ) ,初始值为( 0 ,O ) ,使用全局的积水标记二维数组l a b e l ,数组大小与图像大小相同。遍历图像中的每一个像素p ( x ,y ) 并执行步骤2 ,若遍历完成则一次降水的流动过程完成。4 0第四章基于流水模型的目标区域阈值法2 将当前循环到的像素P 的坐标值赋值给c p ,定义点m i n ( u ,v ) 记录局部最小值。3 在以点c p 为中心的( 2 s + 1 )

106、 ( 2 s + 1 ) 区域中寻找最小值点赋值给m i n ,如果点m i n 与c p 为同一个点则执行步骤5 ,否则执行步骤4 。4 将点m i n 的坐标值赋值给C p ,执行步骤35 查询( m ,n ) 点是否被标记,如果没有则在l a b e l 数组中进行标记,并将f ( m ,行) 的值加l ,跳回步骤l 继续遍历。当一滴水滴到图像中位置为( 工,y ) 的像素上时,模拟一次流动则需计算一次以该点为中心的( 2 s + 1 ) ( 2 s + 1 ) 个像素中的灰度最小值,设流动到局部最小值的平均流动次数为D ,每完成一滴水的流动,需进行一次灰度加l 操作。则对整幅图像进行一

107、次模拟降水所需要的时间复杂度为O ( N M 2 s + l 】2 D + w 】) 。f石的流;f 径土多,、蠢;_ “。二,携、-J怒夕。矗)钠魄frl30 ;f1 1 1 名域领域DI;? 。ii 一“I 临域B临域CIl“图4 2 一滴水单像素流动示例图图4 2 中给出了一滴水寻找局部最小值的流动过程,初始情况是一滴水滴到了像素点l 的位置,在它的临域A 中寻找具有最小灰度值的像素点,最小值为像素点2 的位置,则水滴流动到点2 ,继续在它的临域中寻找灰度最小值点并流动,直到流动到像素点4 ,点4 的临域D 中的灰度最小值点就是它本身,因此找4 1第四章基于流水模型的目标区域阈值法到了局

108、部最小值,将点4 的灰度值加l ,完成此次流动。这个过程会被图像中的每一个像素执行w 次,W 为降水的次数,从而完成整个降水过程。临域的大小是通过S 来控制的,随着S 值的增长,能够提高算法对噪声的适应能力。但如果临域范围过大则可能导致字符细节信息的丢失,而且会使算法变的非常耗时。降水次数w 的取值也需要针对不同的图像通过实验来获得,一般情况下,图像的亮度差变化越大,则w 的取值也应该越大。通过实验寻找最优的邻域尺寸和降水次数能够对不同的验证码图像取得很好的二值化效果,但也导致该算法移植成本高,不具备很好的适应性。4 2 2 积水区域的全局阈值化降水过程完成后,遍历积水标记数组中被标记的像素,

109、并计算降水前后图像在这些像素点灰度值的差值,使用O t s u 最大类间方差法对由这些差值所组成的集合进行全局阈值化,得到阈值T ,对于差值小于T 的像素点,清除其在积水标记数组中的标记。清除完成后,积水标记数组中的信息即为二值化的结果,被标记的像素二值化结果为0 ,未被标记的像素二值化结果为l 。虽然使用的是全局统一阈值,但每个积水分布都代表了相应山谷的局部地形特征,因此这个统一的阈值对不同积水区域的数学意义不同,从而达到了适应地形局部特征的效果,因此该算法为局部阈值法的一种。第三节基于流水模型算法的改进通过对w 与S 参数的合理赋值,基于流水模型的二值化算法能够较好的识别出前景目标,然而对

110、验证码图像而言,其灰度值分布函数多种多样,对于不同类别的验证码,只能通过实验选择不同的参数,才能达到较好的二值化效果。因此对于目前种类繁多的验证码而言,该算法不具备很好的移植性和鲁棒性。本文针对这点不足,对算法进行了改进,将字符笔画宽度和边界特征与流水模型结合使用,能够高效的提取到字符目标,提高了该算法对各种验证码图像的适应性,然而产生的副作用是二值化提取到的字符会存在断裂破损的现象。经过改进的算法与原算法之间的区别主要包括两点:1 在模拟降水的过程中,仅仅在字符边界像素滴水,而不是图像中的全部像素。2 我们通过使用字符第四章基于流水模型的目标区域阈值法的笔画宽度和边界特征对所有积水区域进行有

111、选择的提取。在改进的算法中,需要首先从图像的灰度值分布特征中提取一些与字符相关的信息,这些信息包括字符的边界像素点和笔画宽度S W 。边界像素点的提取决定了模拟降水时的降水位置,笔画宽度可以被用来计算每一次的降水量,进而可以知道在一次降水过程中字符区域平均水位高度的增量,其中平均水位高度是指积水区域中每个像素点上水量的平均值。4 3 1边界像素点的提取在改进的算法中,我们仅在边界像素位置模拟降水,如果不能够检测到所有的字符边界,将会直接导致在二值化结果中丢失字符。因此选择一个可靠的边界检测算法极为重要,该算法对灰度值对比较弱的边界也要有很好的识别效果。C :a z m y 算子能够有效的提取弱

112、边界信息,因此本文选择了该算法进行边界提取【3 4 1 。从图4 - 3 中的边界检测结果可以看出,字符边界信息提取较为完整,该特性为后期降水提取字符过程提供了有效保证,能够防止二值化过程中丢失字符。i I 戮瓷镶礴一豁m ;c 锄y 算子边界检测4 3 2 笔画宽度的估测验证码图像中字符的笔画宽度是字符的一项重要特征,适当的估测和使用该特征能够有效的提高图像二值化的质量。通过使用C :a x m y 算子,我们能够检测到边界信息,其中包括字符边界和由于背景灰度值的突变而产生的伪边界信息。利用这些边界信息我们可以对字符笔画的宽度进行估计。对具有边界信息的验证码图像进行多次不同位置的水平扫描,在

113、扫描过程中统计连续的两个边界像素点之间的距离,如图4 4 中所示,4 3第四章基于流水模型的目标区域阈值法由此我们可以得到边界间距离的分布柱状图,通过一维数组h ( d ) 来表示,其中d的取值范围为 2 ,L ) ,L 为所有边界间距离统计值中的最大值,h ( d ) 则代表值为d 的边界间距离出现的次数,则字符的笔画宽度可以被估测为数组J l l ( d ) 中最大值的下标,即统计过程中出现次数最多的边界间距离值可以被估测为笔画宽度。4 3 3 单次降水量的计算图4 4 边界宽度统计图单次降水量的多少直接决定了局部最小值区域水位的增长速度,通过使用检测到的边界像素和笔画宽度信息,我们能够控

114、制一次降水过程中图像内字符区域平均水位的增量,因此便可以通过计算该增量来区分字符区域和噪声区域,从而更准确的对字符进行提取。在模拟降水的过程中,水被滴入已检测到的每一个边界像素中,经过流动后将会在字符区域形成积水。假设某个字符的边界像素数目为,字符的笔画宽度为S W ,则该字符的面积将约为N x s w 2 ,如图4 5 所示。在次降水过程中,如果我们设置单个像素的降水量为s w , ,则该字符边界上的降水总量为厶N xS W 2 ,与字符面积相等,则这些降水流入字符区域后将会使它的平均水位高度增加一个单位。然而对于其他的非字符区域,其平均水位高度的增量将大于或小于1 ,利用这点特性,我们便可

115、以成功的将字符从背景中提取出来。:O髯和毒,_ Z第四章基于流水模型的目标区域阈值法图4 5 字符笔画宽度示例下面我们给出平均水位高度的计算方法,设积水区域由L 来表示,L 中像素总数为N ,A ( x ,Y ) 代表像素点( x ,Y ) 上的积水量,则区域L 的平均水位高度W A为:4 ( x ,Y ) 黝= “y ) 上厶r( 4 2 )遍历流水模型中的积水标记数组,根据标记像素点的连通性可以获得全部积水区域及区域中像素点数目。每个像素点上的积水量,可以通过计算降水前后图像间对应像素的灰度值差而得到。因此使用公式4 2 ,我们能够得到每一个积水区域的平均水位高度。降水前后水位高度的差值即

116、为一次降水中平均水位高度的增量。在此基础上我们便可以给出改进后的算法描述。首先对输入图像执行基于C a n n y 算子的边界检测算法,获得图像中的全部边界像素点。其次对含有边界信息的图像进行多次不同位置的水平扫描,并统计所有两个连续边界间的距离,取出现频率最高的距离做为字符的笔画宽度S W 。接下来在所有的边界像素点模拟降水过程并按照流水模型进行流动,每个像素点的单次降水量设定为s 以,流水模型中的邻域尺度S 取2 即可,循环执行降水过程W 次。降水完成后通过积水标记数组计算所有积水区域的平均水位高度W A ( k ) ,定义可接受误差a ,0 a 1 ,如果W A ( k ) 满足I W

117、A ( k ) 一w l 却,则该积水区域为字符区域,否则为噪声区域。分别使用原算法和经改进的算法对多张不同类型的验证码图像进行二值化处理,可以看出本文提出的改进算法能够更好的从图像中提取到字符信息,并对于各种不同灰度值分布的图像具有良好的适应性。它并不需要像原算法一样4 5第四章基于流水模型的目标区域阈值法针对不同类型的图像需设定不同的降水次数w 和临域窗口大小S ,改进后的降水次数可以直接取成1 0 次左右,使降水足以流到字符区域的绝大部分像素,而s可以直接取成2 ,因为我们仅在边界像素进行降水,与字符区域直接相邻,很容易找到正确的局部最小值,受噪声干扰极小。对于多种灰度分布类型的验证码图

118、像,为提高算法的适应性,更好的提取到字符信息,一般会将降水次数和误差设置的尽可能小。从而导致该算法具有以下两点不足:1 由于降水量的不足,提取到的字符经常会存在局部破损或断裂。2 二值化后的图像中字符的笔画宽度不一致。第四节两种互补算法的结合使用对验证码而言,本文算法存在的不足会严重影响识别的准确率,但该算法的优势很明显,它能够非常准确的提取到字符所在区域,受噪声影响非常小,并且在最后生成的二值图像中也几乎没有噪声。该优势恰好是局部阈值化算法最大的不足,而局部阈值化算法的优势则是在字符及其附近的区域具有很好的二值化效果,这又恰好能够弥补本文算法的不足。因此通过两种算法的结合使用对验证码图像进行

119、二值化,既能得到较好的二值化效果,又能够保证对多种灰度值分布的验证码图像具有良好的适应性。本文选用第二章中介绍的N i b l a c k 局部阈值化算法与基于流水模型的改进算法结合使用。首先使用改进的算法对输入验证码灰度图像进行二值化处理,得到存在一定破损的字符二值图像A ,之后对得到的二值图像进行多次形态学膨胀,膨胀运算时使用2 S W X 2 S W 的矩形结构元素,从而提取到了字符及其附近区域的位置信息。接下来使用N i b l a c k 局部阈值化算法再次对输入图像进行二值化处理,得到带有一定噪声的二值图像B 。最后根据第一步中提取到的字符位置信息对含有噪声的二值图像B 进行去噪,

120、远离字符区域的所有黑色像素被当做噪声去除。从而得到了含有准确字符信息和极少噪声的二值图像。第四章基于流水模型的目标区域阈值法第五节本章小结本章首先介绍了目前多种验证码图像二值化算法的不足,主要是每个算法都只能对某一类图像达到较好的二值效果,不具备良好的适应性。随后给出了一种基于流水模型的二值化算法,是局部阈值法的一种。该算法最大的优势是能够通过实验的方式对任意一张特定图像取得良好的二值效果,但验证码在识别过程中不可能对每张图像都进行人为实验,为获得其良好的二值效果,本文对该算法进行了研究和改进,通过引入边界信息和字符笔画宽度,使该算法能够自适应的处理不同图像。虽然经改进的算法在很多方面具有优势

121、,但在二值化结果中却容易造成字符细节的缺损或破裂。针对这种不足,我们提出了将两种互补算法结合使用的思想,将N i b l a c k 局部阈值化算法与基于流水模型的改进算法结合使用,基于流水模型的改进算法能够准确的提取到字符区域,而N i b l a c k 算法在字符及其附近的区域能够有效的区分字符和背景。两种算法的结合使用,发挥了它们各自的优势,使结合后的算法能够适应多种类型的字符验证码图像,并获得较高质量的二值化结果。4 7第五章字符验证码识别第五章字符验证码识别第一节实验综述前文已经详细的给出了验证码识别过程中各个步骤所需要使用的算法,并分析了它们各自的优势。在此基础上,本章通过实验对

122、三种不同类型的字符验证码进行识别,证明了与传统的经典二值化算法相比本文所提出的基于流水模型的目标区域阈值法对多种验证码图像表现出更好的二值化效果和适应性,并由于其准确的提取到了前景字符信息,从而有效的提高了基于形状上下文识别和基于B P 神经网络识别两种常用识别技术的识别正确率。实验选取了具有代表性的三种不同类型的字符验证码做为实验数据,并通过二值化效果和最终识别正确率的比较得出结论。在图像的二值化阶段分别使用o t s u 全局阈值化算法、N i b l a c k 局部阈值化算法和本文提出的基于流水模型的目标区域阈值法进行实验,并比较它们的二值化效果。在整体验证码识别过程中,除二值化步骤使

123、用算法不同,其它步骤均使用相同的处理算法,从而通过最终的识别正确率的比较证明本文提出算法的优势。在最终单个字符识别步骤中,采用了目前被广泛使用的两种字符识别算法,基于形状上下文的字符识别和基于B P 神经网络的字符识别。它们对输入字符的要求稍有不同,形状上下文需要抽取边界样本信息,而B P 神经网络则需要对字符进行细化处理以满足输入层对信息格式的要求。第二节实验数据描述实验中共用到三类验证码,每类验证码图片4 0 0 张,图5 1 、5 2 、5 3 中分别为a 、b 、c 三类验证码的示例图像和灰度柱状图,通过观察柱状图可知它们分别具有不同的特点。( a ) 由5 个字母或数字相连组成,字符

124、大小不变且字体固定,字符与背景间具有明显的灰度差,且不存在灰度重叠现象,灰度柱状图表现为明显的第五章字符验证码识别双峰。? 1 ” 淀弓g3 徽,:5 01 0 0朝2 0 02 5 0图5 1a 类验证码及灰度分布示例图( b ) 由5 个字母或数字相连组成,字符大小固定,具有轻微的形变,背景存在亮度差干扰,灰度柱状图表现为多峰值,在字符及其附近区域,前景与背景间灰度差较为明显。瓯一|图5 2b 类验证码及灰度分布示例图( c ) 由4 个字母相连组成,字符大小不固定,具有严重的形变干扰,字符与背景中噪声的灰度值分布存在重叠。4 9御啪。知第五章字符验证码识别图5 3c 类验证码及灰度分布示

125、例图第三节实验流程介绍第一步是图像获取。在对目前广泛被使用的验证码研究后,本文选取了三种具有代表性的验证码图像,它们的灰度柱状图具有不同的特点,每种验证码获取4 0 0 幅。第二步是图像预处理和字符分割。在预处理过程中,首先是彩色图像的灰度化,实验中使用的是加权平均值法。接下来对生成的灰度图像进行二值化处理,二值化效果的好坏将直接影响后续的分割和识别,实验中使用了三种不同的二值化算法,分别为o t s u 全局阈值化算法、N i b l a c k 局部阈值化算法和本文提出的基于流水模型的目标区域阈值法。实验中将去噪与分割结合为一个步骤,通过计算连通域面积实现,噪声阈值设置为2 0 ,因为即使

126、是验证码中像素面积最小的字符,其包含的像素总数也大于1 0 。由于选取的数据中不包含字符粘连,因此使用连通域分割法能够达到很好的分割效果。第五章字符验证码识别图5 4 实验流程图最后一步是单个字符识别。分别对基于B P 神经网络识别和基于形状上下文识别进行实验,两类算法对输入要求不同。基于B P 神经网络的单字符识别,需要对分割得到的单个字符通过插值法进行大小归一化处理,单个目标字符大小为1 9 x 2 0 。基于形状上下文的识别方法需提取二值字符图像的全部边界像素点,边界检测时使用C a n n y 算子,完成后抽取样本。5 1第五章字符验证码识别第四节二值化效果比较由于实验所选的验证码均为

127、2 4 比特B M P 格式的彩色图像,因此在进行二值化前要对图像进行灰度化处理。遍历图像中的所有像素,取红绿蓝三通道的数值通过公式2 2 计算加权平均值,并将该值存入图像的每个通道,即三通道中的值相等。对基于边界提取的字符分割算法,灰度化后常会进行多种滤波或锐化处理。而对本实验而言,此步骤意义不大,因此可以直接对灰度图像进行二值化处理。实验中选择了包括本文提出算法在内的三种二值化算法对验证码进行了处理,图5 5 中给出了实验结果图。验证码原图像O t s u 铫gN i b l a c k 局部阙值化基于流水模犁的目标区域闽值法“r If ? o 。? c 。- :1 1 :! ! ,? :

128、! = o :Ii 缓豸3 缀:lR 5 E 3 从l R 5 E 3 M :鞫1 芝5 E 3 觚瓯二圆l 竺璺空曼! 一J p S d j ! _ L J圆圆圆图5 5 二值化效果比较图从实验结果中我们可以发现,这些算法具有不同的特点。O t s u 全局阈值化算法对a 类验证码取得了很好的二值化效果,得到的二值图像中字符清晰并且几乎不含有任何噪声。但对b 类验证码验证码,却出现了多种问题,字符信息丢失并且含有部分噪声,该二值化结果将直接导致后期无法识别。对于c 类验证码其二值化效果不稳定,含有大量背景噪声,对于小面积噪声,将会被去除,如果面积过大( 超过阈值) 或噪声与字符相连则将导致无

129、法识别。如果需要识别的验证码均具有双峰值灰度分布的特性,则该算法是最佳选择。N i b l a c k 局部阈值算法对a 类和c 类验证码的二值效果表现较为相似,能够较好的提取到字符信息,但在远离字符的背景区域却产生很多噪声。这跟窗口大小的选择有关,通过调整窗口尺寸可以一定程度上减少噪声,但并不能够完全去除。因此它要求后续处理具有较好的去噪或抗噪能力。因此该算法具有很5 2大的局限性。基于流水模取得很好的二值极大的限制该算基于流水模字符清晰准确,不存在细节丢失的现象,并且几乎不含有任何噪声。降水参数被统一设置为1 0 ,由于数值较小,该算法对多种类型验证码均具有较好的适应性。实验结果表明该组合

130、算法具有良好的适应性和鲁棒性。下文的识别测试中识别正确率的提高就是源于其优秀的二值化效果。第五节验证码识别结果通过连通域分割得到的单个字符需进行归一化处理,归一化后单个字符图像大小均为1 9 x 2 0 ,则B p 神经网络的输入层节点数即为3 8 0 个,分别对应字符图像中的每一个像素,若为黑像素点,则输入l ,若为白像素点,则输入为0 。隐含层节点数目经过多次试验最终设置为2 8 个。由于实验中三类验证码出现的字符总数均为2 8 ,因此输出层节点数为2 8 。在实验中,激励函数选取了S i g m n i d 型函数,因此进行有限次训练后获得的权值并不能产生整数0 或1 。实验中的目标值被

131、设成了0 0 2 和0 9 8 ,从而能够使S i g m o i d 型函数在固定权值的情况下能够对输入字符进行分类。期望误差和初始学习率分别被设置为2 5 和0 5 。在训练获取权值的阶段,每类验证码都需要单独准备验证码训练样本,该数量并不计入最终识别正确率的计算,并且训练样本与识别测试样本没有重复的图像。训练时每个字符出现的平均次数为2 0 ,训练样本的数量为5 6 0 。神经网络训练完成后,保存权值,接下来便可以对验证码进行识别测试。表5 1B P 神经网络参数配置表输入层节点数隐含层节点数输出层节点数初始学习率期望误差3 8 02 82 80 52 5表5 1 中给出了通过多次实验选

132、取的神经网络初始配置参数。表5 2 至5 45 3第五章字符验证码识别分别给出了三类验证码在不M - - 值化算法下的识别正确率。从实验结果能够看出,基于流水模型的目标区域阈值法在三类验证码下表现出了良好的适应性,均达到了5 0 以上的识别正确率。a 类验证码的灰度分布绝大多数为明显的双峰值,是最适使用O t s u 全局阈值法的一种情况,因此它具有较高的识别正确率,但仅比本文提出算法高出2 ,N i b l a c k 阈值法由于其背景区域常含有大面积噪声而影响其识别正确率。表5 2a 类验证码识别统计表二值算法字符正确数正确率验证码正确数正确率O t s u1 6 3 28 1 6 2 4

133、 66 1 5 N i b l a c k1 1 4 35 7 1 5 1 7 84 4 5 流水模型1 6 1 48 0 7 2 3 85 9 5 b 类验证码的识别结果中,没有O t s u 算法的识别结果,原因在于该类验证码的特别设计,其灰度分布成多峰值,当组间方差达到最大时,每张验证码都会有部分字符区域被做为背景干扰而排除,因此无法进行后续的分割及识别,其验证码识别正确率为O 。对该类验证码基于流水模型的目标区域阈值法仍然表现出稳定的识别正确率,并高于N i b l a e k 局部阈值法5 2 5 ,其原因在于二值二值算法字符正确数正确率验证码正确数正确率O t s u字符信息丢失无

134、法识别N i b l a c k1 4 7 27 3 6 2 1 05 2 5 流水模型1 5 4 87 7 4 2 3 l5 7 7 5 与前两类验证码相比,c 类验证码具有更好的反识别效果,灰度柱状图分彳较为特殊,无明显峰值,且背景灰度值与字符灰度值分布极为接近,仅通过荔度特征无法达到预期的二值化效果,可以看到O t s u 和N i b l a c k 两种算法在该型5 4第五章字符验证码识别验证码下识别正确率明显下降,而基于流水模型的目标区域阈值法除利用灰度分布外,还通过边界像素信息和笔画宽度对字符区域面积进行估测,从而可以利用平均降水量的增幅来排除背景噪声,识别正确率有了明显的提高。

135、表5 4c 类验证码识别统计表二值算法字符正确数正确率验证码正确数正确率O t s u8 0 25 0 1 3 1 7 34 3 2 5 N i b l a c k9 1 75 7 3 l 1 8 l4 5 2 5 流水模型1 2 6 57 9 0 6 2 4 76 1 7 5 实验结果证明了本文提出的基于流水模型的目标区域阈值法与传统的经典阈值算法相比,能够更为准确的提取到字符信息,对多种不同类型的复杂背景干扰仍表现出良好的适应性,对a , b 两类验证码的识别,正确率与O t s u 和N i b l a c k中较高者相接近,对c 类验证码的识别,正确率有了大幅提高。5 5第六章总结与展

136、望第六章总结与展望验证码识别技术涉及O C R 、数字图像处理、模式识别等多个研究领域,在智能下载和多点登陆系统中被广泛使用,在与验证码技术互相促进的发展过程中,也推进这些领域的发展,对该技术的研究具有重要意义。本文大量收集了当前广泛使用的优秀验证码,并根据它们的特性进行分类,总结了常用的几种干扰方式,其中部分干扰方式起到较好的反识别效果,是目前验证码识别技术的主要研究方向。通过总结国内外的研究成果,对主流验证码识别算法进行了分类,介绍了各类算法的主要思想。给出了基于切割识别算法的主要步骤,并总结和比较了多种二值化、图像去噪和字符分割算法。准确提取字符信息是后期正确识别的基本前提,而二值化是提

137、取字符的核心处理步骤。目前二值化算法普遍具有局限性,无法适应种类繁多的验证码图像。基于流水模型的二值化属于局部阈值算法,能够从特定图像准确提取前景信息,但需要在处理每张图像时以实验方式确定降水次数,该不足使其无法应用于验证码识别,为获得其二值效果,本文对该算法进行了研究和改进,引入边界信息和字符宽度,从而精准定位字符区域。针对改进后的字符局部缺损问题,提出了将该算法与N i b l a c k 局部二值化算法结合使用,有效的排除了复杂背景信息的干扰,取得了很好的二值化效果。通过使用O t s u 、N i b l a c k 和基于流水模型的目标局部阈值法对三种不同类型的验证码进行实验,证明了

138、该算法与传统二值化算法相比具有更好的适应性和二值化效果,并有效提高了基于B p 神经网络和形状上下文理论两种算法的识别正确率。本文在研究和试验过程中仍有些问题尚未解决:1 基于流水模型二值化的验证码识别时间复杂度较高,流水模型中的降水次数和流动过程是瓶颈所在,有待进一步改进2 对于复杂背景和字符形变旋转干扰,已能够较好解决,但对字符粘连仍没找到很好的解决方案。以上两点是下一步需要研究的主要方向。5 6参考文献参考文献 I V o nA h nL ,B l u mM ,L a n g f o r dJ T e l l i n gh u m a n sa n dc o m p u t e r sa

139、 p a r ta u t o m a t i c a l l y C o m m u n i c a t i o n so f t h eA C M 2 0 0 4 ,v 0 1 4 7 ( 2 ) :5 6 - - 。6 0【2 】【3 】张旋O C R 技术研究进展及前瞻中国科技纵横2 0 1 0C h e l l a p l i l l aK ,L a l S O l lK ,S i m a r dP ,e ta 1 C o m p u t e r sb e a th u m a n sa ts i n g l ec h a r a c t e rr e c o g n i t i o

140、 ni nr e a d i n g - b a s e dH u m a nI n t e r a c t i o nP r o o f s I nP r o c e e d i n g so ft h es e c o n dC o n f e r e n c eo nE m a i la n dA n t i S p a m 2 0 0 5叶建拷,刘宏林基于模板匹配的点状符号分离方法测绘工程1 9 9 9李颖w e b 验证码的生成与识别:【硕士学位论文】南京:南京理工大学,2 0 0 8陈福忠面向w e b 代理的验证码图片识别:【硕士学位论文】南京:南京理工大学,2 0 0 7陈熙霖

141、,高明,朱志营手写体字符的分割与识别模式识别与人工智能1 9 9 3 ,6 :1 3 6 1 3 9苏磊,马良形状上下文在验证码识别中的应用微计算机信息2 0 0 7 ,2 3 ( 1 2 - 2 ) :2 5 2 2 5 6贺强字符识别的相关方法研究: 硕士学位论文】镇江:江苏大学,2 0 1 0王虎,冯林,孙宇哲数字验证码识别算法的研究和设计计算机工程与应用2 0 0 7 ,4 3 ( 3 2 ) :8 6 8 8文晓阳,高能,夏鲁宁等高效的验证码识别技术与验证码分类思想计算机工程2 0 0 9 ,3 5 ( 8 ) :1 8 6 1 9 1李丽红,安新,安庆宾等粘连字符检测与识别技术的研

142、究微计算机信息2 0 0 6 ,2 2 ( 4 - 2 ) :2 6 5 2 6 8贾蜻,葛万成,陈康力基于轮廓结构和统计特征的字符识别研究沈阳师范大学学报2 0 0 6 ,2 4 ( 1 ) :1 1 2 1 1 4潘大夫,汪渤一种基于外部轮廓的数字验证码识别方法微计算机信息2 0 0 7 ,2 3( 9 1 ) :2 5 6 2 5 8朱绍文,陈光喜一种简单的基于字符形状的验证码识别技术桂林电子科技大学学报2 0 1 0 ,3 0 ( 1 ) :6 0 - 6 2罗佳,王玲基于凹凸特性的非限制粘连手写数字串切分微计算机信息2 0 0 7 ,2 3 :2 7 5 2 7 6殷光基于S V M

143、 的验证码识别算法研究:【硕士学位论文】合肥:安徽大学,2 0 1 0贾磊磊,陈锡华,熊川验证码的模糊识别西昌学院学报,2 0 1 0 ,2 4 ( 1 ) :6 0 - 6 2吕刚,郝平基于神经网络的数字验证码识别研究浙江工业大学学报2 0 1 0 ,3 8( 4 ) :4 3 3 4 3 6M 耐G ,M a l i kJ R t 煳孕血崦o b j e c t si na d v c r s a r i a lc l u t t e r :b r e a k i n gav i s u a lC a p t c h a5 7,叫U刁习卅习q刀剐明川M 陋陋pppHnnnnnnnnn口参考

144、文献C o m p u t e rV i s i o na n dP a t t e r nR e c o g n i t i o n I E E EC o m p u t e rS o c i e t yC o n f e r e n c e0 1 1N e wY o r k 2 0 0 3 ,l :1 3 4 - 1 4 1【2 1 】刘莉,叶玉堂,张静等基于R B F 网络的光学字符提取与识别新方法光电工程2 0 1 0 ,3 7 ( 1 1 ) :1 4 5 1 5 0【2 2 】王晓鹏验证码识别系统的研究及实现:【硕士学位论文】广州:华南理工,2 0 1 0【2 3 】李佐,王姝化,

145、蔡士杰一种基于前端预测识别的粘连字符分割方法计算机研究与发展2 0 0 1 ,3 8 ( 1 1 ) :1 3 3 7 1 3 4 4【2 4 】T r i e r ,T a x t E v a l u a t i o no fb i n a r i z a t i o nm e t h o d sf o rd o c u m e n ti m a g e s M P a t t e r nA n a l y s i sa n dM a c h i n eI n t e l l i g e n c e 1 9 9 5 ,1 7 ( 3 ) :31 2 3 1 5【2 5 】O t s uN A

146、T h r e s h o l dS e l e c t i o nM e t h o df r o mG r a y - L e v e lH i s t o g r a m s J I E E ET r a n s a c t i o n,1 9 7 9 ,9 ( 1 ) :0 0 6 2 0 0 6 6【2 6 K i t t l e rJ ,n l i n g w o r t hJ ,F o g l c i nJ ,c ta 1 A na u t o m a t i ct h r c s h o l d i n ga l g o r i t h ma n di t sp e r f o

147、 r m a n c e P r o c7 I C P 4 1 9 8 4 ,1 :2 8 7 2 8 9【2 7 】Y a n o w i t zSD ,B r u c k s t e i nAM AI l e Wm e t h o df o ri m a g es e g m e n t a t i o nP a t t e r nR e c o g n i t i o n I n t e r n a t i o n a lC o n f e r e n c e 1 9 8 8 ,l :2 7 0 - - 2 7 5【2 8 】D o y l eW O p e r a t i o nu s

148、 e f u lf o rs i m i l a r i t y - i n v a r i a n tp a t t e r nr e c o g n i t i o n M J o u r n a lo ft h eA s s o c i a t i o nf o rC o m p u t i n gM a c h i n e r y 19 6 2 ,9 :2 5 9 2 6 7【2 9 】C a s e yRG ,E c o l i n e tEL As u r v e yo f m e t h o d sa n ds t r a t e g i e si nc h a r a c t

149、e rs e g m e n t a t i o n I E E ET r a n so nP a t t e r nA n a l y s i sa n dM a c h i n eI n t e l l i g e n c e 1 9 9 6 ,18 ( 7 ) :6 9 0 7 0 6【3 0 】P u nT An e wm e t h o df o rg r a y - l e v e lp i c t u r et h r c s h o l d i n gu s i n gt h ee n t r o p yo fh i s t o g r a m M C o m p u t e

150、rv i s i o ng r a p h i c sa n di m a g ep r o c e s s i n g 1 9 8 5 ,2 9 ( 3 ) :2 7 3 2 7 5 3 1 】B a l i a n ,R o g e r E n t r o p y - P r o t e a nC o n c e p t P o i n c a r 6S e m i n a r 2 0 0 3 ,2 :1 1 9 4 5【3 2 】B a s s e v i l l eM D i s t a n c em e a s U l 沱f o rs i g n a lp r o c e s s i

151、 n ga n dp a t t e r nr e c o g n i t i o n f 1 S i g n a lP ro c e s s i n g 1 9 8 9 ,1 8 :3 4 9 3 6 9【3 3 】SB e l o n g i e ,JM a l i ka n dJP u z i c h a S h a p em a t c h i n ga n do b j e c tr e c o g n i t i o nu s i n gs h a p ec o n t e x t s 匝E ET r a n sP a t t e r nA n a l y s i sa n dM

152、a c h i n eI n t e l l 2 0 0 2 ,2 4 ( 4 ) :5 0 9 - - 5 2 2【3 4 】S u n i t aS a r a n g i ,NPR a t h P e r f o r m a n c eA n a l y s i so f F u z z y - b a s e dC a n n yE d g eD e t e c t o r J I E E EI n t e r n a t i o n a lC o n f e r e n c eo nC o m p u t a t i o n a lI n t a l l i g e n c ea n

153、 dM u l t i m e d i aA p p l i c a t i o n s2 0 0 7 ,2 7 2 2 7 65 8致谢致谢一转眼三年的研究生生活就要结束了。在三年的学习和生活中,很多人帮助过我,谨以此文献给曾经关心和帮助过我的人。首先要感谢我的导师李耀国教授,感谢您一直以来对我的教导和理解。您不仅教会了我们如何学习,更教会了我们如何做人做事,您幽默而又富有哲理的语言给我留下了深刻的印象,您高效的做事效率和严谨的科学思维是我学习的榜样,感谢您三年来对我学习和生活上的指导和照顾,在这里,衷心的祝愿您身体健康,并祝您的家人永远幸福安康。感谢肖明,程鑫宇,刘璐,感谢你们三年来陪我一

154、起度过的快乐时光,祝你们事业顺利、家庭和睦! 感谢实验室已毕业的师兄师姐和还没有毕业的学弟学妹们,祝你们在未来的日子里工作、学习一帆风顺。感谢我的父母,是你们对我不断的鼓励和支持,才让我能顺利的走到现在,即将迈出校园,我将会用自己的努力去为你们也为自己创造更美好的生活。最后要感谢南开大学,这个我学习和生活了七年的校园,感恩之情,无以言表。我会在未来的人生旅途中努力奋斗,争取成为一个出色的南开人,为母校增光添彩。5 9刘怀字2 0 1 1 年5 月于南开大学研究生期间主要工作:2 0 0 9 1 0 之0 1 0 0 5 :船员信息管理系统实验室自主研发项目2 0 0 9 吟一一2 0 1 1 0 4 :验证码识别系统实验室自主研发项目6 0

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号