Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3461812
  • 博文数量: 1450
  • 博客积分: 11163
  • 博客等级: 上将
  • 技术积分: 11101
  • 用 户 组: 普通用户
  • 注册时间: 2005-07-25 14:40
文章分类

全部博文(1450)

文章存档

2017年(5)

2014年(2)

2013年(3)

2012年(35)

2011年(39)

2010年(88)

2009年(395)

2008年(382)

2007年(241)

2006年(246)

2005年(14)

分类: C/C++

2006-11-03 14:15:07

这里的方法只是利用<csdn Blog发表评论验证码识别>思路和方法对CSDN新版特征码进行识别,只对一部分特征码有效。不过通过改进算法,应该可以得到很好的效果。

新版特征码举例如下:



初步分析,该特征码使用以下方式增加识别难度:

  1. 不单纯的背静色

  2. 随机出现的干扰线

  3. 随机出现的干扰点

  4. 不同字符颜色不一样

  5. 字符出现的位置不一样

  6. 字符之间的距离随机,还有可能连在一起。

  7. 使用了斜体字,即使不连接,也不能采用矩形方式获取其中的一个字符

现在开始针对上面的问题进行处理

我们先看一个操作,使用Windows自带的画图把保存的特征码以单色位图的方式保存,

现在看变化:变成,这样1、2、4三点的干扰就没意义了。

下面是放大400%下的效果

这步可以称为单色处理,要在程序中实现这步功能的代码如下

现在来处理干扰点了

这里的干扰点比较少,基本又是单独存在的,处理起来就更简单了。判断某个点上下左右8个位置有几个点是黑点就基本上可以判断了。下面是处理后的效果:

代码:

处理到这里,1-4的干扰基本被去除了。

下面开始截取字符(对应第5点),我这里使用了一个并不完美的办法,先获取每个字符的左右范围,再获取这个字符的上下范围,这样字符所在的矩形框就出来了,这里使用的字符太工整了,接下来识别没什么难度了;

范围确定以后的效果如下:

代码限于篇幅,这部分代码就不贴了。

到目前为止,第6-7点还没有被提及,这就是该特征码难度较高的部分。

比如开头的9张样本中,第2、3行的第三张用默认的单色算法完成以后太失真了

其次字符连在一起给分析字符位置(至少是目前的处理方法)带来很大的难度,下面是2个典型的例子:

这些都要优化算法。

本文未完,请关注该地址:http://blog.csdn.net/Qqwwee_Com/archive/2006/02/09/595607.aspx

阅读(788) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~