基于相机的读码器和用于读取光学代码的方法与流程

文档序号:33934116发布日期:2023-04-22 14:08阅读:30来源:国知局
基于相机的读码器和用于读取光学代码的方法与流程
基于相机的读码器和用于读取光学代码的方法
1.本发明涉及根据权利要求1和13的前序部分的基于相机的读码器和用于读取光学代码的方法。
2.读码器在超市收银台、自动包裹识别、邮件分拣、机场行李处理和其他物流应用中广为人知。基于相机的读码器借助图像传感器记录其上有代码的对象的图像,并且图像评估软件从这些图像中提取代码信息。基于相机的读码器也可以轻松应对一维条形码以外的其它代码类型,这些代码类型与矩阵码一样也被构造成二维的并提供更多信息。
3.在一组重要的应用中,携带代码的对象被输送经过读码器。图像传感器反复地记录图像数据,这些图像数据根据记录频率和输送速度或多或少地重叠。读码器通常是更为复杂的读码系统的一部分。因此,通常在读取通道处设置多个读码器,以便从多个或所有侧面记录对象。在此,设置有附加的传感器,例如用于确定输送进给或输送速度的编码器或者测量对象的几何形状的激光扫描仪。
4.由于相机和图像传感器技术的进一步发展,要处理的图像越来越大。巨大的数据量对在实时条件下在相机中进行传递和处理的有限的计算能力和带宽提出了挑战。在此,使用异构的计算架构,即微处理器(cpu,central processing unit(中央处理器))与例如fpga(field programmable gate array(现场可编程门阵列))、dsp(digital signal processor(数字信号处理器))、gpu(graphics processing unit(图形处理器))或所谓的ki加速器(npu,neural processing unit(神经处理器))、tpu(tensor processing unit(张量处理单元))的组合。
5.在此,与负责从图像传感器读出图像数据的fpga的组合被证明是特别好的。此外,fpga还经由高速接口(pci(peripheral component interconnect(外围部件互连))、pcie、pci express、mipi(mobile industry processor interface(移动产业处理器接口)))与微处理器的存储器连接。因此,图像数据经由dma(direct memory access(直接存储器访问))从fpga被传输到存储器。读出和存储的过程称为流式传输。然后,借助于cpu实施的解码器可以在下游访问存储的图像并且读出代码。上面提到的异构架构的其他附加模块不容易实现流式传输方法,这些附加模块本身通常已经需要存储的图像,而fpga可以直接逐像素地读出图像数据并且进一步处理图像数据。
6.优选地,图像数据已经在fpga中直接地、即时地(on-the-fly)进行了预处理,并且可以连同图像数据存储用于微处理器的附加信息或元数据。典型的预处理步骤涉及二值化(其中从灰度值图像变成黑白图像)或者分割(其中寻找具有候选代码的感兴趣区域(roi,region of interest))。因此,ep 2 003 599 a1描述了一种光电传感器和一种用于检测代码的方法,其中已经在接收期间和/或实时地形成了用于将彩色图像或灰度值图像转换为二值图像的二值化器,其方式是,在其他部分仍被读入期间,对相应读入的部分进行二值化。ep 2 555 160 b1基于对比度量在fpga上的预处理中找到感兴趣的区域或候选代码。在文件号为20176228.3的尚未公开的欧洲申请中,用于分割的神经网络的第一层已经在读入期间在fpga上运行。ep 1 365 577 a1公开了一种用于操作光电传感器的方法,其中图像已经在接收期间被压缩。
7.在此,fpga的性能被充分利用,以并行的方式实时执行许多简单的计算操作,例如矩阵乘法。解码器的顺序的、更复杂的计算操作是为微处理器保留的,微处理器为此动用了所提供的图像数据和可能的预处理结果。然而,存在例如极端模块尺寸的情况,在这种情况下,解码器会遭遇困难,必须对非常多的像素执行计算密集型操作才能进行有望成功的读取尝试。在具有其他代码的新图像数据传入之前,可用来解码的时间窗口可能不再足够了。另一方面,fpga不能简单地在流式传输期间对所有传入的图像数据预防性地执行相应的处理步骤。一方面,这将引发不必要的计算工作,因为许多代码即使在没有附加处理步骤的情况下也会被读取。此外,适当的处理步骤必须根据具体情况来选择,并且只有解码器才具有必要的信息,特别是在第一次不成功的读取尝试之后,以便决定适合当前特殊情况的步骤。
8.因此,本发明的目的在于进一步改进异构架构中的代码读取。
9.该目的通过根据权利要求1和13的基于相机的读码器和用于读取光学代码的方法来实现。例如,光学代码是根据任意标准的条形码或二维码。图像传感器记录具有多个像素的图像数据,通常是用具有几千像素的行扫描传感器(zeilensensor)或具有几百万像素的矩阵传感器来实现高分辨率。在操作中,读码器检测设置有光学代码的对象,因此图像数据随后包括具有光学代码的至少一个区域。
10.读码器的第一处理单元读入图像传感器的图像数据,即优选是高分辨率的原始图像,并且将图像数据传输到存储器中。读入和存储是以相邻像素的组中的图像数据流进行的,被称为流式传输。根据实施方式,图像数据可能直接在流式传输期间被预处理,并且存储相应处理的图像数据或者在预处理期间获得的附加信息或元数据。读码器还包括用于解码的第二处理单元,即用于评估或处理存储在存储器中的图像数据和可能的预处理结果,以便读出图像数据中的光学代码的代码内容。
11.本发明基于以下基本思想:在解码期间附加地使用第一处理单元来支持第二处理单元。第一处理单元由此获得双重功能,即额外作为协处理器来扩展迄今为止的流式传输功能(即读入和存储图像数据)作为协处理器。因此,第一处理单元被设计用于至少一个辅助功能,该辅助功能再次读回已经流式传输到存储器中的图像数据的至少一部分,以便执行预处理并且重新存储预处理的结果。只有当解码器需要辅助功能对当前代码进行解码时才根据需要由第二预处理单元触发辅助功能。然后,第一处理单元以其作为协处理器的第二角色工作,并且以辅助功能来支持第二处理单元。辅助功能的结果可以是经处理的图像数据和/或附加信息或元数据。第二处理单元访问存储器中的这些结果,以继续解码,必要时再次使用第一处理单元的辅助功能。
12.本发明的优点在于,可以减轻第二处理单元的负担。这对于基于像素的并且因此需要多次需要的操作是特别有利的,这些操作由第一处理单元明显更有效地执行。因此,改进了运行时间,或者在可用的时间窗口内的处理首先成为可能。甚至可以向解码器开放根据已知程序根本不会被考虑的算法,因为没有足够的计算和时间资源可供第二处理单元使用。
13.优选地,第一处理单元具有fpga(现场可编程门阵列)和/或第二处理单元具有微处理器(cpu)。fpga特别适用于使用相对简单的单个计算操作实现流式传输以及实时处理大量数据。而cpu则要加灵活,并且能够独立完成更复杂的计算步骤,这对解码是有利的。如果cpu在解码过程中遇到需要大量简单的数学操作的问题,例如在较大的图像区域中进行
像素层级上的操作,则可以回到使用fpga的辅助功能。
14.优选地,第一处理单元从图像传感器读出图像行或其一部分并存储在存储器中。因此,图像由图像传感器逐行读入或流式传输,并且处理是面向行来进行的。对于涉及多于一个图像行的预处理,例如与滤波器核的卷积,第一处理单元可以具有图像缓冲器,在该图像缓冲器中以滚动的方式缓存相应数量的图像行。原则上,也可以以同样的方式处理图像列代替图像行。这只是理解为坐标定义的不同,在此不做区分。
15.优选地,第一处理单元被设计用于,在将由图像传感器读入的图像数据传输到存储器中之前对这些图像数据进行预处理,甚至是在图像传感器读取另外的图像数据期间进行预处理。因此,第一处理单元被设计用于“即时地”或者已经在流式传输期间进行预处理。这种预处理必须与辅助功能明显区分开。预处理几乎直接发生在源头处,甚至在第二处理单元的解码器完全获得对图像数据的访问之前就发生。相反,有针对性地由解码器基于已经由第一处理单元存储的图像数据来请求辅助功能。
16.优选地,第一处理单元具有用于将图像数据从图像传感器传输到存储器中的第一分区和用于执行辅助功能的第二分区。因此,在第一处理单元内,流式传输和协处理或者传输图像数据和执行辅助功能的两个功能是明确分开的。特别地,为此在fpga上设置有分开的平面或区域。可以存在其他分区,优选是具有两个分区都可能需要的算法的第三分区。
17.优选地,第一分区和第二分区以不同的时钟频率操作。由于明确的分开,这在技术上是可行的。通过这种方式,例如可以非常有针对性地划分有限的能源预算或热预算。优选地,时钟频率的调整涉及辅助功能,因为流式传输必须与通常固定的帧速率保持同步,并且情景性和适应性较差。
18.优选地,第一处理单元被设计用于分割,寻找具有候选代码的感兴趣的区域以作为辅助功能。这是示例性的协处理器功能或辅助功能。可以实施一个或更多个这样的辅助功能。在内容方面,辅助功能的一些处理可以已经在流式传输期间执行。然而,这不是在此理解的意义上的辅助功能,因为辅助功能是在流式传输之后由解码器针对已经存储的图像数据有针对性地请求或触发的。如开篇提及的,在现有技术中,有时已经在流式传输期间即时地执行了分割,在该分割中寻找到具有推测的光学代码或候选代码的图像区域(roi(感兴趣区域))。可替代地,解码器首先请求分割,或者除了在流式传输期间已经进行的预分割之外,还允许执行细化的分割或在其他参数下执行的分割。
19.优选地,第一处理单元被设计用于分辨率提高以作为辅助功能。这是另一示例性的协处理器功能或辅助功能,并且前段的一般性评论类似地适用于这些以及其他辅助功能。分辨率提高对应于后续的或数字的缩放功能。根据例如上采样和超分辨率的术语,许多方法本身是已知的。然而,解码器的第二处理单元通常没有所需的资源,因此相应的辅助功能显著地加速了分辨率提高或首先能够实现分辨率提高。分辨率提高可以涉及整个图像、部分区域,特别是具有候选代码的roi,或者仅涉及代码部分。
20.优选地,第一处理单元被设计用于转动图像部分以作为辅助功能。这是另一示例性的协处理器功能或辅助功能。用于转动的公式或算法是众所周知的。然而,这是基于像素的处理,第二处理单元通常无法提供这种基于像素的处理,因此第一处理单元的支持是很大的改进步骤。
21.优选地,第一处理单元被设计用于利用滤波器进行处理作为辅助功能,特别地滤
波器是锐度滤波器、边缘滤波器或噪声滤波器或平滑滤波器。图像或图像区域与滤波器核的卷积需要多个单独操作,这些操作由第一处理单元有效地执行,但是在预先给定的时间预算内会使第二处理单元负担过重。因此,可以锐化图像,准备边缘检测并因此准备模块检测,或者进行去模糊(debluring)。
22.优选地,第一处理单元被设计用于与代码部分进行模板比较作为辅助功能。模板比较(template matching(模板匹配))允许直接在图像数据上识别代码部分或至少部分解码。虽然解码器通常使用二值化的黑白图像数据进行工作,但可以在底层的彩色数据或灰度值数据上执行模板比较。
23.优选地,第一处理单元被设计用于视角校正或失真校正作为辅助功能。由此,可以补偿对所记录的代码的不利视角或图像传感器的镜头的失真误差。这分别需要像素层级的操作,该操作由第一处理单元作为辅助功能有效地实现。
24.根据本发明的方法可以用类似的方式进一步发展并同时显示出类似的优点。这种有利的特征在从属于独立权利要求的从属权利要求中示例性地但不详尽地进行了描述。
附图说明
25.下面将示例性地基于实施方式并参考附图对本发明的其他特征和优点进行更详细的阐述。在附图中:
26.图1示出了基于相机的读码器示例性地安装在传送带上方的示意概览图;以及
27.图2示出了fpga作为流处理器(streamer)以及cpu作为解码器的异构架构的示意图,其中fpga还充当协处理器。
28.图1示出了安装在传送带12上方的基于相机的读码器10,如箭头16所示,该传送带将对象14输送通过读码器10的检测区域18。对象14在其外表面上携带有代码20,该代码由读码器10检测和评估。只有当代码20附着在上侧或至少从上方可见时,才能够被读码器10识别。因此,不同于图1中的示图,为了读取附着在侧面或下面的代码22,可以从不同的方向安装多个读码器10,以便能够实现所谓的全方位读取。在实践中,通常将多个读码器10布置成一个读取系统作为读取通道。在实践中,将读码器固定应用在传送带上是非常普遍的。然而,本发明涉及图像数据的处理或读码器10本身,因此不应限制性地理解该示例。
29.读码器10利用图像传感器24检测被输送的对象14和代码20,这些代码由控制和评估单元26借助于图像评估和解码方法被进一步处理。下面参考图2更详细地描述控制和评估单元26。读码器10经由接口28输出信息,如所读取的代码或图像数据。
30.图2以示意图示出了控制和评估单元26及其连接。控制和评估单元26包括第一处理单元30以及第二处理单元32,该第一处理单元在下文中以fpga(现场可编程门阵列)为例进行阐述,该第二处理单元在下文中以cpu(中央处理器)为例进行阐述。第一处理单元30具有至少两个部分,其中第一部分30a被指定为流式传输以及第二部分30b被指定为协处理器,并且可以包括可选的共同的第三部分30c。第二处理单元32具有用于根据图像数据读出光学代码的解码器36。
31.第一处理单元30一方面与图像传感器24(成像器接口(imager interface))连接,另一方面具有朝向第二处理单元32的高速接口(pci、pcie、mipi)。在此,对于本发明特别重要的是,两个处理单元30、32都访问一个存储器34来获取图像数据和处理结果。优选地,相
应的读过程和写过程借助于dma(直接存储器访问)进行。存储器34至少在功能上可以理解为cpu 32的一部分,根据实施方式在结构上也可以是cpu 32的一部分。两个处理单元30、32之间的另一连接能够实现辅助功能的调用。
32.在操作中,图像传感器24分别记录新的图像或新的图像部分。这可以是矩阵传感器的矩形图像,但也可以设想行扫描传感器的单个或多个图像行,这些图像行随后在读码器10和对象14之间的相对运动过程中连续地产生整体图像。第一处理单元(在此特别是其第一部分30a)读出图像传感器24的图像数据并将其传输或流式传输到存储器34中。
33.第二处理单元32的解码器36访问存储器34中的图像数据,以读取与图像数据一起记录的光学代码的内容。在一些情况下,为此需要像素密集和计算密集的操作,cpu并不特别适合这些操作,而这些操作可以在第一处理单元30中更有效和更快速地执行。在这种情况下,解码器36可以选择由第一处理单元30作为协处理器予以支持。因此,第一处理单元30获得了作为流处理器和协处理器的双重功能。
34.支持功能被称为辅助功能。现在,对此负责的是第一处理单元30的第二部分30b。在第二处理单元32的相应的调用之后,第一处理单元30再次访问存储器34的已经存储的图像数据或者将其再次加载回第一处理单元30中。第一处理单元执行辅助功能并将结果重新写入存储器34。第二处理单元32的解码器36可以在此基础上通过访问存储器34来继续读取代码。
35.优选地,辅助功能是在像素层级上对图像数据的操做,但是替代地或附加地也可以进行评估并且产生相应的附加信息或元数据,然后该附加信息或元数据也被写入到存储器34中。解码器36也可以通过这样的元数据对辅助功能进行期望的参数化,或者通过第一处理单元30的适合于此的接口(寄存器接口(register interface))进行参数化。
36.在流式传输期间,也可以设想预处理,因此首次从第一处理单元30的第一部分30a传输到存储器中的图像数据和可能相关的元信息已经是预处理结果。然而,这种预处理步骤始终并且对于所有图像数据都是以相同的方式执行的。此时,解码器36甚至无法干预并评估具体的图像数据。相反,辅助功能仅根据需要基于当前图像数据进行,并且此外,还可以对该图像数据有针对性地进行参数化。
37.可以在流式传输期间和/或之后作为辅助功能执行的预处理的示例是分割,其中寻找具有候选代码的感兴趣区域(roi,region of interest)。该操作在流式传输期间或即时地是基于一般的标准进行的,而作为辅助功能,这也可以专门只针对图像数据的一部分,例如对于难以解释的图像区域可以采用特别复杂的方法来实现。
38.如已经解释的,第一处理单元30具有不同的分区或部分30a-30c。第一部分30a负责流式传输,并且必要时在流式传输期间预处理和生成元数据,第二部分30b作为协处理器负责执行辅助功能。可选的第三部分30c负责在流式传输期间和在辅助功能的执行期间都需要的共同使用的功能。优选地,部分30a-30c不仅可以在功能上理解成单独实施的,而且是通过分离(特别是在不同的区域或表面部分中)实际上单独实施的,从而形成真正的分区。部分30a-30c甚至可以根据需要以不同的时钟频率进行操作。这在能源预算或热预算有限的情况下尤其值得关注,以便平衡和优化各种功能的整体性能。
39.下面将描述辅助功能的未详尽提及地一些示例。提供至少一种辅助功能,但也可以是任意组合的多种辅助功能。同样地,第二处理单元32的解码器可以根据情况选择是否
请求辅助功能,以及请求的是哪个单独的辅助功能或辅助功能的组合。也可以多次调用辅助功能。这里的示例可以是重复的神经网络层,该神经网络层通过多次调用具有各自变化的权重的相应辅助功能来实现。
40.辅助功能的示例是分辨率提高。这对应于缩放功能,但该缩放功能不基于光学放大,而是随后细化了图像数据的分辨率。例如,在模块尺寸特别小的情况下,即当代码元素由太少的像素表示时,解码器36需要该辅助功能。通过插值,例如双立方、双线性、线性或借助于样条曲线,进行上采样的算法本身是已知的。图像数据(例如,灰度值)从存储器34被再次传输回第一处理单元30或者其第二部分30b,优选地与分辨率提高的期望因子和期望的插值法一起传输回到第一处理单元30或其第二部分30b。对于插值法,因子2、4、

是理想的。其他方法在文献中以超级分辨率为关键词进行了描述,为此特别使用了神经网络。
41.辅助功能的另一示例是图像区域或代码的转动或旋转。优选地,为此将各个行节段依次从存储器34传输回到第一处理单元30,其中解码器36确定期望的转动角度并将其传递给第一处理单元30。优选地,根据转动角度仅传输和处理相关的行节段。元信息(如代码在行节段内的位置)可以在两个方向上被一同发送。在平面转动的扩展中,也可以设想视角校正。
42.辅助功能的另一示例是滤波器。与滤波器核的卷积原则上是矩阵操作,因此fpga特别适合于此。这里有许多可能与噪声、失真和变形、运动模糊等有关的可能性。例如,如果代码结构由于噪声而表现出太差的信噪比,则可以应用锐度滤波器。在此,可能的参数是平均灰度值、最大和最小灰度值以及其他统计变量,例如标准偏差。可以通过相应的滤波器(例如,sobel滤波器)来预备和改进边缘检测。模糊或运动模糊可以通过合适的滤波器(lucy-richardson(去卷积)、去模糊化)至少部分地得到补偿。特别地用于补偿变形误差的几何校正(geokorrektur)也可以理解为滤波器。除了滤波器或代替滤波器,可以设想确定例如清晰度的特定的特征变量,并且将其作为元信息返回。然后,解码器36可以评估读取尝试是否成功,或者事先还需要哪些其他措施和可能的辅助功能。也可以借助神经网络实现与上述滤波器类似的效果。
43.辅助功能的另一示例是模板比较(模板匹配)。这试图直接在彩色图像数据或灰度值图像数据上找到代码段,并进行解码。在这种情况下,诸如模块大小、模板(templates)、统计值和代码类型的参数是令人感兴趣的。神经网络也适用于此辅助功能。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1