JP2023024994A - Method and apparatus for decoding symbol with insufficient resolution - Google Patents
Method and apparatus for decoding symbol with insufficient resolution Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 232
- 230000001364 causal effect Effects 0.000 claims abstract description 31
- 238000013507 mapping Methods 0.000 claims abstract description 28
- 238000005070 sampling Methods 0.000 claims description 154
- 239000011159 matrix material Substances 0.000 claims description 96
- 238000012360 testing method Methods 0.000 claims description 15
- 238000004891 communication Methods 0.000 claims description 4
- 239000011295 pitch Substances 0.000 description 27
- 230000008569 process Effects 0.000 description 24
- 239000013598 vector Substances 0.000 description 23
- 230000006870 function Effects 0.000 description 19
- 238000012545 processing Methods 0.000 description 15
- 230000000694 effects Effects 0.000 description 12
- 238000003491 array Methods 0.000 description 10
- 230000008901 benefit Effects 0.000 description 10
- 230000007704 transition Effects 0.000 description 10
- 230000007717 exclusion Effects 0.000 description 7
- 238000005259 measurement Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 238000003384 imaging method Methods 0.000 description 5
- 238000007639 printing Methods 0.000 description 4
- 238000013139 quantization Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000012937 correction Methods 0.000 description 3
- 238000003708 edge detection Methods 0.000 description 3
- 238000005286 illumination Methods 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 239000000758 substrate Substances 0.000 description 3
- 230000004075 alteration Effects 0.000 description 2
- 238000000354 decomposition reaction Methods 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 230000035945 sensitivity Effects 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 241001522301 Apogonichthyoides nigripinnis Species 0.000 description 1
- 241000473391 Archosargus rhomboidalis Species 0.000 description 1
- 241000699670 Mus sp. Species 0.000 description 1
- 206010034719 Personality change Diseases 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 244000309464 bull Species 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000013329 compounding Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011438 discrete method Methods 0.000 description 1
- 238000005530 etching Methods 0.000 description 1
- 238000009499 grossing Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 230000005415 magnetization Effects 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000001151 other effect Effects 0.000 description 1
- 239000003973 paint Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000704 physical effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000007493 shaping process Methods 0.000 description 1
- 230000007480 spreading Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods 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/1404—Methods for optical code recognition
- G06K7/146—Methods for optical code recognition the method including quality enhancement steps
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods 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/1404—Methods for optical code recognition
- G06K7/1408—Methods for optical code recognition the method being specifically adapted for the type of code
- G06K7/1413—1D bar codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods 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/1404—Methods for optical code recognition
- G06K7/1408—Methods for optical code recognition the method being specifically adapted for the type of code
- G06K7/1417—2D 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
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.
本明細書に記載する技術は、解像度不足のシンボル(例えばサンプリング不足のシンボル及び/又はぼやけたシンボル)をデコードするために使用できる。本発明者らは、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,
多くのバーコードシンボル体系は、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
多値幅シンボル体系は、例えばコード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
ほとんどのシンボル体系では、特定のタイプのすべての文字はバーコードの物理的な幅が同じであることに注意することが重要である。例えば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
図1Bは、エレメント配列102Aの拡大図である。エレメント配列102Aは、最小特徴サイズXのスペースであるエレメント154を含む。エレメント配列102Aは、エレメントサイズWの太いスペースであるエレメント152を含む。エレメント配列102Aは、最小特徴サイズXのバーであるエレメント156を含む。エレメント配列102Aは、太いエレメントサイズWを持つバーであるエレメント158を含む。
FIG. 1B is an enlarged view of
図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
図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
バーコードを自動的にデコードするデバイスであるバーコードリーダは、一般にレーザスキャナ又は画像ベースのバーコードリーダの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
しかしながらレーザスキャナとの重要な違いは、画像ベースのバーコードリーダを使用して抽出されたスキャン信号のサンプリング解像度は、取得した画像の基礎となるサンプリング解像度(ピクセルなど)によって本質的に制限されることである。即ち、サブサンプリングされたスキャン信号にとって各ピクセルに含まれる以外の追加の微細な詳細を回復する手段はない。米国特許出願第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/2サンプル位相ずれている)に向かって移動すると、その結果スキャンサンプルは個々のバーとスペースの高い又は低い反射率の平均反射率であるよりも、事実上両エレメントの平均反射率であるサンプル値となる。問題のある例として、解像度は1モジューあたりほぼ1サンプルであり、複数の細エレメントが1/2位相ずれた連続サンプルと一致するため、スキャン信号は均一な反射率値を持ちエッジは全く明白ではない。 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
一部の実施形態では、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
有利なことに、エレメント単位を使用して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
別の例として、多値幅シンボル体系コード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
バーコードとバーコード文字を単位として構成されるように表現することにより、サンプリング量子化効果を数学的にモデル化できる。例えばモデルは以下に基づいて生成できる。 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
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))
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
図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
図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
図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
図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
図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
図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
図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
図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
図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
図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
図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
図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,
図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
図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
一部の実施形態では、図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
ステップ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
図12は、一部の実施形態による、バーコードをデコードするためのレーザスキャナデコードアルゴリズムの例示的なコンピュータ化された方法1200を示す。ステップ1202で、レーザスキャナはアナログ反射信号を取得する。アナログ反射信号は、レーザと検出器によって測定された、バーコード全体にわたる線形スキャンに沿ったバーコードの反射率である。ステップ1204で、レーザスキャナは(例えば一時的なサンプリングにより個別のデジタルスキャン信号を抽出することにより)反射信号をサンプリングする。ステップ1206で、レーザスキャナはスキャン信号からバーコードをデコードする。デコードプロセスは、さらに図13に関連して説明される。ステップ1208で、レーザスキャナはスキャン文字列を統合する。ステップ1210で、レーザスキャナはバーコードが確実にデコードされたかどうかを判定する。バーコードが確実にデコードされないとレーザスキャナが判定した場合、レーザスキャナはステップ1202に戻り、新しいアナログ反射信号を取得する。そうでない場合は、方法1200はステップ1212に進み、統合された文字列を報告する。
FIG. 12 illustrates an exemplary
図13A-Bは、一部の実施形態による、スキャン信号からバーコードをデコードするための例示的なコンピュータ化された方法1300を示す。ステップ1302で、バーコードリーダはスキャン信号内のエッジ(例えばエレメント間の遷移の1D位置)を検出する。当業者は、微分ピーク、二次微分ゼロ交差、ピーク/谷遷移(ANSIエッジ)、及び/又はその他のエッジ検出方法を使用するなど、様々な技術を用いてエッジを検出できることを理解できる。ステップ1304で、バーコードリーダはエッジをフィルタリングする。例えばバーコードリーダは(例えばコントラストに基づいて)偽エッジを除外し、及び/又は最小特徴サイズが分かっている場合は欠けているエッジを追加できる。ステップ1306で、バーコードリーダは第1の区切り文字の位置を特定してデコードする。一部の実施形態では、バーコードリーダはスキャンに沿って逆方向に区切り文字の位置を特定してデコードすることができる(例えばスキャン信号を逆にすることにより)。
13A-B illustrate an exemplary
ステップ1308で、バーコードリーダは次の文字位置に進む。例えばバーコードリーダは、現在の文字の測定された文字の長さ(例えばステップ1306の開始時に区切り文字パターンになる)に加えて、測定された整数文字ギャップを追加して、現在の文字の開始位置を決定できる。現在の文字が適切にデコードされなかった場合(例えば信頼範囲内にない場合)、バーコードリーダは文字サイズの推定値を使用できる。ステップ1310で、バーコードリーダは文字単位格子を推定する。一部の実施形態では、文字単位格子は、開始位置(例えば位相)、最小特徴サイズ(例えばX)、細太比(該当する場合)、及び文字間ギャップを含む。一部の実施形態では、バーコードリーダは、以前にデコードされた文字の最後に測定された統計を使用して、後でデコードできなかった文字の数を考慮するように構成できる。一部の実施形態では、第1のエッジ距離を使用して、区切り文字を超える第1の文字に対する文字間ギャップを測定することができる。
At
ステップ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,
ステップ1326で、バーコードリーダは次のデコードされていない文字に進む。例えばバーコードリーダは文字列の先頭から開始して、次のデコードされていない文字に進むことができる。ステップ1328で、バーコードリーダは文字単位格子を推定する。ステップ1330で、バーコードリーダはスキャン信号から文字をデコードする。文字がデコードされない場合、方法はステップ1326に戻る。文字がデコードされている場合、方法はステップ1334に進み、文字単位格子を精緻化する。一部の実施形態では、ステップ1334は任意選択である。バーコードリーダは、文字単位格子測定値の各々に小さい摂動を検索して、デコードされた文字のスコアがどのように変化するかを評価できる。バーコードリーダは最良のスコアをもたらす文字単位格子を選択することができ、それによって修正された開始位置、文字間ギャップ(該当する場合)、最小特徴サイズ、及び/又は細太比(該当する場合)を決定する。デコードされていない文字が残っている場合、方法はステップ1326に進む。そうでない場合は、方法はステップ1322に進み、統合された文字列を報告する。
At
ステップ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=(ATA)-1s法を使用する。これはAb-sのユークリッド長さを最小化するであろう)。Aはモジュールサイズが1.0に近づくと数値的に不安定になり、1.0未満では特異になる。したがってこの技術を用いて解を安定させることができる。例えば制約最小化を使用して(例えばラグランジュ乗数を使用して他の線形制約を組み込む)解を安定させることができる。別の例として、擬似逆(例えばb=A+s)を使用して解を安定させることができる。解はその他の多数の方法のいずれか、例えば解を数学的にバイナリベクトルに制限することによって制約できる。しかしながら一部の制約は、容易若しくは効率的に解けない非線形方程式のセットになることがあり、他の制約ほど有益ではない場合がある。 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
一部の実施形態において、バーコードリーダは、信号包絡線が以前にデコードされた文字の包絡線とあまり変わらないと仮定するように構成できる。デコードした後、バーコードリーダは、デコードされた文字の幅の太いバー内の最小及び最大信号値を測定することによって包絡線を精緻化できる。一部の実施形態では、バーコードリーダは、マッチングプロセスの一部として可能性のある各文字について直接包絡線パラメータl及びhを決定することができる。例えばバーコードリーダは、予想されるAbを実際に測定された生信号rに直接一致させるように構成できる(例えば任意の均一なスケールと単一のオフセットを許可することにより)。一部の実施形態では、バーコードリーダは、合計i(ar(i)+c-s(i))2を最小化するスカラa及びcの値を選択するように構成することができる(例えばiの全n、ここでnはスキャン信号の部分の長さである)。次に関係a=(SB)/(hl)及びc=B-alを用いて、h及びlを決定でき、以下を得る:
l=(DB-vc)/va
h=l+D(SB)/va 式3及び4
ここで、
・va=m2y2-ny1
・vc=m2y1-m1y2
・D=m2
2-nm1
・m1=sum(r(i)2)
・m2=sum(r(i))
・y1=sum(s(i)r(i))
・y2=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)/
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
ステップ1404で、バーコードリーダは、残りの識別された可能な区切り文字開始点の間から次の可能な区切り文字開始を選択する。ステップ1406で、バーコードリーダはエッジを使用して文字をデコードする。ステップ1408で、方法1400は、区切り文字がデコードされたかどうかを判定する。答が「はい」の場合、方法は図14Cのステップ1446に進む。ステップ1410で、バーコードリーダは可能な区切り文字を識別する。例えば一部のシンボル体系は複数の開始パターン又は停止パターンを持つ。上述の一部の実施形態において、デコード操作が逆方向で発生する可能性があるため、停止パターンはスキャン信号に沿って逆方向で検出することができる。ステップ1412で、バーコードリーダは次の可能な区切り文字を選択する。
At
ステップ1414で、バーコードリーダは、可能な大まかな文字単位格子を推定する。例えばバーコードリーダは、バーコードの終わりの信号の部分から、可能な最小特徴サイズと細太比(該当する場合)を推定できる。例えばバーコードリーダは印刷太りがほぼ0であり、文字間ギャップ(該当する場合)は1Xであると推定できる。他の推定は、例えば信号が解像度不足であるために一部のエッジが欠落している可能性があると仮定して、パターンエッジ対応を開始する可能な測定されたエッジを識別して、最小2乗適合を実行することによって行うことができる。最良適合を有する(例えば誤差閾値を超える)対応が選択され、最良適合文字格子に関連付けられる。一部の実施形態では、この推定は代替的に、2値幅シンボル体系について太エレメントの中心の位置を特定して、同様の対応操作を実行することにより、エッジなしで達成することができる。
At
ステップ1416で、バーコードリーダは次の大まかな文字単位格子を選択し、方法はステップ1420に進む。ステップ1420で、バーコードリーダは次の文字単位格子摂動を選択する。例えばバーコードリーダは、推定値とは異なるが、推定された最大誤差内にある文字単位格子を選択できる。一部の実施形態では、バーコードリーダは1つのパラメータ(例えば最小特徴サイズなど)を小さいステップで変えることができる。ステップ1422で、バーコードリーダは、単位サンプリング係数マトリックスを計算するが、これは図15でさらに説明される。ステップ1424で、バーコードリーダは単位サンプリング係数マトリックスから文字をスコアリングするが、これは図16でさらに説明される。スコアが十分である(例えば所定の閾値よりも良い)とバーコードリーダが判定した場合、バーコードリーダはその文字に対するスコアと、関連する文字単位格子を記録できる。
At
ステップ1426で、バーコードリーダは、格子摂動が残っているかどうかを判定する。格子摂動が残っている場合、バーコードリーダはステップ1420に進む。答が「いいえ」の場合、方法はステップ1428に進み、粗い文字格子が残っているかどうかを判定する。文字格子が残っている場合、方法は図14Aのステップ1416に進む。文字格子が残っていない場合、方法はステップ1430に進み、可能な区切り文字が残っているかどうかを判定する。可能な区切り文字が残っている場合、方法は図14Aのステップ1412に進む。
At
可能な区切り文字が残っていない場合、方法は図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
図15は、一部の実施形態による、バーコードをデコードするための単位サンプリング係数を決定するための例示的なコンピュータ化された方法1500を示す。ステップ1502で、バーコードリーダは単位サンプリング係数を初期化する。単位サンプリング係数マトリックスのサイズはnxmでありここでnは実際の1D信号値の数であり、mはモジュールの数(例えば多値幅シンボルの場合)又は文字内のエレメント(例えば2値幅シンボル、又はエレメント単位を使用する多値幅の場合)の数プラス2(例えば文字の前と後のエレメント又は文字間ギャップを表す)である。バーコードリーダは、すべての値を0に初期化する。好ましい実施形態では、係数マトリックスは、疎なマトリックス表現を使用して表示される。
FIG. 15 illustrates an exemplary
ステップ1504で、バーコードリーダはサンプル範囲を決定する。例えばバーコードリーダは、文字内にある中心(例えば1つの文字モジュール又はエレメント内の中心であって、先行又は後続のエレメント又は文字間ギャップではない)を持つ最初と最後のサンプルを決定することができる。ステップ1506で、バーコードリーダは範囲内の次のスキャンサンプルに進む。例えばまだ考慮されていない場合、これは範囲内の最初のサンプルである。上記のように、サンプルは同じインデックスを持つ係数マトリックスの行に対応できる。サンプルは通常、ビンに関連付けられており、これは情報を統合すると推定されるスキャンラインの位置範囲である。サンプルビンは、サンプル位置を中心にしてその周りに配置することができ、サンプル間隔に等しい幅を持つことができる。
At
ステップ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
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
一部の実施形態では、バーコードリーダは、誤差の関数e=s-Abを使用して文字に対するスコアを決定するように構成されている。この関数の例は、2乗誤差の合計、絶対誤差の合計、最大誤差及び/又は同種のものを含む。一部の実施形態では、誤差は係数マトリックスを通して「逆伝搬」されて、元の文字単位(モジュール又はエレメント)の誤差を計算する。逆伝搬は、次式に従って単位誤差ベクトルe(b)を計算することによって達成できる。
e(b)=ATe' 式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'
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
ステップ1604で、バーコードリーダは単位サンプリング係数の乗算を実行する。例えばバーコードリーダは、単位サンプリング係数マトリックスに単位エンコードパターンを乗算して、予測(又は予想)された信号ベクトルを取得できる。ステップ1606で、バーコードリーダは予測信号と測定信号を比較することができる。一部の実施形態では、比較の結果として予測信号が測定信号とどれだけ良く一致するかを示す1つ以上の文字スコアを生成するように、バーコードリーダを構成することができる。これは、前述のように様々な方法で実現できる。一部の実施形態では、バーコードリーダは、実際の信号をローカル信号包絡線(例えば信号内のバーとスペースの見かけの反射率に対応する最小及び最大信号範囲)で正規化した後に2つの値を減算できる。
At
図17は、一部の実施形態による、バーコードをデコードするためのマルチレベルバーコードのスキャン信号から文字をデコードするための例示的なコンピュータ化された方法1700を示す。ステップ1702を参照すると、バーコードリーダは、例えば図17で説明したように単位サンプリング係数を決定する。ステップ1704で、バーコードリーダは可能なデータ文字を識別する。例えばコード128など一部のコードでは、すべてのデータ文字が可能であろう。UPC-EANなど他のコードでは、適当なサブグループ(A、B、又はC)の文字のみ可能であろう。ステップ1706で、バーコードリーダは次の可能なデータ文字を選択する。ステップ1708で、バーコードリーダは単位サンプリング係数を使用して文字をスコアリングする。
FIG. 17 illustrates an exemplary
ステップ1710で、バーコードリーダはスコアが十分に高いかどうかを判定する。スコアが十分に高くない場合、方法はステップ1706に進む。スコアが十分に高い場合、バーコードリーダはステップ1712に進み、文字とスコアを記録する。ステップ1714で、バーコードリーダは、可能なデータ文字が残っているかどうかを判定する。可能なデータ文字が残っている場合、バーコードリーダはステップ1706に進む。データ文字が残っている可能性がない場合、バーコードリーダはステップ1716に進み、バーコードリーダは最良のスコアが2番目に良いスコア(ある場合)より少なくとも信頼度閾値だけ優れているかどうかを判定する。バーコードリーダが最良の文字を識別したと確信すると、バーコードリーダはステップ1720に進み、最良の文字とスコアを記録する。バーコードリーダが確信しない場合、文字はデコードされない。
At
図18は、一部の実施形態による、バーコードをデコードするための2レベル又はマルチレベルバーコードのスキャン信号から文字をデコードするための例示的なコンピュータ化された方法1800を示す。ステップ1802で、方法は可能なデータ文字を識別する。例えばコード39など一部のコードでは、すべてのデータ文字が可能であろう。コーダバーなど他のコードでは、適当な長さの文字のみが可能である。ステップ1804で、方法は次の可能なデータ文字を選択する。ステップ1806で、方法は、(例えば図15に関連して説明したように)単位サンプリング係数を決定する。ステップ1808で、方法は(例えば図16に関連して説明したように)単位サンプリング係数を使用して文字をスコアリングする。
FIG. 18 illustrates an exemplary
ステップ1810で、バーコードリーダはスコアが所定の閾値を超えているかどうかを判定する。スコアが所定の閾値を超えていない場合、方法はステップ1804に戻る。スコアが所定の閾値を超えている場合、方法はステップ1812に進み、文字とスコアを記録する。ステップ1814で、方法は、可能なデータ文字が残っているかどうかを判定する。可能なデータ文字が残っている場合、方法はステップ1804に進む。可能なデータ文字が残っていない場合、方法はステップ1816に進む。ステップ1816で、バーコードリーダは最良のスコアが2番目に良いスコア(ある場合)よりも少なくとも信頼度閾値だけ優れているかどうかを判定する。バーコードリーダが最良の文字を識別したと確信すると、バーコードリーダはステップ1720に進み、最良の文字とスコアを記録する。バーコードリーダが確信しない場合、文字はデコードされず、方法はステップ1818で終了する。
At
様々な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
コード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
上記のように、撮像アプリケーションがサンプリング不足やぼやけなどの解像度不足のシンボルを取得する理由は幾つかある。例えば一部の撮像アプリケーションは、コンベアベルトに沿って移動する物体を撮像するために取り付けられたセンサを使用する。このようなセンサは、より大きい視野(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シンボル(2n、ここで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
ステップ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
一部の実施形態では、この技術は、画像信号の包絡線を使用してシンボルをデコードする。包絡線には、画像全体の信号の最大及び最小ピクセル値を含む。包絡線の最大値は、画像の白を示し(しかし例えば画像に許容される理論上の最大値に必ずしも対応しない)、最小値は画像の黒を示す(しかし例えば画像に許容される理論上の最大値に必ずしも対応しない)。したがってピクセル値を局所的前景(暗い)と局所的背景(明るい)の間でマッピングして、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
画像処理装置は、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
図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
一部の実施形態において、モジュールの格子とピクセルの格子との間の関係は、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
既知の構造は、シンボルの向きに基づいてモジュールの格子に埋めることができる。一部の実施形態では、システムは格子の向きを学習して、例えば図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
このステップで推定されるモジュールは、前景に近い及び/又は背景に近いピクセルに関連付けることができる。したがって一部の実施形態では、ステップ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
ステップ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
新しいモジュール値は、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
一部の実施形態では、各モジュールについて、画像処理装置は、1つ以上の決定されたピクセルを含むモジュールパターンの残りの有効な組み合わせ(例えば2×2、3×3など)を試すことができる。例えば画像処理装置は、そのような推定ができなくなるまで、未知のモジュールを中心に持つ3×3モジュールパターンを試すことができる。例として3×3パターンを用いると、各モジュールには29=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)に対して、可能なパターンの組み合わせは2u通りあり、ここで、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の範囲の行オフセットdrと-1から1の範囲の列オフセットdcで表示する(drとdcの両方が0であることはできない、さもないとそれはモジュール(k、l)からの方向ではなくなる)。言い換えれば、8方向は(drとdc)=(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、z1)及びN(k+dr、l+dc、z2)について、ここで、(k+dr、l+dc)はモジュール(k、l)からの可能な8方向の1つにおける隣接するモジュールであり、z1は1~u(k、l)の範囲であり、z2は1~u(k+dr、l+dc)の範囲である場合、リンクL(k、l、z1、k+dr、l+dc、z2)は、オーバーラップするサブパターンが同じである場合のみ確立される。即ち、すべてのi=iminからimaxまで、及びすべてのj=jminからjmaxまで、m(k、l、z1、i、j)=m(k+dr、l+dc、z2、i-dr、j-dc)である場合。ここで、imin、imax、jmin、jmaxは、下記の方向に基づいて決定される:
dr≦0の場合はimin=-1、それ以外の場合は0
dr≧0の場合はimax=1、それ以外の場合は0
dc≦0の場合はjmin=-1、それ以外の場合は0
dc≧0の場合はjmax=1、それ以外の場合は0
dr=0の場合はオーバーラップ領域は3×2、dc=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
この例では、画像処理装置はモジュールの各セットの残っている組み合わせについて誤差テストを実行し、可能な組み合わせ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
ステップ2012で、画像処理装置は、ステップ2004-2010で決定された値を含む、決定されたモジュール値に基づいてシンボルをデコードする。この時点ですべてのモジュールが決定されている可能性はあるが、一部のモジュールの値がまだ未知である可能性もある(低解像度の画像など)。例えば決定されていないモジュールは、モジュールをまたぐピクセルが黒と白の値の間で前後に反転する場合など、均一なグレー領域のピクセルと関連付けることができる。しかしながらすべてのモジュールが完了していなくても、画像処理装置はシンボルをデコードできる。例えばほとんどの2Dシンボルは、リードソロモン誤差修正及び/又はやその他の誤差修正を使用するなどして、ある程度の冗長性でエンコードされる。別の例として、未知のモジュールは、しばしば誤って決定されたモジュールとしてより高い誤差率(例えば誤差率の2倍)が与えられる。したがってステップ2012では、画像処理装置は、たとえすべてのモジュールでなくてもシンボルをデコードするのに十分な数のモジュールをデコードすることができる。
At
図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
図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
この技術は、最初に画像のピクセルの格子に対してシンボルのモジュールの格子の位置を特定することを含むことができる。上で説明したように、個々の文字を個別に調べる必要はなく任意のモジュールパターンを推定できる。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
図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
図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
一部の実施形態で、画像処理装置は各モジュールについて、1つ以上の決定されたピクセルを含むモジュールパターンの残りの有効な組み合わせ(例えば1×2、1×3など)を試すことができる。例えば画像処理装置は、そのような推定がそれ以上できなくなるまで、中心に未知のモジュールを持つ1×3モジュールパターンを試すことができる。例として1×3パターンを使用すると、各モジュールには23=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個以上の隣接するモジュールの値の有効な組み合わせのセットを前記ピクセルの格子に照らしてテストさせ、
前記プロセッサに、前記テストされた有効な組み合わせのセットに基づいて、前記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.
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 .
前記少なくとも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個以上の隣接するモジュールの値の有効な組み合わせのセットを決定させて、ここで、前記値の有効な組み合わせのセットにおける値のそれぞれの有効な組み合わせは:
前記空間マッピングを使用して、(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.
前記少なくとも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.
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)
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)
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 |
-
2019
- 2019-11-13 JP JP2019205716A patent/JP7427427B2/en active Active
- 2019-11-21 DE DE102019217980.0A patent/DE102019217980A1/en active Pending
-
2022
- 2022-11-06 JP JP2022177744A patent/JP2023024994A/en active Pending
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 |