(57)【要約】【課題】読み取った画像に歪みがある場合でも、パターン画像を構成する単位画像の同期化を可能とする。【解決手段】撮像装置により撮像された画像を走査し、単位画像を検出して位置を特定する検出部と、検出部により検出された単位画像の位置情報に基づき、同期原点から座標軸に従って順に格子線を引いていくことで同期用の格子を生成するライン同期部２３３と、ライン同期部２３３により生成された格子に基づき、画像上の所定の位置における単位画像の有無に応じてビット配列を生成するビット配列生成部２３４とを備え、ライン同期部２３３は、各格子線を、格子線に対応付けられた単位画像の位置に個別に適合させる。【選択図】図２３
2009181347.tif 000002
【特許請求の範囲】
【請求項１】
撮像装置により撮像された画像を走査し、単位画像を検出して位置を特定する検出部と、
前記検出部により検出された前記単位画像の位置情報に基づき、同期原点から座標軸に従って順に格子線を引いていくことで同期用の格子を生成するライン同期部と、
前記ライン同期部により生成された前記格子に基づき、前記画像上の所定の位置における前記単位画像の有無に応じてビット配列を生成するビット配列生成部と
を備えることを特徴とする画像処理装置。
【請求項２】
前記ライン同期部は、各格子線を、当該格子線に対応付けられた前記単位画像の位置に個別に適合させることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記ライン同期部は、各格子線の傾きを、当該格子線に対応付けられた前記単位画像の位置に応じて補正することを特徴とする請求項２記載の画像処理装置。
【請求項４】
前記ライン同期部は、各格子線の間隔を、当該格子線に対応付けられた前記単位画像の位置に応じて補正することを特徴とする請求項２に記載の画像処理装置。
【請求項５】
前記ライン同期部により用いられる格子線の傾きおよび間隔の初期値は、前記単位画像のうち最も近い位置にある２つの単位画像の組み合わせにおける当該２つの単位画像の位置関係に基づいて決定されることを特徴とする請求項１に記載の画像処理装置。
【請求項６】
前記単位画像の組み合わせにおける前記２つの単位画像がなす角度を、前記同期原点を含む一定の範囲の前記単位画像の位置関係に基づいて補正することで、前記格子線の傾きの基準となる基準角度を決定する基準角度決定部をさらに備え、
前記ライン同期部は、前記基準角度決定部により決定された基準角度を前記格子線の傾きの初期値として用いることを特徴とする請求項５に記載の画像処理装置。
【請求項７】
単位画像が形成された媒体表面を撮像する撮像部と、
前記撮像部により撮像された画像から前記単位画像を検出して位置を特定する検出部と、
前記検出部により検出された前記単位画像の位置情報に基づき、同期原点から座標軸に従って順に格子線を引いていくことで同期用の格子を生成するライン同期部と、
前記ライン同期部により生成された前記格子に基づき、前記画像上の所定の位置における前記単位画像の有無に応じてビット配列を生成するビット配列生成部と
を備えることを特徴とするペン・デバイス。
【請求項８】
前記ライン同期部は、各格子線を、当該格子線に対応付けられた前記単位画像の位置に個別に適合させることを特徴とする請求項７に記載のペン・デバイス。
【請求項９】
前記ライン同期部は、各格子線の傾きを、当該格子線に対応付けられた前記単位画像の位置に応じて補正することを特徴とする請求項８に記載のペン・デバイス。
【請求項１０】
前記ライン同期部は、各格子線の間隔を、当該格子線に対応付けられた前記単位画像の位置に応じて補正することを特徴とする請求項８に記載のペン・デバイス。
【請求項１１】
コンピュータに、
撮像装置により撮像された画像を走査し、単位画像を検出して位置を特定する機能と、
検出された前記単位画像の位置情報に基づき、同期原点から座標軸に従って順に格子線を引いていくことで同期用の格子を生成する機能と、
生成された前記格子に基づき、前記画像上の所定の位置における前記単位画像の有無に応じてビット配列を生成する機能と
を実現させるためのプログラム。
【請求項１２】
前記格子を生成する機能では、各格子線を、当該格子線に対応付けられた前記単位画像の位置に個別に適合させて引く処理を、前記コンピュータに実行させることを特徴とする請求項１１に記載のプログラム。
【請求項１３】
前記格子を生成する機能では、各格子線の傾きを、当該格子線に対応付けられた前記単位画像の位置に応じて補正する処理を、前記コンピュータに実行させることを特徴とする請求項１２に記載のプログラム。
【請求項１４】
前記格子を生成する機能では、各格子線の間隔を、当該格子線に対応付けられた前記単位画像の位置に応じて補正する処理を、前記コンピュータに実行させることを特徴とする請求項１２に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、ペン・デバイスおよびプログラムに関する。
【背景技術】
【０００２】
印刷用紙等の媒体上にコード化された情報を表すパターン画像や特定の意味を付与されたパターン画像を埋め込み、読み取り装置で読み取ってコード情報を復号したり付与された意味に応じて装置を制御したりすることが、従来から行われている。パターン画像により表される情報としては、パターン画像が埋め込まれた媒体自体の識別情報や媒体に記録された文書の識別情報、媒体上の位置を表す位置情報などがある。
【０００３】
パターン画像で記述されたコード情報を復号するためには、読み取り画像から検出されたパターン画像をビット列に同期化することが必要である。特許文献１に開示された従来技術では、仮想されたラスターにしたがって、マークを順に辿りながら、マークの座標およびラスター点の座標を決定していくことで同期化が行われる。
【０００４】
【特許文献１】特表２００３−５１１７６３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ペン・デバイスのように使用者が手に持って操作する読み取り装置等では、媒体に対する読み取り装置の向きや角度によって、読み取られた画像に歪みが生じる場合がある。
本発明は、以上のような課題に鑑みてなされたものであり、その目的は、読み取った画像に歪みがある場合でも、パターン画像を構成する単位画像の同期化を可能とすることにある。
【課題を解決するための手段】
【０００６】
請求項１に係る発明は、撮像装置により撮像された画像を走査し、単位画像を検出して位置を特定する検出部と、前記検出部により検出された前記単位画像の位置情報に基づき、同期原点から座標軸に従って順に格子線を引いていくことで同期用の格子を生成するライン同期部と、前記ライン同期部により生成された前記格子に基づき、前記画像上の所定の位置における前記単位画像の有無に応じてビット配列を生成するビット配列生成部とを備えることを特徴とする画像処理装置である。
請求項２に係る発明は、前記ライン同期部が、各格子線を、当該格子線に対応付けられた前記単位画像の位置に個別に適合させることを特徴とする請求項１に記載の画像処理装置である。
請求項３に係る発明は、前記ライン同期部が、各格子線の傾きを、当該格子線に対応付けられた前記単位画像の位置に応じて補正することを特徴とする請求項２記載の画像処理装置である。
請求項４に係る発明は、前記ライン同期部が、各格子線の間隔を、当該格子線に対応付けられた前記単位画像の位置に応じて補正することを特徴とする請求項２に記載の画像処理装置である。
請求項５に係る発明は、前記ライン同期部により用いられる格子線の傾きおよび間隔の初期値が、前記単位画像のうち最も近い位置にある２つの単位画像の組み合わせにおける当該２つの単位画像の位置関係に基づいて決定されることを特徴とする請求項１に記載の画像処理装置である。
請求項６に係る発明は、前記単位画像の組み合わせにおける２つの単位画像がなす角度を、前記同期原点を含む一定の範囲の前記単位画像の位置関係に基づいて補正することで、前記格子線の傾きの基準となる基準角度を決定する基準角度決定部をさらに備え、前記ライン同期部は、前記基準角度決定部により決定された基準角度を前記格子線の傾きの初期値として用いることを特徴とする請求項５に記載の画像処理装置である。
請求項７に係る発明は、単位画像が形成された媒体表面を撮像する撮像部と、前記撮像部により撮像された画像から前記単位画像を検出して位置を特定する検出部と、前記検出部により検出された前記単位画像の位置情報に基づき、同期原点から座標軸に従って順に格子線を引いていくことで同期用の格子を生成するライン同期部と、前記ライン同期部により生成された前記格子に基づき、前記画像上の所定の位置における前記単位画像の有無に応じてビット配列を生成するビット配列生成部とを備えることを特徴とするペン・デバイスである。
請求項８に係る発明は、前記ライン同期部が、各格子線を、当該格子線に対応付けられた前記単位画像の位置に個別に適合させることを特徴とする請求項７に記載のペン・デバイスである。
請求項９に係る発明は、前記ライン同期部が、各格子線の傾きを、当該格子線に対応付けられた前記単位画像の位置に応じて補正することを特徴とする請求項８に記載のペン・デバイスである。
請求項１０に係る発明は、前記ライン同期部が、各格子線の間隔を、当該格子線に対応付けられた前記単位画像の位置に応じて補正することを特徴とする請求項８に記載のペン・デバイスである。
請求項１１に係る発明は、コンピュータに、撮像装置により撮像された画像を走査し、単位画像を検出して位置を特定する機能と、検出された前記単位画像の位置情報に基づき、同期原点から座標軸に従って順に格子線を引いていくことで同期用の格子を生成する機能と、生成された前記格子に基づき、前記画像上の所定の位置における前記単位画像の有無に応じてビット配列を生成する機能とを実現させるためのプログラムである。
請求項１２に係る発明は、前記格子を生成する機能で、各格子線を、当該格子線に対応付けられた前記単位画像の位置に個別に適合させて引く処理を、前記コンピュータに実行させることを特徴とする請求項１１に記載のプログラムである。
請求項１３に係る発明は、前記格子を生成する機能で、各格子線の傾きを、当該格子線に対応付けられた前記単位画像の位置に応じて補正する処理を、前記コンピュータに実行させることを特徴とする請求項１２に記載のプログラムである。
請求項１４に係る発明は、前記格子を生成する機能で、各格子線の間隔を、当該格子線に対応付けられた前記単位画像の位置に応じて補正する処理を、前記コンピュータに実行させることを特徴とする請求項１２に記載のプログラムである。
【発明の効果】
【０００７】
請求項１に係る発明によれば、格子線を順次引きながら格子を生成することにより、固定的な格子を用いる場合に比べて、画像の歪みに柔軟に適応させることができる。
請求項２に係る発明によれば、各格子線を実際の単位画像の位置に適合させることで、画像の歪みに適切に対応させることができる。
請求項３に係る発明によれば、格子線の傾きを個別に補正して、画像の歪みに適応させることができる。
請求項４に係る発明によれば、格子線の間隔を個別に補正して、画像の歪みに適応させることができる。
請求項５に係る発明によれば、実際の単位画像の位置に基づいて格子線の傾きおよび間隔の初期値を定めるため、画像の歪みへの対応が容易になる。
請求項６に係る発明によれば、格子線の傾きを、複数の単位画像の位置を用いてさらに精度良く定めることができる。
請求項７に係る発明によれば、ペン・デバイスにおいて、格子線を順次引きながら格子を生成することにより、固定的な格子を用いる場合に比べて、画像の歪みに柔軟に適応させることができる。
請求項８に係る発明によれば、ペン・デバイスにおいて、各格子線を実際の単位画像の位置に適合させることで、画像の歪みに適切に対応させることができる。
請求項９に係る発明によれば、ペン・デバイスにおいて、格子線の傾きを個別に補正して、画像の歪みに適応させることができる。
請求項１０に係る発明によれば、ペン・デバイスにおいて、格子線の間隔を個別に補正して、画像の歪みに適応させることができる。
請求項１１に係る発明によれば、画像処理装置の機能を実現するコンピュータにおいて、格子線を順次引きながら格子を生成することにより、固定的な格子を用いる場合に比べて、画像の歪みに柔軟に適応させることができる。
請求項１２に係る発明によれば、画像処理装置の機能を実現するコンピュータにおいて、各格子線を実際の単位画像の位置に適合させることで、画像の歪みに適切に対応させることができる。
請求項１３に係る発明によれば、画像処理装置の機能を実現するコンピュータにおいて、格子線の傾きを個別に補正して、画像の歪みに適応させることができる。
請求項１４に係る発明によれば、画像処理装置の機能を実現するコンピュータにおいて、格子線の間隔を個別に補正して、画像の歪みに適応させることができる。
【発明を実施するための最良の形態】
【０００８】
以下、添付図面を参照して、本発明の実施形態について詳細に説明する。
本実施形態は、紙等の媒体に印刷されたパターン画像を読み取り、このパターン画像によって記録された情報（コード情報等）を復号する処理に関するものである。本実施形態の前提として、まず、パターン画像の構成例について説明する。
【０００９】
＜パターン画像の構成例＞
本実施形態では、媒体である紙面全体または紙面の特定の領域に、特定の情報を表す情報ブロックが配置される。情報ブロックは、意味のある情報を表現するパターンの最小単位である。この情報ブロックは、複数のパターンブロックの集合で構成され、このパターンブロックには、単位符号パターンが配置される。単位符号パターンは、情報を記録するための符号を表すものであり、パターン画像の最小単位である。
【００１０】
図１は、単位符号パターン、情報ブロック、紙面（媒体）の関係を示す図である。
図１において、単位符号パターンＰ１の集合により、情報ブロックＰ２が構成されている。そして、情報ブロックＰ２の集合により、紙面の太枠で囲まれた領域Ｐ３に情報が記録されている。次に、この単位符号パターンおよび情報ブロックの具体的な構成例について、詳細に説明する。
【００１１】
本実施の形態では、ｍ（ｍ≧３）箇所から選択したｎ（１≦ｎ＜ｍ）箇所に単位画像を配置してなるパターン画像によってｍＣｎ（＝ｍ！／｛（ｍ−ｎ）！×ｎ！｝）通りの情報を表現する。このパターン画像を、単位符号パターンとする。つまり、１つの単位画像を情報に対応させるのではなく、複数の単位画像を情報に対応させている。仮に１つの単位画像を情報に対応させたとすると、単位画像が欠損したり、ノイズが加わったりした場合に、誤った情報を表現してしまうという欠点がある。これに対して、例えば２つの単位画像を情報に対応させたとすると、単位画像が１つであったり３つであったりした場合に、容易に誤りであることが分かる。さらに、１つの単位画像で１ビット、または、高々２ビットを表現する方法では、情報を表現するパターンと視覚的に似たパターンで、情報パターンの読出しを制御する同期パターンを表現することができない。このようなことから、本実施形態では、上記のような符号化方式を採用している。以下では、このような符号化方式をｍＣｎ方式と称する。
ここで、単位画像としては、いかなる形状のものを用いてもよいが、本実施の形態では、単位画像の一例としてドット画像（以下、単に「ドット」という）を用いている。
【００１２】
図２は、ｍＣｎ方式における単位符号パターンの例を示す図である。
図２に示す例では、黒色の領域と斜線の領域をドット配置可能な領域としている。このドット配置可能な領域の間にある白色の領域は、個々のドットを識別するための隙間（空白）を形成するドット配置不可能な領域である。ドット配置可能な領域のうち、黒色の領域にドットが配置され、斜線の領域にはドットが配置されていないことを示している。すなわち、図２は、縦３ドット、横３ドットの合計９ドットを配置可能な領域を設けた例を示しており、（ａ）は、ドット配置可能な領域に２ドットを配置する９Ｃ２方式における単位符号パターンであり、（ｂ）は、ドット配置可能な領域に３ドットを配置する９Ｃ３方式における単位符号パターンである。
【００１３】
ところで、図２で配置されるドット（黒色の領域）は、あくまで情報表現のためのドットであり、画像を構成する最小単位であるドット（図２の最小の四角）とは必ずしも一致しない。本実施形態において、「ドット」というときは前者のドットを指し、後者のドットは「ピクセル」と呼ぶことにすれば、ドットは、６００ｄｐｉにおける２ピクセル×２ピクセルの大きさを有することになる。６００ｄｐｉにおける１ピクセルの大きさは０．０４２３ｍｍなので、ドットの一辺は、８４．６μｍ（＝０．０４２３ｍｍ×２）である。ドットは、大きくなればなるほど目に付きやすくなるため、できるだけ小さいほうが好ましい。ところが、あまり小さくすると、プリンタで印刷できなくなってしまう。そこで、ドットの大きさとして、５０μｍより大きく１００μｍより小さい上記の値を採用している。ただし、上記の値８４．６μｍは、あくまで計算上の数値であり、実際に印刷されたトナー像では１００μｍ程度になる。
【００１４】
図３は、図２に示した単位符号パターンの種類を網羅的に示した図である。なお、この図では、表示の簡略化のためドット間の空白を省略している。
図３（ａ）は、図２（ａ）に示した９Ｃ２方式における全ての単位符号パターンを示している。９Ｃ２方式では、これらの単位符号パターンを用いて、３６（＝９Ｃ２）通りの情報を表現する。また、図３（ｂ）は、図２（ｂ）に示した９Ｃ３方式における全ての単位符号パターンを示している。９Ｃ３方式では、これらの単位符号パターンを用いて、８４（＝９Ｃ３）通りの情報を表現する。
【００１５】
なお、単位符号パターンは、ｍ＝９の場合に限定されるものではなく、ｍの値として、例えば、４、１６等の値を採用してもよい。また、ｎの値も１≦ｎ＜ｍを満たしていればいかなる値を採用してもよい。
また、ｍの値としては、平方数（整数の２乗）だけでなく、異なる２つの整数の積を採用してもよい。つまり、ドットを配置可能な領域は、３ドット×３ドットを配置する場合のような正方形の領域に限らず、３ドット×４ドットを配置する場合のような長方形の領域であってもよい。なお、本明細書において、長方形とは、隣り合う２辺の長さが等しくない矩形のことをいうものとする。
【００１６】
ところで、ｍＣｎ方式における全ての単位符号パターンには、各単位符号パターンを識別するための番号であるパターン値が付されている。
図４に、９Ｃ２方式における単位符号パターンとパターン値との対応を示す。９Ｃ２方式における単位符号パターンは３６個であるので、パターン値としては０〜３５が用いられる。ただし、図４に示した対応はあくまで一例であり、どの単位符号パターンにどのパターン値を割り当ててもよい。なお、９Ｃ３方式については、図示しないが、各単位符号パターンに０〜８３のパターン値が付されることになる。
【００１７】
このように、ｍ箇所からｎ箇所を選択することでｍＣｎ種類の単位符号パターンを用意しているが、本実施形態では、これらの単位符号パターンのうち、特定のパターンを情報パターンとして利用し、残りを同期パターンとして利用する。ここで、情報パターンとは、媒体に埋め込む情報を表現するパターンである。また、同期パターンとは、媒体に埋め込まれた情報パターンを取り出すために用いられるパターンである。例えば、情報パターンの位置を特定したり、画像の回転を検出したりするために用いられる。なお、媒体としては、画像を印刷することが可能であれば、いかなるものを用いてもよい。紙が最も一般的に用いられるので、以下では媒体を紙として説明するが、金属、プラスチック、繊維等であってもよい。
【００１８】
ここで、同期パターンについて説明する。
図５は、９Ｃ２方式における同期パターンの例である。
図５に示すように、単位符号パターンが正方形（縦横のドット数が同じ）である場合は、画像の回転の検出のために４種類の単位符号パターンを同期パターンとして用意する必要がある。ここでは、パターン値３２の単位符号パターンを正立した同期パターンとしている。また、パターン値３３の単位符号パターンを右に９０度回転した同期パターン、パターン値３４の単位符号パターンを右に１８０度回転した同期パターン、パターン値３５の単位符号パターンを右に２７０度回転した同期パターンとしている。この場合、３６種類の単位符号パターンからこの４種類の同期パターンを除いた残りを情報パターンとし、５ビットの情報を表現するとよい。ただし、３６種類の単位符号パターンの情報パターンと同期パターンへの振り分け方は、これには限らない。例えば、４種類で１組を構成する同期パターンの組を５つ用意し、残りの１６種類の情報パターンで４ビットの情報を表現してもよい。
【００１９】
一方、特に図示しないが、単位符号パターンが長方形（縦横のドット数が異なる）である場合は、画像の回転の検出のために２種類の単位符号パターンを同期パターンとして用意すればよい。例えば、縦３ドット×横４ドットを配置可能な領域が検出されるべきなのに、縦４ドット×横３ドットを配置可能な領域が検出された場合は、その時点で画像が９０度または２７０度回転していることが分かるからである。
【００２０】
次に、上記の符号パターンを配置して識別情報と座標情報を表現する方法を述べる。
まず、単位符号パターンにより構成される情報ブロックについて説明する。
図６は、情報ブロックの構成例を示す図である。
図６に示す例では、９Ｃ２方式における単位符号パターンを使用していることも同時に示している。すなわち、３６種類の単位符号パターンを、例えば、同期パターンとして使用する４パターンと、情報パターンとして使用する３２パターンとに分け、各パターンをレイアウトに従って配置する。
【００２１】
また、図６に示す例では、情報ブロックのレイアウトとして、３ドット×３ドットの単位符号パターンを配置可能なパターンブロックを５個×５個の２５個並べたものを採用している。そして、この２５個のパターンブロックのうち、左上の１ブロックに同期パターンを配置している。また、同期パターンの右の４ブロックに紙面上のＸ方向の座標を特定するＸ座標情報を表す情報パターンを配置し、同期パターンの下の４ブロックに紙面上のＹ方向の座標を特定するＹ座標情報を表す情報パターンを配置している。さらに、これらの座標情報を表す情報パターンで囲まれた１６ブロックに、紙面または紙面に印刷される文書の識別情報を表す情報パターンを配置している。
なお、上述した９Ｃ２方式における単位符号パターンは例示に過ぎず、図の左下に示すように、９Ｃ３方式における単位符号パターンを使用してもよい。
【００２２】
次に、本実施形態における識別情報と座標情報を表現するためのレイアウトについて説明する。
図７に、このようなレイアウトの一部を示す。
図７に示すレイアウトでは、図６に示した情報ブロックを基本単位とし、この情報ブロックを紙面全体に周期的に配置する。図では、同期パターンを「Ｓ」で表し、Ｘ座標を表すパターンを「Ｘ１」、「Ｘ２」、…で表し、Ｙ座標を表すパターンを「Ｙ１」、「Ｙ２」、…で表している。座標情報は、例えば紙面の縦及び横に渡ってＭ系列で表現する。また、識別情報の符号化には、幾つかの方法の利用が考えられるが、本実施形態では、ＲＳ符号化が適している。ＲＳ符号は多値の符号法であり、この場合、ブロックの表現をＲＳ符号の多値に対応させるとよいからである。図７では、識別情報を表すパターンを「ＩＸＹ」（Ｘ＝１〜４，Ｙ＝１〜４）で表している。
【００２３】
ここで、座標情報を表現するのに用いるＭ系列について説明する。
Ｍ系列とは、その部分列が、他の部分列と一致することがない系列である。例えば、１１次のＭ系列は、２０４７ビットのビット列である。そして、この２０４７ビットのビット列の中から取り出された１１ビット以上の部分列と同じ並びは、この２０４７ビットのビット列の中に自身以外には存在しない。本実施形態では、１６個の単位符号パターンを４ビットに対応付ける。すなわち、２０４７ビットのビット列を４ビットごとに１０進数で表し、図４に示したような数値対応に従って単位符号パターンを決定し、座標符号として紙面の横と縦に渡って表現する。したがって、復号の際は、３つの連続する単位符号パターンを特定することにより、ビット列上の位置が特定されることになる。
【００２４】
図８に、Ｍ系列を用いた座標情報の符号化の例を示す。
（ａ）は、１１次のＭ系列の例として、「０１１１０００１０１０１１０１００００１１００１０…」というビット列を示している。本実施の形態では、これを４ビットずつに区切り、１つ目の部分列「０１１１」をパターン値７の単位符号パターンとして、２つ目の部分列「０００１」をパターン値１の単位符号パターンとして、３つ目の部分列「０１０１」をパターン値５の単位符号パターンとして、４つ目の部分列「１０１０」をパターン値１０の単位符号パターンとして、それぞれ紙面上に配置する。
【００２５】
このように、４ビットずつ区切って単位符号パターンに割り当てると、（ｂ）に示すように、４周期で全てのパターン列を表現できる。すなわち、１１次のＭ系列は、２０４７ビットなので、この系列を４ビットごとに切り出し、単位符号パターンで表現していくと、最後に３ビットあまることになる。この３ビットに、Ｍ系列の最初の１ビットを加えて４ビットとし単位符号パターンで表す。さらに、Ｍ系列の２ビット目から４ビットごとに切り出し単位符号パターンで表す。すると、次の周期は、Ｍ系列の３ビット目から始まり、その次の周期は、Ｍ系列の４ビット目から始まる。さらに、５周期目は、５ビット目からとなるが、これは最初の周期と一致する。したがって、Ｍ系列の４周期を４ビットごとに切り出していくと、２０４７個の単位符号パターンで全てを尽くすことができる。Ｍ系列は１１次であるので、３つの連続する単位符号パターンは、他のどの位置の連続する符号パターンとも一致することはない。そこで、読出し時には３つの単位符号パターンを読み出せば、復号が可能である。ただし、本実施形態では、誤りの発生を考慮し、４つの単位符号パターンで座標情報を表現している。
【００２６】
ところで、このような符号化を行った場合、４周期のＭ系列は２０４７個のブロックに分割して格納される。そして、図７のようなレイアウトでは、同期パターンを配置したブロックが間に挟まれるので、４周期のＭ系列で２５５８個（≒２０４７個×５／４）のブロック分の長さをカバーすることになる。１つのブロックの一辺の長さは、０．５０８ｍｍ（６００ｄｐｉで１２ピクセル）なので、２５５８個のブロックの長さは１２９９．５ｍｍである。つまり、１２９９．５ｍｍの長さが符号化されることになる。Ａ０サイズの長辺が１１８８．０ｍｍであるので、本実施の形態では、Ａ０サイズの用紙上の座標を符号化することになる。
【００２７】
以上のように構成されるパターン画像は、例えば電子写真方式を用いて、Ｋトナー（カーボンを含む赤外光吸収トナー）、または、特殊トナーにより、媒体である紙面上に形成される。
ここで、特殊トナーとしては、可視光領域（４００ｎｍ〜７００ｎｍ）における最大吸収率が７％以下であり、近赤外領域（８００ｎｍ〜１０００ｎｍ）における吸収率が３０％以上の不可視トナーが例示される。ここで、「可視」及び「不可視」は、目視により認識できるかどうかとは関係しない。印刷された紙面に形成された画像が可視光領域における特定の波長の吸収に起因する発色性の有無により認識できるかどうかで「可視」と「不可視」とを区別している。また、可視光領域における特定の波長の吸収に起因する発色性が若干あるが、人間の目で認識し難いものも「不可視」に含める。
【００２８】
＜画像処理装置の構成および動作＞
次に、紙面上に印刷された（媒体上に形成された）パターン画像を読み取る画像処理装置について説明する。
図９は、画像処理装置の機能構成例を示す図である。
図９に示すように、画像処理装置１０は、パターン画像を撮像する撮像部１００と、パターン画像を形成するドットを検出するドット解析部２００と、検出されたドットにより単位符号パターンや情報ブロックを復元し情報を復号する復号部３００とを備える。
【００２９】
撮像部１００は、ＣＣＤ（Charge Coupled Devices）やＣＭＯＳ（Complementary Metal Oxide Semiconductor）等の撮像素子を用いて構成され、紙面上に形成されたパターン画像を、連続的な画像フレームとして読み取る。そして、読み取ったパターン画像を、８ビットの画像データとしてドット解析部２００に送る。撮像部１００により読み取られる画像のサイズは、特に限定されないが、ここでは１５６画素×１５６画素とする。
【００３０】
ドット解析部２００は、プログラム制御されたＣＰＵおよびメモリ等で実現され、撮像部１００により撮像された画像からドットを検出し、２次元のビット列を生成する。このドット解析部２００は、画像データを解析する機能として、位置検出部２１０と、角度検出部２２０と、同期化部２３０とを備える。
【００３１】
位置検出部２１０は、撮像部１００から受け取った８ビットの画像からドットの位置を検出する。具体的には、取得した画像フレームからドットを検出し、さらに検出したドットの画像フレーム上での位置情報（座標値）を算出する。したがって、位置検出部２１０は、単位画像であるドットを検出する単位画像検出手段である。
【００３２】
角度検出部２２０は、位置検出部２１０により検出された画像上のドットの整列角度を検出する。ドットの整列角度とは、画像におけるドットの整列方向の傾きであり、ドット本来の配列に対する回転角度である。ドット本来の配列とは、例えば、図３に示したような単位符号パターンにおける縦横のドットの並びである。
【００３３】
同期化部２３０は、位置検出部２１０および角度検出部２２０の検出結果として得られたドットの配列を、２次元のビット配列に変換する。この変換を同期化と呼び、得られたビット配列における各ビットの並びを同期ラインと呼ぶ。得られたビット配列と、同期ラインの角度および間隔の情報は、復号部３００に送られる。
【００３４】
復号部３００は、プログラム制御されたＣＰＵおよびメモリ等で実現される。この復号部３００は、ドット解析部２００から受け取ったビット配列、同期ラインの角度および間隔の情報に基づいて、３ドット×３ドットのパターンブロックを検出する。そして、得られたパターンブロックを回転補正し、情報ブロックを復元した後、この情報ブロックにより記録された情報を復号する。また、画像処理装置１０が、パターン画像が形成された用紙上に筆記しながらパターン画像を読み取るペン・デバイス（ペン・デバイスの詳細な構成については後述）である場合、ペン先の位置と撮像部１００により撮像される位置との間には、一定のずれがある。そこで、復号部３００は、同期ラインの角度および間隔の情報に基づいて、画像から得られた座標をペン先の座標に変換する。
【００３５】
また、図９に示すように、ドット解析部２００の位置検出部２１０、角度検出部２２０および同期化部２３０には、復号部３００における復号の成否についての情報がフィードバックされる。位置検出部２１０、角度検出部２２０および同期化部２３０は、この復号の成否の情報に基づいて、各々の処理において使用するパラメータを決定する。具体的には、所定のパラメータを使用して処理を行った結果、復号に成功した（正しい復号結果が得られた）場合は、次の画像フレームに対しても同じパラメータを使用して処理を行うこととする。一方、復号に失敗した場合は、次の画像フレームに対しては、過去の処理履歴を参照し、成功率が最も高かったパラメータを選択して使用することとする。
【００３６】
また、画像処理装置１０が後述するペン・デバイスである場合、画像処理装置１０には、ペンによる筆記が行われているか否かを認識する機能が設けられる。そして、ドット解析部２００の位置検出部２１０、角度検出部２２０および同期化部２３０と、復号部３００には、ペンによる筆記が開始されたことを示すストローク開始信号が供給される。ストローク開始信号が供給されると、これらの機能ブロックは、各設定を初期化する。さらにまた、画像処理装置１０がペン・デバイスである場合、復号部３００には、復号結果からペン先を補正するための、ペン先から撮像面までの相対距離情報（ペン−チップ距離情報）が供給される。
【００３７】
図１０は、ドット解析部２００および復号部３００による処理の流れを示すフローチャートである。
初期動作として、撮像部１００により媒体である紙面の撮像が行われたものとする。
図１０に示すように、まず、位置検出部２１０が、メモリにおけるドットの座標格納領域を初期化し（ステップ１００１）、ドットの位置を検出する（ステップ１００２）。位置検出に成功したならば（ステップ１００３でＹｅｓ）、次に、角度検出部２２０が、メモリにおけるドットの整列角度格納領域を初期化し（ステップ１００４）、ドットの整列角度を検出する(ステップ１００５)。角度検出に成功したならば（ステップ１００６でＹｅｓ）、次に、同期化部２３０が、メモリのビット配列格納領域を初期化し（ステップ１００７）、ドット配列をビット配列に同期させる（ステップ１００８）。ドット配列の同期に成功したならば（ステップ１００９でＹｅｓ）、次に、復号部３００が、メモリの復号結果格納領域を初期化し（ステップ１０１０）、復号処理を行う（ステップ１０１１）。復号に成功したならば（ステップ１０１２でＹｅｓ）、復号部３００は、復号に成功したことを示す信号を位置検出部２１０、角度検出部２２０および同期化部２３０に送信し（ステップ１０１３）、復号結果を出力する（ステップ１０１４）。
【００３８】
位置検出部２１０によるドットの位置の検出、角度検出部２２０によるドットの整列角度の検出、同期化部２３０によるドット配列の同期のいずれかに失敗した場合（ステップ１００３、１００６、１００９でＮｏ）は、失敗したステップ以後の処理は行われない。これらの場合、および復号部３００による復号に失敗した場合（ステップ１０１２でＮｏ）は、復号部３００が、復号に失敗したことを示す信号を、位置検出部２１０、角度検出部２２０および同期化部２３０に送信し（ステップ１０１５）、かつ復号結果として出力する（ステップ１０１４）。
【００３９】
＜角度検出および同期化における画像の歪みの影響＞
ここで、角度検出および同期化における画像の歪みの影響について説明する。
図１１乃至図１３は、撮像部１００により撮像された画像（以下、撮像画像と呼ぶ）の例を示す図である。
図１１−１は、ドットの整列角度が０度の場合の撮像画像の例であり、図１１−２は、ドットの整列角度が４５度の場合の撮像画像の例である。これらの図において、撮像画像に対して直交するＸＹ座標系を設定し、横方向をＸ軸、縦方向をＹ軸とする。そして、ドットの整列方向がＸ軸およびＹ軸に沿っている場合を角度０度とする。
【００４０】
図１１−１および図１１−２では、撮像部１００の撮像面とドットが形成された紙面とは並行である。これらの図に示す状態では、各ドットは互いに直交する２方向に並んでいる（図中、実線および破線で示した方向がドットの整列方向）。また、隣り合う４つのドットで形成される四角形が正方形をなしている。これらの場合は、近接する２つのドットの位置関係を調べることにより、ドットの整列方向を特定し、ドット本来の配列に対する整列角度を検出することは容易である。
【００４１】
また、検出されたドットをビット配列に同期させる手法として、ドット配列に沿った格子を画像フレームに当てはめ、格子のマス目ごとに、ドットの有無に応じてビット値（０または１）を特定する手法が考えられる。図１１−１および図１１−２に示すように、ドットが直交する２方向に沿って並ぶ場合、直交格子が当てはめられることとなる。図１１−２の場合は、ドットの整列角度に合わせて格子を回転させて当てはめれば良い。
【００４２】
ところで、画像処理装置１０が後述するペン・デバイス等である場合、紙面に対するペン・デバイスの角度によって、撮像部１００の撮像面が紙面に対して傾き、撮像画像に歪みが生じてしまう。この場合、図１１−１および図１１−２の場合のように、ドットの整列角度を検出したり、固定的な格子を用いて同期化したりすることが容易ではなくなる。
【００４３】
図１２は、図１１−１に対して画像の上方が奥に、下方が手前に傾いた状態の撮像画像である。この状態では、撮像画像におけるドットの間隔が上方で短く、下方で長くなるので、隣り合う４つのドットで形成される四角形は台形等になる。図１２のように撮像画像が歪むと、ドット間隔やドットの整列角度が場所によって異なってしまうため、直交格子のような固定的な格子を当てはめることができない。
【００４４】
図１３は、図１１−２に対して画像の上方が奥に、下方が手前に傾いた状態の撮像画像である。この状態では、撮像画像におけるドットの２方向の並びが直交していないので、隣り合う４つのドットで形成される四角形は菱形や平行四辺形となる。図１３のように撮像画像が歪むと、隣り合う４つのドットで形成される四角形において、短い対角線の長さが２辺の長さに近づくため、正しいドットの整列方向を検出することが困難になる。図１３に示す例では、ドットは、実線で示した方向、破線で示した方向、一点鎖線で示した方向の３方向にドットが並んでいるように認められる。
【００４５】
そこで、本実施形態において、角度検出部２２０は、まず、位置検出部２１０により撮像画像から検出された各ドットに関して、近接ドット対を検出する。近接ドット対は、所定のドットに注目し多場合に、そのドットとそのドットに最も近い位置にあるドットとで構成される。次に、検出された近接ドット対の角度の度数分布に基づき、３つの角度を抽出し、抽出された３つの角度の関係等に基づいて、ドットの整列角度を特定する。
【００４６】
また、同期化部２３０は、画像フレームの中心付近で同期原点を特定し、この同期原点から外側へ順に、実際のドットの位置に応じて補正しながら、格子線（同期ライン）を引いていくことで同期用の格子を設定する。
【００４７】
＜角度検出部の機能＞
次に、角度検出部２２０の機能についてさらに詳細に説明する。
図１４は、角度検出部２２０の機能構成を示す図である。
角度検出部２２０は、近接ドット対を検出する近接ドット対検出部２２１と、検出された近接ドット対の度数分布データを生成する度数分布生成部２２２とを備える。そして、生成された度数分布データに基づいて３つの角度を抽出する第１軸角度抽出部２２３、第２軸角度抽出部２２４および第３軸角度抽出部２２５と、抽出された３つの角度からドットの整列角度を選択し特定する角度特定部２２６とを備える。図示の構成において、度数分布生成部２２２、第１軸角度抽出部２２３、第２軸角度抽出部２２４、第３軸角度抽出部２２５および角度特定部２２６（図中、破線で囲まれた部分）は、ドットの整列角度を特定する角度特定手段である。
【００４８】
近接ドット対検出部２２１は、位置検出部２１０により検出されたドットの画像フレーム上での位置情報（座標値）を取得し、近接ドット対を検出する。言い換えれば、近接ドット対検出部２２１は、位置検出部２１０の出力であるドット座標値から最も近い位置にあるドット座標値の組み合わせを検出する手段である。近接ドット対の詳細な検出方法については後述する。
【００４９】
度数分布生成部２２２は、近接ドット対検出部２２１により検出された近接ドット対がなす角度の度数分布データを生成する。ここで、近接ドット対がなす角度とは、近接ドット対を構成する２つのドットを結ぶ直線が、位置検出部２１０の出力であるドット位置情報の基準となる所定の方向（例えば、撮像画像に設定されたＸＹ座標のＸ軸方向）に対してなす角度である。
【００５０】
第１軸角度抽出部２２３、第２軸角度抽出部２２４、第３軸角度抽出部２２５は、度数分布生成部２２２により生成された度数分布データに基づいて、ドットの整列方向の候補となる３方向の角度（第１軸角度、第２軸角度、第３軸角度）を抽出する。各々の角度の詳細な検出方法については後述する。
【００５１】
角度特定部２２６は、第１軸角度抽出部２２３、第２軸角度抽出部２２４、第３軸角度抽出部２２５により抽出された第１軸角度、第２軸角度、第３軸角度に基づいて、ドット本来の配列の方向に対応するドットの整列方向の角度（整列角度）を特定し出力する。例えば、図３に示したような単位符号パターンの場合、ドットは縦横の２方向に並んでいるので、この縦横２方向に対応する２方向の整列角度が特定される。図１４では、この２方向をＸ軸およびＹ軸と記載している。整列角度の詳細な特定方法については後述する。
【００５２】
また、第１軸角度抽出部２２３、第２軸角度抽出部２２４、第３軸角度抽出部２２５は、抽出した角度に沿って並ぶ近接ドット対のドット間の距離に基づいて、この方向でのドット間の基準間隔を算出する。そして、角度特定部２２６は、２方向の整列角度におけるドット間の基準間隔を特定する。すなわち、第１軸角度抽出部２２３、第２軸角度抽出部２２４、第３軸角度抽出部２２５、角度特定部２２６は、撮像画像から検出されたドット配列におけるドット間隔を特定する間隔特定手段としても機能する。基準間隔の検出方法については後述する。
【００５３】
＜近接ドット対の検出方法＞
次に、近接ドット対検出部２２１による近接ドット対の検出方法について詳細に説明する。
図１５は、ドットが検出された画像から、近接ドット対が検出された様子を示す図である。図１５（ａ）は位置検出部２１０により検出されたドット位置の一例であり、図１５（ｂ）は図１５（ａ）に対して近接ドット対の検出が行われた状態を示す。図１５（ｂ）では、近接ドット対を、線で結んで表現している。この場合、あるドットＡから最も近いドットＢが、他のドットＣと近接ドット対を成している場合は、ドットＡは他のどのドットとも近接ドット対を成していない（Ａ、Ｂ、Ｃは特に図示していない）。
【００５４】
図１６は、近接ドット対の検出方法の具体例を示す図である。
図１６において、例えば、番号１から４までのドットに対して近接ドット対を検出するものとする。
近接ドット対検出部２２１は、まず、位置検出部２１０が検出した番号１から４までのドットの位置を認識する。そして、番号１のドットを基準に他の番号のドットまでの距離をスキャンしていく。その結果、番号１のドットに最も近いドットは番号３のドットであり、両者の距離（ＰＤ）は２０と認識される。そして、近接ドット対検出部２２１は、番号１のドットに関して、番号３のドットが近接ドットであることを示す情報“Ｐａｉｒ［１］＝３”と、番号３のドットまでの距離が２０であることを示す情報“ＭＰＤ［１］＝２０”とを生成する。同様に、番号３のドットに関して、“Ｐａｉｒ［３］＝１”と“ＭＰＤ［３］＝２０”の情報（以下、属性情報）を生成する。
【００５５】
ここで、Ｐａｉｒ［  ］の［  ］内の番号は自らのドットの番号を示し、Ｐａｉｒ［  ］＝で定義される値は、現時点で近接ドット対となっている相手のドットの番号を示す。また、ＭＰＤ［  ］の［  ］内の番号は自らのドットの番号を示し、ＭＰＤ［  ］の値は、現時点での近接ドット対となっている相手のドットまでの距離を示す。
【００５６】
次に、近接ドット対検出部２２１は、番号２のドットを基準に、番号１以外のドットまでの距離をスキャンしていく。先に番号１のドットをスキャンした時点で、番号１のドットは番号２のドットから最も近いドットではないと判断されているため、番号１のドットをスキャンの対象から外している。
このスキャンの結果、番号２のドットに最も近いドットは番号３のドットであり、両者の距離（ＰＤ）は１５と認識される。この距離は、番号１と番号３とのドットの距離（２０）よりも短い。したがって、位置検出部２１０は、番号２のドットに関して“Ｐａｉｒ［２］＝３”と“ＭＰＤ［２］＝１５”の属性情報を生成し、番号３のドットに関して“Ｐａｉｒ［３］＝２”と“ＭＰＤ［３］＝１５”の属性情報を生成する。そして、この時点で番号１のドットは、番号２のドットに番号３のドットを奪われたため、属性情報が“Ｐａｉｒ［１］＝−１”と“ＭＰＤ［１］＝−１”に変更され、番号１のドットはどの番号のドットとも近接ドット対を成していない状態になる。
【００５７】
同様にして、近接ドット対検出部２２１は、番号３のドットを基準に、番号が１と２以外のドットまでの距離をスキャンしていく。その結果、番号３のドットに最も近いドットは番号４のドットであり、両者の間隔（ＰＤ）は１０と認識される。この距離は、番号２と番号３とのドットの距離（１５）よりも短い。したがって、位置検出部２１０は、番号３のドットに関して“Ｐａｉｒ［３］＝４”と“ＭＰＤ［３］＝１０”の属性情報を生成し、番号４のドットに関して“Ｐａｉｒ［４］＝３”と“ＭＰＤ［４］＝１０”の属性情報を生成する。そして、この時点で番号２のドットは、番号４のドットに番号３のドットを奪われたため、属性情報が“Ｐａｉｒ［２］＝−１”と“ＭＰＤ［２］＝−１”に変更され、番号２のドットはどの番号のドットとも近接ドット対を成していない状態になる。
【００５８】
この時点で、スキャンしていないドットは番号４のドットだけであるが、このドットは既に番号３のドットと近接ドット対を成しているため、改めてスキャンされることはなく処理は終了する。なお、ここでは一例としてドットの数が４個の場合を取り上げたが、ドットの数が５個以上ある場合も上述したスキャンの手順を繰り返していくことで近接ドット対が順次検出される。
【００５９】
図１７は、近接ドット対検出部２２１による近接ドット対の検出処理の流れを説明するフローチャートである。
近接ドット対の検出は、図１６を参照して説明したように、複数のドットの各々を順次基準とし、他のドットとの位置関係を調べることによって行われる。この基準となるドットを基準ドット、他のドットを対象ドットと呼ぶ。図１７に示すように、近接ドット対検出部２２１は、各ドットを順次基準ドットとしながら、以下のループ処理を実行する。
【００６０】
まず、近接ドット対検出部２２１は、基準ドットとして選んだドットの座標値を取得し（ステップ１７０１）、ドット対番号（ＰａｉｒＩｎｄｅｘ）を生成して基準ドットに付与する（ステップ１７０２）。ここでは、基準ドットの座標値を（Ｘｓ，Ｙｓ）とする。次に、近接ドット対検出部２２１は、基準ドット以外の各ドットを順次対象ドットとしながら、以下のループ処理を実行する。
【００６１】
まず、近接ドット対検出部２２１は、対象ドットとして選んだドットの座標値を取得する（ステップ１７０３）。ここでは、対象ドットの座標値を（Ｘｅ，Ｙｅ）とする。次に、近接ドット対検出部２２１は、基準ドットと対象ドットの間の距離（（Ｘｓ，Ｙｓ）−（Ｘｅ，Ｙｅ））を計算する（ステップ１７０４）。そして、算出されたドット間距離が、現在の基準ドットに関するドット間距離のうちで最小値である場合は（ステップ１７０５でＹｅｓ）、その対象ドットと基準ドットとの関係を表すドット対情報（例えば、図１６に示したＰａｉｒ［  ］およびＭＰＤ［  ］）を生成し保存する（ステップ１７０６）。このとき、他のドットを対象ドットとするドット対情報があれば、そのドット対情報は消去される。
【００６２】
一方、ステップ１７０４で算出されたドット間距離が現在の基準ドットに関するドット間距離のうちで最小値でない場合（ステップ１７０５でＮｏ）、言い換えれば、ドット間距離がより短い他のドットに関するドット対情報が既に保存されている場合は、既に保存されているドット対情報がそのまま保持される。
【００６３】
基準ドット以外の全てのドットを対象ドットとしてステップ１７０３〜１７０６のループ処理が行われると、その基準ドットに最も近い位置にある１つのドットを対象ドットとして、この対象ドットと基準ドットとの関係を表すドット対情報が保存されることとなる。この後、近接ドット対検出部２２１は、この基準ドットおよび対象ドットに関して、ステップ１７０６で保存されたドット対情報に基づいて、近接ドット対か否かを判別する処理を行う（ステップ１７０７）。図１８は、ステップ１７０７に示す近接ドット対の判別処理の詳細を説明するフローチャートである。
【００６４】
図１８を参照すると、近接ドット対検出部２２１は、まず、対象ドットが他のドットとリンクされているか否かを調べる。すなわち、対象ドットが他のドットと既に対をなしているか否かを、図１６で説明した属性情報（Ｐａｉｒ［］およびＭＰＤ［］）を参照して調べる。対象ドットに属性情報が設定されていれば、それは対象ドットが他のドットとリンクされており、対象ドットに属性情報が設定されていなければ、対象ドットは他のドットとリンクしていない。対象ドットと他のドットとの間のリンクが存在する場合（ステップ１８０１でＹｅｓ）、次に近接ドット対検出部２２１は、対象ドットと基準ドットとの間のドット間距離と、対象ドットとリンク先の他のドットとの間のドット間距離とを比較する。そして、基準ドットとの間のドット間距離の方が短い場合（ステップ１８０２でＮｏ）、近接ドット対検出部２２１は、対象ドットと他のドットとの間のリンクを削除する（ステップ１８０３）。
【００６５】
対象ドットと他のドットとの間のリンクが存在しない場合（ステップ１８０１でＮｏ）、またはステップ１８０３で対象ドットと他のドットとの間のリンクを削除した後、近接ドット対検出部２２１は、基準ドットが他のドットとリンクされているか否かを調べる。基準ドットと他のドットとの間のリンクが存在する場合（ステップ１８０４でＹｅｓ）、次に近接ドット対検出部２２１は、基準ドットと対象ドットとの間のドット間距離と、基準ドットとリンク先の他のドットとの間のドット間距離とを比較する。そして、対象ドットとの間のドット間距離の方が短い場合（ステップ１８０５でＮｏ）、近接ドット対検出部２２１は、基準ドットと他のドットとの間のリンクを削除する（ステップ１８０６）。
【００６６】
この後、近接ドット対検出部２２１は、基準ドットと対象ドットとをリンクさせる（ステップ１８０７）。これにより、基準ドットと対象ドットとは近接ドット対となる。
一方、基準ドットと対象ドットとの間のドット間距離よりも、対象ドットとリンク先の他のドットとの間のドット間距離の方が短い場合（ステップ１８０２でＹｅｓ）、または、基準ドットとリンク先の他のドットとの間のドット間距離の方が短い場合（ステップ１８０５でＹｅｓ）は、近接ドット対検出部２２１は、基準ドットと対象ドットとをリンクさせない。したがって、これらの組み合わせは近接ドット対とはならない。
【００６７】
＜第１軸角度、第２軸角度、第３軸角度の抽出方法＞
次に、第１軸角度抽出部２２３、第２軸角度抽出部２２４、第３軸角度抽出部２２５による第１軸角度、第２軸角度、第３軸角度の抽出方法について詳細に説明する。
まず、前処理として、度数分布生成部２２２が、近接ドット対検出部２２１により検出された近接ドット対がなす角度の度数分布データを生成する。この度数分布データは、近接ドット対がなす角度の値ごとに、その出現度数を積算したデータである。
【００６８】
図１９は、度数分布生成部２２２により生成される近接ドット対がなす角度の度数分布の例を視覚的に表現したヒストグラムである。
度数分布データは、１８０度の範囲（図１９の例では、−９０度から＋９０度まで）で生成される。この度数分布データを用いて、第１軸角度抽出部２２３、第２軸角度抽出部２２４、第３軸角度抽出部２２５が、第１軸角度、第２軸角度、第３軸角度をそれぞれ抽出する。
【００６９】
第１軸角度抽出部２２３は、度数分布生成部２２２により生成された度数分布データに基づき、最大頻度の角度を第１軸角度として抽出する。最大頻度の角度は、次のようにして求まる。
第１軸角度抽出部２２３は、まず、出現度数が最大である角度を検出する。そして、検出した角度を中心とする一定の範囲（以下、対象範囲）で、出現度数に基づく平均角度を計算する。算出された角度が最大頻度の角度であり、第１軸角度となる。平均角度は、対象範囲の角度ごとに出現度数を乗算した値を加算し、総出現度数（対象範囲内の出現度数を全て加算した値）で除算した値である。
【００７０】
例えば、出現度数が最大の角度を１０度、対象範囲を−２度から＋２度までの範囲とすると、８度から１２度の範囲で平均角度の計算が行われる。また例えば、この範囲において、８度の出現度数を１０、９度の出現度数を２０、１０度の出現度数を１００、１１度の出現度数を５０、１２度の出現度数を４０とすると、平均角度は、下記の計算により１０．４度となる。
（８×１０＋９×２０＋１０×１００＋１１×５０＋１２×４０）／（１０＋２０＋１００＋５０＋４０）＝１０．４
【００７１】
第２軸角度抽出部２２４は、第１軸角度抽出部２２３により抽出された第１軸角度から一定の角度だけ遷移（オフセット）させた角度（以下、基準角度）を想定し、その基準角度を中心とする一定の範囲内で最大頻度の角度を第２軸角度として抽出する。そして、第１軸角度の算出と同様に、所定の対象範囲で出現頻度に基づく平均角度を算出し、それを第２軸角度とする。ここで、第１軸角度と基準角度とがなす遷移角度は、ドット本来の配列に基づいて設定される。例えば、図３に示した単位符号パターンの場合、９０度である。最大頻度の角度の計算方法は、第１軸角度の場合と同様である。基準角度を含む一定の範囲は、任意に定めて良いが、第２軸角度の検出可否や復号部３００による復号成否の履歴に基づいて定めても良い。
【００７２】
第３軸角度抽出部２２５は、基準角度に対して第２軸角度と対称な角度を中心とする一定の範囲内で、最大頻度の角度を第３軸角度として抽出する。そして、所定の対象範囲で出現頻度に基づく平均角度を算出し、それを第３軸角度とする。例えば、基準角度が１００度、第２軸角度が８０度である場合、基準角度に対して第２軸角度と対称な角度は、１２０度である。この角度を含む一定の範囲は、任意に定めて良いが、第２軸角度の検出可否や復号部３００による復号成否の履歴に基づいて定めても良い。また、最大頻度の角度の計算方法は、第１軸角度の場合と同様である。
【００７３】
図２０は、度数分布生成部２２２、第１軸角度抽出部２２３、第２軸角度抽出部２２４、第３軸角度抽出部２２５による第１軸角度、第２軸角度、第３軸角度の抽出処理の流れを説明するフローチャートである。
図２０に示すように、まず、度数分布生成部２２２が、各近接ドット対を順次対象として、以下のループ処理を実行する。
【００７４】
度数分布生成部２２２は、まず、近接ドット対の２つのドットの座標（Ｘ１，Ｙ１）、（Ｘ２，Ｙ２）を取得し（ステップ２００１）、この近接ドット対がなす角度θを、下式により計算する（ステップ２００２）。そして、得られた角度θの、度数分布データの度数を１加算する（ステップ２００３）。
θ＝ｔａｎ-1｛（Ｙ１−Ｙ２）／（Ｘ１−Ｘ２）｝
【００７５】
全ての近接ドット対に対してステップ２００１〜２００３の処理が行われると、次に第１軸角度抽出部２２３が、生成された度数分布データに基づいて、第１軸角度を抽出する（ステップ２００４）。また、第１軸角度に沿ったドット間の基準間隔を算出する（ステップ２００５）。なお、基準間隔およびその検出方法の詳細は後述する。
【００７６】
次に、第２軸角度抽出部２２４が、度数分布データおよび第１軸角度に基づいて、第２軸角度を抽出し（ステップ２００６）、第２軸角度に沿ったドット間の基準間隔を算出する（ステップ２００７）。さらに、第３軸角度抽出部２２５が、度数分布データ、基準角度および第２軸角度に基づいて、第３軸角度を抽出し（ステップ２００８）、第３軸角度に沿ったドット間の基準間隔を算出する（ステップ２００９）。
【００７７】
図２１は、抽出された３方向の角度のイメージを示す図である。
図２１（ａ）に示すように並ぶドットが検出され、図２１（ｂ）に示すように第１軸角度が抽出されたものとする。この第１軸角度に対して９０度オフセットした基準角度を挟んで、第２軸角度と第３軸角度とが抽出されている。
【００７８】
＜整列角度の特定方法＞
次に、角度特定部２２６による整列角度の特定方法について詳細に説明する。
角度特定部２２６は、度数分布生成部２２２、第１軸角度抽出部２２３、第２軸角度抽出部２２４、第３軸角度抽出部２２５により抽出された第１軸角度、第２軸角度、第３軸角度に基づき、ドットの整列角度を特定し出力する。具体的には、ドット本来の配列の方向に対応する２方向のドットの整列方向（図１４ではＸ軸およびＹ軸と記載）の角度が特定される。この整列角度の特定は、以下の手順で行われる。
【００７９】
角度特定部２２６は、まず、第１軸角度、第２軸角度、第３軸角度と、直前の画像フレーム（以下、前フレームと呼ぶ）に対する復号部３００による復号の成否の情報を取得する。前フレームに対する復号が成功した場合、角度特定部２２６は、第１軸角度、第２軸角度、第３軸角度のうち、前フレームにおいて特定した整列角度に近い２つを選んで整列角度とする。前フレームと現フレームとは連続的に読み取られているため、適切な整列角度は大きく変わらないと考えられる。ただし、画像処理装置１０がペン・デバイスである場合、撮像部１００と紙面との位置関係が随時変化する。そこで、前フレームにおいて特定した整列角度と同一ではなく、近い角度が選ばれる。
【００８０】
前フレームに対する復号が失敗した場合、角度特定部２２６は、例えば次のようにして２方向の整列角度を特定する。
第１軸角度、第２軸角度、第３軸角度の全てが抽出されている場合、第１軸角度と、第２軸角度または第３軸角度のうちで基準角度に近い方とを選び、整列角度とする。
第３軸角度が抽出されなかった場合、角度特定部２２６は、第１軸角度と第２軸角度とを選び、整列角度とする。第３軸角度が抽出されない場合とは、度数分布データにおいて、基準角度に対して第２軸角度と対称な角度を中心とする一定の範囲内に出現度数の多い角度が存在しない場合、第２軸角度と基準角度とが一致している場合などである。
また、第２軸角度も抽出されなかった場合、角度特定部２２６は、第１軸角度と、第１軸角度に対して一定角度オフセットした基準角度とを整列角度とする。第２軸角度が抽出されない場合とは、度数分布データにおいて、基準角度を中心とする一定の範囲に出現度数の多い角度が存在しない場合などである。
【００８１】
さらに、角度特定部２２６は、所定の画像フレームで復号に失敗した場合に、次の画像フレームにおける整列角度として、復号に失敗した画像フレームとは異なる角度を選ぶようにしても良い。具体的には例えば、第１軸角度と第２軸角度を整列角度として復号に失敗した場合に、次の画像フレームでは、第１軸角度と第３軸角度とを整列角度とする、第２軸角度と第３軸角度とを整列角度とする、等である。
【００８２】
＜基準間隔の算出方法＞
次に、第１軸角度抽出部２２３、第２軸角度抽出部２２４、第３軸角度抽出部２２５による基準間隔の算出方法について説明する。
基準間隔とは、一定の方向に沿って並ぶ近接ドット対におけるドット間距離の平均値である。ただし、ドット間距離が突出して大きい近接ドット対を排除するため、一定の閾値（最大ドット間距離）を設け、ドット間距離がこの閾値以下である近接ドット対に関して、平均値を計算する。この閾値は、例えば、次のようにして決定される。
【００８３】
まず、度数分布生成部２２２が、近接ドット対検出部２２１により検出された近接ドット対のドット間距離の度数分布データを生成する。この度数分布データは、近接ドット対のドット間距離の値ごとに、その出現度数を積算したデータである。そして、出現度数が最大であるドット間距離よりも若干長い距離を閾値とする。図２２に、ドット間距離の度数分布の例を視覚的に表現したヒストグラムを示す。図２２において、出現頻度最大のドット間距離よりも若干長い距離に閾値が設定されている。
【００８４】
第１軸角度抽出部２２３は、第１軸角度に沿って並ぶ近接ドット対のうち、ドット間距離が上記のようにして求めた閾値以下のものを抽出する。そして、ドット間距離の平均値を計算し、第１軸方向のドットの基準間隔とする。なお、各種の誤差を考慮し、近接ドット対がなす角度は、第１軸角度に対して一定の幅（−α度から＋α度）を含むものとする。すなわち、近接ドット対がなす角度が第１基準角度±αである近接ドット対が、第１軸角度に沿って並ぶ近接ドット対である。
【００８５】
同様にして、第２軸角度抽出部２２４は、第２軸角度に沿って並ぶ近接ドット対のうち、ドット間距離が上記のようにして求めた閾値以下のものを抽出し、第２軸方向のドットの基準間隔を算出する。また、第３軸角度抽出部２２５は、第３軸角度に沿って並ぶ近接ドット対のうち、ドット間距離が上記のようにして求めた閾値以下のものを抽出し、第３軸方向のドットの基準間隔を算出する。
【００８６】
角度特定部２２６は、第１軸角度抽出部２２３、第２軸角度抽出部２２４、第３軸角度抽出部２２５から各々の方向の基準間隔を取得する。そして、整列角度として特定された方向（図１４のＸ軸およびＹ軸）の基準間隔を選択し、整列角度と共に出力する。この整列角度および整列角度における基準間隔の情報は、同期化部２３０において同期化を行うための同期ラインの特定に用いられる。
【００８７】
＜同期化部の機能＞
次に、同期化部２３０の機能についてさらに詳細に説明する。
図２３は、同期化部２３０の機能構成を示す図である。
同期化部２３０は、前処理として同期原点および同期基準角度を決定する同期原点決定部２３１および同期基準角度決定部２３２と、決定された同期原点および同期基準角度に基づいて同期化処理を行うライン同期部２３３とを備える。また、同期化部２３０は、同期結果に基づいて２次元ビット配列を生成するビット配列生成部２３４を備える。図２３に示すように、同期化部２３０には、位置検出部２１０により検出されたドットの画像フレーム上での位置情報（ＸＹ座標値）と、角度検出部２２０により検出されたドットの整列角度（Ｘ軸およびＹ軸）および基準間隔とが供給される。
【００８８】
同期原点決定部２３１は、位置検出部２１０により検出されたドットの画像フレーム上での位置情報（ＸＹ座標値）に基づき、同期を開始する同期原点を決定する。同期原点には、位置検出部２１０により検出された実際のドットの１つが割り当てられる。そして、同期原点は、２次元ビット配列の中心となる。同期原点の具体的な決定方法については後述する。
【００８９】
同期基準角度決定部２３２は、角度検出部２２０により検出されたドットの整列角度（Ｘ軸およびＹ軸）および基準間隔に基づき、同期基準角度を決定する。同期基準角度とは、同期原点で交差するＸ軸およびＹ軸の回転角度である。Ｘ軸およびＹ軸の方向は、理想的には角度検出部２２０により検出されたドットの整列角度に一致する。しかし、角度検出部２２０では、近接ドット対のドット間隔という微小な距離を用いて角度を検出した。そこで、同期基準角度決定部２３２は、この整列角度に対して、さらに多くのドットの位置関係を用いた巨視的なスケールでの補正を行う。これにより、Ｘ軸およびＹ軸の回転角度の精度が向上する。同期基準角度としてのＸ軸およびＹ軸の回転角度の具体的な決定方法については後述する。
【００９０】
ライン同期部２３３は、同期原点から外側へ、ライン（格子線）ごとの同期を取りながら順に格子線を引くことにより、同期用の格子を生成する。これにより、予め用意された固定的な格子ではなく、撮像画像の歪みにも個別に対応した格子が動的に生成される。格子の具体的な生成方法については後述する。
【００９１】
ビット配列生成部２３４は、ライン同期部２３３により生成された格子に基づき、２次元のビット配列を生成する。具体的には、ビット配列は、格子点上にドットが有る場合には１を、ドットが無い場合には０を配置することにより生成される。なお、撮像部１００の光学系において、光を誘導する鏡の数によっては、撮像画像が反転（いわゆる鏡像反転）している場合がある。この場合、ビット配列生成部２３４は、生成したビット配列を反転させて出力する。
【００９２】
図２４は、同期化部２３０による処理の全体的な流れを示すフローチャートである。
図２４に示すように、同期化部２３０において、まず同期原点決定部２３１が、同期原点を決定する（ステップ２４０１）。次に、決定された同期原点に基づいて、同期基準角度決定部２３２が、２方向（Ｘ軸方向およびＹ軸方向）の同期基準角度を決定する（ステップ２４０２、２４０３）。なお、２方向の同期基準角度の決定順は、図２４に示す順番に限定されない。
【００９３】
次に、決定された同期原点および同期基準角度に基づいて、ライン同期部２３３が、４方向（Ｘ軸のプラス方向およびマイナス方向、Ｙ軸のプラス方向およびマイナス方向）にライン同期を行う（ステップ２４０４〜２４０７）。なお、４方向のライン同期の実行順は、図２４に示す順番に限定されない。
最後に、ビット配列生成部２３４が、ライン同期によって生成された同期用の格子を用いて、ドット配列から２次元のビット配列を生成する(ステップ２４０８)。
【００９４】
＜同期原点の決定＞
次に、同期原点決定部２３１による同期原点の決定方法および同期基準角度決定部２３２による同期基準角度の決定方法について詳細に説明する。
図２５は、同期原点決定部２３１による同期原点の決定方法を説明する図である。
同期原点決定部２３１は、まず、位置検出部２１０から取得した位置情報に基づき、検出された複数のドットの重心位置の座標を計算する。重心位置の座標は、全てのドットの座標値を、Ｘ座標およびＹ座標についてそれぞれ加算し、ドットの数で除算することによって得られる。図２５（ａ）において、白丸（○）で示した場所が重心位置であるものとする。
【００９５】
次に、同期原点決定部２３１は、重心位置から各ドットまでの距離を計算し、重心位置に最も近いドットを同期原点とする。図２５（ｂ）において、実線の矢印で指示したドットが、白丸（○）で示した重心位置から最も近い位置に存在する。したがって、このドットが同期原点となる。
【００９６】
図２６は、同期原点決定部２３１による同期原点の決定処理を説明するフローチャートである。
図２６を参照すると、同期原点決定部２３１は、まず、複数のドットの重心位置の座標を算出する（ステップ２６０１）。そして、各ドットを順次対象として、以下のループ処理を行う。
【００９７】
同期原点決定部２３１は、重心位置からドットまでの距離（ｄｉｓｔ）を算出する（ステップ２６０２）。そして、それまでに算出されている重心位置からドットまでの最小距離（ｄｉｓｔ＿ｍｉｎ）とステップ２６０２で算出した距離（ｄｉｓｔ）とを比較する。そして、距離（ｄｉｓｔ）の方が小さい場合は（ステップ２６０３でＹｅｓ）、同期原点決定部２３１は、最小距離（ｄｉｓｔ＿ｍｉｎ）を距離（ｄｉｓｔ）の値に更新し、ドットの座標を保存する（ステップ２６０４）。一方、距離（ｄｉｓｔ）の方が大きい場合は（ステップ２６０３でＮｏ）、現在の最小距離（ｄｉｓｔ＿ｍｉｎ）が、そのまま保持される。
【００９８】
＜同期基準角度の決定＞
図２７は、同期基準角度決定部２３２による同期基準角度の決定方法を説明する図である。
同期基準角度決定部２３２は、まず、ドットの座標値を、同期原点を原点とする相対座標に変換する（図２７（ａ）参照）。そして、変換された座標値を、角度検出部２２０により検出された整列角度のうち、Ｙ軸に関する整列角度にしたがって回転させる（図２７（ｂ）参照）。次に、同期基準角度決定部２３２は、同期原点を通る線を中心とする５本の縦格子線を生成し、図２７（ｂ）で得られた座標空間に重ねる（図２７（ｃ）参照）。ここで、縦格子線の間隔は、角度検出部２２０により検出されたドットの基準間隔である。縦格子線を５本としたのは、Ｘ軸方向へもある程度の幅を持たせてサンプルを得るためである。なお、生成する縦格子線の数は、５本に限定するものではない。
【００９９】
次に、同期基準角度決定部２３２は、５本の縦格子線の範囲内に存在するドットに関して、縦格子線からのずれ量を計算する。そして、縦格子線ごとに分散を計算し、算出値を積算する（図２７（ｄ）参照）。さらに、同期基準角度決定部２３２は、各ドットの座標値を、同期原点を中心として一定の範囲で回転させながら、所定の角度ごとに、同様の処理を行う。具体的には例えば、図２７（ｂ）で用いた整列角度に対して、−８度から＋８度の範囲で０．５度ずつ回転させ、各角度において、縦格子線ごとの分散を求め、積算する。そして、分散の積算値が最小となるときの角度を、同期基準角度としてのＹ軸の回転角度とする。
【０１００】
同期基準角度決定部２３２は、Ｘ軸に対しても同様の処理を行い、同期基準角度としてのＸ軸の回転角度を決定する。なお、Ｙ軸の回転角度とＸ軸の回転角度は、どちらを先に求めても良いし、並列に処理を行っても良い。また、Ｘ軸またはＹ軸のいずれかの処理を行う場合に、予め整列角度に９０度を加算しておけば、処理が行われる座標空間を共通させることができるため、処理が軽くなる。
【０１０１】
図２８は、同期基準角度決定部２３２による同期基準角度の決定処理を説明するフローチャートである。なお、ここでは、角度検出部２２０により検出された整列角度のうちの１つに対する処理の動作を説明する。上述したように、他の整列角度に対しても同様の動作により同期基準角度が決定される。
同期基準角度決定部２３２は、角度検出部２２０により検出された所定の整列角度に対して一定の範囲で回転させながら、各々の角度（θ）を対象として、図２８に示すループ処理を行う。このループ処理において、同期基準角度決定部２３２は、まず、ドット情報取得処理を行う（ステップ２８０１）。そして、得られたドット情報に基づき、分散積算処理を行う（ステップ２８０２）。
【０１０２】
図２９は、ドット情報取得処理の詳細を説明するフローチャートである。
同期基準角度決定部２３２は、各ドットを順次対象として、図２９に示すループ処理を実行する。このループ処理において、同期基準角度決定部２３２は、まず同期原点を中心として角度（θ）だけ回転させたドットのＸ座標（ＲｏｔＸ）を取得する(ステップ２９０１)。次に、Ｘ座標（ＲｏｔＸ）の縦格子線に対するずれ量（ｄｉｆｆ）を取得する（ステップ２９０２）。そして、得られたずれ量（ｄｉｆｆ）を保存し（ステップ２９０３）、処理対象となったドット（図２７の例では５本の縦格子線の範囲内に存在するドット）の数を１加算する（ステップ２９０４）。
【０１０３】
図３０は、分散積算処理の詳細を説明するフローチャートである。
同期基準角度決定部２３２は、各縦格子線を順次対象として、図３０に示すループ処理を実行する。このループ処理において、同期基準角度決定部２３２は、まず、図２９のステップ２９０４で加算されて最終的に得られたドット数（ｃｎｔ）を取得する（ステップ３００１）。そして、ドット数（ｃｎｔ）が２未満である場合は、当該縦格子線に対する処理を終了する（ステップ３００２でＮｏ）。
【０１０４】
一方、ドット数（ｃｎｔ）が２以上であった場合（ステップ３００２でＹｅｓ）、同期基準角度決定部２３２は、当該縦格子線に対応する各ドットを順次対象としながら、次のループ処理を実行する。まず、図２９のステップ２９０２、２９０３で得られたドットのずれ量（ｄｉｆｆ）を取得し（ステップ３００３）、積算する（ステップ３００４）。また、ずれ量（ｄｉｆｆ）を二乗した値を積算する（ステップ３００５）。
【０１０５】
ステップ３００３〜３００５のループ処理が済んだ後、同期基準角度決定部２３２は、当該縦格子線に関するずれ量の分散（ｖａｒ）を、下式により計算し（ステップ３００６）、積算する（ステップ３００７）。
ｖａｒ＝（ｃｎｔ×Ｓdiff2−Ｓｄｉｆｆ×Ｓｄｉｆｆ）／（ｃｎｔ×ｃｎｔ）
ただし、Ｓdiff2はステップ３００５で求めたずれ量（ｄｉｆｆ）の二乗の積算値、Ｓｄｉｆｆはステップ３００４で求めたずれ量（ｄｉｆｆ）の積算値である。
【０１０６】
再び図２８を参照すると、同期基準角度決定部２３２は、ステップ２８０２の分散積算処理によって得られた縦格子線に対するドットのずれ量の分散の積算値（Ｓｖａｒ）と、それまでに得られた最小分散積算値（Ｓｖａｒ＿ｍｉｎ）とを比較する。そして、分散積算値（Ｓｖａｒ）の方が小さい場合は（ステップ２８０３でＹｅｓ）、最小分散積算値（Ｓｖａｒ＿ｍｉｎ）の値を分散積算値（Ｓｖａｒ）の値に更新し（ステップ２８０４）、同期基準角度（θｅｓｔ）をこのときの角度（θ）に更新する（ステップ２８０５）。一方、分散積算値（Ｓｖａｒ）が最小分散積算値（Ｓｖａｒ＿ｍｉｎ）以上である場合は（ステップ２８０３でＮｏ）、現在の最小分散積算値（Ｓｖａｒ＿ｍｉｎ）および同期基準角度（θｅｓｔ）が、そのまま保持される。
【０１０７】
＜ライン同期および格子の生成＞
次に、ライン同期部２３３によるライン同期および格子の生成方法について詳細に説明する。
図３１は、ライン同期部２３３によるライン同期の概念を説明する図である。
図３１に示すように、ライン同期部２３３は、同期原点から、Ｘ軸のプラス方向およびマイナス方向、Ｙ軸のプラス方向およびマイナス方向の合計４方向に、ライン（格子線）ごとの同期を取りながら順に格子線を引くことにより、同期用の格子を生成する。
【０１０８】
図３２は、画像フレームに対して同期用のドットを重ねた様子を示す図である。
図３２（ａ）のように画像に歪みがない場合は、直交格子のマス目が各ドットの位置に合うため、正常に同期化を行うことができる。一方、図３２（ｂ）のように画像に歪みがある場合は、予め設定された固定的な格子では、マス目が各ドットの位置に対応しないため、同期化を行うことができない。
そこで、本実施形態のライン同期部２３３は、同期原点から順に、実際のドットの位置に応じて傾きおよび間隔を補正しながらライン同期を行うことにより、画像に歪みがある場合でも対応可能な格子を動的に生成する。
【０１０９】
図３３は、ライン同期部２３３による格子線の生成方法を説明する図である。
ライン同期部２３３は、まず、ドットの座標値を、所定の同期基準点を原点とする相対座標に変換する（図３３（ａ）参照）。そして、変換された座標値を、Ｙ軸に関する同期線角度にしたがって回転させる（図３３（ｂ）参照）。次に、ライン同期部２３３は、格子境界の内側に存在するドットを検出し（図３３（ｃ）参照）、格子線の位置と格子境界内のドットの座標値とを保存する（図３３（ｄ）参照）。
【０１１０】
ここで、同期基準点とは、個々の格子線を生成する際の位置の基準となる点である。初期的には同期原点決定部２３１により決定された同期原点が同期基準点となり、格子線が生成されるのに伴って、次の格子線のための同期基準点が生成される。この同期基準点は、例えばＹ軸に沿った格子線が生成される際には、同期原点を通るＸ軸上に生成される（すなわち、同期基準点は、格子線の切片である）。新たに生成される同期基準点の位置は、直前に生成された格子線の最終的な位置に応じて決定される。
【０１１１】
新たに生成された同期基準点と直前に生成された格子線における同期基準点との間の距離を同期間隔と呼ぶ。同期間隔は、初期的には角度検出部２２０により算出された基準間隔が用いられる。そして、格子線が生成されるたびに、最後に生成された格子線における同期基準点と直前に生成された格子線における同期基準点との間隔に更新される。
【０１１２】
また、同基線角度とは、現在の同期基準点に対して生成される格子線の傾きである。初期的には同期基準角度決定部２３２により決定された同期基準角度が同基線角度となり、新たに格子線が生成される際には、直前に生成された格子線の最終的な傾きが新たに生成される格子線の同基線角度となる。
【０１１３】
また、格子境界とは、生成された格子線に対応するドットとその他のドットとを区切る仮想的な線である。図３３（ｃ）、（ｄ）に示したように、格子境界に挟まれた帯状領域に存在するドットが、格子線に対応するドットとなる。格子線から格子境界までの距離は、直前に生成された格子線とその前に生成された格子線の位置に応じて決定される。
【０１１４】
ライン同期部２３３は、上記のようにして格子線を生成した後、格子境界内のドットの位置に基づいて、生成した格子線の傾きおよび同期基準点の位置を補正する。同期基準点が補正されることにより、同期間隔も変更されることとなる。また、補正された最終的な格子線の傾きおよび同期基準点の位置（格子線の位置）に基づいて、上述したように、次に生成される格子線に関する同基線角度および同期間隔と、格子境界とが決定される。
【０１１５】
ライン同期部２３３は、格子線の位置と格子境界内のドットの位置とに基づいて回帰直線を計算し、格子線の補正を行う。本実施形態では、回帰直線の計算にＲＭＡ（Reduced Major Axis）回帰を用いることとする。ＲＭＡ回帰によれば、回帰直線は、次式によって求められる。
【０１１６】
【数１】
2009181347.tif 000003
ここで、σxは格子境界内のドットにおけるＸ座標の標準偏差であり、σyはＹ座標の標準偏差である。この回帰直線の傾きの符号は、相関関数の符号によって判定される。相関関数Ｒxyは、次式によって求められる。
【０１１７】
【数２】
2009181347.tif 000004
なお、実際には、Ｒxyの分母（ＳxＳy）は常に正なので、分子（Ｓxy）の符号によって回帰直線の傾きが判定されることとなる。
【０１１８】
図３４は、格子線の補正によって同期基準点が変更され、同期間隔が補正される様子を示す図である。また、図３４には、格子境界の決定方法も示されている。
まず、直前に生成された格子線における同期基準点Ａ０から同期間隔Ｐ０の位置に同期基準点Ａ１が生成され、この同期基準点Ａ１を通る格子線および格子境界Ｂ１が設定される（図３４（ａ））。この格子境界内のドットの位置に基づいて格子線が補正される。次に、格子線が補正されたことにより同期基準点Ａ１が移動し、同期基準点Ａ１’となる（図３４（ｂ））。このとき、同期基準点Ａ０と補正後の同期基準点Ａ１’との間の距離が、補正された新たな同期間隔Ｐ１である（図３４（ｃ））。
【０１１９】
次に、同期基準点Ａ０と補正前の同期基準点Ａ１の中間点Ｍ１が計算され、補正後の同期基準点Ａ１’から点Ｍ１までの距離が新たな格子境界Ｂ２とされる（図３４（ｄ））。そして、同期基準点Ａ１’から同期間隔Ｐ１の位置に、次の同期基準点Ａ２が生成され（図３４（ｅ））、この同期基準点Ａ２を通る格子線および格子境界Ｂ２が設定される（図３４（ｆ））。
【０１２０】
図３５は、ライン同期部２３３の動作を示すフローチャートである。
ライン同期部２３３は、新たな格子線を引くたびに、この新たな格子線を対象として、図３５に示すループ処理を実行する。このループ処理において、ライン同期部２３３は、まず格子境界内のドットの同期化処理を実行する（ステップ３５０１）。そして、格子境界内でドットが検出されたならば、同期線角度および同期間隔を補正し、次の格子線における格子境界を設定する（ステップ３５０２、３５０３）。
【０１２１】
図３６は、ドット同期化処理の詳細を説明するフローチャートである。
ライン同期部２３３は、各ドットを順次対象として、図３６に示すループ処理を実行する。このループ処理において、ライン同期部２３３は、まず同期基準点（座標：（ＢａｓｅＸ，ＢａｓｅＹ））とドットとの間の距離（ｄｉｆｆＸ，ｄｉｆｆＹ）を計算する（ステップ３６０１）。次に、ライン同期部２３３は、同期基準点を中心として同期線角度だけ回転させたドットの位置（Ｘ軸方向同期時：ＲｏｔＸ、Ｙ軸方向同期時：ＲｏｔＹ）を取得する（ステップ３６０２）。
【０１２２】
次に、ライン同期部２３３は、回転後のドットの位置が格子境界内か否かを判断する。格子境界内である場合（ステップ３６０３でＹｅｓ）、ライン同期部２３３は、格子線番号（格子線の識別情報）および回転前のドットの座標（ｘ，ｙ）を保存し（ステップ３６０４、３６０５）、格子境界内に入ったドットの数をカウントアップする（ステップ３６０６）。一方、回転後のドットの位置が格子境界の外である場合（ステップ３６０３でＮｏ）、ライン同期部２３３は、このドットを現在の格子線に関する処理から除外する。
【０１２３】
図３７は、同期線角度と同期間隔の補正処理および格子境界の設定処理の詳細を説明するフローチャートである。
ライン同期部２３３は、まず、格子境界内のドットの回転前の座標の平均（ＡｖｅＸ，ＡｖｅＹ）および分散（ＶａｒＸ，ＶａｒＹ）を取得する（ステップ３７０１）。そして、格子線の傾きである同期線角度（ＬｉｎｅＳｌｏｐｅ）を下式により補正する（ステップ３７０２）。
ＬｉｎｅＳｌｏｐｅ＝ｓｑｒｔ（ＶａｒＹ／ＶａｒＸ））      （ｓｑｒｔは平方根）
ここで、相関係数が負である場合は、同期線角度の傾きの符号を負に反転する（ステップ３７０３、３７０４）。
【０１２４】
次に、ライン同期部２３３は、格子線の切片である同期基準点（ＬｉｎｅＩｎｔｅｒｃｅｐｔ）を下式により補正する（ステップ３７０５）。
ＬｉｎｅＩｎｔｅｒｃｅｐｔ＝ＡｖｅＹ−ＬｉｎｅＳｌｏｐｅ・ＡｖｅＸ
【０１２５】
次に、ライン同期部２３３は、次の格子線に関するライン同期処理における回転角度（図３６のステップ３６０２参照）を、ｔａｎ-1（ＬｉｎｅＳｌｏｐｅ）により算出する（ステップ３７０６）。また、同期線角度の絶対値（ＩｆＡｂｓＬｉｎｅＳｌｏｐｅ）を求める（ステップ３７０７）。そして、ライン同期部２３３は、現在の処理がＸ軸方向の同期化であれば、同期基準点のＸ座標を補正し、Ｙ軸方向の同期化であれば、同期基準点のＹ座標を補正する（ステップ３７０８、３７０９、３７１０）。同期基準点の補正は、下記の計算による。
Ｘ座標：ＢａｓｅＸnew＝（ｙ−ＬｉｎｅＩｎｔｅｒｃｅｐｔ）／ＬｉｎｅＳｌｏｐｅ
Ｙ座標：ＢａｓｅＹnew＝ＬｉｎｅＳｌｏｐｅ・Ｘ＋ＬｉｎｅＩｎｔｅｒｃｅｐｔ
【０１２６】
次に、ライン同期部２３３は、補正した同期基準点の変位（ｄｉｆｆＸ，ｄｉｆｆＹ）を、次のように計算する（ステップ３７１１）。
ｄｉｆｆＸ＝ＢａｓｅＸnew−ＢａｓｅＸ
ｄｉｆｆＹ＝ＢａｓｅＹnew−ＢａｓｅＹ
【０１２７】
さらに、ライン同期部２３３は、同期間隔（Ｐｉｔｃｈ）を更新する（ステップ３７１２）。
Ｐｉｔｃｈnew＝ｓｑｒｔ（ｄｉｆｆＸ2＋ｄｉｆｆＹ2）
また、次の格子線に関するライン同期処理における格子境界（ＢｏｕｎｄａｒｙＬｉｍｉｔ）を補正する（ステップ３７１３）。
ＢｏｕｎｄａｒｙＬｉｍｉｔ＝Ｐｉｔｃｈnew−Ｐｉｔｃｈ／２
【０１２８】
再び図３５を参照すると、ライン同期部２３３は、図３７で詳細を説明したステップ３５０３により補正され、更新された各値を用いて、次の格子線における同期基準点の位置（ＢａｓｅＸnext，ＢａｓｅＹnext）を算出する（ステップ３５０４）。
ＢａｓｅＸnext＝ＢａｓｅＸ＋（Ｐｉｔｃｈnew・Ｃｏｓθy＋Ｐｉｔｃｈnew・Ｓｉｎθy）
ＢａｓｅＹnext＝ＢａｓｅＹ−（Ｐｉｔｃｈnew・Ｓｉｎθx−Ｐｉｔｃｈnew・Ｃｏｓθy）
【０１２９】
＜ペン・デバイスの構成＞
次に、本実施の形態における画像処理装置１０の具体的なハードウェア構成について説明する。ここでは、画像処理装置１０を実現するペン・デバイスの構成例について説明する。
図３８は、ペン・デバイスの機構を示した図である。
図示するように、ペン・デバイス６０は、ペン全体の動作を制御する制御回路６１を備える。制御回路６１は、入力画像から検出した符号画像を処理する画像処理部６１ａと、そこでの処理結果から識別情報及び座標情報を抽出するデータ処理部６１ｂとを含む。また、特に図示しないが、制御回路６１は、これら画像処理部６１ａおよびデータ処理部６１ｂを動作させるためのプログラムを格納する不揮発性メモリとを含む。この制御回路６１には、ペン・デバイス６０による筆記動作をペンチップ６９に加わる圧力によって検出する圧力センサ６２が接続されている。また、媒体上に赤外光を照射する赤外ＬＥＤ６３と、画像を入力する赤外ＣＭＯＳ６４も接続されている。さらに、識別情報及び座標情報を記憶するための情報メモリ６５と、外部装置と通信するための通信回路６６と、ペンを駆動するためのバッテリ６７と、ペンの識別情報（ペンＩＤ）を記憶するペンＩＤメモリ６８も接続されている。
【０１３０】
図９に示した画像処理装置１０において、撮像部１００は、例えば、図３８の赤外ＣＭＯＳ６４にて実現される。また、ドット解析部２００は、例えば、図３８の画像処理部６１ａにて実現される。さらに、復号部３００は、例えば、図３８のデータ処理部６１ｂにて実現される。なお、画像処理装置１０は、図３８に示すようなペン・デバイス６０の他、画像処理部６１ａ又はデータ処理部６１ｂにて実現される機能を、例えば、汎用のコンピュータで実現しても良い。
【０１３１】
画像処理部６１ａおよびデータ処理部６１ｂの機能を実現するプログラムは、通信手段を介して提供したり、ＣＤ−ＲＯＭ等の記録媒体に格納して提供したりすることができる。また、制御回路６１に含まれる上述した不揮発性メモリに格納して提供しても良い。
【図面の簡単な説明】
【０１３２】
【図１】本実施形態で用いられる単位符号パターン、情報ブロック、紙面（媒体）の関係を示す図である。
【図２】ｍＣｎ方式における単位符号パターンの例を示す図である。
【図３】図２に示した単位符号パターンの種類を網羅的に示した図である。
【図４】９Ｃ２方式における単位符号パターンとパターン値との対応を示す図である。
【図５】９Ｃ２方式における同期パターンの例を示す図である。
【図６】情報ブロックの構成例を示す図である。
【図７】本実施形態における識別情報と座標情報を表現するためのレイアウトの例を示す図である。
【図８】Ｍ系列を用いた座標情報の符号化の例を示す図である。
【図９】本実施形態の画像処理装置の機能構成例を示す図である。
【図１０】本実施形態のドット解析部および復号部による処理の流れを示すフローチャートである。
【図１１−１】撮像画像の例を示す図であり、ドットの整列角度が０度の場合の撮像画像の例である。
【図１１−２】撮像画像の例を示す図であり、ドットの整列角度が４５度の場合の撮像画像の例である。
【図１２】図１１−１に対して画像の上方が奥に、下方が手前に傾いた状態の撮像画像を示す図である。
【図１３】図１１−２に対して画像の上方が奥に、下方が手前に傾いた状態の撮像画像を示す図である。
【図１４】本実施形態の角度検出部の機能構成を示す図である。
【図１５】ドットが検出された画像から、近接ドット対が検出された様子を示す図である。
【図１６】本実施形態における近接ドット対の検出方法の具体例を示す図である。
【図１７】本実施形態の近接ドット対検出部による近接ドット対の検出処理の流れを説明するフローチャートである。
【図１８】図１７のステップ１７０７に示す近接ドット対の判別処理の詳細を説明するフローチャートである。
【図１９】本実施形態の度数分布生成部により生成される近接ドット対がなす角度の度数分布の例を視覚的に表現したヒストグラムである。
【図２０】本実施形態の度数分布生成部、第１軸角度抽出部、第２軸角度抽出部、第３軸角度抽出部による第１軸角度、第２軸角度、第３軸角度の抽出処理の流れを説明するフローチャートである。
【図２１】本実施形態で抽出された３方向の角度のイメージを示す図である。
【図２２】本実施形態におけるドット間距離の度数分布の例を視覚的に表現したヒストグラムである。
【図２３】本実施形態の同期化部の機能構成を示す図である。
【図２４】同期化部による処理の全体的な流れを示すフローチャートである。
【図２５】本実施形態の同期原点決定部による同期原点の決定方法を説明する図である。
【図２６】同期原点決定部による同期原点の決定処理を説明するフローチャートである。
【図２７】本実施形態の同期基準角度決定部による同期基準角度の決定方法を説明する図である。
【図２８】同期基準角度決定部による同期基準角度の決定処理を説明するフローチャートである。
【図２９】同期基準角度決定部によるドット情報取得処理の詳細を説明するフローチャートである。
【図３０】同期基準角度決定部による分散積算処理の詳細を説明するフローチャートである。
【図３１】本実施形態のライン同期部によるライン同期の概念を説明する図である。
【図３２】画像フレームに対して同期用のドットを重ねた様子を示す図である。
【図３３】ライン同期部による格子線の生成方法を説明する図である。
【図３４】格子線の補正によって同期基準点が変更され、同期間隔が補正される様子を示す図である。
【図３５】ライン同期部の動作を示すフローチャートである。
【図３６】ドット同期化処理の詳細を説明するフローチャートである。
【図３７】同期線角度と同期間隔の補正処理および格子境界の設定処理の詳細を説明するフローチャートである。
【図３８】画像処理装置であるペン・デバイスの機構を示した図である。
【符号の説明】
【０１３３】
１０…画像処理装置、１００…撮像部、２００…ドット解析部、２１０…位置検出部、２２０…角度検出部、２３０…同期化部、２３１…同期原点決定部、２３２…同期基準角度決定部、２３３…ライン同期部、２３４…ビット配列生成部、３００…復号部
【図１】
2009181347.tif 000005
【図２】
2009181347.tif 000006
【図３】
2009181347.tif 000007
【図４】
2009181347.tif 000008
【図５】
2009181347.tif 000009
【図６】
2009181347.tif 000010
【図７】
2009181347.tif 000011
【図８】
2009181347.tif 000012
【図９】
2009181347.tif 000013
【図１０】
2009181347.tif 000014
【図１１−１】
2009181347.tif 000015
【図１１−２】
2009181347.tif 000016
【図１２】
2009181347.tif 000017
【図１３】
2009181347.tif 000018
【図１４】
2009181347.tif 000019
【図１５】
2009181347.tif 000020
【図１６】
2009181347.tif 000021
【図１７】
2009181347.tif 000022
【図１８】
2009181347.tif 000023
【図１９】
2009181347.tif 000024
【図２０】
2009181347.tif 000025
【図２１】
2009181347.tif 000026
【図２２】
2009181347.tif 000027
【図２３】
2009181347.tif 000028
【図２４】
2009181347.tif 000029
【図２５】
2009181347.tif 000030
【図２６】
2009181347.tif 000031
【図２７】
2009181347.tif 000032
【図２８】
2009181347.tif 000033
【図２９】
2009181347.tif 000034
【図３０】
2009181347.tif 000035
【図３１】
2009181347.tif 000036
【図３２】
2009181347.tif 000037
【図３３】
2009181347.tif 000038
【図３４】
2009181347.tif 000039
【図３５】
2009181347.tif 000040
【図３６】
2009181347.tif 000041
【図３７】
2009181347.tif 000042
【図３８】
2009181347.tif 000043