(57)【要約】      （修正有）【課題】デジタル画像内のシンボルをデコードする方法、装置及びコンピュータ可読媒体を提供する。【解決手段】方法は、シンボルの部分のデジタル画像を受け取る。デジタル画像は、ピクセルの格子を含み、シンボルはモジュールの格子を含む。モジュールの格子内のモジュールの連続サブセットとピクセルの格子との間の空間マッピングを決定する。空間マッピングを使用して、各モジュールとピクセルの格子の間で因果関係を決定する。因果関係を用いて、モジュールの連続サブセット内の隣接するモジュールの値の有効な組み合わせのセットを、ピクセルの格子に照らしてテストする。テストされた有効な組み合わせのセットに基づいて、２個以上の隣接するモジュールの少なくとも１個のモジュールの値を決定する。少なくとも１個のモジュールの決定された値に基づいて、シンボルをデコードする。【選択図】図１１
2020107325.tif 000002
【特許請求の範囲】
【請求項１】
デジタル画像内のシンボルをデコードするためのコンピュータ化された方法であって：
当該方法はシンボルの部分のデジタル画像を受け取ることを有し、ここで、デジタル画像はピクセルの格子を含み、シンボルはモジュールの格子を含んでおり、
当該方法は前記モジュールの格子内のモジュールの連続サブセットと前記ピクセルの格子との間の空間マッピングを決定することを有し、
当該方法は、前記空間マッピングを使用して、モジュールの前記連続サブセット内の各モジュールと前記ピクセルの格子との間の因果関係を決定することを有し、ここで、前記因果関係は、モジュールの値がピクセルの格子内のピクセルのサブセットの値の各々に与える影響の程度を表わしており、
当該方法は、前記因果関係を用いて、モジュールの前記連続サブセット内の２個以上の隣接するモジュールの値の有効な組み合わせのセットを前記ピクセルの格子に照らしてテストすることを有し、
当該方法は、前記テストされた有効な組み合わせのセットに基づいて、前記２個以上の隣接するモジュールの少なくとも１個のモジュールの値を決定することを有し、かつ
当該方法は、前記少なくとも１個のモジュールの決定された値に基づいて、シンボルをデコードすることを有する、
上記方法。
【請求項２】
モジュールの格子内のモジュールの連続サブセット内の前記２個以上の隣接するモジュールは、前記モジュールの格子の３×３サブ格子を含む、請求項１に記載の方法。
【請求項３】
前記２個以上のモジュールの少なくとも１個のモジュールは、前記３×３サブ格子の中心モジュールである、請求項２に記載の方法。
【請求項４】
モジュールの前記連続サブセットは、既知の値を有する少なくとも１つの所定のモジュールを含み、前記２個以上の隣接するモジュールの値の有効な組み合わせのセットは、前記少なくとも１つの所定のモジュールに対して既知の値を有する組み合わせのみを含む、請求項１に記載の方法。
【請求項５】
前記所定のモジュールは、シンボルのファインダパターン又はタイミングパターン内部のモジュールである、請求項４に記載の方法。
【請求項６】
前記所定のモジュールの前記既知の値は、単一のピクセルがピクセルのサブセット内の他のピクセルと前記所定のモジュールとの間の因果関係と比較して、前記所定のモジュールと優勢な因果関係を有するため、前記ピクセルの格子における前記単一のピクセルの値のみに基づいて推定される、請求項４に記載の方法。
【請求項７】
前記所定のモジュールは、以前に決定された値を有する任意のモジュールを含む、請求項４に記載の方法。
【請求項８】
前記因果関係を決定することは、モジュールの前記連続サブセット内の各モジュールが前記ピクセルの格子内の各ピクセルとオーバーラップする程度を、空間関係を用いて特定して、オーバーラップの程度のセットを生成する、請求項１に記載の方法。
【請求項９】
モジュールの前記連続サブセット内の各モジュールがピクセルの格子内の各ピクセルとオーバーラップする前記程度は、サンプリング係数のセットによって、及びサンプリングマトリックスの一部として表される、請求項８に記載の方法。
【請求項１０】
前記ピクセルの格子と前記モジュールの格子はいずれも２次元である、請求項１に記載の方法。
【請求項１１】
前記ピクセルの格子は２次元画像を通過する１次元スキャンからのサンプルの１次元格子であり、前記モジュールの格子はモジュールの１次元格子である、請求項１に記載の方法。
【請求項１２】
前記シンボルは１次元（１Ｄ）バーコードと２次元（２Ｄ）バーコードからなる群から選択される、請求項１に記載の方法。
【請求項１３】
メモリと通信するプロセッサを備えた、デジタル画像内のシンボルをデコードするための装置であって、前記プロセッサはメモリに格納されている命令を実行するように構成されており、前記命令は：
前記プロセッサにシンボルの部分のデジタル画像を受け取らせ、ここで、デジタル画像はピクセルの格子を含み、シンボルはモジュールの格子を含んでおり、
前記プロセッサに前記モジュールの格子内のモジュールの連続サブセットと前記ピクセルの格子との間の空間マッピングを決定させ、
前記プロセッサに、前記空間マッピングを使用して、モジュールの前記連続サブセット内の各モジュールと前記ピクセルの格子との間の因果関係を決定させ、ここで、前記因果関係は、モジュールの値がピクセルの格子内のピクセルのサブセットの値の各々に与える影響の程度を表わしており、
前記プロセッサに、前記因果関係を用いて、モジュールの前記連続サブセット内の２個以上の隣接するモジュールの値の有効な組み合わせのセットを前記ピクセルの格子に照らしてテストさせ、
前記プロセッサに、前記テストされた有効な組み合わせのセットに基づいて、前記２個以上の隣接するモジュールの少なくとも１個のモジュールの値を決定させ、かつ
前記プロセッサに、前記少なくとも１個のモジュールの決定された値に基づいて、シンボルをデコードさせ、るものである、
上記装置。
【請求項１４】
モジュールの格子内のモジュールの連続サブセット内の前記２個以上の隣接するモジュールは、前記モジュールの格子の３×３サブ格子を含む、請求項１３に記載の装置。
【請求項１５】
モジュールの前記連続サブセットは、既知の値を有する少なくとも１つの所定のモジュールを含み、前記２個以上の隣接するモジュールの値の有効な組み合わせのセットは、前記少なくとも１つの所定のモジュールに対して既知の値を有する組み合わせのみを含む、請求項１３に記載の装置。
【請求項１６】
前記因果関係を決定することは、モジュールの前記連続サブセット内の各モジュールが前記ピクセルの格子内の各ピクセルとオーバーラップする程度を、空間関係を用いて特定して、オーバーラップの程度のセットを生成することを含む、請求項１３に記載の装置。
【請求項１７】
前記ピクセルの格子と前記モジュールの格子はいずれも２次元である、請求項１３に記載の装置。
【請求項１８】
前記ピクセルの格子は２次元画像を通過する１次元スキャンからのサンプルの１次元格子であり、前記モジュールの格子はモジュールの１次元格子である、請求項１３に記載の装置。
【請求項１９】
前記シンボルは１次元（１Ｄ）バーコードと２次元（２Ｄ）バーコードからなる群から選択される、請求項１３に記載の装置。
【請求項２０】
プロセッサ実行可能命令を格納している少なくとも１つの非一時的コンピュータ可読記憶媒体であって、前記命令は少なくとも１つのコンピュータハードウェアプロセッサによって実行されると：
前記少なくとも１つのコンピュータハードウェアプロセッサにシンボルの部分のデジタル画像を受け取らせ、ここで、デジタル画像はピクセルの格子を含み、シンボルはモジュールの格子を含んでおり、
前記少なくとも１つのコンピュータハードウェアプロセッサに前記モジュールの格子内のモジュールの連続サブセットと前記ピクセルの格子との間の空間マッピングを決定させ、
前記少なくとも１つのコンピュータハードウェアプロセッサに、前記空間マッピングを使用して、モジュールの前記連続サブセット内の各モジュールと前記ピクセルの格子との間の因果関係を決定させ、ここで、前記因果関係は、モジュールの値がピクセルの格子内のピクセルのサブセットの値の各々に与える影響の程度を表わしており、
前記少なくとも１つのコンピュータハードウェアプロセッサに、前記因果関係を用いて、モジュールの前記連続サブセット内の２個以上の隣接するモジュールの値の有効な組み合わせのセットを前記ピクセルの格子に照らしてテストさせ、
前記少なくとも１つのコンピュータハードウェアプロセッサに、前記テストされた有効な組み合わせのセットに基づいて、前記２個以上の隣接するモジュールの少なくとも１個のモジュールの値を決定させ、かつ
前記少なくとも１つのコンピュータハードウェアプロセッサに、前記少なくとも１個のモジュールの決定された値に基づいて、シンボルをデコードさせ、るものである、
上記非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願
この出願は、２０１８年７月２３日に提出された「バーコードのデコード」と題する米国特許出願第１６／０４３０２９号の米国特許法第１２０条下での利益を主張する部分継続出願であり、同出願は２０１７年３月２７日に提出された「バーコードのデコード」と題する米国特許出願第１００３２０５８号の米国特許法第１２０条下での利益を主張する部分継続出願であり、同出願は２０１４年１０月９日に提出された「バーコードのデコード」と題する米国特許出願第１４／５１０７１０号（現在米国特許第９６０７２００号として発行）の米国特許法第１２０条下での利益を主張する部分継続出願であり、その全開示内容は参照により本明細書に組み込まれる。
【０００２】
技術分野
本明細書に記載する技術は、概略、２次元バーコードなどの解像度不足の２次元シンボルのデコードに関する。
【背景技術】
【０００３】
自動化された部品識別など様々な目的のために情報をエンコードするために、様々なタイプのシンボルを使用できる。バーコードは、通常は長方形のバイナリ空間パターンを使用して情報をエンコードするシンボルの一種である。１次元バーコードは情報を、幅が変化する平行なバーとスペース（例えばエレメント）が交互するする１つ以上の空間的に連続する配列でエンコードする。特定のタイプの１次元バーコード（例えばしばしば多値幅バーコードと呼ばれる）の場合、各エレメントの幅はモジュールの整数倍である。２次元バーコードは通常、情報をモジュールエレメントの均一な格子としてエンコードし、各々のエレメントは黒又は白であることができる。
【０００４】
通常、バーコードは、均一な反射基材（紙や金属など）にバー又はモジュールエレメントを印刷（インクなど）又はマーキング（エッチングなど）することによって作成される。バー又は暗いモジュールは、通常基材よりも反射率が低く、したがってそれらの間のスペースよりも暗く見える（白い紙に黒インクを使ってバーコードを印刷する場合など）。しかしバーコードは、黒い物体の上に白い塗料を使って印刷する場合など、別のやり方で印刷できる。バーコードを背景からより簡単に区別するために、シンボルは通常他の印刷又は目に見える構造から比較的離れて配置される。そのような距離は、最初のバーの前と最後のバーの後の両方に（例えば１次元バーコードの場合）、又はモジュールのエレメントの格子の周りに（例えば２次元バーコードの場合）しばしばクワイエットゾーンと呼ばれる余白を生み出す。代替として、スペースとクワイエットゾーンを印刷又はマークすることができ、バーは暗黙的に基材によって形成される。
【０００５】
しかしながら、バーコードリーダにとってしばしば（例えば低サンプリングレート又は解像度が足りないセンサによる）サンプリング不足のバーコードや、（例えばリーダーの焦点が合っていない、動きの影響などのために）ぼやけたバーコードなど、解像度不足のバーコードをデコードするのが困難な場合がある。
【発明の概要】
【０００６】
開示された主題によれば、１次元（１Ｄ）多値幅シンボル体系及び２次元（２Ｄ）シンボルなど解像度不足のシンボルをデコードするための装置、システム及び方法が提供される。本発明者らは、２Ｄシンボルをデコードする既存の技術は、解像度不足の２Ｄシンボルを十分にデコードできないことを認識した。さらに、本発明者らは解像度不足の１Ｄシンボルのデコードに使用される既存の技術は、解像度不足の２Ｄシンボルをデコードするために（例えば１次元シンボルの文字などの部分と比べて２次元シンボルに対する解集合は指数関数的に大きくなる可能性があるため）、又は多値幅１Ｄシンボルの大部分を別個の文字に分割することなくデコードするために、単純に拡張できないことを認識した。本発明者らは、シンボルの既知の態様及び／又はピクセルの格子のピクセルと画像のピクセルの格子内のピクセルとの間で決定される数学的関係に基づいて、多値幅１Ｄシンボル又は２Ｄシンボルのモジュールの初期セットを決定する代替技術を開発した。最初に決定されたモジュールのセットは、残りの十分な数のモジュール値を決定して、システムがシンボルをデコードできるように活用される。一部の実施形態では、この技術は、最初にシンボルの既知の態様を活用してシンボルのモジュールの第１のセットを決定し、次にこのモジュールの第１のセット及び／又は画像内のピクセルとシンボルに対するモジュールとの間の数学的な関係に基づいてシンボルの第２のモジュールのセットを（例えば反復法で）決定し、次にまだ推定されていないモジュールの残りのサブセットのみに対して（例えば以前に決定されたモジュール値を活用して）有効な組み合わせを試して、モジュールの格子に対するモジュールの第３のセットを決定することを含む。そのような技術はシンボルに対する十分な数のモジュールをデコードして、システムが全シンボルをデコードできるようにする。
【０００７】
幾つかの態様は、デジタル画像内のシンボルをデコードするためのコンピュータ化された方法に関する。この方法は、以下を含む：シンボルの部分のデジタル画像を受け取ること、ここで、デジタル画像はピクセルの格子を含み、シンボルはモジュールの格子を含む；モジュールの格子内のモジュールの連続サブセットとピクセルの格子との間の空間マッピングを決定すること；空間マッピングを使用して、モジュールの連続サブセット内の各モジュールとピクセルの格子との間の因果関係を決定すること、ここで、各因果関係は、モジュールの値がピクセルの格子内のピクセルのサブセットの値の各々に与える影響の程度を表わす；因果関係を用いて、モジュールの連続サブセット内の２個以上の隣接するモジュールの値の有効な組み合わせのセットをピクセルの格子に照らしてテストすること；有効な組み合わせのセットに基づいて、２個以上の隣接するモジュールの少なくとも１個のモジュールの値を決定すること；及び少なくとも１個のモジュールの決定された値に基づいてシンボルをデコードすること。
【０００８】
幾つかの例では、モジュールの格子内のモジュールの連続サブセット内の２個以上の隣接するモジュールは、モジュールの格子の３×３サブ格子を含む。２個以上のモジュールの少なくとも１個のモジュールは、３×３サブ格子の中心モジュールになることができる。
【０００９】
幾つかの例では、モジュールの連続サブセットには、既知の値を有する少なくとも１つの所定のモジュールを含み、２個以上の隣接するモジュールの値の有効な組み合わせのセットは、少なくとも１つの所定のモジュールに対して既知の値を有する組み合わせのみを含む。所定のモジュールは、シンボルのファインダパターン又はタイミングパターン内部のモジュールであることができる。所定のモジュールの既知の値は、単一のピクセルがピクセルのサブセット内の他のピクセルと所定のモジュールとの間の因果関係と比較して、所定のモジュールと優勢な因果関係を有するため、ピクセルの格子における単一のピクセルの値のみに基づいて推定することができる。所定のモジュールには、以前に決定された値を有する任意のモジュールを含むことができる。
【００１０】
幾つかの例では、因果関係を決定することは、モジュールの連続サブセット内の各モジュールがピクセルの格子内の各ピクセルとオーバーラップする程度を、空間関係を用いて特定して、オーバーラップの程度のセットを生成することを含む。モジュールの連続サブセット内の各モジュールがピクセルの格子内の各ピクセルとオーバーラップする程度は、サンプリング係数のセットによって、及びサンプリングマトリックスの一部として表すことができる。
【００１１】
幾つかの例では、ピクセルの格子とモジュールの格子は、いずれも２次元である。
【００１２】
幾つかの例では、ピクセルの格子は、２次元画像を通過する１次元スキャンからのサンプルの１次元格子であり、モジュールの格子は、モジュールの１次元格子である。
【００１３】
幾つかの例では、シンボルは、１次元（１Ｄ）バーコードと２次元（２Ｄ）バーコードからなるグループから選択される。
【００１４】
幾つかの態様は、デジタル画像内のシンボルをデコードするための装置に関する。この装置は、メモリと通信するプロセッサを備えている。プロセッサは、メモリに格納されていてプロセッサに以下のことをさせる命令を実行するように構成されている：シンボルの部分のデジタル画像を受け取ること、ここで、デジタル画像はピクセルの格子を含み、シンボルはモジュールの格子を含む；モジュールの格子内のモジュールの連続サブセットとピクセルの格子との間の空間マッピングを決定すること；空間マッピングを使用して、モジュールの連続サブセット内の各モジュールとピクセルの格子との間の因果関係を決定すること、ここで、各因果関係は、モジュールの値がピクセルの格子内のピクセルのサブセットの値の各々に与える影響の程度を表わす；因果関係を用いて、モジュールの連続サブセット内の２個以上の隣接するモジュールの値の有効な組み合わせのセットをピクセルの格子に照らしてテストすること；テストされた有効な組み合わせのセットに基づいて、２個以上の隣接するモジュールの少なくとも１個のモジュールの値を決定すること；及び少なくとも１個のモジュールの決定された値に基づいてシンボルをデコードすること。
【００１５】
幾つかの例では、モジュールの格子内のモジュールの連続サブセット内の２個以上の隣接するモジュールは、モジュールの格子の３×３サブ格子を含む。
【００１６】
幾つかの例では、モジュールの連続サブセットは、既知の値を有する少なくとも１つの所定のモジュールを含み、２個以上の隣接するモジュールの値の有効な組み合わせのセットは、少なくとも１つの所定のモジュールに対して既知の値を有する組み合わせのみを含む。
【００１７】
幾つかの例では、因果関係を決定することは、モジュールの連続サブセット内の各モジュールがピクセルの格子内の各ピクセルとオーバーラップする程度を、空間的関係を用いて特定して、オーバーラップの程度のセットを生成することを含む。
【００１８】
幾つかの例では、ピクセルの格子とモジュールの格子は、いずれも２次元である。
【００１９】
幾つかの例では、ピクセルの格子は、２次元画像を通過する１次元スキャンからのサンプルの１次元格子であり、モジュールの格子はモジュールの１次元格子である。
【００２０】
幾つかの例では、シンボルは、１次元（１Ｄ）バーコードと２次元（２Ｄ）バーコードからなるグループから選択される。
【００２１】
一部の実施形態は、少なくとも１つの非一時的コンピュータ可読記憶媒体に関する。非一時的コンピュータ可読媒体は、プロセッサ実行可能命令を格納しており、これらの命令は少なくとも１つのコンピュータハードウェアプロセッサによって実行されると、少なくとも１つのコンピュータハードウェアプロセッサに以下の動作を実行させる：シンボルの部分のデジタル画像を受け取ること、ここで、デジタル画像はピクセルの格子を含み、シンボルはモジュールの格子を含む；モジュールの格子内のモジュールの連続サブセットとピクセルの格子との間の空間マッピングを決定すること；空間マッピングを使用して、モジュールの連続サブセット内の各モジュールとピクセルの格子との間の因果関係を決定すること、ここで、各因果関係は、モジュールの値がピクセルの格子内のピクセルのサブセットの値の各々に与える影響の程度を表わす；因果関係を用いて、モジュールの連続サブセット内の２個以上の隣接するモジュールの値の有効な組み合わせのセットをピクセルの格子に照らしてテストすること、テストされた有効な組み合わせのセットに基づいて、２個以上の隣接するモジュールの少なくとも１個のモジュールの値を決定すること、少なくとも１個のモジュールの決定された値に基づいてシンボルをデコードすること。
【００２２】
以上、開示の主題の特徴をやや大まかに述べたのは、以下に続く詳細な説明においてそれらがより良く理解されるように、また本発明の技術への寄与がより適切に評価されるようにするためである。言うまでもなく開示された主題の追加の特徴があり、それらは以下に説明されるとともに、本明細書に付属する特許請求の範囲の主題をなす。本明細書で用いられる表現及び用語は説明を目的としたものと理解すべきであり、制限するものと見なされてはならない。
【００２３】
図面において、様々な図に示されている同一又はほぼ同一の各構成要素は同じ参照符号で表されている。見やすさのため、各図面にはすべての構成要素が表示されているわけではない。図面は必ずしも縮尺通りではなく、代わりに本明細書に記載する技術及び装置の種々の態様を示すことに重点が置かれている。
【図面の簡単な説明】
【００２４】
【図１Ａ】２値幅シンボル体系を用いて生成されたバーコードを示す。
【図１Ｂ】２値幅シンボル体系の寸法を示している。
【図２】多値幅シンボル体系を用いて生成されたバーコードを示す。
【図３】例示的なスキャン信号を示す。
【図４】一部の実施形態による、バーコードをデコードするための１ＳＰＭ及び０位相での多値幅バーコードに対する例示的なスキャンラインサブサンプリング及びサンプリング係数を示す。
【図５】一部の実施形態による、バーコードをデコードするための１ＳＰＭ及び０位相での多値幅バーコードに対する例示的なスキャンラインサブサンプリング及びサンプリング係数を示す。
【図６】一部の実施形態による、バーコードをデコードするための１ＳＰＭ及び０．５位相での多値幅バーコードに対する例示的なスキャンラインサブサンプリング及びサンプリング係数を示す。
【図７】一部の実施形態による、バーコードをデコードするための１ＳＰＭ及び−０．２５位相での多値幅バーコードに対する例示的なスキャンラインサブサンプリング及びサンプリング係数を示す。
【図８】一部の実施形態による、バーコードをデコードするための１．３３ＳＰＭ及び０．３３位相での多値幅バーコードに対する例示的なスキャンラインサブサンプリング及びサンプリング係数のパーセンテージを示す。
【図９】一部の実施形態による、バーコードをデコードするための０．７５ＳＰＭ及び−０．２５位相での多値幅バーコードの例示的なスキャンラインサブサンプリング及びサンプリング係数を示す。
【図１０】一部の実施形態による、バーコードをデコードするための０．８４ＳＰＭ、２．１幅（Ｗ）及び−０．１６位相での２値幅バーコードの例示的なスキャンラインサブサンプリング及びサンプリング係数を示す。
【図１１】一部の実施形態による、バーコードをデコードするための一般的な画像ベースのデコードアルゴリズムの例示的なコンピュータ化された方法を示す。
【図１２】一部の実施形態による、バーコードをデコードするためのレーザスキャナデコードアルゴリズムの例示的なコンピュータ化された方法を示す。
【図１３Ａ】一部の実施形態による、スキャン信号からバーコードをデコードするための例示的なコンピュータ化された方法を示す。
【図１３Ｂ】一部の実施形態による、スキャン信号からバーコードをデコードするための例示的なコンピュータ化された方法を示す。
【図１４Ａ】一部の実施形態による、バーコードをデコードするための第１の区切り文字の位置を特定してデコードするための例示的なコンピュータ化された方法を示す。
【図１４Ｂ】一部の実施形態による、バーコードをデコードするための第１の区切り文字の位置を特定してデコードするための例示的なコンピュータ化された方法を示す。
【図１４Ｃ】一部の実施形態による、バーコードをデコードするための第１の区切り文字の位置を特定してデコードするための例示的なコンピュータ化された方法を示す。
【図１５】一部の実施形態による、バーコードをデコードするための単位サンプリング係数を決定するための例示的なコンピュータ化された方法を示す。
【図１６】一部の実施形態による、バーコードをデコードするためにスキャン信号から文字をスコアリングするための例示的なコンピュータ化された方法を示す。
【図１７】一部の実施形態による、バーコードをデコードするための多値幅バーコードのスキャン信号から文字をデコードするためのコンピュータ化された方法を示す。
【図１８】一部の実施形態による、バーコードをデコードするための２値幅又は多値幅バーコードのスキャン信号から文字をデコードするための例示的なコンピュータ化された方法を示す。
【図１９Ａ】幾つかの例による、例示的なデータマトリックス２Ｄシンボルを示す。
【図１９Ｂ】幾つかの例による、例示的なＱＲコードシンボルを示す。
【図２０】一部の実施形態による、解像度不足の２Ｄシンボルをデコードするための例示的なコンピュータ化された方法を示す。
【図２１】一部の実施形態による、２Ｄシンボルの例示的な画像を示す。
【図２２Ａ】一部の実施形態による、図２１の画像の上部に重ねた２Ｄシンボルに対する例示的なモジュールの格子を示す。
【図２２Ｂ】一部の実施形態による、ピクセルの格子におけるピクセルがモジュールの格子の例示的なモジュールとオーバーラップするパーセンテージを示すサンプリングマトリックス部分の例を示す。
【図２３】一部の実施形態による、２Ｄシンボルの既知の構造値で埋められている、図２２における例示的なモジュールの格子を示す。
【図２４】一部の実施形態による、モジュールとピクセルとの間の関係に基づいて推定された例示的なピクセルの格子のピクセルを示す。
【図２５Ａ】一部の実施形態による、既知のモジュールに基づいて決定された新しい白と黒のモジュール値を示す。
【図２５Ｂ】一部の実施形態による、図２５Ａで決定された新しいモジュールに基づいて決定された追加のモジュール値を示す。
【図２６】一部の実施形態による、多値幅１Ｄシンボルの例示的な画像を示す。
【図２７】一部の実施形態による、図２６の画像の上部に重ねた１Ｄ多値幅シンボル体系に対する例示的なモジュールの格子を示す。
【図２８】一部の実施形態による、ピクセルの格子のピクセルと画像のピクセルとの間のオーバーラップの程度の例示的な図である。
【図２９】一部の実施形態による、任意のモジュールのパターンに対するモジュールの格子の推定モジュールの例を示す。
【図３０Ａ】一部の実施形態による、モジュールとピクセルとの間の関係に基づいて推定された例示的なピクセルの格子のピクセルを示す。
【図３０Ｂ】一部の実施形態による、モジュールとピクセルとの間の関係に基づいて推定された例示的なピクセルの格子のピクセルを示す。
【図３１】一部の実施形態による、既知のモジュールに基づいて決定されたモジュールの格子内の追加モジュールを示す。
【図３２】一部の実施形態による、無向制約グラフの例を示す。
【発明を実施するための形態】
【００２５】
本明細書に記載する技術は、解像度不足のシンボル（例えばサンプリング不足のシンボル及び／又はぼやけたシンボル）をデコードするために使用できる。本発明者らは、１Ｄ及び２Ｄシンボルデコード技術はシンボルをデコードするために、しばしばある程度の画像解像度、例えばモジュールあたり少なくとも２ピクセルの画像解像度を必要とすることを認識した（例えばモジュールがシンボル格子の単一の黒又は白のエレメントである場合）。本発明者らは、本明細書でさらに説明するように、より低い解像度の画像を使用してシンボルをデコードするシンボルデコード技術を改善する技術を開発した。例えば、この技術を用いてモジュールあたり１ピクセル以下、例えばモジュールあたり０．８ピクセル及びそれ以下の解像度で取得された１Ｄシンボル（多値幅１Ｄシンボルなど）及び／又は２Ｄシンボルをデコードできる。
【００２６】
以下の説明では、開示された主題の完全な理解を提供するために、開示された主題のシステム及び方法、並びにそのようなシステム及び方法が動作できる環境などに関して多くの具体的な詳細が述べられる。加えて、以下に提供される例は例示であり、開示された主題の範囲内にある他のシステム及び方法があることが想定されていることは理解されるであろう。
【００２７】
バーコードには、シンボル体系と呼ばれる多数のバーコード設計のいずれか１つを使用できる。各シンボル体系は、バー、スペース、クワイエットゾーンの寸法制約、並びに情報をいかに正確にエンコードされるかを指定できる。バーコードシンボル体系の例には、コード１２８、コード９３、コード３９、コーダバー、Ｉ２オブ５、ＭＳＩ、コード２オブ５、ＵＰＣ−ＥＡＮがある。バーコードは、すべての情報が１つの次元に沿ってコード化される伝統的な「線形」シンボル体系（コード１２８やコード３９など）を含むことができる。バーコードには、「スタックされた」２Ｄシンボルの個々の行（例えばデータバー、ＰＤＦ４１７、マイクロＰＤＦ、及び一部の合成シンボルの２Ｄコンポーネント）も含めることができ、これはすべてバーコードを互いに上に積み重ねてより多くの情報をエンコードすることができる。
【００２８】
多くのバーコードシンボル体系は、２値幅シンボル体系と多値幅シンボル体系の２つのカテゴリーに分類される。２値幅シンボル体系の例には、例えばコード３９、インタリーブド２オブ５、コーダバー、ＭＳＩ、コード２オブ５及びファーマコードがある。２値幅シンボル体系の各エレメントは、細いか太い。細エレメントの幅は、最小特徴サイズＸに等しい。太エレメントの幅は、太エレメントサイズＷに等しい。太エレメントのサイズＷは、普通は最小特徴サイズの固定した実倍数である。これにより２レベルシンボル体系は、各エレメントがＸ又はＷの２つの可能な値のいずれかを表すことが可能になる。
【００２９】
多値幅シンボル体系は、例えばコード１２８、コード９３、ＵＰＣ−ＥＡＮ、ＰＤＦ４１７、マイクロＰＤＦ及びデータバーを含む。多値幅シンボル体系の各エレメントは、最小特徴サイズの整数の倍数ｎである（例えばｎはシンボル体系に応じて１からエレメントの最大幅までの整数である）。モジュールという用語は、しばしばマルチレベルバーコードの最小特徴サイズを指すために用いられ、マルチレベルバーコードシンボルの各エレメントは整数個のモジュールで構成される。多くの多値幅シンボル体系（コード１２８、コード９３、ＵＰＣ−ＥＡＮなど）でｎの範囲は１〜４であるが、これより大きい場合もある（例えばデータバーではｎの範囲は１〜９である）。
【００３０】
２値幅バーコード又は多値幅バーコードにおけるエレメント配列のデータは、量子化されたエレメント幅の対応する配列によってエンコードされる。あるエレメント配列に対するエレメント幅の配列は、しばしばエレメント配列のエレメント幅パターンと呼ばれる。２値幅エレメント配列に対するエレメント幅パターンは、狭いエレメント（「Ｘ」）と太いエレメント（「Ｗ」）で構成されたバイナリパターンである。例えばバー（Ｗ）、スペース（Ｘ）バー（Ｘ）、スペース（Ｘ）、バー（Ｘ）、スペース（Ｗ）、バー（Ｘ）、スペース（Ｘ）、バー（Ｗ）は、ＷＸＸＸＸＷＸＸＷとして表され、ここで、Ｘは最小特徴サイズであり、Ｗは太いエレメント幅である。多値幅エレメント配列に対するエレメント幅パターンは、配列内の対応する各エレメントのモジュールの幅を示す整数のパターンである。例えばバー（ｎ＝１）、スペース（ｎ＝１）、バー（ｎ＝１）、スペース（ｎ＝３）、バー（ｎ＝２）、スペース（ｎ＝３）のエレメント幅パターン１１１３２３として表される。
【００３１】
バーコードエレメントは、しばしばそれぞれのエレメントから英数字の値にデコードできる連続した文字（アルファベットや数字など）にまとめられる。一部の実施形態において、データはエレメント幅の全配列（例えばファーマコードバーコード）から直接決定される。特定のシンボル体系でエンコードできる可能な文字は、文字セットと呼ばれる。文字セットには、シンボル体系に応じて区切り文字やデータ文字など、幾つかの異なるタイプの文字がある。通常、種々の可能な区切り文字パターンは少数しかないが、可能なデータ文字エレメント幅パターンは多数ある。バーコード全体に対してエンコードされた文字列を主に定義するのは、バーコードの一方の端からもう一方の端までに表されるデータ特性値の文字列である。
【００３２】
ガードパターンと呼ばれることもある区切り文字は、バーコードの先頭と末尾に表示されることが多い。区切り文字を使用すると、バーコードリーダは、例えばシンボルを検出し、どこで読み取りを開始及び停止するか判定し及び／又はシンボル体系の種類を決定することが可能となる。バーコードの先頭と末尾に配置された区切り文字は、しばしばそれぞれ開始文字と停止文字と呼ばれる。一部のシンボル体系（ＵＰＣ−Ａやデータバーなど）には、シンボル内に区切り文字パターンがあり、データ文字のセクションを区切っている。最後に、一部のシンボル体系（コード１２８など）には、データ文字をどのように解釈するかを決定する様々な開始区切り文字がある。
【００３３】
データ文字は、バーコードの実際の情報をエンコードする文字である。データ文字に対するエレメント幅パターンは、英数字の値に関連付けられている。チェックサム文字と呼ばれる特別なデータ文字が指定されることもよくある。この文字の値は、本質的に他のすべてのデータ文字の値の合計であり、バーコードリーダが誤読した文字列を検出できるようにする。すべてのデータ文字の英数字値の配列は生の文字列を形成し、これは次に特別なフォーマット規則を使ってバーコードに対する実際のエンコードされたエレメントセットに変換される。
【００３４】
タイプに関係なく、文字セットの各文字値はユニークなエレメント幅パターンに関連付けられる。例えばコード３９文字セットの「Ａ」と「Ｂ」のエレメント幅パターンは、それぞれＷＸＸＸＸＷＸＸＷとＸＸＷＸＸＷＸＸＷである。上記で説明したように、したがって「Ａ」に対するエレメント幅パターンＷＸＸＸＸＷＸＸＷは、バー（Ｗ）、スペース（Ｘ）バー（Ｘ）、スペース（Ｘ）、バー（Ｘ）、スペース（Ｗ）、バー（Ｘ）、スペース（Ｘ）、バー（Ｗ）であり、ここで、Ｘは最小特徴サイズ、Ｗは太いエレメントの幅である。コード１２８文字セットの「Ａ」と「Ｂ」のエレメント幅パターンは、それぞれ１１１３２３と１３１１２３である。
【００３５】
ほとんどのシンボル体系では、特定のタイプのすべての文字はバーコードの物理的な幅が同じであることに注意することが重要である。例えば２値幅シンボル体系の文字は通常一定の数の狭いバー、狭いスペース、太いバー、太いスペースを持ち、普通はバーエレメントで始まる。特定の２値幅シンボル体系の文字（コード３９など）もバーで終わり、文字間ギャップと呼ばれる一貫しているが幅は任意の特別なスペースを使用して個々の文字を分離する。文字の間に文字間ギャップのあるこのようなシンボル体系は、一般に分離型シンボル体系と呼ばれ、そのようなギャップのないシンボル体系は連続型シンボル体系と呼ばれる。対照的に、多値幅シンボル体系文字は、それぞれが正確に１個のモジュール幅である一定の総数のモジュールを持つことが多く、それらは一定の数のバーとスペースを有し、通常はバーで始まりスペースで終わる（したがって文字間ギャップはない）。
【００３６】
図１Ａは、２値幅シンボル体系コード３９を用いて生成されたバーコード１００を示す。バーコード１００は、１０２Ａ、１０２Ｂ、１０２Ｃから１０２Ｎまでのエレメント配列（本明細書ではまとめてエレメント配列１０２と呼ぶ）のセットを含む。このエレメント配列のセットは、文字列ＰＡＴＥＮＴ１０４をエンコードする。文字列ＰＡＴＥＮＴ１０４の各文字は、データ文字Ｐをエンコードするエレメント配列１０２ＢやデータＡをエンコードするエレメント配列１０２Ｃなどのデータ文字を使用してエンコードされる。エレメント配列１０２Ａ及び１０２Ｎは、＊で示される区切り文字をエンコードする。したがってエレメント配列１０２Ａ及び１０２Ｎは、バーコード１００の開始及び終了をマークする。図１Ａに示されるように、各エレメント配列１０２はバーコード１００において同じ物理幅を有する。
【００３７】
図１Ｂは、エレメント配列１０２Ａの拡大図である。エレメント配列１０２Ａは、最小特徴サイズＸのスペースであるエレメント１５４を含む。エレメント配列１０２Ａは、エレメントサイズＷの太いスペースであるエレメント１５２を含む。エレメント配列１０２Ａは、最小特徴サイズＸのバーであるエレメント１５６を含む。エレメント配列１０２Ａは、太いエレメントサイズＷを持つバーであるエレメント１５８を含む。
【００３８】
図２は、多値幅シンボル体系コード１２８を用いて生成されたバーコード２００を示す。バーコード２００は、エレメント配列２０２Ａ、２０２Ｂ、２０２Ｃ、２０２Ｄ、２０２Ｅのエレメント配列（本明細書ではまとめて文字配列２０２と呼ぶ）のセットを含む。このエレメント配列のセットは、文字列ＰＡＴＥＮＴ２０４をエンコードする。図１Ａと同様に、文字列ＰＡＴＥＮＴ２０４の各文字は、データ文字Ｐをエンコードするエレメント配列２０２Ｂやデータ文字Ａをエンコードするエレメント配列２０２Ｃなどのデータ文字を使用してエンコードされる。エレメント配列２０２Ａは、バーコード２００の開始区切り文字配列をエンコードする。エレメント配列２０２Ｅは、バーコード２００の停止区切り文字配列をエンコードする。したがって区切り文字エレメント配列２０２Ａと及び２０２Ｅは、バーコード２００の開始と終了をマークする。
【００３９】
図２に示されるように、各エレメント配列２０２Ａ〜Ｅはバーコード２００において同じ物理幅を有する。図２は、文字列２０２に対するエレメント幅パターンを示す。開始区切り文字エレメント配列２０２Ａに対するエレメント幅パターンは、１１０１００１００００である。Ｐデータ文字エレメント配列２０２Ｂに対するエレメント幅パターンは、１１１０１１１０１１０である。Ａデータ文字エレメント配列２０２Ｃに対するエレメント幅パターンは、１０１０００１１０００である。Ｔデータ文字エレメント配列２０２Ｄに対するエレメント幅パターンは、１１０１１１０００１０である。停止区切り文字エレメント配列２０２Ｅに対するエレメント幅パターンは、１１０００１１１０１０１１である。
【００４０】
バーコードを自動的にデコードするデバイスであるバーコードリーダは、一般にレーザスキャナ又は画像ベースのバーコードリーダの２つのカテゴリーに分類される。どちらのタイプのバーコードリーダでも、デコードは通常、物理的バーコード又はバーコードの個別の画像のいずれかを一端から他端まで通過する１回以上のスキャンに沿って、バーコードエレメントのエッジの１次元（１Ｄ）位置を測定することにより実行される。各スキャンは通常線分であるが、任意の連続した直線の輪郭であることもできる。
【００４１】
バーコードの各バーコードリーダスキャンについて、個別の信号（例えばスキャン信号と呼ばれることが多い）が最初に抽出される。スキャン信号は、普通はスキャンに沿って順次サンプリングされた強度測定値からなり、本明細書ではスキャンサンプルと呼ばれる。各スキャンサンプルは、スキャンに沿った対応する位置を中心としたバーコードの小さい領域若しくはスキャンサンプル領域で測定された反射率（反射光で測定される相対的な暗さ又は明るさ）を表すことができる。スキャンに沿ったスキャンサンプル位置のパターンは、ここではスキャンサンプリング格子と呼ばれる。この格子はほぼ均一であることが多く、これはスキャンに沿ったサンプル位置間の距離若しくはスキャンサンプリングピッチは実質的に一定であることを意味する。スキャンサンプリングピッチは本質的に、通常モジュールごとのスキャンサンプル数として測定される、サンプリングされた信号のスキャンサンプリング解像度を決定する（ここで用いるモジュールは２値幅シンボル体系の最小特徴サイズと同義である）。しかしながら有効なスキャンサンプリングピッチは、バーコードが斜めから見られる又は平らではない物体（例えば瓶）に巻き付けられているために生じる遠近法効果により、スキャンの一端から他端まで実質的かつ連続的に実際に変化する可能性がある。
【００４２】
スキャンサンプルピッチに対する各サンプルのスキャンサンプル領域の幅は、スキャンに沿ったサンプル間のオーバーラップの量に影響を与えることができる。サンプル間のオーバーラップが増加すると、スキャン信号のぼやけが増加する可能性がある。サンプル間のオーバーラップが減少すると、信号の重要な特徴を測定しない可能性が増すことがある。各スキャンサンプル領域の高さは、スキャンに対して垂直に統合される情報量を決定する。スキャンサンプルの高さが大きいと、スキャンがバーに対して垂直である場合に信号におけるエレメントのエッジがよりシャープになる（その結果として例えばスキャンは垂直方向におけるバーの冗長な情報を利用できる）。しかしながらバーに対するスキャン角度が増してバーに対して垂直でなくなるに連れて、これらのエッジはますますぼやける。
【００４３】
レーザスキャナの場合、スキャン信号は、レーザが物理的バーコードを通ってスキャン輪郭に沿ってスイープするとき（例えばレーザがバーコードを通る線に沿ってスイープするとき）に、レーザの反射強度を経時的にサンプリングすることによって抽出される。各サンプル領域は、本質的にはある瞬間のレーザ「スポット」である。レーザスポットの形状は典型的に楕円形であり、主軸がスキャンに対して垂直に向けられているため、前述のサンプルエリアの幅と高さが代償となることがある。サンプリングされる信号はアナログであるため、経時的なサンプリングレートが解像度又はサンプリングピッチに影響を与えることがある。レーザの経時的なサンプリングレートは、例えばレーザの分解能（例えばレーザの小さいスポットにいかに適切に集束できるか）、最大時間サンプリングレート、及び／又はバーコードの印刷品質によって制限される場合がある。
【００４４】
画像ベースのバーコードリーダの場合、バーコードの個別の画像がカメラの光学系や撮像センサ（ＣＣＤアレイなど）を使用するなどして取得される。その結果得られる画像は、バーコード全体の２Ｄサンプリングであってもよい。その画像の各画像サンプル又はピクセルは、それ自体画像サンプリング格子における対応するポイントを中心としたバーコードの小さい領域の平均反射率の測定値である。この格子は均一又はほぼ均一であることが多く、これは画像サンプル位置間の距離又は画像サンプリングピッチが一定であることを意味する。このサンプリングピッチが、通常は１モジュールあたりのピクセル数（「ＰＰＭ」）として測定される画像の解像度を本質的に決定する。しかしながらレーザスキャンと同様に、遠近効果により有効な画像サンプリングピッチがバーコードの一端から他端まで実質的かつ連続的に実際に変化する可能性がある。
【００４５】
次に、スキャンに沿って画像をサブサンプリングする（例えば既にサンプリングされた信号をサンプリングする）ことにより、バーコードの画像全体のスキャンに対してスキャン信号を抽出できる。スキャンサンプリングピッチは、空間上のサンプリングレートによって決まる（例えばレーザスキャナのように時間ではない）。当業者は、このサブサンプリング動作を実行するために多くの方法があることを理解できる。例えば画像処理技術の投影は、スキャン線分に使用できる。投影の場合、投影の高さは本質的に各サンプルに対するスキャンサンプル領域の高さを決定し、スキャンに対して垂直な情報を統合する。別の例として、２０１１年１２月２３日に提出された「１次元信号抽出のための方法及び装置」と題する米国特許出願第１３／３３６２７５号に記載された技術を使用することができ、その全開示内容は参照により本明細書に組み込まれる。例えば各スキャンサンプルための有効なスキャンサンプル領域は、レーザスキャナで使用される楕円形のスポットサイズに類似した楕円形であることができる。
【００４６】
図３は、エレメント配列３０２に対する例示的なスキャン信号を示しており、エレメント配列３０２はバーコードエレメント３０２Ａ〜３０２Ｋからなり、これらはまとめてバーコードエレメントと呼ぶ。スキャン３０４は、バーコードエレメント３０２に対して垂直である。図３は、スキャン３０４から導出されたスキャン信号３０６を示す。スキャン信号３０６は、スキャンサンプル３０８Ａ、３０８Ｂから３０８Ｎまでを含み、本明細書ではこれらをスキャンサンプル３０８と総称する。各スキャンサンプル３０８は、対応する楕円形のスキャンサンプル領域ｓ０  ３１０Ａからｓｎ  ３１０Ｎで測定された反射率を表しており、これらはスキャンライン３０４に沿った１Ｄ範囲内でスキャンサンプルビンｓ０  ３１０Ａからｓｎ  ３１０Ｎに対応している。例えば、スキャンサンプル３０８Ａは、スキャンサンプルビン３１０Ａに対応するスキャンサンプル領域３１１Ａで測定された反射率を表し、スキャンサンプル３０８Ｂは、スキャンサンプルビン３１０Ｂに対応するスキャンサンプル領域３１１Ｂで測定された反射率を表し、スキャンサンプル３０８Ｎはスキャンサンプルビン３１０Ｎに対応するスキャンサンプル領域３１１Ｎで測定された反射率を表す。サンプル３１０Ａは、完全にスペースエレメント３０２Ａ内にあるスキャンサンプル領域３１１Ａによって抽出されるので、スキャンサンプル３０８Ａは、「ｈ」で示される高い反射率を有する。スキャンサンプル３０８Ｂは、サンプル領域３０８Ｂが完全にスペースエレメント３０２Ａ内にあるわけではなく、バーエレメント３０２Ｂからの情報も統合しているので反射率が低い。
【００４７】
しかしながらレーザスキャナとの重要な違いは、画像ベースのバーコードリーダを使用して抽出されたスキャン信号のサンプリング解像度は、取得した画像の基礎となるサンプリング解像度（ピクセルなど）によって本質的に制限されることである。即ち、サブサンプリングされたスキャン信号にとって各ピクセルに含まれる以外の追加の微細な詳細を回復する手段はない。米国特許出願第１３／３３６２７５号に記載されているように、この制限は、１Ｄスキャンがピクセルの格子で方向付けられた（例えば取得した画像のピクセルの格子に対して完全に水平又は垂直な）線分である場合にしばしば悪化する。対照的に、可能な限り最良のスキャンサンプリングピッチは、基礎となる画像サンプリングピッチに等しいであろう。したがってこの制限は、より大きい軸外スキャンライン角度で改善できる。一部の実施形態では、画像サンプリングピッチの（１／ｓｑｒｔ（２））倍の最良可能なスキャンサンプリングピッチを達成できるのは、スキャンがピクセルの格子に対して４５度に向けられた線分の場合であり、それによりバーコードが斜めに向けられた場合にしばしば見いだされるより多くの情報が反射される。したがってこの解像度の制限の一般的な欠点は、レーザスキャナで可能であるよりはるかに大きい領域をカバーして分析する能力によってしばしば補うことができる。それにもかかわらずそのような解像度の制限に対処することが往々にして必要である。
【００４８】
画像ベースのバーコードリーダとレーザスキャナはいずれも、シャープな信号（例えばぼやけていない信号）を取得できない場合に問題に対処する必要がある。画像ベースのバーコードリーダもレーザスキャナも被写界深度が限られていることが多いが、被写界深度は本質的に取得した画像又はレーザスキャン信号が焦点を結ぶバーコードリーダからの距離範囲である。画像ベースのバーコードリーダは、被写界深度の制限に加えてぼやけることがある。ぼやけとは、焦点の不足やその他の効果のために１Ｄスキャン信号が不鮮明になる量を指す。例えば１Ｄスキャン信号は、低解像度画像から抽出されるプロセスのためにぼやけている場合がある。別の例として、利用可能な照明条件下で適切なコントラストの画像を取得するために必要な露出時間に対して相対的に、バーコードが貼られている物体の速度に依存する動きによって、ぼやけが引き起こされることがある。
【００４９】
バーコードリーダの種類やスキャン信号の抽出方法に関係なく、バーコードをデコードする典型的な方法は、これらのスキャン信号の１つ以上に沿ってすべてのエレメントエッジ（境界とも呼ばれる）の１Ｄ位置を検出及び測定することである。スキャンに沿って検出された各エッジの位置は、スキャン信号内のそれらの分数位置とスキャンサンプリングピッチの積である、そのようなエッジを使用してバーコードエレメントの幅を直接推測することができ、次にこれらのバーコードエレメントをさらに個別のエレメントサイズに分類できる（例えば使用するシンボル体系の種類に応じて、細、太、１Ｘ、２Ｘなど）。しかしながら多値幅シンボル体系ではより一般的に、同じ極性の隣接するエッジ間の連続した距離（明から暗又は暗から明への遷移）が計算され、（１Ｘ、２Ｘなどに）分類され、次に当業界で知られているように、「エッジから類似エッジ」パターンから文字を推定するために使用される。この間接的な計算を使用して、印刷プロセスのために、典型的にはインクの広がりのためにバーが太くスペースが細く、又はその逆に見える顕著な印刷太りによる誤分類（誤認識）を回避することができる。２値幅シンボル体系では、バーとスペースを別々に分類することにより、印刷太りを回避できる。
【００５０】
エレメントエッジは、当業界で知られている多くの技術を用いて検出でき、これには例えば最大一次導関数の位置を特定する個別の方法、又は二次導関数のゼロ交差、及び／又は分解されたエレメントの境界を特定する波形整形法が含まれる。
【００５１】
しかしながらエッジの検出は、画像取得ノイズと印刷欠陥により複雑になる場合がある。画像取得ノイズ及び／又は印刷欠陥によって偽エッジが検出されることがあり、低コントラスト（照明不足、レーザ強度などのため）又はぼやけ（動きや焦点不良のため）などの問題も引き起こして、特定のエッジが全く検出されなくなることがある。真のエッジに対する測定感度を高めるために、信号のプレフィルタリング（平滑化など）又は強調（ぼやけ除去、シャープ化など）、偽エッジ又はピークと谷のフィルタリングなどの様々な方法が考案されている。しかしながらそのような方法を採用しても、信号解像度が低下するとより大きい測定感度が必要となり、偽エッジを真のエッジから区別するとともに、それらのエッジの位置を必要な精度で測定する問題の増加とのバランスを取ることが一層困難になる。
【００５２】
同じバーコードにわたる複数のスキャン間にデコードされた文字又はエッジ情報を結合若しくは統合する機能を追加すると、有用であり得る（バーコードに局所的な損傷がある場合など）。しかしながらそのような統合を用いても、エッジベースの技術を使用する画像ベースのデコーダは、画像品質、焦点、及びピクセルの格子に対するバーコードの向きに依存してスキャンラインに対して１モジュールあたり１．３〜１．５ピクセル（ＰＰＭ）で障害が発生し始める傾向がある。
【００５３】
本質的に、スキャン信号の有効解像度が低下すると、スキャンサンプリング解像度とぼやけの両方を伴い、バーコードの個々のエレメントを分解することが難しくなる。特に細エレメントは分解するのが難しく、ある解像度ではそのような細エレメントは最終的にそれらの間の遷移は全く明白でないポイントで互いに溶け合う。分解の困難さは、特にサンプリング不足の信号で問題になる。例えば２つのエレメント間（例えばバーとスペースの間）の遷移がスキャンサンプル中心（正確には例えば１／２サンプル位相ずれている）に向かって移動すると、その結果スキャンサンプルは個々のバーとスペースの高い又は低い反射率の平均反射率であるよりも、事実上両エレメントの平均反射率であるサンプル値となる。問題のある例として、解像度は１モジューあたりほぼ１サンプルであり、複数の細エレメントが１／２位相ずれた連続サンプルと一致するため、スキャン信号は均一な反射率値を持ちエッジは全く明白ではない。
【００５４】
エッジの検出とノイズとの区別の問題に加えて、そのような遷移のスキャン位置を測定できる精度も低下する可能性があり、これはサンプリング解像度（例えば各エッジ遷移のサンプルは遷移が発生する場所を補間するサンプルに比べて少ないという事実のため）及び／又はぼやけ（例えばぼやけたエッジに沿った緩やかな遷移はノイズの存在下では測定がより困難になるため）を伴う。その結果、例えば細いバーと太いバーをエッジから区別することが不可能になることがある。ぼやけによる不正確さを処理しようとする技術として、例えばエッジペアの位置を使用して各エレメントの中心の位置を特定することに集中することが考案された。各エレメントの中心は少なくともぼやけの効果に対してはより安定であり、エッジ間の距離よりも、むしろこれらの中心位置の間の相対的位置を使用して、シンボルをデコードする。しかしながら測定されたエレメントエッジ境界の中心がより安定であるのは、通常は明白なエッジ位置が反対方向の誤差を有する場合に限られる。例えば明白なエッジ位置は十分な解像度（例えば１．５ＰＰＭ以上）を持つぼやけたエレメントに対して反対方向の誤差を持つことがあるが、信号がサンプリング不足の場合は必ずしもそうではなく、量子化効果によるエッジ誤差はしばしば圧倒的にピクセルの格子とエレメント境界に対するスキャンサンプリング格子の局所的位相（相対位置）の関数である。
【００５５】
解像度の制限を軽減する努力において、太エレメントの中心と幅を決定した後で欠けている細エレメントの位置を推定することを試みるために幾つかの方法が考案された。これらの方法は太エレメント間の細エレメントの数に対する制約を使用でき、この制約は２値幅バーコードと多値幅バーコードで異なるが一般的である。エッジから文字を認識しようと試みる方法も考案されたが、これは検出されないエッジも許容する。例えば確率論的技術を採用してエッジベースの（幾何学的に）変形可能なテンプレートのマッチングによって文字をデコードできる。しかしながらこのような方法は通常は十分なサンプリング解像度を持つぼやけたバーコードのために考案されており、サンプリング不足のバーコードのためではない。事実、そのような技術は、標準のエッジベースのデコード技術は信号が焦点にあると見なされる場合に使用すべきであると指定することがある。エッジ（境界）の決定に依存し続ける場合、ＳＰＭが１モジュールあたり１．１サンプルを下回るほど減少すると、たとえ太エレメントでも幅の特定と測定が困難になる。さらに、一部のアルゴリズムは、産業用バーコードリーダでの実用に十分なほど効率的に実装できない。
【００５６】
これらの問題をさらに悪化させるのは、レーザスキャナの代わりに（例えばカバレッジが広いというメリットのため）画像ベースのバーコードリーダを採用する傾向と、バーコードリーダのサイズを小さくし、その数を最小限に抑えることによって画像ベースのリーダシステムのコストを削減する傾向である。例えばこれは物流アプリケーションの場合で、幅の広いコンベアベルト上のしばしばランダムな方向に向けられた箱や荷物に貼られたバーコードを読み取らなければならない。バーコードリーダの数を最小化するには、各バーコードリーダがカバーしなければならない体積の量（面積や奥行きなど）を最大化する必要がある。これにより相対画像解像度（ＰＰＭ）が減少し、（被写界深度の制限により）ぼやけが増加するが、いずれも有効な画像サンプリング解像度を低下させる。
【００５７】
単純にぼやけたバーコードを超えて、バーコードリーダの解像度不足のデコード能力を改善する必要がある（例えば特に画像ベースのバーコードリーダの場合）。さらに、エッジベースの方法には低解像度（例えば１．１ＰＰＭ未満）で困難があるため、スキャン信号値を直接分析してバーコードをデコードできる方法が必要である。これらの制限を克服しようとした技術は、パターンマッチング技術を使用することである。一部のパターンマッチング技術は、バーコード内の各文字を１Ｄ変形可能テンプレートとしてモデリングすることによりバーコードのデコードを試みる。１Ｄ変形可能テンプレートは、水平方向にスケーリングし（例えば未知のモジュールサイズに対応）、水平方向に平行移動し（例えばスキャンラインに沿った不確実な位置に対応）、垂直方向に伸縮し（例えば未知のコントラストに対応）、垂直方向に平行移動する（例えば未知の背景照明強度に対応）ことができる。しかしながらこのようなパターンマッチング技術は、バーコードの激しいサンプリング不足、例えば１．０ＰＰＭ以下の量子化効果には対応できない。例えばサンプリング不足により、パターンはテンプレートに対して認識されずに変形する可能性がある。
【００５８】
バーコードは一連のバーコード単位で構成されていると見なすことができ、各単位は関連する幅とバイナリエンコード値がある。例えば２値幅バーコードの場合、バーコード単位は、細い「Ｘ」又は太い「Ｗ」の２つの幅のいずれかを持つことができる。別の例として、多値幅バーコードの場合、バーコード単位はＸの倍数ｎに相当する幅を持つことができる。バイナリエンコード値は、バーコード単位がバー又はスペースの一部であるかどうかを示すことができる。例えばバーコード単位がバーに対するものであることを示すためにＢを使用し、スペースに対してはＳを使用することができる。一部の実施形態では数値を使用することができ、例えばＢ＝０及びＳ＝１、又はＢ＝−１及びＳ＝１である。したがって、各エレメント幅パターンは、単位幅パターン及び単位エンコードパターンに関連付けることができる。
【００５９】
幾つかの例では、バーコード単位はエレメントであることができ、その場合は単位幅パターンはエレメント幅パターンであり、関連する単位エンコードパターンはバー値とスペース値が交互するパターン（例えばＢＳＢＳＢＳＢＳＢ）で、バー又はスペースの適当な開始値を持つ（例えばエレメントは文字間ギャップを除き、常にバーとスペースの間で交互するため）。
【００６０】
幾つかの例では、各バーコード単位は、単位幅パターンを均一にするために選択される。例えば２値幅バーコードの場合、バーコード単位をエレメントより小さくすることはできないが、これは一般に太エレメントをさらに整数個の細エレメントに減らすことができないためである。例えば多値幅バーコードの場合、各エレメントの幅は整数個のモジュール幅からなるため、単位はモジュールと同じく小さくすることができる。モジュール単位を使用すると、幅の狭い均一な単位幅パターンが得られる。一部の実施形態では、特定の多値幅単位幅パターンは均一なモジュールのある配列からなり、関連する単位エンコードパターンは、その配列のエンコードされたデータを一緒に表すバー値とスペース値からなる。例えばＸＸＸＸＸＸＸＸＸＸＸは、長さ１１のモジュールのすべての単位幅パターンに対する単位幅パターンであるが、単位エンコードパターンはエレメント幅パターンごとに異なる。例えばＢＳＢＳＳＳＢＢＳＳＳは、１１Ｘエレメント幅パターン１１１３２３に対するユニークな単位エンコードパターンである。
【００６１】
一部の実施形態では、２値幅シンボル体系の場合、エレメント幅パターン内の情報は、直接単位幅パターンによってエンコードされ、単位エンコードパターンは交互する。例えば前述のように、単位エンコードパターンはバー値とスペース値が交互するパターン（例えばＢＳＢＳＢＳＢＳＢ）である。一部の実施形態では、多値幅シンボル体系の場合にエレメント幅パターン内の情報は、単位エンコードパターンによって間接的にエンコードされ、単位幅パターンは均一な最小特徴からなる。例えばＸＸＸＸＸＸＸＸＸＸＸは長さ１１のモジュールのすべての単位幅パターンに対する単位幅パターンであるため、これ以上の情報がないとエレメント幅パターンを推測することはできないので、エレメント幅パターンを間接的にエンコードする。しかし単位幅パターン（例えば１１Ｘエレメント幅パターン１１１３２３に対するＢＳＢＳＳＳＢＢＳＳＳなど）は、１１個の特徴（例えば１１個のＢｓとＳｓ）を含む。
【００６２】
有利なことに、エレメント単位を使用して２値幅シンボル体系又は多値幅シンボル体系を分析すると、シンボル体系におけるユニークな各データ文字をユニークな単位（例えばエレメント）配列に関連付けることができる。単位エンコードパターンは、すべての文字に対して同じサイズが交互するするバイナリパターンであることができる。モジュール単位を使用して多値幅シンボル体系を分析すると、シンボル体系内のユニークな各データ文字をユニークな単位（モジュールなど）パターンに関連付けることができ、単位（モジュールなど）配列はすべての文字で同じであることができる。
【００６３】
例えば２値幅シンボル体系コード３９に対してモジュール単位を使用する場合、「Ａ」に対するユニークな単位幅パターンはそのエレメント幅パターンＷＸＸＸＸＷＸＸＷであり、「Ｂ」に対するユニークな単位幅パターンはそのエレメント幅パターンＸＸＷＸＸＷＸＸＷである。しかしすべてのコード３９データ文字は、同じ長さ９のバイナリ単位エンコードパターンＢＳＢＳＢＳＢＳＢに関連付けられている。コード１２８についても同様に、エレメント単位を使用する場合、「Ａ」に対するユニークな単位幅パターンはそのエレメント幅パターン１１１３２３であり、「Ｂ」に対する単位幅パターンはそのエレメント幅パターン１３１１２３である。しかしすべてのコード１２８文字は同じ長さ６のバイナリ単位エンコードパターンＢＳＢＳＢＳと関連付けられている。
【００６４】
別の例として、多値幅シンボル体系コード１２８にモジュール単位を使用する場合、すべての文字に対する単位幅パターンは同じ長さ１１の均一な配列ＸＸＸＸＸＸＸＸＸＸＸであるが、「Ａ」に対するユニークな単位エンコードパターンはＢＳＢＳＳＳＢＢＳＳＳである（例えばエレメント幅パターン１１１３２３に対応）、「Ｂ」に対するユニークな単位エンコードパターンはＢＳＳＳＢＷＢＢＳＳＳである（例えばエレメント幅パターン１３１１２３に対応）。
【００６５】
バーコードとバーコード文字を単位として構成されるように表現することにより、サンプリング量子化効果を数学的にモデル化できる。例えばモデルは以下に基づいて生成できる。
【００６６】
（１）（ａ）バーコードエレメントの連続配列（例えば文字間ギャップなし）、及び（ｂ）エレメント幅パターンとして表される各バーコードエレメントに対する関連する量子化幅。
（２）サンプル座標においてバーコードエレメント配列の最初のエレメントの開始位置（例えばサンプリングピッチの分数において、小数部分は本質的にサンプリング格子に対する開始「位相」である）。
（３）該当する場合、サンプルの分数で測定された最小特徴サイズ（Ｘ）と太エレメント幅（Ｗ）（又は同等に細太比）。
【００６７】
このような情報を使用すると、これらのバーコードエレメントと生信号との関係は、単一のマトリックス方程式を使用して表現できる。
Ａ＊ｂ＝ｓ    式１
ここで、
・Ａは、スキャンに沿った単位境界の位置を定義する、単位格子に依存する単位サンプリング係数マトリックス、即ちサンプリング係数の疎なマトリックスで、次のものからなる。
〇バーコードエレメント配列にまたがる単位サブ配列
〇最小特徴サイズ、Ｘ
〇太エレメントサイズ、Ｗ（該当する場合）
〇配列内の最初のバーコードエレメントの開始位置。
・ｂは、バー値とスペース値のバイナリ単位のエンコードパターンである。
・ｓは、正規化されたスキャンサンプルを表すベクトルである。
【００６８】
サンプリング係数マトリックスＡの各行は１サンプルに対応でき、各列は１単位（例えば多値幅バーコードに対するモジュール、又は２値幅バーコードに対するエレメント）に対応できる。各行の値を選択して１．０に追加し、各列の値を選択してそれぞれの単位（モジュール又はエレメントなど）の幅（例えばＸ又はＷ）に追加できる。
【００６９】
ｉ番目の正規化されたベクトルのサンプルｓ，ｓ（ｉ）は、次式で与えることができる。
ｓ（ｉ）＝Ｂ＋[(ｒ(ｉ)−ｌ(ｉ))×(Ｓ−Ｂ)]／(ｈ(ｉ)−ｌ(ｉ))    式２
ここで、
・ｒは、サンプルビンにわたるスキャン信号の連続部分を表すベクトルである。
・ｈとｌは、ｒの信号包絡線の離散近似を表す値のベクトルである。
〇ｈ（ｉ）は、サンプルｉにおけるスペースの反射率の推定値である。
〇ｌ（ｉ）は、サンプルｉにおけるバーの反射率に対する推定値である。
【００７０】
ベクトルｒは、単位サブ配列全体の位置範囲をカバーすると想定できる。一部の実施形態では、ｒの値は測定された反射率値であることができる。Ａの各行ｉは、スキャンサンプルに対する反射率の測定値を得るためにサンプルｉに対してビンによって統合された単位幅パターン内のバーコード単位のそれぞれのパーセンテージのベクトルであることができる。一部の実施形態では、単位係数は単位格子に依存し、単位格子は単位間の遷移の位置を表すことができる。単位格子は、位相（例えば開始点）、最小特徴サイズ、印刷太り、細太比（ある場合）及び／又は同種のものによって影響されることがある。
【００７１】
図４は、一部の実施形態による、１モジュールあたり１サンプル（「ＳＰＭ」）及びバーコードをデコードするための０位相での多値幅バーコードに対する例示的なスキャンラインサブサンプリング及びサンプリング係数を示す。図４は、バーコードモジュールｂ１４０２Ｂ、ｂ２  ４０２Ｃ、ｂ３  ４０２Ｄ、ｂ４  ４０２Ｅ、ｂ５  ４０２Ｆ、ｂ６  ４０２Ｇ、ｂ７  ４０２Ｈ、ｂ８  ４０２Ｉ、ｂ９  ４０２Ｊ、ｂ１０  ４０２Ｋ、及びｂ１１  ４０２ＬからなるＡデータ文字モジュール４００を示す。文字単位４０２は、これらのモジュールの他に、先行文字の最後のモジュールｂ０  ４０２Ａ（スペース）と、先行文字の最初のモジュールｂ１２  ４０２Ｍ（バー）を含む。
【００７２】
図４は、スキャン４０４から導出されたスキャン信号４０６を示す。スキャン信号４０６は、本明細書でスキャンサンプル４０８と総称するスキャンサンプル４０８Ａ、４０８Ｂから４０８Ｎまで含む。スキャンサンプル４０８は、対応するスキャンサンプルビンｓ０  ４１０Ａ、ｓ１  ４１０Ｂからｓ１２  ４１０Ｎまで含み、これらはスキャンサンプルビン４１０と総称される。例えばスキャンサンプル４０８Ａは、スキャンサンプルビンｓ０  ４１０Ａに対するスキャンサンプルを表す。各スキャンサンプルビン４１０は文字単位４０２の開始と位置合わせされるので、スキャンサンプルビン４１０は文字単位４０２に対してゼロ（０）位相を有する。図４は、単位サンプリング係数マトリックス４２０も示している。単位サンプリング係数マトリックス４２０の各行ｓ１  ４１２Ａからｓ１１  ４１２Ｎｍまで（本明細書ではまとめて行４１２と呼ぶ）は１サンプルに対応し、単位幅パターン内の文字単位に対するサンプリング係数のベクトルである。単位サンプリング係数マトリックス４２０の各列４２２Ａから４２２Ｎまで（まとめて列４２２）は１単位（例えばモジュール）に対応する。図４に示すように、サンプリングピッチは正確にモジュール幅であるため、各スキャンサンプルビン４１０の幅はバーコード文字４００のモジュールの幅に対応する。単位サンプリング係数マトリックス４２０は、１を含んで示された場所以外のすべての場所にゼロを含む（簡単にするためにすべてのゼロが示されていない）。行ｓ１  ４１２Ａは、スキャンサンプルビンｓ１  ４１０Ｂがモジュールｂ１  ４０２Ｂ全体と一致するので、第２列４２２Ｂに１を含み、行ｓ２  ４１２Ｂは、スキャンサンプルビンｓ２  ４１０Ｂがモジュールｂ２  ４０２Ｃ全体と一致するので、第３列４２２Ｃに１を含む、などと続く。
【００７３】
図５は、一部の実施形態による、バーコードをデコードするための１ＳＰＭ及び０位相での多値幅バーコードに対する例示的なスキャンラインサブサンプリング及びサンプリング係数を示す。図５は、Ｂデータ文字エレメント配列５００を示しており、これはバーコードモジュールｂ１  ５０２Ｂ、ｂ２  ５０２Ｃ、ｂ３  ５０２Ｄ、ｂ４  ５０２Ｅ、ｂ５  ５０２Ｆ、ｂ６  ５０２Ｇ、ｂ７  ５０２Ｈ、ｂ８  ５０２Ｉ、ｂ９  ５０２Ｊ、ｂ１０  ５０２Ｋ及びｂ１１  ５０２Ｌからなる。文字単位５０２は、これらのモジュールの他に、先行文字ｂ０  ５０２Ａの最後のモジュール（スペース）と、先行文字ｂ１２  ５０２Ｍの最初のモジュール（バー）を含む。
【００７４】
図５は、スキャン５０４から導出されたスキャン信号５０６を示す。スキャン信号５０６は、本明細書でスキャンサンプル５０８と総称するスキャンサンプル５０８Ａ、５０８Ｂから５０８Ｎまで含む。スキャンサンプル５０８は、対応するスキャンサンプルビンｓ０  ５１０Ａ、ｓ１  ５１０Ｂからｓ１２  ５１０Ｎまでに対するサンプルを表す。例えばスキャンサンプル５０８Ａは、スキャンサンプルビンｓ０  ５１０Ａに対するスキャンサンプルを表す。図５は、単位サンプリング係数マトリックス５２０も示す。各スキャンサンプル５１０はバーコードモジュール５０２の開始と位置合わせされるので、単位５０２はスキャンサンプルビン５１０に対してゼロ（０）位相を有する。単位サンプリング係数マトリックス５２０の各行ｓ１  ５１２Ａからｓ１１  ５１２Ｎまで（本明細書ではまとめて行５１２と呼ぶ）は１サンプルに対応し、単位幅パターン内のバーコード単位に対するサンプリング係数のベクトルである。単位サンプリング係数マトリックス５２０の各列５２２Ａから５２２Ｎまでは１単位（例えばモジュール）に対応する。図４のように、各スキャンサンプルビン５１０の幅は、バーコード５００のモジュールの幅に対応する。単位サンプリング係数マトリックス５２０は、１を含んで示された場所以外のすべての場所にゼロを含む（簡単にするためにすべてのゼロが示されていない）。行ｓ１  ５１２Ａは、スキャンサンプルビンｓ１  ５１０Ｂがモジュールｂ１  ５０２Ｂ全体と一致するので、第２列５２２Ｂに１を含み、行ｓ２  ５１２Ｂは、スキャンサンプルビンｓ２  ５１０Ｂがモジュールｂ２  ５０２Ｃ全体と一致するので、第３列５２２Ｃに１を含む、などと続く。結果の単位サンプリング係数マトリックス５２０は、図４の単位サンプリング係数マトリックス４２０と同じであることに留意されたい。なぜなら、図４と同様に、単位５０２は、スキャンサンプルビン５１０に対してゼロ位相にあり、モジュールサイズはモジュールサイズと正確に等しいからである。
【００７５】
図６は、一部の実施形態による、バーコードをデコードするための１ＳＰＭ及び０．５位相での多値幅バーコードの例示的なスキャンラインサブサンプリング及びサンプリング係数を示す。図６は、図４からのＡデータ文字モジュール配列４００を示す。図６は、スキャン６０４から導出されたスキャン信号６０６を示す。スキャン信号６０６は、スキャンサンプル６０８Ａ、６０８Ｂから６０８Ｎまでを含み、本明細書ではまとめてスキャンサンプル６０８と呼ぶ。スキャンサンプル６０８は、対応するスキャンサンプルビンｓ０  ６１０Ａ、ｓ１  ６１０Ｂからｓ１１  ６１０Ｎまでに対するサンプルを表す。例えばスキャンサンプル６０８Ａは、スキャンサンプルビンｓ０  ６１０Ａに対するスキャンサンプルを表しており、これはその面積の半分がｂ０によってカバーされ、その面積の半分がｂ１によってカバーされるため、高と低の間である。各単位４０２は、各スキャンサンプルビン６１０の開始がキャンサンプリングピッチビンの幅の半分だけオフセットされ、サンプリングピッチはモジュールサイズと正確に等しいので、単位４０２はスキャンサンプルビン６１０に対して（０．５）位相にある。
【００７６】
図６は、単位サンプリング係数マトリックス６２０も示す。単位サンプリング係数マトリックス６２０の各行ｓ０  ６１２Ａからｓ１１  ６１２Ｎまで（本明細書ではまとめて行６１２と呼ぶ）は１サンプルに対応し、単位幅パターン内のバーコード単位のサンプリング係数のベクトルである。単位サンプリング係数マトリックス６２０の各列６２２Ａから６２２Ｎまで（まとめて列６２２）は１単位（例えばモジュール）に対応する。各スキャンサンプルビン６１０の幅は各バーコードモジュールの幅に等しい一方で、各スキャンサンプルビン６１０は半分が２つの連続するバーコードエレメント４０２の各々によってカバーされる。単位サンプリング係数マトリックス６２０は、半分（１／２）を含んで示された場所以外のすべての場所にゼロを含む（簡単にするためにすべてのゼロが示されていない）。行ｓ０  ６１２Ａは、スキャンサンプルビンｓ０  ６１０Ａがバーｂ０  ４０２Ａで半分カバーされるので、第１列６２２Ａに０．５を含み、スキャンサンプルビンｓ０  ６１０Ａがバーｂ１  ４０２Ｂで半分カバーされるので、第２列６２２Ｂに０．５を含む。行ｓ１  ６１２Ｂは、スキャンサンプルビンｓ１  ６１０Ｂがバーｂ１  ４０２Ｂで半分カバーされるので、第２列６２２Ｂに０．５を含み、スキャンサンプルビンｓ１  ６１０Ｂがバーｂ２  ４０２Ｃで半分カバーされるので、第３列６２２Ｃに０．５を含む。
【００７７】
図７は、一部の実施形態による、バーコードをデコードするための１ＳＰＭ及び−０．２５位相での多値幅バーコードの例示的なスキャンラインサブサンプリング及びサンプリング係数を示す。図７は、図４からのＡデータ文字エレメント配列４００を示す。図４。図７は、スキャン７０４から導出されたスキャン信号７０６を示す。スキャン信号７０６は、本明細書でスキャンサンプル７０８と総称するスキャンサンプル７０８Ａ、７０８Ｂから７０８Ｎまで含む。スキャンサンプル７０８は、対応するスキャンサンプルビンｓ０  ７１０Ａ、ｓ１７１０Ｂからｓ１１  ７１０Ｎまでに対するサンプルを表す。例えばスキャンサンプル７０８Ａは、スキャンサンプルビンｓ０  ７１０Ａに対するスキャンサンプルを表わし、これは、スキャンサンプルビンｓ０が０．７５％は反射率ｈを持つモジュールｂ０によってカバーされ、０．２５％が反射率１を持つモジュールｂ１によってカバーされるため、低から高に向かう行程の４分の３である。各単位４０２は、各スキャンサンプリングビン４１０の開始からモジュールの幅の４分の１だけ後方にオフセットされているため、単位４０２はスキャンサンプルビン７１０に対して（−０．２５）位相にある。
【００７８】
図７は、単位サンプリング係数マトリックス７２０も示す。単位サンプリング係数マトリックス７２０の各行ｓ０  ７１２Ａからｓ１１  ７１２Ｎまで（本明細書では行７１２と総称する）は１サンプルに対応し、単位幅パターン内のバーコード単位に対するサンプリング係数のベクトルである。単位サンプリング係数マトリックス７２０の各列７２２Ａから７２２Ｎ（まとめて列７２２）は１単位（例えばモジュール）に対応する。各スキャンサンプルビン７１０の幅は各バーコードモジュールの幅に等しい一方で、各スキャンサンプルビン７１０は−０．２５位相のために２つの連続するバーコード単位４０２によってそれぞれ０．７５％及び０．２５％カバーされる。単位サンプリング係数マトリックス７２０は、ゼロでない値を含んで示された場所以外のすべての場所にゼロを含む（簡単にするためにすべてのゼロが示されていない）。行ｓ０  ７１２Ａは、スキャンサンプルビンｓ０  ７１０Ａがモジュールｂ０  ４０２Ａによって3／4カバーされるので、第１列７２２Ａに０．７５を含み、スキャンサンプルビンｓ０  ７１０Ａがモジュールｂ１  ４０２Ｂによって1／4カバーされるので、第２列７２２Ｂに０．７５を含む。行ｓ１  ７１２Ｂは、スキャンサンプルビンｓ１  ７１０Ｂがモジュールｂ１  ４０２Ｂによって3／4カバーされるので、第２列７２２Ｂに０．７５を含み、スキャンサンプルビンｓ１  ７１０Ｂがモジュールｂ１  ４０２Ｃによって1／4カバーされるので、第３列７２２Ｂに０．２５を含む。
【００７９】
図８は、一部の実施形態による、バーコードをデコードするための１．３３ＳＰＭ及び１／３位相での多値幅バーコードの例示的なスキャンラインサブサンプリング及びサンプリング係数を示す。図８は、図４からのＡデータ文字モジュール配列４００を示す。図８は、スキャン８０４から導出されたスキャン信号８０６を示す。スキャン信号８０６は、本明細書ではスキャンサンプル８０８と総称するスキャンサンプル８０８Ａ、８０８Ｂから８０８Ｎまで含む。スキャンサンプル８０８は、対応するスキャンサンプルビンｓ０  ８１０Ａ、ｓ１  ８１０Ｂからｓ１６  ８１０Ｎまでに対するサンプルを表す。例えばスキャンサンプル８０８Ａは、スキャンサンプルビンｓ０８１０Ａのスキャンサンプルを表しており、これはスキャンサンプルビンｓ０が完全にｂ０によってカバーされるため高い値である。別の例として、スキャンサンプル８０８Ｂはスキャンサンプルビンｓ１  ８１０Ｂに対するスキャンサンプルを表わしており、これは、スキャンサンプルビンｓ１がｂ０の反射率によって１／３カバーされ、ｂ１の反射率によって２／３カバーされるため、高から低への行程の２／３である。単位４０２Ｂ（文字モジュールの始まり）がｓ１  ８１０Ｂの右から始まるので、単位４０２はスキャンサンプルビン８１０に対して３分の１（１／３）位相にある。
【００８０】
図８は、単位サンプリング係数マトリックス８２０も示す。単位サンプリング係数マトリックス８２０の各行ｓ０  ８１２Ａからｓ１６  ８１２Ｎまで（本明細書ではまとめて行８１２と呼ぶ）は１つのスキャンサンプルに対応し、単位幅パターン内のバーコード単位のサンプリング係数のベクトルである。単位サンプリング係数マトリックス８２０の各列８２２Ａから８２２Ｎまで（まとめて列８２２）は１単位（例えばモジュール）に対応する。各スキャンサンプルビン８１０の幅は、１．３３ＳＰＭのためバーコードモジュールの２／３に等しい。単位サンプリング係数マトリックス８２０は、ゼロでない値を含んで示された場所以外のすべての場所にゼロを含む（簡単にするためにすべてのゼロが示されていない）。例えば行ｓ０  ８１２Ａは、スキャンサンプルビンｓ０  ８１０Ａがモジュールｂ０  ４０２Ａによって完全にカバーされる（そして他のモジュールの部分はない）ので、第１列８２２Ａに１．０を含む。行ｓ１  ８１２Ｂは、スキャンサンプルビンｓ１  ８１０Ｂが単位ｂ０  ４０２Ａによって１／３カバーされるので、第１列８２２Ａに０．３３を含み、スキャンサンプルビンｓ１  ８１０Ｂがモジュールｂ２  ４０２Ｃによって２／３カバーされるので、第２列８２２Ｂに０．６６を含む。
【００８１】
図９は、一部の実施形態による、バーコードをデコードするための０．７５ＳＰＭ及び−０．２５位相での多値幅バーコードの例示的なスキャンラインサブサンプリング及びサンプリング係数を示す。図９は、図４からのＡデータ文字モジュール配列４００を示す。図９は、スキャン９０４から導出されたスキャン信号９０６を示す。スキャン信号９０６は、本明細書でスキャンサンプル９０８と総称するスキャンサンプル９０８Ａ、９０８Ｂから９０８Ｎまでを含む。スキャンサンプル９０８は、対応するスキャンサンプルビンｓ０  ９１０Ａ、ｓ１  ９１０Ｂからｓ９  ９１０Ｎまでに対するサンプルを表す。例えばスキャンサンプル９０８Ａは、スキャンサンプルビンｓ０  ９１０Ａのスキャンサンプルを表しており、これはｂ０  ４０２Ａの０．７５反射率及びｂ１  ４０２Ｂの０．２５反射率を表す値である。別の例として、スキャンサンプル９０８Ｂはスキャンサンプルビンｓ１  ９１０Ｂに対するスキャンサンプルを表しており、これは半分がモジュールｂ０によってカバーされ、半分がモジュールｂ１によってカバーされる。単位４０２Ｂ（文字モジュールｓの最初の単位）がｓ１  ９１０Ｂの左からサンプリングピッチ０．２５で始まるため、単位４０２はスキャンサンプルビン９１０に対してマイナス４分の１（−１／４）位相にある。
【００８２】
図９は、単位サンプリング係数マトリックス９２０も示している。単位サンプリング係数マトリックス９２０の各行ｓ０  ９１２Ａからｓ９  ９１２Ｎまで（本明細書ではまとめて行９１２と呼ぶ）は１つのスキャンサンプルに対応し、単位幅パターン内のバーコード単位のサンプリング係数のベクトルである。単位サンプリング係数マトリックス９２０の各列９２２Ａから９２２Ｎまで（まとめて列９２２）は１単位（例えばモジュール）に対応する。各スキャンサンプルビン９１０の幅は、０．７５ＳＰＭのためバーコードエレメントの１及び１／３に等しくなる。単位サンプリング係数マトリックス９２０は、ゼロでない値を含んで示された場所以外のすべての場所にゼロを含む（単純にするためにすべてのゼロが示されていない）。例えば行ｓ０  ９１２Ａには、スキャンサンプルビンｓ０  ９１０Ａが単位ｂ０  ４０２Ａによって3／4カバーされるので、第１列９２２Ａに０．７５を含み、スキャンサンプルビンｓ０  ９１０Ａが単位ｂ１  ４０２Ｂによって1／4カバーされるので、第２列９２２Ｂに０．２５を含む。行ｓ１  ９１２Ｂは、スキャンサンプルビンｓ１  ８１０Ｂが単位ｂ１  ４０２Ｂによって1／2カバーされるので、第１列８２２Ａに０．５を含み、スキャンサンプル単位ｓ１  ９１０Ｂが単位ｂ２  ４０２Ｃによって1／2カバーされるので、第２列９２２Ｂに０．５を含む。
【００８３】
図１０は、一部の実施形態による、バーコードをデコードするための０．８４ＳＰＭ、２．１の幅（Ｗ）、及び−０．１６位相での２値幅バーコードの例示的なスキャンラインサブサンプリング及びサンプリング係数を示す。図１０は、バーコード単位（エレメント）１００２と総称されるバーコードエレメントｂ０  １００２Ａ、ｂ１  １００２Ｂ、ｂ２  １００２Ｃ、ｂ３  １００２Ｄ、ｂ４  １００２Ｅ、ｂ５  １００２Ｆ、ｂ６  １００２Ｇ、ｂ７  １００２Ｈ、ｂ８  １００２Ｉ、ｂ９  １００２Ｊ、及びｂ１０  １００２ＫからなるＡデータ文字エレメント配列１０００を示す。
【００８４】
図１０は、スキャン１００４から導出されたスキャン信号１００６を示す。スキャン信号１００６は、本明細書でスキャンサンプル１００８と総称するスキャンサンプル１００８Ａ、１００８Ｂから１００８Ｎまでを含む。スキャンサンプル１００８は、対応するスキャンサンプルビンｓ０  １０１０Ａ、ｓ１  １０１０Ｂからｓ９  １０１０Ｎまでに対するサンプルを表す。例えばスキャンサンプル１００８Ａはスキャンサンプルビンｓ０  １０１０Ａに対するスキャンサンプルを表しており、これは単位ｂ０  １００２Ａの反射率０．８４、及び単位ｂ１  １００２Ｂの反射率０．１６を表す値である。別の例として、スキャンサンプル１００８Ｂは、単位ｂ１  １００２Ｂによって完全にカバーされるスキャンサンプルビンｓ１  １０１０Ｂに対するスキャンサンプルを表す。単位１００２Ｂ（文字の最初のエレメント）はスキャンサンプルビンｓ１  １０１０Ｂの左から始まるため、単位１００２はスキャンサンプルビン１０１０に対して−０．１６位相にある。
【００８５】
図１０は、単位サンプリング係数マトリックス１０２０も示している。単位サンプリング係数マトリックス１０２０の各行ｓ０  １０１２Ａからｓ１２  １０１２Ｎまで（本明細書ではまとめて行１０１２と呼ぶ）は１つのスキャンサンプルに対応し、単位幅パターン内のバーコード単位のサンプリング係数のベクトルである。単位サンプリング係数マトリックス１０２０の各列１０２２Ａから１０２２Ｎまで（まとめて列１０２２）は、１単位（例えばエレメント）に対応する。単位サンプリング係数マトリックス１０２０は、ゼロでない値を含んで示されている場所以外のすべての場所にゼロを含む（単純にするためにすべてのゼロは示されていない）。例えば行ｓ０  １０１２Ａは、スキャンビンｓ０  １０１０Ａの８４％が単位ｂ０  １００２Ａによってカバーされるので、第１列１０２２Ａに０．８４を含み、スキャンサンプルビンｓ０  １０１０Ａの１６％が単位ｂ１  １００２Ｂによってカバーされるので、第２列１０２２Ｂに０．１６を含む。行ｓ１  １０１２Ｂは、スキャンサンプルビンｓ１  ９１０Ｂのすべてが単位ｂ１  １００２Ｂによってカバーされるので、第２列１０２２Ｂに１．０を含む。
【００８６】
一部の実施形態では、図４〜図９に示されるように、多値幅シンボル体系はモジュール単位を使用する。単位幅パターン（例えばしたがって単位格子）はすべての可能なエレメント幅パターンに対して同じであり得るため、明白なモジュールサイズが一定であるシンボルの特定のセクションに対して１つの単位サンプリング係数マトリックスであることができる（例えば１文字、複数の文字又はバーコード全体）。このようなバーコードのセクションのデコードは、例えば実際の単位エンコードパターン（例えばモジュール値）に対する連立線形方程式を解き、次にそれをエレメント幅パターンに変換し、最終的にその関連する英数字値に変換することによって実行できる。一部の実施形態では、以下でさらに説明する多値幅シンボル体系のエレメントを使用することによってデコードを行うことができる。
【００８７】
図１１は、一部の実施形態による、バーコードをデコードするための一般的な画像ベースのデコードアルゴリズムの例示的なコンピュータ化された方法１１００を示す。ステップ１１０２で、バーコードリーダは（例えばコンベヤーベルトに載った物品上のバーコードの）取得された画像内のバーコード候補領域の位置を特定する。ステップ１１０４で、バーコードリーダは、次のバーコード候補領域を選択する。例えば次の候補領域は最もバー状の特徴を持つ領域である。バーコードリーダは、この候補に対して統合された文字列を初期化できる。ステップ１１０６で、バーコードリーダは、候補領域を通るスキャンのセットから次のスキャンを選択する（例えば図４のスキャン４０４）。スキャンは、例えば他のスキャンとほぼ平行で、バーコード候補の一方の端からもう一方の端まで延びる線分であることができる。バーコードリーダは、異なる順序を使用してスキャンを選択できる。例えばバーコードリーダは、上から下へ、中央から外側へなどの順序で次のスキャンを選択できる。
【００８８】
ステップ１１０８で、バーコードリーダは、投影を使用することなどにより、スキャン信号（例えばスキャン信号４０６）を取得する。ステップ１１１０で、バーコードリーダはスキャン信号からバーコードをデコードする。デコードプロセスは、さらに図１３に関連して説明される。ステップ１１１２で、バーコードリーダはスキャン文字列を統合する。例えばバーコードリーダは、スキャンからデコードされた文字列（文字スコアを含む）を、この候補スキャンに対してこれまでの統合された文字列と組み合わせることができる。ステップ１１１４で、バーコードリーダはバーコードが確実にデコードされたかどうかを（例えば信頼度閾値に基づいて）判定する。バーコードが確実にデコードされないとバーコードリーダが判定した場合、バーコードリーダはステップ１１０６に戻り、次の選択されたスキャン（残っている場合）でステップ１１０８から１１１２までを実行する。追加の候補領域が残っている場合、方法１１００はステップ１１０４に戻る。完了したら、方法１１００はバーコード文字列を報告する。バーコード文字列は、確実にデコードされなかったバーコード、部分的にデコードされたバーコードなどを含むことがある。
【００８９】
図１２は、一部の実施形態による、バーコードをデコードするためのレーザスキャナデコードアルゴリズムの例示的なコンピュータ化された方法１２００を示す。ステップ１２０２で、レーザスキャナはアナログ反射信号を取得する。アナログ反射信号は、レーザと検出器によって測定された、バーコード全体にわたる線形スキャンに沿ったバーコードの反射率である。ステップ１２０４で、レーザスキャナは（例えば一時的なサンプリングにより個別のデジタルスキャン信号を抽出することにより）反射信号をサンプリングする。ステップ１２０６で、レーザスキャナはスキャン信号からバーコードをデコードする。デコードプロセスは、さらに図１３に関連して説明される。ステップ１２０８で、レーザスキャナはスキャン文字列を統合する。ステップ１２１０で、レーザスキャナはバーコードが確実にデコードされたかどうかを判定する。バーコードが確実にデコードされないとレーザスキャナが判定した場合、レーザスキャナはステップ１２０２に戻り、新しいアナログ反射信号を取得する。そうでない場合は、方法１２００はステップ１２１２に進み、統合された文字列を報告する。
【００９０】
図１３Ａ−Ｂは、一部の実施形態による、スキャン信号からバーコードをデコードするための例示的なコンピュータ化された方法１３００を示す。ステップ１３０２で、バーコードリーダはスキャン信号内のエッジ（例えばエレメント間の遷移の１Ｄ位置）を検出する。当業者は、微分ピーク、二次微分ゼロ交差、ピーク／谷遷移（ＡＮＳＩエッジ）、及び／又はその他のエッジ検出方法を使用するなど、様々な技術を用いてエッジを検出できることを理解できる。ステップ１３０４で、バーコードリーダはエッジをフィルタリングする。例えばバーコードリーダは（例えばコントラストに基づいて）偽エッジを除外し、及び／又は最小特徴サイズが分かっている場合は欠けているエッジを追加できる。ステップ１３０６で、バーコードリーダは第１の区切り文字の位置を特定してデコードする。一部の実施形態では、バーコードリーダはスキャンに沿って逆方向に区切り文字の位置を特定してデコードすることができる（例えばスキャン信号を逆にすることにより）。
【００９１】
ステップ１３０８で、バーコードリーダは次の文字位置に進む。例えばバーコードリーダは、現在の文字の測定された文字の長さ（例えばステップ１３０６の開始時に区切り文字パターンになる）に加えて、測定された整数文字ギャップを追加して、現在の文字の開始位置を決定できる。現在の文字が適切にデコードされなかった場合（例えば信頼範囲内にない場合）、バーコードリーダは文字サイズの推定値を使用できる。ステップ１３１０で、バーコードリーダは文字単位格子を推定する。一部の実施形態では、文字単位格子は、開始位置（例えば位相）、最小特徴サイズ（例えばＸ）、細太比（該当する場合）、及び文字間ギャップを含む。一部の実施形態では、バーコードリーダは、以前にデコードされた文字の最後に測定された統計を使用して、後でデコードできなかった文字の数を考慮するように構成できる。一部の実施形態では、第１のエッジ距離を使用して、区切り文字を超える第１の文字に対する文字間ギャップを測定することができる。
【００９２】
ステップ１３１２で、バーコードリーダはエッジを使用して文字をデコードする。当業者は、これが当業界で知られている技術を用いて、例えばエッジから類似エッジまでの距離を測定すること、エッジから類似エッジまでの距離を分類すること（例えばＸ又はＷの最も近い整数倍までの各エッジ距離を丸めることを含む）、文字値を検索すること、及び文字格子（例えば位置、最小特徴サイズ、エレメント幅を含む）とスコアを更新する（例えばＸの最も近い整数倍からの分数差を使用するなどして、いかによくエッジが一致しているかを更新する）ことによって実行できることを理解できる。ステップ１３１４で、バーコードリーダは最後の区切り文字がデコードされたか、又はシンボル体系の文字の最大数を超えたか判定する。答が「いいえ」の場合は、方法はステップ１３０８に戻る。答が「はい」の場合は、方法は図１３Ｂのステップ１３２０に進む。ステップ１３２０で、バーコードリーダはすべての文字が首尾よくデコードされたかどうかを判定する。答が「はい」の場合は、方法１３００はステップ１３２２に進み、統合された文字列を報告する。答が「いいえ」の場合は、方法１３００はステップ１３２４に進み、確実にデコードされなかった文字を除外する。例えばバーコードリーダは誤読を防ぐように構成できる。バーコードリーダは潜在的な誤読を検出するために高い信頼度閾値で設定することができる（例えばそのような文字がデコードされないとマークされる）。例えばそのような文字は、（例えば文字単位格子の推定値の誤差及び／又はエッジ欠落及び／又は余分なエッジのため）デコードされなかった文字の先行文字を含むことがある。
【００９３】
ステップ１３２６で、バーコードリーダは次のデコードされていない文字に進む。例えばバーコードリーダは文字列の先頭から開始して、次のデコードされていない文字に進むことができる。ステップ１３２８で、バーコードリーダは文字単位格子を推定する。ステップ１３３０で、バーコードリーダはスキャン信号から文字をデコードする。文字がデコードされない場合、方法はステップ１３２６に戻る。文字がデコードされている場合、方法はステップ１３３４に進み、文字単位格子を精緻化する。一部の実施形態では、ステップ１３３４は任意選択である。バーコードリーダは、文字単位格子測定値の各々に小さい摂動を検索して、デコードされた文字のスコアがどのように変化するかを評価できる。バーコードリーダは最良のスコアをもたらす文字単位格子を選択することができ、それによって修正された開始位置、文字間ギャップ（該当する場合）、最小特徴サイズ、及び／又は細太比（該当する場合）を決定する。デコードされていない文字が残っている場合、方法はステップ１３２６に進む。そうでない場合は、方法はステップ１３２２に進み、統合された文字列を報告する。
【００９４】
ステップ１３３０を参照して、別個の文字をデコードすると、例えば遠近法効果、及び／又は湾曲した物体の周りのシンボルの非線形ワーピングによって引き起こされるものなど、スキャンに沿った位置の関数として変化するスキャンサンプリングピッチに対処することができる。したがってバーコードリーダは、文字の比較的狭い位置範囲で一定のスキャンサンプリングピッチを使用するように構成できる。例えばスキャンサンプルピッチ単位で測定された単一の最小特徴サイズと太いバー幅（該当する場合）を使用して、文字の単位格子を記述することができる。有利なことに、文字を使用すると、バーコードリーダは各単位エンコードパターンのすべての可能な組み合わせ（例えば多値幅コード１２８に対して１０３通りの組み合わせ）を調べて、結果として予想された（例えば予測された）正規化されたスキャンサンプルＡｂ（これは測定された正規化されたスキャンサンプルｓの部分に最も近い一致である）になる単位エンコードパターンを選択することにより、各文字単位エンコードパターンを解くことが可能になる。
【００９５】
一部の実施形態では、バーコードリーダは、標準線形代数技術を使用して直接単位エンコードパターンを解くように構成できる（例えば標準最小２乗式ｂ＝（ＡＴＡ）−１ｓ法を使用する。これはＡｂ−ｓのユークリッド長さを最小化するであろう）。Ａはモジュールサイズが１．０に近づくと数値的に不安定になり、１．０未満では特異になる。したがってこの技術を用いて解を安定させることができる。例えば制約最小化を使用して（例えばラグランジュ乗数を使用して他の線形制約を組み込む）解を安定させることができる。別の例として、擬似逆（例えばｂ＝Ａ＋ｓ）を使用して解を安定させることができる。解はその他の多数の方法のいずれか、例えば解を数学的にバイナリベクトルに制限することによって制約できる。しかしながら一部の制約は、容易若しくは効率的に解けない非線形方程式のセットになることがあり、他の制約ほど有益ではない場合がある。
【００９６】
文字ごとの技術を使用して、２値幅バーコードをデコードし及び／又は多値幅文字をデコードできる（単位エレメントを使用する場合など）。したがってバーコードリーダは、交互するバーとスペースを表すバイナリ単位エンコードパターンベクトルを乗算した場合に（すべての可能な文字に対して同様）最良のスコア（例えば本質的にサンプルスキャンと最も良く一致するもの）になる単位サンプリング係数マトリックス（及び関連するエレメント幅パターンと文字値など）を識別することにより、バーコード文字をデコードするように構成できる）。
【００９７】
一部の実施形態で、バーコードリーダは最も良く一致する文字を見つけるプロセスの前及び／又は最中にスキャン信号包絡線ベクトル１及びＨを決定する（その結果、例えば測定及び予測（予想）されたスキャン信号値を直接比較できるようになる）。一部の実施形態において、バーコードリーダは、（例えば計算を容易にするために）スキャン信号包絡線が単一の文字にわたって一定であると仮定するように構成される。例えばバーコードリーダはベクトルではなく、１組の包絡線値ｌ及びｈを使用できる。例えばこのような構成を使用すると、基本的にバーコードの基礎となる照明が単一の文字の過程であまり変化しないと仮定することができる。
【００９８】
一部の実施形態において、バーコードリーダは、信号包絡線が以前にデコードされた文字の包絡線とあまり変わらないと仮定するように構成できる。デコードした後、バーコードリーダは、デコードされた文字の幅の太いバー内の最小及び最大信号値を測定することによって包絡線を精緻化できる。一部の実施形態では、バーコードリーダは、マッチングプロセスの一部として可能性のある各文字について直接包絡線パラメータｌ及びｈを決定することができる。例えばバーコードリーダは、予想されるＡｂを実際に測定された生信号ｒに直接一致させるように構成できる（例えば任意の均一なスケールと単一のオフセットを許可することにより）。一部の実施形態では、バーコードリーダは、合計ｉ（ａｒ（ｉ）＋ｃ−ｓ（ｉ））２を最小化するスカラａ及びｃの値を選択するように構成することができる（例えばｉの全ｎ、ここでｎはスキャン信号の部分の長さである）。次に関係ａ＝（ＳＢ）／（ｈｌ）及びｃ＝Ｂ−ａｌを用いて、ｈ及びｌを決定でき、以下を得る：
ｌ＝（ＤＢ−ｖｃ）／ｖａ
ｈ＝ｌ＋Ｄ（ＳＢ）／ｖａ        式３及び４
ここで、
・ｖａ＝ｍ２ｙ２−ｎｙ１
・ｖｃ＝ｍ２ｙ１−ｍ１ｙ２
・Ｄ＝ｍ２２−ｎｍ１
・ｍ１＝ｓｕｍ（ｒ（ｉ）２）
・ｍ２＝ｓｕｍ（ｒ（ｉ））
・ｙ１＝ｓｕｍ（ｓ（ｉ）ｒ（ｉ））
・ｙ２＝ｓｕｍ（ｓ（ｉ））
【００９９】
一部の実施形態では、バーコードリーダは計算されたｌ及びｈを、これらの数字に対して予想される範囲に照らして（例えば近くの文字に基づいて）検証するように構成でき、その結果としてバーコードリーダはｂに対応する文字をさらに考慮する必要があるかどうかを判定できる。
【０１００】
図１４Ａ−Ｃは、一部の実施形態による、バーコードをデコードするための第１の区切り文字の位置を特定してデコードするための例示的なコンピュータ化された方法１４００を示す。ステップ１４０２で、バーコードリーダは、可能な区切り文字開始点を識別する。例えばバーコードリーダは各エッジを可能な開始位置と見なすことができ、そこではエッジの極性（明るい色の上に暗い色又は暗い色の上に明るい色）がバーコードの極性（明るいオンダーク又は暗いライト、オンライト）を決定する。別の例として、バーコードリーダは妥当なクワイエットゾーンを持つエッジのみを考慮することができる（例えば先行のスキャン信号内に後続エッジ距離に相当する距離に重要な特徴（エッジなど）がない）。
【０１０１】
ステップ１４０４で、バーコードリーダは、残りの識別された可能な区切り文字開始点の間から次の可能な区切り文字開始を選択する。ステップ１４０６で、バーコードリーダはエッジを使用して文字をデコードする。ステップ１４０８で、方法１４００は、区切り文字がデコードされたかどうかを判定する。答が「はい」の場合、方法は図１４Ｃのステップ１４４６に進む。ステップ１４１０で、バーコードリーダは可能な区切り文字を識別する。例えば一部のシンボル体系は複数の開始パターン又は停止パターンを持つ。上述の一部の実施形態において、デコード操作が逆方向で発生する可能性があるため、停止パターンはスキャン信号に沿って逆方向で検出することができる。ステップ１４１２で、バーコードリーダは次の可能な区切り文字を選択する。
【０１０２】
ステップ１４１４で、バーコードリーダは、可能な大まかな文字単位格子を推定する。例えばバーコードリーダは、バーコードの終わりの信号の部分から、可能な最小特徴サイズと細太比（該当する場合）を推定できる。例えばバーコードリーダは印刷太りがほぼ０であり、文字間ギャップ（該当する場合）は１Ｘであると推定できる。他の推定は、例えば信号が解像度不足であるために一部のエッジが欠落している可能性があると仮定して、パターンエッジ対応を開始する可能な測定されたエッジを識別して、最小２乗適合を実行することによって行うことができる。最良適合を有する（例えば誤差閾値を超える）対応が選択され、最良適合文字格子に関連付けられる。一部の実施形態では、この推定は代替的に、２値幅シンボル体系について太エレメントの中心の位置を特定して、同様の対応操作を実行することにより、エッジなしで達成することができる。
【０１０３】
ステップ１４１６で、バーコードリーダは次の大まかな文字単位格子を選択し、方法はステップ１４２０に進む。ステップ１４２０で、バーコードリーダは次の文字単位格子摂動を選択する。例えばバーコードリーダは、推定値とは異なるが、推定された最大誤差内にある文字単位格子を選択できる。一部の実施形態では、バーコードリーダは１つのパラメータ（例えば最小特徴サイズなど）を小さいステップで変えることができる。ステップ１４２２で、バーコードリーダは、単位サンプリング係数マトリックスを計算するが、これは図１５でさらに説明される。ステップ１４２４で、バーコードリーダは単位サンプリング係数マトリックスから文字をスコアリングするが、これは図１６でさらに説明される。スコアが十分である（例えば所定の閾値よりも良い）とバーコードリーダが判定した場合、バーコードリーダはその文字に対するスコアと、関連する文字単位格子を記録できる。
【０１０４】
ステップ１４２６で、バーコードリーダは、格子摂動が残っているかどうかを判定する。格子摂動が残っている場合、バーコードリーダはステップ１４２０に進む。答が「いいえ」の場合、方法はステップ１４２８に進み、粗い文字格子が残っているかどうかを判定する。文字格子が残っている場合、方法は図１４Ａのステップ１４１６に進む。文字格子が残っていない場合、方法はステップ１４３０に進み、可能な区切り文字が残っているかどうかを判定する。可能な区切り文字が残っている場合、方法は図１４Ａのステップ１４１２に進む。
【０１０５】
可能な区切り文字が残っていない場合、方法は図１４Ｃのステップ１４４０に進む。ステップ１４４０で、バーコードリーダは、最も良く一致する文字をスコアリングする。例えばバーコードリーダは最良のスコアを持つ文字／格子の組み合わせを選択できる。ステップ１４４２で、バーコードリーダは最良の文字スコアが十分であるかどうかを判定する。例えば最も良く一致する文字スコアが十分でない場合、又は次に最も良い可能な文字スコアを信頼度閾値以上に下回る場合、バーコードリーダは区切り文字を見つけられなかったと判定できる。最良の文字スコアが十分である場合、バーコードリーダはステップ１４４６に進む。最良の文字スコアが十分でない場合、バーコードリーダはステップ１４４４に進み、可能な区切り文字開始位置が残っているかどうかを判定する。可能な区切り文字開始位置が残っている場合、方法は図１４Ａのステップ１４０４に進む。ここで可能な区切り文字開始位置が残っていない場合、方法はステップ１４４６に進み、（任意選択で）文字格子を精緻化する。例えばバーコードリーダは各文字格子測定値の小さい摂動を検索して、デコードされた文字についてスコアがどのように変化するかを評価できる。一部の実施形態において、バーコードリーダは、最良のスコアをもたらす文字格子を選択し、それにより修正された開始位置、文字間ギャップ（該当する場合）、最小特徴サイズ、及び／又は細太比（該当する場合）を決定する。
【０１０６】
図１５は、一部の実施形態による、バーコードをデコードするための単位サンプリング係数を決定するための例示的なコンピュータ化された方法１５００を示す。ステップ１５０２で、バーコードリーダは単位サンプリング係数を初期化する。単位サンプリング係数マトリックスのサイズはｎｘｍでありここでｎは実際の１Ｄ信号値の数であり、ｍはモジュールの数（例えば多値幅シンボルの場合）又は文字内のエレメント（例えば２値幅シンボル、又はエレメント単位を使用する多値幅の場合）の数プラス２（例えば文字の前と後のエレメント又は文字間ギャップを表す）である。バーコードリーダは、すべての値を０に初期化する。好ましい実施形態では、係数マトリックスは、疎なマトリックス表現を使用して表示される。
【０１０７】
ステップ１５０４で、バーコードリーダはサンプル範囲を決定する。例えばバーコードリーダは、文字内にある中心（例えば１つの文字モジュール又はエレメント内の中心であって、先行又は後続のエレメント又は文字間ギャップではない）を持つ最初と最後のサンプルを決定することができる。ステップ１５０６で、バーコードリーダは範囲内の次のスキャンサンプルに進む。例えばまだ考慮されていない場合、これは範囲内の最初のサンプルである。上記のように、サンプルは同じインデックスを持つ係数マトリックスの行に対応できる。サンプルは通常、ビンに関連付けられており、これは情報を統合すると推定されるスキャンラインの位置範囲である。サンプルビンは、サンプル位置を中心にしてその周りに配置することができ、サンプル間隔に等しい幅を持つことができる。
【０１０８】
ステップ１５０８で、バーコードリーダは、文字単位のオーバーラップを決定する。例えばバーコードリーダは文字単位格子を使用して、各文字単位でオーバーラップするサンプルビンのパーセンテージを計算する（例えば印刷太りｇを考慮に入れる）。多値幅シンボル体系の場合、バーコードリーダはモジュールに等しい単位を使用できる。２値幅シンボル体系の場合、バーコードリーダはエレメントに等しい単位を使用できる。バーコードリーダはこれらの値を、サンプルに関連付けられた係数マトリックスの行全体にわたり順番に記録できる。一部の実施形態では、Ｘ−ｇ＞０．５サンプルピッチの場合、１行あたりせいぜい３個のゼロでないパーセンテージが存在する可能性があり、オーバーラップはサンプルｊに最も近いモジュールｉを特定して、係数マトリックスＡを次式によって特定することによって決定できる：
ｑ（ｉ）＝（ｗ（ｉ）−１）／２                （式５−８）
Ａ（ｊ，ｉ−１）＝ｍａｘ（＋ｄ（ｉ，ｊ）−ｑ（ｉ）＋ｇ／２，０）
Ａ（ｊ，ｉ＋１）＝ｍａｘ（−ｄ（ｉ，ｊ）−ｑ（ｉ）＋ｇ／２，０）
Ａ（ｊ，ｉ）＝１−Ａ（ｊ，ｉ−１）−Ａ（ｊ，ｉ＋１）
ここで、
ｗ（ｉ）はエレメントｉの幅である（例えば細エレメント又はモジュールの場合はＸ、太エレメントの場合はＷ）
ｄ（ｉ、ｊ）は、単位ｉの中心とサンプルｊの中心との間の符号付きの差である（例えばすべての位置はサンプル座標の実数値である）。
【０１０９】
ステップ１５１０で、バーコードリーダは範囲内にスキャンサンプルが残っているかどうかを判定する。範囲内にスキャンサンプルが残っている場合、方法はステップ１５０６に進む。範囲内にもはやスキャンサンプルが残っていない場合、方法はステップ１５１２に進んで終了する。
【０１１０】
一部の実施形態では、バーコードリーダは、誤差の関数ｅ＝ｓ−Ａｂを使用して文字に対するスコアを決定するように構成されている。この関数の例は、２乗誤差の合計、絶対誤差の合計、最大誤差及び／又は同種のものを含む。一部の実施形態では、誤差は係数マトリックスを通して「逆伝搬」されて、元の文字単位（モジュール又はエレメント）の誤差を計算する。逆伝搬は、次式に従って単位誤差ベクトルｅ（ｂ）を計算することによって達成できる。
ｅ（ｂ）＝ＡＴｅ'        式９
ここで、
・ｅ（ｂ）は単位誤差ベクトルである。
・ｅ'は、ｅ'（ｉ）＝｜ｅ（ｉ）｜によって定義される絶対信号誤差のベクトルである。
【０１１１】
パターンｂに対する全体誤差は、例えば２乗単位誤差の合計、単位誤差の合計、最大単位誤差及び／又は同種のものを使用して計算できる。一部の実施形態では、２乗単位誤差の合計がデータ文字に使用される（例えばたった１つの単位が正しくない場合でもコストのかかる誤読を招くことあるため）。一部の実施形態において、単位誤差の合計は区切り文字に対して使用される（例えば誤読はそれほど有害ではないが、区切り文字が欠落するとシンボルをデコードしようとさえしない場合）。
【０１１２】
図１６は、一部の実施形態による、バーコードをデコードするためにスキャン信号から文字をスコアリングするための例示的なコンピュータ化された方法１６００を示す。ステップ１６０２で、バーコードリーダは文字単位パターンを作成する。例えば一部の実施形態では、バーコードリーダは、文字に関連付けられたバイナリ単位エンコーダパターンを識別する。例えば多値幅文字の場合、単位エンコードパターンは、文字エレメント幅パターンから導出されたバー又はスペースの一部であることができるモジュールのパターンである。例えば２値幅文字の場合、単位エンコードパターンは、常に適当な値（バー又はスペース）で始まり、バー値とスペース値が交互する配列であるエレメント値のパターンである。
【０１１３】
ステップ１６０４で、バーコードリーダは単位サンプリング係数の乗算を実行する。例えばバーコードリーダは、単位サンプリング係数マトリックスに単位エンコードパターンを乗算して、予測（又は予想）された信号ベクトルを取得できる。ステップ１６０６で、バーコードリーダは予測信号と測定信号を比較することができる。一部の実施形態では、比較の結果として予測信号が測定信号とどれだけ良く一致するかを示す１つ以上の文字スコアを生成するように、バーコードリーダを構成することができる。これは、前述のように様々な方法で実現できる。一部の実施形態では、バーコードリーダは、実際の信号をローカル信号包絡線（例えば信号内のバーとスペースの見かけの反射率に対応する最小及び最大信号範囲）で正規化した後に２つの値を減算できる。
【０１１４】
図１７は、一部の実施形態による、バーコードをデコードするためのマルチレベルバーコードのスキャン信号から文字をデコードするための例示的なコンピュータ化された方法１７００を示す。ステップ１７０２を参照すると、バーコードリーダは、例えば図１７で説明したように単位サンプリング係数を決定する。ステップ１７０４で、バーコードリーダは可能なデータ文字を識別する。例えばコード１２８など一部のコードでは、すべてのデータ文字が可能であろう。ＵＰＣ−ＥＡＮなど他のコードでは、適当なサブグループ（Ａ、Ｂ、又はＣ）の文字のみ可能であろう。ステップ１７０６で、バーコードリーダは次の可能なデータ文字を選択する。ステップ１７０８で、バーコードリーダは単位サンプリング係数を使用して文字をスコアリングする。
【０１１５】
ステップ１７１０で、バーコードリーダはスコアが十分に高いかどうかを判定する。スコアが十分に高くない場合、方法はステップ１７０６に進む。スコアが十分に高い場合、バーコードリーダはステップ１７１２に進み、文字とスコアを記録する。ステップ１７１４で、バーコードリーダは、可能なデータ文字が残っているかどうかを判定する。可能なデータ文字が残っている場合、バーコードリーダはステップ１７０６に進む。データ文字が残っている可能性がない場合、バーコードリーダはステップ１７１６に進み、バーコードリーダは最良のスコアが２番目に良いスコア（ある場合）より少なくとも信頼度閾値だけ優れているかどうかを判定する。バーコードリーダが最良の文字を識別したと確信すると、バーコードリーダはステップ１７２０に進み、最良の文字とスコアを記録する。バーコードリーダが確信しない場合、文字はデコードされない。
【０１１６】
図１８は、一部の実施形態による、バーコードをデコードするための２レベル又はマルチレベルバーコードのスキャン信号から文字をデコードするための例示的なコンピュータ化された方法１８００を示す。ステップ１８０２で、方法は可能なデータ文字を識別する。例えばコード３９など一部のコードでは、すべてのデータ文字が可能であろう。コーダバーなど他のコードでは、適当な長さの文字のみが可能である。ステップ１８０４で、方法は次の可能なデータ文字を選択する。ステップ１８０６で、方法は、（例えば図１５に関連して説明したように）単位サンプリング係数を決定する。ステップ１８０８で、方法は（例えば図１６に関連して説明したように）単位サンプリング係数を使用して文字をスコアリングする。
【０１１７】
ステップ１８１０で、バーコードリーダはスコアが所定の閾値を超えているかどうかを判定する。スコアが所定の閾値を超えていない場合、方法はステップ１８０４に戻る。スコアが所定の閾値を超えている場合、方法はステップ１８１２に進み、文字とスコアを記録する。ステップ１８１４で、方法は、可能なデータ文字が残っているかどうかを判定する。可能なデータ文字が残っている場合、方法はステップ１８０４に進む。可能なデータ文字が残っていない場合、方法はステップ１８１６に進む。ステップ１８１６で、バーコードリーダは最良のスコアが２番目に良いスコア（ある場合）よりも少なくとも信頼度閾値だけ優れているかどうかを判定する。バーコードリーダが最良の文字を識別したと確信すると、バーコードリーダはステップ１７２０に進み、最良の文字とスコアを記録する。バーコードリーダが確信しない場合、文字はデコードされず、方法はステップ１８１８で終了する。
【０１１８】
様々な２Ｄシンボル体系を用いて、上述したようにデータマトリックス、ＱＲコード（登録商標）、アズテックコード、マキシコード、ベリコード及び他の２Ｄシンボルなどの情報をエンコードすることができる。図１９Ａは一部の実施形態による、例示的なデータマトリックス２Ｄシンボル１９００を示している。最も左の列１９０２と最も下の行１９０４はデータマトリックス「Ｌ」を形成しており、これはすべてのデータマトリックスシンボルに対して存在し、画像内にデータマトリックスシンボルの位置を特定して、その向きを判定するために使用される。データマトリックスシンボル１９００は、シンボルの情報をエンコードするために使用されるモジュールのセット（例えば黒いモジュール１９０６や白いモジュール１９０８のような黒と白のモジュール）で構成されている。図１９Ｂは、幾つかの例に従い、例示的なＱＲコードシンボル１９５０を示している。データマトリックスシンボル１９００における「Ｌ」パターンの代わりに、ＱＲコードシンボル１９５０は、３個のブルズアイ（牡牛の目）１９５２、１９５４及び１９５６を含んでおり、これらは画像内にＱＲコードシンボル１９５０の位置を特定して、その向きを判定するために使用される。データマトリックスシンボル１９００と同様に、ＱＲコードシンボル１９５０は、黒いモジュール１９５８と白いモジュール１９６０のようなシンボルの情報をエンコードするために使用される。
【０１１９】
コード１２８、コード９３、ＵＰＣ−ＥＡＮ、ＰＤＦ４１７、マイクロＰＤＦ、データバー、その他のシンボルなど、様々な多値幅１Ｄシンボルを使用して情報をエンコードできる。上述のように、図２は、モジュール２０２Ａ〜２０２Ｅのセットを有する、多値幅シンボル体系コード１２８を使用して生成された例示的なバーコード２００を示す。
【０１２０】
上記のように、撮像アプリケーションがサンプリング不足やぼやけなどの解像度不足のシンボルを取得する理由は幾つかある。例えば一部の撮像アプリケーションは、コンベアベルトに沿って移動する物体を撮像するために取り付けられたセンサを使用する。このようなセンサは、より大きい視野（ＦＯＶ）を実現するためにコンベヤーベルト（及びコンベヤーベルトによって運ばれる物体）から十分に離れた位置に取り付けることができる。しかしながらより大きいＦＯＶを実現するための代償は、物体及び／又は物体上のシンボルの解像度の低下であり、その結果として物体及びシンボルの画像が不十分になる。別の例として、シンボルは物体の底側に向かって位置が特定されることができるが、その結果コードはセンサなどからさらに離れ、やはりシンボルの解像度が不足した画像をもたらすことにつながる。したがって技術を使用して、解像度不足の１Ｄ及び２Ｄシンボルをデコードすることが望ましい場合がある。
【０１２１】
解像度不足の１Ｄシンボルをデコードする技術がある。１Ｄシンボルの場合、この技術はシンボルの文字の態様を活用できる。また、２Ｄシンボルと比較して、１Ｄシンボル文字に対する値の可能性は著しく少ないので、１Ｄ技術は可能性のある有効な値の組み合わせをすべて試してシンボルをデコードできる。例えば１２８コードバーコードの場合、１０３個の標準文字パターンがあるため、この限られたセットのパターンを前提として一部の１Ｄ技術は本質的にすべての文字パターンを試すだけである。例えば本明細書で説明された技術は解像度不足の１Ｄシンボルのデコードを提供する。
【０１２２】
１Ｄシンボルとは異なり、モジュール値のすべての可能な組み合わせを単純に試すだけでは、未知のモジュール値を決定することはしばしば実行可能ではない。例えば２Ｄシンボル（２ｎ、ここでｎはシンボル内のモジュールの数）に対してすべての可能なバイナリ２Ｄパターンを列挙して評価することは、しばしば非現実的であり、結果を現実的な時間枠内で生み出すことはできない。可能性のあるすべてのバイナリ２Ｄパターンを片っ端から試すことも、モジュール誤差に対する感受性が低い。なぜなら１個のモジュールはパターン全体の非常に小さいパーセンテージであり、それゆえ全体的な誤差に及ぼす効果は、シンボルの特定された位置の不正確さに起因する誤差の効果に比べて小さいからである。別の例として、１Ｄシンボルに対するすべての可能な多値幅パターンを列挙して評価することは、個々の文字を個別に考慮することなく同様に非実用的である。
【０１２３】
本明細書に記載される技術は、図１９Ａ−１９Ｂに示される２Ｄバーコード、及び図２に示される多値幅バーコードなどのシンボルの解像度不足の画像のデコードを提供する。本明細書でさらに説明するように、技術は、シンボルの画像内の既知のピクセル値と未知の（黒又は白の）モジュール値との間に数学的関係を確立することを含んでよい。例えば幾つかの非限定的な実施形態では、線形方程式の制約不足のセットは、疎なサンプリングマトリックスとして表現できる。サンプリングマトリックスの各係数エレメント（ｉ、ｊ）は、画像内のｉ番目のピクセルとシンボル内のｊ番目のモジュールとの間のオーバーラップ率の推定値であることができる。この技術は、モジュールがオーバーラップするピクセルに対する係数と値を分析して、モジュールの可能性を論理的に推測し、及び／又は反復的な方法でモジュール値を満たすことを含む。２Ｄシンボルモジュールを反復的に考慮すると、全体的な可能性の数をすばやく減らすことができ（例えば２ｎ未満）、未知の２Ｄモジュール値の決定が実行可能になる。
【０１２４】
図２０は、一部の実施形態による、解像度不足のシンボルをデコードするための例示的なコンピュータ化された方法２０００を示す。ステップ２００２で、画像処理装置はシンボルの部分のデジタル画像を受け取る。画像処理装置は、バーコードリーダ、バーコードリーダに連結された外部コンピューティングデバイス、及び／又は本明細書で論じる技術を実行するように構成された他の何らかのコンピューティングデバイスであってよい。ステップ２００４で、画像処理装置は、モジュールの格子内のモジュールの連続サブセットとピクセルの格子との間の空間マッピングを決定する。ステップ２００６で、画像処理装置は空間マッピングを用いて、モジュールの連続サブセット内の各モジュールとピクセルの格子との間の因果関係を決定する。各因果関係は、モジュールの値がピクセルの格子内のピクセルのサブセットの値の各々に与える影響の程度を表すことができる。ステップ２００８で、画像処理装置は因果関係を用いて、モジュールの連続サブセット内で隣接する２個以上のモジュールの値の有効な組み合わせのセットをピクセルの格子に照らしてテストする。ステップ２０１０で、画像処理装置は２個以上の隣接するモジュールの少なくとも１個のモジュールの値を、テストされた有効な組み合わせのセットに基づいて決定する。ステップ２０１２では、画像処理装置は、少なくとも１個のモジュールの決定された値に基づいてシンボルをデコードする。
【０１２５】
ステップ２００２を参照すると、バーコードリーダなどのシンボルリーダは、自動的にシンボルをデコードする装置である。シンボルリーダは、カメラの光学系や撮像センサ（ＣＣＤアレイなど）を使用するなどして、バーコードの離散画像を取得する画像ベースのシンボルリーダを含む。結果の画像は、バーコード全体の１Ｄ又は２Ｄサンプリングである。その画像の各画像サンプル又はピクセル自体が、バーコードの小さい領域の平均反射率の測定値である。
【０１２６】
図２１−２５Ｂは、本明細書に開示される技術を２次元バーコード適用した例示的な例として用いられる。図２１は、一部の実施形態による、２Ｄシンボルの例示的な画像２１００を示す。画像２１００は、各ピクセルの暗さを示す関連したピクセル値を有するピクセルのセット（例えばピクセル２１０２及び２１０４）を含む。各画像は、８ビット値に対して０〜２５５など所定の輝度範囲内の値を持つことができるピクセル値のセットを有してよい。グレースケール画像などの幾つかの例では、０は黒を表し、２５５は白を表わすことができる。かしながら、実際には撮像システムは、色の全範囲を達成できないことがあり、その結果として範囲は、通常は画像内のピクセルに許容される値よりも制限されることがある。
【０１２７】
一部の実施形態では、この技術は、画像信号の包絡線を使用してシンボルをデコードする。包絡線には、画像全体の信号の最大及び最小ピクセル値を含む。包絡線の最大値は、画像の白を示し（しかし例えば画像に許容される理論上の最大値に必ずしも対応しない）、最小値は画像の黒を示す（しかし例えば画像に許容される理論上の最大値に必ずしも対応しない）。したがってピクセル値を局所的前景（暗い）と局所的背景（明るい）の間でマッピングして、０〜１の範囲のピクセル値を生成できる。こうしてシステムは画像の特定の包絡線によって信号値を正規化して、ピクセルが特定のアプリケーションに対してどれだけ「黒い」か「白い」かの尺度を決定できる。例えば画像内のシンボルは、照明の角度による勾配を持つことがあり、この場合シンボルの片側は均一なグレーであるが、もう片側は黒になる。信号包絡線を決定すると、例えば画像の様々な部分間の照明の差、影及び／又は同種のものを正規化できる。信号包絡線は、例えば本明細書で説明するものと同様の方法で決定できるが、１Ｄ処理ではなく２Ｄ処理を使用する。別の例として、各ピクセルの周囲の局所的領域内でヒストグラムのテールを計算することにより、信号包絡線を決定できる。
【０１２８】
ステップ２００４を参照すると、図２２Ａは、一部の実施形態による、図２１からの画像２１００の上部に重ね合わせた例示的なモジュールの格子を示している。この具体的な例では、モジュールの格子のピッチ（例えばモジュールサイズ）はピクセルの格子のピッチとほぼ同じであり、即ち解像度はモジュールあたり約１ピクセルである。しかしながら常にそうであるとは限らない。極端に低解像度の画像では、モジュールのピッチがピクセルの格子のピッチより著しく大きくなり、高解像度の画像では、モジュールの格子のピッチが画像格子のピッチよりもはるかに小さくなる。この技術は、最初に画像のピクセルの格子に関連するシンボルのモジュールの格子の位置を特定することを含む。２Ｄシンボルの場合、例えばシンボル上のファインダパターン（例えばデータマトリックスシンボルの「Ｌ」パターン、又はＱＲコードのブルズアイパターン）を使用して格子の位置を特定できる。
【０１２９】
画像処理装置は、２Ｄシンボルに対する１つ以上のモジュールの格子を格納でき、これらはシンボルに対するモジュールの２次元レイアウトを表す。画像処理装置は、画像２１００に対してモジュールの格子２２００の位置を特定して、モジュールの格子内のモジュールと画像内のピクセルの格子との間の空間マッピングを決定することができる。モジュールの格子２２００と画像２１００内のピクセルの格子との関係は、例えば各モジュールが画像２１００内のピクセルとどれだけ多くオーバーラップしているかを反映することができる。図２２Ａは、ピクセルの格子に重ねられたモジュール２２００の２Ｄ格子を示すことにより、そのような関係を高レベルで示している。それゆえモジュールの格子２２００と画像２１００のピクセルの格子との関係は、各モジュールが各ピクセルにどの程度影響するかを反映することができる。ほとんどの影響はゼロになる（例えば特定のモジュールとオーバーラップしない画像内の大多数のピクセルで）。
【０１３０】
図２２Ｂは、サンプリングマトリックス２２７０の部分例を示しており、これは一部の実施形態による、ピクセルの格子２２５０における各ピクセルが、モジュールの格子２２６０の例示的モジュール２２６２によってオーバーラップされるパーセンテージを示す。一部の実施形態では、特定のモジュールに対するパーセンテージがほぼモジュールサイズとなることができる。この例ではモジュールサイズは近似的に１であり、より近似的には０．９である。一部の実施形態では、特定のピクセルに対するすべてのモジュールにわたるパーセンテージを合計するとおよそ１００％になることができる。図示されているように、モジュール２２６２はピクセルの格子２２５０で４個のピクセル、即ちピクセル２２５２、２２５４、２２５６及び２２５８がオーバーラップしている。サンプリングマトリックス部分２２７０はオーバーラップ率、即ち１５％、２０％、２５％、３０％を示しており、これらはモジュール２２６２がピクセル２２５２、２２５４、２２５６及び２２５８とそれぞれオーバーラップしていることを示す（即ちこれらのピクセルの各部分はモジュール２２６２によってカバーされている）。サンプリングマトリックス部分２２７０における残りの値は、モジュール２２６２がピクセルの格子２２５０における他のいずれのピクセルともオーバーラップしないため、０％である。簡単にするために、図２２Ｂは点線の矢印で示すように、ピクセルの格子２２５０とサンプリングマトリックス２２７０の一部のみを示している。一部の実施形態では、本明細書でさらに論じるように、画像全体を表す代わりに３×３サンプリングマトリックス及び／又は１×９サンプリングマトリックスなど小さいサンプリングマトリックスが使用される。このような小さいサンプリングマトリックスは、そのまま格納することも、大きいサンプリングマトリックスから導出することもできる。
【０１３１】
一部の実施形態において、モジュールの格子とピクセルの格子との間の関係は、１つ以上の位置特定技術を用いて決定できる。この技術は、例えば１モジュールあたりのピクセル数（ＰＰＭ）に基づいて決定できる。例えば特定のＰＰＭ値又は範囲に対して特定の技術を使用でき、この技術は、１つの技術が画像内のシンボルの特定の特性を識別できるようになるまで（例えば個別に、順次に及び／又は同種のやり方で）実行できる。一部の実施形態では、ＰＰＭが知られていない場合がある。そのような場合に本明細書でさらに論じるように、１つ以上の技術を実行して、モジュールの格子の位置を特定してＰＰＭを決定することができる。例えばＰＰＭが最も高い画像で使用される技術を最初に試し、それから次に高いＰＰＭに対する技術を試し、画像内でシンボルの位置と向きが決定されるまで試すことができる。
【０１３２】
以下の例では、異なるＰＰＭ範囲に対して使用される様々な技術について説明する。この例は、例示のみを目的とするもので、本明細書に記載する技術の精神から逸脱することなく、異なる範囲、範囲の数、値などを使用できる。この非限定的な例によれば、モジュールの格子の関係は特定のＰＰＭ（例えば２ＰＰＭ）に至るまで、シンボル内の既知のパターンの位置を特定することによって決定できる。例えばデータマトリックスシンボルの場合、技術はシンボルの２つの側部に「Ｌ」パターンの位置を特定できる。「Ｌ」パターンの位置が特定されると、それらを通過する１Ｄスキャンに沿ってエッジを検出することによって、技術は他の２つの側部の各々にタイミングパターンを見出すことができる。そのような技術の一例は、データマトリックスシンボル体系のためのＩＳＯ／ＩＥＣ１６０２２規格に記載されている参照コードアルゴリズムであり、その全体が参照により本明細書に組み込まれる。この例はデータマトリックスシンボル体系のためのものであるが、他のシンボル体系のデコードは、シンボル内の既知の特徴の位置を特定することにより、同様の方法で実行できることを理解されたい。例えばＱＲコードはブルズアイ部分の位置を特定することにより、同様の方法で決定できるが、このことはＱＲコードシンボル体系のためのＩＳＯ／ＩＥＣ１８００４規格の「ＱＲコード２００５の参照デコードアルゴリズム」セクションに規定されており、これは参照によりその全体が本明細書に組み込まれる。格子サイズは、参照デコードアルゴリズムに記載されたやり方で決定することもできる。
【０１３３】
低解像度（例えば２ＰＰＭ〜１．２ＰＰＭ）では、この技術は既知のシンボルパターン（例えばデータマトリックスシンボルに対する「Ｌ」パターン）の位置を特定できないことがある。例えばシステムは、シンボルエッジなどシンボルのアスペクトがサンプリング不足のために既知のシンボルパターンの位置を特定できない場合がある。この技術は、シンボルの特徴の視認性を高めるために、最初にピクセル処理を実行して、画像のアップサンプリングなどのシンボル特徴を強化することができる。アップサンプリングは、例えばピクセル間の値を非線形的に補間することを含む。例えば多項式補間を使用できる。
【０１３４】
さらに低い解像度（例えば１．２ＰＰＭ未満など）の場合、画像の劣化（エイリアス）が激しいため、例えばピクセル処理を行っても特定のシンボルの特徴を検出することはほぼ不可能な場合がある。例えばシステムは既知の特徴及び／又はタイミングパターンを検出できない場合がある。より高いＰＰＭに関連する技術が失敗した場合、技術は（例えばサブピクセル精度で）シンボルの外側の長方形の位置を特定して、エッジを探すよりもグレースケールデジタル波形を用いて格子サイズを決定するように構成できる。例えばブロブ分析、一般化されたハフ変換などの視覚技術を使用して、２Ｄシンボルの境界（例えば図１９Ａ及び図１９Ｂに示すような長方形）の位置を特定することができる。一部の実施形態において、使用される技術は特定の視覚システムの照明条件に依存してよい。例えばより堅牢な方法を使用できる。例えば一部の実施形態では、システムはエッジを検出し、エッジを輪郭別にまとめ、結果として生じるポリラインの頂点の数を減らして（例えばレーマー・ダグラス・ポイカー・アルゴリズムなどの技術を用いて）、結果として得られる画像形状を分析してほぼ９０度の角度の４隅を持つ多角形を認識する。次に長方形の４辺に沿ったサブピクセルエッジの各グループに線を合わせることによって、長方形の４辺のサブピクセル位置を決定することができよう。
【０１３５】
一部の実施形態では、シンボルの格子サイズはシンボルをデコードする前に知られている。例えば格子サイズを固定し及び／又は格子サイズを以前の画像でトレーニングできる。例えばシステムは高解像度画像（例えば高ＰＰＭの画像）でトレーニングできる。実行時に、システムが非常に低解像度の画像から格子内の行数を簡単に判定できない場合でも、システムはシンボルがトレーニングされた格子と同じサイズを持つと仮定できる。
【０１３６】
格子サイズが知られていない場合、システムは自動的に各次元に沿って格子サイズを決定するように構成できる。例えば格子サイズは、１Ｄ投影を実行して長方形の反対側の２辺（例えば長方形の外側の境界から内側）をスキャンすることによって決定できる。一部の実施形態では、スキャンは例えば１Ｄバーコードがスキャンされるのとほぼ同じ方法で実行することができる。例えば１Ｄバーコードをスキャンするための技術は、上で説明されている。システムがタイミングパターンの開始位置と終了位置を決定すると、システムはそれらの間にある実用的な整数個のモジュールの各々に対応するすべてのタイミングパターンを簡単に試すことができる。この技術は、特定のＰＰＭ範囲など特定の状況でのみ使用できる。例えばＰＰＭがＰＰＭの上限（例えば上記の再試行で処理される１．２）を下回るＰＰＭを有するコード、デコードできる実用的なＰＰＭの下限（０．８など）を有するコードに使用できる。モジュールの最小数は、タイミングパターンの長さをＰＰＭの上限で除算した整数に最も近い整数に基づいて決定できるが（例えば上記の例を続けると１．２）、最大値は長さを下限で除算して得られる（再び例えば０．８）。このような制約を使用すると、例えば試行する可能なパターンの数を最小限に抑えることができる。
【０１３７】
一部の実施形態では、可能なモジュールサイズパターンのどれが最適であるかを決定するために、システムは各タイミングパターンについてサンプリング係数マトリックスを決定し、そのサンプリング係数マトリックスを使用してスコアを決定するように構成できる。最も高いスコアのパターンは、シンボルの当該次元について正しいモジュールサイズに対応するように決定できる。そのような技術は、１Ｄバーコードシンボルの文字のデコードに関して上述されている。
【０１３８】
システムがモジュールの格子関係を決定すると、システムはシンボルの既知の構造に対応するモジュール値を設定できる。図２３は、一部の実施形態による、２Ｄシンボルの既知の構造値で埋められた図２２Ａの例示的なモジュールの格子２２００を示している。この例ではモジュールの格子２２００の最も左の列２３０２はデータマトリックスシンボル体系の「Ｌ」の上部で埋められ、最下部の行２３０４は「Ｌ」の下部で埋められており、最も右の列２３０６と最も上の列２３０８はタイミングパターンで埋められている。この実施形態はデータマトリックスシンボル体系の既知の構造を投入するが、ＱＲコードシンボル体系のブルズアイパターンなど、デコードされている他のシンボル体系の既知の構造を投入することも可能であることを理解されたい。
【０１３９】
既知の構造は、シンボルの向きに基づいてモジュールの格子に埋めることができる。一部の実施形態では、システムは格子の向きを学習して、例えば図２３に示されているように「Ｌ」が左下にあるかどうか、或いはそれはシンボルの右上などの異なる位置にあるかどうかなど判定することができる。一部の実施形態では、トレーニング中に向きを判定することができる。一部の実施形態では、他の技術を使用して、既知の特徴が画像内のどこにあるか（例えば「Ｌ」がシンボルの左下にあるかどうか）を判定することができる。例えばシステムが既に格子サイズを知っているがシンボルの向きを知らない場合に、システムが格子を識別すると技術を使用して向きを識別するように構成できる。一部の実施形態では、システムは格子位置の下のピクセルを上側、下側、左側、及び右側に沿って平均し、最も低いグレー値を有する平均をＬパターンに対応させることができる。他の技術を用いて、シンボルの既知の特徴を識別して向きを判定することもできる。
【０１４０】
一部の実施形態では、既知の構造の幾つかは、同じ物理的シンボルから取得された以前の画像で高い信頼度で決定されたシンボルのデータモジュールであることができる。これらのモジュールは、高解像度の画像において決定されていることもあれば（例えばシンボルは時間と共にカメラから離れているため）、或いは低解像度画像において決定されていることもある（例えば本明細書に記載した１つ以上の技術を用いて）。低解像度については多くの場合にシンボルが何らかの形で首尾よくデコードされなかったが、特定のモジュールが高い確度で推定され、それらの高い確度で推定されたモジュールは現在の取得された画像ではピクセルの格子に対するモジュールの格子のずれが大きいため推定が難しいものである。
【０１４１】
ステップ２００６を参照すると、画像処理装置はモジュールの格子内のモジュールと画像内のピクセルとの間で決定された因果関係を用いて、第１のセットのモジュールを推定できる（例えば関連するピクセルとのオーバーラップの程度が高いモジュール）。図２４は、一部の実施形態による、モジュールとピクセルとの間の関係に基づいて推定された例示的なモジュールの格子２２００のモジュールを示す。図２４に示した推定は、モジュール２４０２などの推定された白のモジュールと、モジュール２４０４などの推定された黒のモジュールを含む。例えば画像処理装置は、非常に高度にオーバーラップする各モジュール、例えばサンプリング係数がオーバーラップ閾値を超えるモジュールを投入できる。例えばオーバーラップ閾値を９０％（又はその他のパーセンテージ）に設定して、システムはモジュールの領域の９０％が、すべて互いに９０％以内の価値を有する１つ以上のピクセルのセットとオーバーラップしている場合にモジュールを設定するように構成できる。閾値は９０％よりもはるかに小さくてもよい。例えばモジュールの値を決定するには、オーバーラップ率（例えばピクセルがモジュールによってオーバーラップされる割合）がわずか３０％のモジュールで十分な場合がある。例えば格子の精度に応じて、これより低い閾値を使用できる。一般的な問題として、この技術は論理を用いて、モジュールは１つの値を持ち、このモジュールが実質的にオーバーラップするピクセルがその正反対に対応する値を持つ可能性は低いという事実を活用することができる。例えばピクセルと顕著にオーバーラップする黒のモジュールは、グレー又は黒の（しかし白ではない）ピクセル値になり、ピクセルと顕著にオーバーラップする白のモジュールは、グレー又は白（しかし黒ではない）ピクセル値になる。したがって、前景の（最も暗い）ピクセルとある程度オーバーラップするモジュールは黒に設定でき、背景の（最も明るい）ピクセルとある程度オーバーラップするモジュールは白に設定できる。
【０１４２】
このステップで推定されるモジュールは、前景に近い及び／又は背景に近いピクセルに関連付けることができる。したがって一部の実施形態では、ステップ２００６で投入されたピクセルは、画像の均一な黒又は白の領域に関連付けられたモジュールであることができる。上述のように、ピクセルを「白」又は「黒」と呼ぶ場合、ピクセルが黒であるか白であるかの尺度は、画像の信号包絡線に関連して決定することができる。したがって一部の実施形態では、信号包絡線の最も暗いピクセルに関連付けられたすべての最も暗いモジュールが推定され、信号包絡線の最も明るいピクセルに関連付けられたすべての光モジュールが推定される。したがって、画像の信号包絡線を使用して、白と黒のピクセルの範囲を正規化して、信号包絡線の特定のピクセルの範囲を決定できる。
【０１４３】
ステップ２００６をさらに参照すると、画像処理装置が知られているモジュールを利用して他の未知のモジュールを決定することができる。図２５Ａ及び図２５Ｂは、一部の実施形態による、既知のモジュールに基づいて決定された例示的なモジュールの格子の追加モジュールの例を示す。図２５Ａは、ステップ２００４で決定されたモジュールを含む既知のモジュールに基づいて決定された新しい白のモジュール値（例えばモジュール値２５０２を含む）と新しい黒のモジュール値（例えばモジュール値２５０４を含む）を示す。同様に、図２５Ｂは、新しい白のモジュール値（例えばモジュール値２５５２を含む）と新しい黒のモジュール値（例えばモジュール値２５５４）を含む、決定された追加のモジュール値を示しており、これらは図２５Ａで決定された新しいモジュールに基づいて決定できる。画像処理装置は、（例えば信号包絡線の前景と背景との間の）範囲の中心にグレー値を有するピクセルを調べることができる。例えば画像処理装置は、ピクセルを特定の数のモジュールに関連付けるピクセルを決定することにより、追加のモジュールを推定することができる。（ａ）２個のモジュールのみによって大部分オーバーラップされ、（ｂ）既に決定されているモジュール値の１つを有するピクセルについて、画像処理装置はこれら２個のモジュールの他方のモジュールの値と既に知られているものとは反対の値に設定できる。
【０１４４】
新しいモジュール値は、ＰＰＭに基づく既知のモジュール値に基づいて決定できる。例えばＰＰＭが０．５を超えるコードの場合、最大９個のモジュールが与えられたピクセルとオーバーラップしている可能性がある。画像処理装置は配置された格子内で最も近い９個のモジュールの各々をオーバーラップ率によって、即ちピクセルが各モジュールによってどの程度オーバーラップされているかによってランク付けできる。画像処理装置は上位２つのパーセンテージ（最大のオーバーラップを有するモジュール）を加算して、合計が閾値（例えば閾値９０％）を超えているかどうかを判定できる。閾値が満たされ、これらの２個のモジュールのうち１つだけの値が既に決定されている場合、これら２個のモジュールのうち他方のモジュールの値を反対の値に設定できる。例えばグレーのモジュールと大いにオーバーラップしている１個のモジュールの値が白であれば、他方のモジュールの値は黒であると判定される（そうでなければ我々は明るいピクセルではなくグレーのピクセルを持つであろう）。この推定技術は、前述の例のバリエーションを含むことができる。例えば閾値は代わりに最大のオーバーラップを有する３個のモジュールと比較することができ、それらのうち２個のモジュールが既知で同じ値を持つ場合、他の１個のモジュールは反対の値を持たなければならない。したがってこの技術は既知のモジュールを使用し、モジュールとピクセルとの間のオーバーラップの程度と組み合わせて、新しいモジュールの値を推定することができる。
【０１４５】
例示的な例として、図２２Ｂに示されたサンプリングマトリックスを使用する場合、サンプリングマトリックスの係数は、各ピクセルが関連するモジュールによってオーバーラップされる程度を示すパーセンテージ（例えば関連モジュールによってカバーされている各ピクセルの部分のパーセンテージ）であることができる。このオーバーラップ率を用いることにより既に推定されたモジュール値（例えばシンボルの既知の特徴に関連付けられた値）を活用して、既知のモジュールの周辺にある他の隣接するモジュールを把握できる。例えば９個の係数を持つサンプリングマトリックスの場合、２個のモジュールのみによって大部分オーバーラップされているピクセルは、互いにほぼ等しく（例えばそれぞれ約０．５）、他の７つの係数（例えば残りは約０）よりはるかに大きい２つの係数を持つ。
【０１４６】
新しいモジュールが決定されると、画像処理装置は未知のモジュールの追加のセットを反復的に決定できる。この技術は、既知のモジュール値を活用することにより、本明細書で論じるようにピクセル／モジュールのオーバーラップに基づいて追加の値を把握することができる。最初は、未知の隣接するモジュールのグループが多数存在する可能性があるが、何らかのオーバーラップを持つピクセル／モジュールを反復的に検索することにより、モジュール値が決定されると、これらの決定された追加の値を使用して別のモュール値を埋めることができる。
【０１４７】
ステップ２００８及び２０１０を参照すると、（例えばステップ２００４及び２００６に関連して上述したように）これ以上モジュール値を推定できなくなると、画像処理装置は値の有効な組み合わせのセットをテストしてさらに未知のモジュールを決定できる。一部の実施形態では、現在のピクセルのセットが決定された今、残りのモジュールに対する検索スペースは削減されている。画像処理装置は、今では小さくなった残りの未知のモジュールのセットを（例えば反復的に）決定できる。
【０１４８】
一部の実施形態では、各モジュールについて、画像処理装置は、１つ以上の決定されたピクセルを含むモジュールパターンの残りの有効な組み合わせ（例えば２×２、３×３など）を試すことができる。例えば画像処理装置は、そのような推定ができなくなるまで、未知のモジュールを中心に持つ３×３モジュールパターンを試すことができる。例として３×３パターンを用いると、各モジュールには２９＝５１２の可能性がある。しかしながら多くの場合は最大の組み合わせよりはるかに少なくなる。例えば既に決定されている３×３パターンのモジュール値は、可能性の数を減らすことができる。別の例として、３×３の特定のモジュールに対する係数の一部は、モジュール値が計算にほとんど影響を与えないほど十分小さくすることができる。一部の実施形態では、可能なモジュールパターンを上で多値幅１Ｄシンボル体系について述べた要領で実行できよう。
【０１４９】
多くのモジュールが先行のステップで決定されていても、すべての可能性を再帰的にテストすることは依然として非常に時間がかかることがある。すべての組み合わせをテストすることも、例えば正しいパターンと誤ったパターンの一部との間の誤差を区別するのが難しい場合があるため、順調に進まないことがある。一部の実施形態では、サンプリングマトリックスを用いて追加のモジュールを決定することができる。例えばまだ決定されていないモジュールによってオーバーラップされる各ピクセルについて、１×９サンプリングマトリックスを用いてモジュール値を決定できる。システムは、１×９サンプリングマトリックスに、最も近い９個のバイナリ（０又は１）モジュール値（３×３モジュールパターンを表す）の未知のベクトルを乗算してモジュール値を決定できる。ピクセルサンプリングマトリックスは、画像内のすべてのピクセルを格子のすべてのモジュールに関連付ける、より大きい疎なサンプリングマトリックスの行のセクションであることができ、ここでマトリックス内の各エレメント（ｉ、ｊ）は、マトリックスの行ｉに対応するピクセルが、マトリックスの列ｊに対応するモジュールによってオーバーラップ又はカバーされるパーセンテージを表している。例えば３×３モジュールパターンの９個のモジュールに対するバイナリ値の可能な組み合わせごとに（最大５１２であるが、一般に既に決定されているモジュール値を考慮する場合はより少ない）、実際のピクセル値とサンプリング係数で乗算するときに生じるピクセル値との誤差を計算できる。許容される誤差閾値内にあるピクセル値誤差を生み出すいかなる組み合わせも可能な解と見なすことができるが、誤差閾値を超える誤差を生み出す組み合わせは考慮から除外される。誤差閾値を下回る組み合わせが１つしかない場合は、対応する３×３のモジュールパターンの未知のモジュール値を適宜設定できる。複数のパターンがある場合、誤差閾値を下回る誤差をもたらす各組み合わせが、当該ピクセルについて９ビット整数として記録される。
【０１５０】
一部の実施形態では、システムは最初に特定のピクセルを（例えばモジュール値をデコードする可能性がより高くなるように）処理するように構成することができる。例えばシステムは、既に決定されている多数のオーバーラップするモジュールを有するピクセルを最初に処理するように構成できる。例えばシステムは、最初にシンボルの外側の周囲（例えばモジュールが決定されるタイミングパターンとＬファインダパターンの近く）のピクセルを処理することに焦点を当てるように構成できる。そのような技術を用いると、反復するたびにモジュールの値は、シンボルの内側により次第に近づいて、及び／又は未知のモジュールの通常なら大きいスペースの内部に向かって決定される。
【０１５１】
格子の領域内のすべてのピクセルが考慮され、それらの９ビット整数が記録された後、除外プロセスによって追加のモジュールを決定できる。例えばシステムは、各ピクセルの残りの可能な組み合わせの整合性を、モジュールに関連付けられた隣接する各ピクセルの残りの可能な組み合わせに照らして調べることができる。例えばシステムは、あるピクセルに対する３×３モジュールパターンはその８個の隣接ピクセルと実質的にオーバーラップするという事実を利用して、特定のモジュールについて８個の隣接ピクセルの整合性を調べることができる。実際、システムは、特定のピクセルの可能な各組み合わせが、隣接するピクセルの特定の組み合わせとのみ互換性があるという事実を用いて正しい組み合わせを決定できる。
【０１５２】
一部の実施形態では、そのようなモジュールとその隣接するモジュールとの比較を用いて、無向制約グラフを生成することができる。各モジュールの３×３モジュールパターンの９個のモジュールに対するバイナリ値の保存された組み合わせを表す９ビット整数は、グラフのノードとして投入でき、隣接モジュールに対する整合的な９ビット整数の各々とのリンケージはグラフ内のエッジであることができる。モジュールの格子内のそれぞれ３×３モジュールパターンの間のオーバーラップ領域が同じバイナリ値の組み合わせを持つ場合、２つのノードは整合的であると見なされる。
【０１５３】
したがって残りのモジュールを決定することは、各ピクセルとその８個の隣接ピクセルの間のエッジの整合的でユニークなセットを決定することを含むことができ、その結果として唯一のノードだけが各ピクセルに接続されており、その他のノードとそれらのエッジは除外されている。システムは、ピクセルに対して選択されたノードを使用して、オーバーラップするモジュール値の正しい組み合わせを決定できる。システムは、グラフ内の特定のノードとそれらに関連付けられたエッジを除外することができる。例えばシステムは、少なくとも１つのエッジで隣接する各ピクセルの少なくとも１つのノードに接続されていないノードを除外できる。そのようなノードを除外すると、グラフ内の幾つかのノード、特に唯一のノードしか持たない別のピクセルに隣接するピクセルに対するノードを除外できる。このようなノードの除外は、グラフ内にそのようなノードがなくなるまで反復的に実行できる。上記のような特定のノードを除外しても、特定のピクセルに複数のノード（組み合わせ）がまだ残っている場合がある。一部の実施形態において、システムは特定の選択肢の除外をテストするように構成できる。例えばランダム選択によってピクセル（例えば２つの可能性しかないピクセル）の１つに対するノードを選択するようにシステムを構成できる。システムはそのピクセルに対する他のノードを除外し、前述のノード除外プロセスを繰り返すことができる。このような選択と除外を実行する結果として、他のピクセルを決定できるか、又は他のピクセルに対するすべてのノードを除外できる。後者の場合には、システムは選択したノードを除外すべきであると判定できる。さもなければシステムは、この１つのピクセル（及び／又は他のピクセル）に対して保存されているすべての可能な選択肢のモジュール値を計算することによってモジュールのデコードを試みて、デコードが成功するかどうかを判定するように構成できる。システムは、システムがシンボルを誤読するのを防ぐためにビルトインされた誤差修正機能に依存できる。シンボルがデコードされない場合、システムは選択したノードが正しくなかったことを再度認識し、それゆえノードは除外されるべきである。
【０１５４】
以下に、制約グラフを決定する例を示す。Ｇは、これまでに２Ｄシンボルについて推定されたモジュール値の（ｎ＋２）×（ｍ＋２）マトリックスとし、ここで、ｎはシンボルの行数、ｍは列数である。一部の実施形態では、マトリックス内に追加の行及び／又は列（例えば追加の２行及び追加の２列）があり、これをシンボルの（両）側で使用して、クワイエットゾーンのモジュール幅部分をエンコードできる。
【０１５５】
Ｇの各エレメントはｇ（ｋ、ｌ）と表示することができ、ここで、ｋは０〜ｎ＋１の範囲、ｌは０〜ｍ＋１の範囲、及びｇ（ｋ、ｌ）＝０（暗）、１（明）、又は？（不明）である。各モジュール（ｋ、ｌ）について、Ｓ（ｋ、ｌ）はモジュールｋ、ｌを中心とするＧの３×３サブマトリックスとする。Ｓ（ｋ、ｌ）の各エレメントはｓ（ｋ、ｌ、ｉ、ｊ）と表示され、ここで、ｉは行インデックスで、−１〜１の範囲、ｄｊは列インデックスで、−１〜１の範囲である。また、すべてのｉ及びｊに対してｓ（ｋ、ｌ、ｉ、ｊ）＝ｍ（ｋ＋ｌ、ｉ＋ｊ）であることに留意されたい。
【０１５６】
与えられたサブマトリックスＳ（ｋ、ｌ）に対して、可能なパターンの組み合わせは２ｕ通りあり、ここで、ｕ（ｋ、ｌ）は、Ｓ（ｋ、ｌ）の未知のエレメントの数である（ｓ（ｋ、ｌ、ｉ、ｊ）＝？）のｉ、ｊ座標の数）。各可能なパターンを３×３マトリックスＭ（ｋ、ｌ、ｚ）によって表示し、ここで、ｚは１からｕ（ｋ、ｌ）の範囲である。Ｍ（ｋ、ｌ、ｚ）の各エレメントは、ｍ（ｋ、ｌ、ｚ、ｉ、ｊ）＝０又は１で表示される（ｋ、ｌ、ｚ、ｉ、ｊ）が０又は１（既知）である場合、ｍ（ｋ、ｌ、ｚ、ｉ、ｊ）＝ｓ（ｋ、ｌ、ｚ、ｉ、ｊ）であることに留意されたい（例えば未知の値だけが変化できる場合）。
【０１５７】
システムは、各エレメントｍ（ｋ、ｌ、ｚ、ｉ、ｊ）をピクセルの格子と関係させるサンプリングマトリックスに従って、マトリックスパターンＭ（ｋ、ｌ、ｚ）の各々を画像ピクセルに照らして誤差閾値を下回っているかどうかを確認できる。
【０１５８】
任意のモジュール（ｋ、ｌ）からの８方向を、−１から１の範囲の行オフセットｄｒと−１から１の範囲の列オフセットｄｃで表示する（ｄｒとｄｃの両方が０であることはできない、さもないとそれはモジュール（ｋ、ｌ）からの方向ではなくなる）。言い換えれば、８方向は（ｄｒとｄｃ）＝（０、１）、（０、−１）、（１、０）、（−１、０）、（１、１）、（１、−１）、（−１、１）及び（−１、−１）である。
【０１５９】
誤差閾値を下回る各パターンＭ（ｋ、ｌ、ｚ）について、ノードＮ（ｋ、ｌ、ｚ）を確立する。次に、ノードを互いにリンクさせる無向グラフでエッジを確立できる。ノードの任意のペアＮ（ｋ、ｌ、ｚ１）及びＮ（ｋ＋ｄｒ、ｌ＋ｄｃ、ｚ２）について、ここで、（ｋ＋ｄｒ、ｌ＋ｄｃ）はモジュール（ｋ、ｌ）からの可能な８方向の１つにおける隣接するモジュールであり、ｚ１は１〜ｕ（ｋ、ｌ）の範囲であり、ｚ２は１〜ｕ（ｋ＋ｄｒ、ｌ＋ｄｃ）の範囲である場合、リンクＬ（ｋ、ｌ、ｚ１、ｋ＋ｄｒ、ｌ＋ｄｃ、ｚ２）は、オーバーラップするサブパターンが同じである場合のみ確立される。即ち、すべてのｉ＝ｉｍｉｎからｉｍａｘまで、及びすべてのｊ＝ｊｍｉｎからｊｍａｘまで、ｍ（ｋ、ｌ、ｚ１、ｉ、ｊ）＝ｍ（ｋ＋ｄｒ、ｌ＋ｄｃ、ｚ２、ｉ−ｄｒ、ｊ−ｄｃ）である場合。ここで、ｉｍｉｎ、ｉｍａｘ、ｊｍｉｎ、ｊｍａｘは、下記の方向に基づいて決定される：
ｄｒ≦０の場合はｉｍｉｎ＝−１、それ以外の場合は０
ｄｒ≧０の場合はｉｍａｘ＝１、それ以外の場合は０
ｄｃ≦０の場合はｊｍｉｎ＝−１、それ以外の場合は０
ｄｃ≧０の場合はｊｍａｘ＝１、それ以外の場合は０
ｄｒ＝０の場合はオーバーラップ領域は３×２、ｄｃ＝０の場合、オーバーラップ領域は２×３、対角線方向の場合、オーバーラップ領域は２×２である。
【０１６０】
全８方向の各々において少なくとも１つの他のノードにリンクできないノードは、それ以降の考慮から除外される。ノードが除外されるとそれぞれのリンクも除外され、それにより８方向の各々とリンクしていないより多くのノードが除外される、というように続く。この除外プロセスにより、各モジュール（ｌ、ｋ）に対して唯一のノードのみが残ることができ、したがってその時点ですべてのモジュール値が知られている。しかしながら１つ以上のモジュールに１つのノードしか残っていない場合でも、各モジュールで８方向で接続されている選択肢はそれぞれのモジュールで１つだけであろう。このような状況では、追加の検索を実行して（例えば残りのすべての組み合わせを片っ端から検索することによって）そのようなノードを決定できる。
【０１６１】
図３２は、一部の実施形態による無向制約グラフの一例を示す。モジュールの格子３２００の部分が幾つかの推定されたモジュールと、モジュール３２０２、３２０４及び３２０６として示された残りの３個の推定されるべきモジュールを含んでいる。ボックス３２０８は、モジュールの格子３２００の部分の中心を囲むモジュールを強調表示し、ボックス３２１０は、モジュールの格子３２００の部分において南東に隣接するモジュールを強調表示している。中心を囲むモジュールは３個の未知のモジュールを有するので、８通りの可能な組み合わせが残されている。特に中央に配置されたモジュールの可能な組み合わせは、可能な組み合わせ３２１２（３個の未知のモジュールはすべて白）、可能な組み合わせ３２１４（未知のモジュール３２０４は黒、未知のモジュール３２０２と３２０６は白）、可能な組み合わせ３２１６（未知のモジュール３２０２は黒、未知のモジュール３２０４と３２０６は白）、可能な組み合わせ３２１８（未知のモジュール３２０２と３２０４は黒、未知のモジュール３２０６は白）、可能な組み合わせ３２２０（未知のモジュール３２０２と３２０４は白、未知のモジュール３２０６は黒）、可能な組み合わせ３２２２（未知のモジュール３２０２は白、未知のモジュール３２０４と３２０６は黒）、可能な組み合わせ３２２４（未知のモジュール３２０２と３２０６は黒、未知のモジュール３２０４は白）、そして可能な組み合わせ３２２６（３個の未知のモジュールはすべて黒）として示されている。南東に位置するモジュールは未知のモジュールが２つしかないため、４通りの可能な組み合わせが残されている。南東に位置するモジュールに対する可能な組み合わせは、可能な組み合わせ３２３０（両モジュールは白）、可能な組み合わせ３２３２（未知のモジュール３２０４は黒、未知のモジュール３２０６は白）、可能な組み合わせ３２３４（未知のモジュール３２０４は白、未知のモジュール３２０６は黒）、及び可能な組み合わせ３２３６（未知の両モジュールは黒）として示されている。
【０１６２】
この例では、画像処理装置はモジュールの各セットの残っている組み合わせについて誤差テストを実行し、可能な組み合わせ３２１２、３２１６、３２１８、３２２４及び３２３４を除外する。可能な組み合わせ３２２０は、南東のモジュールに対して残っている組み合わせ（可能な組み合わせ３２３２又は３２３６）と一致する可能性がないので、画像処理装置は可能な組み合わせ３２２０を考慮から除外する。このような処理の後、可能な組み合わせ３２１４と可能な組み合わせ３２３２の間に第１の可能な一致３２４０が存在し、可能な組み合わせ３２２２と可能な組み合わせ３２３６の間に第２の可能な一致３２４２が存在し、可能な組み合わせ３２２６と可能な組み合わせ３２３６の間に第３の可能な一致３２４４が存在する。
【０１６３】
ステップ２０１２で、画像処理装置は、ステップ２００４−２０１０で決定された値を含む、決定されたモジュール値に基づいてシンボルをデコードする。この時点ですべてのモジュールが決定されている可能性はあるが、一部のモジュールの値がまだ未知である可能性もある（低解像度の画像など）。例えば決定されていないモジュールは、モジュールをまたぐピクセルが黒と白の値の間で前後に反転する場合など、均一なグレー領域のピクセルと関連付けることができる。しかしながらすべてのモジュールが完了していなくても、画像処理装置はシンボルをデコードできる。例えばほとんどの２Ｄシンボルは、リードソロモン誤差修正及び／又はやその他の誤差修正を使用するなどして、ある程度の冗長性でエンコードされる。別の例として、未知のモジュールは、しばしば誤って決定されたモジュールとしてより高い誤差率（例えば誤差率の２倍）が与えられる。したがってステップ２０１２では、画像処理装置は、たとえすべてのモジュールでなくてもシンボルをデコードするのに十分な数のモジュールをデコードすることができる。
【０１６４】
図２６−３１は、本明細書で論じる技術を適用して多値幅１Ｄバーコード（例えば図２に示す１Ｄバーコード）をデコードする例示的な例として用いられる。図２６は、一部の実施形態による多値幅１Ｄシンボルの例示的な１Ｄ画像２６００を示す。１Ｄ画像２６００は上記と同様のやり方で、図２１の画像２１００について上述したように取得された２Ｄ画像を通るスキャンラインに沿ってサンプリングすることによって取得できる。画像２１００のように画像２６００は、各ピクセルの暗さを示すピクセル値と関連するピクセルのセット（例えばピクセル２６０２、２６０４）を含む。ピクセル２６０２、２６０４は（例えばレーザスキャナを使用して抽出された）ピクセルと呼ばれるのに対し、一部の実施形態では各ピクセルは上述したサンプルであってよい。そのような実施形態では、画像２６００はサンプルを計算するために処理される。本明細書で上述し、さらに以下に論じるように、画像信号の包絡線を使用して１Ｄバーコードをデコードするために使用することができる。
【０１６５】
図２０で述べた方法２０００は、多値幅の１Ｄシンボルをデコードするために使用できる。図２７は、一部の実施形態による、図２６からの画像２６００の上部に重ね合わせた多値幅１Ｄシンボルに対する例示的なモジュールの格子２７００を示す。ステップ２００４を参照すると、２Ｄバーコードと同様に、システムはモジュールの格子２７００内のモジュールと画像２６００のピクセルとの間の空間マッピングを決定する。例えばモジュールの格子２７００は、画像２６００のピクセルにマッピングするためにシフト及び／又はスケーリングする必要がある場合がある。モジュールの格子２７００と画像２６００のピクセルの格子との間の関係は、各モジュールがピクセルの各々にどのように影響するかを反映することができる。図２８は、一部の実施形態による、モジュールの格子２７００のモジュールと画像２６００のピクセルとの間のオーバーラップの程度の例示的な図である。太い実線の矢印（例えば矢印２８０２、２８０４及び２８０６）はオーバーラップの大きい程度を示し、細い点線の矢印（例えば矢印２８０８、２８１０）はオーバーラップの小さい程度を示す。本明細書で論じるように、上記の説明は、サンプル（例えば画像２６００内のピクセルの１次元画像（又は単一の行））の１Ｄ信号に対して、１次元格子（例えば１次元ピクセルの格子２７００）の位置を特定する技術を提供する。
【０１６６】
この技術は、最初に画像のピクセルの格子に対してシンボルのモジュールの格子の位置を特定することを含むことができる。上で説明したように、個々の文字を個別に調べる必要はなく任意のモジュールパターンを推定できる。１Ｄシンボルの場合、格子の位置は、例えば区切り文字（１Ｄシンボルの左端と右端の文字など）及び／又は文字の既知の態様（例えば文字のバーやスペースの終了及び／又は開始）などの任意のモジュールパターンを使用して特定できる。図２９は、一部の実施形態による、任意のモジュールパターンについてモジュールの格子２７００のモジュールを推定する例を示す。モジュール２９０２及び２９０６はスペース（白のモジュール）として推定され、モジュール２９０４及び２９０８はバー（黒のモジュール）として推定される。例えばコード１２８シンボルの場合、文字はバー（例えばバー２９０４など）で始まり、スペース（例えばスペース２９０６）で終わり、先行文字はスペース（例えばスペース２９０２）で終わり、後続文字はバー（例えばバー２９０８）で始まる。
【０１６７】
図３０Ａ及び３０Ｂは、一部の実施形態による、モジュールとピクセルとの間の関係に基づいて推定された例示的なモジュールの格子２７００のモジュールを示す。図２０のステップ２００６を参照して、画像処理装置は、モジュールの格子内のモジュールと画像内のピクセルとの間で決定された因果関係を用いて、このステップが２Ｄバーコードに対して実行されるのと同じ要領で、モジュールの第１セット（例えば関連ピクセルと高度にオーバーラップするモジュール）を推定することができる。図３０Ａに示す推定は、追加で（例えばステップ２００４に関連して推定される任意のモジュールのパターンに加えて）推定された白のモジュール３００２、３００４及び３００６を含み、図３０Ｂは追加で推定された黒のモジュール３００８及び３０１０を含む。例えば２Ｄバーコードに関連して説明したように、画像処理装置は、サンプリング係数がオーバーラップ閾値を超えるモジュールなど、非常に高度に（例えば９０％、３０％など）にオーバーラップする各モジュールを投入できる。図３０Ａは、例としてオーバーラップを矢印３０５０、３０５２及び３０５４で示す。上述したように、この技術は論理を用いて、モジュールは１つの値を持ち、このモジュールが実質的にオーバーラップするピクセルがその正反対に対応する値を持つ可能性は低いという事実を活用することができる。したがって前景の（最も暗い）ピクセルとある程度オーバーラップするモジュールは黒に設定でき（例えばモジュール３００８、３０１０）、背景の（最も明るい）ピクセルとある程度オーバーラップするモジュールは白に設定できる（例えばモジュール３００２、３００４及び３００６）。上述したように、ピクセルが「白」又は「黒」であると呼ぶ場合、ピクセルが黒であるか白であるかの尺度は、画像の信号包絡線に関連して決定することができる（例えば画像の信号包絡線を使用して白と黒のピクセルの範囲を正規化することにより信号包絡線に対する特定のピクセルの範囲を決定できる）。
【０１６８】
図３１は、一部の実施形態による、既知のモジュールに基づいて決定されたモジュールの格子２７００内の追加のモジュールを示す。この技術は、以前のステップでデコードされたモジュールの第１のセットを活用して、モジュールの第２のセットをデコードできる。図２０のステップ２００８及び２０１０を参照すると、（例えばステップ２００４及び２００６に関連して上述したように）これ以上モジュール値を推定できなくなると、画像処理装置は値の有効な組み合わせのセットをテストしてさらに未知のモジュールを決定できる。一部の実施形態では、現在のピクセルのセットが決定された今、残りのモジュールに対する検索スペースは削減されている。画像処理装置は、今では小さくなった残りの未知のモジュールのセットを（例えば反復的に）決定できる。図３１に示すように、モジュール３１０２、３１０４、３１０６はこのステップで推定される。この例では、以下にさらに一般的に説明するように、論理を用いて残りのモジュールを決定できる。例えばこの例におけるモジュール３１０２、３１０４及び３１０６は、関連するピクセル３１５０及び３１５２の均一なグレー値を生成するために交互に入れ替わる。モジュール３１０６は、隣接する黒のモジュール３００８と共に関連する均一なグレーのピクセル値３１５４を生み出すために白（スペース）である。モジュール３１０８は関連する明るいグレーのピクセル値３１５６を生み出すためにスペースである。
【０１６９】
一部の実施形態で、画像処理装置は各モジュールについて、１つ以上の決定されたピクセルを含むモジュールパターンの残りの有効な組み合わせ（例えば１×２、１×３など）を試すことができる。例えば画像処理装置は、そのような推定がそれ以上できなくなるまで、中心に未知のモジュールを持つ１×３モジュールパターンを試すことができる。例として１×３パターンを使用すると、各モジュールには２３＝８の可能性がある。さらに、２Ｄバーコードについて前述したように、既知のモジュールによって可能性の数は減少するため、可能性の数を減らすことができる。
【０１７０】
上記のように、多くのモジュールが以前のステップで決定されたとしても、すべての可能性を再帰的にテストすることは依然として非常に時間がかかり及び／又はよく機能しないことがある。一部の実施形態では、サンプリングマトリックスを用いて追加のモジュールを決定することができる。例えばまだ決定されていないモジュールによってオーバーラップされている各ピクセルについて、１×３サンプリングマトリックスを用いてモジュール値を決定できる。システムは１×３サンプリングマトリックスに、最も近い３個のバイナリ（０又は１）モジュール値の未知のベクトルを乗算することによってモジュール値を決定できる。上述したように、バイナリ値の可能な各組み合わせについて、実際のピクセル値とサンプリング係数を乗算したときに生じるピクセル値との誤差を計算できる。許容誤差の閾値内にあるピクセル値の誤差を生じる組み合わせのいずれかを可能な解として見なすことができる一方、誤差閾値を超える誤差を生じるものは考慮から除外される。誤差閾値を下回るパターンが１つしかない場合、組み合わせの未知のモジュール値を適当に設定できる。さもなければ、可能な解は３ビット整数として記録できる。
【０１７１】
上述のように、一部の実施形態では、システムは、最初に特定のピクセルを（例えばモジュール値をデコードする可能性がより高くなるように）処理するように構成することができる。例えばシステムは、既に決定されている多数のオーバーラップするモジュールを有するピクセルを最初に処理するように構成できる。例えばシステムは、最初にシンボルの外側の周囲（例えば上述したようにモジュールが決定されている区切り文字及び／又は文字の開始／終了モジュールの近く）のピクセルを処理することに焦点を当てるように構成できる。そのような技術を用いると、反復するたびにモジュールの値は、シンボルの内側により次第に近づいて、及び／又は未知のモジュールの通常なら大きいスペースの内部に向かって決定される。
【０１７２】
格子の領域内のすべてのピクセルが考慮され、それらの３ビット整数が記録された後、除外プロセスによって追加のモジュールを決定できる。例えばシステムは、各ピクセルの残りの可能な組み合わせの整合性を、モジュールに関連付けられた隣接する各ピクセルの残りの可能な組み合わせに照らして調べることができる。例えばシステムは、あるピクセルに対する１×３モジュールパターンはその２つの隣接ピクセルと実質的にオーバーラップするという事実を利用して、特定のモジュールについて２つの隣接ピクセルの整合性を調べることができる。実際、システムは、特定のピクセルの可能な各組み合わせが、隣接するピクセルの特定の組み合わせとのみ互換性があるという事実を用いて正しい組み合わせを決定できる。実際、システムは、特定のピクセルの可能な各組み合わせが、隣接するピクセルの特定の組み合わせとのみ互換性があるという事実を用いて正しい組み合わせを決定できる。
【０１７３】
２Ｄに関連して上述したように、一部の実施形態では、モジュールとその隣接するモジュールとの比較を用いて、無向制約グラフを生成することができる。各モジュールの１×３モジュールパターンの３個のモジュールに対するバイナリ値の保存された組み合わせを表す３ビット整数は、グラフのノードとして投入でき、隣接モジュールに対する整合的な３ビット整数の各々とのリンケージはグラフ内のエッジであることができる。モジュールの格子内のそれぞれ１×３モジュールパターンの間のオーバーラップ領域が同じバイナリ値の組み合わせを持つ場合、２つのノードは整合的であると見なされる。したがって残りのモジュールを決定することは、各ピクセルとその２個の隣接ピクセルの間のエッジの整合的でユニークなセットを決定することを含むことができ、その結果として唯一のノードだけが各ピクセルに接続されており、その他のノードとそれらのエッジは除外されている。システムは、ピクセルに対して選択されたノードを使用して、オーバーラップするモジュール値の正しい組み合わせを決定できる。上述したようにシステムは、グラフ内の特定のノードとそれらに関連付けられたエッジを除外することができる。
【０１７４】
本明細書に記載した原理に従って動作する技術は、任意の適当なやり方で実装できる。上記のフローチャートの処理ブロック及び決定ブロックは、これらの種々のプロセスを実行するアルゴリズムに含めることができるステップと動作を表している。これらのプロセスから導出されるアルゴリズムは、１以上の専用又は多目的プロセッサと統合されてその動作を指示するソフトウェアとして実装でき、デジタル信号処理（ＤＳＰ）回路又は特定用途向け集積回路（ＡＳＩＣ）などの機能的に等価な回路として実装でき、或いはその他の適当なやり方で実装されてよい。本明細書に含まれるフローチャートは、何らかの特定の回路又は何らかの特定のプログラミング言語又はプログラミング言語の種類の構文や動作を示していないことを理解されたい。むしろ、これらのフローチャートは、当業者が本明細書に記載するタイプの技術を実行する特定の装置の処理を行うための回路の製造、又はコンピュータソフトウェアアルゴリズムの実装に使用できる機能情報を例示するものである。本明細書で別途明記しない限り、各フローチャートに記載されたステップ及び／又は動作の特定のシーケンスは、実装できるアルゴリズムの例示にすぎず、本明細書に記載された原理の実装及び実施形態において変更できるものであることも理解されたい。
【０１７５】
したがって一部の実施形態において本明細書に記載する技術は、アプリケーションソフトウェア、システムソフトウェア、ファームウェア、ミドルウェア、埋め込みコード、又は他の任意の適切なタイプのコンピュータコードを含むソフトウェアとして実装されるコンピュータ実行可能命令において具体化できる。そのようなコンピュータ実行可能命令は、幾つかの適切なプログラミング言語及び／又はプログラミングツール若しくはスクリプトツールのいずれかを使用して記述でき、フレームワーク又は仮想マシンで実行される実行可能なマシン言語コード又は中間コードとしてコンパイルされてもよい。
【０１７６】
本明細書に記載された技術がコンピュータ実行可能命令として具体化される場合、これらのコンピュータ実行可能命令は、多くの利便機能を含む任意の適当なやり方で実装されてよく、それぞれがこれらの技術に従って動作するアルゴリズムの実行を完了するための１以上の動作を提供する。しかしながらインスタンス化された「利便機能」はコンピュータシステムの構造的要素であり、１以上のコンピュータと統合されて実行されると１以上のコンピュータに特定の操作上の役割を実行させる。利便機能は、ソフトウェア要素の一部又は全体であってよい。例えば利便機能はプロセスの機能として、又は個別のプロセスとして、又は他の処理の適当な単位として実装されてよい。本明細書に記載された技術が複数の利便機能として実装される場合、各利便機能は独自の方法で実装されてよく、すべて同じ方法で実装する必要はない。さらに、これらの利便機能は必要に応じてパラレル及び／又はシリアルに実行されてよく、及びそれらが実行されているコンピュータの共有メモリを使用して、メッセージ受け渡しプロトコルを用いるか又はその他の適当な方法で互いの間で情報を受け渡すことができる。
【０１７７】
一般に、利便機能は、特定のタスクを実行し、又は特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。通常、利便機能の機能性は、それらが動作するシステムにおいて所望する通りに組み合わせたり配分したりできる。一部の実装形態では、本明細書の技術を実行する１以上の利便機能が一緒になって完全なソフトウェアパッケージを形成できる。これらの利便機能は、代替実施形態ではソフトウェアプログラムアプリケーションを実装するために、他の無関係な利便機能及び／又はプロセスと相互作用するように適合されてよい。
【０１７８】
本明細書では、１以上のタスクを実行するために、幾つかの例示的な利便機能が記載された。しかしながら記載された利便機能及びタスクの分割は、本明細書で説明された例示的な技術を実装できる利便機能のタイプを例示するものにすぎず、実施形態は特定の数、分割又はタイプの利便機能に限定されないことを理解されたい。一部の実装においては、すべての機能性が単一の利便機能に実装されてよい。また、一部の実装では本明細書に記載された利便機能の一部を他の利便機能と一緒に又は別個に（即ち単一のユニット又は別個のユニットとして）実装でき、或いはこれらの利便機能の一部が実装されないこともある。
【０１７９】
本明細書に記載した技術を実装するコンピュータ実行可能命令は（１以上の利便機能として又は他のやり方で実装される場合）、一部の実施形態では１以上のコンピュータ可読媒体でエンコードされて媒体に機能性を提供できる。コンピュータ可読媒体は、ハードディスクドライブなどの磁気媒体、コンパクトディスク（ＣＤ）やデジタル多用途ディスク（ＤＶＤ）などの光学媒体、永続的又は非永続的なソリッドステートメモリ（フラッシュメモリ、磁気ＲＡＭなど）、又はその他の適当な記憶媒体を含む。そのようなコンピュータ可読媒体は、任意の適当なやり方で実装されてよい。本明細書で用いる「コンピュータ可読媒体」（「コンピュータ可読記憶媒体」とも呼ばれる）は、有形の記憶媒体を指す。有形の記憶媒体は非一時的であり、少なくとも１つの物理的構造的要素を有する。本明細書で用いる「コンピュータ可読媒体」では、少なくとも１つの物理的構造的要素は、情報が埋め込まれた媒体を作り出すプロセス、その媒体に情報を記録するプロセス、又は情報を含んだ媒体をエンコードするプロセス中に何らかの方法で変更できる少なくとも１つの物理的特性を有する。例えば記録プロセス中に、コンピュータ可読媒体の物理的構造の一部の磁化状態を変更できる。
【０１８０】
さらに、上述した一部の技術は、これらの技術によって使用するために何らかの方法で情報（例えばデータ及び／又は命令）を保存する動作を含む。これらの技術の一部の実装−技術がコンピュータ実行可能命令として実現される実装など−では、情報はコンピュータ可読記憶媒体にエンコードされる。本明細書で特定の構造がこの情報を保存するための有利なフォーマットとして記載されている場合、記憶媒体にエンコードされるときにこれらの構造を使用して情報の物理的編成を与えることができる。次にこれらの有利な構造は、情報と相互作用する１以上のプロセッサの動作に影響を与えることにより、例えばプロセッサによって実行されるコンピュータ操作の効率を上げることによって記憶媒体に機能性を付与できる。
【０１８１】
技術をコンピュータ実行可能命令として具体化できる一部の実装（すべての実装ではない）において、これらの命令は任意の適当なコンピュータシステムで動作する１以上の適当なコンピューティングデバイスで実行でき、又は１以上のコンピューティングデバイス（又は１以上のコンピューティングデバイスの１以上のプロセッサ）はコンピュータ実行可能命令を実行するようにプログラムできる。コンピューティングデバイス又はプロセッサは、命令がコンピューティングデバイス又はプロセッサにアクセス可能なやり方でデータストアなど（例えばオンチップキャッシュ又は命令レジスタ、バスを介してアクセス可能なコンピュータ可読記憶媒体、１以上のネットワークを介してアクセス可能な及びデバイス／プロセッサによってアクセス可能なコンピュータ可読記憶媒体など）に保存された場合に命令を実行するようにプログラムできる。これらのコンピュータ実行可能命令を含む利便機能は、単一の多目的プログラム可能なデジタルコンピューティングデバイス、処理能力を共有して本明細書に記載した技術を共同で実行する２以上の多目的コンピューティングデバイスの協調システム、本明細書に記載された技術を実行するためだけの単一のコンピューティングデバイス又はコンピューティングデバイスの協調システム（共同設置又は地理的に分散）、本明細書に記載した技術を実行するための１以上のフィールドプログラマブルゲートアレイ（ＦＰＧＡ）、或いはその他の任意の適当なシステムと統合されてその動作を指示することができる。
【０１８２】
コンピューティングデバイスは、少なくとも１つのプロセッサ、ネットワークアダプタ、及びコンピュータ可読記憶媒体を含むことができる。コンピューティングデバイスは、例えばデスクトップ又はラップトップパーソナルコンピュータ、パーソナルデジタルアシスタント（ＰＤＡ）、スマートフォン、携帯電話、サーバ、又は他の任意の適当なコンピューティングデバイスであってよい。ネットワークアダプタは、任意の適当なコンピューティングネットワークを介して他の任意の適当なコンピューティングデバイスと有線及び／又は無線で通信するために、コンピューティングデバイスを有効にする任意の適当なハードウェア及び／又はソフトウェアであってよい。コンピューティングネットワークは、ワイヤレスアクセスポイント、スイッチ、ルータ、ゲートウェイ、及び／又はその他のネットワーク機器、並びにインターネットを含め２以上のコンピュータ間でデータを交換するための適当な有線及び／又は無線通信媒体を含んでよい。コンピュータ可読媒体は、処理されるデータ及び／又はプロセッサによって実行される命令を保存するように適合できる。プロセッサは、データの処理や命令の実行を可能にする。データ及び命令は、コンピュータ可読記憶媒体に保存されてよい。
【０１８３】
コンピューティングデバイスは、さらに入出力装置を含め１以上のコンポーネントと周辺機器を有してよい。これらのデバイスは、とりわけユーザインタフェースを提供するために使用できる。ユーザインタフェースを提供するために使用できる出力デバイスの例は、出力を視覚的に表示するためのプリンタ又はディスプレイ画面、及び出力を聴覚的に表示するためのスピーカ又はその他の音声生成装置を含む。ユーザインタフェースに使用できる入力デバイスの例は、キーボード、マウスやタッチパッドなどのポインティングデバイス、及びデジタル化タブレットを含む。別の例として、コンピューティングデバイスは、音声認識又は他の可聴形式で入力情報を受け取ることができる。
【０１８４】
記載された実施形態は、技術が回路及び／又はコンピュータ実行可能命令で実装されたものである。一部の実施形態は、少なくとも１つの例が提供された方法の形態であってもよいことを理解されたい。方法の一部として実行される動作は、任意の適切なやり方で順序付けることができる。したがって例示の実施形態では連続した動作として示されているが、実施形態は幾つかの動作を同時に実行することも含めて、動作が例示されたものとは異なる順序で実行されるように構成されてよい。
【０１８５】
上記の実施形態の種々の態様は、単独でも、組み合わせて、又は上述した実施形態で具体的に論じられていない様々な配置で使用することができ、それゆえその応用において上記の説明に記され又は図面に示された構成要素の詳細及び配置に限定されるものではない。例えばある実施形態に記載された態様は、他の実施形態に記載された態様と任意のやり方で組み合わせることができる。
【０１８６】
特許請求の範囲でクレーム要素を修正するために「第１」、「第２」、「第３」などの序数詞を使用することは、それ自体はあるクレーム要素の別のクレーム要素に対する優先、優位又は順位、或いは方法の動作が実行される時間的順序を意味するものではなく、単にクレーム要素を区別するために特定の名前を持つクレーム要素を（序数詞の使用を除いて）同じ名前を持つ別の要素と区別するためのラベルとしてのみ使用される。
【０１８７】
また、本明細書で使用される語法及び用語は説明を目的とするものであり、制限と見なされるべきではない。本明細書における「含む」、「有する」、「持つ」、「包含する」、「伴う」、及びそれらの変形の使用は、その後に列挙される項目、及びその同等物、並びに追加項目を網羅することを意味する。
【０１８８】
本明細書では、「例示的」という言葉は、例、事例又は例示としての役割を果たすことを意味するものとして使用される。それゆえ本明細書に例示として記載される実施形態、実装、プロセス、特徴などは、例示的な例として理解されるべきであり、特に明記しない限り選好される例若しくは有利な例として理解されるべきではない。
【０１８９】
以上、少なくとも１つの実施形態の幾つかの態様を説明したが、当業者には様々な変更、修正及び改善が容易に想到し得るものであることを理解されたい。そのような変更、修正及び改善は本開示の一部であることが意図されており、本明細書に記載する原理の精神及び範囲内にあることが意図されている。したがって上記の説明及び図面は例示にすぎない。
【図１Ａ】
2020107325.tif 000003
【図１Ｂ】
2020107325.tif 000004
【図２】
2020107325.tif 000005
【図３】
2020107325.tif 000006
【図４】
2020107325.tif 000007
【図５】
2020107325.tif 000008
【図６】
2020107325.tif 000009
【図７】
2020107325.tif 000010
【図８】
2020107325.tif 000011
【図９】
2020107325.tif 000012
【図１０】
2020107325.tif 000013
【図１１】
2020107325.tif 000014
【図１２】
2020107325.tif 000015
【図１３Ａ】
2020107325.tif 000016
【図１３Ｂ】
2020107325.tif 000017
【図１４Ａ】
2020107325.tif 000018
【図１４Ｂ】
2020107325.tif 000019
【図１４Ｃ】
2020107325.tif 000020
【図１５】
2020107325.tif 000021
【図１６】
2020107325.tif 000022
【図１７】
2020107325.tif 000023
【図１８】
2020107325.tif 000024
【図１９Ａ】
2020107325.tif 000025
【図１９Ｂ】
2020107325.tif 000026
【図２０】
2020107325.tif 000027
【図２１】
2020107325.tif 000028
【図２２Ａ】
2020107325.tif 000029
【図２２Ｂ】
2020107325.tif 000030
【図２３】
2020107325.tif 000031
【図２４】
2020107325.tif 000032
【図２５Ａ】
2020107325.tif 000033
【図２５Ｂ】
2020107325.tif 000034
【図２６】
2020107325.tif 000035
【図２７】
2020107325.tif 000036
【図２８】
2020107325.tif 000037
【図２９】
2020107325.tif 000038
【図３０Ａ】
2020107325.tif 000039
【図３０Ｂ】
2020107325.tif 000040
【図３１】
2020107325.tif 000041
【図３２】
2020107325.tif 000042
【外国語明細書】
2020107325000001.pdf