光学的情報読取装置
【課題】マージンとして認識されるべき領域が黒色パターンとして認識される誤りを検出すると共に、当該誤りを復元し、情報コードを正確にデコードし得る構成を提供する。
【解決手段】バーコードリーダは、バーコードからの反射光を受光し、バーコードの各パターンごとに反射光の強度に応じた受光信号を出力する受光センサを備えており、この受光センサにより出力される受光信号の信号波形を閾値と比較すると共に、その比較に基づいて信号波形を白色領域と黒色領域とに区分けする二値化処理を行う構成をなしている。さらに、その二値化処理により区分けされた白色領域及び黒色領域を配列したデータ(配列データ)において、マージンとして認識されるべき領域(マージン対応領域)に黒色領域が含まれる誤りが検出された場合、そのマージン対応領域を復元するように配列データを再生成し、その再生成後の配列データをデコードするようにしている。
【解決手段】バーコードリーダは、バーコードからの反射光を受光し、バーコードの各パターンごとに反射光の強度に応じた受光信号を出力する受光センサを備えており、この受光センサにより出力される受光信号の信号波形を閾値と比較すると共に、その比較に基づいて信号波形を白色領域と黒色領域とに区分けする二値化処理を行う構成をなしている。さらに、その二値化処理により区分けされた白色領域及び黒色領域を配列したデータ(配列データ)において、マージンとして認識されるべき領域(マージン対応領域)に黒色領域が含まれる誤りが検出された場合、そのマージン対応領域を復元するように配列データを再生成し、その再生成後の配列データをデコードするようにしている。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、光学的情報読取装置に関するものである。
【背景技術】
【0002】
光学的情報読取装置の分野では、白色パターンと黒色パターンとからなる情報コードにレーザ光等を照射し、その反射光を受光、解析することでコード情報を読み取る構成のものが広く提供されている。この種の光学的情報読取装置は、情報コードをより精度高く読み取ることが要望されており、そのような課題を解決しようとする技術としては例えば特許文献1、2のようなものがある。
【特許文献1】特開2000−357205公報
【特許文献2】特開2005−38369公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
ところで、上記のような光学的情報読取装置で読み取ろうとする情報コードは様々な対象物に付されるものであり、情報コードを形成する対象物の素材や色によっては誤った認識がなされる懸念がある。
【0004】
例えば、図17(A)のように、バーコードが印刷された領域が灰色の背景であり、その外側に白色の領域が構成されるような場合、本来ならば、図17(B)のように白色パターン及び黒色パターンが認識されるべきであるところ、図17(C)のように、白色のマージン領域として認識されるべき部分が黒色パターンと認識されてしまう場合がある。このような誤検出は、図17(A)のようなバーコードを読み取った場合に図17(D)のような波形が生じることに起因するものである。即ち、図17(D)のような波形に対して図17(D)のように閾値を設定してしまうと、図17(C)のような誤検出が生じ、閾値を変化させても図17(E)のような誤検出が生じてしまう虞がある。
【0005】
本発明は、上述した課題を解決するためになされたものであり、端部に明色パターンとして認識されるべきマージンが設けられた情報コードを読み取る場合に、マージンとして認識されるべき領域が黒色パターンとして認識される誤りを検出すると共に、当該誤りを復元し、情報コードを正確にデコードし得る構成を提供することを目的とする。
【課題を解決するための手段】
【0006】
上記目的を達成するため、請求項1の発明は、明色パターンと暗色パターンとからなる情報領域を有すると共に、端部に明色パターンとして認識されるべきマージンが設けられた情報コードを読み取り可能な光学的情報読取装置であって、前記情報コードからの反射光を受光し、前記情報コードの各パターンごとに前記反射光の強度に応じた受光信号を出力する受光手段と、前記受光手段により出力される前記受光信号の信号波形を閾値と比較すると共に、その比較に基づいて前記信号波形を明色領域と暗色領域とに区分けする二値化手段と、前記二値化手段により区分けされた前記明色領域及び前記暗色領域の配列データをデコードするデコード手段と、を備え、前記配列データにおける前記マージンとして認識されるべきマージン対応領域に前記暗色領域が含まれる誤りを検出する誤り検出手段と、前記マージン対応領域の前記誤りを修正し、前記マージン対応領域を復元するように前記配列データを再生成する復元手段と、を有し、前記誤り検出手段により前記マージン対応領域の前記誤りが検出された場合、前記復元手段により前記マージン対応領域を復元し、その再生成後の前記配列データを前記デコード手段によってデコードすることを特徴とする。
なお、本発明の「明色」の例として白色が挙げられ、暗色の例として暗色が挙げられるがこれに限定されない。即ち、「明色」としては様々な色を採用でき、「暗色」は、この「明色」よりも明度の低い色であれば様々な色を採用できる。
たとえば、「明色パターン」の例としては、白色パターンが挙げられ、暗色パターンの例としては黒色パターンが挙げられるが、これに限定されず、「明色パターン」としては様々な色のパターンを採用でき、「暗色パターン」この「明色パターン」よりも明度の低い色で構成されるパターンであればよい。
【0007】
請求項2の発明は、請求項1に記載の光学的情報読取装置において、前記誤り検出手段は、前記閾値を設定変更する設定変更手段と、前記設定変更手段により前記閾値が設定変更された場合に、前記二値化手段によって抽出される前記暗色領域の幅の変化が基準を超えるか否かを判断する変化判断手段と、を有し、前記設定変更手段により前記閾値を設定変更すると共に、その設定変更前後において、前記二値化手段により前記暗色領域を抽出し、前記変化判断手段により、設定変更前後の前記暗色領域の幅変化が前記基準を超えると判断された場合に、前記マージン対応領域に誤りが生じたことを検出することを特徴とする。
【0008】
請求項3の発明は、請求項1記載の光学的情報読取装置において、前記誤り検出手段は、前記二値化手段によって抽出される複数の前記暗色領域の最大幅を検出する暗色最大幅検出手段と、前記二値化手段によって抽出される複数の前記明色領域の最大幅を検出する明色最大幅検出手段と、前記明色領域の最大幅の、前記暗色領域の最大幅に対する比が基準値未満であるか否かを判断する比較手段と、を備え、前記比較手段により、前記比が前記基準値未満であると判断された場合に、前記マージン対応領域に誤りが生じたことを検出することを特徴とする。
【0009】
請求項4の発明は、請求項3に記載の光学的情報読取装置において、読取対象となる前記情報コードの種別を特定する種別特定手段と、前記種別特定手段によって特定された種別に基づいて、前記基準値を設定する基準値設定手段と、を備え、前記比較手段は、前記比が前記基準値設定手段にて設定された前記基準値未満であるか否かを判断することを特徴とする。
【0010】
請求項5の発明は、請求項1から請求項4のいずれか一項に記載の光学的情報読取装置において、前記復元手段は、前記暗色領域及び前記明色領域の少なくともいずれか一方の幅値を集計し、幅値毎の度数分布情報を生成する度数分布情報生成手段と、前記度数分布情報生成手段にて生成される前記度数分布情報に基づいて、前記マージンと前記情報領域との境界部に設けられる暗色の境界パターンを推定する境界パターン推定手段と、を備え、前記誤り検出手段によって誤りが検出された前記マージン対応領域の誤った前記暗色領域を、前記境界パターン推定手段により推定される前記境界パターン及び前記境界パターンの外側に配される明色パターンに置換することで前記マージン対応領域を復元し、前記配列データを再生成することを特徴とする。
【0011】
請求項6の発明は、請求項1から請求項4のいずれか一項に記載の光学的情報読取装置において、前記復元手段は、読取対象となる前記情報コードの種別を特定する種別特定手段と、前記種別特定手段により特定される種別に基づいて、前記マージンと前記情報領域との境界部に設けられる暗色の境界パターンを推定する境界パターン推定手段と、を備え、前記誤り検出手段によって誤りが検出された前記マージン対応領域の誤った前記暗色領域を、前記境界パターン推定手段により推定される前記境界パターン及び前記境界パターンの外側に配される明色パターンに置換することで前記マージン対応領域を復元し、前記配列データを再生成することを特徴とする。
【0012】
請求項7の発明は、請求項6に記載の光学的情報読取装置において、前記種別特定手段は、前記誤り検出手段により誤りが検出された前記マージン対応領域以外の前記暗色領域及び前記明色領域に基づいて前記情報コードの前記種別を特定することを特徴とする。
【0013】
請求項8の発明は、請求項1に記載の光学的情報読取装置において、指向性を有する照明光を出射する光源と、前記光源から出射される前記照明光を揺動させる揺動手段とを備え、前記揺動手段により前記照明光を二方向に走査可能な投光手段を有し、前記二値化手段は、前記投光手段により前記照明光が一方向に走査されたときに、前記受光手段の前記受光信号により得られる前記信号波形を明色領域と暗色領域とに区分けして第1配列データを生成する第1二値化手段と、前記投光手段により前記照明光が前記一方向とは逆の他方向に走査されたときに、前記受光手段の前記受光信号により得られる前記信号波形を明色領域と暗色領域とに区分けして第2配列データを生成する第2二値化手段と、を備え、前記デコード手段は、少なくとも前記第1配列データを前記配列データとしてデコードする構成をなし、前記誤り検出手段は、前記第1配列データにおける始端側の前記マージン対応領域に前記暗色領域が含まれる誤りを検出する構成をなし、前記復元手段は、前記第2配列データに基づいて前記第1配列データにおける前記マージン対応領域の前記誤りを修正し、当該マージン対応領域を復元するように前記第1配列データを再生成することを特徴とする。
【0014】
請求項9の発明は、請求項8に記載の光学的情報読取装置において、前記復元手段は、前記第2配列データの最終の暗色端部パターンに基づき、前記第1配列データの最初に配置されるべき正規の暗色端部パターンを推定する正規パターン推定手段を備え、前記誤り検出手段によって誤りが検出された前記マージン対応領域の誤った前記暗色領域を、前記正規パターン推定手段により推定される正規の前記暗色端部パターン及び前記暗色端部パターンの外側に配される明色パターンに置換することで前記マージン対応領域を復元し、前記第1配列データを再生成することを特徴とする。
【0015】
請求項10の発明は、請求項8又は請求項9に記載の光学的情報読取装置において、前記誤り検出手段は、前記第1配列データの終端側から始端側へ向けて前記マージン対応領域に至るまでの前記暗色領域及び前記明色領域に基づいて前記情報コードの種別を特定する種別特定手段を備え、前記種別特定手段によって特定される前記情報コードの種別に基づいて、前記第1配列データにおける始端側の前記マージン対応領域に前記暗色領域が含まれる誤りを検出することを特徴とする。
【0016】
請求項11の発明は、請求項8から請求項10のいずれか一項に記載の光学的情報読取装置において、前記復元手段は、前記第1配列データの始端側において前記マージン対応領域と前記情報領域とに跨って配置される誤った第1暗色領域の幅情報と、前記第1暗色領域の終端側に隣接する第1明色領域の幅情報と、をそれぞれ記憶する第1幅情報記憶手段と、前記第2配列データの最終の前記明色領域の隣に位置する第2暗色領域の幅情報と、前記第2暗色領域の始端側に隣接する第2明色領域の幅情報と、をそれぞれ記憶する第2幅情報記憶手段と、を備え、前記第2暗色領域と前記第2明色領域との幅比率に基づいて、前記第1配列データにおける前記第1暗色領域と前記第1明色領域との幅比率を、正規の幅比率に復元することを特徴とする。
【0017】
請求項12の発明は、請求項8から請求項11のいずれか一項に記載の光学的情報読取装置において、前記誤り検出手段は、前記第2配列データの始端側の前記マージン対応領域に前記暗色領域が含まれる誤りを検出する構成をなし、前記復元手段は、前記第1配列データに基づいて前記第2配列データにおける前記マージン対応領域の前記誤りを修正し、当該マージン対応領域を復元するように前記第2配列データを再生成する構成をなしており、前記デコード手段は、前記復元手段により再生成された前記第1配列データをデコードし、その再生成された前記第1配列データのデコードが失敗した場合には、前記復元手段により再生成された前記第2配列データをデコードすることを特徴とする。
【0018】
請求項13の発明は、請求項8から請求項12のいずれか一項に記載の光学的情報読取装置において、前記第2配列データの所定位置が前記第1配列データのどの位置に対応するかを特定する対応情報を記憶する対応情報記憶手段を備え、前記復元手段は、前記第2配列データの始端位置から最終の前記暗色領域までの前記明色領域及び前記暗色領域の幅値の総和を位置情報として記録する記録手段を備えると共に、前記位置情報と前記対応情報とに基づいて前記第1配列データの誤った前記暗色領域の位置を特定し、前記第2配列データの最終の前記暗色領域のパターンに基づいて前記第1配列データの前記マージン対応領域の前記誤りを修正し、前記第1配列データを再生成することを特徴とする。
【0019】
請求項14の発明は、請求項13に記載の光学的情報読取装置において、第1の測定対象に対して前記投光手段により前記照明光が一方向に走査されたときの第1の測定結果と、第2の測定対象に対して前記照明光が他方向に走査されたときの第2の測定結果と、を記録する測定結果記録手段を備え、前記対応情報記憶手段は、前記第1の測定結果と前記第2の測定結果とを前記対応情報として記憶し、前記復元手段は、前記第1の測定結果と前記第2の測定結果とに基づいて前記第1配列データと前記第2配列データとを位置的に対応付けることを特徴とする。
【発明の効果】
【0020】
請求項1の発明のように、配列データにおいて、マージンとして認識されるべき領域(マージン対応領域)に暗色領域が含まれる誤りを検出すると共に、当該マージン対応領域を復元するように配列データを再生成し、その再生成後の配列データをデコードするように構成すれば、マージン部分が誤認識される誤りを訂正して正確にデコードできるようになる。特に、マージン部分が暗色パターンとして認識されやすい情報コードを読み取る場合に有用な構成となる。
【0021】
請求項2の発明のように、閾値を設定変更し得るように構成し、設定変更前後の暗色領域の幅変化が基準を超えると判断された場合にマージンとして認識されるべき領域(マージン対応領域)に誤りが生じたことを検出するように構成すれば、マージンとして認識されるべき領域の誤りを迅速かつ精度高く検出できるようになる。
【0022】
請求項3の発明のように、明色領域の最大幅の、暗色領域の最大幅に対する比が基準値未満であるか否かを判断し、この比が基準値未満であると判断された場合に、マージンとして認識されるべき領域(マージン対応領域)に誤りが生じたことを検出するように構成すれば、マージンとして認識されるべき領域の誤りをより精度高く検出できるようになる。
【0023】
請求項4の発明のように、種別特定手段によって特定された種別に基づいて基準値を設定し、この基準値と、明色領域の最大幅の暗色領域の最大幅に対する比とを比較する構成とすれば、情報コードの種別に応じた適切な比較が可能となる。
【0024】
請求項5の発明のように、暗色領域及び明色領域の少なくともいずれか一方の幅値を集計して幅値毎の度数分布情報を生成し、その度数分布情報に基づいて、マージンと情報領域との境界部に設けられる暗色の境界パターンを推定するようにすれば、特別な構成や特別なデータを予め用意せずともマージンと情報領域との境界部に設けられる暗色の境界パターンを精度高く把握できる。更に、誤りが検出されたマージン対応領域の誤った暗色領域を、推定される境界パターン及び境界パターンの外側に配される明色パターンに置換してマージンとして認識されるべき領域(マージン対応領域)を復元するようにすれば、複雑な構成を用いずともマージン対応領域の誤りを精度高く復元できるようになる。
【0025】
請求項6の発明のように、読取対象となる情報コードの種別を特定し、その特定される種別に基づいて、マージンと情報領域との境界部に設けられる暗色の境界パターンを推定するようにすれば、複雑な構成を用いずともマージンと情報領域との境界部に設けられる暗色の境界パターンを精度高く把握できる。更に、誤りが検出されたマージン対応領域の誤った暗色領域を、推定される境界パターン及び境界パターンの外側に配される明色パターンに置換してマージンとして認識されるべき領域(マージン対応領域)を復元するようにすれば、複雑な構成を用いずともマージン対応領域の誤りを精度高く復元できるようになる。
【0026】
請求項7の発明のように、誤りが検出されたマージン対応領域以外の暗色領域及び明色領域に基づいて情報コードの種別を特定するようにすれば、誤りが検出された領域以外の領域を利用して情報コードの種別を精度高く特定できるようになる。
【0027】
請求項8の発明は、照明光が一方向に走査されたときの信号波形に基づいて第1配列データを生成し、少なくともこの第1配列データをデコードする構成をなしている。このようにすれば、照明光の走査に基づいてデコード処理を適切に行うことができる。また、照明光が他方向に走査されたときの信号波形に基づいて第2配列データを生成する構成をなしており、第1配列データの始端側のマージン対応領域に暗色領域が含まれる誤りが検出されたとき、第2配列データに基づいて第1配列データにおけるマージン対応領域の誤りを修正し、当該マージン対応領域を復元するように第1配列データを再生成する構成をなしている。このようにすると、仮に一方向の走査によって得られた配列データ(第1配列データ)においてマージン対応領域に誤りが生じたとしても、この誤りを他方向の走査によって得られた第2配列データに基づいて適切に修正でき、ひいては第1配列データのデコードを精度高く行うことができる。
【0028】
請求項9の発明では、第2配列データの最終の暗色端部パターンに基づき、第1配列データの最初に配置されるべき正規の暗色端部パターンを推定している。第2配列データの最終の暗色端部パターンは、第1配列データの最初に配置されるべき正規の暗色端部パターンに対応するものであり、当該正規の暗色端部パターンを示している可能性が高い。従って、第2配列データの最終の暗色パターンに着目すれば正規の暗色端部パターンを精度高く推定できる。さらに、誤りが検出されたマージン対応領域の誤った暗色領域をその推定される正規の暗色端部パターン及び当該暗色端部パターンの外側に配される明色パターンに置換する構成とすれば、第1配列データに生じた誤りを適切に解消でき、その結果、第1配列データのデコードをより正確に行うことができるようになる。
【0029】
請求項10の発明は、第1配列データの終端から始端側のマージン対応領域に至るまでの暗色領域及び明色領域に基づいて情報コードの種別を特定するように構成されている。このように情報コードの種別を特定すれば、コード種別に基づいて始端側のマージン対応領域の正規の構成を把握できるようになり、その結果、第1配列データの始端側のマージン対応領域に暗色領域が含まれる誤りを精度高く検出できるようになる。
【0030】
請求項11の発明では、第1配列データの始端側においてマージン対応領域と情報領域とに跨って配置される誤った第1暗色領域の幅情報と、第1暗色領域の終端側に隣接する第1明色領域の幅情報と、をそれぞれ記憶している。そして、第2配列データの最終の明色領域の隣に位置する第2暗色領域の幅情報と、第2暗色領域の始端側に隣接する第2明色領域の幅情報と、の幅比率に基づいて、第1配列データにおける第1暗色領域と第1明色領域との幅比率を、正規の幅比率に復元している。このようにすれば、第2配列データの終端側の部分が第1配列データの始端側のどの位置に相当するかを幅情報(特に明色領域の幅情報)を基準として適切に対応付けることができ、復元の正確性を一層高めることができる。
【0031】
請求項12の発明は、復元手段により再生成された第1配列データをデコードし、その再生成された第1配列データのデコードが失敗した場合には、復元手段により再生成された第2配列データをデコードするように構成されている。このようにすれば、仮に第1配列データの復元・デコードが失敗したとしても、第2配列データを用いてデコードできるため、デコードの成功確率が格段に高まる。また、その第2配列データの始端側のマージン対応領域に暗色領域が含まれる誤りが存在しても、第1配列データを用いて復元処理を行った上でデコード処理が行われるようになっており、効率的な復元処理、精度高いデコード処理が可能となる。
【0032】
請求項13の発明では、第2配列データの始端位置から最終の前記暗色領域までの明色領域及び暗色領域の幅値の総和と、対応情報とに基づいて第1配列データの誤った暗色領域の位置を特定するようにしている。このようにすれば、誤った暗色領域を迅速且つ的確に特定でき、第2配列データの最終の暗色領域のパターンに基づいて第1配列データのマージン対応領域の誤りを適切に修正できる。
【0033】
請求項14の発明では、第1の測定対象に対して投光手段により照明光が一方向に走査されたときの第1の測定結果と、第2の測定対象に対して照明光が他方向に走査されたときの第2の測定結果と、を記録し、復元処理を行う際に、第1の測定結果と第2の測定結果とに基づいて第1配列データと第2配列データとを位置的に対応付けるようにしている。このように予め測定された第1の測定結果及び第2の測定結果に基づき、復元処理において第1配列データと第2配列データとを対応付けるようにすれば、第2配列データを利用しての第1配列データの復元を精度高くスムーズに行うことができる。
【発明を実施するための最良の形態】
【0034】
[第1実施形態]
以下、本発明の光学的情報読取装置を具現化した第1実施形態について、図面を参照して説明する。図1は、本発明の第1実施形態に係るバーコードリーダの電気的構成を概略的に例示するブロック図である。図2は、読取対象のバーコードを例示する説明図である。
【0035】
図1に示すバーコードリーダ10は、バーコード(「バーコード」は情報コードの一例に相当する)Bを読み取り可能な装置であり、図示しないケースの内部に回路部20が収容されてなるものである。バーコードBは、例えば図2に示すような構成をなしており、黒色パターンP1と、黒色パターンP1の間に配される白色パターンP2とからなる情報領域を有すると共に、両端部に白色パターンとして認識されるべきマージンMが設けられている。なお、図2では、黒色パターン及び白色パターンの一部について符号を付している。なお、本実施形態では、「明色」の一例として「白色」を用い、「暗色」の一例として「黒色」を用いている。また、「明色パターン」の一例として「白色パターン」を用い、「暗色パターン」の一例として黒色パターンを用いている。また、「明色領域」の一例として「白色領域」を用い、「暗色領域」の一例として「黒色領域」を用いている。
【0036】
回路部20は、主に、照明光源21、受光センサ28、結像レンズ27等の光学系と、メモリ35、制御回路40、トリガースイッチ50等のマイクロコンピュータ(以下「マイコン」という)系と、から構成されている。
【0037】
光学系は、投光光学系と、受光光学系とに分かれている。投光光学系を構成する照明光源21は、照明光Lfを発光可能な照明光源として機能するもので、例えば、赤色のLEDとこのLEDの出射側に設けられるレンズとから構成されている。なお、図1では、バーコードBが付された読取対象物Rに向けて照明光Lfを照射する例を概念的に示している。
【0038】
受光光学系は、受光センサ28、結像レンズ27、反射鏡(図示略)などによって構成されている。受光センサ28は、読取対象物RやバーコードBに照射されて反射した反射光Lrを受光可能に構成されるものである。この受光センサ28は、結像レンズ27を介して入射する入射光を受光可能にプリント配線板(図示略)に実装されている。
【0039】
結像レンズ27は、外部から読取口(図示略)を介して入射する入射光を集光して受光センサ28の受光面28aに像を結像可能な結像光学系として機能するものである。本実施形態では、照明光源21から照射された照明光Lfが、バーコードBにて反射した後、この反射光Lrを結像レンズ27で集光し、受光センサ28の受光面28aにコード像を結像させている。
【0040】
マイコン系は、増幅回路31、A/D変換回路33、メモリ35、アドレス発生回路36、同期信号発生回路38、制御回路40、トリガースイッチ50、表示LED(以下、単にLEDとも称する)45、ブザー44、液晶表示器46、通信インタフェース48等から構成されている。
【0041】
光学系の受光センサ28から出力される画像信号(アナログ信号)は、増幅回路31に入力されることで所定ゲインで増幅された後、A/D変換回路33に入力されると、アナログ信号からディジタル信号に変換される。そして、ディジタル化された画像信号、つまり画像データ(画像情報)は、メモリ35に入力されると、所定のコード像画像情報格納領域に蓄積される。なお、同期信号発生回路38は、受光センサ28およびアドレス発生回路36に対する同期信号を発生可能に構成されており、またアドレス発生回路36は、この同期信号発生回路38から供給される同期信号に基づいて、メモリ35に格納される画像データの格納アドレスを発生可能に構成されている。
【0042】
制御回路40は、バーコードリーダ10全体を制御可能なマイコンで、CPU、システムバス、入出力インタフェース等からなるもので、メモリ35とともに情報処理装置を構成し得るもので情報処理機能を有する。この制御回路40は、内蔵された入出力インタフェースを介して種々の入出力装置と接続可能に構成されており、本実施形態の場合、トリガースイッチ50、LED45、ブザー44、液晶表示器46、通信インタフェース48等を接続されている。これにより、例えば、トリガースイッチ50の監視や管理、LED45の点灯、非点灯、ビープ音やアラーム音を発生可能なブザー44の鳴動のオンオフ、液晶表示器46の表示制御、通信インターフェース48の制御等を可能にしている。
【0043】
次に、バーコードリーダ10の読取処理について説明する。
この読取処理では、図1のようにまずバーコードBからの反射光を受光センサ28(受光センサ28は「受光手段」の一例に相当する)にて受光し、この受光センサ28によりバーコードBの各パターンごとに反射光の強度に応じた受光信号を出力する。さらに、受光センサ28により出力される受光信号の信号波形を閾値と比較し、その比較に基づいて信号波形を白色領域と黒色領域とに区分けする。そして、区分けされた白色領域及び黒色領域の配列データをデコードする。なお、制御回路40及び図3のプログラムが「二値化手段」「デコード手段」の一例に相当する。
【0044】
さらに、本実施形態に係るバーコードリーダ10は、マージン対応領域(配列データにおけるマージンとして認識されるべき領域)に黒色領域が含まれる誤りを検出するように構成されており、誤りがあった場合にはその誤りを修正してマージン対応領域を復元するように配列データを再生成する構成となっている。そして、このようにマージン対応領域が復元された再生成後の配列データがデコード処理されることとなる。
なお、制御回路40及び図4のプログラムが「誤り検出手段」の一例に相当し、制御回路40及び図5のプログラムが「復元手段」の一例に相当する。
【0045】
以下、読取処理の具体的な流れについて説明する。なお、図3は読取処理の流れを例示するフローチャートであり、図4は、その読取処理の一部を構成する誤り検出処理を例示するフローチャートである。図5は、受光信号の信号波形と閾値との関係を例示する説明図である。図6(A)は、図5の閾値のときの配列データの構成を概念的に示す説明図であり、図6(B)は復元後の配列データの構成を概念的に示す説明図である。図7(A)は、閾値を設定変更したときの閾値と信号波形との関係を示す説明図であり、図7(B)はそのときの配列データの構成を概念的に示す説明図である。また、図8は、読取処理の一部を構成する復元処理を例示するフローチャートである。
【0046】
図3に示す読取処理は例えば図1に示すトリガスイッチ50の操作等によって開始される。当該処理が開始されると、まず、受光センサ28にバーコードBのコード情報を読み取らせる処理(即ち、受光センサ28にバーコードBからの反射光を受光させ、画像情報を取得させる処理)が行われ(S1)、さらにこの受光センサ28に受光信号の信号波形(パターン波形)を出力させる処理が行われる(S2)。例えば、図2のようなバーコードBの画像情報を取得すると、図5のようなパターン波形が出力されメモリ35に記憶されることになる。
【0047】
その後、二値化処理が行われる(S3)。この二値化処理では、受光センサ28により出力される受光信号の信号波形(即ち、図5に示すパターン波形)を閾値と比較し、その比較に基づいて信号波形を白色領域と黒色領域とに区分けする。この閾値は、予め定められた一定の値であってもよく、パターン波形に基づいて定められる値であってもよい。
【0048】
図5の例では、得られたパターン波形の最大値と最小値とを求め、それら最大値と最小値との中間値を閾値として設定しており、パターン波形において受光信号のレベルが閾値より大きくなる領域を白色領域とし、受光信号のレベルが閾値よりも小さくなる領域を黒色領域として区分けする。このような二値化を行うことで、図6(A)にて概念的に示すような黒色領域Xと白色領域W1との配列データが得られる。この配列データは、バーコードB(図2)における黒色パターンP1及び白色パターンP2の配列に対応するものであり、各黒色パターンの位置(所定の基準位置に対する相対位置)及び幅を特定でき、各白色パターンの位置(所定の基準位置に対する相対位置)及び幅を特定できるようになっている。
【0049】
図3に戻り、S3にて二値化処理が行われた後、S4にて各黒色領域の領域幅を算出する処理が行われる。即ち、上述の二値化処理により、図6(A)にて概念的に示すような複数の黒色領域Xが得られるため、各黒色領域の領域幅をそれぞれ算出し、メモリ35に記憶する。
【0050】
その後、マージン対応領域の誤りを検出する処理が行われる(S5)。この処理は、配列データにおけるマージンとして認識されるべき領域(マージン対応領域)に誤りが生じているか否かを検出する処理であり、まず、図4のS10に示すように閾値を設定変更する処理が行われる。この処理は、図3の二値化処理で設定した閾値を設定変更する処理であり、例えば図5のように設定されていた閾値を、これよりも大きい閾値に設定変更する(図7(A)参照)。
【0051】
そして、その設定変更された閾値に基づいて再度二値化処理を行う(S20)。この二値化処理はS3と同様であり、S2で得られた受光信号の信号波形(パターン波形)において受光信号のレベルが閾値(S10での設定変更後の閾値)より大きくなる領域を白色領域とし、受光信号のレベルが閾値(S10での設定変更後の閾値)よりも小さくなる領域を黒色領域として区分けする。なお、図7(B)では、設定変更後の配列データの構成を概念的に示している。
【0052】
さらに、設定変更後の各黒色領域の幅を算出する処理を行う(S30)。即ち、上記S20の二値化処理によって図7(B)に示すような複数の黒色領域Yが得られるため、各黒色領域の領域幅をそれぞれ算出し、メモリ35に記憶する。
【0053】
その後、閾値変更前後の黒色領域の幅を比較する処理を行う(S40)。即ち、設定変更前の各黒色領域Xの幅と、設定変更後の各黒色領域Yの幅とを対応する位置毎に比較し、各黒色領域Xの幅がどの程度変化したかを算出する。本実施形態では、設定変更前の左端の黒色領域X1が設定変更によって2つの黒色領域Y0、Y1に変化しており、設定変更前の各黒色領域X2,X3,X4・・・が、設定変更によって各黒色領域Y2,Y3,Y4・・・に変化している。
【0054】
そして、各黒色領域Xについて基準を超える変化があったか否か(具体的には、各黒色領域の設定変更前後の幅の変化量が予め定められた基準値を超えるか否か)を判断し(S50)、基準を超える変化があった場合にはS50にてYesに進み、S70にてマージン対応領域に誤りがあったことをメモリ35に記憶し(具体的には誤りがあったことを示す誤りフラグを「1」に設定)、さらに基準を超える変化があった黒色領域を特定しうる情報をメモリ35に記憶する。一方、いずれの黒色領域Xについても基準を超える変化がなかった場合にはS50にてNoに進み、S60にてマージン対応領域に誤りがなかったことをメモリ35に記憶する(具体的には誤りフラグを「0」に設定する)。
【0055】
図6(A)、図7(B)の例では、左端の黒色領域X1の幅が設定変更前後で大きく変化しており、その変化量が予め定められた基準値を超えている。それ以外の黒色領域X2,X3,X4・・・は変化が小さく、各変化量は基準値を下回っている。従って、基準を超える変化があったものとしてS50にてYesに進み、S70にて誤りフラグが「1」に設定されると共に、基準を超える変化があった左端の黒色領域X1を特定しうる情報がメモリ35に記憶される。なお、図6(A)の左端の黒色領域X1のように、設定変更後に複数の黒色領域(図7(B)のY1,Y2参照)に変化するような場合、その複数の黒色領域のうちの最も幅の大きい黒色領域の幅を設定変更後の黒色領域の幅として扱ってもよく、それら複数の黒色領域の幅の合計値を設定変更後の黒色領域の幅と扱ってもよい。
【0056】
このように、本実施形態では、閾値を設定変更すると共に、その設定変更前後において、黒色領域を抽出し、設定変更前後の黒色領域の幅変化が基準を超えると判断された場合に、マージン対応領域に誤りが生じたことを検出している。なお、制御回路40及び図4のプログラムは「設定変更手段」「変化判断手段」の一例に相当する。
【0057】
図3に戻り、誤り検出処理(S5)の終了後、マージン対応領域に誤りがあったか否かの判断処理が行われ(S6)、マージン対応領域に誤りがあった場合、即ち、誤りフラグが「1」に設定されている場合には、S6にてYesに進み、後述する復元処理が行われる(S7)。一方、マージン対応領域に誤りがない場合、即ち、誤りフラグが「0」に設定されている場合にはS6にてNoに進むことになる。
【0058】
次に、S7の復元処理について説明する。
この復元処理では、まず、読取対象となるバーコードBの種別を特定し、その特定される種別に基づいて、マージンと情報領域との境界部に設けられる黒色の境界パターンを推定する。そして、配列データにおける誤りが検出されたマージン対応領域の誤った黒色領域を、推定される境界パターン及び境界パターンの外側に配される白色パターンに置換することでマージン対応領域を復元し、配列データを再生成する。
なお、制御回路40及び図8のプログラムが「種別特定手段」、「境界パターン推定手段」の一例に相当する。
【0059】
以下、復元処理について具体的に説明する。なお、図8は、復元処理を例示するフローチャートであり、図9は種別特定処理を例示するフローチャートである。また、図10は個別判断処理の一例を示すフローチャートである。さらに、図11(A)は、CODE39のバーコード構成を説明する説明図であり、図11(B)は、CODE39のバーコードに関し、マージン対応領域に誤りが生じた配列データを概念的に示している。図11(C)は、図11(B)とは異なるタイプの誤りが生じた配列データを概念的に示している。図12は、図10とは異なる個別判断処理を例示するフローチャートである。
【0060】
図8に示すように、まず、読取対象のバーコードBの種別を特定する処理(種別特定処理)を行う(S100)。この種別特定処理は、誤りが検出されたマージン対応領域以外の黒色領域及び白色領域に基づいてバーコードBの種別を特定する処理であり、具体的には、バーコードBが登録されている複数種別のいずれかに該当するかを順番に確認する。図9は、その一例を示すものであり、まず、S200にてnを1に設定し、次いでn番目の個別判断処理を行う(S210)。個別判断処理は、バーコードBが各種別に該当するかを個別に判断する処理であり、本実施形態では登録される複数種別にそれぞれ対応するように複数の個別判断処理が用意され、各個別判断処理に固有の番号が付されている。
【0061】
図10は、初回(即ちn=1の場合)の個別判断処理を例示しており、この処理では、読取対象のバーコードBがCODE39のバーコードであるか否かを判断している。CODE39のバーコードは、例えば図11(A)のような構成をなし、両マージンに隣接してスタートキャラクタ及びストップキャラクタを構成する白黒バーが配されてなるものである。図10の処理では、このようなCODE39の特徴を利用してバーコードBがCODE39に該当するか否かを判断する。
【0062】
図10に示すように、まず配列データにおいて、誤ったマージン対応領域の反対側のマージン対応領域を特定する(S300)。具体的には、バーの配列方向において、誤ったマージン対応領域の反対側の端部に配される白色領域を反対側のマージンとして認識する。そして、その反対側のマージン対応領域(白色領域)に隣接してCODE39のスタートキャラクタ又はストップキャラクタが存在するか否かを判断する(S310)。CODE39のスタートキャラクタ又はストップキャラクタが存在しない場合には、S310にてNoに進み当該処理を終了する。
【0063】
一方、反対側のマージン対応領域に隣接してCODE39のスタートキャラクタ又はストップキャラクタが存在すると判断した場合にはS310にてYesに進み、誤ったマージン対応領域以外の配列データを用いてCODE39としてデコードできるか否かを判断する。
【0064】
配列データにおけるマージン対応領域の誤り(即ち誤った黒色領域)は、例えば図11(B)のように境界パターンの黒色領域PAの外側に連続して構成されたり、図11(C)のように、境界パターンの黒色領域PAの外側に離れて構成されるため、S320の処理では、誤った黒色領域の内側端部をCODE39の境界パターンの黒色領域PA(即ち、スタートキャラクタ或いはストップキャラクタの端部を構成する黒色領域)に置換してCODE39としてデコードを試行したり、或いは誤った黒色領域全部を白色領域に置換してCODE39としてデコードを試行し、デコードできるか否かを判断する。デコードが可能な場合にはS320にてYesに進み、読取対象のバーコードBの種別がCODE39である旨の情報をメモリ35に記憶する。
【0065】
このようにして個別判断処理が行われた後、図9のS220において、読取対象のバーコードBの種別が特定されたか否かを判断する。図10のS330のように、特定種別である旨が記憶された場合にはS220てYesに進み、図9に示す種別特定処理を終了する。一方、種別が特定されていない場合にはS220にてNoに進んでnをインクリメントし(S230)、S210に戻って次の種別に関する個別判断処理を行う。
【0066】
図12は、2番目の個別判断処理を例示しており、この処理では、EAN−8の特徴を利用して、読取対象のバーコードBの種別がEAN−8であるか否かを判断している。この処理では、まず、配列データにおける誤ったマージン対応領域の反対側のマージン対応領域を特定する処理を行う(S400)。具体的には、配列データにおいて、マージン対応領域の誤り(誤った黒色領域)から45個のパターン分だけ移動した位置を反対側のマージン対応領域とする。さらに、配列データにおいて、反対側のマージン対応領域に隣接してEAN−8のスタートキャラクタ又はストップキャラクタが存在するか否かを判断する。存在しない場合にはS410にてNoに進み、当該処理を終了する。
【0067】
S410において反対側のマージン対応領域に隣接してEAN−8のスタートキャラクタ又はストップキャラクタが存在すると判断される場合には、S410にてYesに進み、センターガードパターンが確認できるか判断する処理を行う(S420)。具体的には、配列データにおいて、スタートキャラクタ又はストップキャラクタを構成する白色領域及び黒色領域から誤ったマージン対応領域側に16パターン分移動した位置に、センターガードパターンを構成する白色領域及び黒色領域が存在するか否かを判断する。存在しない場合にはS420にてNoに進み、当該処理を終了する。
【0068】
センターガードパターンが確認できる場合には、S420にてYesに進み、配列データにおける、スタートキャラクタ又はストップキャラクタと、センターガードパターンとの間のデータを用いてEAN−8としてデコードできるか否かを判断する(S430)。デコードできない場合にはS430にてNoに進み、当該処理を終了する。デコードできる場合には、バーコードBの種別がEAN−8である旨の情報をメモリ35に記憶し(S440)、当該処理を終了する。
【0069】
以上のように、個別判断処理を順次行い、読取対象のバーコードBの種別を特定する。そして、種別が特定された場合には、図9のS220にてYesに進んで種別特定処理を終了する。種別特定処理の終了後は、図8のS110にて境界パターン及びマージンの特定処理が行われる。具体的には、種別特定処理にて特定されたバーコードの種別に対応する境界パターンのデータをメモリ35から読み出して、境界パターンを特定する。なお、本実施形態では、メモリ35において、バーコードの各種別と、境界パターンのデータとが対応付けられて記憶されており、バーコードの種別が特定されれば境界パターンのデータが読み出せるようになっている。
【0070】
そして、特定された境界パターン及びその外側の白色パターンに基づいて、配列データにおける誤った黒色領域を置換する(S120)。具体的には、誤った黒色領域の内側端部領域が境界パターンの黒色領域である可能性が高いため、誤った黒色領域の内側端部領域を、図8のS110にて特定される境界パターンの黒色領域に置換し、その外側の領域を白色領域に置換するように処理を行う。例えば、EAN−8コードの場合には、マージンは11モジュール、マージンに隣接する黒バー(即ち境界パターン)は1モジュールと規定されているため、このような規定に合うように修正する。
【0071】
置換後には、図6(A)のように構成されていた配列データ(マージン対応領域に誤りが生じていた元の配列データ)が、図6(B)のように置換されることとなる。なお、図6(B)では、置換対象の領域を破線で囲んで示している。S120が終わると、復元処理は終了する。そして、復元処理(S7、図8)の終了後には、置換後の配列データ(図6(B)参照)に基づいて、図3のS8に示すデコード処理が行われる。なお、S6にてマージン対応領域に誤りがないと判断される場合にはS6にてNoに進み、そのままS8のデコード処理が行われる。
【0072】
なお、上記の例では、誤った黒色領域の内側端部領域を特定された境界パターンの黒色領域に置換し、その外側の領域を白色領域に置換した上でデコードを行ったが、誤った黒色領域が境界パターンから離れて形成される可能性もある(図11(C)参照)。そこで、上記デコード処理において正常にデコードが行われなかった場合には、誤った黒色領域全部を白色領域に置換するように配列データを修正して再びデコード処理を試行するようにしてもよい。
【0073】
本実施形態のように、配列データ(二値化手段により区分けされた白色領域及び黒色領域を配列したデータ)において、マージンとして認識されるべき領域(マージン対応領域)に黒色領域が含まれる誤りを検出すると共に、当該マージン対応領域を復元するように配列データを再生成し、その再生成後の配列データをデコードするように構成すれば、マージン部分が誤認識される誤りを訂正して正確にデコードできるようになる。特に、マージン部分が黒色パターンとして認識されやすい情報コードを読み取る場合に有用な構成となる。
【0074】
また、本実施形態のように、閾値を設定変更し得るように構成し、設定変更前後の黒色領域の幅変化が基準を超えると判断された場合にマージンとして認識されるべき領域(マージン対応領域)に誤りが生じたことを検出するように構成すれば、マージンとして認識されるべき領域の誤りを迅速かつ精度高く検出できるようになる。
【0075】
さらに、読取対象となる情報コードの種別を特定し、その特定される種別に基づいて、マージンと情報領域との境界部に設けられる黒色の境界パターンを推定するようにすれば、複雑な構成を用いずともマージンと情報領域との境界部に設けられる黒色の境界パターンを精度高く把握できる。更に、誤りが検出されたマージン対応領域の誤った黒色領域を、推定される境界パターン及び境界パターンの外側に配される白色パターンに置換してマージンとして認識されるべき領域(マージン対応領域)を復元するようにすれば、複雑な構成を用いずともマージン対応領域の誤りを精度高く復元できるようになる。
【0076】
また、誤りが検出されたマージン対応領域以外の黒色領域及び白色領域に基づいて情報コードの種別を特定するようにすれば、誤りが検出された領域以外の領域を利用して情報コードの種別を精度高く特定できるようになる。
【0077】
[第2実施形態]
次に第2実施形態について説明する。図13は、本発明の第2実施形態に係るバーコードリーダにて行われる誤り検出処理の流れを例示するフローチャートである。なお、第2実施形態は、S5の誤り検出処理(図3)の具体的内容のみが第1実施形態と異なり、それ以外は第1実施形態と同様である。よって、S5の誤り検出処理については、図4、図7に代えて図13を用いて説明する。また、それ以外については図1〜図12(但し、図4、図7以外)と同様であるので適宜これらを参照し、詳細な説明は省略する。
【0078】
本実施形態では、二値化処理(図3のS3)によって抽出される複数の黒色領域の最大幅と、その二値化処理によって抽出される複数の白色領域の最大幅とを検出し、白色領域の最大幅の、黒色領域の最大幅に対する比が基準値未満であるか否かを判断するようにしている。そして、その比が基準値未満であると判断された場合に、マージン対応領域に誤りが生じたことが検出されるようになっている。
なお、本実施形態では、制御回路40及び図13のプログラムが、「誤り検出手段」「暗色最大幅検出手段」「明色最大幅検出手段」「比較手段」の一例に相当する。また、「二値化手段」「デコード手段」「復元手段」「境界パターン推定手段」「種別特定手段」については第1実施形態と同様である。
【0079】
具体的には、図13のように誤り検出処理が行われる。まず、二値化処理(図3のS3)によって抽出される複数の黒色領域の最大幅Mbと、その二値化処理によって抽出される複数の白色領域の最大幅Mhとを検出する処理を行う(S500)。そして、白色領域の最大幅Mhの黒色領域の最大幅Mbに対する比Mh/Mbを算出する(S510)。
【0080】
その後、読取対象のバーコードBの種別特定処理を行う(S520)。種別特定処理はバーコードBの種別を特定し得る方法であればよく、本実施形態では例えば第1実施形態のS100の種別特定処理(図8)と同様の方法、即ち、図9〜図12のように行われる。なお、制御回路40及び図13のプログラムは、「種別特定手段」の一例に相当する。
【0081】
そして、S520にて特定された種別に基づいて基準値を設定する処理(基準値設定処理)を行う(S530)。この基準値は、マージン対応領域に誤りが生じているか否かを判断する基準となる値(具体的には、比Mh/Mbが正常値(マージン対応領域に誤りがないときの値)か否かを判断する上での基準となる値)である。本実施形態では、マージン幅の黒色バー幅最大値に対する比を各種別毎に予め求めておき、この各種別毎の基準値をメモリ35に記憶している。例えば、種別Aのバーコードにおいて、マージン幅がMhAで、黒色バー幅の最大値がMbAであれば、種別Aの基準値はMhA/MbAとして定められ、メモリ35に記憶されることになる。S530の処理では、このように記憶される基準値のリストの中からS520にて特定された種別に対応するものを読み出す。なお、制御回路40及び図13のプログラムが「基準値設定手段」の一例に相当する。
【0082】
そして、S510にて算出された比Mh/Mbが、S530にて設定された基準値未満であるか否かを判断する(S540)。比Mh/Mbが基準値未満であれば、S540にてYesに進み、S560にてマージン対応領域に誤りがあったことをメモリ35に記憶する。一方、比Mh/Mbが基準値未満でない場合にはS540にてNoに進み、S550にてマージン対応領域に誤りがなかったことをメモリ35に記憶する。このようにして誤り検出処理を行った後は、第1実施形態と同様に、S6〜S8(図3)の処理が行われることとなる。なお、比Mh/Mbが基準値未満である場合には、黒色領域の最大幅Mbの位置を「誤った黒色領域」と考えることができ、この「誤った黒色領域」に対して第1実施形態と同様の復元処理が行われることになる。
【0083】
本実施形態のように、白色領域の最大幅Mhの黒色領域の最大幅Mbに対する比が基準値未満であるか否かを判断し、この比Mh/Mbが基準値未満であると判断された場合に、マージンとして認識されるべき領域(マージン対応領域)に誤りが生じたことを検出するようにすれば、マージンとして認識されるべき領域の誤りをより精度高く検出できるようになる。また、特定された種別に基づいて基準値を設定し、この基準値と、比Mh/Mbとを比較する構成とすれば、情報コードの種別に応じた適切な比較が可能となる。
【0084】
[第3実施形態]
次に第3実施形態について説明する。図14は、本発明の第3実施形態に係るバーコードリーダに用いる復元処理を例示するフローチャートである。図15は、度数分布情報を概念的に例示するものであり、配列データに含まれる各黒色領域について、幅値毎の度数を表したグラフ(ヒストグラム)である。図16は、S610の推定処理に用いる配列データを概念的に説明する説明図である。
第3実施形態では、S7の復元処理(図3)の具体的内容のみが第1実施形態と異なり、それ以外は第1実施形態と同様である。よって、S7の復元処理の具体的内容については、図8〜図12に代えて図14、図15を用いて説明する。また、それ以外については図1〜図7と同様であるので適宜これらを参照し、詳細な説明は省略する。
【0085】
本実施形態では、図3の二値化処理によって得られた黒色領域の幅値を集計すると共に、幅値毎の度数分布情報を生成し、その生成される度数分布情報に基づいて、マージンと情報領域との境界部に設けられる黒色の境界パターンを推定するようにしている。そして、誤りが検出されたマージン対応領域の誤った黒色領域を、推定される境界パターン及び境界パターンの外側に配される白色パターンに置換することでマージン対応領域を復元し、配列データを再生成している。なお、制御回路40及び図14のプログラムは「復元手段」「度数分布情報生成手段」「境界パターン推定手段」の一例に相当する。また、「二値化手段」、「デコード手段」、「誤り検出手段」、「設定変更手段」、「変化判断手段」は第1実施形態と同様である。
【0086】
具体的には、図14のように誤り検出処理が行われる。
まず、S4の処理(図3)において算出された各黒色領域の幅値を集計し、度数分布情報を生成する(S600)。図15は、その度数分布情報をグラフ化した例を示している。その後、マージン対応領域に隣接する端部の黒色領域(即ち、マージンと情報領域との境界部に設けられる黒色の境界パターンの黒色領域)を推定する処理を行う(S610)。具体的には、誤った黒色領域の内側端部領域が境界パターンの黒色領域である可能性が高いため、誤った黒色領域の内側端部領域を、候補となるべき黒色領域にそれぞれ置換してデコード処理を行う。例えば、図15のように、度数分布情報の生成により、黒色領域の幅値として、Wa、Wb、Wc、Wd、Weが得られた場合には、これらのいずれかが境界パターンの黒色領域の幅値であると考えられるため、図16(B)〜(E)のように、Wa、Wb、Wc、Wd、Weの各幅の黒色領域をそれぞれ誤った黒色領域の内側端部領域に配するように配列データを置換し(このとき、各幅の黒色領域の外側は白色領域とする)、デコードを試行する。なお、本実施形態では、誤り検出処理によって誤った黒色領域とされた幅値(図15ではWe)を除いた上でデコードを試行するようにしている。
【0087】
図16(A)は、図3の二値化処理(S3)直後の配列データを示しており、図16(B)は、誤った黒色領域の内側端部領域を幅Waの黒色領域に置換した配列データを示し、図16(C)は、誤った黒色領域の内側端部領域を幅Wbの黒色領域に置換した配列データを示し、図16(D)は、誤った黒色領域の内側端部領域を幅Wcの黒色領域に置換した配列データを示し、図16(E)は、誤った黒色領域の内側端部領域を幅Wdの黒色領域に置換した配列データを示している。このように配列データをそれぞれ生成すると共に、各配列データをデコードし、デコードが正常に行われた配列データを正規の配列データと推定する。例えば、図16(B)の配列データについてデコードが正常に行われた場合には、これを正規の配列データとし、そのときの内側端部領域の幅Waが境界パターンの黒色領域と推定される。
【0088】
そして、図14に示すように、誤った黒色領域を推定される境界パターンの黒色領域及びその外側の白色領域に置換するように置換処理を行い(S620)、配列データを再生成する。置換処理後は、第1実施形態と同様に、図6(A)のように構成されていた配列データ(マージン対応領域に誤りが生じていた元の配列データ)が、図6(B)のように置換され、その置換後の配列データ(図6(B)参照)に基づいて、図3のS8に示すデコード処理が行われる。
【0089】
なお、上記例では、誤った黒色領域の内側端部領域をS610にて推定される境界パターンの黒色領域に置換し、その外側の領域を白色領域に置換した上でデコードを行ったが、誤った黒色領域が境界パターンの黒色領域から離れて形成される可能性もある。従って、S610の処理では、誤った黒色領域の内側端部領域を、度数分布情報の生成によって得られた各幅値の黒色領域に置換しても正常にデコードが行われなかった場合には、誤った黒色領域全部を白色領域に置換してデコード処理を試行するようにしてもよい。このような試行によってデコードが正常に行われた場合、S620では、誤った黒色領域の全部を白色領域に置換するように配列データを再生成することとなる。
【0090】
本実施形態に例示されるように、黒色領域及び白色領域の少なくともいずれか一方の幅値を集計して幅値毎の度数分布情報を生成し、その度数分布情報に基づいて、マージンと情報領域との境界部に設けられる黒色の境界パターンを推定するようにすれば、特別な構成や特別なデータを予め用意せずともマージンと情報領域との境界部に設けられる黒色の境界パターンを精度高く把握できる。更に、誤りが検出されたマージン対応領域の誤った黒色領域を、推定される境界パターン及び境界パターンの外側に配される白色パターンに置換してマージンとして認識されるべき領域(マージン対応領域)を復元するようにすれば、複雑な構成を用いずともマージン対応領域の誤りを精度高く復元できるようになる。
【0091】
[第4実施形態]
次に第4実施形態について説明する。図18は、本発明の第4実施形態に係るバーコードリーダ400を概略的に例示する説明図である。図19は、図18のバーコードリーダ400の電気的構成を概略的に例示するブロック図である。
【0092】
1.全体構成
本実施形態に係るバーコードリーダ400も「光学的情報読取装置」の一例に相当するものであり、情報コードとしてのバーコードBを読取可能に構成されるものである。なお、バーコードBは明色パターン(図18等では白色パターン)と暗色パターン(図18等では黒色パターン)とからなる情報領域を有すると共に、端部に明色パターンとして認識されるべきマージンMが設けられたものである。
【0093】
本実施形態のバーコードリーダ400は、いわゆるレーザスキャン方式として構成されており、レーザ光L1を出射するレーザ光源402と、レーザ光源402から出射されたレーザ光L1をバーコードBに向けて反射する反射ミラー403と、バーコードBからの反射光L2を受光する受光センサ404とを備える。受光センサ404は、受光素子からなると共に光電変換する機能を有し、受光した反射光L2の受光強度に対応したアナログの電気信号を出力する。反射ミラー403は、揺動装置(図19において符号405で示す)の作用によって揺動自在に構成されている。この実施形態では、レーザ光源402としてレーザダイオードを用いる。
【0094】
なお、本実施形態では、レーザ光源402が「光源」の一例に相当し、指向性を有する照明光(レーザ光L1)を出射するように機能する。また、受光センサ404は、「受光手段」の一例に相当し、バーコードB(情報コード)からの反射光L2を受光し、バーコードBの各パターンごとに反射光の強度に応じた受光信号を出力するように機能する。また、揺動装置405が、「揺動手段」の一例に相当し、光源から出射される照明光を揺動させるように機能する。また、これらレーザ光源402及び揺動装置405が「投光手段」の一例に相当し、照明光(レーザ光L1)を二方向(走査線Tに沿った往復方向)に走査するように機能する。
【0095】
揺動装置405としては公知の種々の装置を用いることができる。例えば、反射ミラー403をステップモータの回転軸に取付け、そのステップモータを低周波正逆転駆動する装置を用いることができる(特許第3225621号公報)。また、反射ミラー403の一端にコイルを取付け、そのコイルにマグネットを挿入し、コイルに交流電流を通電することにより、反射ミラー403を周期的に揺動させる装置を用いることもできる(特許第2603883号公報)。さらに、磁歪素子、電歪素子、または表面弾性波素子などのいわゆる表面振動素子で反射ミラー403を構成し、該素子の表面を振動させる装置を用いることもできる。
【0096】
レーザ光源402から出射されたレーザ光L1は、揺動装置405によって揺動する反射ミラー403にて反射され、バーコードB上を往復走査する。図18において符号Tで示す線は、レーザ光L1による走査線を概念的に示すものである。バーコードBにて反射したレーザ光L1は、反射光L2となって受光センサ404に取込まれる。なお、図示しないが、バーコードリーダ400には、バーコードBの読取り範囲を照明するためのマーカ光を照射するマーカ光照射装置などが設けられている。
【0097】
次に、バーコードリーダ400の主な電気的構成について、それをブロックで示す図19を参照して説明する。
バーコードリーダ400は、信号処理部411と、二値化処理部410と、計測処理部409と、デコード部408と、制御部407と、格納部406とを備える。
【0098】
信号処理部411は、受光センサ404から出力された電気信号のノイズを除去するローパスフィルタと、このローパスフィルタから出力された信号を所定のゲイン(増幅率)で増幅する増幅回路と、この増幅回路から出力された信号をパルス信号に変換する微分回路と、この微分回路から出力されたパルス信号を絶対値を取ったパルス列に変換する絶対値回路とを備える。
【0099】
二値化処理部410は、信号処理部411から出力された上記パルス列の各パルスを所定の基準値と比較することにより明暗(スペースかバーか)を判定し、その判定結果に対応する二値データを生成する。計測処理部409は、二値化処理部410により生成された二値データを計数し、バー幅値およびスペース幅値を算出する。
【0100】
なお、上記信号処理部411、二値化処理部410、計測処理部409、デコード部408、制御部407は、それぞれが別々の回路で構成されていてもよく、いくつかの機能を共通の制御回路(例えばCPU等)によって実現してもよい。
【0101】
格納部406は、計測処理部409により算出されたバー幅値およびスペース幅値、さらには後述するデコード部408に備えられたCPUの処理結果などを格納するRAMと、CPUが実行するシステムプログラムや各種の制御プログラムなどが格納されたROMと、ROMから読出したシステムプログラムなどをワークエリアに格納するフラッシュメモリとを備える。
【0102】
デコード部408は、図示しないが、デコード処理および各処理部の制御などを実行するCPUを備えており、そのCPUは、格納部6に格納されたバー幅値およびスペース幅値を、予め格納されている明暗パターンと比較することにより、明暗パターンを抽出し、読取対象のバーコードBにエンコード(符号化)されている光学的情報をデコード(復号)する。さらに、デコード部408は、クロック信号発生回路と、各回路との間でデータの入出力を行う入出力回路とを備える。
【0103】
制御部407は、CPUを備えてなるものであり、信号処理部411に備えられたローパスフィルタの帯域幅の変更、増幅回路のゲインの増減などを必要に応じて実行する。また、制御部407は、レーザ光源402および揺動装置405の制御、バーコードBのデコードが成功したときに「ピッ」などの音を発生するブザーの制御、デコードしたデータなどを外部装置(図示せず)へ出力する制御などを実行する。
なお、図示しないが、バーコードリーダ400には、格納部406、制御部407、デコード部408、計測処理部409、二値化処理部410および信号処理部411へ電源を供給する電源回路が備えられている。
【0104】
2.特徴的構成
次に本実施形態の特徴的構成について図20〜図26を参照しつつ説明する。図20は、図18、図19に示すバーコードリーダ400での読取処理の流れを例示するフローチャートである。また、図21は、図20の読取処理におけるデコード処理を例示するフローチャートである。図22は、復元データのデコード処理を例示するフローチャートである。図23(A)は、正常な配列データを例示する説明図であり、(B)(C)は、配列データにおけるマージンとして認識されるべき領域(マージン対応領域)に暗色領域が含まれた例を示す説明図である。また、(D)は、(C)のデータの明色領域を拡張した後の第1配列データを例示するものである。図24は、デコードが成功した配列データを例示する説明図あり、(A)はマージン対応領域が正常である例を示すものであり、(B)はマージン対応領域に暗色領域が含まれた例を示すものである。(C)は、(B)のデータの明色領域を拡張した後の第1配列データを例示するものである。図25(A)(B)は、デコードが失敗した配列データを例示する説明図であり、(A)は、データ端暗色領域が異常である場合を示すものであり、(B)は、マージン対応領域が異常である場合を示すものである。(C)は、(B)のデータの明色領域を拡張した後の第1配列データを例示するものである。図26は、配列データの復元を説明する説明図である。
【0105】
図20に示す読取処理は電源投入や所定操作(例えばトリガスイッチの押圧操作等)をトリガとして開始される。当該処理が開始されると、まず、レーザ光L1の一方向の走査に基づいて明暗配列データを取得する処理が行われる(S701)。レーザスキャン方式における明暗配列データを取得する方法は周知であるので詳細は省略するが、概要を述べると、レーザ光L1が一方向に走査されたときに受光センサ404から出力される信号波形を閾値と比較して明色領域(明色パターン(本実施形態では白色パターン)を示す領域)と暗色領域(暗色パターン(本実施形態では黒色パターン)を示す領域)とに区別する二値化処理を行い、バーコードBの明色パターン各々の位置及び幅を反映した複数の明色領域、及びバーコードBの暗色パターン各々の位置及び幅を反映した複数の暗色領域を配列した配列データ(明暗配列データ)を取得する。
【0106】
なお、本実施形態では、S701の処理によって得られた明暗配列データが「第1配列データ」の一例に相当する。また、二値化処理部410が「二値化手段」の一例に相当するものであり、受光センサ404(受光手段)により出力される受光信号の信号波形を閾値と比較すると共に、その比較に基づいて信号波形を明色領域と暗色領域とに区分けするように機能する。また、二値化処理部410は、「第1二値化手段」の一例に相当し、レーザ光源402及び揺動装置405により照明光(レーザ光L1)が一方向に走査されたときに受光センサ404(受光手段)から出力される受光信号により得られる信号波形を明色領域と暗色領域とに区分けして第1配列データ(一方向に走査されたときに得られる明暗配列データ)を生成するように機能する。
【0107】
次に、この第1配列データに基づいてデコード処理が行われる(S702)。このデコード処理は、例えば図21のような流れで行われる。なお、本実施形態では、デコード部408が「デコード手段」の一例に相当し、上記二値化処理部410により区分けされた明色領域及び暗色領域の配列データ(S702では、第1配列データ)をデコードするように機能する。
【0108】
S702のデコード処理では、図21に示すように、まず、第1配列データがどの程度デコードが可能かを解析する処理が行われる(S801)。この処理では、S701にて取得した第1配列データの最後(終端側)から最初(始端側)に向けて順次デコードを行い、デコードが不能となる位置まで解析(デコード可能か否かの解析)を続ける。その後、S801での解析に基づいて第1配列データに係るバーコードBのコード種別を特定する処理(種別特定処理)を行う(S802)。この種別特定処理は、例えば第1実施形態と同様の方法(即ち、図9〜図12の方法)で行ってもよく、コード種別を特定し得る方法であれば他の方法でもよい。
【0109】
そして、特定されたコード種別における終端側のデータ端の暗色パターンから始端側のデータ端の暗色パターン手前までの必要本数を算出し、S801のデコード解析処理においてデコード可能とされた本数が必要本数以上であるかを判断する(S803)。このとき、デコード可能とされた本数が必要本数未満の場合にはS803にてNoに進む。デコード可能な本数が必要本数未満の場合とは、即ち、少なくとも始端側のマージン対応領域以外に誤りが含まれることを意味するため、「マージン対応領域の誤りが不明」、かつ「デコード失敗」と判定し(S804)、当該デコード処理を終了する。
【0110】
一方、S803において、デコード可能な本数が必要本数以上と判断された場合、S803にてYesに進み、S701にて生成された第1配列データにおける最初の明色領域の幅W1を取得する(S805)。さらに、S802にて特定されたコード種別に基づき、当該コード種別に必要なマージン幅W2を算出する(S806)。そして、第1配列データの最初の明色領域の幅W1が必要マージン幅W2よりも大きいかを判断する(S807)。図23(B)(C)のように、最初の明色領域の幅W1よりも必要マージン幅W2のほうが大きい場合、S807にてNoに進む。S807にてNoに進むには、現在の最初の明色領域の次の明色領域をマージンと仮定し、最初の明色領域を拡張する処理を行う(S818)。例えば、図23(C)のような第1配列データが得られた場合、現在の最初の明色領域WH1の次の明色領域WH2をマージンと仮定し、始端から前記次の明色領域WH2までの領域全体を明色領域に変換し、図23(D)のような新たな配列データを生成する。その後、この新たな配列データを「第1配列データ」として、S805以降の処理を再度行う。
【0111】
一方、図23(A)のように、必要マージン幅W2よりも最初の明色領域の幅W1のほうが大きい場合にはS807にてYesに進み、S701にて取得した第1配列データ全体をデコードする(S808)。なお、S808では、公知の処理方法でデコードが行われる。
【0112】
S808においてデコードが成功した場合には、S809にてYesに進み、S808にてデコードしたコード種別に基づいて当該コード種別における必要マージン幅W3を算出する(S810)。さらに、始端側のデータ端暗色領域BR1に隣接する明色領域の幅W4を取得し、必要マージン幅W3よりも隣接明色領域の幅W4のほうが大きいかを判断する。図24(A)のように必要マージン幅W3よりも隣接明色領域(図24(A)では明色領域WH0)の幅W4のほうが大きい場合には、S812にてYesに進む。この場合の第1配列データはマージンが正常に確保された正常な明暗配列データであるといえるため、「マージン対応領域の誤りなし」かつ「デコード成功」と判定し(S813)、当該処理を終了する。なお、S813では、判定と共にデコード結果の出力も行われる。
【0113】
一方、図24(B)のように、隣接明色領域(図24(B)では明色領域WH4)の幅W4よりも必要マージン幅W3のほうが大きい場合、始端側のデータ端暗色領域BR1の外側隣に必要なマージンが確保されていないといえるため、S812にてNoに進み、上述した拡張処理を行い(S818)、図24(C)のような新たな配列データを取得する。この場合、この新たな配列データを「第1配列データ」として、S803以降の処理を再度行うこととなる。
【0114】
一方、S808においてデコードが失敗した場合にはS809にてNoに進み、S802にて特定されたコード種別に基づいて正規のデータ端暗色領域の幅W5を算出する。さらに、第1配列データにおけるデータ端暗色領域BR1の幅W6を取得する。そして、正規のデータ端暗色領域の幅W5よりも第1配列データのデータ端暗色領域BR1の幅W6のほうが大きいかを判断し(S816)、幅W5よりも幅W6のほうが大きい場合にはS816にてYesに進む。S816にてYesに進む場合とは、即ち、終端側からデータ端暗色領域BR1の手前まではデコード可能と判断され、かつデータ端暗色領域BR1の幅が正規のものより広いと判断される場合(つまり、図25(A)のようにデータ端暗色領域BR1が、マージンとして認識されるべき領域AR1(マージン対応領域)まで広がってしまっている場合)である。このような場合には、「マージン対応領域の誤りあり」かつ「デコード失敗」と判断し、その後、当該処理を終了する。
【0115】
一方、S816において、第1配列データのデータ端暗色領域BR1の幅W5が正規のデータ端暗色領域の幅W6以下の場合、S816にてNoに進む。S816にてNoに進む場合とは、即ち、終端側からデータ端暗色領域BR1の手前まではデコード可能と判断され、かつ、図25(B)のようにデータ端暗色領域BR1の幅が正規の幅W5と同じであり、マージンとして認識されるべき領域AR1(マージン対応領域)におけるデータ端暗色領域BR1から離れた位置に誤った暗色領域が配される場合といえる。このような場合には、S816にてNoに進み、上述した拡張処理(図25(B)の例では明色領域WH5〜WH6まで明色領域とする拡張処理)を行い(S818)、図25(C)のような新たな配列データを取得する。この場合、この新たな配列データを「第1配列データ」として、S803以降の処理を再度行うこととなる。
【0116】
なお、S816では、第1配列データのデータ端暗色領域BR1の幅W6が正規のデータ端暗色領域の幅W5よりも大きいか否かを判断しているが、これに代え、S816において第1配列データのデータ端暗色領域BR1の幅W6が必要なマージン幅W3(上述)よりも大きいかを判断するようにし、大きい場合にS816にてYesに進むようにしてもよい。
【0117】
なお、本実施形態では、制御部407を構成するCPUによって図20〜図22に示す処理が実行されるようになっており、制御部407が「誤り検出手段」の一例に相当し、配列データにおけるマージンとして認識されるべきマージン対応領域に暗色領域が含まれる誤りを検出するように機能する。具体的には、S701で取得した第1配列データにおける始端側のマージン対応領域に暗色領域が含まれる誤りを検出する構成をなしている。また、制御部407は、「種別特定手段」の一例にも相当し、S802に示すように第1配列データの終端から始端側のマージン対応領域に至るまでの暗色領域及び明色領域に基づいて情報コード(バーコードB)の種別を特定するように機能する。また、制御部407は、上記のように特定されるバーコードBの種別に基づいて、第1配列データにおける始端側のマージン対応領域に暗色領域が含まれる誤りを検出する一方で、誤りが検出された場合、後述する方法を用いてマージン対応領域を復元するように機能する(即ち「復元手段」としての機能も果たす)。なお、その復元後の配列データ(再生成された配列データ)は、後述する処理においてデコード部408(デコード手段)によってデコードされる。
【0118】
次に、図20におけるS703以降の処理を説明する。S702の処理が終了すると、S703においてデコードが成功したか否かを判断する。図21の処理のS813においてデコード成功と判定されている場合にはS703にてYesに進み、当該処理を終了する。S702のデコード処理においてデコードが成功しなかった場合(S804又はS817の判定がなされた場合)、S703にてNoに進み、「マージン対応領域の誤りあり」と判定されているかを判断する(S704)。S702の処理のS817において「マージン対応領域の誤りあり」と判定されている場合にはS704にてYesに進み、そうでない場合にはNoに進む。
【0119】
S704にてYesに進む場合には、図26(A)に示すように第1配列データにおける最終の暗色領域BR6(終端側のデータ端暗色領域と予想される領域)の幅W8と、その始端側に隣接する明色領域WH12の幅W9とをそれぞれ記憶する(S705)。また、上記デコード処理において検出された第1配列データのデータ端暗色領域BR1の幅W6と、その終端側に隣接する明色領域WH8の幅W7とをそれぞれ記憶する(S706)。その後、両方向の配列データ(第1配列データ及び第2配列データ)でマージン対応領域の誤りが検出されているかを判断する。両方向でマージン対応領域の誤りが検出されている場合にはS707にてYesに進み、S708にて復元データのデコード処理を行う。なお、復元データのデコード処理については後述する。
【0120】
本実施形態では、制御部407が「第1幅情報記憶手段」の一例に相当し、第1配列データの始端側においてマージン対応領域と情報領域とに跨って配置される、誤ったデータ端暗色領域(第1暗色領域:図26(A)の例では暗色領域BR1)の幅情報と、この第1暗色領域の終端側に隣接する明色領域(第1明色領域:図26(A)の例では明色領域WH8)の幅情報と、をそれぞれ格納部406に記憶するように機能する。
【0121】
S707において、両方向の配列データ(第1配列データ及び第2配列データ)でマージン対応領域の誤りが検出されていないと判断される場合には、S707にてNoに進み、他方向(上記一方向とは反対方向)走査時の明暗配列データ(第2配列データ)を取得する(S710)。S710の第2配列データ取得処理は、基本的にS701の第1配列データ取得処理と同様であり、S710では、レーザ光L1が他方向に走査されたときに受光センサ404から出力される信号波形を閾値と比較して明色領域(明色パターン(本実施形態では白色パターン)を示す領域)と暗色領域(暗色パターン(本実施形態では黒色パターン)を示す領域)とに区別する二値化処理を行い、バーコードBの明色パターン各々の位置及び幅を反映した複数の明色領域、及びバーコードBの暗色パターン各々の位置及び幅を反映した複数の暗色領域を配列した配列データ(第2配列データ)を取得する。
【0122】
その後、S710にて取得された第2配列データに基づいてデコード処理を行う(S711)。S711のデコード処理は、基本的にS702のデコード処理と同様であり、図21において第1配列データに対して行っていた処理を同様に第2配列データに対して行うこととなる。そして、第2配列データに対するデコード処理(S711)が成功したか否かを判断し(S712)、成功した場合にはS712にてYesに進み、当該処理を終了する。第2配列データに対するデコード処理が失敗した場合にはS712にてNoに進み、第2配列データのマージン対応領域に誤りあるかを判断する(S713)。第2配列データに対して行われたS711のデコード処理においてS804の判定がなされた場合にはS713にてNoに進む。一方、第2配列データに対して行われたS711のデコード処理においてS817の判定がなされた場合にはS713にてYesに進む。
【0123】
S713にてYesに進む場合には、図26(B)に示す第2配列データにおける最終の暗色領域BR3(終端側のデータ端暗色領域と予想される領域)の幅W10と、その始端側に隣接する明色領域WH9の幅W11とをそれぞれ記憶する(S714)。また、上記デコード処理(S711)において検出された第2配列データのデータ端暗色領域BR4の幅W12と、その終端側に隣接する明色領域WH11の幅W13とをそれぞれ記憶する(S715)。その後、両方向の配列データ(第1配列データ及び第2配列データ)でマージン対応領域の誤りが検出されているかを判断する(S716)。両方向の配列データについてマージン対応領域の誤りが検出されている場合にはS716にてYesに進み、そうでない場合にはS716にてNoに進む。
【0124】
本実施形態では、制御部407が「第2幅情報記憶手段」の一例に相当し、第2配列データの最終の明色領域(図26(B)では明色領域WH10)の隣に位置する最終の暗色領域(第2暗色領域:図26(B)では、暗色領域BR3)の幅情報と、最終の暗色領域(暗色領域BR3)の始端側に隣接する明色領域(第2明色領域:図26(B)では、明色領域WH9)の幅情報と、をそれぞれ格納部406に記憶するように機能する。
【0125】
次に、S708、S717における復元データのデコード処理について説明する。これら復元データのデコード処理は、いずれも図22のような流れで行われる。
まず、S706の処理によって記憶されている第1配列データのデータ端暗色領域BR1の幅W6及びそのデータ端暗色領域BR1の終端側に隣接する明色領域WH8の幅W7(図26(A)参照)を読み出すとともに、S714の処理によって記憶されている第2配列データの最終の暗色領域BR3の幅W10及びその最終の暗色領域BR3の始端側に隣接する明色領域WH9の幅W11(図26(B)参照)を読み出す。そして、W10、W11の幅比率(即ち、第2暗色領域と第2明色領域との幅比率)に基づいて、第1配列データにおける幅W6、W7の幅比率(即ち、第1暗色領域と第1明色領域との幅比率)を、図26(C)に示すような正規の幅比率に復元する。なお、第2配列データの最終の暗色領域BR3のパターンが「第2配列データの最終の暗色端部パターン」に相当する。また、第1配列データのデータ端暗色領域BR1についての正規のパターンが「第1配列データの最初に配置されるべき正規の暗色端部パターン」に相当する。
【0126】
図21のS817で判定される場合、図26(A)に示すデータ端暗色領域BR1よりも後の明色領域及び暗色領域は正しいと考えられるため、データ端暗色領域BR1に隣接する明色領域WH8も正しいと考えることができる。この明色領域WH8は、図26(B)に示す第2配列データにおける最終の暗色領域BR3の始端側に隣接する明色領域WH9と同一の明色パターンを反映するものである。従って、W7/W6’(第1暗色領域と第1明色領域との幅比率)=W11/W10(第2暗色領域と第2明色領域との幅比率)となるような値W6’を求め、データ端暗色領域の幅がこの値W6’となるように第1配列データを再生成することでマージン対応領域の誤りが精度高く復元されることとなる(図26(C)参照)。なお、図26(C)は、復元後の第1配列データを示すものであり、図26(A)のデータ端暗色領域BR1を変換した後のデータ端暗色領域をBR1’にて示しており、そのデータ端暗色領域BR1’よりも始端側の領域を全て明色領域とするように変換している。
【0127】
なお、本実施形態では、制御部407が「復元手段」の一例に相当し、マージン対応領域の誤りを修正し、マージン対応領域を復元するように配列データを再生成する機能を有している。具体的には、第2配列データに基づいて第1配列データにおけるマージン対応領域の誤りを修正し、当該マージン対応領域を復元するように第1配列データを再生成している。
【0128】
また、制御部407は、「正規パターン推定手段」の一例に相当し、第2配列データの最終の暗色領域BR3のパターン(暗色端部パターン)に基づき、第1配列データの最初に配置されるべき正規の暗色端部パターン(データ端暗色領域の正規のパターン)を推定するように機能する。復元手段として機能する制御部7は、誤りが検出されたマージン対応領域の誤った暗色領域(図26(A)ではデータ端暗色領域BR1)を、その推定される正規の暗色端部パターン及び暗色端部パターンの外側に配される明色パターンに置換することでマージン対応領域を復元し、第1配列データを再生成するように機能している。
【0129】
その後、S901にて再生成された復元後の第1配列データを用いて公知のデコードを行う(S902)。復元後の第1配列データについてデコードが成功した場合にはS903にてYesに進み、デコード成功の旨を記録する(S908)。なお、この記録と共にデコード結果の出力処理も行われる。
【0130】
一方、S901にて復元された第1配列データについてデコードが失敗した場合にはS903にてNoに進み、第2配列データの復元処理を行う。本実施形態では、「誤り検出手段」「復元手段」として機能する制御部407により、1配列データの場合と同様に、第2配列データの始端側のマージン対応領域に暗色領域が含まれる誤りを検出するように構成されており、さらに、第1配列データの復元と同様に、第2配列データについても、第1配列データに基づいてマージン対応領域の誤りを修正し、当該マージン対応領域を復元するように第2配列データを再生成している。そして、S902において再生成された第1配列データのデコードが失敗した場合には、この再生成された第2配列データをデコードするように構成されている。
【0131】
具体的には、S901と同様の方法で復元が行われる。即ち、S715の処理によって記憶されている第2配列データのデータ端暗色領域BR4の幅W12及びそのデータ端暗色領域BR4の終端側に隣接する明色領域WH11の幅W13(図26(B)参照)を読み出すとともに、S705の処理によって記憶されている第1配列データの最終の暗色領域BR6の幅W8及びその最終の暗色領域BR6の始端側に隣接する明色領域WH12の幅W9(図26(A)参照)を読み出す。そして、W8、W9の幅比率に基づいて、第2配列データにおける幅W12、W13の幅比率を、図26(D)に示すような正規の幅比率に復元する。
【0132】
S904の処理では、W13/W12’=W9/W8となるような値W12’を求め、データ端暗色領域の幅がこの値W12’となるようにマージン対応領域の誤りを復元し、第2配列データを再生成する(図26(D)参照)。なお、図26(D)は、復元後の第2配列データを示すものであり、図26(B)のデータ端暗色領域BR4を変換した後のデータ端暗色領域をBR4’にて示しており、そのデータ端暗色領域BR4’よりも始端側の領域を全て明色領域とするように変換している。
【0133】
その後、S904にて復元された第2配列データを用いて公知のデコードを行い(S905)、デコードが成功した場合にはS906にてYesに進み、デコード成功を記録すると共にデコード結果を出力する(S908)。第2配列データのデコードも失敗した場合にはS906にてNoに進み、デコード失敗を記録して(S907)当該復元データのデコード処理を終了する。
【0134】
図22で示した復元データのデコード処理が図20のS708である場合、図20のS709において、デコードが成功したか否かを判断する。デコードが成功した場合にはS709にてYesに進み、当該処理を終了する。デコードが失敗した場合にはS709にてNoに進み、S710以降の処理を続けることとなる。同様に、S717にて復元データのデコード処理が終了した場合、そのS717にてデコードが成功したか否かを判断する(S718)。デコードが成功した場合にはS718にてYesに進み、当該処理を終了する。デコードが失敗した場合にはS718にてNoに進み、S701以降の処理を続けることとなる。
【0135】
以上説明した本実施形態の構成によれば、以下のような効果を奏する。
本実施形態の光学的情報読取装置(バーコードリーダ400)では、照明光(レーザ光L1)が一方向に走査されたときの信号波形に基づいて第1配列データ(図26(A)等)を生成し、少なくともこの第1配列データをデコードする構成をなしている。このようにすれば、照明光の走査に基づいてデコード処理を適切に行うことができる。また、照明光が他方向に走査されたときの信号波形に基づいて第2配列データ(図26(B)等)を生成する構成をなしており、第1配列データの始端側のマージン対応領域に暗色領域が含まれる誤りが検出されたとき、第2配列データに基づいて第1配列データにおけるマージン対応領域の誤りを修正し、当該マージン対応領域を復元するように第1配列データを再生成する構成をなしている。このようにすると、仮に一方向の走査によって得られた配列データ(第1配列データ)においてマージン対応領域に誤りが生じたとしても、この誤りを他方向の走査によって得られた第2配列データに基づいて適切に修正でき、ひいては第1配列データのデコードを精度高く行うことができる。
【0136】
また、本実施形態では、図26(B)に示す第2配列データの最終の暗色端部パターンに基づき、図26(A)に示す第1配列データの最初に配置されるべき正規の暗色端部パターンを推定している。第2配列データの最終の暗色端部パターンは、第1配列データの最初に配置されるべき正規の暗色端部パターンに対応するものであり、当該正規の暗色端部パターンを示している可能性が高い。従って、第2配列データの最終の暗色パターンに着目すれば正規の暗色端部パターンを精度高く推定できる。さらに、誤りが検出されたマージン対応領域の誤った暗色領域をその推定される正規の暗色端部パターン及び当該暗色端部パターンの外側に配される明色パターンに置換する構成とすれば、第1配列データに生じた誤りを適切に解消でき、その結果、第1配列データのデコードをより正確に行うことができるようになる。
【0137】
また、第1配列データの終端から始端側のマージン対応領域に至るまでの暗色領域及び明色領域に基づいてバーコードB(情報コード)の種別を特定するように構成されている。このようにバーコードBの種別を特定すれば、コード種別に基づいて始端側のマージン対応領域の正規の構成を把握できるようになり、その結果、第1配列データの始端側のマージン対応領域に暗色領域が含まれる誤りを精度高く検出できるようになる。
【0138】
また、第1配列データの始端側においてマージン対応領域と情報領域とに跨って配置される誤った第1暗色領域(図26(A)の暗色領域BR1)の幅情報と、第1暗色領域の終端側に隣接する第1明色領域(図26(A)の明色領域WH8)の幅情報と、をそれぞれ記憶している。そして、第2配列データの最終の明色領域(図26(B)の明色領域WH10)の隣に位置する第2暗色領域(図26(B)の暗色領域BR3)の幅情報と、第2暗色領域の始端側に隣接する第2明色領域(図26(B)の明色領域WH9)の幅情報と、の幅比率に基づいて、第1配列データにおける第1暗色領域と第1明色領域との幅比率を、正規の幅比率に復元している。このようにすれば、第2配列データの終端側の部分が第1配列データの始端側のどの位置に相当するかを幅情報(特に明色領域の幅情報)を基準として適切に対応付けることができ、復元の正確性を一層高めることができる。
【0139】
また、復元手段により再生成された第1配列データをデコードし、その再生成された第1配列データのデコードが失敗した場合には、復元手段により再生成された第2配列データをデコードするように構成されている。このようにすれば、仮に第1配列データの復元・デコードが失敗したとしても、第2配列データを用いてデコードできるため、デコードの成功確率が格段に高まる。また、その第2配列データの始端側のマージン対応領域に暗色領域が含まれる誤りが存在しても、第1配列データを用いて復元処理を行った上でデコード処理が行われるようになっており、効率的な復元処理、精度高いデコード処理が可能となる。
【0140】
[第5実施形態]
次に、第5実施形態について説明する。図27は、第5実施形態のバーコードリーダにおける読取処理の流れを例示するフローチャートである。図28は、図27の読取処理における復元処理の一例を示すフローチャートである。図29(A)は第1配列データを例示する説明図であり、(B)は第2配列データを例示する説明図である。図29(C)は第1配列データの復元を説明する説明図であり、(D)は第2配列データの復元を説明する説明図である。また、図30は、第1配列データと第2配列データの対応関係を記憶する工程を説明する説明図である。なお、本実施形態は、読取処理のみが第4実施形態と異なり、図18、図19に示す構成は第4実施形態と同一である。よって異なる部分について重点的に説明することとし、同様の構成については適宜図18、図19を参照して説明する。
【0141】
本実施形態に係るバーコードリーダ400も、基本的に第4実施形態と同様の構成をなしており、図18のようにバーコードB(明色パターンと暗色パターンとからなる情報領域を有すると共に、端部に明色パターンとして認識されるべきマージンMが設けられた情報コード)を読み取り可能に構成され、受光センサ404(受光手段)により、バーコードBの各パターンごとに反射光の強度に応じた受光信号を出力する構成をなしている。また、図19に示す二値化処理部410(二値化手段)により、受光センサ404により出力される受光信号の信号波形を閾値と比較すると共に、その比較に基づいて信号波形を明色領域と暗色領域とに区分けしており、さらに、二値化処理部410によって区分けされた明色領域及び暗色領域の配列データをデコード部408(デコード手段)によりデコードする構成をなしている。
【0142】
また、本実施形態でも図18、図19に示すレーザ光源402が、「光源」の一例に相当し、指向性を有する照明光(レーザ光L1)を出射する。また、揺動装置405が、「揺動手段」の一例に相当し、光源から出射される照明光(レーザ光L1)を揺動させるように機能する。また、これらレーザ光源402及び揺動装置405が「投光手段」の一例に相当し、照明光(レーザ光L1)を二方向(走査線Tに沿った往復方向)に走査するように機能する。
【0143】
次に、本実施形態の特徴的構成について説明する。
本実施形態の読取処理では、まず第4実施形態と同様の第1配列データ取得処理が行われる(S1001)。S1001の処理は、図20のS701と同一なので詳細は省略する。次いで、他方向の明暗配列データ(第2配列データ)について既にマージン対応領域の誤りが検出されているかを判断する。後述する、S1014において第2配列データのマージン対応領域に誤りがあると判断されている場合にはS1002にてYesに進み、後述の復元処理が行われる(S1003)。第2配列データのマージン対応領域に誤りが検出されていない場合にはS1002にてNoに進み、第1配列データのデコード処理を行う(S1004)。なお、このデコード処理は、公知のデコード処理であってもよく、第4実施形態の図21に示す処理と同様の処理であってもよい。
【0144】
S1004のデコード処理において第1配列データのデコードが成功した場合には、S1005にてYesに進み当該処理を終了する。デコードが失敗した場合にはS1005にてNoに進み、第1配列データのマージン対応領域において誤りが検出されるかを判断する。マージン対応領域の誤りが検出される場合にはS1006にてYesに進み、そうでない場合にはNoに進む。なお、S1004において第4実施形態と同様のデコード処理を行う場合には、図21のS817においてマージン対応領域の誤りありと判定されたか否かによってマージン対応領域の誤りを判断できる。S1004において公知のデコード処理を行う場合には、第1〜第3実施形態のような各種誤り検出処理(図4等)を行うことでマージン対応領域の誤りを判断できる。
【0145】
S1006にてYesに進む場合には、図29(A)に示すように、第1配列データにおけるマージン対応領域の誤った暗色領域(即ち、データ端暗色領域BR1)までに位置する明色領域及び暗色領域の幅の総和W21を算出し、格納部406に記録する(S1007)。また、第1配列データにおける最終の明色領域WH13の手前(即ち最後の暗色領域BR6)までに位置する暗色領域及び明色領域の幅の総和W22を算出し、格納部406に記録する(S1008)。なお、本実施形態では、制御部407が「記録手段」の一例に相当し、第2配列データの始端位置P4から最終の暗色領域BR3までの明色領域及び暗色領域の幅値の総和W24を位置情報として記録するように機能する。
【0146】
その後、第2配列データを取得する処理を行う(S1009)。この第2配列データ取得処理は、第4実施形態のS710(図20)と同様である。そして、一方向の明暗配列データ(第1配列データ)でマージン対応領域の誤りが検出されているかを判断する(S1010)。S1006の処理において第1配列データのマージン対応領域に誤りありと判断されている場合、S1010にてYesに進み、後述の復元処理を行う(S1011)。第1配列データにおいてマージン対応領域の誤りが検出されていない場合にはS1010にてNoに進み、第2配列データについてのデコード処理を行う(S1012)。このデコード処理も公知のデコード処理であってもよく、第4実施形態の図21と同様であってもよい。第2配列データのデコード処理(S1012)においてデコードが成功した場合にはS1013にてYesに進み当該処理を終了する。第2配列データのデコード処理(S1012)においてデコードが失敗した場合にはS1013にてNoに進み、第2配列データのマージン対応領域において誤りが検出されるかを判断する。第2配列データのマージン対応領域に誤りが検出される場合にはS1014にてYesに進み、そうでない場合にはNoに進む。なお、S1012において第4実施形態と同様のデコード処理を行う場合には、図21のS817においてマージン対応領域の誤りありと判定されたか否かによってマージン対応領域の誤りを判断できる。また、S1012において公知のデコード処理を行う場合には、第1〜第3実施形態のような各種誤り検出処理(図4等)を行うことでマージン対応領域の誤りを判断できる。
【0147】
S1014にてYesに進む場合には、図29(B)に示すように、第2配列データにおけるマージン対応領域の誤った暗色領域(即ち、データ端暗色領域BR4)までに位置する明色領域及び暗色領域の幅の総和W23を算出し、格納部406に記録する(S1015)。また、第2配列データにおける最終の明色領域WH10の手前(即ち最後の暗色領域BR3)までに位置する暗色領域及び明色領域の幅の総和W24を算出し、格納部406に記録する(S1016)。
【0148】
なお、本実施形態でも二値化処理部410が、第1二値化手段、第2二値化手段として第4実施形態と同様に機能する。また、本実施形態でも制御部407が「誤り検出手段」の一例に相当し、配列データにおけるマージンとして認識されるべきマージン対応領域に暗色領域が含まれる誤りを検出するように機能する。また、制御部407は、「復元手段」の一例に相当し、マージン対応領域の誤りを修正し、マージン対応領域を復元するように配列データを再生成するように機能する。また、本実施形態に係るバーコードリーダ400でも、上記「誤り検出手段」によってマージン対応領域の誤りが検出された場合、上記「復元手段」によりマージン対応領域を復元し、その再生成後の配列データをデコード部408(デコード手段)によってデコードするように構成されている。
【0149】
次に、S1003、S1011の復元処理について説明する。なお、いずれの処理も図28に示すフローチャートの流れで行われる。復元処理が開始されると、まず、第1配列データ、第2配列データのいずれを復元するかを判断する。第1配列データを復元する場合(即ち、S1003の場合)にはS1101にてYesに進む。逆に、第2配列データを復元する場合(即ち、S1011の場合)にはS1101にてNoに進む。
【0150】
第1配列データについて復元する場合、まず、格納部406から位置P6(第2配列データにおける最後の暗色領域BR3と最後の明色領域WH10の境界位置)の情報を読み出すと共に、第1配列データにおける位置P6に対応する位置P6’を算出する。即ち、本実施形態では、第1配列データと第2配列データとを位置的に対応付ける対応情報が格納部406に記録されており、この対応情報に基づいて位置P6’を算出するようにしている。具体的には、第1配列データにおける第2配列データの先頭位置P4に対応する位置P4’の情報、および第2配列データにおける第1配列データの先頭位置P1に対応する位置P1’の情報が格納部406に記録されており、位置P4’の情報を読み出せば、この位置P4’の情報とW24の情報により対応位置P6’が特定されることとなる。S1102では、この位置P6’を跨いで配置される暗色領域(図29(A)ではデータ端暗色領域BR1)が誤った暗色領域として特定される。なお、格納部406は、「対応情報記憶手段」の一例に相当し、第2配列データの所定位置が第1配列データのどの位置に対応するかを特定する対応情報を記憶するように機能する。
【0151】
このように、位置情報(位置P6の情報)と対応情報(先頭位置P4と位置P4’とを対応付ける情報)とに基づいて第1配列データの誤った暗色領域BR1の位置を特定した後、S1103において復元を行う。S1103では、第2配列データの最終の暗色領域BR3のパターンに基づいて第1配列データのマージン対応領域の誤りを修正し、図29(C)のように第1配列データを再生成する。S1103の具体的な復元方法は、図22のS901と同様である。
【0152】
一方、図28の処理が第2配列データを復元するものである場合、S1101にてNoに進み、格納部406から位置P3(第1配列データにおける最後の暗色領域BR6と最後の明色領域WH13の境界位置)の情報を読み出すと共に、第2配列データにおける位置P3に対応する位置P3’を算出する。なお、本実施形態では、対応情報として、第2配列データにおける第1配列データの先頭位置P1に対応する位置P1’の情報が格納部406に記録されているため、位置P1’の情報を読み出せば、この位置P1’の情報とW22の情報により対応位置P3’が特定されることとなる。S1104では、この位置P3’を跨いで配置される暗色領域(図29(B)ではデータ端暗色領域BR4)が誤った暗色領域として特定される。
【0153】
このように、位置P3の情報と対応情報(先頭位置P1と位置P1’とを対応付ける情報)とに基づいて第2配列データの誤った暗色領域BR4の位置を特定した後、S1105において復元を行う。S1105では、第1配列データの最終の暗色領域BR6のパターンに基づいて第2配列データのマージン対応領域の誤りを修正し、図29(D)のように第2配列データを再生成する。S1105の具体的な復元方法は、図22のS904と同様である。
【0154】
本実施形態の対応情報は例えば以下のように生成され記憶される。図30は、製品出荷前における対応情報記録工程を説明するものである。本実施形態では、第1の測定対象R1に対して投光手段により照明光が一方向に走査されたときの第1の測定結果と、第2の測定対象R2に対して照明光が他方向に走査されたときの第2の測定結果と、を記録するようにしている。なお、制御部407が「測定結果記録手段」の一例に相当し、第1の測定結果及び第2の測定結果を格納部406に記録するように機能する。格納部406は、第1の測定結果と第2の測定結果とを対応情報として記憶するように構成されており、復元手段として機能する制御部407は、第1の測定結果と第2の測定結果とに基づいて第1配列データと第2配列データとを位置的に対応付けるように構成されている。
【0155】
例えば、所定の図形が描かれた対象R1及びバーコードリーダ400を所定の位置関係を固定した上で第1配列データを取得した場合、第1配列データにおける先頭から位置Paまでの距離W30(第1の測定結果)が判明する。さらに、対象R1とは左右対称の図形が描かれた対象R2を上記所定の位置関係(即ち、第1配列データを取得するときの対象R1及びバーコードリーダ400の位置関係と同一の位置関係)とした上で第2配列データを取得した場合、第2配列データにおける先頭から位置Pa’までの距離W31(第2の測定結果)を得ることができる。これら距離W30,W31が判明すれば、同位置に維持されるバーコードについて第1配列データ及び第2配列データを取得した場合に第2配列データの先頭位置が第1配列データのどの位置に対応するか特定でき、逆に、第1配列データの先頭位置が第2配列データのどの位置に対応するか特定できるようになる。
【0156】
以上説明した本実施形態の構成によれば以下のような効果を奏する。
本実施形態では、第2配列データの始端位置から最終の前記暗色領域までの明色領域及び暗色領域の幅値の総和W24と、対応情報とに基づいて第1配列データの誤った暗色領域の位置を特定するようにしている。このようにすれば、誤った暗色領域を迅速且つ的確に特定でき、第2配列データの最終の暗色領域のパターンに基づいて第1配列データのマージン対応領域の誤りを適切に修正できる。
【0157】
また、第1の測定対象に対して投光手段により照明光が一方向に走査されたときの第1の測定結果と、第2の測定対象に対して照明光が他方向に走査されたときの第2の測定結果と、を記録し、復元処理を行う際に、第1の測定結果と第2の測定結果とに基づいて第1配列データと第2配列データとを位置的に対応付けるようにしている。このように予め測定された第1の測定結果及び第2の測定結果に基づき、復元処理において第1配列データと第2配列データとを対応付けるようにすれば、第2配列データを利用しての第1配列データの復元を精度高くスムーズに行うことができる。
【0158】
[他の実施形態]
本発明は上記記述及び図面によって説明した実施形態に限定されるものではなく、例えば次のような実施形態も本発明の技術的範囲に含まれる。
【0159】
第3実施形態では、第1実施形態の一部処理を変更した構成(復元処理のみを第1実施形態と異ならせた構成)を例示したが、第2実施形態の復元処理を第3実施形態のようにしてもよい。
【0160】
第1実施形態では、閾値を設定変更する誤り検出処理を用い、かつこの誤り検出処理によって検出された、誤った黒色領域を、図8等に示す方法によって復元していたが、このような復元処理に代え、図7(B)のように閾値の設定変更によって複数の黒色領域に分割された場合、その分割された外側の黒色領域(例えば図7(B)のY0)を白色領域に置換するような復元処理を用いてもよい。
【図面の簡単な説明】
【0161】
【図1】図1は、本発明の第1実施形態に係るバーコードリーダの電気的構成を概略的に例示するブロック図である。
【図2】図2は、読取対象のバーコードを例示する説明図である。
【図3】図3は、読取処理の流れを例示するフローチャートである。
【図4】図4は、図3の読取処理の一部を構成する誤り検出処理を例示するフローチャートである。
【図5】図5は、受光信号の信号波形と閾値との関係を例示する説明図である。
【図6】図6(A)は、図5の閾値のときの配列データの構成を概念的に示す説明図であり、図6(B)は復元後の配列データの構成を概念的に示す説明図である。
【図7】図7(A)は、閾値を設定変更したときの閾値と信号波形との関係を示す説明図であり、図7(B)はそのときの配列データの構成を概念的に示す説明図である。
【図8】図8は、図3の読取処理の一部を構成する復元処理を例示するフローチャートである。
【図9】図9は、図8の復元処理の一部を構成する種別特定処理を例示するフローチャートである。
【図10】図10は、図9の種別特定処理の一部を構成する個別判断処理の一例を示すフローチャートである。
【図11】図11(A)は、CODE39のバーコード構成を説明する説明図であり、図11(B)は、CODE39のバーコードに関し、マージン対応領域に誤りが生じた配列データを概念的に示すものである。図11(C)は、図11(B)とは異なるタイプの誤りが生じた配列データを概念的に示すものである。
【図12】図12は、図10とは異なる個別判断処理を例示するフローチャートである。
【図13】図13は、本発明の第2実施形態に係るバーコードリーダにて行われる誤り検出処理を例示するフローチャートである。
【図14】図14は、本発明の第3実施形態に係るバーコードリーダにて行われる復元処理を例示するフローチャートである。
【図15】図15は、度数分布情報を概念的に例示するものであり、配列データに含まれる複数の黒色領域について、幅値毎の度数を表したグラフ(ヒストグラム)である。
【図16】図16は、S610の推定処理に用いる配列データを概念的に説明する説明図である。
【図17】図17は、従来例を説明する説明図である。
【図18】図18は、本発明の第4実施形態に係るバーコードリーダを概略的に例示する説明図である。
【図19】図19は、図18のバーコードリーダの電気的構成を概略的に例示するブロック図である。
【図20】図20は、図18のバーコードリーダにおける読取処理の流れを例示するフローチャートである。
【図21】図21は、図20の読取処理におけるデコード処理を例示するフローチャートである。
【図22】図22は、復元データのデコード処理を例示するフローチャートである。
【図23】図23(A)は、正常な配列データを例示する説明図であり、(B)(C)は、配列データにおけるマージンとして認識されるべき領域(マージン対応領域)に暗色領域が含まれた例を示す説明図である。また、(D)は、(C)のデータの明色領域を拡張した後の第1配列データを例示するものである。
【図24】図24は、デコードが成功した配列データを例示する説明図であり、(A)はマージン対応領域が正常である例を示すものであり、(B)はマージン対応領域に暗色領域が含まれた例を示すものである。(C)は、(B)のデータの明色領域を拡張した後の第1配列データを例示するものである。
【図25】図25(A)(B)は、デコードが失敗した配列データを例示する説明図であり、(A)は、データ端暗色領域が異常である場合を示すものであり、(B)は、マージン対応領域が異常である場合を示すものである。(C)は、(B)のデータの明色領域を拡張した後の第1配列データを例示するものである。
【図26】図26は、配列データの復元を説明する説明図である。
【図27】図27は、第5実施形態のバーコードリーダにおける読取処理の流れを例示するフローチャートである。
【図28】図28は、図27の読取処理における復元処理の一例を示すフローチャートである。
【図29】図29(A)は第1配列データを例示する説明図であり、(B)は第2配列データを例示する説明図である。(C)は第1配列データの復元を説明する説明図であり、(D)は第2配列データの復元を説明する説明図である。
【図30】図30は、第1配列データと第2配列データの対応関係を記憶する工程を説明する説明図である。
【符号の説明】
【0162】
10、400…バーコードリーダ(光学的情報読取装置)
28、404…受光センサ(受光手段)
40…制御回路(第1〜第3実施形態における、二値化手段、デコード手段、誤り検出手段、復元手段、設定変更手段、変化判断手段、度数分布情報生成手段、境界パターン推定手段、種別特定手段、暗色最大幅検出手段、明色最大幅検出手段、比較手段)
402…レーザ光源(投光手段)
405…揺動装置(投光手段、揺動手段)
406…格納部(対応情報記憶手段)
407…制御部(第4又は第5実施形態の、誤り検出手段、復元手段、第1幅情報記憶手段、第2幅情報記憶手段、正規パターン推定手段、種別特定手段、測定結果記録手段)
408…デコード部(第4又は第5実施形態のデコード手段)
411…二値化処理部(第4又は第5実施形態の二値化手段、第1二値化手段、第2二値化手段)
P1…黒色パターン(暗色パターン)
P2…白色パターン(明色パターン)
M…マージン
【技術分野】
【0001】
本発明は、光学的情報読取装置に関するものである。
【背景技術】
【0002】
光学的情報読取装置の分野では、白色パターンと黒色パターンとからなる情報コードにレーザ光等を照射し、その反射光を受光、解析することでコード情報を読み取る構成のものが広く提供されている。この種の光学的情報読取装置は、情報コードをより精度高く読み取ることが要望されており、そのような課題を解決しようとする技術としては例えば特許文献1、2のようなものがある。
【特許文献1】特開2000−357205公報
【特許文献2】特開2005−38369公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
ところで、上記のような光学的情報読取装置で読み取ろうとする情報コードは様々な対象物に付されるものであり、情報コードを形成する対象物の素材や色によっては誤った認識がなされる懸念がある。
【0004】
例えば、図17(A)のように、バーコードが印刷された領域が灰色の背景であり、その外側に白色の領域が構成されるような場合、本来ならば、図17(B)のように白色パターン及び黒色パターンが認識されるべきであるところ、図17(C)のように、白色のマージン領域として認識されるべき部分が黒色パターンと認識されてしまう場合がある。このような誤検出は、図17(A)のようなバーコードを読み取った場合に図17(D)のような波形が生じることに起因するものである。即ち、図17(D)のような波形に対して図17(D)のように閾値を設定してしまうと、図17(C)のような誤検出が生じ、閾値を変化させても図17(E)のような誤検出が生じてしまう虞がある。
【0005】
本発明は、上述した課題を解決するためになされたものであり、端部に明色パターンとして認識されるべきマージンが設けられた情報コードを読み取る場合に、マージンとして認識されるべき領域が黒色パターンとして認識される誤りを検出すると共に、当該誤りを復元し、情報コードを正確にデコードし得る構成を提供することを目的とする。
【課題を解決するための手段】
【0006】
上記目的を達成するため、請求項1の発明は、明色パターンと暗色パターンとからなる情報領域を有すると共に、端部に明色パターンとして認識されるべきマージンが設けられた情報コードを読み取り可能な光学的情報読取装置であって、前記情報コードからの反射光を受光し、前記情報コードの各パターンごとに前記反射光の強度に応じた受光信号を出力する受光手段と、前記受光手段により出力される前記受光信号の信号波形を閾値と比較すると共に、その比較に基づいて前記信号波形を明色領域と暗色領域とに区分けする二値化手段と、前記二値化手段により区分けされた前記明色領域及び前記暗色領域の配列データをデコードするデコード手段と、を備え、前記配列データにおける前記マージンとして認識されるべきマージン対応領域に前記暗色領域が含まれる誤りを検出する誤り検出手段と、前記マージン対応領域の前記誤りを修正し、前記マージン対応領域を復元するように前記配列データを再生成する復元手段と、を有し、前記誤り検出手段により前記マージン対応領域の前記誤りが検出された場合、前記復元手段により前記マージン対応領域を復元し、その再生成後の前記配列データを前記デコード手段によってデコードすることを特徴とする。
なお、本発明の「明色」の例として白色が挙げられ、暗色の例として暗色が挙げられるがこれに限定されない。即ち、「明色」としては様々な色を採用でき、「暗色」は、この「明色」よりも明度の低い色であれば様々な色を採用できる。
たとえば、「明色パターン」の例としては、白色パターンが挙げられ、暗色パターンの例としては黒色パターンが挙げられるが、これに限定されず、「明色パターン」としては様々な色のパターンを採用でき、「暗色パターン」この「明色パターン」よりも明度の低い色で構成されるパターンであればよい。
【0007】
請求項2の発明は、請求項1に記載の光学的情報読取装置において、前記誤り検出手段は、前記閾値を設定変更する設定変更手段と、前記設定変更手段により前記閾値が設定変更された場合に、前記二値化手段によって抽出される前記暗色領域の幅の変化が基準を超えるか否かを判断する変化判断手段と、を有し、前記設定変更手段により前記閾値を設定変更すると共に、その設定変更前後において、前記二値化手段により前記暗色領域を抽出し、前記変化判断手段により、設定変更前後の前記暗色領域の幅変化が前記基準を超えると判断された場合に、前記マージン対応領域に誤りが生じたことを検出することを特徴とする。
【0008】
請求項3の発明は、請求項1記載の光学的情報読取装置において、前記誤り検出手段は、前記二値化手段によって抽出される複数の前記暗色領域の最大幅を検出する暗色最大幅検出手段と、前記二値化手段によって抽出される複数の前記明色領域の最大幅を検出する明色最大幅検出手段と、前記明色領域の最大幅の、前記暗色領域の最大幅に対する比が基準値未満であるか否かを判断する比較手段と、を備え、前記比較手段により、前記比が前記基準値未満であると判断された場合に、前記マージン対応領域に誤りが生じたことを検出することを特徴とする。
【0009】
請求項4の発明は、請求項3に記載の光学的情報読取装置において、読取対象となる前記情報コードの種別を特定する種別特定手段と、前記種別特定手段によって特定された種別に基づいて、前記基準値を設定する基準値設定手段と、を備え、前記比較手段は、前記比が前記基準値設定手段にて設定された前記基準値未満であるか否かを判断することを特徴とする。
【0010】
請求項5の発明は、請求項1から請求項4のいずれか一項に記載の光学的情報読取装置において、前記復元手段は、前記暗色領域及び前記明色領域の少なくともいずれか一方の幅値を集計し、幅値毎の度数分布情報を生成する度数分布情報生成手段と、前記度数分布情報生成手段にて生成される前記度数分布情報に基づいて、前記マージンと前記情報領域との境界部に設けられる暗色の境界パターンを推定する境界パターン推定手段と、を備え、前記誤り検出手段によって誤りが検出された前記マージン対応領域の誤った前記暗色領域を、前記境界パターン推定手段により推定される前記境界パターン及び前記境界パターンの外側に配される明色パターンに置換することで前記マージン対応領域を復元し、前記配列データを再生成することを特徴とする。
【0011】
請求項6の発明は、請求項1から請求項4のいずれか一項に記載の光学的情報読取装置において、前記復元手段は、読取対象となる前記情報コードの種別を特定する種別特定手段と、前記種別特定手段により特定される種別に基づいて、前記マージンと前記情報領域との境界部に設けられる暗色の境界パターンを推定する境界パターン推定手段と、を備え、前記誤り検出手段によって誤りが検出された前記マージン対応領域の誤った前記暗色領域を、前記境界パターン推定手段により推定される前記境界パターン及び前記境界パターンの外側に配される明色パターンに置換することで前記マージン対応領域を復元し、前記配列データを再生成することを特徴とする。
【0012】
請求項7の発明は、請求項6に記載の光学的情報読取装置において、前記種別特定手段は、前記誤り検出手段により誤りが検出された前記マージン対応領域以外の前記暗色領域及び前記明色領域に基づいて前記情報コードの前記種別を特定することを特徴とする。
【0013】
請求項8の発明は、請求項1に記載の光学的情報読取装置において、指向性を有する照明光を出射する光源と、前記光源から出射される前記照明光を揺動させる揺動手段とを備え、前記揺動手段により前記照明光を二方向に走査可能な投光手段を有し、前記二値化手段は、前記投光手段により前記照明光が一方向に走査されたときに、前記受光手段の前記受光信号により得られる前記信号波形を明色領域と暗色領域とに区分けして第1配列データを生成する第1二値化手段と、前記投光手段により前記照明光が前記一方向とは逆の他方向に走査されたときに、前記受光手段の前記受光信号により得られる前記信号波形を明色領域と暗色領域とに区分けして第2配列データを生成する第2二値化手段と、を備え、前記デコード手段は、少なくとも前記第1配列データを前記配列データとしてデコードする構成をなし、前記誤り検出手段は、前記第1配列データにおける始端側の前記マージン対応領域に前記暗色領域が含まれる誤りを検出する構成をなし、前記復元手段は、前記第2配列データに基づいて前記第1配列データにおける前記マージン対応領域の前記誤りを修正し、当該マージン対応領域を復元するように前記第1配列データを再生成することを特徴とする。
【0014】
請求項9の発明は、請求項8に記載の光学的情報読取装置において、前記復元手段は、前記第2配列データの最終の暗色端部パターンに基づき、前記第1配列データの最初に配置されるべき正規の暗色端部パターンを推定する正規パターン推定手段を備え、前記誤り検出手段によって誤りが検出された前記マージン対応領域の誤った前記暗色領域を、前記正規パターン推定手段により推定される正規の前記暗色端部パターン及び前記暗色端部パターンの外側に配される明色パターンに置換することで前記マージン対応領域を復元し、前記第1配列データを再生成することを特徴とする。
【0015】
請求項10の発明は、請求項8又は請求項9に記載の光学的情報読取装置において、前記誤り検出手段は、前記第1配列データの終端側から始端側へ向けて前記マージン対応領域に至るまでの前記暗色領域及び前記明色領域に基づいて前記情報コードの種別を特定する種別特定手段を備え、前記種別特定手段によって特定される前記情報コードの種別に基づいて、前記第1配列データにおける始端側の前記マージン対応領域に前記暗色領域が含まれる誤りを検出することを特徴とする。
【0016】
請求項11の発明は、請求項8から請求項10のいずれか一項に記載の光学的情報読取装置において、前記復元手段は、前記第1配列データの始端側において前記マージン対応領域と前記情報領域とに跨って配置される誤った第1暗色領域の幅情報と、前記第1暗色領域の終端側に隣接する第1明色領域の幅情報と、をそれぞれ記憶する第1幅情報記憶手段と、前記第2配列データの最終の前記明色領域の隣に位置する第2暗色領域の幅情報と、前記第2暗色領域の始端側に隣接する第2明色領域の幅情報と、をそれぞれ記憶する第2幅情報記憶手段と、を備え、前記第2暗色領域と前記第2明色領域との幅比率に基づいて、前記第1配列データにおける前記第1暗色領域と前記第1明色領域との幅比率を、正規の幅比率に復元することを特徴とする。
【0017】
請求項12の発明は、請求項8から請求項11のいずれか一項に記載の光学的情報読取装置において、前記誤り検出手段は、前記第2配列データの始端側の前記マージン対応領域に前記暗色領域が含まれる誤りを検出する構成をなし、前記復元手段は、前記第1配列データに基づいて前記第2配列データにおける前記マージン対応領域の前記誤りを修正し、当該マージン対応領域を復元するように前記第2配列データを再生成する構成をなしており、前記デコード手段は、前記復元手段により再生成された前記第1配列データをデコードし、その再生成された前記第1配列データのデコードが失敗した場合には、前記復元手段により再生成された前記第2配列データをデコードすることを特徴とする。
【0018】
請求項13の発明は、請求項8から請求項12のいずれか一項に記載の光学的情報読取装置において、前記第2配列データの所定位置が前記第1配列データのどの位置に対応するかを特定する対応情報を記憶する対応情報記憶手段を備え、前記復元手段は、前記第2配列データの始端位置から最終の前記暗色領域までの前記明色領域及び前記暗色領域の幅値の総和を位置情報として記録する記録手段を備えると共に、前記位置情報と前記対応情報とに基づいて前記第1配列データの誤った前記暗色領域の位置を特定し、前記第2配列データの最終の前記暗色領域のパターンに基づいて前記第1配列データの前記マージン対応領域の前記誤りを修正し、前記第1配列データを再生成することを特徴とする。
【0019】
請求項14の発明は、請求項13に記載の光学的情報読取装置において、第1の測定対象に対して前記投光手段により前記照明光が一方向に走査されたときの第1の測定結果と、第2の測定対象に対して前記照明光が他方向に走査されたときの第2の測定結果と、を記録する測定結果記録手段を備え、前記対応情報記憶手段は、前記第1の測定結果と前記第2の測定結果とを前記対応情報として記憶し、前記復元手段は、前記第1の測定結果と前記第2の測定結果とに基づいて前記第1配列データと前記第2配列データとを位置的に対応付けることを特徴とする。
【発明の効果】
【0020】
請求項1の発明のように、配列データにおいて、マージンとして認識されるべき領域(マージン対応領域)に暗色領域が含まれる誤りを検出すると共に、当該マージン対応領域を復元するように配列データを再生成し、その再生成後の配列データをデコードするように構成すれば、マージン部分が誤認識される誤りを訂正して正確にデコードできるようになる。特に、マージン部分が暗色パターンとして認識されやすい情報コードを読み取る場合に有用な構成となる。
【0021】
請求項2の発明のように、閾値を設定変更し得るように構成し、設定変更前後の暗色領域の幅変化が基準を超えると判断された場合にマージンとして認識されるべき領域(マージン対応領域)に誤りが生じたことを検出するように構成すれば、マージンとして認識されるべき領域の誤りを迅速かつ精度高く検出できるようになる。
【0022】
請求項3の発明のように、明色領域の最大幅の、暗色領域の最大幅に対する比が基準値未満であるか否かを判断し、この比が基準値未満であると判断された場合に、マージンとして認識されるべき領域(マージン対応領域)に誤りが生じたことを検出するように構成すれば、マージンとして認識されるべき領域の誤りをより精度高く検出できるようになる。
【0023】
請求項4の発明のように、種別特定手段によって特定された種別に基づいて基準値を設定し、この基準値と、明色領域の最大幅の暗色領域の最大幅に対する比とを比較する構成とすれば、情報コードの種別に応じた適切な比較が可能となる。
【0024】
請求項5の発明のように、暗色領域及び明色領域の少なくともいずれか一方の幅値を集計して幅値毎の度数分布情報を生成し、その度数分布情報に基づいて、マージンと情報領域との境界部に設けられる暗色の境界パターンを推定するようにすれば、特別な構成や特別なデータを予め用意せずともマージンと情報領域との境界部に設けられる暗色の境界パターンを精度高く把握できる。更に、誤りが検出されたマージン対応領域の誤った暗色領域を、推定される境界パターン及び境界パターンの外側に配される明色パターンに置換してマージンとして認識されるべき領域(マージン対応領域)を復元するようにすれば、複雑な構成を用いずともマージン対応領域の誤りを精度高く復元できるようになる。
【0025】
請求項6の発明のように、読取対象となる情報コードの種別を特定し、その特定される種別に基づいて、マージンと情報領域との境界部に設けられる暗色の境界パターンを推定するようにすれば、複雑な構成を用いずともマージンと情報領域との境界部に設けられる暗色の境界パターンを精度高く把握できる。更に、誤りが検出されたマージン対応領域の誤った暗色領域を、推定される境界パターン及び境界パターンの外側に配される明色パターンに置換してマージンとして認識されるべき領域(マージン対応領域)を復元するようにすれば、複雑な構成を用いずともマージン対応領域の誤りを精度高く復元できるようになる。
【0026】
請求項7の発明のように、誤りが検出されたマージン対応領域以外の暗色領域及び明色領域に基づいて情報コードの種別を特定するようにすれば、誤りが検出された領域以外の領域を利用して情報コードの種別を精度高く特定できるようになる。
【0027】
請求項8の発明は、照明光が一方向に走査されたときの信号波形に基づいて第1配列データを生成し、少なくともこの第1配列データをデコードする構成をなしている。このようにすれば、照明光の走査に基づいてデコード処理を適切に行うことができる。また、照明光が他方向に走査されたときの信号波形に基づいて第2配列データを生成する構成をなしており、第1配列データの始端側のマージン対応領域に暗色領域が含まれる誤りが検出されたとき、第2配列データに基づいて第1配列データにおけるマージン対応領域の誤りを修正し、当該マージン対応領域を復元するように第1配列データを再生成する構成をなしている。このようにすると、仮に一方向の走査によって得られた配列データ(第1配列データ)においてマージン対応領域に誤りが生じたとしても、この誤りを他方向の走査によって得られた第2配列データに基づいて適切に修正でき、ひいては第1配列データのデコードを精度高く行うことができる。
【0028】
請求項9の発明では、第2配列データの最終の暗色端部パターンに基づき、第1配列データの最初に配置されるべき正規の暗色端部パターンを推定している。第2配列データの最終の暗色端部パターンは、第1配列データの最初に配置されるべき正規の暗色端部パターンに対応するものであり、当該正規の暗色端部パターンを示している可能性が高い。従って、第2配列データの最終の暗色パターンに着目すれば正規の暗色端部パターンを精度高く推定できる。さらに、誤りが検出されたマージン対応領域の誤った暗色領域をその推定される正規の暗色端部パターン及び当該暗色端部パターンの外側に配される明色パターンに置換する構成とすれば、第1配列データに生じた誤りを適切に解消でき、その結果、第1配列データのデコードをより正確に行うことができるようになる。
【0029】
請求項10の発明は、第1配列データの終端から始端側のマージン対応領域に至るまでの暗色領域及び明色領域に基づいて情報コードの種別を特定するように構成されている。このように情報コードの種別を特定すれば、コード種別に基づいて始端側のマージン対応領域の正規の構成を把握できるようになり、その結果、第1配列データの始端側のマージン対応領域に暗色領域が含まれる誤りを精度高く検出できるようになる。
【0030】
請求項11の発明では、第1配列データの始端側においてマージン対応領域と情報領域とに跨って配置される誤った第1暗色領域の幅情報と、第1暗色領域の終端側に隣接する第1明色領域の幅情報と、をそれぞれ記憶している。そして、第2配列データの最終の明色領域の隣に位置する第2暗色領域の幅情報と、第2暗色領域の始端側に隣接する第2明色領域の幅情報と、の幅比率に基づいて、第1配列データにおける第1暗色領域と第1明色領域との幅比率を、正規の幅比率に復元している。このようにすれば、第2配列データの終端側の部分が第1配列データの始端側のどの位置に相当するかを幅情報(特に明色領域の幅情報)を基準として適切に対応付けることができ、復元の正確性を一層高めることができる。
【0031】
請求項12の発明は、復元手段により再生成された第1配列データをデコードし、その再生成された第1配列データのデコードが失敗した場合には、復元手段により再生成された第2配列データをデコードするように構成されている。このようにすれば、仮に第1配列データの復元・デコードが失敗したとしても、第2配列データを用いてデコードできるため、デコードの成功確率が格段に高まる。また、その第2配列データの始端側のマージン対応領域に暗色領域が含まれる誤りが存在しても、第1配列データを用いて復元処理を行った上でデコード処理が行われるようになっており、効率的な復元処理、精度高いデコード処理が可能となる。
【0032】
請求項13の発明では、第2配列データの始端位置から最終の前記暗色領域までの明色領域及び暗色領域の幅値の総和と、対応情報とに基づいて第1配列データの誤った暗色領域の位置を特定するようにしている。このようにすれば、誤った暗色領域を迅速且つ的確に特定でき、第2配列データの最終の暗色領域のパターンに基づいて第1配列データのマージン対応領域の誤りを適切に修正できる。
【0033】
請求項14の発明では、第1の測定対象に対して投光手段により照明光が一方向に走査されたときの第1の測定結果と、第2の測定対象に対して照明光が他方向に走査されたときの第2の測定結果と、を記録し、復元処理を行う際に、第1の測定結果と第2の測定結果とに基づいて第1配列データと第2配列データとを位置的に対応付けるようにしている。このように予め測定された第1の測定結果及び第2の測定結果に基づき、復元処理において第1配列データと第2配列データとを対応付けるようにすれば、第2配列データを利用しての第1配列データの復元を精度高くスムーズに行うことができる。
【発明を実施するための最良の形態】
【0034】
[第1実施形態]
以下、本発明の光学的情報読取装置を具現化した第1実施形態について、図面を参照して説明する。図1は、本発明の第1実施形態に係るバーコードリーダの電気的構成を概略的に例示するブロック図である。図2は、読取対象のバーコードを例示する説明図である。
【0035】
図1に示すバーコードリーダ10は、バーコード(「バーコード」は情報コードの一例に相当する)Bを読み取り可能な装置であり、図示しないケースの内部に回路部20が収容されてなるものである。バーコードBは、例えば図2に示すような構成をなしており、黒色パターンP1と、黒色パターンP1の間に配される白色パターンP2とからなる情報領域を有すると共に、両端部に白色パターンとして認識されるべきマージンMが設けられている。なお、図2では、黒色パターン及び白色パターンの一部について符号を付している。なお、本実施形態では、「明色」の一例として「白色」を用い、「暗色」の一例として「黒色」を用いている。また、「明色パターン」の一例として「白色パターン」を用い、「暗色パターン」の一例として黒色パターンを用いている。また、「明色領域」の一例として「白色領域」を用い、「暗色領域」の一例として「黒色領域」を用いている。
【0036】
回路部20は、主に、照明光源21、受光センサ28、結像レンズ27等の光学系と、メモリ35、制御回路40、トリガースイッチ50等のマイクロコンピュータ(以下「マイコン」という)系と、から構成されている。
【0037】
光学系は、投光光学系と、受光光学系とに分かれている。投光光学系を構成する照明光源21は、照明光Lfを発光可能な照明光源として機能するもので、例えば、赤色のLEDとこのLEDの出射側に設けられるレンズとから構成されている。なお、図1では、バーコードBが付された読取対象物Rに向けて照明光Lfを照射する例を概念的に示している。
【0038】
受光光学系は、受光センサ28、結像レンズ27、反射鏡(図示略)などによって構成されている。受光センサ28は、読取対象物RやバーコードBに照射されて反射した反射光Lrを受光可能に構成されるものである。この受光センサ28は、結像レンズ27を介して入射する入射光を受光可能にプリント配線板(図示略)に実装されている。
【0039】
結像レンズ27は、外部から読取口(図示略)を介して入射する入射光を集光して受光センサ28の受光面28aに像を結像可能な結像光学系として機能するものである。本実施形態では、照明光源21から照射された照明光Lfが、バーコードBにて反射した後、この反射光Lrを結像レンズ27で集光し、受光センサ28の受光面28aにコード像を結像させている。
【0040】
マイコン系は、増幅回路31、A/D変換回路33、メモリ35、アドレス発生回路36、同期信号発生回路38、制御回路40、トリガースイッチ50、表示LED(以下、単にLEDとも称する)45、ブザー44、液晶表示器46、通信インタフェース48等から構成されている。
【0041】
光学系の受光センサ28から出力される画像信号(アナログ信号)は、増幅回路31に入力されることで所定ゲインで増幅された後、A/D変換回路33に入力されると、アナログ信号からディジタル信号に変換される。そして、ディジタル化された画像信号、つまり画像データ(画像情報)は、メモリ35に入力されると、所定のコード像画像情報格納領域に蓄積される。なお、同期信号発生回路38は、受光センサ28およびアドレス発生回路36に対する同期信号を発生可能に構成されており、またアドレス発生回路36は、この同期信号発生回路38から供給される同期信号に基づいて、メモリ35に格納される画像データの格納アドレスを発生可能に構成されている。
【0042】
制御回路40は、バーコードリーダ10全体を制御可能なマイコンで、CPU、システムバス、入出力インタフェース等からなるもので、メモリ35とともに情報処理装置を構成し得るもので情報処理機能を有する。この制御回路40は、内蔵された入出力インタフェースを介して種々の入出力装置と接続可能に構成されており、本実施形態の場合、トリガースイッチ50、LED45、ブザー44、液晶表示器46、通信インタフェース48等を接続されている。これにより、例えば、トリガースイッチ50の監視や管理、LED45の点灯、非点灯、ビープ音やアラーム音を発生可能なブザー44の鳴動のオンオフ、液晶表示器46の表示制御、通信インターフェース48の制御等を可能にしている。
【0043】
次に、バーコードリーダ10の読取処理について説明する。
この読取処理では、図1のようにまずバーコードBからの反射光を受光センサ28(受光センサ28は「受光手段」の一例に相当する)にて受光し、この受光センサ28によりバーコードBの各パターンごとに反射光の強度に応じた受光信号を出力する。さらに、受光センサ28により出力される受光信号の信号波形を閾値と比較し、その比較に基づいて信号波形を白色領域と黒色領域とに区分けする。そして、区分けされた白色領域及び黒色領域の配列データをデコードする。なお、制御回路40及び図3のプログラムが「二値化手段」「デコード手段」の一例に相当する。
【0044】
さらに、本実施形態に係るバーコードリーダ10は、マージン対応領域(配列データにおけるマージンとして認識されるべき領域)に黒色領域が含まれる誤りを検出するように構成されており、誤りがあった場合にはその誤りを修正してマージン対応領域を復元するように配列データを再生成する構成となっている。そして、このようにマージン対応領域が復元された再生成後の配列データがデコード処理されることとなる。
なお、制御回路40及び図4のプログラムが「誤り検出手段」の一例に相当し、制御回路40及び図5のプログラムが「復元手段」の一例に相当する。
【0045】
以下、読取処理の具体的な流れについて説明する。なお、図3は読取処理の流れを例示するフローチャートであり、図4は、その読取処理の一部を構成する誤り検出処理を例示するフローチャートである。図5は、受光信号の信号波形と閾値との関係を例示する説明図である。図6(A)は、図5の閾値のときの配列データの構成を概念的に示す説明図であり、図6(B)は復元後の配列データの構成を概念的に示す説明図である。図7(A)は、閾値を設定変更したときの閾値と信号波形との関係を示す説明図であり、図7(B)はそのときの配列データの構成を概念的に示す説明図である。また、図8は、読取処理の一部を構成する復元処理を例示するフローチャートである。
【0046】
図3に示す読取処理は例えば図1に示すトリガスイッチ50の操作等によって開始される。当該処理が開始されると、まず、受光センサ28にバーコードBのコード情報を読み取らせる処理(即ち、受光センサ28にバーコードBからの反射光を受光させ、画像情報を取得させる処理)が行われ(S1)、さらにこの受光センサ28に受光信号の信号波形(パターン波形)を出力させる処理が行われる(S2)。例えば、図2のようなバーコードBの画像情報を取得すると、図5のようなパターン波形が出力されメモリ35に記憶されることになる。
【0047】
その後、二値化処理が行われる(S3)。この二値化処理では、受光センサ28により出力される受光信号の信号波形(即ち、図5に示すパターン波形)を閾値と比較し、その比較に基づいて信号波形を白色領域と黒色領域とに区分けする。この閾値は、予め定められた一定の値であってもよく、パターン波形に基づいて定められる値であってもよい。
【0048】
図5の例では、得られたパターン波形の最大値と最小値とを求め、それら最大値と最小値との中間値を閾値として設定しており、パターン波形において受光信号のレベルが閾値より大きくなる領域を白色領域とし、受光信号のレベルが閾値よりも小さくなる領域を黒色領域として区分けする。このような二値化を行うことで、図6(A)にて概念的に示すような黒色領域Xと白色領域W1との配列データが得られる。この配列データは、バーコードB(図2)における黒色パターンP1及び白色パターンP2の配列に対応するものであり、各黒色パターンの位置(所定の基準位置に対する相対位置)及び幅を特定でき、各白色パターンの位置(所定の基準位置に対する相対位置)及び幅を特定できるようになっている。
【0049】
図3に戻り、S3にて二値化処理が行われた後、S4にて各黒色領域の領域幅を算出する処理が行われる。即ち、上述の二値化処理により、図6(A)にて概念的に示すような複数の黒色領域Xが得られるため、各黒色領域の領域幅をそれぞれ算出し、メモリ35に記憶する。
【0050】
その後、マージン対応領域の誤りを検出する処理が行われる(S5)。この処理は、配列データにおけるマージンとして認識されるべき領域(マージン対応領域)に誤りが生じているか否かを検出する処理であり、まず、図4のS10に示すように閾値を設定変更する処理が行われる。この処理は、図3の二値化処理で設定した閾値を設定変更する処理であり、例えば図5のように設定されていた閾値を、これよりも大きい閾値に設定変更する(図7(A)参照)。
【0051】
そして、その設定変更された閾値に基づいて再度二値化処理を行う(S20)。この二値化処理はS3と同様であり、S2で得られた受光信号の信号波形(パターン波形)において受光信号のレベルが閾値(S10での設定変更後の閾値)より大きくなる領域を白色領域とし、受光信号のレベルが閾値(S10での設定変更後の閾値)よりも小さくなる領域を黒色領域として区分けする。なお、図7(B)では、設定変更後の配列データの構成を概念的に示している。
【0052】
さらに、設定変更後の各黒色領域の幅を算出する処理を行う(S30)。即ち、上記S20の二値化処理によって図7(B)に示すような複数の黒色領域Yが得られるため、各黒色領域の領域幅をそれぞれ算出し、メモリ35に記憶する。
【0053】
その後、閾値変更前後の黒色領域の幅を比較する処理を行う(S40)。即ち、設定変更前の各黒色領域Xの幅と、設定変更後の各黒色領域Yの幅とを対応する位置毎に比較し、各黒色領域Xの幅がどの程度変化したかを算出する。本実施形態では、設定変更前の左端の黒色領域X1が設定変更によって2つの黒色領域Y0、Y1に変化しており、設定変更前の各黒色領域X2,X3,X4・・・が、設定変更によって各黒色領域Y2,Y3,Y4・・・に変化している。
【0054】
そして、各黒色領域Xについて基準を超える変化があったか否か(具体的には、各黒色領域の設定変更前後の幅の変化量が予め定められた基準値を超えるか否か)を判断し(S50)、基準を超える変化があった場合にはS50にてYesに進み、S70にてマージン対応領域に誤りがあったことをメモリ35に記憶し(具体的には誤りがあったことを示す誤りフラグを「1」に設定)、さらに基準を超える変化があった黒色領域を特定しうる情報をメモリ35に記憶する。一方、いずれの黒色領域Xについても基準を超える変化がなかった場合にはS50にてNoに進み、S60にてマージン対応領域に誤りがなかったことをメモリ35に記憶する(具体的には誤りフラグを「0」に設定する)。
【0055】
図6(A)、図7(B)の例では、左端の黒色領域X1の幅が設定変更前後で大きく変化しており、その変化量が予め定められた基準値を超えている。それ以外の黒色領域X2,X3,X4・・・は変化が小さく、各変化量は基準値を下回っている。従って、基準を超える変化があったものとしてS50にてYesに進み、S70にて誤りフラグが「1」に設定されると共に、基準を超える変化があった左端の黒色領域X1を特定しうる情報がメモリ35に記憶される。なお、図6(A)の左端の黒色領域X1のように、設定変更後に複数の黒色領域(図7(B)のY1,Y2参照)に変化するような場合、その複数の黒色領域のうちの最も幅の大きい黒色領域の幅を設定変更後の黒色領域の幅として扱ってもよく、それら複数の黒色領域の幅の合計値を設定変更後の黒色領域の幅と扱ってもよい。
【0056】
このように、本実施形態では、閾値を設定変更すると共に、その設定変更前後において、黒色領域を抽出し、設定変更前後の黒色領域の幅変化が基準を超えると判断された場合に、マージン対応領域に誤りが生じたことを検出している。なお、制御回路40及び図4のプログラムは「設定変更手段」「変化判断手段」の一例に相当する。
【0057】
図3に戻り、誤り検出処理(S5)の終了後、マージン対応領域に誤りがあったか否かの判断処理が行われ(S6)、マージン対応領域に誤りがあった場合、即ち、誤りフラグが「1」に設定されている場合には、S6にてYesに進み、後述する復元処理が行われる(S7)。一方、マージン対応領域に誤りがない場合、即ち、誤りフラグが「0」に設定されている場合にはS6にてNoに進むことになる。
【0058】
次に、S7の復元処理について説明する。
この復元処理では、まず、読取対象となるバーコードBの種別を特定し、その特定される種別に基づいて、マージンと情報領域との境界部に設けられる黒色の境界パターンを推定する。そして、配列データにおける誤りが検出されたマージン対応領域の誤った黒色領域を、推定される境界パターン及び境界パターンの外側に配される白色パターンに置換することでマージン対応領域を復元し、配列データを再生成する。
なお、制御回路40及び図8のプログラムが「種別特定手段」、「境界パターン推定手段」の一例に相当する。
【0059】
以下、復元処理について具体的に説明する。なお、図8は、復元処理を例示するフローチャートであり、図9は種別特定処理を例示するフローチャートである。また、図10は個別判断処理の一例を示すフローチャートである。さらに、図11(A)は、CODE39のバーコード構成を説明する説明図であり、図11(B)は、CODE39のバーコードに関し、マージン対応領域に誤りが生じた配列データを概念的に示している。図11(C)は、図11(B)とは異なるタイプの誤りが生じた配列データを概念的に示している。図12は、図10とは異なる個別判断処理を例示するフローチャートである。
【0060】
図8に示すように、まず、読取対象のバーコードBの種別を特定する処理(種別特定処理)を行う(S100)。この種別特定処理は、誤りが検出されたマージン対応領域以外の黒色領域及び白色領域に基づいてバーコードBの種別を特定する処理であり、具体的には、バーコードBが登録されている複数種別のいずれかに該当するかを順番に確認する。図9は、その一例を示すものであり、まず、S200にてnを1に設定し、次いでn番目の個別判断処理を行う(S210)。個別判断処理は、バーコードBが各種別に該当するかを個別に判断する処理であり、本実施形態では登録される複数種別にそれぞれ対応するように複数の個別判断処理が用意され、各個別判断処理に固有の番号が付されている。
【0061】
図10は、初回(即ちn=1の場合)の個別判断処理を例示しており、この処理では、読取対象のバーコードBがCODE39のバーコードであるか否かを判断している。CODE39のバーコードは、例えば図11(A)のような構成をなし、両マージンに隣接してスタートキャラクタ及びストップキャラクタを構成する白黒バーが配されてなるものである。図10の処理では、このようなCODE39の特徴を利用してバーコードBがCODE39に該当するか否かを判断する。
【0062】
図10に示すように、まず配列データにおいて、誤ったマージン対応領域の反対側のマージン対応領域を特定する(S300)。具体的には、バーの配列方向において、誤ったマージン対応領域の反対側の端部に配される白色領域を反対側のマージンとして認識する。そして、その反対側のマージン対応領域(白色領域)に隣接してCODE39のスタートキャラクタ又はストップキャラクタが存在するか否かを判断する(S310)。CODE39のスタートキャラクタ又はストップキャラクタが存在しない場合には、S310にてNoに進み当該処理を終了する。
【0063】
一方、反対側のマージン対応領域に隣接してCODE39のスタートキャラクタ又はストップキャラクタが存在すると判断した場合にはS310にてYesに進み、誤ったマージン対応領域以外の配列データを用いてCODE39としてデコードできるか否かを判断する。
【0064】
配列データにおけるマージン対応領域の誤り(即ち誤った黒色領域)は、例えば図11(B)のように境界パターンの黒色領域PAの外側に連続して構成されたり、図11(C)のように、境界パターンの黒色領域PAの外側に離れて構成されるため、S320の処理では、誤った黒色領域の内側端部をCODE39の境界パターンの黒色領域PA(即ち、スタートキャラクタ或いはストップキャラクタの端部を構成する黒色領域)に置換してCODE39としてデコードを試行したり、或いは誤った黒色領域全部を白色領域に置換してCODE39としてデコードを試行し、デコードできるか否かを判断する。デコードが可能な場合にはS320にてYesに進み、読取対象のバーコードBの種別がCODE39である旨の情報をメモリ35に記憶する。
【0065】
このようにして個別判断処理が行われた後、図9のS220において、読取対象のバーコードBの種別が特定されたか否かを判断する。図10のS330のように、特定種別である旨が記憶された場合にはS220てYesに進み、図9に示す種別特定処理を終了する。一方、種別が特定されていない場合にはS220にてNoに進んでnをインクリメントし(S230)、S210に戻って次の種別に関する個別判断処理を行う。
【0066】
図12は、2番目の個別判断処理を例示しており、この処理では、EAN−8の特徴を利用して、読取対象のバーコードBの種別がEAN−8であるか否かを判断している。この処理では、まず、配列データにおける誤ったマージン対応領域の反対側のマージン対応領域を特定する処理を行う(S400)。具体的には、配列データにおいて、マージン対応領域の誤り(誤った黒色領域)から45個のパターン分だけ移動した位置を反対側のマージン対応領域とする。さらに、配列データにおいて、反対側のマージン対応領域に隣接してEAN−8のスタートキャラクタ又はストップキャラクタが存在するか否かを判断する。存在しない場合にはS410にてNoに進み、当該処理を終了する。
【0067】
S410において反対側のマージン対応領域に隣接してEAN−8のスタートキャラクタ又はストップキャラクタが存在すると判断される場合には、S410にてYesに進み、センターガードパターンが確認できるか判断する処理を行う(S420)。具体的には、配列データにおいて、スタートキャラクタ又はストップキャラクタを構成する白色領域及び黒色領域から誤ったマージン対応領域側に16パターン分移動した位置に、センターガードパターンを構成する白色領域及び黒色領域が存在するか否かを判断する。存在しない場合にはS420にてNoに進み、当該処理を終了する。
【0068】
センターガードパターンが確認できる場合には、S420にてYesに進み、配列データにおける、スタートキャラクタ又はストップキャラクタと、センターガードパターンとの間のデータを用いてEAN−8としてデコードできるか否かを判断する(S430)。デコードできない場合にはS430にてNoに進み、当該処理を終了する。デコードできる場合には、バーコードBの種別がEAN−8である旨の情報をメモリ35に記憶し(S440)、当該処理を終了する。
【0069】
以上のように、個別判断処理を順次行い、読取対象のバーコードBの種別を特定する。そして、種別が特定された場合には、図9のS220にてYesに進んで種別特定処理を終了する。種別特定処理の終了後は、図8のS110にて境界パターン及びマージンの特定処理が行われる。具体的には、種別特定処理にて特定されたバーコードの種別に対応する境界パターンのデータをメモリ35から読み出して、境界パターンを特定する。なお、本実施形態では、メモリ35において、バーコードの各種別と、境界パターンのデータとが対応付けられて記憶されており、バーコードの種別が特定されれば境界パターンのデータが読み出せるようになっている。
【0070】
そして、特定された境界パターン及びその外側の白色パターンに基づいて、配列データにおける誤った黒色領域を置換する(S120)。具体的には、誤った黒色領域の内側端部領域が境界パターンの黒色領域である可能性が高いため、誤った黒色領域の内側端部領域を、図8のS110にて特定される境界パターンの黒色領域に置換し、その外側の領域を白色領域に置換するように処理を行う。例えば、EAN−8コードの場合には、マージンは11モジュール、マージンに隣接する黒バー(即ち境界パターン)は1モジュールと規定されているため、このような規定に合うように修正する。
【0071】
置換後には、図6(A)のように構成されていた配列データ(マージン対応領域に誤りが生じていた元の配列データ)が、図6(B)のように置換されることとなる。なお、図6(B)では、置換対象の領域を破線で囲んで示している。S120が終わると、復元処理は終了する。そして、復元処理(S7、図8)の終了後には、置換後の配列データ(図6(B)参照)に基づいて、図3のS8に示すデコード処理が行われる。なお、S6にてマージン対応領域に誤りがないと判断される場合にはS6にてNoに進み、そのままS8のデコード処理が行われる。
【0072】
なお、上記の例では、誤った黒色領域の内側端部領域を特定された境界パターンの黒色領域に置換し、その外側の領域を白色領域に置換した上でデコードを行ったが、誤った黒色領域が境界パターンから離れて形成される可能性もある(図11(C)参照)。そこで、上記デコード処理において正常にデコードが行われなかった場合には、誤った黒色領域全部を白色領域に置換するように配列データを修正して再びデコード処理を試行するようにしてもよい。
【0073】
本実施形態のように、配列データ(二値化手段により区分けされた白色領域及び黒色領域を配列したデータ)において、マージンとして認識されるべき領域(マージン対応領域)に黒色領域が含まれる誤りを検出すると共に、当該マージン対応領域を復元するように配列データを再生成し、その再生成後の配列データをデコードするように構成すれば、マージン部分が誤認識される誤りを訂正して正確にデコードできるようになる。特に、マージン部分が黒色パターンとして認識されやすい情報コードを読み取る場合に有用な構成となる。
【0074】
また、本実施形態のように、閾値を設定変更し得るように構成し、設定変更前後の黒色領域の幅変化が基準を超えると判断された場合にマージンとして認識されるべき領域(マージン対応領域)に誤りが生じたことを検出するように構成すれば、マージンとして認識されるべき領域の誤りを迅速かつ精度高く検出できるようになる。
【0075】
さらに、読取対象となる情報コードの種別を特定し、その特定される種別に基づいて、マージンと情報領域との境界部に設けられる黒色の境界パターンを推定するようにすれば、複雑な構成を用いずともマージンと情報領域との境界部に設けられる黒色の境界パターンを精度高く把握できる。更に、誤りが検出されたマージン対応領域の誤った黒色領域を、推定される境界パターン及び境界パターンの外側に配される白色パターンに置換してマージンとして認識されるべき領域(マージン対応領域)を復元するようにすれば、複雑な構成を用いずともマージン対応領域の誤りを精度高く復元できるようになる。
【0076】
また、誤りが検出されたマージン対応領域以外の黒色領域及び白色領域に基づいて情報コードの種別を特定するようにすれば、誤りが検出された領域以外の領域を利用して情報コードの種別を精度高く特定できるようになる。
【0077】
[第2実施形態]
次に第2実施形態について説明する。図13は、本発明の第2実施形態に係るバーコードリーダにて行われる誤り検出処理の流れを例示するフローチャートである。なお、第2実施形態は、S5の誤り検出処理(図3)の具体的内容のみが第1実施形態と異なり、それ以外は第1実施形態と同様である。よって、S5の誤り検出処理については、図4、図7に代えて図13を用いて説明する。また、それ以外については図1〜図12(但し、図4、図7以外)と同様であるので適宜これらを参照し、詳細な説明は省略する。
【0078】
本実施形態では、二値化処理(図3のS3)によって抽出される複数の黒色領域の最大幅と、その二値化処理によって抽出される複数の白色領域の最大幅とを検出し、白色領域の最大幅の、黒色領域の最大幅に対する比が基準値未満であるか否かを判断するようにしている。そして、その比が基準値未満であると判断された場合に、マージン対応領域に誤りが生じたことが検出されるようになっている。
なお、本実施形態では、制御回路40及び図13のプログラムが、「誤り検出手段」「暗色最大幅検出手段」「明色最大幅検出手段」「比較手段」の一例に相当する。また、「二値化手段」「デコード手段」「復元手段」「境界パターン推定手段」「種別特定手段」については第1実施形態と同様である。
【0079】
具体的には、図13のように誤り検出処理が行われる。まず、二値化処理(図3のS3)によって抽出される複数の黒色領域の最大幅Mbと、その二値化処理によって抽出される複数の白色領域の最大幅Mhとを検出する処理を行う(S500)。そして、白色領域の最大幅Mhの黒色領域の最大幅Mbに対する比Mh/Mbを算出する(S510)。
【0080】
その後、読取対象のバーコードBの種別特定処理を行う(S520)。種別特定処理はバーコードBの種別を特定し得る方法であればよく、本実施形態では例えば第1実施形態のS100の種別特定処理(図8)と同様の方法、即ち、図9〜図12のように行われる。なお、制御回路40及び図13のプログラムは、「種別特定手段」の一例に相当する。
【0081】
そして、S520にて特定された種別に基づいて基準値を設定する処理(基準値設定処理)を行う(S530)。この基準値は、マージン対応領域に誤りが生じているか否かを判断する基準となる値(具体的には、比Mh/Mbが正常値(マージン対応領域に誤りがないときの値)か否かを判断する上での基準となる値)である。本実施形態では、マージン幅の黒色バー幅最大値に対する比を各種別毎に予め求めておき、この各種別毎の基準値をメモリ35に記憶している。例えば、種別Aのバーコードにおいて、マージン幅がMhAで、黒色バー幅の最大値がMbAであれば、種別Aの基準値はMhA/MbAとして定められ、メモリ35に記憶されることになる。S530の処理では、このように記憶される基準値のリストの中からS520にて特定された種別に対応するものを読み出す。なお、制御回路40及び図13のプログラムが「基準値設定手段」の一例に相当する。
【0082】
そして、S510にて算出された比Mh/Mbが、S530にて設定された基準値未満であるか否かを判断する(S540)。比Mh/Mbが基準値未満であれば、S540にてYesに進み、S560にてマージン対応領域に誤りがあったことをメモリ35に記憶する。一方、比Mh/Mbが基準値未満でない場合にはS540にてNoに進み、S550にてマージン対応領域に誤りがなかったことをメモリ35に記憶する。このようにして誤り検出処理を行った後は、第1実施形態と同様に、S6〜S8(図3)の処理が行われることとなる。なお、比Mh/Mbが基準値未満である場合には、黒色領域の最大幅Mbの位置を「誤った黒色領域」と考えることができ、この「誤った黒色領域」に対して第1実施形態と同様の復元処理が行われることになる。
【0083】
本実施形態のように、白色領域の最大幅Mhの黒色領域の最大幅Mbに対する比が基準値未満であるか否かを判断し、この比Mh/Mbが基準値未満であると判断された場合に、マージンとして認識されるべき領域(マージン対応領域)に誤りが生じたことを検出するようにすれば、マージンとして認識されるべき領域の誤りをより精度高く検出できるようになる。また、特定された種別に基づいて基準値を設定し、この基準値と、比Mh/Mbとを比較する構成とすれば、情報コードの種別に応じた適切な比較が可能となる。
【0084】
[第3実施形態]
次に第3実施形態について説明する。図14は、本発明の第3実施形態に係るバーコードリーダに用いる復元処理を例示するフローチャートである。図15は、度数分布情報を概念的に例示するものであり、配列データに含まれる各黒色領域について、幅値毎の度数を表したグラフ(ヒストグラム)である。図16は、S610の推定処理に用いる配列データを概念的に説明する説明図である。
第3実施形態では、S7の復元処理(図3)の具体的内容のみが第1実施形態と異なり、それ以外は第1実施形態と同様である。よって、S7の復元処理の具体的内容については、図8〜図12に代えて図14、図15を用いて説明する。また、それ以外については図1〜図7と同様であるので適宜これらを参照し、詳細な説明は省略する。
【0085】
本実施形態では、図3の二値化処理によって得られた黒色領域の幅値を集計すると共に、幅値毎の度数分布情報を生成し、その生成される度数分布情報に基づいて、マージンと情報領域との境界部に設けられる黒色の境界パターンを推定するようにしている。そして、誤りが検出されたマージン対応領域の誤った黒色領域を、推定される境界パターン及び境界パターンの外側に配される白色パターンに置換することでマージン対応領域を復元し、配列データを再生成している。なお、制御回路40及び図14のプログラムは「復元手段」「度数分布情報生成手段」「境界パターン推定手段」の一例に相当する。また、「二値化手段」、「デコード手段」、「誤り検出手段」、「設定変更手段」、「変化判断手段」は第1実施形態と同様である。
【0086】
具体的には、図14のように誤り検出処理が行われる。
まず、S4の処理(図3)において算出された各黒色領域の幅値を集計し、度数分布情報を生成する(S600)。図15は、その度数分布情報をグラフ化した例を示している。その後、マージン対応領域に隣接する端部の黒色領域(即ち、マージンと情報領域との境界部に設けられる黒色の境界パターンの黒色領域)を推定する処理を行う(S610)。具体的には、誤った黒色領域の内側端部領域が境界パターンの黒色領域である可能性が高いため、誤った黒色領域の内側端部領域を、候補となるべき黒色領域にそれぞれ置換してデコード処理を行う。例えば、図15のように、度数分布情報の生成により、黒色領域の幅値として、Wa、Wb、Wc、Wd、Weが得られた場合には、これらのいずれかが境界パターンの黒色領域の幅値であると考えられるため、図16(B)〜(E)のように、Wa、Wb、Wc、Wd、Weの各幅の黒色領域をそれぞれ誤った黒色領域の内側端部領域に配するように配列データを置換し(このとき、各幅の黒色領域の外側は白色領域とする)、デコードを試行する。なお、本実施形態では、誤り検出処理によって誤った黒色領域とされた幅値(図15ではWe)を除いた上でデコードを試行するようにしている。
【0087】
図16(A)は、図3の二値化処理(S3)直後の配列データを示しており、図16(B)は、誤った黒色領域の内側端部領域を幅Waの黒色領域に置換した配列データを示し、図16(C)は、誤った黒色領域の内側端部領域を幅Wbの黒色領域に置換した配列データを示し、図16(D)は、誤った黒色領域の内側端部領域を幅Wcの黒色領域に置換した配列データを示し、図16(E)は、誤った黒色領域の内側端部領域を幅Wdの黒色領域に置換した配列データを示している。このように配列データをそれぞれ生成すると共に、各配列データをデコードし、デコードが正常に行われた配列データを正規の配列データと推定する。例えば、図16(B)の配列データについてデコードが正常に行われた場合には、これを正規の配列データとし、そのときの内側端部領域の幅Waが境界パターンの黒色領域と推定される。
【0088】
そして、図14に示すように、誤った黒色領域を推定される境界パターンの黒色領域及びその外側の白色領域に置換するように置換処理を行い(S620)、配列データを再生成する。置換処理後は、第1実施形態と同様に、図6(A)のように構成されていた配列データ(マージン対応領域に誤りが生じていた元の配列データ)が、図6(B)のように置換され、その置換後の配列データ(図6(B)参照)に基づいて、図3のS8に示すデコード処理が行われる。
【0089】
なお、上記例では、誤った黒色領域の内側端部領域をS610にて推定される境界パターンの黒色領域に置換し、その外側の領域を白色領域に置換した上でデコードを行ったが、誤った黒色領域が境界パターンの黒色領域から離れて形成される可能性もある。従って、S610の処理では、誤った黒色領域の内側端部領域を、度数分布情報の生成によって得られた各幅値の黒色領域に置換しても正常にデコードが行われなかった場合には、誤った黒色領域全部を白色領域に置換してデコード処理を試行するようにしてもよい。このような試行によってデコードが正常に行われた場合、S620では、誤った黒色領域の全部を白色領域に置換するように配列データを再生成することとなる。
【0090】
本実施形態に例示されるように、黒色領域及び白色領域の少なくともいずれか一方の幅値を集計して幅値毎の度数分布情報を生成し、その度数分布情報に基づいて、マージンと情報領域との境界部に設けられる黒色の境界パターンを推定するようにすれば、特別な構成や特別なデータを予め用意せずともマージンと情報領域との境界部に設けられる黒色の境界パターンを精度高く把握できる。更に、誤りが検出されたマージン対応領域の誤った黒色領域を、推定される境界パターン及び境界パターンの外側に配される白色パターンに置換してマージンとして認識されるべき領域(マージン対応領域)を復元するようにすれば、複雑な構成を用いずともマージン対応領域の誤りを精度高く復元できるようになる。
【0091】
[第4実施形態]
次に第4実施形態について説明する。図18は、本発明の第4実施形態に係るバーコードリーダ400を概略的に例示する説明図である。図19は、図18のバーコードリーダ400の電気的構成を概略的に例示するブロック図である。
【0092】
1.全体構成
本実施形態に係るバーコードリーダ400も「光学的情報読取装置」の一例に相当するものであり、情報コードとしてのバーコードBを読取可能に構成されるものである。なお、バーコードBは明色パターン(図18等では白色パターン)と暗色パターン(図18等では黒色パターン)とからなる情報領域を有すると共に、端部に明色パターンとして認識されるべきマージンMが設けられたものである。
【0093】
本実施形態のバーコードリーダ400は、いわゆるレーザスキャン方式として構成されており、レーザ光L1を出射するレーザ光源402と、レーザ光源402から出射されたレーザ光L1をバーコードBに向けて反射する反射ミラー403と、バーコードBからの反射光L2を受光する受光センサ404とを備える。受光センサ404は、受光素子からなると共に光電変換する機能を有し、受光した反射光L2の受光強度に対応したアナログの電気信号を出力する。反射ミラー403は、揺動装置(図19において符号405で示す)の作用によって揺動自在に構成されている。この実施形態では、レーザ光源402としてレーザダイオードを用いる。
【0094】
なお、本実施形態では、レーザ光源402が「光源」の一例に相当し、指向性を有する照明光(レーザ光L1)を出射するように機能する。また、受光センサ404は、「受光手段」の一例に相当し、バーコードB(情報コード)からの反射光L2を受光し、バーコードBの各パターンごとに反射光の強度に応じた受光信号を出力するように機能する。また、揺動装置405が、「揺動手段」の一例に相当し、光源から出射される照明光を揺動させるように機能する。また、これらレーザ光源402及び揺動装置405が「投光手段」の一例に相当し、照明光(レーザ光L1)を二方向(走査線Tに沿った往復方向)に走査するように機能する。
【0095】
揺動装置405としては公知の種々の装置を用いることができる。例えば、反射ミラー403をステップモータの回転軸に取付け、そのステップモータを低周波正逆転駆動する装置を用いることができる(特許第3225621号公報)。また、反射ミラー403の一端にコイルを取付け、そのコイルにマグネットを挿入し、コイルに交流電流を通電することにより、反射ミラー403を周期的に揺動させる装置を用いることもできる(特許第2603883号公報)。さらに、磁歪素子、電歪素子、または表面弾性波素子などのいわゆる表面振動素子で反射ミラー403を構成し、該素子の表面を振動させる装置を用いることもできる。
【0096】
レーザ光源402から出射されたレーザ光L1は、揺動装置405によって揺動する反射ミラー403にて反射され、バーコードB上を往復走査する。図18において符号Tで示す線は、レーザ光L1による走査線を概念的に示すものである。バーコードBにて反射したレーザ光L1は、反射光L2となって受光センサ404に取込まれる。なお、図示しないが、バーコードリーダ400には、バーコードBの読取り範囲を照明するためのマーカ光を照射するマーカ光照射装置などが設けられている。
【0097】
次に、バーコードリーダ400の主な電気的構成について、それをブロックで示す図19を参照して説明する。
バーコードリーダ400は、信号処理部411と、二値化処理部410と、計測処理部409と、デコード部408と、制御部407と、格納部406とを備える。
【0098】
信号処理部411は、受光センサ404から出力された電気信号のノイズを除去するローパスフィルタと、このローパスフィルタから出力された信号を所定のゲイン(増幅率)で増幅する増幅回路と、この増幅回路から出力された信号をパルス信号に変換する微分回路と、この微分回路から出力されたパルス信号を絶対値を取ったパルス列に変換する絶対値回路とを備える。
【0099】
二値化処理部410は、信号処理部411から出力された上記パルス列の各パルスを所定の基準値と比較することにより明暗(スペースかバーか)を判定し、その判定結果に対応する二値データを生成する。計測処理部409は、二値化処理部410により生成された二値データを計数し、バー幅値およびスペース幅値を算出する。
【0100】
なお、上記信号処理部411、二値化処理部410、計測処理部409、デコード部408、制御部407は、それぞれが別々の回路で構成されていてもよく、いくつかの機能を共通の制御回路(例えばCPU等)によって実現してもよい。
【0101】
格納部406は、計測処理部409により算出されたバー幅値およびスペース幅値、さらには後述するデコード部408に備えられたCPUの処理結果などを格納するRAMと、CPUが実行するシステムプログラムや各種の制御プログラムなどが格納されたROMと、ROMから読出したシステムプログラムなどをワークエリアに格納するフラッシュメモリとを備える。
【0102】
デコード部408は、図示しないが、デコード処理および各処理部の制御などを実行するCPUを備えており、そのCPUは、格納部6に格納されたバー幅値およびスペース幅値を、予め格納されている明暗パターンと比較することにより、明暗パターンを抽出し、読取対象のバーコードBにエンコード(符号化)されている光学的情報をデコード(復号)する。さらに、デコード部408は、クロック信号発生回路と、各回路との間でデータの入出力を行う入出力回路とを備える。
【0103】
制御部407は、CPUを備えてなるものであり、信号処理部411に備えられたローパスフィルタの帯域幅の変更、増幅回路のゲインの増減などを必要に応じて実行する。また、制御部407は、レーザ光源402および揺動装置405の制御、バーコードBのデコードが成功したときに「ピッ」などの音を発生するブザーの制御、デコードしたデータなどを外部装置(図示せず)へ出力する制御などを実行する。
なお、図示しないが、バーコードリーダ400には、格納部406、制御部407、デコード部408、計測処理部409、二値化処理部410および信号処理部411へ電源を供給する電源回路が備えられている。
【0104】
2.特徴的構成
次に本実施形態の特徴的構成について図20〜図26を参照しつつ説明する。図20は、図18、図19に示すバーコードリーダ400での読取処理の流れを例示するフローチャートである。また、図21は、図20の読取処理におけるデコード処理を例示するフローチャートである。図22は、復元データのデコード処理を例示するフローチャートである。図23(A)は、正常な配列データを例示する説明図であり、(B)(C)は、配列データにおけるマージンとして認識されるべき領域(マージン対応領域)に暗色領域が含まれた例を示す説明図である。また、(D)は、(C)のデータの明色領域を拡張した後の第1配列データを例示するものである。図24は、デコードが成功した配列データを例示する説明図あり、(A)はマージン対応領域が正常である例を示すものであり、(B)はマージン対応領域に暗色領域が含まれた例を示すものである。(C)は、(B)のデータの明色領域を拡張した後の第1配列データを例示するものである。図25(A)(B)は、デコードが失敗した配列データを例示する説明図であり、(A)は、データ端暗色領域が異常である場合を示すものであり、(B)は、マージン対応領域が異常である場合を示すものである。(C)は、(B)のデータの明色領域を拡張した後の第1配列データを例示するものである。図26は、配列データの復元を説明する説明図である。
【0105】
図20に示す読取処理は電源投入や所定操作(例えばトリガスイッチの押圧操作等)をトリガとして開始される。当該処理が開始されると、まず、レーザ光L1の一方向の走査に基づいて明暗配列データを取得する処理が行われる(S701)。レーザスキャン方式における明暗配列データを取得する方法は周知であるので詳細は省略するが、概要を述べると、レーザ光L1が一方向に走査されたときに受光センサ404から出力される信号波形を閾値と比較して明色領域(明色パターン(本実施形態では白色パターン)を示す領域)と暗色領域(暗色パターン(本実施形態では黒色パターン)を示す領域)とに区別する二値化処理を行い、バーコードBの明色パターン各々の位置及び幅を反映した複数の明色領域、及びバーコードBの暗色パターン各々の位置及び幅を反映した複数の暗色領域を配列した配列データ(明暗配列データ)を取得する。
【0106】
なお、本実施形態では、S701の処理によって得られた明暗配列データが「第1配列データ」の一例に相当する。また、二値化処理部410が「二値化手段」の一例に相当するものであり、受光センサ404(受光手段)により出力される受光信号の信号波形を閾値と比較すると共に、その比較に基づいて信号波形を明色領域と暗色領域とに区分けするように機能する。また、二値化処理部410は、「第1二値化手段」の一例に相当し、レーザ光源402及び揺動装置405により照明光(レーザ光L1)が一方向に走査されたときに受光センサ404(受光手段)から出力される受光信号により得られる信号波形を明色領域と暗色領域とに区分けして第1配列データ(一方向に走査されたときに得られる明暗配列データ)を生成するように機能する。
【0107】
次に、この第1配列データに基づいてデコード処理が行われる(S702)。このデコード処理は、例えば図21のような流れで行われる。なお、本実施形態では、デコード部408が「デコード手段」の一例に相当し、上記二値化処理部410により区分けされた明色領域及び暗色領域の配列データ(S702では、第1配列データ)をデコードするように機能する。
【0108】
S702のデコード処理では、図21に示すように、まず、第1配列データがどの程度デコードが可能かを解析する処理が行われる(S801)。この処理では、S701にて取得した第1配列データの最後(終端側)から最初(始端側)に向けて順次デコードを行い、デコードが不能となる位置まで解析(デコード可能か否かの解析)を続ける。その後、S801での解析に基づいて第1配列データに係るバーコードBのコード種別を特定する処理(種別特定処理)を行う(S802)。この種別特定処理は、例えば第1実施形態と同様の方法(即ち、図9〜図12の方法)で行ってもよく、コード種別を特定し得る方法であれば他の方法でもよい。
【0109】
そして、特定されたコード種別における終端側のデータ端の暗色パターンから始端側のデータ端の暗色パターン手前までの必要本数を算出し、S801のデコード解析処理においてデコード可能とされた本数が必要本数以上であるかを判断する(S803)。このとき、デコード可能とされた本数が必要本数未満の場合にはS803にてNoに進む。デコード可能な本数が必要本数未満の場合とは、即ち、少なくとも始端側のマージン対応領域以外に誤りが含まれることを意味するため、「マージン対応領域の誤りが不明」、かつ「デコード失敗」と判定し(S804)、当該デコード処理を終了する。
【0110】
一方、S803において、デコード可能な本数が必要本数以上と判断された場合、S803にてYesに進み、S701にて生成された第1配列データにおける最初の明色領域の幅W1を取得する(S805)。さらに、S802にて特定されたコード種別に基づき、当該コード種別に必要なマージン幅W2を算出する(S806)。そして、第1配列データの最初の明色領域の幅W1が必要マージン幅W2よりも大きいかを判断する(S807)。図23(B)(C)のように、最初の明色領域の幅W1よりも必要マージン幅W2のほうが大きい場合、S807にてNoに進む。S807にてNoに進むには、現在の最初の明色領域の次の明色領域をマージンと仮定し、最初の明色領域を拡張する処理を行う(S818)。例えば、図23(C)のような第1配列データが得られた場合、現在の最初の明色領域WH1の次の明色領域WH2をマージンと仮定し、始端から前記次の明色領域WH2までの領域全体を明色領域に変換し、図23(D)のような新たな配列データを生成する。その後、この新たな配列データを「第1配列データ」として、S805以降の処理を再度行う。
【0111】
一方、図23(A)のように、必要マージン幅W2よりも最初の明色領域の幅W1のほうが大きい場合にはS807にてYesに進み、S701にて取得した第1配列データ全体をデコードする(S808)。なお、S808では、公知の処理方法でデコードが行われる。
【0112】
S808においてデコードが成功した場合には、S809にてYesに進み、S808にてデコードしたコード種別に基づいて当該コード種別における必要マージン幅W3を算出する(S810)。さらに、始端側のデータ端暗色領域BR1に隣接する明色領域の幅W4を取得し、必要マージン幅W3よりも隣接明色領域の幅W4のほうが大きいかを判断する。図24(A)のように必要マージン幅W3よりも隣接明色領域(図24(A)では明色領域WH0)の幅W4のほうが大きい場合には、S812にてYesに進む。この場合の第1配列データはマージンが正常に確保された正常な明暗配列データであるといえるため、「マージン対応領域の誤りなし」かつ「デコード成功」と判定し(S813)、当該処理を終了する。なお、S813では、判定と共にデコード結果の出力も行われる。
【0113】
一方、図24(B)のように、隣接明色領域(図24(B)では明色領域WH4)の幅W4よりも必要マージン幅W3のほうが大きい場合、始端側のデータ端暗色領域BR1の外側隣に必要なマージンが確保されていないといえるため、S812にてNoに進み、上述した拡張処理を行い(S818)、図24(C)のような新たな配列データを取得する。この場合、この新たな配列データを「第1配列データ」として、S803以降の処理を再度行うこととなる。
【0114】
一方、S808においてデコードが失敗した場合にはS809にてNoに進み、S802にて特定されたコード種別に基づいて正規のデータ端暗色領域の幅W5を算出する。さらに、第1配列データにおけるデータ端暗色領域BR1の幅W6を取得する。そして、正規のデータ端暗色領域の幅W5よりも第1配列データのデータ端暗色領域BR1の幅W6のほうが大きいかを判断し(S816)、幅W5よりも幅W6のほうが大きい場合にはS816にてYesに進む。S816にてYesに進む場合とは、即ち、終端側からデータ端暗色領域BR1の手前まではデコード可能と判断され、かつデータ端暗色領域BR1の幅が正規のものより広いと判断される場合(つまり、図25(A)のようにデータ端暗色領域BR1が、マージンとして認識されるべき領域AR1(マージン対応領域)まで広がってしまっている場合)である。このような場合には、「マージン対応領域の誤りあり」かつ「デコード失敗」と判断し、その後、当該処理を終了する。
【0115】
一方、S816において、第1配列データのデータ端暗色領域BR1の幅W5が正規のデータ端暗色領域の幅W6以下の場合、S816にてNoに進む。S816にてNoに進む場合とは、即ち、終端側からデータ端暗色領域BR1の手前まではデコード可能と判断され、かつ、図25(B)のようにデータ端暗色領域BR1の幅が正規の幅W5と同じであり、マージンとして認識されるべき領域AR1(マージン対応領域)におけるデータ端暗色領域BR1から離れた位置に誤った暗色領域が配される場合といえる。このような場合には、S816にてNoに進み、上述した拡張処理(図25(B)の例では明色領域WH5〜WH6まで明色領域とする拡張処理)を行い(S818)、図25(C)のような新たな配列データを取得する。この場合、この新たな配列データを「第1配列データ」として、S803以降の処理を再度行うこととなる。
【0116】
なお、S816では、第1配列データのデータ端暗色領域BR1の幅W6が正規のデータ端暗色領域の幅W5よりも大きいか否かを判断しているが、これに代え、S816において第1配列データのデータ端暗色領域BR1の幅W6が必要なマージン幅W3(上述)よりも大きいかを判断するようにし、大きい場合にS816にてYesに進むようにしてもよい。
【0117】
なお、本実施形態では、制御部407を構成するCPUによって図20〜図22に示す処理が実行されるようになっており、制御部407が「誤り検出手段」の一例に相当し、配列データにおけるマージンとして認識されるべきマージン対応領域に暗色領域が含まれる誤りを検出するように機能する。具体的には、S701で取得した第1配列データにおける始端側のマージン対応領域に暗色領域が含まれる誤りを検出する構成をなしている。また、制御部407は、「種別特定手段」の一例にも相当し、S802に示すように第1配列データの終端から始端側のマージン対応領域に至るまでの暗色領域及び明色領域に基づいて情報コード(バーコードB)の種別を特定するように機能する。また、制御部407は、上記のように特定されるバーコードBの種別に基づいて、第1配列データにおける始端側のマージン対応領域に暗色領域が含まれる誤りを検出する一方で、誤りが検出された場合、後述する方法を用いてマージン対応領域を復元するように機能する(即ち「復元手段」としての機能も果たす)。なお、その復元後の配列データ(再生成された配列データ)は、後述する処理においてデコード部408(デコード手段)によってデコードされる。
【0118】
次に、図20におけるS703以降の処理を説明する。S702の処理が終了すると、S703においてデコードが成功したか否かを判断する。図21の処理のS813においてデコード成功と判定されている場合にはS703にてYesに進み、当該処理を終了する。S702のデコード処理においてデコードが成功しなかった場合(S804又はS817の判定がなされた場合)、S703にてNoに進み、「マージン対応領域の誤りあり」と判定されているかを判断する(S704)。S702の処理のS817において「マージン対応領域の誤りあり」と判定されている場合にはS704にてYesに進み、そうでない場合にはNoに進む。
【0119】
S704にてYesに進む場合には、図26(A)に示すように第1配列データにおける最終の暗色領域BR6(終端側のデータ端暗色領域と予想される領域)の幅W8と、その始端側に隣接する明色領域WH12の幅W9とをそれぞれ記憶する(S705)。また、上記デコード処理において検出された第1配列データのデータ端暗色領域BR1の幅W6と、その終端側に隣接する明色領域WH8の幅W7とをそれぞれ記憶する(S706)。その後、両方向の配列データ(第1配列データ及び第2配列データ)でマージン対応領域の誤りが検出されているかを判断する。両方向でマージン対応領域の誤りが検出されている場合にはS707にてYesに進み、S708にて復元データのデコード処理を行う。なお、復元データのデコード処理については後述する。
【0120】
本実施形態では、制御部407が「第1幅情報記憶手段」の一例に相当し、第1配列データの始端側においてマージン対応領域と情報領域とに跨って配置される、誤ったデータ端暗色領域(第1暗色領域:図26(A)の例では暗色領域BR1)の幅情報と、この第1暗色領域の終端側に隣接する明色領域(第1明色領域:図26(A)の例では明色領域WH8)の幅情報と、をそれぞれ格納部406に記憶するように機能する。
【0121】
S707において、両方向の配列データ(第1配列データ及び第2配列データ)でマージン対応領域の誤りが検出されていないと判断される場合には、S707にてNoに進み、他方向(上記一方向とは反対方向)走査時の明暗配列データ(第2配列データ)を取得する(S710)。S710の第2配列データ取得処理は、基本的にS701の第1配列データ取得処理と同様であり、S710では、レーザ光L1が他方向に走査されたときに受光センサ404から出力される信号波形を閾値と比較して明色領域(明色パターン(本実施形態では白色パターン)を示す領域)と暗色領域(暗色パターン(本実施形態では黒色パターン)を示す領域)とに区別する二値化処理を行い、バーコードBの明色パターン各々の位置及び幅を反映した複数の明色領域、及びバーコードBの暗色パターン各々の位置及び幅を反映した複数の暗色領域を配列した配列データ(第2配列データ)を取得する。
【0122】
その後、S710にて取得された第2配列データに基づいてデコード処理を行う(S711)。S711のデコード処理は、基本的にS702のデコード処理と同様であり、図21において第1配列データに対して行っていた処理を同様に第2配列データに対して行うこととなる。そして、第2配列データに対するデコード処理(S711)が成功したか否かを判断し(S712)、成功した場合にはS712にてYesに進み、当該処理を終了する。第2配列データに対するデコード処理が失敗した場合にはS712にてNoに進み、第2配列データのマージン対応領域に誤りあるかを判断する(S713)。第2配列データに対して行われたS711のデコード処理においてS804の判定がなされた場合にはS713にてNoに進む。一方、第2配列データに対して行われたS711のデコード処理においてS817の判定がなされた場合にはS713にてYesに進む。
【0123】
S713にてYesに進む場合には、図26(B)に示す第2配列データにおける最終の暗色領域BR3(終端側のデータ端暗色領域と予想される領域)の幅W10と、その始端側に隣接する明色領域WH9の幅W11とをそれぞれ記憶する(S714)。また、上記デコード処理(S711)において検出された第2配列データのデータ端暗色領域BR4の幅W12と、その終端側に隣接する明色領域WH11の幅W13とをそれぞれ記憶する(S715)。その後、両方向の配列データ(第1配列データ及び第2配列データ)でマージン対応領域の誤りが検出されているかを判断する(S716)。両方向の配列データについてマージン対応領域の誤りが検出されている場合にはS716にてYesに進み、そうでない場合にはS716にてNoに進む。
【0124】
本実施形態では、制御部407が「第2幅情報記憶手段」の一例に相当し、第2配列データの最終の明色領域(図26(B)では明色領域WH10)の隣に位置する最終の暗色領域(第2暗色領域:図26(B)では、暗色領域BR3)の幅情報と、最終の暗色領域(暗色領域BR3)の始端側に隣接する明色領域(第2明色領域:図26(B)では、明色領域WH9)の幅情報と、をそれぞれ格納部406に記憶するように機能する。
【0125】
次に、S708、S717における復元データのデコード処理について説明する。これら復元データのデコード処理は、いずれも図22のような流れで行われる。
まず、S706の処理によって記憶されている第1配列データのデータ端暗色領域BR1の幅W6及びそのデータ端暗色領域BR1の終端側に隣接する明色領域WH8の幅W7(図26(A)参照)を読み出すとともに、S714の処理によって記憶されている第2配列データの最終の暗色領域BR3の幅W10及びその最終の暗色領域BR3の始端側に隣接する明色領域WH9の幅W11(図26(B)参照)を読み出す。そして、W10、W11の幅比率(即ち、第2暗色領域と第2明色領域との幅比率)に基づいて、第1配列データにおける幅W6、W7の幅比率(即ち、第1暗色領域と第1明色領域との幅比率)を、図26(C)に示すような正規の幅比率に復元する。なお、第2配列データの最終の暗色領域BR3のパターンが「第2配列データの最終の暗色端部パターン」に相当する。また、第1配列データのデータ端暗色領域BR1についての正規のパターンが「第1配列データの最初に配置されるべき正規の暗色端部パターン」に相当する。
【0126】
図21のS817で判定される場合、図26(A)に示すデータ端暗色領域BR1よりも後の明色領域及び暗色領域は正しいと考えられるため、データ端暗色領域BR1に隣接する明色領域WH8も正しいと考えることができる。この明色領域WH8は、図26(B)に示す第2配列データにおける最終の暗色領域BR3の始端側に隣接する明色領域WH9と同一の明色パターンを反映するものである。従って、W7/W6’(第1暗色領域と第1明色領域との幅比率)=W11/W10(第2暗色領域と第2明色領域との幅比率)となるような値W6’を求め、データ端暗色領域の幅がこの値W6’となるように第1配列データを再生成することでマージン対応領域の誤りが精度高く復元されることとなる(図26(C)参照)。なお、図26(C)は、復元後の第1配列データを示すものであり、図26(A)のデータ端暗色領域BR1を変換した後のデータ端暗色領域をBR1’にて示しており、そのデータ端暗色領域BR1’よりも始端側の領域を全て明色領域とするように変換している。
【0127】
なお、本実施形態では、制御部407が「復元手段」の一例に相当し、マージン対応領域の誤りを修正し、マージン対応領域を復元するように配列データを再生成する機能を有している。具体的には、第2配列データに基づいて第1配列データにおけるマージン対応領域の誤りを修正し、当該マージン対応領域を復元するように第1配列データを再生成している。
【0128】
また、制御部407は、「正規パターン推定手段」の一例に相当し、第2配列データの最終の暗色領域BR3のパターン(暗色端部パターン)に基づき、第1配列データの最初に配置されるべき正規の暗色端部パターン(データ端暗色領域の正規のパターン)を推定するように機能する。復元手段として機能する制御部7は、誤りが検出されたマージン対応領域の誤った暗色領域(図26(A)ではデータ端暗色領域BR1)を、その推定される正規の暗色端部パターン及び暗色端部パターンの外側に配される明色パターンに置換することでマージン対応領域を復元し、第1配列データを再生成するように機能している。
【0129】
その後、S901にて再生成された復元後の第1配列データを用いて公知のデコードを行う(S902)。復元後の第1配列データについてデコードが成功した場合にはS903にてYesに進み、デコード成功の旨を記録する(S908)。なお、この記録と共にデコード結果の出力処理も行われる。
【0130】
一方、S901にて復元された第1配列データについてデコードが失敗した場合にはS903にてNoに進み、第2配列データの復元処理を行う。本実施形態では、「誤り検出手段」「復元手段」として機能する制御部407により、1配列データの場合と同様に、第2配列データの始端側のマージン対応領域に暗色領域が含まれる誤りを検出するように構成されており、さらに、第1配列データの復元と同様に、第2配列データについても、第1配列データに基づいてマージン対応領域の誤りを修正し、当該マージン対応領域を復元するように第2配列データを再生成している。そして、S902において再生成された第1配列データのデコードが失敗した場合には、この再生成された第2配列データをデコードするように構成されている。
【0131】
具体的には、S901と同様の方法で復元が行われる。即ち、S715の処理によって記憶されている第2配列データのデータ端暗色領域BR4の幅W12及びそのデータ端暗色領域BR4の終端側に隣接する明色領域WH11の幅W13(図26(B)参照)を読み出すとともに、S705の処理によって記憶されている第1配列データの最終の暗色領域BR6の幅W8及びその最終の暗色領域BR6の始端側に隣接する明色領域WH12の幅W9(図26(A)参照)を読み出す。そして、W8、W9の幅比率に基づいて、第2配列データにおける幅W12、W13の幅比率を、図26(D)に示すような正規の幅比率に復元する。
【0132】
S904の処理では、W13/W12’=W9/W8となるような値W12’を求め、データ端暗色領域の幅がこの値W12’となるようにマージン対応領域の誤りを復元し、第2配列データを再生成する(図26(D)参照)。なお、図26(D)は、復元後の第2配列データを示すものであり、図26(B)のデータ端暗色領域BR4を変換した後のデータ端暗色領域をBR4’にて示しており、そのデータ端暗色領域BR4’よりも始端側の領域を全て明色領域とするように変換している。
【0133】
その後、S904にて復元された第2配列データを用いて公知のデコードを行い(S905)、デコードが成功した場合にはS906にてYesに進み、デコード成功を記録すると共にデコード結果を出力する(S908)。第2配列データのデコードも失敗した場合にはS906にてNoに進み、デコード失敗を記録して(S907)当該復元データのデコード処理を終了する。
【0134】
図22で示した復元データのデコード処理が図20のS708である場合、図20のS709において、デコードが成功したか否かを判断する。デコードが成功した場合にはS709にてYesに進み、当該処理を終了する。デコードが失敗した場合にはS709にてNoに進み、S710以降の処理を続けることとなる。同様に、S717にて復元データのデコード処理が終了した場合、そのS717にてデコードが成功したか否かを判断する(S718)。デコードが成功した場合にはS718にてYesに進み、当該処理を終了する。デコードが失敗した場合にはS718にてNoに進み、S701以降の処理を続けることとなる。
【0135】
以上説明した本実施形態の構成によれば、以下のような効果を奏する。
本実施形態の光学的情報読取装置(バーコードリーダ400)では、照明光(レーザ光L1)が一方向に走査されたときの信号波形に基づいて第1配列データ(図26(A)等)を生成し、少なくともこの第1配列データをデコードする構成をなしている。このようにすれば、照明光の走査に基づいてデコード処理を適切に行うことができる。また、照明光が他方向に走査されたときの信号波形に基づいて第2配列データ(図26(B)等)を生成する構成をなしており、第1配列データの始端側のマージン対応領域に暗色領域が含まれる誤りが検出されたとき、第2配列データに基づいて第1配列データにおけるマージン対応領域の誤りを修正し、当該マージン対応領域を復元するように第1配列データを再生成する構成をなしている。このようにすると、仮に一方向の走査によって得られた配列データ(第1配列データ)においてマージン対応領域に誤りが生じたとしても、この誤りを他方向の走査によって得られた第2配列データに基づいて適切に修正でき、ひいては第1配列データのデコードを精度高く行うことができる。
【0136】
また、本実施形態では、図26(B)に示す第2配列データの最終の暗色端部パターンに基づき、図26(A)に示す第1配列データの最初に配置されるべき正規の暗色端部パターンを推定している。第2配列データの最終の暗色端部パターンは、第1配列データの最初に配置されるべき正規の暗色端部パターンに対応するものであり、当該正規の暗色端部パターンを示している可能性が高い。従って、第2配列データの最終の暗色パターンに着目すれば正規の暗色端部パターンを精度高く推定できる。さらに、誤りが検出されたマージン対応領域の誤った暗色領域をその推定される正規の暗色端部パターン及び当該暗色端部パターンの外側に配される明色パターンに置換する構成とすれば、第1配列データに生じた誤りを適切に解消でき、その結果、第1配列データのデコードをより正確に行うことができるようになる。
【0137】
また、第1配列データの終端から始端側のマージン対応領域に至るまでの暗色領域及び明色領域に基づいてバーコードB(情報コード)の種別を特定するように構成されている。このようにバーコードBの種別を特定すれば、コード種別に基づいて始端側のマージン対応領域の正規の構成を把握できるようになり、その結果、第1配列データの始端側のマージン対応領域に暗色領域が含まれる誤りを精度高く検出できるようになる。
【0138】
また、第1配列データの始端側においてマージン対応領域と情報領域とに跨って配置される誤った第1暗色領域(図26(A)の暗色領域BR1)の幅情報と、第1暗色領域の終端側に隣接する第1明色領域(図26(A)の明色領域WH8)の幅情報と、をそれぞれ記憶している。そして、第2配列データの最終の明色領域(図26(B)の明色領域WH10)の隣に位置する第2暗色領域(図26(B)の暗色領域BR3)の幅情報と、第2暗色領域の始端側に隣接する第2明色領域(図26(B)の明色領域WH9)の幅情報と、の幅比率に基づいて、第1配列データにおける第1暗色領域と第1明色領域との幅比率を、正規の幅比率に復元している。このようにすれば、第2配列データの終端側の部分が第1配列データの始端側のどの位置に相当するかを幅情報(特に明色領域の幅情報)を基準として適切に対応付けることができ、復元の正確性を一層高めることができる。
【0139】
また、復元手段により再生成された第1配列データをデコードし、その再生成された第1配列データのデコードが失敗した場合には、復元手段により再生成された第2配列データをデコードするように構成されている。このようにすれば、仮に第1配列データの復元・デコードが失敗したとしても、第2配列データを用いてデコードできるため、デコードの成功確率が格段に高まる。また、その第2配列データの始端側のマージン対応領域に暗色領域が含まれる誤りが存在しても、第1配列データを用いて復元処理を行った上でデコード処理が行われるようになっており、効率的な復元処理、精度高いデコード処理が可能となる。
【0140】
[第5実施形態]
次に、第5実施形態について説明する。図27は、第5実施形態のバーコードリーダにおける読取処理の流れを例示するフローチャートである。図28は、図27の読取処理における復元処理の一例を示すフローチャートである。図29(A)は第1配列データを例示する説明図であり、(B)は第2配列データを例示する説明図である。図29(C)は第1配列データの復元を説明する説明図であり、(D)は第2配列データの復元を説明する説明図である。また、図30は、第1配列データと第2配列データの対応関係を記憶する工程を説明する説明図である。なお、本実施形態は、読取処理のみが第4実施形態と異なり、図18、図19に示す構成は第4実施形態と同一である。よって異なる部分について重点的に説明することとし、同様の構成については適宜図18、図19を参照して説明する。
【0141】
本実施形態に係るバーコードリーダ400も、基本的に第4実施形態と同様の構成をなしており、図18のようにバーコードB(明色パターンと暗色パターンとからなる情報領域を有すると共に、端部に明色パターンとして認識されるべきマージンMが設けられた情報コード)を読み取り可能に構成され、受光センサ404(受光手段)により、バーコードBの各パターンごとに反射光の強度に応じた受光信号を出力する構成をなしている。また、図19に示す二値化処理部410(二値化手段)により、受光センサ404により出力される受光信号の信号波形を閾値と比較すると共に、その比較に基づいて信号波形を明色領域と暗色領域とに区分けしており、さらに、二値化処理部410によって区分けされた明色領域及び暗色領域の配列データをデコード部408(デコード手段)によりデコードする構成をなしている。
【0142】
また、本実施形態でも図18、図19に示すレーザ光源402が、「光源」の一例に相当し、指向性を有する照明光(レーザ光L1)を出射する。また、揺動装置405が、「揺動手段」の一例に相当し、光源から出射される照明光(レーザ光L1)を揺動させるように機能する。また、これらレーザ光源402及び揺動装置405が「投光手段」の一例に相当し、照明光(レーザ光L1)を二方向(走査線Tに沿った往復方向)に走査するように機能する。
【0143】
次に、本実施形態の特徴的構成について説明する。
本実施形態の読取処理では、まず第4実施形態と同様の第1配列データ取得処理が行われる(S1001)。S1001の処理は、図20のS701と同一なので詳細は省略する。次いで、他方向の明暗配列データ(第2配列データ)について既にマージン対応領域の誤りが検出されているかを判断する。後述する、S1014において第2配列データのマージン対応領域に誤りがあると判断されている場合にはS1002にてYesに進み、後述の復元処理が行われる(S1003)。第2配列データのマージン対応領域に誤りが検出されていない場合にはS1002にてNoに進み、第1配列データのデコード処理を行う(S1004)。なお、このデコード処理は、公知のデコード処理であってもよく、第4実施形態の図21に示す処理と同様の処理であってもよい。
【0144】
S1004のデコード処理において第1配列データのデコードが成功した場合には、S1005にてYesに進み当該処理を終了する。デコードが失敗した場合にはS1005にてNoに進み、第1配列データのマージン対応領域において誤りが検出されるかを判断する。マージン対応領域の誤りが検出される場合にはS1006にてYesに進み、そうでない場合にはNoに進む。なお、S1004において第4実施形態と同様のデコード処理を行う場合には、図21のS817においてマージン対応領域の誤りありと判定されたか否かによってマージン対応領域の誤りを判断できる。S1004において公知のデコード処理を行う場合には、第1〜第3実施形態のような各種誤り検出処理(図4等)を行うことでマージン対応領域の誤りを判断できる。
【0145】
S1006にてYesに進む場合には、図29(A)に示すように、第1配列データにおけるマージン対応領域の誤った暗色領域(即ち、データ端暗色領域BR1)までに位置する明色領域及び暗色領域の幅の総和W21を算出し、格納部406に記録する(S1007)。また、第1配列データにおける最終の明色領域WH13の手前(即ち最後の暗色領域BR6)までに位置する暗色領域及び明色領域の幅の総和W22を算出し、格納部406に記録する(S1008)。なお、本実施形態では、制御部407が「記録手段」の一例に相当し、第2配列データの始端位置P4から最終の暗色領域BR3までの明色領域及び暗色領域の幅値の総和W24を位置情報として記録するように機能する。
【0146】
その後、第2配列データを取得する処理を行う(S1009)。この第2配列データ取得処理は、第4実施形態のS710(図20)と同様である。そして、一方向の明暗配列データ(第1配列データ)でマージン対応領域の誤りが検出されているかを判断する(S1010)。S1006の処理において第1配列データのマージン対応領域に誤りありと判断されている場合、S1010にてYesに進み、後述の復元処理を行う(S1011)。第1配列データにおいてマージン対応領域の誤りが検出されていない場合にはS1010にてNoに進み、第2配列データについてのデコード処理を行う(S1012)。このデコード処理も公知のデコード処理であってもよく、第4実施形態の図21と同様であってもよい。第2配列データのデコード処理(S1012)においてデコードが成功した場合にはS1013にてYesに進み当該処理を終了する。第2配列データのデコード処理(S1012)においてデコードが失敗した場合にはS1013にてNoに進み、第2配列データのマージン対応領域において誤りが検出されるかを判断する。第2配列データのマージン対応領域に誤りが検出される場合にはS1014にてYesに進み、そうでない場合にはNoに進む。なお、S1012において第4実施形態と同様のデコード処理を行う場合には、図21のS817においてマージン対応領域の誤りありと判定されたか否かによってマージン対応領域の誤りを判断できる。また、S1012において公知のデコード処理を行う場合には、第1〜第3実施形態のような各種誤り検出処理(図4等)を行うことでマージン対応領域の誤りを判断できる。
【0147】
S1014にてYesに進む場合には、図29(B)に示すように、第2配列データにおけるマージン対応領域の誤った暗色領域(即ち、データ端暗色領域BR4)までに位置する明色領域及び暗色領域の幅の総和W23を算出し、格納部406に記録する(S1015)。また、第2配列データにおける最終の明色領域WH10の手前(即ち最後の暗色領域BR3)までに位置する暗色領域及び明色領域の幅の総和W24を算出し、格納部406に記録する(S1016)。
【0148】
なお、本実施形態でも二値化処理部410が、第1二値化手段、第2二値化手段として第4実施形態と同様に機能する。また、本実施形態でも制御部407が「誤り検出手段」の一例に相当し、配列データにおけるマージンとして認識されるべきマージン対応領域に暗色領域が含まれる誤りを検出するように機能する。また、制御部407は、「復元手段」の一例に相当し、マージン対応領域の誤りを修正し、マージン対応領域を復元するように配列データを再生成するように機能する。また、本実施形態に係るバーコードリーダ400でも、上記「誤り検出手段」によってマージン対応領域の誤りが検出された場合、上記「復元手段」によりマージン対応領域を復元し、その再生成後の配列データをデコード部408(デコード手段)によってデコードするように構成されている。
【0149】
次に、S1003、S1011の復元処理について説明する。なお、いずれの処理も図28に示すフローチャートの流れで行われる。復元処理が開始されると、まず、第1配列データ、第2配列データのいずれを復元するかを判断する。第1配列データを復元する場合(即ち、S1003の場合)にはS1101にてYesに進む。逆に、第2配列データを復元する場合(即ち、S1011の場合)にはS1101にてNoに進む。
【0150】
第1配列データについて復元する場合、まず、格納部406から位置P6(第2配列データにおける最後の暗色領域BR3と最後の明色領域WH10の境界位置)の情報を読み出すと共に、第1配列データにおける位置P6に対応する位置P6’を算出する。即ち、本実施形態では、第1配列データと第2配列データとを位置的に対応付ける対応情報が格納部406に記録されており、この対応情報に基づいて位置P6’を算出するようにしている。具体的には、第1配列データにおける第2配列データの先頭位置P4に対応する位置P4’の情報、および第2配列データにおける第1配列データの先頭位置P1に対応する位置P1’の情報が格納部406に記録されており、位置P4’の情報を読み出せば、この位置P4’の情報とW24の情報により対応位置P6’が特定されることとなる。S1102では、この位置P6’を跨いで配置される暗色領域(図29(A)ではデータ端暗色領域BR1)が誤った暗色領域として特定される。なお、格納部406は、「対応情報記憶手段」の一例に相当し、第2配列データの所定位置が第1配列データのどの位置に対応するかを特定する対応情報を記憶するように機能する。
【0151】
このように、位置情報(位置P6の情報)と対応情報(先頭位置P4と位置P4’とを対応付ける情報)とに基づいて第1配列データの誤った暗色領域BR1の位置を特定した後、S1103において復元を行う。S1103では、第2配列データの最終の暗色領域BR3のパターンに基づいて第1配列データのマージン対応領域の誤りを修正し、図29(C)のように第1配列データを再生成する。S1103の具体的な復元方法は、図22のS901と同様である。
【0152】
一方、図28の処理が第2配列データを復元するものである場合、S1101にてNoに進み、格納部406から位置P3(第1配列データにおける最後の暗色領域BR6と最後の明色領域WH13の境界位置)の情報を読み出すと共に、第2配列データにおける位置P3に対応する位置P3’を算出する。なお、本実施形態では、対応情報として、第2配列データにおける第1配列データの先頭位置P1に対応する位置P1’の情報が格納部406に記録されているため、位置P1’の情報を読み出せば、この位置P1’の情報とW22の情報により対応位置P3’が特定されることとなる。S1104では、この位置P3’を跨いで配置される暗色領域(図29(B)ではデータ端暗色領域BR4)が誤った暗色領域として特定される。
【0153】
このように、位置P3の情報と対応情報(先頭位置P1と位置P1’とを対応付ける情報)とに基づいて第2配列データの誤った暗色領域BR4の位置を特定した後、S1105において復元を行う。S1105では、第1配列データの最終の暗色領域BR6のパターンに基づいて第2配列データのマージン対応領域の誤りを修正し、図29(D)のように第2配列データを再生成する。S1105の具体的な復元方法は、図22のS904と同様である。
【0154】
本実施形態の対応情報は例えば以下のように生成され記憶される。図30は、製品出荷前における対応情報記録工程を説明するものである。本実施形態では、第1の測定対象R1に対して投光手段により照明光が一方向に走査されたときの第1の測定結果と、第2の測定対象R2に対して照明光が他方向に走査されたときの第2の測定結果と、を記録するようにしている。なお、制御部407が「測定結果記録手段」の一例に相当し、第1の測定結果及び第2の測定結果を格納部406に記録するように機能する。格納部406は、第1の測定結果と第2の測定結果とを対応情報として記憶するように構成されており、復元手段として機能する制御部407は、第1の測定結果と第2の測定結果とに基づいて第1配列データと第2配列データとを位置的に対応付けるように構成されている。
【0155】
例えば、所定の図形が描かれた対象R1及びバーコードリーダ400を所定の位置関係を固定した上で第1配列データを取得した場合、第1配列データにおける先頭から位置Paまでの距離W30(第1の測定結果)が判明する。さらに、対象R1とは左右対称の図形が描かれた対象R2を上記所定の位置関係(即ち、第1配列データを取得するときの対象R1及びバーコードリーダ400の位置関係と同一の位置関係)とした上で第2配列データを取得した場合、第2配列データにおける先頭から位置Pa’までの距離W31(第2の測定結果)を得ることができる。これら距離W30,W31が判明すれば、同位置に維持されるバーコードについて第1配列データ及び第2配列データを取得した場合に第2配列データの先頭位置が第1配列データのどの位置に対応するか特定でき、逆に、第1配列データの先頭位置が第2配列データのどの位置に対応するか特定できるようになる。
【0156】
以上説明した本実施形態の構成によれば以下のような効果を奏する。
本実施形態では、第2配列データの始端位置から最終の前記暗色領域までの明色領域及び暗色領域の幅値の総和W24と、対応情報とに基づいて第1配列データの誤った暗色領域の位置を特定するようにしている。このようにすれば、誤った暗色領域を迅速且つ的確に特定でき、第2配列データの最終の暗色領域のパターンに基づいて第1配列データのマージン対応領域の誤りを適切に修正できる。
【0157】
また、第1の測定対象に対して投光手段により照明光が一方向に走査されたときの第1の測定結果と、第2の測定対象に対して照明光が他方向に走査されたときの第2の測定結果と、を記録し、復元処理を行う際に、第1の測定結果と第2の測定結果とに基づいて第1配列データと第2配列データとを位置的に対応付けるようにしている。このように予め測定された第1の測定結果及び第2の測定結果に基づき、復元処理において第1配列データと第2配列データとを対応付けるようにすれば、第2配列データを利用しての第1配列データの復元を精度高くスムーズに行うことができる。
【0158】
[他の実施形態]
本発明は上記記述及び図面によって説明した実施形態に限定されるものではなく、例えば次のような実施形態も本発明の技術的範囲に含まれる。
【0159】
第3実施形態では、第1実施形態の一部処理を変更した構成(復元処理のみを第1実施形態と異ならせた構成)を例示したが、第2実施形態の復元処理を第3実施形態のようにしてもよい。
【0160】
第1実施形態では、閾値を設定変更する誤り検出処理を用い、かつこの誤り検出処理によって検出された、誤った黒色領域を、図8等に示す方法によって復元していたが、このような復元処理に代え、図7(B)のように閾値の設定変更によって複数の黒色領域に分割された場合、その分割された外側の黒色領域(例えば図7(B)のY0)を白色領域に置換するような復元処理を用いてもよい。
【図面の簡単な説明】
【0161】
【図1】図1は、本発明の第1実施形態に係るバーコードリーダの電気的構成を概略的に例示するブロック図である。
【図2】図2は、読取対象のバーコードを例示する説明図である。
【図3】図3は、読取処理の流れを例示するフローチャートである。
【図4】図4は、図3の読取処理の一部を構成する誤り検出処理を例示するフローチャートである。
【図5】図5は、受光信号の信号波形と閾値との関係を例示する説明図である。
【図6】図6(A)は、図5の閾値のときの配列データの構成を概念的に示す説明図であり、図6(B)は復元後の配列データの構成を概念的に示す説明図である。
【図7】図7(A)は、閾値を設定変更したときの閾値と信号波形との関係を示す説明図であり、図7(B)はそのときの配列データの構成を概念的に示す説明図である。
【図8】図8は、図3の読取処理の一部を構成する復元処理を例示するフローチャートである。
【図9】図9は、図8の復元処理の一部を構成する種別特定処理を例示するフローチャートである。
【図10】図10は、図9の種別特定処理の一部を構成する個別判断処理の一例を示すフローチャートである。
【図11】図11(A)は、CODE39のバーコード構成を説明する説明図であり、図11(B)は、CODE39のバーコードに関し、マージン対応領域に誤りが生じた配列データを概念的に示すものである。図11(C)は、図11(B)とは異なるタイプの誤りが生じた配列データを概念的に示すものである。
【図12】図12は、図10とは異なる個別判断処理を例示するフローチャートである。
【図13】図13は、本発明の第2実施形態に係るバーコードリーダにて行われる誤り検出処理を例示するフローチャートである。
【図14】図14は、本発明の第3実施形態に係るバーコードリーダにて行われる復元処理を例示するフローチャートである。
【図15】図15は、度数分布情報を概念的に例示するものであり、配列データに含まれる複数の黒色領域について、幅値毎の度数を表したグラフ(ヒストグラム)である。
【図16】図16は、S610の推定処理に用いる配列データを概念的に説明する説明図である。
【図17】図17は、従来例を説明する説明図である。
【図18】図18は、本発明の第4実施形態に係るバーコードリーダを概略的に例示する説明図である。
【図19】図19は、図18のバーコードリーダの電気的構成を概略的に例示するブロック図である。
【図20】図20は、図18のバーコードリーダにおける読取処理の流れを例示するフローチャートである。
【図21】図21は、図20の読取処理におけるデコード処理を例示するフローチャートである。
【図22】図22は、復元データのデコード処理を例示するフローチャートである。
【図23】図23(A)は、正常な配列データを例示する説明図であり、(B)(C)は、配列データにおけるマージンとして認識されるべき領域(マージン対応領域)に暗色領域が含まれた例を示す説明図である。また、(D)は、(C)のデータの明色領域を拡張した後の第1配列データを例示するものである。
【図24】図24は、デコードが成功した配列データを例示する説明図であり、(A)はマージン対応領域が正常である例を示すものであり、(B)はマージン対応領域に暗色領域が含まれた例を示すものである。(C)は、(B)のデータの明色領域を拡張した後の第1配列データを例示するものである。
【図25】図25(A)(B)は、デコードが失敗した配列データを例示する説明図であり、(A)は、データ端暗色領域が異常である場合を示すものであり、(B)は、マージン対応領域が異常である場合を示すものである。(C)は、(B)のデータの明色領域を拡張した後の第1配列データを例示するものである。
【図26】図26は、配列データの復元を説明する説明図である。
【図27】図27は、第5実施形態のバーコードリーダにおける読取処理の流れを例示するフローチャートである。
【図28】図28は、図27の読取処理における復元処理の一例を示すフローチャートである。
【図29】図29(A)は第1配列データを例示する説明図であり、(B)は第2配列データを例示する説明図である。(C)は第1配列データの復元を説明する説明図であり、(D)は第2配列データの復元を説明する説明図である。
【図30】図30は、第1配列データと第2配列データの対応関係を記憶する工程を説明する説明図である。
【符号の説明】
【0162】
10、400…バーコードリーダ(光学的情報読取装置)
28、404…受光センサ(受光手段)
40…制御回路(第1〜第3実施形態における、二値化手段、デコード手段、誤り検出手段、復元手段、設定変更手段、変化判断手段、度数分布情報生成手段、境界パターン推定手段、種別特定手段、暗色最大幅検出手段、明色最大幅検出手段、比較手段)
402…レーザ光源(投光手段)
405…揺動装置(投光手段、揺動手段)
406…格納部(対応情報記憶手段)
407…制御部(第4又は第5実施形態の、誤り検出手段、復元手段、第1幅情報記憶手段、第2幅情報記憶手段、正規パターン推定手段、種別特定手段、測定結果記録手段)
408…デコード部(第4又は第5実施形態のデコード手段)
411…二値化処理部(第4又は第5実施形態の二値化手段、第1二値化手段、第2二値化手段)
P1…黒色パターン(暗色パターン)
P2…白色パターン(明色パターン)
M…マージン
【特許請求の範囲】
【請求項1】
明色パターンと暗色パターンとからなる情報領域を有すると共に、端部に明色パターンとして認識されるべきマージンが設けられた情報コードを読み取り可能な光学的情報読取装置であって、
前記情報コードからの反射光を受光し、前記情報コードの各パターンごとに前記反射光の強度に応じた受光信号を出力する受光手段と、
前記受光手段により出力される前記受光信号の信号波形を閾値と比較すると共に、その比較に基づいて前記信号波形を明色領域と暗色領域とに区分けする二値化手段と、
前記二値化手段により区分けされた前記明色領域及び前記暗色領域の配列データをデコードするデコード手段と、
を備え、
前記配列データにおける前記マージンとして認識されるべきマージン対応領域に前記暗色領域が含まれる誤りを検出する誤り検出手段と、
前記マージン対応領域の前記誤りを修正し、前記マージン対応領域を復元するように前記配列データを再生成する復元手段と、
を有し、
前記誤り検出手段により前記マージン対応領域の前記誤りが検出された場合、前記復元手段により前記マージン対応領域を復元し、その再生成後の前記配列データを前記デコード手段によってデコードすることを特徴とする光学的情報読取装置。
【請求項2】
前記誤り検出手段は、
前記閾値を設定変更する設定変更手段と、
前記設定変更手段により前記閾値が設定変更された場合に、前記二値化手段によって抽出される前記暗色領域の幅の変化が基準を超えるか否かを判断する変化判断手段と、
を有し、
前記設定変更手段により前記閾値を設定変更すると共に、
その設定変更前後において、前記二値化手段により前記暗色領域を抽出し、
前記変化判断手段により、設定変更前後の前記暗色領域の幅変化が前記基準を超えると判断された場合に、前記マージン対応領域に誤りが生じたことを検出することを特徴とする請求項1に記載の光学的情報読取装置。
【請求項3】
前記誤り検出手段は、
前記二値化手段によって抽出される複数の前記暗色領域の最大幅を検出する暗色最大幅検出手段と、
前記二値化手段によって抽出される複数の前記明色領域の最大幅を検出する明色最大幅検出手段と、
前記明色領域の最大幅の、前記暗色領域の最大幅に対する比が基準値未満であるか否かを判断する比較手段と、
を備え、
前記比較手段により、前記比が前記基準値未満であると判断された場合に、前記マージン対応領域に誤りが生じたことを検出することを特徴とする請求項1記載の光学的情報読取装置。
【請求項4】
読取対象となる前記情報コードの種別を特定する種別特定手段と、
前記種別特定手段によって特定された種別に基づいて、前記基準値を設定する基準値設定手段と、
を備え、
前記比較手段は、前記比が前記基準値設定手段にて設定された前記基準値未満であるか否かを判断することを特徴とする請求項3に記載の光学的情報読取装置。
【請求項5】
前記復元手段は、
前記暗色領域及び前記明色領域の少なくともいずれか一方の幅値を集計し、幅値毎の度数分布情報を生成する度数分布情報生成手段と、
前記度数分布情報生成手段にて生成される前記度数分布情報に基づいて、前記マージンと前記情報領域との境界部に設けられる暗色の境界パターンを推定する境界パターン推定手段と、
を備え、
前記誤り検出手段によって誤りが検出された前記マージン対応領域の誤った前記暗色領域を、前記境界パターン推定手段により推定される前記境界パターン及び前記境界パターンの外側に配される明色パターンに置換することで前記マージン対応領域を復元し、前記配列データを再生成することを特徴とする請求項1から請求項4のいずれか一項に記載の光学的情報読取装置。
【請求項6】
前記復元手段は、
読取対象となる前記情報コードの種別を特定する種別特定手段と、
前記種別特定手段により特定される種別に基づいて、前記マージンと前記情報領域との境界部に設けられる暗色の境界パターンを推定する境界パターン推定手段と、
を備え、
前記誤り検出手段によって誤りが検出された前記マージン対応領域の誤った前記暗色領域を、前記境界パターン推定手段により推定される前記境界パターン及び前記境界パターンの外側に配される明色パターンに置換することで前記マージン対応領域を復元し、前記配列データを再生成することを特徴とする請求項1から請求項4のいずれか一項に記載の光学的情報読取装置。
【請求項7】
前記種別特定手段は、前記誤り検出手段により誤りが検出された前記マージン対応領域以外の前記暗色領域及び前記明色領域に基づいて前記情報コードの前記種別を特定することを特徴とする請求項6に記載の光学的情報読取装置。
【請求項8】
指向性を有する照明光を出射する光源と、前記光源から出射される前記照明光を揺動させる揺動手段とを備え、前記揺動手段により前記照明光を二方向に走査可能な投光手段を有し、
前記二値化手段は、
前記投光手段により前記照明光が一方向に走査されたときに、前記受光手段の前記受光信号により得られる前記信号波形を明色領域と暗色領域とに区分けして第1配列データを生成する第1二値化手段と、
前記投光手段により前記照明光が前記一方向とは逆の他方向に走査されたときに、前記受光手段の前記受光信号により得られる前記信号波形を明色領域と暗色領域とに区分けして第2配列データを生成する第2二値化手段と、
を備え、
前記デコード手段は、少なくとも前記第1配列データを前記配列データとしてデコードする構成をなし、
前記誤り検出手段は、前記第1配列データにおける始端側の前記マージン対応領域に前記暗色領域が含まれる誤りを検出する構成をなし、
前記復元手段は、前記第2配列データに基づいて前記第1配列データにおける前記マージン対応領域の前記誤りを修正し、当該マージン対応領域を復元するように前記第1配列データを再生成することを特徴とする請求項1に記載の光学的情報読取装置。
【請求項9】
前記復元手段は、
前記第2配列データの最終の暗色端部パターンに基づき、前記第1配列データの最初に配置されるべき正規の暗色端部パターンを推定する正規パターン推定手段を備え、
前記誤り検出手段によって誤りが検出された前記マージン対応領域の誤った前記暗色領域を、前記正規パターン推定手段により推定される正規の前記暗色端部パターン及び前記暗色端部パターンの外側に配される明色パターンに置換することで前記マージン対応領域を復元し、前記第1配列データを再生成することを特徴とする請求項8に記載の光学的情報読取装置。
【請求項10】
前記誤り検出手段は、
前記第1配列データの終端側から始端側へ向けて前記マージン対応領域に至るまでの前記暗色領域及び前記明色領域に基づいて前記情報コードの種別を特定する種別特定手段を備え、
前記種別特定手段によって特定される前記情報コードの種別に基づいて、前記第1配列データにおける始端側の前記マージン対応領域に前記暗色領域が含まれる誤りを検出することを特徴とする請求項8又は請求項9に記載の光学的情報読取装置。
【請求項11】
前記復元手段は、
前記第1配列データの始端側において前記マージン対応領域と前記情報領域とに跨って配置される誤った第1暗色領域の幅情報と、前記第1暗色領域の終端側に隣接する第1明色領域の幅情報と、をそれぞれ記憶する第1幅情報記憶手段と、
前記第2配列データの最終の前記明色領域の隣に位置する第2暗色領域の幅情報と、前記第2暗色領域の始端側に隣接する第2明色領域の幅情報と、をそれぞれ記憶する第2幅情報記憶手段と、
を備え、
前記第2暗色領域と前記第2明色領域との幅比率に基づいて、前記第1配列データにおける前記第1暗色領域と前記第1明色領域との幅比率を、正規の幅比率に復元することを特徴とする請求項8から請求項10のいずれか一項に記載の光学的情報読取装置。
【請求項12】
前記誤り検出手段は、前記第2配列データの始端側の前記マージン対応領域に前記暗色領域が含まれる誤りを検出する構成をなし、
前記復元手段は、前記第1配列データに基づいて前記第2配列データにおける前記マージン対応領域の前記誤りを修正し、当該マージン対応領域を復元するように前記第2配列データを再生成する構成をなしており、
前記デコード手段は、前記復元手段により再生成された前記第1配列データをデコードし、その再生成された前記第1配列データのデコードが失敗した場合には、前記復元手段により再生成された前記第2配列データをデコードすることを特徴とする請求項8から請求項11のいずれか一項に記載の光学的情報読取装置。
【請求項13】
前記第2配列データの所定位置が前記第1配列データのどの位置に対応するかを特定する対応情報を記憶する対応情報記憶手段を備え、
前記復元手段は、前記第2配列データの始端位置から最終の前記暗色領域までの前記明色領域及び前記暗色領域の幅値の総和を位置情報として記録する記録手段を備えると共に、前記位置情報と前記対応情報とに基づいて前記第1配列データの誤った前記暗色領域の位置を特定し、前記第2配列データの最終の前記暗色領域のパターンに基づいて前記第1配列データの前記マージン対応領域の前記誤りを修正し、前記第1配列データを再生成することを特徴とする請求項8から請求項12のいずれか一項に記載の光学的情報読取装置。
【請求項14】
第1の測定対象に対して前記投光手段により前記照明光が一方向に走査されたときの第1の測定結果と、第2の測定対象に対して前記照明光が他方向に走査されたときの第2の測定結果と、を記録する測定結果記録手段を備え、
前記対応情報記憶手段は、前記第1の測定結果と前記第2の測定結果とを前記対応情報として記憶し、
前記復元手段は、前記第1の測定結果と前記第2の測定結果とに基づいて前記第1配列データと前記第2配列データとを位置的に対応付けることを特徴とする請求項13に記載の光学的情報読取装置。
【請求項1】
明色パターンと暗色パターンとからなる情報領域を有すると共に、端部に明色パターンとして認識されるべきマージンが設けられた情報コードを読み取り可能な光学的情報読取装置であって、
前記情報コードからの反射光を受光し、前記情報コードの各パターンごとに前記反射光の強度に応じた受光信号を出力する受光手段と、
前記受光手段により出力される前記受光信号の信号波形を閾値と比較すると共に、その比較に基づいて前記信号波形を明色領域と暗色領域とに区分けする二値化手段と、
前記二値化手段により区分けされた前記明色領域及び前記暗色領域の配列データをデコードするデコード手段と、
を備え、
前記配列データにおける前記マージンとして認識されるべきマージン対応領域に前記暗色領域が含まれる誤りを検出する誤り検出手段と、
前記マージン対応領域の前記誤りを修正し、前記マージン対応領域を復元するように前記配列データを再生成する復元手段と、
を有し、
前記誤り検出手段により前記マージン対応領域の前記誤りが検出された場合、前記復元手段により前記マージン対応領域を復元し、その再生成後の前記配列データを前記デコード手段によってデコードすることを特徴とする光学的情報読取装置。
【請求項2】
前記誤り検出手段は、
前記閾値を設定変更する設定変更手段と、
前記設定変更手段により前記閾値が設定変更された場合に、前記二値化手段によって抽出される前記暗色領域の幅の変化が基準を超えるか否かを判断する変化判断手段と、
を有し、
前記設定変更手段により前記閾値を設定変更すると共に、
その設定変更前後において、前記二値化手段により前記暗色領域を抽出し、
前記変化判断手段により、設定変更前後の前記暗色領域の幅変化が前記基準を超えると判断された場合に、前記マージン対応領域に誤りが生じたことを検出することを特徴とする請求項1に記載の光学的情報読取装置。
【請求項3】
前記誤り検出手段は、
前記二値化手段によって抽出される複数の前記暗色領域の最大幅を検出する暗色最大幅検出手段と、
前記二値化手段によって抽出される複数の前記明色領域の最大幅を検出する明色最大幅検出手段と、
前記明色領域の最大幅の、前記暗色領域の最大幅に対する比が基準値未満であるか否かを判断する比較手段と、
を備え、
前記比較手段により、前記比が前記基準値未満であると判断された場合に、前記マージン対応領域に誤りが生じたことを検出することを特徴とする請求項1記載の光学的情報読取装置。
【請求項4】
読取対象となる前記情報コードの種別を特定する種別特定手段と、
前記種別特定手段によって特定された種別に基づいて、前記基準値を設定する基準値設定手段と、
を備え、
前記比較手段は、前記比が前記基準値設定手段にて設定された前記基準値未満であるか否かを判断することを特徴とする請求項3に記載の光学的情報読取装置。
【請求項5】
前記復元手段は、
前記暗色領域及び前記明色領域の少なくともいずれか一方の幅値を集計し、幅値毎の度数分布情報を生成する度数分布情報生成手段と、
前記度数分布情報生成手段にて生成される前記度数分布情報に基づいて、前記マージンと前記情報領域との境界部に設けられる暗色の境界パターンを推定する境界パターン推定手段と、
を備え、
前記誤り検出手段によって誤りが検出された前記マージン対応領域の誤った前記暗色領域を、前記境界パターン推定手段により推定される前記境界パターン及び前記境界パターンの外側に配される明色パターンに置換することで前記マージン対応領域を復元し、前記配列データを再生成することを特徴とする請求項1から請求項4のいずれか一項に記載の光学的情報読取装置。
【請求項6】
前記復元手段は、
読取対象となる前記情報コードの種別を特定する種別特定手段と、
前記種別特定手段により特定される種別に基づいて、前記マージンと前記情報領域との境界部に設けられる暗色の境界パターンを推定する境界パターン推定手段と、
を備え、
前記誤り検出手段によって誤りが検出された前記マージン対応領域の誤った前記暗色領域を、前記境界パターン推定手段により推定される前記境界パターン及び前記境界パターンの外側に配される明色パターンに置換することで前記マージン対応領域を復元し、前記配列データを再生成することを特徴とする請求項1から請求項4のいずれか一項に記載の光学的情報読取装置。
【請求項7】
前記種別特定手段は、前記誤り検出手段により誤りが検出された前記マージン対応領域以外の前記暗色領域及び前記明色領域に基づいて前記情報コードの前記種別を特定することを特徴とする請求項6に記載の光学的情報読取装置。
【請求項8】
指向性を有する照明光を出射する光源と、前記光源から出射される前記照明光を揺動させる揺動手段とを備え、前記揺動手段により前記照明光を二方向に走査可能な投光手段を有し、
前記二値化手段は、
前記投光手段により前記照明光が一方向に走査されたときに、前記受光手段の前記受光信号により得られる前記信号波形を明色領域と暗色領域とに区分けして第1配列データを生成する第1二値化手段と、
前記投光手段により前記照明光が前記一方向とは逆の他方向に走査されたときに、前記受光手段の前記受光信号により得られる前記信号波形を明色領域と暗色領域とに区分けして第2配列データを生成する第2二値化手段と、
を備え、
前記デコード手段は、少なくとも前記第1配列データを前記配列データとしてデコードする構成をなし、
前記誤り検出手段は、前記第1配列データにおける始端側の前記マージン対応領域に前記暗色領域が含まれる誤りを検出する構成をなし、
前記復元手段は、前記第2配列データに基づいて前記第1配列データにおける前記マージン対応領域の前記誤りを修正し、当該マージン対応領域を復元するように前記第1配列データを再生成することを特徴とする請求項1に記載の光学的情報読取装置。
【請求項9】
前記復元手段は、
前記第2配列データの最終の暗色端部パターンに基づき、前記第1配列データの最初に配置されるべき正規の暗色端部パターンを推定する正規パターン推定手段を備え、
前記誤り検出手段によって誤りが検出された前記マージン対応領域の誤った前記暗色領域を、前記正規パターン推定手段により推定される正規の前記暗色端部パターン及び前記暗色端部パターンの外側に配される明色パターンに置換することで前記マージン対応領域を復元し、前記第1配列データを再生成することを特徴とする請求項8に記載の光学的情報読取装置。
【請求項10】
前記誤り検出手段は、
前記第1配列データの終端側から始端側へ向けて前記マージン対応領域に至るまでの前記暗色領域及び前記明色領域に基づいて前記情報コードの種別を特定する種別特定手段を備え、
前記種別特定手段によって特定される前記情報コードの種別に基づいて、前記第1配列データにおける始端側の前記マージン対応領域に前記暗色領域が含まれる誤りを検出することを特徴とする請求項8又は請求項9に記載の光学的情報読取装置。
【請求項11】
前記復元手段は、
前記第1配列データの始端側において前記マージン対応領域と前記情報領域とに跨って配置される誤った第1暗色領域の幅情報と、前記第1暗色領域の終端側に隣接する第1明色領域の幅情報と、をそれぞれ記憶する第1幅情報記憶手段と、
前記第2配列データの最終の前記明色領域の隣に位置する第2暗色領域の幅情報と、前記第2暗色領域の始端側に隣接する第2明色領域の幅情報と、をそれぞれ記憶する第2幅情報記憶手段と、
を備え、
前記第2暗色領域と前記第2明色領域との幅比率に基づいて、前記第1配列データにおける前記第1暗色領域と前記第1明色領域との幅比率を、正規の幅比率に復元することを特徴とする請求項8から請求項10のいずれか一項に記載の光学的情報読取装置。
【請求項12】
前記誤り検出手段は、前記第2配列データの始端側の前記マージン対応領域に前記暗色領域が含まれる誤りを検出する構成をなし、
前記復元手段は、前記第1配列データに基づいて前記第2配列データにおける前記マージン対応領域の前記誤りを修正し、当該マージン対応領域を復元するように前記第2配列データを再生成する構成をなしており、
前記デコード手段は、前記復元手段により再生成された前記第1配列データをデコードし、その再生成された前記第1配列データのデコードが失敗した場合には、前記復元手段により再生成された前記第2配列データをデコードすることを特徴とする請求項8から請求項11のいずれか一項に記載の光学的情報読取装置。
【請求項13】
前記第2配列データの所定位置が前記第1配列データのどの位置に対応するかを特定する対応情報を記憶する対応情報記憶手段を備え、
前記復元手段は、前記第2配列データの始端位置から最終の前記暗色領域までの前記明色領域及び前記暗色領域の幅値の総和を位置情報として記録する記録手段を備えると共に、前記位置情報と前記対応情報とに基づいて前記第1配列データの誤った前記暗色領域の位置を特定し、前記第2配列データの最終の前記暗色領域のパターンに基づいて前記第1配列データの前記マージン対応領域の前記誤りを修正し、前記第1配列データを再生成することを特徴とする請求項8から請求項12のいずれか一項に記載の光学的情報読取装置。
【請求項14】
第1の測定対象に対して前記投光手段により前記照明光が一方向に走査されたときの第1の測定結果と、第2の測定対象に対して前記照明光が他方向に走査されたときの第2の測定結果と、を記録する測定結果記録手段を備え、
前記対応情報記憶手段は、前記第1の測定結果と前記第2の測定結果とを前記対応情報として記憶し、
前記復元手段は、前記第1の測定結果と前記第2の測定結果とに基づいて前記第1配列データと前記第2配列データとを位置的に対応付けることを特徴とする請求項13に記載の光学的情報読取装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【公開番号】特開2009−76031(P2009−76031A)
【公開日】平成21年4月9日(2009.4.9)
【国際特許分類】
【出願番号】特願2008−63972(P2008−63972)
【出願日】平成20年3月13日(2008.3.13)
【出願人】(501428545)株式会社デンソーウェーブ (1,155)
【Fターム(参考)】
【公開日】平成21年4月9日(2009.4.9)
【国際特許分類】
【出願日】平成20年3月13日(2008.3.13)
【出願人】(501428545)株式会社デンソーウェーブ (1,155)
【Fターム(参考)】
[ Back to top ]