1)验证码的基本知识及来由
而如今国内大部分的验证码设计者并不得要领,要麼不瞭解图像处理、机器视觉、模式识别、人工智能的基本概念;要麼设计出的验证码连人都难以识别,导致用户 体验度下降。 比如工商银行的WAP手机银行验证码,只有4位,而且验证码的薄弱形同虚设,使用穷举计算机很快就能破解一个六位数字密码的账户。当然,也有设计得比较好 的,比如Yahoo、Google、baidu等。
2)验证码的展望
未来的网络安全验证码,可能更多地使用渐进色层、同级灰度色差,更多曲綫反转、随机字符数量、字符粘连等手段防止机器的识别,但加密与破解总是一对孪生兄弟,不可能消失一方的。我们只是希望通过本文,给编写验证码算法的人员一些建议,使我们的网络更安全,操作也不会因此而繁琐。
算法分析
在验证码处理方面,我们大概要涉及到如下内容:人工智能、模式识别、机器视觉、图像处理。
1) 主要流程:如果我们要从一幅图片中识别出验证码;又或者我们要从一幅图片中检测并识别出一个字符,其步骤可概括如下:
预处理:检测是正确的图像格式,转换到合适的格式,压缩,剪切出ROI,去除噪音,灰度化,转换色彩空间。
检测:找出文字所在的主要区域。
前处理:文字的切割、缩放和扭曲校正。
训练:通过各种模式识别,机器学习算法,来挑选和训练合适数量的训练集。训练的样本并非越多越好。通过学习,泛化能力差的问题可能会出现在这里。
识别:输入待识别的处理后的图片,转换成分类器需要的输入格式,通过输出的类和置信度,来判断大概可能是哪个字母。识别本质上就是分类。
2)关键概念
图像处理:一般指针对数字图像的某种数学处理,比如投影、钝化、锐化、细化、边缘检测、二值化、压缩,以及各种数据变换等等。
二值化:一般图片都是彩色的,按照逼真程度,可能很多级别。为了降低计算复杂度,方便后续的处理,如果在不损失关键信息的情况下,能将图片处理成黑白两种顏色,那就最好不过了。
细化:找出图像的骨架,图像綫条可能是很宽的,通过细化将宽度降为1,某些地方可能大於1。不同的细化算法,可能有不同的差异,比如是否更靠近綫条中间,比如是否保持联通行等。
边缘检测:主要是理解边缘的概念。边缘实际上是图像中图像像素属性变化剧烈的地方,可以通过一个固定的门限值来判断,也可以是自适应的。门限可以是图像全 局的,也可以是局部的。不能说哪个就一定好,不过大部分时候,自适应的局部的门限可能要好点。被分析的可能是顏色,也可能是灰度图像的灰度。
机器视觉:利用计算机来模式实现人的视觉,比如物体检测、定位、识别