(57)【要約】【課題】ビット列を特定できない誤りパターン画像の検出状況に応じて、誤った復号結果を得る確率を制御する。【解決手段】各種状況に応じて復号レベルを設定する復号レベル設定部１０と、画像を読み取る画像読取部２１と、画像からドットを検出してドット配列を生成するドット配列生成部２２と、ドット配列からブロックを検出して符号配列を生成するブロック検出部２３と、符号配列から同期符号を検出する同期符号検出部２４と、同期符号に基づいて識別符号を検出する識別符号検出部３０と、設定された復号レベルで識別符号を復号して識別情報を取得する識別符号復号部３２と、同期符号に基づいて座標符号を検出するＸ座標符号検出部４０及びＹ座標符号検出部４５と、座標符号を復号して座標情報を取得するＸ座標符号復号部４２及びＹ座標符号復号部４７と、識別情報及び座標情報を出力する情報出力部５０とを備える。【選択図】図１３
2009176251.tif 000002
【特許請求の範囲】
【請求項１】
媒体及び当該媒体に印刷された文書画像の少なくとも何れか一方の識別情報を誤り訂正符号化して得られた複数のビット列の各々に対応する複数のパターン画像を取得する取得手段と、
前記複数のパターン画像のうちの対応するビット列を特定できないパターン画像である誤りパターン画像を検出する検出手段と、
前記複数のパターン画像のうちの前記誤りパターン画像以外のパターン画像に対応するビット列を特定する特定手段と、
前記特定手段により特定されたビット列を用いて誤り訂正復号を行うことにより前記識別情報を取得できる可能性があっても、前記誤りパターン画像の検出状況に応じて、当該誤り訂正復号を行うかどうかを決定する決定手段と
を備えたことを特徴とする画像処理装置。
【請求項２】
前記決定手段は、前記誤りパターン画像の検出数と予め定められた前記誤りパターン画像の許容数との比較結果に応じて、前記誤り訂正復号を行うかどうかを決定することを特徴とする請求項１記載の画像処理装置。
【請求項３】
前記媒体から前記複数のパターン画像を読み取る機器が当該媒体に接してから離れるまでに移動する距離に応じて、前記誤りパターン画像の許容数を設定する設定手段を更に備えたことを特徴とする請求項２記載の画像処理装置。
【請求項４】
前記設定手段は、前記機器が前記媒体に筆記するための状態であるか前記媒体上の所定の位置を指示するための状態であるかを示す状態情報に基づいて、前記移動する距離の長短を判定することを特徴とする請求項３記載の画像処理装置。
【請求項５】
前記設定手段は、前記機器が接している前記媒体上の領域を特定する情報と、前記媒体上の各領域が筆記用の領域であるか指示用の領域であるかを示す情報との照合結果に基づいて、前記移動する距離の長短を判定することを特徴とする請求項３記載の画像処理装置。
【請求項６】
前記媒体から前記複数のパターン画像を読み取る機器が当該媒体に接して以降に当該複数のパターン画像を読み取った回数に応じて、前記誤りパターン画像の許容数を設定する設定手段を更に備えたことを特徴とする請求項２記載の画像処理装置。
【請求項７】
前記特定手段は、前記複数のパターン画像のうちの前記誤りパターン画像以外のパターン画像に対応するビット列として、前記機器が前記媒体に接してから現在までに読み取った対応するパターン画像に基づいて決定されるビット列を採用し、
前記設定手段は、前記機器が前記媒体に接して以降に前記複数のパターン画像を読み取るごとに、前記誤りパターン画像の許容数に対して、当該許容数を増加させる処理及び当該許容数を変えない処理の少なくとも何れか一方を施すことを特徴とする請求項６記載の画像処理装置。
【請求項８】
コンピュータに、
媒体及び当該媒体に印刷された文書画像の少なくとも何れか一方の識別情報を誤り訂正符号化して得られた複数のビット列の各々に対応する複数のパターン画像を取得する機能と、
前記複数のパターン画像のうちの対応するビット列を特定できないパターン画像である誤りパターン画像を検出する機能と、
前記複数のパターン画像のうちの前記誤りパターン画像以外のパターン画像に対応するビット列を特定する機能と、
特定されたビット列を用いて誤り訂正復号を行うことにより前記識別情報を取得できる可能性があっても、前記誤りパターン画像の検出状況に応じて、当該誤り訂正復号を行うかどうかを決定する機能と
を実現させるためのプログラム。
【請求項９】
前記決定する機能では、前記誤りパターン画像の検出数と予め定められた前記誤りパターン画像の許容数との比較結果に応じて、前記誤り訂正復号を行うかどうかを決定することを特徴とする請求項８記載のプログラム。
【請求項１０】
前記媒体から前記複数のパターン画像を読み取る機器が当該媒体に接してから離れるまでに移動する距離に応じて、前記誤りパターン画像の許容数を設定する機能を更に前記コンピュータに実現させるための請求項９記載のプログラム。
【請求項１１】
前記媒体から前記複数のパターン画像を読み取る機器が当該媒体に接して以降に当該複数のパターン画像を読み取った回数に応じて、前記誤りパターン画像の許容数を設定する機能を更に前記コンピュータに実現させるための請求項９記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、プログラムに関する。
【背景技術】
【０００２】
表面上の複数の位置を符号化する位置コードを提供する方法は知られている（例えば、特許文献１参照）。この特許文献１では、循環数字列を表面に沿って複数回印刷する。その際、循環数字列の異なるローテーションを、隣り合う数字列間で所定のずれが起こるように使用し、表面を分割した複数のコードウィンドウが、少なくとも３つの循環数字列を備えると共に、隣り合うコードウィンドウの１つの数字列と重なり合う１つの数字列を有するものであり、また、コードウィンドウの位置を、そのコードウィンドウに属している循環数字列間のずれによって符号化している。
【０００３】
論理的に順位付けられたデジタル量子の機械読取り可能なエンコーディングを記録した記録媒体からのエンコーディングの空間的に非同期的な読取りを可能にする技術も知られている（例えば、特許文献２参照）。この特許文献２では、本質的に同一であるエンコーディングの多数のコピーを形成し、機械認識可能な空間同期指標をエンコーディングのコピーの各々の中のプリント位置に組み合わせて、エンコーディングの空間的に同期可能な多数の事例を提供し、それらの事例をレイアウト規則に従って記録媒体における空間的に周期的な中心の格子に書き込んでいる。
【０００４】
取り込まれた画像の位置をより大きい画像から決定するためのシステム及び方法も知られている（例えば、特許文献３参照）。この特許文献３では、非反復的な系列を、所定のサイズのサブウィンドウ毎に固有とされた非反復的な配列に折り畳み、その取り込まれた位置を非反復的な配列内のサブウィンドウ毎に決定することによって、取り込まれた画像の位置を、より大きいサブウィンドウの画像から決定している。
【０００５】
光学的に読み取り可能に記録されるマルチメディア情報の長時間記録及び繰り返し再生を可能とする技術も知られている（例えば、特許文献４参照）。この特許文献４において、記録装置は、プリンタシステムや印刷用製版システムにより、オーディオ情報、映像情報、ディジタルコードデータ等を含めた所謂マルチメディア情報を光学的に読み取り可能なドットコードとして、画像や文字と一緒に紙等の媒体上に記録する。ペン型の情報再生装置は、ドットコードの手動走査に応じてそのドットコードを順次取り込んで、元のオーディオ情報を音声出力器にて、元の映像情報を表示装置にて、元のディジタルコードデータをページプリンタ等にて出力する。
【０００６】
タブレットを使用せずに、媒体上の座標を精緻に検出できるようにする技術も知られている（例えば、特許文献５参照）。この特許文献５において、ペン型の座標入力装置は、媒体上に形成されその媒体上の座標を示すコードシンボルを光学的に読み取り、この読み取ったコードシンボルをデコードし、読み取った画像中におけるコードシンボルの位置、向き及び歪み量を検出する。そして、デコード後の情報と、コードシンボルの位置、向き及び歪み量とにより、先端部の媒体上での位置の座標を検出する。
【０００７】
【特許文献１】特表２００３−５１１７６２号公報
【特許文献２】特開平９−１８５６６９号公報
【特許文献３】特開２００４−１５２２７３号公報
【特許文献４】特開平６−２３１４６６号公報
【特許文献５】特開２０００−２９３３０３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
ここで、一般に、所定の情報を誤り訂正符号化して得られたビット列に対応するもののそのビット列を特定できない誤りパターン画像が検出された場合に、その検出状況を考慮することなく誤り訂正復号を行うと、誤った復号結果を得る確率は変わることがなかった。
本発明の目的は、ビット列を特定できない誤りパターン画像の検出状況に応じて、誤った復号結果を得る確率を制御することにある。
【課題を解決するための手段】
【０００９】
請求項１に記載の発明は、媒体及び当該媒体に印刷された文書画像の少なくとも何れか一方の識別情報を誤り訂正符号化して得られた複数のビット列の各々に対応する複数のパターン画像を取得する取得手段と、前記複数のパターン画像のうちの対応するビット列を特定できないパターン画像である誤りパターン画像を検出する検出手段と、前記複数のパターン画像のうちの前記誤りパターン画像以外のパターン画像に対応するビット列を特定する特定手段と、前記特定手段により特定されたビット列を用いて誤り訂正復号を行うことにより前記識別情報を取得できる可能性があっても、前記誤りパターン画像の検出状況に応じて、当該誤り訂正復号を行うかどうかを決定する決定手段とを備えたことを特徴とする画像処理装置である。
請求項２に記載の発明は、前記決定手段は、前記誤りパターン画像の検出数と予め定められた前記誤りパターン画像の許容数との比較結果に応じて、前記誤り訂正復号を行うかどうかを決定することを特徴とする請求項１記載の画像処理装置である。
請求項３に記載の発明は、前記媒体から前記複数のパターン画像を読み取る機器が当該媒体に接してから離れるまでに移動する距離に応じて、前記誤りパターン画像の許容数を設定する設定手段を更に備えたことを特徴とする請求項２記載の画像処理装置である。
請求項４に記載の発明は、前記設定手段は、前記機器が前記媒体に筆記するための状態であるか前記媒体上の所定の位置を指示するための状態であるかを示す状態情報に基づいて、前記移動する距離の長短を判定することを特徴とする請求項３記載の画像処理装置である。
請求項５に記載の発明は、前記設定手段は、前記機器が接している前記媒体上の領域を特定する情報と、前記媒体上の各領域が筆記用の領域であるか指示用の領域であるかを示す情報との照合結果に基づいて、前記移動する距離の長短を判定することを特徴とする請求項３記載の画像処理装置である。
請求項６に記載の発明は、前記媒体から前記複数のパターン画像を読み取る機器が当該媒体に接して以降に当該複数のパターン画像を読み取った回数に応じて、前記誤りパターン画像の許容数を設定する設定手段を更に備えたことを特徴とする請求項２記載の画像処理装置である。
請求項７に記載の発明は、前記特定手段は、前記複数のパターン画像のうちの前記誤りパターン画像以外のパターン画像に対応するビット列として、前記機器が前記媒体に接してから現在までに読み取った対応するパターン画像に基づいて決定されるビット列を採用し、前記設定手段は、前記機器が前記媒体に接して以降に前記複数のパターン画像を読み取るごとに、前記誤りパターン画像の許容数に対して、当該許容数を増加させる処理及び当該許容数を変えない処理の少なくとも何れか一方を施すことを特徴とする請求項６記載の画像処理装置である。
請求項８に記載の発明は、コンピュータに、媒体及び当該媒体に印刷された文書画像の少なくとも何れか一方の識別情報を誤り訂正符号化して得られた複数のビット列の各々に対応する複数のパターン画像を取得する機能と、前記複数のパターン画像のうちの対応するビット列を特定できないパターン画像である誤りパターン画像を検出する機能と、前記複数のパターン画像のうちの前記誤りパターン画像以外のパターン画像に対応するビット列を特定する機能と、特定されたビット列を用いて誤り訂正復号を行うことにより前記識別情報を取得できる可能性があっても、前記誤りパターン画像の検出状況に応じて、当該誤り訂正復号を行うかどうかを決定する機能とを実現させるためのプログラムである。
請求項９に記載の発明は、前記決定する機能では、前記誤りパターン画像の検出数と予め定められた前記誤りパターン画像の許容数との比較結果に応じて、前記誤り訂正復号を行うかどうかを決定することを特徴とする請求項８記載のプログラムである。
請求項１０に記載の発明は、前記媒体から前記複数のパターン画像を読み取る機器が当該媒体に接してから離れるまでに移動する距離に応じて、前記誤りパターン画像の許容数を設定する機能を更に前記コンピュータに実現させるための請求項９記載のプログラムである。
請求項１１に記載の発明は、前記媒体から前記複数のパターン画像を読み取る機器が当該媒体に接して以降に当該複数のパターン画像を読み取った回数に応じて、前記誤りパターン画像の許容数を設定する機能を更に前記コンピュータに実現させるための請求項９記載のプログラムである。
【発明の効果】
【００１０】
請求項１の発明は、ビット列を特定できない誤りパターン画像の検出状況に応じて、誤った復号結果を得る確率を制御することができるという効果を有する。
請求項２の発明は、誤りパターン画像の検出数と許容数との比較結果に応じて、誤った復号結果を得る確率を制御することができるという効果を有する。
請求項３の発明は、誤った復号結果を得る確率が、パターン画像の読取機器が媒体に接してから離れるまでに移動する距離に応じたものになるという効果を有する。
請求項４の発明は、本構成を有していない場合に比較して、パターン画像の読取機器が媒体に接してから離れるまでに移動する距離を簡単に判断することができるという効果を有する。
請求項５の発明は、パターン画像の読取機器が媒体に接してから離れるまでに移動する距離を、その機器の構造に変更を加えることなく判断することができるという効果を有する。
請求項６の発明は、誤った復号結果を得る確率が、パターン画像の読取機器が媒体に接して以降にパターン画像を読み取った回数に応じたものになるという効果を有する。
請求項７の発明は、パターン画像の読取機器が媒体に接してから現在までに読み取ったパターン画像に基づいてビット列を決定する際に、本構成を有していない場合に比較して、誤りの少ない復号結果を早い段階で得ることができるという効果を有する。
請求項８の発明は、ビット列を特定できない誤りパターン画像の検出状況に応じて、誤った復号結果を得る確率を制御することができるという効果を有する。
請求項９の発明は、誤りパターン画像の検出数と許容数との比較結果に応じて、誤った復号結果を得る確率を制御することができるという効果を有する。
請求項１０の発明は、誤った復号結果を得る確率が、パターン画像の読取機器が媒体に接してから離れるまでに移動する距離に応じたものになるという効果を有する。
請求項１１の発明は、誤った復号結果を得る確率が、パターン画像の読取機器が媒体に接して以降にパターン画像を読み取った回数に応じたものになるという効果を有する。
【発明を実施するための最良の形態】
【００１１】
以下、添付図面を参照して、本発明を実施するための最良の形態（以下、「実施の形態」という）について詳細に説明する。
まず、本実施の形態で利用する符号化方式について説明する。
本実施の形態における符号化方式では、ｍ（ｍ≧３）箇所から選択したｎ（１≦ｎ＜ｍ）箇所に単位画像を配置してなるパターン画像（以下、「符号パターン」という）によってｍＣｎ（＝ｍ！／｛（ｍ−ｎ）！×ｎ！｝）通りの情報を表現する。つまり、１つの単位画像を情報に対応させるのではなく、複数の単位画像を情報に対応させている。仮に１つの単位画像を情報に対応させたとすると、単位画像が欠損したり、ノイズが加わったりした場合に、誤った情報を表現してしまうという欠点がある。これに対して、例えば２つの単位画像を情報に対応させたとすると、単位画像が１つであったり３つであったりした場合に、容易に誤りであることが分かる。更に、１つの単位画像で１ビット、又は、高々２ビットを表現する方法では、情報を表現するための情報パターンと視覚的に似たパターンで、情報パターンの読出しを制御する同期パターンを表現することができない。このようなことから、本実施の形態では、上記のような符号化方式を採用している。以下では、このような符号化方式をｍＣｎ方式と称する。
ここで、単位画像としては、如何なる形状のものを用いてもよい。本実施の形態では、単位画像の一例としてドット画像（以下、単に「ドット」という）を用いるが、例えば、斜線パターン等、他の形状の画像であってもよい。
【００１２】
図１に、ｍＣｎ方式における符号パターンの例を示す。
図では、黒色の領域と斜線の領域をドット配置可能な領域とし、その間にある白色の領域をドット配置不可能な領域としている。そして、ドット配置可能な領域のうち、黒色の領域にドットが配置され、斜線の領域にはドットが配置されていないことを示している。即ち、図１は、縦３×横３の合計９個のドット配置可能な領域を設けた例を示しており、このうち、（ａ）は、９個のドット配置可能な領域に２ドットを配置する９Ｃ２方式における符号パターンの一例を、（ｂ）は、９個のドット配置可能な領域に３ドットを配置する９Ｃ３方式における符号パターンの一例を示している。
【００１３】
但し、図１で配置されるドット（黒色の領域）は、あくまで情報表現のためのドットであり、画像を構成する最小単位であるドット（図１の最小の四角）とは一致していない。本実施の形態において、「ドット」というときは前者のドットを指し、後者のドットは「ピクセル」と呼ぶことにすれば、ドットは、６００ｄｐｉにおける２ピクセル×２ピクセルの大きさを有することになる。６００ｄｐｉにおける１ピクセルの一辺の長さは０．０４２３ｍｍなので、１ドットの一辺の長さは、８４．６μｍ（＝０．０４２３ｍｍ×２）となる。ドットは、大きくなればなるほど目に付きやすくなるため、できるだけ小さいほうが好ましい。ところが、あまり小さくすると、プリンタで印刷できなくなってしまう。そこで、ドットの大きさとして、５０μｍより大きく１００μｍより小さい上記の値を採用している。但し、上記の値８４．６μｍは、あくまで計算上の数値であり、実際に印刷されたトナー像では１００μｍ程度になる。
【００１４】
次いで、図２に、９Ｃ２方式における全符号パターンの例を示す。尚、ここでは、ドット間の空白は省略している。図示するように、９Ｃ２方式では、３６（＝９Ｃ２）通りの符号パターンが利用される。また、全符号パターンに対して、各符号パターンを一意に識別するための番号であるパターン値が付される。図では、各符号パターンに対するこのパターン値の割り当ての例も示している。但し、図に示した対応はあくまで一例であり、どの符号パターンにどのパターン値を割り当ててもよい。
【００１５】
また、図３に、９Ｃ３方式における全符号パターンの例を示す。尚、ここでも、ドット間の空白は省略している。図示するように、９Ｃ３方式では、８４（＝９Ｃ３）通りの符号パターンが利用される。また、この場合も、全符号パターンに対して、各符号パターンを一意に識別するための番号であるパターン値が付される。図では、各符号パターンに対するこのパターン値の割り当ての例も示している。但し、この場合も、図に示した対応はあくまで一例であり、どの符号パターンにどのパターン値を割り当ててもよい。
【００１６】
尚、ここでは、符号パターンが配置される領域（以下、「パターンブロック」という）の大きさを、３ドット×３ドットを配置可能な大きさとした。しかしながら、パターンブロックの大きさはこれに限るものではない。つまり、２ドット×２ドット、４ドット×４ドット等を配置可能な大きさであってもよい。
また、パターンブロックの形状として、正方形でなく、例えば３ドット×４ドットを配置する場合のように長方形を採用してもよい。尚、本明細書において、長方形とは、隣り合う２辺の長さが等しくない矩形、つまり、正方形以外の矩形のことをいうものとする。
更に、任意に決めた数のドット配置可能な領域のうち、幾つの領域にドットを配置するかも、表現したい情報の量と許容できる画像濃度とを考慮して、適宜決めるとよい。
【００１７】
このように、本実施の形態では、ｍ箇所からｎ箇所を選択することでｍＣｎ種類の符号パターンを用意している。そして、これらの符号パターンのうち、特定のパターンを情報パターンとして利用し、残りを同期パターンとして利用する。ここで、情報パターンとは、媒体に埋め込む情報を表現するパターンである。また、同期パターンとは、媒体に埋め込まれた情報パターンを取り出すために用いられるパターンである。例えば、情報パターンの位置を特定したり、画像の回転を検出したりするために用いられる。尚、媒体としては、画像を印刷することが可能であれば、如何なるものを用いてもよい。紙が代表例なので、以下では媒体を紙として説明するが、金属、プラスチック、繊維等であってもよい。
【００１８】
ここで、図２又は図３に示した符号パターンのうちの同期パターンについて説明する。尚、これらの符号パターンを利用する場合、パターンブロックの形状は正方形となるため、画像の回転を９０度単位で認識する必要がある。従って、４種類の符号パターンで１組の同期パターンが構成される。
図４（ａ）は、９Ｃ２方式における同期パターンの例である。ここでは、３６種類の符号パターンのうち、３２種類の符号パターンを５ビットの情報を表現する情報パターンとし、残りの４種類の符号パターンで１組の同期パターンを構成するものとする。例えば、パターン値「３２」の符号パターンを正立した同期パターン、パターン値「３３」の符号パターンを右に９０度回転した同期パターン、パターン値「３４」の符号パターンを右に１８０度回転した同期パターン、パターン値「３５」の符号パターンを右に２７０度回転した同期パターンとしている。但し、３６種類の符号パターンの情報パターンと同期パターンへの振り分け方は、これには限らない。例えば、１６種類の符号パターンを４ビットの情報を表現する情報パターンとし、残りの２０種類の符号パターンで５組の同期パターンを構成してもよい。
【００１９】
また、図４（ｂ）は、９Ｃ３方式における同期パターンの例である。ここでは、８４種類の符号パターンのうち、６４種類の符号パターンを６ビットの情報を表現する情報パターンとし、残りの２０種類の符号パターンで５組の同期パターンを構成するものとする。図は、この５組の同期パターンのうちの２組を示す。例えば、第１組においては、パターン値「６４」の符号パターンを正立した同期パターン、パターン値「６５」の符号パターンを右に９０度回転した同期パターン、パターン値「６６」の符号パターンを右に１８０度回転した同期パターン、パターン値「６７」の符号パターンを右に２７０度回転した同期パターンとしている。また、第２組においては、パターン値「６８」の符号パターンを正立した同期パターン、パターン値「６９」の符号パターンを右に９０度回転した同期パターン、パターン値「７０」の符号パターンを右に１８０度回転した同期パターン、パターン値「７１」の符号パターンを右に２７０度回転した同期パターンとしている。
【００２０】
尚、図示しないが、パターンブロックの形状が長方形である場合は、画像の回転の検出のために２種類の符号パターンを同期パターンとして用意すればよい。例えば、縦３ドット×横４ドットを配置可能な領域が検出されるべきなのに、縦４ドット×横３ドットを配置可能な領域が検出された場合は、その時点で画像が９０度又は２７０度回転していることが分かるからである。
【００２１】
次に、同期パターンと情報パターンを配置してなる情報表現の最小単位（以下、「符号ブロック」という）について説明する。
図５は、符号ブロックのレイアウトの一例を示したものである。
図中、（ａ）及び（ｂ）のそれぞれの右側に、符号ブロックのレイアウトを示している。ここでは、レイアウトとして、パターンブロックを５個×５個の２５個並べたものを採用している。この２５個のパターンブロックのうち、左上の１ブロックに同期パターンを配置している。また、同期パターンの右の４ブロックに紙面上の横方向の座標を特定するＸ座標情報を表す情報パターンを配置し、同期パターンの下の４ブロックに紙面上の縦方向の座標を特定するＹ座標情報を表す情報パターンを配置している。更に、これらの座標情報を表す情報パターンで囲まれた１６ブロックに、紙面又は紙面に印刷される文書の識別情報を表す情報パターンを配置している。
【００２２】
また、（ａ）の左側には、９Ｃ２方式における符号パターンが各パターンブロックに配置されていることを示している。即ち、３６種類の符号パターンを、例えば、４種類の同期パターンと３２種類の情報パターンとに分け、各パターンをレイアウトに従って配置している。一方、（ｂ）の左側には、９Ｃ３方式における符号パターンが各パターンブロックに配置されていることを示している。即ち、８４種類の符号パターンを、例えば、２０種類の同期パターンと６４種類の情報パターンとに分け、各パターンをレイアウトに従って配置している。
【００２３】
尚、本実施の形態において、座標情報は、紙面の縦方向及び横方向にＭ系列で表現される。ここで、Ｍ系列とは、その部分列が、他の部分列と一致することがない系列である。例えば、１１次のＭ系列は、２０４７ビットのビット列である。そして、この２０４７ビットのビット列の中から取り出された１１ビット以上の部分列と同じ並びは、この２０４７ビットのビット列の中に自身以外には存在しない。本実施の形態では、１個の符号パターンを４ビットに対応付ける。即ち、２０４７ビットのビット列を４ビットごとに１０進数で表し、図２又は図３の割り当てに従って符号パターンを決定し、紙面の横と縦に渡って印刷する。従って、復号の際は、３つの連続する符号パターンを特定し、符号パターンと座標との対応関係を格納したテーブルを参照することにより、ビット列上の位置が特定されることになる。
【００２４】
また、識別情報の符号化には、幾つかの方法の利用が考えられるが、本実施の形態では、ＲＳ符号化が適している。ＲＳ符号は多値の符号法であり、各パターンブロックに配置された符号パターンのパターン値をＲＳ符号の多値に対応させるとよいからである。
尚、本実施の形態における符号パターンの利用形態としては、例えば、文書画像に重ねてその識別情報を紙面に印刷し、ペン状のスキャナで紙面上の部分画像を読み込み、そこから文書画像の識別情報を取得する、といったものが想定される。この場合、紙面上の汚れやスキャナの性能によって誤りが発生するが、この誤りはＲＳ符号により訂正される。
【００２５】
ここで、ＲＳ符号による訂正及びそのような訂正を行う場合に表現可能な情報量について具体的に説明する。
本実施の形態では、上述したように、１パターンブロック内のドット数が一定である符号パターンを採用している。これにより、仮に１ドットが消失した場合や、１ドットが付加された場合は、パターンブロック内のドット数が変わる。従って、これらは誤りだと分かる誤りとなる。一方で、ドットの消失と付加が同時に起こった場合は、他の符号パターンであると誤認識してしまうので、誤りだと分からない誤りとなる。
例えば、識別情報を表す情報パターンを配置する１６ブロックのうち、１０ブロックを識別情報そのものを表す情報パターンを配置するブロックとし、６ブロックを訂正のためのブロックとする。この場合、誤りだと分かるブロックは６ブロックまで、誤りだと分からないブロックも３ブロックまで、訂正される。これを例えば９Ｃ２方式における３２種類の情報パターンで実現したとすると、１ブロックで５ビットの情報が表現されるので、識別情報そのものは１０ブロックで５０ビット分表現される。また例えば９Ｃ３方式における６４種類の情報パターンで実現したとすると、１ブロックで６ビットの情報が表現されるので、識別情報そのものは１０ブロックで６０ビット分表現される。
【００２６】
次いで、上記符号ブロックを含む広範囲のレイアウトについて説明する。
図６は、そのようなレイアウトの一例を示した図である。このレイアウトでは、図５の符号ブロックが基本単位として紙面全体の縦方向及び横方向に周期的に配置されている。
ここで、同期パターンとしては、同じ符号パターンが各符号ブロックにおける左上のパターンブロックに配置されている。図では、同期パターンを「Ｓ」で表している。
また、Ｘ座標情報としては、符号パターンの同じ並びが、同期パターンが配置されたのと同じ行の各パターンブロックに配置されている。Ｙ座標情報としては、符号パターンの同じ並びが、同期パターンが配置されたのと同じ列の各パターンブロックに配置されている。図では、Ｘ座標情報を表すパターンを「Ｘ０１」、「Ｘ０２」、…で表し、Ｙ座標情報を表すパターンを「Ｙ０１」、「Ｙ０２」、…で表している。
更に、識別情報としては、符号パターンの同じ配列が、縦方向及び横方向に周期的に配置されている。図では、識別情報を表すパターンを「Ｉ０１」、「Ｉ０２」、…、「Ｉ１６」で表している。
そして、このようなレイアウトを採用することにより、例えば、図中、丸印で示した範囲が読み取られた場合のように、図５の符号ブロックの全体を含む範囲が読み取られていない場合であっても、後述する処理により、識別情報及び座標情報が得られる。
【００２７】
尚、このようなレイアウトで紙面に印刷される符号画像は、例えば電子写真方式を用いて、Ｋトナー（カーボンを含む赤外光吸収トナー）、又は、特殊トナーにより形成される。
ここで、特殊トナーとしては、可視光領域（４００ｎｍ〜７００ｎｍ）における最大吸収率が７％以下であり、近赤外領域（８００ｎｍ〜１０００ｎｍ）における吸収率が３０％以上の不可視トナーが例示される。ここで、「可視」及び「不可視」は、目視により認識できるかどうかとは関係しない。印刷された媒体に形成された画像が可視光領域における特定の波長の吸収に起因する発色性の有無により認識できるかどうかで「可視」と「不可視」とを区別している。また、可視光領域における特定の波長の吸収に起因する発色性が若干あるが、人間の目で認識し難いものも「不可視」に含める。
【００２８】
ところで、このように、ｍ箇所から選択したｎ箇所にドットを配置した符号パターンを利用する場合、前述の通り、次のような２種類の誤りが発生する。
一つは、ドットの付加又は消失によりパターンブロック内のドット数が増減する誤りである。例えば、１つのパターンブロックから３ドットが検出されるべきなのに、４ドットが検出されたり、２ドットしか検出されなかったりするので、これは誤りだと分かる。この誤りが発生した場合、そのパターンブロックから符号パターンを特定することは不可能である。従って、本明細書では、このような誤りを「特定不能誤り」と呼ぶことにする。
また、もう一つは、ドットの付加及び消失が同時に起こることによりパターンブロック内のドット数が増減しない誤りである。例えば、１つのパターンブロック内の３ドットのうちの１ドットが消失し、ドットがなかった箇所に１ドットが検出されるような場合であり、これは誤りだと分からない。この誤りが発生した場合、そのパターンブロックから符号パターンを特定することは可能であるが、特定された符号パターンは誤っている。従って、本明細書では、このような誤りを「誤特定誤り」と呼ぶことにする。
【００２９】
さて、識別情報の符号化には、上述したようにＲＳ符号を用いているので、所定数のブロックまでの誤りは訂正される。具体的には、訂正のためのブロックの数をＢ、特定不能誤りが発生したブロックの数をＢｓ、誤特定誤りが発生したブロックの数をＢｏとすると、
Ｂ≧Ｂｓ＋Ｂｏ×２
が成り立つ場合に、誤りが発生したブロックは訂正され、正しい復号結果が得られる。
【００３０】
図７は、図５の符号ブロックにおいて、識別情報を表す情報パターンが配置される１６個のパターンブロックのうち、特定不能誤りが発生したパターンブロックの数と、誤特定誤りが発生したパターンブロックの数と、符号ブロック全体としての復号の成否との関係を示した図である。図では、訂正のためのブロック数を「６」としており、図中、「Ｙ」は正しい復号結果が得られる場合を、「Ｅ」は誤った復号結果が得られる場合を、「Ｎ」は復号できない場合を、それぞれ示している。
【００３１】
ここで、特定不能誤りのみを考えた場合は、特定不能誤りが発生したブロックの数が訂正可能なブロックの数を超えていれば、誤った復号結果を返すことが分かっているので、復号せずに終了すればよい。例えば、図７の例では、特定不能誤りが発生したブロックが７個以上になれば、復号しなければよい。しかしながら、誤特定誤りも含めて考えると、特定不能誤りが発生したブロックの数だけでは、訂正可能なブロックの数を超えているかどうか分からず、そのまま復号してしまうと、誤った復号結果を返してしまうといった問題がある。
【００３２】
また、誤った復号結果が返される可能性は、特定不能誤りの数に応じて変わってくる。特定不能誤りが少なければ、誤特定誤りに対する許容範囲は大きいが、特定不能誤りが多くなると、誤特定誤りに対する許容範囲は小さくなってくる。例えば、図７の例で、特定不能誤りのブロックが０個の場合、誤特定誤りのブロックが３個あっても、正しい復号結果が得られる。これに対し、特定不能誤りのブロックが６個の場合、誤特定誤りのブロックが１個あっても、復号結果は誤ったものとなってしまう。
【００３３】
そこで、本実施の形態では、特定不能誤りの検出状況に応じて誤り訂正復号を行うかどうかを判定する。具体的には、特定不能誤りのブロックの数が、訂正可能なブロックの数を超えていなくても、予め定めた許容されるブロック数（以下、「許容ブロック数」という）に達しているかどうかによって、復号するかどうかを判定する。尚、以下では、この許容ブロック数のことを「復号レベル」ともいう。そして、許容ブロック数が少ないことを「復号レベルが高い」といい、許容ブロック数が多いことを「復号レベルが低い」というものとする。
【００３４】
また、本実施の形態では、復号結果の間違いがどの程度許容されるかの状況に応じて、復号レベルである許容ブロック数を決定する。即ち、復号結果の間違いが許容されない場合には、復号レベルを高くする。つまり、許容ブロック数を少なくする。一方、復号結果の間違いがある程度許容される場合には、復号レベルを低くする。つまり、許容ブロック数を多くする。そして、何れの場合も、特定不能誤りのブロックの数が許容ブロック数以下であれば復号を行い、許容ブロック数を超えていれば復号を行わないようにする。
【００３５】
次に、復号レベルの設定と、符号ブロックから正しい復号結果が得られる確率（正特定率）及び誤った復号結果が得られる確率（誤特定率）との関係について説明する。
図８は、このような関係を示したグラフである。縦軸には、正特定率及び誤特定率を示している。但し、正特定率に比べて誤特定率はかなり小さいので、左側に０．２刻みで正特定率を示し、右側に０．０１刻みで誤特定率を示している。また、横軸には、符号パターンのドットが消失し、又は、付加される確率を示している。厳密には、ドットが消失する確率とドットが付加される確率とは異なると考えられるが、ここではこれらを等しいと仮定している。更に、グラフの左側の「ＥｒａｓｕｒｅＫ  Ｃｏｒｒｅｃｔ」は、Ｋブロックの特定不能誤りを許容した場合の正特定率を表す折れ線グラフを指しており、グラフの右側の「ＥｒａｓｕｒｅＫ  Ｍｉｓｓ」は、Ｋブロックの特定不能誤りを許容した場合の誤特定率を表す折れ線グラフを指している（Ｋ＝０〜６）。また、グラフの上側の「Ｓｉｍｕｌａｔｉｏｎ  １０００００」は、実際に１０万回のシミュレーションを行った場合の正特定率である。
【００３６】
図８のグラフからは、次のようなことが分かる。
まず、許容ブロック数を０とした場合は、復号しないと判断されることも多く、正特定率は約０．５とそれほど高くないが、誤特定率は殆ど０である。また、許容ブロック数を１とした場合も、復号しないと判断されることが多く、正特定率は約０．８に留まっているが、誤特定率は殆ど０である。更に、許容ブロック数を２とした場合も、正特定率は約０．９に留まっているが、誤特定率は殆ど０である。また、許容ブロック数を３、４、５、６と増やしていくと、正特定率は１．０に近づいていくが、誤特定率が格段に高くなっていく。
【００３７】
次いで、本実施の形態における状況に応じた復号レベルの変更について具体例を用いて説明する。以下の説明で、「ストローク」とは、ペン型スキャナ等の画像を読み取る機器が紙面に接してから離れるまでにスキャナの先端が辿る軌跡をいうものとする。尚、本実施の形態では、媒体から複数のパターン画像を読み取る機器が媒体に接してから離れるまでに移動する距離の一例として、ストロークの長さを用いている。また、図中、「＊」が特定不能誤りを示す。
【００３８】
（１）ストロークが短い場合
例えば、紙面上の所定の位置を指示（ポイント）することで、所定の処理を起動するような場合である。この場合は、誤った結果を出力することがないように、復号レベルを高く設定する必要がある。
図９に、画像を読み取ることで獲得されたパターン配列（獲得パターン配列）と、このような状況において獲得パターン配列を復号するかどうかの判定結果を示す。この場合、復号レベルとして、例えば、許容ブロック数「１」が設定されているものとする。すると、１つ目のフレーム及び２つ目のフレームにおける獲得パターン配列は、特定不能誤りを５つ含んでいるので、復号されないが、３つ目のフレームにおける獲得パターン配列は、特定不能誤りを１つしか含んでいないので、復号される。
【００３９】
（２）ストロークが長いが、履歴情報を利用しない場合
例えば、紙面上で筆記する際に、フレームごとに復号を行い、ストロークの最後で復号結果の多数決を取って最も頻度が高い復号結果を採用する場合である。この場合は、復号レベルを高くしておくと、各フレームで復号されない虞がある。従って、低いレベルを設定し、多数決の候補となる復号結果が多数用意されるようにする。
図１０に、獲得パターン配列と、このような状況において獲得パターン配列を復号するかどうかの判定結果を示す。この場合、復号レベルとして、例えば、許容ブロック数「４」が設定されているものとする。すると、１つ目のフレームから３つ目のフレームまでの獲得パターン配列は、何れも特定不能誤りを４つまでしか含んでいないので、復号される。
【００４０】
（３）ストロークが長く、履歴情報を利用する場合
例えば、紙面上で筆記する際に、同じストロークにおける過去のフレームのパターン値に基づいて現在のフレームのパターン値を修正して修正パターン配列を取得していき、ストロークの最後に得られた修正パターン配列から復号する場合である。この場合、最後に得られる修正パターン配列には特定不能誤りが少ないはずなので、復号レベルを高くしておいても、正しい復号結果が得られる可能性が高い。
図１１に、獲得パターン配列と、修正パターン配列と、このような状況において修正パターン配列を復号するかどうかの判定結果を示す。この例では、過去及び今回のフレームの獲得パターン配列におけるパターン値のうち頻度が最大のものを修正パターン配列におけるパターン値としている。その際、何らかのパターン値と「＊」が同数であれば、「＊」を採用している。この場合、復号レベルとして、例えば、許容ブロック数「２」が設定されているものとする。すると、３つ目のフレームにおける修正パターン配列は、特定不能誤りを２つしか含んでいないので、復号される。
【００４１】
（４）ストロークの長さが変動する場合
例えば、紙面上の所定の位置を指示（ポイント）することで所定の処理を起動するのか、紙面上に筆記するのかが分からないような場合である。この場合、ストロークの初期では復号レベルを高くし、徐々に復号レベルを低くするとよい。ストロークが進むにつれて、過去のフレームのパターン値を用いてパターン値が修正されるので、復号レベルを低くしても、誤った復号結果を出力するリスクは少なくなる。
図１２に、獲得パターン配列と、修正パターン配列と、このような状況において修正パターン配列を復号するかどうかの判定結果を示す。この例でも、過去及び今回のフレームの獲得パターン配列におけるパターン値のうち頻度が最大のものを修正パターン配列におけるパターン値としている。その際、何らかのパターン値と「＊」が同数であれば、「＊」を採用している。この場合、復号レベルとして、例えば、Ｆフレーム目に対して許容ブロック数Ｆが設定されているものとする（Ｆ＝０，１，２）。すると、１つ目のフレーム及び２つ目のフレームにおける修正パターン配列は、特定不能誤りをそれぞれ４つ及び６つ含んでいるので、復号されないが、３つ目のフレームにおける修正パターン配列は、特定不能誤りを２つしか含んでいないので、復号される。
【００４２】
このように、本実施の形態は、状況に応じて復号レベルを変更することで、復号性能を高めるものである。上記では、そのような状況として、（１）及び（２）でストロークの長短を示し、（４）でフレーム番号を示した。そこで、以下では、この２つの復号レベルの変更方法を例にとって説明する。尚、本実施の形態では、如何なるｍＣｎ方式を利用してもよいが、以降の説明においては、簡単のため、９Ｃ３方式の利用を前提とする。また、以下では、パターンブロックのことを単に「ブロック」ともいう。
【００４３】
次に、紙面に形成された符号画像を読み取って処理する画像処理装置２０について説明する。
図１３は、画像処理装置２０の構成例を示したブロック図である。
図示するように、画像処理装置２０は、復号レベル設定部１０と、画像読取部２１と、ドット配列生成部２２と、ブロック検出部２３と、同期符号検出部２４とを備える。また、識別符号検出部３０と、識別符号復号部３２と、Ｘ座標符号検出部４０と、Ｘ座標符号復号部４２と、Ｙ座標符号検出部４５と、Ｙ座標符号復号部４７と、情報出力部５０とを備える。
【００４４】
復号レベル設定部１０は、各種状況に応じて、識別符号復号部３２が識別符号を復号する際の復号レベルを設定し、メモリに格納する。ここで、各種状況としては、上述したように、紙面上のストロークが長いか短いか、ストロークが長い場合に現在処理中の画像がストロークにおける何フレーム目に当たるか、等が例示される。
【００４５】
画像読取部２１は、ＣＣＤ（Charge Coupled Devices）やＣＭＯＳ（Complementary Metal Oxide Semiconductor）等の撮像素子を用いて、紙面に印刷された符号画像を読み取る。
ドット配列生成部２２は、読み取った符号画像からドットを検出し、ドットの位置を参照して、ドット配列を生成する。尚、符号画像からのドット検出の前処理として、読み取った画像に含まれるノイズを除去するための処理も行う。ここで、ノイズには、例えば、撮像素子感度のばらつきや電子回路により発生するノイズがある。ノイズ除去の処理の種類は、撮像系の特性に合わせるべきだが、ぼかし処理やアンシャープマスキング等の先鋭化処理を適用するとよい。また、ドットの検出は、次のように行う。即ち、まず、２値化処理によりドット画像の部分と、その他の背景画像の部分とを切り分け、２値化された個々の画像位置からドットの位置を検出する。その際、２値化された画像にノイズ成分が多数含まれる場合があるため、２値化された画像の面積や形状によりドットの判定を行うフィルタ処理を組み合わせる必要がある。その後、ドット配列の生成は、２次元の配列上で、例えば、ドットがある位置を「１」、ドットがない位置を「０」というように、画像として検出したドットをデジタルデータに置き換えることにより行う。本実施の形態では、複数のパターン画像を取得する取得手段の一例として、ドット配列生成部２２を設けている。
【００４６】
ブロック検出部２３は、ドット配列上で、符号ブロック内のパターンブロックを検出する。即ち、符号ブロックと同じ大きさ及び形状のフレームで、パターンブロックと同じ大きさ及び形状のブロックを有するブロックフレームをドット配列上で適宜動かし、ブロック内のドット数が均等になる位置を正しいフレーム位置とし、各ブロック内のパターン値を格納した符号配列を生成する。本実施の形態では、誤りパターン画像を検出する検出手段の一例として、ブロック検出部２３を設けている。
【００４７】
同期符号検出部２４は、ドット配列から検出された各符号パターンの種類を参照して、同期符号を検出する。また、同期符号検出部２４は、検出した同期符号に基づいて、画像の回転の判定も行う。例えば、正方形の符号パターンを用いた場合、９０度単位で回転している可能性がある。そこで、検出した同期符号が４種類の同期パターンのいずれに対応しているかによって、その向きを検出する。また、長方形の符号パターンを用いた場合、１８０度単位で回転している可能性がある。そこで、検出された同期符号が２種類の同期パターンのいずれに対応しているかによって、その向きを検出する。更に、同期符号検出部２４は、このように検出された回転角度だけ符号配列を回転させて、符号配列を正しい向きに設定する。
【００４８】
識別符号検出部３０は、角度が補正された符号配列から、同期符号の位置を基準にして、識別符号を検出する。本実施の形態では、ビット列を特定する特定手段の一例として、識別符号検出部３０を設けている。
識別符号復号部３２は、上述したＲＳ符号の符号化処理で用いたパラメータ（ブロック数等）と同じパラメータを用いて識別符号を復号し、識別情報を出力する。本実施の形態では、誤り訂正復号を行うかどうかを決定する決定手段の一例として、識別符号復号部３２を設けている。
【００４９】
Ｘ座標符号検出部４０は、角度が補正された符号配列から、同期符号の位置を基準にしてＸ座標符号を検出する。
Ｘ座標符号復号部４２は、検出されたＸ座標符号からＭ系列の部分系列を取り出し、画像生成に使用したＭ系列におけるこの部分系列の位置を参照し、この位置を符号ブロックのシフト量で補正した値をＸ座標情報として出力する。
【００５０】
Ｙ座標符号検出部４５は、角度が補正された符号配列から、同期符号の位置を基準にしてＹ座標符号を検出する。
Ｙ座標符号復号部４７は、検出されたＹ座標符号からＭ系列の部分系列を取り出し、画像生成に使用したＭ系列におけるこの部分系列の位置を参照し、この位置を符号ブロックのシフト量で補正した値をＹ座標情報として出力する。
【００５１】
情報出力部５０は、識別符号復号部３２、Ｘ座標符号復号部４２、Ｙ座標符号復号部４７からそれぞれ取得した識別情報、Ｘ座標情報、Ｙ座標情報を出力する。
【００５２】
次いで、この画像処理装置２０の動作を説明する。尚、この動作の説明では、９Ｃ３方式の符号パターンが図５のレイアウトで配置されていることを前提とする。
まず、復号レベル設定部１０は、各種状況に応じて復号レベルを決定し、図示しないメモリに格納する。前述の通り、ここでは、各種状況として、ストロークの長短、及び、ストロークにおけるフレーム番号を考える。
【００５３】
第一に、復号レベル設定部１０がストロークの長短に応じて復号レベルを設定する際の動作について説明する。
図１４（ａ）は、このときの復号レベル設定部１０の動作例を示したフローチャートである。尚、この動作例において、画像処理装置２０には、少なくとも２つのモードが設定できるようになっており、そのモードによってストロークの長短が決められるものとする。ここで、２つのモードとは、例えば、ペン先からインクが出るようにして筆記を可能にすると共に筆跡を電子化する筆記モードと、ペン先からインクが出ないようにして紙面上の位置を指して何らかの情報を参照する参照モードである。即ち、上記（１）のように、参照モードにおけるストロークの場合は、復号レベルを高くし、上記（２）のように、筆記モードにおけるストロークの場合は、復号レベルを低くすることが考えられる。また、何れのモードが選択されているかを示すモード情報は、２つのモードを切り替えるためのモード切り替えスイッチ等からの信号として取得すればよい。尚、本実施の形態では、状態情報の一例として、モード情報を用いている。
【００５４】
動作を開始すると、復号レベル設定部１０は、まず、ペン先の圧力センサ等からストローク開始信号を受け取る（ステップ１０１）。これにより、復号レベル設定部１０は、モード切り替えスイッチ等からモード情報を取得する（ステップ１０２）。
次に、復号レベル設定部１０は、そのモード情報に予め対応付けられた復号レベルを取得する（ステップ１０３）。ここで、復号レベルとしては、上述した許容ブロック数を取得する。この例では、上記（１）及び（２）に示したように、「参照モード」に対応付けられた許容ブロック数が、「筆記モード」に対応付けられた許容ブロック数より少なくなっているのが好ましい。
そして、復号レベル設定部１０は、ここで取得した復号レベルをｄｅｃｏｄｅＬｅｖｅｌに格納してメモリに記憶し（ステップ１０４）、画像読取部２１に対して画像の読み取りを指示する（ステップ１０５）。
【００５５】
尚、このフローチャートでは、画像処理装置２０に設定されたモードに基づいて、ストロークの長短を判断するようにしたが、これには限らない。例えば、紙面に筆記するための領域（筆記用領域）と情報参照を指示するための領域（指示用領域）を設けておき、画像処理装置２０が接触した紙面上の領域がこの何れであるかに基づいて、ストロークの長短を判断するようにしてもよい。具体的には、紙面上の領域の座標情報と、その領域が筆記用領域であるか指示用領域であるかを示す情報とを対応付けた管理情報を作成しておく。そして、画像処理装置２０が、紙面上に接触した際に座標情報を読み取り、管理情報を参照してその座標情報に対応する領域が筆記用領域であるか指示用領域であるかを判定するとよい。
【００５６】
第二に、復号レベル設定部１０がストロークにおけるフレーム番号に応じて復号レベルを設定する際の動作について説明する。
図１４（ｂ）は、このときの復号レベル設定部１０の動作例を示したフローチャートである。
【００５７】
動作を開始すると、復号レベル設定部１０は、まず、ペン先の圧力センサ等からストローク開始信号を受け取る（ステップ１５１）。これにより、復号レベル設定部１０は、フレーム番号ｉＦｌａｍｅを初期化する（ステップ１５２）。
次に、復号レベル設定部１０は、そのときのフレーム番号に予め対応付けられた復号レベルを取得する（ステップ１５３）。ここで、復号レベルとしては、（ａ）の場合と同様、許容ブロック数を取得する。また、フレーム番号から復号レベルを取得するには、所定の関数を用いてもよい。上記（４）で述べたように、一般には、フレーム番号が進むに従って復号レベルは低くするのが好ましい。その場合は、上記の所定の関数として、フレーム番号の増加に伴って許容ブロック数が等しいか又は増加する関数を用いるとよい。特に、そのような関数として、「ｙ＝ｘ」（ｘはフレーム番号を、ｙは許容ブロック数を表す）を採用することにより、フレーム番号をそのまま復号レベルである許容ブロック数とすることも考えられる。但し、状況によっては、フレーム番号が進むに従って復号レベルを高くしたほうがよい場合も考えられる。その場合は、上記の所定の関数として、フレーム番号の増加に伴って許容ブロック数が等しいか又は減少する関数を採用するとよい。
【００５８】
そして、復号レベル設定部１０は、ここで取得した復号レベルをｄｅｃｏｄｅＬｅｖｅｌに格納してメモリに記憶し（ステップ１５４）、画像読取部２１に対して画像の読み取りを指示する（ステップ１５５）。
その後、復号レベル設定部１０は、ストロークが終了したかどうかを判定する（ステップ１５６）。この判定も、例えば、ペン先の圧力センサ等からの信号によって行うとよい。その結果、ストロークが終了していないと判定された場合は、フレーム番号ｉＦｌａｍｅに「１」を加算し、そのときのフレーム番号についてステップ１５３〜１５５の処理を繰り返す。一方、ストロークが終了したと判定された場合は、処理を終了する。
このようにして復号レベルがメモリに記憶された状態で、以下の画像処理が実行される。
【００５９】
まず、画像読取部２１が、符号画像が印刷された媒体から、所定の大きさの領域の符号画像を読み取る。
次に、ドット配列生成部２２が、ドットを検出した位置に「１」を、ドットを検出しなかった位置に「０」を設定したドット配列を生成する。
その後、ブロック検出部２３が、このドット配列にブロックフレームを重ねて、全てのパターンブロック内のドットの数が「３」となるブロックフレームの位置を探索することで、パターンブロックの境界を検出する。本実施の形態において、符号ブロックは、パターンブロックが５個×５個で配置されたものとしている。従って、ブロックフレームとしても、５ブロック×５ブロックの大きさのものを用いる。
【００６０】
ここで、ブロック検出部２３の動作について説明する。
図１５は、ブロック検出部２３の動作例を示したフローチャートである。
まず、ブロック検出部２３は、ドット配列生成部２２からドット配列を取得する（ステップ２０１）。このドット配列の大きさは、（復号に必要なブロック数×ブロックの一辺のドット数＋ブロックの一辺のドット数−１）２である。本実施の形態では、復号に必要なブロック数は５×５であり、ブロックの一辺のドット数が３であるので、１７×１７のドット配列を取得する。
【００６１】
次に、取得したドット配列に、ブロックフレームを重ね合わせる（ステップ２０２）。そして、カウンタＩ、Ｊに「０」を代入し、ＭａｘＢＮにも「０」を代入する（ステップ２０３）。ここで、Ｉ、Ｊは、ブロックフレームを初期位置から移動させたステップ数をカウントするものである。画像の１ラインごとにブロックフレームを移動させ、そのとき移動させたライン数をカウンタＩ、Ｊでカウントする。また、ＭａｘＢＮは、ブロック内で検出されるドット数が「３」となるブロック数をブロックフレームを移動させながらカウントしていったときに、最大となるカウント値を記録するものである。
【００６２】
次に、ブロック検出部２３は、ブロックフレームをＸ方向にＩ、Ｙ方向にＪ移動させる（ステップ２０４）。初期状態においてＩ、Ｊは「０」であるので、ブロックフレームは移動しない。そして、ブロックフレームの各ブロックに含まれるドット数をカウントして、ドット数が「３」となるブロックの数をカウントする。カウントしたブロック数はＩＢ［Ｉ，Ｊ］に格納する（ステップ２０５）。ＩＢ［Ｉ，Ｊ］のＩ、Ｊには、ブロックフレームの移動量を示すＩとＪの値がそれぞれ記録される。
【００６３】
次に、ブロック検出部２３は、ＩＢ［Ｉ，Ｊ］とＭａｘＢＮとを比較する（ステップ２０６）。ＭａｘＢＮは初期値が「０」であるので、最初の比較では、ＩＢ［Ｉ，Ｊ］がＭａｘＢＮよりも大きくなる。この場合、ＭａｘＢＮにＩＢ［Ｉ，Ｊ］の値を代入すると共に、ＭＸにＩの値を、ＭＹにＪの値を代入する（ステップ２０７）。尚、ＩＢ［Ｉ，Ｊ］がＭａｘＢＮ以下である場合は、ＭａｘＢＮ、ＭＸ、ＭＹの値はそのままにしておく。
【００６４】
その後、ブロック検出部２３は、Ｉ＝２であるかどうかを判定する（ステップ２０８）。
ここで、Ｉ＝２でない場合には、Ｉに「１」を加算する（ステップ２０９）。そして、ステップ２０４、２０５の処理を繰り返し行い、ＩＢ［Ｉ，Ｊ］とＭａｘＢＮとを比較していく（ステップ２０６）。
ＩＢ［Ｉ，Ｊ］が前回までのＩＢ［Ｉ，Ｊ］の最大値であるＭａｘＢＮよりも大きいと、ＭａｘＢＮにＩＢ［Ｉ，Ｊ］の値を代入し、そのときのＩの値をＭＸに、Ｊの値をＭＹに代入する（ステップ２０７）。また、ＭａｘＢＮのほうがＩＢ［Ｉ，Ｊ］よりも大きい場合には、Ｉ＝２であるかどうかを判定する（ステップ２０８）。Ｉ＝２となると、次にＪ＝２であるかどうかを判定する（ステップ２１０）。Ｊ＝２でない場合には、Ｉに「０」を代入し、Ｊに「１」を加算する（ステップ２１１）。このような手順を繰り返し行い、（Ｉ，Ｊ）が（０，０）から（２，２）までで、ＩＢ［Ｉ，Ｊ］が最大のものを検出する。
【００６５】
Ｉ＝２、Ｊ＝２までの処理が終了すると、ブロック検出部２３は、保存しているＭａｘＢＮと閾値ＴＢとを比較する（ステップ２１２）。閾値ＴＢは、ドット数が「３」のブロックの数が復号可能な程度のものかを判定するための閾値である。
ここで、ＭａｘＢＮが閾値ＴＢよりも大きい場合には、ブロックフレームをＭＸ、ＭＹの位置に固定し、その位置で各ブロックのパターン値を検出する。そして、検出したパターン値を、各ブロックを識別する変数Ｘ、Ｙと共に符号配列ＰＡ［Ｘ，Ｙ］としてメモリに記録する（ステップ２１３）。尚、このとき、対応するパターン値に変換することができなければ、パターン値として用いられていない「−１」を記録する。そして、ブロック検出部２３は、ＭＸ、ＭＹと、符号配列ＰＡ［Ｘ，Ｙ］とを同期符号検出部２４に出力する（ステップ２１４）。
一方、ＭａｘＢＮが閾値ＴＢ以下である場合には、画像のノイズが大きく復号は不可能と判定し、復号不能を出力する（ステップ２１５）。
【００６６】
次に、同期符号検出部２４の動作について説明する。
図１６は、同期符号検出部２４の動作例を示したフローチャートである。
まず、同期符号検出部２４は、ブロック検出部２３からＭＸ、ＭＹと、符号配列ＰＡ［Ｘ，Ｙ］とを取得する（ステップ２５１）。
次に、同期符号検出部２４は、Ｋ、Ｌに「１」を代入する（ステップ２５２）。尚、ＫはＸ方向のブロック数を示すカウンタであり、ＬはＹ方向のブロック数を示すカウンタである。
【００６７】
次に、同期符号検出部２４は、ＰＡ［Ｋ，Ｌ］のパターン値が「６４」かどうかを判定する（ステップ２５３）。
ＰＡ［Ｋ，Ｌ］のパターン値が「６４」であれば、符号配列ＰＡ［Ｘ，Ｙ］の回転は必要ないと判定し、同期符号のあるブロックのＸ座標ＳＸにＫを代入し、Ｙ座標ＳＹにＬを代入する。また、ブロックフレームのＸ方向への移動量ＳｈｉｆｔＸにＭＸを代入し、Ｙ方向への移動量ＳｈｉｆｔＹにＭＹを代入する（ステップ２５４）。
【００６８】
次に、同期符号検出部２４は、ＰＡ［Ｋ，Ｌ］のパターン値が「６５」かどうかを判定する（ステップ２５５）。
ＰＡ［Ｋ，Ｌ］のパターン値が「６５」であれば、符号配列ＰＡ［Ｘ，Ｙ］を左方向に９０度回転させる（ステップ２５６）。図４（ｂ）に示すようにパターン値「６５」の符号パターンは、パターン値「６４」の符号パターンを右方向に９０度回転させた画像であるので、逆方向に９０度回転させて画像を正立させている。尚、このとき、符号配列ＰＡ［Ｘ，Ｙ］内の全てのパターン値が、左方向に９０度回転させた場合のパターン値に変換される。
また、この回転に伴って、同期符号のあるブロックのＸ座標ＳＸにＬを代入し、Ｙ座標ＳＹに６−Ｋを代入する。また、ブロックフレームのＸ方向への移動量ＳｈｉｆｔＸにＭＹを代入し、Ｙ方向への移動量ＳｈｉｆｔＹに２−ＭＸを代入する（ステップ２５７）。
【００６９】
次に、同期符号検出部２４は、ＰＡ［Ｋ，Ｌ］のパターン値が「６６」かどうかを判定する（ステップ２５８）。
ＰＡ［Ｋ，Ｌ］のパターン値が「６６」であれば、符号配列ＰＡ［Ｘ，Ｙ］を左方向に１８０度回転させる（ステップ２５９）。図４（ｂ）に示すようにパターン値「６６」の符号パターンは、パターン値「６４」の符号パターンを１８０度回転させた画像であるので、パターン値「６６」の符号パターンを１８０度回転させて画像を正立させている。尚、このとき、符号配列ＰＡ［Ｘ，Ｙ］内の全てのパターン値が、１８０度回転させた場合のパターン値に変換される。
また、この回転に伴って、同期符号のあるブロックのＸ座標ＳＸに６−Ｋを代入し、Ｙ座標ＳＹに６−Ｌを代入する。また、ブロックフレームのＸ方向への移動量ＳｈｉｆｔＸに２−ＭＸを代入し、Ｙ方向への移動量ＳｈｉｆｔＹに２−ＭＹを代入する（ステップ２６０）。
【００７０】
次に、同期符号検出部２４は、ＰＡ［Ｋ，Ｌ］のパターン値が「６７」かどうかを判定する（ステップ２６１）。
ＰＡ［Ｋ，Ｌ］のパターン値が「６７」であれば、符号配列ＰＡ［Ｘ，Ｙ］を左方向に２７０度回転させる（ステップ２６２）。図４（ｂ）に示すようにパターン値「６７」の符号パターンは、パターン値「６４」の符号パターンを右に２７０度回転させた画像であるので、逆方向に２７０度回転させて画像を正立させている。尚、このとき、符号配列ＰＡ［Ｘ，Ｙ］内の全てのパターン値が、左方向に２７０度回転させた場合のパターン値に変換される。
また、この回転に伴って、同期符号のあるブロックのＸ座標ＳＸに６−Ｌを代入し、Ｙ座標ＳＹにＫを代入する。また、ブロックフレームのＸ方向への移動量ＳｈｉｆｔＸに２−ＭＹを代入し、Ｙ方向への移動量ＳｈｉｆｔＹにＭＸを代入する（ステップ２６３）。
【００７１】
そして、ステップ２５４、２５７、２６０、２６３で、ＳＸ、ＳＹ、ＳｈｉｆｔＸ、ＳｈｉｆｔＹに値が代入された場合、同期符号検出部２４は、ＰＡ［Ｘ，Ｙ］とこれらの値を識別符号検出部３０、Ｘ座標符号検出部４０、Ｙ座標符号検出部４５に出力する（ステップ２６４）。
また、ＰＡ［Ｋ，Ｌ］がパターン値「６４」〜「６７」のいずれでもなければ、同期符号検出部２４は、Ｋ＝５であるかどうかを判定する（ステップ２６５）。Ｋ＝５でない場合には、Ｋに「１」を加算し（ステップ２６６）、ステップ２５３に戻る。Ｋ＝５であれば、Ｌ＝５であるかどうかを判定する（ステップ２６７）。Ｌ＝５でない場合には、Ｋに「１」を代入し、Ｌに「１」を加算し（ステップ２６８）、ステップ２５３に戻る。即ち、ステップ２５３〜２６４の処理を、パターン値「６４」〜「６７」のブロックを検出するまでＫ、Ｌの値を変更しながら繰り返し行う。また、Ｋ＝５、Ｌ＝５になっても、パターン値「６４」〜「６７」のブロックを検出することができなかった場合には、復号不能の判定信号を出力する（ステップ２６９）。
【００７２】
次に、識別符号検出部３０及び識別符号復号部３２の動作について説明する。尚、フレーム番号に応じた復号レベルによる復号を上記（４）のように履歴情報を用いて行うものとすると、ストロークの長短に応じて復号レベルを設定した場合とフレーム番号に応じて復号レベルを設定した場合とで動作が異なってくるので、２つの動作を説明する。
【００７３】
図１７は、ストロークの長短に応じて復号レベルを設定した場合における識別符号検出部３０及び識別符号復号部３２の動作例を示したフローチャートである。
まず、識別符号検出部３０は、同期符号検出部２４から符号配列ＰＡ［Ｘ，Ｙ］、ＳＸ、ＳＹを取得する（ステップ３０１）。
次に、識別符号検出部３０は、識別符号配列ＩＡ［Ｘ，Ｙ］の全ての要素を「−１」で初期化する（ステップ３０２）。尚、この「−１」は、パターン値として用いられていない番号とする。そして、符号ブロックにおける各ブロックを識別するためのカウンタＩＸ、ＩＹに「１」を代入する（ステップ３０３）。ここで、ＩＸは、Ｘ方向のブロック数を示すカウンタであり、ＩＹは、Ｙ方向のブロック数を示すカウンタである。
【００７４】
また、識別符号検出部３０は、ＩＹ−ＳＹが「５」で割り切れるかどうかを判定する（ステップ３０４）。即ち、ＩＹで特定される行に同期符号が配置されているかどうかを判定する。
ここで、ＩＹ−ＳＹが「５」で割り切れた場合、つまり、この行に同期符号が配置されている場合は、識別符号を取り出す対象ではないため、ＩＹに「１」を加算し（ステップ３０５）、ステップ３０４へ進む。
一方、ＩＹ−ＳＹが「５」で割り切れなかった場合、つまり、この行に同期符号が配置されていない場合は、ＩＸ−ＳＸが「５」で割り切れるかどうかを判定する（ステップ３０６）。即ち、ＩＸで特定される列に同期符号が配置されているかどうかを判定する。
【００７５】
ここで、ＩＸ−ＳＸが「５」で割り切れた場合、つまり、この列に同期符号が配置されている場合は、識別符号を取り出す対象ではないため、ＩＸに「１」を加算し（ステップ３０７）、ステップ３０６へ進む。
一方、ＩＸ−ＳＸが「５」で割り切れなかった場合、つまり、この列に同期符号が配置されていない場合、識別符号検出部３０は、ＩＡ［（ＩＸ−ＳＸ）ｍｏｄ５，（ＩＹ−ＳＹ）ｍｏｄ５］にＰＡ［ＩＸ，ＩＹ］を代入する（ステップ３０８）。
【００７６】
そして、ＩＸ＝５であるかどうかを判定する（ステップ３０９）。
ここで、ＩＸ＝５でない場合には、ＩＸに「１」を加算して（ステップ３０７）、ステップ３０６〜３０８の処理をＩＸ＝５となるまで繰り返し行う。また、ＩＸ＝５となると、次に、ＩＹ＝５であるかどうかを判定する（ステップ３１０）。ＩＹ＝５でない場合には、ＩＸに「１」を代入し（ステップ３１１）、ＩＹに「１」を加算して（ステップ３０５）、ステップ３０４〜３０９の処理をＩＹ＝５となるまで繰り返し行う。また、ＩＹ＝５となると、識別符号復号部３２の処理に移る。
【００７７】
即ち、識別符号復号部３２は、特定不能誤りの数をｉＥｒａｓｕｒｅに設定する（ステップ３１２）。ここで、特定不能誤りの数は、ＩＡ［Ｘ，Ｙ］＝−１となっているブロックを数えることで求める。そして、識別符号復号部３２は、図１４（ａ）のステップ１０４でメモリに記憶されたｄｅｃｏｄｅＬｅｖｅｌを読み出す（ステップ３１３）。
その後、識別符号復号部３２は、ｉＥｒａｓｕｒｅがｄｅｃｏｄｅＬｅｖｅｌを超えているかどうかを判定する（ステップ３１４）。
ここで、ｉＥｒａｓｕｒｅがｄｅｃｏｄｅＬｅｖｅｌを超えていないと判定すると、識別符号復号部３２は、ＩＡ［Ｘ，Ｙ］から識別情報を得る（ステップ３１５）。また、ｉＥｒａｓｕｒｅがｄｅｃｏｄｅＬｅｖｅｌを超えていると判定すると、識別情報にＮ／Ａを代入する（ステップ３１６）。
【００７８】
図１８は、フレーム番号に応じて復号レベルを設定した場合における識別符号検出部３０及び識別符号復号部３２の動作例を示したフローチャートである。
まず、識別符号検出部３０は、判定配列ＩＡ［Ｘ，Ｙ，Ｐ］の全ての要素を「０」で初期化する（ステップ３５１）。
次に、識別符号検出部３０は、同期符号検出部２４から符号配列ＰＡ［Ｘ，Ｙ］、ＳＸ、ＳＹを取得する（ステップ３５２）。そして、符号ブロックにおける各ブロックを識別するためのカウンタＩＸ、ＩＹに「１」を代入する（ステップ３５３）。ここで、ＩＸは、Ｘ方向のブロック数を示すカウンタであり、ＩＹは、Ｙ方向のブロック数を示すカウンタである。
【００７９】
また、識別符号検出部３０は、ＩＹ−ＳＹが「５」で割り切れるかどうかを判定する（ステップ３５４）。即ち、ＩＹで特定される行に同期符号が配置されているかどうかを判定する。
ここで、ＩＹ−ＳＹが「５」で割り切れた場合、つまり、この行に同期符号が配置されている場合は、識別符号を取り出す対象ではないため、ＩＹに「１」を加算し（ステップ３５５）、ステップ３５４へ進む。
一方、ＩＹ−ＳＹが「５」で割り切れなかった場合、つまり、この行に同期符号が配置されていない場合は、ＩＸ−ＳＸが「５」で割り切れるかどうかを判定する（ステップ３５６）。即ち、ＩＸで特定される列に同期符号が配置されているかどうかを判定する。
【００８０】
ここで、ＩＸ−ＳＸが「５」で割り切れた場合、つまり、この列に同期符号が配置されている場合は、識別符号を取り出す対象ではないため、ＩＸに「１」を加算し（ステップ３５７）、ステップ３５６へ進む。
一方、ＩＸ−ＳＸが「５」で割り切れなかった場合、つまり、この列に同期符号が配置されていない場合、識別符号検出部３０は、ＩＡ［（ＩＸ−ＳＸ）ｍｏｄ５，（ＩＹ−ＳＹ）ｍｏｄ５，ＰＡ［ＩＸ，ＩＹ］］に「１」を加算する（ステップ３５８）。
【００８１】
そして、ＩＸ＝５であるかどうかを判定する（ステップ３５９）。
ここで、ＩＸ＝５でない場合には、ＩＸに「１」を加算して（ステップ３５７）、ステップ３５６〜３５８の処理をＩＸ＝５となるまで繰り返し行う。また、ＩＸ＝５となると、次に、ＩＹ＝５であるかどうかを判定する（ステップ３６０）。ＩＹ＝５でない場合には、ＩＸに「１」を代入し（ステップ３６１）、ＩＹに「１」を加算して（ステップ３５５）、ステップ３５４〜３５９の処理をＩＹ＝５となるまで繰り返し行う。また、ＩＹ＝５となると、これまで求めたＩＡ［Ｘ，Ｙ，Ｐ］の最大値を求める処理に移る。
【００８２】
まず、識別符号検出部３０は、識別符号配列における各ブロックを識別するためのＪＸ、ＪＹに「１」を代入する（ステップ３７１）。
次に、識別符号検出部３０は、ステップ３５８で生成した判定配列ＩＡ［ＪＸ，ＪＹ，Ｐ］を最大にするＰの値を、識別符号配列ＥＡ［ＪＸ，ＪＹ］に格納する（ステップ３７２）。
そして、ＪＸ＝４であるかどうかを判定する（ステップ３７３）。
ここで、ＪＸ＝４でない場合には、ＪＸに「１」を加算して（ステップ３７４）、ステップ３７２の処理をＪＸ＝４となるまで繰り返し行う。また、ＪＸ＝４となると、次に、ＪＹ＝４であるかどうかを判定する（ステップ３７５）。ＪＹ＝４でない場合には、ＪＸに「１」を代入し、ＪＹに「１」を加算して（ステップ３７６）、ステップ３７２〜３７４の処理をＪＹ＝４となるまで繰り返し行う。また、ＪＹ＝４となると、識別符号復号部３２の処理に移る。
【００８３】
即ち、識別符号復号部３２は、特定不能誤りの数をｉＥｒａｓｕｒｅに設定する（ステップ３７７）。ここで、特定不能誤りの数は、ＥＡ［ＪＸ，ＪＹ］＝−１となっているブロックを数えることで求める。そして、識別符号復号部３２は、図１４（ｂ）のステップ１５４でメモリに記憶されたｄｅｃｏｄｅＬｅｖｅｌを読み出す（ステップ３７８）。
その後、識別符号復号部３２は、ｉＥｒａｓｕｒｅがｄｅｃｏｄｅＬｅｖｅｌを超えているかどうかを判定する（ステップ３７９）。
ここで、ｉＥｒａｓｕｒｅがｄｅｃｏｄｅＬｅｖｅｌを超えていないと判定すると、識別符号復号部３２は、ＥＡ［ＪＸ，ＪＹ］から識別情報を得る（ステップ３８０）。また、ｉＥｒａｓｕｒｅがｄｅｃｏｄｅＬｅｖｅｌを超えていると判定すると、識別情報にＮ／Ａを代入する（ステップ３８１）。
【００８４】
次に、Ｘ座標符号検出部４０及びＸ座標符号復号部４２の動作について説明する。
図１９は、Ｘ座標符号検出部４０及びＸ座標符号復号部４２の動作例を示したフローチャートである。
まず、Ｘ座標符号検出部４０は、同期符号検出部２４から符号配列ＰＡ［Ｘ，Ｙ］、ＳＸ、ＳＹ、ＳｈｉｆｔＸ、ＳｈｉｆｔＹを取得する（ステップ４０１）。
次に、Ｘ座標符号検出部４０は、Ｘ座標符号配列ＸＡ［Ｘ］の全ての要素を「−１」で初期化する（ステップ４０２）。尚、この「−１」は、パターン値として用いられていない番号とする。そして、符号ブロックにおける各ブロックを識別するためのカウンタＩＸ、ＩＹに「１」を代入する。ここで、ＩＸは、Ｘ方向のブロック数を示すカウンタであり、ＩＹは、Ｙ方向のブロック数を示すカウンタである。更に、Ｘ座標符号検出部４０は、Ｘ座標符号配列における各要素を識別するためのカウンタＫＸにも「１」を代入する（ステップ４０３）。
【００８５】
また、Ｘ座標符号検出部４０は、ＩＹ−ＳＹが「５」で割り切れるかどうかを判定する（ステップ４０４）。即ち、ＩＹで特定される行に同期符号が配置されているかどうかを判定する。
ここで、ＩＹ−ＳＹが「５」で割り切れなかった場合、つまり、この行に同期符号が配置されていない場合は、Ｘ座標符号を取り出す対象ではないため、ＩＹに「１」を加算し（ステップ４０５）、ステップ４０４へ進む。
一方、ＩＹ−ＳＹが「５」で割り切れた場合、つまり、この行に同期符号が配置されている場合、Ｘ座標符号検出部４０は、ＩＸ−ＳＸが「５」で割り切れるかどうかを判定する（ステップ４０６）。即ち、ＩＸで特定される列に同期符号が配置されているかどうかを判定する。
【００８６】
ここで、ＩＸ−ＳＸが「５」で割り切れた場合、つまり、この列に同期符号が配置されている場合は、Ｘ座標符号を取り出す対象ではないため、ＩＸに「１」を加算し（ステップ４０７）、ステップ４０６へ進む。
一方、ＩＸ−ＳＸが「５」で割り切れなかった場合、つまり、この列に同期符号が配置されていない場合、Ｘ座標符号検出部４０は、ＸＡ［ＫＸ］にＰＡ［ＩＸ，ＩＹ］を代入する（ステップ４０８）。
【００８７】
そして、ＩＸ＝５であるかどうかを判定する（ステップ４０９）。
ここで、ＩＸ＝５でない場合には、ＫＸに「１」を加算し（ステップ４１０）、ＩＸに「１」を加算して（ステップ４０７）、ステップ４０６〜４０８の処理をＩＸ＝５となるまで繰り返し行う。また、ＩＸ＝５となると、Ｘ座標符号復号部４２の処理に移る。
【００８８】
即ち、Ｘ座標符号復号部４２は、ＸＡ［Ｘ］を復号できるかどうかを判定する（ステップ４１１）。
ここで、ＸＡ［Ｘ］を復号できると判定すると、Ｘ座標符号復号部４２は、ＸＡ［Ｘ］とＳｈｉｆｔＸからＸ座標情報を復号する（ステップ４１２）。また、ＸＡ［Ｘ］が復号できないと判定された場合は、Ｘ座標情報にＮ／Ａを代入する（ステップ４１３）。
【００８９】
尚、ここでは、Ｘ座標符号検出部４０及びＸ座標符号復号部４２の動作のみ説明したが、Ｙ座標符号検出部４５及びＹ座標符号復号部４７も同様の動作を行う。
以上により、本実施の形態における画像処理装置２０の動作説明を終了する。
【００９０】
次に、本実施の形態における画像処理装置２０の具体的なハードウェア構成について説明する。
まず、画像処理装置２０を実現するペンデバイス６０について説明する。
図２０は、ペンデバイス６０の機構を示した図である。
図示するように、ペンデバイス６０は、ペン全体の動作を制御する制御回路６１を備える。また、制御回路６１は、入力画像から検出した符号画像を処理する画像処理部６１ａと、そこでの処理結果から識別情報及び座標情報を抽出するデータ処理部６１ｂとを含む。
そして、制御回路６１には、ペンデバイス６０による筆記動作をペンチップ６９に加わる圧力によって検出する圧力センサ６２が接続されている。また、媒体上に赤外光を照射する赤外ＬＥＤ６３と、画像を入力する赤外ＣＭＯＳ６４も接続されている。更に、識別情報及び座標情報を記憶するための情報メモリ６５と、外部装置と通信するための通信回路６６と、ペンを駆動するためのバッテリ６７と、ペンの識別情報（ペンＩＤ）を記憶するペンＩＤメモリ６８も接続されている。
【００９１】
尚、図１３に示した画像読取部２１は、例えば、図２０の赤外ＣＭＯＳ６４にて実現される。また、ドット配列生成部２２は、例えば、図２０の画像処理部６１ａにて実現される。更に、図１３に示した復号レベル設定部１０、ブロック検出部２３、同期符号検出部２４、識別符号検出部３０、識別符号復号部３２、Ｘ座標符号検出部４０、Ｘ座標符号復号部４２、Ｙ座標符号検出部４５、Ｙ座標符号復号部４７、情報出力部５０は、例えば、図２０のデータ処理部６１ｂにて実現される。
【００９２】
また、図２０の画像処理部６１ａ又はデータ処理部６１ｂにて実現される処理は、例えば、汎用のコンピュータで実現してもよい。そこで、かかる処理をコンピュータ９０で実現するものとし、コンピュータ９０のハードウェア構成について説明する。
図２１は、コンピュータ９０のハードウェア構成を示した図である。
図示するように、コンピュータ９０は、演算手段であるＣＰＵ（Central Processing Unit）９１と、記憶手段であるメインメモリ９２及び磁気ディスク装置（ＨＤＤ：Hard Disk Drive）９３とを備える。ここで、ＣＰＵ９１は、ＯＳ（Operating System）やアプリケーション等の各種ソフトウェアを実行し、上述した各機能を実現する。また、メインメモリ９２は、各種ソフトウェアやその実行に用いるデータ等を記憶する記憶領域であり、磁気ディスク装置９３は、各種ソフトウェアに対する入力データや各種ソフトウェアからの出力データ等を記憶する記憶領域である。
更に、コンピュータ９０は、外部との通信を行うための通信Ｉ／Ｆ９４と、ビデオメモリやディスプレイ等からなる表示機構９５と、キーボードやマウス等の入力デバイス９６とを備える。
【００９３】
尚、本実施の形態を実現するプログラムは、通信手段により提供することはもちろん、ＣＤ−ＲＯＭ等の記録媒体に格納して提供することも可能である。
【図面の簡単な説明】
【００９４】
【図１】９Ｃ２方式及び９Ｃ３方式における符号パターンの一例を示した図である。
【図２】９Ｃ２方式における全符号パターンの一例を示した図である。
【図３】９Ｃ３方式における全符号パターンの一例を示した図である。
【図４】９Ｃ２方式及び９Ｃ３方式における同期パターンの例を示した図である。
【図５】符号ブロックの基本的なレイアウトの例を示した図である。
【図６】符号ブロックの広範囲のレイアウトの例を示した図である。
【図７】特定不能誤りの数と、誤特定誤りの数と、復号の成否との関係を説明するための図である。
【図８】許容する特定不能誤りの数ごとに、ドットの消去／付加の確率と、符号ブロックから正しい復号結果又は誤った復号結果が得られる確率との関係を示したグラフである。
【図９】本実施の形態における復号レベルの設定を具体例を用いて示した図である。
【図１０】本実施の形態における復号レベルの設定を具体例を用いて示した図である。
【図１１】本実施の形態における復号レベルの設定を具体例を用いて示した図である。
【図１２】本実施の形態における復号レベルの設定を具体例を用いて示した図である。
【図１３】本実施の形態における画像処理装置の機能構成例を示したブロック図である。
【図１４】本実施の形態における復号レベル設定部の動作例を示したフローチャートである。
【図１５】本実施の形態におけるブロック検出部の動作例を示したフローチャートである。
【図１６】本実施の形態における同期符号検出部の動作例を示したフローチャートである。
【図１７】本実施の形態における識別符号検出部等の第１の動作例を示したフローチャートである。
【図１８】本実施の形態における識別符号検出部等の第２の動作例を示したフローチャートである。
【図１９】本実施の形態におけるＸ座標符号検出部等の動作例を示したフローチャートである。
【図２０】本実施の形態における画像処理装置を実現可能なペンデバイスの機構を示した図である。
【図２１】本実施の形態を適用可能なコンピュータのハードウェア構成図である。
【符号の説明】
【００９５】
１０…復号レベル設定部、２０…画像処理装置、２１…画像読取部、２２…ドット配列生成部、２３…ブロック検出部、２４…同期符号検出部、３０…識別符号検出部、３２…識別符号復号部、４０…Ｘ座標符号検出部、４２…Ｘ座標符号復号部、４５…Ｙ座標符号検出部、４７…Ｙ座標符号復号部、５０…情報出力部
【図１】
2009176251.tif 000003
【図２】
2009176251.tif 000004
【図３】
2009176251.tif 000005
【図４】
2009176251.tif 000006
【図５】
2009176251.tif 000007
【図６】
2009176251.tif 000008
【図７】
2009176251.tif 000009
【図８】
2009176251.tif 000010
【図９】
2009176251.tif 000011
【図１０】
2009176251.tif 000012
【図１１】
2009176251.tif 000013
【図１２】
2009176251.tif 000014
【図１３】
2009176251.tif 000015
【図１４】
2009176251.tif 000016
【図１５】
2009176251.tif 000017
【図１６】
2009176251.tif 000018
【図１７】
2009176251.tif 000019
【図１８】
2009176251.tif 000020
【図１９】
2009176251.tif 000021
【図２０】
2009176251.tif 000022
【図２１】
2009176251.tif 000023