验证码识别及其Web Service的实现研究
姓名:姜鹏申请学位级别:硕士专业:计算机应用技术指导教师:孙怀江
20070701
硕士论文验证码识别及其Web&№的实现研究摘要图像识别是一个世界性的难题,验证码识别是图像识别里的一个分支。不少网站为了防止用户利用机器人自动注册、登录、灌水,都采用了验证码技术。然而,由于验证码需要人工手动输入,在网络营销的领域里给厂家和企业带来了很大负担,因此合理地运用验证码识别技术,实现其自动化,具有很好的应用价值。本文将验证码图片的识别分为了三个部分来介绍:第一部分描述了验证码图像的预处理工作,包括将彩色验证码图片灰度化,用寻求最佳阈值的方法来二值化图像和通过中值滤波对图像进行平滑处理。第二部分介绍了验证码图像中字符的分割算法,首先运用边缘轮廓跟踪的算法,通过计算连通域面积的大小剔除孤立噪声区域,然后进行直方图处理,最后运用改进的传统投影方法,实现字符的分割。第三部分详细介绍了一种基于“日”字投影的字符识别算法,并将该算法运用到验证码识别中来,最后通过二次再识别的算法改进实现了对本文验证码字符的识别。上述验证码图像算法都是用c.阡编写程序,在VC6.0中进行实验的,实验结果表明:本文的验证码识别算法可以很好地对实际网站中的验证码图片进行识别。同时随着WebService的出现,实现了一种无缝互操作,它允许在一个平台上用一种语言编写的应用程序作为Web服务,被使用在另一个完全不同的平台上以完全不同的语言编写的应用程序中。本文最后通过对WebService核心技术的研究,利用WebService的特点,在.NET平台上用C糟言将验证码识别的算法编写为ASP.Nl玎Web服务并将该服务进行发布和实现。这样当其他程序员要使用该算法时,不管他用的是什么语言编写的程序,都可以直接调用验证码识别算法服务,不用自己再去编写,实现服务资源的共享化,符合网络发展的趋势。关键词:验证码,数字识别,WebService,二值化,.net平台硬士论文验证码识别及其WebService的实现研究ABSTRACTlnlageidentifyisaworlddifficultproblem,identifycodeisabranchoftheimagewebsiteregistersadopottheidentifycodetechnologyforpreventingaconsumerfrommakinguseofrobottoregister、enterandirrigateautomatically.However,identify.ManySinceidentifycodeneedsthenmnpowerentering,ithavebroughtthebigburdenformanufacturerandenterpriseswithinthenetworkmarketing丘eld.Therefore,makinguseofthetechnologyofrecognizingidentifycodesrationallyandrealiz.mgitsautomation,havegreatapplicationvalue.ofidentifycodesthroughthreeparts:PartIhasdescribedthepretreatmentworksoftheidentifycodeimage。includingtograythecolorinlage,binarizetheimagebyusingthemethodofseekingthehastthresholdvalueandsmooththeiIDagebymakingThisthesiswilldescribetherecognitionofthetemplateofmedianfilter.PartIIhasin仃oducedthealgorithmofsegmentationinidentifycodeimages.Atfirst,usingthealgorithmoftrackingtheborder,throughcalculatingtheareawhichisconnectedtogetridofthesoundarea.Then,dothesquarediagramabmptionprocessing.Atuselast,onthebaseofimprovementtowardsthetraditionalcharactersisrealized.PartIIIhasprojecfion,thesegmentationoftheintroducedonekindofthealgorithmofrecognizingcharactersbytheprojectionollthewordof“日”.Then,applythealgorithmintorecognizingidentifycodes.Atlast,realizetherecognitionofidentifycodesbyusingtheimprovementrecongnizingthecharactersagain.algorithmof11坞above-mentionedalgorithmslanguageandtestedinVC6.0recognizingrealwebsite.aboutidentifycodeimagea北allprogramedbyC++ofthetestindicates:thealgorithmofplatform.n圮resultcanidentifycodesinthispapergoodrecognizetheidentifycodeimagesofAtthegametime,theappearanceofoperatability,itWebServicerealizestheseamlessmutuallytobeableallows印plicationusingonekindoflanguagetocompileandonaplatformtouseasawebserviceinanotherappficationcompilingwithdifferentlanguagecoreandcomposingoncompletelydifferentplatform.Atlast,onthebasisdoingtheresearchofthetechnologyofWebService,makeu船ofthecharacteristicsofw|ebService.packthealgorithmofrecognizingidentifycodesasaASENETWebServicebyC撑languageon.NETplatform,thenreleaseandrealizeit.Insuchinstance,whenusetheotherprogrammerneedtousetheusealgoriflun,inspiteofwhatlanguagebeingincompilingprogrammer如cantheWebServiceoftherecognizingidentifycodesalgorithmdirectly.Througtthismethod,thecompilethealgorithm,itcanrealizethekeepwithnetworkservingdevelops.nottoprogrammerneedshared-rizafionofWebServiceresourcesandKEYWORDS:Identifycode,Digitalrecognition,WebService,Binarization,.Netplatformn硕士论文验证码识别及其WebService的实现研究图表目录图1.3.1验证码识别流程………………………………………………………………3图2.1一些网站验证码的原图………………………………………………………5图2.2.2验证码灰度化结果图……………………………………………………….7图2.3.1Photoshop中的验证码灰度直方图………………………………………..10图2.3.2几种二值化算法对比图……………………………………………………ll图2.4.13×3矩形模板……………………………………………………………..12图2.4.2验证码灰度图中值滤波结果图……………………………………………12图3.3.1字符分割流程图……………………………………………………………16图3.3.2去除孤立噪声区域前后比较………………………………………………18图3.3.3直方图示意图…………………………………………………………18图3.3.4常规的字符定位流程………………………………………………………19图3.3.5改进后的字符定位流程……………………………………………………19图3.3.6垂直投影图……………………………………………………………………….20图3.3.7字符分割效果图……………………………………………………………20图4.1.1神经网络结构示意图……………………………………………………….23图4.2.1识别算法流程图……………………………………………………………26图4.2.2扫描大于2个交点的数字图………………………………………………28图4.2.3扫描没有交点的数字图……………………………………………………28图5.2.1WebService角色、组件以及操作…………………………………………40图5.2.2概念性Web服务协议栈…………………………………………………..42图5.3.1SOAP消息结构………………………………………………………………….44图5.3.2UDDI工作原理…………………………………………………………….48图6.2.1Web服务“CodeldentifyServices”的测试页面…………………………..54图6.2.2“CodeldentifyServices’'Web服务的WSDL文档………………………….55图6.2.3查找服务对话框……………………………………………………………57图6.2.4本地服务列表………………………………………………………………57图6.2.5服务使用者通过代理对象与服务提供者交互……………………………58图6.2.6验证码识别界面……………………………………………………………59图6.2.7实验框架图…………………………………………………………………6l图6.2.8验证码识别实验结果………………………………………………………6l表4.2.1数字与模板对应表…………………………………………………………32表4.2.2数字4的不同模板比较……………………………………………………32表4.2.3数字字符特征模板统计…………………………………………:………。34表4.2.4数字字符I、3、5分析表…………………………………………………35表4.2.5数字字符l、3、7分析表…………………………………………………35表4.2.6数字字符l、2分析表…………………………………………………….36表4.2.7数字字符6、8分析表…………………………………………………….36表4.2.8数字字符4、8分析表…………………………………………………….36表4.2.9验证码识别结果统计………………………………………………………37V声明本学位论文是我在导师的指导下取得的研究成果,尽我所知,在本学位论文中,除了加以标注和致谢的部分外,不包含其他人已经发表或公布过的研究成果,也不包含我为获得任何教育机构的学位或学历而使用过的材料。与我一同工作的同事对本学位论文做出的贡献均已在论文中作了明确的说明。研究生签名:萎8鸣2。。7年6月19日学位论文使用授权声明南京理工大学有权保存本学位论文的电子和纸质文档,可以借阅或上网公布本学位论文的部分或全部内容,可以向有关部门或机构送交并授权其保存、借阅或上网公布本学位论文的部分或全部内容。对于保密论文,按保密的有关规定和程序处理。研究生签名:善稿2007年6月2々日硕士论文验证码识别及其WebService的实现研究1绪论1.1研究背景不少网站为了防止用户利用机器人自动注册、登录、灌水,都采用了验证码技术。然而由于验证码需要人工的识别输入,在一定程度上增加了用户的工作量。同时也必然地增加了操作的时间,影响了工作效率。这种通过验证码的作用,让用户来分担网站技术安全的问题,引起了用户的很大不满。特别是在讲究效率和速度的网络营销行业中,突破这个瓶颈迫在眉睫。因此出于方便用户使用的角度,针对自动验证码识别的产品也逐渐发展起来并深受用户的好评。如今,一种名为“商务快车”【l】的网络营销软件就很好地嵌入了验证码自动识别技术,它能够帮助厂家和企业很方便地在各大网站上发布自己产品的信息。因为随着验证码技术的加入,一个企业如果要在各大网站上发布信息,就必须首先一个个手动输入验证码,注册登录后才能进行,这样往往会影响发布的效率和实时性。而“商务快车”通过结合验证码识别技术【2】能自动帮助企业注册,从而可以快速地在各大网站上同时发布信息,很好地满足了企业的需求。当然这里要严格控制“商务快车”的用户,只有合法的企业和厂家才可以注册使用,这样就可以避免非法用户恶意注册、登录的情况。因此只要对验证码自动识别技术运用合法得当,可以为用户带来很大的利益。从“商务快车”成功的例子可以看出,对于验证码自动识别的研究具有巨大的商业价值。同时随着SOA和WebService的提出,众多IT巨头和大厂商纷纷涉足Web服务市场,而企业对Web服务的投资和实际应用也是越来越多,如Google发布了自己的Web调用接口GoogleAP#1,使开发人员现在可以在他们自己的应用程序中嵌入Google搜索结果和其它信息;现在很多的短信收发调用接口和各种二级短信应用服务也都是使用Web服务的形式提供等等。如今,WebService相关技术的研发一直持续发展,由此可见,Web服务的后续也有很强的支撑力道。本文针对网络上验证码识别研究较少,验证码识别源代码公开发表不多的情况,决定对验证码识别技术进行研究,同时利用WebService先进的思想理念,将验证码识别技术在面向服务的架构上进行封装和实现,即把验证码识别算法编写为Web服务,使得其他对验证码识别技术不熟悉而要用到的程序开发者可以方便地调用该服务,节省了开发的时间,提高了开发的效率.这样通过本文实际的研究工作,既可以对验证码识别技术有初步的研究和了解,又可以达到对WebService具体应用的研究效果。硕士论文验证玛识别及其Webscrvi∞的实现研究1.2计算机字符识别的技术研究现状本文研究的验证码识别技术的关键就是计算机字符识别技术,而字符识别技术又是模式识别技术的一个分支,从传统的特征抽取与匹配到现在新技术的不断渗入,使这门综合性技术不断深入和完善。其识别对象集不断发展,版面分析多样化,对文字识别的研究也从原来对单字的识别方法的研究发展到对词和语言知识进行文字识别的研究阶段。总体来说,计算机字符识别技术的水平在不断提高,主要表现在文字的正确读入率、读入速度、使用系统的工作稳定性和人机界面的友好程度等。现实生活中,计算机字符识别的应用需求也是相当紧迫的。需要计算机自动处理的领域【4】越来越广泛,随着识别技术的不断成熟,计算机文字识别技术必将广泛地用于文件资料自动录入,图像文本的处理,自动阅读器等领域。而本文对验证码识别技术的研究也正是为了让计算机能代替人眼自动识别验证码中的数字字符,可以说属于字符识别技术的一个应用。我国的数字识别研究起步较晚,从80年始了它的研究工作,经过科研人员十多年的辛勤努力,印刷字符识别技术的发展和应用有了长足的进步,如今对印刷体识别已经是一门相对成熟的技术【删。在过去的数十年,研究者们提出了许许多多的识别方法,这些方法大致可分为三类【7】:基于模板匹配的方法、基于字符结构的方法和基于BP神经网络的方法。一般来说,模板匹配法比较简单,程序实现起来也比较容易,重要的就是把每个数字字符的模板做好。为了提高识别率,可以通过字符的结构特征,来自定义可行的区分方法,这就是上面的第二种识别方法,这种识别方法可以根据字符各自的特征自定义不同的算法研究,研究方法比较广泛,识别速度比较快。第三种识别方法即神经网络法,是一种比较先进的方法,如果训练时间足够长,训练样本比较合适,它的识别率相对前两种方法而言要更高。但BP神经网络也有它自身的缺陷,所以神经网络法还有待于近一步的改善和发展。数字字符识别是模式识别领域的一项传统的课题嘲。尽管许多学者已研究了多年,但目前国际上仍有许多学者在研究。这是因为数字字符识别不是一个孤立的问题,而是模式识别领域中大多数课题都会遇到的基本问题,并且在不同的课题中。由于具体的条件不同,解决的方法也不尽相同,有时候处理的字符质量不好,有很强的噪声干扰,使字符识别存在相当的难度,因此数字字符识别的研究仍具有理论和实践意义。2磺士论文验证码识别及其WebService的实现研究1.3验证码的识别研究l-3.1验证码的形成想要对验证码进行识别,首先要对验证码是如何形成的有一个了解。验证码分为文本化的验证码和图形化的验证码,在实际运用中文本化的验证码已被淘汰,主要是运用图形化的验证码。图形化的验证码首先是由服务器随机产生文本序列,然后与背景图像进行信息融合生成最终的验证码,图形化验证码的安全强度主要基于图形识别的难度。一方面,在信息传输和页面显示中不存在直接可提取的验证码文本,要进行图像到文本的程序转换必须通过图像识别;另一方面,针对图像识别技术,一般在信息融合过程中添加干扰信息,同时进行图像混杂,扭曲或变形处理,增加图像识别的难度,从而提高图像识别算法的复杂度。提高图形化验证码安全强度的方法有:(1)背景干扰。选择变化的背景图片,是降低图像识别率的基本方法。通常有不同的背景色,背景点,背景图,渐变背景色,网格背景等。(2)前景变形。通过对前景图形进行倾斜,膨化,波浪化,风化,图形凹凸,球状扭曲等效果来形成。(3)信息码变换。通过改变字符,数字的字体,颜色,位置,大小和增加多余线条来增加识别的难度。1.3.2验证码识别步骤网络上提供的大量验证码识别图基本上都是经过干扰信息处理过的彩色图片,这里主要研究的是对该类数字型验证码的识别.其主要识别过程如图1.3.hI验证码原图r叫灰度化r—1二值化r_1图像平滑Il1■__-____-__…H识别结果输出图1.3.1验证码识别流程L悸磊订叫数字字符识别1.4研究的主要内容(1)验证码的识别技术:得到一幅验证码图像后,对原始图像进行一系列图像预处理,包括对图像的灰度变化,图像的二值化,图像平滑等处理将验证码中的有效信硕士论文验证码识别及其WebSfrvicc的实现研究息提取出来.然后根据数字字符的特征,通过数字字符识别算法将验证码中的数字字符识别出来。(2)WebService的研究:主要研究WebService的原理,了解WebService的体系结构和运行机制,学习WebService的关键技术,包括xml、soap绑定、wsdl、uddi等。然后将验证码的算法编写成一个Web服务,并将它发布和实现。(3)VisualSUldio.net平台的学习使用:本文对于图像处理算法的实现是在VC6.0上进行的,而最终结合WebService的研究工作是在VS.net平台上进行的,其中主要学习c毋语言,.net平台下如何编写ASP.NETWeb服务程序以及如何调用该服务。(4)ⅡS的使用:配置ⅡS基本信息,学习如何通过璐这个Web服务器来实现自己的W曲应用。1.5本文各章内容安排本文按七章展开.第一章,首先阐述了本文的研究背景,以及数字字符识别技术的研究现状,接着介绍了验证码的形成及其识别的过程,最后简单描述了本文研究的主要内容和相关技术。第二章,主要介绍采集的验证码图像的预处理过程,以及主要涉及的二值化算法的选取与比较,图像的分割算法的设计等.第三章,首先介绍了常用的字符分割算法,然后结合本文实际情况,利用相关分割技术实现了对验证码中字符的分割。第四章,介绍了几种数字字符的算法研究,并主要详细描述了本文中所使用的数字特征投影算法以及结合识别本文验证码作出的算法改进。第五章,介绍了WebService的原理和框架,对WebService中几个关键技术进行了分别阐述,其中包括xml、soap绑定、wsdl、uddi等的介绍。第六章,主要介绍了本文验证码识别算法Web服务的创建过程,以及对该w曲服务的调用和实现,并给出了最终网络环境中的识别结果。第七章,总结全文,并且描述了进一步的研究工作。4磺士论文验证码识别及其WebSc州∞的实现研究2验证码图像的预处理技术2.1概述在前面验证码的形成描述中已经提到,任何一幅验证码的原图都包含了不同的干扰信息,包括背景干扰、数字的字体和颜色的变化等。因此为了精确定位验证码图像中数字字符位置,对这些数字信息的提取,需要对采集的验证码图像进行预处理。所以图像预处理是验证码识别的关键,如何二值化提取目标,如何去掉干扰信息而又能保护好数字信息的完整性,将直接导致最后数字字符识别地准确与否.图2.1一些网站验证码的原图图像的预处理【州ol一般包括二值化、平滑、去噪声、细化等图像处理。不同的识别方法,对预处理的项目和要求有所差别。如使用模板匹配的数字识别方法对细化的要求特别高,否则处理后的数字信息很难与自定义的标准数字模板进行匹配。而根据数字特征进行的识别算法则主要是去除与数字信息无关的干扰信息,对于细化要求不高。图像的预处理在很多情况下是非常有用的,因为它有助于抑制与特殊的图像处理或分析无关的信息。因此,预处理的目的是改善图像数据,抑制不需要的变形或者增强某些对于后续处理重要的图像特征。2.2灰度化2.2.1灰度化简介计算机视觉检测图像处理系统往往需要将彩色图像转换为灰度图像来处理,当今的验证码图片也以彩色图片居多,因此在处理时需要先将原图进行灰度化处理,以便于后面的图像算法研究。灰度图是指只含亮度信息,不含彩色信息的图像。灰度化是指把含有亮度和色彩的彩色图像变换成灰度图像的过程。灰度化处理在很多图像处理中是很重要的一步,灰度化的结果是后续处理的基础,所以寻求一种合适的灰度化算法是非常重要的。在彩色图像灰度化技术研究中,许多学者在人眼对光谱波长的敏感性方面傲了大量研究,制定了相应的数学模型。主要有人眼光波敏感权重算法,如著5硕士论文验证码识别及其WebSlffvit∞的实现研究名的Photoshop和ACDSee等软件灰度化算法就属于此类算法;单通道滤色算法和强度算法等。这些灰度化算法最重要的特点是通用性强,色调均匀。2.2.2灰度化算法的原理这里考虑的验证码图片都为彩色的BMP图像文件。BMP图像文件的结构分为:文件头、调色板数据和图像数据三个部分,其中文件头的长度固定为54个字节,文件头中包含两种数据结构BⅡMAPFILE和BITMAPINFO。前者表示文件的类型、大小和打印格式等,后者包含了文件的尺寸信息。54个字节的头定义后是调色板数据和图像数据,对于单色图像CoiBiteount--0),调色板数据有两项,各占4个字节,则图像数据从第62个字节开始;对于16色图像(biBitcount--4),调色板数据有16项,各占4个字节,则图像数据从第118个字节开始;对于256色图像CoiBiteount=-8),调色板数据有256项,各占4个字节,则图像数据从第1078个字节开始;对24位的真彩色BMP图像文件,不需要调色板,其文件头的长度固定为54个字节,即图像数据从第54个字节以后开始,依次为蓝、绿、红三原色各占一个字节的数据。因此,在读取一幅图像的数据时,可以相隔依次读取三个分别表示蓝色、绿色和红色的数据。这里要处理的验证码彩图就是24位的真彩色BMP图像文件,灰度化所要做的就是把24位真彩色BMP图像变成8位亮度图。彩色图像转换为灰度图例儿】是一种色彩变换,可以用下式来表示:g(而力=Hf(x,y)l(2.1)式(2.1)中,厂以y)是指输入的彩色图像,g∽J,)是指通过交换处理后输出的灰度图像,而r是代表加在输入图像域上的操作算子。为表示出彩色图像的特征,用下式表示色彩变换:焉=霉(cI,c2…,乌),i=l,2,…,竹(2.2)式(2.2)中,q和墨表示任一点@,),)的颜色分量和对菜一点转换后的灰度值,力表示颜色成分的数量,Z是从q到墨的操作算子。常用的色彩系统如RGB,YIQ和YUv等采甩的灰度化算法原理都是一样的,都是采用根据人眼对光谱波长的适应能力而制定的算法。人眼对绿色光波G适应性最强,红色R次之,蓝色B最弱,由此得到一组灰度化的系数,可用下式(2.3)表示:】r=【o.2990.5870.1141·睥GBr(2.3)还有一些常用的灰度化算法,直接用彩色图像的某一种色彩成分来表示:6硕士论文验证码识别及其WebScrvic*的实现研究船雏]亿4,图2.2.2验证码灰度化结果图2.3二值化通过阈值把数字灰度图像处理成二值(o,1)图像的过程,称为对数字图像的二值化03inarization)。对灰度图像二值化能显著地减小数据存储的容量,降低后续图像处理的复杂性。在灰度图像中,由于物体的灰度分布与背景的灰度分布总存在着一定的差别,如果把整个灰度图像用灰度直方图表示,则图中必然存在波峰和波谷。最简单的情况是存在两个峰值的情况,通常选取波谷位置即可得到较佳的阈值。但是,实际图像处理的问题中,图像的灰度直方图往往比两个峰值的情况要复杂得多,物体内部的灰度分布往往不是均匀的,背景也有可能由于噪声的影响而使图像产生多个峰值,也有可能由于物体的灰度和背景相差不是特别明显而使灰度直方图出现单峰值的情况。在这些情况下,有时候用单一的阈值并不能得到理想的效果。要对图像进行二值化,就必须寻找一种满足自己需要的有效的计算阈值的方法。本文对于二值化的要求是:(1)数字与背景要分开,数字像素都以黑色“0”显示,背景都以白色“l”显示.(2)----值化后的数字结构基本上保持原来数字的特征.目前,二值化的方法【协14】彳艮多,这些方法大体上可以分为全局阈值法、局部阈值法和动态阈值法。下面就先分别介绍下这几种二值化方法的原理和特点。7硕士论文验证码识别及其We0Service的实现研究2.3.1全局阈值法全局动态二值化是从整个灰度图像的像素分布出发寻求一个最佳的门限值,其中的经典算法是obu算法【15】,它是在判别最/]、--乘法的基础上推导出来的。基本思想是:取一个阈值t,将图像像素按灰度大小分为大于等于t和小于t两组,然后求出两组像素的平均值方差西(组间方差)和两个组各自的均方差%2(组内方差),找出使两个方差比蠢,Z最大的阈值t,该阈值即为二值化图像的最佳阈值。这种方法不论图像的直方图有无明显的双峰,都能得到较为满意的效果。具体做法是:设给定图像具有l,2,3,……,L,共L级灰度,阈值设为k,把灰度大于k和小于k的像素分为两组。组l中的像素总数为q(.i}),平均灰度为M@),方差为砰(孟);组2的像素数为呸@),平均灰度为^乞(的,方差为司(”。则组内方差为:组问方差为;露(七)=砰(七)q(七)+《(七)伤(D(2.6)(2.7)以(七)=q(七)哆(砷【M(妁一鸩(的】算法的描述如下:1)求出图像中最大的灰度max__gray;2)令脚;3)求出大于和小于k的这两组像素总数和像素的灰度平均值:4)计算组间方差叮;和组内方差一;5)k=k+l,循环3 ̄5步,直到k>max..gray;6)找出使方差比程/口j最大的值,即得到阈值k。Otsu-算法基于图像像素的灰度值分类,按照使组问方差与组内方差比值最大的原则获得门限值,使目标和背景之间方差最大,即找出使两个方差比以/一的最大阈值t,这种算法具有以下优点:算法的实现简单;基于图像的整体特性的积分而非局部特性;可推广到多阈值的分割方法;该算法的适用性强。虽然Osm-算法有一定的自适应性,但它以灰度分布为特征,单一阈值的特性决定了它的抗噪能力较差。2.3.2局部阈值法局部阈值法【lq是根据像素的灰度值f(ij)和像素周围点局部灰度特性确定阈值的方法。阈值T表示为:T---T[f(iJ)3吖i期。当对整幅图像用全局阈值法进行二值化,效果不太理想时,通过局部阈值法往往可以得到较满意的二值化结果。局部阙值法常用的方法有灰度差直方图法、微分直方图法。局部阕值法由于考虑8硕士论文验证码iaJgJ及其WebSel'viglg的实现研究了各像素邻域内像素灰度值相互关系,使得算法复杂度有所增加,但抗噪声能力和工作鲁棒性也有所增强。2.3.3动态阈值法当闺值选择不仅取决于该像素胡值阪及其周围各像素的灰度值,而且还和该像素坐标位置有关时,称之为动态阙值法。动态阙值法是针对灰度图像中的每一个像素逐点进行阈值计算的,以当前点为中心选取一个适当的邻域模板,从这个模板中的像素灰度值中获得判断,来决定对当前点是置0还是1。下面介绍一种动态阈值算法中的典型算法LEVBB算法哪l。11对每一点计算阈值:五@,力~0Sx(.,m。ax。f(x+k,y+t)+.wnfi☆narf(x+k,y+1))-II'¥/‘W一矿掣gr(2·8)2)计算另一阈值五t墨(x,y)=一,m盛ax;∥f(x+k,),+D-.∥ra甜ins.rf(x+k,J,+,)-Wa/i.W(2·9)-W¥/绑3)对每点的阈值互进行一次滤波处理得新阈值瓦阮力:(2.10)4)逐点对图像进行二值化:若Ub,力>五(x,力)且(五“力>何一rain))则25560,J,);1,否则6(工,力:0,其中五满足∑日(工)≥o一,日(功为灰度直方图。,=I动态阈值法充分考虑了象元的邻域特征,能够根据图像的不同背景情况,自适应地改变阈值,可较精确地提取出二值图象,但它过渡地夸大了象元的邻域灰度的变化,会把不均匀灰度分布的背景分割到目标中去,带来许多不应出现的假目标。2.3.4寻找最佳阈值算法局部阈值法和动态阈值法分别是对局部点特征和对当前像素点的计算来动态二值化,因此它们对质嚣比较差的图像处理的效果比较好,然而时间和计算量开销比较大,而且由于其算法的特性往往会在图像的某些部位上产生使用整体阈值不会出现的失真。所以,在数字识别中,一般采用整体阈值法。本文考虑了一种有效的快速寻找图像最佳阈值的方法【101[1Sl[嘲,从而通过阈值对9硕士论文验证码识别及其Webse州∞的实现研究验证码灰度图进行二值化.首先,利用PhotoshopI具看一下验证码的灰度直方图:图2.3.1Photoshop中的验证码灰度直方图从直方图中可以看出,一幅验证码像素值主要分为两大块,在图中左边灰度值较低的一片区域为验证码中的数字信息,右边有明显波峰像素点大量聚集的高灰度值为验证码图像的背景。因此,要将数字和背景分开主要就是要找到一个最佳的阈值点,即图中两块区域的波谷中的一点。这样将背景都置为。255”,数字像素点都以“0”来表示,就可以很好的把两者分开,为后面的数字识别处理做好准备。通过以上分析,可以看出本文二值化的关键就是找到那个最佳的阅值点。而从直方图中可以考虑到,以波谷的任一点作为阈值点,都可以很好地将数字和背景分开,而以波谷这些点作为阈值点变换时,被阈值点分开的两部分像素点的平均灰度值应该是趋于稳定的。下面的最佳阈值点的选取就是利用了这个特点作为是否为最佳阈值点的判断标准。其算法流程如下:(1)首先对图像每个像素点的灰度值遍历一遍,通过两两对比找出最小灰度值mingray和最大灰度/dhnaxgray.(2)其次初始化阈值tIlI但伽axgra)H1nin弘ly胆。(3)然后以tIlrO的值作为图像像素灰度值的划分点,分别求出两侧的平均灰度值meanhvalue和meanlvalue,选取thrl=(meanhvalue+meanlvalue)/2作为新的划分点。(4)通过前面的分析,可以看出经过多次迭代后,thrO和thrl的差会逐渐收敛,当这个差足够小时,就可以说明以thrl作为阈值点时,图像两边的平均灰度值已经趋于稳定,此时的thrl就是我们要找的最佳阈值点。根据实验,本文选取1.0作为差的判断标准,当thrO和thri的差大于1.0时,重复(3)步骤;当thrO和thr!的差小于1.O时,thrl即硕士论文验证码识别及其WebService的实现研究为找到的最佳阈值点,从而通过该最佳阙值将图像二值化。本文利用的几种二值化算法实验结果如下图所示:8)验证码灰度原图协局部阈值法二值化图c)基于c粕ny算子算法郾1二值化图d)最佳阙值法二值化图图2.3.2几种二值化算法对比图从二值化对比图中可以看出,用局部阈值法或动态阈值法会使原图中局部地区产生阴影部分,这样不利于后面的图像处理操作。而使用全局阈值法能基本保持原图中数字的特征,而且原图中的噪声点和线也没有出现失真的变化,有利于后面的去噪处理。因此,对于验证码灰度图来说,用整体阈值处理效果比较好。2.4平滑处理通常验证码图片为了增加图片信息识别的难度,都会随机增加一些噪声点来作为干扰信息,这些信息对于验证码字符的识别是无用的,所以要把它们去除。这里选用中值滤波法来抑制图像中的脉冲干扰和椒盐噪声。噪声在图像中往往以孤立点的形式出现,与之对应的像素也很少。图像往往是由像素数比较多、面积比较大的小块组成,在这种背景下,采用中值滤波这种典型的中值滤波器,可以在保护图像边缘的同时去除噪声.所谓中值滤波,就是指把以某点(x,y)为中心的小窗口内的所有像素的灰度按从大到小的顺序排列,将中间值作为(x,y)处的灰度值(若窗口中有偶数个像素,则取两个中间值的平均)。中值滤波的具体做法[21l是用一个滑动模板在每个像素点上滑动,滑动模板大小可以自己定义。通过实验发现,本文选用常用的3×3矩形模板即可达到去噪的效果,矩形模板如图2.4.1所示:硕士论文验证码识别及其Webse州∞的实现研究1llllllll图2.4.13×3矩形模板然后以模板的中心点在图像的像素点上滑动,这样模板将会覆盖当前像素点和该像素点邻边的8个像素点,假设被覆盖的像素点的灰度值分别为al,a2,a3,a4,a5,a6,a7,a8,a9,用捧序的方法将该9个像素值进行排序:sort(al,a2,a3,a4,a5,a6,a7,a8,a9)。然后取出中间值m,把这个m的值赋给当前模板中心点像素,作为它的新的灰度值。通过这样的处理可以发现,由于孤立的噪声点和线周围的背景像素点和其本身的灰度值差异很大,通过中值滤波可以将这些噪声点的灰度值换成周围背景的灰度,从而去掉了噪声点。而图像本身由于是由一块成片像素点组成的,从而进行处理时可以保护图像的边缘。在实际工作中,由于对于图像边界点无法用3×3模板来进行中值滤波,因此这里对图像边界线上的点又分别使用1×3和3×1模板来处理。同时由于此时是对验证码二值化后的图像进行中值滤波,而二值图像中只包含0和255的像素点。因此在编写中值滤波的程序时,可以透过统计模板内像素值的和,当像素值的和大于4*255就把当前像素点置为255,否则就置为0,这样做的好处是可以省去常规中值滤波中的排序工作,从而简化了算法,提高了程序的运行速度。中值滤波后的结果图为:IjI粤搿:,[≥Q··。急:.A饵.,.滤波前的效果。9-783467滤波后图2。4。2验证码灰度图中值滤波结果图从图中可以发现,原灰度图中的孤立点和线通过中值滤波被去除了,达到了预期硕士论文验证码识别及其Webscn一∞的实现研究2.5本章小结预处理的目的是改善图像数据,抑制不需要的变形或者增强某些对于后续处理重要的图像特征,本章具体的介绍了如何通过预处理过程解决验证码图片中的噪声干扰信息,将一幅24位真彩色图片转变为一幅只保留字符特征信息的二值化图像,为后续的字符定位和数字字符识别打下基础。本章的关键技术为灰度化、二值化、中值滤波这三个部分,其实对于字符识别的预处理工作还包括细化,水平矫正和大小归一化等等,但是鉴于后面使用的字符识别算法对这几项没有要求,所以本章对这后面这几种预处理操作没有使用和做出说明。硬士论文验证码识别及其WebService的实现研究3验证码图像中的字符分割技术3.1字符分割简介字符分割的任务是把多行或多字符图像从整个图像中切割出来成为单个字符,以便用于后面的字符识别算法来对字符进行逐个识别,因此字符的正确分割对字符的识别起着关键的作用。字符分割的算法田硒l彳艮多,通常根据处理对象的不同有许多相应的方法。因此为了找到一个很好的分割算法,往往对自己所要处理的事物有丰富的总体知识和先验信息,其中包括自己将要处理的图像中会影响到分割的因素、产生这些干扰信息的原因和将要被分割事物的特征等等。在了解了实际情况后,就可以制定相应的判决准则和控制策略,从而找到一个最合理的分割方法,完成对处理事物的自动分割。随着计算机和图像处理水平的不断发展,自动化识别技术越来越被世人关注,人类希望机器能够代替人识别和处理一些事物的愿望也更加强烈。因此字符分割在许多需要自动化识别的领域中被广泛使用和讨论,例如在身份证号码的自动识别【26】、车牌自动识别[27。29]、银行支票票据自动识别等等中都发挥着重要的作用。同时在这些不同的研究领域中,根据识别对象性质的不同,研究的算法也在不断变化更新。传统的字符分割算法可以归纳为以下三类:直接的分割法、基于识别基础上的分割法和自适应分割线聚类法[30-3“。直接的分割法最简单,但它的局限是分割点的确定需要较高的准确性,常见的有对要处理的图像等距离分割获取分割对象:基于识别结果的分割是把识别和分割结合起来,但是需要识别的高准确性,它根据分割和识别的耦合程度又有不同的划分;自适应分割线聚类法是要建立一个分类器,用它来判断图像的每一列是否是分割线,它是根据训练样本来进行自适应的神经网络,但是对于秸连的字符是很难训练的。因为分割不可能做到完全正确,现在有些算法已经把字符的分割作为不必要的步骤,而是直接把字符组成的单词当作一个整体来识别,利用诸如马尔可夫数学模型等方法进行处理,这主要是应用于文本识别。以上的字符分割算法都是基于二值图像进行的,考虑到二值图像丢失掉很多信息,而且可能会造成字符粘连模糊或断裂的缺陷,对灰度图像的直接处理也已经开始有人研究。比如在灰度图像中用投影轮廓和拓扑特征来决定分割区域,找到的是非线形的分割路径,此方法适合于在一个文档中存在各种语言的字符,各种符号的情况,而且它的分割路径是非线形的。上述对灰度图像的直接分割处理技术对于一些比较复杂的分割对象来说分割效果较好,但是通常算法比较复杂。针对验证码图像中字符信息明显,影响分割因素不多和验证码自动识别速度要求较高的特点,这里还是采用常规的对二值化图像进行分14磺士论文验证码识别及其Webs口vi∞的实现研究割处理的算法。下面就先简单介绍几种常用的字符分割算法,然后结合验证码图像的特点,分析本文进行字符分割的方法.3.2常用字符分割算法3.2.1固定边界法1.固定边界法的原理对于一些尺寸大小(长宽比)是确定的图像,而且图像中所要分割出来的字符大小、字体、个数也是确定的,字符分布也是有规律的情况。例如定位准确的车牌图像,图像中都是有规律排布的印刷体字符,在这种情况下可以根据字符在图像中的位置进行等间距分割。具体做法就是:先统计出字符的宽度大小,然后将图像等间距进行分割就能把每个字符单个分割出来。2.特点固定边界分割法的特点是:算法简单,不受噪声影响,不依赖图像的状况。但对所要分割的图像尺寸精度要求比较高,图像中的字符必须有规律的分布,否则在切割字符时会造成字符不完整和分割错误,以致影响后续的字符识别。3.2.2投影法1.投影分割的原理投影分割方法[321的原理是将所要分割图像中的字符像素值在水平轴上进行累加,即最常用的垂直投影。由于被分割图像中字符灰度值为0,字符之间的背景灰度值为l,因此通过垂直投影后投影图将会在字符之间形成谷底,或者说在字符处形成连续的波峰(字符不同,连续波峰的数目和形态也都不同),这里要注意的是连续波峰中的波谷与字符之间的波谷不同,它也由字符灰度值堆积而成,只是在该垂直线中字符的像素点较少造成的。通过寻找两片连续波峰之间的谷点,将其作为字符分割的位置,从而完成字符的分割。2.特点投影分割法的特点是根据待分割图像中的字符和背景灰度值变化的特征进行分割,它对字体的排列不像固定分割法那么严格,字体的规格大小也可以各不相同,但是对于图像的二值化和去噪处理要求较高,而且两个字符在垂直方向上不能有大量重合。因为当有噪声或字符之间在垂直投影方向重合时,投影后字符之间的谷底会受到很大影响,造成谷底不明显,严重时谷底会消失,造成字符分割误差甚至错误,最终影响字符的识别。lS硕士论文验证码识别及其Websc州∞的实现研究3.2.3连通区域法1.连通区域法的原理采用基于连通域的切分方法[331是利用了每个字符或字符的一部分构成连通域的特性,把这些连通域切分出来,也就切分出了字符.因为在字符识别中,字符在理想状态下是全连通的,这样就可以使用连通域的方法来对字符进行分割,而第一个字符可以利用其与后续字符的相对关系,排列规则等信息实现切分。具体做法是采用膨胀运算和相交运算相结合的方式对字符进行分割。2.特点它的特点是不受图像倾斜的影响,定位精确。但是它需要质量很高的图像,当字符与噪声区域或字符之间有粘连的情况时,会使字符的连通域特性变得很不规范,此时用连通区域法分割很难将正确的字符分割出来.3.3本文验证码字符分割算法考虑到验证码中字符的分布没有规律性,而且这里处理的验证码中字符之间在竖直空间没有大量的重合区域,因此本文决定使用投影法来对字符进行分割。但是基于投影法对二值化图像的噪声要求较高和两个字符之间波谷点要明显的特征,在进行字符投影分割前,首先要对待分割图像敢一些分割前的预处理工作。本文字符分割流程见图3…31分割连字符精确码黑白图卜—吲噪声区域卜_—卅卜’—卅定位图3.3.1字符分割流程图3.3.1去除孤立噪声区域在前面图像预处理过程中的图像平滑处理只能去除噪声点和线,对于有一定面积的噪声区域,将无法去除。如图3.3.2中的处理前图像,验证码的局部地区会存在还没16硕士论文验证码识别及其Websc州∞的实现研究有去除干净的噪声区域。如果这些噪声区域出现在字符之间,就很有可能会影响到最后字符投影的效果,因此这里首先需要想办法把这些噪声区域去掉。(1)算法原理:孤立噪声区域形状不规则,但是可以看出,孤立噪声的面积比字符面积要小得多。同时考虑到验证码图片中的字符都是连通的,因此可以采用计算连通域的面积,通过面积的大小设定一个阈值来将孤立的噪声区域去除。所以这里去除噪声区域最关键的就是要计算出噪声和字符的面积大小,在文献刖5】中提出了一种通过种子生长的方法来遍历每个连通区域,但是这种算法嚣要一个堆栈,选择像素的方法是从八个方向盲目选择,效率不高。为了快速高效地计算出连通区域面积,这里采用了基于边界轮廓跟踪的方法,下面就介绍一下面积算法流程。(2)算法描述:1)首先初始化一个2维数.组sign[500][2]用于记录遍历过的像素的坐标位置,这里考虑到验证码字符所占像素不是很大,所以500个ll蠡时坐标存储空间已足够;同时定义一个方向向量di删【8】【2】=“O,l},{一l,1),{·l,O,,{一l,一1},{O,.1},{l,.1},{1,O’,{l,1)).2)从图像第一个像素点读取灰度值,这里要注意图像指针是从图像左下角的数据开始表示的,所以图像第一个像素点灰度值为*lpsrc,其中lpsrc=lpDIBBits+(Hcight-j-lylinebytes+i。3)当读取的像索点的灰度值为0,则将面积统计变量area=l;同时改变当前像素点的灰度值,这里改为128作为已访问的标志;然后从左下角开始查找当前象素点8领域中的新的目标像素点。4)如果找到新的目标t则将该新的待遍历点的坐标存,ksi弘[500]【2】,改变当前像素点灰度值,更新方向变量,面积统计变量area++,使下一个像素的起始搜索方向顺时针旋转90度,同时设置numble=O用来标记像素8领域的寻找次数。如果没有找到新的目标则逆时针旋转45度方向,nmnble++。5)当一个像素8领域寻找都结束后I{llnumble>8时,则需要从sign数组中寻找新的目标像素,此时要从数组的起始位置依次寻找,并且数组中的每一个数据项的8领域都要找尽,当没有再找到新的目标像素点后,则该连通单元遍历结束。6)判断面积,这里观察到验证码中字符像素点集中在50--300之间,所以可以将area<30的连通域去除。7)回到第2步骤,取图像下一个像素点开始判断,直到图像中所有像素点都结束。(3)实验结果:17硕士论文验证码识别及其webse州∞的实现研究1057J4s-一sQ9’78处理前日1i0574sSQ978处理后图3.3.2去除孤立噪声区域前后比较从实验结果可以看出,在去噪声区域处理前验证码二值化图可能存在中值滤波无法过滤的孤立噪声区域,经过去除孤立连通域算法后,原来图像中的小面积噪声区域消失了,达到了预期的目的。3.3.2直方图处理如果两个字符靠得很近,以至于在垂直投影方向上有部分重合,这样的情况会给投影分割算法的波谷点的选取带来麻烦,从而无法找到正确的分割点,导致字符分割错误。首先声明这里处理的验证码图片不包含字符部分重叠的图片,因为这种图片的字符很难通过简单的方法分割出来,这里只考虑粘连或字符贴得很近以至于在垂直投影时可能会产生少量重合的验证码图片,可以通过直方图处理来将两个字符开来。如图3.3.3所示,这里的直方图处理其实就是设定一个阈值,在直方图中将小于此阈值的部分去掉,而保留那些累计值大于此阈值的直方图部分。经过这种处理,可以有效地消除字符之间的粘连对投影法字符分割带来的影响。图3.3.3直方图示意图18颈士论文验证码识别及其WebSel'vicc的实现研究3.3.3改进投影顺序的投影字符分割算法准确定位是字符识别技术的关键步骤之一,定位的准确与否直接影响了后续字符识别时特征的提取。特别是本文后面用到的字符识别算法是根据字符特征提取来进行识别判断的,如果定位不准确,就很难提取出正确的字符特征,那么识别结果的正确性也得不到保证。常用的字符分割定位流程,如图3.3.4所示,通常都是先水平方向投影,然后再垂直方向投影,例如车牌号、支票号码的字符定位。本文考虑到验证码的字符排列不是规律的,而且大小和位置都不固定,因此决定采用先垂直投影,然后对每个垂直投影分割出来的小模块再进行水平投影,通过这种投影顺序的改变,虽然看起来增加了3次水平投影,但是由于水平投影时已经是对小模块来进行,因此不会增加投影算法的长度,而且对于位置不定和大小不定的字符确实能达到较好地定位。改进后字符定位流程见图3.3.5图3.3.4常规的字符定位流程图3.3.5改进后的字符定位流程I.垂直投影检测垂直投影原理就是从左到右扫描图像,在每一列迸行检测中将该列的字符像素点个数累加,然后将这个累加值以黑线高度来表示。垂直投影算法[361描述如下:(1)置第一层循环变量i,循环次数为验证码图像宽度;(2)置初始每列的黑色像素个数初值为0;(3)置第二层循环变量j,循环次数为验证码图像高度;19硕士论文验证码识别及其WebService的实现研究(4)读出循环扫描过的每个像素点的灰度值,判断是否是字符像素点(黑色0),如果是黑色像素点,就累加该黑色像素点;(5)根据每列黑色像素的个数,画出垂直投影图。实验结果如图3.3.6所示:Q262U_.^▲-■图3.3.6垂直投影图从图片中可以看出,经过垂直投影后,在投影效果图上每个字符都转化为一段连续的黑色区域,而且每个字符之间都有明显的波谷,最佳状况就是每个字符之间都有一段连续的空白区域。因此根据这个特征,我们可以很容易的根据连续黑色区域的左右临界边对该黑色区域所对应的字符进行垂直定位,将4个字符的左边界横坐标分别存入数组ieit[4],右边界横坐标分别存入数组right[4]。2.水平投影检测水平投影原理和垂直投影相似,它是将图像从上到下进行扫描,同时累加每一行上的黑色像素值,这里将4个字符的上边界的纵坐标存入数组up【4】,下边界的纵坐标存入数组down[4】。以图3.3.6中的二值图验证码为例,在字符垂直定位后,再对定位后的四个竖直空阅分别进行水平定位,就可以很好的定位出0、2、6、2这四个字符的位置。定位后的效果如图3.3.7所示:囵圜图2图3.3.7字符分割效果图3.4本章小结本章研究了验证码字符定位的方法,首先先通过去除孤立单元面积和直方图处理对图像进行修正,然后通过投影法对验证码中的字符进行分割定位.在使用投影分割法的时候,考虑到验证码图片中字符的自身特点,改进了投影的顺序。实验结果表明,这一改进可以有效而且准确对本文中的字符进行定位,为进一步的字符识别打下良好的基础。硕士论文验证码识别及其Webse州∞的实现研究4验证码图像中的字符识别技术4.1字符识别综述光学字符识别(OpticalCharacterRecognition,简称OCR)是模式识别领域中一个研究较早的课题,而本文验证码字符识别技术可以说是光学字符识别的一个应用。在模式识别的发展初期,几乎每个研究人员都进行过OCR的研究工作,并且字符识别被认为是比较容易解决的问题。但是,与大多数人的期望相反,这一课题遇到了很大的障碍。OCR作为一种“人机”接口,一方面,它包含了模式识别中尚未解决的一些问题,另一方面,广泛的市场需求推动了ocR技术的发展。到目前为止,字符识别系统的性能价格比尚未满足用户的要求,但是,用户与研究人员以及制造商之间的距离正在缩小。字符识别的两个关键性步骤是特征提取和分类器设计。特征向量的抽取与选择,是字符识别系统设计的核心之一。对于不同的识别问题以及不同的数据,每种特征抽取方法所能满足要求的程度是不尽相同的。因此,对于一个特定的应用问题,哪些特征是最为有效的,一般都需要通过实验来评估。本文这里所研究的就是基于字符分割后的二值图像进行的特征抽取。目前识别字符的方法【3"9l主要有三种:基于模板匹配的方法、基于字符结构分析的方法和基于神经网络的识别方法,三种识别方法有它们各自的优缺点和应用的领域。4.1.1模板匹配法模板匹配【钟】(T蛐plalematching)是图像识别方法中最具代表性的基本方法之一,它是将从待识别的图像或图像区域中提取的若干特征量与模板相应的特征量逐个进行比较,计算它们之间规格化的互相关量,其中互相关量最大的一个就表示其间相似程度最高,可将图像归于相应的类。也可以计算图像与模板特征量之问的距离,用最小距离法判定所属类。然而,通常情况下用于匹配的图像各自的成像条件存在差异,产生较大的噪声干扰,或者图像经预处理和规格化处理后,使得图像的灰度或像素点的位置发生改变。这样,要设计合理有效的模板就变得十分困难。在实际设计模板的时候,并不是简单地比较模板与图像或区域形状之间的相似性,而是根据各区域形状固有的特点,突出各类似区域之间的差别,并将容易由处理引起的噪声和位移等因素都考虑进去,按照一些基于图像不变特性所设计的特征量来构建模板。这里通过一种基于酬orff距离的模板匹配法【411来分析一下模板匹配法具体是21硕士论文验证码识别及其WebService的实现研究如何实现的。Hausdorft!距离,又称最大最小距离(简称如D),是描述两组点集之间相似程度的一种量度,它是集合与集合之问距离的一种定义形式,它反映了两个集合的匹配程度,HD越大,说职两个集合相差越远。假设有两组集合A予{al,a2,…,aNA},B-={bl,b2,...,bNB},则这两组集合之闻的皿可以定义为:dH。max(‘lh(A,B),dh圆,A))(4.1)(4.2)式(4.1)中dh@B)2景警rab;iBnIla-bll氐(A,B)称为集合A和集合B之间的直接Hausdorff距离,¨.¨是某种距离范数。如果定义一个点A到一个点集B的距离d(A’B)为该点到该点集中每一个点距离的最小值,即:dh∽B)2凹lla-b(4.3)则d。他B)是点集A中每个点到点集B中的最小距离集合中的最大值。H8usdorff距离dH取d。(A,B)和d。(B,A)的最大值,从而可以获得两个点集A和B之间的匹配程度。在用于字符匹配中时,计算要识别字符图像与每个模板的Hausdorff距离,数值越大说明字符与模板差异很大,因此选取距离值最小的模板即为待识别的字符。4.1.2字符结构分析法字符结构分析法没有必要使用模板匹配里的归一化处理,而且归一化过程会不可避免的丢失有用的字符信息,造成图像的失真。因此,用字符结构的方法就避免了这一步的信息丢失,而且提高了识别速度。待识别的字符一般包括:汉字、字母和阿拉伯数字,它们结构固定而且笔画规范。但是,汉字的笔画比较复杂,所以这种方法更适合于对字母和数字的识别。字母和数字的结构在水平方向上有三种类型:左右对称,左大右小,左小右大;竖直方向上也有三种类型:上下对称,上大下小,上小下大。再着笔画也有两大类:直笔画和弧笔画。直笔画又可分为横笔画、竖笔画、左斜笔画;弧笔画是一条曲线段,可分为;开弧笔画和闭弧笔画。所谓开弧笔画,指该弧笔画没有形成封闭环,如字母“C”。而闭弧笔画则形成一个封闭的环,如数字“0”。根据字符的这些特点,可以对字母和数字进行逐级的分类,形成一颗判定树,每个字符就是一个叶子。这种方法不需要对分割得到的字符进行大小归一化,也不需要建立样本库,完全依据字符自身的结构特征进行逼近识别。4.1.3神经网络识别法神经网络法嗍是在最近几十年发展起来的并在工程上广泛应用的方法.誊}经网络硕士论文验证码识别及其Websc州∞的实现研究的模型很多,如BP网络,Hopfield隋J络,自组织神经网络模型等等,以上几种网络模型都可以识别0,-.91}勺数字。到目前为止,研究最彻底的网络模型是BP神经网络模型。BP神经网络是一个单向传播的多层前向神经网络,其结构如图4.1.1所示:llOl|l正0l以妇Ol●丑图4.1.1神经网络结构示意图网络由输入层、一层或多层中间隐含层和输出层组成,同层节点之间没有任何连接,也不具有反馈连接,因此每一层节点的输出只影响下一层节点的输出,每个节点表示一个神经元,它是一个多输入、单输入的非线形函数,其输入输出关系可描述为:乃=厂(∑%而一只)(4.4)式(4.4)dP,五是上层传来的输入信号;只为阙值;%表示从期个神经元到第i个神经元的连接权值;而坟)为传递函数,该函数可以有多种形式,其中Si鄹∞id函数和双曲正切函数是最常用的,厂@)2万1厂∽=历∽=孑ex_e-Jr2≯I-e-2。符。(4.5)(4.6)在字符识别中,训练BP神经网络时,可以将输入层节点数定为n,分别对应一n维的特征向量,中间隐含层节点数为k,输出层节点数为m,则分别对应一个目标字BP算法推导过程严谨,物理概念清晰,通用性强,具有很好的分类性。根据现有的研究情况表明,用BP神经网络的方法进行字符识别是可行的,识别的正确率很硕士论文验证码识别及其WebService的实现研究高。但网络的训练比较麻烦,样本的选择很重要,需要大量的样本才能保证最终的识别结果的正确。用BP神经网络识别工程图纸中的字符,识别数字和手写体字符是近年来研究的热点领域。4.2改进的基于。日”字投影算法的验证码数字识别本文研究的另一个目的是将验证码字符识别的算法编写成Web服务并被调用和实现,从而达到对WebService具体应用的研究,因此在这里.为了便于后面w曲服务的创建和实现,将寻找一种简单而且快速有效地对验证码中字符进行识别的算法。从验证码图像可以看出,各字符的排列位置是不定的,数字的尺寸大小也不尽相同,所以无法用单一的模板匹配法去识剔,因为此时无法找到唯一的合适的模板。而神经网络识别法算法复杂,需要样本训练过程,不适合在本文研究中使用。因此本文决定使用一种通过对字符结构的分析,提取字符特征再与特征模板匹配的算法.从日常的电子屏幕可以看出,电子屏幕中O-,,9这lO个数字都是由“日”字演化出来的。文献[431提出了一种对印刷体数字进行快速识别的“日”字投影算法,算法中提出将数字投影到“日”字的各边框上,统计投影的结果,然后自定义相应的特征模板,对字符进行识别,该算法对规范数字的识别效果很好。然而,从“日”字结构可以看出,它由7条边组成,数字投影的模板最多可以有128个,而文献m】中对规范数字的识剐也用到了十几种模板而己,因此本文考虑能否对于字符扭曲变化不大的验证码,通过更多的模板建立,来实现对验证码字符的识别。沿着这个思路,本文决定在该算法的基础上,根据验证码图片的实际情况,将该算法运用到验证码识别中来,并对实验结果进行分析,通过改进算法来达到对验证码字符的准确识别。这里要说明的是本文对于验证码的识别研究都是以某网站中的验证码图片作为样本来进行实验的,为了防止研究成果的滥用,本文将省去实际网站的名字和具体信息。经实验表明,通过使用改进后的识别算法可以很好地对实际网站中的验证码进行识别。虽然该识别算法不如神经网络识别法那样通用性强,但是与传统的识别方法相比,明显具有程序结构简单、节约存储空间、识别速度快等优点,非常适合本文后面的研究工作。4.2.1算法的前提条件说明该算法是对理想化的数字图像进行的识别,即进入该层算法的图像应该是经过前面所述的预处理操作后只保留字符信息的黑白二值化图。“日”字投影算法中是对固定大小的印刷体字来进行识别的,因此“日”框的大小选取也是固定的。而验证码图片中的字符大小和形状是不定的,所以根据实际情况,这里的“日”框选取应当由被24硕士论文验证码识别及其w曲scnd∞的实现研究分割后的字符实际大小决定,通过预处理中分割字符时存储的坐标计算来得到相应大小的“日”字框。为了后面算法更好地描述和理解,这里将对算法中要用到的一些名词概念进行定义和说明。首先将“日”字各边框分别定义为顶框、中框、底框、左上框、左下框、右上框、右下框。然后对分割后的字符图像的坐标系进行定义:将“日”的顶框由左向右定义为x轴,左框自上而下定义为Y轴,左框与顶框的交点为(o,O)。有了坐标表示后,算法中将用一个二维数组N(ij)表示数字化后的图像,其中i坐标表示当前像素点在坐标系中的纵坐标,j表示当前像素点在坐标系中的横坐标,N(ij)的数值只由“0”或“l”表示。其中“l”表示该像素点是字符点,“0”表示该像素点是背景点.最后定义两个算法中将使用到的名词概念:(1)扫描线与数字图形交点的定义:当扫描线从“日”的一框到达另一框之前遇到字符像素点而后又再遇到非字符像素点时,记为一个交点。(2)交点闯(交点与框)的距离定义:交点间(交点与框)非字符像素点的个数和定义为交点间的距离。硕士论文验证码识别及其WebService的实现研究4.2.2算法流程图图4.2.1识别算法流程图4.2.3中框和光源位置的确定为了识别算法代码实现的方便,首先要将分割后的字符信息进行数字化,由于本文研究的实际网站中验证码的尺寸为200X40,因此这里通过二维数自Jln[40][50]就可以存储单个字符数字化后的信息,40为字符高度的存储上限,50为字符宽度的存储上限。具体做法为:首先初始化二维数组,使每个数组空间都置0,然后对分割后的字符图像进行全扫描,当像素值为255背景点时,将O存入对应的数组位置中;当像素值为0字符点时,将l存入对应的数组位置中。这样分割后的字符图像就被数字化为0、126硕士论文验证码识别及其WebSa-vlCC的实现研究的形式,接下来就可以很方便地利用这个数字化后的字符信息来进行中框和光源位置的选取了。1.中框位置的确定为了使后面字符的投影得到较好的效果,这里需要确定“日”字中框的位置。该位置必须尽可能取图形的对称位置,使图形在“日”字中上下对称,来保证投影的准确性。中框的定位有两种方法,一种是取字符图像的中位线,另一种是取像素点的平均位置。实际算法中,取两者的平均值作为中框的位置。具体做法为:这里设字符图I’.1像高度为h,定义中位线位置魄砘陀,定义像素点平均位置岛稍足己吩2i乙吩中/=1.■11二i=1'^最小的k值(其中珥表示字符图像中第i条水平线上的像素个数),则中框的位置蚝=魄+咆),2·2.光源位置的确定为了能很好地将O--9十个数字投影到“日”字边框上的特征区分开,光源的选取至关重要,光源选取的不恰当可能会导致十个数字的投影特征一致的情况,从而导致字符无法识别判断。通过观察0--9这十个数字笔画结构在。日”上显示的情况,可以看出被“日”字划分开的数字成封闭或半封闭状,因此光源的位置最好就设在这些封闭口和不封闭口的中心位置,从而根据数字各自结构的不同,通过投影提取特征,来识别出对应的数字字符。由于算法中是将数字通过“日”字划分为两个部分来考虑,所以这里要设置两个光源,分别对被划分的上、下部分进行投影。为了找到光源的中心位置,这里用横竖扫描线对每个半区进行扫描,运用前面提到的扫描线与图形的交点和交点间距离的概念来找出光源的位置。这里用sl(x)=O表示在前面定义的坐标系中第x条竖直扫描线与图形无交点,sl(x)一l表示有一个交点,sl(x>=2表示有两个交点;用s2(x)表示交点间或交点与中框的距离;用s3()()记录第一个交点离上框的距离;用(而,%)记录上半部光源的位置,(毛,咒)记录下半部光源的位置;定义(O,o)为左框和上框的交点坐标。首先先确定上半部的“光源”位置,用竖直扫描线JAo到ho扫描“日”的上半区.(1)当扫描线与数字图像有两个或多于两个交点时:对于扫描线与数字图形有两个交点的情况,此时将所有两个交点间的距离记录下来,最后取最大距离的中点作为光源的位置。设最大距离由第x条扫描线确定,则硕士论文验证码识别及其Websc州∞的实现研究ye='s3(x)+s2(x)/2,而----X,从而就确定了光源在坐标系中的位置。验证码中的数字大小和比例都是不一定的,当出现如图4.2.2中8的上下比例不同时,在上半区扫描时就会出现有3个交点的情况。从图中可以看出,此时光源的位置应该设在8的上面封闭圈的中心点,因此在用两交点最大距离的方法来定位的时候,只计算扫描到的前两个交点之间的距离,后面的交点不管,这样就又可以转化到上面2个交点的情况,找到光源位置坐标。圈图4.2.2扫描大于2个交点的数字图(2)当扫描线与数字图像只有一个交点时:计算出交点与中框的距离,取其中最大距离的中点为“光源”位置。设最大距离由第x条扫描线确定,则%=s3(x)+s2(x)/2,%---'X。(3)当扫描线与数字图像没有交点时:没有交点的情况只有在电子屏幕中数字都是由横笔和竖笔组成时才可能出现,如图4.2.3所示。但这种情况在本文验证码数字字符中不会出现,验证码中的数字字符不会这么的规则和简单,所以这里可以不予考虑。图4.2.3扫描没有交点的数字图接下来就是确定下半部的“光源”位置,用(五,咒)记录下半部光源的坐标,光源寻找的原理与上半部光源的确定方法相同,只是要改一下竖直扫描线扫描的区域,这里是从“日”的底框开始向中闻扫描到%。曰目4.2.4投影的算法分析当光源点被选取好了以后,就可以开始对“日”字的每条边框进行投影,通过每个数字在投影框上投影的特征不同来对字符进行识别判断。投影的思想为:将光源所在点即(%,%)坐标的点与所要投影的边框上任一点O,力连成线段,再将线段上一点瓯,咒)沿着该线段从(x,力向(‰,%)进行扫描,如果遇到字符像素点即说明线段与图形存在交点,则置化力点标记为l,否则置为0,用于后面的投影结果统计。首先先对上半部分进行投影,上半部分投影又分为对顶框、左上框、右上框、中28颈士论文验证码识别及其WebService的实现研究框的投影,此时光源的坐标为(‰,%).(1)顶框投影光源到顶框上一点(】印)(x--o,1,2,…,wi拙)的直线方程为:毛=以‰一力,%+x(只=O,l,2'…,%)(4.7)如果Q。,咒)满足方程并且该点像素值为l,则用KRx.]=I标记,表示字符图形在顶框()【,O)点上有投影,否则用Kl【‘】=o来表示在该点上没有投影。(2)左上框投影光源到左上框上一点(o,y)O间,l,2,...,%)的直线方程为:%=矗(%一y)/xo+y(%=0,1,2,…,Xo)(4.8)如果阮,%)满足方程并且该点像素值为1,贝JJgJK2[2,,]=1标记,表示字符图形在左上框(O,y)点上有投影,否则用K2【%】=o来表示在该点上没有投影。(3)右上框投影光源到右上框上一点(width,y)O=o,1;2,...,%)的直线方程为:咒=(毛-width)(.yo一力/(xo—wfd扬)+y(毛=而,而+1,…,width)(4.9)如果阮,以)满足方程并且该点像素值为l,则用K3【只】=l标记,表示字符图形在右上框(width,y)点上有投影,否则用K3【毛】=o来表示在该点上没有投影。(4)中框投影光源到中框上一点(x,%)(x--o,1,2,…,width)的直线方程为:毛=(xo一曲饥一%)/饥一‰)+工O_=儿,Yo+l,…,%)(4.10)如果瓴,以)满足方程并且该点像素值为1,则用K4【毛】=l标记,表示字符图形在中框(x,%)点上有投影,否则用K4【%】=o来表示在该点上没有投影a接下来对字符下半部分进行投影,下半部分投影分为对中框、左下框、右下框,底框的投影,此时光源的坐标为“,M)。(1)中框投影光源到中框上一点伍%)(x:0,1,2,...,width)的直线方程为:毛=(^一抛一%)/执一%)+x(%=%,%+1,…,咒)(4.11)如果(矗,咒)满足方程并且该点像素值为l,则用K4【矗】=l标记,表示字符图形在中框沁%)点上有投影,否则用K4【%】=o来表示在该点上没有投影。这里要注意的是下半部分的中框投影与上半部分的中框投影用的是同样的存储空间,因此在对下半部29硕士论文验证码识别及其Websc州∞的实现研究分做中框投影前要对上半部分的中框投影先统计结果(统计方法后面将提到),如果统计结果为字符对中框有投影效果,则可以不做下半部分的中框投影工作,否则就要先清空该存储空间,再开始进行投影工作.(2)左下框投影光源到左下框上一点(O,y)O,=%,%+1,....height)的直线方程为:%=毛01一力,而+),也=O,l,2,…,置)(4.12)如果(矗,以)满足方程并且该点像素值为l,则用K2【只】=l标记,表示字符图形在左下框(O,y)点上有投影,否则用K2【只】=o来表示在该点上没有投影,这里可以看出左下框的投影标记数组名和左上框的也相同,但是从Y轴坐标可以发现,左下框投影标记数组编号是紧跟在左上框标记后的,因此用同一个数组标记不但不会干扰投影记录,还可以将左框上每个点的投影标记放入一个存储空间中。(3)右下框投影光源到右下框上一点(width.y)(),=%,%+l,...,height)的直线方程为:咒=(矗-width)O,I-y)/(x,l—width)+y魄=而,而+19-**7w】}dth)(4.i3)如果(毛,咒)满足方程并且该点像素值为1,则用K3[只】;1标记,寝示字符图形在右下框(width,y)点上有投影,否则用K3[矗I=O来表示在该点上没有投影,这里用的投影标记数组名也和右上框的相同,目的是为了能把右框上每个点的投影结果存入一个数组中。(4)底框投影光源到底框上一点(x.height)(x--0,1’2,…,width)的直线方程为:矗=瓴一工X%一抛捌口)/(n一抛自咖f)+茸(靠=咒,咒+l'…,height)(4.14)如果(矗,以)满足方程并且该点像素值为l,则用K5[矗】=l标记,表示字符图形在底框(xgaeight)点上有投影,否则用KS[x。1=0来表示在该点上没有投影。对“日”字每条边框都投影后,就可以开始统计投影结果,这里用Sign[i]--1和o(i=o,1.2,...,6)来分别表示“日”的顶框、上左框、上右框、中框、下左框、下右框、底框有、无字符投影特征的情况。对于判定在某一边框上有无投影,这里用统计边框上具有投影效果点的和的方法,首先给每条边框设定一个阈值,阈值的大小定为各边框大小的一半,当和大于这个阈值时认为数字字符在该边框上具有投影特征。具体做法为:(1)当KI[0]+K1[11+gI【2】+……+K1[width]>width/2时,令sign[o]=l来标记字符30硕士论文验证码识别及其Websc州∞的实现研究在顶框上有投影,否则令Sign[OleO。(2)当K2【o】+K2【l】+K2【2】+……+K2【%】>%/2时,令Sign[1]ffil来标记字符在左上框上有投影,否则令Sign[I]=0。(3)当日[o】+go[q+K3121+…一+鄹Mdm】)%/2时,令Sign[2]=l来标记字符在右上框上有投影,否则令sign[2]=o。(4)当K4【o】+K4111+K4121+……+K4[width]>width+213时t令Siga[3]=l来标记字符在中框上有投影,否则令Sign[3]=0,这里对中框投影选取宽度的2/3来作为阈值判断投影效果,是因为通过实验这个阈值能更好的区分开各数字字符的中框投影特征。(5)当K2【%】+K4【%+1】+K4【ho+2】+…。+K40aeight]>Oaeight-%坭时,令Sign[4]=1来标记字符在左下框上有投影,否则令s[gn[4]=O。旧当鼬【|I】b】+K3【%+l】+K3【%+2】+….,十I<30aeight]>(height-%)/2时,令Sign【5】=1来标记字符在右下框上有投影,否则令sign[5]=o。(7)当K5【o】+K5【l】+K5【2】+……+I西[width]>width/2时,令sign[6】=l来标记字符在底框上有投影,否则令Sign[6]=0·因为数字各自结构特征的关系,在“日”字框上进行投影时产生的投影结果也会不同,因此在提取了数字字符在各边框上的投影特征后,下面就可以开始统计投影结果,制定相应的投影特征模板来对数字字符进行逐个识别。在创建特征模板的时候,可以有两种方法。一种是根据自己对算法的了解和经验,对一般结构清晰的数字可以直接创建对应的模板,另一种是通过输入大量的验证码图片样本,通过机器对样本的投影识别人工提取对应数字的模板。有了特征模板以后,就可以对每幅验证码图片上的字符进行投影特征的提取,通过提取出来的特征来寻找相应的模板,从而由模板所映射的数字即为最后识别得到的结果,完成验证码的自动识别。下面就先给出实验中本文验证码图片中数字字符的部分投影结果,如表4.2.1所示:硕士论文验证码识别及其WebService的实现研究表4.2.1数字与模板对应表数字字符Ol2数字图像投影结果模板取值11101ll囵固团曰口]L][10101011011101101101111111011101011345|口r--图日图6789团园5巨]日马110111110l001111111111111011囹因为验证码中的数字字符的形状或者数字的笔画结构可以变化,各不相同,因此往往同一个数字由于空间上的变化或者因为接近边界导致局部笔画信息丢失都有可能使特征模板产生变化。在上表中只是给出了十个数字分别对应的一种模板形式,实验结果表明每个数字有可能对应多个模板(表4.2.2给出了数字字符“4”的两种不同模板),而由于数字的基本结构不变,因此因变化而产生的特征模板也是有限的,经过后面算法改进的处理后已经可以满足0-.9的数字字符识别。表4.2.2数字4的不同模板比较数字字符数字图像投影结果模板取值111010111111014图图巳巳32硕士论文验证码识别及其WebScrvi∞的实现研究4.2.5基于二次再识别的算法改进从上面的算法分柝可以看出,本文验证码识嬲算法的关键就是蝴十个数字特征模板的创建,这些特征模板的理想情况就是能够包含所有验证码中出现字符投影后的结果,并且每个数字对应的特征摸板与其它数字的特征模板应该是互斥的t这样就毖达到100%的识别效果。然而经过实验,在特征模板的创建过程中发现,在大量的验证码样本投影后特征模板的提取过程中,验证码图片中某些笔画结构相似的数字由于形状的变化或者局部信息的丢失等影响,在进行对“日”字边框投影后可能会出现特征模板相同的情况,即此时同一个模板不是唯一对应一个数字,这样就导致了数字无法唯一识别的问题。如果此时采用选取第一次产生该模板所对应的数字,以后产生该模板不予采纳的策略的话,必然会影响识别率,因此在这里提出了一种基于二次再识别的算法改进。基于二次再识别的算法改进的原理是:通过“日”字投影算法的字符识别后仍然无法唯一识别数字字符豹特征模板,对该模板所映射的数字字符进行二次再识别。因为在第二次识别过程中数字字符的识别往往已经缩小到2个或较少的指定数字之间的区分,因此二次再识别可以根据此时指定数字的其它不同特征制定简单快速的区分识别算法。本文以某网站中大量验证码作为样本,来提取字符特征模板,经实验每个数字字符对应的特征模板如表4.2.3所示:硕士论文验证码识别及其WebSavicc的实现研究表4.2.3数字字符特征模板统计数字字符Ol234567特征模板11101111010101、101001l、1011101、1010010、10110111011101、1010101、1111101lOl0011、101101l1110101、1101101、1111100、1111101110101I、10110111101111、lll“ll10100118911111ll、1111101、101llll1110011、llllOll从统计后的模板可以看出,本文验证码中的数字字符除了0和7只有一个特征模板以外,其它数字字符都有两个或两个以上的特征模板,其中尤其以l的特征模板最多,因为1的头部和尾部变化很多,从而导致光源的位置确定会发生变化,引起投影模板的不同。而且从上表可以看出,某些数字字符的特征模板会发生重合,经过归纳有lO个模板可以单独映射一个数字字符,而导致模板重合的数字组合一共有5组。分别是:①l、3、5;②l、3、7;@l、2;④6、8:@4、8,下面的二次再识别的工作就是针对这5组字符组合的各自特征具体分析研究,拟定相应的区分识别算法。(1)数字l、3、5.Z次再识别:碰士论文验证码识别及其Webscrvi∞的实理研究数字字符l35数字图像重合模板囤囹曰101101l从表42.4可以看出,对于数字l要产生1011011的模板,一定是中简比较竖直,如果是倾斜的数字1的话。它的光源就会因为取最大距离中间位置的缘故,上部光源会定在l上半部分的下方。下部光源则在l下半部分的上方,从恧对中框的投影特征都将为0。而这里重合的模板对中框有投影特征,说明数字字符l是比较笔直的,利用这个特征,就可以按列来依次扫描列方向上的像素点,统计每列连续字符像素的个数,如果连续字符像素的个数超过字符高度的一半,则认为该字符为数字I。经过第一步的判断,下一步就只剩下数字3和5的情况,又根据3和5的笔画特征,如果把整个字符图像画为一个“田”字,3的左上框的字符像素要少于右上框的字符像素,而5的左上框字符像素则要多于右上框的字符像素,通过对“田”字划分的上半部分左右两区域的像素统计比较,就可以很好的区分开3和5.(2)数字l、3、7二次再识别:表4.2。5数字字符l、3、7分析表数字字符l37数字图像重合模板固囡10100ll团从表4.2.5可以看出,如果把数字字符从中间划开,然后用竖直扫描线对上半部分进行扫描,扫描数字3和7都会产生2个交点(这里要说明的是,本节提到的所有交点都沿用4.2.1节中交点的概念),而扫描线与数字1只会产生1个交点,根据这个特征就可以把l区分开来。接下来就只剩下数字3和7的比较,从重合模板上来看,数字在“日”字右下框有投影,数字7要有这个投影特征就肯定是竖笔画向左倾斜,因此在右下角会形成一小块背景区域。园此这里用一个4×4的空阊模板来统计字符图像右下角的像3S硕士论文验证码识别及其WebService的实现研究素个数,设定5作为阈值判断标准,有5个以上字符像素点则为数字3,否则为数字7。(3)数字1、2--"次再识别:表4,2.6数字字符1、2分析表数字字符l2数字图像重合模板囤四厨1010101、1011101囵从表4.2.6可以看出,根据数字l和2的结构特点,用竖直扫描线对整个字符图像进行扫描,扫描线与数字1最多有2个交点,而与数字2有3个交点,因此可以根据扫描到的交点个数来区分识别数字I和2。(4)数字6、8二次再识别:表4.2.7数字字符6、8分析表数字字符68数字图像重合模板囵园111llll从表4|2.7可以看出,数字6在“日”字右上框产生投影是因为中框和光源位置都偏上,而且6的上方笔画比较向下弯的缘故。由于数字6和8的很明显的结构区别就是8是两个封闭区域,而6上半部分是一个半封闭区域,因此可以在字符图像的右上部分用水平扫描线进行扫描,如果产生没有交点的情况,则该识别的数字字符为6,否则为数字8,根据这个封衍j特性就可以很方便地把数字6和8区分识剐出来.(5)数字4、8--次再识别:表4.2。8数字字符4、8分析表数字字符4数字图像重合模板8圈圆111110l从表4,2.8可以看出,8在4日”字右下框没有投影特征是因为取光源位置的时候是取最大距离的中间位置,这里8的右下角有一个突出的部分,而下半部分信息丢失,从而导致光源在封闭区域的外溅。但是从4和8的结构特性来看,它们豹情况与数字136硕士论文验证码识别及其WebSa'vice的实现研究和2的二次再识别相似,对整体图像竖直扫描,扫描线与4最多产生2个交点,而与数字8产生3个交点,通过扫描交点个数的统计就可以很好地区分识别出数字4和8。从上面数字字符组合的二次再识别过程可以看出,由于这里要识别的字符已经被缩小到2个或3个数字之间的区分比较,因此可以根据实际情况拟定较为快速、方便的区分算法来完成对字符的二次识别判断。在加入对产生相同模板的字符进行=次再识别的算法改进后,下面就可以开始对本文验证码进行识鄹实验,为了很好地得到每一步验证码图像的处理结果,本文对于验证码图像的处理程序都是先通过在VC6.0环境下用C++编写实现的,表4.2.4给出了实验结果:表4.2.9验证码识别结果统计正确识别错误识别个数64拒识别个数O识别率个数基于“日”字投影3636%算法识别基于二次再识别算法改进识别如上表所示,本文用某瞬站中100张真实验证码图片来做实验,因为在实验中加入了拒识别处理,即超出模板范围的数字字符都以特征模板最复杂的数字l来表示识别结果,因此在实验中避免了程序出错退出的问题,所以这里不会产生拒识别的验证码,而且在基于“日”字投影算法进行实验中,对于产生特征模板的字符,这里采取了最多产生该特征模板的字符作为识别结果的策略。从实验结果可以看出,如果用改写过来的“日”字投影算法直接对本文验证码图进行识别,识别率很低。通过本文的基于二次再识别的算法改进后,验证码的识别率有了明显的提高,基本上能够满足对验证码自动识别的要求。实验中出现识别错误的两张验证码图片是因为图片中有局部干扰信息和字符粘连的情况,这种干扰噪声通过多次平滑可以逐步去除,但是多次平滑可能会导致字符信息的丢失,因此在以后的工作中通过对图像处理进一步地研究,找到解决这种粘连噪声区的办法,应当可以使该算法对于本文验证码达到100%的识别率。982O98%硕士论文验证码识别及其WcbScrvicc的实现研究4.3本章小结本章先是简单描述了字符识别的发展状况,然后介绍了三种常用的字符识剐方法:模板匹配法、字符结构分析法和神经网络识别法,并分析各自的优缺点,接着详细介绍了如何将基于“日”字投影算法运用到验证码数字字符识别中来,最后根据特征模板提取中产生的模板非唯一映射字符的情况,提出了一种基于二次再识别的算法改进,提高了对本文验证码图片的识别率,达到了验证码机器自动识别的要求。硕士论文验证码识别及其WebService的实现研究5lfebService技术研究5.1什么是WebServiceWebService[441是一种编程模型,它提供了在可缩放的、松耦合和非特定平台的环境下交换信息的能力,交换信息使用诸如[-ITTP、XML、SOAP和WSDL之类的标准协议。WebService是用标准的、规范的Ⅺ小溉念描述的,称为WebService的服务描述。这一描述囊括了与服务交互需要的全部细节,包括消息格式(详细描述操作)、传输协议和位置。WebService接D隐藏了实现服务的细节,允许于实现服务基于的硬件或软件平台和编写服务所用的编程语言使用服务。这允许并支持基于W曲Service的应用程序成为松散耦合、面向组件和跨平台技术实现。目前,Web服务是实现SOA(面向服务的体系结构)的最好方式,已有非常多的厂商支持W曲服务,几大玎业巨头(比如微软、IBM、SUN)更是把Web服务当作现在和今后的市场运作重心。国外有些用户在Web服务技术的应用方面相当领先,他们看中的是Web服务能够通过网络与业务合作伙伴共享信息。至今为止,Web服务的发展可以说已经进入了后期的推广和完善阶段,但这个阶段仍有很长的路要走,比如安全性、可靠性、服务质量、如何管理服务等问题还有待完善。w曲服务正是在不断实践和一步步解决问题的过程中发展完善自己。5.2[ebService体系结构w曲Service架构[45-46]基于三种角色(服务提供者、服务代理机构和服务使用Xml者)之间的交互。交互具体涉及到发布、查找和绑定操作。这些角色和操作一起作用于w曲服务构件:Web服务和服务描述。在一般情况下,服务提供者可通过网络访问的服务软件模块;服务提供者定义w曲服务的服务描述,并将它发布到服务代理机构或者直接发布给服务使用者。服务使用者从本地或者服务代理机构进行查找操作,搜索到服务描述,然后根据服务描述进行与服务提供者绑定的操作,以调用相应的Web服务并与之交互。图5.2.1展示了这三种角色和它们之间的逻辑关系;硬士论文验证码识别及其Web¥erviee的实现研究黜滚基5.2.1WebW∞睦,文件图5.2.1WebService角色、组件以及操作Service结构中的角色下面分别介绍一下w曲服务架构中的三种角色:1.W曲服务提供者WebServiceProvider(Web服务提供者)是)@几WebService架构中的中心角色。从企业的角度看,它是月匪务的所有者。从体系结构的角度看,这是托管被访阃服务的平台。从技术的角度上来说,对w曲服务提供者最基本的要求是能够监听使用HTrI'协议进行传输的消息。W曲服务提供者还需要有某种合适的机制能够区分调用者对不同W曲服务的调用请求,并且能够为Web服务提供协议级别的安全性保证。在本文中,将使用.NET平台来实现Web服务,在该实现中扮演Web服务提供者的角色是IntemetInformationServices(IIS)。ⅡS是一种Web服务器,通过配置IIS和相应的文件扩展,IIS可以将客户端的调用请求重定向到服务器上相应的服务组件,比如将调用引导到一个ASPNET或者AsP程序。2.Web服务使用者从企业的角度看,WebServiceConsumer(Web服务使用者)是需要某种特定功能的企业。从体系结构的角度来看,它是寻找并调用服务,或者启动与服务交互的应用程序。在该体系结构中,任何逻辑上的网络节点都可以作为Web]匣务使用者,甚至是系统中的另一个Web服务。对Web服务使用者最基本的要求是能够使用W曲服务提供者所支持的标准通信协议对Web服务进行调用.当创建的Web服务使用者运行于.NETFramework之上,.NETFramework将替你封装Web服务使用者调用Web服务时的任何通信细节,这40硬士论文验证码识别及其WebSc州∞的实现研究时就可以将注意力集中于整个系统的构架和逻辑实现。可以在编写代码创建Web服务使用者时强行指定所需调用的Web服务的提供者的位置,当然,更好的办法是让程序在运行对动态发现所需的Web服务,这就需要使用到Web服务代理机构(WebS阴vicesBroker)。动态发现机制使得程序可以被动态地被配置并可处理负载平衡。w曲服务使用者在调用Web服务时将创建一个客户端代理对象来管理和抽象与外部w曲服务所进行的所有通信.3.Web服务代理者w.eb服务代理机构(Webservi∞Broker)的用途是:允许Web服务提供者在此以UDDI注册的方式发布Web服务。Web服务代理机构可以提供以下信息:(1)W如服务的分类信息(2)Web服务的接口信息(3)Web服务的描述信息(4)Web服务的相关资料文档的链接(5)URL形式的Web服务的位置Web服务使用者按照自己的需要在Web服务代理机构(即一种服务注册中心)那里查找到合适的服务,然后绑定到该W曲服务所需的基本信息。对于使用静态绑定的W曲服务使用者,Web服务代理机构是XMLWebService体系架构中唯一可选的角色,因为Web服务提供者可以把关于服务的描述信息直接发送给Web服务使用者。同样,Web服务使用者也可以从Web服务代理机构以外的其它来源得到服务描述,例如:本地文件、Web站点或者DISCO文件等。本文在Web服务调用实现过程中即是通过_DISCO文件来获取Web服务相关信息,从而实现Web服务的调用。5.2.2WebService架构中的操作在w曲服务的三种角色(Web服务使用者、Web服务提供者、Web服务代理者)之间,需要发生三种动作:发布(Publish)服务、查找(Find)服务、绑定(Bind)服务。这三类动作在三种角色相互之闻可以单次或反复出现。1.发布(Publish)“发布”是指服务提供者将服务发布至注册机构(服务代理)。为了使服务能够能被访问,服务提供者需要发布服务描述以使该服务可以被服务请求者发现。发布服务描述的位置可以根据应用程序的要求而变化。2.查找(Find)41硕士论文验证码识别及其WebService的实现研究在查找操作中,服务请求者直接检索服务描述,或者在服务代理中心中查询所要求的服务类型,在这种情况下,查找操作由服务请求者和服务代理中心共同完成:服务请求者描述他们正在寻找的服务类型,而服务代理中心返回与请求最匹配的查找结果.3.绑定(Bind)当服务请求者找到所需的服务之后,就需要调用服务。绑定操作发生在服务请求者和服务提供者之间,双方经过适当的协商过程,服务请求者通过服务描述中的绑定细节来定位、联系和调用提供者所提供的服务,从而在运行时与服务进行交互。5.3WebService关键技术研究要以一种可互操作的方式执行Web服务的发布、发现和绑定这三个操作,必须有一个包含完整层次的标准Web服务协议栈。图5.2.2显示了一个概念性Web服务协议栈。上面的层建立在下面几层提供的功能之上。垂直的条表示在协议栈中所有层必须满足的需求。左面的文本表示协议栈的那一层所应用的标准技术。UDDIW∞LSoAPⅡrrP、SMrrP、FrP回………圈引引引回U嚣网dd图5.2.2概念性Web服务协议栈WebService的出现将异构平台之间的互操作性推到了前所未有的高度,而这一成功的关键就是因为WebService是建立在上图所示的开放的标准以及支持这些标准的技术上的。这一章节将逐一研究WebService中的关键技术明。5.3.1可扩展标记性语言)叫,)m皿…哪是一种元语言,是IlII瑚慨环境中跨平台的、依赖于内容的技术,也是用它来简化Internct的文档信息传输。XML与H眦一样都是SGML(StandardGeneralized当今处理分布式结构信息的有效工具。旱在1998年,W3C就发布了XMLl.0规范,使Marl【ll!pLanguage,标准通用置标语言)的一个简化子集。但它与HTML42硕士论文验证码识别及其Web&rvi∞的实现研究使用标签来描述外观和数据不同,它严格定义了可移植的结构化数据。由于不同的企业之间或者企业内部的不同部门很少会达成协议使用统一的软件工具和数据格式,以至相互之间的通信涉及到大量的数据交换、集成问题和工作,XML在网络传输的过程中能够格式转换,不会丢失任何信息,这样一种特点使得它非常适合用于描述数据和提供跨平台的数据交换。WebService的所有协议都建立在可扩展标记语言XML基础上,因此Ⅺ札可称为WebService的基石。之所以Ⅺ儿广泛应用于Web领域,主要是因为它具有以下几个特征:(1)可扩展性:XML允许使用者创建和使用他们自己的标记而不是HTML的有限词汇表。这一点至关重要,企业可以用XML为电子商务和供应链集成等应用定义自己的标记语言,甚至特定行业一起来定义该领域的特殊标记语言,作为该领域信息共享与数据交换的基础。(2)自描述性:XML文档通常包含一个文档类型声明,因而XML文档是自描述的。不仅人能读懂XML文档,计算机也能处理。XML表示数据的方式真正做到了于应用系统,并且数据能够重用。XML文档被看作是文档的数据库化和数据的文档化。(3)灵活性:HTML很难进一步发展,就是因为它是格式、超文本和图形用户界面语义的混合,要同时发展这些混合在一起的功能是很困难的。而XML提供了一种结构化的数据表示方式,使得用户界面分离于结构化数据。所以,w曲用户所追求的许多先进功能在)a沮环境下更容易实现。5.3.2简单对象访问协议SOAPObjectAccessProtoc01)简单对象访问协议是一个简单、轻量SOAPIsl—53】(Simple级的协议,用于在Web上传输、交换XML数据。客户应用程序正是通过SOAP协议来访f.3htemet_k的W曲服务的。SOAP规范定义了消息传输的信封(Envelop)格式,提供了数据编码的基准,并提供代表远程过程调用(RPC)的一系列规则。SOAP协议可以构建在TCP,SMTP,HTTP等协议之上。最常用的是HTTP,因为HnP办议可以43硬士论文验证码识别及其WebSⅢi∞的实现研究方便地穿过防火墙,使得在mternd上执行分布式计算可以畅通无阻的进行。80A嘞议完全以Ⅺ咀,为基础,协议规范中定义的消息结构如图5.3.1所示.SO^PEa呻SOAPHH4tH日dtBl∞klH蛐Block∞^PB哮lB嘶Blo矗IB曲Bl吐I图5.3.1SOAP消息结构SOAP协议规范由四个主要的部分组戍:(1)SOAP信封(Envelop):它构造定义了一个整体的表示框架,可用来表示在消息中的内容是什么,谁应当处理它,以及是可选的还是强制的。SOAP信封包括一个SOAP头(Header)和一个SOAP体(Body):SOAP头是可选的。它的作用是在松散环境下且通信方之间尚未达成一致的情况下,扩展SOAP消息的描述能力。SOAP体是必需的,它包含需要传输给接受者的具体信息内容。(2)SOAP编码规则(Encodingrules):是一个定义传输数据类型的通用数据类型系统,这个简单类型系统包括了程序语言、数据库和半结构数据中不同类型系统的公共特性。在这个系统中,一个类型是一个简单类型或是一个复合类型。复合类型由多个部分组成,每个部分也是一个简单类型或复合类型。SOAP规范只定义了有限的编码规则,当用户需要使用自己的数据类型时,可以使用自定义的编码规则,按需求扩展该基本定义。(3)SOAPRPC表示(RPCRepresentation):定义了远程过程调用和应答的协定。RPC的调用和响应都在SOAPBody元素中传送。在RPC中使用SOAP时,需要绑定一种协议,可以使用各种网络协议,如哪、SMTP、兀’P等来实现基于SOAP的RPC,一般使用Irlw来作为SOAP协议绑定。sOAP通过协议绑定来传送目标对象的uRI,硕士论文验证码识别及其WebService的实现研究在HTTP中的请求UlU就是需要调用的目标SOAP节点的Ulu。(4)SOAP绑定(Binding):定义了一个使用底层传输协议来完成在节点间交换SOAP信封的约定。目前SOAP协议中定义了与HTTP的绑定.利用HTTP来传送SOAP消息,主要是利用m耶的请求/响应消息模型,将SOAP请求的参数放在HTTP请求里,将SOAP响应的参数放在HTTP响应里。当需要将SOAP消息体包含在HTFP消息中时,m卯应用程序必须指明使用text/xml作为媒体类型。虽然这四个部分是是作为SOAP的不同部分作为一个整体定义的,但他们在功能上相交,彼此。特别是信封和编码规则被定义在不同的Ⅺ帆命名空间中,这样有利于通过模块化使得定义和实现更加简单。SOAP基于XML,本身并没有定义任何编程模型和应用语义,只是定义了一个消息结构的框架,其具有良好的可扩展性。SOAP消息结构框架扩展的一个特别类型是MEP(MessageExchangePattem消息交换模式)。SOAPMEP是一个在SOAP节点问信息交换模式的样板,以提高对上层应用的有力支持。SOAP的设计目标是简单性和可扩展性,所以SOAP是一个轻型协议,一些传统消息系统或分布式对象系统中的某些性质将不是SOAP规范的一部分。比如SOAP没有定义有关分布式垃圾收集、成批传送消息、对象引用和对象激活等方面的内容。Service描述语言骼DLLanguage)是一个描述W曲Service功能的5.3.3WebWSDLI泓碉(WebServiceDescription协议,是由微软和mM联合开发的。WebService是一种部署在Web上的对象,我们需要对该对象的调用,通信以某种结构化的方式(即Ⅺ帆)进行描述,这也是WebService即时装配的基本保证。WSDL正是这样一种描述语言,它定义了一套基于XML的语法,用来将WebService描述为能够进行消息交换的服务访问点的集合,从而满足了这种应用需求。WSDL文档将WebService定义为服务访问点或端口的集合。WebService的WSDL文档把服务访问点和消息的抽象定义与具体的服务部署和数据格式的绑定分离开来,因此可以对抽象定义进行重用。WSDL文档中的消息是指对数据的抽象描述,而端口类型是指操作的抽象集合,端口类型使用的具体协议和数据格式规范构成了一个绑定,将蝴闯地址与可再次使用的绑定相关联来定义一个端口,而端口的集合则定45硕士论文验证码识别及其WebService的实现研究义为服务。在一个WSDL文档中,定义WebSeⅣi∞一般使用下列元素:●Types(类型)数据类型定义容器,提供了用于描述交换消息的数据类型定义,它使用某种类型系统(一般使用XMLSchema中的类型,即xSD)。●Message(消息)消息数据结构的抽象类型化定义,消息包括多个逻辑部分,每一部分与菜种类型系统中的一个定义相关。消息使用Types所定义的类型来定义整个消息的数据结构。●Operation(操作)对服务中所支持的操作的抽象描述。一般来说,单个Operation描述了一个访问入口的请求/响应消息对。·PonType(端口类型)某个访问入口点类型所支持的操作的抽象集合,这些操作可以由一个或多个服务访问点来支持,每个操作指向一个输入消息和多个输出消息。●Binding(绑定)特定端口类型的具体协议和数据格式规范的绑定,它是由端口类型定义的操作和消息指定具体的协议和数据格式规范的结合。●Port(端口)协议,数据格式绑定与具体W曲访问地址组合的单个服务访问点,它指出了用于绑定的地址,因此定义了单个通信终端。●Service(服务)相关服务访问点的集合,它集成了一组相关的端口。Types、Message、Operation和PortType描述了调用WebService的抽象定义,它们与具体WebService部署细节无关,这些抽象定义是可以重用的,它相当于IDL描述的对象接口标准。但是这些抽象定义的对象到底是用哪种语言实现,遵从什么平台的细节规范,被部署在什么机器上则是由元素Binding、Port.Service所描述的。Service描述的是服务所提供的所有访问入口的部署细节.~个Service可包含多个服务访问入12lPort(Port描述的是一个服务访问入口的部署细节,Port=URL+Binding)。调用模式则使用Binding结构来表示,Binding定义了某个PortTypc与某一种具体的网络传输协议或西欧爱惜传输协议的绑定(Binding=PortTypc+具体传输协议和数据格式规范)。在这一层中,描述的内容就与具体服务的部署相关了。+WSDL的完全继承以)m几为基础的开放设计理念,它允许通过扩展使用其它的类型定义语言,允许使用多种传输协议和消息格式(SOAP徂TrP、HnP.G矾许OST以及M附匝等),同时也应用了软件复用概念,把抽象定义层和具体部署层分离开来,增加了抽象定义层的复用性。硕士论文验证码识别及其WebService的实现研究5.3.4统一描述、发现和集成协议UDDIUDDID¨‘日(UniversalIntegratiorhUDDI)是一套基于Description,DiscoveryandWeb的分布式的WebService信息注册中心的实现标准规范,同时也包含一组访问协议的实现标准,使得企业能将自身的WebService注册上去,并让别的企业能够发现并访问这些WebService。简单地说,UDDI的工作方式和邮局公开发行的电话黄页类似,它可以把特定的企业信息和WebService在Intemet上广而告之,并且提供具体的联系地址和方式。UDDI提供了一套操作方法来访问访问分布式的UDDI商业注册中心(UDDIRegistry)。公共的UDDI注册中心面向全球企业,不同站点之间采用P2P(对等网络)通信。也就是说,从其中任何一个站点都可以访问整个公共UDDI注册中心。UDDI商业注册中心维护了描述企业及该企业提供的WebService的全球目录,其中的信息描述格式遵循通用的XML格式。UDDI商业注册中心是UDDI的核心组件,该注册中心使用一个XML文档来描述企业及其提供的WebService。UDDI商业注册中心所提供的信息从概念上来说分为三个部分:白页(whitepage)表示与企业有关的基本信息,包括企业名称、经营范围、联系地址、企业标识等;黄页(yellowpage)依据标准分类法区分不同的行业类别,使企业能够在更大的范围(如地域范围)内查找已经在注册中心注册的企业或WebService;而绿页(greenpage)则包括企业所提供的WebService的技术信息,其形式可能是一些指向文件或是URL的指针,而这些文件或URL是服务发现机制的必要组成部分。企业所有的UDDI商业注册信息都存储在某一个UDDI商业注册中心(比如mM的UDDI商业注册中心)中。UDDI的工作原理可以参见图5.3.2;硕士论文验证码识别及其Websc州∞的实现研究图5.3.2UDDI工作原理上图说明了企业如何向UDDI注册中心送入WebService数据,顾客(企业)又如何能发现和使用这些信息。UDDI的具体工作步骤如下:1)软件公司、标准化组织和程序员定义了企业如何在UDDI中注册的规则后,开始向UDDI注册中心发布这些规则的描述信息。这些规则被称为技术模型(tModet)。2)企业向UDDI注册中心注册关于该企业及其提供的WebService的描述。3)UDDI注册中心会给每个实体(tlViodel以及企业)指定一个在相关程序中唯一的标识符(即通用唯一标识符UUID),从而可以随时了解所有这些实体的当前情况。通用唯一标识符必须是唯一的,并且在一个UDDI注册中心中保持不变,这些UUID是一串有着固定格式的十六进制的随机字符(例如C288FEl3—170F-413n8A5B.5004DBSE5BB2)。UUID可以用来引用与之相关联的实体。在一个注册中心中创建的I兀Ⅲ)只在该注册中心的上下文中有效。4)电子交易场所和搜索引擎等其他类型的客户和商务应用程序使用UDDI注册中心来发现它们感兴趣的w曲Service。5)其它的企业就可以调用这些服务,方便、迅速地进行商务应用程序的动态集成.5.4WebService的优点(1)良好的封装性:WebService既然是一种部署在Web上的对象,自然具备对象的良好封装性,而对硕士论文验证码识别及其Webse州∞的实现研究于使用者而言,仅能看到该对象提供的功能列表。(2)松散耦合:当一个WebService的内部实现发生变更的时候,调用者是不会感觉到的。对于调用者来说,只要WebService的调用接口(界面)不变,WebService实现的任何变更对他们来说都是透明的,甚至当w曲Service的实现平台从J2EE迁移到了.NET或者是任意两个平台迁移,用户都可以对此一无所知。(3)使用标准协议规范:作为WebService,其所有公共的协约完全需要使用开放的标准协议进行描述、传输和交换。同时,相比一般对象而言,其界面调用更加规范化,更易于机器理解。(4)高度可集成能力:由于WebService采取简单的、易理解的标准协议作为组件界面描述,所以完全屏蔽了不同软件平台的差异,无论是CORBA、DCOM还是EJB都可以通过这一种标准的协议进行互操作,实现了在当前环境下高度的集成性。(5)跨越防火墙的通信:当应用程序的用户很多,并且分布在世界各地时,客户端和服务器之间的通信是一个非常棘手的问题。因为客户端和服务器之间通常会有放火墙或代理服务器,在这种情况下如果选择DCOM、COBRA等技术就会变得很复杂,而选择WebService作为中间层组件的话,由于WebService的通信协议SOAP具有穿透防火墙的能力,所以客户端就可以直接调用中间层的业务逻辑。5.5本章小结本章首先介绍了WebSorvie它的定义和WebService的体系结构,以及体系结构中的角色和操作。然后介绍了w曲Service协议堆栈,以及其中WebService的四种关键技术XML、SOAP、WSDL和UDDI;最后综合分析了WebService的优势特点。为下一节验证码识别算法的Web服务的创建以及调用和最终实现做好了理论基础.硕士论文验证码识别及其Websc州∞的实现研究6基于.net平台的Web服务的创建和实现6.1当今的Web服务应用平台随着SOA和w曲服务的兴起,带来了组合式应用(compositeapplication)的开发方式和观念,但是光有先进的技术的理念还不够,还要有能让它顺利开发的工具和能让它可靠运行的环境。SOA与Web服务的实现给平台、中间件、管理、安全、工具厂商提供了广阔的商业机会,最先打响的商业战争,则是在应用平台和中间件等厂商之间展开。合适的应用平台和基础的软件环境,将提供良好的W曲服务应用的开发与执行环境。SOA与Web服务的应用平台,特别是这些平台所提供的各项基础设施服务,会对构建和部署SOA架构产生的很大影响。开发W曲服务的真正挑战在于如何确保这些Web服务能够长久的稳健的执行下去。实际上,稳定性、可用性、可靠性、安全性、可扩展性、响应速度等性能方面的要求,一直是Web应用在设计时就必须考虑的关键技术指标。目前Web服务主要构建在.Net平台和J2EE平台上,.Net阵营以微软为主,J2EE则以mM、Sun、BEA等厂商为主。1..Net平台捧51站在全然不同技术架构的微软,在毅然决然要摆脱掉DNA/COM+之后,走的是自己的.NET路线。微软的成功取决于其将软件工具、服务器以及客户服务战略如何有机地融为一体。从Web服务概念的提出开始,微软所有基于.Net的产品都能够提供相应的Web服务,并随着客户体系架构的变化而改变。.Net代表了微软的一整套战略,为分布在互联网上的信息、人、系统、各种设备提供无缝连接和横向沟通的一套软件产品(如VS.NET、Visi02003、Oftice)、技术(如WebServices)、服务器(如Vc'mdowsServer2003)或各种.Net服务(如.NetPassport)。本文中的全部应用均构架在.N前平台上,使用VisualStudio.NET进行开发,因此后面将详细介绍开发的具体步骤和实现过程。2.J2EB平台I’wJ2EE是开发和部署企业级应用的平台,拥有mM、Sun等老牌企业的支持。Java代表着开放(Open)、可移植性(Portable)的应用程序。J2EE是为企业级应用设计的,具有企业级需求的稳定性、可靠性、跨平台能力。而作为传统的分布式应用平台,J2EE当然也可以成为开发和部署Web服务的平台。2003年11月发布的J2EEIA的设计目标硕士论文验证码识别及其Websc耐∞的实现研究就是改进对wrcb服务的支持,强化了使用XML由Java进行应用程序远程调用的“JAX-RPC”(基于)n儿进行远程调用的JavaAPI)、支持使用SOAP协议的“弘ⅨR(对)Q儿信息进行解析农转换的JavaAPI)”等便于使用Web服务的API,另外EJB2.1里也增加了许多针对Web服务设计的特性.6.2Web服务的创建和实现Web服务环境配置6.2.1Snldb.NET工具进行开发的,但是光、,i飘lal姒io.NET雨言也可以通过ATLServer采l前,需要搭建一个创建Web服务的环境,下面就先介绍一下Web服务实现的环境配置。执行Web应用程序需要宿主Web服务器的支持。在W'mdows平台中,w曲服务器的角色由IIs(可执行文件inetinfo.exe)担当。但是要注意的是,微软为了更好地预防恶意用户和攻击者的攻击,在默认的情况下,WindowsServer2003家族的成员上没有创建Web服务的方式多种多样,前面讲到本文是使用微软开发的VisualASP.NET来开发Web服务。本文就是使用ASENET来开发Web服务[60-631,在具体开发安装IIS。因此,在开发w曲服务之前需要首先安装IIS,否则通过VisualStudio.NET开发的w曲服务无法定位到w曲服务器上被其他用户发现。安装IIS的方法是:放入系统光盘,在“控制面板”》“添加或删除程序”》“添加/删除Windows组件”中将其选中,然后进行安装。有了Web服务器,接下来只要搭建一个开发平台,这里使用Visual为开发工具。安装Vs.NET一共有4个步骤:Studio.NET作(1)安装程序会自动检测操作系统中是否具备安装VS.NET的必需组件(第一次安装的时候会提示安装IIs和FrontPage服务器扩展)。(2)安装VS.NET功能组件,其中包括语言工具、企业版开发工具、服务器组件的安装。(3)安装MSDNLibrary,用于开发时候函数、类的查询和解释。(4)检查最新的Servic圮Release,以确保Visual的ASP.NETw曲服务了。6.2.2验证码识别算法Web服务的创建Studio.NET的最佳功能。此时,已经具备了Web服务器和w曲服务开发工具,接下来就可以开始编写自己首先打开VS.NET,新建一个ASP.NETWeb服务工程。在工程建立的同时,VS.NET会自动在IIS中的信息发布文件夹中创建一个同名的虚拟目录。用于使Web服务通过5l硕士论文验证码识别及其Websa州∞的实现研究HS服务器来被动态发现。创建成功后,VS.NET将打开许多文件,其中有一个名为Servicel.a锄x的文件,Web服务实际代码的编写即是在该文件中进行的。此时默认的Web服务类的名字也是Servicel.实际工作中,为了区别不同的服务,最好选一个与服务相关的名字来进行区分,这里改为了CodeIdentify。接下来就可以在CodeIdentify.Rsmx文档中创建自己的Web服务,本文只研究验证码识别算法的服务,因此只设立一个名为“CodeldentifyServices'’的Web服务。创建该服务的声明为:publicclassCodelndentifyServices:System,Web.Services.WebService{)在声明该类时,需要让它继承来自系统的基类“System.Web.Services.WebService",它的作用就是提供对公共ASENET对象的直接访问。这里在服务类的前面可以添加WebService属性,用来描述有关该Web服务的附加信息,这里包括服务的描述信息、为Web服务取名(默认情况为服务类的名)、修改名穗空阊。[WebService(Description=”这是一个提供验证码识别算法的w曲服务”】这里通过对Web服务的一个阐述,可以让外部调用者对该服务的用途有一个大致的了解和认识。接下来的工作就是在Web服务类中编写该类的方法,实际工作中本文最后是把验证码识别的算法封装在一个方法中。在编写方法时,对于每个希望用作Web服务的方法,首先要在该方法的申明前添加[WebMethod]属性,使该方法成为一个Web方法,WebMemod继承于类System.Web.Services.WebScrviceAttribute。它的作用是使远程客户端可以调用该方法。具体的做法为:[WebMethod(Description=”这是~个验证码识别算法,需要传输的参数int[1data为图像数据,intwidth为图像宽度,il吐height为图像高度,返回识别后的结果”)】publicstringIdenfify(intHdata,intwidth,intheight){'从上述代码可以看出,这里创建了一个验证码识别方法,方法中定义了3个需要导入的变量,分别为验证码图像数据、图像宽度和高度,验证码识别的算法就编写在该方法中,最后该方法将识鄹的结果以string字符串的形式返回。为了调用者使用的硕士论文验证码识别及其WebService的实现研究方便,可以像上面的代码中~样在wbbMethod属性的De∞ription属性项中加入描述该方法的作用和用法的信息。下面就可以将第二弱第四章有关验证码识鄹的算法程序编写在IndcntifyWeb方法中,这里要说明的是前面为了方便地得到算法的结果图和统计算法的比较情况,有关验证码识别的算法程序都是在VisualStudio6.0中用C¨语言编写实现的,而在ASRNETWeb服务的编写中需要用c撑来进行编写。c岸f阱删是从c和c抖语言演化而来的,是Microsoft专门为使用.NET平台而创建的,它是一种强大的语言。在C.卧中能完成的任务在础中也铯完成。因此这里要傲的就是将前面C++编写的程序该写成C撑的形式,虽然C撑由c++演化过来,但是在具体的程序编写中还是有区别的。例如数组的声明的区别,在c桴中指针只能在标记为“不安全”的代码中使用等等。实际工作中,由于在ASP.NETWeb服务的程序编写中,无法调用System.Drawing类。而该类中Bitmap对象的方法可以很容易的提取和设置图像中的像素值:如GetPixel(i,j)0-I获取图像上任意一点像素的颜色值,SetPixel(i,j,c)可以设置图像上任意一点的像素的颜色值;Color对象的方法可以很方便的分解和合成像素点的RGB值;如Color.R、Color.G、Color.B来分别获取RGB的值,Color.FromAxgb(r,g,b)可以用RGB的值来合成一个像素的颜色值。鉴q‘Systm.Drawing类中对图像操作的简单性,这里对于彩色图的灰度化操作不放在w曲服务里,而是放在调用该服务的外面。这样做的好处是一方面可以简化程序,另一方面可以减少w曲服务中的传输参数。因此这里调用Web服务时,传输给Web服务方法的参数其实就是灰度化后的图像像素值。当验证码识别算法的Web方法编写结束后,点击“生成解决方案”,编译成功后就可以在Codeldentify.asmx上单击右键,从右键菜单中选择“在浏览器中查看”,这时VS.NET将构建XMLWeb服务,产生相关的.disco文件和.wsdl文件,并按照URL地址“http://localhom/WebService/Codcldentify.asmx”打开该W曲服务的测试页面。测试页面如图6.2.1所示:硕士论文验证玛识别及其WebService的实现研究图6.2,1Web服务“CodeIdentifyServices”的测试页面从上图中可以看到,测试页中有一道横线,横线以上是此Web服务的名称和它所提供的两个Web方法的测试链接列表。这里可以看出本文编写的Web服务提供了两个Weber法,一个是验证码识别算法,另一个是图像文件的上传的Web方法。其次在Web服务名下有描述该服务用途的服务说明,在Web方法下有描述该方法的作用和使用说明。这样就可以使得该w如服务更易读,使其他使用者可以很明了的调用这些服务。接下来在这个UI也后输入“7wsdl”后,就可以打开第五章WebService关键技术之一的wSDL文档,如图6.2。2所示:硕士论文验证码识别及其WebService的实现研究图6.2.2“CodeldentifyServices”Web服务的WSDL文档从图6.2.2可以看出,WSDL文档是基于XML的描述Web服务的语言。文档中<messagename>元素为方法名加上SoapIn,用于调用消息;方法名加上SoapOut,用于结果消息。这么做的原因是WebService是通过SOAP来传递消息的。(portType>用来添加SOAP的服务名称,这里为Codeldentify’ServicesSoap,它的下一级的<operation>中对应了服务中的每一种方法,这里是UploadFile和Idc血匆,这里就可以通过CodeIdentifyServicesSoap把每一种操作绑定到包含在<bin‘ling>元素中的协议信息。<service.>包含了服务的端口,端口中提供了地址信怠,这里为Web服务的访问URL“http://localhost/WebServic州Codeldentify.asmx”。这里由于图片的大小关系,没有展开WSDL文档里的所有项,只是列出了一些关键的属性项,没有展开的项中还包括了SOAP传输样式的说明等等,这里就不一一展开说明了。有了验证码识别算法的Web服务后,接下来就可以开始创建Web服务的使用者,来实现w曲服务的调用。硕士论文验证码识别及其WebService的实现研究6.2.3验证码识别算法Web服务的实现上一章节具体介绍了如何在VS.NET平台里编写ASP.NETWeb服务,这一章节主要介绍Web服务的使用者是如何调用验证码识别算法的Web服务,以及分析VS.NET中实现Web调用的机制。首先,打开vS.NET创建一个使用Web服务的客户端,本文是建立了一个名为“CodeIdentifyClient”的VisualC撑ASP.NETW曲应用程序。其次,就要开始编写L盏+Web应用程序代码,在编写代码之前,需要对前面编写的W曲服务进行调用,用于应用程序开发时使用。在前面介绍过,查询和注册Web服务严格来说是通过UDDI实现的,但是VS.NET为了方便用户对于WebService的开发和测试,提供了一种更为简便的搜寻和调用Web服务的机制。这种机制使得用户无需通过UDDI正式注册,也可以将Web服务更快的向其他开发者公开。这种Web服务发现机制的具体原理是:微软开发了一种DISCO协议,它允许用户查询在特定服务器上运行的Web服务。DISCO支持浏览模式,因此它提供了一种较为自由的、浏览器风格的发现机制.在前面创建Web服务项目时,VS.NET会自动为开发入员御建与项目同名的DISCO文件,代码如下;<Txmlversion=”1.0”encoding=”utf-8”?><discoveryxmLrIs:xsd-一”http://www.w3.org/200l/XMLSchema"xmh3s:xsi=”http'J/www.w3.org/200I/XMLSchema-instance”Ⅺ∞lns=”http:/Ischemas.xmlsoap.org/disco/’-><contractRefref=-'’http://locathost/WebService/Codekientify.asmx7wsdl”docRef=-”http://locMhost/WebService/CodeIdentify.asmx”xmlnsz”ht弛p://schemas.xmlsoap.org/disco/scl/”》<soapaddress=”http-.//localhost/WebService/Codeldentify.asmx"xmlns:ql;”hap-2/tmpuri.oII旷binding=”ql:CodeldentifyServicesSoap”蜘蚰InsI.’http://schcmas.xmlsoap.org/disco/soap/”,></discovery>其中<contractRefb元素是一个对WSDL的链接,re瞩性包含了WSDL计划文件的位置信息,docRe瞩性定义了相关页面的位置。当由VsNET自动产生DISCO文件时,只为.disco文件创建一个<contractRef>元素,而DISCO标准允许人工创建多个<co曲a酬髓p元素,这样一个disco文件可以指向多个Web服务。这里的<soap>元素复制了wsDL计划中的绑定信息部分,这样做允许Web服务客户使用较少的信息来定位服务。因此,w曲服务的客户机不必在每次需要找到相关信息时都加载WSDL计划.它使用.disco文件中的摘要信息就可以标识特定wSDL文件的内容。硕士论文验证码识别及其WebService的实现研究具体使用时是在w曲应用程序的工程项目中,点击添加WebS[用,此时弹出一个可以查找W曲服务的对话框,如图6.2.3。图6.2.3查找服务对话框这里如果知道Web服务的调用地址,可以将地址输入“URL”文本框,此时VS.NET就会通过查询DISCO文件来定位WSDL文件,从而列出可用的w曲服务和发现文档。这里点击“本地计算机上的Web服务”,VS.NET会搜索本地所有发布的Web服务,并且在左框中列举出来,如图6.2.4。图6.2.4本地服务列表此时点击所需的w曲服务后,就会打开相应的.asmx文件,这时就可以查看该Web57硕士论文验证玛识别及其WebService的实现研究服务提供的方法,并且点击“添加引用”对该Web服务进行调用,调用的默认引用名为。loealhost”,本文中改为“CodeIdentifyProxy”,在调用的时候,就会为该Web服务产生一个同名的代理类。因为在WebService技术里面,调用w曲服务时,应用程序并非对实际的Web服务进行操作,而是通过代理对象与之进行交互,如图6.2.5。Web服务使用者者图6.2.5服务使用者通过代理对象与服务提供者交互有了W曲服务的代理后,下面就可以开始对Web应用程序的开发了,这里将在视图设计“WebForm”中添加一些组件,用于网页上对于验证码识别的界面设计。设计用到的相关组件有:(1)“FileField”组件:用于在本地选取要识别的验证码图片。(2)“Image”组件:用于在网页中提供验证码图片显示的区域。(3)。TextBox”文本框;用于显示验证码字符识别的结果。(4)两个“Button”按钮:一个是“显示验证码图片”按钮,用于上传验证码图片并且在网页中将图片显示;一个是“验证码识别”按钮,用于调用验证码识别服务,对左边显示的验证码图片进行识别。具体设计的界面如图6.2.6所示:58硕士论文验证码识别及其WebScfvi∞的实现研究图6.2.6验证码识别界面<l>在“显示验证码图片”按钮的程序代码设计里,首先要定义一个System.Web.HttpFilcCollection的对象oFiles,用于对上传文件的访问和组织。然后通过下式;oFilcs=System.Web.HttpCont既t.Cunent.Request.Fil鹤:就可以将准备上传的文件作为一个集合放入oFiles中.然后创建一个文件流System.10.Strean耐象盘,让囱=(System.IO.Strea《n)oFilcs[O].InputSueam;使岛指向将要上传文件的内容,再通过fs.Rea,I(b,o’oFiles[O].ContentIxnsth);将文件内容存/X.byte数组b中。接下来就可以调用上传文件的UploadFileWeb方法,将验证码图片上传到服务器,用于后厦的验证码图片字符的识别,这里Web方法在程序中的使用将在下面验证码识别算法w.cb服务的使用中讲到。(2)在“验证码识别”按钮的程序代码设计中,首先判断待识别的验证码是否是59硕士论文验证码识别及其Webscm∞的实现研究彩色bmp图,是的话在这里就先做灰度化(先做灰度化的原因在前面已经分析过),将灰度化后的图像信息存入数组t中,然后调用前面编写的IdentifyWeb力f法,来对该验证码进行字符识别。在调用W曲方法前,这里首先要建立一个被调用的Web服务的对象,定义的格式为;w曲引用名(代理名).服务名对象名。本文中即为;CodeIdentifyProxy.CodeldentifyServiceso;然后初始化这个对象o=栅CodeIdentifyProxy.CodeIdentifyServicesO;下面就可以通过:对象名.方法来调用自己所写的Web方法。这里在调用编写的验证码识别方法时,只需提供图像灰度值数据、图像高度以及图像宽度,就可以使用Web方法O.IdI剐6鸭、析dlh,hdght)来获取识别结果的字符串,将该识别结果在Textbox文本框中显示。从上面Webf匣用程序的编写来看,当有了相关技术的Web服务后,想自己实现一个功能是一件很方便的事情,大量的代码都由W曲服务提供支持,w曲应用程序的实现端仅仅是需要对W曲服务的调用而已。因此如果能够在网络中实现w曲服务资源的共享化,单单对于程序员来说就将会得到很大的方便,因为在做某项工程的时候,程序员完全可以搜索相关有用的Web服务来嵌入自己的程序,解决自己薄弱的环节,节省开发时间,也可以将工程分成多个Web服务来完成,实现分布式运作环境。6.2.4实验结果本实验是在教研室局域网中通过三台电脑来模拟进行的,一台电脑作为w曲服务提供者,编写Web服务在该主机上进行发布;一台电脑作为Web服务使用者,发现调用Web服务来实现自己的功能,同时也作为一个Web服务器发布提供验证码识别功能的网页;最后一台电脑作为一个客户端,可以通过访问网页来上传验证码进行识别。实验环境如图6.2.7:硕士论文验证码识别及其Webse州∞的实现研究文件发现,绑务客户机服务调用者图6.2.7实验框架图此时在客户端输入网址“http://192.168.0.32/CodeIdentifyClient/WebForm.aspx”就可以打开提供验证码识别功能的网页,从而在Internet网络环境中进行验证码的识别操作,识别的实验结果如图6.2.8:图6.2.8验证码识别实验结果61硕士论文验证码识别及其WebService的实现研究6.3本章小结本章首先介绍了当今两大Web服务应用平台,并引出了本文选择架构在.NET平台上运用VisualStudio.NETT具进行Web服务的实现。接着就先描述了Web服务的环境配置,然后具体分析TWeb服务在.NET平台下的创建和实现过程,最后给出了本文对验证码识别在网络环境中的实验结果。硕士论文验证码识别及箕Webse-nric2的实现研究7结束语7.I本文的工作本文首先针对验证码技术在网络应用中给人们带来的不便,对验证码自动识别技术进行了研究。这部分研究分成了三个部分:(1)对原始的验证码图片进行预处理操作,其中包括将彩色图转化为灰度图;对图片进行二值化操作,使字符和背景分开;对图像进行平滑操作,去除二值化图像中的噪声点和线。(2)对进行预处理后的验证码图片进行字符分割处理,其中先通过边缘轮廓跟踪的方法,根据跟踪后封闭区域面积的大小将孤立小面积噪声区域去除,然后通过对直方图的分割,将贴在一起的字符分割开来,最后通过改变投影顺序的传统投影法,将每个字符分割出来。(3)对分割出来的字符逐个进行字符识别,这里用到了基于“日”字投影算法的字符识别,它主要根据十个数字的笔画结构特征,通过光源在“日”字各边框的投影效果来制定投影特征模板,并通过实验发现验证码图片中字符不规则等特殊情况给模板带来的非唯一性的问题,提出了一种二次再识别的算法改进,实现了对本文验证码的高效识别。然后考虑到WebService这一性的Web计算新技术给程序开发者带来的便易性,对WebService这~新兴思想理念进行了研究。文章首先对WebService的体系结构进行了研究,然后分析了包括XML、SOAP、WSDL、UDDI在内的Web核心技术。最后将前面的工作和WebService结合起来,在.NET平台上运用VisualStudio.NET工具将验证码识别技术编写为Web服务,接着在IISWeb服务器上通过DISCO文件发现该服务并对该服务进行调用,最后编写ASP程序在局域网环境中实Service现验证码自动识别的功能。其中在对验证码识别服务的创建和实现开发过程中,结合了WebService的关键技术,研究分析了VS.NET中创建实现Web服务功能的原理。7.2迸一步的工作鉴于本文是结合了验证码识别技术幂IWebService技术进行的研究,因此下一步的研究工作也可以从下面两个部分来展开。(1)验证码识别技术:由于时间和个人能力有限,本文的验证码只涉及到数字验证码的识别技术,并且为了结合WebServicett术的实验,这里的验证码识别算法注重63额士论文验证码识别及其WebService的实现研究的是识别的效率和算法的快速,对验证码图片的识别比较针对,即对数字扭曲或变形严重的情况识别较差。而如今随着验证码识别技术的发展,验证码图片技术也在不断发展,验证码中不但出现了字母字符,甚至还出现的汉字,因此下面有必要对OCR技术进行更深入的研究来实现对验证码识别的广泛性。(2)WebServcie技术:WebService是一门不断发展的新技术,它涉及的内容很多,发展也很快,本文是在现有的实验环境下,鉴于Microsoft公司开发的VS.NET对WebService技术的良好支持,通过编写ASP.NETWeb服务,在局域网中来实现该服务。下一步的工作即是如何使自己刨建的Web服务具有企业级的特征(如事务处理、安全性等方面)。磺士论文验证码识别及其Websc州∞的实现研究致谢首先要感谢我的导师孙怀江研究员。在603教研室学习和生活的两年的时间里,导师渊博的知识、敏锐深刻的洞察力、锐意进取的开拓精神和严谨的治学作风让我受益菲浅。同时要感谢夏德深教授为我们宦Ⅱ造了良好的学习环境和大量实践的机会,使我一方面顺利地完成硕士阶段的学业和科研任务,同时个人综合能力也有了很大的发展。感谢朱近、顾一禾、叶庆生等老师在我实际研究工作中给予的关心和帮助,使我得以顺利完成研究工作。在研究生生活即将结束之际,谨对上述导师们多年的辛勤培养和关心表示衷心的感谢,并向他们致以深深的敬意。感谢本教研室陈强、朱立新、刘复昌、汤杨等博士在理论学术研究工作中所给予的大量指导和帮助。感谢彭晔、王海兵、王庆、邱军、陈富忠、孙曼利、李双梅、林文娅、肖蓉等同学在项目合作上的默契配合和无私帮助,和他们在学术上的交流、项目中的合作以及实际问题上的讨论使我能够集思广益、受益匪浅。最后,我要感谢我的父母。他们一直给我精神上的鼓励、物质上的支持、学习上的帮助和督促,用言辞无法表达我对他们的感激之馈。他仃】的关怀和鼓励,是我前进的最大动力。硕士论文验证码识别及其WebService的实现研究参考文献l,http://blog.csdn.net/madcettest/archive/2006/05/25/'/55178.aspx.2.http".//www.google365.cam/.3.ht:tp://www.ibm.com/developerworks/cn/views/webservic2s/mtorialsjsp?cv_doc_id=84910.4.NtisJ.NiLmon.Ar'dficialIntelligence:ANewSynthesis【hq.北京:机械工业出版社,2000.5.MoriS.SuenCY,YmlmmotoK,HistoricalreviewofOCRresearchanddevelopment.ProceedingsofIEEE,1992.6.张宏林.VisualC+十数字图像模式识别技术及工程实践.北京:人民邮电出版社,2002.7.CasflcmanK丸Di雪韬lImageProcess'rag娴,Prentice-HallInternafional,lmc,1998.8.沈庭芝,方子文.数字图像处理及模式识别Ⅱ川.北京理工大学出版社,1998.9.夏德深.傅德胜.现代图像处理技术与应用,东南大学出版社,1997.10.杨淑莹编著.Vc.H图像处理程序设计咖.北京:清华大学出版社,2003.11.11.Tie2002.QiChen,ViLu.Colorimagescgmemation-aninnovativeapproach[J].PatternRecognition。12.Trier,Taxt,Evaluationofbinarizafionme出odsfordocumentlnformadcs,UniversityofOslo,Norway.1994.13.BlayvasL,Bmcks=teinA,Kimme]1Limages【M】.Tech.Rcp.tX'par血entofEfficientComputationofAdaptiven睇shoIdSurfacesforonImageBirmrization.In:Proceedingsofthe2001IEEEComputerSocietyConferenceV'miouandPatternRecognitioo.2001.14.YeXiang-yun.FastbinarizafionaIogofithmComputerfordocumentimagc四.JournalofInfraredandMillimeterWaves,1997,16(5):344-350.15.OtsuN.Athresholdselecaionmethod咖gray-levelhistograms讲.IEEETransaOiom蛳Systems,Man,andCybernetics,1979,9(1):62~66.16.龙均宇,金连文.一种基于全局均值和局部方差的图像二值化方法.计算机工程.2004.1,30C2):70-72.17.QivindD,TorfmnT卫valuationofbinarizationmethodsfordocumentimages明.IEEETramPAMLt995.17(3):312-315.19.SahooPICWongAKCAsurveyofthresholdingtechniquescomputerImageProcessing.1998,11:233-260.vision们.Graphicsand19.高永英,张利,吴国威.一种基于灰度期望值的图像二值化算法田.中国图像图形学报.1999,11.20.夏德深,陈强,朱立新.结合Canny算子的图像二值化.计算机辅助设计与图形学学报.2∞5.6,17(6):1302-1306.酯硕士论文验证码识别及其WebScI"ViCC的实现研究21.22.Proc.尹Int't.㈨AnalysisandRecognition,193.57—780.杨枝灵。王开等编著.VicualcH数字图像获取、处理及实践应用.北京:人民邮电出版社.2003.StrathyNW,SuanCY,KrzyzakA."SegmentationofhandwrittendigitsusingCOiltourfeatures".23.WestallJM,NmtsimhaMS."Vertexdirectedsegmentationofhandwrittennumerals"PatternRecognition,1993,26(1∞:1473-1486.Luz,chiZ’SiuWC,etc.‘‘Abackgrotmd-thioning-basedapproachforseparatingandRecogn逝connectedhandwrittendigitsUings',PattemRecogni虹on’1999,32((6):921---933.JainAKYuB.AutomaficTextLocationinImagesandVideoFrames[J].PatternRecognition.1998,31(121:2055-207.26.27.28.29.30.沈瑛,范俊波.身份证识别的文字定位算法研究.计算机应用与软件.2004.3,21(3):80-82陈黎,黄心汉等.基于聚类分析的牌照字符分割方法.计算机工程与应用.2002,6:221~222.牛欣,沈兰荪.基于特征的车辆牌照定位算法,交通与计算机.2000(1):31~33.张云刚,张长水利用Hough变幻和先验知识的车牌字符分割算法.计算机学报.2004(i)RichardGCaseyandEricLecolinet."ASurveyofMethodsandStrategicsinCharacterSegmentation'’,IEEETramonPaRernAnalysbandMachineIntelligence,V01.18,No.7山峨1998.31.Secong,Wlmnlee.‘‘AnewMethodologyforGray,ScaleCharacterSegmentationandRecognition"。IEEETramonPatternAnalysisandMachineIntelligence,V01.18,No.10,1996.32.33.34.35.罗希平.图像分割方法综述.模式识别与人工智能,1999.9.陈书海,傅录样编著.实用数字图像处理.科学出版杜.2005.余腊生。沈德耀.扫描线种子填充算法的改进.计算机工程,2003,29(1【o):30-33.陈元琰,陈洪波.一种基于链队列的种子填充法.广西师范大学学报【自然科学报),2003,210):30-3336.何斌,马天予,王运等.V'mlalc++数字图像处理口哪.北京:人民邮电出版社.2001.37.Neikate,ShinchiroOmachi.Ahandwritingch铷∞ctefrecognitionsystemusingdirectionalelementfeature.1EEETram011PatternAnalysisandMachineIntelligence,1999,21(3):258-26238.TakahashiK,YasudaH,MatsumotoT.AfastHMMflgodthmforonlineh锄1‘h盯№ch锄麓cterrecognition.1CDAR[C].LusAlamitos,CA,1997,369-375.39.OivindDueTtie删KJaithTorfinnTaxt.FeatureExtractionMethodsforCharacterRecogaition-ASurvey.PatternRecognition,1996,290):641-662.ofhandwrittendigitsusingtemplate40.GAADERP.Recognifionandmodelmatching[J].Patternrecognition,1991.41.DingRen,LiY'mgzLANote013砘峭do心DistanceU].MathematicalResewchandExposition,2000,20(4):511-514.42.黄德双著.神经网络模式识别系统理论.北京:电子工业出版社.1996.67硕士论文验证码识别及其WebService的实现研究43.刘宏伟瓤范数字识别“曰”字算法的初步研究.长春大学学报.200644.Aoyama8.M,WeerawaranaSandMaruyamaH.WebServicesEngineering:PromisesandonChallenges[C1.International45.mMWebServicesA舭ctureTeam.WebConferenceSoftwar0Engineering,Orlando,Florida,USA,2002.Servicesarchitectureoverview.http://www-106.ibm.com/developerworks/webservices/library/w-ow/,2000—9—1.46.W3CWorkingDraft.WebServicesArchitecture.http://wwww3.org/'rPd2003/WD-ws-arch-20030808^2003—8-8.47.顾宁,刘家茂,柴晓路等编著.WebServices原理与研发实践.北京:机械工业出版社,2006.I48.W3CRecommendation.ExtensibleMarkupLanguage(XML)10(ThirdEdition).http://www.w3.orgffR/REC-xml/,2004-2-4.49.RogerWotter.Ⅺ'ALWebServicesBasics口以】.MSDN,2001.50.CharlesEGoldfarb.PaulPrescod.XML实用技术.北京:清华大学出版社,1999.51.W3CRecommendation.SOAPVersion1.2.hap://www.w3o妒刚soap‘2003—6—24.52.SOAPMessagewithAttachmentshap://www.w3.org/TR/SOAP-attachments.53.ScottSeely.SOAP:XML跨平台WebService开发技术,北京:机械工业出版社。200254.W3CNote.WebServicesDescr吐ionLanguageOhrSDL)Versinnl,2.http://www.w3.o∥rlVwsdl.55.UsingWSDLinaUDDIRegistry1.05.http://uddi.org/pubs/Wsdlbestpractices·V1.05-Open-20010625.pdf.56.nddi.org,UDDITechnicalWhitePaper.1xif,2000-9-6.57.UDDIv30.http://xml.coberpagesorg/uddi.html.Paper.http://www.uddi,or#puhs/IruUDDI—Technical_White_58.Microsoft.NET与WebService[EB/OL].htcp:,/techn昌onlinechina.net/content.asp?titleid=690.59.JamesKao.Developer’SGuidetoEnterpriseBuildingXML—basedWebServiceswiththeJava2Platform,EdRion(J2EE).200I,6,60.ChrisKnowles,StephenMohr等著.ASP.NETXML高级编程.北京:清华大学出版社,2002.12.61.JosephBustos。KarliWatson著.,NETWeb服务入门经典.北京:清华大学出版社.2003.3.62,KapilApshankarDietrichAyala等著.开放源代码的Web服务高级编程.北京:清华大学出版社,2003.1.63.AdamFreeman,AUenJones,Microsoft,NET)④儿Web服务程序设计.北京:清华大学出版社,2003.64.KarliWatson,MarcoBellinaso等著.c#入门经典.北京:清华大学出版社.2002.4,65.李兰友,王学彬等编著.c#图像处理程序设计实例.北京:国防工业出版社.2003,4.66.李满潮等编著.VisualC#.NET高级编程.北京:清华大学出版社.2002.4.验证码识别及其Web Service的实现研究
作者:
学位授予单位:
姜鹏
南京理工大学
本文链接:http://d.g.wanfangdata.com.cn/Thesis_Y1153287.aspx
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务