掌桥专利:专业的专利平台
掌桥专利
首页

条形码检测方法

文献发布时间:2023-06-19 09:23:00


条形码检测方法

现有技术

本发明涉及如专利权利要求1的前序中所规定类型的方法以及如专利权利要求14中所规定的计算机系统。

光学机器可读条形码已成为在工商业中用于描述和识别携带条形码的物体或物品的广泛手段。

特别地,光学机器可读条形码便于物体的自动识别和数据捕获(AIDC),以在没有人类参与的情况下自动识别物体、收集与其有关的数据并将其直接输入到计算机系统中。

虽然许多光学机器可读条形码正由专用光学扫描器读取(例如,利用激光扫描器在超市结账系统处读取购买物品的条形码),但已经开发了一种应用软件,该应用软件使得还能够从数字照相机(例如,来自智能移动装置的照相机)所捕获的图像中读取条形码,从而进一步扩展条形码的使用和应用。

然而,当前从数字图像中读取光学条形码的方法存在着一些严重的缺点和局限性。

特别地,已经发现,对嵌入在数字图像内的条形码、特别是嵌入在数字图像内的一维条形码的检测或定位和识别是一项在计算上具有挑战性且计算资源密集型任务,即使对于当前最先进的智能装置(例如,智能手机或平板)的处理器也是如此。

事实上,当前的方法或系统基本上仅作为解码器进行操作,在某种意义上说,例如,预期一维条形码在被智能装置捕获时正好位于照相机的前方,与照相机对准并处于精确的距离处。

换句话说,当前的方法或系统预期或假定条形码在图像内的特定位置和/或大小和/或分辨率和/或取向。

因此,当前已知的方法或系统往往不能提供令人满意的结果,因为在许多或大多数实际情况中,捕获图像内的条形码在图像内具有任意和非预期的位置、大小或取向。

发明内容

因此,本发明的目的是提供用于检测和定位数字图像内所存在的条形码的改进手段。

特别地,例如,本发明的目的是简化并加快对嵌入在数字图像内的一维条形码的定位。

根据本发明,该目的通过根据权利要求1的方法和根据权利要求14的计算机系统实现。

从属权利要求的主题是有利实施例和进一步发展。

用于在被表示为二维数字图像阵列的数字图像中检测条形码(例如,一维条形码)的示例性方法可以包括以下步骤中的一个、一些或全部。

·对所述图像阵列应用滤波器,

·计算滤波后的图像阵列的离散Radon变换,其中,针对滤波后的图像阵列上的多个离散线计算所述离散Radon变换,

·其中,对于具有给定斜率的各给定离散线,针对所述给定离散线的不同位移数计算所述离散Radon变换,其中,所述位移数小于所述图像阵列的维度的两倍,

·在滤波后的图像阵列的离散Radon变换的输出中检测图案的顶点,

·将所检测到的顶点转换回所述图像阵列中的离散线,以约束所述数字图像中所存在的条形码的位置。

这里,二维数字图像阵列或数字图像可被特别地理解成表示为强度值的二维阵列(例如,图像像素的二维阵列)。

总之,上述的示例性方法允许同时且高效地计算沿着数字图像上的几乎每个直线的像素之和。

此外,本发明将要处理数字图像变换为能够以覆盖图像的几乎每个可能的投影的斜率或角度和位移表示的域,而不是试图直接在图像坐标的域中检测和定位条形码。在该新的域中,即,在通过计算滤波后的图像阵列的离散Radon变换而生成的输出中,条形码的图像生成与在原始域(即,原始图像或原始图像坐标)中检测条形码相比可以更容易地检测到的特殊图案。

这里的术语“条形码”可被特别地理解为指代一维条形码或线性条形码,例如具有不同宽度以及线之间的不同间距的平行线的图案。

此外,可以定义具有有限数量的线点或线元的离散线,使得给定离散线在图像阵列的各列中不会通过多于一个阵列点。

给定离散线可以特别地由斜率(例如,斜率s)和截距(例如,截距d)来参数化。斜率还可以用角度表示,该角度可被定义为atan(s/(N-1)),即,可被定义为斜率s的反正切,其中,N是整数(例如,要处理图像的图像阵列的列数)。

另外,具有给定斜率的给定离散线相对于具有相同斜率的另一离散线的位移也可以由截距(例如,垂直截距)表征。

上述的示例性方法允许显著加快和减少准确且可靠地识别和定位位于/嵌入数字图像(例如,诸如智能手机等的智能装置的照相机所捕获的数字图像)内的一维条形码所需的计算步骤。

这使得无论条形码在数字图像内的位置、大小或取向如何都可以在数字图像中检测、定位和解码该条形码,因为上述的方法或变换对于位于/嵌入图像内的条形码的角度/旋转或取向的变化是不变的。

特别地,本发明允许对诸如智能手机等的常见智能装置的处理单元(例如,中央处理单元(CPU)和/或图形处理单元(GPU)等)执行所有这些步骤(即,条形码的检测或定位和解码)。

例如,虽然根据现有技术,对于N×N像素大小的图像(其中N是正整数),所需的最小输出大小或最小计算次数为3N×4N,但是根据本发明,由数字图像(即,滤波后的图像阵列)的Radon变换得到的输出的输出大小仅为N×4N,并且对于计算(例如,计算log

与需要至少2×4×N

本发明特别克服了如下的技术偏见:只有计算成本太高而不能由当前移动智能装置的处理器执行的完全且完整的Radon变换才能为确定嵌入数字图像中的条形码的位置提供所需的充分计算基础。

换句话说,本发明解放了用于在诸如智能手机等的移动智能装置上的图像数据中执行条形码检测和解码的方式,而不会对图像内的条形码的位置、大小和取向施加约束;先前被认为不可能的任务将利用当前智能手机所提供的有限处理能力来执行。

离散线与经典的连续直线的不同之处可以在于,离散线不完全遵循直线,这可以从以下方面来理解。

示例性离散线被定义在要处理图像的离散图像阵列上的整数位置处,其中,例如,当从整数位置开始时,可以执行整数个上升台阶或下降台阶,其中,每个上升台阶或下降台阶正在访问离散图像阵列的整数位置。

离散线可以例如被定义为具有遍历大小为(N,N)的二维域的、在位置{x

该集合可被评估为

并且在评价时,例如对于s=3、即s=(s

现在可以对0至N-1之间的各x(用二进制表示)评价该公式,并且在为每个y坐标添加d后,可以获得期望线。

可选地或另外,离散线可被特别地递归定义如下。例如,可以将要处理图像或图像阵列或图像域分解或分割为两半,这两半包含离散线的不同部分或段。

例如,图像阵列或图像域可以沿水平轴分割成两半,并且在给定起始整数和偶数个上升台阶的情况下,可以规定在每一半个图像阵列或半个图像域中以上升台阶的一半进行上升,并且对于奇数个上升台阶的情况,可以规定在第一半个图像阵列或第一半个图像域中执行上升的第一半,其中,第一半中的台阶数为floor((上升台阶数)/2),其中floor是floor函数,并且剩余上升台阶数在第二半个图像阵列或第二半个图像域中执行。

该示例性配方可以生成连接要处理图像或图像阵列的两个点(即,两个整数位置)的离散线。

为了完整性,应当注意,穿过要处理图像阵列的离散线的起点(或终点)可以位于图像阵列之外,即位于图像阵列点或图像阵列索引之外。换句话说,域(例如,由可以描述离散线的斜率或角度以及截距或位移所跨越的参数空间)可以延伸到域(例如,描述要处理图像的图像阵列索引)之外。

更正式地,可以通过将项

其中,

此外,向级m的部分离散Radon变换可被定义为:

这里,项“级m”可被理解为执行v∈0..2

为了完整性,应当注意,lambda函数

此外,两个连续级之间的映射可被表示为:

其中,部分级中的位数可以变化,并且可以取决于m、即当前级。如前所述,当m=0时,阵列

在执行离散Radon变换之前可以应用于数字图像或图像阵列的上述滤波器可以例如是边缘检测滤波器或梯度滤波器。例如,滤波器可以计算图像像素的强度值的梯度。

应用这种滤波器可以特别地强调要处理图像中的特征,其中,亮度或强度急剧变化或具有间断,特别地如条形码的情况那样。

因此,这可以特别便于在滤波后的图像阵列的离散Radon变换的输出中检测图案的顶点的步骤,因为示例性梯度滤波器也强调图案的边缘或轮廓。

例如,滤波后的图像的离散Radon变换的输出中的图案可以具有四边形形状(例如,菱形图案),可能的梯度滤波器可以强调四边形形状或菱形形状的图案的边缘或轮廓,使得四边形形状或菱形形状的图案的顶点可以更容易检测和定位。如以下更详细地示例性描述,这可以改进对要处理图像中的要检测条形码的位置的约束。

可以针对距图像阵列的中心最近的离散线的位移数N特别地计算上述针对滤波后的图像阵列上的多个离散线和给定斜率的离散Radon变换的计算,其中,N是整数并且是图像阵列的维度。

这可以针对滤波后的图像阵列的上离散线的每个角度或斜率进行。

令人惊讶地发现,仅计算N个中心位移的离散Radon变换足以可靠且准确地检测和确定要处理图像中的条形码的位置。例如,到目前为止,假定需要计算针对各斜率或角度的离散线的至少2N-1个位移,以获得条形码的位置的估计。

这里提出的方法不仅更高效地计算要处理图像上的离散线的所有可能位移和斜率,其还有助于计算或识别位移,因为可以相对于要处理图像的固定中心点来定义位移。

为了进一步简化和加快以上和这里描述的图像处理以检测嵌入的条形码,并且如果要处理的数字图像并非已经是正方形形状的,则可以将数字图像调整大小为正方形图像,即调整为大小成N×N的图像阵列,其中N是整数。

特别地,要处理的图像可以例如通过切割、填充或插值而被调整大小成大小为N×N的图像阵列,其中N=2

这特别地可以提高处理图像的效率,因为图像可被分割成两半或甚至分割成2的其它系数,使得可以针对图像的子部分的不同两半并行地执行图像的处理(例如,Radon变换的计算)。

此外,可以针对四个象限执行滤波后的图像阵列的离散Radon变换,其中象限可以定义要计算离散Radon变换的滤波后的图像阵列上的离散线的斜率或角度的特定范围。

例如,第一象限可以覆盖0°至45°的离散线斜率,第二象限可以覆盖45°至90°的离散线斜率,第三象限可以覆盖-90°至-45°的离散线斜率,第四象限可以覆盖-45°至0°的离散线斜率。

另外,第一象限的计算出的Radon变换的旋转和转置副本可以定义第五象限,该第五象限可以附接到第四象限和第一象限。

可以将第四象限和第一象限以Mobius环或Mobius带等的方式连接起来的第五象限的引入可以有助于避免边界效应,边界效应可能阻碍对位于要处理图像的边缘附近或边缘处的条形码的检测和定位。

如前所述,这里所述的方法比用于计算离散Radon变换以检测和定位图像中的条形码的当前方法更高效。

例如,可以针对滤波后的图像阵列的各列或各数据列执行滤波后的图像阵列的离散Radon变换。这可以特别地允许更高效的计算机处理器存储器管理,并且其中,例如,可以为滤波后的图像阵列的奇数列和偶数列的Radon变换的计算分配单独的存储器缓冲区。

例如,如果针对要计算的象限,仅计算要处理图像上的离散线的N个角度中的各角度的N个中心位移,则在离散Radon变换的各中间级,只需要计算被分布为N个值的N个数据带或列的N×N个值。

例如,在覆盖0°至45°的离散线的斜率s或角度的第一象限中,可以仅考虑位移d的中心部分,当将位移d的顶部或最大位置视为2N时,位移d可以在

特别地,数据带或数据列之间的计算关系可以示例性地表示和利用如下。

让我们考虑在特定级m+1的数据,该数据将根据来自前一级m的数据计算出,其中m是范围为0至n-1的整数,其中,n是整数,并且n=log

让我们进一步考虑属于级m+1的二维(d,s)域中的两个连续数据列或数据带,其中索引S是偶数,并且S+1是奇数。

为了计算这些列各自的期望N值,可以将长度为N个列的两个带与索引S

然后,级m+1的索引S可以例如按照如下的二进制表达式进行细分。

级m的索引可被表示为

S

为了计算另一轴d上的带或列的起点,可以定义

利用该值,可以计算:

在这些公式中,

换句话说,在这里提出的方法中,给定级的两个数据列可以加在一起,并且求和的结果可以存放或存储在存储器场所或位置,其中,从不同的后级的列的计算可以或将会查找该列。

此外,在计算的每一步,两个存储器缓冲区可以存储来自级m的数据和来自级m+1的数据。

以下的伪代码是包括上述步骤的算法的示例性实现,并且示例性地示出定义的值S、S

·从行索引

·从行索引

然而,根据进行这里所述的方法的计算机的存储器布局,可以使用以行为中心的算法版本。

如以上所指示的,在通过计算滤波后的图像阵列的离散Radon变换而生成的输出中,条形码的图像生成/被变换为(d,s)参数空间或域(即,位移/截距和斜率/角度域)中的特殊图案,该特殊图案与在原始域(即,原始图像或原始图像坐标)中检测条形码相比可以更容易地检测到。

特别地,例如,图案可以包括可在通过计算滤波后的图像阵列的离散Radon变换而生成的输出中检测到的边缘或顶点。该边缘或顶点包括可约束要处理数字图像中所存在的条形码的位置的信息。

特别地,例如,图案可以是四边形形状,例如菱形形状。

更精确地,在Radon变换输出中检测到的图案的边缘或顶点可以被转换回图像阵列中的离散线,以约束数字图像中所存在的条形码的位置。

因此,例如,图案的顶点的检测可以基于顶点的强度值以及离散Radon变换的输出的方差。

另外或可选地,可以通过已被训练用于检测顶点的神经网络来执行图案(例如,四边形形状或菱形形状的图案)的顶点的检测。

因此,约束数字图像中所存在的条形码的位置可以特别地包括对所检测到的图案的检测到的上顶点和检测到的下顶点的垂直索引求平均。这可以约束要处理图像中的条形码的斜率或角度。

约束数字图像中所存在的条形码的位置还可以包括计算所检测到的图案的检测到的两个横向顶点(例如,左顶点和右顶点)的水平索引的差。

此外,将所检测到的顶点转换回图像阵列中的离散线可以包括将所检测到的两个横向顶点(例如,左顶点和右顶点和/或上顶点和下顶点或顶点的任何其它组合)转换为图像阵列中的两个离散线的线参数并计算两个离散线的交叉点。

交叉点例如可以约束要处理图像中的条形码的中心的位置。

例如,将检测到的顶点从滤波后的图像阵列的离散Radon变换的输出的Radon d和s参数空间转换为图像中的线的x和y参数空间可以例如包括:对于0°至45°象限,计算关系y=d+s/(N-1)·x。

对于45°至90°,关系可被表示为:x=-d+(N-1-s)/(N-1)·y。

对于-45°至0°,关系可被表示为:x=d-s/(N-1)·y。

对于-90°至-45°,关系可被表示为:y=d+(s-N+1)/(N-1)·x。

用于在被表示为二维数字图像阵列的数字图像中检测条形码的示例性方法可以包括以下示例性步骤中的一个、一些或全部。

·利用智能移动装置照相机来捕获图像,可选地为中心的正方向区域或具有任何长宽比的图像

·在必要的情况下,对图像进行调整大小,使其变成大小为N×N的正方形图像,例如,其大小为N=512或N=1024(取决于装置计算能力)

·计算(正方形)图像的亮度通道的梯度的模块

·计算四个象限的计算梯度的离散Radon变换,其中仅计算针对图像上的离散线的各角度或斜率的N个中心位移

·将第一象限的垂直和水平镜像版本附接到第四象限的右侧,以获得N个中心位移的离散Radon变换(DRTN)的五象限版本

·例如通过以下操作、基于较高的均值和较小的相对方差来在五象限版本(DRTN)中定位最显著的菱形

·本地分析DRTN的5象限版本的非重叠块的均值和方差

·通过该测度来对块进行排序,并且仅取较大的块,在这些块相邻的情况下对其进行分组并提取得到的菱形的顶点

·和/或通过

·将DRTN的五象限版本传递给神经网络,该神经网络先前已被训练为在包含条形码的数千个示例性图像对中识别菱形顶点作为输入、并在其梯度的DRTN中识别菱形的位置作为输出

·对菱形的上顶点和下顶点的s索引求平均:即正方形图像空间中的条形码的斜率

·取上顶点和下顶点之间的d轴差:即正方形图像空间中的条形码的高度的指标

·将菱形的左顶点和右顶点的坐标转换为正方形图像空间中的线参数,并计算这两条线之间的交叉点:即正方形图像空间中的条形码的近似中心

·如果来自照相机的图像已按上述可选步骤调整大小和/或拉伸,则将先前计算出的所有指标以及对条形码位置的约束(当前被称为正方形图像坐标)转换为原始图像坐标

·使用条形码解码器软件所导出的原始图像坐标中的条形码的高度、斜率和中心坐标,该条形码解码器软件分析通过所检测和定位的条形码的中心的单个线;或者分析纵向遍历其中心附近的条形码的多个线的混合。

这里描述的方法和方法步骤可以通过计算机系统来执行,即,示例性计算机系统可被配置为执行根据前述方法步骤中任一项的方法。

示例性计算机系统可以例如包括智能装置(例如具有照相机的智能移动装置)。

此外,一个或多个计算机可读存储介质中可能存储有指令,该指令在由计算系统的一个或多个处理器执行时可以指示一个或多个处理器进行这里描述的用于检测数字图像中的条形码的方法或方法步骤。

附图说明

下图示出示例性方面,以更好地理解本发明。

图1a:具有偶数上升的示例性离散线

图1b:具有奇数上升的示例性离散线

图1c:针对大小为8×8的示例性图像阵列的示例性离散线

图2a:针对第一象限的示例性离散Radon变换

图2b:离散Radon变换的四个示例性象限

图3a:针对斜率或上升=0的示例性离散线/投影及其和贡献

图3b:针对斜率或上升=N-1的示例性离散线/投影及其和贡献

图3c:参与针对前两个象限的经典传统Radon变换的计算的像素数的示例性贡献

图3d:参与针对前两个象限的N个中心位移的离散Radon变换(DRTN)的计算的像素数的示例性贡献

图4:针对离散Radon变换的不同计算级的示例性存储器图案或存储器位置

图5:针对数据列或数据带的示例性计算方案

图6:用于约束嵌入图像中的条形码的位置的示例

具体实施方式

图1a、图1b和图1c示例性地示出要处理的图像阵列或图像100、105上的离散线103、104的一些方面,沿着这些离散线103、104,可以计算这里所述的离散Radon变换。

例如,图1a和图1b中的图像或图像阵列100可能具有N×N的大小(其中N=2

索引仅仅是示例性的,并且可以特别地设想,可以使用其它索引方案,例如,其中,索引从1而不是0开始。

示例性图像或图像阵列或图像域100可以沿着一个轴(例如,水平轴)分割成宽度为N/2的两半101、102,例如,其中,第一半101跨越从0至N/2-1的宽度,以及第二半跨越从N/2至N-1的宽度。

示例性描绘的离散线103可以根据截距d和斜率或升高s来定义,其中d和s可以是带符号的整数。

图1a的示例性离散线103示例性地包括偶数个上升台阶,并且示例性地连接阵列点(0,d)和(N-1,d+s),其中,离散线103的上升或升高的第一半出现在图像阵列100的第一半101中,并且其中,离散线103的上升或升高的第二半出现在图像阵列100的第二半102中。

附图标记108、109示例性地表示离散线103的起点和终点。

图1b的示例性离散线104示例性地包括奇数个上升台阶,并且示例性地连接阵列点(0,d)和(N-1,d+2(floor(s/2))+1),其中,离散线104的偶数个上升或升高台阶出现在图像阵列100的第一半101中,所述偶数个是floor(上升台阶的数量/2),其中floor是floor函数,并且其中,剩余上升或升高台阶数出现在图像阵列100的第二半102中。

附图标记110、11示例性地表示离散线104的起点和终点。

图1c示例性地示出N=8的图像阵列105上的两个离散线106、107的具体示例。

其中,示例性离散线106连接图像阵列点(0,4)和(7,6),即,线106上升两个上升台阶,其中,第一上升台阶在第一半个图像或第一图像域中执行,并且第二上升台阶在第二半个图像或第二图像域中执行。

示例性离散线107连接图像域点(0,-1)和(7,4),即,线176上升5个上升台阶,其中,前两个上升台阶在第一图像域中执行,并且其它两个上升台阶在第二半个图像或第二图像域中执行,剩余的上升台阶在这两半之间执行。

为了完整性,应当注意,穿过要处理图像阵列的离散线的起点(或终点)可以位于图像阵列之外,即位于图像阵列点或图像阵列索引之外。

图2a示出针对大小为N

示例性图像阵列200可以例如在(x,y)平面201中描述,并且可以包括可由示例性索引对(i,j)标识的N×N个图像阵列点,其中0≤i,j

示例性地,图像或图像阵列200的左下角与(x,y)平面201的原点重合,即,图像阵列点(0,0)。

描述可以执行对图像200的离散Radon变换的离散线的域可以示例性地在参数截距或位移d以及角度或斜率s的域中进行参数化。

示例性地示出可计算离散Radon变换的离散线202。

示例性离散线202仅遍历或接触要处理图像或图像阵列200的一个点,并且示例性离散线202可以例如被描述为从截距或位移d=-N+1开始并以斜率s=N上升(即,上升N个台阶)。

实际上,对于位移d=-N+1,第一象限中的离散Radon变换的唯一非零和将是上升N个台阶或位置的和,即离散线202。增加位移直到位移d=-1为止,非零上升数稳定增长,然后从位移d=0增长到d=N-1,并且对于所有可能的上升,和不为零。

作为另一实例,描绘了离散线210,其示例性地与图像200的下边缘或下行重合,并且可被描述为从截距或位移d=0开始并且以斜率s=0(即,水平地)前进或进步N个台阶。

针对图像200上的多个离散线示例性地应用表示为203的离散Radon变换在(d,s)平面208中所描述的域或域空间中(即,在由截距或位移d以及角度或斜率s参数化的域中)产生输出204。

特别地,示例性描绘的计算输出204可以通过针对具有0°至45°的斜率(即,第一象限中的离散线的斜率范围)的、包括2N个位移的离散线的集合执行离散Radon变化来生成。

输出204的大小为N

输出204也可被称为象限的Radon变换计算,更精确地被称为第一象限的Radon变换计算。

图2b示例性地示出在Radon域或Radon域空间209中计算出以获得要处理图像200的所有全局离散Radon变换的所有四个象限204、205、206、207的形状。

为了完整性,应当注意,图2b中的水平轴线由角度atan(s/(N-1))参数化。然而,其也可以简单地由斜率s参数化。

如前所述,象限可以定义跨要计算离散Radon变换的滤波后的图像阵列的离散线的斜率或角度的特定范围。

例如,第一象限可以覆盖0°至45°(0至π/4)的离散线斜率或角度,第二象限可以覆盖45°至90°(π/4至π/2)的离散线斜率,第三象限可以覆盖-90°至-45°(-π/2至-π/4)的离散线斜率,并且第四象限可以覆盖-45°至0°(-π/4至-0)的离散线斜率。

图3a示例性地示出要处理且大小为N

该图还示出具有角度或斜率s=0、但具有2N个不同的截距或位移d的示例性投影集或离散线集301,其中沿着这些投影或离散线,可以执行Radon变换。

其中,附图标记302表示针对各给定离散线301或针对各给定投影计数将贡献于给定离散线或投影的Radon变换的求和项的图像像素305的数量的示例性分箱的集合。

在示例性显示情况中,对于穿过或遍历图像300的任何投影或离散线301,贡献于该投影或离散线的Radon变换的求和项的图像像素305的数量将为8。

图3b示例性地再次示出图3a的图像或图像阵列300,但示例性地示出具有与图3a所示不同的角度或斜率(即,角度为45°(或atan(s/(N-1))=)π/4或者斜率为s=N-1)的示例性投影集或离散线集303。

再次示出针对可以执行Radon变换的角度或斜率的2N个不同截距或位移d。

与图3a类似,附图标记304表示针对各给定离散线303或针对各给定投影计数将贡献于给定离散线或给定投影的Radon变换的求和项的图像像素305的数量的示例性分箱的集合。

然而,与图3a所描绘的情况相反,贡献于沿着穿过或遍历图像300的投影或离散线303的Radon变换的求和项的图像像素305的数量变化。

例如,虽然对于投影或离散线306(即,s=N-1和d=0),将贡献于Radon变换的求和项的图像像素305的数量将为8,但是对于任何其它位移,即对于任何其它投影或离散线302,贡献图像像素305的数量将小于8。

图3c示例性和示意性地特别示出(d,s)域313中的参与针对在图3a或图3b的大小为8×8的示例性图像或图像阵列300上执行的传统或经典Radon变换的两个中央象限307、308的各值的计算的像素数,其中,轮廓311,312示例性标记不为零的Radon变换的计算或值,或者标记贡献于不为零的Radon变换的和项的像素数。

与现有技术相比,本发明允许更高效地计算每象限的(离散)Radon变换,使得对于具有给定斜率的各给定离散线,仅针对小于图像阵列的维度的两倍的位移数计算离散Radon变换。

特别地,本发明允许计算具有给定斜率的给定离散线的N个中心位移的离散Radon变换(DRTN)。

示例性地,针对两个示例性示出的象限307、308的具有给定斜率的给定离散线的N个中心位移(DRTN)的贡献像素数由轮廓309和310标记。

图3d示例性地以重排的方式仅示出针对两个示例性示出的象限307、308的具有给定斜率的给定离散线的N个中心位移(DRTN)的贡献像素309、310的数量,从而示例性地示出本发明的示例性有利效果,其中,针对某个象限的(d,s)域中的计算数或规模或所需存储器单元已从2N×N降至N×N。

换句话说,本发明可以大大节省存储器和计算需求。

图4示例性和示意性地示出对于要处理图像或图像阵列(例如,N×N图像阵列,其中N=16=2

这里,一般来说,术语“级m”可被特别地理解为要处理图像或图像阵列的离散Radon变换的计算步骤,其中m=0(例如400)是在尚未计算离散Radon变换的求和项的开始时的步骤,并且最后级(例如,级404)(其中,m=n,n是整数,并且n=log

这里,示例性地表示m=0的初始级或输入级的存储器图案400可被特别地理解为计算机系统中的、被保留用于保持或存储在计算要处理的输入图像或输入阵列的离散Radon变换期间所要执行的计算的计算值的存储器空间或存储器位置。

对于以N×N图像阵列为输入的传统离散Radon变换,存储器图案或数据存储器位置的大小将至少为在角度或斜率位置s(水平轴)上具有大小N并且在截距或位移d(垂直轴)上具有大小2N,其中,例如,在第一级中,存储器图案的下半部406(以交叉阴影灰色填充颜色标记)可被填充有零,并且其中,另一半407(无填充/白色)(例如,上半部)可被例如填充有要处理图像或图像阵列(例如,大小为N×N)的图像像素的强度值。

然而,本发明允许使用更小的存储器空间或允许更高效地使用存储器空间,而无需大小为N×2N的完整存储器空间。

在所描绘的示例中,白色像素或白色区域可被特别地理解为表示(d,s)域空间405中的需要例如根据这里所述的方法计算的一个或多个位置。

灰色/交叉阴影像素或灰色/交叉阴影区域可被特别地理解为表示(d,s)域空间405中的必须利用传统的离散Radon变换技术计算、但是可以利用这里提出的方法避免的位置。

如根据图4可以明显看出,要计算的数据列或带可以因此逐渐向下移动。

如以上所讨论的,通过认识到特定级m+1的数据可以根据前一级m的数据计算出,可以利用数据带或数据列之间的计算关系,其中,m是范围为0至n-1的整数,其中n是整数并且n=log

特别地,例如,在具有N个中心位移的离散Radon变换(DRTN)中,可以将一级的长度为N的两个数据带或数据列(例如,偶数和奇数个数据带或数据列)加在一起,以获得下一级的数据带或数据列。

换句话说,在每个级,只需要计算每个数据列或数据带的N个值。

中间级403(例如,m=3)的(垂直)长度为N的示例性数据带或数据列示例性地用附图标记408表示。

这种基于示例性数据列或数据带的对具有N个中心位移的离散Radon变换(DRTN)的计算方案在针对n级执行时,可以继而在最后级404中收敛于附图标记409所表示的、具有输入图像或图像阵列的大小(例如,大小为N×N)的存储器图案或存储器区域或覆盖区。该示例性覆盖区409与被认为足够的数据部分或数据计算相对应,并且它与图3d中纠正示出的数据部分309或310类似,尽管是对于N=8的情况。

相比之下,传统的离散Radon变换计算方案将导致由附图标记410表示的较大存储器图案或存储器区域或覆盖区。

出乎意料且令人惊讶地发现,虽然覆盖区410中的所有灰色/交叉阴影像素都可以承载不同于零的信息,但是这种信息可以被安全地忽略,因为发现与白色像素(即,从具有N个中心位移的离散Radon变换(DRTN)获得的存储器区域或覆盖区409)中所包含的信息(不同于零的和)相比,这种信息的权重或重要性是微小的。

图5示例性地示出在示例性的截距或位移为d并且角度或斜率为s的(d,s)域空间502中针对用附图标记500和501表示的两个示例性连续级m和m+1的用附图标记503、504、505和506表示的示例性数据列或数据带S

如前所述,在这里提出的方法中,在计算离散Radon变换的给定级的数据列或数据带的计算可以利用来自前一级的数据列或数据带的计算。

例如,这里可以根据来自前一级m的数据计算示例性级m+1处的数据,其中m是范围为0至n-1的整数,其中n是整数并且n=log

二维(d,s)域502中的示例性的两个连续数据列或数据带如所提及地属于级m+1,其中索引S是偶数,并且S+1是奇数。

为了计算这些列各列的期望N值,可以将长度为N个列的两个带与索引S

如前所述,这里,例如,从行索引

另一方面,对于奇数位置上的列,要实现的关系是从行索引

其中,前缀“上”示例性地表示用于存储中间结果的时间缓冲区的最大垂直索引或维度。该索引可以例如下降到3N/2,这是对需要较大索引数的现有技术方法的改进。

换句话说,在这里所提出的方法中,给定级的两个数据列可以加在一起,并且求和的结果可被存放或存储在存储器场所或位置,其中,从不同的后级的列的计算可以或将会查找该列。

图6提供了用于约束嵌入图像601(例如,由集成在例如智能手机等的移动装置中的数字照相机捕获的图像)中的条形码612的位置的示例。

在所描绘的示例中,在图像阵列域615的(x,y)平面中的示例性图像601或图像阵列特别地包括具有线性一维条形码612的物品的标记或标签614,例如价格标签。

在对图像应用具有N个中心位移的离散Radon变换(DRTN)之前,可以对图像阵列应用滤波器,如前所述,这可以特别便于对应用于图像601(更精确地,可应用于图像601的滤波后版本(未示出))的具有N个中心位移的离散Radon变换(DRTN)的输出进行分析。

在左侧,示出应用于图像601或应用于图像的滤波后版本(未示出)的示例性的具有N个中心位移的离散Radon变换(DRTN)的可能示例性输出600。这种输出在(d,s)域或域空间607中进行描述,其中d是(垂直)位移或截距,并且s是角度或斜率。

如上所述,这里描述的离散Radon变换可以在(d,s)域或域空间607中生成特定或特殊图案,由此可以导出或约束嵌入图像601中的条形码612的位置。

这里示出了包括四个顶点602、603、604、605的示例性四边形形状(例如,菱形形状)的图案606,如前文所述,该四个顶点可以容易地检测到,并且根据该四个顶点,可以导出对图像阵列域615的(x,y)平面中的条形码612的位置的约束。

更精确地,在Radon变换输出中检测到的图案的边缘或顶点可被转换回图像阵列中的离散线,以约束数字图像中所存在的条形码的位置。

因此,约束数字图像601中所存在的条形码612的位置可以特别地包括对所检测到的图案606的检测到的上顶点604和检测到的下顶点605的垂直索引或截距或斜率d求平均。这可以约束要处理图像601中的条形码的斜率或角度。

约束数字图像中所存在的条形码的位置还可以包括计算所检测到的图案606的检测到的两个横向顶点602、603(例如,左顶点602和右顶点603)的水平索引或斜率或角度的差。

此外,将所检测到的顶点转换回图像阵列中的离散线可以包括将所检测到的两个横向顶点602、603(例如,左顶点602和右顶点和/或上顶点604和下顶点605或顶点的任何其它组合)转换为图像601的图像阵列域615的(x,y)平面中的离散线的线参数。

例如,可以计算两个离散线608、609的交叉点613,其中,这两个离散线608、609是通过将所检测到的两个横向顶点602、603(例如,左顶点602和右顶点)转换到图像601的图像阵列域615的(x,y)平面中而获得的。

交叉点613可以例如约束要处理图像601中的条形码的中心的位置。

例如,将检测到的上顶点604和下顶点605转换到图像601的图像阵列域615的(x,y)平面中可以得到线610和611,该线610和611可以约束图像601中的条形码的取向和高度。

特别地,例如,将检测到的顶点从滤波后的图像阵列的离散Radon变换输出的Radon d和s参数空间转换为图像中的线的x和y参数空间可以例如包括:对于第一象限,计算关系y=d+s/(N-1)x。

换句话说,图像中的条形码的存在可以在其梯度的DRTN变换中产生四边形或菱形形状的区域或图案,该区域或图案突出显示为具有更大的值,并且同时具有与源自非条形码相关图像特征的其余的任何其它区域或图案相比更小的相对方差。

通常,基于这两个特征(均值和相对方差)的简单局部检测器是足够的,尤其是在诸如这里所述的隔离条形码612的情况下。

然而,当具有高频率的区域或非条形码相关图像特征出现在条形码的旁边时,通过为此目的训练的神经网络检测和定位四边形或菱形形状的区域或图案606是方便的。

示例性地示出由图像600中的、与检测到的条形码612不相关的特征(诸如文本或符号617、618)产生的其它伪像图案616。这些伪像图案616可被视为噪声。然而,如图所示,四边形形状(例如菱形形状)的图案606具有足够大的信噪比因子,使得这些非条形码相关特征将不会妨碍条形码的检测和定位。

接着是包括图1a、图1b、图1c、图2a、图2b、图3a、图3b、图3c、图3d、图4、图5和图6的七个表单,其中,附图标记被分配如下。

100 示例性图像/图像阵列

101 沿水平轴分割的图像/图像阵列的示例性(第一)半

102 沿水平轴分割的图像/图像阵列的示例性(第二)半

103 示例性离散线

104 示例性离散线

105 示例性图像/图像阵列

106 具有偶数上升/偶数个上升台阶的示例性离散线

107 具有奇数上升/奇数个上升台阶的示例性离散线

108 示例性起点

109 示例性终点

110 示例性起点

111 示例性终点

200 示例性要处理图像或图像阵列

201 图像阵列域的(x,y)平面的示例性原点

202 示例性离散线

203 示例性Radon变换

204 Radon变换的示例性输出、示例性第一象限

205 示例性第二象限

206 示例性第三象限

207 示例性第四象限

208Radon域的(d,s)平面的示例性起点

209Radon域的示例性起点,其中,水平轴利用atan(s/(N-1))进行参数化

300 示例性图像或图像阵列

301 示例性投影集或离散线集

302 针对各离散线或针对各投影计数将贡献于给定投影或线的Radon变换的求和项的图像像素数的示例性分箱的示例性集合

303 示例性投影集或离散线集

304 针对各离散线或针对各投影计数将贡献于给定投影或线的Radon变换的求和项的图像像素数的示例性分箱的示例性集合

305 示例性图像像素

306 示例性投影/示例性离散线

307 示例性(第一)象限

308 示例性(第二)象限

309 示例性轮廓

310 示例性轮廓

311 示例性轮廓

312 示例性轮廓

313 示例性(d,s)域或域空间,其中,d是(垂直)位移或截距,并且s是角度或斜率

400 初始级或输入级的示例性数据存储器图案或数据存储器位置

401 针对中间级(例如,第一级)的示例性数据存储器图案或数据存储器位置

402 针对中间级(例如,第二级)的示例性数据存储器图案或数据存储器位置

403 针对中间级(例如,第三级)的示例性数据存储器图案或数据存储器位置

404 针对示例性最后级(例如,输出级)的示例性数据存储器图案或数据存储器位置

405 示例性(d,s)域或域空间,其中,d是(垂直)位移或截距,并且s是角度或斜率

406 输入级的存储器图案的示例性下半部

407 输入级的存储器图案的示例性上半部

408 (垂直)长度为N的示例性数据带或数据列

409 作为具有N个中心位移的离散Radon变换(DRTN)的输出的最后级的示例性存储器区域

410 作为传统离散Radon变换的输出的最后级的示例性存储器区域

500 (d,s)域或域空间中的具有N个中心位移的离散Radon变换(DRTN)的计算的示例性级(例如,级m),其中,d是(垂直)位移或截距,并且s是角度或斜率

501 (d,s)域或域空间中的具有N个中心位移的离散Radon变换(DRTN)的计算的示例性级(例如,级m+1),其中,d是(垂直)位移或截距,并且s是角度或斜率

502 示例性(d,s)域或域空间,其中,d是(垂直)位移或截距,并且s是角度或斜率

503 示例性数据列或索引S

504 示例性数据列或索引S

505 示例性数据列或索引S

506 示例性数据列或索引S+1

507 d轴中的(垂直)偏移的示例性值

508 d轴中的(垂直)偏移的示例性值

509 d轴中的(垂直)偏移的示例性值

510 示例性数据带

511 示例性数据带

512 示例性数据带

513 示例性数据带

514 示例性数据带

515 示例性数据带

516 示例性数据带

600 示例性的具有N个中心位移的离散Radon变换(DRTN)的示例性输出

601 示例性图像,例如,由集成在移动装置中的数字照相机捕获的图像

602 示例性顶点

603 示例性顶点

604 示例性顶点

605 示例性顶点

606 示例性图案,例如,示例性四边形形状(例如,菱形形状)的团

607 示例性(d,s)域或域空间,其中,d是(垂直)位移或截距,并且s是角度或斜率

608 由检测到的顶点导出的图像阵列域的(x,y)平面中的示例性线

609 由检测到的顶点导出的图像阵列域的(x,y)平面中的示例性线

610 由检测到的顶点导出的图像阵列域的(x,y)平面中的示例性线

611 由检测到的顶点导出的图像阵列域的(x,y)平面中的示例性线

612 示例性条形码

613 图像阵列域的(x,y)平面中的条形码的示例性中心位置

614 示例性标记

615 图像或图像阵列域的示例性(x,y)平面

616 示例性伪像图案,该图案由非条形码相关图像特征产生

617 与条形码不相关的图像中的示例性特征

618 与条形码不相关的图像中的示例性特征

相关技术
  • 一种条形码检测方法、条形码检测装置及电子设备
  • 条形码评价装置、条形码图像生成系统、条形码评价方法、条形码图像生成方法以及条形码评价程序
技术分类

06120112146059