联系我们
- 地 址:北京市海淀区北四环西路9号 ,主 营:人脸识别,活体检测,身份证识别,银行卡识别,名片识别,车牌识别,OCR识别等及智能识别技术。
- 电 话:13146317170 廖经理
- 传 真:
- 邮 箱:398017534@qq.com
OCR识别浅析
OCR识别浅析
研讨背景
关于光学字符辨认(Optical Character Recognition, 下面都简称OCR),是指将图像上的文字转化为计算机可编辑的文字内容,众多的研讨人员对相关的技术研讨已久,也有不少成熟的OCR技术和产品产生,比方汉王OCR、ABBYY FineReader、Tesseract OCR等. 值得一提的是,ABBYY FineReader不只正确率高(包括对中文的辨认),而且还能保存大局部的排版效果,是一个十分强大的OCR商业软件。
但是,在诸多的OCR废品中,除了Tesseract OCR外,其他的都是闭源的、以至是商业的软件,我们既无法将它们嵌入到我们本人的程序中,也无法对其停止改良. 开源的独一选择是Google的Tesseract OCR,但它的辨认效果不算很好,而且中文辨认正确率偏低,有待进一步改良。
综上所述,不论是为了学术研讨还是实践应用,都有必要对OCR技术停止探求和改良。我们队伍将完好的OCR系统分为“特征提取”、“文字定位”、“光学辨认”、“言语模型”四个方面,逐渐停止处理,最终完成了一个可用的、完好的、用于印刷文字的OCR系统. 该系统能够初步用于电商、微信等平台的图片文字辨认,以判别上面信息的真伪。
研讨假定
在本文中,我们假定图像的文字局部有以下的特征:
1. 假定我们要辨认的图像字体都是比拟标准的印刷字体,如宋体、黑体、楷体、行书等;
2. 文字与背景应该有比拟明显的比照度;
3. 在设计模型的时分,我们假定了图片文本是横向排版的;
4. 文字的笔画应该有一定的宽度,不能够太细;
5. 同一个文字的颜色应该最多是突变的;
6. 普通文字是经过比拟密集的笔画成字的,并且很多时分都具有一定的连通性.
能够看到,这些特征都是常见的电商宣传海报等的常见特性,因而这些假定都是比拟合理的。
剖析流程
640?wx_fmt=png
图1:我们的实验流程图
特征提取
作为OCR系统的第一步,特征提取是希望找出图像中候选的文字区域特征,以便我们在第二步 停止文字定位和第三步停止辨认。在这局部内容中,我们集中精神模拟肉眼对图像与汉字的处置过程,在图像的处置和汉字的定位方面走了一条创新的道路。这局部工作是整个OCR系统最中心的局部,也是我们工作中最中心的局部。
传统的文本分割思绪大多数是“边缘检测 + 腐蚀收缩 + 联通区域检测”,如论文[1]。 但是,在复杂背景的图像下停止边缘检测会招致背景局部的边缘过多(即噪音增加),同时文字局部的边缘 信息则容易被疏忽,从而招致效果变差。
假如在此时停止腐蚀或收缩,那么将会使得背景区域跟文字区域粘合,效果进一步恶化。(事实上,我们在这条路上曾经走得足够远了,我们以至本人写过边缘检测函数来做这个事情,经过很多测试,最终我们决议放弃这种思绪。)
因而,在本文中,我们放弃了边缘检测和腐蚀收缩,经过聚类、分割、去噪、池化等步骤,得到了比拟良好的文字局部的特征,整个流程大致如图2,这些特征以至能够直接输入到文字识 别模型中停止辨认,而不用做额外的处置。由于我们每一局部结果都有相应的理论根底作为支撑,因而可以模型的牢靠性得到保证。
640?wx_fmt=png
图2:特征提取大约流程
在这局部的实验中,我们以图3来演示我们的效果。这个图像的特性是尺寸中等,背景较炫,颜色较为丰厚,并且文字跟图片混合排版,排版格式不固定,是比拟典型的电商类宣传图片。能够看到,处置这张图片的要点就是如何辨认图片区域和文字区域,辨认并剔除右端的电饭锅,只保存文字区域。
640?wx_fmt=png
图3:小米电饭锅引见图
图像的预处置
首先,我们将原始图片以灰度图像的方式读入,得到一个的灰度矩阵,其中m, n 是图像的长、宽。这样读入比直接读入RGB彩色图像维度更低,同时没有明显损失文字信息。转换为灰度图事实上就是将原来的RGB图像的三个通道以下面的公式
640?wx_fmt=png (1)
整合为一个通道:
640?wx_fmt=png
图3的灰度图
图像自身的尺寸不大,假如直接处置,则会招致文字笔画过小,容易被当成噪音处置掉,因而为了保证文字的笔画有一定的厚度,能够先将图片停止放大。 在我们的实验中,普通将图像放大为原来的两倍就有比拟好的效果了。
不过,图像放大之后,文字与背景之间的辨别度降低了。这是由于图片放大时会运用插值算法来填补空缺局部的像素。这时分需求相应地增大辨别度。经过测试,在大多数图片中,运用次数为2的“幂次变换”效果较好。幂次变换为
640?wx_fmt=png(2)
其中x代表矩阵M中的元素,r为次数,在这里我们选取为2。 然后需求将结果映射到[0,255]区间:
640?wx_fmt=png(3)
其中 640?wx_fmt=png是矩阵的最大值和最小值。
灰色聚类
接着我们就对图像的颜色停止聚类。聚类的有两个事实根据:
灰度分辨率 肉眼的灰度分辨率大约为40,因而关于像素值254和255,在我们肉眼看来都 只是白色;
设计准绳 依据我们普通的审美准绳,在思索海报设计、服装搭配等搭配的时分,普通要 求在服装、海报等颜色搭配不超越三种颜色。
更浅显地说,固然灰度图片色阶范围是[0, 255],但我们能觉得到的整体的色彩普通不多,因而,能够将相近的色阶归为一类,从而减少颜色散布,有效地降低噪音。
事实上,聚类是依据图像的特性自顺应地停止多值化的过程,防止了传统的简单二值化所带来 的信息损失。由于我们需求自动地肯定聚类数目,因而传统的KMeans等聚类办法被我们丢弃 了,而且经过我们测试,诸如MeanShift等可行的聚类办法又存在速度较慢等缺陷。因而,我们 自行设计了聚类办法,运用的是“核概率密度估量”的思绪,经过求颜色密度极值的方式来聚类。
核密度估量 经过预处置的图像,我们能够对每个色阶的呈现次数停止统计,得到如图5的频率散布直方图:
640?wx_fmt=png
图5:对预处置后的图像停止灰色阶统计
能够看到,色阶的散布构成了几个比拟突出的峰,换言之,存在一定的聚类趋向。 但是,直方 图的统计结果是不连续的,一个平滑的结果更便于我们剖析研讨,结果也更有压服力。 将统计 结果平滑化的办法,就是核密度估量(kernel density estimation)。
核密度估量办法是一种非参数估量办法,由Rosenblatt和Parzen提出,在统计学理论和应用领 域均遭到高度的注重[2]。 当然,也能够简单地将它看成一种函数平滑方式。 我们依据大量的数据 来估量某个值呈现的概率(密度)时,事实上做的是如下预算:
640?wx_fmt=png(4)
其中K(x)称为核函数。 当 取为1,且K(x)取
640?wx_fmt=png(5)
时,就是我们上述的直方图估量。 K(x)这一项的含义很简单,它就是通知我们在范围h内的640?wx_fmt=png都算入到x中去,至于怎样算,由640?wx_fmt=png给出。可见,h的选择对结果的影响很大,h我们称之为带宽(bandwidth),它主要影响结果的平滑性。 假如K(x)是离散的,得到的结果还是离散的,但假如K(x)是润滑的,得到的结果也是比拟润滑的。一个常用的润滑函数核是高斯核:
640?wx_fmt=png(6)
所得到的估量也叫高斯核密度估量。 在这里,我们运用scott规则自顺应地选取 ,但需求手动指定一个平滑因子,在本文中,我们选取为0。2。关于示例图片,我们得到如图6的红色曲线的结果。
640?wx_fmt=png
图6:频率散布的高斯核密度估量
极大极小值分割
从图6中我们进一步能够看出,图像的确存在着聚类趋向。 这表现为它有几个明显的极大值和极 小值点,这里的极大值点位于x = 10, 57, 97, 123, 154,极小值点位于25, 71, 121, 142。
因而,一个很自然的聚类办法是:有几个极大值点,就聚为几类,并且以极小值点作为类 别之间的边境。 也就是说,关于图3,能够将图像分层5层,逐层处置。 分层之后,每一层的外形 如下图,其中白色是1,黑色是0。
640?wx_fmt=png
640?wx_fmt=png
经过聚类将图像分为5个图层
可见,由于“比照度”和“突变性”假定,经过聚类的确能够将文字图层经过核密度估量的聚类方 法别离开来。 而且,经过聚类分层的思绪,无需对文字颜色作任何假定,即使是文字颜色跟背 景颜色分歧时,也能够取得有效检测。
逐层辨认
当图像有效地停止分层后,我们就能够依据前面的假定,进一步设计相应的模型,经过逐层处 理的方式找出图像中的文字区域。
连通性
640?wx_fmt=png
能够看到,每一层的图像是由若干连通区域组成的,文字自身是由笔画较 为密集组成的,因而常常文字也可以组成一个连通区域。这里的连通定义为 8邻接,即某个像素四周的8个像素都定义为邻接像素,邻接的像素则被定 义为同一个连通区域。
定义了连通区域后,每个图层被分割为若干个连通区域,也就是说,我们 逐渐地将原始图像停止合成,如图9。
640?wx_fmt=png
图9 图像合成构造图
抗腐蚀才能
将图像合成至连通区域这一粒度后,我们就不再细分了,下一步开端辨认哪些区域是可能的文字区域。 这里我们请求文字具有一定的抗腐蚀才能。 因而我们先来定义腐蚀。
腐蚀是一种图像上的形态学变换,普通针关于二值图像,关于二值图像中的非零像素(即取值为 1的像素),假如它邻接的像素都为1,则坚持不变,否则变为0,这里我们同样采用的是8邻接的 定义。 能够看到,假如连通区域的边境线越长,那么腐蚀运算对它的“伤害”就越大,反之,假如 连通区域的边境线越短,那么腐蚀运算对它的“伤害”就越小。
依据以上腐蚀的定义,我们能够给出一个对文字区域的请求:
抗腐蚀请求
文字所在的连通区域应当具有一定的抗腐蚀才能。
这里的“一定”是指在一个连续的范围内,不能太大,也不能太小。 比方,一个面积较大的方形区 域,它的抗腐蚀才能是很强的,由于它边境线很短,但这些区域明显不是文字区域,上一篇文 章中合成后图层5的电饭锅便是属于这一类型;此外,抗腐蚀才能太弱也不能够,比方细长的 线条,腐蚀之后可能就消逝了,这些也不作为候选的文字区域,上一篇文章中合成后图层4的 文字边境线就属于这一类型。
这里能够定义一个抗腐蚀才能的指标:
连通区域的抗腐蚀才能 = 该区域被腐蚀后的总面积/该区域被腐蚀前的总面积 (7)
经过测试,文字区域的抗腐蚀才能大约在[0.1, 0.9]这个区间中。
经过抗腐蚀才能挑选合成的5个图层,得到如下图的特征层。
640?wx_fmt=png
640?wx_fmt=png
只保存抗腐蚀才能在[0。1, 0。9]这个区间中的连通区域
池化操作
到如今为止,我们得到了5个特征层,固然肉眼能够看到,文字主要集中在第5个特征层。但是,关于普通的图片,文字可能散布在多个特征层,因而需求对特征层停止整合。我们这里停止特征整合的办法,相似于卷积神经网络中的“池化”,因而我们也借用了这个称号。
首先,我们将5个特征层停止叠加,得到一幅整体的图像特征(称为叠加特征)。这样的图像特征能够当作最后的特征输出,但并不是最好的办法。我们以为,某个区域内的主要文字特征应该曾经集中散布在某个特征层中,而不是分散在一切的特征层。因而,得到叠加特征后,运用类 似“最大值池化”的方式整合特征,步骤如下:
1。直接叠加特征,然后对叠加特征划分连通区域;
2。检测每个连通区域的主要奉献是哪个特征层,该连通区域就只保存这个特征层的来源。
经过这样的池化操作后,得到的最终特征结果如图11。
640?wx_fmt=png
图11 池化后的特征
后期处置
关于我们演示的这幅图像,经过上述操作后,得到的特征图11曾经不用再做什么处置了。 但是, 关于普通的图片,还有可能呈现一些没处置好的区域,这时分需求在前述结果的根底上进一步 扫除。 扫除过程主要有两个步骤,一个是低/高密度区扫除,另外则是孤立区扫除。
密度扫除 一种明显不是文字区域的连通区域是低密度区,一个典型的例子就是由表格线组成的连通区域,这样的区域范围较大,但点很少,也就是密度很低,这种低密度区能够扫除。 首先我们来定义连通区域密度和低密度区:
连通区域密度 从一个连通区域动身,能够找到该连通区域的程度外切矩形,该区域的密度定义为
连通区域密度 =连通区域的面积/外切矩形的面积×原图像总面积/外切矩形的面积 (8)
低密度区 假如一个连通区域的密度小于16,那么这个连通区域定义为低密度区。
直觉上的定义应该是连通区域的面积 / 外切矩形的面积,但这里多了一个因子原图像总面积 / 外切矩形的面积,目的是把面积大小这个影响要素加进去,由于文字普通有明显的边境,容易被分割开来,所以普通来说面积越大的区域越不可能是文本区域。这里的参数16是经历值。 低密度区扫除是扫除表格等线条较多的非文字区域的有效办法。相似地,范围较大的高密度区也是一类需求扫除的区域。 有了低密度区之后,就很容易定义高密度区了:
高密度区定义* 假如一个连通区域以程度外切矩形反转后的区域是一个低密度区,那个这个 连通区域定义为高密度区。
这个定义是很自然的,但是却有一定的不合理性。比方“一”字,是一个程度的矩形,于是翻转后 的密度为0,于是这个“一”字就被扫除了,这是不合理的。 处理这个问题的一个计划是:
高密度区定义 当且仅当下面条件满足时才被定义为高密度区:
(矩形的面积 −连通区域的面积)/外切矩形的面积× 外切矩形的面积/原图像总面积< 16 (9)
这是在原来定义的根底上加上了1,避免了翻转后密度为0的状况。
还有另外一种失效的状况,就是假设输入图片是单字图片,那么只要一个连通区域,且原图像总面积 外切矩形的面积接近于1,因而它就被判为低密度区,这样就扫除了单字。这种情形的确比拟难统筹。一个可行的处理方法是经过人工指定是单字形式、单行模型还是整体图片形式,Google的Tesseract OCR也提供了这样的选项。
孤立区
640?wx_fmt=png
孤立区扫除的动身点是:文字之间、笔画之间应该是比拟紧 凑的,假如一个区域明显地孤立于其他区域,那么这个区域 很可能不是文字区域。 也就是说,能够把孤立区给扫除掉。 首 先我们定义孤立区的概念:
孤立区 从一个连通区域动身,能够找到该连通区域的程度外切矩形,将这个矩形中心对称 地向外扩张为原来的9倍(长、宽变为原来的3倍,如左图),扩展后的区域假如没有包含其他 的连通区域,那么原来的连通区域称为孤立区。
在大多数状况,孤立区扫除是一种十分简单有效的去噪办法,由于很多噪音点都是孤立区。 但是孤立区扫除是会存在一定风险的。 假如一幅图像只要一个文字,构成了独一一个连通区域, 那么这个连通区域就是孤立的,于是这个文字就被扫除了。因而,要对孤立区加上更多的限制,一个可选的额外限制是:被扫除的孤立区的占连通区域的面积 / 外切矩形的面积要大于0.75(这个值源于圆与外切正方形的面积之比 π / 4)。
关于光学字符辨认(Optical Character Recognition, 下面都简称OCR),是指将图像上的文字转化为计算机可编辑的文字内容,众多的研讨人员对相关的技术研讨已久,也有不少成熟的OCR技术和产品产生,比方汉王OCR、ABBYY FineReader、Tesseract OCR等. 值得一提的是,ABBYY FineReader不只正确率高(包括对中文的辨认),而且还能保存大局部的排版效果,是一个十分强大的OCR商业软件。
但是,在诸多的OCR废品中,除了Tesseract OCR外,其他的都是闭源的、以至是商业的软件,我们既无法将它们嵌入到我们本人的程序中,也无法对其停止改良. 开源的独一选择是Google的Tesseract OCR,但它的辨认效果不算很好,而且中文辨认正确率偏低,有待进一步改良。
综上所述,不论是为了学术研讨还是实践应用,都有必要对OCR技术停止探求和改良。我们队伍将完好的OCR系统分为“特征提取”、“文字定位”、“光学辨认”、“言语模型”四个方面,逐渐停止处理,最终完成了一个可用的、完好的、用于印刷文字的OCR系统. 该系统能够初步用于电商、微信等平台的图片文字辨认,以判别上面信息的真伪。
研讨假定
在本文中,我们假定图像的文字局部有以下的特征:
1. 假定我们要辨认的图像字体都是比拟标准的印刷字体,如宋体、黑体、楷体、行书等;
2. 文字与背景应该有比拟明显的比照度;
3. 在设计模型的时分,我们假定了图片文本是横向排版的;
4. 文字的笔画应该有一定的宽度,不能够太细;
5. 同一个文字的颜色应该最多是突变的;
6. 普通文字是经过比拟密集的笔画成字的,并且很多时分都具有一定的连通性.
能够看到,这些特征都是常见的电商宣传海报等的常见特性,因而这些假定都是比拟合理的。
剖析流程
640?wx_fmt=png
图1:我们的实验流程图
特征提取
作为OCR系统的第一步,特征提取是希望找出图像中候选的文字区域特征,以便我们在第二步 停止文字定位和第三步停止辨认。在这局部内容中,我们集中精神模拟肉眼对图像与汉字的处置过程,在图像的处置和汉字的定位方面走了一条创新的道路。这局部工作是整个OCR系统最中心的局部,也是我们工作中最中心的局部。
传统的文本分割思绪大多数是“边缘检测 + 腐蚀收缩 + 联通区域检测”,如论文[1]。 但是,在复杂背景的图像下停止边缘检测会招致背景局部的边缘过多(即噪音增加),同时文字局部的边缘 信息则容易被疏忽,从而招致效果变差。
假如在此时停止腐蚀或收缩,那么将会使得背景区域跟文字区域粘合,效果进一步恶化。(事实上,我们在这条路上曾经走得足够远了,我们以至本人写过边缘检测函数来做这个事情,经过很多测试,最终我们决议放弃这种思绪。)
因而,在本文中,我们放弃了边缘检测和腐蚀收缩,经过聚类、分割、去噪、池化等步骤,得到了比拟良好的文字局部的特征,整个流程大致如图2,这些特征以至能够直接输入到文字识 别模型中停止辨认,而不用做额外的处置。由于我们每一局部结果都有相应的理论根底作为支撑,因而可以模型的牢靠性得到保证。
640?wx_fmt=png
图2:特征提取大约流程
在这局部的实验中,我们以图3来演示我们的效果。这个图像的特性是尺寸中等,背景较炫,颜色较为丰厚,并且文字跟图片混合排版,排版格式不固定,是比拟典型的电商类宣传图片。能够看到,处置这张图片的要点就是如何辨认图片区域和文字区域,辨认并剔除右端的电饭锅,只保存文字区域。
640?wx_fmt=png
图3:小米电饭锅引见图
图像的预处置
首先,我们将原始图片以灰度图像的方式读入,得到一个的灰度矩阵,其中m, n 是图像的长、宽。这样读入比直接读入RGB彩色图像维度更低,同时没有明显损失文字信息。转换为灰度图事实上就是将原来的RGB图像的三个通道以下面的公式
640?wx_fmt=png (1)
整合为一个通道:
640?wx_fmt=png
图3的灰度图
图像自身的尺寸不大,假如直接处置,则会招致文字笔画过小,容易被当成噪音处置掉,因而为了保证文字的笔画有一定的厚度,能够先将图片停止放大。 在我们的实验中,普通将图像放大为原来的两倍就有比拟好的效果了。
不过,图像放大之后,文字与背景之间的辨别度降低了。这是由于图片放大时会运用插值算法来填补空缺局部的像素。这时分需求相应地增大辨别度。经过测试,在大多数图片中,运用次数为2的“幂次变换”效果较好。幂次变换为
640?wx_fmt=png(2)
其中x代表矩阵M中的元素,r为次数,在这里我们选取为2。 然后需求将结果映射到[0,255]区间:
640?wx_fmt=png(3)
其中 640?wx_fmt=png是矩阵的最大值和最小值。
灰色聚类
接着我们就对图像的颜色停止聚类。聚类的有两个事实根据:
灰度分辨率 肉眼的灰度分辨率大约为40,因而关于像素值254和255,在我们肉眼看来都 只是白色;
设计准绳 依据我们普通的审美准绳,在思索海报设计、服装搭配等搭配的时分,普通要 求在服装、海报等颜色搭配不超越三种颜色。
更浅显地说,固然灰度图片色阶范围是[0, 255],但我们能觉得到的整体的色彩普通不多,因而,能够将相近的色阶归为一类,从而减少颜色散布,有效地降低噪音。
事实上,聚类是依据图像的特性自顺应地停止多值化的过程,防止了传统的简单二值化所带来 的信息损失。由于我们需求自动地肯定聚类数目,因而传统的KMeans等聚类办法被我们丢弃 了,而且经过我们测试,诸如MeanShift等可行的聚类办法又存在速度较慢等缺陷。因而,我们 自行设计了聚类办法,运用的是“核概率密度估量”的思绪,经过求颜色密度极值的方式来聚类。
核密度估量 经过预处置的图像,我们能够对每个色阶的呈现次数停止统计,得到如图5的频率散布直方图:
640?wx_fmt=png
图5:对预处置后的图像停止灰色阶统计
能够看到,色阶的散布构成了几个比拟突出的峰,换言之,存在一定的聚类趋向。 但是,直方 图的统计结果是不连续的,一个平滑的结果更便于我们剖析研讨,结果也更有压服力。 将统计 结果平滑化的办法,就是核密度估量(kernel density estimation)。
核密度估量办法是一种非参数估量办法,由Rosenblatt和Parzen提出,在统计学理论和应用领 域均遭到高度的注重[2]。 当然,也能够简单地将它看成一种函数平滑方式。 我们依据大量的数据 来估量某个值呈现的概率(密度)时,事实上做的是如下预算:
640?wx_fmt=png(4)
其中K(x)称为核函数。 当 取为1,且K(x)取
640?wx_fmt=png(5)
时,就是我们上述的直方图估量。 K(x)这一项的含义很简单,它就是通知我们在范围h内的640?wx_fmt=png都算入到x中去,至于怎样算,由640?wx_fmt=png给出。可见,h的选择对结果的影响很大,h我们称之为带宽(bandwidth),它主要影响结果的平滑性。 假如K(x)是离散的,得到的结果还是离散的,但假如K(x)是润滑的,得到的结果也是比拟润滑的。一个常用的润滑函数核是高斯核:
640?wx_fmt=png(6)
所得到的估量也叫高斯核密度估量。 在这里,我们运用scott规则自顺应地选取 ,但需求手动指定一个平滑因子,在本文中,我们选取为0。2。关于示例图片,我们得到如图6的红色曲线的结果。
640?wx_fmt=png
图6:频率散布的高斯核密度估量
极大极小值分割
从图6中我们进一步能够看出,图像的确存在着聚类趋向。 这表现为它有几个明显的极大值和极 小值点,这里的极大值点位于x = 10, 57, 97, 123, 154,极小值点位于25, 71, 121, 142。
因而,一个很自然的聚类办法是:有几个极大值点,就聚为几类,并且以极小值点作为类 别之间的边境。 也就是说,关于图3,能够将图像分层5层,逐层处置。 分层之后,每一层的外形 如下图,其中白色是1,黑色是0。
640?wx_fmt=png
640?wx_fmt=png
经过聚类将图像分为5个图层
可见,由于“比照度”和“突变性”假定,经过聚类的确能够将文字图层经过核密度估量的聚类方 法别离开来。 而且,经过聚类分层的思绪,无需对文字颜色作任何假定,即使是文字颜色跟背 景颜色分歧时,也能够取得有效检测。
逐层辨认
当图像有效地停止分层后,我们就能够依据前面的假定,进一步设计相应的模型,经过逐层处 理的方式找出图像中的文字区域。
连通性
640?wx_fmt=png
能够看到,每一层的图像是由若干连通区域组成的,文字自身是由笔画较 为密集组成的,因而常常文字也可以组成一个连通区域。这里的连通定义为 8邻接,即某个像素四周的8个像素都定义为邻接像素,邻接的像素则被定 义为同一个连通区域。
定义了连通区域后,每个图层被分割为若干个连通区域,也就是说,我们 逐渐地将原始图像停止合成,如图9。
640?wx_fmt=png
图9 图像合成构造图
抗腐蚀才能
将图像合成至连通区域这一粒度后,我们就不再细分了,下一步开端辨认哪些区域是可能的文字区域。 这里我们请求文字具有一定的抗腐蚀才能。 因而我们先来定义腐蚀。
腐蚀是一种图像上的形态学变换,普通针关于二值图像,关于二值图像中的非零像素(即取值为 1的像素),假如它邻接的像素都为1,则坚持不变,否则变为0,这里我们同样采用的是8邻接的 定义。 能够看到,假如连通区域的边境线越长,那么腐蚀运算对它的“伤害”就越大,反之,假如 连通区域的边境线越短,那么腐蚀运算对它的“伤害”就越小。
依据以上腐蚀的定义,我们能够给出一个对文字区域的请求:
抗腐蚀请求
文字所在的连通区域应当具有一定的抗腐蚀才能。
这里的“一定”是指在一个连续的范围内,不能太大,也不能太小。 比方,一个面积较大的方形区 域,它的抗腐蚀才能是很强的,由于它边境线很短,但这些区域明显不是文字区域,上一篇文 章中合成后图层5的电饭锅便是属于这一类型;此外,抗腐蚀才能太弱也不能够,比方细长的 线条,腐蚀之后可能就消逝了,这些也不作为候选的文字区域,上一篇文章中合成后图层4的 文字边境线就属于这一类型。
这里能够定义一个抗腐蚀才能的指标:
连通区域的抗腐蚀才能 = 该区域被腐蚀后的总面积/该区域被腐蚀前的总面积 (7)
经过测试,文字区域的抗腐蚀才能大约在[0.1, 0.9]这个区间中。
经过抗腐蚀才能挑选合成的5个图层,得到如下图的特征层。
640?wx_fmt=png
640?wx_fmt=png
只保存抗腐蚀才能在[0。1, 0。9]这个区间中的连通区域
池化操作
到如今为止,我们得到了5个特征层,固然肉眼能够看到,文字主要集中在第5个特征层。但是,关于普通的图片,文字可能散布在多个特征层,因而需求对特征层停止整合。我们这里停止特征整合的办法,相似于卷积神经网络中的“池化”,因而我们也借用了这个称号。
首先,我们将5个特征层停止叠加,得到一幅整体的图像特征(称为叠加特征)。这样的图像特征能够当作最后的特征输出,但并不是最好的办法。我们以为,某个区域内的主要文字特征应该曾经集中散布在某个特征层中,而不是分散在一切的特征层。因而,得到叠加特征后,运用类 似“最大值池化”的方式整合特征,步骤如下:
1。直接叠加特征,然后对叠加特征划分连通区域;
2。检测每个连通区域的主要奉献是哪个特征层,该连通区域就只保存这个特征层的来源。
经过这样的池化操作后,得到的最终特征结果如图11。
640?wx_fmt=png
图11 池化后的特征
后期处置
关于我们演示的这幅图像,经过上述操作后,得到的特征图11曾经不用再做什么处置了。 但是, 关于普通的图片,还有可能呈现一些没处置好的区域,这时分需求在前述结果的根底上进一步 扫除。 扫除过程主要有两个步骤,一个是低/高密度区扫除,另外则是孤立区扫除。
密度扫除 一种明显不是文字区域的连通区域是低密度区,一个典型的例子就是由表格线组成的连通区域,这样的区域范围较大,但点很少,也就是密度很低,这种低密度区能够扫除。 首先我们来定义连通区域密度和低密度区:
连通区域密度 从一个连通区域动身,能够找到该连通区域的程度外切矩形,该区域的密度定义为
连通区域密度 =连通区域的面积/外切矩形的面积×原图像总面积/外切矩形的面积 (8)
低密度区 假如一个连通区域的密度小于16,那么这个连通区域定义为低密度区。
直觉上的定义应该是连通区域的面积 / 外切矩形的面积,但这里多了一个因子原图像总面积 / 外切矩形的面积,目的是把面积大小这个影响要素加进去,由于文字普通有明显的边境,容易被分割开来,所以普通来说面积越大的区域越不可能是文本区域。这里的参数16是经历值。 低密度区扫除是扫除表格等线条较多的非文字区域的有效办法。相似地,范围较大的高密度区也是一类需求扫除的区域。 有了低密度区之后,就很容易定义高密度区了:
高密度区定义* 假如一个连通区域以程度外切矩形反转后的区域是一个低密度区,那个这个 连通区域定义为高密度区。
这个定义是很自然的,但是却有一定的不合理性。比方“一”字,是一个程度的矩形,于是翻转后 的密度为0,于是这个“一”字就被扫除了,这是不合理的。 处理这个问题的一个计划是:
高密度区定义 当且仅当下面条件满足时才被定义为高密度区:
(矩形的面积 −连通区域的面积)/外切矩形的面积× 外切矩形的面积/原图像总面积< 16 (9)
这是在原来定义的根底上加上了1,避免了翻转后密度为0的状况。
还有另外一种失效的状况,就是假设输入图片是单字图片,那么只要一个连通区域,且原图像总面积 外切矩形的面积接近于1,因而它就被判为低密度区,这样就扫除了单字。这种情形的确比拟难统筹。一个可行的处理方法是经过人工指定是单字形式、单行模型还是整体图片形式,Google的Tesseract OCR也提供了这样的选项。
孤立区
640?wx_fmt=png
孤立区扫除的动身点是:文字之间、笔画之间应该是比拟紧 凑的,假如一个区域明显地孤立于其他区域,那么这个区域 很可能不是文字区域。 也就是说,能够把孤立区给扫除掉。 首 先我们定义孤立区的概念:
孤立区 从一个连通区域动身,能够找到该连通区域的程度外切矩形,将这个矩形中心对称 地向外扩张为原来的9倍(长、宽变为原来的3倍,如左图),扩展后的区域假如没有包含其他 的连通区域,那么原来的连通区域称为孤立区。
在大多数状况,孤立区扫除是一种十分简单有效的去噪办法,由于很多噪音点都是孤立区。 但是孤立区扫除是会存在一定风险的。 假如一幅图像只要一个文字,构成了独一一个连通区域, 那么这个连通区域就是孤立的,于是这个文字就被扫除了。因而,要对孤立区加上更多的限制,一个可选的额外限制是:被扫除的孤立区的占连通区域的面积 / 外切矩形的面积要大于0.75(这个值源于圆与外切正方形的面积之比 π / 4)。
上一条:人工智能深度学习在机器翻译中的应用
下一条:机器学习和人工智能