JP2023024994A - Method and apparatus for decoding symbol with insufficient resolution - Google Patents

Method and apparatus for decoding symbol with insufficient resolution Download PDF

Info

Publication number
JP2023024994A
JP2023024994A JP2022177744A JP2022177744A JP2023024994A JP 2023024994 A JP2023024994 A JP 2023024994A JP 2022177744 A JP2022177744 A JP 2022177744A JP 2022177744 A JP2022177744 A JP 2022177744A JP 2023024994 A JP2023024994 A JP 2023024994A
Authority
JP
Japan
Prior art keywords
modules
grid
module
pixels
values
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.)
Pending
Application number
JP2022177744A
Other languages
Japanese (ja)
Inventor
バチェルダー,アイヴァン
Bachelder Ivan
エイ. ネグロ,ジェイムズ
A Negro James
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
Priority claimed from US16/198,203 external-priority patent/US10599902B2/en
Application filed by Cognex Corp filed Critical Cognex Corp
Publication of JP2023024994A publication Critical patent/JP2023024994A/en
Pending legal-status Critical Current

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
    • G06K7/146Methods for optical code recognition the method including quality enhancement steps
    • 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
    • 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/1408Methods for optical code recognition the method being specifically adapted for the type of code
    • G06K7/14172D bar codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Toxicology (AREA)
  • Health & Medical Sciences (AREA)
  • Electromagnetism (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Image Processing (AREA)
  • Error Detection And Correction (AREA)

Abstract

PROBLEM TO BE SOLVED: To provide a method, an apparatus, and a computer readable medium configured to decode symbols in a digital image.
SOLUTION: A method receives a digital image in a part of a symbol. The digital image includes a grid of pixels, and the symbol includes a grid of modules. A space mapping between a contiguous subset of the module in the grid of the modules and the grid of the pixels is determined. By using the space mapping, a causal relation is determined between each of the modules and the grid of the pixels. By using the causal relation, a set of valid combinations of values of the adjacent modules in the contiguous subset of the modules is tested against the grid of the pixels. Based on the tested set of the valid combinations, a value of at least one module of two or more adjacent modules is determined. Based on the determined value of at least one module, the symbol is decoded.
SELECTED DRAWING: Figure 11
COPYRIGHT: (C)2023,JPO&INPIT

Description

関連出願
この出願は、2018年7月23日に提出された「バーコードのデコード」と題する米国特許出願第16/043029号の米国特許法第120条下での利益を主張する部分継続出願であり、同出願は2017年3月27日に提出された「バーコードのデコード」と題する米国特許出願第10032058号の米国特許法第120条下での利益を主張する部分継続出願であり、同出願は2014年10月9日に提出された「バーコードのデコード」と題する米国特許出願第14/510710号(現在米国特許第9607200号として発行)の米国特許法第120条下での利益を主張する部分継続出願であり、その全開示内容は参照により本明細書に組み込まれる。
RELATED APPLICATIONS This application is a continuation-in-part claiming the benefit under 35 U.S.C. This application is a continuation-in-part claiming benefit under 35 U.S.C. The application claims benefit under 35 U.S.C. §120 of U.S. patent application Ser. This is a claimed continuation-in-part application, the entire disclosure of which is incorporated herein by reference.

技術分野
本明細書に記載する技術は、概略、2次元バーコードなどの解像度不足の2次元シンボルのデコードに関する。
TECHNICAL FIELD The technology described herein relates generally to decoding low resolution 2D symbols such as 2D barcodes.

自動化された部品識別など様々な目的のために情報をエンコードするために、様々なタイプのシンボルを使用できる。バーコードは、通常は長方形のバイナリ空間パターンを使用して情報をエンコードするシンボルの一種である。1次元バーコードは情報を、幅が変化する平行なバーとスペース(例えばエレメント)が交互するする1つ以上の空間的に連続する配列でエンコードする。特定のタイプの1次元バーコード(例えばしばしば多値幅バーコードと呼ばれる)の場合、各エレメントの幅はモジュールの整数倍である。2次元バーコードは通常、情報をモジュールエレメントの均一な格子としてエンコードし、各々のエレメントは黒又は白であることができる。 Various types of symbols can be used to encode information for various purposes such as automated part identification. A barcode is a type of symbol that encodes information using a binary spatial pattern, usually rectangular. A one-dimensional barcode encodes information in one or more spatially continuous arrays of alternating parallel bars and spaces (eg, elements) of varying width. For certain types of one-dimensional barcodes (eg, often called multi-value width barcodes), the width of each element is an integer multiple of modules. Two-dimensional barcodes typically encode information as a uniform grid of modular elements, each element can be black or white.

通常、バーコードは、均一な反射基材(紙や金属など)にバー又はモジュールエレメントを印刷(インクなど)又はマーキング(エッチングなど)することによって作成される。バー又は暗いモジュールは、通常基材よりも反射率が低く、したがってそれらの間のスペースよりも暗く見える(白い紙に黒インクを使ってバーコードを印刷する場合など)。しかしバーコードは、黒い物体の上に白い塗料を使って印刷する場合など、別のやり方で印刷できる。バーコードを背景からより簡単に区別するために、シンボルは通常他の印刷又は目に見える構造から比較的離れて配置される。そのような距離は、最初のバーの前と最後のバーの後の両方に(例えば1次元バーコードの場合)、又はモジュールのエレメントの格子の周りに(例えば2次元バーコードの場合)しばしばクワイエットゾーンと呼ばれる余白を生み出す。代替として、スペースとクワイエットゾーンを印刷又はマークすることができ、バーは暗黙的に基材によって形成される。 Bar codes are typically created by printing (such as ink) or marking (such as etching) bars or module elements on a uniform reflective substrate (such as paper or metal). Bars or dark modules are usually less reflective than the substrate and therefore appear darker than the space between them (such as printing a bar code with black ink on white paper). But barcodes can be printed in other ways, such as by printing with white paint on a black object. In order to more easily distinguish the bar code from the background, the symbols are usually placed relatively far from other printed or visible structures. Such distances are often quiet both before the first bar and after the last bar (eg for 1D barcodes) or around the grid of elements of the module (eg for 2D barcodes). Create white space called zones. Alternatively, the spaces and quiet zones can be printed or marked and the bars implicitly formed by the substrate.

しかしながら、バーコードリーダにとってしばしば(例えば低サンプリングレート又は解像度が足りないセンサによる)サンプリング不足のバーコードや、(例えばリーダーの焦点が合っていない、動きの影響などのために)ぼやけたバーコードなど、解像度不足のバーコードをデコードするのが困難な場合がある。 However, barcode readers often have undersampled barcodes (e.g. due to low sampling rate or insufficient resolution sensor) or blurry barcodes (e.g. due to poor reader focus, motion effects, etc.). , it may be difficult to decode low-resolution barcodes.

開示された主題によれば、1次元(1D)多値幅シンボル体系及び2次元(2D)シンボルなど解像度不足のシンボルをデコードするための装置、システム及び方法が提供される。本発明者らは、2Dシンボルをデコードする既存の技術は、解像度不足の2Dシンボルを十分にデコードできないことを認識した。さらに、本発明者らは解像度不足の1Dシンボルのデコードに使用される既存の技術は、解像度不足の2Dシンボルをデコードするために(例えば1次元シンボルの文字などの部分と比べて2次元シンボルに対する解集合は指数関数的に大きくなる可能性があるため)、又は多値幅1Dシンボルの大部分を別個の文字に分割することなくデコードするために、単純に拡張できないことを認識した。本発明者らは、シンボルの既知の態様及び/又はピクセルの格子のピクセルと画像のピクセルの格子内のピクセルとの間で決定される数学的関係に基づいて、多値幅1Dシンボル又は2Dシンボルのモジュールの初期セットを決定する代替技術を開発した。最初に決定されたモジュールのセットは、残りの十分な数のモジュール値を決定して、システムがシンボルをデコードできるように活用される。一部の実施形態では、この技術は、最初にシンボルの既知の態様を活用してシンボルのモジュールの第1のセットを決定し、次にこのモジュールの第1のセット及び/又は画像内のピクセルとシンボルに対するモジュールとの間の数学的な関係に基づいてシンボルの第2のモジュールのセットを(例えば反復法で)決定し、次にまだ推定されていないモジュールの残りのサブセットのみに対して(例えば以前に決定されたモジュール値を活用して)有効な組み合わせを試して、モジュールの格子に対するモジュールの第3のセットを決定することを含む。そのような技術はシンボルに対する十分な数のモジュールをデコードして、システムが全シンボルをデコードできるようにする。 In accordance with the disclosed subject matter, apparatus, systems and methods are provided for decoding under-resolution symbols such as one-dimensional (1D) multi-level symbologies and two-dimensional (2D) symbols. The inventors have recognized that existing techniques for decoding 2D symbols cannot adequately decode under-resolution 2D symbols. In addition, we have found that existing techniques used for decoding under-resolution 1D symbols are not sufficient for decoding under-resolution 2D symbols (e.g. (because the solution set can be exponentially large), or to decode most of the multi-level 1D symbols without splitting them into separate characters. The inventors have discovered a multilevel wide 1D symbol or 2D symbol based on known aspects of the symbol and/or mathematical relationships determined between pixels of a grid of pixels and pixels in a grid of pixels of an image. An alternative technique was developed to determine the initial set of modules. The first determined set of modules is utilized to determine a sufficient number of remaining module values to enable the system to decode the symbol. In some embodiments, the technique first leverages known aspects of the symbol to determine a first set of modules of the symbol, and then determines the first set of modules and/or pixels in the image. determine (e.g., iteratively) a second set of modules for the symbol based on the mathematical relationship between and the modules for the symbols, and then for only the remaining subset of modules not yet estimated ( determining a third set of modules for the lattice of modules by trying valid combinations (e.g., leveraging previously determined module values); Such techniques decode a sufficient number of modules for a symbol so that the system can decode the entire symbol.

幾つかの態様は、デジタル画像内のシンボルをデコードするためのコンピュータ化された方法に関する。この方法は、以下を含む:シンボルの部分のデジタル画像を受け取ること、ここで、デジタル画像はピクセルの格子を含み、シンボルはモジュールの格子を含む;モジュールの格子内のモジュールの連続サブセットとピクセルの格子との間の空間マッピングを決定すること;空間マッピングを使用して、モジュールの連続サブセット内の各モジュールとピクセルの格子との間の因果関係を決定すること、ここで、各因果関係は、モジュールの値がピクセルの格子内のピクセルのサブセットの値の各々に与える影響の程度を表わす;因果関係を用いて、モジュールの連続サブセット内の2個以上の隣接するモジュールの値の有効な組み合わせのセットをピクセルの格子に照らしてテストすること;有効な組み合わせのセットに基づいて、2個以上の隣接するモジュールの少なくとも1個のモジュールの値を決定すること;及び少なくとも1個のモジュールの決定された値に基づいてシンボルをデコードすること。 Some aspects relate to computerized methods for decoding symbols in digital images. The method includes: receiving a digital image of a portion of a symbol, wherein the digital image includes a grid of pixels and the symbol includes a grid of modules; determining a spatial mapping between the grid; using the spatial mapping to determine a causal relationship between each module in the contiguous subset of modules and the grid of pixels, where each causal relationship is: Represents the degree to which the value of a module affects each of the values of a subset of pixels in a grid of pixels; testing the set against a grid of pixels; determining the value of at least one of the two or more adjacent modules based on the set of valid combinations; and determining the value of at least one of the modules. Decoding a symbol based on the value obtained.

幾つかの例では、モジュールの格子内のモジュールの連続サブセット内の2個以上の隣接するモジュールは、モジュールの格子の3×3サブ格子を含む。2個以上のモジュールの少なくとも1個のモジュールは、3×3サブ格子の中心モジュールになることができる。 In some examples, two or more adjacent modules in a contiguous subset of modules within the grid of modules comprise a 3×3 sub-grid of the grid of modules. At least one module of the two or more modules can be the central module of the 3x3 sub-grid.

幾つかの例では、モジュールの連続サブセットには、既知の値を有する少なくとも1つの所定のモジュールを含み、2個以上の隣接するモジュールの値の有効な組み合わせのセットは、少なくとも1つの所定のモジュールに対して既知の値を有する組み合わせのみを含む。所定のモジュールは、シンボルのファインダパターン又はタイミングパターン内部のモジュールであることができる。所定のモジュールの既知の値は、単一のピクセルがピクセルのサブセット内の他のピクセルと所定のモジュールとの間の因果関係と比較して、所定のモジュールと優勢な因果関係を有するため、ピクセルの格子における単一のピクセルの値のみに基づいて推定することができる。所定のモジュールには、以前に決定された値を有する任意のモジュールを含むことができる。 In some examples, the contiguous subset of modules includes at least one predetermined module having a known value, and the set of valid combinations of values of two or more adjacent modules comprises at least one predetermined module Include only combinations that have known values for . The predetermined module can be a module within the symbol's finder pattern or timing pattern. A known value of a given module is a pixel because a single pixel has a dominant causal relationship with the given module compared to the causality between other pixels in the subset of pixels and the given module. can be estimated based only on the value of a single pixel in the grid. A given module can include any module that has a previously determined value.

幾つかの例では、因果関係を決定することは、モジュールの連続サブセット内の各モジュールがピクセルの格子内の各ピクセルとオーバーラップする程度を、空間関係を用いて特定して、オーバーラップの程度のセットを生成することを含む。モジュールの連続サブセット内の各モジュールがピクセルの格子内の各ピクセルとオーバーラップする程度は、サンプリング係数のセットによって、及びサンプリングマトリックスの一部として表すことができる。 In some examples, determining a causal relationship includes using a spatial relationship to identify the extent to which each module in a contiguous subset of modules overlaps with each pixel in a grid of pixels to determine the degree of overlap. , including generating a set of The extent to which each module in the contiguous subset of modules overlaps with each pixel in the grid of pixels can be represented by a set of sampling factors and as part of a sampling matrix.

幾つかの例では、ピクセルの格子とモジュールの格子は、いずれも2次元である。 In some examples, both the grid of pixels and the grid of modules are two-dimensional.

幾つかの例では、ピクセルの格子は、2次元画像を通過する1次元スキャンからのサンプルの1次元格子であり、モジュールの格子は、モジュールの1次元格子である。 In some examples, the grid of pixels is a one-dimensional grid of samples from a one-dimensional scan through the two-dimensional image, and the grid of modules is a one-dimensional grid of modules.

幾つかの例では、シンボルは、1次元(1D)バーコードと2次元(2D)バーコードからなるグループから選択される。 In some examples, the symbols are selected from the group consisting of one-dimensional (1D) barcodes and two-dimensional (2D) barcodes.

幾つかの態様は、デジタル画像内のシンボルをデコードするための装置に関する。この装置は、メモリと通信するプロセッサを備えている。プロセッサは、メモリに格納されていてプロセッサに以下のことをさせる命令を実行するように構成されている:シンボルの部分のデジタル画像を受け取ること、ここで、デジタル画像はピクセルの格子を含み、シンボルはモジュールの格子を含む;モジュールの格子内のモジュールの連続サブセットとピクセルの格子との間の空間マッピングを決定すること;空間マッピングを使用して、モジュールの連続サブセット内の各モジュールとピクセルの格子との間の因果関係を決定すること、ここで、各因果関係は、モジュールの値がピクセルの格子内のピクセルのサブセットの値の各々に与える影響の程度を表わす;因果関係を用いて、モジュールの連続サブセット内の2個以上の隣接するモジュールの値の有効な組み合わせのセットをピクセルの格子に照らしてテストすること;テストされた有効な組み合わせのセットに基づいて、2個以上の隣接するモジュールの少なくとも1個のモジュールの値を決定すること;及び少なくとも1個のモジュールの決定された値に基づいてシンボルをデコードすること。 Some aspects relate to an apparatus for decoding symbols within a digital image. The device includes a processor in communication with memory. The processor is configured to execute instructions stored in the memory that cause the processor to: receive a digital image of a portion of the symbol, where the digital image comprises a grid of pixels and the symbol includes a grid of modules; determining a spatial mapping between a contiguous subset of modules within the grid of modules and a grid of pixels; , where each causal relationship represents the extent to which the value of the module affects each of the values of a subset of pixels in the grid of pixels; testing a set of valid combinations of values of two or more adjacent modules in a contiguous subset of against a grid of pixels; testing two or more adjacent modules based on the set of valid combinations tested; and decoding the symbol based on the determined value of the at least one module.

幾つかの例では、モジュールの格子内のモジュールの連続サブセット内の2個以上の隣接するモジュールは、モジュールの格子の3×3サブ格子を含む。 In some examples, two or more adjacent modules in a contiguous subset of modules within the grid of modules comprise a 3×3 sub-grid of the grid of modules.

幾つかの例では、モジュールの連続サブセットは、既知の値を有する少なくとも1つの所定のモジュールを含み、2個以上の隣接するモジュールの値の有効な組み合わせのセットは、少なくとも1つの所定のモジュールに対して既知の値を有する組み合わせのみを含む。 In some examples, the contiguous subset of modules includes at least one predetermined module with known values, and a set of valid combinations of values of two or more adjacent modules are associated with at least one predetermined module. Include only combinations that have known values for

幾つかの例では、因果関係を決定することは、モジュールの連続サブセット内の各モジュールがピクセルの格子内の各ピクセルとオーバーラップする程度を、空間的関係を用いて特定して、オーバーラップの程度のセットを生成することを含む。 In some examples, determining causality involves using spatial relationships to identify the extent to which each module in a contiguous subset of modules overlaps with each pixel in a grid of pixels to determine the degree of overlap. Including generating a set of degrees.

幾つかの例では、ピクセルの格子とモジュールの格子は、いずれも2次元である。 In some examples, both the grid of pixels and the grid of modules are two-dimensional.

幾つかの例では、ピクセルの格子は、2次元画像を通過する1次元スキャンからのサンプルの1次元格子であり、モジュールの格子はモジュールの1次元格子である。 In some examples, the grid of pixels is a one-dimensional grid of samples from a one-dimensional scan through the two-dimensional image, and the grid of modules is a one-dimensional grid of modules.

幾つかの例では、シンボルは、1次元(1D)バーコードと2次元(2D)バーコードからなるグループから選択される。 In some examples, the symbols are selected from the group consisting of one-dimensional (1D) barcodes and two-dimensional (2D) barcodes.

一部の実施形態は、少なくとも1つの非一時的コンピュータ可読記憶媒体に関する。非一時的コンピュータ可読媒体は、プロセッサ実行可能命令を格納しており、これらの命令は少なくとも1つのコンピュータハードウェアプロセッサによって実行されると、少なくとも1つのコンピュータハードウェアプロセッサに以下の動作を実行させる:シンボルの部分のデジタル画像を受け取ること、ここで、デジタル画像はピクセルの格子を含み、シンボルはモジュールの格子を含む;モジュールの格子内のモジュールの連続サブセットとピクセルの格子との間の空間マッピングを決定すること;空間マッピングを使用して、モジュールの連続サブセット内の各モジュールとピクセルの格子との間の因果関係を決定すること、ここで、各因果関係は、モジュールの値がピクセルの格子内のピクセルのサブセットの値の各々に与える影響の程度を表わす;因果関係を用いて、モジュールの連続サブセット内の2個以上の隣接するモジュールの値の有効な組み合わせのセットをピクセルの格子に照らしてテストすること、テストされた有効な組み合わせのセットに基づいて、2個以上の隣接するモジュールの少なくとも1個のモジュールの値を決定すること、少なくとも1個のモジュールの決定された値に基づいてシンボルをデコードすること。 Some embodiments relate to at least one non-transitory computer-readable storage medium. The non-transitory computer-readable medium stores processor-executable instructions that, when executed by at least one computer hardware processor, cause the at least one computer hardware processor to perform the following actions: Receiving a digital image of a portion of the symbol, wherein the digital image comprises a grid of pixels and the symbol comprises a grid of modules; a spatial mapping between a contiguous subset of modules within the grid of modules and the grid of pixels; determining; using the spatial mapping to determine a causal relationship between each module in a contiguous subset of modules and a grid of pixels, where each causal relationship is the value of the module in the grid of pixels; using causality to determine the set of valid combinations of two or more adjacent module values in a consecutive subset of modules against a grid of pixels determining the value of at least one of the two or more adjacent modules based on the set of valid combinations tested; symbolically based on the determined value of the at least one module; to decode.

以上、開示の主題の特徴をやや大まかに述べたのは、以下に続く詳細な説明においてそれらがより良く理解されるように、また本発明の技術への寄与がより適切に評価されるようにするためである。言うまでもなく開示された主題の追加の特徴があり、それらは以下に説明されるとともに、本明細書に付属する特許請求の範囲の主題をなす。本明細書で用いられる表現及び用語は説明を目的としたものと理解すべきであり、制限するものと見なされてはならない。 The foregoing has outlined rather broadly features of the disclosed subject matter so that they may be better understood and the contributions to the art of the present invention may be better appreciated in the detailed description that follows. It is for There are, of course, additional features of the disclosed subject matter which will be described hereinafter and which form the subject of the claims appended hereto. It is to be understood that the phraseology and terminology used herein is for the purpose of description and should not be regarded as limiting.

図面において、様々な図に示されている同一又はほぼ同一の各構成要素は同じ参照符号で表されている。見やすさのため、各図面にはすべての構成要素が表示されているわけではない。図面は必ずしも縮尺通りではなく、代わりに本明細書に記載する技術及び装置の種々の態様を示すことに重点が置かれている。 In the drawings, each identical or nearly identical component that is illustrated in various figures is represented by a same reference numeral. Not all components are shown in each drawing for clarity. The drawings are not necessarily to scale, emphasis instead being placed on illustrating various aspects of the techniques and apparatus described herein.

2値幅シンボル体系を用いて生成されたバーコードを示す。2 shows a bar code generated using a binary width symbology; 2値幅シンボル体系の寸法を示している。The dimensions of the binary width symbology are shown. 多値幅シンボル体系を用いて生成されたバーコードを示す。2 shows a bar code generated using a multi-level symbology; 例示的なスキャン信号を示す。4 shows an exemplary scan signal; 一部の実施形態による、バーコードをデコードするための1SPM及び0位相での多値幅バーコードに対する例示的なスキャンラインサブサンプリング及びサンプリング係数を示す。FIG. 4 illustrates exemplary scanline subsampling and sampling factors for a multi-level width barcode at 1 SPM and 0 phase for decoding the barcode, according to some embodiments; 一部の実施形態による、バーコードをデコードするための1SPM及び0位相での多値幅バーコードに対する例示的なスキャンラインサブサンプリング及びサンプリング係数を示す。FIG. 4 illustrates exemplary scanline subsampling and sampling factors for a multi-level width barcode at 1 SPM and 0 phase for decoding the barcode, according to some embodiments; 一部の実施形態による、バーコードをデコードするための1SPM及び0.5位相での多値幅バーコードに対する例示的なスキャンラインサブサンプリング及びサンプリング係数を示す。FIG. 4 illustrates exemplary scanline subsampling and sampling factors for a multi-level width barcode at 1 SPM and 0.5 phase for decoding the barcode, according to some embodiments; 一部の実施形態による、バーコードをデコードするための1SPM及び-0.25位相での多値幅バーコードに対する例示的なスキャンラインサブサンプリング及びサンプリング係数を示す。4 illustrates exemplary scanline subsampling and sampling factors for a multi-level width barcode at 1 SPM and -0.25 phase for decoding the barcode, according to some embodiments. 一部の実施形態による、バーコードをデコードするための1.33SPM及び0.33位相での多値幅バーコードに対する例示的なスキャンラインサブサンプリング及びサンプリング係数のパーセンテージを示す。FIG. 10 illustrates exemplary scanline subsampling and sampling factor percentages for a multi-level width barcode at 1.33 SPM and 0.33 phase for decoding the barcode, according to some embodiments; FIG. 一部の実施形態による、バーコードをデコードするための0.75SPM及び-0.25位相での多値幅バーコードの例示的なスキャンラインサブサンプリング及びサンプリング係数を示す。6 illustrates exemplary scanline subsampling and sampling factors of a multi-level barcode at 0.75 SPM and -0.25 phase for decoding the barcode, according to some embodiments; 一部の実施形態による、バーコードをデコードするための0.84SPM、2.1幅(W)及び-0.16位相での2値幅バーコードの例示的なスキャンラインサブサンプリング及びサンプリング係数を示す。FIG. 11 illustrates exemplary scanline subsampling and sampling factors of a binary width barcode at 0.84 SPM, 2.1 width (W) and −0.16 phase for decoding the barcode, according to some embodiments; FIG. . 一部の実施形態による、バーコードをデコードするための一般的な画像ベースのデコードアルゴリズムの例示的なコンピュータ化された方法を示す。4 illustrates an exemplary computerized method of a generic image-based decoding algorithm for decoding barcodes, according to some embodiments; 一部の実施形態による、バーコードをデコードするためのレーザスキャナデコードアルゴリズムの例示的なコンピュータ化された方法を示す。4 illustrates an exemplary computerized method of a laser scanner decoding algorithm for decoding barcodes, according to some embodiments; 一部の実施形態による、スキャン信号からバーコードをデコードするための例示的なコンピュータ化された方法を示す。4 illustrates an exemplary computerized method for decoding barcodes from scan signals, according to some embodiments; 一部の実施形態による、スキャン信号からバーコードをデコードするための例示的なコンピュータ化された方法を示す。4 illustrates an exemplary computerized method for decoding barcodes from scan signals, according to some embodiments; 一部の実施形態による、バーコードをデコードするための第1の区切り文字の位置を特定してデコードするための例示的なコンピュータ化された方法を示す。4 illustrates an exemplary computerized method for locating and decoding a first delimiter for decoding a barcode, according to some embodiments; 一部の実施形態による、バーコードをデコードするための第1の区切り文字の位置を特定してデコードするための例示的なコンピュータ化された方法を示す。4 illustrates an exemplary computerized method for locating and decoding a first delimiter for decoding a barcode, according to some embodiments; 一部の実施形態による、バーコードをデコードするための第1の区切り文字の位置を特定してデコードするための例示的なコンピュータ化された方法を示す。4 illustrates an exemplary computerized method for locating and decoding a first delimiter for decoding a barcode, according to some embodiments; 一部の実施形態による、バーコードをデコードするための単位サンプリング係数を決定するための例示的なコンピュータ化された方法を示す。4 illustrates an exemplary computerized method for determining unit sampling factors for decoding barcodes, according to some embodiments. 一部の実施形態による、バーコードをデコードするためにスキャン信号から文字をスコアリングするための例示的なコンピュータ化された方法を示す。4 illustrates an exemplary computerized method for scoring characters from scan signals for decoding barcodes, according to some embodiments. 一部の実施形態による、バーコードをデコードするための多値幅バーコードのスキャン信号から文字をデコードするためのコンピュータ化された方法を示す。4 illustrates a computerized method for decoding characters from a multi-level barcode scan signal for decoding barcodes, according to some embodiments. 一部の実施形態による、バーコードをデコードするための2値幅又は多値幅バーコードのスキャン信号から文字をデコードするための例示的なコンピュータ化された方法を示す。4 illustrates an exemplary computerized method for decoding characters from a scan signal of a binary or multi-wide barcode for decoding barcodes, according to some embodiments. 幾つかの例による、例示的なデータマトリックス2Dシンボルを示す。4 illustrates an exemplary Data Matrix 2D symbol, according to some examples; 幾つかの例による、例示的なQRコードシンボルを示す。4 shows an exemplary QR Code symbol, according to some examples; 一部の実施形態による、解像度不足の2Dシンボルをデコードするための例示的なコンピュータ化された方法を示す。4 illustrates an exemplary computerized method for decoding under-resolution 2D symbols, according to some embodiments. 一部の実施形態による、2Dシンボルの例示的な画像を示す。4 illustrates an exemplary image of a 2D symbol, according to some embodiments; 一部の実施形態による、図21の画像の上部に重ねた2Dシンボルに対する例示的なモジュールの格子を示す。22 illustrates an exemplary grid of modules for a 2D symbol overlaid on top of the image of FIG. 21, according to some embodiments; 一部の実施形態による、ピクセルの格子におけるピクセルがモジュールの格子の例示的なモジュールとオーバーラップするパーセンテージを示すサンプリングマトリックス部分の例を示す。FIG. 11 illustrates an example sampling matrix portion showing the percentage by which pixels in a grid of pixels overlap with exemplary modules of a grid of modules, according to some embodiments; FIG. 一部の実施形態による、2Dシンボルの既知の構造値で埋められている、図22における例示的なモジュールの格子を示す。23 illustrates the exemplary grid of modules in FIG. 22 filled with known structure values of 2D symbols, according to some embodiments; 一部の実施形態による、モジュールとピクセルとの間の関係に基づいて推定された例示的なピクセルの格子のピクセルを示す。FIG. 11 illustrates pixels of an exemplary grid of pixels estimated based on relationships between modules and pixels, according to some embodiments; FIG. 一部の実施形態による、既知のモジュールに基づいて決定された新しい白と黒のモジュール値を示す。4 illustrates new white and black module values determined based on known modules, according to some embodiments; 一部の実施形態による、図25Aで決定された新しいモジュールに基づいて決定された追加のモジュール値を示す。25B shows additional module values determined based on the new modules determined in FIG. 25A, according to some embodiments; 一部の実施形態による、多値幅1Dシンボルの例示的な画像を示す。4 shows an exemplary image of a multi-level 1D symbol, according to some embodiments; 一部の実施形態による、図26の画像の上部に重ねた1D多値幅シンボル体系に対する例示的なモジュールの格子を示す。27 illustrates an exemplary grid of modules for the 1D multi-level width symbology overlaid on top of the image of FIG. 26, according to some embodiments; 一部の実施形態による、ピクセルの格子のピクセルと画像のピクセルとの間のオーバーラップの程度の例示的な図である。FIG. 5 is an exemplary illustration of the degree of overlap between pixels of a grid of pixels and pixels of an image, according to some embodiments; 一部の実施形態による、任意のモジュールのパターンに対するモジュールの格子の推定モジュールの例を示す。FIG. 11 illustrates an example of a lattice of modules estimation module for an arbitrary pattern of modules, according to some embodiments; FIG. 一部の実施形態による、モジュールとピクセルとの間の関係に基づいて推定された例示的なピクセルの格子のピクセルを示す。FIG. 11 illustrates pixels of an exemplary grid of pixels estimated based on relationships between modules and pixels, according to some embodiments; FIG. 一部の実施形態による、モジュールとピクセルとの間の関係に基づいて推定された例示的なピクセルの格子のピクセルを示す。FIG. 11 illustrates pixels of an exemplary grid of pixels estimated based on relationships between modules and pixels, according to some embodiments; FIG. 一部の実施形態による、既知のモジュールに基づいて決定されたモジュールの格子内の追加モジュールを示す。4 illustrates additional modules in a lattice of modules determined based on known modules, according to some embodiments. 一部の実施形態による、無向制約グラフの例を示す。4 illustrates an example of an undirected constraint graph, according to some embodiments;

本明細書に記載する技術は、解像度不足のシンボル(例えばサンプリング不足のシンボル及び/又はぼやけたシンボル)をデコードするために使用できる。本発明者らは、1D及び2Dシンボルデコード技術はシンボルをデコードするために、しばしばある程度の画像解像度、例えばモジュールあたり少なくとも2ピクセルの画像解像度を必要とすることを認識した(例えばモジュールがシンボル格子の単一の黒又は白のエレメントである場合)。本発明者らは、本明細書でさらに説明するように、より低い解像度の画像を使用してシンボルをデコードするシンボルデコード技術を改善する技術を開発した。例えば、この技術を用いてモジュールあたり1ピクセル以下、例えばモジュールあたり0.8ピクセル及びそれ以下の解像度で取得された1Dシンボル(多値幅1Dシンボルなど)及び/又は2Dシンボルをデコードできる。 The techniques described herein can be used to decode under-resolution symbols (eg, under-sampled and/or blurred symbols). The inventors have recognized that 1D and 2D symbol decoding techniques often require some degree of image resolution, e.g. single black or white element). The inventors have developed techniques to improve symbol decoding techniques that decode symbols using lower resolution images, as described further herein. For example, this technique can be used to decode 1D symbols (such as multilevel 1D symbols) and/or 2D symbols acquired at resolutions of 1 pixel per module or less, eg, 0.8 pixels per module and less.

以下の説明では、開示された主題の完全な理解を提供するために、開示された主題のシステム及び方法、並びにそのようなシステム及び方法が動作できる環境などに関して多くの具体的な詳細が述べられる。加えて、以下に提供される例は例示であり、開示された主題の範囲内にある他のシステム及び方法があることが想定されていることは理解されるであろう。 In the following description, numerous specific details are set forth regarding the systems and methods of the disclosed subject matter, the environments in which such systems and methods can operate, etc. in order to provide a thorough understanding of the disclosed subject matter. . Additionally, it will be appreciated that the examples provided below are illustrative and that there are other systems and methods within the scope of the disclosed subject matter.

バーコードには、シンボル体系と呼ばれる多数のバーコード設計のいずれか1つを使用できる。各シンボル体系は、バー、スペース、クワイエットゾーンの寸法制約、並びに情報をいかに正確にエンコードされるかを指定できる。バーコードシンボル体系の例には、コード128、コード93、コード39、コーダバー、I2オブ5、MSI、コード2オブ5、UPC-EANがある。バーコードは、すべての情報が1つの次元に沿ってコード化される伝統的な「線形」シンボル体系(コード128やコード39など)を含むことができる。バーコードには、「スタックされた」2Dシンボルの個々の行(例えばデータバー、PDF417、マイクロPDF、及び一部の合成シンボルの2Dコンポーネント)も含めることができ、これはすべてバーコードを互いに上に積み重ねてより多くの情報をエンコードすることができる。 A barcode can use any one of a number of barcode designs called symbologies. Each symbology can specify size constraints for bars, spaces, and quiet zones, as well as how exactly the information is encoded. Examples of barcode symbologies include Code 128, Code 93, Code 39, Codabar, I2 of 5, MSI, Code 2 of 5, UPC-EAN. Barcodes can include traditional "linear" symbologies (such as Code 128 and Code 39) in which all information is encoded along one dimension. Barcodes can also contain individual rows of “stacked” 2D symbols (e.g. data bars, PDF417, microPDF, and the 2D components of some composite symbols), which all stack barcodes on top of each other. can be stacked to encode more information.

多くのバーコードシンボル体系は、2値幅シンボル体系と多値幅シンボル体系の2つのカテゴリーに分類される。2値幅シンボル体系の例には、例えばコード39、インタリーブド2オブ5、コーダバー、MSI、コード2オブ5及びファーマコードがある。2値幅シンボル体系の各エレメントは、細いか太い。細エレメントの幅は、最小特徴サイズXに等しい。太エレメントの幅は、太エレメントサイズWに等しい。太エレメントのサイズWは、普通は最小特徴サイズの固定した実倍数である。これにより2レベルシンボル体系は、各エレメントがX又はWの2つの可能な値のいずれかを表すことが可能になる。 Many bar code symbologies fall into two categories: binary and multi-level symbologies. Examples of binary width symbologies are eg Code 39, Interleaved 2 of 5, Codabar, MSI, Code 2 of 5 and Pharmacode. Each element in the binary symbology is thin or thick. The width of the narrow element is equal to the minimum feature size X. The width of the thick element is equal to the thick element size W. The size W of the fat element is usually a fixed real multiple of the minimum feature size. This allows a two-level symbology to allow each element to represent one of two possible values of X or W.

多値幅シンボル体系は、例えばコード128、コード93、UPC-EAN、PDF417、マイクロPDF及びデータバーを含む。多値幅シンボル体系の各エレメントは、最小特徴サイズの整数の倍数nである(例えばnはシンボル体系に応じて1からエレメントの最大幅までの整数である)。モジュールという用語は、しばしばマルチレベルバーコードの最小特徴サイズを指すために用いられ、マルチレベルバーコードシンボルの各エレメントは整数個のモジュールで構成される。多くの多値幅シンボル体系(コード128、コード93、UPC-EANなど)でnの範囲は1~4であるが、これより大きい場合もある(例えばデータバーではnの範囲は1~9である)。 Multilevel symbologies include, for example, Code 128, Code 93, UPC-EAN, PDF417, MicroPDF and DataBar. Each element of the multi-level width symbology is an integer multiple n of the minimum feature size (eg, n is an integer from 1 to the maximum width of the element, depending on the symbology). The term module is often used to refer to the minimum feature size of a multilevel barcode, each element of a multilevel barcode symbol being composed of an integer number of modules. n ranges from 1 to 4 for many multilevel symbologies (Code 128, Code 93, UPC-EAN, etc.), but there are others (e.g., databars have n ranging from 1 to 9). ).

2値幅バーコード又は多値幅バーコードにおけるエレメント配列のデータは、量子化されたエレメント幅の対応する配列によってエンコードされる。あるエレメント配列に対するエレメント幅の配列は、しばしばエレメント配列のエレメント幅パターンと呼ばれる。2値幅エレメント配列に対するエレメント幅パターンは、狭いエレメント(「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として表される。 Element array data in a binary or multi-width barcode is encoded by a corresponding array of quantized element widths. An array of element widths for an element array is often called the element width pattern of the element array. The element width pattern for a binary width element array is a binary pattern composed of narrow elements (“X”) and wide elements (“W”). For example, bar (W), space (X) bar (X), space (X), bar (X), space (W), bar (X), space (X), bar (W) is represented as WXXXXWXXW , where X is the minimum feature size and W is the fat element width. An element width pattern for a multi-level width element array is a pattern of integers that indicate the width of the module of each corresponding element in the array. For example, bar (n=1), space (n=1), bar (n=1), space (n=3), bar (n=2), space (n=3) element width pattern 111323. be.

バーコードエレメントは、しばしばそれぞれのエレメントから英数字の値にデコードできる連続した文字(アルファベットや数字など)にまとめられる。一部の実施形態において、データはエレメント幅の全配列(例えばファーマコードバーコード)から直接決定される。特定のシンボル体系でエンコードできる可能な文字は、文字セットと呼ばれる。文字セットには、シンボル体系に応じて区切り文字やデータ文字など、幾つかの異なるタイプの文字がある。通常、種々の可能な区切り文字パターンは少数しかないが、可能なデータ文字エレメント幅パターンは多数ある。バーコード全体に対してエンコードされた文字列を主に定義するのは、バーコードの一方の端からもう一方の端までに表されるデータ特性値の文字列である。 Barcode elements are often grouped into a series of characters (alphanumeric, etc.) that can be decoded from each element to an alphanumeric value. In some embodiments, the data is determined directly from an element-wide full array (eg, a pharmacocode barcode). The possible characters that can be encoded in a particular symbology are called a character set. Character sets have several different types of characters, such as delimiters and data characters, depending on the symbology. While there are typically only a few different possible delimiter patterns, there are many possible data character element width patterns. It is the string of data property values represented from one end of the barcode to the other that primarily defines the encoded string for the entire barcode.

ガードパターンと呼ばれることもある区切り文字は、バーコードの先頭と末尾に表示されることが多い。区切り文字を使用すると、バーコードリーダは、例えばシンボルを検出し、どこで読み取りを開始及び停止するか判定し及び/又はシンボル体系の種類を決定することが可能となる。バーコードの先頭と末尾に配置された区切り文字は、しばしばそれぞれ開始文字と停止文字と呼ばれる。一部のシンボル体系(UPC-Aやデータバーなど)には、シンボル内に区切り文字パターンがあり、データ文字のセクションを区切っている。最後に、一部のシンボル体系(コード128など)には、データ文字をどのように解釈するかを決定する様々な開始区切り文字がある。 Delimiters, sometimes called guard patterns, often appear at the beginning and end of barcodes. Delimiters allow a barcode reader to detect symbols, determine where to start and stop reading, and/or determine the type of symbology, for example. Delimiters placed at the beginning and end of a barcode are often called start and stop characters, respectively. Some symbologies (such as UPC-A and Databar) have delimiter patterns within the symbol to separate sections of data characters. Finally, some symbologies (such as Code 128) have different starting delimiters that determine how the data characters are interpreted.

データ文字は、バーコードの実際の情報をエンコードする文字である。データ文字に対するエレメント幅パターンは、英数字の値に関連付けられている。チェックサム文字と呼ばれる特別なデータ文字が指定されることもよくある。この文字の値は、本質的に他のすべてのデータ文字の値の合計であり、バーコードリーダが誤読した文字列を検出できるようにする。すべてのデータ文字の英数字値の配列は生の文字列を形成し、これは次に特別なフォーマット規則を使ってバーコードに対する実際のエンコードされたエレメントセットに変換される。 Data characters are characters that encode the actual information in the barcode. Element width patterns for data characters are associated with alphanumeric values. A special data character called a checksum character is often specified. The value of this character is essentially the sum of the values of all other data characters, allowing the bar code reader to detect misread strings. An array of alphanumeric values for all data characters forms a raw string, which is then converted into the actual encoded element set for the barcode using special formatting rules.

タイプに関係なく、文字セットの各文字値はユニークなエレメント幅パターンに関連付けられる。例えばコード39文字セットの「A」と「B」のエレメント幅パターンは、それぞれWXXXXWXXWとXXWXXWXXWである。上記で説明したように、したがって「A」に対するエレメント幅パターンWXXXXWXXWは、バー(W)、スペース(X)バー(X)、スペース(X)、バー(X)、スペース(W)、バー(X)、スペース(X)、バー(W)であり、ここで、Xは最小特徴サイズ、Wは太いエレメントの幅である。コード128文字セットの「A」と「B」のエレメント幅パターンは、それぞれ111323と131123である。 Each character value in the character set, regardless of type, is associated with a unique element width pattern. For example, the element width patterns for "A" and "B" in the Code 39 character set are WXXXXWXXW and XXWXXWXXW, respectively. As explained above, the element width pattern WXXXXWXXW for 'A' is therefore bar(W), space(X) bar(X), space(X), bar(X), space(W), bar(X ), space (X), bar (W), where X is the minimum feature size and W is the width of the thick element. The element width patterns for "A" and "B" in the Code 128 character set are 111323 and 131123 respectively.

ほとんどのシンボル体系では、特定のタイプのすべての文字はバーコードの物理的な幅が同じであることに注意することが重要である。例えば2値幅シンボル体系の文字は通常一定の数の狭いバー、狭いスペース、太いバー、太いスペースを持ち、普通はバーエレメントで始まる。特定の2値幅シンボル体系の文字(コード39など)もバーで終わり、文字間ギャップと呼ばれる一貫しているが幅は任意の特別なスペースを使用して個々の文字を分離する。文字の間に文字間ギャップのあるこのようなシンボル体系は、一般に分離型シンボル体系と呼ばれ、そのようなギャップのないシンボル体系は連続型シンボル体系と呼ばれる。対照的に、多値幅シンボル体系文字は、それぞれが正確に1個のモジュール幅である一定の総数のモジュールを持つことが多く、それらは一定の数のバーとスペースを有し、通常はバーで始まりスペースで終わる(したがって文字間ギャップはない)。 It is important to note that in most symbologies, all characters of a particular type have the same physical bar code width. For example, characters in binary symbologies usually have a fixed number of narrow bars, narrow spaces, wide bars, wide spaces, and usually begin with a bar element. Characters of certain binary width symbologies (such as code 39) also end with bars, and special spaces of consistent but arbitrary width, called intercharacter gaps, are used to separate individual characters. Such symbologies with intercharacter gaps between characters are commonly referred to as discrete symbologies, and symbologies without such gaps are referred to as continuous symbologies. In contrast, multi-level symbology characters often have a fixed total number of modules, each exactly one module wide, and they have a fixed number of bars and spaces, usually with bars. Begins and ends with a space (so there are no intercharacter gaps).

図1Aは、2値幅シンボル体系コード39を用いて生成されたバーコード100を示す。バーコード100は、102A、102B、102Cから102Nまでのエレメント配列(本明細書ではまとめてエレメント配列102と呼ぶ)のセットを含む。このエレメント配列のセットは、文字列PATENT104をエンコードする。文字列PATENT104の各文字は、データ文字Pをエンコードするエレメント配列102BやデータAをエンコードするエレメント配列102Cなどのデータ文字を使用してエンコードされる。エレメント配列102A及び102Nは、*で示される区切り文字をエンコードする。したがってエレメント配列102A及び102Nは、バーコード100の開始及び終了をマークする。図1Aに示されるように、各エレメント配列102はバーコード100において同じ物理幅を有する。 FIG. 1A shows a barcode 100 generated using a binary symbology code 39. FIG. Barcode 100 includes a set of element sequences 102A, 102B, 102C through 102N (collectively referred to herein as element sequences 102). This set of element arrays encodes the string PATENT104. Each character of string PATENT 104 is encoded using a data character, such as element array 102B encoding data character P and element array 102C encoding data A. Element arrays 102A and 102N encode delimiters indicated by *. Element arrays 102A and 102N thus mark the beginning and end of barcode 100. FIG. As shown in FIG. 1A, each array of elements 102 has the same physical width in barcode 100 .

図1Bは、エレメント配列102Aの拡大図である。エレメント配列102Aは、最小特徴サイズXのスペースであるエレメント154を含む。エレメント配列102Aは、エレメントサイズWの太いスペースであるエレメント152を含む。エレメント配列102Aは、最小特徴サイズXのバーであるエレメント156を含む。エレメント配列102Aは、太いエレメントサイズWを持つバーであるエレメント158を含む。 FIG. 1B is an enlarged view of element array 102A. Element array 102A includes elements 154 that are spaces of minimum feature size X; The element array 102A includes elements 152 that are thick spaces of element size W. FIG. Element array 102A includes elements 156 that are bars of X minimum feature size. Element array 102A includes elements 158, which are bars with a wide element size W. FIG.

図2は、多値幅シンボル体系コード128を用いて生成されたバーコード200を示す。バーコード200は、エレメント配列202A、202B、202C、202D、202Eのエレメント配列(本明細書ではまとめて文字配列202と呼ぶ)のセットを含む。このエレメント配列のセットは、文字列PATENT204をエンコードする。図1Aと同様に、文字列PATENT204の各文字は、データ文字Pをエンコードするエレメント配列202Bやデータ文字Aをエンコードするエレメント配列202Cなどのデータ文字を使用してエンコードされる。エレメント配列202Aは、バーコード200の開始区切り文字配列をエンコードする。エレメント配列202Eは、バーコード200の停止区切り文字配列をエンコードする。したがって区切り文字エレメント配列202Aと及び202Eは、バーコード200の開始と終了をマークする。 FIG. 2 shows a barcode 200 generated using the multi-level symbology code 128 . Barcode 200 includes a set of element arrays 202A, 202B, 202C, 202D, 202E (collectively referred to herein as character arrays 202). This set of element arrays encodes the string PATENT 204 . Similar to FIG. 1A, each character in string PATENT 204 is encoded using a data character, such as element array 202B encoding data character P and element array 202C encoding data character A. FIG. Element array 202A encodes the starting delimiter array of barcode 200 . Element array 202E encodes the stop delimiter array of barcode 200 . Delimiter element arrays 202A and 202E thus mark the beginning and end of barcode 200 .

図2に示されるように、各エレメント配列202A~Eはバーコード200において同じ物理幅を有する。図2は、文字列202に対するエレメント幅パターンを示す。開始区切り文字エレメント配列202Aに対するエレメント幅パターンは、11010010000である。Pデータ文字エレメント配列202Bに対するエレメント幅パターンは、11101110110である。Aデータ文字エレメント配列202Cに対するエレメント幅パターンは、10100011000である。Tデータ文字エレメント配列202Dに対するエレメント幅パターンは、11011100010である。停止区切り文字エレメント配列202Eに対するエレメント幅パターンは、1100011101011である。 As shown in FIG. 2, each element array 202A-E has the same physical width in barcode 200. As shown in FIG. FIG. 2 shows the element width pattern for string 202 . The element width pattern for the starting delimiter element array 202A is 11010010000. The element width pattern for P data character element array 202B is 11101110110. The element width pattern for A data character element array 202C is 10100011000. The element width pattern for T data character element array 202D is 11011100010. The element width pattern for stop delimiter element array 202E is 1100011101011.

バーコードを自動的にデコードするデバイスであるバーコードリーダは、一般にレーザスキャナ又は画像ベースのバーコードリーダの2つのカテゴリーに分類される。どちらのタイプのバーコードリーダでも、デコードは通常、物理的バーコード又はバーコードの個別の画像のいずれかを一端から他端まで通過する1回以上のスキャンに沿って、バーコードエレメントのエッジの1次元(1D)位置を測定することにより実行される。各スキャンは通常線分であるが、任意の連続した直線の輪郭であることもできる。 Barcode readers, devices that automatically decode barcodes, generally fall into two categories: laser scanners or image-based barcode readers. For both types of barcode readers, decoding is typically done along one or more scans across either the physical barcode or a separate image of the barcode, along the edges of the barcode element. It is performed by measuring one-dimensional (1D) position. Each scan is usually a line segment, but can be any continuous straight line contour.

バーコードの各バーコードリーダスキャンについて、個別の信号(例えばスキャン信号と呼ばれることが多い)が最初に抽出される。スキャン信号は、普通はスキャンに沿って順次サンプリングされた強度測定値からなり、本明細書ではスキャンサンプルと呼ばれる。各スキャンサンプルは、スキャンに沿った対応する位置を中心としたバーコードの小さい領域若しくはスキャンサンプル領域で測定された反射率(反射光で測定される相対的な暗さ又は明るさ)を表すことができる。スキャンに沿ったスキャンサンプル位置のパターンは、ここではスキャンサンプリング格子と呼ばれる。この格子はほぼ均一であることが多く、これはスキャンに沿ったサンプル位置間の距離若しくはスキャンサンプリングピッチは実質的に一定であることを意味する。スキャンサンプリングピッチは本質的に、通常モジュールごとのスキャンサンプル数として測定される、サンプリングされた信号のスキャンサンプリング解像度を決定する(ここで用いるモジュールは2値幅シンボル体系の最小特徴サイズと同義である)。しかしながら有効なスキャンサンプリングピッチは、バーコードが斜めから見られる又は平らではない物体(例えば瓶)に巻き付けられているために生じる遠近法効果により、スキャンの一端から他端まで実質的かつ連続的に実際に変化する可能性がある。 For each barcode reader scan of a barcode, a separate signal (eg, often called a scan signal) is first extracted. A scan signal typically consists of intensity measurements that are sampled sequentially along the scan, referred to herein as scan samples. Each scan sample shall represent the reflectance (relative darkness or lightness measured in reflected light) measured at a small area of the barcode or scan sample area centered at the corresponding position along the scan. can be done. The pattern of scan sample locations along the scan is referred to herein as the scan sampling grid. This grid is often substantially uniform, meaning that the distance between sample locations along the scan, or scan sampling pitch, is substantially constant. The scan sampling pitch essentially determines the scan sampling resolution of the sampled signal, usually measured as the number of scan samples per module (as used here module is synonymous with the minimum feature size of a binary symbology). . However, the effective scan sampling pitch is substantially continuous from one end of the scan to the other due to perspective effects caused by the bar code being viewed at an angle or wrapped around non-flat objects (e.g. bottles). may actually change.

スキャンサンプルピッチに対する各サンプルのスキャンサンプル領域の幅は、スキャンに沿ったサンプル間のオーバーラップの量に影響を与えることができる。サンプル間のオーバーラップが増加すると、スキャン信号のぼやけが増加する可能性がある。サンプル間のオーバーラップが減少すると、信号の重要な特徴を測定しない可能性が増すことがある。各スキャンサンプル領域の高さは、スキャンに対して垂直に統合される情報量を決定する。スキャンサンプルの高さが大きいと、スキャンがバーに対して垂直である場合に信号におけるエレメントのエッジがよりシャープになる(その結果として例えばスキャンは垂直方向におけるバーの冗長な情報を利用できる)。しかしながらバーに対するスキャン角度が増してバーに対して垂直でなくなるに連れて、これらのエッジはますますぼやける。 The width of the scan sample area of each sample relative to the scan sample pitch can affect the amount of overlap between samples along the scan. Increasing the overlap between samples can increase the blurring of the scan signal. Reducing the overlap between samples can increase the likelihood of not measuring important features of the signal. The height of each scan sample area determines the amount of information integrated perpendicular to the scan. A large scan sample height makes the edges of elements in the signal sharper when the scan is perpendicular to the bars (so that, for example, the scan can take advantage of the redundant information of the bars in the vertical direction). However, as the scan angle to the bar increases and is no longer perpendicular to the bar, these edges become more and more blurry.

レーザスキャナの場合、スキャン信号は、レーザが物理的バーコードを通ってスキャン輪郭に沿ってスイープするとき(例えばレーザがバーコードを通る線に沿ってスイープするとき)に、レーザの反射強度を経時的にサンプリングすることによって抽出される。各サンプル領域は、本質的にはある瞬間のレーザ「スポット」である。レーザスポットの形状は典型的に楕円形であり、主軸がスキャンに対して垂直に向けられているため、前述のサンプルエリアの幅と高さが代償となることがある。サンプリングされる信号はアナログであるため、経時的なサンプリングレートが解像度又はサンプリングピッチに影響を与えることがある。レーザの経時的なサンプリングレートは、例えばレーザの分解能(例えばレーザの小さいスポットにいかに適切に集束できるか)、最大時間サンプリングレート、及び/又はバーコードの印刷品質によって制限される場合がある。 In the case of a laser scanner, the scan signal represents the reflected intensity of the laser over time as the laser sweeps along the scan contour through the physical bar code (e.g., as the laser sweeps along a line through the bar code). extracted by sampling Each sample area is essentially a laser "spot" at one instant in time. Because the shape of the laser spot is typically elliptical, with the major axis oriented perpendicular to the scan, the aforementioned width and height of the sample area can be traded off. Since the sampled signal is analog, the sampling rate over time can affect the resolution or sampling pitch. A laser's sampling rate over time may be limited, for example, by the laser's resolution (eg, how well the laser can be focused to a small spot), the maximum temporal sampling rate, and/or the print quality of the barcode.

画像ベースのバーコードリーダの場合、バーコードの個別の画像がカメラの光学系や撮像センサ(CCDアレイなど)を使用するなどして取得される。その結果得られる画像は、バーコード全体の2Dサンプリングであってもよい。その画像の各画像サンプル又はピクセルは、それ自体画像サンプリング格子における対応するポイントを中心としたバーコードの小さい領域の平均反射率の測定値である。この格子は均一又はほぼ均一であることが多く、これは画像サンプル位置間の距離又は画像サンプリングピッチが一定であることを意味する。このサンプリングピッチが、通常は1モジュールあたりのピクセル数(「PPM」)として測定される画像の解像度を本質的に決定する。しかしながらレーザスキャンと同様に、遠近効果により有効な画像サンプリングピッチがバーコードの一端から他端まで実質的かつ連続的に実際に変化する可能性がある。 For image-based barcode readers, separate images of the barcode are captured, such as by using camera optics or an imaging sensor (such as a CCD array). The resulting image may be a 2D sampling of the entire barcode. Each image sample or pixel of the image is itself a measure of the average reflectance of a small area of the barcode centered on the corresponding point in the image sampling grid. This grid is often uniform or nearly uniform, meaning that the distance between image sample locations or the image sampling pitch is constant. This sampling pitch essentially determines the resolution of the image, usually measured as pixels per module (“PPM”). However, similar to laser scanning, perspective effects can actually cause the effective image sampling pitch to vary substantially and continuously from one end of the bar code to the other.

次に、スキャンに沿って画像をサブサンプリングする(例えば既にサンプリングされた信号をサンプリングする)ことにより、バーコードの画像全体のスキャンに対してスキャン信号を抽出できる。スキャンサンプリングピッチは、空間上のサンプリングレートによって決まる(例えばレーザスキャナのように時間ではない)。当業者は、このサブサンプリング動作を実行するために多くの方法があることを理解できる。例えば画像処理技術の投影は、スキャン線分に使用できる。投影の場合、投影の高さは本質的に各サンプルに対するスキャンサンプル領域の高さを決定し、スキャンに対して垂直な情報を統合する。別の例として、2011年12月23日に提出された「1次元信号抽出のための方法及び装置」と題する米国特許出願第13/336275号に記載された技術を使用することができ、その全開示内容は参照により本明細書に組み込まれる。例えば各スキャンサンプルための有効なスキャンサンプル領域は、レーザスキャナで使用される楕円形のスポットサイズに類似した楕円形であることができる。 The scan signal can then be extracted for scanning the entire image of the bar code by sub-sampling the image along the scan (eg, sampling the already sampled signal). The scan sampling pitch is determined by the spatial sampling rate (not time as in laser scanners, for example). Those skilled in the art will appreciate that there are many ways to perform this subsampling operation. For example, projection image processing techniques can be used on the scan line. In the case of projection, the height of the projection essentially determines the height of the scan sample area for each sample and integrates the information perpendicular to the scan. As another example, the techniques described in U.S. patent application Ser. The entire disclosure is incorporated herein by reference. For example, the effective scan sample area for each scan sample can be elliptical, similar to the elliptical spot sizes used in laser scanners.

図3は、エレメント配列302に対する例示的なスキャン信号を示しており、エレメント配列302はバーコードエレメント302A~302Kからなり、これらはまとめてバーコードエレメントと呼ぶ。スキャン304は、バーコードエレメント302に対して垂直である。図3は、スキャン304から導出されたスキャン信号306を示す。スキャン信号306は、スキャンサンプル308A、308Bから308Nまでを含み、本明細書ではこれらをスキャンサンプル308と総称する。各スキャンサンプル308は、対応する楕円形のスキャンサンプル領域s0 310Aからsn 310Nで測定された反射率を表しており、これらはスキャンライン304に沿った1D範囲内でスキャンサンプルビンs0 310Aからsn 310Nに対応している。例えば、スキャンサンプル308Aは、スキャンサンプルビン310Aに対応するスキャンサンプル領域311Aで測定された反射率を表し、スキャンサンプル308Bは、スキャンサンプルビン310Bに対応するスキャンサンプル領域311Bで測定された反射率を表し、スキャンサンプル308Nはスキャンサンプルビン310Nに対応するスキャンサンプル領域311Nで測定された反射率を表す。サンプル310Aは、完全にスペースエレメント302A内にあるスキャンサンプル領域311Aによって抽出されるので、スキャンサンプル308Aは、「h」で示される高い反射率を有する。スキャンサンプル308Bは、サンプル領域308Bが完全にスペースエレメント302A内にあるわけではなく、バーエレメント302Bからの情報も統合しているので反射率が低い。 FIG. 3 shows an exemplary scan signal for an array of elements 302, which consists of barcode elements 302A-302K, collectively referred to as barcode elements. Scan 304 is perpendicular to barcode element 302 . FIG. 3 shows scan signal 306 derived from scan 304 . Scan signal 306 includes scan samples 308 A, 308 B through 308 N, collectively referred to herein as scan samples 308 . Each scan sample 308 represents the reflectance measured at a corresponding elliptical scan sample area s0 310A through sn 310N, which are within a 1D range along scan line 304 from scan sample bins s0 310A through sn 310N. corresponds to For example, scan sample 308A represents the reflectance measured at scan sample area 311A corresponding to scan sample bin 310A, and scan sample 308B represents the reflectance measured at scan sample area 311B corresponding to scan sample bin 310B. and scan sample 308N represents reflectance measured at scan sample area 311N corresponding to scan sample bin 310N. Because sample 310A is sampled by scan sample area 311A lying entirely within space element 302A, scan sample 308A has a high reflectance indicated by "h". Scan sample 308B has low reflectance because sample area 308B is not entirely within space element 302A and also integrates information from bar element 302B.

しかしながらレーザスキャナとの重要な違いは、画像ベースのバーコードリーダを使用して抽出されたスキャン信号のサンプリング解像度は、取得した画像の基礎となるサンプリング解像度(ピクセルなど)によって本質的に制限されることである。即ち、サブサンプリングされたスキャン信号にとって各ピクセルに含まれる以外の追加の微細な詳細を回復する手段はない。米国特許出願第13/336275号に記載されているように、この制限は、1Dスキャンがピクセルの格子で方向付けられた(例えば取得した画像のピクセルの格子に対して完全に水平又は垂直な)線分である場合にしばしば悪化する。対照的に、可能な限り最良のスキャンサンプリングピッチは、基礎となる画像サンプリングピッチに等しいであろう。したがってこの制限は、より大きい軸外スキャンライン角度で改善できる。一部の実施形態では、画像サンプリングピッチの(1/sqrt(2))倍の最良可能なスキャンサンプリングピッチを達成できるのは、スキャンがピクセルの格子に対して45度に向けられた線分の場合であり、それによりバーコードが斜めに向けられた場合にしばしば見いだされるより多くの情報が反射される。したがってこの解像度の制限の一般的な欠点は、レーザスキャナで可能であるよりはるかに大きい領域をカバーして分析する能力によってしばしば補うことができる。それにもかかわらずそのような解像度の制限に対処することが往々にして必要である。 However, an important difference from laser scanners is that the sampling resolution of scanned signals extracted using image-based barcode readers is inherently limited by the underlying sampling resolution (pixels, etc.) of the acquired image. That is. That is, there is no means of recovering additional fine detail beyond that contained in each pixel for the subsampled scan signal. As described in US patent application Ser. No. 13/336,275, this limitation is that the 1D scan was oriented with a pixel grid (e.g., perfectly horizontal or perpendicular to the pixel grid of the acquired image). It is often worse when it is a line segment. In contrast, the best possible scan sampling pitch would be equal to the underlying image sampling pitch. This limitation can therefore be improved with larger off-axis scan line angles. In some embodiments, the best possible scan sampling pitch of (1/sqrt(2)) times the image sampling pitch can be achieved for line segments where the scan is oriented at 45 degrees to the grid of pixels. , which reflects more information than is often found when the barcode is oriented at an angle. This general drawback of limited resolution can therefore often be compensated for by the ability to cover and analyze much larger areas than is possible with laser scanners. Nevertheless, it is often necessary to deal with such resolution limitations.

画像ベースのバーコードリーダとレーザスキャナはいずれも、シャープな信号(例えばぼやけていない信号)を取得できない場合に問題に対処する必要がある。画像ベースのバーコードリーダもレーザスキャナも被写界深度が限られていることが多いが、被写界深度は本質的に取得した画像又はレーザスキャン信号が焦点を結ぶバーコードリーダからの距離範囲である。画像ベースのバーコードリーダは、被写界深度の制限に加えてぼやけることがある。ぼやけとは、焦点の不足やその他の効果のために1Dスキャン信号が不鮮明になる量を指す。例えば1Dスキャン信号は、低解像度画像から抽出されるプロセスのためにぼやけている場合がある。別の例として、利用可能な照明条件下で適切なコントラストの画像を取得するために必要な露出時間に対して相対的に、バーコードが貼られている物体の速度に依存する動きによって、ぼやけが引き起こされることがある。 Both image-based barcode readers and laser scanners have to deal with problems when they cannot get a sharp signal (eg, a non-blurred signal). Both image-based barcode readers and laser scanners often have a limited depth of field, which is essentially the range of distances from the barcode reader where the acquired image or laser scanning signal is focused. is. Image-based barcode readers can be blurry in addition to depth-of-field limitations. Blurring refers to the amount by which a 1D scan signal is blurred due to lack of focus or other effects. For example, a 1D scan signal may be blurred due to the process of extracting from the low resolution image. Another example is blur caused by velocity-dependent motion of the barcoded object relative to the exposure time required to obtain an image of adequate contrast under available lighting conditions. can be caused.

バーコードリーダの種類やスキャン信号の抽出方法に関係なく、バーコードをデコードする典型的な方法は、これらのスキャン信号の1つ以上に沿ってすべてのエレメントエッジ(境界とも呼ばれる)の1D位置を検出及び測定することである。スキャンに沿って検出された各エッジの位置は、スキャン信号内のそれらの分数位置とスキャンサンプリングピッチの積である、そのようなエッジを使用してバーコードエレメントの幅を直接推測することができ、次にこれらのバーコードエレメントをさらに個別のエレメントサイズに分類できる(例えば使用するシンボル体系の種類に応じて、細、太、1X、2Xなど)。しかしながら多値幅シンボル体系ではより一般的に、同じ極性の隣接するエッジ間の連続した距離(明から暗又は暗から明への遷移)が計算され、(1X、2Xなどに)分類され、次に当業界で知られているように、「エッジから類似エッジ」パターンから文字を推定するために使用される。この間接的な計算を使用して、印刷プロセスのために、典型的にはインクの広がりのためにバーが太くスペースが細く、又はその逆に見える顕著な印刷太りによる誤分類(誤認識)を回避することができる。2値幅シンボル体系では、バーとスペースを別々に分類することにより、印刷太りを回避できる。 Regardless of the type of barcode reader or method of extracting the scan signals, a typical method of decoding barcodes is to determine the 1D positions of all element edges (also called boundaries) along one or more of these scan signals. It is to detect and measure. The position of each edge detected along the scan is the product of their fractional position in the scan signal and the scan sampling pitch. Such edges can be used to directly infer the width of a barcode element. These barcode elements can then be further classified into discrete element sizes (eg, thin, thick, 1X, 2X, etc., depending on the type of symbology used). However, more generally in multi-level symbologies, consecutive distances between adjacent edges of the same polarity (light-to-dark or dark-to-light transitions) are computed, sorted (1X, 2X, etc.) and then It is used to infer characters from "edges to similar edges" patterns, as is known in the art. This indirect calculation is used to correct misclassification (misrecognition) due to noticeable print fatness, which typically appears as thick bars and thin spaces due to ink spreading, or vice versa, due to the printing process. can be avoided. Binary width symbology avoids print fat by classifying bars and spaces separately.

エレメントエッジは、当業界で知られている多くの技術を用いて検出でき、これには例えば最大一次導関数の位置を特定する個別の方法、又は二次導関数のゼロ交差、及び/又は分解されたエレメントの境界を特定する波形整形法が含まれる。 Element edges can be detected using a number of techniques known in the art, including, for example, discrete methods of locating the maximum first derivative, or zero crossings of the second derivative, and/or decomposition A wave shaping method is included that identifies the boundaries of the truncated elements.

しかしながらエッジの検出は、画像取得ノイズと印刷欠陥により複雑になる場合がある。画像取得ノイズ及び/又は印刷欠陥によって偽エッジが検出されることがあり、低コントラスト(照明不足、レーザ強度などのため)又はぼやけ(動きや焦点不良のため)などの問題も引き起こして、特定のエッジが全く検出されなくなることがある。真のエッジに対する測定感度を高めるために、信号のプレフィルタリング(平滑化など)又は強調(ぼやけ除去、シャープ化など)、偽エッジ又はピークと谷のフィルタリングなどの様々な方法が考案されている。しかしながらそのような方法を採用しても、信号解像度が低下するとより大きい測定感度が必要となり、偽エッジを真のエッジから区別するとともに、それらのエッジの位置を必要な精度で測定する問題の増加とのバランスを取ることが一層困難になる。 Edge detection, however, can be complicated by image acquisition noise and print defects. Image acquisition noise and/or print defects can cause false edge detection, and can also cause problems such as low contrast (due to poor lighting, laser intensity, etc.) or blurring (due to motion or poor focus), making certain Edges may not be detected at all. Various methods have been devised to increase the sensitivity of the measurement to true edges, such as signal pre-filtering (smoothing, etc.) or enhancement (deblurring, sharpening, etc.), filtering false edges or peaks and valleys. However, even with such a method, the reduced signal resolution requires greater measurement sensitivity, increasing the problem of distinguishing false edges from true edges and measuring their locations with the required accuracy. becomes more difficult to balance.

同じバーコードにわたる複数のスキャン間にデコードされた文字又はエッジ情報を結合若しくは統合する機能を追加すると、有用であり得る(バーコードに局所的な損傷がある場合など)。しかしながらそのような統合を用いても、エッジベースの技術を使用する画像ベースのデコーダは、画像品質、焦点、及びピクセルの格子に対するバーコードの向きに依存してスキャンラインに対して1モジュールあたり1.3~1.5ピクセル(PPM)で障害が発生し始める傾向がある。 Adding the ability to combine or integrate decoded characters or edge information between multiple scans over the same barcode can be useful (such as when the barcode is locally damaged). However, even with such integration, image-based decoders using edge-based techniques still require one module per scanline depending on image quality, focus, and orientation of the barcode with respect to the grid of pixels. .3-1.5 pixels (PPM) tend to start to fail.

本質的に、スキャン信号の有効解像度が低下すると、スキャンサンプリング解像度とぼやけの両方を伴い、バーコードの個々のエレメントを分解することが難しくなる。特に細エレメントは分解するのが難しく、ある解像度ではそのような細エレメントは最終的にそれらの間の遷移は全く明白でないポイントで互いに溶け合う。分解の困難さは、特にサンプリング不足の信号で問題になる。例えば2つのエレメント間(例えばバーとスペースの間)の遷移がスキャンサンプル中心(正確には例えばサンプル位相ずれている)に向かって移動すると、その結果スキャンサンプルは個々のバーとスペースの高い又は低い反射率の平均反射率であるよりも、事実上両エレメントの平均反射率であるサンプル値となる。問題のある例として、解像度は1モジューあたりほぼ1サンプルであり、複数の細エレメントが位相ずれた連続サンプルと一致するため、スキャン信号は均一な反射率値を持ちエッジは全く明白ではない。 Essentially, as the effective resolution of the scan signal decreases, it becomes more difficult to resolve the individual elements of the bar code, accompanied by both scan sampling resolution and blurring. Fine elements are particularly difficult to resolve, and at some resolution such fine elements eventually blend together at points where the transitions between them are not at all apparent. The difficulty of decomposition is especially problematic for undersampled signals. For example, if a transition between two elements (e.g. between a bar and a space) is moved towards the scan sample center (exactly e.g. 1/2 sample out of phase), then the scan sample will be the result of the individual bars and spaces . Rather than being the average reflectance of the high or low reflectance, the sample value is effectively the average reflectance of both elements. As a problematic example, the resolution is approximately 1 sample per module, and multiple fine elements coincide with successive samples that are 1/2 out of phase, so the scan signal has uniform reflectance values and edges are not quite obvious. do not have.

エッジの検出とノイズとの区別の問題に加えて、そのような遷移のスキャン位置を測定できる精度も低下する可能性があり、これはサンプリング解像度(例えば各エッジ遷移のサンプルは遷移が発生する場所を補間するサンプルに比べて少ないという事実のため)及び/又はぼやけ(例えばぼやけたエッジに沿った緩やかな遷移はノイズの存在下では測定がより困難になるため)を伴う。その結果、例えば細いバーと太いバーをエッジから区別することが不可能になることがある。ぼやけによる不正確さを処理しようとする技術として、例えばエッジペアの位置を使用して各エレメントの中心の位置を特定することに集中することが考案された。各エレメントの中心は少なくともぼやけの効果に対してはより安定であり、エッジ間の距離よりも、むしろこれらの中心位置の間の相対的位置を使用して、シンボルをデコードする。しかしながら測定されたエレメントエッジ境界の中心がより安定であるのは、通常は明白なエッジ位置が反対方向の誤差を有する場合に限られる。例えば明白なエッジ位置は十分な解像度(例えば1.5PPM以上)を持つぼやけたエレメントに対して反対方向の誤差を持つことがあるが、信号がサンプリング不足の場合は必ずしもそうではなく、量子化効果によるエッジ誤差はしばしば圧倒的にピクセルの格子とエレメント境界に対するスキャンサンプリング格子の局所的位相(相対位置)の関数である。 In addition to the problem of detecting edges and distinguishing them from noise, the accuracy with which the scan positions of such transitions can be measured can also be degraded, and this is due to the sampling resolution (e.g. samples of each edge transition are taken from where the transition occurs). ) and/or blurring (eg, because gradual transitions along blurred edges are more difficult to measure in the presence of noise). As a result, it may be impossible to distinguish, for example, thin and thick bars from edges. Techniques that attempt to deal with blurring inaccuracies have been devised to focus on locating the center of each element using, for example, the location of edge pairs. The center of each element is more stable, at least to the effects of blurring, and the relative positions between these center locations rather than the distance between edges are used to decode the symbol. However, the center of the measured element edge boundary is usually more stable only if the apparent edge positions have errors in opposite directions. For example, obvious edge locations may have errors in the opposite direction to blurred elements with sufficient resolution (e.g., 1.5 PPM or better), but this is not necessarily the case if the signal is undersampled, and quantization effects Edge error due to is often overwhelmingly a function of the local phase (relative position) of the scan sampling grid with respect to the grid of pixels and element boundaries.

解像度の制限を軽減する努力において、太エレメントの中心と幅を決定した後で欠けている細エレメントの位置を推定することを試みるために幾つかの方法が考案された。これらの方法は太エレメント間の細エレメントの数に対する制約を使用でき、この制約は2値幅バーコードと多値幅バーコードで異なるが一般的である。エッジから文字を認識しようと試みる方法も考案されたが、これは検出されないエッジも許容する。例えば確率論的技術を採用してエッジベースの(幾何学的に)変形可能なテンプレートのマッチングによって文字をデコードできる。しかしながらこのような方法は通常は十分なサンプリング解像度を持つぼやけたバーコードのために考案されており、サンプリング不足のバーコードのためではない。事実、そのような技術は、標準のエッジベースのデコード技術は信号が焦点にあると見なされる場合に使用すべきであると指定することがある。エッジ(境界)の決定に依存し続ける場合、SPMが1モジュールあたり1.1サンプルを下回るほど減少すると、たとえ太エレメントでも幅の特定と測定が困難になる。さらに、一部のアルゴリズムは、産業用バーコードリーダでの実用に十分なほど効率的に実装できない。 In an effort to alleviate the resolution limitation, several methods have been devised to attempt to estimate the location of the missing thin element after determining the center and width of the thick element. These methods can use a constraint on the number of thin elements between thick elements, which is different for binary and multi-level barcodes but is common. Methods have also been devised that attempt to recognize characters from edges, but this also allows for undetected edges. For example, probabilistic techniques can be employed to decode characters by edge-based (geometrically) deformable template matching. However, such methods are usually devised for blurry barcodes with sufficient sampling resolution, not undersampled barcodes. In fact, such techniques may specify that standard edge-based decoding techniques should be used when the signal is considered to be in focus. If we continue to rely on edge (boundary) determination, it becomes difficult to identify and measure the width of even the thickest elements as the SPM decreases below 1.1 samples per module. Additionally, some algorithms cannot be implemented efficiently enough for practical use in industrial barcode readers.

これらの問題をさらに悪化させるのは、レーザスキャナの代わりに(例えばカバレッジが広いというメリットのため)画像ベースのバーコードリーダを採用する傾向と、バーコードリーダのサイズを小さくし、その数を最小限に抑えることによって画像ベースのリーダシステムのコストを削減する傾向である。例えばこれは物流アプリケーションの場合で、幅の広いコンベアベルト上のしばしばランダムな方向に向けられた箱や荷物に貼られたバーコードを読み取らなければならない。バーコードリーダの数を最小化するには、各バーコードリーダがカバーしなければならない体積の量(面積や奥行きなど)を最大化する必要がある。これにより相対画像解像度(PPM)が減少し、(被写界深度の制限により)ぼやけが増加するが、いずれも有効な画像サンプリング解像度を低下させる。 Compounding these problems is the trend to employ image-based barcode readers instead of laser scanners (e.g., due to their broader coverage benefits) and the reduction in size and number of barcode readers. There is a trend to reduce the cost of image-based reader systems by minimizing the cost. This is the case, for example, in logistics applications, where barcodes must be read on often randomly oriented boxes or parcels on wide conveyor belts. Minimizing the number of barcode readers requires maximizing the amount of volume (such as area and depth) that each barcode reader must cover. This reduces relative image resolution (PPM) and increases blurring (due to depth-of-field limitations), both of which reduce the effective image sampling resolution.

単純にぼやけたバーコードを超えて、バーコードリーダの解像度不足のデコード能力を改善する必要がある(例えば特に画像ベースのバーコードリーダの場合)。さらに、エッジベースの方法には低解像度(例えば1.1PPM未満)で困難があるため、スキャン信号値を直接分析してバーコードをデコードできる方法が必要である。これらの制限を克服しようとした技術は、パターンマッチング技術を使用することである。一部のパターンマッチング技術は、バーコード内の各文字を1D変形可能テンプレートとしてモデリングすることによりバーコードのデコードを試みる。1D変形可能テンプレートは、水平方向にスケーリングし(例えば未知のモジュールサイズに対応)、水平方向に平行移動し(例えばスキャンラインに沿った不確実な位置に対応)、垂直方向に伸縮し(例えば未知のコントラストに対応)、垂直方向に平行移動する(例えば未知の背景照明強度に対応)ことができる。しかしながらこのようなパターンマッチング技術は、バーコードの激しいサンプリング不足、例えば1.0PPM以下の量子化効果には対応できない。例えばサンプリング不足により、パターンはテンプレートに対して認識されずに変形する可能性がある。 Beyond simply blurry barcodes, there is a need to improve the low-resolution decoding capabilities of barcode readers (e.g., especially for image-based barcode readers). Moreover, since edge-based methods have difficulty at low resolutions (eg, less than 1.1 PPM), there is a need for methods that can directly analyze scan signal values to decode barcodes. A technique that has attempted to overcome these limitations is to use pattern matching techniques. Some pattern matching techniques attempt to decode barcodes by modeling each character in the barcode as a 1D deformable template. The 1D deformable template can be horizontally scaled (e.g., to accommodate unknown module sizes), horizontally translated (e.g., to uncertain positions along the scanline), and vertically stretched (e.g., unknown ), and translated vertically (eg, for unknown background illumination intensity). However, such pattern matching techniques cannot cope with the severe undersampling of barcodes, eg, quantization effects below 1.0 PPM. For example, due to under-sampling, the pattern can be unrecognizably distorted relative to the template.

バーコードは一連のバーコード単位で構成されていると見なすことができ、各単位は関連する幅とバイナリエンコード値がある。例えば2値幅バーコードの場合、バーコード単位は、細い「X」又は太い「W」の2つの幅のいずれかを持つことができる。別の例として、多値幅バーコードの場合、バーコード単位はXの倍数nに相当する幅を持つことができる。バイナリエンコード値は、バーコード単位がバー又はスペースの一部であるかどうかを示すことができる。例えばバーコード単位がバーに対するものであることを示すためにBを使用し、スペースに対してはSを使用することができる。一部の実施形態では数値を使用することができ、例えばB=0及びS=1、又はB=-1及びS=1である。したがって、各エレメント幅パターンは、単位幅パターン及び単位エンコードパターンに関連付けることができる。 A barcode can be viewed as consisting of a series of barcode units, each unit having an associated width and binary encoded value. For binary width barcodes, for example, a barcode unit can have either of two widths, a thin "X" or a wide "W". As another example, in the case of multi-value width barcodes, a barcode unit can have a width corresponding to a multiple of X, n. A binary encoded value can indicate whether a barcode unit is part of a bar or space. For example, B can be used to indicate that the barcode unit is for bars, and S for spaces. Numeric values may be used in some embodiments, such as B=0 and S=1, or B=−1 and S=1. Therefore, each element width pattern can be associated with a unit width pattern and a unit encoding pattern.

幾つかの例では、バーコード単位はエレメントであることができ、その場合は単位幅パターンはエレメント幅パターンであり、関連する単位エンコードパターンはバー値とスペース値が交互するパターン(例えばBSBSBSBSB)で、バー又はスペースの適当な開始値を持つ(例えばエレメントは文字間ギャップを除き、常にバーとスペースの間で交互するため)。 In some examples, the barcode unit can be an element, in which case the unit width pattern is an element width pattern and the associated unit encoding pattern is a pattern of alternating bar and space values (e.g., BSBSBSBSB). , bars, or spaces with appropriate starting values (eg, because elements always alternate between bars and spaces, except for inter-character gaps).

幾つかの例では、各バーコード単位は、単位幅パターンを均一にするために選択される。例えば2値幅バーコードの場合、バーコード単位をエレメントより小さくすることはできないが、これは一般に太エレメントをさらに整数個の細エレメントに減らすことができないためである。例えば多値幅バーコードの場合、各エレメントの幅は整数個のモジュール幅からなるため、単位はモジュールと同じく小さくすることができる。モジュール単位を使用すると、幅の狭い均一な単位幅パターンが得られる。一部の実施形態では、特定の多値幅単位幅パターンは均一なモジュールのある配列からなり、関連する単位エンコードパターンは、その配列のエンコードされたデータを一緒に表すバー値とスペース値からなる。例えばXXXXXXXXXXXは、長さ11のモジュールのすべての単位幅パターンに対する単位幅パターンであるが、単位エンコードパターンはエレメント幅パターンごとに異なる。例えばBSBSSSBBSSSは、11Xエレメント幅パターン111323に対するユニークな単位エンコードパターンである。 In some examples, each barcode unit is selected to uniform the unit width pattern. For example, in the case of a binary width barcode, the barcode unit cannot be smaller than the element, because generally the thick element cannot be further reduced to an integral number of thin elements. For example, in the case of a multi-value width barcode, the width of each element consists of an integral number of module widths, so the unit can be made as small as the module. The use of modular units results in narrow uniform unit width patterns. In some embodiments, a particular multilevel unit width pattern consists of an array of uniform modules, and the associated unit encoding pattern consists of bar and space values that together represent the encoded data for that array. For example, XXXXXXXXXXXX is the unit width pattern for all unit width patterns for modules of length 11, but the unit encode pattern is different for each element width pattern. For example, BBSSSSBBSSS is a unique unit encoding pattern for the 11X element width pattern 111323.

一部の実施形態では、2値幅シンボル体系の場合、エレメント幅パターン内の情報は、直接単位幅パターンによってエンコードされ、単位エンコードパターンは交互する。例えば前述のように、単位エンコードパターンはバー値とスペース値が交互するパターン(例えばBSBSBSBSB)である。一部の実施形態では、多値幅シンボル体系の場合にエレメント幅パターン内の情報は、単位エンコードパターンによって間接的にエンコードされ、単位幅パターンは均一な最小特徴からなる。例えばXXXXXXXXXXXは長さ11のモジュールのすべての単位幅パターンに対する単位幅パターンであるため、これ以上の情報がないとエレメント幅パターンを推測することはできないので、エレメント幅パターンを間接的にエンコードする。しかし単位幅パターン(例えば11Xエレメント幅パターン111323に対するBSBSSSBBSSSなど)は、11個の特徴(例えば11個のBsとSs)を含む。 In some embodiments, for binary width symbologies, the information in the element width patterns is encoded directly by the unit width patterns, and the unit encoding patterns alternate. For example, as described above, the unit encoding pattern is a pattern of alternating bar values and space values (eg, BSBSBSBSB). In some embodiments, the information in the element width pattern is indirectly encoded by the unit encoding pattern for multi-level width symbologies, the unit width pattern consisting of uniform minimum features. For example, XXXXXXXXXXXX is the unit width pattern for all unit width patterns of a module of length 11, so it indirectly encodes the element width pattern, as the element width pattern cannot be inferred without more information. However, a unit width pattern (eg, BBSSSSBBSSS for 11X element width pattern 111323) contains 11 features (eg, 11 Bs and Ss).

有利なことに、エレメント単位を使用して2値幅シンボル体系又は多値幅シンボル体系を分析すると、シンボル体系におけるユニークな各データ文字をユニークな単位(例えばエレメント)配列に関連付けることができる。単位エンコードパターンは、すべての文字に対して同じサイズが交互するするバイナリパターンであることができる。モジュール単位を使用して多値幅シンボル体系を分析すると、シンボル体系内のユニークな各データ文字をユニークな単位(モジュールなど)パターンに関連付けることができ、単位(モジュールなど)配列はすべての文字で同じであることができる。 Advantageously, analyzing binary or multi-level symbologies using element units allows each unique data character in the symbology to be associated with a unique unit (eg, element) array. The unit encoding pattern can be an alternating binary pattern of the same size for all characters. Analyzing a multi-level symbology using modular units allows each unique data character in the symbology to be associated with a unique unit (e.g. module) pattern, and the unit (e.g. module) sequence is the same for all characters. can be

例えば2値幅シンボル体系コード39に対してモジュール単位を使用する場合、「A」に対するユニークな単位幅パターンはそのエレメント幅パターンWXXXXWXXWであり、「B」に対するユニークな単位幅パターンはそのエレメント幅パターンXXWXXWXXWである。しかしすべてのコード39データ文字は、同じ長さ9のバイナリ単位エンコードパターンBSBSBSBSBに関連付けられている。コード128についても同様に、エレメント単位を使用する場合、「A」に対するユニークな単位幅パターンはそのエレメント幅パターン111323であり、「B」に対する単位幅パターンはそのエレメント幅パターン131123である。しかしすべてのコード128文字は同じ長さ6のバイナリ単位エンコードパターンBSBSBSと関連付けられている。 For example, when using modular units for binary symbology code 39, the unique unit width pattern for "A" is its element width pattern WXXXXWXXW, and the unique unit width pattern for "B" is its element width pattern XXWXXWXXW. is. However, all Code 39 data characters are associated with the same length 9 binary unit encoded pattern BBSBSBSSB. Similarly for code 128, when element units are used, the unique unit width pattern for "A" is its element width pattern 111323, and the unit width pattern for "B" is its element width pattern 131123. However, all code 128 characters are associated with the same length 6 binary unit encoding pattern BSBSBS.

別の例として、多値幅シンボル体系コード128にモジュール単位を使用する場合、すべての文字に対する単位幅パターンは同じ長さ11の均一な配列XXXXXXXXXXXであるが、「A」に対するユニークな単位エンコードパターンはBSBSSSBBSSSである(例えばエレメント幅パターン111323に対応)、「B」に対するユニークな単位エンコードパターンはBSSSBWBBSSSである(例えばエレメント幅パターン131123に対応)。 As another example, when using modular units for the multi-level symbology code 128, the unit width pattern for all characters is the same uniform array of length 11 XXXXXXXXXX, but the unique unit encoding pattern for "A" is BBSSSSBBSSS (eg, corresponding to element width pattern 111323), the unique unit encoding pattern for "B" is BSSSBWBBSSS (eg, corresponding to element width pattern 131123).

バーコードとバーコード文字を単位として構成されるように表現することにより、サンプリング量子化効果を数学的にモデル化できる。例えばモデルは以下に基づいて生成できる。 Sampling quantization effects can be mathematically modeled by representing barcodes and barcode characters as structured units. For example, a model can be generated based on:

(1)(a)バーコードエレメントの連続配列(例えば文字間ギャップなし)、及び(b)エレメント幅パターンとして表される各バーコードエレメントに対する関連する量子化幅。
(2)サンプル座標においてバーコードエレメント配列の最初のエレメントの開始位置(例えばサンプリングピッチの分数において、小数部分は本質的にサンプリング格子に対する開始「位相」である)。
(3)該当する場合、サンプルの分数で測定された最小特徴サイズ(X)と太エレメント幅(W)(又は同等に細太比)。
(1) (a) a contiguous array of barcode elements (eg, no inter-character gaps), and (b) an associated quantization width for each barcode element represented as an element width pattern.
(2) the starting position of the first element of the barcode element array in sample coordinates (eg, in fractions of the sampling pitch, the fractional part is essentially the starting "phase" relative to the sampling grid);
(3) Minimum feature size (X) and wide element width (W) measured in fractions of samples (or equivalently thin-to-wide ratio), if applicable.

このような情報を使用すると、これらのバーコードエレメントと生信号との関係は、単一のマトリックス方程式を使用して表現できる。
A*b=s 式1
ここで、
・Aは、スキャンに沿った単位境界の位置を定義する、単位格子に依存する単位サンプリング係数マトリックス、即ちサンプリング係数の疎なマトリックスで、次のものからなる。
〇バーコードエレメント配列にまたがる単位サブ配列
〇最小特徴サイズ、X
〇太エレメントサイズ、W(該当する場合)
〇配列内の最初のバーコードエレメントの開始位置。
・bは、バー値とスペース値のバイナリ単位のエンコードパターンである。
・sは、正規化されたスキャンサンプルを表すベクトルである。
Using such information, the relationship between these barcode elements and the raw signal can be expressed using a single matrix equation.
A*b=s Equation 1
here,
A is the unit cell-dependent unit sampling coefficient matrix, ie a sparse matrix of sampling coefficients, defining the position of the unit boundary along the scan, consisting of:
〇Unit sub-array spanning the barcode element array 〇Minimum feature size, X
〇Thick element size, W (if applicable)
o The starting position of the first barcode element in the array.
• b is an encoded pattern in binary units of bar and space values.
• s is a vector representing the normalized scan samples.

サンプリング係数マトリックスAの各行は1サンプルに対応でき、各列は1単位(例えば多値幅バーコードに対するモジュール、又は2値幅バーコードに対するエレメント)に対応できる。各行の値を選択して1.0に追加し、各列の値を選択してそれぞれの単位(モジュール又はエレメントなど)の幅(例えばX又はW)に追加できる。 Each row of the sampling coefficient matrix A can correspond to one sample, and each column can correspond to one unit (eg, module for multi-level barcodes, or element for binary-level barcodes). Each row value can be selected to add to 1.0 and each column value can be selected to add to the width (eg X or W) of the respective unit (such as module or element).

i番目の正規化されたベクトルのサンプルs,s(i)は、次式で与えることができる。
s(i)=B+[(r(i)-l(i))×(S-B)]/(h(i)-l(i)) 式2
ここで、
・rは、サンプルビンにわたるスキャン信号の連続部分を表すベクトルである。
・hとlは、rの信号包絡線の離散近似を表す値のベクトルである。
〇h(i)は、サンプルiにおけるスペースの反射率の推定値である。
〇l(i)は、サンプルiにおけるバーの反射率に対する推定値である。
The i-th normalized vector sample s,s(i) can be given by
s(i)=B+[(r(i)-l(i))×(SB)]/(h(i)-l(i)) Equation 2
here,
• r is a vector representing the continuous portion of the scan signal across the sample bins.
• h and l are vectors of values representing a discrete approximation of the signal envelope of r.
o h(i) is the estimate of the space reflectance at sample i.
o l(i) is the estimate for the reflectance of the bar at sample i.

ベクトルrは、単位サブ配列全体の位置範囲をカバーすると想定できる。一部の実施形態では、rの値は測定された反射率値であることができる。Aの各行iは、スキャンサンプルに対する反射率の測定値を得るためにサンプルiに対してビンによって統合された単位幅パターン内のバーコード単位のそれぞれのパーセンテージのベクトルであることができる。一部の実施形態では、単位係数は単位格子に依存し、単位格子は単位間の遷移の位置を表すことができる。単位格子は、位相(例えば開始点)、最小特徴サイズ、印刷太り、細太比(ある場合)及び/又は同種のものによって影響されることがある。 The vector r can be assumed to cover the position range of the entire identity subarray. In some embodiments, the value of r can be a measured reflectance value. Each row i of A can be a vector of respective percentages of barcode units in the unit width pattern binned for sample i to obtain reflectance measurements for the scanned sample. In some embodiments, the unit coefficients depend on the unit cell, and the unit cell can represent the location of transitions between units. A unit cell may be affected by phase (eg, starting point), minimum feature size, print fatness, thickness ratio (if any), and/or the like.

図4は、一部の実施形態による、1モジュールあたり1サンプル(「SPM」)及びバーコードをデコードするための0位相での多値幅バーコードに対する例示的なスキャンラインサブサンプリング及びサンプリング係数を示す。図4は、バーコードモジュールb1402B、b2 402C、b3 402D、b4 402E、b5 402F、b6 402G、b7 402H、b8 402I、b9 402J、b10 402K、及びb11 402LからなるAデータ文字モジュール400を示す。文字単位402は、これらのモジュールの他に、先行文字の最後のモジュールb0 402A(スペース)と、先行文字の最初のモジュールb12 402M(バー)を含む。 FIG. 4 shows exemplary scanline subsampling and sampling factors for a multi-level barcode with one sample per module (“SPM”) and 0 phase for decoding the barcode, according to some embodiments; . FIG. 4 shows an A data character module 400 consisting of barcode modules b1 402B, b2 402C, b3 402D, b4 402E, b5 402F, b6 402G, b7 402H, b8 402I, b9 402J, b10 402K, and b11 402L. Character unit 402 includes, in addition to these modules, a preceding character last module b0 402A (space) and a preceding character first module b12 402M (bar).

図4は、スキャン404から導出されたスキャン信号406を示す。スキャン信号406は、本明細書でスキャンサンプル408と総称するスキャンサンプル408A、408Bから408Nまで含む。スキャンサンプル408は、対応するスキャンサンプルビンs0 410A、s1 410Bからs12 410Nまで含み、これらはスキャンサンプルビン410と総称される。例えばスキャンサンプル408Aは、スキャンサンプルビンs0 410Aに対するスキャンサンプルを表す。各スキャンサンプルビン410は文字単位402の開始と位置合わせされるので、スキャンサンプルビン410は文字単位402に対してゼロ(0)位相を有する。図4は、単位サンプリング係数マトリックス420も示している。単位サンプリング係数マトリックス420の各行s1 412Aからs11 412Nmまで(本明細書ではまとめて行412と呼ぶ)は1サンプルに対応し、単位幅パターン内の文字単位に対するサンプリング係数のベクトルである。単位サンプリング係数マトリックス420の各列422Aから422Nまで(まとめて列422)は1単位(例えばモジュール)に対応する。図4に示すように、サンプリングピッチは正確にモジュール幅であるため、各スキャンサンプルビン410の幅はバーコード文字400のモジュールの幅に対応する。単位サンプリング係数マトリックス420は、1を含んで示された場所以外のすべての場所にゼロを含む(簡単にするためにすべてのゼロが示されていない)。行s1 412Aは、スキャンサンプルビンs1 410Bがモジュールb1 402B全体と一致するので、第2列422Bに1を含み、行s2 412Bは、スキャンサンプルビンs2 410Bがモジュールb2 402C全体と一致するので、第3列422Cに1を含む、などと続く。 FIG. 4 shows scan signal 406 derived from scan 404 . Scan signal 406 includes scan samples 408 A, 408 B through 408 N, collectively referred to herein as scan samples 408 . Scan samples 408 include corresponding scan sample bins s 0 410 A, s 1 410 B through s 12 410 N, collectively referred to as scan sample bins 410 . For example, scan sample 408A represents the scan sample for scan sample bin s0 410A. Since each scan sample bin 410 is aligned with the start of character unit 402 , scan sample bin 410 has zero (0) phase with respect to character unit 402 . FIG. 4 also shows unit sampling factor matrix 420 . Each row s1 412A through s11 412Nm (collectively referred to herein as rows 412) of unit sampling coefficient matrix 420 corresponds to one sample and is a vector of sampling coefficients for character units within a unit width pattern. Each column 422A through 422N (collectively columns 422) of the unit sampling coefficient matrix 420 corresponds to one unit (eg, module). As shown in FIG. 4, the sampling pitch is exactly the module width, so the width of each scan sample bin 410 corresponds to the module width of the barcode character 400 . Unit sampling coefficient matrix 420 contains zeros everywhere except those shown containing ones (all zeros are not shown for simplicity). Row s1 412A contains a 1 in the second column 422B because scan sample bin s1 410B matches entire module b1 402B, and row s2 412B contains a 1 in the second column 422B because scan sample bin s2 410B matches entire module b2 402C. 3 contains a 1 in column 422C, and so on.

図5は、一部の実施形態による、バーコードをデコードするための1SPM及び0位相での多値幅バーコードに対する例示的なスキャンラインサブサンプリング及びサンプリング係数を示す。図5は、Bデータ文字エレメント配列500を示しており、これはバーコードモジュールb1 502B、b2 502C、b3 502D、b4 502E、b5 502F、b6 502G、b7 502H、b8 502I、b9 502J、b10 502K及びb11 502Lからなる。文字単位502は、これらのモジュールの他に、先行文字b0 502Aの最後のモジュール(スペース)と、先行文字b12 502Mの最初のモジュール(バー)を含む。 FIG. 5 shows exemplary scanline subsampling and sampling factors for a multi-level width barcode at 1 SPM and 0 phase for decoding the barcode, according to some embodiments. FIG. 5 shows a B data character element array 500 which includes barcode modules b1 502B, b2 502C, b3 502D, b4 502E, b5 502F, b6 502G, b7 502H, b8 502I, b9 502J, b10 502K and b11 502L. Character unit 502 includes, in addition to these modules, the last module (space) of preceding character b0 502A and the first module (bar) of preceding character b12 502M.

図5は、スキャン504から導出されたスキャン信号506を示す。スキャン信号506は、本明細書でスキャンサンプル508と総称するスキャンサンプル508A、508Bから508Nまで含む。スキャンサンプル508は、対応するスキャンサンプルビンs0 510A、s1 510Bからs12 510Nまでに対するサンプルを表す。例えばスキャンサンプル508Aは、スキャンサンプルビンs0 510Aに対するスキャンサンプルを表す。図5は、単位サンプリング係数マトリックス520も示す。各スキャンサンプル510はバーコードモジュール502の開始と位置合わせされるので、単位502はスキャンサンプルビン510に対してゼロ(0)位相を有する。単位サンプリング係数マトリックス520の各行s1 512Aからs11 512Nまで(本明細書ではまとめて行512と呼ぶ)は1サンプルに対応し、単位幅パターン内のバーコード単位に対するサンプリング係数のベクトルである。単位サンプリング係数マトリックス520の各列522Aから522Nまでは1単位(例えばモジュール)に対応する。図4のように、各スキャンサンプルビン510の幅は、バーコード500のモジュールの幅に対応する。単位サンプリング係数マトリックス520は、1を含んで示された場所以外のすべての場所にゼロを含む(簡単にするためにすべてのゼロが示されていない)。行s1 512Aは、スキャンサンプルビンs1 510Bがモジュールb1 502B全体と一致するので、第2列522Bに1を含み、行s2 512Bは、スキャンサンプルビンs2 510Bがモジュールb2 502C全体と一致するので、第3列522Cに1を含む、などと続く。結果の単位サンプリング係数マトリックス520は、図4の単位サンプリング係数マトリックス420と同じであることに留意されたい。なぜなら、図4と同様に、単位502は、スキャンサンプルビン510に対してゼロ位相にあり、モジュールサイズはモジュールサイズと正確に等しいからである。 FIG. 5 shows scan signal 506 derived from scan 504 . Scan signal 506 includes scan samples 508 A, 508 B through 508 N, collectively referred to herein as scan samples 508 . Scan samples 508 represent samples for corresponding scan sample bins s0 510A, s1 510B through s12 510N. For example, scan sample 508A represents the scan sample for scan sample bin s0 510A. FIG. 5 also shows unit sampling factor matrix 520 . Since each scan sample 510 is aligned with the start of barcode module 502 , unit 502 has zero (0) phase with respect to scan sample bin 510 . Each row s1 512A through s11 512N (collectively referred to herein as rows 512) of unit sampling coefficient matrix 520 corresponds to one sample and is a vector of sampling coefficients for barcode units within a unit width pattern. Each column 522A through 522N of the unit sampling coefficient matrix 520 corresponds to one unit (eg, module). As in FIG. 4, the width of each scan sample bin 510 corresponds to the width of a module of barcode 500 . Unit sampling coefficient matrix 520 contains zeros everywhere except those shown containing ones (all zeros are not shown for simplicity). Row s1 512A contains a 1 in the second column 522B because scan sample bin s1 510B matches entire module b1 502B, and row s2 512B contains a 1 in the second column 522B because scan sample bin s2 510B matches entire module b2 502C. 3 contains a 1 in column 522C, and so on. Note that the resulting unitary sampling factor matrix 520 is the same as the unitary sampling factor matrix 420 of FIG. 4 because unit 502 is at zero phase with respect to scan sample bin 510 and module size is exactly equal to module size.

図6は、一部の実施形態による、バーコードをデコードするための1SPM及び0.5位相での多値幅バーコードの例示的なスキャンラインサブサンプリング及びサンプリング係数を示す。図6は、図4からのAデータ文字モジュール配列400を示す。図6は、スキャン604から導出されたスキャン信号606を示す。スキャン信号606は、スキャンサンプル608A、608Bから608Nまでを含み、本明細書ではまとめてスキャンサンプル608と呼ぶ。スキャンサンプル608は、対応するスキャンサンプルビンs0 610A、s1 610Bからs11 610Nまでに対するサンプルを表す。例えばスキャンサンプル608Aは、スキャンサンプルビンs0 610Aに対するスキャンサンプルを表しており、これはその面積の半分がb0によってカバーされ、その面積の半分がb1によってカバーされるため、高と低の間である。各単位402は、各スキャンサンプルビン610の開始がキャンサンプリングピッチビンの幅の半分だけオフセットされ、サンプリングピッチはモジュールサイズと正確に等しいので、単位402はスキャンサンプルビン610に対して(0.5)位相にある。 FIG. 6 shows exemplary scanline sub-sampling and sampling factors of a multi-level width barcode at 1 SPM and 0.5 phase for decoding the barcode, according to some embodiments. FIG. 6 shows the A data character module array 400 from FIG. FIG. 6 shows scan signal 606 derived from scan 604 . Scan signal 606 includes scan samples 608 A, 608 B through 608 N, collectively referred to herein as scan samples 608 . Scan samples 608 represent samples for corresponding scan sample bins s0 610A, s1 610B through s11 610N. For example, scan sample 608A represents the scan sample for scan sample bin s0 610A, which is between high and low because half of its area is covered by b0 and half of its area is covered by b1. . Each unit 402 is (0.5 ) phase.

図6は、単位サンプリング係数マトリックス620も示す。単位サンプリング係数マトリックス620の各行s0 612Aからs11 612Nまで(本明細書ではまとめて行612と呼ぶ)は1サンプルに対応し、単位幅パターン内のバーコード単位のサンプリング係数のベクトルである。単位サンプリング係数マトリックス620の各列622Aから622Nまで(まとめて列622)は1単位(例えばモジュール)に対応する。各スキャンサンプルビン610の幅は各バーコードモジュールの幅に等しい一方で、各スキャンサンプルビン610は半分が2つの連続するバーコードエレメント402の各々によってカバーされる。単位サンプリング係数マトリックス620は、半分(1/2)を含んで示された場所以外のすべての場所にゼロを含む(簡単にするためにすべてのゼロが示されていない)。行s0 612Aは、スキャンサンプルビンs0 610Aがバーb0 402Aで半分カバーされるので、第1列622Aに0.5を含み、スキャンサンプルビンs0 610Aがバーb1 402Bで半分カバーされるので、第2列622Bに0.5を含む。行s1 612Bは、スキャンサンプルビンs1 610Bがバーb1 402Bで半分カバーされるので、第2列622Bに0.5を含み、スキャンサンプルビンs1 610Bがバーb2 402Cで半分カバーされるので、第3列622Cに0.5を含む。 FIG. 6 also shows a unit sampling factor matrix 620. FIG. Each row s0 612A through s11 612N (collectively referred to herein as rows 612) of the unit sampling factor matrix 620 corresponds to one sample and is a vector of sampling factors per barcode within a unit width pattern. Each column 622A through 622N (collectively columns 622) of the unit sampling coefficient matrix 620 corresponds to one unit (eg, module). The width of each scanned sample bin 610 is equal to the width of each barcode module, while each scanned sample bin 610 is half covered by each of two consecutive barcode elements 402 . The unity sampling factor matrix 620 contains zeros everywhere except those shown including half (1/2) (all zeros are not shown for simplicity). Row s0 612A contains 0.5 in the first column 622A because scan sample bin s0 610A is half covered by bar b0 402A, and the second row 622A because scan sample bin s0 610A is half covered by bar b1 402B. Column 622B contains 0.5. Row s1 612B contains 0.5 in the second column 622B because scan sample bin s1 610B is half covered by bar b1 402B, and the third Column 622C contains 0.5.

図7は、一部の実施形態による、バーコードをデコードするための1SPM及び-0.25位相での多値幅バーコードの例示的なスキャンラインサブサンプリング及びサンプリング係数を示す。図7は、図4からのAデータ文字エレメント配列400を示す。図4。図7は、スキャン704から導出されたスキャン信号706を示す。スキャン信号706は、本明細書でスキャンサンプル708と総称するスキャンサンプル708A、708Bから708Nまで含む。スキャンサンプル708は、対応するスキャンサンプルビンs0 710A、s1710Bからs11 710Nまでに対するサンプルを表す。例えばスキャンサンプル708Aは、スキャンサンプルビンs0 710Aに対するスキャンサンプルを表わし、これは、スキャンサンプルビンs0が0.75%は反射率hを持つモジュールb0によってカバーされ、0.25%が反射率1を持つモジュールb1によってカバーされるため、低から高に向かう行程の4分の3である。各単位402は、各スキャンサンプリングビン410の開始からモジュールの幅の4分の1だけ後方にオフセットされているため、単位402はスキャンサンプルビン710に対して(-0.25)位相にある。 FIG. 7 shows exemplary scanline sub-sampling and sampling factors of a multi-level barcode at 1 SPM and −0.25 phase for decoding the barcode, according to some embodiments. FIG. 7 shows the A data character element array 400 from FIG. Figure 4. FIG. 7 shows scan signal 706 derived from scan 704 . Scan signal 706 includes scan samples 708 A, 708 B through 708 N, collectively referred to herein as scan samples 708 . Scan samples 708 represent samples for corresponding scan sample bins s0 710A, s1710B through s11 710N. For example, scan sample 708A represents the scan sample for scan sample bin s0 710A, which is 0.75% of scan sample bin s0 is covered by module b0 with reflectance h and 0.25% of scan sample bin s0 is covered by module b0 with reflectance h. three-quarters of the way from low to high because it is covered by module b1 with Each unit 402 is offset backward from the start of each scan sampling bin 410 by one quarter of the width of the module, so that the unit 402 is (−0.25) phase with respect to the scan sample bin 710 .

図7は、単位サンプリング係数マトリックス720も示す。単位サンプリング係数マトリックス720の各行s0 712Aからs11 712Nまで(本明細書では行712と総称する)は1サンプルに対応し、単位幅パターン内のバーコード単位に対するサンプリング係数のベクトルである。単位サンプリング係数マトリックス720の各列722Aから722N(まとめて列722)は1単位(例えばモジュール)に対応する。各スキャンサンプルビン710の幅は各バーコードモジュールの幅に等しい一方で、各スキャンサンプルビン710は-0.25位相のために2つの連続するバーコード単位402によってそれぞれ0.75%及び0.25%カバーされる。単位サンプリング係数マトリックス720は、ゼロでない値を含んで示された場所以外のすべての場所にゼロを含む(簡単にするためにすべてのゼロが示されていない)。行s0 712Aは、スキャンサンプルビンs0 710Aがモジュールb0 402Aによって3/4カバーされるので、第1列722Aに0.75を含み、スキャンサンプルビンs0 710Aがモジュールb1 402Bによって1/4カバーされるので、第2列722Bに0.75を含む。行s1 712Bは、スキャンサンプルビンs1 710Bがモジュールb1 402Bによって3/4カバーされるので、第2列722Bに0.75を含み、スキャンサンプルビンs1 710Bがモジュールb1 402Cによって1/4カバーされるので、第3列722Bに0.25を含む。 FIG. 7 also shows a unit sampling factor matrix 720 . Each row s0 712A through s11 712N (collectively referred to herein as rows 712) of unit sampling factor matrix 720 corresponds to one sample and is a vector of sampling factors for barcode units within a unit width pattern. Each column 722A through 722N (collectively columns 722) of the unit sampling coefficient matrix 720 corresponds to one unit (eg, module). The width of each scan sample bin 710 is equal to the width of each barcode module, while each scan sample bin 710 is 0.75% and 0.75% respectively by two consecutive barcode units 402 due to the -0.25 phase. 25% covered. Unit sampling coefficient matrix 720 contains zeros everywhere except those shown containing non-zero values (all zeros are not shown for simplicity). Row s0 712A contains 0.75 in first column 722A because scan sample bin s0 710A is 3/4 covered by module b0 402A and scan sample bin s0 710A is 1/4 covered by module b1 402B Therefore, the second column 722B contains 0.75. Row s1 712B contains 0.75 in second column 722B because scan sample bin s1 710B is 3/4 covered by module b1 402B and scan sample bin s1 710B is 1/4 covered by module b1 402C. Therefore, the third column 722B contains 0.25.

図8は、一部の実施形態による、バーコードをデコードするための1.33SPM及び1/3位相での多値幅バーコードの例示的なスキャンラインサブサンプリング及びサンプリング係数を示す。図8は、図4からのAデータ文字モジュール配列400を示す。図8は、スキャン804から導出されたスキャン信号806を示す。スキャン信号806は、本明細書ではスキャンサンプル808と総称するスキャンサンプル808A、808Bから808Nまで含む。スキャンサンプル808は、対応するスキャンサンプルビンs0 810A、s1 810Bからs16 810Nまでに対するサンプルを表す。例えばスキャンサンプル808Aは、スキャンサンプルビンs0810Aのスキャンサンプルを表しており、これはスキャンサンプルビンs0が完全にb0によってカバーされるため高い値である。別の例として、スキャンサンプル808Bはスキャンサンプルビンs1 810Bに対するスキャンサンプルを表わしており、これは、スキャンサンプルビンs1がb0の反射率によって1/3カバーされ、b1の反射率によって2/3カバーされるため、高から低への行程の2/3である。単位402B(文字モジュールの始まり)がs1 810Bの右から始まるので、単位402はスキャンサンプルビン810に対して3分の1(1/3)位相にある。 FIG. 8 shows exemplary scanline sub-sampling and sampling factors of a multi-level width barcode at 1.33 SPM and 1/3 phase for decoding the barcode, according to some embodiments. FIG. 8 shows the A data character module array 400 from FIG. FIG. 8 shows scan signal 806 derived from scan 804 . Scan signal 806 includes scan samples 808 A, 808 B through 808 N, collectively referred to herein as scan samples 808 . Scan samples 808 represent samples for corresponding scan sample bins s0 810A, s1 810B through s16 810N. For example, scan sample 808A represents the scan sample of scan sample bin s0 810A, which is a high value because scan sample bin s0 is completely covered by b0. As another example, scan sample 808B represents the scan sample for scan sample bin s1 810B, which means that scan sample bin s1 is 1/3 covered by b0 reflectance and 2/3 covered by b1 reflectance. 2/3 of the way from high to low. Since unit 402B (beginning of character module) begins to the right of s1 810B, unit 402 is one-third (⅓) phase with respect to scan sample bin 810 .

図8は、単位サンプリング係数マトリックス820も示す。単位サンプリング係数マトリックス820の各行s0 812Aからs16 812Nまで(本明細書ではまとめて行812と呼ぶ)は1つのスキャンサンプルに対応し、単位幅パターン内のバーコード単位のサンプリング係数のベクトルである。単位サンプリング係数マトリックス820の各列822Aから822Nまで(まとめて列822)は1単位(例えばモジュール)に対応する。各スキャンサンプルビン810の幅は、1.33SPMのためバーコードモジュールの2/3に等しい。単位サンプリング係数マトリックス820は、ゼロでない値を含んで示された場所以外のすべての場所にゼロを含む(簡単にするためにすべてのゼロが示されていない)。例えば行s0 812Aは、スキャンサンプルビンs0 810Aがモジュールb0 402Aによって完全にカバーされる(そして他のモジュールの部分はない)ので、第1列822Aに1.0を含む。行s1 812Bは、スキャンサンプルビンs1 810Bが単位b0 402Aによって1/3カバーされるので、第1列822Aに0.33を含み、スキャンサンプルビンs1 810Bがモジュールb2 402Cによって2/3カバーされるので、第2列822Bに0.66を含む。 FIG. 8 also shows unit sampling factor matrix 820 . Each row s0 812A through s16 812N (collectively referred to herein as rows 812) of unit sampling coefficient matrix 820 corresponds to one scan sample and is a vector of sampling coefficients per barcode within a unit width pattern. Each column 822A through 822N (collectively columns 822) of the unit sampling coefficient matrix 820 corresponds to one unit (eg, module). The width of each scan sample bin 810 is equal to 2/3 of a barcode module for 1.33 SPM. Unit sampling coefficient matrix 820 contains zeros everywhere except those shown containing non-zero values (all zeros are not shown for simplicity). For example, row s0 812A contains 1.0 in the first column 822A because scan sample bin s0 810A is completely covered by module b0 402A (and no part of the other modules). Row s1 812B contains 0.33 in first column 822A because scan sample bin s1 810B is 1/3 covered by unit b0 402A and scan sample bin s1 810B is 2/3 covered by module b2 402C Therefore, the second column 822B contains 0.66.

図9は、一部の実施形態による、バーコードをデコードするための0.75SPM及び-0.25位相での多値幅バーコードの例示的なスキャンラインサブサンプリング及びサンプリング係数を示す。図9は、図4からのAデータ文字モジュール配列400を示す。図9は、スキャン904から導出されたスキャン信号906を示す。スキャン信号906は、本明細書でスキャンサンプル908と総称するスキャンサンプル908A、908Bから908Nまでを含む。スキャンサンプル908は、対応するスキャンサンプルビンs0 910A、s1 910Bからs9 910Nまでに対するサンプルを表す。例えばスキャンサンプル908Aは、スキャンサンプルビンs0 910Aのスキャンサンプルを表しており、これはb0 402Aの0.75反射率及びb1 402Bの0.25反射率を表す値である。別の例として、スキャンサンプル908Bはスキャンサンプルビンs1 910Bに対するスキャンサンプルを表しており、これは半分がモジュールb0によってカバーされ、半分がモジュールb1によってカバーされる。単位402B(文字モジュールsの最初の単位)がs1 910Bの左からサンプリングピッチ0.25で始まるため、単位402はスキャンサンプルビン910に対してマイナス4分の1(-1/4)位相にある。 FIG. 9 shows exemplary scanline subsampling and sampling factors of a multi-level barcode at 0.75 SPM and −0.25 phase for decoding the barcode, according to some embodiments. FIG. 9 shows the A data character module array 400 from FIG. FIG. 9 shows scan signal 906 derived from scan 904 . Scan signal 906 includes scan samples 908 A, 908 B through 908 N, collectively referred to herein as scan samples 908 . Scan samples 908 represent samples for corresponding scan sample bins s0 910A, s1 910B through s9 910N. For example, scan sample 908A represents the scan sample of scan sample bin s0 910A, which is a value representing 0.75 reflectance of b0 402A and 0.25 reflectance of b1 402B. As another example, scan sample 908B represents the scan sample for scan sample bin s1 910B, which is half covered by module b0 and half covered by module b1. Since unit 402B (the first unit of character module s) begins at sampling pitch 0.25 to the left of s1 910B, unit 402 is in minus quarter (-1/4) phase with respect to scan sample bin 910. .

図9は、単位サンプリング係数マトリックス920も示している。単位サンプリング係数マトリックス920の各行s0 912Aからs9 912Nまで(本明細書ではまとめて行912と呼ぶ)は1つのスキャンサンプルに対応し、単位幅パターン内のバーコード単位のサンプリング係数のベクトルである。単位サンプリング係数マトリックス920の各列922Aから922Nまで(まとめて列922)は1単位(例えばモジュール)に対応する。各スキャンサンプルビン910の幅は、0.75SPMのためバーコードエレメントの1及び1/3に等しくなる。単位サンプリング係数マトリックス920は、ゼロでない値を含んで示された場所以外のすべての場所にゼロを含む(単純にするためにすべてのゼロが示されていない)。例えば行s0 912Aには、スキャンサンプルビンs0 910Aが単位b0 402Aによって3/4カバーされるので、第1列922Aに0.75を含み、スキャンサンプルビンs0 910Aが単位b1 402Bによって1/4カバーされるので、第2列922Bに0.25を含む。行s1 912Bは、スキャンサンプルビンs1 810Bが単位b1 402Bによって1/2カバーされるので、第1列822Aに0.5を含み、スキャンサンプル単位s1 910Bが単位b2 402Cによって1/2カバーされるので、第2列922Bに0.5を含む。 FIG. 9 also shows unit sampling factor matrix 920 . Each row s0 912A through s9 912N (collectively referred to herein as rows 912) of unit sampling coefficient matrix 920 corresponds to one scan sample and is a vector of sampling coefficients per barcode within a unit width pattern. Each column 922A through 922N (collectively columns 922) of the unit sampling coefficient matrix 920 corresponds to one unit (eg, module). The width of each scan sample bin 910 is equal to 1 and 1/3 bar code elements for 0.75 SPM. The unity sampling coefficient matrix 920 contains zeros everywhere except those shown containing non-zero values (all zeros are not shown for simplicity). For example, row s0 912A contains 0.75 in the first column 922A because scan sample bin s0 910A is 3/4 covered by unit b0 402A, and scan sample bin s0 910A is 1/4 covered by unit b1 402B. second column 922B contains 0.25. Row s1 912B contains 0.5 in first column 822A because scan sample bin s1 810B is 1/2 covered by unit b1 402B and scan sample unit s1 910B is 1/2 covered by unit b2 402C. Therefore, the second column 922B contains 0.5.

図10は、一部の実施形態による、バーコードをデコードするための0.84SPM、2.1の幅(W)、及び-0.16位相での2値幅バーコードの例示的なスキャンラインサブサンプリング及びサンプリング係数を示す。図10は、バーコード単位(エレメント)1002と総称されるバーコードエレメントb0 1002A、b1 1002B、b2 1002C、b3 1002D、b4 1002E、b5 1002F、b6 1002G、b7 1002H、b8 1002I、b9 1002J、及びb10 1002KからなるAデータ文字エレメント配列1000を示す。 FIG. 10 illustrates an exemplary scanline sub-scan of a binary width barcode at 0.84 SPM, width (W) of 2.1, and -0.16 phase for decoding the barcode, according to some embodiments. Sampling and sampling factors are indicated. FIG. 10 shows barcode elements b0 1002A, b1 1002B, b2 1002C, b3 1002D, b4 1002E, b5 1002F, b6 1002G, b7 1002H, b8 1002I, b9 1002J, and b10, collectively referred to as barcode units (elements) 1002. A data character element array 1000 consisting of 1002K is shown.

図10は、スキャン1004から導出されたスキャン信号1006を示す。スキャン信号1006は、本明細書でスキャンサンプル1008と総称するスキャンサンプル1008A、1008Bから1008Nまでを含む。スキャンサンプル1008は、対応するスキャンサンプルビンs0 1010A、s1 1010Bからs9 1010Nまでに対するサンプルを表す。例えばスキャンサンプル1008Aはスキャンサンプルビンs0 1010Aに対するスキャンサンプルを表しており、これは単位b0 1002Aの反射率0.84、及び単位b1 1002Bの反射率0.16を表す値である。別の例として、スキャンサンプル1008Bは、単位b1 1002Bによって完全にカバーされるスキャンサンプルビンs1 1010Bに対するスキャンサンプルを表す。単位1002B(文字の最初のエレメント)はスキャンサンプルビンs1 1010Bの左から始まるため、単位1002はスキャンサンプルビン1010に対して-0.16位相にある。 FIG. 10 shows scan signal 1006 derived from scan 1004 . Scan signal 1006 includes scan samples 1008 A, 1008 B through 1008 N, collectively referred to herein as scan samples 1008 . Scan samples 1008 represent samples for corresponding scan sample bins s0 1010A, s1 1010B through s9 1010N. For example, scan sample 1008A represents the scan sample for scan sample bin s0 1010A, which is a value representing reflectance of unit b0 1002A of 0.84 and reflectance of unit b1 1002B of 0.16. As another example, scan sample 1008B represents the scan sample for scan sample bin s1 1010B that is completely covered by unit b1 1002B. Unit 1002B (the first element of the character) begins to the left of scan sample bin s1 1010B, so unit 1002 is -0.16 phase relative to scan sample bin 1010. FIG.

図10は、単位サンプリング係数マトリックス1020も示している。単位サンプリング係数マトリックス1020の各行s0 1012Aからs12 1012Nまで(本明細書ではまとめて行1012と呼ぶ)は1つのスキャンサンプルに対応し、単位幅パターン内のバーコード単位のサンプリング係数のベクトルである。単位サンプリング係数マトリックス1020の各列1022Aから1022Nまで(まとめて列1022)は、1単位(例えばエレメント)に対応する。単位サンプリング係数マトリックス1020は、ゼロでない値を含んで示されている場所以外のすべての場所にゼロを含む(単純にするためにすべてのゼロは示されていない)。例えば行s0 1012Aは、スキャンビンs0 1010Aの84%が単位b0 1002Aによってカバーされるので、第1列1022Aに0.84を含み、スキャンサンプルビンs0 1010Aの16%が単位b1 1002Bによってカバーされるので、第2列1022Bに0.16を含む。行s1 1012Bは、スキャンサンプルビンs1 910Bのすべてが単位b1 1002Bによってカバーされるので、第2列1022Bに1.0を含む。 FIG. 10 also shows unit sampling factor matrix 1020 . Each row s0 1012A through s12 1012N (collectively referred to herein as rows 1012) of the unit sampling factor matrix 1020 corresponds to one scan sample and is a vector of sampling factors per barcode within a unit width pattern. Each column 1022A through 1022N (collectively columns 1022) of the unit sampling coefficient matrix 1020 corresponds to one unit (eg, element). Unit sampling coefficient matrix 1020 contains zeros everywhere except those shown containing non-zero values (all zeros are not shown for simplicity). For example, row s0 1012A contains 0.84 in the first column 1022A because 84% of scan bin s0 1010A is covered by unit b0 1002A and 16% of scan sample bin s0 1010A is covered by unit b1 1002B. Therefore, the second column 1022B contains 0.16. Row s1 1012B contains 1.0 in the second column 1022B because all of scan sample bin s1 910B is covered by unit b1 1002B.

一部の実施形態では、図4~図9に示されるように、多値幅シンボル体系はモジュール単位を使用する。単位幅パターン(例えばしたがって単位格子)はすべての可能なエレメント幅パターンに対して同じであり得るため、明白なモジュールサイズが一定であるシンボルの特定のセクションに対して1つの単位サンプリング係数マトリックスであることができる(例えば1文字、複数の文字又はバーコード全体)。このようなバーコードのセクションのデコードは、例えば実際の単位エンコードパターン(例えばモジュール値)に対する連立線形方程式を解き、次にそれをエレメント幅パターンに変換し、最終的にその関連する英数字値に変換することによって実行できる。一部の実施形態では、以下でさらに説明する多値幅シンボル体系のエレメントを使用することによってデコードを行うことができる。 In some embodiments, the multi-level symbology uses modular units, as shown in FIGS. There is one unit sampling coefficient matrix for a particular section of the symbol where the apparent module size is constant, since the unit width pattern (and thus the unit cell) can be the same for all possible element width patterns. (eg single character, multiple characters or the entire barcode). Decoding a section of such a bar code involves, for example, solving a system of linear equations for the actual unit encoded pattern (e.g., module value), then converting it to an element width pattern, and finally to its associated alphanumeric value. It can be done by converting In some embodiments, decoding can be performed by using elements of the multi-level symbology, which are further described below.

図11は、一部の実施形態による、バーコードをデコードするための一般的な画像ベースのデコードアルゴリズムの例示的なコンピュータ化された方法1100を示す。ステップ1102で、バーコードリーダは(例えばコンベヤーベルトに載った物品上のバーコードの)取得された画像内のバーコード候補領域の位置を特定する。ステップ1104で、バーコードリーダは、次のバーコード候補領域を選択する。例えば次の候補領域は最もバー状の特徴を持つ領域である。バーコードリーダは、この候補に対して統合された文字列を初期化できる。ステップ1106で、バーコードリーダは、候補領域を通るスキャンのセットから次のスキャンを選択する(例えば図4のスキャン404)。スキャンは、例えば他のスキャンとほぼ平行で、バーコード候補の一方の端からもう一方の端まで延びる線分であることができる。バーコードリーダは、異なる順序を使用してスキャンを選択できる。例えばバーコードリーダは、上から下へ、中央から外側へなどの順序で次のスキャンを選択できる。 FIG. 11 illustrates an exemplary computerized method 1100 of a generic image-based decoding algorithm for decoding barcodes, according to some embodiments. At step 1102, the barcode reader locates barcode candidate regions within the captured image (eg, of barcodes on items on a conveyor belt). At step 1104, the barcode reader selects the next barcode candidate region. For example, the next candidate region is the region with the most bar-like features. A barcode reader can initialize the integrated string for this candidate. At step 1106, the barcode reader selects the next scan from the set of scans through the candidate region (eg scan 404 in FIG. 4). A scan can be, for example, a line segment that is generally parallel to another scan and extends from one end of the barcode candidate to the other. Barcode readers can select scans using different orders. For example, a barcode reader can select the next scan in order from top to bottom, center to outside, and so on.

ステップ1108で、バーコードリーダは、投影を使用することなどにより、スキャン信号(例えばスキャン信号406)を取得する。ステップ1110で、バーコードリーダはスキャン信号からバーコードをデコードする。デコードプロセスは、さらに図13に関連して説明される。ステップ1112で、バーコードリーダはスキャン文字列を統合する。例えばバーコードリーダは、スキャンからデコードされた文字列(文字スコアを含む)を、この候補スキャンに対してこれまでの統合された文字列と組み合わせることができる。ステップ1114で、バーコードリーダはバーコードが確実にデコードされたかどうかを(例えば信頼度閾値に基づいて)判定する。バーコードが確実にデコードされないとバーコードリーダが判定した場合、バーコードリーダはステップ1106に戻り、次の選択されたスキャン(残っている場合)でステップ1108から1112までを実行する。追加の候補領域が残っている場合、方法1100はステップ1104に戻る。完了したら、方法1100はバーコード文字列を報告する。バーコード文字列は、確実にデコードされなかったバーコード、部分的にデコードされたバーコードなどを含むことがある。 At step 1108, the barcode reader acquires a scan signal (eg, scan signal 406), such as by using projection. At step 1110, the barcode reader decodes the barcode from the scan signal. The decoding process is further explained in connection with FIG. At step 1112, the barcode reader assembles the scan strings. For example, a barcode reader can combine the decoded string (including the character score) from the scan with the previously integrated string for this candidate scan. At step 1114, the barcode reader determines whether the barcode was reliably decoded (eg, based on a confidence threshold). If the barcode reader determines that the barcode is not reliably decoded, the barcode reader returns to step 1106 and performs steps 1108 through 1112 on the next selected scan (if any remain). If additional candidate regions remain, method 1100 returns to step 1104 . Upon completion, method 1100 reports the barcode string. Barcode strings may include barcodes that were not reliably decoded, barcodes that were partially decoded, and the like.

図12は、一部の実施形態による、バーコードをデコードするためのレーザスキャナデコードアルゴリズムの例示的なコンピュータ化された方法1200を示す。ステップ1202で、レーザスキャナはアナログ反射信号を取得する。アナログ反射信号は、レーザと検出器によって測定された、バーコード全体にわたる線形スキャンに沿ったバーコードの反射率である。ステップ1204で、レーザスキャナは(例えば一時的なサンプリングにより個別のデジタルスキャン信号を抽出することにより)反射信号をサンプリングする。ステップ1206で、レーザスキャナはスキャン信号からバーコードをデコードする。デコードプロセスは、さらに図13に関連して説明される。ステップ1208で、レーザスキャナはスキャン文字列を統合する。ステップ1210で、レーザスキャナはバーコードが確実にデコードされたかどうかを判定する。バーコードが確実にデコードされないとレーザスキャナが判定した場合、レーザスキャナはステップ1202に戻り、新しいアナログ反射信号を取得する。そうでない場合は、方法1200はステップ1212に進み、統合された文字列を報告する。 FIG. 12 illustrates an exemplary computerized method 1200 of a laser scanner decoding algorithm for decoding barcodes, according to some embodiments. At step 1202, the laser scanner acquires an analog return signal. The analog reflectance signal is the reflectance of the barcode along a linear scan across the barcode as measured by the laser and detector. At step 1204, the laser scanner samples the reflected signal (eg, by extracting discrete digital scan signals by temporal sampling). At step 1206, the laser scanner decodes the barcode from the scan signal. The decoding process is further explained in connection with FIG. At step 1208, the laser scanner consolidates the scan string. At step 1210, the laser scanner determines whether the barcode was successfully decoded. If the laser scanner determines that the barcode is not reliably decoded, the laser scanner returns to step 1202 to obtain a new analog return signal. Otherwise, method 1200 proceeds to step 1212 and reports the consolidated string.

図13A-Bは、一部の実施形態による、スキャン信号からバーコードをデコードするための例示的なコンピュータ化された方法1300を示す。ステップ1302で、バーコードリーダはスキャン信号内のエッジ(例えばエレメント間の遷移の1D位置)を検出する。当業者は、微分ピーク、二次微分ゼロ交差、ピーク/谷遷移(ANSIエッジ)、及び/又はその他のエッジ検出方法を使用するなど、様々な技術を用いてエッジを検出できることを理解できる。ステップ1304で、バーコードリーダはエッジをフィルタリングする。例えばバーコードリーダは(例えばコントラストに基づいて)偽エッジを除外し、及び/又は最小特徴サイズが分かっている場合は欠けているエッジを追加できる。ステップ1306で、バーコードリーダは第1の区切り文字の位置を特定してデコードする。一部の実施形態では、バーコードリーダはスキャンに沿って逆方向に区切り文字の位置を特定してデコードすることができる(例えばスキャン信号を逆にすることにより)。 13A-B illustrate an exemplary computerized method 1300 for decoding barcodes from scan signals, according to some embodiments. At step 1302, the barcode reader detects edges (eg, 1D positions of transitions between elements) in the scan signal. Those skilled in the art will appreciate that edges can be detected using a variety of techniques, such as using derivative peaks, second derivative zero-crossings, peak/valley transitions (ANSI edges), and/or other edge detection methods. At step 1304, the barcode reader filters the edges. For example, the barcode reader can filter out false edges (eg, based on contrast) and/or add missing edges if the minimum feature size is known. At step 1306, the barcode reader locates and decodes the first delimiter. In some embodiments, the barcode reader can locate and decode the delimiter in a reverse direction along the scan (eg, by reversing the scan signal).

ステップ1308で、バーコードリーダは次の文字位置に進む。例えばバーコードリーダは、現在の文字の測定された文字の長さ(例えばステップ1306の開始時に区切り文字パターンになる)に加えて、測定された整数文字ギャップを追加して、現在の文字の開始位置を決定できる。現在の文字が適切にデコードされなかった場合(例えば信頼範囲内にない場合)、バーコードリーダは文字サイズの推定値を使用できる。ステップ1310で、バーコードリーダは文字単位格子を推定する。一部の実施形態では、文字単位格子は、開始位置(例えば位相)、最小特徴サイズ(例えばX)、細太比(該当する場合)、及び文字間ギャップを含む。一部の実施形態では、バーコードリーダは、以前にデコードされた文字の最後に測定された統計を使用して、後でデコードできなかった文字の数を考慮するように構成できる。一部の実施形態では、第1のエッジ距離を使用して、区切り文字を超える第1の文字に対する文字間ギャップを測定することができる。 At step 1308, the barcode reader advances to the next character position. For example, the barcode reader adds the measured character length of the current character (eg, which becomes the delimiter pattern at the start of step 1306) plus the measured integer character gap to give the start of the current character. position can be determined. If the current character was not properly decoded (eg, not within the confidence range), the barcode reader can use an estimate of the character size. At step 1310, the barcode reader estimates the character unit cell. In some embodiments, the character unit cell includes a starting position (eg, phase), a minimum feature size (eg, X), a thin-to-thickness ratio (if applicable), and an inter-character gap. In some embodiments, the barcode reader can be configured to use the last measured statistics of previously decoded characters to account for the number of characters that could not be decoded later. In some embodiments, the first edge distance can be used to measure the inter-character gap for the first character beyond the delimiter.

ステップ1312で、バーコードリーダはエッジを使用して文字をデコードする。当業者は、これが当業界で知られている技術を用いて、例えばエッジから類似エッジまでの距離を測定すること、エッジから類似エッジまでの距離を分類すること(例えばX又はWの最も近い整数倍までの各エッジ距離を丸めることを含む)、文字値を検索すること、及び文字格子(例えば位置、最小特徴サイズ、エレメント幅を含む)とスコアを更新する(例えばXの最も近い整数倍からの分数差を使用するなどして、いかによくエッジが一致しているかを更新する)ことによって実行できることを理解できる。ステップ1314で、バーコードリーダは最後の区切り文字がデコードされたか、又はシンボル体系の文字の最大数を超えたか判定する。答が「いいえ」の場合は、方法はステップ1308に戻る。答が「はい」の場合は、方法は図13Bのステップ1320に進む。ステップ1320で、バーコードリーダはすべての文字が首尾よくデコードされたかどうかを判定する。答が「はい」の場合は、方法1300はステップ1322に進み、統合された文字列を報告する。答が「いいえ」の場合は、方法1300はステップ1324に進み、確実にデコードされなかった文字を除外する。例えばバーコードリーダは誤読を防ぐように構成できる。バーコードリーダは潜在的な誤読を検出するために高い信頼度閾値で設定することができる(例えばそのような文字がデコードされないとマークされる)。例えばそのような文字は、(例えば文字単位格子の推定値の誤差及び/又はエッジ欠落及び/又は余分なエッジのため)デコードされなかった文字の先行文字を含むことがある。 At step 1312, the barcode reader uses the edges to decode the characters. One skilled in the art will be able to use techniques this is known in the art, such as measuring the distance from an edge to a similar edge, classifying the distance from an edge to a similar edge (e.g. the nearest integer of X or W (including rounding each edge distance to a multiple of X); updating how well the edges match, such as by using the fractional difference of . At step 1314, the barcode reader determines if the last delimiter has been decoded or if the maximum number of characters for the symbology has been exceeded. If the answer is 'no', the method returns to step 1308 . If the answer is yes, the method proceeds to step 1320 of Figure 13B. At step 1320, the barcode reader determines whether all characters were successfully decoded. If the answer is yes, method 1300 proceeds to step 1322 and reports the consolidated string. If the answer is no, method 1300 proceeds to step 1324 and excludes characters that were not reliably decoded. For example, bar code readers can be configured to prevent misreads. A barcode reader can be set with a high confidence threshold to detect potential misreads (eg, mark such characters as not decoded). For example, such characters may include characters preceding the character that were not decoded (eg, due to errors in character unit cell estimates and/or missing edges and/or extra edges).

ステップ1326で、バーコードリーダは次のデコードされていない文字に進む。例えばバーコードリーダは文字列の先頭から開始して、次のデコードされていない文字に進むことができる。ステップ1328で、バーコードリーダは文字単位格子を推定する。ステップ1330で、バーコードリーダはスキャン信号から文字をデコードする。文字がデコードされない場合、方法はステップ1326に戻る。文字がデコードされている場合、方法はステップ1334に進み、文字単位格子を精緻化する。一部の実施形態では、ステップ1334は任意選択である。バーコードリーダは、文字単位格子測定値の各々に小さい摂動を検索して、デコードされた文字のスコアがどのように変化するかを評価できる。バーコードリーダは最良のスコアをもたらす文字単位格子を選択することができ、それによって修正された開始位置、文字間ギャップ(該当する場合)、最小特徴サイズ、及び/又は細太比(該当する場合)を決定する。デコードされていない文字が残っている場合、方法はステップ1326に進む。そうでない場合は、方法はステップ1322に進み、統合された文字列を報告する。 At step 1326, the barcode reader advances to the next undecoded character. For example, a barcode reader can start at the beginning of a string and advance to the next undecoded character. At step 1328, the barcode reader estimates the character unit cell. At step 1330, the barcode reader decodes the characters from the scan signal. If the character is not decoded, the method returns to step 1326 . If the character is decoded, the method proceeds to step 1334 to refine the character unit cell. In some embodiments, step 1334 is optional. A barcode reader can look for small perturbations in each of the character unit cell measurements to assess how the score of a decoded character changes. The barcode reader can select the character unit cell that yields the best score, thereby modifying the starting position, inter-character gap (if applicable), minimum feature size, and/or thickness ratio (if applicable). ). If undecoded characters remain, the method proceeds to step 1326 . Otherwise, the method proceeds to step 1322 and reports the consolidated string.

ステップ1330を参照して、別個の文字をデコードすると、例えば遠近法効果、及び/又は湾曲した物体の周りのシンボルの非線形ワーピングによって引き起こされるものなど、スキャンに沿った位置の関数として変化するスキャンサンプリングピッチに対処することができる。したがってバーコードリーダは、文字の比較的狭い位置範囲で一定のスキャンサンプリングピッチを使用するように構成できる。例えばスキャンサンプルピッチ単位で測定された単一の最小特徴サイズと太いバー幅(該当する場合)を使用して、文字の単位格子を記述することができる。有利なことに、文字を使用すると、バーコードリーダは各単位エンコードパターンのすべての可能な組み合わせ(例えば多値幅コード128に対して103通りの組み合わせ)を調べて、結果として予想された(例えば予測された)正規化されたスキャンサンプルAb(これは測定された正規化されたスキャンサンプルsの部分に最も近い一致である)になる単位エンコードパターンを選択することにより、各文字単位エンコードパターンを解くことが可能になる。 Referring to step 1330, decoding distinct characters results in scan sampling that varies as a function of position along the scan, such as those caused by perspective effects and/or non-linear warping of symbols around curved objects. Can handle pitches. Bar code readers can thus be configured to use a constant scan sampling pitch over a relatively narrow range of character positions. For example, a single minimum feature size measured in scan sample pitch units and a thick bar width (if applicable) can be used to describe the unit cell of a character. Advantageously, using characters, the barcode reader examines all possible combinations of each unit encoding pattern (e.g. 103 combinations for the multi-level code 128) and results in the predicted (e.g. predicted Solve each character-wise encoding pattern by selecting the unit-encoding pattern that results in the normalized scan sample Ab (which is the closest match to the portion of the measured normalized scan sample s) becomes possible.

一部の実施形態では、バーコードリーダは、標準線形代数技術を使用して直接単位エンコードパターンを解くように構成できる(例えば標準最小2乗式b=(AA)-1s法を使用する。これはAb-sのユークリッド長さを最小化するであろう)。Aはモジュールサイズが1.0に近づくと数値的に不安定になり、1.0未満では特異になる。したがってこの技術を用いて解を安定させることができる。例えば制約最小化を使用して(例えばラグランジュ乗数を使用して他の線形制約を組み込む)解を安定させることができる。別の例として、擬似逆(例えばb=As)を使用して解を安定させることができる。解はその他の多数の方法のいずれか、例えば解を数学的にバイナリベクトルに制限することによって制約できる。しかしながら一部の制約は、容易若しくは効率的に解けない非線形方程式のセットになることがあり、他の制約ほど有益ではない場合がある。 In some embodiments, the barcode reader can be configured to solve the unit-encoded pattern directly using standard linear algebra techniques (e.g., using the standard least-squares formula b=(A T A) −1 s method , which would minimize the Euclidean length of Abs). A becomes numerically unstable when the module size approaches 1.0, and becomes singular below 1.0. Therefore, this technique can be used to stabilize the solution. For example, constraint minimization can be used to stabilize the solution (eg, using Lagrangian multipliers to incorporate other linear constraints). As another example, a pseudo-inverse (eg, b=A + s) can be used to stabilize the solution. The solution can be constrained in any of a number of other ways, such as by mathematically restricting the solution to binary vectors. Some constraints, however, may result in a set of non-linear equations that are not easily or efficiently solvable, and may not be as beneficial as others.

文字ごとの技術を使用して、2値幅バーコードをデコードし及び/又は多値幅文字をデコードできる(単位エレメントを使用する場合など)。したがってバーコードリーダは、交互するバーとスペースを表すバイナリ単位エンコードパターンベクトルを乗算した場合に(すべての可能な文字に対して同様)最良のスコア(例えば本質的にサンプルスキャンと最も良く一致するもの)になる単位サンプリング係数マトリックス(及び関連するエレメント幅パターンと文字値など)を識別することにより、バーコード文字をデコードするように構成できる)。 Character-by-character techniques can be used to decode binary width barcodes and/or decode multi-width characters (such as when using unit elements). The barcode reader therefore gives the best score (e.g., essentially the one that best matches the sample scan) when multiplied by the binary unit-encoded pattern vector representing alternating bars and spaces (as well as for all possible characters). ) (and associated element width patterns and character values, etc.).

一部の実施形態で、バーコードリーダは最も良く一致する文字を見つけるプロセスの前及び/又は最中にスキャン信号包絡線ベクトル1及びHを決定する(その結果、例えば測定及び予測(予想)されたスキャン信号値を直接比較できるようになる)。一部の実施形態において、バーコードリーダは、(例えば計算を容易にするために)スキャン信号包絡線が単一の文字にわたって一定であると仮定するように構成される。例えばバーコードリーダはベクトルではなく、1組の包絡線値l及びhを使用できる。例えばこのような構成を使用すると、基本的にバーコードの基礎となる照明が単一の文字の過程であまり変化しないと仮定することができる。 In some embodiments, the barcode reader determines the scan signal envelope vectors 1 and H before and/or during the process of finding the best matching character (thereby resulting, for example, measured and predicted (allows direct comparison of scanned signal values). In some embodiments, the barcode reader is configured to assume that the scan signal envelope is constant over a single character (eg, for ease of calculation). For example, a barcode reader could use a set of envelope values l and h rather than vectors. For example, using such a configuration, one can basically assume that the underlying illumination of the barcode does not change much over the course of a single character.

一部の実施形態において、バーコードリーダは、信号包絡線が以前にデコードされた文字の包絡線とあまり変わらないと仮定するように構成できる。デコードした後、バーコードリーダは、デコードされた文字の幅の太いバー内の最小及び最大信号値を測定することによって包絡線を精緻化できる。一部の実施形態では、バーコードリーダは、マッチングプロセスの一部として可能性のある各文字について直接包絡線パラメータl及びhを決定することができる。例えばバーコードリーダは、予想されるAbを実際に測定された生信号rに直接一致させるように構成できる(例えば任意の均一なスケールと単一のオフセットを許可することにより)。一部の実施形態では、バーコードリーダは、合計(ar(i)+c-s(i))を最小化するスカラa及びcの値を選択するように構成することができる(例えばiの全n、ここでnはスキャン信号の部分の長さである)。次に関係a=(SB)/(hl)及びc=B-alを用いて、h及びlを決定でき、以下を得る:
l=(DB-v)/v
h=l+D(SB)/v 式3及び4
ここで、
・v=m-ny
・v=m-m
・D=m -nm
・m=sum(r(i)
・m=sum(r(i))
・y=sum(s(i)r(i))
・y=sum(s(i))
In some embodiments, the barcode reader can be configured to assume that the signal envelope is not significantly different from the previously decoded character envelope. After decoding, the barcode reader can refine the envelope by measuring the minimum and maximum signal values within the wide bars of the decoded characters. In some embodiments, the barcode reader can directly determine the envelope parameters l and h for each potential character as part of the matching process. For example, a barcode reader can be configured to directly match the expected Ab to the actual measured raw signal r (eg, by allowing an arbitrary uniform scale and a single offset). In some embodiments, the barcode reader can be configured to select values of scalars a and c that minimize the sum i (ar(i)+c−s(i)) 2 (eg, i , where n is the length of the portion of the scan signal). Then, using the relationships a=(SB)/(hl) and c=B−al, we can determine h and l, yielding:
l=(DB−v c )/v a
h=l+D(SB)/va Equations 3 and 4
here,
va = m 2 y 2 - ny 1
・v c =m 2 y 1 -m 1 y 2
・D = m 2 2 - nm 1
・m 1 =sum(r(i) 2 )
・m 2 =sum(r(i))
・y 1 =sum(s(i)r(i))
・y 2 =sum(s(i))

一部の実施形態では、バーコードリーダは計算されたl及びhを、これらの数字に対して予想される範囲に照らして(例えば近くの文字に基づいて)検証するように構成でき、その結果としてバーコードリーダはbに対応する文字をさらに考慮する必要があるかどうかを判定できる。 In some embodiments, the barcode reader can be configured to verify the calculated l and h against the expected range for these numbers (e.g., based on nearby characters), so that As , the barcode reader can determine if the character corresponding to b needs to be considered further.

図14A-Cは、一部の実施形態による、バーコードをデコードするための第1の区切り文字の位置を特定してデコードするための例示的なコンピュータ化された方法1400を示す。ステップ1402で、バーコードリーダは、可能な区切り文字開始点を識別する。例えばバーコードリーダは各エッジを可能な開始位置と見なすことができ、そこではエッジの極性(明るい色の上に暗い色又は暗い色の上に明るい色)がバーコードの極性(明るいオンダーク又は暗いライト、オンライト)を決定する。別の例として、バーコードリーダは妥当なクワイエットゾーンを持つエッジのみを考慮することができる(例えば先行のスキャン信号内に後続エッジ距離に相当する距離に重要な特徴(エッジなど)がない)。 Figures 14A-C illustrate an exemplary computerized method 1400 for locating and decoding a first delimiter for decoding a barcode, according to some embodiments. At step 1402, the barcode reader identifies possible delimiter starting points. For example, a barcode reader can consider each edge as a possible starting position, where the polarity of the edge (dark over light or light over dark) corresponds to the polarity of the barcode (light on dark or dark). write, on write). As another example, a barcode reader may only consider edges with a reasonable quiet zone (eg, no significant features (edges, etc.) at a distance corresponding to the trailing edge distance in the preceding scan signal).

ステップ1404で、バーコードリーダは、残りの識別された可能な区切り文字開始点の間から次の可能な区切り文字開始を選択する。ステップ1406で、バーコードリーダはエッジを使用して文字をデコードする。ステップ1408で、方法1400は、区切り文字がデコードされたかどうかを判定する。答が「はい」の場合、方法は図14Cのステップ1446に進む。ステップ1410で、バーコードリーダは可能な区切り文字を識別する。例えば一部のシンボル体系は複数の開始パターン又は停止パターンを持つ。上述の一部の実施形態において、デコード操作が逆方向で発生する可能性があるため、停止パターンはスキャン信号に沿って逆方向で検出することができる。ステップ1412で、バーコードリーダは次の可能な区切り文字を選択する。 At step 1404, the barcode reader selects the next possible delimiter start from among the remaining identified possible delimiter start points. At step 1406, the barcode reader uses the edges to decode the characters. At step 1408, method 1400 determines whether the delimiter has been decoded. If the answer is yes, the method proceeds to step 1446 of Figure 14C. At step 1410, the barcode reader identifies possible delimiters. For example, some symbologies have multiple start or stop patterns. In some of the embodiments described above, the stopping pattern can be detected in the backward direction along the scan signal because the decoding operation can occur in the backward direction. At step 1412, the barcode reader selects the next possible delimiter.

ステップ1414で、バーコードリーダは、可能な大まかな文字単位格子を推定する。例えばバーコードリーダは、バーコードの終わりの信号の部分から、可能な最小特徴サイズと細太比(該当する場合)を推定できる。例えばバーコードリーダは印刷太りがほぼ0であり、文字間ギャップ(該当する場合)は1Xであると推定できる。他の推定は、例えば信号が解像度不足であるために一部のエッジが欠落している可能性があると仮定して、パターンエッジ対応を開始する可能な測定されたエッジを識別して、最小2乗適合を実行することによって行うことができる。最良適合を有する(例えば誤差閾値を超える)対応が選択され、最良適合文字格子に関連付けられる。一部の実施形態では、この推定は代替的に、2値幅シンボル体系について太エレメントの中心の位置を特定して、同様の対応操作を実行することにより、エッジなしで達成することができる。 At step 1414, the barcode reader deduces a possible rough character unit cell. For example, a barcode reader can estimate the minimum possible feature size and thickness ratio (if applicable) from the portion of the signal at the end of the barcode. For example, a barcode reader can be assumed to have approximately 0 print fat and an inter-character gap (if applicable) of 1X. Another estimate is to identify the possible measured edges that initiate the pattern edge correspondence, assuming that some edges may be missing, e.g. It can be done by performing a square fit. The correspondence with the best fit (eg exceeding the error threshold) is selected and associated with the best fit character grid. In some embodiments, this estimation can alternatively be achieved without edges by locating the center of the thick element for the binary width symbology and performing similar corresponding operations.

ステップ1416で、バーコードリーダは次の大まかな文字単位格子を選択し、方法はステップ1420に進む。ステップ1420で、バーコードリーダは次の文字単位格子摂動を選択する。例えばバーコードリーダは、推定値とは異なるが、推定された最大誤差内にある文字単位格子を選択できる。一部の実施形態では、バーコードリーダは1つのパラメータ(例えば最小特徴サイズなど)を小さいステップで変えることができる。ステップ1422で、バーコードリーダは、単位サンプリング係数マトリックスを計算するが、これは図15でさらに説明される。ステップ1424で、バーコードリーダは単位サンプリング係数マトリックスから文字をスコアリングするが、これは図16でさらに説明される。スコアが十分である(例えば所定の閾値よりも良い)とバーコードリーダが判定した場合、バーコードリーダはその文字に対するスコアと、関連する文字単位格子を記録できる。 At step 1416 the barcode reader selects the next coarse character unit cell and the method proceeds to step 1420 . At step 1420, the barcode reader selects the next character unit cell perturbation. For example, a barcode reader can select a character unit cell that is different from the estimated value but within the estimated maximum error. In some embodiments, the barcode reader can change one parameter (eg, minimum feature size, etc.) in small steps. At step 1422, the barcode reader computes a unit sampling factor matrix, which is further illustrated in FIG. At step 1424, the barcode reader scores characters from the unitary sampling factor matrix, which is further illustrated in FIG. If the barcode reader determines that the score is sufficient (eg, better than a predetermined threshold), the barcode reader can record the score for that character and the associated character unit cell.

ステップ1426で、バーコードリーダは、格子摂動が残っているかどうかを判定する。格子摂動が残っている場合、バーコードリーダはステップ1420に進む。答が「いいえ」の場合、方法はステップ1428に進み、粗い文字格子が残っているかどうかを判定する。文字格子が残っている場合、方法は図14Aのステップ1416に進む。文字格子が残っていない場合、方法はステップ1430に進み、可能な区切り文字が残っているかどうかを判定する。可能な区切り文字が残っている場合、方法は図14Aのステップ1412に進む。 At step 1426, the barcode reader determines if any grid perturbations remain. If grid perturbations remain, the barcode reader proceeds to step 1420 . If the answer is no, the method proceeds to step 1428 to determine if any coarse character grid remains. If character grids remain, the method proceeds to step 1416 of FIG. 14A. If no character grids remain, the method proceeds to step 1430 to determine if any possible delimiters remain. If there are remaining possible delimiters, the method proceeds to step 1412 of FIG. 14A.

可能な区切り文字が残っていない場合、方法は図14Cのステップ1440に進む。ステップ1440で、バーコードリーダは、最も良く一致する文字をスコアリングする。例えばバーコードリーダは最良のスコアを持つ文字/格子の組み合わせを選択できる。ステップ1442で、バーコードリーダは最良の文字スコアが十分であるかどうかを判定する。例えば最も良く一致する文字スコアが十分でない場合、又は次に最も良い可能な文字スコアを信頼度閾値以上に下回る場合、バーコードリーダは区切り文字を見つけられなかったと判定できる。最良の文字スコアが十分である場合、バーコードリーダはステップ1446に進む。最良の文字スコアが十分でない場合、バーコードリーダはステップ1444に進み、可能な区切り文字開始位置が残っているかどうかを判定する。可能な区切り文字開始位置が残っている場合、方法は図14Aのステップ1404に進む。ここで可能な区切り文字開始位置が残っていない場合、方法はステップ1446に進み、(任意選択で)文字格子を精緻化する。例えばバーコードリーダは各文字格子測定値の小さい摂動を検索して、デコードされた文字についてスコアがどのように変化するかを評価できる。一部の実施形態において、バーコードリーダは、最良のスコアをもたらす文字格子を選択し、それにより修正された開始位置、文字間ギャップ(該当する場合)、最小特徴サイズ、及び/又は細太比(該当する場合)を決定する。 If there are no possible delimiters remaining, the method proceeds to step 1440 of Figure 14C. At step 1440, the barcode reader scores the best matching characters. For example, a barcode reader can select the letter/grid combination with the best score. At step 1442, the barcode reader determines if the best character score is sufficient. For example, if the best matching character score is not sufficient, or if the next best possible character score is below the confidence threshold or more, the barcode reader may determine that the delimiter was not found. If the best character score is sufficient, the barcode reader proceeds to step 1446; If the best character score is not sufficient, the barcode reader proceeds to step 1444 to determine if any possible delimiter start positions remain. If there are remaining possible delimiter start positions, the method proceeds to step 1404 of FIG. 14A. If there are no more possible delimiter start positions left, the method proceeds to step 1446 and (optionally) refines the character grid. For example, a barcode reader can look for small perturbations in each character grid measurement to assess how scores change for decoded characters. In some embodiments, the barcode reader selects the character grid that yields the best score, resulting in modified starting positions, inter-character gaps (if applicable), minimum feature sizes, and/or thickness-to-thickness ratios. (if applicable).

図15は、一部の実施形態による、バーコードをデコードするための単位サンプリング係数を決定するための例示的なコンピュータ化された方法1500を示す。ステップ1502で、バーコードリーダは単位サンプリング係数を初期化する。単位サンプリング係数マトリックスのサイズはnxmでありここでnは実際の1D信号値の数であり、mはモジュールの数(例えば多値幅シンボルの場合)又は文字内のエレメント(例えば2値幅シンボル、又はエレメント単位を使用する多値幅の場合)の数プラス2(例えば文字の前と後のエレメント又は文字間ギャップを表す)である。バーコードリーダは、すべての値を0に初期化する。好ましい実施形態では、係数マトリックスは、疎なマトリックス表現を使用して表示される。 FIG. 15 illustrates an exemplary computerized method 1500 for determining unit sampling factors for decoding barcodes, according to some embodiments. At step 1502, the barcode reader initializes the unit sampling factor. The size of the unit sampling coefficient matrix is nxm, where n is the number of actual 1D signal values and m is the number of modules (e.g. for multi-level symbols) or elements within a character (e.g. binary symbols, or elements For multi-value widths using units) plus 2 (representing, for example, elements before and after characters or inter-character gaps). The barcode reader initializes all values to 0. In the preferred embodiment, the coefficient matrix is displayed using a sparse matrix representation.

ステップ1504で、バーコードリーダはサンプル範囲を決定する。例えばバーコードリーダは、文字内にある中心(例えば1つの文字モジュール又はエレメント内の中心であって、先行又は後続のエレメント又は文字間ギャップではない)を持つ最初と最後のサンプルを決定することができる。ステップ1506で、バーコードリーダは範囲内の次のスキャンサンプルに進む。例えばまだ考慮されていない場合、これは範囲内の最初のサンプルである。上記のように、サンプルは同じインデックスを持つ係数マトリックスの行に対応できる。サンプルは通常、ビンに関連付けられており、これは情報を統合すると推定されるスキャンラインの位置範囲である。サンプルビンは、サンプル位置を中心にしてその周りに配置することができ、サンプル間隔に等しい幅を持つことができる。 At step 1504, the barcode reader determines the sample range. For example, a barcode reader may determine the first and last samples that have centers that are within characters (e.g., centers within one character module or element, not preceding or following elements or intercharacter gaps). can. At step 1506, the barcode reader advances to the next scan sample in range. For example, if not already considered, this is the first sample in the range. As above, the samples can correspond to rows of the coefficient matrix with the same index. Samples are typically associated with bins, which are the range of scanline positions that are presumed to integrate information. The sample bins can be centered around the sample location and can have a width equal to the sample interval.

ステップ1508で、バーコードリーダは、文字単位のオーバーラップを決定する。例えばバーコードリーダは文字単位格子を使用して、各文字単位でオーバーラップするサンプルビンのパーセンテージを計算する(例えば印刷太りgを考慮に入れる)。多値幅シンボル体系の場合、バーコードリーダはモジュールに等しい単位を使用できる。2値幅シンボル体系の場合、バーコードリーダはエレメントに等しい単位を使用できる。バーコードリーダはこれらの値を、サンプルに関連付けられた係数マトリックスの行全体にわたり順番に記録できる。一部の実施形態では、X-g>0.5サンプルピッチの場合、1行あたりせいぜい3個のゼロでないパーセンテージが存在する可能性があり、オーバーラップはサンプルjに最も近いモジュールiを特定して、係数マトリックス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の中心との間の符号付きの差である(例えばすべての位置はサンプル座標の実数値である)。
At step 1508, the barcode reader determines the character-by-character overlap. For example, a barcode reader uses a character-by-character grid to calculate the percentage of sample bins that overlap on each character-by-character basis (eg, takes print gain g into account). For multi-level symbologies, bar code readers can use units equal to modules. For binary symbologies, bar code readers can use units equal to elements. A barcode reader can record these values in sequence across the rows of the coefficient matrix associated with the sample. In some embodiments, if Xg > 0.5 sample pitch, there can be at most 3 non-zero percentages per row, and overlap identifies module i closest to sample j. , the coefficient matrix A can be determined by specifying:
q(i)=(w(i)-1)/2 (equation 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)
here,
w(i) is the width of element i (e.g. X for narrow elements or modules, W for wide elements)
d(i,j) is the signed difference between the center of unit i and the center of sample j (eg all positions are real valued sample coordinates).

ステップ1510で、バーコードリーダは範囲内にスキャンサンプルが残っているかどうかを判定する。範囲内にスキャンサンプルが残っている場合、方法はステップ1506に進む。範囲内にもはやスキャンサンプルが残っていない場合、方法はステップ1512に進んで終了する。 At step 1510, the barcode reader determines if there are any scan samples remaining within range. If scan samples remain within range, the method proceeds to step 1506 . If there are no more scan samples left within range, the method proceeds to step 1512 and ends.

一部の実施形態では、バーコードリーダは、誤差の関数e=s-Abを使用して文字に対するスコアを決定するように構成されている。この関数の例は、2乗誤差の合計、絶対誤差の合計、最大誤差及び/又は同種のものを含む。一部の実施形態では、誤差は係数マトリックスを通して「逆伝搬」されて、元の文字単位(モジュール又はエレメント)の誤差を計算する。逆伝搬は、次式に従って単位誤差ベクトルe(b)を計算することによって達成できる。
e(b)=Ae' 式9
ここで、
・e(b)は単位誤差ベクトルである。
・e'は、e'(i)=|e(i)|によって定義される絶対信号誤差のベクトルである。
In some embodiments, the barcode reader is configured to determine scores for characters using an error function e=s−Ab. Examples of this function include sum of squared errors, sum of absolute errors, maximum error, and/or the like. In some embodiments, the error is "backpropagated" through the coefficient matrix to compute the original character-by-character (module or element) error. Backpropagation can be achieved by calculating the unit error vector e(b) according to the following equation.
e(b)=A T e' Equation 9
here,
• e(b) is the unit error vector.
• e' is the vector of absolute signal errors defined by e'(i) = |e(i)|

パターンbに対する全体誤差は、例えば2乗単位誤差の合計、単位誤差の合計、最大単位誤差及び/又は同種のものを使用して計算できる。一部の実施形態では、2乗単位誤差の合計がデータ文字に使用される(例えばたった1つの単位が正しくない場合でもコストのかかる誤読を招くことあるため)。一部の実施形態において、単位誤差の合計は区切り文字に対して使用される(例えば誤読はそれほど有害ではないが、区切り文字が欠落するとシンボルをデコードしようとさえしない場合)。 The overall error for pattern b can be calculated using, for example, sum of squared unit errors, sum of unit errors, maximum unit error, and/or the like. In some embodiments, the sum of squared unit errors is used for data characters (eg, because even one unit incorrect can lead to costly misinterpretations). In some embodiments, the sum of the unit errors is used for delimiters (eg, where misreading is less harmful, but missing delimiters do not even attempt to decode the symbol).

図16は、一部の実施形態による、バーコードをデコードするためにスキャン信号から文字をスコアリングするための例示的なコンピュータ化された方法1600を示す。ステップ1602で、バーコードリーダは文字単位パターンを作成する。例えば一部の実施形態では、バーコードリーダは、文字に関連付けられたバイナリ単位エンコーダパターンを識別する。例えば多値幅文字の場合、単位エンコードパターンは、文字エレメント幅パターンから導出されたバー又はスペースの一部であることができるモジュールのパターンである。例えば2値幅文字の場合、単位エンコードパターンは、常に適当な値(バー又はスペース)で始まり、バー値とスペース値が交互する配列であるエレメント値のパターンである。 FIG. 16 illustrates an exemplary computerized method 1600 for scoring characters from scan signals for decoding barcodes, according to some embodiments. At step 1602, the barcode reader creates a character-by-character pattern. For example, in some embodiments, a barcode reader identifies binary unit encoder patterns associated with characters. For example, for multi-width characters, the unit encoding pattern is a pattern of modules that can be part of bars or spaces derived from the character element width pattern. For binary width characters, for example, the unit encoding pattern is a pattern of element values that always begin with the appropriate value (bar or space) and are an array of alternating bar and space values.

ステップ1604で、バーコードリーダは単位サンプリング係数の乗算を実行する。例えばバーコードリーダは、単位サンプリング係数マトリックスに単位エンコードパターンを乗算して、予測(又は予想)された信号ベクトルを取得できる。ステップ1606で、バーコードリーダは予測信号と測定信号を比較することができる。一部の実施形態では、比較の結果として予測信号が測定信号とどれだけ良く一致するかを示す1つ以上の文字スコアを生成するように、バーコードリーダを構成することができる。これは、前述のように様々な方法で実現できる。一部の実施形態では、バーコードリーダは、実際の信号をローカル信号包絡線(例えば信号内のバーとスペースの見かけの反射率に対応する最小及び最大信号範囲)で正規化した後に2つの値を減算できる。 At step 1604, the barcode reader performs unit sampling factor multiplication. For example, a barcode reader can multiply the unitary sampling coefficient matrix by the unitary encoding pattern to obtain the predicted (or expected) signal vector. At step 1606, the barcode reader can compare the expected signal and the measured signal. In some embodiments, the barcode reader can be configured to generate one or more character scores indicating how well the predicted signal matches the measured signal as a result of the comparison. This can be accomplished in a variety of ways, as discussed above. In some embodiments, the barcode reader outputs two values after normalizing the actual signal with the local signal envelope (e.g., the minimum and maximum signal range corresponding to the apparent reflectance of bars and spaces in the signal). can be subtracted.

図17は、一部の実施形態による、バーコードをデコードするためのマルチレベルバーコードのスキャン信号から文字をデコードするための例示的なコンピュータ化された方法1700を示す。ステップ1702を参照すると、バーコードリーダは、例えば図17で説明したように単位サンプリング係数を決定する。ステップ1704で、バーコードリーダは可能なデータ文字を識別する。例えばコード128など一部のコードでは、すべてのデータ文字が可能であろう。UPC-EANなど他のコードでは、適当なサブグループ(A、B、又はC)の文字のみ可能であろう。ステップ1706で、バーコードリーダは次の可能なデータ文字を選択する。ステップ1708で、バーコードリーダは単位サンプリング係数を使用して文字をスコアリングする。 FIG. 17 illustrates an exemplary computerized method 1700 for decoding characters from a multi-level barcode scan signal for decoding barcodes, according to some embodiments. Referring to step 1702, the barcode reader determines unit sampling factors, eg, as described in FIG. At step 1704, the barcode reader identifies possible data characters. Some codes, for example Code 128, would allow all data characters. Other codes, such as UPC-EAN, would only allow characters of the appropriate subgroup (A, B, or C). At step 1706, the barcode reader selects the next possible data character. At step 1708, the barcode reader scores the characters using a unit sampling factor.

ステップ1710で、バーコードリーダはスコアが十分に高いかどうかを判定する。スコアが十分に高くない場合、方法はステップ1706に進む。スコアが十分に高い場合、バーコードリーダはステップ1712に進み、文字とスコアを記録する。ステップ1714で、バーコードリーダは、可能なデータ文字が残っているかどうかを判定する。可能なデータ文字が残っている場合、バーコードリーダはステップ1706に進む。データ文字が残っている可能性がない場合、バーコードリーダはステップ1716に進み、バーコードリーダは最良のスコアが2番目に良いスコア(ある場合)より少なくとも信頼度閾値だけ優れているかどうかを判定する。バーコードリーダが最良の文字を識別したと確信すると、バーコードリーダはステップ1720に進み、最良の文字とスコアを記録する。バーコードリーダが確信しない場合、文字はデコードされない。 At step 1710, the barcode reader determines if the score is high enough. If the score is not high enough, the method proceeds to step 1706; If the score is high enough, the barcode reader proceeds to step 1712 and records the letter and score. At step 1714, the barcode reader determines if there are any remaining possible data characters. If there are remaining possible data characters, the barcode reader proceeds to step 1706; If no data characters may remain, the barcode reader proceeds to step 1716 where the barcode reader determines whether the best score is better than the second best score (if any) by at least a confidence threshold. do. Once the barcode reader believes it has identified the best character, it proceeds to step 1720 and records the best character and score. If the barcode reader is not convinced, the characters are not decoded.

図18は、一部の実施形態による、バーコードをデコードするための2レベル又はマルチレベルバーコードのスキャン信号から文字をデコードするための例示的なコンピュータ化された方法1800を示す。ステップ1802で、方法は可能なデータ文字を識別する。例えばコード39など一部のコードでは、すべてのデータ文字が可能であろう。コーダバーなど他のコードでは、適当な長さの文字のみが可能である。ステップ1804で、方法は次の可能なデータ文字を選択する。ステップ1806で、方法は、(例えば図15に関連して説明したように)単位サンプリング係数を決定する。ステップ1808で、方法は(例えば図16に関連して説明したように)単位サンプリング係数を使用して文字をスコアリングする。 FIG. 18 illustrates an exemplary computerized method 1800 for decoding characters from a bi-level or multi-level barcode scan signal for decoding barcodes, according to some embodiments. At step 1802, the method identifies possible data characters. Some codes, for example Code 39, would allow all data characters. Other codes, such as Codabar, only allow characters of moderate length. At step 1804, the method selects the next possible data character. At step 1806, the method determines unit sampling factors (eg, as described in connection with FIG. 15). At step 1808, the method scores the characters using unit sampling factors (eg, as described in connection with FIG. 16).

ステップ1810で、バーコードリーダはスコアが所定の閾値を超えているかどうかを判定する。スコアが所定の閾値を超えていない場合、方法はステップ1804に戻る。スコアが所定の閾値を超えている場合、方法はステップ1812に進み、文字とスコアを記録する。ステップ1814で、方法は、可能なデータ文字が残っているかどうかを判定する。可能なデータ文字が残っている場合、方法はステップ1804に進む。可能なデータ文字が残っていない場合、方法はステップ1816に進む。ステップ1816で、バーコードリーダは最良のスコアが2番目に良いスコア(ある場合)よりも少なくとも信頼度閾値だけ優れているかどうかを判定する。バーコードリーダが最良の文字を識別したと確信すると、バーコードリーダはステップ1720に進み、最良の文字とスコアを記録する。バーコードリーダが確信しない場合、文字はデコードされず、方法はステップ1818で終了する。 At step 1810, the barcode reader determines whether the score exceeds a predetermined threshold. If the score does not exceed the predetermined threshold, the method returns to step 1804. If the score exceeds the predetermined threshold, the method proceeds to step 1812 and records the letter and score. At step 1814, the method determines whether any possible data characters remain. If there are remaining possible data characters, the method proceeds to step 1804 . If there are no more possible data characters left, the method proceeds to step 1816 . At step 1816, the barcode reader determines whether the best score is better than the second best score (if any) by at least a confidence threshold. Once the barcode reader believes it has identified the best character, it proceeds to step 1720 and records the best character and score. If the barcode reader is not convinced, the character is not decoded and the method ends at step 1818.

様々な2Dシンボル体系を用いて、上述したようにデータマトリックス、QRコード(登録商標)、アズテックコード、マキシコード、ベリコード及び他の2Dシンボルなどの情報をエンコードすることができる。図19Aは一部の実施形態による、例示的なデータマトリックス2Dシンボル1900を示している。最も左の列1902と最も下の行1904はデータマトリックス「L」を形成しており、これはすべてのデータマトリックスシンボルに対して存在し、画像内にデータマトリックスシンボルの位置を特定して、その向きを判定するために使用される。データマトリックスシンボル1900は、シンボルの情報をエンコードするために使用されるモジュールのセット(例えば黒いモジュール1906や白いモジュール1908のような黒と白のモジュール)で構成されている。図19Bは、幾つかの例に従い、例示的なQRコードシンボル1950を示している。データマトリックスシンボル1900における「L」パターンの代わりに、QRコードシンボル1950は、3個のブルズアイ(牡牛の目)1952、1954及び1956を含んでおり、これらは画像内にQRコードシンボル1950の位置を特定して、その向きを判定するために使用される。データマトリックスシンボル1900と同様に、QRコードシンボル1950は、黒いモジュール1958と白いモジュール1960のようなシンボルの情報をエンコードするために使用される。 Various 2D symbologies can be used to encode information such as Data Matrix, QR Codes, Aztec Codes, Maxicodes, Vericodes and other 2D symbols as described above. FIG. 19A shows an exemplary Data Matrix 2D symbol 1900, according to some embodiments. The leftmost column 1902 and bottommost row 1904 form the Data Matrix "L", which exists for every Data Matrix symbol and locates the Data Matrix symbol within the image and its Used to determine orientation. Data Matrix symbol 1900 is made up of a set of modules (eg, black and white modules such as black module 1906 and white module 1908) used to encode information for the symbol. FIG. 19B shows an exemplary QR Code symbol 1950, according to some examples. Instead of the "L" pattern in Data Matrix symbol 1900, QR Code symbol 1950 includes three bullseyes 1952, 1954 and 1956, which represent the location of QR Code symbol 1950 in the image. is used to identify and determine its orientation. Similar to Data Matrix symbol 1900 , QR Code symbol 1950 is used to encode information for symbols such as black module 1958 and white module 1960 .

コード128、コード93、UPC-EAN、PDF417、マイクロPDF、データバー、その他のシンボルなど、様々な多値幅1Dシンボルを使用して情報をエンコードできる。上述のように、図2は、モジュール202A~202Eのセットを有する、多値幅シンボル体系コード128を使用して生成された例示的なバーコード200を示す。 A variety of multi-level wide 1D symbols can be used to encode information, such as Code 128, Code 93, UPC-EAN, PDF417, micro PDF, data bars, and other symbols. As mentioned above, FIG. 2 shows an exemplary barcode 200 generated using the multi-level symbology code 128 having a set of modules 202A-202E.

上記のように、撮像アプリケーションがサンプリング不足やぼやけなどの解像度不足のシンボルを取得する理由は幾つかある。例えば一部の撮像アプリケーションは、コンベアベルトに沿って移動する物体を撮像するために取り付けられたセンサを使用する。このようなセンサは、より大きい視野(FOV)を実現するためにコンベヤーベルト(及びコンベヤーベルトによって運ばれる物体)から十分に離れた位置に取り付けることができる。しかしながらより大きいFOVを実現するための代償は、物体及び/又は物体上のシンボルの解像度の低下であり、その結果として物体及びシンボルの画像が不十分になる。別の例として、シンボルは物体の底側に向かって位置が特定されることができるが、その結果コードはセンサなどからさらに離れ、やはりシンボルの解像度が不足した画像をもたらすことにつながる。したがって技術を使用して、解像度不足の1D及び2Dシンボルをデコードすることが望ましい場合がある。 As noted above, there are several reasons why an imaging application may acquire under-resolved symbols, such as under-sampling or blurring. For example, some imaging applications use sensors attached to image objects moving along a conveyor belt. Such sensors can be mounted far enough away from the conveyor belt (and objects carried by the conveyor belt) to achieve a larger field of view (FOV). However, the price to achieve a larger FOV is a reduced resolution of objects and/or symbols on objects, resulting in poor images of objects and symbols. As another example, the symbols can be located toward the bottom side of the object, but the resulting code is further away from the sensor, etc., again leading to a poorly resolved image of the symbol. Therefore, it may be desirable to use techniques to decode under-resolution 1D and 2D symbols.

解像度不足の1Dシンボルをデコードする技術がある。1Dシンボルの場合、この技術はシンボルの文字の態様を活用できる。また、2Dシンボルと比較して、1Dシンボル文字に対する値の可能性は著しく少ないので、1D技術は可能性のある有効な値の組み合わせをすべて試してシンボルをデコードできる。例えば128コードバーコードの場合、103個の標準文字パターンがあるため、この限られたセットのパターンを前提として一部の1D技術は本質的にすべての文字パターンを試すだけである。例えば本明細書で説明された技術は解像度不足の1Dシンボルのデコードを提供する。 Techniques exist for decoding under-resolution 1D symbols. For 1D symbols, this technique can take advantage of the character aspect of the symbol. Also, since there are significantly fewer possible values for 1D symbol characters compared to 2D symbols, 1D techniques can try all possible valid value combinations to decode symbols. For example, for a 128 code barcode, there are 103 standard character patterns, so given this limited set of patterns, some 1D techniques essentially just try all character patterns. For example, the techniques described herein provide decoding of under-resolution 1D symbols.

1Dシンボルとは異なり、モジュール値のすべての可能な組み合わせを単純に試すだけでは、未知のモジュール値を決定することはしばしば実行可能ではない。例えば2Dシンボル(2、ここでnはシンボル内のモジュールの数)に対してすべての可能なバイナリ2Dパターンを列挙して評価することは、しばしば非現実的であり、結果を現実的な時間枠内で生み出すことはできない。可能性のあるすべてのバイナリ2Dパターンを片っ端から試すことも、モジュール誤差に対する感受性が低い。なぜなら1個のモジュールはパターン全体の非常に小さいパーセンテージであり、それゆえ全体的な誤差に及ぼす効果は、シンボルの特定された位置の不正確さに起因する誤差の効果に比べて小さいからである。別の例として、1Dシンボルに対するすべての可能な多値幅パターンを列挙して評価することは、個々の文字を個別に考慮することなく同様に非実用的である。 Unlike 1D symbols, it is often not feasible to determine unknown module values by simply trying all possible combinations of module values. For example, it is often impractical to enumerate and evaluate all possible binary 2D patterns for a 2D symbol (2 n , where n is the number of modules in the symbol), and the results can be evaluated in a realistic time It cannot be created within a frame. Running through all possible binary 2D patterns is also less sensitive to modular errors. Because one module is a very small percentage of the total pattern, its effect on the overall error is small compared to the effect of error due to inaccuracies in the specified positions of the symbols. . As another example, it is similarly impractical to enumerate and evaluate all possible multi-value width patterns for a 1D symbol without considering each character individually.

本明細書に記載される技術は、図19A-19Bに示される2Dバーコード、及び図2に示される多値幅バーコードなどのシンボルの解像度不足の画像のデコードを提供する。本明細書でさらに説明するように、技術は、シンボルの画像内の既知のピクセル値と未知の(黒又は白の)モジュール値との間に数学的関係を確立することを含んでよい。例えば幾つかの非限定的な実施形態では、線形方程式の制約不足のセットは、疎なサンプリングマトリックスとして表現できる。サンプリングマトリックスの各係数エレメント(i、j)は、画像内のi番目のピクセルとシンボル内のj番目のモジュールとの間のオーバーラップ率の推定値であることができる。この技術は、モジュールがオーバーラップするピクセルに対する係数と値を分析して、モジュールの可能性を論理的に推測し、及び/又は反復的な方法でモジュール値を満たすことを含む。2Dシンボルモジュールを反復的に考慮すると、全体的な可能性の数をすばやく減らすことができ(例えば2n未満)、未知の2Dモジュール値の決定が実行可能になる。 The techniques described herein provide decoding of under-resolution images of symbols such as the 2D barcodes shown in FIGS. 19A-19B and the multi-level barcode shown in FIG. As described further herein, the technique may involve establishing a mathematical relationship between known pixel values and unknown (black or white) module values within the image of the symbol. For example, in some non-limiting embodiments, an underconstrained set of linear equations can be represented as a sparse sampling matrix. Each coefficient element (i,j) of the sampling matrix can be an estimate of the overlap ratio between the i th pixel in the image and the j th module in the symbol. This technique involves analyzing coefficients and values for pixels where the modules overlap, logically deducing module possibilities, and/or filling the module values in an iterative manner. Considering the 2D symbol modules iteratively can quickly reduce the overall number of possibilities (eg, less than 2n), making determination of unknown 2D module values feasible.

図20は、一部の実施形態による、解像度不足のシンボルをデコードするための例示的なコンピュータ化された方法2000を示す。ステップ2002で、画像処理装置はシンボルの部分のデジタル画像を受け取る。画像処理装置は、バーコードリーダ、バーコードリーダに連結された外部コンピューティングデバイス、及び/又は本明細書で論じる技術を実行するように構成された他の何らかのコンピューティングデバイスであってよい。ステップ2004で、画像処理装置は、モジュールの格子内のモジュールの連続サブセットとピクセルの格子との間の空間マッピングを決定する。ステップ2006で、画像処理装置は空間マッピングを用いて、モジュールの連続サブセット内の各モジュールとピクセルの格子との間の因果関係を決定する。各因果関係は、モジュールの値がピクセルの格子内のピクセルのサブセットの値の各々に与える影響の程度を表すことができる。ステップ2008で、画像処理装置は因果関係を用いて、モジュールの連続サブセット内で隣接する2個以上のモジュールの値の有効な組み合わせのセットをピクセルの格子に照らしてテストする。ステップ2010で、画像処理装置は2個以上の隣接するモジュールの少なくとも1個のモジュールの値を、テストされた有効な組み合わせのセットに基づいて決定する。ステップ2012では、画像処理装置は、少なくとも1個のモジュールの決定された値に基づいてシンボルをデコードする。 FIG. 20 illustrates an exemplary computerized method 2000 for decoding under-resolution symbols, according to some embodiments. At step 2002, an image processor receives a digital image of a portion of a symbol. The image processor may be a barcode reader, an external computing device coupled to the barcode reader, and/or some other computing device configured to perform the techniques discussed herein. At step 2004, the image processor determines a spatial mapping between a contiguous subset of modules in the grid of modules and the grid of pixels. At step 2006, the image processor uses spatial mapping to determine causal relationships between each module in the contiguous subset of modules and the grid of pixels. Each causal relationship can represent the extent to which the value of the module affects each of the values of a subset of pixels in the grid of pixels. In step 2008, the image processor uses causality to test the set of valid combinations of values of two or more adjacent modules in a contiguous subset of modules against a grid of pixels. At step 2010, the image processor determines the value of at least one of the two or more adjacent modules based on the set of valid combinations tested. At step 2012, the image processor decodes the symbols based on the determined values of the at least one module.

ステップ2002を参照すると、バーコードリーダなどのシンボルリーダは、自動的にシンボルをデコードする装置である。シンボルリーダは、カメラの光学系や撮像センサ(CCDアレイなど)を使用するなどして、バーコードの離散画像を取得する画像ベースのシンボルリーダを含む。結果の画像は、バーコード全体の1D又は2Dサンプリングである。その画像の各画像サンプル又はピクセル自体が、バーコードの小さい領域の平均反射率の測定値である。 Referring to step 2002, a symbol reader, such as a barcode reader, is a device that automatically decodes symbols. Symbol readers include image-based symbol readers that obtain discrete images of barcodes, such as by using camera optics or imaging sensors (such as CCD arrays). The resulting image is a 1D or 2D sampling of the entire barcode. Each image sample or pixel of the image is itself a measure of the average reflectance of a small area of the barcode.

図21-25Bは、本明細書に開示される技術を2次元バーコード適用した例示的な例として用いられる。図21は、一部の実施形態による、2Dシンボルの例示的な画像2100を示す。画像2100は、各ピクセルの暗さを示す関連したピクセル値を有するピクセルのセット(例えばピクセル2102及び2104)を含む。各画像は、8ビット値に対して0~255など所定の輝度範囲内の値を持つことができるピクセル値のセットを有してよい。グレースケール画像などの幾つかの例では、0は黒を表し、255は白を表わすことができる。かしながら、実際には撮像システムは、色の全範囲を達成できないことがあり、その結果として範囲は、通常は画像内のピクセルに許容される値よりも制限されることがある。 21-25B are used as illustrative examples of applying the techniques disclosed herein to a two-dimensional barcode. FIG. 21 shows an exemplary image 2100 of 2D symbols, according to some embodiments. Image 2100 includes a set of pixels (eg, pixels 2102 and 2104) with associated pixel values that indicate the darkness of each pixel. Each image may have a set of pixel values that can have values within a predetermined luminance range, such as 0-255 for 8-bit values. In some examples, such as grayscale images, 0 can represent black and 255 can represent white. In practice, however, the imaging system may not be able to achieve the gamut of colors, and as a result the gamut may be more limited than the values normally allowed for pixels in the image.

一部の実施形態では、この技術は、画像信号の包絡線を使用してシンボルをデコードする。包絡線には、画像全体の信号の最大及び最小ピクセル値を含む。包絡線の最大値は、画像の白を示し(しかし例えば画像に許容される理論上の最大値に必ずしも対応しない)、最小値は画像の黒を示す(しかし例えば画像に許容される理論上の最大値に必ずしも対応しない)。したがってピクセル値を局所的前景(暗い)と局所的背景(明るい)の間でマッピングして、0~1の範囲のピクセル値を生成できる。こうしてシステムは画像の特定の包絡線によって信号値を正規化して、ピクセルが特定のアプリケーションに対してどれだけ「黒い」か「白い」かの尺度を決定できる。例えば画像内のシンボルは、照明の角度による勾配を持つことがあり、この場合シンボルの片側は均一なグレーであるが、もう片側は黒になる。信号包絡線を決定すると、例えば画像の様々な部分間の照明の差、影及び/又は同種のものを正規化できる。信号包絡線は、例えば本明細書で説明するものと同様の方法で決定できるが、1D処理ではなく2D処理を使用する。別の例として、各ピクセルの周囲の局所的領域内でヒストグラムのテールを計算することにより、信号包絡線を決定できる。 In some embodiments, the technique uses the envelope of the image signal to decode the symbols. The envelope contains the maximum and minimum pixel values of the signal across the image. The maximum value of the envelope indicates white in the image (but does not necessarily correspond to e.g. the theoretical maximum allowed for the image) and the minimum value indicates black in the image (but e.g. does not necessarily correspond to the maximum value). Thus, pixel values can be mapped between the local foreground (dark) and the local background (light) to produce pixel values ranging from 0 to 1. The system can thus normalize the signal values by a particular envelope of the image to determine a measure of how "black" or "white" a pixel is for a particular application. For example, a symbol in an image may have a gradient due to the angle of illumination, where one side of the symbol is a uniform gray while the other side is black. Determining the signal envelope can, for example, normalize lighting differences between different parts of the image, shadows and/or the like. The signal envelope can be determined, for example, in a similar manner as described herein, but using 2D processing rather than 1D processing. As another example, the signal envelope can be determined by computing the tail of the histogram within the local region around each pixel.

ステップ2004を参照すると、図22Aは、一部の実施形態による、図21からの画像2100の上部に重ね合わせた例示的なモジュールの格子を示している。この具体的な例では、モジュールの格子のピッチ(例えばモジュールサイズ)はピクセルの格子のピッチとほぼ同じであり、即ち解像度はモジュールあたり約1ピクセルである。しかしながら常にそうであるとは限らない。極端に低解像度の画像では、モジュールのピッチがピクセルの格子のピッチより著しく大きくなり、高解像度の画像では、モジュールの格子のピッチが画像格子のピッチよりもはるかに小さくなる。この技術は、最初に画像のピクセルの格子に関連するシンボルのモジュールの格子の位置を特定することを含む。2Dシンボルの場合、例えばシンボル上のファインダパターン(例えばデータマトリックスシンボルの「L」パターン、又はQRコードのブルズアイパターン)を使用して格子の位置を特定できる。 Referring to step 2004, FIG. 22A shows an exemplary grid of modules superimposed on top of image 2100 from FIG. 21, according to some embodiments. In this particular example, the module grid pitch (eg, module size) is approximately the same as the pixel grid pitch, ie, the resolution is about 1 pixel per module. However, this is not always the case. In extremely low resolution images the module pitch is significantly larger than the pixel grid pitch, and in high resolution images the module grid pitch is much smaller than the image grid pitch. This technique involves first locating a grid of symbolic modules relative to a grid of pixels of the image. For 2D symbols, for example, a finder pattern on the symbol (eg, the 'L' pattern for Data Matrix symbols, or the bull's eye pattern for QR codes) can be used to locate the grid.

画像処理装置は、2Dシンボルに対する1つ以上のモジュールの格子を格納でき、これらはシンボルに対するモジュールの2次元レイアウトを表す。画像処理装置は、画像2100に対してモジュールの格子2200の位置を特定して、モジュールの格子内のモジュールと画像内のピクセルの格子との間の空間マッピングを決定することができる。モジュールの格子2200と画像2100内のピクセルの格子との関係は、例えば各モジュールが画像2100内のピクセルとどれだけ多くオーバーラップしているかを反映することができる。図22Aは、ピクセルの格子に重ねられたモジュール2200の2D格子を示すことにより、そのような関係を高レベルで示している。それゆえモジュールの格子2200と画像2100のピクセルの格子との関係は、各モジュールが各ピクセルにどの程度影響するかを反映することができる。ほとんどの影響はゼロになる(例えば特定のモジュールとオーバーラップしない画像内の大多数のピクセルで)。 The image processor can store one or more grids of modules for the 2D symbol, which represent the two-dimensional layout of the modules for the symbol. The image processor can locate the grid of modules 2200 relative to the image 2100 to determine the spatial mapping between the modules in the grid of modules and the grid of pixels in the image. The relationship between the grid of modules 2200 and the grid of pixels in the image 2100 can reflect how much each module overlaps pixels in the image 2100, for example. FIG. 22A illustrates such a relationship at a high level by showing a 2D grid of modules 2200 superimposed on a grid of pixels. Therefore, the relationship between the grid of modules 2200 and the grid of pixels of the image 2100 can reflect how much each module affects each pixel. Most of the effect will be zero (eg at the majority of pixels in the image that do not overlap with a particular module).

図22Bは、サンプリングマトリックス2270の部分例を示しており、これは一部の実施形態による、ピクセルの格子2250における各ピクセルが、モジュールの格子2260の例示的モジュール2262によってオーバーラップされるパーセンテージを示す。一部の実施形態では、特定のモジュールに対するパーセンテージがほぼモジュールサイズとなることができる。この例ではモジュールサイズは近似的に1であり、より近似的には0.9である。一部の実施形態では、特定のピクセルに対するすべてのモジュールにわたるパーセンテージを合計するとおよそ100%になることができる。図示されているように、モジュール2262はピクセルの格子2250で4個のピクセル、即ちピクセル2252、2254、2256及び2258がオーバーラップしている。サンプリングマトリックス部分2270はオーバーラップ率、即ち15%、20%、25%、30%を示しており、これらはモジュール2262がピクセル2252、2254、2256及び2258とそれぞれオーバーラップしていることを示す(即ちこれらのピクセルの各部分はモジュール2262によってカバーされている)。サンプリングマトリックス部分2270における残りの値は、モジュール2262がピクセルの格子2250における他のいずれのピクセルともオーバーラップしないため、0%である。簡単にするために、図22Bは点線の矢印で示すように、ピクセルの格子2250とサンプリングマトリックス2270の一部のみを示している。一部の実施形態では、本明細書でさらに論じるように、画像全体を表す代わりに3×3サンプリングマトリックス及び/又は1×9サンプリングマトリックスなど小さいサンプリングマトリックスが使用される。このような小さいサンプリングマトリックスは、そのまま格納することも、大きいサンプリングマトリックスから導出することもできる。 FIG. 22B shows an example portion of a sampling matrix 2270, which shows the percentage by which each pixel in pixel grid 2250 is overlapped by an exemplary module 2262 in module grid 2260, according to some embodiments. . In some embodiments, the percentage for a particular module can be approximately the module size. In this example the module size is approximately 1 and more approximately 0.9. In some embodiments, the percentages across all modules for a particular pixel can add up to approximately 100%. As shown, module 2262 has four pixels overlapping in pixel grid 2250: pixels 2252, 2254, 2256 and 2258. FIG. Sampling matrix portion 2270 shows the overlap percentages, namely 15%, 20%, 25%, 30%, which indicate that module 2262 overlaps pixels 2252, 2254, 2256 and 2258 respectively ( each portion of these pixels is covered by module 2262). The remaining values in sampling matrix portion 2270 are 0% because module 2262 does not overlap any other pixels in grid of pixels 2250 . For simplicity, FIG. 22B shows only a portion of pixel grid 2250 and sampling matrix 2270, as indicated by the dashed arrows. In some embodiments, as discussed further herein, a smaller sampling matrix is used instead of representing the entire image, such as a 3x3 sampling matrix and/or a 1x9 sampling matrix. Such small sampling matrices can be stored as is or derived from larger sampling matrices.

一部の実施形態において、モジュールの格子とピクセルの格子との間の関係は、1つ以上の位置特定技術を用いて決定できる。この技術は、例えば1モジュールあたりのピクセル数(PPM)に基づいて決定できる。例えば特定のPPM値又は範囲に対して特定の技術を使用でき、この技術は、1つの技術が画像内のシンボルの特定の特性を識別できるようになるまで(例えば個別に、順次に及び/又は同種のやり方で)実行できる。一部の実施形態では、PPMが知られていない場合がある。そのような場合に本明細書でさらに論じるように、1つ以上の技術を実行して、モジュールの格子の位置を特定してPPMを決定することができる。例えばPPMが最も高い画像で使用される技術を最初に試し、それから次に高いPPMに対する技術を試し、画像内でシンボルの位置と向きが決定されるまで試すことができる。 In some embodiments, the relationship between the grid of modules and the grid of pixels can be determined using one or more localization techniques. This technique can be determined based on pixels per module (PPM), for example. For example, specific techniques can be used for specific PPM values or ranges until one technique can identify specific characteristics of symbols in an image (e.g., individually, sequentially and/or in a similar way). In some embodiments, the PPM may not be known. In such cases, one or more techniques may be performed to locate the grid of modules and determine the PPM, as discussed further herein. For example, the technique used in the image with the highest PPM may be tried first, then the technique for the next higher PPM, until the position and orientation of the symbol within the image are determined.

以下の例では、異なるPPM範囲に対して使用される様々な技術について説明する。この例は、例示のみを目的とするもので、本明細書に記載する技術の精神から逸脱することなく、異なる範囲、範囲の数、値などを使用できる。この非限定的な例によれば、モジュールの格子の関係は特定のPPM(例えば2PPM)に至るまで、シンボル内の既知のパターンの位置を特定することによって決定できる。例えばデータマトリックスシンボルの場合、技術はシンボルの2つの側部に「L」パターンの位置を特定できる。「L」パターンの位置が特定されると、それらを通過する1Dスキャンに沿ってエッジを検出することによって、技術は他の2つの側部の各々にタイミングパターンを見出すことができる。そのような技術の一例は、データマトリックスシンボル体系のためのISO/IEC16022規格に記載されている参照コードアルゴリズムであり、その全体が参照により本明細書に組み込まれる。この例はデータマトリックスシンボル体系のためのものであるが、他のシンボル体系のデコードは、シンボル内の既知の特徴の位置を特定することにより、同様の方法で実行できることを理解されたい。例えばQRコードはブルズアイ部分の位置を特定することにより、同様の方法で決定できるが、このことはQRコードシンボル体系のためのISO/IEC18004規格の「QRコード2005の参照デコードアルゴリズム」セクションに規定されており、これは参照によりその全体が本明細書に組み込まれる。格子サイズは、参照デコードアルゴリズムに記載されたやり方で決定することもできる。 The following examples describe various techniques used for different PPM ranges. This example is for illustrative purposes only and different ranges, range numbers, values, etc. may be used without departing from the spirit of the technology described herein. According to this non-limiting example, the grid relationships of modules can be determined by locating known patterns within the symbol down to a particular PPM (eg, 2 PPM). For a Data Matrix symbol, for example, the technique can locate the "L" pattern on two sides of the symbol. Once the 'L' patterns are located, the technique can find the timing patterns on each of the other two sides by detecting edges along the 1D scan that passes through them. One example of such a technique is the reference code algorithm described in the ISO/IEC 16022 standard for the Data Matrix symbology, which is hereby incorporated by reference in its entirety. Although this example is for a Data Matrix symbology, it should be appreciated that decoding of other symbologies can be performed in a similar manner by locating known features within the symbol. For example, QR codes can be determined in a similar manner by locating the bullseye portion, which is specified in the "QR Code 2005 Reference Decoding Algorithm" section of the ISO/IEC 18004 standard for the QR Code symbology. , which is incorporated herein by reference in its entirety. Lattice size can also be determined in the manner described in the reference decoding algorithm.

低解像度(例えば2PPM~1.2PPM)では、この技術は既知のシンボルパターン(例えばデータマトリックスシンボルに対する「L」パターン)の位置を特定できないことがある。例えばシステムは、シンボルエッジなどシンボルのアスペクトがサンプリング不足のために既知のシンボルパターンの位置を特定できない場合がある。この技術は、シンボルの特徴の視認性を高めるために、最初にピクセル処理を実行して、画像のアップサンプリングなどのシンボル特徴を強化することができる。アップサンプリングは、例えばピクセル間の値を非線形的に補間することを含む。例えば多項式補間を使用できる。 At low resolutions (eg, 2PPM to 1.2PPM), this technique may not be able to locate known symbol patterns (eg, 'L' patterns for Data Matrix symbols). For example, the system may not be able to locate known symbol patterns due to under-sampling of symbol aspects such as symbol edges. This technique may perform pixel processing first to enhance symbol features, such as image upsampling, in order to increase the visibility of symbol features. Upsampling involves, for example, non-linearly interpolating values between pixels. For example, polynomial interpolation can be used.

さらに低い解像度(例えば1.2PPM未満など)の場合、画像の劣化(エイリアス)が激しいため、例えばピクセル処理を行っても特定のシンボルの特徴を検出することはほぼ不可能な場合がある。例えばシステムは既知の特徴及び/又はタイミングパターンを検出できない場合がある。より高いPPMに関連する技術が失敗した場合、技術は(例えばサブピクセル精度で)シンボルの外側の長方形の位置を特定して、エッジを探すよりもグレースケールデジタル波形を用いて格子サイズを決定するように構成できる。例えばブロブ分析、一般化されたハフ変換などの視覚技術を使用して、2Dシンボルの境界(例えば図19A及び図19Bに示すような長方形)の位置を特定することができる。一部の実施形態において、使用される技術は特定の視覚システムの照明条件に依存してよい。例えばより堅牢な方法を使用できる。例えば一部の実施形態では、システムはエッジを検出し、エッジを輪郭別にまとめ、結果として生じるポリラインの頂点の数を減らして(例えばレーマー・ダグラス・ポイカー・アルゴリズムなどの技術を用いて)、結果として得られる画像形状を分析してほぼ90度の角度の4隅を持つ多角形を認識する。次に長方形の4辺に沿ったサブピクセルエッジの各グループに線を合わせることによって、長方形の4辺のサブピクセル位置を決定することができよう。 At even lower resolutions (eg, less than 1.2 PPM), image degradation (aliasing) is so severe that it may be nearly impossible to detect particular symbol features, even with pixel processing, for example. For example, the system may not be able to detect known features and/or timing patterns. If the technique associated with higher PPM fails, the technique locates the outer rectangle of the symbol (e.g., with sub-pixel accuracy) and determines the grid size using the grayscale digital waveform rather than looking for edges. can be configured as Visual techniques such as blob analysis, generalized Hough transform, etc., can be used to locate the boundaries (eg, rectangles as shown in FIGS. 19A and 19B) of 2D symbols. In some embodiments, the technique used may depend on the lighting conditions of a particular vision system. For example, a more robust method can be used. For example, in some embodiments, the system detects edges, groups the edges by contour, reduces the number of vertices in the resulting polyline (e.g., using techniques such as the Lemer-Douglas-Poiker algorithm), and the resulting Analyzing the shape of the image obtained as , we recognize polygons with four corners with angles of approximately 90 degrees. Subpixel positions on the four sides of the rectangle could then be determined by fitting a line to each group of subpixel edges along the four sides of the rectangle.

一部の実施形態では、シンボルの格子サイズはシンボルをデコードする前に知られている。例えば格子サイズを固定し及び/又は格子サイズを以前の画像でトレーニングできる。例えばシステムは高解像度画像(例えば高PPMの画像)でトレーニングできる。実行時に、システムが非常に低解像度の画像から格子内の行数を簡単に判定できない場合でも、システムはシンボルがトレーニングされた格子と同じサイズを持つと仮定できる。 In some embodiments, the lattice size of the symbol is known prior to decoding the symbol. For example, the grid size can be fixed and/or the grid size can be trained with previous images. For example, the system can be trained on high resolution images (eg high PPM images). At runtime, the system can assume that the symbols have the same size as the trained grid, even if the system cannot easily determine the number of rows in the grid from very low resolution images.

格子サイズが知られていない場合、システムは自動的に各次元に沿って格子サイズを決定するように構成できる。例えば格子サイズは、1D投影を実行して長方形の反対側の2辺(例えば長方形の外側の境界から内側)をスキャンすることによって決定できる。一部の実施形態では、スキャンは例えば1Dバーコードがスキャンされるのとほぼ同じ方法で実行することができる。例えば1Dバーコードをスキャンするための技術は、上で説明されている。システムがタイミングパターンの開始位置と終了位置を決定すると、システムはそれらの間にある実用的な整数個のモジュールの各々に対応するすべてのタイミングパターンを簡単に試すことができる。この技術は、特定のPPM範囲など特定の状況でのみ使用できる。例えばPPMがPPMの上限(例えば上記の再試行で処理される1.2)を下回るPPMを有するコード、デコードできる実用的なPPMの下限(0.8など)を有するコードに使用できる。モジュールの最小数は、タイミングパターンの長さをPPMの上限で除算した整数に最も近い整数に基づいて決定できるが(例えば上記の例を続けると1.2)、最大値は長さを下限で除算して得られる(再び例えば0.8)。このような制約を使用すると、例えば試行する可能なパターンの数を最小限に抑えることができる。 If the grid size is not known, the system can be configured to automatically determine the grid size along each dimension. For example, the grid size can be determined by performing a 1D projection and scanning two opposite sides of the rectangle (eg, inside from the outer boundary of the rectangle). In some embodiments, scanning can be performed in much the same way that a 1D barcode is scanned, for example. Techniques for scanning, for example, 1D barcodes are described above. Once the system has determined the starting and ending positions of the timing patterns, it can simply try all the timing patterns corresponding to each of the sensible integer number of modules in between. This technique can only be used in certain situations, such as certain PPM ranges. For example, it can be used for codes with a PPM below the upper PPM limit (eg, 1.2 handled by the retry above), for codes with a practical lower PPM limit that can be decoded (eg, 0.8). The minimum number of modules can be determined based on the integer closest to the timing pattern length divided by the PPM upper bound (e.g., 1.2 to continue the example above), while the maximum is the length below the lower bound. It is obtained by division (again, say 0.8). Such constraints can be used, for example, to minimize the number of possible patterns to try.

一部の実施形態では、可能なモジュールサイズパターンのどれが最適であるかを決定するために、システムは各タイミングパターンについてサンプリング係数マトリックスを決定し、そのサンプリング係数マトリックスを使用してスコアを決定するように構成できる。最も高いスコアのパターンは、シンボルの当該次元について正しいモジュールサイズに対応するように決定できる。そのような技術は、1Dバーコードシンボルの文字のデコードに関して上述されている。 In some embodiments, to determine which of the possible module size patterns is the best, the system determines a sampling factor matrix for each timing pattern and uses the sampling factor matrix to determine the score. can be configured as The highest scoring pattern can be determined to correspond to the correct module size for that dimension of the symbol. Such techniques are described above for decoding characters in 1D barcode symbols.

システムがモジュールの格子関係を決定すると、システムはシンボルの既知の構造に対応するモジュール値を設定できる。図23は、一部の実施形態による、2Dシンボルの既知の構造値で埋められた図22Aの例示的なモジュールの格子2200を示している。この例ではモジュールの格子2200の最も左の列2302はデータマトリックスシンボル体系の「L」の上部で埋められ、最下部の行2304は「L」の下部で埋められており、最も右の列2306と最も上の列2308はタイミングパターンで埋められている。この実施形態はデータマトリックスシンボル体系の既知の構造を投入するが、QRコードシンボル体系のブルズアイパターンなど、デコードされている他のシンボル体系の既知の構造を投入することも可能であることを理解されたい。 Once the system has determined the grid relationships of the modules, the system can set the module values corresponding to the known structure of the symbol. FIG. 23 shows the exemplary modular lattice 2200 of FIG. 22A filled with known structure values of 2D symbols, according to some embodiments. In this example, the leftmost column 2302 of the grid of modules 2200 is filled with the top of the 'L' of the Data Matrix symbology, the bottom row 2304 is filled with the bottom of the 'L', and the rightmost column 2306 is filled with the bottom of the 'L'. and the top row 2308 are filled with timing patterns. While this embodiment injects the known structure of the Data Matrix symbology, it is understood that it is also possible to inject the known structure of other symbologies being decoded, such as the bullseye pattern of the QR Code symbology. sea bream.

既知の構造は、シンボルの向きに基づいてモジュールの格子に埋めることができる。一部の実施形態では、システムは格子の向きを学習して、例えば図23に示されているように「L」が左下にあるかどうか、或いはそれはシンボルの右上などの異なる位置にあるかどうかなど判定することができる。一部の実施形態では、トレーニング中に向きを判定することができる。一部の実施形態では、他の技術を使用して、既知の特徴が画像内のどこにあるか(例えば「L」がシンボルの左下にあるかどうか)を判定することができる。例えばシステムが既に格子サイズを知っているがシンボルの向きを知らない場合に、システムが格子を識別すると技術を使用して向きを識別するように構成できる。一部の実施形態では、システムは格子位置の下のピクセルを上側、下側、左側、及び右側に沿って平均し、最も低いグレー値を有する平均をLパターンに対応させることができる。他の技術を用いて、シンボルの既知の特徴を識別して向きを判定することもできる。 Known structures can be embedded in a grid of modules based on the orientation of the symbols. In some embodiments, the system learns the orientation of the grid, for example, whether the "L" is in the bottom left, as shown in FIG. 23, or whether it is in a different position, such as the top right of the symbol. etc. can be determined. In some embodiments, orientation can be determined during training. In some embodiments, other techniques can be used to determine where a known feature is in the image (eg, is the 'L' at the bottom left of the symbol). For example, if the system already knows the grid size but does not know the orientation of the symbols, the system can be configured to identify the orientation using techniques once the grid is identified. In some embodiments, the system may average the pixels below the grid location along the top, bottom, left, and right sides, and let the average with the lowest gray value correspond to the L pattern. Other techniques can be used to identify known features of the symbol to determine orientation.

一部の実施形態では、既知の構造の幾つかは、同じ物理的シンボルから取得された以前の画像で高い信頼度で決定されたシンボルのデータモジュールであることができる。これらのモジュールは、高解像度の画像において決定されていることもあれば(例えばシンボルは時間と共にカメラから離れているため)、或いは低解像度画像において決定されていることもある(例えば本明細書に記載した1つ以上の技術を用いて)。低解像度については多くの場合にシンボルが何らかの形で首尾よくデコードされなかったが、特定のモジュールが高い確度で推定され、それらの高い確度で推定されたモジュールは現在の取得された画像ではピクセルの格子に対するモジュールの格子のずれが大きいため推定が難しいものである。 In some embodiments, some of the known structures may be data modules of symbols determined with high confidence in previous images acquired from the same physical symbol. These modules may have been determined in high-resolution images (e.g., because the symbols are moving away from the camera over time) or in low-resolution images (e.g., using one or more of the techniques described). For the low resolutions, in many cases the symbols were somehow not successfully decoded, but certain modules were estimated with high accuracy, and those estimated modules are the number of pixels in the current acquired image. Estimation is difficult due to large deviations of the module grid relative to the grid.

ステップ2006を参照すると、画像処理装置はモジュールの格子内のモジュールと画像内のピクセルとの間で決定された因果関係を用いて、第1のセットのモジュールを推定できる(例えば関連するピクセルとのオーバーラップの程度が高いモジュール)。図24は、一部の実施形態による、モジュールとピクセルとの間の関係に基づいて推定された例示的なモジュールの格子2200のモジュールを示す。図24に示した推定は、モジュール2402などの推定された白のモジュールと、モジュール2404などの推定された黒のモジュールを含む。例えば画像処理装置は、非常に高度にオーバーラップする各モジュール、例えばサンプリング係数がオーバーラップ閾値を超えるモジュールを投入できる。例えばオーバーラップ閾値を90%(又はその他のパーセンテージ)に設定して、システムはモジュールの領域の90%が、すべて互いに90%以内の価値を有する1つ以上のピクセルのセットとオーバーラップしている場合にモジュールを設定するように構成できる。閾値は90%よりもはるかに小さくてもよい。例えばモジュールの値を決定するには、オーバーラップ率(例えばピクセルがモジュールによってオーバーラップされる割合)がわずか30%のモジュールで十分な場合がある。例えば格子の精度に応じて、これより低い閾値を使用できる。一般的な問題として、この技術は論理を用いて、モジュールは1つの値を持ち、このモジュールが実質的にオーバーラップするピクセルがその正反対に対応する値を持つ可能性は低いという事実を活用することができる。例えばピクセルと顕著にオーバーラップする黒のモジュールは、グレー又は黒の(しかし白ではない)ピクセル値になり、ピクセルと顕著にオーバーラップする白のモジュールは、グレー又は白(しかし黒ではない)ピクセル値になる。したがって、前景の(最も暗い)ピクセルとある程度オーバーラップするモジュールは黒に設定でき、背景の(最も明るい)ピクセルとある程度オーバーラップするモジュールは白に設定できる。 Referring to step 2006, the image processor can use the determined causal relationships between the modules in the grid of modules and the pixels in the image to infer the first set of modules (e.g. modules with a high degree of overlap). FIG. 24 shows modules of an exemplary grid of modules 2200 estimated based on relationships between modules and pixels, according to some embodiments. The estimation shown in FIG. 24 includes estimated white modules such as module 2402 and estimated black modules such as module 2404 . For example, the image processor may inject modules with a very high degree of overlap, eg modules whose sampling factor exceeds the overlap threshold. For example, with the overlap threshold set to 90% (or some other percentage), the system determines that 90% of the area of the module overlaps with one or more sets of pixels that are all within 90% of each other. Can be configured to set the module when The threshold may be much less than 90%. For example, a module with only a 30% overlap ratio (eg, the percentage by which pixels are overlapped by the module) may be sufficient to determine the value of the module. Lower thresholds can be used, for example, depending on the accuracy of the grid. As a general matter, this technique uses logic to take advantage of the fact that a module has one value, and pixels that this module substantially overlaps are unlikely to have the value corresponding to its exact opposite. be able to. For example, a black module that significantly overlaps a pixel will result in a gray or black (but not white) pixel value, and a white module that significantly overlaps a pixel will result in a gray or white (but not black) pixel value. be a value. Thus, modules with some overlap with foreground (darkest) pixels can be set to black, and modules with some overlap with background (lightest) pixels can be set to white.

このステップで推定されるモジュールは、前景に近い及び/又は背景に近いピクセルに関連付けることができる。したがって一部の実施形態では、ステップ2006で投入されたピクセルは、画像の均一な黒又は白の領域に関連付けられたモジュールであることができる。上述のように、ピクセルを「白」又は「黒」と呼ぶ場合、ピクセルが黒であるか白であるかの尺度は、画像の信号包絡線に関連して決定することができる。したがって一部の実施形態では、信号包絡線の最も暗いピクセルに関連付けられたすべての最も暗いモジュールが推定され、信号包絡線の最も明るいピクセルに関連付けられたすべての光モジュールが推定される。したがって、画像の信号包絡線を使用して、白と黒のピクセルの範囲を正規化して、信号包絡線の特定のピクセルの範囲を決定できる。 The modules estimated in this step can be associated with pixels near the foreground and/or near the background. Thus, in some embodiments, the pixels populated in step 2006 can be modules associated with solid black or white regions of the image. As noted above, when referring to pixels as "white" or "black," the measure of whether a pixel is black or white can be determined in relation to the signal envelope of the image. Thus, in some embodiments, all darkest modules associated with the darkest pixels of the signal envelope are estimated, and all light modules associated with the brightest pixels of the signal envelope are estimated. Therefore, the signal envelope of the image can be used to normalize the white and black pixel ranges to determine the specific pixel range of the signal envelope.

ステップ2006をさらに参照すると、画像処理装置が知られているモジュールを利用して他の未知のモジュールを決定することができる。図25A及び図25Bは、一部の実施形態による、既知のモジュールに基づいて決定された例示的なモジュールの格子の追加モジュールの例を示す。図25Aは、ステップ2004で決定されたモジュールを含む既知のモジュールに基づいて決定された新しい白のモジュール値(例えばモジュール値2502を含む)と新しい黒のモジュール値(例えばモジュール値2504を含む)を示す。同様に、図25Bは、新しい白のモジュール値(例えばモジュール値2552を含む)と新しい黒のモジュール値(例えばモジュール値2554)を含む、決定された追加のモジュール値を示しており、これらは図25Aで決定された新しいモジュールに基づいて決定できる。画像処理装置は、(例えば信号包絡線の前景と背景との間の)範囲の中心にグレー値を有するピクセルを調べることができる。例えば画像処理装置は、ピクセルを特定の数のモジュールに関連付けるピクセルを決定することにより、追加のモジュールを推定することができる。(a)2個のモジュールのみによって大部分オーバーラップされ、(b)既に決定されているモジュール値の1つを有するピクセルについて、画像処理装置はこれら2個のモジュールの他方のモジュールの値と既に知られているものとは反対の値に設定できる。 Still referring to step 2006, the image processor can utilize known modules to determine other unknown modules. 25A and 25B illustrate examples of additional modules for an exemplary lattice of modules determined based on known modules, according to some embodiments. FIG. 25A shows new white module values (eg, including module value 2502) and new black module values (eg, including module value 2504) determined based on known modules, including the module determined in step 2004. show. Similarly, FIG. 25B shows additional module values determined, including a new white module value (eg, module value 2552) and a new black module value (eg, module value 2554), which are shown in FIG. It can be determined based on the new module determined in 25A. The image processor may look for pixels with gray values in the center of the range (eg, between the foreground and background of the signal envelope). For example, the image processor can infer additional modules by determining pixels that associate pixels with a particular number of modules. For pixels that are (a) mostly overlapped by only two modules and (b) have one of the module values already determined, the image processor will have the value of the other of these two modules and the value of the other module already determined. Can be set to the opposite value of what is known.

新しいモジュール値は、PPMに基づく既知のモジュール値に基づいて決定できる。例えばPPMが0.5を超えるコードの場合、最大9個のモジュールが与えられたピクセルとオーバーラップしている可能性がある。画像処理装置は配置された格子内で最も近い9個のモジュールの各々をオーバーラップ率によって、即ちピクセルが各モジュールによってどの程度オーバーラップされているかによってランク付けできる。画像処理装置は上位2つのパーセンテージ(最大のオーバーラップを有するモジュール)を加算して、合計が閾値(例えば閾値90%)を超えているかどうかを判定できる。閾値が満たされ、これらの2個のモジュールのうち1つだけの値が既に決定されている場合、これら2個のモジュールのうち他方のモジュールの値を反対の値に設定できる。例えばグレーのモジュールと大いにオーバーラップしている1個のモジュールの値が白であれば、他方のモジュールの値は黒であると判定される(そうでなければ我々は明るいピクセルではなくグレーのピクセルを持つであろう)。この推定技術は、前述の例のバリエーションを含むことができる。例えば閾値は代わりに最大のオーバーラップを有する3個のモジュールと比較することができ、それらのうち2個のモジュールが既知で同じ値を持つ場合、他の1個のモジュールは反対の値を持たなければならない。したがってこの技術は既知のモジュールを使用し、モジュールとピクセルとの間のオーバーラップの程度と組み合わせて、新しいモジュールの値を推定することができる。 New module values can be determined based on known module values based on PPM. For example, for codes with PPM greater than 0.5, up to 9 modules may overlap a given pixel. The image processor can rank each of the 9 closest modules in the arranged grid by the overlap ratio, ie, how much the pixels are overlapped by each module. The image processor can add the top two percentages (the modules with the most overlap) and determine whether the sum exceeds a threshold (eg, a threshold of 90%). If the threshold is met and the value of only one of these two modules has already been determined, then the value of the other of these two modules can be set to the opposite value. For example, if one module has a value that is white, which largely overlaps with a gray module, the value of the other module is determined to be black (otherwise we would consider gray pixels rather than light pixels). ). This estimation technique can include variations of the previous examples. For example, the threshold could instead be compared to the three modules with the greatest overlap, and if two of them had known and identical values, the other one could have the opposite value. There must be. This technique can therefore use the known module and, in combination with the degree of overlap between the module and the pixel, estimate the value of the new module.

例示的な例として、図22Bに示されたサンプリングマトリックスを使用する場合、サンプリングマトリックスの係数は、各ピクセルが関連するモジュールによってオーバーラップされる程度を示すパーセンテージ(例えば関連モジュールによってカバーされている各ピクセルの部分のパーセンテージ)であることができる。このオーバーラップ率を用いることにより既に推定されたモジュール値(例えばシンボルの既知の特徴に関連付けられた値)を活用して、既知のモジュールの周辺にある他の隣接するモジュールを把握できる。例えば9個の係数を持つサンプリングマトリックスの場合、2個のモジュールのみによって大部分オーバーラップされているピクセルは、互いにほぼ等しく(例えばそれぞれ約0.5)、他の7つの係数(例えば残りは約0)よりはるかに大きい2つの係数を持つ。 As an illustrative example, using the sampling matrix shown in FIG. 22B, the coefficients of the sampling matrix are percentages indicating the degree to which each pixel is overlapped by the associated module (e.g., each pixel covered by the associated module). percentage of a pixel). By using this overlap ratio, already estimated module values (eg, values associated with known features of the symbol) can be leveraged to figure out other neighboring modules around the known module. For example, for a sampling matrix with 9 coefficients, pixels that are mostly overlapped by only 2 modules are approximately equal to each other (eg, about 0.5 each) and the other 7 coefficients (eg, about 0.5 for the remainder). 0) has two coefficients much greater than

新しいモジュールが決定されると、画像処理装置は未知のモジュールの追加のセットを反復的に決定できる。この技術は、既知のモジュール値を活用することにより、本明細書で論じるようにピクセル/モジュールのオーバーラップに基づいて追加の値を把握することができる。最初は、未知の隣接するモジュールのグループが多数存在する可能性があるが、何らかのオーバーラップを持つピクセル/モジュールを反復的に検索することにより、モジュール値が決定されると、これらの決定された追加の値を使用して別のモュール値を埋めることができる。 As new modules are determined, the image processor can iteratively determine additional sets of unknown modules. By leveraging the known module values, this technique can capture additional values based on pixel/module overlap as discussed herein. Initially, there may be many groups of unknown adjacent modules, but once the module values are determined by iteratively searching for pixels/modules with some overlap, these determined Additional values can be used to fill in different modal values.

ステップ2008及び2010を参照すると、(例えばステップ2004及び2006に関連して上述したように)これ以上モジュール値を推定できなくなると、画像処理装置は値の有効な組み合わせのセットをテストしてさらに未知のモジュールを決定できる。一部の実施形態では、現在のピクセルのセットが決定された今、残りのモジュールに対する検索スペースは削減されている。画像処理装置は、今では小さくなった残りの未知のモジュールのセットを(例えば反復的に)決定できる。 With reference to steps 2008 and 2010, when no more module values can be estimated (eg, as described above with respect to steps 2004 and 2006), the image processor tests a set of valid combinations of values to find more unknowns. module can be determined. In some embodiments, the search space for the remaining modules is reduced now that the current set of pixels has been determined. The image processor can (eg, iteratively) determine the now smaller set of remaining unknown modules.

一部の実施形態では、各モジュールについて、画像処理装置は、1つ以上の決定されたピクセルを含むモジュールパターンの残りの有効な組み合わせ(例えば2×2、3×3など)を試すことができる。例えば画像処理装置は、そのような推定ができなくなるまで、未知のモジュールを中心に持つ3×3モジュールパターンを試すことができる。例として3×3パターンを用いると、各モジュールには2=512の可能性がある。しかしながら多くの場合は最大の組み合わせよりはるかに少なくなる。例えば既に決定されている3×3パターンのモジュール値は、可能性の数を減らすことができる。別の例として、3×3の特定のモジュールに対する係数の一部は、モジュール値が計算にほとんど影響を与えないほど十分小さくすることができる。一部の実施形態では、可能なモジュールパターンを上で多値幅1Dシンボル体系について述べた要領で実行できよう。 In some embodiments, for each module, the image processor may try the remaining valid combinations (e.g., 2x2, 3x3, etc.) of module patterns containing one or more of the determined pixels. . For example, the image processor can try a 3x3 module pattern with an unknown module in the center until it fails to make such an estimate. Using the 3×3 pattern as an example, there are 2 9 =512 possibilities for each module. However, in many cases it will be much less than the maximum combination. For example, a 3x3 pattern of module values that have already been determined can reduce the number of possibilities. As another example, some of the coefficients for a particular 3×3 module can be small enough that the module value has little effect on the calculation. In some embodiments, possible modular patterns could be implemented in the manner described above for multi-level 1D symbologies.

多くのモジュールが先行のステップで決定されていても、すべての可能性を再帰的にテストすることは依然として非常に時間がかかることがある。すべての組み合わせをテストすることも、例えば正しいパターンと誤ったパターンの一部との間の誤差を区別するのが難しい場合があるため、順調に進まないことがある。一部の実施形態では、サンプリングマトリックスを用いて追加のモジュールを決定することができる。例えばまだ決定されていないモジュールによってオーバーラップされる各ピクセルについて、1×9サンプリングマトリックスを用いてモジュール値を決定できる。システムは、1×9サンプリングマトリックスに、最も近い9個のバイナリ(0又は1)モジュール値(3×3モジュールパターンを表す)の未知のベクトルを乗算してモジュール値を決定できる。ピクセルサンプリングマトリックスは、画像内のすべてのピクセルを格子のすべてのモジュールに関連付ける、より大きい疎なサンプリングマトリックスの行のセクションであることができ、ここでマトリックス内の各エレメント(i、j)は、マトリックスの行iに対応するピクセルが、マトリックスの列jに対応するモジュールによってオーバーラップ又はカバーされるパーセンテージを表している。例えば3×3モジュールパターンの9個のモジュールに対するバイナリ値の可能な組み合わせごとに(最大512であるが、一般に既に決定されているモジュール値を考慮する場合はより少ない)、実際のピクセル値とサンプリング係数で乗算するときに生じるピクセル値との誤差を計算できる。許容される誤差閾値内にあるピクセル値誤差を生み出すいかなる組み合わせも可能な解と見なすことができるが、誤差閾値を超える誤差を生み出す組み合わせは考慮から除外される。誤差閾値を下回る組み合わせが1つしかない場合は、対応する3×3のモジュールパターンの未知のモジュール値を適宜設定できる。複数のパターンがある場合、誤差閾値を下回る誤差をもたらす各組み合わせが、当該ピクセルについて9ビット整数として記録される。 Even if many modules have been determined in previous steps, recursively testing all possibilities can still be very time consuming. Testing all combinations may also be frustrating, for example because it may be difficult to distinguish between errors between correct patterns and parts of incorrect patterns. In some embodiments, a sampling matrix can be used to determine additional modules. For example, for each pixel that is overlapped by an undetermined module, a 1x9 sampling matrix can be used to determine the module value. The system can determine the modulus value by multiplying the 1x9 sampling matrix by an unknown vector of the 9 nearest binary (0 or 1) modulus values (representing the 3x3 modulus pattern). A pixel sampling matrix can be a section of rows of a larger sparse sampling matrix that associates every pixel in the image with every module of the grid, where each element (i,j) in the matrix is: It represents the percentage by which the pixel corresponding to matrix row i is overlapped or covered by the module corresponding to matrix column j. For each possible combination of binary values for the 9 modules of e.g. You can calculate the error in pixel values that occurs when multiplying by a factor. Any combination that yields a pixel value error that is within the acceptable error threshold can be considered a possible solution, while combinations that yield an error that exceeds the error threshold are excluded from consideration. If there is only one combination below the error threshold, the unknown module value of the corresponding 3x3 module pattern can be set accordingly. If there are multiple patterns, each combination that results in an error below the error threshold is recorded as a 9-bit integer for that pixel.

一部の実施形態では、システムは最初に特定のピクセルを(例えばモジュール値をデコードする可能性がより高くなるように)処理するように構成することができる。例えばシステムは、既に決定されている多数のオーバーラップするモジュールを有するピクセルを最初に処理するように構成できる。例えばシステムは、最初にシンボルの外側の周囲(例えばモジュールが決定されるタイミングパターンとLファインダパターンの近く)のピクセルを処理することに焦点を当てるように構成できる。そのような技術を用いると、反復するたびにモジュールの値は、シンボルの内側により次第に近づいて、及び/又は未知のモジュールの通常なら大きいスペースの内部に向かって決定される。 In some embodiments, the system can be configured to process a particular pixel first (eg, so that the module value is more likely to be decoded). For example, the system can be configured to first process pixels that have a number of overlapping modules that have already been determined. For example, the system can be configured to first focus on processing pixels in the outer perimeter of the symbol (eg, near the timing pattern and L finder pattern for which modules are determined). Using such a technique, at each iteration the values of the modules are determined progressively closer to the interior of the symbol and/or towards the interior of the otherwise large space of the unknown module.

格子の領域内のすべてのピクセルが考慮され、それらの9ビット整数が記録された後、除外プロセスによって追加のモジュールを決定できる。例えばシステムは、各ピクセルの残りの可能な組み合わせの整合性を、モジュールに関連付けられた隣接する各ピクセルの残りの可能な組み合わせに照らして調べることができる。例えばシステムは、あるピクセルに対する3×3モジュールパターンはその8個の隣接ピクセルと実質的にオーバーラップするという事実を利用して、特定のモジュールについて8個の隣接ピクセルの整合性を調べることができる。実際、システムは、特定のピクセルの可能な各組み合わせが、隣接するピクセルの特定の組み合わせとのみ互換性があるという事実を用いて正しい組み合わせを決定できる。 After all pixels within the region of the grid have been considered and their 9-bit integers recorded, additional modules can be determined by an exclusion process. For example, the system can check the consistency of the remaining possible combinations of each pixel against the remaining possible combinations of each adjacent pixel associated with the module. For example, the system can take advantage of the fact that the 3x3 module pattern for a pixel substantially overlaps its eight neighbors to check the alignment of eight neighbors for a particular module. . In fact, the system can use the fact that each possible combination of a particular pixel is only compatible with a particular combination of neighboring pixels to determine the correct combination.

一部の実施形態では、そのようなモジュールとその隣接するモジュールとの比較を用いて、無向制約グラフを生成することができる。各モジュールの3×3モジュールパターンの9個のモジュールに対するバイナリ値の保存された組み合わせを表す9ビット整数は、グラフのノードとして投入でき、隣接モジュールに対する整合的な9ビット整数の各々とのリンケージはグラフ内のエッジであることができる。モジュールの格子内のそれぞれ3×3モジュールパターンの間のオーバーラップ領域が同じバイナリ値の組み合わせを持つ場合、2つのノードは整合的であると見なされる。 In some embodiments, a comparison of such a module with its neighboring modules can be used to generate an undirected constraint graph. The 9-bit integers representing the conserved combinations of binary values for the 9 modules of the 3x3 module pattern for each module can be populated as nodes in the graph, and the linkage with each matching 9-bit integer for the adjacent module is It can be an edge in the graph. Two nodes are considered consistent if the overlap region between each 3×3 module pattern in the grid of modules has the same combination of binary values.

したがって残りのモジュールを決定することは、各ピクセルとその8個の隣接ピクセルの間のエッジの整合的でユニークなセットを決定することを含むことができ、その結果として唯一のノードだけが各ピクセルに接続されており、その他のノードとそれらのエッジは除外されている。システムは、ピクセルに対して選択されたノードを使用して、オーバーラップするモジュール値の正しい組み合わせを決定できる。システムは、グラフ内の特定のノードとそれらに関連付けられたエッジを除外することができる。例えばシステムは、少なくとも1つのエッジで隣接する各ピクセルの少なくとも1つのノードに接続されていないノードを除外できる。そのようなノードを除外すると、グラフ内の幾つかのノード、特に唯一のノードしか持たない別のピクセルに隣接するピクセルに対するノードを除外できる。このようなノードの除外は、グラフ内にそのようなノードがなくなるまで反復的に実行できる。上記のような特定のノードを除外しても、特定のピクセルに複数のノード(組み合わせ)がまだ残っている場合がある。一部の実施形態において、システムは特定の選択肢の除外をテストするように構成できる。例えばランダム選択によってピクセル(例えば2つの可能性しかないピクセル)の1つに対するノードを選択するようにシステムを構成できる。システムはそのピクセルに対する他のノードを除外し、前述のノード除外プロセスを繰り返すことができる。このような選択と除外を実行する結果として、他のピクセルを決定できるか、又は他のピクセルに対するすべてのノードを除外できる。後者の場合には、システムは選択したノードを除外すべきであると判定できる。さもなければシステムは、この1つのピクセル(及び/又は他のピクセル)に対して保存されているすべての可能な選択肢のモジュール値を計算することによってモジュールのデコードを試みて、デコードが成功するかどうかを判定するように構成できる。システムは、システムがシンボルを誤読するのを防ぐためにビルトインされた誤差修正機能に依存できる。シンボルがデコードされない場合、システムは選択したノードが正しくなかったことを再度認識し、それゆえノードは除外されるべきである。 Determining the remaining modules can therefore involve determining a consistent and unique set of edges between each pixel and its eight neighbors, so that only one node is found in each pixel. , excluding other nodes and their edges. The system can use the nodes selected for the pixels to determine the correct combination of overlapping modulus values. The system can exclude certain nodes in the graph and their associated edges. For example, the system can exclude nodes that are not connected by at least one edge to at least one node in each adjacent pixel. Excluding such nodes can eliminate some nodes in the graph, especially nodes for pixels that are adjacent to other pixels that have only one node. Exclusion of such nodes can be performed iteratively until there are no such nodes in the graph. Even after excluding a specific node as described above, there may still be multiple nodes (combination) remaining at a specific pixel. In some embodiments, the system can be configured to test for exclusion of certain options. For example, the system can be configured to select a node for one of the pixels (eg, pixels with only two possibilities) by random selection. The system can exclude other nodes for that pixel and repeat the node exclusion process described above. As a result of performing such selections and exclusions, other pixels can be determined or all nodes for other pixels can be excluded. In the latter case, the system can determine that the selected node should be excluded. Otherwise, the system attempts to decode the module by computing the module values of all possible choices stored for this one pixel (and/or other pixels) and determines whether the decoding succeeds. It can be configured to determine whether The system can rely on built-in error correction to prevent the system from misreading symbols. If the symbol is not decoded, the system once again realizes that the selected node was incorrect and should therefore be excluded.

以下に、制約グラフを決定する例を示す。Gは、これまでに2Dシンボルについて推定されたモジュール値の(n+2)×(m+2)マトリックスとし、ここで、nはシンボルの行数、mは列数である。一部の実施形態では、マトリックス内に追加の行及び/又は列(例えば追加の2行及び追加の2列)があり、これをシンボルの(両)側で使用して、クワイエットゾーンのモジュール幅部分をエンコードできる。 Below is an example of determining the constraint graph. Let G be the (n+2)×(m+2) matrix of module values estimated so far for the 2D symbols, where n is the number of rows and m the number of columns of the symbol. In some embodiments, there are additional rows and/or columns (e.g. 2 additional rows and 2 additional columns) in the matrix, which are used on (both) sides of the symbol to increase the module width of the quiet zone. part can be encoded.

Gの各エレメントはg(k、l)と表示することができ、ここで、kは0~n+1の範囲、lは0~m+1の範囲、及びg(k、l)=0(暗)、1(明)、又は?(不明)である。各モジュール(k、l)について、S(k、l)はモジュールk、lを中心とするGの3×3サブマトリックスとする。S(k、l)の各エレメントはs(k、l、i、j)と表示され、ここで、iは行インデックスで、-1~1の範囲、djは列インデックスで、-1~1の範囲である。また、すべてのi及びjに対してs(k、l、i、j)=m(k+l、i+j)であることに留意されたい。 Each element of G can be denoted g(k,l), where k ranges from 0 to n+1, l ranges from 0 to m+1, and g(k,l)=0 (dark), 1 (light), or ? (unknown). For each module (k,l), let S(k,l) be a 3x3 submatrix of G centered on the module k,l. Each element of S(k,l) is denoted s(k,l,i,j), where i is the row index and ranges from -1 to 1, and dj is the column index and ranges from -1 to 1. is in the range of Also note that s(k,l,i,j)=m(k+l,i+j) for all i and j.

与えられたサブマトリックスS(k、l)に対して、可能なパターンの組み合わせは2通りあり、ここで、u(k、l)は、S(k、l)の未知のエレメントの数である(s(k、l、i、j)=?)のi、j座標の数)。各可能なパターンを3×3マトリックスM(k、l、z)によって表示し、ここで、zは1からu(k、l)の範囲である。M(k、l、z)の各エレメントは、m(k、l、z、i、j)=0又は1で表示される(k、l、z、i、j)が0又は1(既知)である場合、m(k、l、z、i、j)=s(k、l、z、i、j)であることに留意されたい(例えば未知の値だけが変化できる場合)。 For a given submatrix S(k,l), there are 2 u possible pattern combinations, where u(k,l) is the number of unknown elements in S(k,l). is (the number of i,j coordinates of s(k,l,i,j)=?)). Denote each possible pattern by a 3×3 matrix M(k,l,z), where z ranges from 1 to u(k,l). Each element of M(k, l, z) is denoted by m(k, l, z, i, j)=0 or 1 where (k, l, z, i, j) is 0 or 1 (known ), then m(k, l, z, i, j) = s(k, l, z, i, j) (eg, if only the unknown values can change).

システムは、各エレメントm(k、l、z、i、j)をピクセルの格子と関係させるサンプリングマトリックスに従って、マトリックスパターンM(k、l、z)の各々を画像ピクセルに照らして誤差閾値を下回っているかどうかを確認できる。 The system illuminates each of the matrix patterns M(k,l,z) against the image pixels according to a sampling matrix relating each element m(k,l,z,i,j) to a grid of pixels to fall below an error threshold. You can check whether

任意のモジュール(k、l)からの8方向を、-1から1の範囲の行オフセットdと-1から1の範囲の列オフセットdで表示する(dとdの両方が0であることはできない、さもないとそれはモジュール(k、l)からの方向ではなくなる)。言い換えれば、8方向は(dとd)=(0、1)、(0、-1)、(1、0)、(-1、0)、(1、1)、(1、-1)、(-1、1)及び(-1、-1)である。 The 8 directions from any module (k, l) are represented with row offsets d r ranging from -1 to 1 and column offsets d c ranging from -1 to 1 (both d r and d c are 0 or it will not be the direction from module (k,l)). In other words, the 8 directions are (d r and d c )=(0,1), (0,−1), (1,0), (−1,0), (1,1), (1,− 1), (−1,1) and (−1,−1).

誤差閾値を下回る各パターンM(k、l、z)について、ノードN(k、l、z)を確立する。次に、ノードを互いにリンクさせる無向グラフでエッジを確立できる。ノードの任意のペアN(k、l、z)及びN(k+d、l+d、z2)について、ここで、(k+dr、l+d)はモジュール(k、l)からの可能な8方向の1つにおける隣接するモジュールであり、zは1~u(k、l)の範囲であり、zは1~u(k+dr、l+dc)の範囲である場合、リンクL(k、l、z、k+d、l+d、z2)は、オーバーラップするサブパターンが同じである場合のみ確立される。即ち、すべてのi=iminからimaxまで、及びすべてのj=jminからjmaxまで、m(k、l、z、i、j)=m(k+d、l+d、z、i-d、j-d)である場合。ここで、imin、imax、jmin、jmaxは、下記の方向に基づいて決定される:
≦0の場合はimin=-1、それ以外の場合は0
≧0の場合はimax=1、それ以外の場合は0
≦0の場合はjmin=-1、それ以外の場合は0
≧0の場合はjmax=1、それ以外の場合は0
=0の場合はオーバーラップ領域は3×2、d=0の場合、オーバーラップ領域は2×3、対角線方向の場合、オーバーラップ領域は2×2である。
For each pattern M(k,l,z) below the error threshold, establish a node N(k,l,z). Edges can then be established in the undirected graph that link the nodes together. For any pair of nodes N(k, l, z 1 ) and N(k+d r , l+d c , z 2 ), where (k+dr, l+d c ) are the possible eight directions from module (k, l) Link L(k, l , z 1 , k+d r , l+d c , z2) are established only if the overlapping subpatterns are the same. That is, for all i=i min to i max and for all j=j min to j max , m(k, l, z 1 , i, j)=m(k+d r , l+d c , z 2 , id r , jd c ). where i min , i max , j min , j max are determined based on the following directions:
i min =−1 if d r ≦0, 0 otherwise
i max =1 if d r ≧0, 0 otherwise
j min =−1 if d c ≦0, 0 otherwise
j max =1 if d c ≧0, 0 otherwise
If d r =0, the overlap area is 3×2, if d c =0, the overlap area is 2×3, and if diagonal, the overlap area is 2×2.

全8方向の各々において少なくとも1つの他のノードにリンクできないノードは、それ以降の考慮から除外される。ノードが除外されるとそれぞれのリンクも除外され、それにより8方向の各々とリンクしていないより多くのノードが除外される、というように続く。この除外プロセスにより、各モジュール(l、k)に対して唯一のノードのみが残ることができ、したがってその時点ですべてのモジュール値が知られている。しかしながら1つ以上のモジュールに1つのノードしか残っていない場合でも、各モジュールで8方向で接続されている選択肢はそれぞれのモジュールで1つだけであろう。このような状況では、追加の検索を実行して(例えば残りのすべての組み合わせを片っ端から検索することによって)そのようなノードを決定できる。 Nodes that cannot be linked to at least one other node in each of all eight directions are excluded from further consideration. As nodes are excluded, their respective links are also excluded, thereby excluding more nodes not linked to each of the eight directions, and so on. This exclusion process allows only one node to remain for each module (l, k), so all module values are known at that time. However, even if there is only one node left in one or more modules, there will be only one option in each module that is 8-way connected in each module. In such situations, an additional search can be performed to determine such nodes (eg, exhaustively searching all remaining combinations).

図32は、一部の実施形態による無向制約グラフの一例を示す。モジュールの格子3200の部分が幾つかの推定されたモジュールと、モジュール3202、3204及び3206として示された残りの3個の推定されるべきモジュールを含んでいる。ボックス3208は、モジュールの格子3200の部分の中心を囲むモジュールを強調表示し、ボックス3210は、モジュールの格子3200の部分において南東に隣接するモジュールを強調表示している。中心を囲むモジュールは3個の未知のモジュールを有するので、8通りの可能な組み合わせが残されている。特に中央に配置されたモジュールの可能な組み合わせは、可能な組み合わせ3212(3個の未知のモジュールはすべて白)、可能な組み合わせ3214(未知のモジュール3204は黒、未知のモジュール3202と3206は白)、可能な組み合わせ3216(未知のモジュール3202は黒、未知のモジュール3204と3206は白)、可能な組み合わせ3218(未知のモジュール3202と3204は黒、未知のモジュール3206は白)、可能な組み合わせ3220(未知のモジュール3202と3204は白、未知のモジュール3206は黒)、可能な組み合わせ3222(未知のモジュール3202は白、未知のモジュール3204と3206は黒)、可能な組み合わせ3224(未知のモジュール3202と3206は黒、未知のモジュール3204は白)、そして可能な組み合わせ3226(3個の未知のモジュールはすべて黒)として示されている。南東に位置するモジュールは未知のモジュールが2つしかないため、4通りの可能な組み合わせが残されている。南東に位置するモジュールに対する可能な組み合わせは、可能な組み合わせ3230(両モジュールは白)、可能な組み合わせ3232(未知のモジュール3204は黒、未知のモジュール3206は白)、可能な組み合わせ3234(未知のモジュール3204は白、未知のモジュール3206は黒)、及び可能な組み合わせ3236(未知の両モジュールは黒)として示されている。 FIG. 32 illustrates an example of an undirected constraint graph according to some embodiments. A portion of the lattice of modules 3200 contains several estimated modules and the remaining three modules to be estimated, shown as modules 3202 , 3204 and 3206 . Box 3208 highlights the modules surrounding the center of the portion of the grid 3200 of modules, and box 3210 highlights the modules adjacent to the southeast in the portion of the grid 3200 of modules. The modules surrounding the center have 3 unknown modules, leaving 8 possible combinations. Specifically, the possible combinations of the centrally located modules are possible combination 3212 (three unknown modules all white), possible combination 3214 (unknown module 3204 black, unknown modules 3202 and 3206 white). , possible combination 3216 (unknown module 3202 black, unknown modules 3204 and 3206 white), possible combination 3218 (unknown modules 3202 and 3204 black, unknown module 3206 white), possible combination 3220 ( Unknown modules 3202 and 3204 are white, unknown modules 3206 are black), possible combinations 3222 (unknown modules 3202 are white, unknown modules 3204 and 3206 are black), possible combinations 3224 (unknown modules 3202 and 3206 are black, unknown module 3204 is white), and possible combinations 3226 (all three unknown modules are black). The southeast module has only two unknown modules, leaving four possible combinations. Possible combinations for the module located southeast are possible combination 3230 (both modules white), possible combination 3232 (unknown module 3204 black, unknown module 3206 white), possible combination 3234 (unknown module 3204 is shown as white, unknown module 3206 is black), and possible combination 3236 (both unknown modules are black).

この例では、画像処理装置はモジュールの各セットの残っている組み合わせについて誤差テストを実行し、可能な組み合わせ3212、3216、3218、3224及び3234を除外する。可能な組み合わせ3220は、南東のモジュールに対して残っている組み合わせ(可能な組み合わせ3232又は3236)と一致する可能性がないので、画像処理装置は可能な組み合わせ3220を考慮から除外する。このような処理の後、可能な組み合わせ3214と可能な組み合わせ3232の間に第1の可能な一致3240が存在し、可能な組み合わせ3222と可能な組み合わせ3236の間に第2の可能な一致3242が存在し、可能な組み合わせ3226と可能な組み合わせ3236の間に第3の可能な一致3244が存在する。 In this example, the image processor performs an error test on the remaining combinations of each set of modules and eliminates possible combinations 3212, 3216, 3218, 3224 and 3234. The image processor eliminates possible combination 3220 from consideration because possible combination 3220 is unlikely to match the remaining combinations (possible combinations 3232 or 3236) for the southeast module. After such processing, there is a first possible match 3240 between possible combination 3214 and possible combination 3232, and a second possible match 3242 between possible combination 3222 and possible combination 3236. There is a third possible match 3244 between possible combination 3226 and possible combination 3236 .

ステップ2012で、画像処理装置は、ステップ2004-2010で決定された値を含む、決定されたモジュール値に基づいてシンボルをデコードする。この時点ですべてのモジュールが決定されている可能性はあるが、一部のモジュールの値がまだ未知である可能性もある(低解像度の画像など)。例えば決定されていないモジュールは、モジュールをまたぐピクセルが黒と白の値の間で前後に反転する場合など、均一なグレー領域のピクセルと関連付けることができる。しかしながらすべてのモジュールが完了していなくても、画像処理装置はシンボルをデコードできる。例えばほとんどの2Dシンボルは、リードソロモン誤差修正及び/又はやその他の誤差修正を使用するなどして、ある程度の冗長性でエンコードされる。別の例として、未知のモジュールは、しばしば誤って決定されたモジュールとしてより高い誤差率(例えば誤差率の2倍)が与えられる。したがってステップ2012では、画像処理装置は、たとえすべてのモジュールでなくてもシンボルをデコードするのに十分な数のモジュールをデコードすることができる。 At step 2012, the image processor decodes the symbol based on the determined module values, including the values determined at steps 2004-2010. All modules may have been determined at this point, but some module values may still be unknown (such as low-resolution images). For example, an undetermined module can be associated with pixels in a uniform gray region, such as when pixels straddling the module flip back and forth between black and white values. However, the image processor can decode the symbols even if all modules are not completed. For example, most 2D symbols are encoded with some degree of redundancy, such as using Reed-Solomon error correction and/or other error corrections. As another example, an unknown module is often given a higher error rate (eg, twice the error rate) as an erroneously determined module. Thus, in step 2012, the image processor can decode a sufficient number of modules to decode the symbol, even if not all modules.

図26-31は、本明細書で論じる技術を適用して多値幅1Dバーコード(例えば図2に示す1Dバーコード)をデコードする例示的な例として用いられる。図26は、一部の実施形態による多値幅1Dシンボルの例示的な1D画像2600を示す。1D画像2600は上記と同様のやり方で、図21の画像2100について上述したように取得された2D画像を通るスキャンラインに沿ってサンプリングすることによって取得できる。画像2100のように画像2600は、各ピクセルの暗さを示すピクセル値と関連するピクセルのセット(例えばピクセル2602、2604)を含む。ピクセル2602、2604は(例えばレーザスキャナを使用して抽出された)ピクセルと呼ばれるのに対し、一部の実施形態では各ピクセルは上述したサンプルであってよい。そのような実施形態では、画像2600はサンプルを計算するために処理される。本明細書で上述し、さらに以下に論じるように、画像信号の包絡線を使用して1Dバーコードをデコードするために使用することができる。 26-31 are used as illustrative examples of applying the techniques discussed herein to decode a multi-level 1D barcode (eg, the 1D barcode shown in FIG. 2). FIG. 26 shows an exemplary 1D image 2600 of a multilevel 1D symbol according to some embodiments. 1D image 2600 can be obtained in a manner similar to that described above by sampling along scanlines through a 2D image obtained as described above for image 2100 of FIG. Image 2600, like image 2100, includes a set of pixels (eg, pixels 2602, 2604) associated with a pixel value indicating the darkness of each pixel. Pixels 2602, 2604 are referred to as pixels (eg, extracted using a laser scanner), whereas in some embodiments each pixel may be a sample as described above. In such embodiments, image 2600 is processed to compute the samples. As described herein above and further discussed below, the envelope of the image signal can be used to decode a 1D barcode.

図20で述べた方法2000は、多値幅の1Dシンボルをデコードするために使用できる。図27は、一部の実施形態による、図26からの画像2600の上部に重ね合わせた多値幅1Dシンボルに対する例示的なモジュールの格子2700を示す。ステップ2004を参照すると、2Dバーコードと同様に、システムはモジュールの格子2700内のモジュールと画像2600のピクセルとの間の空間マッピングを決定する。例えばモジュールの格子2700は、画像2600のピクセルにマッピングするためにシフト及び/又はスケーリングする必要がある場合がある。モジュールの格子2700と画像2600のピクセルの格子との間の関係は、各モジュールがピクセルの各々にどのように影響するかを反映することができる。図28は、一部の実施形態による、モジュールの格子2700のモジュールと画像2600のピクセルとの間のオーバーラップの程度の例示的な図である。太い実線の矢印(例えば矢印2802、2804及び2806)はオーバーラップの大きい程度を示し、細い点線の矢印(例えば矢印2808、2810)はオーバーラップの小さい程度を示す。本明細書で論じるように、上記の説明は、サンプル(例えば画像2600内のピクセルの1次元画像(又は単一の行))の1D信号に対して、1次元格子(例えば1次元ピクセルの格子2700)の位置を特定する技術を提供する。 The method 2000 described in FIG. 20 can be used to decode multi-level 1D symbols. FIG. 27 shows an exemplary grid of modules 2700 for multi-level 1D symbols superimposed on top of image 2600 from FIG. 26, according to some embodiments. Referring to step 2004 , similar to 2D barcodes, the system determines the spatial mapping between modules in grid 2700 of modules and pixels of image 2600 . For example, the grid of modules 2700 may need to be shifted and/or scaled to map to the pixels of image 2600 . The relationship between the grid of modules 2700 and the grid of pixels of image 2600 can reflect how each module affects each of the pixels. FIG. 28 is an exemplary illustration of the degree of overlap between modules of grid of modules 2700 and pixels of image 2600, according to some embodiments. Thick solid arrows (eg, arrows 2802, 2804 and 2806) indicate a large degree of overlap, and thin dotted arrows (eg, arrows 2808, 2810) indicate a small degree of overlap. As discussed herein, the above description applies to a 1D signal of samples (e.g., a one-dimensional image (or single row) of pixels in image 2600) for a one-dimensional grid (e.g., a one-dimensional grid of pixels 2700) is provided.

この技術は、最初に画像のピクセルの格子に対してシンボルのモジュールの格子の位置を特定することを含むことができる。上で説明したように、個々の文字を個別に調べる必要はなく任意のモジュールパターンを推定できる。1Dシンボルの場合、格子の位置は、例えば区切り文字(1Dシンボルの左端と右端の文字など)及び/又は文字の既知の態様(例えば文字のバーやスペースの終了及び/又は開始)などの任意のモジュールパターンを使用して特定できる。図29は、一部の実施形態による、任意のモジュールパターンについてモジュールの格子2700のモジュールを推定する例を示す。モジュール2902及び2906はスペース(白のモジュール)として推定され、モジュール2904及び2908はバー(黒のモジュール)として推定される。例えばコード128シンボルの場合、文字はバー(例えばバー2904など)で始まり、スペース(例えばスペース2906)で終わり、先行文字はスペース(例えばスペース2902)で終わり、後続文字はバー(例えばバー2908)で始まる。 This technique may involve first locating a grid of modules of the symbol with respect to a grid of pixels of the image. As explained above, any modular pattern can be inferred without having to examine each character individually. In the case of 1D symbols, the positions of the grid can be arbitrary, such as delimiters (such as the leftmost and rightmost characters of a 1D symbol) and/or known aspects of characters (such as the end and/or beginning of a character bar or space). Can be identified using the module pattern. FIG. 29 illustrates an example of estimating modules of a lattice of modules 2700 for arbitrary module patterns, according to some embodiments. Modules 2902 and 2906 are assumed to be spaces (white modules) and modules 2904 and 2908 are assumed to be bars (black modules). For example, for a Code 128 symbol, a character begins with a bar (such as bar 2904) and ends with a space (such as space 2906), the preceding character ends with a space (such as space 2902), and the following character ends with a bar (such as bar 2908). begin.

図30A及び30Bは、一部の実施形態による、モジュールとピクセルとの間の関係に基づいて推定された例示的なモジュールの格子2700のモジュールを示す。図20のステップ2006を参照して、画像処理装置は、モジュールの格子内のモジュールと画像内のピクセルとの間で決定された因果関係を用いて、このステップが2Dバーコードに対して実行されるのと同じ要領で、モジュールの第1セット(例えば関連ピクセルと高度にオーバーラップするモジュール)を推定することができる。図30Aに示す推定は、追加で(例えばステップ2004に関連して推定される任意のモジュールのパターンに加えて)推定された白のモジュール3002、3004及び3006を含み、図30Bは追加で推定された黒のモジュール3008及び3010を含む。例えば2Dバーコードに関連して説明したように、画像処理装置は、サンプリング係数がオーバーラップ閾値を超えるモジュールなど、非常に高度に(例えば90%、30%など)にオーバーラップする各モジュールを投入できる。図30Aは、例としてオーバーラップを矢印3050、3052及び3054で示す。上述したように、この技術は論理を用いて、モジュールは1つの値を持ち、このモジュールが実質的にオーバーラップするピクセルがその正反対に対応する値を持つ可能性は低いという事実を活用することができる。したがって前景の(最も暗い)ピクセルとある程度オーバーラップするモジュールは黒に設定でき(例えばモジュール3008、3010)、背景の(最も明るい)ピクセルとある程度オーバーラップするモジュールは白に設定できる(例えばモジュール3002、3004及び3006)。上述したように、ピクセルが「白」又は「黒」であると呼ぶ場合、ピクセルが黒であるか白であるかの尺度は、画像の信号包絡線に関連して決定することができる(例えば画像の信号包絡線を使用して白と黒のピクセルの範囲を正規化することにより信号包絡線に対する特定のピクセルの範囲を決定できる)。 30A and 30B show modules of an exemplary grid of modules 2700 inferred based on relationships between modules and pixels, according to some embodiments. Referring to step 2006 of FIG. 20, the image processor uses the causality determined between the modules in the grid of modules and the pixels in the image to determine whether this step is performed on the 2D barcode. A first set of modules (eg, modules that have a high degree of overlap with the relevant pixel) can be estimated in a similar manner. The estimation shown in FIG. 30A includes additionally estimated white modules 3002, 3004 and 3006 (eg, in addition to the pattern of any modules estimated in connection with step 2004), and FIG. and black modules 3008 and 3010 . For example, as described in relation to 2D barcodes, the image processing device injects modules with a very high degree of overlap (e.g., 90%, 30%, etc.), such as modules whose sampling factor exceeds the overlap threshold. can. FIG. 30A shows overlapping by arrows 3050, 3052 and 3054 as an example. As noted above, this technique uses logic to take advantage of the fact that a module has one value and pixels that this module substantially overlaps are unlikely to have their opposite corresponding values. can be done. Thus, modules with some overlap with foreground (darkest) pixels can be set to black (e.g. modules 3008, 3010) and modules with some overlap with background (lightest) pixels can be set to white (e.g. modules 3002, 3010). 3004 and 3006). As noted above, when a pixel is referred to as being "white" or "black", the measure of whether the pixel is black or white can be determined in relation to the signal envelope of the image (e.g. A specific pixel range for the signal envelope can be determined by normalizing the white and black pixel ranges using the signal envelope of the image).

図31は、一部の実施形態による、既知のモジュールに基づいて決定されたモジュールの格子2700内の追加のモジュールを示す。この技術は、以前のステップでデコードされたモジュールの第1のセットを活用して、モジュールの第2のセットをデコードできる。図20のステップ2008及び2010を参照すると、(例えばステップ2004及び2006に関連して上述したように)これ以上モジュール値を推定できなくなると、画像処理装置は値の有効な組み合わせのセットをテストしてさらに未知のモジュールを決定できる。一部の実施形態では、現在のピクセルのセットが決定された今、残りのモジュールに対する検索スペースは削減されている。画像処理装置は、今では小さくなった残りの未知のモジュールのセットを(例えば反復的に)決定できる。図31に示すように、モジュール3102、3104、3106はこのステップで推定される。この例では、以下にさらに一般的に説明するように、論理を用いて残りのモジュールを決定できる。例えばこの例におけるモジュール3102、3104及び3106は、関連するピクセル3150及び3152の均一なグレー値を生成するために交互に入れ替わる。モジュール3106は、隣接する黒のモジュール3008と共に関連する均一なグレーのピクセル値3154を生み出すために白(スペース)である。モジュール3108は関連する明るいグレーのピクセル値3156を生み出すためにスペースである。 FIG. 31 illustrates additional modules in a grid 2700 of modules determined based on known modules, according to some embodiments. This technique can leverage the first set of modules decoded in the previous step to decode the second set of modules. Referring to steps 2008 and 2010 of FIG. 20, when no more module values can be estimated (eg, as described above with respect to steps 2004 and 2006), the image processor tests a set of valid combinations of values. can further determine unknown modules. In some embodiments, the search space for the remaining modules is reduced now that the current set of pixels has been determined. The image processor can (eg, iteratively) determine the now smaller set of remaining unknown modules. As shown in Figure 31, modules 3102, 3104, 3106 are estimated in this step. In this example, logic can be used to determine the remaining modules, as described more generally below. For example, modules 3102 , 3104 and 3106 in this example alternate to produce uniform gray values for associated pixels 3150 and 3152 . Module 3106 is white (space) to produce an associated uniform gray pixel value 3154 with adjacent black module 3008 . Module 3108 is space to produce an associated light gray pixel value 3156 .

一部の実施形態で、画像処理装置は各モジュールについて、1つ以上の決定されたピクセルを含むモジュールパターンの残りの有効な組み合わせ(例えば1×2、1×3など)を試すことができる。例えば画像処理装置は、そのような推定がそれ以上できなくなるまで、中心に未知のモジュールを持つ1×3モジュールパターンを試すことができる。例として1×3パターンを使用すると、各モジュールには2=8の可能性がある。さらに、2Dバーコードについて前述したように、既知のモジュールによって可能性の数は減少するため、可能性の数を減らすことができる。 In some embodiments, the image processor may, for each module, try the remaining valid combinations (eg, 1×2, 1×3, etc.) of module patterns containing one or more determined pixels. For example, the image processor can try a 1x3 module pattern with an unknown module in the center until no more such guesses are possible. Using the 1×3 pattern as an example, each module has 2 3 =8 possibilities. In addition, the number of possibilities can be reduced because known modules reduce the number of possibilities as described above for 2D barcodes.

上記のように、多くのモジュールが以前のステップで決定されたとしても、すべての可能性を再帰的にテストすることは依然として非常に時間がかかり及び/又はよく機能しないことがある。一部の実施形態では、サンプリングマトリックスを用いて追加のモジュールを決定することができる。例えばまだ決定されていないモジュールによってオーバーラップされている各ピクセルについて、1×3サンプリングマトリックスを用いてモジュール値を決定できる。システムは1×3サンプリングマトリックスに、最も近い3個のバイナリ(0又は1)モジュール値の未知のベクトルを乗算することによってモジュール値を決定できる。上述したように、バイナリ値の可能な各組み合わせについて、実際のピクセル値とサンプリング係数を乗算したときに生じるピクセル値との誤差を計算できる。許容誤差の閾値内にあるピクセル値の誤差を生じる組み合わせのいずれかを可能な解として見なすことができる一方、誤差閾値を超える誤差を生じるものは考慮から除外される。誤差閾値を下回るパターンが1つしかない場合、組み合わせの未知のモジュール値を適当に設定できる。さもなければ、可能な解は3ビット整数として記録できる。 As noted above, even if many modules have been determined in previous steps, recursively testing all possibilities may still be very time consuming and/or do not work well. In some embodiments, a sampling matrix can be used to determine additional modules. For example, for each pixel that is overlapped by an undetermined module, a 1x3 sampling matrix can be used to determine the module value. The system can determine the modulus value by multiplying the 1×3 sampling matrix by an unknown vector of the three nearest binary (0 or 1) modulus values. As described above, for each possible combination of binary values, the error between the actual pixel value and the pixel value resulting from multiplying the sampling factor can be calculated. Any combination of pixel values yielding an error within the acceptable error threshold can be considered as a possible solution, while those yielding an error exceeding the error threshold are excluded from consideration. If there is only one pattern below the error threshold, the unknown module value of the combination can be set appropriately. Otherwise, possible solutions can be recorded as 3-bit integers.

上述のように、一部の実施形態では、システムは、最初に特定のピクセルを(例えばモジュール値をデコードする可能性がより高くなるように)処理するように構成することができる。例えばシステムは、既に決定されている多数のオーバーラップするモジュールを有するピクセルを最初に処理するように構成できる。例えばシステムは、最初にシンボルの外側の周囲(例えば上述したようにモジュールが決定されている区切り文字及び/又は文字の開始/終了モジュールの近く)のピクセルを処理することに焦点を当てるように構成できる。そのような技術を用いると、反復するたびにモジュールの値は、シンボルの内側により次第に近づいて、及び/又は未知のモジュールの通常なら大きいスペースの内部に向かって決定される。 As noted above, in some embodiments, the system may be configured to process certain pixels first (eg, so that the module value is more likely to be decoded). For example, the system can be configured to first process pixels that have a number of overlapping modules that have already been determined. For example, the system may be configured to first focus on processing pixels around the outside of the symbol (e.g., near delimiters and/or character start/end modules whose modules are determined as described above). can. Using such a technique, at each iteration the values of the modules are determined progressively closer to the interior of the symbol and/or towards the interior of the otherwise large space of the unknown module.

格子の領域内のすべてのピクセルが考慮され、それらの3ビット整数が記録された後、除外プロセスによって追加のモジュールを決定できる。例えばシステムは、各ピクセルの残りの可能な組み合わせの整合性を、モジュールに関連付けられた隣接する各ピクセルの残りの可能な組み合わせに照らして調べることができる。例えばシステムは、あるピクセルに対する1×3モジュールパターンはその2つの隣接ピクセルと実質的にオーバーラップするという事実を利用して、特定のモジュールについて2つの隣接ピクセルの整合性を調べることができる。実際、システムは、特定のピクセルの可能な各組み合わせが、隣接するピクセルの特定の組み合わせとのみ互換性があるという事実を用いて正しい組み合わせを決定できる。実際、システムは、特定のピクセルの可能な各組み合わせが、隣接するピクセルの特定の組み合わせとのみ互換性があるという事実を用いて正しい組み合わせを決定できる。 After all pixels within the region of the grid have been considered and their 3-bit integers recorded, additional modules can be determined by an exclusion process. For example, the system can check the consistency of the remaining possible combinations of each pixel against the remaining possible combinations of each adjacent pixel associated with the module. For example, the system can take advantage of the fact that the 1x3 module pattern for a pixel substantially overlaps its two neighboring pixels to check the alignment of two neighboring pixels for a particular module. In fact, the system can use the fact that each possible combination of a particular pixel is only compatible with a particular combination of neighboring pixels to determine the correct combination. In fact, the system can use the fact that each possible combination of a particular pixel is only compatible with a particular combination of neighboring pixels to determine the correct combination.

2Dに関連して上述したように、一部の実施形態では、モジュールとその隣接するモジュールとの比較を用いて、無向制約グラフを生成することができる。各モジュールの1×3モジュールパターンの3個のモジュールに対するバイナリ値の保存された組み合わせを表す3ビット整数は、グラフのノードとして投入でき、隣接モジュールに対する整合的な3ビット整数の各々とのリンケージはグラフ内のエッジであることができる。モジュールの格子内のそれぞれ1×3モジュールパターンの間のオーバーラップ領域が同じバイナリ値の組み合わせを持つ場合、2つのノードは整合的であると見なされる。したがって残りのモジュールを決定することは、各ピクセルとその2個の隣接ピクセルの間のエッジの整合的でユニークなセットを決定することを含むことができ、その結果として唯一のノードだけが各ピクセルに接続されており、その他のノードとそれらのエッジは除外されている。システムは、ピクセルに対して選択されたノードを使用して、オーバーラップするモジュール値の正しい組み合わせを決定できる。上述したようにシステムは、グラフ内の特定のノードとそれらに関連付けられたエッジを除外することができる。 As described above with respect to 2D, in some embodiments, a comparison of a module with its neighboring modules can be used to generate an undirected constraint graph. The 3-bit integers representing the conserved combinations of binary values for the 3 modules of each module's 1×3 module pattern can be populated as nodes in the graph, and the linkage with each consistent 3-bit integer for the adjacent module is It can be an edge in the graph. Two nodes are considered consistent if the overlap region between each 1×3 module pattern in the grid of modules has the same combination of binary values. Determining the remaining modules may therefore involve determining a consistent and unique set of edges between each pixel and its two neighbors, so that only one node is present in each pixel , excluding other nodes and their edges. The system can use the nodes selected for the pixels to determine the correct combination of overlapping modulus values. As described above, the system can exclude certain nodes in the graph and their associated edges.

本明細書に記載した原理に従って動作する技術は、任意の適当なやり方で実装できる。上記のフローチャートの処理ブロック及び決定ブロックは、これらの種々のプロセスを実行するアルゴリズムに含めることができるステップと動作を表している。これらのプロセスから導出されるアルゴリズムは、1以上の専用又は多目的プロセッサと統合されてその動作を指示するソフトウェアとして実装でき、デジタル信号処理(DSP)回路又は特定用途向け集積回路(ASIC)などの機能的に等価な回路として実装でき、或いはその他の適当なやり方で実装されてよい。本明細書に含まれるフローチャートは、何らかの特定の回路又は何らかの特定のプログラミング言語又はプログラミング言語の種類の構文や動作を示していないことを理解されたい。むしろ、これらのフローチャートは、当業者が本明細書に記載するタイプの技術を実行する特定の装置の処理を行うための回路の製造、又はコンピュータソフトウェアアルゴリズムの実装に使用できる機能情報を例示するものである。本明細書で別途明記しない限り、各フローチャートに記載されたステップ及び/又は動作の特定のシーケンスは、実装できるアルゴリズムの例示にすぎず、本明細書に記載された原理の実装及び実施形態において変更できるものであることも理解されたい。 Techniques operating in accordance with the principles described herein may be implemented in any suitable manner. The processing and decision blocks in the above flowcharts represent steps and actions that can be included in algorithms that perform these various processes. Algorithms derived from these processes can be implemented as software integrated with one or more dedicated or general-purpose processors to direct its operation, functioning as digital signal processing (DSP) circuits or application-specific integrated circuits (ASICs). may be implemented as a substantially equivalent circuit, or may be implemented in any other suitable manner. It should be understood that the flowcharts contained herein do not represent the syntax or operation of any specific circuitry or any specific programming language or class of programming languages. Rather, these flow charts are illustrative of functional information that can be used by those skilled in the art to fabricate circuits or implement computer software algorithms to perform the processing of a particular device that performs the types of techniques described herein. is. Unless stated otherwise herein, the specific sequence of steps and/or actions set forth in each flowchart is merely an example of algorithms that may be implemented and may vary in implementations and embodiments of the principles described herein. It should also be understood that it is possible.

したがって一部の実施形態において本明細書に記載する技術は、アプリケーションソフトウェア、システムソフトウェア、ファームウェア、ミドルウェア、埋め込みコード、又は他の任意の適切なタイプのコンピュータコードを含むソフトウェアとして実装されるコンピュータ実行可能命令において具体化できる。そのようなコンピュータ実行可能命令は、幾つかの適切なプログラミング言語及び/又はプログラミングツール若しくはスクリプトツールのいずれかを使用して記述でき、フレームワーク又は仮想マシンで実行される実行可能なマシン言語コード又は中間コードとしてコンパイルされてもよい。 Thus, in some embodiments, the techniques described herein are computer-executable software implemented as software including application software, system software, firmware, middleware, embedded code, or any other suitable type of computer code. Can be instantiated in an instruction. Such computer-executable instructions can be written using any of a number of suitable programming languages and/or programming or scripting tools, executable machine language code or May be compiled as intermediate code.

本明細書に記載された技術がコンピュータ実行可能命令として具体化される場合、これらのコンピュータ実行可能命令は、多くの利便機能を含む任意の適当なやり方で実装されてよく、それぞれがこれらの技術に従って動作するアルゴリズムの実行を完了するための1以上の動作を提供する。しかしながらインスタンス化された「利便機能」はコンピュータシステムの構造的要素であり、1以上のコンピュータと統合されて実行されると1以上のコンピュータに特定の操作上の役割を実行させる。利便機能は、ソフトウェア要素の一部又は全体であってよい。例えば利便機能はプロセスの機能として、又は個別のプロセスとして、又は他の処理の適当な単位として実装されてよい。本明細書に記載された技術が複数の利便機能として実装される場合、各利便機能は独自の方法で実装されてよく、すべて同じ方法で実装する必要はない。さらに、これらの利便機能は必要に応じてパラレル及び/又はシリアルに実行されてよく、及びそれらが実行されているコンピュータの共有メモリを使用して、メッセージ受け渡しプロトコルを用いるか又はその他の適当な方法で互いの間で情報を受け渡すことができる。 When the techniques described herein are embodied as computer-executable instructions, these computer-executable instructions may be implemented in any suitable manner, including numerous convenience features, each of which is a provides one or more operations for completing execution of an algorithm that operates according to. However, an instantiated "convenience function" is a structural element of a computer system that, when integrated and executed with one or more computers, causes one or more computers to perform specific operational roles. Convenience functions may be part or all of the software elements. For example, convenience functions may be implemented as functions of processes, or as separate processes, or other suitable units of processing. Where the techniques described herein are implemented as multiple convenience functions, each convenience function may be implemented in its own way and need not all be implemented in the same way. Further, these convenience functions may be executed in parallel and/or serially as desired, and may be executed using the shared memory of the computer on which they are executing, using a message passing protocol, or in any other suitable manner. can pass information between each other.

一般に、利便機能は、特定のタスクを実行し、又は特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。通常、利便機能の機能性は、それらが動作するシステムにおいて所望する通りに組み合わせたり配分したりできる。一部の実装形態では、本明細書の技術を実行する1以上の利便機能が一緒になって完全なソフトウェアパッケージを形成できる。これらの利便機能は、代替実施形態ではソフトウェアプログラムアプリケーションを実装するために、他の無関係な利便機能及び/又はプロセスと相互作用するように適合されてよい。 Convenience functions generally include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. In general, the functionality of convenience features can be combined and distributed as desired in the systems in which they operate. In some implementations, one or more convenience functions that perform the techniques herein can together form a complete software package. These convenience functions may be adapted to interact with other unrelated convenience functions and/or processes to implement software program applications in alternative embodiments.

本明細書では、1以上のタスクを実行するために、幾つかの例示的な利便機能が記載された。しかしながら記載された利便機能及びタスクの分割は、本明細書で説明された例示的な技術を実装できる利便機能のタイプを例示するものにすぎず、実施形態は特定の数、分割又はタイプの利便機能に限定されないことを理解されたい。一部の実装においては、すべての機能性が単一の利便機能に実装されてよい。また、一部の実装では本明細書に記載された利便機能の一部を他の利便機能と一緒に又は別個に(即ち単一のユニット又は別個のユニットとして)実装でき、或いはこれらの利便機能の一部が実装されないこともある。 Several exemplary convenience features have been described herein for performing one or more tasks. However, the convenience functions and task divisions described are merely illustrative of the types of convenience functions with which the exemplary techniques described herein can be implemented, and embodiments may include any particular number, division, or type of convenience functions. It should be understood that it is not limited to functionality. In some implementations, all functionality may be implemented in a single convenience function. Also, in some implementations, some of the convenience features described herein may be implemented together with other convenience features or separately (i.e., as a single unit or separate units); some may not be implemented.

本明細書に記載した技術を実装するコンピュータ実行可能命令は(1以上の利便機能として又は他のやり方で実装される場合)、一部の実施形態では1以上のコンピュータ可読媒体でエンコードされて媒体に機能性を提供できる。コンピュータ可読媒体は、ハードディスクドライブなどの磁気媒体、コンパクトディスク(CD)やデジタル多用途ディスク(DVD)などの光学媒体、永続的又は非永続的なソリッドステートメモリ(フラッシュメモリ、磁気RAMなど)、又はその他の適当な記憶媒体を含む。そのようなコンピュータ可読媒体は、任意の適当なやり方で実装されてよい。本明細書で用いる「コンピュータ可読媒体」(「コンピュータ可読記憶媒体」とも呼ばれる)は、有形の記憶媒体を指す。有形の記憶媒体は非一時的であり、少なくとも1つの物理的構造的要素を有する。本明細書で用いる「コンピュータ可読媒体」では、少なくとも1つの物理的構造的要素は、情報が埋め込まれた媒体を作り出すプロセス、その媒体に情報を記録するプロセス、又は情報を含んだ媒体をエンコードするプロセス中に何らかの方法で変更できる少なくとも1つの物理的特性を有する。例えば記録プロセス中に、コンピュータ可読媒体の物理的構造の一部の磁化状態を変更できる。 Computer-executable instructions that implement the techniques described herein (when implemented as one or more convenience features or otherwise) are, in some embodiments, encoded on one or more computer-readable media and can provide functionality to The computer readable medium may be magnetic media such as hard disk drives, optical media such as compact discs (CDs) and digital versatile discs (DVDs), persistent or non-persistent solid state memory (flash memory, magnetic RAM, etc.), or Including other suitable storage media. Such computer-readable media may be implemented in any suitable way. As used herein, "computer-readable medium" (also called "computer-readable storage medium") refers to tangible storage media. A tangible storage medium is non-transitory and has at least one physical structural element. As used herein, "computer-readable medium" refers to at least one physical, structuring element that describes a process that creates a medium in which information is embedded, a process that records information on the medium, or encodes a medium that contains information. It has at least one physical property that can be altered in some way during the process. For example, the magnetization state of some of the physical structures of the computer-readable medium can be changed during the recording process.

さらに、上述した一部の技術は、これらの技術によって使用するために何らかの方法で情報(例えばデータ及び/又は命令)を保存する動作を含む。これらの技術の一部の実装-技術がコンピュータ実行可能命令として実現される実装など-では、情報はコンピュータ可読記憶媒体にエンコードされる。本明細書で特定の構造がこの情報を保存するための有利なフォーマットとして記載されている場合、記憶媒体にエンコードされるときにこれらの構造を使用して情報の物理的編成を与えることができる。次にこれらの有利な構造は、情報と相互作用する1以上のプロセッサの動作に影響を与えることにより、例えばプロセッサによって実行されるコンピュータ操作の効率を上げることによって記憶媒体に機能性を付与できる。 Moreover, some of the techniques described above involve acts that store information (eg, data and/or instructions) in some way for use by those techniques. In some implementations of these techniques—such as those in which the techniques are implemented as computer-executable instructions—information is encoded on computer-readable storage media. Where specific structures are described herein as advantageous formats for storing this information, these structures can be used to provide the physical organization of the information when encoded on storage media. . These advantageous structures, in turn, can impart functionality to the storage medium by influencing the operation of one or more processors interacting with the information, eg, by increasing the efficiency of computer operations performed by the processors.

技術をコンピュータ実行可能命令として具体化できる一部の実装(すべての実装ではない)において、これらの命令は任意の適当なコンピュータシステムで動作する1以上の適当なコンピューティングデバイスで実行でき、又は1以上のコンピューティングデバイス(又は1以上のコンピューティングデバイスの1以上のプロセッサ)はコンピュータ実行可能命令を実行するようにプログラムできる。コンピューティングデバイス又はプロセッサは、命令がコンピューティングデバイス又はプロセッサにアクセス可能なやり方でデータストアなど(例えばオンチップキャッシュ又は命令レジスタ、バスを介してアクセス可能なコンピュータ可読記憶媒体、1以上のネットワークを介してアクセス可能な及びデバイス/プロセッサによってアクセス可能なコンピュータ可読記憶媒体など)に保存された場合に命令を実行するようにプログラムできる。これらのコンピュータ実行可能命令を含む利便機能は、単一の多目的プログラム可能なデジタルコンピューティングデバイス、処理能力を共有して本明細書に記載した技術を共同で実行する2以上の多目的コンピューティングデバイスの協調システム、本明細書に記載された技術を実行するためだけの単一のコンピューティングデバイス又はコンピューティングデバイスの協調システム(共同設置又は地理的に分散)、本明細書に記載した技術を実行するための1以上のフィールドプログラマブルゲートアレイ(FPGA)、或いはその他の任意の適当なシステムと統合されてその動作を指示することができる。 In some implementations, but not all implementations, where the techniques may be embodied as computer-executable instructions, those instructions may be executed by one or more suitable computing devices running on any suitable computer system; Any of the above computing devices (or one or more processors of one or more computing devices) can be programmed to execute computer-executable instructions. A computing device or processor may store data stores or the like in such a way that the instructions are accessible to the computing device or processor (e.g., on-chip cache or instruction registers, computer readable storage media accessible via a bus, via one or more networks). computer-readable storage medium accessible by the device/processor) to execute instructions. Convenience features containing these computer-executable instructions may be combined into a single multipurpose programmable digital computing device, two or more multipurpose computing devices that share processing power and jointly perform the techniques described herein. A collaborative system, a single computing device dedicated to performing the techniques described herein or a collaborative system of computing devices (co-located or geographically distributed), performing the techniques described herein It can be integrated with one or more Field Programmable Gate Arrays (FPGAs) for or any other suitable system to direct its operation.

コンピューティングデバイスは、少なくとも1つのプロセッサ、ネットワークアダプタ、及びコンピュータ可読記憶媒体を含むことができる。コンピューティングデバイスは、例えばデスクトップ又はラップトップパーソナルコンピュータ、パーソナルデジタルアシスタント(PDA)、スマートフォン、携帯電話、サーバ、又は他の任意の適当なコンピューティングデバイスであってよい。ネットワークアダプタは、任意の適当なコンピューティングネットワークを介して他の任意の適当なコンピューティングデバイスと有線及び/又は無線で通信するために、コンピューティングデバイスを有効にする任意の適当なハードウェア及び/又はソフトウェアであってよい。コンピューティングネットワークは、ワイヤレスアクセスポイント、スイッチ、ルータ、ゲートウェイ、及び/又はその他のネットワーク機器、並びにインターネットを含め2以上のコンピュータ間でデータを交換するための適当な有線及び/又は無線通信媒体を含んでよい。コンピュータ可読媒体は、処理されるデータ及び/又はプロセッサによって実行される命令を保存するように適合できる。プロセッサは、データの処理や命令の実行を可能にする。データ及び命令は、コンピュータ可読記憶媒体に保存されてよい。 A computing device may include at least one processor, a network adapter, and a computer-readable storage medium. A computing device may be, for example, a desktop or laptop personal computer, a personal digital assistant (PDA), a smart phone, a mobile phone, a server, or any other suitable computing device. A network adapter is any suitable hardware and/or enabling a computing device to communicate wiredly and/or wirelessly with any other suitable computing device over any suitable computing network. or software. A computing network includes wireless access points, switches, routers, gateways, and/or other network equipment, and any suitable wired and/or wireless communication medium for exchanging data between two or more computers, including the Internet. OK. A computer-readable medium may be adapted to store data to be processed and/or instructions to be executed by a processor. Processors enable the processing of data and the execution of instructions. Data and instructions may be stored in a computer-readable storage medium.

コンピューティングデバイスは、さらに入出力装置を含め1以上のコンポーネントと周辺機器を有してよい。これらのデバイスは、とりわけユーザインタフェースを提供するために使用できる。ユーザインタフェースを提供するために使用できる出力デバイスの例は、出力を視覚的に表示するためのプリンタ又はディスプレイ画面、及び出力を聴覚的に表示するためのスピーカ又はその他の音声生成装置を含む。ユーザインタフェースに使用できる入力デバイスの例は、キーボード、マウスやタッチパッドなどのポインティングデバイス、及びデジタル化タブレットを含む。別の例として、コンピューティングデバイスは、音声認識又は他の可聴形式で入力情報を受け取ることができる。 A computing device may also have one or more components and peripherals, including input/output devices. These devices can be used, among other things, to provide a user interface. Examples of output devices that can be used to provide a user interface include printers or display screens for visually displaying output and speakers or other sound generating devices for audibly displaying output. Examples of input devices that can be used for user interfaces include keyboards, pointing devices such as mice and touch pads, and digitizing tablets. As another example, a computing device may receive input information in speech recognition or other audible form.

記載された実施形態は、技術が回路及び/又はコンピュータ実行可能命令で実装されたものである。一部の実施形態は、少なくとも1つの例が提供された方法の形態であってもよいことを理解されたい。方法の一部として実行される動作は、任意の適切なやり方で順序付けることができる。したがって例示の実施形態では連続した動作として示されているが、実施形態は幾つかの動作を同時に実行することも含めて、動作が例示されたものとは異なる順序で実行されるように構成されてよい。 The described embodiments are techniques implemented in circuits and/or computer-executable instructions. It should be appreciated that some embodiments may be in the form of methods of which at least one example has been provided. The acts performed as part of the method may be ordered in any suitable manner. Thus, although illustrated embodiments are shown as sequential operations, embodiments may be configured to perform the operations in a different order than illustrated, including performing some operations simultaneously. you can

上記の実施形態の種々の態様は、単独でも、組み合わせて、又は上述した実施形態で具体的に論じられていない様々な配置で使用することができ、それゆえその応用において上記の説明に記され又は図面に示された構成要素の詳細及び配置に限定されるものではない。例えばある実施形態に記載された態様は、他の実施形態に記載された態様と任意のやり方で組み合わせることができる。 Various aspects of the above embodiments can be used singly, in combination, or in various arrangements not specifically discussed in the above embodiments and are therefore noted in the above description in their application. or to the details and arrangements of components shown in the drawings. For example, aspects described in one embodiment may be combined in any manner with aspects described in other embodiments.

特許請求の範囲でクレーム要素を修正するために「第1」、「第2」、「第3」などの序数詞を使用することは、それ自体はあるクレーム要素の別のクレーム要素に対する優先、優位又は順位、或いは方法の動作が実行される時間的順序を意味するものではなく、単にクレーム要素を区別するために特定の名前を持つクレーム要素を(序数詞の使用を除いて)同じ名前を持つ別の要素と区別するためのラベルとしてのみ使用される。 The use of ordinal numbers such as "first," "second," "third," etc. to modify claim elements in a claim does not, in itself, give precedence or predominance of one claim element over another. or order, or the chronological order in which the method acts are performed, but merely to distinguish claim elements from one another with the same name (except for the use of ordinal numbers). It is used only as a label to distinguish elements of

また、本明細書で使用される語法及び用語は説明を目的とするものであり、制限と見なされるべきではない。本明細書における「含む」、「有する」、「持つ」、「包含する」、「伴う」、及びそれらの変形の使用は、その後に列挙される項目、及びその同等物、並びに追加項目を網羅することを意味する。 Also, the phraseology and terminology used herein is for the purpose of description and should not be regarded as limiting. The use of "including," "having," "having," "including," "accompanied by," and variations thereof herein encompasses the items listed thereafter and their equivalents, as well as additional items. means to

本明細書では、「例示的」という言葉は、例、事例又は例示としての役割を果たすことを意味するものとして使用される。それゆえ本明細書に例示として記載される実施形態、実装、プロセス、特徴などは、例示的な例として理解されるべきであり、特に明記しない限り選好される例若しくは有利な例として理解されるべきではない。 The word "exemplary" is used herein to mean serving as an example, instance, or illustration. Thus, the embodiments, implementations, processes, features, etc., described herein as illustrative are to be understood as illustrative examples, and unless otherwise specified, are to be understood as preferred or advantageous examples. shouldn't.

以上、少なくとも1つの実施形態の幾つかの態様を説明したが、当業者には様々な変更、修正及び改善が容易に想到し得るものであることを理解されたい。そのような変更、修正及び改善は本開示の一部であることが意図されており、本明細書に記載する原理の精神及び範囲内にあることが意図されている。したがって上記の説明及び図面は例示にすぎない。 Having thus described several aspects of at least one embodiment, it is to be appreciated various alterations, modifications, and improvements will readily occur to those skilled in the art. Such alterations, modifications, and improvements are intended to be part of this disclosure, and are intended to be within the spirit and scope of the principles described herein. Accordingly, the above description and drawings are exemplary only.

Claims (40)

デジタル画像内のシンボルをデコードするためのコンピュータ化された方法であって:
当該方法はシンボルの部分のデジタル画像を受け取ることを有し、ここで、デジタル画像はピクセルの格子を含み、シンボルはモジュールの格子を含んでおり、
当該方法は前記モジュールの格子内のモジュールの連続サブセットと前記ピクセルの格子との間の空間マッピングを決定することを有し、
当該方法は、前記空間マッピングを使用して、モジュールの前記連続サブセット内の各モジュールと前記ピクセルの格子との間の因果関係を決定することを有し、ここで、前記因果関係は、モジュールの値がピクセルの格子内のピクセルのサブセットの値の各々に与える影響の程度を表わしており、
当該方法は、前記因果関係を用いて、モジュールの前記連続サブセット内の2個以上の隣接するモジュールの値の有効な組み合わせのセットを前記ピクセルの格子に照らしてテストすることを有し、
当該方法は、前記テストされた有効な組み合わせのセットに基づいて、前記2個以上の隣接するモジュールの少なくとも1個のモジュールの値を決定することを有し、かつ
当該方法は、前記少なくとも1個のモジュールの決定された値に基づいて、シンボルをデコードすることを有する、
上記方法。
A computerized method for decoding symbols in a digital image comprising:
The method comprises receiving a digital image of a portion of the symbol, wherein the digital image comprises a grid of pixels, the symbol comprises a grid of modules;
The method comprises determining a spatial mapping between a contiguous subset of modules within the grid of modules and the grid of pixels;
The method comprises using the spatial mapping to determine a causal relationship between each module in the contiguous subset of modules and the grid of pixels, wherein the causal relationship is a represents the degree to which a value affects each of the values of a subset of pixels in a grid of pixels,
The method comprises using the causality to test a set of valid combinations of values of two or more adjacent modules in the contiguous subset of modules against the grid of pixels;
The method comprises determining the value of at least one of the two or more adjacent modules based on the set of valid combinations tested, and the method comprises: decoding the symbol based on the determined value of the module of
above method.
モジュールの格子内のモジュールの連続サブセット内の前記2個以上の隣接するモジュールは、前記モジュールの格子の3×3サブ格子を含む、請求項1に記載の方法。 2. The method of claim 1, wherein the two or more adjacent modules in a contiguous subset of modules within a grid of modules comprise a 3x3 sub-grid of the grid of modules. 前記2個以上のモジュールの少なくとも1個のモジュールは、前記3×3サブ格子の中心モジュールである、請求項2に記載の方法。 3. The method of claim 2, wherein at least one module of said two or more modules is a center module of said 3x3 sub-grid. モジュールの前記連続サブセットは、既知の値を有する少なくとも1つの所定のモジュールを含み、前記2個以上の隣接するモジュールの値の有効な組み合わせのセットは、前記少なくとも1つの所定のモジュールに対して既知の値を有する組み合わせのみを含む、請求項1に記載の方法。 The contiguous subset of modules includes at least one predetermined module having known values, and a set of valid combinations of values of the two or more adjacent modules is known for the at least one predetermined module. 2. The method of claim 1, including only combinations having values of . 前記所定のモジュールは、シンボルのファインダパターン又はタイミングパターン内部のモジュールである、請求項4に記載の方法。 5. The method of claim 4, wherein the predetermined module is a module within a symbol's finder pattern or timing pattern. 前記所定のモジュールの前記既知の値は、単一のピクセルがピクセルのサブセット内の他のピクセルと前記所定のモジュールとの間の因果関係と比較して、前記所定のモジュールと優勢な因果関係を有するため、前記ピクセルの格子における前記単一のピクセルの値のみに基づいて推定される、請求項4に記載の方法。 The known value of the given module determines that a single pixel has a dominant causal relationship with the given module compared to causality between other pixels in the subset of pixels and the given module. 5. The method of claim 4, wherein the estimation is based only on the value of the single pixel in the grid of pixels because it has 前記所定のモジュールは、以前に決定された値を有する任意のモジュールを含む、請求項4に記載の方法。 5. The method of claim 4, wherein said predetermined module comprises any module having a previously determined value. 前記因果関係を決定することは、モジュールの前記連続サブセット内の各モジュールが前記ピクセルの格子内の各ピクセルとオーバーラップする程度を、空間関係を用いて特定して、オーバーラップの程度のセットを生成する、請求項1に記載の方法。 Determining the causal relationship includes using spatial relationships to identify the extent to which each module in the contiguous subset of modules overlaps with each pixel in the grid of pixels to determine a set of extents of overlap. 2. The method of claim 1, generating. モジュールの前記連続サブセット内の各モジュールがピクセルの格子内の各ピクセルとオーバーラップする前記程度は、サンプリング係数のセットによって、及びサンプリングマトリックスの一部として表される、請求項8に記載の方法。 9. The method of claim 8, wherein the degree to which each module in the contiguous subset of modules overlaps each pixel in a grid of pixels is represented by a set of sampling factors and as part of a sampling matrix. 前記ピクセルの格子と前記モジュールの格子はいずれも2次元である、請求項1に記載の方法。 2. The method of claim 1, wherein both the grid of pixels and the grid of modules are two-dimensional. 前記ピクセルの格子は2次元画像を通過する1次元スキャンからのサンプルの1次元格子であり、前記モジュールの格子はモジュールの1次元格子である、請求項1に記載の方法。 2. The method of claim 1, wherein the grid of pixels is a one-dimensional grid of samples from a one-dimensional scan through a two-dimensional image and the grid of modules is a one-dimensional grid of modules. 前記シンボルは1次元(1D)バーコードと2次元(2D)バーコードからなる群から選択される、請求項1に記載の方法。 2. The method of claim 1, wherein said symbols are selected from the group consisting of one-dimensional (1D) barcodes and two-dimensional (2D) barcodes. メモリと通信するプロセッサを備えた、デジタル画像内のシンボルをデコードするための装置であって、前記プロセッサはメモリに格納されている命令を実行するように構成されており、前記命令は:
前記プロセッサにシンボルの部分のデジタル画像を受け取らせ、ここで、デジタル画像はピクセルの格子を含み、シンボルはモジュールの格子を含んでおり、
前記プロセッサに前記モジュールの格子内のモジュールの連続サブセットと前記ピクセルの格子との間の空間マッピングを決定させ、
前記プロセッサに、前記空間マッピングを使用して、モジュールの前記連続サブセット内の各モジュールと前記ピクセルの格子との間の因果関係を決定させ、ここで、前記因果関係は、モジュールの値がピクセルの格子内のピクセルのサブセットの値の各々に与える影響の程度を表わしており、
前記プロセッサに、前記因果関係を用いて、モジュールの前記連続サブセット内の2個以上の隣接するモジュールの値の有効な組み合わせのセットを前記ピクセルの格子に照らしてテストさせ、
前記プロセッサに、前記テストされた有効な組み合わせのセットに基づいて、前記2個以上の隣接するモジュールの少なくとも1個のモジュールの値を決定させ、かつ
前記プロセッサに、前記少なくとも1個のモジュールの決定された値に基づいて、シンボルをデコードさせ、るものである、
上記装置。
An apparatus for decoding symbols in a digital image, comprising a processor in communication with memory, said processor being configured to execute instructions stored in memory, said instructions being:
causing the processor to receive a digital image of a portion of a symbol, wherein the digital image comprises a grid of pixels and the symbol comprises a grid of modules;
causing the processor to determine a spatial mapping between a contiguous subset of modules within the grid of modules and the grid of pixels;
cause the processor to determine a causal relationship between each module in the contiguous subset of modules and the grid of pixels using the spatial mapping, wherein the causal relationship is a represents the degree of influence on each of the values of a subset of pixels in the grid,
causing the processor to use the causality to test a set of valid combinations of values of two or more adjacent modules in the contiguous subset of modules against the grid of pixels;
causing the processor to determine the value of at least one of the two or more adjacent modules based on the set of valid combinations tested; and causing the processor to determine the at least one module. is the one that causes the symbols to be decoded, based on the value obtained,
the above equipment.
モジュールの格子内のモジュールの連続サブセット内の前記2個以上の隣接するモジュールは、前記モジュールの格子の3×3サブ格子を含む、請求項13に記載の装置。 14. The apparatus of claim 13, wherein the two or more adjacent modules in a contiguous subset of modules within a grid of modules comprise a 3x3 sub-grid of the grid of modules. モジュールの前記連続サブセットは、既知の値を有する少なくとも1つの所定のモジュールを含み、前記2個以上の隣接するモジュールの値の有効な組み合わせのセットは、前記少なくとも1つの所定のモジュールに対して既知の値を有する組み合わせのみを含む、請求項13に記載の装置。
The contiguous subset of modules includes at least one predetermined module having known values, and a set of valid combinations of values of the two or more adjacent modules is known for the at least one predetermined module. 14. The apparatus of claim 13, comprising only combinations having values of .
前記因果関係を決定することは、モジュールの前記連続サブセット内の各モジュールが前記ピクセルの格子内の各ピクセルとオーバーラップする程度を、空間関係を用いて特定して、オーバーラップの程度のセットを生成することを含む、請求項13に記載の装置。 Determining the causal relationship includes using spatial relationships to identify the extent to which each module in the contiguous subset of modules overlaps with each pixel in the grid of pixels to determine a set of extents of overlap. 14. The apparatus of claim 13, comprising generating. 前記ピクセルの格子と前記モジュールの格子はいずれも2次元である、請求項13に記載の装置。 14. The apparatus of claim 13, wherein both the grid of pixels and the grid of modules are two-dimensional. 前記ピクセルの格子は2次元画像を通過する1次元スキャンからのサンプルの1次元格子であり、前記モジュールの格子はモジュールの1次元格子である、請求項13に記載の装置。 14. The apparatus of claim 13, wherein the grid of pixels is a one-dimensional grid of samples from a one-dimensional scan through a two-dimensional image and the grid of modules is a one-dimensional grid of modules. 前記シンボルは1次元(1D)バーコードと2次元(2D)バーコードからなる群から選択される、請求項13に記載の装置。 14. The apparatus of claim 13, wherein said symbols are selected from the group consisting of one-dimensional (1D) barcodes and two-dimensional (2D) barcodes. プロセッサ実行可能命令を格納している少なくとも1つの非一時的コンピュータ可読記憶媒体であって、前記命令は少なくとも1つのコンピュータハードウェアプロセッサによって実行されると:
前記少なくとも1つのコンピュータハードウェアプロセッサにシンボルの部分のデジタル画像を受け取らせ、ここで、デジタル画像はピクセルの格子を含み、シンボルはモジュールの格子を含んでおり、
前記少なくとも1つのコンピュータハードウェアプロセッサに前記モジュールの格子内のモジュールの連続サブセットと前記ピクセルの格子との間の空間マッピングを決定させ、
前記少なくとも1つのコンピュータハードウェアプロセッサに、前記空間マッピングを使用して、モジュールの前記連続サブセット内の各モジュールと前記ピクセルの格子との間の因果関係を決定させ、ここで、前記因果関係は、モジュールの値がピクセルの格子内のピクセルのサブセットの値の各々に与える影響の程度を表わしており、
前記少なくとも1つのコンピュータハードウェアプロセッサに、前記因果関係を用いて、モジュールの前記連続サブセット内の2個以上の隣接するモジュールの値の有効な組み合わせのセットを前記ピクセルの格子に照らしてテストさせ、
前記少なくとも1つのコンピュータハードウェアプロセッサに、前記テストされた有効な組み合わせのセットに基づいて、前記2個以上の隣接するモジュールの少なくとも1個のモジュールの値を決定させ、かつ
前記少なくとも1つのコンピュータハードウェアプロセッサに、前記少なくとも1個のモジュールの決定された値に基づいて、シンボルをデコードさせ、るものである、
上記非一時的コンピュータ可読記憶媒体。
At least one non-transitory computer-readable storage medium storing processor-executable instructions, said instructions being executed by at least one computer hardware processor:
causing said at least one computer hardware processor to receive a digital image of a portion of a symbol, wherein the digital image comprises a grid of pixels and the symbol comprises a grid of modules;
causing the at least one computer hardware processor to determine a spatial mapping between a contiguous subset of modules within the grid of modules and the grid of pixels;
causing the at least one computer hardware processor to use the spatial mapping to determine a causal relationship between each module in the contiguous subset of modules and the grid of pixels, wherein the causal relationship is: represents the degree to which the value of the modulus affects each of the values of a subset of pixels in a grid of pixels,
causing the at least one computer hardware processor to use the causality to test a set of valid combinations of values of two or more adjacent modules in the contiguous subset of modules against the grid of pixels;
causing the at least one computer hardware processor to determine the value of at least one of the two or more adjacent modules based on the set of valid combinations tested; and causing a hardware processor to decode symbols based on the determined values of the at least one module;
The above non-transitory computer-readable storage medium.
コンピュータ化された方法であって:
当該方法はシンボルの部分のデジタル画像及び空間マッピングを受け取ることを有し、ここで、前記デジタル画像はピクセルの格子を含み、前記シンボルはモジュールの格子を含み、前記空間マッピングは前記モジュールの格子におけるモジュールの連続サブセットを前記ピクセルの格子に関係させており;
当該方法は、モジュールの前記連続サブセット内の2個以上の隣接するモジュールの値の有効な組み合わせのセットを決定することを有し、前記値の有効な組み合わせのセットにおける値のそれぞれの有効な組み合わせは:
前記空間マッピングを使用して、(i)前記モジュールの第1のセットと前記ピクセルの格子におけるそれぞれの格子とのオーバーラップの程度、及び/又は、(ii)前記モジュールの第1のセットのうちの少なくとも1つにマッピングされたそれぞれのピクセルをオーバーラップする隣接するモジュールについての所定の値、に部分的に基づいて決定される前記モジュールの連続サブセットにおけるモジュールの第1のセットについての第1の値のセットからのものである、前記2個以上の隣接するモジュールにおける第1のモジュールについての値;及び
前記値の有効な組み合わせのセットにおける値の異なる有効な組み合わせに含まれる場合の前記第2のモジュールについての第2の有効な値とは異なる、前記2個以上の隣接するモジュールにおける第2のモジュールについての第1の有効な値;を含み;
当該方法は、モジュールの前記連続サブセット内の各モジュールと前記ピクセルの格子との間の因果関係を用いて、モジュールの前記連続サブセット内の2個以上の隣接するモジュールの値の前記有効な組み合わせのセットを、前記ピクセルの格子に照らしてテストすることを有し、ここで、各々の因果関係は、前記ピクセルの格子におけるピクセルのサブセットの各々の値のうえにモジュールの前記連続サブセット内のモジュールの値が有する影響の程度を示すものであり;
当該方法は、前記2個以上の隣接するモジュールの値のうちの有効な組み合わせのセットからの値についての少なくとも1個のテストされた有効な組み合わせに基づいてシンボルをデコードすることを有し、ここで、前記値についての少なくとも1個のテストされた有効な組み合わせは前記2個以上の隣接するモジュールにおける前記第2のモジュールの最終の値を含んでいる;
上記方法。
A computerized method comprising:
The method comprises receiving a digital image and a spatial mapping of a portion of a symbol, wherein the digital image comprises a grid of pixels, the symbol comprises a grid of modules, and the spatial mapping is a grid of modules. relating a contiguous subset of modules to the grid of pixels;
The method comprises determining a set of valid combinations of values of two or more adjacent modules within said contiguous subset of modules, each valid combination of values in said set of valid combinations of values. teeth:
using the spatial mapping to determine (i) the degree of overlap between the first set of modules and respective grids in the grid of pixels; and/or (ii) among the first set of modules. for a first set of modules in the contiguous subset of modules determined based in part on a predetermined value for adjacent modules overlapping each pixel mapped to at least one of a value for a first module in said two or more adjacent modules that is from a set of values; and said second if contained in a different valid combination of values in said set of valid combinations of values. a first valid value for a second module in said two or more adjacent modules that is different than a second valid value for a module of;
The method uses a causal relationship between each module in the contiguous subset of modules and the grid of pixels to identify the valid combinations of values of two or more adjacent modules in the contiguous subset of modules. testing a set against said grid of pixels, wherein each causal relationship of a module within said contiguous subset of modules on the value of each of a subset of pixels in said grid of pixels; indicates the degree of influence the value has;
The method comprises decoding symbols based on at least one tested valid combination of values from a set of valid combinations of values of the two or more adjacent modules, wherein and at least one tested valid combination of said values includes the final value of said second module in said two or more adjacent modules;
above method.
モジュールの格子内のモジュールの連続サブセット内の前記2個以上の隣接するモジュールは、前記モジュールの格子の3×3サブ格子を含む、請求項21に記載の方法。 22. The method of claim 21, wherein the two or more adjacent modules in a contiguous subset of modules within a grid of modules comprise a 3x3 sub-grid of the grid of modules. 前記2個以上の隣接するモジュールにおける前記第2のモジュールは、前記3×3サブ格子の中心モジュールである、請求項22に記載の方法。 23. The method of claim 22, wherein the second module of the two or more adjacent modules is the center module of the 3x3 sub-grid. 前記隣接するモジュールは、シンボルのファインダパターン又はタイミングパターン内部のモジュールである、請求項21に記載の方法。 22. The method of claim 21, wherein the adjacent modules are modules within a symbol's finder pattern or timing pattern. 前記ピクセルのサブセット内の他のピクセルと前記隣接するモジュールとの間の因果関係と比較すると、ある単一のピクセルが前記隣接するモジュールと優勢な因果関係を有することに起因して、前記隣接するモジュールの前記所定の値は、前記ピクセルの格子における前記単一のピクセルの値に基づいて推定される、請求項21に記載の方法。 Due to a single pixel having a dominant causal relationship with the adjacent module when compared to causal relationships between other pixels in the subset of pixels and the adjacent module, the adjacent 22. The method of claim 21, wherein the predetermined value of module is estimated based on the value of the single pixel in the grid of pixels. 前記因果関係を決定することは、モジュールの前記連続サブセット内の各モジュールが前記ピクセルの格子内の各ピクセルとオーバーラップする程度を、前記空間マッピングを用いて特定することによりなされ、それによってオーバーラップの程度のセットが生成される、請求項21に記載の方法。 Determining the causal relationship is done by using the spatial mapping to identify the degree to which each module in the contiguous subset of modules overlaps with each pixel in the grid of pixels, whereby overlapping 22. The method of claim 21, wherein a set of degrees of is generated. モジュールの前記連続サブセット内の各モジュールが前記ピクセルの格子内の各ピクセルとオーバーラップする前記程度は、サンプリング係数のセットによって、及びサンプリングマトリックスの一部として表される、請求項26に記載の方法。 27. The method of claim 26, wherein the degree to which each module in the contiguous subset of modules overlaps each pixel in the grid of pixels is represented by a set of sampling factors and as part of a sampling matrix. . 前記ピクセルの格子と前記モジュールの格子はいずれも2次元である、請求項21に記載の方法。 22. The method of claim 21, wherein both the grid of pixels and the grid of modules are two-dimensional. 前記ピクセルの格子は2次元画像を通過する1次元スキャンからのサンプルの1次元格子であり、前記モジュールの格子はモジュールの1次元格子である、請求項21に記載の方法。 22. The method of claim 21, wherein the grid of pixels is a one-dimensional grid of samples from a one-dimensional scan through a two-dimensional image and the grid of modules is a one-dimensional grid of modules. 前記シンボルは1次元(1D)バーコードと2次元(2D)バーコードからなる群から選択される、請求項21に記載の方法。 22. The method of claim 21, wherein said symbols are selected from the group consisting of one-dimensional (1D) barcodes and two-dimensional (2D) barcodes. メモリと通信するプロセッサを備えた装置であって、前記プロセッサはメモリに格納されている命令を実行するように構成されており、前記命令は:
前記プロセッサにシンボルの部分のデジタル画像及び空間マッピングを受け取らせ、ここで、前記デジタル画像はピクセルの格子を含み、前記シンボルはモジュールの格子を含み、前記空間マッピングは前記モジュールの格子におけるモジュールの連続サブセットを前記ピクセルの格子に関係させており;
前記プロセッサに、モジュールの前記連続サブセット内の2個以上の隣接するモジュールの値の有効な組み合わせのセットを決定させて、ここで、前記値の有効な組み合わせのセットにおける値のそれぞれの有効な組み合わせは:
前記空間マッピングを使用して、(i)前記モジュールの第1のセットと前記ピクセルの格子におけるそれぞれの格子とのオーバーラップの程度、及び/又は、(ii)前記モジュールの第1のセットのうちの少なくとも1つにマッピングされたそれぞれのピクセルをオーバーラップする隣接するモジュールについての所定の値、に部分的に基づいて決定される前記モジュールの連続サブセットにおけるモジュールの第1のセットについての第1の値のセットからのものである、前記2個以上の隣接するモジュールにおける第1のモジュールについての値;及び
前記値の有効な組み合わせのセットにおける値の異なる有効な組み合わせに含まれる場合の前記第2のモジュールについての第2の有効な値とは異なる、前記2個以上の隣接するモジュールにおける第2のモジュールについての第1の有効な値;を含み;
前記プロセッサに、モジュールの前記連続サブセット内の各モジュールと前記ピクセルの格子との間の因果関係を用いて、モジュールの前記連続サブセット内の2個以上の隣接するモジュールの値の前記有効な組み合わせのセットを、前記ピクセルの格子に照らしてテストさせて、ここで、各々の因果関係は、前記ピクセルの格子におけるピクセルのサブセットの各々の値のうえにモジュールの前記連続サブセット内のモジュールの値が有する影響の程度を示すものであり;
前記プロセッサに、前記2個以上の隣接するモジュールの値のうちの有効な組み合わせのセットからの値についての少なくとも1個のテストされた有効な組み合わせに基づいてシンボルをデコードさせ、ここで、前記値についての少なくとも1個のテストされた有効な組み合わせは前記2個以上の隣接するモジュールにおける前記第2のモジュールの最終の値を含んでいる;
上記装置。
An apparatus comprising a processor in communication with a memory, the processor configured to execute instructions stored in the memory, the instructions comprising:
causing said processor to receive a digital image and a spatial mapping of a portion of a symbol, wherein said digital image comprises a grid of pixels, said symbol comprises a grid of modules, and said spatial mapping is a succession of modules in said grid of modules; relating a subset to the grid of pixels;
causing said processor to determine a set of valid combinations of values of two or more adjacent modules in said contiguous subset of modules, wherein each valid combination of values in said set of valid combinations of values; teeth:
using the spatial mapping to determine (i) the degree of overlap between the first set of modules and respective grids in the grid of pixels; and/or (ii) among the first set of modules. for a first set of modules in the contiguous subset of modules determined based in part on a predetermined value for adjacent modules overlapping each pixel mapped to at least one of a value for a first module in said two or more adjacent modules that is from a set of values; and said second if contained in a different valid combination of values in said set of valid combinations of values. a first valid value for a second module in said two or more adjacent modules that is different than a second valid value for a module of;
instructing the processor to identify the valid combinations of values of two or more adjacent modules in the contiguous subset of modules using causality between each module in the contiguous subset of modules and the grid of pixels; causing a set to be tested against said grid of pixels, wherein each causal relationship has the value of a module within said contiguous subset of modules on the value of each of a subset of pixels in said grid of pixels; indicating the degree of impact;
cause the processor to decode symbols based on at least one tested valid combination of values from a set of valid combinations of values of the two or more adjacent modules; at least one tested valid combination of includes the final value of said second module in said two or more adjacent modules;
the above equipment.
モジュールの格子内のモジュールの前記連続サブセット内の前記2個以上の隣接するモジュールは、前記モジュールの格子の3×3サブ格子を含む、請求項31に記載の装置。 32. The apparatus of claim 31, wherein the two or more adjacent modules within the contiguous subset of modules within the grid of modules comprise a 3x3 sub-grid of the grid of modules. 前記2個以上の隣接するモジュールの前記第2のモジュールは、前記3×3サブ格子の中心モジュールである、請求項32に記載の装置。 33. The apparatus of claim 32, wherein said second module of said two or more adjacent modules is a center module of said 3x3 sub-grid. 前記ピクセルのサブセット内の他のピクセルと前記隣接するモジュールとの間の因果関係と比較すると、ある単一のピクセルが前記隣接するモジュールと優勢な因果関係を有することに起因して、前記隣接するモジュールの前記所定の値は、前記ピクセルの格子における前記単一のピクセルの値に基づいて推定される、請求項31に記載の装置。 Due to a single pixel having a dominant causal relationship with the adjacent module when compared to causal relationships between other pixels in the subset of pixels and the adjacent module, the adjacent 32. The apparatus of claim 31, wherein the predetermined value of module is estimated based on the value of the single pixel in the grid of pixels. 前記因果関係を決定することは、モジュールの前記連続サブセット内の各モジュールが前記ピクセルの格子内の各ピクセルとオーバーラップする程度を、前記空間マッピングを用いて特定することによりなされ、それによってオーバーラップの程度のセットが生成される、請求項31に記載の装置。 Determining the causality is done by using the spatial mapping to identify the extent to which each module in the contiguous subset of modules overlaps with each pixel in the grid of pixels, thereby overlapping 32. The apparatus of claim 31, wherein a set of degrees of is generated. モジュールの前記連続サブセット内の各モジュールが前記ピクセルの格子内の各ピクセルとオーバーラップする前記程度は、サンプリング係数のセットによって、及びサンプリングマトリックスの一部として表される、請求項35に記載の装置。 36. The apparatus of claim 35, wherein the degree to which each module in the contiguous subset of modules overlaps each pixel in the grid of pixels is represented by a set of sampling factors and as part of a sampling matrix. . 前記ピクセルの格子と前記モジュールの格子はいずれも2次元である、請求項31に記載の装置。 32. The apparatus of claim 31, wherein both the grid of pixels and the grid of modules are two-dimensional. 前記ピクセルの格子は2次元画像を通過する1次元スキャンからのサンプルの1次元格子であり、前記モジュールの格子はモジュールの1次元格子である、請求項31に記載の装置。 32. The apparatus of claim 31, wherein the grid of pixels is a one-dimensional grid of samples from a one-dimensional scan through a two-dimensional image and the grid of modules is a one-dimensional grid of modules. 前記シンボルは1次元(1D)バーコードと2次元(2D)バーコードからなる群から選択される、請求項31に記載の装置。 32. The apparatus of claim 31, wherein said symbols are selected from the group consisting of one-dimensional (1D) barcodes and two-dimensional (2D) barcodes. プロセッサ実行可能命令を格納している少なくとも1つの非一時的コンピュータ可読記憶媒体であって、前記命令は少なくとも1つのコンピュータハードウェアプロセッサによって実行されると:
前記少なくとも1つのコンピュータハードウェアプロセッサにシンボルの部分のデジタル画像及び空間マッピングを受け取らせ、ここで、前記デジタル画像はピクセルの格子を含み、前記シンボルはモジュールの格子を含み、前記空間マッピングは前記モジュールの格子におけるモジュールの連続サブセットを前記ピクセルの格子に関係させており;
前記少なくとも1つのコンピュータハードウェアプロセッサに、モジュールの前記連続サブセット内の2個以上の隣接するモジュールの値の有効な組み合わせのセットを決定させて、ここで、前記値の有効な組み合わせのセットにおける値のそれぞれの有効な組み合わせは:
前記空間マッピングを使用して、(i)前記モジュールの第1のセットと前記ピクセルの格子におけるそれぞれの格子とのオーバーラップの程度、及び/又は、(ii)前記モジュールの第1のセットのうちの少なくとも1つにマッピングされたそれぞれのピクセルをオーバーラップする隣接するモジュールについての所定の値、に部分的に基づいて決定される前記モジュールの連続サブセットにおけるモジュールの第1のセットについての第1の値のセットからのものである、前記2個以上の隣接するモジュールにおける第1のモジュールについての値;及び
前記値の有効な組み合わせのセットにおける値の異なる有効な組み合わせに含まれる場合の前記第2のモジュールについての第2の有効な値とは異なる、前記2個以上の隣接するモジュールにおける第2のモジュールについての第1の有効な値;を含み;
前記少なくとも1つのコンピュータハードウェアプロセッサに、モジュールの前記連続サブセット内の各モジュールと前記ピクセルの格子との間の因果関係を用いて、モジュールの前記連続サブセット内の2個以上の隣接するモジュールの値の前記有効な組み合わせのセットを、前記ピクセルの格子に照らしてテストさせて、ここで、各々の因果関係は、前記ピクセルの格子におけるピクセルのサブセットの各々の値のうえにモジュールの前記連続サブセット内のモジュールの値が有する影響の程度を示すものであり;
前記少なくとも1つのコンピュータハードウェアプロセッサに、前記2個以上の隣接するモジュールの値のうちの有効な組み合わせのセットからの値についての少なくとも1個のテストされた有効な組み合わせに基づいてシンボルをデコードさせ、ここで、前記値についての少なくとも1個のテストされた有効な組み合わせは前記2個以上の隣接するモジュールにおける前記第2のモジュールの最終の値を含んでいる;
上記非一時的コンピュータ可読記憶媒体。
At least one non-transitory computer-readable storage medium storing processor-executable instructions, said instructions being executed by at least one computer hardware processor:
causing said at least one computer hardware processor to receive a digital image and a spatial mapping of portions of a symbol, wherein said digital image comprises a grid of pixels, said symbol comprises a grid of modules, and said spatial mapping comprises said modules; relating a contiguous subset of modules in the grid of the pixels to the grid of pixels;
causing said at least one computer hardware processor to determine a set of valid combinations of values of two or more adjacent modules within said contiguous subset of modules, wherein the values in said set of valid combinations of values; Each valid combination of is:
using the spatial mapping to determine (i) the degree of overlap between the first set of modules and respective grids in the grid of pixels; and/or (ii) among the first set of modules. for a first set of modules in the contiguous subset of modules determined based in part on a predetermined value for adjacent modules overlapping each pixel mapped to at least one of a value for a first module in said two or more adjacent modules that is from a set of values; and said second if contained in a different valid combination of values in said set of valid combinations of values. a first valid value for a second module in said two or more adjacent modules that is different than a second valid value for a module of;
instructing the at least one computer hardware processor to use the causal relationship between each module in the contiguous subset of modules and the grid of pixels to determine the values of two or more adjacent modules in the contiguous subset of modules; are tested against the grid of pixels, wherein each causal relationship is on the value of each of a subset of pixels in the grid of pixels within the contiguous subset of modules indicates the degree of influence that the value of the module of
cause the at least one computer hardware processor to decode symbols based on at least one tested valid combination of values from a set of valid combinations of values of the two or more adjacent modules; , wherein at least one tested valid combination of said values includes the final value of said second module in said two or more adjacent modules;
The above non-transitory computer-readable storage medium.
JP2022177744A 2018-11-21 2022-11-06 Method and apparatus for decoding symbol with insufficient resolution Pending JP2023024994A (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/198,203 US10599902B2 (en) 2014-10-09 2018-11-21 Methods and apparatus for decoding under-resolved symbols
US16/198,203 2018-11-21
JP2019205716A JP7427427B2 (en) 2018-11-21 2019-11-13 Method and apparatus for decoding symbols with insufficient resolution

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2019205716A Division JP7427427B2 (en) 2018-11-21 2019-11-13 Method and apparatus for decoding symbols with insufficient resolution

Publications (1)

Publication Number Publication Date
JP2023024994A true JP2023024994A (en) 2023-02-21

Family

ID=70546020

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2019205716A Active JP7427427B2 (en) 2018-11-21 2019-11-13 Method and apparatus for decoding symbols with insufficient resolution
JP2022177744A Pending JP2023024994A (en) 2018-11-21 2022-11-06 Method and apparatus for decoding symbol with insufficient resolution

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2019205716A Active JP7427427B2 (en) 2018-11-21 2019-11-13 Method and apparatus for decoding symbols with insufficient resolution

Country Status (2)

Country Link
JP (2) JP7427427B2 (en)
DE (1) DE102019217980A1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4390758A1 (en) * 2022-12-21 2024-06-26 Leuze electronic GmbH + Co. KG Optical sensor

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US7237721B2 (en) 2005-05-24 2007-07-03 Nokia Corporation Image processing for pattern detection
US9607200B2 (en) 2014-10-09 2017-03-28 Cognex Corporation Decoding barcodes

Also Published As

Publication number Publication date
JP7427427B2 (en) 2024-02-05
DE102019217980A1 (en) 2020-05-28
JP2020107325A (en) 2020-07-09

Similar Documents

Publication Publication Date Title
US10699089B2 (en) Decoding barcodes
US11151346B2 (en) Methods and apparatus for decoding under-resolved symbols
US7416125B2 (en) Synthesis decoding and methods of use thereof
US6340119B2 (en) Techniques for reading two dimensional code, including MaxiCode
US7303130B2 (en) Method and device for recording of data
US8733649B2 (en) Data matrix decoding chip and decoding method thereof
EP2415015B1 (en) Barcode processing
US6758399B1 (en) Distortion correction method in optical code reading
US10699091B2 (en) Region of interest location and selective image compression
JPH0950473A (en) Method and apparatus for decoding of undecided complicated large-width bar-code sign profile
JPH1063772A (en) Method and device for detecting and decoding symbol having data matrix symbol and readable with machine
US8333326B2 (en) Stacked barcode reader and stacked barcode reading method
EP3200120B1 (en) Enhanced matrix symbol error correction method
JP2023024994A (en) Method and apparatus for decoding symbol with insufficient resolution
JP2012058776A (en) Bar code reading device and method
KR101748877B1 (en) Apparatus and method for recognizing barcode
US10303913B2 (en) Virtual wave decoder for blurred images and subpixel performance
Liyanage Efficient decoding of blurred, pitched, and scratched barcode images
Brouwer Image pre-processing to improve data matrix barcode read rates
Oktem et al. A superresolution approach for Bar Code Reading

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221205

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20221205

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20231228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240104