本发明属于文档图像表格识别技术领域,具体涉及一种表格干扰线去除算法。
背景技术:
表格作为直观精简的信息统计方式,被广泛地应用在学习、生活、工作等各个领域中。在信息量愈发庞大、同时对效率要求更高的今天,自动地读取文档中所包含的表格数据具有极高的实用价值。表格数据读取是智能化信息提取及分析的关键技术,其中,表格识别是表格数据读取的基础。然而在实际情况中,表格识别会受到诸多因素干扰。文档中通常会包含不规则线段、残留印章边界以及页眉页脚横线等诸多种类干扰线,这些干扰线会对表格结构的正确识别产生影响。例如,当通过算法提取表格结构线段并计算单元格信息时,可能会出现单元格被干扰线切分的错误情况。因此,需要对这些表格干扰线进行去除。
为检测出表格中的干扰线,目前常用的方法是利用干扰线与文字字符之间某些特征间的差异来提取干扰线。如名称为“一种文本图像的长干扰线去除方法”(公开号为cn108805126a)的专利文献公开了一种检测文本图像中干扰线的方法,该方法首先获取文本图像中各线段的信息,然后将所获取到的线段中长度大于某一阈值的线段去除,最后填充文字比划断裂的区域。又如名称为“基于贪婪算法的文档图像中干扰线的去除方法”(公开号为cn110807348a)的专利文献公开了一种去除文本图像中干扰线的方法,采用对文档图像中每条线段按照长度赋予权值的方法来提供干扰线的判断依据以去除干扰线。
但是上述干扰线的检测方法存在以下不足:
(1)需要干扰线与常规表格线之间具有较大的差异性,检测方法的鲁棒性较差,降低了部分干扰线的检出率;
(2)需要精准地检测出干扰线的长度,且要求干扰线不能出现断裂的情况;
(3)干扰线的判断条件单一;
(4)对于带有表格元素的页面图像来说,会将正常表格结构线段误检为干扰线。
技术实现要素:
为解决上述技术问题,本发明提出一种表格干扰线去除算法,对表格干扰线进行分类检测,在无需准确地设置表格线段与干扰线之间临界阈值的情况下,根据常规表格的结构特性判断线段是否属于干扰线。
本发明提出的一种表格干扰线去除算法,其特征在于,该方法包括以下步骤:
(1)二值化处理。对文档灰度图像i进行局部自适应二值化处理,以去除文档灰度图像i中的背景噪声干扰,同时将有效的表格线段以及文字信息提取出来,得到第一二值图像ib1;
(2)腐蚀、膨胀操作。
设置一个大小为nvertical×nhorizontal的横向腐蚀及膨胀参数矩阵ghorizont,nvertical、nhorizontal分别表示矩阵的行数和列数,1≤nvertical<nhorizontal≤k×w,0<k<1,w表示图像的宽度,k表示缩放系数;利用该矩阵对第一二值图像ib1进行横向腐蚀操作,得到第二二值图像ib2;再对第二二值图像ib2进行横向膨胀操作,得到第三二值图像ib3;
设置一个大小为mvertica×lmhorizont的纵向腐蚀及膨胀参数矩阵gvertica,mvertical、mhorizontal分别表示矩阵的行数和列数,1≤mhorizontal<mvertical≤k×w,0<k<1,w表示图像的宽度,k表示缩放系数;利用该矩阵对第一二值图像ib1分别进行纵向腐蚀操作,得到第四二值图像ib4;再对第四二值图像ib4进行纵向膨胀操作,得到第五二值图像ib5;
(3)直线检测。对第三二值图像ib3进行直线检测,得到第六二值图像ib6,对第五二值图像ib5进行直线检测,得到第七二值图像ib7。将第六二值图像ib6和第七二值图像ib7中的线段进行合并,得到第八二值图像ib8;
(4)干扰线检测。
根据以下三种干扰线特征判断第八二值图像ib8中的每一条横向线段hi是否属于干扰线,其中,i=1,…,m,m是第八二值图像ib8中横向线段的数目:
a)横向线段hi端点衔接处发生断裂;
b)横向线段hi的长度与第八二值图像ib8中所有横向线段的平均长度的偏差较大;
c)横向线段hi的倾斜角度与第八二值图像ib8中所有横向线段的平均倾斜角度偏差较大;
当横向线段hi满足上述两种及以上特征时,则认为横向线段hi为干扰线;
根据以下三种干扰线特征判断第八二值图像ib8中的每一条纵向线段gj是否属于干扰线,其中,j=1,…,n,n是第八二值图像ib8中纵向线段的数目:
a)纵向线段gj端点衔接处发生断裂;
b)纵向线段gj的长度与第八二值图像ib8中所有纵向线段的平均长度的偏差较大;
c)纵向线段gj的倾斜角度与第八二值图像ib8中所有纵向线段的平均倾斜角度偏差较大;
当纵向线段gj满足上述两种及以上特征时,则认为纵向线段gj为干扰线;
(5)干扰线去除。将第八二值图像ib8中的干扰线去除,得到表格结构线段结果图像ir。
上述步骤(1)中局部自适应二值化处理的方法是:
对于文档灰度图像i中位置为(x,y)的像素,以其为中心选取宽为p、高为q的区域块d,2<p≤w,2<q≤h,w和h分别是文档灰度图像i的宽和高;对区域d中所有像素依据其与(x,y)位置像素的距离进行高斯加权和计算,得到(x,y)位置像素的二值化阈值td:
其中,id(u,v)表示区域块d中(u,v)位置像素的灰度值,fd(u,v)表示区域块d中(u,v)位置像素对应的权重,权重fd(u,v)通过以下公式计算:
对于文档灰度图像i中位置为(x,y)的像素,其二值化之后的值b(x,y)按以下公式计算:
其中,i(x,y)表示文档灰度图像i中(x,y)位置像素的灰度值,td(x,y)表示文档灰度图像i中(x,y)位置像素对应的二值化阈值。
上述步骤(2)中对第一二值图像ib1进行横向腐蚀操作的具体方法是:对于第一二值图像ib1中的每一个像素p,将矩阵ghorizontal的中心点对准像素p,并计算矩阵ghorizontal所覆盖的所有像素中的最小值,将其作为像素p的像素值。
上述步骤(2)中对第二二值图像ib2进行横向膨胀的具体方法是:对于第二二值图像ib2中的每一个像素p,将矩阵ghorizontal的中心点对准像素p,并计算矩阵ghorizontal所覆盖的所有像素中的最大值,将其作为像素p的像素值。
上述步骤(2)中对第一二值图像ib1进行纵向腐蚀操作的具体方法是:对于第一二值图像ib1中的每一个像素p,将矩阵gvertical的中心点对准像素p,并计算矩阵gvertical所覆盖的所有像素中的最小值,将其作为像素p的像素值。
上述步骤(2)中对第四二值图像ib4进行纵向膨胀的具体方法是:对于第四二值图像ib4中的每一个像素p,将矩阵gvertical的中心点对准像素p,并计算矩阵gvertical所覆盖的所有像素中的最大值,将其作为像素p的像素值。
上述步骤(3)中直线检测所采用的方法为hough直线检测算法(参见名称为“methodandmeansforrecognizingcomplexpatterns”、专利号为us3069654a的美国专利以及论文“useofthehoughtransformationtodetectlinesandcurvesinpictures,”[dudaro,hartpe,graphicsandimageprocessing,vol.15,pp.11-15,1972.]的文献)。
上述步骤(4)中,对于第八二值图像ib8中的每一条横向线段hi,i=1,…,m,m是第八二值图像ib8中横向线段的数目,三种干扰线特征的计算方法如下:
(4.1)判断横向线段hi端点衔接处是否断裂的具体算法是:
(4.1.1)对于第八二值图像ib8中的每一条纵向线段gj,j=1,…,n,n是第八二值图像ib8中纵向线段的数目,过横向线段hi的左端点和右端点分别作其到纵向线段gj的垂线,当这两条垂线与纵向线段gj的交点均在线段gj内部时,计算横向线段hi的左端点到纵向线段gj的距离di,j,1及横向线段hi的右端点到纵向线段gj的距离di,j,2。
(4.1.2)对于横向线段hi,计算所有di,j,1中的最小值mindi,1和所有di,j,2中的最小值mindi,2,计算公式如下:
mindi,1=min(di,1,1,…,di,n,1)(4)
mindi,2=min(di,1,2,…,di,n,2)(5)
(4.1.3)当最小距离值mindi,1、mindi,2中的最大值大于给定阈值tlh时,即
max(mindi,1,mindi,2)>tlh(6)
则认为横向线段hi属于疑似干扰线。
(4.2)判断横向线段hi长度与第八二值图像ib8中所有横向线段平均长度的偏差是否较大的算法是:
(4.2.1)对于第八二值图像ib8中的每一条横向线段hk,k=1,…,m,m是第八二值图像ib8中横向线段的数目,计算其线段长度
其中,
(4.2.2)计算第八二值图像ib8中所有横向线段长度的平均长度lah,计算公式如下:
(4.2.3)对于横向线段hi,计算其长度
则认为横向线段hi属于疑似干扰线。
(4.3)判断横向线段hi的倾斜角度与第八二值图像ib8中所有横向线段长度的平均倾斜角度的偏差是否较大的算法是:
(4.3.1)对于第八二值图像ib8中的每一条横向线段hk,k=1,…,m,m是第八二值图像ib8中横向线段的数目,计算其倾斜角度
其中,arctan为反正切函数,
(4.3.2)计算第八二值图像ib8中所有横向线段的平均倾斜角度θah,计算公式如下:
(4.3.3)对于横向线段hi,计算其倾斜角度
则认为横向线段hi属于疑似干扰线。
对于第八二值图像ib8中的每一条纵向线段gj,j=1,…,n,n是第八二值图像ib8中纵向线段的数目,三种干扰线特征的计算方法如下:
(4.4)判断纵向线段gj端点衔接处是否断裂的具体算法是:
(4.4.1)对于第八二值图像ib8中的每一条横向线段hi,i=1,…,m,m是第八二值图像ib8中横向线段的数目,过纵向线段gj的左端点和右端点分别作其到横向线段hi的垂线,当这两条垂线与横向线段hi的交点均在横向线段hi内部时,计算纵向线段gj的左端点到横向线段hi的距离rj,i,1及纵向线段gj的右端点到横向线段hi的距离rj,i,2。
(4.4.2)对于纵向线段gj,计算所有rj,i,1中的最小值minrj,1和所有rj,i,2中的最小值minrj,2,计算公式如下:
minrj,1=min(rj,1,1,…,ri,m,1)(13)
minrj,2=min(rj,1,2,…,rj,m,2)(14)
(4.4.3)当最小距离值minrj,1、minrj,1中的最大值大于给定阈值tlv时,即
max(minrj,1,minrj,2)>tlv(15)
则认为纵向线段gj属于疑似干扰线。
(4.5)判断纵向线段gj长度与第八二值图像ib8中所有纵向线段平均长度的偏差是否较大的算法如下:
(4.5.1)对于第八二值图像ib8中的每一条纵向线段gk,k=1,…,n,n是第八二值图像ib8中纵向线段的数目,计算其线段长度
其中,
(4.5.2)计算第八二值图像ib8中所有纵向线段长度的平均长度lav,计算公式如下:
(4.5.3)对于纵向线段gj,计算其长度
则认为纵向线段gj属于疑似干扰线。
(4.6)判断纵向线段gj的倾斜角度与第八二值图像ib8中所有横向线段长度的平均倾斜角度的偏差是否较大的算法如下:
(4.6.1)对于第八二值图像ib8中的每一条纵向线段gk,k=1,…,n,n是第八二值图像ib8中纵向线段的数目,计算其倾斜角度
其中,arctan为反正切函数,
(4.6.2)计算第八二值图像ib8中所有纵向线段的平均倾斜角度θav,计算公式如下:
(4.6.3)对于纵向线段gj,计算其倾斜角度
则认为纵向线段gj属于疑似干扰线。
本发明的有益效果是:本发明可自动检测出表格文档灰度图像中的干扰线,并对其进行去除,从而最大程度上降低干扰线对文档灰度图像中表格结构自动识别的影响。该方法干扰线检测速度快,准确率高,应用于文档灰度图像表格结构自动识别,可有效提升表格结构识别的准确率。
附图说明
下面结合附图和具体实施方式对本发明作进一步的详细说明。
图1是本发明实施例的方法流程图;
图2是本发明实施例的灰度图像;
图3是本发明实施例步骤(1)得到的第一二值图像ib1;
图4是本发明实施例步骤(2)得到的第三二值图像ib3;
图5是本发明实施例步骤(2)得到的第五二值图像ib5;
图6是本发明实施例步骤(3)得到的第六二值图像ib6;
图7是本发明实施例步骤(3)得到的第七二值图像ib7;
图8是本发明实施例步骤(3)得到的第八二值图像ib8;
图9是本发明实施例步骤(4)得到的干扰线图像;
图10是本发明实施例步骤(5)得到的表格结构线段结果图像ir。
具体实施方式
下面将结合本发明实施例中的附图,对本发明的具体实施方式作进一步详细说明。需要注意的是,此处根据本发明一种表格干扰线去除算法的具体实施例仅作为举例,并不用于限定本发明。
实施例
本实施例结合一张宽为1904像素、高为2000像素的包含表格的文档灰度图像i,对表格干扰线去除算法进行说明。如图1方法流程图所示,本发明采用以下步骤从表格线段中提取干扰线:
(1)二值化处理。对文档灰度图像i进行局部自适应二值化处理,以去除图像中背景噪声干扰,同时将有效的表格线段以及文字信息提取出来,得到第一二值图像ib1。
具体算法是:
对灰度图像i中位置为(x,y)的像素,以其为中心选取宽为25、高为25的区域块d。对区域d中所有像素依据其与(x,y)位置像素的距离进行高斯加权和计算,得到(x,y)位置像素的阈值td:
其中,id(u,v)表示区域块d中(u,v)位置像素的灰度值,fd(u,v)表示区域块d中(u,v)位置像素对应的权重,权重fd(u,v)通过以下公式计算:
对于文档灰度图像i中位置为(x,y)的像素,其二值化之后的值b(x,y)按以下公式计算:
其中,i(x,y)表示文档灰度图像i中(x,y)位置像素的灰度值,td(x,y)表示文档灰度图像i中(x,y)位置像素对应的二值化阈值。
二值化处理得到的第一二值图像ib1如图3所示。
(2)腐蚀、膨胀操作。
设置一个大小为1×50横向腐蚀及膨胀参数矩阵ghorizontal,设置一个大小为54×1的矩阵纵向腐蚀及膨胀参数矩阵gvertical。
对第一二值图像ib1进行横向腐蚀操作,得到第二二值图像ib2,具体的方法是:对于第一二值图像ib1中的每一个像素p,将矩阵ghorizontal的中心点对准像素p,并计算矩阵ghorizontal所覆盖的所有像素中的最小值,将其作为像素p的像素值。
对第二二值图像ib2进行横向膨胀操作,得到第三二值图像ib3,具体的方法是:对于第二二值图像ib2中的每一个像素p,将矩阵ghorizontal的中心点对准像素p,并计算矩阵ghorizontal所覆盖的所有像素中的最大值,将其作为像素p的像素值。
对第一二值图像ib1进行纵向腐蚀操作,得到第四二值图像ib4,具体的方法是:对于第一二值图像ib1中的每一个像素p,将矩阵gvertical的中心点对准像素p,并计算矩阵gvertical所覆盖的所有像素中的最小值,将其作为像素p的像素值。
对第四二值图像ib4进行纵向膨胀操作,得到第五二值图像ib5,具体的方法是:对于第四二值图像ib4中的每一个像素p,将矩阵gvertical的中心点对准像素p,并计算矩阵gvertical所覆盖的所有像素中的最大值,将其作为像素p的像素值。
腐蚀、膨胀操作得到的第三二值图像ib3如图4所示,腐蚀、膨胀操作得到的第五二值图像ib5如图5所示。
(3)直线检测。
采用hough直线检测算法对第三二值图像ib3进行直线检测,得到第六二值图像ib6,如图6所示。采用hough直线检测算法对第五二值图像ib5进行直线检测,得到第七二值图像ib7,如图7所示。将六二值图像ib6和第七二值图像ib7中的线段进行合并,得到第八二值图像ib8,如图8所示。
(4)干扰线检测。
对第八二值图像ib8中的每一条横向线段hi,i=1,…,m,m是第八二值图像ib8中横向线段的数目,根据以下三种干扰线特征判断横向线段hi是否属于干扰线:
a)横向线段hi端点衔接处发生断裂;
b)横向线段hi的长度与第八二值图像ib8中所有横向线段的平均长度的偏差较大;
c)横向线段hi的倾斜角度与第八二值图像ib8中所有横向线段的平均倾斜角度偏差较大。
当横向线段hi满足上述两种及以上特征时,则认为横向线段hi为干扰线。
对第八二值图像ib8中的每一条纵向线段gj,j=1,…,n,n是第八二值图像ib8中纵向线段的数目,根据以下三种干扰线特征判断纵向线段gj是否属于干扰线:
a)纵向线段gj端点衔接处发生断裂;
b)纵向线段gj的长度与第八二值图像ib8中所有纵向线段的平均长度的偏差较大;
c)纵向线段gj的倾斜角度与第八二值图像ib8中所有纵向线段的平均倾斜角度偏差较大。
当纵向线段gj满足上述两种及以上特征时,则认为纵向线段gj为干扰线。
对于第八二值图像ib8中的每一条横向线段hi,i=1,…,m,m是第八二值图像ib8中横向线段的数目,三种干扰线特征的计算方法如下:
(4.1)判断横向线段hi端点衔接处是否断裂的具体算法是:
(4.1.1)对于第八二值图像ib8中的每一条纵向线段gj,j=1,…,n,n是第八二值图像ib8中纵向线段的数目,过横向线段hi的左端点和右端点分别作其到纵向线段gj的垂线,当这两条垂线与纵向线段gj的交点均在线段gj内部时,计算横向线段hi的左端点到纵向线段gj的距离di,j,1及横向线段hi的右端点到纵向线段gj的距离di,j,2。
(4.1.2)对于横向线段hi,计算所有di,j,1中的最小值mindi,1和所有di,j,2中的最小值mindi,2,计算公式如下:
mindi,1=min(di,1,1,…,di,n,1)(25)
mindi,2=min(di,1,2,…,di,n,2)(26)
(4.1.3)设置阈值tlh=10。当最小距离值mindi,1、mindi,2中的最大值大于给定阈值tlh时,即
max(mindi,1,mindi,2)>tlh(27)
则认为横向线段hi属于疑似干扰线。
(4.2)判断横向线段hi长度与第八二值图像ib8中所有横向线段平均长度的偏差是否较大的算法是:
(4.2.1)对于第八二值图像ib8中的每一条横向线段hk,k=1,…,m,m是第八二值图像ib8中横向线段的数目),计算其线段长度
其中,
(4.2.2)计算第八二值图像ib8中所有横向线段长度的平均长度lah,计算公式如下:
(4.2.3)设置阈值tlh=0.25×lah。对于横向线段hi,计算其长度
则认为横向线段hi属于疑似干扰线。
(4.3)判断横向线段hi的倾斜角度与第八二值图像ib8中所有横向线段长度的平均倾斜角度的偏差是否较大的算法是:
(4.3.1)对于第八二值图像ib8中的每一条横向线段hk,k=1,…,m,m是第八二值图像ib8中横向线段的数目,计算其倾斜角度
其中,arctan为反正切函数,
(4.3.2)计算第八二值图像ib8中所有横向线段的平均倾斜角度θah,计算公式如下:
(4.3.3)设置阈值tθh=15。对于横向线段hi,计算其倾斜角度
则认为横向线段hi属于疑似干扰线。
对于第八二值图像ib8中的每一条纵向线段gj,j=1,…,n,n是第八二值图像ib8中纵向线段的数目,三种干扰线特征的计算方法如下:
(4.4)判断纵向线段gj端点衔接处是否断裂的具体算法是:
(4.4.1)对于第八二值图像ib8中的每一条横向线段hi,i=1,…,m,m是第八二值图像ib8中横向线段的数目,过纵向线段gj的左端点和右端点分别作其到横向线段hi的垂线,当这两条垂线与横向线段hi的交点均在横向线段hi内部时,计算纵向线段gj的左端点到横向线段hi的距离rj,i,1及纵向线段gj的右端点到横向线段hi的距离rj,i,2。
(4.4.2)对于纵向线段gj,计算所有rj,i,1中的最小值minrj,1和所有rj,i,2中的最小值minrj,2,计算公式如下:
minrj,1=min(rj,1,1,…,ri,m,1)(34)
minrj,2=min(rj,1,2,…,rj,m,2)(35)
(4.4.3)设置阈值tlv=10。当最小距离值minrj,1、minrj,1中的最大值大于阈值tlv时,即
max(minrj,1,minrj,2)>tlv(36)
则认为纵向线段gj属于疑似干扰线。
(4.5)判断纵向线段gj长度与第八二值图像ib8中所有纵向线段平均长度的偏差是否较大的算法如下:
(4.5.1)对于第八二值图像ib8中的每一条纵向线段gk,k=1,…,n,n是第八二值图像ib8中纵向线段的数目,计算其线段长度
其中,
(4.5.2)计算第八二值图像ib8中所有纵向线段长度的平均长度lav,计算公式如下:
(4.5.3)设置阈值tlv=0.25×lah。对于纵向线段gj,计算其长度
则认为纵向线段gj属于疑似干扰线。
(4.6)判断纵向线段gj的倾斜角度与第八二值图像ib8中所有横向线段长度的平均倾斜角度的偏差是否较大的算法如下:
(4.6.1)对于第八二值图像ib8中的每一条纵向线段gk,k=1,…,n,n是第八二值图像ib8中纵向线段的数目,计算其倾斜角度
其中,arctan为反正切函数,
(4.6.2)计算第八二值图像ib8中所有纵向线段的平均倾斜角度θav,计算公式如下:
(4.6.3)设置阈值tθv=15。对于纵向线段gj,计算其倾斜角度
则认为纵向线段gj属于疑似干扰线。
得到的干扰线图像idl如图9所示。
(5)干扰线去除。
将第八二值图像ib8中的干扰线去除,得到表格结构线段结果图像ir,如图10所示。
以上所述为本发明的较佳实施例,并不用以限制本发明,凡不脱离本发明所公开的精神下完成的等效或修改,均应包含在本发明保护的范围之内。