首先说说,本人发这篇文章没有任何的恶意,仅供学习交流,在校研三学生,学数字图像处理,搞这些东西完全是好玩,自己跟那些大虾肯定没法比,只是希望大家多拍砖,我才能进步……
先看看这款游戏验证码的原图像: 原始图像的特点是有些字符有粘连,有些没有粘连,还存在扭曲,下面就这些特点一一说明我的识别方式
1.二值化。 原图像是索引图像,转成灰度图像后只有集中颜色,取出黑色像素点为目标区域,其他为背景白色就二值化了,这个没什么难度
这张是二值化切割后的图像 ,图像只存在了黑白两种颜色,为了识别首先要提取模板,就是用来匹配的模板库
2.提取模板。我提取模板的方式很简单,比如因为有些字符没有粘连,比如y字符在这张图像中是没有粘连的,所以我直接提取连通区域来获得模板,当然这样需要大量的样本。这时候大家肯定要说字符存在扭曲,提取的模板有什么用,嘻嘻,下面就会说到怎么用扭曲的模板。
3.提取出来的模板如下:.我只取了一部分,除了i j字符上面有点 比较难搞定外,其他的字母基本都可以用这 个 办法获得模板
下面我就用y字符来做为