本发明涉及基于彩色线段的票据快速定位方法及其系统,属于图像识别领域。
背景技术:
通过图像处理技术手段,将票据的文字、数字转化为电子版的数据,通过计算机程序,快速实现数据信息的采集。传统财务流程中,存在大量的票据需要手工录入,使用图像识别技术极大提高了数据采集的效率和准确度。随着图像处理与ocr字符识别技术的发展,财务流程电子化极大地减轻了财务票据报账报销的工作强度。
在自动票据识别,名片识别等场景中,使用移动端拍照得到的影像不是精确的票据,甚至还因为拍摄角度不同,得到的图像畸变。为了方便识别和处理,需要自动化方法将票据裁剪出来,同时矫正畸变图像,进行后续处理。现有技术的线段检测算法在票据检测上存在几个不足:1、不适应彩色图像,彩色图像需要转成灰度图后进行线段检测;2、票据内容中本身具有大量线条,线条与背景颜色梯度高,步长短,而票据边沿通常是梯度低,步长长,不易检测;3、检测速度慢。
技术实现要素:
为了解决上述技术问题,本发明提供基于彩色线段检测的票据边框快速定位方法及其系统,其能够对彩色票据的进行快速定位。
本发明的技术方案一:
基于彩色线段检测的票据边框快速定位方法,包括如下步骤:
s1:获取一帧包含票据的图像。
s2:通过线性插值法按比例对所述一帧包含票据的图像进行缩小处理,得到缩小图像,线性插值法使用的比例值lv=300/min(w,h),其中,w,h分别为所述一帧包含票据的图像的宽与长,所述缩小图像的宽和高分别为w2=w×lv,h2=h×lv。
s3:通过彩色lsd线段检测算法,识别所述缩小图像中所有的线段,所述线段表示为l={x1,y1,x2,y2},其中,(x1,y1)和(x2,y2)是线段l的两个端点,并将所有线段组成线段集合l_set;其中,所述彩色lsd线段检测算法通过对票据图像进行一次高斯降采样并缩小图像,对图像的rgb三通道进行梯度检测,确定三者中最大的梯度值作为基准梯度,经过区域增长运算及矩形估计运算,输出检测到的线段。
s4:对线段集合l_set中的所有线段按长度从大到小排序,并通过线段合并算法进行线段合并,合并其中近似一个直线上的线段。
s5:对s4步骤经过线段合并后的线段进行分组,根据线段两端端点坐标差值,将线段分为4组,分别对应四边形的上下左右四边方向。
s6:对4组线段分别进行过滤处理,去除不合格线段,包括偏离和过短的线段。
s7:从经过过滤处理的4组线段中通过穷举法,按照分组中的编号顺序依次从各组分别取一条线段,使得各组每个线段都互相组合过一次,并计算每种组合中相邻两条线段的相邻端点之间的距离之和,当距离之和最小时,输出这四条线段。
s8:将s7步骤输出的四条线段组成四边形,计算相邻两条线段直线的交点,得到四个交点,输出这4个交点作为票据的4个顶点。
s3步骤中,彩色lsd线段检测算法的步骤为:
对图像进行高斯降采样,缩小图像分辨率。
对缩小分辨率的图像的每个像素点分别进行梯度计算,其中,像素的r、g、b三通道分别应用梯度算法进行对应通道的梯度计算,取三个梯度中的最大值作为当前像素的梯度值。
根据输出的梯度值对每个像素进行筛选,去除其中小于梯度阈值的像素,其中,所述梯度阈值为
对筛选后的像素分别根据其梯度值进行区域增长运算,合并与当前像素梯度方向相同的像素,获得对应的规划区域。
对所有的规划区域进行矩形近似计算,得到对应的直线段。
输出所有直线段的端点坐标。
s4步骤中,线段合并算法为:
先对线段l(i)的顶点a、b和l(j)的顶点c、d,判断线段ac、ad、bc、bd与水平线的夹角∠1、∠2、∠3、∠4、如果四个夹角小于1度,判断距离最近的两个顶点距离是否小于10,是则判断成功进入下一步,否则判断失败;
对线段l(i)的顶点a、b和l(j)的顶点c、d,取距离最长的两个顶点做新的线段,加入到集合中,删除原来的两条线段。
s5步骤中,分组方法为,当dx>dy且y1<y0且y2<y0,则将线段l归为组1;当dx>dy且y1>y0且y2>y0,则将线段l归为组2;当dx<dy且x1<x0且x2<x0,则将线段l归为组3;当dx<dy且x1>x0且x2>x0,则将线段l归为组4;否则,剔除线段;其中,dx=|x2-x1|,dy=|y2-y1|,x0=w2/2,y0=h2/2。
s6步骤中,过滤处理方法为,对当前组中的任意两条线段l1、l2,当∠(l1,l2)小于3度,且dst1<dst2,则删除偏离线段l1;当∠(l1,l2)小于3度,且dst1>dst2,则删除片偏离线段l2,其中,∠(l1,l2)表示l1和l2的夹角,dst1、dst2分别表示l1、l2所在直线与点(x0,y0)距离;
删除所有当前组中长度小于len/3的过短线段,其中len为当前组中线段长度最长的值。
本发明的技术方案二:
基于彩色线段检测的票据边框快速定位系统,包括存储器和处理器,所述存储器存储有指令,所述指令适于由处理器加载并执行以下步骤:
获取一帧包含票据的图像。
通过线性插值法按比例对所述一帧包含票据的图像进行缩小处理,得到缩小图像,线性插值法使用的比例值lv=300/min(w,h),其中,w,h分别为所述一帧包含票据的图像的宽与长,所述缩小图像的宽和高分别为w2=w×lv,h2=h×lv。
通过彩色lsd线段检测算法,识别所述缩小图像中所有的线段,所述线段表示为l={x1,y1,x2,y2},其中,(x1,y1)和(x2,y2)是线段l的两个端点,并将所有线段组成线段集合l_set;其中,所述彩色lsd线段检测算法通过对票据图像进行一次高斯降采样并缩小图像,对图像的rgb三通道进行梯度检测,确定三者中最大的梯度值作为基准梯度,经过区域增长运算及矩形估计运算,输出检测到的线段。
对线段集合l_set中的所有线段按长度从大到小排序,并通过线段合并算法进行线段合并,合并其中近似一个直线上的线段。
对经过线段合并后的线段进行分组,根据线段两端端点坐标差值,将线段分为4组,分别对应四边形的上下左右四边方向。
对4组线段分别进行过滤处理,去除不合格线段,包括偏离和过短的线段。
从经过过滤处理的4组线段中通过穷举法,按照分组中的编号顺序依次从各组分别取一条线段,使得各组每个线段都互相组合过一次,并计算每种组合中相邻两条线段的相邻端点之间的距离之和,当距离之和最小时,输出这四条线段。
将输出的四条线段组成四边形,计算相邻两条线段直线的交点,得到四个交点,输出这4个交点作为票据的4个顶点。
线段合并算法为:
对线段l(i)的顶点a、b和l(j)的顶点c、d,判断线段ac、ad、bc、bd与水平线的夹角∠1、∠2、∠3、∠4、如果四个夹角小于1度,判断距离最近的两个顶点距离是否小于10,是则判断成功进入下一步,否则判断失败;
对线段l(i)的顶点a、b和l(j)的顶点c、d,取距离最长的两个顶点做新的线段,加入到集合中,删除原来的两条线段。
分组方法为,当dx>dy且y1<y0且y2<y0,则将线段l归为组1;当dx>dy且y1>y0且y2>y0,则将线段l归为组2;当dx<dy且x1<x0且x2<x0,则将线段l归为组3;当dx<dy且x1>x0且x2>x0,则将线段l归为组4;否则,剔除线段;其中,dx=|x2-x1|,dy=|y2-y1|,x0=w2/2,y0=h2/2。
彩色lsd线段检测算法的步骤为:
对图像进行高斯降采样,缩小图像分辨率。
对缩小分辨率的图像的每个像素点分别进行梯度计算,其中,像素的r、g、b三通道分别应用梯度算法进行对应通道的梯度计算,取三个梯度中的最大值作为当前像素的梯度值。
根据输出的梯度值对每个像素进行筛选,去除其中小于梯度阈值的像素,其中,所述梯度阈值为
对筛选后的像素分别根据其梯度值进行区域增长运算,合并与当前像素梯度方向相同的像素,获得对应的规划区域。
对所有的规划区域进行矩形近似计算,得到对应的直线段。
输出所有直线段的端点坐标。
过滤处理方法为,对当前组中的任意两条线段l1、l2,当∠(l1,l2)小于3度,且dst1<dst2,则删除偏离l1;当∠(l1,l2)小于3度,且dst1>dst2,则删除偏离l2,其中,∠(l1,l2)表示l1和l2的夹角,dst1、dst2分别表示l1、l2所在直线与点(x0,y0)距离;
删除所有当前组中长度小于len/3的过短线段,其中len为当前组中线段长度最长的值。
本发明的有益效果为:
1.通过将图像缩小,可以减小步长长、梯度小等导致票据边沿检测不到的问题,通过后期连接和筛选,可以有效的找出真实的票据边沿和顶点。
2.使用改进的彩色lsd线段检测算法检测线段,能够适应彩色线条的检测,无需经过灰度图像转换,快速识别彩色票据线段。
3.通过线段过滤与合并,可以在短时间内得出亚像素级精度的检测结果,对票据与背景对比度很低的情况下仍可以检测出线条。
附图说明
图1为本发明的基于彩色线段检测的票据边框快速定位方法流程图;
图2为本发明的一个实施例的票据原图;
图3为本发明的一个实施例的经过彩色线段检测找到的线段结果示意图;
图4为本发明的一个实施例的经过线段合并分组的四组线段结果示意图;
图5为本发明的一个实施例的经过线段过滤后的票据边框定位线段示意图;
图6为本发明的一个实施例的经过线段过滤后的票据边框四边形示意图;
图7为本发明的使用的彩色lsd线段检测算法流程图。
具体实施方式
下面结合附图和具体实施例来对本发明进行详细的说明。
实施例一
如图1所示,基于彩色线段检测的票据边框快速定位方法,包括如下步骤:
s1:获取一帧包含票据的图像,如图2所示,原图为彩色图。
s2:通过线性插值法按比例对所述一帧包含票据的图像进行缩小处理,得到缩小图像。线性插值法使用的比例值lv=300/min(w,h),其中,w,h分别为所述一帧包含票据的图像的宽与长,所述缩小图像的宽和高分别为w2=w×lv,h2=h×lv。
s3:通过彩色lsd线段检测算法,识别所述缩小图像中所有的线段,所述线段表示为l={x1,y1,x2,y2},其中,(x1,y1)和(x2,y2)是线段l的两个端点,并将所有线段组成线段集合l_set;其中,所述彩色lsd线段检测算法通过对票据图像进行一次高斯降采样并缩小图像,对图像的rgb三通道进行梯度检测,确定三者中最大的梯度值作为基准梯度,经过区域增长运算及矩形估计运算,输出检测到的线段,如图3所示。
s4:对线段集合l_set中的所有线段按长度从大到小排序,再通过线段合并算法进行线段合并,合并其中近似一个直线上的线段。
s5:对s4步骤经过线段合并后的线段进行分组,根据线段两端端点坐标差值,将线段分为4组,分别对应四边形的上下左右四边方向。如图4所示,分别为上下左右边线段集合示意图。
s6:对4组线段分别进行过滤处理,去除不合格线段,包括偏离和过短的线段。
s7:从经过过滤处理的4组线段中通过穷举法,按照分组中的编号顺序依次从各组分别取一条线段,使得各组每个线段都互相组合过一次,并计算每种组合中相邻两条线段的相邻端点之间的距离之和,当距离之和最小时,输出这四条线段,如图5所示。
票据的边框一定是组成范围最大的四边形,理论上应该是相邻线段端点直接重合,距离为0,考虑到图像处理中模糊缺失等因素影响,可能造成部分线段缺失未被识别,所以以距离最小为条件。
s8:将s7步骤输出的四条线段组成四边形,相邻两条线段直线求交点,得到四个交点,输出这4个交点,认为是票据的4个顶点。如图6所示,以四条线段作为四边形的四个边的基准线段,延长各个线段,直至与另一线段相交,得到完整的四边形,输出四个交点坐标。
如图7所示,s3步骤中,彩色lsd线段检测算法的步骤为:
对图像进行高斯降采样,缩小图像分辨率。
对缩小分辨率的图像的每个像素点分别进行梯度计算,其中,像素的r、g、b三通道分别应用梯度算法进行对应通道的梯度计算,取三个梯度中的最大值作为当前像素的梯度值。
根据输出的梯度值对每个像素进行筛选,去除其中小于梯度阈值的像素,其中,所述梯度阈值为
对筛选后的像素分别根据其梯度值进行区域增长运算,合并与当前像素梯度方向相同的像素,获得对应的规划区域。
对所有的规划区域进行矩形近似计算,得到对应的直线段。
输出所有直线段的端点坐标。
彩色lsd检测算法,是在传统lsd线段检测算法的基础上进行的优化,包括:对图片进行一次高斯降采样并缩小图片,对图片的rgb三通道进行梯度检测,确定三者中最大的梯度值作为基准梯度,区域增长,矩形估计,输出检测结果。当采样图像为彩色图像时,无需经过灰度处理,通过对原图三通道进行梯度检测确定梯度值,快速精确地检测到彩色边缘线段。在本实施例中,因为票据的不同,其信息包括彩色线段和数据,使用传统线段检测算法会失去彩色信息,导致部分关键线段无法读取。
s4步骤中,在本实施例中,线段合并算法为:
其中,analy_merge(l(i),l(j))表示为,对线段l(i)的顶点a、b和l(j)的顶点c、d,判断线段ac、ad、bc、bd与水平线的夹角∠1、∠2、∠3、∠4、如果四个夹角小于1度,判断距离最近的两个顶点距离是否小于10,是则判断成功进入merge(l(i),l(j)),否则判断失败,阈值10是经过多次实验得出的最佳数值。
merge(l(i),l(j))表示为,对线段l(i)的顶点a、b和l(j)的顶点c、d,取距离最长的两个顶点做新的线段,加入到集合中,删除原来的两条线段。
通过线段合并,可以将原本为一条线段的两条线段合并为一条线段,因为在线段检测过程中,因为原图扭曲,图像拍摄,算法处理等因素的影响,会导致一条线段被判定为曲折的两条线断,通过线段合并可将其还原。
s5步骤中,分组方法为,当dx>dy且y1<y0且y2<y0,则将线段l归为组1;当dx>dy且y1>y0且y2>y0,则将线段l归为组2;当dx<dy且x1<x0且x2<x0,则将线段l归为组3;当dx<dy且x1>x0且x2>x0,则将线段l归为组4;否则,剔除线段;其中,dx=|x2-x1|,dy=|y2-y1|,x0=w2/2,y0=h2/2。
将线段分为上下左右四边的分组,其中,上下边则横坐标差值大于纵坐标差值,上边位于图像上部,则纵坐标大于图像纵坐标中间值,下边位于图像下部,则纵坐标小于图像纵坐标中间值;左右边则横坐标差值小于纵坐标差值,左边位于图像左部,则横坐标小于图像横坐标中间值,右边位于图像右部,则横坐标大于图像横坐标中间值。
s6步骤中,过滤处理方法为,对当前组中的任意两条线段l1、l2,当∠(l1,l2)小于3度,且dst1<dst2,则删除偏离线段l1;当∠(l1,l2)小于3度,且dst1>dst2,则删除偏离线段l2,其中,∠(l1,l2)表示l1和l2的夹角,dst1、dst2分别表示l1、l2所在直线与点(x0,y0)距离;若当前组中线段长度最长的值为len,则删除所有当前组中小于len/3的过短线段。过滤处理过滤掉离中心较近的短线段。
本发明的有益效果为,通过将图像缩小,可以减小步长长、梯度小等导致票据边沿检测不到的问题,通过后期连接和筛选,可以有效的找出真实的票据边沿和顶点。使用改进的彩色lsd线段检测算法检测线段,能够适应彩色线条的检测,无需经过灰度图像转换,快速识别彩色票据线段。通过线段过滤与合并,可以在短时间内得出亚像素级精度的检测结果,对票据与背景对比度很低的情况下仍可以检测出线条。
实施例二
基于彩色线段检测的票据边框快速定位系统,包括存储器和处理器,所述存储器存储有指令,所述指令适于由处理器加载并执行以下步骤:
获取一帧包含票据的图像。
通过线性插值法按比例对所述一帧包含票据的图像进行缩小处理,得到缩小图像。线性插值法使用的比例值lv=300/min(w,h),其中,w,h分别为所述一帧包含票据的图像的宽与长,所述缩小图像的宽和高分别为w2=w×lv,h2=h×lv。
使用彩色lsd检测算法,找出所述缩小图像中所有的线段,组成线段集合l_set,所述线段表示为l={x1,y1,x2,y2},其中,(x1,y1)和(x2,y2)是线段l的两个端点,其中,所述彩色lsd线段检测算法通过对票据图像进行一次高斯降采样并缩小图像,对图像的rgb三通道进行梯度检测,确定三者中最大的梯度值作为基准梯度,经过区域增长运算及矩形估计运算,输出检测到的线段。
对线段集合l_set中的所有线段按长度从大到小排序,再通过线段合并算法进行线段合并,合并其中近似一个直线上的线段。
对经过线段合并后的线段进行分组,根据线段两端端点坐标差值,将线段分为4组,分别对应四边形的上下左右四边方向。
对4组线段分别进行过滤处理,去除不合格线段,包括偏离和过短的线段。
从经过过滤处理的4组线段中通过穷举法,按照分组中的编号顺序依次从各组分别取一条线段,使得各组每个线段都互相组合过一次,并计算每种组合中相邻两条线段的相邻端点之间的距离之和,距离之和最小时,则输出这四条线段。
将输出的四条线段组成四边形,相邻两条线段直线求交点,得到四个交点,输出这4个交点,认为是票据的4个顶点。
在本实施例中,线段合并算法为:
其中,analy_merge(l(i),l(j))表示为,对线段l(i)的顶点a、b和l(j)的顶点c、d,判断线段ac、ad、bc、bd与水平线的夹角∠1、∠2、∠3、∠4、如果四个夹角小于1度,判断距离最近的两个顶点距离是否小于10,是则判断成功进入merge(l(i),l(j)),否则判断失败。
merge(l(i),l(j))表示为,对线段l(i)的顶点a、b和l(j)的顶点c、d,取距离最长的两个顶点做新的线段,加入到集合中,删除原来的两条线段。
分组方法为,当dx>dy且y1<y0且y2<y0,则将线段l归为组1;当dx>dy且y1>y0且y2>y0,则将线段l归为组2;当dx<dy且x1<x0且x2<x0,则将线段l归为组3;当dx<dy且x1>x0且x2>x0,则将线段l归为组4;否则,剔除线段;其中,dx=|x2-x1|,dy=|y2-y1|,x0=w2/2,y0=h2/2。
彩色lsd线段检测算法的步骤为:
对图像进行高斯降采样,缩小图像分辨率。
对缩小分辨率的图像的每个像素点分别进行梯度计算,其中,像素的r、g、b三通道分别应用梯度算法进行对应通道的梯度计算,取三个梯度中的最大值作为当前像素的梯度值。
根据输出的梯度值对每个像素进行筛选,去除其中小于梯度阈值的像素,其中,所述梯度阈值为
对筛选后的像素分别根据其梯度值进行区域增长运算,合并与当前像素梯度方向相同的像素,获得对应的规划区域。
对所有的规划区域进行矩形近似计算,得到对应的直线段。
输出所有直线段的端点坐标。
过滤处理方法为,对当前组中的任意两条线段l1、l2,∠(l1,l2)表示l1和l2的夹角,dst1、dst2分别表示l1、l2所在直线与点(x0,y0)距离。如果∠(l1,l2)小于3度,且dst1<dst2,则删除偏离线段l1;如果∠(l1,l2)小于3度,且dst1>dst2,则删除偏离线段l2;若当前组中线段长度最长的值为len,则删除所有当前组中小于len/3的过短线段。
本发明的有益效果为,通过将图像缩小,可以减小步长长、梯度小等导致票据边沿检测不到的问题,通过后期连接和筛选,可以有效的找出真实的票据边沿和顶点。使用改进的彩色lsd线段检测算法检测线段,能够适应彩色线条的检测,无需经过灰度图像转换,快速识别彩色票据线段。通过线段过滤与合并,可以在短时间内得出亚像素级精度的检测结果,对票据与背景对比度很低的情况下仍可以检测出线条。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包含在本发明的专利保护范围内。