(57)【要約】【課題】  擦れや汚れがある場合でも高速かつ正確にコード記号を読み取れるようにする。【解決手段】  コードスキャナにおいて、ＣＭＯＳが異なる３以上の複数タイミングで撮像した画像についてそれぞれ、その画像のうち読取対象のコード記号を構成するモジュールの同じ１ラインに相当する部分から、モジュールのラインに平行な画素列の各画素の画像データを取得し（Ｓ１１１〜Ｓ１１４）、その各画素列の画像データを、画像毎に２値化すると共に、モジュールのライン方向の位置が等しい画素の２値化後のデータを上記複数タイミングの画像分加算して、コード記号のうちモジュール１ライン分のデコード用データを得て（Ｓ１１５〜Ｓ１１７）、そのデコード用データを所定の閾値でさらに２値化し（Ｓ１２０，Ｓ１２１）、その２値化後のデコード用データに基づきコード記号をデコードするようにした（Ｓ１２２）。【選択図】        図１２
2011233099.tif 000002
【特許請求の範囲】
【請求項１】
光反射率が周囲と異なるモジュールが２次元に配列されたコード記号により示される情報を読み取る光学的情報読取装置であって、
読取対象物の画像を撮像する撮像手段と、
該撮像手段が異なる３以上の複数タイミングで撮像した画像についてそれぞれ、該画像のうち前記コード記号を構成するモジュールの同じ１ラインに相当する部分から、前記モジュールのラインに平行な画素列の画像データを取得する画像データ取得手段と、
前記画像データ取得手段が取得した前記各画素列の画像データを該画素列毎に２値化すると共に、前記モジュールのライン方向の位置が等しい画素の２値化後のデータを前記複数タイミングの画像分加算して、前記コード記号のうちモジュール１ライン分のデコード用データを得る加算手段と、
前記加算手段が得た前記デコード用データを所定の閾値で２値化する２値化手段と、
前記２値化手段による前記２値化後のデコード用データに基づき、前記コード記号を構成する１ライン分のモジュールの配置を推定する推定手段と、を備えたことを特徴とする光学的情報読取装置。
【請求項２】
光反射率が周囲と異なるモジュールが２次元に配列されたコード記号により示される情報を読み取る光学的情報読取装置であって、
読取対象物の画像を撮像する撮像手段と、
該撮像手段が撮像した画像のうち、前記コード記号を構成するモジュール１ラインに相当する部分から、前記モジュールのラインに平行な３以上の複数画素列の画像データを取得する画像データ取得手段と、
前記画像データ取得手段が取得した前記各画素列の画像データを該画素列毎に２値化すると共に、前記モジュールのライン方向の位置が等しい画素の２値化後のデータを前記複数画素列分加算して、前記コード記号のうちモジュール１ライン分のデコード用データを得る加算手段と、
前記加算手段が得た前記デコード用データを所定の閾値で２値化する２値化手段と、
前記２値化手段による前記２値化後のデコード用データに基づき、前記コード記号を構成する１ライン分のモジュールの配置を推定する推定手段と、を備えたことを特徴とする光学的情報読取装置。
【請求項３】
光反射率が周囲と異なるモジュールが１次元に配列されたコード記号により示される情報を読み取る光学的情報読取装置であって、
読取対象物を光走査してその反射光強度に応じた読取信号を出力する走査手段と、
該走査手段が異なる３以上の複数タイミングで前記光走査を行って出力する読取信号を走査タイミング毎に２値化すると共に、前記モジュールの配列方向の等しい位置に対応する２値化後の値を前記複数タイミングの読取信号分加算し、前記コード記号のデコード用データを得る加算手段と、
前記加算手段が得た前記デコード用データを所定の閾値で２値化する２値化手段と、
前記２値化手段による前記２値化後のデコード用データに基づき、前記コード記号を構成するモジュールの配列を推定する推定手段と、を備えたことを特徴とする光学的情報読取装置。
【請求項４】
光反射率が周囲と異なるモジュールが配列されたコード記号により示される情報を読み取る光学的情報読取装置であって、
該読取対象物の各位置の光反射率に応じた読取信号を出力する読取手段と、
該読取手段が出力する読取信号のうち、前記コード記号を構成するモジュールの同じラインの位置の光反射率を示す読取信号を、３以上の複数通り取得し、該読取信号毎に２値化すると共に、前記モジュールのライン方向の等しい位置に対応する２値化後の値を前記複数通りの読取信号分加算し、前記モジュールのデコード用データを得る加算手段と、
前記加算手段が得た前記デコード用データを所定の閾値で２値化する２値化手段と、
前記２値化手段による前記２値化後のデコード用データに基づき、前記コード記号を構成するモジュールの配列を推定する推定手段と、を備えたことを特徴とする光学的情報読取装置。
【請求項５】
前記２値化手段による２値化の閾値として、前記加算手段による加算後の読取データが取り得る最大値と最小値の中央の値である中央値から前記最大値と前記最小値の差の１０〜２０％を減じた値と、前記中央値に前記最大値と前記最小値の差の１０〜２０％を減じた値とからいずれか一方を選択して設定する手段を有することを特徴とする請求項１乃至４のいずれか一項に記載の光学的情報読取装置。
【請求項６】
光反射率が周囲と異なるモジュールが２次元に配列されたコード記号により示される情報を読み取る光学的情報読取方法であって、
読取対象物の画像を撮像する撮像工程と、
該撮像工程で異なる３以上の複数タイミングで撮像した画像についてそれぞれ、該画像のうち前記コード記号を構成するモジュールの同じ１ラインに相当する部分から、前記モジュールのラインに平行な画素列の画像データを取得する画像データ取得工程と、
前記画像データ取得工程で取得した前記各画素列の画像データを、該画素列毎に２値化すると共に、前記モジュールのライン方向の位置が等しい画素の２値化後のデータを前記複数タイミングの画像分加算し、前記コード記号のうちモジュール１ライン分のデコード用データを得る加算工程と、
前記加算工程で得た前記デコード用データを所定の閾値で２値化する２値化工程と、
前記２値化工程による前記２値化後のデコード用データに基づき、前記コード記号を構成する１ライン分のモジュールの配置を推定する推定工程と、を備えたことを特徴とする光学的情報読取方法。
【請求項７】
光反射率が周囲と異なるモジュールが２次元に配列されたコード記号により示される情報を読み取る光学的情報読取方法であって、
読取対象物の画像を撮像する撮像工程と、
該撮像工程で撮像した画像のうち、前記コード記号を構成するモジュール１ラインに相当する部分から、前記モジュールのラインに平行な３以上の複数画素列の画像データを取得する画像データ取得工程と、
前記画像データ取得工程で取得した前記各画素列の画像データを、該画素列毎に２値化すると共に、前記モジュールのライン方向の位置が等しい画素の２値化後のデータを前記複数画素列分加算し、前記コード記号のうちモジュール１ライン分のデコード用データを得る加算工程と、
前記加算工程で得た前記デコード用データを所定の閾値で２値化する２値化工程と、
前記２値化工程による前記２値化後のデコード用データに基づき、前記コード記号を構成する１ライン分のモジュールの配置を推定する推定工程と、を備えたことを特徴とする光学的情報読取方法。
【請求項８】
光反射率が周囲と異なるモジュールが１次元に配列されたコード記号により示される情報を読み取る光学的情報読取方法であって、
読取対象物を光走査してその反射光強度に応じた読取信号を出力する走査工程と、
該走査工程で異なる３以上の複数タイミングで前記光走査を行って出力される読取信号を走査タイミング毎に２値化すると共に、前記モジュールの配列方向の等しい位置に対応する２値化後の値を前記複数タイミングの読取信号分加算し、前記コード記号のデコード用データを得る加算工程と、
前記加算工程で得た前記デコード用データを所定の閾値で２値化する２値化工程と、
前記２値化工程による前記２値化後のデコード用データに基づき前記コード記号を構成するモジュールの配列を推定する推定工程と、を備えたことを特徴とする光学的情報読取方法。
【請求項９】
光反射率が周囲と異なるモジュールが配列されたコード記号により示される情報を読み取る光学的情報読取方法であって、
該読取対象物の各位置の光反射率に応じた読取信号を出力する読取工程と、
該読取工程で出力される読取信号のうち、前記コード記号を構成するモジュールの同じラインの位置の光反射率を示す読取信号を、３以上の複数通り取得し、該読取信号毎に２値化すると共に、前記モジュールのライン方向の等しい位置に対応する２値化後の値を前記複数通りの読取信号分加算し、前記モジュールのデコード用データを得る加算工程と、
前記加算工程で得た前記デコード用データを所定の閾値で２値化する２値化工程と、
前記２値化工程による前記２値化後のデコード用データに基づき、前記コード記号を構成するモジュールの配列を推定する推定工程と、を備えたことを特徴とする光学的情報読取方法。
【請求項１０】
前記２値化工程における２値化の閾値として、前記加算工程による加算後の読取データが取り得る最大値と最小値の中央の値である中央値から前記最大値と前記最小値の差の１０〜２０％を減じた値と、前記中央値に前記最大値と前記最小値の差の１０〜２０％を減じた値とからいずれか一方を選択して設定する工程を有することを特徴とする請求項６乃至９のいずれか一項に記載の光学的情報読取方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、光反射率が周囲と異なるモジュールが配列されたコード記号により示される情報を読み取る光学的情報読取装置及び光学的情報読取方法に関する。
【背景技術】
【０００２】
光反射率が周囲と異なるモジュールが配列されたコード記号として、従来から、在庫管理等を目的として、モジュールを１次元に配列したバーコード記号が広く用いられている。また、近年は、より情報密度の高いコード記号としてモジュールを２次元に配列した２次元コード記号も使用されている。
【０００３】
そして、バーコード記号を読み取る装置としては、レーザビームによりコード記号を走査し、各位置の反射光強度を検出して２値化し、デコードする装置が知られている。また、２次元コード記号を読み取る装置としては、ＣＭＯＳ（Complementary Metal Oxide Semiconductor）イメージセンサやＣＣＤ（Charge Coupled Device）イメージセンサ等の固体撮像素子で２次元コードを撮影し、その画像に様々な処理を施した上で２値化し、デコードする装置が知られている。
【０００４】
また、これらの読取装置には、大別してハンディ（手持ち式）と定置式がある。
このうち定置式は、読取装置のガイド光が照らす領域に読取対象物を持っていけば情報入力できるので、小売店や書店のレジで商品に付されたコード記号を読み取る場合など、作業が定位置で行われる場合に有用である。一方ハンディは、軽く人間の手で持ちやすくなっているので、倉庫などで作業者が移動して大きな物品に付されたコード記号を読み取る時などに有用である。また、携帯電話等の端末機器に、バーコード・二次元コードデコード機能が装備されている場合もある。
【０００５】
ここで、ハンディの読取装置（携帯電話等に搭載される場合を含む）を使用する場合、人間が手で持つのでどうしても多少手がふるえ、コード記号を走査したり撮影したりする際に手ぶれが生じてしまう。そのため、特許文献１乃至３のように、手ぶれに対応する機能を備えた読取装置が開発されている。
【０００６】
特許文献１には、手ぶれ等によってバーコードを読み取れなかった場合、エラーと判断し再度バーコードの読み取りを行うことが記載されている。
特許文献２には、手ぶれに関する補正をソフトウェア的に行う機能として、コード記号を撮像して得られた画像データのデコードに失敗した場合に、画像の一部（予備補正領域）に種々の補正量で手ぶれ補正を行って、補正後の画像に対してデコードが良好に行えた補正量を採用し、その補正量で画像データ全体に対して手ぶれ補正を行う機能を備えた装置が記載されている。
特許文献３には、２次元コードを撮像をする際、ボタン操作等に伴い手ぶれの発生し易い期間を避けてコード記号を撮像するために、ユーザによる撮像指示があってから少し時間をおいて撮像するようにすることが記載されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００４−３５５４５１号公報
【特許文献２】特開２００５−１９６５４３号公報
【特許文献３】特開２００５−３０９５６２号公報
【特許文献４】特開平１１−１６１７３４号公報
【特許文献５】特開２０００−３０６０３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１及び３に記載の発明では、上述した倉庫、店舗などコード記号の読み取りを次々と短時間で行う場合、エラーが何度も発生したり、撮像までに時間かかったりすると、作業効率が低下してしまう。
また、特許文献２に記載の発明のように、演算により手ぶれの補正を行おうとすると、アルゴリズムが複雑になり、演算量も大きくなるため、演算能力の高いプロセッサを搭載する必要が生じ、コストアップや処理時間の増大につながる。
【０００９】
元々、手ぶれは、人間が読取装置を手で持つ場合には無くすことはできない。そして、その補正を完璧に行おうとするならば、機器自体になんらかの負担をかけてしまう。またこの点は、読取装置を固定し、人が読取対象物の方を持つ場合にも同様である。
一方で、従来の読取装置においては、読取対象のコード記号に擦れや汚れがあり、形状が正確でない場合、何度もエラーが生じて読み取りに時間がかかったり、そもそも読み取りができなかったりしていた。一旦商品等に印刷したり貼り付けたりした時点ではコード記号の品質に問題なかったとしても、その後、他の物とぶつかったり水濡れする等して、コード記号に擦れや汚れが生じることも考えられる。従って、擦れや汚れがある場合でも高速かつ正確にコード記号を読み取れる読取装置が望まれる。
このような問題に対応するための技術としては、例えば特許文献４及び特許文献５に記載のものが知られているが、いずれもコスト、精度、運用の容易さ等を総合的に見た場合には不十分な点があった。
【００１０】
この発明は、このような背景に鑑みてなされたものであり、手ぶれが生じる環境でも効率よくコード記号により示される情報を読み取れるようにすることを目的とする。併せて、この目的を実現するための技術を利用して、擦れや汚れがある場合でも高速かつ正確にコード記号を読み取れる読取装置を提供することを、目的とする。
【課題を解決するための手段】
【００１１】
この発明は、上記の目的を達成するため、光反射率が周囲と異なるモジュールが２次元に配列されたコード記号により示される情報を読み取る光学的情報読取装置において、読取対象物の画像を撮像する撮像手段と、その撮像手段が異なる３以上の複数タイミングで撮像した画像についてそれぞれ、その画像のうち上記コード記号を構成するモジュールの同じ１ラインに相当する部分から、上記モジュールのラインに平行な画素列の画像データを取得する画像データ取得手段と、上記画像データ取得手段が取得した上記各画素列の画像データをその画素列毎に２値化すると共に、上記モジュールのライン方向の位置が等しい画素の２値化後のデータを上記複数タイミングの画像分加算して、上記コード記号のうちモジュール１ライン分のデコード用データを得る加算手段と、上記加算手段が得た上記デコード用データを所定の閾値で２値化する２値化手段と、上記２値化手段による上記２値化後のデコード用データに基づき、上記コード記号を構成する１ライン分のモジュールの配置を推定する推定手段と、を設けたものである。
【００１２】
また、この発明の別の光学的情報読取装置は、光反射率が周囲と異なるモジュールが２次元に配列されたコード記号により示される情報を読み取る光学的情報読取装置において、読取対象物の画像を撮像する撮像手段と、その撮像手段が撮像した画像のうち、上記コード記号を構成するモジュール１ラインに相当する部分から、上記モジュールのラインに平行な３以上の複数画素列の画像データを取得する画像データ取得手段と、上記画像データ取得手段が取得した上記各画素列の画像データをその画素列毎に２値化すると共に、上記モジュールのライン方向の位置が等しい画素の２値化後のデータを上記複数画素列分加算して、上記コード記号のうちモジュール１ライン分のデコード用データを得る加算手段と、上記加算手段が得た上記デコード用データを所定の閾値で２値化する２値化手段と、上記２値化手段による上記２値化後のデコード用データに基づき、上記コード記号を構成する１ライン分のモジュールの配置を推定する推定手段と、を設けたものである。
【００１３】
また、この発明のさらに別の光学的情報読取装置は、光反射率が周囲と異なるモジュールが１次元に配列されたコード記号により示される情報を読み取る光学的情報読取装置において、読取対象物を光走査してその反射光強度に応じた読取信号を出力する走査手段と、その走査手段が異なる３以上の複数タイミングで上記光走査を行って出力する読取信号を走査タイミング毎に２値化すると共に、上記モジュールの配列方向の等しい位置に対応する２値化後の値を上記複数タイミングの読取信号分加算し、上記コード記号のデコード用データを得る加算手段と、上記加算手段が得た上記デコード用データを所定の閾値で２値化する２値化手段と、上記２値化手段による上記２値化後のデコード用データに基づき、上記コード記号を構成するモジュールの配列を推定する推定手段と、を設けたものである。
【００１４】
また、この発明のさらに別の光学的情報読取装置は、光反射率が周囲と異なるモジュールが配列されたコード記号により示される情報を読み取る光学的情報読取装置において、その読取対象物の各位置の光反射率に応じた読取信号を出力する読取手段と、その読取手段が出力する読取信号のうち、上記コード記号を構成するモジュールの同じラインの位置の光反射率を示す読取信号を、３以上の複数通り取得し、その読取信号毎に２値化すると共に、上記モジュールのライン方向の等しい位置に対応する２値化後の値を上記複数通りの読取信号分加算し、上記モジュールのデコード用データを得る加算手段と、上記加算手段が得た上記デコード用データを所定の閾値で２値化する２値化手段と、上記２値化手段による上記２値化後のデコード用データに基づき、上記コード記号を構成するモジュールの配列を推定する推定手段と、を設けたものである。
【００１５】
また、上記の各光学的情報読取装置において、上記２値化手段による２値化の閾値として、上記加算手段による加算後の読取データが取り得る最大値と最小値の中央の値である中央値から上記最大値と上記最小値の差の１０〜２０％を減じた値と、上記中央値に上記最大値と上記最小値の差の１０〜２０％を減じた値とからいずれか一方を選択して設定する手段を設けるとよい。
【００１６】
また、この発明の光学的情報読取方法は、光反射率が周囲と異なるモジュールが２次元に配列されたコード記号により示される情報を読み取る光学的情報読取方法において、読取対象物の画像を撮像する撮像工程と、その撮像工程で異なる３以上の複数タイミングで撮像した画像についてそれぞれ、その画像のうち上記コード記号を構成するモジュールの同じ１ラインに相当する部分から、上記モジュールのラインに平行な画素列の画像データを取得する画像データ取得工程と、上記画像データ取得工程で取得した上記各画素列の画像データを、その画素列毎に２値化すると共に、上記モジュールのライン方向の位置が等しい画素の２値化後のデータを上記複数タイミングの画像分加算し、上記コード記号のうちモジュール１ライン分のデコード用データを得る加算工程と、上記加算工程で得た上記デコード用データを所定の閾値で２値化する２値化工程と、上記２値化工程による上記２値化後のデコード用データに基づき、上記コード記号を構成する１ライン分のモジュールの配置を推定する推定工程と、を設けたものである。
【００１７】
また、この発明の別の光学的情報読取方法は、光反射率が周囲と異なるモジュールが２次元に配列されたコード記号により示される情報を読み取る光学的情報読取方法において、読取対象物の画像を撮像する撮像工程と、その撮像工程で撮像した画像のうち、上記コード記号を構成するモジュール１ラインに相当する部分から、上記モジュールのラインに平行な３以上の複数画素列の画像データを取得する画像データ取得工程と、上記画像データ取得工程で取得した上記各画素列の画像データを、その画素列毎に２値化すると共に、上記モジュールのライン方向の位置が等しい画素の２値化後のデータを上記複数画素列分加算し、上記コード記号のうちモジュール１ライン分のデコード用データを得る加算工程と、上記加算工程で得た上記デコード用データを所定の閾値で２値化する２値化工程と、上記２値化工程による上記２値化後のデコード用データに基づき、上記コード記号を構成する１ライン分のモジュールの配置を推定する推定工程と、を設けたものである。
【００１８】
また、この発明のさらに別の光学的情報読取方法は、光反射率が周囲と異なるモジュールが１次元に配列されたコード記号により示される情報を読み取る光学的情報読取方法において、読取対象物を光走査してその反射光強度に応じた読取信号を出力する走査工程と、その走査工程で異なる３以上の複数タイミングで上記光走査を行って出力される読取信号を走査タイミング毎に２値化すると共に、上記モジュールの配列方向の等しい位置に対応する２値化後の値を上記複数タイミングの読取信号分加算し、上記コード記号のデコード用データを得る加算工程と、上記加算工程で得た上記デコード用データを所定の閾値で２値化する２値化工程と、上記２値化工程による上記２値化後のデコード用データに基づき上記コード記号を構成するモジュールの配列を推定する推定工程と、を設けたものである。
【００１９】
また、この発明のさらに別の光学的情報読取方法は、光反射率が周囲と異なるモジュールが配列されたコード記号により示される情報を読み取る光学的情報読取方法において、その読取対象物の各位置の光反射率に応じた読取信号を出力する読取工程と、その読取工程で出力される読取信号のうち、上記コード記号を構成するモジュールの同じラインの位置の光反射率を示す読取信号を、３以上の複数通り取得し、その読取信号毎に２値化すると共に、上記モジュールのライン方向の等しい位置に対応する２値化後の値を上記複数通りの読取信号分加算し、上記モジュールのデコード用データを得る加算工程と、上記加算工程で得た上記デコード用データを所定の閾値で２値化する２値化工程と、上記２値化工程による上記２値化後のデコード用データに基づき、上記コード記号を構成するモジュールの配列を推定する推定工程と、を設けたものである。
【００２０】
また、上記の各光学的情報読取方法において、上記２値化工程における２値化の閾値として、上記加算工程による加算後の読取データが取り得る最大値と最小値の中央の値である中央値から上記最大値と上記最小値の差の１０〜２０％を減じた値と、上記中央値に上記最大値と上記最小値の差の１０〜２０％を減じた値とからいずれか一方を選択して設定する工程を設けるとよい。
【発明の効果】
【００２１】
この発明による光学的情報読取装置及び光学的情報読取方法によれば、擦れや汚れがある場合でも高速かつ正確にコード記号を読み取れる読取装置を提供することができる。また、手ぶれが生じる環境でも効率よくコード記号により示される情報を読み取ることができる。
【図面の簡単な説明】
【００２２】
【図１】この発明の光学的情報読取装置の第１の実施形態であるバーコードスキャナの光学系の構成を示す図である。
【図２】図１に示した処理回路の概略構成を示す図である。
【図３】図１に示した処理回路の各位置における読取信号の波形を示す図である。
【図４】図２に示した複合信号処理部２７が実行する処理のフローチャートである。
【図５】擦れや汚れのあるバーコードの例を示す図である。
【００２３】
【図６】図４の処理による位置合わせ後の読取データの例を示す図である。
【図７】図６に示した５つの読取データを加算して得られるデコード用データを示す図である。
【図８】図４のステップＳ１５で行う２値化の例を示す図である。
【図９】その別の例を示す図である。
【図１０】この発明の光学的情報読取装置の第２の実施形態であるコードスキャナの概略ハードウェア構成を示す図である。
【００２４】
【図１１】図１０に示したコードススキャナが読み取るコード記号の例を示す図である。
【図１２】図１０に示したＡＳＩＣが実行する処理のフローチャートである。
【図１３】ＣＭＯＳによる撮像で得られる画像の例を示す図である。
【図１４】図１２の処理による２値化及び位置合わせ後の読取データの例を示す図である。
【図１５】図１４のデータを加算して生成されるデコード用データを示す図である。
【００２５】
【図１６】図１５のデータを２値化して得られるデコード用データを示す図である。
【図１７】この発明の光学的情報読取装置の第３の実施形態であるコードスキャナにおいてＡＳＩＣが実行する処理のフローチャートである。
【図１８】擦れのあるコード記号の例を示す図である。
【図１９】図１７の処理による２値化及び位置合わせ後の読取データの例を示す図である。
【図２０】図１９のデータを加算して生成されるデコード用データを示す図である。
【図２１】図２０のデータを２値化して得られるデコード用データを図である。
【発明を実施するための形態】
【００２６】
以下、この発明を実施するための形態を図面に基づいて具体的に説明する。
〔第１の実施形態：図１乃至図９〕
まず、この発明の光学的情報読取装置の第１の実施形態であるバーコードスキャナについて説明する。
図１に、このバーコードスキャナの光学系の構成を示す。
このバーコードスキャナ１は、読み取り対象物上に設けられた、光反射率が周囲と異なるモジュールである白バー及び黒バーが１次元に配列されたコード記号であるバーコードを読み取る装置であり、図１に示すように、レーザ光源１１，集光レンズ１２，開口絞り１３，スキャニングミラー１４，結像レンズ１５，光電変換器１６，処理回路２０を有する。
【００２７】
そして、バーコードスキャナ１は、半導体レーザを光源とするレーザ光源１１の発光点１１ａから出力されるレーザビームを、集光レンズ１２を通過させた後、開口絞り１３で径を絞り、スキャニングミラー１４により偏向させて、読取対象物３０上に設けられたバーコード３１に対して照射し、バーコード３１上をレーザビームのビームスポットにより走査できるように構成している。スキャニングミラー１４は、図１では平面鏡として示しているが、実際には正多角形柱上で側面が鏡面となっているポリゴンミラーを用いてもよい。
【００２８】
一方、結像レンズ１５には、読取対象物３０により反射されてきた走査レーザビームを入射させ、フォトダイオードからなる光電変換器１６上に結像させる。そして、光電変換器１６がその反射光を、強度に応じたアナログ電気信号に変換し、処理回路２０による解析に供する。
【００２９】
図２に、この処理回路の概略構成を示す。
処理回路２０はまず、光電変換器１６から入力する読取信号を解析に好適な信号に変換するための構成として、光電変換器１６から入力する電流信号を電圧信号に変換するＩ／Ｖ変換部２１と、その電圧信号を増幅すると共に微分する微分信号生成部２２と、その微分信号生成部２２で微分された電気信号のうち所定周波数以下の低域成分の信号だけを通過させて出力するローパスフィルタ２３と、その出力信号に応じて微分信号生成部２２における微分の時定数及び増幅の利得を制御する自動利得制御（ＡＧＣ）部２４とを有する。
【００３０】
このうち微分信号生成部２２は、前置増幅器２２ａと可変利得増幅器（微分回路付き）２２ｂからなる。可変利得増幅器２２ｂにおける微分の時定数及び増幅の利得は自動利得制御部２４によって生成される制御信号Ｓｃに応じて変化する。
その自動利得制御部２４は、ローパスフィルタ２３の出力部から分岐して可変利得増幅器２２ｂに帰還する閉ループ型の制御系であり、ピーク値検出器２４ａと比較器２４ｂと基準レベル設定回路２４ｃとからなる。
【００３１】
ピーク値検出器２４ａは、ローパスフィルタ２３の出力信号の振幅のピーク電圧（ピーク値）を検出してある時定数で保持し、それを比較器２４ｂが基準レベル設定回路２４ｃによって設定された基準電圧値と比較し、その比較結果に応じた制御信号Ｓｃを出力して可変利得増幅器２２ｂにおける微分の時定数及び増幅の利得を制御する。この一連の動作で読取信号からノイズが除去される。
この部分の詳細な回路構成としては、例えば特開２００４−１５６７１号公報に記載のものを採用することができる。
【００３２】
また、処理回路２０は、ローパスフィルタから出力される解析に好適な読取信号（微分信号）の解析を行うための構成として、ピーク検出部２５、パルス波形生成部２６及び複合信号処理部２７を有する。
そして、ピーク検出部２５が、微分信号のピーク位置を検出し、パルス波形生成部２６が、そのピーク位置に基づいて、２値の読取データを生成する。
【００３３】
ここで、２値の読取データの生成アルゴリズムについて説明するため、図３に、処理回路２０の各位置における読取信号の波形を示す。
（ａ）に示すのが、可変利得増幅器（微分回路付き）２２ｂによる微分及び増幅後の波形であり、（ｂ）に示すのが、ローパスフィルタ２３によりノイズを除去した後の波形である。
バーコード記号の走査で得られる反射光強度は、白バーによる高い反射光強度と、黒バーによる低い反射光強度とが交互に出現するものとなるが、時間微分を取ると、白バーと黒バーとの境界付近で、微分値の絶対値が大きくなると考えられる。
【００３４】
そこで、（ｂ）に示すノイズ除去後の微分波形において、ピーク検出部２５により、（ｃ）に黒丸で示すような、絶対値の大きなピークを検出すると、その位置が、白バーと黒バーとの境界に対応する位置であると考えられる。従って、初めはコード記号の背景（ここではデータ値「０」の白）に当たるデータ値でスタートし、ピーク検出部２５が検出したピークに当たる位置で０／１を反転させることにより、（ｄ）の下側に示すような、走査ライン上の各サンプルタイミングにおけるビームスポットの位置の反射光強度を示す２値の読取データを得ることができる。
【００３５】
（ｂ）の信号には、ローパスフィルタ２３により除去しきれなかったノイズが混じることもあるが、ピーク検出時に前のピークからの絶対値変化が小さいピークは無視する等すれば、このようなノイズも適切に取り除くことができる。
この手法によれば、反射光強度自体の信号を２値化するより、ノイズの影響を受けづらく、コード記号における白バーと黒バーの配置を正確に反映した読取データを得ることができる。
【００３６】
図２の説明に戻ると、次の複合信号処理部２７は、パルス波形生成部２６が出力する複数回の走査に対応した読取データを入力し、これらに基づいてデコードに供する最終的な読取データを生成する。
この複合信号処理部２７が行う処理は、デジタルデータ処理であって、図４のフローチャートに示すものである。この処理は、専用の回路に行わせてもよいし、ＣＰＵに所要のプログラムを実行させることにより行わせてもよい。いずれにせよ、複合信号処理部２７は、パルス波形生成部２６から読取データが供給されると、図４のフローチャートに示す処理を開始する。
【００３７】
図４の処理において、複合信号処理部２７はまず、パルス波形生成部２６が出力する複数回の走査に対応した読取データを、所定のバッファに格納する（Ｓ１１）。なお、読取装置又は読取対象物を人が手で持つ場合、完全な固定はできないので、走査タイミング毎に走査位置が微妙にずれ、それに応じて走査毎にコード記号の異なった位置からの反射光強度を反映させた読取データが得られると考えられる。
【００３８】
従って、例えば図５（ａ）に示すような擦れのあるバーコード記号や、（ｂ）に示すような汚れのあるバーコード記号を走査した場合、バーの配列方向と垂直な方向（図で縦方向：以下「垂直方向」という）の位置により、走査ライン上における擦れや汚れの有無が異なるため、走査毎に擦れや汚れの位置に応じた異なった読取データが得られる。なお、ずれはバーの配列方向にも起こるが、垂直方向へのずれがなければ、概ね０／１の反転位置が平行移動したデータになるはずである。
【００３９】
データをバッファに格納した後は、複合信号処理部２７は、バッファに格納した各読取データにつき、異なる走査タイミングの読取データ間で、対応するサンプルのデータ値の誤差がなるべく小さくなるように、読取データの位置合わせを行う（Ｓ１２）。
この処理は、例えば、位置合わせの基準とする読取データのｋ番目のサンプルのデータ値をＳ(k)、他の読取データのｋ番目のサンプルのデータ値をＴ(k)として、次の式（１）におけるＤが最小となるようなｘを求め、他の読取データの位置合わせ後のｋ番目のサンプルのデータ値Ｔ*(k)を、Ｔ*(k)＝Ｔ(k+x)とすることにより実現できる。ｘが求められたら、読取データの先頭にｘ個のサンプルを挿入するか、ｘが負の場合にはその分のサンプルを削除すればよい。
【数１】
2011233099.tif 000003
（図面ファイルの最終ページをご覧下さい）
【００４０】
なお、複数の読取データが、極めて近いタイミングの走査（例えば連続する走査）に基づくものであれば、走査位置のずれはさほど大きくないと考えられる。ｘは、ここで想定されるずれの範囲を探索して求めればよい。
また、読取データの位置合わせは、コード記号の規格により定められた位置合わせ用の基準モジュールに対応するピークの位置や、背景とコード記号の端部との境界に当たるピークの位置などを参考に、予めラフに行っておき、その後上記の式（１）に基づく位置合わせを行ってもよい。また、式（１）に基づく位置合わせに代えてこれらの方式を用いてもよい。
また、上記の基準モジュールやコード記号の端部の位置に基づき、読取データのうちコード記号上を走査した部分のみを切り出して、その切り出したデータについて位置合わせ以降の処理を行うようにしてもよい。
【００４１】
以上の位置合わせの結果、各読取データにおいて、同じサンプル番号（例えばｋ）のデータは、コード記号を構成するモジュールの配列方向の等しい位置に対応する反射光強度のデータとなっているはずである。
そして、走査位置のバーの配列方向へのずれについては、この位置合わせにより補正されると考えられる。しかし、垂直方向へのずれに伴う擦れや汚れの相違については、補正されない。
【００４２】
従って、例えば５回の走査に対応した読取データをバッファに格納するとすると、位置合わせ後の５ライン分のデータは、図６に示すように、概ね同じバーに対応する０／１の連続箇所が同じサンプル番号の位置に出現するが、擦れや汚れの検出に伴って部分的にバーの幅や数が異なって検出されたものとなる。
【００４３】
以上の位置合わせの後、複合信号処理部２７は、全ての読取データについて、同じサンプル番号のデータを加算する（Ｓ１３）。その結果、各サンプル番号について、０から５（５ラインの場合）の値を持つ１つのデコード用データが生成される。
図７に、図６に示した５つの読取データを加算して得られるデコード用データを示す。このデコード用データは、グラフの形状としては、図６に示した５つのグラフを、縦方向に積み上げたものになっている。
【００４４】
次に、複合信号処理部２７は、ステップＳ１３の加算で得たデコード用データを２値化するための閾値を設定する（Ｓ１４）。この閾値は、加算後の読取データが取り得る最大値と最小値の中央の値を基準として、コード記号に擦れている箇所が多い場合には中央値から最大値と最小値の差の１０〜２０％を減じた値とするとよい。また、コード記号に汚れている箇所が多い場合には中央値に最大値と最小値の差の１０〜２０％を加えた値とするとよい（白バーが「０」、黒バーが「１」の場合）。
【００４５】
どの値とするかは、ユーザがボタン等で選択した標準／擦れ／汚れ等のモードに応じて決定してもよいし、ある閾値を採用してデコードが失敗した場合に他の閾値を用いてリトライするようにしてもよい。
いずれにせよ、閾値が決まると、複合信号処理部２７は、ステップＳ１３の加算で得たデコード用データを、ステップＳ１４で設定した閾値を用いて２値化し（Ｓ１５）、その２値化後のデコード用データをデコード部に出力して（Ｓ１６）処理を終了する。
デコード部は、複合信号処理部２７が出力したデコード用データに基づき、読取対象物上のバーコード記号におけるモジュールの配列を推定し、その配列が意味するデータを出力する、すなわち、バーコード記号をデコードする。
【００４６】
図８及び図９に、複合信号処理部２７がステップＳ１５で行う２値化の例を示す。いずれも（ａ）に図７に示した加算後のデコード用データにおける閾値の位置を横線で示し、（ｂ）にその閾値を用いた２値化の結果を示す。
図８に示すのは、閾値を小さい値とした場合の例である。コード記号の擦れが多い場合には、一部の走査ラインの読取データにおいては、黒バーの位置でも擦れのため白バーを示すデータとなっていることが考えられる。そこで、閾値を小さい値とすることにより、一部の走査ラインでのみ検出される黒バーのデータを、２値化後のデコード用データに精度よく反映させることができると考えられる。
【００４７】
図９に示すのは、閾値を大きい値とした場合の例である。コード記号の汚れが多い場合には、一部の走査ラインの読取データにおいては、白バーの位置でも汚れのため黒バーを示すデータとなっていることが考えられる。そこで、閾値を大きい値とすることにより、多くの走査ラインで黒バーが検出されている場合のみ２値化後のデコード用データで黒バーとすることができ、汚れに起因する黒バーのデータを２値化時に効率よく除去することができると考えられる。
【００４８】
従って、バーコードスキャナ１においては、ステップＳ１５の処理で生成されたデコード用データを用いてバーコード記号をデコードすることにより、擦れや汚れの影響を除去したデコードが可能となり、読取対象のバーコード記号に擦れや汚れがある場合のデコードの成功率を向上させることができる。
これは、人が読取装置又は読取対象物を持つ場合、正確な固定ができないため異なるタイミングの走査であれば異なる位置を走査することになるという現象を利用し、装置側の構成で意図的に走査位置を変えるラスタスキャンに相当する効果を、装置の構成を複雑化することなく、非常に安価に得られるようにしたものである。
【００４９】
なお、複合信号処理部２７の処理に用いる読取データ（走査ライン）の数は、３以上であればいくつでもよいが、実験により奇数が好ましいことがわかっている。これは、白と黒の判別が難しい場合でも、多数決でどちらかに決定することができるためであると考えられる。上述の実施形態では５ラインとしたが、演算速度やメモリ容量などを勘案して、好ましい走査ライン数を採用すればよい。
【００５０】
図４の処理においてステップＳ１１でバッファに格納するデータを２値化後の読取データとしているため、メモリの使用量はさほど大きくなく、この観点からは、多数の走査ラインのデータを用いることも考えられる。しかし、あまりライン数が多くなると走査時間に起因して１回のデコードトライに要する時間が長くなるため、例えば３〜９ライン程度が好ましいと考えられる。
【００５１】
また、図４のステップＳ１６の処理で出力したデコード用データを用いたデコードが失敗した場合には、再度読取データの取得から図４の全ての処理をやり直してもよいし、所定回数までは、ステップＳ１３で生成したデコード用データは同じものを用いて、ステップＳ１４で設定した閾値を変更して、２値化からやり直すようにしてもよい。ハードウェアの制約が許すのであれば、これらを並行して行ってもよい。以下の実施形態においても同様である。
【００５２】
〔第２の実施形態：図１０乃至図１６〕
次に、この発明の光学的情報読取装置の第２の実施形態であるコードスキャナについて説明する。
図１０に、このコードスキャナの概略ハードウェア構成を示す。
このコードスキャナ１００は、読み取り対象物上に設けられた、光反射率が周囲と異なるモジュールが２次元に配列されたコード記号である２次元バーコードやＱＲコード（登録商標、以下同様）等の２次元コードを読み取る装置であり、図１０に示すように、光学ヘッド部１１０及びデコーダ部１２０を有する。
【００５３】
このうち光学ヘッド部１１０は、レンズ１１１及び、固体撮像素子の一例であるＣＭＯＳ（Complementary Metal Oxide Semiconductor）イメージセンサ（以下単に「ＣＭＯＳ」という)１１２を備える。
レンズ１１１は例えば光学レンズであり、読取対象物の画像を光学ヘッド部１１０に取り入れ、ＣＭＯＳ１１２の撮像エリア上に結像させるためのものである。
【００５４】
ＣＭＯＳ１１２は、レンズ１１１が取り入れた読取対象物（コード記号を含むと想定される）からの反射光により、読取対象物を撮像し、その撮像で得たアナログの画像信号からデジタルの輝度値で表現される画像データを生成してデコーダ部１２０に出力する。
また、光学ヘッド部１１０は、光源の一例である発光ダイオード（ＬＥＤ）１１３も有し、ＬＥＤ１１３が照射する光により読取対象物を照明して、ＣＭＯＳ１１２により鮮明な画像を撮像できるようにしている。ただし、装置の構造によってはＬＥＤ１１３は設けなくてもよい。
【００５５】
次に、デコーダ部１２０は、第１の入出力インタフェース（第１Ｉ／Ｏ）１２１，ＡＳＩＣ（Application Specific Integrated Circuit）１２２，ＲＡＭ１２３，ＲＯＭ１２４，第２の入出力インタフェース（第２Ｉ／Ｏ）１２５を備える。
このうち第１Ｉ／Ｏ１２１は、光学ヘッド部１１０とデコーダ部１２０との間で、制御信号やＣＭＯＳ１１２が出力する画像データなどを送受信するためのインタフェースである。
【００５６】
ＡＳＩＣ１２２は、ＣＭＯＳ１１２及びＬＥＤ１１３の制御、ＣＭＯＳ１１２から第１Ｉ／Ｏ１２１を介して入力される読取対象物の画像データに対し、ノイズ除去のためのフィルタ処理や、デコード準備のためのデータ加工処理、加工後の画像データに基づくコード記号のデコード処理等を行う。なお、デコード処理の詳細については、例えば特開２００５−２５４１７号公報に記載の手法など、公知の任意の手法を採用すればよい。
【００５７】
ＲＡＭ１２３は、ＣＭＯＳ１１２から入力される画像データを一時的に記憶したり、デコード準備のためのデータ加工処理の際にワークメモリとして用いたり、その他コードスキャナ１００の動作に必要なデータなど動的に変更するデータを記憶したりする記憶手段である。一部を不揮発性としてもよい。
【００５８】
ＲＯＭ１２４は、コードスキャナ１００を起動させるプログラムなどを記憶する不揮発性の記憶手段である。
第２Ｉ／Ｏ１２５は、不図示のホストコンピュータ等の外部装置とデータ通信を行うためのインタフェースであり、ＡＳＩＣ１２２によるデコード後のデータを第２Ｉ／Ｏ１２５を介して外部装置に出力することができる。
【００５９】
次に、以上のような構成を有するコードスキャナ１００において、ＡＳＩＣ１２２がコード記号のデコードのために実行する処理について説明する。
図１１に、コードスキャナ１００が読み取るコード記号の例を、図１２に、ＡＳＩＣ１２２が実行する処理のフローチャートを示す。
ＡＳＩＣ１２２は、ＣＭＯＳ１１２から画像データが入力されると、ＲＯＭ１２４に記憶されている所定のプログラムを実行することにより、図１２のフローチャートに示す処理を開始する。
【００６０】
そしてまず、ＣＭＯＳ１１２が出力する、異なるタイミングでの複数回の撮像に対応した画像データを、ＲＡＭ１２３に格納する（Ｓ１１１）。なお、読取装置又は読取対象物を人が手で持つ場合、完全な固定はできないので、撮像タイミング毎に撮像位置が微妙にずれ、それに応じて画像中のコード記号の位置も画像データ毎に異なると考えられる。この点は、第１の実施形態で説明した走査の場合と同様である。また、この格納の前や後に、ノイズ除去、ピントずれの補正等の処理を行ってもよい。
【００６１】
次に、ＡＳＩＣ１２２は、コード記号におけるモジュールの各ラインを処理対象として、ステップＳ１１３乃至Ｓ１１７の処理を順次実行する（Ｓ１１２，Ｓ１１８及びＳ１１９）。
ここで、コードスキャナ１００により読み取るコード記号が図１１に示すようなＱＲコードであるとすると、このコード記号は、黒い正方形のモジュールと白い正方形のモジュールを、図で横方向及び縦方向に、所定の規則に従って配列したものとなっている。そして、このモジュールの１つ分の幅の縦方向又は横方向の並びを、モジュールの「ライン」と呼ぶ。
【００６２】
そして、ステップＳ１１３乃至Ｓ１１７の処理において、ＡＳＩＣ１２２はまず、ＲＡＭ１２３に格納した各画像データにつき、処理対象のラインに当たる部分を特定する（Ｓ１１３）。コード記号には、位置合わせ用のマークが設けられているため、まずそのマークの位置を特定することにより、マークの位置を基準にモジュールの各ラインの位置も決定することができる。図１１に示したＱＲコードであれば、右上、左上及び左下にある、正方形状のマークがこれに該当する。
【００６３】
そして次に、各画像データのうちステップＳ１１３で特定した部分から、１画素ライン分のデータを読取データとして抽出する（Ｓ１１４）。ここでの抽出は、モジュールの配列方向に平行なラインに沿って行う。従って、ＣＭＯＳ１１２における画素のラインと、モジュールのラインとが平行でない場合には、ステップＳ１１４で抽出するデータは、ＣＭＯＳ１１２における画素のラインに沿った位置からの抽出とはならない。しかし、抽出する画素の数は、ラインの向きによらず一定であることが好ましい。
なお、ステップＳ１１３で特定した部分の幅が１画素ライン分しかなければ、その部分全てを抽出することになる。また、１画素ライン分よりも狭ければ、特定した部分の周囲の画素も含めて抽出してもよい。
【００６４】
次に、ＡＳＩＣ１２２は、ステップＳ１１４で抽出した読取データを、所定の閾値で２値化する（Ｓ１１５）。ここで用いる閾値は、従来知られた方法でデコードを行う場合と同じ方法で設定すればよい。
その後、ＡＳＩＣ１２２は、図４のステップＳ１２及びＳ１３の場合と同様、ステップＳ１１５で２値化した各読取データの位置合わせを行うと共に、対応する画素の画素値を加算したデコード用データを生成する（Ｓ１１６，Ｓ１１７）。ステップＳ１１５の位置合わせでは、モジュールのライン方向の位置が等しい画素同士が対応付けられる（同じサンプル番号となる）はずであるので、この加算で得られるデータは、モジュールのライン方向の位置が等しい画素の２値化後のデータを複数タイミングの画像分加算したものとなる。
【００６５】
モジュールの全ラインについて以上のデコード用データが用意できると、処理はステップＳ１２０へ進む。そして、ＡＳＩＣ１２２は、このデコード用データを２値化するための閾値を、図４のステップＳ１４の場合と同様に設定する。
そしてその後、ステップＳ１１７の処理で得た各ラインのデコード用データを、ステップＳ１２０で設定した閾値を用いて２値化し（Ｓ１２１）、その２値化後のデコード用データに基づきコード記号をデコードする（Ｓ１２２）。具体的には、モジュールの各ラインと対応する２値化後のデコード用データに基づき、そのラインにおけるモジュールの配列を推定し、それを全ライン分組み合わせてコード記号全体におけるモジュールの配列を推定し、その配列が意味するデータを生成する。
そして、そのデコード結果を第２Ｉ／Ｏ１２５から出力して（Ｓ１２３）、処理を終了する。
【００６６】
以上の処理により、コードスキャナ１００においても、第１の実施形態のバーコードスキャナ１の場合と同様、擦れや汚れの影響を除去したデコードが可能となり、読取対象のバーコード記号に擦れや汚れがある場合のデコードの成功率を向上させることができる。
また、コード記号の撮影距離が遠い場合など、撮像で得た画像データ中でコード記号の画像が占める面積が小さい場合や、ＣＭＯＳ１１２の画素数が少ない場合などには、モジュール１ラインの幅が、１画素程度となってしまう場合もある。この場合、モジュールが画素とぴったり重なるか、少しずれるか等により、画像データにおけるモジュールと対応する画素値が大きく異なる場合もある。
【００６７】
しかし、図１２のように複数回の撮像に対応した画像データを用いたデコードを行うことにより、モジュールと画素との位置関係の異なる複数の画像データの内容を考慮した、適切なデコードが可能となる。
すなわち、図１３に示すように、ＣＭＯＳ１１２においてコード記号の画像が示す画素数が少ない状態で撮像が行われた場合、（ａ）乃至（ｃ）に示すように、撮像タイミング毎にモジュールと画素の位置関係が変わり、微妙に異なった画像が得られる。
【００６８】
この状態で図１２のステップＳ１１４〜Ｓ１１６のように１画素ライン分のデータを抽出し、２値化及び位置合わせを行うと、図１４のＡ〜Ｃに示すように、読取タイミング毎に異なった読取データが得られる。なお、図１４は、特徴を分かりやすくするためにデータの内容を簡略化して示しており、図１３の内容をそのまま反映したものではない。
そして、図１４のデータを加算して生成されるデコード用データは、図１５に示すものとなる。そしてこれを適当な閾値で２値化することにより、図１６に示すデコード用データが得られる。
【００６９】
この２値化したデコード用データにおいては、図１４のＡ〜Ｃのうち、１つのみ黒を示す「１」であり、残りが白を示す「０」である場合にはその画素は「０」とみなし、２つ以上が「１」である場合にはその画素は「１」とみなしている。
従って、モジュールと画素の位置関係により、たまたま隣接ラインの黒モジュールが写り込んで黒画素が生じたような場合に、その黒画素をデコード時に考慮しないようにすることができる。また、たまたま隣接ラインの白モジュールが写り込んで白画素が生じたような場合に、その白画素もデコード時に考慮しないようにすることができる。そして、各画素に安定的に出現する値を組み合わせて最終的なデコードを行うことができるので、デコードの成功率を向上させることができる。
【００７０】
また、２次元コードをデコードする場合、コード記号に含まれる所定の位置決めマークに従ってコード記号の画像を水平又は垂直方向にスライスしたり、ブロックに分割したりしてからデコード処理に供することにより、デコードの精度を上げることが従来から行われている。しかし、以上説明してきた手法を用いることにより、モジュールのライン毎の２値化データを高い精度で得ることができるため、デコードのやり直しが少なくて済み、結果として、単なるスライスやブロック毎の２値化より、高速で精度のよいデコードが可能となる。
【００７１】
なお、図１２の処理で参照する画像データの数（撮像回数）は、３以上であればいくつでもよいが、実験により奇数が好ましいことがわかっている。これは、白と黒の判別が難しい場合でも、多数決でどちらかに決定することができるためであると考えられる。図１３乃至図１６の例では撮像３回分としたが、演算速度やメモリ容量などを勘案して、好ましい走査ライン数を採用すればよい。
【００７２】
また、図１２の処理は、必ずしも図示の手順で行う必要はない。例えば、モジュールの全てのラインについて先に読取データの抽出（Ｓ１１４）及び２値化（Ｓ１１５）を行ってしまい、この時点で画像データを廃棄してしまえば、比較的容量の大きいデータを記憶するＲＡＭの記憶領域を早期に解放して、メモリの利用効率を向上させることができる。
【００７３】
〔第３の実施形態：図１７乃至図２２〕
次に、この発明の光学的情報読取装置の第３の実施形態であるコードスキャナについて説明する。
この実施形態のコードスキャナ１００は、第２の実施形態の場合と同様、２次元コードを読み取る装置であり、ハードウェア構成は第２の実施形態と同じであり、ＡＳＩＣ１２２が実行する処理の内容が一部異なるのみである。そこで、相違点についてのみ説明する。また、第２の実施形態と対応する箇所については、同じ符号を用いる。
【００７４】
図１７に、第３の実施形態のコードスキャナ１００においてＡＳＩＣ１２２が実行する、図１２と対応する処理のフローチャートを示す。
このフローチャートの処理は、ステップＳ１１１′及びＳ１１４′の処理が図１２と異なり、その他の処理は図１２と同じものである。ステップＳ１１３′は、表記が形式的に異なるのみである。
すなわち、まず、ステップＳ１１１′では、ＣＭＯＳ１１２が出力する１回の撮像に応じた画像データをＲＡＭ１２３に格納する。
【００７５】
そして、ステップＳ１１４′では、ステップＳ１１１′で格納した画像データのうちステップＳ１１３′で特定した部分（モジュール１ライン）から、複数画素ライン分のデータを画素ライン毎に読取データとして抽出する。ここで抽出すべき画素ライン数は、第２の実施形態における撮像回数に対応するものである。
すなわち、第２の実施形態では複数回の撮像に対応する画像データを用いることにより複数ライン分の読取データを得ていたところ、第３の実施形態では、１回の撮像に対応する画像データから、複数ライン分の読取データを取得する。
【００７６】
撮像で得た画像データ中でコード記号の画像が占める面積が大きい場合や、ＣＭＯＳ１１２の画素数が多い場合など、モジュール１ラインを、十分な画素数で撮像できる場合には、このような処理によっても、第２の実施形態の場合と同様な効果を得ることができる。すなわち、擦れや汚れの影響を除去したデコードが可能となり、読取対象のバーコード記号に擦れや汚れがある場合のデコードの成功率を向上させることができる。
【００７７】
例えば、図１８に拡大して示すように、コード記号の一部に擦れがある場合、このコード記号を撮像して得た画像データのうち、モジュール１ラインに当たる領域から、Ａ〜Ｃで示す３本の画素ラインのデータを読取データとしてそれぞれ抽出するとすると、２値化及び位置合わせ後の読取データの内容は、図１９に示すものとなる。すなわち、ＢとＣのラインの読取データは、コード記号におけるモジュールの配列を正確に反映しているが、Ａのラインは、コード記号が擦れて黒モジュールが欠けている部分を通っているため、読取データも、これに応じて、黒部分が欠けたデータとなる。
【００７８】
そして、図１９のデータを加算して生成されるデコード用データは、図２０に示すものとなる。そしてこれを適当な閾値で２値化することにより、図２１に示すデコード用データが得られる。
この２値化したデコード用データにおいては、図１９のＡ〜Ｃのうち、１つでも黒を示す「１」がある場合にはその画素は「１」とみなしている。擦れのあるコード記号を読み取ることが予め分かっており、２値化の閾値を低い（白側に近い）値としているためである。
【００７９】
従って、読取データとして取得する画素ラインの設定位置が、たまたま擦れを跨ぐ位置となった場合でも、一部に擦れを跨がない画素ラインを設定できれば、最終的なデコード用データとしては、擦れのない状態のコード記号を反映したデータを用いることができる。また、同様の考え方により画素ラインの設定位置がたまたま汚れを跨ぐ位置となった場合でも、一部に汚れを跨がない画素ラインを設定できれば、最終的なデコード用データとしては、擦れのない状態のコード記号を反映したデータを用いることができる。従って、読取対象のコード記号に擦れや汚れがある場合でも、デコードの成功率を向上させることができる。
【００８０】
なお、ステップＳ１１４′で複数ライン分の読取データを取得する際、モジュール１ラインに当たる領域を構成する画素数が少なく、この領域から十分なライン数のデータを取得できないと判断した場合には、エラーとしてもよいが、ＣＭＯＳ１１２が出力する別の撮像に対応した画像データをＲＡＭに再度格納し、その画像データから、不足するライン数分のデータを取得するようにすると、エラーの発生を低減できる。
【００８１】
以上で実施形態の説明を終了するが、装置の構成や具体的な処理の内容、処理に用いる
計算式、読取対象のコード記号の種類等が上述の実施形態で説明したものに限られないことはもちろんである。
また、この発明の光学的情報読取装置は、据え置き型の装置としても、手持ち型の装置としても、構成することができる。
また、以上述べてきた構成及び変形例は、矛盾しない範囲で適宜組み合わせて適用することも可能である。
【産業上の利用可能性】
【００８２】
この発明による光学的情報読取装置と光学的情報読取方法は、流通，郵便，医療，化学検査，イベント会場などの広範な分野で、物品，書類，材料，被検体，その他各種の物の認識のために、物品や商品に貼付されたコード記号の情報を読み取る光学的情報読取装置及びこのような光学的情報読取装置を用いた情報の読み取りに好適である。特に、コード記号に擦れや汚れが生じやすい状況が想定される場合において、好適である。
【符号の説明】
【００８３】
１…バーコードスキャナ、１１…レーザ光源、１２…集光レンズ、１３…開口絞り、１４…スキャニングミラー、１５…結像レンズ、１６…光電変換器、２０…処理回路、２１…Ｉ／Ｖ変換部、２２…微分信号生成部、２３…ローパスフィルタ、２４…自動利得制御部、２５…ピーク検出部、２６…パルス波形生成部、２７…複合信号処理部、３０…読取対象物、３１…バーコード、１００…コードスキャナ、１１０…光学ヘッド部、１１１…レンズ、１１２…ＣＭＯＳ、１１３…ＬＥＤ、１２０…デコーダ部、１２１…第１Ｉ／Ｏ、１２２…ＡＳＩＣ、１２３…ＲＡＭ、１２４…ＲＯＭ、１２５…第２Ｉ／Ｏ
【図１】
2011233099.tif 000004
【図２】
2011233099.tif 000005
【図４】
2011233099.tif 000006
【図１０】
2011233099.tif 000007
【図１１】
2011233099.tif 000008
【図１２】
2011233099.tif 000009
【図１４】
2011233099.tif 000010
【図１５】
2011233099.tif 000011
【図１６】
2011233099.tif 000012
【図１７】
2011233099.tif 000013
【図１８】
2011233099.tif 000014
【図１９】
2011233099.tif 000015
【図２０】
2011233099.tif 000016
【図２１】
2011233099.tif 000017
【図３】
2011233099.tif 000018
【図５】
2011233099.tif 000019
【図６】
2011233099.tif 000020
【図７】
2011233099.tif 000021
【図８】
2011233099.tif 000022
【図９】
2011233099.tif 000023
【図１３】
2011233099.tif 000024