説明

印刷メディア特徴のエンコード及びデコード

複数の特徴、例えば、変動する幅のバー及びスペースを含むコード、例えば、バーコードをエンコード及びデコードする手法が開示される。本発明の1つの態様において、単一のシンボルを使用する任意の長さのコードへ情報をエンコードする手法が提供される。別個の値が2つより多い特徴を有するコードを使用して情報をエンコード及びデコードする手法も提供される。

【発明の詳細な説明】
【技術分野】
【0001】
[関連出願の相互参照]
本出願は、「Thermal Imaging System」と題する2004年10月5日に許可された同一出願人の米国特許第6,801,233B2号に関し、参照して本明細書に組み入れられる。
【0002】
[発明の分野]
本発明は、印刷されたコードに関し、更に具体的には、印刷メディアの上で使用され、そのようなメディアの固有性を識別するコードに関する。
【背景技術】
【0003】
従来のディジタル・プリンタは、極めて多様な固有性を有する印刷メディアの上に印刷する。異なる印刷メディアの間で変動する固有性の例は、寸法、製造者、化学的組成、及び感度を含む。多くの場合、プリンタが印刷しているとき、現在の印刷メディアの具体的固有性をプリンタが考慮することは有用であり、プリンタはそのような固有性に基づいて印刷出力の品質を最適化してよい。
【0004】
プリンタの使用者は、現在の印刷メディア固有性をプリンタへ手作業的に通知してよいが(例えば、ハードウェア制御パネル上の設定を選択するか、ソフトウェア構成プログラムなどによって)、そのような固有性を記述した情報を印刷メディアそれ自身の上にエンコードする様々な手法が周知である。例えば、そのような情報(本明細書では、「印刷メディア固有性情報」と呼ぶ)は、メディアの上に印刷されたコード、メディアの中に組み込まれた磁気材料、又はメディア上の化学的基質の中にエンコードされてよい。そのようなシステムにおいて、プリンタは、エンコードされた情報を印刷メディアから読み取るデバイスを備えている。プリンタは情報をデコードし、印刷メディアの固有性を識別する。次に、プリンタは適切なステップを取って、印刷メディアの識別された固有性に基づき印刷出力を最適化してよい。
【0005】
例えば、幾つかのシステムにおいて、印刷メディア固有性情報は、メディア上に印刷されるバーコードの中にエンコードされる。対応するプリンタはバーコード・リーダを含み、このリーダは、バーコードがリーダの下を通過するときに印刷メディアからバーコードを読み取る。
【0006】
そのような従来のシステムを説明する前に、従来のバーコードを詳細に説明する。一般的に、バーコードは黒いバーとスペースの配列であり、情報をエンコードするために使用される。そのような情報は、典型的には特定の製品に関連し、典型的には製品又は製品包装の上に印刷される。バーコードの中に情報をエンコードするには、多くの異なるシステムが存在する。「バーコード・システム」の用語は、本明細書では、バーコードを使用して情報を表す任意の具体的システムを意味する。製品包装の上で殆ど全世界的に印刷される統一商品コード(UPC)は、おそらくバーコード・システムの最も知られた例である。
【0007】
図1を参照すると、従来のバーコード100の概略的な例が示される。バーコード100は様々な幅の垂直黒バー(バー)102a〜102iの列を含み、これらのバーは様々な幅の白スペース(「スペース」)104a〜104hによって分離される。「特徴」の用語は、本明細書では、バーコード内の単一のバー又は単一のスペースのいずれかを意味する。したがって、バー102a〜102iの各々、及びスペース104a〜104hの各々は、特徴である。
【0008】
バーコード内の各々の特徴は、典型的には、幅よりも高さが著しい。「特徴幅」の用語は、本明細書では、特徴(例えば、バー)の全ての中心を接続する次元106aにおける単一の特徴の幅を意味する。典型的には、バーコード・システムは、システム内のバーコード内の全ての特徴に最小特徴幅(例えば、7.5ミル)を課している。最小特徴幅は、本明細書では、「単位」と呼ばれる。単一のバーコード内の異なる特徴は、異なる幅を有してよい。例えば、特徴102eは、特徴102dの2倍の幅である。特徴102dの幅が最小特徴幅であれば、特徴102dは「単一幅」又は「細い」特徴と呼んでよく、特徴102eは「2倍幅」又は「太い」特徴と呼んでよい。
【0009】
多くのバーコード・システムは、各々の特徴が最小特徴幅の整数倍であることを要求する。例えば、図1で示される例示的バーコード100において、各々の特徴の幅は、最小特徴幅に等しいか、正確に最小特徴幅の2倍である。しかし、全ての特徴幅が最小特徴(単位)幅の整数倍であることを、全てのシステムが要求するわけではない。2つだけの別個の幅を有するバーコードにおいて、幅特徴は、典型的には、細い特徴の2〜2.5倍の幅である。一般的に、単一のバーコード内の特徴幅は、特徴が首尾一貫して正しくデコード可能である限り、どのように変動してもよい。
【0010】
「組み合わせ」の用語は、本明細書において、所与の幅分布を使用して有限個の特徴を特異に、また一意に順序づけることを意味する。「幅分布」の用語は、下記で定義される。図1で示されるバーコード100は、組み合わせの例である。本明細書で使用される「シンボル」の用語は、「組み合わせ」と同義である。
【0011】
典型的には、バーコード・システムは、組み合わせの集合と、対応する値、例えば、文字及び/又は数字との間の、マッピングを定義する。そのようなマッピングは、値を、対応する組み合わせへエンコードし、組み合わせを、対応する値へデコードするために使用されてよい。バーコード・システムは、典型的には、システム内のシンボルに制約の集合、例えば、固定されたシンボル長(単位で測定される)、固定された特徴数、又はこれらの双方を課している。バーコード・システムの「シンボル集合」とは、バーコード・システム内で定義された全てのシンボルを意味する。典型的には、シンボル集合は、適用可能な制約の集合、例えば、シンボル長を満足させる全ての可能なシンボルを含む。
【0012】
「バーコード」の用語は、典型的には、同じシンボル集合の元である1つ又は複数のシンボル(即ち、単一のバーコード・システムに従って定義されたシンボル)の列を意味する。「スタートコード」の用語は、シンボル集合の元ではなくバーコードの開始を定める特徴の特別の列を意味する。特定のバーコード列の始まりで起こるスタートコードは、バーコード・システム及びバーコードが含んでよい特別のコーディング特徴を識別する。同様に、「ストップコード」の用語は、シンボル集合の元ではなくバーコードの終わりを定める特徴の特別の列を意味する。したがって、従来のバーコードは、典型的には、スタートコード、それに続く1つ又は複数のシンボル、それに続くストップコードを含む。スタートコード及びストップコードは、バーコード・デコーダがバーコードを正しい方向に走査して正しいデコード方法を使用できるようにする。
【0013】
前述したように、バーコード・シンボルは、相互に幅が異なり得る特徴の列を含む。しかし、幾つかのバーコード・システムにおいて、各々のシンボルは、固定数の既定幅を有する固定数の特徴を含むように制約される。例えば、バーコード・システムは、各々のシンボルが、単一幅の4つの特徴、2倍幅の3つの特徴、及び3倍幅の1つの特徴を含み、全部で13単位の幅を有する全部で8つの特徴を含むことを要求してよい。この「幅分布」は、表記法(4,3,1)を使用して表されてよい。そのようなシステムにおいて、全てのシンボルは同じ幅分布を有するが、異なる幅の特徴が現れる順序において変動する。
【0014】
「幅配列」とは、特定のバーコード・シンボル内の特徴幅の列を表す配列である。例えば、前述したばかりの幅分布を使用するとき、有効な幅配列の例は(1,2,1,1,3,2,2,1)である。この幅配列は、第1の特徴が単一幅、第2の特徴が2倍幅、第3の特徴が単一幅、第4の特徴が単一幅、などのシンボルを表す。本明細書で使用されるように、変数Nはシンボル内の特徴の数を示し、変数Wfはシンボル内の索引fにおける特徴の幅を示す。ここで、1≦f≦Nである。提供されたばかりの例示的幅配列の場合、W1=1、W2=2、及びW5=3である。
【0015】
異なるバーコード・システムは、異なる「情報密度」を有する。「情報密度」の用語は、本明細書において、特定のバーコード・システムがエンコードすることができる単位当たりの有効ビット数を意味し、log2(利用可能なシンボルの総数)/(「単位」で表されたシンボルの長さ)として定義されてよい。例えば、「2 of 5」バーコード・システムにおいて、各々のシンボルは正確に5つの特徴を有し、正確にその中の2つは太く、正確にその中の3つは細い(即ち、幅分布は(3,2)である)。2 of 5シンボルの例はBWNNWNである。ここで「B」はバーを意味し、「S」はスペースを意味し、添字「W」は太い特徴を意味し、添字「N」は細い特徴を意味する。
【0016】
2 of 5システムでは10個の可能なシンボルが存在し、3.3ビットの情報を有効に表す。各々のシンボルの中には7個の単位が存在する(各々が1単位である3個の細い特徴、及び各々が2単位である2個の太い特徴)。したがって、2 of 5システムの情報密度は、3.3ビット/7単位であるか、単位当たり約0.47ビットである。この情報密度は、既存のバーコード・システムの中では比較的高い。大量の情報が小さなバーコード内でエンコードされなければならない場合、より高い情報密度を達成することが望ましい。
【0017】
情報をバーコードへエンコードし、バーコードから情報をデコードすることが不可能であれば、バーコード・システムは有用とは言えないであろう。したがって、任意のバーコード・システムについて、バーコードとの間で情報をエンコード及びデコードする方法を提供することが必要である。典型的には、エンコードは、エンコードされていない情報(例えば、数)をシステム内のバーコードへマップするルックアップ・テーブルを使用して実行される。同様に、デコードは、典型的には、バーコードを数情報又は他の種類の値へマップするルックアップ・テーブルを使用して実行される。エンコード及びデコードは、ルックアップ・テーブルを使用して迅速に実行してよいが、ルックアップ・テーブルの1つの欠点は、記憶装置が著しい量のメモリを消費し得ることである。特に、シンボルが多数の特徴を含むバーコード・システムにおいてそうである。一般的に、エンコードとデコードの双方を迅速に実行し、比較的小さな量のメモリを使用することが望ましい。
【発明の開示】
【発明が解決しようとする課題】
【0018】
したがって、必要なことは、バーコード内のメディア識別情報を効率的にエンコード及びデコードする改善された手法である。
【課題を解決するための手段】
【0019】
複数の特徴、例えば、変動幅のバー及びスペースを含むコード、例えば、バーコードをエンコード及びデコードする手法が開示される。本発明の1つの態様において、単一のシンボルを使用して任意の長さのコードへ情報をエンコードする手法が提供される。2つよりも多い別個の値の特徴を有するコードを使用して情報をエンコード及びデコードする手法も提供される。
【0020】
本発明の様々な態様及び実施形態の他の特徴及び利点は、下記の説明及び請求項から明らかになるであろう。
【発明を実施するための最良の形態】
【0021】
本発明の実施形態を説明する前に、従来のバーコード・システムのある一定の固有性を説明する。多くの既存のバーコード・システムにおいて、各々のシンボルは少数の特徴を含む。結果として、別個のシンボルの数は典型的には小さく、通常、200以下である。そのようなシステムで多数の組み合わせを得るためには、シンボルを組み合わせることが必要である。例えば、2 of 5バーコード・システムでは、5つの特徴が存在し、その中の2つは2単位の幅であり、全部で7単位の長さを与える(例えば、単位が1mmであれば、7mmである)。これらの特徴の10個の可能な組み合わせ(即ち、10個の異なるシンボル)が存在し、数字0〜9をエンコードするために使用される。2つのそのようなシンボルを含むバーコードは、全部で14単位(例えば、14mm)の長さを有し、全部で100個の可能な値をエンコードすることができる。同様に、3シンボル2 of 5バーコードは1,000個の値をエンコードすることができ、4シンボル2 of 5バーコードは10,000個の値をエンコードすることができる。
【0022】
しかし、本発明の実施形態によれば、複数のシンボルを組み合わせることによってではなく、単一のシンボルの長さを拡張することによって、追加の情報がエンコードされる。シンボルの長さが大きくなるにつれて、組み合わせの数は劇的に増加する。例えば、7mmの2つのシンボルの代わりに、4つの太いバー及び6つの細いバー(4 of 10)を有する14mmの1つのシンボルを使用するならば、組み合わせの総数は210個となる(2 of 5を使用する2シンボルの場合の100個と対比される)。3シンボル等価物は6 of 15となり、5,005個の値を生じる(2 of 5の場合の1,000個と対比される)。単一の28mmシンボル(8 of 20)を使用することは、125,970個の値を生じる。これは2 of 5システムの12倍を超える。
【0023】
本発明の1つの実施形態において、シンボル内の特徴の数が幾つであろうと、全てのバーコードが単一のシンボルから構成されるバーコード・システムを提供することによって、高い情報密度が得られる。複数のシンボルを生成してそれらを連結するのではなく、単一のシンボルの長さを拡張することによって、追加の値が得られる。そのようなシステムにおいて、どのような長さのバーコードも、いかなる内部スタート及びストップコードも含む必要はないことを理解すべきである。更に、ある条件のもとでは、初期スタートコード及び終端ストップコードは、システム内のバーコードから削除されてよい。バーコード・システム以外のコード・システムでも、同じ手法が適用されてよい。したがって、更に一般的には、本発明の1つの実施形態において、システム内の特徴の数が幾つであろうと、全てのコードが単一のシンボルから構成されるコード・システムが提供される。したがって、「特徴」の用語はバーコード内のバー及びスペースに限定されず、任意の種類のコードの中に情報をエンコードするために使用される任意のマーキング又は識別可能なエンティティの他の族を意味する。
【0024】
バーコードは、次の意味で「単一シンボル」から構成される。バーコードは、データ及びメタデータの双方を含むものと考えられてよい。従来のバーコード・システムにおいて、データは、情報をエンコードする1つ又は複数のシンボルを含み、メタデータは、スタートコード及びストップコードのような特殊シンボルを含む。本発明の様々な実施形態において、データ部分内の特徴の1つ又は複数の部分集合(例えば、個々のシンボル)ではなく、データ部分内の特徴の全てに全体として適用される制約の集合を、各々のバーコードのデータ部分が満足させるバーコード・システムが提供される。例えば、前述した2 of 5コードにおいて、10特徴バーコードが制約の集合によって定義され、この制約の集合が、バーコードの2つの5特徴部分集合の各々によって満足される。2 of 5システム内で追加の特徴を有するバーコードは、各々が2 of 5制約を満足させる追加のシンボルを生成し、それらのシンボルをバーコードへ付加することによって生成される。対照的に、本発明の実施形態において、バーコードのデータ部分を生成するために使用される制約の集合は、データ部分の部分集合ではなく、全体としてのデータ部分へ適用される。バーコードがデータ部分のみを含み、メタデータ部分を含まないならば(例えば、バーコードがスタートコード及びストップコードを含まないならば)、制約の集合は、バーコードの部分集合ではなく全体としてのバーコードへ適用される。
【0025】
図2Aを参照すると、本発明の1つの実施形態に従って情報をエンコードするために使用される方法200のフローチャートが示される。方法200は、エンコードすべき情報を識別する(ステップ202)。本発明の1つの実施形態において、ステップ202で識別された情報は、印刷メディア固有性情報である。
【0026】
方法200は、ステップ202で識別された情報をエンコードするために要求されるビットの数を識別する(ステップ204)。方法200は、ステップ204で識別されたビットの数をコードがエンコードできるような、コードの特徴の数N及び特徴制約の集合(例えば、特徴の幅及び/又は全体のコード長)を選択する(ステップ206)。Nは、1よりも大きい任意の正の整数であってよい。従来のバーコード・システムによって使用される制約の集合の例は、2 of 5バーコード・システムによって課される制約である。2 of 5バーコード・システムは、シンボルが5つの特徴を含み、その中の2つが太く3つが細いことを要求する。下記で詳細に説明するように、方法200のステップ206で選択された制約は、単一コード内の複数シンボルへ適用されず、データ部分の長さがどのようなものであれ、全体としてのコードの全データ部分へ適用される。本発明の実施形態で適用され得る他の制約の例は、下記で説明する。
【0027】
方法200は、ステップ206で選択された特徴制約を満足させるN個の特徴(ステップ206で選択される)のコードへ、ステップ202で識別された情報をエンコードする(ステップ208)。更に具体的には、方法200はスタートコードを生成する(ステップ210)。方法200は、ステップ204で選択された特徴制約を満足させるN個の特徴のコードへ、ステップ202で識別された情報をエンコードする(ステップ212)。データ部分は、いかなる内部スタート又はストップコードも含まなくてよい。
【0028】
方法200はストップコードを生成する(ステップ214)。ステップ208によって生成されたコードは、ステップ210で生成されたスタートコード、それに続いてステップ212で生成されたコード、それに続いてステップ214で生成されたストップコードを含む。方法200は、ステップ208で生成されたコードを出力メディアへ書き込む(ステップ216)。方法200によって生成されたデータ部分は「データ」の例であり、ステップ210及び214で生成されたスタートコード及びストップコードは、それぞれ本明細書で使用される用語としての「メタデータ」の例である。
【0029】
方法200によって生成されたコードは、単一のシンボルを含むことに注意されたい。単一のシンボルとは、ステップ206で識別された制約が、コード特徴の複数の部分集合ではなくコードのデータ部分の特徴へ全体として適用されるという意味においてである。図2Aで示された実施形態において、方法200によって生成されたコードは、いかなる内部スタート又はストップコードも含まない。図2Aで示される実施形態において、方法200によって生成されたコードは、初期スタートコード及び終端ストップコードを含むが、これは必要とされない。むしろ、方法200によって生成されたコードは、いかなるスタート又はストップコードも含む必要はない。
【0030】
更に、方法200によって生成されたコードは、ステップ206で選択されたNの値がどのようなものであれ、単一のシンボルを含む。言い換えれば、Nの値が増加されても、結果のコードが複数のシンボルを含むようになることはない。このようにしてコードを生成するために適用される手法の例は、下記で説明される。
【0031】
図2Bを参照すると、図2Aの方法200によって生成されるコードの中にエンコードされた情報をデコードするため、本発明の1つの実施形態で使用される方法220のフローチャートが示される。コードは、出力メディアの上に印刷され、印刷メディア固有性情報を表してよい。方法220は、コードの特徴の数Nを識別する(ステップ222)。Nは、1よりも大きい任意の正の整数であってよい。ステップ222は、例えば、バーコード・リーダ又は他のデバイスを使用してコードを読み取り、コード内の特徴の数を識別することによって実行されてよい。方法220は、デコードすべき特徴値を識別する(ステップ224)。ステップ224は、ステップ222と同時に実行されてよい。
【0032】
方法220は、識別された特徴を情報へデコードするが、特徴を複数の別個のシンボルとしては解釈しない(ステップ226)。更に具体的には、方法220は、任意的に、特徴の集合の始まりからスタートコード228を読み取る(ステップ228)。方法220は、任意的なスタートコードに続くデータ部分の中の特徴を情報へデコードするが、特徴を複数の別個のシンボルとして解釈しない(ステップ230)。むしろ、下記で詳細に説明するように、データ部分の中の特徴は全体として解釈される。ステップ230で読み取られた特徴は、スタート又はストップコードとして解釈されるいかなる特徴も含む必要はないことに注意されたい。
【0033】
方法220は、任意的に、ストップコードを読み取る(ステップ234)。コードはスタート及びストップコードを省略してよいから、ステップ228及び234は省略されてよい。更に、方法200によってデコードされるコードのデータ部分は、ステップ206で選択されたNの値がどのようなものであれ、単一のシンボルを含む。言い換えれば、方法220は、特徴の任意の数Nを有するコードについて実行されてよい。このようにしてコードをデコードするために適用される手法の例は、下記で説明される。
【0034】
本発明の1つの実施形態において、本明細書では「帰納的W of N」又は「入れ子バーコード」と呼ばれるバーコード・システムの族が提供される。この族におけるバーコード・システムは、単一のシンボルが可変幅の特徴を含み得るシンボル集合を有する。特定のバーコード・システムSにおける別個の幅の数をISとする。IS=4、即ち、4つの別個の幅の特徴が存在する例示的バーコード・システムSを考える。要求されることではないが、例示を目的として、各々のそのような幅が最小特徴幅の整数倍であると仮定する。
【0035】
幅Wiに等しい幅を有する特徴の数をNiとする。ここで、1≦i≦ISである。各々の幅Wiが別個である限り、各々の幅Wiは任意の幅であってよいことに注意されたい。1つの実施形態において、Wiの各々の値は、最小特徴幅にiを掛けたものに等しい。システムSの幅分布は、表記法(N1,N2,N3,...NIS)を使用して表されてよい。そのような場合、IS=4である例において、任意のバーコードの中には、幅1(即ち、最小特徴幅)の特徴がN1個存在し、幅2(即ち、最小特徴幅の2倍)の特徴がN2個存在し、幅3(即ち、最小特徴幅の3倍)の特徴がN3個存在し、幅4(即ち、最小特徴幅の4倍)の特徴がN4個存在する。そのような場合に利用できる組み合わせの総数Cは、式1によって与えられる。ここで、N=N1+N2+N3+N4である。
【数1】

式1
【0036】
式1は、IS=4である場合を表すが、式2で与えられるように、式1はISの任意の値について一般化されてよいことに注意されたい。
【数2】

式2
【0037】
例示を目的として、N1=4、N2=2、N3=2、及びN4=1である場合を考える。これらの制約を満足させるバーコード300aの例は、図3Aに示される。バーコード300aは、全部でN=9=N1+N2+N3+N4個の特徴302a〜302iを含む。バーコード300aの幅配列は(1,2,1,1,3,1,2,3,4)である。配列の要素は特徴302a〜302iの幅に対応する。単一幅の特徴がN1=4個存在し(302a、302c、302d、302f)、2倍幅の特徴がN2=2個存在し(302b、302g)、3倍幅の特徴がN3=2個存在し(302e、302h)、4倍幅の特徴がN4=1個存在する(302i)ことに注意されたい。しかし、幅W1、W2、W3、及びW4は、最小特徴幅の連続した整数倍である必要はなく、別個の特徴幅の任意の集合であってよいことを想起されたい。
【0038】
図4Aを参照すると、そのようなシステムに従ってエンコードされるバーコード(例えば、バーコード300a)をデコードする方法400のフローチャートが示される。方法400は、デコードすべきバーコードを識別し(ステップ401)、索引変数iを1へ初期化する(ステップ402)。
【0039】
方法400は、iがIS(別個の特徴幅の数)よりも大きいかどうかを決定する(ステップ403)。大きくなければ、方法400はステップ404で処理を継続する。現在の例では、i=1及びIS=4であり、方法400はステップ404へ進む。
【0040】
方法400は、バーコード内の最も細い幅の特徴を「細い」特徴として識別する(ステップ404)。例えば、図3で示されるバーコード300aにおいて、最も細い幅は単一幅(幅1)である。特徴302a、302c、302d、及び302fは、この幅を有する。したがって、方法400はステップ404でバーコード300aの特徴302a、302c、302d、及び302fを「細い」として識別する。
【0041】
方法400は、バーコード内の全ての残りの特徴を「太い」特徴として識別する(ステップ406)。例えば、方法400はステップ406で特徴302b、302e、及び302g〜302iを「太い」特徴として識別する。方法400は、それぞれステップ404及び406で識別された細い特徴及び太い特徴によって形成されたパターンを識別する(ステップ408)。例えば、図3Bを参照すると、パターン310aは、バーコード300a(図3A)の「細い」及び「太い」特徴を表すように示される。ここで、「n」は「細い」特徴を表し、「w」は「太い」特徴を表す。パターン310aは要素312a〜312iを含み、これらの要素はバーコード300a(図3A)内の特徴302a〜302iと1対1の対応を有する。
【0042】
方法400は、パターンを中間値Viへデコードする(ステップ410)。このデコードは任意の仕方で実行されてよく(例えば、ルックアップ・テーブル及び/又はアルゴリズムを使用して)、結果の値は任意の種類の値、例えば、数字、文字、又は列挙型であってよい。ステップ410でパターンをデコードするために使用される手法の例は、図6に関して下記で説明する。例示を目的として、この場合、V1=103であると仮定する。
【0043】
方法400は、バーコード300aから「細い」特徴を除去する(ステップ412)。例えば、図3Aに示されるバーコード300aから「細い」(単一幅)特徴を除去すると、図3Cに示される「バーコード」300bを生じる。「バーコード」300bは真のバーコードではなく、バーコード300aをデコードする目的で使用される中間構造であることに注意されたい。バーコード300bは、特徴302b、302e、及び302g〜302iを含む。この新しいバーコード300bの中の最も細い特徴302b及び302gは、幅2を有することに注意されたい。現在の説明は、バーコードから細い特徴を「除去」するとしているが、そのような「除去」は、バーコードの表示から要素を削除することなく実行され得ることに注意されたい。むしろ、「除去」の用語は、一般的に、下記で詳細に説明するように、方法400の後続のステップでバーコードの「細い」特徴を考慮外にする任意の手法を意味する。
【0044】
方法400はiの値を増分し(ステップ416)、ステップ403へ戻る。i≦ISであれば(ステップ403)、方法400はステップ404で処理を継続する。現在の例では、i=2及びIS=4であり、したがって方法400はステップ404へ継続する。
【0045】
ステップ404のこの反復において、2倍幅(幅=2)を有する特徴は、「細い」特徴として解釈される(ステップ404)。現在の例において、これらは特徴302b及び302gである。全ての他の特徴は、「太い」特徴として解釈される(ステップ406)。現在の例において、これらは特徴302e、302h、及び302iである。
【0046】
方法400は、それぞれステップ404及び406で識別された細い特徴及び太い特徴によって形成されたパターンを識別する(ステップ408)。例えば、図3Dを参照すると、バーコード300b(図3C)の「細い」及び「太い」特徴を表すパターン310bが示される。パターン310bは要素314a〜314eを含む。これらはバーコード300a(図3A)内の特徴302b、302e、302g、302h、及び302iと1対1の対応を有する。方法400はパターンを他の中間値Viへデコードする(ステップ410)。例示を目的として、この場合、V2=8と仮定する。
【0047】
方法400は、バーコードから「細い」特徴を除去する(ステップ412)。例えば、図3Cで示されたバーコード300bから「細い」(2倍幅)特徴を除去すると、図3Eで示されたバーコード300cを生じる。この新しいバーコード300cの中の最も細い特徴302e及び302hは幅3を有することに注意されたい。
【0048】
方法400はiの値を増分し(ステップ416)、ステップ403へ戻る。i≦ISであれば(ステップ403)、方法400はステップ404で処理を継続する。現在の例において、i=3及びIS=4であり、したがって方法400はステップ404へ継続する。
【0049】
ステップ404のこの反復において、3倍幅(幅=3)を有する特徴302e及び302hは、「細い」特徴として解釈される(ステップ404)。全ての他の特徴は、「太い」特徴として解釈される(ステップ406)。現在の例において、唯一のそのような特徴は特徴302iである。
【0050】
方法400は、それぞれステップ404及び406で識別された細い特徴及び太い特徴によって形成されたパターンを識別する(ステップ408)。例えば、図3Fを参照すると、バーコード300c(図3E)の「細い」及び「太い」特徴を表すパターン310cが示される。パターン310cは要素316a〜316cを含み、これらはバーコード300a(図3A)の中の特徴302e、302h、及び302iと1対1の対応を有する。方法400は、パターン310cを他の中間値Viへデコードする(ステップ410)。例示を目的として、この場合、V3=2と仮定する。
【0051】
方法400は、バーコードから「細い」特徴を除去する(ステップ412)。例えば、図3Eで示されたバーコード300cから「細い」(3倍幅)特徴を除去すると、図3Gで示されたバーコード300dを生じる。この新しいバーコード300dの中の唯一の特徴302iは幅4を有することに注意されたい。
【0052】
方法400はiの値を増分し(ステップ416)、ステップ403へ戻る。i=4及びIS=4であるから、方法400はステップ404へ継続する。現在、1つの可能な値を有する1つだけの特徴が存在するから、V4=0である。一度、次にiがステップ416で増分されると、i=5及びIS=4である。したがって、ステップ403の後、方法400はステップ418へ進む。そこでは、方法400が、1≦i≦ISについて、デコード値Viから最終デコード値を導き出す。図4Aで示された実施形態において、デコード値Viの総数は、常に、別個の幅の数ISに等しいことに注意されたい。更に注意すべきは、ステップ418が任意的であり、Viの個々の値が使用されてよく、それらから単一の最終デコード値が導き出されなくてもよいことである。しかし、ステップ418が実行されるならば、それは様々な任意の仕方で実行されてよい。
【0053】
図4Aで示される方法400は、最も細い特徴から始めて最も太い特徴で終わるように特徴を全探索するが、方法400は任意の順序で特徴を全探索してよいことに注意されたい。更に、方法400は左から右へ特徴を処理するが、これは必要とされない。むしろ、方法400は任意の順序、例えば、右から左、又は中央から特徴を処理してよい。
【0054】
例えば、図4Bを参照すると、ステップ418を実現するため、本発明の1つの実施形態で実行される方法430のフローチャートが示される。方法430の動作を説明する前に、バーコード「レベル」の概念を紹介する。本発明の1つの実施形態において、バーコード、例えば、図3Aで示されるバーコード300aは、複数のレベルを含むものとして取り扱われる。バーコード自身(例えば、図3Bの310aの中で「細い」及び「太い」特徴として解釈されるバーコード300a)はレベル1である。「細い」特徴の第1の集合を除去することから生じるバーコード(例えば、図3Dの310bの中で解釈されるバーコード300b)はレベル2である。「細い」特徴の第2の集合を除去することから生じるバーコード(例えば、図3Fの310cの中で解釈されるバーコード300c)はレベル3である。以下同様である。
【0055】
図4Bへ戻って、方法430は索引変数iの値をISの値へ初期化する(ステップ432)。例えば、IS=4であれば、ステップ432の後にi=4である。方法430は最終デコード値FVの値をゼロへ初期化する(又は、任意的に、前のバーコード計算又はある他の計算の結果初期化する)(ステップ434)。
【0056】
方法430は、レベルiにおける可能なパターンの数Ciを識別する(ステップ436)。例えば、i=2であれば、Ciはレベル2におけるパターンの組み合わせの数、即ち、幅2以上の幅を有するバーコードに基づくパターンの組み合わせの数を表す。
【0057】
方法はFVにCiを掛け、レベルiにおける中間デコード値Viを結果の積に加え、FVの新しい値を得る(ステップ438)。方法430は、iの値を減分する(ステップ440)。ステップ436〜440は、i=0となるまで反復される(ステップ442)。i=0となったとき、FVの現在値がFVの最終値として返却される(ステップ444)。
【0058】
方法430を、図3Aで示されるバーコード300aへ適用する場合を考える。レベルiにおけるバーコードをBiとする。例えば、B1はバーコード300aであり(図3A)、B2はバーコード300bであり(図3C)、B3はバーコード300cであり(図3E)、B4はバーコード300dである(図3G)。同様に、レベルiにおけるバーコードから導き出されたパターンをPiとする。例えば、P1はパターン310aであり(図3B)、P2はパターン310bであり(図3D)、P3はパターン310cである(図3F)。
【0059】
レベルi=1では(図3Bのパターン310a)、5つの太い特徴及び4つの細い特徴が存在し、126個の一意の組み合わせを生じる。言い換えれば、C1=126である。例示を目的として、パターンP1 310aは数103へデコードされるものと仮定する。したがって、V1=103である。
【0060】
レベルi=2では(図3Dのパターン310b)、3つの太い特徴及び2つの細い特徴が存在し、10個の一意の組み合わせを生じる。言い換えれば、C2=10である。例示を目的として、パターンP2 310bは数8へデコードされるものと仮定する。したがって、V2=8である。
【0061】
レベルi=3では(図3Fのパターン310c)、1つの太い特徴及び2つの細い特徴が存在し、3つの一意の組み合わせを生じる。言い換えれば、C3=3である。例示を目的として、パターンP3 310cは数2へデコードされるものと仮定する。したがって、V3=2である。バーコードB4 300d(図3G)に対応するパターン(図示されず)は単一幅を有するだけであるから、パターンP4は値0へデコードされる。したがって、V4=0である。
【0062】
図4Bに示される方法430は、バーコードB1を、最終値FVの最小有意部分として有効に取り扱うことに注意されたい。方法は、バーコードB2を、FVの次の最小有意部分として以下同様に取り扱う。前述した特定の幅分布及び例示的バーコードBを使用して、図4Bで示された方法430は、次の結果、即ち、((V4*C3+V3)*C2+V2)*C1+V1=(2*10+8)*126+103=3631を生成する。
【0063】
各々のレベルiにおけるバーコードの意味は、B1を最終値FVの最大有意部分として解釈し、B2を最終値FVの次の最大有意部分として解釈し、以下同様に解釈することによって逆にされてよい。図4Cを参照すると、この原理に従って動作する方法450のフローチャートが示される。
【0064】
方法450は、索引変数iの値を1の値へ初期化する(ステップ452)。方法450は、最終デコード値FVの値を0(又は、任意的に、前のバーコード計算又はある他の計算の結果)へ初期化する(ステップ454)。
【0065】
方法450は、レベルiにおけるパターンの可能な組み合わせの数Ciを識別する(ステップ456)。方法450はFVにCiを掛け、レベルiにおける中間デコード値Viを結果の積に加え、FVの新しい値を得る(ステップ458)。方法450はiの値を増分する(ステップ460)。ステップ456〜460は、i>ISとなるまで反復される(ステップ462)。FVの最終値はコードのデコード値として返却される(ステップ464)。方法450を前記の例へ適用すると、FV=(103*10+8)*3+2=3116を生じる。
【0066】
図4B及び図4Cで示された方法は、値Viを最終値へ組み合わせるために使用され得る方法の単なる例であることに注意されたい。他の方法を使用して、値Viを最終値へ組み合わせてよい。例えば、図4A及び図4Bで示された方法は、当業者に周知の手法を使用して組み合わせられ、FVの値を計算する帰納的関数を生成する。図4A及び図4Cで示された方法についても、同じことが当てはまる。
【0067】
前述した例示的バーコード・システムの各々において、バーコードはシステム内で単一の幅分布を有する。単一の幅分布が必要でなければ、利用可能な組み合わせの数は増加する。複数の分布を使用する幾つかの方法が存在する。
【0068】
例えば、特定のバーコード・システムが、長さ、特徴の総数、個々の特徴の幅、1つの特定の特徴(又は幅)の数、及び/又は他のバーコード特性に制約を課すると仮定する。複数の幅分布は要件の組み合わせを満足させるかも知れず、複数の幅分布の1つは、単一の幅分布を必要とするシステムで使用されてよい。更に、システムによってエンコードされるべき値の範囲が、要件の組み合わせを満足させる1つの幅分布を使用して得られる範囲を超過すると仮定する。例えば、特定のバーコード・システムが、正確に11単位の長さを有し、3つまでの別個の特徴幅を有する正確に5つの特徴を使用するバーコードを許すならば、3つの異なる幅分布が可能である。即ち、(a)5個の一意の組み合わせを生じる(0,4,1)、(b)30個の一意の組み合わせを生じる(1,2,2)、(c)10個の一意の組み合わせを生じる(2,0,3)である。したがって、そのようなシステムにおける一意の組み合わせの総数は45(5+30+10)である。更に、この例における特定のバーコード・システムは、0〜42の数の範囲をエンコードしなければならないと仮定する。本発明の1つの実施形態において、各々の特定の幅分布は、数の特定の範囲を表す。例えば、30個の一意の組み合わせを有する幅分布(1,2,2)は、数0〜29を表してよい。10個の一意の組み合わせを有する幅分布(2,0,3)は、数30〜39を表してよい。5個の一意の組み合わせを有する幅分布(0,4,1)は、数40〜42を表してよい。最後の分布における5個の組み合わせの中の3個のみが、この例で使用されることに注意されたい。更に、分布の特定の順序づけは、任意のやり方で選択されてよいことに注意されたい。
【0069】
そのような制約に従ってエンコードされるコードをデコードするため、当業者は、図4A〜図4Cに関して前述したデコード手法を拡張する方法を理解するであろう。例えば、図4Dを参照すると、複数の幅分布を認識するシステム内でバーコードへ値を割り当てるため、本発明の1つの実施形態で実行される方法470のフローチャートが示される。方法470はバーコードを値Vへデコードする(ステップ472)。ステップ472は、例えば、図4A及び図4B又は図4A及び図4Cで示された方法を使用して実行されてよい。オフセット値は、デコードされたバーコードの特定の幅分布に基づいて計算される(ステップ474)。上記の例において、バーコードの幅分布が(1,2,2)であれば、オフセットは0である。なぜなら、先行する幅分布は存在しないからである。幅分布が(2,0,3)であれば、オフセットは30である。先行する幅分布(1,2,2)は30個の一意の組み合わせを有する。幅分布が(0,4,1)であれば、オフセットは40である。オフセットは値Vへ加えられ、値V’を生成し(ステップ476)、この値がバーコードのデコード値として使用される(ステップ478)。
【0070】
これまで説明したシステムは、単一のバーコードのみを使用する。しかし、1つより多いコードが使用され得る場合が存在する。これらのコードは、システムの要件を満足させる幅分布の任意の組み合わせを有してよい。それらは独立のエンティティとして取り扱われ、各々は、前述したように機能する。代替的に、コードが組み合わせられ、単一の数を作り出してよい。例えば、2つのバーコードX及びYが存在すると仮定する。コードX及びYの各々は、前述したように1つ又は複数の幅分布を有してよい。本発明の1つの実施形態において、2つのコードは、前述した手法を使用して、コードXによって表された数をデコードすることによって組み合わせられる。結果は、コードYについて利用可能な一意の組み合わせの数によって掛けられる。次に、結果の積は、コードYによって表された数へ加えられる。
【0071】
複数のコードを使用する他の方法は、1つの長いコードを2つ以上の部分へ分割することである。各々の部分は別々のセンサによって読み取られてよい。部分からの結果の幅配列は連結されてよく単一の幅配列を形成し、この幅配列が、前述したようにデコードされてよい。
【0072】
複数のコードを使用する他の方法は、2つ以上のコードを利用することである。各々のコードは1つ又は複数の許された幅分布を有し、少なくとも1つのコードは2つ以上の許された分布を有する。前述したようにしてコード自身の中にエンコードされた情報に加えて、及びそれから独立して、分布の分布が、それ自体、情報をエンコードするために使用可能である。例えば、2つのコードX及びYが存在すると仮定する。コードXは幅分布A又はBの1つを有し、それら幅分布の各々は他のものと異なる。コードYは幅分布D、E、又はFの1つを有し、それら幅分布の各々は相互に異なる。しかし、幅分布A及びBの1つ又は複数は、幅分布D、E、又はFとマッチしてよい。コードX及びYは、数のデコード及び組み合わせに関して、前述したように取り扱われる。更に、X及びYで使用される分布を見て、例えば、表1に示されるように、異なるペアについて値を割り当てることができる。
【表1】

【0073】
この情報は、X及びYによって表された数と組み合わせ可能である。当業者は、説明したばかりのデコード手法に従って情報をエンコードする方法を理解するであろう。
【0074】
これまでの説明は、本発明の様々な実施形態に従って実現されるバーコード・システムの特徴を説明する。特に、方法400のステップ410(図4A)に関して、各々のパターンPiが、様々な方法の任意のものを使用して、対応する値Viへデコードされ得ることが前述された。これから、例えば、図3B、図3D、及び図3Fで示されるパターンをデコードする手法の例を説明する。更に、値をそのようなパターンへエンコードする手法の例を説明する。
【0075】
例えば、バーコードが全部でN個の特徴を有することに限定され、その中のW個の特徴が太い特徴であり、N−W個の特徴が細い特徴であるバーコード・システムSを考える。例示を目的として、N=5及びW=2と仮定する。言い換えれば、5つの特徴が存在し、その中の2つが太く、3つが細い。本発明の1つの実施形態において、数字0〜9は表2に従ってシンボルへマップされる。
【表2】

【0076】
表2の左欄におけるシンボルの列は、表2の最初の行にあるシンボルwwnnnで示されるように、太い特徴がシンボルの左側にあり、細い特徴が右側にあるシンボルから始めて、生成されていることに注意されたい。この第1のシンボルは数字0へマップされる。
【0077】
次の数字(1)にマップするシンボルを生成するため、表2の第2の行で示されるように、最も右側の太い特徴が1つの位置だけ右へ動かされ、シンボルwnwnnを生じる。2については、wが再び右へ動かされる(即ち、wnnwn)。次の数字(2)へマップするシンボルを生成するため、表2の3行目で示されるように、最も右側の太い特徴が1つの位置だけ右へ動かされ、シンボルwnnwnを生じる。この手続きは、最も右側の太い特徴がシンボルの最も右側の位置に来るまで反復される。これは、数字3へマップする表2の4行目にあるシンボルwnnnwで示される。
【0078】
次のシンボルは、表2の5番目の行で示されるように、元のシンボル(wwnnn)へ戻り、双方の太い特徴を1つの位置だけ右へ動かし、シンボルnwwnnを得ることによって生成される。このシンボルは数字5へマップする。前述した手続きは、残りの数字に対応するシンボルを生成するために反復される。
【0079】
当業者は、表2に関して前述した手法が、より一般的に、任意の数の特徴を有するコードへ適用されてよいことを理解するであろう。そのようなコードにおいて、任意の数の特徴が太く、任意の数の特徴が細い。下記の説明において、図5A〜図5B及び図6A〜図6Bで示される実施形態は、2つだけの特徴値を有するコードを含むこと、及び図6C〜図6Dで示される実施形態は、任意の数の特徴値を有するコードへ一般化する方法を示すことに注意されたい。図5A〜図5Bを参照すると、再帰的手続きが、表2で示されるコードの集合などのコードのフル・セットを生成することを示している。
【0080】
図5Aを参照すると、初期化方法500が示される。初期化方法500は、特徴Nの総数を、幅1を有する特徴の数N1と、幅0を有する特徴の数N0との合計として識別する(ステップ502)。この説明における「幅1」及び「幅0」のような用語は、列挙された値を意味することに注意されたい。列挙された値は、バーコード特徴の幅(この場合、幅1=太い、幅0=細い)へ変換されるだけでなく、更に一般的に、任意のコードの任意の種類の特徴(例えば、幅1=赤、幅0=青)へ変換されてよい。
【0081】
InitialCodeという名前のコード配列は、N1個の1及びそれに続くN0個の0を含むように初期化される(ステップ504)。例えば、N1=2及びN0=3であれば、InitialCodeはコード11000へ初期化される。InitialCode配列は、GenAllCodesという名前の方法へ渡される(ステップ506)。この方法の実施形態は、図5Bで示される。これから詳細に説明するように、方法GenAllCodesはコードのフル・セット(例えば、表2で示されるコードの集合)を生成し、コードの集合を図5Aで示される方法500へ返却する(ステップ508)。
【0082】
ここで図5Bを参照すると、本発明の1つの実施形態に従ったGenAllCodes方法510のフローチャートが示される。方法510は、コード配列InitialCodeを受け取る(ステップ512)。方法510は、コード配列InitialCodeがオール1又はオール0を含むかどうかを決定する(ステップ514)。コード配列InitialCodeがオール1又はオール0を含むならば、方法510はInitialCodeコード配列から成る単一のコードを返却する(ステップ516)。
【0083】
そうでなければ、方法510は、InitialCodeから最初の要素を剥ぎ取り、残りのコード要素をInitialCode2という名前のコード配列として提供する(ステップ518)。例えば、InitialCodeがコード11000であったならば、InitialCode2はコード1000となる。方法510は、InitialCode2を初期コードとしてそれ自身を呼び出してコードの集合を生成し、コードの集合内の各々のコードの始めに1を連結してCodeSet1という名前のコードの集合を生成する(ステップ520)。
【0084】
同様に、方法510は、InitialCodeから最後の要素を剥ぎ取り、残りのコード要素をInitialCode3という名前のコード配列として提供する(ステップ522)。例えば、InitialCodeがコード11000であったならば、InitialCode3はコード1100となる。方法510は、InitialCode3を初期コードとしてそれ自身を呼び出してコードの集合を生成し、コードの集合内の各々のコードの始まりへ0を連結してCodeSet2という名前のコードの集合を生成する(ステップ524)。
【0085】
方法510は、コード集合CodeSet2をコード集合CodeSet1の終わりに付加することによって、コードの最終集合を生成する(ステップ526)。結果として、FinalCodeSetは、CodeSet1、それに続くCodeSet2を含む。最後に、方法510は最終のコード集合(FinalCodeSet)を返却する(ステップ528)。例えば、N1=2及びN0=3であれば、最終のコード集合は表2で示されるコード集合に等しい。
【0086】
図6Aを参照すると、本発明の1つの実施形態に従って表2で示されるような順序づけられた列を有するコードへ値をエンコードする方法600のフローチャートが示される。方法600は、次のものを受け取る。即ち、(1)コード特徴配列Fの中にエンコードすべき値V、(2)生成されるべきコードの中の特徴の総数NT、及び(3)0以外の特徴値を有する特徴の数NTgである(ステップ601)。
【0087】
生成されるべきコードはバーコードであってよいが、このことは必要とされない。むしろ、コードは、任意の種類の特徴を有する任意の種類のコードであってよい。別個の特徴値は、0から始まる順次の整数値を使用して列挙されてよい。例えば、別個の幅が3つである特徴を有するバーコードにおいて、各々の別個の幅は別個の特徴の例である。幅の1つは特徴値0を割り当てられてよく、幅の他の1つは特徴値1を割り当てられてよく、幅の他の1つは特徴値2を割り当てられてよい。値は別個の特徴へ任意の順序で割り当てられてよい。例えば、バーコード内の最も細い特徴は最も低い値(例えば、0)を割り当てられ、最も太い特徴は最も高い値(例えば、2)を割り当てられるかも知れないが、このことは必要とされない。一般化を目的として、図6の残りの説明は、特徴自身の特性(例えば、幅)ではなく、列挙された特徴値を参照する。
【0088】
方法600は、NT(特徴の総数)の値を変数Nへ割り当て(ステップ602)、NTg(特徴値が0よりも大きい特徴の利用可能な総数)の値を変数Ngへ割り当てる(ステップ604)。例えば、表2で示されるコードの場合、Ng=2である。なぜなら、特徴値が0以外の各々のコードの中に2つの特徴が存在するからである(即ち、1の特徴値を有する「太い」特徴)。
【0089】
方法600は、N(ステップ606)及びNg(ステップ608)の双方を減分する。特徴ポインタfは、生成されているコードを表す特徴値の配列Fの中の最初の特徴を指すように初期化される(ステップ610)。Ngが0よりも大きいか等しいならば(ステップ611)、値N!/Ng!/(N−Ng)!が変数Csへ割り当てられる(ステップ612)。そうでなければ、Csは0へ設定される(ステップ613)。
【0090】
V(エンコードされるべき値)がCsよりも大きいか等しければ(ステップ614)、特徴fの特徴値は0へ設定され(ステップ620)、Vの値はCsだけ減らされ(ステップ622)、Nの値は減分され(ステップ624)、特徴ポインタfは特徴配列Fの中の次の特徴を指す(ステップ626)。
【0091】
ステップ614へ戻って、値VがCsよりも大きくなければ、特徴fの特徴値は1へ設定され(ステップ630)、Ngの値は減分され(ステップ632)、Nの値は減分され(ステップ624)、特徴ポインタfは特徴配列Fの中の次の特徴を指す(ステップ626)。
【0092】
Nが0よりも小さくなければ(ステップ628)、方法600はステップ611へ戻り、前述したように追加の特徴をコード内に生成するように継続する。そうでなければ、コードの生成は完了し、方法は値Vを表すコードとして現在の特徴配列Fを返却する(ステップ634)。
【0093】
図6Bを参照すると、本発明の1つの実施形態に従って、表2で示されるコードの固有性を有する特徴配列Fから情報をデコードする(ステップ641)方法640のフローチャートが示される(ここでは、nは0で置換され、wは1で置換される)。コード内の特徴の総数をNとする(ステップ642)。0よりも大きい特徴値を有するコード内の特徴の数をNgとする(ステップ644)。変数Ctの値はN!/Ng!/(N−Ng)!へ初期化される(ステップ646)。N(ステップ648)及びNg(ステップ650)の値は減分される。累算器Aの値は0へ初期化される(ステップ652)。特徴ポインタfは、特徴配列F内の最初の特徴を指すように初期化される(ステップ654)。
【0094】
特徴配列F内の最初の特徴fが0の特徴値を有し(ステップ656)、Ngの値が0よりも大きいか等しければ(ステップ658)、N!/Ng!/(N−Ng)!が累算器Aへ加えられる(ステップ660)。特徴配列F内の最初の特徴fが0の特徴値を有さないならば、Ngは減分される(ステップ662)。特徴配列F内の最初の特徴fが0の特徴値を有し(ステップ656)、Ngの値が0よりも大きくないか等しくなければ(ステップ658)、方法はステップ664へ進む。
【0095】
Nの値は減分され(ステップ664)、特徴ポインタfは特徴配列F内の次の特徴へ進められる(ステップ666)。Nの値が0でなければ(ステップ668)、方法640はステップ656へ戻る。そうでなければ、累算器A及び変数Ctの値が返却される(ステップ670)。累算器Aの値は、特徴配列Fのデコード値を表す。
【0096】
図6A〜図6Bで示されたエンコード及びデコード方法は、別個の特徴値が2つである(例えば、0及び1)特徴を有するコードをエンコード及びデコードするために使用されてよい。しかし、前述したように、本発明の実施形態は、2つよりも多い別個の値を有するコードをエンコード及びデコードするために使用されてよい。そのようなエンコード及びデコードを実行する手法の例を、これから図6C〜図6Eに関して説明する。
【0097】
具体的には、図6C〜図6Dを参照すると、2つの方法が示される。これらの方法は値Xをエンコードするため結合されて使用される。最初に、図6Cで示される方法672は、値Viを含む「値配列」Vへ値Xをエンコードする。ここで、0<i≦ISであり、ISは別個の特徴値の数である。方法672は、特徴分布配列FD及びエンコードすべき値Xを受け取る(ステップ674)。前述したように、特徴分布配列は、各々の別個の特徴値を有する特徴の数を記述する。例えば、特徴分布配列[7,3,2,1]は、7つの特徴が最初の別個の特徴値を有し、3つの特徴が第2の別個の特徴値を有し、2つの特徴が第3の別個の特徴値を有し、1つの特徴が第4の別個の特徴値を有することを指定する。
【0098】
方法672は、iの値をFD内の要素の数へ初期化する(即ち、i=IS)(ステップ676)。方法672は、値配列VのサイズをISへ設定することによって、値配列Vを初期化する(ステップ678)。方法672は、NTの値を0へ初期化し(ステップ680)、NTgの値を0へ初期化し(ステップ682)、Rの値をXへ初期化する(ステップ684)。
【0099】
方法672は、特徴分布配列FDの要素iの値だけNTの値を増加する(ステップ686)。方法672は、Csの値を(NT!/NTg!/(NT−NTg)!)として計算する(ステップ688)。方法672は、値配列の現在の要素Viの値をRモジュラスCsとして計算する(ステップ690)。
【0100】
方法672は整数除法を使用してRをCsで割り、商をRへ割り当てる(ステップ692)。方法672はNTgの値をFDiだけ増加し(ステップ694)、iを減分する(ステップ696)。
【0101】
i>0であれば(ステップ698)、方法672はステップ686へ戻る。そうでなければ、値配列Vの作成が完了し、方法672は値配列Vを返却する(ステップ699)。
【0102】
図6Dを参照すると、本発明の1つの実施形態に従って値Xをエンコードするため、図6Cの方法672によって生成された値配列Vを使用する方法700のフローチャートが示される。方法700は、図6Cの方法672で使用された同じ特徴分布配列FD、及びその方法672によって生成された値配列Vを、入力として受け取る。
【0103】
方法700は、iを配列FD内の要素の数ISへ初期化する(ステップ704)。方法700は、0の要素を有する空の特徴配列Fを初期化し(ステップ706)、NT(ステップ708)及びNTg(ステップ710)の値を0へ初期化する(ステップ710)。方法700は、NTの値をFDiだけ増加する(ステップ712)。
【0104】
方法700は、図6Aで示されたエンコード方法600を使用し、NTg個の特徴が0よりも大きい特徴値を有する全部でNT個の特徴を使用して、値Viを、現在NT個の要素を有する一時的特徴配列TFへエンコードする(ステップ714)。方法700は配列TF内の全ての1を配列Fの要素で1対1に対応させて置換し、Fの中で相対的順序を保存する(ステップ716)。次に、方法700は特徴配列Fを一時的特徴配列TFで置換し(ステップ718)、Fの全ての要素へ1を加え(ステップ720)、NTgの値をFDiだけ増加し(ステップ722)、iを減分する(ステップ724)。
【0105】
i>0であれば(ステップ726)、方法700はステップ712〜724を反復する。そうでなければ、特徴配列Fへの値配列Vのエンコードは完了し、方法700は特徴配列Fを返却する(ステップ728)。
【0106】
図6Eを参照すると、2つ以上の別個の特徴値を有する特徴配列Fをデコードするため、本発明の1つの実施形態に従って実行される方法730のフローチャートが示される。方法730は特徴配列Fを受け取り(ステップ732)、配列F内の最大値を変数Lへ割り当てる(ステップ734)。方法730はiを1へ初期化し(ステップ736)、L個の要素を有する空の値配列Vを作成し(ステップ738)、L個の要素を有する空の組み合わせ配列Cを作成する(ステップ740)。方法730は特徴配列F内の全ての要素から1を減じる(ステップ742)。
【0107】
方法730は図6Bで示された単一レベル・デコード方法640を使用して、特徴配列Fを値A及びレベルiにおける可能な組み合わせCTの数へデコードする(ステップ744)。方法730は値Aを値配列要素Viへ割り当て(ステップ746)、値CTを組み合わせ配列要素Ciへ割り当てる(ステップ748)。
【0108】
方法730は特徴配列Fから全ての0値要素を除去し(ステップ750)、Fの全ての残りの要素から1を減じる(ステップ752)。方法730はiを増分する(ステップ754)。
【0109】
i≦Lであれば(ステップ756)、方法730はステップ744〜754を反復する。そうでなければ、値配列V及び組み合わせ配列Cへの特徴配列Fのデコードは完了し、方法730は値配列V及び組み合わせ配列Cを返却する(ステップ758)。最終デコード値FVは、例えば、前述した方法430(図4B)又は450(図4C)を使用して、値配列V及び組み合わせ配列Cから導き出されてよい。
【0110】
前に参照された「Thermal Imaging System」と題する特許は、印刷ヘッドが単一印刷メディア上の単一通過で2つの色を書くことのできる感熱式プリンタを開示する。その特許に開示された手法は極めて多様なプリンタに応用されてよく、このプリンタは極めて多様な印刷メディアの上に印刷することができる。そのようなメディアは、例えば、サイズ及び感度において多様である。最適の印刷出力を生成するため、印刷メディアのそのような可変固有性に基づいて、プリンタのパラメータを修正することが望ましい。プリンタの使用者は、プリンタの中に現在装填されている印刷メディア固有性をプリンタへ手作業的に通知してよいが、そのような手法は使用者にとって不便であり、誤りを起こしやすい。
【0111】
したがって、本発明の1つの実施形態において、印刷メディアの固有性は、本明細書で開示された手法の中の任意の手法に従ってエンコードされるバーコードの形式で、印刷メディア自体の上にエンコードされる。例えば、図7を参照すると、タブ764の上に印刷されたバーコード766を含む印刷メディア762が示される。タブは印刷メディア762から除去可能であってよい(例えば、ミシン目を使用して)。本発明の1つの実施形態において、印刷メディア762の「画像区域」(タブ764を含まない印刷メディア762の部分)は4”X6”であり、タブ764は4”X1.08”である。本発明の1つの実施形態において、バーコード766は、2つの別個のバーコードを含むバーコード領域として実現される。バーコードの1つは(7,3,2,1)の幅分布を有し、他のバーコードは、メディア・サイズに依存して(7,3,2,1)、(9,4,2,0)、又は(6,5,1,1)の幅分布を有する。バーコード766は、印刷メディアの固有性を記述する印刷メディア固有性情報をエンコードする。図7で示されるように、バーコード766は、例えば、印刷メディアの所定の領域の中に所定の方位で、及び所定のサイズで印刷されてよい。下記で詳細に説明するように、このような仕方でバーコードの印刷固有性を制約することは、バーコードの読み取り及び解釈処理を容易にする。
【0112】
図8を参照すると、システム800のデータフロー図が示される。システム800の中で、プリンタ806は、印刷メディア802の上に印刷されたバーコード804に基づいて構成される。プリンタ806は、バーコード804から導き出された構成に基づいて印刷メディア802の上に印刷出力826を生成する。図9を参照すると、本発明の1つの実施形態に従って、システム800によって実行される方法900のフローチャートが示される。
【0113】
印刷メディア802の固有性は、本明細書で開示された手法の中の任意の手法を使用して識別され、バーコード804へエンコードされてよいことに注意されたい。バーコード804は、方法900を実行する前、例えば、製造終了作業の間に、印刷メディア802上の任意の地点に印刷されてよい。バーコード804は、任意の様々なやり方でメディア802上に置かれてよい。例えば、メディア802が感熱型であれば、バーコード804は感熱式に印刷されてよい。代替的に、パッド及びインクジェット印刷を含む多数の従来の印刷技術が、バーコード804をメディア802の上に配置してよい。
【0114】
プリンタ806はバーコード・リーダ808を含む。図8でプリンタ806の構成部分として示される構成部分、例えば、バーコード・リーダ808は、代替的に、プリンタ806の外部にある構成部分として実現されてよく、任意の適切な通信手段を使用してプリンタ806と通信してよいことに注意されたい。バーコード・リーダ808はバーコード808を読み取り、それによってバーコード804内の特徴810を識別する(ステップ902)。
【0115】
バーコード・リーダ808は、バーコード804を読み取ることのできる任意の種類のデバイスであってよい。例えば、プリンタ806は従来のLED/光ダイオードのペアを既に含み、メディア・シートの存在を感知してよい。このLED/光ダイオードのペアは、更に、バーコード・リーダ808として使用されてよく、可視光を使用してバーコードを読み取ってよい。したがって、バーコード・リーダ808は特殊目的バーコード読み取りデバイスである必要はないことを理解すべきである。図7で示されるように、使用者によって除去されてよいタブ764の上にバーコード766が印刷されるならば、通常の染料が使用されてバーコード766を印刷してよく、赤外線染料も蛍光性混合物も必要ではない。
【0116】
プリンタ806はバーコード・デコーダ812を含む。バーコード・デコーダ812は特徴810の幾つか又は全てを印刷メディア固有性情報814へデコードする。印刷メディア固有性情報814は印刷メディア802の固有性を記述している(ステップ904)。バーコード804の中にエンコードされた印刷メディア固有性情報814は、印刷メディア802の全ての固有性を指定する必要はないことに注意されたい。更に、印刷メディア固有性情報814は、特定の固有性に関する部分的情報を指定してよい。印刷メディア固有性情報814は、プリンタ806の中に記憶されたプリンタ・パラメータ818を指してよい。パラメータ818は、バーコード804自体の中に含まれない詳細な構成情報を含んでよい。
【0117】
プリンタ806はプリンタ構成器816を含む。プリンタ構成器816は埋め込みマイクロプロセッサとして実現されてよい。埋め込みマイクロプロセッサは印刷メディア固有性情報814に基づいてプリンタ806のパラメータ818を修正する(ステップ906)。例えば、プリンタ806は、バーコード内の情報に基づく印刷メディアの特定の固有性に従って印刷ヘッドへ供給されるエネルギーの量を変化させることによって、所与の色を印刷する方法を変えてよい。印刷メディアが普通よりも高い感度を有するならば、プリンタは、全体的に、より少ないエネルギーを使用して印刷するであろう。より高いか低い感度のメディアについては、より高いか低い感度を示す印刷メディア固有性情報をバーコードが含んでよく、プリンタ構成器816はこの情報を使用して、印刷に使用されるエネルギーの範囲をプリンタに減少又は増加させてよい。印刷メディアの特性応答曲線(エネルギーの関数としての印刷密度)が変化するならば、バーコードは、メディアと密接にマッチする特性曲線を識別する印刷メディア固有性情報を含んでよく、プリンタ構成器816はその情報を使用してこの曲線を選択し、各々の密度について正しい印刷エネルギーを決定する参照としてよい。
【0118】
プリンタ806は印刷エンジン820を含む。印刷エンジン820は、印刷ジョブを表す印刷データ822を受け取る(ステップ908)。印刷エンジン820は、印刷データ822及びプリンタ・パラメータ818に基づいて印刷メディア802の上に印刷出力826を生成する(ステップ910)。言い換えれば、印刷エンジン820は、バーコード804の中にエンコードされた印刷メディア固有性情報に基づいてステップ906で構成されたプリンタ806を使用して、印刷データ822を印刷する。こうして、システム800はバーコード804を使用し、印刷メディア802の固有性に基づいて印刷出力826を最適化する。
【0119】
本発明の利点の中には、次の1つ又は複数が含まれる。本明細書で開示されたように、本発明の様々な実施形態は、複数のシンボルへ細分されないバーコードの中に情報をエンコードする。そのようなバーコードは、分割されない特徴の単一の列を含み、従来のバーコードと比較して情報密度を増加している。そのような増加した情報密度によって、従来のバーコードと同じスペースの中で、より多くの情報をエンコードすることができる。スペースが貴重であるとき、及び/又はバーコード・リーダ808が低分解能を有するとき、高い情報密度が特に重要となる。例えば、バーコード・リーダ808がLED/光ダイオードのペアである1つの実施形態において、リーダ808は、1mm以上の幅である特徴を感知できるだけかも知れない。例えば、バーコード804を印刷しなければならないスペース(例えば、タブ764)が25mmの長さであれば、バーコードの中には11〜15個の特徴の余地があるにすぎない。そのような場合、高い情報密度を有するバーコードを提供することが特に有利である。1つの実施形態において、バーコード804に利用可能なスペースは23mmの長さであり、センサは1mm以上の幅を感知できる。複数のシンボル及びスタート及びストップコードを有する2 of 5型バーコードを使用すると、エンコード可能な数の範囲は0〜99であり、全部で100個となる。本発明の実施形態は、そのスペース内で102,960個の数、又は2 of 5バーコードの1000倍を超えてエンコードすることができる。
【0120】
本発明の実施形態の他の利点は、無限の長さのバーコード・シンボルを生成でき、それによってエンコード情報が、有限長のシンボルを有するバーコードよりも高い情報密度を有することである。同様に、本明細書で開示されたデコード手法は、無限長のバーコード・シンボルをデコードするために使用されてよい。しかし、デコード・システムの計算能力によって限定され得る場合は例外である。
【0121】
上述したように、本発明の様々な実施形態で使用されるバーコードは、スタートコード及びストップコードを含む必要はない。従来のバーコード・システムでスタート及びストップコードを使用する理由は、入力バーコードのサイズ、方位、フォーマット、及びロケーションが変動し得るからである。しかし、図7で示される実施形態において、バーコード766のサイズ、方位、フォーマット、及びロケーションは固定されており、前もって知られている。そのような被制御環境の結果として、スタート及びストップコードを使用しなくても、プリンタ806はバーコード766の固有性に関するこの既定の知識に基づいてバーコード766を正確に読み取るように構成される。
【0122】
本発明は特定の実施形態に関して前述したが、これまでの実施形態は例証のためにのみ提供され、本発明の範囲を限定又は規定するものではないことを理解すべきである。下記の実施形態を非限定的に含む様々な他の実施形態も、請求項の範囲の中にある。例えば、本明細書で説明された要素及び構成部分は、更に、追加の構成部分へ分割されるか、より少ない構成部分を形成するように相互に結合され、同一の機能を実行してよい。
【0123】
本発明の実施形態に従ってエンコードされる印刷メディア固有性情報の例は、非限定的に、印刷メディアの色料又は染料の最小及び最大密度、印刷するときに使用するトーンカーブを示すコード、印刷メディア固有性に従ってトーンカーブを構築又は修正するために使用されるパラメータ、印刷メディアの全体的感度、メディアのカラーバランス、印刷メディアの温度感度、印刷メディアのサイズ、印刷メディアに存在する色料のタイプ、どのようにプリンタを再構成して、その機能又は印刷メディアに関連するパラメータを更新するかを示すコード、又はプリンタの構成及びプリンタが現在の印刷メディアをどのように取り扱ってその上に印刷するかに関連する任意の他の情報を含む。
【0124】
本明細書で開示された特定の例はバーコードを参照するが、本発明の実施形態はバーコードに関連する使用に限定されない。むしろ、本発明の実施形態は、出力メディアの上で印刷メディア情報をエンコードする任意の種類のコードに関連して使用されてよい。例えば、本明細書で開示された特定の例は、バーコード内の「バー」及び「スペース」を参照するが、そのような用語はコーディング・システム内の「特徴」の例にすぎない。例えば、別個の色は、情報をエンコードするために使用されてよい特徴の例である。したがって、バー及びスペース以外の特徴を使用して、本明細書で開示された手法を実現する方法が、当業者によって理解されるであろう。同様に、本明細書で開示されたある一定の例は、「太い」特徴及び「細い」特徴を参照するが、これらはコーディング・システムにおける特徴の固有性の例にすぎない。したがって、「太い」特徴及び「細い」特徴に適用される手法を、どのようなふうに異なろうと相互に異なる2つの特徴へ、代わって適用してよいことが、当業者によって理解されるであろう。同じことは、より一般的に、「幅」のような用語についても当てはまる。「幅」は、より一般的に、コード内の特徴間で値が変動し得る任意の固有性に代わって意味してよい。
【0125】
前述した手法は、例えば、ハードウェア、ソフトウェア、ファームウェア、又はこれらの任意の組み合わせで実現されてよい。前述した手法は、プログラム可能なコンピュータの上で実行する1つ又は複数のコンピュータ・プログラムとして実現されてよい。コンピュータは、プロセッサ、プロセッサによって読み取られる記憶メディア(例えば、揮発性及び不揮発性メモリ及び/又は記憶素子を含む)、少なくとも1つの入力デバイス、及び少なくとも1つの出力デバイスを含む。プログラム・コードは、入力デバイスを使用して入れられた入力へ適用され、説明された機能を実行して出力を生成する。出力は1つ又は複数の出力デバイスへ提供されてよい。
【0126】
下記の請求項の範囲の中にある各々のコンピュータ・プログラムは、任意のプログラミング言語、例えば、アセンブリ言語、機械語、高レベル手続きプログラミング言語、又はオブジェクト指向プログラミング言語で実現されてよい。プログラミング言語は、例えば、コンパイル又は解釈されるプログラミング言語であってよい。
【0127】
各々のそのようなコンピュータ・プログラムは、コンピュータ・プロセッサによって実行される機械読み取り可能記憶デバイスで有形的に具体化されたコンピュータ・プログラムプロダクトとして実現されてよい。本発明の方法ステップは、コンピュータ・プロセッサによって実行されてよい。コンピュータ・プロセッサは、コンピュータ読み取り可能メディアの上で有形的に具体化されたプログラムを実行し、入力の上に動作し出力を生成することによって本発明の機能を実行する。適切なプロセッサは、例として、汎用マイクロプロセッサ及び特殊目的マイクロプロセッサの双方を含む。一般的に、プロセッサは読み出し専用メモリ及び/又はランダム・アクセス・メモリから命令及びデータを受け取る。コンピュータ・プログラム命令を有形的に具体化する適切な記憶デバイスは、例えば、不揮発性メモリの全ての形態、例えば、EPROM、EEPROM、フラッシュ・メモリ・デバイスを含む半導体メモリ・デバイス、磁気ディスク、例えば、内部ハードディスク及び取り外し可能ディスク、光磁気ディスク、及びCD−ROMを含む。前述した任意のものが、特殊設計のASIC(アプリケーション特定集積回路)又はEPGA(フィールドプログラマブルゲートアレイ)によって補足されるか、それらの中に組み込まれてよい。更に、コンピュータは、一般的に、記憶メディア、例えば、内部ディスク(図示されず)又は取り外し可能ディスクからプログラム及びデータを受け取ることができる。これらの構成部品は、更に、従来のデスクトップ又はワークステーション・コンピュータ、及び本明細書で説明された方法を実現するコンピュータ・プログラムを実行するのに適した他のコンピュータの中に存在するであろう。これらのコンピュータは、任意のディジタル印刷エンジン又はマーキング・エンジン、ディスプレイ・モニタ、又は紙、フィルム、ディスプレイ・スクリーン、又は他の出力メディアの上にカラー又はグレースケール・ピクセルを生成することのできる他のラスタ出力デバイスと結合して使用されてよい。
【0128】
本発明の様々な実施形態で使用するのに適したプリンタは、典型的には、印刷エンジン及びプリンタ・コントローラを含む。プリンタ・コントローラは、ホスト・コンピュータから印刷データを受け取るか、直接接続(例えば、ワイヤ又は光ケーブルを使用して)又は無線伝送を介してメモリ・デバイス内の画像データに直接アクセスし、ページ情報を生成する。プリンタ・コントローラは、ページ情報を印刷エンジンへ伝送して印刷させる。印刷エンジンは、ページ情報によって指定された画像の物理的印刷を、出力メディア上で実行する。
【図面の簡単な説明】
【0129】
【図1】従来のバーコードの一般的な例を示す図である。
【図2A】本発明の1つの実施形態に従って情報をエンコードするために使用される方法のフローチャートである。
【図2B】本発明の1つの実施形態に従って情報をデコードするために使用される方法のフローチャートである。
【図3A】本発明の1つの実施形態に従ったバーコード及び対応する入れ子パターンを示す図である。
【図3B】本発明の1つの実施形態に従ったバーコード及び対応する入れ子パターンを示す図である。
【図3C】本発明の1つの実施形態に従ったバーコード及び対応する入れ子パターンを示す図である。
【図3D】本発明の1つの実施形態に従ったバーコード及び対応する入れ子パターンを示す図である。
【図3E】本発明の1つの実施形態に従ったバーコード及び対応する入れ子パターンを示す図である。
【図3F】本発明の1つの実施形態に従ったバーコード及び対応する入れ子パターンを示す図である。
【図3G】本発明の1つの実施形態に従ったバーコード及び対応する入れ子パターンを示す図である。
【図4A】本発明の1つの実施形態に従ってバーコードをデコードする方法のフローチャートである。
【図4B】本発明の第1の実施形態に従って、バーコードから導き出された複数の値を単一の値へ組み合わせる方法のフローチャートである。
【図4C】本発明の第2の実施形態に従って、バーコードから導き出された複数の値を単一の値へ組み合わせる方法のフローチャートである。
【図4D】複数の幅分布を認識するシステムの中で値をバーコードへ割り当てるため、本発明の1つの実施形態で実行される方法のフローチャートである。
【図5A】本発明の1つの実施形態に従ってバーコード・システム内でバーコードのフル・セットを生成する再帰的手続きのフローチャートである。
【図5B】本発明の1つの実施形態に従ってバーコード・システム内でバーコードのフル・セットを生成する再帰的手続きのフローチャートである。
【図6A】本発明の1つの実施形態に従って値をコードへエンコードする方法のフローチャートである。
【図6B】本発明の1つの実施形態に従って、コードからの情報を、そのコードによって表された値へデコードする方法のフローチャートである。
【図6C】本発明の1つの実施形態に従って値をコードへエンコードするために使用される方法のフローチャートである。
【図6D】本発明の1つの実施形態に従って値をコードへエンコードするために使用される方法のフローチャートである。
【図6E】コードを値へデコードするため、本発明の1つの実施形態に従って実行される方法のフローチャートである。
【図7】本発明の1つの実施形態に従ったバーコードを含む印刷メディアを示す図である。
【図8】本発明の1つの実施形態に従って印刷メディア上に印刷されたバーコードに基づいてプリンタが構成されるシステムのデータフローを示す図である。
【図9】本発明の1つの実施形態に従って図8のシステムによって実行される方法のフローチャートである。

【特許請求の範囲】
【請求項1】
(A)入力値の範囲を識別するステップと、
(B)前記入力値の範囲をエンコードすることのできる特徴値の分布を識別するステップと、
(C)前記入力値の範囲において値を識別してバーコードの中にエンコードするステップと、
(D)値に対応する順序づけられた複数の特徴を含み、また特徴値の分布を有するデータ部分をバーコードの中に提供するステップと
を含む、バーコードを生成する方法。
【請求項2】
複数の順序づけられた特徴がスタートコード又はストップコードを含まない請求項1に記載の方法。
【請求項3】
バーコードがスタートコード又はストップコードを含まない請求項1に記載の方法。
【請求項4】
(E)バーコードを出力メディアへ書き込むステップを更に含む請求項1に記載の方法。
【請求項5】
ステップ(E)が、スタートコード又はストップコードを出力メディアへ書き込むことなく、バーコードを出力メディアへ書き込むステップを含む請求項4に記載の方法。
【請求項6】
ステップ(E)が、出力メディアから取り外すことのできる出力メディア部分へバーコードを書き込むステップを含む請求項4に記載の方法。
【請求項7】
順序づけられた複数の特徴が、第1の固有性を有するN1個の特徴及び第2の固有性を有するN2個の特徴から構成され、少なくとも1つの特徴制約がN1及びN2を指定する請求項1に記載の方法。
【請求項8】
入力値の範囲を識別する第1の識別手段と、
前記入力値の範囲をエンコードすることのできる特徴値の分布を識別する第2の識別手段と、
前記入力値の範囲の中において値を識別してバーコードの中にエンコードする第3の識別手段と、
値に対応する順序づけられた複数の特徴を含み、また特徴値の分布を有するデータ部分をバーコードの中に提供する手段と
を含む、バーコードを生成するシステム。
【請求項9】
バーコードがスタートコード又はストップコードを含まない請求項8に記載のシステム。
【請求項10】
バーコードを出力メディアへ書き込む手段を更に含む請求項8に記載のシステム。
【請求項11】
(A)バーコードのデータ部分の中において、エンコード情報を表す複数の特徴を識別するステップと、
(B)バーコードのデータ部分を解析して、複数の特徴の間の特徴値の分布を識別するステップと、
(C)特徴値の分布及び複数の特徴の双方に基づいて、複数の特徴からデコード情報を導き出すステップと
を含む、バーコードによって表されたエンコード情報をデコードする方法。
【請求項12】
ステップ(C)が、
(C)(1)複数の特徴に対応する複数の値を識別するステップと、
(C)(2)複数の値からデコード情報を導き出すステップと
を含む請求項11に記載の方法。
【請求項13】
デコード情報が単一の値から構成され、ステップ(C)(2)が複数の値から単一の値を導き出すステップを含む請求項12に記載の方法。
【請求項14】
バーコードの部分集合がスタートコード又はストップコードを表さない請求項11に記載の方法。
【請求項15】
複数の特徴がバーコード内の全ての特徴を含む請求項11に記載の方法。
【請求項16】
バーコードが出力メディアの中に具体化され、ステップ(A)が出力メディアから複数の特徴を読み取るステップを含む請求項11に記載の方法。
【請求項17】
ステップ(A)が、スタートコード又はストップコードを読み取ることなく、出力メディアから複数の特徴を読み取るステップを含む請求項16に記載の方法。
【請求項18】
ステップ(A)が、出力メディア上の既定サイズの領域から複数の特徴を読み取るステップを含む請求項16に記載の方法。
【請求項19】
デコード情報が出力メディアの少なくとも1つの固有性を表し、(D)出力メディアの少なくとも1つの固有性に基づいてプリンタを構成するステップを更に含む請求項16に記載の方法。
【請求項20】
(E)ステップ(D)を実行した後に出力メディア上に出力を印刷するステップを更に含む請求項19に記載の方法。
【請求項21】
バーコードのデータ部分の中において、エンコード情報を表す複数の特徴を識別する手段と、
前記バーコードのデータ部分を解析し、複数の特徴の間の特徴値の分布を識別する手段と、
特徴値の分布及び複数の特徴の双方に基づいて、複数の特徴からデコード情報を導き出す手段と
を含む、バーコードによって表されたエンコード情報をデコードするシステム。
【請求項22】
導き出す手段が、
複数の特徴に対応する複数の値を識別する手段と、
複数の値からデコード情報を導き出す手段と
を含む請求項21に記載のシステム。
【請求項23】
バーコードの部分集合がスタートコード又はストップコードを表さない請求項21に記載の方法。
【請求項24】
バーコードが出力メディアの中に具体化され、識別する手段が出力メディアから複数の特徴を読み取る手段を含む請求項21に記載のシステム。
【請求項25】
(A)下記のステップ(A)(1)及び(A)(2)を実行することによって複数の特徴の複数の部分集合を識別するステップであって、ここで、ステップ(A)(1)は、共通の固有性の値を共有する複数の特徴の第1の部分集合を識別し、ステップ(A)(2)は、第1の部分集合を除き複数の特徴の中の全ての特徴を、複数の特徴の第2の部分集合として識別する、ステップと、
(B)複数の部分集合を複数の値へデコードするステップと
を含む、複数の特徴を含むコードをデコードする方法。
【請求項26】
(C)複数の値に基づいて最終値を識別するステップを更に含む請求項25に記載の方法。
【請求項27】
ステップ(C)が、
(C)(1)中間値を初期化するステップと、
(C)(2)複数の値Viの各々について
(a)対応する乗数Ciを識別し、
(b)乗数Ciに中間値を掛けて積を生成し、
(c)Viを中間値に加えて合計を取得し、
(d)合計を中間値に割り当て、
(C)(3)中間値を最終値に割り当てるステップと
を含む請求項26に記載の方法。
【請求項28】
ステップ(C)が、
(C)(1)複数の値に基づいて中間値を識別するステップと、
(C)(2)オフセットを中間値に加えて最終値を生成するステップと
を含む請求項26に記載の方法。
【請求項29】
ステップ(B)が、
(B)(1)第1の部分集合内の特徴が第1の文字によって表され、第2の部分集合内の特徴が第2の文字によって表されるパターンを識別するステップと、
(B)(2)文字のパターンに基づいて値を識別するステップと
を含む請求項25に記載の方法。
【請求項30】
ステップ(B)が、
(B)(3)複数の特徴から前記第1の部分集合を除去するステップと、
(B)(4)ステップ(A)(1)、(A)(2)、(B)(1)及び(B)(2)を反復するステップと
を更に含む請求項29に記載の方法。
【請求項31】
ステップ(B)が、
(B)(1)複数の部分集合に対応する複数のパターンを識別するステップと、
(B)(2)前記複数のパターンに基づいて複数の値を識別するステップと
を含む請求項25に記載の方法。
【請求項32】
コードがバーコードを含む請求項25に記載の方法。
【請求項33】
複数の特徴の複数の部分集合を識別する第1の識別手段であって、ここで、当該第1の識別手段が、共通の固有性の値を共有する複数の特徴の第1の部分集合を識別する第2の識別手段と、第1の部分集合を除き複数の特徴の中の全ての特徴を、複数の特徴の第2の部分集合として識別する第3の識別手段とを有する、第1の識別手段と、
複数の部分集合を複数の値へデコードする手段と
を含む、複数の特徴を含むコードをデコードするシステム。
【請求項34】
複数の値に基づいて最終値を識別する手段を更に含む請求項33に記載のシステム。
【請求項35】
デコードする手段が、
複数の部分集合に対応する複数のパターンを識別する手段と、
複数のパターンに基づいて複数の値を識別する手段と
を含む請求項33に記載のシステム。
【請求項36】
(A)コード内の特徴の総数NTをNの初期値として識別するステップと、
(B)第1の特徴値を識別するステップと、
(C)第1の特徴値以外の値を有するコード内の特徴の総数NTgをNgの初期値として識別するステップと、
(D)NT及びNTgの値に基づいて特徴の組み合わせの数Csを識別するステップと、
(E)値V及び特徴の組み合わせの数Csに基づいてコード内の複数の特徴の1つへ値を割り当てるステップと
を含む、値Vをコードへエンコードする方法。
【請求項37】
(F)Nの値を減分するステップと、
(G)N<0になるまでステップ(D)〜(F)を反復し、ステップ(E)の各々の実行がコード内の別個の特徴の上で協働するステップと
を更に含む請求項36に記載の方法。
【請求項38】
ステップ(E)が、
(D)(1)V≧Csであれば、複数の特徴の1つへ第1の値を割り当ててCsの値だけVの値を減らすステップと、
(D)(2)V<Csであれば、複数の特徴の1つへ第2の値を割り当ててNgの値を減分するステップと
を含む請求項36に記載の方法。
【請求項39】
コード内の特徴の総数NTをNの初期値として識別する手段と、
第1の特徴値を識別する手段と、
第1の特徴値以外の値を有するコード内の特徴の総数NTgをNgの初期値として識別する手段と、
NT及びNTgの値に基づいて特徴の組み合わせの数Csを識別する手段と、
値V及び特徴の組み合わせの数Csに基づいてコード内の複数の特徴の1つへ値を割り当てる手段と
を含む、値Vをコードへエンコードするシステム。
【請求項40】
(A)コード内の特徴の総数NTをNの初期値として識別するステップと、
(B)第1の特徴値以外の値を有するコード内の特徴の総数NTgをNgの初期値として識別するステップと、
(C)NT及びNTgの値に基づいて特徴の組み合わせの数Csを識別するステップと、
(D)コード内の特徴を選択するステップと、
(E)選択されたコード特徴の値、Nの値、及びNgの値に基づいて値Vを更新するステップと
を含む、コードを値Vへデコードする方法。
【請求項41】
(F)Nの値を減分するステップと、
(G)コード内の全ての特徴がステップ(D)で選択されてしまうまで、ステップ(D)〜(E)を反復するステップと
を更に含む請求項40に記載の方法。
【請求項42】
ステップ(E)が、
(D)(1)選択された特徴が第1の値を有し、またNg≧0であれば、N!/Ng!/(N−Ng)!をVへ加えるステップと、
(D)(2)選択された特徴が第2の値を有すれば、Ngの値を減分するステップと
を含む請求項40に記載の方法。
【請求項43】
コード内の特徴の総数NTをNの初期値として識別する手段と、
第1の特徴値以外の値を有するコード内の特徴の総数NTgをNgの初期値として識別する手段と、
NT及びNTgの値に基づいて特徴の組み合わせの数Csを識別する手段と、
コード内の特徴を選択する手段と、
選択されたコード特徴の値、Nの値、及びNgの値に基づいて値Vを更新する手段と
を含む、コードを値Vへデコードするシステム。
【請求項44】
(A)第1のコードの第1の特徴分布を識別するステップと、
(B)第2のコードの第2の特徴分布を識別するステップと、
(C)前記第1の特徴分布及び前記第2の特徴分布の組み合わせに基づいて第1の値を識別するステップと
を含む、第1のコード及び第2のコードを第1の値へデコードする方法。
【請求項45】
第1及び第2のコードがバーコードを含み、第1及び第2の特徴分布が幅分布を含む請求項44に記載の方法。
【請求項46】
第1の特徴分布が、第1のコードについて許容される複数の特徴分布の1つを含む請求項44に記載の方法。
【請求項47】
第2の特徴分布が、第2のコードについて許容される複数の特徴分布の1つを含む請求項46に記載の方法。
【請求項48】
(D)第1のコードを第2の値へデコードするステップを更に含む請求項44に記載の方法。
【請求項49】
(E)第2のコードを第3の値へデコードするステップを更に含む請求項48に記載の方法。
【請求項50】
第1のコードの第1の特徴分布を識別する手段と、
第2のコードの第2の特徴分布を識別する手段と、
前記第1の特徴分布及び前記第2の特徴分布の組み合わせに基づいて第1の値を識別する手段と
を含む、第1のコード及び第2のコードを第1の値へデコードするシステム。
【請求項51】
第1及び第2のコードがバーコードを含み、第1及び第2の特徴分布が幅分布を含む請求項50に記載のシステム。

【図1】
image rotate

【図2A】
image rotate

【図2B】
image rotate

【図3A】
image rotate

【図3B】
image rotate

【図3C】
image rotate

【図3D】
image rotate

【図3E】
image rotate

【図3F】
image rotate

【図3G】
image rotate

【図4A】
image rotate

【図4B】
image rotate

【図4C】
image rotate

【図4D】
image rotate

【図5A】
image rotate

【図5B】
image rotate

【図6A】
image rotate

【図6B】
image rotate

【図6C】
image rotate

【図6D】
image rotate

【図6E】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公表番号】特表2008−541297(P2008−541297A)
【公表日】平成20年11月20日(2008.11.20)
【国際特許分類】
【出願番号】特願2008−512339(P2008−512339)
【出願日】平成18年5月9日(2006.5.9)
【国際出願番号】PCT/US2006/017720
【国際公開番号】WO2006/127253
【国際公開日】平成18年11月30日(2006.11.30)
【出願人】(507383046)センシン・キャピタル,リミテッド・ライアビリティ・カンパニー (1)
【Fターム(参考)】