(57)【特許請求の範囲】
【請求項１】
明モジュールおよび暗モジュールにより構成される明暗モジュールにコード化された二次元コードで、このコード化されたデータをデコードするのに要する機能パターンと、前記データまたは前記データに付随する情報をコード化したデータパターンと、を含む二次元コードを読み取り可能な二次元コード読取装置において、
前記二次元コードのコード画像で同じ二次元コードについて異なるタイミングで取得された複数のコード画像を記憶するコード画像記憶手段と、
前記コード画像記憶手段に記憶された一のコード画像に基づいてこの一のコード画像に含まれる前記機能パターンを検出する機能パターン検出手段と、
前記機能パターンの検出に際し前記明暗モジュールの明暗を判別するために設定された第１の閾値を用いて前記一のコード画像に含まれる前記データパターンをデコードする第１のデコード手段と、
前記第１のデコード手段による前記データパターンのデコードができたか否かを判断するデコード成否判断手段と、
前記デコード成否判断手段により前記データパターンのデコードができなかったと判断された場合、前記コード画像記憶手段に記憶された前記コード画像を構成する各画像データで明暗の度合いを画素ごとに数値表現したものを、前記複数のコード画像のうちの所定画像分加算しこの加算により得られた加算画像データに基づいて加算コード画像を生成するコード画像加算手段と、
前記コード画像加算手段により生成された前記加算コード画像に基づいて前記明暗モジュールの明暗を判別するための第２の閾値を設定する閾値設定手段と、
前記第２の閾値を用いて前記加算コード画像に含まれる前記データパターンをデコードする第２のデコード手段と、
を備えることを特徴とする二次元コード読取装置。
【請求項２】
前記コード画像記憶手段は、前記複数のコード画像を構成する各画像データを論理的に循環状に記憶可能な環状記憶装置であることを特徴とする請求項１記載の二次元コード読取装置。
【請求項３】
前記閾値設定手段は、前記加算コード画像を構成する画素で列状に隣り合って並んだ画素ごとの前記加算画像データの増減変化量を、二次微分演算しその結果得られる二次微分値がゼロになる前記加算画像データを前記第２の閾値に設定することを特徴とする請求項１または２記載の二次元コード読取装置。
【請求項４】
前記閾値設定手段は、前記加算コード画像を構成する画素で列状に隣り合って並んだ画素ごとの前記加算画像データの総和を、当該列を構成する画素数で除して得られる平均値を前記第２の閾値に設定することを特徴とする請求項１または２記載の二次元コード読取装置。
【請求項５】
前記コード画像加算手段は、前記所定画像分の画像数の１／２以上の加算器を備えており、これらを並列に動作させ前記所定画像分の各画素ごとにの加算演算をほぼ同時に行うことにより、前記加算画像データを求めて前記加算コード画像を生成することを特徴とする請求項１〜４のいずれか一項に記載の二次元コード読取装置。
【請求項６】
前記コード画像加算手段は、前記加算画像データを求めるのに用いた前記所定画像分の画像データのうち最も古い画像データを当該加算画像データから除くとともに最も新しい画像データを当該加算画像データに加えて、新たな前記加算画像データを求め前記加算コード画像を生成することを特徴とする請求項１〜４のいずれか一項に記載の二次元コード読取装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、明モジュールおよび暗モジュールにより構成される明暗モジュールにコード化された二次元コードで、このコード化されたデータをデコードするのに要する機能パターンと、前記データまたは前記データに付随する情報をコード化したデータパターンと、を含む二次元コードを読み取り可能な二次元コード読取装置に関するものである。
【背景技術】
【０００２】
明暗モジュールにコード化された二次元コードを読み取る二次元コード読取装置では、一般に、二次元コードに反射した光の強弱（色の濃淡または明度に対応する）に応じて信号レベルが変化する受光センサからのセンサ信号を、所定の閾値と比較することで二値化して、明モジュールであるか或いは暗モジュールであるかを判断している。
【０００３】
そして、このような所定の閾値は、予め決められた値に固定されていると、明暗モジュールの濃淡変化が小さい場合や二次元コードの全体が暗い場合等には、明暗のいずれのモジュールについてのセンサ信号も、閾値よりも上または下になってしまうことから、センサ信号を適正に二値化することができない。
【０００４】
このため、下記特許文献１に開示されるように、センサ信号の状態に応じて適宜変更されるものがある。例えば、当該特許文献１の［従来の技術］の欄に開示される第１の方式では、(1) 閾値の上下に一定の不感帯幅を設けこの幅よりも外れるセンサ信号については不感帯幅に収まるように閾値を変化させている。また同欄に開示される第２の方式では、(2) センサ信号の最大値と最小値とを適宜求めてその中間値を閾値に設定する。
【０００５】
ところが、(1) の方式を採ったとしても不感帯幅が一定値であることから常に最適な閾値が設定できるわけではないことや、(2) の方式を採っても明暗の変化が乏しい範囲が広い場合には中間値と言えども適切な閾値の設定が困難になるという問題がある。このため、当該特許文献１では、センサ信号（濃淡信号）の最大値と最小値に応じて不感帯幅を適応的に算出しこれに基づいて閾値を設定する技術を提案している。
【特許文献１】特開平１１−５３４５９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記特許文献１に開示される技術でもあっても、センサ信号（濃淡信号）の最大値と最小値に基づいて不感帯幅を求めこの不感帯幅を用いて閾値をセンサ信号に追従させている。このため、例えば、二次元コード読取装置の電源ラインにノイズが混入すると、電源電圧が揺らぐことに伴いセンサ信号もその影響を受けて揺らいだり、場合によってはギザギザな波形になり得ることから、このようなセンサ信号に基づいた不感帯幅では適切な閾値を設定することが難しい。
【０００７】
つまり、上記特許文献１に開示される技術では、センサ信号に含まれ得る電源等からのノイズ成分を除去し得る構成を採っているわけではないので、電源ノイズが混入すると、正確に二値化することができないという問題がある。
【０００８】
本発明は、上述した課題を解決するためになされたものであり、その目的とするところは、電源ノイズ等が混入しても正確に二値化し得る二次元コード読取装置を提供することにある。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、特許請求の範囲に記載の請求項１の二次元コード読取装置では、明モジュールおよび暗モジュールにより構成される明暗モジュールにコード化された二次元コードで、このコード化されたデータをデコードするのに要する機能パターンと、前記データまたは前記データに付随する情報をコード化したデータパターンと、を含む二次元コードを読み取り可能な二次元コード読取装置において、前記二次元コードのコード画像で同じ二次元コードについて異なるタイミングで取得された複数のコード画像を記憶するコード画像記憶手段と、前記コード画像記憶手段に記憶された一のコード画像に基づいてこの一のコード画像に含まれる前記機能パターンを検出する機能パターン検出手段と、前記機能パターンの検出に際し前記明暗モジュールの明暗を判別するために設定された第１の閾値を用いて前記一のコード画像に含まれる前記データパターンをデコードする第１のデコード手段と、前記第１のデコード手段による前記データパターンのデコードができたか否かを判断するデコード成否判断手段と、前記デコード成否判断手段により前記データパターンのデコードができなかったと判断された場合、前記コード画像記憶手段に記憶された前記コード画像を構成する各画像データで明暗の度合いを画素ごとに数値表現したものを、前記複数のコード画像のうちの所定画像分加算しこの加算により得られた加算画像データに基づいて加算コード画像を生成するコード画像加算手段と、前記コード画像加算手段により生成された前記加算コード画像に基づいて前記明暗モジュールの明暗を判別するための第２の閾値を設定する閾値設定手段と、前記第２の閾値を用いて前記加算コード画像に含まれる前記データパターンをデコードする第２のデコード手段と、を備えることを技術的特徴とする。
【００１０】
なお、「モジュール」とは、当該二次元コードを構成する最小構成要素のことで、「明モジュール」とは、当該モジュールが明色（例えば白色等の明度の高い色）と暗色（例えば黒色等の明度の低い色）の２種類で構成される場合における明色のモジュールのことで、「暗モジュール」とは、当該モジュールが明色と暗色の２種類で構成される場合における暗色のモジュールのことである。
【００１１】
特許請求の範囲に記載の請求項２の二次元コード読取装置では、請求項１記載の二次元コード読取装置において、前記コード画像記憶手段は、前記複数のコード画像を構成する各画像データを論理的に循環状に記憶可能な環状記憶装置であることを技術的特徴とする。
【００１２】
特許請求の範囲に記載の請求項３の二次元コード読取装置では、請求項１または２記載の二次元コード読取装置において、前記閾値設定手段は、前記加算コード画像を構成する画素で列状に隣り合って並んだ画素ごとの前記加算画像データの増減変化量を、二次微分演算しその結果得られる二次微分値がゼロになる前記加算画像データを前記第２の閾値に設定することを技術的特徴とする。
【００１３】
特許請求の範囲に記載の請求項４の二次元コード読取装置では、請求項１または２記載の二次元コード読取装置において、前記閾値設定手段は、前記加算コード画像を構成する画素で列状に隣り合って並んだ画素ごとの前記加算画像データの総和を、当該列を構成する画素数で除して得られる平均値を前記第２の閾値に設定することを技術的特徴とする。
【００１４】
特許請求の範囲に記載の請求項５の二次元コード読取装置では、請求項１〜４のいずれか一項に記載の二次元コード読取装置において、前記コード画像加算手段は、前記所定画像分の画像数の１／２以上の加算器を備えており、これらを並列に動作させ前記所定画像分の各画素ごとにの加算演算をほぼ同時に行うことにより、前記加算画像データを求めて前記加算コード画像を生成することを技術的特徴とする。
【００１５】
特許請求の範囲に記載の請求項６の二次元コード読取装置では、請求項１〜４のいずれか一項に記載の二次元コード読取装置において、前記コード画像加算手段は、前記加算画像データを求めるのに用いた前記所定画像分の画像データのうち最も古い画像データを当該加算画像データから除くとともに最も新しい画像データを当該加算画像データに加えて、新たな前記加算画像データを求め前記加算コード画像を生成することを技術的特徴とする。
【発明の効果】
【００１６】
請求項１の発明では、コード画像記憶手段により、二次元コードのコード画像で同じ二次元コードについて異なるタイミングで取得された複数のコード画像を記憶し、機能パターン検出手段により、コード画像記憶手段に記憶された一のコード画像に基づいてこの一のコード画像に含まれる機能パターンを検出し、第１のデコード手段により、機能パターンの検出に際し明暗モジュールの明暗を判別するために設定された第１の閾値を用いて一のコード画像に含まれるデータパターンをデコードする。そして、デコード成否判断手段により、第１のデコード手段によるデータパターンのデコードができたか否かを判断して、デコード成否判断手段によりデータパターンのデコードができなかったと判断された場合、コード画像加算手段により、コード画像記憶手段に記憶されたコード画像を構成する各画像データで明暗の度合いを画素ごとに数値表現したものを、複数のコード画像のうちの所定画像分加算しこの加算により得られた加算画像データに基づいて加算コード画像を生成し、コード画像加算手段により生成された加算コード画像に基づいて閾値設定手段により明暗モジュールの明暗を判別するための第２の閾値を設定し、第２のデコード手段により、第２の閾値を用いて加算コード画像に含まれるデータパターンをデコードする。
【００１７】
これにより、データパターンのデコードができなかったと判断された場合には、コード画像記憶手段に記憶されたコード画像を構成する各画像データで明暗の度合いを画素ごとに数値表現したものを、複数のコード画像のうちの所定画像分加算しこの加算により得られた加算画像データに基づいて加算コード画像を生成するので、例えば、一時的に電源ノイズ等が混入して一部のコード画像が乱れたとしても、その前後の所定画像分を加算することによって電源ノイズ等の影響を受けていない他のコード画像により当該一部のコード画像の乱れを補うことができる（画像の乱れを緩和することができる）。したがって、このようにコード画像の乱れが緩和された加算コード画像に基づく第２の閾値を用いて加算コード画像に含まれるデータパターンをデコードするので、たとえ電源ノイズ等が混入しても正確に二値化することができる。
【００１８】
請求項２の発明では、コード画像記憶手段は、複数のコード画像を構成する各画像データを論理的に循環状（無端状）に記憶可能な環状記憶装置であることから、論理的に循環状でない有端状の記憶装置に比べて、無駄な空き領域（フラグメント）が出来にくい。これにより、記憶装置を有効に利用することができる。
【００１９】
請求項３の発明では、閾値設定手段を例示する。例えば、加算コード画像を構成する画素で列状に隣り合って並んだ画素ごとの加算画像データの増減変化量を、二次微分演算しその結果得られる二次微分値がゼロになる加算画像データを第２の閾値に設定する。これにより、加算画像データの最大値または最小値を第２の閾値に設定することができる。
【００２０】
請求項４の発明では、閾値設定手段を例示する。例えば、加算コード画像を構成する画素で列状に隣り合って並んだ画素ごとの加算画像データの総和を、当該列を構成する画素数で除して得られる平均値を第２の閾値に設定する。これにより、閾値設定手段として、二次微分値を二次微分演算して得てそれを第２の閾値に設定する場合に比べ、簡素な演算アルゴリズムで第２の閾値を設定することができる。
【００２１】
請求項５の発明では、コード画像加算手段は、所定画像分の画像数の１／２以上の加算器を備えており、これらを並列に動作させ所定画像分の各画素ごとにの加算演算をほぼ同時に行うことにより、加算画像データを求めて加算コード画像を生成する。これにより、加算演算を並列に行わない場合（加算演算を直列に行う）場合に比べて演算処理を速くすることができる。
【００２２】
請求項６の発明では、コード画像加算手段は、加算画像データを求めるのに用いた所定画像分の画像データのうち最も古い画像データを当該加算画像データから除くとともに最も新しい画像データを当該加算画像データに加えて、新たな加算画像データを求め加算コード画像を生成する。これにより、古い画像データを除く減算処理と新たな画像データを加える加算処理とを行うことにより加算画像データを更新できるので、加算対象となる画像データを毎回全て加算演算する場合に比べて演算処理を速くすることができる。
【発明を実施するための最良の形態】
【００２３】
以下、本発明の二次元コード読取装置を、ＱＲコードを読取可能な二次元コードリーダ２０に適用した実施形態を各図を参照して説明する。なお、本実施形態では、二次元コードとして、ＱＲコードを例示して説明するが、明モジュールおよび暗モジュールにより構成される明暗モジュールにコード化された二次元コードで、このコード化されたデータをデコードするのに要する機能パターンと、前記データまたは前記データに付随する情報をコード化したデータパターンと、を記録している二次元コードであれば、例えば、データマトリックスコード、マキシコード、ベリコード、カルラコード、ＣＰコード等であっても本発明を適用することができる。
【００２４】
まず、二次元コードリーダ２０の構成を図１に基づいて説明する。図１に示すように、二次元コードリーダ２０は、主に、照明光源２１、受光センサ２３、結像レンズ２２等の光学系と、メモリ３５、制御回路４０、操作スイッチ４２、液晶表示器４６等のマイコン系と、電源スイッチ４１、バッテリ４９等の電源系と、から構成されている。なお、これらは図略のプリント基板に実装されて図略のハウジング内に収容されている。
【００２５】
光学系は、照明光源２１、受光センサ２３、結像レンズ２２等から構成されている。照明光源２１は、照明光Ｌｆを発光可能な照明光源として機能するもので、例えば、赤色のＬＥＤとこのＬＥＤの出射側に設けられる拡散レンズ、集光レンズ等とから構成されている。本実施形態では、受光センサ２３を挟んだ両側に照明光源２１が設けられており、図略のハウジングの読取口を介してラベルＰに向けて照明光Ｌｆを照射可能に構成されている。このラベルＰには、ＱＲコードＱが印刷されている。
【００２６】
受光センサ２３は、ラベルＰやＱＲコードＱに照射されて反射した反射光Ｌｒを受光可能に構成されるもので、例えば、Ｃ−ＭＯＳやＣＣＤ等の固体撮像素子である受光素子を２次元に配列したエリアセンサが、これに相当する。受光センサ２３は、結像レンズ２２を介して入射する入射光をこの受光面２３ａで受光可能に図略のプリント基板に実装されている。
【００２７】
結像レンズ２２は、外部から読取口を介して入射する入射光を集光して受光センサ２３の受光面２３ａに像を結像可能な結像光学系として機能するもので、例えば、鏡筒とこの鏡筒内に収容される複数の集光レンズとにより構成されている。
【００２８】
次に、マイコン系の構成概要を説明する。マイコン系は、増幅回路３１、Ａ／Ｄ変換回路３３、リングバッファ回路３４、メモリ３５、アドレス発生回路３６、同期信号発生回路３８、制御回路４０、操作スイッチ４２、ＬＥＤ４３、ブザー４４、液晶表示器４６、通信インタフェース４８等から構成されている。このマイコン系は、その名の通り、マイコンとして機能し得る制御回路４０およびメモリ３５と中心に構成される。
【００２９】
光学系の受光センサ２３から出力される画像信号は、増幅回路３１に入力されることで所定ゲインで増幅された後、Ａ／Ｄ変換回路３３に入力されると、アナログ信号からディジタル信号に変換される。例えば、ＱＲコードＱの明モジュールが「白色」、暗モジュールが「黒色」で構成されている場合、グレースケールを８ビットの２５６階調に変換するときには、各モジュールごとに、「黒色」が０、「白色」が２５５、その間の「灰色」が明度に応じて１〜２５４に変換される。このように変換された画像データ（ディジタル化された画像信号）は、メモリ３５に入力されて画像データ蓄積領域に蓄積される。またこれと並行して画像データは後述するリングバッファ回路３４にも入力されて蓄積される。
【００３０】
なお、同期信号発生回路３８は、受光センサ２３、リングバッファ回路３４およびアドレス発生回路３６に対する同期信号を発生可能に構成されており、またアドレス発生回路３６は、この同期信号発生回路３８から供給される同期信号に基づいて、リングバッファ回路３４やメモリ３５に格納される画像データの格納アドレスを発生可能に構成されている。
【００３１】
リングバッファ回路３４は、Ａ／Ｄ変換回路３３から出力される画像データを論理的に循環状に記憶可能な環状記憶装置で、同期信号発生回路３８から供給される同期信号に基づいて画像データを記憶している。リングバッファ回路３４の構成例が図２に示されているので、ここでは図２を参照して説明する。
【００３２】
図２に示すように、リングバッファ回路３４は、クロック制御部３４ａ、画素カウンタ３４ｂ、画面番号カウンタ３４ｃ、マルチプレクサ３４ｄ、ラッチ３４ｅ、画像メモリ３４ｆ、バッファ３４ｇ等により構成されている。
【００３３】
クロック制御部３４ａは、同期信号発生回路３８からの同期信号に基づいてＡ／Ｄ変換回路３３から出力される画像データを、画素単位でカウントするためのクロック信号を生成して出力するものである。このクロック信号は画素カウンタ３４ｂに出力される。
【００３４】
画素カウンタ３４ｂは、クロック制御部３４ａから出力されるクロック信号に基づいて１画面分（受光センサ２３によって撮像される所定領域）の画素数をカウントし、カウント値をデータとし出力するとともに、画面の区切りタイミングをリセット信号として出力するものである。例えば、所定領域がｍ行ｎ列のマトリックス状に配置される画素で構成される場合には、「１」〜「ｍ×ｎ」を繰り返しカウントし、そのカウント値をマルチプレクサ３４ｄに出力するとともに、リセット信号を画面番号カウンタ３４ｃに出力する。
【００３５】
画面番号カウンタ３４ｃは、画素カウンタ３４ｂから出力されるリセット信号を受けて所定範囲で画像番号をカウントするもので、例えば、所定範囲として６４画面であれば、１〜６４を繰り返しカウントする。この画面番号カウンタ３４ｃによりカウント値としてカウントされた画面番号は、マルチプレクサ３４ｄおよびラッチ３４ｅに出力される。
【００３６】
マルチプレクサ３４ｄは、画素カウンタ３４ｂから入力されるカウント値と画面番号カウンタ３４ｃから入力される画面番号とに基づいて画像メモリ３４ｆの画像メモリアドレスを生成して画像メモリ３４ｆに出力するものである。また、この画像メモリアドレスはラッチ３４ｅにも出力される。
【００３７】
ラッチ３４ｅは、画面番号カウンタ３４ｃから入力される画面番号を保持するとともに、この保持された画像番号を制御回路４０に出力、つまり制御回路４０から読出し可能に構成されている。これにより、次に説明する画像メモリ３４ｆに取り込まれつつある画像データの画像番号を制御回路４０が取得できるようにしている。
【００３８】
画像メモリ３４ｆは、所定数の画像データを記憶できる半導体メモリ装置で、次に説明するバッファ３４ｇを介してＡ／Ｄ変換回路３３から送られてくる画像データを複数画像分、記憶するものである。例えば、画面番号カウンタ３４ｃによるカウント範囲が６４画面分である場合には、当該画像メモリ３４ｆは所定数として６４画像分の画像データを記憶可能に構成されている。
【００３９】
バッファ３４ｇは、Ａ／Ｄ変換回路３３から送られてくる画像データや、制御回路４０に対して出力する画像データを記憶する半導体メモリ装置で、Ａ／Ｄ変換回路３３や制御回路４０と画像メモリ３４ｆとの間で、画像データをやり取りするものである。なお、このバッファ３４ｇは、画像メモリ３４ｆに比べて記憶容量が少ない反面、書き込みや読み出しが高速に実行可能に構成されている。
【００４０】
このようにリングバッファ回路３４を構成することによって、当該リングバッファ回路３４は、図７(A) に示すように、論理的に循環状に記憶可能な環状記憶装置（無端記憶装置）として機能する。例えば、ある時点で取り込まれてＡ／Ｄ変換回路３３から送られてきた画像をNo．１画像とすると、次に取り込まれた画像はNo．２画像、その次に取り込まれた画像はNo．３画像、というように順番付けられて記憶され、ｎ番目に記憶された画像がNo．ｎ画像（先の例ではNo．６４画像）として記憶されて、（ｎ＋１）番目に記憶された画像が再びNo．１画像として記憶される。
【００４１】
これにより、バッファ３４ｇには、時間的に新しいｎ画像分（先の例では６４画像分）の画像データが記憶されることになる。なお、このリングバッファ回路３４は、ＱＲコードＱのコード画像で同じＱＲコードＱについて異なるタイミングで取得された複数のコード画像を含んだ画像データを記憶することから、特許請求の範囲に記載の「コード画像記憶手段」に相当し得るものである。なお、このリングバッファ回路３４による論理的に循環状に記憶可能な環状記憶装置のことを、単に「リングバッファ」と称することもある。
【００４２】
メモリ３５は、半導体メモリ装置で、例えばＲＡＭ（ＤＲＡＭ、ＳＲＡＭ等）やＲＯＭ（ＥＰＲＯＭ、ＥＥＰＲＯＭ等）がこれに相当する。このメモリ３５のうちのＲＡＭには、前述した画像データ蓄積領域のほかに、制御回路４０が算術演算や論理演算等の各処理時に利用する作業領域等も確保可能に構成されている。またＲＯＭには、後述するデコード処理等を実行可能な所定プログラムやその他、照明光源２１、受光センサ２３等の各ハードウェアを制御可能なシステムプログラム等が予め格納されている。
【００４３】
制御回路４０は、二次元コードリーダ２０全体を制御可能なマイコンで、ＣＰＵ、システムバス、入出力インタフェース等からなり、メモリ３５とともに情報処理装置を構成し得るもので情報処理機能を有する。この制御回路４０には、内蔵された入出力インタフェースを介して種々の入出力装置と接続可能に構成されており、本実施形態の場合、電源スイッチ４１、操作スイッチ４２、ＬＥＤ４３、ブザー４４、液晶表示器４６、通信インタフェース４８等が接続されている。
【００４４】
これにより、例えば、電源スイッチ４１や操作スイッチ４２の監視や管理、またインジケータとして機能するＬＥＤ４３の点灯・消灯、ビープ音やアラーム音を発生可能なブザー４４の鳴動のオンオフ、さらには読み取ったＱＲコードによるコード内容を画面表示可能な液晶表示器４６の画面制御や外部装置とのシリアル通信を可能にする通信インタフェース４８の通信制御等を可能にしている。なお、通信インタフェース４８に接続される外部装置には、当該二次元コードリーダ２０の上位システムに相当するホストコンピュータＨＳＴ等が含まれる。
【００４５】
電源系は、電源スイッチ４１、バッテリ４９等により構成されており、制御回路４０により管理される電源スイッチ４１のオンオフによって、上述した各装置や各回路に、バッテリ４９から供給される駆動電圧の導通や遮断が制御されている。なお、バッテリ４９は、所定の直流電圧を発生可能な二次電池で、例えば、リチウムイオン電池等がこれに相当する。また、バッテリ４９によることなく、例えば、通信インタフェース４８を介して接続されるホストコンピュータＨＳＴ等の外部装置から電力供給を受ける構成を採る場合もあり、この場合には当該バッテリ４９は不要となる。
【００４６】
このように二次元コードリーダ２０を構成することによって、例えば、電源スイッチ４１がオンされて所定の自己診断処理等が正常終了し、ＱＲコードＱの読み取りが可能な状態になると、照明光Ｌｆの発光を指示する操作スイッチ４２（例えばトリガースイッチ）の入力を受け付ける。これにより、当該二次元コードリーダ２０の使用者がトリガースイッチを引いてオンにすることで、制御回路４０が同期信号を基準に照明光源２１に発光信号を出力するので、当該発光信号を受けた照明光源２１は、ＬＥＤを発光させて照明光Ｌｆを照射する。
【００４７】
すると、ＱＲコードＱに照射された照明光Ｌｆが反射し、その反射光Ｌｒが読取口を介して結像レンズ２７に入射するため、受光センサ２３の受光面２３ａには、ＱＲコードＱの像が結像される。これにより、ＱＲコードＱの像が受光センサ２３を露光するため、上述したマイコン系によって画像処理された当該ＱＲコードＱの画像データが、メモリ３５の画像データ蓄積領域に記憶されるとともに、リングバッファ回路３４にも前述したように逐次記憶される。
【００４８】
そして、制御回路４０は、次に説明する読取処理を実行する際に、メモリ３５を介して画像データを取得したり、場合によってはリングバッファ回路３４から必要な画像データを取得して読み取りに必要な閾値を設定し直して読取処理を行なう。
【００４９】
ここで、読取処理の流れを図３〜図８に基づいて説明するが、本読取処理では、ＱＲコードの機能パターンの検出に際して読み取りに必要な閾値を設定しているので、読取処理の流れの説明に先立って図４を参照してＱＲコードの基本的な構成を説明する。なお、図４に示すＱＲコードＱは、明モジュールが「白色」、暗モジュールが「黒色」で構成されている。
【００５０】
図４に示すように、ＱＲコードＱは、ＱＲコードの基本仕様（日本工業規格；ＪＩＳ  Ｘ  ０５１０：２００４、以下これを単に「ＪＩＳ規格」という。）にほぼ準拠して構成されるもので、ファインダパターンＦＰ、アライメントパターンＡＰ、タイミングパターンＴＰ等からなる機能パターンと、データパターンＤＰと、から構成されている。なお、図４では、ＪＩＳ規格の２型（２５×２５モジュール）に準ずるものが例示されている。
【００５１】
ファインダパターンＦＰは、切り出しシンボルや位置合わせパターンとも称されるもので、ＱＲコードＱの３箇所の隅に位置する正方形に配置される複数の単位モジュールの集合体、つまりｎ×ｎモジュールで、ＱＲコードの位置、大きさ、傾きを検出可能に構成されて記録されている。具体的には、例えば黒色の単位モジュールを３行３列のマトリックス状に配置した３×３暗モジュールと、これを取り囲むように白色の単位モジュールを５行５列のマトリックス状に配置した５×５明モジュールと、さらにこれらの周囲を取り囲むように黒色の単位モジュールを７行７列のマトリックス状に配置した７×７暗モジュールと、により構成される。
【００５２】
このため、ファインダパターンＦＰを横断または縦断するように明暗情報を走査すると、暗、明、暗、明、暗の順番で同色モジュールの連続比率が１：１：３：１：１となることを利用して当該画像範囲が当該ファインダパターンＦＰであることや当該ファインダパターンＦＰの中心位置を検出している。つまり、ファインダパターンＦＰによって３６０度全方向でＱＲコードＱの検出を可能にしている。
【００５３】
アライメントパターンＡＰも、正方形に配置される複数の単位モジュールの集合体で、ＱＲコードの歪みを補正可能に構成されて記録されており、３箇所のファインダパターンＦＰによって規定される正方形範囲内の所定箇所に位置している。具体的には、１単位モジュール分の独立した例えば黒色の１×１暗モジュールと、この１×１暗モジュールの周囲を囲む８個の白色の３×３明モジュールと、この正方形状の３×３明モジュールの周囲を囲む１６個の黒色の５×５暗モジュールとから構成されている。このアライメントパターンＡＰにより、中心座標の検出を容易にしている。
【００５４】
タイミングパターンＴＰは、各単位モジュールの中心座標を求めるためのタイミング抽出を可能にする、白色や黒色の単位モジュールが繰り返し現れる単位モジュールの繰り返しパターンで、白色の１×１明モジュールと黒色の１×１暗モジュールとを直線状に交互に配置されて構成されている。例えば、ＱＲコードＱが歪んだり、単位モジュールのピッチに誤差が生じている場合、単位モジュールの中心座標を補正するために用いられる。タイミングパターンＴＰは、アライメントパターンＡＰの中心を通るように、ＱＲコードＱの縦方向および横方向のそれぞれに記録されている。
【００５５】
データパターンＤＰは、例えば、図４に示すように、単位モジュールを４行２列に配置して構成されるもので、これによりビット０〜ビット７の８ビット分のデータを表現可能にしている。なお、このデータパターンＤＰは、ファインダパターンＦＰ、アライメントパターンＡＰおよびタイミングパターンＴＰが配置されている機能パターン領域以外のデータパターン領域に記録されている。
【００５６】
なお、ＱＲコードＱの周囲には、上述したファインダパターンＦＰの輪郭や存在を二次元コードリーダ２０が認識する必要から、４モジュール幅（４個分の単位モジュール）のクワイエットゾーンＱＺが確保されている。
【００５７】
このように構成されるＱＲコードＱを本実施形態に係る二次元コードリーダ２０では、図３に示す読取処理によって、デコードする。即ち、図３に示すように、まずステップＳ１０１によりコード画像取得処理が行われる。この処理は、メモリ３５の画像データ蓄積領域に蓄えられた画像データを読み込むものである。
【００５８】
ステップＳ１０３では、位置検出パターン検出処理が行われる。即ち、ステップＳ１０１により読み込んだ画像データの全体を横断または縦断するようにメモリ３５上で仮想的に走査して、工場出荷時等に予め設定されている所定の閾値（第１の閾値）を基準に明暗情報を判別する。
【００５９】
例えば、画像データが８ビットの２５６階調で構成されている場合には、所定の閾値として、０〜２５５の中間値（１２８）よりも若干小さい１２０に設定されている。この所定の閾値以下（０〜１２８）の値を持つモジュールを暗モジュール（黒色）、この所定の閾値よりも大きい値（１２９〜２５５）を持つモジュールを明モジュール（白色）、として判断する。そして、図４を参照して説明したように、暗、明、暗、明、暗の順番で同色モジュールの連続比率が１：１：３：１：１となる範囲を検出することによって、当該画像範囲が当該ファインダパターンＦＰであることや当該ファインダパターンＦＰの中心位置、つまり位置検出パターンを検出する。
【００６０】
なお、ステップＳ１０１により読み込んだ画像データは、特許請求の範囲に記載の「一のコード画像」に相当し得るもので、またステップＳ１０３による位置検出パターン検出処理は、特許請求の範囲に記載の「機能パターン検出手段」に相当し得るものである。本実施形態では、ステップＳ１０３により検出される機能パターンの一例として、ファインダパターンＦＰを挙げたが、ＱＲコードＱにコード化されたデータをデコードするのに要するパターンであれば、アライメントパターンＡＰやタイミングパターンＴＰをステップＳ１０３による検出対象としても良い。
【００６１】
続くステップＳ１０５では、ステップＳ１０３により位置検出パターンを検出することができたか否かを判断する処理が行われる。そして、位置検出パターンを検出することができないと判断された場合には（Ｓ１０５；Ｎｏ）、ステップＳ１０１により読み込んだ画像データには、ＱＲコードＱが含まれていないとしてステップＳ１２５に処理を移行して後述するエラー情報出力処理を行う。これに対し、ステップＳ１０５により、位置検出パターンを検出することができたと判断された場合には（Ｓ１０５；Ｙｅｓ）、続くステップＳ１０７により白黒判定処理が行われる。
【００６２】
ステップＳ１０７による白黒判定処理では、ステップＳ１０３によりファインダパターンＦＰ（位置検出パターン）を検出したときに用いた所定の閾値（第１の閾値）を基準に、前述したステップＳ１０３と同様に、データパターンＤＰ等の明暗情報（例えば８ビットの２５６階調）を判別し、その明暗情報に基づいて、続くステップＳ１０９によりコード画像をデコードする処理を行う。なお、このステップＳ１０９によるデコード処理は、ＪＩＳ規格に従って行われるもので、特許請求の範囲に記載の「第１のデコード手段」に相当し得るものである。
【００６３】
続くステップＳ１１１では、ステップＳ１０９によるデコードが成功したか否か、つまり正常にデコードされたか否かを判断する処理が行われる。これにより、デコードが成功している場合には（Ｓ１１１；Ｙｅｓ）、ステップＳ１０９によるデコードに際して用いられた所定の閾値（第１の閾値）は、当該ＱＲコードＱに対しては何等問題がないので、そのままステップＳ１３１によるデコード結果出力処理に移行してデコード結果を液晶表示器４６に出力したり、通信インタフェース４８を介してホストコンピュータＨＳＴに出力したりする。一方、デコードが成功していない（デコードに失敗した）場合には（Ｓ１１１；Ｎｏ）、ステップＳ１１３によりコード画像切出処理が行われる。なお、このステップＳ１１１による判断処理は、特許請求の範囲に記載の「デコード成否判断手段」に相当し得るものである。
【００６４】
ステップＳ１１３によるコード画像切出処理では、前述したリングバッファ回路３４の画像メモリ３４ｆに順番付けられて記憶された各画像データから、ＱＲコードＱの画像データ、つまりコード画像を切り出す処理が行われる。切り出す範囲は、例えば、前述したＱＲコードＱのファインダパターンＦＰに基づいて設定される。
【００６５】
続くステップＳ１１５では、コード画像加算処理が行われる。この処理は、ステップＳ１１３により切り出したコード画像をモジュールごとに加算し加算により得られた画像データ（加算画像データ）に基づいて新たなコード画像（加算コード画像）を生成する。なお、このステップＳ１１５によるコード画像加算処理は、特許請求の範囲に記載の「コード画像加算手段」に相当し得るものである。
【００６６】
ステップＳ１１７では、所定数のコード画像を加算したか否かを判断する処理が行われる。例えば、先の例では、リングバッファ回路３４には、No．１画像〜No．６４画像が記憶されているので、これらから、８画像分（例えば、No．１画像〜No．８画像）のコード画像を加算する場合、所定数は８となり、まだ８画像分加算していないと判断した場合には（Ｓ１１７；Ｎｏ）、ステップＳ１１３に戻って再度コード画像切出処理を行った後、ステップＳ１１５によるコード画像加算処理を行う。
【００６７】
これにより、所定画像分についてステップＳ１１５による加算処理が繰り返されるため、各モジュールについて値が増加し、例えば、切り出す画像の数（以下「切出し画像数」という）が８画像である場合には、ＱＲコードＱを構成するモジュールで同じ位置に存在するモジュールのデータを切り出した８画像分について加算する。
【００６８】
例えば、あるモジュールに対応する画像データは、９７６（＝１０５＋１００＋１１０＋１３４＋１３１＋１２９＋１３５＋１３２）、つまり画像データそのものが１画像分の約８倍（例えば８画像分）になる。これに対し、所定数のコード画像を加算していると判断した場合は（Ｓ１１７；Ｙｅｓ）、ステップＳ１１９による閾値算出処理が行われる。
【００６９】
ステップＳ１１９では、閾値算出処理が行われる。この処理は、ステップＳ１１３〜Ｓ１１７により加算されたコード画像、つまり加算コード画像に基づいて新たなる閾値（第２の閾値）を設定する処理が行われる。なお、このステップＳ１１９による閾値算出処理は、特許請求の範囲に記載の「閾値設定手段」に相当し得るものである。
【００７０】
例えば、図４に示すＱＲコードＱを加算コード画像のＱＲコードＱ’とすれば、同図中に示される一点鎖線の矢印αに沿って列状に隣り合って並んでいるモジュールごとに加算し、その総和を当該列を構成するモジュール数で割って得られる値、つまり平均値を加算コード画像に対する閾値（第２の閾値）とする。あるいは、一点鎖線αに沿って列状に隣り合って並んでいるモジュールを構成する画素ごとに加算し、その総和を当該列を構成する画素数で割って得られる平均値を加算コード画像に対する閾値（第２の閾値）とする。
【００７１】
なお、図４に示す一点鎖線の矢印αは、その一例であり、例えばこれに対して直交する方向に延びる線に沿った列状や、一点鎖線の矢印αに対して４５度斜め方向に延びる線に沿った列状、等、直線状であれば任意方向に列状に隣り合って並んでいるモジュールや画素を加算しても良い。また、この閾値は、任意の一列について演算して得られたものを、当該加算コード画像のデコードに適用しても良いし、また任意の複数列について演算して得られたものをさらに平均化してそれを当該加算コード画像のデコードに適用しても良い。また、当該加算コード画像を構成するモジュールまたは画素の全てを加算し、その平均値を当該加算コード画像に対する閾値（第２の閾値）として設定しても良い。
【００７２】
加算対象となるモジュールまたは画素を増加させるに従って、当該加算コード画像に対する適正な閾値を得られ易くなるという効果を奏する反面、加算演算する処理に時間を要する。これに対し、加算対象となるモジュールまたは画素を減少させるに従って、加算演算する処理に要する時間が削減でき処理時間が高速になるが、その反面、当該加算コード画像に対する適正な閾値が得られ難くなる。このようなことから、当該加算コード画像に対する適正な閾値と閾値算出処理（Ｓ１１９）の時間と、はトレードオフの関係にある。
【００７３】
このように加算コード画像に対する閾値（第２の閾値）が設定されると、続くステップＳ１２１では、第２デコード処理が行われる。このステップＳ１２１による第２デコード処理は、特許請求の範囲に記載の「第２のデコード手段」に相当し得るものである。
【００７４】
ステップＳ１２１によるデコード処理として、例えば、前述した平均値を閾値に設定した場合には、図５(A) に示すように、当該閾値を基準に加算コード画像について白黒（明暗）を判定しデコードする。図５(A) に示す例は、８画像分のコード画像を加算した加算コード画像に対するもの（図５(A) 上段；加算コード画像のデータ値を波形に表したもの）で、最低値０（＝０×８）〜最高値２０４０（＝２５５×８）に対して閾値は９８０に設定されているため、加算コード画像を構成するモジュールまたは画素がこの閾値以下（０〜９８０）の値を持つモジュールまたは画素である場合には、暗モジュールまたは画素（黒色）、この閾値よりも大きい値（９８１〜２０４０）を持つモジュールまたは画素である場合には、明モジュールまたは画素（白色）、と判断されて（図５(B) 下段；白黒判定）、デコードされる。
【００７５】
そして、続くステップＳ１２３によりデコードが成功したか否か、つまり正常にデコードされたか否かを判断する処理が行われる。これにより、デコードが成功している場合には（Ｓ１２３；Ｙｅｓ）、ステップＳ１３１によるデコード結果出力処理に移行してデコード結果を液晶表示器４６に出力したり、通信インタフェース４８を介してホストコンピュータＨＳＴに出力してから、一連の読取処理を終了する。これに対して、デコードが成功していない（デコードに失敗した）場合には（Ｓ１２３；Ｎｏ）、加算コード画像についてもデコードできないことから、ステップＳ１２５によるエラー情報出力処理を行った後、一連の読取処理を終了する。
【００７６】
ステップＳ１２５のエラー情報出力処理としては、例えば、液晶表示器４６に読取エラーが発生した旨を当該二次元コードリーダ２０の使用者に伝えるメッセージを出力したり、同様のメッセージを、通信インタフェース４８を介してホストコンピュータＨＳＴに出力する。
【００７７】
以上説明したように、本実施形態に係る二次元コードリーダ２０では、リングバッファ回路３４により、ＱＲコードＱのコード画像で同じＱＲコードＱについて異なるタイミングで取得された複数のコード画像を記憶し、制御回路４０による位置検出パターン検出処理（Ｓ１０３）により、リングバッファ回路３４に記憶されたコード画像（一のコード画像）に基づいてこのコード画像に含まれるファインダパターンＦＰ（機能パターン）を検出し、制御回路４０による第１デコード処理（Ｓ１０９）により、ファインダパターンＦＰの検出に際し明暗モジュールの明暗を判別するために予め設定された所定の閾値（第１の閾値）を用いてコード画像（一のコード画像）に含まれるデータパターンＤＰをデコードする。
【００７８】
そして、制御回路４０によるデコードの成否判断処理（Ｓ１１１）により、データパターンＤＰのデコードができたか否かを判断して、データパターンＤＰのデコードができなかったと判断された場合（Ｓ１１１；Ｎｏ）、制御回路４０によるコード画像加算処理（Ｓ１１５）により、リングバッファ回路３４に記憶されたコード画像を構成する各画像データで明暗の度合いをＱＲコードＱのモジュールまたは画素ごとに数値表現したものを、複数のコード画像のうちの所定画像分（例えば８画像分）、加算しこの加算により得られた加算画像データに基づいて加算コード画像を生成して、この生成された加算コード画像に基づいて制御回路４０による閾値算出処理（Ｓ１１９）によりＱＲコードＱのモジュールの明暗を判別するための加算コード画像に対する閾値（第２の閾値）を設定し、制御回路４０による第２デコード処理（Ｓ１２１）により、加算コード画像に対する閾値（第２の閾値）を用いて加算コード画像に含まれるデータパターンをデコードする。
【００７９】
これにより、データパターンＤＰのデコードができなかったと判断された場合には（Ｓ１１１；Ｎｏ）、複数のコード画像のうちの所定画像分（例えば８画像分）、加算して生成した加算画像データに基づいて加算コード画像を生成するので、例えば、一時的に電源ノイズ等が混入して一部のコード画像が乱れたとしても、その前後の所定画像分を加算することによって電源ノイズ等の影響を受けていない他のコード画像により当該一部のコード画像の乱れを補うことができる（画像の乱れを緩和することができる）。
【００８０】
例えば、８画像中の１画像にコード画像の乱れがあった場合、その１画像だけを取り出せばその乱れの影響が大きいが、そのようなコード画像の画像データに、乱れのない他の７画像の画像データを含めて加算することによって、このような乱れが緩和される。このため、加算された加算コード画像に基づく第２の閾値を用いて加算コード画像に含まれるデータパターンをデコードすることで、たとえ電源ノイズ等が混入しても正確に二値化することができる。
【００８１】
また、本実施形態に係る二次元コードリーダ２０では、リングバッファ回路３４は、クロック制御部３４ａ、画素カウンタ３４ｂ、画面番号カウンタ３４ｃ、マルチプレクサ３４ｄ、ラッチ３４ｅおよび画像メモリ３４ｆにより、複数のコード画像を構成する各画像データを論理的に循環状（無端状）に記憶可能に構成したことから（環状記憶装置）、メモリ３５等の論理的に循環状でない有端状の記憶装置に比べて、無駄な空き領域（フラグメント）が出来にくい。これにより、記憶装置を有効に利用することができる。
【００８２】
なお、上述した実施形態では、ステップＳ１１９による閾値算出処理により加算コード画像に対する閾値（第２の閾値）を設定し、この閾値に基づいてステップＳ１２１による第２デコード処理を行ったが、例えば、図４に示すＱＲコードＱを加算コード画像のＱＲコードＱ’とすれば、同図中に示される一点鎖線の矢印αに沿って列状に隣り合って並んだ画素ごとの加算画像データの増減変化量を二次微分演算する二次微分演算処理を、ステップＳ１１９に代えて設けて、図５(B) に示すように、その結果得られる二次微分値が０（ゼロ）になる加算画像データを第２の閾値に設定するようにしても良い。
【００８３】
これにより、加算画像データの最大値または最小値を第２の閾値に設定することができるので、例えば、図５(B) に示すように、二次微分値が０（ゼロ）でその直前の二次微分値が−（マイナス）から＋（プラス）になるところを始点、二次微分値が０（ゼロ）でその直前の二次微分値が＋（プラス）から−（マイナス）になるところを終点、とする区間を黒（暗）と判定することができ、また二次微分値が０（ゼロ）でその直前の二次微分値が＋（プラス）から−（マイナス）になるところを始点、二次微分値が０（ゼロ）でその直前の二次微分値が−（マイナス）から＋（プラス）になるところを終点、とする区間を白（明）と判定することができる。
【００８４】
また、上述した実施形態では、ステップＳ１１３によるコード画像切出処理によりコード画像を切り出して、所定数のコード画像を加算するまで（Ｓ１１７；Ｎｏ）、ステップＳ１１５によるコード画像加算処理によって順次加算して加算コード画像を生成したが、これに代えて、複数の加算器をリングバッファ回路３４に記憶された複数のコード画像（所定画像分の画像数）の１／２以上備え、これらを並列に動作させ所定画像分の各画素ごとにの加算演算をほぼ同時に行うように構成しても良い。
【００８５】
例えば、リングバッファ回路３４の画像メモリ３４ｆに、６４画像分の、加算コード画像Ａ１，Ａ２，Ａ３，Ａ４，Ａ５，Ａ６，Ａ７，Ａ８，Ｂ１，Ｂ２，Ｂ３，Ｂ４，Ｂ５，Ｂ６，Ｂ７，Ｂ８，Ｃ１，Ｃ２，Ｃ３，Ｃ４，Ｃ５，Ｃ６，Ｃ７，Ｃ８，Ｄ１，Ｄ２，Ｄ３，Ｄ４，Ｄ５，Ｄ６，Ｄ７，Ｄ８，Ｅ１，Ｅ２，Ｅ３，Ｅ４，Ｅ５，Ｅ６，Ｅ７，Ｅ８，Ｆ１，Ｆ２，Ｆ３，Ｆ４，Ｆ５，Ｆ６，Ｆ７，Ｆ８，Ｇ１，Ｇ２，Ｇ３，Ｇ４，Ｇ５，Ｇ６，Ｇ７，Ｇ８，Ｈ１，Ｈ２，Ｈ３，Ｈ４，Ｈ５，Ｈ６，Ｈ７，Ｈ８が記憶されているとすると、隣り合った画像データ同士を加算する加算器を３２（＝６４／２）個設ける。
【００８６】
図６には、これら６４画像うち３２画像を代表して、加算コード画像Ａ１，Ａ２，Ａ３，Ａ４，Ａ５，Ａ６，Ａ７，Ａ８，Ｂ１，Ｂ２，Ｂ３，Ｂ４，Ｂ５，Ｂ６，Ｂ７，Ｂ８に対して８個の加算器ＡＤ１〜ＡＤ８が画像メモリ３４ｆに接続されている構成が図示されている。なお、加算コード画像Ｃ１，Ｃ２，Ｃ３，Ｃ４，Ｃ５，Ｃ６，Ｃ７，Ｃ８，Ｄ１，Ｄ２，Ｄ３，Ｄ４，Ｄ５，Ｄ６，Ｄ７，Ｄ８に対しても８個の加算器が画像メモリ３４ｆに接続されているが、図６では省略されている。
【００８７】
ここでは、加算コード画像Ａ１と加算コード画像Ａ２とを加算器ＡＤ１により加算しその加算結果を加算コード画像Ａ１が記憶されていた画像メモリ３４ｆの所定アドレスのメモリ空間に記憶可能に加算器ＡＤ１の出力を接続する。また、加算コード画像Ａ３と加算コード画像Ａ４とを加算器ＡＤ２により加算しその加算結果を加算コード画像Ａ２が記憶されていた画像メモリ３４ｆの所定アドレスのメモリ空間に記憶可能に加算器ＡＤ２の出力を接続する。同様に、加算コード画像Ａ５と加算コード画像Ａ６とを加算器ＡＤ３により加算しその加算結果を加算コード画像Ａ３が記憶されていた画像メモリ３４ｆの所定アドレスのメモリ空間に記憶可能に加算器ＡＤ３の出力を接続する。同様に、加算コード画像Ａ７と加算コード画像Ａ８とを加算器ＡＤ４により加算しその加算結果を加算コード画像Ａ４が記憶されていた画像メモリ３４ｆの所定アドレスのメモリ空間に記憶可能に加算器ＡＤ４の出力を接続する。
【００８８】
同様に、加算コード画像Ｂ１と加算コード画像Ｂ２とを加算器ＡＤ５により加算しその加算結果を加算コード画像Ａ５が記憶されていた画像メモリ３４ｆの所定アドレスのメモリ空間に記憶可能に加算器ＡＤ５の出力を接続する。同様に、加算コード画像Ｂ３と加算コード画像Ｂ４とを加算器ＡＤ６により加算しその加算結果を加算コード画像Ａ６が記憶されていた画像メモリ３４ｆの所定アドレスのメモリ空間に記憶可能に加算器ＡＤ６の出力を接続する。同様に、加算コード画像Ｂ５と加算コード画像Ｂ６とを加算器ＡＤ７により加算しその加算結果を加算コード画像Ａ７が記憶されていた画像メモリ３４ｆの所定アドレスのメモリ空間に記憶可能に加算器ＡＤ７の出力を接続する。同様に、加算コード画像Ｂ７と加算コード画像Ｂ８とを加算器ＡＤ８により加算しその加算結果を加算コード画像Ａ８が記憶されていた画像メモリ３４ｆの所定アドレスのメモリ空間に記憶可能に加算器ＡＤ８の出力を接続する。
【００８９】
図６には、図示されていないが、同様に、加算コード画像Ｃ１，Ｃ２，Ｃ３，Ｃ４，Ｃ５，Ｃ６，Ｃ７，Ｃ８，Ｄ１，Ｄ２，Ｄ３，Ｄ４，Ｄ５，Ｄ６，Ｄ７，Ｄ８に対しても、同様に、８個の加算器が画像メモリ３４ｆに接続されている。
【００９０】
これにより、例えば、第１ステージによって、加算コード画像Ａ１と加算コード画像Ａ２とを加算器ＡＤ１により、また加算コード画像Ａ３と加算コード画像Ａ４とを加算器ＡＤ２により、さらに加算コード画像Ａ５と加算コード画像Ａ６とを加算器ＡＤ３により、また加算コード画像Ａ７と加算コード画像Ａ８とを加算器ＡＤ４により、それぞれ加算し、加算コード画像Ｂ１と加算コード画像Ｂ２とを加算器ＡＤ５により、また加算コード画像Ｂ３と加算コード画像Ｂ４とを加算器ＡＤ６により、さらに加算コード画像Ｂ５と加算コード画像Ｂ６とを加算器ＡＤ７により、また加算コード画像Ｂ７と加算コード画像Ｂ８とを加算器ＡＤ８により、それぞれ加算する。これにより、加算結果（Ａ１，Ａ２）、（Ａ３，Ａ４）、（Ａ５，Ａ６）、（Ａ７，Ａ８）が得られて、加算コード画像Ａ１〜Ａ４が記憶されていた画像メモリ３４ｆの所定アドレスのメモリ空間に記憶される。
【００９１】
次に、第２ステージによって、加算結果（Ａ１，Ａ２）と加算結果（Ａ３，Ａ４）とを加算器ＡＤ１により、加算結果（Ａ５，Ａ６）と加算結果（Ａ７，Ａ８）とを加算器ＡＤ２により、加算結果（Ｂ１，Ｂ２）と加算結果（Ｂ３，Ｂ４）とを加算器ＡＤ３により、加算結果（Ｂ５，Ｂ６）と加算結果（Ｂ７，Ｂ８）とを加算器ＡＤ４により、それぞれ加算する。これにより、加算結果（Ａ１，Ａ２…Ａ４）、（Ａ５，Ａ６…Ａ８）が得られて、加算コード画像Ａ１〜Ａ４が記憶されていた画像メモリ３４ｆの所定アドレスのメモリ空間に記憶される。
【００９２】
同様に、加算コード画像Ｃ１，Ｃ２，Ｃ３，Ｃ４，Ｃ５，Ｃ６，Ｃ７，Ｃ８，Ｄ１，Ｄ２，Ｄ３，Ｄ４，Ｄ５，Ｄ６，Ｄ７，Ｄ８についても、第１ステージ、第２ステージで、図略の加算器により加算する。これにより、加算結果（Ｃ１，Ｃ２…Ｃ４）、（Ｃ５，Ｃ６…Ｃ８）が得られて、加算コード画像Ａ５，Ａ６が記憶されていた画像メモリ３４ｆの所定アドレスのメモリ空間に記憶され、また加算結果（Ｄ１，Ｄ２…Ｄ４）、（Ｄ５，Ｄ６…Ｄ８）が得られて、加算コード画像Ａ７，Ａ８が記憶されていた画像メモリ３４ｆの所定アドレスのメモリ空間に記憶される。
【００９３】
そして、これらの加算の後、第３ステージによって、加算結果（Ａ１，Ａ２…Ａ４）と加算結果（Ａ５，Ａ６…Ａ８）とを加算器ＡＤ１により、加算結果（Ｂ１，Ｂ２…Ｂ４）と加算結果（Ｂ７，Ｂ６…Ｂ８）とを加算器ＡＤ２により、加算結果（Ｃ１，Ｃ２…Ｃ４）と加算結果（Ｃ５，Ｃ６…Ｃ８）とを加算器ＡＤ３により、加算結果（Ｄ１，Ｄ２…Ｄ４）と加算結果（Ｄ７，Ｄ６…Ｄ８）とを加算器ＡＤ４により、それぞれ加算する。これにより、加算結果（Ａ１，Ａ２…Ａ８）、（Ｂ１，Ｂ２…Ｂ８）、（Ｃ１，Ｃ２…Ｃ８）、（Ｄ１，Ｄ２…Ｄ８）が得られて、加算コード画像Ａ１〜Ａ４が記憶されていた画像メモリ３４ｆの所定アドレスのメモリ空間に記憶される。
【００９４】
この後、第４ステージによって、加算結果（Ａ１，Ａ２…Ａ８）と加算結果（Ｂ１，Ｂ２…Ｂ８）とを加算器ＡＤ１により、加算結果（Ｃ１，Ｃ２…Ｃ４）と加算結果（Ｄ１，Ｄ２…Ｄ８）とを加算器ＡＤ２により、それぞれ加算することによって、加算結果（Ａ１〜Ａ８，Ｂ１〜Ｂ８）、（Ｃ１〜Ｃ８，Ｄ１〜Ｄ８）が得られて、加算コード画像Ａ１，Ａ２が記憶されていた画像メモリ３４ｆの所定アドレスのメモリ空間に記憶される。
【００９５】
そして、最後に、第５ステージにより、加算結果（Ａ１〜Ａ８，Ｂ１〜Ｂ８）と加算結果（Ｃ１〜Ｃ８，Ｄ１〜Ｄ８）とを加算器ＡＤ１により加算することによって、全ての加算結果として（ΣＡ，ΣＢ，ΣＣ，ΣＤ）が得られて、加算コード画像Ａ１が記憶されていた画像メモリ３４ｆの所定アドレスのメモリ空間に記憶される。
【００９６】
これにより、例えば、１つの加算器で３２画像分のコード画像を加算演算する場合には、３１の演算ステージが必要になるが、その１／６以下の５つの演算ステージで加算することができる。このため、コード画像の加算演算処理を飛躍的に高速にすることができる。また、６４画像分のコード画像を加算演算しても、６つの演算ステージで加算できる。
【００９７】
なお、このようなコード画像の加算処理を全てのコード画像について毎回行うのではなく、加算画像データを求めるのに用いた所定画像分のコード画像の画像データのうち最も古いコード画像の画像データを当該加算画像データから除くとともに最も新しいコード画像の画像データを当該加算画像データに加えて、新たな加算画像データを求め加算コード画像を生成するように構成しても良い。
【００９８】
例えば、図７に示すように、No．１画像〜No．ｎ画像のｎ個のコード画像を記憶できるリングバッファ回路３４の機能的な概念をドーナッツ形状に表現すると、ｎ個のコード画像のうち、No．（ｎ−ｍ＋２）〜No．１のｍ個のコード画像の加算は、Ｓ（No．（ｎ−ｍ＋２）〜No．１）＝（Ａ１＋Ａｎ＋…＋Ａｎ−ｍ＋２）となる（図７(A) 参照）。ここで、Ａｘは、No．ｘ画像（コード画像）の画像データを意味する。そして、No．（ｎ−ｍ＋３）〜No．２のｍ個のコード画像の加算は、Ｓ（No．（ｎ−ｍ＋３）〜No．２）＝（Ａ２＋Ａｎ＋…＋Ａｎ−ｍ＋３）＝Ａ２＋（Ａ１＋Ａｎ＋…＋Ａｎ−ｍ＋２）−Ａｎ−ｍ＋２＝Ａ２＋Ｓ（No．（ｎ−ｍ＋２）〜No．１）−Ａｎ−ｍ＋２になる（図７(B) 参照）。
【００９９】
このため、前回の加算演算により得られた加算画像データＳ（No．（ｎ−ｍ＋２）〜No．１）から新たなコード画像の画像データＡ２を加算し最も古いコード画像の画像データＡｎ−ｍ＋２を減算することによって、毎回全ても画像データを加算することなく、少ない演算処理で加算コード画像を得ることができる。
【０１００】
また、最も古いコード画像の画像データＡｎ−ｍ＋２を減算する処理に代えて、当該画像データＡｎ−ｍ＋２の全ビットを反転（０→１，１→０）させた反転画像データ¬Ａｎ−ｍ＋２に１を算術加算演算、つまりＡｎ−ｍ＋２の２の補数を論理加算演算する処理としても良い（¬は、論理反転を表す記号である）。即ち、No．（ｎ−ｍ＋３）〜No．２のｍ個のコード画像の加算は、Ｓ（No．（ｎ−ｍ＋３）〜No．２）＝Ａ２＋Ｓ（No．（ｎ−ｍ＋２）〜No．１）−Ａｎ−ｍ＋２＝Ａ２＋Ｓ（No．（ｎ−ｍ＋２）〜No．１）＋¬Ａｎ−ｍ＋２＋１になる。各画像データに“１”を加算することにより、加算回路によって減算処理ができるので、減算回路を設ける必要がなくなり演算回路を簡素に構成することができる。
【図面の簡単な説明】
【０１０１】
【図１】本発明の一実施形態に係る二次元コード読取装置の構成例を示すブロック図である。
【図２】図１に示すリングバッファの構成例を示すブロック図である。
【図３】本実施形態に係る二次元コード読取装置による読取処理の流れを示すフローチャートである。
【図４】ＱＲコードの一般的な構成を示す説明図である。
【図５】センサ信号に対する閾値の設定例を示す説明図である。
【図６】並列加算処理の概念と動作例を示す説明図である。
【図７】ｎ個のコード画像を記憶できるリングバッファ回路の機能的な概念をドーナッツ形状に表現した説明図である。
【符号の説明】
【０１０２】
２０…二次元コードリーダ（二次元コード読取装置）
２１…照明光源
２２…結像レンズ
２３…受光センサ
３１…増幅回路
３３…Ａ／Ｄ変換回路
３４…リングバッファ回路（コード画像記憶手段、環状記憶装置）
３５…メモリ
３６…アドレス発生回路
４１…電源スイッチ
４２…操作スイッチ
４３…ＬＥＤ
４４…ブザー
４６…液晶表示器
４８…通信インタフェース
Ｑ…ＱＲコード（二次元コード）
Ｓ１０３（機能パターン検出手段）、Ｓ１０９（第１のデコード手段）、Ｓ１１１（デコード成否判断手段）、Ｓ１１５（コード画像加算手段）、Ｓ１１９（閾値設定手段）、Ｓ１２１（第２のデコード手段）
【図１】
0004957616.tif 000002
【図２】
0004957616.tif 000003
【図３】
0004957616.tif 000004
【図４】
0004957616.tif 000005
【図５】
0004957616.tif 000006
【図６】
0004957616.tif 000007
【図７】
0004957616.tif 000008