(57)【要約】【課題】簡素な装置構成でコードの読取性能を向上させる。【解決手段】コード読取装置１０には１次元スキャナＰと２次元スキャナＱが備えられ、この１次元スキャナＰ及び２次元スキャナＱにより同時に１次元コードのコードスキャンが行われると、２次元スキャナＱにより取り込まれたエリア画像において１次元スキャナＰにより走査された光ビームの照射位置がＣＰＵ１１により検出される。そして、検出された光ビームの照射位置に基づいて、１次元コードまでの距離が算出され、当該算出された距離に応じて１次元スキャナＰのコード読取に係るパラメータの変更設定が行われる。パラメータが変更設定されると、再度１次元スキャナＰによりコードスキャンが行われ、読み取られたコードのデコードが行われる。【選択図】図２
2005063142.tif 000002
【特許請求の範囲】
【請求項１】
読取対象のコードに光ビームをライン状に照射してそのライン画像を読み取る１次元スキャナと、
前記１次元スキャナにより読取対象コードに光ビームが照射された際に、読取対象のコード画像を含むエリア画像を読み取る２次元スキャナと、
前記２次元スキャナにより読み取られたエリア画像における光ビームの照射位置を検出する検出手段と、
前記検出された光ビームの照射位置に基づいて、コード読取装置から読取対象コードまでの距離を算出する距離算出手段と、
前記算出された距離に応じてコード読取に係る各種パラメータを変更設定する設定手段と、
を備えることを特徴とするコード読取装置。
【請求項２】
前記設定手段は、１次元スキャナにおけるパラメータを設定することを特徴とする請求項１に記載のコード読取装置。
【請求項３】
前記設定手段は、２次元スキャナにおけるパラメータを設定することを特徴とする請求項１に記載のコード読取装置。
【請求項４】
前記１次元スキャナにより照射された光ビームの走査方向をピッチ方向とすると、
前記検出手段により検出されたエリア画像における光ビームの照射位置に基づいて、ピッチ方向におけるコードの傾斜角度であるピッチ角度を算出するピッチ角度算出手段と、
前記算出されたピッチ角度に応じて、前記１次元スキャナにより読み取られたライン画像又は２次元スキャナにより読み取られたエリア画像に含まれるコード画像を補正する画像補正手段と、
を備えることを特徴とする請求項１〜３の何れか一項に記載のコード読取装置。
【請求項５】
読取対象のコードに光ビームを照射する前記１次元スキャナを第１の１次元スキャナとし、当該第１の１次元スキャナの光ビームの走査方向をピッチ方向とすると、このピッチ方向と直交するスキュー方向に光ビームをライン状に照射してそのライン画像を読み取る第２の１次元スキャナを備え、
前記検出手段は、前記２次元スキャナにより読み取られたエリア画像において、前記第１の１次元スキャナによる光ビームの照射位置及び前記第２の１次元スキャナによる光ビームの照射位置を検出し、
前記検出された第１の１次元スキャナによる光ビームの照射位置に基づいて、ピッチ方向におけるコードの傾斜角度であるピッチ角度を算出するピッチ角度算出手段と、
前記検出された第２の１次元スキャナによる光ビームの照射位置に基づいて、スキュー方向におけるコードの傾斜角度であるスキュー角度を算出するスキュー角度算出手段と、
前記算出されたピッチ角度及びスキュー角度に応じて前記第１の１次元スキャナにより読み取られたライン画像又は２次元スキャナにより読み取られたエリア画像に含まれるコード画像を補正する画像補正手段と、
を備えることを特徴とする請求項１〜３の何れか一項に記載のコード読取装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バーコード等の１次元コード、情報をコード化した画像からなるマトリックス型、スタック型等の２次元コード等の各種コードを読み取るコード読取装置に関する。
【背景技術】
【０００２】
従来からコード読取装置には、１次元コードに対してレーザビーム等の光ビームをライン状に照射して走査する（以下、コードスキャンという。）１次元スキャナを搭載して、読み取られたライン画像からデコードを行うものや、レンズ等の光学系を介してエリア画像を読み取る２次元スキャナを搭載して画像解析により２次元コードをデコードするものが開発されている。また、これら１次元スキャナ及び２次元スキャナをともに搭載して１次元コード、２次元コードのどちらも読み取ることを可能としたコード読取装置が開発されている（例えば、特許文献１参照）。
【０００３】
上記１次元スキャナや２次元スキャナによるコードスキャン時には、読取対象のコードまでの距離（以下、コード距離という。）の遠近に関わらず、読取性能を保持するために読み取ったコードの信号を内部で増幅しているが、コード距離に応じてスキャナの動作スピード等のパラメータは変わらないため、読取可能なコード距離は読取信号のデジタル化の方法により制限され、ある距離を超えてしまうと信号が弱くなり、増幅してもデコードできないという問題があった。また、コード読取時に異常な反射光等が生じた場合、増幅率が異常な値に設定されて読取エラーが発生してしまうという問題もあった。
【０００４】
そこで、コードまでの距離を測定し、距離に応じて読取信号の増幅率を調整するもの（例えば、特許文献２参照）や、測定された距離に最適なカットオフ周波数を設定してノイズを除去し、正確にコードの読取信号のみを取り出すことが可能なコード読取装置（例えば、特許文献３参照）が開発されている。
【特許文献１】特開平０６−１６２２４６号公報
【特許文献２】特開平０７−２２２４０８号公報
【特許文献３】特開平０４−３０９８５４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述したコード読取装置では、コード距離を測定するための専用の距離測定センサが必要となってしまい、コストの増大を招くとともに装置構成が大型化してしまう。
【０００６】
本発明の課題は、簡素な装置構成でコードの読取性能を向上させることである。
【課題を解決するための手段】
【０００７】
請求項１に記載の発明は、コード読取装置において、読取対象のコードに光ビームをライン状に照射してそのライン画像を読み取る１次元スキャナと、前記１次元スキャナにより読取対象コードに光ビームが照射された際に、読取対象のコード画像を含むエリア画像を読み取る２次元スキャナと、前記２次元スキャナにより読み取られたエリア画像における光ビームの照射位置を検出する検出手段と、前記検出された光ビームの照射位置に基づいて、コード読取装置から読取対象コードまでの距離を算出する距離算出手段と、前記算出された距離に応じてコード読取に係る各種パラメータを変更設定する設定手段と、を備えることを特徴とする。
【発明の効果】
【０００８】
請求項１に記載の発明によれば、コード読取装置に１次元スキャナ及び２次元スキャナを搭載し、２次元スキャナにより得られたエリア画像における光ビームの照射位置に基づいて算出された読取対象コードまでの距離に応じて、コード読取に係るパラメータを変更設定するので、コードまでの距離に応じた最適なパラメータを設定することができ、コードまでの距離に関わらずデコードに最適なコード画像を読み取ることができる。従って、簡素な装置構成で読取性能を向上させるとともに、正確なデコードを行うことが可能となる。
【発明を実施するための最良の形態】
【０００９】
〈第１の実施の形態〉
第１の実施の形態では、コード読取装置に１次元スキャナと２次元スキャナを備え、この１次元スキャナ及び２次元スキャナにより同時に１次元コードのコードスキャンを行い、２次元スキャナにより取り込まれたエリア画像における１次元スキャナによる光ビームの照射位置に基づいて、１次元コードまでの距離を算出し、当該算出された距離に応じて１次元スキャナのコード読取に係るパラメータを変更設定する例を説明する。
【００１０】
まず、構成を説明する。
図１に、第１の実施の形態におけるコード読取装置１０を示す。図１（ａ）はコード読取装置１０をその上面から見た図であり、図１（ｂ）はコード読取装置１０を側面から見た図である。
図１（ａ）に示すように、コード読取装置１０は、コードスキャンを行う読取部１と、支持部２とから構成される。読取部１にはその上面に表示ディスプレイ１ａが設けられ、支持部２にはその上面に操作手段として各種キー群２ａが備えられている。なお、本実施の形態では、持ち運び可能なハンディタイプのコード読取装置１０を例示したが、ハンディタイプ以外の形態であってもよい。
【００１１】
また、読取部１には、１次元コードを読み取るための１次元スキャナ（以下、１Ｄスキャナという。）Ｐと、２次元コードを読み取るための２次元スキャナ（以下、２Ｄスキャナという。）Ｑとが内蔵される。１ＤスキャナＰは、２ＤスキャナＱの真上に並列して設置され、図１（ｂ）に示すように、１ＤスキャナＰから照射される光ビームの走査面と、２ＤスキャナＱによるエリア画像の取込範囲の中心軸とが所定角度で交差するように設置される。すなわち、図１（ａ）は光ビームの走査面をその真上から見た図であり、図１（ｂ）は光ビームの走査面をその側面から見た図である。なお、１ＤスキャナＰ及び２ＤスキャナＱの機能説明は後述する。
【００１２】
図２に、コード読取装置１０の内部構成を示す。
図２に示すように、コード読取装置１０は、ＣＰＵ（Central Processing Unit）１１、ＲＡＭ（Random Access Memory）１２、表示部１３、入力部１４、通信部１５、ＲＯＭ（Read Only Memory）１６、１Ｄスキャナコントローラ１７、１ＤスキャナＰ、２Ｄスキャナコントローラ１８、２ＤスキャナＱを備えて構成され、各部はバス１９により接続されている。この第１の実施の形態では、１ＤスキャナＰはレーザ光ビームを照射して１次元コードを読み取るレーザスキャナであり、２ＤスキャナＱはＣＭＯＳ（Complementary Metal-Oxide Semiconductor）イメージセンサを内蔵する２Ｄスキャナである。
【００１３】
ＣＰＵ１１は、ＲＯＭ１６に格納されている基本動作プログラムの他、本発明に係る第１のコード読取処理プログラム（図７参照）等の各プログラムをＲＡＭ１２に展開し、当該プログラムとの協働により処理動作を統括的に制御する。
【００１４】
ＣＰＵ１１は、第１のコード読取処理において、２ＤスキャナＱにより読み取られたエリア画像における１ＤスキャナＰの光ビームの照射位置を検出し、当該検出された光ビームの照射位置に基づいてコード距離を算出する。
【００１５】
以下、図３〜６を参照して、距離の算出方法について説明する。
図３（ａ）は、コードスキャン時の様子を示す図であり、図３（ｂ）は、近距離、中距離、長距離のコード距離でコードスキャンが行われた際に２ＤスキャナＱにより取り込まれたエリア画像Ａ〜Ｃを示す図である。取り込まれた各エリア画像には、１ＤスキャナＰから走査された光ビームの照射位置を示す走査ラインが現れる（図中では、説明の便宜上、光ビームの走査ラインを黒の実線で示したが、実際には光ビームは輝度が高いので走査ラインは低輝度な白い線でエリア画像上に現れる。）。
【００１６】
近距離でコードスキャンが行われると、図３（ｂ）に示すようにエリア画像Ａが得られる。エリア画像Ａではコード距離が近距離であり、画像取込範囲が小さいため、エリア画像全体の画像領域が小さくなるとともに、コード画像のサイズは実際のサイズに近いサイズとなる。また、コードまでの光ビームの入射距離が浅いため、コード画像及びそのコード画像をスキャンする光ビームの走査ラインがエリア画像Ａの上部に位置する。
【００１７】
中距離でコードスキャンが行われると、図３（ｂ）に示すようにエリア画像Ｂが得られる。エリア画像Ｂでは、エリア画像全体の画像領域が近距離の場合より大きくなるとともに、コード画像のサイズは実際のサイズより小さいサイズとなる。また、コードまでの光ビームの入射距離が近距離の場合よりも伸びるため、コード画像及び光ビームの走査ラインはエリア画像Ｂのやや下部に位置する。
【００１８】
遠距離でコードスキャンが行われると、図３（ｂ）に示すようにエリア画像Ｃが得られる。エリア画像Ｃでは、エリア画像全体の画像領域が中距離の場合よりさらに大きくなるとともに、コード画像のサイズは中距離で取り込まれた場合よりもさらに小さいサイズとなる。また、２ＤスキャナＱの画像取込範囲内で１ＤスキャナＰの光ビームが照射される位置が画像取込範囲のかなり下部に位置するため、コード画像及び光ビームの走査ラインはエリア画像Ｃの下端近くに位置する。
【００１９】
すなわち、コードまでの距離に応じて、エリア画像中のコード画像を走査する光ビームの照射位置（走査ラインの位置）が変化する。従って、コード距離と、エリア画像における光ビームの照射位置との相関関係を予め求めてテーブル化しておき、コードスキャン時にエリア画像における光ビームの照射位置を検出することにより、そのテーブルに基づいてコードまでの距離を算出することができる。
【００２０】
図４を参照してコード距離と、エリア画像における光ビームの照射位置との相関関係の求め方について説明する。
図４（ａ）は、図３（ａ）におけるコード読取装置１０のコードスキャンの様子を模式化した図であり、図４（ｂ）はそのコードスキャンの際に２ＤスキャナＱにより取り込まれたエリア画像を示す図である。
【００２１】
図４（ａ）に示すように、画像取込範囲の中心軸（以下、単に中心軸という。）と画像取込範囲の外郭線との角度をθ、光ビームの走査面と中心軸との交差角をφ、コード読取装置１０から光ビームの走査面と中心軸との交差点までの距離をｋ、コード距離をｄとし、図４（ｂ）に示すように、取り込まれたエリア画像の上端から下端までの距離をｚ、エリア画像の上端から光ビームの照射位置までの距離をｙ、エリア画像の上端から光ビームの照射位置までの割合をｘとすると、光ビームの照射位置の割合ｘは下記の式１により求められる。
【００２２】
【数１】
2005063142.tif 000003
【００２３】
さらに、上記式１において、コード距離ｄについて求めると、下記の式２が得られる。
【００２４】
【数２】
2005063142.tif 000004
【００２５】
この式２を用いてコード距離ｄと光ビームの照射位置ｙとの相関関係を求める。
まず、エリア画像を画像解析して、光ビームの照射位置ｙ、エリア画像の上端から下端までの距離ｚを計測する。そして、計測されたｙ、ｚの値から光ビームの照射位置の割合ｘを算出し、式２に代入すると、距離ｋ、角度θ及び角度φは設定により一意に決まる定数であるので、コード距離ｄが算出される。次いで、割合ｘに対してコード距離ｄをプロットすると、図５に示すような相関関係が得られる。図５に示すように、光ビームの照射位置の割合ｘを右縦軸に、コード距離ｄを横軸にとると、上記式２を示す曲線Ｍが得られる。このとき、割合ｘは、ｘ＝ｙ／ｚで示されるので、予め測定によりコード距離ｄと、その距離ｄで取り込まれたエリア画像の上端から下端までの距離ｚとの相関関係を求めておくことにより、コード距離ｄと光ビームの照射位置までの距離ｙとの相関関係を導き出すことができる。
【００２６】
図５に、エリア画像の上端からの距離を左縦軸に、コード距離ｄを横軸にとり、コード距離ｄに対するエリア画像の上端から下端までの距離ｚ、つまりエリア画像の取込範囲の変化を直線Ｌで示し、コード距離ｄに対するエリア画像の上端から光ビームの照射位置までの距離ｙの変化を直線Ｎで示す。
【００２７】
そして、この直線Ｎで示されるコード距離ｄと光ビームの照射位置ｙとの相関関係をテーブル化し、距離テーブルとしてＲＯＭ１６に格納しておく。以後、コードスキャン時にコード距離ｄを算出する際には、ＣＰＵ１１は、まずエリア画像を画像解析してエリア画像における光ビームの照射位置ｙを検出し、当該検出された照射位置ｙに応じたコード距離ｄの値をＲＯＭ１６に格納された距離テーブルから読み出す。すなわち、ＣＰＵ１１により算出手段を実現することが可能となる。
【００２８】
このようにして、コードスキャン時にコード距離ｄを算出すると、ＣＰＵ１１は、算出されたコード距離ｄに応じて１ＤスキャナＰのコード読取に係る各種パラメータの変更設定を行い、変更されたパラメータで読み取られたライン画像に含まれるコード画像を画像解析してデコードを行う。すなわち、ＣＰＵ１１により設定手段を実現することができる。
【００２９】
ＲＡＭ１２は、ＣＰＵ１１によって実行される各種プログラム及びこれらプログラムに係るデータを一時的に記憶するワークエリアを形成する。
【００３０】
入力部１３は、数字キー、文字キー、各種機能キー等のキー群２ａを備えて構成され、操作されたキーに対応する操作信号をＣＰＵ１１に出力する。なお、表示部１３と一体型のタッチパネルを備える構成としてもよい。
【００３１】
表示部１４は、ＬＣＤ（Liquid Crystal Display）等の表示ディスプレイ１ａを備えて構成され、各種操作画面やＣＰＵ１１による処理結果等の各種表示情報を表示する。
【００３２】
通信部１５は、ネットワークインターフェイスカードやモデム等の通信用インターフェイスを備えて構成され、通信ネットワーク上の外部機器と相互に情報の送受信を行う。
【００３３】
ＲＯＭ１６は、半導体メモリ等から構成され、基本動作プログラムの他、第１のコード読取処理プログラム及び各プログラムで処理されたデータ等を記憶する。
【００３４】
また、ＲＯＭ１６は、エリア画像における１ＤスキャナＰの光ビームの照射位置ｙと、読取対象コードまでの距離ｄとの相関関係をテーブル化した距離テーブルを格納する。
【００３５】
１Ｄスキャナコントローラ１７は、１ＤスキャナＰに制御信号を出力して光ビームの照射タイミング、走査幅等の読取動作を制御する。また、内部に１ＤスキャナＰにより読み取られたライン画像の画像データを一時的に保存するバッファメモリを有し、画像データのデコード時には、当該バッファメモリに一時保存された画像データをＣＰＵ１１に出力する。さらに、１Ｄスキャナコントローラ１７は、ＣＰＵ１１からの指示に従って、１ＤスキャナＰにおける信号の増幅率、振幅スピード、レーザ光の走査幅等のコード読取に係る各種パラメータを変更設定する。
【００３６】
１ＤスキャナＰは、読取対象のコードに対し、レーザ光をライン状に照射してそのライン画像を光学的に読み取るスキャナである。
図６に、１ＤスキャナＰの内部構成を示す。
図６に示すように、１ＤスキャナＰは、レーザダイオード等からなるレーザ発光部ｐ１、ミラーｐ２、レーザ光を読取対象のコードに対してライン状に走査させるためのレーザ振動部（振動ミラー）ｐ３、ライン状にＣＣＤ（Charge Coupled Device）等の光電変換素子が１列に配置されたラインセンサからなるレーザ受光部ｐ４、信号処理部ｐ５から構成され、信号処理部ｐ５は、増幅部ｐ５１、二値化部ｐ５２から構成される。
【００３７】
コードスキャン時には、まずレーザ発光部ｐ１によりレーザ光が発光され、当該レーザ光がミラーｐ２により反射されてレーザ振動部ｐ３の反射面に入射する。レーザ振動部ｐ３は、所定範囲内の回転角度で反復回転を繰り返し、当該レーザ振動部ｐ３の反射面に入射したレーザ光はコードが印刷された用紙上に照射され、レーザ振動部ｐ３の反復回転によりライン状に走査される。
【００３８】
次いで、用紙上に照射されたレーザ光の反射光がレーザ受光部ｐ４において受光されると、光電変換によりライン画像の画像信号が生成されて当該画像信号が信号処理部ｐ５に入力される。信号処理部ｐ５では、増幅部５１において画像信号が増幅された後、二値化部ｐ５２により二値化が行われてデジタル画像データに変換される。二値化されたデジタル画像データは、１Ｄスキャナコントローラ１７に出力される。
【００３９】
２Ｄスキャナコントローラ１８は、２ＤスキャナＱに制御信号を出力してエリア画像の読取タイミング、露光時間等の読取動作を制御する。また、内部に２ＤスキャナＱにより読み取られたエリア画像の画像データを一時的に保存するバッファメモリを有し、デコード時には当該バッファメモリに一時保存された画像データをＣＰＵ１１に出力する。さらに、２ＤスキャナＱにおける画像取込時の露光スピード、二値化時のスレッシェルドレベル等のパラメータの変更設定を行う。
【００４０】
２ＤスキャナＱは、一定領域を撮像してそのエリア画像を読み取るスキャナであり、被写体からの光像を結像する光学レンズ群、ＣＭＯＳ，ＣＣＤ等の光電変換素子がマトリックス上に配置されたエリアセンサ、増幅部、二値化部等を有する信号処理部等から構成される。
【００４１】
コードスキャン時には、光学レンズ群を介して光像がエリアセンサに入光すると、エリアセンサにおいて光電変換が行われ、エリア画像の画像信号が生成される。エリア画像の画像信号は、信号処理部において増幅部により増幅された後、二値化部により二値化が行われてデジタル画像データに変換される。二値化されたデジタル画像データは、２Ｄスキャナコントローラ１８に出力される。
【００４２】
以下、第１の実施の形態における動作を説明する。
図７は、第１の実施の形態におけるコード読取装置１０により実行される第１のコード読取処理を説明するフローチャートである。このコード読取処理は、〈１〉〜〈３〉の３段階で実行される。
【００４３】
図７に示すコード読取処理では、ユーザが入力部１４に設けられたトリガキー等を操作することによって、まずＣＰＵ１１からスキャン開始の指示情報が１Ｄスキャナコントローラ１７、２Ｄスキャナコントローラ１８に出力される（ステップＳ１）。指示情報を受けた１Ｄスキャナコントローラ１７では、１ＤスキャナＰの起動制御が行われ（ステップＳ２）、１ＤスキャナＰによりレーザ光が発光されてその光ビームが照射される（ステップＳ３）。一方、スキャン開始の指示情報を受けた２Ｄスキャナコントローラ１８においても２ＤスキャナＱの起動制御が行われ（ステップＳ４）、エリア画像の取り込みが開始される（ステップＳ５）。
【００４４】
１ＤスキャナＰにより光ビームが照射されて読取対象のコードの走査が行われ（ステップＳ６）、１走査分の走査が終了すると（ステップＳ７）、割り込みフラグが生成され、当該割り込みフラグデータがＣＰＵ１１に出力されるとともに、走査により読み取られたライン画像のデータがＤＭＡ（Direct Memory Access）機能によりＲＡＭ１２に転送され（ステップＳ８）、ＲＡＭ１２において保存される（ステップＳ１１）。
【００４５】
２ＤスキャナＱでは、１ＤスキャナＰによるコード走査時と同時にエリア画像の取り込みが行われ（ステップＳ９）、取り込まれたエリア画像のデータがＤＭＡ機能によりＲＡＭ１２に転送され（ステップＳ１０）、ＲＡＭ１２において保存される（ステップＳ１１）。
【００４６】
１ＤスキャナＰ、２ＤスキャナＱによりライン画像又はエリア画像が取り込まれ、その画像データがＲＡＭ１２に記憶されていく過程で、１Ｄスキャナコントローラ１７からの割り込みフラグが発生すると、ＣＰＵ１１では、エリア画像の転送を停止する指示情報が２Ｄスキャナコントローラ１８に出力され、１Ｄスキャナコントローラ１７から転送されたライン画像のデコードが行われる（ステップＳ１２）。
【００４７】
デコードが成功した場合は本処理を終了し、デコードが失敗した場合は、エリア画像の転送を再開する指示情報が２Ｄスキャナコントローラ１８に出力される。そして、１画面分のエリア画像の転送が終了すると、ＣＰＵ１１において、転送されたエリア画像に基づいて読取対象コードまでの距離の算出が行われる（ステップＳ１３）。
【００４８】
読取対象コードまでの距離が算出されると、当該算出された距離に応じて１ＤスキャナＰのパラメータが決定され（ステップＳ１４）、当該決定されたパラメータのデータが１Ｄスキャナコントローラ１７に出力される（ステップＳ１５）。次いで、このパラメータデータは１Ｄスキャナコントローラ１７から１ＤスキャナＰに転送され（ステップＳ１５）、１Ｄスキャナコントローラ１７の制御により、転送されたパラメータデータに基づいて１ＤスキャナＰのパラメータが変更設定される（ステップＳ１６）。
【００４９】
例えば、コードまでの距離が遠距離である場合は、コードが画像取込範囲に含まれるように光ビームの走査幅を広げる、或いは振幅スピードを上げるようにパラメータを変更したり、読み取られたコード信号が小さいと推測されるので増幅率を大きくするようパラメータを変更する。また、近距離である場合には、コードが画像取込範囲に入りやすくなるので、光ビームの振幅スピードを下げるようにパラメータを変更する。
【００５０】
パラメータ変更後は、〈１〉段階の処理に戻る、つまりステップＳ１から処理が実行され、変更されたパラメータで再度１ＤスキャナＰ及び２ＤスキャナＱによるコードスキャンが行われて、１次元コードのデコードが成功するまで１ＤスキャナＰのパラメータの変更が繰り返される。
【００５１】
以上のように、第１の実施の形態では、コード読取装置１０に、１ＤスキャナＰと２ＤスキャナＱを搭載し、予めコード距離と、２ＤスキャナＱにより読み取られたエリア画像における１Ｄスキャナからの光ビームの照射位置との相関関係をテーブル化して備えておくことにより、コードスキャン時に得られたエリア画像を画像解析して検出された光ビームの照射位置から読取対象のコードまでの距離を容易に算出することができる。そして、算出された距離に応じて最適なコード読取を行えるように１ＤスキャナＰのコードスキャン時の各種パラメータを変更設定するので、読取性能を向上させるとともに正確なデコードを行うことが可能となる。
【００５２】
また、２ＤスキャナＱを同時搭載しているので、１次元コードだけではなく、２次元コードも読み取ることができ、利便性が良い。
【００５３】
〈第２の実施の形態〉
第２の実施の形態では、コード読取装置に１Ｄスキャナと２Ｄスキャナを備え、この１Ｄスキャナ及び２Ｄスキャナにより同時に２次元コードのコードスキャンを行い、コードスキャン時に２Ｄスキャナにより取り込まれたエリア画像における１Ｄスキャナにより走査された光ビームの照射位置に基づいて、２次元コードまでの距離を算出し、当該算出された距離に応じて２Ｄスキャナのコード読取に係る各種パラメータを変更設定する例を説明する。
【００５４】
まず、第２の実施の形態におけるコード読取装置の構成について説明するが、第２の実施の形態のコード読取装置は、第１の実施の形態におけるコード読取装置と同一構成であるので、同一構成の各部には同一の符号を付してその図示を省略し、異なる機能部分についてのみ説明することとする。すなわち、第２の実施の形態におけるコード読取装置１０は、ＣＰＵ１１、ＲＡＭ１２、表示部１３、入力部１４、通信部１５、ＲＯＭ１６、１Ｄスキャナコントローラ１７、１ＤスキャナＰ、２Ｄスキャナコントローラ１８、２ＤスキャナＱを備えて構成される。
【００５５】
第２の実施の形態において、ＣＰＵ１１は、ＲＯＭ１６に格納されている基本動作プログラムの他、本発明に係る第２のコード読取処理プログラム（図９参照）等の各プログラムをＲＡＭ１２に展開し、当該プログラムとの協働により処理動作を統括的に制御する。
【００５６】
ＣＰＵ１１は、第２のコード読取処理において、１ＤスキャナＰ及び２ＤスキャナＱに同時にコードスキャンさせ、このコードスキャン時に２ＤスキャナＱにより読み取られたエリア画像における１ＤスキャナＰの光ビームの照射位置を検出する。そして、検出された光ビームの照射位置に基づいて、コード読取装置１０から読取対象の２次元コードまでの距離を算出する。
【００５７】
以下、コード距離の算出方法について説明する。
図８（ａ）は、コードスキャン時の様子を示す図であり、図８（ｂ）は、コード読取装置１０から近距離、中距離、遠距離の各コード距離でコードスキャンが行われた際に２ＤスキャナＱにより取り込まれたエリア画像Ａ〜Ｃを示す図である。
【００５８】
近距離でコードスキャンが行われると、図８（ｂ）に示すようにエリア画像Ａが得られる。エリア画像Ａでは、コード距離が近距離で画像取込範囲が小さいため、エリア画像全体の画像領域が小さくなるとともに、コード画像のサイズは実際のサイズに近いサイズで現れることとなる。また、コードまでの光ビームの入射距離が浅いため、２次元コードの画像はエリア画像Ａの上部に位置することとなる。
【００５９】
中距離でコードスキャンが行われると、図８（ｂ）に示すようなエリア画像Ｂが得られる。エリア画像Ｂでは、近距離の場合よりは画像取込範囲が広がるため、エリア画像全体の画像領域は近距離の場合より大きくなるとともに、コード画像のサイズは実際のサイズより小さめに現れることとなる。また、コードまでの光ビームの入射距離が近距離の場合よりも伸びるため２次元コードの画像はエリア画像Ｂの下部に位置することとなる。
【００６０】
遠距離でコードスキャンが行われると、図８（ｂ）に示すようなエリア画像Ｃが得られる。エリア画像Ｃでは画像領域が中距離の場合よりさらに大きくなるとともに、コード画像のサイズは中距離の場合のサイズよりさらに小さく現れる。また、２ＤスキャナＱの画像取込範囲内で１ＤスキャナＰの光ビームが照射される位置が画像取込範囲のかなり下部に位置するため、２次元コードの画像はエリア画像Ｃの下端近くに位置することとなる。
【００６１】
すなわち、コード距離に応じて、２ＤスキャナＱのエリア画像においてコード上を走査する光ビームの照射位置（走査ラインの位置）が変化することになる。従って、コード距離と、エリア画像における光ビームの照射位置との相関関係を予め求めてテーブル化しておき、コードスキャン時にエリア画像における光ビームの照射位置を検出することにより、そのテーブルに基づいてコード距離を算出することができる。
【００６２】
エリア画像における光ビームの照射位置との相関関係の求め方は、第１の実施の形態において図４及び図５を参照して説明した方法と同様であるので、その説明は省略する。すなわち、式１及び式２を用いてコード距離ｄと、エリア画像における光ビームの照射位置の割合ｘとの相関関係を求め、その相関関係からコードまでの距離ｄと、エリア画像における光ビームの照射位置ｙとの相関関係を求める。求められた相関関係は、テーブル化され、距離テーブルとしてＲＯＭ１６に格納される。
【００６３】
ＣＰＵ１１は、コードスキャン時に２次元スキャナＱにより取り込まれたエリア画像を画像解析してエリア画像における光ビームの照射位置を検出し、当該検出された照射位置に応じたコード距離の値をＲＯＭ１６に格納された距離テーブルから読み出す。すなわち、ＣＰＵ１１により算出手段を実現することが可能となる。
【００６４】
そして、コード距離ｄが算出されると、ＣＰＵ１１は、算出されたコード距離ｄに応じて２ＤスキャナＱのコード読取に係る各種パラメータの変更設定を行い、変更されたパラメータで読み取られたエリア画像中のコード画像のデコードを行う。すなわち、ＣＰＵ１１により設定手段を実現することができる。
【００６５】
ＲＯＭ１６は、第２のコード読取処理プログラムを記憶する。また、コード距離と、エリア画像における１ＤスキャナＰの光ビームの照射位置との相関関係をテーブル化した距離テーブルを記憶する。
【００６６】
次に、第２の実施の形態における動作を説明する。
図９は、第２の実施の形態におけるコード読取装置１０により実行される第２のコード読取処理を説明するフローチャートである。この第２のコード読取処理は、〈１〉〜〈５〉の５段階で実行される。
【００６７】
図９に示す第２のコード読取処理では、ユーザが入力部１４に設けられたトリガキー等を操作することによって、まずＣＰＵ１１からスキャン開始の指示情報が１Ｄスキャナコントローラ１７、２Ｄスキャナコントローラ１８に出力される（ステップＴ１）。指示情報を受けた１Ｄスキャナコントローラ１７では、１ＤスキャナＰの起動制御が行われ（ステップＴ２）、１ＤスキャナＰによりレーザ光が発光されてその光ビームが照射される（ステップＴ３）。一方、スキャン開始の指示情報を受けた２Ｄスキャナコントローラ１８においても２ＤスキャナＱの起動制御が行われ（ステップＴ４）、エリア画像の取り込みが開始される（ステップＴ５）。
【００６８】
１ＤスキャナＰにより光ビームが照射されて読取対象のコードの走査が行われ（ステップＴ６）、１走査分の走査が終了すると（ステップＴ７）、割り込みフラグが生成され、当該割り込みフラグデータがＣＰＵ１１に出力されるとともに、走査により読み取られたライン画像のデータがＤＭＡ機能によりＲＡＭ１２に転送され（ステップＴ８）、ＲＡＭ１２において保存される（ステップＴ１１）。
【００６９】
２ＤスキャナＱでは、１ＤスキャナＰによるコード走査時と同時にエリア画像の取り込みが行われ（ステップＴ９）、取り込まれたエリア画像のデータがＤＭＡ機能によりＲＡＭ１２に転送され（ステップＴ１０）、ＲＡＭ１２において保存される（ステップＴ１１）。
【００７０】
１ＤスキャナＰ、２ＤスキャナＱによりライン画像又はエリア画像が取り込まれ、その画像データがＲＡＭ１２に記憶されていく過程で、１Ｄスキャナコントローラ１７からの割り込みフラグが発生すると、ＣＰＵ１１では、エリア画像の転送を停止する指示情報が２Ｄスキャナコントローラ１８に出力され、１Ｄスキャナコントローラ１７から転送されたライン画像のデコードが行われる（ステップＴ１２）。
【００７１】
デコードが成功した場合は本処理を終了し、デコードが失敗した場合は、エリア画像の転送を再開する指示情報が２Ｄスキャナコントローラ１８に出力される。そして、１画面分のエリア画像の転送が終了すると、ＣＰＵ１１において、転送されたエリア画像に基づいて読取対象コードまでの距離の算出が行われる（ステップＴ１３）。
【００７２】
読取対象コードまでの距離が算出されると、当該算出された距離に応じて１ＤスキャナＰ及び２ＤスキャナＱのパラメータが決定され、当該決定されたパラメータのデータが１Ｄスキャナコントローラ１７及び２Ｄスキャナコントローラ１８のそれぞれに出力される（ステップＴ１４）。１Ｄスキャナコントローラ１７に出力されたパラメータデータは、１ＤスキャナＰに転送され（ステップＴ１５）、１Ｄスキャナコントローラ１７の制御により、転送されたパラメータデータに基づいて１ＤスキャナＰのパラメータが変更設定される（ステップＴ１６）。
【００７３】
一方、２Ｄスキャナコントローラ１８に出力されたパラメータデータは、２ＤスキャナＱに転送され（ステップＴ１７）、２Ｄスキャナコントローラ１８の制御により、転送されたパラメータデータに基づいて２ＤスキャナＱのパラメータが変更設定される。例えば、読取対象のコードまでの距離が遠距離である場合は、画像取込時の露光時間が長時間になるように露光スピードのパラメータを変更設定する。
【００７４】
パラメータの変更設定が終了すると、ＣＰＵ１１から１ＤスキャナＰによるコードスキャンを停止する指示情報が１Ｄスキャナコントローラ１７に出力され（ステップＴ１９）、１Ｄスキャナコントローラ１７の制御により１ＤスキャナＰの動作が停止されて（ステップＴ２０）、レーザ光が消灯される（ステップＴ２１）。
【００７５】
１ＤスキャナＰのスキャン動作が停止されると、エリア画像の取り込み開始の指示情報がＣＰＵ１１から２Ｄスキャナコントローラ１８に出力され、２Ｄスキャナコントローラ１８の制御により２ＤスキャナＱによるエリア画像の取り込みが行われる（ステップＴ２２）。取り込まれたエリア画像はＤＭＡ機能により２Ｄスキャナコントローラ１８からＲＡＭ１２に出力され、その画像データがＲＡＭ１２に保存される（ステップＴ２４）。
【００７６】
ＲＡＭ１２にエリア画像の画像データが保存されると、ＣＰＵ１１では当該画像データの画像解析が行われ、２次元コード画像の検出が行われる。そして、検出された２次元コード画像のデコードが行われる（ステップＴ２５）。ＣＰＵ１１においてデコードに成功した場合は本処理を終了し、デコードに失敗した場合は、１ＤスキャナＰによるスキャンを開始する指示情報がＣＰＵ１１から１Ｄスキャナコントローラ１７に出力され（ステップＴ２６）、１Ｄスキャナコントローラ１７の制御により、１ＤスキャナＰが起動されて（ステップＴ２７）、１ＤスキャナＰからレーザ光の発光が行われる（ステップＴ２８）。
【００７７】
１ＤスキャナＰによるスキャン開始後は、〈２〉段階の処理に戻る、つまりステップＴ１１の処理から実行され、再度１ＤスキャナＰ及び２ＤスキャナＱによるコードスキャンが行われて、２次元コードのデコードが成功するまで２ＤスキャナＱのパラメータの変更が繰り返される。
【００７８】
以上のように、第２の実施の形態では、コード読取装置１０に、１ＤスキャナＰと２ＤスキャナＱを搭載し、予め読取対象のコードまでの距離と、２ＤスキャナＱにより読み取られたエリア画像における１Ｄスキャナからの光ビームの照射位置との相関関係をテーブル化して備えておくことにより、コードスキャン時に得られたエリア画像を画像解析して検出された光ビームの照射位置から読取対象のコードまでの距離を容易に算出することができる。そして、算出された距離に応じて最適なコード読取を行えるように２ＤスキャナＱのコードスキャン時の各種パラメータを変更設定するので、読取性能を向上させるとともに正確なデコードを行うことが可能となる。
【００７９】
また、１ＤスキャナＱを同時搭載しているので、２次元コードだけではなく、１次元コードも読み取ることができ、利便性が良い。
【００８０】
〈第３の実施の形態〉
第３の実施の形態では、コード読取装置に１Ｄスキャナと２Ｄスキャナを備え、この１Ｄスキャナ及び２Ｄスキャナにより同時にコードスキャンを行い、このとき２Ｄスキャナにより取り込まれたエリア画像における１次元スキャナの光ビームの照射位置に基づいて、読取対象のコードまでの距離を算出し、当該算出された距離に応じて１Ｄスキャナ又は２Ｄスキャナのコード読取に係るパラメータを変更設定するとともに、エリア画像における光ビームの照射位置の傾斜角度からピッチ方向（光ビームの走査方向）におけるコードの傾斜角度を算出し、当該算出された傾斜角度に応じてコード画像の画像補正を行う例を説明する。
【００８１】
まず、第３の実施の形態におけるコード読取装置の構成について説明するが、第３の実施の形態のコード読取装置は、第１の実施の形態におけるコード読取装置と同一構成であるので、同一構成の各部には同一の符号を付してその図示を省略し、異なる機能部分についてのみ説明することとする。すなわち、第３の実施の形態におけるコード読取装置１０は、ＣＰＵ１１、ＲＡＭ１２、表示部１３、入力部１４、通信部１５、ＲＯＭ１６、１Ｄスキャナコントローラ１７、１ＤスキャナＰ、２Ｄスキャナコントローラ１８、２ＤスキャナＱを備えて構成される。
【００８２】
第３の実施の形態において、ＣＰＵ１１は、ＲＯＭ１６に格納されている基本動作プログラムの他、本発明に係る第３のコード読取処理プログラム（図１４参照）等の各プログラムをＲＡＭ１２に展開し、当該プログラムとの協働により処理動作を統括的に制御する。
【００８３】
ＣＰＵ１１は、第３のコード読取処理において、２ＤスキャナＱにより読み取られたエリア画像における１ＤスキャナＰの光ビームの照射位置を検出し、当該検出された光ビームの照射位置に基づいて、コード読取装置１０から読取対象コードまでの距離を算出する。
【００８４】
以下、コード距離の算出方法について説明する。
図１０（ａ）は、コードスキャン時の様子を示す図であり、図１０（ｂ）は、コード読取装置１０から近距離、中距離、遠距離の各コード距離でコードスキャンが行われた際に２ＤスキャナＱにより取り込まれたエリア画像Ａ〜Ｃを示す図である。２ＤスキャナＱの画像取込時には１ＤスキャナＰによるスキャンも行われているので、読み取られたエリア画像には、１ＤスキャナＰから走査された光ビームのラインが現れる。
【００８５】
なお、第３の実施の形態では、読取対象のコードが２次元コードである場合を例に説明するが、コードが１次元コードであっても同様の処理が行われることとする。
【００８６】
近距離でコードスキャンが行われると、図１０（ｂ）に示すようなエリア画像Ａが得られる。エリア画像Ａでは、コード距離が近距離で画像取込範囲が小さいため、エリア画像全体の画像領域が小さくなるとともに、コード画像のサイズは実際のサイズに近いサイズで現れることとなる。また、コードまでの光ビームの入射距離が浅いため、２次元コードの画像はエリア画像Ａの上部に位置することとなる。
【００８７】
中距離でコードスキャンが行われると、図１０（ｂ）に示すようなエリア画像Ｂが得られる。エリア画像Ｂでは、近距離よりは画像取込範囲が広がるため、エリア画像全体の画像領域が近距離の場合より大きくなるとともに、コード画像のサイズは実際のサイズより小さめに現れることとなる。また、コードまでの光ビームの入射距離が近距離の場合よりも伸びるため２次元コードの画像はエリア画像Ｂの下部に位置することとなる。
【００８８】
遠距離でコードスキャンが行われると、図１０（ｂ）に示すようなエリア画像Ｃが得られる。エリア画像Ｃでは、エリア画像全体の画像領域が中距離の場合よりさらに大きくなるとともに、コード画像のサイズは中距離の場合のサイズよりさらに小さく現れる。また、２ＤスキャナＱの画像取込範囲内で１ＤスキャナＰの光ビームが照射される位置が画像取込範囲のかなり下部に位置するため、２次元コードの画像はエリア画像Ｃの下端近くに位置することとなる。
【００８９】
すなわち、コードとコード読取装置１０との距離に応じて、２ＤスキャナＱのエリア画像においてコード上を走査する光ビームの照射位置（走査ラインの位置）が変化することになる。従って、予めコード距離と、エリア画像における光ビームの照射位置との相関関係を求めてテーブル化しておき、コードスキャン時にエリア画像における光ビームの照射位置を検出することにより、そのテーブルに基づいてコードまでの距離を算出することができる。
【００９０】
エリア画像における光ビームの照射位置との相関関係の求め方は、第１の実施の形態において図４及び図５を参照して説明した方法と同様であるので、ここでは説明を省略する。すなわち、式１及び式２を用いて読取対象のコードまでの距離ｄと、エリア画像における光ビームの照射位置の割合ｘとの相関関係を求め、その相関関係からコードまでの距離ｄと、エリア画像における光ビームの照射位置ｙとの相関関係を求める。求められた相関関係は、テーブル化されて距離テーブルとしてＲＯＭ１６に格納される。
【００９１】
ＣＰＵ１１は、コードスキャン時に２ＤスキャナＱにより取り込まれたエリア画像を画像解析してエリア画像における光ビームの照射位置を検出し、当該検出された照射位置に応じたコード距離の値をＲＯＭ１６に格納された距離テーブルから読み出す。すなわち、ＣＰＵ１１により算出手段を実現することが可能となる。
【００９２】
そして、コード距離が算出されると、ＣＰＵ１１は、算出されたコード距離に応じて１ＤスキャナＰ又は２ＤスキャナＱのコード読取に係る各種パラメータの変更設定を行う。すなわち、ＣＰＵ１１により設定手段を実現することができる。
【００９３】
また、ＣＰＵ１１は、エリア画像において検出された１ＤスキャナＰの光ビームの照射位置に基づいて、光ビームの走査方向（これをピッチ方向という。）における読取対象コードの傾斜を検出し、その傾斜角度（以下、これをピッチ角度という。）を算出する。
【００９４】
例えば、図１０（ａ）において、コード読取装置１０から中距離の位置でコードスキャンされた際に、読取対象のコードがピッチ方向に対して左側又は右側に傾斜した状態でコードスキャンが行われると、図１０（ｃ）に示すように、傾斜によりコード画像が歪んだエリア画像Ｂ−１、Ｂ−２が得られる。
【００９５】
図１０（ｃ）に示すエリア画像Ｂ−１は、コードがピッチ方向右側に傾斜した状態で取り込まれた画像である。コード読取装置１０からの距離はエリア画像の右側がその左側よりも遠距離となるので、エリア画像Ｂ−１では光ビームの走査ラインが右肩下がりで現れるとともに、コード画像も歪み右にいくほど小さくなる。一方、エリア画像Ｂ−２は、コードがピッチ方向左側に傾斜した状態で取り込まれた画像であり、エリア画像の左側がその右側よりも遠距離となるので、１ＤスキャナＰの光ビームの走査ラインが左肩下がりで現れるとともに、コード画像も左にいくほど小さくなって歪むこととなる。
【００９６】
このように、傾斜した状態でコードスキャンが行われた場合のピッチ角度の算出方法について図１１及び図１２を参照して説明する。
図１１は、図１０（ａ）に示すコードスキャンの様子を図式化した図である。図１１（ａ）は光ビームの走査面をその側面から見た図であり、図１１（ｂ）はその光ビームの走査面を上から見た図である。また、図１２は、そのコードスキャン時に２ＤスキャナＱにより取り込まれたエリア画像を示す図である。
【００９７】
図１１（ａ）、（ｂ）において、エリア画像の取込中心軸とその画像取込範囲の外郭線との角度をθ、光ビームの走査面と中心軸との交差点における交差角をφ、その交差点までの距離をｋ、ピッチ角度をδ、コード読取装置１０からエリア画像の左端までの距離をｄ１、右端までの距離をｄ２とする。また、図１２において、エリア画像の上端から下端までの距離をｚ、左端から右端までの距離をｗ、エリア画像の左端と光ビームの走査ラインとの交差点を点Ｌ、エリア画像の右端部と光ビームの走査ラインとの交差点を点Ｒとする。
【００９８】
ここで、エリア画像の上端から点Ｌまでの距離をｙ１、上端から点Ｒまでの距離をｙ２、点Ｌにおいて光ビームの照射位置が占める割合ｘ１、点Ｒにおいて占める割合ｘ２とすると、割合ｘ１、ｘ２は以下の式３、式４により求められる。
ｘ１＝ｙ１／ｚ・・・（３）
ｘ２＝ｙ２／ｚ・・・（４）
【００９９】
さらに、コード距離ｄ１、ｄ２は、第１の実施の形態で示した式１においてコード距離ｄにｄ１、ｄ２を代入することにより、以下の式５、式６に示すように求められる。
【数３】
2005063142.tif 000005
【０１００】
エリア画像における光ビームの照射位置までの距離ｙ１、ｙ２はコードのピッチ角度δに応じて変化する、つまりピッチ角度δに応じてエリア画像における光ビームの走査ラインの傾斜角度αが変化することになるので、予めピッチ角度δと、エリア画像における光ビームの走査ラインの傾斜角度αとの相関関係を求めてテーブル化しておき、コードスキャン時に、エリア画像を画像解析して光ビームの照射位置を検出することにより、そのテーブルに基づいてピッチ角度を算出することができる。
【０１０１】
光ビームの走査ラインの傾斜角度αは、光ビームの照射位置ｙ１、ｙ２から次の式７により求められる。
【０１０２】
【数４】
2005063142.tif 000006
【０１０３】
また、コードのピッチ角度δは、次の式８により求めることができる。
【０１０４】
【数５】
2005063142.tif 000007
【０１０５】
これらの式７、８を用いて傾斜角度αとピッチ角度δの相関関係を求める。
まず、エリア画像を画像解析して、光ビームの照射位置ｙ１、ｙ２、エリア画像の左端から右端までの距離ｗ、上端から下端までの距離ｚを検出する。そして、検出されたｙ１、ｙ２、ｗの値を上記式７に代入して光ビームの傾斜角度αを算出する。次に、ｙ１、ｙ２、ｚの値を式５、式６に代入してコード距離ｄ１、ｄ２を算出し、当該算出されたコード距離ｄ１、ｄ２を式８に代入してピッチ角度δを算出する。このようにして算出されたピッチ角度δに対する光ビームの傾斜角度αをプロットすると、図１３に示すような相関関係が得られる。図１３に示すように、ピッチ角度δを横軸に、傾斜角度αを縦軸にとると、曲線Ｊが得られる。
【０１０６】
そして、この曲線Ｊで示される相関関係をテーブル化してピッチ角度テーブルとしてＲＯＭ１６に格納しておく。ＣＰＵ１１は、ピッチ角度を算出する際には、まずエリア画像を画像解析してエリア画像における光ビームの照射位置ｙ１、ｙ２及びエリア画像の左端から右端までの距離ｗを検出し、当該検出されたｙ１、ｙ２、ｗから光ビームの走査ラインの傾斜角度αを算出する。そして、算出された傾斜角度αに応じたピッチ角度δの値をＲＯＭ１６に格納されたピッチ角度テーブルから読み出す。
【０１０７】
ピッチ角度δが算出されると、ＣＰＵ１１は、当該ピッチ角度δ分の傾斜により歪んだエリア画像中のコード画像を、ピッチ角度δに応じて座標変換により画像補正する。そして、画像補正されたコード画像を画像解析してデコードを行う。
【０１０８】
なお、ピッチ方向にコードが傾斜している場合、エリア画像の右側と左側ではコード距離が異なってくる。従って、ピッチ方向にコードが傾斜している場合にコード距離を算出する際には、光ビームの照射位置ｙ１、ｙ２との平均値ｙａｖを算出して、当該平均値ｙａｖに対応するコード距離の値を距離テーブルから読み出すこととしてもよいし、ｙ１、ｙ２の何れか一方に対応するコード距離の値を読み出すこととしてもよい。
【０１０９】
ＲＯＭ１６は、第３のコード読取処理プログラムを記憶する、また、コード距離と、エリア画像における光ビームの照射位置との相関関係を示す距離テーブルを格納するとともに、読取対象のコードのピッチ角度と、エリア画像における光ビームの照射位置の傾斜角度との相関関係を示すピッチ角度テーブルを格納する。
【０１１０】
次に、第３の実施の形態における動作を説明する。
図１４は、第３の実施の形態におけるコード読取装置１０により実行される第３のコード読取処理を説明するフローチャートである。この第３のコード読取処理は、〈１〉〜〈５〉の５段階で実行される。
【０１１１】
図１４に示す第３のコード読取処理では、ユーザが入力部１４に設けられたトリガキー等を操作することによって、まずＣＰＵ１１からスキャン開始の指示情報が１Ｄスキャナコントローラ１７、２Ｄスキャナコントローラ１８に出力される（ステップＥ１）。指示情報を受けた１Ｄスキャナコントローラ１７では、１ＤスキャナＰの起動制御が行われ（ステップＥ）、１ＤスキャナＰによりレーザ光が発光されてその光ビームが照射される（ステップＥ３）。一方、スキャン開始の指示情報を受けた２Ｄスキャナコントローラ１８においても２ＤスキャナＱの起動制御が行われ（ステップＥ４）、エリア画像の取り込みが開始される（ステップＥ５）。
【０１１２】
１ＤスキャナＰにより光ビームが照射されて読取対象のコードの走査が行われ（ステップＥ６）、１走査分の走査が終了すると（ステップＥ７）、割り込みフラグが生成され、当該割り込みフラグデータがＣＰＵ１１に出力されるとともに、走査により読み取られたライン画像のデータがＤＭＡ機能によりＲＡＭ１２に転送され（ステップＥ８）、ＲＡＭ１２において保存される（ステップＥ１１）。
【０１１３】
２ＤスキャナＱでは、１ＤスキャナＰによるコード走査時と同時にエリア画像の取り込みが行われ（ステップＥ９）、取り込まれたエリア画像のデータがＤＭＡ機能によりＲＡＭ１２に転送され（ステップＥ１０）、ＲＡＭ１２において保存される（ステップＥ１１）。
【０１１４】
１ＤスキャナＰ、２ＤスキャナＱによりライン画像又はエリア画像が取り込まれ、その画像データがＲＡＭ１２に記憶されていく過程で、１Ｄスキャナコントローラ１７からの割り込みフラグが発生すると、ＣＰＵ１１では、エリア画像の転送を停止する指示情報が２Ｄスキャナコントローラ１８に出力され、１Ｄスキャナコントローラ１７から転送されたライン画像のデコードが行われる（ステップＥ１２）。
【０１１５】
デコードが成功した場合は本処理を終了し、デコードが失敗した場合は、エリア画像の転送を再開する指示情報が２Ｄスキャナコントローラ１８に出力される。そして、１画面分のエリア画像の転送が終了すると、ＣＰＵ１１において、転送されたエリア画像に基づいて読取対象コードまでの距離の算出が行われる（ステップＥ１３）。次いで、エリア画像における光ビームの照射位置の傾斜角度から読取対象コードのピッチ角度が算出される（ステップＥ１４）。
【０１１６】
距離及びピッチ角度が算出されると、算出された距離に応じて１ＤスキャナＰ及び２ＤスキャナＱのパラメータが決定され、当該決定されたパラメータのデータが１Ｄスキャナコントローラ１７及び２Ｄスキャナコントローラ１８のそれぞれに出力される（ステップＥ１５）。１Ｄスキャナコントローラ１７に出力されたパラメータデータは、１ＤスキャナＰに転送され（ステップＥ１６）、１Ｄスキャナコントローラ１７の制御により、転送されたパラメータデータに基づいて１ＤスキャナＰのパラメータが変更設定される（ステップＥ１７）。
【０１１７】
一方、２Ｄスキャナコントローラ１８に出力されたパラメータデータは、２ＤスキャナＱに転送され（ステップＥ１８）、２Ｄスキャナコントローラ１８の制御により、転送されたパラメータデータに基づいて２ＤスキャナＱのパラメータが変更設定される。例えば、読取対象のコードまでの距離が遠距離である場合は、画像取込時の露光時間が長時間になるように露光スピードのパラメータを変更設定する。
【０１１８】
パラメータの変更設定が終了すると、ＣＰＵ１１から１ＤスキャナＰによるコードスキャンを停止する指示情報が１Ｄスキャナコントローラ１７に出力され（ステップＥ２０）、１Ｄスキャナコントローラ１７の制御により１ＤスキャナＰの動作が停止されて（ステップＴ２１）、レーザ光が消灯される（ステップＥ２２）。
【０１１９】
１ＤスキャナＰのスキャン動作が停止されると、エリア画像の取り込み開始の指示情報がＣＰＵ１１から２Ｄスキャナコントローラ１８に出力され、２Ｄスキャナコントローラ１８の制御により２ＤスキャナＱによるエリア画像の取り込みが行われる（ステップＥ２３）。取り込まれたエリア画像はＤＭＡ機能により２Ｄスキャナコントローラ１８からＲＡＭ１２に出力され（ステップＥ２４）、その画像データがＲＡＭ１２に保存される（ステップＥ２５）。
【０１２０】
ＲＡＭ１２にエリア画像の画像データが保存されると、ＣＰＵ１１では当該画像データの画像解析が行われ、２次元コード画像の検出が行われる。そして、ステップＥ１４で算出されたピッチ角度に応じて、検出された２次元コード画像に対し、画像補正が施される（ステップＥ２６）。例えば、２次元コードがピッチ方向に対して右側に傾斜された状態でエリア画像が取り込まれた場合は、そのコード画像は右にいくほど小さくなるように歪んだ画像となるので、そのピッチ角度分だけ傾斜を戻した状態のコード画像となるように座標変換される等して画像補正が行われる。
【０１２１】
画像補正が終了すると、当該補正された２次元コード画像のデコードが行われる（ステップＥ２７）。デコードが成功した場合は本処理を終了し、デコードに失敗した場合は、１ＤスキャナＰによるスキャンを開始する指示情報がＣＰＵ１１から１Ｄスキャナコントローラ１７に出力される（ステップＥ２８）。次いで、１Ｄスキャナコントローラ１７の制御により１ＤスキャナＰが起動されると（ステップＥ２９）、１ＤスキャナＰによりレーザ光が発光されて、コードスキャンが開始される（ステップＥ３０）。
【０１２２】
１ＤスキャナＰによるスキャン開始後は、〈１〉段階の処理に戻る、つまりステップＴ１１から処理が実行され、再度１ＤスキャナＰ及び２ＤスキャナＱによるコードスキャンが行われて、２次元コードのデコードが成功するまで２ＤスキャナＱのパラメータの変更及びコード画像の補正が繰り返される。
【０１２３】
以上のように、第３の実施の形態では、コード読取装置１０に、１ＤスキャナＰと２ＤスキャナＱを搭載し、予め読取対象のコードまでの距離と、２ＤスキャナＱにより読み取られたエリア画像における１Ｄスキャナからの光ビームの照射位置との相関関係をテーブル化して備えておくことにより、コード読取時に２ＤスキャナＱにより得られたエリア画像における１ＤスキャナＰの光ビームの照射位置から読取対象のコードまでの距離を算出することができる。そして、算出された距離に応じて最適なコード読取を行えるように１ＤスキャナＰ及び／又は２ＤスキャナＱのコードスキャン時の各種パラメータを変更設定するので、読取性能を向上させるとともに正確なデコードを行うことが可能となる。
【０１２４】
また、読取対象コードのピッチ角度と、２ＤスキャナＱにより読み取られたエリア画像における光ビームの照射位置の傾斜角度との相関関係をテーブル化して備えておくことにより、コードスキャン時に２ＤスキャナＱから得られたエリア画像における光ビームの照射位置の傾斜角度から読取対象コードのピッチ角度を算出することができる。そして、算出されたピッチ角度に応じて最適なデコードを行えるようにコードスキャンされたコード画像の画像補正を行うので、コードを正確にデコードすることができ、デコード性能を向上させることができる。
【０１２５】
また、１ＤスキャナＰ及び２ＤスキャナＱを同時搭載しているので、１次元コード及び２次元コードの両方を読み取ることができ、利便性が良い。
【０１２６】
〈第４の実施の形態〉
第４の実施の形態では、コード読取装置に２台の１Ｄスキャナと１台の２Ｄスキャナを備え、この１Ｄスキャナ及び２Ｄスキャナにより同時にコードスキャンを行い、２Ｄスキャナにより取り込まれたエリア画像に基づいて算出されたコード距離に応じて、１Ｄスキャナ又は２Ｄスキャナのコード読取に係るパラメータを変更設定するとともに、エリア画像における光ビームの照射位置の傾斜角度からコードのピッチ方向及び当該ピッチ方向と直交するスキュー方向における傾斜角度を算出し、当該算出された傾斜角度に応じてコード画像の画像補正を行う例を説明する。
【０１２７】
まず、構成を説明する。
図１５に、第４の実施の形態におけるコード読取装置２０の外観を示す。図１５（ａ）は、コード読取装置２０を真上から見た図であり、図１５（ｂ）はコード読取装置２０をその側面から見た図である。
【０１２８】
図１５（ａ）、（ｂ）に示すように、コード読取装置２０は、２台の１ＤスキャナＰａ、Ｐｂと、１台の２ＤスキャナＱとを備えて構成される。１ＤスキャナＰａは２ＤスキャナＱの真上に並列して設置され、１ＤスキャナＰｂは２ＤスキャナＱの側面に並列して設置される。
【０１２９】
１ＤスキャナＰａは、図１５（ｂ）に示すように、１ＤスキャナＰａから照射される光ビームＡの走査面と、２ＤスキャナＱの画像取込範囲の中心軸とが一定角度で交差するように設置され、１ＤスキャナＰｂは、図１５（ａ）に示すように、１ＤスキャナＰｂから照射される光ビームＢの走査面と、２ＤスキャナＱの画像取込範囲の中心軸とが一定角度で交差するように、かつ光ビームＢの走査面が１ＤスキャナＰａの光ビームＡの走査面と直交するように設置される。すなわち、図１５（ａ）は、光ビームＡの走査面をその真上から見た図であると同時に、光ビームＢの走査面をその側面から見た図となる。逆に、図１５（ｂ）は、光ビームＡの走査面をその側面から見た図であると同時に、光ビームＢの走査面をその真上から見た図である。
【０１３０】
図１６に、コード読取装置２０の内部構成を示す。なお、第１の実施の形態におけるコード読取装置１０の各部と同一の構成部には、同一の符号を付すこととする。
図１６に示すように、コード読取装置２０は、ＣＰＵ１１、ＲＡＭ１２，表示部１３、入力部１４、通信部１５、ＲＯＭ１６、１Ｄスキャナコントローラ１７ａ、１７ｂ、１ＤスキャナＰａ、Ｐｂ、２Ｄスキャナコントローラ１８、２ＤスキャナＱを備えて構成される。
【０１３１】
第４の実施の形態において、ＣＰＵ１１は、ＲＯＭ１６に格納されている基本動作プログラムの他、本発明に係る第４のコード読取処理プログラム（図１９参照）等の各プログラムをＲＡＭ１２に展開し、当該プログラムとの協働により処理動作を統括的に制御する。
【０１３２】
ＣＰＵ１１は、第４のコード読取処理において、２ＤスキャナＱにより読み取られたエリア画像における１ＤスキャナＰａ、Ｐｂの光ビームの照射位置を検出し、当該検出された光ビームの照射位置に基づいて、コード読取装置２０から読取対象コードまでの距離を算出する。
【０１３３】
以下、コード距離の算出方法について説明する。
図１７（ａ）は、コードスキャンの様子をコード読取装置２０の真上から見た図であり、図１７（ｂ）はコード読取装置２０をその側面から見た図である。また、図１７（ｃ）は、コード読取装置１０から近距離、中距離、遠距離のコード距離でコードスキャンが行われた際に２ＤスキャナＱにより取り込まれたエリア画像Ａ〜Ｃを示す図である。コードスキャンは、１ＤスキャンＰａ、Ｐｂ及び２ＤスキャンＱにより同時に行われるので、取り込まれたエリア画像には、１ＤスキャナＰａ、Ｐｂから照射された光ビームＡ、Ｂの走査ラインが現れる。
【０１３４】
なお、第３の実施の形態では、読取対象のコードが２次元コードである場合を例に説明するが、読取対象のコードが１次元コードであっても同様の処理が行われることとする。
【０１３５】
近距離でコードスキャンが行われると、図１７（ｃ）に示すようなエリア画像Ａが得られる。エリア画像Ａでは、コード距離が近距離で画像取込範囲が小さいため、エリア画像全体の画像領域が小さくなるとともに、コード画像のサイズは実際のサイズに近いサイズで現れることとなる。また、コードまでの光ビームの入射距離が浅いため、２次元コードの画像はエリア画像Ａの上部に位置することとなる。
【０１３６】
中距離でコードスキャンが行われると、図１７（ｃ）に示すようなエリア画像Ｂが得られる。エリア画像Ｂでは、近距離よりは画像取込範囲が広がるため、エリア画像全体の画像領域が近距離の場合より大きくなるとともに、コード画像のサイズは実際のサイズより小さめに現れることとなる。また、コードまでの光ビームの入射距離が近距離の場合よりも伸びるため２次元コードの画像はエリア画像Ｂの下部に位置することとなる。
【０１３７】
遠距離でコードスキャンが行われると、図１７（ｂ）に示すようなエリア画像Ｃが得られる。エリア画像Ｃでは、エリア画像全体の画像領域が中距離の場合よりさらに大きくなるとともに、コード画像のサイズは中距離の場合のサイズよりさらに小さく現れる。また、２ＤスキャナＱの画像取込範囲内で１ＤスキャナＰの光ビームが照射される位置が画像取込範囲のかなり下部に位置するため、２次元コードの画像はエリア画像Ｃの下端近くに位置することとなる。
【０１３８】
すなわち、コードとコード読取装置１０との距離（コード距離）に応じて、２ＤスキャナＱのエリア画像においてコード上を走査する光ビームの照射位置（走査ラインの位置）が変化することになる。従って、コード距離と、エリア画像における光ビームの照射位置との相関関係を予め求めておくことにより、その後エリア画像における光ビームの照射位置を検出することにより、コードまでの距離を算出することができる。
【０１３９】
エリア画像における光ビームの照射位置との相関関係の求め方は、第１の実施の形態において図４及び図５を参照して説明した方法と同様であるので、ここでは説明を省略する。すなわち、式１及び式２を用いて読取対象のコードまでの距離ｄと、エリア画像における光ビームの照射位置の割合ｘとの相関関係を求め、その相関関係からコードまでの距離ｄと、エリア画像における光ビームの照射位置ｙとの相関関係を求める。求められた相関関係は、テーブル化されて距離テーブルとしてＲＯＭ１６に格納される。
【０１４０】
なお、コード距離の算出に用いるエリア画像中の光ビームの照射位置は、１ＤスキャナＰａ又は１ＤスキャナＰｂから照射された光ビームＡ、Ｂのうち、何れの光ビームのものであってもよい。
【０１４１】
ＣＰＵ１１は、コードスキャン時に２次元スキャナＱにより取り込まれたエリア画像を画像解析してエリア画像における光ビームの照射位置を検出し、当該検出された照射位置に応じたコード距離の値をＲＯＭ１６に格納された距離テーブルから読み出す。すなわち、ＣＰＵ１１により算出手段を実現することが可能となる。
【０１４２】
そして、コードスキャン時にコード距離を算出すると、ＣＰＵ１１は、算出されたコード距離に応じて１ＤスキャナＰ又は２ＤスキャナＱのコード読取に係る各種パラメータの変更設定を行う。すなわち、ＣＰＵ１１により設定手段を実現することができる。
【０１４３】
また、ＣＰＵ１１は、１ＤスキャナＰａから照射された光ビームＡの走査方向（以下、これをピッチ方向という。）におけるコードの傾斜を検出し、その傾斜角度（以下、これをピッチ角度という。）を算出する。
【０１４４】
例えば、図１７（ａ）において、コード読取装置１０から中距離の位置でコードスキャンする際に、読取対象のコードがピッチ方向に対して左側又は右側に傾斜した状態でコードスキャンが行われると、図１７（ｄ）に示すように、傾斜によりコード画像が歪み、１ＤスキャナＰａから照射された光ビームの走査ラインが傾斜したエリア画像Ｂ−１、Ｂ−２が得られる。この走査ラインの傾斜角度は、ピッチ角度に応じて変化する。従って、読取対象のコードのピッチ角度と、エリア画像における１ＤスキャナＰａによる光ビーム走査ラインの傾斜角度との相関を予め求めておくことにより、光ビームの傾斜角度が判明すればピッチ角度を算出することができる。
【０１４５】
ピッチ角度と、エリア画像における光ビーム走査ラインの傾斜角度との相関関係の求め方は、図１１（ａ）、（ｂ）及び図１２を参照して第３の実施の形態において説明した方法と同様であるので、ここでは説明を省略する。求められた相関関係はテーブル化されてピッチ角度テーブルとして、ＲＯＭ１６に格納される。ＣＰＵ１１は、デコード時に、算出されたピッチ角度に応じてエリア画像中のコード画像を座標変換により画像補正し、当該画像補正されたコード画像のデコードを行う。
【０１４６】
また、ＣＰＵ１１は、１ＤスキャナＰｂから照射された光ビームＢの走査方向（１ＤスキャナＰａからの光ビームの走査方向をピッチ方向としたとき、１ＤスキャナＰｂからの光ビームの走査方向をスキュー方向という。）におけるコードの傾斜を検出し、その傾斜角度（以下、これをスキュー角度という。）を算出する。
【０１４７】
例えば、図１７（ａ）において、コード読取装置１０から中距離の位置でコードスキャンする際に、読取対象のコードがスキュー方向に傾斜した状態でコードスキャンが行われると、図１７（ｄ）に示すように、傾斜によりコード画像が歪み、１ＤスキャナＰｂから照射された光ビームＢの走査ラインが傾斜したエリア画像Ｂ−３、Ｂ−４が得られる。この走査ラインの傾斜角度は、スキュー角度に応じて変化する。従って、読取対象のコードのスキュー角度と、エリア画像における１ＤスキャナＰｂによる光ビーム走査ラインの傾斜角度との相関を予め求めておくことにより、光ビームの傾斜角度が判明すればスキュー角度を算出することができる。
【０１４８】
スキュー角度とエリア画像における光ビーム走査ラインの傾斜角度との相関関係の求め方は、図１１（ａ）、（ｂ）を参照して説明したピッチ角度の場合と同様であるので、ここでは説明を省略する。すなわち、スキュー方向は、ピッチ方向と直交するので、図１１（ａ）に示す光ビーム走査面を側面から見た図と、図１１（ｂ）に示す光ビーム走査面を上から見た図とにおいて、ピッチ角度δをスキュー角度γに置き換えて、また図１２においても光ビームの走査ラインの傾斜角度αをβに置き換えて、スキュー角度γと、エリア画像における１ＤスキャナＰｂの光ビームの走査ラインの傾斜角度βとの相関関係を求める。
【０１４９】
図１８に、２次元コードのスキュー角度γに対して１ＤスキャナＰｂによる光ビームＢの走査ラインの傾斜角度βをプロットして得られた相関関係を示す。図１８に示すように、コードのスキュー角度γを横軸に、エリア画像における光ビームＢの傾斜角度βを縦軸にとると、曲線Ｅが得られる。この曲線Ｅで示される相関関係をテーブル化し、スキュー角度テーブルとしてＲＯＭ１６に格納しておく。
【０１５０】
ＣＰＵ１１は、コード画像のデコード時に、まずエリア画像を画像解析してエリア画像における光ビームの照射位置及びエリア画像の上端から下端までの距離を検出し、光ビームＢの走査ラインの傾斜角度βを算出する。そして、算出された傾斜角度βに応じたスキュー角度γの値をＲＯＭ１６のスキュー角度テーブルから読み出す。
【０１５１】
スキュー角度γが算出されると、ＣＰＵ１１は、当該スキュー角度γ分の傾斜により歪んだエリア画像中のコード画像を、スキュー角度γに応じて座標変換により画像補正する。そして、画像補正されたコード画像を画像解析してコード画像のデコードを行う。
【０１５２】
ＲＯＭ１６は、読取対象のコードまでの距離と、エリア画像における光ビームの照射位置との相関関係を示す距離テーブルを格納する。また、読取対象のコードのピッチ角度と、エリア画像における光ビームの照射位置の傾斜角度との相関関係を示すピッチ角度テーブル、読取対象のコードのスキュー角度とエリア画像における光るビームの照射位置の傾斜角度との相関関係を示すスキュー角度テーブルを格納する。
【０１５３】
次に、第４の実施の形態における動作を説明する。
図１９は、第４の実施の形態におけるコード読取装置２０により実行される第４のコード読取処理を説明するフローチャートである。
【０１５４】
図１９に示す第３のコード読取処理では、ユーザが入力部１４に設けられたトリガキー等を操作することによって、まずＣＰＵ１１からスキャン開始の指示情報が１Ｄスキャナコントローラ１７ａ、１７ｂ、２Ｄスキャナコントローラ１８に出力される（ステップＤ１）。指示情報を受けた１Ｄスキャナコントローラ１７ａ、１７ｂでは、１ＤスキャナＰａ、Ｐｂの起動制御がそれぞれ行われ（ステップＤ２）、１ＤスキャナＰａ、Ｐｂにより同時にレーザ光が発光されてその光ビームが照射される（ステップＤ３）。一方、スキャン開始の指示情報を受けた２Ｄスキャナコントローラ１８においても２ＤスキャナＱの起動制御が行われ（ステップＤ４）、エリア画像の取り込みが開始される（ステップＤ５）。
【０１５５】
１ＤスキャナＰａ、Ｐｂにより光ビームが照射されて読取対象のコードの走査が行われ（ステップＤ６）、１走査分の走査が終了すると（ステップＤ７）、割り込みフラグが生成され、当該割り込みフラグデータがＣＰＵ１１に出力されるとともに、走査により読み取られたライン画像のデータがＤＭＡ機能によりそれぞれＲＡＭ１２に転送され（ステップＤ８）、ＲＡＭ１２において保存される（ステップＤ１１）。
【０１５６】
２ＤスキャナＱでは、１ＤスキャナＰａ、Ｐｂによるコード走査と同時にエリア画像の取り込みが行われ（ステップＤ９）、取り込まれたエリア画像のデータがＤＭＡ機能によりＲＡＭ１２に転送され（ステップＤ１０）、ＲＡＭ１２において保存される（ステップＤ１１）。
【０１５７】
１ＤスキャナＰａ、Ｐｂ、２ＤスキャナＱによりライン画像又はエリア画像が取り込まれ、その画像データがＲＡＭ１２に記憶されていく過程で、１Ｄスキャナコントローラ１７ａ、１７ｂからの割り込みフラグが発生すると、ＣＰＵ１１では、エリア画像の転送を停止する指示情報が２Ｄスキャナコントローラ１８に出力され、１Ｄスキャナコントローラ１７ａ、１７ｂから転送されたライン画像のデコードが行われる（ステップＤ１２）。
【０１５８】
デコードが成功した場合は本処理を終了し、デコードが失敗した場合は、エリア画像の転送を再開する指示情報が２Ｄスキャナコントローラ１８に出力される。そして、１画面分のエリア画像の転送が終了すると、ＣＰＵ１１において、転送されたエリア画像に基づいて読取対象コードまでの距離の算出が行われる（ステップＤ１３）。次いで、エリア画像において、ピッチ方向に沿って照射された光ビーム、つまり１ＤスキャナＰａから照射された光ビームの照射位置のピッチ方向における傾斜角度が検出され、当該傾斜角度から読取対象コードのピッチ角度が算出される（ステップＤ１４）。
【０１５９】
ピッチ角度が算出されると、エリア画像における光ビームの照射位置のエリア画像において、スキュー方向に沿って照射された光ビームの照射位置のスキュー方向における傾斜角度が検出され、当該傾斜角度から読取対象コードのスキュー角度が算出される（ステップＤ１５）。
【０１６０】
距離、ピッチ角度及びスキュー角度が算出されると、算出された距離に応じて１ＤスキャナＰａ、Ｐｂ及び２ＤスキャナＱのパラメータが決定され、当該決定されたパラメータのデータが１Ｄスキャナコントローラ１７ａ、１７ｂ及び２Ｄスキャナコントローラ１８のそれぞれに出力される（ステップＤ１６）。１Ｄスキャナコントローラ１７ａ、１７ｂに出力されたパラメータデータは、１ＤスキャナＰａ、Ｐｂに転送され（ステップＤ１７）、１Ｄスキャナコントローラ１７ａ、１７ｂの制御により、転送されたパラメータデータに基づいて１ＤスキャナＰａのパラメータが変更設定される（ステップＤ１８）。
【０１６１】
一方、２Ｄスキャナコントローラ１８に出力されたパラメータデータは、２ＤスキャナＱに転送され（ステップＤ１９）、２Ｄスキャナコントローラ１８の制御により、転送されたパラメータデータに基づいて２ＤスキャナＱのパラメータが変更設定される。例えば、読取対象のコードまでの距離が遠距離である場合は、画像取込時の露光時間が長時間になるように露光スピードのパラメータを変更設定する。
【０１６２】
パラメータの変更設定が終了すると、ＣＰＵ１１から１ＤスキャナＰによるコードスキャンを停止する指示情報が１Ｄスキャナコントローラ１７に出力され（ステップＤ２１）、１Ｄスキャナコントローラ１７ａ、１７ｂの制御により１ＤスキャナＰａ、Ｐｂの動作が停止されて（ステップＤ２２）、レーザ光が消灯される（ステップＤ２３）。
【０１６３】
１ＤスキャナＰａ、Ｐｂのスキャン動作が停止されると、エリア画像の取り込み開始の指示情報がＣＰＵ１１から２Ｄスキャナコントローラ１８に出力され、２Ｄスキャナコントローラ１８の制御により２ＤスキャナＱによるエリア画像の取り込みが行われる（ステップＤ２４）。取り込まれたエリア画像はＤＭＡ機能により２Ｄスキャナコントローラ１８からＲＡＭ１２に出力され（ステップＤ２５）、その画像データがＲＡＭ１２に保存される（ステップＤ２６）。
【０１６４】
ＲＡＭ１２にエリア画像の画像データが保存されると、ＣＰＵ１１では当該画像データの画像解析が行われ、２次元コード画像の検出が行われる。そして、ステップＥ１４で算出されたピッチ角度及びスキュー角度に応じて、検出された２次元コード画像に対し、画像補正が施される（ステップＥ２６）。例えば、２次元コードがピッチ方向に対して右側に傾斜された状態でエリア画像が取り込まれた場合は、そのコード画像は右にいくほど小さくなるように歪んだ画像となるので、そのピッチ角度分だけ傾斜を戻した状態のコード画像となるように座標変換される等して画像補正が行われる。
【０１６５】
画像補正が終了すると、当該補正された２次元コード画像のデコードが行われる（ステップＤ２８）。デコードが成功した場合は本処理を終了し、デコードに失敗した場合は、１ＤスキャナＰａ、Ｐｂによるスキャンを開始する指示情報がＣＰＵ１１から１Ｄスキャナコントローラ１７に出力される（ステップＤ２９）。次いで、１Ｄスキャナコントローラ１７ａ、１７ｂの制御により１ＤスキャナＰａ、Ｐｂが起動されると（ステップＤ３０）、１ＤスキャナＰによりレーザ光が発光されて、コードスキャンが開始される（ステップＤ３１）。
【０１６６】
１ＤスキャナＰによるスキャン開始後は、ステップＤ６の処理に戻り、再度１ＤスキャナＰａ、Ｐｂ及び２ＤスキャナＱによるコードスキャンが行われて、２次元コードのデコードが成功するまで２ＤスキャナＱのパラメータの変更及びコード画像の補正が繰り返される。
【０１６７】
以上のように、コード読取装置２０に、２台の１ＤスキャナＰａ、Ｐｂと１台の２ＤスキャナＱを搭載し、予め読取対象のコードまでの距離と、２ＤスキャナＱにより読み取られたエリア画像における１ＤスキャナＰａ、Ｐｂからの光ビームの照射位置との相関関係をテーブル化して備えておくことにより、コード読取時に２ＤスキャナＱにより得られたエリア画像における１ＤスキャナＰａ、Ｐｂの光ビームの照射位置から読取対象のコードまでの距離を算出することができる。そして、算出された距離に応じて最適なコード読取を行えるように２ＤスキャナＱの読取時の各種パラメータを変更設定するので、コードを正確に読み取ることができ、読取性能を向上させることができる。
【０１６８】
また、読取対象コードのピッチ角度と、２ＤスキャナＱにより読み取られたエリア画像における光ビームの照射位置の傾斜角度との相関関係をテーブル化して備えておくことにより、コード読取時に２ＤスキャナＱから得られたエリア画像における光ビームの照射位置の傾斜角度から読取対象コードのピッチ角度を算出することができる。そして、算出されたピッチ角度に応じて最適なデコードを行えるようにコードスキャンされたコード画像の画像補正を行うので、コードを正確にデコードすることができ、デコード性能を向上させることができる。
【０１６９】
また、１ＤスキャナＰａ、Ｐｂ及び２ＤスキャナＱを同時搭載しているので、１次元コード及び２次元コードの両方を読み取ることができ、利便性が良い。さらに、照射された光ビームの走査方向が異なるように２台の１ＤスキャナＰａ、Ｐｂを備えるので、１次元コードの読取位置の自由度を向上させることができる。
【図面の簡単な説明】
【０１７０】
【図１】本発明を適用した第１の実施の形態におけるコード読取装置１０の外観図である。
【図２】コード読取装置１０の内部構成を示す図である。
【図３】（ａ）はコード読取装置１０によるコードスキャンの様子を示す図であり、（ｂ）はコードスキャンにより取り込まれたエリア画像を示す図である。
【図４】（ａ）は光ビームの走査面を側面から見た様子を図式化したものであり、（ｂ）は取り込まれたエリア画像を示す図である。
【図５】コード距離と、エリア画像における光ビームの照射位置との相関関係を示す図である。
【図６】１ＤスキャナＰの内部構成を示す図である。
【図７】コード読取装置１０により実行される第１のコード読取処理を説明するフローチャートである。
【図８】（ａ）は第２の実施の形態におけるコード読取装置１０によるコードスキャンの様子を示す図であり、（ｂ）はコードスキャンにより取り込まれたエリア画像を示す図である。
【図９】第２のコード読取処理を説明するフローチャートである。
【図１０】（ａ）は第３の実施の形態におけるコード読取装置１０によるコードスキャンの様子を示す図であり、（ｂ）、（ｃ）はコードスキャンにより取り込まれたエリア画像を示す図である。
【図１１】（ａ）はコードスキャン時の光ビームの走査面を側面から見た図であり、（ｂ）は光ビームの走査面を上から見た図である。
【図１２】ピッチ方向に傾斜した状態で取り込まれたエリア画像を示す図である。
【図１３】読取対象コードのピッチ角度と、エリア画像における光ビームの傾斜角度との相関関係を示す図である。
【図１４】第３のコード読取処理を説明するフローチャートである。
【図１５】第４の実施の形態におけるコード読取装置２０の外観図である。
【図１６】コード読取装置２０の内部構成を示す図である。
【図１７】（ａ）、（ｂ）はコード読取装置２０によるコードスキャンの様子を示す図であり、（ｃ）、（ｄ）はコードスキャンにより取り込まれたエリア画像を示す図である。
【図１８】読取対象コードのスキュー角度と、エリア画像における光ビームＢの傾斜角度との相関関係を示す図である。
【図１９】第４のコード読取処理を説明するフローチャートである。
【符号の説明】
【０１７１】
１０    コード読取装置（第１〜３の実施の形態）
１１    ＣＰＵ
１２    ＲＡＭ
１３    表示部
１４    入力部
１５    通信部
１６    ＲＯＭ
１７    １Ｄスキャナコントローラ
Ｐ    １Ｄスキャナ
１８    ２Ｄスキャナコントローラ
Ｑ    ２Ｄスキャナ
２０    コード読取装置（第４の実施の形態）
１７ａ、１７ｂ    １Ｄスキャナコントローラ
Ｐａ、Ｐｂ    １Ｄスキャナ
【図１】
2005063142.tif 000008
【図２】
2005063142.tif 000009
【図３】
2005063142.tif 000010
【図４】
2005063142.tif 000011
【図５】
2005063142.tif 000012
【図６】
2005063142.tif 000013
【図７】
2005063142.tif 000014
【図８】
2005063142.tif 000015
【図９】
2005063142.tif 000016
【図１０】
2005063142.tif 000017
【図１１】
2005063142.tif 000018
【図１２】
2005063142.tif 000019
【図１３】
2005063142.tif 000020
【図１４】
2005063142.tif 000021
【図１５】
2005063142.tif 000022
【図１６】
2005063142.tif 000023
【図１７】
2005063142.tif 000024
【図１８】
2005063142.tif 000025
【図１９】
2005063142.tif 000026