(57)【特許請求の範囲】
【請求項１】
それぞれが第１または第２の反射率を有し、幅(Tc)と絶対基準位置(To,Li) に関する位置(Tp)とによって表される複数の構成素子を含んでいるバーコードの連続的な走査を再構成する方法において、
（ａ）バーコードの第１の走査を行い、第１の走査における絶対基準位置に関する前記構成素子の位置(Tp)および幅(Tc)を決定し、
（ｂ）前記構成素子が後続する走査において前記絶対基準位置(To,Li)に関してとる位置として、前記絶対基準位置(To,Li)に関して前記第１の走査における前記構成素子の位置を再計算し、
（ｃ）バーコードの第２の走査を行い、前記第２の走査における前記絶対基準位置に関する前記構成素子の位置(Tp)および幅(Tc)を決定し、
（ｄ）一致探索ステップを実行して、前記第１の走査における１以上の基準構成素子と前記第２の走査における１以上の基準構成素子が前記絶対基準位置(To,Li) に関して実質的に同じ位置(Tp)および実質的に同じ幅(Tc)を有している１以上の基準構成素子とを見出し、
（ｅ）再構成された走査を生成するために前記第１の走査における構成素子を前記第２の走査における構成素子と結合するステップを含んでいることを特徴とする再構成方法。
【請求項２】
（ｂｂ）前記構成素子が後続する走査において前記絶対基準位置(To,Li)に関してとる位置として、前記絶対基準位置(To,Li)に関して前記再構成された走査における前記構成素子の位置を再計算し
（ｃｃ）バーコードの後続する走査を行い、前記後続する走査における前記絶対基準位置(To,Li) に関する構成素子の位置(Tp)および幅(Tc)を決定し、
（ｄｄ）後続する一致探索ステップを実行して、前記再構成された走査における１以上の基準構成素子と前記後続する走査における１以上の基準構成素子とを見出し、両走査の構成素子が前記絶対基準位置(To,Li) に関して実質的に同じ位置(Tp)および実質的に同じ幅(Tc)を有しており、
（ｅｅ）前記後続する走査における構成素子と再構成された走査における構成素子を結合することによってこれらを更新するステップを含んでいることを特徴とする請求項１記載の方法。
【請求項３】
（ｂｂ１）ステップ（ｅｅ）において更新した後、前記構成素子が後続する走査において前記絶対基準位置(To,Li)に関してとる位置として、前記絶対基準位置(To,Li)に関して前記再構成された走査における前記構成素子の位置を再計算し、
前記後続する走査が１以上の予め定められた数の構成素子を含んでいる限り、前記ステップ（ｃｃ）、（ｄｄ），（ｅｅ）および（ｂｂ１）を繰返すステップを含んでいることを特徴とする請求項２記載の方法。
【請求項４】
前記後続する走査が含んでいる構成素子の数が予め定められた数より少ない限り、前記ステップ（ｃｃ）だけが繰返されることを特徴とする請求項３記載の方法。
【請求項５】
（ｂｂ１）ステップ（ｅｅ）において更新した後、前記構成素子が後続する走査において前記絶対基準位置(To,Li)に関してとる位置として、前記絶対基準位置(To,Li)に関して前記再構成された走査における前記構成素子の位置を再計算し、
前記再構成された走査を復号する試みを行い
前記復号を試みるステップの結果が否定的である限り、前記ステップ（ｃｃ）、（ｄｄ），（ｅｅ）および（ｂｂ１）を繰返すステップを含んでいることを特徴とする請求項２記載の方法。
【請求項６】
前記一致探索ステップ（ｄ）に続いて、１以上の予め定められた数（MINMATCH）の構成素子が絶対基準位置(To)に関して実質的に同じ位置および実質的に同じ幅(Tc)を有しているどうかをチェックするための結合チェックステップ（ｆ）が行われている請求項１乃至５のいずれか１項記載の方法。
【請求項７】
前記結合チェックステップ（ｆ）は、前記第１の走査における構成素子の少なくとも１つの規定された最小セット（MINMATCH）を前記第２の走査における構成素子の最小規定セット（MINMATCH）と比較することによって行われることを特徴とする請求項６記載の方法。
【請求項８】
前記結合チェックステップ（ｆ）において、前記第１および前記第２の走査における重畳可能な構成素子の数Ａ(ic,jn) の計算が行われることを特徴とする請求項６または７記載の方法。
【請求項９】
前記重畳可能な構成素子は、絶対基準位置に関して実質的に同じ位置および実質的に同じ幅を有している前記第１の走査および前記第２の走査における構成素子の連続したシーケンスによって規定されていることを特徴とする請求項８記載の方法。
【請求項１０】
前記第１の走査における構成素子と前記第２の走査における構成素子とを結合する前記ステップ（ｅ）は、前記結合チェックステップ（ｆ）の結果が肯定的のときに行われることを特徴とする請求項６乃至９のいずれか１項記載の方法。
【請求項１１】
前記一致探索ステップ（ｄ）は、
（ｄ１）前記第１の走査における構成素子中のチェック開始構成素子(ic)と前記第２の走査における構成素子中のチェック開始構成素子(jn)とを選択し、
（ｄ２）前記第２の走査におけるチェック開始構成素子の、絶対基準位置に関する位置が、前記第１の走査におけるチェック開始構成素子の、絶対基準位置に関する位置とほぼ同じであるか否かをチェックするために一致チェックステップを行い、
前記一致チェックステップ（ｄ２）の結果が否定的である場合、前記チェック開始構成素子に隣接した第２の走査または第１の走査における別の構成素子を選択するために反復的な修正ステップ（ｄ３）を行い、この反復的な修正ステップ（ｄ３）は、前記一致チェックステップ（ｄ２）の結果が肯定的になり、かつ、前記基準構成素子が見出だされるまで別の構成素子に関して行われるステップを含んでいることを特徴とする請求項１乃至１０のいずれか１項記載の方法。
【請求項１２】
前記チェック開始構成素子は、第１および第２の走査における最後から２番目の構成素子を含んでいることを特徴とする請求項１１記載の方法。
【請求項１３】
前記一致探索ステップ（ｄ）に続いて、良好な可逆的重畳性を有している前記第１の走査における複数の構成素子と前記第２の走査における複数の構成素子とを選択し、第１および第２の走査の前記選択された複数の構成素子が前記再構成される走査を行うために前記ステップ（ｅ）において使用される一致ステップ（ｇ）が行われることを特徴とする請求項１乃至１２のいずれか１項記載の方法。
【請求項１４】
前記一致ステップ（ｇ）は少なくとも、
（ｇ１）第１の走査において基準構成素子(ic)から始まる第１の走査における第１の複数の構成素子と、第２の走査において基準構成素子(jn)から始まる第２の走査における第２の複数の構成素子とを選択し、
（ｇ２）第１の複数の構成素子と第２の複数の構成素子との重畳の表示（ｉｎｄｉｃａｔｉｏｎ）として第１の量（Ａ）を計算し、
（ｇ３）第１の走査において基準構成素子(ic)に近い第１の走査中の第１の構成素子(ic-1)から始まる第１の走査における第３の複数の構成素子を選択し、
（ｇ４）第２複数の構成素子と前記第３の複数の構成素子との重畳を示す第２の量（Ｂ）を計算し、
（ｇ５）第１の量と第２の量とを比較して、前記第１の量が前記第２の量より良好な重畳性を示した場合、前記第１および第２の複数の構成素子を選択し、
（ｇ６）第１の量と第２の量とを比較して、前記第２の量が前記第１の量より良好な重畳性を示した場合、前記第２および第３の複数の構成素子を選択するステップを含んでいることを特徴とする請求項１３記載の方法。
【請求項１５】
（ｇ７）第１の走査において基準構成素子(ic)に近い第１の走査中の第２の構成素子(ic+1)から第１の走査における第４の複数の構成素子を選択し、
（ｇ８）第２の複数の構成素子と前記第４の複数の構成素子との重畳を示す第３の量（Ｃ）を計算し、
（ｇ９）前記第１、第２および第３の量を比較して、前記第３の量が前記第１および第２の量より良好な重畳性を示した場合、前記第２および第４の複数の構成素子を選択するステップをさらに含んでいることを特徴とする請求項１４記載の方法。
【請求項１６】
前記第１の走査における前記第１および第２の構成素子(ic-1,ic+1) は、前記第１の走査における前記基準構成素子(ic)の両側に隣接していることを特徴とする請求項１５記載の方法。
【請求項１７】
前記量は、絶対基準位置に関して実質的に同じ位置および実質的に同じ幅を有している前記第１および第２の走査における素子の数を含んでおり、前記量を比較する前記ステップは、最大値を有する量の探索を含んでいることを特徴とする請求項１４乃至１６のいずれか１項記載の方法。
【請求項１８】
前記第１の走査における構成素子を前記第２の走査における構成素子と結合する前記ステップ（ｅ）は、
（ｅ１）第２の走査における構成素子と実質的に同じ位置および実質的に同じ幅を有する前記第１の走査における前記構成素子を含む前記第１の走査における前記基準構成素子の第１の側を選択し、
（ｅ２）前記第１の側に配置されている第１の走査における構成素子を維持し、
（ｅ３）前記再構成走査を生成するために前記第１の側と反対側に配置されている前記第２の走査における構成素子を前記第１の走査のものに付加するステップを含んでいることを特徴とする請求項６乃至１７のいずれか１項記載の方法。
【請求項１９】
前記第１の走査を行うステップ（ａ）の前に、
（ｈ）前記絶対基準位置(To,Li) に関する予備走査における構成素子の位置(Tp)および幅(Tc)を決定し、前記予備走査における構成素子を現在の領域（フレーム）と関連付けることによって前記バーコードの予備走査を行い、
（ｉ）前記現在の領域（フレーム）における構成素子を複数の負荷領域（クラスタ）の１以上のものと関連付けるステップが行われることを特徴とする請求項１乃至１８のいずれか１項記載の方法。
【請求項２０】
前記関連付けるステップ（ｉ）は、
（ｉ１）前記複数の負荷領域の中からある負荷領域を選択し、
（ｉ２）選択された領域がすでに占有されているか否かをチェックし、
（ｉ３ａ）前記選択された領域がまだ占有されていないならば、後続する負荷領域が存在するか否かを調査し、
（ｉ４ａ）後続する負荷領域が存在するならば、前記ステップ（ｉ２）に戻り、
（ｉ４ｂ）後続する負荷領域が存在しなければ、前記現在の領域における前記構成素子を前記占有されていない負荷領域の１つに複写し、後続する走査を行って、前記後続する走査における構成素子を前記現在の領域と関連付け、前記ステップ  （ｉ１）に戻るステップを含んでいることを特徴とする請求項１９記載の方法。
【請求項２１】
前記ステップ（ｉ４ｂ）は、前記複写するステップの前に、前記現在の領域（フレーム）における前記構成素子の間で同期文字を探索するステップを含み、前記現在の領域における同期文字を探索した結果が肯定的であり、かつ、同期文字が見出だされた場合、第１の同期の存在状態が記憶されて、前記複写するステップが行われ、前記現在の領域における同期文字を探索した結果が否定的であり、かつ、同期文字が見出だされない場合、前記予備走査を行うステップ（ｈ）に戻されることを特徴とする請求項２０記載の方法。
【請求項２２】
前記選択された領域がすでに占有されているかどうかをチェックするステップ（ｉ２）は、前記第１の同期の存在状態が記憶されているかどうかをチェックするステップを含み、前記第１の同期の存在状態が検出された場合、
（ｉ５）前記の現在の領域における構成素子の中で同期文字を探索し、
（ｉ６ａ）前記探索するステップ（ｉ５）の結果が肯定的であり、かつ、同期文字が前記の現在の領域において見出だされた場合には、前記現在の領域における構成素子を前記負荷領域中に複写し、結合状態を記憶し、後続する走査を行い、前記後続する走査における構成素子を前記現在領域（フレーム）と関連付け、前記ステップ（ｉ１）に戻るステップが行われ、また、前記探索するステップ（ｉ５）の結果が否定的であり、かつ、同期文字が前記の現在の領域において見出だされなかった場合、前記第１の同期の存在状態を取消し、前記ステップ（ｈ）に戻るステップが行われることを特徴とする請求項２１記載の方法。
【請求項２３】
前記複写し、記憶するステップの前に、
（ｉ７）前記現在の領域における構成素子と前記負荷領域における構成素子とが結合されることができるかどうかを確認する結合チェックステップが行われ、
（ｉ８ａ）前記現在の領域における構成素子と前記負荷領域における構成素子とが結合できる場合、結合状態を複写し、記憶するステップ（ｉ６ａ）を実行し、
（ｉ８ｂ）前記現在の領域における構成素子と前記負荷領域における構成素子とが結合できない場合、失敗した試みのカウンタを更新することを特徴とする請求項２２記載の方法。
【請求項２４】
前記結合チェックステップ（ｉ７）は、
（ｉ７−１）現在の領域における構成素子の数が負荷領域における構成素子の数に対する予め定められた関係を有しているか否かをチェックし、
（ｉ７−２ａ）前記チェックステップ（ｉ７−１）の結果が肯定的ならば、前記負荷領域と前記現在の領域との間の重畳可能な構成素子の数を計算し、
（ｉ７−３）重畳可能な構成素子の数が予め定められたしきい値を越えているか否かをチェックし、
（ｉ７−４ａ）前記ステップ（ｉ７−３）の結果が肯定的ならば、結合し、結合状態を記憶するステップ（ｉ６ａ）を実行し、
（ｉ７−４ｂ）前記ステップ（ｉ７−３）の結果が否定的ならば、失敗した試みのカウンタを更新するステップ（ｉ８ｂ）を実行するステップを含んでいることを特徴とする請求項２３記載の方法。
【請求項２５】
失敗した試みのカウンタを更新するステップ（ｉ８ｂ）に続いて、前記失敗した試みのカウンタ(NOMATCH) が予め定められたしきい値(MAX-NOMATCH) を越えているか否かをチェックするステップが行われ、その結果が肯定的ならば、占有されていない負荷領域状態を記憶し、その後前記ステップ（ｈ）に戻ることを特徴とする請求項２３記載の方法。
【請求項２６】
チェックするステップ（ｉ２）の結果が、前記選択された領域がすでに占有されていることを示した場合、
（ｉ３ｂ）前記負荷領域における構成素子と前記現在の領域における構成素子間との間の重畳性をチェックし、
（ｉ９ａ）前記重畳性チェックステップ（ｉ３ｂ）の結果が肯定的ならば、前記現在の領域における構成素子が前記記憶領域における構成素子と結合され、
（ｉ９ｂ）前記重畳性チェックステップ（ｉ３ｂ）の結果が否定的ならば、前記複数の負荷領域の中からある負荷領域を選択するステップ（ｉ１）に戻るステップが行われることを特徴とする請求項２０乃至２５のいずれか１項記載の方法。
【請求項２７】
前記一致探索ステップ（ｄ）に続いて、
（ｊ）前記現在の領域および負荷領域における構成素子の１以上の予め定められた数(MINMATCH)が絶対基準位置(To)に関して実質的に同じ位置(Tp)および実質的に同じ幅(Tc)を有しているか否かをチェックするために結合チェックを行い、
（ｋ）前記結合チェックステップ（ｊ）の結果が否定的ならば、失敗した試みのカウンタ(NOMATCH) を更新し、
（ｌ）前記失敗した試みのカウンタ(NOMATCH) が予め定められたしきい値(MAX-NOMATCH) を越えているか否かをチェックし、その結果が肯定的ならば、占有されていない負荷領域状態を記憶するステップが行われることを特徴とする請求項２６記載の方法。
【請求項２８】
前記ステップ（ｉ２）はまた、前記結合状態の存在をチェックするステップ（ｉ２−１）を含み、前記結合状態が検出された場合、前記現在の領域における構成素子と前記負荷領域における構成素子と間で一致探索ステップ（ｉ２−２）を実行することを特徴とする請求項２２乃至２７のいずれか１項記載の方法。
【請求項２９】
前記予備走査、前記後続する走査、前記第１の走査および前記第２の走査はそれぞれ、
（ａ１）走査開始位置(Li)から走査終了位置(Lf)までの完全な走査を行い、
（ａ２）複数の隣接したコード構成素子を選択し、
（ａ３）複数の隣接した構成素子を現在の領域と関連付け、
（ａ４）現在の領域における前記構成素子を処理し、
（ａ５）別の連続したコード構成素子が前記完全な走査中に存在しているかどうかを調査し、
（ａ６ａ）別の隣接したコード構成素子が存在している場合、前記別の隣接したコード構成素子を選択し、前記ステップ（ａ３），（ａ４）および（ａ５）を繰返し、
（ａ６ｂ）別の隣接したコード構成素子が存在しないならば、前記ステップ  （ａ１）を繰り返すステップを含んでいることを特徴とする請求項２２乃至２８のいずれか１項記載の方法。
【請求項３０】
前記一致探索ステップ（ｄ）の実行の前に重畳の方向を決定するステップ（ｍ）が行われ、このステップ（ｍ）は、
（ｍ１）第３および第４の走査における予め定められた構成素子から始まって、第１の方向に移動する重畳可能な前記第３および第４の走査における構成素子の数を決定し、
（ｍ２）予め定められた異なった構成素子から始まって、第１の方向と逆の第２の方向に移動する重畳可能な前記第３および第４の走査における構成素子の数を決定し、
（ｍ３）前記ステップ（ｍ１）において決定された構成素子の数が前記ステップ（ｍ２）において決定された構成素子の数より大きい場合、第１の方向インジケータ（順方向）を設定し、
（ｍ４）前記ステップ（ｍ２）において決定された構成素子の数が前記ステップ（ｍ１）において決定された構成素子の数より大きい場合、第２の方向インジケータ（逆方向）を設定するステップを含んでいることを特徴とする請求項１乃至２９のいずれか１項記載の方法。
【請求項３１】
前記重畳可能な構成素子の数を決定するステップ（ｍ１）および（ｍ２）は、前記第１および前記第２の方向のそれぞれにおいて最初および最後の構成素子から始まる前記第３および第４の走査において、前記絶対基準位置に関して実質的に同じ位置および実質的に同じ幅を有する構成素子の探索を含んでいることを特徴とする請求項３０記載の方法。
【請求項３２】
前記一致探索ステップ（ｄ）に続いて、
（ｎ１）第３の走査における構成素子と前記第４の走査における対応した構成素子との間の絶対位置の差を計算し、
（ｎ２）第３の走査における前記構成素子の絶対位置と前記計算された差とを合計するステップを含んでいる前記第３の走査における構成素子が後続する走査中にとる位置を決定するステップ（ｎ）が行われることを特徴とする請求項３０または３１記載の方法。
【請求項３３】
前記第１のインジケータ（順方向）が設定された場合、第３の走査における第１の構成素子と第４の走査における第１の構成素子との間の位置の差がステップ（ｎ１）において計算され、一方前記第２のインジケータ  （逆方向）が設定された場合、第３の走査における最後の構成素子と第４の走査における最初の構成素子との間の位置の差がステップ（ｎ１）において決定されることを特徴とする請求項３２記載の方法。
【請求項３４】
ステップ（ｉ６ａ）はまた、
（ｏ１）前記負荷領域における構成素子と前記現在の領域における対応した構成素子との間の絶対位置の差を計算し、
（ｏ２）前記負荷領域における構成素子が後続する走査中にとる位置を、前記負荷領域における前記構成素子の絶対位置と前記計算された差との和として決定するステップを含んでいることを特徴とする請求項２２乃至２６のいずれか１項記載の方法。
【請求項３５】
ステップ（ｅ）に続いて、
（ｏｏ１）前記再構成された走査における構成素子と前記第２の走査における対応した構成素子との間の絶対位置の差を計算し、
（ｏｏ２）前記再構成された走査における構成素子が後続する走査中にとる位置を、前記再構成された走査における前記構成素子の絶対位置と前記計算された差との和として決定するステップが行われることを特徴とする請求項１乃至３４のいずれか１項記載の方法。
【請求項３６】
前記一致探索ステップ（ｄ）の前に、前記第１および前記第２の走査における前記構成素子の重畳性をチェックするステップ（ｐ）が行われることを特徴とする請求項１乃至３５のいずれか１項記載の方法。
【請求項３７】
前記重畳性チェックステップ（ｐ）は、
（ｐ１）前記第２の走査における最後の構成素子の位置が前記第１の走査における最初の構成素子の位置より低くないか否かをチェックし、
（ｐ２）前記第２の走査における最初の構成素子の位置が前記第１の走査における最後の構成素子の位置より高くないか否かをチェックし、
（ｐ３ａ）両チェックステップ（ｐ１）および（ｐ２）の結果が肯定的ならば、一致探索ステップ（ｄ）が実行され、
（ｐ３ｂ）前記チェックステップ（ｐ１）および（ｐ２）の少なくとも一方の結果が否定的ならば、バーコードを走査する別のステップを実行するステップを含んでいることを特徴とする請求項３６記載の方法。
【請求項３８】
重畳性チェックステップ（ｐ）の結果が肯定的ならば、
（ｑ）前記第２の走査における構成素子を復号し、
（ｒ）復号ステップ（ｑ）の結果を外部装置に伝送するステップが行われることを特徴とする請求項３６または３７記載の方法。
【請求項３９】
前記第１の走査における構成素子を前記第２の走査における構成素子と結合する前記ステップ（ｅ）の後、
（ｓ）前記再構成された走査における構成素子を復号し、
（ｔ）前記復号ステップ（ｓ）の結果を外部装置に伝送するステップが実行されることを特徴とする請求項１乃至３８のいずれか１項記載の方法。
【請求項４０】
前記絶対基準位置(To,Li)は、前記バーコードの外側にある、請求項１乃至３９いずれか１項記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、バーコードの連続した走査を再構成する方法に関する。
【０００２】
【従来の技術】
知られているように、バーコード（図２）は、暗色素子（通常は黒色）が明るい素子（スペース、通常は白色）によって分離されている複数の長方形の素子（バー）から構成された符号化された情報を含む光学コードである。
【０００３】
このバーコード用の読取り装置は、通常、照明装置（たとえば、レーザビーム源）と、センサ（たとえば、フォトダイオード）とを含んでおり、照明装置がバーコードと交差する走査路に沿って移動する光読取りビームを発生するように構成され、センサがレーザスポットによって照明された走査路の部分から拡散された光の一部分を受光する。このセンサは、バーコードを走査した結果これを照射した放射線に応答して、バーコードにおける明いおよび暗い素子の連続したものによって変調される波形を有する交流電気信号を出力する。知られているように、光はバーによって吸収され、スペースによって反射されるため、スペースによって発生された信号がセンサ上に入射した放射線が多いために高い値を有し、一方バーによって発生された信号はセンサに入射した放射線量が少ないために低い値を有する。
【０００４】
この方法において、バーコードを走査することによって発生された信号は、連続的に２進数にされ、バーコードの構成素子を表し、かつ、スペースを走査したときの第１の高レベルと、バーを走査したときの第２の低レベルとを含む２レベルの波形を有する。
【０００５】
一般に、バーコードは、そのコードの縦軸とは一致しない走査方向で検査される。したがって、走査は、通常、バーコードの縦軸に対して角度を有する方向で行われる。とくに、この角度がしきい値αｍａｘ（図２）を越えた場合、コード構成素子のサブセットが走査され、バーコードの部分的な走査に関連している二進数にされた信号がコード構成素子のサブセットを含む。
【０００６】
また、既知の装置では、照明装置とバーコードが付けられている対象物との間において相対運動が生じる。たとえば、移動装置によって運ばれる場合、照明装置は固定され、対象物はこの照明装置に関して一定の速度で移動する。
【０００７】
このために、通常、連続的な部分走査が、バーコードなの種々の隣接するサブグループの走査に関連している。
【０００８】
いくつかの既知の再構成装置は、バコードを再構成して復号するために異なった位置において行われる同じコードの連続的な部分走査をまとめて組立てるように構成されている。
【０００９】
この種の再構成装置は、バーコードの縦軸に関して所定の傾斜を有する部分的な走査のこれらの素子をまとめて組立てるものであり、このコードの全方向読取りを行う。
【００１０】
【発明が解決しようとする課題】
本発明の目的は、バーコードの連続した部分的な走査を再構成し、とくに効率的なコードの全方向読取りを特徴とする方法を提供することである。さらに、本発明の目的は、連続した部分的走査を効率的に処理する連続した部分的な走査を再構成する方法を提供することである。
【００１１】
【課題を解決するための手段】
この目的は、第１および第２の反射率を有し、基準位置に関する位置および幅で表される複数の素子を含むバーコードの連続した走査を再構成する方法に関連した本発明によって達成され、この方法は、バーコードの第１の走査を行い、第１の走査における絶対基準位置に関する素子の位置および幅を決定し、この第１の走査におけるこの素子が後続する走査における絶対基準位置に関してとる位置を計算し、バーコードの第２の走査を行い、第２の走査における絶対基準位置に関する素子の位置および幅を決定し、一致探索ステップを実行して、第１の走査における１以上の基準素子と第２の走査における１つの基準素子とを見出し、両走査の素子が絶対基準に関して実質的に同じ位置および実質的に同じ幅を有しており、再構成された走査を発生させるように第１の走査における素子を第２の走査における素子と結合するステップを含んでいることを特徴とする。
【００１２】
とくに、この一致探索ステップに続いて、第１の走査および第２の走査における１以上の予め定められた数の素子が絶対基準に関して実質的に同じ位置および実質的に同じ幅を有していることをチェックする結合チェックステップが行われる。
【００１３】
とくに、結合チェックステップは、第１の走査における素子の１以上の最小の規定されたセットを第２の走査における構成素子の最小の規定された１セットと比較することによって行われる。
【００１４】
【発明の実施の形態】
以下、本発明を、その１実施形態を示している添付図面を参照して説明する。図１において、参照符号1 は読取りヘッド5 を備えたバーコード読取り装置を全体的に示しており、この読取りヘッド5 はコンベアベルト6 のほうを向いており、このベルト6 上に配置され、読取りヘッド5 に関して直線方向Ｄに一定の速度で移動できる対象物7 （たとえば、小荷物）を識別するように構成されている。読取りヘッド5 のほうを向いた対象物7 の１つの面7aには、１以上の光学コード8 、とくに既知の種類のバーコード（図２）が付けられている。各バーコードは、異なった反射率の、とくに、明るい部分（スペース、通常は白色）によって分離された暗い（通常、黒色）部分を有する複数の長方形部分（バー）から構成されている。異なった暗い部分および明るい部分（バーおよびスペース）は、異なった幅を有することができる。
【００１５】
このコードの明および暗部分、すなわちバーおよびスペースは、バーコードの構成素子である。したがって、以下の説明において、コードの“構成素子”はコードのバーまたはスペースを意味する。
【００１６】
コードの隣接した構成素子は、符号化された情報が関連しているコードの文字を一緒に形成する。
【００１７】
とくに、バーコードは、その第１の終端部分の近くにおいて、以下スタートパターンと呼ばれるコード開始文字を一緒に規定する複数の構成素子を有している（図２）。さらに、バーコードは、その第２の終端部分の近くにおいて、以下ストップパターンと呼ばれるコード終了文字を一緒に規定する複数の構成素子を有している。コード開始およびコード終了文字、すなわちスタートパターンおよびストップパターンは、コードのいわゆる“同期文字”を定義している。
【００１８】
読取りヘッド5 は、既知の照明装置17（たとえば、レーザ源17a 、およびこのレーザ源17a が発生したレーザビームを反射するように構成された回転プリズム反射器17b ）を具備し、この照明装置はレーザ走査ビームＦを光学コード8 上に導き、このコード8 を走査する。
【００１９】
とくに、レーザビームＦは実質的に傾斜した平面において移動し、ベルト6 およびその上の走査路Ｌに沿っている対象物を横断して交差し、レーザスポットがこの走査路Ｌ上を走査開始位置Ｌi から走査終了位置Ｌf まで移動する。
【００２０】
読取りヘッド5 はまた、その瞬間に走査されている通路Ｌの部分の輝度に比例した強度を有する出力アナログ信号Ｓ(t) を生成するために拡散された光放射線Ｒをピックアップするための光学獲得およびフォーカスシステム21（略図で表されている）と関連したセンサ20（たとえば、フォトダイオード）を含んでいる。アナログ信号Ｓ(t) は電子装置22に供給され、ここで本発明に従って処理される。この装置22はまた、コードと関連された符号化された情報をピックアップするように構成されている。
【００２１】
図１を参照して説明した読取り装置は、当然ながら、本発明による方法と関連して使用されることのできる種々の読取り装置の一例である。この装置1 は、異る種類のものであることができ、たとえば、バーコードを照射するためのランプまたはＬＥＤ、あるいはバーコード中間調レベルの２次元映像を撮像するためのテレビジョンカメラまたはＣＣＤを含むことができ、また、走査されているバーコードの部分の輝度に比例した強度を有する信号Ｓ(t) を同様に出力する連続処理装置であることができる。
【００２２】
図３は、電子処理装置22の動作サイクルの全体的なブロック図である。
とくに、図３において、開始ブロック（スタート）からブロック100 に進行し、このブロック100 は、走査路Ｌの完全な走査の後にセンサ20によって発生されたアナログ信号Ｓ(t) を獲得する。“完全な走査”とは、レーザスポットが走査開始位置Ｌi から走査終了位置Ｌf に移動する走査を意味する。
【００２３】
アナログ信号Ｓ(t) は、一般に、走査開始位置Ｌi （図１）の走査に対応した最初の部分と、走査終了位置Ｌf （図１）の走査に対応した最後の部分と、走査されたバーコードに対応しており、低い振幅（谷部）の領域Ｖによって分離された高い振幅（ピーク）を有する領域Ｐのシーケンスによって形成された交流部分（図１５ａに示されている）を含む中間部分とを有している。
【００２４】
信号Ｓ(t) の交流部分の波形において、ピークＰはスペースを表し、谷部Ｖがバーを表している。
【００２５】
その後、ブロック100 において、アナログ信号Ｓ(t) は２進数にされ、それはその交流部分に対応しており、２つのレベル（図１５ｂに示されている）を有する信号Ｓｄ(t) を出力し、これらのレベルは、スペースを走査した時の第１の高レベルＨＩと、バーを走査した時の第２の低レベルＬＯとから構成されている。信号Ｓｄ(t) の高レベルＨＩおよび低レベルＬＯは、信号Ｓｄ(t) の異なったレベルの部分を分離し、そのコードの２つの異なった構成素子（バー・スペース）間の分離領域を表す実質的に垂直な転移フロントによって結合される。
【００２６】
二進数にされた信号Ｓｄ(t) の波形は、走査が始まる瞬間、すなわち、レーザスポットが走査開始位置Ｌi を照射する瞬間にその原点（時間ｔo ）を有する時間軸上に位置される。
【００２７】
走査開始位置Ｌi とは、バーコード構成素子の位置とみなされる絶対空間基準であり、瞬間ｔo は、信号Ｓｄ(t) により表されるコード構成素子の時間的な位置が測定される絶対時間基準とみなされる。
【００２８】
とくに、時間原点ｔo と、デジタル化された信号フロントＳｄ(t) が現れる瞬間ｔi との間で測定された時間Ｔp は、当該フロントが続くバーコード構成素子と絶対基準（ｔo ）との間の時間距離を表す。
【００２９】
時間インターバルＴp は、走査開始位置に関するバーコード構成素子の位置を表している。
【００３０】
デジタル化された信号Ｓｄ(t) の高レベル部分ＨＩおよび低レベル部分ＬＯの少なくとも一方の時間幅Ｔc は、バーコード構成素子の幅を表す。
【００３１】
このために、各バーコード構成素子は、その時間インターバルＴp が絶対基準（走査開始位置Ｌi に等しい時間ｔo ）に関するバーコード構成素子の位置を表し、また時間インターバルＴc がコード構成素子の幅を表す信号Ｓｄ(t) で表される。
【００３２】
以下の説明では、簡明にするために、コード構成素子の位置を参照し、この用語がその時間距離Ｔp を意味し、一方“コード構成素子の幅”が時間インターバルＴc を意味する。
【００３３】
また、以下の説明において、フレームという用語は、デジタル化された信号Ｓｄ(t) によって表された１組のコード構成素子を意味する。
【００３４】
換言すると、各フレームは、走査されたバーコードの構成素子を表す複数の位置および幅を含んでいる。
【００３５】
たとえば、フレームは、表ＴＡＢＦ（図２０）によって表されることができ、この表において、
・第１の行は、フレームの素子の、絶対基準ｔo に関する位置（時間ｔp ）をそれぞれ含み、したがってバーコード構成素子の位置をそれぞれ表している多数のセルを含んでいる。
【００３６】
・第２の行は、対応したフレーム素子の幅（時間ｔc ）をそれぞれ含み、したがってバーコード構成素子の幅をそれぞれ表している多数のセルを含んでいる。
【００３７】
以下の説明において、クラスタという用語は、以下に説明する方法によってグループ化された１組のフレームを意味する。実際に、各クラスタは記憶領域を表し、この記憶領域において、所定のバーコードに関連したフレームが、そのフレーム自身が以下に説明するように連続した走査中に獲得される同じ順序で記憶される。
【００３８】
クラスタ素子は、たとえば表ＴＡＢＣ（図２０）によってフレームに類似したやり方で表され、この表において、
・第１の行は、クラスタの素子の、絶対基準ｔo に関する位置（時間ｔp ）をそれぞれ含み、したがってクラスタにグループ化されたバーコード構成素子の位置をそれぞれ表している複数のセルを含んでいる。
【００３９】
・第２の行は、クラスタの対応した素子の幅（時間ｔc ）をそれぞれ含み、したがってクラスタにグループ化されたバーコード構成素子の幅をそれぞれ表している複数のセルを含んでいる。
【００４０】
表ＴＡＢＣおよびＴＡＢＦは、バーコード構成素子をその位置および幅によって規定するセルの対（一方が第１の行からのものであり、他方が第２の行からのものである）を選択することができる各ポインタｉおよびｊによって走査されることができる。
【００４１】
多数の光学コードまたは光学コードの多数の部分が単一の走査によって照射された場合、信号Ｓｄ(t) は１組の個々の異なったフレームＦ1 ，Ｆ2 ，…Ｆn を含む。
【００４２】
フレームがバーコードの全ての構成素子を含むのは、コードの縦軸Ｈとこの軸Ｈに関してαｍａｘ以下で傾斜したラインＬ´（図２）との間のラインに沿って走査が行われた場合のみである。
【００４３】
しかしながら、対象物7 およびその上の光学コード8 は、走査路Ｌに関して任意の相対配置を有する。その結果、走査ラインは通常バーコードの一部分しか横断しない。
【００４４】
このために、各フレームは、通常、バーコード構成素子のサブグループ（バーコード全体ではなく）の走査と関連している。したがって、各フレームは通常部分的な走査と関連し、前述した構成素子のサブグループを表す。
【００４５】
さらに、対象物7 の読取りヘッド5 に関する運動のために、連続した部分装置Ｌ1 ，Ｌ2 …（図１６）は、コードの隣接した部分と交差して横断し、構成素子の異なったサブグループに関連した連続したフレームを生成する。また、本発明は、コード構成素子を表す一般的な信号からスタートするバーコードの連続した部分的走査を再構成する方法に関する。この信号がどのようにして発生または処理されたかは問題ではない。
【００４６】
以下の説明において明らかになるように、同じコードの走査に関連した連続したフレームは、ポインタｉがとる値に基づいて個々に選択されることのできる各クラスタにグループ化される。
【００４７】
各クラスタは、状態と呼ばれる第１のインデックスによってマークされ、この第１のインデックスはクラスタの状態を示す。とくにインデックスは３つの異なった状態に対応した３つの値をとることができる：
・状態＝０：関連したクラスタは空である。すなわち、フレームがグループ化されることのできるアクチブなデータ構造とは全く関連していない。
【００４８】
・状態＝１：関連したクラスタは、同期文字、すなわちスタートパターンまたはストップパターンが一回目に認識されたフレームを含んでいる。
【００４９】
・状態＝２：関連したクラスタは、同期文字が認識されている少なくとも２つのフレームを含んでいる。
【００５０】
以下の説明において、状態１および状態２をアクチブと呼び、一方状態０を非アクチブと呼ぶ。当然ながら、アルゴリズムが始動されたとき、全てのクラスタの状態インデックスはゼロである。続いて、クラスタ自身に関して行われたチェックの結果に応じて、あるいは詳細に説明するように抽出されたフレームに各クラスタを結合しようとした結果に応じて、クラスタの状態インデックスが変更される（２つのアクチブの一方に移行させられるか、あるいはゼロに設定される）。その結果、一般にアクチブなクラスタと非アクチブなクラスタとが常に間断なく存在することとなる。
【００５１】
各クラスタはまた、不一致(NOMATCH) と呼ばれる第２のインデックスでマークされ、この第２のインデックスは、同じクラスタに付加的なフレームを関連させるために行った試みのうち、失敗したものの数を表す。
【００５２】
ブロック100 の後に、論理動作ｉ＝０に従ってカウンタの内容ｉを消去するブロック110 が続く。
【００５３】
ブロック110 の後に、ｉ番目のクラスタを選択し、このｉ番目のクラスタと関連した第１の状態インデックスの状態をチェックするブロック120 が続く。とくに、ブロック120 は、ｉ番目のクラスタの状態インデックスがアクチブであるかどうか、すなわち：
クラスタ（ｉ），状態＝１、あるいは
クラスタ（ｉ），状態＝２
であるかどうかをチェックする。
【００５４】
ブロック120 によるチェックが正の結果（すなわち、検査されたｉ番目のクラスタがアクチブである）場合、ブロック130 が選択される。それ以外の場合（ｉ番目のクラスタが非アクチブ）、ブロック140 がブロック120 に後続する。
【００５５】
ブロック130 は、ｉ番目のクラスタを再選択し、第２の不一致(NOMATCH) インデックスの値をチェックする。とくに、不一致インデックスがしきい値 MAX-NOMATCH以上である場合、すなわち、ｉ番目のクラスタを付加的なフレームと関連させるために少なくとも MAX-NOMATCHの失敗した試みが行われた場合、ブロック130 は、現在アクチブであるｉ番目のクラスタの第１の状態インデックスを強制的にゼロにするブロック150 を選択する、すなわち、
クラスタ（ｉ），状態＝０
を選択する。
【００５６】
換言すると、アクチブなクラスタを新しいフレームと関連させるために少なくとも MAX-NOMATCHの失敗した試みが行われたそれらアクチブなクラスタは、非アクチブな状態に移行させられる。すなわち、それらは取消されて、アクチブなクラスタと関連させることのできないフレーム素子を記憶するために利用可能にされる。
【００５７】
ブロック150 がブロック140 に後続する。
ブロック140 は、そのカウンタの現在の値ｉを検査するように構成されている。その値がメモリ中に存在するクラスタの最大数より低い（ｉ＜クラスタの最大数）場合、このブロック140 の後には、論理動作ｉ＝ｉ＋１によってカウンタの内容ｉを１だけ増加させるブロック160 が後続し、このプロセスはブロック160 からブロック120 に戻る。
【００５８】
ブロック140 において、カウンタの内容ｉがメモリ中に存在するクラスタの数と等しいことが検出された（ｉ＝クラスタの最大数）場合、このブロック140 の後にブロック170 が続く。
【００５９】
先行する動作には、メモリ中に存在する全てのクラスタのセットを走査した結果を結合することが含まれ、走査された各クラスタに対して以下の動作が行われる：
・クラスタが非アクチブインデックス（状態＝０）によってマークされた場合、クラスタは変更されない（すなわち、どのタイプの動作も行われない）。
【００６０】
・クラスタがアクチブインデックス（状態＝１，２）によってマークされた場合、このクラスタを付加的なフレームと関連させるための試みの失敗した数がチェックされ、しきい値 MAX-NOMATCHを越えた場合、クラスタは、状態インデックスを強制的にゼロにすることによって非アクチブにされる。
【００６１】
ブロック170 は、完全な走査に関連した信号Ｓｄ(t) から単一のフレームＦi を選択するように既知の方法で行われる。
【００６２】
このブロック170 の後にブロック180 が後続し、このブロック180 においては、前に選択されたフレームＦi の素子の数Ｎｆ、すなわち、フレームによって表されたバーコード構成素子の数をカウントする。この数Ｎｆがしきい値を規定している構成素子の最小数を越えた場合、ブロック180 の後にブロック190 が後続し、そうでなければ、ブロック180 の後にブロック200 が後続する。フレームＦi が構成素子の最小数を越える多数の構成素子を含んでいる場合に選択されるブロック190 （以下詳細に説明する）は、フレームを処理するように実行される。すなわち、このブロック190 は、フレームＦi を各アクチブなクラスタと関連させることを試みるように実行される。いずれの場合も、ブロック190 はブロック200 によって後続され、このフロック200 は、検査されているフレームＦi がブロック100 によって検出された走査に含まれている最後のフレームであるか否かをチェックする。否である場合、別のフレームＦi ＋１を選択するために、このプロセスはブロック200 からブロック170 に戻り、そうでなければ（走査中のフレームを検査した後）、ブロック200 からブロック100 に戻る。もちろん、別の走査では、対象物7 は前の走査とは異なった位置になり、その結果バーコードの異なった部分が走査され、前の走査における位置とは異なる連続位置で行われたコードの部分的走査に関連したフレームが検出される。
【００６３】
図４において、ブロック170 から抽出されたフレームＦi を処理するように実行されるブロック190 を詳細に説明する。このプロセスは、フレームＦi をメモリ中に存在する全てのアクチブなクラスタと関連させようと試みるものである。
【００６４】
とくに、ブロック190 は、第１のクラスタを選択するように構成されたブロック191 を含んでいる。ブロック191 はブロック192 によって後続され、そこにおいて選択されたクラスタがメモリ中に存在する最後のクラスタであるか否かがチェックされる。否である（別のクラスタがメモリ中に存在している）場合、ブロック190 はブロック193 を選択し、そうでなければ（メモリ中に存在しているクラスタを検査した後）、ブロック192 はブロック194 を選択する。
【００６５】
ブロック193 は、選択されたクラスタがアクチブなクラスタであるか否かをチェックする。そうである（選択されたクラスタがアクチブである）場合、ブロック193 はブロック195 によって後続され、そうでない（選択されたクラスタが非アクチブである）場合、このプロセスは、ブロック193 からブロック191 に戻る。
【００６６】
前述した動作を結合した結果は、全てのクラスタ（アクチブおよびインアクチブ）を走査し、アクチブなクラスタだけを選択することである。それぞれ選択されたアクチブクラスタの場合、フレームＦｉを以下説明するように関連する。
【００６７】
最初に、ブロック195 （以下説明する）はフレームＦｉおよび選択されたクラスタが交差するか否か、即ち重ねられたときにフレームとクラスタが相当する位置の構成素子を有するか否かをチェックする。
【００６８】
ブロック195 のチェックが否定的な結果（フレームＦｉとクラスタが交差しない）であった場合、ブロック195 からブロック191 へ戻る。そうでなければ（フレームＦｉとクラスタは交差し結合されることができる）ブロック195 からブロック196 に進む。
【００６９】
ブロック196 は、フレームの使用を示している状態にフレームを置くことによって、フレームの状態インデックスを変更する。フレームＦｉと種々のアクチブクラスタとを結合しようとする次の期間に続いてこのように使用する。
【００７０】
ブロック196 にブロック197 が後続し、ブロック197 はフレームＦｉが既にデコードされているか否かをチェックし、デコードされていないならば（フレームのデコードがまだ行われていない）、ブロック197 にブロック 197ａが後続し、このブロックがこのデコードを実行する。そうでなければ（フレームが既にデコードされている）ブロック197 にブロック198 が後続する。フレームがブロック 197ａで適切にデコードされていることは、このフレームがバーコードの全ての構成素子を含んでいることを意味し、その場合、勿論、連続する部分的な走査を再構成することは必要ではない。デコードされたコードはそれ故、装置22の外部に送られる。
【００７１】
（以下詳細に説明する）ブロック198 はフレームＦｉと第１のアクチブクラスタとを結合しようとし、これが否定的な結果であるならば、クラスタにより実行される結合が失敗したＮＯＭＡＴＣＨの数を測定するカウンタの内容は１単位だけ増加され、ブロック198 からブロック191 に移り、ブロック191 は別のアクチブクラスタを選択し、同一のフレームＦｉと付加的なクラスタとを結合する動作を反復する。
【００７２】
ブロック198 の結合プロセスが肯定的な結果であるならば、ブロック198 からブロック 198ａに進み、このブロックは、フレームＦｉが適切に付加されているクラスタをデコードしようとする。クラスタが適切にデコードされたならば、デコードされたコードは装置22の外部に送信される。同様にブロック 198ａにはブロック191 が後続される。
【００７３】
ブロック194 は、フレームの使用を示すフレームＦｉの状態インデックス値をチェックする。フレームＦｉが少なくとも１つのアクチブクラスタとの結合をされていることをインデックスが示したならば、ブロック194 からブロック200 （図３）へ移動され、それによって図４を参照して説明したブロック190 における動作を受けている付加的なフレームＦｉ＋１を選択する（ブロック170 ）。フレームの状態インデックスが、フレームＦｉがまだ結合動作を受けていないことを示したならば、ブロック194 からブロック 194ａ（後述する）に進み、このブロックはフレームＦｉをそれに挿入することによってクラスタを開始する。同様にブロック 194ａには同様にブロック200 が後続される。
【００７４】
図５はフレームＦｉおよび選択されたクラスタが交差し、それ故重畳可能であるか否かをチェックするブロック195 の詳細を示している。
【００７５】
ブロック195 は絶対基準（時間ｔo に対応する走査開始位置）に関するフレームの最後の素子の位置Ｔｆｌ（図１８）が、絶対基準に関するクラスタの第１の素子の位置ＴＣｆよりも低いか否かをチェックする第１のブロック 195ａを有し、即ち、
Ｔｆｌ＜ＴＣｆ        （１）
上記の不等式（１）が肯定的な結果であるならば、クラスタとフレームは重畳が可能ではないと認識され、ブロック 195ａからブロック191 へ戻る。不等式（１）が否定的な結果であるならば、ブロック 195ａからブロック 195ｂへ進む。
【００７６】
ブロック 195ｂは、絶対基準に関するフレーム中の第１の素子の位置ＴＦｆが絶対基準に関するクラスタの最後の素子の位置ＴＣｌよりも高いか否かをチェックし、即ち、
ＴＣｌ＜ＴＦｆ        （２）
この不等式（２）が肯定的な結果であるならば、クラスタとフレームは重畳が可能ではないと認識され、ブロック 195ｂからブロック191 へ戻される。不等式（１）と（２）の両者が否定的な結果であるならば、クラスタとフレームは重畳が可能であると認識され、ブロック 195ｂからブロック 196に進む。図１８は、両不等式が否定的な結果である場合、即ち、クラスタとフレームが陰影により示されている重畳されたゾーンＳＺを有するときを表しており、このゾーンＳＺはクラスタとフレームの対応する位置を有する素子を含んでいる。
【００７７】
図６はブロック 197ａまたは 198ａを示し、これはフレーム（またはクラスタ）のデコードを試みる。
【００７８】
ブロック 197ａ、 198ａはフレーム（またはクラスタ）の長さがバーコードに対して許容可能であるか否か、即ちこれがバーコードに適合する数の素子を含んでいるか否かをチェックする開始ブロック201 を有している。
【００７９】
そうでないならば（フレームまたはクラスタがバーコードの長さに適合しない長さであるならば）、ブロック201 からブロック198 （または191 ）に進み、さもなければ、ブロック201 からブロック202 に進む。ブロック202 は例えば米国特許第3 723 710 号、第3 761 685 号、または第3 838 251 号の各明細書に記載されているようによく知られた方法でフレーム（またはクラスタ）のデコードを試みる。ブロック202 におけるフレームのデコードは、コード全体が第１の走査から読み取られる幸運なケースであり十分である。このような場合、（図９のブロック400 を参照して詳細に後述するように）もう一度フレームを関連するクラスタに結合することは不可能であり、結果としてプロセスはクラスタをデコードするブロック 198ａ（図４）を通って進行しなければならない。デコードが行われないならば、ブロック202 からブロック198 （または191 ）に進み、またはさもなければ（フレームまたはクラスタのデコードが成功する場合）。ブロック202 からブロック203 に進む。ブロック203 はフレーム（またはクラスタ）のデコード内容を装置22の外部に送信し、従ってバーコードをデコードする。ブロック203 からブロック204 に進み、ブロック204 はフレーム（またはクラスタ）がデコードされたことを示す。ブロック204 にはブロック198 （または191 ）が後続している。フレーム（またはクラスタ）はデコードされているが、誤ったコードがデコードされている可能性があるので、フレームをその他のクラスタに関連づける努力を行う。従って、既知の方法で、コードの真のデコードが全ての行われたデコードから選択される。
【００８０】
図７はブロック 194ａを示しており、これはクラスタを初期化する。ブロック 194ａは試験中のフレームに同期文字が存在するか否かをチェックする開始ブロック206 を有する。ブロック206 によるチェックが肯定であるならば、ブロック207 への移動が行われ、そうでなければブロック206 からブロック200 に進む。
【００８１】
ブロック207 は全てのフレーム素子の位置および幅をクラスタへ転送することによってクラスタ内のフレームの全ての素子をコピーする。
【００８２】
ブロック207 からブロック208 に進み、このブロック208 はクラスタが同期文字を含んだフレームを含んでいるので、クラスタの状態インデックスを１、即ち状態＝１に設定する。ブロック208 にブロック200 が後続される。
【００８３】
換言すると、フレームが任意のアクチブクラスタで使用されていないならば、フレームが同期文字を有していれさえすれば、新しいクラスタ中のフレームをコピーすることによって初期化動作が行われる。
【００８４】
図８はフレームＦｉをアクチブクラスタに関連付けようとするブロック198 の詳細図を与えている。
【００８５】
ブロック198 は、１と２の間で変化するクラスタの状態インデックスを制御する初期ブロック300 を有する。ブロック300 により試験されたクラスタはアクチブクラスタのみであり、即ち、疑いなく同期文字が存在する少なくとも１つのフレームを含んでいる。ブロック300 は状態１が検出されるならばブロック310 を選択し、状態２が検出されるならばブロック320 を選択する。
【００８６】
基本的に、ブロック310 は同期文字が存在する１つのフレームを含んだクラスタの試験で選択される。
【００８７】
ブロック310 は試験下のフレームが第２の同期文字を含んでいるか否かをチェックする。チェックが否定的であるならば、ブロック310 からブロック330 に進み、ブロック330 はその状態をゼロに設定することによってクラスタを取消し、即ちクラスタを非アクチブにし、再構成の可能性を阻止する。ブロック330 もまたブロック191 に後続される。
【００８８】
ブロック310 よるチェックが肯定である場合、即ちフレームが第２の同期文字を含んでいるならば、再構成が開始される。それ故、再構成はそれぞれ１つの同期文字を含んだ連続的な２つのフレームを検出した後でのみ開始する。
【００８９】
このため、ブロック310 に続いてブロック340 （詳細に後述する）が行われ、ブロック340 はフレームとクラスタ間の対応をチェックし、それによってフレームとクラスタが同一のコードに属するか否かをチェックする。
【００９０】
ブロック340 はチェックが否定的な結果（フレームとクラスタが整列しない）ならばブロック345 を選択し、チェックが肯定的（フレームとクラスタが同一線上にある）ならばブロック350 を選択し、したがってクラスタを状態２に設定する。ブロック345 はＮＯＭＡＴＣＨ数を定めるカウンタを単位１だけ増加し、このブロックは事実上、フレームとクラスタとの対応の検索が失敗した後に選択される。ブロック345 に続いてブロック191 が行われる。
【００９１】
ブロック340 はフレームの同期文字と、対応するクラスタの同期文字との距離（差）を計算する。
【００９２】
これに関しては、図９を参照すべきであり、図９はフレームとクラスタとの対応のチェックが成功した後、距離Δ−位置を計算し、それによってフレームとクラスタが同一コードの走査に関係するか否かをチェックするブロック340 を示している。
【００９３】
ブロック340 はフレーム素子数がクラスタ素子数を越えるか否かをチェックする開始ブロック400 を有する。これがそうでない（ノー）ならば、エラー状態が検出され、ブロック400 からブロック345 と191 に移動され、そうでなければ（イエス）ブロック400 に続いてブロック410 が行われる。勿論、バーコード全体が既に先に行われた走査で読取られており現在の走査もコードの全ての構成素子に関係するという幸運なケースでは、ブロック400 で行われるチェックは実際のフレームとクラスタとの結合を阻止し、状態は図４のブロック 197ａを参照して前述したような状態である。
【００９４】
ブロック410 は、フレームの第１の素子とクラスタの第１の素子から開始して比較（図１９）することによって、フレームとクラスタで重畳された、即ち絶対基準に関して同一位置と同一幅とを有するコードの構成素子数ｆを計算する（左側または順方向に対応する）。
【００９５】
ブロック410 にはブロック420 が続き、このブロック420 はフレームの最後の素子とクラスタの最後の素子から比較を開始して、フレームとクラスタで重畳された、即ち絶対基準に関して同一位置と同一幅とを有する素子数ｒを計算する（右側または逆方向に対応する）。
【００９６】
図１９を参照すると、クラスタはＬ１とマークされた走査で検出されたコード構成素子を含んでおり、フレームはＬ２とマークされた走査で発見されたコード構成素子を含んでいる。
【００９７】
ブロック420 にはブロック430 が続き、ブロック430 は数ｒが数ｆに等しいか否かをチェックする。数ｒとｆが等しいならば、不確定な状況が検出され（右側の重畳可能な構成素子数は左側の重畳可能な構成素子数に対応する）、結果としてコードは再構成されない。ブロック430 にはブロック345 と191 が後続している。数ｒとｆが異なっているならば（ノー）、ブロック430 からブロック440 に進み、ブロック440 は数ｒまたは数ｆがゼロでないか否かをチェックする。少なくとも前記数のうちの一方がゼロに等しいならば、対応する状態が検出されず、結果としてコードは再構成されない。ブロック430 とブロック440 からブロック345 と191 に進む。数ｒまたは数ｆがゼロではないならば、ブロック450 が選択され、これは数ｆが数ｒよりも大きいか否かをチェックする。数ｆが数ｒよりも大きいならば、ブロック 460ｆが選択され、そうでなければ（ｆがｒよりも小さい）、ブロック 460ｒが選択される。
【００９８】
ブロック 460ｆは左側から開始する重畳可能な構成素子の数ｆがしきい値ＭＩＮＭＡＴＣＨよりも大きいか否かをチェックし、ｆがしきい値よりも小さいならば（即ちフレームとクラスタに重畳された構成素子数が限定されているとき）、エラーが検出され、再構成は開始されず、結果としてブロック345 、191 が選択される。ｆがＭＩＮＭＡＴＣＨしきい値よりも大きいならば（即ち、フレームとクラスタに十分な数の重畳された構成素子が存在するならば）、ブロック 460ｆはブロック 470ｆを選択し、このブロック 470ｆは読取りヘッドに関してバーコードの左側（または順方向）から開始して重畳状態を記憶する。ブロック 470ｆにはブロック 480ｆが後続し、ブロック 480ｆはフレームの第１の素子の位置とクラスタの第１の素子の位置との差として値Δ−位置を計算する（図１８参照）。
【００９９】
それ故、コードの再構成が開始し、ブロック 480ｆにはブロック350 が後続し（図８、９）、ブロック350 は状態インデックスを２に設定し（状態＝２）、再構成の開始を示す。実際にこの状態は２つの連続的で重畳可能なフレームが検出されており、両者が同期コードを有することを意味しており、用語Δ−位置もまたこれらの２つの第１のフレームに基づいて計算される。
【０１００】
ブロック 460ｒは右側から開始する重畳可能な構成素子数ｒがしきい値ＭＩＮＭＡＴＣＨよりも大きいか否かをチェックする。ｒがしきい値よりも小さいならば（即ちフレームとクラスタの対応する構成素子数が限定されているならば）、エラーが検出され、再構成は開始されず、ブロック345 と191 が選択される。ｒがＭＩＮＭＡＴＣＨしきい値よりも大きいならば（即ち、フレームとクラスタに十分な数の重畳された構成素子が存在するとき）、ブロック 460ｒはブロック 470ｒを選択し、ブロック 470ｒは読取りヘッドに関してバーコードの右側（後方向または逆方向）から開始して重畳状態を記憶する。ブロック 470ｒにはブロック 480ｒが後続し、ブロック 480ｒはフレームの最後の素子の位置とクラスタの最後の素子の位置との差として値Δ−位置を計算する。
【０１０１】
それ故、コードの再構成が開始し、ブロック 480ｒにはブロック350 が後続し、ブロック350 は状態インデックスを２に設定する。
【０１０２】
図８に戻ると、既に前述したようにブロック350 はクラスタの第１の状態インデックスを２に設定し、再構成の開始を示し、それに続いてブロック355 が行われ、ブロック355 はクラスタのフレーム素子をコピーすることによってフレームとクラスタとを関連付ける。
【０１０３】
ブロック355 にはブロック380 が後続し、ブロック380 は図１のコンベアベルトの運動により後で走査するために与えられている位置にクラスタを配置することによって、丁度関連するフレームに関するクラスタの測定された変位に基づいてクラスタの位置を再計算する。（図１２のｂに詳細に説明されている）ブロック380 はΔ−位置変位を全てのクラスタ素子に与え、即ち現在位置のΔ−項を合計することにより、新しい位置が各クラスタ素子のために計算される。それ故、クラスタの各素子ではブロック380 において以下の変換が行われる。
【０１０４】
クラスタ素子の新しい位置＝クラスタ素子の現在位置＋Δ−位置
これに関して、ベルト6 は読取りヘッドに関して実質上一定速度（例えば毎秒３ｍ）で移動し、ミラー17ｂも例えば毎秒１０００走査に十分な高速度で回転することに留意する。１つの走査と次の走査との間の時間は非常に短く、本発明の場合１０００分の１秒に等しい。この時間間隔の期間中に、速度の実質的な変化は非常に高い加速（数十ｇ程度）を必要とし、これは明らかにコンベアベルト装置の場合には達成不可能または想像しがたいので、ベルトの速度は実際に一定である。
【０１０５】
結果として、その後の走査で検出されたフレームと適合するようにクラスタの取る位置はブロック380 （図１２のｂ）により高い正確性で近似され、これはクラスタに含まれる最後の走査と、次のフレームに対して生じる次の走査との間の一定の速度を仮定して変位（Δ−位置）の評価を行った後に、最後に走査するクラスタの関連する素子を示す。
【０１０６】
ブロック380 にブロック 198ａが後続される。
【０１０７】
再構成が開始されたときに到達したブロック320 （以下詳細に説明する）、状態＝２は、ブロック300 により解析されたフレームＦｉとクラスタが関連されることができるか否かをチェックする。ブロック320 の動作に参加するクラスタは同期文字をそれぞれ有する２つのフレームを含んだクラスタであり、ブロック320 は通常バーコードの第３または第４の走査中に選択される。
【０１０８】
ブロック320 により行われた関連が不成功であったならば、ブロック320 からブロック360 に進み、ブロック360 はＮＯＭＡＴＣＨ数を定めるカウンタを単位１だけ増加し、ブロック360 からブロック191 に進む。
【０１０９】
ブロック320 により行われた関連が適切（イエス）であったならば、ブロック320 からブロック365 （以下詳細に説明する）に進み、ブロック365 はブロック340 （図９）で先に計算されたフレームとクラスタ間の距離Δ−位置の計算を補正する。
【０１１０】
ブロック365 にはブロック370 が後続され（ブロック355 に類似）、ブロック370 はブロック320 により行われる動作後に、クラスタ中の新しいフレーム素子を関連づける。ブロック370 の動作を以下詳細に説明する。
【０１１１】
ブロック355 と370 にはブロック380 が後続され，これはさらにブロック 198ａに進む。
【０１１２】
図１０、１１はブロック320 の詳細を示し、このブロック320 はフレームＦｉを試験下のクラスタに関連づけようとする。
【０１１３】
ブロック320 は開始ブロック500 （図１０）を有し、このブロック500 は、バーコードが読取りヘッドに関して順方向動作（図９のブロック 460ｆ）または逆方向動作（図９のブロック 460ｒ）を行っているか否かをチェックする。第１のケース（順方向動作）では、ブロック510 が選択され、第２のケース（逆方向動作）では、ブロック 520ｂ（図１１）が選択される。
【０１１４】
ブロック510 は、表ＴＡＢＣのポインタの値ｉｃにより定められているクラスタの最後から２番目の素子と、表ＴＡＢＣのポインタの値ｊｎにより定められているフレームの最後から２番目の素子とを選択する（図２０）。以後の説明では簡略にするために、用語“クラスタ中の素子ｉｃ”はポインタの値ｉｃにより定められているクラスタ中の素子を識別するために使用され、用語“フレーム中の素子ｊｎ”はポインタの値ｊｎにより定められているフレーム素子を識別するために使用されている。
【０１１５】
ブロック510 からブロック520 に進み、ブロック520 は絶対基準に関するクラスタ素子ｉｃの位置が、同じ絶対基準に関するフレーム素子ｊｎの位置にほぼ等しいか否かをチェックする。
【０１１６】
否定的なケース（ｉｃとｊｎの位置が一致しない）では、ブロック520 からブロック530 に進む。そうでなければ（ｉｃとｊｎの位置が実質上一致する）ブロック520 からブロック540 に進む。
【０１１７】
ブロック530 はクラスタ中の素子ｉｃの位置がフレーム素子ｊｎの位置よりも高いか否かをチェックする。
【０１１８】
そうであるならば（イエス：クラスタ素子ｉｃの位置がフレーム素子ｊｎの位置よりも高い）、ブロック555 が選択され、そうでなければ（ノー）ブロック550 が選択される。図２０はフレーム素子ｊｎの位置がクラスタ素子ｉｃの位置よりも高いときのブロック550 の選択に関するケースを示している。
【０１１９】
ブロック550 は値ｊｎを単位１だけ減少し、即ち動作ｊｎ−ｊｎ−１を実行し、それによって先の位置よりも低い位置を有するフレーム素子を選択する。従って、ブロック555 は値ｉｃを１だけ減少し、即ち動作ｉｃ−１を実行し、それによって先の位置よりも低い位置を有するクラスタ素子を選択する。
【０１２０】
ブロック555 、550 の両者にブロック560 が後続され、このブロック560 は（それぞれのブロック555 、550 により先に変更された）値ｉｃとｊｎがしきい値ＭＩＮＭＡＴＣＨより下であるか否かをチェックする。即ち、
ｉｃ＜ＭＩＮＭＡＴＣＨ、または
ｊｎ＜ＭＩＮＭＡＴＣＨ
上の不等式のうちの少なくとも一方が満足されたならば、ブロック560 からブロック360 （図１０、図８）に進み、ブロック360 はエラー状態を検出し、クラスタとフレームとの間の失敗した結合動作数を示す数ＮＯＭＡＴＣＨを増加する。
【０１２１】
ブロック560 の両不等式がいずれも満足されないならば、ブロック560 からブロック320 へ戻り、ブロック320 はクラスタ素子ｉｃの位置と、フレーム素子ｊｎの位置を再度チェックし、チェックは先のチェックステップで使用された素子とは異なったクラスタおよびフレーム素子によって行われる。
【０１２２】
クラスタ素子ｉｃとフレーム素子ｊｎが実質上同一位置であるとき、ブロック540 が選択される。図２０の例では、これは、ポインタｊｎが右の位置から、絶対基準に関してｉｃとマークされたクラスタ素子（スペース）と同一位置を有するフレーム素子（図示の例ではスペース）にｊｎが対応する左の位置へ移動したときに生じる。
【０１２３】
ブロック540 は以下の動作を行う。
【０１２４】
・ｉｃとマークされた素子から、前記素子に先行する素子（ｉｃ−１，ｉｃ−２，…ｉｃ−ｎ）の方向への逆方向に開始する複数のクラスタ素子を選択する。所定の素子に関する“先行する素子”は所定の素子よりも低い位置を有する素子を意味している。
【０１２５】
・ｊｎとマークされた素子から、考慮されている素子に先行する素子（ｊｎ−１，ｊｎ−２，…ｊｎ−ｍ）の方向への逆方向に開始する複数のフレーム素子を選択する。
【０１２６】
・重畳可能な素子の数Ａ（ｉｃ，ｊｎ）を、ｉｃとｊｎから開始するクラスタとフレームの少なくともＭＩＮＭＡＴＣＨと選択された素子を比較することによって計算する。“重畳可能な素子”は、フレームおよびクラスタ素子の連続的なシーケンスを意味しており、ここではシーケンスのフレームの各素子は、同一位置および同一幅を有するクラスタのそれぞれの素子に対応する。
【０１２７】
ブロック540 にはブロック580 が後続され、このブロック580 は数Ａ（ｉｃ，ｊｎ）が数ＭＩＮＭＡＴＣＨよりも大きいか否かをチェックする。即ち、
Ａ（ｉｃ，ｊｎ）＞ＭＩＮＭＡＴＣＨ
そうであるならば（すなわちＡ（ｉｃ，ｊｎ）＞ＭＩＮＭＡＴＣＨ）、ブロック580 からブロック 365、370 （図８）に進み、そうでなければ（すなわちＡ（ｉｃ，ｊｎ）＜ＭＩＮＭＡＴＣＨ）、ブロック580 からブロック530 に進み、ブロック520 で行われた位置の識別が近似しているだけであり、（ブロック540 と580 に基づいて）重畳可能な構成素子数の計算とチェックが１つだけ位置が離れているバーコードの構成素子について行われているので、最後に考慮される素子に隣接したフレーム素子ｉｃまたはクラスタ素子ｊｎから開始する重畳性を新たにチェックする。
【０１２８】
そうであるならば、即ち、フレームとクラスタが適切に結合されることができることをチェックが示したならば、（値Δ−位置を再計算する）ブロック365 （図８）とブロック370 （図８）へ移動し、素子ｉｃから開始するクラスタのｊｎが後続するフレーム素子をコピーする。
【０１２９】
図１１を参照して示した動作は図１０で示された動作と類似しているが、この場合、動作は運動の逆方向に関連し、一方、図１０を参照して示した動作は進行方向の順方向に関連する。
【０１３０】
ブロック 520ｂ（図１１）は値ｉｃとｊｎをゼロに設定し、即ちｉｃ＝ｊｎ＝０である。
【０１３１】
ブロック 520ｂにはブロック590 が後続し、このブロック590 は絶対基準に関する検出されたクラスタ素子ｉｃの位置が絶対基準に関して検出されたフレーム素子ｊｎの位置とほぼ同一であるか否かをチェックする。
【０１３２】
そうでないならば（即ちｉｃとｊｎに関連する素子の位置が一致しないならば）、ブロック590 からブロック600 に進み、そうでなければ（ｉｃとｊｎに関連する素子の位置が実質上一致するならば）、ブロック590 にブロック610 が後続される。
【０１３３】
ブロック600 はクラスタ素子ｉｃの位置がフレーム素子ｊｎの位置よりも高いか否かをチェックする。そうであるならば（クラスタ素子ｉｃの位置＞フレーム素子ｊｎの位置）、ブロック620 が選択され、そうでないならば、ブロック630 が選択される。
【０１３４】
ブロック620 は、値ｊｎを単位１だけ増加し、即ち動作ｊｎ＝ｊｎ＋１を実行し、それによって先行する素子よりも高い位置を有するフレーム素子を選択する。同様に、ブロック630 は、値ｉｃを単位１だけ増加し、即ち動作ｉｃ＝ｉｃ＋１を実行し、それによって先行する素子よりも高い位置を有するクラスタ素子を選択する。
【０１３５】
ブロック620 と630 の両者にはブロック640 が後続し、ブロック640 は（ブロック630 と620 により先に変更された）値ｉｃとｊｎがクラスタ素子数からしきい値ＭＩＮＭＡＴＣＨを減算した値よりも大きいか否かをチェックする。即ち、
ｉｃ＞クラスタ素子数−ＭＩＮＭＡＴＣＨ、または
ｊｎ＞クラスタ素子数−ＭＩＮＭＡＴＣＨ
これらの不等式のうちの少なくとも一方が満足されたならば、ブロック640 からブロック360 （図１１、図８）に進み、このブロック360 はエラー状況を検出し、クラスタとフレームと結合の失敗した動作数を示す数であるＮＯＭＡＴＣＨ数を増加する。
【０１３６】
ブロック640 において両方の不等式が満足されないならば、ブロック640 からブロック590 に戻り、ブロック590 はｉｃとｊｎに関連する素子の位置を再度チェックする。このチェックは先のチェックステップで使用された素子とは異なったクラスタおよびフレーム素子において行われる。
【０１３７】
ｉｃとｊｎに関連する素子が実質上同一位置であるとき、ブロック610 が選択され、以下の動作を行う。
【０１３８】
・ｉｃとマークされた素子から、最後の素子ｉｃに後続する素子（ｉｃ＋１，ｉｃ＋２，…ｉｃ＋ｎ）の方向への順方向に開始する複数のクラスタ素子を選択する。“所定の素子に後続する素子”は所定の素子よりも高い位置を有する素子を意味している。
【０１３９】
・ｊｎとマークされた素子から、最後の素子ｊｎに後続する素子（ｊｎ＋１，ｊｎ＋２，…ｊｎ＋ｍ）の方向への順方向に開始する複数のフレーム素子を選択する。
【０１４０】
・重畳可能な素子の数Ａ（ｉｃ，ｊｎ）を、クラスタとフレームの少なくともＭＩＮＭＡＴＣＨと選択された構成素子を比較することによって計算する。
【０１４１】
ブロック610 からブロック660 に進み、ブロック660 は数Ａ（ｉｃ，ｊｎ）が数ＭＩＮＭＡＴＣＨよりも大きいか否かをチェックする。即ち、
Ａ（ｉｃ，ｊｎ）＞ＭＩＮＭＡＴＣＨ
そうであるならば（すなわちＡ（ｉｃ，ｊｎ）＞ＭＩＮＭＡＴＣＨ）、ブロック660 からブロック 365、370 に進み、そうでなければ（すなわちＡ（ｉｃ，ｊｎ）＜ＭＩＮＭＡＴＣＨ）、ブロック660 からブロック600 に進む。
【０１４２】
肯定的なケースでは、即ち、フレームとクラスタが適切に結合されることができる場合、値Δ−位置を再計算するブロック365 （図８）とブロック370 へ移動し、ｊｎに先行するフレーム素子は、素子ｉｃから開始するクラスタ中でコピーされる。
【０１４３】
それ故、素子ｉｃはクラスタとフレームの整列に関する基準素子である。ブロック370 はまたフレームとクラスタとの間の“結合”ステップを実行し、ここでは基準素子に関する所定の側に配置された全ての素子はクラスタ中にコピーされる。特に、基準素子からの順方向（図１０）の場合（即ち、高い位置を有する素子の方向の場合）、フレーム素子が選択され、クラスタ中にコピーされ、一方、基準点からの逆方向（即ち低い位置を有する素子方向）では、クラスタ素子が維持される。
【０１４４】
ブロック320 により実行された動作は対応検索ステップを限定し、このステップでは、クラスタのチェックを開始するため（ポインタ値ｉｃ，ｉｃ−１，ｉｃ＋１により示される）素子の選択が行われ、フレームの（ポインタ値ｊｎにより示される）チェック開始素子の選択が行われ（ブロック510 、 520ａ）、絶対基準に関するクラスタ中のチェック開始素子の位置が絶対基準に関するフレームのチェック開始素子の位置とほぼ同一であるか否かをチェックするための対応するチェックステップが実行される（ブロック520 および590 ）。
【０１４５】
対応チェックステップが否定的な結果であるならば、反復的な変形ステップが（ブロック530 、555 、559 、560 ；699 、620 、630 、640 により）実行され、それによってチェック開始素子に隣接する後続するクラスタまたはフレーム素子を選択する。対応チェックステップが肯定的な結果（ブロック540 と610 への出力）に到達するまで、反復的な変形ステップが他のクラスタまたはフレーム素子により実行される。このような場合、フレームとクラスタとの可能な結合が最初に検出される。最初に、結合はフレームまたはクラスタが１つの構成素子の場合に検出される。しかしながら、より大きな信頼性を有する結合を認識するために、一連のさらに別の動作が以下のステップを含む本発明にしたがった方法により実行される。
【０１４６】
−基準素子から、基準素子から離れた素子の方向へ開始する予め定められた方向（即ち逆方向または順方向）における対応チェックステップを満足する基準素子から開始する複数のクラスタ素子を選択し（ブロック540 、610 ）、
−基準素子から、基準素子から離れた素子の方向へ開始する予め定められた方向（前記逆方向または順方向）で対応チェックステップを満足する基準素子（ｊｎ）から開始する複数のフレーム素子を選択し（ブロック540 、610 ）、
−クラスタとフレームにおいて選択された素子の中から重畳可能な素子の数を計算し（ブロック540 、610 ）、
−重畳可能な素子数が基準ＭＩＮＭＡＴＣＨと予め定められた関係を有する（特に基準ＭＩＮＭＡＴＣＨよりも大きい）とき、対応検索ステップが肯定的な結果を与えたことを検出する（ブロック580 および660 ）。
【０１４７】
このようにして、フレーム素子とクラスタ素子は共に比較されるので、フレームとクラスタとの結合がより信頼性をもって認識される。
【０１４８】
対応検索動作がフレームまたはクラスタの最後から２番目の素子から開始することに留意すべきである。例えば雑音のために信頼性が不十分である情報を与える可能性があるので最後のフレームまたはクラスタ素子は選択されない。
【０１４９】
（図１９の走査Ｌ２参照）最後の素子が走査線により部分的にのみ横断されてもよく、その結果として幅が不確定なので最後から２番目の素子が選択される。
【０１５０】
このようにして、対応検索アルゴリズムの信頼性が改良される。
【０１５１】
図１２のａはブロック365 を示しており、これはフレームとクラスタとの間の距離Δ−位置を再計算する。距離Δ−位置は最初にブロック340 により計算される。特に、ブロック365 はフレーム素子ｊｎの位置とクラスタ素子ｉｃの位置との差として距離Δ−位置を再計算する。
【０１５２】
それ故、認められるように、項Δ−位置は結合動作の開始時に最初にブロック340 において計算され、続いてブロック365 における計算により改良される。
【０１５３】
図１３は図１０を参照して説明した変形を示している。簡単にする目的で、前記部分と異なる部分のみを説明する。
【０１５４】
示されている変形では、ブロック540 は以下の動作を行うブロック 540ａを有する。
【０１５５】
・ｉｃで示された素子から、素子（ｉｃ−１，ｉｃ−２，…ｉｃ−ｎ）の方向への後（逆）方向に開始する複数のクラスタ素子を選択する。“所定の素子に先行する素子”はこの素子よりも低い位置を有する素子を意味している。
【０１５６】
・ｊｎで示された素子から、この素子に先行する素子（ｊｎ−１，ｊｎ−２，…ｊｎ−ｍ）の方向への後（逆）方向に開始する複数のフレーム素子を選択する。
【０１５７】
・重畳可能な素子の数Ａ（ｉｃ，ｊｎ）を、ｉｃとｊｎから開始するクラスタとフレームの少なくともＭＩＮＭＡＴＣＨと選択された素子を比較することによって計算する。“重畳可能な素子”は、フレームおよびクラスタ素子の連続的なシーケンスを意味しており、ここではシーケンスの各フレーム素子は、同一位置および同一幅を有する各クラスタ素子に対応する。
【０１５８】
ブロック 540ａにブロック 540ｂが後続され、このブロック 540ｂは以下の動作を行う。
【０１５９】
・ｉｃ−１で示された素子から、素子ｉｃ−１に先行する素子（ｉｃ−２，ｉｃ−４，…ｉｃ−ｎ）の方向への後（逆）方向に開始する複数のクラスタ素子を選択する。
【０１６０】
・ｊｎで示された素子から、この素子に先行する素子（ｊｎ−１，ｊｎ−２，…ｊｎ−ｍ）の方向への後（逆）方向に開始する複数のフレーム素子を選択する。
【０１６１】
・重畳可能な素子の数Ｂ（ｉｃ−１，ｊｎ）を、クラスタとフレームの少なくともＭＩＮＭＡＴＣＨと選択された素子を比較することによって計算する。
【０１６２】
ブロック 540ｂはブロック 540ｃにより後続され、このブロック 540ｃは以下の動作を行う。
【０１６３】
・ｉｃ＋１で示された素子から、素子ｉｃ＋１に先行する素子（ｉｃ，ｉｃ−１，…ｉｃ−ｎ）の方向への後（逆）方向に開始する複数のクラスタ素子を選択する。
【０１６４】
・ｊｎで示された素子から、この素子に先行する素子（ｊｎ−１，ｊｎ−２，…ｊｎ−ｍ）の方向への後（逆）方向に開始する複数のフレーム素子を選択する。
【０１６５】
・重畳可能な素子の数Ｃ（ｉｃ＋１，ｊｎ）を、クラスタとフレームの少なくともＭＩＮＭＡＴＣＨと選択された素子を比較することによって計算する。
【０１６６】
ブロック 540ｃ（ブロック540 の最後のステップ）からブロック570 に進み、このブロック570 は、ブロック 540ａ、 540ｂ、 540ｃにおいて先に計算されている数Ａ（ｉｃ，ｊｎ）、Ｂ（ｉｃ−１，ｊｎ）、Ｃ（ｉｃ＋１，ｊｎ）中から最大数Ｍｂを検索する。
【０１６７】
ブロック570 からブロック580 に進み、このブロック580 は、先に抽出された数Ｍｂがしきい値ＭＩＮＭＡＴＣＨよりも大きいか否かをチェックし、ブロック580 で行われたチェックが否定的な結果（Ｍｂ＜ＭＩＮＭＡＴＣＨ）であったならば、ブロック520 へ戻り、そうでないならば（Ｍｂ＞ＭＩＮＭＡＴＣＨ）、ブロック580 からブロック365 へ移動する。
【０１６８】
それ故、フレームとクラスタが適切に結合されたことが発見されたならば、（値Δ−位置を再計算する）ブロック365 とブロック370 が選択され（図８）、ブロック370 は、選択された最大数がＡ（ｉｃ，ｊｎ）、Ｂ（ｉｃ−１，ｊｎ）またはＣ（ｉｃ＋１，ｊｎ）のいずれであるか否かに応じて、素子ｉｃ、ｉｃ＋１、ｉｃ−１から開始するクラスタのｊｎに後続するフレーム素子をコピーする。
【０１６９】
図１４は図１１を参照して説明したものの変形を示している。簡潔にする目的で、先に説明した部分と異なった部分のみを説明する。
【０１７０】
示されている変形では、ブロック610 は以下の動作を行うブロック 610ａを有する。
【０１７１】
・ｉｃで示された素子から、最後の素子ｉｃに後続する素子（ｉｃ＋１，ｉｃ＋２，…ｉｃ＋ｎ）の方向への順方向に開始する複数のクラスタ素子を選択する。“所定の素子に後続する素子”は所定の素子よりも高い位置を有する素子を意味している。
【０１７２】
・ｊｎで示された素子から、最後の素子に続く素子（ｊｎ＋１，ｊｎ＋２，…ｊｎ＋ｍ）の方向への順方向に開始する複数のフレーム素子を選択する。
【０１７３】
・重畳可能な素子の数Ａ（ｉｃ，ｊｎ）を、クラスタとフレームの少なくともＭＩＮＭＡＴＣＨと選択された素子を比較することによって計算する。
【０１７４】
ブロック 610ａにはブロック 610ｂが後続し、ブロック 610ｂは以下の動作を行う。
【０１７５】
・ｉｃ−１で示された素子から、ｉｃ−１に後続する素子（ｉｃ，ｉｃ＋１，…ｉｃ＋ｎ）の方向への順方向に開始する複数のクラスタ素子を選択する。
【０１７６】
・ｊｎで示された素子から、ｊｎに後続する素子（ｊｎ＋１，ｊｎ＋２，…ｊｎ＋ｍ）の方向への順方向に開始する複数のフレーム素子を選択する。
【０１７７】
・重畳可能な素子の数Ｂ（ｉｃ−１，ｊｎ）を、クラスタとフレームの少なくともＭＩＮＭＡＴＣＨと選択された素子を比較することによって計算する。
【０１７８】
ブロック 610ｂにはブロック 610ｃが後続し、このブロック 610ｃは以下の動作を行う。
【０１７９】
・ｉｃ＋１で示された素子から、ｉｃ＋１に後続する素子（ｉｃ＋２，ｉｃ＋３，…ｉｃ＋ｎ）の方向への順方向に開始する複数のクラスタ素子を選択する。
【０１８０】
・ｊｎで示された素子から、ｊｎに後続する素子（ｊｎ＋１，ｊｎ＋２，…ｊｎ＋ｍ）の方向への順方向に開始する複数のフレーム素子を選択する。
【０１８１】
・重畳可能な素子の数Ｃ（ｉｃ＋１，ｊｎ）を、クラスタとフレームの少なくともＭＩＮＭＡＴＣＨと選択された素子を比較することによって計算する。
【０１８２】
ブロック 610にはブロック650 が後続し、このブロック650 は、ブロック 610ａ、 610ｂ、 610ｃにより先に計算された数Ａ（ｉｃ，ｊｎ）、Ｂ（ｉｃ−１，ｊｎ）またはＣ（ｉｃ＋１，ｊｎ）の中から最大数Ｍｆを検索する。
【０１８３】
ブロック650 にはブロック660 が後続し、このブロック660 は先のブロック650 により抽出された数Ｍｆが数ＭＩＮＭＡＴＣＨよりも大きいか否かをチェックする。即ち、
Ｍｆ＞ＭＩＮＭＡＴＣＨ
そうであるならば（すなわちＭｆ＞ＭＩＮＭＡＴＣＨ）、ブロック660 からブロック365 と370 に進み、そうでないならば（すなわちＭｆ＜ＭＩＮＭＡＴＣＨ）、ブロック660 からブロック600 に進む。
【０１８４】
肯定的なケースでは、即ちフレームとクラスタが結合に成功した場合、Δ−位置を再度計算するブロック365 （図８）と、選択された最大数がＡ（ｉｃ，ｊｎ）、Ｂ（ｉｃ−１，ｊｎ）またはＣ（ｉｃ＋１，ｊｎ）のいずれであるか否かに応じて、素子ｉｃ、ｉｃ＋１、またはｉｃ−１から開始するクラスタのｊｎに先行するフレーム素子をコピーするブロック370 へ移動する。
【０１８５】
明らかに、種々の変形および変更が特許請求の範囲に記載された本発明の技術的範囲内で行われることができる。特に本発明の方法は、連続的な種類およびデコードされたコードの伝送後に連続的にコードを走査し処理する（図６のブロック203 、204 を参照して説明した）代わりに、アルゴリズムの中断、クラスタのゼロ設定、手動付勢後または後続のコードの認識後（例えばフレームなしの走査期間後）のみブロック100 から開始する再付勢を含むことができることを強調する。しかしながらこのような場合、フレームまたはクラスタ素子数が所定の素子数に等しいことをチェックし、それによってコードが実際に完全に読取られているか否かを確証するチェックを挿入することが望ましい。
【０１８６】
また、アルゴリズムは幾つかチェックを挿入することにより変更されることができる。特に、各クラスタは付加的なインジケータ（ゼロ走査カウンタ）と関連されることができ、このインジケータはクラスタの更新を生じない走査後にインクレメントされる。このような場合、ゼロ読取りした走査カウンタは走査毎に（例えば開始ブロック100 で）にチェックされ、読取りが所定のしきい値を越えたならば、クラスタの状態インデックスはゼロに設定され、したがってクラスタを有効にする。しかしながら１つのバーコードと次のバーコードとの間の間隔にさえも雑音が存在するため、走査は構成素子なしであることはほとんどないので、この動作は厳密に必要ではない。しかしながら雑音はクラスタを開き、その後クラスタの状態インデックスをゼロに設定することにより閉じることが可能であり、したがってクラスタを実効的なコード構成素子の次の走査に対して利用可能にする。
【図面の簡単な説明】
【図１】本発明による方法を使用するバーコード読取装置の概略図。
【図２】バーコードの図。
【図３】本発明による方法のステップシーケンスを示した論理的なブロック図。
【図４】図３のブロック図の詳細図。
【図５】図４のブロック図の詳細図。
【図６】図４のブロック図の詳細図。
【図７】図４のブロック図の詳細図。
【図８】図４のブロック図の詳細図。
【図９】図８のブロック図の詳細図。
【図１０】図８のブロック図の詳細図。
【図１１】図８のブロック図の詳細図。
【図１２】図８のブロック図の詳細図。
【図１３】図１０に関して異なった実施形態の論理的ブロック図。
【図１４】図１１に関して異なった実施形態の論理的ブロック図。
【図１５】バーコード走査に関する電気信号の時間関数を示したグラフ。
【図１６】図２のバーコードの走査図。
【図１７】本発明により構成されたデータ構造図。
【図１８】本発明による方法によって得られた信号の時間関数のグラフ。
【図１９】本発明による方法のステップの説明図。
【図２０】本発明による方法の後続的なステップの説明図。
【図１】
0004376353.tif 000002
【図２】
0004376353.tif 000003
【図３】
0004376353.tif 000004
【図４】
0004376353.tif 000005
【図５】
0004376353.tif 000006
【図６】
0004376353.tif 000007
【図７】
0004376353.tif 000008
【図８】
0004376353.tif 000009
【図９】
0004376353.tif 000010
【図１０】
0004376353.tif 000011
【図１１】
0004376353.tif 000012
【図１２】
0004376353.tif 000013
【図１３】
0004376353.tif 000014
【図１４】
0004376353.tif 000015
【図１５】
0004376353.tif 000016
【図１６】
0004376353.tif 000017
【図１７】
0004376353.tif 000018
【図１８】
0004376353.tif 000019
【図１９】
0004376353.tif 000020
【図２０】
0004376353.tif 000021