靖难之役死了多少人:使用轮廓以及扇形扫描实现qq的验证码识别
来源:百度文库 编辑:九乡新闻网 时间:2024/05/08 12:51:05
【通知】关于近期用户博文被恶意投票的解决办法 bShare分享,迅速提升10倍流量上一篇:JAVA的反射机制
使用轮廓以及扇形扫描实现qq的验证码识别
分类: java 2008-12-02 13:52 2210人阅读 评论(1) 收藏 举报 常用的验证码识别方案对一些复杂的,粘连的字符串基本上是实现不了,最近CrazyCoder在研究腾讯的验证码识别,有一些心得体会,不敢独享,分享出来共大家参考,qq变态的验证码对应于切图和分割相当麻烦,并且干扰线去除也是一些纷繁芜杂,目前也仅仅实现了48%左右的识别率,进行分享下,看如下图片所示我们这里用传统的方法分割识别貌似不可实现 首先做一些基本分析,字符串粘连,干扰线扯淡,我们第一步要想办法把干扰线给去掉 这里采用一种斜线扫描的方案,也就是以对角线为基点,进行逐斜线扫描记录扫描的有色值的点,然后计算等平记录直线附件跳跃的指定阈值的点,可以很轻松的将图2,3,4的干扰线去掉 对于图1,显然斜线扫描并不适合,但是我们可以很清晰的分析出来,图一的线长,粘连点不同,并且形成不了直线区域的连续点,所以我们按照点线长度分析,去除周围无相连的点,基本可以将图1的干扰码去掉 下面重点讲解识别部分 首先我们分析1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz我们首先对验证码进行判断,首先来判断字符区域的直线链接这里有个技巧,我们可以用6个矩阵把验证码描述出来,横向矩阵,纵向矩阵,X斜线矩阵,Y斜线矩阵,以及两个对角线矩阵 然后对矩阵进行分析,首先对坐标(0,0),(x,0),(0,y),(y,0)进行扇形扫描,通过扇形扫描,可以确定出来验证码的位置以及大致的轮廓,我们可以基本上确认是大些字母还是小写字母,qq的验证码的没有0和i的,那么先排除。 这里先来识别 o,d,b,8,9,p,g,q,e这几个字符,对比(0,0)扫描和(0,y)扫描,判断区域闭合并判断扫描基尾,可以识别出来这几个字符 对于字符N,W,M,X,V,K,Z识别使用扇形,因为有旋转角度和字符串粘连的问题,这个判断相对复杂一些,也许是腾讯怕我们肉眼识别麻烦,加了个T字角,这样,我们的麻烦其实只在于N,Z,V这三个上,至于W,M,K可以识别出来。对于N,Z,V倾斜角度的方面,我暂时没有一个好的方案,如果大家有思路,请给我发邮件Heroqst # Gmail.Com,请将@替换为#,或者在CrazyCoder.Cn上留言,大家评论探讨一下 抛去上面的识别结果,下面如正题,我们以轮廓方法来进行识别 首先clear无关点,然后进行图片放大,建议为4倍为宜,然后假设验证码字符为等长,进行圆形扫描,圆心基于交叉线的交叉点开始扫描,并进行相应X轴Y轴的位移,记录圆形扫描的点,同样以矩阵的形式存贮,然后以正方形的居于对圆形扩散,并位移,通过矩阵对比,我们基本上可以确认字符的轮廓。 下面开始轮廓识别,对于这类型的验证码,建立一个特征库基本上不可能,我的识别方法如下, 方法如下,基于以上方案,我们可以很方便的对字符进行等比例扩大,并以适合我们验证码的取样特征库的大小,以圆边正形的(0,0)位置进行倾斜,然后同化为一个等比例的矩形区域,同时对比轮廓的特征库,以特征点取样为概率放大,并对比,如果点线相似度大于80%我们就认为它就是我们要的结果 基于以上方法,可以实现接近50%的识别率,主要是有几个字符旋转的时候可能会同玛字不同,如果大家有什么好的建议,请email给CrazyCoder分享到:
使用轮廓以及扇形扫描实现qq的验证码识别
验证码识别参考,qq验证码识别的一个源代码,现在已不可用,但是可以作为参考 疯狂代码!
用摄像头实现文字扫描识别
使用jquery实现用户名验证
高级验证码识别,如何识别高级的验证码 疯狂代码!
BIOS的理解以及实现
QQ登录验证码常见问题
jsp实现验证码两个例子
验证码识别步骤---完美ESALES系统验证码识别过程(含图片)
用OCR软件进行扫描识别文本的小技巧
登录QQ为何有时需要验证码
漂亮的扇形素材
漂亮的扇形素材
精美的扇形素材
扇形的坎肩 袖肩衣
RocketDock 扇形插件的使用详细介绍_战狼联盟
QQ不为人知的使用
QQ的使用技巧
QQ的使用技巧
UV镜的介绍以及使用
QQ你不要偷偷监视我,扫描我的硬盘
Windows XP系统下使用磁盘扫描的技巧
轮廓的魅力1
轮廓的魅力2