一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

几何失真的QR码的校正方法与流程

2022-02-22 07:39:31 来源:中国专利 TAG:

几何失真的qr码的校正方法
技术领域
1.本发明涉及用于校正图像中的几何失真的快速响应码(qr码)以便读取并解译该码的方法。
2.本发明还涉及相机系统以及使设备执行所述方法的计算机程序产品。


背景技术:

3.在许多环境和情况中,存在快速响应码(qr码)意外失真、即弯曲或扭曲的情况。qr码可例如被布置在上凸或下凹的表面上,或qr码下方可能有隆起或凹坑,这导致qr码的图案失真。失真的qr码可能很难读取或甚至无法读取。
4.如今存在这样的方法:当表面失真角已知时或如果能从捕获的qr码图像确定表面失真角,则能够校正布置在上凸或下凹的表面或基底上的被成像的qr码以便读取。然而,qr码可能有不止一个失真和/或与由上凸或下凹的表面导致的失真不同类型的失真。
5.因此,需要一种方法,其能够校正具有由上凸或下凹的基底导致的失真的被成像的qr码或者具有随机失真或不止一种类型的失真的qr码。


技术实现要素:

6.现在发明了改进的方法以及实施该方法的技术设备。本发明的各种方面包括其特征如独立权利要求所述的方法、设备和包括存储于其中的计算机程序的计算机可读介质。从属权利要求公开了本发明的各种实施例。
7.根据本发明的第一方面,提供了包括校正几何失真的qr码的方法,所述几何失真的qr码包括模块化结构。该方法包括:通过将每个模块分成f*f个样本元素来对qr码的模块进行过采样(oversampling),以形成过采样矩阵,确定过采样矩阵中的每个样本元素的强度(intensity),计算过采样矩阵的平均强度,用过采样矩阵中的每个样本元素的强度减去所述平均强度,过滤强度值以确定每个样本元素的平均值,以及跟踪与每个模块的中心相对应的样本元素并使用递归(recursion)来基于与每个模块的中心相对应的样本元素的强度确定每个模块的颜色。
8.根据一个示例,递归包括:形成包括模块的数据结构的队列q,其中,数据结构包括关于以下的信息:模块的中心的位置、模块的颜色、以及模块在qr码中的位置;针对模块(x,y)的数据结构,创建模块(x,y)及其8个相邻模块的x、y坐标的lnxy列表,所述模块(x,y)的数据结构是其中心位置和颜色未知的队列q中的第一个数据结构;基于其中心已知的相邻模块来计算与模块(x,y)的中心估计值(ex,ey)相对应的样本元素;定义预定数量个偏移样本元素候选oc,其中,所述偏移样本元素候选oc包括中心估计值(ex,ey)以及中心估计值(ex,ey)周围的样本元素;为其中心未知的模块提供一组颜色组合假设;针对每个偏移样本元素候选以及每个颜色组合假设执行以下步骤:提供包括所述偏移样本元素候选oc的强度的lsc列表,这是通过在坐标(e oc*f)处从过采样矩阵读取每个所述偏移样本元素候选的强度,其中,e=中心估计值(ex,ey);提供与列表lsc中的样本元素的强度相对应的9个颜色
假设(ch)的lch列表;关联列表lsc和lch并存储关联结果,以针对模块(x,y)的中心确定与关联值最高的偏移样本元素候选相对应的样本元素;以及通过从过采样矩阵拾取关联值最高的偏移样本元素候选的强度值来确定模块(x,y)的颜色。
9.根据一个示例,该方法还包括:通过所确定的模块(x,y)的中心和颜色信息,更新模块(x,y)的数据结构,并将列表lnxy中的模块(x,y)坐标附加到队列q中。
10.根据一个示例,其中,通过将qr码的每个模块分成f*f个样本元素来执行过采样,以形成过采样矩阵。
11.根据一个示例,该方法还包括对qr码周围的边缘进行过采样。
12.根据一个示例,其中,通过将边缘的每个模块分成f*f个样本元素来执行边缘的过采样,以形成过采样矩阵的一部分。
13.根据一个示例,该方法还包括:从模块的数据结构读取颜色信息,以定义qr码的信息内容。
14.根据一个示例,其中,f是大于或等于4的整数。
15.根据一个示例,其中,边缘m决定了要处理qr码上的多少个模块。
16.根据一个示例,其中,颜色组合假设包括其中心未知的模块的所有可能颜色组合。
17.根据一个示例,其中,当关联lsc和lch列表时,列表中的元素相乘并求和。
18.根据本发明的第二方面,提供了体现在在非暂时性计算机可读介质上的计算机程序产品,所述计算机程序产品包括计算机指令,所述计算机指令当在装置或系统的至少一个处理器上执行时被配置成实行几何失真的qr码的校正方法,所述几何失真的qr码包括模块化结构。该方法包括:通过将每个模块分成f*f个样本元素来对qr码的模块进行过采样,以形成过采样矩阵,确定过采样矩阵中的每个样本元素的强度,计算过采样矩阵的平均强度,用过采样矩阵中的每个样本元素的强度减去所述平均强度,过滤强度值以确定每个样本元素的平均值,以及跟踪与每个模块的中心相对应的样本元素并使用递归来基于与每个模块的中心相对应的样本元素的强度确定每个模块的颜色。
19.根据一个示例,递归包括:形成包括模块的数据结构的队列q,其中,数据结构包括关于以下的信息:模块的中心的位置、模块的颜色、以及模块在qr码中的位置;针对模块(x,y)的数据结构,创建模块(x,y)及其8个相邻模块的x、y坐标的lnxy列表,所述模块(x,y)的数据结构是其中心位置和颜色未知的队列q中的第一个数据结构;基于其中心已知的相邻模块来计算与模块(x,y)的中心估计值(ex,ey)相对应的样本元素;定义预定数量个偏移样本元素候选oc,其中,所述偏移样本元素候选oc包括中心估计值(ex,ey)以及中心估计值(ex,ey)周围的样本元素;为其中心未知的模块提供一组颜色组合假设;针对每个偏移样本元素候选以及每个颜色组合假设执行以下步骤:提供包括所述偏移样本元素候选oc的强度的lsc列表,这是通过在坐标(e oc*f)处从过采样矩阵读取每个所述偏移样本元素候选的强度,其中,e=中心估计值(ex,ey);提供与列表lsc中的样本元素的强度相对应的9个颜色假设(ch)的lch列表;关联列表lsc和lch并存储关联结果,以针对模块(x,y)的中心确定与关联值最高的偏移样本元素候选相对应的样本元素;以及通过从过采样矩阵拾取关联值最高的偏移样本元素候选的强度值来确定模块(x,y)的颜色。
20.根据一个示例,该方法还包括:通过所确定的模块(x,y)的中心和颜色信息,更新
模块(x,y)的数据结构,并将列表lnxy中的模块(x,y)坐标附加到队列q中。
21.根据一个示例,其中,通过将qr码的每个模块分成f*f个样本元素来执行过采样,以形成过采样矩阵。
22.根据一个示例,该方法还包括对qr码周围的边缘进行过采样。
23.根据一个示例,其中,通过将边缘的每个模块分成f*f个样本元素来执行边缘的过采样,以形成过采样矩阵的一部分。
24.根据一个示例,该方法还包括:从模块的数据结构读取颜色信息,以定义qr码的信息内容。
25.根据一个示例,其中,f是大于或等于4的整数。
26.根据一个示例,其中,边缘m决定了要处理qr码上的多少个模块。
27.根据一个示例,其中,颜色组合假设包括其中心未知的模块的所有可能颜色组合。
28.根据一个示例,其中,当关联lsc和lch列表时,列表中的元素相乘并求和。
29.根据本发明的第三方面,提供了包括用于执行几何失真的qr码的校正方法的装置的设备,所述几何失真的qr码包括模块化结构。该方法包括:通过将每个模块分成f*f个样本元素来对qr码的模块进行过采样,以形成过采样矩阵,确定过采样矩阵中的每个样本元素的强度,计算过采样矩阵的平均强度,用过采样矩阵中的每个样本元素的强度减去所述平均强度,过滤强度值以确定每个样本元素的平均值,以及跟踪与每个模块的中心相对应的样本元素并使用递归来基于与每个模块的中心相对应的样本元素的强度确定每个模块的颜色。
30.根据一个示例,递归包括:形成包括模块的数据结构的队列q,其中,数据结构包括关于以下的信息:模块的中心的位置、模块的颜色、以及模块在qr码中的位置;针对模块(x,y)的数据结构,创建模块(x,y)及其8个相邻模块的x、y坐标的lnxy列表,所述模块(x,y)的数据结构是其中心位置和颜色未知的队列q中的第一个数据结构;基于其中心已知的相邻模块来计算与模块(x,y)的中心估计值(ex,ey)相对应的样本元素;定义预定数量个偏移样本元素候选oc,其中,所述偏移样本元素候选oc包括中心估计值(ex,ey)以及中心估计值(ex,ey)周围的样本元素;为其中心未知的模块提供一组颜色组合假设;针对每个偏移样本元素候选以及每个颜色组合假设执行以下步骤:提供包括所述偏移样本元素候选oc的强度的lsc列表,这是通过在坐标(e oc*f)处从过采样矩阵读取每个所述偏移样本元素候选的强度,其中,e=中心估计值(ex,ey);提供与列表lsc中的样本元素的强度相对应的9个颜色假设(ch)的lch列表;关联列表lsc和lch并存储关联结果,以针对模块(x,y)的中心确定与关联值最高的偏移样本元素候选相对应的样本元素;以及通过从过采样矩阵拾取关联值最高的偏移样本元素候选的强度值来确定模块(x,y)的颜色。
31.根据一个示例,该方法还包括:通过所确定的模块(x,y)的中心和颜色信息,更新模块(x,y)的数据结构,并将列表lnxy中的模块(x,y)坐标附加到队列q中。
32.根据一个示例,其中,通过将qr码的每个模块分成f*f个样本元素来执行过采样,以形成过采样矩阵。
33.根据一个示例,该方法还包括对qr码周围的边缘进行过采样。
34.根据一个示例,其中,通过将边缘的每个模块分成f*f个样本元素来执行边缘的过采样,以形成过采样矩阵的一部分。
35.根据一个示例,该方法还包括:从模块的数据结构读取颜色信息,以定义qr码的信息内容。
36.根据一个示例,其中,f是大于或等于4的整数。
37.根据一个示例,其中,边缘m决定了要处理qr码上的多少个模块。
38.根据一个示例,其中,颜色组合假设包括其中心未知的模块的所有可能颜色组合。
39.根据一个示例,其中,当关联lsc和lch列表时,列表中的元素相乘并求和。
40.根据一个示例,所述设备包括用于捕获几何失真的qr码的图像的图像传感器。
41.根据一个示例,所述设备包括用于接收几何失真的qr码的图像数据的装置。
42.根据一个示例,所述设备为移动电话、移动计算机、平板计算机、或qr码扫描器。
附图说明
43.在下文中,将参考附图更详细地描述各种示例实施例,其中:图1作为示例示出了适用于校正失真的qr码的设备,图2a作为示例示出了几何失真的qr码的图像,图2b作为示例示出了图2a的几何失真的qr码中的模块,图3a示出了非几何失真的qr码中的模块,图3b至3f作为示例示出了几何失真的qr码中的模块,图4a作为示例示出了所示几何失真的qr码的图像以及布置在qr码图像上的模块,图4b作为示例示出了在对图4a所示的模块进行过采样后的过采样矩阵中的一个模块以及该模块的样本元素,图4c作为示例示出了图4b所示模块的样本元素减去平均强度后的平均强度,图4d作为示例示出了过采样矩阵上的两个过滤器位置,其用于确定出现在被布置为进行校正以供读取的qr码的每个模块中的局部最大值和局部最小值,图4e作为示例示出了对其数据结构进行检查的模块(x,y)及其相邻模块,包括有关其颜色和中心位置已知(即模块a)还是未知(即模块b)的信息,图4f作为示例示出了模块(x,y)的估计中心(ex,ey)、以及该估计中心(ex,ey)周围的偏移样本元素候选和相邻模块中的对应位置,图5作为示例示出了用于校正几何失真的qr码的方法的步骤,以及图6作为示例示出了递归的步骤。
具体实施方式
44.本发明涉及根据本发明的示例实施例的方法,在该方法中,布置几何失真的快速响应码(qr码)的图像数据以对其进行校正。图像数据包括失真(即歪斜)的qr码的图像。这样,设备可能无法读取和解译qr码,但是应校正图像中的qr码,即,使之不失真,以使得qr码的信息可读。术语“快速响应码(即qr码)”是具有矩阵条形码或二维条码的形式类型。qr码由黑色方块组成,即布置在方形网格上的模块,方形网格即白色背景上的模块网格,qr码可由成像设备读取并由数据处理设备进行处理,使得能够解译qr码的信息。在本上下文中,术
语“成像设备”包括适用于捕获图像和/或视频(即图像数据)的任何图像传感器,例如,黑白或彩色相机、普通或智能相机或任何适当的相机。此外,术语“图像”不仅包括静态图像,而且还包括动态图像,例如视频帧。
45.在该方法中,提供几何失真的快速响应码(qr码)的图像数据。例如,可从成像设备、另一设备、设备存储器、互联网或云服务接收图像数据,或可由该设备本身通过成像设备捕获图像数据。接下来,对qr码区域进行过采样,以创建过采样矩阵,所述qr码区域包括qr码的模块和qr码周围的边缘区域(即qr码周围的边框区域)。例如,边缘的宽度可与qr码的2个模块的宽度相对应。然后,确定此过采样矩阵的平均强度,即平均值,并用过采样矩阵的样本元素的强度减去该平均强度,使得深色和黑色样本元素具有负值,并且与白色或浅色样本元素相对应的样本元素具有正值。然后,对这些减去后的样本值进行线性过滤(linearly filter),以确定指示出现在每个模块的样本元素位置内的局部最大值和局部最小值的信息。此后,至少使用以下各项来跟踪模块及其中心点的位置:经线性过滤的样本值、模块的局部最大和局部最小样本值的位置、和/或相邻模块的已知或先前确定的颜色和中心点位置信息,并且然后从过采样矩阵读取模块的中心点的颜色,以确定模块的颜色。然后可从校正后的qr中码读取所确定的信息,即通过跟踪计算出的信息,即模块位置信息和模块颜色信息,就像从非失真的qr码中读取一样。
46.该方法可例如由适用于处理图像数据以校正几何失真的qr码的设备或包括设备的系统来执行。在本上下文中,术语“处理”可以是指任何类型的处理和/或分析和/或计算和/或确定操作。例如,处理可以是指通过一个或多个数字信号处理算法对图像数据的信号处理。设备可包括图像数据处理装置,例如,设备可包括处理电路和用于对图像数据进行数字信号处理的电子装置、存储器中的计算机程序代码以及处理器,所述处理器当运行所述计算机程序代码时,使所述设备对被构造为要解译的qr码的图像数据进行信号处理。数据处理设备可以是该设备的集成部分,或者其可以是单独的设备。此外,设备可包括成像装置(例如至少一个成像设备)或从其他设备、数据库或互联网、云等接收图像数据的装置。此外,设备可包括用于执行动作的装置,所述动作由校正后的qr码确定并与例如要访问的网站或要执行的应用相关。
47.执行根据本发明的示例实施例的方法(即失真的qr码图像数据的校正步骤)的设备可以是例如任何便携式电子设备,例如智能设备、移动电话、智能相机、移动计算机、移动协作设备、移动互联网设备、智能电话、平板计算机、平板个人计算机(pc)、个人数字助理、掌上游戏机、qr码扫描器、便携式媒体播放器、数字摄像机(dvc或数字摄录像机)、寻呼机、蜂窝电子设备、非蜂窝电子设备、或个人导航设备(pnd)。然而,该设备也可以不是移动设备,该设备也可以是包括根据示例实施例的用于校正失真的qr码图像数据的处理装置的任何其他设备。也可以在例如云服务等中执行该方法。
48.图1示出了根据示例实施例的设备10。在本实施例中,设备10包括处理器12、存储器14、通信接口16、用户接口18和图像捕获模块(如相机11)或以其他方式与它们通信。处理器12可以体现为各种不同的方式。处理器12可例如体现为各种硬件处理装置中的一个或多个,如协处理器、微处理器、控制器、数字信号处理器(dsp)、具有或不具有随附dsp的处理元件等。处理器12可包括被配置成独立执行的一个或多个处理核。处理器12可被配置成执行存储在存储器14中的或处理器12可以其他方式访问的指令。处理器12也可以是特定设备的
处理器,通过用于执行本文描述的算法和/或操作的指令来对该处理器进行进一步配置,以将其配置成采用本发明的实施例。
49.图像捕获模块11为设备10的可选部分。图像捕获模块11可以是例如相机、摄像机或适用于捕获qr码的图像数据的任何其他图像捕获装置。图像捕获模块11与处理器12通信。这样,图像捕获模块11可包括例如镜头或(一个或多个)其他光学组件、图像传感器、图像信号处理器等所有硬件、以及创建数字图像文件(即,来自所捕获的图像的图像数据)所需的软件。在一个实施例中,图像捕获模块11还可包括处理装置,如处理图像数据的协处理器。
50.存储器14可包括例如一个或多个易失性和/或非易失性存储器,即,存储器14可以是电子存储设备,如计算机可读存储介质,其包括被配置成存储数据的门,所述数据可由处理器12检索。存储器14可被配置成存储信息、数据、图像数据、内容、应用、指令等,以使设备10能够实现根据本发明的示例实施例的各种功能。附加地或替换地,存储器14可被配置成存储供处理器12执行的指令。
51.通信模块16可以是被配置成从/向网络和/或与设备10通信的任何其他设备、模块或相机接收数据和/或传输数据的任何装置,如体现为硬件或硬件和软件的组合的设备或电路。通信模块16可包括例如至少一个天线以及使得能够与无线通信网络进行通信的支持硬件和/或软件、或使得能够经由线缆、数字订户线(dsl)、通用串行总线(usb)等实现通信的硬件/软件。
52.设备10的用户接口18也可以是设备10的可选部分,并可与处理器12通信,以向用户提供输出并接收用户输入。用户接口18可包括例如显示器、键盘、鼠标、触摸屏、触摸区、软键盘、麦克风、扬声器或其他输入/输出机构(未示出)。处理器12可包括被配置成控制用户接口18的至少一些功能的用户接口电路。
53.图2a作为示例示出了几何失真的qr码21的图像20。本发明的方法可用于处理qr码21的图像数据,使得其至少较不失真并可由设备读取。图像20为静止图像。本示例的qr码21在中间弯曲,但四边是直的。还示出了qr码21周围的边缘区域22。
54.图2b作为示例示出了图2a的几何失真的qr码21的模块23。从图2b可以看出模块23相对于彼此的位置如何以及一些模块23的尺寸如何与其他模块的尺寸不同。在本示例中,边缘区域22的宽度24宽达2个模块,但也可以更大,如宽达3至4个模块。边缘区域可能是必需的,因为在某些几何失真的qr码中,可能至少一个边不是直的,并且边缘区域确保了当在校正qr码时也对边缘区域进行处理时处理了失真的qr码的所有模块。然而,如果几何失真的qr码不包括不直的至少一个边,则无需边缘。在本示例中,用阴影线的正方形指示边缘区域22。
55.图3a示出了非几何失真的qr码30的模块。图3b至3f作为示例示出了以不同方式失真的几何失真的qr码的模块,其可通过本发明的方法进行校正。在这些图3a至3f中,没有指示边缘区域。图3b示出了几何失真的qr码31的模块32。模块32具有许多尺寸,模块32在竖直和水平方向上处于不同水平处。qr码31的侧边(即边)不均匀,并且这种不均匀正是在校正几何失真的qr码时需要边缘区域的原因。图3c示出了几何失真的qr码33的模块32。该qr码的模块32的尺寸几乎相同,但它们在水平方向上位于不同水平处。qr码33的竖边也很不均匀。图3d至3f示出了几何失真的qr码34、35和36的模块32。同样,有许多尺寸的模块32,并且
模块32在竖直和/或水平方向上处于不同水平处。
56.接下来作为示例描述了被布置为用于校正几何失真的qr码以使其信息可读的方法。图4a至图4f作为示例指示了在该方法的上下文中讨论的特征。图4a作为示例示出了所示几何失真的qr码的图像以及布置在qr码上的模块,图4b作为示例示出了对图4a所示的模块进行过采样后的过采样矩阵中的一个模块以及该模块的其样本元素。图4c作为示例示出了减去平均强度后的图4b所示的样本的平均强度。图4d作为示例示出了图4c的模块上的两个过滤器位置,其中,过滤被布置为确定在原始图像中出现在模块中的局部最大值和局部最小值。图4e作为示例示出了对其数据结构进行检查(即,被布置为由该方法来确定)的模块(x,y)及其相邻模块,包括有关其颜色和中心位置是否已知的信息,模块(a)具有已知颜色和中心位置,并且模块(b)具有未知颜色和中心位置。图4f作为示例示出了模块(x,y)的估计中心(ex,ey)以及估计中心(ex,ey)周围的偏移样本元素候选和相邻模块中的对应位置。
57.针对该方法,输入失真的qr码40的图像数据以及qr码40的那三个外角的位置坐标,包括寻位器(finder)图案44。
58.假设qr码40的模块计数已知,并且x和y方向上都有n个模块41,因此总共有n*n个模块。qr码中的模块数量可以为例如21至177个。然而,如果模块41的数量未知,则可以通过使用一些已知方法和寻位器图案的宽度和高度始终为八个模块的信息来计算该数量。
59.该方法的第一步为过采样步骤,其中,对qr码区域和qr码周围的边缘区域m的模块41进行过采样。过采样的意思是将qr码区域和边缘区域m的模块划分成样本元素,使qr码区域和边缘区域m的每个模块中有f*f个样本元素。f为过采样系数,并且其可以是选择的,或可以针对该方法进行预定义。
60.首先,选择或预设最中间的寻位器图案44的角作为原点o,图4a示出(步骤1.1)。
61.选择坐标系的x轴和y轴作为从原点o到包括寻位器图案44的其他两个角中的每一个角的方向。图4a也示出了这些x轴和y轴(步骤1.2)。
62.过采样系数f是大于或等于4的整数,例如,在图4a至图4f的示例中,f=8,但如先前所述,f至少是4或大于4。针对该方法预定义f。此后,选择边缘m,或者其可以是预定义的。边缘m决定了该校正方法超出通过x轴和y轴设置的预期边界的模块数量,即,要针对预期qr码40周围的多少个模块来执行用于校正几何失真的qr码的方法的方法步骤。m小于空白区,即qr码周围的白色区域。图4a示出了边缘m(步骤1.3)。
63.然后,为尺寸为((n 2*m) * f)
ꢀ×ꢀ
((n 2*m) * f)的矩阵(即过采样矩阵)分配(即指派)存储器(步骤1.4)。
64.然后,对包括边缘m的区域的qr码40的区域进行采样。采样的意思是确定过采样矩阵中的每个样本元素的强度。采样从与模块坐标(-m,-m)相对应的图像坐标开始(如图4a所示),到与模块坐标(n m,n m)相对应的图像坐标结束(同样如图4a所示)。在x方向和y方向上,每个模块41从图像提取f个样本,即样本元素,使得每个模块中至少平均有f*f个样本元素。通过x轴和y轴的方向来确定采样点在图像内移动的方向。随着采样过程访问所有的(n 2m)
ꢀ×ꢀ
(n 2m)个模块并产生((n 2*m) * f)
ꢀ×ꢀ
((n 2*m) * f)个样本元素,该过程将过采样矩阵的样本元素填充有其强度值。图4b示出了过采样矩阵的一个模块41,并且还示出了模块41中的样本元素42,由于在本示例中f=8,因此每个模块41中的样本元素42
的数量为8*8=64,这在模块41中示出。x轴中有28个模块,y轴中有28个模块,并且边缘是2个模块,n=28并且m=2,因此,过采样矩阵的样本元素数量为((28 2*2) * 8) * (28 2*2) * 8) = 256*256。从现在开始,数据处理方法的其余部分将针对包含必要信息的过采样矩阵来执行,所述必要信息例如与模块在qr码中的位置等相关(步骤1.5)。应该注意的是,28作为n只是qr码中模块数量的一个示例,本文只是以此来阐明第二步的想法。
65.校正方法的第二步是强度步骤,包括平均强度确定和强度归一化。首先确定平均强度,即针对整个过采样矩阵计算平均强度。这可以通过多种方式来完成,例如使用在qr码40的三个角处的寻位器图案44,或者通过使用采样矩阵的算术平均(步骤2.1)。
66.然后用过采样矩阵中每个样本元素的强度减去平均强度,使得对应于深色和黑色模块的样本元素变为负值,而对应于白色和浅色模块的样本元素变为正值。例如,过采样矩阵的样本元素的强度确定可以首先为样本元素赋予0至255之间的强度值。减去平均强度后,范围是-128到127,因此,例如,最开始具有0强度值(对应于黑色)的样本元素在减去后具有-128的强度值,并且最开始具有100强度值(对应于暗色)的样本元素在减去后具有-28的强度值。强度范围不限于本示例的0到255,而是可以自由选择。图4c示出了包括样本元素的减去后的强度值的模块41的示例。但应该注意的是,图4c中的这些强度值再次只是样本元素可能的减去后的强度值的示例,并且仅被布置以指示该第二步的想法(步骤2.2)。
67.该方法的第三步涉及过采样矩阵中的强度值的过滤。首先可以选择内核大小为k的线性2d过滤器,或者它可以是预定义的。合适的过滤器的示例是统一的5x5框形过滤器43,使得每个过滤器系数为1/25。过滤器可以具有不同的大小或形状。也可以使用例如高斯过滤器来代替框形过滤器或使用适合用于强度值的这种过滤的任何其他过滤器(步骤3.1)。
68.然后用这个过滤器42来过滤过采样矩阵和它的强度值。结果,当使用框形过滤器时,过滤器计算每个样本元素的平均值,并且当使用其他过滤器时,计算每个样本元素的加权平均值,这是过滤器43内部中间的样本元素。为过采样矩阵的每个样本值42计算平均值。如果所布置的样本元素周围没有足够的样本元素被过滤,则保留在过滤器43内的这些值用于计算平均值。图4d中过滤器43内的ma1和ma2指示中间一个样本元素的两个示例(步骤3.2)。
69.作为该过滤操作的结果,确定了每个模块41内的局部最大值或局部最小值,即最低或最高平均值。很可能局部最大值或局部最小值或至少局部最大值或局部最小值附近的区域包括对应于原始qr码中没有几何失真的模块中心的位置,并且其也是该方法的输出(步骤3.3)。
70.该方法的第四步涉及跟踪失真的qr码40的各模块的位置。跟踪可以例如通过使用递归来完成。首先,当使用递归来跟踪模块的中心位置时,如下开始递归:将已知的三个角的模块坐标插入到标为q的队列中。已知坐标与寻位器图案44所在的角相关,并且坐标对应于这些图案44的外角。外角是作为qr码40的外角的图案44的角。坐标为(0,0)、(0,n-1)和(n-1,0),其中n是每个方向的模块数量,如第一步所述。模块坐标不同于过采样矩阵的样本元素的坐标。除了模块坐标,按照过采样矩阵的坐标的有关模块的中心位置的信息和模块的颜色被附加(即存储)到插入队列q的数据结构中。模块中心的位置很可能是第三步计算出的强度的局部最大值或最小值或与局部最大值或最小值相邻的样本元素。默认情况下,
中心模块的位置和颜色最初都标记为“未知”(步骤4.1)。
71.队列q现在包括在步骤4.1中插入其中的模块的数据结构。然后,针对这些模块或在第四步后期添加到q并且中心位置和颜色尚未确定的模块,即这些模块的中心位置和颜色未知,针对队列q中的那些模块执行以下步骤4.3至4.16,一次一个模块。步骤4.3至4.16形成一个递归循环(步骤4.2)。
72.从队列q中取出q的第一个数据结构(包括模块坐标、中心位置和颜色)以进行处理(步骤4.3)。
73.然而,如果队列q中的数据结构中模块的中心坐标的位置和颜色是已知的(其例如是在较早的轮次中在执行步骤4.3至4.16时确定的),则从队列q中取出下一个数据结构以进行处理,即递归向回继续到步骤4.3(步骤4.4)。
74.如果数据结构中模块的中心和颜色未知,即并不知道它们,则递归向前继续。创建坐标列表,其包含一个模块的x和y(x,y)坐标及其8个相邻模块的坐标。因此该列表包括以下坐标对:(x-1,y-1)、(x,y-1)、(x 1,y-1)、(x-1,y)、(x,y)、(x 1,y)、(x 1,y 1)、(x,y 1)和(x 1,y 1)。该列表可以标为lnxy,并且可以调用当前正检查的数据结构的模块,例如模块(x,y) 45(图4e所示)(步骤4.5)。
75.列表中的相邻坐标可以被分开(即分)为两个集合,其中集合a包括具有已知的模块中心位置和颜色的相邻模块,并且集合b包括具有到目前为止未知的模块中心位置和颜色的相邻模块。集合a和集合b中的相邻模块的数量分别由na和nb表示。na nb=9。模块(x,y) 45本身属于集合b。集合a和集合b的模块如图4e所示(步骤4.6)。
76.接下来,使用(即基于)关于集合a中的相邻模块的中心的信息来计算对应于中心的初始估计(即模块(x,y) 45的中心估计值(ex,ey) 46)的样本元素。例如,可以假设集合a包括模块(x-1,y)和(x 1,y)。如果模块(x-1,y)的中心是过采样坐标(sx,sy)处的样本元素,则可以预测模块(x,y) 45的中心是过采样坐标(sx f,sy)处的样本元素。相应地,如果模块(x 1,y)的中心是过采样坐标(rx,ry)处的样本元素,那么预测模块(x,y) 45的中心是过采样坐标(rx-f,ry)处的样本元素。最终估计值于是是各分量估计值的平均值。在本示例中,中心估计样本元素将是(ex,ey) = (sx f rx-f,sy ry)/2 = ((sx rx)/2,(sy ry)/2)(步骤4.7)。
77.然而,如果集合a是空的,即没有任何相邻模块的中心坐标和颜色是已知的,则模块(x,y) 45的中心估计值可以设置为((m x 1/2)*f,(m y 1/2)*f)。但是,仅当坐标(x,y)是推送到队列q的三个初始坐标之一、即qr码40的寻位器图案44的外角之一时,集合a才能为空(步骤4.8)。
78.在步骤4.8中估计与模块(x,y) 45的中心估计值(ex,ey) 46相对应的样本元素之后,形成9个偏移样本元素候选x的列表,即定义偏移样本元素候选x。该列表包括中心估计值(ex,ey) 46和(ex,ey) 46周围的8个偏移样本元素候选x。(ex,ey) 46周围的偏移样本元素候选将偏移样本元素矩阵47形成到模块(x,y) 45及其相邻模块中。模块(x,y) 45的真实中心可能不在(ex,ey) 46处,而是该估计(步骤4.7或4.8)确定它在(ex,ey) 46处。因此,除了中心估计值(ex,ey) 46的样本元素之外,还检查(ex,ey) 46周围的八个样本元素,以确定中心实际是在中心估计值(ex,ey) 46的样本元素处还是在中心估计值(ex,ey) 46的样本元素旁边的偏移样本元素处。偏移样本元素候选是(dx,dy),其中dx和dy属于集合{-1,0,
1}。此列表中的偏移样本元素之一将用于调整模块(x,y) 45的中心,即将是模块(x,y) 45的实际(即确定的)中心。当检查模块(x,y) 45的偏移样本元素候选以确定模块(x,y) 45的中心是否实际在该位置时,除了模块(x,y)的偏移样本元素候选之外,还使用相邻模块中在偏移样本元素矩阵47中处于对应位置的偏移样本元素。例如,如果模块(x,y) 45的右上偏移样本元素候选正在检查中,则使用相邻模块的偏移样本元素矩阵47中的右上偏移样本元素候选。右上偏移样本元素候选在图4f中被圈出。一般在校正方法的其他示例中,可以使用例如5个偏移样本元素候选来代替9个偏移样本元素候选,其中中心样本元素再次是具有中心估计值(ex,ey) 46的样本元素(在步骤4.7或4.8中估计的),并且其他四个偏移样本元素是模块(x,y) 45中心除(ex,ey) 46外的可能位置(步骤4.9)。
79.此后,布置为向集合b中的模块(即中心仍然未知的模块)提供所有可能的颜色组合的集合。有2^nb种可能的颜色组合。在颜色组合中,-1表示黑色,并且 1表示白色。例如,如果b中有4个模块,则颜色组合数为2^4 = 16。可能的颜色组合,即颜色组合假设(ch)可以例如是(-1,-1,-1, 1, 1, 1, 1, 1, 1)或(-1,-1,-1, 1, 1,-1, 1, 1, 1)。从这些示例组合可以看出,在该示例中,前5个颜色是相同的,即它们是其颜色先前已确定或至少已知的模块的颜色。其他的最后4个是颜色可能性,现在示例组合的偏差与第六个模块的颜色有关。第一个ch建议第六个模块为白色( 1),而第二个ch建议其为黑色(-1)(步骤4.10)。
80.针对模块(x,y) 45的每个9个偏移样本元素候选(oc)(估计的样本元素(ex,ey) 46和它周围的8个偏移样本元素)并且针对每种颜色组合假设(ch)执行接下来的步骤4.11至4.16,即步骤4.11至4.16执行9*2^nb次,在本示例中为9*16次。
81.通过在坐标(e oc*f)(其中e=(ex,ey) 46是在步骤4.7中定义的初始估计值)处从过采样矩阵读取样本(即强度)来提供标为lsc的列表,其包括偏移样本元素候选的样本元素的9个强度(集合a中和集合b中每个模块一个)。换言之,如步骤4.9中解释的,当检查模块(x,y) 45的偏移样本元素候选以确定模块(x,y) 45的中心是否实际在该位置时,除了模块(x,y)的偏移样本元素候选之外,还使用相邻模块中在偏移样本元素矩阵47中处于对应位置的偏移样本元素,因此在每个偏移样本元素候选的lsc列表中,确定9个强度:其自身的强度和相邻模块中在偏移样本元素矩阵47中处于对应位置的偏移样本元素的强度。并且这是针对模块(x,y) 45的每个偏移样本元素候选完成的(步骤4.11)。
82.此后,提供对应于列表lsc中样本元素强度的9个颜色假设(ch)的列表。该列表标为颜色假设列表(lch):对于集合a中的相邻模块,从与集合a中的模块相对应的数据结构复制已知颜色到lch,并且对于集合b中的相邻模块,生成到lch的假设ch,如步骤4.10所例示的(步骤4.12)。
83.然后关联列表lsc和lch并存储关联结果。关联的意思是将列表中的元素相乘并求和。关联值越高,颜色组合假设越有可能是正确的,并且偏移样本元素候选对应于模块的中心。例如,如果ch组合(-1,-1,-1, 1,-1, 1, 1, 1, 1)(当与第五个样本元素候选的强度相乘并之后对乘法结果求和)提供对应于(ex,ey) 46的样本元素的第五偏移样本元素候选的最高关联值,模块(x,y) 45的中心很可能在(ex,ey) 46中。过滤步骤,即上述第三步,确保如果颜色假设是正确的,则关联值会朝着模块的中心增大,并且该特征是模块跟踪过程的核心(步骤4.13)。
84.因此,可以为模块(x,y) 45的中心选择与关联值最高的偏移样本元素候选相对应
的样本元素(如步骤4.13所讨论的)(步骤4.14)。
85.然后,可以将步骤4.14中选择的样本元素候选作为模块(x,y) 45的中心存储到模块(x,y) 45的数据结构中。该样本元素的颜色取自第三步提供的过采样矩阵。这个颜色代表模块(x,y) 45的颜色,并存储在模块(x,y) 45的数据结构中(步骤4.15)。
86.将列表lnxy中的模块坐标附加到队列q中,见步骤4.5。这确保递归将访问代码中的每个模块(步骤4.16)。
87.此后,qr码校正方法继续进行第五步,即读取模块信息。递归的结果存储在qr码每个模块的数据结构中。数据结构包括每个模块的颜色和模块在qr码中的位置40。颜色信息现在可用于读取校正后的qr码的信息内容,其基本对应于几何失真之前的原始qr。有时不需要读取校正后的qr码的信息内容,但可能会存储起来以备后用。
88.图5作为示例示出了用于校正几何失真的qr码的方法50的步骤,所述几何失真的qr码包括模块化结构。在步骤51中,将每个模块分成f*f个样本元素来对qr码中的模块进行过采样,以形成过采样矩阵。在步骤52中,确定过采样矩阵中每个样本元素的强度。在步骤53中,计算过采样矩阵的平均强度。在步骤54中,用过采样矩阵中每个样本元素的强度减去平均强度。在步骤55中,过滤强度值以确定每个样本元素的平均值。在步骤56中,跟踪与每个模块的中心相对应的样本元素,并使用递归来基于与每个模块的中心相对应的样本元素的强度确定每个模块的颜色。方法步骤56包括图6所示的递归步骤。
89.图6作为示例示出了递归方法60的步骤。在步骤61中,形成包括模块的数据结构的队列q。数据结构包括关于模块中心的位置、模块的颜色以及模块在qr码中的位置的信息。在步骤62中,针对模块(x,y)的数据结构,创建模块(x,y)及其8个相邻模块的x、y坐标的lnxy列表,所述模块(x,y)的数据结构是其中心位置和颜色未知的队列q中的第一个数据结构。在步骤63中,基于其中心已知的相邻模块来计算与模块(x,y)的中心估计值(ex,ey)相对应的样本元素。在步骤64中,定义预定数量个偏移样本元素候选oc。所述偏移样本元素候选oc包括中心估计值(ex,ey)以及中心估计值(ex,ey)周围的样本元素。在步骤65中,为其中心未知的模块提供一组颜色组合假设。在步骤65之后,针对每个偏移样本元素候选以及每个颜色组合假设执行接下来的步骤66至69。在步骤66中,提供包括所述偏移样本元素候选oc的强度的lsc列表,这是通过在坐标(e oc*f)处从过采样矩阵读取每个所述偏移样本元素候选的强度,其中,e=中心估计值(ex,ey)。在步骤67中,提供与列表lsc中的样本元素的强度相对应的9个颜色假设(ch)的lch列表。在步骤68中,关联列表lsc和lch并存储关联结果,以针对模块(x,y)的中心确定与关联值最高的偏移样本元素候选相对应的样本元素。在步骤69中,通过从过采样矩阵拾取关联值最高的偏移样本元素候选的强度值来确定模块(x,y)的颜色。
90.除使用数据结构的颜色信息来读取qr码的信息内容之外,可使用每个模块的颜色以及每个模块在qr码40中的位置信息二者,重新形成(即重构)qr码印刷于其上的表面,使该表面不再几何失真。然后可使用该重新形成的qr码来例如产生原始qr码的复制品或可能需要校正后的qr码或校正后的表面的任何其他方面。
91.应注意,在一些示例实施例中,方法步骤的顺序可能有所不同,某些方法步骤可同时执行和/或某些方法步骤无需执行。
92.可以借助于驻留在存储器中的计算机程序代码来实施本发明的各种示例实施例,
所述代码使相关设备执行本发明。例如,设备可包括处理、接收和传输图像数据的电路和电子装置、存储器中的计算机程序代码以及处理器,所述处理器在运行计算机程序代码时使设备实现示例实施例的特征。
93.显而易见,本发明不仅限于上述示例,而是可在所附权利要求的范围内进行修改。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献