一种基于智能图像分析的报纸样稿文字自动检测方法
技术领域
本发明属于人工智能领域,设计图像处理,尤其是一种基于智能图像分析的报纸样稿文字自动检测方法。
背景技术
在目前的版面分割技术中,如果采用对基于深度优先搜索(DFS)的递归版面分割算法进行实验,发现这个算法的实验性能很大程度上依赖于阈值的选取,如果阈值的选取不当会对文本区域产生过分分割的现象。并且该算法鲁棒性不高,不能适用于形状各异的版面结构。为了达到预期的分割结果。
故本发明放弃选用递归版面分割算法,开始对基于广度优先搜索(BFS)的版面分割算法进行尝试。基于BFS的版面分割算法避免了基于DFS的版面分割算法中依赖于阈值选取的缺点,并且能对实际中形态各异的报纸版面进行精准的分割。结果表明,基于BFS的版面分割算法大大改善了DFS版面分割算法的实验性能,具有较高的鲁棒性。
公开号为CN107315834A的中国专利公开了一种基于广度优先搜索算法的ETL作业流程分析方法,依据各作业之间的先后加工逻辑关系,构造一个有向无环图,该有向无环图由一组节点和一组有方向的边构成,每个节点代表一个ETL作业或者是一个作业中的一步,每一条边代表从一个节点到另一个节点的数据流,使用广度优先搜索算法遍历整个ETL作业工作流定义的有向无环图,根据ETL作业节点的依赖关系,对每个ETL作业节点进行拓扑排序,并对ETL作业节点进行分层,然后根据具体的运行环境来决定同一层中的ETL作业节点是并行执行还是根据拓扑排序的结果串行执行。
经对比,本发明申请在发明目的以及广度优先搜索的嵌入方案上都与该专利文献有较大区别。
发明内容
本发明的目的在于克服现有技术的不足之处,提供一种具有较高鲁棒性的基于智能图像分析的报纸样稿文字自动检测方法。
本发明解决其技术问题是采取以下技术方案实现的:
一种基于智能图像分析的报纸样稿文字自动检测方法,其步骤为:
⑴清样图像预处理:对采集的源图像,即清样图像,进行预处理;
⑵版面分析:
版面分析包括对清样图像进行版面分割与区域识别两部分,版面分割是按几何结构完成文档图像的区域划分;区域识别是在版面分析的基础上,按数据类型将各个区域进行分类,版面分析的预处理包括去噪、二值化和页面倾斜校正三部分,
对版面分割技术采用基于广度优先搜索(BFS)的版面分割算法,其方法是:
给定图G=(V,E)和一个可以识别的源节点s,广度优先搜索对图G中的边进行系统性的探索来发现可以从源结点s到达的所有结点,该算法能够计算从源结点s到每个可到达的结点的距离,同时生成一颗“广度优先搜索树”。该树以源结点s为根结点,包含所有可以从s到达的结点;
⑶文字分割:
首先,分别对两张版面分析后的图像进行行扫描,通过统计连续白色行的行数,从而求出每个区域的上、下边界;
然后,再对两张版面分析后的图像的各个区域分别进行列扫描,通过统计连续白色列的列数,从而求出每个区域的左右边界;
同样考虑到黑色杂点,白色列的白点个数>=0.99*区域高度;
只要连续白色列的个数>20,则将该白色区域看作两个相邻的区域间的纵向间隔,即白色区域的左边界为其左区域的右边界,白色区域的右边界为其右区域的左边界;
每求出一个区域的右边界,便对该区域进行分割;
⑷单字分割:
首先,分别对两个相邻的区域进行行扫描,通过统计白色行的行号,从而求出每行字的上下边界;
其中,由于考虑到黑色杂点,白色行的黑点个数<=0.01*图像宽度;只要相邻白色行的行号相差>10,则将这两行看作一行字的上下边界,然后,再对两个区域的每一行字分别进行列扫描,求出每行中一个字的左右边界;将先遇到的黑色列看作一个字的左边界,在其后出现的白色列看作一个字的右边界;其中,黑色列的黑点个数>3,白色列中不允许有黑点,每分割完两个区域中的同一行字,便要对两个区域中的该行汉字图像进行配对;
⑸单字预处理
首先,先对两个区域中的该行汉字图像进行二值化处理,作为图像预处理,二值化的方法根据汉字图像的高度不同而不同,图像预处理后便要进行汉字的配对;
⑹文字配对:
单字配对分为连续线配对与特征点配对,其中连续线配对步骤是:
首先,分别对两个字进行行扫描,找出每一行黑色线的起点、终点坐标和线的长度;要求:横向的黑色线的长度>图像宽度/3;若发现有相邻黑色线的起点x坐标相差<=1,y坐标相差1,且线的长度相差<=1,则将两条相邻黑色线看作一条黑色线;
同理,对两个字进行列扫描,找出每一列的黑色线的起点、终点坐标和线的长度,最后,进行两个汉字的连续线配对,即字1的一条连续线与字2的连续线对比;
特征点配对的步骤是:
首先,将一个汉字图像用“田”字格分为四个区域,分别对这四个区域进行处理;以左上角区域为例,区域的x轴范围在(0,字宽/2),y轴在(0,字高/2);对左上角区域的左上角,左下角,右上角三个方向分别进行行、列扫描,将各个方向扫描时扫描到的第一个黑点看作特征点;此外,为保证精确度,对左上角区域的左上角进行对角线扫描;特征点的坐标需要满足以下条件:
扫描到的黑点不能与之前找到的特征点重复;
从左下角和右上角行扫描的点,要求其上下两个像素里至少有一个白点;列扫描的点,要求其左右两个像素至少有一个白点,最后,进行两个汉字的特征点配对,即字1的一个特征点与字2的特征点对比。
而且,步骤⑴中的清样图处理包括:去除噪点、位置校准。
而且,步骤⑵中的广度优先搜索的具体步骤是:
①对二值化后的图像src从(0,0)开始进行行列扫描,当Dot=坐标读取函数cvGet2D(src,j,i)为0时将其周围±delta的像素置为黑点;
②完成Step1后,对二值化后的图像src再一次从(0,0)开始进行扫描,当遇到像素点为黑点且该点未标记区域号时,给该点编号totalBlock,像素点进队列Que,同时对距离该点为k的像素点进行相同判断操作,完成每个像素点的区域编号工作;
③根据区域编号totalBlock遍历每个区域,并且找到该区域对角坐标;
④去除区域中非totalBlock区域的杂点,保存图像。
而且,步骤⑶中的每个区域的上、下边界的求法是:考虑到黑色杂点,白色行的白点个数>=0.99*图像宽度;
只要连续白色行的个数>20,则将该白色区域看作两个区域间的横向间隔,即白色区域的上边界为其上区域的下边界,白色区域的下边界为其下区域的上边界;
而且,步骤⑸中,不同的二值化方法分别为:
若汉字高度>60,采用大津算法;
若汉字高度范围在[40,60]时,采用
cvAdaptiveThreshold(zi111,zi1,255,CV_ADAPTIVE_THRESH_MEAN_C,
CV_THRESH_BINARY,block,5);
Block=13;
若汉字高度范围在[20,40)时,采用
cvAdaptiveThreshold(zi111,zi1,255,CV_ADAPTIVE_THRESH_MEAN_C,
CV_THRESH_BINARY,block,5);
Block=7;
然后,再对两个二值化之后的汉字图像进行开运算处理,先对汉字图像进行取反操作;
该部分C语言代码如下:
cvNot(zi2,zi2);//
cvMorphologyEx(zi2,zi2,temp2,element,CV_MOP_OPEN,1);//
cvNot(zi2,zi2);//;
而且,步骤⑹中,连续线配对时,字1的一条连续线与字2的连续线对比的要求是若起点x坐标相差<=1,y坐标相差<=1,且线的长度相差<=1,则两条黑色线配对,配对的连续线的个数应该大于0.8*a条。
而且,步骤⑹中,特征点配对时,字1的一条特征点与字2的特征点对比的要求是两个特征点的x,y坐标相差都<=1,则两个特征点配对。配对的特征点的个数应该大于0.8*a个。
本发明的优点和积极效果是:
本发明提供的基于智能图像分析的报纸样稿文字自动检测方法可针对复杂布局下的文字、图像区域分割,将文字区域从清样图像后分离,然后深入研究文字区域与其他区域的特征,并基于该特征将文字区域从图像中分离出来,为文字的校验做准备,可准确地进行排版后文字是否正确的判别。
本发明提供的基于智能图像分析的报纸样稿文字自动检测方法针对版面中存在印刷过程油墨的外溢现象,导致源图像中的文字会出现笔画的粘连,而常规的文字识别算法无法实现笔画粘连文字的准确识别的问题,将去除杂点后的图像进行了对应的连续县配对和特征点配对,保证精确度。
附图说明
图1为本发明中的源图像示意图;
图2为本发明的广度优先搜索中去除杂点的流程示意图;
图3为本发明的将源图像进行版面分割且二值化后的图像示意图;
图4位本发明中对文字校验时的特征点配对的示意图。
具体实施方式
下面结合附图并通过具体实施例对本发明作进一步详述,以下实施例只是描述性的,不是限定性的,不能以此限定本发明的保护范围。
一种基于智能图像分析的报纸样稿文字自动检测方法,其步骤为:
⑴清样图像预处理:
对采集的源图像,即清样图像,进行预处理,为后期处理做准备。其中包括:去除噪点、位置校准等。
⑵版面分析:
版面分析包括版面分割与区域识别两部分。版面分割是按几何结构完成文档图像的区域划分;区域识别是在版面分析的基础上,按数据类型将各个区域进行分类。
版面分析的预处理包括去噪、二值化和页面倾斜校正三部分。在分析和比较的基础上,选取OTSU方法(大津算法)对文档图像进行二值化。
本文对版面分割技术采用基于广度优先搜索(BFS)的版面分割算法,其方法是:
给定图G=(V,E)和一个可以识别的源节点s,广度优先搜索对图G中的边进行系统性的探索来发现可以从源结点s到达的所有结点。
该算法能够计算从源结点s到每个可到达的结点的距离,同时生成一颗“广度优先搜索树”。该树以源结点s为根结点,包含所有可以从s到达的结点。
广度优先搜索之所以如此得名是因为该算法始终是将已发现结点和未发现结点之间的边界,延其广度方向向外拓展。也就是说,算法需要在发现所有距离源结点s为k的所有结点之后,才会发现距离结点s为k+1的其他结点。
上述广度优先搜索的具体步骤是:
①对二值化后的图像src(图片像素地址)从(0,0)开始进行行列扫描,当Dot(圆点)=坐标读取函数cvGet2D(src,j,i)为0时将其周围±delta的像素置为黑点。
②完成Step1后,对二值化后的图像src再一次从(0,0)开始进行扫描,当遇到像素点为黑点且该点未标记区域号时,给该点编号totalBlock,像素点进队列Que,同时对距离该点为k的像素点进行相同判断操作。完成每个像素点的区域编号工作。
③根据区域编号totalBlock遍历每个区域,并且找到该区域对角坐标。
④去除区域中非totalBlock区域的杂点,保存图像。
⑶文字分割:
首先,分别对两张图,其中一张是报样的电子版的原稿,一张是打印出来的清样图像,对两张图中进行错别字的查找,进行行扫描,通过统计连续白色行的行数,从而求出每个区域的上下边界;
其中,由于考虑到黑色杂点,白色行的白点个数>=0.99*图像宽度;
只要连续白色行的个数>20,则将该白色区域看作两个区域间的横向间隔,即白色区域的上边界为其上区域的下边界,白色区域的下边界为其下区域的上边界。
然后,再对两张图的各个区域分别进行列扫描,通过统计连续白色列的列数,从而求出每个区域的左右边界;
同样考虑到黑色杂点,白色列的白点个数>=0.99*区域高度;
只要连续白色列的个数>20,则将该白色区域看作两个相邻的区域间的纵向间隔,即白色区域的左边界为其左区域的右边界,白色区域的右边界为其右区域的左边界。
每求出一个区域的右边界(即此时区域的上下左右边界都已求出),便对该区域进行分割。
⑷单字分割:
首先,分别对两个相邻的区域进行行扫描,通过统计白色行的行号,从而求出每行字的上下边界;
其中,由于考虑到黑色杂点,白色行的黑点个数<=0.01*图像宽度;只要相邻白色行的行号相差>10,则将这两行看作一行字的上下边界。然后,再对两个区域的每一行字分别进行列扫描,求出每行中一个字的左右边界;将先遇到的黑色列看作一个字的左边界,在其后出现的白色列看作一个字的右边界;其中,黑色列的黑点个数>3,白色列中不允许有黑点(或可改为允许有1~1个黑点)。
每分割完两个区域中的同一行字,便要对两个区域中的该行汉字图像进行配对。
⑸单字预处理
首先,先对两个区域中的该行汉字图像进行二值化处理,二值化的方法根据汉字图像的高度不同而不同。
若汉字高度>60,采用大津算法;
若汉字高度范围在[40,60]时,采用自适应阈值方法
cvAdaptiveThreshold(zi111,zi1,255,CV_ADAPTIVE_THRESH_MEAN_C,
CV_THRESH_BINARY,block,5);
Block=13;
若汉字高度范围在[20,40)时,采用
cvAdaptiveThreshold(zi111,zi1,255,CV_ADAPTIVE_THRESH_MEAN_C,
CV_THRESH_BINARY,block,5);
Block=7;
然后,再对两个二值化之后的汉字图像进行开运算处理,由于基于(开源)发行的跨平台计算机视觉库,即OPENCV的开运算函数处理的是图像的白色部分,所以需要先对汉字图像进行取反操作;
该部分C语言代码如下:
cvNot(zi2,zi2);//即图像取反操作
cvMorphologyEx(zi2,zi2,temp2,element,CV_MOP_OPEN,1);//即开运算操作
cvNot(zi2,zi2);//即二次取反操作
图像预处理后便要进行汉字的配对。
⑹文字配对:
单字配对分为连续线配对与特征点配对,其中连续线配对步骤是:
首先,分别对两个字进行行扫描,找出每一行黑色线的起点、终点坐标和线的长度;要求:横向的黑色线的长度(连续黑点的长度)>图像宽度/3;若发现有相邻黑色线的起点x坐标相差<=1,y坐标相差1,且线的长度相差<=1,则将两条相邻黑色线看作一条黑色线(即舍弃其中一条)。
同理,对两个字进行列扫描,找出每一列的黑色线的起点、终点坐标和线的长度。最后,进行两个汉字的连续线配对,即字1的一条连续线与字2的连续线对比。要求:若起点x坐标相差<=1,y坐标相差<=1,且线的长度相差<=1,则两条黑色线配对。配对的连续线的个数应该大于0.8*a条。(字1的连续线有a条,字2的连续线有b条,其中a<b。)
特征点配对的步骤是:
首先,将一个汉字图像用“田”字格分为四个区域,分别对这四个区域进行处理;以左上角区域为例,区域的x轴范围在(0,字宽/2),y轴在(0,字高/2);对左上角区域的左上角,左下角,右上角三个方向分别进行行、列扫描,将各个方向扫描时扫描到的第一个黑点看作特征点;此外,为保证精确度,对左上角区域的左上角进行对角线扫描;特征点的坐标需要满足以下条件:
扫描到的黑点不能与之前找到的特征点重复;
从左下角和右上角行扫描的点,要求其上下两个像素里至少有一个白点;列扫描的点,要求其左右两个像素至少有一个白点。最后,进行两个汉字的特征点配对,即字1的一个特征点与字2的特征点对比。要求:两个特征点的x,y坐标相差都<=1,则两个特征点配对。配对的特征点的个数应该大于0.8*a个。(字1的特征点有a个,字2的特征点有b个,其中a<b。)
由此完成报纸样稿文字自动检测。
尽管为说明目的公开了本发明的实施例和附图,但是本领域的技术人员可以理解:在不脱离本发明及所附权利要求的精神和范围内,各种替换、变化和修改都是可能的,因此,本发明的范围不局限于实施例和附图所公开的内容。