説明

画像処理装置及びプログラム

【課題】ビット列を表す画像を媒体から順次読み取った際に、1つの画像だけでビット列を検出できなくても全体としてビット列を検出できるようにする。
【解決手段】画像を読み取る画像読取部21と、画像からドット配列を生成するドット配列生成部22と、ドット配列上でブロックを検出して符号配列を生成するブロック検出部23と、符号配列上で同期符号を検出する同期符号検出部24と、同期符号に基づいて画像の回転を判定する回転判定部25と、符号配列を回転する符号配列回転部26と、符号配列から識別符号、X座標符号、Y座標符号をそれぞれ検出する識別符号検出部30、X座標符号検出部40、Y座標符号検出部45とを備える。そして、識別符号検出部30は、順次取得した複数の画像の各々から識別符号を取り出し、各識別符号の断片を結合することにより正しい識別符号を生成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理装置、プログラムに関する。
【背景技術】
【0002】
表面上の複数の位置を符号化する位置コードを提供する方法は知られている(例えば、特許文献1参照)。この特許文献1では、循環数字列を表面に沿って複数回印刷する。その際、循環数字列の異なるローテーションを、隣り合う数字列間で所定のずれが起こるように使用し、表面を分割した複数のコードウィンドウが、少なくとも3つの循環数字列を備えると共に、隣り合うコードウィンドウの1つの数字列と重なり合う1つの数字列を有するものであり、また、コードウィンドウの位置を、そのコードウィンドウに属している循環数字列間のずれによって符号化している。
【0003】
論理的に順位付けられたデジタル量子の機械読取り可能なエンコーディングを記録した記録媒体からのエンコーディングの空間的に非同期的な読取りを可能にする技術も知られている(例えば、特許文献2参照)。この特許文献2では、本質的に同一であるエンコーディングの多数のコピーを形成し、機械認識可能な空間同期指標をエンコーディングのコピーの各々の中のプリント位置に組み合わせて、エンコーディングの空間的に同期可能な多数の事例を提供し、それらの事例をレイアウト規則に従って記録媒体における空間的に周期的な中心の格子に書き込んでいる。
【0004】
取り込まれた画像の位置をより大きい画像から決定するためのシステム及び方法も知られている(例えば、特許文献3参照)。この特許文献3では、非反復的な系列を、所定のサイズのサブウィンドウ毎に固有とされた非反復的な配列に折り畳み、その取り込まれた位置を非反復的な配列内のサブウィンドウ毎に決定することによって、取り込まれた画像の位置を、より大きいサブウィンドウの画像から決定している。
【0005】
光学的に読み取り可能に記録されるマルチメディア情報の長時間記録及び繰り返し再生を可能とする技術も知られている(例えば、特許文献4参照)。この特許文献4において、記録装置は、プリンタシステムや印刷用製版システムにより、オーディオ情報、映像情報、ディジタルコードデータ等を含めた所謂マルチメディア情報を光学的に読み取り可能なドットコードとして、画像や文字と一緒に紙等の媒体上に記録する。ペン型の情報再生装置は、ドットコードの手動走査に応じてそのドットコードを順次取り込んで、元のオーディオ情報を音声出力器にて、元の映像情報を表示装置にて、元のディジタルコードデータをページプリンタ等にて出力する。
【0006】
タブレットを使用せずに、媒体上の座標を精緻に検出できるようにする技術も知られている(例えば、特許文献5参照)。この特許文献5において、ペン型の座標入力装置は、媒体上に形成されその媒体上の座標を示すコードシンボルを光学的に読み取り、この読み取ったコードシンボルをデコードし、読み取った画像中におけるコードシンボルの位置、向き及び歪み量を検出する。そして、デコード後の情報と、コードシンボルの位置、向き及び歪み量とにより、先端部の媒体上での位置の座標を検出する。
【0007】
【特許文献1】特表2003−511762号公報
【特許文献2】特開平9−185669号公報
【特許文献3】特開2004−152273号公報
【特許文献4】特開平6−231466号公報
【特許文献5】特開2000−293303号公報
【発明の開示】
【発明が解決しようとする課題】
【0008】
ここで、従来、ビット列を表す画像を媒体から順次読み取った際に、1つの画像だけでビット列を検出できなければ、全体としてもビット列を検出することができないという課題があった。
本発明の目的は、ビット列を表す画像を媒体から順次読み取った際に、1つの画像だけでビット列を検出できなくても全体としてビット列を検出できるようにすることにある。
【課題を解決するための手段】
【0009】
請求項1に記載の発明は、ビット列を表す画像が繰り返し印刷された媒体から読み取られた当該画像を取得する取得手段と、前記取得手段により順次取得された複数の前記画像がそれぞれ表す複数のビット列を検出する検出手段と、前記検出手段により検出された前記複数のビット列の部分列を組み合わせることにより、1つのビット列を生成する生成手段とを備えたことを特徴とする画像処理装置である。
請求項2に記載の発明は、前記生成手段は、前記1つのビット列の特定の部分列として、前記複数のビット列のいずれかにおける当該特定の部分列に対応する部分列を用いることを特徴とする請求項1記載の画像処理装置である。
請求項3に記載の発明は、前記生成手段は、前記1つのビット列の特定の部分列として、前記複数のビット列における当該特定の部分列に対応する部分列のうち最も先に検出されたものを用いることを特徴とする請求項1記載の画像処理装置である。
請求項4に記載の発明は、前記生成手段により生成された前記1つのビット列における未確定の部分列の割合が所定の閾値以下である場合に、当該1つのビット列が表す情報を復元する復元手段を更に備えたことを特徴とする請求項1記載の画像処理装置である。
請求項5に記載の発明は、前記1つのビット列は、前記媒体又は前記媒体に印刷された文書を識別する識別情報を表すビット列であることを特徴とする請求項1記載の画像処理装置である。
請求項6に記載の発明は、コンピュータに、ビット列を表す画像が繰り返し印刷された媒体から読み取られた当該画像を取得する機能と、順次取得された複数の前記画像がそれぞれ表す複数のビット列を検出する機能と、検出された前記複数のビット列の部分列を組み合わせることにより、1つのビット列を生成する機能とを実現させるためのプログラムである。
請求項7に記載の発明は、前記生成する機能では、前記1つのビット列の特定の部分列として、前記複数のビット列のいずれかにおける当該特定の部分列に対応する部分列を用いることを特徴とする請求項6記載のプログラムである。
請求項8に記載の発明は、前記生成する機能では、前記1つのビット列の特定の部分列として、前記複数のビット列における当該特定の部分列に対応する部分列のうち最も先に検出されたものを用いることを特徴とする請求項6記載のプログラムである。
【発明の効果】
【0010】
請求項1の発明は、ビット列を表す画像を媒体から順次読み取った際に、1つの画像だけでビット列を検出できなくても全体としてビット列を検出することができるという効果を有する。
請求項2の発明は、本構成を有していない場合に比較して、画像からのビット列の検出の精度が高まるという効果を有する。
請求項3の発明は、本構成を有していない場合に比較して、画像からのビット列の検出の速度が高まるという効果を有する。
請求項4の発明は、本構成を有していない場合に比較して、ビット列が表す情報を復元できる可能性が高まるという効果を有する。
請求項5の発明は、識別情報を表す画像を媒体から順次読み取った際に、1つの画像だけで識別情報を検出できなくても全体として識別情報を検出することができるという効果を有する。
請求項6の発明は、ビット列を表す画像を媒体から順次読み取った際に、1つの画像だけでビット列を検出できなくても全体としてビット列を検出することができるという効果を有する。
請求項7の発明は、本構成を有していない場合に比較して、画像からのビット列の検出の精度が高まるという効果を有する。
請求項8の発明は、本構成を有していない場合に比較して、画像からのビット列の検出の速度が高まるという効果を有する。
【発明を実施するための最良の形態】
【0011】
以下、添付図面を参照して、本発明を実施するための最良の形態(以下、「実施の形態」という)について詳細に説明する。
本実施の形態では、m(m≧3)箇所から選択したn(1≦n<m)箇所に単位画像を配置してなるパターン画像(以下、「単位符号パターン」という)によってmCn(=m!/{(m−n)!×n!})通りの情報を表現する。つまり、1つの単位画像を情報に対応させるのではなく、複数の単位画像を情報に対応させている。仮に1つの単位画像を情報に対応させたとすると、単位画像が欠損したり、ノイズが加わったりした場合に、誤った情報を表現してしまうという欠点がある。これに対して、例えば2つの単位画像を情報に対応させたとすると、単位画像が1つであったり3つであったりした場合に、容易に誤りであることが分かる。更に、1つの単位画像で1ビット、又は、高々2ビットを表現する方法では、情報を表現するパターンと視覚的に似たパターンで、情報パターンの読出しを制御する同期パターンを表現することができない。このようなことから、本実施の形態では、上記のような符号化方式を採用している。以下では、このような符号化方式をmCn方式と称する。
ここで、単位画像としては、如何なる形状のものを用いてもよい。本実施の形態では、単位画像の一例としてドット画像(以下、単に「ドット」という)を用いるが、例えば、斜線パターン等、他の形状の画像であってもよい。
【0012】
図1に、mCn方式における単位符号パターンの例を示す。
図では、黒色の領域と斜線の領域をドット配置可能な領域とし、その間にある白色の領域をドット配置不可能な領域としている。そして、ドット配置可能な領域のうち、黒色の領域にドットが配置され、斜線の領域にはドットが配置されていないことを示している。即ち、図1は、縦3ドット、横3ドットの合計9ドットを配置可能な領域を設けた例を示しており、(a)は、ドット配置可能な領域に2ドットを配置する9C2方式における単位符号パターンであり、(b)は、ドット配置可能な領域に3ドットを配置する9C3方式における単位符号パターンである。
【0013】
ところで、図1で配置されるドット(黒色の領域)は、あくまで情報表現のためのドットであり、画像を構成する最小単位であるドット(図1の最小の四角)とは必ずしも一致しない。本実施の形態において、「ドット」というときは前者のドットを指し、後者のドットは「ピクセル」と呼ぶことにすれば、ドットは、600dpiにおける2ピクセル×2ピクセルの大きさを有することになる。600dpiにおける1ピクセルの大きさは0.0423mmなので、ドットの一辺は、84.6μm(=0.0423mm×2)である。ドットは、大きくなればなるほど目に付きやすくなるため、できるだけ小さいほうが好ましい。ところが、あまり小さくすると、プリンタで印刷できなくなってしまう。そこで、ドットの大きさとして、50μmより大きく100μmより小さい上記の値を採用している。但し、上記の値84.6μmは、あくまで計算上の数値であり、実際に印刷されたトナー像では100μm程度になる。
【0014】
また、図2に、単位符号パターンの他の例を示す。尚、この図では、ドット間の空白を省略している。
図2(a)は、図1(a)に示した9C2方式における全ての単位符号パターンを示している。9C2方式では、これらの単位符号パターンを用いて、36(=)通りの情報を表現する。また、図2(b)は、図1(b)に示した9C3方式における全ての単位符号パターンを示している。9C3方式では、これらの単位符号パターンを用いて、84(=)通りの情報を表現する。
【0015】
尚、単位符号パターンは、m=9の場合に限定されるものではなく、mの値として、例えば、4、16等の値を採用してもよい。また、nの値も1≦n<mを満たしていれば如何なる値を採用してもよい。
また、mの値としては、平方数(整数の2乗)だけでなく、異なる2つの整数の積を採用してもよい。つまり、ドットを配置可能な領域は、3ドット×3ドットを配置する場合のような正方形の領域に限らず、3ドット×4ドットを配置する場合のような長方形の領域であってもよい。尚、本明細書において、長方形とは、隣り合う2辺の長さが等しくない矩形のことをいうものとする。
【0016】
このように、m箇所からn箇所を選択することでmCn種類の単位符号パターンを用意しているが、本実施の形態では、これらの単位符号パターンのうち、特定のパターンを情報パターンとして利用し、残りを同期パターンとして利用する。ここで、情報パターンとは、媒体に埋め込む情報を表現するパターンである。また、同期パターンとは、媒体に印刷された情報パターンを取り出すために用いられるパターンである。例えば、情報パターンの位置を特定したり、画像の回転を検出したりするために用いられる。尚、媒体としては、画像を印刷することが可能であれば、如何なるものを用いてもよい。紙が代表例なので、以下では媒体を紙として説明するが、金属、プラスチック、繊維等であってもよい。
【0017】
ここで、同期パターンについて説明する。
図3は、9C2方式における同期パターンの例である。このようにmCn方式におけるmが平方数である場合は、画像の回転の検出のために4種類の単位符号パターンを同期パターンとして用意する必要がある。ここでは、パターン値32の単位符号パターンを正立した同期パターンとしている。また、パターン値33の単位符号パターンを右に90度回転した同期パターン、パターン値34の単位符号パターンを右に180度回転した同期パターン、パターン値35の単位符号パターンを右に270度回転した同期パターンとしている。この場合、36種類の単位符号パターンからこの4種類の同期パターンを除いた残りを情報パターンとし、5ビットの情報を表現するとよい。但し、36種類の単位符号パターンの情報パターンと同期パターンへの振り分け方は、これには限らない。例えば、4種類で1組を構成する同期パターンの組を5つ用意し、残りの16種類の情報パターンで4ビットの情報を表現してもよい。
【0018】
尚、図示しないが、mCnにおけるmが異なる2つの整数の積である場合は、画像の回転の検出のために2種類の単位符号パターンを同期パターンとして用意すればよい。例えば、縦3ドット×横4ドットを配置可能な領域が検出されるべきなのに、縦4ドット×横3ドットを配置可能な領域が検出された場合は、その時点で画像が90度又は270度回転していることが分かるからである。
【0019】
次に、上述した単位符号パターンから構成される符号ブロックについて説明する。
図4は、符号ブロックの一例を示したものである。図では、9C2方式における単位符号パターンを使用していることも同時に示している。即ち、36種類の単位符号パターンを、例えば、同期パターンとして使用する4パターンと、情報パターンとして使用する32パターンとに分け、各パターンをレイアウトに従って配置する。
図では、レイアウトとして、3ドット×3ドットを配置可能な領域(以下、「ブロック」という)を5個×5個の25個並べたものを採用している。そして、この25個のブロックのうち、左上の1ブロックに同期パターンを配置している。また、同期パターンの右の4ブロックに紙面上のX方向の座標を特定するX座標情報を表す情報パターンを配置し、同期パターンの下の4ブロックに紙面上のY方向の座標を特定するY座標情報を表す情報パターンを配置している。更に、これらの座標情報を表す情報パターンで囲まれた16ブロックに、紙面又は紙面に印刷される文書の識別情報を表す情報パターンを配置している。
尚、9C2方式における単位符号パターンはあくまで例であり、図の左下に示すように、9C3方式における単位符号パターンを使用してもよい。
【0020】
また、本実施の形態では、符号ブロックのレイアウトとして、次の3つのレイアウトを想定している。第一に、識別情報と座標情報を符号化したパターンを配置したペンデバイス向けレイアウト、第二に、識別情報のみを符号化したパターンを配置したスキャナ向けレイアウト、第三に、識別情報と座標情報を符号化したパターンとスキャナを制御するための特定のパターンとを配置したスキャナ向けレイアウトである。尚、紙面に印刷された画像を読み取るスキャナには、比較的狭い範囲の画像を読み取るスキャナと、比較的広い範囲の画像を読み取るスキャナとがあるが、ここでは、前者のスキャナをペン型スキャナを例にとって「ペンデバイス」と表記し、後者のスキャナを単に「スキャナ」と表記している。
尚、第二のレイアウトと、第三のレイアウトはスキャナ向けではあるが、本実施の形態では、これらをペンデバイスで読み取ることを想定している。
【0021】
以下、これらのレイアウトを順に説明する。
(1)識別情報と座標情報を符号化したパターンを配置したペンデバイス向けレイアウト
図5に、このようなレイアウトの一部を示す。
このレイアウトでは、図4に示した符号ブロックを基本単位とし、この符号ブロックを紙面全体に周期的に配置する。図では、同期符号を「S」で表している。また、座標情報は、紙面の縦及び横に渡ってM系列で表現する。図では、M系列で表現されたX座標を、X1,X2,…,X12で表し、M系列で表現されたY座標を、Y1,Y2,…,Y12で表している。更に、識別情報の符号化には、幾つかの方法の利用が考えられるが、本実施の形態では、RS符号化が適している。RS符号は多値の符号法であり、この場合、ブロックの表現をRS符号の多値に対応させるとよいからである。図では、RS符号で表現された識別情報を、IXY(X=1〜4,Y=1〜4)で表している。
【0022】
(2)識別情報のみを符号化したパターンを配置したスキャナ向けレイアウト
図6に、このようなレイアウトの一部を示す。
このレイアウトでは、まず、情報を埋め込むのに必要なブロック数を計算する。例えば、誤り訂正符号も含めて200ビットが必要であったとする。9C3方式では、一例として1ブロックで6ビットの情報を表現するので、34ブロックで204ビットを表現する。更にこれを矩形で表現するために、縦5ブロック、横7ブロックの合計35ブロックを配置したレイアウトとする。尚、縦6ブロック、横6ブロックであってもよいが、図では5ブロック×7ブロックとしている。
但し、図6には、汎用的なレイアウトを示している。即ち、同期パターンが配置されたブロックを黒色で示し、これらのブロックに囲まれた太線内の符号ブロックは、横Xブロック、縦Yブロックからなるものとしている。そして、この領域に、識別情報を表す情報パターンが埋め込まれている。図では、識別情報を、YX(X=Y=1を除く)で表している。上記の例では、X=7、Y=5である。
ペンデバイスで読み込むことを前提とすれば、このXとYはペンデバイスで読み取ることができる大きさであることが必要である。しかしながら、後述するように、本実施の形態においては、この大きさを拡張することが可能である。
【0023】
(3)識別情報と座標情報を符号化したパターンとスキャナを制御するための特定のパターンとを配置したスキャナ向けレイアウト
図7に、このようなレイアウトの一部を示す。
このレイアウトでも、(1)のレイアウトと同様、縦5ブロック、横5ブロックの25ブロックを基本単位とする。ここで、紙面に印刷された画像を読み取った際に、コピーを禁止する等、スキャナに対して何らかの制御を行うことを考える。例えば、識別情報に情報を埋め込んでおき、復号後にスキャナを制御することも考えられるが、復号処理に時間がかかり、制御が間に合わない可能性もある。そこで、符号ブロックに含まれるブロックのうち「*」で示したブロックに対して、復号処理を行わなくても制御が可能な特殊なパターンを埋め込み、パターン認識により制御を行うようにする。
【0024】
尚、ここで説明した3つのレイアウトには、同じパターンが周期的に配置されているという共通の特徴がある。但し、画像として同じパターンであることが必ずしも要求されるわけではなく、同じビット列を表すパターンが周期的に配置されていればよい。このようなことから、上記レイアウトを有する画像は、特定のビット列を表す画像が繰り返し配置された繰り返し画像の一例であることになる。
【0025】
次いで、このような画像を生成する画像生成装置10について説明する。
図8は、画像生成装置10の構成例を示したブロック図である。
図示するように、画像生成装置10は、情報取得部11と、識別符号生成部12と、X座標符号生成部13と、Y座標符号生成部14と、符号配列生成部15と、パターン画像記憶部16と、符号画像生成部17とを備える。
【0026】
情報取得部11は、紙面又は紙面に印刷される文書の識別情報、及び、紙面上での座標情報を取得する。そして、前者を識別符号生成部12に出力し、後者のうち、X座標情報をX座標符号生成部13に、Y座標情報をY座標符号生成部14に出力する。
【0027】
識別符号生成部12は、情報取得部11から取得した識別情報を符号化し、符号化された識別情報である識別符号を符号配列生成部15に出力する。この識別情報の符号化は、ブロック分割、RS符号化の処理を含む。
このうち、ブロック分割は、識別情報を構成するビット列を、RS符号化を行うために複数のブロックに分割する処理である。例えば、9C2方式で5ビットの情報を表現可能な情報パターンを用いる場合、60ビットの識別情報は、ブロック長が5ビットの12個のブロックに分割される。
また、RS符号化は、分割されたブロックに対してRS符号化を行い、誤り訂正のための冗長ブロックを付加する処理である。先の例において2ブロックの誤りを訂正可能なRS符号を採用したとすると、符号長は16ブロックとなる。
【0028】
X座標符号生成部13は、X座標情報を符号化する。Y座標符号生成部14は、Y座標情報を符号化する。そして、これらは、符号化された座標情報である座標符号を符号配列生成部15に出力する。この座標情報の符号化は、M系列符号化、ブロック分割の処理を含む。
このうち、M系列符号化は、M系列を使用して座標情報を符号化する処理である。例えば、符号化したい座標情報の長さから必要なM系列の次数を求め、M系列を動的に生成することで座標符号を生成する。但し、予め符号化したい座標情報の長さが分かっている場合には、M系列を画像生成装置10のメモリ等に格納しておき、画像生成時にそれを読み出す構成としてもよい。
また、ブロック分割は、M系列を複数のブロックに分割する処理である。例えば、情報パターンとして16種類の単位符号パターンを選択したとすると、符号ブロックにおける各ブロックには4ビットの情報が格納される。従って、図4のようなレイアウトを有する符号ブロックに対して、X座標情報は、16ビット分格納される。ここで、12次のM系列を利用したとすると、M系列の系列長は4095(=212−1)となる。この系列を4ビットごとに切り出し、符号パターンで表現していくと、最後に3ビットあまることになる。この3ビットに、M系列の最初の1ビットを加えて4ビットとし単位符号パターンで表す。更に、M系列の2ビット目から4ビットごとに切り出し単位符号パターンで表す。すると、次の周期は、M系列の3ビット目から始まり、その次の周期は、M系列の4ビット目から始まる。更に、5周期目は、5ビット目からとなるが、これは最初の周期と一致する。従って、M系列の4周期を4ビットごとに切り出していくと、4095個の単位符号パターンで全てを尽くすことができる。M系列は12次であるので、3つの連続する単位符号パターンは、他のどの位置の連続する符号パターンとも一致することはない。そこで、読出し時には3つの単位符号パターンを読み出せば、復号が可能であるが、誤りを考慮し4ブロックで情報を表現している。
尚、4周期のM系列は、4095個のブロックに分割して格納される。1つのブロックの一辺の長さは、先に述べた印刷条件、即ち、ドットが600dpiにおける2ピクセル×2ピクセルの大きさである場合、0.508mmである。先に述べた第一のレイアウトを採用する場合、連続する4095個のブロックの4ブロックごとに、同期ブロックが挿入される。そこで、5/4倍して、全体で約5118ブロックなので、長さは2599.9mmである。つまり、2599.9mmの長さが符号化されることになる。
また、11次のM系列を使った場合には、2047ビットであり、1299.5mmが符号化される。
【0029】
符号配列生成部15は、識別符号生成部12にて生成された識別符号と、X座標符号生成部13及びY座標符号生成部14にて生成された座標符号と、識別符号及び座標符号の読出しを制御する同期符号とを2次元平面に配置して2次元の符号配列を生成する。ここで、同期符号とは、同期パターンに対応する符号である。
パターン画像記憶部16は、例えば図2に示したmCn方式における単位符号パターンを記憶する。ここで、単位符号パターンには、個々の単位符号パターンを一意に特定するパターン値が付されている。例えば、9C2方式における単位符号パターンに対しては、0〜35のパターン値が付されている。これは、符号配列生成部15が生成した2次元の符号配列における各符号値に対応している。即ち、各符号値から単位符号パターンが一意に特定され、選択されるようになっている。尚、本実施の形態において、このパターン画像記憶部16は、予め定められたm及びnに対応するmCn方式における単位符号パターンを少なくとも記憶していればよい。
符号画像生成部17は、符号配列生成部15が生成した2次元の符号配列を参照し、各符号値に対応した単位符号パターンを選択して符号画像を生成する。
【0030】
そして、この符号画像は、図示しない画像形成部に渡され、画像形成部が紙面に符号画像を形成する。このとき、画像形成部は、電子文書の文書画像と符号画像とを重畳した重畳画像を紙面に形成するようにしてもよい。また、このように重畳画像を形成する場合には、紙面に対するペンデバイスによる筆記データが電子文書上の適切な位置に反映されるよう電子文書上の位置と紙面上の位置との対応関係を管理することが望ましい。
【0031】
また、画像形成部は、符号画像を、例えば電子写真方式を用いて、Kトナー(カーボンを含む赤外光吸収トナー)、又は、特殊トナーにより形成する。
ここで、特殊トナーとしては、可視光領域(400nm〜700nm)における最大吸収率が7%以下であり、近赤外領域(800nm〜1000nm)における吸収率が30%以上の不可視トナーが例示される。ここで、「可視」及び「不可視」は、目視により認識できるかどうかとは関係しない。印刷された媒体に形成された画像が可視光領域における特定の波長の吸収に起因する発色性の有無により認識できるかどうかで「可視」と「不可視」とを区別している。また、可視光領域における特定の波長の吸収に起因する発色性が若干あるが、人間の目で認識し難いものも「不可視」に含める。
【0032】
尚、これらの機能は、ソフトウェアとハードウェア資源とが協働することにより実現される。具体的には、画像生成装置10のCPU91(図21参照)が、情報取得部11、識別符号生成部12、X座標符号生成部13、Y座標符号生成部14、符号配列生成部15、符号画像生成部17を実現するプログラムを、例えば、磁気ディスク装置93(図21参照)からメインメモリ92(図21参照)に読み込んで実行することにより、実現される。また、パターン画像記憶部16は、例えば、磁気ディスク装置93(図21参照)を用いて実現するとよい。更に、磁気ディスク装置93(図21参照)に記憶されるプログラムやデータは、CD等の記録媒体からロードしてもよいし、インターネット等の通信手段を介してダウンロードしてもよい。
【0033】
次に、紙面に形成された符号画像を読み取って処理する画像処理装置20について説明する。
図9は、画像処理装置20の構成例を示したブロック図である。
図示するように、画像処理装置20は、画像読取部21と、ドット配列生成部22と、ブロック検出部23と、同期符号検出部24と、回転判定部25と、符号配列回転部26とを備える。また、識別符号検出部30と、識別符号復元部31と、識別符号復号部32と、識別符号誤り検出部33と、識別符号誤り訂正部34とを備える。更に、X座標符号検出部40と、X座標符号復号部42と、X座標符号誤り検出部43と、X座標符号誤り訂正部44と、Y座標符号検出部45と、Y座標符号復号部47と、Y座標符号誤り検出部48と、Y座標符号誤り訂正部49と、情報出力部50とを備える。
【0034】
画像読取部21は、CCD(Charge Coupled Devices)やCMOS(Complementary Metal Oxide Semiconductor)等の撮像素子を用いて、紙面に印刷された符号画像を読み取る。また、画像読取部21は、読み取った画像に含まれるノイズを除去するための処理も行う。ここで、ノイズには、例えば、撮像素子感度のばらつきや電子回路により発生するノイズがある。ノイズ除去の処理の種類は、撮像系の特性に合わせるべきだが、ぼかし処理やアンシャープマスキング等の先鋭化処理を適用するとよい。更に、画像読取部21は、ノイズが除去された画像からドットを検出する。つまり、ドットが形成された位置を特定する。ここで、ドットの検出は、まず、2値化処理によりドット画像の部分と、その他の背景画像の部分とを切り分け、2値化された個々の画像位置からドットの位置を検出する。その際、2値化された画像にノイズ成分が多数含まれる場合があるため、2値化された画像の面積や形状によりドットの判定を行うフィルタ処理を組み合わせる必要がある。本実施の形態では、画像を取得する取得手段の一例として、画像読取部21のドットを検出する部分を備えている。
【0035】
ドット配列生成部22は、検出したドットの位置を参照して、ドット配列を生成する。即ち、2次元の配列上で、例えば、ドットがある位置に「1」を、ドットがない位置に「0」を記憶することにより、画像として検出したドットをデジタルデータに置き換える。そして、この2次元の配列をドット配列として出力する。
ブロック検出部23は、ドット配列上で、符号ブロック内の単位符号パターンに対応するブロックを検出する。即ち、単位符号パターンと同じ大きさをもつ矩形のブロック区切りをドット配列上で適宜動かし、ブロック内のドット数が均等になる位置を正しいブロック区切り位置とし、各ブロック内のパターン値を格納した符号配列を生成する。
【0036】
同期符号検出部24は、ドット配列から検出された各単位符号パターンの種類を参照して、同期符号を検出する。
回転判定部25は、検出した同期符号に基づいて、画像の回転を判定する。例えば、正方形の単位符号パターンを用いた場合、90度単位で回転している可能性がある。そこで、検出した同期符号が4種類の同期パターンのいずれに対応しているかによって、その向きを検出する。また、長方形の単位符号パターンを用いた場合、180度単位で回転している可能性がある。そこで、検出された同期符号が2種類の同期パターンのいずれに対応しているかによって、その向きを検出する。
符号配列回転部26は、回転判定部25で検出された回転角度だけ符号配列を回転させて、符号配列を正しい向きに設定する。
【0037】
識別符号検出部30は、角度が補正された符号配列から、同期符号の位置を基準にして識別符号を検出する。本実施の形態では、ビット列を検出する検出手段、ビット列を生成する生成手段の一例として、識別符号検出部30を設けている。
識別符号復元部31は、検出された識別符号を正しい符号順に並べ替える。
識別符号復号部32は、図8を参照して説明したRS符号の符号化処理で用いたパラメータ(ブロック数等)と同じパラメータを用いて識別符号を復号し、識別情報を出力する。
識別符号誤り検出部33は、復号された識別符号の誤りを検出し、識別符号誤り訂正部34は、検出した誤りが訂正可能な誤りである場合に、その誤りを訂正する。
【0038】
X座標符号検出部40は、角度が補正された符号配列から、同期符号の位置を基準にしてX座標符号を検出する。
X座標符号復号部42は、検出されたX座標符号からM系列の部分系列を取り出し、画像生成に使用したM系列におけるこの部分系列の位置を参照し、この位置を同期符号によるオフセットで補正した値をX座標情報として出力する。
X座標符号誤り検出部43は、復号されたX座標符号の誤りを検出し、X座標符号誤り訂正部44は、検出した誤りが訂正可能な誤りである場合に、その誤りを訂正する。
【0039】
Y座標符号検出部45は、角度が補正された符号配列から、同期符号の位置を基準にしてY座標符号を検出する。
Y座標符号復号部47は、検出されたY座標符号からM系列の部分系列を取り出し、画像生成に使用したM系列におけるこの部分系列の位置を参照し、この位置を同期符号によるオフセットで補正した値をY座標情報として出力する。
Y座標符号誤り検出部48は、復号されたY座標符号の誤りを検出し、Y座標符号誤り訂正部49は、検出した誤りが訂正可能な誤りである場合に、その誤りを訂正する。
【0040】
情報出力部50は、識別符号復号部32、X座標符号復号部42、Y座標符号復号部47からそれぞれ取得した識別情報、X座標情報、Y座標情報を出力する。
【0041】
尚、これらの機能は、ソフトウェアとハードウェア資源とが協働することにより実現される。具体的には、画像処理装置20のCPU91(図21参照)が、ドット配列生成部22、ブロック検出部23、同期符号検出部24、回転判定部25、符号配列回転部26、識別符号検出部30、識別符号復元部31、識別符号復号部32、識別符号誤り検出部33、識別符号誤り訂正部34、X座標符号検出部40、X座標符号復号部42、X座標符号誤り検出部43、X座標符号誤り訂正部44、Y座標符号検出部45、Y座標符号復号部47、Y座標符号誤り検出部48、Y座標符号誤り訂正部49、情報出力部50を実現するプログラムを、例えば、磁気ディスク装置93(図21参照)からメインメモリ92(図21参照)に読み込んで実行することにより、実現される。また、磁気ディスク装置93(図21参照)に記憶されるプログラムやデータは、CD等の記録媒体からロードしてもよいし、インターネット等の通信手段を介してダウンロードしてもよい。
【0042】
次に、画像処理装置20による画像処理時の動作について説明する。
まず、画像読取部21が、符号画像が印刷された媒体から、所定の大きさの領域の符号画像を読み取る。ここで、図4に示した1つの符号ブロックから情報を復元するのであれば、1つの符号ブロックだけを含む大きさをこの所定の大きさとして採用すればよい。しかしながら、本実施の形態では、複数の符号ブロックから取り出した符号を用いて、情報を復元するので、複数の符号ブロックを含む大きさをこの所定の大きさとして採用する。そして、画像読取部21は、読み取った画像に対して、ノイズの除去やドットの検出等の画像処理を行う。
【0043】
次に、ドット配列生成部22が、ドットを検出した位置に「1」を、ドットを検出しなかった位置に「0」を設定したドット配列を生成する。
その後、ブロック検出部23が、このドット配列にブロック区切りを重ねて、ブロックの境界を検出する。ここで、ブロックとは、図4を参照して説明したように、埋め込まれた情報を復号する際に必要となる最小の単位である。本実施の形態では、符号ブロックとして5ブロック×5ブロックのものを想定している。従って、ブロック区切りとしても、5ブロック×5ブロックの大きさのものを用いる。
【0044】
図10は、ブロック区切りを移動させてブロックを検出する際の処理を具体的に示した図である。ここでは、9C2方式で符号化が行われたことが分かっており、9C2方式で復号する場合について示している。
まず、ブロック検出部23は、ドット配列生成部22からドット配列を取得する。ここで取得するドット配列のサイズは予め設定されており、(復号に必要なブロック数×ブロックの一辺のドット数+ブロックの一辺のドット数−1)である。ところが、このドット配列は、画像の任意に選択された領域に対応しているので、ブロック区切りの位置は分からない。そこで、初めに、ドット配列の端を基準にブロック分割を行う。この例では、m=9なので、3ドット×3ドットの大きさのブロックからなるブロック区切りを重ねる。次に、各ブロック内のドットを数える。この例では、n=2なので、各ブロック内に2ドットずつ存在する場合のブロック区切りの位置が正しい区切り位置であるが、この位置ではドット数がばらついており、正しくないことが分かる。そこで、ブロック区切りをずらしてブロック内のドット数を数える。即ち、右方向への開始位置、1ドット分移動した位置、2ドット分移動した位置について同様の動作を行う。また、これらの位置のそれぞれに対し、下方向への開始位置、1ドット移動した位置、2ドット移動した位置についても同様の動作を行う。その結果、右方向に1ドット移動し、下方向に2ドット移動した位置において、全てのブロック内のドット数が「2」となる。従って、この位置を正しい区切り位置とする。
【0045】
その後、同期符号検出部24、識別符号検出部30、X座標符号検出部40、Y座標符号検出部45等が、各ブロック内のドット配置を参照することにより、同期符号、識別符号、X座標符号、Y座標符号を検出することになる。
【0046】
ところが、この場合に、符号誤りが生ずることがある。
この符号誤りは、画像に汚れ等が発生した場合、余計なドットが加わった場合、CCDの性能によりドット画像が取り込めない場合等に発生する。本実施の形態では、ドット配置可能な領域に一定数のドットを配置する方法を用いていることから、ドット付加やドット落ちがあった場合、誤りであることが分かる。後述するフローチャートでも明らかになるが、ブロックを検出する際には全てのブロック内のドット数が期待する値にならなくてもブロックを決定するので、ブロック内のドット数に誤りが生じている場合があるのである。
【0047】
図11に、このドット付加及びドット落ちの例を示す。
(a)は、ノイズによるドット付加の例であり、(b)は、白抜けによるドット落ちの例である。9C2方式を用いてドットを配置した場合、2つのドットが検出されるべきであるのに、(a)では3つのドットが検出され、(b)では1つのドットしか検出されないため、誤りであると分かる。
【0048】
しかしながら、ドット付加とドット落ちが同時に発生すると、他の単位符号パターンへ誤ってしまうことがある。図12に、この場合の例を示す。
(a)では、ノイズによるドット付加と、白抜けによるドット落ちが同時に発生している。9C2方式を用いてドットを配置した場合、2つのドットが検出されるので、誤りだと分からず、(b)に示すように、別の単位符号パターンと誤認してしまう。
尚、本明細書では、図11のように、誤りであることが分かり単位符号パターンを特定できない誤りを「特定不能誤り」と称し、図12のように、誤りであることが分からず間違った単位符号パターンを特定してしまう誤りを「誤特定誤り」と称する。
尚、先に述べた第三のレイアウトに含まれる制御パターンのブロックは、単位符号パターンが配置されたブロックでないことが明らかなので、「特定不能誤り」と同等に取り扱うことができる。
【0049】
本実施の形態では、このような誤りが生じることを考慮し、次のような方法で符号を検出し復号を行う。先に述べたように、本実施の形態のレイアウトは、同じパターンの画像が周期的に配置されているのが特徴である。例えば、上記(1)のレイアウトでは、X座標を表す画像は、Y方向に周期的に配置されている。また、Y座標を表す画像は、X方向に周期的に配置されている。更に、識別情報を表す画像は、格子状に周期的に配置されている。本実施の形態では、この周期性を利用する。周期性のない画像では、1回の読み込み画像に多くの誤りが含まれていると、復号に失敗してしまう。一方、周期性のある画像では、1回の読み込み画像に誤りが含まれ復号ができない場合においても、より広い範囲の画像を読み込むことで復号を可能にする。つまり、読み込んだ画像に誤りがあり、その結果、間違った符号が検出されても、正しく復号可能なロバスト性の高い方法を提供する。
また、本実施の形態では、符号と共に、スキャナの動作を制御する制御パターンが埋め込まれた場合においても、復号を可能とする方法も提供する。
【0050】
図13に、ペンデバイスによる画像の読み込みを例示する。ここでは、制御パターンを埋め込んだレイアウトを用いて説明する。ペンデバイスは、図示するように、連続的に画像を読み込む。図では、連続的に撮像される範囲を円で示し、円を起点とする矢印の先に、各撮像範囲から読み込まれる画像を示している。そして、ペンデバイスは、読み込んだ各画像からドットを特定し、先に説明した方法により単位符号パターンを特定する。このとき、制御パターンについては、パターン値を例えば空白にしておく。また、符号配列内の識別符号を表す要素を復号できる順に並べ替える。図では、最右列に、この並べ替え後の符号配列を示している。
【0051】
更に、本実施の形態では、このようにして取得した符号配列(以下、「取得配列」という)とは別に、パターン値を充填するための符号配列(以下、「充填配列」という)を用意し、特定できたパターン値をこの充填配列に格納していく。そして、充填配列の全ての要素にパターン値が格納されるまでこの処理は続けられる。
図14に、このときの状況を示す。
図では、上段に取得配列を示し、下段に充填配列を示している。この例では、時刻T1において、充填配列の全ての要素にパターン値が格納されている。従って、このときの充填配列に基づいて復号処理が行われ、充填配列は一旦リセットされる。その後、時刻T2、T3において、取得配列内のパターン値を充填配列に格納するが、充填配列内のパターン値が格納された要素の数は復号処理が可能な程度に達していない。そこで、時刻T4においても、取得配列内のパターン値を充填配列に格納し、充填配列の全ての要素にパターン値が格納される。従って、このときの充填配列に基づいて復号処理が行われ、充填配列は一旦リセットされる。その後、再び、時刻T5において、取得配列内のパターン値を充填配列に格納する。
【0052】
尚、ここでは、制御パターンを埋め込んだレイアウトを用いて説明したが、この制御パターンは、特定不能誤りに置き換えて考えてもよい。即ち、本実施の形態は、特定不能誤りが多い場合にも有効である。
【0053】
ところで、識別符号の符号化にRS符号を用いる場合、消失訂正法と呼ばれる訂正が可能である。これは、誤りであることが分かっている符号がある場合、誤りであることが分からない場合に比べて2倍の訂正を可能とする訂正方法である。制御パターンや特定不能誤りは、誤りであることが分かるので、このような消失訂正法の利点を享受できる。つまり、充填配列の全ての要素にパターン値が格納されていない状態でも復号が可能となる。
【0054】
また、本実施の形態は、読み込み領域が狭い場合の復号に応用してもよい。
例えば、上記(3)のレイアウトを用いる場合のように、復号に必要な領域がペンデバイスの読み込み領域よりも大きい場合、1回の読み込みでは復号できない。しかしながら、本実施の形態では、複数回読み込むことで復号を可能とする。
更に、上記(1)のレイアウトを用いる場合において、復号に最小限必要な領域である符号ブロックよりも読み込み領域の狭いペンデバイスを用いても、復号を可能とする。
図15に、このときのペンデバイスによる画像読み取りの例を示す。
図中、上から1番目及び3番目の円で囲まれた読み込み領域には同期符号が含まれるので、識別符号の相対的な位置が分かる。充填配列を順に埋めていくことで復号可能な配列が得られる。復号に必要な領域の一辺のサイズがNの場合、一般に、一辺のサイズが(N/2)+1の領域を読み込めば復号が可能である。図の例では、N=5なので、一辺のサイズが3(=5/2+1)の領域を読み込んでいる。
【0055】
次いで、画像処理装置20の動作について更に詳しく説明する。尚、この動作の説明では、9C2方式の単位符号パターンが図4に示したレイアウトで配置されていることを前提とする。
まず、ブロック検出部23の動作について説明する。
図16は、ブロック検出部23の動作例を示したフローチャートである。
まず、ブロック検出部23は、ドット配列生成部22からドット配列を取得する(ステップ201)。このドット配列の大きさは、上述したように、(復号に必要なブロック数×ブロックの一辺のドット数+ブロックの一辺のドット数−1)である。本実施の形態では、1つの符号ブロック×1つの符号ブロックが復号に必要なので、復号に必要なブロック数は5×5であり、ブロックの一辺のドット数が3であるので、17×17のドット配列を取得する。
【0056】
次に、取得したドット配列に、ブロック区切りを重ね合わせる(ステップ202)。本実施の形態では、5×5のブロック区切りが用いられる。そして、カウンタI、Jに「0」を代入し、MaxBNにも「0」を代入する(ステップ203)。
ここで、I、Jは、ブロック区切りを初期位置から移動させたステップ数をカウントするものである。画像の1ラインごとにブロック区切りを移動させ、そのとき移動させたライン数をカウンタI、Jでカウントする。また、MaxBNは、ブロック内で検出されるドット数が「2」となるブロック数をブロック区切りを移動させながらカウントしていったときに、最大となるカウント値を記録するものである。
【0057】
次に、ブロック検出部23は、ブロック区切りをX方向にI、Y方向にJ移動させる(ステップ204)。初期状態においてI、Jは「0」であるので、ブロック区切りは移動しない。そして、ブロック区切りの各ブロックに含まれるドット数をカウントして、ドット数が「2」となるブロックの数をカウントする。カウントしたブロック数はIB[I,J]に格納する(ステップ205)。IB[I,J]のI、Jには、ブロック区切りの移動量を示すIとJの値がそれぞれ記録される。
【0058】
次に、ブロック検出部23は、IB[I,J]とMaxBNとを比較する(ステップ206)。MaxBNは初期値が「0」であるので、最初の比較では、IB[I,J]がMaxBNよりも大きくなる。この場合、MaxBNにIB[I,J]の値を代入すると共に、IにMXの値を、JにMYの値を代入する(ステップ207)。尚、IB[I,J]がMaxBN以下である場合は、MaxBN、MX、MYの値はそのままにしておく。
【0059】
その後、ブロック検出部23は、I=2であるかどうかを判定する(ステップ208)。
ここで、I=2でない場合には、Iに「1」を加算する(ステップ209)。そして、ステップ204、205の処理を繰り返し行い、IB[I,J]とMaxBNとを比較していく(ステップ206)。
IB[I,J]が前回までのIB[I,J]の最大値であるMaxBNよりも大きいと、MaxBNにIB[I,J]の値を代入し、そのときのIにMXの値を、JにMYの値を代入する(ステップ207)。また、MaxBNのほうがIB[I,J]よりも大きい場合には、I=2であるかどうかを判定する(ステップ208)。I=2となると、次にJ=2であるかどうかを判定する(ステップ210)。J=2でない場合には、Iに「0」を代入し、Jに「1」を加算する(ステップ211)。このような手順を繰り返し行い、(I,J)が(0,0)から(2,2)までで、IB[I,J]が最大のものを検出する。
【0060】
I=2、J=2までの処理が終了すると、ブロック検出部23は、保存しているMaxBNと閾値TBとを比較する(ステップ212)。閾値TBは、ドット数が「2」のブロックの数が復号可能な程度のものかを判定するための閾値である。
ここで、MaxBNが閾値TBよりも大きい場合には、ブロック区切りをMX、MYの位置に固定し、その位置で各ブロックのパターン値を検出する。そして、検出したパターン値を、各ブロックを識別する変数X、Yと共に符号配列PA[X,Y]としてメモリに記録する(ステップ213)。尚、このとき、対応するパターン値に変換することができなければ、パターン値として用いられていない「99」を記録する。そして、ブロック検出部23は、MX、MYと、符号配列PA[X,Y]とを同期符号検出部24に出力する(ステップ214)。
一方、MaxBNが閾値TB以下である場合には、画像のノイズが大きく復号は不可能と判定し、復号不能を出力する(ステップ215)。
【0061】
次に、同期符号検出部24の動作について説明する。
図17は、同期符号検出部24の動作例を示したフローチャートである。
まず、同期符号検出部24は、ブロック検出部23からMX、MYと、符号配列PA[X,Y]とを取得する(ステップ251)。
次に、同期符号検出部24は、K、Lに「1」を代入する(ステップ252)。尚、KはX方向のブロック数を示すカウンタであり、LはY方向のブロック数を示すカウンタである。
【0062】
次に、同期符号検出部24は、PA[K,L]のパターン値が32かどうかを判定する(ステップ253)。
PA[K,L]のパターン値が32であれば、符号配列PA[X,Y]の回転は必要ないと判定し、同期符号のあるブロックのX座標SXにKを代入し、Y座標SYにLを代入する。また、ブロック区切りのX方向への移動量ShiftXにMXを代入し、Y方向への移動量ShiftYにMYを代入する(ステップ254)。
【0063】
次に、同期符号検出部24は、PA[K,L]のパターン値が33かどうかを判定する(ステップ255)。
PA[K,L]のパターン値が33であれば、符号配列PA[X,Y]を左方向に90度回転させる(ステップ256)。図3に示すようにパターン値33の単位符号パターンは、パターン値32の単位符号パターンを右方向に90度回転させた画像であるので、逆方向に90度回転させて画像を正立させている。尚、このとき、符号配列PA[X,Y]内の全てのパターン値が、左方向に90度回転させた場合のパターン値に変換される。
また、この回転に伴って、同期符号のあるブロックのX座標SXにLを代入し、Y座標SYに6−Kを代入する。また、ブロック区切りのX方向への移動量ShiftXにMYを代入し、Y方向への移動量ShiftYに2−MXを代入する(ステップ257)。
【0064】
次に、同期符号検出部24は、PA[K,L]のパターン値が34かどうかを判定する(ステップ258)。
PA[K,L]のパターン値が34であれば、符号配列PA[X,Y]を左方向に180度回転させる(ステップ259)。図3に示すようにパターン値34の単位符号パターンは、パターン値32の単位符号パターンを180度回転させた画像であるので、パターン値34の単位符号パターンを180度回転させて画像を正立させている。尚、このとき、符号配列PA[X,Y]内の全てのパターン値が、180度回転させた場合のパターン値に変換される。
また、この回転に伴って、同期符号のあるブロックのX座標SXに6−Kを代入し、Y座標SYに6−Lを代入する。また、ブロック区切りのX方向への移動量ShiftXに2−MXを代入し、Y方向への移動量ShiftYに2−MYを代入する(ステップ260)。
【0065】
次に、同期符号検出部24は、PA[K,L]のパターン値が35かどうかを判定する(ステップ261)。
PA[K,L]のパターン値が35であれば、符号配列PA[X,Y]を左方向に270度回転させる(ステップ262)。図3に示すようにパターン値35の単位符号パターンは、パターン値32の単位符号パターンを右に270度回転させた画像であるので、逆方向に270度回転させて画像を正立させている。尚、このとき、符号配列PA[X,Y]内の全てのパターン値が、左方向に270度回転させた場合のパターン値に変換される。
また、この回転に伴って、同期符号のあるブロックのX座標SXに6−Lを代入し、Y座標SYにKを代入する。また、ブロック区切りのX方向への移動量ShiftXに2−MYを代入し、Y方向への移動量ShiftYにMXを代入する(ステップ263)。
【0066】
そして、ステップ254、257、260、263で、SX、SY、ShiftX、ShiftYに値が代入された場合、同期符号検出部24は、これらの値を識別符号検出部30、X座標符号検出部40、Y座標符号検出部45に出力する(ステップ264)。
また、PA[K,L]がパターン値32〜35のいずれでもなければ、同期符号検出部24は、K=5であるかどうかを判定する(ステップ265)。K=5でない場合には、Kに「1」を加算し(ステップ266)、ステップ253に戻る。K=5であれば、L=5であるかどうかを判定する(ステップ267)。L=5でない場合には、Kに「1」を代入し、Lに「1」を加算し(ステップ268)、ステップ253に戻る。即ち、ステップ253〜264の処理を、パターン値32〜35のブロックを検出するまでK、Lの値を変更しながら繰り返し行う。また、K=5、L=5になっても、パターン値32〜35のブロックを検出することができなかった場合には、復号不能の判定信号を出力する(ステップ269)。
【0067】
尚、ステップ253、255、258、261の処理は、同期符号検出部24による制御の下、回転判定部25が行うようにするとよい。また、ステップ254、256、257、259、260、262、263の処理は、同期符号検出部24による制御の下、符号配列回転部26が行うようにするとよい。
【0068】
次に、識別符号検出部30の動作について説明する。
図18は、識別符号検出部30の動作例を示したフローチャートである。
まず、識別符号検出部30は、ペンデバイスによる画像読み取り回数を示すカウンタTに「1」を代入し、判定配列FA[X,Y]の全ての要素を「99」で初期化する(ステップ351)。尚、この「99」は、パターン値として用いられていない番号とする。
次に、識別符号検出部30は、同期符号検出部24から符号配列PA[X,Y]、SX、SYを取得する(ステップ352)。そして、符号ブロックにおける各ブロックを識別するためのカウンタIX、IYに「1」を代入する(ステップ353)。ここで、IXは、X方向のブロック数を示すカウンタであり、IYは、Y方向のブロック数を示すカウンタである。
【0069】
また、識別符号検出部30は、IY−SYが「5」で割り切れるかどうかを判定する(ステップ354)。即ち、IYで特定されるブロックに同期符号が配置されているかどうかを判定する。
ここで、IY−SYが「5」で割り切れた場合、つまり、このブロックに同期符号が配置されている場合は、識別符号を取り出す対象ではないため、IYに「1」を加算し(ステップ355)、ステップ354へ進む。
一方、IY−SYが「5」で割り切れなかった場合、つまり、このブロックに同期符号が配置されていない場合は、IX−SXが「5」で割り切れるかどうかを判定する(ステップ356)。即ち、IXで特定されるブロックに同期符号が配置されているかどうかを判定する。
【0070】
ここで、IX−SXが「5」で割り切れた場合、つまり、このブロックに同期符号が配置されている場合は、識別符号を取り出す対象ではないため、IXに「1」を加算し(ステップ357)、ステップ356へ進む。
一方、IX−SXが「5」で割り切れなかった場合、つまり、このブロックに同期符号が配置されていない場合、識別符号検出部30は、FA[(IX−SX)mod5,(IY−SY)mod5]にPA[IX,IY]を代入する(ステップ358)。
そして、FAの全ての要素が「99」以外となったかどうかを判定する(ステップ359)。
【0071】
その結果、FAの全ての要素が「99」以外となった場合、識別符号検出部30は、FA[X,Y]を識別符号復元部31に出力する(ステップ360)。
また、FAに「99」の要素が残っている場合は、IX=5であるかどうかを判定する(ステップ361)。
ここで、IX=5でない場合には、IXに「1」を加算して(ステップ357)、ステップ356〜359の処理をIX=5となるまで繰り返し行う。また、IX=5となると、次に、IY=5であるかどうかを判定する(ステップ362)。IY=5でない場合には、IXに「1」を代入し(ステップ363)、IYに「1」を加算して(ステップ355)、ステップ354〜361の処理をIY=5となるまで繰り返し行う。また、IY=5となると、T=MTであるかどうかを判定する(ステップ366)。ここで、MTは、予め定められた取り込む画像の最大数である。その結果、T=MTでない場合には、Tに「1」を加算して(ステップ367)、ステップ352〜363の処理をT=MTとなるまで繰り返し行う。一方、T=MTとなると、FA[X,Y]の「99」の要素が一定数以下であるかどうかを判定する(ステップ364)。
「99」の要素が一定数以下であれば、識別符号検出部30は、FA[X,Y]を識別符号復元部31に出力する(ステップ360)。また、一定数以下でなければ、復号不能を出力する(ステップ365)。
【0072】
次に、X座標符号検出部40の動作について説明する。
図19は、X座標符号検出部40の動作例を示したフローチャートである。
まず、X座標符号検出部40は、同期符号検出部24から符号配列PA[X,Y]、SX、SYを取得する(ステップ401)。
次に、X座標符号検出部40は、X座標符号配列EA[X,0]の全ての要素を「99」で初期化する(ステップ402)。尚、この「99」は、パターン値として用いられていない番号とする。そして、符号ブロックにおける各ブロックを識別するためのカウンタIX、IYに「1」を代入する。ここで、IXは、X方向のブロック数を示すカウンタであり、IYは、Y方向のブロック数を示すカウンタである。更に、X座標符号検出部40は、X座標符号配列における各要素を識別するためのカウンタKXにも「1」を代入する(ステップ403)。
【0073】
また、X座標符号検出部40は、IY−SYが「5」で割り切れるかどうかを判定する(ステップ404)。即ち、IYで特定されるブロックに同期符号が配置されているかどうかを判定する。
ここで、IY−SYが「5」で割り切れなかった場合、つまり、このブロックに同期符号が配置されていない場合は、X座標符号を取り出す対象ではないため、IYに「1」を加算し(ステップ405)、ステップ404へ進む。
一方、IY−SYが「5」で割り切れた場合、つまり、このブロックに同期符号が配置されている場合、X座標符号検出部40は、IX−SXが「5」で割り切れるかどうかを判定する(ステップ406)。即ち、IXで特定されるブロックに同期符号が配置されているかどうかを判定する。
【0074】
ここで、IX−SXが「5」で割り切れた場合、つまり、このブロックに同期符号が配置されている場合は、X座標符号を取り出す対象ではないため、IXに「1」を加算し(ステップ407)、ステップ406へ進む。
一方、IX−SXが「5」で割り切れなかった場合、つまり、このブロックに同期符号が配置されていない場合、X座標符号検出部40は、EA[KX,0]にPA[IX,IY]を代入する(ステップ408)。
【0075】
そして、IX=5であるかどうかを判定する(ステップ409)。
ここで、IX=5でない場合には、KXに「1」を加算し(ステップ410)、IXに「1」を加算して(ステップ407)、ステップ406〜408の処理をIX=5となるまで繰り返し行う。また、IX=5となると、次に、IY=5であるかどうかを判定する(ステップ411)。IY=5でない場合には、IX、KXに「1」を代入し(ステップ412)、IYに「1」を加算して(ステップ405)、ステップ404〜410の処理をIY=5となるまで繰り返し行う。また、IY=5となると、X座標符号検出部40は、X座標符号配列EA[X,0]をX座標符号復号部42に出力する(ステップ413)。
尚、ここでは、X座標符号検出部40の動作のみ説明したが、Y座標符号検出部45も同様の動作を行う。
以上により、本実施の形態における画像処理装置20の詳細な動作説明を終了する。
【0076】
次に、本実施の形態における画像処理装置20の具体的なハードウェア構成について説明する。
まず、画像処理装置20を実現するペンデバイス60について説明する。
図20は、ペンデバイス60の機構を示した図である。
図示するように、ペンデバイス60は、ペン全体の動作を制御する制御回路61を備える。また、制御回路61は、入力画像から検出した符号画像を処理する画像処理部61aと、そこでの処理結果から識別情報及び位置情報を抽出するデータ処理部61bとを含む。
そして、制御回路61には、ペンデバイス60による筆記動作をペンチップ69に加わる圧力によって検出する圧力センサ62が接続されている。また、媒体上に赤外光を照射する赤外LED63と、画像を入力する赤外CMOS64も接続されている。更に、識別情報及び位置情報を記憶するための情報メモリ65と、外部装置と通信するための通信回路66と、ペンを駆動するためのバッテリ67と、ペンの識別情報(ペンID)を記憶するペンIDメモリ68も接続されている。
【0077】
尚、図9に示した画像読取部21の画像を読み取る機能は、例えば、図20の赤外CMOS64にて実現される。また、画像読取部21のうちノイズを除去したりドットを検出したりする機能や、ドット配列生成部22は、例えば、図20の画像処理部61aにて実現される。更に、図9に示したブロック検出部23、同期符号検出部24、回転判定部25、符号配列回転部26、識別符号検出部30、識別符号復元部31、識別符号復号部32、識別符号誤り検出部33、識別符号誤り訂正部34、X座標符号検出部40、X座標符号復号部42、X座標符号誤り検出部43、X座標符号誤り訂正部44、Y座標符号検出部45、Y座標符号復号部47、Y座標符号誤り検出部48、Y座標符号誤り訂正部49、情報出力部50は、例えば、図20のデータ処理部61bにて実現される。
【0078】
また、図20の画像処理部61a又はデータ処理部61bにて実現される処理は、例えば、汎用のコンピュータで実現してもよい。そこで、かかる処理をコンピュータ90で実現するものとし、コンピュータ90のハードウェア構成について説明する。
図21は、コンピュータ90のハードウェア構成を示した図である。
図示するように、コンピュータ90は、演算手段であるCPU(Central Processing Unit)91と、記憶手段であるメインメモリ92及び磁気ディスク装置(HDD:Hard Disk Drive)93とを備える。ここで、CPU91は、OS(Operating System)やアプリケーション等の各種ソフトウェアを実行し、上述した各機能を実現する。また、メインメモリ92は、各種ソフトウェアやその実行に用いるデータ等を記憶する記憶領域であり、磁気ディスク装置93は、各種ソフトウェアに対する入力データや各種ソフトウェアからの出力データ等を記憶する記憶領域である。
更に、コンピュータ90は、外部との通信を行うための通信I/F94と、ビデオメモリやディスプレイ等からなる表示機構95と、キーボードやマウス等の入力デバイス96とを備える。
【0079】
尚、本実施の形態を実現するプログラムは、通信手段により提供することはもちろん、CD−ROM等の記録媒体に格納して提供することも可能である。
【図面の簡単な説明】
【0080】
【図1】9Cn方式における単位符号パターンの一例を示した図である。
【図2】9Cn方式における単位符号パターンの他の例を示した図である。
【図3】9Cn方式における同期パターンの例を示した図である。
【図4】符号ブロックの基本的なレイアウトの例を示した図である。
【図5】符号ブロックのレイアウトの第1の例を示した図である。
【図6】符号ブロックのレイアウトの第2の例を示した図である。
【図7】符号ブロックのレイアウトの第3の例を示した図である。
【図8】本実施の形態における画像生成装置の機能構成を示したブロック図である。
【図9】本実施の形態における画像処理装置の機能構成を示したブロック図である。
【図10】ドット配列上でブロックを検出する際の処理を説明するための図である。
【図11】特定不能誤りについて説明するための図である。
【図12】誤特定誤りについて説明するための図である。
【図13】本実施の形態におけるペンデバイスによる画像読み取りについて説明するための図である。
【図14】本実施の形態における充填配列へのパターン値の格納について説明するための図である。
【図15】本実施の形態におけるペンデバイスによる狭い領域での画像読み取りについて説明するための図である。
【図16】本実施の形態におけるブロック検出部の動作例を示したフローチャートである。
【図17】本実施の形態における同期符号検出部の動作例を示したフローチャートである。
【図18】本実施の形態における識別符号検出部の動作例を示したフローチャートである。
【図19】本実施の形態におけるX座標符号検出部の動作例を示したフローチャートである。
【図20】本実施の形態における画像処理装置を実現可能なペンデバイスの機構を示した図である。
【図21】本実施の形態を適用可能なコンピュータのハードウェア構成図である。
【符号の説明】
【0081】
10…画像生成装置、20…画像処理装置、21…画像読取部、22…ドット配列生成部、23…ブロック検出部、24…同期符号検出部、25…回転判定部、26…符号配列回転部、30…識別符号検出部、31…識別符号復元部、32…識別符号復号部、33…識別符号誤り検出部、34…識別符号誤り訂正部、40…X座標符号検出部、42…X座標符号復号部、43…X座標符号誤り検出部、44…X座標符号誤り訂正部、45…Y座標符号検出部、47…Y座標符号復号部、48…Y座標符号誤り検出部、49…Y座標符号誤り訂正部、50…情報出力部

【特許請求の範囲】
【請求項1】
ビット列を表す画像が繰り返し印刷された媒体から読み取られた当該画像を取得する取得手段と、
前記取得手段により順次取得された複数の前記画像がそれぞれ表す複数のビット列を検出する検出手段と、
前記検出手段により検出された前記複数のビット列の部分列を組み合わせることにより、1つのビット列を生成する生成手段と
を備えたことを特徴とする画像処理装置。
【請求項2】
前記生成手段は、前記1つのビット列の特定の部分列として、前記複数のビット列のいずれかにおける当該特定の部分列に対応する部分列を用いることを特徴とする請求項1記載の画像処理装置。
【請求項3】
前記生成手段は、前記1つのビット列の特定の部分列として、前記複数のビット列における当該特定の部分列に対応する部分列のうち最も先に検出されたものを用いることを特徴とする請求項1記載の画像処理装置。
【請求項4】
前記生成手段により生成された前記1つのビット列における未確定の部分列の割合が所定の閾値以下である場合に、当該1つのビット列が表す情報を復元する復元手段を更に備えたことを特徴とする請求項1記載の画像処理装置。
【請求項5】
前記1つのビット列は、前記媒体又は前記媒体に印刷された文書を識別する識別情報を表すビット列であることを特徴とする請求項1記載の画像処理装置。
【請求項6】
コンピュータに、
ビット列を表す画像が繰り返し印刷された媒体から読み取られた当該画像を取得する機能と、
順次取得された複数の前記画像がそれぞれ表す複数のビット列を検出する機能と、
検出された前記複数のビット列の部分列を組み合わせることにより、1つのビット列を生成する機能と
を実現させるためのプログラム。
【請求項7】
前記生成する機能では、前記1つのビット列の特定の部分列として、前記複数のビット列のいずれかにおける当該特定の部分列に対応する部分列を用いることを特徴とする請求項6記載のプログラム。
【請求項8】
前記生成する機能では、前記1つのビット列の特定の部分列として、前記複数のビット列における当該特定の部分列に対応する部分列のうち最も先に検出されたものを用いることを特徴とする請求項6記載のプログラム。

【図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