验证码

Posted 蓦然回首的包子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了验证码相关的知识,希望对你有一定的参考价值。

验证码

1. 边缘检测原理

边缘具有方向和幅度两个特征.边缘上像素值的一阶导数较大;二阶导数在边缘处值为零,呈现零交叉。直观说,沿边缘走向,像素值变化比较平缓;而垂直与边缘走向,则像素值变化比较剧烈。

经典的边缘检测方法由于引入了各种形式的微分运算,从而必然引起对噪声的极度敏感,边缘检测的结果常常是把噪声当作边缘点检测出来。


2. 边缘检测

开始尝试了Canny边缘检测算法,它主要是:彩色图像转换为灰度图像,对图像进行高斯模糊,计算图像梯度,根据梯度计算图像边缘幅值与角度,非最大信号压制处理(边缘细化,双阈值边缘连接处理,二值化图像输出结果。

对那个样本去背景效果不好,后来尝试了Sobel边缘检测算法,用来运算图像亮度函数的灰度之近似值。没有模糊的效果比较好,模糊后就稍微差一点,但总体清晰。

3. 模糊算法

然后模糊算法看了一些,大致觉得还是采用高斯模糊也是可以的,但是模糊的阈值可以进行调参。

从图中也能看出不同的参数会带来不同的模糊效果。

参考文章[高斯模糊实现小结](http://blog.csdn.net/zddblog/article/details/7450033) 有提到这个参数。里面也有相关的改进。

尝试了一个基于一维高斯快速模糊算法的调参
然后再拿之前那些边缘检测算法基本上就有点乱了。

 

4. 一些思路

可以加一些稍大的噪点(比如椒盐噪声,高斯噪声,不过不能只是单纯的点,特征上会很容易被去除的)放在字符上,遮住一点信息或者考虑加一些有边缘的干扰物可以阻止边缘检测。


本身在背景渐变的时候也可以考虑一部分边缘完全融于背景,一部分露出来,用户看到的虽然不是一个完整的字体,但是能推测出。

 

以上是关于验证码的主要内容,如果未能解决你的问题,请参考以下文章

js实现输入手机验证码后点击提交按钮验证手机输入的验证码和发送的验证码是不是一致

验证码的识别

几米互联验证码有什用

PHP算式验证码和汉字验证码的实现方法

Spring Security---验证码详解

thinkphp3.2验证码怎么写