一种基于游程编码的低质量二维码信息提取方法及装置与流程

文档序号:23262502发布日期:2020-12-11 18:51阅读:248来源:国知局
一种基于游程编码的低质量二维码信息提取方法及装置与流程

本发明涉及二维码信息提取技术领域,尤其涉及一种基于游程编码的低质量二维码信息提取方法及装置。



背景技术:

二维码具有信息容量大、纠错能力强、保密及防伪性好、打印成本低等优点,被广泛应用于工业领域。二维码读取流程可分为条码定位、二维码二值信息提取以及译码三个步骤,其中,二维码二值信息提取指对于定位得到的二维码,进行“0”、“1”比特流提取、条码版本以及模块尺寸计算。在二维码区域,每一个模块代表“0”或“1”,其中,模块灰度值接近静音区背景表示“0”,模块灰度值与二维码极性接近的表示“1”。

如图1所示,为极性为darkonlight的datamatrix二维码(简称dm码),如图2所示,为dm码的模式边,包括左下两边组成的l边和右上两边组成的时钟边,如图3所示,为dm码的数据区,其中,黑色模块表示“1”,白色模块表示“0”,如图4所示,两个矩形框中间的区域为dm码的静音区。对于打印及成像质量较好的二维码,可以直接根据dm码的时钟边确定版本规格,以水平时钟边模块的质心x坐标以及垂直时钟边模块的质心y坐标共同确定dm码的数据区中每个模块的采样点坐标,并通过采样点位置的灰度值确定该点的采样值。

但是,对于低质量的dm码,例如:模块位置有偏移、码区有噪声、破损等情况,单纯通过dm码的时钟边信息无法确定dm码的数据区内每个模块准确的采样点,导致从dm码的数据区提取到的比特流信息不准确,最终导致译码失败。



技术实现要素:

本发明提供了一种基于游程编码的低质量二维码信息提取方法及装置,以解决由于低质量二维码的模块位置出现偏移、码区有噪声、破损等情况,导致单纯通过二维码的时钟边信息无法确定二维码的数据区域内每个模块准确的采样点位置,从而提取到的二维码的比特流信息不准确的问题。

一方面,本发明提供一种基于游程编码的低质量二维码信息提取方法,包括以下步骤:

对获取到的二维码图像进行二值化处理,得到二值图像;

对所述二值图像进行连通域标记,并对连通域标记后的所述二值图像进行游程编码,得到基于连通域的游程编码信息数据;

根据所述游程编码信息数据,确定二维码版本规格和模块尺寸;

根据所述游程编码信息数据以及所述模块尺寸,对所述二维码图像进行降噪处理;

根据所述游程编码信息数据和所述二维码版本规格以及所述模块尺寸,对降噪处理后的所述二维码图像划分二维码采样点;

根据所述游程编码信息数据以及所述二维码采样点,得到所述二维码图像中存储的二值矩阵,完成二维码的信息提取。

在本发明的较佳实施例中,对获取到的二维码图像进行二值化处理,得到二值图像,包括:通过大津法对所述二维码图像进行二值化灰度分割,得到所述二值图像。

在本发明的较佳实施例中,通过基于游程进行边界追踪的连通域标记方法,对所述二值图像进行标记,得到连通域标记后的所述二值图像。

在本发明的较佳实施例中,所述游程编码信息数据包括游程段长度、相同灰度值所在行或列、游程段起始点、游程段终止点以及游程段所属连通域。

在本发明的较佳实施例中,所述根据游程编码信息确定二维码版本规格和模块尺寸具体操作如下:

从游程数据第0行开始,统计每行游程段数;

若所述游程段数连续n行的最大值均为d1,则d1为二维码水平方向的模块个数,其中,n为一个接近所述二维码模块尺寸的数;

重复上述步骤,得到二维码垂直方向的模块个数为d2;

二维码的版本规格为d1*d2,查找国际标准中是否存在与所述版本规格一致的二维码,若存在,则继续计算所述二维码的模块尺寸,若不存在,则信息提取区域为非二维码区,终止操作。

在本发明的较佳实施例中,所述二维码的模块尺寸的计算方法如下:

统计n/2行中所有奇数游程段长度,并计算均值size1;

统计n/2列中所有奇数游程段长度,并计算均值size2;

所述二维码的模块尺寸modsize为size1与size2总和的二分之一。

上述技术方案中,取第n/2行或列是为了保证统计的每个游程段长度时,是在时钟边模块中间的位置,此时统计的游程长度更能代表每个模块的宽度。

在本发明的较佳实施例中,对所述二维码图像进行降噪处理包括对无间隔二维码图像的降噪处理和对有间隔二维码图像的降噪处理。

在本发明的较佳实施例中,对所述无间隔二维码图像的降噪处理,具体过程如下:

获取二维码图像的游程编码信息数据;

在二维码图像的行方向上,找出当前行长度小于二分之一所述二维码模块尺寸的游程段;

判断与当前游程段相邻两段游程段的连通域是否相同,若相同,则当前游程段为噪声段,将所述当前游程段与所述相邻两段游程段合并降噪,遍历所有行,完成所述二维码图像的行方向上的游程降噪;

在二维码图像的列方向上,重复上述步骤,完成所述二维码图像的列方向上的游程降噪。

在本发明的较佳实施例中,对所述有间隔二维码图像的降噪处理,具体过程如下:

获取二维码图像的游程编码信息数据;

在二维码图像的行方向上,找出当前行长度小于二分之一所述二维码模块尺寸的游程段;

判断与当前游程段相邻两段游程段的连通域是否相同,若相同,则当前游程段为噪声段;

判断所述噪声段的连通域是否与背景连通域一致,若一致,则所述噪声段为二维码模块间的间隔,不能进行合并,遍历所有行,完成所述二维码的行方向上的游程降噪;

在二维码图像的列方向上,重复上述步骤,完成所述二维码图像的列方向上的游程降噪。

采用上述技术方案,经过降噪的游程信息数据,能够较准确反映二维码模块的排布特征。

在本发明的较佳实施例中,所述根据游程编码信息划分二维码采样点,具体过程如下:

根据所述二维码模块尺寸判断每个游程段中的模块个数;

根据所述模块个数划分二维码采样点,所述二维码采样点的划分准则具体为:

num=r(l/size),

其中,num表示每个游程段中包含的采样点个数,r()表示四舍五入取整操作,即多出的长度超过0.5个模块尺寸则认为存在一个完整的模块,l表示游程段长度,size表示二维码的模块尺寸;

计算当前游程段中,每个采样点占游程段长度计算公式如下:

sl=l/num,

其中,sl表示每个采样点占游程段长度;

计算所述每个采样点的位置坐标,公式如下:

xi=start_col+sl*(0.5+i),i=(0,1,2,......,num-1),

其中,xi表示第i个采样点位置坐标,start_col表示游程段起始点;

根据每个采样点占当前游程段的长度、当前游程段的起始点以及采样点的个数计算每个采样点的位置坐标;

判断所述采样点的位置坐标以及采样点总个数与所述二维码版本规格信息是否一致,若计算得出的采样点个数比二维码版本规格中的模块个数多,则删除多出的采样点;若计算得出的采样点个数比二维码版本规格中的模块个数少,则增加缺少的采样点。

在本发明的较佳实施例中,所述删除多出的采样点或增加缺少的采样点,具体过程如下:

当计算得出的采样点个数比所述二维码版本规格中的模块个数多时,选择采样点占当前游程段的长度最小的游程段,删除一个采样点,更新采样点个数信息,继续删除,直至计算得出的采样点个数与二维码版本规格中的模块个数一致;

当计算得出的采样点个数比二维码版本规格中的模块个数少时,选择采样点占当前游程段的长度最大的游程段,增加一个采样点,更新采样点个数信息,继续增加,直至计算得出的采样点个数与二维码版本规格中的模块个数一致。

另一方面,本发明提供一种基于游程编码的低质量二维码信息提取装置,包括:

预处理单元,用于对输入的二维码图像进行二值化处理,得到二值图像;

连通域标记单元,用于对所述二值图像进行连通域标记划分;

游程编码单元,用于对连通域标记后的二值图像进行游程编码;

二维码信息提取单元,基于所述游程编码模块的游程编码信息数据,用于确定二维码版本规格和模块尺寸,对二维码图像进行降噪并划分采样点,提取二值矩阵,完成二维码图像的信息提取。

本发明提供的一种基于游程编码的低质量二维码信息提取方法及装置,相较于现有技术而言,具有以下有益效果:

本发明通过游程编码技术对连通域标记的二维码图像进行编码,再基于编码后的游程信息与连通关系得到数据区内每个模块准确的位置坐标,进行信息提取,尤其针对低质量的二维码图像,即使模块位置有偏移、码区有噪声、破损的情况,仍然能根据基于连通域标记后的二值图像的游程编码数据信息,获取到每个模块的准确位置坐标,进行二维码信息提取。

附图说明

为了更清楚地说明本发明的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为极性为darkonlight的datamatrix二维码图像;

图2为darkonlight的datamatrix二维码模式边示意图;

图3为darkonlight的datamatrix二维码数据区示意图;

图4为darkonlight的datamatrix二维码静音区示意图;

图5为本发明的一种基于游程编码的低质量二维码信息提取方法的流程图;

图6为二值图像的部分游程编码示意图,其中,图6(a)为部分二值图像数据示意图,图6(b)为对图6(a)进行游程编码示意图;

图7为连通域标记后的二值图像的部分游程编码示意图,其中,图7(a)为二值图像的连通域标记示意图,图7(b)为二值图像进行连通域标记后的图像,图7(c)为基于分割图像进行游程编码的游程信息示意图;

图8为计算模块尺寸中统计的连续十行的游程段数示意图;

图9为二维码图像的降噪处理示意图,其中,图9(a)为一个带像素噪点的二维码模块图,图9(b)为对图9(a)中像素噪点进行降噪前后的数据对比图;

图10为根据偏移较严重的二维码图像时钟边二值信息提取采样点的示意图,其中,图10(a)为偏移较严重的二维码图像,图10(b)为直接根据时钟边二值信息提取得到的采样点位置图;

图11为对图10(a)的偏移严重的二维码图像进行部分游程编码得到的游程信息示意图;

图12为通过本发明的低质量二维码信息提取方法对图10(a)进行采样提取得到的采样点位置图。

具体实施方式

为使本发明的目的、实施方式和优点更加清楚,下面将结合本发明示例性实施例中的附图,对本发明示例性实施方式进行清楚、完整地描述,显然,所描述的示例性实施例仅是本发明一部分实施例,而不是全部的实施例。

因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在本发明实施例的描述中,需要说明的是,术语“上”、“下”、“左”、“右”等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该发明产品使用时惯常摆放的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。

基于本发明描述的示例性实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明所附权利要求保护的范围。此外,虽然本发明中公开内容按照示范性一个或几个实例来介绍,但应理解,可以就这些公开内容的各个方面也可以单独构成一个完整实施方式。

需要说明的是,本发明中对于术语的简要说明,仅是为了方便理解接下来描述的实施方式,而不是意图限定本发明的实施方式。除非另有说明,这些术语应当按照其普通和通常的含义理解。

本发明中使用的术语“单元”,是指任何已知或后来开发的硬件、软件、固件、人工智能、模糊逻辑或硬件或/和软件代码的组合,能够执行与该元件相关的功能。

游程编码方式中,将灰度值相同的段,即行或列,称为游程。

二维码规格指条码水平方向以及垂直方向模块个数,国际标准中共有24种正方形、6种长方形条码类型。模块尺寸指码区最小单元最小外接矩形的长度,即像素数。如图1所示的二维码的规格为14×14,模块尺寸为单个模块的宽度,一般使用时钟边(如图2中的右上两边)所有模块尺寸均值表示整个码的模块尺寸,对于无间隔码,时钟边为灰度跳变次数最多的行,对于有间隔码,时钟边为除l边外灰度跳变次数最多的行。二维码图像每行灰度跳变次数映射到游程数据,表现为单行的游程段数,故时钟边为编码后游程段数最多的行。

模块尺寸指的是单独一个模块的高度或宽度,理想情况下,一个模块的宽和高是相等的,而整个码区的所有模块的宽和高也相等,但是由于成像原因,这个尺寸往往会出现偏差,但偏差不会超过20%。

实施例1

图5为本发明提供的一种基于游程编码的低质量二维码信息提取方法的流程图,具体包括以下步骤:

如图5所示,s100,对获取到的二维码图像进行二值化处理,得到二值图像;在本实施例中,通过大津法对所述二维码图像进行二值化灰度分割,得到所述二值图像;

如图5所示,s200,对所述二值图像进行连通域标记,并对连通域标记后的所述二值图像进行游程编码,得到基于连通域的游程编码信息数据;

本实施例中,所述游程编码信息数据包括游程段长度、相同灰度值所在行或列、游程段起始点、游程段终止点以及游程段所属连通域。

如图6所示,为本实施例中对二值图像的部分游程编码示意图,以行游程为例,其中,图6(a)为部分二值图像数据示意图,图6(b)为对图6(a)进行游程编码的示意图,如图6(b)所示,行游程包括三个变量,以图6(a)中灰色阴影部分为例,所在行row,对应图6(a)中的第二行,列起始点start_col,对应图6(a)中的第一列,列终止点end_col,对应图6(a)中的第二列,图6(b)中的run表示游程,因此,通过游程编码后,图6(a)中灰色阴影部分的游程为5。

如图7所示,为本实施例中对连通域标记后的二值图像进行游程编码示意图,如图7(a)所示,为对二值图像进行连通域标记的示意图,每个连通域使用一个id进行标记。常用的对二值图像进行连通域标记的算法有two-pass算法、seed-filling算法等,在本实施例中,采用基于游程进行边界追踪的连通域标记方法,对所述二值图像进行标记,得到连通域标记后的所述二值图像,如图7(a)所示;对分割后的二值图像进行游程编码,编码记录每个游程段起点在当前行位置,以及游程段所属连通域id,基于连通域标记的二值图像进行游程编码,如图7(b)所示,为对二值图像进行连通域标记后的图像,灰色阴影部分为不同的连通域,如图7(c)所示,为基于分割图像进行游程编码的游程信息,相较于图6(b),增加了游程段长度length,所属连通域id以及每一行像素值vaule,并且从图7(c)中可以得到每一个游程段与连通域的从属关系,从而可知哪些游程段是相连通的,连通信息对于后续噪点的判断也至关重要。

如图5所示,s300,根据所述游程编码信息数据,确定二维码版本规格和模块尺寸;

在本实施例中,所述根据游程编码信息确定二维码版本规格和模块尺寸具体操作如下:

从游程数据第0行开始,统计每行游程段数;

若所述游程段数连续n行的最大值均为d1,则d1为二维码水平方向的模块个数,其中,n为一个接近所述二维码模块尺寸的数,且由于成像原因,n与二维码模块尺寸之间存在偏差,但是最大偏差不超过20%;

重复上述步骤,得到二维码垂直方向的模块个数为d2;

二维码的版本规格为d1*d2,查找国际标准中是否存在与所述版本规格一致的二维码,若存在,则继续计算所述二维码的模块尺寸,若不存在,则信息提取区域为非二维码区,终止操作。

如图8所示,为本实施例统计的连续10行的游程段数,可知,从第0行到第8行的游程段数均为14,而第9行的游程段数突变为7,说明第9行已经不是二维码图像的时钟边了,因此,可根据连续9行的游程段数均为14,得出二维码水平方向的模块个数为14,同样的方法得出垂直方向的模块个数也为14,则本实施例中的二维码的版本规格为14×14。

需要特别说明的是,在本实施例中,n表示扫描时钟边时连续跳变次数相同的行数,即图8中n为9。

确定二维码规格之后,计算模块尺寸;由于印刷以及成像等因素影响,二维码各个模块的尺寸可能有轻微偏差,在本实施例中,采用时钟边所有模块尺寸的均值近似代表二维码码区的所有模块尺寸,具体计算方法如下:

统计n/2行中所有奇数游程段长度,并计算均值size1;

统计n/2列中所有奇数游程段长度,并计算均值size2;

所述二维码的模块尺寸modsize为size1与size2总和的二分之一。

上述技术方案中,取第n/2行或列是为了保证统计的每个游程段长度时,是在时钟边模块中间的位置,此时统计的游程长度更能代表每个模块的宽度。

由于成像及印刷工艺等因素的影响,二维码码区可能存在噪声,对二维码的各模块值判定错误导致译码失败。因此,需要进行必要的降噪处理,常规的降噪方法包括中值滤波、高斯滤波等,但是由于dm码的特点,进行滤波操作可能造成模块边缘的过度像素,导致分割后的二维码图像与原始边界产生差异,最终导致二值矩阵提取错误。故本实施例中采用下述方法进行降噪处理。

如图5所示,s400,根据所述游程编码信息数据以及所述模块尺寸,对所述二维码图像进行降噪处理,其中,包括对无间隔二维码图像的降噪处理和对有间隔二维码图像的降噪处理。

在本实施例中,对所述无间隔二维码图像的降噪处理,过程如下:

获取二维码图像的游程编码信息数据,即图7(c)中的游程段的长度、所属连通域id以及模块尺寸,识别出为噪声或者干扰的游程段;

识别规则为:在二维码图像的行方向上,找出当前行长度小于二分之一所述二维码模块尺寸的游程段;

判断与当前游程段相邻两段游程段的连通域是否相同,若相同,则当前游程段为噪声段,将所述当前游程段与所述相邻两段游程段合并降噪,遍历所有行,完成所述二维码图像的行方向上的游程降噪;

在二维码图像的列方向上,重复上述步骤,完成所述二维码图像的列方向上的游程降噪。

如图9(a)所示,为带一个像素噪点的二维码模块,具体降噪过程如下:以对图9(a)中第二行的像素噪点降噪为例,先根据上述识别规则识别出第二行中噪点像素,再根据规则对游程信息进行修改,如图9(b)所示,为图9(a)降噪前后第二行的游程段长度对比图,降噪前图9(a)第二行有三段游程段,降噪后图9(a)第二行只有一段长度为5的游程段,完成对有噪点像素的第二行的降噪处理,其他噪点像素处理过程类似。

在本实施例中,对所述有间隔二维码图像的降噪处理,具体过程如下:

获取二维码图像的游程编码信息数据;

在二维码图像的行方向上,找出当前行长度小于二分之一所述二维码模块尺寸的游程段;

判断与当前游程段相邻两段游程段的连通域是否相同,若相同,则当前游程段为噪声段;

判断所述噪声段的连通域是否与背景连通域一致,若一致,则所述噪声段为二维码模块间的间隔,不能进行合并,遍历所有行,完成所述二维码的行方向上的游程降噪;

在二维码图像的列方向上,重复上述步骤,完成所述二维码图像的列方向上的游程降噪。

采用上述技术方案,由于dm二维码的每个模块是有间隔的,如果只按照游程信息数据判断是否为噪点,那么相邻模块间的间隔都会被认为是噪点,但是相邻模块间的间隔是与背景连通的,故根据连通域信息可以将这些间隔保留,不会被识别为噪点。而当dm二维码模块内部有噪点的话,该噪点的前后模块肯定是连通的,且该噪点不与背景连通,故可以准确识别出噪点,进行降噪处理。

一般地,二维码采样点可以根据时钟边信息确定,但由于工艺或成像等因素的影响,可能产生整行或整列的模块偏移,直接用时钟信息采样得到的二值矩阵与二维码中储存的实际信息偏差较大,如图10(a)所示,为偏移较严重的二维码图像,对该图像的时钟边二值信息提取确定的采样点,如图10(b)所示,由于整行的偏移导致较多采样点位置与实际采样点有较大的偏差,导致解码失败。而本实施例中,通过码区游程信息数据确定每个模块的准确位置进行采样,能够保证获取到准确的采样点位置,得到二维码每个模块准确的“0”、“1”值,确保解码成功。

如图5所示,s500,根据所述游程编码信息数据和所述二维码版本规格以及所述模块尺寸,对降噪处理后的所述二维码图像划分二维码采样点;

如图10(a)所示,为偏移较严重的二维码图像,通过码区游程信息数据确定每个模块的准确位置进行采样,能够保证获取到准确的采样点位置,在本实施例中,所述根据游程编码信息划分二维码采样点,具体过程如下:

根据所述二维码模块尺寸判断每个游程段中的模块个数;

根据所述模块个数划分二维码采样点,所述二维码采样点的划分准则具体为:

num=r(l/size),

其中,num表示每个游程段中包含的采样点个数,对应附图中的number,r()表示四舍五入取整操作,即多出的长度超过0.5个模块尺寸则认为存在一个完整的模块,l表示游程段长度,size表示二维码的模块尺寸;在本实施例中,以图10(a)中第二行模块的游程信息为例,如图11,可得模块尺寸为4.56,版本规格为18×18。

计算当前游程段中,每个采样点占游程段长度计算公式如下:

sl=l/num,

其中,sl表示每个采样点占游程段长度;

根据每个采样点占当前游程段的长度、当前游程段的起始点以及采样点的个数计算每个采样点的位置坐标,公式如下:

xi=start_col+sl*(0.5+i),i=(0,1,2,......,num-1),

其中,xi表示第i个采样点位置坐标,start_col表示游程段起始点;

判断所述采样点的位置坐标以及采样点总个数与所述二维码版本规格信息是否一致,若计算得出的采样点个数比二维码版本规格中的模块个数多,则删除多出的采样点;若计算得出的采样点个数比二维码版本规格中的模块个数少,则增加缺少的采样点。

在本实施例中,所述删除多出的采样点或增加缺少的采样点,具体过程如下:

当计算得出的采样点个数比所述二维码版本规格中的模块个数多时,选择采样点占当前游程段的长度最小的游程段,删除一个采样点,更新采样点个数信息,继续删除,直至计算得出的采样点个数与二维码版本规格中的模块个数一致;

当计算得出的采样点个数比二维码版本规格中的模块个数少时,选择采样点占当前游程段的长度最大的游程段,增加一个采样点,更新采样点个数信息,继续增加,直至计算得出的采样点个数与二维码版本规格中的模块个数一致。

如图5所示,s600,根据所述游程编码信息数据以及所述二维码采样点,得到各个模块的采样点后,参见图12,为采用本实施例的提取方法对图10(a)进行采样提取得到的采样点位置,可以看出,虽然模块偏移十分严重,但仍然可以得到准确的采样点;然后,直接根据游程段的value值,可得到各个采样点的比特值为“0”或“1”,即得到所述二维码图像中存储的二值矩阵,完成二维码的信息提取。

实施例2

本发明提供一种基于游程编码的低质量二维码信息提取装置,包括:

预处理单元,用于对输入的二维码图像进行二值化处理,得到二值图像;

连通域标记单元,用于对所述二值图像进行连通域标记划分;

游程编码单元,用于对连通域标记后的二值图像进行游程编码;

二维码信息提取单元,基于所述游程编码模块的游程编码信息数据,用于确定二维码版本规格和模块尺寸,对二维码图像进行降噪并划分采样点,提取二值矩阵,完成二维码图像的信息提取。

需要特别说明的是,本发明采取的二维码版本规格、模块尺寸以及采样点个数等具体数据以及相应的附图均是为了更好地说明本发明的技术方案,便于本领域技术人员理解,并不是对本发明保护范围的限定。

本发明提供的实施例之间的相似部分相互参见即可,以上提供的具体实施方式只是本发明总的构思下的几个示例,并不构成本发明保护范围的限定。对于本领域的技术人员而言,在不付出创造性劳动的前提下依据本发明方案所扩展出的任何其他实施方式都属于本发明的保护范围。

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