光学字符识别OCR-3
连通性

可以看到,每一层的图像是由若干连通区域组成的,文字本身是由笔画较为密集组成的,因此往往文字也能够组成一个连通区域。这里的连通定义为 8邻接,即某个像素周围的8个像素都定义为邻接像素,邻接的像素则被定 义为同一个连通区域。
定义了连通区域后,每个图层被分割为若干个连通区域,也就是说,我们 逐步地将原始图像进行分解,如图9。

抗腐蚀能力 将图像分解至连通区域这一粒度后,我们就不再细分了,下一步开始识别哪些区域是可能的文字区域。 这里我们要求文字具有一定的抗腐蚀能力。 因此我们先来定义腐蚀。
腐蚀是一种图像上的形态学变换,一般针对于二值图像,对于二值图像中的非零像素(即取值为 1的像素),如果它邻接的像素都为1,则保持不变,否则变为0,这里我们同样采用的是8邻接的 定义。 可以看到,如果连通区域的边界线越长,那么腐蚀运算对它的“伤害”就越大,反之,如果 连通区域的边界线越短,那么腐蚀运算对它的“伤害”就越小。
根据以上腐蚀的定义,我们可以给出一个对文字区域的要求:
抗腐蚀要求 文字所在的连通区域应当具有一定的抗腐蚀能力。
这里的“一定”是指在一个连续的范围内,不能太大,也不能太小。比如,一个面积较大的方形区 域,它的抗腐蚀能力是很强的,因为它边界线很短,但这些区域明显不是文字区域,上一篇文 章中分解后图层5的电饭锅便是属于这一类型;此外,抗腐蚀能力太弱也不可以,比如细长的 线条,腐蚀之后可能就消失了,这些也不作为候选的文字区域,上一篇文章中分解后图层4的 文字边界线就属于这一类型。
这里可以定义一个抗腐蚀能力的指标:
连通区域的抗腐蚀能力 = 该区域被腐蚀后的总面积 / 该区域被腐蚀前的总面积 (7)
经过测试,文字区域的抗腐蚀能力大概在[0。1, 0。9]这个区间中。
经过抗腐蚀能力筛选分解的5个图层,得到如下图的特征层。


只保留抗腐蚀能力在[0.1, 0.9]这个区间中的连通区域
池化操作
到现在为止,我们得到了5个特征层,虽然肉眼可以看到,文字主要集中在第5个特征层。但是,对于一般的图片,文字可能分布在多个特征层,因此需要对特征层进行整合。我们这里进行特征整合的方法,类似于卷积神经网络中的“池化”,因此我们也借用了这个名称。 首先,我们将5个特征层进行叠加,得到一幅整体的图像特征(称为叠加特征)。这样的图像特征可以当作最后的特征输出,但并不是最好的方法。我们认为,某个区域内的主要文字特征应该已经集中分布在某个特征层中,而不是分散在所有的特征层。因此,得到叠加特征后,使用类 似“最大值池化”的方式整合特征,步骤如下:
1.直接叠加特征,然后对叠加特征划分连通区域;
2.检测每个连通区域的主要贡献是哪个特征层,该连通区域就只保留这个特征层的来源。 (这是怎么做到的,算法上如何实现???)

后期处理
对于我们演示的这幅图像,经过上述操作后,得到的特征图11已经不用再做什么处理了。 然而, 对于一般的图片,还有可能出现一些没处理好的区域,这时候需要在前述结果的基础上进一步 排除。排除过程主要有两个步骤,一个是低/高密度区排除,另外则是孤立区排除。
密度排除 一种明显不是文字区域的连通区域是低密度区,一个典型的例子就是由表格线组成的连通区域,这样的区域范围较大,但点很少,也就是密度很低,这种低密度区可以排除。 首先我们来定义连通区域密度和低密度区:
连通区域密度 从一个连通区域出发,可以找到该连通区域的水平外切矩形,该区域的密度定义为
连通区域密度 = 连通区域的面积 / 外切矩形的面积 × 原图像总面积 / 外切矩形的面积 (8)
低密度区 如果一个连通区域的密度小于16,那么这个连通区域定义为低密度区。
直觉上的定义应该是连通区域的面积/外切矩形的面积,但这里多了一个因子原图像总面积/外切矩形的面积,目的是把面积大小这个影响因素加进去,因为文字一般有明显的边界,容易被分割开来,所以一般来说面积越大的区域越不可能是文本区域。这里的参数16是经验值。 低密度区排除是排除表格等线条较多的非文字区域的有效方法。类似地,范围较大的高密度区也是一类需要排除的区域。有了低密度区之后,就很容易定义高密度区了:
高密度区定义* 如果一个连通区域以水平外切矩形反转后的区域是一个低密度区,那个这个 连通区域定义为高密度区。
这个定义是很自然的,但是却有一定的不合理性。比如“一”字,是一个水平的矩形,于是翻转后 的密度为0,于是这个“一”字就被排除了,这是不合理的。解决这个问题的一个方案是:
高密度区定义 当且仅当下面条件满足时才被定义为高密度区:
(矩形的面积 − 连通区域的面积)/ 外切矩形的面积× 外切矩形的面积 / 原图像总面积 < 16 (9)
这是在原来定义的基础上加上了1,防止了翻转后密度为0的情况。
还有另外一种失效的情况,就是假如输入图片是单字图片,那么只有一个连通区域,且原图像总面积 外切矩形的面积接近于1,因此它就被判为低密度区,这样就排除了单字。这种情形确实比较难兼顾。一个可行的解决办法是通过人工指定是单字模式、单行模型还是整体图片模式,Google的Tesseract OCR也提供了这样的选项。
孤立区排除

孤立区排除的出发点是:文字之间、笔画之间应该是比较紧 凑的,如果一个区域明显地孤立于其他区域,那么这个区域 很可能不是文字区域。 也就是说,可以把孤立区给排除掉。 首 先我们定义孤立区的概念:
孤立区 从一个连通区域出发,可以找到该连通区域的水平外切矩形,将这个矩形中心对称 地向外扩张为原来的9倍(长、宽变为原来的3倍,如左图),扩展后的区域如果没有包含其他 的连通区域,那么原来的连通区域称为孤立区。
在大多数情况,孤立区排除是一种非常简单有效的去噪方法,因为很多噪音点都是孤立区。 但是孤立区排除是会存在一定风险的。 如果一幅图像只有一个文字,构成了唯一一个连通区域, 那么这个连通区域就是孤立的,于是这个文字就被排除了。因此,要对孤立区加上更多的限制,一个可选的额外限制是:被排除的孤立区的占连通区域的面积/外切矩形的面积要大于0。75(这个值源于圆与外切正方形的面积之比π / 4)。
光学字符识别OCR-3的更多相关文章
- 光学字符识别OCR
1.功能: 光学字符识别(OCR,Optical Character Recognition)是指对文本资料进行扫描,然后对图像文件进行分析处理,获取文字及版面信息的过程 2.典型应用: 名片扫描 3 ...
- 6 个优秀的开源 OCR 光学字符识别工具
转自:http://sigvc.org/bbs/thread-870-1-1.html 纸张在许多地方已日益失宠,无纸化办公谈论40多年,办公环境正限制纸山的生成.而过去几年,无纸化办公的概念发生了显 ...
- 开源OCR光学字符识别
纸张在 许多地方已日益失宠,无纸化办公谈论40多年,办公环境正限制纸山的生成.而过去几年,无纸化办公的概念发生了显着的转变.在计算机软件的帮助 下,包含大量重要管理数据和资讯的文档可以更方便的以电子形 ...
- 字符识别OCR研究一(模板匹配&BP神经网络训练)
摘 要 在MATLAB环境下利用USB摄像头採集字符图像.读取一帧保存为图像.然后对读取保存的字符图像,灰度化.二值化,在此基础上做倾斜矫正.对矫正的图像进行滤波平滑处理,然后对字符区域进行提取切割出 ...
- Ocrad.js – JS 实现 OCR 光学字符识别
Ocrad.js 相当于是 Ocrad 项目的纯 JavaScript 版本,使用 Emscripten 自动转换.这是一个简单的 OCR (光学字符识别)程序,可以扫描图像中的文字回文本. 不像 G ...
- IT行业新名词--透明手机/OCR(光学字符识别)/夹背电池
透明手机 机身设计的一大关键部分是可替换玻璃的使用,利用导电技术,在看不到线路的环境下,让LED发光. 这样的玻璃内含液晶分子,对于内容的显示则是通过电流对分子的刺激来实现.当手机断电后,分子位置会随 ...
- 非黑即白--谷歌OCR光学字符识别
# coding=utf-8 #非黑即白--谷歌OCR光学字符识别 # 颜色的世界里,非黑即白.computer表示深信不疑. # 今天研究一下OCR光学识别庞大领域中的众多分支里的一个开源项目的一个 ...
- OCR技术(光学字符识别)
什么是OCR? OCR英文全称是optical character recognition,中文叫光学字符识别.它是利用光学技术和计算机技术把印在或者写在纸上的 文字读取出来,并转换成一种计算机能够接 ...
- OCR (Optical Character Recognition,光学字符识别)
OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗.亮的模式确定其形状,然后用字符识别方法将形状翻译 ...
- OCR 即 光学字符识别
OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗.亮的模式确定其形状,然后用字符识别方法将形状翻译 ...
随机推荐
- Spring中统一相同版本的api请求路径的一些思考
Spring中统一相同版本的api请求路径的一些思考 问题场景 当我们在实际开发中,可能会遇到开发相同同版本的api, 假设相同版本的api请求路径为/v1/functionA,/v1/functio ...
- JS计算24节气的方法
function getjq(yyyy,mm,dd){ mm = mm-1; var sTermInfo = new Array(0,21208,42467,63836,85337,107014,12 ...
- ios 开发发布证书配置详细流程
iOS证书配置实践 本文参考了: iOS证书配置指南:http://dev.umeng.com/push/ios/license-configuration-guide 写在前面: 团队开发证书的管理 ...
- App测试流程及测试点
1 APP测试基本流程 1.1流程图 接收版本 尽快申请到正式环境下测试 不符 App测试版本送测规范 用户行为统计测试 后台订单统计测试 尽快申请到正式环境下测试 兼容性测试.性能压力测试 功能测试 ...
- 重写strcat函数,以实现strcat的功能
char * strcatTest(char *dst,const char *src);Action(){ char a[]="come on"; char b[]=" ...
- Jmeter进行接口的性能测试
一.录制Jmeter脚本 录制Jmeter脚本有两种方法,一种是设置代理:一种则是利用badboy软件,badboy软件支持导出jmx脚本. 这里我们介绍第二种方法,利用badboy录制脚本,然后导出 ...
- 【TensorFlow入门完全指南】模型篇·线性回归模型
首先呢,进行import,对于日常写代码来说,第二行经常写成:import numpy as np,这样会更加简洁.第三行import用于绘图. 定义了学习率.迭代数epoch,以及展示的学习步骤,三 ...
- 最新电脑公司最新GHOST WIN7系统32,64位极速安全版
系统来自系统妈:http://www.xitongma.com 电脑公司最新GHOST win7系统64位极速安全版 V2016年3月 系统简介 电脑公司ghost win7系统64位极速安全版集成了 ...
- UVA1602 Lattice Animals 网格动物 (暴力,STL)
多联骨牌的生成办法,维基上只找到固定的骨牌fix,而free的没有找到. 于是只好写个set判重的简单枚举了. 旋转的操作,可以在坐标轴上画个点,以原点为轴心,逆时针旋转90度,新的点的坐标为(-y, ...
- Java字符串池(String Pool)深度解析(转)
出自 http://www.cnblogs.com/fangfuhai/p/5500065.html 在工作中,String类是我们使用频率非常高的一种对象类型.JVM为了提升性能和减少内存开销,避 ...