基于分段Hough变换直线检测的发票日期定位方法

文档序号:6543437阅读:177来源:国知局
基于分段Hough变换直线检测的发票日期定位方法
【专利摘要】本发明基于分段Hough变换直线检测的发票日期定位方法,步骤包括:步骤1:获取发票图片的宽、高;步骤2:从下到上按步长扫描二值图片;步骤3:在每个步长内计算每个点到原点的长度并保存Hough矩阵;步骤4:获取Hough矩阵中点个数最多的作为该步长内的主要直线;步骤5:统计并判断该直线上点个数是否大于宽的四分之一,若是,则跳到步骤6,否则加上步长返回步骤3;步骤6:获取该直线的断点数,如果直线不在离上端100以内且断点数小于44,或直线点个数大于三分之一宽,则该直线有效,跳到步骤7;否则加上步长返回步骤3;步骤7:将斜率和直线所在位置显示出来,即成。本发明的方法对接近水平直线的检测效果较好。
【专利说明】基于分段Hough变换直线检测的发票日期定位方法
【技术领域】
[0001]本发明属于图像处理【技术领域】,涉及一种基于分段Hough变换直线检测的发票日期定位方法。
【背景技术】
[0002]在计算机识别中,常常需要从图像中寻找感兴趣的区域,而直线检测作为图像处理中一个重要的环节,被人们广泛应用。目前,常用的直线检测算法有水平投影法、启发式连接、Radon变换、链码检测法和Hough变换等。
[0003]水平投影法最简单,但对有复杂文字信息的图像来说干扰很大,且必须做一定的旋转才可能找到直线。启发式连接算法相对简单,但对边缘检测结果较为敏感,容易产生分断的短直线。Radon变换简单、快速,但存在不能精确定位的问题,需借助直线拟合方法来精确定位直线位置。链码检测法需要对每个点进行方向标注,且需要对邻域像素点进行搜索,还可能造成回路。

【发明内容】

[0004]本发明的目的是提供一种基于分段Hough变换直线检测的发票日期定位方法,解决了现有技术中存在的噪声干扰、直线分段、精确定位、重复搜索的问题。
[0005]本发明采用的技术方案是,一种基于分段Hough变换直线检测的发票日期定位方法,按照以下步骤实施:
[0006]步骤1:获取发票图片的宽width、高height
[0007]预先对发票图片进行二值化,
[0008]设置步长Ap_Length ;再设置Hough[tMax] [rMax]数组的大小,第一个变量tMax为弧度维数;第二个变量rMax是长度维数,其计算式是:
[0009]rMax = (int)sqrt((float)(width*width+Ap_Length*Ap_Length))+1 ;
[0010]然后设置弧度转角度的常量值:fRate = (float) (3.141592/180.0);
[0011]步骤2:从下到上按步长扫描二值图片;
[0012]步骤3:在每个步长内根据如下Hough公式计算每个点到原点的长度并保存Hough矩阵,同时将每条直线所对应的点保存下来:
[0013]int P =x*cos ( Θ ) +dy*sin ( θ ),
[0014]其中,变量X为点的横坐标,变量dy为每个步长内点的纵坐标,变量Θ为角度循环变量,θ =t*fRate,其中O ( t〈tMax,通过Hough公式把图像空间中点(x, dy)映射到参数空间(P,Θ)中;
[0015]步骤4:获取Hough矩阵中点个数最多的作为该步长内的主要直线;
[0016]步骤5:统计并判断该直线上点个数是否大于宽的四分之一,若是,则跳到步骤6,否则加上步长返回步骤3;
[0017]步骤6:获取该直线的断点数[0018]如果直线不在离上端100以内且断点数小于44,或直线点个数大于三分之一宽,则该直线有效,跳到步骤7 ;否则加上步长返回步骤3 ;
[0019]步骤7:将斜率和直线所在位置显示出来,即成。
[0020]本发明的有益效果是,针对以上几种检测直线方法的缺点,本发明根据实际情况,运用分段Hough变换直线检测算法来定位机动车销售统一发票的日期位置。在噪声干扰的情况下,仍可以准确找出所需直线;不会存在直线分段情况;精确定位;避免重复搜索;对接近水平直线的检测效果较好。
【专利附图】

【附图说明】
[0021]图1是本发明基于分段Hough变换直线检测的发票日期定位方法的直线检测流程图;
[0022]图2是本发明基于分段Hough变换直线检测的发票日期定位方法实施例的发票原图;
[0023]图3是本发明基于分段Hough变换直线检测的发票日期定位方法的直线检测效果图。
【具体实施方式】
[0024]下面结合附图和【具体实施方式】对本发明进行详细说明。
[0025]参照图1,本发明基于分段Hough变换直线检测的发票日期定位方法,按照以下步骤实施:
[0026]步骤1:获取发票图片的宽width、高height
[0027]在进行以下步骤前,预先对发票图片进行二值化来获取图片中的水平直线,图2所示的发票效果图如图3所示,
[0028]在大量实验后,根据发票日期样本,将步长Ap_Length设为50 ;
[0029]再设置Hough[tMax] [rMax]数组的大小,第一个变量tMax为弧度维数,tMax =180 ;第二个变量rMax是长度维数,其计算式是:
[0030]rMax = (int)sqrt ((float)(width*width+Ap_Length*Ap_Length))+1 ;
[0031]然后设置弧度转角度的常量值:
[0032]fRate = (float) (3.141592/180.0)。
[0033]步骤2:从下到上按步长扫描二值图片
[0034]步骤3:在每个步长内根据如下Hough公式计算每个点到原点的长度并保存Hough矩阵,同时将每条直线所对应的点保存下来:
[0035]int P =x*cos ( Θ ) +dy*sin ( θ ),
[0036]其中,变量X为点的横坐标,变量dy为每个步长内点的纵坐标,变量Θ为角度循环变量,θ =t*fRate,其中O ( t〈tMax,通过Hough公式把图像空间中点(x, dy)映射到参数空间(P,Θ)中。
[0037]步骤4:获取Hough矩阵中点个数最多的作为该步长内的主要直线。
[0038]步骤5:统计并判断该直线上点个数是否大于宽的四分之一,若是,则跳到步骤6,否则加上步长返回步骤3。[0039]步骤6:获取该直线的断点数
[0040]如果直线不在离上端100以内且断点数小于44,或直线点个数大于三分之一宽,则该直线有效,跳到步骤7 ;否则加上步长返回步骤3。
[0041]步骤7:将斜率和直线所在位置显示出来,即成。
[0042]本发明方法,对于直线较为密集或较为稀疏的图片,根据需要为其设置不同的步长,而步长的设置在一定程度上已经限制了直线的斜率,这样就避免了去除角度接近竖直方向的直线,能够有效的实现所需的直线检测。
[0043]在对5000多张发票的测试中,通过本发明方法定位出日期的准确率为100%。
【权利要求】
1.一种基于分段Hough变换直线检测的发票日期定位方法,其特点在于,按照以下步骤实施: 步骤1:获取发票图片的宽width、高height 预先对发票图片进行了特殊二值化来获取图片中的水平直线, 设置步长Ap_Leng h ;再设置Hough [tMax] [rMax]数组的大小,第一个变量tMax为弧度维数;第二个变量rMax是长度维数,其计算式是:
rMax = (int)sqrt((float)(width*width+Ap_Length*Ap_Length))+1 ; 然后设置弧度转角度的常量值:fRate = (float) (3.141592/180.0); 步骤2:从下到上按步长扫描二值图片; 步骤3:在每个步长内根据如下Hough公式计算每个点到原点的长度并保存Hough矩阵,同时将每条直线所对应的点保存下来: intP =x氺cos(Θ)+dy*sin(Θ), 其中,变量X为点的横坐标,变量dy为每个步长内点的纵坐标,变量Θ为角度循环变量,Θ =t*fRate,其中O ( t〈tMax,通过Hough公式把图像空间中点(x, dy)映射到参数空间(P,Θ )中; 步骤4:获取Hough矩阵中点个数最多的作为该步长内的主要直线; 步骤5:统计并判断该直线上点个数是否大于宽的四分之一,若是,则跳到步骤6,否则加上步长返回步骤3; 步骤6:获取该直线的断点数 如果直线不在离上端100以内且断点数小于44,或直线点个数大于三分之一宽,则该直线有效,跳到步骤7 ;否则加上步长返回步骤3 ; 步骤7:将斜率和直线所在位置显示出来,即成。
2.根据权利要求1所述的基于分段Hough变换直线检测的发票日期定位方法,其特点在于:所述的步骤I中,根据发票日期样本,将步长Ap_Length设为50,弧度维数tMax =180。
【文档编号】G06K9/00GK103955669SQ201410143799
【公开日】2014年7月30日 申请日期:2014年4月10日 优先权日:2014年4月10日
【发明者】金海燕, 席倩, 王彬, 王晓帆, 黑新宏, 王磊, 叶晓辉 申请人:西安理工大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1