説明

画像処理装置、ペン・デバイスおよびプログラム

【課題】装置への負荷が軽い処理で、パターン画像の位置を特定できるようにする。
【解決手段】撮像部により撮像された画像から単位画像(ドット)を検出する検出部211と、一定の領域からなるディスク要素とこのディスク要素の周囲に設けられたリング要素とを備えるクオイト・フィルタを適用して、単位画像が検出された二値画像を走査し、ディスク要素に含まれるサイズの単位画像を検出した際の二値画像上でのクオイト・フィルタの位置に基づき、単位画像の位置情報を取得する座標計算部216とを備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理装置、ペン・デバイスおよびプログラムに関する。
【背景技術】
【0002】
印刷用紙等の媒体上にコード化された情報を表すパターン画像や特定の意味を付与されたパターン画像を埋め込み、読み取り装置で読み取ってコード情報を復号したり付与された意味に応じて装置を制御したりすることが、従来から行われている。パターン画像により表される情報としては、パターン画像が埋め込まれた媒体自体の識別情報や媒体に記録された文書の識別情報、媒体上の位置を表す位置情報などがある。
【0003】
この種の技術において、パターン画像を読み取る際には、パターン画像の有無を判断するだけでなく、パターン画像の配置を認識することが必要である。
特許文献1には、仮中心画素から4方向に画像を走査して、ドット画像の周囲にある白い部分の位置を検出し、仮中心の位置から白い部分までの距離に基づいてドットの位置を特定する技術が開示されている。
【0004】
また、ドットのような微小な画像を検出する方法として、クオイト・フィルタ(Quoit Filter)を用いる方法が知られている。
特許文献2には、画像を撮像する光学系の点広がり関数からQフィルタ(クオイト・フィルタ)を生成し、画像に対して適用することで微小な画像を検出する技術が開示されている。
【0005】
【特許文献1】特開平6−231466号公報
【特許文献2】特開2005−164446号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
処理能力が制限されるペン・デバイスのような画像処理装置では、検出されたパターン画像の配置を認識するためにパターン画像の位置を特定する処理は、プロセッサの負荷ができるだけ軽い処理であることが望まれる。
【0007】
本発明は、以上のような課題に鑑みてなされたものであり、装置への負荷が軽い処理で、パターン画像の位置を特定できるようにすることを目的とする。
【課題を解決するための手段】
【0008】
請求項1に係る発明は、撮像装置により撮像された画像から単位画像を検出する検出部と、一定の領域からなるディスク要素と当該ディスク要素の周囲に設けられたリング要素とを備えるフィルタを適用して、前記単位画像が検出された二値画像を走査し、当該ディスク要素に含まれるサイズの単位画像を検出した際の当該二値画像上での当該フィルタの位置に基づき、当該単位画像の位置情報を取得する位置情報取得部とを備えることを特徴とする画像処理装置である。
請求項2に係る発明は、前記位置情報取得部は、前記フィルタを適用して検出した画素を含む一定領域に存在する複数の画素の画素値に基づいて、前記単位画像の特定点を求め、当該特定点の位置情報を当該単位画像の位置情報とすることを特徴とする請求項1に記載の画像処理装置である。
請求項3に係る発明は、前記位置情報取得部は、前記ディスク要素のサイズが異なる複数の前記フィルタをそれぞれ適用して前記二値画像を走査し、個別に前記単位画像を検出することを特徴とする請求項1に記載の画像処理装置である。
請求項4に係る発明は、前記位置情報取得部は、複数の前記フィルタを適用した検出のうち、サイズの小さい前記フィルタによる検出を優先させることを特徴とする請求項3に記載の画像処理装置である。
請求項5に係る発明は、前記位置情報取得部は、サイズの小さい前記フィルタから順に適用して前記二値画像を走査することを特徴とする請求項2に記載の画像処理装置である。
請求項6に係る発明は、前記位置情報取得部は、所定の前記フィルタで検出された前記単位画像を前記二値画像から順次除去することを特徴とする請求項2に記載の画像処理装置である。
請求項7に係る発明は、単位画像が形成された媒体表面を撮像する撮像部と、前記撮像部により撮像された画像から前記単位画像を検出する検出部と、一定の領域からなるディスク要素と当該ディスク要素の周囲に設けられたリング要素とを備えるフィルタを適用して、前記単位画像が検出された二値画像を走査し、当該ディスク要素に含まれるサイズの単位画像を検出した際の当該二値画像上での当該フィルタの位置に基づき、当該単位画像の位置情報を取得する位置情報取得部とを備えることを特徴とするペン・デバイスである。
請求項8に係る発明は、前記位置情報取得部は、前記フィルタを適用して検出した画素を含む一定領域に存在する複数の画素の画素値に基づいて、前記単位画像の特定点を求め、当該特定点の位置情報を当該単位画像の位置情報とすることを特徴とする請求項7に記載のペン・デバイスである。
請求項9に係る発明は、前記位置情報取得部は、前記ディスク要素のサイズが異なる複数の前記フィルタをそれぞれ適用して前記二値画像を走査し、個別に前記単位画像を検出することを特徴とする請求項7に記載のペン・デバイスである。
請求項10に係る発明は、前記位置情報取得部は、複数の前記フィルタを適用した検出のうち、サイズの小さい前記フィルタによる検出を優先させることを特徴とする請求項9に記載のペン・デバイスである。
請求項11に係る発明は、コンピュータに、撮像装置により撮像された画像から単位画像を検出する処理と、一定の領域からなるディスク要素と当該ディスク要素の周囲に設けられたリング要素とを備えるフィルタを適用して、前記単位画像が検出された二値画像を走査し、当該ディスク要素に含まれるサイズの単位画像を検出した際の当該二値画像上での当該フィルタの位置に基づき、当該単位画像の位置情報を取得する処理とを実行させるためのプログラムである。
請求項12に係る発明は、前記単位画像の位置情報を取得する処理では、前記フィルタを適用して検出した画素を含む一定領域に存在する複数の画素の画素値に基づいて、前記単位画像の特定点を求め、当該特定点の位置情報を当該単位画像の位置情報とすることを特徴とする請求項11に記載のプログラムである。
請求項13に係る発明は、前記単位画像の位置情報を取得する処理では、前記ディスク要素のサイズが異なる複数の前記フィルタをそれぞれ適用して前記二値画像を走査し、個別に前記単位画像を検出することを特徴とする請求項11に記載のプログラムである。
請求項14に係る発明は、前記単位画像の位置情報を取得する処理では、複数の前記フィルタを適用した検出のうち、サイズの小さい前記フィルタによる検出を優先させることを特徴とする請求項13に記載のプログラムである。
【発明の効果】
【0009】
請求項1に係る発明によれば、フィルタを用いた負荷の軽い処理で、単位画像の位置情報を得ることができる。
請求項2に係る発明によれば、単位画像の形状や大きさに応じて求まる特定点の位置を求めることにより、単位画像の適切な位置情報を取得することができる。
請求項3に係る発明によれば、サイズが異なる複数のフィルタを用いることにより、単位画像の形状や大きさのばらつきに対応することができる。
請求項4に係る発明によれば、サイズの小さいフィルタによる検出を優先させることにより、小さい単位画像に対する検出の誤りを防止することができる。
請求項5に係る発明によれば、サイズの小さいフィルタによる検出を先に行うことにより、小さい単位画像に対する検出の誤りを防止することができる。
請求項6に係る発明によれば、既に検出された単位画像を除去することで、他の単位画像の検出漏れを削減することができる。
請求項7に係る発明によれば、ペン・デバイスにおいて、負荷の軽い処理で単位画像の位置情報を得ることができる。
請求項8に係る発明によれば、ペン・デバイスにおいて、単位画像の形状や大きさに応じて求まる特定点の位置を求め、単位画像の適切な位置情報を取得することができる。
請求項9に係る発明によれば、ペン・デバイスにおいて、単位画像の形状や大きさのばらつきに対応することができる。
請求項10に係る発明によれば、ペン・デバイスにおいて、小さい単位画像に対する検出の誤りを防止することができる。
請求項11に係る発明によれば、画像処理装置の機能を実現するコンピュータにおいて、負荷の軽い処理で単位画像の位置情報を得ることができる。
請求項12に係る発明によれば、画像処理装置の機能を実現するコンピュータにおいて、単位画像の形状や大きさに応じて求まる特定点の位置を求め、単位画像の適切な位置情報を取得することができる。
請求項13に係る発明によれば、画像処理装置の機能を実現するコンピュータにおいて、単位画像の形状や大きさのばらつきに対応することができる。
請求項14に係る発明によれば、画像処理装置の機能を実現するコンピュータにおいて、小さい単位画像に対する検出の誤りを防止することができる。
【発明を実施するための最良の形態】
【0010】
以下、添付図面を参照して、本発明の実施形態について詳細に説明する。
本実施形態は、紙等の媒体に印刷されたパターン画像を読み取り、このパターン画像によって記録された情報(コード情報等)を復号する処理に関するものである。本実施形態の前提として、まず、パターン画像の構成例について説明する。
【0011】
<パターン画像の構成例>
本実施形態では、媒体である紙面全体または紙面の特定の領域に、特定の情報を表す情報ブロックが配置される。情報ブロックは、意味のある情報を表現するパターンの最小単位である。この情報ブロックは、複数のパターンブロックの集合で構成され、このパターンブロックには、単位符号パターンが配置される。単位符号パターンは、情報を記録するための符号を表すものであり、パターン画像の最小単位である。
【0012】
図1は、単位符号パターン、情報ブロック、紙面(媒体)の関係を示す図である。
図1において、単位符号パターンP1の集合により、情報ブロックP2が構成されている。そして、情報ブロックP2の集合により、紙面の太枠で囲まれた領域P3に情報が記録されている。次に、この単位符号パターンおよび情報ブロックの具体的な構成例について、詳細に説明する。
【0013】
本実施の形態では、m(m≧3)箇所から選択したn(1≦n<m)箇所に単位画像を配置してなるパターン画像によってmCn(=m!/{(m−n)!×n!})通りの情報を表現する。このパターン画像を、単位符号パターンとする。つまり、1つの単位画像を情報に対応させるのではなく、複数の単位画像を情報に対応させている。仮に1つの単位画像を情報に対応させたとすると、単位画像が欠損したり、ノイズが加わったりした場合に、誤った情報を表現してしまうという欠点がある。これに対して、例えば2つの単位画像を情報に対応させたとすると、単位画像が1つであったり3つであったりした場合に、容易に誤りであることが分かる。さらに、1つの単位画像で1ビット、または、高々2ビットを表現する方法では、情報を表現するパターンと視覚的に似たパターンで、情報パターンの読出しを制御する同期パターンを表現することができない。このようなことから、本実施形態では、上記のような符号化方式を採用している。以下では、このような符号化方式をmCn方式と称する。
ここで、単位画像としては、いかなる形状のものを用いてもよいが、本実施の形態では、単位画像の一例としてドット画像(以下、単に「ドット」という)を用いている。
【0014】
図2は、mCn方式における単位符号パターンの例を示す図である。
図2に示す例では、黒色の領域と斜線の領域をドット配置可能な領域としている。このドット配置可能な領域の間にある白色の領域は、個々のドットを識別するための隙間(空白)を形成するドット配置不可能な領域である。ドット配置可能な領域のうち、黒色の領域にドットが配置され、斜線の領域にはドットが配置されていないことを示している。すなわち、図2は、縦3ドット、横3ドットの合計9ドットを配置可能な領域を設けた例を示しており、(a)は、ドット配置可能な領域に2ドットを配置する9C2方式における単位符号パターンであり、(b)は、ドット配置可能な領域に3ドットを配置する9C3方式における単位符号パターンである。
【0015】
ところで、図2で配置されるドット(黒色の領域)は、あくまで情報表現のためのドットであり、画像を構成する最小単位であるドット(図2の最小の四角)とは必ずしも一致しない。本実施形態において、「ドット」というときは前者のドットを指し、後者のドットは「ピクセル」と呼ぶことにすれば、ドットは、600dpiにおける2ピクセル×2ピクセルの大きさを有することになる。600dpiにおける1ピクセルの大きさは0.0423mmなので、ドットの一辺は、84.6μm(=0.0423mm×2)である。ドットは、大きくなればなるほど目に付きやすくなるため、できるだけ小さいほうが好ましい。ところが、あまり小さくすると、プリンタで印刷できなくなってしまう。そこで、ドットの大きさとして、50μmより大きく100μmより小さい上記の値を採用している。ただし、上記の値84.6μmは、あくまで計算上の数値であり、実際に印刷されたトナー像では100μm程度になる。
【0016】
図3は、図2に示した単位符号パターンの種類を網羅的に示した図である。なお、この図では、表示の簡略化のためドット間の空白を省略している。
図3(a)は、図2(a)に示した9C2方式における全ての単位符号パターンを示している。9C2方式では、これらの単位符号パターンを用いて、36(=)通りの情報を表現する。また、図3(b)は、図2(b)に示した9C3方式における全ての単位符号パターンを示している。9C3方式では、これらの単位符号パターンを用いて、84(=)通りの情報を表現する。
【0017】
なお、単位符号パターンは、m=9の場合に限定されるものではなく、mの値として、例えば、4、16等の値を採用してもよい。また、nの値も1≦n<mを満たしていればいかなる値を採用してもよい。
また、mの値としては、平方数(整数の2乗)だけでなく、異なる2つの整数の積を採用してもよい。つまり、ドットを配置可能な領域は、3ドット×3ドットを配置する場合のような正方形の領域に限らず、3ドット×4ドットを配置する場合のような長方形の領域であってもよい。なお、本明細書において、長方形とは、隣り合う2辺の長さが等しくない矩形のことをいうものとする。
【0018】
ところで、mCn方式における全ての単位符号パターンには、各単位符号パターンを識別するための番号であるパターン値が付されている。
図4に、9C2方式における単位符号パターンとパターン値との対応を示す。9C2方式における単位符号パターンは36個であるので、パターン値としては0〜35が用いられる。ただし、図4に示した対応はあくまで一例であり、どの単位符号パターンにどのパターン値を割り当ててもよい。なお、9C3方式については、図示しないが、各単位符号パターンに0〜83のパターン値が付されることになる。
【0019】
このように、m箇所からn箇所を選択することでmCn種類の単位符号パターンを用意しているが、本実施形態では、これらの単位符号パターンのうち、特定のパターンを情報パターンとして利用し、残りを同期パターンとして利用する。ここで、情報パターンとは、媒体に埋め込む情報を表現するパターンである。また、同期パターンとは、媒体に埋め込まれた情報パターンを取り出すために用いられるパターンである。例えば、情報パターンの位置を特定したり、画像の回転を検出したりするために用いられる。なお、媒体としては、画像を印刷することが可能であれば、いかなるものを用いてもよい。紙が最も一般的に用いられるので、以下では媒体を紙として説明するが、金属、プラスチック、繊維等であってもよい。
【0020】
ここで、同期パターンについて説明する。
図5は、9C2方式における同期パターンの例である。
図5に示すように、単位符号パターンが正方形(縦横のドット数が同じ)である場合は、画像の回転の検出のために4種類の単位符号パターンを同期パターンとして用意する必要がある。ここでは、パターン値32の単位符号パターンを正立した同期パターンとしている。また、パターン値33の単位符号パターンを右に90度回転した同期パターン、パターン値34の単位符号パターンを右に180度回転した同期パターン、パターン値35の単位符号パターンを右に270度回転した同期パターンとしている。この場合、36種類の単位符号パターンからこの4種類の同期パターンを除いた残りを情報パターンとし、5ビットの情報を表現するとよい。ただし、36種類の単位符号パターンの情報パターンと同期パターンへの振り分け方は、これには限らない。例えば、4種類で1組を構成する同期パターンの組を5つ用意し、残りの16種類の情報パターンで4ビットの情報を表現してもよい。
【0021】
一方、特に図示しないが、単位符号パターンが長方形(縦横のドット数が異なる)である場合は、画像の回転の検出のために2種類の単位符号パターンを同期パターンとして用意すればよい。例えば、縦3ドット×横4ドットを配置可能な領域が検出されるべきなのに、縦4ドット×横3ドットを配置可能な領域が検出された場合は、その時点で画像が90度または270度回転していることが分かるからである。
【0022】
次に、上記の符号パターンを配置して識別情報と座標情報を表現する方法を述べる。
まず、単位符号パターンにより構成される情報ブロックについて説明する。
図6は、情報ブロックの構成例を示す図である。
図6に示す例では、9C2方式における単位符号パターンを使用していることも同時に示している。すなわち、36種類の単位符号パターンを、例えば、同期パターンとして使用する4パターンと、情報パターンとして使用する32パターンとに分け、各パターンをレイアウトに従って配置する。
【0023】
また、図6に示す例では、情報ブロックのレイアウトとして、3ドット×3ドットの単位符号パターンを配置可能なパターンブロックを5個×5個の25個並べたものを採用している。そして、この25個のパターンブロックのうち、左上の1ブロックに同期パターンを配置している。また、同期パターンの右の4ブロックに紙面上のX方向の座標を特定するX座標情報を表す情報パターンを配置し、同期パターンの下の4ブロックに紙面上のY方向の座標を特定するY座標情報を表す情報パターンを配置している。さらに、これらの座標情報を表す情報パターンで囲まれた16ブロックに、紙面または紙面に印刷される文書の識別情報を表す情報パターンを配置している。
なお、上述した9C2方式における単位符号パターンは例示に過ぎず、図の左下に示すように、9C3方式における単位符号パターンを使用してもよい。
【0024】
次に、本実施形態における識別情報と座標情報を表現するためのレイアウトについて説明する。
図7に、このようなレイアウトの一部を示す。
図7に示すレイアウトでは、図6に示した情報ブロックを基本単位とし、この情報ブロックを紙面全体に周期的に配置する。図では、同期パターンを「S」で表し、X座標を表すパターンを「X1」、「X2」、…で表し、Y座標を表すパターンを「Y1」、「Y2」、…で表している。座標情報は、例えば紙面の縦及び横に渡ってM系列で表現する。また、識別情報の符号化には、幾つかの方法の利用が考えられるが、本実施形態では、RS符号化が適している。RS符号は多値の符号法であり、この場合、ブロックの表現をRS符号の多値に対応させるとよいからである。図7では、識別情報を表すパターンを「IXY」(X=1〜4,Y=1〜4)で表している。
【0025】
ここで、座標情報を表現するのに用いるM系列について説明する。
M系列とは、その部分列が、他の部分列と一致することがない系列である。例えば、11次のM系列は、2047ビットのビット列である。そして、この2047ビットのビット列の中から取り出された11ビット以上の部分列と同じ並びは、この2047ビットのビット列の中に自身以外には存在しない。本実施形態では、16個の単位符号パターンを4ビットに対応付ける。すなわち、2047ビットのビット列を4ビットごとに10進数で表し、図4に示したような数値対応に従って単位符号パターンを決定し、座標符号として紙面の横と縦に渡って表現する。したがって、復号の際は、3つの連続する単位符号パターンを特定することにより、ビット列上の位置が特定されることになる。
【0026】
図8に、M系列を用いた座標情報の符号化の例を示す。
(a)は、11次のM系列の例として、「0111000101011010000110010…」というビット列を示している。本実施の形態では、これを4ビットずつに区切り、1つ目の部分列「0111」をパターン値7の単位符号パターンとして、2つ目の部分列「0001」をパターン値1の単位符号パターンとして、3つ目の部分列「0101」をパターン値5の単位符号パターンとして、4つ目の部分列「1010」をパターン値10の単位符号パターンとして、それぞれ紙面上に配置する。
【0027】
このように、4ビットずつ区切って単位符号パターンに割り当てると、(b)に示すように、4周期で全てのパターン列を表現できる。すなわち、11次のM系列は、2047ビットなので、この系列を4ビットごとに切り出し、単位符号パターンで表現していくと、最後に3ビットあまることになる。この3ビットに、M系列の最初の1ビットを加えて4ビットとし単位符号パターンで表す。さらに、M系列の2ビット目から4ビットごとに切り出し単位符号パターンで表す。すると、次の周期は、M系列の3ビット目から始まり、その次の周期は、M系列の4ビット目から始まる。さらに、5周期目は、5ビット目からとなるが、これは最初の周期と一致する。したがって、M系列の4周期を4ビットごとに切り出していくと、2047個の単位符号パターンで全てを尽くすことができる。M系列は11次であるので、3つの連続する単位符号パターンは、他のどの位置の連続する符号パターンとも一致することはない。そこで、読出し時には3つの単位符号パターンを読み出せば、復号が可能である。ただし、本実施形態では、誤りの発生を考慮し、4つの単位符号パターンで座標情報を表現している。
【0028】
ところで、このような符号化を行った場合、4周期のM系列は2047個のブロックに分割して格納される。そして、図7のようなレイアウトでは、同期パターンを配置したブロックが間に挟まれるので、4周期のM系列で2558個(≒2047個×5/4)のブロック分の長さをカバーすることになる。1つのブロックの一辺の長さは、0.508mm(600dpiで12ピクセル)なので、2558個のブロックの長さは1299.5mmである。つまり、1299.5mmの長さが符号化されることになる。A0サイズの長辺が1188.0mmであるので、本実施の形態では、A0サイズの用紙上の座標を符号化することになる。
【0029】
以上のように構成されるパターン画像は、例えば電子写真方式を用いて、Kトナー(カーボンを含む赤外光吸収トナー)、または、特殊トナーにより、媒体である紙面上に形成される。
ここで、特殊トナーとしては、可視光領域(400nm〜700nm)における最大吸収率が7%以下であり、近赤外領域(800nm〜1000nm)における吸収率が30%以上の不可視トナーが例示される。ここで、「可視」及び「不可視」は、目視により認識できるかどうかとは関係しない。印刷された紙面に形成された画像が可視光領域における特定の波長の吸収に起因する発色性の有無により認識できるかどうかで「可視」と「不可視」とを区別している。また、可視光領域における特定の波長の吸収に起因する発色性が若干あるが、人間の目で認識し難いものも「不可視」に含める。
【0030】
<画像処理装置の構成および動作>
次に、紙面上に印刷された(媒体上に形成された)パターン画像を読み取る画像処理装置について説明する。
図9は、画像処理装置の機能構成例を示す図である。
図9に示すように、画像処理装置10は、パターン画像を撮像する撮像部100と、パターン画像を形成するドットを検出するドット解析部200と、検出されたドットにより単位符号パターンや情報ブロックを復元し情報を復号する復号部300とを備える。
【0031】
撮像部100は、CCD(Charge Coupled Devices)やCMOS(Complementary Metal Oxide Semiconductor)等の撮像素子を用いて構成され、紙面上に形成されたパターン画像を、連続的な画像フレームとして読み取る。そして、読み取ったパターン画像を、8ビットの画像データとしてドット解析部200に送る。撮像部100により読み取られる画像のサイズは、特に限定されないが、ここでは156画素×156画素とする。
【0032】
ドット解析部200は、プログラム制御されたCPUおよびメモリ等で実現され、撮像部100により撮像された画像からドットを検出し、2次元のビット列を生成する。このドット解析部200は、画像データを解析する機能として、位置検出部210と、角度検出部220と、同期化部230とを備える。
位置検出部210は、撮像部100から受け取った8ビットの画像からドットの位置を検出する。
角度検出部220は、位置検出部210により検出された画像上のドットの整列角度を検出する。
同期化部230は、位置検出部210および角度検出部220の検出結果として得られたドットの配列を、2次元のビット配列に変換する。この変換を同期化と呼び、得られたビット配列における各ビットの並びを同期ラインと呼ぶ。この同期化により、8ビットの画像の画像は二値データとなる。また、角度検出部220により検出されたドットの整列角度はビット列(同期ライン)の角度となる。
得られたビット配列と、同期ラインの角度および間隔の情報は、復号部300に送られる。
【0033】
復号部300は、プログラム制御されたCPUおよびメモリ等で実現される。この復号部300は、ドット解析部200から受け取ったビット配列、同期ラインの角度および間隔の情報に基づいて、3ドット×3ドットのパターンブロックを検出する。そして、得られたパターンブロックを回転補正し、情報ブロックを復元した後、この情報ブロックにより記録された情報を復号する。また、画像処理装置10が、パターン画像が形成された用紙上に筆記しながらパターン画像を読み取るペン・デバイス(ペン・デバイスの詳細な構成については後述)である場合、ペン先の位置と撮像部100により撮像される位置との間には、一定のずれがある。そこで、復号部300は、同期ラインの角度および間隔の情報に基づいて、画像から得られた座標をペン先の座標に変換する。
【0034】
また、図9に示すように、ドット解析部200の位置検出部210、角度検出部220および同期化部230には、復号部300における復号の成否についての情報がフィードバックされる。位置検出部210、角度検出部220および同期化部230は、この復号の成否の情報に基づいて、各々の処理において使用するパラメータを決定する。具体的には、所定のパラメータを使用して処理を行った結果、復号に成功した(正しい復号結果が得られた)場合は、次の画像フレームに対しても同じパラメータを使用して処理を行うこととする。一方、復号に失敗した場合は、次の画像フレームに対しては、過去の処理履歴を参照し、成功率が最も高かったパラメータを選択して使用することとする。
【0035】
また、画像処理装置10が後述するペン・デバイスである場合、画像処理装置10には、ペンによる筆記が行われているか否かを認識する機能が設けられる。そして、ドット解析部200の位置検出部210、角度検出部220および同期化部230と、復号部300には、ペンによる筆記が開始されたことを示すストローク開始信号が供給される。ストローク開始信号が供給されると、これらの機能ブロックは、各設定を初期化する。さらにまた、画像処理装置10がペン・デバイスである場合、復号部300には、復号結果からペン先を補正するための、ペン先から撮像面までの相対距離情報(ペン−チップ距離情報)が供給される。
【0036】
図10は、ドット解析部200および復号部300による処理の流れを示すフローチャートである。
初期動作として、撮像部100により媒体である紙面の撮像が行われたものとする。
図10に示すように、まず、位置検出部210が、メモリにおけるドットの座標格納領域を初期化し(ステップ1001)、ドットの位置を検出する(ステップ1002)。位置検出に成功したならば(ステップ1003でYes)、次に、角度検出部220が、メモリにおけるドットの整列角度格納領域を初期化し(ステップ1004)、ドットの整列角度を検出する(ステップ1005)。角度検出に成功したならば(ステップ1006でYes)、次に、同期化部230が、メモリのビット配列格納領域を初期化し(ステップ1007)、ドット配列をビット配列に同期させる(ステップ1008)。ドット配列の同期に成功したならば(ステップ1009でYes)、次に、復号部300が、メモリの復号結果格納領域を初期化し(ステップ1010)、復号処理を行う(ステップ1011)。復号に成功したならば(ステップ1012でYes)、復号部300は、復号に成功したことを示す信号を位置検出部210、角度検出部220および同期化部230に送信し(ステップ1013)、復号結果を出力する(ステップ1014)。
【0037】
位置検出部210によるドットの位置の検出、角度検出部220によるドットの整列角度の検出、同期化部230によるドット配列の同期のいずれかに失敗した場合(ステップ1003、1006、1009でNo)は、失敗したステップ以後の処理は行われない。これらの場合、および復号部300による復号に失敗した場合(ステップ1012でNo)は、復号部300が、復号に失敗したことを示す信号を、位置検出部210、角度検出部220および同期化部230に送信し(ステップ1015)、かつ復号結果として出力する(ステップ1014)。
【0038】
<位置検出部の機能>
次に、ドット解析部200の位置検出部210の機能についてさらに詳細に説明する。
図11は、位置検出部210の機能構成を示す図である。
位置検出部210は、撮像部100により撮像された画像からドットの画像を抽出する機能と、検出されたドットの座標を計算する機能とを備える。具体的には、図11に示すように、ドット検出機能として、検出部211と、閾値設定部212と、ノイズ除去部213と、第1統計データ生成部214と、第2統計データ生成部215とを備える。また、座標計算機能として、座標計算部216を備える。
【0039】
検出部211は、撮像部100により撮像された画像を解析し、ドットの画像を検出する。本実施形態では、画像の解析にクオイト・フィルタ(Quoit Filter)が用いられる。検出部211によるドットの検出処理の詳細については後述する。閾値設定部212は、検出部211によるドットの検出に用いられる閾値を設定する。言い換えれば、閾値設定部212は、画像からドットを検出するための判断基準を設定する判断基準設定部として機能する。この閾値は、固定値であっても良いが、復号処理の成否等に応じて動的に設定するようにしても良い。
【0040】
ノイズ除去部213は、検出部211によるドットの検出結果からノイズを検出し、除去する。第1統計データ生成部214および第2統計データ生成部215は、ノイズ除去部213によるノイズ除去の処理に用いられる統計データを生成する。ノイズ除去部によるノイズの除去処理の詳細については後述する。
【0041】
座標計算部216は、上記のドット検出機能により検出されたドットの、画像フレーム上での位置を表す座標値を計算する。すなわち、座標計算部216は、検出されたドットの位置情報を取得する位置情報取得部である。これにより、各ドットの位置関係が特定されるため、複数のドットにより構成される単位符号パターン(図2乃至図4参照)が認識され、単位符号パターンにより記録された情報の復号が可能となる。本実施形態では、座標計算部216による処理においてもクオイト・フィルタが用いられる。座標計算部216による処理の詳細については後述する。
【0042】
<クオイト・フィルタおよびドット検出処理>
次に、本実施形態によるドットの検出および座標計算に用いられるクオイト・フィルタについて説明する。
クオイト・フィルタは、Morphologicalフィルタの一種であり、ディスク要素とその周囲に設けられるリング要素とで構成される。そして、ディスク要素とリング要素による演算結果の差が、フィルタ処理の出力値となる。検出部211は、このクオイト・フィルタを用いて撮像部100により撮像された画像を走査し、ディスク要素の画素値とリング要素の画素値との差分(高低差)を評価することにより、ドットの有無を判断する。
【0043】
図12は、クオイト・フィルタを用いたドット検出の概念を説明する図である。
図12に示すように、クオイト・フィルタを、上から押し当てるようにして画像上を走査する。なお、図12では、画像における画素値を3次元の高さとして表現している。このとき、図12(a)に示すように、ディスク要素Dを越える領域で画素値が近似している場所では、ディスク要素Dとリング要素Rの画素値がほぼ一定となる(すなわち、高低差が小さい)。一方、図12(b)に示すように、ディスク要素Dに含まれる小領域の画素値が周囲の画素値に比べて突出している場合、この小領域とディスク要素Dの位置が一致すると、リング要素Rのみが落ち込む(すなわち、大きな高低差が生じる)。
【0044】
撮像部100により撮像された画像において、ドットは、その周囲に比べて画素値が高い。そのため、ディスク要素Dとドットの位置が一致すると、クオイト・フィルタの出力であるディスク要素Dの画素値とリング要素Rの画素値の高低差が大きく、かつディスク要素Dの画素値が高くなる。そこで、検出部211は、画像を走査して得られる画素値にクオイト・フィルタを適用し、ディスク要素Dの画素値とリング要素Rの画素値の高低差が大きく、かつディスク要素Dの画素値が高いような出力(検出結果)が得られた場合に、ドットが検出されたと判断する。
【0045】
図13は、本実施形態で用いられるクオイト・フィルタの構成例を示す図である。図13(a)にディスク要素Dを、図13(b)にリング要素Rを、図13(c)に検出部211の出力のデータ構造の例を、それぞれ示す。
図13(a)に示すように、ディスク要素Dは、3画素×3画素の正方形の領域である。このディスク要素Dから、9画素の画素値の平均値(DiskAvg)および最大値(DiskMax)が取得される。図13(b)に示すように、リング要素Rは、7画素×7画素の正方形の範囲のうち、中心の3画素×3画素と四隅の3画素(合計12画素)を除いた28画素(=49−9−12)の領域である。中心の3画素×3画素は、ディスク要素Dに対応している。このリング要素Rから、28画素の画素値の平均値(RingAvg)が取得される。また、ディスク要素Dの中央の画素(図中、太線で表示)が、クオイト・フィルタを用いた処理における注目画素である。
【0046】
図13(c)に示すように、検出部211の出力は8ビットのデータとする。このうち、最下位ビット(LSB)から7ビット目までで、クオイト・フィルタの出力である、ディスク要素Dの平均値(DiskAvg)とリング要素Rの平均値(RingAvg)の差分(QuoitDiff)を記録する。最上位ビット(MSB)は、注目画素がドットであると判断されたことを表すタグ(以下、ドットタグと呼ぶ)として用いられる。
【0047】
図14は、図13に示したクオイト・フィルタを用いて画像を走査する様子を示す図である。
検出部211は、クオイト・フィルタの中心を注目画素に合わせ、画像の左上隅から右下隅まで走査しながら、ドットを検出する。ドットの検出は、2段階の処理によって行われる。
【0048】
まず、ディスク要素とリング要素の平均値の差分(QuoitDiff)が算出され、得られた値と第1の閾値とが比較される。ここでは、ディスク要素の平均値が高い場合を正の値とする。そして、差分の値が第1の閾値よりも大きいならば、その値が出力データに記録される。第1の閾値は、閾値設定部212により設定される。閾値設定部212による第1の閾値の設定方法の詳細については後述する。
【0049】
注目画素に関して差分の値が第1の閾値以上であった場合、次に、この注目画素の画素値と第2の閾値とが比較される。そして、注目画素の画素値が第2の閾値以上であるならば、ドットタグに割り当てられたビットの値がドットであることを表す値となる(以下、このビットの値をドットであることを表す値にすることを「ドットタグを付加する」と記し、このビットの値がドットであることを表す値となっている状態を「ドットタグが付加されている」と記す)。第2の閾値は、任意に設定され、固定値であっても可変値であっても良い。固定値の場合、例えば、クオイト・フィルタのディスク要素における最大値(DiskMax)としても良い。また、可変値の場合、例えば、ディスク要素の最大値(DiskMax)から所定のパラメータを減算して求めても良い。パラメータは、例えば、ディスク要素とリング要素の差分(QuoitDiff)のR%(Rは任意の値)というように設定される。
【0050】
また、検出部211は、注目画素に関して差分の値が第1の閾値以下であった場合、この注目画素における反転レベル(RevDiff)を算出する。ここで、反転レベルとは、リング要素の平均値(RingAvg)から注目画素の画素値を減算して得られる差分である。したがって、注目画素の画素値の方が低い場合に反転レベルの値は正となる。検出部211は、得られた反転レベルが第3の閾値よりも大きい場合(すなわち、注目画素の画素値がリング要素の平均値よりも一定以上低い場合)、その注目画素に正反射が起こっていると判断する。
【0051】
図15は、検出部211によるドット検出処理を説明するフローチャートである。
画像フレームに対する検出部211による処理に先立って、まず閾値設定部212により、第1の閾値(TH(1))が設定される(ステップ1501)。第1の閾値の設定方法については後述する(図17参照)。第1の閾値(TH(1))が設定された後、検出部211は、撮像部100により撮像された画像(画像フレーム)を、クオイト・フィルタを適用して走査しながら、以下のループ処理を画素ごとに画像全体にわたって繰り返す。
【0052】
検出部211は、まず画像から7画素×7画素の領域を切り出して、画素値を取得する(ステップ1502)。7画素×7画素は、図13に示したクオイト・フィルタが収まるサイズである。検出部211は、取得した画素値にクオイト・フィルタを適用し、ディスク要素に対応する画素の画素値の平均値(DiskAvg)および最大値(DiskMax)を計算する(ステップ1503)。また、検出部211は、クオイト・フィルタのリング要素に対応する画素の画素値の平均値(RingAvg)を計算する(ステップ1504)。そして、検出部211は、クオイト・フィルタのディスク要素の画素値の平均値とリング要素の画素値の平均値との差分(QuoitDiff=DiskAvg−RingAvg)を計算し(ステップ1505)、得られた値と第1の閾値(TH(1))とを比較する。
【0053】
差分値(QuoitDiff)が第1の閾値(TH(1))よりも大きい場合(ステップ1506でYes)、検出部211は、図13(c)に示した8ビットの出力データのうち下位7ビットを用いて、差分値(QuoitDiff)を記録する(ステップ1507)。次に、検出部211は、ステップ1502で取得した画素値から、クオイト・フィルタの中心に位置する注目画素の画素値Vと第2の閾値(TH(2))とを比較する。第2の閾値(TH(2))が差分値(QuoitDiff)に基づいて定まる可変値である場合は、ステップ1506の判断の後に計算しておく。
【0054】
注目画素の画素値が第2の閾値(TH(2))以上である場合(ステップ1508でYes)、検出部211は、図13(c)に示した8ビットの出力データの最上位ビットにドットタグを付加する(ステップ1509)。そして、この8ビットの出力データを第1統計データ生成部214へ送信する(ステップ1510)。第1統計データ生成部214では、取得した出力データにしたがって、後述する統計データが生成される。注目画素の画素値が第2の閾値(TH(2))よりも小さい場合は(ステップ1508でNo)、この画素はドットを形成しないと判断されるので、検出部211は、この出力データを第1統計データ生成部214には送信しない。
【0055】
一方、差分値(QuoitDiff)が第1の閾値(TH(1))以下であった場合(ステップ1506でNo)、検出部211は、注目画素における反転レベル(RevDiff=RingAvg−注目画素の画素値V)を計算する(ステップ1511)。そして、得られた値が第3の閾値(TH(3))よりも大きい場合は、正反射ノイズと判断し、このノイズを検出したことを第2統計データ生成部215に通知する(ステップ1512、1513)。第2統計データ生成部215では、取得した正反射ノイズの検出通知にしたがって、後述する統計データが生成される。
【0056】
以上のようにして、画像フレームに対してドットの検出が行われ、統計データが生成された後、ノイズ除去部213によるノイズ除去処理に移行する(ステップ1514)。ノイズ除去処理の詳細については後述する(図22参照)。
【0057】
<第1の閾値の設定方法>
ここで、閾値設定部212による第1の閾値の設定方法について詳細に説明する。
図11を参照すると、閾値設定部212には、復号部300による復号結果と、ストローク開始信号とが供給されている。閾値設定部212は、画像フレームごとの復号結果に含まれる復号の成否の情報を受け付け、蓄積される復号履歴に基づいて、上述した第1の閾値を動的に設定する。また、閾値設定部212は、ストローク開始信号を受け付けた場合に、復号履歴を初期化する。
【0058】
画像処理装置10が後述するペン・デバイスである場合、媒体である紙面上を画像処理装置10で走査する際の走査位置や走査状態によって画像の状態が大きく変動することが想定される。そこで、本実施形態では、実際の復号の成否に基づいて、ドット検出に用いられる上記の第1の閾値を動的に変化させることで、このような画像の状態の変動に対応する。なお、ストローク開始信号により復号履歴が初期化されるので、この第1の閾値の動的な設定は、ペン・デバイスを用いた筆記のストロークごとに個別に行われることとなる。
【0059】
閾値設定部212により設定される閾値に関しては、予め上限(設定上限)、下限(設定下限)、初期値が定められる。閾値設定部212は、直前の画像フレームに対する復号が成功している場合、現在の画像フレームからのドット検出に用いる第1の閾値として、直前の画像フレームからのドット検出に用いた値をそのまま用いる(すなわち、閾値を変更しない)。一方、直前の画像フレームに対する復号が失敗した場合、現在の画像フレームからのドット検出に用いる第1の閾値を、復号履歴に基づき直前の画像フレームとは異なる値に設定する。
【0060】
閾値設定部212は、復号履歴として、取得した復号結果に基づき、閾値に対する復号の成功頻度に関する度数分布のデータを生成する。図16は、この度数分布の例を視覚的に表現したヒストグラムである。ここで、復号の成功頻度とは、単に復号が成功した回数ではなく、所定の閾値において、復号が成功した回数から復号が失敗した回数を減算した値(ただし、最小値は0)である。
【0061】
図16を参照すると、閾値設定部212は、まず、第1の閾値を初期値に設定する。そして、復号が成功するまで、画像フレームごとに第1の閾値を順次下げていく。復号が成功したならば、そのときの第1の閾値における成功頻度の度数を1加算する。成功頻度の度数が0でない所定の第1の閾値において、復号が失敗した場合は、その第1の閾値における成功頻度の度数を1減算する。
【0062】
度数分布のデータが空の場合(例えば、ストローク開始から1度も復号が成功していない場合)、第1の閾値を下げていって設定下限に達したならば、次は設定上限の値とし、同様に復号が成功するまで繰り返す。一方、成功頻度の度数が0でない第1の閾値が存在する場合、直前の画像フレームに対する復号が失敗したならば、現在の画像フレームからのドット検出に用いる第1の閾値として、成功頻度の度数が最大である値を用いる。また、第1の閾値として成功頻度の度数が最大である値を用いてドット検出を行った画像フレームで復号が失敗した場合は、次の画像フレームからのドット検出に用いる第1の閾値として、成功頻度の度数が最大である値よりも1つ小さい値を用いる。
【0063】
図17は、閾値設定部212による第1の閾値の設定動作を説明するフローチャートであり、図15に示したステップ1501の処理の詳細な内容を示す。
閾値設定部212は、検出部211による処理対象の画像フレームが、ペン・デバイスによる筆記のストロークにおける先頭の画像フレームである場合(ステップ1701でYes)、復号の成功頻度に関する度数分布データ(復号履歴)を初期化する(ステップ1702)。そして、第1の閾値を初期値に設定する(ステップ1703)。画像フレームがストロークの先頭の画像フレームか否かは、ストローク開始信号を受信したか否かによって識別される。
【0064】
検出部211による処理対象の画像フレームが、ペン・デバイスによる筆記のストロークにおける先頭の画像フレームでない場合(ステップ1701でNo)、閾値設定部212は、直前の画像フレームからのドット検出に用いられた第1の閾値(THprev)の度数分布データにおけるインデックスを取得する(ステップ1704)。そして、復号部300からフィードバックされる復号結果に基づき、直前の画像フレームに対する復号が成功したか否かを調べる。
【0065】
直前の画像フレームの復号が成功した場合(ステップ1705でYes)、閾値設定部212は、取得したインデックスの度数分布データの度数を1加算する(ステップ1706)。この場合、画像フレームからのドット検出に用いる第1の閾値は変更せず、直前の画像フレームからのドット検出に用いられた第1の閾値がそのまま用いられる。
【0066】
一方、直前の画像フレームの復号が失敗した場合(ステップ1705でNo)、度数分布データに基づいて第1の閾値が設定される。閾値設定部212は、まず、取得したインデックスの度数分布データの度数が0か否かを調べ(ステップ1707)、0でなければ、度数を1減算する(ステップ1708)。ステップ1707で度数が0である場合は、度数の最小値を0としているため、減算はしない。
【0067】
次に、閾値設定部212は、度数分布データにおいて度数が最大のインデックス(Idx_Max)を取得する(ステップ1709)。度数分布データが空でなければ(ステップ1710でNo)、最大度数インデックス(Idx_Max)が得られるので、そのインデックスの閾値(THmax)を求める(ステップ1711)。そして、この閾値(THmax)と、ステップ1704で求めた直前の画像フレームからのドット検出に用いられた第1の閾値(THprev)とを比較する。
【0068】
THmax≠THprevである場合(ステップ1712でNo)、閾値設定部212は、最大度数インデックスの閾値(THmax)を、現在の画像フレームからのドット検出に用いる第1の閾値に設定する(ステップ1713)。これに対し、THmax=THprevである場合(ステップ1712でYes)、次に閾値設定部212は、THmaxが設定下限(下限値)か否かを調べる。そして、THmaxが設定下限でなければ(ステップ1714でNo)、THmaxよりも1つ小さい値(THmax−1)を、現在の画像フレームからのドット検出に用いる第1の閾値に設定する(ステップ1715)。一方、THmaxが設定下限であるならば(ステップ1714でYes)、最大度数インデックスの閾値(THmax)を、現在の画像フレームからのドット検出に用いる第1の閾値に設定する(ステップ1713)。
【0069】
ストロークが開始されてから復号が成功しておらず、度数分布データが空である場合(ステップ1710でYes)、次に閾値設定部212は、直前の画像フレームからのドット検出に用いられた第1の閾値(THprev)と設定下限(下限値)とを比較する。そして、THprevが設定下限よりも大きい場合は(ステップ1716でYes)、THprevから一定値分下げた値(THdet)を算出する(ステップ1717)。算出された値(THdet)が設定下限よりも小さい場合は、THdetを設定下限に設定する(ステップ1718、1719)。そして、得られた値(THdet)を、現在の画像フレームからのドット検出に用いる第1の閾値に設定する(ステップ1720)。また、THprevが設定下限であった場合(ステップ1716でNo)、閾値設定部212は、設定上限の値(上限値)を、現在の画像フレームからのドット検出に用いる第1の閾値に設定する(ステップ1721)。
【0070】
なお、本実施形態では、ドットの検出にクオイト・フィルタを使用するため、クオイト・フィルタのディスク要素における画素値の平均値とリング要素における画素値の平均値との差分を評価するための第1の閾値を閾値設定部212により設定することとした。しかし、クオイト・フィルタを用いるか否かに関わらず、一般に、特定のドットを画像から検出する手法としては、ドットに該当する画素またはその画素を含む一定の領域と画像の他の部分との画素値の差分を所定の閾値と比較して評価することが行われる。そして、そのような他の手法においても、走査位置や走査状態によって生じる画像の状態の変動に対応する必要がある。したがって、実際の復号の成否に基づいて、ドット検出に用いられる閾値を動的に変化させる手法は、他の種々のドット検出の手法においても適用して良い。
【0071】
<ノイズ除去処理>
本実施形態では、ノイズ除去処理として、通常のノイズを除去する処理と、正反射を除去する処理とを行う。正反射とは、画像の読み取りの際に、トナー等で紙面上に形成された画像が、照射された光を全反射し、撮像部100において画像が飽和レベルに近くなる現象である。全反射は、1ドット単位で発生する。
【0072】
まず、通常のノイズ除去について説明する。
この処理では、撮像部100により撮像された画像に対して、32画素幅の小領域(部分領域)を5個×5個の25領域分並べた格子状領域(5×5マトリクス)が設定される。そしてさらに、この5×5マトリクスが、10個×10個の100領域を並べた格子状領域(10×10マトリクス)に変換される。この10×10マトリクスの部分領域ごとに閾値が設定され、ノイズが検出され除去される。本実施形態では、撮像部100により撮像される画像のサイズは、上述したように156画素×156画素なので、以上のように生成された10×10マトリクスで画像全体が被われることとなる。
【0073】
まず、第1統計データ生成部214が、上記の5×5マトリクスを設定し、3種類の統計データを生成して5×5マトリクスの各部分領域に登録する。統計データは、コントラストの積算値と、ディスク要素の最大値(9画素の画素値の最大値)と、検出ドット数である。ここで、コントラストとは、クオイト・フィルタによるディスク要素とリング要素の差分(QuoitDiff)である。この統計データの生成は、検出部211の出力を順次受け付けることにより、検出部211による検出処理と並行して行って良い。
【0074】
図18は、5×5マトリクスおよび統計データの例を示す図である。
第1統計データ生成部214は、5×5マトリクスを構成する部分領域ごとに、その部分領域に含まれる各画素に関して得られた差分(QuoitDiff)の値を積算し、コントラストの統計データ(図18のSc00〜Sc44)を生成する。また、5×5マトリクスを構成する部分領域ごとに、その部分領域に含まれる各画素に関するクオイト・フィルタのディスク要素の画素値の最大値(DiskMax)を選択し、最大値の統計データ(図18のMax00〜Max44)を生成する。また、5×5マトリクスを構成する部分領域ごとに、検出されたドットの数を数え、検出ドット数の統計データ(図18のCnt00〜Cnt44)を生成する。ここで、検出ドット数は、その部分領域に含まれる各画素に関するクオイト・フィルタの出力データのうちで、ドットタグが付加されているものの数である。生成されたこれらの統計データは、ノイズ除去部213に送られる。
【0075】
ノイズ除去部213は、第1統計データ生成部214から取得した統計データを用いて、コントラストの閾値および画素値の閾値を生成する。そして、検出部211によりドットとして検出された位置における元画像(撮像部100により撮像された画像)とこれらの閾値とを比較する。元画像の画素値が閾値より低い場合、または元画像における当該画素を注目画素としたときのコントラスト(QuoitDiff)が閾値より低い場合、ノイズ除去部213は、検出されたドットがノイズであると判断し、検出部211によるこのドットの検出を取り消す。これにより、ノイズが除去される。
【0076】
ここで、コントラストおよび画素値の閾値の生成方法について詳細に説明する。
ノイズ除去部213は、まず、5×5マトリクスを構成する各部分領域に関して、コントラストの平均値および最大値を求める。平均値は、第1統計データ生成部214から取得したコントラストの積算値を検出ドット数で割ることによって得られる。なお、所定の部分領域に関して検出ドット数が0である場合は、隣接する部分領域の平均値を用いて線形補間する。
【0077】
次に、ノイズ除去部213は、5×5マトリクスの各部分領域を4分割して10個×10個の100領域で構成される10×10マトリクスとする。第1統計データ生成部214から取得した統計データやノイズ除去部213が求めたコントラストの平均値および最大値は、この4分割された小領域ごとのデータに変換される。このデータは、例えば、5×5マトリクスにおける部分領域のデータを隣接する部分領域との間で線形補間することで得られる。
【0078】
図19は、部分領域の分割の様子を示す図である。
図19に示すように、5×5マトリクスにおける部分領域Aを分割して小領域A−1、A−2、A−3、A−4が得られるものとする。このとき、左上の小領域A−1のデータは、元の部分領域A、左に隣接する部分領域B、上に隣接する部分領域Cのデータの平均値とする。同様に、右上の小領域A−2のデータは、元の部分領域A、上に隣接する部分領域C、右に隣接する部分領域Dのデータの平均値とする。左下の小領域A−3のデータは、元の部分領域A、左に隣接する部分領域B、下に隣接する部分領域Eのデータに基づき線形補間して得られる。右下の小領域A−4のデータは、元の部分領域A、右に隣接する部分領域D、下に隣接する部分領域Eのデータの平均値とする。なお、線形補間の具体的な手法は、以上の方法に限定されない。
【0079】
次に、ノイズ除去部213は、この10×10マトリクスのコントラスト閾値を算出する。図20(a)に、コントラスト閾値の例を示す(Ctr00〜Ctr99)。コントラスト閾値(Ctr)は、10×10マトリクスの各小領域に対して求めたコントラストの最大値を用いて、例えば、最大値の25%等のように定める。コントラストの最大値に基づいて定めることにより、コントラスト閾値は、撮像部100により撮像された画像全体のシャープさに応じて変動することとなる。
【0080】
また、ノイズ除去部213は、10×10マトリクスの画素閾値を算出する。図20(b)に、画素閾値の例を示す(Px00〜Px99)。画素閾値(Px)は、例えば、10×10マトリクスの小領域のデータにそれぞれ変換された、コントラストの平均値Ctおよびディスク要素の画素値の最大値Mxを用いて、

Px=(Mx−Ct)/k (ただし、kは2〜4程度の値)

等のように求められる。
【0081】
次に、正反射によるノイズ(以下、正反射ノイズ)の除去について説明する。
この処理では、撮像部100により撮像された画像に対して、4画素幅の小領域(部分領域)を39個×39個の1521領域分並べた格子状領域(39×39マトリクス)が設定される。そして、この39×39マトリクスの部分領域ごとに正反射ノイズが検出され除去される。本実施形態では、撮像部100により撮像される画像のサイズは、上述したように156画素×156画素なので、以上のように生成された39×39マトリクスで画像全体が被われることとなる。
【0082】
まず、第2統計データ生成部215が、上記の39×39マトリクスを設定する。そして、この39×39マトリクスの部分領域ごとに、検出部211において正反射が起こっていると判断された画素(以下、濃度反転画素と呼ぶ)の数をカウントする。この処理は、検出部211の出力を順次受け付けることにより、検出部211による検出処理と並行して行って良い。そして、得られたデータは、ノイズ除去部213に送られる。
【0083】
図21は、39×39マトリクスの例を示す図である。
ノイズ除去部213は、39×39マトリクスの各部分領域に順次着目し、着目した部分領域およびこの部分領域の周囲に隣接する8個の部分領域のいずれかに濃度反転画素が存在する場合、着目した部分領域における検出部211によるドットの検出を取り消す。例えば、図21において、グレーの部分領域に着目している場合、太枠で囲まれた9個の部分領域のいずれかに濃度反転画素が存在するならば、斜線を付した部分領域におけるドットの検出が取り消される。これにより、正反射ノイズが除去される。
【0084】
図22は、ノイズ除去部213によるノイズ除去の動作を説明するフローチャートであり、図15に示したステップ1514の処理の詳細な内容を示す。
ノイズ除去部213は、まず、第1統計データ生成部214から取得した統計データに基づいて、5×5マトリクスの各部分領域におけるコントラスト(QuoitDiff)の平均値および最大値を算出する(ステップ2201、2202)。次に、ノイズ除去部213は、得られたデータを、10×10マトリクスのデータに変換する(ステップ2203)。そして、コントラスト閾値を算出する(ステップ2204)。
【0085】
また、ノイズ除去部213は、第1統計データ生成部214から取得したクオイト・フィルタにおけるディスク要素の最大値の統計データを、10×10マトリクスのデータに変換する(ステップ2205)。そして、画素閾値を算出する(ステップ2206)。
【0086】
この後、ノイズ除去部213は、画像(画像フレーム)を走査しながら、以下のループ処理を画素ごとに画像全体にわたって繰り返す。ただし、検出部211によるドットの検出結果からノイズを除去する処理であるから、実際には、検出部211の出力においてドットタグが付加されている画素のみについて処理が行われる。また、各ループにおいて処理対象となっている画素を対象画素と呼ぶ。
【0087】
ノイズ除去部213は、まず検出部211によるドット検出の結果から、対象画素の画素値と当該対象画素を注目画素としたときのコントラスト(QuoitDiff)とを取得する(ステップ2207)。そして、コントラストの値がコントラスト閾値よりも小さい場合、または画素値が画素閾値よりも小さい場合は、ノイズ除去部213は、対象画素におけるドットタグを除去し、検出部211によるドットの検出を取り消す(ステップ2208、2209、2210)。なお、「ドットタグを除去」するとは、検出部211の出力データからドットタグに割り当てられているビットの値を、ドットであることを表す値から他の値に変更することである。
【0088】
次に、ノイズ除去部213は、第2統計データ生成部215から取得した統計データに基づいて、対象画素を含む39×39マトリクスの部分領域に関して、その部分領域と周囲の8個の部分領域(合計9個の部分領域)のいずれかに濃度反転画素が存在するか否かを調べる。そして、濃度反転画素が存在する場合は、ノイズ除去部213は、対象画素におけるドットタグを除去し、検出部211によるドットの検出を取り消す(ステップ2211、2212)。
【0089】
なお、本実施形態では、5×5マトリクスおよび39×39マトリクスを用いて統計データを生成しノイズ除去に用いたが、各マトリクスのサイズおよび各マトリクスにおける部分領域のサイズは、上記の実施形態に限定されない。撮像部100により撮像される元画像のサイズおよび解像度、検出部210の処理能力などに応じて、適切なサイズを選択すれば良い。
【0090】
<検出されたドットの座標計算>
次に、座標計算部216によるドットの座標値の検出方法について詳細に説明する。
座標計算部216は、検出部211によりドット検出が行われた画像フレームを、改めてクオイト・フィルタを用いて走査し、ドットの位置情報を取得する。本実施形態において、ドットの位置情報は、画像フレーム上に設定された座標系(直交座標)における座標値で表されるものとする。
【0091】
座標計算部216が用いるクオイト・フィルタは、検出部211が用いるクオイト・フィルタとは異なり、ディスク要素とリング要素における画素値の差分ではなく、検出部211の出力データにおけるドットタグの有無(ドットタグが付加されているか否か)を認識し、ドットを検出する。なお、本実施形態において、検出部211により検出されたドットは、8ビットの出力データで表現されるので、厳密には多値である。しかし、座標計算部216は、検出部211によりドットの検出が行われた画像におけるドットタグの有無のみを認識してドットを検出するため、座標計算部216が入力する画像は、ドット検出に関しては二値画像として良い。以下、座標計算部216のクオイト・フィルタで検出される、ドットタグの有無のみで識別されるドットを、二値ドットと呼ぶ。また、ドットタグが付加された画素をオン(ON)画素と呼び、ドットタグを付加されていない画素をオフ(OFF)画素と呼ぶ。
【0092】
図23は、座標計算部216によるクオイト・フィルタを用いた二値ドット検出の概念を説明する図である。
上述したように、座標計算部216により用いられるクオイト・フィルタは、ドットタグの有無のみを見る。そのため、図23(a)および図23(c)に示すように、ディスク要素Dとリング要素Rの両方にオン画素が存在する場合は、ディスク要素Dとリング要素Rの検出結果に差分が生じない。図23(b)に示すように、ディスク要素Dとリング要素Rの両方にオン画素が存在しない場合も同様である。これに対し、ディスク要素Dにオン画素が存在し、リング要素Rにオン画素が存在しない場合は、図23(d)に示すように、ディスク要素Dとリング要素Rの検出結果に差分が生じる。したがって、ディスク要素Dにオン画素があり、リング要素Rが全てオフ画素である場合に、オン画素の部分が二値ドットとして検出される。
【0093】
本実施形態では、実際に撮像されるドットの形状や大きさにある程度のばらつきがあることを考慮して、サイズの異なる複数のクオイト・フィルタが用いられる。すなわち、ディスク要素の小さいクオイト・フィルタのみを用いて走査すると、ディスク要素よりも大きいドットが検出されずに漏れてしまう。また、ディスク要素の大きいクオイト・フィルタのみを用いて走査すると、複数の小さいドットが近接している場合に、1つの二値ドットとして誤認識してしまうおそれがある。そこで、サイズの異なる複数のクオイト・フィルタを個別に用いることで、これらのような不都合を回避する。以下では、ディスク要素のサイズが1画素×1画素、2画素×2画素、3画素×3画素の3種類のクオイト・フィルタを用いる場合を例として説明する。
【0094】
図24は、3種類のクオイト・フィルタの構成例を示す図である。
図24(a)を参照すると、ディスク要素Dのサイズが1画素×1画素のクオイト・フィルタ(以下、1×1フィルタと呼ぶ)は、1画素のサイズのディスク要素Dと、その周囲の8画素を含むリング要素Rとを備える。図24(b)を参照すると、ディスク要素Dのサイズが2画素×2画素のクオイト・フィルタ(以下、2×2フィルタと呼ぶ)は、4(=2×2)画素のサイズのディスク要素Dと、その周囲の12画素を含むリング要素Rとを備える。図24(c)を参照すると、ディスク要素Dのサイズが3画素×3画素のクオイト・フィルタ(以下、3×3フィルタと呼ぶ)は、9(=3×3)画素のサイズのディスク要素Dと、その周囲の16画素を含むリング要素Rとを備える。
【0095】
また、図24に示す各クオイト・フィルタにおいて、太枠で示した画素が処理対象である注目画素である。1×1フィルタおよび3×3フィルタでは、中心に位置する画素が注目画素となっているが、2×2フィルタでは、中心に画素が存在しないため、中心付近の特定の画素(図では左上の画素)が注目画素とされる。
【0096】
座標計算部216は、これらのクオイト・フィルタを、ディスク要素Dのサイズが小さいものを優先させて適用し、画像フレームを走査する。具体的には、例えば、サイズの小さいクオイト・フィルタから順に適用して走査する方法と、各クオイト・フィルタを同時に適用して走査し、サイズの小さいクオイト・フィルタによる検出を優先させる方法とが考えられる。検出された二値ドットは、他のクオイト・フィルタによる走査の邪魔にならないように、画像フレームから除去される。サイズが小さいクオイト・フィルタを優先させるのは、サイズが大きいクオイト・フィルタを適用した場合における小さい二値ドットに対する誤認識を回避するためである。
【0097】
図25乃至図27を参照して、座標計算部216による走査と二値ドットの検出の様子を説明する。
図25は、二値ドットが配置された一定領域の例を示す図、図26は、サイズの小さいクオイト・フィルタから順に適用して走査する様子を示す図、図27は、複数のクオイト・フィルタを同時に適用して走査する様子を示す図である。図26および図27において、各クオイト・フィルタのリング要素は、斜線を付して示されている。また、各クオイト・フィルタの注目画素は、グレーの太枠で示されている。二値ドットは黒で示されているが、クオイト・フィルタを適用した走査で検出されて除去された二値ドットはグレーで示されている。
【0098】
図26に示す例では、まず1×1フィルタが適用され、2つの二値ドットが検出される(図26(a)および図26(b)参照)。次に、2×2フィルタが適用され、1つの二値ドットが検出される(図26(c)参照)。次に、3×3フィルタが適用され、1つの二値ドットが検出される(図26(d)参照)。以上のようにして、全ての二値ドットが検出された(図26(e)参照)。ここで、図26(d)を参照すると、3×3フィルタのリング要素が、図26(a)で検出された二値ドットに掛かっている。しかし、この二値ドットは検出された後に除去されているので、図26(d)の時点ではオフ画素となっており、4画素で構成されるT字型の二値ドットが適切に検出された。
【0099】
図27に示す例では、3つのクオイト・フィルタが同時に適用されるので、2画素×2画素の正方形の二値ドット(図27(a)参照)、1画素の二値ドット(図27(b)参照)、4画素のT字型の二値ドット(図27(c)参照)、1画素の二値ドット(図27(d)参照)の順で順次検出される。以上のようにして、全ての二値ドットが検出された(図27(e)参照)。ここで、図27(a)で検出される4画素の二値ドットは、1×1フィルタでは検出されないが、2×2フィルタおよび3×3フィルタで検出される。しかし、サイズが小さいクオイト・フィルタによる検出が優先されるので、2×2フィルタで検出された結果が採用される。同様に、図27(b)および図27(d)では、最もサイズが小さい1×1フィルタの検出結果が採用される。
【0100】
また、座標計算部216は、検出された二値ドットの位置(座標値)を、二値ドットに該当する画素の位置で示すのではなく、二値ドットの重心位置という概念を用いて示す。これは、二値ドットの検出においてサイズの異なる複数のクオイト・フィルタを用いるのと同様に、実際に撮像されるドットの形状や大きさのばらつきに対応するためである。すなわち、二値ドットが常に1画素に対応しているのであれば、二値ドットとして検出された画素の位置を、二値ドット自身の位置とすれば良い。しかし、二値ドットが複数の画素で構成される場合は、その二値ドットの位置について定義することが必要となる。そこで、この定義された二値ドットの位置を重心位置と呼ぶ。
【0101】
二値ドットの重心位置については、種々の定義が考えられる。最も単純な定義としては、座標計算部216により検出された、クオイト・フィルタのディスク要素におけるオン画素によって形成される図形の重心を、二値ドットの重心位置とすることが考えられる。また、元画像(撮像部100により撮像された画像)における二値ドットに対応する画素の画素値を用いて、二値ドットの重心位置を定義しても良い。さらに、検出部211により検出されたコントラスト(QuoitDiff)を用いて、二値ドットの重心位置を定義しても良い。いずれの場合も、その二値ドットを代表する特定点を設定し、その特定点の位置によって二値ドットの重心位置を表すこととなる。
【0102】
ところで、画像フレーム上に設定される座標系は、最も単純には、1画素を座標値の単位に対応させることが考えられる。しかし、二値ドットの重心位置は、上述したように、1画素単位よりも高い精度で表す必要がある。そこで、本実施形態では、画素単位で設定された座標系に対して座標空間をN倍に拡大した座標値を用いて、重心位置を表現する。ここで、座標空間をN倍にするとは、直交する座標軸の各々をN倍することを意味するものとする。例えば、156×156の座標空間を10倍にすると、1560×1560の座標空間に変換されるものとする。
【0103】
<座標計算部の動作例>
次に、検出部211により検出されたコントラスト(QuoitDiff)を用いて二値ドットの重心位置を定義した場合を例として、座標計算部216による二値ドットの座標計算の具体例を説明する。
【0104】
図28は、座標計算部216の動作を説明するフローチャートである。
図28を参照すると、座標計算部216は、まず、検出ドット位置数(iPointNum)を初期化する(ステップ2801)。検出ドット位置数とは、二値ドットの位置情報をいくつ検出したか(座標値をいくつ計算したか)を数えた数であり、初期化により値が0となる。
【0105】
次に、座標計算部216は、クオイト・フィルタを適用して画像(画像フレームを走査しながら、以下のループ処理を画素ごとに画像全体にわたって繰り返す。ループ処理の各サイクルにおいて、処理対象であるクオイト・フィルタの注目画素の位置(走査位置)をX=i、Y=jとする。(X,Y)は、画素単位の座標系における座標値である。
【0106】
座標計算部216は、まず走査位置の注目画素がオン画素か否かを調べる。注目画素がオン画素でなければ(ステップ2802でNo)、次の画素(走査位置)へ進む。
一方、走査位置の注目画素がオン画素である場合(ステップ2802でYes)、次に座標計算部216は、注目画素を中心とする5画素×5画素の領域における各画素に関して、検出部211の出力データを取得する(ステップ2803)。そして、1×1フィルタ、2×2フィルタ、3×3フィルタの各々について、リング要素からオン画素を検出する(ステップ2804〜2806)。
【0107】
図29は、オン画素の探索対象である5画素×5画素の領域および各クオイト・フィルタのリング要素を示す図である。図29(a)は5画素×5画素の領域を示し、画素番号33の画素(以下、「画素33」と表記)が注目画素である。図29(b)は1×1フィルタのリング要素、図29(c)は2×2フィルタのリング要素、図29(d)は3×3フィルタのリング要素をそれぞれ示す。図29(b)〜(d)において、リング要素に該当する画素は、グレーで示され、画素番号が濃い太字で表されている。
【0108】
図29を参照してステップ2803〜2806の動作を説明すると、まず、ステップ2803では、Px11〜Px55が取得される。ただし、Px○○は、図29の画素○○における検出部211の出力データのうち、最上位ビットの値である。また、検出部211の出力データにおける最上位ビットの値は、オン画素の場合が1、オフ画素の場合が0であるものとする。
【0109】
次に、ステップ2804では、

Ring1×1=
Px22|Px23|Px24|Px32|Px34|Px42|Px43|Px44

が計算される。ここで、Ring1×1は、1×1フィルタのリング要素に関する値である。また、符号|は、論理和(or)である。したがって、図29(b)において、いずれかの画素がオン画素であればRing1×1=1であり、全ての画素がオフ画素であればRing1×1=0である。
【0110】
同様に、ステップ2805では、

Ring2×2=
Px22|Px23|Px24|Px25|Px32|Px35|Px42|Px45|Px52|Px53|Px54|Px55

が計算され、ステップ2806では、

Ring3×3=
Px11|Px12|Px13|Px14|Px15|Px21|Px25|Px31|Px35|Px41|Px45|Px51|Px52|Px53|Px54|Px55

が計算される。
【0111】
次に、座標計算部216は、3種類のクオイト・フィルタのうち、リング要素の全ての画素がオフ画素であるものがあるかを調べる。言い換えれば、ステップ2804〜2806で、Ring1×1=0、Ring2×2=0、Ring3×3=0のいずれかが得られたかどうかが判断される。そして、全てのクオイト・フィルタで、リング要素にオン画素がある場合(ステップ2807でNo)、座標計算部216は、現在の走査位置での処理を終了し、次の走査位置で(隣の画素を注目画素として)ステップ2802以降の処理を繰り返す。
【0112】
一方、少なくとも1つのクオイト・フィルタでリング要素の全ての画素がオフ画素であった場合(ステップ2807でYes)、座標計算部216は、そのクオイト・フィルタに応じて、二値ドットの重心位置の座標計算処理を行う(ステップ2808)。このとき、複数のクオイト・フィルタでリング要素の全ての画素がオフ画素であった場合は、サイズの小さいクオイト・フィルタに応じて処理が行われる。また、二値ドットの重心位置を表す座標系としては、画素単位で設定された座標系に対して座標空間をN倍に拡大した座標系が用いられる。
【0113】
図30は、ステップ2808の座標計算処理の詳細を説明するフローチャートである。
図30に示すように、座標計算部216は、まず、注目画素を含む4画素×4画素の領域の各画素のコントラスト(QuoitDiff)を取得する(ステップ3001)。ここで、取得対象を4画素×4画素の領域としたのは、2×2フィルタにおいて注目画素の位置がディスク要素の中心ではなく偏っていることを考慮したものである。したがって、図29(a)に示した5画素×5画素の領域を参酌すると、画素22〜25、32〜35、42〜45、52〜55の範囲がコントラストの取得対象となる。また、コントラストの値は、検出部211の出力データから下位7ビットの値を抽出して得られる。
【0114】
次に、座標計算部216は、Ring1×1、Ring2×2、Ring3×3の値を調べ、座標変位計算処理を行う。まず、Ring1×1=0である場合(ステップ3002でYes)、1×1フィルタに応じた座標変位計算処理が行われる(ステップ3003)。次に、Ring2×2=0である場合(ステップ3002でNo、ステップ3004でYes)、2×2フィルタに応じた座標変位計算処理が行われる(ステップ3005)。最後に、Ring3×3=0である場合(ステップ3004でNo、ステップ3006でYes)、3×3フィルタに応じた座標変位計算処理が行われる(ステップ3007)。以上の手順によって、サイズの小さいクオイト・フィルタによる検出が優先されることとなる。
【0115】
この後、座標計算部216は、ステップ3003、3005、3007のいずれかの計算結果に基づき、二値ドットの重心位置の座標値を求める(ステップ3008)。ステップ3003、3005、3007で求まる座標変位を(DeltaX,DeltaY)とすると、注目画素の位置がX=i、Y=jであり、座標空間をN倍するから、二値ドットの重心位置の座標(x,y)は、

x=i×N+DeltaX,y=j×N+DeltaY

で算出される。最後に、座標計算部216は、検出ドット位置数を1加算し(ステップ3009)、座標計算処理を終了する。
【0116】
図31は、ステップ3003の座標変位計算処理の詳細を説明するフローチャート、図32は、ステップ3005の座標変位計算処理の詳細を説明するフローチャート、図33は、ステップ3007の座標変位計算処理の詳細を説明するフローチャートである。
各処理では、まず、SumAll、LeftWeight、RightWeight、UpperWeight、LowerWeightの5つの変数が計算される。
【0117】
1×1フィルタで二値ドットが検出された場合、図31に示すように、

SumAll=
Diff22+Diff23+Diff24+Diff32+Diff33+
Diff34+Diff42+Diff43+Diff44

LeftWeight=Diff22+Diff32+Diff42

RightWeight=Diff24+Diff34+Diff44

UpperWeight=Diff22+Diff23+Diff24

LowerWeight=Diff42+Diff43+Diff44

である(ステップ3101〜3105)。
【0118】
また、2×2フィルタで二値ドットが検出された場合、図32に示すように、

SumAll=
Diff22+Diff23+Diff24+Diff25+Diff32+
Diff33+Diff34+Diff35+Diff42+Diff43+
Diff44+Diff45+Diff52+Diff53+Diff54+
Diff55

LeftWeight=
Diff22+Diff23+Diff32+Diff33+Diff42+
Diff43+Diff52+Diff53

RightWeight=
Diff24+Diff25+Diff34+Diff35+Diff44+
Diff45+Diff54+Diff55

UpperWeight=
Diff22+Diff23+Diff24+Diff25+Diff32+
Diff33+Diff34+Diff35

LowerWeight=
Diff42+Diff43+Diff44+Diff45+Diff52+
Diff53+Diff54+Diff55

である(ステップ3201〜3205)。
【0119】
また、3×3フィルタで二値ドットが検出された場合、図33に示すように、

SumAll=
Diff22+Diff23+Diff24+Diff32+Diff33+
Diff34+Diff42+Diff43+Diff44

LeftWeight=Diff22+Diff32+Diff42

RightWeight=Diff24+Diff34+Diff44

UpperWeight=Diff22+Diff23+Diff24

LowerWeight=Diff42+Diff43+Diff44

である(ステップ3301〜3305)。
【0120】
次に、得られた変数を用いて、座標変位量が次式により計算される(ステップ3106、3206、3306)。

DeltaX=
N×(−RightWeight+LeftWeight)/SumAll

DeltaY=
N×(−UpperWeight+LowerWeight)/SumAll
【0121】
この後、クオイト・フィルタのディスク要素におけるドットタグが除去され、処理が終了する。
1×1フィルタで二値ドットが検出された場合の処理では、図31に示すように、走査位置の注目画素におけるドットタグが除去される(ステップ3107)。2×2フィルタで二値ドットが検出された場合の処理では、図32に示すように、走査位置の注目画素を含む2画素×2画素の領域におけるドットタグが除去される(ステップ3207)。3×3フィルタで二値ドットが検出された場合の処理では、図33に示すように、走査位置の注目画素を中心とする3画素×3画素の領域におけるドットタグが除去される(ステップ3307)。
【0122】
<ペン・デバイスの構成>
次に、本実施の形態における画像処理装置10の具体的なハードウェア構成について説明する。ここでは、画像処理装置10を実現するペン・デバイスの構成例について説明する。
図34は、ペン・デバイスの機構を示した図である。
図示するように、ペン・デバイス60は、ペン全体の動作を制御する制御回路61を備える。制御回路61は、入力画像から検出した符号画像を処理する画像処理部61aと、そこでの処理結果から識別情報及び座標情報を抽出するデータ処理部61bとを含む。また、特に図示しないが、制御回路61は、これら画像処理部61aおよびデータ処理部61bを動作させるためのプログラムを格納する不揮発性メモリとを含む。この制御回路61には、ペン・デバイス60による筆記動作をペンチップ69に加わる圧力によって検出する圧力センサ62が接続されている。また、媒体上に赤外光を照射する赤外LED63と、画像を入力する赤外CMOS64も接続されている。さらに、識別情報及び座標情報を記憶するための情報メモリ65と、外部装置と通信するための通信回路66と、ペンを駆動するためのバッテリ67と、ペンの識別情報(ペンID)を記憶するペンIDメモリ68も接続されている。
【0123】
図9に示した画像処理装置10において、撮像部100は、例えば、図34の赤外CMOS64にて実現される。また、ドット解析部200は、例えば、図34の画像処理部61aにて実現される。さらに、復号部300は、例えば、図34のデータ処理部61bにて実現される。なお、画像処理装置10は、図34に示すようなペン・デバイス60の他、画像処理部61a又はデータ処理部61bにて実現される機能を、例えば、汎用のコンピュータで実現しても良い。
【0124】
画像処理部61aおよびデータ処理部61bの機能を実現するプログラムは、通信手段を介して提供したり、CD−ROM等の記録媒体に格納して提供したりすることができる。また、制御回路61に含まれる上述した不揮発性メモリに格納して提供しても良い。
【図面の簡単な説明】
【0125】
【図1】本実施形態で用いられる単位符号パターン、情報ブロック、紙面(媒体)の関係を示す図である。
【図2】mCn方式における単位符号パターンの例を示す図である。
【図3】図2に示した単位符号パターンの種類を網羅的に示した図である。
【図4】9C2方式における単位符号パターンとパターン値との対応を示す図である。
【図5】9C2方式における同期パターンの例を示す図である。
【図6】情報ブロックの構成例を示す図である。
【図7】本実施形態における識別情報と座標情報を表現するためのレイアウトの例を示す図である。
【図8】M系列を用いた座標情報の符号化の例を示す図である。
【図9】本実施形態の画像処理装置の機能構成例を示す図である。
【図10】本実施形態のドット解析部および復号部による処理の流れを示すフローチャートである。
【図11】本実施形態の位置検出部の機能構成を示す図である。
【図12】本実施形態におけるクオイト・フィルタを用いたドット検出の概念を説明する図である。
【図13】本実施形態で用いられるクオイト・フィルタの構成例を示す図である。
【図14】図13に示したクオイト・フィルタを用いて画像を走査する様子を示す図である。
【図15】本実施形態の検出部によるドット検出処理を説明するフローチャートである。
【図16】復号の成功頻度に関する度数分布の例を視覚的に表現したヒストグラムである。
【図17】本実施形態の閾値設定部による第1の閾値の設定動作を説明するフローチャートである。
【図18】本実施形態で用いられる5×5マトリクスおよび統計データの例を示す図である。
【図19】部分領域の分割の様子を示す図である。
【図20】本実施形態で用いられるコントラスト閾値および画素閾値の例を示す図である。
【図21】本実施形態で用いられる39×39マトリクスおよび統計データの例を示す図である。
【図22】本実施形態のノイズ除去部によるノイズ除去の動作を説明するフローチャートである。
【図23】本実施形態の座標計算部によるクオイト・フィルタを用いた二値ドット検出の概念を説明する図である。
【図24】本実施形態で用いられる3種類のクオイト・フィルタの構成例を示す図である。
【図25】二値ドットが配置された一定領域の例を示す図である。
【図26】サイズの小さいクオイト・フィルタから順に適用して走査する様子を示す図である。
【図27】複数のクオイト・フィルタを同時に適用して走査する様子を示す図である。
【図28】本実施形態の座標計算部の動作を説明するフローチャートである。
【図29】本実施形態におけるオン画素の探索対象である5画素×5画素の領域および各クオイト・フィルタのリング要素を示す図である。
【図30】図28のステップ2808の座標計算処理の詳細を説明するフローチャートである。
【図31】図30のステップ3003の座標変位計算処理の詳細を説明するフローチャートである。
【図32】図30のステップ3005の座標変位計算処理の詳細を説明するフローチャートである。
【図33】図30のステップ3007の座標変位計算処理の詳細を説明するフローチャートである。
【図34】画像処理装置であるペン・デバイスの機構を示した図である。
【符号の説明】
【0126】
10…画像処理装置、100…撮像部、200…ドット解析部、210…位置検出部、211…検出部、212…閾値設定部、213…ノイズ除去部、214…第1統計データ生成部、215…第2統計データ生成部、216…座標計算部、220…角度検出部、230…同期化部、300…復号部

【特許請求の範囲】
【請求項1】
撮像装置により撮像された画像から単位画像を検出する検出部と、
一定の領域からなるディスク要素と当該ディスク要素の周囲に設けられたリング要素とを備えるフィルタを適用して、前記単位画像が検出された二値画像を走査し、当該ディスク要素に含まれるサイズの単位画像を検出した際の当該二値画像上での当該フィルタの位置に基づき、当該単位画像の位置情報を取得する位置情報取得部と
を備えることを特徴とする画像処理装置。
【請求項2】
前記位置情報取得部は、前記フィルタを適用して検出した画素を含む一定領域に存在する複数の画素の画素値に基づいて、前記単位画像の特定点を求め、当該特定点の位置情報を当該単位画像の位置情報とすることを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記位置情報取得部は、前記ディスク要素のサイズが異なる複数の前記フィルタをそれぞれ適用して前記二値画像を走査し、個別に前記単位画像を検出することを特徴とする請求項1に記載の画像処理装置。
【請求項4】
前記位置情報取得部は、複数の前記フィルタを適用した検出のうち、サイズの小さい前記フィルタによる検出を優先させることを特徴とする請求項3に記載の画像処理装置。
【請求項5】
前記位置情報取得部は、サイズの小さい前記フィルタから順に適用して前記二値画像を走査することを特徴とする請求項2に記載の画像処理装置。
【請求項6】
前記位置情報取得部は、所定の前記フィルタで検出された前記単位画像を前記二値画像から順次除去することを特徴とする請求項2に記載の画像処理装置。
【請求項7】
単位画像が形成された媒体表面を撮像する撮像部と、
前記撮像部により撮像された画像から前記単位画像を検出する検出部と、
一定の領域からなるディスク要素と当該ディスク要素の周囲に設けられたリング要素とを備えるフィルタを適用して、前記単位画像が検出された二値画像を走査し、当該ディスク要素に含まれるサイズの単位画像を検出した際の当該二値画像上での当該フィルタの位置に基づき、当該単位画像の位置情報を取得する位置情報取得部と
を備えることを特徴とするペン・デバイス。
【請求項8】
前記位置情報取得部は、前記フィルタを適用して検出した画素を含む一定領域に存在する複数の画素の画素値に基づいて、前記単位画像の特定点を求め、当該特定点の位置情報を当該単位画像の位置情報とすることを特徴とする請求項7に記載のペン・デバイス。
【請求項9】
前記位置情報取得部は、前記ディスク要素のサイズが異なる複数の前記フィルタをそれぞれ適用して前記二値画像を走査し、個別に前記単位画像を検出することを特徴とする請求項7に記載のペン・デバイス。
【請求項10】
前記位置情報取得部は、複数の前記フィルタを適用した検出のうち、サイズの小さい前記フィルタによる検出を優先させることを特徴とする請求項9に記載のペン・デバイス。
【請求項11】
コンピュータに、
撮像装置により撮像された画像から単位画像を検出する処理と、
一定の領域からなるディスク要素と当該ディスク要素の周囲に設けられたリング要素とを備えるフィルタを適用して、前記単位画像が検出された二値画像を走査し、当該ディスク要素に含まれるサイズの単位画像を検出した際の当該二値画像上での当該フィルタの位置に基づき、当該単位画像の位置情報を取得する処理と
を実行させるためのプログラム。
【請求項12】
前記単位画像の位置情報を取得する処理では、前記フィルタを適用して検出した画素を含む一定領域に存在する複数の画素の画素値に基づいて、前記単位画像の特定点を求め、当該特定点の位置情報を当該単位画像の位置情報とすることを特徴とする請求項11に記載のプログラム。
【請求項13】
前記単位画像の位置情報を取得する処理では、前記ディスク要素のサイズが異なる複数の前記フィルタをそれぞれ適用して前記二値画像を走査し、個別に前記単位画像を検出することを特徴とする請求項11に記載のプログラム。
【請求項14】
前記単位画像の位置情報を取得する処理では、複数の前記フィルタを適用した検出のうち、サイズの小さい前記フィルタによる検出を優先させることを特徴とする請求項13に記載のプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate

【図30】
image rotate

【図31】
image rotate

【図32】
image rotate

【図33】
image rotate

【図34】
image rotate


【公開番号】特開2009−175931(P2009−175931A)
【公開日】平成21年8月6日(2009.8.6)
【国際特許分類】
【出願番号】特願2008−12534(P2008−12534)
【出願日】平成20年1月23日(2008.1.23)
【出願人】(000005496)富士ゼロックス株式会社 (21,908)
【Fターム(参考)】