(57)【要約】【課題】情報を読取る読取範囲を任意に変更可能な電荷蓄積型のイメージセンサによって読み取られたイメージデータの階調分布状態に基づいて当該センサの最適な露光時間を設定した後に、この露光時間に応じて読取動作を再開する場合に、この再開後の読み取りで得られるイメージデータのデータ量を効果的に削減できるようにする。【解決手段】ＣＰＵ５０は、コード情報を読取る読取範囲を任意に変更可能な汎用ＣＭＯＳセンサ部１０によって読み取られたイメージデータの階調分布状態に基づいてセンサの最適な露光時間を設定した後に、読取動作を再開させる場合、プリキャプチャ時にセンサ１１によって読み取られた１面分のイメージデータを複数のエリアに分割し、この各分割エリア毎に測定された階調分布に基づいて２次元コードが存在するか否かをエリア毎に判別すると共に、２次元コードが存在するエリアおよびその周囲に存在する隣接エリアをセンサ読取範囲として指定して読取動作を再開させる。【選択図】  図１
2004157812.tif 000002
【特許請求の範囲】
【請求項１】
情報を読取る読取範囲を任意に変更可能な電荷蓄積型のイメージセンサによって読み取られたイメージデータの階調分布状態に基づいて当該センサの最適な露光時間を設定した後に、読取動作を再開させることによってデコード対象となるイメージデータを取得する情報読取装置であって、
イメージセンサによって読み取られるイメージデータを複数のエリアに分割する分割手段と、
この分割手段によって分割された各エリア毎に、そのデータの階調分布を測定する測定手段と、
この測定手段によってエリア毎に測定された階調分布に基づいて読取対象の情報が存在するか否かをエリア毎に判別する判別手段と、
この判別手段によって読取対象の情報が存在することが判別された場合に、当該エリアおよびその周囲に存在するエリアをセンサ読取範囲として特定する特定手段と、
この特定手段によって特定されたセンサ読取範囲を指定して読取動作を再開させる読取制御手段と、
を具備したことを特徴とする情報読取装置。
【請求項２】
前記分割手段は、イメージセンサによって読み取られるイメージデータをマトリックス状に複数の矩形エリアに分割する、
ようにしたことを特徴とする請求項１記載の情報読取装置。
【請求項３】
前記イメージデータを分割する分割数を任意に設定する設定手段を設けた、
ことを特徴とする請求項１あるいは２記載の情報読取装置。
【請求項４】
電荷蓄積型のイメージセンサによって読み取られたイメージデータの階調分布状態に基づいて当該センサの最適な露光時間を設定した後に、読取動作を再開させることによって得られたイメージデータをデコード対象のデータとして転送する情報読取装置であって、
イメージセンサによって読み取られるイメージデータを複数のエリアに分割する分割手段と、
この分割手段によって分割された各エリア毎に、そのデータの階調分布を測定する測定手段と、
この測定手段によってエリア毎に測定された階調分布に基づいて読取対象の情報が存在するか否かをエリア毎に判別する判別手段と、
この判別手段によって読取対象の情報が存在することが判別された場合に、当該エリアおよびその周囲に存在するエリアをデータ転送範囲として指定する指定手段と、
読取動作を再開させることによって得られたイメージデータのうち、前記指定手段によって指定されたデータ転送範囲内のデータのみをデコード対象のデータとして転送する転送制御手段と、
を具備したことを特徴とする情報読取装置。
【請求項５】
コンピュータに対して、
情報を読取る読取範囲を任意に変更可能な電荷蓄積型のイメージセンサによって読み取られたイメージデータを複数のエリアに分割する機能と、
分割された各エリア毎に、そのデータの階調分布を測定する機能と、
エリア毎に測定された階調分布に基づいて読取対象の情報が存在するか否かをエリア毎に判別する機能と、
読取対象の情報が存在することが判別された場合に、当該エリアおよびその周囲に存在するエリアをセンサ読取範囲として特定する機能と、
特定されたセンサ読取範囲を指定して読取動作を再開させることによってデコード対象となるイメージデータを取得する機能と、
を実現させるためのプログラム。
【請求項６】
コンピュータに対して、
電荷蓄積型のイメージセンサによって読み取られたイメージデータを複数のエリアに分割する機能と、
分割された各エリア毎に、そのデータの階調分布を測定する機能と、
エリア毎に測定された階調分布に基づいて読取対象の情報が存在するか否かをエリア毎に判別する機能と、
読取対象の情報が存在することが判別された場合に、当該エリアおよびその周囲に存在するエリアをデータ転送範囲として指定する機能と、
読取動作を再開させることによって得られたイメージデータのうち、前記指定されたデータ転送範囲内のデータのみをデコード対象のデータとして転送する機能と、
を実現させるためのプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、電荷蓄積型のイメージセンサによって読み取られたイメージデータの階調分布状態に基づいて当該センサの最適な露光時間を設定した後に、読取動作を再開させることによってデコード対象となるイメージデータを取得する情報読取装置およびプログラムに関する。
【０００２】
【従来の技術】
従来、印刷媒体上に印刷された２次元コードをイメージとして読取り、この読取った２次元コードイメージを解析して、２次元コードデータを出力する２次元コードリーダにおいて、イメージセンサとしてＣＣＤ型等の固体撮像素子を使用し、このイメージセンサによって読取られた２次元コードを評価するようにしたハンディ型の２次元コードリーダおよび２次元コードシステムが知られている（特許文献１参照）。
【０００３】
【特許文献１】
特開平１０−３３４１７３号公報
【０００４】
【発明が解決しようとする課題】
すなわち、上述のコードリーダは、イメージセンサによって読取られた２次元コード内のエラービット数を確認することによって２次元コードの印刷品質を数量的に評価するものであるが、２次元コードを数量的に評価する技術を発展させるものとして、次のものが考えられる。
すなわち、電荷蓄積型のイメージセンサ（ＣＭＯＳセンサ）を使用してバーコード、２次元コード等のコード情報を読み取るコード情報読取装置において、ラベル等に記録されているコード情報を光学的に取り込み（以下、キャプチャと称する）、この１面分のイメージデータを２値化したり、歪補正等の加工を施したり、必要部分の切り出しを行った後に、それをデコードする場合に、ＣＭＯＳセンサのシャッター時間、つまり、露光時間を現時点の環境に応じて最適化する為に、最初のキャプチャ（以下、プリキャプチャと称する）時に得られたイメージデータに基づいてシャッター時間の最適値を算出し、この最適値をパラメータとして設定した後に、読取動作を再開させることによってイメージデータをキャプチャ（以下、本キャプチャと称する）し、これによってデコード対象のイメージデータを得るようにしたものが考えられる。
【０００５】
以下、図１１〜図１４を参照して、このコード情報読取装置の構成およびその動作について詳述する。
図１１は、このコード情報読取装置の全体構成を示したブロック図である。
このコード情報読取装置は、その基本構成要素として、汎用ＣＭＯＳセンサ部１０、照明用ＬＥＤ２０、照射用ＬＥＤ３０、コントローラ４０、ＣＰＵ５０、メモリ６０を有する構成となっている。
【０００６】
汎用ＣＭＯＳセンサ部１０は、読取対象のコード情報が記録されているラベル等を照明用ＬＥＤ２０、照射用ＬＥＤ３０によって光走査することによって、その反射光を受光する受光素子アレイ（イメージセンサ）１１と、このイメージセンサ１１を駆動するドライバ１２と、読取対象エリアを指定するエリア指定用のアドレスバッファ１３と、汎用ＣＭＯＳセンサ部１０の全体を制御するコントロール＆ロジック部１４と、受信量（電荷量）をアナログ／デジタル変換するＡＤコンバータ１５とを有する。
また、コントローラ４０は、ＣＰＵ５０の制御下で汎用ＣＭＯＳセンサ部１０を制御するコントローラ部４１と、ＡＤコンバータ１５からの出力データを取り込むデータバッファ４２を有する。
【０００７】
図１２は、コード情報を読取ってデコードするまでのデコードシーケンスを示したフローチャートである。図１３は、このデコードシーケンスフローの過程で得られたイメージデータを示した図であり、図１４は、データ出力タイミングを示した図である。なお、図１０中に付した丸付き数字と、図１３および図１４中に付した丸付き数字とは、処理の流れを示したシーケンス番号であり、この丸付き数字にしたがって各処理が順次実行される（以下、他の図面においても同様）。
先ず、ＣＰＵ５０は、コントローラ４０を介して汎用ＣＭＯＳセンサ部１０に対して初期化を要求した後（ステップＳ１）、更に、１面分のプリキャプチャ命令を行う（ステップＳ２）。
【０００８】
ここで、各コマンドデータは、図１４（Ａ）に示すようにコントローラ４０からＣＭＯＳセンサ部１０へ出力されるシステムクＣＬＫ（クロック）信号に同期して出力される（図１４（Ｂ）参照）。これによって、汎用ＣＭＯＳセンサ部１０から得られたイメージデータをキャプチャし（ステップＳ３）、このプリキャプチャ後のイメージデータは、コントローラ４０内のデータバッファ４２へ転送されると共に（ステップＳ４）、このコントローラ４０内のデータバッファ４２からメモリ６０へＤＭＡ（ダイレクト・メモリ・アクセス）転送される（ステップＳ５）。
【０００９】
図１３（Ａ）は、プリキャプチャ後のイメージデータを示したもので、図１４（Ｃ）に示すＤＡＴＡ（データ）ＣＬＫ信号に同期して１画素毎にＡＤコンバータ１５から出力されるデータは、図１４（Ｄ）に示す如くとなり、コントローラ４０内のデータバッファ４２を介してメモリ６０へＤＭＡ転送されるデータは、図１４（Ｅ）となる。この場合、図１３（Ａ）に示すように、露光調整が合っておらず、濃淡が不鮮明となっている為、これをデコード対象とすることはできない。
【００１０】
この場合、プリキャプチャ時に得られたイメージデータ（ＡＤコンバータ１５からの出力データ）に基づいてセンサ１面分のデータ（黒データ）積算値を求めることによってシャッター時間の最適値（パラメータ値）を決定すると（ステップＳ６）、コントローラ４０は、汎用ＣＭＯＳセンサ部１０へこの最適値（適正露光時間）をパラメータ設定する（ステップＳ７）。
【００１１】
この状態において、ＣＰＵ５０は、コントローラ４０を介して汎用ＣＭＯＳセンサ部１０に対して１面分の本キャプチャ命令を行う（ステップＳ８）。これによって、汎用ＣＭＯＳセンサ部１０から再度得られたイメージデータをキャプチャし（ステップＳ９）、この本キャプチャ後のデータは、図１４（Ｄ）、（Ｅ）に示すように、コントローラ４０内のデータバッファ４２へ転送されると共に（ステップＳ１０）、このコントローラ４０内のデータバッファ４２からメモリ６０へＤＭＡ（ダイレクト・メモリ・アクセス）転送される（ステップＳ１１）。
図１３（Ｂ）は、本キャプチャ後のイメージデータを示し、この場合、図１３（Ａ）で示したプリキャプチャ後のイメージデータよりも、シャッター時間の調整量に応じてその濃度が高まっている。
【００１２】
次に、本キャプチャ後のイメージデータを加工するデータ加工処理を行う（ステップＳ１２）。すなわち、イメージデータを２値化すると共に、歪補正等を行った後に、更に、コード情報の切り出しを行う。図１３（Ｃ）は、データ加工後のイメージデータを示し、このイメージデータがデコード処理される。
そして、正常デコードが完了したか否かをチェックするが（ステップＳ１３）、この場合、本キャプチャ後においても、露光調整が合わず、デコード不可能なデータであれば、ステップＳ６に戻り、以下、上述の動作を繰り返す。この結果、正常デコードが完了したことを条件として、このデコード結果を出力する（ステップＳ１４）。
【００１３】
このようなコード情報読取装置においては、ＣＭＯＳセンサのシャッター時間を現時点の環境に応じて調整することが可能となるが、１面分のイメージデータの中にはコード情報以外の不要データが多数含まれており、このような不要データまでもメモリ６０へ転送することは転送効率が悪くなり、それだけデコードを開始するまでの処理時間が長くなる等の問題が残る。
特に、１面分のイメージデータの一部のみにコード情報が含まれているような場合でも、１面分のイメージデータをデコード対象としてメモリへ転送することは、それだけ転送時間がかかり、転送効率が悪くなる。
【００１４】
第１の発明の課題は、情報を読取る読取範囲を任意に変更可能な電荷蓄積型のイメージセンサによって読み取られたイメージデータの階調分布状態に基づいて当該センサの最適な露光時間を設定した後に、この露光時間に応じて読取動作を再開する場合、この再開後の読み取りで得られるイメージデータのデータ量を効果的に削減できるようにすることである。
第２の発明の課題は、電荷蓄積型のイメージセンサによって読み取られたイメージデータの階調分布状態に基づいて当該センサの最適な露光時間を設定した後に、この露光時間に応じて読取動作を再開する場合、イメージセンサ側にその読取範囲を任意に変更可能な機能が備わっていなくても、再開後の読み取りで得られるイメージデータのデータ量を効果的に削減できるようにすることである。
【００１５】
【課題を解決するための手段】
請求項１記載の発明（第１の発明）は、情報を読取る読取範囲を任意に変更可能な電荷蓄積型のイメージセンサによって読み取られたイメージデータの階調分布状態に基づいて当該センサの最適な露光時間を設定した後に、読取動作を再開させることによってデコード対象となるイメージデータを取得する情報読取装置であって、イメージセンサによって読み取られるイメージデータを複数のエリアに分割する分割手段と、この分割手段によって分割された各エリア毎に、そのデータの階調分布を測定する測定手段と、この測定手段によってエリア毎に測定された階調分布に基づいて読取対象の情報が存在するか否かをエリア毎に判別する判別手段と、この判別手段によって読取対象の情報が存在することが判別された場合に、当該エリアおよびその周囲に存在するエリアをセンサ読取範囲として特定する特定手段と、この特定手段によって特定されたセンサ読取範囲を指定して読取動作を再開させる読取制御手段とを具備するものである。
更に、コンピュータに対して、上述した請求項１記載の発明に示した主要機能を実現させるためのプログラムを提供する（請求項５記載の発明）。
【００１６】
したがって、請求項１、５記載の発明は、情報を読取る読取範囲を任意に変更可能な電荷蓄積型のイメージセンサによって読み取られたイメージデータの階調分布状態に基づいて当該センサの最適な露光時間を設定した後に、読取動作を再開させる場合、イメージセンサによって読み取られたイメージデータを複数のエリアに分割し、この各分割エリア毎に測定された階調分布に基づいて読取対象の情報が存在するか否かをエリア毎に判別すると共に、読取対象の情報が存在するエリアおよびその周囲に存在するエリアをセンサ読取範囲として指定して読取動作を再開するようにしたから、再開後の読み取りで得られるイメージデータのデータ量を効果的に削減することができ、データ量の削減によってデータ転送を効率良く行うことができ、デコードを開始するまでの処理時間を大幅に短縮することが可能となる。
【００１７】
なお、請求項１記載の発明は次のようなものであってもよい。
前記分割手段は、イメージセンサによって読み取られるイメージデータをマトリックス状に複数の矩形エリアに分割する（請求項２記載の発明）。
したがって、請求項２記載の発明によれば、請求項１記載の発明と同様の効果を有する他に、イメージデータをマトリックス状に複数の矩形エリアに分割するようにしたから、例えば、５×５の２５個の矩形エリアに分割することができ、読取範囲の特定を矩形エリア毎に細かく行うことができる。
【００１８】
前記１面分のイメージデータを分割する分割数を任意に設定する設定手段を設けた（請求項３記載の発明）。
したがって、請求項３記載の発明によれば、請求項１あるいは２記載の発明と同様の効果を有する他に、イメージデータを分割する分割数を任意に設定するようにしたから、分割数を固定とせずに、ユーザ設定によって任意に変えることができ、実情に即したものとなる。
【００１９】
請求項４記載の発明（第２の発明）は、電荷蓄積型のイメージセンサによって読み取られたイメージデータの階調分布状態に基づいて当該センサの最適な露光時間を設定した後に、読取動作を再開させることによって得られたイメージデータをデコード対象のデータとして転送する情報読取装置であって、イメージセンサによって読み取られるイメージデータを複数のエリアに分割する分割手段と、この分割手段によって分割された各エリア毎に、そのデータの階調分布を測定する測定手段と、この測定手段によってエリア毎に測定された階調分布に基づいて読取対象の情報が存在するか否かをエリア毎に判別する判別手段と、この判別手段によって読取対象の情報が存在することが判別された場合に、当該エリアおよびその周囲に存在するエリアをデータ転送範囲として指定する指定手段と、読取動作を再開させることによって得られたイメージデータのうち、前記指定手段によって指定されたデータ転送範囲内のデータのみをデコード対象のデータとして転送する転送制御手段とを具備するものである。
更に、コンピュータに対して、上述した請求項４記載の発明に示した主要機能を実現させるためのプログラムを提供する（請求項６記載の発明）
【００２０】
したがって、請求項４、６記載の発明は、電荷蓄積型のイメージセンサによって読み取られたイメージデータの階調分布状態に基づいて当該センサの最適な露光時間を設定した後に、読取動作を再開させることによって得られたイメージデータをデコード対象のデータとして転送する場合、プリキャプチャ時にイメージセンサによって読み取られたイメージデータを複数のエリアに分割し、この各分割エリア毎に測定された階調分布に基づいて読取対象の情報が存在するか否かをエリア毎に判別すると共に、読取対象の情報が存在するエリアおよびその周囲に存在するエリアをデータ転送範囲として指定し、読取動作を再開させることによって得られたイメージデータのうち、このデータ転送範囲内のデータのみをデコード対象のデータとして転送するようにしたから、イメージセンサ側にその読取範囲を任意に変更可能な機能が備わっていなくても、再開後においては、指定されたデータ転送範囲内のデータのみの転送が行われる為、データ量を効果的に削減することができ、データ量の削減によってデータ転送を効率良く行うことができ、デコードを開始するまでの処理時間を大幅に短縮することが可能となる。
【００２１】
【発明の実施の形態】
（第１実施形態）
以下、図１〜図７を参照してこの発明の第１実施形態を説明する。
図１は、この実施形態におけるコード情報読取装置の全体構成を示したブロック図である。
このコード情報読取装置は、電荷蓄積型のイメージセンサ（ＣＭＯＳセンサ）のシャッター時間（露光時間）を環境に応じて最適化する為に、プリキャプチャ時に得られたイメージデータに基づいてシャッター時間の最適値を算出し、この最適値（適正露光時間）をパラメータとして設定した後に、読取動作を再開させることによってイメージデータを本キャプチャし、この本キャプチャ後のイメージデータを２値化したり、歪補正等の加工を施した後にデーコードするようにしたもので、基本的には、上述した図１１のコード情報読取装置と同様の構成となっている。なお、この第１実施形態において、図１１で示したコード情報読取装置で示した構成要素のうち、基本機能および名称的に同一のものは、同一符号を付して示す。また、第１実施形態および他の実施形態において、図中、丸付き数字は、処理の流れを示したシーケンス番号であり、この丸付き数字にしたがって各処理が順次実行されることも、上述した図１１、図１４と場合と同様である。
【００２２】
この第１実施形態のコード情報読取装置は、図１１で示したコード情報読取装置と同様に、汎用ＣＭＯＳセンサ部１０、照明用ＬＥＤ２０、照射用（ビームスポット用）のＬＥＤ３０、コントローラ４０、ＣＰＵ５０、メモリ６０を有する構成となっている。
汎用ＣＭＯＳセンサ部１０は、読取対象の２次元コードを照明用ＬＥＤ２０、照射用ＬＥＤ３０によって光走査することによって、その反射光を受光するイメージセンサ１１と、このイメージセンサ１１を駆動するドライバ１２と、読取対象エリアを指定するエリア指定用アドレスバッファ１３と、汎用ＣＭＯＳセンサ部１０の全体を制御するコントロール＆ロジック部１４と、アナログ／デジタル変換するＡＤコンバータ１５とを有し、また、コントローラ４０は、コントローラ部４１、データバッファ４２を有している。
【００２３】
図２（Ａ）は、プリキャプチャ時の１面分のイメージデータを複数のエリアに分割した場合の状態を示した図である。
ここで、イメージセンサ１１からＡＤコンバータ１５を介して１ライン（１行）毎にシリアルデータとして出力され、データバッファ４２内に保持される１面分のイメージデータは、ｎ行ｍ列の構成となっており、この１面分のイメージデータは、予め決められている複数の矩形エリアに分割される。なお、図示の例では、５×５の２５個の矩形エリアに分割した場合を示している。すなわち、図中、Ａ１〜Ａ５、Ｂ１〜Ｂ５、Ｃ１〜Ｃ５、Ｄ１〜Ｄ５、Ｅ１〜Ｅ５は、各分割エリアを示し、その分割数はユーザ設定によって任意に変更可能となっている。
また、図２（Ｂ）は、プリキャプチャ時に５×５のエリアに分割されたセンサ１面分のイメージデータを示した図であり、この場合、２次元コードは、エリアＣ３、Ｄ３等に集中している場合を例示している。
【００２４】
ＣＰＵ５０は、上述のようにプリキャプチャ時の１面分のイメージデータを複数のエリアに分割すると共に、この各分割エリア毎に、そのデータの階調分布を測定するようにしている。すなわち、図３（Ａ）は、プリキャプチャ時に測定された１エリア分の階調分布の状態をグラフ化した図であり、その横軸は、階調、縦軸は、画素数を示している。
このエリア別の階調分布は、１画素毎にデータを２５６階調に分類すると共に、各階調毎に画素数をカウントすることによって得られたもので、この階調分布に基づいて本キャプチャ時の露光時間を決定すると共に、センサ読取範囲を決定するようにしている。ここで、露光調整後の階調分布の状態をグラフ化すると、図３（Ｂ）に示すようになり、“白”と“黒”の山が明確となり、その境を２値化の基準ラインとして２値化を行うようにしている。
【００２５】
図４（Ａ）〜（Ｄ）は、プリキャプチャ時において、エリアＡ２、Ａ３、Ｃ３、Ｃ４に対応して測定されたイメージデータの階調分布を示した図である。
ここで、上述した図２（Ｂ）で示したセンサ１面分のイメージデータにおいて、エリアＡ２には、２次元コードが含まれておらず、そのエリアの階調分布は、“白”と“黒”の山の高さにおける比率が悪くなっており、また、エリアＡ３は、白の背景部分の為に、分布が“白”に偏っている。
これに対してエリアＣ３は、その全体に２次元コードが含まれ、“白”と“黒”の山が明確となり、その比率も許容範囲である６：４となっている。このエリアＣ３に隣接するエリアＣ４には、２次元コードが含まれているが、その量はエリアの半分以下の為に、“黒”の山の高さは少なくなっている。
【００２６】
このようにエリア毎にその階調分布を解析し、２次元コードが存在するか否か判別し、２次元コードが存在する場合には、当該エリアおよびその周囲に存在するエリアをセンサ読取範囲として指定した後に本キャプチャ命令を与え、２次元コードの読み取りを再開させるようにしている。この場合、エリアＣ３をセンサ読取範囲として指定する他、それに隣接するエリアＣ４も２次元コードが存在する可能性が高い為に、センサ読取範囲として指定するようにしている。このようにしてセンサ読取範囲を指定した後、本キャプチャ命令を与え、２次元コードの読み取りを再開させるようにしている。
【００２７】
一方、上述のメモリ６０は、ＲＡＭ（例えば、スタティックＲＡＭ）等であり、プログラム実行領域と作業領域とを有し、この作業領域には、エリア分割数メモリ６１、エリア別階調分布データ格納レジスタ６２、データ加工用ワークメモリ６３等がそれぞれ設けられている。
エリア分割数メモリ６１は、プリキャプチャ時の１面分のイメージデータを複数のエリアに分割する為の分割数を記憶するメモリであり、ユーザ操作によって任意に設定されたもので、プリキャプチャ時の１面分のイメージデータは、エリア分割数メモリ６１内の分割数に基づいて分割される。
【００２８】
エリア別階調分布データ格納レジスタ６２は、上述の分割エリアＡ１〜Ａ５、Ｂ１〜Ｂ５、Ｃ１〜Ｃ５、Ｄ１〜Ｄ４、Ｅ１〜Ｅ５に対応してエリア毎に測定された階調分布データが格納される作業領域であり、ＣＰＵ５０は、このエリア別階調分布データ格納レジスタ６２の内容を解析し、２次元コードが存在するか否か判別し、２次元コードが存在する場合には、当該エリアおよびその周囲に存在するエリアをセンサ読取範囲として指定する。
データ加工用ワークメモリ６３は、本キャプチャ時に得られたイメージデータを加工する際に使用される作業用の領域である。
【００２９】
次に、この第１実施形態におけるコード情報読取装置の動作アルゴリズムを図５に示すフローチャートを参照して説明する。ここで、このフローチャートに記述されている各機能は、読み取り可能なプログラムコードの形態で格納されており、このプログラムコードにしたがった動作を逐次実行する。また、伝送媒体を介して伝送されてきた上述のプログラムコードにしたがった動作を逐次実行することもできる。すなわち、記録媒体の他、伝送媒体を介して外部供給されたプログラム／データを利用してこの実施形態特有の動作を実行することもできる。
【００３０】
図５は、コード情報を読取ってデコードするまでのデコードシーケンスを示したフローチャートである。
先ず、ＣＰＵ５０は、エリア分割数メモリ６１をアクセスして設定分割数を読み出し、メモリ６０内に分割数分のエリア別階調分布データ格納レジスタ６２を確保すると共に（ステップＡ１）、コントローラ４０を介して汎用ＣＭＯＳセンサ部１０に対して初期化を要求した後（ステップＡ２）、１面分のプリキャプチャ命令を行う（ステップＡ３）。これによって、汎用ＣＭＯＳセンサ部１０から得られたイメージデータをキャプチャし（ステップＡ４）、コントローラ４０内のデータバッファ４２へ転送する動作を開始すると共に（ステップＡ５）、これに同期してＤＭＡ転送を繰り返し、１面分のイメージデータをデータバッファ４２からメモリ６０へ転送する動作を行う（ステップＡ６）。
【００３１】
そして、１面分のデータ転送が終了すると、分割エリア別にデータの階調分布を測定し、その測定内容を対応するエリア別階調分布データ格納レジスタ６２に格納する（ステップＡ７）。この階調分布は、１画素毎にデータを２５６階調に分類すると共に、各階調毎に画素数をカウントすることによって得られたもので、例えば、プリキャプチャ時に取得したセンサ１面分のイメージデータ（図２（Ｂ）参照）において、エリアＡ２、Ａ３、Ｃ３、Ｃ４に対応して測定されたイメージデータの階調分布は、図４（Ａ）〜（Ｄ）で示した如くとなる。
そして、ＣＰＵ５０は、このエリア別階調分布データ格納レジスタ６２を順次アクセスすることによって、エリア毎の階調分布を解析し、ピークの山が２つに分布しているエリア、つまり、２次元コードが多く含まれていることによって“白”と“黒”の山が明確となっているエリアを選択指定する（ステップＡ８）。この場合、エリアＡ２、Ａ３、Ｃ３、Ｃ４の中から該当エリアとして「Ｃ３」が選択される。
【００３２】
更に、選択指定した各エリアの中から、“白”と“黒”の山の比率が「４：６」から「５：５」に該当するエリアを選択する（ステップＡ９）。この場合、エリアＣ３は、２次元コードが集中している為に、この比率にも該当するエリアとして選択される。このように２次元コードが集中していることによって選択指定されたエリアを以下、コード集中エリアＸと称する。これによって選択指定されたコード集中エリアＸ毎に、その周囲に隣接するエリアを選択指定する（ステップＡ１０）。この場合、エリアＡ２、Ａ３、Ｃ３、Ｃ４のうち、エリアＣ４については、２次元コードが含まれている量がエリアの半分以下であるが、コード集中エリアＸであるエリアＣ３に隣接するエリアである為に、当該エリアが選択指定される。このようにコード集中エリアＸに隣接するエリアを以下、隣接エリアＹと称する。
【００３３】
そして、コード集中エリアＸの階調分布を参照して、そのデータ（黒データ）積算値を求めることによって、次の本キャプチャ時における露光時間の最適値（パラメータ値）を算出する（ステップＡ１１）。この場合、コントローラ４０は、汎用ＣＭＯＳセンサ部１０に対してこの最適値（適正露光時間）をパラメータとして設定する（ステップＡ１２）。
この状態において、ＣＰＵ５０は、各コード集中エリアＸと、それに隣接する各隣接エリアＹをセンサ読取範囲として決定し、コントローラ４０を介して汎用ＣＭＯＳセンサ部１０内のエリア指定用アドレスバッファ１３に対し、このセンサ読取範囲に対応したエリアをアドレス指定した後に（ステップＡ１３）、１面分の本キャプチャ命令を行う（ステップＡ１４）。
これによって汎用ＣＭＯＳセンサ部１０から再度得られたイメージデータをキャプチャし（ステップＡ１５）、コントローラ４０内のデータバッファ４２へ転送する動作を開始すと共に（ステップＡ１６）、これに同期してＤＭＡ転送を繰り返し、１面分のイメージデータをデータバッファ４２からメモリ６０へ転送する動作を行う（ステップＡ１７）。
【００３４】
図６（Ａ）は、本キャプチャ後におけるイメージデータを示したもので、この場合、センサ読取範囲の絞り込みによって、図２（Ｂ）で示したプリキャプチャ時のイメージデータに比べ、そのデータ量は大幅に削減されたものとなっている。この本キャプチャ後におけるイメージデータを加工する処理を行うが、この場合、イメージデータを２値化すると共に、歪補正等を行った後に、更に、コード情報の切り出しが行われる（ステップＡ１８）。
図６（Ｂ）は、データ加工後のイメージデータを示し、このイメージデータに基づいてデーコード処理が行われ、その結果、正常デコードが完了したか否かをチェックする（ステップＡ１９）。この場合、本キャプチャ後においても、露光調整が合わず、デコード不可能なデータであれば、ステップＡ１１に戻り、以下、上述の動作を繰り返す。この結果、正常デコードが完了したことを条件として、このデコード結果を出力する（ステップＡ２０）。
【００３５】
図７は、この第１実施形態における出力タイミングを示した図である。
この場合、各コマンドデータは、図７（Ａ）に示すシステムクＣＬＫ信号に同期して出力され（図７（Ｂ）参照）、これによって、汎用ＣＭＯＳセンサ部１０から得られたイメージデータをキャプチャし、コントローラ４０内のデータバッファ４２を介してメモリ６０へ転送されるが、本キャプチャ時には、アドレス指定によって読取範囲のエリアのみに絞り込まれる為、図７（Ｃ）に示すＤＡＴＡＣＬＫ信号に同期してＡＤコンバータ１５から出力されるデータは、図７（Ｄ）に示す如くとなり、本キャプチャ時において、メモリ６０へ転送されるデータは、図７（Ｅ）に示すように、図１４（Ｅ）で示した場合における本キャプチャ時の転送データに比べ、読取範囲（コードエリア）の判別時間を考慮しても、全体的に図中、“Ｔ”で示した時間分だけ処理時間が短縮されることになる。
【００３６】
以上のように、この第１実施形態においては、コード情報を読取る読取範囲を任意に変更可能な汎用ＣＭＯＳセンサ部１０によって読み取られたイメージデータの階調分布状態に基づいてセンサの最適な露光時間を設定した後に、読取動作を再開させる場合に、プリキャプチャ時にセンサ１１によって読み取られた１面分のイメージデータを複数のエリアに分割し、この各分割エリア毎に測定された階調分布に基づいて２次元コードが存在するか否かエリア毎に判別すると共に、２次元コードが存在するエリアおよびその周囲に存在する隣接エリアをセンサ読取範囲として指定して読取動作を再開するようにしたから、再開後の読み取りで得られるイメージデータのデータ量を効果的に削減することができ、データ量の削減によってデータ転送を効率良く行うことができ、デコードを開始するまでの処理時間を大幅に短縮することが可能となる。
【００３７】
この場合、１面分のイメージデータをマトリックス状に複数の矩形エリア（５×５の２５個の矩形エリア）に分割するようにしたから、読取範囲の特定を矩形エリア毎に細かく行うことができる。
また、１面分のイメージデータを分割する分割数を任意に設定するようにしたから、分割数を固定とせずに、ユーザ設定によって任意に変えることができ、実情に即したものとなる。
【００３８】
なお、上述した第１実施形態は、１面分のイメージデータを５×５の矩形エリアに分割するようにしたが、どのように分割するかは任意であり、例えば、１面分のイメージデータを所定ライン数毎に分割するようにしてもよい。また、１面分のイメージデータを所定のライン毎に分割すると共に、分割されたラインを複数のブロック毎に分割するようにしてもよい。このように細かく分割することによってセンサ読取範囲を更に精度良く指定することが可能となる。
【００３９】
一方、コンピュータに対して、上述した各手段を実行させるためのプログラムコードをそれぞれ記録した記録媒体（例えば、ＣＤ−ＲＯＭ、フロッピィデスク、ＲＡＭカード等）を提供するようにしてもよい。
すなわち、コンピュータが読み取り可能なプログラムコードを有する記録媒体であって、情報を読取る読取範囲を任意に変更可能な電荷蓄積型のイメージセンサによって読み取られた１面分のイメージデータを複数のエリアに分割する機能と、分割された各エリア毎に、そのデータの階調分布を測定する機能と、エリア毎に測定された階調分布に基づいて読取対象の情報が存在するか否かをエリア毎に判別する機能と、読取対象の情報が存在することが判別された場合に、当該エリアおよびその周囲に存在するエリアをセンサ読取範囲として特定する機能と、特定されたセンサ読取範囲を指定して読取動作を再開する機能とを実現させるためのプログラムを記録したコンピュータが読み取り可能な記録媒体を提供するようにしてもよい。
【００４０】
（第２実施形態）
以下、この発明の第２実施形態について図８〜図１０を参照して説明する。なお、上述した第１実施形態は、コード情報を読取る読取範囲を任意に変更可能な汎用ＣＭＯＳセンサ部１０を採用し、このＣＭＯＳセンサ部１０を構成するエリア指定用アドレスバッファ１３に対して読取範囲に対応するエリアをアドレス指定するようにしたが、この第２実施形態においては、読取範囲を任意に変更可能な機能を持たないＣＭＯＳセンサ部１０を採用した場合でも、上述した第１実施形態と同様、データ量の削減によってデータ転送を効率良く行うことができるようにしたものである。
ここで、両実施形態において基本的に同一のものは、同一符号を付して示し、その説明を省略する他、以下、第２実施形態の特徴部分を中心に説明するものとする。
【００４１】
図８は、この第２実施形態におけるコード情報読取装置の全体構成を示したブロック図である。
この第２実施形態における汎用ＣＭＯＳセンサ部１０は、上述した第１実施形態と同様に、照明用ＬＥＤ２０、照射用ＬＥＤ３０、イメージセンサ１１、ドライバ１２、コントロール＆ロジック部１４、ＡＤコンバータ１５を有しているが、上述のエリア指定用アドレスバッファ１３を有しない構成となっている。また、コントローラ４０は、コントローラ部４１、データバッファ４２の他、この第２実施形態においては、後述する転送データセレクタ４３を有する構成となっている。なお、メモリ６０には、上述した第１実施形態と同様に、エリア分割数メモリ６１、エリア別階調分布データ格納レジスタ６２、データ加工用ワークメモリ６３を有している。
【００４２】
この第２実施形態においても、汎用ＣＭＯＳセンサ部１０によって読み取られたイメージデータの階調分布状態に基づいてセンサの最適な露光時間を設定した後に読取動作を再開させる場合に、プリキャプチャ時にセンサ１１によって読み取られた１面分のイメージデータを複数のエリア（５×５）に分割し、この各分割エリア毎に測定された階調分布に基づいて２次元コードが存在するか否か判別するようにしているが、この場合、２次元コードが存在するエリアおよびその周囲に存在する隣接エリアをコントローラ４０内のデータバッファ４２へ転送する為のデータ転送範囲として指定するようにしている。
【００４３】
この場合、コントローラ４０内に設けられている転送データセレクタ４３は、本キャプチャ時において、汎用ＣＭＯＳセンサ部１０から得られた１面分のイメージデータをコントローラ４０内のデータバッファ４２へ転送する際に、この１面分のイメージデータのうち、上述のようにして指定されたデータ転送範囲に該当するエリア内のデータのみを抽出（他のデータをマスク）して、コントローラ４０内のデータバッファ４２へ転送するものである。
【００４４】
図９は、転送データセレクタ４３の動作を示したタイミングチャートである。
ここで、図９（Ａ）に示すＤＡＴＡＣＬＫ信号に同期してＡＤコンバータ１５から出力されるデータは、図９（Ｂ）に示す如くとなるが、この場合、汎用ＣＭＯＳセンサ部１０から出力される１面分のイメージデータのアドレスは、図９（Ｃ）に示すフレーム同期信号ＶＳＹＮＣ、図９（Ｄ）に示すライン同期信号ＨＳＹＮＣ、ＤＡＴＡＣＬＫ信号に同期してカウントされ、上述の指定データ転送範囲に該当するエリア内のデータがそのアドレスカウント値に該当するか否かに応じて出力される転送データイネーブル信号（データマスク信号）は、図９（Ｅ）に示す如くとなる。
これによって転送データセレクタ４３からデータバッファ４２へ転送されるデータは、図９（Ｆ）に示す如くとなり、また、このデータバッファ４２からメモリ６０へＤＭＡ転送されるデータは、図９（Ｇ）に示す如くとなる。
【００４５】
図１０は、この第２実施形態における出力タイミングを示した図である。
この場合、各コマンドデータは、図１０（Ａ）に示すシステムクＣＬＫ信号に同期して出力され（図１０（Ｂ）参照）、これによって、汎用ＣＭＯＳセンサ部１０から得られたイメージデータをキャプチャし、コントローラ４０内のデータバッファ４２を介してメモリ６０へ転送される。この場合、本キャプチャ時には、図１０（Ｃ）に示すＤＡＴＡＣＬＫ信号に同期してＡＤコンバータ１５から出力されるデータは、図１０（Ｄ）に示すように１面分のイメージデータであるが、転送データセレクタ４３によってデータ転送範囲内のデータのみに絞り込まれる為、メモリ６０へＤＭＡ転送されるデータは、図１０（Ｅ）に示す如くとなり、読取範囲（コードエリア）の判別時間を考慮しても、メモリ６０へＤＭＡ転送されるデータの占有率が大幅に減少することになる。
【００４６】
以上のように、この第２実施形態においては、汎用ＣＭＯＳセンサ部１０によって読み取られたイメージデータの階調分布状態に基づいてセンサ１１の最適な露光時間を設定した後に、読取動作を再開させることによってデーコード対象となるイメージデータを転送する場合に、プリキャプチャ時にセンサ１１によって読み取られた１面分のイメージデータを複数のエリアに分割し、この各分割エリア毎に測定された階調分布に基づいて読取対象のデータが存在するか否か判別すると共に、読取対象データが存在するエリアおよびその周囲に存在するエリアをデータ転送範囲として指定し、次の本キャプチャ時に得られた１面分のイメージデータのうち、コントローラ４０内に転送データセレクタ４３によって、このデータ転送範囲内のデータのみをメモリ６０へ転送するようにしたから、センサ側にその読取範囲を任意に変更可能な機能が備わっていなくても、再開後においては、指定されたデータ転送範囲内のデータのみの転送が行われる為、データ量を効果的に削減することができ、データ量の削減によってデータ転送を効率良く行うことができ、デコードを開始するまでの処理時間を大幅に短縮することが可能となる。
【００４７】
なお、上述第２実施形態においては、コントローラ４０内に転送データセレクタ４３を設け、本キャプチャ時に得られたイメージデータのうち、このデータ転送範囲内のデータのみをメモリ６０へ転送するようにしたが、ＣＰＵ５０側の転送制御処理によってデータ転送範囲内のデータのみをメモリ６０へ転送するようにしてもよい。
【００４８】
一方、コンピュータに対して、上述した各手段を実行させるためのプログラムコードをそれぞれ記録した記録媒体（例えば、ＣＤ−ＲＯＭ、フロッピィデスク、ＲＡＭカード等）を提供するようにしてもよい。
すなわち、コンピュータが読み取り可能なプログラムコードを有する記録媒体であって、電荷蓄積型のイメージセンサによって読み取られた１面分のイメージデータを複数のエリアに分割する機能と、分割された各エリア毎に、そのデータの階調分布を測定する機能と、エリア毎に測定された階調分布に基づいて読取対象の情報が存在するか否かをエリア毎に判別する機能と、読取対象の情報が存在することが判別された場合に、当該エリアおよびその周囲に存在するエリアをデータ転送範囲として指定する機能と、読取動作を再開させることによって得られたイメージデータのうち、前記指定されたデータ転送範囲内のデータのみをデーコード対象のデータとして転送する機能とを実現させるためのプログラムを記録したコンピュータが読み取り可能な記録媒体を提供するようにしてもよい。
【００４９】
なお、上述した各実施形態のコード情報読取装置においては、２次元コードを読取るようにしたが、バーコード（１次元コード）等のコード情報あるいはコード情報以外の文字列、図形、記号等の情報を読取る場合であっても同様に適用可能であり、読取対象となる情報は問わない。
また、イメージセンサ１１は、撮像素子を１次元配列してライン走査する走査型のリニアセンサに限らず、撮像素子をマトリック状に２次元配列して面読取を行う面読取型のエリアセンサであってもよい。
【００５０】
また、各実施形態のコード情報読取装置は、スタンド・アローン・タイプに限らず、その各構成要素が２以上の筐体に物理的に分離され、通信回線やケーブル等の有線伝送路あるいは電波、マイクロウエーブ、赤外線等の無線伝送路を介してデータを送受信する分散型のコンピュータシステムを構成するものであってもよい。
【００５１】
【発明の効果】
第１の発明（請求項１記載の発明）によれば、情報を読取る読取範囲を任意に変更可能な電荷蓄積型のイメージセンサによって読み取られたイメージデータの階調分布状態に基づいて当該センサの最適な露光時間を設定した後に、読取動作を再開させる場合、プリキャプチャ時にイメージセンサによって読み取られたイメージデータを複数のエリアに分割し、この各分割エリア毎に測定された階調分布に基づいて読取対象の情報が存在するか否かをエリア毎に判別すると共に、読取対象の情報が存在するエリアおよびその周囲に存在するエリアをセンサ読取範囲として指定して読取動作を再開するようにしたから、再開後の読み取りで得られるイメージデータのデータ量を効果的に削減することができ、データ量の削減によってデータ転送を効率良く行うことができ、デコードを開始するまでの処理時間を大幅に短縮することが可能となる。
第２の発明（請求項４記載の発明）によれば、電荷蓄積型のイメージセンサによって読み取られたイメージデータの階調分布状態に基づいて当該センサの最適な露光時間を設定した後に、読取動作を再開させることによって得られたイメージデータをデコード対象のデータとして転送する場合、プリキャプチャ時にイメージセンサによって読み取られたイメージデータを複数のエリアに分割し、この各分割エリア毎に測定された階調分布に基づいて読取対象の情報が存在するか否かをエリア毎に判別すると共に、読取対象の情報が存在するエリアおよびその周囲に存在するエリアをデータ転送範囲として指定し、読取動作を再開させることによって得られたイメージデータのうち、このデータ転送範囲内のデータのみをデコード対象のデータとして転送するようにしたから、イメージセンサ側にその読取範囲を任意に変更可能な機能が備わっていなくても、再開後においては、指定されたデータ転送範囲内のデータのみの転送が行われる為、データ量を効果的に削減することができ、データ量の削減によってデータ転送を効率良く行うことができ、デコードを開始するまでの処理時間を大幅に短縮することが可能となる。
【図面の簡単な説明】
【図１】第１実施形態におけるコード情報読取装置の全体構成を示したブロック図。
【図２】（Ａ）は、プリキャプチャ時の１面分のイメージデータを複数のエリアに分割した場合の分割状態を示した図、（Ｂ）は、プリキャプチャ時において、複数のエリアに分割された１面分のイメージデータを示した図。
【図３】（Ａ）は、プリキャプチャ時に測定された１エリア分の階調分布の状態をグラフ化した図、（Ｂ）は、露光調整後の階調分布の状態をグラフ化した図。
【図４】（Ａ）〜（Ｄ）は、プリキャプチャ時において、エリアＡ２、Ａ３、Ｃ３、Ｃ４に対応して測定されたイメージデータの階調分布を示した図。
【図５】コード情報を読取ってデコードするまでのデコードシーケンスを示したフローチャート。
【図６】（Ａ）は、本キャプチャ後におけるイメージデータを示した図、（Ｂ）は、データ加工後のイメージデータを示した図。
【図７】出力タイミングを示した図。
【図８】第２実施形態におけるコード情報読取装置の全体構成を示したブロック図。
【図９】転送データセレクタ４３の動作を示したタイミングチャート。
【図１０】第２実施形態における出力タイミングを示した図。
【図１１】この発明の前提となる基本的な概念を説明する為のコード情報読取装置の全体構成を示したブロック図。
【図１２】図１１で示したコード情報読取装置において、コード情報を読取ってデコードするまでのデコードシーケンスを示したフローチャート。
【図１３】（Ａ）〜（Ｃ）は、図１２で示したデコードシーケンスフローの過程で得られた各イメージデータを示した図。
【図１４】図１２で示したデコードシーケンスフローの過程でのデータ出力タイミングを示した図。
【符号の説明】
１０  汎用ＣＭＯＳセンサ部
１１  イメージセンサ
１２  ドライバ
１３  エリア指定用アドレスバッファ
１４  コントロール＆ロジック部
１５  ＡＤコンバータ
４０  コントローラ
４１  コントローラ部
４２  データバッファ
４３  転送データセレクタ
５０  ＣＰＵ５０
６０  メモリ
６１  エリア分割数メモリ
６２  エリア別階調分布データ格納レジスタ
【図１】
2004157812.tif 000003
【図２】
2004157812.tif 000004
【図３】
2004157812.tif 000005
【図４】
2004157812.tif 000006
【図５】
2004157812.tif 000007
【図６】
2004157812.tif 000008
【図７】
2004157812.tif 000009
【図８】
2004157812.tif 000010
【図９】
2004157812.tif 000011
【図１０】
2004157812.tif 000012
【図１１】
2004157812.tif 000013
【図１２】
2004157812.tif 000014
【図１３】
2004157812.tif 000015
【図１４】
2004157812.tif 000016