JP4376353B2 - バーコードの連続した走査を再構成する方法 - Google Patents

バーコードの連続した走査を再構成する方法 Download PDF

Info

Publication number
JP4376353B2
JP4376353B2 JP13956599A JP13956599A JP4376353B2 JP 4376353 B2 JP4376353 B2 JP 4376353B2 JP 13956599 A JP13956599 A JP 13956599A JP 13956599 A JP13956599 A JP 13956599A JP 4376353 B2 JP4376353 B2 JP 4376353B2
Authority
JP
Japan
Prior art keywords
scan
component
components
block
check
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP13956599A
Other languages
English (en)
Other versions
JP2000057253A (ja
Inventor
アントニオ・デ・レンツィス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Datalogic SpA
Original Assignee
Datalogic SpA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Datalogic SpA filed Critical Datalogic SpA
Publication of JP2000057253A publication Critical patent/JP2000057253A/ja
Application granted granted Critical
Publication of JP4376353B2 publication Critical patent/JP4376353B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
    • G06K7/1404Methods for optical code recognition
    • G06K7/146Methods for optical code recognition the method including quality enhancement steps
    • G06K7/1491Methods for optical code recognition the method including quality enhancement steps the method including a reconstruction step, e.g. stitching two pieces of bar code together to derive the full bar code
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
    • G06K7/1404Methods for optical code recognition
    • G06K7/146Methods for optical code recognition the method including quality enhancement steps
    • G06K7/1465Methods for optical code recognition the method including quality enhancement steps using several successive scans of the optical code

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • General Physics & Mathematics (AREA)
  • Electromagnetism (AREA)
  • General Health & Medical Sciences (AREA)
  • Toxicology (AREA)
  • Artificial Intelligence (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Quality & Reliability (AREA)
  • Mechanical Optical Scanning Systems (AREA)
  • Image Analysis (AREA)
  • Container Filling Or Packaging Operations (AREA)
  • Analysing Materials By The Use Of Radiation (AREA)
  • Optical Transform (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、バーコードの連続した走査を再構成する方法に関する。
【0002】
【従来の技術】
知られているように、バーコード(図2)は、暗色素子(通常は黒色)が明るい素子(スペース、通常は白色)によって分離されている複数の長方形の素子(バー)から構成された符号化された情報を含む光学コードである。
【0003】
このバーコード用の読取り装置は、通常、照明装置(たとえば、レーザビーム源)と、センサ(たとえば、フォトダイオード)とを含んでおり、照明装置がバーコードと交差する走査路に沿って移動する光読取りビームを発生するように構成され、センサがレーザスポットによって照明された走査路の部分から拡散された光の一部分を受光する。このセンサは、バーコードを走査した結果これを照射した放射線に応答して、バーコードにおける明いおよび暗い素子の連続したものによって変調される波形を有する交流電気信号を出力する。知られているように、光はバーによって吸収され、スペースによって反射されるため、スペースによって発生された信号がセンサ上に入射した放射線が多いために高い値を有し、一方バーによって発生された信号はセンサに入射した放射線量が少ないために低い値を有する。
【0004】
この方法において、バーコードを走査することによって発生された信号は、連続的に2進数にされ、バーコードの構成素子を表し、かつ、スペースを走査したときの第1の高レベルと、バーを走査したときの第2の低レベルとを含む2レベルの波形を有する。
【0005】
一般に、バーコードは、そのコードの縦軸とは一致しない走査方向で検査される。したがって、走査は、通常、バーコードの縦軸に対して角度を有する方向で行われる。とくに、この角度がしきい値αmax(図2)を越えた場合、コード構成素子のサブセットが走査され、バーコードの部分的な走査に関連している二進数にされた信号がコード構成素子のサブセットを含む。
【0006】
また、既知の装置では、照明装置とバーコードが付けられている対象物との間において相対運動が生じる。たとえば、移動装置によって運ばれる場合、照明装置は固定され、対象物はこの照明装置に関して一定の速度で移動する。
【0007】
このために、通常、連続的な部分走査が、バーコードなの種々の隣接するサブグループの走査に関連している。
【0008】
いくつかの既知の再構成装置は、バコードを再構成して復号するために異なった位置において行われる同じコードの連続的な部分走査をまとめて組立てるように構成されている。
【0009】
この種の再構成装置は、バーコードの縦軸に関して所定の傾斜を有する部分的な走査のこれらの素子をまとめて組立てるものであり、このコードの全方向読取りを行う。
【0010】
【発明が解決しようとする課題】
本発明の目的は、バーコードの連続した部分的な走査を再構成し、とくに効率的なコードの全方向読取りを特徴とする方法を提供することである。さらに、本発明の目的は、連続した部分的走査を効率的に処理する連続した部分的な走査を再構成する方法を提供することである。
【0011】
【課題を解決するための手段】
この目的は、第1および第2の反射率を有し、基準位置に関する位置および幅で表される複数の素子を含むバーコードの連続した走査を再構成する方法に関連した本発明によって達成され、この方法は、バーコードの第1の走査を行い、第1の走査における絶対基準位置に関する素子の位置および幅を決定し、この第1の走査におけるこの素子が後続する走査における絶対基準位置に関してとる位置を計算し、バーコードの第2の走査を行い、第2の走査における絶対基準位置に関する素子の位置および幅を決定し、一致探索ステップを実行して、第1の走査における1以上の基準素子と第2の走査における1つの基準素子とを見出し、両走査の素子が絶対基準に関して実質的に同じ位置および実質的に同じ幅を有しており、再構成された走査を発生させるように第1の走査における素子を第2の走査における素子と結合するステップを含んでいることを特徴とする。
【0012】
とくに、この一致探索ステップに続いて、第1の走査および第2の走査における1以上の予め定められた数の素子が絶対基準に関して実質的に同じ位置および実質的に同じ幅を有していることをチェックする結合チェックステップが行われる。
【0013】
とくに、結合チェックステップは、第1の走査における素子の1以上の最小の規定されたセットを第2の走査における構成素子の最小の規定された1セットと比較することによって行われる。
【0014】
【発明の実施の形態】
以下、本発明を、その1実施形態を示している添付図面を参照して説明する。図1において、参照符号1 は読取りヘッド5 を備えたバーコード読取り装置を全体的に示しており、この読取りヘッド5 はコンベアベルト6 のほうを向いており、このベルト6 上に配置され、読取りヘッド5 に関して直線方向Dに一定の速度で移動できる対象物7 (たとえば、小荷物)を識別するように構成されている。読取りヘッド5 のほうを向いた対象物7 の1つの面7aには、1以上の光学コード8 、とくに既知の種類のバーコード(図2)が付けられている。各バーコードは、異なった反射率の、とくに、明るい部分(スペース、通常は白色)によって分離された暗い(通常、黒色)部分を有する複数の長方形部分(バー)から構成されている。異なった暗い部分および明るい部分(バーおよびスペース)は、異なった幅を有することができる。
【0015】
このコードの明および暗部分、すなわちバーおよびスペースは、バーコードの構成素子である。したがって、以下の説明において、コードの“構成素子”はコードのバーまたはスペースを意味する。
【0016】
コードの隣接した構成素子は、符号化された情報が関連しているコードの文字を一緒に形成する。
【0017】
とくに、バーコードは、その第1の終端部分の近くにおいて、以下スタートパターンと呼ばれるコード開始文字を一緒に規定する複数の構成素子を有している(図2)。さらに、バーコードは、その第2の終端部分の近くにおいて、以下ストップパターンと呼ばれるコード終了文字を一緒に規定する複数の構成素子を有している。コード開始およびコード終了文字、すなわちスタートパターンおよびストップパターンは、コードのいわゆる“同期文字”を定義している。
【0018】
読取りヘッド5 は、既知の照明装置17(たとえば、レーザ源17a 、およびこのレーザ源17a が発生したレーザビームを反射するように構成された回転プリズム反射器17b )を具備し、この照明装置はレーザ走査ビームFを光学コード8 上に導き、このコード8 を走査する。
【0019】
とくに、レーザビームFは実質的に傾斜した平面において移動し、ベルト6 およびその上の走査路Lに沿っている対象物を横断して交差し、レーザスポットがこの走査路L上を走査開始位置Li から走査終了位置Lf まで移動する。
【0020】
読取りヘッド5 はまた、その瞬間に走査されている通路Lの部分の輝度に比例した強度を有する出力アナログ信号S(t) を生成するために拡散された光放射線Rをピックアップするための光学獲得およびフォーカスシステム21(略図で表されている)と関連したセンサ20(たとえば、フォトダイオード)を含んでいる。アナログ信号S(t) は電子装置22に供給され、ここで本発明に従って処理される。この装置22はまた、コードと関連された符号化された情報をピックアップするように構成されている。
【0021】
図1を参照して説明した読取り装置は、当然ながら、本発明による方法と関連して使用されることのできる種々の読取り装置の一例である。この装置1 は、異る種類のものであることができ、たとえば、バーコードを照射するためのランプまたはLED、あるいはバーコード中間調レベルの2次元映像を撮像するためのテレビジョンカメラまたはCCDを含むことができ、また、走査されているバーコードの部分の輝度に比例した強度を有する信号S(t) を同様に出力する連続処理装置であることができる。
【0022】
図3は、電子処理装置22の動作サイクルの全体的なブロック図である。
とくに、図3において、開始ブロック(スタート)からブロック100 に進行し、このブロック100 は、走査路Lの完全な走査の後にセンサ20によって発生されたアナログ信号S(t) を獲得する。“完全な走査”とは、レーザスポットが走査開始位置Li から走査終了位置Lf に移動する走査を意味する。
【0023】
アナログ信号S(t) は、一般に、走査開始位置Li (図1)の走査に対応した最初の部分と、走査終了位置Lf (図1)の走査に対応した最後の部分と、走査されたバーコードに対応しており、低い振幅(谷部)の領域Vによって分離された高い振幅(ピーク)を有する領域Pのシーケンスによって形成された交流部分(図15aに示されている)を含む中間部分とを有している。
【0024】
信号S(t) の交流部分の波形において、ピークPはスペースを表し、谷部Vがバーを表している。
【0025】
その後、ブロック100 において、アナログ信号S(t) は2進数にされ、それはその交流部分に対応しており、2つのレベル(図15bに示されている)を有する信号Sd(t) を出力し、これらのレベルは、スペースを走査した時の第1の高レベルHIと、バーを走査した時の第2の低レベルLOとから構成されている。信号Sd(t) の高レベルHIおよび低レベルLOは、信号Sd(t) の異なったレベルの部分を分離し、そのコードの2つの異なった構成素子(バー・スペース)間の分離領域を表す実質的に垂直な転移フロントによって結合される。
【0026】
二進数にされた信号Sd(t) の波形は、走査が始まる瞬間、すなわち、レーザスポットが走査開始位置Li を照射する瞬間にその原点(時間to )を有する時間軸上に位置される。
【0027】
走査開始位置Li とは、バーコード構成素子の位置とみなされる絶対空間基準であり、瞬間to は、信号Sd(t) により表されるコード構成素子の時間的な位置が測定される絶対時間基準とみなされる。
【0028】
とくに、時間原点to と、デジタル化された信号フロントSd(t) が現れる瞬間ti との間で測定された時間Tp は、当該フロントが続くバーコード構成素子と絶対基準(to )との間の時間距離を表す。
【0029】
時間インターバルTp は、走査開始位置に関するバーコード構成素子の位置を表している。
【0030】
デジタル化された信号Sd(t) の高レベル部分HIおよび低レベル部分LOの少なくとも一方の時間幅Tc は、バーコード構成素子の幅を表す。
【0031】
このために、各バーコード構成素子は、その時間インターバルTp が絶対基準(走査開始位置Li に等しい時間to )に関するバーコード構成素子の位置を表し、また時間インターバルTc がコード構成素子の幅を表す信号Sd(t) で表される。
【0032】
以下の説明では、簡明にするために、コード構成素子の位置を参照し、この用語がその時間距離Tp を意味し、一方“コード構成素子の幅”が時間インターバルTc を意味する。
【0033】
また、以下の説明において、フレームという用語は、デジタル化された信号Sd(t) によって表された1組のコード構成素子を意味する。
【0034】
換言すると、各フレームは、走査されたバーコードの構成素子を表す複数の位置および幅を含んでいる。
【0035】
たとえば、フレームは、表TABF(図20)によって表されることができ、この表において、
・第1の行は、フレームの素子の、絶対基準to に関する位置(時間tp )をそれぞれ含み、したがってバーコード構成素子の位置をそれぞれ表している多数のセルを含んでいる。
【0036】
・第2の行は、対応したフレーム素子の幅(時間tc )をそれぞれ含み、したがってバーコード構成素子の幅をそれぞれ表している多数のセルを含んでいる。
【0037】
以下の説明において、クラスタという用語は、以下に説明する方法によってグループ化された1組のフレームを意味する。実際に、各クラスタは記憶領域を表し、この記憶領域において、所定のバーコードに関連したフレームが、そのフレーム自身が以下に説明するように連続した走査中に獲得される同じ順序で記憶される。
【0038】
クラスタ素子は、たとえば表TABC(図20)によってフレームに類似したやり方で表され、この表において、
・第1の行は、クラスタの素子の、絶対基準to に関する位置(時間tp )をそれぞれ含み、したがってクラスタにグループ化されたバーコード構成素子の位置をそれぞれ表している複数のセルを含んでいる。
【0039】
・第2の行は、クラスタの対応した素子の幅(時間tc )をそれぞれ含み、したがってクラスタにグループ化されたバーコード構成素子の幅をそれぞれ表している複数のセルを含んでいる。
【0040】
表TABCおよびTABFは、バーコード構成素子をその位置および幅によって規定するセルの対(一方が第1の行からのものであり、他方が第2の行からのものである)を選択することができる各ポインタiおよびjによって走査されることができる。
【0041】
多数の光学コードまたは光学コードの多数の部分が単一の走査によって照射された場合、信号Sd(t) は1組の個々の異なったフレームF1 ,F2 ,…Fn を含む。
【0042】
フレームがバーコードの全ての構成素子を含むのは、コードの縦軸Hとこの軸Hに関してαmax以下で傾斜したラインL´(図2)との間のラインに沿って走査が行われた場合のみである。
【0043】
しかしながら、対象物7 およびその上の光学コード8 は、走査路Lに関して任意の相対配置を有する。その結果、走査ラインは通常バーコードの一部分しか横断しない。
【0044】
このために、各フレームは、通常、バーコード構成素子のサブグループ(バーコード全体ではなく)の走査と関連している。したがって、各フレームは通常部分的な走査と関連し、前述した構成素子のサブグループを表す。
【0045】
さらに、対象物7 の読取りヘッド5 に関する運動のために、連続した部分装置L1 ,L2 …(図16)は、コードの隣接した部分と交差して横断し、構成素子の異なったサブグループに関連した連続したフレームを生成する。また、本発明は、コード構成素子を表す一般的な信号からスタートするバーコードの連続した部分的走査を再構成する方法に関する。この信号がどのようにして発生または処理されたかは問題ではない。
【0046】
以下の説明において明らかになるように、同じコードの走査に関連した連続したフレームは、ポインタiがとる値に基づいて個々に選択されることのできる各クラスタにグループ化される。
【0047】
各クラスタは、状態と呼ばれる第1のインデックスによってマークされ、この第1のインデックスはクラスタの状態を示す。とくにインデックスは3つの異なった状態に対応した3つの値をとることができる:
・状態=0:関連したクラスタは空である。すなわち、フレームがグループ化されることのできるアクチブなデータ構造とは全く関連していない。
【0048】
・状態=1:関連したクラスタは、同期文字、すなわちスタートパターンまたはストップパターンが一回目に認識されたフレームを含んでいる。
【0049】
・状態=2:関連したクラスタは、同期文字が認識されている少なくとも2つのフレームを含んでいる。
【0050】
以下の説明において、状態1および状態2をアクチブと呼び、一方状態0を非アクチブと呼ぶ。当然ながら、アルゴリズムが始動されたとき、全てのクラスタの状態インデックスはゼロである。続いて、クラスタ自身に関して行われたチェックの結果に応じて、あるいは詳細に説明するように抽出されたフレームに各クラスタを結合しようとした結果に応じて、クラスタの状態インデックスが変更される(2つのアクチブの一方に移行させられるか、あるいはゼロに設定される)。その結果、一般にアクチブなクラスタと非アクチブなクラスタとが常に間断なく存在することとなる。
【0051】
各クラスタはまた、不一致(NOMATCH) と呼ばれる第2のインデックスでマークされ、この第2のインデックスは、同じクラスタに付加的なフレームを関連させるために行った試みのうち、失敗したものの数を表す。
【0052】
ブロック100 の後に、論理動作i=0に従ってカウンタの内容iを消去するブロック110 が続く。
【0053】
ブロック110 の後に、i番目のクラスタを選択し、このi番目のクラスタと関連した第1の状態インデックスの状態をチェックするブロック120 が続く。とくに、ブロック120 は、i番目のクラスタの状態インデックスがアクチブであるかどうか、すなわち:
クラスタ(i),状態=1、あるいは
クラスタ(i),状態=2
であるかどうかをチェックする。
【0054】
ブロック120 によるチェックが正の結果(すなわち、検査されたi番目のクラスタがアクチブである)場合、ブロック130 が選択される。それ以外の場合(i番目のクラスタが非アクチブ)、ブロック140 がブロック120 に後続する。
【0055】
ブロック130 は、i番目のクラスタを再選択し、第2の不一致(NOMATCH) インデックスの値をチェックする。とくに、不一致インデックスがしきい値 MAX-NOMATCH以上である場合、すなわち、i番目のクラスタを付加的なフレームと関連させるために少なくとも MAX-NOMATCHの失敗した試みが行われた場合、ブロック130 は、現在アクチブであるi番目のクラスタの第1の状態インデックスを強制的にゼロにするブロック150 を選択する、すなわち、
クラスタ(i),状態=0
を選択する。
【0056】
換言すると、アクチブなクラスタを新しいフレームと関連させるために少なくとも MAX-NOMATCHの失敗した試みが行われたそれらアクチブなクラスタは、非アクチブな状態に移行させられる。すなわち、それらは取消されて、アクチブなクラスタと関連させることのできないフレーム素子を記憶するために利用可能にされる。
【0057】
ブロック150 がブロック140 に後続する。
ブロック140 は、そのカウンタの現在の値iを検査するように構成されている。その値がメモリ中に存在するクラスタの最大数より低い(i<クラスタの最大数)場合、このブロック140 の後には、論理動作i=i+1によってカウンタの内容iを1だけ増加させるブロック160 が後続し、このプロセスはブロック160 からブロック120 に戻る。
【0058】
ブロック140 において、カウンタの内容iがメモリ中に存在するクラスタの数と等しいことが検出された(i=クラスタの最大数)場合、このブロック140 の後にブロック170 が続く。
【0059】
先行する動作には、メモリ中に存在する全てのクラスタのセットを走査した結果を結合することが含まれ、走査された各クラスタに対して以下の動作が行われる:
・クラスタが非アクチブインデックス(状態=0)によってマークされた場合、クラスタは変更されない(すなわち、どのタイプの動作も行われない)。
【0060】
・クラスタがアクチブインデックス(状態=1,2)によってマークされた場合、このクラスタを付加的なフレームと関連させるための試みの失敗した数がチェックされ、しきい値 MAX-NOMATCHを越えた場合、クラスタは、状態インデックスを強制的にゼロにすることによって非アクチブにされる。
【0061】
ブロック170 は、完全な走査に関連した信号Sd(t) から単一のフレームFi を選択するように既知の方法で行われる。
【0062】
このブロック170 の後にブロック180 が後続し、このブロック180 においては、前に選択されたフレームFi の素子の数Nf、すなわち、フレームによって表されたバーコード構成素子の数をカウントする。この数Nfがしきい値を規定している構成素子の最小数を越えた場合、ブロック180 の後にブロック190 が後続し、そうでなければ、ブロック180 の後にブロック200 が後続する。フレームFi が構成素子の最小数を越える多数の構成素子を含んでいる場合に選択されるブロック190 (以下詳細に説明する)は、フレームを処理するように実行される。すなわち、このブロック190 は、フレームFi を各アクチブなクラスタと関連させることを試みるように実行される。いずれの場合も、ブロック190 はブロック200 によって後続され、このフロック200 は、検査されているフレームFi がブロック100 によって検出された走査に含まれている最後のフレームであるか否かをチェックする。否である場合、別のフレームFi +1を選択するために、このプロセスはブロック200 からブロック170 に戻り、そうでなければ(走査中のフレームを検査した後)、ブロック200 からブロック100 に戻る。もちろん、別の走査では、対象物7 は前の走査とは異なった位置になり、その結果バーコードの異なった部分が走査され、前の走査における位置とは異なる連続位置で行われたコードの部分的走査に関連したフレームが検出される。
【0063】
図4において、ブロック170 から抽出されたフレームFi を処理するように実行されるブロック190 を詳細に説明する。このプロセスは、フレームFi をメモリ中に存在する全てのアクチブなクラスタと関連させようと試みるものである。
【0064】
とくに、ブロック190 は、第1のクラスタを選択するように構成されたブロック191 を含んでいる。ブロック191 はブロック192 によって後続され、そこにおいて選択されたクラスタがメモリ中に存在する最後のクラスタであるか否かがチェックされる。否である(別のクラスタがメモリ中に存在している)場合、ブロック190 はブロック193 を選択し、そうでなければ(メモリ中に存在しているクラスタを検査した後)、ブロック192 はブロック194 を選択する。
【0065】
ブロック193 は、選択されたクラスタがアクチブなクラスタであるか否かをチェックする。そうである(選択されたクラスタがアクチブである)場合、ブロック193 はブロック195 によって後続され、そうでない(選択されたクラスタが非アクチブである)場合、このプロセスは、ブロック193 からブロック191 に戻る。
【0066】
前述した動作を結合した結果は、全てのクラスタ(アクチブおよびインアクチブ)を走査し、アクチブなクラスタだけを選択することである。それぞれ選択されたアクチブクラスタの場合、フレームFiを以下説明するように関連する。
【0067】
最初に、ブロック195 (以下説明する)はフレームFiおよび選択されたクラスタが交差するか否か、即ち重ねられたときにフレームとクラスタが相当する位置の構成素子を有するか否かをチェックする。
【0068】
ブロック195 のチェックが否定的な結果(フレームFiとクラスタが交差しない)であった場合、ブロック195 からブロック191 へ戻る。そうでなければ(フレームFiとクラスタは交差し結合されることができる)ブロック195 からブロック196 に進む。
【0069】
ブロック196 は、フレームの使用を示している状態にフレームを置くことによって、フレームの状態インデックスを変更する。フレームFiと種々のアクチブクラスタとを結合しようとする次の期間に続いてこのように使用する。
【0070】
ブロック196 にブロック197 が後続し、ブロック197 はフレームFiが既にデコードされているか否かをチェックし、デコードされていないならば(フレームのデコードがまだ行われていない)、ブロック197 にブロック 197aが後続し、このブロックがこのデコードを実行する。そうでなければ(フレームが既にデコードされている)ブロック197 にブロック198 が後続する。フレームがブロック 197aで適切にデコードされていることは、このフレームがバーコードの全ての構成素子を含んでいることを意味し、その場合、勿論、連続する部分的な走査を再構成することは必要ではない。デコードされたコードはそれ故、装置22の外部に送られる。
【0071】
(以下詳細に説明する)ブロック198 はフレームFiと第1のアクチブクラスタとを結合しようとし、これが否定的な結果であるならば、クラスタにより実行される結合が失敗したNOMATCHの数を測定するカウンタの内容は1単位だけ増加され、ブロック198 からブロック191 に移り、ブロック191 は別のアクチブクラスタを選択し、同一のフレームFiと付加的なクラスタとを結合する動作を反復する。
【0072】
ブロック198 の結合プロセスが肯定的な結果であるならば、ブロック198 からブロック 198aに進み、このブロックは、フレームFiが適切に付加されているクラスタをデコードしようとする。クラスタが適切にデコードされたならば、デコードされたコードは装置22の外部に送信される。同様にブロック 198aにはブロック191 が後続される。
【0073】
ブロック194 は、フレームの使用を示すフレームFiの状態インデックス値をチェックする。フレームFiが少なくとも1つのアクチブクラスタとの結合をされていることをインデックスが示したならば、ブロック194 からブロック200 (図3)へ移動され、それによって図4を参照して説明したブロック190 における動作を受けている付加的なフレームFi+1を選択する(ブロック170 )。フレームの状態インデックスが、フレームFiがまだ結合動作を受けていないことを示したならば、ブロック194 からブロック 194a(後述する)に進み、このブロックはフレームFiをそれに挿入することによってクラスタを開始する。同様にブロック 194aには同様にブロック200 が後続される。
【0074】
図5はフレームFiおよび選択されたクラスタが交差し、それ故重畳可能であるか否かをチェックするブロック195 の詳細を示している。
【0075】
ブロック195 は絶対基準(時間to に対応する走査開始位置)に関するフレームの最後の素子の位置Tfl(図18)が、絶対基準に関するクラスタの第1の素子の位置TCfよりも低いか否かをチェックする第1のブロック 195aを有し、即ち、
Tfl<TCf (1)
上記の不等式(1)が肯定的な結果であるならば、クラスタとフレームは重畳が可能ではないと認識され、ブロック 195aからブロック191 へ戻る。不等式(1)が否定的な結果であるならば、ブロック 195aからブロック 195bへ進む。
【0076】
ブロック 195bは、絶対基準に関するフレーム中の第1の素子の位置TFfが絶対基準に関するクラスタの最後の素子の位置TClよりも高いか否かをチェックし、即ち、
TCl<TFf (2)
この不等式(2)が肯定的な結果であるならば、クラスタとフレームは重畳が可能ではないと認識され、ブロック 195bからブロック191 へ戻される。不等式(1)と(2)の両者が否定的な結果であるならば、クラスタとフレームは重畳が可能であると認識され、ブロック 195bからブロック 196に進む。図18は、両不等式が否定的な結果である場合、即ち、クラスタとフレームが陰影により示されている重畳されたゾーンSZを有するときを表しており、このゾーンSZはクラスタとフレームの対応する位置を有する素子を含んでいる。
【0077】
図6はブロック 197aまたは 198aを示し、これはフレーム(またはクラスタ)のデコードを試みる。
【0078】
ブロック 197a、 198aはフレーム(またはクラスタ)の長さがバーコードに対して許容可能であるか否か、即ちこれがバーコードに適合する数の素子を含んでいるか否かをチェックする開始ブロック201 を有している。
【0079】
そうでないならば(フレームまたはクラスタがバーコードの長さに適合しない長さであるならば)、ブロック201 からブロック198 (または191 )に進み、さもなければ、ブロック201 からブロック202 に進む。ブロック202 は例えば米国特許第3 723 710 号、第3 761 685 号、または第3 838 251 号の各明細書に記載されているようによく知られた方法でフレーム(またはクラスタ)のデコードを試みる。ブロック202 におけるフレームのデコードは、コード全体が第1の走査から読み取られる幸運なケースであり十分である。このような場合、(図9のブロック400 を参照して詳細に後述するように)もう一度フレームを関連するクラスタに結合することは不可能であり、結果としてプロセスはクラスタをデコードするブロック 198a(図4)を通って進行しなければならない。デコードが行われないならば、ブロック202 からブロック198 (または191 )に進み、またはさもなければ(フレームまたはクラスタのデコードが成功する場合)。ブロック202 からブロック203 に進む。ブロック203 はフレーム(またはクラスタ)のデコード内容を装置22の外部に送信し、従ってバーコードをデコードする。ブロック203 からブロック204 に進み、ブロック204 はフレーム(またはクラスタ)がデコードされたことを示す。ブロック204 にはブロック198 (または191 )が後続している。フレーム(またはクラスタ)はデコードされているが、誤ったコードがデコードされている可能性があるので、フレームをその他のクラスタに関連づける努力を行う。従って、既知の方法で、コードの真のデコードが全ての行われたデコードから選択される。
【0080】
図7はブロック 194aを示しており、これはクラスタを初期化する。ブロック 194aは試験中のフレームに同期文字が存在するか否かをチェックする開始ブロック206 を有する。ブロック206 によるチェックが肯定であるならば、ブロック207 への移動が行われ、そうでなければブロック206 からブロック200 に進む。
【0081】
ブロック207 は全てのフレーム素子の位置および幅をクラスタへ転送することによってクラスタ内のフレームの全ての素子をコピーする。
【0082】
ブロック207 からブロック208 に進み、このブロック208 はクラスタが同期文字を含んだフレームを含んでいるので、クラスタの状態インデックスを1、即ち状態=1に設定する。ブロック208 にブロック200 が後続される。
【0083】
換言すると、フレームが任意のアクチブクラスタで使用されていないならば、フレームが同期文字を有していれさえすれば、新しいクラスタ中のフレームをコピーすることによって初期化動作が行われる。
【0084】
図8はフレームFiをアクチブクラスタに関連付けようとするブロック198 の詳細図を与えている。
【0085】
ブロック198 は、1と2の間で変化するクラスタの状態インデックスを制御する初期ブロック300 を有する。ブロック300 により試験されたクラスタはアクチブクラスタのみであり、即ち、疑いなく同期文字が存在する少なくとも1つのフレームを含んでいる。ブロック300 は状態1が検出されるならばブロック310 を選択し、状態2が検出されるならばブロック320 を選択する。
【0086】
基本的に、ブロック310 は同期文字が存在する1つのフレームを含んだクラスタの試験で選択される。
【0087】
ブロック310 は試験下のフレームが第2の同期文字を含んでいるか否かをチェックする。チェックが否定的であるならば、ブロック310 からブロック330 に進み、ブロック330 はその状態をゼロに設定することによってクラスタを取消し、即ちクラスタを非アクチブにし、再構成の可能性を阻止する。ブロック330 もまたブロック191 に後続される。
【0088】
ブロック310 よるチェックが肯定である場合、即ちフレームが第2の同期文字を含んでいるならば、再構成が開始される。それ故、再構成はそれぞれ1つの同期文字を含んだ連続的な2つのフレームを検出した後でのみ開始する。
【0089】
このため、ブロック310 に続いてブロック340 (詳細に後述する)が行われ、ブロック340 はフレームとクラスタ間の対応をチェックし、それによってフレームとクラスタが同一のコードに属するか否かをチェックする。
【0090】
ブロック340 はチェックが否定的な結果(フレームとクラスタが整列しない)ならばブロック345 を選択し、チェックが肯定的(フレームとクラスタが同一線上にある)ならばブロック350 を選択し、したがってクラスタを状態2に設定する。ブロック345 はNOMATCH数を定めるカウンタを単位1だけ増加し、このブロックは事実上、フレームとクラスタとの対応の検索が失敗した後に選択される。ブロック345 に続いてブロック191 が行われる。
【0091】
ブロック340 はフレームの同期文字と、対応するクラスタの同期文字との距離(差)を計算する。
【0092】
これに関しては、図9を参照すべきであり、図9はフレームとクラスタとの対応のチェックが成功した後、距離Δ−位置を計算し、それによってフレームとクラスタが同一コードの走査に関係するか否かをチェックするブロック340 を示している。
【0093】
ブロック340 はフレーム素子数がクラスタ素子数を越えるか否かをチェックする開始ブロック400 を有する。これがそうでない(ノー)ならば、エラー状態が検出され、ブロック400 からブロック345 と191 に移動され、そうでなければ(イエス)ブロック400 に続いてブロック410 が行われる。勿論、バーコード全体が既に先に行われた走査で読取られており現在の走査もコードの全ての構成素子に関係するという幸運なケースでは、ブロック400 で行われるチェックは実際のフレームとクラスタとの結合を阻止し、状態は図4のブロック 197aを参照して前述したような状態である。
【0094】
ブロック410 は、フレームの第1の素子とクラスタの第1の素子から開始して比較(図19)することによって、フレームとクラスタで重畳された、即ち絶対基準に関して同一位置と同一幅とを有するコードの構成素子数fを計算する(左側または順方向に対応する)。
【0095】
ブロック410 にはブロック420 が続き、このブロック420 はフレームの最後の素子とクラスタの最後の素子から比較を開始して、フレームとクラスタで重畳された、即ち絶対基準に関して同一位置と同一幅とを有する素子数rを計算する(右側または逆方向に対応する)。
【0096】
図19を参照すると、クラスタはL1とマークされた走査で検出されたコード構成素子を含んでおり、フレームはL2とマークされた走査で発見されたコード構成素子を含んでいる。
【0097】
ブロック420 にはブロック430 が続き、ブロック430 は数rが数fに等しいか否かをチェックする。数rとfが等しいならば、不確定な状況が検出され(右側の重畳可能な構成素子数は左側の重畳可能な構成素子数に対応する)、結果としてコードは再構成されない。ブロック430 にはブロック345 と191 が後続している。数rとfが異なっているならば(ノー)、ブロック430 からブロック440 に進み、ブロック440 は数rまたは数fがゼロでないか否かをチェックする。少なくとも前記数のうちの一方がゼロに等しいならば、対応する状態が検出されず、結果としてコードは再構成されない。ブロック430 とブロック440 からブロック345 と191 に進む。数rまたは数fがゼロではないならば、ブロック450 が選択され、これは数fが数rよりも大きいか否かをチェックする。数fが数rよりも大きいならば、ブロック 460fが選択され、そうでなければ(fがrよりも小さい)、ブロック 460rが選択される。
【0098】
ブロック 460fは左側から開始する重畳可能な構成素子の数fがしきい値MINMATCHよりも大きいか否かをチェックし、fがしきい値よりも小さいならば(即ちフレームとクラスタに重畳された構成素子数が限定されているとき)、エラーが検出され、再構成は開始されず、結果としてブロック345 、191 が選択される。fがMINMATCHしきい値よりも大きいならば(即ち、フレームとクラスタに十分な数の重畳された構成素子が存在するならば)、ブロック 460fはブロック 470fを選択し、このブロック 470fは読取りヘッドに関してバーコードの左側(または順方向)から開始して重畳状態を記憶する。ブロック 470fにはブロック 480fが後続し、ブロック 480fはフレームの第1の素子の位置とクラスタの第1の素子の位置との差として値Δ−位置を計算する(図18参照)。
【0099】
それ故、コードの再構成が開始し、ブロック 480fにはブロック350 が後続し(図8、9)、ブロック350 は状態インデックスを2に設定し(状態=2)、再構成の開始を示す。実際にこの状態は2つの連続的で重畳可能なフレームが検出されており、両者が同期コードを有することを意味しており、用語Δ−位置もまたこれらの2つの第1のフレームに基づいて計算される。
【0100】
ブロック 460rは右側から開始する重畳可能な構成素子数rがしきい値MINMATCHよりも大きいか否かをチェックする。rがしきい値よりも小さいならば(即ちフレームとクラスタの対応する構成素子数が限定されているならば)、エラーが検出され、再構成は開始されず、ブロック345 と191 が選択される。rがMINMATCHしきい値よりも大きいならば(即ち、フレームとクラスタに十分な数の重畳された構成素子が存在するとき)、ブロック 460rはブロック 470rを選択し、ブロック 470rは読取りヘッドに関してバーコードの右側(後方向または逆方向)から開始して重畳状態を記憶する。ブロック 470rにはブロック 480rが後続し、ブロック 480rはフレームの最後の素子の位置とクラスタの最後の素子の位置との差として値Δ−位置を計算する。
【0101】
それ故、コードの再構成が開始し、ブロック 480rにはブロック350 が後続し、ブロック350 は状態インデックスを2に設定する。
【0102】
図8に戻ると、既に前述したようにブロック350 はクラスタの第1の状態インデックスを2に設定し、再構成の開始を示し、それに続いてブロック355 が行われ、ブロック355 はクラスタのフレーム素子をコピーすることによってフレームとクラスタとを関連付ける。
【0103】
ブロック355 にはブロック380 が後続し、ブロック380 は図1のコンベアベルトの運動により後で走査するために与えられている位置にクラスタを配置することによって、丁度関連するフレームに関するクラスタの測定された変位に基づいてクラスタの位置を再計算する。(図12のbに詳細に説明されている)ブロック380 はΔ−位置変位を全てのクラスタ素子に与え、即ち現在位置のΔ−項を合計することにより、新しい位置が各クラスタ素子のために計算される。それ故、クラスタの各素子ではブロック380 において以下の変換が行われる。
【0104】
クラスタ素子の新しい位置=クラスタ素子の現在位置+Δ−位置
これに関して、ベルト6 は読取りヘッドに関して実質上一定速度(例えば毎秒3m)で移動し、ミラー17bも例えば毎秒1000走査に十分な高速度で回転することに留意する。1つの走査と次の走査との間の時間は非常に短く、本発明の場合1000分の1秒に等しい。この時間間隔の期間中に、速度の実質的な変化は非常に高い加速(数十g程度)を必要とし、これは明らかにコンベアベルト装置の場合には達成不可能または想像しがたいので、ベルトの速度は実際に一定である。
【0105】
結果として、その後の走査で検出されたフレームと適合するようにクラスタの取る位置はブロック380 (図12のb)により高い正確性で近似され、これはクラスタに含まれる最後の走査と、次のフレームに対して生じる次の走査との間の一定の速度を仮定して変位(Δ−位置)の評価を行った後に、最後に走査するクラスタの関連する素子を示す。
【0106】
ブロック380 にブロック 198aが後続される。
【0107】
再構成が開始されたときに到達したブロック320 (以下詳細に説明する)、状態=2は、ブロック300 により解析されたフレームFiとクラスタが関連されることができるか否かをチェックする。ブロック320 の動作に参加するクラスタは同期文字をそれぞれ有する2つのフレームを含んだクラスタであり、ブロック320 は通常バーコードの第3または第4の走査中に選択される。
【0108】
ブロック320 により行われた関連が不成功であったならば、ブロック320 からブロック360 に進み、ブロック360 はNOMATCH数を定めるカウンタを単位1だけ増加し、ブロック360 からブロック191 に進む。
【0109】
ブロック320 により行われた関連が適切(イエス)であったならば、ブロック320 からブロック365 (以下詳細に説明する)に進み、ブロック365 はブロック340 (図9)で先に計算されたフレームとクラスタ間の距離Δ−位置の計算を補正する。
【0110】
ブロック365 にはブロック370 が後続され(ブロック355 に類似)、ブロック370 はブロック320 により行われる動作後に、クラスタ中の新しいフレーム素子を関連づける。ブロック370 の動作を以下詳細に説明する。
【0111】
ブロック355 と370 にはブロック380 が後続され,これはさらにブロック 198aに進む。
【0112】
図10、11はブロック320 の詳細を示し、このブロック320 はフレームFiを試験下のクラスタに関連づけようとする。
【0113】
ブロック320 は開始ブロック500 (図10)を有し、このブロック500 は、バーコードが読取りヘッドに関して順方向動作(図9のブロック 460f)または逆方向動作(図9のブロック 460r)を行っているか否かをチェックする。第1のケース(順方向動作)では、ブロック510 が選択され、第2のケース(逆方向動作)では、ブロック 520b(図11)が選択される。
【0114】
ブロック510 は、表TABCのポインタの値icにより定められているクラスタの最後から2番目の素子と、表TABCのポインタの値jnにより定められているフレームの最後から2番目の素子とを選択する(図20)。以後の説明では簡略にするために、用語“クラスタ中の素子ic”はポインタの値icにより定められているクラスタ中の素子を識別するために使用され、用語“フレーム中の素子jn”はポインタの値jnにより定められているフレーム素子を識別するために使用されている。
【0115】
ブロック510 からブロック520 に進み、ブロック520 は絶対基準に関するクラスタ素子icの位置が、同じ絶対基準に関するフレーム素子jnの位置にほぼ等しいか否かをチェックする。
【0116】
否定的なケース(icとjnの位置が一致しない)では、ブロック520 からブロック530 に進む。そうでなければ(icとjnの位置が実質上一致する)ブロック520 からブロック540 に進む。
【0117】
ブロック530 はクラスタ中の素子icの位置がフレーム素子jnの位置よりも高いか否かをチェックする。
【0118】
そうであるならば(イエス:クラスタ素子icの位置がフレーム素子jnの位置よりも高い)、ブロック555 が選択され、そうでなければ(ノー)ブロック550 が選択される。図20はフレーム素子jnの位置がクラスタ素子icの位置よりも高いときのブロック550 の選択に関するケースを示している。
【0119】
ブロック550 は値jnを単位1だけ減少し、即ち動作jn−jn−1を実行し、それによって先の位置よりも低い位置を有するフレーム素子を選択する。従って、ブロック555 は値icを1だけ減少し、即ち動作ic−1を実行し、それによって先の位置よりも低い位置を有するクラスタ素子を選択する。
【0120】
ブロック555 、550 の両者にブロック560 が後続され、このブロック560 は(それぞれのブロック555 、550 により先に変更された)値icとjnがしきい値MINMATCHより下であるか否かをチェックする。即ち、
ic<MINMATCH、または
jn<MINMATCH
上の不等式のうちの少なくとも一方が満足されたならば、ブロック560 からブロック360 (図10、図8)に進み、ブロック360 はエラー状態を検出し、クラスタとフレームとの間の失敗した結合動作数を示す数NOMATCHを増加する。
【0121】
ブロック560 の両不等式がいずれも満足されないならば、ブロック560 からブロック320 へ戻り、ブロック320 はクラスタ素子icの位置と、フレーム素子jnの位置を再度チェックし、チェックは先のチェックステップで使用された素子とは異なったクラスタおよびフレーム素子によって行われる。
【0122】
クラスタ素子icとフレーム素子jnが実質上同一位置であるとき、ブロック540 が選択される。図20の例では、これは、ポインタjnが右の位置から、絶対基準に関してicとマークされたクラスタ素子(スペース)と同一位置を有するフレーム素子(図示の例ではスペース)にjnが対応する左の位置へ移動したときに生じる。
【0123】
ブロック540 は以下の動作を行う。
【0124】
・icとマークされた素子から、前記素子に先行する素子(ic−1,ic−2,…ic−n)の方向への逆方向に開始する複数のクラスタ素子を選択する。所定の素子に関する“先行する素子”は所定の素子よりも低い位置を有する素子を意味している。
【0125】
・jnとマークされた素子から、考慮されている素子に先行する素子(jn−1,jn−2,…jn−m)の方向への逆方向に開始する複数のフレーム素子を選択する。
【0126】
・重畳可能な素子の数A(ic,jn)を、icとjnから開始するクラスタとフレームの少なくともMINMATCHと選択された素子を比較することによって計算する。“重畳可能な素子”は、フレームおよびクラスタ素子の連続的なシーケンスを意味しており、ここではシーケンスのフレームの各素子は、同一位置および同一幅を有するクラスタのそれぞれの素子に対応する。
【0127】
ブロック540 にはブロック580 が後続され、このブロック580 は数A(ic,jn)が数MINMATCHよりも大きいか否かをチェックする。即ち、
A(ic,jn)>MINMATCH
そうであるならば(すなわちA(ic,jn)>MINMATCH)、ブロック580 からブロック 365、370 (図8)に進み、そうでなければ(すなわちA(ic,jn)<MINMATCH)、ブロック580 からブロック530 に進み、ブロック520 で行われた位置の識別が近似しているだけであり、(ブロック540 と580 に基づいて)重畳可能な構成素子数の計算とチェックが1つだけ位置が離れているバーコードの構成素子について行われているので、最後に考慮される素子に隣接したフレーム素子icまたはクラスタ素子jnから開始する重畳性を新たにチェックする。
【0128】
そうであるならば、即ち、フレームとクラスタが適切に結合されることができることをチェックが示したならば、(値Δ−位置を再計算する)ブロック365 (図8)とブロック370 (図8)へ移動し、素子icから開始するクラスタのjnが後続するフレーム素子をコピーする。
【0129】
図11を参照して示した動作は図10で示された動作と類似しているが、この場合、動作は運動の逆方向に関連し、一方、図10を参照して示した動作は進行方向の順方向に関連する。
【0130】
ブロック 520b(図11)は値icとjnをゼロに設定し、即ちic=jn=0である。
【0131】
ブロック 520bにはブロック590 が後続し、このブロック590 は絶対基準に関する検出されたクラスタ素子icの位置が絶対基準に関して検出されたフレーム素子jnの位置とほぼ同一であるか否かをチェックする。
【0132】
そうでないならば(即ちicとjnに関連する素子の位置が一致しないならば)、ブロック590 からブロック600 に進み、そうでなければ(icとjnに関連する素子の位置が実質上一致するならば)、ブロック590 にブロック610 が後続される。
【0133】
ブロック600 はクラスタ素子icの位置がフレーム素子jnの位置よりも高いか否かをチェックする。そうであるならば(クラスタ素子icの位置>フレーム素子jnの位置)、ブロック620 が選択され、そうでないならば、ブロック630 が選択される。
【0134】
ブロック620 は、値jnを単位1だけ増加し、即ち動作jn=jn+1を実行し、それによって先行する素子よりも高い位置を有するフレーム素子を選択する。同様に、ブロック630 は、値icを単位1だけ増加し、即ち動作ic=ic+1を実行し、それによって先行する素子よりも高い位置を有するクラスタ素子を選択する。
【0135】
ブロック620 と630 の両者にはブロック640 が後続し、ブロック640 は(ブロック630 と620 により先に変更された)値icとjnがクラスタ素子数からしきい値MINMATCHを減算した値よりも大きいか否かをチェックする。即ち、
ic>クラスタ素子数−MINMATCH、または
jn>クラスタ素子数−MINMATCH
これらの不等式のうちの少なくとも一方が満足されたならば、ブロック640 からブロック360 (図11、図8)に進み、このブロック360 はエラー状況を検出し、クラスタとフレームと結合の失敗した動作数を示す数であるNOMATCH数を増加する。
【0136】
ブロック640 において両方の不等式が満足されないならば、ブロック640 からブロック590 に戻り、ブロック590 はicとjnに関連する素子の位置を再度チェックする。このチェックは先のチェックステップで使用された素子とは異なったクラスタおよびフレーム素子において行われる。
【0137】
icとjnに関連する素子が実質上同一位置であるとき、ブロック610 が選択され、以下の動作を行う。
【0138】
・icとマークされた素子から、最後の素子icに後続する素子(ic+1,ic+2,…ic+n)の方向への順方向に開始する複数のクラスタ素子を選択する。“所定の素子に後続する素子”は所定の素子よりも高い位置を有する素子を意味している。
【0139】
・jnとマークされた素子から、最後の素子jnに後続する素子(jn+1,jn+2,…jn+m)の方向への順方向に開始する複数のフレーム素子を選択する。
【0140】
・重畳可能な素子の数A(ic,jn)を、クラスタとフレームの少なくともMINMATCHと選択された構成素子を比較することによって計算する。
【0141】
ブロック610 からブロック660 に進み、ブロック660 は数A(ic,jn)が数MINMATCHよりも大きいか否かをチェックする。即ち、
A(ic,jn)>MINMATCH
そうであるならば(すなわちA(ic,jn)>MINMATCH)、ブロック660 からブロック 365、370 に進み、そうでなければ(すなわちA(ic,jn)<MINMATCH)、ブロック660 からブロック600 に進む。
【0142】
肯定的なケースでは、即ち、フレームとクラスタが適切に結合されることができる場合、値Δ−位置を再計算するブロック365 (図8)とブロック370 へ移動し、jnに先行するフレーム素子は、素子icから開始するクラスタ中でコピーされる。
【0143】
それ故、素子icはクラスタとフレームの整列に関する基準素子である。ブロック370 はまたフレームとクラスタとの間の“結合”ステップを実行し、ここでは基準素子に関する所定の側に配置された全ての素子はクラスタ中にコピーされる。特に、基準素子からの順方向(図10)の場合(即ち、高い位置を有する素子の方向の場合)、フレーム素子が選択され、クラスタ中にコピーされ、一方、基準点からの逆方向(即ち低い位置を有する素子方向)では、クラスタ素子が維持される。
【0144】
ブロック320 により実行された動作は対応検索ステップを限定し、このステップでは、クラスタのチェックを開始するため(ポインタ値ic,ic−1,ic+1により示される)素子の選択が行われ、フレームの(ポインタ値jnにより示される)チェック開始素子の選択が行われ(ブロック510 、 520a)、絶対基準に関するクラスタ中のチェック開始素子の位置が絶対基準に関するフレームのチェック開始素子の位置とほぼ同一であるか否かをチェックするための対応するチェックステップが実行される(ブロック520 および590 )。
【0145】
対応チェックステップが否定的な結果であるならば、反復的な変形ステップが(ブロック530 、555 、559 、560 ;699 、620 、630 、640 により)実行され、それによってチェック開始素子に隣接する後続するクラスタまたはフレーム素子を選択する。対応チェックステップが肯定的な結果(ブロック540 と610 への出力)に到達するまで、反復的な変形ステップが他のクラスタまたはフレーム素子により実行される。このような場合、フレームとクラスタとの可能な結合が最初に検出される。最初に、結合はフレームまたはクラスタが1つの構成素子の場合に検出される。しかしながら、より大きな信頼性を有する結合を認識するために、一連のさらに別の動作が以下のステップを含む本発明にしたがった方法により実行される。
【0146】
−基準素子から、基準素子から離れた素子の方向へ開始する予め定められた方向(即ち逆方向または順方向)における対応チェックステップを満足する基準素子から開始する複数のクラスタ素子を選択し(ブロック540 、610 )、
−基準素子から、基準素子から離れた素子の方向へ開始する予め定められた方向(前記逆方向または順方向)で対応チェックステップを満足する基準素子(jn)から開始する複数のフレーム素子を選択し(ブロック540 、610 )、
−クラスタとフレームにおいて選択された素子の中から重畳可能な素子の数を計算し(ブロック540 、610 )、
−重畳可能な素子数が基準MINMATCHと予め定められた関係を有する(特に基準MINMATCHよりも大きい)とき、対応検索ステップが肯定的な結果を与えたことを検出する(ブロック580 および660 )。
【0147】
このようにして、フレーム素子とクラスタ素子は共に比較されるので、フレームとクラスタとの結合がより信頼性をもって認識される。
【0148】
対応検索動作がフレームまたはクラスタの最後から2番目の素子から開始することに留意すべきである。例えば雑音のために信頼性が不十分である情報を与える可能性があるので最後のフレームまたはクラスタ素子は選択されない。
【0149】
(図19の走査L2参照)最後の素子が走査線により部分的にのみ横断されてもよく、その結果として幅が不確定なので最後から2番目の素子が選択される。
【0150】
このようにして、対応検索アルゴリズムの信頼性が改良される。
【0151】
図12のaはブロック365 を示しており、これはフレームとクラスタとの間の距離Δ−位置を再計算する。距離Δ−位置は最初にブロック340 により計算される。特に、ブロック365 はフレーム素子jnの位置とクラスタ素子icの位置との差として距離Δ−位置を再計算する。
【0152】
それ故、認められるように、項Δ−位置は結合動作の開始時に最初にブロック340 において計算され、続いてブロック365 における計算により改良される。
【0153】
図13は図10を参照して説明した変形を示している。簡単にする目的で、前記部分と異なる部分のみを説明する。
【0154】
示されている変形では、ブロック540 は以下の動作を行うブロック 540aを有する。
【0155】
・icで示された素子から、素子(ic−1,ic−2,…ic−n)の方向への後(逆)方向に開始する複数のクラスタ素子を選択する。“所定の素子に先行する素子”はこの素子よりも低い位置を有する素子を意味している。
【0156】
・jnで示された素子から、この素子に先行する素子(jn−1,jn−2,…jn−m)の方向への後(逆)方向に開始する複数のフレーム素子を選択する。
【0157】
・重畳可能な素子の数A(ic,jn)を、icとjnから開始するクラスタとフレームの少なくともMINMATCHと選択された素子を比較することによって計算する。“重畳可能な素子”は、フレームおよびクラスタ素子の連続的なシーケンスを意味しており、ここではシーケンスの各フレーム素子は、同一位置および同一幅を有する各クラスタ素子に対応する。
【0158】
ブロック 540aにブロック 540bが後続され、このブロック 540bは以下の動作を行う。
【0159】
・ic−1で示された素子から、素子ic−1に先行する素子(ic−2,ic−4,…ic−n)の方向への後(逆)方向に開始する複数のクラスタ素子を選択する。
【0160】
・jnで示された素子から、この素子に先行する素子(jn−1,jn−2,…jn−m)の方向への後(逆)方向に開始する複数のフレーム素子を選択する。
【0161】
・重畳可能な素子の数B(ic−1,jn)を、クラスタとフレームの少なくともMINMATCHと選択された素子を比較することによって計算する。
【0162】
ブロック 540bはブロック 540cにより後続され、このブロック 540cは以下の動作を行う。
【0163】
・ic+1で示された素子から、素子ic+1に先行する素子(ic,ic−1,…ic−n)の方向への後(逆)方向に開始する複数のクラスタ素子を選択する。
【0164】
・jnで示された素子から、この素子に先行する素子(jn−1,jn−2,…jn−m)の方向への後(逆)方向に開始する複数のフレーム素子を選択する。
【0165】
・重畳可能な素子の数C(ic+1,jn)を、クラスタとフレームの少なくともMINMATCHと選択された素子を比較することによって計算する。
【0166】
ブロック 540c(ブロック540 の最後のステップ)からブロック570 に進み、このブロック570 は、ブロック 540a、 540b、 540cにおいて先に計算されている数A(ic,jn)、B(ic−1,jn)、C(ic+1,jn)中から最大数Mbを検索する。
【0167】
ブロック570 からブロック580 に進み、このブロック580 は、先に抽出された数Mbがしきい値MINMATCHよりも大きいか否かをチェックし、ブロック580 で行われたチェックが否定的な結果(Mb<MINMATCH)であったならば、ブロック520 へ戻り、そうでないならば(Mb>MINMATCH)、ブロック580 からブロック365 へ移動する。
【0168】
それ故、フレームとクラスタが適切に結合されたことが発見されたならば、(値Δ−位置を再計算する)ブロック365 とブロック370 が選択され(図8)、ブロック370 は、選択された最大数がA(ic,jn)、B(ic−1,jn)またはC(ic+1,jn)のいずれであるか否かに応じて、素子ic、ic+1、ic−1から開始するクラスタのjnに後続するフレーム素子をコピーする。
【0169】
図14は図11を参照して説明したものの変形を示している。簡潔にする目的で、先に説明した部分と異なった部分のみを説明する。
【0170】
示されている変形では、ブロック610 は以下の動作を行うブロック 610aを有する。
【0171】
・icで示された素子から、最後の素子icに後続する素子(ic+1,ic+2,…ic+n)の方向への順方向に開始する複数のクラスタ素子を選択する。“所定の素子に後続する素子”は所定の素子よりも高い位置を有する素子を意味している。
【0172】
・jnで示された素子から、最後の素子に続く素子(jn+1,jn+2,…jn+m)の方向への順方向に開始する複数のフレーム素子を選択する。
【0173】
・重畳可能な素子の数A(ic,jn)を、クラスタとフレームの少なくともMINMATCHと選択された素子を比較することによって計算する。
【0174】
ブロック 610aにはブロック 610bが後続し、ブロック 610bは以下の動作を行う。
【0175】
・ic−1で示された素子から、ic−1に後続する素子(ic,ic+1,…ic+n)の方向への順方向に開始する複数のクラスタ素子を選択する。
【0176】
・jnで示された素子から、jnに後続する素子(jn+1,jn+2,…jn+m)の方向への順方向に開始する複数のフレーム素子を選択する。
【0177】
・重畳可能な素子の数B(ic−1,jn)を、クラスタとフレームの少なくともMINMATCHと選択された素子を比較することによって計算する。
【0178】
ブロック 610bにはブロック 610cが後続し、このブロック 610cは以下の動作を行う。
【0179】
・ic+1で示された素子から、ic+1に後続する素子(ic+2,ic+3,…ic+n)の方向への順方向に開始する複数のクラスタ素子を選択する。
【0180】
・jnで示された素子から、jnに後続する素子(jn+1,jn+2,…jn+m)の方向への順方向に開始する複数のフレーム素子を選択する。
【0181】
・重畳可能な素子の数C(ic+1,jn)を、クラスタとフレームの少なくともMINMATCHと選択された素子を比較することによって計算する。
【0182】
ブロック 610にはブロック650 が後続し、このブロック650 は、ブロック 610a、 610b、 610cにより先に計算された数A(ic,jn)、B(ic−1,jn)またはC(ic+1,jn)の中から最大数Mfを検索する。
【0183】
ブロック650 にはブロック660 が後続し、このブロック660 は先のブロック650 により抽出された数Mfが数MINMATCHよりも大きいか否かをチェックする。即ち、
Mf>MINMATCH
そうであるならば(すなわちMf>MINMATCH)、ブロック660 からブロック365 と370 に進み、そうでないならば(すなわちMf<MINMATCH)、ブロック660 からブロック600 に進む。
【0184】
肯定的なケースでは、即ちフレームとクラスタが結合に成功した場合、Δ−位置を再度計算するブロック365 (図8)と、選択された最大数がA(ic,jn)、B(ic−1,jn)またはC(ic+1,jn)のいずれであるか否かに応じて、素子ic、ic+1、またはic−1から開始するクラスタのjnに先行するフレーム素子をコピーするブロック370 へ移動する。
【0185】
明らかに、種々の変形および変更が特許請求の範囲に記載された本発明の技術的範囲内で行われることができる。特に本発明の方法は、連続的な種類およびデコードされたコードの伝送後に連続的にコードを走査し処理する(図6のブロック203 、204 を参照して説明した)代わりに、アルゴリズムの中断、クラスタのゼロ設定、手動付勢後または後続のコードの認識後(例えばフレームなしの走査期間後)のみブロック100 から開始する再付勢を含むことができることを強調する。しかしながらこのような場合、フレームまたはクラスタ素子数が所定の素子数に等しいことをチェックし、それによってコードが実際に完全に読取られているか否かを確証するチェックを挿入することが望ましい。
【0186】
また、アルゴリズムは幾つかチェックを挿入することにより変更されることができる。特に、各クラスタは付加的なインジケータ(ゼロ走査カウンタ)と関連されることができ、このインジケータはクラスタの更新を生じない走査後にインクレメントされる。このような場合、ゼロ読取りした走査カウンタは走査毎に(例えば開始ブロック100 で)にチェックされ、読取りが所定のしきい値を越えたならば、クラスタの状態インデックスはゼロに設定され、したがってクラスタを有効にする。しかしながら1つのバーコードと次のバーコードとの間の間隔にさえも雑音が存在するため、走査は構成素子なしであることはほとんどないので、この動作は厳密に必要ではない。しかしながら雑音はクラスタを開き、その後クラスタの状態インデックスをゼロに設定することにより閉じることが可能であり、したがってクラスタを実効的なコード構成素子の次の走査に対して利用可能にする。
【図面の簡単な説明】
【図1】本発明による方法を使用するバーコード読取装置の概略図。
【図2】バーコードの図。
【図3】本発明による方法のステップシーケンスを示した論理的なブロック図。
【図4】図3のブロック図の詳細図。
【図5】図4のブロック図の詳細図。
【図6】図4のブロック図の詳細図。
【図7】図4のブロック図の詳細図。
【図8】図4のブロック図の詳細図。
【図9】図8のブロック図の詳細図。
【図10】図8のブロック図の詳細図。
【図11】図8のブロック図の詳細図。
【図12】図8のブロック図の詳細図。
【図13】図10に関して異なった実施形態の論理的ブロック図。
【図14】図11に関して異なった実施形態の論理的ブロック図。
【図15】バーコード走査に関する電気信号の時間関数を示したグラフ。
【図16】図2のバーコードの走査図。
【図17】本発明により構成されたデータ構造図。
【図18】本発明による方法によって得られた信号の時間関数のグラフ。
【図19】本発明による方法のステップの説明図。
【図20】本発明による方法の後続的なステップの説明図。

Claims (40)

  1. それぞれ第1または第2の反射率を有し、幅(Tc)と絶対基準位置(To,Li) に関する位置(Tp)とによって表される複数の構成素子を含んでいるバーコードの連続的な走査を再構成する方法において、
    (a)バーコードの第1の走査を行い、第1の走査における絶対基準位置に関する前記構成素子の位置(Tp)および幅(Tc)を決定し、
    (b)記構成素子が後続する走査において前記絶対基準位置(To,Li)に関してとる位置として、前記絶対基準位置(To,Li)に関して前記第1の走査における前記構成素子の位置計算し、
    (c)バーコードの第2の走査を行い、前記第2の走査における前記絶対基準位置に関する前記構成素子の位置(Tp)および幅(Tc)を決定し、
    (d)一致探索ステップを実行して、前記第1の走査における1以上の基準構成素子と前記第2の走査における1以上の基準構成素子が前記絶対基準位置(To,Li) に関して実質的に同じ位置(Tp)および実質的に同じ幅(Tc)を有している1以上の基準構成素子とを見出し、
    (e)再構成された走査を生成するために前記第1の走査における構成素子を前記第2の走査における構成素子と結合するステップを含んでいることを特徴とする再構成方法。
  2. (bb)前記構成素子が後続する走査において前記絶対基準位置(To,Li)に関してとる位置として、前記絶対基準位置(To,Li)に関して前記再構成された走査における前記構成素子の位置計算し
    (cc)バーコードの後続する走査を行い、前記後続する走査における前記絶対基準位置(To,Li) に関する構成素子の位置(Tp)および幅(Tc)を決定し、
    (dd)後続する一致探索ステップを実行して、前記再構成された走査における1以上の基準構成素子と前記後続する走査における1以上の基準構成素子とを見出し、両走査の構成素子が前記絶対基準位置(To,Li) に関して実質的に同じ位置(Tp)および実質的に同じ幅(Tc)を有しており、
    (ee)前記後続する走査における構成素子と再構成された走査における構成素子を結合することによってこれらを更新するステップを含んでいることを特徴とする請求項1記載の方法。
  3. (bb1)ステップ(ee)において更新した後、前記構成素子が後続する走査において前記絶対基準位置(To,Li)に関してとる位置として、前記絶対基準位置(To,Li)に関して前記再構成された走査における前記構成素子の位置計算し、
    前記後続する走査が1以上の予め定められた数の構成素子を含んでいる限り、前記ステップ(cc)、(dd),(ee)および(bb1)を繰返すステップを含んでいることを特徴とする請求項2記載の方法。
  4. 前記後続する走査が含んでいる構成素子の数が予め定められた数より少ない限り、前記ステップ(cc)だけが繰返されることを特徴とする請求項3記載の方法。
  5. (bb1)ステップ(ee)において更新した後、前記構成素子が後続する走査において前記絶対基準位置(To,Li)に関してとる位置として、前記絶対基準位置(To,Li)に関して前記再構成された走査における前記構成素子の位置計算し、
    前記再構成された走査を復号する試みを行い
    前記復号を試みるステップの結果が否定的である限り、前記ステップ(cc)、(dd),(ee)および(bb1)を繰返すステップを含んでいることを特徴とする請求項2記載の方法。
  6. 前記一致探索ステップ(d)に続いて、1以上の予め定められた数(MINMATCH)の構成素子が絶対基準位置(To)に関して実質的に同じ位置および実質的に同じ幅(Tc)を有しているどうかをチェックするための結合チェックステップ(f)が行われている請求項1乃至5のいずれか1項記載の方法。
  7. 前記結合チェックステップ(f)は、前記第1の走査における構成素子の少なくとも1つの規定された最小セット(MINMATCH)を前記第2の走査における構成素子の最小規定セット(MINMATCH)と比較することによって行われることを特徴とする請求項6記載の方法。
  8. 前記結合チェックステップ(f)において、前記第1および前記第2の走査における重畳可能な構成素子の数A(ic,jn) の計算が行われることを特徴とする請求項6または7記載の方法。
  9. 前記重畳可能な構成素子は、絶対基準位置に関して実質的に同じ位置および実質的に同じ幅を有している前記第1の走査および前記第2の走査における構成素子の連続したシーケンスによって規定されていることを特徴とする請求項8記載の方法。
  10. 前記第1の走査における構成素子と前記第2の走査における構成素子とを結合する前記ステップ(e)は、前記結合チェックステップ(f)の結果が肯定的のときに行われることを特徴とする請求項6乃至9のいずれか1項記載の方法。
  11. 前記一致探索ステップ(d)は、
    (d1)前記第1の走査における構成素子中のチェック開始構成素子(ic)と前記第2の走査における構成素子中のチェック開始構成素子(jn)とを選択し、
    (d2)前記第2の走査におけるチェック開始構成素子の、絶対基準位置に関する位置が、前記第1の走査におけるチェック開始構成素子の、絶対基準位置に関する位置とほぼ同じであるか否かをチェックするために一致チェックステップを行い、
    前記一致チェックステップ(d2)の結果が否定的である場合、前記チェック開始構成素子に隣接した第2の走査または第1の走査における別の構成素子を選択するために反復的な修正ステップ(d3)を行い、この反復的な修正ステップ(d3)は、前記一致チェックステップ(d2)の結果が肯定的になり、かつ、前記基準構成素子が見出だされるまで別の構成素子に関して行われるステップを含んでいることを特徴とする請求項1乃至10のいずれか1項記載の方法。
  12. 前記チェック開始構成素子は、第1および第2の走査における最後から2番目の構成素子を含んでいることを特徴とする請求項11記載の方法。
  13. 前記一致探索ステップ(d)に続いて、良好な可逆的重畳性を有している前記第1の走査における複数の構成素子と前記第2の走査における複数の構成素子とを選択し、第1および第2の走査の前記選択された複数の構成素子が前記再構成される走査を行うために前記ステップ(e)において使用される一致ステップ(g)が行われることを特徴とする請求項1乃至12のいずれか1項記載の方法。
  14. 前記一致ステップ(g)は少なくとも、
    (g1)第1の走査において基準構成素子(ic)から始まる第1の走査における第1の複数の構成素子と、第2の走査において基準構成素子(jn)から始まる第2の走査における第2の複数の構成素子とを選択し、
    (g2)第1の複数の構成素子と第2の複数の構成素子との重畳の表示(indication)として第1の量(A)を計算し、
    (g3)第1の走査において基準構成素子(ic)に近い第1の走査中の第1の構成素子(ic-1)から始まる第1の走査における第3の複数の構成素子を選択し、
    (g4)第2複数の構成素子と前記第3の複数の構成素子との重畳を示す第2の量(B)を計算し、
    (g5)第1の量と第2の量とを比較して、前記第1の量が前記第2の量より良好な重畳性を示した場合、前記第1および第2の複数の構成素子を選択し、
    (g6)第1の量と第2の量とを比較して、前記第2の量が前記第1の量より良好な重畳性を示した場合、前記第2および第3の複数の構成素子を選択するステップを含んでいることを特徴とする請求項13記載の方法。
  15. (g7)第1の走査において基準構成素子(ic)に近い第1の走査中の第2の構成素子(ic+1)から第1の走査における第4の複数の構成素子を選択し、
    (g8)第2の複数の構成素子と前記第4の複数の構成素子との重畳を示す第3の量(C)を計算し、
    (g9)前記第1、第2および第3の量を比較して、前記第3の量が前記第1および第2の量より良好な重畳性を示した場合、前記第2および第4の複数の構成素子を選択するステップをさらに含んでいることを特徴とする請求項14記載の方法。
  16. 前記第1の走査における前記第1および第2の構成素子(ic-1,ic+1) は、前記第1の走査における前記基準構成素子(ic)の両側に隣接していることを特徴とする請求項15記載の方法。
  17. 前記量は、絶対基準位置に関して実質的に同じ位置および実質的に同じ幅を有している前記第1および第2の走査における素子の数を含んでおり、前記量を比較する前記ステップは、最大値を有する量の探索を含んでいることを特徴とする請求項14乃至16のいずれか1項記載の方法。
  18. 前記第1の走査における構成素子を前記第2の走査における構成素子と結合する前記ステップ(e)は、
    (e1)第2の走査における構成素子と実質的に同じ位置および実質的に同じ幅を有する前記第1の走査における前記構成素子を含む前記第1の走査における前記基準構成素子の第1の側を選択し、
    (e2)前記第1の側に配置されている第1の走査における構成素子を維持し、
    (e3)前記再構成走査を生成するために前記第1の側と反対側に配置されている前記第2の走査における構成素子を前記第1の走査のものに付加するステップを含んでいることを特徴とする請求項6乃至17のいずれか1項記載の方法。
  19. 前記第1の走査を行うステップ(a)の前に、
    (h)前記絶対基準位置(To,Li) に関する予備走査における構成素子の位置(Tp)および幅(Tc)を決定し、前記予備走査における構成素子を現在の領域(フレーム)と関連付けることによって前記バーコードの予備走査を行い、
    (i)前記現在の領域(フレーム)における構成素子を複数の負荷領域(クラスタ)の1以上のものと関連付けるステップが行われることを特徴とする請求項1乃至18のいずれか1項記載の方法。
  20. 前記関連付けるステップ(i)は、
    (i1)前記複数の負荷領域の中からある負荷領域を選択し、
    (i2)選択された領域がすでに占有されているか否かをチェックし、
    (i3a)前記選択された領域がまだ占有されていないならば、後続する負荷領域が存在するか否かを調査し、
    (i4a)後続する負荷領域が存在するならば、前記ステップ(i2)に戻り、
    (i4b)後続する負荷領域が存在しなければ、前記現在の領域における前記構成素子を前記占有されていない負荷領域の1つに複写し、後続する走査を行って、前記後続する走査における構成素子を前記現在の領域と関連付け、前記ステップ (i1)に戻るステップを含んでいることを特徴とする請求項19記載の方法。
  21. 前記ステップ(i4b)は、前記複写するステップの前に、前記現在の領域(フレーム)における前記構成素子の間で同期文字を探索するステップを含み、前記現在の領域における同期文字を探索した結果が肯定的であり、かつ、同期文字が見出だされた場合、第1の同期の存在状態が記憶されて、前記複写するステップが行われ、前記現在の領域における同期文字を探索した結果が否定的であり、かつ、同期文字が見出だされない場合、前記予備走査を行うステップ(h)に戻されることを特徴とする請求項20記載の方法。
  22. 前記選択された領域がすでに占有されているかどうかをチェックするステップ(i2)は、前記第1の同期の存在状態が記憶されているかどうかをチェックするステップを含み、前記第1の同期の存在状態が検出された場合、
    (i5)前記の現在の領域における構成素子の中で同期文字を探索し、
    (i6a)前記探索するステップ(i5)の結果が肯定的であり、かつ、同期文字が前記の現在の領域において見出だされた場合には、前記現在の領域における構成素子を前記負荷領域中に複写し、結合状態を記憶し、後続する走査を行い、前記後続する走査における構成素子を前記現在領域(フレーム)と関連付け、前記ステップ(i1)に戻るステップが行われ、また、前記探索するステップ(i5)の結果が否定的であり、かつ、同期文字が前記の現在の領域において見出だされなかった場合、前記第1の同期の存在状態を取消し、前記ステップ(h)に戻るステップが行われることを特徴とする請求項21記載の方法。
  23. 前記複写し、記憶するステップの前に、
    (i7)前記現在の領域における構成素子と前記負荷領域における構成素子とが結合されることができるかどうかを確認する結合チェックステップが行われ、
    (i8a)前記現在の領域における構成素子と前記負荷領域における構成素子とが結合できる場合、結合状態を複写し、記憶するステップ(i6a)を実行し、
    (i8b)前記現在の領域における構成素子と前記負荷領域における構成素子とが結合できない場合、失敗した試みのカウンタを更新することを特徴とする請求項22記載の方法。
  24. 前記結合チェックステップ(i7)は、
    (i7−1)現在の領域における構成素子の数が負荷領域における構成素子の数に対する予め定められた関係を有しているか否かをチェックし、
    (i7−2a)前記チェックステップ(i7−1)の結果が肯定的ならば、前記負荷領域と前記現在の領域との間の重畳可能な構成素子の数を計算し、
    (i7−3)重畳可能な構成素子の数が予め定められたしきい値を越えているか否かをチェックし、
    (i7−4a)前記ステップ(i7−3)の結果が肯定的ならば、結合し、結合状態を記憶するステップ(i6a)を実行し、
    (i7−4b)前記ステップ(i7−3)の結果が否定的ならば、失敗した試みのカウンタを更新するステップ(i8b)を実行するステップを含んでいることを特徴とする請求項23記載の方法。
  25. 失敗した試みのカウンタを更新するステップ(i8b)に続いて、前記失敗した試みのカウンタ(NOMATCH) が予め定められたしきい値(MAX-NOMATCH) を越えているか否かをチェックするステップが行われ、その結果が肯定的ならば、占有されていない負荷領域状態を記憶し、その後前記ステップ(h)に戻ることを特徴とする請求項23記載の方法。
  26. チェックするステップ(i2)の結果が、前記選択された領域がすでに占有されていることを示した場合、
    (i3b)前記負荷領域における構成素子と前記現在の領域における構成素子間との間の重畳性をチェックし、
    (i9a)前記重畳性チェックステップ(i3b)の結果が肯定的ならば、前記現在の領域における構成素子が前記記憶領域における構成素子と結合され、
    (i9b)前記重畳性チェックステップ(i3b)の結果が否定的ならば、前記複数の負荷領域の中からある負荷領域を選択するステップ(i1)に戻るステップが行われることを特徴とする請求項20乃至25のいずれか1項記載の方法。
  27. 前記一致探索ステップ(d)に続いて、
    (j)前記現在の領域および負荷領域における構成素子の1以上の予め定められた数(MINMATCH)が絶対基準位置(To)に関して実質的に同じ位置(Tp)および実質的に同じ幅(Tc)を有しているか否かをチェックするために結合チェックを行い、
    (k)前記結合チェックステップ(j)の結果が否定的ならば、失敗した試みのカウンタ(NOMATCH) を更新し、
    (l)前記失敗した試みのカウンタ(NOMATCH) が予め定められたしきい値(MAX-NOMATCH) を越えているか否かをチェックし、その結果が肯定的ならば、占有されていない負荷領域状態を記憶するステップが行われることを特徴とする請求項26記載の方法。
  28. 前記ステップ(i2)はまた、前記結合状態の存在をチェックするステップ(i2−1)を含み、前記結合状態が検出された場合、前記現在の領域における構成素子と前記負荷領域における構成素子と間で一致探索ステップ(i2−2)を実行することを特徴とする請求項22乃至27のいずれか1項記載の方法。
  29. 前記予備走査、前記後続する走査、前記第1の走査および前記第2の走査はそれぞれ、
    (a1)走査開始位置(Li)から走査終了位置(Lf)までの完全な走査を行い、
    (a2)複数の隣接したコード構成素子を選択し、
    (a3)複数の隣接した構成素子を現在の領域と関連付け、
    (a4)現在の領域における前記構成素子を処理し、
    (a5)別の連続したコード構成素子が前記完全な走査中に存在しているかどうかを調査し、
    (a6a)別の隣接したコード構成素子が存在している場合、前記別の隣接したコード構成素子を選択し、前記ステップ(a3),(a4)および(a5)を繰返し、
    (a6b)別の隣接したコード構成素子が存在しないならば、前記ステップ (a1)を繰り返すステップを含んでいることを特徴とする請求項22乃至28のいずれか1項記載の方法。
  30. 前記一致探索ステップ(d)の実行の前に重畳の方向を決定するステップ(m)が行われ、このステップ(m)は、
    (m1)第3および第4の走査における予め定められた構成素子から始まって、第1の方向に移動する重畳可能な前記第3および第4の走査における構成素子の数を決定し、
    (m2)予め定められた異なった構成素子から始まって、第1の方向と逆の第2の方向に移動する重畳可能な前記第3および第4の走査における構成素子の数を決定し、
    (m3)前記ステップ(m1)において決定された構成素子の数が前記ステップ(m2)において決定された構成素子の数より大きい場合、第1の方向インジケータ(順方向)を設定し、
    (m4)前記ステップ(m2)において決定された構成素子の数が前記ステップ(m1)において決定された構成素子の数より大きい場合、第2の方向インジケータ(逆方向)を設定するステップを含んでいることを特徴とする請求項1乃至29のいずれか1項記載の方法。
  31. 前記重畳可能な構成素子の数を決定するステップ(m1)および(m2)は、前記第1および前記第2の方向のそれぞれにおいて最初および最後の構成素子から始まる前記第3および第4の走査において、前記絶対基準位置に関して実質的に同じ位置および実質的に同じを有する構成素子の探索を含んでいることを特徴とする請求項30記載の方法。
  32. 前記一致探索ステップ(d)に続いて、
    (n1)第3の走査における構成素子と前記第4の走査における対応した構成素子との間の絶対位置の差を計算し、
    (n2)第3の走査における前記構成素子の絶対位置と前記計算された差とを合計するステップを含んでいる前記第3の走査における構成素子が後続する走査中にとる位置を決定するステップ(n)が行われることを特徴とする請求項30または31記載の方法。
  33. 前記第1のインジケータ(順方向)が設定された場合、第3の走査における第1の構成素子と第4の走査における第1の構成素子との間の位置の差がステップ(n1)において計算され、一方前記第2のインジケータ (逆方向)が設定された場合、第3の走査における最後の構成素子と第4の走査における最初の構成素子との間の位置の差がステップ(n1)において決定されることを特徴とする請求項32記載の方法。
  34. ステップ(i6a)はまた、
    (o1)前記負荷領域における構成素子と前記現在の領域における対応した構成素子との間の絶対位置の差を計算し、
    (o2)前記負荷領域における構成素子が後続する走査中にとる位置を、前記負荷領域における前記構成素子の絶対位置と前記計算された差との和として決定するステップを含んでいることを特徴とする請求項22乃至26のいずれか1項記載の方法。
  35. ステップ(e)に続いて、
    (oo1)前記再構成された走査における構成素子と前記第2の走査における対応した構成素子との間の絶対位置の差を計算し、
    (oo2)前記再構成された走査における構成素子が後続する走査中にとる位置を、前記再構成された走査における前記構成素子の絶対位置と前記計算された差との和として決定するステップが行われることを特徴とする請求項1乃至34のいずれか1項記載の方法。
  36. 前記一致探索ステップ(d)の前に、前記第1および前記第2の走査における前記構成素子の重畳性をチェックするステップ(p)が行われることを特徴とする請求項1乃至35のいずれか1項記載の方法。
  37. 前記重畳性チェックステップ(p)は、
    (p1)前記第2の走査における最後の構成素子の位置が前記第1の走査における最初の構成素子の位置より低くないか否かをチェックし、
    (p2)前記第2の走査における最初の構成素子の位置が前記第1の走査における最後の構成素子の位置より高くないか否かをチェックし、
    (p3a)両チェックステップ(p1)および(p2)の結果が肯定的ならば、一致探索ステップ(d)が実行され、
    (p3b)前記チェックステップ(p1)および(p2)の少なくとも一方の結果が否定的ならば、バーコードを走査する別のステップを実行するステップを含んでいることを特徴とする請求項36記載の方法。
  38. 重畳性チェックステップ(p)の結果が肯定的ならば、
    (q)前記第2の走査における構成素子を復号し、
    (r)復号ステップ(q)の結果を外部装置に伝送するステップが行われることを特徴とする請求項36または37記載の方法。
  39. 前記第1の走査における構成素子を前記第2の走査における構成素子と結合する前記ステップ(e)の後、
    (s)前記再構成された走査における構成素子を復号し、
    (t)前記復号ステップ(s)の結果を外部装置に伝送するステップが実行されることを特徴とする請求項1乃至38のいずれか1項記載の方法。
  40. 前記絶対基準位置(To,Li)は、前記バーコードの外側にある、請求項1乃至39いずれか1項記載の方法。
JP13956599A 1998-05-20 1999-05-20 バーコードの連続した走査を再構成する方法 Expired - Lifetime JP4376353B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP98830306.1 1998-05-20
EP98830306A EP0959426B9 (en) 1998-05-20 1998-05-20 A method of reconstructing successive scans of a bar code

Publications (2)

Publication Number Publication Date
JP2000057253A JP2000057253A (ja) 2000-02-25
JP4376353B2 true JP4376353B2 (ja) 2009-12-02

Family

ID=8236655

Family Applications (1)

Application Number Title Priority Date Filing Date
JP13956599A Expired - Lifetime JP4376353B2 (ja) 1998-05-20 1999-05-20 バーコードの連続した走査を再構成する方法

Country Status (5)

Country Link
US (2) US6394352B1 (ja)
EP (1) EP0959426B9 (ja)
JP (1) JP4376353B2 (ja)
AT (1) ATE231634T1 (ja)
DE (1) DE69810898T2 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060082557A1 (en) * 2000-04-05 2006-04-20 Anoto Ip Lic Hb Combined detection of position-coding pattern and bar codes
US7346184B1 (en) 2000-05-02 2008-03-18 Digimarc Corporation Processing methods combining multiple frames of image data
US20020021835A1 (en) * 2000-06-02 2002-02-21 Markus Andreasson Method and device for recording of information
US6802450B2 (en) * 2002-08-07 2004-10-12 Shenzhen Syscan Technology Co. Ltd Guiding a scanning device to decode 2D symbols
US20040098664A1 (en) * 2002-11-04 2004-05-20 Adelman Derek A. Document processing based on a digital document image input with a confirmatory receipt output
AU2004280853A1 (en) * 2003-09-23 2005-04-21 Secure Symbology, Inc. Method for improving security and enhancing information storage capability
DE102004017504A1 (de) * 2004-04-08 2005-10-27 Sick Ag Verfahren und Vorrichtung zum Lesen eines Strichcodes
US7314175B1 (en) * 2006-12-20 2008-01-01 Ncr Corporation Methods and apparatus for improved use of partial bar code information to decode a complete bar code
DE602008006482D1 (de) * 2007-03-27 2011-06-09 Casio Computer Co Ltd Strichcode-Lesegerät und computerlesbares Medium
US8246543B2 (en) * 2007-05-15 2012-08-21 CVUS Clinical Trials, LLC Imaging method utilizing attenuation and speed parameters in inverse scattering techniques
US8707163B2 (en) * 2011-10-04 2014-04-22 Wesley John Boudville Transmitting and receiving data via barcodes through a cellphone for privacy and anonymity
US9361499B2 (en) * 2014-10-09 2016-06-07 Cognex Corporation Barcode decoding
US9495571B1 (en) 2015-09-30 2016-11-15 Datalogic Automation, Inc. Two-dimensional representation of linear barcode derived from laser barcode scanner scanline data

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3761685A (en) 1971-05-24 1973-09-25 Pitney Bowes Alpex Data processing means with printed code
US3723710A (en) 1971-06-28 1973-03-27 Ibm Method and device for reading and decoding a high density self-clocking bar code
US3811033A (en) 1971-06-29 1974-05-14 Monarch Marking Systems Inc Coded record interpreting system
JPS63127387A (ja) * 1986-11-17 1988-05-31 Tokyo Optical Co Ltd コ−ド読み取り装置
US5979768A (en) * 1988-01-14 1999-11-09 Intermec I.P. Corp. Enhanced bar code resolution through relative movement of sensor and object
US5241164A (en) * 1990-01-05 1993-08-31 Symbol Technologies, Inc. Method of decoding bar code symbols from partial scans
CA2022269A1 (en) * 1990-01-05 1991-07-06 Theodosios Pavlidis Method of decoding bar code symbols from partial scans
US5296691A (en) * 1992-09-14 1994-03-22 Lazerdata Corporation Scanning device for reconstructing a complete code from scanned segments
US5457308A (en) * 1993-09-14 1995-10-10 Symbol Technologies, Inc. Bar code scan stitching
US5777310A (en) * 1995-11-06 1998-07-07 Intermec Corporation Problem reduction with low level information integration in bar code decoding
US6267293B1 (en) * 1999-02-22 2001-07-31 Cimatrix Bar code scanning system and method

Also Published As

Publication number Publication date
DE69810898D1 (de) 2003-02-27
US6394352B1 (en) 2002-05-28
EP0959426B9 (en) 2003-09-17
US6742710B2 (en) 2004-06-01
DE69810898T2 (de) 2003-11-13
EP0959426A1 (en) 1999-11-24
US20020121551A1 (en) 2002-09-05
ATE231634T1 (de) 2003-02-15
EP0959426B1 (en) 2003-01-22
JP2000057253A (ja) 2000-02-25

Similar Documents

Publication Publication Date Title
JP4376353B2 (ja) バーコードの連続した走査を再構成する方法
US5387787A (en) Scanning device for reconstructing a complete code from scanned segments
JP6869208B2 (ja) 光電式コードリーダ及び光学コードの読み取り方法
US5635697A (en) Method and apparatus for decoding two-dimensional bar code
JPS63127387A (ja) コ−ド読み取り装置
JP6095194B2 (ja) スタック型バーコード読取装置及びスタック型バーコード読取方法
KR100920764B1 (ko) 고밀도의 광학 심볼을 2단계로 해독하기 위한 장치 및 방법
US6073847A (en) Method and apparatus for the reading of a bar code
JPH09161001A (ja) バーコード読取装置
CN110472453B (zh) 光学信息读取装置及光学信息读取方法
JPH05233867A (ja) バーコード読取装置
JP2001167226A (ja) 連続走査によりバーコードを復元する方法
JP5896488B2 (ja) バーコード読取装置、バーコード読取方法及びバーコード読取プログラム
JP3332972B2 (ja) バーコードシンボル読取装置
US20150278568A1 (en) Barcode reader, barcode reading method, and barcode reading program
JP2003006568A (ja) エリアコード読取装置、及びエリアコード読取方法
JPH08329185A (ja) シンボル情報読取装置
JP6083829B2 (ja) バーコード読取装置、バーコード読取方法及びバーコード読取プログラム
JP3606228B2 (ja) バーコード読取装置
JPS6152518B2 (ja)
JP2908049B2 (ja) バーコード復調方式
JP3891072B2 (ja) バーコード読取方法およびバーコード読取装置
JPH08255208A (ja) バーコードの読み取り方法及びその読み取り装置
JPH09153106A (ja) バーコード読取装置
JP3576893B2 (ja) バーコード読み取り方法及び読み取り装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060518

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080911

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080924

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20081113

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20081118

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090126

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090129

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090224

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090811

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090909

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120918

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130918

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term