光学的情報読取装置及び光学的情報読取方法
【課題】 擦れや汚れがある場合でも高速かつ正確にコード記号を読み取れるようにする。
【解決手段】 コードスキャナにおいて、CMOSが異なる3以上の複数タイミングで撮像した画像についてそれぞれ、その画像のうち読取対象のコード記号を構成するモジュールの同じ1ラインに相当する部分から、モジュールのラインに平行な画素列の各画素の画像データを取得し(S111〜S114)、その各画素列の画像データを、画像毎に2値化すると共に、モジュールのライン方向の位置が等しい画素の2値化後のデータを上記複数タイミングの画像分加算して、コード記号のうちモジュール1ライン分のデコード用データを得て(S115〜S117)、そのデコード用データを所定の閾値でさらに2値化し(S120,S121)、その2値化後のデコード用データに基づきコード記号をデコードするようにした(S122)。
【解決手段】 コードスキャナにおいて、CMOSが異なる3以上の複数タイミングで撮像した画像についてそれぞれ、その画像のうち読取対象のコード記号を構成するモジュールの同じ1ラインに相当する部分から、モジュールのラインに平行な画素列の各画素の画像データを取得し(S111〜S114)、その各画素列の画像データを、画像毎に2値化すると共に、モジュールのライン方向の位置が等しい画素の2値化後のデータを上記複数タイミングの画像分加算して、コード記号のうちモジュール1ライン分のデコード用データを得て(S115〜S117)、そのデコード用データを所定の閾値でさらに2値化し(S120,S121)、その2値化後のデコード用データに基づきコード記号をデコードするようにした(S122)。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、光反射率が周囲と異なるモジュールが配列されたコード記号により示される情報を読み取る光学的情報読取装置及び光学的情報読取方法に関する。
【背景技術】
【0002】
光反射率が周囲と異なるモジュールが配列されたコード記号として、従来から、在庫管理等を目的として、モジュールを1次元に配列したバーコード記号が広く用いられている。また、近年は、より情報密度の高いコード記号としてモジュールを2次元に配列した2次元コード記号も使用されている。
【0003】
そして、バーコード記号を読み取る装置としては、レーザビームによりコード記号を走査し、各位置の反射光強度を検出して2値化し、デコードする装置が知られている。また、2次元コード記号を読み取る装置としては、CMOS(Complementary Metal Oxide Semiconductor)イメージセンサやCCD(Charge Coupled Device)イメージセンサ等の固体撮像素子で2次元コードを撮影し、その画像に様々な処理を施した上で2値化し、デコードする装置が知られている。
【0004】
また、これらの読取装置には、大別してハンディ(手持ち式)と定置式がある。
このうち定置式は、読取装置のガイド光が照らす領域に読取対象物を持っていけば情報入力できるので、小売店や書店のレジで商品に付されたコード記号を読み取る場合など、作業が定位置で行われる場合に有用である。一方ハンディは、軽く人間の手で持ちやすくなっているので、倉庫などで作業者が移動して大きな物品に付されたコード記号を読み取る時などに有用である。また、携帯電話等の端末機器に、バーコード・二次元コードデコード機能が装備されている場合もある。
【0005】
ここで、ハンディの読取装置(携帯電話等に搭載される場合を含む)を使用する場合、人間が手で持つのでどうしても多少手がふるえ、コード記号を走査したり撮影したりする際に手ぶれが生じてしまう。そのため、特許文献1乃至3のように、手ぶれに対応する機能を備えた読取装置が開発されている。
【0006】
特許文献1には、手ぶれ等によってバーコードを読み取れなかった場合、エラーと判断し再度バーコードの読み取りを行うことが記載されている。
特許文献2には、手ぶれに関する補正をソフトウェア的に行う機能として、コード記号を撮像して得られた画像データのデコードに失敗した場合に、画像の一部(予備補正領域)に種々の補正量で手ぶれ補正を行って、補正後の画像に対してデコードが良好に行えた補正量を採用し、その補正量で画像データ全体に対して手ぶれ補正を行う機能を備えた装置が記載されている。
特許文献3には、2次元コードを撮像をする際、ボタン操作等に伴い手ぶれの発生し易い期間を避けてコード記号を撮像するために、ユーザによる撮像指示があってから少し時間をおいて撮像するようにすることが記載されている。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2004−355451号公報
【特許文献2】特開2005−196543号公報
【特許文献3】特開2005−309562号公報
【特許文献4】特開平11−161734号公報
【特許文献5】特開2000−306036号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、特許文献1及び3に記載の発明では、上述した倉庫、店舗などコード記号の読み取りを次々と短時間で行う場合、エラーが何度も発生したり、撮像までに時間かかったりすると、作業効率が低下してしまう。
また、特許文献2に記載の発明のように、演算により手ぶれの補正を行おうとすると、アルゴリズムが複雑になり、演算量も大きくなるため、演算能力の高いプロセッサを搭載する必要が生じ、コストアップや処理時間の増大につながる。
【0009】
元々、手ぶれは、人間が読取装置を手で持つ場合には無くすことはできない。そして、その補正を完璧に行おうとするならば、機器自体になんらかの負担をかけてしまう。またこの点は、読取装置を固定し、人が読取対象物の方を持つ場合にも同様である。
一方で、従来の読取装置においては、読取対象のコード記号に擦れや汚れがあり、形状が正確でない場合、何度もエラーが生じて読み取りに時間がかかったり、そもそも読み取りができなかったりしていた。一旦商品等に印刷したり貼り付けたりした時点ではコード記号の品質に問題なかったとしても、その後、他の物とぶつかったり水濡れする等して、コード記号に擦れや汚れが生じることも考えられる。従って、擦れや汚れがある場合でも高速かつ正確にコード記号を読み取れる読取装置が望まれる。
このような問題に対応するための技術としては、例えば特許文献4及び特許文献5に記載のものが知られているが、いずれもコスト、精度、運用の容易さ等を総合的に見た場合には不十分な点があった。
【0010】
この発明は、このような背景に鑑みてなされたものであり、手ぶれが生じる環境でも効率よくコード記号により示される情報を読み取れるようにすることを目的とする。併せて、この目的を実現するための技術を利用して、擦れや汚れがある場合でも高速かつ正確にコード記号を読み取れる読取装置を提供することを、目的とする。
【課題を解決するための手段】
【0011】
この発明は、上記の目的を達成するため、光反射率が周囲と異なるモジュールが2次元に配列されたコード記号により示される情報を読み取る光学的情報読取装置において、読取対象物の画像を撮像する撮像手段と、その撮像手段が異なる3以上の複数タイミングで撮像した画像についてそれぞれ、その画像のうち上記コード記号を構成するモジュールの同じ1ラインに相当する部分から、上記モジュールのラインに平行な画素列の画像データを取得する画像データ取得手段と、上記画像データ取得手段が取得した上記各画素列の画像データをその画素列毎に2値化すると共に、上記モジュールのライン方向の位置が等しい画素の2値化後のデータを上記複数タイミングの画像分加算して、上記コード記号のうちモジュール1ライン分のデコード用データを得る加算手段と、上記加算手段が得た上記デコード用データを所定の閾値で2値化する2値化手段と、上記2値化手段による上記2値化後のデコード用データに基づき、上記コード記号を構成する1ライン分のモジュールの配置を推定する推定手段と、を設けたものである。
【0012】
また、この発明の別の光学的情報読取装置は、光反射率が周囲と異なるモジュールが2次元に配列されたコード記号により示される情報を読み取る光学的情報読取装置において、読取対象物の画像を撮像する撮像手段と、その撮像手段が撮像した画像のうち、上記コード記号を構成するモジュール1ラインに相当する部分から、上記モジュールのラインに平行な3以上の複数画素列の画像データを取得する画像データ取得手段と、上記画像データ取得手段が取得した上記各画素列の画像データをその画素列毎に2値化すると共に、上記モジュールのライン方向の位置が等しい画素の2値化後のデータを上記複数画素列分加算して、上記コード記号のうちモジュール1ライン分のデコード用データを得る加算手段と、上記加算手段が得た上記デコード用データを所定の閾値で2値化する2値化手段と、上記2値化手段による上記2値化後のデコード用データに基づき、上記コード記号を構成する1ライン分のモジュールの配置を推定する推定手段と、を設けたものである。
【0013】
また、この発明のさらに別の光学的情報読取装置は、光反射率が周囲と異なるモジュールが1次元に配列されたコード記号により示される情報を読み取る光学的情報読取装置において、読取対象物を光走査してその反射光強度に応じた読取信号を出力する走査手段と、その走査手段が異なる3以上の複数タイミングで上記光走査を行って出力する読取信号を走査タイミング毎に2値化すると共に、上記モジュールの配列方向の等しい位置に対応する2値化後の値を上記複数タイミングの読取信号分加算し、上記コード記号のデコード用データを得る加算手段と、上記加算手段が得た上記デコード用データを所定の閾値で2値化する2値化手段と、上記2値化手段による上記2値化後のデコード用データに基づき、上記コード記号を構成するモジュールの配列を推定する推定手段と、を設けたものである。
【0014】
また、この発明のさらに別の光学的情報読取装置は、光反射率が周囲と異なるモジュールが配列されたコード記号により示される情報を読み取る光学的情報読取装置において、その読取対象物の各位置の光反射率に応じた読取信号を出力する読取手段と、その読取手段が出力する読取信号のうち、上記コード記号を構成するモジュールの同じラインの位置の光反射率を示す読取信号を、3以上の複数通り取得し、その読取信号毎に2値化すると共に、上記モジュールのライン方向の等しい位置に対応する2値化後の値を上記複数通りの読取信号分加算し、上記モジュールのデコード用データを得る加算手段と、上記加算手段が得た上記デコード用データを所定の閾値で2値化する2値化手段と、上記2値化手段による上記2値化後のデコード用データに基づき、上記コード記号を構成するモジュールの配列を推定する推定手段と、を設けたものである。
【0015】
また、上記の各光学的情報読取装置において、上記2値化手段による2値化の閾値として、上記加算手段による加算後の読取データが取り得る最大値と最小値の中央の値である中央値から上記最大値と上記最小値の差の10〜20%を減じた値と、上記中央値に上記最大値と上記最小値の差の10〜20%を減じた値とからいずれか一方を選択して設定する手段を設けるとよい。
【0016】
また、この発明の光学的情報読取方法は、光反射率が周囲と異なるモジュールが2次元に配列されたコード記号により示される情報を読み取る光学的情報読取方法において、読取対象物の画像を撮像する撮像工程と、その撮像工程で異なる3以上の複数タイミングで撮像した画像についてそれぞれ、その画像のうち上記コード記号を構成するモジュールの同じ1ラインに相当する部分から、上記モジュールのラインに平行な画素列の画像データを取得する画像データ取得工程と、上記画像データ取得工程で取得した上記各画素列の画像データを、その画素列毎に2値化すると共に、上記モジュールのライン方向の位置が等しい画素の2値化後のデータを上記複数タイミングの画像分加算し、上記コード記号のうちモジュール1ライン分のデコード用データを得る加算工程と、上記加算工程で得た上記デコード用データを所定の閾値で2値化する2値化工程と、上記2値化工程による上記2値化後のデコード用データに基づき、上記コード記号を構成する1ライン分のモジュールの配置を推定する推定工程と、を設けたものである。
【0017】
また、この発明の別の光学的情報読取方法は、光反射率が周囲と異なるモジュールが2次元に配列されたコード記号により示される情報を読み取る光学的情報読取方法において、読取対象物の画像を撮像する撮像工程と、その撮像工程で撮像した画像のうち、上記コード記号を構成するモジュール1ラインに相当する部分から、上記モジュールのラインに平行な3以上の複数画素列の画像データを取得する画像データ取得工程と、上記画像データ取得工程で取得した上記各画素列の画像データを、その画素列毎に2値化すると共に、上記モジュールのライン方向の位置が等しい画素の2値化後のデータを上記複数画素列分加算し、上記コード記号のうちモジュール1ライン分のデコード用データを得る加算工程と、上記加算工程で得た上記デコード用データを所定の閾値で2値化する2値化工程と、上記2値化工程による上記2値化後のデコード用データに基づき、上記コード記号を構成する1ライン分のモジュールの配置を推定する推定工程と、を設けたものである。
【0018】
また、この発明のさらに別の光学的情報読取方法は、光反射率が周囲と異なるモジュールが1次元に配列されたコード記号により示される情報を読み取る光学的情報読取方法において、読取対象物を光走査してその反射光強度に応じた読取信号を出力する走査工程と、その走査工程で異なる3以上の複数タイミングで上記光走査を行って出力される読取信号を走査タイミング毎に2値化すると共に、上記モジュールの配列方向の等しい位置に対応する2値化後の値を上記複数タイミングの読取信号分加算し、上記コード記号のデコード用データを得る加算工程と、上記加算工程で得た上記デコード用データを所定の閾値で2値化する2値化工程と、上記2値化工程による上記2値化後のデコード用データに基づき上記コード記号を構成するモジュールの配列を推定する推定工程と、を設けたものである。
【0019】
また、この発明のさらに別の光学的情報読取方法は、光反射率が周囲と異なるモジュールが配列されたコード記号により示される情報を読み取る光学的情報読取方法において、その読取対象物の各位置の光反射率に応じた読取信号を出力する読取工程と、その読取工程で出力される読取信号のうち、上記コード記号を構成するモジュールの同じラインの位置の光反射率を示す読取信号を、3以上の複数通り取得し、その読取信号毎に2値化すると共に、上記モジュールのライン方向の等しい位置に対応する2値化後の値を上記複数通りの読取信号分加算し、上記モジュールのデコード用データを得る加算工程と、上記加算工程で得た上記デコード用データを所定の閾値で2値化する2値化工程と、上記2値化工程による上記2値化後のデコード用データに基づき、上記コード記号を構成するモジュールの配列を推定する推定工程と、を設けたものである。
【0020】
また、上記の各光学的情報読取方法において、上記2値化工程における2値化の閾値として、上記加算工程による加算後の読取データが取り得る最大値と最小値の中央の値である中央値から上記最大値と上記最小値の差の10〜20%を減じた値と、上記中央値に上記最大値と上記最小値の差の10〜20%を減じた値とからいずれか一方を選択して設定する工程を設けるとよい。
【発明の効果】
【0021】
この発明による光学的情報読取装置及び光学的情報読取方法によれば、擦れや汚れがある場合でも高速かつ正確にコード記号を読み取れる読取装置を提供することができる。また、手ぶれが生じる環境でも効率よくコード記号により示される情報を読み取ることができる。
【図面の簡単な説明】
【0022】
【図1】この発明の光学的情報読取装置の第1の実施形態であるバーコードスキャナの光学系の構成を示す図である。
【図2】図1に示した処理回路の概略構成を示す図である。
【図3】図1に示した処理回路の各位置における読取信号の波形を示す図である。
【図4】図2に示した複合信号処理部27が実行する処理のフローチャートである。
【図5】擦れや汚れのあるバーコードの例を示す図である。
【0023】
【図6】図4の処理による位置合わせ後の読取データの例を示す図である。
【図7】図6に示した5つの読取データを加算して得られるデコード用データを示す図である。
【図8】図4のステップS15で行う2値化の例を示す図である。
【図9】その別の例を示す図である。
【図10】この発明の光学的情報読取装置の第2の実施形態であるコードスキャナの概略ハードウェア構成を示す図である。
【0024】
【図11】図10に示したコードススキャナが読み取るコード記号の例を示す図である。
【図12】図10に示したASICが実行する処理のフローチャートである。
【図13】CMOSによる撮像で得られる画像の例を示す図である。
【図14】図12の処理による2値化及び位置合わせ後の読取データの例を示す図である。
【図15】図14のデータを加算して生成されるデコード用データを示す図である。
【0025】
【図16】図15のデータを2値化して得られるデコード用データを示す図である。
【図17】この発明の光学的情報読取装置の第3の実施形態であるコードスキャナにおいてASICが実行する処理のフローチャートである。
【図18】擦れのあるコード記号の例を示す図である。
【図19】図17の処理による2値化及び位置合わせ後の読取データの例を示す図である。
【図20】図19のデータを加算して生成されるデコード用データを示す図である。
【図21】図20のデータを2値化して得られるデコード用データを図である。
【発明を実施するための形態】
【0026】
以下、この発明を実施するための形態を図面に基づいて具体的に説明する。
〔第1の実施形態:図1乃至図9〕
まず、この発明の光学的情報読取装置の第1の実施形態であるバーコードスキャナについて説明する。
図1に、このバーコードスキャナの光学系の構成を示す。
このバーコードスキャナ1は、読み取り対象物上に設けられた、光反射率が周囲と異なるモジュールである白バー及び黒バーが1次元に配列されたコード記号であるバーコードを読み取る装置であり、図1に示すように、レーザ光源11,集光レンズ12,開口絞り13,スキャニングミラー14,結像レンズ15,光電変換器16,処理回路20を有する。
【0027】
そして、バーコードスキャナ1は、半導体レーザを光源とするレーザ光源11の発光点11aから出力されるレーザビームを、集光レンズ12を通過させた後、開口絞り13で径を絞り、スキャニングミラー14により偏向させて、読取対象物30上に設けられたバーコード31に対して照射し、バーコード31上をレーザビームのビームスポットにより走査できるように構成している。スキャニングミラー14は、図1では平面鏡として示しているが、実際には正多角形柱上で側面が鏡面となっているポリゴンミラーを用いてもよい。
【0028】
一方、結像レンズ15には、読取対象物30により反射されてきた走査レーザビームを入射させ、フォトダイオードからなる光電変換器16上に結像させる。そして、光電変換器16がその反射光を、強度に応じたアナログ電気信号に変換し、処理回路20による解析に供する。
【0029】
図2に、この処理回路の概略構成を示す。
処理回路20はまず、光電変換器16から入力する読取信号を解析に好適な信号に変換するための構成として、光電変換器16から入力する電流信号を電圧信号に変換するI/V変換部21と、その電圧信号を増幅すると共に微分する微分信号生成部22と、その微分信号生成部22で微分された電気信号のうち所定周波数以下の低域成分の信号だけを通過させて出力するローパスフィルタ23と、その出力信号に応じて微分信号生成部22における微分の時定数及び増幅の利得を制御する自動利得制御(AGC)部24とを有する。
【0030】
このうち微分信号生成部22は、前置増幅器22aと可変利得増幅器(微分回路付き)22bからなる。可変利得増幅器22bにおける微分の時定数及び増幅の利得は自動利得制御部24によって生成される制御信号Scに応じて変化する。
その自動利得制御部24は、ローパスフィルタ23の出力部から分岐して可変利得増幅器22bに帰還する閉ループ型の制御系であり、ピーク値検出器24aと比較器24bと基準レベル設定回路24cとからなる。
【0031】
ピーク値検出器24aは、ローパスフィルタ23の出力信号の振幅のピーク電圧(ピーク値)を検出してある時定数で保持し、それを比較器24bが基準レベル設定回路24cによって設定された基準電圧値と比較し、その比較結果に応じた制御信号Scを出力して可変利得増幅器22bにおける微分の時定数及び増幅の利得を制御する。この一連の動作で読取信号からノイズが除去される。
この部分の詳細な回路構成としては、例えば特開2004−15671号公報に記載のものを採用することができる。
【0032】
また、処理回路20は、ローパスフィルタから出力される解析に好適な読取信号(微分信号)の解析を行うための構成として、ピーク検出部25、パルス波形生成部26及び複合信号処理部27を有する。
そして、ピーク検出部25が、微分信号のピーク位置を検出し、パルス波形生成部26が、そのピーク位置に基づいて、2値の読取データを生成する。
【0033】
ここで、2値の読取データの生成アルゴリズムについて説明するため、図3に、処理回路20の各位置における読取信号の波形を示す。
(a)に示すのが、可変利得増幅器(微分回路付き)22bによる微分及び増幅後の波形であり、(b)に示すのが、ローパスフィルタ23によりノイズを除去した後の波形である。
バーコード記号の走査で得られる反射光強度は、白バーによる高い反射光強度と、黒バーによる低い反射光強度とが交互に出現するものとなるが、時間微分を取ると、白バーと黒バーとの境界付近で、微分値の絶対値が大きくなると考えられる。
【0034】
そこで、(b)に示すノイズ除去後の微分波形において、ピーク検出部25により、(c)に黒丸で示すような、絶対値の大きなピークを検出すると、その位置が、白バーと黒バーとの境界に対応する位置であると考えられる。従って、初めはコード記号の背景(ここではデータ値「0」の白)に当たるデータ値でスタートし、ピーク検出部25が検出したピークに当たる位置で0/1を反転させることにより、(d)の下側に示すような、走査ライン上の各サンプルタイミングにおけるビームスポットの位置の反射光強度を示す2値の読取データを得ることができる。
【0035】
(b)の信号には、ローパスフィルタ23により除去しきれなかったノイズが混じることもあるが、ピーク検出時に前のピークからの絶対値変化が小さいピークは無視する等すれば、このようなノイズも適切に取り除くことができる。
この手法によれば、反射光強度自体の信号を2値化するより、ノイズの影響を受けづらく、コード記号における白バーと黒バーの配置を正確に反映した読取データを得ることができる。
【0036】
図2の説明に戻ると、次の複合信号処理部27は、パルス波形生成部26が出力する複数回の走査に対応した読取データを入力し、これらに基づいてデコードに供する最終的な読取データを生成する。
この複合信号処理部27が行う処理は、デジタルデータ処理であって、図4のフローチャートに示すものである。この処理は、専用の回路に行わせてもよいし、CPUに所要のプログラムを実行させることにより行わせてもよい。いずれにせよ、複合信号処理部27は、パルス波形生成部26から読取データが供給されると、図4のフローチャートに示す処理を開始する。
【0037】
図4の処理において、複合信号処理部27はまず、パルス波形生成部26が出力する複数回の走査に対応した読取データを、所定のバッファに格納する(S11)。なお、読取装置又は読取対象物を人が手で持つ場合、完全な固定はできないので、走査タイミング毎に走査位置が微妙にずれ、それに応じて走査毎にコード記号の異なった位置からの反射光強度を反映させた読取データが得られると考えられる。
【0038】
従って、例えば図5(a)に示すような擦れのあるバーコード記号や、(b)に示すような汚れのあるバーコード記号を走査した場合、バーの配列方向と垂直な方向(図で縦方向:以下「垂直方向」という)の位置により、走査ライン上における擦れや汚れの有無が異なるため、走査毎に擦れや汚れの位置に応じた異なった読取データが得られる。なお、ずれはバーの配列方向にも起こるが、垂直方向へのずれがなければ、概ね0/1の反転位置が平行移動したデータになるはずである。
【0039】
データをバッファに格納した後は、複合信号処理部27は、バッファに格納した各読取データにつき、異なる走査タイミングの読取データ間で、対応するサンプルのデータ値の誤差がなるべく小さくなるように、読取データの位置合わせを行う(S12)。
この処理は、例えば、位置合わせの基準とする読取データのk番目のサンプルのデータ値をS(k)、他の読取データのk番目のサンプルのデータ値をT(k)として、次の式(1)におけるDが最小となるようなxを求め、他の読取データの位置合わせ後のk番目のサンプルのデータ値T*(k)を、T*(k)=T(k+x)とすることにより実現できる。xが求められたら、読取データの先頭にx個のサンプルを挿入するか、xが負の場合にはその分のサンプルを削除すればよい。
【数1】
(図面ファイルの最終ページをご覧下さい)
【0040】
なお、複数の読取データが、極めて近いタイミングの走査(例えば連続する走査)に基づくものであれば、走査位置のずれはさほど大きくないと考えられる。xは、ここで想定されるずれの範囲を探索して求めればよい。
また、読取データの位置合わせは、コード記号の規格により定められた位置合わせ用の基準モジュールに対応するピークの位置や、背景とコード記号の端部との境界に当たるピークの位置などを参考に、予めラフに行っておき、その後上記の式(1)に基づく位置合わせを行ってもよい。また、式(1)に基づく位置合わせに代えてこれらの方式を用いてもよい。
また、上記の基準モジュールやコード記号の端部の位置に基づき、読取データのうちコード記号上を走査した部分のみを切り出して、その切り出したデータについて位置合わせ以降の処理を行うようにしてもよい。
【0041】
以上の位置合わせの結果、各読取データにおいて、同じサンプル番号(例えばk)のデータは、コード記号を構成するモジュールの配列方向の等しい位置に対応する反射光強度のデータとなっているはずである。
そして、走査位置のバーの配列方向へのずれについては、この位置合わせにより補正されると考えられる。しかし、垂直方向へのずれに伴う擦れや汚れの相違については、補正されない。
【0042】
従って、例えば5回の走査に対応した読取データをバッファに格納するとすると、位置合わせ後の5ライン分のデータは、図6に示すように、概ね同じバーに対応する0/1の連続箇所が同じサンプル番号の位置に出現するが、擦れや汚れの検出に伴って部分的にバーの幅や数が異なって検出されたものとなる。
【0043】
以上の位置合わせの後、複合信号処理部27は、全ての読取データについて、同じサンプル番号のデータを加算する(S13)。その結果、各サンプル番号について、0から5(5ラインの場合)の値を持つ1つのデコード用データが生成される。
図7に、図6に示した5つの読取データを加算して得られるデコード用データを示す。このデコード用データは、グラフの形状としては、図6に示した5つのグラフを、縦方向に積み上げたものになっている。
【0044】
次に、複合信号処理部27は、ステップS13の加算で得たデコード用データを2値化するための閾値を設定する(S14)。この閾値は、加算後の読取データが取り得る最大値と最小値の中央の値を基準として、コード記号に擦れている箇所が多い場合には中央値から最大値と最小値の差の10〜20%を減じた値とするとよい。また、コード記号に汚れている箇所が多い場合には中央値に最大値と最小値の差の10〜20%を加えた値とするとよい(白バーが「0」、黒バーが「1」の場合)。
【0045】
どの値とするかは、ユーザがボタン等で選択した標準/擦れ/汚れ等のモードに応じて決定してもよいし、ある閾値を採用してデコードが失敗した場合に他の閾値を用いてリトライするようにしてもよい。
いずれにせよ、閾値が決まると、複合信号処理部27は、ステップS13の加算で得たデコード用データを、ステップS14で設定した閾値を用いて2値化し(S15)、その2値化後のデコード用データをデコード部に出力して(S16)処理を終了する。
デコード部は、複合信号処理部27が出力したデコード用データに基づき、読取対象物上のバーコード記号におけるモジュールの配列を推定し、その配列が意味するデータを出力する、すなわち、バーコード記号をデコードする。
【0046】
図8及び図9に、複合信号処理部27がステップS15で行う2値化の例を示す。いずれも(a)に図7に示した加算後のデコード用データにおける閾値の位置を横線で示し、(b)にその閾値を用いた2値化の結果を示す。
図8に示すのは、閾値を小さい値とした場合の例である。コード記号の擦れが多い場合には、一部の走査ラインの読取データにおいては、黒バーの位置でも擦れのため白バーを示すデータとなっていることが考えられる。そこで、閾値を小さい値とすることにより、一部の走査ラインでのみ検出される黒バーのデータを、2値化後のデコード用データに精度よく反映させることができると考えられる。
【0047】
図9に示すのは、閾値を大きい値とした場合の例である。コード記号の汚れが多い場合には、一部の走査ラインの読取データにおいては、白バーの位置でも汚れのため黒バーを示すデータとなっていることが考えられる。そこで、閾値を大きい値とすることにより、多くの走査ラインで黒バーが検出されている場合のみ2値化後のデコード用データで黒バーとすることができ、汚れに起因する黒バーのデータを2値化時に効率よく除去することができると考えられる。
【0048】
従って、バーコードスキャナ1においては、ステップS15の処理で生成されたデコード用データを用いてバーコード記号をデコードすることにより、擦れや汚れの影響を除去したデコードが可能となり、読取対象のバーコード記号に擦れや汚れがある場合のデコードの成功率を向上させることができる。
これは、人が読取装置又は読取対象物を持つ場合、正確な固定ができないため異なるタイミングの走査であれば異なる位置を走査することになるという現象を利用し、装置側の構成で意図的に走査位置を変えるラスタスキャンに相当する効果を、装置の構成を複雑化することなく、非常に安価に得られるようにしたものである。
【0049】
なお、複合信号処理部27の処理に用いる読取データ(走査ライン)の数は、3以上であればいくつでもよいが、実験により奇数が好ましいことがわかっている。これは、白と黒の判別が難しい場合でも、多数決でどちらかに決定することができるためであると考えられる。上述の実施形態では5ラインとしたが、演算速度やメモリ容量などを勘案して、好ましい走査ライン数を採用すればよい。
【0050】
図4の処理においてステップS11でバッファに格納するデータを2値化後の読取データとしているため、メモリの使用量はさほど大きくなく、この観点からは、多数の走査ラインのデータを用いることも考えられる。しかし、あまりライン数が多くなると走査時間に起因して1回のデコードトライに要する時間が長くなるため、例えば3〜9ライン程度が好ましいと考えられる。
【0051】
また、図4のステップS16の処理で出力したデコード用データを用いたデコードが失敗した場合には、再度読取データの取得から図4の全ての処理をやり直してもよいし、所定回数までは、ステップS13で生成したデコード用データは同じものを用いて、ステップS14で設定した閾値を変更して、2値化からやり直すようにしてもよい。ハードウェアの制約が許すのであれば、これらを並行して行ってもよい。以下の実施形態においても同様である。
【0052】
〔第2の実施形態:図10乃至図16〕
次に、この発明の光学的情報読取装置の第2の実施形態であるコードスキャナについて説明する。
図10に、このコードスキャナの概略ハードウェア構成を示す。
このコードスキャナ100は、読み取り対象物上に設けられた、光反射率が周囲と異なるモジュールが2次元に配列されたコード記号である2次元バーコードやQRコード(登録商標、以下同様)等の2次元コードを読み取る装置であり、図10に示すように、光学ヘッド部110及びデコーダ部120を有する。
【0053】
このうち光学ヘッド部110は、レンズ111及び、固体撮像素子の一例であるCMOS(Complementary Metal Oxide Semiconductor)イメージセンサ(以下単に「CMOS」という)112を備える。
レンズ111は例えば光学レンズであり、読取対象物の画像を光学ヘッド部110に取り入れ、CMOS112の撮像エリア上に結像させるためのものである。
【0054】
CMOS112は、レンズ111が取り入れた読取対象物(コード記号を含むと想定される)からの反射光により、読取対象物を撮像し、その撮像で得たアナログの画像信号からデジタルの輝度値で表現される画像データを生成してデコーダ部120に出力する。
また、光学ヘッド部110は、光源の一例である発光ダイオード(LED)113も有し、LED113が照射する光により読取対象物を照明して、CMOS112により鮮明な画像を撮像できるようにしている。ただし、装置の構造によってはLED113は設けなくてもよい。
【0055】
次に、デコーダ部120は、第1の入出力インタフェース(第1I/O)121,ASIC(Application Specific Integrated Circuit)122,RAM123,ROM124,第2の入出力インタフェース(第2I/O)125を備える。
このうち第1I/O121は、光学ヘッド部110とデコーダ部120との間で、制御信号やCMOS112が出力する画像データなどを送受信するためのインタフェースである。
【0056】
ASIC122は、CMOS112及びLED113の制御、CMOS112から第1I/O121を介して入力される読取対象物の画像データに対し、ノイズ除去のためのフィルタ処理や、デコード準備のためのデータ加工処理、加工後の画像データに基づくコード記号のデコード処理等を行う。なお、デコード処理の詳細については、例えば特開2005−25417号公報に記載の手法など、公知の任意の手法を採用すればよい。
【0057】
RAM123は、CMOS112から入力される画像データを一時的に記憶したり、デコード準備のためのデータ加工処理の際にワークメモリとして用いたり、その他コードスキャナ100の動作に必要なデータなど動的に変更するデータを記憶したりする記憶手段である。一部を不揮発性としてもよい。
【0058】
ROM124は、コードスキャナ100を起動させるプログラムなどを記憶する不揮発性の記憶手段である。
第2I/O125は、不図示のホストコンピュータ等の外部装置とデータ通信を行うためのインタフェースであり、ASIC122によるデコード後のデータを第2I/O125を介して外部装置に出力することができる。
【0059】
次に、以上のような構成を有するコードスキャナ100において、ASIC122がコード記号のデコードのために実行する処理について説明する。
図11に、コードスキャナ100が読み取るコード記号の例を、図12に、ASIC122が実行する処理のフローチャートを示す。
ASIC122は、CMOS112から画像データが入力されると、ROM124に記憶されている所定のプログラムを実行することにより、図12のフローチャートに示す処理を開始する。
【0060】
そしてまず、CMOS112が出力する、異なるタイミングでの複数回の撮像に対応した画像データを、RAM123に格納する(S111)。なお、読取装置又は読取対象物を人が手で持つ場合、完全な固定はできないので、撮像タイミング毎に撮像位置が微妙にずれ、それに応じて画像中のコード記号の位置も画像データ毎に異なると考えられる。この点は、第1の実施形態で説明した走査の場合と同様である。また、この格納の前や後に、ノイズ除去、ピントずれの補正等の処理を行ってもよい。
【0061】
次に、ASIC122は、コード記号におけるモジュールの各ラインを処理対象として、ステップS113乃至S117の処理を順次実行する(S112,S118及びS119)。
ここで、コードスキャナ100により読み取るコード記号が図11に示すようなQRコードであるとすると、このコード記号は、黒い正方形のモジュールと白い正方形のモジュールを、図で横方向及び縦方向に、所定の規則に従って配列したものとなっている。そして、このモジュールの1つ分の幅の縦方向又は横方向の並びを、モジュールの「ライン」と呼ぶ。
【0062】
そして、ステップS113乃至S117の処理において、ASIC122はまず、RAM123に格納した各画像データにつき、処理対象のラインに当たる部分を特定する(S113)。コード記号には、位置合わせ用のマークが設けられているため、まずそのマークの位置を特定することにより、マークの位置を基準にモジュールの各ラインの位置も決定することができる。図11に示したQRコードであれば、右上、左上及び左下にある、正方形状のマークがこれに該当する。
【0063】
そして次に、各画像データのうちステップS113で特定した部分から、1画素ライン分のデータを読取データとして抽出する(S114)。ここでの抽出は、モジュールの配列方向に平行なラインに沿って行う。従って、CMOS112における画素のラインと、モジュールのラインとが平行でない場合には、ステップS114で抽出するデータは、CMOS112における画素のラインに沿った位置からの抽出とはならない。しかし、抽出する画素の数は、ラインの向きによらず一定であることが好ましい。
なお、ステップS113で特定した部分の幅が1画素ライン分しかなければ、その部分全てを抽出することになる。また、1画素ライン分よりも狭ければ、特定した部分の周囲の画素も含めて抽出してもよい。
【0064】
次に、ASIC122は、ステップS114で抽出した読取データを、所定の閾値で2値化する(S115)。ここで用いる閾値は、従来知られた方法でデコードを行う場合と同じ方法で設定すればよい。
その後、ASIC122は、図4のステップS12及びS13の場合と同様、ステップS115で2値化した各読取データの位置合わせを行うと共に、対応する画素の画素値を加算したデコード用データを生成する(S116,S117)。ステップS115の位置合わせでは、モジュールのライン方向の位置が等しい画素同士が対応付けられる(同じサンプル番号となる)はずであるので、この加算で得られるデータは、モジュールのライン方向の位置が等しい画素の2値化後のデータを複数タイミングの画像分加算したものとなる。
【0065】
モジュールの全ラインについて以上のデコード用データが用意できると、処理はステップS120へ進む。そして、ASIC122は、このデコード用データを2値化するための閾値を、図4のステップS14の場合と同様に設定する。
そしてその後、ステップS117の処理で得た各ラインのデコード用データを、ステップS120で設定した閾値を用いて2値化し(S121)、その2値化後のデコード用データに基づきコード記号をデコードする(S122)。具体的には、モジュールの各ラインと対応する2値化後のデコード用データに基づき、そのラインにおけるモジュールの配列を推定し、それを全ライン分組み合わせてコード記号全体におけるモジュールの配列を推定し、その配列が意味するデータを生成する。
そして、そのデコード結果を第2I/O125から出力して(S123)、処理を終了する。
【0066】
以上の処理により、コードスキャナ100においても、第1の実施形態のバーコードスキャナ1の場合と同様、擦れや汚れの影響を除去したデコードが可能となり、読取対象のバーコード記号に擦れや汚れがある場合のデコードの成功率を向上させることができる。
また、コード記号の撮影距離が遠い場合など、撮像で得た画像データ中でコード記号の画像が占める面積が小さい場合や、CMOS112の画素数が少ない場合などには、モジュール1ラインの幅が、1画素程度となってしまう場合もある。この場合、モジュールが画素とぴったり重なるか、少しずれるか等により、画像データにおけるモジュールと対応する画素値が大きく異なる場合もある。
【0067】
しかし、図12のように複数回の撮像に対応した画像データを用いたデコードを行うことにより、モジュールと画素との位置関係の異なる複数の画像データの内容を考慮した、適切なデコードが可能となる。
すなわち、図13に示すように、CMOS112においてコード記号の画像が示す画素数が少ない状態で撮像が行われた場合、(a)乃至(c)に示すように、撮像タイミング毎にモジュールと画素の位置関係が変わり、微妙に異なった画像が得られる。
【0068】
この状態で図12のステップS114〜S116のように1画素ライン分のデータを抽出し、2値化及び位置合わせを行うと、図14のA〜Cに示すように、読取タイミング毎に異なった読取データが得られる。なお、図14は、特徴を分かりやすくするためにデータの内容を簡略化して示しており、図13の内容をそのまま反映したものではない。
そして、図14のデータを加算して生成されるデコード用データは、図15に示すものとなる。そしてこれを適当な閾値で2値化することにより、図16に示すデコード用データが得られる。
【0069】
この2値化したデコード用データにおいては、図14のA〜Cのうち、1つのみ黒を示す「1」であり、残りが白を示す「0」である場合にはその画素は「0」とみなし、2つ以上が「1」である場合にはその画素は「1」とみなしている。
従って、モジュールと画素の位置関係により、たまたま隣接ラインの黒モジュールが写り込んで黒画素が生じたような場合に、その黒画素をデコード時に考慮しないようにすることができる。また、たまたま隣接ラインの白モジュールが写り込んで白画素が生じたような場合に、その白画素もデコード時に考慮しないようにすることができる。そして、各画素に安定的に出現する値を組み合わせて最終的なデコードを行うことができるので、デコードの成功率を向上させることができる。
【0070】
また、2次元コードをデコードする場合、コード記号に含まれる所定の位置決めマークに従ってコード記号の画像を水平又は垂直方向にスライスしたり、ブロックに分割したりしてからデコード処理に供することにより、デコードの精度を上げることが従来から行われている。しかし、以上説明してきた手法を用いることにより、モジュールのライン毎の2値化データを高い精度で得ることができるため、デコードのやり直しが少なくて済み、結果として、単なるスライスやブロック毎の2値化より、高速で精度のよいデコードが可能となる。
【0071】
なお、図12の処理で参照する画像データの数(撮像回数)は、3以上であればいくつでもよいが、実験により奇数が好ましいことがわかっている。これは、白と黒の判別が難しい場合でも、多数決でどちらかに決定することができるためであると考えられる。図13乃至図16の例では撮像3回分としたが、演算速度やメモリ容量などを勘案して、好ましい走査ライン数を採用すればよい。
【0072】
また、図12の処理は、必ずしも図示の手順で行う必要はない。例えば、モジュールの全てのラインについて先に読取データの抽出(S114)及び2値化(S115)を行ってしまい、この時点で画像データを廃棄してしまえば、比較的容量の大きいデータを記憶するRAMの記憶領域を早期に解放して、メモリの利用効率を向上させることができる。
【0073】
〔第3の実施形態:図17乃至図22〕
次に、この発明の光学的情報読取装置の第3の実施形態であるコードスキャナについて説明する。
この実施形態のコードスキャナ100は、第2の実施形態の場合と同様、2次元コードを読み取る装置であり、ハードウェア構成は第2の実施形態と同じであり、ASIC122が実行する処理の内容が一部異なるのみである。そこで、相違点についてのみ説明する。また、第2の実施形態と対応する箇所については、同じ符号を用いる。
【0074】
図17に、第3の実施形態のコードスキャナ100においてASIC122が実行する、図12と対応する処理のフローチャートを示す。
このフローチャートの処理は、ステップS111′及びS114′の処理が図12と異なり、その他の処理は図12と同じものである。ステップS113′は、表記が形式的に異なるのみである。
すなわち、まず、ステップS111′では、CMOS112が出力する1回の撮像に応じた画像データをRAM123に格納する。
【0075】
そして、ステップS114′では、ステップS111′で格納した画像データのうちステップS113′で特定した部分(モジュール1ライン)から、複数画素ライン分のデータを画素ライン毎に読取データとして抽出する。ここで抽出すべき画素ライン数は、第2の実施形態における撮像回数に対応するものである。
すなわち、第2の実施形態では複数回の撮像に対応する画像データを用いることにより複数ライン分の読取データを得ていたところ、第3の実施形態では、1回の撮像に対応する画像データから、複数ライン分の読取データを取得する。
【0076】
撮像で得た画像データ中でコード記号の画像が占める面積が大きい場合や、CMOS112の画素数が多い場合など、モジュール1ラインを、十分な画素数で撮像できる場合には、このような処理によっても、第2の実施形態の場合と同様な効果を得ることができる。すなわち、擦れや汚れの影響を除去したデコードが可能となり、読取対象のバーコード記号に擦れや汚れがある場合のデコードの成功率を向上させることができる。
【0077】
例えば、図18に拡大して示すように、コード記号の一部に擦れがある場合、このコード記号を撮像して得た画像データのうち、モジュール1ラインに当たる領域から、A〜Cで示す3本の画素ラインのデータを読取データとしてそれぞれ抽出するとすると、2値化及び位置合わせ後の読取データの内容は、図19に示すものとなる。すなわち、BとCのラインの読取データは、コード記号におけるモジュールの配列を正確に反映しているが、Aのラインは、コード記号が擦れて黒モジュールが欠けている部分を通っているため、読取データも、これに応じて、黒部分が欠けたデータとなる。
【0078】
そして、図19のデータを加算して生成されるデコード用データは、図20に示すものとなる。そしてこれを適当な閾値で2値化することにより、図21に示すデコード用データが得られる。
この2値化したデコード用データにおいては、図19のA〜Cのうち、1つでも黒を示す「1」がある場合にはその画素は「1」とみなしている。擦れのあるコード記号を読み取ることが予め分かっており、2値化の閾値を低い(白側に近い)値としているためである。
【0079】
従って、読取データとして取得する画素ラインの設定位置が、たまたま擦れを跨ぐ位置となった場合でも、一部に擦れを跨がない画素ラインを設定できれば、最終的なデコード用データとしては、擦れのない状態のコード記号を反映したデータを用いることができる。また、同様の考え方により画素ラインの設定位置がたまたま汚れを跨ぐ位置となった場合でも、一部に汚れを跨がない画素ラインを設定できれば、最終的なデコード用データとしては、擦れのない状態のコード記号を反映したデータを用いることができる。従って、読取対象のコード記号に擦れや汚れがある場合でも、デコードの成功率を向上させることができる。
【0080】
なお、ステップS114′で複数ライン分の読取データを取得する際、モジュール1ラインに当たる領域を構成する画素数が少なく、この領域から十分なライン数のデータを取得できないと判断した場合には、エラーとしてもよいが、CMOS112が出力する別の撮像に対応した画像データをRAMに再度格納し、その画像データから、不足するライン数分のデータを取得するようにすると、エラーの発生を低減できる。
【0081】
以上で実施形態の説明を終了するが、装置の構成や具体的な処理の内容、処理に用いる
計算式、読取対象のコード記号の種類等が上述の実施形態で説明したものに限られないことはもちろんである。
また、この発明の光学的情報読取装置は、据え置き型の装置としても、手持ち型の装置としても、構成することができる。
また、以上述べてきた構成及び変形例は、矛盾しない範囲で適宜組み合わせて適用することも可能である。
【産業上の利用可能性】
【0082】
この発明による光学的情報読取装置と光学的情報読取方法は、流通,郵便,医療,化学検査,イベント会場などの広範な分野で、物品,書類,材料,被検体,その他各種の物の認識のために、物品や商品に貼付されたコード記号の情報を読み取る光学的情報読取装置及びこのような光学的情報読取装置を用いた情報の読み取りに好適である。特に、コード記号に擦れや汚れが生じやすい状況が想定される場合において、好適である。
【符号の説明】
【0083】
1…バーコードスキャナ、11…レーザ光源、12…集光レンズ、13…開口絞り、14…スキャニングミラー、15…結像レンズ、16…光電変換器、20…処理回路、21…I/V変換部、22…微分信号生成部、23…ローパスフィルタ、24…自動利得制御部、25…ピーク検出部、26…パルス波形生成部、27…複合信号処理部、30…読取対象物、31…バーコード、100…コードスキャナ、110…光学ヘッド部、111…レンズ、112…CMOS、113…LED、120…デコーダ部、121…第1I/O、122…ASIC、123…RAM、124…ROM、125…第2I/O
【技術分野】
【0001】
この発明は、光反射率が周囲と異なるモジュールが配列されたコード記号により示される情報を読み取る光学的情報読取装置及び光学的情報読取方法に関する。
【背景技術】
【0002】
光反射率が周囲と異なるモジュールが配列されたコード記号として、従来から、在庫管理等を目的として、モジュールを1次元に配列したバーコード記号が広く用いられている。また、近年は、より情報密度の高いコード記号としてモジュールを2次元に配列した2次元コード記号も使用されている。
【0003】
そして、バーコード記号を読み取る装置としては、レーザビームによりコード記号を走査し、各位置の反射光強度を検出して2値化し、デコードする装置が知られている。また、2次元コード記号を読み取る装置としては、CMOS(Complementary Metal Oxide Semiconductor)イメージセンサやCCD(Charge Coupled Device)イメージセンサ等の固体撮像素子で2次元コードを撮影し、その画像に様々な処理を施した上で2値化し、デコードする装置が知られている。
【0004】
また、これらの読取装置には、大別してハンディ(手持ち式)と定置式がある。
このうち定置式は、読取装置のガイド光が照らす領域に読取対象物を持っていけば情報入力できるので、小売店や書店のレジで商品に付されたコード記号を読み取る場合など、作業が定位置で行われる場合に有用である。一方ハンディは、軽く人間の手で持ちやすくなっているので、倉庫などで作業者が移動して大きな物品に付されたコード記号を読み取る時などに有用である。また、携帯電話等の端末機器に、バーコード・二次元コードデコード機能が装備されている場合もある。
【0005】
ここで、ハンディの読取装置(携帯電話等に搭載される場合を含む)を使用する場合、人間が手で持つのでどうしても多少手がふるえ、コード記号を走査したり撮影したりする際に手ぶれが生じてしまう。そのため、特許文献1乃至3のように、手ぶれに対応する機能を備えた読取装置が開発されている。
【0006】
特許文献1には、手ぶれ等によってバーコードを読み取れなかった場合、エラーと判断し再度バーコードの読み取りを行うことが記載されている。
特許文献2には、手ぶれに関する補正をソフトウェア的に行う機能として、コード記号を撮像して得られた画像データのデコードに失敗した場合に、画像の一部(予備補正領域)に種々の補正量で手ぶれ補正を行って、補正後の画像に対してデコードが良好に行えた補正量を採用し、その補正量で画像データ全体に対して手ぶれ補正を行う機能を備えた装置が記載されている。
特許文献3には、2次元コードを撮像をする際、ボタン操作等に伴い手ぶれの発生し易い期間を避けてコード記号を撮像するために、ユーザによる撮像指示があってから少し時間をおいて撮像するようにすることが記載されている。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2004−355451号公報
【特許文献2】特開2005−196543号公報
【特許文献3】特開2005−309562号公報
【特許文献4】特開平11−161734号公報
【特許文献5】特開2000−306036号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、特許文献1及び3に記載の発明では、上述した倉庫、店舗などコード記号の読み取りを次々と短時間で行う場合、エラーが何度も発生したり、撮像までに時間かかったりすると、作業効率が低下してしまう。
また、特許文献2に記載の発明のように、演算により手ぶれの補正を行おうとすると、アルゴリズムが複雑になり、演算量も大きくなるため、演算能力の高いプロセッサを搭載する必要が生じ、コストアップや処理時間の増大につながる。
【0009】
元々、手ぶれは、人間が読取装置を手で持つ場合には無くすことはできない。そして、その補正を完璧に行おうとするならば、機器自体になんらかの負担をかけてしまう。またこの点は、読取装置を固定し、人が読取対象物の方を持つ場合にも同様である。
一方で、従来の読取装置においては、読取対象のコード記号に擦れや汚れがあり、形状が正確でない場合、何度もエラーが生じて読み取りに時間がかかったり、そもそも読み取りができなかったりしていた。一旦商品等に印刷したり貼り付けたりした時点ではコード記号の品質に問題なかったとしても、その後、他の物とぶつかったり水濡れする等して、コード記号に擦れや汚れが生じることも考えられる。従って、擦れや汚れがある場合でも高速かつ正確にコード記号を読み取れる読取装置が望まれる。
このような問題に対応するための技術としては、例えば特許文献4及び特許文献5に記載のものが知られているが、いずれもコスト、精度、運用の容易さ等を総合的に見た場合には不十分な点があった。
【0010】
この発明は、このような背景に鑑みてなされたものであり、手ぶれが生じる環境でも効率よくコード記号により示される情報を読み取れるようにすることを目的とする。併せて、この目的を実現するための技術を利用して、擦れや汚れがある場合でも高速かつ正確にコード記号を読み取れる読取装置を提供することを、目的とする。
【課題を解決するための手段】
【0011】
この発明は、上記の目的を達成するため、光反射率が周囲と異なるモジュールが2次元に配列されたコード記号により示される情報を読み取る光学的情報読取装置において、読取対象物の画像を撮像する撮像手段と、その撮像手段が異なる3以上の複数タイミングで撮像した画像についてそれぞれ、その画像のうち上記コード記号を構成するモジュールの同じ1ラインに相当する部分から、上記モジュールのラインに平行な画素列の画像データを取得する画像データ取得手段と、上記画像データ取得手段が取得した上記各画素列の画像データをその画素列毎に2値化すると共に、上記モジュールのライン方向の位置が等しい画素の2値化後のデータを上記複数タイミングの画像分加算して、上記コード記号のうちモジュール1ライン分のデコード用データを得る加算手段と、上記加算手段が得た上記デコード用データを所定の閾値で2値化する2値化手段と、上記2値化手段による上記2値化後のデコード用データに基づき、上記コード記号を構成する1ライン分のモジュールの配置を推定する推定手段と、を設けたものである。
【0012】
また、この発明の別の光学的情報読取装置は、光反射率が周囲と異なるモジュールが2次元に配列されたコード記号により示される情報を読み取る光学的情報読取装置において、読取対象物の画像を撮像する撮像手段と、その撮像手段が撮像した画像のうち、上記コード記号を構成するモジュール1ラインに相当する部分から、上記モジュールのラインに平行な3以上の複数画素列の画像データを取得する画像データ取得手段と、上記画像データ取得手段が取得した上記各画素列の画像データをその画素列毎に2値化すると共に、上記モジュールのライン方向の位置が等しい画素の2値化後のデータを上記複数画素列分加算して、上記コード記号のうちモジュール1ライン分のデコード用データを得る加算手段と、上記加算手段が得た上記デコード用データを所定の閾値で2値化する2値化手段と、上記2値化手段による上記2値化後のデコード用データに基づき、上記コード記号を構成する1ライン分のモジュールの配置を推定する推定手段と、を設けたものである。
【0013】
また、この発明のさらに別の光学的情報読取装置は、光反射率が周囲と異なるモジュールが1次元に配列されたコード記号により示される情報を読み取る光学的情報読取装置において、読取対象物を光走査してその反射光強度に応じた読取信号を出力する走査手段と、その走査手段が異なる3以上の複数タイミングで上記光走査を行って出力する読取信号を走査タイミング毎に2値化すると共に、上記モジュールの配列方向の等しい位置に対応する2値化後の値を上記複数タイミングの読取信号分加算し、上記コード記号のデコード用データを得る加算手段と、上記加算手段が得た上記デコード用データを所定の閾値で2値化する2値化手段と、上記2値化手段による上記2値化後のデコード用データに基づき、上記コード記号を構成するモジュールの配列を推定する推定手段と、を設けたものである。
【0014】
また、この発明のさらに別の光学的情報読取装置は、光反射率が周囲と異なるモジュールが配列されたコード記号により示される情報を読み取る光学的情報読取装置において、その読取対象物の各位置の光反射率に応じた読取信号を出力する読取手段と、その読取手段が出力する読取信号のうち、上記コード記号を構成するモジュールの同じラインの位置の光反射率を示す読取信号を、3以上の複数通り取得し、その読取信号毎に2値化すると共に、上記モジュールのライン方向の等しい位置に対応する2値化後の値を上記複数通りの読取信号分加算し、上記モジュールのデコード用データを得る加算手段と、上記加算手段が得た上記デコード用データを所定の閾値で2値化する2値化手段と、上記2値化手段による上記2値化後のデコード用データに基づき、上記コード記号を構成するモジュールの配列を推定する推定手段と、を設けたものである。
【0015】
また、上記の各光学的情報読取装置において、上記2値化手段による2値化の閾値として、上記加算手段による加算後の読取データが取り得る最大値と最小値の中央の値である中央値から上記最大値と上記最小値の差の10〜20%を減じた値と、上記中央値に上記最大値と上記最小値の差の10〜20%を減じた値とからいずれか一方を選択して設定する手段を設けるとよい。
【0016】
また、この発明の光学的情報読取方法は、光反射率が周囲と異なるモジュールが2次元に配列されたコード記号により示される情報を読み取る光学的情報読取方法において、読取対象物の画像を撮像する撮像工程と、その撮像工程で異なる3以上の複数タイミングで撮像した画像についてそれぞれ、その画像のうち上記コード記号を構成するモジュールの同じ1ラインに相当する部分から、上記モジュールのラインに平行な画素列の画像データを取得する画像データ取得工程と、上記画像データ取得工程で取得した上記各画素列の画像データを、その画素列毎に2値化すると共に、上記モジュールのライン方向の位置が等しい画素の2値化後のデータを上記複数タイミングの画像分加算し、上記コード記号のうちモジュール1ライン分のデコード用データを得る加算工程と、上記加算工程で得た上記デコード用データを所定の閾値で2値化する2値化工程と、上記2値化工程による上記2値化後のデコード用データに基づき、上記コード記号を構成する1ライン分のモジュールの配置を推定する推定工程と、を設けたものである。
【0017】
また、この発明の別の光学的情報読取方法は、光反射率が周囲と異なるモジュールが2次元に配列されたコード記号により示される情報を読み取る光学的情報読取方法において、読取対象物の画像を撮像する撮像工程と、その撮像工程で撮像した画像のうち、上記コード記号を構成するモジュール1ラインに相当する部分から、上記モジュールのラインに平行な3以上の複数画素列の画像データを取得する画像データ取得工程と、上記画像データ取得工程で取得した上記各画素列の画像データを、その画素列毎に2値化すると共に、上記モジュールのライン方向の位置が等しい画素の2値化後のデータを上記複数画素列分加算し、上記コード記号のうちモジュール1ライン分のデコード用データを得る加算工程と、上記加算工程で得た上記デコード用データを所定の閾値で2値化する2値化工程と、上記2値化工程による上記2値化後のデコード用データに基づき、上記コード記号を構成する1ライン分のモジュールの配置を推定する推定工程と、を設けたものである。
【0018】
また、この発明のさらに別の光学的情報読取方法は、光反射率が周囲と異なるモジュールが1次元に配列されたコード記号により示される情報を読み取る光学的情報読取方法において、読取対象物を光走査してその反射光強度に応じた読取信号を出力する走査工程と、その走査工程で異なる3以上の複数タイミングで上記光走査を行って出力される読取信号を走査タイミング毎に2値化すると共に、上記モジュールの配列方向の等しい位置に対応する2値化後の値を上記複数タイミングの読取信号分加算し、上記コード記号のデコード用データを得る加算工程と、上記加算工程で得た上記デコード用データを所定の閾値で2値化する2値化工程と、上記2値化工程による上記2値化後のデコード用データに基づき上記コード記号を構成するモジュールの配列を推定する推定工程と、を設けたものである。
【0019】
また、この発明のさらに別の光学的情報読取方法は、光反射率が周囲と異なるモジュールが配列されたコード記号により示される情報を読み取る光学的情報読取方法において、その読取対象物の各位置の光反射率に応じた読取信号を出力する読取工程と、その読取工程で出力される読取信号のうち、上記コード記号を構成するモジュールの同じラインの位置の光反射率を示す読取信号を、3以上の複数通り取得し、その読取信号毎に2値化すると共に、上記モジュールのライン方向の等しい位置に対応する2値化後の値を上記複数通りの読取信号分加算し、上記モジュールのデコード用データを得る加算工程と、上記加算工程で得た上記デコード用データを所定の閾値で2値化する2値化工程と、上記2値化工程による上記2値化後のデコード用データに基づき、上記コード記号を構成するモジュールの配列を推定する推定工程と、を設けたものである。
【0020】
また、上記の各光学的情報読取方法において、上記2値化工程における2値化の閾値として、上記加算工程による加算後の読取データが取り得る最大値と最小値の中央の値である中央値から上記最大値と上記最小値の差の10〜20%を減じた値と、上記中央値に上記最大値と上記最小値の差の10〜20%を減じた値とからいずれか一方を選択して設定する工程を設けるとよい。
【発明の効果】
【0021】
この発明による光学的情報読取装置及び光学的情報読取方法によれば、擦れや汚れがある場合でも高速かつ正確にコード記号を読み取れる読取装置を提供することができる。また、手ぶれが生じる環境でも効率よくコード記号により示される情報を読み取ることができる。
【図面の簡単な説明】
【0022】
【図1】この発明の光学的情報読取装置の第1の実施形態であるバーコードスキャナの光学系の構成を示す図である。
【図2】図1に示した処理回路の概略構成を示す図である。
【図3】図1に示した処理回路の各位置における読取信号の波形を示す図である。
【図4】図2に示した複合信号処理部27が実行する処理のフローチャートである。
【図5】擦れや汚れのあるバーコードの例を示す図である。
【0023】
【図6】図4の処理による位置合わせ後の読取データの例を示す図である。
【図7】図6に示した5つの読取データを加算して得られるデコード用データを示す図である。
【図8】図4のステップS15で行う2値化の例を示す図である。
【図9】その別の例を示す図である。
【図10】この発明の光学的情報読取装置の第2の実施形態であるコードスキャナの概略ハードウェア構成を示す図である。
【0024】
【図11】図10に示したコードススキャナが読み取るコード記号の例を示す図である。
【図12】図10に示したASICが実行する処理のフローチャートである。
【図13】CMOSによる撮像で得られる画像の例を示す図である。
【図14】図12の処理による2値化及び位置合わせ後の読取データの例を示す図である。
【図15】図14のデータを加算して生成されるデコード用データを示す図である。
【0025】
【図16】図15のデータを2値化して得られるデコード用データを示す図である。
【図17】この発明の光学的情報読取装置の第3の実施形態であるコードスキャナにおいてASICが実行する処理のフローチャートである。
【図18】擦れのあるコード記号の例を示す図である。
【図19】図17の処理による2値化及び位置合わせ後の読取データの例を示す図である。
【図20】図19のデータを加算して生成されるデコード用データを示す図である。
【図21】図20のデータを2値化して得られるデコード用データを図である。
【発明を実施するための形態】
【0026】
以下、この発明を実施するための形態を図面に基づいて具体的に説明する。
〔第1の実施形態:図1乃至図9〕
まず、この発明の光学的情報読取装置の第1の実施形態であるバーコードスキャナについて説明する。
図1に、このバーコードスキャナの光学系の構成を示す。
このバーコードスキャナ1は、読み取り対象物上に設けられた、光反射率が周囲と異なるモジュールである白バー及び黒バーが1次元に配列されたコード記号であるバーコードを読み取る装置であり、図1に示すように、レーザ光源11,集光レンズ12,開口絞り13,スキャニングミラー14,結像レンズ15,光電変換器16,処理回路20を有する。
【0027】
そして、バーコードスキャナ1は、半導体レーザを光源とするレーザ光源11の発光点11aから出力されるレーザビームを、集光レンズ12を通過させた後、開口絞り13で径を絞り、スキャニングミラー14により偏向させて、読取対象物30上に設けられたバーコード31に対して照射し、バーコード31上をレーザビームのビームスポットにより走査できるように構成している。スキャニングミラー14は、図1では平面鏡として示しているが、実際には正多角形柱上で側面が鏡面となっているポリゴンミラーを用いてもよい。
【0028】
一方、結像レンズ15には、読取対象物30により反射されてきた走査レーザビームを入射させ、フォトダイオードからなる光電変換器16上に結像させる。そして、光電変換器16がその反射光を、強度に応じたアナログ電気信号に変換し、処理回路20による解析に供する。
【0029】
図2に、この処理回路の概略構成を示す。
処理回路20はまず、光電変換器16から入力する読取信号を解析に好適な信号に変換するための構成として、光電変換器16から入力する電流信号を電圧信号に変換するI/V変換部21と、その電圧信号を増幅すると共に微分する微分信号生成部22と、その微分信号生成部22で微分された電気信号のうち所定周波数以下の低域成分の信号だけを通過させて出力するローパスフィルタ23と、その出力信号に応じて微分信号生成部22における微分の時定数及び増幅の利得を制御する自動利得制御(AGC)部24とを有する。
【0030】
このうち微分信号生成部22は、前置増幅器22aと可変利得増幅器(微分回路付き)22bからなる。可変利得増幅器22bにおける微分の時定数及び増幅の利得は自動利得制御部24によって生成される制御信号Scに応じて変化する。
その自動利得制御部24は、ローパスフィルタ23の出力部から分岐して可変利得増幅器22bに帰還する閉ループ型の制御系であり、ピーク値検出器24aと比較器24bと基準レベル設定回路24cとからなる。
【0031】
ピーク値検出器24aは、ローパスフィルタ23の出力信号の振幅のピーク電圧(ピーク値)を検出してある時定数で保持し、それを比較器24bが基準レベル設定回路24cによって設定された基準電圧値と比較し、その比較結果に応じた制御信号Scを出力して可変利得増幅器22bにおける微分の時定数及び増幅の利得を制御する。この一連の動作で読取信号からノイズが除去される。
この部分の詳細な回路構成としては、例えば特開2004−15671号公報に記載のものを採用することができる。
【0032】
また、処理回路20は、ローパスフィルタから出力される解析に好適な読取信号(微分信号)の解析を行うための構成として、ピーク検出部25、パルス波形生成部26及び複合信号処理部27を有する。
そして、ピーク検出部25が、微分信号のピーク位置を検出し、パルス波形生成部26が、そのピーク位置に基づいて、2値の読取データを生成する。
【0033】
ここで、2値の読取データの生成アルゴリズムについて説明するため、図3に、処理回路20の各位置における読取信号の波形を示す。
(a)に示すのが、可変利得増幅器(微分回路付き)22bによる微分及び増幅後の波形であり、(b)に示すのが、ローパスフィルタ23によりノイズを除去した後の波形である。
バーコード記号の走査で得られる反射光強度は、白バーによる高い反射光強度と、黒バーによる低い反射光強度とが交互に出現するものとなるが、時間微分を取ると、白バーと黒バーとの境界付近で、微分値の絶対値が大きくなると考えられる。
【0034】
そこで、(b)に示すノイズ除去後の微分波形において、ピーク検出部25により、(c)に黒丸で示すような、絶対値の大きなピークを検出すると、その位置が、白バーと黒バーとの境界に対応する位置であると考えられる。従って、初めはコード記号の背景(ここではデータ値「0」の白)に当たるデータ値でスタートし、ピーク検出部25が検出したピークに当たる位置で0/1を反転させることにより、(d)の下側に示すような、走査ライン上の各サンプルタイミングにおけるビームスポットの位置の反射光強度を示す2値の読取データを得ることができる。
【0035】
(b)の信号には、ローパスフィルタ23により除去しきれなかったノイズが混じることもあるが、ピーク検出時に前のピークからの絶対値変化が小さいピークは無視する等すれば、このようなノイズも適切に取り除くことができる。
この手法によれば、反射光強度自体の信号を2値化するより、ノイズの影響を受けづらく、コード記号における白バーと黒バーの配置を正確に反映した読取データを得ることができる。
【0036】
図2の説明に戻ると、次の複合信号処理部27は、パルス波形生成部26が出力する複数回の走査に対応した読取データを入力し、これらに基づいてデコードに供する最終的な読取データを生成する。
この複合信号処理部27が行う処理は、デジタルデータ処理であって、図4のフローチャートに示すものである。この処理は、専用の回路に行わせてもよいし、CPUに所要のプログラムを実行させることにより行わせてもよい。いずれにせよ、複合信号処理部27は、パルス波形生成部26から読取データが供給されると、図4のフローチャートに示す処理を開始する。
【0037】
図4の処理において、複合信号処理部27はまず、パルス波形生成部26が出力する複数回の走査に対応した読取データを、所定のバッファに格納する(S11)。なお、読取装置又は読取対象物を人が手で持つ場合、完全な固定はできないので、走査タイミング毎に走査位置が微妙にずれ、それに応じて走査毎にコード記号の異なった位置からの反射光強度を反映させた読取データが得られると考えられる。
【0038】
従って、例えば図5(a)に示すような擦れのあるバーコード記号や、(b)に示すような汚れのあるバーコード記号を走査した場合、バーの配列方向と垂直な方向(図で縦方向:以下「垂直方向」という)の位置により、走査ライン上における擦れや汚れの有無が異なるため、走査毎に擦れや汚れの位置に応じた異なった読取データが得られる。なお、ずれはバーの配列方向にも起こるが、垂直方向へのずれがなければ、概ね0/1の反転位置が平行移動したデータになるはずである。
【0039】
データをバッファに格納した後は、複合信号処理部27は、バッファに格納した各読取データにつき、異なる走査タイミングの読取データ間で、対応するサンプルのデータ値の誤差がなるべく小さくなるように、読取データの位置合わせを行う(S12)。
この処理は、例えば、位置合わせの基準とする読取データのk番目のサンプルのデータ値をS(k)、他の読取データのk番目のサンプルのデータ値をT(k)として、次の式(1)におけるDが最小となるようなxを求め、他の読取データの位置合わせ後のk番目のサンプルのデータ値T*(k)を、T*(k)=T(k+x)とすることにより実現できる。xが求められたら、読取データの先頭にx個のサンプルを挿入するか、xが負の場合にはその分のサンプルを削除すればよい。
【数1】
(図面ファイルの最終ページをご覧下さい)
【0040】
なお、複数の読取データが、極めて近いタイミングの走査(例えば連続する走査)に基づくものであれば、走査位置のずれはさほど大きくないと考えられる。xは、ここで想定されるずれの範囲を探索して求めればよい。
また、読取データの位置合わせは、コード記号の規格により定められた位置合わせ用の基準モジュールに対応するピークの位置や、背景とコード記号の端部との境界に当たるピークの位置などを参考に、予めラフに行っておき、その後上記の式(1)に基づく位置合わせを行ってもよい。また、式(1)に基づく位置合わせに代えてこれらの方式を用いてもよい。
また、上記の基準モジュールやコード記号の端部の位置に基づき、読取データのうちコード記号上を走査した部分のみを切り出して、その切り出したデータについて位置合わせ以降の処理を行うようにしてもよい。
【0041】
以上の位置合わせの結果、各読取データにおいて、同じサンプル番号(例えばk)のデータは、コード記号を構成するモジュールの配列方向の等しい位置に対応する反射光強度のデータとなっているはずである。
そして、走査位置のバーの配列方向へのずれについては、この位置合わせにより補正されると考えられる。しかし、垂直方向へのずれに伴う擦れや汚れの相違については、補正されない。
【0042】
従って、例えば5回の走査に対応した読取データをバッファに格納するとすると、位置合わせ後の5ライン分のデータは、図6に示すように、概ね同じバーに対応する0/1の連続箇所が同じサンプル番号の位置に出現するが、擦れや汚れの検出に伴って部分的にバーの幅や数が異なって検出されたものとなる。
【0043】
以上の位置合わせの後、複合信号処理部27は、全ての読取データについて、同じサンプル番号のデータを加算する(S13)。その結果、各サンプル番号について、0から5(5ラインの場合)の値を持つ1つのデコード用データが生成される。
図7に、図6に示した5つの読取データを加算して得られるデコード用データを示す。このデコード用データは、グラフの形状としては、図6に示した5つのグラフを、縦方向に積み上げたものになっている。
【0044】
次に、複合信号処理部27は、ステップS13の加算で得たデコード用データを2値化するための閾値を設定する(S14)。この閾値は、加算後の読取データが取り得る最大値と最小値の中央の値を基準として、コード記号に擦れている箇所が多い場合には中央値から最大値と最小値の差の10〜20%を減じた値とするとよい。また、コード記号に汚れている箇所が多い場合には中央値に最大値と最小値の差の10〜20%を加えた値とするとよい(白バーが「0」、黒バーが「1」の場合)。
【0045】
どの値とするかは、ユーザがボタン等で選択した標準/擦れ/汚れ等のモードに応じて決定してもよいし、ある閾値を採用してデコードが失敗した場合に他の閾値を用いてリトライするようにしてもよい。
いずれにせよ、閾値が決まると、複合信号処理部27は、ステップS13の加算で得たデコード用データを、ステップS14で設定した閾値を用いて2値化し(S15)、その2値化後のデコード用データをデコード部に出力して(S16)処理を終了する。
デコード部は、複合信号処理部27が出力したデコード用データに基づき、読取対象物上のバーコード記号におけるモジュールの配列を推定し、その配列が意味するデータを出力する、すなわち、バーコード記号をデコードする。
【0046】
図8及び図9に、複合信号処理部27がステップS15で行う2値化の例を示す。いずれも(a)に図7に示した加算後のデコード用データにおける閾値の位置を横線で示し、(b)にその閾値を用いた2値化の結果を示す。
図8に示すのは、閾値を小さい値とした場合の例である。コード記号の擦れが多い場合には、一部の走査ラインの読取データにおいては、黒バーの位置でも擦れのため白バーを示すデータとなっていることが考えられる。そこで、閾値を小さい値とすることにより、一部の走査ラインでのみ検出される黒バーのデータを、2値化後のデコード用データに精度よく反映させることができると考えられる。
【0047】
図9に示すのは、閾値を大きい値とした場合の例である。コード記号の汚れが多い場合には、一部の走査ラインの読取データにおいては、白バーの位置でも汚れのため黒バーを示すデータとなっていることが考えられる。そこで、閾値を大きい値とすることにより、多くの走査ラインで黒バーが検出されている場合のみ2値化後のデコード用データで黒バーとすることができ、汚れに起因する黒バーのデータを2値化時に効率よく除去することができると考えられる。
【0048】
従って、バーコードスキャナ1においては、ステップS15の処理で生成されたデコード用データを用いてバーコード記号をデコードすることにより、擦れや汚れの影響を除去したデコードが可能となり、読取対象のバーコード記号に擦れや汚れがある場合のデコードの成功率を向上させることができる。
これは、人が読取装置又は読取対象物を持つ場合、正確な固定ができないため異なるタイミングの走査であれば異なる位置を走査することになるという現象を利用し、装置側の構成で意図的に走査位置を変えるラスタスキャンに相当する効果を、装置の構成を複雑化することなく、非常に安価に得られるようにしたものである。
【0049】
なお、複合信号処理部27の処理に用いる読取データ(走査ライン)の数は、3以上であればいくつでもよいが、実験により奇数が好ましいことがわかっている。これは、白と黒の判別が難しい場合でも、多数決でどちらかに決定することができるためであると考えられる。上述の実施形態では5ラインとしたが、演算速度やメモリ容量などを勘案して、好ましい走査ライン数を採用すればよい。
【0050】
図4の処理においてステップS11でバッファに格納するデータを2値化後の読取データとしているため、メモリの使用量はさほど大きくなく、この観点からは、多数の走査ラインのデータを用いることも考えられる。しかし、あまりライン数が多くなると走査時間に起因して1回のデコードトライに要する時間が長くなるため、例えば3〜9ライン程度が好ましいと考えられる。
【0051】
また、図4のステップS16の処理で出力したデコード用データを用いたデコードが失敗した場合には、再度読取データの取得から図4の全ての処理をやり直してもよいし、所定回数までは、ステップS13で生成したデコード用データは同じものを用いて、ステップS14で設定した閾値を変更して、2値化からやり直すようにしてもよい。ハードウェアの制約が許すのであれば、これらを並行して行ってもよい。以下の実施形態においても同様である。
【0052】
〔第2の実施形態:図10乃至図16〕
次に、この発明の光学的情報読取装置の第2の実施形態であるコードスキャナについて説明する。
図10に、このコードスキャナの概略ハードウェア構成を示す。
このコードスキャナ100は、読み取り対象物上に設けられた、光反射率が周囲と異なるモジュールが2次元に配列されたコード記号である2次元バーコードやQRコード(登録商標、以下同様)等の2次元コードを読み取る装置であり、図10に示すように、光学ヘッド部110及びデコーダ部120を有する。
【0053】
このうち光学ヘッド部110は、レンズ111及び、固体撮像素子の一例であるCMOS(Complementary Metal Oxide Semiconductor)イメージセンサ(以下単に「CMOS」という)112を備える。
レンズ111は例えば光学レンズであり、読取対象物の画像を光学ヘッド部110に取り入れ、CMOS112の撮像エリア上に結像させるためのものである。
【0054】
CMOS112は、レンズ111が取り入れた読取対象物(コード記号を含むと想定される)からの反射光により、読取対象物を撮像し、その撮像で得たアナログの画像信号からデジタルの輝度値で表現される画像データを生成してデコーダ部120に出力する。
また、光学ヘッド部110は、光源の一例である発光ダイオード(LED)113も有し、LED113が照射する光により読取対象物を照明して、CMOS112により鮮明な画像を撮像できるようにしている。ただし、装置の構造によってはLED113は設けなくてもよい。
【0055】
次に、デコーダ部120は、第1の入出力インタフェース(第1I/O)121,ASIC(Application Specific Integrated Circuit)122,RAM123,ROM124,第2の入出力インタフェース(第2I/O)125を備える。
このうち第1I/O121は、光学ヘッド部110とデコーダ部120との間で、制御信号やCMOS112が出力する画像データなどを送受信するためのインタフェースである。
【0056】
ASIC122は、CMOS112及びLED113の制御、CMOS112から第1I/O121を介して入力される読取対象物の画像データに対し、ノイズ除去のためのフィルタ処理や、デコード準備のためのデータ加工処理、加工後の画像データに基づくコード記号のデコード処理等を行う。なお、デコード処理の詳細については、例えば特開2005−25417号公報に記載の手法など、公知の任意の手法を採用すればよい。
【0057】
RAM123は、CMOS112から入力される画像データを一時的に記憶したり、デコード準備のためのデータ加工処理の際にワークメモリとして用いたり、その他コードスキャナ100の動作に必要なデータなど動的に変更するデータを記憶したりする記憶手段である。一部を不揮発性としてもよい。
【0058】
ROM124は、コードスキャナ100を起動させるプログラムなどを記憶する不揮発性の記憶手段である。
第2I/O125は、不図示のホストコンピュータ等の外部装置とデータ通信を行うためのインタフェースであり、ASIC122によるデコード後のデータを第2I/O125を介して外部装置に出力することができる。
【0059】
次に、以上のような構成を有するコードスキャナ100において、ASIC122がコード記号のデコードのために実行する処理について説明する。
図11に、コードスキャナ100が読み取るコード記号の例を、図12に、ASIC122が実行する処理のフローチャートを示す。
ASIC122は、CMOS112から画像データが入力されると、ROM124に記憶されている所定のプログラムを実行することにより、図12のフローチャートに示す処理を開始する。
【0060】
そしてまず、CMOS112が出力する、異なるタイミングでの複数回の撮像に対応した画像データを、RAM123に格納する(S111)。なお、読取装置又は読取対象物を人が手で持つ場合、完全な固定はできないので、撮像タイミング毎に撮像位置が微妙にずれ、それに応じて画像中のコード記号の位置も画像データ毎に異なると考えられる。この点は、第1の実施形態で説明した走査の場合と同様である。また、この格納の前や後に、ノイズ除去、ピントずれの補正等の処理を行ってもよい。
【0061】
次に、ASIC122は、コード記号におけるモジュールの各ラインを処理対象として、ステップS113乃至S117の処理を順次実行する(S112,S118及びS119)。
ここで、コードスキャナ100により読み取るコード記号が図11に示すようなQRコードであるとすると、このコード記号は、黒い正方形のモジュールと白い正方形のモジュールを、図で横方向及び縦方向に、所定の規則に従って配列したものとなっている。そして、このモジュールの1つ分の幅の縦方向又は横方向の並びを、モジュールの「ライン」と呼ぶ。
【0062】
そして、ステップS113乃至S117の処理において、ASIC122はまず、RAM123に格納した各画像データにつき、処理対象のラインに当たる部分を特定する(S113)。コード記号には、位置合わせ用のマークが設けられているため、まずそのマークの位置を特定することにより、マークの位置を基準にモジュールの各ラインの位置も決定することができる。図11に示したQRコードであれば、右上、左上及び左下にある、正方形状のマークがこれに該当する。
【0063】
そして次に、各画像データのうちステップS113で特定した部分から、1画素ライン分のデータを読取データとして抽出する(S114)。ここでの抽出は、モジュールの配列方向に平行なラインに沿って行う。従って、CMOS112における画素のラインと、モジュールのラインとが平行でない場合には、ステップS114で抽出するデータは、CMOS112における画素のラインに沿った位置からの抽出とはならない。しかし、抽出する画素の数は、ラインの向きによらず一定であることが好ましい。
なお、ステップS113で特定した部分の幅が1画素ライン分しかなければ、その部分全てを抽出することになる。また、1画素ライン分よりも狭ければ、特定した部分の周囲の画素も含めて抽出してもよい。
【0064】
次に、ASIC122は、ステップS114で抽出した読取データを、所定の閾値で2値化する(S115)。ここで用いる閾値は、従来知られた方法でデコードを行う場合と同じ方法で設定すればよい。
その後、ASIC122は、図4のステップS12及びS13の場合と同様、ステップS115で2値化した各読取データの位置合わせを行うと共に、対応する画素の画素値を加算したデコード用データを生成する(S116,S117)。ステップS115の位置合わせでは、モジュールのライン方向の位置が等しい画素同士が対応付けられる(同じサンプル番号となる)はずであるので、この加算で得られるデータは、モジュールのライン方向の位置が等しい画素の2値化後のデータを複数タイミングの画像分加算したものとなる。
【0065】
モジュールの全ラインについて以上のデコード用データが用意できると、処理はステップS120へ進む。そして、ASIC122は、このデコード用データを2値化するための閾値を、図4のステップS14の場合と同様に設定する。
そしてその後、ステップS117の処理で得た各ラインのデコード用データを、ステップS120で設定した閾値を用いて2値化し(S121)、その2値化後のデコード用データに基づきコード記号をデコードする(S122)。具体的には、モジュールの各ラインと対応する2値化後のデコード用データに基づき、そのラインにおけるモジュールの配列を推定し、それを全ライン分組み合わせてコード記号全体におけるモジュールの配列を推定し、その配列が意味するデータを生成する。
そして、そのデコード結果を第2I/O125から出力して(S123)、処理を終了する。
【0066】
以上の処理により、コードスキャナ100においても、第1の実施形態のバーコードスキャナ1の場合と同様、擦れや汚れの影響を除去したデコードが可能となり、読取対象のバーコード記号に擦れや汚れがある場合のデコードの成功率を向上させることができる。
また、コード記号の撮影距離が遠い場合など、撮像で得た画像データ中でコード記号の画像が占める面積が小さい場合や、CMOS112の画素数が少ない場合などには、モジュール1ラインの幅が、1画素程度となってしまう場合もある。この場合、モジュールが画素とぴったり重なるか、少しずれるか等により、画像データにおけるモジュールと対応する画素値が大きく異なる場合もある。
【0067】
しかし、図12のように複数回の撮像に対応した画像データを用いたデコードを行うことにより、モジュールと画素との位置関係の異なる複数の画像データの内容を考慮した、適切なデコードが可能となる。
すなわち、図13に示すように、CMOS112においてコード記号の画像が示す画素数が少ない状態で撮像が行われた場合、(a)乃至(c)に示すように、撮像タイミング毎にモジュールと画素の位置関係が変わり、微妙に異なった画像が得られる。
【0068】
この状態で図12のステップS114〜S116のように1画素ライン分のデータを抽出し、2値化及び位置合わせを行うと、図14のA〜Cに示すように、読取タイミング毎に異なった読取データが得られる。なお、図14は、特徴を分かりやすくするためにデータの内容を簡略化して示しており、図13の内容をそのまま反映したものではない。
そして、図14のデータを加算して生成されるデコード用データは、図15に示すものとなる。そしてこれを適当な閾値で2値化することにより、図16に示すデコード用データが得られる。
【0069】
この2値化したデコード用データにおいては、図14のA〜Cのうち、1つのみ黒を示す「1」であり、残りが白を示す「0」である場合にはその画素は「0」とみなし、2つ以上が「1」である場合にはその画素は「1」とみなしている。
従って、モジュールと画素の位置関係により、たまたま隣接ラインの黒モジュールが写り込んで黒画素が生じたような場合に、その黒画素をデコード時に考慮しないようにすることができる。また、たまたま隣接ラインの白モジュールが写り込んで白画素が生じたような場合に、その白画素もデコード時に考慮しないようにすることができる。そして、各画素に安定的に出現する値を組み合わせて最終的なデコードを行うことができるので、デコードの成功率を向上させることができる。
【0070】
また、2次元コードをデコードする場合、コード記号に含まれる所定の位置決めマークに従ってコード記号の画像を水平又は垂直方向にスライスしたり、ブロックに分割したりしてからデコード処理に供することにより、デコードの精度を上げることが従来から行われている。しかし、以上説明してきた手法を用いることにより、モジュールのライン毎の2値化データを高い精度で得ることができるため、デコードのやり直しが少なくて済み、結果として、単なるスライスやブロック毎の2値化より、高速で精度のよいデコードが可能となる。
【0071】
なお、図12の処理で参照する画像データの数(撮像回数)は、3以上であればいくつでもよいが、実験により奇数が好ましいことがわかっている。これは、白と黒の判別が難しい場合でも、多数決でどちらかに決定することができるためであると考えられる。図13乃至図16の例では撮像3回分としたが、演算速度やメモリ容量などを勘案して、好ましい走査ライン数を採用すればよい。
【0072】
また、図12の処理は、必ずしも図示の手順で行う必要はない。例えば、モジュールの全てのラインについて先に読取データの抽出(S114)及び2値化(S115)を行ってしまい、この時点で画像データを廃棄してしまえば、比較的容量の大きいデータを記憶するRAMの記憶領域を早期に解放して、メモリの利用効率を向上させることができる。
【0073】
〔第3の実施形態:図17乃至図22〕
次に、この発明の光学的情報読取装置の第3の実施形態であるコードスキャナについて説明する。
この実施形態のコードスキャナ100は、第2の実施形態の場合と同様、2次元コードを読み取る装置であり、ハードウェア構成は第2の実施形態と同じであり、ASIC122が実行する処理の内容が一部異なるのみである。そこで、相違点についてのみ説明する。また、第2の実施形態と対応する箇所については、同じ符号を用いる。
【0074】
図17に、第3の実施形態のコードスキャナ100においてASIC122が実行する、図12と対応する処理のフローチャートを示す。
このフローチャートの処理は、ステップS111′及びS114′の処理が図12と異なり、その他の処理は図12と同じものである。ステップS113′は、表記が形式的に異なるのみである。
すなわち、まず、ステップS111′では、CMOS112が出力する1回の撮像に応じた画像データをRAM123に格納する。
【0075】
そして、ステップS114′では、ステップS111′で格納した画像データのうちステップS113′で特定した部分(モジュール1ライン)から、複数画素ライン分のデータを画素ライン毎に読取データとして抽出する。ここで抽出すべき画素ライン数は、第2の実施形態における撮像回数に対応するものである。
すなわち、第2の実施形態では複数回の撮像に対応する画像データを用いることにより複数ライン分の読取データを得ていたところ、第3の実施形態では、1回の撮像に対応する画像データから、複数ライン分の読取データを取得する。
【0076】
撮像で得た画像データ中でコード記号の画像が占める面積が大きい場合や、CMOS112の画素数が多い場合など、モジュール1ラインを、十分な画素数で撮像できる場合には、このような処理によっても、第2の実施形態の場合と同様な効果を得ることができる。すなわち、擦れや汚れの影響を除去したデコードが可能となり、読取対象のバーコード記号に擦れや汚れがある場合のデコードの成功率を向上させることができる。
【0077】
例えば、図18に拡大して示すように、コード記号の一部に擦れがある場合、このコード記号を撮像して得た画像データのうち、モジュール1ラインに当たる領域から、A〜Cで示す3本の画素ラインのデータを読取データとしてそれぞれ抽出するとすると、2値化及び位置合わせ後の読取データの内容は、図19に示すものとなる。すなわち、BとCのラインの読取データは、コード記号におけるモジュールの配列を正確に反映しているが、Aのラインは、コード記号が擦れて黒モジュールが欠けている部分を通っているため、読取データも、これに応じて、黒部分が欠けたデータとなる。
【0078】
そして、図19のデータを加算して生成されるデコード用データは、図20に示すものとなる。そしてこれを適当な閾値で2値化することにより、図21に示すデコード用データが得られる。
この2値化したデコード用データにおいては、図19のA〜Cのうち、1つでも黒を示す「1」がある場合にはその画素は「1」とみなしている。擦れのあるコード記号を読み取ることが予め分かっており、2値化の閾値を低い(白側に近い)値としているためである。
【0079】
従って、読取データとして取得する画素ラインの設定位置が、たまたま擦れを跨ぐ位置となった場合でも、一部に擦れを跨がない画素ラインを設定できれば、最終的なデコード用データとしては、擦れのない状態のコード記号を反映したデータを用いることができる。また、同様の考え方により画素ラインの設定位置がたまたま汚れを跨ぐ位置となった場合でも、一部に汚れを跨がない画素ラインを設定できれば、最終的なデコード用データとしては、擦れのない状態のコード記号を反映したデータを用いることができる。従って、読取対象のコード記号に擦れや汚れがある場合でも、デコードの成功率を向上させることができる。
【0080】
なお、ステップS114′で複数ライン分の読取データを取得する際、モジュール1ラインに当たる領域を構成する画素数が少なく、この領域から十分なライン数のデータを取得できないと判断した場合には、エラーとしてもよいが、CMOS112が出力する別の撮像に対応した画像データをRAMに再度格納し、その画像データから、不足するライン数分のデータを取得するようにすると、エラーの発生を低減できる。
【0081】
以上で実施形態の説明を終了するが、装置の構成や具体的な処理の内容、処理に用いる
計算式、読取対象のコード記号の種類等が上述の実施形態で説明したものに限られないことはもちろんである。
また、この発明の光学的情報読取装置は、据え置き型の装置としても、手持ち型の装置としても、構成することができる。
また、以上述べてきた構成及び変形例は、矛盾しない範囲で適宜組み合わせて適用することも可能である。
【産業上の利用可能性】
【0082】
この発明による光学的情報読取装置と光学的情報読取方法は、流通,郵便,医療,化学検査,イベント会場などの広範な分野で、物品,書類,材料,被検体,その他各種の物の認識のために、物品や商品に貼付されたコード記号の情報を読み取る光学的情報読取装置及びこのような光学的情報読取装置を用いた情報の読み取りに好適である。特に、コード記号に擦れや汚れが生じやすい状況が想定される場合において、好適である。
【符号の説明】
【0083】
1…バーコードスキャナ、11…レーザ光源、12…集光レンズ、13…開口絞り、14…スキャニングミラー、15…結像レンズ、16…光電変換器、20…処理回路、21…I/V変換部、22…微分信号生成部、23…ローパスフィルタ、24…自動利得制御部、25…ピーク検出部、26…パルス波形生成部、27…複合信号処理部、30…読取対象物、31…バーコード、100…コードスキャナ、110…光学ヘッド部、111…レンズ、112…CMOS、113…LED、120…デコーダ部、121…第1I/O、122…ASIC、123…RAM、124…ROM、125…第2I/O
【特許請求の範囲】
【請求項1】
光反射率が周囲と異なるモジュールが2次元に配列されたコード記号により示される情報を読み取る光学的情報読取装置であって、
読取対象物の画像を撮像する撮像手段と、
該撮像手段が異なる3以上の複数タイミングで撮像した画像についてそれぞれ、該画像のうち前記コード記号を構成するモジュールの同じ1ラインに相当する部分から、前記モジュールのラインに平行な画素列の画像データを取得する画像データ取得手段と、
前記画像データ取得手段が取得した前記各画素列の画像データを該画素列毎に2値化すると共に、前記モジュールのライン方向の位置が等しい画素の2値化後のデータを前記複数タイミングの画像分加算して、前記コード記号のうちモジュール1ライン分のデコード用データを得る加算手段と、
前記加算手段が得た前記デコード用データを所定の閾値で2値化する2値化手段と、
前記2値化手段による前記2値化後のデコード用データに基づき、前記コード記号を構成する1ライン分のモジュールの配置を推定する推定手段と、を備えたことを特徴とする光学的情報読取装置。
【請求項2】
光反射率が周囲と異なるモジュールが2次元に配列されたコード記号により示される情報を読み取る光学的情報読取装置であって、
読取対象物の画像を撮像する撮像手段と、
該撮像手段が撮像した画像のうち、前記コード記号を構成するモジュール1ラインに相当する部分から、前記モジュールのラインに平行な3以上の複数画素列の画像データを取得する画像データ取得手段と、
前記画像データ取得手段が取得した前記各画素列の画像データを該画素列毎に2値化すると共に、前記モジュールのライン方向の位置が等しい画素の2値化後のデータを前記複数画素列分加算して、前記コード記号のうちモジュール1ライン分のデコード用データを得る加算手段と、
前記加算手段が得た前記デコード用データを所定の閾値で2値化する2値化手段と、
前記2値化手段による前記2値化後のデコード用データに基づき、前記コード記号を構成する1ライン分のモジュールの配置を推定する推定手段と、を備えたことを特徴とする光学的情報読取装置。
【請求項3】
光反射率が周囲と異なるモジュールが1次元に配列されたコード記号により示される情報を読み取る光学的情報読取装置であって、
読取対象物を光走査してその反射光強度に応じた読取信号を出力する走査手段と、
該走査手段が異なる3以上の複数タイミングで前記光走査を行って出力する読取信号を走査タイミング毎に2値化すると共に、前記モジュールの配列方向の等しい位置に対応する2値化後の値を前記複数タイミングの読取信号分加算し、前記コード記号のデコード用データを得る加算手段と、
前記加算手段が得た前記デコード用データを所定の閾値で2値化する2値化手段と、
前記2値化手段による前記2値化後のデコード用データに基づき、前記コード記号を構成するモジュールの配列を推定する推定手段と、を備えたことを特徴とする光学的情報読取装置。
【請求項4】
光反射率が周囲と異なるモジュールが配列されたコード記号により示される情報を読み取る光学的情報読取装置であって、
該読取対象物の各位置の光反射率に応じた読取信号を出力する読取手段と、
該読取手段が出力する読取信号のうち、前記コード記号を構成するモジュールの同じラインの位置の光反射率を示す読取信号を、3以上の複数通り取得し、該読取信号毎に2値化すると共に、前記モジュールのライン方向の等しい位置に対応する2値化後の値を前記複数通りの読取信号分加算し、前記モジュールのデコード用データを得る加算手段と、
前記加算手段が得た前記デコード用データを所定の閾値で2値化する2値化手段と、
前記2値化手段による前記2値化後のデコード用データに基づき、前記コード記号を構成するモジュールの配列を推定する推定手段と、を備えたことを特徴とする光学的情報読取装置。
【請求項5】
前記2値化手段による2値化の閾値として、前記加算手段による加算後の読取データが取り得る最大値と最小値の中央の値である中央値から前記最大値と前記最小値の差の10〜20%を減じた値と、前記中央値に前記最大値と前記最小値の差の10〜20%を減じた値とからいずれか一方を選択して設定する手段を有することを特徴とする請求項1乃至4のいずれか一項に記載の光学的情報読取装置。
【請求項6】
光反射率が周囲と異なるモジュールが2次元に配列されたコード記号により示される情報を読み取る光学的情報読取方法であって、
読取対象物の画像を撮像する撮像工程と、
該撮像工程で異なる3以上の複数タイミングで撮像した画像についてそれぞれ、該画像のうち前記コード記号を構成するモジュールの同じ1ラインに相当する部分から、前記モジュールのラインに平行な画素列の画像データを取得する画像データ取得工程と、
前記画像データ取得工程で取得した前記各画素列の画像データを、該画素列毎に2値化すると共に、前記モジュールのライン方向の位置が等しい画素の2値化後のデータを前記複数タイミングの画像分加算し、前記コード記号のうちモジュール1ライン分のデコード用データを得る加算工程と、
前記加算工程で得た前記デコード用データを所定の閾値で2値化する2値化工程と、
前記2値化工程による前記2値化後のデコード用データに基づき、前記コード記号を構成する1ライン分のモジュールの配置を推定する推定工程と、を備えたことを特徴とする光学的情報読取方法。
【請求項7】
光反射率が周囲と異なるモジュールが2次元に配列されたコード記号により示される情報を読み取る光学的情報読取方法であって、
読取対象物の画像を撮像する撮像工程と、
該撮像工程で撮像した画像のうち、前記コード記号を構成するモジュール1ラインに相当する部分から、前記モジュールのラインに平行な3以上の複数画素列の画像データを取得する画像データ取得工程と、
前記画像データ取得工程で取得した前記各画素列の画像データを、該画素列毎に2値化すると共に、前記モジュールのライン方向の位置が等しい画素の2値化後のデータを前記複数画素列分加算し、前記コード記号のうちモジュール1ライン分のデコード用データを得る加算工程と、
前記加算工程で得た前記デコード用データを所定の閾値で2値化する2値化工程と、
前記2値化工程による前記2値化後のデコード用データに基づき、前記コード記号を構成する1ライン分のモジュールの配置を推定する推定工程と、を備えたことを特徴とする光学的情報読取方法。
【請求項8】
光反射率が周囲と異なるモジュールが1次元に配列されたコード記号により示される情報を読み取る光学的情報読取方法であって、
読取対象物を光走査してその反射光強度に応じた読取信号を出力する走査工程と、
該走査工程で異なる3以上の複数タイミングで前記光走査を行って出力される読取信号を走査タイミング毎に2値化すると共に、前記モジュールの配列方向の等しい位置に対応する2値化後の値を前記複数タイミングの読取信号分加算し、前記コード記号のデコード用データを得る加算工程と、
前記加算工程で得た前記デコード用データを所定の閾値で2値化する2値化工程と、
前記2値化工程による前記2値化後のデコード用データに基づき前記コード記号を構成するモジュールの配列を推定する推定工程と、を備えたことを特徴とする光学的情報読取方法。
【請求項9】
光反射率が周囲と異なるモジュールが配列されたコード記号により示される情報を読み取る光学的情報読取方法であって、
該読取対象物の各位置の光反射率に応じた読取信号を出力する読取工程と、
該読取工程で出力される読取信号のうち、前記コード記号を構成するモジュールの同じラインの位置の光反射率を示す読取信号を、3以上の複数通り取得し、該読取信号毎に2値化すると共に、前記モジュールのライン方向の等しい位置に対応する2値化後の値を前記複数通りの読取信号分加算し、前記モジュールのデコード用データを得る加算工程と、
前記加算工程で得た前記デコード用データを所定の閾値で2値化する2値化工程と、
前記2値化工程による前記2値化後のデコード用データに基づき、前記コード記号を構成するモジュールの配列を推定する推定工程と、を備えたことを特徴とする光学的情報読取方法。
【請求項10】
前記2値化工程における2値化の閾値として、前記加算工程による加算後の読取データが取り得る最大値と最小値の中央の値である中央値から前記最大値と前記最小値の差の10〜20%を減じた値と、前記中央値に前記最大値と前記最小値の差の10〜20%を減じた値とからいずれか一方を選択して設定する工程を有することを特徴とする請求項6乃至9のいずれか一項に記載の光学的情報読取方法。
【請求項1】
光反射率が周囲と異なるモジュールが2次元に配列されたコード記号により示される情報を読み取る光学的情報読取装置であって、
読取対象物の画像を撮像する撮像手段と、
該撮像手段が異なる3以上の複数タイミングで撮像した画像についてそれぞれ、該画像のうち前記コード記号を構成するモジュールの同じ1ラインに相当する部分から、前記モジュールのラインに平行な画素列の画像データを取得する画像データ取得手段と、
前記画像データ取得手段が取得した前記各画素列の画像データを該画素列毎に2値化すると共に、前記モジュールのライン方向の位置が等しい画素の2値化後のデータを前記複数タイミングの画像分加算して、前記コード記号のうちモジュール1ライン分のデコード用データを得る加算手段と、
前記加算手段が得た前記デコード用データを所定の閾値で2値化する2値化手段と、
前記2値化手段による前記2値化後のデコード用データに基づき、前記コード記号を構成する1ライン分のモジュールの配置を推定する推定手段と、を備えたことを特徴とする光学的情報読取装置。
【請求項2】
光反射率が周囲と異なるモジュールが2次元に配列されたコード記号により示される情報を読み取る光学的情報読取装置であって、
読取対象物の画像を撮像する撮像手段と、
該撮像手段が撮像した画像のうち、前記コード記号を構成するモジュール1ラインに相当する部分から、前記モジュールのラインに平行な3以上の複数画素列の画像データを取得する画像データ取得手段と、
前記画像データ取得手段が取得した前記各画素列の画像データを該画素列毎に2値化すると共に、前記モジュールのライン方向の位置が等しい画素の2値化後のデータを前記複数画素列分加算して、前記コード記号のうちモジュール1ライン分のデコード用データを得る加算手段と、
前記加算手段が得た前記デコード用データを所定の閾値で2値化する2値化手段と、
前記2値化手段による前記2値化後のデコード用データに基づき、前記コード記号を構成する1ライン分のモジュールの配置を推定する推定手段と、を備えたことを特徴とする光学的情報読取装置。
【請求項3】
光反射率が周囲と異なるモジュールが1次元に配列されたコード記号により示される情報を読み取る光学的情報読取装置であって、
読取対象物を光走査してその反射光強度に応じた読取信号を出力する走査手段と、
該走査手段が異なる3以上の複数タイミングで前記光走査を行って出力する読取信号を走査タイミング毎に2値化すると共に、前記モジュールの配列方向の等しい位置に対応する2値化後の値を前記複数タイミングの読取信号分加算し、前記コード記号のデコード用データを得る加算手段と、
前記加算手段が得た前記デコード用データを所定の閾値で2値化する2値化手段と、
前記2値化手段による前記2値化後のデコード用データに基づき、前記コード記号を構成するモジュールの配列を推定する推定手段と、を備えたことを特徴とする光学的情報読取装置。
【請求項4】
光反射率が周囲と異なるモジュールが配列されたコード記号により示される情報を読み取る光学的情報読取装置であって、
該読取対象物の各位置の光反射率に応じた読取信号を出力する読取手段と、
該読取手段が出力する読取信号のうち、前記コード記号を構成するモジュールの同じラインの位置の光反射率を示す読取信号を、3以上の複数通り取得し、該読取信号毎に2値化すると共に、前記モジュールのライン方向の等しい位置に対応する2値化後の値を前記複数通りの読取信号分加算し、前記モジュールのデコード用データを得る加算手段と、
前記加算手段が得た前記デコード用データを所定の閾値で2値化する2値化手段と、
前記2値化手段による前記2値化後のデコード用データに基づき、前記コード記号を構成するモジュールの配列を推定する推定手段と、を備えたことを特徴とする光学的情報読取装置。
【請求項5】
前記2値化手段による2値化の閾値として、前記加算手段による加算後の読取データが取り得る最大値と最小値の中央の値である中央値から前記最大値と前記最小値の差の10〜20%を減じた値と、前記中央値に前記最大値と前記最小値の差の10〜20%を減じた値とからいずれか一方を選択して設定する手段を有することを特徴とする請求項1乃至4のいずれか一項に記載の光学的情報読取装置。
【請求項6】
光反射率が周囲と異なるモジュールが2次元に配列されたコード記号により示される情報を読み取る光学的情報読取方法であって、
読取対象物の画像を撮像する撮像工程と、
該撮像工程で異なる3以上の複数タイミングで撮像した画像についてそれぞれ、該画像のうち前記コード記号を構成するモジュールの同じ1ラインに相当する部分から、前記モジュールのラインに平行な画素列の画像データを取得する画像データ取得工程と、
前記画像データ取得工程で取得した前記各画素列の画像データを、該画素列毎に2値化すると共に、前記モジュールのライン方向の位置が等しい画素の2値化後のデータを前記複数タイミングの画像分加算し、前記コード記号のうちモジュール1ライン分のデコード用データを得る加算工程と、
前記加算工程で得た前記デコード用データを所定の閾値で2値化する2値化工程と、
前記2値化工程による前記2値化後のデコード用データに基づき、前記コード記号を構成する1ライン分のモジュールの配置を推定する推定工程と、を備えたことを特徴とする光学的情報読取方法。
【請求項7】
光反射率が周囲と異なるモジュールが2次元に配列されたコード記号により示される情報を読み取る光学的情報読取方法であって、
読取対象物の画像を撮像する撮像工程と、
該撮像工程で撮像した画像のうち、前記コード記号を構成するモジュール1ラインに相当する部分から、前記モジュールのラインに平行な3以上の複数画素列の画像データを取得する画像データ取得工程と、
前記画像データ取得工程で取得した前記各画素列の画像データを、該画素列毎に2値化すると共に、前記モジュールのライン方向の位置が等しい画素の2値化後のデータを前記複数画素列分加算し、前記コード記号のうちモジュール1ライン分のデコード用データを得る加算工程と、
前記加算工程で得た前記デコード用データを所定の閾値で2値化する2値化工程と、
前記2値化工程による前記2値化後のデコード用データに基づき、前記コード記号を構成する1ライン分のモジュールの配置を推定する推定工程と、を備えたことを特徴とする光学的情報読取方法。
【請求項8】
光反射率が周囲と異なるモジュールが1次元に配列されたコード記号により示される情報を読み取る光学的情報読取方法であって、
読取対象物を光走査してその反射光強度に応じた読取信号を出力する走査工程と、
該走査工程で異なる3以上の複数タイミングで前記光走査を行って出力される読取信号を走査タイミング毎に2値化すると共に、前記モジュールの配列方向の等しい位置に対応する2値化後の値を前記複数タイミングの読取信号分加算し、前記コード記号のデコード用データを得る加算工程と、
前記加算工程で得た前記デコード用データを所定の閾値で2値化する2値化工程と、
前記2値化工程による前記2値化後のデコード用データに基づき前記コード記号を構成するモジュールの配列を推定する推定工程と、を備えたことを特徴とする光学的情報読取方法。
【請求項9】
光反射率が周囲と異なるモジュールが配列されたコード記号により示される情報を読み取る光学的情報読取方法であって、
該読取対象物の各位置の光反射率に応じた読取信号を出力する読取工程と、
該読取工程で出力される読取信号のうち、前記コード記号を構成するモジュールの同じラインの位置の光反射率を示す読取信号を、3以上の複数通り取得し、該読取信号毎に2値化すると共に、前記モジュールのライン方向の等しい位置に対応する2値化後の値を前記複数通りの読取信号分加算し、前記モジュールのデコード用データを得る加算工程と、
前記加算工程で得た前記デコード用データを所定の閾値で2値化する2値化工程と、
前記2値化工程による前記2値化後のデコード用データに基づき、前記コード記号を構成するモジュールの配列を推定する推定工程と、を備えたことを特徴とする光学的情報読取方法。
【請求項10】
前記2値化工程における2値化の閾値として、前記加算工程による加算後の読取データが取り得る最大値と最小値の中央の値である中央値から前記最大値と前記最小値の差の10〜20%を減じた値と、前記中央値に前記最大値と前記最小値の差の10〜20%を減じた値とからいずれか一方を選択して設定する工程を有することを特徴とする請求項6乃至9のいずれか一項に記載の光学的情報読取方法。
【図1】
【図2】
【図4】
【図10】
【図11】
【図12】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図3】
【図5】
【図6】
【図7】
【図8】
【図9】
【図13】
【図2】
【図4】
【図10】
【図11】
【図12】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図3】
【図5】
【図6】
【図7】
【図8】
【図9】
【図13】
【公開番号】特開2011−233099(P2011−233099A)
【公開日】平成23年11月17日(2011.11.17)
【国際特許分類】
【出願番号】特願2010−105482(P2010−105482)
【出願日】平成22年4月30日(2010.4.30)
【出願人】(391062872)株式会社オプトエレクトロニクス (70)
【出願人】(504133110)国立大学法人電気通信大学 (383)
【Fターム(参考)】
【公開日】平成23年11月17日(2011.11.17)
【国際特許分類】
【出願日】平成22年4月30日(2010.4.30)
【出願人】(391062872)株式会社オプトエレクトロニクス (70)
【出願人】(504133110)国立大学法人電気通信大学 (383)
【Fターム(参考)】
[ Back to top ]