説明

チェックデジット算出方法及び装置並びにプログラム

【課題】本願発明者らが開発した1.5Dカラービットコードの特長を生かして、その誤読につながりやすい部分(特定の値の部分)について、誤読を未然に防ぐセキュリティのかけ方、そのようなかけ方を実現できるチェックデジットの算出方法を提供することである。
【解決手段】1.5Dカラービットコードで表したい数に対し、その各桁の数を所定のインデックス値に変換する変換ステップと、前記変換された各桁の非零のインデックス値に基づきチェックデジットを算出するチェックデジット算出ステップを含む方法である。変換ステップには、相互に読み誤りが生じやすい数のペアである誤認識第1数と、誤認識第2数とからなるペアに対して、その第1数に「1」を、第2数に「−1」をインデックス値として与える。その他の数に対しては、「0」をインデックス値として与えることによって、読み誤りが生じやすい部分に重点的にセキュリティを掛けることができる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、光学式認識コードのチェック手法に関する。特に、本願発明者らが発明した新しい光学式認識コード(1.5Dカラービットコードと呼ぶ(特願2006−196548))のチェック手法に関する。
【背景技術】
【0002】
従来のいわゆる二次元バーコードは、一般的には、マス目状に位置が規定されたセグメントの白黒(明暗)でデータを表すものであり、そのチェック(エラーの検知・訂正)のためのチェックデジットは、一次元バーコードなどに使用されるものと同様のものが使用されていた。
【0003】
1.5Dカラービットコード
本願発明者らは、新しい2次元の光学式認識コードとして、上記のように、1.5Dカラービットコードを発明し、別途特許出願(特願2006−196548))を行っている。
【0004】
この1.5Dカラービットコードにおいては、例えば3色の色彩を付す帯状の場所を3色ごとに設けている。そして、の各色彩を付すための帯状の領域において、各色彩を付す/付さない、ことによって、所定のデータを表している。
【0005】
言い換えれば、1.5Dカラービットコードは3色の色の列において、それぞれの色彩がON/OFFし、そのON/OFF状態とデジタルデータを関連づけたことを特徴とするコード体系である。ここで、ON/OFFとは、上記帯状の領域の長手方向に沿って走査した場合に、色彩が付されている部分をON、色彩が付されていない部分をOFFと呼ぶのである。
【0006】
従って、このON/OFFのタイミングが維持されていれば若干のコードシンボルの変形はデコードに影響しないという利点を持つ。
【0007】
ここで、タイミングとは、走査した際のタイミングを意味するので、時間的な「タイミング」ではなく、空間上のタイミングを意味する。また、「コードシンボル」とは、1.5Dカラービットコードのコード体系に基づいて作成された1個1個の具体的なコードその物を言い、しばしば単に「シンボル」とも言う。
【0008】
しかしながら、この1.5Dカラービットコードの中でも比較的読み取りエラー(誤読)が生じやすい部分があるため、その部分に関しては重点的にセキュリティを掛けた方が好ましい場合がある。
【0009】
従って、上述したように他の2次元バーコードのように従来の1次元バーコードに使用されるチェックデジットではなく、1.5Dカラービットコードの特徴を生かした新しいチェックデジットを利用することが望ましいと考えられる。
【0010】
先行特許文献の例
例えば、下記特許文献1には、二次元コードとしてのカラー多重ドットコードを開示している。そして、誤り訂正データ領域がコード中に存在することが開示されている。
【0011】
また、下記特許文献2には、二次元コードを読み取って情報を再生する装置が開示されている。ここで、二次元コード中には、誤り訂正データが含まれていることが開示されている。
【0012】
【特許文献1】特開2005−310150号公報
【特許文献2】特開2005−310148号公報(特許第3908250号)
【発明の開示】
【発明が解決しようとする課題】
【0013】
このように、本願発明者らが開発した「1.5Dカラービットコード」は、「マーキングパターン(複数色の帯状領域における各色彩のON/OFF)」における各帯状領域の太さの変動や、ある程度の曲がりを許容しているので、従来の二次元バーコードと異なり、歪みや、印刷のかすれ、等に対する耐性が本来は非常に強い。
【0014】
しかし、帯状領域のON/OFFのタイミングのずれ等によって、あるデータが他のデータと読み誤ってしまう場合がある。具体的には特定の値の部分においては、他のデータと読み誤ってしまう可能性が他の値のデータよりも高い状況が存在する。
【0015】
したがって、1.5Dカラービットコードにおいて採用するチェックデジットは、この1.5Dカラービットコードのコード体系の特徴を生かして、部分的(上記特定の値の部分)に重点的にセキュリティを欠けることができるようなチェックデジットが望ましい。
【0016】
本発明は、係る課題に鑑みなされたものであり、その目的は、1.5Dカラービットコードの特長を生かして、その誤読につながりやすい部分(特定の値の部分)について、誤読を未然に防ぐセキュリティのかけ方、そのようなかけ方を実現できるチェックデジットを提供することである。
【課題を解決するための手段】
【0017】
(1)本発明は、上記目的を達成するために、光学式認識コードに対して、誤りを検知するためのチェックデジットを求める方法において、チェックデジットを付与する対象である光学式認識コード中の各桁の数を所定のインデックス値に変換する変換ステップと、前記変換された各桁の非零のインデックス値に基づき、チェックデジットを算出するチェックデジット算出ステップと、を含み、前記変換ステップは、前記光学式認識コード中、相互に読み誤りが生じやすい数のペアである、誤認識第1数と、誤認識第2数と、からなるペアを、1ペア以上記憶している記憶手段を用いて、前記各桁の数を、前記記憶手段中の誤認識第1数と誤認識第2数とからなる各ペアと比較し、前記桁の数が、いずれかのペアの前記誤認識第1数である場合は、前記インデックス値として「1」に変換し、前記桁の数が、いずれかのペアの前記誤認識第2数である場合は、前記インデックス値として「−1」に変換し、前記桁の数が、前記誤認識第1でもなく、前記誤認識第2数でもない場合は、前記インデックス値として「0」に変換することを特徴とするチェックデジット算出方法である。
【0018】
(2)また、本発明は、上記(1)記載のチェックデジット算出方法において、前記チェックデジット算出ステップは、前記変換された各桁の正のインデックス値に重みを乗算してから総和を取り、第1重み付け値を求め、各桁の負のインデックス値に重みを乗算してから総和を取り、第2重み付け値を求める重み付け値算出ステップと、前記第1重み付け値と、前記第2重み付け値とに基づき、それらの間の除算の余りを求め、その余りをチェックデジットとして求める余りチェックデジット算出ステップと、を含むことを特徴とするチェックデジット算出方法である。
【0019】
(3)また、本発明は、上記(2)記載のチェックデジット算出方法において、前記余りチェックデジット算出ステップは、前記第1重み付け値と前記第2重み付け値との平均値の整数部で、前記第1重み付け値を除算した場合の余りを求めることを特徴とするチェックデジット算出方法である。
【0020】
(4)また、本発明は、上記(2)記載のチェックデジット算出方法において、前記余りチェックデジット算出ステップは、前記重みとして、所定の増加分で順次増加していき等差数列を形成する一連の数群を用いることを特徴とするチェックデジット算出方法である。
【0021】
(5)また、本発明は、上記(1)記載のチェックデジット算出方法において、前記光学式認識コードは、複数の色彩領域からコードシンボルが構成されており、前記色彩領域の大きさ又は面積が変動することによって相互に読み誤りが生じる数のペアが、前記誤認識第1数及び前記誤認識第2数のペアとして、前記記憶手段に格納されていることを特徴とするチェックデジット算出方法である。
【0022】
(6)上記(1)〜(5)のいずれか1項に記載のチェックデジット算出方法において、前記光学式認識コードは、所定の3色を用いて7進数を表す1.5Dカラービットコードであり、前記各桁は、0〜6のいずれかの整数であることを特徴とするチェックデジット算出方法である。
【0023】
(7)また、本発明は、上記課題を解決するために、光学式認識コードに対して、誤りを検知するためのチェックデジットを求める装置において、チェックデジットを付与する対象である光学式認識コード中の各桁の数を所定のインデックス値に変換する変換手段と、前記変換された各桁の非零のインデックス値に基づき、チェックデジットを算出するチェックデジット算出手段と、を含み、前記変換手段は、前記光学式認識コード中、相互に読み誤りが生じやすい数のペアである、誤認識第1数と、誤認識第2数と、からなるペアを、1ペア以上記憶している記憶手段と、前記各桁の数を、前記記憶手段中の誤認識第1数と誤認識第2数とからなる各ペアと比較し、前記桁の数が、いずれかのペアの前記誤認識第1数である場合は、前記インデックス値として「1」に変換し、前記桁の数が、いずれかのペアの前記誤認識第2数である場合は、前記インデックス値として「−1」に変換し、前記桁の数が、前記誤認識第1でもなく、前記誤認識第2数でもない場合は、前記インデックス値として「0」に変換するインデックス変換手段と、を含むことを特徴とするチェックデジット算出装置である。
【0024】
(8)また、本発明は、上記(7)記載のチェックデジット算出装置において、前記チェックデジット算出手段は、前記変換された各桁の正のインデックス値に重みを乗算してから総和を取り、第1重み付け値を求め、各桁の負のインデックス値に重みを乗算してから総和を取り、第2重み付け値を求める重み付け値算出手段と、前記第1重み付け値と、前記第2重み付け値とに基づき、それらの間の除算の余りを求め、その余りをチェックデジットとして求める余りチェックデジット算出手段と、を含むことを特徴とするチェックデジット算出方法である。
【0025】
(9)また、本発明は、上記(8)記載のチェックデジット算出装置において、前記余りチェックデジット算出手段は、前記第1重み付け値と前記第2重み付け値との平均値の整数部で、前記第1重み付け値を除算した場合の余りを求めることを特徴とするチェックデジット算出装置である。
【0026】
(10)また、本発明は、上記(8)記載のチェックデジット算出装置において、前記余りチェックデジット算出手段は、前記重みとして、所定の増加分で順次増加していき等差数列を形成する一連の数群を用いることを特徴とするチェックデジット算出装置である。
【0027】
(11)また、本発明は、上記(7)記載のチェックデジット算出装置において、前記光学式認識コードは、複数の色彩領域からコードシンボルが構成されており、前記色彩領域の大きさ又は面積が変動することによって相互に読み誤りが生じる数のペアが、前記誤認識第1数及び前記誤認識第2数のペアとして、前記記憶手段に格納されていることを特徴とするチェックデジット算出装置である。
【0028】
(12)また、本発明は、上記(7)〜(11)のいずれか1項に記載のチェックデジット算出装置において、前記光学式認識コードは、所定の3色を用いて7進数を表す1.5Dカラービットコードであり、前記各桁は、0〜6のいずれかの整数であることを特徴とするチェックデジット算出装置である。
【0029】
(13)また、本発明は、上記課題を解決するために、コンピュータを、光学式認識コードに対して、誤りを検知するためのチェックデジットを求める装置として動作させるプログラムにおいて、前記コンピュータに、チェックデジットを付与する対象である光学式認識コード中の各桁の数を所定のインデックス値に変換する変換手順と、前記変換された各桁の非零のインデックス値に基づき、チェックデジットを算出するチェックデジット算出手順と、を実行させ、前記変換手順は、前記光学式認識コード中、相互に読み誤りが生じやすい数のペアである、誤認識第1数と、誤認識第2数と、からなるペアを、1ペア以上記憶している記憶手段を用いて、前記各桁の数を、前記記憶手段中の誤認識第1数と誤認識第2数とからなる各ペアと比較し、前記桁の数が、いずれかのペアの前記誤認識第1数である場合は、前記インデックス値として「1」に変換し、前記桁の数が、いずれかのペアの前記誤認識第2数である場合は、前記インデックス値として「−1」に変換し、前記桁の数が、前記誤認識第1でもなく、前記誤認識第2数でもない場合は、前記インデックス値として「0」に変換することを特徴とするプログラムである。
【0030】
(14)また、本発明は、上記(13)記載のプログラムにおいて、前記チェックデジット算出手順は、前記変換された各桁の正のインデックス値に重みを乗算してから総和を取り、第1重み付け値を求め、各桁の負のインデックス値に重みを乗算してから総和を取り、第2重み付け値を求める重み付け値算出手順と、前記第1重み付け値と、前記第2重み付け値とに基づき、それらの間の除算の余りを求め、その余りをチェックデジットとして求める余りチェックデジット算出手順と、を含むことを特徴とするプログラムである。
【0031】
(15)また、本発明は、上記(13)記載のプログラムにおいて、前記光学式認識コードは、複数の色彩領域からコードシンボルが構成されており、前記色彩領域の大きさ又は面積が変動することによって相互に読み誤りが生じる数のペアが、前記誤認識第1数及び前記誤認識第2数のペアとして、前記記憶手段に格納されていることを特徴とするプログラムである。
【0032】
(16)また、本発明は、上記(13)〜(15)のいずれか1項に記載のプログラムにおいて、前記光学式認識コードは、所定の3色を用いて7進数を表す1.5Dカラービットコードであり、前記各桁は、0〜6のいずれかの数であることを特徴とするプログラムである。
【発明の効果】
【0033】
以上述べたように、本発明によれば、光学式認識コードの中で、特に他の値と読み誤りやすい値の部分について、重点的にセキュリティを掛けることが可能なチェックデジットを実現することができる。
【0034】
その結果、光学式認識コードのエラーを効率よく検知することが可能である。
【発明を実施するための最良の形態】
【0035】
以下、本発明の好適な実施の形態を図面に基づき説明する。
【0036】
第1 1.5Dカラービットコードの概要
まず、本願発明者らが開発した1.5Dカラービットコードの概要の説明を行う。ここで説明する1.5Dカラービットコードは、マーキング色として3色を用いる例である。例えば、R(赤)、G(緑)、B(青)、(C、M、Yでも良い)の3色である。また、クワイアットゾーンを構成するクワイアットカラー色としてK(黒)である例を示す。
【0037】
まず、1.5Dカラービットコードは、色彩の異なる3本の線が平行にほぼ等間隔に列を構成する。3列中の各列は途中何カ所か途切れており、途切れた部分はクワイアットゾーンに相当する色彩(つまりK(黒))となっている。両端を含めた各列の途切れた部分をその色の出入りがあったと見て、「ON/OFF」箇所と呼ぶ。なお、途切れるとはマーキング色(R、G、B等)の色彩が欠落し、マーキング色以外の色(K(黒))が表れることを言う。
【0038】
1.5Dカラービットコードは、3色の列の「ON/OFF」の箇所の位置関係でデータを表現する。また、両端以外の中間部分では、3色が一度にすべて途切れてしまうことは無い。3色の並び方、「ON/OFF」の位置関係の規則はデータやチェック方法でその都度規定される。すなわち、エラー検知、エラー修正等は、別途用途に応じて定める。
【0039】
「マーキングパターン」の周囲は定められた色彩(たとえばK(黒))のクワイアットゾーンで一定範囲以上取り囲まれている。
【0040】
セルとエレメント
なお、色彩がON/OFFする単位をセルと呼ぶ。1個のセルには3色の領域(エレメントと呼ぶ)が含まれている。複数個のセルを、その内部の同じ色のエレメントが隣接するように一列に並べたものが1.5Dカラービットコードである。同じ色のエレメントが隣接して並ぶので、全体としてこの同じ色の帯状の領域を構成する。この帯状の領域が上述した「色彩の異なる3本の線」に相当する。
【0041】
例えば、あるセルでは、エレメントRがONし、エレメントBがOFF、エレメントGがONしており、隣接するセルにおいては、エレメントRがONし、エレメントBがOFF、エレメントGがOFFする、・・・のように、各色彩がON/OFFしていく。
【0042】
また、隣接するセル間では、たかだか1個のエレメント(すなわちたかだか1色)のみが変化する。これによって、走査(スキャン)によって、各セルの境界を検知することができる。
【0043】
以上が1.5Dカラービットコードの概要であり、1.5Dカラービットコードはこのような条件に基づいて作成されている。
【0044】
第2 コーディング例
図1には、1.5Dカラービットコードの典型的なコーディング例が示されている。
【0045】
図1の例では、3セルで1個の数を表している。ここでは、7進数でデータを表現する例を示しており、各3セルのブロックは、0から6までのいずれかの数を表す。
【0046】
図1に示すように、各3セルのブロックは必ず2色ON状態から始まり(左端を「始まり」としている)、2色ON状態で終了する(右端を「終了」としている)。
【0047】
すなわち、(始まり)2色ON−3色ON−2色ON(終了)か、2色ON−1色ON−2色ONの組み合せで0から6の数字を表している。なお、以下、このような並びは、全て、左端(始まり)・・・右端(終了)の順で並んでいるものとし、左端・右端等の記述は省略する。
【0048】
図1に示すように、この3セルの組み合わせは左端の2色の組み合わせにより3種のグループに分かれている。図1(1)は、RGで始まる組み合わせであり、図1(2)は、ものであり、図1(2)はBGで始まる組み合わせである。そして、図1(3)はRBで始まる組み合わせである。
【0049】
このように、一つの数字(例えば「3」を表す場合、どのグループを選択するかによって、3通りの表現方法がある。
【0050】
そして右端の2色の組み合わせにより、次の数字を表すグループを選択するようなコーディング仕様となっている。言い換えれば、右端の2色の組み合わせが、次に続くグループを指示するのである。
【0051】
このような仕様によって0から6の数字を、3色のON/OFFで、かつ同時に1色しかON/OFFしない仕組みで表すことができる。
【0052】
ここで、図2中、「0、4、2、1、1、3、0、2、2、6、4、6」は表現したい七進数のデータを表す。七進数なので0から6までの数字の並びで構成されている。
【0053】
その「表現したい数」のそれぞれの数の下に各桁の数のグループの番号「1,2,1,1,2,0,0,1,1,1,1,0」が示されている。このグループ12の番号は、図1で示したグループの番号を表す。
【0054】
なお、本文では、特に断らない限り、その数は十進数であるか、または、十進数でも七進数でも同じもの(0〜6)である。
【0055】
例えば、図2において、表現したい数10「0、4、2、1、1、3、0、2、2、6、4、6」の最初の数「0」は、まずグループ1(図1(1))から選択される。図1(1)から「0」に相当する組み合わせを取り出して、採用する。この図1(1)の「0」の組み合わせは最後がGB(緑青)で終わっているので、次に利用すべきグループは、グループ2、つまり図1(2)で示されたグループである。
【0056】
次に表したい数は、表現したい数「0、4、2、1、1、3、0、2、2、6、4、6」の2番目の数「4」である。そこで、グループ2(図1(2))からこの「4」に相当する組み合わせを選択して、採用する。
【0057】
以下、同様にして、順次、各桁ごとに組み合わせを選んでいく。選んだ結果が図2の中段に示されている。この中段に示された各組み合わせ(3個のセルから成る組み合わせは)、上で述べた選び方から当然に、左右端部のセルはその隣接するセルの端部のセルと同様である。なぜならば、あるセルに続くセルは、のあるセルの右端の色彩と同様の色彩の組み合わせとなるようなグループから選択しているからである。
【0058】
したがって、最終的なコードシンボルを形成する際には、その同じ色彩の組み合わせのセルを省略して表示する。さらに、最終的なコードシンボルを形成するには、そのコードシンボルの「始め」と「終了」とを指示する必要がある。そのために、図2に示すように、スタートマーク10を左端に付し、エンドマーク12を右端に付すことによって、最終的なコードシンボルが構成される。
【0059】
このようにして構成された最終的なコードシンボルが図2の下段に示されている。
【0060】
ここで示したケースにおいて、仮にいずれかの色が途中でとぎれたり長くなった場合は、通常はセル数の変化などの本コードの規則違反となってあらわれる。したがって、誤りがしょうじたことをチェックすることが通常は可能である。
【0061】
しかしながら本例の各グループの「0」と「1」、「4」と「5」については何らかの原因でセル端の位置が変わった場合、互いの値に変わってしまう可能性がある。
【0062】
例えば、図1(1)の「0」において、R(赤)の色彩の帯が長くなってしまった場合、つまり、RのON状態が長びいてしまうと、RがB(青)と重畳してしまう部分ができる可能性がある。重畳してしまうと、その値は「1」と読み取られてしまう恐れがある。これは、図1(2)、図1(3)でも同様であることは、図1の内容から明らかであろう。
【0063】
また例えば、図1(2)の「4」において、B(青)の色彩の帯が長くなってしまった場合、つまり、RのON状態が長びいてしまうと、BがR(赤)と重畳してしまう部分ができる可能性がある。重畳してしまうと、その値は「5」と読み取られてしまう恐れがある。これは、図1(1)、図1(3)でも同様であることは、図1の内容から明らかであろう。
【0064】
第3. 本実施の形態で提案する内容
本実施の形態では、このような1.5Dカラービットコード特有の性質に着目して、このような箇所に重点的にセキュリティを掛ける手法を提案する。
【0065】
また、できるだけ効率の良いセキュリティを掛けるために、できるだけ少ないチェックデジットでセキュリティを実現する方法を提案する。
【0066】
第4 チェックデジットの実際
本考案におけるセキュリティのかけ方を以下に示す。
【0067】
すでに説明したように、本実施の形態では数字が変化しやすいパターンをできるだけ特定の数字に限定している。本例ではパターン(グループ)が3つあるが、誤りが生じやすい組み合わせを、いずれのグループにおいても「0と1」、「4と5」に限定することができた。具体的に本実施の形態におけるチェックデジットの計算法を以下に示す。
【0068】
まず、例えば10桁の7進数を考える。この数は、
0000000000〜6666666666(七進数)
と表される。
【実施例1】
【0069】
さて上記10桁の数の内、変化しやすい「0と1」、「4と5」の数字が1つしか含まれない場合
(例)2222212222 3232066232 など
について検討する。
【0070】
この場合は、変化しやすい(変化先の)パターンが一般的に1個のみ存在する。上記の例で言えば、
2222212222 は、

2222202222 に変化しやすい

3232066232 は、

3232166232 に変化しやすい
したがって、チェックデジットとしては、2種類の値を取りうる数値(例えば、0,1などでも良い)を付加してやればよい。
【0071】
2種類の値がとれればよいので、典型的には、例えばパリティ(偶奇性チェック)をCDとして加えることが好ましい。そして、パリティを計算し、その値がCDと異なれば、上記のような変更(読み誤り)が生じたと判断するのである。
【0072】
但し、説明を簡単にするためチェックデジットそのものの変化しやすさは考慮に入れない。以下同様である。
【0073】
なお、本実施の形態では、変化しやすい「0と1」、「4と5」に関して重点的にセキュリティをかける例を示し、他の数字が変化することは考慮していない。既に述べたように、他の数字が印刷の汚れ等で本来の数字以外の数字として読み取られる恐れは小さく、かつ、もし他の数字として誤読が起きる程度にコードシンボルに汚れや変形が生じた場合は、そもそもセル数の不一致などコーディングルールに違反してしまうからである。
【0074】
したがって、本実施の形態では、コーディングルールに違反せずに、色彩のエッジの位置が変化してしまう場合のみを念頭に置いており、そのような場合を効率的に検知可能なチェックデジットを得ることを主旨とするものである。
【実施例2】
【0075】
次に、10桁の数字がすべて変化しやすい「0,1」・「4,5」であった場合、
(例)0041010044 など
は、以下のようなアルゴリズムでチェックデジットを算出する。
【0076】
(ステップ1)各桁(7進数)の0,4を−1、また1,5を1に置き換える。そして、その他の数を0と置く。その上で、0を右詰に、1,−1を左詰に並べかえる。
【0077】
このような「1」「−1」「0」をインデックス値と呼ぶ。
【0078】
上の例「41010044」では、置き換えの結果、
「−1、−1、−1、1、−1、1、−1、−1、−1、−1」
となる。0はなく、全て1か−1なので、右詰、左詰の作業はない。
【0079】
ここで、上記「−1、−1、−1、1、−1、1、−1、−1、−1、−1」の各桁の数を、a、b、c、d、e、f、g、h、i、jとおく。すなわち、
a =−1
b =−1
c =−1
d = 1
e =−1
f = 1
g =−1
h =−1
i =−1
j =−1
である。
【0080】
(ステップ2)次に、下位桁である右桁から(つまりjから)、その値とその値の絶対値との和に対して順に1,3,5・・・の重みを乗じて、総和を算出する。すなわち、重み付け値を算出する。これを第1の重み付け値k1と呼ぶ。
【0081】
同様にして、下位桁である右桁から(つまりjから)、その値の絶対値とその値との差に対して順に1,3,5・・・の重みを乗じて、総和を算出する。これを第2の重み付け値k2と呼ぶ。
【0082】
具体的に書けば、k1、k2は、以下のように記述される。
【0083】
k1=((|j|+j)*1+(|i|+i)*3+(|h|+h)*5
+(|g|+g)*7+(|f|+f)*9+(|e|+e)*11
+(|d|+d)*13+(|c|+c)*15+(|b|+b)*17
+(|a|+a)*19)/2

k2=((|j|−j)*1+(|i|−i)*3+(|h|−h)*5
+(|g|−g)*7+(|f|−f)*9+(|e|−e)*11
+(|d|−d)*13+(|c|−c)*15+(|b|−b)*17
+(|a|−a)*19)2
ここで挙げた例ではインデックス値が全て非零であるので、全ての桁に対して重みを割り付けているが、インデックス値が零である桁がある場合は、その桁をとばして、下位から順に1,3,5,・・・が割り当てられる。そのような例は後述する。
本実施の形態においては、このように等差数列的に順次増加していく一連の数(群)を、重みとして用いている。この結果、誤読が生じやすい箇所に誤読が生じたことを効率的に検知することが可能である。
【0084】
(ステップ4)次に、このようにして求めた第1の重み付け値k1及び第2の重み付け値k2、からチェックデジットCDを以下のようにして求める。
【0085】
CD=mod(k1,int((k1+k2)/2)+16−非零桁数*2)
:ここでint(t)はtの整数部である。
:また非零桁数とは、インデックス値が非零である桁数である。
【0086】
このようにして計算した結果、CDの値は0〜31(十進数)となり、比較的少ない種類でチェックデジットを実現することができる。これは誤読が生じやすい部分についてのみ検知を行っているためである。
【0087】
上で例として挙げた数字の場合0041010044について実際に計算してみよう。既に、a、b、c、d、e、f、g、h、i、jは求められているので、重み付け値k1、k2を算出する。
【0088】
k1=((|j|+j)*1+(|i|+i)*3+(|h|+h)*5
+(|g|+g)*7+(|f|+f)*9+(|e|+e)*11
+(|d|+d)*13+(|c|+c)*15+(|b|+b)*17
+(|a|+a)*19)/2
=(2*9 + 2*13)/2
=(18+26)2
=22
k2=((|j|−j)*1+(|i|−i)*3+(|h|−h)*5
+(|g|−g)*7+(|f|−f)*9+(|e|−e)*11
+(|d|−d)*13+(|c|−c)*15+(|b|−b)*17
+(|a|−a)*19)/2
=(2*1+2*3+2*5+2*7+2*11+2*15
+2*17+2*19)/2
=(2+6+10+14+22+30+34+38)/2
=78
次に、これらからCDを計算する。
【0089】
CD=mod(22、int((22+78)/2)+16−20)
=mod(22、46)
=22
計算すると、CD=22となる。
【0090】
本実施の形態で示すこの方法の場合、同じCD値を取る数字はどのCDにおいても誤り距離が最低で4であることが本願発明者らのシミュレーションで確認できた。これは、同時に0を1と読むような誤りが3箇所に生じてもCDの値が異なった値を取り、誤りが生じたことを検出することができることを意味する。
【実施例3】
【0091】
次に、同様のアルゴリズムを10桁の内6つが変化しやすい0,1・4,5であった場合について計算する。
【0092】
ここでは、例えば 0042041553(七進数)を用いる。
【0093】
(1)まず、各桁(7進数)の0,4を−1、また1,5を1に置き換える。
【0094】
その他の数を0と置き、0を左詰に、1,−1を右詰に並べかえると、

0 0 4 2 0 4 1 5 5 3

−1、−1、−1、 0、−1、−1、 1、1、1、0

0、 0、−1、−1、−1,−1,−1,1,1,1
となる。したがって、
a = 0
b = 0
c = −1
d = −1
e = −1
f = −1
g = −1
h = 1
i = 1
j = 1
となる。
【0095】
本実施の形態において特徴的なことは、誤読が生じにくい数についてはインデックス値として0に変換したことである。この結果、誤読が生じにくい数についてはチェックデジットの算出には関係なくなり、他の数字に誤って読まれてしまう可能性のある数についてセキュリティを集中させることが可能である。
【0096】
(2)次に、右桁から順に1,3,5…を掛け、重み付け値k1、k2を算出する。
【0097】
k1=((|j|+j)*1+(|i|+i)*3+(|h|+h)*5
+(|g|+g)*7+(|f|+f)*9+(|e|+e)*11
+(|d|+d)*13+(|c|+c)*15+(|b|+b)*17
+(|a|+a)*19)/2
=(2+6+10)/2
=9
k2=((|j|−j)*1+(|i|−i)*3+(|h|−h)*5
+(|g|−g)*7+(|f|−f)*9+(|e|−e)*11
+(|d|−d)*13+(|c|−c)*15+(|b|−b)*17
+(|a|−a)*19)/2
=(14+18+22)/2
=27
(3)このk1、k2からチェックデジットCDを算出すると

CD=mod(k1,int((k1+k2)/2)+16−20)
=mod(9、int((9+27)/2+16−20)
=mod(9、14)
=9
このようにしてCDとして9が求められる。この場合でも、同じCD値を取る数字はどのCDにおいても誤り距離が最低で4であることが確認できる。
【0098】
これまで10桁(七進数)の数について例を述べたが、他の桁でも同様のアルゴリズムでチェックデジット(CD)を作成することができる。例えば、12桁(七進数)の場合、CD値は、0から63の64種類のCDを利用することができる。
【0099】
第5 コンピュータとソフトウェア
これまで述べた一連の処理は、コンピュータに所定のプログラムを実行させることによって、実現される。その場合、そのコンピュータは、1.5Dカラービットコードのチェックデジット算出装置を構成する。さらに、切り出した色領域群に対してデコード処理を行い、原データを出力すれば、それは1.5Dカラービットコード認識装置と呼べる装置となる。
【0100】
その結果、上で述べた各動作ステップを実行する手段がコンピュータで実現される。請求の範囲で述べた各手段は、コンピュータにプログラムを実行させることによって実現されており、請求の範囲の各ステップは、コンピュータにプログラムを実行させることによってそのステップの処理動作が行われる。
【0101】
このような装置は、表現したいデータに対して、所定のチェックデジットを算出する。このような表現したいデータは、記録媒体に記録されている場合は、その記録媒体を介して受領してもよいし、ネットワークを介して受領するのも好ましい。算出したチェックデジットはそのまま出力することも好ましいが、このチェックデジットを利用した最終的な1.5Dカラービットコードを構成して、この1.5Dカラービットコードを外部に供給するのが好適であろう。
【0102】
すなわち、本実施の形態におけるチェックデジット算出方法や算出装置は、それ自体独立して実施するのも好適であるが、符号化の場面で用いられる技術であるから、符号化装置と同一の機器内に収容(プログラムをインストール)しておくことも好ましい。
【0103】
また、上で述べたプログラムは、コンピュータ上のハードディスクなどの記憶手段に格納しておくことが好ましいが、CDROMや、DVDROM等の記憶媒体に格納しておくことも好ましい。また、このプログラムをサーバー上に格納しておき、クライアントコンピュータが適宜サーバーからそのプログラムを利用する形態を採用することも好適である。
【0104】
なお、デコード処理は、従来のデコード処理をそのまま利用可能である。
【0105】
第6 変形例
以上、主として1.5Dカラービットコードを例にして説明したが、複数の色領域から構成される光学式認識コードであれば、本発明を適用することができる。
【0106】
特に、そのコードが表す所定の値に対しては、色の印字部分の縁がずれる等して、他の値に容易に変化してしまう場合、その所定の値に重点的にセキュリティをかけるのも好適であり、そのような用途に本発明は向いている。
【0107】
上で述べた例では、印字位置の変動によって、「0と1」「4と5」等のコードに変化してしまう場合に、その「0と1」や「4と5」に重点的にセキュリティを掛けることが可能であり、より一層、読み取りエラーの存在を的確に判断することが可能である。
【0108】
ここで、他のコーディングを採用する場合は、誤りやすい数はもちろん別の数となるであろう。各コーディング手法によって、重点的にセキュリティを欠けたい部分(数)は一般的に異なると考えられるので、各コーディングにしたがって、セキュリティを重点的に掛ける場所を決めるべきである。
【図面の簡単な説明】
【0109】
【図1】本実施の形態で示すコーディング例である。
【図2】図1のコーディングによって得られる1.5Dカラービットコードである。
【符号の説明】
【0110】
10 スタートマーク
12 エンドマーク

【特許請求の範囲】
【請求項1】
光学式認識コードに対して、誤りを検知するためのチェックデジットを求める方法において、
チェックデジットを付与する対象である光学式認識コード中の各桁の数を所定のインデックス値に変換する変換ステップと、
前記変換された各桁の非零のインデックス値に基づき、チェックデジットを算出するチェックデジット算出ステップと、
を含み、
前記変換ステップは、
前記光学式認識コード中、相互に読み誤りが生じやすい数のペアである、誤認識第1数と、誤認識第2数と、からなるペアを、1ペア以上記憶している記憶手段を用いて、
前記各桁の数を、前記記憶手段中の誤認識第1数と誤認識第2数とからなる各ペアと比較し、
前記桁の数が、いずれかのペアの前記誤認識第1数である場合は、前記インデックス値として「1」に変換し、
前記桁の数が、いずれかのペアの前記誤認識第2数である場合は、前記インデックス値として「−1」に変換し、
前記桁の数が、前記誤認識第1でもなく、前記誤認識第2数でもない場合は、前記インデックス値として「0」に変換することを特徴とするチェックデジット算出方法。
【請求項2】
請求項1記載のチェックデジット算出方法において、
前記チェックデジット算出ステップは、
前記変換された各桁の正のインデックス値に重みを乗算してから総和を取り、第1重み付け値を求め、各桁の負のインデックス値に重みを乗算してから総和を取り、第2重み付け値を求める重み付け値算出ステップと、
前記第1重み付け値と、前記第2重み付け値とに基づき、それらの間の除算の余りを求め、その余りをチェックデジットとして求める余りチェックデジット算出ステップと、
を含むことを特徴とするチェックデジット算出方法。
【請求項3】
前記請求項2記載のチェックデジット算出方法において、
前記余りチェックデジット算出ステップは、
前記第1重み付け値と前記第2重み付け値との平均値の整数部で、前記第1重み付け値を除算した場合の余りを求めることを特徴とするチェックデジット算出方法。
【請求項4】
前記請求項2記載のチェックデジット算出方法において、
前記余りチェックデジット算出ステップは、
前記重みとして、所定の増加分で順次増加していき等差数列を形成する一連の数群を用いることを特徴とするチェックデジット算出方法。
【請求項5】
請求項1記載のチェックデジット算出方法において、
前記光学式認識コードは、複数の色彩領域からコードシンボルが構成されており、
前記色彩領域の大きさ又は面積が変動することによって相互に読み誤りが生じる数のペアが、前記誤認識第1数及び前記誤認識第2数のペアとして、前記記憶手段に格納されていることを特徴とするチェックデジット算出方法。
【請求項6】
請求項1〜5のいずれか1項に記載のチェックデジット算出方法において、
前記光学式認識コードは、所定の3色を用いて7進数を表す1.5Dカラービットコードであり、
前記各桁は、0〜6のいずれかの数であることを特徴とするチェックデジット算出方法。
【請求項7】
光学式認識コードに対して、誤りを検知するためのチェックデジットを求める装置において、
チェックデジットを付与する対象である光学式認識コード中の各桁の数を所定のインデックス値に変換する変換手段と、
前記変換された各桁の非零のインデックス値に基づき、チェックデジットを算出するチェックデジット算出手段と、
を含み、
前記変換手段は、
前記光学式認識コード中、相互に読み誤りが生じやすい数のペアである、誤認識第1数と、誤認識第2数と、からなるペアを、1ペア以上記憶している記憶手段と、
前記各桁の数を、前記記憶手段中の誤認識第1数と誤認識第2数とからなる各ペアと比較し、前記桁の数が、いずれかのペアの前記誤認識第1数である場合は、前記インデックス値として「1」に変換し、前記桁の数が、いずれかのペアの前記誤認識第2数である場合は、前記インデックス値として「−1」に変換し、前記桁の数が、前記誤認識第1でもなく、前記誤認識第2数でもない場合は、前記インデックス値として「0」に変換するインデックス変換手段と、
を含むことを特徴とするチェックデジット算出装置。
【請求項8】
請求項7記載のチェックデジット算出装置において、
前記チェックデジット算出手段は、
前記変換された各桁の正のインデックス値に重みを乗算してから総和を取り、第1重み付け値を求め、各桁の負のインデックス値に重みを乗算してから総和を取り、第2重み付け値を求める重み付け値算出手段と、
前記第1重み付け値と、前記第2重み付け値とに基づき、それらの間の除算の余りを求め、その余りをチェックデジットとして求める余りチェックデジット算出手段と、
を含むことを特徴とするチェックデジット算出方法。
【請求項9】
前記請求項8記載のチェックデジット算出装置において、
前記余りチェックデジット算出手段は、
前記第1重み付け値と前記第2重み付け値との平均値の整数部で、前記第1重み付け値を除算した場合の余りを求めることを特徴とするチェックデジット算出装置。
【請求項10】
前記請求項8記載のチェックデジット算出装置において、
前記余りチェックデジット算出手段は、
前記重みとして、所定の増加分で順次増加していき等差数列を形成する一連の数群を用いることを特徴とするチェックデジット算出装置。
【請求項11】
請求項7記載のチェックデジット算出装置において、
前記光学式認識コードは、複数の色彩領域からコードシンボルが構成されており、
前記色彩領域の大きさ又は面積が変動することによって相互に読み誤りが生じる数のペアが、前記誤認識第1数及び前記誤認識第2数のペアとして、前記記憶手段に格納されていることを特徴とするチェックデジット算出装置。
【請求項12】
請求項7〜11のいずれか1項に記載のチェックデジット算出装置において、
前記光学式認識コードは、所定の3色を用いて7進数を表す1.5Dカラービットコードであり、
前記各桁は、0〜6のいずれかの数であることを特徴とするチェックデジット算出装置。
【請求項13】
コンピュータを、光学式認識コードに対して、誤りを検知するためのチェックデジットを求める装置として動作させるプログラムにおいて、
前記コンピュータに、
チェックデジットを付与する対象である光学式認識コード中の各桁の数を所定のインデックス値に変換する変換手順と、
前記変換された各桁の非零のインデックス値に基づき、チェックデジットを算出するチェックデジット算出手順と、
を実行させ、
前記変換手順は、
前記光学式認識コード中、相互に読み誤りが生じやすい数のペアである、誤認識第1数と、誤認識第2数と、からなるペアを、1ペア以上記憶している記憶手段を用いて、
前記各桁の数を、前記記憶手段中の誤認識第1数と誤認識第2数とからなる各ペアと比較し、
前記桁の数が、いずれかのペアの前記誤認識第1数である場合は、前記インデックス値として「1」に変換し、
前記桁の数が、いずれかのペアの前記誤認識第2数である場合は、前記インデックス値として「−1」に変換し、
前記桁の数が、前記誤認識第1でもなく、前記誤認識第2数でもない場合は、前記インデックス値として「0」に変換することを特徴とするプログラム。
【請求項14】
請求項13記載のプログラムにおいて、
前記チェックデジット算出手順は、
前記変換された各桁の正のインデックス値に重みを乗算してから総和を取り、第1重み付け値を求め、各桁の負のインデックス値に重みを乗算してから総和を取り、第2重み付け値を求める重み付け値算出手順と、
前記第1重み付け値と、前記第2重み付け値とに基づき、それらの間の除算の余りを求め、その余りをチェックデジットとして求める余りチェックデジット算出手順と、
を含むことを特徴とするプログラム。
【請求項15】
請求項13記載のプログラムにおいて、
前記光学式認識コードは、複数の色彩領域からコードシンボルが構成されており、
前記色彩領域の大きさ又は面積が変動することによって相互に読み誤りが生じる数のペアが、前記誤認識第1数及び前記誤認識第2数のペアとして、前記記憶手段に格納されていることを特徴とするプログラム。
【請求項16】
請求項13〜15のいずれか1項に記載のプログラムにおいて、
前記光学式認識コードは、所定の3色を用いて7進数を表す1.5Dカラービットコードであり、
前記各桁は、0〜6のいずれかの数であることを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate


【公開番号】特開2009−25935(P2009−25935A)
【公開日】平成21年2月5日(2009.2.5)
【国際特許分類】
【出願番号】特願2007−186573(P2007−186573)
【出願日】平成19年7月18日(2007.7.18)
【出願人】(506226175)ビーコア株式会社 (39)
【Fターム(参考)】