CN110414293B - 解码条形码 - Google Patents

解码条形码 Download PDF

Info

Publication number
CN110414293B
CN110414293B CN201910623833.6A CN201910623833A CN110414293B CN 110414293 B CN110414293 B CN 110414293B CN 201910623833 A CN201910623833 A CN 201910623833A CN 110414293 B CN110414293 B CN 110414293B
Authority
CN
China
Prior art keywords
barcode
determining
scan
units
pattern
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910623833.6A
Other languages
English (en)
Other versions
CN110414293A (zh
Inventor
詹姆斯·A·内格罗
伊凡·巴舍尔德
谢卡尔·萨思特里
雅艾尔·斯坦撒尔兹
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cognex Corp
Original Assignee
Cognex Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Cognex Corp filed Critical Cognex Corp
Publication of CN110414293A publication Critical patent/CN110414293A/zh
Application granted granted Critical
Publication of CN110414293B publication Critical patent/CN110414293B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
    • G06K7/1404Methods for optical code recognition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
    • G06K7/1404Methods for optical code recognition
    • G06K7/1439Methods for optical code recognition including a method step for retrieval of the optical code
    • G06K7/1452Methods for optical code recognition including a method step for retrieval of the optical code detecting bar code edges
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
    • G06K7/1404Methods for optical code recognition
    • G06K7/1408Methods for optical code recognition the method being specifically adapted for the type of code
    • G06K7/14131D bar codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
    • G06K7/1404Methods for optical code recognition
    • G06K7/1439Methods for optical code recognition including a method step for retrieval of the optical code

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Electromagnetism (AREA)
  • General Health & Medical Sciences (AREA)
  • Toxicology (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Character Input (AREA)
  • Character Discrimination (AREA)

Abstract

提供了用于解码条形码的系统和方法。沿着通过条形码的扫描获得扫描信号。确定沿着扫描的条形码内的单位宽度图案的第一字符单位网格。基于第一字符单位网格来确定使所述单位宽度图案与扫描信号的一部分关联的至少一个采样系数集合。基于至少一个采样系数集合和扫描信号的一部分来确定单位宽度图案的元素宽度图案。

Description

解码条形码
本申请是申请号为201510670047.3、申请日为2015年10月9日、发明名称为“解码条形码”的申请的分案申请。
技术领域
本发明的实施例通常涉及对条形码进行解码。
背景技术
条形码通常用于编码信息以用于各种目的,例如自动化部件识别。条形码可以为二维(例如通常矩形)识别符,其包括一个或者多个空间连续的交替并行条(bar)和空格(space)的序列。条和空格中的每一个通常称为元素。一个或者多个连续元素的序列组成元素序列。条形码元素序列中的元素可以通过其相对宽度来编码信息。
通常,条形码通过在一致反射基板(例如纸或者金属)上打印(或者使用墨汁)或者标记(例如通过蚀刻)来创建。该条通常具有比基板低的反射,并且因此好像比他们之间的空格好像更暗(例如当在白纸上使用黑墨汁来打印条形码时)。但是条形码可以其它方式打印,例如当在黑色目标上白漆来打印条形码时。为了将条形码与背景更容易区分,通常与其它打印或者可视结构相对远地放置条。这些距离在第一条之前和最后条之后创建空格,通常称为静止区(quiet zone)。可替换地,可以打印或者标记空格和静止区,并且基板隐含形成了条。
然而。阅读器通常难于解码亚分解(under-resolved)的条形码,例如亚采样的(例如由于低采样率或者低分辨率传感器而造成)条形码和/或模糊的(例如由于阅读器的不良聚焦或者移动效果)条形码。
发明内容
本文中描述的技术提供用于解码亚分解的条形码,例如亚采样的和/或模糊的条形码。可以通过以下假设来建模扫描样本的局部反射,即局部反射为集成了落入对应扫描样本箱的实际条形码反射轮廓下的区域的结果。也可以使用其它建模技术,例如加权求和,其中,越靠近扫描样本箱中心的轮廓值也许越导致整个反射。
在一些方面中,提供了一种用于解码条形码的计算机化方法。该方法包括:由计算装置从指示出沿着通过条形码的扫描的扫描信号的传感器接收数据。该方法包括:由计算装置确定沿着扫描的条形码内的单位宽度图案的第一字符单位网格。该方法包括:由计算装置基于第一字符单位网格来确定使单位宽度图案与扫描信号的一部分关联的至少一个采样系数集合。该方法包括:由计算装置基于至少一个采样系数集合和扫描信号的一部分来确定单位宽度图案的元素宽度图案。
在一些方面中,提供了一种用于解码条形码的条形码阅读器。该条形码阅读器包括处理器,其被配置为运行在存储器中存储的模块,所述模块被配置为导致所述处理器从指示沿着通过条形码的扫描的扫描信号的传感器接收数据。存储器中存储的模块被配置为导致处理器确定沿着扫描的条形码内的单位宽度图案的第一字符单位网格。存储器中存储的模块被配置为导致处理器基于第一字符单位网格来确定使单位宽度图案和扫描信号的一部分关联的至少一个采样系数集合。存储器中存储的模块被配置为导致处理器基于至少一个采样系数集合和扫描信号的一部分来确定单位宽度图案的元素宽度图案。
在一些方面中,提供了一种非暂时计算机可读介质。非暂时计算机可读介质具有可执行指令,其可操作地致使设备:从指示沿着通过条形码的扫描的扫描信号的传感器接收数据。可执行指令可操作地致使设备:确定条形码内的单位宽度图案沿着扫描的第一字符单位网格。可执行指令可操作地致使设备:基于第一字符单位网格来确定使单位宽度图案和扫描信号的一部分关联的至少一个采样系数集合。可执行指令可操作地致使设备:基于至少一个采样系数集合和扫描信号的一部分来确定单位宽度图案的元素宽度图案。
在回顾下面的附图、详细描述以及权利要求之后将更充分理解所公开主题的这些和其它能力。应当理解的是,本文中采用的措辞和术语是处于描述目的并且不应当理解为限制。
附图说明
当结合下面附图考虑时,可以参考所公开主题的下面详细描述来更全面明白所公开主题的各个目标、特征和优势,其中相同参考附图识别相同元素。
图1A示出使用两宽度符号来生成的条形码;
图1B示出两宽度符号的维度;
图2示出使用多宽度符号生成的条形码;
图3示出示例性扫描信号;
图4示出根据一些实施例的用于解码条形码的1SPM和0相位处的多宽度条形码的示例性扫描线亚采样和采样系数;
图5示出根据一些实施例的用于解码条形码的1SPM和0相位处的多宽度条形码的示例性扫描线亚采样和采样系数;
图6示出根据一些实施例的根据一些实施例的用于解码条形码的1SPM和0.5相位处的多宽度条形码的示例性扫描线亚采样和采样系数;
图7示出根据一些实施例的根据一些实施例的用于解码条形码的1SPM和-0.25相位处的多宽度条形码的示例性扫描线亚采样和采样系数;
图8示出根据一些实施例的根据一些实施例的用于解码条形码的1.33SPM和0.33相位处的多宽度条形码的示例性扫描线亚采样和采样系数
图9示出根据一些实施例的根据一些实施例的用于解码条形码的0.75SPM和-0.25相位处的多宽度条形码的示例性扫描线亚采样和采样系数;
图10示出根据一些实施例的用于解码条形码的0.84SPM、2.1宽度(W)和-0.16相位处的多宽度条形码的示例性扫描线亚采样和采样系数;
图11示出根据一些实施例的用于解码条形码的通用的基于图像的解码算法的示例性计算机化方法;
图12示出根据一些实施例的用于解码条形码的激光扫描器解码算法的示例性计算机化方法;
图13A至图13B示出根据一些实施例的用于解码来自扫描信号的条形码的示例性计算机化方法;
图14A至图14C示出根据一些实施例的用于定位且解码用于解码条形码的第一定界字符的示例性计算机化方法;
图15示出示出根据一些实施例的用于确定用于解码条形码的单位采样系数的示例性计算机化方法;
图16示出示出根据一些实施例的用于从用于解码条形码的扫描信号分数字符的示例性计算机化方法;
图17示出根据一些实施例的用于解码来自用于解码条形码的多宽度条形码的扫描信号的字符的示例性计算机化方法;并且
图18示出根据一些实施例的用于解码来自用于解码条形码的两宽度条形码或者多宽度条形码的扫描信号的字符的示例性计算机化方法。
具体实施方式
本文中描述的技术使用采样(例如包括显著亚采样)的量化效应的模型来解码亚分解的条形码。在一些实施例中,该建模可以通过沿着由扫描样本箱进行的特定扫描样本的扫描而接近于有效扫描采样区域宽度来生成。扫描样本箱可以为沿着以下扫描的位置的范围,在该扫描上,反射信息被假设为集成了那个扫描样本。在一些实施例中,扫描采样箱具有等于扫描采样间距的宽度并且以扫描样本位置为中心,使得所有扫描样本箱在没有重叠的情况下共同覆盖扫描的区域。本领域的技术人员将明白其它样本箱宽度也是可能的。
在一些实施例中,可以通过以下假设来建模扫描样本的局部反射,即局部反射为集成了落入对应扫描样本箱的实际条形码反射轮廓下的区域的结果。也可以使用其它建模技术,例如加权求和,其中,越靠近扫描样本箱中心的轮廓值也许越导致整个反射。
多个条形码设计(称为符号)中的任何一个可以用于条形码。每个符号可以指定条、空格和静止区尺寸限制以及如何准确编码信息。条形码符号的示例包括代码128、代码93、代码39、Codabar、I2of5、MSI、二五代码和UPC-EAN。条形码可以包括传统“线性”符号(例如代码128和代码39),在该符号中沿着一维编码所有信息。条形码也可以包括单独“堆叠的”2D符号行(例如DataBar、PDF417、MicroPDF以及一些复合符号的2D组成),所有这些本质上允许条形码在彼此顶部堆叠以编码更多信息。
许多条形码符号分成两个分类:两宽度符号和多宽度符号。例如,两宽度符号的示例包括代码39、交叉二五码、Codabar、MSI、二五码以及Pharmacode。两宽度符号的每个元素是窄的或者宽的。窄元素具有等于最小特征尺寸的宽度X。宽元素具有等于宽元素尺寸的宽度W。宽元素尺寸W通常为最小特征尺寸的固定实数倍。二级符号由此允许每个元素表示两个可能值中的一个,X或者W。
多宽度符号包括例如代码128、代码93、UPC-EAN、PDF417、MicroPDF和DataBar。多宽度符号的每个元素为最小特征尺寸的整数倍数n(例如,n为1和元素的最大宽度之间的整数,其可以取决于符号)。术语模块通常用于指示多级条形码的最小特征尺寸,使得多级条形码符号的每个元素由整数数量的模块组成。针对多个多宽度符号(例如代码128,代码93和UPC-EAN)而言,n在1和4之间变化,但是可以为更大(例如,如针对DataBar,其中n可以在1和4之间变化)。
两宽度条形码和多宽度条形码中的任何元素序列的数据由对应的量化元素宽度的序列来编码。元素序列的元素宽度的序列通常称为元素序列的元素宽度图案。用于两宽度元素序列的元素宽度图案为由窄(“X”)和宽(“W”)元素组成的二进制图案。例如,用于条(W)、空格(X)、条(X)、空格(X)、条(X)、空格(W)、条(X)、空格(X)和条(W)的元素宽度图案被表示为WXXXXWXXW,其中,X为最小特征尺寸并且W为宽元素宽度。用于多宽度元素序列的元素宽度图案为指示出序列中的每个对应元素的模块的宽度的整数倍图案。例如,用于条(n=1)、空格(n=1)、条(n=1)、空格(n=3)、条(n=2)、空格(n=3)的元素宽度图案表示为111323。
条形码元素通常分组成连续字符(例如字母和数字),其可以从它们相应元素中解码成字母-数字值。在一些实施例中,该数据从整个元素宽度序列(例如Pharmacode条形码)直接确定。可以针对任何特定符号的可能字符称为其字符集合。取决于该符号,在字符集合中存在多个不同类型的字符,包括定界字符和数据字符。通常,仅存在几种不同的可能定界字符图案但是存在大量可能的数据字符元素宽度图案。它是从条形码的一端到另一端表示的数据字符值的串,其极大地限定用于整个条形码的编码串。
定界字符(有时称为守卫图案)通常出现在条形码的开始处和结束处。定界字符可以用于允许阅读器例如检测符号,确定哪里开始和停止阅读并且/或者确定符号类型。在条形码的开始处和结束处放置的定界字符通常分别称为开始字符和停止字符。一些符号(例如UPC-A以及DataBar)也具有描绘数据字符的区部的在符号内的定界字符。最后,一些符号(例如代码128)具有确定出如何解释数据字符的不同开始定界符。
数据字符为编码条形码中的实际信息的字符。数据字符的元素宽度图案与字母-数字值相关联。通常也指定被称为校验码字符的特定数据字符。该字符的数值本质上为所有其它数据字符的数值的总和,以允许阅读器检测误读的字符串。用于所有数据字符的字母数字值的序列形成了原始字符串,其然后有时使用具体格式化规则来转换成用于该条形码的实际编码的元素集合。
不管类型如何,字符集合的每个字符值与唯一元素宽度图案相关联。例如,代码39字符集合中的用于“A”和“B”的元素宽度图案分别为WXXXXWXXW和XXWXXWXXW。如上面解释的,因此,用于“A”的元素宽度图案WXXXXWXXW为条(W)、空格(X)、条(X)、空格(X)、条(X)、空格(W)、条(X)、空格(X)和条(W),其中,X为最小特征尺寸并且W为宽元素宽度。代码128字符集合中的用于“A”和“B”的元素宽度图案分别为111323和131123。
针对大部分符号而言重要注意的是:特定类型的所有字符在条形码中具有相同物理宽度。例如,两宽度符号的字符通常用于恒定数量的窄条、窄空格、宽条以及宽空格,并且通常开始于条元素。用于特定两宽度符号(例如代码39)的字符也结束于条,并且使用特定空格(被称为字符间的间隙,具有一致而随意宽度)来分离个别字符。在字符之间具有字符间的间隙的这种符号通常称为离散符号,而不具有这种间隙的符号称为连续符号。相反,多宽度符号字符通常具有固定数量的总模块,其每一个恰好为一个模块宽度,该总模块具有固定数量的条和空格,并且通常开始于条且结束于空格(并且因此不具有字符间的间隙)。
图1A示出使用两宽度符号代码39生成的条形码100。条形码100包含元素序列102A、102B、102C到102N的集合(本文共同称为元素序列102)。元素序列的集合编码字符串PATENT 104。使用数据字符(例如编码数据字符P的元素序列102B和编码数据字符A的元素序列102C)来编码字符串PATENT 104中的每个字母。元素序列102A和102N编码用*指出的定界字符。因此,元素序列102A和102N标示条形码100的开始和结束。如图1A,每个元素序列102在条形码100中具有相同物理宽度。
图1B是元素序列102A的放大视图。元素序列102A包括元素154,其为具有最小特征尺寸X的空格。元素序列102A包括元素152,其为具有宽元素尺寸W的空格。元素序列102A包括元素156,其为具有最小特征尺寸X的条。元素序列102A包括元素158,其为具有宽元素尺寸W的条。
图2示出使用多宽度符号代码128生成的条形码200。条形码200包含元素序列202A、202B、202C、202D到202E的集合(本文共同称为字符序列202)。元素序列的集合编码该字符串PATENT 204。如同图1A,字符串PATENT 204中的每一个字母使用数据字符(例如编码数据字符P的元素序列202B和编码数据字符A的元素序列202C)来编码。元素序列202A编码条形码200的开始定界序列。元素序列202E编码条形码200的停止定界序列。因此,定界元素序列202A和202E标示条形码200的开始和结束。
如图2所示,每个元素序列202A至202E在条形码200中具有相同物理宽度。图2示出用于字符序列202的元素宽度图案。用于开始定界字符元素序列202A的元素宽度图案为11010010000。用于P数据字符元素序列202B的元素宽度图案为11101110110。用于A数据字符元素序列202C的元素宽度图案为10100011000。用于T数据字符元素序列202D的元素宽度图案为11011100010。用于停止定界字符元素序列202E的元素宽度图案为1100011101011。
条形码阅读器(其为用于自动解码条形码的装置)通常分成两个类别:激光扫描器或者基于图像的阅读器。在任意类型的阅读器中,解码通常通过测量条形码元素的边缘沿着通过物理条形码或者通过条形码的离散图像的一个或者多个扫描(从一端到另一端)的一维(1D)位置。每个扫描通常为线段也可以为任何线性轮廓。
针对条形码的每个条形码阅读器扫描而言,首先提取离散信号(例如通常称为扫描信号)。扫描信号通常由沿着扫描的连续采样的强度测量(本文中称为扫描样本)组成。每一个扫描样本可以表示沿着扫描的在对应位置处集中的条形码的较小区域或者扫描样本区域上的测量出的反射系数(由反射光测出的相对暗度或者亮度)。沿着扫描的扫描样本位置的图案这里称为扫描采样网格。该网格通常为几乎一致的,这意味着沿着扫描的采样位置之间的距离或者扫描采样间距为有效恒定的。该扫描采样间距本质上确定了被采样信号的扫描采样分辨率,通常被测量为每个模块的扫描样本的数量(这里使用的模块与用于两宽度符号的最小特征尺寸同义)。然而,可能的是,有效扫描采样间距由于由条形码导致的透视效果被成角度观察或者被不平的目标(例如瓶子)环绕包围而从扫描的一端到另一端实质上但却连续地实际变化。
针对每个采样的扫描样本区域相对于扫描样本间距的宽度可以管理沿着扫描的采样之间重叠的数量。采样中的重叠的增加可以增加扫描信号的模糊。采样中的重叠的减低可以增加不测量信号的重要特征的可能性。每个扫描样本区域的高度管理垂直于扫描而集成多少信息。当扫描垂直于条时(例如使得扫描可以利用垂直方向中的条的冗余信息)时,扫描样本的高度越大可以导致信号中的元素边缘的越锐化。然而,随着扫描角度相对于条增加使得它不再垂直于条,这些边缘可以变得更加锐化。
针对激光扫描器而言,随着它沿着扫描轮廓扫描通过物理条形码(例如随着激光沿着直线扫描通过条形码),通过随着时间而对激光的反射强度进行采样来提取扫描信号。每个采样区域本质上在瞬间为激光“斑点”。激光斑点的形状通常为椭圆的,具有垂直于扫描定向的主轴,其可以提供之前提及的采样区域宽度和高度平衡。由于被采样的信号是模拟的,所以随着时间的采样率可以管理分辨率或者采样间距。激光随着时间的采样率可以例如受限于激光的分辨力(例如如何很好聚焦激光的较小斑点)、最大当时采样率和/或条形码的打印质量。
针对基于图像的阅读器,例如通过使用相机光学器件和成像传感器(例如CCD阵列)来获得条形码的离散图像。产生的图像可以为整个条形码的2D采样。每个图像样本或者那个图像的像素自身为在图像采样网格中的对应点处集中的条形码的较小区域的平均反射系数的测量结果。该网格通常为一致的或者几乎一致的,这意味着图像样本位置之间或者图像采样间距之间的距离为恒定的。该采样间距本质上确定了图像分辨率,通常测量为每个模块的像素的数量(“PPM”)。然而,如同激光扫描,可能的是有效图像采样间距由于透视效果而从条形码的一端到另一端实质上但连续地实际变化。
然后,可以通过沿着扫描对图像进行子采样(例如对已经采样的信号进行采样)在条形码的图像上针对任何扫描提取扫描信号。该扫描采样间距在空间(例如非时间,如同激光扫描器)上由采样率确定。本领域的技术人员可以明白存在执行该子采样操作的多种方式。例如,图像处理技术投影可以用于扫描线段。针对投影,投影的高度本质上确定了针对每个采样的扫描样本区域的高度,从而集成了垂直于该扫描的信息。作为另一个示例,可以使用在于2011年12月23日递交的名称为“Methods and Apparatus for One-DimensionalSignal Extraction”的美国专利申请No.13/336,275中描述的技术,其全部内容通过引用方式并入本文中。例如,类似于激光扫描器中使用的椭圆斑点尺寸,用于每个扫描样本的有效扫描样本区域可以为椭圆的。
图3示出用于元素序列302的示例性扫描信号,其由共同地为条形码元素的条形码元素302A至302K组成。扫描304与条形码元素302垂直。图3示出从扫描304获得的扫描信号306。扫描信号306包括扫描样本308A、308B到308N,这里共同称为扫描样本308。每个扫描样本308表示在沿着与扫描样本箱s0 310A到sn 310N对应的扫描线304的1D范围内的在对应的椭圆扫描样本区域s0 311A到sn 311N上的测出的反射系数。例如,扫描样本308A表示在与扫描样本箱310A对应的扫描样本区域311A上的测出的反射系数,扫描样本308B表示在与扫描样本箱310B对应的扫描样本区域311B上的测出的反射系数,并且扫描样本308N表示在与扫描样本箱310N对应的扫描样本区域311N上的测出的反射系数。该扫描样本308A具有如指出“h”的高反射系数,因为样本310A由完全位于空格元素302A内的扫描样本区域311A提取。扫描样本308B具有低反射系统,因为采样区域308B未完全位于空格元素302A内,并且还集成来自条元素302B的信息。
然而,与激光扫描器的重要区别在于:使用基于图像的阅读器提取的扫描信号的采样分辨率固有地受限于获得的图像(例如像素)的基础采样分辨率。即被子采样的扫描信号没有办法恢复除了在每个像素中包含的那些之外的任何额外细分细节。如在美国专利申请No.13/336,275中所述,当1D扫描为以像素网格定向(例如与获得的图像的像素网格完全水平或者垂直)的线段时,该限制通常是更糟糕的。相反,最好可能的扫描采样间距可以等于基本图像采样间距。因此,该限制可以随着更大轴外扫描线角度而改善。在一些实施例中,当扫描为对像素网格以45度定向的线段时,可以获得2的平方根分之一乘以图像采样间隔的最好可能扫描采样间距,由此反射当对角定向条形码时通常找到的更多信息。因此,该分辨率限制的通常缺点可以通常由覆盖且分析比激光扫描器可能更大的区域的能力弥补。然而,通常需要解决这种分辨率限制。
当不能获得锐化信号(例如不是模拟的一个)时,基于图像的阅读器和激光扫描器二者通常需要对付这些问题。基于图像的阅读器和激光扫描器二者通常限制景深,其本质上为来自阅读器的距离范围,在该范围内获得的图像或者激光扫描信号将聚焦。除了景深限制之外,基于图像的阅读器可以为模糊的。模糊指的是由于聚焦不良或者其它效果而由其涂抹1D扫描信号的数量。例如,1D扫描信号可以由于从低分辨率图像抽取的此处理而是模拟的。作为另一个示例,模糊可以由取决于其上粘贴条形码的目标的速率的运动相对于必要用于获得具有在自然光照条件下的合理对比的图像的曝光时间而导致。
不管阅读器类型或者扫描信号提取方法如何,解码条形码的通常方式为检测并且测量所有元素边缘(也称为边界)沿着一个或者多个这些扫描信号的1D位置。每个检测出的边缘沿着扫描的位置为扫描信号内的它们细分位置和扫描样采样间距的乘积。这些边缘可以用于直接推断条形码元素的宽度,其然后可以进一步分类成它们离散元素尺寸(例如取决于使用的符号的类型而是窄的、宽的、1X、2X等)。更典型地针对多宽度符号而言,然而,相同极性(亮到暗或者暗到亮)的邻近边缘之间的连续距离被计算且分类(例如1X、2X等),并且然后用于根据其“边缘到类似边缘”图案来推断字符,如本领域已知的那样。该间接计算可以被进行,以避免由于显著打印增长(其为由于打印处理而条看上去宽且空格看上去窄的量,或者反之亦然)(典型地由于墨汁铺开)而导致的误分类或者误读。针对两宽度符号,可以通过单独分类条和空格而避免打印增长。
可以使用本领域已知的多个不同技术来检测元素边缘,包括例如用于定位最大一阶导数或者二阶导数的零交叉的位置的离散方法和/或用于定位分解的元素的边界的波形形成技术。
然而,检测边缘可以由图像采集噪声和打印缺陷而复杂。图像采集噪声和/或打印缺陷可以导致错误边缘被检测,以及导致具有低对比(例如由于弱光照激光强度等)或者模糊(例如由于以偶定或者不良聚焦)的问题,这导致未检测到某些边缘。在增加对正确边缘的测量灵敏度的尝试中,设计了用于预过滤(例如平滑)或者增强(例如去模糊或者锐化)信号、过滤掉错误边缘或者峰和谷等的各种方法。然而,即使使用这些方法,因为信号分辨率下降,所以较大测量灵敏性的需要变得更加难以平衡从真实边缘中区别错误边缘的增加问题,如测量具有所需准确性的这些边缘的位置。
增加组合或者集成相同条形码上的多个扫描之间的被解码字符或者边缘信息的能力可以有用(例如当存在对条形码的局部损害时)。然而,即使利用这种集成,使用基于边缘的技术的基于图像的解码器取决于图像质量、焦点以及条形码性相对于像素网格的定向而通常趋向于开始失败于扫描线的1.3和1.5的每模块的像素(PPM)之间。
本质上,随着扫描信号的有效分辨率降低,由于扫描采样分辨率和模糊,分解条形码的个别元素变得很难。窄元素特别难分解,并且在一些分辨率下,这些窄元素最后彼此弯曲成点,在此处它们之间的过渡完全不明显的。分解的困难对于被亚采样的信号特别是有问题的。例如,随着两个元素之间(例如条和空格之间)的过渡向扫描样本的中心移动(例如准确地,异相的1/2样本),扫描样本有效导致采样值为两个元素的平均反射系数而不是个别条和空格的高反射系数或者低反射系数的反射系数的测量。作为示例性问题情况,该分辨率为几乎每个模块一个样本,并且多个窄元素与具有半相移的连续样本对齐,使得扫描信号在没有明显边缘(无论什么)的情况下具有一致的反射系数值。
除了检测边缘且与噪声区分的问题之外,可以测量这些过渡的扫描位置的准确性也可以随着采样分辨率(例如由于每个边缘过渡具有其上插入过渡出现的地方的较少采样的事实)和/或模糊(例如因为沿着模糊边缘的逐渐过渡在噪声存在的情况下变得更难以测试)而减小。这可以导致从边缘讲述例如窄条和宽条之间的不同变得不可能。技术被设计以尝试处理由于模糊而导致的不准确,例如通过集中于使用边缘对的位置来定位每个元素的中心,其至少对模糊的影响更稳定并且使用这些中心位置之间的相对位置,而不是边缘之间的距离来解码符号。然而,当明显边缘位置在相对方向具有错误时,测量的元素边缘边界的中心通常仅是更稳定的。例如,明显边缘位置可以在用于具有足够分辨率(例如据说大于1.5PPM)的模糊元素的相反方向具有错误,而当该信号被亚采样时是未必的,在此处,由于量化效果的边缘错误通常更占统治地位地为扫描采样网络相对于像素网格和元素边界的局部相(相对位置)的函数。
在降低分辨率限制的尝试中,设计了几种方法来尝试在确定宽元素的中心和宽度之后推断丢失的窄元素的位置。这些方法可以使用关于宽元素之间的窄元素的数量的约束,其是不同的但是通常用于两宽度条形码和多宽度条形码。还设计了方法来尝试从根据边缘识别字符但是允许未检测边缘。例如,可以使用概率性技术来通过匹配基于边缘(几何)可变形模板来解码字符。然而,这些方法通常被设计用于具有足够采样分辨率的模糊条形码而不是亚采样的条形码。实际上,这些技术可以指定当信号被认为聚焦时应当使用基于标准边缘的解码技术。定位且测量甚至宽元素的宽度(这继续依赖于确定边缘(边界)),随着SPM降低变得困难,例如低于1.1个每个模块的样本。而且,不能有效实现一些算法以足够用在工业阅读器的实际使用。
进一步组合这些问题正在趋向于利用基于图像的阅读器来替代激光扫描器(例如由于他们宽覆盖效益),并且通过保持尺寸较小且最小化阅读器的数量而趋向于降低基于图像的阅读器系统的成本。例如,这是物流应用的情况,其中,必须读取条形码,其被附接到通常随机定向的箱或者在宽传送带上传送。最小化阅读器的数量需要最大化每个阅读器必须覆盖的容量(例如区域和深度)的数量,其继而减小相对图像分辨率(PPM)并且增加模糊(由于景深限制),它们二者都减低了有效图像采样分辨率。
存在改善越过仅模糊条形码的条形码阅读器(例如尤其是基于图像的阅读器)的亚分解的解码能力的需要。此外,由于在低分辨率(例如低于1.1PPM)的基于边缘方法的困难,所以需要能够通过直接分析扫描信号值来解码条形码的方法。尝试克服这些限制的技术在于使用图案匹配技术。一些图案匹配技术尝试通过将条形码中的每一个字符建模为1D可变形模板来解码条形码。允许1D可变形模板在水平维度可缩放(例如以说明未知模块尺寸),在水平方向平移(例如以说明沿着扫描线的某个位置),在垂直方向拉伸(例如以说明未知对比),并且在垂直方向平移(例如以说明未知背景光照强度)。然而,这些图案匹配技术不能说明剧烈地亚采样条形码的量化效果(在1.0PPM或者更低处谈论)。例如,亚采样可以导致图案相对于模板不可识别地改变。
条形码可以被认为由条形码单位序列组成,每个单位具有相关联的宽度和二进制编码值。例如,针对二宽度条形码而言,该条形码单位可以具有两宽度:窄“X”或者宽“W”。作为另一个示例,针对多宽度条形码而言,该条形码单位可以具有为X的一些倍数n的宽度。二进制编码值可以指示条形码单位是条的一部分还是空格的一部分。例如,B可以用于指示该条形码单位用于条,并且S用于空格。在一些实施例中,可以使用数值,例如,B=0且S=1或者B=-1且S=1。因此,每个元素宽度图案可以与单位宽度图案和单位编码图案相关联。
在一些实施例中,条形码单位可以为元素,在这种情况下,单位宽度图案为元素宽度图案,并且相关联的单位编码图案为具有条或者空格的适当开始值的条值和空格值的交替图案(例如BSBSBSBSB)(由于元素总是在条和空格之间交替,除非为字符间的间隙)。
在一些示例中,选择每个条形码单位以使该单位宽度图案一致。针对两宽度条形码而言,例如,不可以使条形码单位小于元素,这是因为宽元素通常不能进一步减小到窄元素的整数倍。针对多宽度条形码而言,例如,单位可以与模块一样小,因为每个元素宽度由模块宽度的整数倍表示。使用模块单位可以导致窄宽度的一致单位宽度图案。在一些实施例中,特定的多宽度单位宽度图案由一些一致的模块的序列组成,并且相关联的单位编码图案由一起表示那个序列的编码数据的条值和空格值组成。例如,XXXXXXXXXXX为用于长度十一个模块的所有单位宽度图案的单位宽度图案。例如BSBSSSBBSSS为用于11X元素宽度图案111323的唯一单位编码图案。
在一些实施例中,针对两宽度符号而言,元素宽度图案中的信息由单位宽度图案直接编码,单位编码图案交替。例如,如之前描述的,单位编码图案为条值和空格值的交替图案(例如BSBSBSBSB)。在一些实施例中,针对多宽度符号而言,元素宽度图案中的信息由单位编码图案间接编码,其中单位宽度图案由一致的最小特征组成。例如XXXXXXXXXXX为用于长度十一个模块的所有单位宽度图案的单位宽度图案,使得它间接编码元素宽度图案,这是因为没有更多信息,所以不能推断元素宽度图案。但是单位宽度图案(例如用于11X元素宽度图案111323的BSBSSSBBSSS)将包括是十一个特征(例如十一个B和S)。
有利地,使用元素单位来分析两宽度符号或者多宽度符号,符号中的每个唯一数据字符可以与唯一单位(例如元素)序列相关联。单位编码图案可以为针对所有字符相同尺寸的交替二进制图案。使用模块单位来分析多宽度符号,符号中的每个唯一数据字符可以与唯一单位(例如模块)图案相关联,并且该单位(例如模块)序列可以针对所有字符为相同的。
例如,当使用模块单位用于两宽度符号代码39时,用于“A”的唯一单位宽度图案为其元素宽度图案WXXXXWXXW,并且用于“B”的唯一单位宽度图案为其元素宽度图案XXWXXWXXW。但是所有代码39数据字符与相同长度九个二进制单位编码图案BSBSBSBSB相同。同样针对代码128,当使用元素单位时,用于“A”的唯一单位宽度图案为其元素宽度图案111323,并且用于“B”的单位宽度图案为其元素宽度图案131123。但是所有代码128与相同长度六个二级制单位编码图案BSBSBS相关联。
作为另一个示例,当将模块单位用于多宽度符号代码128时,用于所有字符的单位宽度图案为相同长度十一个一致序列XXXXXXXXXXX,但是用于“A”的唯一单位编码图案为BSBSSSBBSSS(例如,与元素宽度图案11323对应),并且用于“B”的唯一单位编码图案为BSSSBWBBSSS(例如与元素宽度图案131123对应)。
通过表示条形码和条形码字符如由单位组成的,可以在数学上建模采样量化效果。例如,可以基于以下特征来生成该模型:
(1)(a)(例如在没有任何字符间的间隙的)连续条形码元素的序列和(b)表示成元素宽度图案的用于每个条形码元素的相关联的量化宽度;
(2)在样本坐标中(例如在样本间距的分数,其中分数本质上为相对于采样网格的开始“相”)的条形码元素序列的第一元素的开始位置;以及
(3)在样本的分数中测量的最小特征尺寸(X)和宽元素宽度(W)如果适用(或者等同地宽窄比)。
使用这些信息,这些条形码元素和原始信号之间的关系可以使用单个矩阵等式来表示,
A*b=s 等式1
其中:
·A为单位采样系数矩阵,取决于单位网格的采样系数的系数矩阵,其限定沿着扫描的单位边界的位置,由以下组成:
ο跨越条形码元素序列的单位子序列;
ο最小特征尺寸,X;
ο宽元素尺寸,W(如果适用);
ο序列中的第一条形码元素的开始位置;
·b为条和空格值的二进制单位编码图案;以及
·s为表示标准化扫描样本的向量。
采样系数矩阵A的每行可以与样本对应,并且每列可以与单位(例如用于多宽度条形码的模块或者用于两宽度条形码的元素)对应。每行中的数值可以被选择未增加到1.0,并且每列的数值可以被选择为增加到相应单位(例如模块或者元素)宽度(例如X或者W)。
用于向量s的第i个标准化样本s(i)可以由下面的等式给出:
s(i)=B+[(r(i)–l(i))x(S-B)]/(h(i)–l(i)) 等式2
其中,
·r为表示样本箱上的扫描信号的连续部分的向量;
以及
·h和l为表示对r的信号包络的离散逼近的数值的向量,使得:
οh(i)为样本i的空格的反射系数的估计;以及
οl(i)为样本i的条的反射系数的估计。
向量r可以假定为覆盖整个单位子序列的位置的范围。在一些实施例中,r的数值可以为测量的反射系数值。A的每行i可以为单位宽度图案中的条形码单位的相应比例的向量,由用于样本i的箱集成,以获得那个扫描样本的反射系数的测量。在一些实施例中,单位系数取决于单位网格,其可以表示单位之间的过度的位置。单位网格可以受相(例如开始点)、最小特征尺寸、打印增长、宽到窄比(如果有的话)等影响。
图4示出根据一些实施例的用于解码条形码的每个模块1个采样(“SPM”)和0相位处的多宽度条形码的示例性扫描线亚采样和采样系数。图4示出A数据字符模块400,其由条形码模块b1 402B,b2 402C,b3 402D,b4 402E,b5 402F,b6 402G,b7 402H,b8 402I,b9402J,b10 402K,以及b11 402L组成。字符单位402包括这些模块以及之前字符b0 402A(空格)的最后一个模块以及之前字符b12 402M(条)的第一模块。
图4示出从扫描404获得的扫描信号406。扫描信号406包括扫描样本408A,408B到408N,本文共同称为扫描样本408。扫描样本408表示用于对应的扫描样本箱s0 410A,s1410B到s12 410N(共同称为扫描样本箱410)的样本。例如,扫描样本408A表示用于扫描样本箱s0 410A的扫描样本。因为每个扫描样本箱410与字符单位402的开始对准,所以扫描样本箱410具有相对于字符单位402的零(0)相位。图4也示出单位采样系数矩阵420。单位采样系数矩阵420 s1 412A到s11 412N(本文共同称为行412)中的每一个与样本对应,并且为单位宽度图案中的字符单位的采样系数的向量。单位采样系数矩阵420的每列422A到422N(共同,列422)对应于单位(例如模块)。如图4所示,每个扫描样本箱410的宽度与条形码字符400的模块的宽度对应,因为采样间距准确地为模块宽度。除了包括1示出的那些之外,单位采样系数矩阵420还包括全0位置(为了简单起见,示出并非全为0)。行s1 412A在列2 422B处包括1,这是因为扫描样本箱s1 410B与整个模块b1 402B一致,行s2 412B在列3 422C处包括1,这是因为扫描样本箱s2 410B与整个模块b2 402C一致,等等。
图5示出根据一些实施例的用于解码条形码的1SPM和0相位处的多宽度条形码的示例性扫描线亚采样和采样系数。图5示出B数据字符元素序列500,其由条形码模块b1502B,b2 502C,b3 502D,b4 502E,b5 502F,b6 502G,b7 502H,b8 502I,b9 502J,b10502K,以及b11 502L组成。字符单位502包括这些模块以及之前字符b0 502A(空格)的最后一个模块以及之前字符b12 502M(条)的第一模块。
图5示出从扫描504获得的扫描信号506。扫描信号506包括扫描样本508A,508B到508N,本文共同称为扫描样本508。扫描样本508表示用于对应的扫描样本箱s0 510A,s1510B到s12 510N的样本。例如,扫描样本508A表示用于扫描样本箱s0 510A的扫描样本。图5还示出了单位采样系数矩阵520。因为每个扫描样本510与条形码模块502的开始对准,所以单位502具有相对于扫描样本箱510的零(0)相位。单位采样系数矩阵520s1 512A到s11512N(本文共同称为行512)中的每一个与样本对应,并且为单位宽度图案中的条形码单位的采样系数的向量。单位采样系数矩阵520的每列522A到522N对应于单位(例如模块)。如在图4中,每个扫描样本箱510的宽度与条形码500的模块的宽度对应。除了包括1示出的那些之外,单位采样系数矩阵520还包括全0位置(为了简单起见,示出并非全为0)。行s1 512A在第2列522B处包括1,因为扫描样本箱s1 510B与整个模块b1 502B一致,行s2 512B在第3列522C处包括1,因为扫描样本箱s2 510B与整个模块b2 502C一致,等。注意,产生的单位采样系数矩阵520与图4中的单位采样系数矩阵相同,因为如同图4,单位502处于相对于扫描样本箱510的零相位处,并且单位尺寸准确等于模块尺寸。
图6示出根据一些实施例的根据一些实施例的用于解码条形码的1SPM和0.5相位处的多宽度条形码的示例性扫描线亚采样和采样系数。图6示出来自图4的A数据字符模块序列400。图6示出从扫描604获得的扫描信号606。扫描信号606包括扫描样本608A,608B到608N,本文共同称为扫描样本608。扫描样本608表示用于对应的扫描样本箱s0 610A,s1610B到s11 610N的样本。例如,扫描样本608A表示用于扫描样本箱s0 610A的扫描样本,其处于高和低之间,因为其区域的一半由b0覆盖,并且其区域的一半由b1覆盖。因为每个单位402从每个扫描样本箱610的开始偏移了扫描采样间距箱的宽度的一半,并且因为采样间距正好等级模块尺寸,所以单位402处于相对于扫描样本箱610的(0.5)相位处。
图6也示出单位采样系数矩阵620。单位采样系数矩阵620s1 612A到s11612N(本文共同称为行612)每行与样本对应,并且为单位宽度图案中的条形码单位的采样系数的向量。单位采样系数矩阵620的每列622A到622N对应于单位(例如模块)。虽然每个扫描样本箱610的宽度等于每个条形码模块的宽度,但是每个扫描样本箱610一半由两个连续条形码元件402中的每一个覆盖。除了包括二分之一(1/2)(为了简单起见示出并非全为0)示出的那些之外,单位采样系数矩阵620还包括全0位置。行s0 612A在第一列622A处包括0.5,这是因为扫描样本箱s0 610A一半由条b0 402A覆盖,并且在第2列622B包括0.5,这是因为扫描样本箱s0 610A一半由条b1 402B覆盖。行s1 612B在第2列622B处包括0.5,这是因为扫描样本箱s1 610B一半由条b1 402B覆盖,并且在第3列622C包括0.5,这是因为扫描样本箱s1 610B一半由条b2 402C覆盖。
图7示出根据一些实施例的根据一些实施例的用于解码条形码的1SPM和-0.25相位处的多宽度条形码的示例性扫描线亚采样和采样系数。图7示出来自图4的A数据字符模块序列400。图7示出从扫描704获得的扫描信号706。扫描信号706包括扫描样本708A,708B到708N,本文共同称为扫描样本708。扫描样本708表示用于对应的扫描样本箱s0 710A,s1710B到s11 710N的扫描样本。例如,扫描样本708A表示用于扫描样本箱s0 710A的扫描样本,其从低到高的路径的四分之三,这是因为扫描样本箱s0由具有h的反射系数的模块b0覆盖0.75%并且由具有l的反射系数的模块b1覆盖0.25%。因为每个单位402从每个扫描样本箱410向后偏移了模块的宽度的四分之一,单位402处于相对于扫描样本箱710的(-0.25)相位处。
图7还示出单位采样系数矩阵720。单位采样系数矩阵720 s1 712A到s11 712N(本文共同称为行712)的每行与样本对应,并且为单位宽度图案中的条形码单位的采样系数的向量。单位采样系数矩阵720的每列722A到722N(共同地,列722)对应于单位(例如模块)。虽然每个扫描样本箱710的宽度等于每个条形码模块的宽度,但是每个扫描样本箱710由两个连续条形码元件402分别覆盖0.75%和0.25%(由于-0.25相位)。除了包括非零值(为了简单起见示出并非全为0)示出的那些之外,单位采样系数矩阵720还包括全0位置。行s0 712A在第一列722A处包括0.75,这是因为扫描样本箱s0 710A由模块b0 402A覆盖3/4,并且在第2列722B处包括0.25,这是因为扫描样本箱s0 710A由模块b1 402B覆盖1/4。行s1 712B在第2列722B处包括0.75,这是因为扫描样本箱s1 710B由模块b1 402B覆盖3/4,并且在第3列72C处包括0.25,这是因为扫描样本箱s1 710B由模块b2 402C覆盖1/4。
图8示出根据一些实施例的根据一些实施例的用于解码条形码的1.33SPM和1/3相位处的多宽度条形码的示例性扫描线亚采样和采样系数。图8示出来自图4的A数据字符模块序列400。图8示出从扫描804获得的扫描信号806。扫描信号806包括扫描样本808A,808B到808N,本文共同称为扫描样本808。扫描样本808表示用于对应的扫描样本箱s0 810A,s1810B到s11 810N的样本。例如,扫描样本808A表示用于扫描样本箱s0 810A的扫描样本,其为高值,这是因为扫描样本箱s0由b0完全覆盖。作为另一个示例,扫描样本808B表示用于扫描样本箱s1 810B的扫描样本,其为从高到低的路径的2/3,这是因为扫描样本箱s1由b0的反射系数覆盖1/3并且由b1的反射系数覆盖2/3。因为单位402B(字符模块的开始)开始于s1810B的右边,所以单位402处于相对于扫描样本箱810的三分之一(1/3)相位处。
图8还示出单位采样系数矩阵820。单位采样系数矩阵820 s1 812A到s11 812N(本文共同称为行812)的每行与扫描样本对应,并且为单位宽度图案中的条形码单位的采样系数的向量。单位采样系数矩阵820的每列822A到822N(共同地,列822)对应于单位(例如模块)。每个扫描样本箱810的宽度由于1.33SPM而等于条形码模块的2/3。除了包括非零值(为了简单起见示出并非全为0)示出的那些之外,单位采样系数矩阵820包括全0位置。例如,行s0 812A在第一列822A处包括1.0,这是因为扫描样本箱s0 810A由模块b0 402A(并且没有任何其它模块的部分)完全覆盖。行s1 812B在第1列822A处包括0.33,这是因为扫描样本箱s1 810B由单位b0 402A覆盖1/3,并且在第2列822B处包括0.66,这是因为扫描样本箱s1810B由模块b2 402C覆盖2/3。
图9示出根据一些实施例的根据一些实施例的用于解码条形码的0.75SPM和-0.25相位处的多宽度条形码的示例性扫描线亚采样和采样系数。图9示出来自图4的A数据字符模块序列400。图9示出从扫描904获得的扫描信号906。扫描信号906包括扫描样本908A,908B到908N,本文共同称为扫描样本908。扫描样本908表示用于对应的扫描样本箱s0910A,s1 910B到s11 910N的样本。例如,扫描样本908A表示用于扫描样本箱s0 910A的扫描样本,其为表示b0 402A的0.75反射系数和b1 402B的0.25反射系数的数值。作为另一个示例,扫描样本908B表示用于扫描样本箱s1 910B的扫描样本,其一半由模块b0覆盖并且一半由模块b1覆盖。因为单位402B(字符模块的第一)开始于s1 910B的左边的0.25采样间距,所以单位402处于相对于扫描样本箱910的负四分之一(-1/4)相位处。
图9还示出单位采样系数矩阵920。单位采样系数矩阵920 s1 912A到s11 912N(本文共同称为行912)的每行与扫描样本对应,并且为单位宽度图案中的条形码单位的采样系数的向量。单位采样系数矩阵920的每列922A到922N(共同地,列922)对应于单位(例如模块)。每个扫描样本箱910的宽度由于0.75SPM而等于条形码元素的1和1/3。除了包括非零值(为了简单起见示出并非全为0)示出的那些之外,单位采样系数矩阵920包括全0位置。例如,行s0 912A在第一列922A处包括0.75,这是因为扫描样本箱s0 910A由单位b0 402A覆盖3/4,并且在第2列922B处包括0.25,这是因为扫描样本箱s0 910A由单位b0 402B覆盖1/4。行s1 912B在第1列822A处包括0.5,这是因为扫描样本箱s1 810B由单位b1 402B覆盖1/2,并且在第2列922B处包括0.5,这是因为扫描样本箱s1 910B由单位b2 402C覆盖1/2。
图10示出根据一些实施例的用于解码条形码的0.84SPM、2.1宽度(W)和-0.16相位处的多宽度条形码的示例性扫描线亚采样和采样系数。图10示出A数据字符元素序列1000,其由条形码元素b0 1002A,b1 1002B,b2 1002C,b3 1002D,b4 1002E,b5 1002F,b6 1002G,b7 1002H,b8 1002I,b9 1002J,以及b10 1002K,共同称为条形码单位(元素)1002。
图10也示出从扫描1004获得的扫描信号1006。扫描信号1006包括扫描样本1008A,1008B到1008N,本文共同称为扫描样本1008。扫描样本1008表示用于对应的扫描样本箱s01010A,s1 1010B到s9 1010N的样本。例如,扫描样本1008A表示用于扫描样本箱s0 1010A的扫描样本,其为表示b0 1002A的0.84反射系数和b1 1002B的0.16反射系数的数值。作为另一个示例,扫描样本1008B表示用于扫描样本箱s1 1010B的扫描样本,其完全由单位b11002B覆盖。因为单位1002B(字符的第一元素)开始于s1 1010B的左边,所以单位1002处于相对于扫描样本箱1010的-0.16相位处。
图10还示出单位采样系数矩阵1020。单位采样系数矩阵1020 s0 1012A到s121012N(本文共同称为行1012)的每行与扫描样本对应,并且为单位宽度图案中的条形码单位的采样系数的向量。单位采样系数矩阵1020的每列1022A到1022N(共同地,列1022)对应于单位(例如元素)。除了包括非零值(为了简单起见示出并非全为0)示出的那些之外,单位采样系数矩阵1020包括全0位置。例如,行s0 1012A在第一列1022A处包括0.84,这是因为扫描样本箱s0 1010A的84%由单位b0 1002A覆盖,并且在第2列1022B处包括0.16,这是因为扫描样本箱s0 1010A的16%由单位b1 1002B覆盖。行s1 1012B在第2列1022B中包括1.0,这是因为所有扫描样本箱s1 910B由单位b1 1002B覆盖。
在一些实施例中,多宽度符号使用模块单位,如在图4至图9中描绘。由于单位宽度图案(例如且因此的单位网格)可以针对所有可能元素宽度图案而相同,所以可以存在针对符号的任何特定部分的一个单位采样系数矩阵,明显模块尺寸在该部分上保持恒定(例如字符、几个字符或者甚至整个条形码)。解码条形码的这个部分可以例如通过解决实际单位编码图案(例如模块值)的线性方程组且然后将其转换到元素宽度图案且最后到其相关联的字母-数字值来执行。在一些实施例中,解码可以通过使用多宽度符号的元素来完成,下面进一步描述。
图11示出根据一些实施例的用于解码条形码的通用基于图像的解码算法的示例性计算机化方法1100。在步骤1102处,阅读器定位(例如传送带上的项目的条形码的)在获得的图像中的条形码候选区域。在步骤1104处,阅读器选择下一个条形码候选区域。例如,下一个候选区域为最像条特征的那个。阅读器可以初始化用于该候选者的集成字符串。在步骤1106处,阅读器通过候选区域从扫描集合中选择下一个扫描(例如来自图4的扫描404)。例如,扫描可以为大约与其它扫描平行且从条形码候选者的一端跨越到另一端的线段。阅读器可以使用不同顺序来选择扫描。例如,阅读器可以从顶部到底部、从中心到外部等的顺序选择下一个扫描。
在步骤1108处,阅读器例如通过使用投影来获得扫描信号(例如扫描信号406)。在步骤1110处,阅读器解码来自扫描信号的条形码。结合图13进一步描述解码过程。在步骤1112处,阅读器集成扫描字符串。例如,阅读器可以将来自扫描(包括字符分数)的解码字符串与至今用于该候选者扫描的集成字符串进行结合。在步骤1114处,条形码阅读器(例如基于置信度阈值来)确定是否条形码被确信地解码。如果阅读器确定了条形码未被确信地解码,则阅读器开始回到步骤1106并且在下一个选定的扫描上执行步骤1108到1112(如果有任何剩余的话)。如果额外的候选区域剩余,则该方法1100开始回到步骤1104。如果完成,该方法报告条形码字符串。条形码字符串可以包括非确信地解码的条形码、部分解码的条形码等。
图12示出根据一些实施例的用于解码条形码的激光扫描器解码算法的示例性计算机化方法1200。在步骤1202处,激光扫描器获得模拟反射信号。模拟反射信号为条形码沿着条形码上的线性扫描的反射,如由激光和检测器所测量的。在步骤1204,激光扫描器采样反射信号(例如通过临时采样对离散数字扫描信号进行提取)。在步骤1206,激光扫描器解码来自扫描信号的条形码。结合图13进一步描述解码过程。在步骤1208处,激光扫描器集成扫描字符串。在步骤1210处,激光扫描器确定是否条形码被确信地解码。如果激光扫描器确定未确信地解码条形码,则激光扫描器开始回到步骤1202并且获得新模拟反射信号。否则方法1200进行到步骤1212并且报告集成的字符串。
图13A至图13B示出根据一些实施例的用于解码来自扫描信号的条形码的示例性计算机化方法1300。在步骤1302处,阅读器检测扫描信号中的边缘(例如元素之间的过渡的1D位置)。本领域的技术人员可以明白各种技术可以用于检测边缘,例如使用导数峰值、二阶导数零交叉、峰/谷转换(ANSI边缘)和/或其它边缘检测方法。在步骤1304处,阅读器过滤边缘。例如,阅读器可以(例如基于对比度来)过滤掉错误边缘,并且/或者当知道最小特征尺寸时添加丢失的边缘。在步骤1306处,阅读器定位且解码第一定界字符。在一些实施例中,阅读器可以沿着扫描在反方向(例如通过颠倒扫描信号)定位且解码定界字符。
在步骤1308处,阅读器前进到下一个字符位置。例如,阅读器可以添加测量出的当前字符的字符长度(例如其在步骤1306的开始处将为定界图案)加上任何测量出的字符间间隙,以确定当前字符的开始位置。如果当前字符未被适当解码(未在置信度范围内),阅读器可以使用字符尺寸的估计。在步骤1310处,阅读器估计字符单位网格。在一些实施例中,字符单位网格包括开始位置(例如相位)最小特征尺寸(例如X)、宽/窄比(如果适用)以及字符间间隙。在一些实施例中,阅读器可以被配置为使用之前解码的字符的最后测量的统计,从而说明之后不能解码的字符的数量。在一些实施例中,可以使用第一边距来测量超过定界符的第一字符的字符间间隙。
在步骤1312处,阅读器使用边缘来解码字符。本领域的技术人员可以明白这可以使用本领域已知的技术例如通过测量边缘到类似边缘距离,分类边缘到类似边缘距离(例如包括舍入每个边缘距离到X或者W的最接近整数倍),查找字符值并且更新字符网格(例如包括位置、最小特征尺寸和元素宽度)和分数(例如更新边缘如何良好匹配,例如通过使用X的最接近整数倍的细分差值)来执行。在步骤1314处,阅读器确定是否解码最后定界字符或者是否超过符号的字符的最大数量。如果没有,则该方法开始回到步骤1308。否则,该方法进行到步骤图13B的步骤1320。在步骤1320处,阅读器确定是否成功解码所有字符。如果是,则方法1300进行到步骤1322并且报告集成字符串。如果没有,则该方法1300进行到步骤1324以移动不确信解码的字符。例如,阅读器可以被配置为避免误读。阅读器可以用高置信度阈值来设置以检测潜在误读(例如所以这些字符被标记为未解码)。例如,这些字符可以包括在未解码字符(例如由于字符单位网格估计中的错误和/或丢失和/或额外边缘)之前的那些字符。
在步骤1326处,阅读器前进到下一个未解码字符。例如,阅读器可以在字符串的开始出开始,并且前进到下一个未解码字符。在步骤1328处,阅读器估计字符单位网格。在步骤1330处,阅读器解码来自扫描信号的字符。如果未解码字符,则该方法开始回到步骤1326。如果解码字符,则该方法进行到步骤1334并且改善字符单位网格。在一些实施例中,步骤1334是可选的。阅读器可以查遍字符单位网格测量结果的每一个中的小扰动并且评估用于解码的字符的分数如何变化。阅读器可以选择产生了最好分数的字符单位网格,由此确定修改的开始位置、字符间间隙(如果适用)、最小特征尺寸和/或宽窄比(如果适用)。如果存在剩余的未解码字符,则该方法进行到步骤1326。否则该方法进行到步骤1322并且报告集成的字符串。
参照步骤1330,解码单独字符可以例如容纳沿着扫描的根据位置的变化的扫描采样间距,例如由光学透视效果和/或弯曲目标周围的符号的非线性扭曲导致。因此,条形码阅读器可以被配置为在字符的相对小定位范围上使用恒定扫描样本间距。例如在扫描样本间距单位中测量的单个最小特征尺寸和宽条宽度(如果适用)可以用于描述字符的单位网格。有利地,使用字符也可以允许条形码阅读器通过检查单位编码图案的所有可能组合(例如用于多宽度代码128的103组合)并且选择导致期望(例如预期)标准化扫描样本的单位编码图案Ab来解决每一个字符单位编码图案,该单位编码图案为测量出的标准化扫描样本s的部分的最接近匹配。
在一些实施例,条形码阅读器可以被配置为使用标准线性代数技术(例如使用最小二乘法b=(ATA)-1s,其会最小化Ab–s的欧几里德长度)来直接解决单位编码图案。在模块尺寸接近1.0时A可以在数学上变得不稳定,且在小于1.0时A变得单一。因此,技术可以用于稳定该方案。例如,约束最小化(例如使用拉格朗日乘子法来包含一些其它线性约束)可以用于稳定该方案。作为另一个示例,伪倒转(例如b=A+s)可以用于稳定该方案。该方案可以以大量其它方式中的任一个来约束,例如数学上约束该方案为二进制向量。然而,一些约束可能比其它不太有利,因为它们可能导致不容易或有效解决的非线性方程组。
字符接字符计数可以用于解码两宽度条形码并且/或解码多宽度字符(例如当使用单位元素时)。因此,阅读器可以被配置为通过识别单位采样系数矩阵(例如和相关联的元素宽度图案和字符值)来解码条形码字符,当乘以表示交替条和空格(针对所有可能字符为相同的)的二进制单位编码图案向量时该单位采样系数矩阵导致最好分数(例如本质上匹配最好采样扫描的那个)。
在一些实施例中,条形码阅读器在找到最好匹配字符之前和/或在找到最好匹配字符期间确定扫描信号包络向量l和H(例如,使得可以直接比较测量的扫描信号值和预测的(期望的)扫描信号值)。在一些实施例中,条形码阅读器被配置为假定扫描信号包络在单个字符上是恒定的(例如以更容易进行计算)。例如,条形码阅读器可以使用单对包络值l和h,而不是向量。例如,这种配置可以用于本质上假设条形码的基本光照未在单个字符的过程改变太多。
在一些实施例中,条形码阅读器可以被配置为假设信号包络未太多地不同于与之前解码的字符的那个。在解码之后,条形码阅读器可以通过测量被解码的字符的较宽条内的最小信号值和最大信号值来改善该包络。在一些实施例中,条形码阅读器可以确定直接用于每个可能字符的包络参数l和h作为匹配过程的一部分。例如,条形码阅读器可以被配置为直接与实际测量的原始信号r匹配期望Ab(例如通过允许任意一致标度和单个偏移)。在一些实施例中,条形码阅读器可以被配置为选择最小化sumi(a r(i)+c–s(i))2(例如,所有n个i值的总和,其中,n为扫描信号的部分的长度)的标量值a和c。然后,关系a=(S-B)/(h-l)和c=B–al可以用于确定h和l,其产生:
l=(DB–vc)/va 等式3和4
h=l+D(S-B)/va
其中:
·va=m2y2–n y1
·vc=m2y1–m1y2
·D=m2 2–n m1
·m1=sum(r(i)2)
·m2=sum(r(i))
·y1=sum(s(i)r(i))
·y2=sum(s(i))
在一些实施例中,条形码阅读器可以被配置为(例如基于邻近字符来)针对这些数字的期望范围来验证计算出的l和h,使得条形码阅读器可以确定是否应当进一步考虑与b对应的字符。
图14A至图14C示出根据一些实施例的用于定位且解码用于解码条形码的第一定界字符的示例性计算机化方法1400。在步骤1402处,该阅读器识别可能的定界开始点。例如,该阅读器可以认为每个边界作为可能开始位置,该边缘的极性(亮到暗或者暗到亮)确定条形码的极性(亮到暗或者暗到亮)。作为另一个示例,该阅读器可以仅认为合理静止区内的边缘(例如在相对于随后边缘距离的距离之前的扫描信号中不具有明显特征(例如边缘))。
在步骤1404处,阅读器从剩余识别的可能定界开始点中选择下一个可能定界开始点。在步骤1406处,该阅读器使用边缘来解码字符。在步骤1408处,该方法1400确定是否解码该定界字符。如果是,则该方法进行到图14C中的步骤1446。在步骤1410处,该阅读器识别可能的定界字符。例如,一些符号具有超过一个开始或者停止图案。在如上所述的一些实施例中,停止图案可以沿着扫描信号在相反方向检测,这是因为解码操作可以出现在反方向。在步骤1412处,该阅读器选择下一个可能的定界字符。
在步骤1414处,该阅读器估计可能的粗略字符单位网格。例如,该阅读器可以根据条形码的结束处的信号的部分来估计可能的最小特征尺寸和宽/窄比(如果适用)。例如,阅读器可以估计打印增长为大约0,并且字符间的间隙(如果适用)为1X。其它估计可以例如通过识别到开始图案边缘对应的可能的测量的边缘来进行,这假定了一些边缘可能由于信号未分解的事实而丢失,并且正在进行最小二乘法拟合。具有最好拟合的对应(例如超过错误阈值)被选择且与最好拟合特征网格相关联。在一些实施例中,针对两宽度符号,可以通过定位宽元素的中心且执行类似对应操作来在没有边缘的情况下可替换地实现估计。
在步骤1416处,该阅读器选择下一个粗略字符单位网格,并且该方法进行到步骤1420。在步骤1420处,该阅读器选择下一个字符单位网格微扰。例如,该阅读器可以选择与估计不同但在估计出的最大错误内的字符单位网格。在一些实施例中,该阅读器可以小步地改变一个参数(例如最小特征尺寸)。在步骤1422处,该阅读器计算单位采样系数矩阵,其在图15中进一步描述。在步骤1424处,该阅读器从单位采样系数矩阵中对字符进行积计分,其在图16中进一步描述。如果该阅读器确定出该分数是充足的(例如比预先确定的阈值要好),则该阅读器可以记录用于那个字符的分数以及相关联的字符单位网格。
在步骤1426处,该阅读器确定是否存在任何剩余的网格微扰。如果存在剩余的网格微扰,则该阅读器进行到步骤1420。如果没有,则该方法进行到步骤1428,并且确定是否存在任何剩余粗略字符网格。如果字符网格剩余,则该方法进行到图14A中的步骤1416。如果没有字符网格剩余,则该方法进行到步骤1430并且确定是否存在剩余的可能定界字符。如果存在剩余的可能定界字符,则该方法进行到图14A的步骤1412。
如果不存在剩余的可能定界字符,则该方法进行到图14C的步骤1440。在步骤1440处,该阅读器为最好匹配字符计分。例如,该阅读器可以选择具有最好分数的字符/网格组合。在步骤1442处,该阅读器确定最好字符分数是足够的。例如,如果最好匹配字符分数不是足够好或者不及下一个最好可能字符分数好超过置信度阈值,则该阅读器可以确定它未找到定界字符。如果最好字符分数足够,则该阅读器进行到步骤1446。如果最好字符分数不是足够的,则该阅读器进行到步骤1444并且确定是否存在剩余可能定界开始位置。如果存在剩余可能定界开始位置,则该方法进行到图14A中的步骤1404。如果不存在剩余可能定界开始位置,则该方法进行到步骤1446并且(可选地)改善字符网格。例如,该阅读器可以查遍字符网格测量的每一个中的较小微扰并且评估分数针对解码字符而如何变化。在一些实施例中,该阅读器选择产生最好分数的字符网格,由此确定修改的开始位置、字符间的间隙(如果适用)、最小特征尺寸和/或宽窄比(如果适用)。
图15示出根据一些实施例的用于确定用于解码条形码的单位采样系数的示例性计算机化方法1500。在步骤1502处,该阅读器初始化单位采样系数。该单位采样系数矩阵的尺寸为n×m,其中,n为实际1D信号值的数量,并且m为字符中的模块(例如针对多宽度符号)或者元素(例如针对两宽度符号或者多宽度元素单位)的数量加上2(例如表示该字符前后的元素或者字符间的间隙)。该阅读器初始化所有值为0。在优选实施例中,使用稀疏矩阵表示来表示系数矩阵。
在步骤1504处,该阅读器确定样本范围。例如,该阅读器可以确定位于该字符内的中心(例如字符模块或者元素中的一个内的中心并且不是先于或者接下来的元素或者字符间的间隙)的第一样本和最后样本。在步骤1506处,该阅读器前进到范围内的下一个扫描样本。例如,如果认为没有,则这为范围内的第一样本。如上所述,该样本可以与具有相同索引的系数矩阵的行对应。该样本通常与箱相关联,其为在其上假设集成信息的扫描线的定位范围。样本箱可以以样本位置为中心并且可以具有等于样本间隔的宽度。
在步骤1508处,该阅读器确定字符单位重叠。例如,使用字符单位网格,该阅读器计算由每个字符单位重叠的样本箱的百分比(例如考虑打印增长)。针对多宽度符号,该阅读器可以使用等于模块的单位。针对两宽度符号而言,该阅读器可以使用等于元素的单位。该阅读器可以与该样本相关联的系数矩阵的行上的顺序记录这些数值。在一些实施例中,当X–g>0.5采样间距时,至多可能存在每行三个非零百分比并且重叠可以通过定位最靠近模块i到样本j且根据等式设置系数矩阵A来确定:
q(i)=(w(i)-1)/2 (等式5-8)
A(j,i-1)=max(+d(i,j)–q(i)+g/2,0)
A(j,i+1)=max(-d(i,j)–q(i)+g/2,0)
A(j,i)=1–A(j,i-1)-A(j,i+1)
其中:
W(i)为元素i的宽度(例如其为窄元素或者模块的X或者用于宽元素的W);并且
d(i,j)为单位i的中心和样本j的中心之间的带符号差值(例如所有位置在样本坐标中为真实值)
在步骤1510处,该阅读器确定是否存在该范围内的任何剩余扫描样本。如果存在在该范围内的剩余扫描样本,则该方法进行到步骤1506。如果不存在在该范围内的剩余扫描样本,则该方法进行到步骤1512且结束。
在一些实施例中,条形码阅读器被配置为使用错误的函数e=s-Ab来确定用于字符的分数。该函数的示例包括平方误差的总和、绝对误差的总和、最大误差等。在一些实施例中,错误为通过系数矩阵“向后传播的”以在原始字符单位(模块或者元素)中计算误差。可以根据下面等式通过计算单位误差向量e(b)来实现向后传播:
e(b)=ATe’ 等式9
其中:
e(b)为单位误差向量;以及
e’为由e’(i)=|e(i)|限定的绝对信号误差的向量。
例如可以使用平方单位误差的总和、单位误差的总和、最大单位误差等来计算用于图案b的总误差。在一些实施例中,平方单位误差的总和用于数据字符(例如由于得到甚至是不正确单个单位都可以导致昂贵误读)。在一些实施例中,单位误差的总和用于定界符(例如,误读不但是有害的而且丢失定界符可以导致甚至不尝试解码符号)。
图16示出根据一些实施例的用于从解码条形码的扫描信号来对字符进行计分的示例性计算机化方法1600。在步骤1602处,该阅读器构建字符单位图案。例如,在一些实施例中,该阅读器识别与该字符相关联的二进制单位编码图案。例如,针对多宽度字符,该单位编码图案为可以为从字符元素宽度图案获得的条或者空格的部分的模块的图案。针对两宽度字符,例如,单位编码图案为总是条值和空格值的交替序列的元素值的图案,开始于适当值(条或者空格)。
在步骤1604处,该阅读器执行单位采样系数乘法。例如,该阅读器可以将单位采样系数矩阵乘以单位编码图案,以获得预测的(或者期望的)信号向量。在步骤1606处,该阅读器可以比较预测的信号和测量的信号。在一些实施例中,该阅读器可以被配置为使得该比较应当产生一个或者多个字符分数,指示出预测的信号如何良好匹配测量出的信号。这可以各种方式来实现,如之前所述。在一些实施例中,该阅读器可以在由局部信号网络进行的标准化实际信号之后(例如最小信号范围和最大信号范围,与信号中的条和空格的明显反射对应)减去两个值。
图17示出根据一些实施例的用于解码来自用于解码条形码的多级条形码的扫描信号的字符的示例性计算机化方法1700。参照步骤1702,该阅读器确定单位采样系数,例如如图16中解释的。在步骤1704处,该阅读器识别可能的数据字符。例如,针对一些代码如代码128,所有数据字符可以为可能的。针对其它代码如UPC-EAN,仅来自适当子组(A,B或者C)的字符可以是可能的。在步骤1706处,阅读器选择下一个可能的数据字符。在步骤1708中,阅读器使用单位采样系数来对字符进行计分。
在步骤1710处,阅读器确定分数是否足够高。如果分数不是足够高,则该方法进行到步骤1706。如果分数足够高,则该阅读器进行到步骤1712且记录字符和分数。在步骤1714处,该阅读器确定是否存在剩余的可能数据字符。如果存在剩余的可能数据字符,则阅读器进行到步骤1706。如果不存在任何剩余的可能数据字符,则阅读器进行到步骤1716并且该阅读器确定最好分数是否比第二最好分数(如果有的话)好至少置信度阈值。如果阅读器确信它识别了最好字符,则该阅读器进行到步骤1720并且记录最好字符和分数。如果该阅读器不是自信的,则不解码该字符。
图18示出根据一些实施例的用于解码来自用于解码条形码的两级条形码或者多级条形码的扫描信号的字符的示例性计算机化方法1800。在步骤1802处,该方法识别可能的数据字符。例如,针对一些代码如代码39,所有数据字符可以为可能的。针对其它代码如Codabar,仅具有适当长度的字符可以是可能的。在步骤1804处,该方法选择下一个可能的数据字符。在步骤1806处,该方法确定单位采样系数(例如如结合图15所述)。在步骤1808处,该方法使用单位采样系数来对字符进行计分(例如如结合图16所述)。
在步骤1810处,阅读器确定分数是否在预先确定的阈值之上。如果分数未在预先确定的阈值之上,则该方法开始回到步骤1804。如果分数在预先确定的阈值之上,则该方法进行到步骤1812并且记录字符和分数。在步骤1814处,该方法确定是否存在剩余的可能数据字符。如果存在剩余的可能数据字符,则该方法进行到步骤1804。如果不存在剩余的可能数据字符,则该方法进行到步骤1816。在步骤1816处,该阅读器确定最好分数是否比第二最好分数(如果有的话)好至少置信度阈值。如果阅读器确信它识别了最好字符,则该阅读器进行到步骤1820并且记录最好字符和分数。如果该阅读器不是确信的,则不解码该字符并且该方法结束在步骤1818处。
本文中描述的主题可以以数字电子电路或者以计算机软件、固件或硬件或者它们各项组合来实现,该计算机软件、固件或者硬件包括在该说明书中公开的结构装置及其结构等同体或它们的组合。本文中描述的主题可以实现为一个或者多个计算机程序产品,例如在信息载体(例如在机器可读存储装置中)体现的或者在用于传播信号中体现的一个或者多个计算机程序,由控制数据处理设备(例如可编程处理器、计算机或者多个计算机)的操作执行或者用以控制该数据处理设备的操作。计算机程序(也称为程序、软件、软件应用或者代码)可以以任何形式的编程语言(包括编译代码或者翻译代码)来重写,并且可以以任何形式部署该编程程序,包括部署为独立程序或者模块、组件、子程序或者适合于用在计算环境中的其它单位。计算机程序未必与文件对应。程序可以存储在保持其它程序或者数据的文件的一部分中、用于讨论中的程序的单个文件中或者在多个协调的文件(例如存储一个或者多个模块、子程序或者代码的一部分的文件)中。计算机程序可以被部署,以在一个站点处的或者跨多个站点上分布的并由通信网络互连的一个计算机上或者多个计算机上执行。
在本说明书中描述的、包括本文中所述主题的方法步骤的处理和逻辑流程可以由一个或者多个可编程处理器来执行,该可编程处理器运行一个或者多个计算机程序以通过操作输入数据且生成输出来执行本文所述的主题的功能。处理和逻辑流程也可以通过专用逻辑电路例如FPGA(现场可编程门阵列)或者ASIC(专用集成电路)来执行,并且本文中描述的主题的设备可以实现为专用逻辑电路例如FPGA(现场可编程门阵列)或者ASIC(专用集成电路)。
适合于执行计算机程序的处理器包括例如通用微处理器和专用处理器以及任何种类数字计算机的任何一个或者多个处理器。通常,处理器将接收来自只读存储器或者随机存取存储器或者二者的指令和数据。计算机的基本元件为用于执行指令的处理器和用于存储指令和/或数据的一个或者多个存储器设备。通常,计算机也将包括或者可操作地耦接,以便于接收来自用于存储数据的一个或者多个大量存储器装置(例如磁性光盘或者磁力光盘)的数据并且向一个或者多个大量存储器装置(例如磁性光盘或者磁力光盘)转移数据或者二者。适合于体现计算机程序指令和数据的信息载体包括所有形式的非易失性存储器,包括例如半导体存储器设备(例如EPROM,EEPROM和闪存装置);磁盘,(例如内置硬盘或者可移除盘);磁光盘;以及光盘(例如CD和DVD盘)。处理器和存储器可以通过专用逻辑电路增补或者并入到专用逻辑电路中。
为了提供与用户的交互,本文所描述的主题可以在具有用于向用户显示信息的显示装置例如CRT(阴极射线管)或者LCD(液晶显示)监视器以及键盘和定点装置(例如鼠标或者轨迹球)的计算机上实现,用户可以通过键盘和定点装置向计算机提供输入。其它种类的装置也可以用于提供与用户的交互。例如,提供给用户的反馈可以为任何形式的传感反馈(例如视觉反馈、听觉反馈或者触觉反馈),并且来自用户的输入可以任何形式接收,包括声音、演讲或触觉输入。
本文所描述的主题可以计算系统来实现,该计算系统包括后端组件(例如数据服务器)、中间组件(例如应用服务器)或者前端组件(例如具有图形用户接口的客户端计算机或者用户可以通过其与本文所述的主题的实现交互的网页浏览器)或者这种后端组件、中间组件以及前端组件的任意组合。该系统的组件可以通过数字数据通信的任何形式或者介质例如通信网络来互连。通信网络的示例包括局域网(“LAN”)或者广域网(“WAN”),例如互联网。
应当理解的是,所公开主题不限于到构建的细节的应用和到下面描述中给出的或者附图中示出的组件的布置的应用。所公开主题能够用于其它实施例并且能够以各种方式来实施和执行。此外,应当理解的是,本文中使用的措辞和术语是出于描述的目的,并且不应当理解为限制。
像这样,本领域的技术人员将明白本公开基于的概念可以容易用作用于设计执行所公开主题的几个目的的其它结构、方法和系统的基础。因此,权利要求被认为包括没有脱离所公开主题的精神和范围的这种等同结构是重要的。
虽然所公开主题在前述示例性实施例中描述并且示出了,但是要理解,仅通过举例完成了本公开,并且可以在不脱离所公开主题的精神和范围的情况下做出所公开主题的实现方式的细节方面的大量变化,其仅由下面的权利要求来限定。

Claims (44)

1.一种用于解码条形码的计算机化方法,所述方法包括:
由计算装置从指示出沿着通过条形码的扫描的扫描信号的传感器接收数据;
由计算装置确定沿着扫描的条形码的条形码单位集合,其中,来自条形码单位集合中的每一个条形码单位包括:宽度以及二进制编码值;
由计算装置基于所述条形码单位集合通过确定表示条形码单位集合中的每一个条形码单位对扫描信号的一部分中的扫描样本集合中的每一个扫描样本的相对贡献的系数,来确定使所述条形码单位集合与扫描信号的一部分关联的至少一个采样系数集合;并且
由计算装置基于所述至少一个采样系数集合和扫描信号的所述一部分来确定所述条形码单位集合的元素图案。
2.根据权利要求1所述的方法,其中,所述条形码单位集合包括所述条形码单位集合的开始位置、所述条形码的最小特征尺寸、所述条形码的宽/窄比、以及所述条形码的字符间间隙中的至少一个。
3.根据权利要求1所述的方法,其中,确定所述条形码单位集合包括:定位至少一个字符,包括:
使用扫描信号沿着扫描来检测条形码元素边缘;
把检测出的条形码元素边缘之间的距离分类;并且
基于分类的检测出的条形码元素边缘之间的距离来确定元素宽度图案和所述条形码单位集合。
4.根据权利要求1所述的方法,其中,确定所述条形码单位集合包括:
使用扫描信号沿着扫描来检测条形码元素边缘;并且
基于检测出的条形码元素边缘沿着扫描来定位第一条形码元素边缘。
5.根据权利要求1所述的方法,其中,确定所述条形码单位集合包括:定位定界字符,包括:
使用扫描信号沿着扫描来检测条形码元素边缘;
基于检测出的条形码元素边缘沿着扫描来定位定界字符的第一条形码元素边缘和第二条形码元素边缘;
基于第一条形码元素边缘和第二条形码元素边缘之间的距离,第一条形码元素边缘和第二条形码元素边缘之间的单位的数量,或者二者皆有来约束所述条形码单位集合的至少一个属性。
6.根据权利要求1所述的方法,其中,确定所述条形码单位集合包括:
沿着扫描定位至少一个宽条形码元素的位置;
使用扫描信号沿着扫描来检测条形码元素边缘;
基于检测出的条形码元素边缘沿着扫描来定位第一条形码元素边缘;并且
基于第一条形码元素边缘和至少一个宽条形码元素位置之间的距离,第一条形码元素边缘和至少一个宽条形码元素位置之间的单位的数量,或者二者皆有来约束所述条形码单位集合的至少一个属性。
7.根据权利要求1所述的方法,其中,所述条形码为:
两宽度条形码,并且用于所述条形码单位集合的条形码单位为两宽度条形码的元素;
多宽度条形码,并且用于所述条形码单位集合的单位为多宽度条形码的元素;
多宽度条形码,并且用于所述条形码单位集合的单位为多宽度条形码的模块,或者其任意组合。
8.根据权利要求1所述的方法,所述方法还包括:基于条形码单位和与扫描样本对应的样本箱之间重叠的数量来确定每个条形码单位对对应的扫描样本的相对贡献。
9.根据权利要求1所述的方法,其中,确定所述条形码单位集合的元素宽度图案包括:
通过求解线性矩阵等式来确定所述条形码单位集合的单位编码图案,所述线性矩阵等式具有与至少一个采样系数集合乘以单位编码图案的矩阵相等的线性矩阵等式的左手侧、和与扫描信号的一部分的向量函数相等的线性矩阵等式的右手侧;并且
将单位编码图案转换到元素宽度图案。
10.根据权利要求9所述的方法,还包括:确定信号包络,包括:
基于针对扫描信号中的邻近条形码字符做出的测量结果来确定信号包络;
通过测量扫描信号的一部分上的最大扫描信号值和最小扫描信号值来确定信号包络;
确定分别针对每个可能的单位编码图案的信号包络;
通过使为在线性矩阵等式的左侧的向量和扫描信号的一部分的向量函数之间的向量差值的函数的拟合误差最小化来确定至少一个单位编码图案的信号包络,其中,向量函数为针对信号包络进行标准化的标准化函数,或者其任意组合。
11.根据权利要求9所述的方法,其中,求解线性矩阵等式包括:
计算可能单位编码图案集合中的每一个的分数;并且
从可能单位编码图案集合中选择具有最好分数的单位编码图案,包括:
将每个单位编码图案的分数与分数阈值进行比较;或者
将来自可能单位编码图案集合的第一单位编码图案的分数与第二单位编码图案的分数进行比较;或者二者皆有。
12.一种用于解码条形码的条形码阅读器,所述条形码阅读器包括处理器,其被配置为运行在存储器中存储的模块,所述模块被配置为导致所述处理器:
从指示出沿着通过条形码的扫描的扫描信号的传感器接收数据;
确定沿着扫描的所述条形码中的条形码单位集合,其中,来自所述条形码单位集合的每一个条形码单位包括:宽度以及二进制编码值;
基于所述条形码单位集合,通过确定表示所述条形码单位集合的每一个条形码单位对扫描信号的一部分中的扫描样本集合中的每一个扫描样本的相对贡献的系数,来确定使所述条形码单位集合与扫描信号的一部分关联的至少一个采样系数集合;并且
基于所述至少一个采样系数集合和扫描信号的所述一部分来确定所述条形码单位集合的元素图案。
13.根据权利要求12所述的条形码阅读器,其中,确定所述条形码单位集合包括:定位至少一个字符,包括:
使用扫描信号沿着扫描来检测条形码元素边缘;
把检测出的条形码元素边缘之间的距离分类;并且
基于分类的检测出的条形码元素边缘之间的距离来确定元素宽度图案和所述条形码单位集合。
14.根据权利要求12所述的条形码阅读器,其中,确定所述条形码单位集合包括:
使用扫描信号沿着扫描来检测条形码元素边缘;并且
基于检测出的条形码元素边缘沿着扫描来定位第一条形码元素边缘。
15.根据权利要求12所述的条形码阅读器,其中,确定所述条形码单位集合包括定位定界字符,包括:
使用扫描信号沿着扫描来检测条形码元素边缘;
基于检测出的条形码元素边缘沿着扫描来定位定界字符的第一条形码元素边缘和第二条形码元素边缘;
基于第一条形码元素边缘和第二条形码元素边缘之间的距离,第一条形码元素边缘和第二条形码元素边缘之间的单位的数量,或者二者皆有来约束所述条形码单位集合的至少一个属性。
16.根据权利要求12所述的条形码阅读器,其中,确定所述条形码单位集合包括:
沿着扫描定位至少一个宽条形码元素的位置;
使用扫描信号沿着扫描来检测条形码元素边缘;
基于检测出的条形码元素边缘沿着扫描来定位第一条形码元素边缘;并且
基于第一条形码元素边缘和至少一个宽条形码元素位置之间的距离,第一条形码元素边缘和至少一个宽条形码元素位置之间的单位的数量,或者二者皆有来约束所述条形码单位集合的至少一个属性。
17.根据权利要求12所述的条形码阅读器,所述处理器还被配置为:基于条形码单位和与扫描样本对应的样本箱之间重叠的数量来确定每个条形码单位对对应的扫描样本的相对贡献。
18.根据权利要求12所述的条形码阅读器,其中,确定所述条形码单位集合的元素宽度图案包括:
通过求解线性矩阵等式来确定所述条形码单位集合的单位编码图案,所述线性矩阵等式具有与至少一个采样系数集合乘以单位编码图案的矩阵相等的线性矩阵等式的左手侧、和与扫描信号的一部分的向量函数相等的线性矩阵等式的右手侧;并且
将单位编码图案转换到元素宽度图案。
19.根据权利要求18所述的条形码阅读器,其中,求解线性矩阵等式包括:
计算可能单位编码图案集合中的每一个的分数;并且
从可能单位编码图案集合中选择具有最好分数的单位编码图案,包括:
将一个单位编码图案的至少一个分数与分数阈值进行比较;
将来自可能单位编码图案集合的每个第一单位编码图案的分数与第二单位编码图案的分数进行比较;或者其各项组合。
20.一种具有可执行指令的非暂时计算机可读介质,所述可执行指令可操作地致使设备:
从指示出沿着通过条形码的扫描的扫描信号的传感器接收数据;
确定沿着扫描的条形码的条形码单位集合,其中,来自所述条形码单位集合的每一个条形码单位包括:宽度以及二进制编码值;
基于所述条形码单位集合来,通过确定表示所述条形码单位集合的每一个条形码单位对扫描信号的一部分中的扫描样本集合中的每一个扫描样本的相对贡献的系数来确定使所述条形码单位集合与扫描信号的一部分关联的至少一个采样系数集合;并且
基于所述至少一个采样系数集合和扫描信号的所述一部分来确定所述条形码单位集合的元素图案。
21.一种用于解码两宽度条形码的计算机化方法,该方法包括:
由计算装置从指示沿通过两宽度条形码的扫描的扫描信号的传感器接收数据;
由计算装置确定沿着扫描的两宽度条形码内的元素图案的元素网格,其中所述元素网格包括所述元素图案的开始位置、所述条形码的最小特征尺寸、所述条形码的宽/窄比、以及所述条形码的字符间间隙中的至少一个;
由计算装置基于所述元素网格,通过确定表示所述元素图案的每一个元素对扫描信号的一部分中的扫描样本集合中的每一个扫描样本的相对贡献的系数来确定使所述元素图案与扫描信号的一部分关联的至少一个采样系数集合;和
由计算装置基于所述至少一个采样系数集合和扫描信号的所述一部分来确定所述元素图案的二进制元素宽度。
22.一种用于解码多宽度条形码的计算机化方法,该方法包括:
由计算装置从指示沿通过多宽度条形码的扫描的扫描信号的传感器接收数据;
由计算装置确定沿着扫描的多宽度条形码内的模块图案的模块网格,其中所述模块网格包括所述模块图案的开始位置、所述条形码的最小特征尺寸中的至少一个;
由计算装置基于所述模块网格,通过确定表示所述模块图案的每一个模块对扫描信号的一部分中的扫描样本集合中的每一个扫描样本的相对贡献的系数来确定使所述模块图案与扫描信号的一部分关联的采样系数集合;和
由计算装置基于所述采样系数集合和扫描信号的所述一部分来确定所述模块图案的整数模块宽度的元素宽度图案。
23.一种用于解码条形码的计算机化方法,该方法包括:
接收条形码的数字图像,其中所述数字图像的像素集合中的每一个像素包括条形码的相关部分的强度测量结果集合中的强度测量结果的至少一部分;
确定沿着通过包括所述条形码的至少一部分的候选区域的扫描的扫描信号;基于所述扫描信号确定条形码的条形码单位集合,其中来自所述条形码单位集合的每个条形码单位包括宽度和二进制编码值;
基于所述条形码单位集合通过确定表示条形码单位集合中的每一个条形码单位对强度测量结果集合中的每一个强度测量结果的相对贡献的系数,来确定使所述条形码单位集合与所述数字图像中的条形码的一部分关联的至少一个采样系数集合;和
基于所述至少一个采样系数集合和条形码的一部分的强度测量结果集合来确定所述条形码单位集合的元素图案。
24.根据权利要求23所述的方法,其中,所述条形码单位集合包括所述条形码单位集合的开始位置、所述条形码的最小特征尺寸、所述条形码的宽/窄比、以及所述条形码的字符间间隙中的至少一个。
25.根据权利要求23所述的方法,其中确定所述条形码单位集合包括定位至少一个字符,包括:
沿着数字图像中的条形码来检测条形码元素边缘;
把检测出的条形码元素边缘之间的距离分类;并且
基于分类的检测出的条形码元素边缘之间的距离来确定元素图案和所述条形码单位集合。
26.根据权利要求23所述的方法,确定所述条形码单位集合包括:
沿着数字图像中的条形码来检测条形码元素边缘;并且
基于检测出的条形码元素边缘沿着条形码来定位第一条形码元素边缘。
27.根据权利要求23所述的方法,确定所述条形码单位集合包括定位定界字符,包括:
沿着数字图像中的条形码来检测条形码元素边缘;
基于检测出的条形码元素边缘沿着条形码来定位定界字符的第一条形码元素边缘和第二条形码元素边缘;
基于第一条形码元素边缘和第二条形码元素边缘之间的距离,第一条形码元素边缘和第二条形码元素边缘之间的单位的数量,或者二者皆有来约束所述条形码单位集合的至少一个属性。
28.根据权利要求23所述的方法,其中确定所述条形码单位集合包括:
沿着数字图像中条形码定位至少一个宽条形码元素的位置;
使用强度测量结果集合沿着条形码来检测条形码元素边缘;
基于检测出的条形码元素边缘沿着条形码来定位第一条形码元素边缘;并且
基于第一条形码元素边缘和至少一个宽条形码元素位置之间的距离,第一条形码元素边缘和至少一个宽条形码元素位置之间的单位的数量,或者二者皆有来约束所述条形码单位集合的至少一个属性。
29.根据权利要求23所述的方法,其中所述条形码是:
两宽度条形码,并且用于所述条形码单位集合的条形码单位为两宽度条形码的元素;
多宽度条形码,并且用于所述条形码单位集合的单位为多宽度条形码的元素;
多宽度条形码,并且用于所述条形码单位集合的单位为多宽度条形码的模块,或者其任意组合。
30.根据权利要求23所述的方法,还包括:基于条形码单位和根据强度测量结果的子集而确定出的沿条形码的位置范围之间重叠的数量来确定每个条形码单位对来自强度测量结果集合的强度测量结果的对应子集的相对贡献。
31.根据权利要求23所述的方法,其中确定所述条形码单位集合的元素图案包括:
通过求解线性矩阵等式来确定所述条形码单位集合的单位编码图案,所述线性矩阵等式具有与至少一个采样系数集合乘以单位编码图案的矩阵相等的线性矩阵等式的左手侧、和与数字图像中的条形码的一部分的向量函数相等的线性矩阵等式的右手侧;并且
将单位编码图案转换到元素宽度图案。
32.根据权利要求31所述的方法,还包括:确定信号包络,包括:
基于针对数字图像中的条形码中的邻近条形码字符做出的测量结果来确定信号包络;
通过测量数字图像中的条形码的一部分上的强度测量结果集合的强度测量结果的子集的最大强度测量结果和最小强度测量结果来确定信号包络;
确定分别针对每个可能单位编码图案的信号包络;
通过使为在线性矩阵等式的左侧的向量和数字图像中的条形码的一部分的向量函数之间的向量差值的函数的拟合误差最小化来确定至少一个单位编码图案的信号包络,其中,向量函数为针对信号包络进行标准化的标准化函数,或者其任意组合。
33.根据权利要求31所述的方法,其中,求解线性矩阵等式包括:
计算可能单位编码图案集合中的每一个的分数;并且
从可能单位编码图案集合中选择具有最好分数的单位编码图案,包括:
将每个单位编码图案的分数与分数阈值进行比较;或者
将来自可能单位编码图案集合的第一单位编码图案的分数与第二单位编码图案的分数进行比较;或者二者皆有。
34.一种用于解码条形码的条形码阅读器,所述条形码阅读器包括处理器,其被配置为运行在存储器中存储的模块,所述模块被配置为导致所述处理器:
接收条形码的数字图像,其中所述数字图像的像素集合中的每一个像素包括条形码的相关部分的强度测量结果集合中的强度测量结果的至少一部分;
确定沿着通过包括所述条形码的至少一部分的候选区域的扫描的扫描信号;基于所述扫描信号确定条形码的条形码单位集合,其中来自所述条形码单位集合的每个条形码单位包括宽度和二进制编码值;
基于所述条形码单位集合通过确定表示条形码单位集合中的每一个条形码单位对强度测量结果集合中的每一个强度测量结果的相对贡献的系数,来确定使所述条形码单位集合与所述数字图像中的条形码的一部分关联的至少一个采样系数集合;和
基于所述至少一个采样系数集合和条形码的一部分的强度测量结果集合来确定所述条形码单位集合的元素图案。
35.根据权利要求34所述的条形码阅读器,其中,确定所述条形码单位集合包括:定位至少一个字符,包括:
沿着数字图像中的条形码来检测条形码元素边缘;
把检测出的条形码元素边缘之间的距离分类;并且
基于分类的检测出的条形码元素边缘之间的距离来确定元素图案和所述条形码单位集合。
36.根据权利要求34所述的条形码阅读器,其中,确定所述条形码单位集合包括:
沿着数字图像中的条形码来检测条形码元素边缘;并且
基于检测出的条形码元素边缘沿着条形码来定位第一条形码元素边缘。
37.根据权利要求34所述的条形码阅读器,其中,确定所述条形码单位集合包括定位定界字符,包括:
沿着数字图像中的条形码来检测条形码元素边缘;
基于检测出的条形码元素边缘沿着条形码来定位定界字符的第一条形码元素边缘和第二条形码元素边缘;
基于第一条形码元素边缘和第二条形码元素边缘之间的距离,第一条形码元素边缘和第二条形码元素边缘之间的单位的数量,或者二者皆有来约束所述条形码单位集合的至少一个属性。
38.根据权利要求34所述的条形码阅读器,其中,确定所述条形码单位集合包括:
沿着数字图像中的条形码来定位至少一个宽条形码元素的位置;
使用强度测量结果集合沿着条形码来检测条形码元素边缘;
基于检测出的条形码元素边缘沿着条形码来定位第一条形码元素边缘;并且
基于第一条形码元素边缘和至少一个宽条形码元素位置之间的距离,第一条形码元素边缘和至少一个宽条形码元素位置之间的单位的数量,或者二者皆有来约束所述条形码单位集合的至少一个属性。
39.根据权利要求34所述的条形码阅读器,所述处理器还被配置为:基于条形码单位和根据来自强度测量结果集合的对应的强度测量结果的子集而确定出的沿条形码的位置范围之间重叠的数量来确定每个条形码单位对强度测量结果的子集的相对贡献。
40.根据权利要求34所述的条形码阅读器,其中,确定所述条形码单位集合的元素图案包括:
通过求解线性矩阵等式来确定所述条形码单位集合的单位编码图案,所述线性矩阵等式具有与至少一个采样系数集合乘以单位编码图案的矩阵相等的线性矩阵等式的左手侧、和与数字图像中的条形码的一部分的向量函数相等的线性矩阵等式的右手侧;并且
将单位编码图案转换到元素宽度图案。
41.根据权利要求40所述的条形码阅读器,其中,求解线性矩阵等式包括:
计算可能单位编码图案集合中的每一个的分数;并且
从可能单位编码图案集合中选择具有最好分数的单位编码图案,包括:
将一个单位编码图案的至少一个分数与分数阈值进行比较;或者
将来自可能单位编码图案集合的每个第一单位编码图案的分数与第二单位编码图案的分数进行比较;或者二者皆有。
42.一种具有可执行指令的非暂时计算机可读介质,所述可执行指令可操作地致使设备:
接收条形码的数字图像,其中所述数字图像的像素集合中的每一个像素包括条形码的相关部分的强度测量结果集合中的强度测量结果的至少一部分;
确定沿着通过包括所述条形码的至少一部分的候选区域的扫描的扫描信号;基于所述扫描信号确定条形码的条形码单位集合,其中来自所述条形码单位集合的每个条形码单位包括宽度和二进制编码值;
基于所述条形码单位集合通过确定表示条形码单位集合中的每一个条形码单位对强度测量结果集合中的每一个强度测量结果的相对贡献的系数,来确定使所述条形码单位集合与所述数字图像中的条形码的一部分关联的至少一个采样系数集合;和
基于所述至少一个采样系数集合和条形码的一部分的强度测量结果集合来确定所述条形码单位集合的元素图案。
43.一种用于解码两宽度条形码的计算机化方法,该方法包括:
接收两宽度条形码的数字图像,其中所述数字图像的像素集合中的每一个像素包括两宽度条形码的相关部分的强度测量结果集合中的强度测量结果的至少一部分;
确定沿着通过包括所述条形码的至少一部分的候选区域的扫描的扫描信号;基于所述扫描信号确定两宽度条形码内的元素图案的元素网格,其中所述元素网格包括所述元素图案的开始位置、所述条形码的最小特征尺寸、所述条形码的宽/窄比、以及所述条形码的字符间间隙中的至少一个;
基于所述元素网格通过确定表示元素图案中的每一个元素对强度测量结果集合中的每一个强度测量结果的相对贡献的系数,来确定使所述元素图案与数字图像中的条形码的一部分关联的至少一个采样系数集合;并且
基于所述至少一个采样系数集合和条形码的一部分的强度测量结果集合来确定所述元素图案的二进制元素宽度图案。
44.一种用于解码多宽度条形码的计算机化方法,该方法包括:
接收多宽度条形码的数字图像,其中所述数字图像的像素集合中的每一个像素包括条形码的相关部分的强度测量结果集合中的强度测量结果的至少一部分;
确定沿着通过包括所述条形码的至少一部分的候选区域的扫描的扫描信号;基于所述扫描信号确定多宽度条形码内的模块图案的模块网格,其中所述模块网格包括所述模块图案的开始位置、以及所述条形码的最小特征尺寸中的至少一个;
基于所述模块网格通过确定表示模块图案中的每一个模块对每一个强度测量结果的相对贡献的系数,来确定使所述模块图案与数字图像中的条形码的一部分关联的采样系数集合;并且
基于所述采样系数集合和条形码的一部分的强度测量结果来确定所述模块图案的整数模块宽度的元素宽度图案。
CN201910623833.6A 2014-10-09 2015-10-09 解码条形码 Active CN110414293B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/510,710 2014-10-09
US14/510,710 US9607200B2 (en) 2014-10-09 2014-10-09 Decoding barcodes
CN201510670047.3A CN105512594B (zh) 2014-10-09 2015-10-09 解码条形码

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201510670047.3A Division CN105512594B (zh) 2014-10-09 2015-10-09 解码条形码

Publications (2)

Publication Number Publication Date
CN110414293A CN110414293A (zh) 2019-11-05
CN110414293B true CN110414293B (zh) 2023-02-07

Family

ID=55644359

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201510670047.3A Active CN105512594B (zh) 2014-10-09 2015-10-09 解码条形码
CN201910623833.6A Active CN110414293B (zh) 2014-10-09 2015-10-09 解码条形码

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201510670047.3A Active CN105512594B (zh) 2014-10-09 2015-10-09 解码条形码

Country Status (4)

Country Link
US (3) US9607200B2 (zh)
CN (2) CN105512594B (zh)
DE (1) DE102015219541A1 (zh)
HK (1) HK1224062A1 (zh)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DK2820592T3 (en) 2012-03-01 2018-04-23 Sys Tech Solutions Inc Unique identification information from labeled features
US20150169928A1 (en) 2012-03-01 2015-06-18 Sys-Tech Solutions, Inc. Methods and a system for verifying the identity of a printed item
US20150379321A1 (en) 2012-03-01 2015-12-31 Sys-Tech Solutions, Inc. Methods and a system for verifying the authenticity of a mark
US10599902B2 (en) 2014-10-09 2020-03-24 Cognex Corporation Methods and apparatus for decoding under-resolved symbols
US9607200B2 (en) * 2014-10-09 2017-03-28 Cognex Corporation Decoding barcodes
EP3281390B1 (en) 2015-04-09 2022-03-23 OMRON Corporation Embedded web server
US10198648B1 (en) * 2015-04-10 2019-02-05 Digimarc Corporation Decoding 1D-barcodes in digital capture systems
US10146978B2 (en) 2015-07-14 2018-12-04 Afero, Inc. Apparatus and method for accurate barcode scanning using dynamic timing feedback
CN106650862B (zh) * 2015-11-04 2019-06-28 光宝电子(广州)有限公司 条码的结构、解码方法及解码装置
US9626543B1 (en) * 2015-12-14 2017-04-18 Afero, Inc. Apparatus and method for accurate barcode scanning using dynamic timing feedback
JP6607122B2 (ja) * 2016-03-30 2019-11-20 ブラザー工業株式会社 画像解析装置
US10204284B2 (en) * 2016-12-06 2019-02-12 Datalogic Ip Tech S.R.L. Object recognition utilizing feature alignment
US10083334B2 (en) * 2016-12-06 2018-09-25 Datalogic Ip Tech S.R.L. Barcode reconstruction utilizing a sequence alignment matrix
WO2018106799A1 (en) * 2016-12-09 2018-06-14 Sys-Tech Solutions, Inc. Methods and a computing device for determining whether a mark is genuine
CN106991348B (zh) * 2017-03-21 2019-11-15 浙江华睿科技有限公司 一种条码解码方法及装置
CN108830361B (zh) * 2017-05-03 2021-12-14 深圳市九州传媒科技有限公司 一种隐形码识别方法、终端及服务器
US10325128B1 (en) * 2017-05-10 2019-06-18 Amazon Technologies, Inc. Long range barcode scanning
CN109388999B (zh) * 2017-08-11 2021-09-17 杭州海康威视数字技术股份有限公司 一种条形码识别方法及装置
US10607047B2 (en) 2017-12-06 2020-03-31 Cognex Corporation Local tone mapping for symbol reading
US10460191B1 (en) * 2018-08-20 2019-10-29 Capital One Services, Llc Dynamically optimizing photo capture for multiple subjects
CN109409159A (zh) * 2018-10-11 2019-03-01 上海亿保健康管理有限公司 一种模糊二维码检测方法及装置
JP7427427B2 (ja) 2018-11-21 2024-02-05 コグネックス・コーポレイション 解像度不足のシンボルをデコードするための方法と装置
JP7021651B2 (ja) * 2019-03-01 2022-02-17 オムロン株式会社 シンボル境界特定装置、シンボル境界特定方法および画像処理プログラム
US11667474B1 (en) * 2021-08-27 2023-06-06 Amazon Technologies, Inc. Increasing scan rate of parcels within material handling facility
US11960966B2 (en) 2022-05-16 2024-04-16 Abbyy Development Inc. Decoding of two-dimensional barcodes under unfavorable conditions

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6082619A (en) * 1998-12-16 2000-07-04 Matsushita Electric Industrial Co., Ltd. Method for locating and reading a two-dimensional barcode
CN101710385A (zh) * 2009-12-28 2010-05-19 天津优尼莱博泰克电子科技发展有限公司 高性能二维条形码解码方法
JP2012147133A (ja) * 2011-01-07 2012-08-02 Mitsubishi Electric Corp サンプリングレート変換装置およびサンプリングレート変換方法
CN102682264A (zh) * 2011-01-31 2012-09-19 霍尼韦尔国际公司 用于使用多个数据源来读取光学标记的方法和设备

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5398770A (en) 1992-05-07 1995-03-21 Brown Manufacturing Corporation Cultivator
US5343028A (en) 1992-08-10 1994-08-30 United Parcel Service Of America, Inc. Method and apparatus for detecting and decoding bar code symbols using two-dimensional digital pixel images
US5329105A (en) 1992-08-10 1994-07-12 United Parcel Service Of America, Inc. Method and apparatus for determining the width of elements of bar code symbols
US5486689A (en) 1993-01-22 1996-01-23 Intermec Corporation Method and apparatus for decoding unresolved multi-width bar code symbology profiles
US6944298B1 (en) 1993-11-18 2005-09-13 Digimare Corporation Steganographic encoding and decoding of auxiliary codes in media signals
US6681029B1 (en) 1993-11-18 2004-01-20 Digimarc Corporation Decoding steganographic messages embedded in media signals
US5514858A (en) 1995-02-10 1996-05-07 Intermec Corporation Method and apparatus for decoding unresolved complex multi-width bar code symbology profiles
US5539191A (en) 1995-06-22 1996-07-23 Intermec Corporation Method and apparatus for decoding unresolved bar code profiles using edge finding circuitry
EP0921492B1 (en) * 1997-12-05 2001-07-25 DATALOGIC S.p.A. Method of compensating the edge positions of a signal generated by scanning a bar code
US6938824B2 (en) * 2001-09-26 2005-09-06 Symbol Technologies, Inc. Decoding algorithm for laser scanning bar code readers
US20060027657A1 (en) 2004-08-04 2006-02-09 Laurens Ninnink Method and apparatus for high resolution decoding of encoded symbols
US7237721B2 (en) * 2005-05-24 2007-07-03 Nokia Corporation Image processing for pattern detection
CN103339641B (zh) * 2010-12-09 2017-02-22 得利捷Ip科技有限公司 一种用于解码二维光学代码的方法
US8967481B2 (en) * 2011-09-21 2015-03-03 Regents Of The University Of Minnesota Symbol-based decoding of optical codes
CN102880850B (zh) 2012-09-19 2015-08-19 腾讯科技(深圳)有限公司 一种二维码批量扫描的方法及扫描设备
US9607200B2 (en) 2014-10-09 2017-03-28 Cognex Corporation Decoding barcodes
US10599902B2 (en) 2014-10-09 2020-03-24 Cognex Corporation Methods and apparatus for decoding under-resolved symbols

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6082619A (en) * 1998-12-16 2000-07-04 Matsushita Electric Industrial Co., Ltd. Method for locating and reading a two-dimensional barcode
CN101710385A (zh) * 2009-12-28 2010-05-19 天津优尼莱博泰克电子科技发展有限公司 高性能二维条形码解码方法
JP2012147133A (ja) * 2011-01-07 2012-08-02 Mitsubishi Electric Corp サンプリングレート変換装置およびサンプリングレート変換方法
CN102682264A (zh) * 2011-01-31 2012-09-19 霍尼韦尔国际公司 用于使用多个数据源来读取光学标记的方法和设备

Also Published As

Publication number Publication date
CN105512594B (zh) 2019-07-30
CN110414293A (zh) 2019-11-05
US10032058B2 (en) 2018-07-24
US20190087619A1 (en) 2019-03-21
DE102015219541A1 (de) 2016-04-14
CN105512594A (zh) 2016-04-20
US9607200B2 (en) 2017-03-28
HK1224062A1 (zh) 2017-08-11
US10699089B2 (en) 2020-06-30
US20170372107A1 (en) 2017-12-28
US20160104022A1 (en) 2016-04-14

Similar Documents

Publication Publication Date Title
CN110414293B (zh) 解码条形码
US6386454B2 (en) Detecting bar code candidates
US11151346B2 (en) Methods and apparatus for decoding under-resolved symbols
US5814801A (en) Maxicode data extraction using spatial domain features exclusive of fourier type domain transfer processing
JP2771899B2 (ja) 空間ドメイン内の二次元記号の復号方法及び装置
US9361499B2 (en) Barcode decoding
US20010023896A1 (en) Techniques for reading two dimensional code, including maxicode
EP0669593A2 (en) Two-dimensional code recognition method
US10699091B2 (en) Region of interest location and selective image compression
JPH0950473A (ja) 未定の複雑な多幅バーコード符号プロフィールをデコードする方法及び装置
JPH1063772A (ja) データマトリックスシンボルを有する機械読取り可能なシンボルを探し、デコードするための方法及び装置
US9070033B2 (en) Stack barcode reader and stack barcode reading method
JP7062722B2 (ja) 光学コードのモジュールサイズの特定
US20120085823A1 (en) Stacked barcode reader and stacked barcode reading method
US6941026B1 (en) Method and apparatus using intensity gradients for visual identification of 2D matrix symbols
US20150227772A1 (en) Detection and decoding method
US8267322B2 (en) Method and apparatus for correcting decoding errors in machine-readable symbols
JP7427427B2 (ja) 解像度不足のシンボルをデコードするための方法と装置
Brouwer Image pre-processing to improve data matrix barcode read rates
Trummer et al. Reading out 2d barcode PDF417

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant