论文部分内容阅读
随着互联网的普及,网页成为信息的重要载体。不少网站为了防止用户利用机器人自动注册、登录、恶意发文,相继采用了验证码技术。从信息安全对抗的角度,合理地运用验证码识别技术并实现其自动化,具有很好的应用价值。
本文主要研究验证码自动识别技术,利用Visual C++6.0平台构建一个验证码识别原型系统。文中使用的验证码图像来自某实际论坛,可以利用网络下载工具大量获取样本图像。
为了能把验证码图像的字符前景和背景清晰地划分开,本文分别选用了最佳阈值法和人工设定阈值法对验证码图像进行二值化。实验结果表明:只要选择合适的阈值,使用人工设定阈值法比最佳阈值法效果更佳,基本能够将字符的特征信息从含大量干扰噪声的背景中抽取出来。
验证码图像经过二值化处理后仍然存在少量孤立的噪声点。经实验测试,使用中值滤波器并不适用于在目标狭长的字符图像上去除噪声。因此,本系统采用基于递归算法的去除离散点方法消除噪声。实验结果表明,这种算法可基本消除验证码图像存在的孤立噪声点,同时保留了字符的特征。
针对验证码图像字符间没有粘连、且较为清晰的特点,本系统采用了扫描字符边界的分割方法。这种分割算法能沿着字符边缘切分,实现了较精确的分割。
模式的表示取决于特征的提取方式,选择和提取稳定而又便于表示的特征向量是本系统的核心之一。本文提出了简单的字符特征提取方法:仅选用了一种网格灰度特征;
然后对该特征进行线性鉴别分析(LDA,Linear discriminant analysis)变换,使得字符信息集中到能够最大限度地鉴别且维数尽可能小的特征向量上;最后将特征向量输入最小距离分类器进行判别分类,从而完成字符识别过程。通过提高训练样本数,有效解决了形近字符识别率低的问题,取得了很好的识别效果。本文在Visual C++6.0平台上实现了针对某论坛验证码的实时识别原型系统。通过对该论坛验证码字符样本库的实验,结果表明,本文实现的原型系统取得了99.4%的识别率,并且明显具有程序结构简单、节约存储空间、识别速度快等优点,基本上能够满足对验证码自动识别的要求。