(57)【要約】  位置コードを、基数ｂ及び長さＫの主数列を循環させかつ所定長の固有部分数列をＫ通り含んだ循環主数列をそれぞれ所定量に従ってシフトさせて一次元方向に複数配置した構成とする。読み取り部では、複数の循環主数列の少なくとも隣接する２つから「Ｋ＋Ｋ＊（ｂ−１）＊Ｎ≦ｂＮ」を満足する長さＮの部分数列を、それぞれ読み取る。判定部では、読み取られた長さＮの部分数列の各々について、循環主数列中における場所を判定する。取得部では、判定された場所に基づいて、位置コードの読み取り位置に付与されている位置情報を取得する。
2013179595.tif 000002
【特許請求の範囲】
【請求項１】
位置コードを読み取る装置であって、
前記位置コードは、基数ｂ及び長さＫの主数列を循環させかつ所定長の固有部分数列をＫ通り含んだ循環主数列を、それぞれ所定量に従ってシフトさせて一次元方向に複数配置した構成からなり、
前記複数の循環主数列の少なくとも隣接する２つから、下記式を満足する長さＮの部分数列をそれぞれ読み取る読み取り部、
前記読み取られた長さＮの部分数列の各々について、前記循環主数列中における場所を判定する判定部、及び
前記判定された場所に基づいて、前記位置コードの読み取り位置に付与されている位置情報を取得する取得部を備える、読み取り装置。
［式］  Ｋ＋Ｋ＊（ｂ−１）＊Ｎ≦ｂＮ  （ｂ、Ｋ、Ｎは、２以上の整数）
【請求項２】
前記判定部は、
前記読み取られた長さＮの部分数列の各々について、前記Ｋ通りの固有部分数列の中から、前記読み取られた長さＮの部分数列とのハミング距離が最も小さい固有部分数列を特定し、
前記特定された固有部分数列について前記循環主数列中における場所を判定する、請求項１に記載の読み取り装置。
【請求項３】
前記取得部は、
前記判定された場所について、隣接する前記循環主数列間の場所の差分を一次数列として求め、
前記一次数列を混合基数で表したときの各桁の数値を、複数の二次数列として求め、
前記複数の二次数列から長さＬ（Ｌは２以上の整数）の部分数列をそれぞれ取得し、
前記取得した長さＬの部分数列の各々について、前記二次数列中における場所を判定し、
前記判定された場所に基づいて、前記位置コードの読み取り位置に付与されている位置情報を取得する、請求項１に記載の読み取り装置。
【請求項４】
前記長さＬは、Ｌ＝Ｎ−１に設定される、請求項３に記載の読み取り装置。
【請求項５】
前記判定部は、
前記読み取られた長さＮの部分数列の各々について、前記循環主数列との最小ハミング距離と、前記循環主数列の極性を反転させかつ並びを逆順にした補助数列との最小ハミング距離とを算出し、
前記補助数列との最小ハミング距離が前記循環主数列との最小ハミング距離よりも小さい場合に、前記読み取られた長さＮの部分数列に対して回転除去処理を施す、請求項１に記載の読み取り装置。
【請求項６】
前記判定部は、
前記読み取られた長さＮの部分数列の各々について、前記循環主数列との最小ハミング距離を算出して合計し、前記循環主数列の極性を反転させかつ並びを逆順にした補助数列との最小ハミング距離を算出して合計し、
前記補助数列との最小ハミング距離の合計値が前記循環主数列との最小ハミング距離の合計値よりも小さい場合に、前記読み取られた長さＮの部分数列に対して回転除去処理を施す、請求項１に記載の読み取り装置。
【請求項７】
前記判定部は、前記算出された最小ハミング距離に基づいて、９０度単位で前記位置コードに生じている回転の影響を補正する、請求項５に記載の読み取り装置。
【請求項８】
前記判定部は、前記算出された最小ハミング距離の合計値に基づいて、９０度単位で前記位置コードに生じている回転の影響を補正する、請求項６に記載の読み取り装置。
【請求項９】
位置コードを読み取る読み取り方法であって、
前記位置コードは、基数ｂ及び長さＫの主数列を循環させかつ所定長の固有部分数列をＫ通り含んだ循環主数列を、それぞれ所定量に従ってシフトさせて一次元方向に複数配置させた構成からなり、
前記複数の循環主数列の少なくとも隣接する２つから、下記式の条件を満たす長さＮの部分数列をそれぞれ読み取るステップ、
前記読み取られた長さＮの部分数列の各々について、前記循環主数列中における場所を判定するステップ、及び
前記判定された場所に基づいて、前記位置コードの読み取り位置に付与されている位置情報を取得するステップを備える、読み取り方法。
［式］  Ｋ＋Ｋ＊（ｂ−１）＊Ｎ≦ｂＮ  （ｂ、Ｋ、Ｎは、２以上の整数）
【請求項１０】
位置コードを有する製造物であって、
基数ｂ及び長さＫの主数列を循環させかつ所定長の固有部分数列をＫ通り含んだ循環主数列を、それぞれ所定量に従ってシフトさせて一次元方向に複数配置させた構成からなり、下記式の条件を満たす長さＮの部分数列によって位置を一意に識別できる位置情報が付与されている位置コードが、読み取り可能に形成された、製造物。
［式］  Ｋ＋Ｋ＊（ｂ−１）＊Ｎ≦ｂＮ  （ｂ、Ｋ、Ｎは、２以上の整数）
【請求項１１】
位置コードを生成する方法であって、
位置を一意に識別できる位置情報を表した複数の二次数列を生成するステップ、
前記複数の二次数列の各項を混合基数で表した一次数列を生成するステップ、
基数ｂ及び長さＫの主数列を循環させかつ所定長の固有部分数列をＫ通り含んだ循環主数列を生成するステップ、及び
前記循環主数列を前記一次数列に基づいて付与される所定量に従ってシフトさせて一次元方向に複数配置するするステップによって、
前記循環主数列における下記式の条件を満たす長さＮの部分数列によって前記位置情報の取得が可能となる位置コードを生成する、方法。
［式］  Ｋ＋Ｋ＊（ｂ−１）＊Ｎ≦ｂＮ  （ｂ、Ｋ、Ｎは、２以上の整数）
【請求項１２】
コンピュータ読み取り可能なプログラムが記録された媒体であって、
基数ｂ及び長さＫの主数列を循環させかつ所定長の固有部分数列をＫ通り含んだ循環主数列を、それぞれ所定量に従ってシフトさせて一次元方向に複数配置させた構成からなる位置コードに対して、
前記複数の循環主数列の少なくとも隣接する２つから、下記式の条件を満たす長さＮの部分数列をそれぞれ読み取るステップ、
前記読み取られた長さＮの部分数列の各々について、前記循環主数列中における場所を判定するステップ、及び
前記判定された場所に基づいて、前記位置コードの読み取り位置に付与されている位置情報を取得するステップを、コンピュータに実行させるためのプログラムが記録された、記録媒体。
［式］  Ｋ＋Ｋ＊（ｂ−１）＊Ｎ≦ｂＮ  （ｂ、Ｋ、Ｎは、２以上の整数）
【請求項１３】
コンピュータ読み取り可能なプログラムが記録された媒体であって、
位置を一意に識別できる位置情報を表した複数の二次数列を生成するステップ、
前記複数の二次数列の各項を混合基数で表した一次数列を生成するステップ、
基数ｂ及び長さＫの主数列を循環させかつ所定長の固有部分数列をＫ通り含んだ循環主数列を生成するステップ、及び
前記循環主数列を前記一次数列に基づいて付与される所定量に従ってシフトさせて一次元方向に複数配置するステップを、コンピュータに実行させて、
前記循環主数列における下記式の条件を満たす長さＮの部分数列によって前記位置情報の取得が可能となる位置コードを生成するプログラムが記録された、記録媒体。
［式］  Ｋ＋Ｋ＊（ｂ−１）＊Ｎ≦ｂＮ  （ｂ、Ｋ、Ｎは、２以上の整数）
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、位置コードの読み取り装置及び読み取り方法に関し、さらには位置コードを生成する方法、読み取った位置コードを復号する方法、これらの方法を実行するためのコンピュータプログラム、並びに位置コードが用いられる製品等に関する。
【背景技術】
【０００２】
面上に設けられた位置コードを利用して面内の位置を特定する技術は、すでに考案されている。この技術としては、例えば、特許文献１に記載された位置コードの生成方法及び復号方法が知られている。以下に、この特許文献１に記載された従来の方法を簡単に説明する。【０００３】
特許文献１に記載された従来の方法は、位置コードを生成するために、主数列、一次数列、及び二次数列の３種類の数列を用いている。また、特許文献１は、グラフィカルな位置コードを生成して紙面に印刷し、それを電子ペンに備えられた入力部によって光学的に読み取り、読み取った位置コードに基づいて座標位置を判別する方法について記載している。【０００４】
特許文献１において、主数列としては、長さが６３の２進数による数列が例示されている。主数列の末端に同一の主数列の始端を連結して生成された数列を、循環主数列と呼ぶ。特許文献１における循環主数列は、循環主数列中の長さが６の任意の部分数列について、該部分数列の主数列に対する場所を明確に決定することができる数列である。ここで、部分数列の主数列に対する場所とは、主数列の先頭に対する部分数列の先頭の所定の方向へのずれを主数列の長さで除算した場合の剰余に該当する。すなわち、主数列の長さが６３のである循環主数列中から抽出された長さが６の任意の部分数列について、該抽出された部分数列の場所を０〜６２の範囲で特定することができる。【０００５】
２つ以上の主数列は、それぞれ指定された循環移動量に応じた所定の方向への移動（シフト）を施され、順次隣り合って循環主数列として配置される。隣接する２つの循環主数列間の循環移動量の差を、差分数と呼ぶ。この差分数は、隣接して配置された２つの循環主数列からずれが等しい部分数列をそれぞれ抽出し、抽出した２つの部分数列について主数列に対する場所をそれぞれ特定し、特定した２つの場所の差分を求めることによって得られる。なお、上記説明におけるずれが等しい部分数列とは、各循環主数列の先頭から各部分数列の先頭までのずれ量（ずれ幅）が等しい部分数列を意味している。なお、ずれが等しい部分数列は、上記の定義に限られるものではなく、循環主数列間の差分数を適切に特定できるものであればよい。例えば、二次元平面に配置された位置コードの二次元平面内での位置関係により対応付けされる部分数列や、三次元空間内に配置された位置コードの三次元空間中の位置関係により対応付けされる部分数列であってもよい。特許文献１では、差分数としては５〜５８の値を用いることが例示されている。差分数を項とする数列は一次数列をなす。【０００６】
差分数は、混合基数に基づいて複数の桁に分解される。各桁の値を項とする数列は、二次数列と定義されている。特許文献１では、混合基数として下位の基数から順に３、３、２、３が例示されている。すなわち、１つの一次数列から導出される二次数列の数は４である。４つの二次数列は、それぞれ循環主数列によって構成されるが、各循環主数列を構成する基となる主数列の長さは、互いに素（１以外の公約数を持たない）となるように設定されている。特許文献１では、４つの二次数列において循環主数列を構成する基となる主数列の長さとして、それぞれ２３６、２３３、３１、２４１が例示されている。【０００７】
４つの二次数列は、いずれも二次数列から長さが５の部分数列を取得することで、二次数列中の場所を特定することができる。この二次数列中の場所が所望の位置情報を示している。【０００８】
以上説明した、複数の循環主数列の並びを位置コードといい、位置情報を符号化することによって位置コードを生成する。また、読み取り等によって取得された所定の範囲の位置コードから位置情報を推定することができる。これを位置コードの復号という。【０００９】
また、特許文献１に記載された従来の方法では、二次元平面において位置情報を推定する場合に、位置コードが回転してしまうと読み取る部分数列が不確かになるという影響（以下、回転による不確定性という）を除去するため、位置情報を推定するために必要な部分数列の長さより長い部分数列を取得している。例えば、長さ６の部分数列から位置情報を推定している上記の例において、回転による不確定性を除去するために、長さ８の部分数列を取得している。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特表２００４−５３５０１１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、上記特許文献１に記載された従来の方法では、循環主数列から取得した（読み取った）部分数列に誤りが含まれていた場合、部分数列の主数列に対する場所を誤って認識し、最終的に位置コードの復号すなわち位置情報の推定を誤ってしまうという課題を有していた。また、上記従来の方法では、回転による不確定性を除去するために、位置情報の推定に必要な部分数列の長さよりも長い部分数列を取得する（読み取る）必要があった。【００１２】
そこで、本開示では、誤りに対する耐性の向上や回転による不確定性の除去の改善を図った、位置コードの読み取り装置及び読み取り方法について説明を行う。
【課題を解決するための手段】
【００１３】
本開示の位置コードを読み取る装置は、位置コードを、基数ｂ及び長さＫの主数列を循環させかつ所定長の固有部分数列をＫ通り含んだ循環主数列をそれぞれ所定量に従ってシフトさせて一次元方向に複数配置した構成とし、複数の循環主数列の少なくとも隣接する２つから「Ｋ＋Ｋ＊（ｂ−１）＊Ｎ≦ｂＮ（ｂ、Ｋ、Ｎは、２以上の整数）」を満足する長さＮの部分数列をそれぞれ読み取る読み取り部、読み取られた長さＮの部分数列の各々について、循環主数列中における場所を判定する判定部、及び判定された場所に基づいて、位置コードの読み取り位置に付与されている位置情報を取得する取得部を備えている。
【発明の効果】
【００１４】
本開示の位置コードの読み取り装置及び読み取り方法によれば、読み取った部分数列に含まれる誤りに対する耐性の向上や回転による不確定性の除去を期待できる。
【図面の簡単な説明】
【００１５】
【図１Ａ】図１Ａは、本実施形態におけるＸ方向に配置した位置コードの例を模式的に示した図である。
【図１Ｂ】図１Ｂは、本実施形態におけるＹ方向に配置した位置コードの例を模式的に示した図である。
【図２】図２は、本実施形態における位置コードをグラフィカルなマーク像を用いて配置させた例を示す図である。
【図３】図３は、ｘ−ｙ平面に形成されたマーク像の一例を示した図である。
【図４】図４は、マーク像を光学的に読み取る状況を模式的に示した図である。
【図５】図５は、図４のマーク像をｘ−ｙ平面に沿った方向に回転した例を示した図である。
【図６】図６は、マーク像が回転していない正規位置における位置コードの判定を説明する図である。
【図７】図７は、図６のマーク像が正規位置から時計周りに９０度回転している位置における位置コードの判定を説明する図である。
【図８】図８は、図６のマーク像が正規位置から時計周りに１８０度回転している位置における位置コードの判定を説明する図である。
【図９】図９は、図６のマーク像が正規位置から時計周りに２７０度回転している位置における位置コードの判定を説明する図である。
【図１０】図１０は、本実施形態における位置コードを読み取る装置の概略構成を例示する図である。
【発明を実施するための形態】
【００１６】
＜本発明の基礎となった知見＞
特許文献１に開示された従来の方法では、循環主数列から読み取った部分数列に誤りが含まれていた場合、部分数列の主数列に対する場所を誤って認識して最終的に位置コードの復号すなわち位置情報の推定を誤ってしまうという問題を有していた。また、従来の方法では、回転による不確定性を除去するために、位置情報の推定に必要な部分数列の長さよりも長い部分数列を読み取る必要があるという問題を有していた。
【００１７】
＜本発明者らが着目した手法＞
そこで、本発明者らは、部分数列の識別不良や回転による不確定性等が原因で、読み取った部分数列に誤りが含まれていたとしても、読み取った部分数列から正しい部分数列を効果的に取得することができる手法を新たに創案した。
この新たな創案に基づいた本発明の様々な態様は、次の通りである。
【００１８】
＜発明の各態様の概要＞
発明に基づいた本開示の一態様による位置コードを読み取る装置は、例えば光学的又は電子的に座標位置を識別する電子ペン等の装置に組み込まれる。本開示の一態様による読み取る装置は、位置コードを、基数ｂ及び長さＫの主数列を循環させかつ所定長の固有部分数列をＫ通り含んだ循環主数列をそれぞれ所定量に従ってシフトさせて一次元方向に複数配置した構成とし、複数の循環主数列の少なくとも隣接する２つから「Ｋ＋Ｋ＊（ｂ−１）＊Ｎ≦ｂＮ（ｂ、Ｋ、Ｎは、２以上の整数）」を満足する長さＮの部分数列をそれぞれ読み取る読み取り部、読み取られた長さＮの部分数列の各々について、循環主数列中における場所を判定する判定部、及び判定された場所に基づいて、位置コードの読み取り位置に付与されている位置情報を取得する取得部を備えている。例えば、図１０を参照。
【００１９】
この一態様によれば、読み取った部分数列に含まれる誤りに対する耐性の向上や回転による不確定性の除去を期待できる。
【００２０】
他の一態様としては、例えば、判定部が、読み取られた長さＮの部分数列の各々についてＫ通りの固有部分数列の中から読み取られた長さＮの部分数列とのハミング距離が最も小さい固有部分数列を特定して循環主数列中における場所を判定することができる。また、取得部が、判定された場所について隣接する循環主数列間の場所の差分を一次数列として求め、一次数列を混合基数で表したときの各桁の数値を複数の二次数列として求め、複数の二次数列からそれぞれ取得した長さＬ（Ｌは２以上の整数、例えばＬ＝Ｎ−１）の部分数列の各々について二次数列中における場所を判定し、この場所に基づいて位置コードの読み取り位置に付与されている位置情報を取得することができる。
【００２１】
この他の一態様によれば、読み取った部分数列に含まれる誤りに対する耐性の向上を効果的に実現することができる。
【００２２】
他の一態様としては、例えば、判定部が、読み取られた長さＮの部分数列の各々について、循環主数列との最小ハミング距離と循環主数列の極性を反転させかつ並びを逆順にした補助数列との最小ハミング距離とを算出し、補助数列との最小ハミング距離が循環主数列との最小ハミング距離よりも小さい場合に読み取られた長さＮの部分数列に対して回転除去処理を施したり、循環主数列との最小ハミング距離を算出して合計し、補助数列との最小ハミング距離を算出して合計し、補助数列との最小ハミング距離の合計値が循環主数列との最小ハミング距離の合計値よりも小さい場合に、読み取られた長さＮの部分数列に対して回転除去処理を施したり、することができる。例えば、判定部は、算出された最小ハミング距離又はその合計値に基づいて、９０度単位で位置コードに生じている回転の影響を補正することができる。
【００２３】
この一態様によれば、回転による不確定性の除去を効果的に実現することができる。
【００２４】
さらに、本開示の他の一態様としては、上述した位置コードを読み取り可能に形成した製造物、位置コードを読み取る方法や生成する方法、これらの方法を実行するプログラムがコンピュータ読み取り可能に記録された媒体等、も考えられる。
【００２５】
＜発明の各態様の詳細な説明＞
［位置コードの生成に関する説明］
位置コードは、１以上の次元における位置情報を符号化するために用いられる。本実施形態では、一般性を損なわない範囲で、まず一次元（例えばｘ方向）について考察する。
上述したように、本実施形態で使用する循環主数列は、予め定めた基数及び長さの主数列をその末端と始端と複数連結させた構成であり、所定長さの異なる複数の部分数列によって主数列に対する場所が特定できるという性質を有する。さらに、上述の異なる複数の部分数列のそれぞれは、部分数列内の１つの項が異なった数列になっても複数の部分数列のいずれにも一致しないという性質を有する。
【００２６】
ここで、主数列の基数をｂ、主数列の長さ（循環主数列の循環長さ）をＫ、循環主数列中の部分数列の長さをＮと規定する。循環主数列中における互いに異なる部分数列の数は、主数列の長さに一致するためＫ通り存在する。基数ｂかつ長さＮの部分数列において、部分数列中の１つの項が異なる数列は、（ｂ−１）＊Ｎ通り存在する。一方、基数ｂかつ長さＮの部分数列は、ｂＮ 通り存在する。前述したように、互いに異なるＫ通りの部分数列とＫ通りの部分数列内の１つの項が異なった数列とが互いに異なる性質を有するための必要条件は、下記式［１］となる。
Ｋ＋Ｋ＊（ｂ−１）＊Ｎ≦ｂＮ   …  ［１］
この式［１］の条件によって、部分数列中の１つの項の誤りを許容して、循環主数列に対する部分数列の場所を一意に決定することができる。
【００２７】
以下、本実施形態において、主数列の基数ｂ＝２、主数列の長さＫ＝７、部分数列の長さＮ＝６である場合を例に説明する。この場合、式［１］の左辺はＫ＋Ｋ＊（ｂ−１）＊Ｎ＝７＋７＊１＊６＝４９であり、式［１］の右辺はｂＮ ＝２６ ＝６４であるため、上記式［１］の必要条件を満たしている。
一方、特許文献１で開示されている実施例は、主数列の基数ｂ＝２、主数列の長さＫ＝６３、部分数列の長さＮ＝６であるため、式［１］の左辺はＫ＋Ｋ＊（ｂ−１）＊Ｎ＝６３＋６３＊１＊６＝４４１であり、式［１］の右辺はｂＮ ＝２６ ＝６４であるため、上記式［１］の必要条件を満たしていない。
【００２８】
本実施形態において、基数ｂ＝２かつ長さＫ＝７の主数列Ｍを、例えば次の数列と仮定する。
Ｍ＝「０，０，１，０，１，１，１」
このとき、主数列Ｍを循環させた循環主数列において、長さＮ＝６の互いに異なる７通りの部分数列と主数列に対する場所とは、以下の関係を有することになる。
部分数列              主数列に対する場所
０，０，１，０，１，１    →      ０
０，１，０，１，１，１    →      １
１，０，１，１，１，０    →      ２
０，１，１，１，０，０    →      ３
１，１，１，０，０，１    →      ４
１，１，０，０，１，０    →      ５
１，０，０，１，０，１    →      ６
【００２９】
位置コードは、面内や空間内での位置に従って決定される循環移動量をそれぞれ与えた複数の循環主数列を配置することによって、位置情報を符号化したものである。具体的には、循環移動量に従って各々シフトした複数の循環主数列は、位置情報を符号化したい次元（例えば、ｘ−ｙ平面におけるｘ方向）に並んで配置され、各循環主数列の数列は該符号化したい次元と直交する次元（例えば、ｘ−ｙ平面におけるｙ方向）に延びることとなる。
【００３０】
上述の複数の循環主数列あるいはその一部は、実際にはそれらの値が明示的に印刷や表示がなされないかもしれないが、それらの値はグラフィカルに印刷や表示がなされてもよい。それらの数列を表現する手段は様々であり、限定されるべきではない。
【００３１】
図１Ａは、ｘ−ｙ平面においてｘ方向の位置コードを符号化した例を示している。図１Ａでは、ｘ方向と直交するｙ方向（ｘ方向の位置コードに関しては「ｘ’方向」と定義する）に延びた複数の循環主数列（図１Ａの例では７つの数列ｘ〜ｘ＋６）が、ｘ方向に並んで配置されている様子を図示している。図１Ａにおいて、各循環主数列における破線で囲った箇所は長さＮ＝６の部分数列Ｓ（Ｘ）をそれぞれ示しており、その部分数列Ｓ（Ｘ）が示す主数列に対する場所をｐ（Ｘ）と表している。図１Ａに示す７つの循環主数列ｘ〜ｘ＋６の各先頭にある部分数列Ｓ（ｘ）〜Ｓ（ｘ＋６）の主数列に対する場所ｐ（ｘ）〜ｐ（ｘ＋６）は、上述した関係に基づいてそれぞれ０，１，３，６，０，６，１になる。
【００３２】
ここで、隣接する場所ｐ（Ｘ）間の差分数ｄ（Ｘ）を、下記式［２］で表すものとする。なお、「ｍｏｄ  Ｋ」は、Ｋを法とする演算を表す。主数列の長さＫは７である。
ｄ（ｘ）＝｛ｐ（ｘ＋１）−ｐ（ｘ）｝ｍｏｄ  Ｋ  …  ［２］
上記式［２］に従って図１Ａの例による差分数ｄ（ｘ）〜ｄ（ｘ＋５）の値を求めると、それぞれ１，２，３，１，６，２となる。この差分数ｄ（Ｘ）の並びからなる数列を一次数列と呼び、この一次数列内の長さが５の差分数列（例えば、差分数ｄ（ｘ）〜ｄ（ｘ＋４））は、一次数列の部分数列を与える。複数の循環主数列から選択される部分数列が図１Ａに示した先頭以外の部分であった場合、場所ｐ（ｘ）〜ｐ（ｘ＋６）の値は異なる値になるものの、場所ｐ（ｘ）〜ｐ（ｘ＋６）には一様な値がＫを法として加算されるため、結局のところ差分数ｄ（ｘ）〜ｄ（ｘ＋５）の値を求めれば上述と同じ１，２，３，１，６，２を得ることとなる。
【００３３】
一次数列は基数がＫの数列であり、長さ５の差分数列は最大でＫ５の順列が存在する。例えばＫ＝７の場合、長さ５の差分数列は最大で７５＝１６８０７の順列が存在する。よって、一次数列の部分数列として長さ５の差分数列が一意に決定できれば、最大で長さが１６８０７の一次数列を設計可能であり、一次数列によって０〜１６８０６の範囲でｘ方向の位置を表現可能である。しかしながら、取得された長さ５の差分数列から一次数列中の場所を演算により求めることは困難であり、一般的には長さ５の差分数列から一次数列中の場所に変換するテーブルを使用する。このため、長い一次数列を使用する場合、一次数列の長さに比例した大きな変換テーブルが必要になるという問題がある。
【００３４】
この問題を解決するために、一次数列より長さが短い複数の二次数列を用いることが考えられる。より短い長さの二次数列は、その部分数列から一次数列中の場所へ変換するためのテーブルを大幅に縮小できる。複数の二次数列の組み合わせによって、一次数列が表現可能な位置の最大の範囲に近い範囲を表現可能である。
【００３５】
この複数の二次数列は、以下のように決定され得る。まず、差分数ｄ（Ｘ）は、少なくとも２つ以上の異なる数に因数分解できる範囲に限定される。前述の主数列の長さがＫ＝７である例においては、差分数ｄ（Ｘ）の数は６に限定され、２＊３として因数分解される。部分数列と位置との関係を保持する変換テーブルを縮小するという目的においては、因数の最大値を可能な限り小さく選択すると好適である。次に、二次数列の数は、差分数を因数分解した要素の数とする。この例において、二次数列の数は２である。さらに、二次数列は差分数を因数分解して得られた要素をそれぞれの基数として構成される。
【００３６】
同じ長さが５の部分数列が二次数列における特有の場所を表すならば、二次数列の最大の長さはそれぞれ２５＝３２及び３５＝２４３である。複数の二次数列の長さは、互いに素になる（１以外の約数を持たない）ように、前述の最大の長さ以下の範囲で選択される。このように長さが選択された各二次数列から得られる部分数列の組み合わせは、全ての二次数列の長さの積の範囲において特有であることを意味する。
【００３７】
本実施の形態において、２つの二次数列Ａ１及びＡ２を仮定する。二次数列Ａ１は基数が２で長さが３１の数列であり、二次数列Ａ２は基数が３で長さが２４１の数列である。二次数列Ａ１及びＡ２を以下に示す。この場合、２つの二次数列によって表現可能な範囲は３１＊２４１＝７４７１となる。
Ａ１＝０，０，０，０，０，１，０，０，１，１，０，０，０，１，１，１，１，０，０，１，０，１，０，１，１，０，１，１，１，０，１
Ａ２＝０，０，０，０，０，１，０，２，０，０，０，０，２，０，０，２，０，１，０，０，０，１，１，２，０，０，０，１，２，０，０，２，１，０，０，０，２，１，１，２，０，１，０，１，０，０，１，２，１，０，０，１，０，０，２，２，０，０，０，２，２，１，０，２，０，１，１，０，０，１，１，１，０，１，０，１，１，０，１，２，０，１，１，１，１，０，０，２，０，２，０，１，２，０，２，２，０，１，０，２，１，０，１，２，１，１，０，１，１，１，２，２，０，０，１，０，１，２，２，２，０，０，２，２，２，０，１，２，１，２，０，２，０，０，１，２，２，０，１，１，２，１，０，２，１，１，０，２，０，２，１，２，０，０，１，１，０，２，１，２，１，０，１，０，２，２，０，２，１，０，２，２，１，１，１，２，０，２，１，１，１，０，２，２，２，２，０，２，０，２，２，１，２，１，１，１，１，２，１，２，１，２，２，２，１，０，０，２，１，２，２，１，０，１，１，２，２，１，１，２，１，１，２，２，２，２，１，２，０，１，２，２，１，２，２，０，２，２，２，１，１
【００３８】
例えば、２つの二次数列Ａ１及びＡ２の場所Ｘにおける項をそれぞれａ１（Ｘ）及びａ２（Ｘ）とする。また、差分数ｄ（Ｘ）と二次数列の項ａ１（Ｘ）及びａ２（Ｘ）との関係を、ｄ（Ｘ）＝ａ２（Ｘ）＊２＋ａ１（Ｘ）＋１とする。図１Ａにおいて、第１の二次数列ａ１（ｘ）〜ａ１（ｘ＋５）として０，１，０，０，１，１が、第２の二次数列ａ２（ｘ）〜ａ２（ｘ＋５）として０，０，１，０，２，０が例示されている。
【００３９】
図１Ａにおいて、第１の二次数列の長さが５の部分数列ａ１（ｘ）〜ａ１（ｘ＋４）、すなわち数列０，１，０，０，１は二次数列Ａ１における先頭からの場所「４」に見出される。また、第２の二次数列の長さが５の部分数列ａ２（ｘ）〜ａ２（ｘ＋４）、すなわち数列０，０，１，０，２は二次数列Ａ２における先頭からの場所「３」に見出される。
【００４０】
ここまで一次元（例えばｘ方向）に対して説明した位置コードの符号化の手法は、二次元（例えばｘ−ｙ方向）に対しても同様の原理によって実行され得る。図１Ｂは、ｘ−ｙ平面においてｙ方向の位置コードを符号化した例を示している。図１Ｂでは、ｙ方向と直交するｘ方向（ｙ方向の位置コードに関しては「ｙ’方向」と定義している）に延びた複数の循環主数列（図１Ｂの例では７つの数列ｙ〜ｙ＋６）が、ｙ方向に並んで配置されている様子を図示している。二次元におけるｙ方向の位置コードの符号化に用いられる主数列、一次数列、二次数列は、一次元（ｘ方向）の位置コードの符号化に用いられたものと異なるものを用いてもよいが、本実施の形態の例においては、同じものが用いられるものとする。
【００４１】
次に、二次元平面における位置コードの符号化について考察する。二次元平面としてここではｘ−ｙ平面を取り扱う。ｘ方向の位置コードとｙ方向の位置コードが重ね合わされた場合、ｘ−ｙ平面の各座標位置において、ｘ方向の位置コードの１ビットとｙ方向の位置コードの１ビットとが存在する。そのため、各座標位置において（０，０）、（０，１）、（１，０）、及び（１，１）の４通りの２ビットの組を利用する。これら４通りの２ビットの組は、例えば、それぞれ図２の（ａ）〜（ｄ）に示したようにグラフィカルに符号化され得る。図２の（ａ）〜（ｄ）において、マーク２２は、座標格子２１を基準線として、基準線に対する位置でｘ方向の位置コードの１ビットとｙ方向の位置コードの１ビットとの組を表している。座標格子２１は、明示的には印刷あるいは表示される必要はない。図３は、ｘ−ｙ平面の一部における、位置コードに基づいて生成された複数のマーク２２によるパターンであるマーク像を概略的に例示したものである。もちろん、図２の（ａ）〜（ｄ）とは異なるタイプのグラフィカルな符号化がなされてもよい。
【００４２】
位置コードをグラフィカルに符号化されたマーク像は、例えば読み取り装置に設けられた光学的な入力部において光学的に読み取られる。光学的な入力部としては、例えばＣＣＤ（Ｃｈａｒｇｅ  Ｃｏｕｐｌｅｄ  Ｄｅｖｉｃｅ）やＣＭＯＳ（Ｃｏｍｐｌｅｍｅｎｔａｒｙ  Ｍｅｔａｌ  Ｏｘｉｄｅ  Ｓｅｍｉｃｏｎ）等の素子が考えられるが、マーク像を光学的に読み取り可能であればどのような素子で構成されていてもよい。なお、本実施形態ではグラフィカルな位置コードを生成し、当該位置コードを光学的に読み取る構成を例に挙げて説明したが、本開示の位置コードはこれに限定されるものではない。位置コードは、循環主数列の基数ｂに応じた数の状態を提示し、この状態を読み取り装置において読み取り可能なものであれば何でもよい。例えば、位置コードは、電気的に提示され、電気的に読み取られてもよい。また、位置コードは、化学的又は音響的に提示され、それぞれに応じた入力部に読み取られてもよい。
【００４３】
［位置コードの復号に関する説明］
以下では、前述のｘ−ｙ平面を表す位置コードを例に、該位置コードの復号方法について説明する。なお、以下で説明する復号方法は、読み取り装置に設けられた取得部において実施されてもよいし、読み取り装置と有線又は無線通信により接続された外部の装置において実施されてもよい。また、以下で説明する復号方法の一部が読み取り装置によって実施され、それ以外の一部が外部の装置において実施されてもよい。
【００４４】
本実施形態における復号方法では、前述の位置コードを用いることで、少なくとも縦横共にマーク６つ分となる「６＊６の範囲」のマーク像を読み取って位置情報を復号することができる。
【００４５】
［マーク像の回転の除去］
図４の（ａ）は、６＊６の範囲のマーク像を光学的に読み取る状況を模式的に示した図である。図４の（ａ）において、破線の格子は座標格子を表している。座標格子は明示的には表示されないかもしれない。位置コードを表すマーク像は、図示されていないが、この座標格子に沿って印刷されている（例えば図３を参照）。図４の（ａ）は、マーク像を光学的に読み取る際に、ｘ−ｙ平面内において回転して読み取られている状況を表している。読み取ったマーク像がｘ−ｙ平面内でどのように回転されていても６＊６の範囲のマーク像を読み取るためには、少なくとも６＊６のマーク像を含む円の範囲（図４の（ａ）に示した円の範囲）の画像を取得すればよい。もちろん、それ以上の範囲の画像を取得してもよく、円形ではなく例えば矩形の範囲の画像を取得してもよい。好ましくは、例えば６＊６の範囲のマーク像を含む円内の画像を取得する場合、図４の（ｂ）に示すように、６＊６の範囲のマークと共に範囲外のマークも含んだマーク像を読み取ることができている可能性も考慮すべきである。
【００４６】
以下に、読み取られたマーク像の回転を除去する方法について説明する。まず、図５に示すように、取得した画像をｘ−ｙ座標に沿った方向に回転する。しかしながら、この時点では画像の９０度単位の回転による不確定性が残る。そこで、画像の９０度単位の回転による不確定性の除去について説明する。
【００４７】
図６〜図９は、マーク像に含まれるマークの位置コードの判定について説明する図である。図６は、マーク像が回転していない正規位置の状態で読み取られた場合を、図７は、マーク像が正規位置から時計周りに９０度回転した状態で読み取られた場合を、図８は、マーク像が正規位置から時計周りに１８０度回転した状態で読み取られた場合を、図９は、マーク像が正規位置から時計周りに２７０度回転した状態で読み取られた場合を、それぞれ説明する図である。
【００４８】
図６〜図９の各々において、位置コードｍｘは、ｘ方向の位置コードであり、位置コードｍｙは、ｙ方向の位置コードである。読み取り状態は、位置コードｍｘと位置コードｍｙとのビット値の組に応じてグラフィカルに符号化されたマークを、各々の角度で回転させて読み取った時の状態を表している。破線は、座標格子を表している。ｘ’矢印は、位置コードｍｘの循環主数列が並ぶ正しいｘ’方向を示し、ｙ’矢印は、位置コードｍｙの循環主数列が並ぶ正しいｙ’方向を示している。ｘ”矢印は、位置コードｍｘの循環主数列が並んでいると判定される方向を示し、ｙ”矢印は、位置コードｍｙの循環主数列が並んでいると判定される方向を示している。判定位置コードｍ’ｘは、ｘ”矢印方向に基づいて判定されたｘ方向の位置コードであり、判定位置コードｍ’ｙは、ｙ”矢印方向に基づいて判定されたｙ方向の位置コードである。
【００４９】
図６に示すマーク像が無回転で読み取られた場合では、読み取ったマーク像のグラフィカルな位置が正規位置と一致する。よって、判定位置コードｍ’ｘ及びｍ’ｙは、位置コードｍｘ及びｍｙと同じビット値となる。また、読み取ったマーク像について位置コードの循環主数列が並んでいると判定されるｘ”方向及びｙ”方向は、ｘ’方向及びｙ’方向と同じになる。
【００５０】
図７に示すマーク像が正規位置から時計周りに９０度回転した状態で読み取られた場合では、読み取ったマーク像のグラフィカルな位置が正規位置（破線丸印）と異なる。よって、このように異なったグラフィカルな位置で位置コードを判定した結果、判定位置コードｍ’ｘには位置コードｍｙのビット値が表れ、判定位置コードｍ’ｙには位置コードｍｘが反転したビット値が表れる。加えて、この判定位置コードｍ’ｙの循環主数列が並んでいると判定されたｙ”方向は、位置コードｍｘの循環主数列が並んでいるｘ’方向と１８０度反対であるため、判定位置コードｍ’ｙは、位置コードｍｘのビット値（極性）が反転してかつ逆順で並んだ循環主数列となる。
【００５１】
図８に示すマーク像が正規位置から時計周りに１８０度回転した状態で読み取られた場合では、読み取ったマーク像のグラフィカルな位置が正規位置（破線丸印）と真反対となる。よって、このように異なったグラフィカルな位置で位置コードを判定した結果、判定位置コードｍ’ｘには位置コードｍｘが反転したビット値が表れ、判定位置コードｍ’ｙには位置コードｍｙが反転したビット値が表れる。加えて、判定位置コードｍ’ｘの循環主数列が並んでいると判定されたｘ”方向は、位置コードｍｘの循環主数列が並んでいるｘ’方向と１８０度反対であるため、判定位置コードｍ’ｘは、位置コードｍｘのビット値（極性）が反転してかつ逆順で並んだ循環主数列となる。また、判定位置コードｍ’ｙの循環主数列が並んでいると判定されたｙ”方向は、位置コードｍｙの循環主数列が並んでいるｙ’方向と１８０度反対であるため、判定位置コードｍ’ｙは、位置コードｍｙのビット値（極性）が反転してかつ逆順で並んだ循環主数列となる。
【００５２】
図９に示すマーク像が正規位置から時計周りに２７０度回転した状態で読み取られた場合では、読み取ったマーク像のグラフィカルな位置が正規位置（破線丸印）と異なる。よって、このように異なったグラフィカルな位置で位置コードを判定した結果、判定位置コードｍ’ｘには位置コードｍｙが反転したビット値が表れ、判定位置コードｍ’ｙには位置コードｍｘのビット値が表れる。加えて、この判定位置コードｍ’ｘの循環主数列が並んでいると判定されたｘ”方向は、位置コードｍｙの循環主数列が並んでいるｙ’方向と１８０度反対であるため、判定位置コードｍ’ｘは、位置コードｍｙのビット値（極性）が反転してかつ逆順で並んだ循環主数列となる。
【００５３】
以上のように、読み取られたマーク像が９０度単位の回転を起こしている場合（図７、図８、図９）、ｘ’方向又はｙ’方向のいずれか一方又は両方に、ビット値（極性）が反転されかつ並びが逆順になった位置コードの循環主数列が検出される。よって、この位置コードの循環主数列のビット値（極性）及び並び順を適切に処理すれば、マーク像の回転による不確定性を除去することができる。以下に、循環主数列の極性及び並び順を判定する方法について詳しく説明する。
【００５４】
表１は、長さが６の全ての数列と、上述した循環主数列Ｍ（０，０，１，０，１，１，１）中の長さが６の互いに異なる７通りの部分数列との最小ハミング距離（表１では最小距離と表示）、及びビット値（極性）が反転され並びが逆順になった循環主数列Ｍである補助数列Ｍ＊（０、０、０、１、０、１、１）中の長さが６の互いに異なる７通りの部分数列との最小ハミング距離を、それぞれ示す。例えば、数列０１０１１１は、循環主数列Ｍの部分数列であるため最小ハミング距離は「０」であるが、補助数列Ｍ＊には含まれず、最も距離が近い部分数列でも１ビットが異なっており、最小ハミング距離は「１」である。読み取られたマーク像から判定された長さ６の数列を表１に基づいて検査し、最小ハミング距離を判定することで、マーク像から判定された数列が、循環主数列Ｍに基づくものか補助数列Ｍ＊に基づくものかを識別することができる。ここで、マーク像から判定された数列は誤りを含んでいてもよい。表２は同様に長さが７の数列の場合、表３ａ及び３ｂは同様に長さが８の数列の場合における、最小ハミング距離を求めた表である。例示はしていないが、長さが８より長い数列についても同様に考えられる。
【００５５】
【表１】
2013179595.tif 000003
【００５６】
【表２】
2013179595.tif 000004
【００５７】
【表３ａ】
2013179595.tif 000005
【００５８】
【表３ｂ】
2013179595.tif 000006
【００５９】
本実施形態では、図４で説明したように６＊６の範囲のマークと共に範囲外のマークを含んだマーク像を取得しているため、マーク像から判定して得られる循環主数列の部分数列に対応する数列は、ｘ方向及びｙ方向のそれぞれについて、長さが６以上の数列が６個以上ある。従って、読み取られた複数の数列から総合的に判断することで、誤りに対する耐性の向上が期待できる。例えば、読み取られた複数の数列について表１乃至表３に基づいて最小ハミング距離を求め、求められた複数の最小ハミング距離の総和を求めて、循環主数列Ｍに基づくものか補助数列Ｍ＊に基づくものかを、最小ハミング距離の和に基づいて判定することで、マーク像の回転角の判定において誤りに対する耐性を向上させることができる。
【００６０】
以上のようにして、マーク像の９０度単位の回転を検出して、その回転を除去することができる。
【００６１】
［循環主数列の誤り訂正と位置の推定］
次に、循環主数列Ｍに対応する部分数列の誤り訂正について説明する。ｘ方向の処理とｙ方向の処理は同じであるため、ここではｘ方向の処理についてのみ説明する。座標（ｘ，ｙ）においてマーク像から得られたｘ方向の位置コードｍｘを、ｍｘ（ｘ，ｙ）とする。位置コードｍｘについて、座標（ｘ，ｙ）を起点にｙ方向に配置された連続する長さが６の数列をＳ（ｘ）とする。数列Ｓ（ｘ）は、ｍｘ（ｘ，ｙ），ｍｘ（ｘ，ｙ＋１），…，ｍｘ（ｘ，ｙ＋５）からなる数列である。数列Ｓ（ｘ）は、循環主数列Ｍの部分数列に対応する。表４は、得られた数列Ｓ（ｘ）に対して、循環主数列Ｍに含まれる長さが６の互いに異なる７通りの部分数列のうち最もハミング距離が近い部分数列、そのハミング距離及び循環主数列Ｍ中の該部分数列の場所ｐ（ｘ）を示している。また、表４において空欄となっている数列Ｓ（ｘ）は、循環主数列Ｍ中に含まれる互いに異なる７通りの部分数列からのハミング距離が等しくなる部分数列が複数存在し、最もハミング距離が近い部分数列を特定できない数列である。表４からもわかるように、循環主数列Ｍに含まれる互いに異なる７通りの部分数列、及びそれらの部分数列から１つの項だけ誤った数列は、それぞれ重複なく分離されている。すなわち、循環主数列Ｍに含まれる互いに異なる７通りの部分数列は、１つの項の誤りを許容して識別される。この性質を有するための必要条件は、上述した式［１］の「Ｋ＋Ｋ＊（ｂ−１）＊Ｎ≦ｂＮ」となる。なお、表４には、循環主数列Ｍに含まれる互いに異なる７通りの部分数列及び該部分数列とのハミング距離が記載されているが、これらは必須ではなく、位置コードの復号においては少なくとも循環主数列Ｍ中の該部分数列の場所ｐ（ｘ）がわかればよい。
【００６２】
【表４】
2013179595.tif 000007
【００６３】
マーク像から循環主数列Ｍに対応する長さが７の数列を取得した場合の処理について考える。位置コードｍｘについて、座標（ｘ，ｙ）を起点にｙ方向に配置された連続する長さが７の数列をＳ（ｘ）とする。数列Ｓ（ｘ）は、ｍｘ（ｘ，ｙ），ｍｘ（ｘ，ｙ＋１），…，ｍｘ（ｘ，ｙ＋６）からなる数列である。数列Ｓ（ｘ）は、循環主数列Ｍの部分数列に対応する。表５ａ及び５ｂは、得られた数列Ｓ（ｘ）に対して、循環主数列Ｍに含まれる長さが７の互いに異なる７通りの部分数列のうち最もハミング距離が近い部分数列、そのハミング距離及び循環主数列Ｍ中の該部分数列の場所ｐ（ｘ）を示している。なお、表５ａ及び５ｂにおいて空欄となっている数列Ｓ（ｘ）については、表４と同様の考えである。
【００６４】
【表５ａ】
2013179595.tif 000008
【００６５】
【表５ｂ】
2013179595.tif 000009
【００６６】
マーク像から循環主数列Ｍに対応する長さが８以上の数列を取得した場合も上記と同様に処理すればよい。例えば、長さが８の数列に対しては、上記と同様に表６ａ〜６ｄを用いて循環主数列中の部分数列の場所ｐ（ｘ）を特定する。表６からもわかるように、ハミング距離が１より大きい誤りが発生しても、元の部分数列を特定できる場合がある。
【００６７】
【表６ａ】
2013179595.tif 000010
【００６８】
【表６ｂ】
2013179595.tif 000011
【００６９】
【表６ｃ】
2013179595.tif 000012
【００７０】
【表６ｄ】
2013179595.tif 000013
【００７１】
以上のように、マーク像から取得した数列Ｓ（ｘ）〜Ｓ（ｘ＋５）について、循環主数列Ｍ中の場所ｐ（ｘ）〜ｐ（ｘ＋５）を求めることができる。
【００７２】
［差分数及び二次数列］
次に、場所ｐ（ｘ）〜ｐ（ｘ＋５）から差分数ｄ（ｘ）〜ｄ（ｘ＋４）を、ｘ〜（ｘ＋４）の範囲で、上記式［２］の「ｄ（ｘ）＝（ｐ（ｘ＋１）−ｐ（ｘ））ｍｏｄ  Ｋ」に従って求める。ここでは、Ｋ＝７の場合を例に説明している。
【００７３】
差分数ｄ（ｘ）は、「ｄｃ（１，ｘ）＝（ｄ（ｘ）−１）ｍｏｄ  ２」に従って第１の差分数ｄｃ（１，ｘ）に、「ｄｃ（２，ｘ）＝（ｄ（ｘ）−１）ｄｉｖ  ２」に従って第２の差分数ｄｃ（２，ｘ）に、それぞれ変換される。ここで、ｍｏｄ  ２は２で割った余り、ｄｉｖ  ２は２で割った商を求める演算である。すなわち、ｄ（ｘ）＝１＋ｄｃ（１，ｘ）＋２＊ｄｃ（２，ｘ）が成り立つ。一般に、ｍ個の差分数ｄｃ（１，ｘ）〜ｄｃ（ｍ，ｘ）に変換する場合、下記式［３］となるように変換する。ここで、ｂｍは第ｍの二次数列の基数、Ｃは定数を表す。
ｄ（ｘ）＝Ｃ＋ｄｃ（１，ｘ）＋ｂ-１＊ｄｃ（２，ｘ）＋…
＋ｂ１＊ｂ２＊…＊ｂｍ−１＊ｄｃ（ｍ，ｘ）  …  ［３］
【００７４】
差分数ｄ（ｘ）は一次数列の項に対応し、第１の差分数ｄｃ（１，ｘ）は第１の二次数列Ａ１の項ａ１（ｘ）に対応し、第２の差分数ｄｃ（２，ｘ）は第２の二次数列Ａ２の項ａ２（ｘ）に対応する。
【００７５】
次に、第１の差分数ｄｃ（１，ｘ）〜ｄｃ（１，ｘ＋４）からなる長さが５の数列が第１の二次数列Ａ１の中で検出される場所ｐ１、及び第２の差分数ｄｃ（２，ｘ）〜ｄｃ（２，ｘ＋４）からなる長さが５の数列が第２の二次数列Ａ２の中で検出される場所ｐ２を求める。一方、差分数ｄ（ｘ）〜ｄ（ｘ＋４）からなる長さが５の数列が一次数列の中で検出される場所をＰとするとき、場所Ｐと場所ｐ１及び場所ｐ２との間には、次のような関係がある。
Ｐ≡ｐ１  ｍｏｄ  ｌ１
Ｐ≡ｐ２  ｍｏｄ  ｌ２
すなわち、場所Ｐはｌ１を法として場所ｐ１と合同であり、また場所Ｐはｌ２を法として場所ｐ２と合同である。ここで、ｌ１は第１の二次数列の長さ、ｌ２は第２の二次数列の長さである。
【００７６】
場所ｐ１及び場所ｐ２から場所Ｐを求める方法は、中国の剰余定理として知られている。Ｌ＝ｐｒｏｄ（ｉ＝１，ｍ）ｌｉとし、ｑｉ＊（Ｌ／ｌｉ）≡１（ｍｏｄ  ｌｉ）とするとき、場所Ｐは次式［４］によって求められる。
Ｐ＝（ｓｕｍ（ｉ＝１，ｍ）（（ｌ／ｌｉ）＊ｐｉ＊ｑｉ））ｍｏｄ  Ｌ  …［４］
【００７７】
本実施形態では、ｍ＝２、ｌ１＝３１、ｌ２＝２４１であり、Ｌ＝７４７１、ｑ１＝２２、ｑ２＝７０となることから、場所Ｐは場所ｐ１と場所ｐ２から次式で求めることができる。
Ｐ＝（５３０２＊ｐ１＋２１７０＊ｐ２）ｍｏｄ  ７４７１
【００７８】
以上のように、本実施形態によれば、読み取り等によって取得されたマーク像から数列を複数抽出し、抽出した複数の数列が循環主数列の中に部分数列として検出される場所をそれぞれ求める。この求めた循環主数列中の複数の場所のうち隣り合う場所の差分数を求め、この差分数をさらに複数の差分数に分解する。そして、分解したそれぞれの差分数からなる数列が二次数列の中に部分数列として検出される場所を求め、複数の二次数列中の場所から中国の剰余定理に基づいて該マーク像が配置された位置を求めることができる。また、本実施形態の手法を二次元以上の各次元に適用することで、二次元以上の座標位置を表すことができる。
【００７９】
本開示は、特に、Ｎ＊Ｎ範囲のマーク像により二次元平面の座標位置を表す場合において、循環主数列の長さＫを、条件Ｋ＋Ｋ＊（ｂ−１）＊Ｎ≦ｂＮ を満たすように設計することで、誤りに対する耐性に優れた位置コード、位置コードの読み取り装置、位置コードの読み取り方法、位置コードを生成する方法、及び読み取った位置コードを復号する方法を提供する。また、本開示は、マーク像の回転による不確定性の除去機能及びその方法、循環主数列への誤り訂正機能及びその方法を提供する。
【００８０】
また、本開示は、誤りに対する耐性に優れた位置コードを生成する方法あるいは読み取った位置コードを復号する方法を実行するためのコンピュータプログラム、該位置コードが用いられる製品を提供することができる。
【産業上の利用可能性】
【００８１】
本開示の位置コードの読み取り装置及び読み取り方法は、光学的あるいは電子的に座標位置を識別する電子ペン等として利用可能であり特に、誤りに対する耐性を向上させたい場合等に有用である。
【符号の説明】
【００８２】
２１  座標格子
２２  マーク
【図１Ａ】
2013179595.tif 000014
【図１Ｂ】
2013179595.tif 000015
【図２】
2013179595.tif 000016
【図３】
2013179595.tif 000017
【図４】
2013179595.tif 000018
【図５】
2013179595.tif 000019
【図６】
2013179595.tif 000020
【図７】
2013179595.tif 000021
【図８】
2013179595.tif 000022
【図９】
2013179595.tif 000023
【図１０】
2013179595.tif 000024
【国際調査報告】
2013179595.tif 000025
2013179595.tif 000026
2013179595.tif 000027
2013179595.tif 000028