説明

位置コードを達成し且つ位置コードをデコーディングするための方法

【課題】非常に多数の位置をコード化することを可能とさせ、エラー訂正を可能とし、コーディングおよびデコーディングのために大きなテーブルの記憶部を必要としない限定された量のメモリおよび/または限定されたプロセッサ容量を有するデバイスで実現できる位置コードを提供。
【解決手段】面上の第一次元の複数の位置を、一次数列に従ってコーディングするステップを含む。この一次数列は、第一の所定長さの部分数列のそれぞれが、一次数列におけるどの場所にあるかが明確に決定される性質を有し、前記第一次元の位置のそれぞれは、前記部分数列のいずれか一つによってコード化される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、位置コードを達成するための方法、位置コードをデコーディングするための方法、これらの目的のためのコンピュータプログラム、位置コードが提供される製品ならびに位置コーディングのためおよび位置コードのデコーディングのためのデバイスに関する。
【背景技術】
【0002】
面上に書き込まれまたは描画される情報を電子的形態で記録するための道具として面上の位置コードの使用は既に知られている。
【0003】
米国特許US5,477,012号において、面上の種々のシンボルからなる位置コードを光学的に検出するペンが記述されている(特許文献1参照)。前記ペンは前記位置コードをデコードし、前記面を横切るペンの動きを記述する座標の対を複数生成する。各位置は特定のシンボルによってコード化される。もしも位置コードが多数の位置をコード化するものであれば、このことは、結果として前記シンボルは複雑になり且つそれ故正確に検出することが困難であるという不都合を生ずる。これに反して、もしもシンボルがより大きく作られれば、分解能は低下する。
【0004】
国際特許出願WO 92/17859号においては、各位置は複数のシンボルによってコード化され、且つ各シンボルは一よりも多くの位置のコーディングに寄与する位置コードが記述されている(特許文献2参照)。近傍の位置は、それ故部分的に共有されるシンボルによってコード化される。
【0005】
国際特許出願WO 92/17859号の付録Aにおいては、前記位置コードがどのようにして作られ得るかおよび位置がどのようにしてデコードされ得るかの次の例が与えられる(特許文献3参照)。
【0006】
s=(0,0,1,0,1,1,1)およびt=(0,1,1)なるm数列からスタートする。位置コーディングパターンを作るには、パターンにおける最初の縦列をs数列と同じにする。次の縦列を作るために、t数列を参照する。t数列における第一の要素が0であるならば、二番目の縦列はs数列と同じになる。t数列における第一の要素が1であるならば、二番目の縦列はs数列を一ステップだけ循環的にシフトした数列になる。後続の縦列は、t数列における要素の値に従って、対応する方法で作られる。それ故、次のパターンが得られる:
0 0 1 1
0 0 0 1
1 1 0 0
0 0 1 0
1 1 0 1
1 1 1 0
1 1 1 1
【0007】
ここで、前記パターンの次の部分集合(部分パターン)を有する部分面の位置を知りたいものとする。
1 0 0
0 1 0
1 0 1
前記部分パターンにおける最初の縦列は、(1,0,1)である。この部分数列は、s数列における位置2にあらわれる。前記部分パターンにおける循環的なシフトは、(1,1)である。この部分数列は、t数列における位置1にあらわれる。前記パターンにおける累積されたシフトは、(0,0,1,2)であり、そしてそれ故前記部分パターンの垂直位置は、2+0=2である。前記部分面上にある前記部分パターンの位置は、それ故(1,2)である。
【0008】
このパターンは、それが、例えば0についての第一のシンボルおよび1についての第二のシンボル等の単純なシンボルを用いてベース上にコード化され得るという利点を有している。
【0009】
しかしながら、このタイプの位置コーディングパターンの興味深い性質は、位置決定が可能な限り大きな面の上で実行され得るように、多数の特有の位置を有する大きなパターンをコード化する能力である。上述の例において、垂直方向のサイズは、s数列の長さによって制限され、且つ、水平方向のサイズは、t数列の長さによって制限される。これらの数列の長さは、制限なく増大することはできない。なぜなら、部分数列がkビットからなるものを採用したとして、この部分数列は、前記数列におけるただ一つの場所にのみあらわれるものでなければならないという性質を、前記数列が持たなければならないからである。前記数列の長さを増大させることは、それ故前記部分数列の長さを増大させることになり、そしてそれによって、位置を決定できるために記録されなければならない部分面の大きさを増大させてしまい得る。
【0010】
本出願の出願人に譲渡されている国際特許出願WO 01/26032号、WO 01/26033号およびWO 01/26034号においては、国際特許出願WO 92/17859におけるのと同様の基本原理に基づいているが、より多数の位置のコーディングを可能とする、他の位置コーディングパターンが、記述されている。
【0011】
このパターンの一つの実施の形態においては、第一の数列が使用され、この第一の数列は、所定長さの部分数列のそれぞれの当該数列における場所が明確に決定される性質を有するものであり、この数列が、面全体にわたる多数の縦列に、種々の循環ないし循環的シフトを伴ってプリントアウトされる。しかしながら、2値の数で構成される第二数列(国際特許出願WO 92/17859におけるt数列)を使用する代わりに、隣接する縦列間の循環的シフトが、より大きな値で許容される。
【0012】
さらに前記面は、複数のコード窓に分割される。各コード窓は、数列で構成された縦列を少なくとも三つ有し、隣接するコード窓と、一つの数列だけオーバラップしている。隣接する縦列間のシフトを用いて、x軸に沿うコード窓の位置がコード化される。コード窓における前記数列間のシフトは、そのようにして位置を定義し、最初のコード窓は位置0、次のコード窓は位置1、等々を有する。
【0013】
しかしながら、前記位置コードを読み取るとき、読み取りデバイスは、しばしば二つのコード窓の部分を記録するであろう。前記位置コードの読み取りイメージに関する二つのコード窓の位置が決定され得るようにするために、第一の範囲におけるシフトは、位置にとって意味のある最小のシフトを指摘するために用いられ、そして第二の範囲におけるシフトは、位置におけるその他のシフトのために用いられる。
【0014】
y座標のコーディングは、対応する方法にて実行される。
【0015】
この位置コードは、非常に良好に働くことが見出されており、且つ非常に多数の位置のコーディングを許容する。しかしながら、位置コードのエラー訂正特性を改善することの要請がある。
【0016】
例えば、x方向における位置を明確にコード化する最小の部分集合が、五つのシフトを有していると仮定されたい。これらの五つのシフトから、一つのコード窓の位置が決定され得る。二つの隣接するコード窓の位置は、通常は最後の数字(最後のシフト)において異なっているのみである。三つの連続的なコード窓について、前記五つのシフトは、例えば、次の通りとなり得る:
25,15,34,18,3; 25,15,34,18,4; 25,15,34,18,5;
エラーを検出する通常の方法は、関連するタスクのために必要とされるものよりも多くの情報を読み取ることに基づいている。上述されたコーディングによって、エラー検出のために使用するのに適する余分の情報を読み取ることは困難である。例えば、読み取りデバイスが、上述の三つのコード窓のうちの最初のコード窓から後ろの二つのシフトを読み、次のコード窓から初めの三つのシフトを読んで、18,3,25,15,34を記録すると仮定されたい。18,4,25,15,34が記録されるというエラーが生じるとさらに仮定されたい。例えば、さらに、前記五つの両側に一つずつの、二つのシフトの読み取りを行ったとしても、エラーを検出することを可能とさせる余分の情報は提供されない。
【0017】
もしも、x方向におけるコーディングを行うときに使用される数列が、所定長さの部分数列のそれぞれが当該数列内に明確に決定される場所を有するという性質を備えるならば、エラー訂正は容易化される。他方では、もしも多くの位置をコード化することが可能となるようにするならば、この数列は大きな基数を持たなければならない、すなわち大きなシフトを許容しなければならない、という実際的な問題が発生する。それから、読み取った部分数列が、前記数列のどの場所に対応するものであるかを知るために、非常に大きなテーブルが要求され、それは結局、非常に多量のメモリが要求されることになる。しかしながら、例えば、限定されたメモリおよびプロセッサ容量を有するハンドヘルドの読み取りデバイスにおいてデコーディングが実行されることが可能であることが、望ましい。また、限定されたメモリおよびプロセッサ容量を有するデバイスにおいてコーディングが実行されることが可能であることが、望ましい。
【先行技術文献】
【特許文献】
【0018】
【特許文献1】米国特許US5,477,012号明細書
【特許文献2】国際特許出願WO 92/17859号
【特許文献3】国際特許出願WO 92/17859号
【発明の概要】
【発明が解決しようとする課題】
【0019】
それ故、本発明の目的は、非常に多数の位置をコード化することを可能とさせ、エラー訂正を可能とするが、しかしコーディングおよびデコーディングのために大きなテーブルの記憶部を必要としない、そしてそれ故、限定された量のメモリおよび/または限定されたプロセッサ容量を有するデバイスにおいて実現され得る位置コードを提供することによって、上述された問題を低減することである。
【0020】
他の目的は、非常に多数の位置をコード化する位置コードの効果的で且つ正確なデコーディングを可能とさせることである。
【課題を解決するための手段】
【0021】
これらの目的は、請求項1に従った位置コーディングのための方法、請求項19に従ったコンピュータプログラム、請求項20に従ったコーディングデバイスにおける方法、請求項33に従ったコンピュータプログラム、請求項35に従った位置コードをデコーディングするための方法、請求項43に従ったコンピュータプログラム、請求項45〜47に従ったデバイス、および請求項48に従った位置コードが付与された面を有する製品によって完全にまたは部分的に達成される。
【0022】
したがって、本発明の第一の態様は、位置コーディングのための方法に関し、その方法は、面上の第一次元の複数の位置を、一次数列に従ってコーディングするステップを含む。この一次数列は、第一の所定長さの部分数列のそれぞれが、一次数列におけるどの場所にあるかが明確に決定される性質を有し、前記第一次元の位置のそれぞれは、前記部分数列のいずれか一つによってコード化される。前記一次数列は、少なくとも二つの二次数列から作られるものであり、これらの二次数列は、前記一次数列の基数よりも小さな基数を有し、前記第一次元の位置に対応する前記一次数列の部分数列を求めるために用いられる。
【発明の効果】
【0023】
前記一次数列が、より小さな基数を有する二次数列から作られ、これらの二次数列の基数が、望ましくはせいぜい5であるので、前記一次数列における場所を前記一次数列の部分数列に変換するために必要とされるテーブルは、いくつかのより小さなテーブルによって置き換えることができ、これらのテーブルを合わせても必要なメモリはより少なくなる。したがって、非常に多数の位置のための座標をコード化することが、実際に実行可能となる。
【0024】
少なくとも第一次元の位置をコーディングするために一次数列を使用することは、非常に良好なエラー検出およびエラー訂正特性を有する位置コードを達成することをも可能とさせる。さらに詳細には、前記一次数列における各数は、循環主数列の部分数列を用いてコード化される。もしも、前記主数列の部分数列を、位置決定のために必要とされるものよりも長い部分数列として記録するならば、エラー検出およびエラー訂正が達成され得る。そのためには、前記主数列を、前記長い部分数列が、特定の不適正なバージョンで、例えば一つの数字が誤った状態で、あらわれることがないように、設計する。
【0025】
デコーディングについても、また、前記一次数列が、より小さな基数を有する二次数列から作られることが利用されて、前記デコーディングは、いくつかのより小さなテーブルを用い且つ中国の余剰定理を用いて実行され得る。その結果、前記デコーディングは、例えば限定されたメモリおよびプロセッサ容量を有するハンドヘルドデバイスにおいて実現され得る。
【0026】
位置コーディングは、一次元および二次元の両方において位置をコーディングするために利用され得る。第二次元におけるコーディングは、第一次元におけるコーディングのために用いられた数列と異なる数列もしくは同一の数列を用いて、同様の原理によって実行され得る。
【図面の簡単な説明】
【0027】
【図1】図1は、第一の方向に並ぶ位置のx方向のコーディングがどのようにして実行されるかを概略的に示している。
【図2】図2は、一次数列PDが四つの二次数列A1〜A4によってどのようにして作られるかを概略的に示している。
【図3】図3は、位置コードのグラフィカルコーディングの例を示している。
【図4】図4は、拡大された位置コードによる製品を示している。
【図5】図5は、余分なシンボルが、エラー訂正の目的のために、どのように記録され得るかを示している。
【図6】図6は、フローチャートであり且つ位置コードがどのようにして決定され得るかの実施例を示している。
【図7】図7は、フローチャートであり且つ位置コードがどのようにしてデコードされ得るかの実施例を示している。
【図8】図8は、位置コードの読み取りおよびデコーディングのために使用され得るデバイスを概略的に示している。
【発明を実施するための形態】
【0028】
さて、本発明は、例示的な実施の形態を用いてそして添付された図面を参照して、説明されるであろう。
【0029】
〔実施の形態の記述〕
以下においては、本発明に従った位置コーディングのための全般的な原理が特定の例を用いて説明されるであろう。その後は、コーディングおよびデコーディングが実際にどのようにして実施され得るかが説明される。その後は、位置コードのデコーディングのために使用され得る読み取りデバイスの例が説明される。最後に、代替的な実施の形態が説明される。
【0030】
〔位置コーディングのための全般的な原理〕
位置コードは、一またはそれより多くの次元における位置をコード化するために用いられる。説明を単純化するために、位置コーディングは、まず、第一次元において、この例ではx方向において、考慮される。循環主数列が、この方向におけるコーディングのために用いられ、該循環主数列は、所定長さの部分数列のそれぞれの前記循環主数列における場所が、明確に決定される性質を有している。この例においては、前記所定長さは6である。したがって、もしも六つの連続する数が、前記循環主数列におけるいずれかの場所からとられたら、これら六つの数が、この順序で前記循環主数列においてただ一度だけ生ずるであろう。該性質は、前記主数列の末端が該主数列の始端に連結されている場合にも、当てはまる。前記主数列は、それ故に循環と呼ばれる。この例においては、2値の数で構成される主数列が使用される。もしも、六つの数を有する部分数列の場所が、明確に決定されるならば、前記主数列は、したがって、2=64の最大長さを持つことができ、長さ6の前記部分数列は、前記主数列における場所0〜63を持つことができる。しかしながら、もしも、長さ63の主数列が選択されると、以下に説明されるように、改善されたエラー訂正特性が得られる。以下においては、したがって、主数列の長さは63で、それ故0〜62の範囲で唯一の場所が定義されるものとする。前記主数列のこの長さによれば、各部分数列を前記主数列における場所に変換し且つその逆変換もするテーブルを持つことが実際に可能である。
【0031】
前記主数列の開始が次の通りであると仮定されたい:
0,0,0,0,0,0,1,0,0,1,1,1,1,1,0,1,0…
前記主数列において、例えば、部分数列0,0,0,0,0,0は、明確な場所0を有し、部分数列1,1,1,1,1,0は、明確な場所9を有し、そして部分数列1,1,1,0,1,0は、明確な場所11を有する。
【0032】
前記位置コーディングは、前記循環主数列の異なる循環ないし循環的シフトを利用することに基づいている。x方向における位置をコード化するために、前記主数列が、面を横切る複数の縦列として、すなわち位置がコード化されるべき方向に直交するy方向に並ぶように、プリントアウトされまたは何か他の方法で配列される。このとき、前記主数列は、複数の縦列において、種々の方法で循環されまたは循環的にシフトされる。前記主数列は、y方向において、前記主数列の前記長さに対応するものよりも多くの位置がコード化されようとする場合は、同一の縦列において、必要なだけ繰り返して、プリントアウトされ得る。そのとき、前記主数列のすべての繰り返しに同一の循環が使用されるが、異なる縦列においては異なる循環が使用され得る。
【0033】
図1は、七つの列x〜x+6を有する一枚の紙100を概略的に示している。異なる循環をさせた複数の前記主数列における初めの方の数のみがプリントアウトされている。主数列全体は、ボックスBによって概略的に示されている。加えて、図1においては、各縦列において、六つの数からなる最初の部分数列Sが、破線を用いて描かれたボックスによって示されている。上述されたように、前記部分数列Sの各々は、前記主数列において明確に決定される場所を有する。
【0034】
隣接する縦列の各対は、差分数dを定義する。差分数dは、それぞれの縦列における最初の部分数列の主数列における場所の間の差分によって与えられる。もしも、その代わりに、各縦列における一ステップ下の部分数列の場所の間の差分がとられたら、結果は、それらの場所が同様の方法でずらされているので、同様となるであろう。したがって、差分数dは、前記主数列における部分数列の場所が、縦列におけるどの「高さ」において比較されようが、同様となるであろう。したがって、縦列の各対について、差分数dは、y方向では一定である。
【0035】
列x+5における主数列の最初の部分数列は、0,0,0,0,0,0であり、それは前記主数列における場所0に対応する。列x+6における主数列の最初の部分数列は、1,0,0,0,1,1であり、それは前記主数列における場所57に対応する。これらの列の間の差分または循環的シフトは、したがって57であり、それ故d(x+5)=57である。ここで、前記差分数は、前記主数列の長さを法として求められる。
【0036】
このような方法でコード化され得る差分数は、0〜K−1の範囲内にあり、ここでKは前記主数列の長さで、この場合K=63であり、したがって、それによって0〜62の範囲内における差分数をコード化することが可能となる。前記主数列の異なる循環を選択することによって、差分数の列を作ることができ、この差分数の列は、以下において一次数列または一次差分数列と呼ばれる。この差分数の列(一次数列)は、所定長さの部分数列のそれぞれが前記一次数列において明確に決定される場所を有するという性質を備えるように作ることができる。この例においては、前記所定長さは5である。五つの差分数からなる各部分数列は、前記一次差分数列において明確に決定される場所を有するから、x方向における位置をコード化するのに用いられ得る。図1においては、部分数列S(x)〜S(x+5)が、前記一次数列の部分数列を与える五つの差分数d(x)〜d(x+4)を、このようにコード化していることになる。
【0037】
実際には、前記部分数列は、通常は、それらの明示的な値によってプリントアウトされるのではなく、グラフィカルなコード化によってプリントアウトされる。前記主数列の2値の数が並んだ縦列は複数で行列を形成し、それは以下においてはx行列と呼ばれる。
【0038】
前記主数列の長さがKであるならば、前記一次差分数列における基数は、Kに等しくなり、前記一次差分数列の最大長さは、K、すなわちこの場合63になるであろう。しかしながら、このように大きな基数について、部分数列を一次差分数列における場所に変換および逆変換するためのテーブルを使用することは、実際的に実行可能ではない。しかしながら、もしも、管理可能なテーブルを使用できるようにするために基数が縮小されれば、コード化可能な位置の数が減少してしまうであろう。
【0039】
この問題は、より短い長さの複数の差分数列から前記一次差分数列を作ることによって、解決される。この短い差分数列は、以下において二次差分数列または二次数列と呼ばれる。この二次差分数列は、部分数列とその場所とが、より小さなテーブル内に用意できるものであり、前記位置コードをコーディングし、またデコーディングする際に、特定のx座標に対応する一次差分数列の部分数列を求めるために、またその逆を求めるために、用いられる。
【0040】
前記二次差分数列は、次のようにして決定され得る:
第一に、差分数は、異なる差分数の個数が少なくとも二つの要素に因数分解され得るような範囲内でのみ許可される。長さ63の主数列を有する例においては、差分数は、長さ54の範囲内でのみ許可される。数54は、実際には、2*3*3*3として因数分解され得る。代わりに、60の差分数、すなわち5*3*2*2の差分数を選択してもよいが、テーブルが可能な限り小さくなるようにするために、可能な限り小さな要素を与える数を選択することが好都合であるかもしれない。
【0041】
第二に、異なる差分数の個数が因数分解され得る要素の個数と同一の個数の二次差分数列が形成される。この例においては、それ故、二次差分数列の個数は、4に等しい。
【0042】
加えて、我々は、各要素に、それぞれの二次差分数列において基数を形成させる。この例においては、それ故、我々は、基数2を有する一つの二次差分数列および基数3を有する三つの二次差分数列を得る。
【0043】
したがって、もしも、二次差分数列もまた、長さ5の部分数列が該二次差分数列において唯一の場所を有するはずであるという性質を有するとするならば、前記二次差分数列の最大長さは、それぞれ32および243である。前記二次差分数列のそのような長さであれば、部分数列を場所に変換しまたその逆変換をすることが、実際的に実行可能である。もしも、代わりに、我々が60の異なる数を使用すべく選択したならば、我々は、基数5を有し、それ故最大長さが3125である二次差分数列を得るため、かなりより多くのメモリを使用するテーブルが必要となるが、それでもまだ、管理可能である。
【0044】
最後に、前記二次差分数列の長さは、対にすると該長さが互いに素であるように選択される。このことは、各対をなす二次差分数列について、一方の差分数列の長さが、他方の差分数列の長さと、共通の要素を一切持たないようにすることを意味する。このことは、加えて、もしも前記差分数列の各々が繰り返されるならば、各二次差分数列からの部分数列の組み合わせが同一になることは、L=l*l*…*lだけ後の場所まで生じないであろうことを意味する。なお、lは、二次差分数列1の長さであり、lは、二次差分数列2の長さであり、そして最後の二次差分数列の長さであるlまで、同様である。もしも、二つの二次数列だけしかなければ、もちろん、L=l*lである。
【0045】
このことは、図2に概略的に図解されている。最上部には、一次数列PDが示されており、ここでは単にXによって示されている差分数が一つの長い列になって延びている。下部には、二次数列A1〜A4が概略的に示されている。垂直線は数列が再開する場所を示している。一次数列の部分数列および対応する二次数列の部分数列は、破線によって示されている。部分数列は、二次数列における異なる場所に対応することがわかる。
【0046】
二次差分数列の部分数列の組み合わせによる一次差分数列の部分数列の表現は、この例においては、全単射である。これは、しかしながら、必要なことではない。
【0047】
第二次元における、例えばこの場合y方向における、位置コーディングは、第一次元における位置コーディングと同様の原理に従って実行され得る。前記主数列は、それから、面上の複数の横行中に、すなわち図1におけるx方向に、異なる循環的シフトを伴って、配列される。差分数は、隣接する横行の間で定義され且つこれら差分数は、一次差分数列を形成し、この一次差分数列は、複数の二次差分数列から作ることができるものである。第二次元において、他の主数列、他の一次差分数列および他の二次差分数列を使用することが可能である。前記種々の数列における基数も、前記第一次元においてコーディングのために使用されたもの以外のものとすることが可能である。この例においては、しかしながら、同一の数列が、x方向とy方向との両方に使用される。x方向におけるコーディングに対応する方法において、y方向におけるコーディングは、結果として、行の値が主数列の2値の値からなる行列を得る。
【0048】
もしも、x行列およびy行列が重ね合わされたならば、結果として得られるxy行列における各点について、x行列からの1ビットとy行列からの1ビットとが存在するであろう。それ故、各点において、次の四つのビット組合せが、取得され得る:0,0;0,1;1,0;および1,1。これらの異なる組み合わせは、例えば図3a〜図3dに示された方法によって、面上にグラフィカルにコード化され得る。図3a〜図3dでは、ドット30が、ラスタにおける公称点31からの四つの方向のいずれか一つの方向に変位されている。ここで、各公称点は、ラスタにおける線32間の交差に対応する、このタイプのグラフィカルなコーディングは、国際特許出願WO 01/26032号に非常に詳細に説明されているが、但しそこでは、基礎となる位置コーディングが異なる方法にて実行されている。この例において使用されるコーディングは次の通りである:
【表1】

ラスタは、仮想的であり得て、その場合、面上に位置コードとともに明示的にプリントアウトされることはない。
【0049】
図4は、位置コード410を有する一枚の紙400の形態における製品の一部を概略的に示している。図4における位置コードは、例えば手書きをディジタル化するのに適するバージョンに対して、非常に大きく拡大されていることは、強調されるべきである。加えて、図4では、ラスタ420が示されているが、通常は、ラスタ420はプリントアウトされない。
【0050】
もちろん、他のタイプのグラフィカルなコーディングが、四対のビットについて選択され得る。例えば、異なるサイズの四つのドット、異なる形状を有する四つのマーク、または異なる回転を有する四つのマークのようなグラフィカルなコーディングがあり得る。
【0051】
位置コーディングが、主数列における異なる部分数列の場所の間の差分に基づいており、且つ同一の差分を、部分数列の異なる対を用いて得ることができるので、一次差分数列は、種々の方法で作られ得る。より詳細には、どの部分数列、すなわち主数列のどの循環が、x行列における最初の縦列(x=0)およびy行列における最初の横行(y=0)を始めるべく選択されたか、に依存して、63の異なる「バージョン」の一次差分数列が作られ得る。したがって、x方向およびy方向へのコーディングのために同一の一次差分数列を利用する位置コードについては、K*K(この例では63*63=3969)個の異なる「バージョン」を生成することが可能である。位置コードのこれらの異なるバージョンは以下においてセクションと呼ばれる。x方向における位置コードについてのセクション番号xsおよびy方向における位置コードについてのセクション番号ysは、それぞれx方向およびy方向についての付加的な座標として示され得る。
【0052】
上の例においては、主数列を用いて理論的にコード化され得る差分数のうち、部分的にしか使用されていない。より詳細には、可能性のある63個の差分数のうち、54個のみが使用されている。理論的に可能性のある差分数の部分範囲は、種々の方法で選択され得る。この例においては、(前記主数列の長さを法とした)ゼロに近い差分数が、位置コードにおいて、望まれない規則性を作り得る。それ故、この例においては、差分数は、範囲(5,58)内に選択される。このことは、一次数列における部分数列と二次数列における部分数列との間の変換に関して考慮されなければならず、そしてそれは以下において説明されるであろう。今、位置コードが面上に配置されていると仮定されたい。読み取りデバイスは、少なくとも6*6ドットに対応する位置コードの部分集合を検出するエリアセンサを持ち得る。読み取りのとき、前記読み取りデバイスは、前記位置コードに対して種々の方法で回転されて保持され得る。位置コードは、原則的に、0,90,180または270度のうちのどれだけ回転された場合でも、同じように見えるので、位置コードのイメージは、位置コードと読み取りデバイスとの間の回転をそれ自体で明らかにすることはない。位置コードが回転されるとき、各ドットの変位の方向は、しかしながら、変化され、それが結局、ドットの変位によってコード化されたビット対が変化することにつながる。どのように変化が生ずるかは、変位とビット対との間の変換に依存する。以下においては、上述されたように変換が実施されると仮定されている。三つの異なるケースが存在する。
【0053】
1)位置コードのイメージの180度の回転によって、非回転位置コードにおけるx位置およびy位置をコード化する循環主数列は、イメージに基づく位置をデコードする試みがなされるとき、逆順に読み取られるであろう。上述された変位とビット対の組み合わせでは、デコードされたビットは、位置コードが上下逆に読み取られることから、反転されるであろう。
【0054】
2)時計回り方向における90度の回転によって、非回転行列におけるx位置をコード化するビット列は、回転行列におけるy位置をデコードする試みがなされるとき、逆順に読み取られ、そして前記ビットは反転されるであろう。
【0055】
3)時計回り方向における270度の回転によって、非回転行列におけるy位置をコード化するビット列は、回転行列におけるx位置をデコードする試みがなされるとき、逆順に読み取られ、そして前記ビットは反転されるであろう。
【0056】
このことは、もしも、正しい向きで正立状態にある非回転行列における部分数列が、反転されて且つ逆順になって、循環主数列中にあらわれることがないならば、90,180および270度の回転が検出され得ることを意味する。もしもそのような条件が前記主数列について満たされるならば、このことは、前記主数列の長さがずいぶん減らされることを意味し、それは結局、コード化できる位置がより少なくなってしまうことを意味する。
【0057】
この問題を解決するため、我々は、その代わりに、前記循環主数列のより長い部分数列について、条件が満たされるようにさせる。このことは、実際の位置決定のために要求されるよりも長い部分数列が、読み取られなければならないことを意味する。ある場合においては、そのようなより長い部分数列は、読み取りの間に既に利用可能になっている。もしも、位置の座標をコード化する位置コードの最小の部分集合が正方形状であるならば、この例における場合にそうであるように、読み取りデバイスが、位置コードに対して45度回転されたときでさえも、読み取られた位置コードの部分が前記最小の部分集合の全体を含むように、位置コードの大きな部分がいつも読み取られなければならない。それ故、位置決定のために要求されるものよりも長い少なくとも一つの部分数列がいつも含まれる。このことは、図5に図解されており、そこでは、各正方形50がドットに対応し、グレーに影付けされた正方形が、少なくとも一つの横行および一つの縦列を、二つの余分のドット付きで読み取ることが、いつも可能であることを図解している。
【0058】
位置決定のための主数列の部分数列が長さ6を有する現在の例では、長さ8の部分数列が回転の検出のために使用され得る。これら8ビット長の部分数列は、したがって、主数列内において逆順に且つ反転してあらわれることがないという性質を有する。この性質は、64ビット長の主数列では得られず、それが、前記長さがその代わりに63として選択される理由である。
【0059】
上述された回転のうちの二つ、すなわち90および270度において、正しい方向に回転する一列、そして誤った方向に回転する一列が読み取られるであろう。回転検出のための上述された方法によれば、二つの読み取り方向(xおよびy)のうちの一方の方向だけにおいて、回転エラーが検出されるであろう。他方の読み取り方向においては、正しく回転されたイメージの前記一方の読み取り方向における位置をコード化する循環的シフトを見ることができるであろう。
【0060】
時計回り方向における90度回転の場合において、正確に回転されたイメージのy座標をコード化する循環的シフトは、x方向についてデコーディングするときに見られるであろう。したがって、見られるのは、y方向の一次差分数列の部分数列であるが、誤った方向に回転されている(x方向の一次差分数列の部分数列の場合であれば左から右へ並んでいるが、この場合はそうではなく右から左へ並んでいる)。
【0061】
270度回転の場合には、対応するように、y方向についてデコーディングするときに、x方向の一次差分数列の部分数列が、誤った方向に回転されて見られるであろう。
【0062】
なぜ部分数列が誤った方向に回転されて見えるかという理由は、x方向およびy方向の一次差分数列の相対的な方向性である。全体の位置コーディングパターンの縁部から始まり、y方向の一次差分数列が、反時計回り方向に並ぶ一方で、x方向の一次差分数列が、時計回り方向に並ぶ。もしもそれらが同一の方向に並んでいたとしたら、上述のケースにおいて、それらは誤った方向には回転せず、正しい方向に回転したであろう。
【0063】
一次差分数列を反対方向に並べることには多数の利点がある。一次差分数列の部分数列が正しい回転をしているケースにおいては、「正しい」座標がデコードされるが、誤った方向においてである。この座標は、デコーディングに要求される一次差分数列からの六つの循環的シフトに対応するだけでなく、周囲のシフトが、デコードされる座標が正しいことを確認するであろう。一次差分数列が互いに反対方向に並んでいるケースにおいては、一次差分数列からの六つの循環的シフトもデコードされるが、誤った順序においてであり、結果として誤って回転された一次差分数列の周囲部分に統計的に対応しないであろう座標を生ずる。この事実は、結果としてエラー検出についてより良い可能性を生ずる。
【0064】
他の利点は、一次差分数列が反対の方向に並んでいれば、連続的なエラー、すなわち複数の連続するイメージが隣接する位置にデコードされるエラー、の危険が少ないことである。より詳細には、誤った方に回転された一次差分数列における六つの循環的シフトの異なる隣接する組は、隣接する座標をコード化しない傾向がある。連続的なエラーは、そこでは正しくない座標の広がりが大きく、他のエラーよりも検出することが一層困難である。
【0065】
回転の検出のために使用されるのと同一の基本原理が、エラー訂正のために使用され得る。主数列は、例えば、位置決定のために要求されるよりも長いある所定長さの部分数列が、主数列内に1ビットが反転された状態であらわれることがないように、選択され得る。もしも、そのようにより長い部分数列において、一つを除く全てのビットが確実性をもって検出され得るならば、不正確なビットは、訂正され得る。
【0066】
位置コードのそのようなエラー検出およびエラー訂正特性は、主数列の理知的な選択によってかなり改善され得る。さらなる改善が、二次差分数列の選択によって達成され得る。
【0067】
上述の例においては、主数列および二次差分数列が、付録Aに示される方法で選択されている。
【0068】
二次差分数列は、以下に述べる特別なエラー訂正特性を有している:
主数列の部分数列の一つが、正しくなくデコードされ、そしてそれは主数列における正しくない場所がデコードされることにつながると仮定されたい。各場所は二つの隣接する差分数を計算するために使用されるので、これらは、両方とも正しくないデコーディングによって影響されるであろう。もしも、差分数のいずれか一つが、使用される差分数範囲(5,58)の外側にあれば、エラーは直ちに検出されるであろう。もしも、これがそのようなケースでなければ、しかしながら、一次差分数列の部分数列が結果として生ずる四つの二次差分数列の部分数列の組合せにおける少なくとも一つの部分数列が、二つの隣接する位置においてゆがめられるであろう。初めの二つの二次差分数列A1およびA2の両方が基数3を有し、且つ使用されない差分数の個数は、9=3*3であるので、これら二つの数列のいずれか一つにおけるゆがみは、二つの影響された数の合計が、3を法としていつも同一の値を有するという性質を有している。
【0069】
二つの二次数列A1およびA2は、長さ7の部分数列のそれぞれについて、単一の不適正な場所のデコーディングによって引き起こされる可能性のある14のゆがみのうちのせいぜい1つが、二次数列内に見出されるであろうという性質を有している。三番目の二次数列A3は、加えて、長さ7の部分数列のそれぞれについて、単一の不適正な場所のデコーディングによって引き起こされる可能性のある13のゆがみのうちのせいぜい1つが、二次数列の中に見出されるであろうという性質を有している。四番目の二次数列A4は、可能性のある28のゆがみのうちのせいぜい7つについて、同じ性質を有している。主数列の部分数列の単一の正しくないデコーディングが検出される可能性は、このように大きい。
【0070】
選択された数列によれば、合計410815348個の異なる位置が、一つのセクションの各次元にコード化され得る。コード化され得る異なるセクションの数は、上述された通り63である。したがって、コード化され得る位置の合計数は、63*410815348=6.7*1020位置である。
【0071】
もしも、各位置が、0.3*0.3mmの面に対応するならば、これは唯一の位置が、6000万kmの面上でコード化され得ることに対応する。位置コードによって理論的にコード化され得る全ての唯一の点によって作られるこの面は、仮想面と呼ばれ得る。位置コードがコード化する座標は、それ故仮想面上の点についての絶対座標である。位置コードの部分が、物理的ベースまたは面上に適用され得る。それから、位置コードは、このベース上で位置をコード化する。しかしながら、座標は、通常、物理的ベース上の位置についての絶対座標に関連せず、仮想面上の点について関連している。
【0072】
〔位置コーディングの実際的な例〕
以下において、実際に位置コーディングがどのようにして実現されるかが説明されるであろう。標準的には、ユーザは、座標0からそして上方向きに全ての位置コードをプリントすることには関心がなく、むしろ、ユーザには、特定のアプリケーションのために使用され得る特定の座標エリアが割り当てられている。そこで実際的な問題は、この特定の座標エリアについてどのように位置コードが求められるかである。
【0073】
位置コードは、何らかの適切なタイプのプロセッサユニットから構成し得るコーディングデバイスにおいて決定されまたは生成され得る。それから、前記プロセッサユニットは、実際のプロセッサ、作業メモリおよび位置コードを決定するための命令群を有するコンピュータプログラムが格納されるプログラムメモリを具備している。前記プロセッサユニットは、典型的なパーソナルコンピュータに、プリンタに、または何らかの他の適切なデバイスに組み込まれ得る。あるいは、前記コーディングデバイスは、ASIC(アプリケーション特定集積回路)またはFPGA(フィールドプログラマブルゲートアレイ)またはこの特定のタスクのために適するように適用され得る同様のユニットのような、特定目的のハードウェアで構成することもできるし、またはディジタルおよび/またはアナログ回路あるいはそれらの何らかの適切な組み合わせで構成することもできる。
【0074】
位置コードの生成する意味のある最小の部分は、単一の点についての座標をコード化した部分である。この例においては、これは6*6変位値による行列を生成することに対応し、それは基準ラスタにおけるそれらのそれぞれのラスタ点から6*6ドットの変位で記述する。
【0075】
しかしながら、しばしば、複数の点についての座標をコード化する位置コードの部分集合の生成、すなわちより大きな行列、が要求される。
【0076】
前記コーディングデバイスへの入力信号は、通常のケースでは六つのパラメータからなることができる:
x:位置コードにおける最も左にある縦列についてのx座標である。
【0077】
y:最上部の横行についてのy座標である。
【0078】
xs:x位置コードについて使用される位置コードのセクションを示す。
【0079】
ys:y位置コードについて使用される位置コードのセクションを示す。
【0080】
幅:位置コードにおける縦列の数、すなわちx方向における座標エリアのサイズを示す。
【0081】
高さ:位置コードにおける横行の数、すなわちy方向における座標エリアのサイズを示す。
【0082】
これらのパラメータは、ユーザによってまたは外部ユニットからコーディングデバイスに入力される。オプション的に、変位値によって満たされることとなる行列に対するポインタも含まれ得る。さもなければ、行列についてメモリが割り当てられる。
【0083】
コーディングデバイスのタスクは、行列における各点を、変位値Oに関連付けることにある。変位値Oは、ベース上にプリントされる位置コードにおいてドットをどの方向へ変位すべきかを示す。
【0084】
この例においては0〜3であり得る変位値Oが、上述において説明してきたように、一つのビット対におけるビットによって、求められる。そこでは、第一のビットは、現在点についてのx位置コードの値mからなるとともに、第二のビットは、現在点についてのy位置コードの値mからなる。もしも、一つのビット対が既知であれば、変位値は、ビット対を変位値に変換するテーブルO内において検索され得る。
【0085】
x位置コードの値mは、もちろん、我々が位置を定めた点xおよびyに依存するが、位置コードの現在セクションにも依存する。したがって、m=m(x,xs,y)である。y位置コードの値mは、対応するように、我々が位置を定めた点xおよびyに依存し、そしてy位置コードの現在セクションにも依存する。したがって、m=m(y,ys,x)である。
【0086】
もしも我々が、セクションxsにおける縦列xにおいて、前記循環主数列がどの場所sで始まるかを決定して、yを付加すれば(ここで結果は主数列の長さを法としてとられる)、我々がxコーディングのために位置を定めた点x,yにおける前記主数列内の場所が得られる。我々は、それから主数列のテーブルMを参照し、この場所を有するのが、前記主数列におけるどの数(ビット)であるのかを探索する。これにより得られた主数列における数は、点x、yにおけるxコーディングの値を構成する。このことは、m(x,y,xs)=M[(s(x,xs)+y)(mod 63)]として表現され得る。
【0087】
対応する操作を実行することによって、yコーディングの値が点x,yにおいて見出され得る。このようにして、我々は、ビット対へのアクセスを得る。このビット対から、行列における点x,yに格納されるべき変位Oが求められることになる。
【0088】
コーディングデバイスが計算する必要があるのは、したがって、まず、点x,yの座標をコード化する位置コードの部分集合の中で最も左にある縦列である縦列xについて、前記主数列がどの場所sで始まるかである。他の言葉で言えば、縦列xにおける主数列について、循環的シフトが計算されると言える。
【0089】
このことは次のようにして実行され得る。
【0090】
差分数d(x)が、先に示されたように、縦列xにおける最初の部分数列の主数列における場所と、隣接する縦列x+1における最初の部分数列の主数列における場所とによって、定義される。より詳細には、それは、次のようになる:
d(x)=(s(x+1,xs)−s(x,xs))(主数列の長さを法とする)
ここで、s(x,xs)は、セクションxsの位置コードの縦列xにおける、主数列内の場所ないし主数列についての循環的シフトである。
【0091】
定義として、さらに、s(0,xs)=xsであり、これは、xセクションを定義するx位置コード中のまさに最初の縦列における、主数列についての循環的シフトである。
【0092】
これに基づいて、s(x,xs)が、
s(x,xs)=(xs+sum(j=0…x−l)d(j))
(主数列の長さを法とする)
として求められる。
【0093】
多くの点についての座標をコード化する位置コードのための全てのxについて差分数d(x)の値を定義する一次差分数列を格納することは、実際的には可能でないので、ここで、一次差分数列における各差分数が、二次差分数列の各々から一つの数を取り出して組み合わせたものにマップ可能であるという事実が利用される。一般的には次のようになる:
d(x)=dc(1,x) + b*dc(2,x)+ …
+ b*…*bn−1*dc(n,x)
ここで、nは、二次差分数列の個数であり、そして、bは、i=1〜n−1についての差分数列iにおける基数であり、dc(i,x)は、差分数列iにおける数を用いてテーブルDCを検索することによって求めることができ、したがってdc(i,x)=DC[差分数列iの長さを法とするx]である。もし、二つの二次差分数列しかなければ、もちろん上述における最初の2項のみが用いられる。
【0094】
問題のケースにおいては、それ故我々は、次を得る:
d(x)=5+dc(1,x) + 3*dc(2,x) + 9*dc(3,x)
+ 18*dc(4,x)
但し、定数5は、範囲5〜58における差分数が用いられているという事実に由来している。
【0095】
それぞれ異なる二次差分数列からの寄与は独立であるので、各二次差分数列について、別々に、差分xまでの全ての差分数の合計が計算され得る。図2において、場所xまでの全ての差分数が、各数列について、別々に、合計されたように見られ得る。
【0096】
実際には、この合計は、定数およびテーブルの使用によって容易に求めることができる。前記二次差分数列のサイクル全体からの寄与は、実際に一定であり且つそれ故、あらかじめ決定されそして定数として格納され得る。これらの定数はここではDCCSとしてあらわされる。差分数列の不完全なサイクルからの寄与も、あらかじめ決定されそしてテーブルに格納されることができ、該テーブルは、それぞれの二次差分数列における各場所について、この場所に至るまでとこの場所を含めて差分数の合計を与える。このテーブルは、ここにDCICSとあらわされる。定数項5からの寄与は、5*xである。
【0097】
sum(j=0…x−l)d(j)の項は、それ故、各二次差分数列について次のようにして求めることができる。
【0098】
DCCS*(x div l(i))+DCICS[x(mod l(i))]
ここで、l(i)は、二次差分数列iの長さである。
【0099】
s(x,xs)が求まると、点x,yにおけるx位置コードは、それ故、上述されたように、yの既知の値の使用およびテーブル参照によって求めることができる。
【0100】
x位置コードにおける後続の縦列については、(x,xs)は、上述されたように求められる必要はなく、代わりにs(x,xs)が既知であるという事実が利用されて、次の関係を用いてs(x+l,xs)が計算される。
【0101】
d(x)=(s(x+1,xs)−s(x,xs))(主数列の長さを法とする)
d(x)=5+dc(1,x)+ b*dc(2,x) +…
+ b*b…*bm−1*dc(m,x)
dc(i,x)=DC[差分数列iの長さを法とするx]
この手順が、それから、入力パラメータ「幅」に従って必要な個数の縦列について繰り返される。
【0102】
s(y,ys)は、s(x,xs)についてと対応する方法で求められ、そして入力パラメータxを用いて、点x,yにおけるy位置コードの値も求めることができる。
【0103】
これら両方の値が得られたとき、点x,yにおける変位が、テーブルO内が参照されることによって求められる。
【0104】
位置をコード化するために、コーディングデバイスが、それ故、次のテーブルおよび定数を使用し得る:
M:主数列における複数の異なる場所のそれぞれに対応する、主数列における数。
【0105】
O:複数の異なるビット対についての変位(0〜3)。
【0106】
DC:二次差分数列iにおける複数の異なる場所のそれぞれに対応する、二次差分数列iにおける数。
【0107】
DCICS:二次差分数列iの不完全なサイクルの各々における数の合計。
【0108】
加えて、次の定数が格納され得る:
DCCS:二次差分数列iにおける全ての数の合計。
【0109】
l(i):二次差分数列iの長さ。
【0110】
K:主数列の長さ。
【0111】
位置コーディングのための単純なフローチャートが図6に示されている。最初に、ステップ600において、入力信号が、x,y,xs,ys,幅,高さの形態で受け取られる。その後に、x行列およびy行列が、並列的に、あるいは、xがyより先またはyがxより先のいずれかの順序で逐次的に、求められる。このことは、並列フローによってフローチャートに示されている。ステップ605において、循環的シフトs(x,sx)が、x位置コーディングにおける最初の縦列について、まず求められる。その後に、ステップ610において、循環的シフトs(x+1,xs)が、2番目の縦列について求められる。その後、ステップ615においてx=x+1が適用され、ステップ620において、幅全体について、すなわち全ての縦列について、循環的シフトが求められたか否かが調べられる。もしも、そうでなければ、フローはステップ610に戻り、そしてこのステップおよびステップ615が繰り返される。もしも、全てについて求められたならば、ステップ625において、テーブル参照によってx行列におけるビット値が求められる。対応する方法で、ステップ630〜ステップ650においてy行列についてのビット値が求められる。最後に、xy行列についての変位がステップ655においてテーブル参照によって求められる。
【0112】
これは、もちろん、位置コーディングがどのように実行され得るかの、まさに粗く概略的な例であり、そして実際には、それは多くのやり方に変更され得る。例えば、点についてのビット対および対応する変位は、その点について循環的シフトが求められると直ちに引き続いて求められることも可能である。結果として、x行列およびy行列をバッファする必要はない。
【0113】
該方法は、コンピュータプログラムとして実行されることが可能である。コンピュータプログラムからの出力信号は、変位値を伴うxy行列そのものである必要はなく、その代わりに位置コードを作成する主数列の部分数列の何らかの他の指示からなることも可能である。
【0114】
〔位置デコーディングの実際の例〕
位置コードは、位置コードを読み取るためのセンサと何らかの適切なタイプのプロセッサユニットとを備え得るデコーディングデバイスにおいてデコードされ得る。プロセッサユニットは、実際のプロセッサ、作業メモリおよび、位置コードをデコーディングするための命令群を有するコンピュータプログラムがそこに格納される、プログラムメモリを備えている。前記プロセッサユニットは、典型的なパーソナルコンピュータに、ハンドヘルド読み取りデバイスに、または何らかの他の適切なデバイスに組み込まれ得る。あるいは、前記デコーディングデバイスは、ASICまたはFPGAまたはこの特定のタスクのために適するように適用され得る同様のユニットのような、特定目的のハードウェアで構成することもできるし、またはディジタルおよび/またはアナログ回路あるいはそれらの何らかの適切な組み合わせで構成することもできる。
【0115】
デコーディングデバイスの特定の例が以下において説明されるであろう。
【0116】
以下の記述は図7のフローチャートに言及している。
【0117】
デコーディングデバイスへの入力信号は、位置コードの検出された部分集合のイメージまたは他の何らかのディジタル表現からなっており、その部分集合は、少なくとも一点についての座標をコード化している(ステップ700)。この例においては、位置コードは、上述されたように、ラスタにおけるラスタ点に対して所定の方法にて変位されたドットにより、グラフィカルに表現される。
【0118】
デコーディングの最初のステップにおいては、デコーディングデバイスが、例えば閾値弁別を用いることによって、イメージにおけるドットを識別し、ラスタをドットに合わせる(ステップ705)。ラスタは、例えば、複数の異なるドット対の間における距離の利用という本出願人の国際特許出願WO 01/26034に記述された方法によって、またはフーリエ変換の利用という国際特許出願WO 01/75783に記述された他の方法によって、決定され得る。各ラスタ点について、関連付けられたドットの変位が求められ、変位に依存する値0〜3が与えられる。少なくともサイズが(n+1)*(n+l)の行列が選択され、ここで、nは、位置決めのために使用される主数列の部分数列の長さであり、その部分数列の場所は、主数列内に明確に決定される。ここの例では、8*8行列が選択される((n+2))*(n+2))。この行列は、変位値をビット対に変換するテーブルOIの検索を利用して、変位値をビット対に変換することによって、x行列(x位置コードとも呼ばれる)とy行列(y位置コードとも呼ばれる)とに分離される(ステップ710)。各ビット対における最初のビットはx行列を形成し、各ビット対における2番目のビットはy行列を形成する。
【0119】
次のステップにおいて、x行列およびy行列の回転の、四つの可能性のあるタイプ(0,90,180および270度)が調査され、現在の回転が決定される(ステップ715)。行列を誤って回転させると、長さ8の部分数列として、主数列には無い部分数列があらわれるという、先に述べられた事実が用いられる。
【0120】
同時に、ある程度のエラー訂正が長さ8の部分数列に基づいて実行される。
【0121】
正しい回転が決定されたとき、次のステップにおいて、中央にあって正しい方法で回転されそしてn*nなるサイズを有するx行列およびy行列のみが使用される。すなわちこの例においては、二つの6*6行列のみが使用される。x行列およびy行列が、並列的に、あるいは、xがyより先またはyがxより先のいずれかの順序で逐次的に、求められる。このことは、図7における並列フローによって示されている。
【0122】
x行列のデコーディングの最初のステップ720において、一次差分数列の部分数列が求められ、それは図7において、一次部分列と呼ばれる。より詳細には、x行列において、行列内の縦列におけるビットが、主数列の部分数列を構成する。主数列における対応する場所は、部分数列を場所に変換するテーブルMI内が参照されることにより求められる。その後に、複数の主数列の部分数列によってコード化された差分数が求められる。この例においては、それらの個数は5である。より詳細には、差分数は、隣接する部分数列の場所の間の差分dとして求められ、前記差分は主数列の長さを法として求められる。
【0123】
そのようにして取得される差分数の列は、一次差分数列の部分数列である。一次差分数列は、x方向についてのコーディングのために使用されるが、そのサイズのために、デコーディングデバイスには格納されない。その代わりに、一次差分数列の各部分数列は、二次差分数列の各々からの部分数列の組み合わせに変換され得るという、一次差分数列の性質が利用される。ステップ725において、一次部分列が、そのように二次部分列に変換される。より詳細には、各差分数は次のように書き換えられる:
d=d1 + b*d2 +…+ b*b…*bn−1*dn
ここで、nは、二次差分数列の個数であり、そしてbは、二次差分数列iの基数である。これに関する例は、次のようになる:
d=5+d1 + 3*d2 + 9*d3 + 18*d4
ここで、d1〜d4は、整数除算またはテーブル参照によって求められる。
【0124】
一次差分数列のデコードされた部分数列における五つの数の各々は、それ故結果として四つの数d1,d2,d3,d4となる。したがって、第一の二次差分数列の部分数列を形成する五つのd1数が得られ、第二の二次差分数列の部分数列を形成する五つのd2数が得られ、第三の二次差分数列の部分数列を形成する五つのd3数が得られ、そして第四の二次差分数列の部分数列を形成する五つのd4数が得られる。例が、下に与えられる:
d 23 45 51 9 37
d1 2 0 0 0 1
d2 1 0 2 0 0
d3 0 1 1 1 0
d4 1 2 2 0 2
二次差分数列の部分数列のそれぞれの場所は、それぞれの二次差分数列の部分数列をそれぞれの二次差分数列における場所に変換する四つのテーブルDCIを参照することによって求められる(ステップ730)。
【0125】
各部分数列について、場所piがそのように得られる。これらの場所について、次のような式が成り立つ:
P=p1(mod l1)
P=p2(mod l2)

P=pm(mod lm)
但し、Pは、座標xに対応する一次差分数列における場所、piは、二次差分数列における場所、liは、二次差分数列iの長さ、そしてmは、二次差分数列の個数である。
【0126】
この式のシステムは、よく知られた中国の余剰定理を用いて解決され得る。それについては、例えばNiven,Suckerman著「数の理論への導入」Springer Verlagに非常に詳細に説明されている。こうして、ステップ735において、xが求められる。
【0127】
L=prod(i=1,m)liと定義し、qi*(L/li)=1(mod li)と定義する。一次差分数列における場所Pは、次のようにして得られる:
P=(sum(i=1,n)((L/li)*pi*qi))(mod L)
ここの例では、
L=l1*l2*l3*l4=236*233*31*241=410815348
および
q1=135
q2=145
q3=17
q4=62
が得られる。
【0128】
もしも、二次差分数列の部分数列について例えば、場所p1=97;p2=176;p3=3およびp4=211が得られるならば、一次差分数列における対応する場所Pは、中国の余剰定理に従って170326961となるであろう。
【0129】
Pが求まると、次のステップは、場所が属するxセクションを決定することである。これは、まず、y=0という仮定のもとに、そしてs(x,0)の計算によって実行される。s(x,0)は、xs=0についての縦列xのための部分数列の主数列における場所である。
【0130】
s(x,0)は、位置xについての位置コードの決定に関連して上述されたのと同様に二次差分数列を用いて計算される。もしも、s(x,0)が、x方向についての位置決めのために使用される六つの部分数列のうちの最初の部分数列の場所から引かれると、y=0についてxsが得られる。
【0131】
y行列は、x行列のデコードに先だって、またはそれと並列的に、あるいはその後に、デコードされ、y方向について、一次差分数列における場所が、x方向についての上述されたのと対応する方法にて、図7におけるステップ740〜755に従って、求められる。加えて、yセクションysが、xセクションについて上述されたのに対応する方法であるが、x=0の仮定のもとに、計算される。最後に、ステップ760において、xsは、yを考慮して決定され、且つysは、xを考慮して決定される。すなわち、y=0についてのxsからy(主数列の長さを法とする)を減算し、x=0についてのysからx(主数列の長さを法とする)を減算する。
【0132】
次のテーブルは、したがって、位置コードをデコードするために使用され得る:
MI:主数列の部分数列を、主数列における場所に変換する、
DCI:n個の二次差分数列の各々の部分数列を、n個の二次差分数列における場所に変換する、そして
OI:変位値を、ビット対に変換する。
【0133】
図7におけるフローチャートでは、位置デコーディングが、例えばコンピュータプログラムにおいて、どのように実現され得るかの粗い概略的な例であることは強調されるべきである。
【0134】
〔ハンドヘルド読み取りデバイスの例〕
位置コードは、種々のタイプの読み取りデバイスによって読み取られ且つデコードされ得る。そのようなデバイスは、位置コードのディジタル表現を取得するためのセンサ、およびディジタル表現における位置コードを識別し且つこれをデコードするための手段を有し得る。これらの手段は、上述されたように、メモリを有するプロセッサ、および適切なプログラムまたは特別な目的のためのハードウェアまたは、ディジタルおよび/またはアナログ回路、または何らかのそれらの組み合わせから構成することができる。
【0135】
読み取りデバイスの例が図8に示されている。それは、ペンとほぼ同様の形状をなすケーシング11を備えている。ケーシングの短寸側部には、開口12がある。短寸側部は、位置決定が実行されるべき面に対して接触させまたはそこから短い距離で保持することを意図している。
【0136】
ケーシングは、主として光学部分、電子的回路構成部分および電源を収容している。
【0137】
光学部分は、イメージングされるべき面を照明するための少なくとも一つの発光ダイオード13および二次元イメージを記録するための例えばCCDまたはCMOSセンサ等の光感応性エリアセンサ14を備えている。付加的に、デバイスは、ミラーおよび/またはレンズ系のような光学系を含んでいてもよい。発光ダイオードは、赤外発光ダイオードであってもよく、そしてセンサが赤外光に感応性を有していてもよい。
【0138】
デバイスのための電源は、ケーシングにおける分離された区画室内に搭載されたバッテリ15から得る。外部電源からケーブルを介して電力供給を得ることも可能である(図示せず)。
【0139】
電子的回路構成部は、センサからイメージを記録し且つこれらのイメージに基づいて位置決定を実行するようにプログラムされたプロセッサ、ならびに作業メモリおよびプログラムメモリも有するプロセッサユニットを含んでいる。
【0140】
この実施の形態において、デバイスは、その上で位置決定が実行されるべき面上にその助けを借りて通常の顔料ベースの筆記が描出され得るペンポイント17も具備している。ペンポイント17は、ユーザがそれが使用されるか否かをコントロールできるように延長および折りたたみ収納が可能である。特定のアプリケーションにおいては、デバイスがペンポイントを有する必要は全くない。
【0141】
顔料ベースの描出は赤外光に対して透過性があるタイプが適しており、マークが赤外光を吸収することが適している。赤外光を射出する発光ダイオードを用い且つ赤外光に感応性を有するセンサを用いることにより、パターンの検出が、上述されたパターンとの描出干渉なしに実行され得る。
【0142】
デバイスは、それによってデバイスが起動され且つ制御され得るボタン18も備えることもできる。例えば赤外光、ラジオ波または超音波を用いてデバイスへおよびデバイスからの情報のワイヤレス通信のためのトランシーバ19も持っている。デバイスは、位置または記録された情報を表示するためのディスプレイ20を備えることもできる。
【0143】
デバイスは、異なる物理的ケーシングに分割されることもでき、第一のケーシングは、位置コーディングパターンのイメージの記録に必要な構成要素およびこれらを第二のケーシングに収容されおよび記録されたイメージ/イメージ群に基づいて位置決定を実行する構成要素に送信するための構成要素を収容する。
【0144】
〔代替的実施の形態〕
上述の実施の形態においては、位置コードが二次元において位置をコード化するものとして説明された。しかしながら、位置コードは、一次元の位置をコード化するために使用されるようにすることもできる。上述の例においては、例えば、位置コードの「ストリップ」は、y=0のx軸に沿って使用されるようにすることもできる。代わりに、xコーディング行列のみが使用されるようにすることもできる。このケースにおいては、行列における各点が、一つだけ値を持つであろうから、2値の数で構成される主数列を用いる場合に我々がグラフィカルにコード化する必要があるのは0または1のみである。
【0145】
一次元位置コーディングの使用は、バーコードと等価とすることができる。
【0146】
上述の実施の形態においては、2値の数で構成される主数列が使用されているが、主数列において異なる基数を使用することも可能である。その結果として、位置コーディング行列における各点においていくつかの異なる値をコード化する必要が生じ得る。
【0147】
上述の実施の形態においては、同一の主数列および同一の二次差分数列が、x方向およびy方向におけるコーディングのために使用される。これは、必要ではない。異なる次元におけるコーディングのために異なる数列が使用され得る。数列のためのテーブルの格納のためのメモリスペースの必要を予想して、しかしながら、全ての方向についてのコーディングのために同一の数列を使用することは利点とすることができる。
【0148】
上述の実施の形態において、6*6ドットまたはシンボルが位置のコーディングのために使用される。当然、より少ないまたは多いシンボルを使用され得る。両次元に同一数個のシンボルが使用される必要はない。
【0149】
上述の実施の形態において、一次差分数列の部分数列が、部分数列の組み合わせ上に、全単射的にマップされ、且つ二次差分数列の部分数列の組み合わせが、一次差分数列の部分数列上に、全単射的にマップされる。これは、必要ではない。一次差分数列の異なる部分数列は、二次差分数列の部分数列の同一の組み合わせ上にマップされることができる。部分数列の組み合わせ上にマップされない一次差分数列の部分数列が存在し得る。一次部分列よりも多い部分数列の組み合わせも存在し得る。上述の実施の形態において、ラスタは直交グリッドである。それは、ロンビックグリッドのような、例えば60度角度グリッド、三角グリッドまたは六角形グリッド等の他の形態を持っていてもよい。
【0150】
例えば六角形仮想ラスタに沿う3方向における変位についての、四つの方向より少ないまたはより多い方向の変位によるグラフィカルなコーディングが使用され得る。六角形ラスタにおいては、ラスタの再形成を容易にするためにただ二つの変位が使用され得る。
【0151】
上述の実施の形態において、差分数がゼロに近づくのを回避するために(5,58)の範囲の差分数が使用される。しかしながら、例えば、差分数3および4を含む他の範囲も使用され得る。
【0152】
上述の実施の形態において、パターンは光学的に読み取り可能であり、そしてセンサも光学的である。しかしながら、パターンは、光学パラメータとは異なるパラメータに基づくこともできる。そのような場合において、センサはもちろんそれに関するパラメータを読み取ることができるタイプからなっていなければならない。そのようなパラメータの例は、化学的、音響的または電磁的パラメータである。容量性または誘導性パラメータも使用され得る。
【0153】
製品は、一枚の紙によって上述に例示されている。しかしながら、それは上述のパラメータのいずれかを用いて位置コードが適用され得るいかなる製品であってもよい。もしも、位置コードが光学的であれば、それは、例えば、プリンタによってプリントアウトされまたは通常のプリント技術を用いて製品上にプリントされることもできる。
【0154】
〔付録A〕
主数列M:
0,0,0,0,0,0,1,0,0,1,1,1,1,1,0,1,0,0,1,0,0,0,0,1,1,1,0,1,1,1,0,0,1,0,1,0,1,0,0,0,1,0,1,1,0,1,1,0,0,1,1,0,1,0,1,1,1,1,0,0,0,1,1
二次差分数列:
A1=0,0,0,0,0,1,0,0,0,0,2,0,1,0,0,1,0,1,0,0,2,0,0,0,1,1,0,0,0,1,2,0,0,1,0,2,0,0,2,0,2,0,1,1,0,1,0,1,1,0,2,0,1,2,0,1,0,1,2,0,2,1,0,0,1,1,1,0,1,1,1,1,0,2,1,0,1,0,2,1,1,0,0,1,2,1,0,1,1,2,0,0,0,2,1,0,2,0,2,1,1,1,0,0,2,1,2,0,1,1,1,2,0,2,0,0,1,1,2,1,0,0,0,2,2,0,1,0,2,2,0,0,1,2,2,0,2,0,2,2,1,0,1,2,1,2,1,0,2,1,2,1,1,0,2,2,1,2,1,2,0,2,2,0,2,2,2,0,1,1,2,2,1,1,0,1,2,2,2,2,1,2,0,0,2,2,1,1,2,1,2,2,1,0,2,2,2,2,2,0,2,1,2,2,2,1,1,1,2,1,1,2,0,1,2,2,1,2,2,0,1,2,1,1,1,1,2,2,2,0,0,2,1,1,2,2
A2=0,0,0,0,0,1,0,0,0,0,2,0,1,0,0,1,0,1,0,1,1,0,0,0,1,1,1,1,0,0,1,1,0,1,0,0,2,0,0,0,1,2,0,1,0,1,2,1,0,0,0,2,1,1,1,0,1,1,1,0,2,1,0,0,1,2,1,2,1,0,1,0,2,0,1,1,0,2,0,0,1,0,2,1,2,0,0,0,2,2,0,0,1,1,2,0,2,0,0,2,0,2,0,1,2,0,0,2,2,1,1,0,0,2,1,0,1,1,2,1,0,2,0,2,2,1,0,0,2,2,2,1,0,1,2,2,0,0,2,1,2,2,1,1,1,1,1,2,0,0,1,2,2,1,2,0,1,1,1,2,1,1,2,0,1,2,1,1,1,2,2,0,2,2,0,1,1,2,2,2,2,1,2,1,2,2,0,1,2,2,2,0,2,0,2,1,1,2,2,1,0,2,2,0,2,1,0,2,1,1,0,2,2,2,2,0,1,0,2,2,1,2,2,2,1,1,2,1,2,0,2,2,2,
A3=0,0,0,0,0,1,0,0,1,1,0,0,0,1,1,1,1,0,0,1,0,1,0,1,1,0,1,1,1,0,1,
A4=0,0,0,0,0,1,0,2,0,0,0,0,2,0,0,2,0,1,0,0,0,1,1,2,0,0,0,1,2,0,0,2,1,0,0,0,2,1,1,2,0,1,0,1,0,0,1,2,1,0,0,1,0,0,2,2,0,0,0,2,2,1,0,2,0,1,1,0,0,1,1,1,0,1,0,1,1,0,1,2,0,1,1,1,1,0,0,2,0,2,0,1,2,0,2,2,0,1,0,2,1,0,1,2,1,1,0,1,1,1,2,2,0,0,1,0,1,2,2,2,0,0,2,2,2,0,1,2,1,2,0,2,0,0,1,2,2,0,1,1,2,1,0,2,1,1,0,2,0,2,1,2,0,0,1,1,0,2,1,2,1,0,1,0,2,2,0,2,1,0,2,2,1,1,1,2,0,2,1,1,1,0,2,2,2,2,0,2,0,2,2,1,2,1,1,1,1,2,1,2,1,2,2,2,1,0,0,2,1,2,2,1,0,1,1,2,2,1,1,2,1,2,2,2,2,1,2,0,1,2,2,1,2,2,0,2,2,2,1,1.

【特許請求の範囲】
【請求項1】
位置コーディングのための方法であって、
一次数列に含まれる複数の部分数列のそれぞれによって、面上の第一次元における複数の位置のそれぞれをコード化することと、
前記一次数列の複数の部分数列の決定のために、前記一次数列の基数よりも小さな基数を有する少なくとも二つの二次数列を用いることとを含み、
前記一次数列の各部分数列は、第一の所定の長さを有するものであり、
前記一次数列は、前記各部分数列の前記一次数列における場所が明確に決定される性質を有するものであることを特徴とする方法。
【請求項2】
前記位置コーディングのために使用可能な前記一次数列における異なる数の個数は、少なくとも二つの因数に因数分解され得る数であり、
前記因数の個数は、前記二次数列の個数と同一であり、
前記因数の各々がそれぞれの二次数列における基数を形成するものである請求項1に記載の方法。
【請求項3】
前記二次数列のそれぞれの長さが、対にすると互いに素であるようになっている請求項1または2に記載の方法。
【請求項4】
前記二次数列の各々は、前記第一の所定長さを有する各部分数列の前記それぞれの二次数列における場所が明確に決定される性質を有するものである請求項1〜3のいずれか1項に記載の方法。
【請求項5】
前記二次数列の基数は、多くとも5、望ましくは多くとも3、である請求項1〜4のいずれか1項に記載の方法。
【請求項6】
前記一次数列の前記部分数列は、前記二次数列の各々からの部分数列を組み合わせたものに全単射的に写像され得るものである請求項1〜5のいずれか1項に記載の方法。
【請求項7】
循環主数列に含まれる複数の部分数列を用いて、前記一次数列における複数の数をコード化することをさらに含み、
前記循環主数列の各部分数列は、第二の所定の長さを有するものであり、
前記循環主数列は、前記各部分数列の前記循環主数列における場所が明確に決定される性質を有するものであり、
前記循環主数列は、前記一次数列における数を形成する差分数が定義されるように、面上に配列される請求項1〜6のいずれか1項に記載の方法。
【請求項8】
前記循環主数列の前記部分数列は、各部分数列が第二次元に延びるようにして、面上に配列されるものである請求項7に記載の方法。
【請求項9】
前記主数列の部分数列を用いて理論的に定義され得る差分数のうちの選択された部分集合が実際に利用されるものであり、
該部分集合は、理論的に定義可能な差分数のうちのゼロに等しいかまたはそれに近い差分数を除外したものである請求項7または8に記載の方法。
【請求項10】
前記主数列は、2値の数で構成され、前記第二の所定長さよりも長い所定長さの部分数列が、逆順になった形態もしくは反転した形態で前記主数列内にあらわれることがないように、選択されたものである請求項7〜9のいずれか1項に記載の方法。
【請求項11】
前記主数列は、2値の数で構成され、前記第二の所定長さよりも長い所定長さの部分数列が、1ビットが反転した状態で前記主数列内にあらわれることがないように、選択されたものである請求項7〜10のいずれか1項に記載の方法。
【請求項12】
前記主数列の部分数列であって、前記第二の所定長さの部分数列は、六つの数からなり、
前記一次数列の部分数列であって、前記第一の所定長さの部分数列は、五つの差分数からなるものである請求項7〜11のいずれか1項に記載の方法。
【請求項13】
前記循環主数列Mが、
M=0,0,0,0,0,0,1,0,0,1,1,1,1,1,0,1,0,0,1,0,0,0,0,1,1,1,0,1,1,1,0,0,1,0,1,0,1,0,0,0,1,0,1,1,0,1,1,0,0,1,1,0,1,0,1,1,1,1,0,0,0,1,1
である請求項7〜12のいずれか1項に記載の方法。
【請求項14】
前記一次数列は、54の異なる数を含み、
前記二次数列の個数は、4であって、それらのうちの三つが基数3を有し、残りの一つが基数2を有するものである請求項1〜13のいずれか1項に記載の方法。
【請求項15】
前記少なくとも二つの二次数列A1,A2,A3,A4が、
A1=0,0,0,0,0,1,0,0,0,0,2,0,1,0,0,1,0,1,0,0,2,0,0,0,1,1,0,0,0,1,2,0,0,1,0,2,0,0,2,0,2,0,1,1,0,1,0,1,1,0,2,0,1,2,0,1,0,1,2,0,2,1,0,0,1,1,1,0,1,1,1,1,0,2,1,0,1,0,2,1,1,0,0,1,2,1,0,1,1,2,0,0,0,2,1,0,2,0,2,1,1,1,0,0,2,1,2,0,1,1,1,2,0,2,0,0,1,1,2,1,0,0,0,2,2,0,1,0,2,2,0,0,1,2,2,0,2,0,2,2,1,0,1,2,1,2,1,0,2,1,2,1,1,0,2,2,1,2,1,2,0,2,2,0,2,2,2,0,1,1,2,2,1,1,0,1,2,2,2,2,1,2,0,0,2,2,1,1,2,1,2,2,1,0,2,2,2,2,2,0,2,1,2,2,2,1,1,1,2,1,1,2,0,1,2,2,1,2,2,0,1,2,1,1,1,1,2,2,2,0,0,2,1,1,2,2,
A2=0,0,0,0,0,1,0,0,0,0,2,0,1,0,0,1,0,1,0,1,1,0,0,0,1,1,1,1,0,0,1,1,0,1,0,0,2,0,0,0,1,2,0,1,0,1,2,1,0,0,0,2,1,1,1,0,1,1,1,0,2,1,0,0,1,2,1,2,1,0,1,0,2,0,1,1,0,2,0,0,1,0,2,1,2,0,0,0,2,2,0,0,1,1,2,0,2,0,0,2,0,2,0,1,2,0,0,2,2,1,1,0,0,2,1,0,1,1,2,1,0,2,0,2,2,1,0,0,2,2,2,1,0,1,2,2,0,0,2,1,2,2,1,1,1,1,1,2,0,0,1,2,2,1,2,0,1,1,1,2,1,1,2,0,1,2,1,1,1,2,2,0,2,2,0,1,1,2,2,2,2,1,2,1,2,2,0,1,2,2,2,0,2,0,2,1,1,2,2,1,0,2,2,0,2,1,0,2,1,1,0,2,2,2,2,0,1,0,2,2,1,2,2,2,1,1,2,1,2,0,2,2,2,
A3=0,0,0,0,0,1,0,0,1,1,0,0,0,1,1,1,1,0,0,1,0,1,0,1,1,0,1,1,1,0,1,
A4=0,0,0,0,0,1,0,2,0,0,0,0,2,0,0,2,0,1,0,0,0,1,1,2,0,0,0,1,2,0,0,2,1,0,0,0,2,1,1,2,0,1,0,1,0,0,1,2,1,0,0,1,0,0,2,2,0,0,0,2,2,1,0,2,0,1,1,0,0,1,1,1,0,1,0,1,1,0,1,2,0,1,1,1,1,0,0,2,0,2,0,1,2,0,2,2,0,1,0,2,1,0,1,2,1,1,0,1,1,1,2,2,0,0,1,0,1,2,2,2,0,0,2,2,2,0,1,2,1,2,0,2,0,0,1,2,2,0,1,1,2,1,0,2,1,1,0,2,0,2,1,2,0,0,1,1,0,2,1,2,1,0,1,0,2,2,0,2,1,0,2,2,1,1,1,2,0,2,1,1,1,0,2,2,2,2,0,2,0,2,2,1,2,1,1,1,1,2,1,2,1,2,2,2,1,0,0,2,1,2,2,1,0,1,1,2,2,1,1,2,1,2,2,2,2,1,2,0,1,2,2,1,2,2,0,2,2,2,1,1
である請求項1〜14のいずれか1項に記載の方法。
【請求項16】
第二の一次数列に含まれる複数の部分数列のそれぞれによって、面上の第二次元における複数の位置のそれぞれをコード化することと、
前記第二の一次数列の複数の部分数列の決定のために、前記第二の一次数列の基数よりも小さな基数を有する少なくとも二つの第二の二次数列を用いることとをさらに含み、
前記第二の一次数列の各部分数列は、第三の所定の長さを有するものであり、
前記第二の一次数列は、前記各部分数列の前記第二の一次数列における場所が明確に決定される性質を有するものである請求項1〜15のいずれか1項に記載の方法。
【請求項17】
第一次元および第二次元における位置コーディングのための一次数列および二次数列が同一のものである請求項16に記載の方法。
【請求項18】
前記位置コードを、グラフィックなコーディングによって、面上にプリントアウトすることをさらに含む請求項1〜17のいずれか1項に記載の方法。
【請求項19】
コンピュータに位置コーディングを実行させるための命令群を有するコンピュータプログラムであって、
該コンピュータプログラムは、
一次数列に含まれる複数の部分数列のそれぞれによって、面上の第一次元における複数の位置のそれぞれをコード化するための命令群と、
前記一次数列の複数の部分数列の決定のために、前記一次数列の基数よりも小さな基数を有する少なくとも二つの二次数列を用いるための命令群とを含み、
前記一次数列の各部分数列は、第一の所定の長さを有するものであり、
前記一次数列は、前記各部分数列の前記一次数列における場所が明確に決定される性質を有するものであることを特徴とするコンピュータプログラム。
【請求項20】
位置をコーディングするためのデバイスであって、
プロセッサと、
請求項19に記載のコンピュータプログラムを格納するメモリと、
を具備することを特徴とするデバイス。
【請求項21】
面上の第一次元における点の第一の座標xを少なくともコード化する位置コードを求めるためのコーディングデバイスにおける方法であって、
前記コーディングデバイスに対する入力信号として少なくとも前記第一の座標xを受け取ることと、
受け取られた座標xに基づいて、前記第一次元における位置のコーディングのために用いられる一次数列の部分数列を求めることとを含み、
前記一次数列の部分数列は、第一の所定の長さを有し、前記座標xに対応して、前記一次数列において明確に決定される場所を有するものであり、
前記一次数列の部分数列を求めることは、前記一次数列の基数よりも小さな基数を有する少なくとも二つの二次数列を用いて、前記座標xに対応する前記一次数列の部分数列を求めることを含むことを特徴とする方法。
【請求項22】
前記一次数列の部分数列を求めることは、前記一次数列における前記場所を前記二次数列の各々における場所に変換することを含む請求項21に記載の方法。
【請求項23】
前記一次数列の部分数列を求めることは、前記二次数列の各々について、前記二次数列における前記場所に対応する部分数列を求めることと、求められた前記二次数列の部分数列に基づいて、前記一次数列の部分数列を求めることとをさらに含む請求項22に記載の方法。
【請求項24】
循環主数列に含まれる複数の部分数列を用いて、前記一次数列の部分数列における数をコード化することをさらに含み、
前記循環主数列の各部分数列は、第二の所定の長さを有するものであり、
前記循環主数列は、前記各部分数列の前記循環主数列における場所が明確に決定される性質を有するものであり、
前記一次数列の部分数列における数が、前記循環主数列の複数の部分数列の差分としてコード化されるものである請求項21〜23のいずれか1項に記載の方法。
【請求項25】
前記コーディングデバイスからの出力信号として前記循環主数列の部分数列を示す情報を含む位置コードを出力することをさらに含む請求項24に記載の方法。
【請求項26】
前記コーディングデバイスに、前記循環主数列の複数の部分数列を、面上に適用させることをさらに含み、
前記循環主数列の部分数列が第二次元に広がり、前記一次数列の部分数列における数が前記第一次元に広がるように、前記適用が行われる請求項24または25に記載の方法。
【請求項27】
前記循環主数列の複数の部分数列のうちの最初の部分数列を、周期的に繰り返される前記二次数列の各々における初めのx−1個の数を合計することによって計算することをさらに含む請求項24〜26のいずれか1項に記載の方法。
【請求項28】
前記二次数列の完全なおよび不完全なサイクルの前もって計算された合計を用いることにより、前記二次数列における数が合計される請求項27に記載の方法。
【請求項29】
前記コーディングデバイスは前記座標x=0についての前記部分数列の前記循環主数列における場所を入力信号としてさらに受け取るべく構成され、
前記方法は、前記循環主数列の複数の部分数列のうちの前記最初の部分数列の計算のために座標x=0についての前記場所を用いることをさらに含む請求項27または28に記載の方法。
【請求項30】
前記循環主数列の複数の部分数列のうちの2番目の部分数列を、前記一次数列の前記部分数列における数d(x)を求めることによって、求めることをさらに含み、
前記数d(x)は、前記循環主数列の前記最初の部分数列および前記2番目の部分数列によってコード化されるものである請求項27〜29のいずれか1項に記載の方法。
【請求項31】
前記数d(x)は、
d(x)=dc(1,x) + b*dc(2,x)+…
+ b*…*bn−1*dc(n,x)
但し、nは、二次数列の個数、bは、二次数列iにおける基数、そしてdc(i,x)は、長さlのそれぞれの二次数列におけるlを法とした場所xにおける数、
として計算されるものである請求項30に記載の方法。
【請求項32】
前記コーディングデバイスに対する入力信号として前記面上の第二次元における前記点の第二の座標yを受け取ることと、
受け取られた座標yに基づいて、前記第二次元における位置のコーディングのために用いられる第二の一次数列の部分数列を求めることとをさらに含み、
前記第二の一次数列の部分数列は、第三の所定の長さを有し、前記座標yに対応して、前記第二の一次数列において明確に決定される場所を有するものであり、
前記第二の一次数列の部分数列を求めることは、前記第二の一次数列よりも小さな基数を有する少なくとも二つの第二の二次数列を用いて、前記座標yに対応する前記第二の一次数列の部分数列を求めることを含む請求項21〜31のいずれか1項に記載の方法。
【請求項33】
請求項21〜32のいずれか1項に記載の方法を、コンピュータに実行させるための命令群を有することを特徴とするコンピュータプログラム。
【請求項34】
位置をコーディングするためのデバイスであって、
プロセッサと、
請求項33に記載のコンピュータプログラムを格納するメモリと、
を具備することを特徴とするデバイス。
【請求項35】
面上の第一次元における点の第一の座標を少なくともコード化する位置コードのデコーディングのための方法であって、
前記位置コードのディジタル表現に基づいて、一次数列の部分数列を構成する第一の所定の個数の数を識別することと、
前記一次数列の基数よりも小さい基数を有する少なくとも二つの二次数列を用いて、前記部分数列の前記一次数列における場所Pを求めることとを含み、
前記一次数列の前記部分数列は、前記一次数列において明確に決定される場所Pを有するものであり、前記場所Pは、前記第一の座標に対応するものであることを特徴とする方法。
【請求項36】
前記一次数列における前記部分数列の場所Pを求めることは、前記一次数列の前記部分数列を前記二次数列の各々の部分数列の組み合わせに変換することを含む請求項35に記載の方法。
【請求項37】
前記一次数列における前記部分数列の場所Pを求めることは、前記組み合わせにおける前記部分数列の各々の前記二次数列それぞれにおける場所を求めることと、前記二次数列における前記場所の前記組み合わせに基づいて前記一次数列における場所Pを求めることとをさらに含む請求項36に記載の方法。
【請求項38】
前記一次数列の前記部分数列を前記二次数列の各々の部分数列に変換することは、前記一次数列の前記部分数列における各数dを、
d=d1 + b*d2 +…+ b*b…*bn−1*dn、
(但し、nは、前記二次数列の個数であり、bは、前記二次数列iにおける基数)
に従って、数d1,…,dnの組に変換することを含む請求項36または37に記載の方法。
【請求項39】
前記一次数列における場所Pは、中国の余剰定理を用いて、
P=(sum(i=1,n)((L/l))*p*q)(mod L)
(但し、L=prod(i=1,n)l、pは、前記二次数列iにおける場所、lは、前記二次数列iの長さ、mは、前記二次数列の個数、そしてq*(L/l)=1(mod l))
として求められるものである請求項36〜38のいずれか1項に記載の方法。
【請求項40】
座標0についての部分数列の主数列における場所を求めることによって、前記点について前記第一次元における付加的な座標を求めることをさらに含み、
前記一次数列における数は、前記主数列の部分数列を用いてコード化されたものである請求項35〜39のいずれか1項に記載の方法。
【請求項41】
前記位置コードが、前記面上の第二次元における前記点の第二の座標をさらにコード化するものであり、前記方法は、
前記位置コードのディジタル表現に基づいて、第二の一次数列の部分数列を構成する第三の所定の個数の数を識別することと、
前記第二の一次数列の基数よりも小さい基数を有する少なくとも二つの第二の二次数列を用いて、前記第二の一次数列における前記部分数列の場所を求めることとをさらに含み、
前記第二の一次数列の前記部分数列は、前記第二の一次数列において明確に決定される場所を有するものであり、前記場所は、前記第二の座標に対応するものである請求項35〜40のいずれか1項に記載の方法。
【請求項42】
前記方法が、入力信号として前記位置コードのディジタル表現を受け取り且つ出力信号として少なくとも前記点についての前記第一の座標を与えるデコーディングデバイスにおいて実行される請求項35〜41のいずれか1項に記載の方法。
【請求項43】
請求項35〜42のいずれか1項に記載の方法を、コンピュータに実行させるための命令群を有することを特徴とするコンピュータプログラム。
【請求項44】
位置コードをデコーディングするためのデバイスであって、
プロセッサと、
位置コードをデコーディングするための請求項43に記載のコンピュータプログラムを格納するメモリと、
を具備することを特徴とするデバイス。
【請求項45】
面上の第一次元における点の第一の座標を少なくともコード化する位置コードのデコーディングのためのデバイスであって、
デコードされるべき前記位置コードのディジタル表現を提供するためのセンサと、
一次数列を作ることのできる少なくとも二つの二次数列を格納するためのメモリと、
前記位置コードの前記ディジタル表現に基づいて、前記一次数列の部分数列を構成する第一の所定の個数の数を識別し、前記二次数列を用いて、前記一次数列における前記部分数列の場所Pを求めるように、構成されたプロセッサとを具備し、
前記一次数列の前記部分数列は、前記一次数列において明確に決定される場所Pを有するものであり、前記場所Pは、前記第一の座標に対応するものであり、前記一次数列は、前記二次数列の基数よりも大きな基数を有するものであることを特徴とするデバイス。
【請求項46】
前記プロセッサは、前記一次数列における前記部分数列の場所Pを求めるために、前記一次数列の前記部分数列を前記二次数列の各々の部分数列の組み合わせに変換するように、さらに構成されている請求項45に記載のデバイス。
【請求項47】
前記プロセッサは、前記組み合わせにおける前記部分数列の各々の前記二次数列それぞれにおける場所を求め、前記二次数列における前記場所の前記組み合わせに基づいて前記一次数列における場所Pを求めるように、さらに構成されている請求項46に記載のデバイス。
【請求項48】
面上の第一次元における点の第一の座標を少なくともコード化する位置コードが付与された面を有する製品であって、
前記第一の座標は、一次数列の部分数列によってコード化されており、
前記一次数列は、前記一次数列の基数よりも小さな基数を有する少なくとも二つの二次数列を用いて作られるものであり、
前記一次数列の前記部分数列は、第一の所定の長さを有するものであり、
前記一次数列は、前記第一の所定長さを有する各部分数列の前記一次数列における場所が明確に決定される性質を有するものであることを特徴とする製品。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2010−102723(P2010−102723A)
【公開日】平成22年5月6日(2010.5.6)
【国際特許分類】
【外国語出願】
【出願番号】特願2009−281717(P2009−281717)
【出願日】平成21年12月11日(2009.12.11)
【分割の表示】特願2003−507753(P2003−507753)の分割
【原出願日】平成14年6月25日(2002.6.25)
【出願人】(506145326)アノト アクティエボラーク (49)
【Fターム(参考)】