一、数字图像处理基础

一幅图像可以定义为一个二维数组f(x,y),这里x,y是空间坐标,而在任何一对空间坐标(x,y)上的幅值f称为该点图像的强度或灰度。当x,y和幅值f为有限的、离散的数值时,称该图像为数字图像。

自然界呈现在人眼中的图像是连续的模拟信号,在计算机处理前,必须用图像传感器把光信号转换为表示亮度的电信号,再通过取样和量化得到一副数字图像。取样是对图像在坐标上进行离散化的过程,每一个取样点称为一个像素。量化是对图像灰度上的离散化过程。取样后将得到M*N个像素,每个像素量化得到一个灰度值L,以L表示灰度值的允许取值范围,则数字图像存储需要的比特数b可以表示为:

图像的灰度值取值范围被称为图像的动态范围。把占有灰度级全部有效段的图像称为高动态范围图像,高动态范围图像有较高的对比度。相反,地动态范围的图像看上去是冲淡了的灰暗格调。

二、图像的预处理:

主要是对图像进行灰度化、二值化、抑噪(滤波)等技术。

1、图像的灰度化

RGB系统中一个颜色值由3个分量组成,这样的图像称为彩色图像,RGB系统称为颜色空间模型。常见的颜色空间模型还有HSI、CMYK等。如果一幅图像的颜色空间是一维的(一个颜色值只有一个颜色分量),则这幅图像就是一副灰度图。在位图图像中,一般以R=G=B来显示灰度图像。

图 1 原始图片

常用的灰度化方法有以下三种:

 (2.1)

 (2.2)

 (2.3)

其中,公式(2.1)的方法来源于I色彩空间中I分量的计算公式,公式(2.2)来源于NTSC色彩空间中Y分量的计算公式。公式(2.3)是基于采用保留最小亮度(黑色)的方法。

图 2 用公式2.2灰度化后的图片

RGB彩色图像可以看成是由3副单色的灰度图像构成的,可以直接取RGB通道中的任一个通道得到灰度化图像,如,前提是图像中目标像素的亮度信息主要分布在B通道上,否则灰度化结果将是亮度信息的大量丢失。灰度图像又叫亮度图像,由归一化的取值表示亮度,最大取值表示白色,最小取值表示黑色。

以P(x,y)表示图像中一个点,x、y分别是图像的横坐标和纵坐标,R(x,y)表示R通道的颜色分量,G(x,y)表示G通道的颜色分量,B(x,y)表示B通道的颜色分量。点P(x,y)的亮度值用L(x,y)表示。彩色图像的亮度没有严格的定义和计算公式,一般用公式(2.1)来计算,我们记作L1(x,y)。同样的用公式(2.2)计算的亮度值记作L2(x,y),用公式(2.3)计算的亮度值记作L3(x,y)。可以证明:

 (2.4)

 (2.5)

公式(2.1)取RGB通道的平均值,得到的图像相对比较柔和,同时也缩小了目标和背景的平均亮度差,不利于后续的阀值处理。公式(2.2)考虑了人眼对绿色的适应度最强,蓝色次之,红色最差。在处理绿色调和蓝色调的验证码图像时,公式(2.2)的效果令人满意,但在处理红色调的图像时,因为公式中红色的权值很小,灰度化后目标像素和背景像素的亮度差值被严重缩小,效果还不如公式(2.1)。公式(2.3)基于一个前提,那就是有限保留目标像素的亮度信息,利于后续的阀值分割。

需要说明的是,要根据图像灰度化的目的不同,原图色彩特征的不同,选择合适的灰度化方法。

2、图像的二值化

一般24位RGB图像的灰度图是8位256个灰度级的,如果把这个灰度级减少到1位2个灰度级,就得到一副二值图,二值图像中的数据全部是0或1。

图 3 二值化后图像

三、字符分割:

字符分割包括从验证码图像中分割出字符区域和把字符区域划分成单个字符两个部分。如果采用统计特征匹配以及神经网络法识别,必须要先分割出单个的字符。简单的分割方法包括等距分割、积分投影分割、交叉点分割、求连通区等。其中,粘连字符的分割是一个难点,复杂的粘连情况下分割比较困难,是一个硬人工智能问题。

四、字符识别

字符识别就是把处理后的图片还原回字符文本的过程。可以分成基于字符分割的识别(包括采用神经网络、SVM、各种统计距离的识别法)和模板匹配法识别。

字符识别的常用做法是:先获取该字符的特征码,然后使用各种分类算法将对该特征码进行分类,将其打上相应的类标签。分类模型的训练,是对字符库中的每个字符进行特征化处理,得到每个字符的特征码,该字符的标签就是该字符本身,利用特征码加上字符的标签对字符库中的所有数据进行训练,得到相应的分类模型。

当然,得到了待识别字符的特征码后,也可以使用相似性度量和字符库中的字符的特征码进行比较,将该字符识别为与其特征码相似性最高的字符。

现在的问题就集中在如何获取字符的特征码。文章[2]中介绍了一种简单的获取特征码的方法:

对于二值化后的图像进行分割,分割出来的图像是一个个的字符,如下图所示:

图 4 对图像进行分割,确定每个图像的边界

在每个字符的边界内,按行(或列)扫描该图片,检测其中的每个像素点,如果像素为白色则为0,如果像素为黑色则为1,将这些0和1连起来组成的字符串就构成了该字符图片的特征码。

参考文献:


[1] 《带干扰的验证码识别研究》 吕刚 浙江工业大学硕士学位论文

[2] 《C#中识别验证码》 http://www.360doc.com/content/11/0117/16/4304924_87149528.shtml

[3] 一些常用的代码 http://www.sharejs.com/codes/csharp/5611

[4] C#验证码识别实践  http://blog.csdn.net/stevenkylelee/article/details/8263890

图像识别技术——验证码识别相关推荐

  1. Python爬虫理论 | (6) 进阶反反爬虫技术 --- 验证码识别

    目录 1. 验证码原理 2. 常见验证码识别 2.1 图片验证码 2.2 滑动验证码 2.3 点触验证码 3. 实战 1. 验证码原理 验证码(CAPTCHA),"Completely Au ...

  2. python验证码识别算法_Python网站验证码识别

    0x00 识别涉及技术 验证码识别涉及很多方面的内容.入手难度大,但是入手后,可拓展性又非常广泛,可玩性极强,成就感也很足. 验证码图像处理 验证码图像识别技术主要是操作图片内的像素点,通过对图片的像 ...

  3. [验证码识别技术]-初级的滑动式验证图片识别

    初级的滑动式验证图片识别方案 1 abstract 验证码作为一种自然人的机器人的判别工具,被广泛的用于各种防止程序做自动化的场景中.传统的字符型验证安全性已经名存实亡的情况下,各种新型的验证码如雨后 ...

  4. [验证码识别技术]字符验证码杀手--CNN

    字符验证码杀手--CNN 1 abstract 目前随着深度学习,越来越蓬勃的发展,在图像识别和语音识别中也表现出了强大的生产力.对于普通的深度学习爱好者来说,一上来就去跑那边公开的大型数据库,比如I ...

  5. 使用Python+Tensorflow的CNN技术快速识别验证码

    北京 上海巡回站 | NVIDIA DLI深度学习培训 2018年1月26/1月12日 NVIDIA 深度学习学院 带你快速进入火热的DL领域 阅读全文                        ...

  6. 原创:谈谈计算机图像识别技术之身份证号码识别

    原创:谈谈计算机图像识别技术之身份证号码识别 作者:刘常军(2014-1-21)   前两天看到一篇文章,说支付宝钱包的iOS版和Android版已经升至8.0,只要通过摄像头对准银行卡进行扫描,支付 ...

  7. 神经网络的人脸识别方法,神经网络图像识别技术

    神经网络如何识别和编码性别? 神经网络模拟人脑中的神经元,神经元相互连接.每个神经元接收数据,并将判断过程中产生的信号传输到下一个神经元,该神经元逐层传输,最终达到识别的目的,与其他模型不同,神经网络 ...

  8. 验证码识别OCR技术

    在开发爬虫时,会遇到验证码识别,在网站中加入验证码的目的是加强用户安全性和提高反爬虫机制. 验证码类型:字符验证码,图片验证码,gif动图验证码,极验验证码(拖动滑块完成拼图),手机验证码,视频验证码 ...

  9. 谈谈计算机图像识别技术之身份证号码识别

    转载自 http://www.cnblogs.com/liu7537/p/3528968.html 作者:刘常军(2014-1-21)   前两天看到一篇文章,说支付宝钱包的iOS版和Android版 ...

最新文章

  1. java objectoutputstream怎么用_java序列化与ObjectOutputStream和ObjectInputStream的实例详解...
  2. 山西DOT NET俱乐部
  3. C#中的值类型和引用类型
  4. graphpad prism怎么添加图例_Graphpad官网刚刚升级了!听说,新功能吊打R语言...........
  5. ES6使用object的is()方法比较两个值
  6. wpsa3版面怎么变成a4、排版不变_毕业论文排版攻略
  7. 改名之后的 Java EE,现在有什么新进展?
  8. Apple的Mac OS X帮助BSD开发赶超Linux
  9. gliffy 绘图软件
  10. Mac OS 打开 NTFS 读写功能
  11. abaqus6.10离线版user‘smanual
  12. 玩法专利获批,发布4年《Beat Saber》为何持续火爆
  13. 王阳明心学:此心光明,夫复何言
  14. 如何使用FindBugs进行安全扫描
  15. nat模式下更改网络环境 虚拟机中Linux无法上网的问题
  16. 保姆级教学如何在Ubuntu 20.04工作站上配置深度学习环境
  17. 联想a2580 android 7,iOS卫垒战! 2013主流小尺寸平板年度横评
  18. 77.4%份额,环信高居SaaS移动端客服市场第一的背后
  19. 如何设置静态路由器计算机网络,路由器如何设置静态ip(固定ip)地址上网?
  20. 【华人学者风采】刘兵 伊利诺伊大学芝加哥分校

热门文章

  1. PDF交叉合并+excel批量重命名+调整PDF排序问题
  2. 近期必读的18篇情感计算相关论文-AMiner
  3. PyQt5学习:通过按钮控件打开windows系统文件软件(文件资源管理器)的文件夹进行浏览文件夹下所有文件
  4. Polyworks脚本开发学习笔记(十五)-用Python连接Polyworks的COM组件
  5. 【CVPR 2020】图神经网络在计算机视觉上的应用:精选论文两篇
  6. kubernetes 组件之 kubelet
  7. 【TV】三星曲面电视技术解析
  8. Elasticsearch从入门到放弃:索引基本使用方法
  9. 图书馆图书上架_图书馆书航志愿者图书整理与上架岗位补招
  10. 「OrthoFinder2」直系同源基因的寻找以及Orthogroup构建