Warning: copy(.htaccess): failed to open stream: Permission denied in /home/jp321/public_html/header.php on line 8
2次元ドットコードおよびその読み取り装置 - オムロン株式会社
米国特許情報 | 欧州特許情報 | 国際公開(PCT)情報 | Google の米国特許検索
 
     特許分類
A 農業
B 衣類
C 家具
D 医学
E スポ−ツ;娯楽
F 加工処理操作
G 机上付属具
H 装飾
I 車両
J 包装;運搬
L 化学;冶金
M 繊維;紙;印刷
N 固定構造物
O 機械工学
P 武器
Q 照明
R 測定; 光学
S 写真;映画
T 計算機;電気通信
U 核技術
V 電気素子
W 発電
X 楽器;音響


  ホーム -> 計算機;電気通信 -> オムロン株式会社

発明の名称 2次元ドットコードおよびその読み取り装置
発行国 日本国特許庁(JP)
公報種別 公開特許公報(A)
公開番号 特開2001−160114(P2001−160114A)
公開日 平成13年6月12日(2001.6.12)
出願番号 特願2000−276169(P2000−276169)
出願日 平成12年9月12日(2000.9.12)
代理人 【識別番号】100082131
【弁理士】
【氏名又は名称】稲本 義雄
【テーマコード(参考)】
5B035
5B072
【Fターム(参考)】
5B035 AA11 BB08 
5B072 AA02 CC37 DD02 DD12 DD15 DD23 EE03 HH11 LL11 LL19 MM02
発明者 大島 学 / 井上 智裕 / 中條 秀樹
要約 目的


構成
特許請求の範囲
【請求項1】 ドットを2次元に配置して、所定のコードを表すようにした2次元ドットコードにおいて、前記コードを表すドットの、前記ドットを読み取る方向と垂直な方向の直線上の両端または片端に、前記コードを表すドットと同様の形状の、前記コードを表すドットの位置を表すタイミングマークを備えることを特徴とする2次元ドットコード。
【請求項2】 前記コードを表すドットおよび前記タイミングマークの大きさは共に、記録における1ドット分の大きさであることを特徴とする請求項1に記載の2次元ドットコード。
【請求項3】 前記タイミングマークは、同一位置に、複数回記録することで形成されていることを特徴とする請求項1または2に記載の2次元ドットコード。
【請求項4】 前記ドットは、エラー検出用のコードのためのドットを含むことを特徴とする請求項1、2または3に記載の2次元ドットコード。
【請求項5】 ドットを2次元に配置して、所定のコードを表すようにした2次元ドットコードを読み取る読み取り装置において、前記コードを表すドットの、前記ドットを読み取る方向と垂直な方向の直線上の両端または片端に配置されているタイミングマークの位置を検出する第1の検出手段と、前記第1の検出手段により検出された両端の前記タイミングマークを基準として、その間に配置されている、前記コードを表す前記ドットを検出する第2の検出手段とを備えることを特徴とする読み取り装置。
【請求項6】 前記第2の検出手段は、前記タイミングマークを基準とする位置に前記ドットが存在しない場合、その周囲において前記ドットを探索することを特徴とする請求項5に記載の読み取り装置。
【請求項7】 前記ドットは、エラー検出用のコードのためのドットを含み、前記エラー検出用のコードを利用してエラー訂正を行うとともに、エラーが検出された場合、前記タイミングマークを基準とする位置からのずれが大きいドットに起因するエラーを優先して訂正するエラー訂正手段をさらに備えることを特徴とする請求項6に記載の読み取り装置。
【請求項8】 前記第2の検出手段は、前記コードを表す前記ドットより前に配置されている前記ドットの位置のズレを検出し、検出された位置のずれに基づいて、前記コードを表す前記ドットを検出することを特徴とする請求項5、6または7に記載の読み取り装置。
発明の詳細な説明
【0001】
【発明の属する技術分野】 本発明は、2次元ドットコードおよびその読み取り装置に関し、特に、より正確にドットコードを読み取ることができるようにした、2次元ドットコードおよびその読み取り装置に関する。
【0002】
【従来の技術】最近、2次元ドットコードが、様々な分野において利用されるようになってきた。この2次元ドットコードは、基本単位としての複数のセルを2次元上に配列して、所定のコードを表すようにしたものである。
【0003】従来のこのような2次元ドットコードは、例えば、ビデオカメラなどにより、それを撮像して、その画像から、そのコードを読み取るようにしたものが多い。しかしながら、このように、ビデオカメラで撮像し、その画像からコードを判定するようにした2次元ドットコードは、その性質上、基本単位としてのセルの大きさをある程度大きくする必要があった。その結果、2次元ドットコード自体が比較的大きな面積を必要とする課題があった。
【0004】そこで、プリンタで印刷する場合において、その最小単位としてのドットを基本単位としてコードを表すようにした、ドットコードが提案されている。
【0005】すなわち、このドットコードによれば、例えば、図1に示すように、プリンタが表現可能な最小の単位としてのドットの有無により、コードが表される。従って狭い範囲に、より多くのコードを表現することが可能となる。
【0006】
【発明が解決しようとする課題】しかしながら、このような2次元ドットコードは、プリンタのヘッドのばらつきによってドットの位置が変化する。その結果、例えば、図1に示すように、本来の印刷位置P1から所定のオフセット量だけ離れた印刷位置P2にドットが印刷されてしまうことがある。このような場合、2次元ドットコードをスキャナで光学的に読み取るとき、そのオフセットが大きいと、実際にはドットが印刷されているにも関わらず、ドットが印刷されていないものとして、誤って読み取られてしまう恐れがあった。
【0007】2次元ドットコードを印刷するプリンタ、あるいは、それを読み取るスキャナの精度を高めることで、このような読み取りエラーをある程度防ぐことは可能であるが、そのためには、プリンタやスキャナを高精度に製作する必要が生じ、コスト高となってしまう課題があった。本発明はこのような状況に鑑みてなされたものであり、印刷装置や読み取り装置の精度をそれほど高くしなくても、2次元ドットコードを正確に読み取ることができるようにするものである。
【0008】
【課題を解決するための手段】本発明の2次元ドットコードは、コードを表すドットの、ドットを読み取る方向と垂直な方向の直線上の両端または片端に、コードを表すドットと同様の形状の、コードを表すドットの位置を表すタイミングマークを備えることを特徴とする。
【0009】この2次元ドットコードには、コードを表すドットの、ドットを読み取る方向と垂直な方向の直線上の両端または片端に、コードを表すドットと同様の形状の、コードを表すドットの位置を表すタイミングマークが設けられる。これにより、読み取り時に搬送ムラが発生した場合、タイミングマークがドットと同様に伸張するので、搬送ムラを容易に検出することが可能になり、ドットを正確に読み取ることが可能な2次元ドットコードを提供することが可能となる。また、タイミングマークからドットの印字状態を推定することができ、コードの認識率を高めることができる。
【0010】前記2次元ドットコードは、例えば、図3の2次元ドットコードである。前記コードを表すコードは、例えば、図3のデータマーク33である。前記タイミングマークは、例えば、図3のタイミングマーク32L,32Rである。
【0011】コードを表すドットおよび前記タイミングマークの大きさは共に、記録における1ドット分の大きさとすることができる。
【0012】タイミングマークは、同一位置に、複数回記録することで形成することができる。
【0013】ドットは、エラー検出用のコードのためのドットを含むことができる。
【0014】本発明の読み取り装置は、コードを表すドットの、ドットを読み取る方向と垂直な方向の直線上の両端または片端に配置されているタイミングマークの位置を検出する第1の検出手段と、第1の検出手段により検出された両端のタイミングマークを基準として、その間に配置されている、コードを表すドットを検出する第2の検出手段とを備えることを特徴とする。
【0015】この読み取り装置では、コードを表すドットの、ドットを読み取る方向と垂直な方向の直線上の両端または片端に配置されているタイミングマークを基準として、その間に配置されている、コードを表すドットが検出される。これにより、正確にドットの有無を検出することができる。
【0016】前記第1の検出手段は、例えば、図9のステップS1の処理を実行する図7のドットコード画像処理回路66で構成され、前記第2の検出手段は、例えば、図9のステップS6の処理を実行する図7のドットコード画像処理回路66で構成される。
【0017】第2の検出手段は、タイミングマークを基準とする位置にドットが存在しない場合、その周囲においてドットを探索することができる。
【0018】ドットは、エラー検出用のコードのためのドットを含み、エラー検出用のコードを利用してエラー訂正を行うとともに、エラーが検出された場合、タイミングマークを基準とする位置からのずれが大きいドットに起因するエラーを優先して訂正するエラー訂正手段をさらに設けることができる。
【0019】前記エラー訂正手段は、例えば、図7のドットコード画像処理回路66で構成される。
【0020】第2の検出手段は、コードを表すドットより前に配置されているドットの位置のズレを検出し、検出された位置のずれに基づいて、コードを表すドットを検出することができる。
【0021】
【発明の実施の形態】図2は、本発明を適用した印刷装置の構成例を表している。印刷装置11のCPU13は、ボタン、スイッチなどにより構成される入力部12からの指令に対応して、印刷ヘッド搬送装置15、印刷ヘッド16、および紙搬送装置17を制御する。印刷ヘッド搬送装置15は、CPU13からの指令に対応して、印刷ヘッド16を副走査方向に搬送する。印刷ヘッド16は、CPU13からの印刷ヘッド制御信号に対応して、カード1に2次元ドットコード2を印刷する。紙搬送装置17は、CPU13からの指令に対応して、カード1を所定の位置に搬送する。メモリ18は、通信部14を介して、LANなどのネットワークを介して供給されたデータをCPU13の制御のもと記憶する。
【0022】印刷ヘッド16は、複数の印刷ノズル101を有し、カード1に対してインク102を噴出し、ドットからなる2次元ドットコード2を印刷する。
【0023】次に、その動作について説明する。ユーザが、入力部12を操作して印刷を指令すると、CPU13は、通信部14を介して印刷データを取り込み、メモリ18に記憶させる。そして、CPU13は、紙搬送装置17を制御し、カード1を所定の位置に搬送させる。また、CPU13は、取り込んだ印刷データを印刷ヘッド制御信号に変換し、印刷ヘッド16に供給するとともに、印刷ヘッド搬送装置15を制御し、印刷ヘッド16を副走査方向にカード1に対して相対的に移動させる。印刷ヘッド16の複数の印刷ノズル101は、各々からインク102を噴出し、カード1に対してドットで構成される2次元ドットコード2を印刷する。
【0024】図3は、このようにして、カード1に印刷された2次元ドットコード2の構成例を表している。図3の例においては、先頭に、1行のドットにより開始位置マーク31が印刷されている。その次には、1行の空白行をおいて、左右のタイミングマーク32L,32Rとデータマーク33が印刷されている。左右のタイミングマーク32L,32Rを構成するドットは、全ての行において印刷される。データマーク33を構成するドットは、コードに対応して印刷される。なお、この例の場合、タイミングマーク32L,32Rおよびデータマーク33を構成するドットの大きさは、共に印刷装置11の印刷ノズル101の1ドット分の大きさである。
【0025】なお、印刷は、開始位置マーク31から順番に、図3において、上から下方向(副走査方向)に行われる。換言すれば、印刷ヘッド16は、上から下方向に移送される。
【0026】その詳細は後述するが、このように、タイミングマーク32L,32Rを印刷しておくと、この左右の両端のタイミングマーク32L,32Rを結ぶ直線上において、ドットの有無を判定するようにすることで、データマーク33を構成するドットの有無を正確に判定することが可能となる。
【0027】1つのドットの径が大きい場合、図3に示したように、各行毎にタイミングマーク32L,32Rを印刷すると、位置ずれによりタイミングマーク32L,32Rを構成するドットが重なってしまうことがある。このような場合には、例えば、図4に示すように、所定の間隔毎に(図4の例においては、1行毎に)、タイミングマーク32L,32Rを印刷するようにすることができる。あるいはまた、図5に示すように、タイミングマーク32L,32Rを、交互に(タイミングマーク32Lを印刷した場合には、その行においてタイミングマーク32Rを印刷せず、タイミングマーク32Rを印刷した場合には、その行においてタイミングマーク32Lを印刷しない)ようにすることができる。
【0028】このようにすることで、タイミングマーク32L,32Rの上下方向の重なりを防止することができる。その結果、タイミングマーク32L,32Rの位置を正確に検出することができ、ひいては、それを基準とするデータマーク33の有無を正確に判定することができるようになる。
【0029】このように、タイミングマーク32L,32Rは、データマーク33の読み取りの基準となるため、できるだけ確実に印刷し、読み取ることができるようにしておく必要がある。そこで、例えば、図6に示すように、データマーク33は、1回印刷するだけとするが、タイミングマーク32L,32Rは、複数回印刷するようにしてもよい。このようにすれば、図6に示すように、データマーク33を構成するドット42に比べて、タイミングマーク32L,32Rを構成するドット41は、その色が濃く表現され、読み取り時において、インクの色が薄く、印刷はされていたとしても、読み取ることができないといったような恐れが少なくなる。
【0030】図7は、以上のようにして、2次元ドットコード2が印刷されカード1を読み取る読み取り装置の構成例を表している。この読み取り装置61は、例えば、マイクロコンピュータなどより構成される制御回路62を有しており、この制御回路62により、光源63が制御され、2次元ドットコード2が印刷されているカード1を照明する光が発生される。CCDラインセンサなどより構成される読取素子64は、制御回路62により制御され、カード1の2次元ドットコード2を読み取り、その読み取った画像信号をA/D変換部65に出力する。A/D変換部65は、入力された画像信号をA/D変換し、ドットコード画像処理回路66に出力する。ドットコード画像処理回路66には、また、制御回路62より2次元ドットコード2の読み取りに同期した同期信号が供給される。ドットコード画像処理回路66は、この同期信号に同期して、A/D変換部65より入力された画像データを読み取り、読み取り結果を外部の装置に出力する。
【0031】なお、読み取り時、読取素子64は、電子的に主走査方向(図3における水平方向)に走査されるときに、副走査方向(図3における上から下方向)に走査される。
【0032】なお、読み取り装置61の解像度は、印刷装置11の解像度より高い解像度とされている。例えば、印刷装置11により印刷された1つのドットが、読み取り装置61の3×3画素に対応するものとすると、読み取り装置61で読み取った画像は、図8に示すようになる。すなわち、3×3個の画素の内、その中央の1個の画素の濃度が最も濃くなり、その上下左右の4個の画素の濃度が、それに続いて濃くなり、斜め方向に隣接する4個の画素の濃度が、最も低い濃度となる。
【0033】次に、図9のフローチャートを参照して、ドット読み取り処理について説明する。最初にステップS1において、ドットコード画像処理回路66は、開始位置マーク31を検出する処理を実行する。ステップS2において、ドットコード画像処理回路66は、開始位置マーク31が検出されたか否かを判定し、検出されていない場合には、ステップS1に戻り、開始位置マーク31の検出処理を再び実行する。開始位置マーク31は、図3に示すように、カード1の移送方向(副搬送作方向)と垂直な方向に1列に所定の幅に渡って印刷されているので、そのことから、検出を確認することができる。
【0034】開始位置マーク31が検出された場合、ステップS3に進み、ドットコード画像処理回路66は、開始位置マーク31の中心座標を演算する。この検出のために、詳細は後述するが、図13に示すドット検出処理を実行するようにしてもよい。
【0035】次に、ステップS4に進み、ドットコード画像処理回路66は、タイミングマーク32L,32Rの検出処理を実行する。そして、ドットコード画像処理回路66は、ステップS5において、タイミングマーク32L,32Rが検出されたか否かを判定し、検出されない場合には、ステップS4に戻り、再び検出処理を実行する。タイミングマークは、図3に示すように、開始位置マーク31と垂直な方向(副走査方向と平行な方向)にデータマーク33の左右の端部に印刷されているので、そのことから検出を確認することができる。なお、この検出にあたっても、図13のフローチャートに示すドット検出処理を実行するようにしてもよい。
【0036】タイミングマーク32L,32Rが検出された場合、ステップS6に進み、ドットコード画像処理回路66は、1行ドット検出処理を実行する。その詳細は、図10と図11のフローチャートを参照して後述するが、ここで、データマーク33の1行分のドットの有無が判定される。そして、ステップS7において、ドットコード画像処理回路66は、全ての行のタイミングマーク32L,32Rに対応するデータマーク33の処理が終了したか否かを判定し、まだ終了していない場合には、ステップS4に戻り、それ以降の処理を繰り返す。ステップS7において、全ての行のタイミングマーク32L,32Rに対応するデータマーク33の読み取り処理が終了したと判定された場合、処理は終了される。
【0037】次に、図10と図11のフローチャートを参照して、図9のステップS6の1行ドット検出処理の詳細について説明する。最初に、ステップS21において、ドットコード画像処理回路66は、両端のタイミングマーク32L,32Rの座標を検出する。例えば、いま、図12の上から3番目の行の処理を行っているものとすると、タイミングマーク32L1,32R1のx座標とy座標が検出される。すなわち、図12における点P1と点P12の座標が検出される。次に、ステップS22において、ドットコード画像処理回路66は、いまの場合、列の数をカウントするカウンタをリセットする。
【0038】ステップS23において、ドットコード画像処理回路66は、タイミングマーク32L1とタイミングマーク32R1のそれぞれの中心を結んで得られる直線L1を演算し、さらに、その直線L1上の開始位置マーク31で規定されるデータマーク33の最も左側のドット位置を規定する基準座標x2,y2(理想的には、y2の値は点P1のy座標の値y1と等しくなる)を算出する。すなわち、図12の点P2の座標(x2,y2)を算出する。次に、ステップS24において、ドットコード画像処理回路66は、ステップS22でリセットしたカウンタの値を1だけインクリメントし、ステップS25で、カウンタの値がデータマーク33の列の数より大きくなったか否か、すなわち、データマーク33の全ての列についての処理を終了したか否かを判定し、まだ終了していない場合には、ステップS23に戻り、次の列の基準座標を算出する処理を実行する。
【0039】以上のようにして、ステップS25において、全ての列の基準座標が求められたと判定された場合、ステップS26に進み、ドットコード画像処理回路66は、カウンタの値をクリアする。次に、ステップS27において、ドットコード画像処理回路66は、ドット検出処理を実行する。このドット検出処理の詳細は、図13のフローチャートに示されている。この図13のフローチャートの処理は、次のような目的のために行われる。即ち、例えば、図14に示すように、ドットD21が、本来の印刷位置(基準座標)P21からずれて印刷されていると、印刷位置P21には、ドットが印刷されていないと判定される恐れがある。そこで、本発明においては、図15に示すように、本来の印刷位置P21から、その中心座標を探索範囲Wの範囲内において移動し、探索範囲W内にドットが存在するか否かを判定するようにするのである。
【0040】図13の最初にステップS61において、ドットコード画像処理回路66は、注目している座標(x,y)の画素の濃度が、予め設定されている所定の閾値より大きいか否かを判定する。例えば、図12に示す点P2の画素の濃度が、予め設定されている所定の閾値より大きいか否かが判定される。その画素の濃度が閾値より大きい場合には、ステップS62に進み、ドットコード画像処理回路66は、その基準位置に、ドットがあるものと判定する。
【0041】ステップS61において、いま注目している座標(x,y)の画素の濃度が、予め設定されている所定の閾値と等しいか、それより小さいと判定された場合、ステップS63に進み、ドットコード画像処理回路66は、内蔵しているカウンタをリセットする。このカウンタは、いまの場合、図15を参照して説明した探索範囲W内において検索した回数を表している。
【0042】次に、ステップS64において、ドットコード画像処理回路66は、いま注目している座標(x,y)の画素の周囲の8画素の濃度を調べる。すなわち、いま注目している座標(x,y)の画素は、3×3画素の中央の画素であるから、その上下左右の4個の画素、並びに斜め方向に隣接する4個の画素の濃度がそれぞれ調べられる。
【0043】次に、ステップS65において、ドットコード画像処理回路66は、8個の画素のうち、最も濃度が高い座標(x’,y’)の画素に、ドットの中心の画素を移動する。なお、周囲の8画素のうち、最も濃度が高い画素が複数個存在する場合においては、図16に示すように、左上から右下方向に、移動する順番の優先順位が予め設定されており、優先順位の高い画素に移動が行われる。そして、ステップS66において、移動後の座標(x’,y’)の画素の濃度が閾値より大きいか否かを判定する。この閾値は、ステップS61における閾値と同じ大きさの閾値である。ステップS66において、いま注目している座標(x’,y’)の画素の濃度が閾値より大きいと判定された場合、ステップS62に進み、ドットコード画像処理回路66は、その位置にドットが印刷されていると判定する。
【0044】ステップS66において、いま注目している座標(x’,y’)の画素の濃度が閾値と等しいか、それより小さいと判定された場合、ステップS67に進み、ドットコード画像処理回路66は、周囲の8画素への移動回数を表すカウンタの値を1だけインクリメントし、ステップS68において、いま、注目している座標(x’,y’)を、3×3個の画素の中心の座標(x,y)とする。すなわち、3×3個の画素の中心の画素が、これにより移動されることになる。
【0045】次に、ステップS69において、ドットコード画像処理回路66は、カウンタの値が予め設定されている所定の規定回数(例えば2回)より小さいか否かを判定し、小さい場合には、ステップS64に戻り、それ以降の処理を繰り返し実行する。
【0046】ステップS69において、カウンタの値が規定回数より小さくないと判定された場合(規定回数と等しいと判定された場合)、ステップS70に進み、ドットコード画像処理回路66は、その位置には、ドットが存在しないものと判定する。
【0047】図11に戻って、以上のようにして、ステップS27において、ドット検出処理が行われた後、ステップS28に進み、ドットコード画像処理回路66は、ドットが検出されたか否かを判定する。ドットが検出されていると判定された場合、ステップS29に進み、ドットコード画像処理回路66は、いま対象とされている基準座標(x,y)と、ステップS27のドット検出処理で検出されたドットの中心座標(x’,y’)の距離dを算出する。この距離dは、次式により表される。
【0048】
d=((x−x’)2+(y−y’)21/2次に、ステップS30において、ドットコード画像処理回路66は、ステップS27で検出されたドットの座標を検出ドットリストと照合する。すなわち、ドットコード画像処理回路66は、内蔵するメモリの検出ドットリストに、図17に示すように、後述するステップS36において、ステップS29で算出されたドットの座標(検出X座標と検出Y座標)を、その座標の基準座標からの距離d、およびその検出されたドットが対応する基準位置番号とともに登録している。各登録には、図17に示すように、リスト番号が付与される。ここで、基準位置番号とは、例えば、図12に示すように、データマーク33の最も左側の座標x2から、最も右側の座標x11までの各基準位置に対応して付けられた番号であり、図12の例においては、番号1乃至番号10が基準位置番号とされている。
【0049】ステップS31において、ドットコード画像処理回路66は、いま検出された座標に対応する座標が、検出ドットリストに登録されているか否かを判定する。対応する座標が登録されていない場合には、図17に示すように、ステップS36において、検出されたドットの中心座標(x’,y’)、その時の基準座標が対応する基準位置番号、並びにステップS29で算出された距離dが、検出ドットリストに登録される。さらに、ステップS37において、ドットコード画像処理回路66は、図18に示すように、内蔵するメモリのドット検出結果リストの、いま処理対象とされている基準位置番号のドット検出結果の値を1に設定する。
【0050】ステップS31において、検出されたドットの座標に対応する座標が、検出ドットリスト中に既に登録されていると判定された場合、ステップS32に進み、ドットコード画像処理回路66は、検出ドットリストに既に登録されている、その座標に対応する距離d’をロードする(読み出す)。そして、ステップS33において、ドットコード画像処理回路66は、ステップS29で算出した距離dと、検出ドットリストから読み出した距離d’の大きさを比較し、距離dの方が距離d’より小さい場合には、ステップS34に進み、検出ドットリスト中の、検出されたドットの座標に対応する基準位置番号のドット検出結果としての値を0に修正する。図18に示すように、ドット検出結果リストには、基準位置番号と、その基準座標(基準X座標、基準Y座標)、およびドット検出結果が記憶されている。ドット検出結果の値の1は、その基準位置番号のドットが検出されたことを表し、その値の0は、その基準位置番号に対応するドットが検出されていないことを表す。
【0051】ステップS35において、ドットコード画像処理回路66は、検出ドットリスト(図17)から、既に登録されている、検出された座標のデータを、誤判定であったとして削除する。
【0052】さらに、ステップS36において、ドットコード画像処理回路66は、ステップS27で検出されたドットの座標と、現在処理対象とされている基準位置番号、およびステップS29で算出された距離dを、検出ドットリスト(図17)に登録する。さらに、ステップS37において、ドットコード画像処理回路66は、ドット検出結果リスト(図18)中の、いま処理対象とされている基準位置番号のドット検出結果の値を1に設定する。
【0053】一方、ステップS33において、距離dが距離d’より小さくないと判定された場合、ステップS39に進み、ドットコード画像処理回路66は、いま処理対象とされている基準位置番号のドット検出結果を0に設定する。
【0054】このようにして、図19に示すように、本来位置(基準座標)Aに印刷されるべきドットが位置Cにずれて印刷された場合において、位置Aにおいて位置Cのドットが印刷されていると判定された後、さらに次の位置(基準座標)Bにおいても、位置Cのドットが印刷されていると判定されるようなこと、すなわち、位置Cのドットが、位置Aと位置Bの両方において、印刷されていると、2重に判定されるようなことが防止される。
【0055】ステップS37,S38,S39の処理の後、ステップS40に進み、ドットコード画像処理回路66は、カウンタの値を1だけインクリメントする。ステップS41において、ドットコード画像処理回路66は、ステップS40でインクリメントしたカウンタの値が、1行中に含まれるデータマーク33のドット数の最大値(データマーク33の列の数)より大きくなったか否が判定され、大きくなっていない場合には、ステップS27に戻り、それ以降の処理が繰り返し実行される。ステップS41において、カウンタの値が、1行のドット数の最大値より大きくなったと判定された場合、処理は終了される。
【0056】なお、印刷ノズル101の形状により、ドットがずれて印字される場合があるが、このような場合でも正確にドットを読み取ることができる。
【0057】この例の場合、タイミングマーク32L,32Rおよびデータマーク33のドットは、共に、その形状が同一であることから(共に、1本のノズルで形成されていることから)、例えば、図20に示すように、タイミングマーク32L2,32R2は、それらの中心を結ぶ直線L2上に位置するデータマーク33と、同様にずれる(上方に移動する)ので、上述したドット読み取り処理により、正確にドットを読み取ることができる。
【0058】読み取り装置61を手動操作型のもので構成し、読み取り装置61をカード1上で、ユーザにより手動操作させて、カード1に印刷されている2次元ドットコード2を読み取らせるようにした場合、カード1と読取素子64の相対的移送速度が、必ずしも基準とする移送速度にならない場合がある。例えば、相対的移送速度が、基準の移送速度より遅くなると、本来3×3個の画素で読み取られる1つのドットは、相対速度が基準速度の1/2になると、図21および図22に示すように、16個の画素で読み取られることになる。すなわち、この時、主走査方向(図21および図22における横方向)の画素数は、3個で変化しないが、副走査方向(図21および図22における縦方向)の画素数が、中央で6個、その左右で4個に増加する。このような場合、画像は、副走査方向に伸長するが、主走査方向には伸長しないので、探索範囲Wは、図21および図22に示すように、副走査方向に(カード1の相対的移送方向に)、より長くすることができる。これにより、副走査方向のカード1の相対的移送速度が変化して画像が副走査方向に伸長した場合においても、より確実にドットを検出することが可能となる。
【0059】なお、図22は、1行のドットを読み取るときに、相対速度が基準速度の1/2になった場合を表している。
【0060】例えば、図21に示すように、カードの移送方向にタイミングマークが伸縮した場合、これを補正するには、図9のステップS4におけるタイミングマーク検出処理が、図23のフローチャートに示すように行われる。すなわち、ステップS91において、ドットコード画像処理回路66は、左側のタイミングマーク32Lを検出し、ステップS92において、左側のタイミングマーク32Lの縦横比を算出する。この縦横比は、検出されたドットの縦方向の長さをドットの横方向の長さで割った値とされ、図21の例では、2(=6/3)とされる。
【0061】次に、ステップS93において、ドットコード画像処理回路66は、右側のタイミングマーク32Rを検出し、ステップS94において、その右側のタイミングマーク32Rの縦横比を算出する。ステップS95において、ドットコード画像処理回路66は、ステップS92で算出した縦横比と、ステップS94で算出した縦横比の平均値を算出する。そして、ステップS96において、ドットコード画像処理回路66は、図21に示すように、本来の探索範囲W1の縦方向(Y方向)の長さに、ステップS95で算出した平均の縦横比を乗算して得られた値を、補正された探索範囲W2の縦方向の長さとする。
【0062】これにより、副走査方向にドットの長さが伸縮した場合には、その伸縮した割合に応じて探索範囲が変更される。その結果、より正確なドットの有無の判定処理が可能となる。
【0063】なお、以上においては、タイミングマーク32Lおよびタイミングマーク32Rが左右の両端に設けられている場合を例として説明したが、いずれか一方の端のみに設けるようにすることもできる。
【0064】図24は、2次元ドットコードの他の例を表している。この例においては、図3に示した開始位置マーク31が、複数行(図24の例においては5行)印刷され、プリンタヘッドオフセット検知用マーク51とされている。この検知用マーク51は、タイミングマーク32L,32Rと同一の列に印刷されているドット32L−1乃至32L−5,32R−1乃至32R−5、並びにデータマーク33の各列と対応する列に配置されているドット31−1−i(i=1,2,・・・,5)乃至31−j−i(jはデータマーク33の列を表す)により構成されている。
【0065】このように、検知用マーク51が印刷されている場合、ドットコード画像処理回路66は、上述した図9のステップS1において、開始位置マークを検出したとき、さらに、図25に示すオフセット検出処理を実行する。
【0066】ステップS101において、ドットコード画像処理回路66は、内蔵するカウンタをリセットし、ステップS102において、内蔵するバッファをクリアする。ステップS103において、ドットコード画像処理回路66は、両端のタイミングマーク32L,32Rの座標を検出する。ステップS104において、ドットコード画像処理回路66は、左右のタイミングマーク32L,32Rの中心を結んで得られる直線をデータマーク33の列の数で割って得られる、各ドットの基準座標を算出する。
【0067】次に、ステップS105において、ドットコード画像処理回路66は、図13のフローチャートを参照して説明したドット検出処理を実行する。そして、ステップS106において、ドットコード画像処理回路66は、いま検出されているドットの基準座標とのオフセット量を算出する。基準座標を(x,y)とし、検出ドットの中心座標を(x’,y’)とするとき、x方向のオフセット量は、次式で表される。
【0068】dx(i,j)=x−x’また、y方向のオフセット量は、次式で表される。
【0069】dy(i,j)=y−y’【0070】なお、上記式において、iは行番号を表し、jは列番号を表す。
【0071】次に、ステップS107において、ドットコード画像処理回路66は、ステップS106で算出したオフセット量をバッファに格納する。ステップS108において、ドットコード画像処理回路66は、1行分の各列のドットについての処理を終了したか否かを判定し、その行でまだ処理していないドットが残っている場合には、ステップS105に戻り、それ以降の処理を繰り返し実行する。
【0072】ステップS108において、1行分の各ドットについてのオフセット量の検出の処理が終了したと判定された場合、ステップS110に進み、ドットコード画像処理回路66は、処理した行の数を表すカウンタの値を1だけインクリメントする。ステップS110において、ドットコード画像処理回路66は、カウンタの値をプリンタヘッドオフセット検知用マーク51として設定されている規定行数より大きくなったか否かを判定し、大きくなっていないと判定された場合には、ステップS103に戻り、それ以降の処理を繰り返し実行する。
【0073】ステップS110において、カウンタの値が規定行数より大きくなったと判定された場合、ステップS111に進み、ドットコード画像処理回路66は、カウンタの値をリセットする。ステップS112において、ドットコード画像処理回路66は、オフセット量の、1つの列の全行数分の平均値を算出する。図24の例の場合、1つの列の5行分のオフセット量の平均値が算出される。
【0074】このオフセット量の平均値を、模式的に表すと、図26と図27に示すようになる。即ち、例えば、図26に示すように、検出されたドット31−2−1乃至31−2−5のそれぞれのx座標が、それぞれx2−1乃至x2−5であるとき、これらのx座標の平均値xaが次式より演算される。
【0075】xa=(x2−1+x2−2+x2−3+x2−4+x2−5)/5【0076】このようにして求められた平均値xaが、その列のドット31−2を代表する座標x−2とされる。そして、この値が、図12に示す座標x2とされる。
【0077】また、図27に示すように、ドット32L−1と32R−1を結ぶ直線、乃至ドット32L−5とドット32R−5を結ぶ直線を、それぞれL1乃至L5とするとき、各ドット31−2−1乃至31−2−5と、直線L1乃至L5とのy座標の差y1乃至y5が求められ、それらの平均値yaが次式に示すように求められる。
【0078】
ya=(y1+y2+y3+y4+y5)/5【0079】次に、ステップS113において、ドットコード画像処理回路66は、ステップS112で算出された平均値を、対応する列のノズルのオフセット量としてバッファに格納する。ステップS114において、ドットコード画像処理回路66は、処理した列の数を表すカウンタの値を1だけインクリメントし、ステップS115において、そのカウンタの値が予め設定されている規定の列数(図24のデータマーク33の列の数)より大きくなったか否かを判定する。カウンタの値が規定列数より大きくないと判定された場合、ステップS112に戻り、それ以降の処理が繰り返し実行される。ステップS115において、カウンタの値が規定列数の値より大きくなったと判定された場合、オフセット検出処理は終了される。
【0080】このように、オフセット量が算出された場合、図10と図11に示した1行のドット検出処理は、図28と図29に示したように行われる。図28と図29に示すステップS131乃至ステップS152の処理は、基本的に図10と図11に示したステップS21乃至ステップS41の処理と同様の処理である。ただし、図10のステップS23とステップS24に対応する、図28のステップS133とステップS135の間に、ステップS134の処理が追加されている。ステップS134において、ドットコード画像処理回路66は、ステップS133で算出された基準座標に、上述したようにして、図25の処理で得られたオフセット量を加算する。すなわち列jに存在する基準座標(x,y)は、次のように補正される。
【0081】(x+Dx(j),y+Dy(j))
なお、ここで、Dx(j)とDy(j)は、それぞれ列jのx方向のオフセット値の平均値と列jのy方向のオフセット値を表し、次式で表される。
【0082】
【数1】

【0083】これにより、印刷ヘッド16の各ドットを印刷する印刷ノズル101の取り付け位置にばらつきがあったとしても、そのばらつきを補償して読み取り処理を行うことが可能となる。その結果、印刷装置11または読み取り装置61の精度を、それほど向上させずとも、ドットを正確に読み取ることが可能となる。
【0084】ドットコード画像処理回路66は、以上のようにして、データマーク33を構成するドットの有無からコードを判定し、その判定結果を出力するのであるが、このコードには、誤り訂正用のコードを含ませることができる。この場合、ドットコード画像処理回路66は、図30に示すようなコード検出処理を実行する。
【0085】すなわち、最初にステップS171において、ドットコード画像処理回路66は、ドットにより構成されるコードを検出する。ステップS172において検出されたコードにエラーがあるか否かを、コードに含まれる誤り検出用のコードを利用して判定し、エラーが存在する場合には、ステップS173に進み、ドットコード画像処理回路66は、基準位置からのずれが最も大きいドットに対応するコードから、優先的にエラーを訂正する処理を実行する。そして、ステップS171に戻り、それ以降の処理を繰り返し実行する。
【0086】ステップS172において、エラーが存在しないと判定された場合、ステップS174に進み、ドットコード画像処理回路66は、全てのコードの検出処理を終了したか否かを判定し、まだ検出が終了されていないコードが存在する場合には、ステップS171に戻り、それ以降の処理を繰り返し実行する。ステップS174において、全てのコードの検出処理が終了したと判定された場合、処理は終了される。
【0087】このようにすることで、エラー訂正処理を迅速に完了することが可能となる。
【0088】
【発明の効果】以上の如く本発明によれば、正確に読み取ることが可能な2次元ドットコードを提供することができるとともに、正確にドットの有無を検出することができる。




 

 


     NEWS
会社検索順位 特許の出願数の順位が発表

URL変更
平成6年
平成7年
平成8年
平成9年
平成10年
平成11年
平成12年
平成13年


 
   お問い合わせ info@patentjp.com patentjp.com   Copyright 2007-2013