分类: C/C++
2006-11-03 14:15:07
新版特征码举例如下:
初步分析,该特征码使用以下方式增加识别难度:
不单纯的背静色
随机出现的干扰线
随机出现的干扰点
不同字符颜色不一样
字符出现的位置不一样
字符之间的距离随机,还有可能连在一起。
使用了斜体字,即使不连接,也不能采用矩形方式获取其中的一个字符
现在开始针对上面的问题进行处理
我们先看一个操作,使用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