条形码定位方法、装置、计算机设备和存储介质与流程

文档序号:19947787发布日期:2020-02-18 09:44阅读:321来源:国知局
条形码定位方法、装置、计算机设备和存储介质与流程

本申请涉及图像处理技术领域,特别是涉及一种条形码定位方法、装置、计算机设备和存储介质。



背景技术:

目前条码的应用越来越广泛,在商品设备标签,移动支付等领域都存在广泛的应用。条码主要包括一维条形码和二维码,其中一维的条形码是由一组规则排列的条、空以及对应的字符组成的标记,“条”指对光线反射率较低的部分,“空”指对光线反射率较高的部分,这些条和空组成的数据表达一定的信息,并能够用特定的设备识读,转换成与计算机兼容的二进制和十进制信息。通常对于每一种物品,它的编码是唯一的,对于普通的一维条形码来说,还要通过数据库建立条形码与商品信息的对应关系,当条形码的数据传到计算机上时,由计算机上的应用程序对数据进行操作和处理。

目前条形码扫码设备还是以人为主动对准条码进行扫码为主,该扫码设备尽管较为便捷,但是该方式需要扫描激光辅助定位,而且对条形码的角度和形变较为敏感,若角度不合适可能会扫码失败。因此,条形码定位的好坏会直接影响解码的成功率,目前也有基于数字图像处理的条形码定位方法用于解决角度和形变问题,但是常见的定位方法计算量较大,例如分水岭定位法、轮廓分析法,导致需要在较高性能的芯片上才能达到工业要求,无法在小型的嵌入式芯片上实施。



技术实现要素:

基于此,有必要针对上述技术问题,提供一种能够减少计算量并且准确定位条形码的条形码定位方法、装置、计算机设备和存储介质。

一种条形码定位方法,方法包括:

获取待识别图像;

计算待识别图像每个像素点的梯度幅值和角度;

根据每个像素点的梯度幅值对待识别图像进行梯度量化得到若干个量化区域;

根据每个像素点的角度对每个量化区域进行区域增长得到若干个区域直线;

对各个区域直线进行聚类处理,得到条形码区域及条形码的中心点;

根据条形码区域内的各个区域直线计算出条形码的角度。

在其中一个实施例中,根据每个像素点的梯度幅值对待识别图像进行梯度量化得到若干个量化区域的步骤包括:

按照预设的梯度划分标准对待识别图像中的各个像素点进行梯度划分,得到若干个梯度区域;

对每个梯度区域内的像素点进行量化,得到量化区域。

在其中一个实施例中,根据每个像素点的角度对每个量化区域进行区域增长得到若干个区域直线的步骤包括:

从量化区域中随机选取一个像素点作为基准点;

根据基准点对各自所在的量化区域内的其他像素点进行主方向一致性判断;

将不满足主方向一致性的像素点从量化区域内剔除;

对满足主方向一致性的每个像素点四周的四个相邻像素点与量化区域内其他像素点进行主方向一致性判断;

将相邻像素点中满足主方向一致性的像素点提取到量化区域,并从其原来所在量化区域中剔除;

遍历各个量化区域后得到若干个区域直线。

在其中一个实施例中,对各个区域直线进行聚类处理,得到条形码区域及条形码的中心点的步骤包括:

计算每个区域直线的横纵比;

根据区域直线的横纵比确定区域直线的横纵方向;

根据区域直线的横纵方向确定区域直线的两端对应的端点像素点坐标、区域直线的中点坐标及区域直线的倾斜角;

依次提取任意一个区域直线作为基准直线,计算基准直线与其余每个区域直线的聚类参数;其中,聚类参数为基准直线的中点与其余任意一个区域直线的中点间的距离,和基准直线与区域直线的角度差的乘积;

判断基准直线与其余每个区域直线的聚类参数是否小于预设阈值,若小于则将聚类参数的累加,得到每个区域直线分别作为基准直线时的聚类参数累加值,若大于则剔除对应的区域直线,得到与聚类参数累加值对应的区域直线集;确定聚类参数累加值最小的区域直线集构成的区域为条形码区域,聚类参数累加值最小的区域直线集对应的基准直线的中点为条形码的中心点。

在其中一个实施例中,根据条形码区域内的各个区域直线计算出条形码的角度的步骤包括:

对条形码区域内的区域直线中点进行随机抽样,得到局内点;

对局内点进行直线拟合并计算出拟合直线的角度,将拟合直线的角度确定为条形码的角度。

在其中一个实施例中,方法还包括:

根据条形码的中心点,沿条形码角度确定条形码的起止符;

根据条形码的起止符计算出条形码区域的各个顶点坐标;

根据各顶点坐标拟合透视变换矩阵;

根据透视变换矩阵映射生成无角度倾斜的条形码。

在其中一个实施例中,方法还包括:

根据条形码的起止符确定条形码的类型;

根据条形码的类型确定对应的解码方式;

根据解码方式对条形码进行解码得到条形码的码值。

一种条形码定位装置,装置包括:

图像获取模块,用于获取待识别图像;

梯度计算模块,用于计算待识别图像每个像素点的梯度幅值和角度;

区域量化模块,用于根据每个像素点的梯度幅值对待识别图像进行梯度量化得到若干个量化区域;

区域增长模块,用于根据每个像素点的角度对每个量化区域进行区域增长得到若干个区域直线;

聚类模块,用于对各个区域直线进行聚类处理,得到条形码区域及条形码的中心点;

条形码角度计算模块,用于根据条形码区域内的各个区域直线计算出条形码的角度。

一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现以下步骤:

获取待识别图像;

计算待识别图像的方向梯度直方图;

根据方向梯度直方图对待识别图像进行梯度量化得到若干个量化区域;

对每个量化区域进行区域增长得到若干个区域直线;

对各个区域直线进行聚类处理,得到条形码区域及条形码的中心点;

根据条形码区域内的各个区域直线计算出条形码的角度。

一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:

获取待识别图像;

计算待识别图像的方向梯度直方图;

根据方向梯度直方图对待识别图像进行梯度量化得到若干个量化区域;

对每个量化区域进行区域增长得到若干个区域直线;

对各个区域直线进行聚类处理,得到条形码区域及条形码的中心点;

根据条形码区域内的各个区域直线计算出条形码的角度。

上述条码定位方法、装置、计算机设备和存储介质,通过计算待识别图像的每个像素点的梯度幅值和角度,对待识别图像进行梯度量化处理,对每个量化区域再进行区域增长处理得到若干个区域直线,对各个区域直线进行聚类处理,得到条形码区域及条形码的中心点,根据条形码区域内的各个区域直线计算出条形码的角度,定位待识别图像中的条形码,利用区域增长优化图像,再利用聚类处理剔除无关区域,有效提高定位精确度,并且计算量较小。

附图说明

图1为一个实施例中,条码定位方法的应用环境图;

图2为一个实施例中,条码定位方法的流程示意图;

图3为一个实施例中,根据每个像素点的梯度幅值对待识别图像进行梯度量化得到若干个量化区域步骤的流程示意图;

图4为一个实施例中,根据每个像素点的角度对每个量化区域进行区域增长得到若干个区域直线步骤的流程示意图;

图5为一个实施例中,对各个区域直线进行聚类处理,得到条形码区域及条形码的中心点步骤的流程示意图;

图6为一个实施例中,根据条形码区域内的各个区域直线计算出条形码的角度步骤的流程示意图;

图7为一个实施例中,提取条形码步骤的流程示意图;

图8为一个实施例中,对条形码进行解码步骤的流程示意图;

图9为一个实施例中,条形码定位装置的结构框图;

图10为一个实施例中,计算机设备的内部结构图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。

本申请提供的条码识别方法,可以应用于如图1所示的应用环境中。通过终端100对条码进行识别,其中,终端100可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、便携式可穿戴设备和扫码器。

在一个实施例中,如图2所示,提供了一种条形码定位方法,以该方法应用于图1中的终端为例进行说明,包括以下步骤:

步骤s210,获取待识别图像。

其中,待识别图像为采集到的包含有所要识别的条形码的图像,其上除了具有所要识别的条形码,可能还会具有一些与条形码无关的内容,形成复杂的背景,在识别时背景内容可能会与条形码重叠,使得识别难度提高。

终端100可以通过拍摄的方式采集待识别图像,还可以通过网络通信从其他终端或是服务器获取待识别图像。

步骤s220,计算待识别图像每个像素点的梯度幅值和角度。

分别计算出像素点水平方向的梯度gx和垂直方向的梯度gy,计算像素点水平方向的梯度gx和垂直方向的梯度gy时可以采用sobel算子进行计算,还可以采用fx=[-1,0,1]和fy=[-1,0,1]t进行计算,再根据像素点水平方向的梯度gx和垂直方向的梯度gy计算出幅值和角度。

其中梯度幅值g可以根据公式g=|gx|+|gy|计算,还可以根据公式:计算。角度根据公式计算。角度的范围为0°~360°。

步骤s230,根据每个像素点的梯度幅值对待识别图像进行梯度量化得到若干个量化区域。

模拟图像经过采样后,在空间上离散化为像素点,但采样所得的像素值(即灰度值)仍为连续量,利用像素值计算出的梯度幅值和角度也为连续量,需要将模拟量转化为离散量,将采样后的图像像素点的梯度幅值从模拟量转化为离散量即为梯度量化,量化后的梯度将会变为整数值,对于后续的图像处理能够降低计算量。

在一些实施例中,可以采用均匀量化或非均匀量化。均匀量化就是将各个像素点的梯度幅值等间隔地分割并进行量化,对于像素灰度值在黑-白范围较均匀分布的图像,这种量化方法可以得到较小的量化误差。非均匀量化是依据图像具体的灰度值分布的概率密度函数,按总的量化误差最小的原则进行量化,具体而言,是对于图像中像素灰度值频繁出现的灰度值范围,取相对小一点的量化间隔,对像素灰度值极少出现的范围则取大一些的量化间隔,这种量化方法适用于需要以尽量少的数据量来描述图像的应用场景,以达到利用尽量少的数据使所描述的图像效果尽可能更好。

量化区域即为对根据梯度幅值间隔分割得到的每个分割区域进行量化后的区域。

步骤s240,根据每个像素点的角度对每个量化区域进行区域增长得到若干个区域直线。

区域增长又称为区域生长,是一种图像分割方法。该方法一般有两种方式,一种是先给定图像中要分割的目标物体内的一个小块或者说种子区域(seedpoint),再在种子区域基础上不断将其周围的像素点以一定的规则加入其中,达到最终将代表该物体的所有像素点结合成一个区域的目的;另一种是先将图像分割成很多的一致性较强,如区域内像素灰度值相同的小区域,再按一定的规则将小区域融合成大区域,达到分割图像的目的,典型的区域生长法如t.c.pong等人提出的基于小面(facet)模型的区域生长法。本领域技术人员可以根据需要选择一种区域增长法进行图像分割,得到区域直线。

步骤s250,对各个区域直线进行聚类处理,得到条形码区域及条形码的中心点。

聚类就是按照某个特定标准(如距离准则,即数据点之间的距离)把一个数据集分割成不同的类或簇,使得同一个簇内的数据对象的相似性尽可能大,同时不在同一个簇中的数据对象的差异性也尽可能地大。可以具体地理解为,聚类后同一类的数据尽可能聚集到一起,不同类数据尽量分离。

由于条形码图像的特殊性,线条方向一致,且密集度较高,对各个区域直线进行聚类处理,能够剔除无关的区域直线,最终确定条形码区域以及条形码的中心点。在一些实施例中,对各个区域直线聚类处理可以采用k-means聚类算法、层次聚类算法、fcm聚类算法等聚类算法实现。

步骤s260,根据条形码区域内的各个区域直线计算出条形码的角度。

由于条形码的线条方向一致,根据区域直线即可计算出条形码的角度。

上述条形码定位方法中,通过计算待识别图像的每个像素点的梯度幅值和角度,对待识别图像进行梯度量化处理,对每个量化区域再进行区域增长处理得到若干个区域直线,对各个区域直线进行聚类处理,得到条形码区域及条形码的中心点,根据条形码区域内的各个区域直线计算出条形码的角度,定位待识别图像中的条形码,利用区域增长优化图像,再利用聚类处理剔除无关区域,有效提高定位精确度,并且计算量较小。

在其中一个实施例中,如图3所示,根据每个像素点的梯度幅值对待识别图像进行梯度量化得到若干个量化区域的步骤包括:

步骤s231,按照预设的梯度划分标准对待识别图像中的各个像素点进行梯度划分,得到若干个梯度区域。

梯度划分标准即梯度幅值间隔,在一个实施例中,由于条形码的是像素灰度值在黑-白范围较均匀分布的图像,可以采用等间隔进行梯度划分。在一个实施例中,若待识别图像内除了条形码还有其他干扰因素,使得条形码置于复杂背景之中,也可以采用非均匀间隔进行梯度划分,能够减少处理数据量。

步骤s232,对每个梯度区域内的像素点进行量化,得到量化区域。

像素点的梯度幅值的最大值为max_mag,量化的区域数量为n(n是一个经验数据值,一般为128,也可以是其他数值,根据实际情形调整),量化方式为bin=mag(i)*n/max_mag,i表示第i个点,mag(i)表示第i个像素点的幅值,依次遍历完所有的点,bin表示每个像素点梯度幅值的量化值。

在其中一个实施例中,如图4所示,根据每个像素点的角度对每个量化区域进行区域增长得到若干个区域直线的步骤包括:

步骤s241,从量化区域中随机选取一个像素点作为基准点。

从任意一个量化区域开始,以当前量化区域内的任意一个像素点作为基准点进行区域增长。

步骤s242,根据基准点对各自所在的量化区域内的其他像素点进行主方向一致性判断。

假设基准点a的角度为初始的主方向,对当前量化区域内基准点之外的任意一个像素点a1进行判断,判断像素点a1与主方向间角度差的绝对值是否大于预设的阈值范围t,若小于,则像素点a1为满足主方向一致性,将像素点a1保留在当前量化区域内;再对当前量化区域内其余像素点中的任意一个像素点a2进行判断,判断像素点a2与主方向间角度差的绝对值是否大于预设的阈值范围t,且此时主方向为像素点a角度与像素点a1角度的平均值,若小于,则像素点a2满足主方向一致性,将像素点a2保留在当前量化区域内;直至遍历到量化区域内最后一个像素点an,判断像素点an与主方向间角度差的绝对值是否大于预设的阈值范围t,此时主方向为从像素点a至像素点a(n-1)的角度和的平均值,若小于,则像素点an满足主方向一致性,将像素点an保留在当前量化区域内。

步骤s243,将不满足主方向一致性的像素点从量化区域内剔除。

若像素点a1与主方向间角度差的绝对值大于t,则像素点a1不满足主方向一致性,将像素点a1从当前量化区域内剔除,并将像素点a1置于无区域像素点集合内,等待对其他量化区域进行区域增长时再进行与其他量化区域的主方向一致性判断。其他像素点同理。

步骤s244,对满足主方向一致性的每个像素点四周的四个相邻像素点与量化区域内其他像素点进行主方向一致性判断。

判断完像素点a1是否满足一致性后,若像素点a1满足主方向一致性,先对像素点a1进行4邻域扩展,即对像素点a1在待识别图像中其上、下、左、右四个方向上的相邻像素点b1、c1、d1、e1是否满足当前量化区域的主方向一致性,以像素点b1为例,判断像素点b1与主方向间角度差的绝对值是否大于预设的阈值范围t,此时的主方向为当前量化区域中已判断满足主方向一致性的所有像素点的角度平均值,即若当前量化区域中已判断满足主方向一致性的像素点包括a、a1,则当前主方向为像素点a与像素点a1的角度平均值,若像素点b1与主方向间角度差的绝对值小于预设的阈值范围t,则满足主方向一致性。其中,对于每个满足主方向一致性的像素点进行4邻域扩展的步骤,可以在判断完该像素点满足主方向一致性后进行,也可以在遍历完当前量化区域中的全部像素点之后再进行。

步骤s245,将相邻像素点中满足主方向一致性的像素点提取到量化区域,并从其原来所在量化区域中剔除。

若像素点b1满足主方向一致性,则将像素点b1从其原来所在的量化区域中提取到当前量化区域,其原来所在的量化区域将不再含有像素点b1,在对其原来所在的量化区域进行区域增长时,不再对像素点b1进行判断。其他量化区域内的其他像素点同理。

步骤s246,遍历各个量化区域后得到若干个区域直线。

对所有量化区域进行完区域增长后,则到若干个区域直线,每个区域增长后的量化区域即为一个区域直线。

在其中一个实施例中,如图5所示,对各个区域直线进行聚类处理,得到条形码区域及条形码的中心点的步骤包括:

步骤s251,计算每个区域直线的横纵比。

计算各个区域直线的最左边的点a(xleft,yleft),最右边的点b(xright,yright),最上面的点c(xtop,ytop),最底部的点d(xbottom,ybottom);计算纵横比:

步骤s252,根据区域直线的横纵比确定区域直线的横纵方向。

若r>1,则区域直线为横向;若r<1,则区域直线为纵向。

步骤s253,根据区域直线的横纵方向确定区域直线的两端对应的端点像素点坐标、区域直线的中点坐标及区域直线的倾斜角。

若区域直线为横向,得到直线的两个端点分别为a(xleft,yleft)和b(xright,yright);若区域直线为纵向,得到直线的两个端点分别为c(xtop,ytop)和d(xbottom,ybottom)。

根据端点像素点坐标可以计算出区域直线的中点坐标及倾斜角。

步骤s254,依次提取任意一个区域直线作为基准直线,计算基准直线与其余每个区域直线的聚类参数;其中,聚类参数为基准直线的中点与其余任意一个区域直线的中点间的距离,和基准直线与区域直线的角度差的乘积。

设与条形码方向平行的直线变量i,依次取任意一个区域直线作为直线变量,分别计算每个直线变量i与每个其他区域直线的距离(即两个直线中点间的距离),设其他区域直线变量为j。取直线i的中点(cxi,cyi),计算直线i之外的直线j中心(cxj,cyj)与其之间的距离dis=sqrt((cxi-cyi)*(cxi-cxj)+(cyi-cyj)*(cyi-cyj)),其中i,j=1,...,n;直线i,j对应的角度分别为angi,angj,计算聚类参数t=dis*abs(angi-angj)。

步骤s255,判断基准直线与其余每个区域直线的聚类参数是否小于预设阈值,若小于则将聚类参数的累加,得到每个区域直线分别作为基准直线时的聚类参数累加值,若大于则剔除对应的区域直线,得到与聚类参数累加值对应的区域直线集;确定聚类参数累加值最小的区域直线集构成的区域为条形码区域,聚类参数累加值最小的区域直线集对应的基准直线的中点为条形码的中心点。

若聚类参数t<q(q为预设的条件阈值,在一个实施例中可以取3000),则在累加值sum加上dis*abs(angi-angj),若t>q则剔除该区域直线j,依次遍历完直线j;每对任意一个区域直线i遍历完所有直线j,则从其余区域直线中重新选取一个作为直线变量i,直到遍历完所有区域直线,将累加值sum对应的区域直线集i构成的区域确定为条形码区域,该区域直线集i对应的基准直线i的中点确定为条形码的中心点。

在其中一个实施例中,如图6所示,根据条形码区域内的各个区域直线计算出条形码的角度的步骤包括:

步骤s261,对条形码区域内的区域直线中点进行随机抽样,得到局内点。

条形码区域内的区域直线可能会由于图像获取角度的问题,区域直线可能存在变形的问题,直接以条形码区域内的所有区域直线计算条形码的角度,精确度可能会收到影响。因此利用随机抽样在各个区域直线的中点之内抽取若干个中点假设为局内点。

步骤s262,对局内点进行直线拟合并计算出拟合直线的角度,将拟合直线的角度确定为条形码的角度。

假设局内点能够充分表达条形码,对局内点进行直线拟合,能够拟合出一条假设的条形码中点连线,条形码中点连线的倾斜角,即为条形码的倾斜角度。

根据条形码的倾斜角度、条形码的中心点以及条形码区域,即可在待识别图像中定位到条形码。

在其中一个实施例中,如图7所示,条形码定位方法还包括:

步骤s310,根据条形码的中心点,沿条形码角度确定条形码的起止符。

起止符包括起始符和终止符,标志条码的开始和结束,同时提供了码制识别信息和阅读方向的信息。从中心点沿主方向进行搜索,直到搜索到起止符。

步骤s320,根据条形码的起止符计算出条形码区域的各个顶点坐标。

由于起止符标志条形码的开始和结束,因此可以结合起止符确定条形码的四个顶点。

步骤s330,根据各顶点坐标拟合透视变换矩阵。

由于采集的待识别图像可能存在倾斜角度,导致各顶点不一定在二维平面上,而是在三维空间中,因此需要对定位到的条形码通过透视变换矩阵进行降维。

步骤s340,根据透视变换矩阵映射生成无角度倾斜的条形码。

根据透视变换矩阵降维后得到二维的图像,即可获得无角度倾斜的条形码。

在其中一个实施例中,如图8所示,条形码定位方法还包括:

步骤s350,根据条形码的起止符确定条形码的类型。

起止符还提供了码制识别信息,因此通过起止符可以确定条形码的类型。

步骤s360,根据条形码的类型确定对应的解码方式。

不同类型的条形码有对应的解码方式,需要根据所确定的条形码类型进行选择,才能正确解码。

步骤s370,根据解码方式对条形码进行解码得到条形码的码值。

根据确定的解码方式对提取出的无角度倾斜的条形码进行解码,得到条形码的码值。

在其中一个实施例中,条形码定位方法还包括,

将解码得到的码值传输到主机进行后续工作,或者将码值发送到终端进行显示。

应该理解的是,虽然图2-8的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-8中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

在一个实施例中,如图9所示,提供了一种条形码定位装置,包括:图像获取模块410、梯度计算模块420、区域量化模块430、区域增长模块440、聚类模块450和条形码角度计算模块460,其中:

图像获取模块410,用于获取待识别图像;

梯度计算模块420,用于计算待识别图像每个像素点的梯度幅值和角度;

区域量化模块430,用于根据每个像素点的梯度幅值对待识别图像进行梯度量化得到若干个量化区域;

区域增长模块440,用于根据每个像素点的角度对每个量化区域进行区域增长得到若干个区域直线;

聚类模块450,用于对各个区域直线进行聚类处理,得到条形码区域及条形码的中心点;

条形码角度计算模块460,用于根据条形码区域内的各个区域直线计算出条形码的角度。

关于条形码定位装置的具体限定可以参见上文中对于条形码定位方法的限定,在此不再赘述。上述条形码定位装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图10所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种条形码定位方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。

本领域技术人员可以理解,图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:

获取待识别图像;

计算待识别图像每个像素点的梯度幅值和角度;

根据每个像素点的梯度幅值对待识别图像进行梯度量化得到若干个量化区域;

根据每个像素点的角度对每个量化区域进行区域增长得到若干个区域直线;

对各个区域直线进行聚类处理,得到条形码区域及条形码的中心点;

根据条形码区域内的各个区域直线计算出条形码的角度。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:

按照预设的梯度划分标准对待识别图像中的各个像素点进行梯度划分,得到若干个梯度区域;

对每个梯度区域内的像素点进行量化,得到量化区域。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:

从量化区域中随机选取一个像素点作为基准点;

根据基准点对各自所在的量化区域内的其他像素点进行主方向一致性判断;

将不满足主方向一致性的像素点从量化区域内剔除;

对满足主方向一致性的每个像素点四周的四个相邻像素点与量化区域内其他像素点进行主方向一致性判断;

将相邻像素点中满足主方向一致性的像素点提取到量化区域,并从其原来所在量化区域中剔除;

遍历各个量化区域后得到若干个区域直线。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:

计算每个区域直线的横纵比;

根据区域直线的横纵比确定区域直线的横纵方向;

根据区域直线的横纵方向确定区域直线的两端对应的端点像素点坐标、区域直线的中点坐标及区域直线的倾斜角;

依次提取任意一个区域直线作为基准直线,计算基准直线与其余每个区域直线的聚类参数;其中,聚类参数为基准直线的中点与其余任意一个区域直线的中点间的距离,和基准直线与区域直线的角度差的乘积;

判断基准直线与其余每个区域直线的聚类参数是否小于预设阈值,若小于则将聚类参数的累加,得到每个区域直线分别作为基准直线时的聚类参数累加值,若大于则剔除对应的区域直线,得到与聚类参数累加值对应的区域直线集;确定聚类参数累加值最小的区域直线集构成的区域为条形码区域,聚类参数累加值最小的区域直线集对应的基准直线的中点为条形码的中心点。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:

对条形码区域内的区域直线中点进行随机抽样,得到局内点;

对局内点进行直线拟合并计算出拟合直线的角度,将拟合直线的角度确定为条形码的角度。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:

根据条形码的中心点,沿条形码角度确定条形码的起止符;

根据条形码的起止符计算出条形码区域的各个顶点坐标;

根据各顶点坐标拟合透视变换矩阵;

根据透视变换矩阵映射生成无角度倾斜的条形码。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:

根据条形码的起止符确定条形码的类型;

根据条形码的类型确定对应的解码方式;

根据解码方式对条形码进行解码得到条形码的码值。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:

获取待识别图像;

计算待识别图像每个像素点的梯度幅值和角度;

根据每个像素点的梯度幅值对待识别图像进行梯度量化得到若干个量化区域;

根据每个像素点的角度对每个量化区域进行区域增长得到若干个区域直线;

对各个区域直线进行聚类处理,得到条形码区域及条形码的中心点;

根据条形码区域内的各个区域直线计算出条形码的角度。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:

按照预设的梯度划分标准对待识别图像中的各个像素点进行梯度划分,得到若干个梯度区域;

对每个梯度区域内的像素点进行量化,得到量化区域。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:

从量化区域中随机选取一个像素点作为基准点;

根据基准点对各自所在的量化区域内的其他像素点进行主方向一致性判断;

将不满足主方向一致性的像素点从量化区域内剔除;

对满足主方向一致性的每个像素点四周的四个相邻像素点与量化区域内其他像素点进行主方向一致性判断;

将相邻像素点中满足主方向一致性的像素点提取到量化区域,并从其原来所在量化区域中剔除;

遍历各个量化区域后得到若干个区域直线。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:

计算每个区域直线的横纵比;

根据区域直线的横纵比确定区域直线的横纵方向;

根据区域直线的横纵方向确定区域直线的两端对应的端点像素点坐标、区域直线的中点坐标及区域直线的倾斜角;

依次提取任意一个区域直线作为基准直线,计算基准直线与其余每个区域直线的聚类参数;其中,聚类参数为基准直线的中点与其余任意一个区域直线的中点间的距离,和基准直线与区域直线的角度差的乘积;

判断基准直线与其余每个区域直线的聚类参数是否小于预设阈值,若小于则将聚类参数的累加,得到每个区域直线分别作为基准直线时的聚类参数累加值,若大于则剔除对应的区域直线,得到与聚类参数累加值对应的区域直线集;确定聚类参数累加值最小的区域直线集构成的区域为条形码区域,聚类参数累加值最小的区域直线集对应的基准直线的中点为条形码的中心点。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:

对条形码区域内的区域直线中点进行随机抽样,得到局内点;

对局内点进行直线拟合并计算出拟合直线的角度,将拟合直线的角度确定为条形码的角度。

在其中一个实施例中,方法还包括:

根据条形码的中心点,沿条形码角度确定条形码的起止符;

根据条形码的起止符计算出条形码区域的各个顶点坐标;

根据各顶点坐标拟合透视变换矩阵;

根据透视变换矩阵映射生成无角度倾斜的条形码。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:

根据条形码的起止符确定条形码的类型;

根据条形码的类型确定对应的解码方式;

根据解码方式对条形码进行解码得到条形码的码值。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1