(57)【要約】【課題】コード情報を撮影する撮像手段によって読み取られた画像データをメモリへ転送するまでの過程において、必要最小限のデータのみを転送できるようにすると共に、必要最小限のデータであっても、そのコード変換を確実に実行できるようにする。【解決手段】画像データを間引くための間引き数Ｋ、Ｌが設定されている状態において、汎用ＣＭＯＳセンサ部１０によって読み取られた１面分の画像データをコントローラ部４１内のデータバッファ４２にそのまま転送した後に、このデータバッファ４２からメモリ６０へ画像データを転送する際に、間引き数Ｋ、Ｌに基づいて間引く処理を行い、この間引き後の画像データをデコードした際に、デコードエラーが発生した場合には、現在設定されている間引き数Ｋ、Ｌを１段階に減らした後、この新たな間引き数に基づいて画像データを間引きながらデコードする処理を正常デコードされるまで繰り返し実行することによって最適間引き数を決定し、この最適間引き数を再設定する。【選択図】  図1
2005135149.tif 000002
【特許請求の範囲】
【請求項１】
コード情報を撮影する撮像手段によって読み取られた画像データをコード変換するコード情報読取装置であって、
前記画像データを構成する画素を間引くための間引き数を設定する設定手段と、
この設定手段によって設定された間引き数に基づいて前記画像データを間引く処理を行う間引き手段と、
この間引き手段によって間引きされた画像データをメモリへ転送する転送手段と、
このメモリ内の画像データを解読してコード変換を行う変換手段と、
を具備し、前記変換手段によって画像データの正常解読が不能であることが認識された場合には、前記設定されている間引き数を減らした後に、この新たな間引き数に基づいて当該画像データを間引きながら解読する処理を正常解読されるまで再帰的に繰り返し実行することによって最適間引き数を決定し、この最適間引き数を再設定する、
ようにしたことを特徴とするコード情報読取装置。
【請求項２】
前記撮像手段から画像データが出力された時点で、前記間引き手段は、当該画像データを間引く処理を開始する、
ようにしたことを特徴とする請求項1記載のコード情報読取装置。
【請求項３】
前記撮像手段から出力された画像データがデータバッファに書き込まれた後に、このデータバッファからメモリへ画像データを転送する際に、前記間引き手段は、当該画像データを間引く処理を行う、
ようにしたことを特徴とする請求項1記載のコード情報読取装置。
【請求項４】
前記設定手段は、マトリックス構成の画像データの列方向および行方向に対応してその間引き数を設定し、
前記間引き手段は、列方向の間引き数および行方向の間引き数に基づいて画像データを等間隔に間引く、
ようにしたことを特徴とする請求項1記載のコード情報読取装置。
【請求項５】
コンピュータに対して、
コード情報を撮影する撮像手段によって読み取られた画像データを構成する画素を間引くための間引き数を設定する機能と、
設定された間引き数に基づいて前記画像データを間引く処理を行う機能と、
間引きされた画像データをメモリへ転送する機能と、
このメモリ内の画像データを解読してコード変換を行う機能と、
画像データの正常解読が不能であることが認識された場合には、前記設定されている間引き数を減らした後に、この新たな間引き数に基づいて当該画像データを間引きながら解読する処理を正常解読されるまで再帰的に繰り返し実行することによって最適間引き数を決定し、この最適間引き数を再設定する機能と、
を実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、コード情報を撮影する撮像手段によって読み取られた画像データをコード変換するコード情報読取装置およびプログラムに関する。
【背景技術】
【０００２】
一般に、電荷蓄積型のイメージセンサ（ＣＭＯＳセンサ）を使用してバーコード、２次元コード等のコード情報を読取るコード情報読取装置においては、ラベル等に記録されているコード情報を光学的に取り込み（以下、キャプチャと称する）、この１面分の画像データを２値化したり、歪補正等の加工を施したり、必要部分の切り出しを行った後に、それをデコードする場合に、ＣＭＯＳセンサのシャッター時間、つまり、露光時間を現時点の環境に応じて最適化する為に、最初のキャプチャ（以下、プリキャプチャと称する）時に得られた画像データに基づいてシャッター時間の最適値を算出し、この最適値をパラメータとして設定した後に、読み取り動作を再開させることによって画像データをキャプチャ（以下、本キャプチャと称する）し、これによってデコード対象の画像データを得るようにしている。これによってＣＭＯＳセンサのシャッター時間を現時点の環境に応じて調整することが可能となり、デコードエラーを効果的に防ぐことが可能となる。
【０００３】
従来、この種のコード情報読取装置としては、イメージセンサのプリ露光動作において水平および垂直方向の両方で間引いた画素の信号だけを読み出し、このプリ露光動作にて読み出した信号に応じて本露光動作を行って全ての画素の信号を読み出すようにしたものが知られている（特許文献１参照）。
【特許文献１】特開２００３−１３２３０１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、この種のコード情報読取装置にあっては、プリ露光時に間引き動作を行うことによって高速化及び低電力化を可能としたものであるが、データの間引きの仕方は、ＣＭＯＳイメージセンサの水平走査回路ブロックおよび垂直走査回路ブロックへの制御線ＨＭＯＤＥ、ＶＭＯＤＥを用いて行うようにしたものであり、また、データを固定的に間引きくようにしたものであった。
ところで、データキャプチャを行う毎に、１面分の全ての画像データをデコード処理するためにメモリへ転送する場合、高解像度の撮像素子を使用したものにおいては、データ量が極端に多くなるため、それだけデータ転送時間が増加し、デコード処理を開始するまでの時間が長くなる等の問題が残る。
【０００５】
この発明の課題は、コード情報を撮影する撮像手段によって読み取られた画像データをメモリへ転送するまでの過程において、必要最小限のデータのみを転送できるようにすると共に、必要最小限のデータであっても、そのコード変換を確実に実行できるようにすることである。
【課題を解決するための手段】
【０００６】
請求項１記載の発明（第１の発明）は、コード情報を撮影する撮像手段によって読み取られた画像データをコード変換するコード情報読取装置であって、前記画像データを構成する画素を間引くための間引き数を設定する設定手段と、この設定手段によって設定された間引き数に基づいて前記画像データを間引く処理を行う間引き手段と、この間引き手段によって間引きされた画像データをメモリへ転送する転送手段と、このメモリ内の画像データを解読してコード変換を行う変換手段とを具備し、前記変換手段によって画像データの正常解読が不能であることが認識された場合には、前記設定されている間引き数を減らした後に、この新たな間引き数に基づいて当該画像データを間引きながら解読する処理を正常解読されるまで再帰的に繰り返し実行することによって最適間引き数を決定し、この最適間引き数を再設定するようにしたことを特徴とする。
更に、コンピュータに対して、上述した請求項１記載の発明に示した主要機能を実現させるためのプログラムを提供する（請求項５記載の発明）。
【０００７】
なお、請求項１記載の発明は次のようなものであってもよい。
前記撮像手段から画像データが出力された時点で、前記間引き手段は、当該画像データを間引く処理を開始する（請求項２記載の発明）。
【０００８】
前記撮像手段から出力された画像データがデータバッファに書き込まれた後に、このデータバッファからメモリへ画像データを転送する際に、前記間引き手段は、当該画像データを間引く処理を行う（請求項３記載の発明）。
【０００９】
前記設定手段は、マトリックス構成の画像データの列方向および行方向に対応してその間引き数を設定し、前記間引き手段は、列方向の間引き数および行方向の間引き数に基づいて画像データを等間隔に間引くようにする（請求項４記載の発明）。
【発明の効果】
【００１０】
請求項１記載の発明によれば、コード情報を撮影する撮像手段によって読み取られた画像データを構成する画素を間引くための間引き数が設定されている状態において、この間引き数に基づいて画像データを間引く処理を行った後に、間引きされた画像データを解読してコード変換を行った際に、正常解読が不能である場合には、現在設定されている間引き数を減らした後に、この新たな間引き数に基づいて当該画像データを間引きながら解読する処理を正常解読されるまで再帰的に繰り返し実行することによって最適間引き数を決定し、この最適間引き数を再設定するようにしたから、コード情報を撮影する撮像手段によって読み取られた画像データをメモリへ転送するまでの過程において、必要最小限のデータのみを転送することができ、データ転送時間の短縮化と共に、必要最小限のデータであっても、そのコード変換を確実に行うことができる。
【００１１】
請求項２記載の発明によれば、上述した請求項１記載の発明と同様の効果を有する他、撮像手段から画像データが出力された時点で、この画像データを間引く処理を開始するようにしたから、撮像手段から出力された画像データがデータバッファに書き込まれる前にデータ間引きを行うことが可能となり、データ転送時間を効率良く短縮化することができる。
【００１２】
請求項３記載の発明によれば、上述した請求項１記載の発明と同様の効果を有する他、撮像手段から出力された画像データがデータバッファに書き込まれた後に、このデータバッファからメモリへ画像データを転送する際に、画像データを間引くようにしたから、例えば、最適間引き数を再設定する際に、データバッファに保持されている画像データに基づいてデコードを繰り返し実行することができ、データキャプチャを何回もやり直す必要がなくなり、データ転送時間を更に短縮化することができる。
【００１３】
請求項４記載の発明によれば、上述した請求項１記載の発明と同様の効果を有する他、マトリックス構成の画像データの列方向および行方向に対応してその間引き数を設定し、この列方向の間引き数および行方向の間引き数に基づいて画像データを等間隔に間引くようにしたから、全体として平均的な間引きが可能となり、画像データをコード変換する際に、間引きによる悪影響を極力抑えることが可能となる。
【発明を実施するための最良の形態】
【００１４】
（実施例１）
以下、図１〜図４を参照して本発明の第１実施例を説明する。
図１は、この実施例におけるコード情報読取装置の全体構成を示したブロック図である。
このコード情報読取装置は、その基本構成要素として、汎用ＣＭＯＳセンサ部１０、照明用ＬＥＤ２０、照射用ＬＥＤ３０、ＣＭＯＳセンサ／ＬＥＤコントローラ４０、ＣＰＵ５０、メモリ６０を有している。なお、図中、丸付き数字は、処理の流れを示したシーケンス番号であり、この丸付き数字に従って各処理が順次実行される（以下、同様）。
【００１５】
汎用ＣＭＯＳセンサ部１０は、読み取り対象のコード情報（２次元コード情報）が記録されているラベル等を照明用ＬＥＤ２０、照射用ＬＥＤ３０によって光走査することによりその反射光を取り込む受光素子アレイ（エリアセンサ）１１と、このエリアセンサ１１を駆動するドライバ１２と、エリアセンサ１１の読取対象エリアを指定するためのエリア指定用のアドレスバッファ１３と、汎用ＣＭＯＳセンサ部１０の全体を制御するためのコントロール＆ロジック部１４と、受信量（電荷量）をアナログ／デジタル変換するためのＡＤコンバータ１５とを有する。
【００１６】
また、ＣＭＯＳセンサ／ＬＥＤコントローラ４０は、ＣＰＵ５０の制御下で汎用ＣＭＯＳセンサ部１０、照明用ＬＥＤ２０、照射用ＬＥＤ３０を制御するもので、コントローラ部４１と、ＡＤコンバータ１５からの出力データを取り込むデータバッファ４２と、ＡＥ用積算回路４３とを有する構成となっている。
このＡＥ用積算回路４３は、プリキャプチャ時に得られたイメージデータ（ＡＤコンバータ１５からの出力データ）に基づいて１面分のデータ積算値を求めることによってシャッター時間の最適値を算出するもので、この最適値をパラメータとして設定した後に、読み取り動作を再開させることによって画像データを本キャプチャするようにしている。つまり、シャッター時間（露光時間）を環境に応じて最適化する為に、プリキャプチャ時に得られた画像データに基づいてシャッター時間の最適値を算出し、この最適値をパラメータとして設定した後に、読み取り動作を再開させることによって画像データを本キャプチャし、この本キャプチャ後の画像データを２値化したり、歪補正等の加工を施した後にデコード処理するようにしている。
【００１７】
メモリ６０は、ＲＡＭ（例えば、スタティックＲＡＭ）等であり、プログラム実行領域と作業領域とを有し、この作業領域には、列方向の間引き数Ｋと行方向の間引き数Ｌが設定されている。この行列の間引き数Ｋ、Ｌは、汎用ＣＭＯＳセンサ部１０からの画像データの出力時に、１面分の画像データをその列方向および行方向に等間隔にデータを間引くための間引き数であり、予めユーザによって任意にデフォルト設定されたものであるが、行列の間引き数Ｋ、Ｌのうち、その何れかを設定するようにしてもよい。なお、この実施例において、行列の間引き数Ｋ、Ｌは、固定的なデータではなく、正常にデコードすることができたか否かに基づいて変更される変動データである。
【００１８】
すなわち、デフォルト設定されている行列の間引き数Ｋ、Ｌに基づいてデータ間引きを行った後に、この間引き後の画像データをデコードした際に、正常にデコードすることができたか否かをチェックし、正常にデコードすることができた場合には、行列の間引き数Ｋ、Ｌを変更しないが、デコードエラーが発生した場合には、現在設定されている行列の間引き数Ｋ、Ｌを段階的に減らした後に、この新たな間引き数に基づいて画像データを間引きながらデコードする処理を正常にデコードされるまで繰り返し実行し、正常にデコードできた時の間引き数を最適間引き数を決定し、これを行列の間引き数Ｋ、Ｌとしてメモリ６０に設定し直すようにしている。以降は、この最適間引き数Ｋ、Ｌによってデータの間引きを行うようにしている。
【００１９】
汎用ＣＭＯＳセンサ部１０からの画像データの出力時、つまり、ＡＤコンバータ１５から１面分の画像データが出力された際に、行列の間引き数Ｋ、Ｌに基づいて１面分の画像データをその列方向および行方向に等間隔にデータを間引くための処理が実行されるが、その際、例えば、列の間引き数Ｋとして“２”、行の間引き数Ｌとして“２”が設定されている場合には、マトリックス構成の画像データは、列方向および行方向共に２画素単位毎に間引かれることによって、元の１面分の画像データは１／９のデータ量に削減されることになる。
【００２０】
図２は、汎用ＣＭＯＳセンサ部１０から１面分の画像データが出力された際に、その列方向および行方向に等間隔にデータを間引く際の動作を具体的に説明するための図である。
この場合、汎用ＣＭＯＳセンサ部１０から出力される１面分の画像データは、図示の例では、３ｎ行３ｍ列構成となっており、その１行目の各データは、「Ａ１、１」、「Ａ１、２」、‥‥、「Ａ１、Ｋ＋１」、‥‥「Ａ１、３ｍ」、また、２行目の各データは、「Ａ２、１」、「Ａ２、２」、‥‥‥‥、「Ａ２、Ｋ＋１」、‥‥「Ａ２、３ｍ」、更に、３ｎ行目の各データは、「Ａ３ｎ、１」、「Ａ３ｎ、２」、‥‥‥‥、「Ａ３ｎ、Ｋ＋１」、‥‥「Ａ３ｎ、３ｍ」となっている。
【００２１】
ここで、列の間引き数Ｋが「２」、行の間引き数Ｌが「２」に設定されている場合において、画像データの列方向は、Ｋ個（２個）毎に飛ばす間引きが行われるため、１行目のデータは、「Ａ１、１」、「Ａ１、４」、‥‥「Ａ１、３ｍ−２」となる。同様に、画像データの列方向も、Ｌ個（２個）毎に飛ばす間引きが行われるため、１行目の後の続く、次の行データは４行目の「Ａ４、１」、「Ａ４、４」、‥‥「Ａ４、３ｍ−２」となり、３ｎ−２行目のデータは、「Ａ３ｎ−２、１」、「Ａ３ｎ−２、４」、‥‥「Ａ３ｎ−２、３ｍ−２」となる。
【００２２】
次に、この第１実施例におけるコード情報読取装置の動作アルゴリズムを図３に示すフローチャートを参照して説明する。ここで、このフローチャートに記述されている各機能は、読み取り可能なプログラムコードの形態で格納されており、このプログラムコードにしたがった動作を逐次実行する。また、伝送媒体を介して伝送されてきた上述のプログラムコードにしたがった動作を逐次実行することもできる。このことは後述する他の実施形態においても同様であり、記録媒体の他、伝送媒体を介して外部供給されたプログラム／データを利用してこの実施形態特有の動作を実行することもできる。
【００２３】
図３は、コード情報を読み取ってデコードするまでのデコードシーケンスを示したフローチャートであり、図４は、データの出力タイミングを示した図である。なお、図中、丸付き数字は、上述と同様、各処理の流れを示したシーケンス番号であり、この丸付き数字に従って各処理が順次実行される。
先ず、ＣＰＵ５０は、ＣＭＯＳセンサ／ＬＥＤコントローラ４０を介して汎用ＣＭＯＳセンサ部１０に対して初期化を要求した後（ステップＡ１）、メモリ６０から転送データの間引き数として、列の間引き数Ｋおよび行の間引き数Ｌを読み出す（ステップＡ２）。この状態において、１面分のプリキャプチャ命令を行う（ステップＡ３）。なお、各コマンドデータ（システムデータ）は、図４（Ａ）に示すシステムＣＬＫ（クロック）信号に同期して出力される（図４（Ｂ）参照、以下、同様）。
【００２４】
これによって、汎用ＣＭＯＳセンサ部１０から得られた１面分の画像データをキャプチャし（ステップＡ４）、この画像データがＣＭＯＳセンサ／ＬＥＤコントローラ４０内のデータバッファ４２に転送される際に、列の間引き数Ｋ、行の間引き数Ｌに従ったデータ間引きを行った後に、データバッファ４２に転送すると共に、データバッファ４２とメモリ６０間のデータバスサイズに合わせるために、データバッファ４２内の画像データを行単位毎にバスサイジングしてメモリ６０へ順次転送する（ステップＡ５）。なお、図４（Ｃ）に示すマスタＣＬＫ信号（ＡＤＣデータの同期信号）に従ってＡＤコンバータ１５から出力されるＡＤＣデータ（データバッファ４２への入力データ）は、図４（Ｄ）に示す如くとなり、従来のプリキャプチャ時のデータ転送量に比べて、（１／Ｋ＋１）×（１／Ｌ＋１）倍となり、行列の間引き数Ｋ、Ｌが“２”であれば、間引き後の画像データは、１／９のデータ量となるため、データ転送時間は、ＡＴ分の時間が短縮されることになる。
【００２５】
このようにしてプリキャプチャ時に得られた間引き後の画像データに基づいてＡＥ用積算回路４３は、データ積算値を求めて、シャッター時間の最適値を算出すると（ステップＡ６）、ＣＭＯＳセンサ／ＬＥＤコントローラ４０は、汎用ＣＭＯＳセンサ部１０へこの最適値をパラメータとして設定する（ステップＡ７）。この状態において、ＣＰＵ５０は、ＣＭＯＳセンサ／ＬＥＤコントローラ４０を介して汎用ＣＭＯＳセンサ部１０に対して１面分の本キャプチャ命令を行う（ステップＡ８）。これによって、汎用ＣＭＯＳセンサ部１０から再度得られた画像データを本キャプチャし（ステップＡ９）、ＣＭＯＳセンサ／ＬＥＤコントローラ４０内のデータバッファ４２を介してメモリ６０へ転送するが、その際、上述したプリキャプチャ時と同様に、列の間引き数Ｋ、行の間引き数Ｌに従ったデータ間引きを行った後に、データバッファ４２に転送すると共に、データバッファ４２内の画像データを行単位毎にバスサイジングしてメモリ６０へ順次転送する（ステップＡ１０）。ここで、図４（Ｄ）に示すように、本キャプチャ後の画像データにおいても、従来の本キャプチャ時のデータ転送量に比べて、（１／Ｋ＋１）×（１／Ｌ＋１）倍となる。
【００２６】
そして、この実施例においては、読み取り動作の精度を高める為に、複数回の本キャプチャを繰り返すようにしているが（ステップＡ８〜Ａ１１）、この本キャプチャ毎に得られた各画像データをその都度、列の間引き数Ｋ、行の間引き数Ｌに従ってデータ間引きを行い、間引き後の各画像データに基づいてそれらの一致有無を検出するデータのコンペア処理を実行する（ステップＡ１１）。ここで、各データの一致が検出されたことを条件に（ステップＡ１１でＹＥＳ）、データ加工処理を開始する（ステップＡ１２）。すなわち、画像データを２値化すると共に、歪補正等を行った後に、更に、コード情報の切り出しを行う。そして、データ加工後の画像データに基づいてデコード処理を実行し（ステップＡ１３）、正常にデコードすることができたか否かをチェックする（ステップＡ１４）。
【００２７】
ここで、デコードエラーが発生した場合には（ステップＡ１４でＮＯ）、列の間引き数Ｋ、行の間引き数Ｌから“１”を減算する処理を行ってその値を変更した後に（ステップＡ１５）、この変更後の間引き数Ｋ、Ｌに基づいてプリキャプチャを実行しながら以下、上述の動作を繰り返す（ステップＡ２〜Ａ１４）。この結果、正常にデコードすることができた場合には（ステップＡ１４でＹＥＳ）、その時の間引き数Ｋ、Ｌを最適間引き数として決定し、以降は、この最適間引き数Ｋ、Ｌに固定してデータの間引きを行う。この場合、最適間引き数Ｋ、Ｌに固定した後のキャプチャデータは、例えば、図４（Ｄ）に示す如くとなり、従来の本キャプチャ時のデータ転送量に比べてもかなりのデータ量を削減することができ、データ転送時間は、ＢＴ分の時間が短縮されることになる。
【００２８】
以上のように、この第１実施例におけるコード情報読取装置は、画像データを間引くための間引き数Ｋ、Ｌが設定されている状態において、汎用ＣＭＯＳセンサ部１０によって読み取られた画像データを間引き数Ｋ、Ｌに基づいて間引く処理を行った後に、間引き後の画像データをデコードした際に、デコードエラーが発生した場合には、現在設定されている間引き数Ｋ、Ｌを１段階に減らした後、この新たな間引き数に基づいて画像データを間引きながらデコードする処理を正常デコードされるまで繰り返し実行することによって最適間引き数を決定し、この最適な間引き数を再設定するようにしたから、汎用ＣＭＯＳセンサ部１０によって読み取られた画像データをメモリ６０へ転送するまでの過程において、必要最小限のデータのみを転送することができ、データ転送時間の短縮化と共に、必要最小限のデータであっても、そのデコードを確実に行うことができる。
【００２９】
この場合、汎用ＣＭＯＳセンサ部１０から画像データが出力された時点で、この画像データを間引く処理を開始するようにしたから、汎用ＣＭＯＳセンサ部１０から出力された画像データがデータバッファ４２に書き込まれる前にデータ間引きを行うことが可能となり、データ転送時間を効率良く短縮化することができる。
また、１面分の画像データの列方向および行方向に対応してその間引き数Ｋ、Ｌを設定し、この列方向の間引き数Ｋおよび行方向の間引き数Ｌに基づいて画像データを等間隔に間引くようにしたから、全体として平均的な間引きが可能となり、画像データをデコードする際に、間引きによる悪影響を極力抑えることが可能となる。
【００３０】
（第２実施形態）
以下、この発明の第２実施形態について図５〜図７を参照して説明する。なお、上述した第１実施形態は、汎用ＣＭＯＳセンサ部１０から画像データが出力された時点で、この画像データを間引く処理を開始するようにしたが、この第２実施形態においては、汎用ＣＭＯＳセンサ部１０から出力された画像データがデータバッファ４２に書き込まれた後に、このデータバッファ４２からメモリ６０へ画像データを転送する際に、画像データを間引くようにしたものである。
ここで、両実施形態において基本的に同一のものは、同一符号を付して示し、その説明を省略する他、以下、第２実施例の特徴部分を中心に説明するものとする。
【００３１】
図５は、汎用ＣＭＯＳセンサ部１０から出力された画像データがデータバッファ４２に書き込まれた後に、このデータバッファ４２からメモリ６０へ画像データを転送する際に、データ間引きが行われる様子を具体的に示した図である。
図５（Ａ）は、汎用ＣＭＯＳセンサ部１０から出力された１面分の画像データを示し、この１面分の画像データは、データバッファ４２にそのまま書き込まれる（図５（Ｂ）参照）。なお、この例では、上述した第１実施例と同様に、列の間引き数Ｋが「２」、行の間引き数Ｌが「２」に設定されている場合を示している。
【００３２】
この場合、１行目のデータは、メモリ６０に転送される対象データとなるために、その全データは、ＣＭＯＳセンサ／ＬＥＤコントローラ４０内のワーク用転送領域に送られた後（図５（Ｃ）参照）、このワーク用の転送領域内において、メモリ６０への転送対象となる列が選択されると、図５（Ｄ）に示すように、１行目のデータは、「Ａ１、１」、「Ａ１、４」、‥‥「Ａ１、３ｍ−２」となる。以下、間引き対象外の行が転送対象行として読み出されると共に、この転送対象行内から間引き対象外の列が選択されてメモリ６０へ転送される。このような間引き処理が行われることによって、最終的にはデータバッファ４２からメモリ６０に転送されるデータは、図５（Ｅ）に示す如くとなり、１行目の「Ａ１、１」、「Ａ１、４」、‥‥「Ａ１、３ｍ−２」、Ａ３ｎ行目の「Ａ３ｎ−２、１」、「Ａ３ｎ−２、４」、‥‥「Ａ３ｎ−２、３ｍ−２」のデータがメモリ６０に書き込まれ、これによって、間引き後の画像データは、元の１面分のデータの１／９のデータ量となる。
【００３３】
図６は、第２実施例において、コード情報を読み取ってデコードするまでのデコードシーケンスを示したフローチャートであり、図７は、データの出力タイミングを示した図である。
先ず、ＣＰＵ５０は、ＣＭＯＳセンサ／ＬＥＤコントローラ４０を介して汎用ＣＭＯＳセンサ部１０に対して初期化を要求した後（ステップＢ１）、メモリ６０から転送データの間引き数として、列の間引き数Ｋおよび行の間引き数Ｌを読み出す（ステップＢ２）。この状態において、１面分のプリキャプチャ命令を行う（ステップＢ３）。なお、各コマンドデータ（システムデータ）は、図７（Ａ）に示すシステムＣＬＫ（クロック）信号に同期して出力される（図７（Ｂ）参照、以下、同様）。
【００３４】
これによって、汎用ＣＭＯＳセンサ部１０から得られた１面分の画像データをキャプチャし（ステップＢ４）、この１面分の画像データはＣＭＯＳセンサ／ＬＥＤコントローラ４０内のデータバッファ４２にそのまま転送された後に、列の間引き数Ｋ、行の間引き数Ｌに従ったデータ間引きが行われてメモリ６０に転送される（ステップＢ５）。
この場合、図７（Ｃ）に示すマスタＣＬＫ信号に同期してＡＤコンバータ１５から出力されるＡＤＣデータは、図７（Ｄ）に示す如くとなる。また、ＣＭＯＳセンサ／ＬＥＤコントローラ４０内のデータバッファ４２からメモリ６０へデータを転送する際には、行単位に分割して転送されるが、この際、図７（Ｅ）に示すように、従来では、行単位毎に分割して１行分の全データを順次転送するのに対し、この第２実施例においては、列の間引き数Ｋに応じて間引きされたデータが分割転送されるので、図７（Ｆ）に示す如く、行単位当たりのデータ量を大幅に削減することができ、また、行単位毎に分割してデータ転送する場合、行の間引き数Ｌに応じたデータ間引きが行われるために、その分割数も大幅に削減することができる。
【００３５】
このようにしてプリキャプチャされた１面分の画像データがデータバッファ４２に転送されている状態において、ＡＥ用積算回路４３がデータ積算値を求めて、シャッター時間における最適値を算出すると（ステップＢ６）、ＣＭＯＳセンサ／ＬＥＤコントローラ４０は、汎用ＣＭＯＳセンサ部１０へこの最適値をパラメータとして設定する（ステップＢ７）。この状態において、ＣＰＵ５０は、ＣＭＯＳセンサ／ＬＥＤコントローラ４０を介して汎用ＣＭＯＳセンサ部１０に対して１面分の本キャプチャ命令を行う（ステップＢ８）。これによって、汎用ＣＭＯＳセンサ部１０から再度得られた画像データを本キャプチャする（ステップＢ９）。
【００３６】
この１面分の画像データは、ＣＭＯＳセンサ／ＬＥＤコントローラ４０内のデータバッファ４２にそのまま転送された後に（ステップＢ１０）、このデータバッファ４２の画像データはメモリ６０へ転送されるが、その際に、上述したプリキャプチャ時と同様に、列の間引き数Ｋ、行の間引き数Ｌに従ってデータ間引きが行われる（ステップＢ１１）。この場合においても、図７（Ｆ）に示す如く、行単位当たりのデータ量を大幅に削減することができると共に、その分割数も大幅に削減することができる。その後、読み取り動作の精度を高める為に、複数回の本キャプチャを繰り返し、本キャプチャ毎に得られた各画像データに基づいてそれらの一致を検出するデータのコンペア処理を実行する（ステップＢ８〜Ｂ１２）。この場合においても、本キャプチャ毎に得られた各画像データをその都度、列の間引き数Ｋ、行の間引き数Ｌに従ってデータ間引きを行い、間引き後の各画像データに基づいてそれらの一致有無を検出する（ステップＢ１２）。
【００３７】
ここで、各データの一致が検出されたことを条件に（ステップＢ１２でＹＥＳ）、画像データを２値化すると共に、歪補正等を行った後に、更に、コード情報の切り出しを行うデータ加工処理を開始する（ステップＢ１３）。そして、データ加工後の画像データに基づいてデコード処理を実行し（ステップＢ１４）、正常にデコードすることができたか否かをチェックする（ステップＢ１５）。いま、デコードエラーが発生した場合には（ステップＢ１５でＮＯ）、列の間引き数Ｋ、行の間引き数Ｌから“１”を減算する処理を行ってその値を変更する（ステップＢ１６）。
【００３８】
そして、データバッファ４２に転送されている１面分の画像データをそのまま保持した状態で、ステップＢ１１に戻り、データバッファ４２の画像データを列の間引き数Ｋ、行の間引き数Ｌに従って間引きながら以下、上述の動作を繰り返す（ステップＢ１１〜Ｂ１６）。この結果、正常にデコードすることができた場合には（ステップＢ１５でＹＥＳ）、その時の間引き数Ｋ、Ｌを最適間引き数として決定し、以降は、この最適間引き数Ｋ、Ｌに固定してデータの間引きを行う。この場合、最適間引き数Ｋ、Ｌに固定した後のキャプチャデータは、例えば、図４（Ｆ）に示す如くとなり、従来の本キャプチャ時のデータ転送量に比べてもかなりのデータ量を削減することができる。
【００３９】
以上のように、この第２実施例におけるコード情報読取装置は、画像データを間引くための間引き数Ｋ、Ｌが設定されている状態において、汎用ＣＭＯＳセンサ部１０によって読み取られた１面分の画像データをコントローラ部４１内のデータバッファ４２にそのまま転送した後に、このデータバッファ４２からメモリ６０へ画像データを転送する際に、間引き数Ｋ、Ｌに基づいて間引く処理を行い、この間引き後の画像データをデコードした際に、デコードエラーが発生した場合には、現在設定されている間引き数Ｋ、Ｌを１段階に減らした後、この新たな間引き数に基づいて画像データを間引きながらデコードする処理を正常デコードされるまで繰り返し実行することによって最適間引き数を決定し、この最適間引き数を再設定するようにしたから、汎用ＣＭＯＳセンサ部１０によって読み取られた画像データをメモリ６０へ転送するまでの過程において、必要最小限のデータのみを転送することができ、データ転送時間の短縮化と共に、必要最小限のデータであっても、そのデコードを確実に行うことができる他、最適間引き数を再設定する際に、データバッファに保持されている画像データに基づいてデコードを繰り返し実行することができ、データキャプチャを何回もやり直す必要がなくなり、データ転送時間を更に短縮化することができる。
【００４０】
なお、上述した第１および第２実施例においては、列の間引き数Ｋとして「２」、行の間引き数Ｌとして「２」にデフォルト設定されている場合を示したが、このデフォルト設定値は、画像データの高解像度によって任意である。
また、各実施形態のコード情報読取装置は、スタンド・アローン・タイプに限らず、その各構成要素が２以上の筐体に物理的に分離され、通信回線やケーブル等の有線伝送路あるいは電波、マイクロウエーブ、赤外線等の無線伝送路を介してデータを送受信する分散型のコンピュータシステムを構成するものであってもよい。
【００４１】
一方、コンピュータに対して、上述した各手段を実行させるためのプログラムコードをそれぞれ記録した記録媒体を提供するようにしてもよい。すなわち、コンピュータが読み取り可能なプログラムコードを有する記録媒体であって、コード情報を撮影する撮像手段によって読み取られた画像データを構成する画素を間引くための間引き数を設定する機能と、設定された間引き数に基づいて前記画像データを間引く処理を行う機能と、間引きされた画像データをメモリへ転送する機能と、このメモリ内の画像データを解読してコード変換を行う機能と、画像データの正常解読が不能であることが認識された場合には、前記設定されている間引き数を減らした後に、この新たな間引き数に基づいて当該画像データを間引きながら解読する処理を正常解読されるまで再帰的に繰り返し実行することによって最適間引き数を決定し、この最適間引き数を再設定する機能とを実現させるためのプログラムを記録したコンピュータが読み取り可能な記録媒体を提供するようにしてもよい。
【図面の簡単な説明】
【００４２】
【図１】コード情報読取装置の全体構成を示したブロック図。
【図２】汎用ＣＭＯＳセンサ部１０から１面分の画像データが出力された際に、その列方向および行方向に等間隔にデータを間引く際の動作を具体的に説明するための図。
【図３】コード情報を読み取ってデコードするまでのデコードシーケンスを示したフローチャート。
【図４】データの出力タイミングを示した図。
【図５】第２実施例において、汎用ＣＭＯＳセンサ部１０から出力された画像データがデータバッファ４２に書き込まれた後に、このデータバッファ４２からメモリ６０へ画像データを転送する際に、データ間引きが行われる様子を具体的に示した図。
【図６】第２実施例において、コード情報を読み取ってデコードするまでのデコードシーケンスを示したフローチャート。
【図７】第２実施例におけるデータの出力タイミングを示した図。
【符号の説明】
【００４３】
１０  汎用ＣＭＯＳセンサ部
１１  エリアセンサ
１２  ドライバ
１４  コントロール＆ロジック部
１５  ＡＤコンバータ
２０  照明用ＬＥＤ
３０  照射用ＬＥＤ
４０  ＣＭＯＳセンサ／ＬＥＤコントローラ
４１  コントローラ部
４２  データバッファ４２
５０  ＣＰＵ
６０  メモリ
【図１】
2005135149.tif 000003
【図２】
2005135149.tif 000004
【図３】
2005135149.tif 000005
【図４】
2005135149.tif 000006
【図５】
2005135149.tif 000007
【図６】
2005135149.tif 000008
【図７】
2005135149.tif 000009