説明

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

【課題】画像が表すビット列をその画像の読み取りの状態を考慮して決定する。
【解決手段】画像を読み取る画像読取部21と、画像からドット配列を生成するドット配列生成部22と、ドット配列をブロック分割して符号配列を生成するブロック検出部23と、画像からドット信頼度配列を生成するドット信頼度配列生成部25と、ドット信頼度配列をブロック分割してブロック信頼度配列を生成するブロック信頼度配列生成部26と、符号配列から同期符号を検出する同期符号検出部24と、符号配列から識別符号、X座標符号、Y座標符号をそれぞれ検出する識別符号検出部30、X座標符号検出部40、Y座標符号検出部45とを備える。そして、ブロック信頼度が低いブロックから検出された識別符号を誤りとして訂正することにより識別符号を復号して識別情報を取得する識別符号復号部32を更に備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理装置、識別装置、プログラムに関する。
【背景技術】
【0002】
表面上の複数の位置を符号化する位置コードを提供する方法は知られている(例えば、特許文献1参照)。この特許文献1では、循環数字列を表面に沿って複数回印刷する。その際、循環数字列の異なるローテーションを、隣り合う数字列間で所定のずれが起こるように使用し、表面を分割した複数のコードウィンドウが、少なくとも3つの循環数字列を備えると共に、隣り合うコードウィンドウの1つの数字列と重なり合う1つの数字列を有するものであり、また、コードウィンドウの位置を、そのコードウィンドウに属している循環数字列間のずれによって符号化している。
【0003】
記録材上に形成される画像を識別するため、記録材上に繰り返し形成される画像識別情報を符号化したパターンと、記録材上での座標値を符号化したパターンとを背景画像として記録した印刷物も知られている(例えば、特許文献2参照)。この特許文献2では、画像識別情報を符号化したパターンを、画像識別情報を符号化して得られる第1パターン値に、座標値を符号化して得られるパターン値を加算した値を基に得られる第2パターン値を表すパターンとしている。
【0004】
情報単位となるブロックが連続的に設定され、各ブロック内に、一定数の複数ドットが選択的に設定されたコードパターンを背景とする背景画像と、画像データとが合成された画像を読み込んで、コードパターンとして埋め込まれた情報を特定する画像処理装置も知られている(例えば、特許文献3参照)。この特許文献3では、読み込まれた画像データからドットを検出し、各ドットの座標値に基づいて形成される各ページのドット配置にブロックを複数連ねたブロックフレームを重ね合わせて移動してブロックの区切り位置を検出し、各ブロック内からコードパターンを検出してコードパターンの中から回転させても他のコードパターンとドット配列が一致しない同期符号のパターンを検出し、同期符号の向きに応じてコードパターンを所定角度回転させ、同期符号のコードパターンに対して所定位置にあるブロック内のコードパターンから順次コードパターンを読み込んでページ番号を示す情報を復号している。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特表2003−511762号公報
【特許文献2】特許第4207049号公報
【特許文献3】特許第4289350号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明の目的は、画像が表すビット列をその画像の読み取りの状態を考慮して決定することにある。
【課題を解決するための手段】
【0007】
請求項1に記載の発明は、特定のビット列を表す画像が印刷された媒体から読み取られた当該画像を取得する画像取得手段と、前記画像取得手段により取得された前記画像の読み取りの状態を示す状態情報を取得する情報取得手段と、前記画像取得手段により取得された前記画像からビット列を検出する検出手段と、前記検出手段により検出された前記ビット列と、前記情報取得手段により取得された前記状態情報とに基づいて、前記特定のビット列を決定する決定手段とを備えたことを特徴とする画像処理装置である。
請求項2に記載の発明は、前記検出手段により検出される前記ビット列は、前記画像取得手段により取得された前記画像を構成する複数の部分画像にそれぞれ対応する複数の部分ビット列からなり、前記情報取得手段により取得される前記状態情報は、前記複数の部分画像の読み取りの状態をそれぞれ示す複数の部分状態情報からなることを特徴とする請求項1に記載の画像処理装置である。
請求項3に記載の発明は、前記複数の部分画像は、それぞれ、前記特定のビット列をRS(Reed-Solomon)符号化したときの複数のブロックにおけるビット列を表し、前記決定手段は、前記複数の部分画像のうちの特定の部分画像の読み取りの状態を示す特定の部分状態情報が予め決められた悪い状態を示している場合に、前記検出手段により当該特定の部分画像から検出された特定の部分ビット列を誤りであると仮定してRS符号による訂正を行うことにより、前記特定のビット列を決定することを特徴とする請求項2に記載の画像処理装置である。
請求項4に記載の発明は、前記決定手段は、前記複数の部分ビット列を誤りであると仮定せずにRS符号による訂正を行って得られた第1のビット列と、前記特定の部分状態情報が前記悪い状態を示している場合に前記特定の部分ビット列を誤りであると仮定してRS符号による訂正を行って得られた第2のビット列とに基づいて、前記特定のビット列を決定することを特徴とする請求項3に記載の画像処理装置である。
請求項5に記載の発明は、前記決定手段は、前記第1のビット列と前記第2のビット列とが等しいかどうかに基づいて、当該第1のビット列を前記特定のビット列とするかどうかを決定することを特徴とする請求項4に記載の画像処理装置である。
請求項6に記載の発明は、前記決定手段は、前記第1のビット列と前記第2のビット列とが等しい場合に、当該第1のビット列を前記特定のビット列に決定することを特徴とする請求項5に記載の画像処理装置である。
請求項7に記載の発明は、前記決定手段は、前記第1のビット列と前記第2のビット列とが等しくない場合に、当該第1のビット列を前記特定のビット列に決定しないことを特徴とする請求項5又は6に記載の画像処理装置である。
請求項8に記載の発明は、媒体又は媒体に印刷された電子文書の識別情報を示す特定のビット列を表す画像が印刷された当該媒体から当該画像を読み取る読取手段と、前記読取手段により読み取られた前記画像の読み取りの状態を示す状態情報を取得する情報取得手段と、前記読取手段により読み取られた前記画像からビット列を検出する検出手段と、前記検出手段により検出された前記ビット列と、前記情報取得手段により取得された前記状態情報とに基づいて、前記特定のビット列を決定する決定手段と、前記決定手段により決定された前記特定のビット列が示す前記識別情報を出力する出力手段とを備えたことを特徴とする識別装置である。
請求項9に記載の発明は、コンピュータに、特定のビット列を表す画像が印刷された媒体から読み取られた当該画像を取得する機能と、取得された前記画像の読み取りの状態を示す状態情報を取得する機能と、取得された前記画像からビット列を検出する機能と、検出された前記ビット列と、取得された前記状態情報とに基づいて、前記特定のビット列を決定する機能とを実現させるためのプログラムである。
【発明の効果】
【0008】
請求項1の発明によれば、画像が表すビット列をその画像の読み取りの状態を考慮して決定することができる。
請求項2の発明によれば、画像が表すビット列をその画像の部分ごとの読み取りの状態を考慮して決定することができる。
請求項3の発明によれば、本構成を有していない場合に比較して、画像が表すビット列をその画像の読み取りの状態が悪くても決定できる可能性が高まる。
請求項4の発明によれば、本構成を有していない場合に比較して、画像が表すビット列をその画像の読み取りの状態が悪くても高精度に決定することができる。
請求項5の発明によれば、本構成を有していない場合に比較して、画像が表すビット列がRS符号による通常の訂正を行って得られたビット列であるかどうかを高精度に決定することができる。
請求項6の発明によれば、本構成を有していない場合に比較して、画像が表すビット列がRS符号による通常の訂正を行って得られたビット列であることを高精度に決定することができる。
請求項7の発明によれば、本構成を有していない場合に比較して、画像が表すビット列がRS符号による通常の訂正を行って得られたビット列でないことを高精度に決定することができる。
請求項8の発明によれば、画像が表すビット列をその画像の読み取りの状態を考慮して決定することができる。
請求項9の発明によれば、画像が表すビット列をその画像の読み取りの状態を考慮して決定することができる。
【図面の簡単な説明】
【0009】
【図1】9C2方式及び9C3方式における符号パターンの一例を示した図である。
【図2】9C2方式における全符号パターンの一例を示した図である。
【図3】9C3方式における全符号パターンの一例を示した図である。
【図4】9C2方式及び9C3方式における同期パターンの例を示した図である。
【図5】符号ブロックの基本的なレイアウトの例を示した図である。
【図6】M系列による座標の表現について説明するための図である。
【図7】符号ブロックの広範囲のレイアウトの例を示した図である。
【図8】本実施の形態における画像処理装置の機能構成例を示したブロック図である。
【図9】ドット配列及びドット信頼度配列の生成について示した図である。
【図10】ドット信頼度の算出方法の一例を説明するための図である。
【図11】ドット配列上でブロックを検出する際の処理を説明するための図である。
【図12】符号配列の一例を示した図である。
【図13】ブロック信頼度の求め方及びブロック信頼度配列の一例を示した図である。
【図14】ブロック信頼度の利用方法の一例を説明するための図である。
【図15】本実施の形態におけるブロック検出部の動作例を示したフローチャートである。
【図16】本実施の形態における同期符号検出部の動作例を示したフローチャートである。
【図17】本実施の形態における識別符号検出部の動作例を示したフローチャートである。
【図18】本実施の形態における識別符号復号部の動作例を示したフローチャートである。
【図19】本実施の形態におけるX座標符号検出部等の動作例を示したフローチャートである。
【図20】本実施の形態における画像処理装置を実現可能なペンデバイスの機構を示した図である。
【図21】本実施の形態を適用可能なコンピュータのハードウェア構成図である。
【発明を実施するための形態】
【0010】
以下、添付図面を参照して、本発明の実施の形態について詳細に説明する。
まず、本実施の形態で利用する符号化方式について説明する。
本実施の形態における符号化方式では、m(m≧3)箇所から選択したn(1≦n<m)箇所に単位画像を配置してなるパターン画像(以下、「符号パターン」という)によってmCn(=m!/{(m−n)!×n!})通りの情報を表現する。つまり、1つの単位画像を情報に対応させるのではなく、複数の単位画像を情報に対応させている。仮に1つの単位画像を情報に対応させたとすると、単位画像が欠損したり、ノイズが加わったりした場合に、誤った情報を表現してしまうという欠点がある。これに対して、例えば2つの単位画像を情報に対応させたとすると、単位画像が1つであったり3つであったりした場合に、容易に誤りであることが分かる。更に、1つの単位画像で1ビット、又は、高々2ビットを表現する方法では、情報を表現するための情報パターンと視覚的に似たパターンで、情報パターンの読出しを制御する同期パターンを表現することができない。このようなことから、本実施の形態では、上記のような符号化方式を採用している。以下では、このような符号化方式をmCn方式と称する。
ここで、単位画像としては、如何なる形状のものを用いてもよい。本実施の形態では、単位画像の一例としてドット画像(以下、単に「ドット」という)を用いるが、例えば、斜線パターン等、他の形状の画像であってもよい。
【0011】
図1に、mCn方式における符号パターンの例を示す。
図では、黒色の領域と斜線の領域をドット配置可能な領域とし、その間にある白色の領域をドット配置不可能な領域としている。そして、ドット配置可能な領域のうち、黒色の領域にドットが配置され、斜線の領域にはドットが配置されていないことを示している。即ち、図1は、縦3×横3の合計9個のドット配置可能な領域を設けた例を示しており、このうち、(a)は、9個のドット配置可能な領域に2ドットを配置する9C2方式における符号パターンの一例を、(b)は、9個のドット配置可能な領域に3ドットを配置する9C3方式における符号パターンの一例を示している。
【0012】
但し、図1で配置されるドット(黒色の領域)は、あくまで情報表現のためのドットであり、画像を構成する最小単位であるドット(図1の最小の四角)とは一致していない。本実施の形態において、「ドット」というときは前者のドットを指し、後者のドットは「ピクセル」と呼ぶことにすれば、ドットは、600dpiにおける2ピクセル×2ピクセルの大きさを有することになる。600dpiにおける1ピクセルの一辺の長さは0.0423mmなので、1ドットの一辺の長さは、84.6μm(=0.0423mm×2)となる。ドットは、大きくなればなるほど目に付きやすくなるため、小さいほうが好ましい。ところが、あまり小さくすると、プリンタで印刷できなくなってしまう。そこで、ドットの大きさとして、50μmより大きく100μmより小さい上記の値を採用している。但し、上記の値84.6μmは、あくまで計算上の数値であり、実際に印刷されたトナー像では100μm程度になる。
【0013】
次いで、図2に、9C2方式における全符号パターンの例を示す。尚、ここでは、ドット間の空白は省略している。図示するように、9C2方式では、36(=)通りの符号パターンが利用される。また、全符号パターンに対して、各符号パターンを一意に識別するための番号であるパターン値が付される。図では、各符号パターンに対するこのパターン値の割り当ての例も示している。但し、図に示した対応はあくまで一例であり、どの符号パターンにどのパターン値を割り当ててもよい。
【0014】
また、図3に、9C3方式における全符号パターンの例を示す。尚、ここでも、ドット間の空白は省略している。図示するように、9C3方式では、84(=)通りの符号パターンが利用される。また、この場合も、全符号パターンに対して、各符号パターンを一意に識別するための番号であるパターン値が付される。図では、各符号パターンに対するこのパターン値の割り当ての例も示している。但し、この場合も、図に示した対応はあくまで一例であり、どの符号パターンにどのパターン値を割り当ててもよい。
【0015】
尚、ここでは、符号パターンが配置される領域(以下、「パターンブロック」という)の大きさを、3ドット×3ドットを配置可能な大きさとした。しかしながら、パターンブロックの大きさはこれに限るものではない。つまり、2ドット×2ドット、4ドット×4ドット等を配置可能な大きさであってもよい。
また、パターンブロックの形状として、正方形でなく、例えば3ドット×4ドットを配置する場合のように長方形を採用してもよい。尚、本明細書において、長方形とは、隣り合う2辺の長さが等しくない矩形、つまり、正方形以外の矩形のことをいうものとする。
更に、任意に決めた数のドット配置可能な領域のうち、幾つの領域にドットを配置するかも、表現したい情報の量と許容できる画像濃度とを考慮して決めるとよい。
【0016】
このように、本実施の形態では、m箇所からn箇所を選択することでmCn種類の符号パターンを用意している。そして、これらの符号パターンのうち、特定のパターンを情報パターンとして利用し、残りを同期パターンとして利用する。ここで、情報パターンとは、媒体に埋め込む情報を表現するパターンである。また、同期パターンとは、媒体に埋め込まれた情報パターンを取り出すために用いられるパターンである。例えば、情報パターンの位置を特定したり、画像の回転を検出したりするために用いられる。尚、媒体としては、画像を印刷することが可能であれば、如何なるものを用いてもよい。紙が代表例なので、以下では媒体を紙として説明するが、金属、プラスチック、繊維等であってもよい。
【0017】
ここで、図2又は図3に示した符号パターンのうちの同期パターンについて説明する。尚、これらの符号パターンを利用する場合、パターンブロックの形状は正方形となるため、画像の回転を90度単位で認識する必要がある。従って、4種類の符号パターンで1組の同期パターンが構成される。
図4(a)は、9C2方式における同期パターンの例である。ここでは、36種類の符号パターンのうち、32種類の符号パターンを5ビットの情報を表現する情報パターンとし、残りの4種類の符号パターンで1組の同期パターンを構成するものとする。例えば、パターン値「32」の符号パターンを正立した同期パターン、パターン値「33」の符号パターンを右に90度回転した同期パターン、パターン値「34」の符号パターンを右に180度回転した同期パターン、パターン値「35」の符号パターンを右に270度回転した同期パターンとしている。但し、36種類の符号パターンの情報パターンと同期パターンへの振り分け方は、これには限らない。例えば、16種類の符号パターンを4ビットの情報を表現する情報パターンとし、残りの20種類の符号パターンで5組の同期パターンを構成してもよい。
【0018】
また、図4(b)は、9C3方式における同期パターンの例である。ここでは、84種類の符号パターンのうち、64種類の符号パターンを6ビットの情報を表現する情報パターンとし、残りの20種類の符号パターンで5組の同期パターンを構成するものとする。図は、この5組の同期パターンのうちの2組を示す。例えば、第1組においては、パターン値「64」の符号パターンを正立した同期パターン、パターン値「65」の符号パターンを右に90度回転した同期パターン、パターン値「66」の符号パターンを右に180度回転した同期パターン、パターン値「67」の符号パターンを右に270度回転した同期パターンとしている。また、第2組においては、パターン値「68」の符号パターンを正立した同期パターン、パターン値「69」の符号パターンを右に90度回転した同期パターン、パターン値「70」の符号パターンを右に180度回転した同期パターン、パターン値「71」の符号パターンを右に270度回転した同期パターンとしている。
【0019】
尚、図示しないが、パターンブロックの形状が長方形である場合は、画像の回転の検出のために2種類の符号パターンを同期パターンとして用意すればよい。例えば、縦3ドット×横4ドットを配置可能な領域が検出されるべきなのに、縦4ドット×横3ドットを配置可能な領域が検出された場合は、その時点で画像が90度又は270度回転していることが分かるからである。
【0020】
次に、同期パターンと情報パターンを配置してなる情報表現の最小単位(以下、「符号ブロック」という)について説明する。
図5は、符号ブロックのレイアウトの一例を示したものである。
図中、(a)及び(b)のそれぞれの右側に、符号ブロックのレイアウトを示している。ここでは、レイアウトとして、パターンブロックを5個×5個の25個並べたものを採用している。この25個のパターンブロックのうち、左上の1ブロックに同期パターンを配置している。また、同期パターンの右の4ブロックに紙面上の横方向の座標を特定するX座標情報を表す情報パターンを配置し、同期パターンの下の4ブロックに紙面上の縦方向の座標を特定するY座標情報を表す情報パターンを配置している。更に、これらの座標情報を表す情報パターンで囲まれた16ブロックに、紙面又は紙面に印刷される文書の識別情報を表す情報パターンを配置している。
【0021】
また、(a)の左側には、9C2方式における符号パターンが各パターンブロックに配置されていることを示している。即ち、36種類の符号パターンを、例えば、4種類の同期パターンと32種類の情報パターンとに分け、各パターンをレイアウトに従って配置している。一方、(b)の左側には、9C3方式における符号パターンが各パターンブロックに配置されていることを示している。即ち、84種類の符号パターンを、例えば、20種類の同期パターンと64種類の情報パターンとに分け、各パターンをレイアウトに従って配置している。
【0022】
尚、本実施の形態において、座標情報は、紙面の縦方向及び横方向にM系列で表現される。ここで、M系列とは、その部分列が、他の部分列と一致することがない系列である。例えば、11次のM系列は、2047ビットのビット列である。そして、この2047ビットのビット列の中から取り出された11ビット以上の部分列と同じ並びは、この2047ビットのビット列の中に自身以外には存在しない。本実施の形態では、1個の符号パターンを4ビットに対応付ける。即ち、2047ビットのビット列を4ビットごとに10進数で表し、図2又は図3の割り当てに従って符号パターンを決定し、紙面の横と縦に渡って印刷する。従って、復号の際は、3つの連続する符号パターンを特定し、符号パターンと座標との対応関係を格納したテーブルを参照することにより、ビット列上の位置が特定されることになる。
【0023】
図6に、M系列を用いた座標情報の符号化の例を示す。
(a)は、11次のM系列の例として、「0111000101011010000110010…」というビット列を示している。本実施の形態では、これを4ビットずつに区切り、1つ目の部分列「0111」をパターン値「7」の符号パターンとして、2つ目の部分列「0001」をパターン値「1」の符号パターンとして、3つ目の部分列「0101」をパターン値「5」の符号パターンとして、4つ目の部分列「1010」をパターン値「10」の符号パターンとして、それぞれ紙面上に配置する。
【0024】
また、このように4ビットずつ区切って符号パターンに割り当てると、(b)に示すように、4周期で全てのパターン列が表現される。即ち、11次のM系列は、2047ビットなので、この系列を4ビットごとに切り出し、符号パターンで表現していくと、最後に3ビットあまることになる。この3ビットに、M系列の最初の1ビットを加えて4ビットとし符号パターンで表す。更に、M系列の2ビット目から4ビットごとに切り出し符号パターンで表す。すると、次の周期は、M系列の3ビット目から始まり、その次の周期は、M系列の4ビット目から始まる。更に、5周期目は、5ビット目からとなるが、これは最初の周期と一致する。従って、M系列の4周期を4ビットごとに切り出していくと、2047個の符号パターンで全てを尽くすことができる。M系列は11次であるので、3つの連続する符号パターンは、他のどの位置の連続する符号パターンとも一致することはない。そこで、読出し時には3つの符号パターンを読み出せば、復号が可能である。但し、本実施の形態では、誤りの発生を考慮し、4つの符号パターンで座標情報を表現している。
【0025】
また、識別情報の符号化には、幾つかの方法の利用が考えられるが、本実施の形態では、RS符号化が適している。RS符号は多値の符号法であり、各パターンブロックに配置された符号パターンのパターン値をRS符号の多値に対応させるとよいからである。
尚、本実施の形態における符号パターンの利用形態としては、例えば、文書画像に重ねてその識別情報を紙面に印刷し、ペン状のスキャナで紙面上の部分画像を読み込み、そこから文書画像の識別情報を取得する、といったものが想定される。この場合、紙面上の汚れやスキャナの性能によって誤りが発生するが、この誤りはRS符号により訂正される。
【0026】
ここで、RS符号による訂正及びそのような訂正を行う場合に表現可能な情報量について具体的に説明する。
本実施の形態では、上述したように、1パターンブロック内のドット数が一定である符号パターンを採用している。これにより、仮に1ドットが消失した場合や、1ドットが付加された場合は、パターンブロック内のドット数が変わる。従って、これらは誤りだと分かる誤りとなる。一方で、ドットの消失と付加が同時に起こった場合は、他の符号パターンであると誤認識してしまうので、誤りだと分からない誤りとなる。
例えば、識別情報を表す情報パターンを配置する16ブロックのうち、10ブロックを識別情報そのものを表す情報パターンを配置するブロックとし、6ブロックを訂正のためのブロックとする。この場合、誤りだと分かるブロックは6ブロックまで、誤りだと分からないブロックも3ブロックまで、訂正される。これを例えば9C2方式における32種類の情報パターンで実現したとすると、1ブロックで5ビットの情報が表現されるので、識別情報そのものは10ブロックで50ビット分表現される。また例えば9C3方式における64種類の情報パターンで実現したとすると、1ブロックで6ビットの情報が表現されるので、識別情報そのものは10ブロックで60ビット分表現される。
【0027】
次いで、上記符号ブロックを含む広範囲のレイアウトについて説明する。
図7は、そのようなレイアウトの一例を示した図である。このレイアウトでは、図5の符号ブロックが基本単位として紙面全体の縦方向及び横方向に周期的に配置されている。
ここで、同期パターンとしては、同じ符号パターンが各符号ブロックにおける左上のパターンブロックに配置されている。図では、同期パターンを「S」で表している。
また、X座標情報としては、符号パターンの同じ並びが、同期パターンが配置されたのと同じ行の各パターンブロックに配置されている。Y座標情報としては、符号パターンの同じ並びが、同期パターンが配置されたのと同じ列の各パターンブロックに配置されている。図では、X座標情報を表すパターンを「X01」、「X02」、…で表し、Y座標情報を表すパターンを「Y01」、「Y02」、…で表している。
更に、識別情報としては、符号パターンの同じ配列が、縦方向及び横方向に周期的に配置されている。図では、識別情報を表すパターンを「I01」、「I02」、…、「I16」で表している。
そして、このようなレイアウトを採用することにより、例えば、図中、丸印で示した範囲が読み取られた場合のように、図5の符号ブロックの全体を含む範囲が読み取られていない場合であっても、後述する処理により、識別情報及び座標情報が得られる。
【0028】
尚、このようなレイアウトで紙面に印刷される符号画像は、例えば電子写真方式を用いて、Kトナー(カーボンを含む赤外光吸収トナー)、又は、特殊トナーにより形成される。
ここで、特殊トナーとしては、可視光領域(400nm〜700nm)における最大吸収率が7%以下であり、近赤外領域(800nm〜1000nm)における吸収率が30%以上の不可視トナーが例示される。ここで、「可視」及び「不可視」は、目視により認識できるかどうかとは関係しない。印刷された媒体に形成された画像が可視光領域における特定の波長の吸収に起因する発色性の有無により認識できるかどうかで「可視」と「不可視」とを区別している。また、可視光領域における特定の波長の吸収に起因する発色性が若干あるが、人間の目で認識し難いものも「不可視」に含める。
【0029】
ところで、このように紙面に印刷された符号画像をペンデバイス等の画像読取装置で読み取り、情報を復号する場合、読み取った符号画像内のドットが画像処理によりビット情報に変換される。このとき、画像の状態によっては、ぼけやノイズによりエラーが発生することがある。また、画像読取装置が読み取りのためにLED等の照明を使用している場合、レーザープリンタ等によりトナーで印刷された符号画像を読み取ろうとすると、画像読取装置の傾きによっては、照明の光がトナー表面で正反射し、正確な読み取りが不可能となることもある。
このようなエラーを訂正する方法は、多数考案されており、有効な手段となっている。しかしながら、利用される領域においては、より精度の高い復号が求められる。
また、読み取った画像におけるぼけやノイズは、一様に発生することは少なく、画像の部分領域にまとまって発生することが多い。
そこで、本実施の形態では、画像の状態により、ぼけやノイズが発生していると推測される領域の各ビットに信頼度を付与し、ビット情報とともに利用することで、復号精度を高める。
【0030】
以下、このような信頼度を用いた情報の復号について、より詳細に説明する。尚、本実施の形態では、如何なるmCn方式を利用してもよいが、以降の説明においては、簡単のため、9C3方式の利用を前提とする。また、以下では、パターンブロックのことを単に「ブロック」ともいう。
【0031】
まず、紙面に形成された符号画像を読み取って処理する画像処理装置20について説明する。
図8は、画像処理装置20の構成例を示したブロック図である。
図示するように、画像処理装置20は、画像読取部21と、ドット配列生成部22と、ブロック検出部23と、同期符号検出部24と、ドット信頼度配列生成部25と、ブロック信頼度配列生成部26とを備える。また、識別符号検出部30と、識別符号復号部32と、X座標符号検出部40と、X座標符号復号部42と、Y座標符号検出部45と、Y座標符号復号部47と、情報出力部50とを備える。
【0032】
画像読取部21は、CCD(Charge Coupled Devices)やCMOS(Complementary Metal Oxide Semiconductor)等の撮像素子を用いて、紙面に印刷された符号画像を読み取る。
ドット配列生成部22は、読み取った符号画像からドットを検出し、ドットの位置を参照して、ドット配列を生成する。尚、符号画像からのドット検出の前処理として、読み取った画像に含まれるノイズを除去するための処理も行う。ここで、ノイズには、例えば、撮像素子感度のばらつきや電子回路により発生するノイズがある。ノイズ除去の処理の種類は、撮像系の特性に合わせるべきだが、ぼかし処理やアンシャープマスキング等の先鋭化処理を適用するとよい。また、ドットの検出は、次のように行う。即ち、まず、2値化処理によりドット画像の部分と、その他の背景画像の部分とを切り分け、2値化された個々の画像位置からドットの位置を検出する。その際、2値化された画像にノイズ成分が多数含まれる場合があるため、2値化された画像の面積や形状によりドットの判定を行うフィルタ処理を組み合わせる必要がある。その後、ドット配列の生成は、2次元の配列上で、例えば、ドットがある位置を「1」、ドットがない位置を「0」というように、画像として検出したドットをデジタルデータに置き換えることにより行う。本実施の形態では、画像取得手段の一例として、ドット配列生成部22を設けている。
【0033】
ブロック検出部23は、ドット配列上で、符号ブロック内のパターンブロックを検出する。即ち、符号ブロックと同じ大きさ及び形状のフレームで、パターンブロックと同じ大きさ及び形状のブロックを有するブロックフレームをドット配列上で動かし、ブロック内のドット数が均等になる位置を正しいフレーム位置とし、各ブロック内のパターン値を格納した符号配列を生成する。本実施の形態では、部分画像に対応する部分ビット列の一例として、パターン値を用いている。
【0034】
同期符号検出部24は、ドット配列から検出された各符号パターンの種類を参照して、同期符号を検出する。また、同期符号検出部24は、検出した同期符号に基づいて、画像の回転の判定も行う。例えば、正方形の符号パターンを用いた場合、90度単位で回転している可能性がある。そこで、検出した同期符号が4種類の同期パターンのいずれに対応しているかによって、その向きを検出する。また、長方形の符号パターンを用いた場合、180度単位で回転している可能性がある。そこで、検出された同期符号が2種類の同期パターンのいずれに対応しているかによって、その向きを検出する。更に、同期符号検出部24は、このように検出された回転角度だけ符号配列を回転させて、符号配列を正しい向きに設定する。
【0035】
ドット信頼度配列生成部25は、画像読取部21が読み取った符号画像及びドット配列生成部22が生成したドット配列から各ドットの信頼度を算出し、ドット信頼度配列を生成する。ドット信頼度配列の生成は、ドット配列と同じ大きさの2次元の配列上で、ドット配列上のある位置のデジタルデータの信頼度を、その位置に対応する位置に配置することにより行う。本実施の形態では、画像の読み取りの状態を示す状態情報の一例として、信頼度を用いており、状態情報を取得する情報取得手段の一例として、ドット信頼度配列生成部25を設けている。
【0036】
ブロック信頼度配列生成部26は、ドット信頼度配列生成部25が生成したドット信頼度配列から各パターンブロックの信頼度を算出し、ブロック信頼度配列を生成する。即ち、ドット信頼度配列上で、ブロック検出部23が求めた正しいフレーム位置にブロックフレームを重ね、各ブロック内のドット信頼度に基づいて、各ブロックの信頼度を求める。そして、符号配列と同じ大きさの2次元の配列上で、符号配列上のある位置のブロックの信頼度を、その位置に対応する位置に配置することにより、ブロック信頼度配列を生成する。本実施の形態では、部分画像の読み取りの状態を示す部分状態情報の一例として、ブロック信頼度を用いている。
【0037】
識別符号検出部30は、角度が補正された符号配列から、同期符号の位置を基準にして、識別符号を検出する。本実施の形態では、ビット列の一例として、識別符号を用いており、ビット列を検出する検出手段の一例として、識別符号検出部30を設けている。
識別符号復号部32は、上述したRS符号の符号化処理で用いたパラメータ(ブロック数等)と同じパラメータを用いて識別符号を復号し、識別情報を出力する。本実施の形態では、特定のビット列を決定する決定手段の一例として、識別符号復号部32を設けている。
【0038】
X座標符号検出部40は、角度が補正された符号配列から、同期符号の位置を基準にしてX座標符号を検出する。
X座標符号復号部42は、検出されたX座標符号からM系列の部分系列を取り出し、画像生成に使用したM系列におけるこの部分系列の位置を参照し、この位置を符号ブロックのシフト量で補正した値をX座標情報として出力する。
【0039】
Y座標符号検出部45は、角度が補正された符号配列から、同期符号の位置を基準にしてY座標符号を検出する。
Y座標符号復号部47は、検出されたY座標符号からM系列の部分系列を取り出し、画像生成に使用したM系列におけるこの部分系列の位置を参照し、この位置を符号ブロックのシフト量で補正した値をY座標情報として出力する。
【0040】
情報出力部50は、識別符号復号部32、X座標符号復号部42、Y座標符号復号部47からそれぞれ取得した識別情報、X座標情報、Y座標情報を出力する。
【0041】
次に、画像処理装置20による画像処理時の動作について説明する。
まず、画像読取部21が、符号画像が印刷された媒体から、予め決められた大きさの領域の符号画像を読み取る。このとき、図5に示した1つの符号ブロックから情報を復元するのであれば、1つの符号ブロックに相当する大きさの領域を読み取ればよいが、複数の符号ブロックから情報を復元するのであれば、複数の符号ブロックに相当する大きさの領域を読み取る必要がある。
【0042】
次に、ドット配列生成部22が、ドットを検出した位置に「1」を、ドットを検出しなかった位置に「0」を設定したドット配列を生成する。
また、ドット信頼度配列生成部25が、ドット配列の「1」又は「0」が設定された位置におけるドットの信頼度を、その位置に対応する位置に設定したドット信頼度配列を生成する。ここで、信頼度は、「0」〜「4」の5段階で表すものとする。そして、信頼度「0」が最も信頼度が低く、数値が大きくなるに従って、信頼度も高くなるものとする。
【0043】
図9は、ドット配列及びドット信頼度配列の生成について示した図である。
まず、(a)は、画像読取部21が符号画像を読み取ったときの状態を示している。
図中、ドットが付されたグレーの領域が撮像素子で撮像された画像(以下、「撮像素子画像」という)を示しており、太線の四角形ABCDで囲まれた領域が画像読取部21による読込領域を示している。このうち、撮像素子画像は、正反射領域284と、ぼけノイズ領域285とを含む。また、読込領域は、図7に示した3個×3個の符号ブロックを一度に読み込み可能な大きさの領域(47ドット×47ドットの大きさの領域)であるものとする。
【0044】
次に、この読み取った符号画像から、ドット配列生成部22が(b)のドット配列を生成し、ドット信頼度配列生成部25が(c)のドット信頼度配列を生成する。尚、読込領域は、撮像素子画像におけるドットの並びの方向に対して傾いているが、(b),(c)では、読込領域を正立させて示している。つまり、(a)のA,B,C,Dは、(b)では、A’,B’,C’,D’に、(c)では、A”,B”,C”,D”に、それぞれ対応している。
【0045】
このうち、ドット信頼度配列は、典型的には、(c)に示すように、同じ信頼度の配列要素に分けられる。例えば、撮像素子画像外領域配列要素291,292,293は信頼度「0」の配列要素であり、撮像素子画像内において、正反射領域配列要素294は信頼度「1」の配列要素であり、ぼけノイズ領域配列要素295は信頼度「2」の配列要素である。また、読込領域は、上述したように、図7に示した3個×3個の符号ブロックを一度に読み込み可能な大きさを有する領域であるが、図5に示した1個の符号ブロックのみを一度に読み込めば十分な場合もあり、その場合は、撮像素子画像の中で特にドットが鮮明な領域を切り出して読み込むことになる。このように1個の符号ブロックの読み込みのために切り出される領域を基本領域と呼び、撮像素子画像の中で基本領域以外の領域を拡張領域と呼ぶことにすると、拡張領域配列要素296は信頼度「3」の配列要素であり、基本領域配列要素297は信頼度「4」の配列要素である。
【0046】
但し、このようなドット信頼度配列はあくまで典型例であり、実際には、ドット信頼度配列生成部25が、符号画像をビット情報に変換する際や、ビット情報に変換した後に、特定のアルゴリズムによって算出する。そこで、以下、ドット信頼度の算出例について簡単に説明する。
この算出例では、ドット信頼度配列生成部25が、各ドットから仮想格子点までの距離、及び、各仮想格子点の周辺のドット密度に基づいて、「0」〜「4」の5段階の信頼度を算出する。
図10(a)は、信頼度の算出で用いる仮想格子線について示した図である。仮想格子線の設定方法については限定しないが、例えば、どの隣り合う二線間の間隔も予め定めたドット間の最小距離に等しくなり、各ドットから最も近い線までの距離の二乗和が最小となるように設定することが考えられる。
【0047】
まず、各ドットから仮想格子点までの距離に基づく信頼度の算出方法について説明する。
図10(b)は、この信頼度の算出方法を示した図である。図では、格子点Pの周囲の局所領域を示している。
この算出方法では、例えば、ドットから格子点Pまでの距離がr1以下であれば、つまり、小さい方の円内にドットがあれば、信頼度ポイント「2」を付与する。また、ドットから格子点Pまでの距離がr1より大きくr2以下であれば、つまり、小さい方の円外で大きい方の円内にドットがあれば、信頼度ポイント「1」を付与する。更に、ドットから格子点Pまでの距離がr2より大きければ、つまり、大きい方の円外にドットがあれば、信頼度ポイント「0」を付与する。図の場合、ドットは、小さい方の円外で大きい方の円内にあるので、信頼度ポイント「1」が付与される。
【0048】
第二に、各仮想格子点の周辺のドット密度に基づく信頼度の算出方法について説明する。
この算出方法では、まず、仮想格子点の周囲の例えば5ドット×5ドットが配置される大きさの領域に着目する。この領域には、25ドットが配置可能であるが、ここでは9C3方式を前提としているので、理想的には、約8(≒25×3/9)個のドットが配置されることになる。そこで、例えば、この領域に8ドット以上が配置されていれば、信頼度ポイント「2」を付与する。また、この領域に4〜7ドットが配置されていれば、信頼度ポイント「1」を付与する。更に、この領域にドットが配置されていないか又は配置されていても1〜2個であれば、信頼度ポイント「0」を付与する。
【0049】
そして、ドット信頼度配列生成部25は、この2つの算出方法で得られた信頼度ポイントを加算することにより、「0」〜「4」の5段階の信頼度を算出する。
尚、ドット信頼度の算出方法はこれに限定されるものではない。例えば、ドット画像の形状又は大きさ、画像濃度、コントラスト等の特徴量を用いてもよく、また、これら複数の特徴量の組み合わせとしてもよい。
【0050】
このようにドット配列及びドット信頼度配列が生成されると、次に、ブロック検出部23が、ドット配列にブロックフレームを重ねて、ブロックの境界を検出する。ここで、ブロックとは、図5を参照して説明したように、埋め込まれた情報を復号する際に必要となる最小の単位である。本実施の形態では、符号ブロックとして5ブロック×5ブロックのものを想定している。従って、ブロックフレームとしても、5ブロック×5ブロックの大きさのものを用いる。
【0051】
図11は、ブロックフレームを移動させてブロックを検出する際の処理を具体的に示した図である。ここでは、9C3方式で符号化が行われたことが分かっており、9C3方式で復号する場合について示している。
まず、ブロック検出部23は、ドット配列生成部22からドット配列を取得する。ここで取得するドット配列のサイズは予め設定されており、(復号に必要なブロック数×ブロックの一辺のドット数+ブロックの一辺のドット数−1)2である。ところが、このドット配列は、画像の任意に選択された領域に対応しているので、ブロックフレームの位置は分からない。そこで、初めに、ドット配列の端を基準にブロック分割を行う。この例では、m=9なので、3ドット×3ドットの大きさのブロックからなるブロックフレームを重ねる。次に、各ブロック内のドットを数える。この例では、n=3なので、各ブロック内に3ドットずつ存在する場合のブロックフレームの位置が正しいブロックフレームの位置であるが、この位置ではドット数がばらついており、正しくないことが分かる。そこで、ブロックフレームをずらしてブロック内のドット数を数える。即ち、右方向への開始位置、1ドット分移動した位置、2ドット分移動した位置について同様の動作を行う。また、これらの位置のそれぞれに対し、下方向への開始位置、1ドット移動した位置、2ドット移動した位置についても同様の動作を行う。その結果、右方向に1ドット移動し、下方向に2ドット移動した位置において、全てのブロック内のドット数が「3」となる。従って、この位置を正しいブロックフレームの位置とする。
【0052】
これにより、各ブロックのパターン値を格納した符号配列が生成される。
図12は、このような符号配列の例を示した図である。尚、この時点では、同期符号が検出されていないので、識別符号、X座標符号、Y座標符号の位置は分からないが、これらの符号が配置される領域が分かるように、その境界を便宜的に太線で示している。また、同期符号が検出されていないので、符号配列の回転が必要かどうかも分からないが、便宜上、パターン値「64」の同期符号を使用し、回転が不要な状態を示している。更に、符号配列は、図5のレイアウトを縦3個×横3個並べたものになるとは限らない。例えば、上から2ブロック目、左から2ブロック目に同期符号が検出され、この同期符号を起点として図5のレイアウトが並ぶことも考えられる。しかし、図では、便宜上、最も左上のブロックに同期符号が検出されたものとし、符号配列として、図5のレイアウトを縦3個×横3個並べたものを示している。
【0053】
尚、識別符号としては、同じパターン値の配列が、X座標符号とY座標符号とに囲まれた16ブロックからなる各領域に繰り返し配置されているはずであるが、本実施の形態では、読み取った画像に信頼性の低い部分があることを前提としているので、図は、同じパターン値の配列が繰り返し配置されるものとはなっていない。また、X座標符号としては、Y方向に同じパターン値の配列が繰り返し配置され、Y座標符号としては、X方向に同じパターン値の配列が繰り返し配置されているはずであるが、同様の理由から、図は、同じパターン値の配列が繰り返し配置されるものとはなっていない。
【0054】
更に、これと同期して、ブロック信頼度配列生成部26は、各ドットの信頼度を格納したドット信頼度配列から、各ブロックの信頼度を格納したブロック信頼度配列を生成する。
本実施の形態では、ブロック内のドットの信頼度のうち、最も低い信頼度をブロック信頼度とする。
図13(a)に、このようなブロック信頼度の求め方について具体的に示す。図では、縦3×横3の合計9個のドット配置可能な位置のうち、ドットが配置された位置を黒の四角で表し、ドットが配置されていない位置を白の四角で表している。また、ドット信頼度を四角内の数字で表している。
この例では、ドットが配置された位置の信頼度が「3」、「1」、「2」であるので、ブロック信頼度は、この中で最小の値である「1」となる。尚、ドット信頼度の中には「1」よりも小さな「0」があるが、ドットが配置されていない位置の信頼度なので、これは考慮しない。
【0055】
図13(b)は、このようにして得られたブロック信頼度配列の例を示した図である。尚、この図でも、図12と同様、同期符号、識別符号、X座標符号、Y座標符号の各符号に対応するブロック信頼度が配置される領域の境界を便宜的に太線で示している。また、このブロック信頼度配列は、図9(c)に示したドット信頼度配列から生成されたものであることを前提とする。
【0056】
その後、同期符号検出部24、識別符号検出部30、X座標符号検出部40、Y座標符号検出部45が、各ブロックのパターン値を参照することにより、同期符号、識別符号、X座標符号、Y座標符号を検出する。そして、識別符号復号部32、X座標符号復号部42、Y座標符号復号部47が、識別符号、X座標符号、Y座標符号を復号し、情報出力部50が、復号結果から得られた情報を出力する。
【0057】
ところで、こうした処理において、本実施の形態では、ブロック信頼度を利用する。
ここで、このようなブロック信頼度の利用方法の一例について説明する。
本実施の形態では、識別情報を符号化するとき、上述したように、誤り訂正符号の代表的方法であるRS符号を用いている。具体的には、識別情報を表すビット列をブロック化して情報ブロックとし、情報ブロックの誤りを訂正する訂正ブロックを付加して、これらのブロックに対応する符号パターンを印刷する。そして、符号パターンを読み取って符号を検出したときに情報ブロックの誤りを訂正ブロックで訂正する。RS符号では、訂正ブロック数の半分のブロックの誤りを訂正でき、更に、誤りがあることが分かっているブロックについては訂正ブロックと同数のブロックの誤りを訂正できるようになっている。
そこで、ブロック信頼度を利用し、ブロック信頼度が低いブロックのパターン値を誤りであると仮定する。そうすれば、ブロックに誤りがあることが分かっている場合の訂正となり、訂正能力が高くなるので、識別符号がより高い精度で復号されるようになる。
【0058】
このような復号方法について具体的に説明する。尚、ここでは、識別符号が配置される16個のブロックのうち、6個が訂正ブロックであるものとする。つまり、誤りがあることが分からないブロックについては3ブロックの誤りを訂正でき、誤りがあることが分かっているブロックについては6ブロックの誤りを訂正できることを前提とする。
図14(a)は、図12の符号配列の元となる紙面に埋め込まれた符号を示したものである。図12では、識別符号は4ブロック×4ブロックの正方形の領域に配置されるが、図14(a)では、これを、1行目を左から右へ、2行目を左から右へ、3行目を左から右へ、4行目を左から右へ、という順に一列に並べて示している。
【0059】
次に、この埋め込まれた符号を検出する処理について説明する。
図14(b)は、図12の上から2行目、左から1列目の符号ブロックから識別符号を検出した場合について示したものである。(b)では、ギザギザの円で示すように、1つ目、2つ目、5つ目、6つ目の4つのブロックにおいて誤りが生じている。
この場合に、そのまま訂正ブロックで誤りを訂正したとする。つまり、誤りがあることが分からない場合の訂正を行ったとする。すると、6個の訂正ブロックに対し、誤りがあるブロックは4個なので、(a)の符号の並びは得られない。
一方、ブロック信頼度を利用し、ブロック信頼度が「0」のブロックから検出した符号は誤りであると仮定してみる。すると、1つ目、2つ目、5つ目のブロックは誤りがあることが分かっているブロックとなり、3つの訂正ブロックで訂正でき、6つ目のブロックは誤りがあることが分からないブロックなので、2つの訂正ブロックで訂正される。従って、6つの訂正ブロックで全てのブロックを訂正でき、(a)の符号の並びが得られる。
尚、この例は、ブロック信頼度を利用せずに訂正した結果と、ブロック信頼度が低いブロックを誤りと仮定して訂正した結果とが異なる例である。従って、どちらが正しいか分からないので、その後の処理でこのような復号結果は利用しない構成としてもよい。
【0060】
図14(c)は、図12の上から2行目、左から3列目の符号ブロックから識別符号を検出した場合について示したものである。(c)では、ギザギザの円で示すように、3つ目、4つ目、8つ目の3つのブロックにおいて誤りが生じている。
この場合に、そのまま訂正ブロックで誤りを訂正したとする。つまり、誤りがあることが分からない場合の訂正を行ったとする。すると、6個の訂正ブロックに対し、誤りがあるブロックは3個なので、(a)の符号の並びが得られる。
一方、ブロック信頼度を利用し、ブロック信頼度が「0」のブロックから検出した符号は誤りであると仮定してみる。すると、4つ目のブロックは誤りがあることが分かっているブロックとなり、1つの訂正ブロックで訂正でき、3つ目、8つ目のブロックは誤りがあることが分からないブロックなので、4つの訂正ブロックで訂正される。従って、6つの訂正ブロックで全てのブロックを訂正でき、(a)の符号の並びが得られる。
尚、この例は、ブロック信頼度を利用せずに訂正した結果と、ブロック信頼度が低いブロックを誤りと仮定して訂正した結果とが同じになる例である。従って、この復号結果はブロック信頼度を利用しない復号のみを行った場合に比べて高い信頼度をもってその後の処理で利用されることになる。
【0061】
次いで、画像処理装置20の動作について更に詳しく説明する。尚、この動作の説明では、9C3方式の符号パターンが図5のレイアウトで配置されていることを前提とする。
まず、ブロック検出部23の動作について説明する。
図15は、ブロック検出部23の動作例を示したフローチャートである。
まず、ブロック検出部23は、ドット配列生成部22からドット配列を取得する(ステップ201)。このドット配列の大きさは、(復号に必要なブロック数×ブロックの一辺のドット数+ブロックの一辺のドット数−1)である。本実施の形態では、復号に必要なブロック数は5×5であり、ブロックの一辺のドット数が3であるので、17×17のドット配列を取得する。
【0062】
次に、取得したドット配列に、ブロックフレームを重ね合わせる(ステップ202)。そして、カウンタI、Jに「0」を代入し、MaxBNにも「0」を代入する(ステップ203)。ここで、I、Jは、ブロックフレームを初期位置から移動させたステップ数をカウントするものである。画像の1ラインごとにブロックフレームを移動させ、そのとき移動させたライン数をカウンタI、Jでカウントする。また、MaxBNは、ブロック内で検出されるドット数が「3」となるブロック数をブロックフレームを移動させながらカウントしていったときに、最大となるカウント値を記録するものである。
【0063】
次に、ブロック検出部23は、ブロックフレームをX方向にI、Y方向にJ移動させる(ステップ204)。初期状態においてI、Jは「0」であるので、ブロックフレームは移動しない。そして、ブロックフレームの各ブロックに含まれるドット数をカウントして、ドット数が「3」となるブロックの数をカウントする。カウントしたブロック数はIB[I,J]に格納する(ステップ205)。IB[I,J]のI、Jには、ブロックフレームの移動量を示すIとJの値がそれぞれ記録される。
【0064】
次に、ブロック検出部23は、IB[I,J]とMaxBNとを比較する(ステップ206)。MaxBNは初期値が「0」であるので、最初の比較では、IB[I,J]がMaxBNよりも大きくなる。この場合、MaxBNにIB[I,J]の値を代入すると共に、MXにIの値を、MYにJの値を代入する(ステップ207)。尚、IB[I,J]がMaxBN以下である場合は、MaxBN、MX、MYの値はそのままにしておく。
【0065】
その後、ブロック検出部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]が最大のものを検出する。
【0066】
I=2、J=2までの処理が終了すると、ブロック検出部23は、保存しているMaxBNと閾値TBとを比較する(ステップ212)。閾値TBは、ドット数が「3」のブロックの数が復号可能な程度のものかを判定するための閾値である。
ここで、MaxBNが閾値TBよりも大きい場合には、ブロックフレームをMX、MYの位置に固定し、その位置で各ブロックのパターン値を検出する。そして、検出したパターン値を、各ブロックを識別する変数X、Yと共に符号配列PA[X,Y]としてメモリに記録する(ステップ213)。尚、このとき、対応するパターン値に変換することができなければ、パターン値として用いられていない「−1」を記録する。そして、ブロック検出部23は、MX、MYと、符号配列PA[X,Y]とを同期符号検出部24に出力する(ステップ214)。
一方、MaxBNが閾値TB以下である場合には、画像のノイズが大きく復号は不可能と判定し、復号不能を出力する(ステップ215)。
【0067】
また、ブロック検出部23がこのようにして符号配列上のブロックフレームの位置を決定すると、ブロック信頼度配列生成部26は、ドット信頼度配列上の同じ位置にブロックフレームを固定し、その位置で各ブロックの信頼度を求める。そして、求めたブロック信頼度を、各ブロックを識別する変数X、Yと共にブロック信頼度配列RA[X,Y]としてメモリに記録する。
【0068】
次に、同期符号検出部24の動作について説明する。
図16は、同期符号検出部24の動作例を示したフローチャートである。
まず、同期符号検出部24は、ブロック検出部23からMX、MYと、符号配列PA[X,Y]と、ブロック信頼度配列RA[X,Y]とを取得する(ステップ251)。
次に、同期符号検出部24は、K、Lに「1」を代入する(ステップ252)。尚、KはX方向のブロック数を示すカウンタであり、LはY方向のブロック数を示すカウンタである。
【0069】
次に、同期符号検出部24は、PA[K,L]のパターン値が「64」かどうかを判定する(ステップ253)。
PA[K,L]のパターン値が「64」であれば、符号配列PA[X,Y]及びブロック信頼度配列RA[X,Y]の回転は必要ないと判定し、同期符号のあるブロックのX座標SXにKを代入し、Y座標SYにLを代入する。また、ブロックフレームのX方向への移動量ShiftXにMXを代入し、Y方向への移動量ShiftYにMYを代入する(ステップ254)。
【0070】
次に、同期符号検出部24は、PA[K,L]のパターン値が「65」かどうかを判定する(ステップ255)。
PA[K,L]のパターン値が「65」であれば、符号配列PA[X,Y]及びブロック信頼度配列RA[X,Y]を左方向に90度回転させる(ステップ256)。図4(b)に示すようにパターン値「65」の符号パターンは、パターン値「64」の符号パターンを右方向に90度回転させた画像であるので、逆方向に90度回転させて画像を正立させている。尚、このとき、符号配列PA[X,Y]内の全てのパターン値が、左方向に90度回転させた場合のパターン値に変換され、ブロック信頼度配列RA[X,Y]内の全ての信頼度が、左方向に90度回転させた場合の信頼度に変換される。
また、この回転に伴って、同期符号のあるブロックのX座標SXにLを代入し、Y座標SYに6−Kを代入する。また、ブロックフレームのX方向への移動量ShiftXにMYを代入し、Y方向への移動量ShiftYに2−MXを代入する(ステップ257)。
【0071】
次に、同期符号検出部24は、PA[K,L]のパターン値が「66」かどうかを判定する(ステップ258)。
PA[K,L]のパターン値が「66」であれば、符号配列PA[X,Y]及びブロック信頼度配列RA[X,Y]を左方向に180度回転させる(ステップ259)。図4(b)に示すようにパターン値「66」の符号パターンは、パターン値「64」の符号パターンを180度回転させた画像であるので、パターン値「66」の符号パターンを180度回転させて画像を正立させている。尚、このとき、符号配列PA[X,Y]内の全てのパターン値が、180度回転させた場合のパターン値に変換され、ブロック信頼度配列RA[X,Y]内の全ての信頼度が、180度回転させた場合の信頼度に変換される。
また、この回転に伴って、同期符号のあるブロックのX座標SXに6−Kを代入し、Y座標SYに6−Lを代入する。また、ブロックフレームのX方向への移動量ShiftXに2−MXを代入し、Y方向への移動量ShiftYに2−MYを代入する(ステップ260)。
【0072】
次に、同期符号検出部24は、PA[K,L]のパターン値が「67」かどうかを判定する(ステップ261)。
PA[K,L]のパターン値が「67」であれば、符号配列PA[X,Y]及びブロック信頼度配列RA[X,Y]を左方向に270度回転させる(ステップ262)。図4(b)に示すようにパターン値「67」の符号パターンは、パターン値「64」の符号パターンを右に270度回転させた画像であるので、逆方向に270度回転させて画像を正立させている。尚、このとき、符号配列PA[X,Y]内の全てのパターン値が、左方向に270度回転させた場合のパターン値に変換され、ブロック信頼度配列RA[X,Y]内の全ての信頼度が、左方向に270度回転させた場合の信頼度に変換される。
また、この回転に伴って、同期符号のあるブロックのX座標SXに6−Lを代入し、Y座標SYにKを代入する。また、ブロックフレームのX方向への移動量ShiftXに2−MYを代入し、Y方向への移動量ShiftYにMXを代入する(ステップ263)。
【0073】
そして、ステップ254、257、260、263で、SX、SY、ShiftX、ShiftYに値が代入された場合、同期符号検出部24は、PA[X,Y]とこれらの値とRA[X,Y]を識別符号検出部30、X座標符号検出部40、Y座標符号検出部45に出力する(ステップ264)。
また、PA[K,L]がパターン値「64」〜「67」のいずれでもなければ、同期符号検出部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の処理を、パターン値「64」〜「67」のブロックを検出するまでK、Lの値を変更しながら繰り返し行う。また、K=5、L=5になっても、パターン値「64」〜「67」のブロックを検出することができなかった場合には、復号不能の判定信号を出力する(ステップ269)。
【0074】
次に、識別符号検出部30の動作について説明する。
図17は、識別符号検出部30の動作例を示したフローチャートである。
まず、識別符号検出部30は、同期符号検出部24から符号配列PA[X,Y]、SX、SY、ブロック信頼度配列RA[X,Y]を取得する(ステップ301)。
次に、識別符号検出部30は、識別符号配列IA[X,Y]の全ての要素を「−1」で初期化し、識別符号信頼度配列JA[X,Y]の全ての要素を「0」で初期化する(ステップ302)。尚、この「−1」は、パターン値として用いられていない番号とする。そして、符号ブロックにおける各ブロックを識別するためのカウンタIX、IYに「1」を代入する(ステップ303)。ここで、IXは、X方向のブロック数を示すカウンタであり、IYは、Y方向のブロック数を示すカウンタである。
【0075】
また、識別符号検出部30は、IY−SYが「5」で割り切れるかどうかを判定する(ステップ304)。即ち、IYで特定される行に同期符号が配置されているかどうかを判定する。
ここで、IY−SYが「5」で割り切れた場合、つまり、この行に同期符号が配置されている場合は、識別符号を取り出す対象ではないため、IYに「1」を加算し(ステップ305)、ステップ304へ進む。
一方、IY−SYが「5」で割り切れなかった場合、つまり、この行に同期符号が配置されていない場合は、IX−SXが「5」で割り切れるかどうかを判定する(ステップ306)。即ち、IXで特定される列に同期符号が配置されているかどうかを判定する。
【0076】
ここで、IX−SXが「5」で割り切れた場合、つまり、この列に同期符号が配置されている場合は、識別符号を取り出す対象ではないため、IXに「1」を加算し(ステップ307)、ステップ306へ進む。
一方、IX−SXが「5」で割り切れなかった場合、つまり、この列に同期符号が配置されていない場合、識別符号検出部30は、IA[(IX−SX)mod5,(IY−SY)mod5]にPA[IX,IY]を代入し(ステップ308)、JA[(IX−SX)mod5,(IY−SY)mod5]にRA[IX,IY]を代入する(ステップ309)。
【0077】
そして、IX=5であるかどうかを判定する(ステップ310)。
ここで、IX=5でない場合には、IXに「1」を加算して(ステップ307)、ステップ306〜309の処理をIX=5となるまで繰り返し行う。また、IX=5となると、次に、IY=5であるかどうかを判定する(ステップ311)。IY=5でない場合には、IXに「1」を代入し(ステップ312)、IYに「1」を加算して(ステップ305)、ステップ304〜310の処理をIY=5となるまで繰り返し行う。また、IY=5となると、IA[X,Y]、JA[X,Y]を出力する(ステップ313)。
【0078】
次に、識別符号復号部32の動作について説明する。識別符号復号部32は、識別符号信頼度配列JA[X,Y]を利用した処理を行うが、ここでは、その一例として、図14(b),(c)で説明したように、RS符号における通常の訂正で得られた結果に対し、ブロック信頼度が低いブロックのパターン値を誤りと仮定した訂正で得られた結果による検証処理を行う場合について説明する。また、訂正ブロックは6個とするが、これに限定するものではない。
【0079】
図18は、識別符号復号部32の動作例を示したフローチャートである。
まず、識別符号復号部32は、識別符号検出部30から識別符号配列IA[X,Y]、識別符号信頼度配列JA[X,Y]を取得する(ステップ351)。
次に、識別符号復号部32は、識別符号信頼度配列JA[X,Y]を利用することなく、識別符号配列IA[X,Y]について誤り訂正を行い、IP[X,Y]を得る(ステップ352)。即ち、6個の訂正ブロックにより、RS符号における通常の訂正を行う。
そして、識別符号復号部32は、IP[X,Y]を復号して、識別情報を得る(ステップ353)。
【0080】
その後、識別符号復号部32は、識別符号信頼度配列JA[X,Y]を利用してIP[X,Y]の検証処理を行う。
即ち、識別符号復号部32は、まず、JA[X,Y]=0となる[X,Y]の組の数Nをカウントする(ステップ354)。つまり、識別符号が配置された16個のブロックのうち、ブロック信頼度が「0」であるブロックの数をカウントする。そして、Nが「6」以下であるかどうかを判定する(ステップ355)。
【0081】
ここで、Nが「6」以下であると判定された場合、つまり、ブロック信頼度が「0」であるブロックの数が「6」以下の場合、識別符号復号部32は、識別符号信頼度配列JA[X,Y]を利用して、識別符号配列IA[X,Y]について誤り訂正を行い、IQ[X,Y]を得る(ステップ356)。即ち、ブロック信頼度が「0」のブロックを、誤りがあるブロックであると仮定し、6個の訂正ブロックにより訂正を行う。
次に、識別符号復号部32は、IP[X,Y]とIQ[X,Y]が一致するかどうかを判定する(ステップ357)。そして、IP[X,Y]とIQ[X,Y]が一致すると判定された場合、識別符号復号部32は、ステップ353で得られた識別情報の信頼性が高いと判断し、そのまま処理を終了する。
【0082】
一方、ステップ355でNが「6」以下でないと判定された場合、つまり、ブロック信頼度が「0」であるブロックの数が「6」を超える場合は、これら全てのブロックを誤りであると仮定しても訂正ブロックで訂正できないので、識別符号復号部32は、ステップ353で得られた識別情報をN/Aで置き換える(ステップ358)。
また、ステップ357でIP[X,Y]とIQ[X,Y]が一致しないと判定された場合、識別符号復号部32は、ステップ353で得られた識別情報の信頼性が低いと判断し、ステップ353で得られた識別情報をN/Aで置き換える(ステップ358)。
【0083】
尚、この動作例では、ブロック信頼度が「0」である場合に、そのブロックから検出されたパターン値を誤りであると仮定したが、この限りではない。例えば、ブロック信頼度が予め決められた悪い状態を示す値である場合に、そのブロックから検出されたパターン値を誤りであると仮定してもよい。
また、この動作例は、RS符号における通常の訂正で得られた結果を、ブロック信頼度が低いブロックのパターン値を誤りと仮定した訂正で得られた結果によって検証するというものであったが、ブロック信頼度を利用した処理はこれには限らない。RS符号における通常の訂正で得られた結果と、ブロック信頼度が低いブロックのパターン値を誤りと仮定した訂正で得られた結果とに基づいて、識別符号を復号するものであれば、如何なる処理であってもよい。
【0084】
次に、X座標符号検出部40及びX座標符号復号部42の動作について説明する。
図19は、X座標符号検出部40及びX座標符号復号部42の動作例を示したフローチャートである。
まず、X座標符号検出部40は、同期符号検出部24から符号配列PA[X,Y]、SX、SY、ShiftX、ShiftYを取得する(ステップ401)。
次に、X座標符号検出部40は、X座標符号配列XA[X]の全ての要素を「−1」で初期化する(ステップ402)。尚、この「−1」は、パターン値として用いられていない番号とする。そして、符号ブロックにおける各ブロックを識別するためのカウンタIX、IYに「1」を代入する。ここで、IXは、X方向のブロック数を示すカウンタであり、IYは、Y方向のブロック数を示すカウンタである。更に、X座標符号検出部40は、X座標符号配列における各要素を識別するためのカウンタKXにも「1」を代入する(ステップ403)。
【0085】
また、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で特定される列に同期符号が配置されているかどうかを判定する。
【0086】
ここで、IX−SXが「5」で割り切れた場合、つまり、この列に同期符号が配置されている場合は、X座標符号を取り出す対象ではないため、IXに「1」を加算し(ステップ407)、ステップ406へ進む。
一方、IX−SXが「5」で割り切れなかった場合、つまり、この列に同期符号が配置されていない場合、X座標符号検出部40は、XA[KX]にPA[IX,IY]を代入する(ステップ408)。
【0087】
そして、IX=5であるかどうかを判定する(ステップ409)。
ここで、IX=5でない場合には、KXに「1」を加算し(ステップ410)、IXに「1」を加算して(ステップ407)、ステップ406〜408の処理をIX=5となるまで繰り返し行う。また、IX=5となると、X座標符号復号部42の処理に移る。
【0088】
即ち、X座標符号復号部42は、XA[X]を復号できるかどうかを判定する(ステップ411)。
ここで、XA[X]を復号できると判定すると、X座標符号復号部42は、XA[X]とShiftXからX座標情報を復号する(ステップ412)。また、XA[X]が復号できないと判定された場合は、X座標情報にN/Aを代入する(ステップ413)。
【0089】
尚、ここでは、X座標符号検出部40及びX座標符号復号部42の動作のみ説明したが、Y座標符号検出部45及びY座標符号復号部47も同様の動作を行う。
以上により、本実施の形態における画像処理装置20の動作説明を終了する。
【0090】
次に、本実施の形態における画像処理装置20の具体的なハードウェア構成について説明する。
まず、画像処理装置20を実現する識別装置の一例としてのペンデバイス60について説明する。
図20は、ペンデバイス60の機構を示した図である。
図示するように、ペンデバイス60は、ペン全体の動作を制御する制御回路61を備える。また、制御回路61は、入力画像から検出した符号画像を処理する画像処理部61aと、そこでの処理結果から識別情報及び座標情報を抽出するデータ処理部61bとを含む。
そして、制御回路61には、ペンデバイス60による筆記動作をペンチップ69に加わる圧力によって検出する圧力センサ62が接続されている。また、媒体上に赤外光を照射する赤外LED63と、画像を入力する読取手段の一例としての赤外CMOS64も接続されている。更に、識別情報及び座標情報を記憶するための情報メモリ65と、識別情報及び座標情報を外部装置に送信する出力手段の一例としての通信回路66と、ペンを駆動するためのバッテリ67と、ペンの識別情報(ペンID)を記憶するペンIDメモリ68も接続されている。
【0091】
尚、図8に示した画像読取部21は、例えば、図20の赤外CMOS64にて実現される。また、ドット配列生成部22、ドット信頼度配列生成部25は、例えば、図20の画像処理部61aにて実現される。更に、図8に示したブロック検出部23、同期符号検出部24、ブロック信頼度配列生成部26、識別符号検出部30、識別符号復号部32、X座標符号検出部40、X座標符号復号部42、Y座標符号検出部45、Y座標符号復号部47、情報出力部50は、例えば、図20のデータ処理部61bにて実現される。
【0092】
また、図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とを備える。
【0093】
尚、本実施の形態を実現するプログラムは、通信手段により提供することはもちろん、CD−ROM等の記録媒体に格納して提供することも可能である。
【符号の説明】
【0094】
20…画像処理装置、21…画像読取部、22…ドット配列生成部、23…ブロック検出部、24…同期符号検出部、25…ドット信頼度配列生成部、26…ブロック信頼度配列生成部、30…識別符号検出部、32…識別符号復号部、40…X座標符号検出部、42…X座標符号復号部、45…Y座標符号検出部、47…Y座標符号復号部、50…情報出力部

【特許請求の範囲】
【請求項1】
特定のビット列を表す画像が印刷された媒体から読み取られた当該画像を取得する画像取得手段と、
前記画像取得手段により取得された前記画像の読み取りの状態を示す状態情報を取得する情報取得手段と、
前記画像取得手段により取得された前記画像からビット列を検出する検出手段と、
前記検出手段により検出された前記ビット列と、前記情報取得手段により取得された前記状態情報とに基づいて、前記特定のビット列を決定する決定手段と
を備えたことを特徴とする画像処理装置。
【請求項2】
前記検出手段により検出される前記ビット列は、前記画像取得手段により取得された前記画像を構成する複数の部分画像にそれぞれ対応する複数の部分ビット列からなり、
前記情報取得手段により取得される前記状態情報は、前記複数の部分画像の読み取りの状態をそれぞれ示す複数の部分状態情報からなることを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記複数の部分画像は、それぞれ、前記特定のビット列をRS(Reed-Solomon)符号化したときの複数のブロックにおけるビット列を表し、
前記決定手段は、前記複数の部分画像のうちの特定の部分画像の読み取りの状態を示す特定の部分状態情報が予め決められた悪い状態を示している場合に、前記検出手段により当該特定の部分画像から検出された特定の部分ビット列を誤りであると仮定してRS符号による訂正を行うことにより、前記特定のビット列を決定することを特徴とする請求項2に記載の画像処理装置。
【請求項4】
前記決定手段は、前記複数の部分ビット列を誤りであると仮定せずにRS符号による訂正を行って得られた第1のビット列と、前記特定の部分状態情報が前記悪い状態を示している場合に前記特定の部分ビット列を誤りであると仮定してRS符号による訂正を行って得られた第2のビット列とに基づいて、前記特定のビット列を決定することを特徴とする請求項3に記載の画像処理装置。
【請求項5】
前記決定手段は、前記第1のビット列と前記第2のビット列とが等しいかどうかに基づいて、当該第1のビット列を前記特定のビット列とするかどうかを決定することを特徴とする請求項4に記載の画像処理装置。
【請求項6】
前記決定手段は、前記第1のビット列と前記第2のビット列とが等しい場合に、当該第1のビット列を前記特定のビット列に決定することを特徴とする請求項5に記載の画像処理装置。
【請求項7】
前記決定手段は、前記第1のビット列と前記第2のビット列とが等しくない場合に、当該第1のビット列を前記特定のビット列に決定しないことを特徴とする請求項5又は6に記載の画像処理装置。
【請求項8】
媒体又は媒体に印刷された電子文書の識別情報を示す特定のビット列を表す画像が印刷された当該媒体から当該画像を読み取る読取手段と、
前記読取手段により読み取られた前記画像の読み取りの状態を示す状態情報を取得する情報取得手段と、
前記読取手段により読み取られた前記画像からビット列を検出する検出手段と、
前記検出手段により検出された前記ビット列と、前記情報取得手段により取得された前記状態情報とに基づいて、前記特定のビット列を決定する決定手段と、
前記決定手段により決定された前記特定のビット列が示す前記識別情報を出力する出力手段と
を備えたことを特徴とする識別装置。
【請求項9】
コンピュータに、
特定のビット列を表す画像が印刷された媒体から読み取られた当該画像を取得する機能と、
取得された前記画像の読み取りの状態を示す状態情報を取得する機能と、
取得された前記画像からビット列を検出する機能と、
検出された前記ビット列と、取得された前記状態情報とに基づいて、前記特定のビット列を決定する機能と
を実現させるためのプログラム。

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


【公開番号】特開2012−65124(P2012−65124A)
【公開日】平成24年3月29日(2012.3.29)
【国際特許分類】
【出願番号】特願2010−207338(P2010−207338)
【出願日】平成22年9月15日(2010.9.15)
【出願人】(000005496)富士ゼロックス株式会社 (21,908)
【Fターム(参考)】