JP6029024B2 - 位置コードの読み取り装置及び読み取り方法 - Google Patents
位置コードの読み取り装置及び読み取り方法 Download PDFInfo
- Publication number
- JP6029024B2 JP6029024B2 JP2013556694A JP2013556694A JP6029024B2 JP 6029024 B2 JP6029024 B2 JP 6029024B2 JP 2013556694 A JP2013556694 A JP 2013556694A JP 2013556694 A JP2013556694 A JP 2013556694A JP 6029024 B2 JP6029024 B2 JP 6029024B2
- Authority
- JP
- Japan
- Prior art keywords
- number sequence
- sequence
- length
- sequences
- partial
- 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
- 238000000034 method Methods 0.000 title claims description 43
- 125000004122 cyclic group Chemical group 0.000 claims description 109
- 230000004087 circulation Effects 0.000 claims description 10
- 238000010586 diagram Methods 0.000 description 13
- 238000007796 conventional method Methods 0.000 description 7
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 241000545442 Radix Species 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/041—Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/0304—Detection arrangements using opto-electronic means
- G06F3/0317—Detection arrangements using opto-electronic means in co-operation with a patterned surface, e.g. absolute position or relative movement detection for an optical mouse or pen positioned with respect to a coded surface
- G06F3/0321—Detection arrangements using opto-electronic means in co-operation with a patterned surface, e.g. absolute position or relative movement detection for an optical mouse or pen positioned with respect to a coded surface by optically sensing the absolute position with respect to a regularly patterned surface forming a passive digitiser, e.g. pen optically detecting position indicative tags printed on a paper sheet
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/041—Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
- G06F3/042—Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means by opto-electronic means
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Editing Of Facsimile Originals (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Description
本開示は、位置コードの読み取り装置及び読み取り方法に関し、さらには位置コードを生成する方法、読み取った位置コードを復号する方法、これらの方法を実行するためのコンピュータプログラム、並びに位置コードが用いられる製品等に関する。
面上に設けられた位置コードを利用して面内の位置を特定する技術は、すでに考案されている。この技術としては、例えば、特許文献1に記載された位置コードの生成方法及び復号方法が知られている。以下に、この特許文献1に記載された従来の方法を簡単に説明する。
特許文献1に記載された従来の方法は、位置コードを生成するために、主数列、一次数列、及び二次数列の3種類の数列を用いている。また、特許文献1は、グラフィカルな位置コードを生成して紙面に印刷し、それを電子ペンに備えられた入力部によって光学的に読み取り、読み取った位置コードに基づいて座標位置を判別する方法について記載している。
特許文献1において、主数列としては、長さが63の2進数による数列が例示されている。主数列の末端に同一の主数列の始端を連結して生成された数列を、循環主数列と呼ぶ。特許文献1における循環主数列は、循環主数列中の長さが6の任意の部分数列について、該部分数列の主数列に対する場所を明確に決定することができる数列である。ここで、部分数列の主数列に対する場所とは、主数列の先頭に対する部分数列の先頭の所定の方向へのずれを主数列の長さで除算した場合の剰余に該当する。すなわち、主数列の長さが63のである循環主数列中から抽出された長さが6の任意の部分数列について、該抽出された部分数列の場所を0〜62の範囲で特定することができる。
2つ以上の主数列は、それぞれ指定された循環移動量に応じた所定の方向への移動(シフト)を施され、順次隣り合って循環主数列として配置される。隣接する2つの循環主数列間の循環移動量の差を、差分数と呼ぶ。この差分数は、隣接して配置された2つの循環主数列からずれが等しい部分数列をそれぞれ抽出し、抽出した2つの部分数列について主数列に対する場所をそれぞれ特定し、特定した2つの場所の差分を求めることによって得られる。なお、上記説明におけるずれが等しい部分数列とは、各循環主数列の先頭から各部分数列の先頭までのずれ量(ずれ幅)が等しい部分数列を意味している。なお、ずれが等しい部分数列は、上記の定義に限られるものではなく、循環主数列間の差分数を適切に特定できるものであればよい。例えば、二次元平面に配置された位置コードの二次元平面内での位置関係により対応付けされる部分数列や、三次元空間内に配置された位置コードの三次元空間中の位置関係により対応付けされる部分数列であってもよい。特許文献1では、差分数としては5〜58の値を用いることが例示されている。差分数を項とする数列は一次数列をなす。
差分数は、混合基数に基づいて複数の桁に分解される。各桁の値を項とする数列は、二次数列と定義されている。特許文献1では、混合基数として下位の基数から順に3、3、2、3が例示されている。すなわち、1つの一次数列から導出される二次数列の数は4である。4つの二次数列は、それぞれ循環主数列によって構成されるが、各循環主数列を構成する基となる主数列の長さは、互いに素(1以外の公約数を持たない)となるように設定されている。特許文献1では、4つの二次数列において循環主数列を構成する基となる主数列の長さとして、それぞれ236、233、31、241が例示されている。
4つの二次数列は、いずれも二次数列から長さが5の部分数列を取得することで、二次数列中の場所を特定することができる。この二次数列中の場所が所望の位置情報を示している。
以上説明した、複数の循環主数列の並びを位置コードといい、位置情報を符号化することによって位置コードを生成する。また、読み取り等によって取得された所定の範囲の位置コードから位置情報を推定することができる。これを位置コードの復号という。
また、特許文献1に記載された従来の方法では、二次元平面において位置情報を推定する場合に、位置コードが回転してしまうと読み取る部分数列が不確かになるという影響(以下、回転による不確定性という)を除去するため、位置情報を推定するために必要な部分数列の長さより長い部分数列を取得している。例えば、長さ6の部分数列から位置情報を推定している上記の例において、回転による不確定性を除去するために、長さ8の部分数列を取得している。
しかしながら、上記特許文献1に記載された従来の方法では、循環主数列から取得した(読み取った)部分数列に誤りが含まれていた場合、部分数列の主数列に対する場所を誤って認識し、最終的に位置コードの復号すなわち位置情報の推定を誤ってしまうという課題を有していた。また、上記従来の方法では、回転による不確定性を除去するために、位置情報の推定に必要な部分数列の長さよりも長い部分数列を取得する(読み取る)必要があった。
そこで、本開示では、誤りに対する耐性の向上や回転による不確定性の除去の改善を図った、位置コードの読み取り装置及び読み取り方法について説明を行う。
本開示の位置コードを読み取る装置は、位置コードを、基数b及び長さKの主数列を循環させかつ所定長の固有部分数列をK通り含んだ循環主数列をそれぞれ所定量に従ってシフトさせて一次元方向に複数配置した構成とし、複数の循環主数列の少なくとも隣接する2つから「K+K*(b−1)*N≦bN(b、K、Nは、2以上の整数)」を満足する長さNの部分数列をそれぞれ読み取る読み取り部、読み取られた長さNの部分数列の各々について、循環主数列中における場所を判定する判定部、及び判定された場所に基づいて、位置コードの読み取り位置に付与されている位置情報を取得する取得部を備えている。
本開示の位置コードの読み取り装置及び読み取り方法によれば、読み取った部分数列に含まれる誤りに対する耐性の向上や回転による不確定性の除去を期待できる。
<本発明の基礎となった知見>
特許文献1に開示された従来の方法では、循環主数列から読み取った部分数列に誤りが含まれていた場合、部分数列の主数列に対する場所を誤って認識して最終的に位置コードの復号すなわち位置情報の推定を誤ってしまうという問題を有していた。また、従来の方法では、回転による不確定性を除去するために、位置情報の推定に必要な部分数列の長さよりも長い部分数列を読み取る必要があるという問題を有していた。
特許文献1に開示された従来の方法では、循環主数列から読み取った部分数列に誤りが含まれていた場合、部分数列の主数列に対する場所を誤って認識して最終的に位置コードの復号すなわち位置情報の推定を誤ってしまうという問題を有していた。また、従来の方法では、回転による不確定性を除去するために、位置情報の推定に必要な部分数列の長さよりも長い部分数列を読み取る必要があるという問題を有していた。
<本発明者らが着目した手法>
そこで、本発明者らは、部分数列の識別不良や回転による不確定性等が原因で、読み取った部分数列に誤りが含まれていたとしても、読み取った部分数列から正しい部分数列を効果的に取得することができる手法を新たに創案した。
この新たな創案に基づいた本発明の様々な態様は、次の通りである。
そこで、本発明者らは、部分数列の識別不良や回転による不確定性等が原因で、読み取った部分数列に誤りが含まれていたとしても、読み取った部分数列から正しい部分数列を効果的に取得することができる手法を新たに創案した。
この新たな創案に基づいた本発明の様々な態様は、次の通りである。
<発明の各態様の概要>
発明に基づいた本開示の一態様による位置コードを読み取る装置は、例えば光学的又は電子的に座標位置を識別する電子ペン等の装置に組み込まれる。本開示の一態様による読み取る装置は、位置コードを、基数b及び長さKの主数列を循環させかつ所定長の固有部分数列をK通り含んだ循環主数列をそれぞれ所定量に従ってシフトさせて一次元方向に複数配置した構成とし、複数の循環主数列の少なくとも隣接する2つから「K+K*(b−1)*N≦bN(b、K、Nは、2以上の整数)」を満足する長さNの部分数列をそれぞれ読み取る読み取り部、読み取られた長さNの部分数列の各々について、循環主数列中における場所を判定する判定部、及び判定された場所に基づいて、位置コードの読み取り位置に付与されている位置情報を取得する取得部を備えている。例えば、図10を参照。
発明に基づいた本開示の一態様による位置コードを読み取る装置は、例えば光学的又は電子的に座標位置を識別する電子ペン等の装置に組み込まれる。本開示の一態様による読み取る装置は、位置コードを、基数b及び長さKの主数列を循環させかつ所定長の固有部分数列をK通り含んだ循環主数列をそれぞれ所定量に従ってシフトさせて一次元方向に複数配置した構成とし、複数の循環主数列の少なくとも隣接する2つから「K+K*(b−1)*N≦bN(b、K、Nは、2以上の整数)」を満足する長さNの部分数列をそれぞれ読み取る読み取り部、読み取られた長さNの部分数列の各々について、循環主数列中における場所を判定する判定部、及び判定された場所に基づいて、位置コードの読み取り位置に付与されている位置情報を取得する取得部を備えている。例えば、図10を参照。
この一態様によれば、読み取った部分数列に含まれる誤りに対する耐性の向上や回転による不確定性の除去を期待できる。
他の一態様としては、例えば、判定部が、読み取られた長さNの部分数列の各々についてK通りの固有部分数列の中から読み取られた長さNの部分数列とのハミング距離が最も小さい固有部分数列を特定して循環主数列中における場所を判定することができる。また、取得部が、判定された場所について隣接する循環主数列間の場所の差分を一次数列として求め、一次数列を混合基数で表したときの各桁の数値を複数の二次数列として求め、複数の二次数列からそれぞれ取得した長さL(Lは2以上の整数、例えばL=N−1)の部分数列の各々について二次数列中における場所を判定し、この場所に基づいて位置コードの読み取り位置に付与されている位置情報を取得することができる。
この他の一態様によれば、読み取った部分数列に含まれる誤りに対する耐性の向上を効果的に実現することができる。
他の一態様としては、例えば、判定部が、読み取られた長さNの部分数列の各々について、循環主数列との最小ハミング距離と循環主数列の極性を反転させかつ並びを逆順にした補助数列との最小ハミング距離とを算出し、補助数列との最小ハミング距離が循環主数列との最小ハミング距離よりも小さい場合に読み取られた長さNの部分数列に対して回転除去処理を施したり、循環主数列との最小ハミング距離を算出して合計し、補助数列との最小ハミング距離を算出して合計し、補助数列との最小ハミング距離の合計値が循環主数列との最小ハミング距離の合計値よりも小さい場合に、読み取られた長さNの部分数列に対して回転除去処理を施したり、することができる。例えば、判定部は、算出された最小ハミング距離又はその合計値に基づいて、90度単位で位置コードに生じている回転の影響を補正することができる。
この一態様によれば、回転による不確定性の除去を効果的に実現することができる。
さらに、本開示の他の一態様としては、上述した位置コードを読み取り可能に形成した製造物、位置コードを読み取る方法や生成する方法、これらの方法を実行するプログラムがコンピュータ読み取り可能に記録された媒体等、も考えられる。
<発明の各態様の詳細な説明>
[位置コードの生成に関する説明]
位置コードは、1以上の次元における位置情報を符号化するために用いられる。本実施形態では、一般性を損なわない範囲で、まず一次元(例えばx方向)について考察する。
上述したように、本実施形態で使用する循環主数列は、予め定めた基数及び長さの主数列をその末端と始端と複数連結させた構成であり、所定長さの異なる複数の部分数列によって主数列に対する場所が特定できるという性質を有する。さらに、上述の異なる複数の部分数列のそれぞれは、部分数列内の1つの項が異なった数列になっても複数の部分数列のいずれにも一致しないという性質を有する。
[位置コードの生成に関する説明]
位置コードは、1以上の次元における位置情報を符号化するために用いられる。本実施形態では、一般性を損なわない範囲で、まず一次元(例えばx方向)について考察する。
上述したように、本実施形態で使用する循環主数列は、予め定めた基数及び長さの主数列をその末端と始端と複数連結させた構成であり、所定長さの異なる複数の部分数列によって主数列に対する場所が特定できるという性質を有する。さらに、上述の異なる複数の部分数列のそれぞれは、部分数列内の1つの項が異なった数列になっても複数の部分数列のいずれにも一致しないという性質を有する。
ここで、主数列の基数をb、主数列の長さ(循環主数列の循環長さ)をK、循環主数列中の部分数列の長さをNと規定する。循環主数列中における互いに異なる部分数列の数は、主数列の長さに一致するためK通り存在する。基数bかつ長さNの部分数列において、部分数列中の1つの項が異なる数列は、(b−1)*N通り存在する。一方、基数bかつ長さNの部分数列は、bN 通り存在する。前述したように、互いに異なるK通りの部分数列とK通りの部分数列内の1つの項が異なった数列とが互いに異なる性質を有するための必要条件は、下記式[1]となる。
K+K*(b−1)*N≦bN … [1]
この式[1]の条件によって、部分数列中の1つの項の誤りを許容して、循環主数列に対する部分数列の場所を一意に決定することができる。
K+K*(b−1)*N≦bN … [1]
この式[1]の条件によって、部分数列中の1つの項の誤りを許容して、循環主数列に対する部分数列の場所を一意に決定することができる。
以下、本実施形態において、主数列の基数b=2、主数列の長さK=7、部分数列の長さN=6である場合を例に説明する。この場合、式[1]の左辺はK+K*(b−1)*N=7+7*1*6=49であり、式[1]の右辺はbN =26 =64であるため、上記式[1]の必要条件を満たしている。
一方、特許文献1で開示されている実施例は、主数列の基数b=2、主数列の長さK=63、部分数列の長さN=6であるため、式[1]の左辺はK+K*(b−1)*N=63+63*1*6=441であり、式[1]の右辺はbN =26 =64であるため、上記式[1]の必要条件を満たしていない。
一方、特許文献1で開示されている実施例は、主数列の基数b=2、主数列の長さK=63、部分数列の長さN=6であるため、式[1]の左辺はK+K*(b−1)*N=63+63*1*6=441であり、式[1]の右辺はbN =26 =64であるため、上記式[1]の必要条件を満たしていない。
本実施形態において、基数b=2かつ長さK=7の主数列Mを、例えば次の数列と仮定する。
M=「0,0,1,0,1,1,1」
このとき、主数列Mを循環させた循環主数列において、長さN=6の互いに異なる7通りの部分数列と主数列に対する場所とは、以下の関係を有することになる。
部分数列 主数列に対する場所
0,0,1,0,1,1 → 0
0,1,0,1,1,1 → 1
1,0,1,1,1,0 → 2
0,1,1,1,0,0 → 3
1,1,1,0,0,1 → 4
1,1,0,0,1,0 → 5
1,0,0,1,0,1 → 6
M=「0,0,1,0,1,1,1」
このとき、主数列Mを循環させた循環主数列において、長さN=6の互いに異なる7通りの部分数列と主数列に対する場所とは、以下の関係を有することになる。
部分数列 主数列に対する場所
0,0,1,0,1,1 → 0
0,1,0,1,1,1 → 1
1,0,1,1,1,0 → 2
0,1,1,1,0,0 → 3
1,1,1,0,0,1 → 4
1,1,0,0,1,0 → 5
1,0,0,1,0,1 → 6
位置コードは、面内や空間内での位置に従って決定される循環移動量をそれぞれ与えた複数の循環主数列を配置することによって、位置情報を符号化したものである。具体的には、循環移動量に従って各々シフトした複数の循環主数列は、位置情報を符号化したい次元(例えば、x−y平面におけるx方向)に並んで配置され、各循環主数列の数列は該符号化したい次元と直交する次元(例えば、x−y平面におけるy方向)に延びることとなる。
上述の複数の循環主数列あるいはその一部は、実際にはそれらの値が明示的に印刷や表示がなされないかもしれないが、それらの値はグラフィカルに印刷や表示がなされてもよい。それらの数列を表現する手段は様々であり、限定されるべきではない。
図1Aは、x−y平面においてx方向の位置コードを符号化した例を示している。図1Aでは、x方向と直交するy方向(x方向の位置コードに関しては「x’方向」と定義する)に延びた複数の循環主数列(図1Aの例では7つの数列x〜x+6)が、x方向に並んで配置されている様子を図示している。図1Aにおいて、各循環主数列における破線で囲った箇所は長さN=6の部分数列S(X)をそれぞれ示しており、その部分数列S(X)が示す主数列に対する場所をp(X)と表している。図1Aに示す7つの循環主数列x〜x+6の各先頭にある部分数列S(x)〜S(x+6)の主数列に対する場所p(x)〜p(x+6)は、上述した関係に基づいてそれぞれ0,1,3,6,0,6,1になる。
ここで、隣接する場所p(X)間の差分数d(X)を、下記式[2]で表すものとする。なお、「mod K」は、Kを法とする演算を表す。主数列の長さKは7である。
d(x)={p(x+1)−p(x)}mod K … [2]
上記式[2]に従って図1Aの例による差分数d(x)〜d(x+5)の値を求めると、それぞれ1,2,3,1,6,2となる。この差分数d(X)の並びからなる数列を一次数列と呼び、この一次数列内の長さが5の差分数列(例えば、差分数d(x)〜d(x+4))は、一次数列の部分数列を与える。複数の循環主数列から選択される部分数列が図1Aに示した先頭以外の部分であった場合、場所p(x)〜p(x+6)の値は異なる値になるものの、場所p(x)〜p(x+6)には一様な値がKを法として加算されるため、結局のところ差分数d(x)〜d(x+5)の値を求めれば上述と同じ1,2,3,1,6,2を得ることとなる。
d(x)={p(x+1)−p(x)}mod K … [2]
上記式[2]に従って図1Aの例による差分数d(x)〜d(x+5)の値を求めると、それぞれ1,2,3,1,6,2となる。この差分数d(X)の並びからなる数列を一次数列と呼び、この一次数列内の長さが5の差分数列(例えば、差分数d(x)〜d(x+4))は、一次数列の部分数列を与える。複数の循環主数列から選択される部分数列が図1Aに示した先頭以外の部分であった場合、場所p(x)〜p(x+6)の値は異なる値になるものの、場所p(x)〜p(x+6)には一様な値がKを法として加算されるため、結局のところ差分数d(x)〜d(x+5)の値を求めれば上述と同じ1,2,3,1,6,2を得ることとなる。
一次数列は基数がKの数列であり、長さ5の差分数列は最大でK5の順列が存在する。例えばK=7の場合、長さ5の差分数列は最大で75=16807の順列が存在する。よって、一次数列の部分数列として長さ5の差分数列が一意に決定できれば、最大で長さが16807の一次数列を設計可能であり、一次数列によって0〜16806の範囲でx方向の位置を表現可能である。しかしながら、取得された長さ5の差分数列から一次数列中の場所を演算により求めることは困難であり、一般的には長さ5の差分数列から一次数列中の場所に変換するテーブルを使用する。このため、長い一次数列を使用する場合、一次数列の長さに比例した大きな変換テーブルが必要になるという問題がある。
この問題を解決するために、一次数列より長さが短い複数の二次数列を用いることが考えられる。より短い長さの二次数列は、その部分数列から一次数列中の場所へ変換するためのテーブルを大幅に縮小できる。複数の二次数列の組み合わせによって、一次数列が表現可能な位置の最大の範囲に近い範囲を表現可能である。
この複数の二次数列は、以下のように決定され得る。まず、差分数d(X)は、少なくとも2つ以上の異なる数に因数分解できる範囲に限定される。前述の主数列の長さがK=7である例においては、差分数d(X)の数は6に限定され、2*3として因数分解される。部分数列と位置との関係を保持する変換テーブルを縮小するという目的においては、因数の最大値を可能な限り小さく選択すると好適である。次に、二次数列の数は、差分数を因数分解した要素の数とする。この例において、二次数列の数は2である。さらに、二次数列は差分数を因数分解して得られた要素をそれぞれの基数として構成される。
同じ長さが5の部分数列が二次数列における特有の場所を表すならば、二次数列の最大の長さはそれぞれ25=32及び35=243である。複数の二次数列の長さは、互いに素になる(1以外の約数を持たない)ように、前述の最大の長さ以下の範囲で選択される。このように長さが選択された各二次数列から得られる部分数列の組み合わせは、全ての二次数列の長さの積の範囲において特有であることを意味する。
本実施の形態において、2つの二次数列A1及びA2を仮定する。二次数列A1は基数が2で長さが31の数列であり、二次数列A2は基数が3で長さが241の数列である。二次数列A1及びA2を以下に示す。この場合、2つの二次数列によって表現可能な範囲は31*241=7471となる。
A1=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
A2=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,1,2,2,2,2,1,2,0,1,2,2,1,2,2,0,2,2,2,1,1
A1=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
A2=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,1,2,2,2,2,1,2,0,1,2,2,1,2,2,0,2,2,2,1,1
例えば、2つの二次数列A1及びA2の場所Xにおける項をそれぞれa1(X)及びa2(X)とする。また、差分数d(X)と二次数列の項a1(X)及びa2(X)との関係を、d(X)=a2(X)*2+a1(X)+1とする。図1Aにおいて、第1の二次数列a1(x)〜a1(x+5)として0,1,0,0,1,1が、第2の二次数列a2(x)〜a2(x+5)として0,0,1,0,2,0が例示されている。
図1Aにおいて、第1の二次数列の長さが5の部分数列a1(x)〜a1(x+4)、すなわち数列0,1,0,0,1は二次数列A1における先頭からの場所「4」に見出される。また、第2の二次数列の長さが5の部分数列a2(x)〜a2(x+4)、すなわち数列0,0,1,0,2は二次数列A2における先頭からの場所「3」に見出される。
ここまで一次元(例えばx方向)に対して説明した位置コードの符号化の手法は、二次元(例えばx−y方向)に対しても同様の原理によって実行され得る。図1Bは、x−y平面においてy方向の位置コードを符号化した例を示している。図1Bでは、y方向と直交するx方向(y方向の位置コードに関しては「y’方向」と定義している)に延びた複数の循環主数列(図1Bの例では7つの数列y〜y+6)が、y方向に並んで配置されている様子を図示している。二次元におけるy方向の位置コードの符号化に用いられる主数列、一次数列、二次数列は、一次元(x方向)の位置コードの符号化に用いられたものと異なるものを用いてもよいが、本実施の形態の例においては、同じものが用いられるものとする。
次に、二次元平面における位置コードの符号化について考察する。二次元平面としてここではx−y平面を取り扱う。x方向の位置コードとy方向の位置コードが重ね合わされた場合、x−y平面の各座標位置において、x方向の位置コードの1ビットとy方向の位置コードの1ビットとが存在する。そのため、各座標位置において(0,0)、(0,1)、(1,0)、及び(1,1)の4通りの2ビットの組を利用する。これら4通りの2ビットの組は、例えば、それぞれ図2の(a)〜(d)に示したようにグラフィカルに符号化され得る。図2の(a)〜(d)において、マーク22は、座標格子21を基準線として、基準線に対する位置でx方向の位置コードの1ビットとy方向の位置コードの1ビットとの組を表している。座標格子21は、明示的には印刷あるいは表示される必要はない。図3は、x−y平面の一部における、位置コードに基づいて生成された複数のマーク22によるパターンであるマーク像を概略的に例示したものである。もちろん、図2の(a)〜(d)とは異なるタイプのグラフィカルな符号化がなされてもよい。
位置コードをグラフィカルに符号化されたマーク像は、例えば読み取り装置に設けられた光学的な入力部において光学的に読み取られる。光学的な入力部としては、例えばCCD(Charge Coupled Device)やCMOS(Complementary Metal Oxide Semicon)等の素子が考えられるが、マーク像を光学的に読み取り可能であればどのような素子で構成されていてもよい。なお、本実施形態ではグラフィカルな位置コードを生成し、当該位置コードを光学的に読み取る構成を例に挙げて説明したが、本開示の位置コードはこれに限定されるものではない。位置コードは、循環主数列の基数bに応じた数の状態を提示し、この状態を読み取り装置において読み取り可能なものであれば何でもよい。例えば、位置コードは、電気的に提示され、電気的に読み取られてもよい。また、位置コードは、化学的又は音響的に提示され、それぞれに応じた入力部に読み取られてもよい。
[位置コードの復号に関する説明]
以下では、前述のx−y平面を表す位置コードを例に、該位置コードの復号方法について説明する。なお、以下で説明する復号方法は、読み取り装置に設けられた取得部において実施されてもよいし、読み取り装置と有線又は無線通信により接続された外部の装置において実施されてもよい。また、以下で説明する復号方法の一部が読み取り装置によって実施され、それ以外の一部が外部の装置において実施されてもよい。
以下では、前述のx−y平面を表す位置コードを例に、該位置コードの復号方法について説明する。なお、以下で説明する復号方法は、読み取り装置に設けられた取得部において実施されてもよいし、読み取り装置と有線又は無線通信により接続された外部の装置において実施されてもよい。また、以下で説明する復号方法の一部が読み取り装置によって実施され、それ以外の一部が外部の装置において実施されてもよい。
本実施形態における復号方法では、前述の位置コードを用いることで、少なくとも縦横共にマーク6つ分となる「6*6の範囲」のマーク像を読み取って位置情報を復号することができる。
[マーク像の回転の除去]
図4の(a)は、6*6の範囲のマーク像を光学的に読み取る状況を模式的に示した図である。図4の(a)において、破線の格子は座標格子を表している。座標格子は明示的には表示されないかもしれない。位置コードを表すマーク像は、図示されていないが、この座標格子に沿って印刷されている(例えば図3を参照)。図4の(a)は、マーク像を光学的に読み取る際に、x−y平面内において回転して読み取られている状況を表している。読み取ったマーク像がx−y平面内でどのように回転されていても6*6の範囲のマーク像を読み取るためには、少なくとも6*6のマーク像を含む円の範囲(図4の(a)に示した円の範囲)の画像を取得すればよい。もちろん、それ以上の範囲の画像を取得してもよく、円形ではなく例えば矩形の範囲の画像を取得してもよい。好ましくは、例えば6*6の範囲のマーク像を含む円内の画像を取得する場合、図4の(b)に示すように、6*6の範囲のマークと共に範囲外のマークも含んだマーク像を読み取ることができている可能性も考慮すべきである。
図4の(a)は、6*6の範囲のマーク像を光学的に読み取る状況を模式的に示した図である。図4の(a)において、破線の格子は座標格子を表している。座標格子は明示的には表示されないかもしれない。位置コードを表すマーク像は、図示されていないが、この座標格子に沿って印刷されている(例えば図3を参照)。図4の(a)は、マーク像を光学的に読み取る際に、x−y平面内において回転して読み取られている状況を表している。読み取ったマーク像がx−y平面内でどのように回転されていても6*6の範囲のマーク像を読み取るためには、少なくとも6*6のマーク像を含む円の範囲(図4の(a)に示した円の範囲)の画像を取得すればよい。もちろん、それ以上の範囲の画像を取得してもよく、円形ではなく例えば矩形の範囲の画像を取得してもよい。好ましくは、例えば6*6の範囲のマーク像を含む円内の画像を取得する場合、図4の(b)に示すように、6*6の範囲のマークと共に範囲外のマークも含んだマーク像を読み取ることができている可能性も考慮すべきである。
以下に、読み取られたマーク像の回転を除去する方法について説明する。まず、図5に示すように、取得した画像をx−y座標に沿った方向に回転する。しかしながら、この時点では画像の90度単位の回転による不確定性が残る。そこで、画像の90度単位の回転による不確定性の除去について説明する。
図6〜図9は、マーク像に含まれるマークの位置コードの判定について説明する図である。図6は、マーク像が回転していない正規位置の状態で読み取られた場合を、図7は、マーク像が正規位置から時計周りに90度回転した状態で読み取られた場合を、図8は、マーク像が正規位置から時計周りに180度回転した状態で読み取られた場合を、図9は、マーク像が正規位置から時計周りに270度回転した状態で読み取られた場合を、それぞれ説明する図である。
図6〜図9の各々において、位置コードmxは、x方向の位置コードであり、位置コードmyは、y方向の位置コードである。読み取り状態は、位置コードmxと位置コードmyとのビット値の組に応じてグラフィカルに符号化されたマークを、各々の角度で回転させて読み取った時の状態を表している。破線は、座標格子を表している。x’矢印は、位置コードmxの循環主数列が並ぶ正しいx’方向を示し、y’矢印は、位置コードmyの循環主数列が並ぶ正しいy’方向を示している。x”矢印は、位置コードmxの循環主数列が並んでいると判定される方向を示し、y”矢印は、位置コードmyの循環主数列が並んでいると判定される方向を示している。判定位置コードm’xは、x”矢印方向に基づいて判定されたx方向の位置コードであり、判定位置コードm’yは、y”矢印方向に基づいて判定されたy方向の位置コードである。
図6に示すマーク像が無回転で読み取られた場合では、読み取ったマーク像のグラフィカルな位置が正規位置と一致する。よって、判定位置コードm’x及びm’yは、位置コードmx及びmyと同じビット値となる。また、読み取ったマーク像について位置コードの循環主数列が並んでいると判定されるx”方向及びy”方向は、x’方向及びy’方向と同じになる。
図7に示すマーク像が正規位置から時計周りに90度回転した状態で読み取られた場合では、読み取ったマーク像のグラフィカルな位置が正規位置(破線丸印)と異なる。よって、このように異なったグラフィカルな位置で位置コードを判定した結果、判定位置コードm’xには位置コードmyのビット値が表れ、判定位置コードm’yには位置コードmxが反転したビット値が表れる。加えて、この判定位置コードm’yの循環主数列が並んでいると判定されたy”方向は、位置コードmxの循環主数列が並んでいるx’方向と180度反対であるため、判定位置コードm’yは、位置コードmxのビット値(極性)が反転してかつ逆順で並んだ循環主数列となる。
図8に示すマーク像が正規位置から時計周りに180度回転した状態で読み取られた場合では、読み取ったマーク像のグラフィカルな位置が正規位置(破線丸印)と真反対となる。よって、このように異なったグラフィカルな位置で位置コードを判定した結果、判定位置コードm’xには位置コードmxが反転したビット値が表れ、判定位置コードm’yには位置コードmyが反転したビット値が表れる。加えて、判定位置コードm’xの循環主数列が並んでいると判定されたx”方向は、位置コードmxの循環主数列が並んでいるx’方向と180度反対であるため、判定位置コードm’xは、位置コードmxのビット値(極性)が反転してかつ逆順で並んだ循環主数列となる。また、判定位置コードm’yの循環主数列が並んでいると判定されたy”方向は、位置コードmyの循環主数列が並んでいるy’方向と180度反対であるため、判定位置コードm’yは、位置コードmyのビット値(極性)が反転してかつ逆順で並んだ循環主数列となる。
図9に示すマーク像が正規位置から時計周りに270度回転した状態で読み取られた場合では、読み取ったマーク像のグラフィカルな位置が正規位置(破線丸印)と異なる。よって、このように異なったグラフィカルな位置で位置コードを判定した結果、判定位置コードm’xには位置コードmyが反転したビット値が表れ、判定位置コードm’yには位置コードmxのビット値が表れる。加えて、この判定位置コードm’xの循環主数列が並んでいると判定されたx”方向は、位置コードmyの循環主数列が並んでいるy’方向と180度反対であるため、判定位置コードm’xは、位置コードmyのビット値(極性)が反転してかつ逆順で並んだ循環主数列となる。
以上のように、読み取られたマーク像が90度単位の回転を起こしている場合(図7、図8、図9)、x’方向又はy’方向のいずれか一方又は両方に、ビット値(極性)が反転されかつ並びが逆順になった位置コードの循環主数列が検出される。よって、この位置コードの循環主数列のビット値(極性)及び並び順を適切に処理すれば、マーク像の回転による不確定性を除去することができる。以下に、循環主数列の極性及び並び順を判定する方法について詳しく説明する。
表1は、長さが6の全ての数列と、上述した循環主数列M(0,0,1,0,1,1,1)中の長さが6の互いに異なる7通りの部分数列との最小ハミング距離(表1では最小距離と表示)、及びビット値(極性)が反転され並びが逆順になった循環主数列Mである補助数列M*(0、0、0、1、0、1、1)中の長さが6の互いに異なる7通りの部分数列との最小ハミング距離を、それぞれ示す。例えば、数列010111は、循環主数列Mの部分数列であるため最小ハミング距離は「0」であるが、補助数列M*には含まれず、最も距離が近い部分数列でも1ビットが異なっており、最小ハミング距離は「1」である。読み取られたマーク像から判定された長さ6の数列を表1に基づいて検査し、最小ハミング距離を判定することで、マーク像から判定された数列が、循環主数列Mに基づくものか補助数列M*に基づくものかを識別することができる。ここで、マーク像から判定された数列は誤りを含んでいてもよい。表2は同様に長さが7の数列の場合、表3a及び3bは同様に長さが8の数列の場合における、最小ハミング距離を求めた表である。例示はしていないが、長さが8より長い数列についても同様に考えられる。
本実施形態では、図4で説明したように6*6の範囲のマークと共に範囲外のマークを含んだマーク像を取得しているため、マーク像から判定して得られる循環主数列の部分数列に対応する数列は、x方向及びy方向のそれぞれについて、長さが6以上の数列が6個以上ある。従って、読み取られた複数の数列から総合的に判断することで、誤りに対する耐性の向上が期待できる。例えば、読み取られた複数の数列について表1乃至表3に基づいて最小ハミング距離を求め、求められた複数の最小ハミング距離の総和を求めて、循環主数列Mに基づくものか補助数列M*に基づくものかを、最小ハミング距離の和に基づいて判定することで、マーク像の回転角の判定において誤りに対する耐性を向上させることができる。
以上のようにして、マーク像の90度単位の回転を検出して、その回転を除去することができる。
[循環主数列の誤り訂正と位置の推定]
次に、循環主数列Mに対応する部分数列の誤り訂正について説明する。x方向の処理とy方向の処理は同じであるため、ここではx方向の処理についてのみ説明する。座標(x,y)においてマーク像から得られたx方向の位置コードmxを、mx(x,y)とする。位置コードmxについて、座標(x,y)を起点にy方向に配置された連続する長さが6の数列をS(x)とする。数列S(x)は、mx(x,y),mx(x,y+1),…,mx(x,y+5)からなる数列である。数列S(x)は、循環主数列Mの部分数列に対応する。表4は、得られた数列S(x)に対して、循環主数列Mに含まれる長さが6の互いに異なる7通りの部分数列のうち最もハミング距離が近い部分数列、そのハミング距離及び循環主数列M中の該部分数列の場所p(x)を示している。また、表4において空欄となっている数列S(x)は、循環主数列M中に含まれる互いに異なる7通りの部分数列からのハミング距離が等しくなる部分数列が複数存在し、最もハミング距離が近い部分数列を特定できない数列である。表4からもわかるように、循環主数列Mに含まれる互いに異なる7通りの部分数列、及びそれらの部分数列から1つの項だけ誤った数列は、それぞれ重複なく分離されている。すなわち、循環主数列Mに含まれる互いに異なる7通りの部分数列は、1つの項の誤りを許容して識別される。この性質を有するための必要条件は、上述した式[1]の「K+K*(b−1)*N≦bN」となる。なお、表4には、循環主数列Mに含まれる互いに異なる7通りの部分数列及び該部分数列とのハミング距離が記載されているが、これらは必須ではなく、位置コードの復号においては少なくとも循環主数列M中の該部分数列の場所p(x)がわかればよい。
次に、循環主数列Mに対応する部分数列の誤り訂正について説明する。x方向の処理とy方向の処理は同じであるため、ここではx方向の処理についてのみ説明する。座標(x,y)においてマーク像から得られたx方向の位置コードmxを、mx(x,y)とする。位置コードmxについて、座標(x,y)を起点にy方向に配置された連続する長さが6の数列をS(x)とする。数列S(x)は、mx(x,y),mx(x,y+1),…,mx(x,y+5)からなる数列である。数列S(x)は、循環主数列Mの部分数列に対応する。表4は、得られた数列S(x)に対して、循環主数列Mに含まれる長さが6の互いに異なる7通りの部分数列のうち最もハミング距離が近い部分数列、そのハミング距離及び循環主数列M中の該部分数列の場所p(x)を示している。また、表4において空欄となっている数列S(x)は、循環主数列M中に含まれる互いに異なる7通りの部分数列からのハミング距離が等しくなる部分数列が複数存在し、最もハミング距離が近い部分数列を特定できない数列である。表4からもわかるように、循環主数列Mに含まれる互いに異なる7通りの部分数列、及びそれらの部分数列から1つの項だけ誤った数列は、それぞれ重複なく分離されている。すなわち、循環主数列Mに含まれる互いに異なる7通りの部分数列は、1つの項の誤りを許容して識別される。この性質を有するための必要条件は、上述した式[1]の「K+K*(b−1)*N≦bN」となる。なお、表4には、循環主数列Mに含まれる互いに異なる7通りの部分数列及び該部分数列とのハミング距離が記載されているが、これらは必須ではなく、位置コードの復号においては少なくとも循環主数列M中の該部分数列の場所p(x)がわかればよい。
マーク像から循環主数列Mに対応する長さが7の数列を取得した場合の処理について考える。位置コードmxについて、座標(x,y)を起点にy方向に配置された連続する長さが7の数列をS(x)とする。数列S(x)は、mx(x,y),mx(x,y+1),…,mx(x,y+6)からなる数列である。数列S(x)は、循環主数列Mの部分数列に対応する。表5a及び5bは、得られた数列S(x)に対して、循環主数列Mに含まれる長さが7の互いに異なる7通りの部分数列のうち最もハミング距離が近い部分数列、そのハミング距離及び循環主数列M中の該部分数列の場所p(x)を示している。なお、表5a及び5bにおいて空欄となっている数列S(x)については、表4と同様の考えである。
マーク像から循環主数列Mに対応する長さが8以上の数列を取得した場合も上記と同様に処理すればよい。例えば、長さが8の数列に対しては、上記と同様に表6a〜6dを用いて循環主数列中の部分数列の場所p(x)を特定する。表6からもわかるように、ハミング距離が1より大きい誤りが発生しても、元の部分数列を特定できる場合がある。
以上のように、マーク像から取得した数列S(x)〜S(x+5)について、循環主数列M中の場所p(x)〜p(x+5)を求めることができる。
[差分数及び二次数列]
次に、場所p(x)〜p(x+5)から差分数d(x)〜d(x+4)を、x〜(x+4)の範囲で、上記式[2]の「d(x)=(p(x+1)−p(x))mod K」に従って求める。ここでは、K=7の場合を例に説明している。
次に、場所p(x)〜p(x+5)から差分数d(x)〜d(x+4)を、x〜(x+4)の範囲で、上記式[2]の「d(x)=(p(x+1)−p(x))mod K」に従って求める。ここでは、K=7の場合を例に説明している。
差分数d(x)は、「dc(1,x)=(d(x)−1)mod 2」に従って第1の差分数dc(1,x)に、「dc(2,x)=(d(x)−1)div 2」に従って第2の差分数dc(2,x)に、それぞれ変換される。ここで、mod 2は2で割った余り、div 2は2で割った商を求める演算である。すなわち、d(x)=1+dc(1,x)+2*dc(2,x)が成り立つ。一般に、m個の差分数dc(1,x)〜dc(m,x)に変換する場合、下記式[3]となるように変換する。ここで、bmは第mの二次数列の基数、Cは定数を表す。
d(x)=C+dc(1,x)+b-1*dc(2,x)+…
+b1*b2*…*bm−1*dc(m,x) … [3]
d(x)=C+dc(1,x)+b-1*dc(2,x)+…
+b1*b2*…*bm−1*dc(m,x) … [3]
差分数d(x)は一次数列の項に対応し、第1の差分数dc(1,x)は第1の二次数列A1の項a1(x)に対応し、第2の差分数dc(2,x)は第2の二次数列A2の項a2(x)に対応する。
次に、第1の差分数dc(1,x)〜dc(1,x+4)からなる長さが5の数列が第1の二次数列A1の中で検出される場所p1、及び第2の差分数dc(2,x)〜dc(2,x+4)からなる長さが5の数列が第2の二次数列A2の中で検出される場所p2を求める。一方、差分数d(x)〜d(x+4)からなる長さが5の数列が一次数列の中で検出される場所をPとするとき、場所Pと場所p1及び場所p2との間には、次のような関係がある。
P≡p1 mod l1
P≡p2 mod l2
すなわち、場所Pはl1を法として場所p1と合同であり、また場所Pはl2を法として場所p2と合同である。ここで、l1は第1の二次数列の長さ、l2は第2の二次数列の長さである。
P≡p1 mod l1
P≡p2 mod l2
すなわち、場所Pはl1を法として場所p1と合同であり、また場所Pはl2を法として場所p2と合同である。ここで、l1は第1の二次数列の長さ、l2は第2の二次数列の長さである。
場所p1及び場所p2から場所Pを求める方法は、中国の剰余定理として知られている。L=prod(i=1,m)liとし、qi*(L/li)≡1(mod li)とするとき、場所Pは次式[4]によって求められる。
P=(sum(i=1,m)((l/li)*pi*qi))mod L …[4]
P=(sum(i=1,m)((l/li)*pi*qi))mod L …[4]
本実施形態では、m=2、l1=31、l2=241であり、L=7471、q1=22、q2=70となることから、場所Pは場所p1と場所p2から次式で求めることができる。
P=(5302*p1+2170*p2)mod 7471
P=(5302*p1+2170*p2)mod 7471
以上のように、本実施形態によれば、読み取り等によって取得されたマーク像から数列を複数抽出し、抽出した複数の数列が循環主数列の中に部分数列として検出される場所をそれぞれ求める。この求めた循環主数列中の複数の場所のうち隣り合う場所の差分数を求め、この差分数をさらに複数の差分数に分解する。そして、分解したそれぞれの差分数からなる数列が二次数列の中に部分数列として検出される場所を求め、複数の二次数列中の場所から中国の剰余定理に基づいて該マーク像が配置された位置を求めることができる。また、本実施形態の手法を二次元以上の各次元に適用することで、二次元以上の座標位置を表すことができる。
本開示は、特に、N*N範囲のマーク像により二次元平面の座標位置を表す場合において、循環主数列の長さKを、条件K+K*(b−1)*N≦bN を満たすように設計することで、誤りに対する耐性に優れた位置コード、位置コードの読み取り装置、位置コードの読み取り方法、位置コードを生成する方法、及び読み取った位置コードを復号する方法を提供する。また、本開示は、マーク像の回転による不確定性の除去機能及びその方法、循環主数列への誤り訂正機能及びその方法を提供する。
また、本開示は、誤りに対する耐性に優れた位置コードを生成する方法あるいは読み取った位置コードを復号する方法を実行するためのコンピュータプログラム、該位置コードが用いられる製品を提供することができる。
本開示の位置コードの読み取り装置及び読み取り方法は、光学的あるいは電子的に座標位置を識別する電子ペン等として利用可能であり特に、誤りに対する耐性を向上させたい場合等に有用である。
21 座標格子
22 マーク
22 マーク
Claims (13)
- 位置コードを読み取る装置であって、
前記位置コードは、基数b及び長さKの主数列を循環させかつ所定長の固有部分数列をK通り含んだ循環主数列を、それぞれ所定量に従ってシフトさせて一次元方向に複数配置した構成からなり、
前記複数の循環主数列の少なくとも隣接する2つから、下記式を満足する長さNの部分数列をそれぞれ読み取る読み取り部、
前記読み取られた長さNの部分数列の各々について、前記循環主数列中における場所を判定する判定部、及び
前記判定された場所に基づいて、前記位置コードの読み取り位置に付与されている位置情報を取得する取得部を備える、読み取り装置。
[式] K+K*(b−1)*N≦bN (b、K、Nは、2以上の整数) - 前記判定部は、
前記読み取られた長さNの部分数列の各々について、前記K通りの固有部分数列の中から、前記読み取られた長さNの部分数列とのハミング距離が最も小さい固有部分数列を特定し、
前記特定された固有部分数列について前記循環主数列中における場所を判定する、請求項1に記載の読み取り装置。 - 前記取得部は、
前記判定された場所について、隣接する前記循環主数列間の場所の差分を一次数列として求め、
前記一次数列を混合基数で表したときの各桁の数値を、複数の二次数列として求め、
前記複数の二次数列から長さL(Lは2以上の整数)の部分数列をそれぞれ取得し、
前記取得した長さLの部分数列の各々について、前記二次数列中における場所を判定し、
前記判定された場所に基づいて、前記位置コードの読み取り位置に付与されている位置情報を取得する、請求項1に記載の読み取り装置。 - 前記長さLは、L=N−1に設定される、請求項3に記載の読み取り装置。
- 前記判定部は、
前記読み取られた長さNの部分数列の各々について、前記循環主数列との最小ハミング距離と、前記循環主数列の極性を反転させかつ並びを逆順にした補助数列との最小ハミング距離とを算出し、
前記補助数列との最小ハミング距離が前記循環主数列との最小ハミング距離よりも小さい場合に、前記読み取られた長さNの部分数列に対して回転除去処理を施す、請求項1に記載の読み取り装置。 - 前記判定部は、
前記読み取られた長さNの部分数列の各々について、前記循環主数列との最小ハミング距離を算出して合計し、前記循環主数列の極性を反転させかつ並びを逆順にした補助数列との最小ハミング距離を算出して合計し、
前記補助数列との最小ハミング距離の合計値が前記循環主数列との最小ハミング距離の合計値よりも小さい場合に、前記読み取られた長さNの部分数列に対して回転除去処理を施す、請求項1に記載の読み取り装置。 - 前記判定部は、前記算出された最小ハミング距離に基づいて、90度単位で前記位置コードに生じている回転の影響を補正する、請求項5に記載の読み取り装置。
- 前記判定部は、前記算出された最小ハミング距離の合計値に基づいて、90度単位で前記位置コードに生じている回転の影響を補正する、請求項6に記載の読み取り装置。
- 位置コードを読み取る読み取り方法であって、
前記位置コードは、基数b及び長さKの主数列を循環させかつ所定長の固有部分数列をK通り含んだ循環主数列を、それぞれ所定量に従ってシフトさせて一次元方向に複数配置させた構成からなり、
前記複数の循環主数列の少なくとも隣接する2つから、下記式の条件を満たす長さNの部分数列をそれぞれ読み取るステップ、
前記読み取られた長さNの部分数列の各々について、前記循環主数列中における場所を判定するステップ、及び
前記判定された場所に基づいて、前記位置コードの読み取り位置に付与されている位置情報を取得するステップを備える、読み取り方法。
[式] K+K*(b−1)*N≦bN (b、K、Nは、2以上の整数) - 位置コードを有する製造物であって、
基数b及び長さKの主数列を循環させかつ所定長の固有部分数列をK通り含んだ循環主数列を、それぞれ所定量に従ってシフトさせて一次元方向に複数配置させた構成からなり、下記式の条件を満たす長さNの部分数列によって位置を一意に識別できる位置情報が付与されている位置コードが、読み取り可能に形成された、製造物。
[式] K+K*(b−1)*N≦bN (b、K、Nは、2以上の整数) - 位置コードを生成する方法であって、
位置を一意に識別できる位置情報を表した複数の二次数列を生成するステップ、
前記複数の二次数列の各項を混合基数で表した一次数列を生成するステップ、
基数b及び長さKの主数列を循環させかつ所定長の固有部分数列をK通り含んだ循環主数列を生成するステップ、及び
前記循環主数列を前記一次数列に基づいて付与される所定量に従ってシフトさせて一次元方向に複数配置するするステップによって、
前記循環主数列における下記式の条件を満たす長さNの部分数列によって前記位置情報の取得が可能となる位置コードを生成する、方法。
[式] K+K*(b−1)*N≦bN (b、K、Nは、2以上の整数) - コンピュータ読み取り可能なプログラムが記録された媒体であって、
基数b及び長さKの主数列を循環させかつ所定長の固有部分数列をK通り含んだ循環主数列を、それぞれ所定量に従ってシフトさせて一次元方向に複数配置させた構成からなる位置コードに対して、
前記複数の循環主数列の少なくとも隣接する2つから、下記式の条件を満たす長さNの部分数列をそれぞれ読み取るステップ、
前記読み取られた長さNの部分数列の各々について、前記循環主数列中における場所を判定するステップ、及び
前記判定された場所に基づいて、前記位置コードの読み取り位置に付与されている位置情報を取得するステップを、コンピュータに実行させるためのプログラムが記録された、記録媒体。
[式] K+K*(b−1)*N≦bN (b、K、Nは、2以上の整数) - コンピュータ読み取り可能なプログラムが記録された媒体であって、
位置を一意に識別できる位置情報を表した複数の二次数列を生成するステップ、
前記複数の二次数列の各項を混合基数で表した一次数列を生成するステップ、
基数b及び長さKの主数列を循環させかつ所定長の固有部分数列をK通り含んだ循環主数列を生成するステップ、及び
前記循環主数列を前記一次数列に基づいて付与される所定量に従ってシフトさせて一次元方向に複数配置するステップを、コンピュータに実行させて、
前記循環主数列における下記式の条件を満たす長さNの部分数列によって前記位置情報の取得が可能となる位置コードを生成するプログラムが記録された、記録媒体。
[式] K+K*(b−1)*N≦bN (b、K、Nは、2以上の整数)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013556694A JP6029024B2 (ja) | 2012-05-31 | 2013-05-15 | 位置コードの読み取り装置及び読み取り方法 |
Applications Claiming Priority (8)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012125278 | 2012-05-31 | ||
JP2012125279 | 2012-05-31 | ||
JP2012125278 | 2012-05-31 | ||
JP2012125279 | 2012-05-31 | ||
JP2012125280 | 2012-05-31 | ||
JP2012125280 | 2012-05-31 | ||
JP2013556694A JP6029024B2 (ja) | 2012-05-31 | 2013-05-15 | 位置コードの読み取り装置及び読み取り方法 |
PCT/JP2013/003088 WO2013179595A1 (ja) | 2012-05-31 | 2013-05-15 | 位置コードの読み取り装置及び読み取り方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2013179595A1 JPWO2013179595A1 (ja) | 2016-01-18 |
JP6029024B2 true JP6029024B2 (ja) | 2016-11-24 |
Family
ID=49672824
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013556694A Expired - Fee Related JP6029024B2 (ja) | 2012-05-31 | 2013-05-15 | 位置コードの読み取り装置及び読み取り方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9703404B2 (ja) |
JP (1) | JP6029024B2 (ja) |
CN (1) | CN103748536A (ja) |
WO (1) | WO2013179595A1 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016122567A1 (en) * | 2015-01-30 | 2016-08-04 | Hewlett-Packard Development Company, L.P. | M-ary cyclic coding |
DE102016216221A1 (de) | 2016-08-29 | 2018-03-01 | Robert Bosch Gmbh | Zweidimensionale Codeanordnung, Arbeitsanordnung und Verfahren zum Betreiben der Arbeitsanordnung |
US11152958B2 (en) * | 2019-12-09 | 2021-10-19 | Western Digital Technologies, Inc. | Very low complexity SECDED codes |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
SE518962C2 (sv) | 2000-03-21 | 2002-12-10 | Anoto Ab | Produkt och metod för att koda data till ett matrisformat kodningsmönster |
US6667695B2 (en) | 2001-06-25 | 2003-12-23 | Anoto Ab | Position code |
SE519277C2 (sv) * | 2001-06-25 | 2003-02-11 | Anoto Ab | Anordning och förfarande för positionskodning och för avkodning av en positionskod |
SE0103589L (sv) * | 2001-10-29 | 2003-04-30 | Anoto Ab | Förfarande och anordning för avkodning av ett positionskodningsmönster |
US7145556B2 (en) * | 2001-10-29 | 2006-12-05 | Anoto Ab | Method and device for decoding a position-coding pattern |
SE0203853D0 (sv) * | 2002-12-23 | 2002-12-23 | Anoto Ab | Informationskod |
-
2013
- 2013-05-15 CN CN201380001822.5A patent/CN103748536A/zh active Pending
- 2013-05-15 WO PCT/JP2013/003088 patent/WO2013179595A1/ja active Application Filing
- 2013-05-15 JP JP2013556694A patent/JP6029024B2/ja not_active Expired - Fee Related
- 2013-05-15 US US14/127,787 patent/US9703404B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20140139428A1 (en) | 2014-05-22 |
JPWO2013179595A1 (ja) | 2016-01-18 |
CN103748536A (zh) | 2014-04-23 |
US9703404B2 (en) | 2017-07-11 |
WO2013179595A1 (ja) | 2013-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4556705B2 (ja) | 2次元座標同定装置、画像形成装置及び2次元座標同定方法 | |
JP6029024B2 (ja) | 位置コードの読み取り装置及び読み取り方法 | |
CN106500737B (zh) | 区域位置代码图案、区域传感器及绝对位置编码方法 | |
JP2006504360A (ja) | 向きを示す巡回位置符号 | |
US11620466B2 (en) | Multi-axis position sensing system | |
JP2014041486A5 (ja) | ||
JP5971098B2 (ja) | 情報処理装置及び情報処理プログラム | |
CN112184826A (zh) | 一种标定板和标定方法 | |
US8019181B2 (en) | Image generation apparatus, image processing apparatus, computer readable medium and computer data signal | |
JP2005507535A5 (ja) | ||
EP2044558B1 (en) | Position location using error correction | |
Garcia-Morchon et al. | The MMO problem | |
JP5609469B2 (ja) | 画像処理装置、識別装置、電子筆記具及びプログラム | |
US8657205B2 (en) | Image processing apparatus, identification apparatus, method for determining bit sequence and computer readable medium | |
Amusa et al. | Novel algorithm for decoding redundant residue number systems (RRNS) codes | |
JP4662367B2 (ja) | 情報シンボルの符号化方法及びその装置並びに情報シンボルの復号化方法及び復号化装置 | |
JP7109398B2 (ja) | 画像表示媒体、画像処理装置、画像処理方法、及びプログラム | |
JP2011166429A (ja) | 誤り訂正符号生成方法及びその装置、誤り検出/訂正方法及びその装置、画像生成方法、印刷物並びにプログラム | |
WO2021086366A1 (en) | Recovering alignment grids | |
JP4878398B2 (ja) | 情報シンボルの符号化方法及びその装置並びに情報シンボルの復号方法及び復号装置 | |
Ibrahim | Analysis Of Method-I In Encoding Large Integers: A123367 | |
JP2015039153A (ja) | 画像処理装置、画像読み取り装置およびプログラム | |
JP2010147900A (ja) | 画像生成装置、画像処理装置、プログラム及び記録媒体 | |
Seneviratne | Codes associated with circulant graphs and permutation decoding | |
JP2010141572A (ja) | データ点検出方法、データ点検出装置及びデータ点検出プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20160120 |
|
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: 20160913 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20161006 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 6029024 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |
|
LAPS | Cancellation because of no payment of annual fees |