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