JP4122629B2 - 2次元コードの生成方法 - Google Patents
2次元コードの生成方法 Download PDFInfo
- Publication number
- JP4122629B2 JP4122629B2 JP12997999A JP12997999A JP4122629B2 JP 4122629 B2 JP4122629 B2 JP 4122629B2 JP 12997999 A JP12997999 A JP 12997999A JP 12997999 A JP12997999 A JP 12997999A JP 4122629 B2 JP4122629 B2 JP 4122629B2
- Authority
- JP
- Japan
- Prior art keywords
- block
- code
- error correction
- information
- dimensional code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
- G06K7/1404—Methods for optical code recognition
- G06K7/1439—Methods for optical code recognition including a method step for retrieval of the optical code
- G06K7/1443—Methods for optical code recognition including a method step for retrieval of the optical code locating of the code in an image
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K19/00—Record carriers for use with machines and with at least a part designed to carry digital markings
- G06K19/06—Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code
- G06K19/06009—Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code with optically detectable marking
- G06K19/06037—Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code with optically detectable marking multi-dimensional coding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
- G06K7/1404—Methods for optical code recognition
- G06K7/1408—Methods for optical code recognition the method being specifically adapted for the type of code
- G06K7/1417—2D bar codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K19/00—Record carriers for use with machines and with at least a part designed to carry digital markings
- G06K19/06—Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code
- G06K2019/06215—Aspects not covered by other subgroups
- G06K2019/06262—Aspects not covered by other subgroups with target- or other orientation-indicating feature
Description
【発明の属する技術分野】
本発明は、2次元コードの生成方法などに関する。
【0002】
【従来の技術】
従来、提案されている2次元コードとしては、例えば特開平7−254037号公報記載のものがある。ここで示されている2次元コードは、QRコードと呼ばれるものであり、図18(b)に一例を示すごとく情報が2次元的な広がりを持ち、図18(a)に示すバーコードに比べて格段に大量の情報を記録できるが、構造は複雑なものとなっている。すなわち、図19に示すごとく、2次元コード500の存在位置の確定を容易にするため特定寸法比率の正方形を組み合わせた位置決め用シンボル510a,510b,510cや、それら3個の位置決め用シンボル510a,510b,510c相互の間に設けられた白と黒とが交互に組み合わせられた各データセル位置の指標となる基準パターンであるタイミングセル520a,520bを備えている。
【0003】
2次元コード500の内部は、n×nの正方形の升目(以下、これをセルという)に区切られており、位置決め用シンボル510a,510b,510cは、例えば、一辺の長さが7セルに相当する黒い正方形512、一辺の長さが5セルに相当する白い正方形514、一辺の長さが3セルに相当する黒い正方形516を同心状に重ね合わせた時にできる図形である。この位置決め用シンボル510a,510b,510cの中心付近を直線的に横切ると、黒、白、黒、白、黒のパターンが1:1:3:1:1の比率で検出されるので、この性質を利用して、前記比率で黒と白が交互に検出された場合、そのパターンを位置決め用シンボル510a,510b,510cの有力な候補と判断し、2次元コード500の存在位置を確定するために優先的に検査する。
【0004】
そして、2次元コード500の形状は、3個の位置決め用シンボル510a,510b,510cで一義的に決まる平行四辺形の範囲であると推定できる。なお、データは、位置決め用シンボルや基準パターンなどを除外した情報記録領域530のセル(すなわち、データセル)で表され、各データセルを白あるいは黒に色分けすることにより、各データセルを1ビットのデータに対応させている。ただし、図19ではデータセルの白黒のパターンは判り易くするために省略されている。各データセルの位置は、3個の位置決め用シンボル510a,510b,510cの中心と2つのタイミングセル520a,520bを、それぞれ縦方向と横方向の座標の指標として、簡単な計算により求めることができる。このように位置が決定した、各データセルの中心付近が黒であるか白であるかを判定して、黒を例えば1,白を例えば0に対応させることにより、2値データとして認識でき、解読することができる。
【0005】
そして、このような2次元コードにおいては、いわゆる誤り訂正機能を備えたものがある。これは、2次元コードの一部が破損や汚れによって読み取れない場合であっても、データ解読が可能にする機能である。具体的には、図19に示すように、領域530をデータブロックと誤り訂正ブロックとに分割し、誤り訂正ブロックには例えばリード・ソロモンなどを用いた誤り訂正データを配置しておくのである。誤り訂正データの量によって誤り訂正レベルは異なる。つまり、コード全体の何%の情報が読み取れなくても誤り訂正にて対処できるかというレベルは異なるが、その誤り訂正が可能か不可能かの判断は、「コード全体の何%の情報が読み取れないのか」を基準としていた。
【0006】
【発明が解決しようとする課題】
しかしながら、このようにコード内の情報全体(つまり、データブロック+誤り訂正ブロック)に対する破損などの割合を基準とした場合には、実際には解読可能なデータが含まれている場合であっても、一律に誤り訂正不可能として対処してしまう状況が発生する。その点を具体例で説明する。
【0007】
例えば、図20に示した2次元コード(QRコード)においては、D1〜D46で示すものがデータブロックであり、E1〜E88で示すものが誤り訂正ブロックであって、この場合の誤り訂正レベルは30%である。なお、データブロックはD1〜D46で示す46個のデータコードワードで構成され、誤り訂正ブロックはE1〜E88で示す88個の誤り訂正コードワードで構成されている。なお、ここではリード・ソロモン(RS)を用いて誤り訂正を行うため、誤り訂正ブロックをRSブロック、誤り訂正コードワードをRSコードワードと表すこととする。
【0008】
また、データブロックはD1〜D23で示すデータコードワードで構成されるデータブロック1とD24〜D46で示すデータコードワードで構成されるデータブロック2に分割されているものとする。それに対応して、RSブロックもE1〜D44で示すRSコードワードで構成されるRSブロック1とE45〜D88で示すRSコードワードで構成されるRSブロック2に分割されている。
【0009】
そして、データブロックの内のデータコードワードD1〜D23と、RSブロックの内のRSコードワードE1〜D44が破損などで読み取れない状況を考える。この場合の全コードワード数は、46+88=134であり、破損などで読み取れないコードワード数は67である。すると、破損率は67/134=50%であるため、誤り訂正レベルの30%を超えているため、データ解読が不可能であると判断される。
【0010】
ところが、図20からも判るように、この場合には、データブロック2を構成するデータコードワードD24〜D46については全く破損しておらず、この部分だけを取り出せれば、データ解読ができるのである。つまり、全コードワード数を基準にして見ると、破損度合いが誤り訂正レベルを超えている場合であっても、データブロックが複数に分割されている場合には、ブロック単位で見ると破損率が小さく、誤り訂正によって十分にデータ解読できるような場合もある。
【0011】
このような観点からすれば、情報記録領域を複数のブロックで構成し、そのブロック単位でのデコードを可能とすることが望ましい。この場合、極力多くのデータ解読を実現できる。また、このようにブロック単位でのデコードが可能な構成を前提とすれば、ブロック単位で誤り訂正率を変えるなど、種々の展開が可能である。そこで、このように2次元コードを生成する方法を提供することを目的とする。
【0013】
【課題を解決するための手段及び発明の効果】
請求項1記載の生成方法で生成される2次元コードは、セルの分布パターンによって情報を表現する2次元コードであって、情報記録領域が複数のブロックに分割されていると共に、ブロック内に記録されている情報の記録形式を示す記録形式指示コードがブロック毎に含まれていることを特徴とする。情報はセルの分布パターン、一般的には白黒(明暗)2種類のセルの分布パターンにて表現されており、0,1のビット列で情報を示すこととなる。そして、そのビット列に実質的な意味を与えるため、例えば数字・英字・漢字などの記録形式(モード)を特定する。
【0014】
このこと自体は従来から実施されているのであるが、従来は、例えば「記録形式指示コード(数字)」→実際の情報のビット列→「記録形式指示コード(英字)」→実際の情報のビット列→「記録形式指示コード(漢字)」→実際の情報のビット列→……といった具合に、記録形式が変わる場所にのみ記録形式指示コードが配置されていた。そのため、記録形式指示コードが破損などでデコードできなくなると、その後に記録されている実際の情報のビット列がどのような記録形式なのかが判らないため、デコードできなくなる。そこで、情報記録領域を複数のブロックに分割すると共に、そこに記録されている情報に対応して記録形式指示コードをブロック毎に含ませた。そのため、どのブロックについても、ブロック内に記録されている情報の記録形式は自ブロック内の記録形式指示コードのみに基づいて特定できるようになった。
【0015】
この点について、図10を参照してさらに具体的に説明する。図10(a)に示すように、従来は、第1ブロックの最初に記録形式指示コードαがあり、第1ブロックの途中で記録形式が変わるとその場所に記録形式指示コードβが配置される。そして、第2ブロックは第1ブロックの最後と同じ記録形式であった場合、第2ブロック内には記録形式指示コードが存在しない。第1ブロックも正常にデコードできれば問題ないが、記録形式指示コードβを含む第1ブロックの一部あるいは全部が破損し、記録形式指示コードβがデコードできなかった場合には、第2ブロックに記録された情報の記録形式を特定することができない。つまり、第2ブロックに記録された情報については全く破損などがなくても、読み取れないのである。
【0016】
そこで、今回発明した2次元コードは、図10(b)に示すように、第2ブロックの記録形式を示す記録形式指示コードγを第2ブロック内(ここではブロックの先頭)に配置してある。記録形式指示コードγは第1ブロック内の記録形式指示コードβと同じであるが、このように重複する場合であっても自ブロック内に配置することで、第1ブロックの情報のデコードの可否に影響されず、第2ブロックだけでもデコードすることができるようになる。
【0020】
また、請求項1記載の生成方法で生成される2次元コードにおいて、情報記録領域中の複数のブロックの内の少なくとも一つには、他のブロックに記録された情報の誤り訂正用の情報が記録されている。
【0022】
さらに、請求項1記載の生成方法で生成される2次元コードにおいて、情報ブロック及び誤り訂正ブロックによって構成されるブロック対が情報記録領域中に複数存在する場合に、そのブロック対単位で個別に設定された誤り訂正率に基づいて記録されており、そのブロック対単位での誤り訂正率を示す訂正率指示コードがブロック毎に含まれている。
【0023】
このようにすれば、コード化される情報の内容の重要度などに応じて適切な誤り訂正率を選択設定することができる。つまり、重要度の異なる情報があった場合に、全ての情報に対して誤り訂正率を高くしてしまうと、あまり重要でない情報について設定された誤り訂正用情報に無駄が生じるが、このように区別して設定できれば、合理的なコード化を実現することができる。
【0025】
このような2次元コードを生成する場合には、請求項1に示すような方法を採用すればよい。すなわち、まず、コード化すべき情報を、初期値として指定された誤り訂正率に基づいてコード生成する。
その上で、ブロック対単位での誤り訂正率の変更が指示されている場合には、その変更後の誤り訂正率に基づいてコード生成し直す。そして、コード生成をし直した状態で、コード化すべき情報が対応するブロック内に収まっているか否かのオーバーフロー判定を行う。このオーバーフロー判定にてブロック内に収まらないと判定された場合には、情報記録領域の広いフォーマットに基づいてコード生成し直してからオーバーフロー判定を再度行う。当然ながら、再度ブロック内に収まらないと判定された場合には、さらに情報記録領域の広いフォーマットに基づいてコード生成し直してからオーバーフロー判定を行う。一方、オーバーフロー判定にてブロック内に収まっていると判定された場合には、コード生成完了とする。
【0026】
このようにすれば、コード化すべき情報を全てコード化しながら、重要度が高い情報について誤り訂正率を高くすることが可能となる。もちろん、コード化すべき情報量が相対的に少なく、誤り訂正率を高くする前の状態において、ブロック内の一部にしか実質的に意味のあるコードが存在しない場合には、誤り訂正率を高くした場合にも、オーバーフローしない可能性も考えられる。しかし、一般的には、コード化すべき情報を全てコード化する前提であれば、情報記録領域の広いフォーマットに基づいてコード生成し直す(一般的には「バージョンを大きくする」などと呼ばれる。)ことが必要であるため、このような生成方法が適切である。
【0027】
そして、このようにブロック対単位での誤り訂正率が異なる場合には、そのブロック対単位での誤り訂正率を示す訂正率指示コードをブロック毎に含める構成を採用することが望ましい。したがって、その場合の生成方法としては、請求項2に示すように、誤り訂正率を示す訂正率指示コードをブロック毎に含めてコード生成を行えばよい。
【0028】
なお、ブロック対単位での誤り訂正率を変更しないような2次元コードも生成できるようにするためには、請求項3に示すように、ブロック対単位での誤り訂正率の変更が指示されていない場合には、訂正率指示コードを含めないようにすれば対処できる。
【0043】
【発明の実施の形態】
以下、本発明が適用された実施例について図面を用いて説明する。なお、本発明の実施の形態は、下記の実施例に何ら限定されることなく、本発明の技術的範囲に属する限り、種々の形態を採り得ることは言うまでもない。
【0044】
図1のブロック図には、2次元コード読取装置2の概略構成、図2には、2次元コード読取装置2にて検出される2次元コードの一例の概略図を示す。まず、2次元コード52について説明する。図2に示す2次元コード52は、いわゆるQR(Quick Response)コードであって、白色の台紙53の上に印刷されており、3個の位置決め用シンボル54A,54B,54C、頂点検出用セル55、情報記録領域56、タイミングセル20a,20b及びフォーマットコード70などから構成されている。
【0045】
情報記録領域56中の各セルは、光学的に異なった2種類のセルから選ばれており、図および説明上では白(明)・黒(暗)で区別して表す。なお、図2では便宜上、情報記録領域56のデータセルの白黒のパターンは省略している。
3つの位置決め用シンボル54A,54B,54Cは、2次元コード52の4つの頂点の内、3つに配置されている。この位置決め用シンボル54A,54B,54Cのセルの明暗配置は、図3(A)に示すごとく、1セル幅の黒部からなる枠状正方形55a内の中心部分に、1セル幅の白部からなる縮小した枠状正方形55bが形成され、その内側の中心部分に黒部からなる3セル×3セルの大きさの正方形55cが形成されているパターンである。
【0046】
また、頂点検出用セル55は、図2に示すごとく、4つの頂点の内、3つの位置決め用シンボル54A,54B,54Cが配置されていない残りの頂点に配置されている。
一方、タイミングセル20a,20bは、位置決め用シンボル54A,54B,54C間に配置されており、白と黒とが交互に組み合わせられた各データセル位置の指標となる基準パターンとして用いられる。
【0047】
また、フォーマットコード70は、位置決め用シンボル54Aの近傍に配置されており、情報記録領域56内に記録された情報のフォーマットについて、予め設定されたバージョン情報を示すものとなっている。本実施例の2次元コード(QRコード)の規格におけるバージョン情報は、1〜8のバージョンと、各バージョンについて4つの誤り訂正レベルL,M,Q,Hとの組み合わせで構成されるものとし、例えば「3−L」,「5−H」などと表すこととなる。
ここで、バージョン情報に対応して設定されている情報について説明する。まず、バージョン1〜8は、主に総コードワード数の違いに対応する。コードワードは8ビットで構成されており、図5に示すD1〜D46及びE1〜E88で示すそれぞれがコードワードに対応する。なお、D1〜D46で示す46個のコードはデータコードワードであり、E1〜E88で示す88個のコード誤り訂正コードワードである。本実施例ではリード・ソロモン(RS)を用いて誤り訂正を行うため、誤り訂正コードワードをRSコードワードと表す。図5に示す例は、バージョン5に対応するものであり、46個のデータコードワードと88個のRSコードワードとの和である134個が総コードワード数となる。
【0048】
なお、データコードワードD1〜D46及びRSコードワードE1〜E88の数字は、デコードの順番に対応しており、D1からデコードを開始してD46までデコードすると続いてE1をデコードし、最後のE88で終了する。本実施例では、図5において下から上へ縦の列を順番にデコードしながら、右から左へデコードする列を移動していく。
【0049】
また、上述したように各コードワードは8ビットで構成されるため、D1〜D46及びE1〜E88はそれぞれ8つのセルで構成されることとなる。但し、最初のデータコードワードD1は4ビットで構成されている。しかし、誤り訂正のためのリード・ソロモン計算時は、4個のゼロビットを頭に付けて8ビットのコードワードとして処理される。
【0050】
そして、46個のデータコードワードの内のD1〜D23によってデータブロック1が構成され、D24〜D46によってデータブロック2が構成される。それに対応して、RSコードワードの内のE1〜D44によってRSブロック1が構成され、E45〜D88によってRSブロック2が構成される。つまり、情報記録領域56は複数(ここでは4つ)のブロックに分割されている。なお、図5では、判り易いように、データブロック2及びRSブロック2をそれぞれ太枠にて囲ってある。
【0051】
バージョン1〜8が主に総コードワード数の違いに対応することを説明したが、誤り訂正レベル(L,M,Q,H)は、例えばRSコードワード数やRSブロック数あるいはデータコードワード数などを規定する。例えば、図5に示す例は、バージョン5−Hに対応するものであり、RSコードワード数が88でRSブロック数が2である。したがって、上述したようにバージョン5の総コードワード数は134であるため、ブロック単位で考えると、1つのデータブロックは23個のデータコードワードで構成され、1つのRSブロックは44個のコードワードで構成され、それらの組み合わせが2セット存在することとなる。
【0052】
なお、ここで説明している規格の場合には、同じバージョン5でもL,M,QについてはRSブロック数が1である。また、誤り訂正能力は、誤り訂正レベルで言えばH→Q→M→Lの順番で小さくなっている。全体の内のどの程度の割合のコードワードが破損などで読み取れなくても誤り訂正によって正常にデコードすることができるかを示す許容破損率で示すと、以下のようになる。
【0053】
誤り訂正レベルH…約30%
誤り訂正レベルQ…約25%
誤り訂正レベルM…約20%
誤り訂正レベルL…約10%
このようなバージョン情報とその実質的な内容(総コードワード数、RSコードワード数、誤り訂正能力など)との対応関係が、2次元コード読取装置2の例えば制御回路28内のRAM等にテーブル化して格納されている。
【0054】
そして、図5で言えば134個のコードワードD1〜D44,E1〜E88の内の所定位置には、インジケータと呼ばれるコードが記録される。これは、記録されているビット列が何を意味しているのかを定義するための「記録形式指示コード」である。本実施例では4ビットで示すこととし、例えば0001は数字、0010は英数字、1000は漢字といった具合である。本実施例では、このインジケータが記録されている部分から再度インジケータが記録されるまでの間の記録形式を定義することとする。
【0055】
このインジケータは、図6に示すように、各ブロックの先頭、つまりデータブロック1の先頭のデータコードワードD1、データブロック2の先頭のデータコードワードD24、RSブロック1の先頭のRSコードワードE1、RSブロック2の先頭のRSコードワードE45にそれぞれインジケータが記録されている。もちろん、データブロック1中で記録形式が変化する場合には、対応するデータコードワードDnにインジケータが記録される。他のブロックについても同様である。
【0056】
このように、各ブロックの先頭にインジケータを記録することは、次のような利点がある。
図10(a)に示すように、従来は、第1ブロックの最初にインジケータαがあり、第1ブロックの途中で記録形式が変わるとその場所にインジケータβが配置され、第2ブロックは第1ブロックの最後と同じ記録形式であった場合、第2ブロック内にはインジケータが存在しなかった。第1ブロックも正常にデコードできれば問題ないが、インジケータβを含む第1ブロックの一部あるいは全部が破損し、インジケータβがデコードできなかった場合には、第2ブロックに記録された情報の記録形式を特定することができない。つまり、図5の場合で言えば、データブロック1内のインジケータが破損されている場合には、データブロック2に記録された情報については全く破損などがなくても、それが数字を示すものなのか漢字を示すものなのか、といった記録形式が判らないため、結果的に読み取れなくなる。
【0057】
それに対して、本実施例の場合には、図10(b)に示すように、第2ブロックの記録形式を示すインジケータγを第2ブロックの先頭に配置した。インジケータγは第1ブロック内のインジケータβと同じであるが、このように重複する場合であっても自ブロック内に配置することで、第1ブロックの情報のデコードの可否に影響されず、第2ブロックだけでもデコードすることができるようになる。したがって、図5の場合で言えば、データブロック1あるいはデータブロック2は、各々のブロックについて誤り訂正可能な範囲の破損であれば、他方のデータブロックの破損状況に関係なく、自ブロックの記録形式が把握できる。
【0058】
なお、図10(a),(b)では、第1ブロックの途中にインジケータβが配置され、第2ブロックは第1ブロックの最後と同じ記録形式である場合を想定したが、図10(c)に示すように、第1ブロックの最初にインジケータαがあり、第1ブロック及び第2ブロックの記録形式が同じ場合でも同様である。つまり、図10(d)に示すように、第2ブロックの先頭にはインジケータγを配置する。このインジケータγの記録形式はインジケータαと同じであるが、上述した理由で重複配置させる。
【0059】
次に、2次元コード読取装置2について説明する。図1に示すように、2次元コード読取装置2は、CCD4、2値化回路6、画像メモリ8、クロック信号出力回路14、アドレス発生回路16、変化点検出回路18、比検出回路20、アドレス記憶メモリ22および制御回路28から構成されている。
【0060】
制御回路28は、CPU、ROM、RAM、I/O等を備えたコンピュータシステムとして構成され、ROMに記憶されているプログラムに従って、2次元コード読み取り処理等を実行し、2次元コード読取装置2の各構成を制御する。この制御回路28は、以下に述べるごとく読み取り制御を行う。
【0061】
まず制御回路28の指示により、CCD4にて2次元コード52が通過する場所の2次元画像を検出する。CCD4は、2次元画像を検出すると、図4(a)に示すごとくの多段階のレベルからなる信号にて2次元画像データを出力する。この2次元画像データを、2値化回路6が制御回路28から指示された閾値にて2値化して、図4(b)に示すごとくの1(ハイ)/0(ロー)の2つのレベルからなる信号に変換する。
【0062】
一方、CCD4から出力される同期パルスに応じて、クロック信号出力回路14がCCD4から出力される2次元画像データのパルスより十分に細かいクロックパルスを出力する。アドレス発生回路16はこのクロックパルスをカウントして、画像メモリ8に対するアドレスを発生させる。2値化された2次元画像データは、このアドレス毎に8ビット単位で書き込まれる。
【0063】
一方、2値化回路6からの信号における「1」から「0」への変化あるいは「0」から「1」への変化時に、変化点検出回路18は、比検出回路20にパルス信号を出力する。比検出回路20は、変化点検出回路18からのパルス信号入力から次のパルス信号入力までに、クロック信号出力回路14から出力されたクロックパルスをカウントすることによって、2次元画像中の明(1)の連続する長さおよび暗(0)の連続する長さを求める。この長さの比から、2次元コード52の位置決め用シンボル54A,54B,54Cに該当するパターンを検出する。
【0064】
図3(A)に示したごとく、位置決め用シンボル54A,54B,54Cのほぼ中心を代表的な角度で横切るCCD4の走査線(a),(b),(c)での明暗パターンは、図3(B)に示すごとく、すべて同じ明暗成分比を持つ構造になっている。すなわち、位置決め用シンボル54A,54B,54Cの中心を横切るそれぞれの走査線(a),(b),(c)の明暗成分比は暗:明:暗:明:暗=1:1:3:1:1となっている。勿論、走査線(a),(b),(c)の中間の角度の走査線においても比率は1:1:3:1:1である。また、図3(A)の図形が、CCD4側から見て斜めの面に配置されていたとしても、前記走査線(a),(b),(c)の明暗成分比は暗:明:暗:明:暗=1:1:3:1:1を維持する。なお、図3(B)は、2値化回路6からの2値化された信号に該当する。
【0065】
このことにより、比検出回路20は、この「1:1:3:1:1」なる明暗成分比を検出し、検出した場合は、そのタイミングにアドレス発生回路16にて発生されている画像メモリ8のアドレスをアドレス記憶メモリ22に記憶する。
したがって、CCD4が1フレーム分の2次元画像データを検出すると、画像メモリ8には、2値化された2次元画像データが記憶され、アドレス記憶メモリ22には、検出された分の位置決め用シンボル54A,54B,54Cのアドレスが記憶されている。
【0066】
なお、最初の2次元画像の1フレーム分の画像が得られると、制御回路28は、画像メモリ8およびアドレス記憶メモリ22のデータに基づいて後述する2次元コード読み取り処理を行い、この処理が終了すれば、制御回路28は、続けて、CCD4に次の1フレームの2次元画像の検出を指示する。したがって、CCD4からは、再度、2次元画像が2値化回路6に出力され、上述したごとくの処理が繰り返される。
【0067】
次に、1フレーム分の2次元コード52の画像とその位置決め用シンボル54A,54B,54Cのアドレスが、画像メモリ8とアドレス記憶メモリ22とにそれぞれ記憶された後に、制御回路28は、2次元コード読み取り処理を実行する。この2次元コード読み取り処理を図7〜9のフローチャートを参照して説明する。
【0068】
処理が開始されると、まず、位置決め用シンボル54A,54B,54Cの検出処理が行われる(S100)。
この処理では、画像メモリ8およびアドレス記憶メモリ22に対してアクセスし、その記憶内容から位置決め用シンボル54A,54B,54Cが適切な位置に、3つ存在しているか否かの判断と位置決め用シンボル54A,54B,54Cの画像上での正確な形状と中心位置とを決定する。
【0069】
この処理は、まずアドレス記憶メモリ22に多数検出された位置決め用シンボル54A,54B,54Cのアドレスが、位置的に3つのグループに分けられるかを、そのアドレス値と画像メモリ8の画像とを参照しつつ判断する。更に、各位置決め用シンボル54A,54B,54Cの形状と中心位置とを、画像メモリ8の画像の1(白)/0(黒)のパターンから決定し、その3つが図2に示したごとく3つの頂点に存在する配置状態になっているかを判断する。
【0070】
次に、ステップS100にて適切な3つの位置決め用シンボル54A,54B,54Cが検出されたか否かが判定され(S120)、検出されていなければ(S110:NO)、次の画像の検出をCCD4に指示して(S180)、処理を終了する。
【0071】
適切な3つの位置決め用シンボル54A,54B,54Cが検出されると(S110:YES)、次に新しい2次元コード52か否かが判定される(S120)。この処理は、前回以前に検出された2次元コード52がいまだCCD4により検出され続けている場合に、別の2次元コードとして解読するのを防止するためである。例えば、前回または所定回数前の本処理にて、適切な3つの位置決め用シンボル54A,54B,54Cが検出され、更にそのコード内容も既に適切に読み取られていた場合には、同一の2次元コード52を検出しているものとして(S120:NO)、次の画像の検出をCCD4に指示して(S280)、処理を終了する。
【0072】
新しい2次元コード52であると判定すると(S120:YES)、次に位置決め用シンボル54A,54B,54Cの形状に応じて、各位置決め用シンボル54A,54B,54Cを構成する各セルの形状と中心位置が計算される(S130)。
【0073】
すなわち、まず、位置決め用シンボル54A,54B,54Cについては、図2,図3(A)に示すように、黒の枠状正方形55aの幅が1セル分、白の枠状正方形55bの幅が1セル分、および黒の正方形55cの幅が3セル分の形状であることから、画像メモリ8内の各位置決め用シンボル54A,54B,54C全体の高さと幅とから、その高さと幅とをそれぞれ7で割ることにより、各位置決め用シンボル54A,54B,54Cの位置におけるセルの高さと幅の値、すなわちセルの形状を各3つ得る。
【0074】
次に、このようにして求められた各位置決め用シンボル54A,54B,54Cにおけるセルの高さと幅に基づいて、各位置決め用シンボル54A,54B,54Cにおける各セル位置を決定する。
次に、位置決め用シンボル54Aに基づいてフォーマットコード70の検出処理を行う(S140)。このフォーマットコード70は、位置決め用シンボル54Aの最外周の枠状正方形55a(図3(A)参照)を構成する4辺の内、位置決め用シンボル54Bに対向する辺に対して、1セル分だけ離れて平行に配置されている。したがって、この関係に基づけばフォーマットコード70の位置が判り、コード検出することができる。
【0075】
次に、設定されている処理モードが第1のデコード処理であるかどうかを判断する(S150)。本実施例においては、詳しくは後述するように、従来通りに情報記録領域56全体を対象としたデコード(全体デコード処理)を行い、失敗した場合にだけブロック単位でのデコード(部分デコード処理)を実施する第1のデコード処理と、最初から部分デコード処理を実施する第2のデコード処理があり、ユーザが図示しない設定スイッチなどを操作していずれかを設定できるようになっている。このS150ではその設定結果に基づいて、第1のデコード処理が設定されているかどうかを判断するのである。そして、第1のデコード処理が設定されている場合は(S150:YES)、第1のデコード処理を実行し(S160)、第2のデコード処理が設定されている場合は(S150:NO)、第2のデコード処理を実行する(S170)。
【0076】
ここで、S160において実行する第1のデコード処理及びS170において実行する第2のデコード処理の詳細について、図8,9のフローチャートを参照して説明する。
まず、S160での第1のデコード処理について説明する。
【0077】
図8に示すように、本処理ルーチンが開始すると、まず、全体デコード処理を実行する(S161)。具体的には、図7のS140にて検出したフォーマットコード70に基づき、そのバージョンに対応する2次元コード52中の情報記録領域56の存在するエリアを特定する。本実施例の場合には1セルのサイズは予め固定であるため、存在エリア及びセルの大きさが判り、図7のS130にて検出された位置決め用シンボル54A,54B,54Cの形状及び中心位置に基づいて、情報記録領域56の各データセルの中心位置を決定する。そして、各データセルの中心位置の画素から2値を読み取り、各セルの種類を決定しコード内容を得る。すなわち情報記録領域56内の全てのコードワードを対象としたデコード処理を行う。
【0078】
なお、このデコードの際には、必要に応じてフォーマットコード70から得たフォーマット情報に基づいた処理を実行する。例えば、図5に示すように、コードワードは基本的に2セル×4セルで構成されることとなるが、縦長のものと横長のものが混在している。したがって、どのようなセルグループでコードワードが構成されるかというフォーマット情報をフォーマットコード70から得て、それに基づいてデコードすればよい。
【0079】
こうして、全体デコード処理(S161)を実行した後は、続くS162において、デコードしたコード内容が正常なものか否かが判定される。なお、S161における全体デコード処理では、RSコードワードを用いた誤り訂正が行われているため、その誤り訂正レベル以内の破損であれば正常なコード内容が得られるが、誤り訂正レベルを超える破損などがあると正常なコード内容を得ることはできない。
【0080】
コード内容が正常であれば(S162:YES)、そのまま本処理ルーチンを終了して、図7のS180へ移行するが、コード内容が正常でなければ(S162:NO)、S163へ移行する。
S163では情報記録領域56が複数のブロックに分割されているかどうかを判断する。複数ブロックに分割されていない場合には(S163:NO)、ブロック単位でのデコードが不可能なので、そのまま本処理ルーチンを終了する。
【0081】
一方、複数ブロックに分割されていれば(S163:YES)、デコード順序に従ってコードワードD1…D46,E1…E88を探索して、インジケータを検出する(S164)。そして、インジケータを検出できた場合には(S165:YES)、そのインジケータが含まれるブロックについてデコード処理(部分デコード処理)を行う(S166)。
【0082】
その後、S164へ戻る。なお、S164へ戻って行うインジケータ検出は、直前のS166でのデコード処理にてデコードしたブロックの後に存在するインジケータを検出する。このようにして、インジケータが検出できる限り、対応するブロックのデコード処理(S166)を行い、インジケータが検出できなくなった時点で(S165:NO)、S167へ移行する。このようにすることで、インジケータが検出できたブロックについてはそのインジケータで定義される記録形式に基づいてデコードすることができる。もちろん、コードワードの破損量が多ければ、誤り訂正によっても正常にコード内容を得ることができないかもしれないが、そのような判断もブロック単位で行われる。
【0083】
S167では、コード内容結合処理を実行する。このコード内容結合処理は、ブロック単位でデコードされたコード内容を、必要に応じて結合する処理である。つまり、デコードしたブロック単位のコード内容をどのように使用するかによってこの結合処理は変えればよく、例えば結合をしない場合もあるし、特定のブロックのコード内容のみを結合させることも考えられる。
【0084】
S167でのコード内容結合処理の後は、本処理ルーチンを終了して、図7のS180へ移行する。
次に、S170での第2のデコード処理について説明する。
図9に示すように、本処理ルーチンが開始すると、まず、情報記録領域56が複数のブロックに分割されているかどうかを判断する(S171)。複数ブロックに分割されていない場合には(S171:NO)、ブロック単位でのデコードが不可能なので、そのまま本処理ルーチンを終了する。
【0085】
一方、複数ブロックに分割されていれば(S171:YES)、デコード順序を決定する(S172)。図7のS140にて検出したフォーマットコード70に基づき、そのバージョンが判るので、情報記録領域56内に存在するブロックの数及びその存在エリアが判る。そして、例えば図5に示すようにデータブロック及びRSブロックがそれぞれ2つずつ存在する場合であれば、4つのブロックをどのような順序でデコードしていくかを決定する。なお、必ずしもデータブロック1→データブロック2→RSブロック1→RSブロック2の順序でデコードしなくてもよいので、S172では、任意の順序を決定すればよい。
【0086】
デコード順序が決定した後は、順序番号n=1にして(S173)、順序nのブロックにおけるインジケータを検出する(S174)。そして、インジケータを検出できなかった場合には(S175:NO)、S177へ移行するが、インジケータを検出できた場合には(S175:YES)、そのインジケータが含まれるブロックについてデコード処理(部分デコード処理)を行ってから(S176)、S177へ移行する。
【0087】
S177では、順序番号をインクリメント(n=n+1)し、その順序nのブロックがあるかどうかを判断する(S178)。順序nのブロックがあれば(S178:YES)、S174へ戻る。このようにして、S172にて設定された順序に従ってインジケータを検出し、対応するブロックのデコード処理(S176)を行い、全てデコードし終えた場合(S178:NO)、コード内容結合処理を実行する(S179)。このコード内容結合処理は、上述した図8のS168と同様なので説明は繰り返さない。
【0088】
S179でのコード内容結合処理の後は、本処理ルーチンを終了して、図7のS180へ移行する。
このように、本実施例の2次元コード読取装置2においては、ブロックの先頭に配置されたインジケータの示す記録形式に基づいて当該ブロック内のコードをデコードする部分デコード処理を、複数のブロックについてそれぞれ行い、その複数のブロックのデコード結果に基づいて、2次元コード52の内容を読み取ることができる。ブロック内のコードに対する記録形式は、自ブロックの先頭のインジケータさえあれば特定できるため、他のブロックでのデコード結果に影響を受けずにデコードすることができる。したがって、ブロック単位で実行する部分デコード処理によって、ブロック単位で極力多くの情報を読み取ることができるようになる。
【0089】
例えば、図20に示す2次元コード(QRコード)は、図5に示すものと同じバージョン5−Hであり、約30%のコードワードの破損があっても誤り訂正が可能である。しかし、図20中に網掛けして示したように、データブロック1を構成するデータコードワードD1〜D23と、RSブロック1内のRSコードワードE1〜D44が破損などで読み取れない場合、コードワードの破損率は67/134=50%で誤り訂正可能な30%を超えているため、データ解読が不可能であると判断される。
【0090】
ところが、図20からも判るように、この場合には、データブロック2を構成するデータコードワードD24〜D46については全く破損しておらず、この部分だけを取り出せれば、データ解読ができるのである。つまり、全コードワード数を基準にして見ると、破損度合いが誤り訂正レベルを超えている場合であっても、データブロックが複数に分割されている場合には、ブロック単位で見ると破損率が小さく、誤り訂正によって十分にデータ解読できるような場合もある。
【0091】
上述したように、本実施例ではブロックの先頭にインジケータを配置することで、ブロック単位でデコードすることができるようにしたため、図20のような状況であれば、データブロック2のコードを正常にデコードすることができる。なお、本実施例では、第1のデコード処理(S160)と第2のデコード処理を選択的に実行することとしたが、それぞれのデコード処理の利点は次の通りである。まず、第1のデコード処理の場合は、最初に情報記録領域56全体をデコード対象とした全体デコード処理を実行し(S161)、その全体デコード処理によっては情報記録領域56の内容を正常に読み取ることができなかった場合に限って(S162:NO)、部分デコード処理を実行している(S164〜S167)。そのため、S161の全体デコード処理によって正常に読み取れれば、部分デコード処理は不要となる。したがって、情報記録領域56の誤り訂正限度以上の破損が発生することが少ないと想定される状況においてはこの第1のデコード処理が有効である。
【0092】
逆に、情報記録領域56の誤り訂正限度以上の破損が発生することが多いと想定される状況においては、一旦、全体デコード処理をしてから、再度部分デコード処理を行う必要があるため、最初から部分デコード処理のみを実行する第2のデコード処理の方が有効である。
【0093】
以上、本発明はこのような実施形態に何等限定されるものではなく、本発明の主旨を逸脱しない範囲において種々なる形態で実施し得る。それらのいくつかを説明する。
(1)上述した実施例では、インジケータをブロックの先頭に配置したが、ブロックの内のどこかに配置されていれば記録形式が判り、ブロック単位でのデコードが可能となる。但し、ブロックの先頭に配置されている方が処理効率としては有利である。なぜなら、ブロックの途中に配置されていると、その記録形式指示コードを見つけた後、デコード順序からすれば前に戻ってブロックの最初から処理をしなければならないのに対し、先頭に配置されていれば、部分デコード処理は、インジケータの示す記録形式に基づいて、当該インジケータ以降に記録された情報をデコードすればよいからである。つまりデコード順序に従って順次処理することができる。
【0094】
(2)また、上述した実施例では、バージョン情報とその実質的な内容(総コードワード数、RSコードワード数、誤り訂正能力など)との対応関係を、2次元コード読取装置2の制御回路28内のRAM等にテーブル化して格納しておき、フォーマットコード70から得たバージョン情報を基にして、情報記録領域56中の複数のブロックの存在エリアを特定した。しかし、自ブロックの存在領域を直接あるいは間接的に特定可能な存在領域指示コードを作成し、ブロック内に配置しておいてもよい。このような2次元コードの場合には、2次元コードの画像を得ると共に、その画像中での存在領域指示コードを検出し、その存在領域指示コードに基づいてデコード対象のブロックの存在領域を特定し、部分デコード処理を実行すればよい。そして、このような存在領域指示コードを配置する場合には、上述したインジケータと合わせて一つのコードワードを構成することが望ましい。そうすれば、インジケータを特定した後、それに続いて配置された存在領域指示コードを自動的に特定したり、逆に、存在領域指示コードを特定した後、それに続いて配置されたインジケータを自動的に特定できるからである。
【0095】
(3)上述した実施例では、2次元コード52の例としてQRコードを例に取って説明したが、他の2次元コードであっても同様に適用できる。
(4)上述した実施例で読取対象として説明した2次元コード52においては、例えば図2に示すように、位置決め用シンボル54A〜54Cを二重の正方形で、中心を横切る周波数成分比が黒:白:黒:白:黒=1:1:3:1:1の図形で表していたが、図11(a)のように円形でもよく、図11(b)のように六角形でもよく、また他の正多角形でも良い。即ち、同心状に相似形の図形が重なり合う形に形成したものであればよく、図7のS100にて行う位置決め用シンボル検出処理の内容はなんら変わらない。さらに、中心を横切る周波数成分比があらゆる角度で同じならば、図11(c)に示すごとく、図形を何重にしても良い。この場合には、対応する周波数成分比を検出する処理が、図7のS100にて行う位置決め用シンボル検出処理となるだけである。
【0096】
(5)さらに、上述した実施例では、例えば図2に示すように、読取対象の2次元コード52の外形を正方形で示したが、長方形でも良い。また、例えば図2に示すように、位置決め用シンボル54A〜54Cは、2次元コード52の4つの頂点の内、3つに配置されていたが、2次元コード52内での配置は任意である。また1つの2次元コード52に4つ以上の位置決め用シンボルを設けても良い。
【0097】
(6)また位置決め用シンボルは2つでも良い。この場合に対角の2頂点に位置決め用シンボルを配置すれば2次元コード52の配置は決定する。
(7)また、前記実施例では、位置決め用シンボル54A〜54Cは比検出回路20によりハード的に検出していたが、ソフト的に検出しても良い。
【0098】
(8)さらに、上述した実施例においては、2次元コード52を構成するセルサイズを全て同じにしたが、図12に示す2次元コード152のように、ブロック単位でセルサイズを変更しても良い。この場合、コード化したい情報の重要度が高いほどセルサイズを大きくすることが考えられる。セルサイズが大きいほど、汚れや(2次元コード152を印刷する場合には)印刷精度などの影響を受けにくく、データ解読がより確実に実現できるようになるからである。なお、この図12に示す例では誤り訂正ブロックが存在するので、セルサイズは「ブロック対」単位で変更する。
【0099】
(9)また、ブロック単位でデコードできるという特徴を鑑みれば、図13に示す2次元コード252ように、あるブロックにはセルを配置せず、人間が視認可能な情報を書き込むようにしてもよい。例えば、漢字・仮名文字・英数字・各種記号である。但し各種記号の場合には、その記号の表す意味をユーザが知っていることが前提である。そして、この「人間が視認可能な情報」は、別のブロックの情報との間で特定の関係を持たせる。例えば、パーソナルデータが情報として別のブロックにある場合、その一部に個人名が存在していればそれを記してもよいし、情報内に個人名がなく(例えば数字などで管理されている場合)ても、誰のデータかを示すために個人名を記すことが考えられる。また、何に関するデータであるかを示すテーマを記してもよい。
【0100】
このようにすれば、少なくとも誰に(何に)関するデータが記された2次元コード252なのかかが判り、管理面でのメリットが期待できる。これはいわば、キャッシュカードやクレジットカードなどにおいてカードにエンボス加工で所有者名を記す場合と、その目的は似ている。
【0101】
(10)また、同様にブロック単位でデコードできるという特徴を鑑みれば、図14に示す2次元コード352のように、2次元コード352の情報記録領域中の複数のブロックの内、特定のブロックの情報についてのみ、特殊な読取装置でなければ実質的な内容が読み取れない状態で記録しておくようにしてもよい。つまり、特殊な読取装置でなければ実質的な内容が読み取れない「特殊規格」に沿って記録した領域と、一般的な読取装置で読み取ることのできる「一般規格」に沿って記録した領域とを混在させて構成するのである。なお、この図14に示す例では誤り訂正ブロックが存在するので、特殊な読取装置でなければ実質的な内容が読み取れない状態で記録する対象も、「ブロック対」単位とする。
【0102】
具体的には、特殊規格に沿った記録領域については、磁気インクあるいは特定波長を変調する特殊なインクで記録されていることにより、光学的には読み取れない状態で記録することが考えられる。特殊なインクは、小切手や手形、あるいは紙幣などにおいても実現されているものである。したがって、磁気インクなどに限らず、同様の目的で用いられる「特殊インク」であればどのようなものでも採用可能である。
【0103】
また、光学的な読取自体は一般的な読取装置でも可能であるが、特殊規格に沿った記録領域の情報に対して所定の暗号化処理を施すことにより、読み取った情報をさらに暗号解読しなくては実質的な内容が読み取れない状態で記録しておいてもよい。
【0104】
このような2次元コード352であれば、コード化する情報の一部に機密性が高い情報が含まれている場合に、その情報の漏洩防止に有効である。例えば健康診断などのプライバシー性の高い情報を処理する際、事務処理に必要な事項については通常の読取装置で読み取れるようにし、実質的な診断内容については専用の読取装置でないと読み取れないようにする。なお、機密性の高い情報には、上述した健康診断などのプライバシー性の高い情報だけでなく、例えば会社内で運用する場合には社外秘とされる情報などがこれに該当する。
【0105】
そして、このように機密性の高い情報をコード化する場合、例えばコード全体を特殊規格にする手法も考えられるが、事務的処理自体も専用の読取装置で扱う必要が出てくる。したがって、実質的に機密性の高い情報内容が漏洩することを防止しながら、事務的処理自体は通常通り(つまり重要度の低い情報がコード化された2次元コードと同様に)行うことができる本2次元コード352の有用性は明らかである。
【0106】
(11)さらに、上述した実施例においては、複数のブロック対、つまりデータブロック1+RSブロック1で構成される第1のブロック対と、データブロック2+RSブロック2で構成される第2のブロック対が存在していたが、これらの誤り訂正レベルは一定であった。しかしながら、ブロック単位での部分デコード処理が実行できることが前提となる場合には、図15に示す2次元コード452のように、ブロック対単位で誤り訂正レベルを個別に設定することもできる。例えば第1のブロック対については誤り訂正レベルHとし、第2のブロック対については誤り訂正レベルLとするといった具合である。
【0107】
このようにすれば、コード化される情報の内容の重要度などに応じて適切な誤り訂正率を選択設定することができる。つまり、重要度の異なる情報があった場合に、全ての情報に対して誤り訂正率を高くしてしまうと、あまり重要でない情報について設定された誤り訂正用情報に無駄が生じるが、このように区別して設定できれば、合理的なコード化を実現することができる。
【0108】
そして、このようにブロック対単位で誤り訂正レベルを変更できるようにした場合には、誤り訂正率を指示するための訂正率指示コードを上述のインジケータに含めておくことが好ましい。具体的には、誤り訂正レベルを変更した場合にのみ、インジケータの先頭に所定のビット列(例えば000000)を付け、続けて誤り訂正レベルを示すビット列を付ける。誤り訂正レベルを示すビット列としては、例えば規格で定められた次のビット列を用いる。
【0109】
誤り訂正レベルM…ビット列00
誤り訂正レベルL…ビット列01
誤り訂正レベルQ…ビット列11
誤り訂正レベルH…ビット列10
そうすれば、2次元コード452を読み取る場合に、部分デコード処理として、訂正率指示コードの示す誤り訂正率に基づいて、該当するブロックに記録された情報をデコードすればよい。そのデコード処理について図16のフローチャートを参照して説明する。
【0110】
まず、各ブロックの先頭のインジケータビットをチェックし(S310)、ビット列「000000」が存在しているか否かを判断する(S320)。上述したように、誤り訂正レベルを変更した場合にのみ、インジケータの先頭にビット列「000000」が付けられている。そこで、ビット列「000000」が存在する場合には(S320:YES)、S330へ移行し、ビット列「000000」の後の2ビットに基づいて誤り訂正レベルを取得し、その誤り訂正レベルにて該当ブロックをデコードする。
【0111】
一方、当該ビット列が存在しない場合には(S320:NO)、S340へ移行して、通常のデコード手法にてデコードする(S340)。この場合には、ブロック内に誤り訂正レベルを示す情報はないが、図2に示すフォーマットコード70から得られるバージョン情報に基づいてコード全体の誤り訂正レベルを判断できる。
【0112】
以上は、ブロック単位で誤り訂正レベルを変更した2次元コード452及びその読取方法に関して説明したが、このような2次元コード452を生成する際には、通常とは異なる考慮が必要なので、次に、コード生成に関して説明する。ここでいうコード生成とは、例えば最終的に2次元コード452を台紙に印刷するのであれば、その印刷用のデータを生成することを意味する。したがって、コード生成のための装置としては、印刷まで行うのであれば、コンピュータシステムとプリンタを備えればよい。コンピュータシステムは、ユーザ入力のためのキーボードやマウス、ユーザが内容確認するためのディスプレイなどを備える。
【0113】
それでは、このような生成装置にて実行される生成方法の概略を最初に説明し、その後に、具体的な処理内容についてフローチャートを参照して説明する。
[生成方法の概略]
まず、コード化すべき情報を、初期値として指定された誤り訂正率に基づいてコード生成する。その上で、ブロック対単位での誤り訂正率の変更が指示されている場合には、その変更後の誤り訂正率に基づいてコード生成し直す。そして、コード生成をし直した状態で、コード化すべき情報が対応するブロック内に収まっているか否かのオーバーフロー判定を行う。このオーバーフロー判定にてブロック内に収まらないと判定された場合には、情報記録領域の広いフォーマットに基づいてコード生成し直してからオーバーフロー判定を再度行う。当然ながら、再度ブロック内に収まらないと判定された場合には、さらに情報記録領域の広いフォーマットに基づいてコード生成し直してからオーバーフロー判定を行う。一方、オーバーフロー判定にてブロック内に収まっていると判定された場合には、コード生成完了とする。
【0114】
このようにすれば、コード化すべき情報を全てコード化しながら、重要度が高い情報について誤り訂正率を高くすることが可能となる。もちろん、コード化すべき情報量が相対的に少なく、誤り訂正率を高くする前の状態において、ブロック内の一部にしか実質的に意味のあるコードが存在しない場合には、誤り訂正率を高くした場合にも、オーバーフローしない可能性も考えられる。しかし、一般的には、コード化すべき情報を全てコード化する前提であれば、情報記録領域の広いフォーマットに基づいてコード生成し直す(一般的には「バージョンを大きくする」などと呼ばれる。)ことが必要であるため、このような生成方法が適切である。
そして、このようにブロック対単位での誤り訂正率が異なる場合には、そのブロック対単位での誤り訂正率を示す訂正率指示コードをブロック毎に含める構成を採用することが望ましい。したがって、その場合の生成方法としては、誤り訂正率を示す訂正率指示コードをブロック毎に含めてコード生成を行えばよい。なお、ブロック対単位での誤り訂正率を変更しないような2次元コードも生成できるようにするためには、ブロック対単位での誤り訂正率の変更が指示されていない場合には、訂正率指示コードを含めないようにすれば対処できる。
【0115】
[具体的な処理内容]
図17のフローチャートは2次元コード452の生成処理を示しているが、この処理が開始される前の準備として、▲1▼誤り訂正レベルをブロック毎に変える変更モードか、変更しない通常モードかの指定、▲2▼誤り訂正率の指定、がユーザによってなされる。この誤り訂正率の指定は、上述したH,Q,M,Lという誤り訂正レベルで指定すればよい。なお、以降の説明においても、誤り訂正率は具体的には誤り訂正レベルとして取り扱われることとなる。
【0116】
上述した前準備がなされ、コード生成を開始すると、図17の最初のステップ510に示すように、ブロック毎に訂正レベルを変更するかどうかを判定する(S510)。これは、上述のモード指定の結果に基づいて判定する。
そして、ブロック毎に訂正レベルを変更しない場合には(S510:NO)、S520へ移行し、コード化したい情報を入力して、各ブロックともに同じ誤り訂正率(上記▲2▼で指定された誤り訂正レベルに基づく訂正率)で生成する。この場合には、各ブロック先頭のインジケータには訂正率情報は含まれない。したがって、デコード時には、上述した図19のS320にて否定判定となり、通常のデコード手法にてデコードを行うこととなる。
【0117】
一方、ブロック毎に訂正レベルを変更する場合には(S510:YES)、S530へ移行し、まずS520と同様に、コード化したい情報を入力して、各ブロックともに同じ誤り訂正率で生成する。
そして、続くS540で、誤り訂正率を変えたいブロック及び変更後の誤り訂正率を受け付ける。上記▲2▼で指定された誤り訂正率が前提であるので、その訂正率から変更したいブロックについてのみ訂正率の受付を行う。この誤り訂正率の受付は、例えばディスプレイに設定画面を表示し、キーボードやマウスによってユーザからの入力を受け付ければよい。ユーザの指定方法を考慮すると、最初に訂正率の小さな方を指定しておき、このステップでは訂正率を大きくする方を指定するのが一般的かと思われる。もちろん、レアケースであるが、最初の指定訂正率から全てのブロックについて変更することも考えられる。例えば訂正レベルを間違って指定してしまった場合などである。
【0118】
続くS550では、誤り訂正率を変更する対象のブロック先頭のインジケータに、所定のビット列「000000」及び訂正率を示す2ビットを付加する。誤り訂正率を示すビット列は、上述したように、誤り訂正レベルM,L,Q,Hに対してそれぞれビット列00,01,11,10が規格により定められている。
【0119】
続くS560では、誤り訂正率を変更した後の情報量を、該当するブロックの記録可能な容量と比較し、S570では、オーバーフロー(誤り訂正率を変更した後の情報量>記録可能容量)したか否かを判定する。
オーバーフローしていなければ(S570:NO)、これでコード生成処理を終了する。なお、一般的には誤り訂正率を大きくするため、最初の判定ではオーバーフローすることが多いと考えられるが、レアケースとして、誤り訂正率を小さくした場合、あるいは誤り訂正率を大きくしたが元々の情報量が少なかったため、誤り訂正率を大きくしてもブロック内に収まるような場合には、最初のオーバーフロー判定にて否定判定(S570:NO)となる。
【0120】
一方、オーバーフローしている場合には(S570:YES)、このままのバージョンでは収まりきらないため、S580へ移行して、バージョンを所定段階大きくする。その後、S560へ戻って、再度、該当するブロックの容量と比較する。バージョンが大きくなれば、当然ながら該当するブロックの容量も従前よりは大きくなっているので、S570での判定にてオーバーフローでなくなる可能性が高い。オーバーフローでなくなれば(S570:NO)、コード生成処理を終了する。
【0121】
なお、バージョンを大きくする際には、オーバーフローしたビット数を考慮して、そのオーバーフローした分が収まるような容量を持つ最小のバージョンを決定することが好ましい。これは、極力小さなバージョンのものを用いた方が、コードサイズが小さくなるからである。また、オーバーフローしたビット数を考慮せずに、機械的に1バージョンずつ大きくしていく方法もある。このようにすれば、何回かバージョンを大きくした時点で、オーバーフローしない状態となるからである。
【0122】
なお、このように生成されたコードは、例えば印刷用のデータに変換されて印刷されることとなる。
【図面の簡単な説明】
【図1】 実施例における2次元コード読取装置の概略構成を表すブロック図である。
【図2】 実施例における2次元コードの概略構成説明図である。
【図3】 実施例における位置決め用シンボルを走査した場合の明暗検出の説明図である。
【図4】 実施例におけるCCDと2値化回路との出力信号の説明図である。
【図5】 実施例における2次元コードの情報記録領域内のコードワードの構成を示す説明図である。
【図6】 実施例における2次元コードの情報記録領域内におけるインジケータの配置場所を示す説明図である。
【図7】 実施例における2次元コード読み取り処理の全体を示すフローチャートである。
【図8】 実施例における2次元コード読み取り処理内で実行される第1のデコード処理ルーチンを示すフローチャートである。
【図9】 実施例における2次元コード読み取り処理内で実行される第2のデコード処理ルーチンを示すフローチャートである。
【図10】 記録形式指示コード(インジケータ)の配置に関する従来技術と本願発明との対比説明図である。
【図11】 位置決め用シンボルの他の形状の例を示す説明図である。
【図12】 別実施例における2次元コードの概略構成説明図である。
【図13】 別実施例における2次元コードの概略構成説明図である。
【図14】 別実施例における2次元コードの概略構成説明図である。
【図15】 別実施例における2次元コードの概略構成説明図である。
【図16】 図15に示す別実施例における2次元コードのデコード方法を示すフローチャートである。
【図17】 図15に示す別実施例における2次元コードの生成方法を示すフローチャートである。
【図18】 従来のバーコードおよび2次元コードの説明図である。
【図19】 従来の2次元コードの概略構成説明図である。
【図20】 2次元コードの情報記録領域内のコードワードの50%が破損した状態を示す説明図である。
【符号の説明】
2…2次元コード読取装置 4…CCD
6…2値化回路 8…画像メモリ
14…クロック信号出力回路 16…アドレス発生回路
18…変化点検出回路 20…比検出回路
20a…タイミングセル 22…アドレス記憶メモリ
28…制御回路
52,152,252,352,452…2次元コード
53…台紙 54A,54B…位置決め用シンボル
55…頂点検出用セル 55a,55b…枠状正方形
55c…正方形 56…情報記録領域
70…フォーマットコード 500…2次元コード
510a,510b,510c…位置決め用シンボル
512,516…黒い正方形 514…白い正方形
520a,520b…タイミングセル 530…情報記録領域
Claims (3)
- セルの分布パターンによって情報を表現する2次元コードであり、情報記録領域が複数のブロックに分割されていると共に、前記ブロック内に記録されている情報の記録形式を示す記録形式指示コードが前記ブロック毎に含まれ、前記複数のブロックの内の少なくとも一つには、他のブロックに記録された情報の誤り訂正用の情報が記録されており、さらに、前記情報の記録された情報ブロック及び当該情報ブロックに記録された情報の誤り訂正用の情報が記録された誤り訂正ブロックによって構成されるブロック対が前記情報記録領域中に複数存在する場合に、そのブロック対単位で個別に設定された誤り訂正率に基づいて記録されており、当該ブロック対単位での誤り訂正率を示す訂正率指示コードが前記ブロック毎に含まれた2次元コードを生成する方法であって、
まず、コード化すべき情報を、初期値として指定された誤り訂正率に基づいてコード生成した上で、前記ブロック対単位での誤り訂正率の変更が指示されている場合には、その変更後の誤り訂正率に基づいてコード生成し直し、
コード生成をし直した状態で、コード化すべき情報が対応するブロック内に収まっているか否かのオーバーフロー判定を行い、
当該オーバーフロー判定にてブロック内に収まらないと判定された場合には、情報記録領域の広いフォーマットに基づいてコード生成し直してから前記オーバーフロー判定を再度行い、一方、前記オーバーフロー判定にてブロック内に収まっていると判定された場合には、コード生成完了とすること、
を特徴とする2次元コードの生成方法。 - 請求項1記載の2次元コードの生成方法において、
前記ブロック対単位での誤り訂正率を示す訂正率指示コードを前記ブロック毎に含めてコード生成を行うこと、
を特徴とする2次元コードの生成方法。 - 請求項2記載の2次元コードの生成方法において、
前記ブロック対単位での誤り訂正率の変更が指示されていない場合には、前記訂正率指示コードを含めないこと、
を特徴とする2次元コードの生成方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP12997999A JP4122629B2 (ja) | 1998-09-03 | 1999-05-11 | 2次元コードの生成方法 |
US09/383,991 US6279830B1 (en) | 1998-09-03 | 1999-08-26 | Two-dimensional code, reading and producing method and recording medium storing related software |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP24979698 | 1998-09-03 | ||
JP10-249796 | 1998-09-03 | ||
JP12997999A JP4122629B2 (ja) | 1998-09-03 | 1999-05-11 | 2次元コードの生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000148922A JP2000148922A (ja) | 2000-05-30 |
JP4122629B2 true JP4122629B2 (ja) | 2008-07-23 |
Family
ID=26465217
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP12997999A Expired - Fee Related JP4122629B2 (ja) | 1998-09-03 | 1999-05-11 | 2次元コードの生成方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6279830B1 (ja) |
JP (1) | JP4122629B2 (ja) |
Families Citing this family (76)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7386600B1 (en) * | 1998-09-11 | 2008-06-10 | Lv Partners, L.P. | Launching a web site using a personal device |
US7379901B1 (en) | 1998-09-11 | 2008-05-27 | Lv Partners, L.P. | Accessing a vendor web site using personal account information retrieved from a credit card company web site |
US6704864B1 (en) | 1999-08-19 | 2004-03-09 | L.V. Partners, L.P. | Automatic configuration of equipment software |
US7440993B1 (en) | 1998-09-11 | 2008-10-21 | Lv Partners, L.P. | Method and apparatus for launching a web browser in response to scanning of product information |
US6745234B1 (en) | 1998-09-11 | 2004-06-01 | Digital:Convergence Corporation | Method and apparatus for accessing a remote location by scanning an optical code |
US6636896B1 (en) | 1998-09-11 | 2003-10-21 | Lv Partners, L.P. | Method and apparatus for utilizing an audibly coded signal to conduct commerce over the internet |
US7191247B1 (en) | 1998-09-11 | 2007-03-13 | Lv Partners, Lp | Method for connecting a wireless device to a remote location on a network |
US6708208B1 (en) * | 1998-09-11 | 2004-03-16 | L.V. Partners, L.P. | Unique bar code for indicating a link between a product and a remote location on a web network |
US6868433B1 (en) | 1998-09-11 | 2005-03-15 | L.V. Partners, L.P. | Input device having positional and scanning capabilities |
US7392945B1 (en) | 1998-09-11 | 2008-07-01 | Lv Partners, L.P. | Portable scanner for enabling automatic commerce transactions |
US6823388B1 (en) | 1998-09-11 | 2004-11-23 | L.V. Parners, L.P. | Method and apparatus for accessing a remote location with an optical reader having a programmable memory system |
US6088482A (en) * | 1998-10-22 | 2000-07-11 | Symbol Technologies, Inc. | Techniques for reading two dimensional code, including maxicode |
US6502756B1 (en) * | 1999-05-28 | 2003-01-07 | Anoto Ab | Recording of information |
JP2001148833A (ja) * | 1999-09-12 | 2001-05-29 | Sony Computer Entertainment Inc | 圧縮画像データを復号処理する方法及び電子装置、並びに補助記録装置 |
US6427921B1 (en) * | 2000-12-19 | 2002-08-06 | Pitney Bowes Inc. | Hidden information on a document for authentication |
WO2003052749A2 (en) * | 2001-12-14 | 2003-06-26 | Koninklijke Philips Electronics N.V. | Optical readout device |
JP4039093B2 (ja) * | 2002-03-20 | 2008-01-30 | 富士ゼロックス株式会社 | 画像読取装置、複写装置、およびプログラム |
KR100414524B1 (ko) * | 2002-10-31 | 2004-01-16 | 주식회사 아이콘랩 | 복호 특성이 우수하며 단계별 에러레벨조정이 가능한2차원 코드 및 그 코드의 인코딩 디코딩 방법 |
US20050083413A1 (en) * | 2003-10-20 | 2005-04-21 | Logicalis | Method, system, apparatus, and machine-readable medium for use in connection with a server that uses images or audio for initiating remote function calls |
US7463774B2 (en) * | 2004-01-07 | 2008-12-09 | Microsoft Corporation | Global localization by fast image matching |
KR100560330B1 (ko) * | 2004-04-21 | 2006-03-30 | 에이디정보통신 주식회사 | 색상 보정이 가능한 대용량 2차원 칼라 바코드인코딩/디코딩 시스템 및 그 방법 |
US7739577B2 (en) * | 2004-06-03 | 2010-06-15 | Inphase Technologies | Data protection system |
CN100347714C (zh) * | 2004-09-07 | 2007-11-07 | 佳能株式会社 | 用于定位二维条形码的方法和设备 |
US7578436B1 (en) * | 2004-11-08 | 2009-08-25 | Pisafe, Inc. | Method and apparatus for providing secure document distribution |
WO2006089247A2 (en) * | 2005-02-16 | 2006-08-24 | Pisafe, Inc. | Method and system for creating and using redundant and high capacity barcodes |
JP4556705B2 (ja) * | 2005-02-28 | 2010-10-06 | 富士ゼロックス株式会社 | 2次元座標同定装置、画像形成装置及び2次元座標同定方法 |
JP4810918B2 (ja) * | 2005-08-01 | 2011-11-09 | 富士ゼロックス株式会社 | コードパターン画像生成装置及び方法、コードパターン画像読取装置及び方法、及びコードパターン画像媒体 |
JP4665710B2 (ja) * | 2005-10-21 | 2011-04-06 | 株式会社デンソーウェーブ | 情報コード担体 |
JP4777041B2 (ja) | 2005-10-26 | 2011-09-21 | キヤノン株式会社 | 画像処理装置、その画像処理装置におけるデータ処理方法およびプログラム |
US7571864B2 (en) | 2005-12-16 | 2009-08-11 | Pisafe, Inc. | Method and system for creating and using barcodes |
TW200734933A (en) * | 2006-03-06 | 2007-09-16 | Pixart Imaging Inc | Dot-matrix pattern design and decoding method and the device thereof |
US8086051B2 (en) * | 2006-03-06 | 2011-12-27 | Pixart Imaging Inc. | Method of decoding fetched scene on encoded dotmap and electronic device thereof |
US7546950B2 (en) * | 2006-03-28 | 2009-06-16 | Seiko Epson Corporation | Method and apparatus for locating and decoding a two-dimensional machine-readable symbol |
JP4815423B2 (ja) * | 2007-11-16 | 2011-11-16 | 東芝テック株式会社 | データコード読取装置及びその方法 |
AU2007254619B2 (en) * | 2007-12-21 | 2010-10-07 | Canon Kabushiki Kaisha | Barcode removal |
JP5136302B2 (ja) * | 2008-03-27 | 2013-02-06 | 株式会社デンソーウェーブ | 二次元コード、二次元コード生成方法、二次元コードを表示させるコンピュータ読み取り可能なプログラム、二次元コードを利用した認証方法、及び二次元コードを利用した情報提供方法 |
JP5120156B2 (ja) | 2008-03-27 | 2013-01-16 | 株式会社デンソーウェーブ | 二次元コード |
JP5229653B2 (ja) * | 2008-03-27 | 2013-07-03 | 株式会社デンソーウェーブ | 二次元コード、二次元コード生成方法、二次元コードを表示させるコンピュータ読み取り可能なプログラム、二次元コードを利用した認証方法、及び二次元コードを利用した情報提供方法 |
WO2010049415A1 (en) * | 2008-10-29 | 2010-05-06 | Schreiner Group Gmbh & Co. Kg | Method and apparatus for determining the position of a noise-like pattern within an image |
US9355293B2 (en) * | 2008-12-22 | 2016-05-31 | Canon Kabushiki Kaisha | Code detection and decoding system |
US9270420B2 (en) * | 2009-04-24 | 2016-02-23 | Samsung Electronics Co., Ltd. | Data communication using 2D bar codes |
JP5152092B2 (ja) * | 2009-04-24 | 2013-02-27 | 株式会社デンソーウェーブ | 二次元コード読み取りシステム |
JP5310502B2 (ja) * | 2009-11-23 | 2013-10-09 | 株式会社デンソーウェーブ | 二次元コード、二次元コードの読取装置、及び二次元コードの生成装置 |
JP5285582B2 (ja) * | 2009-11-24 | 2013-09-11 | 日本放送協会 | 2次元コード生成のための符号化演算支援装置、2次元コード生成装置およびプログラム |
JP5251854B2 (ja) * | 2009-12-11 | 2013-07-31 | 株式会社デンソーウェーブ | 光学的情報読取装置 |
US9159010B2 (en) | 2010-06-11 | 2015-10-13 | Rnib, Inc. | Coded information systems |
JP2012027558A (ja) * | 2010-07-20 | 2012-02-09 | Realsoft Inc | 2次元コードおよび該2次元コードを利用した個人認証システム |
US9112606B2 (en) * | 2010-12-15 | 2015-08-18 | Electronics And Telecommunications Research Institute | Method and apparatus for transmitting and receiving data using visible light communication |
JP5184672B2 (ja) * | 2011-04-04 | 2013-04-17 | 株式会社 廣済堂 | 二次元コードの読取方法およびプログラム |
JP5073079B2 (ja) * | 2011-04-19 | 2012-11-14 | キヤノン株式会社 | 印刷装置、印刷制御装置、データ処理方法およびプログラム |
KR101163511B1 (ko) | 2011-05-13 | 2012-07-06 | 주식회사 아이티아이앤티 | 식별 코드 생성 방법, 식별 코드 인식 방법 및 장치 |
KR101149716B1 (ko) | 2011-05-13 | 2012-06-08 | 주식회사 아이티아이앤티 | 식별 코드 변환 방법 및 장치 |
JP5232904B2 (ja) * | 2011-08-25 | 2013-07-10 | 東芝テック株式会社 | データコード読取装置及びその方法 |
KR101313681B1 (ko) | 2012-04-10 | 2013-10-02 | 위드로봇 주식회사 | 2차원 바코드 및 2차원 바코드 디코딩 방법 |
US9183085B1 (en) | 2012-05-22 | 2015-11-10 | Pmc-Sierra, Inc. | Systems and methods for adaptively selecting from among a plurality of error correction coding schemes in a flash drive for robustness and low latency |
US9176812B1 (en) | 2012-05-22 | 2015-11-03 | Pmc-Sierra, Inc. | Systems and methods for storing data in page stripes of a flash drive |
US9021336B1 (en) | 2012-05-22 | 2015-04-28 | Pmc-Sierra, Inc. | Systems and methods for redundantly storing error correction codes in a flash drive with secondary parity information spread out across each page of a group of pages |
US8972824B1 (en) | 2012-05-22 | 2015-03-03 | Pmc-Sierra, Inc. | Systems and methods for transparently varying error correction code strength in a flash drive |
US9021337B1 (en) * | 2012-05-22 | 2015-04-28 | Pmc-Sierra, Inc. | Systems and methods for adaptively selecting among different error correction coding schemes in a flash drive |
US9047214B1 (en) | 2012-05-22 | 2015-06-02 | Pmc-Sierra, Inc. | System and method for tolerating a failed page in a flash device |
US8793556B1 (en) | 2012-05-22 | 2014-07-29 | Pmc-Sierra, Inc. | Systems and methods for reclaiming flash blocks of a flash drive |
US9021333B1 (en) | 2012-05-22 | 2015-04-28 | Pmc-Sierra, Inc. | Systems and methods for recovering data from failed portions of a flash drive |
JP5743994B2 (ja) * | 2012-10-26 | 2015-07-01 | 東京書籍株式会社 | 二次元コードを表示した印刷物 |
US9009565B1 (en) | 2013-03-15 | 2015-04-14 | Pmc-Sierra, Inc. | Systems and methods for mapping for solid-state memory |
US9208018B1 (en) | 2013-03-15 | 2015-12-08 | Pmc-Sierra, Inc. | Systems and methods for reclaiming memory for solid-state memory |
US9684810B2 (en) | 2013-03-15 | 2017-06-20 | D2L Corporation | System and method for partite optically readable code |
US9053012B1 (en) | 2013-03-15 | 2015-06-09 | Pmc-Sierra, Inc. | Systems and methods for storing data for solid-state memory |
US9081701B1 (en) | 2013-03-15 | 2015-07-14 | Pmc-Sierra, Inc. | Systems and methods for decoding data for solid-state memory |
US9026867B1 (en) | 2013-03-15 | 2015-05-05 | Pmc-Sierra, Inc. | Systems and methods for adapting to changing characteristics of multi-level cells in solid-state memory |
CN103400175B (zh) * | 2013-07-31 | 2017-02-08 | 贝壳网际(北京)安全技术有限公司 | 图形识别码处理方法及装置 |
US10235546B2 (en) * | 2014-10-23 | 2019-03-19 | Lockheed Martin Corporation | Systems and methods for detecting and decoding barcodes with bar dilation |
EP3385924B1 (en) | 2015-11-30 | 2021-06-02 | Toppan Printing Co., Ltd. | Identification method |
CN106969766A (zh) * | 2017-03-21 | 2017-07-21 | 北京品创智能科技有限公司 | 一种基于单目视觉和二维码路标的室内自主导航方法 |
JP7050422B2 (ja) * | 2017-03-30 | 2022-04-08 | 三菱重工業株式会社 | 検査装置、位置特定システム、検査方法及びプログラム |
JP6714303B1 (ja) * | 2019-11-12 | 2020-06-24 | 合同会社Ark | 二次元コード生成方法、二次元コード評価方法、二次元コードシステム、二次元コード生成装置、及び二次元コード評価装置 |
CN112085131B (zh) * | 2020-08-21 | 2024-03-22 | 张家港市爱上旅途网络科技有限公司 | 多维码生成方法及系统、校验方法及系统 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4874936A (en) * | 1988-04-08 | 1989-10-17 | United Parcel Service Of America, Inc. | Hexagonal, information encoding article, process and system |
US5591956A (en) * | 1995-05-15 | 1997-01-07 | Welch Allyn, Inc. | Two dimensional data encoding structure and symbology for use with optical readers |
US5773806A (en) * | 1995-07-20 | 1998-06-30 | Welch Allyn, Inc. | Method and apparatus for capturing a decodable representation of a 2D bar code symbol using a hand-held reader having a 1D image sensor |
US5726435A (en) | 1994-03-14 | 1998-03-10 | Nippondenso Co., Ltd. | Optically readable two-dimensional code and method and apparatus using the same |
JP2938338B2 (ja) | 1994-03-14 | 1999-08-23 | 株式会社デンソー | 二次元コード |
JPH08137980A (ja) * | 1994-11-15 | 1996-05-31 | Olympus Optical Co Ltd | ドットコードの記録方法及びドットコードの記録再生装置 |
JP3668275B2 (ja) * | 1995-03-15 | 2005-07-06 | シャープ株式会社 | デジタル情報記録方法、解読方法および解読装置 |
JP3676443B2 (ja) * | 1995-09-01 | 2005-07-27 | オリンパス株式会社 | 情報再生装置及び情報再生方法 |
JPH09114951A (ja) * | 1995-10-23 | 1997-05-02 | Olympus Optical Co Ltd | 情報記録媒体 |
US6000621A (en) * | 1995-12-21 | 1999-12-14 | Xerox Corporation | Tilings of mono-code and dual-code embedded data pattern strips for robust asynchronous capture |
US6000614A (en) * | 1996-12-20 | 1999-12-14 | Denso Corporation | Two-dimensional code reading apparatus |
JPH10320497A (ja) * | 1997-05-16 | 1998-12-04 | Olympus Optical Co Ltd | コード読取記録装置 |
JP3814988B2 (ja) * | 1997-10-27 | 2006-08-30 | 株式会社デンソー | 2次元コード読取装置 |
US6175827B1 (en) * | 1998-03-31 | 2001-01-16 | Pitney Bowes Inc. | Robus digital token generation and verification system accommodating token verification where addressee information cannot be recreated automated mail processing |
-
1999
- 1999-05-11 JP JP12997999A patent/JP4122629B2/ja not_active Expired - Fee Related
- 1999-08-26 US US09/383,991 patent/US6279830B1/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
US6279830B1 (en) | 2001-08-28 |
JP2000148922A (ja) | 2000-05-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4122629B2 (ja) | 2次元コードの生成方法 | |
KR930012137B1 (ko) | 기계광학 판독 가능한 동적 가변 2진 코드 판독장치, 2진 코드의 크기 및 밀도 결정장치 및 2진 코드 생성장치 | |
US5053609A (en) | Dynamically variable machine readable binary code and method for reading and producing thereof | |
EP2248068B1 (en) | Two-dimensional symbol and method for reading same | |
US5124536A (en) | Dynamically variable machine readable binary code and method for reading and producing thereof | |
KR100414524B1 (ko) | 복호 특성이 우수하며 단계별 에러레벨조정이 가능한2차원 코드 및 그 코드의 인코딩 디코딩 방법 | |
US10679175B2 (en) | Two-dimensional code, system for creation of two-dimensional code, and analysis program | |
JP2938338B2 (ja) | 二次元コード | |
US5126542A (en) | Dynamically variable machine readable binary code and method for reading and producing thereof | |
JPH02244288A (ja) | 光学式マーク読取り装置のためのバーコードを判別する装置および方法 | |
JPH10171913A (ja) | 16ビットキャラクターをエンコード可能なバーコード、及び該バーコードの印刷及び読取り装置及び方法 | |
JP6860355B2 (ja) | 改善されたマトリックス記号エラー修正方法 | |
JP4282474B2 (ja) | データデコーディングの方法およびデバイス | |
JP5522104B2 (ja) | 情報コード読取装置 | |
KR100860110B1 (ko) | 도트 패턴을 이용한 정보 입출력 방법 | |
WO2021095457A1 (ja) | 二次元コード生成方法、二次元コード評価方法、二次元コードシステム、二次元コード生成装置、及び二次元コード評価装置、及び二次元コード | |
JPH11312215A (ja) | 二次元コードデコード装置、及び記憶媒体 | |
JP2002216088A (ja) | 情報コード | |
CN117273044B (zh) | 一种点阵图构建方法及识别点阵图的方法 | |
JP2002216073A (ja) | 可読文字等の読取り装置及び可読文字等の読取り方法 | |
JPH023881A (ja) | 濃淡ブロックコード及びその記録装置並びに読取装置 | |
GB2265237A (en) | Producing and reading a machine-optically-readable code | |
JP2001307037A (ja) | デジタル情報読出方法、およびデジタル情報記録方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050527 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070928 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20071016 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20071203 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20080408 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080421 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110516 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120516 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120516 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130516 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130516 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140516 Year of fee payment: 6 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |