(57)【要約】【課題】装置への負荷が軽い処理で、パターン画像の位置を特定できるようにする。【解決手段】撮像部により撮像された画像から単位画像（ドット）を検出する検出部２１１と、一定の領域からなるディスク要素とこのディスク要素の周囲に設けられたリング要素とを備えるクオイト・フィルタを適用して、単位画像が検出された二値画像を走査し、ディスク要素に含まれるサイズの単位画像を検出した際の二値画像上でのクオイト・フィルタの位置に基づき、単位画像の位置情報を取得する座標計算部２１６とを備える。【選択図】図１１
2009175931.tif 000002
【特許請求の範囲】
【請求項１】
撮像装置により撮像された画像から単位画像を検出する検出部と、
一定の領域からなるディスク要素と当該ディスク要素の周囲に設けられたリング要素とを備えるフィルタを適用して、前記単位画像が検出された二値画像を走査し、当該ディスク要素に含まれるサイズの単位画像を検出した際の当該二値画像上での当該フィルタの位置に基づき、当該単位画像の位置情報を取得する位置情報取得部と
を備えることを特徴とする画像処理装置。
【請求項２】
前記位置情報取得部は、前記フィルタを適用して検出した画素を含む一定領域に存在する複数の画素の画素値に基づいて、前記単位画像の特定点を求め、当該特定点の位置情報を当該単位画像の位置情報とすることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記位置情報取得部は、前記ディスク要素のサイズが異なる複数の前記フィルタをそれぞれ適用して前記二値画像を走査し、個別に前記単位画像を検出することを特徴とする請求項１に記載の画像処理装置。
【請求項４】
前記位置情報取得部は、複数の前記フィルタを適用した検出のうち、サイズの小さい前記フィルタによる検出を優先させることを特徴とする請求項３に記載の画像処理装置。
【請求項５】
前記位置情報取得部は、サイズの小さい前記フィルタから順に適用して前記二値画像を走査することを特徴とする請求項２に記載の画像処理装置。
【請求項６】
前記位置情報取得部は、所定の前記フィルタで検出された前記単位画像を前記二値画像から順次除去することを特徴とする請求項２に記載の画像処理装置。
【請求項７】
単位画像が形成された媒体表面を撮像する撮像部と、
前記撮像部により撮像された画像から前記単位画像を検出する検出部と、
一定の領域からなるディスク要素と当該ディスク要素の周囲に設けられたリング要素とを備えるフィルタを適用して、前記単位画像が検出された二値画像を走査し、当該ディスク要素に含まれるサイズの単位画像を検出した際の当該二値画像上での当該フィルタの位置に基づき、当該単位画像の位置情報を取得する位置情報取得部と
を備えることを特徴とするペン・デバイス。
【請求項８】
前記位置情報取得部は、前記フィルタを適用して検出した画素を含む一定領域に存在する複数の画素の画素値に基づいて、前記単位画像の特定点を求め、当該特定点の位置情報を当該単位画像の位置情報とすることを特徴とする請求項７に記載のペン・デバイス。
【請求項９】
前記位置情報取得部は、前記ディスク要素のサイズが異なる複数の前記フィルタをそれぞれ適用して前記二値画像を走査し、個別に前記単位画像を検出することを特徴とする請求項７に記載のペン・デバイス。
【請求項１０】
前記位置情報取得部は、複数の前記フィルタを適用した検出のうち、サイズの小さい前記フィルタによる検出を優先させることを特徴とする請求項９に記載のペン・デバイス。
【請求項１１】
コンピュータに、
撮像装置により撮像された画像から単位画像を検出する処理と、
一定の領域からなるディスク要素と当該ディスク要素の周囲に設けられたリング要素とを備えるフィルタを適用して、前記単位画像が検出された二値画像を走査し、当該ディスク要素に含まれるサイズの単位画像を検出した際の当該二値画像上での当該フィルタの位置に基づき、当該単位画像の位置情報を取得する処理と
を実行させるためのプログラム。
【請求項１２】
前記単位画像の位置情報を取得する処理では、前記フィルタを適用して検出した画素を含む一定領域に存在する複数の画素の画素値に基づいて、前記単位画像の特定点を求め、当該特定点の位置情報を当該単位画像の位置情報とすることを特徴とする請求項１１に記載のプログラム。
【請求項１３】
前記単位画像の位置情報を取得する処理では、前記ディスク要素のサイズが異なる複数の前記フィルタをそれぞれ適用して前記二値画像を走査し、個別に前記単位画像を検出することを特徴とする請求項１１に記載のプログラム。
【請求項１４】
前記単位画像の位置情報を取得する処理では、複数の前記フィルタを適用した検出のうち、サイズの小さい前記フィルタによる検出を優先させることを特徴とする請求項１３に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、ペン・デバイスおよびプログラムに関する。
【背景技術】
【０００２】
印刷用紙等の媒体上にコード化された情報を表すパターン画像や特定の意味を付与されたパターン画像を埋め込み、読み取り装置で読み取ってコード情報を復号したり付与された意味に応じて装置を制御したりすることが、従来から行われている。パターン画像により表される情報としては、パターン画像が埋め込まれた媒体自体の識別情報や媒体に記録された文書の識別情報、媒体上の位置を表す位置情報などがある。
【０００３】
この種の技術において、パターン画像を読み取る際には、パターン画像の有無を判断するだけでなく、パターン画像の配置を認識することが必要である。
特許文献１には、仮中心画素から４方向に画像を走査して、ドット画像の周囲にある白い部分の位置を検出し、仮中心の位置から白い部分までの距離に基づいてドットの位置を特定する技術が開示されている。
【０００４】
また、ドットのような微小な画像を検出する方法として、クオイト・フィルタ（Quoit Filter）を用いる方法が知られている。
特許文献２には、画像を撮像する光学系の点広がり関数からＱフィルタ（クオイト・フィルタ）を生成し、画像に対して適用することで微小な画像を検出する技術が開示されている。
【０００５】
【特許文献１】特開平６−２３１４６６号公報
【特許文献２】特開２００５−１６４４４６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
処理能力が制限されるペン・デバイスのような画像処理装置では、検出されたパターン画像の配置を認識するためにパターン画像の位置を特定する処理は、プロセッサの負荷ができるだけ軽い処理であることが望まれる。
【０００７】
本発明は、以上のような課題に鑑みてなされたものであり、装置への負荷が軽い処理で、パターン画像の位置を特定できるようにすることを目的とする。
【課題を解決するための手段】
【０００８】
請求項１に係る発明は、撮像装置により撮像された画像から単位画像を検出する検出部と、一定の領域からなるディスク要素と当該ディスク要素の周囲に設けられたリング要素とを備えるフィルタを適用して、前記単位画像が検出された二値画像を走査し、当該ディスク要素に含まれるサイズの単位画像を検出した際の当該二値画像上での当該フィルタの位置に基づき、当該単位画像の位置情報を取得する位置情報取得部とを備えることを特徴とする画像処理装置である。
請求項２に係る発明は、前記位置情報取得部は、前記フィルタを適用して検出した画素を含む一定領域に存在する複数の画素の画素値に基づいて、前記単位画像の特定点を求め、当該特定点の位置情報を当該単位画像の位置情報とすることを特徴とする請求項１に記載の画像処理装置である。
請求項３に係る発明は、前記位置情報取得部は、前記ディスク要素のサイズが異なる複数の前記フィルタをそれぞれ適用して前記二値画像を走査し、個別に前記単位画像を検出することを特徴とする請求項１に記載の画像処理装置である。
請求項４に係る発明は、前記位置情報取得部は、複数の前記フィルタを適用した検出のうち、サイズの小さい前記フィルタによる検出を優先させることを特徴とする請求項３に記載の画像処理装置である。
請求項５に係る発明は、前記位置情報取得部は、サイズの小さい前記フィルタから順に適用して前記二値画像を走査することを特徴とする請求項２に記載の画像処理装置である。
請求項６に係る発明は、前記位置情報取得部は、所定の前記フィルタで検出された前記単位画像を前記二値画像から順次除去することを特徴とする請求項２に記載の画像処理装置である。
請求項７に係る発明は、単位画像が形成された媒体表面を撮像する撮像部と、前記撮像部により撮像された画像から前記単位画像を検出する検出部と、一定の領域からなるディスク要素と当該ディスク要素の周囲に設けられたリング要素とを備えるフィルタを適用して、前記単位画像が検出された二値画像を走査し、当該ディスク要素に含まれるサイズの単位画像を検出した際の当該二値画像上での当該フィルタの位置に基づき、当該単位画像の位置情報を取得する位置情報取得部とを備えることを特徴とするペン・デバイスである。
請求項８に係る発明は、前記位置情報取得部は、前記フィルタを適用して検出した画素を含む一定領域に存在する複数の画素の画素値に基づいて、前記単位画像の特定点を求め、当該特定点の位置情報を当該単位画像の位置情報とすることを特徴とする請求項７に記載のペン・デバイスである。
請求項９に係る発明は、前記位置情報取得部は、前記ディスク要素のサイズが異なる複数の前記フィルタをそれぞれ適用して前記二値画像を走査し、個別に前記単位画像を検出することを特徴とする請求項７に記載のペン・デバイスである。
請求項１０に係る発明は、前記位置情報取得部は、複数の前記フィルタを適用した検出のうち、サイズの小さい前記フィルタによる検出を優先させることを特徴とする請求項９に記載のペン・デバイスである。
請求項１１に係る発明は、コンピュータに、撮像装置により撮像された画像から単位画像を検出する処理と、一定の領域からなるディスク要素と当該ディスク要素の周囲に設けられたリング要素とを備えるフィルタを適用して、前記単位画像が検出された二値画像を走査し、当該ディスク要素に含まれるサイズの単位画像を検出した際の当該二値画像上での当該フィルタの位置に基づき、当該単位画像の位置情報を取得する処理とを実行させるためのプログラムである。
請求項１２に係る発明は、前記単位画像の位置情報を取得する処理では、前記フィルタを適用して検出した画素を含む一定領域に存在する複数の画素の画素値に基づいて、前記単位画像の特定点を求め、当該特定点の位置情報を当該単位画像の位置情報とすることを特徴とする請求項１１に記載のプログラムである。
請求項１３に係る発明は、前記単位画像の位置情報を取得する処理では、前記ディスク要素のサイズが異なる複数の前記フィルタをそれぞれ適用して前記二値画像を走査し、個別に前記単位画像を検出することを特徴とする請求項１１に記載のプログラムである。
請求項１４に係る発明は、前記単位画像の位置情報を取得する処理では、複数の前記フィルタを適用した検出のうち、サイズの小さい前記フィルタによる検出を優先させることを特徴とする請求項１３に記載のプログラムである。
【発明の効果】
【０００９】
請求項１に係る発明によれば、フィルタを用いた負荷の軽い処理で、単位画像の位置情報を得ることができる。
請求項２に係る発明によれば、単位画像の形状や大きさに応じて求まる特定点の位置を求めることにより、単位画像の適切な位置情報を取得することができる。
請求項３に係る発明によれば、サイズが異なる複数のフィルタを用いることにより、単位画像の形状や大きさのばらつきに対応することができる。
請求項４に係る発明によれば、サイズの小さいフィルタによる検出を優先させることにより、小さい単位画像に対する検出の誤りを防止することができる。
請求項５に係る発明によれば、サイズの小さいフィルタによる検出を先に行うことにより、小さい単位画像に対する検出の誤りを防止することができる。
請求項６に係る発明によれば、既に検出された単位画像を除去することで、他の単位画像の検出漏れを削減することができる。
請求項７に係る発明によれば、ペン・デバイスにおいて、負荷の軽い処理で単位画像の位置情報を得ることができる。
請求項８に係る発明によれば、ペン・デバイスにおいて、単位画像の形状や大きさに応じて求まる特定点の位置を求め、単位画像の適切な位置情報を取得することができる。
請求項９に係る発明によれば、ペン・デバイスにおいて、単位画像の形状や大きさのばらつきに対応することができる。
請求項１０に係る発明によれば、ペン・デバイスにおいて、小さい単位画像に対する検出の誤りを防止することができる。
請求項１１に係る発明によれば、画像処理装置の機能を実現するコンピュータにおいて、負荷の軽い処理で単位画像の位置情報を得ることができる。
請求項１２に係る発明によれば、画像処理装置の機能を実現するコンピュータにおいて、単位画像の形状や大きさに応じて求まる特定点の位置を求め、単位画像の適切な位置情報を取得することができる。
請求項１３に係る発明によれば、画像処理装置の機能を実現するコンピュータにおいて、単位画像の形状や大きさのばらつきに対応することができる。
請求項１４に係る発明によれば、画像処理装置の機能を実現するコンピュータにおいて、小さい単位画像に対する検出の誤りを防止することができる。
【発明を実施するための最良の形態】
【００１０】
以下、添付図面を参照して、本発明の実施形態について詳細に説明する。
本実施形態は、紙等の媒体に印刷されたパターン画像を読み取り、このパターン画像によって記録された情報（コード情報等）を復号する処理に関するものである。本実施形態の前提として、まず、パターン画像の構成例について説明する。
【００１１】
＜パターン画像の構成例＞
本実施形態では、媒体である紙面全体または紙面の特定の領域に、特定の情報を表す情報ブロックが配置される。情報ブロックは、意味のある情報を表現するパターンの最小単位である。この情報ブロックは、複数のパターンブロックの集合で構成され、このパターンブロックには、単位符号パターンが配置される。単位符号パターンは、情報を記録するための符号を表すものであり、パターン画像の最小単位である。
【００１２】
図１は、単位符号パターン、情報ブロック、紙面（媒体）の関係を示す図である。
図１において、単位符号パターンＰ１の集合により、情報ブロックＰ２が構成されている。そして、情報ブロックＰ２の集合により、紙面の太枠で囲まれた領域Ｐ３に情報が記録されている。次に、この単位符号パターンおよび情報ブロックの具体的な構成例について、詳細に説明する。
【００１３】
本実施の形態では、ｍ（ｍ≧３）箇所から選択したｎ（１≦ｎ＜ｍ）箇所に単位画像を配置してなるパターン画像によってｍＣｎ（＝ｍ！／｛（ｍ−ｎ）！×ｎ！｝）通りの情報を表現する。このパターン画像を、単位符号パターンとする。つまり、１つの単位画像を情報に対応させるのではなく、複数の単位画像を情報に対応させている。仮に１つの単位画像を情報に対応させたとすると、単位画像が欠損したり、ノイズが加わったりした場合に、誤った情報を表現してしまうという欠点がある。これに対して、例えば２つの単位画像を情報に対応させたとすると、単位画像が１つであったり３つであったりした場合に、容易に誤りであることが分かる。さらに、１つの単位画像で１ビット、または、高々２ビットを表現する方法では、情報を表現するパターンと視覚的に似たパターンで、情報パターンの読出しを制御する同期パターンを表現することができない。このようなことから、本実施形態では、上記のような符号化方式を採用している。以下では、このような符号化方式をｍＣｎ方式と称する。
ここで、単位画像としては、いかなる形状のものを用いてもよいが、本実施の形態では、単位画像の一例としてドット画像（以下、単に「ドット」という）を用いている。
【００１４】
図２は、ｍＣｎ方式における単位符号パターンの例を示す図である。
図２に示す例では、黒色の領域と斜線の領域をドット配置可能な領域としている。このドット配置可能な領域の間にある白色の領域は、個々のドットを識別するための隙間（空白）を形成するドット配置不可能な領域である。ドット配置可能な領域のうち、黒色の領域にドットが配置され、斜線の領域にはドットが配置されていないことを示している。すなわち、図２は、縦３ドット、横３ドットの合計９ドットを配置可能な領域を設けた例を示しており、（ａ）は、ドット配置可能な領域に２ドットを配置する９Ｃ２方式における単位符号パターンであり、（ｂ）は、ドット配置可能な領域に３ドットを配置する９Ｃ３方式における単位符号パターンである。
【００１５】
ところで、図２で配置されるドット（黒色の領域）は、あくまで情報表現のためのドットであり、画像を構成する最小単位であるドット（図２の最小の四角）とは必ずしも一致しない。本実施形態において、「ドット」というときは前者のドットを指し、後者のドットは「ピクセル」と呼ぶことにすれば、ドットは、６００ｄｐｉにおける２ピクセル×２ピクセルの大きさを有することになる。６００ｄｐｉにおける１ピクセルの大きさは０．０４２３ｍｍなので、ドットの一辺は、８４．６μｍ（＝０．０４２３ｍｍ×２）である。ドットは、大きくなればなるほど目に付きやすくなるため、できるだけ小さいほうが好ましい。ところが、あまり小さくすると、プリンタで印刷できなくなってしまう。そこで、ドットの大きさとして、５０μｍより大きく１００μｍより小さい上記の値を採用している。ただし、上記の値８４．６μｍは、あくまで計算上の数値であり、実際に印刷されたトナー像では１００μｍ程度になる。
【００１６】
図３は、図２に示した単位符号パターンの種類を網羅的に示した図である。なお、この図では、表示の簡略化のためドット間の空白を省略している。
図３（ａ）は、図２（ａ）に示した９Ｃ２方式における全ての単位符号パターンを示している。９Ｃ２方式では、これらの単位符号パターンを用いて、３６（＝９Ｃ２）通りの情報を表現する。また、図３（ｂ）は、図２（ｂ）に示した９Ｃ３方式における全ての単位符号パターンを示している。９Ｃ３方式では、これらの単位符号パターンを用いて、８４（＝９Ｃ３）通りの情報を表現する。
【００１７】
なお、単位符号パターンは、ｍ＝９の場合に限定されるものではなく、ｍの値として、例えば、４、１６等の値を採用してもよい。また、ｎの値も１≦ｎ＜ｍを満たしていればいかなる値を採用してもよい。
また、ｍの値としては、平方数（整数の２乗）だけでなく、異なる２つの整数の積を採用してもよい。つまり、ドットを配置可能な領域は、３ドット×３ドットを配置する場合のような正方形の領域に限らず、３ドット×４ドットを配置する場合のような長方形の領域であってもよい。なお、本明細書において、長方形とは、隣り合う２辺の長さが等しくない矩形のことをいうものとする。
【００１８】
ところで、ｍＣｎ方式における全ての単位符号パターンには、各単位符号パターンを識別するための番号であるパターン値が付されている。
図４に、９Ｃ２方式における単位符号パターンとパターン値との対応を示す。９Ｃ２方式における単位符号パターンは３６個であるので、パターン値としては０〜３５が用いられる。ただし、図４に示した対応はあくまで一例であり、どの単位符号パターンにどのパターン値を割り当ててもよい。なお、９Ｃ３方式については、図示しないが、各単位符号パターンに０〜８３のパターン値が付されることになる。
【００１９】
このように、ｍ箇所からｎ箇所を選択することでｍＣｎ種類の単位符号パターンを用意しているが、本実施形態では、これらの単位符号パターンのうち、特定のパターンを情報パターンとして利用し、残りを同期パターンとして利用する。ここで、情報パターンとは、媒体に埋め込む情報を表現するパターンである。また、同期パターンとは、媒体に埋め込まれた情報パターンを取り出すために用いられるパターンである。例えば、情報パターンの位置を特定したり、画像の回転を検出したりするために用いられる。なお、媒体としては、画像を印刷することが可能であれば、いかなるものを用いてもよい。紙が最も一般的に用いられるので、以下では媒体を紙として説明するが、金属、プラスチック、繊維等であってもよい。
【００２０】
ここで、同期パターンについて説明する。
図５は、９Ｃ２方式における同期パターンの例である。
図５に示すように、単位符号パターンが正方形（縦横のドット数が同じ）である場合は、画像の回転の検出のために４種類の単位符号パターンを同期パターンとして用意する必要がある。ここでは、パターン値３２の単位符号パターンを正立した同期パターンとしている。また、パターン値３３の単位符号パターンを右に９０度回転した同期パターン、パターン値３４の単位符号パターンを右に１８０度回転した同期パターン、パターン値３５の単位符号パターンを右に２７０度回転した同期パターンとしている。この場合、３６種類の単位符号パターンからこの４種類の同期パターンを除いた残りを情報パターンとし、５ビットの情報を表現するとよい。ただし、３６種類の単位符号パターンの情報パターンと同期パターンへの振り分け方は、これには限らない。例えば、４種類で１組を構成する同期パターンの組を５つ用意し、残りの１６種類の情報パターンで４ビットの情報を表現してもよい。
【００２１】
一方、特に図示しないが、単位符号パターンが長方形（縦横のドット数が異なる）である場合は、画像の回転の検出のために２種類の単位符号パターンを同期パターンとして用意すればよい。例えば、縦３ドット×横４ドットを配置可能な領域が検出されるべきなのに、縦４ドット×横３ドットを配置可能な領域が検出された場合は、その時点で画像が９０度または２７０度回転していることが分かるからである。
【００２２】
次に、上記の符号パターンを配置して識別情報と座標情報を表現する方法を述べる。
まず、単位符号パターンにより構成される情報ブロックについて説明する。
図６は、情報ブロックの構成例を示す図である。
図６に示す例では、９Ｃ２方式における単位符号パターンを使用していることも同時に示している。すなわち、３６種類の単位符号パターンを、例えば、同期パターンとして使用する４パターンと、情報パターンとして使用する３２パターンとに分け、各パターンをレイアウトに従って配置する。
【００２３】
また、図６に示す例では、情報ブロックのレイアウトとして、３ドット×３ドットの単位符号パターンを配置可能なパターンブロックを５個×５個の２５個並べたものを採用している。そして、この２５個のパターンブロックのうち、左上の１ブロックに同期パターンを配置している。また、同期パターンの右の４ブロックに紙面上のＸ方向の座標を特定するＸ座標情報を表す情報パターンを配置し、同期パターンの下の４ブロックに紙面上のＹ方向の座標を特定するＹ座標情報を表す情報パターンを配置している。さらに、これらの座標情報を表す情報パターンで囲まれた１６ブロックに、紙面または紙面に印刷される文書の識別情報を表す情報パターンを配置している。
なお、上述した９Ｃ２方式における単位符号パターンは例示に過ぎず、図の左下に示すように、９Ｃ３方式における単位符号パターンを使用してもよい。
【００２４】
次に、本実施形態における識別情報と座標情報を表現するためのレイアウトについて説明する。
図７に、このようなレイアウトの一部を示す。
図７に示すレイアウトでは、図６に示した情報ブロックを基本単位とし、この情報ブロックを紙面全体に周期的に配置する。図では、同期パターンを「Ｓ」で表し、Ｘ座標を表すパターンを「Ｘ１」、「Ｘ２」、…で表し、Ｙ座標を表すパターンを「Ｙ１」、「Ｙ２」、…で表している。座標情報は、例えば紙面の縦及び横に渡ってＭ系列で表現する。また、識別情報の符号化には、幾つかの方法の利用が考えられるが、本実施形態では、ＲＳ符号化が適している。ＲＳ符号は多値の符号法であり、この場合、ブロックの表現をＲＳ符号の多値に対応させるとよいからである。図７では、識別情報を表すパターンを「ＩＸＹ」（Ｘ＝１〜４，Ｙ＝１〜４）で表している。
【００２５】
ここで、座標情報を表現するのに用いるＭ系列について説明する。
Ｍ系列とは、その部分列が、他の部分列と一致することがない系列である。例えば、１１次のＭ系列は、２０４７ビットのビット列である。そして、この２０４７ビットのビット列の中から取り出された１１ビット以上の部分列と同じ並びは、この２０４７ビットのビット列の中に自身以外には存在しない。本実施形態では、１６個の単位符号パターンを４ビットに対応付ける。すなわち、２０４７ビットのビット列を４ビットごとに１０進数で表し、図４に示したような数値対応に従って単位符号パターンを決定し、座標符号として紙面の横と縦に渡って表現する。したがって、復号の際は、３つの連続する単位符号パターンを特定することにより、ビット列上の位置が特定されることになる。
【００２６】
図８に、Ｍ系列を用いた座標情報の符号化の例を示す。
（ａ）は、１１次のＭ系列の例として、「０１１１０００１０１０１１０１００００１１００１０…」というビット列を示している。本実施の形態では、これを４ビットずつに区切り、１つ目の部分列「０１１１」をパターン値７の単位符号パターンとして、２つ目の部分列「０００１」をパターン値１の単位符号パターンとして、３つ目の部分列「０１０１」をパターン値５の単位符号パターンとして、４つ目の部分列「１０１０」をパターン値１０の単位符号パターンとして、それぞれ紙面上に配置する。
【００２７】
このように、４ビットずつ区切って単位符号パターンに割り当てると、（ｂ）に示すように、４周期で全てのパターン列を表現できる。すなわち、１１次のＭ系列は、２０４７ビットなので、この系列を４ビットごとに切り出し、単位符号パターンで表現していくと、最後に３ビットあまることになる。この３ビットに、Ｍ系列の最初の１ビットを加えて４ビットとし単位符号パターンで表す。さらに、Ｍ系列の２ビット目から４ビットごとに切り出し単位符号パターンで表す。すると、次の周期は、Ｍ系列の３ビット目から始まり、その次の周期は、Ｍ系列の４ビット目から始まる。さらに、５周期目は、５ビット目からとなるが、これは最初の周期と一致する。したがって、Ｍ系列の４周期を４ビットごとに切り出していくと、２０４７個の単位符号パターンで全てを尽くすことができる。Ｍ系列は１１次であるので、３つの連続する単位符号パターンは、他のどの位置の連続する符号パターンとも一致することはない。そこで、読出し時には３つの単位符号パターンを読み出せば、復号が可能である。ただし、本実施形態では、誤りの発生を考慮し、４つの単位符号パターンで座標情報を表現している。
【００２８】
ところで、このような符号化を行った場合、４周期のＭ系列は２０４７個のブロックに分割して格納される。そして、図７のようなレイアウトでは、同期パターンを配置したブロックが間に挟まれるので、４周期のＭ系列で２５５８個（≒２０４７個×５／４）のブロック分の長さをカバーすることになる。１つのブロックの一辺の長さは、０．５０８ｍｍ（６００ｄｐｉで１２ピクセル）なので、２５５８個のブロックの長さは１２９９．５ｍｍである。つまり、１２９９．５ｍｍの長さが符号化されることになる。Ａ０サイズの長辺が１１８８．０ｍｍであるので、本実施の形態では、Ａ０サイズの用紙上の座標を符号化することになる。
【００２９】
以上のように構成されるパターン画像は、例えば電子写真方式を用いて、Ｋトナー（カーボンを含む赤外光吸収トナー）、または、特殊トナーにより、媒体である紙面上に形成される。
ここで、特殊トナーとしては、可視光領域（４００ｎｍ〜７００ｎｍ）における最大吸収率が７％以下であり、近赤外領域（８００ｎｍ〜１０００ｎｍ）における吸収率が３０％以上の不可視トナーが例示される。ここで、「可視」及び「不可視」は、目視により認識できるかどうかとは関係しない。印刷された紙面に形成された画像が可視光領域における特定の波長の吸収に起因する発色性の有無により認識できるかどうかで「可視」と「不可視」とを区別している。また、可視光領域における特定の波長の吸収に起因する発色性が若干あるが、人間の目で認識し難いものも「不可視」に含める。
【００３０】
＜画像処理装置の構成および動作＞
次に、紙面上に印刷された（媒体上に形成された）パターン画像を読み取る画像処理装置について説明する。
図９は、画像処理装置の機能構成例を示す図である。
図９に示すように、画像処理装置１０は、パターン画像を撮像する撮像部１００と、パターン画像を形成するドットを検出するドット解析部２００と、検出されたドットにより単位符号パターンや情報ブロックを復元し情報を復号する復号部３００とを備える。
【００３１】
撮像部１００は、ＣＣＤ（Charge Coupled Devices）やＣＭＯＳ（Complementary Metal Oxide Semiconductor）等の撮像素子を用いて構成され、紙面上に形成されたパターン画像を、連続的な画像フレームとして読み取る。そして、読み取ったパターン画像を、８ビットの画像データとしてドット解析部２００に送る。撮像部１００により読み取られる画像のサイズは、特に限定されないが、ここでは１５６画素×１５６画素とする。
【００３２】
ドット解析部２００は、プログラム制御されたＣＰＵおよびメモリ等で実現され、撮像部１００により撮像された画像からドットを検出し、２次元のビット列を生成する。このドット解析部２００は、画像データを解析する機能として、位置検出部２１０と、角度検出部２２０と、同期化部２３０とを備える。
位置検出部２１０は、撮像部１００から受け取った８ビットの画像からドットの位置を検出する。
角度検出部２２０は、位置検出部２１０により検出された画像上のドットの整列角度を検出する。
同期化部２３０は、位置検出部２１０および角度検出部２２０の検出結果として得られたドットの配列を、２次元のビット配列に変換する。この変換を同期化と呼び、得られたビット配列における各ビットの並びを同期ラインと呼ぶ。この同期化により、８ビットの画像の画像は二値データとなる。また、角度検出部２２０により検出されたドットの整列角度はビット列（同期ライン）の角度となる。
得られたビット配列と、同期ラインの角度および間隔の情報は、復号部３００に送られる。
【００３３】
復号部３００は、プログラム制御されたＣＰＵおよびメモリ等で実現される。この復号部３００は、ドット解析部２００から受け取ったビット配列、同期ラインの角度および間隔の情報に基づいて、３ドット×３ドットのパターンブロックを検出する。そして、得られたパターンブロックを回転補正し、情報ブロックを復元した後、この情報ブロックにより記録された情報を復号する。また、画像処理装置１０が、パターン画像が形成された用紙上に筆記しながらパターン画像を読み取るペン・デバイス（ペン・デバイスの詳細な構成については後述）である場合、ペン先の位置と撮像部１００により撮像される位置との間には、一定のずれがある。そこで、復号部３００は、同期ラインの角度および間隔の情報に基づいて、画像から得られた座標をペン先の座標に変換する。
【００３４】
また、図９に示すように、ドット解析部２００の位置検出部２１０、角度検出部２２０および同期化部２３０には、復号部３００における復号の成否についての情報がフィードバックされる。位置検出部２１０、角度検出部２２０および同期化部２３０は、この復号の成否の情報に基づいて、各々の処理において使用するパラメータを決定する。具体的には、所定のパラメータを使用して処理を行った結果、復号に成功した（正しい復号結果が得られた）場合は、次の画像フレームに対しても同じパラメータを使用して処理を行うこととする。一方、復号に失敗した場合は、次の画像フレームに対しては、過去の処理履歴を参照し、成功率が最も高かったパラメータを選択して使用することとする。
【００３５】
また、画像処理装置１０が後述するペン・デバイスである場合、画像処理装置１０には、ペンによる筆記が行われているか否かを認識する機能が設けられる。そして、ドット解析部２００の位置検出部２１０、角度検出部２２０および同期化部２３０と、復号部３００には、ペンによる筆記が開始されたことを示すストローク開始信号が供給される。ストローク開始信号が供給されると、これらの機能ブロックは、各設定を初期化する。さらにまた、画像処理装置１０がペン・デバイスである場合、復号部３００には、復号結果からペン先を補正するための、ペン先から撮像面までの相対距離情報（ペン−チップ距離情報）が供給される。
【００３６】
図１０は、ドット解析部２００および復号部３００による処理の流れを示すフローチャートである。
初期動作として、撮像部１００により媒体である紙面の撮像が行われたものとする。
図１０に示すように、まず、位置検出部２１０が、メモリにおけるドットの座標格納領域を初期化し（ステップ１００１）、ドットの位置を検出する（ステップ１００２）。位置検出に成功したならば（ステップ１００３でＹｅｓ）、次に、角度検出部２２０が、メモリにおけるドットの整列角度格納領域を初期化し（ステップ１００４）、ドットの整列角度を検出する(ステップ１００５)。角度検出に成功したならば（ステップ１００６でＹｅｓ）、次に、同期化部２３０が、メモリのビット配列格納領域を初期化し（ステップ１００７）、ドット配列をビット配列に同期させる（ステップ１００８）。ドット配列の同期に成功したならば（ステップ１００９でＹｅｓ）、次に、復号部３００が、メモリの復号結果格納領域を初期化し（ステップ１０１０）、復号処理を行う（ステップ１０１１）。復号に成功したならば（ステップ１０１２でＹｅｓ）、復号部３００は、復号に成功したことを示す信号を位置検出部２１０、角度検出部２２０および同期化部２３０に送信し（ステップ１０１３）、復号結果を出力する（ステップ１０１４）。
【００３７】
位置検出部２１０によるドットの位置の検出、角度検出部２２０によるドットの整列角度の検出、同期化部２３０によるドット配列の同期のいずれかに失敗した場合（ステップ１００３、１００６、１００９でＮｏ）は、失敗したステップ以後の処理は行われない。これらの場合、および復号部３００による復号に失敗した場合（ステップ１０１２でＮｏ）は、復号部３００が、復号に失敗したことを示す信号を、位置検出部２１０、角度検出部２２０および同期化部２３０に送信し（ステップ１０１５）、かつ復号結果として出力する（ステップ１０１４）。
【００３８】
＜位置検出部の機能＞
次に、ドット解析部２００の位置検出部２１０の機能についてさらに詳細に説明する。
図１１は、位置検出部２１０の機能構成を示す図である。
位置検出部２１０は、撮像部１００により撮像された画像からドットの画像を抽出する機能と、検出されたドットの座標を計算する機能とを備える。具体的には、図１１に示すように、ドット検出機能として、検出部２１１と、閾値設定部２１２と、ノイズ除去部２１３と、第１統計データ生成部２１４と、第２統計データ生成部２１５とを備える。また、座標計算機能として、座標計算部２１６を備える。
【００３９】
検出部２１１は、撮像部１００により撮像された画像を解析し、ドットの画像を検出する。本実施形態では、画像の解析にクオイト・フィルタ（Quoit Filter）が用いられる。検出部２１１によるドットの検出処理の詳細については後述する。閾値設定部２１２は、検出部２１１によるドットの検出に用いられる閾値を設定する。言い換えれば、閾値設定部２１２は、画像からドットを検出するための判断基準を設定する判断基準設定部として機能する。この閾値は、固定値であっても良いが、復号処理の成否等に応じて動的に設定するようにしても良い。
【００４０】
ノイズ除去部２１３は、検出部２１１によるドットの検出結果からノイズを検出し、除去する。第１統計データ生成部２１４および第２統計データ生成部２１５は、ノイズ除去部２１３によるノイズ除去の処理に用いられる統計データを生成する。ノイズ除去部によるノイズの除去処理の詳細については後述する。
【００４１】
座標計算部２１６は、上記のドット検出機能により検出されたドットの、画像フレーム上での位置を表す座標値を計算する。すなわち、座標計算部２１６は、検出されたドットの位置情報を取得する位置情報取得部である。これにより、各ドットの位置関係が特定されるため、複数のドットにより構成される単位符号パターン（図２乃至図４参照）が認識され、単位符号パターンにより記録された情報の復号が可能となる。本実施形態では、座標計算部２１６による処理においてもクオイト・フィルタが用いられる。座標計算部２１６による処理の詳細については後述する。
【００４２】
＜クオイト・フィルタおよびドット検出処理＞
次に、本実施形態によるドットの検出および座標計算に用いられるクオイト・フィルタについて説明する。
クオイト・フィルタは、Morphologicalフィルタの一種であり、ディスク要素とその周囲に設けられるリング要素とで構成される。そして、ディスク要素とリング要素による演算結果の差が、フィルタ処理の出力値となる。検出部２１１は、このクオイト・フィルタを用いて撮像部１００により撮像された画像を走査し、ディスク要素の画素値とリング要素の画素値との差分（高低差）を評価することにより、ドットの有無を判断する。
【００４３】
図１２は、クオイト・フィルタを用いたドット検出の概念を説明する図である。
図１２に示すように、クオイト・フィルタを、上から押し当てるようにして画像上を走査する。なお、図１２では、画像における画素値を３次元の高さとして表現している。このとき、図１２（ａ）に示すように、ディスク要素Ｄを越える領域で画素値が近似している場所では、ディスク要素Ｄとリング要素Ｒの画素値がほぼ一定となる（すなわち、高低差が小さい）。一方、図１２（ｂ）に示すように、ディスク要素Ｄに含まれる小領域の画素値が周囲の画素値に比べて突出している場合、この小領域とディスク要素Ｄの位置が一致すると、リング要素Ｒのみが落ち込む（すなわち、大きな高低差が生じる）。
【００４４】
撮像部１００により撮像された画像において、ドットは、その周囲に比べて画素値が高い。そのため、ディスク要素Ｄとドットの位置が一致すると、クオイト・フィルタの出力であるディスク要素Ｄの画素値とリング要素Ｒの画素値の高低差が大きく、かつディスク要素Ｄの画素値が高くなる。そこで、検出部２１１は、画像を走査して得られる画素値にクオイト・フィルタを適用し、ディスク要素Ｄの画素値とリング要素Ｒの画素値の高低差が大きく、かつディスク要素Ｄの画素値が高いような出力（検出結果）が得られた場合に、ドットが検出されたと判断する。
【００４５】
図１３は、本実施形態で用いられるクオイト・フィルタの構成例を示す図である。図１３（ａ）にディスク要素Ｄを、図１３（ｂ）にリング要素Ｒを、図１３（ｃ）に検出部２１１の出力のデータ構造の例を、それぞれ示す。
図１３（ａ）に示すように、ディスク要素Ｄは、３画素×３画素の正方形の領域である。このディスク要素Ｄから、９画素の画素値の平均値（ＤｉｓｋＡｖｇ）および最大値（ＤｉｓｋＭａｘ）が取得される。図１３（ｂ）に示すように、リング要素Ｒは、７画素×７画素の正方形の範囲のうち、中心の３画素×３画素と四隅の３画素（合計１２画素）を除いた２８画素（＝４９−９−１２）の領域である。中心の３画素×３画素は、ディスク要素Ｄに対応している。このリング要素Ｒから、２８画素の画素値の平均値（ＲｉｎｇＡｖｇ）が取得される。また、ディスク要素Ｄの中央の画素（図中、太線で表示）が、クオイト・フィルタを用いた処理における注目画素である。
【００４６】
図１３（ｃ）に示すように、検出部２１１の出力は８ビットのデータとする。このうち、最下位ビット（ＬＳＢ）から７ビット目までで、クオイト・フィルタの出力である、ディスク要素Ｄの平均値（ＤｉｓｋＡｖｇ）とリング要素Ｒの平均値（ＲｉｎｇＡｖｇ）の差分（ＱｕｏｉｔＤｉｆｆ）を記録する。最上位ビット（ＭＳＢ）は、注目画素がドットであると判断されたことを表すタグ（以下、ドットタグと呼ぶ）として用いられる。
【００４７】
図１４は、図１３に示したクオイト・フィルタを用いて画像を走査する様子を示す図である。
検出部２１１は、クオイト・フィルタの中心を注目画素に合わせ、画像の左上隅から右下隅まで走査しながら、ドットを検出する。ドットの検出は、２段階の処理によって行われる。
【００４８】
まず、ディスク要素とリング要素の平均値の差分（ＱｕｏｉｔＤｉｆｆ）が算出され、得られた値と第１の閾値とが比較される。ここでは、ディスク要素の平均値が高い場合を正の値とする。そして、差分の値が第１の閾値よりも大きいならば、その値が出力データに記録される。第１の閾値は、閾値設定部２１２により設定される。閾値設定部２１２による第１の閾値の設定方法の詳細については後述する。
【００４９】
注目画素に関して差分の値が第１の閾値以上であった場合、次に、この注目画素の画素値と第２の閾値とが比較される。そして、注目画素の画素値が第２の閾値以上であるならば、ドットタグに割り当てられたビットの値がドットであることを表す値となる（以下、このビットの値をドットであることを表す値にすることを「ドットタグを付加する」と記し、このビットの値がドットであることを表す値となっている状態を「ドットタグが付加されている」と記す）。第２の閾値は、任意に設定され、固定値であっても可変値であっても良い。固定値の場合、例えば、クオイト・フィルタのディスク要素における最大値（ＤｉｓｋＭａｘ）としても良い。また、可変値の場合、例えば、ディスク要素の最大値（ＤｉｓｋＭａｘ）から所定のパラメータを減算して求めても良い。パラメータは、例えば、ディスク要素とリング要素の差分（ＱｕｏｉｔＤｉｆｆ）のＲ％（Ｒは任意の値）というように設定される。
【００５０】
また、検出部２１１は、注目画素に関して差分の値が第１の閾値以下であった場合、この注目画素における反転レベル（ＲｅｖＤｉｆｆ）を算出する。ここで、反転レベルとは、リング要素の平均値（ＲｉｎｇＡｖｇ）から注目画素の画素値を減算して得られる差分である。したがって、注目画素の画素値の方が低い場合に反転レベルの値は正となる。検出部２１１は、得られた反転レベルが第３の閾値よりも大きい場合（すなわち、注目画素の画素値がリング要素の平均値よりも一定以上低い場合）、その注目画素に正反射が起こっていると判断する。
【００５１】
図１５は、検出部２１１によるドット検出処理を説明するフローチャートである。
画像フレームに対する検出部２１１による処理に先立って、まず閾値設定部２１２により、第１の閾値（ＴＨ（１））が設定される（ステップ１５０１）。第１の閾値の設定方法については後述する（図１７参照）。第１の閾値（ＴＨ（１））が設定された後、検出部２１１は、撮像部１００により撮像された画像（画像フレーム）を、クオイト・フィルタを適用して走査しながら、以下のループ処理を画素ごとに画像全体にわたって繰り返す。
【００５２】
検出部２１１は、まず画像から７画素×７画素の領域を切り出して、画素値を取得する（ステップ１５０２）。７画素×７画素は、図１３に示したクオイト・フィルタが収まるサイズである。検出部２１１は、取得した画素値にクオイト・フィルタを適用し、ディスク要素に対応する画素の画素値の平均値（ＤｉｓｋＡｖｇ）および最大値（ＤｉｓｋＭａｘ）を計算する（ステップ１５０３）。また、検出部２１１は、クオイト・フィルタのリング要素に対応する画素の画素値の平均値（ＲｉｎｇＡｖｇ）を計算する（ステップ１５０４）。そして、検出部２１１は、クオイト・フィルタのディスク要素の画素値の平均値とリング要素の画素値の平均値との差分（ＱｕｏｉｔＤｉｆｆ＝ＤｉｓｋＡｖｇ−ＲｉｎｇＡｖｇ）を計算し（ステップ１５０５）、得られた値と第１の閾値（ＴＨ（１））とを比較する。
【００５３】
差分値（ＱｕｏｉｔＤｉｆｆ）が第１の閾値（ＴＨ（１））よりも大きい場合（ステップ１５０６でＹｅｓ）、検出部２１１は、図１３（ｃ）に示した８ビットの出力データのうち下位７ビットを用いて、差分値（ＱｕｏｉｔＤｉｆｆ）を記録する（ステップ１５０７）。次に、検出部２１１は、ステップ１５０２で取得した画素値から、クオイト・フィルタの中心に位置する注目画素の画素値Ｖと第２の閾値（ＴＨ（２））とを比較する。第２の閾値（ＴＨ（２））が差分値（ＱｕｏｉｔＤｉｆｆ）に基づいて定まる可変値である場合は、ステップ１５０６の判断の後に計算しておく。
【００５４】
注目画素の画素値が第２の閾値（ＴＨ（２））以上である場合（ステップ１５０８でＹｅｓ）、検出部２１１は、図１３（ｃ）に示した８ビットの出力データの最上位ビットにドットタグを付加する（ステップ１５０９）。そして、この８ビットの出力データを第１統計データ生成部２１４へ送信する(ステップ１５１０)。第１統計データ生成部２１４では、取得した出力データにしたがって、後述する統計データが生成される。注目画素の画素値が第２の閾値（ＴＨ（２））よりも小さい場合は（ステップ１５０８でＮｏ）、この画素はドットを形成しないと判断されるので、検出部２１１は、この出力データを第１統計データ生成部２１４には送信しない。
【００５５】
一方、差分値（ＱｕｏｉｔＤｉｆｆ）が第１の閾値（ＴＨ（１））以下であった場合（ステップ１５０６でＮｏ）、検出部２１１は、注目画素における反転レベル（ＲｅｖＤｉｆｆ＝ＲｉｎｇＡｖｇ−注目画素の画素値Ｖ）を計算する（ステップ１５１１）。そして、得られた値が第３の閾値（ＴＨ（３））よりも大きい場合は、正反射ノイズと判断し、このノイズを検出したことを第２統計データ生成部２１５に通知する（ステップ１５１２、１５１３）。第２統計データ生成部２１５では、取得した正反射ノイズの検出通知にしたがって、後述する統計データが生成される。
【００５６】
以上のようにして、画像フレームに対してドットの検出が行われ、統計データが生成された後、ノイズ除去部２１３によるノイズ除去処理に移行する（ステップ１５１４）。ノイズ除去処理の詳細については後述する（図２２参照）。
【００５７】
＜第１の閾値の設定方法＞
ここで、閾値設定部２１２による第１の閾値の設定方法について詳細に説明する。
図１１を参照すると、閾値設定部２１２には、復号部３００による復号結果と、ストローク開始信号とが供給されている。閾値設定部２１２は、画像フレームごとの復号結果に含まれる復号の成否の情報を受け付け、蓄積される復号履歴に基づいて、上述した第１の閾値を動的に設定する。また、閾値設定部２１２は、ストローク開始信号を受け付けた場合に、復号履歴を初期化する。
【００５８】
画像処理装置１０が後述するペン・デバイスである場合、媒体である紙面上を画像処理装置１０で走査する際の走査位置や走査状態によって画像の状態が大きく変動することが想定される。そこで、本実施形態では、実際の復号の成否に基づいて、ドット検出に用いられる上記の第１の閾値を動的に変化させることで、このような画像の状態の変動に対応する。なお、ストローク開始信号により復号履歴が初期化されるので、この第１の閾値の動的な設定は、ペン・デバイスを用いた筆記のストロークごとに個別に行われることとなる。
【００５９】
閾値設定部２１２により設定される閾値に関しては、予め上限（設定上限）、下限（設定下限）、初期値が定められる。閾値設定部２１２は、直前の画像フレームに対する復号が成功している場合、現在の画像フレームからのドット検出に用いる第１の閾値として、直前の画像フレームからのドット検出に用いた値をそのまま用いる（すなわち、閾値を変更しない）。一方、直前の画像フレームに対する復号が失敗した場合、現在の画像フレームからのドット検出に用いる第１の閾値を、復号履歴に基づき直前の画像フレームとは異なる値に設定する。
【００６０】
閾値設定部２１２は、復号履歴として、取得した復号結果に基づき、閾値に対する復号の成功頻度に関する度数分布のデータを生成する。図１６は、この度数分布の例を視覚的に表現したヒストグラムである。ここで、復号の成功頻度とは、単に復号が成功した回数ではなく、所定の閾値において、復号が成功した回数から復号が失敗した回数を減算した値（ただし、最小値は０）である。
【００６１】
図１６を参照すると、閾値設定部２１２は、まず、第１の閾値を初期値に設定する。そして、復号が成功するまで、画像フレームごとに第１の閾値を順次下げていく。復号が成功したならば、そのときの第１の閾値における成功頻度の度数を１加算する。成功頻度の度数が０でない所定の第１の閾値において、復号が失敗した場合は、その第１の閾値における成功頻度の度数を１減算する。
【００６２】
度数分布のデータが空の場合（例えば、ストローク開始から１度も復号が成功していない場合）、第１の閾値を下げていって設定下限に達したならば、次は設定上限の値とし、同様に復号が成功するまで繰り返す。一方、成功頻度の度数が０でない第１の閾値が存在する場合、直前の画像フレームに対する復号が失敗したならば、現在の画像フレームからのドット検出に用いる第１の閾値として、成功頻度の度数が最大である値を用いる。また、第１の閾値として成功頻度の度数が最大である値を用いてドット検出を行った画像フレームで復号が失敗した場合は、次の画像フレームからのドット検出に用いる第１の閾値として、成功頻度の度数が最大である値よりも１つ小さい値を用いる。
【００６３】
図１７は、閾値設定部２１２による第１の閾値の設定動作を説明するフローチャートであり、図１５に示したステップ１５０１の処理の詳細な内容を示す。
閾値設定部２１２は、検出部２１１による処理対象の画像フレームが、ペン・デバイスによる筆記のストロークにおける先頭の画像フレームである場合（ステップ１７０１でＹｅｓ）、復号の成功頻度に関する度数分布データ（復号履歴）を初期化する（ステップ１７０２）。そして、第１の閾値を初期値に設定する（ステップ１７０３）。画像フレームがストロークの先頭の画像フレームか否かは、ストローク開始信号を受信したか否かによって識別される。
【００６４】
検出部２１１による処理対象の画像フレームが、ペン・デバイスによる筆記のストロークにおける先頭の画像フレームでない場合（ステップ１７０１でＮｏ）、閾値設定部２１２は、直前の画像フレームからのドット検出に用いられた第１の閾値（ＴＨｐｒｅｖ）の度数分布データにおけるインデックスを取得する（ステップ１７０４）。そして、復号部３００からフィードバックされる復号結果に基づき、直前の画像フレームに対する復号が成功したか否かを調べる。
【００６５】
直前の画像フレームの復号が成功した場合（ステップ１７０５でＹｅｓ）、閾値設定部２１２は、取得したインデックスの度数分布データの度数を１加算する（ステップ１７０６）。この場合、画像フレームからのドット検出に用いる第１の閾値は変更せず、直前の画像フレームからのドット検出に用いられた第１の閾値がそのまま用いられる。
【００６６】
一方、直前の画像フレームの復号が失敗した場合（ステップ１７０５でＮｏ）、度数分布データに基づいて第１の閾値が設定される。閾値設定部２１２は、まず、取得したインデックスの度数分布データの度数が０か否かを調べ（ステップ１７０７）、０でなければ、度数を１減算する（ステップ１７０８）。ステップ１７０７で度数が０である場合は、度数の最小値を０としているため、減算はしない。
【００６７】
次に、閾値設定部２１２は、度数分布データにおいて度数が最大のインデックス（Ｉｄｘ＿Ｍａｘ）を取得する（ステップ１７０９）。度数分布データが空でなければ（ステップ１７１０でＮｏ）、最大度数インデックス（Ｉｄｘ＿Ｍａｘ）が得られるので、そのインデックスの閾値（ＴＨｍａｘ）を求める（ステップ１７１１）。そして、この閾値（ＴＨｍａｘ）と、ステップ１７０４で求めた直前の画像フレームからのドット検出に用いられた第１の閾値（ＴＨｐｒｅｖ）とを比較する。
【００６８】
ＴＨｍａｘ≠ＴＨｐｒｅｖである場合（ステップ１７１２でＮｏ）、閾値設定部２１２は、最大度数インデックスの閾値（ＴＨｍａｘ）を、現在の画像フレームからのドット検出に用いる第１の閾値に設定する（ステップ１７１３）。これに対し、ＴＨｍａｘ＝ＴＨｐｒｅｖである場合（ステップ１７１２でＹｅｓ）、次に閾値設定部２１２は、ＴＨｍａｘが設定下限（下限値）か否かを調べる。そして、ＴＨｍａｘが設定下限でなければ（ステップ１７１４でＮｏ）、ＴＨｍａｘよりも１つ小さい値（ＴＨｍａｘ−１）を、現在の画像フレームからのドット検出に用いる第１の閾値に設定する（ステップ１７１５）。一方、ＴＨｍａｘが設定下限であるならば（ステップ１７１４でＹｅｓ）、最大度数インデックスの閾値（ＴＨｍａｘ）を、現在の画像フレームからのドット検出に用いる第１の閾値に設定する（ステップ１７１３）。
【００６９】
ストロークが開始されてから復号が成功しておらず、度数分布データが空である場合（ステップ１７１０でＹｅｓ）、次に閾値設定部２１２は、直前の画像フレームからのドット検出に用いられた第１の閾値（ＴＨｐｒｅｖ）と設定下限（下限値）とを比較する。そして、ＴＨｐｒｅｖが設定下限よりも大きい場合は（ステップ１７１６でＹｅｓ）、ＴＨｐｒｅｖから一定値分下げた値（ＴＨｄｅｔ）を算出する（ステップ１７１７）。算出された値（ＴＨｄｅｔ）が設定下限よりも小さい場合は、ＴＨｄｅｔを設定下限に設定する（ステップ１７１８、１７１９）。そして、得られた値（ＴＨｄｅｔ）を、現在の画像フレームからのドット検出に用いる第１の閾値に設定する（ステップ１７２０）。また、ＴＨｐｒｅｖが設定下限であった場合（ステップ１７１６でＮｏ）、閾値設定部２１２は、設定上限の値（上限値）を、現在の画像フレームからのドット検出に用いる第１の閾値に設定する（ステップ１７２１）。
【００７０】
なお、本実施形態では、ドットの検出にクオイト・フィルタを使用するため、クオイト・フィルタのディスク要素における画素値の平均値とリング要素における画素値の平均値との差分を評価するための第１の閾値を閾値設定部２１２により設定することとした。しかし、クオイト・フィルタを用いるか否かに関わらず、一般に、特定のドットを画像から検出する手法としては、ドットに該当する画素またはその画素を含む一定の領域と画像の他の部分との画素値の差分を所定の閾値と比較して評価することが行われる。そして、そのような他の手法においても、走査位置や走査状態によって生じる画像の状態の変動に対応する必要がある。したがって、実際の復号の成否に基づいて、ドット検出に用いられる閾値を動的に変化させる手法は、他の種々のドット検出の手法においても適用して良い。
【００７１】
＜ノイズ除去処理＞
本実施形態では、ノイズ除去処理として、通常のノイズを除去する処理と、正反射を除去する処理とを行う。正反射とは、画像の読み取りの際に、トナー等で紙面上に形成された画像が、照射された光を全反射し、撮像部１００において画像が飽和レベルに近くなる現象である。全反射は、１ドット単位で発生する。
【００７２】
まず、通常のノイズ除去について説明する。
この処理では、撮像部１００により撮像された画像に対して、３２画素幅の小領域（部分領域）を５個×５個の２５領域分並べた格子状領域（５×５マトリクス）が設定される。そしてさらに、この５×５マトリクスが、１０個×１０個の１００領域を並べた格子状領域（１０×１０マトリクス）に変換される。この１０×１０マトリクスの部分領域ごとに閾値が設定され、ノイズが検出され除去される。本実施形態では、撮像部１００により撮像される画像のサイズは、上述したように１５６画素×１５６画素なので、以上のように生成された１０×１０マトリクスで画像全体が被われることとなる。
【００７３】
まず、第１統計データ生成部２１４が、上記の５×５マトリクスを設定し、３種類の統計データを生成して５×５マトリクスの各部分領域に登録する。統計データは、コントラストの積算値と、ディスク要素の最大値（９画素の画素値の最大値）と、検出ドット数である。ここで、コントラストとは、クオイト・フィルタによるディスク要素とリング要素の差分（ＱｕｏｉｔＤｉｆｆ）である。この統計データの生成は、検出部２１１の出力を順次受け付けることにより、検出部２１１による検出処理と並行して行って良い。
【００７４】
図１８は、５×５マトリクスおよび統計データの例を示す図である。
第１統計データ生成部２１４は、５×５マトリクスを構成する部分領域ごとに、その部分領域に含まれる各画素に関して得られた差分（ＱｕｏｉｔＤｉｆｆ）の値を積算し、コントラストの統計データ（図１８のＳｃ００〜Ｓｃ４４）を生成する。また、５×５マトリクスを構成する部分領域ごとに、その部分領域に含まれる各画素に関するクオイト・フィルタのディスク要素の画素値の最大値（ＤｉｓｋＭａｘ）を選択し、最大値の統計データ（図１８のＭａｘ００〜Ｍａｘ４４）を生成する。また、５×５マトリクスを構成する部分領域ごとに、検出されたドットの数を数え、検出ドット数の統計データ（図１８のＣｎｔ００〜Ｃｎｔ４４）を生成する。ここで、検出ドット数は、その部分領域に含まれる各画素に関するクオイト・フィルタの出力データのうちで、ドットタグが付加されているものの数である。生成されたこれらの統計データは、ノイズ除去部２１３に送られる。
【００７５】
ノイズ除去部２１３は、第１統計データ生成部２１４から取得した統計データを用いて、コントラストの閾値および画素値の閾値を生成する。そして、検出部２１１によりドットとして検出された位置における元画像（撮像部１００により撮像された画像）とこれらの閾値とを比較する。元画像の画素値が閾値より低い場合、または元画像における当該画素を注目画素としたときのコントラスト（ＱｕｏｉｔＤｉｆｆ）が閾値より低い場合、ノイズ除去部２１３は、検出されたドットがノイズであると判断し、検出部２１１によるこのドットの検出を取り消す。これにより、ノイズが除去される。
【００７６】
ここで、コントラストおよび画素値の閾値の生成方法について詳細に説明する。
ノイズ除去部２１３は、まず、５×５マトリクスを構成する各部分領域に関して、コントラストの平均値および最大値を求める。平均値は、第１統計データ生成部２１４から取得したコントラストの積算値を検出ドット数で割ることによって得られる。なお、所定の部分領域に関して検出ドット数が０である場合は、隣接する部分領域の平均値を用いて線形補間する。
【００７７】
次に、ノイズ除去部２１３は、５×５マトリクスの各部分領域を４分割して１０個×１０個の１００領域で構成される１０×１０マトリクスとする。第１統計データ生成部２１４から取得した統計データやノイズ除去部２１３が求めたコントラストの平均値および最大値は、この４分割された小領域ごとのデータに変換される。このデータは、例えば、５×５マトリクスにおける部分領域のデータを隣接する部分領域との間で線形補間することで得られる。
【００７８】
図１９は、部分領域の分割の様子を示す図である。
図１９に示すように、５×５マトリクスにおける部分領域Ａを分割して小領域Ａ−１、Ａ−２、Ａ−３、Ａ−４が得られるものとする。このとき、左上の小領域Ａ−１のデータは、元の部分領域Ａ、左に隣接する部分領域Ｂ、上に隣接する部分領域Ｃのデータの平均値とする。同様に、右上の小領域Ａ−２のデータは、元の部分領域Ａ、上に隣接する部分領域Ｃ、右に隣接する部分領域Ｄのデータの平均値とする。左下の小領域Ａ−３のデータは、元の部分領域Ａ、左に隣接する部分領域Ｂ、下に隣接する部分領域Ｅのデータに基づき線形補間して得られる。右下の小領域Ａ−４のデータは、元の部分領域Ａ、右に隣接する部分領域Ｄ、下に隣接する部分領域Ｅのデータの平均値とする。なお、線形補間の具体的な手法は、以上の方法に限定されない。
【００７９】
次に、ノイズ除去部２１３は、この１０×１０マトリクスのコントラスト閾値を算出する。図２０（ａ）に、コントラスト閾値の例を示す（Ｃｔｒ００〜Ｃｔｒ９９）。コントラスト閾値（Ｃｔｒ）は、１０×１０マトリクスの各小領域に対して求めたコントラストの最大値を用いて、例えば、最大値の２５％等のように定める。コントラストの最大値に基づいて定めることにより、コントラスト閾値は、撮像部１００により撮像された画像全体のシャープさに応じて変動することとなる。
【００８０】
また、ノイズ除去部２１３は、１０×１０マトリクスの画素閾値を算出する。図２０（ｂ）に、画素閾値の例を示す（Ｐｘ００〜Ｐｘ９９）。画素閾値（Ｐｘ）は、例えば、１０×１０マトリクスの小領域のデータにそれぞれ変換された、コントラストの平均値Ｃｔおよびディスク要素の画素値の最大値Ｍｘを用いて、
Ｐｘ＝（Ｍｘ−Ｃｔ）／ｋ        （ただし、ｋは２〜４程度の値）
等のように求められる。
【００８１】
次に、正反射によるノイズ（以下、正反射ノイズ）の除去について説明する。
この処理では、撮像部１００により撮像された画像に対して、４画素幅の小領域（部分領域）を３９個×３９個の１５２１領域分並べた格子状領域（３９×３９マトリクス）が設定される。そして、この３９×３９マトリクスの部分領域ごとに正反射ノイズが検出され除去される。本実施形態では、撮像部１００により撮像される画像のサイズは、上述したように１５６画素×１５６画素なので、以上のように生成された３９×３９マトリクスで画像全体が被われることとなる。
【００８２】
まず、第２統計データ生成部２１５が、上記の３９×３９マトリクスを設定する。そして、この３９×３９マトリクスの部分領域ごとに、検出部２１１において正反射が起こっていると判断された画素（以下、濃度反転画素と呼ぶ）の数をカウントする。この処理は、検出部２１１の出力を順次受け付けることにより、検出部２１１による検出処理と並行して行って良い。そして、得られたデータは、ノイズ除去部２１３に送られる。
【００８３】
図２１は、３９×３９マトリクスの例を示す図である。
ノイズ除去部２１３は、３９×３９マトリクスの各部分領域に順次着目し、着目した部分領域およびこの部分領域の周囲に隣接する８個の部分領域のいずれかに濃度反転画素が存在する場合、着目した部分領域における検出部２１１によるドットの検出を取り消す。例えば、図２１において、グレーの部分領域に着目している場合、太枠で囲まれた９個の部分領域のいずれかに濃度反転画素が存在するならば、斜線を付した部分領域におけるドットの検出が取り消される。これにより、正反射ノイズが除去される。
【００８４】
図２２は、ノイズ除去部２１３によるノイズ除去の動作を説明するフローチャートであり、図１５に示したステップ１５１４の処理の詳細な内容を示す。
ノイズ除去部２１３は、まず、第１統計データ生成部２１４から取得した統計データに基づいて、５×５マトリクスの各部分領域におけるコントラスト（ＱｕｏｉｔＤｉｆｆ）の平均値および最大値を算出する（ステップ２２０１、２２０２）。次に、ノイズ除去部２１３は、得られたデータを、１０×１０マトリクスのデータに変換する（ステップ２２０３）。そして、コントラスト閾値を算出する（ステップ２２０４）。
【００８５】
また、ノイズ除去部２１３は、第１統計データ生成部２１４から取得したクオイト・フィルタにおけるディスク要素の最大値の統計データを、１０×１０マトリクスのデータに変換する（ステップ２２０５）。そして、画素閾値を算出する（ステップ２２０６）。
【００８６】
この後、ノイズ除去部２１３は、画像（画像フレーム）を走査しながら、以下のループ処理を画素ごとに画像全体にわたって繰り返す。ただし、検出部２１１によるドットの検出結果からノイズを除去する処理であるから、実際には、検出部２１１の出力においてドットタグが付加されている画素のみについて処理が行われる。また、各ループにおいて処理対象となっている画素を対象画素と呼ぶ。
【００８７】
ノイズ除去部２１３は、まず検出部２１１によるドット検出の結果から、対象画素の画素値と当該対象画素を注目画素としたときのコントラスト（ＱｕｏｉｔＤｉｆｆ）とを取得する（ステップ２２０７）。そして、コントラストの値がコントラスト閾値よりも小さい場合、または画素値が画素閾値よりも小さい場合は、ノイズ除去部２１３は、対象画素におけるドットタグを除去し、検出部２１１によるドットの検出を取り消す（ステップ２２０８、２２０９、２２１０）。なお、「ドットタグを除去」するとは、検出部２１１の出力データからドットタグに割り当てられているビットの値を、ドットであることを表す値から他の値に変更することである。
【００８８】
次に、ノイズ除去部２１３は、第２統計データ生成部２１５から取得した統計データに基づいて、対象画素を含む３９×３９マトリクスの部分領域に関して、その部分領域と周囲の８個の部分領域（合計９個の部分領域）のいずれかに濃度反転画素が存在するか否かを調べる。そして、濃度反転画素が存在する場合は、ノイズ除去部２１３は、対象画素におけるドットタグを除去し、検出部２１１によるドットの検出を取り消す（ステップ２２１１、２２１２）。
【００８９】
なお、本実施形態では、５×５マトリクスおよび３９×３９マトリクスを用いて統計データを生成しノイズ除去に用いたが、各マトリクスのサイズおよび各マトリクスにおける部分領域のサイズは、上記の実施形態に限定されない。撮像部１００により撮像される元画像のサイズおよび解像度、検出部２１０の処理能力などに応じて、適切なサイズを選択すれば良い。
【００９０】
＜検出されたドットの座標計算＞
次に、座標計算部２１６によるドットの座標値の検出方法について詳細に説明する。
座標計算部２１６は、検出部２１１によりドット検出が行われた画像フレームを、改めてクオイト・フィルタを用いて走査し、ドットの位置情報を取得する。本実施形態において、ドットの位置情報は、画像フレーム上に設定された座標系（直交座標）における座標値で表されるものとする。
【００９１】
座標計算部２１６が用いるクオイト・フィルタは、検出部２１１が用いるクオイト・フィルタとは異なり、ディスク要素とリング要素における画素値の差分ではなく、検出部２１１の出力データにおけるドットタグの有無（ドットタグが付加されているか否か）を認識し、ドットを検出する。なお、本実施形態において、検出部２１１により検出されたドットは、８ビットの出力データで表現されるので、厳密には多値である。しかし、座標計算部２１６は、検出部２１１によりドットの検出が行われた画像におけるドットタグの有無のみを認識してドットを検出するため、座標計算部２１６が入力する画像は、ドット検出に関しては二値画像として良い。以下、座標計算部２１６のクオイト・フィルタで検出される、ドットタグの有無のみで識別されるドットを、二値ドットと呼ぶ。また、ドットタグが付加された画素をオン（ＯＮ）画素と呼び、ドットタグを付加されていない画素をオフ（ＯＦＦ）画素と呼ぶ。
【００９２】
図２３は、座標計算部２１６によるクオイト・フィルタを用いた二値ドット検出の概念を説明する図である。
上述したように、座標計算部２１６により用いられるクオイト・フィルタは、ドットタグの有無のみを見る。そのため、図２３（ａ）および図２３（ｃ）に示すように、ディスク要素Ｄとリング要素Ｒの両方にオン画素が存在する場合は、ディスク要素Ｄとリング要素Ｒの検出結果に差分が生じない。図２３（ｂ）に示すように、ディスク要素Ｄとリング要素Ｒの両方にオン画素が存在しない場合も同様である。これに対し、ディスク要素Ｄにオン画素が存在し、リング要素Ｒにオン画素が存在しない場合は、図２３（ｄ）に示すように、ディスク要素Ｄとリング要素Ｒの検出結果に差分が生じる。したがって、ディスク要素Ｄにオン画素があり、リング要素Ｒが全てオフ画素である場合に、オン画素の部分が二値ドットとして検出される。
【００９３】
本実施形態では、実際に撮像されるドットの形状や大きさにある程度のばらつきがあることを考慮して、サイズの異なる複数のクオイト・フィルタが用いられる。すなわち、ディスク要素の小さいクオイト・フィルタのみを用いて走査すると、ディスク要素よりも大きいドットが検出されずに漏れてしまう。また、ディスク要素の大きいクオイト・フィルタのみを用いて走査すると、複数の小さいドットが近接している場合に、１つの二値ドットとして誤認識してしまうおそれがある。そこで、サイズの異なる複数のクオイト・フィルタを個別に用いることで、これらのような不都合を回避する。以下では、ディスク要素のサイズが１画素×１画素、２画素×２画素、３画素×３画素の３種類のクオイト・フィルタを用いる場合を例として説明する。
【００９４】
図２４は、３種類のクオイト・フィルタの構成例を示す図である。
図２４（ａ）を参照すると、ディスク要素Ｄのサイズが１画素×１画素のクオイト・フィルタ（以下、１×１フィルタと呼ぶ）は、１画素のサイズのディスク要素Ｄと、その周囲の８画素を含むリング要素Ｒとを備える。図２４（ｂ）を参照すると、ディスク要素Ｄのサイズが２画素×２画素のクオイト・フィルタ（以下、２×２フィルタと呼ぶ）は、４（＝２×２）画素のサイズのディスク要素Ｄと、その周囲の１２画素を含むリング要素Ｒとを備える。図２４（ｃ）を参照すると、ディスク要素Ｄのサイズが３画素×３画素のクオイト・フィルタ（以下、３×３フィルタと呼ぶ）は、９（＝３×３）画素のサイズのディスク要素Ｄと、その周囲の１６画素を含むリング要素Ｒとを備える。
【００９５】
また、図２４に示す各クオイト・フィルタにおいて、太枠で示した画素が処理対象である注目画素である。１×１フィルタおよび３×３フィルタでは、中心に位置する画素が注目画素となっているが、２×２フィルタでは、中心に画素が存在しないため、中心付近の特定の画素（図では左上の画素）が注目画素とされる。
【００９６】
座標計算部２１６は、これらのクオイト・フィルタを、ディスク要素Ｄのサイズが小さいものを優先させて適用し、画像フレームを走査する。具体的には、例えば、サイズの小さいクオイト・フィルタから順に適用して走査する方法と、各クオイト・フィルタを同時に適用して走査し、サイズの小さいクオイト・フィルタによる検出を優先させる方法とが考えられる。検出された二値ドットは、他のクオイト・フィルタによる走査の邪魔にならないように、画像フレームから除去される。サイズが小さいクオイト・フィルタを優先させるのは、サイズが大きいクオイト・フィルタを適用した場合における小さい二値ドットに対する誤認識を回避するためである。
【００９７】
図２５乃至図２７を参照して、座標計算部２１６による走査と二値ドットの検出の様子を説明する。
図２５は、二値ドットが配置された一定領域の例を示す図、図２６は、サイズの小さいクオイト・フィルタから順に適用して走査する様子を示す図、図２７は、複数のクオイト・フィルタを同時に適用して走査する様子を示す図である。図２６および図２７において、各クオイト・フィルタのリング要素は、斜線を付して示されている。また、各クオイト・フィルタの注目画素は、グレーの太枠で示されている。二値ドットは黒で示されているが、クオイト・フィルタを適用した走査で検出されて除去された二値ドットはグレーで示されている。
【００９８】
図２６に示す例では、まず１×１フィルタが適用され、２つの二値ドットが検出される（図２６（ａ）および図２６（ｂ）参照）。次に、２×２フィルタが適用され、１つの二値ドットが検出される（図２６（ｃ）参照）。次に、３×３フィルタが適用され、１つの二値ドットが検出される（図２６（ｄ）参照）。以上のようにして、全ての二値ドットが検出された（図２６（ｅ）参照）。ここで、図２６（ｄ）を参照すると、３×３フィルタのリング要素が、図２６（ａ）で検出された二値ドットに掛かっている。しかし、この二値ドットは検出された後に除去されているので、図２６（ｄ）の時点ではオフ画素となっており、４画素で構成されるＴ字型の二値ドットが適切に検出された。
【００９９】
図２７に示す例では、３つのクオイト・フィルタが同時に適用されるので、２画素×２画素の正方形の二値ドット（図２７（ａ）参照）、１画素の二値ドット（図２７（ｂ）参照）、４画素のＴ字型の二値ドット（図２７（ｃ）参照）、１画素の二値ドット（図２７（ｄ）参照）の順で順次検出される。以上のようにして、全ての二値ドットが検出された（図２７（ｅ）参照）。ここで、図２７（ａ）で検出される４画素の二値ドットは、１×１フィルタでは検出されないが、２×２フィルタおよび３×３フィルタで検出される。しかし、サイズが小さいクオイト・フィルタによる検出が優先されるので、２×２フィルタで検出された結果が採用される。同様に、図２７（ｂ）および図２７（ｄ）では、最もサイズが小さい１×１フィルタの検出結果が採用される。
【０１００】
また、座標計算部２１６は、検出された二値ドットの位置（座標値）を、二値ドットに該当する画素の位置で示すのではなく、二値ドットの重心位置という概念を用いて示す。これは、二値ドットの検出においてサイズの異なる複数のクオイト・フィルタを用いるのと同様に、実際に撮像されるドットの形状や大きさのばらつきに対応するためである。すなわち、二値ドットが常に１画素に対応しているのであれば、二値ドットとして検出された画素の位置を、二値ドット自身の位置とすれば良い。しかし、二値ドットが複数の画素で構成される場合は、その二値ドットの位置について定義することが必要となる。そこで、この定義された二値ドットの位置を重心位置と呼ぶ。
【０１０１】
二値ドットの重心位置については、種々の定義が考えられる。最も単純な定義としては、座標計算部２１６により検出された、クオイト・フィルタのディスク要素におけるオン画素によって形成される図形の重心を、二値ドットの重心位置とすることが考えられる。また、元画像（撮像部１００により撮像された画像）における二値ドットに対応する画素の画素値を用いて、二値ドットの重心位置を定義しても良い。さらに、検出部２１１により検出されたコントラスト（ＱｕｏｉｔＤｉｆｆ）を用いて、二値ドットの重心位置を定義しても良い。いずれの場合も、その二値ドットを代表する特定点を設定し、その特定点の位置によって二値ドットの重心位置を表すこととなる。
【０１０２】
ところで、画像フレーム上に設定される座標系は、最も単純には、１画素を座標値の単位に対応させることが考えられる。しかし、二値ドットの重心位置は、上述したように、１画素単位よりも高い精度で表す必要がある。そこで、本実施形態では、画素単位で設定された座標系に対して座標空間をＮ倍に拡大した座標値を用いて、重心位置を表現する。ここで、座標空間をＮ倍にするとは、直交する座標軸の各々をＮ倍することを意味するものとする。例えば、１５６×１５６の座標空間を１０倍にすると、１５６０×１５６０の座標空間に変換されるものとする。
【０１０３】
＜座標計算部の動作例＞
次に、検出部２１１により検出されたコントラスト（ＱｕｏｉｔＤｉｆｆ）を用いて二値ドットの重心位置を定義した場合を例として、座標計算部２１６による二値ドットの座標計算の具体例を説明する。
【０１０４】
図２８は、座標計算部２１６の動作を説明するフローチャートである。
図２８を参照すると、座標計算部２１６は、まず、検出ドット位置数（ｉＰｏｉｎｔＮｕｍ）を初期化する（ステップ２８０１）。検出ドット位置数とは、二値ドットの位置情報をいくつ検出したか（座標値をいくつ計算したか）を数えた数であり、初期化により値が０となる。
【０１０５】
次に、座標計算部２１６は、クオイト・フィルタを適用して画像（画像フレームを走査しながら、以下のループ処理を画素ごとに画像全体にわたって繰り返す。ループ処理の各サイクルにおいて、処理対象であるクオイト・フィルタの注目画素の位置（走査位置）をＸ＝ｉ、Ｙ＝ｊとする。（Ｘ，Ｙ）は、画素単位の座標系における座標値である。
【０１０６】
座標計算部２１６は、まず走査位置の注目画素がオン画素か否かを調べる。注目画素がオン画素でなければ（ステップ２８０２でＮｏ）、次の画素（走査位置）へ進む。
一方、走査位置の注目画素がオン画素である場合（ステップ２８０２でＹｅｓ）、次に座標計算部２１６は、注目画素を中心とする５画素×５画素の領域における各画素に関して、検出部２１１の出力データを取得する（ステップ２８０３）。そして、１×１フィルタ、２×２フィルタ、３×３フィルタの各々について、リング要素からオン画素を検出する（ステップ２８０４〜２８０６）。
【０１０７】
図２９は、オン画素の探索対象である５画素×５画素の領域および各クオイト・フィルタのリング要素を示す図である。図２９（ａ）は５画素×５画素の領域を示し、画素番号３３の画素（以下、「画素３３」と表記）が注目画素である。図２９（ｂ）は１×１フィルタのリング要素、図２９（ｃ）は２×２フィルタのリング要素、図２９（ｄ）は３×３フィルタのリング要素をそれぞれ示す。図２９（ｂ）〜（ｄ）において、リング要素に該当する画素は、グレーで示され、画素番号が濃い太字で表されている。
【０１０８】
図２９を参照してステップ２８０３〜２８０６の動作を説明すると、まず、ステップ２８０３では、Ｐｘ１１〜Ｐｘ５５が取得される。ただし、Ｐｘ○○は、図２９の画素○○における検出部２１１の出力データのうち、最上位ビットの値である。また、検出部２１１の出力データにおける最上位ビットの値は、オン画素の場合が１、オフ画素の場合が０であるものとする。
【０１０９】
次に、ステップ２８０４では、
Ｒｉｎｇ１×１＝
Ｐｘ２２｜Ｐｘ２３｜Ｐｘ２４｜Ｐｘ３２｜Ｐｘ３４｜Ｐｘ４２｜Ｐｘ４３｜Ｐｘ４４
が計算される。ここで、Ｒｉｎｇ１×１は、１×１フィルタのリング要素に関する値である。また、符号｜は、論理和（ｏｒ）である。したがって、図２９（ｂ）において、いずれかの画素がオン画素であればＲｉｎｇ１×１＝１であり、全ての画素がオフ画素であればＲｉｎｇ１×１＝０である。
【０１１０】
同様に、ステップ２８０５では、
Ｒｉｎｇ２×２＝
Ｐｘ２２｜Ｐｘ２３｜Ｐｘ２４｜Ｐｘ２５｜Ｐｘ３２｜Ｐｘ３５｜Ｐｘ４２｜Ｐｘ４５｜Ｐｘ５２｜Ｐｘ５３｜Ｐｘ５４｜Ｐｘ５５
が計算され、ステップ２８０６では、
Ｒｉｎｇ３×３＝
Ｐｘ１１｜Ｐｘ１２｜Ｐｘ１３｜Ｐｘ１４｜Ｐｘ１５｜Ｐｘ２１｜Ｐｘ２５｜Ｐｘ３１｜Ｐｘ３５｜Ｐｘ４１｜Ｐｘ４５｜Ｐｘ５１｜Ｐｘ５２｜Ｐｘ５３｜Ｐｘ５４｜Ｐｘ５５
が計算される。
【０１１１】
次に、座標計算部２１６は、３種類のクオイト・フィルタのうち、リング要素の全ての画素がオフ画素であるものがあるかを調べる。言い換えれば、ステップ２８０４〜２８０６で、Ｒｉｎｇ１×１＝０、Ｒｉｎｇ２×２＝０、Ｒｉｎｇ３×３＝０のいずれかが得られたかどうかが判断される。そして、全てのクオイト・フィルタで、リング要素にオン画素がある場合（ステップ２８０７でＮｏ）、座標計算部２１６は、現在の走査位置での処理を終了し、次の走査位置で（隣の画素を注目画素として）ステップ２８０２以降の処理を繰り返す。
【０１１２】
一方、少なくとも１つのクオイト・フィルタでリング要素の全ての画素がオフ画素であった場合（ステップ２８０７でＹｅｓ）、座標計算部２１６は、そのクオイト・フィルタに応じて、二値ドットの重心位置の座標計算処理を行う（ステップ２８０８）。このとき、複数のクオイト・フィルタでリング要素の全ての画素がオフ画素であった場合は、サイズの小さいクオイト・フィルタに応じて処理が行われる。また、二値ドットの重心位置を表す座標系としては、画素単位で設定された座標系に対して座標空間をＮ倍に拡大した座標系が用いられる。
【０１１３】
図３０は、ステップ２８０８の座標計算処理の詳細を説明するフローチャートである。
図３０に示すように、座標計算部２１６は、まず、注目画素を含む４画素×４画素の領域の各画素のコントラスト（ＱｕｏｉｔＤｉｆｆ）を取得する（ステップ３００１）。ここで、取得対象を４画素×４画素の領域としたのは、２×２フィルタにおいて注目画素の位置がディスク要素の中心ではなく偏っていることを考慮したものである。したがって、図２９（ａ）に示した５画素×５画素の領域を参酌すると、画素２２〜２５、３２〜３５、４２〜４５、５２〜５５の範囲がコントラストの取得対象となる。また、コントラストの値は、検出部２１１の出力データから下位７ビットの値を抽出して得られる。
【０１１４】
次に、座標計算部２１６は、Ｒｉｎｇ１×１、Ｒｉｎｇ２×２、Ｒｉｎｇ３×３の値を調べ、座標変位計算処理を行う。まず、Ｒｉｎｇ１×１＝０である場合（ステップ３００２でＹｅｓ）、１×１フィルタに応じた座標変位計算処理が行われる（ステップ３００３）。次に、Ｒｉｎｇ２×２＝０である場合（ステップ３００２でＮｏ、ステップ３００４でＹｅｓ）、２×２フィルタに応じた座標変位計算処理が行われる（ステップ３００５）。最後に、Ｒｉｎｇ３×３＝０である場合（ステップ３００４でＮｏ、ステップ３００６でＹｅｓ）、３×３フィルタに応じた座標変位計算処理が行われる（ステップ３００７）。以上の手順によって、サイズの小さいクオイト・フィルタによる検出が優先されることとなる。
【０１１５】
この後、座標計算部２１６は、ステップ３００３、３００５、３００７のいずれかの計算結果に基づき、二値ドットの重心位置の座標値を求める（ステップ３００８）。ステップ３００３、３００５、３００７で求まる座標変位を（ＤｅｌｔａＸ，ＤｅｌｔａＹ）とすると、注目画素の位置がＸ＝ｉ、Ｙ＝ｊであり、座標空間をＮ倍するから、二値ドットの重心位置の座標（ｘ，ｙ）は、
ｘ＝ｉ×Ｎ＋ＤｅｌｔａＸ，ｙ＝ｊ×Ｎ＋ＤｅｌｔａＹ
で算出される。最後に、座標計算部２１６は、検出ドット位置数を１加算し（ステップ３００９）、座標計算処理を終了する。
【０１１６】
図３１は、ステップ３００３の座標変位計算処理の詳細を説明するフローチャート、図３２は、ステップ３００５の座標変位計算処理の詳細を説明するフローチャート、図３３は、ステップ３００７の座標変位計算処理の詳細を説明するフローチャートである。
各処理では、まず、ＳｕｍＡｌｌ、ＬｅｆｔＷｅｉｇｈｔ、ＲｉｇｈｔＷｅｉｇｈｔ、ＵｐｐｅｒＷｅｉｇｈｔ、ＬｏｗｅｒＷｅｉｇｈｔの５つの変数が計算される。
【０１１７】
１×１フィルタで二値ドットが検出された場合、図３１に示すように、
ＳｕｍＡｌｌ＝
Ｄｉｆｆ２２＋Ｄｉｆｆ２３＋Ｄｉｆｆ２４＋Ｄｉｆｆ３２＋Ｄｉｆｆ３３＋
Ｄｉｆｆ３４＋Ｄｉｆｆ４２＋Ｄｉｆｆ４３＋Ｄｉｆｆ４４
ＬｅｆｔＷｅｉｇｈｔ＝Ｄｉｆｆ２２＋Ｄｉｆｆ３２＋Ｄｉｆｆ４２
ＲｉｇｈｔＷｅｉｇｈｔ＝Ｄｉｆｆ２４＋Ｄｉｆｆ３４＋Ｄｉｆｆ４４
ＵｐｐｅｒＷｅｉｇｈｔ＝Ｄｉｆｆ２２＋Ｄｉｆｆ２３＋Ｄｉｆｆ２４
ＬｏｗｅｒＷｅｉｇｈｔ＝Ｄｉｆｆ４２＋Ｄｉｆｆ４３＋Ｄｉｆｆ４４
である（ステップ３１０１〜３１０５）。
【０１１８】
また、２×２フィルタで二値ドットが検出された場合、図３２に示すように、
ＳｕｍＡｌｌ＝
Ｄｉｆｆ２２＋Ｄｉｆｆ２３＋Ｄｉｆｆ２４＋Ｄｉｆｆ２５＋Ｄｉｆｆ３２＋
Ｄｉｆｆ３３＋Ｄｉｆｆ３４＋Ｄｉｆｆ３５＋Ｄｉｆｆ４２＋Ｄｉｆｆ４３＋
Ｄｉｆｆ４４＋Ｄｉｆｆ４５＋Ｄｉｆｆ５２＋Ｄｉｆｆ５３＋Ｄｉｆｆ５４＋
Ｄｉｆｆ５５
ＬｅｆｔＷｅｉｇｈｔ＝
Ｄｉｆｆ２２＋Ｄｉｆｆ２３＋Ｄｉｆｆ３２＋Ｄｉｆｆ３３＋Ｄｉｆｆ４２＋
Ｄｉｆｆ４３＋Ｄｉｆｆ５２＋Ｄｉｆｆ５３
ＲｉｇｈｔＷｅｉｇｈｔ＝
Ｄｉｆｆ２４＋Ｄｉｆｆ２５＋Ｄｉｆｆ３４＋Ｄｉｆｆ３５＋Ｄｉｆｆ４４＋
Ｄｉｆｆ４５＋Ｄｉｆｆ５４＋Ｄｉｆｆ５５
ＵｐｐｅｒＷｅｉｇｈｔ＝
Ｄｉｆｆ２２＋Ｄｉｆｆ２３＋Ｄｉｆｆ２４＋Ｄｉｆｆ２５＋Ｄｉｆｆ３２＋
Ｄｉｆｆ３３＋Ｄｉｆｆ３４＋Ｄｉｆｆ３５
ＬｏｗｅｒＷｅｉｇｈｔ＝
Ｄｉｆｆ４２＋Ｄｉｆｆ４３＋Ｄｉｆｆ４４＋Ｄｉｆｆ４５＋Ｄｉｆｆ５２＋
Ｄｉｆｆ５３＋Ｄｉｆｆ５４＋Ｄｉｆｆ５５
である（ステップ３２０１〜３２０５）。
【０１１９】
また、３×３フィルタで二値ドットが検出された場合、図３３に示すように、
ＳｕｍＡｌｌ＝
Ｄｉｆｆ２２＋Ｄｉｆｆ２３＋Ｄｉｆｆ２４＋Ｄｉｆｆ３２＋Ｄｉｆｆ３３＋
Ｄｉｆｆ３４＋Ｄｉｆｆ４２＋Ｄｉｆｆ４３＋Ｄｉｆｆ４４
ＬｅｆｔＷｅｉｇｈｔ＝Ｄｉｆｆ２２＋Ｄｉｆｆ３２＋Ｄｉｆｆ４２
ＲｉｇｈｔＷｅｉｇｈｔ＝Ｄｉｆｆ２４＋Ｄｉｆｆ３４＋Ｄｉｆｆ４４
ＵｐｐｅｒＷｅｉｇｈｔ＝Ｄｉｆｆ２２＋Ｄｉｆｆ２３＋Ｄｉｆｆ２４
ＬｏｗｅｒＷｅｉｇｈｔ＝Ｄｉｆｆ４２＋Ｄｉｆｆ４３＋Ｄｉｆｆ４４
である（ステップ３３０１〜３３０５）。
【０１２０】
次に、得られた変数を用いて、座標変位量が次式により計算される（ステップ３１０６、３２０６、３３０６）。
ＤｅｌｔａＸ＝
Ｎ×（−ＲｉｇｈｔＷｅｉｇｈｔ＋ＬｅｆｔＷｅｉｇｈｔ）／ＳｕｍＡｌｌ
ＤｅｌｔａＹ＝
Ｎ×（−ＵｐｐｅｒＷｅｉｇｈｔ＋ＬｏｗｅｒＷｅｉｇｈｔ）／ＳｕｍＡｌｌ
【０１２１】
この後、クオイト・フィルタのディスク要素におけるドットタグが除去され、処理が終了する。
１×１フィルタで二値ドットが検出された場合の処理では、図３１に示すように、走査位置の注目画素におけるドットタグが除去される（ステップ３１０７）。２×２フィルタで二値ドットが検出された場合の処理では、図３２に示すように、走査位置の注目画素を含む２画素×２画素の領域におけるドットタグが除去される（ステップ３２０７）。３×３フィルタで二値ドットが検出された場合の処理では、図３３に示すように、走査位置の注目画素を中心とする３画素×３画素の領域におけるドットタグが除去される（ステップ３３０７）。
【０１２２】
＜ペン・デバイスの構成＞
次に、本実施の形態における画像処理装置１０の具体的なハードウェア構成について説明する。ここでは、画像処理装置１０を実現するペン・デバイスの構成例について説明する。
図３４は、ペン・デバイスの機構を示した図である。
図示するように、ペン・デバイス６０は、ペン全体の動作を制御する制御回路６１を備える。制御回路６１は、入力画像から検出した符号画像を処理する画像処理部６１ａと、そこでの処理結果から識別情報及び座標情報を抽出するデータ処理部６１ｂとを含む。また、特に図示しないが、制御回路６１は、これら画像処理部６１ａおよびデータ処理部６１ｂを動作させるためのプログラムを格納する不揮発性メモリとを含む。この制御回路６１には、ペン・デバイス６０による筆記動作をペンチップ６９に加わる圧力によって検出する圧力センサ６２が接続されている。また、媒体上に赤外光を照射する赤外ＬＥＤ６３と、画像を入力する赤外ＣＭＯＳ６４も接続されている。さらに、識別情報及び座標情報を記憶するための情報メモリ６５と、外部装置と通信するための通信回路６６と、ペンを駆動するためのバッテリ６７と、ペンの識別情報（ペンＩＤ）を記憶するペンＩＤメモリ６８も接続されている。
【０１２３】
図９に示した画像処理装置１０において、撮像部１００は、例えば、図３４の赤外ＣＭＯＳ６４にて実現される。また、ドット解析部２００は、例えば、図３４の画像処理部６１ａにて実現される。さらに、復号部３００は、例えば、図３４のデータ処理部６１ｂにて実現される。なお、画像処理装置１０は、図３４に示すようなペン・デバイス６０の他、画像処理部６１ａ又はデータ処理部６１ｂにて実現される機能を、例えば、汎用のコンピュータで実現しても良い。
【０１２４】
画像処理部６１ａおよびデータ処理部６１ｂの機能を実現するプログラムは、通信手段を介して提供したり、ＣＤ−ＲＯＭ等の記録媒体に格納して提供したりすることができる。また、制御回路６１に含まれる上述した不揮発性メモリに格納して提供しても良い。
【図面の簡単な説明】
【０１２５】
【図１】本実施形態で用いられる単位符号パターン、情報ブロック、紙面（媒体）の関係を示す図である。
【図２】ｍＣｎ方式における単位符号パターンの例を示す図である。
【図３】図２に示した単位符号パターンの種類を網羅的に示した図である。
【図４】９Ｃ２方式における単位符号パターンとパターン値との対応を示す図である。
【図５】９Ｃ２方式における同期パターンの例を示す図である。
【図６】情報ブロックの構成例を示す図である。
【図７】本実施形態における識別情報と座標情報を表現するためのレイアウトの例を示す図である。
【図８】Ｍ系列を用いた座標情報の符号化の例を示す図である。
【図９】本実施形態の画像処理装置の機能構成例を示す図である。
【図１０】本実施形態のドット解析部および復号部による処理の流れを示すフローチャートである。
【図１１】本実施形態の位置検出部の機能構成を示す図である。
【図１２】本実施形態におけるクオイト・フィルタを用いたドット検出の概念を説明する図である。
【図１３】本実施形態で用いられるクオイト・フィルタの構成例を示す図である。
【図１４】図１３に示したクオイト・フィルタを用いて画像を走査する様子を示す図である。
【図１５】本実施形態の検出部によるドット検出処理を説明するフローチャートである。
【図１６】復号の成功頻度に関する度数分布の例を視覚的に表現したヒストグラムである。
【図１７】本実施形態の閾値設定部による第１の閾値の設定動作を説明するフローチャートである。
【図１８】本実施形態で用いられる５×５マトリクスおよび統計データの例を示す図である。
【図１９】部分領域の分割の様子を示す図である。
【図２０】本実施形態で用いられるコントラスト閾値および画素閾値の例を示す図である。
【図２１】本実施形態で用いられる３９×３９マトリクスおよび統計データの例を示す図である。
【図２２】本実施形態のノイズ除去部によるノイズ除去の動作を説明するフローチャートである。
【図２３】本実施形態の座標計算部によるクオイト・フィルタを用いた二値ドット検出の概念を説明する図である。
【図２４】本実施形態で用いられる３種類のクオイト・フィルタの構成例を示す図である。
【図２５】二値ドットが配置された一定領域の例を示す図である。
【図２６】サイズの小さいクオイト・フィルタから順に適用して走査する様子を示す図である。
【図２７】複数のクオイト・フィルタを同時に適用して走査する様子を示す図である。
【図２８】本実施形態の座標計算部の動作を説明するフローチャートである。
【図２９】本実施形態におけるオン画素の探索対象である５画素×５画素の領域および各クオイト・フィルタのリング要素を示す図である。
【図３０】図２８のステップ２８０８の座標計算処理の詳細を説明するフローチャートである。
【図３１】図３０のステップ３００３の座標変位計算処理の詳細を説明するフローチャートである。
【図３２】図３０のステップ３００５の座標変位計算処理の詳細を説明するフローチャートである。
【図３３】図３０のステップ３００７の座標変位計算処理の詳細を説明するフローチャートである。
【図３４】画像処理装置であるペン・デバイスの機構を示した図である。
【符号の説明】
【０１２６】
１０…画像処理装置、１００…撮像部、２００…ドット解析部、２１０…位置検出部、２１１…検出部、２１２…閾値設定部、２１３…ノイズ除去部、２１４…第１統計データ生成部、２１５…第２統計データ生成部、２１６…座標計算部、２２０…角度検出部、２３０…同期化部、３００…復号部
【図１】
2009175931.tif 000003
【図２】
2009175931.tif 000004
【図３】
2009175931.tif 000005
【図４】
2009175931.tif 000006
【図５】
2009175931.tif 000007
【図６】
2009175931.tif 000008
【図７】
2009175931.tif 000009
【図８】
2009175931.tif 000010
【図９】
2009175931.tif 000011
【図１０】
2009175931.tif 000012
【図１１】
2009175931.tif 000013
【図１２】
2009175931.tif 000014
【図１３】
2009175931.tif 000015
【図１４】
2009175931.tif 000016
【図１５】
2009175931.tif 000017
【図１６】
2009175931.tif 000018
【図１７】
2009175931.tif 000019
【図１８】
2009175931.tif 000020
【図１９】
2009175931.tif 000021
【図２０】
2009175931.tif 000022
【図２１】
2009175931.tif 000023
【図２２】
2009175931.tif 000024
【図２３】
2009175931.tif 000025
【図２４】
2009175931.tif 000026
【図２５】
2009175931.tif 000027
【図２６】
2009175931.tif 000028
【図２７】
2009175931.tif 000029
【図２８】
2009175931.tif 000030
【図２９】
2009175931.tif 000031
【図３０】
2009175931.tif 000032
【図３１】
2009175931.tif 000033
【図３２】
2009175931.tif 000034
【図３３】
2009175931.tif 000035
【図３４】
2009175931.tif 000036