(57)【要約】【課題】符号画像に埋め込まれた情報を復元して、当該情報が埋め込まれた符号画像内の位置を特定する場合に、限られた長さの基本符号列を用いて、当該基本符号列が埋め込まれる範囲より広い範囲における位置が特定される符号画像を生成する画像処理装置を提供する。【解決手段】予め定められた長さの符号列であって、その一部に基づいて、当該一部が符号列内に占める位置を特定可能な基本符号列を取得し、取得した基本符号列を複数繰り返してなる第１符号列、及び、基本符号列に補充符号列を付加した符号列を繰り返してなる第２符号列のそれぞれを、互いに対応する領域に埋め込んだ符号画像を生成する画像生成装置である。【選択図】図５
2010146528.tif 000002
【特許請求の範囲】
【請求項１】
予め定められた長さの符号列であって、その一部に基づいて、当該一部が符号列内に占める位置を特定可能な基本符号列を取得する手段と、
前記取得した基本符号列を複数繰り返してなる第１符号列、及び、前記基本符号列に補充符号列を付加した符号列を繰り返してなる第２符号列のそれぞれを、互いに対応する領域に埋め込んだ符号画像を生成する符号画像生成手段と、
を含むことを特徴とする画像生成装置。
【請求項２】
前記補充符号列は、予め定められた長さで０ビットが連続する符号列であって、前記基本符号列の前に付加される
ことを特徴とする請求項１記載の画像生成装置。
【請求項３】
前記符号画像生成手段は、前記符号画像を分割してなる複数の単位領域のそれぞれに、予め定められた単位ビット長の符号列を埋め込んで前記符号画像を生成し、
前記補充符号列は、前記単位ビット長の整数倍に相当する長さで０ビットが連続する符号列である
ことを特徴とする請求項２記載の画像生成装置。
【請求項４】
前記符号画像生成手段は、前記第１符号列及び第２符号列が埋め込まれる領域に対応する領域に、さらに、前記第１符号列に補充符号列を付加した符号列を繰り返してなる第３符号列、及び、前記第２符号列に補充符号列を付加した符号列を繰り返してなる第４符号列のそれぞれを埋め込んだ符号画像を生成する
ことを特徴とする請求項１から３のいずれか一項記載の画像生成装置。
【請求項５】
予め定められた長さの符号列であって、その一部に基づいて、当該一部が符号列内に占める位置を特定可能な基本符号列を複数繰り返してなる第１符号列、及び、前記基本符号列に補充符号列を付加した符号列を繰り返してなる第２符号列のそれぞれを、互いに対応する領域に埋め込んだ符号画像の一部領域を読み取って得られる読み取り画像を取得する画像取得手段と、
前記読み取り画像に埋め込まれた情報を復元して、前記第１符号列及び第２符号列それぞれにおいて互いに対応する位置を占める部分列を取得する手段と、
前記各部分列が前記基本符号列内に占める位置を特定する手段と、
前記特定した前記各部分列の位置に基づいて、前記第２符号列内における前記部分列の位置を算出する手段と、
を含むことを特徴とする画像処理装置。
【請求項６】
予め定められた長さの符号列であって、その一部に基づいて、当該一部が符号列内に占める位置を特定可能な基本符号列を取得する手段、及び
前記取得した基本符号列を複数繰り返してなる第１符号列、及び、前記基本符号列に補充符号列を付加した符号列を繰り返してなる第２符号列のそれぞれを、互いに対応する領域に埋め込んだ符号画像を生成する符号画像生成手段、
としてコンピュータを機能させるためのプログラム。
【請求項７】
予め定められた長さの符号列であって、その一部に基づいて、当該一部が符号列内に占める位置を特定可能な基本符号列を複数繰り返してなる第１符号列、及び、前記基本符号列に補充符号列を付加した符号列を繰り返してなる第２符号列のそれぞれを、互いに対応する領域に埋め込んだ符号画像が形成された記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像生成装置、画像処理装置、プログラム及び記録媒体に関する。
【背景技術】
【０００２】
紙などの記録媒体の表面に、当該表面上の位置を表す情報を埋め込んだ符号画像を形成する技術が提案されている。このような技術によれば、媒体表面の一部分に形成された符号画像をカメラ等で読み取って、当該読み取った画像内に埋め込まれた情報を復元することによって、当該読み取った部分の記録媒体内における位置が特定される。
【０００３】
このような技術においては、符号画像に埋め込む情報として、例えばＭ系列などの符号列が用いられる。このような符号列は、その中の一部に基づいて、当該一部が符号列全体に占める位置を一意に特定可能であるという性質がある。符号画像全体にわたってこのような符号列が埋め込まれていれば、この性質を利用して、符号画像の一部分に埋め込まれた情報を復元することによって、当該部分が符号画像全体の中でどの位置に存在するのかが特定される。Ｍ系列を利用した媒体上の位置特定技術としては、例えば特許文献１，２，３及び４などが挙げられる。
【特許文献１】特表２００３−５１１７６２号公報
【特許文献２】特表２００４−５３５０１１号公報
【特許文献３】特開平１０−１８７９１２号公報
【特許文献４】特開２００７−１７９１１１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明は、符号画像に埋め込まれた情報を復元して、当該情報が埋め込まれた符号画像内の位置を特定する場合に、限られた長さの基本符号列を用いて、当該基本符号列が埋め込まれる範囲より広い範囲における位置が特定される符号画像を生成する画像生成装置及びプログラム、当該符号画像に埋め込まれた情報を復元する画像処理装置、並びに当該符号画像が形成された記録媒体を提供することを目的の一つとする。
【課題を解決するための手段】
【０００５】
請求項１記載の発明は、予め定められた長さの符号列であって、その一部に基づいて、当該一部が符号列内に占める位置を特定可能な基本符号列を取得する手段と、前記取得した基本符号列を複数繰り返してなる第１符号列、及び、前記基本符号列に補充符号列を付加した符号列を繰り返してなる第２符号列のそれぞれを、互いに対応する領域に埋め込んだ符号画像を生成する符号画像生成手段と、を含むことを特徴とする画像生成装置である。
【０００６】
請求項２記載の発明は、請求項１記載の画像生成装置であって、前記補充符号列は、予め定められた長さで０ビットが連続する符号列であって、前記基本符号列の前に付加されることを特徴とする。
【０００７】
請求項３記載の発明は、請求項２記載の画像生成装置であって、前記符号画像生成手段は、前記符号画像を分割してなる複数の単位領域のそれぞれに、予め定められた単位ビット長の符号列を埋め込んで前記符号画像を生成し、前記補充符号列は、前記単位ビット長の整数倍に相当する長さで０ビットが連続する符号列であることを特徴とする。
【０００８】
請求項４記載の発明は、請求項１から３のいずれか一項記載の画像生成装置であって、前記符号画像生成手段は、前記第１符号列及び第２符号列が埋め込まれる領域に対応する領域に、さらに、前記第１符号列に補充符号列を付加した符号列を繰り返してなる第３符号列、及び、前記第２符号列に補充符号列を付加した符号列を繰り返してなる第４符号列のそれぞれを埋め込んだ符号画像を生成することを特徴とする。
【０００９】
請求項５記載の発明は、予め定められた長さの符号列であって、その一部に基づいて、当該一部が符号列内に占める位置を特定可能な基本符号列を複数繰り返してなる第１符号列、及び、前記基本符号列に補充符号列を付加した符号列を繰り返してなる第２符号列のそれぞれを、互いに対応する領域に埋め込んだ符号画像の一部領域を読み取って得られる読み取り画像を取得する画像取得手段と、前記読み取り画像に埋め込まれた情報を復元して、前記第１符号列及び第２符号列それぞれにおいて互いに対応する位置を占める部分列を取得する手段と、前記各部分列が前記基本符号列内に占める位置を特定する手段と、前記特定した前記各部分列の位置に基づいて、前記第２符号列内における前記部分列の位置を算出する手段と、を含むことを特徴とする画像処理装置である。
【００１０】
請求項６記載の発明は、予め定められた長さの符号列であって、その一部に基づいて、当該一部が符号列内に占める位置を特定可能な基本符号列を取得する手段、及び前記取得した基本符号列を複数繰り返してなる第１符号列、及び、前記基本符号列に補充符号列を付加した符号列を繰り返してなる第２符号列のそれぞれを、互いに対応する領域に埋め込んだ符号画像を生成する符号画像生成手段、としてコンピュータを機能させるためのプログラムである。
【００１１】
請求項７記載の発明は、予め定められた長さの符号列であって、その一部に基づいて、当該一部が符号列内に占める位置を特定可能な基本符号列を複数繰り返してなる第１符号列、及び、前記基本符号列に補充符号列を付加した符号列を繰り返してなる第２符号列のそれぞれを、互いに対応する領域に埋め込んだ符号画像が形成された記録媒体である。
【発明の効果】
【００１２】
請求項１、５、６及び７記載の発明によれば、符号画像に埋め込まれた情報を復元して、当該情報が埋め込まれた符号画像内の位置を特定する場合に、限られた長さの基本符号列を用いて、当該基本符号列が埋め込まれる範囲より広い範囲における位置が特定される。
【００１３】
請求項２記載の発明によれば、符号画像に埋め込まれた情報を復元する際に、補充符号列に対応する部分が得られた場合に、当該部分が容易に特定される。
【００１４】
請求項３記載の発明によれば、単位領域ごとに符号画像に埋め込まれた符号列の復元及び位置の特定が行われる。
【００１５】
請求項４記載の発明によれば、請求項１記載の発明と比較して、さらに広い範囲における位置が特定される符号画像が生成される。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の実施の形態について、図面を参照しながら説明する。
【００１７】
まず、本実施形態に係る画像生成装置によって生成される、情報が埋め込まれた符号画像（以下、コード画像という）について、説明する。コード画像に埋め込む対象となる情報（以下、コード情報という）は、符号化された情報であって、ビット列によって表される。本実施形態に係る画像生成装置は、コード情報を埋め込んだコード画像を生成し、当該生成したコード画像をプリンタ等の画像形成装置に対して出力し、紙などの記録媒体上に当該コード画像を形成させる。これによって、コード画像が形成された記録媒体が作成される。記録媒体上に形成されたコード画像は、例えばスキャナやカメラなどの画像読み取り装置によって読み取られる。そして、本実施形態に係る画像処理装置は、当該読み取られたコード画像を解析して、その中に埋め込まれたコード情報を復元する。
【００１８】
具体的に、コード情報は、コード画像内における位置を特定するための情報（Ｘ方向の位置座標を示すＸ座標情報及びＹ方向の位置座標を示すＹ座標情報）を含んでいる。また、画像読み取り装置は、例えばペン型のデバイスの先端部分に内蔵されたカメラなどであって、記録媒体の表面に形成されたコード画像の一部分を読み取る。画像処理装置は、この読み取られた画像からＸ座標情報及びＹ座標情報を復元することによって、ペン型デバイスが記録媒体のどの位置に接しているかを特定する。
【００１９】
図１は、本実施形態におけるコード画像の一例を示す部分拡大図である。同図に示されるように、コード画像内には複数の単位領域（ブロック）が画定されている。すなわち、コード画像は予め定められた大きさの複数のブロックに分割されている。このブロックは、コード画像を格子状に分割してなる正方形の領域になっており、各ブロックには、予め定められた数の点画像（ドット画像）が含まれている。図１においては、このブロックを画定する線（各ブロックの境界）が実線で表されているが、この境界線は実際にはコード画像上には描画されない。本実施形態では、各ブロック内におけるドット画像の配置パターンによって、コード情報が表される。具体的に、各ブロック内には３行３列で計９箇所のドット配置位置が設定されており、この９箇所のうちのいずれか３箇所に実際にドット画像が配置されている。９箇所の中から３箇所を選択する組み合わせは９Ｃ３＝８４通り存在し、この数は２の６乗である６４を上回っているので、１個のブロックにつき６ビットの情報が埋め込まれることになる。なお、この図に示すコード情報の埋め込み方法は一例であって、本実施形態において、コード情報はその他の態様でコード画像内に埋め込まれることとしてもよい。
【００２０】
コード画像内に埋め込まれたコード情報の復元は、このブロック単位で実行される。すなわち、本実施形態に係る画像処理装置は、解析対象のコード画像を取得すると、コード画像内から検出された各ドット画像の位置に基づいて、コード画像内における各ブロックの位置を特定する。具体的に、画像処理装置は、各ブロックの境界を仮決定し、当該仮決定された境界に従って分割される各ブロック内に存在するドット画像の数をカウントする。このとき、仮決定されたブロック境界が正しければ、ドット画像の位置検出の際のエラーによって生じる例外を除いて、全てのブロック内に３個のドット画像が検出されるはずである。そこで、画像処理装置は、取得したコード画像内に、３個以外の数のドット画像を含むブロックが予め定められた閾値以上の割合で含まれている場合、仮決定したブロック境界が間違っていたと判定する。
【００２１】
そして、仮決定されたブロック境界が間違っていると判定された場合には、画像処理装置は、ブロック境界の位置をドット画像１個分（ここではブロック１辺の１／３）に対応する距離だけ予め定められた方向（Ｘ方向又はＹ方向）にずらして、再び各ブロック内のドット画像の数が予め定められた数に一致するかの判定を実行する。このような処理を繰り返すことによって、画像処理装置は、正しいブロック境界を判定し、コード画像を複数のブロックに分割する。そして、複数のブロックのそれぞれについて、当該ブロック内における３個のドット画像の配置パターンに対して予め対応づけられたビット列を、当該ブロックに埋め込まれているコード情報として復元する。
【００２２】
また、本実施形態では、画像読み取り装置によって読み取られた画像の回転を検出する（すなわち、コード情報が埋め込まれた際のコード画像本来の向きを特定する）ために、予め定められた特定のドット画像の配置パターンが、画像回転検出用パターンとしてコード画像内に配置される。そして、この画像回転検出用パターンを９０度ずつ回転させて得られる３種類の配置パターンについては、制限パターンとしてその使用が制限される。これらの４種類のドット画像の配置パターンは、回転させることで互いに一致し、かつ、回転させない状態では互いに異なるパターンになっている。そのため、本実施形態に係る画像処理装置は、コード画像を取得してその中に埋め込まれたコード情報を復元する際に、制限パターンを検出した場合には、当該制限パターンが画像回転検出用パターンに一致するように、取得したコード画像全体を回転させる。これにより、取得した画像の向きがコード画像本来の向きに補正される。
【００２３】
本実施形態においては、この画像回転検出用パターンを持つブロック（以下、画像回転検出用ブロックＢｌという）は、縦横それぞれの方向に４ブロックごとに繰り返し配置される。すなわち、コード画像の中から縦４行、横４列で計１６個のブロックを含む範囲が画像読み取り装置によって読み取られた場合、その中には１個の画像回転検出用ブロックＢｌが含まれることになる。したがって、最低限４行４列のブロックを含む画像が読み取られれば、その中に含まれる画像回転検出用パターンの向きによって、読み取られた画像の向きが特定されることになる。
【００２４】
以下、本実施形態において、符号画像内に埋め込まれるＸ座標情報及びＹ座標情報の具体例について、説明する。Ｘ座標情報及びＹ座標情報のそれぞれは、４個の符号列（以下、座標ブロック列という）によって表される。具体的に、Ｘ座標情報はＸ座標ブロック列Ｘ１，Ｘ２，Ｘ３及びＸ４によって表され、Ｙ座標情報はＹ座標ブロック列Ｙ１，Ｙ２，Ｙ３及びＹ４によって表される。また、後述するように、Ｘ座標情報及びＹ座標情報は、画像回転検出用ブロックＢｌを除く各ブロックに対して、１ブロック当たり３ビットの情報を単位として埋め込まれる。したがって、Ｘ座標情報及びＹ座標情報のそれぞれを構成する座標ブロック列は、この３ビットのビット列を単位として構成される。すなわち、各座標ブロック列は、各桁が０から７までの数字によって表される数列に相当し、符号画像内において順に並んだ各ブロックに対して、この各桁の数字を表す３ビットの情報が順に埋め込まれることになる。
【００２５】
これら４個の座標ブロック列のそれぞれが埋め込まれるブロックの位置は、画像回転検出用ブロックＢｌの位置に応じて決定される。図２は、Ｘ座標ブロック列及びＹ座標ブロック列のそれぞれが埋め込まれる領域と、画像回転検出用ブロックＢｌと、の位置関係を示すブロック配置図である。同図に示されるように、Ｘ座標情報を構成する４個の座標ブロック列は、それぞれＸ方向に沿って延在するブロック行領域に埋め込まれている。そして、これらの座標ブロック列のうち、第１Ｘ座標ブロック列Ｘ１は、画像回転検出用ブロックＢｌを含んだブロック行領域Ｒｘ１に埋め込まれている。さらに、その下のブロック行領域Ｒｘ２に第２Ｘ座標ブロック列Ｘ２が、ブロック行領域Ｒｘ２の一つ下のブロック行領域Ｒｘ３に第３Ｘ座標ブロック列Ｘ３が、ブロック行領域Ｒｘ３の一つ下のブロック行領域Ｒｘ４に第４Ｘ座標ブロック列Ｘ４が、それぞれ埋め込まれている。
【００２６】
また、Ｙ座標情報を構成する４個の座標ブロック列は、それぞれＹ方向に沿って延在するブロック列領域に埋め込まれている。具体的に、第１Ｙ座標ブロック列Ｙ１は、画像回転検出用ブロックＢｌを含んだブロック列領域Ｒｙ１に埋め込まれている。さらに、その右隣のブロック列領域Ｒｙ２に第２Ｙ座標ブロック列Ｙ２が、ブロック列領域Ｒｙ２の右隣のブロック列領域Ｒｙ３に第３Ｙ座標ブロック列Ｙ３が、ブロック列領域Ｒｙ３の右隣のブロック列領域Ｒｙ４に第４Ｙ座標ブロック列Ｙ４が、それぞれ埋め込まれている。
【００２７】
ただし、画像回転検出用ブロックＢｌ自体には、画像回転検出用パターンが配置されているため、Ｘ座標情報及びＹ座標情報は埋め込まれない。また、Ｘ座標情報を構成する各座標ブロック列は、Ｘ方向に沿って互いに対応する領域に埋め込まれる必要がある。つまり、各ブロック行領域に埋め込まれる座標ブロック列の長さ及びＸ方向に沿った位置を揃える必要がある。そのため、画像回転検出用ブロックＢｌとＸ方向に沿った位置が同じブロック（すなわち、ブロック列領域Ｒｙ１を構成するブロック）内にも、Ｘ座標情報は埋め込まれない。同様に、Ｙ座標情報を構成する各座標ブロック列も、Ｙ方向に沿って互いに対応する領域に埋め込まれる必要があるため、画像回転検出用ブロックＢｌとＹ方向に沿った位置が同じブロック（すなわち、ブロック行領域Ｒｘ１を構成するブロック）内にも、Ｙ座標情報は埋め込まれない。
【００２８】
ここで、ブロック行領域Ｒｘ１及びブロック列領域Ｒｙ１のいずれにも属さない各ブロックには、Ｘ座標ブロック列及びＹ座標ブロック列の双方が埋め込まれることになる。具体的に、このようなブロック内のドット画像配置パターンによって表される６ビットの情報のうち、ここでは上位３ビットがＸ座標ブロック列を構成し、下位３ビットがＹ座標ブロック列を構成するものとする。同様に、ブロック行領域Ｒｘ１を構成するブロックのうち、画像回転検出用ブロックＢｌを除く各ブロックにも６ビットの情報が埋め込まれており、そのうちの上位３ビットが第１Ｘ座標ブロック列Ｘ１を構成する。また、ブロック列領域Ｒｙ１を構成するブロックのうち、画像回転検出用ブロックＢｌを除く各ブロックにも６ビットの情報が埋め込まれており、そのうちの下位３ビットが第１Ｙ座標ブロック列Ｙ１を構成する。なお、ブロック行領域Ｒｘ１を構成するブロックに埋め込まれた情報の下位３ビット、及びブロック列領域Ｒｙ１を構成するブロックに埋め込まれた情報の上位３ビットは、Ｘ座標情報及びＹ座標情報以外の、他の情報を表すために用いられてよい。
【００２９】
具体例として、画像読み取り装置がコード画像を読み取って得られる４行４列のブロック範囲（以下、読み取り領域という）に含まれるブロックのうち、画像回転検出用ブロックＢｌを除いた各ブロックに埋め込まれたコード情報を復元した結果が、図３に示すものだったとする。この図においては、画像回転検出用ブロックＢｌを除く各ブロックから復元された６ビットの情報によって表される０〜６３の範囲の数値が、各ブロック内に示されている。このとき、各ブロックに埋め込まれたコード情報の上位３ビットによって表される数値は、各ブロックの数値を８で割った商に対応し、図４（ａ）に示すものになる。この図の例では、第３Ｘ座標ブロック列Ｘ３の部分列として「５４０」が、第４Ｘ座標ブロック列Ｘ４の部分列として「５２２」が、第１Ｘ座標ブロック列Ｘ１の部分列として「０６６」が、第２Ｘ座標ブロック列Ｘ２の部分列として「５５４」が、それぞれ取得される。なお、ここではこれらの部分列の値は、いずれも各桁が３ビットに対応する８進数で表されている。すなわち、各部分列はそれぞれ３ブロック分に埋め込まれた情報に対応する９ビットの情報になっている。これら４個の部分列がＸ座標ブロック列全体の中のどの位置に現れるかが特定されることによって、読み取り領域のＸ方向における位置（Ｘ座標）が特定される。また、ブロック列領域Ｒｙ１から得られた「７」、「５」、「６」はＸ座標情報以外の情報を表している。
【００３０】
さらに、図３に示されるコード情報の下位３ビットによって表される数値は、各ブロックの数値を８で割った余りに対応し、図４（ｂ）に示すものになる。この例では、第３Ｙ座標ブロック列Ｙ３の部分列として８進数の「１４１」が、第４Ｙ座標ブロック列Ｙ４の部分列として「３６３」が、第１Ｙ座標ブロック列Ｙ１の部分列として「６６３」が、第２Ｙ座標ブロック列Ｙ２の部分列として「４２６」が、それぞれ取得される。これら４個の部分列がＹ座標ブロック列全体の中のどの位置に現れるかが特定されることによって、読み取り領域のＹ方向における位置（Ｙ座標）が特定される。また、ブロック行領域Ｒｘ１から得られた「１」、「１」、「１」はＹ座標情報以外の情報を表している。
【００３１】
次に、本実施形態における各Ｘ座標ブロック列の具体的な内容について説明する。なお、以降はＸ座標ブロック列を例として説明するが、Ｙ座標ブロック列についても同様に生成される符号列であってよい。
【００３２】
まず最初に、第１Ｘ座標ブロック列Ｘ１と第２Ｘ座標ブロック列Ｘ２とによってＸ座標を表す場合について、図５に基づいて説明する。同図に示されるように、第１Ｘ座標ブロック列Ｘ１は、第１基本ブロック列Ｍ１を複数回繰り返してなるブロック列になっている。すなわち、第１Ｘ座標ブロック列Ｘ１は、｛Ｍ１，Ｍ１，Ｍ１，・・・，Ｍ１｝と表される。ここで、第１基本ブロック列Ｍ１は、予め定められたビット長（周期）を持つビット列（以下、単位ビット列という）から構成されるブロック列である。この単位ビット列は、その一部に基づいて、当該一部が単位ビット列内に占める位置を特定可能なビット列である。すなわち、単位ビット列全体の中から連続する予め定められた長さの複数ビットで構成される部分列を切り出した場合に、当該切り出された部分列が全ビット列中の他の位置に存在する部分列とは一致せず、それゆえ、ある部分列が取得されると、当該部分列が全ビット列の中のどの位置に存在するか（すなわち、当該部分列が全ビット列内において何番目のビットから開始するか）が一意に特定される。このような性質を持つビット列としては、ｐ次のＭ系列（疑似ランダム系列）が存在する。ｐ次のＭ系列のビット長は、（２ｐ−１）で表され、その中からｐビットの長さの部分列を取り出した場合に、当該部分列のＭ系列内の位置が特定される。
【００３３】
次に、この単位ビット列から第１基本ブロック列Ｍ１を構成する方法を説明する。第１基本ブロック列Ｍ１は、この単位ビット列を、各ブロックに埋め込むべきＸ座標情報のビット数（以下、ブロック当たりビット数ｂという）に相当する回数だけ繰り返してなるビット列である。ここで、ブロック当たりビット数ｂが基本ビット列のビット長２ｐ−１の約数になっていなければ、第１基本ブロック列Ｍ１をブロック当たりビット数ｂずつ切り出した場合に、２回目以降の単位ビット列は、１回目の単位ビット列とは異なる区切りで切り出され、各ブロックに埋め込まれることになる。
【００３４】
具体例として、Ｍ系列の次数ｐ＝３とすると、Ｍ系列の長さは７である。この場合は、約数としては、１か７しか存在しない。このＭ系列のビット列を、｛ｂ１，ｂ２，ｂ３，ｂ４，ｂ５，ｂ６，ｂ７｝と表しておく。仮に、ブロック当たりビット数ｂを２とし、それぞれ２ビットの情報が埋め込まれるブロックを括弧［］で表すとすると、第１基本ブロック列Ｍ１は、
｛［ｂ１，ｂ２］，［ｂ３，ｂ４］，［ｂ５，ｂ６］，［ｂ７，ｂ１］，［ｂ２，ｂ３］，［ｂ４，ｂ５］，［ｂ６，ｂ７］｝
となり、Ｍ系列２周期を使い、７ブロックでブロック表現の１周期が形成されることとなる。これら７ブロックのそれぞれは、すべて他のブロックとは異なるビットの並びを持つ。さらにブロック当たりビット数ｂを３とした場合も、
｛［ｂ１，ｂ２，ｂ３］，［ｂ４，ｂ５，ｂ６］，［ｂ７，ｂ１，ｂ２］，［ｂ３，ｂ４，ｂ５］，［ｂ６，ｂ７，ｂ１］，［ｂ２，ｂ３，ｂ４］，［ｂ５，ｂ６，ｂ７］｝
となり、Ｍ系列３周期を使い、７ブロックでブロック表現の１周期が形成される。同様に、（２ｐ−１）の長さのＭ系列を、２ｐ−１の約数でないブロック当たりビット数ｂの数だけ繰り返すと、ｂビットを１単位（ブロック）として、ブロック長Ｔ１が（２ｐ−１）の第１基本ブロック列Ｍ１が得られる。すなわち、単位ビット列（Ｍ系列）のビット長と、それをブロック単位で表現した第１基本ブロック列Ｍ１のブロック長とは、同じ数となる。
【００３５】
単位ビット列から連続するｐビットの部分列を取り出した場合と同様に、第１基本ブロック列Ｍ１の中から連続する複数ブロックで構成される部分列（部分ブロック列）を切り出した場合、当該切り出された部分列は、第１基本ブロック列Ｍ１中の他の位置に存在する部分列とは一致せず、それゆえ、ある部分列が取得されると、当該部分列が第１基本ブロック列Ｍ１の中のどの位置に存在するか（すなわち、当該部分列が第１基本ブロック列Ｍ１内において何番目のブロックから開始するか）が一意に特定される。このとき、第１基本ブロック列Ｍ１内の位置を特定するための部分列は、全体としてｐビットの情報を含む連続したブロックからなるブロック列であればよい。例えば上述した３次のＭ系列の場合、３ビットのビット列を含んだブロック列が部分列として第１基本ブロック列Ｍ１から切り出されれば、当該切り出された部分列の第１基本ブロック列Ｍ１内における位置が特定される。したがって、ｂ＝２の場合には連続する２個のブロック、ｂ＝３の場合には１個のブロックが部分ブロック列として取得されれば、当該部分ブロック列の第１基本ブロック列Ｍ１内の位置が一意に特定されることとなる。
【００３６】
本実施形態では、前述したように読み取り領域である４行４列のブロック範囲から得られる各Ｘ座標ブロック列の部分列のビット長が９ビットなので、第１基本ブロック列Ｍ１を構成する単位ビット列は、９次のＭ系列であることとする。こうすれば、読み取り領域内の情報を復元して得られる各Ｘ座標ブロック列の部分列に基づいて、当該部分列の第１基本ブロック列Ｍ１内における位置が特定される。なお、この場合の第１基本ブロック列Ｍ１のブロック長Ｔ１は、Ｍ系列のビット長と同じであるので、２９−１＝５１１になる。また、ｐ次のＭ系列内において、「０」ビットが連続する最大の長さは、（ｐ−１）である。つまり、９次のＭ系列においては、最も長く連続する場合で８個の「０」ビットが並ぶことになる。ここでは、この「０」ビットが最も長く連続する部分が先頭又は最後に位置するように、ブロック長Ｔ１の第１基本ブロック列Ｍ１が決定されることとする。
【００３７】
一方、補充ブロック列Ｄ１は、ｍ１個の「０」ブロックが連続してなるブロック列である。ここで、「０」ブロックとは、ブロックを表現するビットがすべて０であるブロックを指している。この補充ブロック列Ｄ１は、第１Ｘ座標ブロック列Ｘ１に含まれる第１基本ブロック列Ｍ１に対して、第２Ｘ座標ブロック列Ｘ２に含まれる第１基本ブロック列Ｍ１の位置をシフトするために用いられる。
【００３８】
図５に示されるように、第２Ｘ座標ブロック列Ｘ２は、第１Ｘ座標ブロック列Ｘ１に対して、その中に含まれる１個の第１基本ブロック列Ｍ１につき１個の補充ブロック列Ｄ１を挿入した構成のブロック列になっている。すなわち、第２Ｘ座標ブロック列Ｘ２は、第１基本ブロック列Ｍ１に補充ブロック列Ｄ１を付加したブロック列を繰り返してなるブロック列となる。ここで、補充ブロック列Ｄ１は、各第１基本ブロック列Ｍ１の先頭側に付加されることとする。よって、第２Ｘ座標ブロック列Ｘ２は、｛Ｄ１，Ｍ１，Ｄ１，Ｍ１，Ｄ１，Ｍ１，・・・，Ｄ１，Ｍ１｝と表される。
【００３９】
第１Ｘ座標ブロック列Ｘ１及び第２Ｘ座標ブロック列Ｘ２が以上説明したように構成されることによって、第１Ｘ座標ブロック列Ｘ１内におけるｎ番目の第１基本ブロック列Ｍ１と、第２Ｘ座標ブロック列Ｘ２内におけるｎ番目の第１基本ブロック列Ｍ１と、は、各Ｘ座標ブロック列の先頭から数えた位置が、ｎ×ｍ１ブロック分だけずれることになる。なぜなら、第２Ｘ座標ブロック列Ｘ２内において、ｎ番目の第１基本ブロック列Ｍ１の前には、第１Ｘ座標ブロック列Ｘ１と比較して長さｍ１ブロックの補充ブロック列Ｄ１がｎ個分付加されているからである。したがって、第２Ｘ座標ブロック列Ｘ２から取得された部分列の第１基本ブロック列Ｍ１内における位置が、第１Ｘ座標ブロック列Ｘ１内の当該部分列に対応する位置から取得された部分列の第１基本ブロック列Ｍ１内における位置に対して、何ブロック分ずれているかによって、この部分列が、第２Ｘ座標ブロック列Ｘ２内の何番目の第１基本ブロック列Ｍ１から得られたかが特定される。
【００４０】
ただし、ずれ量ｎ×ｍ１が第１基本ブロック列Ｍ１のブロック長Ｔ１を超えると、第２Ｘ座標ブロック列Ｘ２内に、第１Ｘ座標ブロック列Ｘ１内の第１基本ブロック列Ｍ１に対するずれ量が同じ部分列が複数回現れてしまうことになり、部分列同士の位置ずれ量だけでは当該部分列の位置が特定されないことになる。そのため、第１Ｘ座標ブロック列Ｘ１及び第２Ｘ座標ブロック列Ｘ２の２個の座標ブロック列だけでＸ座標を表す場合、第２Ｘ座標ブロック列Ｘ２内において第１基本ブロック列Ｍ１が繰り返される回数Ｎ１は、Ｎ１≦Ｔ１／ｍ１を満たすことが要請される。
【００４１】
ここで、第１Ｘ座標ブロック列Ｘ１及び第２Ｘ座標ブロック列Ｘ２のブロック長が長ければ長いほど、この２つの座標ブロック列を用いてより広い範囲のＸ座標が表現される。例えばｍ１＝１、Ｎ１＝Ｔ１／ｍ１＝５１１とした場合には、第２Ｘ座標ブロック列Ｘ２のブロック長Ｔ２は
Ｔ２＝（ｍ１＋Ｔ１）・Ｎ１＝（１＋５１１）・５１１＝２６１６３２
となり、９次のＭ系列を利用して最大で２６１６３２までの座標値が表現されることとなる。このとき、第１Ｘ座標ブロック列Ｘ１のブロック長もＴ２に一致し、第１Ｘ座標ブロック列Ｘ１は第１基本ブロック列Ｍ１を（Ｎ１＋１）回繰り返してなるブロック列となる。
【００４２】
さらに本実施形態では、第１Ｘ座標ブロック列Ｘ１及び第２Ｘ座標ブロック列Ｘ２に対して、第３Ｘ座標ブロック列Ｘ３及び第４Ｘ座標ブロック列Ｘ４を組み合わせることによって、より大きな範囲の座標値が表現されることとしている。図６は、この場合の各Ｘ座標ブロック列の構成例を示している。具体的に、第３Ｘ座標ブロック列Ｘ３及び第４Ｘ座標ブロック列Ｘ４は、それぞれ上述したブロック長Ｔ２の第１Ｘ座標ブロック列Ｘ１及び第２Ｘ座標ブロック列Ｘ２を基本単位として、これらのブロック列と補充ブロック列Ｄ２とを組み合わせて生成される。そこで以下では、第１基本ブロック列Ｍ１を（Ｎ１＋１）回繰り返してなるブロック長Ｔ２のブロック列を第２基本ブロック列Ｍ２とし、補充ブロック列Ｄ１と第１基本ブロック列Ｍ１とを連接したブロック列をＮ１回繰り替えしてなるブロック長Ｔ２のブロック列を第３基本ブロック列Ｍ３と表記する。
【００４３】
この場合、第１Ｘ座標ブロック列Ｘ１は、第２基本ブロック列Ｍ２を（Ｎ２＋１）回繰り返してなるブロック列とする。すなわち、第１Ｘ座標ブロック列Ｘ１は、｛Ｍ２，Ｍ２，Ｍ２，・・・，Ｍ２｝と表される。また、第２Ｘ座標ブロック列Ｘ２は、第３基本ブロック列Ｍ３を（Ｎ２＋１）回繰り返してなるブロック列とする。すなわち、第２Ｘ座標ブロック列Ｘ２は、｛Ｍ３，Ｍ３，Ｍ３，・・・，Ｍ３｝と表される。
【００４４】
そして、第３Ｘ座標ブロック列Ｘ３は、第２基本ブロック列Ｍ２の先頭側に補充ブロック列Ｄ２を付加したブロック列をＮ２回繰り返してなるブロック列とする。すなわち、第３Ｘ座標ブロック列Ｘ３は、｛Ｄ２，Ｍ２，Ｄ２，Ｍ２，Ｄ２，Ｍ２，・・・，Ｄ２，Ｍ２｝と表される。また、第４Ｘ座標ブロック列Ｘ４は、第３基本ブロック列Ｍ３の先頭側に補充ブロック列Ｄ２を付加したブロック列をＮ２回繰り返してなるブロック列とする。すなわち、第４Ｘ座標ブロック列Ｘ４は、｛Ｄ２，Ｍ３，Ｄ２，Ｍ３，Ｄ２，Ｍ３，・・・，Ｄ２，Ｍ３｝と表される。なお、この場合に第２基本ブロック列Ｍ２及び第３基本ブロック列Ｍ３に付加される補充ブロック列Ｄ２は、補充ブロック列Ｄ１と同様に、ｂ個の０ビットからなる「０」ブロックがｍ２個連続してなるブロック列である。補充ブロック列Ｄ２のブロック長ｍ２は、第２基本ブロック列Ｍ２に含まれる補充ブロック列Ｄ１のブロック長ｍ１と同じでもよいし、異なってもよい。
【００４５】
図６に示されるように、第１Ｘ座標ブロック列Ｘ１内の第２基本ブロック列Ｍ２と、第２Ｘ座標ブロック列Ｘ２内の第３基本ブロック列Ｍ３と、は、各Ｘ座標ブロック列の先頭から数えて同じ位置に現れている。したがって、前述した図５の例と同様にして、各Ｘ座標ブロック列から部分列が得られた場合に、当該部分列の第２基本ブロック列Ｍ２及び第３基本ブロック列Ｍ３内における先頭から数えた位置が特定される。また、第３Ｘ座標ブロック列Ｘ３内の第２基本ブロック列Ｍ２と、第４Ｘ座標ブロック列Ｘ４内の第３基本ブロック列Ｍ３と、についても、各Ｘ座標ブロック列の先頭から数えて同じ位置に現れている。したがって、各Ｘ座標ブロック列から得られる部分列の、第２基本ブロック列Ｍ２及び第３基本ブロック列Ｍ３内における先頭から数えた位置も、同様にして特定される。
【００４６】
さらに、第３Ｘ座標ブロック列Ｘ３及び第４Ｘ座標ブロック列Ｘ４は、第１基本ブロック列Ｍ１がそれぞれ第２基本ブロック列Ｍ２又は第３基本ブロック列Ｍ３に置き換えられたことを除けば、第２Ｘ座標ブロック列Ｘ２と同様の構成になっている。したがって、第２基本ブロック列Ｍ２を（Ｎ２＋１）回繰り返してなる第１Ｘ座標ブロック列Ｘ１と、第３Ｘ座標ブロック列Ｘ３と、の間の関係、及び、第３基本ブロック列Ｍ３を（Ｎ２＋１）回繰り返してなる第２Ｘ座標ブロック列Ｘ１と、第４Ｘ座標ブロック列Ｘ４と、の間の関係は、前述した第２基本ブロック列Ｍ２と第３基本ブロック列Ｍ３との間の関係に類似している。すなわち、第２Ｘ座標ブロック列Ｘ２内におけるｎ番目の第３基本ブロック列Ｍ３と、第４Ｘ座標ブロック列Ｘ４内におけるｎ番目の第３基本ブロック列Ｍ３と、は、各Ｘ座標ブロック列の先頭から数えた位置が、ｎ×ｍ２ブロック分だけずれることになる。そこで、第２Ｘ座標ブロック列Ｘ２から取得された部分列の第２基本ブロック列Ｍ２内における位置が、第４Ｘ座標ブロック列Ｘ４内の当該部分列に対応する位置から取得された部分列の第２基本ブロック列Ｍ２内における位置に対して、どの程度ずれているかによって、この部分列が、第４Ｘ座標ブロック列Ｘ４内の何番目の第２基本ブロック列Ｍ２から得られたかが特定される。これらの情報を用いて、最終的に、各Ｘ座標ブロック列の互いに対応する位置から得られた部分列に基づいて、当該部分列がＸ座標ブロック列全体の中のどの位置に存在するかが特定されることになる。
【００４７】
ここで、このようなＸ座標情報を取得する際の計算手順の具体例について、説明する。ここでは具体例として、各Ｘ座標ブロック列の部分列として、図４（ａ）に示した情報が得られた場合について、説明する。まず本実施形態に係る画像処理装置は、各部分列の第１基本ブロック列Ｍ１内における位置（各部分列が第１基本ブロック列Ｍ１の先頭から数えて何番目のブロックから開始するか）を特定する。
【００４８】
以下では、第１〜第４Ｘ座標ブロック列Ｘ１〜Ｘ４のそれぞれから取得された部分列の第１基本ブロック列Ｍ１内における先頭位置を、それぞれＰｘ１，Ｐｘ２，Ｐｘ３及びＰｘ４と表記する。ここでは具体例として、第１Ｘ座標ブロック列Ｘ１から取得された「０６６」で表される部分列は、第１基本ブロック列Ｍ１の先頭から数えて１３２番目のブロックから開始しているものとする（すなわち、Ｐｘ１＝１３２）。また、同様に、Ｐｘ２＝１９０，Ｐｘ３＝３１２，Ｐｘ４＝４１とする。これらの位置情報は、予め画像処理装置に保持されている、部分列と位置とを対応づけるテーブルを参照することによって、特定される。
【００４９】
続いて画像処理装置は、第１Ｘ座標ブロック列Ｘ１と第２Ｘ座標ブロック列Ｘ２との間の比較を行う。この両者から得られた部分列の間の位置ずれ量ｄ１は、計算式
ｄ１＝（Ｐｘ１−Ｐｘ２）  ｍｏｄ  Ｔ１
によって算出される。ここで、ｘ  ｍｏｄ  ｙは、ｘをｙで割った余り（０からｙ−１までのいずれかの値）を示している。上述した数値を当てはめると、
ｄ１＝（１３２−１９０）  ｍｏｄ  ５１１＝４５３
と算出される。これによって、部分列は、第２Ｘ座標ブロック列Ｘ２内のいずれかの第３基本ブロック列Ｍ３内において、第（ｄ１／ｍ１）番目の第１基本ブロック列Ｍ１内に存在することが分かる。したがって、第３基本ブロック列Ｍ３内における部分列の先頭位置ｓ１は、計算式
ｓ１＝（ｄ１／ｍ１−１）（Ｔ１＋ｍ１）＋（Ｐｘ２＋ｍ１）
によって算出される。上述した数値を当てはめると、
ｓ１＝（４５３／１−１）（５１１＋１）＋（１９０＋１）＝２３１６１５
と算出される。なお、ここではｍ１＝１、Ｎ１＝５１１としている。
【００５０】
次に画像処理装置は、上述した第１Ｘ座標ブロック列Ｘ１と第２Ｘ座標ブロック列Ｘ２との間の比較と同様にして、第３Ｘ座標ブロック列Ｘ３と第３Ｘ座標ブロック列Ｘ３との間の比較を行い、両者から得られた部分列の間の位置ずれ量ｄ２を算出する。具体的に、ｄ２は、計算式
ｄ２＝（Ｐｘ３−Ｐｘ４）  ｍｏｄ  Ｔ１
によって算出される。上述した数値を当てはめると、
ｄ２＝（３１２−４１）  ｍｏｄ  ５１１＝２７１
と算出される。これによって、部分列は、第４Ｘ座標ブロック列Ｘ４内のいずれかの第３基本ブロック列Ｍ３内において、第（ｄ２／ｍ１）番目の第１基本ブロック列Ｍ１内に存在することが分かる。したがって、第３基本ブロック列Ｍ３内における部分列の先頭位置ｓ２は、計算式
ｓ２＝（ｄ２／ｍ１−１）（Ｔ１＋ｍ１）＋（Ｐｘ４＋ｍ１）
によって算出される。上述した数値を当てはめると、
ｓ２＝（２７１／１−１）（５１１＋１）＋（４１＋１）＝１３８２８２
と算出される。
【００５１】
さらに画像処理装置は、これまでの計算によって算出されたｓ１とｓ２との間の位置ずれ量ｄ３を算出する。具体的に、位置ずれ量ｄ３は、計算式
ｄ３＝（ｓ１−ｓ２）  ｍｏｄ  Ｔ２
によって算出される。具体的には、ｄ３＝９３３３３と算出される。これによって、部分列は、第４Ｘ座標ブロック列Ｘ４内において、第（ｄ３／ｍ２）番目の第３基本ブロック列Ｍ３内に存在することが分かる。したがって、第４Ｘ座標ブロック列Ｘ４内における部分列の先頭位置を表す値ｘｂは、計算式
ｘｂ＝（ｄ３／ｍ２−１）（Ｔ２＋ｍ２）＋（ｓ２＋ｍ２）
によって算出される。上述した数値を当てはめると、
ｘｂ＝（９３３３３／１−１）（５１２・５１１＋１）＋（１３８２８２＋１）
＝２４４１８８６９４３９
と算出される。なお、ここではｍ２＝１としている。また、Ｔ２＝Ｎ１（Ｎ１＋１）である。このｘｂの値が、第４Ｘ座標ブロック列Ｘ４内における読み取られた部分列の位置を示すＸ座標値となる。
【００５２】
以下、本発明の一実施形態に係る画像生成装置及び画像処理装置の構成例について、説明する。
【００５３】
図７は、本実施形態に係る画像生成装置１の構成例を示す図である。画像生成装置１は、制御部１１と、記憶部１２と、操作部１３と、表示部１４と、を含んで構成され、画像形成装置２と接続されている。
【００５４】
制御部１１は、例えばＣＰＵ等であって、記憶部１２に格納されるプログラムに従って各種の情報処理を実行する。記憶部１２は、例えばＲＡＭやＲＯＭ等のメモリ素子、ハードディスクなどを含んで構成され、制御部１１によって実行されるプログラムや、各種のデータを保持する。また、記憶部１２は、制御部１１のワークメモリとしても動作する。
【００５５】
操作部１３は、例えばキーボードやマウス等であって、利用者の指示操作を受け付けて、当該指示操作の内容を制御部１１に出力する。表示部１４は、例えば液晶ディスプレイ等であり、制御部１１からの指示に従って、画像の表示を行う。
【００５６】
画像形成装置２は、プリンタ等であって、画像生成装置１から入力される指示に従って、紙などの記録媒体上に画像を形成する。
【００５７】
画像生成装置１は、機能的に、図８に示すように、文書画像取得部２１と、コード情報取得部２２と、コード画像生成部２３と、画像合成部２４と、を含んで構成される。これらの機能は、例えば制御部１１が記憶部１２に格納されるプログラムを実行することによって実現される。このプログラムは、例えばインターネット等の通信手段を介して提供されてもよいし、光ディスク等の各種のコンピュータ読み取り可能な情報記憶媒体に格納されて提供されてもよい。
【００５８】
文書画像取得部２１は、記録媒体に形成する対象となる文書画像を取得する。この文書画像は、予め記憶部１２に記憶された画像であってもよいし、利用者がアプリケーションプログラム等を実行して作成した画像であってもよい。
【００５９】
コード情報取得部２２は、コード画像内に埋め込むべきコード情報を取得する。本実施形態では、ｐ次のＭ系列をｂ回繰り返してなるブロック列が、第１基本ブロック列Ｍ１として記憶部１２内に予め記憶されていることとする。コード情報取得部２２は、この第１基本ブロック列Ｍ１を記憶部１２から読み出して、当該読み出した第１基本ブロック列Ｍ１を用いて上述した各Ｘ座標ブロック列及びこれらと同様のＹ座標ブロック列を生成することにより、Ｘ座標情報及びＹ座標情報を取得する。ここでｂは、１ブロック当たりに埋め込む情報のビット長であって、ｐは、後述する画像読み取り装置４が読み取る画像範囲内に含まれるＸ座標情報及びＹ座標情報の部分列のビット長である。また、コード情報取得部２２は、コード画像が形成される記録媒体を特定するための媒体識別情報なども、コード情報として取得することとしてもよい。
【００６０】
コード画像生成部２３は、コード情報取得部２２によって取得されたコード情報に応じて、当該コード情報を埋め込んだコード画像を生成する。このコード画像は、前述したように、例えばコード画像を分割して得られる複数のブロックそれぞれに含まれるドット画像の配置パターンによって、埋め込み対象となるコード情報を表す画像である。
【００６１】
画像合成部２４は、文書画像取得部２１によって取得された文書画像に対して、コード画像生成部２３によって生成されたコード画像を背景画像として重ね合わせることによって、画像形成の対象となる合成画像を生成する。そして、生成された合成画像を画像形成装置２に対して出力する。画像形成装置２は、この出力された合成画像を、紙などの記録媒体上に形成する。こうして、文書画像とともに、コード情報が埋め込まれたコード画像が形成された記録媒体が作成される。
【００６２】
次に、本実施形態に係る画像処理装置３について、説明する。図９は、画像処理装置３の構成例を示す図である。画像処理装置３は、制御部３１と、記憶部３２と、操作部３３と、表示部３４と、を含んで構成され、画像読み取り装置４と接続されている。なお、制御部３１、記憶部３２、操作部３３、及び表示部３４は、それぞれ制御部１１、記憶部１２，操作部１３、及び表示部１４と同様の構成であってよい。
【００６３】
画像読み取り装置４は、例えばペン型の筐体に内蔵された小型カメラ等であって、記録媒体の表面に形成されている画像を読み取って、当該読み取った画像を画像処理装置３に対して出力する。ここでは前述したように、画像読み取り装置４は、コード画像内に含まれる４行４列のブロック範囲を読み取り領域として、画像の読み取りを行うこととする。
【００６４】
画像処理装置３は、機能的に、図１０に示すように、読み取り画像取得部４１と、ドット画像検出部４２と、ブロック特定部４３と、回転補正部４４と、コード情報復元部４５と、Ｘ座標値算出部４６と、Ｙ座標値算出部４７と、を含んで構成される。
【００６５】
読み取り画像取得部４１は、画像読み取り装置４が記録媒体表面に形成された画像を読み取って得られる読み取り画像を取得する。
【００６６】
ドット画像検出部４２は、パターンマッチング処理等の画像処理によって、読み取り画像取得部４１が取得した読み取り画像内に含まれるドット画像の位置を検出する。
【００６７】
ブロック特定部４３は、前述した方法により、ドット画像検出部４２によって検出された各ドット画像の位置に基づいて、各ブロック内のドット画像の数が予め定められた数に一致するように、各ブロックの境界を特定する。
【００６８】
回転補正部４４は、ブロック特定部４３によって特定された各ブロック内に含まれるドット画像の配置パターンの中に、画像回転検出用パターン又は制限パターンが含まれているかを判定する。そして、制限パターンが検出された場合には、この制限パターンが画像回転検出用パターンに一致するように、読み取り画像取得部４１が取得した読み取り画像を９０度単位で回転する補正を行う。これにより、読み取り画像の向きが特定され、画像生成装置１によって生成されたコード画像本来の向きに補正される。一方、制限パターンが検出されず、画像回転検出用パターンが検出された場合には、読み取り画像の向きは正しいことになるので、このような回転補正を行う必要はない。
【００６９】
コード情報復元部４５は、回転補正部４４によって回転補正が行われた読み取り画像に対して、当該読み取り画像内に埋め込まれたコード情報の復元を行う。具体的に、コード情報復元部４５は、まずブロック特定部４３によって特定された各ブロック内におけるドット画像の配置パターンに基づいて、ブロックごとに埋め込まれたコード情報を復元する。そして、各ブロックに埋め込まれた６ビットの情報を上位３ビットと下位３ビットとに分離することによって、Ｘ座標情報（４個のＸ座標ブロック列のそれぞれに含まれる、３ブロック長の４個の部分列）及びＹ座標情報（４個のＹ座標ブロック列のそれぞれに含まれる、３ブロック長の４個の部分列）を取得する。
【００７０】
Ｘ座標値算出部４６は、コード情報復元部４５によって復元されたＸ座標情報に基づいて、画像読み取り装置４が読み取った読み取り画像のコード画像内における位置を示すＸ座標値を算出する。また、Ｙ座標値算出部４７は、同じくコード情報復元部４５によって復元されたＹ座標情報に基づいて、画像読み取り装置４が読み取った読み取り画像のコード画像内における位置を示すＹ座標値を算出する。こうして、コード画像内における読み取り画像の位置を示すＸ座標値とＹ座標値の組が算出される。
【００７１】
ここで、Ｘ座標値算出部４６がＸ座標値を算出する処理の流れの一例を、図１１のフロー図に基づいて説明する。なお、Ｙ座標値算出部４７も、同様の手順によってＹ座標値を算出することとしてよい。
【００７２】
まずＸ座標値算出部４６は、コード情報復元部４５によって得られた４個の部分列のそれぞれについて、第１基本ブロック列Ｍ１内におけるブロック単位の位置を示す情報を取得する（Ｓ１）。この情報は、前述したように、予め記憶部３２に記憶されたテーブルを参照することによって、取得される。
【００７３】
次にＸ座標値算出部４６は、予め定められた計算式にＰｘ１及びＰｘ２の値を代入して、Ｐｘ１とＰｘ２との間の位置ずれ量ｄ１を算出する（Ｓ２）。続いて、Ｓ２で算出された位置ずれ量ｄ１を用いて、コード情報復元部４５が取得した部分列の第３基本ブロック列Ｍ３内における位置ｓ１を算出する（Ｓ３）。
【００７４】
一方、Ｘ座標値算出部４６は、予め定められた計算式にＰｘ３及びＰｘ４の値を代入して、Ｐｘ３とＰｘ４との間の位置ずれ量ｄ２を算出する（Ｓ４）。そして、Ｓ４で算出された位置ずれ量ｄ２を用いて、部分列の第３基本ブロック列Ｍ３内における位置ｓ２を算出する（Ｓ５）。
【００７５】
その後、Ｘ座標値算出部４６は、Ｓ３で算出された位置ｓ１の値、及びＳ５で算出された位置ｓ２の値の間の位置ずれ量ｄ３を算出する（Ｓ６）。そして、Ｓ６で算出された位置ずれ量ｄ３と、Ｓ５で算出された位置ｓ２と、を用いて、Ｘ座標値ｘｂを算出する（Ｓ７）。
【００７６】
以上説明した処理によって、画像読み取り装置４が読み取った読み取り画像のコード画像内における位置を示すＸ座標値が算出される。
【００７７】
なお、本発明の実施の形態は、以上説明したものに限られない。例えば以上の説明では、各ブロックには３ビットのＸ座標情報及び３ビットのＹ座標情報が埋め込まれることとしたが、各ブロックに埋め込まれる情報量はこれとは異なる値であってもよい。また、以上の説明においては、Ｘ方向及びＹ方向のそれぞれに沿って並んだ３ブロックから復元された９ビットの情報を部分列として用いることとしたが、各部分列の長さはこれ以外のものであってもよい。また、上述した説明ではＸ座標及びＹ座標のそれぞれについて、４個の座標ブロック列を用いて座標情報を表すこととしたが、既に述べたとおり、２個の座標ブロック列だけでも、ｐ次のＭ系列を用いて当該Ｍ系列の周期を超える範囲の座標値が表現される。また、本実施形態に係る画像生成装置は、４個を超える数の座標ブロック列を用いて各座標情報を表現することとしてもよい。
【図面の簡単な説明】
【００７８】
【図１】コード画像の一例を示す部分拡大図である。
【図２】ブロック配置の一例を示す図である。
【図３】コード情報を復元した結果の一例を示す図である。
【図４】コード情報をＸ座標情報及びＹ座標情報に分離した結果の一例を示す図である。
【図５】第１Ｘ座標ブロック列及び第２Ｘ座標ブロック列の構成を説明する図である。
【図６】第１〜第４Ｘ座標ブロック列の構成を説明する図である。
【図７】本発明の実施の形態に係る画像生成装置の構成例を示す図である。
【図８】本発明の実施の形態に係る画像生成装置が実現する機能の一例を示す機能ブロック図である。
【図９】本発明の実施の形態に係る画像処理装置の構成例を示す図である。
【図１０】本発明の実施の形態に係る画像処理装置が実現する機能の一例を示す機能ブロック図である。
【図１１】Ｘ座標値算出部が実行する処理の流れの一例を示す図である。
【符号の説明】
【００７９】
１  画像生成装置、２  画像形成装置、３  画像処理装置、４  画像読み取り装置、１１，３１  制御部、１２，３２  記憶部、１３，３３  操作部、１４，３４  表示部、２１  文書画像取得部、２２  コード情報取得部、２３  コード画像生成部、２４  画像合成部、４１  読み取り画像取得部、４２  ドット画像検出部、４３  ブロック特定部、４４  回転補正部、４５  コード情報復元部、４６  Ｘ座標値算出部、４７  Ｙ座標値算出部。
【図１】
2010146528.tif 000003
【図２】
2010146528.tif 000004
【図３】
2010146528.tif 000005
【図４】
2010146528.tif 000006
【図５】
2010146528.tif 000007
【図６】
2010146528.tif 000008
【図７】
2010146528.tif 000009
【図８】
2010146528.tif 000010
【図９】
2010146528.tif 000011
【図１０】
2010146528.tif 000012
【図１１】
2010146528.tif 000013