(57)【要約】【課題】画像に情報を埋め込み、その情報を検出する際、埋め込まれたデータにバースト的にエラーが発生した場合のエラー訂正の可能性を向上させる。【解決手段】文書画像に付加するための付加情報に基づき、付加情報のエラー訂正を行うためのエラー訂正符号を生成する。付加情報およびエラー訂正符号を表す複数の情報単位のそれぞれに対応する画像を、所定の形状に従い、複数の情報単位における各情報単位の順番において隣接する情報単位の画像が隣接しないように配置して埋め込み画像を生成する。生成した埋め込み画像を文書画像に埋め込む。【選択図】図１２
2018129717.tif 000002
【特許請求の範囲】
【請求項１】
文書画像に付加するための付加情報に基づき、該付加情報のエラー訂正を行うためのエラー訂正符号を生成するエラー訂正符号生成部と、
前記文書画像に埋め込むための埋め込み画像を生成する埋め込み画像生成部と
を備え、
前記埋め込み画像生成部は、
前記付加情報および前記エラー訂正符号を表す複数の情報単位のそれぞれに対応する画像を、所定の形状に従い、該複数の情報単位における各情報単位の順番において隣接する情報単位の画像が隣接しないように配置して前記埋め込み画像を生成する
情報処理装置。
【請求項２】
前記埋め込み画像生成部は、
前記文書画像を分割した各領域に埋め込むための前記埋め込み画像をそれぞれ生成する
請求項１に記載の情報処理装置。
【請求項３】
前記埋め込み画像生成部は、
前記複数の情報単位に基づく前記画像を前記埋め込み画像のそれぞれに配置する
請求項２に記載の情報処理装置。
【請求項４】
前記埋め込み画像生成部は、
前記複数の情報単位に基づく各画像を、前記埋め込み画像のそれぞれで順序を異ならせて配置する
請求項３に記載の情報処理装置。
【請求項５】
前記埋め込み画像生成部は、
前記複数の情報単位の各情報単位を表す各画像を前記埋め込み画像のそれぞれに振り分けて配置する
請求項２に記載の情報処理装置。
【請求項６】
前記埋め込み画像生成部は、
前記複数の情報単位の各情報単位の順序を、該複数の情報単位における各情報単位の順番において隣接する情報単位が隣接しないように予め定められた規則に従い変更する変更部と、
前記変更部で順序が変更された前記複数の情報単位の各情報単位を表す各画像を、前記所定の形状に従い配置して前記文書画像に埋め込む埋め込み実行部と
を含む
請求項１乃至請求項５の何れか１項に記載の情報処理装置。
【請求項７】
前記所定の形状は楕円である請求項６に記載の情報処理装置。
【請求項８】
前記埋め込み実行部は、
前記変更部で順序が変更された前記複数の情報単位の各情報単位の順番において隣接する情報単位毎に、該隣接する情報単位を表す画像のそれぞれを、前記楕円の中心に対して点対称の位置に配置する
請求項７に記載の情報処理装置。
【請求項９】
前記埋め込み実行部は、
前記画像を前記楕円上に一定間隔に配置し、
前記変更部で順序が変更された前記複数の情報単位の各情報単位の順番において隣接する情報単位を表す各画像を、少なくとも３つの該間隔を開けて配置する
請求項７に記載の情報処理装置。
【請求項１０】
前記エラー訂正符号生成部は、
前記付加情報を前記情報単位に基づく第１の長さで分割したブロック毎に、前記情報単位に基づく第２の長さの前記エラー訂正符号を生成し、
前記変更部は、
前記ブロックと前記エラー訂正符号とからなる複数の情報単位のそれぞれで位置が対応する情報単位を、前記付加情報における前記ブロックの順序に応じた該複数の情報単位における各情報単位の順序に従い並べて前記複数の情報単位の各情報単位の順序を変更する
請求項６乃至請求項９の何れか１項に記載の情報処理装置。
【請求項１１】
前記複数の情報単位は、前記付加情報および前記エラー訂正符号を表すビット列であって、
前記埋め込み画像生成部は、
前記ビット列の各ビットに対応する画像を、所定の形状に従い、該ビット列上で隣接するビットのそれぞれに対応する画像が隣接しないように配置して前記埋め込み画像を生成する
請求項１乃至請求項１０の何れか１項に記載の情報処理装置。
【請求項１２】
文書画像に付加するための付加情報に基づき、該付加情報のエラー訂正を行うためのエラー訂正符号を生成するエラー訂正符号生成ステップと、
前記文書画像に埋め込むための埋め込み画像を生成する埋め込み画像生成ステップと
を有し、
前記埋め込み画像生成ステップは、
前記付加情報および前記エラー訂正符号を表す複数の情報単位のそれぞれに対応する画像を、所定の形状に従い、該複数の情報単位における各情報単位の順番において隣接する情報単位の画像が隣接しないように配置して前記埋め込み画像を生成する
情報処理方法。
【請求項１３】
情報処理方法をコンピュータに実行させるための情報処理プログラムであって、
前記情報処理方法は、
文書画像に付加するための付加情報に基づき、該付加情報のエラー訂正を行うためのエラー訂正符号を生成するエラー訂正符号生成ステップと、
前記文書画像に埋め込むための埋め込み画像を生成する埋め込み画像生成ステップと
を有し、
前記埋め込み画像生成ステップは、
前記付加情報および前記エラー訂正符号を表す複数の情報単位のそれぞれに対応する画像を、所定の形状に従い、該複数の情報単位における各情報単位の順番において隣接する情報単位の画像が隣接しないように配置して前記埋め込み画像を生成する
情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法および情報処理プログラムに関する。
【背景技術】
【０００２】
印刷画像に情報を埋め込んで印刷を行うことで印刷物に情報を付加し、その印刷物の画像を読み取って埋め込まれた情報を検出するシステムが既に知られている。例えば、印刷画像に微小な点を打つことで印刷時のログ情報を印刷画像に埋め込んで印刷を行い、その印刷物の画像を読み取って埋め込まれたログ情報を検出することで、その印刷物が何時、誰に印刷されたかをトレース可能とするシステムが既に知られている。特許文献１には、印刷媒体上に複数の微小点を配置することで、視覚上邪魔にならないように印刷媒体上に情報を記録する技術が開示されている。また、機密情報を印刷画像に埋め込むことで、印刷物に基づく当該機密情報のユーザによる判読を困難とするシステムや、印刷物の内容を印刷画像にさらに埋め込んで印刷を行い、その印刷物から読み取った画像が示す情報と、印刷物から検出した埋め込み情報とを照合して、その印刷物が改竄されたか否かを検知可能とするシステムも既に知られている。
【０００３】
さらに、印刷画像が印刷された印刷物における印刷画像のノイズや掠れなどで、埋め込まれた点が検出できず、埋め込まれた情報が欠落することがある。この情報の欠落を防ぐため、埋め込みデータに冗長性を持たせて欠落した情報を訂正可能とするエラー訂正機能を実現し、データの欠落を防ぐシステムが既に知られている。
【０００４】
例えば、特許文献２には、ランダム誤り訂正符号方式とバースト誤り訂正符号方式の２種類のエラー訂正方式により、それぞれ少なくとも１種の誤り訂正符号を用いてビットデータを符号化し、符号化したビットデータを規定２次元領域に行列状に配列して２次元画像を生成し媒体に印刷するようにした技術が開示されている。特許文献２によれば、２次元画像上に直線状に乗る直線状ノイズに対するエラー訂正処理が可能となる。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、画像にデータを埋め込む場合、その画像を読み取った読取画像から検出した、埋め込まれたデータのエラーは、画像にデータを埋め込んでいるという特性上、隣り合った位置で発生するバーストエラーであることが多い。したがって、読取画像から検出した、画像に埋め込まれたデータに対してエラー訂正を実施しても、エラーを訂正しきれない場合が多いという問題があった。
【０００６】
これに対して、バーストエラーを救うために、エラー訂正能力を高くする方法が考えられる。エラー訂正は、一定のビット長の元データと、元データに基づき算出した一定のビット長のエラー訂正符号とを対として用いて行う。エラー訂正符号の長さが長くなる程、訂正可能なビット数が増える。したがって、エラー訂正可能なビット数を多くしようとすると、エラー訂正符号のビット長が長くなり、埋め込み可能なデータが減ってしまう、埋め込みのデータ作成およびデータ検出に時間が掛かってしまう、などの問題があった。
【０００７】
上述した特許文献２の技術によれば、直線的なバーストエラーには対応可能できるが、面的なバーストエラーに対応することが困難であり、印刷画像のノイズや掠れが比較的広い範囲に存在するような場合には、対応が困難であった。
【０００８】
本発明は、上記に鑑みてなされたものであって、画像に情報を埋め込み、その情報を検出する際、埋め込まれたデータにバースト的にエラーが発生した場合のエラー訂正の可能性を向上させることを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するために、本発明は、文書画像に付加するための付加情報に基づき、付加情報のエラー訂正を行うためのエラー訂正符号を生成するエラー訂正符号生成部と、文書画像に埋め込むための埋め込み画像を生成する埋め込み画像生成部とを備え、埋め込み画像生成部は、付加情報およびエラー訂正符号を表す複数の情報単位のそれぞれに対応する画像を、所定の形状に従い、複数の情報単位における各情報単位の順番において隣接する情報単位の画像が隣接しないように配置して埋め込み画像を生成する。
【発明の効果】
【００１０】
本発明によれば、画像に情報を埋め込み、その情報を検出する際、埋め込まれたデータにバースト的にエラーが発生した場合のエラー訂正の可能性が向上されるという効果を奏する。
【図面の簡単な説明】
【００１１】
【図１】図１は、各実施形態に適用可能な情報処理装置としての画像形成装置の利用形態の例を示す図である。
【図２】図２は、各実施形態に適用可能なＭＦＰのハードウェア構成の例を示すブロック図である。
【図３】図３は、各実施形態に適用可能なＭＦＰのアーキテクチャの例を示すアーキテクチャ図である。
【図４】図４は、各実施形態に適用可能なＭＦＰにおける、電子透かし情報の埋め込み処理を示す一例のフローチャートである。
【図５】図５は、各実施形態に適用可能なビット化処理について説明するための図である。
【図６】図６は、埋め込みデータに基づくビット列に応じた画像が印刷画像に埋め込まれた例を模式的に示す模式図である。
【図７】図７は、各実施形態に適用可能な、各ドットの配置位置の決定方法の例について説明するための図である。
【図８】図８は、各実施形態に適用可能な、印刷媒体に印刷された印刷画像に埋め込まれた埋め込みデータの利用形態を説明するための図である。
【図９】図９は、各実施形態に適用可能な、印刷媒体に印刷された印刷画像に埋め込まれた埋め込みデータの利用形態を説明するための図である。
【図１０】図１０は、実施形態に適用可能な、埋め込みデータに対してエラー訂正符号を付加する方法の例を説明するための図である。
【図１１】図１１は、グレースケールによる画像と重複する位置にドットが埋め込まれた場合にバーストエラーが発生する可能性が高いことを説明するための図である。
【図１２】図１２は、第１の実施形態に係る埋め込み処理部の機能を説明するための一例の機能ブロック図である。
【図１３】図１３は、第１の実施形態に係る電子透かし情報の埋め込み処理を示す一例のフローチャートである。
【図１４】図１４は、第１の実施形態に適用可能なビット列、ブロックおよびエラー訂正符号を説明するための図である。
【図１５】図１５は、第１の実施形態に適用可能な、埋め込み画像を文書画像に埋め込む処理を説明するための図である。
【図１６】図１６は、第１の実施形態に係る、電子透かし情報に基づくドットの配置規則について説明するための図である。
【図１７】図１７は、第１の実施形態に係る復元処理部の機能を説明するための一例の機能ブロック図である。
【図１８】図１８は、第１の実施形態に係る電子透かし情報の復元処理を示す一例のフローチャートである。
【図１９】図１９は、第１の実施形態の第１の変形例に係る、電子透かし情報に基づくドットの配置規則について説明するための図である。
【図２０】図２０は、第１の実施形態の第２の変形例に係る、電子透かし情報に基づくドットの配置規則について説明するための図である。
【図２１】図２１は、第２の実施形態に係る埋め込み処理部の機能を説明するための一例の機能ブロック図である。
【図２２】図２２は、第２の実施形態に係る電子透かし情報の埋め込み処理を示す一例のフローチャートである。
【発明を実施するための形態】
【００１２】
以下に添付図面を参照して、情報処理装置、情報処理方法および情報処理プログラムの実施形態を詳細に説明する。
【００１３】
（各実施形態に適用可能な構成）
図１〜図３を用いて、各実施形態に適用可能な、情報処理装置としての画像形成装置について説明する。図１は、各実施形態に適用可能な情報処理装置としての画像形成装置の利用形態の例を示す。図１において、ＭＦＰ１０は、各実施形態に適用可能な情報処理装置としての画像形成装置であって、プリンタ機能、スキャナ機能、ＦＡＸ機能、コピー機能など複数の機能を１台の筐体にて実現する複合機である。
【００１４】
ＭＦＰ１０は、ネットワーク２１を介してパーソナルコンピュータ（ＰＣ）２０と接続される。これに限らず、ＭＦＰ１０とＰＣ２０とがケーブルなどで直接的に接続されていてもよい。ＰＣ２０は、例えばワードプロセッサソフトウェア、表計算ソフトウェア、図形編集ソフトウェアなど、文書情報を作成する文書作成アプリケーションプログラムが搭載される。また、ＰＣ２０は、ネットワーク２１を介してＭＦＰ１０により印刷を行うためのプリンタドライバも搭載される。
【００１５】
ＰＣ２０は、文書作成アプリケーションプログラムにより作成された文書情報をネットワーク２１を介してＭＦＰ１０に送信し、ＭＦＰ１０に対して文書情報の印刷を指示する。ＭＦＰ１０は、ＰＣ２０からの印刷指示に従い、プリンタ機能を用いて、ＰＣ２０から送信された文書情報に基づきＭＦＰ１０が印刷処理可能な文書データを生成する。ＭＦＰ１０は、生成した文書データに従い、文書情報に基づく画像を印刷媒体上に形成し、文書情報の印刷を行う。
【００１６】
また、ＭＦＰ１０は、コピー機能により、文書情報が印刷された原稿３０を複写して印刷することができる。例えば、ＭＦＰ１０は、原稿３０の画像をスキャナ機能を用いて読み取って、読み取った原稿画像を文書情報として文書データを生成する。ＭＦＰ１０は、この生成した文書データに従い印刷を行うことで、印刷媒体上に原稿画像を複写した画像を形成することができる。
【００１７】
なお、各実施形態に適用可能な画像形成装置は、ＭＦＰ１０に限定されず、例えばスキャナ機能、コピー機能、ＦＡＸ機能などを持たないプリンタ装置であってもよい。また、図１では、ネットワーク２１に１台のＭＦＰ１０が接続されているように示されているが、これはこの例に限定されず、ネットワーク２１に複数台のＭＦＰ１０が接続されていてもよい。勿論、ＰＣ２０も、ネットワーク２１に複数台を接続することができる。
【００１８】
図２は、各実施形態に適用可能なＭＦＰ１０のハードウェア構成の例を示す。図２において、ＭＦＰ１０は、コントローラ１０００と、オペレーションパネル（ＯＰ）１１１０と、ＦＣＵ(Facsimile  Control  Unit)１１２０と、データＩ／Ｆ（インタフェース）１１２１と、拡張変換ボード１１２２と、エンジン部１１３０とを含む。これらのうち、ＦＣＵ１１２０、データＩ／Ｆ１１２１、拡張変換ボード１１２２およびエンジン部１１３０は、バス１１０５を介してコントローラ１０００と接続される。一方、ＯＰ１１１０は、直接的にコントローラ１０００に接続される。
【００１９】
ＦＣＵ１１２０は、公衆電話回線に接続され、ＦＡＸ機能を用いてＦＡＸ通信を行う。データＩ／Ｆ１１２１は、外部の機器との間で直接的にデータの入出力を行う。データＩ／Ｆ１１２１としては、例えばＵＳＢ(Universal  Serial  Bus)を適用することができる。拡張変換ボード１１２２は、外部から供給された文書情報のフォーマットを、ＭＦＰ１０独自のフォーマットに変換する。
【００２０】
エンジン部１１３０は、プロッタエンジン１１３１とスキャナエンジン１１３２とを含む。プロッタエンジン１１３１は、印刷媒体上に画像形成を行うための機構と、この機構を制御するための制御回路とを含む。スキャナエンジン１１３２は、原稿から画像を読み取って原稿画像を出力するための機構と、この機構を制御するための制御回路とを含む。
【００２１】
コントローラ１０００は、ＡＳＩＣ(Application  Specific  Integrated  Circuit)１１００と、ＣＰＵ(Central  Processing  Unit)１１０１と、メモリ１１０２と、ストレージ１１０３と、通信Ｉ／Ｆ１１０４とを含む。ＡＳＩＣ１１０１は、ＣＰＵ１１０１と、メモリ１１０２、ストレージ１１０３および通信Ｉ／Ｆ１１０４との間の通信の調停を行う。また、ＡＳＩＣ１１００は、コントローラ１０００内部と、コントローラ１０００とバス１１０５を介して接続される各部との間の通信の調停を行う。この例では、ＯＰ１１１０も、ＡＳＩＣ１１００に接続されている。
【００２２】
メモリ１１０２は、例えばＲＡＭ(Random  Access  Memory)として機能する領域とＲＯＭ(Read  Only  Memory)として機能する領域とを含み、ＣＰＵ１１０１が動作するためのプログラムや、ＣＰＵ１１０１により用いられるデータが記憶される。ストレージ１１０３は、例えばフラッシュメモリといった不揮発性メモリや、ハードディスクドライブであって、ＣＰＵ１１０１が動作するためのプログラムや、ＣＰＵ１１０１により用いられるデータが不揮発に記憶される。ＣＰＵ１１０１は、メモリ１１０２のＲＯＭ領域およびストレージ１１０３に記憶されるプログラムに従い、メモリ１１０２のＲＡＭ領域をワークメモリとして用いて動作して、このＭＦＰ１０の全体の動作を制御する。通信Ｉ／Ｆ１１０４は、ネットワーク２１を介した通信を制御する。
【００２３】
ＯＰ１１１０は、ユーザ操作を受け付けると共に、ＭＦＰ１０に関する情報（操作メニュー、動作状態など）を表示するもので、例えばＬＣＤ(Liquid  Crystal  Display)を用いたディスプレイと、各種の操作子を備える。ＯＰ１１１０は、ディスプレイと操作子とが一体的に形成されたタッチパネルを備えていてもよい。
【００２４】
図３は、各実施形態に適用可能なＭＦＰ１０のアーキテクチャの例を示す。ＭＦＰ１０は、ＣＰＵ１１０１が、プログラムに従い動作してエンジン部１１３０などのハードウェアを制御することで、プリンタ機能、スキャナ機能、コピー機能など各種機能を実現する。
【００２５】
図３において、ＭＦＰ１０は、ソフトウェア部１５と、ハードウェア部１６とを含む。ハードウェア部１６は、ソフトウェア部１５とエンジンＩ／Ｆ１５６０を介して接続されるハードウェアであるエンジン部１１３０と、ハードウェア資源１５６１とを含む。ハードウェア資源１５６１は、例えば上述したＡＳＩＣ１１００により、エンジン部１１３０とソフトウェア部１５（ＣＰＵ１１０１）との間のデータの入出力の調停などを行う。
【００２６】
ソフトウェア部１５は、ＣＰＵ１１０１上でプログラムが実行されることで主記憶装置（例えばメモリ１１０２）上に形成される複数のモジュール（後述する）を含む。ソフトウェア部１５は、アプリケーション層１５ａ、コントロールサービス層１５ｂおよびハンドラ層１５ｃの各層を含む階層構造となっている。コントロールサービス層１５ｂおよびハンドラ層１５ｃは、纏めてプラットフォーム１５ｄを構成する。ソフトウェア部１５に含まれるこれらアプリケーション層１５ａおよびプラットフォーム１５ｄは、ＵＮＩＸ（登録商標）といったＯＳ(Operating  System)上において起動される。
【００２７】
ＭＦＰ１０は、装置の起動に伴い、アプリケーション層１５ａおよびプラットフォーム１５ｄを起動させる。例えば、ＭＦＰ１０は、アプリケーション層１５ａおよびプラットフォーム１５ｄの各プログラムをストレージ１１０３から読み出して主記憶装置（例えばメモリ１１０２）に転送し、主記憶装置上に展開することで、アプリケーション層１５ａおよびプラットフォーム１５ｄを起動する。
【００２８】
ソフトウェア部１５において、アプリケーション層１５ａは、プリンタアプリケーションプログラム（プリンタＡＰＰ）１５０１、コピーＡＰＰ１５０２、ＦＡＸ  ＡＰＰ１５０３、スキャンＡＰＰ１５０４、ネットファイルＡＰＰ１５０５、…といった、ＭＦＰ１０における画像形成に係るユーザサービスにそれぞれ固有の処理を行うプログラムを含む。例えば、プリンタＡＰＰ１５０１およびスキャンＡＰＰ１５０４は、ＭＦＰ１０が備えるプロッタエンジン１１３１およびスキャナエンジン１１３２の基本的な機能を拡張する処理を実行する。
【００２９】
プラットフォーム１５ｄにおいて、コントロールサービス層１５ｂは、アプリケーション層１５ａからの処理要求を解釈してハードウェア資源１５６１の獲得要求を発生する。また、ハンドラ層１５ｃは、１以上のハードウェア資源１５６１の管理を行ってコントロールサービス層１５ｂからの獲得要求を調停するＳＲＭ(System  Resource  Maneger)１５４０を含み、ＳＲＭ１５４０からの獲得要求に応じてハードウェア資源１５６１の管理を行う。
【００３０】
コントロールサービス層１５ｂは、ＮＣＳ(Network  Control  Service)１５２０、ＯＣＳ(Operation  Panel  Control  Service)１５２１、ＦＣＳ(Facsimile  Control  Service)１５２２、ＭＣＳ(Memory  Control  Service)１５２３、ＥＣＳ(Engine  Control  Service)１５２４、ＤＣＳ(Delivery  Control  Service)１５２５、ＣＣＳ(Certification  and  Charge  Control  Service)１５２６、ＬＣＳ(Log  Control  Service)１５２７、ＵＣＳ(User  Information  Control  Service)１５２８、ＳＣＳ(System  Control  Service)１５２９といった、１以上のサービスモジュールを含むように構成されている。
【００３１】
プラットフォーム１５ｄは、予め定義されている関数により、アプリケーション層１５ａからの処理要求を受信可能とするＡＰＩ(Application  Programming  Interface)１５１０を有するように構成されている。ＯＳは、アプリケーション層１５ａおよびプラットフォーム１５ｄの各モジュールをプロセスとして並列実行できる。
【００３２】
ＮＣＳ１５２０のプロセスは、ネットワークＩ／Ｏ(Input/Output)を必要とするアプリケーションプログラムに対して共通に利用できるサービスを提供するものであり、ネットワーク２１側から各プロトコルによって受信したデータを各アプリケーションプログラムに振り分けたり、各アプリケーションプログラムからのデータをネットワーク２１側に送信する際の仲介を行う。
【００３３】
ＯＣＳ１５２１のプロセスは、ＯＰ１１１０の制御を行う。ＦＣＳ１５２２のプロセスは、アプリケーション層１５ａから公衆電話回線網を利用したファックス送受信、バックアップ用のメモリで管理されている各種ファックスデータの登録／引用、ファックス読み取り、ファックス受信印刷などを行うためのＡＰＩを提供する。ＭＣＳ１５２３のプロセスは、メモリ１１０２におけるメモリ領域の取得および開放、ストレージ１１０３の利用などのメモリ制御を行う。
【００３４】
ＥＣＳ１５２４のプロセスは、エンジン部１１３０の制御やハードウェア資源１５６１の制御を行う。ＤＣＳ１５２５のプロセスは、例えばストレージ１１０３に蓄積された蓄積文書の配信などの制御を行う。ＣＣＳ１５２６のプロセスは、ＭＦＰ１０の利用に対する認証と課金に関する制御を行う。ＬＣＳ１５２７は、ＭＦＰ１０において発生するログ情報の管理および保持を行う。
【００３５】
ＵＣＳ１５２８のプロセスは、ユーザ情報の管理を行う。ＵＣＳ１５２８のプロセスは、例えば、登録されるユーザ毎にユニークなユーザＩＤを生成し、ユーザＩＤとユーザの名前とを関連付けて、ユーザ情報として管理する。これに限らず、ＵＣＳ１５２８のプロセスは、パスワードや、さらに他の情報をユーザ情報に含めて管理してもよい。また、ＣＣＳ１５２６のプロセスは、このＭＦＰ１０を使用するユーザの認証を、このＵＣＳ１５２８のプロセスに管理されるユーザ情報に基づき実行できる。
【００３６】
ＳＣＳ１５２９のプロセスは、アプリケーション管理、操作部制御、システム画面表示、ＬＥＤ表示、ハードウェア資源管理、割り込みアプリケーション制御などの処理を行う。ＳＲＭ１５４０のプロセスは、ＳＣＳ１５２９のプロセスと共に、ＭＦＰ１０におけるシステムの制御およびハードウェア資源１５６１の管理を行う。例えば、ＳＲＭ１５４０のプロセスは、ハードウェア部１６に含まれるエンジン部１１３０やハードウェア資源１５６１などを利用する上位層からの獲得要求に従って調停を行い、実行制御する。
【００３７】
具体的に、ＳＲＭ１５４０のプロセスは、獲得要求されたハードウェア資源１５６１が利用可能であるか否か（他の獲得要求により利用されていないかどうか）を判定し、利用可能と判定した場合に、獲得要求されたハードウェア資源１５６１が利用可能である旨を上位層に通知する。また、ＳＲＭ１５４０のプロセスは、上位層からの獲得要求に対してハードウェア資源１５６１を利用するためのスケジューリングを行い、要求内容（例えば、プロッタエンジン１１３１による紙搬送と作像動作、メモリ確保、ファイル生成など）を直接的に実行する。
【００３８】
ハンドラ層１５ｃは、ＦＣＵＨ(Facsimile  Control  Unit  Handler)１５５０と、ＩＭＨ(Image  Memory  Handler)１５５１と、ＭＥＵ(Media  Edit  Utility)１５５２とを含む。ＦＣＵＨ１５５０は、ハードウェア資源１５６１に含まれるＦＣＵ１１２０の管理を行う。ＩＭＨ１５５１は、プロセスに対するメモリ領域の割り振りおよびプロセスに割り振ったメモリ領域の管理を行う。ＭＥＵ１５５２は、拡張変換ボード１１２２を制御するためのモジュールであり、電子透かしの制御や、画像変換処理を行う。
【００３９】
ＳＲＭ１５４０およびＦＣＵＨ１５５０は、予め定義されている関数によりハードウェア資源１５６１に対する処理要求を送信可能とするエンジンＩ／Ｆ１５６０を利用して、ハードウェア資源１５６１に対する処理要求を行う。
【００４０】
上述の構成のＭＦＰ１０により、プリンタ機能を用いて印刷を行う場合の例について説明する。ユーザは、ＰＣ２０からプリンタドライバを通じて、ＭＦＰ１０に印刷画像を含む印刷要求を送信する。印刷要求は、ＭＦＰ１０に受信されてＮＣＳ１５２０により渡される。ＮＣＳ１５２０は、受信された印刷要求に応じて、プリンタＡＰＰ１５０１を呼び出す。ＮＣＳ１５２０は、ＭＣＳ１５２３に対してメモリ領域の取得を要求する。ＮＣＳ１５２０は、ＩＭＨ１５５１とハードウェア資源１５６１とを使用して、受信された印刷要求を保持する。
【００４１】
印刷要求に含まれる全データを取得後、プリンタＡＰＰ１５０１は、ＥＣＳ１５２４に対して印刷要求を行い、下位のサ―ビス層（ＳＣＳ１５２９およびＳＲＭ１５４０）へと処理を渡していく。ＳＲＭ１５４０は、エンジン部１１３０とエンジンＩ／Ｆ１５６０を通じてやり取りする。また、ＳＲＭ１５４０は、エンジン部１１３０への出力データをＩＭＨ１５５１に渡す。ＩＭＨ１５５１は、ユーザの指示や設定に応じて、ハードウェア資源１５６１から印刷画像の読み出しを行う。
【００４２】
また、ＩＭＨ１５５１は、電子透かしの処理をＭＥＵ１５５２に要求する。ＭＥＵ１５５２は、ＩＭＨ１５５１からの要求に応じて、電子透かし情報を、ＩＭＨ１５５１が管理する印刷画像に埋め込む。ＳＲＭ１５４０は、ＩＭＨ１５５１が管理する、電子透かし情報が埋め込まれた印刷画像を、エンジンＩ／Ｆ１５６０を介してエンジン部１１３０に渡し、プロッタエンジン１１３１による印刷を実行させる。
【００４３】
印刷画像に埋め込まれた電子透かし情報を検出する際には、サンプリングの定理に従い、電子透かし情報の埋め込み時に埋め込んだ解像度の２倍以上の解像度で読み取る必要がある。したがって、画像読み取りを行う読取装置は、プロッタエンジン１１３１により印刷可能な印刷解像度の２倍以上の解像度での読み取りが可能な読取装置が必要となる。
【００４４】
各実施形態に適用可能な画像形成装置は、印刷媒体に対して文書情報に基づく画像を形成し、印刷を行う際に、当該画像に電子透かし情報を埋め込むことができる。図４は、各実施形態に適用可能なＭＦＰ１０における、電子透かし情報の埋め込み処理を示す一例のフローチャートである。
【００４５】
以下では、電子透かし情報は、ＭＦＰ１０により印刷を実行するユーザの情報と、印刷を行う時間を示す時間情報とを含むものとする。また、ＭＦＰ１０は、認証されたユーザに対してＭＦＰ１０へのログインを許可し、当該ユーザによる印刷処理の実行を可能とするものとする。
【００４６】
ステップＳ１０において、ＭＦＰ１０は、ＭＦＰ１０を用いて印刷を実行するユーザの認証を行う。例えば、ユーザは、ＰＣ２０において印刷を行いたい文書情報を作成し、作成した文書情報をＭＦＰ１０に送信し、ＭＦＰ１０に対して、送信した文書情報の印刷を指示する。ＭＦＰ１０は、この印刷指示に応じて、ユーザに対して、認証情報の入力を要求する。この要求は、ＭＦＰ１０からネットワーク２１を介してＰＣ２０に送信してもよいし、ＭＦＰ１０のＯＰ１１１０に表示させてもよい。ユーザは、ＭＦＰ１０の要求に従い、ユーザ認証を行うための認証情報をＭＦＰ１０に入力する。
【００４７】
例えば、ＭＦＰ１０は、ユーザ情報に含まれるユーザＩＤとユーザの名前とを認証情報として用いて、ユーザの認証を行うものとする。ＭＦＰ１０は、利用を許可するユーザのユーザ情報を、例えばストレージ１１０３に保存することで、ユーザの登録を行う。また、ここでは、ＭＦＰ１０は、ＯＰ１１１０に対する入力によりユーザ認証を行うものとして説明を行う。
【００４８】
次のステップＳ１１で、ＭＦＰ１０は、入力された認証情報が登録済みユーザの認証情報と一致するか否かを判定する。ＭＦＰ１０は、一致すると判定した場合（ステップＳ１１、「Ｙｅｓ」）、当該ユーザの認証が成功したとして、当該ユーザのＭＦＰ１０へのログインを許可し、処理をステップＳ１３に移行させる。
【００４９】
一方、ＭＦＰ１０は、入力された認証情報が登録済みユーザの認証情報と一致しないと判定した場合（ステップＳ１１、「Ｎｏ」）、処理をステップＳ１２に移行させる。ステップＳ１２で、ＭＦＰ１０は、ＯＰ１１１０にユーザ情報を登録するための登録画面を表示し、当該ユーザに対して、ユーザの認証情報の登録を促す。ＭＦＰ１０は、ＯＰ１１１０に対する登録操作に応じて、当該ユーザにユニークなユーザＩＤを生成すると共に、当該ユーザに対してパスワードの設定を要求する。ＭＦＰ１０は、ユーザＩＤが生成されパスワードが入力されると、ユーザの認証情報が登録されたとして、処理をステップＳ１３に移行させる。この場合、ＭＦＰ１０は、当該ユーザの認証が成功し、ログインが許可されたものと見做す。
【００５０】
ステップＳ１３で、ＭＦＰ１０は、認証が成功したユーザを特定可能なユーザ情報（例えばユーザＩＤ）を取得し、次のステップＳ１４で、現在の日時を示す時間情報を取得する。
【００５１】
次のステップＳ１５で、ＭＦＰ１０は、ステップＳ１３で取得したユーザ情報と、ステップＳ１４で取得した時間情報とに基づき、印刷を行う画像（以下、印刷画像と呼ぶ）に電子透かし情報として埋め込むための埋め込みデータを生成する。次のステップＳ１６で、ＭＦＰ１０は、ステップＳ１５で生成された埋め込みデータに対してビット化処理を施し、当該埋め込みデータに従ったビット列を生成する。換言すれば、ステップＳ１６で、ＭＦＰ１０は、埋め込みデータを複数の情報単位を用いて表現する。ステップＳ１６のビット化処理は、情報単位としてビットを用い、ビット列は、複数の情報単位を含む。
【００５２】
図５を用いて、ステップＳ１６におけるビット化処理について説明する。図５（ａ）は、電子透かし情報のフォーマットの例を示す。図５（ａ）の例では、電子透かし情報は、それぞれ半角英数字６文字からなるユーザの名前およびユーザＩＤの各フィールド６０、６１と、半角数字８文字からなる時間情報（日時）のフィールド６２とを含む。図５（ｂ）は、図５（ａ）のフォーマットに対して具体的な文字列を入力した例である。図５（ｂ）の例では、フィールド６０に文字列「Yamada」が、フィールド６１に文字列「012345」が、フィールド６２に文字列「07251355」が、それぞれ入力されている。
【００５３】
ＭＦＰ１０は、これらの文字列を、例えば、各文字を７ビットの値で表現するＡＳＣＩＩ(American  Standard  Code  for  Information  Interchange)コードにより扱う。図５（ｃ）は、図５（ｂ）の各フィールド６０〜６２に入力される各文字列をＡＳＣＩＩコードを用いて表現した例を示す。図５（ｃ）に示されるように、各文字列における各文字は、それぞれ１６進表記による２桁の値で表現される。例えば、図５（ｂ）のフィールド６０に入力される文字列「Yamada」の各文字は、それぞれ１６進表記の値として、値「59」、値「61」、値「6d」、値「61」、値「64」および値「61」として表現される。
【００５４】
ステップＳ１６では、この図５（ｃ）において１６進表記された各値から、値「０」および「１」の２値を用いたビット列を生成する。図５（ｄ）は、図５（ｃ）の各フィールド６０〜６２の値から生成したビット列の例を示す。図５（ｄ）の例では、図５（ｃ）のフィールド６０の各値から値「1011001」、「1100001」、「1101101」、「1100001」、「1100100」および「1100001」がそれぞれ生成されていることが示されている。この各値を結合したビット列が、電子透かし情報を文書画像２００に埋め込むための埋め込みデータとして用いられる。この例では、各フィールド６０〜６２の文字の合計が２０文字であるので、各値を結合したビット列のビット長は、７ビット×２０文字＝１４０ビットとなる。
【００５５】
次のステップＳ１７で、ＭＦＰ１０は、ステップＳ１６で生成されたビット列を印刷画像に埋め込むための、埋め込み位置を決定する。
【００５６】
図６は、埋め込みデータに基づくビット列に応じた画像が印刷画像に埋め込まれた例を模式的に示す。図６の例では、所定サイズ（例えばＡ４サイズ）の文書画像２００が各分割領域２０１ａ、２０１ｂ、２０１ｃおよび２０１ｄに４分割される。埋め込みデータに基づくビット列の各ビットを表す画像が所定の形状に配置された埋め込み画像２０２ａ、２０２ｂ、２０２ｃおよび２０２ｄが、各分割領域２０１ａ、２０１ｂ、２０１ｃおよび２０１ｄに配置される。
【００５７】
なお、文書画像２００は、例えば印刷対象の印刷媒体に対応する大きさを有するものとする。例えば、印刷媒体がＡ４サイズであれば、文書画像は、プロッタエンジン１１３１がＡ４サイズの印刷媒体に印刷可能な最大のサイズを有する。
【００５８】
図６の例では、各埋め込み画像２０２ａ、２０２ｂ、２０２ｃおよび２０２ｄは、ビット列の各ビットが、ビット値「１」が黒、ビット値「０」が白によりそれぞれ表されるドットとされ、このドットが楕円周上に配置されて構成されている。埋め込みデータのビットを表現するドットは、プロッタエンジン１１３１による印字の最小単位のドット（画素と呼ぶ）を４つ纏めて、２画素×２画素を１ドットとして配置して構成することができる。１ドットの大きさは、２画素×２画素に限られず、３画素×３画素以上の大きさでもよいし、１画素を１ドットとして用いてもよい。また、ドットの形状は、正方形に限定されない。
【００５９】
各ドットは、楕円周上において、一定以上の間隔を空けて配置される。また、各ドットは、例えば、文書画像２００に含まれる画像２０３に掛かる場合、画像２０３に対して上書きされる。
【００６０】
図７を用いて、各実施形態に適用可能な、図６の例における各ドットの配置位置の決定方法の例について説明する。ＭＦＰ１０は、先ず、図７（ａ）に示されるように、文書画像２００を各分割領域２０１ａ〜２０１ｄに分割し、図７（ｂ）に示されるように、各分割領域２０１ａ〜２０１ｄの中央の点である中心点２１０ａ、２１０ｂ、２１０ｃおよび２１０ｄをそれぞれ求める。図７（ｂ）の例では、文書画像２００の左上隅を座標（０，０）として、各中心点２１０ａ、２１０ｂ、２１０ｃおよび２１０ｄがそれぞれ座標（ｘ1，ｙ1）、（ｘ2，ｙ2）、（ｘ3，ｙ3）および（ｘ4，ｙ4）として求められている。
【００６１】
ＭＦＰ１０は、次に、図７（ｃ）に示されるように、各分割領域２０１ａ〜２０１ｄにおいて、各中心点２１０ａ〜２１０ｄの座標（ｘ1，ｙ1）、（ｘ2，ｙ2）、（ｘ3，ｙ3）および（ｘ4，ｙ4）に基づき、各中心点２１０ａ〜２１０ｄで直交する、楕円の長軸ＬＡおよび短軸ＳＡを、予め定められた長さに従い設定する。なお、図７（ｃ）では、煩雑さを避けるため、各分割領域２０１ａ〜２０１ｄを分割領域２０１ａで代表させて示している。
【００６２】
ＭＦＰ１０は、各分割領域２０１ａ〜２０１ｄにおいて、各中心点２１０ａ〜２１０ｄに対し、それぞれ長軸ＬＡおよび短軸ＳＡである楕円を形成する。ＭＦＰ１０は、形成された楕円周上に複数のドットを配置する各点の、長軸ＬＡまたは短軸ＳＡを基準とした中心角θを、それぞれ予め定めた角度に設定する。ＭＦＰ１０は、各中心点２１０ａ〜２１０ｄと、各長軸ＬＡおよび短軸ＳＡと、各点の中心角の角度とに基づき、各ドットを配置する座標を設定する。
【００６３】
図７（ｄ）は、図７（ａ）〜図７（ｃ）を用いて説明した手順に従い、埋め込みデータに基づくビット列の各ビットに対応する各ドットが、各分割領域２０１ａ〜２０１ｄに対して、楕円形状の埋め込み画像２０２ａ、２０２ｂ、２０２ｃおよび２０２ｄとして配置された様子を示している。このようにして、文書画像２００に対して楕円形状のパターンにより埋め込みデータが埋め込まれる。
【００６４】
これら、各ドットを配置する位置を示す配置情報は、予め設定されて、例えばストレージ１１０３に設定情報として記憶される。配置情報は、例えば、文書画像２００の分割数と、楕円の長軸ＬＡおよび短軸ＳＡの値と、各ドットの中心角θの角度とを少なくとも含む。各埋め込み画像２０２ａ、２０２ｂ、２０２ｃおよび２０２ｄの楕円形状としての中心点の座標は、文書画像２００のサイズおよび分割数から求めることができる。
【００６５】
このようにして、埋め込み画像が文書画像２００に埋め込まれて生成された印刷画像が印刷された印刷媒体を、例えばＭＦＰ１０のスキャナ機能を用いて読み取る。ＭＦＰ１０は、印刷媒体を読み取った読取画像を図７（ａ）に各分割領域２０１ａ〜２０１ｄとして示されるように４分割し、分割された各領域の中心点を求める。ＭＦＰ１０は、各領域について求めた中心点の各座標と、予め定められた楕円の長軸ＬＡおよび短軸ＳＡと、各ドットの角度とに基づき、読取画像から埋め込みデータに基づく各ドットを検出する。
【００６６】
楕円形状は、傾きの検出が容易である。そのため、文書画像２００に対して、埋め込みデータを楕円形状のパターンにより埋め込むことで、文書画像２００が印刷された印刷媒体を読み取った読取画像が元の文書画像２００に対して傾いている場合であっても、埋め込みデータの傾きを補正することが可能である。
【００６７】
なお、各ドットは、楕円周上で等間隔に配置することができる。これに限らず、各ドットを、３６０°を等間隔に分割した楕円の中心角に従い配置することができる。
【００６８】
図８および図９を用いて、各実施形態に適用可能な、印刷媒体に印刷された印刷画像に埋め込まれた埋め込みデータの利用形態について、概略的に説明する。
【００６９】
図８において、ユーザＡは、各実施形態に適用可能なＭＦＰ１０により、自身のユーザ情報に基づき認証を行い、電子透かし機能を用いて印刷画像３１の印刷を実行する。ＭＦＰ１０は、ユーザＡのユーザ情報と関連付けられた電子透かし情報を印刷画像３１に埋め込み、この電子透かし情報が埋め込まれた印刷画像に従い印刷を行った印刷物７０を出力する。
【００７０】
ここで、この印刷物７０が、例えば当該印刷物７０の印刷を実行したＭＦＰ１０上に放置され、この放置された印刷物７０がユーザＢに拾得されたものとする。ユーザＢは、当該電子透かし情報の埋め込みに対応する読取機能を備えた機器（例えばＭＦＰ１０）を用いてこの印刷物７０の画像を読み取り、読取画像に埋め込まれた電子透かし情報を抽出する。ユーザＢは、電子透かし情報に関連付けられるユーザ情報に基づき、当該印刷物７０がユーザＡにより印刷された印刷物であると判断できる。ユーザＢは、ユーザＡのユーザ情報に基づき、例えばユーザＡが使用するＰＣ２２に対して、印刷物７０の放置に関する通知２３を行うことができる。
【００７１】
また、図９において、ユーザＡは、上述と同様に、各実施形態に適用可能なＭＦＰ１０により、自身のユーザ情報に基づき認証を行い、電子透かし機能を用いて印刷画像を印刷し、印刷物７０を出力する。この印刷物７０が、例えばＭＦＰ１０上に放置され、ユーザＡよりも上位の権限を持つ立場である管理者に発見されたものとする。
【００７２】
管理者は、放置された印刷物７０をスキャナ装置１１により読み取り、読取画像２５を取得する。管理者は、取得した読取画像２５を、例えばＰＣ２４に搭載される、当該電子透かし情報の抽出に対応するアプリケーションプログラムを用いて解析し、当該読取画像２５に埋め込まれた電子透かし情報を抽出する。管理者は、抽出した電子透かし情報に関連付けられる情報（ユーザ情報、印刷日時の情報など）に基づき、印刷物７０を放置したユーザＡを特定し、特定したユーザＡに対して、印刷物７０の放置に関する警告を通知することができる。
【００７３】
（第１の実施形態）
次に、第１の実施形態について説明する。上述したようにして電子透かし情報が埋め込まれた印刷画像に従い印刷が行われた印刷媒体を、スキャナ装置などで読み取る場合、印刷媒体やスキャナ装置の状態によっては、印刷画像に埋め込まれた電子透かし情報を正しく読み取れない場合が起こり得る。そのため、電子透かし情報としての埋め込みデータに基づきエラー訂正符号を生成し、このエラー訂正符号を埋め込みデータに付加して印刷画像に埋め込む。
【００７４】
例えば、図１０を用いて、実施形態に適用可能な、埋め込みデータに対してエラー訂正符号を付加する方法の例について、概略的に説明する。図１０（ａ）は、情報単位としてビットを用いた場合の、複数の情報単位によるビット列による電子透かし情報の例として、上述した図５（ｄ）を再掲したものである。図１０（ａ）において、例えば、フィールド６０、６１および６２の各ビット列を結合したビット列を、それぞれ元の文字列の１文字に対応する７ビット毎のブロックに区切り、このブロック毎に所定ビット長の冗長符号であるエラー訂正符号を生成する。
【００７５】
例えば、図１０（ａ）において点線枠で示される７ビットのビット列６４を含むブロックに対し、ビット長が８ビットのエラー訂正符号を生成する。図１０（ｂ）は、元データによるビット長が７ビットのビット列６４に対して、ビット長が８ビットのエラー訂正符号６５を付加した様子を示している。このビット列６４とエラー訂正符号６５とからなるビット長が１５ビットのビット列が、元データのビット列に応じて複数生成される。この例では、各フィールド６０〜６２の文字の合計が２０文字であるので、ビット長が１５ビットのビット列が２０個生成されることになる。
【００７６】
この２０個のビット列を結合したビット長が３００ビットのビット列を、図６と同様に、ビット列の各ビットを表すドットを楕円形状に沿って配置した埋め込み画像２０２ａ〜２０２ｄに埋め込む。ここでは、このビット長が３００ビットのビット列の各ビットを表すドットを、各埋め込み画像２０２ａ〜２０２ｄに埋め込むものとする。また、各埋め込み画像２０２ａ〜２０２ｄに対し、当該ビット列の各ビットを表すドットを、各ビットのビット列における順番に従い埋め込むものとする。
【００７７】
このようにして埋め込みデータが文書画像２００に埋め込まれた印刷画像が印刷された印刷媒体の画像を、スキャナ装置により読み取る。このとき、図１１に例示されるように、元の印刷画像が例えばグレースケールによる画像２０３を含む場合、この画像２０３と重複する位置（例えば領域２０４）に埋め込まれたドットは、読取画像からの検出が困難であることが知られている。このため、領域２０４のような場所において、読取画像から検出したドットにバーストエラーが発生する可能性が高い。埋め込みデータをビット列６４およびエラー訂正符号６５の組毎に並べて埋め込み、領域２０４のような場所でバーストエラーが発生すると、エラー訂正符号６５による１ブロック（ビット列６４）当たりのエラー訂正能力を超えてエラーが発生する場合がある。
【００７８】
そこで、第１の実施形態では、エラー訂正符号６５が付加された埋め込みデータの各ビットの順序を変更し、変更前の当該埋め込みデータにおいて隣接する２つのビットによるドットを、所定以上離れた位置に配置する。こうすることで、上述のようにバーストエラーが発生しても、特定のビット列６４およびエラー訂正符号６５の組にエラーが集中することが防がれ、エラー訂正符号のエラー訂正能力を超えたエラーが発生するリスクを低減させることが可能となる。
【００７９】
以下、第１の実施形態に係る電子透かし情報の埋め込み方法についてより詳細に説明する。図１２は、第１の実施形態に係る電子透かし情報の埋め込みを行う埋め込み処理部の機能を説明するための、一例の機能ブロック図である。図１２において、埋め込み処理部１００は、例えばＭＥＵ１５５２に含まれる。これに限らず、埋め込み処理部１００は、アプリケーション層１５ａのアプリケーションプログラムであってもよい。この場合、埋め込み処理部１００は、例えばＭＥＵ１５５２に呼び出されて起動される。
【００８０】
埋め込み処理部１００は、埋め込み情報生成部１１０と、エラー訂正符号生成部１１１と、埋め込みデータ生成部１１２と、変更部１１３と、埋め込み実行部１１４とを含む。これら埋め込み情報生成部１１０、エラー訂正符号生成部１１１、埋め込みデータ生成部１１２、変更部１１３および埋め込み実行部１１４は、ＣＰＵ１１０１上で動作する情報処理プログラムにより実現される。これに限らず、埋め込み情報生成部１１０、エラー訂正符号生成部１１１、埋め込みデータ生成部１１２、変更部１１３および埋め込み実行部１１４の一部または全部を、互いに協働して動作するハードウェア回路により構成してもよい。
【００８１】
埋め込み処理部１００を構成するための情報処理プログラムは、インストール可能な形式または実行可能な形式のファイルでＣＤ(Compact  Disk)、フレキシブルディスク（ＦＤ）、ＤＶＤ(Digital  Versatile  Disk)などのコンピュータで読み取り可能な記録媒体に記録して提供される。これに限らず、当該情報処理プログラムを、インターネットなどのネットワークに接続されたコンピュータ上に格納し、当該ネットワークを介してダウンロードさせることにより提供してもよい。また、当該情報処理プログラムをインターネットなどのネットワークを経由して提供または配布するように構成してもよい。
【００８２】
当該情報処理プログラムは、上述した各部（埋め込み情報生成部１１０、エラー訂正符号生成部１１１、埋め込みデータ生成部１１２、変更部１１３および埋め込み実行部１１４）を含むモジュール構成となっている。実際のハードウェアとしては、ＣＰＵ１１０１がストレージ１１０３などの記憶媒体から当該情報処理プログラムを読み出して実行することにより、上述した各部がメモリ１１０２などの主記憶装置上にロードされ、埋め込み情報生成部１１０、エラー訂正符号生成部１１１、埋め込みデータ生成部１１２、変更部１１３および埋め込み実行部１１４が主記憶装置上に生成されるようになっている。
【００８３】
図１２において、特定情報４０は、印刷画像を特定可能な情報であって、印刷画像を用いた印刷を行うユーザのユーザ情報と、ユーザがＭＦＰ１０にログインした日時とを含む。特定情報４０は、印刷画像に対して付加する付加情報である。埋め込み情報生成部１１０は、特定情報４０に基づき電子透かし情報として用いる埋め込み情報を生成する。例えば、埋め込み情報生成部１１０は、図５（ａ）を用いて説明したフォーマットに従い、ユーザの名前、ユーザＩＤおよび時間情報を含む埋め込み情報を生成する。
【００８４】
埋め込み情報生成部１１０は、埋め込み情報生成部１１０で生成された埋め込み情報に基づき、図５（ｂ）〜図５（ｄ）を用いて説明したようにして、ビット列を生成し、生成したビット列を埋め込みデータ生成部１１２に渡す。埋め込みデータ生成部１１２は、このビット列をエラー訂正符号生成部１１１に渡す。エラー訂正符号生成部１１１は、埋め込みデータ生成部１１２から渡されたビット列に基づきエラー訂正符号を生成する。エラー訂正符号生成部１１１は、生成したエラー訂正符号を埋め込みデータ生成部１１２に渡す。埋め込みデータ生成部１１２は、埋め込み情報生成部１１０から渡されたビット列と、エラー訂正符号生成部１１１から渡されたエラー訂正符号とを結合する。
【００８５】
埋め込みデータ生成部１１２は、変更部１１３を含む。変更部１１３は、埋め込みデータ生成部１１２で埋め込み情報生成部１１０から渡されたビット列と、エラー訂正符号生成部１１１から渡されたエラー訂正符号とが結合されたビット列のビット順を、後述する変更規則に従い変更し、変更ビット列を生成する。この変更ビット列は、文書画像２００に埋め込むための埋め込みデータである。
【００８６】
一方、文書情報４１は、例えばＰＣ２０において文書作成アプリケーションプログラムにより作成されたデータや、ＭＦＰ１０におけるスキャナ機能を用いて原稿が読み取られた原稿画像を含む。文書データ生成部１０１は、文書情報４１に基づき、ＭＦＰ１０が印刷可能な文書データを生成する。
【００８７】
埋め込み処理部１００において、埋め込み実行部１１４は、文書データ生成部１０１で生成された文書データと、埋め込みデータ生成部１１２で生成された埋め込みデータとが供給される。例えば、埋め込み実行部１１４は、文書データに基づく文書画像と、埋め込みデータに基づく埋め込み画像とを生成する。埋め込み実行部１１４は、文書画像に対して埋め込み画像を埋め込んで、最終的に印刷に用いる印刷画像を生成する。
【００８８】
埋め込み実行部１１４で生成された印刷画像は、例えばＳＲＭ１５４０およびＩＭＨ１５５１に対応する印刷処理部１０２に渡される。上述したように、ＳＲＭ１５４０は、ＩＭＨ１５５１が管理する、電子透かし情報が埋め込まれた印刷画像を、エンジンＩ／Ｆ１５６０を介してエンジン部１１３０に渡し、プロッタエンジン１１３１による印刷を実行させる。
【００８９】
図１３は、第１の実施形態に係る電子透かし情報の埋め込み処理を示す一例のフローチャートである。例えば、ユーザがＰＣ２０にて予め作成した文書情報をＭＦＰ１０に送信し、その後ＭＦＰ１０にログインして送信した文書情報の印刷をＭＦＰ１０に対して指示することで、図１３のフローチャートによる処理が開始される。
【００９０】
ステップＳ２０で、ＭＦＰ１０は、ユーザがログイン時に入力したユーザ情報（ユーザの名前、ユーザＩＤ）と、ログイン時間とに基づき特定情報４０を生成する。埋め込み情報生成部１１０は、生成された特定情報４０を、図５（ａ）に示されるフォーマットに従い整形し、名前およびユーザＩＤがそれぞれ半角英数字６文字、日時が半角数字８文字の合計２０文字の埋め込み情報を生成する。埋め込みデータ生成部１１２は、埋め込み情報から、図５（ａ）〜図５（ｄ）を用いて説明した手順に従い、特定情報４０に基づくビット列を生成する。生成されるビット列は、７ビット×２０文字＝１４０ビットのビット長を有する。図１４（ａ）は、埋め込みデータ生成部１１２により生成される１４０ビットのビット列６６を模式的に示す。
【００９１】
なお、図１４（ａ）では、ビット列６６のビット列の左端のビットを先頭ビット、右端のビットを末尾ビットとし、各ビットを、先頭ビットから末尾ビットに向けて、ビットＢ1、ビットＢ2、…、ビットＢ139、ビットＢ140のように、文字「Ｂ」に１から増加する添字を付して示す。
【００９２】
次のステップＳ２１で、埋め込みデータ生成部１１２は、ステップＳ２０で生成したビット列６６を、ｎ個のブロックに分割する。ここでは、ｎ＝２０とし、ビット長が１４０ビットのビット列６６を、それぞれ７ビットのビット長を有する２０個のブロックに分割する。図１４（ｂ）の左側に、ビット列６６が分割された各ブロック（第１ブロック、第２ブロック、…、第２０ブロックとする）にそれぞれ含まれるビット列６４1、６４2、…、６４20を模式的に示す。なお、ビット列６６の分割数ｎは、２０に限定されない。埋め込みデータ生成部１１２は、ビット列６６が分割されたｎ個のブロックをエラー訂正符号生成部１１１に渡す。
【００９３】
次のステップＳ２２で、エラー訂正符号生成部１１１は、ステップＳ２３〜ステップＳ２６のループの回数を計数するループ変数ｉの値を０に初期化する。エラー訂正符号生成部１１１は、ステップＳ２３〜ステップＳ２６のループにより、ｎ個のエラー訂正符号を生成する。ｎ＝２０のこの例では、エラー訂正符号生成部１１１は、各ビット列６４1、６４2、…、６４20に基づく２０個のエラー訂正符号を生成することになる。エラー訂正符号としては、リード・ソロモン符号、ハミング符号、ＢＣＨ(Bose-Chaudhuri-Hocquenghem)符号などを適用することができる。ここでは、エラー訂正符号としてＢＣＨ符号を用いるものとして説明を行う。
【００９４】
エラー訂正符号生成部１１１は、次のステップＳ２３で、ループ変数ｉを１だけ増加し、次のステップＳ２４で、生成多項式に基づき第ｉブロックに対するｍビットのエラー訂正符号を生成する。次のステップＳ２５で、エラー訂正符号生成部１１１は、ステップＳ２４で生成されたｍビットのエラー訂正符号を、第ｉブロックに追加する。
【００９５】
ステップＳ２４およびステップＳ２５におけるエラー訂正符号生成部１１１の処理について、より具体的に説明する。ここで、各ビット列６４1、６４2、…のビット列は、それぞれ７ビットのビット長を有し、生成されるエラー訂正符号のビット長が８ビット（ｍ＝８）であるものとする。
【００９６】
エラー訂正符号生成部１１１は、先ず、第１の処理で、第ｉブロックの７ビットを８ビット左シフトし、１５ビットのビット列とする。このとき、シフト分のビットは、全て値「０」とする。エラー訂正符号生成部１１１は、次に、第２の処理で、この１５ビットの７ビット目から、式（１）の生成多項式によるＸＯＲ演算を行う。式（１）に、第２の処理に適用可能な生成多項式の例を示す。
Ｇ(Ｘ)＝Ｘ8＋Ｘ7＋Ｘ6＋Ｘ4＋１    …（１）
【００９７】
エラー訂正符号生成部１１１は、次に、第３の処理で、ＸＯＲ演算の結果のビット列の先頭ビット（左端）から値「１」のビットを探索し、探索された値「１」の位置から生成多項式によるＸＯＲ演算を行う。エラー訂正符号生成部１１１は、この第３の処理を、ビット列の左端から７ビットまでのビットが全て値「０」になるまで繰り返す。エラー訂正符号生成部１１１は、第３の処理が終了すると、第１の処理で生成された１５ビットのビット列と、第３の処理で生成されたビット列とでＸＯＲ演算を行う。これにより、先頭ビットから７ビット目までが元の第ｉブロックのビット列６４iであり、８ビット目から末尾ビットまでの８ビットが第ｉブロックのビット列６４iに対するエラー訂正符号である、１５ビットのビット列が生成される。
【００９８】
この例では、８ビットのエラー訂正符号を付加することで、１５ビットの１ブロックあたり、２ビットのエラー訂正が可能である。
【００９９】
説明は図１３に戻り、ステップＳ２６で、エラー訂正符号生成部１１１は、ループ変数ｉ＝ｎであるか否かを判定する。ＭＦＰ１０は、ループ変数ｉ＜ｎであると判定した場合（ステップＳ２６、「Ｎｏ」）、処理をステップＳ２３に戻す。一方、ＭＦＰ１０は、ループ変数ｉ＝ｎであると判定した場合（ステップＳ２６、「Ｙｅｓ」）、エラー訂正符号生成部１１１は、ステップＳ２１でビット列６６が分割されたｎ個のブロック全てに対してエラー訂正符号が生成されたとして、処理をステップＳ２７に移行する。
【０１００】
図１４（ｂ）に、７ビットのビット長を有するビット列６４1、６４2、…、６４20の元データに対して、８ビットのビット長を有するエラー訂正符号６５1、６５2、…、６５20がそれぞれ付加された様子を示している。この、元データのビット列６４i（１≦ｉ≦ｎ）に、エラー訂正符号６５iが付加されたデータを、エラー訂正符号付き符号と呼ぶ。
【０１０１】
なお、図１４（ｂ）において、エラー訂正符号６５1、６５2、…、６５20の各ビットを、それぞれ先頭ビット（左端）から末尾ビット（右端）に向けて、例えばエラー訂正符号６５1の例ではビットＣ1、ビットＣ2、…のように、文字「Ｃ」に１から増加する添字を付して示す。ここで、各エラー訂正符号６５1、６５2、…、６５20において、文字「Ｃ」に付す添字は、各エラー訂正符号６５1、６５2、…、６５20を通じた通し番号となっている。
【０１０２】
次のステップＳ２７で、埋め込みデータ生成部１１２は、ステップＳ２３〜ステップＳ２６で生成された、ｎブロック分のエラー訂正符号付き符号を結合して、埋め込みデータを生成する。この例では、エラー訂正符号付き符号は、元データのビット長が７ビット、当該元データに対するエラー訂正符号のビット長が８ビットであるから、１５ビットのビット長を有する。したがって、ｎ＝２０とした場合の、結合されたエラー訂正符号付き符号は、３００ビットのビット長を有するビット列となる。
【０１０３】
次のステップＳ２８で、埋め込みデータ生成部１１２は、変更部１１３により、ステップＳ２７でｎブロック分のエラー訂正符号付き符号が結合されたビット列の各ビットの順序を、予め定められた規則に従い変更する。各ビットの順序を変更する規則を示す変更規則は、例えばストレージ１１０３に設定情報として記憶される。
【０１０４】
第１の実施形態では、ｎブロック分のエラー訂正符号付き符号における各エラー訂正符号付き符号の先頭ビット側から１ビットずつデータを抽出して、順に並べる。図１４（ｂ）を参照し、変更部１１３は、先ず、各エラー訂正符号付き符号の各先頭ビットＢ1、Ｂ8、…、Ｂ134を取り出して順に並べる。変更部１１３は、続けて、各エラー訂正符号付き符号の先頭ビットの次の各ビットＢ2、Ｂ9、…、Ｂ135を取り出して順に並べる。
【０１０５】
変更部１１３は、各ブロック６４1、６４2、…、６４20の末尾ビットまでこの処理を行うと、各エラー訂正符号付き符号のエラー訂正符号６５1、６５2、…、６５20についても同様に処理を実行する。具体的には、先ず、各エラー訂正符号６５1、６５2、…、６５20の先頭ビットであるビットＣ1、Ｃ9、…、Ｃ153を取り出して順に並べ、次に、先頭ビットの次の各ビットＣ2、Ｃ10、…、Ｃ154を取り出して順に並べる。変更部１１３は、以降、同様にして、各エラー訂正符号６５1、６５2、…、６５20のビットを順に取り出して並べ、各末尾ビットＣ8、Ｃ16、…、Ｃ160を取り出して並べると、処理を終了させる。
【０１０６】
この結果、各エラー訂正符号付き符号が順に並べられて結合されたビット列のビット順が変更され、３００ビットのビット長を有するビット列「Ｂ1Ｂ8…Ｂ134Ｂ2Ｂ9…Ｂ135…Ｂ7Ｂ14…Ｂ140Ｃ1Ｃ9…Ｃ153Ｃ2Ｃ10…Ｃ154…Ｃ8Ｃ16…Ｃ160」が形成される。
【０１０７】
説明は図１３に戻り、ステップＳ２８で、ｎブロック分のエラー訂正符号付き符号が結合されたビット列の並び替えが終了すると、処理がステップＳ２９に移行される。ステップＳ２９で、埋め込み実行部１１４は、ステップＳ２８で並び替えられたビット列の先頭ビットから１ビットずつデータを取り出し、取り出したデータを表すドットを、所定の規則に従い配置して、埋め込み画像を生成する。このドットを配置する際の配置規則については、後述する。
【０１０８】
埋め込み実行部１１４は、生成した埋め込み画像を、文書データ生成部１０１において文書情報４１に基づき生成された文書画像に埋め込んで、最終的な印刷画像を生成する。例えば、埋め込み実行部１１４は、文書データに基づき印刷を行うための文書画像を生成し、生成した文書画像に対して埋め込み画像を埋め込んで印刷画像を生成する。
【０１０９】
図１５を用いて、第１の実施形態に適用可能な、埋め込み画像を文書画像に埋め込む処理について、概略的に説明する。図１５（ａ）は、文書データに基づく文書画像３００の例を示す。ここでは、印字がドット単位で行われるものとし、文書画像３００が８ドット×８ドットのサイズであるものとする。図１５（ａ）の例では、各ドットは、白および黒の２値で印字が行われ、白が値「０」、黒が値「１」であるものとする。
【０１１０】
図１５（ｂ）は、埋め込み画像３０１の例を示す。この例では、ドット位置（３，１）および（５，７）に白のドットが配置され、ドット位置（４，４）に黒のドットが配置されている。これらドット位置（３，１）、（５，７）および（４，４）以外の領域は、例えば各ドットが透過属性を持っている。
【０１１１】
図１５（ｃ）は、埋め込み画像３０１が文書画像３００に埋め込まれた画像３０２の例を示す。この例では、画像３０２は、文書画像３００が埋め込み画像３０１の白および黒のドットで上書きされて生成される。文書画像３００において黒ドットのドット位置（３，１）は、埋め込み画像３０１の白ドットにより上書きされ、画像３０２において白ドットとされている。同様に、文書画像３００において白ドットのドット位置（４，４）は、埋め込み画像３０１の黒ドットにより上書きされ、画像３０２において黒ドットとされている。一方、文書画像３００において白ドットのドット位置（５，７）は、埋め込み画像３０１でも白ドットであるため、画像３０２においても白ドットのままである。
【０１１２】
説明は図１３に戻り、次のステップＳ３０で、印刷処理部１０２は、ステップＳ２９で文書画像に埋め込み画像が埋め込まれた印刷画像に従い、印刷媒体への印刷を実行する。
【０１１３】
（第１の実施形態に係るドットの配置）
図１６を用いて、第１の実施形態に係る、電子透かし情報に基づくドットの配置規則について説明する。第１の実施形態では、図６と同様に、電子透かし情報に基づく埋め込みデータを表す各ドットを、楕円周上に配置する。また、第１の実施形態では、図１６（ａ）および図１６（ｂ）に示されるように、１枚の印刷媒体に印刷するための１つの文書画像２００に対して、ドットが楕円周上に配置された１つの埋め込み画像２０２（または埋め込み画像２０２’）を配置する。このとき、各ドットは、埋め込みデータのビット列において隣接する２つのビットを表す２つのドットが、楕円周上で隣接しないように設定された規則に従い配置される。
【０１１４】
なお、図１６（ａ）および図１６（ｂ）では、説明のため、埋め込み画像２０２に１２個のドットが配置されるように示されているが、実際には、１つの埋め込み画像２０２に対して１５０個乃至３００個、あるいはそれ以上の数のドットを配置することが可能である。また、楕円形状は、図７（ａ）〜図７（ｄ）を用いて説明した方法と同様の方法を用いて決定できる。さらに、各ドットが配置される形状は、楕円形状に限られない。
【０１１５】
図１６（ａ）は、第１の実施形態に係る第１の配置規則に従ったドット配置の例を示す。第１の配置規則では、ステップＳ２８で生成されたビット列の先頭ビットから順に、各ドットが、楕円形状に対して右回り（時計回り）または左回り（反時計回り）に、ビット列において隣接する２つのビットに対応する各ドットの間に、他のビットに対応するドットを配置可能に配置が設定される。
【０１１６】
図１６（ａ）の例について、より具体的に説明する。ステップＳ２８で生成されたビット列の各ビットを、先頭ビットから、第１ビット（図１４（ｂ）のビットＢ1）、第２ビット（図１４（ｂ）のビットＢ8）、第３ビット（図１４（ｂ）のビットＢ15）、…とする。図１６（ａ）の例では、埋め込み画像２０２において、ステップＳ２８で生成されたビット列の第１ビットに対応するドットが、楕円周上における楕円の長軸の位置に配置される。以降、楕円周上を右回りに、第２ビット、第３ビット、第４ビット、…の順に、ビット列において隣接する２つのビットを表す各ドットの間に２個以上のドットを配置可能に（３以上の間隔を開けて）、各ドットが配置される。なお、ここでは、ステップＳ２８で生成されたビット列の全ビットのドットを楕円周上に等間隔に配置する場合を想定している。
【０１１７】
この埋め込み画像２０２のように各ビットに対応する各ドットを配置することで、１つのエラー訂正符号付き符号に含まれる各ビットが文書画像２００内に分散して配置され、バーストエラーに対する耐性が向上される。
【０１１８】
図１６（ｂ）は、第１の実施形態に係る第２の配置規則に従ったドット配置例を示す。第２の配置規則では、ステップＳ２８で生成されたビット列の第１ビットから順に、隣接する２ビット毎に、対応する各ドットが、楕円周上における楕円の中心に対して点対称の位置に配置されるよう設定される。図１６（ｂ）の例では、埋め込み画像２０２’において、第１ビットのドットと第２ビットのドットとが楕円の短軸の両端に配置され、第３ビットのドットと第４ビットのドットとが楕円の長軸の両端に配置されている。
【０１１９】
以降、図１６（ａ）と同様に、第５ビット〜第８ビットに対応する４つのドットが、それぞれ第１ビット〜第４ビットに対応する各ドットに右回りに隣接する位置に配置される。第９ビット以降の各ビットに対応する各ドットも、４ドットずつ、直前に配置された４ドットの右回りに隣接する位置に、順次配置される。この場合においても、図１６（ａ）の例と同様に、ビット列において隣接する２つのビットを表す各ドットの間に２個以上のドットを配置可能に（３以上の間隔を開けて）、各ドットが配置される。
【０１２０】
なお、これら第１の配置規則や第２の配置規則を示す情報は、例えばストレージ１１０３に設定情報として予め記憶しておくことができる。
【０１２１】
この埋め込み画像２０２’の配置でも、１つのエラー訂正符号付き符号に含まれる各ビットが文書画像２００内に分散して配置され、バーストエラーに対する耐性が向上される。
【０１２２】
なお、上述では、埋め込み実行部１１４は、図１３のステップＳ２８で順序が変更されたビット列の各ビットに対応する各ドットを、図１６（ａ）または図１６（ｂ）に矢印で示される順序で楕円周上に配置するように説明したが、これはこの例に限定されない。
【０１２３】
例えば、埋め込みデータ生成部１１２は、図１３のフローチャートのステップＳ２８において、ステップＳ２７でｎブロック分のエラー訂正符号付き符号が結合されたビット列の各ビットの順序を、埋め込み実行部１１４が楕円周上に連続的に各ドットを配置した場合に図１６（ａ）または図１６（ｂ）を用いて説明した配置になるように、予め変更しておいてもよい。
【０１２４】
この場合、埋め込み実行部１１４は、例えば、各ドットを、埋め込み画像２０２において楕円形状の特定の点から右回りまたは左回りに楕円周上を１周して連続的に配置する。楕円周上において各ドットの配置が開始される特定の点は、図１６（ａ）の例では、楕円周と楕円の長軸ＬＡとが交差する一方の点となっている。また、図１６（ｂ）の例では、楕円周と楕円の短軸ＳＡとが交差する一方の点となっている。
【０１２５】
（第１の実施形態に適用可能な電子透かし情報の検出方法）
次に、上述のようにして、電子透かし情報が埋め込み画像２０２（あるいは埋め込み画像２０２’）として文書画像２００に埋め込まれた印刷画像に従い印刷された印刷媒体から、埋め込み画像２０２を検出し、検出された埋め込み画像２０２から埋め込み情報を抽出する方法について説明する。
【０１２６】
図１７は、第１の実施形態に係る電子透かし情報の復元を行う復元処理部の機能を説明するための、一例の機能ブロック図である。図１７において、復元処理部１５０は、ドット抽出部１６０と、ビット判定部１６１と、変換部１６２と、エラー訂正処理部１６３と、埋め込み情報復元部１６４とを含む。これらドット抽出部１６０、ビット判定部１６１、変換部１６２、エラー訂正処理部１６３および埋め込み情報復元部１６４は、例えばＣＰＵ上で動作するプログラムにより実現される。
【０１２７】
例えば、復元処理部１５０は、ＭＥＵ１５５２に含まれる。これに限らず、復元処理部１５０は、アプリケーション層１５ａのアプリケーションプログラムであってもよい。この場合、復元処理部１５０は、例えばＭＥＵ１５５２に呼び出されて起動される。また、復元処理部１５０は、ＭＦＰ１０の機能に限定されず、他の機器、例えば図９で示したＰＣ２４に含まれる機能であってもよい。
【０１２８】
これに限らず、ドット抽出部１６０、ビット判定部１６１、変換部１６２、エラー訂正処理部１６３および埋め込み情報復元部１６４の一部または全部を、互いに協働して動作するハードウェア回路により構成してもよい。
【０１２９】
図１８は、第１の実施形態に係る復元処理部１５０における電子透かし情報の復元処理を示す一例のフローチャートである。ここでは、復元処理部１５０がＭＦＰ１０の機能に含まれているものとして説明する。ステップＳ５０で、復元処理部１５０は、例えば埋め込み画像２０２が文書画像２００に埋め込まれた印刷画像が印刷された印刷物を、ＭＦＰ１０のスキャナ機能を用いて読み取った読取画像である原稿画像５０を取得する。復元処理部１５０は、取得した原稿画像５０をドット抽出部１６０に渡す。
【０１３０】
次のステップＳ５１で、ドット抽出部１６０は、例えばストレージ１１０３に予め記憶される配置情報４２に基づき、原稿画像５０から埋め込み画像２０２を検出し、検出した埋め込み画像２０２から、埋め込みデータを示す各ドットを抽出する。
【０１３１】
次のステップＳ５２で、ビット判定部１６１は、ステップＳ５１でドット抽出部１６０に抽出された各ドットがビット値「０」および「１」の何れを表すかを判定する。より具体的には、ビット判定部１６１は、ドットを構成する各画素の画素値が黒を示していればそのドットがビット値「１」を表し、当該画素の画素値が白を示していればそのドットがビット値「０」を表していると判定する。ビット判定部１６１は、各ドットについて判定したビット値を並べたビット列を、変更部１６２に渡す。
【０１３２】
次のステップＳ５３で、変更部１６２は、ビット判定部１６１から渡されたビット列の各ビットの順番を、例えばストレージ１１０３に予め記憶される配置規則および変更規則４３に基づき変更し、ビット列６６を復元する。変更部１６２は、復元したビット列６６を、エラー訂正処理部１６３に渡す。
【０１３３】
次のステップＳ５４で、エラー訂正処理部１６３は、変更部１６２から渡されたビット列６６に含まれるエラー訂正符号６５1、６５2、…を用いてエラー訂正処理を行う。より具体的には、エラー訂正処理部１６３は、変更部１６２から渡されたビット列６６をｎ個（上述の例ではｎ＝２０）のブロックに分割する。エラー訂正処理部１６３は、分割したそれぞれのブロックからｍビット（上述の例ではｍ＝８）のエラー訂正符号６５1、６５2、…を取り出し、取り出したエラー訂正符号６５1、６５2、…を用いてエラー訂正処理を行う。
【０１３４】
次のステップＳ５５で、エラー訂正処理部１６３は、エラー訂正を行った各ブロックからエラー訂正符号６５1、６５2、…を分離して、エラー訂正されたビット列６４1、６４2、…を取り出す。エラー訂正処理部１６３は、エラー訂正された各ビット列６４1、６４2、…を埋め込み情報復元部１６４に渡す。
【０１３５】
埋め込み情報復元部１６４は、エラー訂正処理部１６３から渡された各ビット列６４1、６４2、…をテキストデータに変換して、埋め込み情報を復元する。復元された埋め込み情報は、テキストデータとして復元処理部１５０から出力される。
【０１３６】
なお、上述では、ネットワーク２１に１台のＭＦＰ１０が接続されるものとし、埋め込み処理部１００におよる電子透かし情報の埋め込み処理と、復元処理部１５０による電子透かし情報の復元処理を、この１台のＭＦＰ１０上で実行するように説明した。ここで、ネットワーク２１には、複数台のＭＦＰ１０を接続することができ、電子透かし情報の埋め込み処理と、電子透かし情報の復元処理とを異なるＭＦＰ１０上で実行させることも可能である。この場合、ネットワーク２１に接続される各ＭＦＰ１０間で、配置規則および変更規則４３を同期させる必要がある。
【０１３７】
また、上述では、配置規則および変更規則４３が、ＭＦＰ１０が有するストレージ１１０３に記憶されるように説明したが、これはこの例に限定されない。すなわち、配置規則および変更規則４３は、ＭＦＰ１０と通信可能に接続される外部の機器に記憶されていてもよい。例えば、配置規則および変更規則４３を、ネットワーク２１に接続されるＰＣ２０、あるいは、ネットワーク２１に接続されるサーバ装置（図示しない）に記憶させてもよい。この場合、ＭＦＰ１０は、電子透かし情報の埋め込み処理、および、電子透かし情報の復元処理を行う際に、ＰＣ２０あるいはサーバ装置に対して配置規則および変更規則４３を要求することが考えられる。
【０１３８】
（第１の実施形態の第１の変形例）
次に、第１の実施形態の第１の変形例について説明する。上述の第１の実施形態では、１枚の印刷媒体に印刷するための１つの文書画像２００に対して１つの埋め込み画像２０２を配置している。これに対して、第１の実施形態の第１の変形例では、１つの文書画像２００を複数の領域に分割し、電子透かし情報を分割した各領域に跨って埋め込む。
【０１３９】
図１９を用いて、第１の実施形態の第１の変形例に係る、電子透かし情報に基づくドットの配置規則について説明する。図１９の例では、文書画像２００を４分割し、分割した分割領域２０１ａ、２０１ｂ、２０１ｃおよび２０１ｄに、楕円形状の埋め込み画像２０２ａ、２０２ｂ、２０２ｃおよび２０２ｄをそれぞれ形成する。１つの電子透かし情報に基づく埋め込みデータのビット列６６の各ビットを表す各ドットを、埋め込み画像２０２ａ、２０２ｂ、２０２ｃおよび２０２ｄに振り分けて埋め込む。
【０１４０】
上述した図１４（ａ）および図１４（ｂ）を参照して、第１の実施形態の第１の変形例に係るドットの配置規則について、より具体的に説明する。図１９の例では、埋め込み実行部１１４は、ビット列６６の各ビットを表すドットを、ビット列６６の先頭ビットからビット毎に、各埋め込み画像２０２ａ、２０２ｂ、２０２ｃおよび２０２ｄに対し、隣接するビットが異なる埋め込み画像に配置されるように埋め込む。
【０１４１】
より具体的には、先頭ビット（ビットＢ1）のドットを埋め込み画像２０２ａに、第２ビット（ビットＢ2）のドットを埋め込み画像２０２ｂに、第３ビット（ビットＢ3）のドットを埋め込み画像２０２ｃに、第４ビット（ビットＢ4）のドットを埋め込み画像２０２ｄに、それぞれ埋め込む。同様にして、第５ビット（ビットＢ5）のドットを埋め込み画像２０２ａに、第６ビット（ビットＢ6）のドットを埋め込み画像２０２ｂに、第７ビット（ビットＢ7）のドットを埋め込み画像２０２ｃに、それぞれ埋め込む。
【０１４２】
エラー訂正符号である第８ビット（ビットＣ1）のドットは、埋め込み画像２０２ｃに埋め込まれ、以下、第９ビット（ビットＣ2）、第１０ビット（ビットＣ3）、第１１ビット（ビットＣ4）、…をそれぞれ埋め込み画像２０２ｂ〜２０２ｄに巡回して埋め込む。
【０１４３】
埋め込み実行部１１４は、例えば、各ドットを、例えば、埋め込み画像２０２ａ、２０２ｂ、２０２ｃおよび２０２ｄの順に、各埋め込み画像２０２ａ、２０２ｂ、２０２ｃおよび２０２ｄにおいて楕円形状の特定の点から右回りまたは左回りに楕円周上を１周して連続的に配置する。図１３のフローチャートのステップＳ２８において、埋め込みデータ生成部１１２は、埋め込み実行部１１４がこのように各ドットを配置した場合に図１９を用いて説明した配置になるように、ステップＳ２７でｎブロック分のエラー訂正符号付き符号が結合されたビット列の各ビットの順序を変更する。
【０１４４】
なお、この第１の実施形態の第１の変形例に係る配置規則を示す情報は、例えばストレージ１１０３に設定情報として予め記憶しておくことができる。
【０１４５】
このように、ビット列６６の各ビットを表すドットを、文書画像２００を分割した各分割領域２０１ａ〜２０１ｄを巡回して配置することで、１つのエラー訂正符号付き符号に含まれる各ビットが各領域に分散して配置され、バーストエラーに対する耐性が向上される。
【０１４６】
（第１の実施形態の第２の変形例）
次に、第１の実施形態の第２の変形例について説明する。上述の第１の実施形態の第１の変形例では、１つの文書画像２００を複数の領域に分割し、電子透かし情報を分割した各領域に跨って埋め込んでいる。これに対して、第１の実施形態の第２の変形例では、１つの文書画像２００を複数の領域に分割し、分割した各領域に同一の電子透かし情報をそれぞれ埋め込む。さらに、第１の実施形態の第２の変形例では、電子透かし情報に基づくビット列の各ビットを表す各ドットの順番を、分割した各領域で異ならせる。
【０１４７】
図２０を用いて、第１の実施形態の第２の変形例に係る、電子透かし情報に基づくドットの配置規則について説明する。図２０の例では、上述した図１９の例と同様に、文書画像２００を４分割し、分割した分割領域２０１ａ、２０１ｂ、２０１ｃおよび２０１ｄに、楕円形状の埋め込み画像２０２ａ’、２０２ｂ’、２０２ｃ’および２０２ｄ’をそれぞれ形成する。１つの電子透かし情報に基づく埋め込みデータのビット列の各ビットを表す各ドットを、埋め込み画像２０２ａ’、２０２ｂ’、２０２ｃ’および２０２ｄ’にそれぞれ埋め込む。各埋め込み画像２０２ａ’、２０２ｂ’、２０２ｃ’および２０２ｄ’において、各ドットは、埋め込みデータのビット列において隣接するビットを表すドットが、楕円周上で隣接しないように配置される。
【０１４８】
さらに、第１の実施形態の第２の変形例では、ドットを埋め込む規則を、各埋め込み画像２０２ａ’、２０２ｂ’、２０２ｃ’および２０２ｄ’毎に異ならせる。図２０の例では、分割領域２０１ａおよび２０１ｂの各埋め込み画像２０２ａ’および２０２ｂ’は、それぞれ、第１の実施形態にて説明した第１の配置規則および第２の配置規則に従い、図１６（ａ）および図１６（ｂ）と同様の順序で各ドットが配置されている。
【０１４９】
一方、分割領域２０１ｃおよび２０１ｄの各埋込み画像２０２ｃ’および２０２ｄ’は、それぞれ、第１の実施形態にて説明した第１の配置規則および第２の配置規則に従い、図１６（ａ）および図１６（ｂ）と異なる順序で各ドットが配置されている。より具体的には、埋め込み画像２０２ｃ’は、第２の配置規則に従い、埋め込み画像２０２ｂ’に対して、楕円周上の異なる位置から各ドットが配置されている。同様に、埋め込み画像２０２ｄ’は、第１の配置規則に従い、埋め込み画像２０２ａ’に対して、楕円周上の異なる位置から各ドットが配置されている。
【０１５０】
なお、この第１の実施形態の第２の変形例に係る配置規則を示す情報は、例えばストレージ１１０３に設定情報として予め記憶しておくことができる。
【０１５１】
第１の実施形態の第２の変形例では、このように、各ビットに対応する各ドットを、各埋め込み画像２０２ａ’〜２０２ｄ’で順序を異ならせて配置することで、１つのエラー訂正符号付き符号に含まれる各ビットが文書画像２００内に分散して配置され、バーストエラーに対する耐性が向上される。
【０１５２】
また、第１の実施形態の第２の変形例では、文書画像２００を分割した各領域に、同一の電子透かし情報に基づく埋め込み画像２０２ａ’〜２０２ｄ’をそれぞれ埋め込んでいる。そのため、文書画像２００が印刷された原稿を読み取った読取画像から電子透かし情報を抽出する際の精度を向上させることができる。
【０１５３】
例えば、埋め込み画像２０２ａ’〜２０２ｄ’のうち例えば埋め込み画像２０２ａ’から抽出された埋め込みデータに、エラー訂正符号のエラー訂正能力を超えたエラーが存在してエラー訂正ができず、その埋め込み画像２０２ａ’からの電子透かし情報の抽出に失敗することが起こり得る。その場合であっても、他の埋め込み画像２０２ｂ’、２０２ｃ’および２０２ｄ’のうち何れかから正しい電子透かし情報が抽出できる可能性がある。
【０１５４】
また、埋め込み画像２０２ａ’〜２０２ｄ’のうち例えば埋め込み画像２０２ａ’から、間違った電子透かし情報を抽出する可能性もある。この場合であっても、例えば、各埋め込み画像２０２ａ’〜２０２ｄ’からそれぞれ電子透かし情報を抽出し、抽出された４つの電子透かし情報のうち３つの電子透かし情報が同一で、残りの１つの電子透かし情報が他の３つの電子透かし情報と異なっている場合、３つの同一の電子透かし情報が正しい電子透かし情報であると判定できる。
【０１５５】
なお、上述では、電子透かし情報に基づく各ドットを配置する形状を楕円形上であるとして説明したが、これはこの例に限定されない。各ドットを配置する形状は、三角形や矩形、さらに他の多角形であってもよいし、閉曲線であってもよい。
【０１５６】
また、第１の実施形態の第１の変形例および第２の変形例では、文書画像２００を４つの領域に分割しているが、分割数は４に限定されない。文書画像２００の分割数は３または２であってもよいし、５以上であってもよい。
【０１５７】
さらに、上述では、図１６、図１９および図２０を用いて説明した各ドットの配置規則がストレージ１１０３に予め記憶するように説明したが、これはこの例に限定されない。例えば、配置規則を、埋め込み画像が文書画像２００に埋め込まれた印刷画像が印刷される印刷物のヘッダやフッタに記録させることもできる。この場合、当該印刷物から印刷画像を読み取る際に、先ずヘッダやフッタに記録された配置規則をＯＣＲ(Optical  Character  Recognition)などで抽出する。復元処理部１５０（図１７参照）において、変更部１６２は、ヘッダやフッタから抽出された配置規則を用いてビット列６６を復元する。
【０１５８】
（第２の実施形態）
次に、第２の実施形態について説明する。上述した第１の実施形態および第１の実施形態の各変形例では、ｎブロック分のエラー訂正符号付き符号が結合されたビット列の各ビットの順序を、変更部１１３が予め定められた規則に従い変更し、順序が変更された変更ビット列に基づき、文書画像２００に埋め込むための埋め込み画像が生成されていた。これに対して、第２の実施形態では、文書画像２００に埋め込むための埋め込み画像を、ｎブロック分のエラー訂正符号付き符号が結合されたビット列から直接的に生成する。
【０１５９】
図２１は、第２の実施形態に係る埋め込み処理部の機能を説明するための一例の機能ブロック図である。なお、図２１において、上述した図１２と共通する部分には同一の符号を付して、詳細な説明を省略する。図２１において、埋め込み処理部１００’は、図１２に示した埋め込み処理部１００に対して、変更部１１３を含む埋め込みデータ生成部１１２と、埋め込み実行部１１４とが省略され、代わりに、埋め込み画像生成部１２０が含まれている。
【０１６０】
図２２は、第２の実施形態に係る電子透かし情報の埋め込み処理を示す一例のフローチャートである。なお、図２２において、上述した図１３のフローチャートと共通する処理には同一の符号を付して、詳細な説明を省略する。
【０１６１】
埋め込み処理部１００’は、ステップＳ２０で、埋め込み情報生成部１１０により特定情報４０から埋め込み情報を生成し、生成した埋め込み情報に基づきビット列を生成する。埋め込み情報生成部１１０は、生成したビット列を埋め込み画像生成部１２０に渡す。次のステップＳ２１で、埋め込み画像生成部１２０は、埋め込み情報生成部１２０から渡されたビット列をｎ個のブロックに分割し、分割したｎ個のブロックをエラー訂正符号生成部１１１に渡す。
【０１６２】
ステップＳ２２〜ステップＳ２６の処理により、エラー訂正符号生成部１１１は、埋め込み画像生成部１２０から渡されたｎ個のブロックそれぞれに基づきｎ個のエラー訂正符号を生成する。エラー訂正符号生成部１１１は、生成したｎ個のエラー訂正符号を埋め込み画像生成部１２０に渡す。
【０１６３】
次のステップＳ２７で、埋め込み画像生成部１２０は、埋め込み情報生成部１１０から渡されたビット列を分割したｎ個のブロックのそれぞれに、エラー訂正符号生成部１１１から渡されたｎ個のエラー訂正符号をそれぞれ付加して、ｎ個のエラー訂正符号付き符号を生成する。埋め込み画像生成部１２０は、生成したｎ個のエラー訂正符号付き符号を結合して埋め込みデータを生成する。
【０１６４】
次のステップＳ２８’が、第２の実施形態に係る処理となる。ステップＳ２８’で、埋め込み画像生成部１２０は、生成した埋め込みデータから、規則に従い埋め込み画像を生成する。
【０１６５】
ここで、埋め込みデータのビット列における各ビット位置と、当該ビット列の各ビットを表すドットを配置する配置位置を示す各配置情報とを関連付けた配置テーブルを予め用意し、例えばストレージ１１０３に記憶する。配置情報は、例えば、上述した図１６（ａ）、図１６（ｂ）、図１９および図２０を用いて説明した規則の何れかに基づく配置とすることができる。
【０１６６】
埋め込み画像生成部１２０は、埋め込みデータによるビット列の先頭ビットからビットを順次に抽出する。埋め込み画像生成部１２０は、抽出したビットのビット列におけるビット位置に基づき配置テーブルを参照して、抽出したビットに関連付けられた配置位置を取得する。埋め込み画像生成部１２０は、抽出したビットを表すドットを、配置テーブルを参照して取得した配置位置に配置して埋め込み画像を生成する。
【０１６７】
ステップＳ２９で、埋め込み画像生成部１２０は、ステップＳ２８’で生成した埋め込み画像を、文書データ生成部１０１において文書情報４１に基づき生成された文書画像に埋め込んで、最終的な印刷画像を生成する。
【０１６８】
このように、文書画像２００に埋め込むための埋め込み画像を、ｎブロック分のエラー訂正符号付き符号が結合されたビット列から直接的に生成することによっても、１つのエラー訂正符号付き符号に含まれる各ビットが文書画像２００に分散して配置され、バーストエラーに対する耐性が向上される。
【０１６９】
（他の実施形態）
上述した第１の実施形態および第１の実施形態の各変形例、ならびに、第２の実施形態では、情報単位がビットであり、複数の情報単位によりビット列が形成されるように説明したが、これはこの例に限定されない。例えば、情報単位を４ビットあるいは８ビットといった複数ビットとしてもよい。
【０１７０】
情報単位が４ビットの場合、例えば、それぞれ白および黒でビット値を表す隣接する４個のドットのセットによる画像を、埋め込みを行う１つのドットと見做すことができる（見做しドットと呼ぶ）。例えば、４ビットを表すための４個のドットを、それぞれ２個のドットと隣接するように並べて、見做しドットを構成することができる。ＭＦＰ１０は、この見做しドットを、上述した第１の実施形態および第１の実施形態の各変形例で説明した配置規則および変更規則に従い文書画像に埋め込んで、印刷画像を生成する。
【０１７１】
これに限らず、例えば１ドットを１６階調のグレースケールの画像により形成し、各階調に４ビットで表現可能な１６の値をそれぞれ割り当ててもよい。また、４ビットで表現可能な１６の値にそれぞれ異なる色を割り当て、色を用いて１ドットを形成することも考えられる。情報単位が８ビットの場合も同様に、上述の見做しドット（８個のドットを１つの見做しドットとする）や、階調表現あるいは色分けを用いた１ドットの形成を適用することが可能である。
【０１７２】
なお、上述の各実施形態は、本発明の好適な実施の例ではあるがこれに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変形による実施が可能である。
【符号の説明】
【０１７３】
１０  ＭＦＰ
２０  ＰＣ
６４，６４1，６４2，６４20，６６  ビット列
６５，６５1，６５2，６５20  エラー訂正符号
１００  埋め込み処理部
１１０  埋め込み情報生成部
１１１  エラー訂正符号生成部
１１２  埋め込みデータ生成部
１１３  変更部
１１４  埋め込み実行部
１２０  埋め込み画像生成部
１５０  復元処理部
１６０  ドット抽出部
１６１  ビット判定部
１６２  変更部
１６３  エラー訂正処理部
１６４  埋め込み情報復元部
２００  文書画像
２０１ａ，２０１ｂ，２０１ｃ，２０１ｄ  分割領域
２０２，２０２’，２０２ａ，２０２ａ’，２０２ｂ，２０２ｂ’，２０２ｃ，２０２ｃ’，２０２ｄ，２０２ｄ’  埋め込み画像
１１０１  ＣＰＵ
１１０３  ストレージ
１１３０  エンジン部
１１３１  プロッタエンジン
１１３２  スキャナエンジン
１５５２  ＭＥＵ
【先行技術文献】
【特許文献】
【０１７４】
【特許文献１】特開２００６−２７９６４０号公報
【特許文献２】特開２０００−２６９８２４号公報
【図１】
2018129717.tif 000003
【図２】
2018129717.tif 000004
【図３】
2018129717.tif 000005
【図４】
2018129717.tif 000006
【図５】
2018129717.tif 000007
【図６】
2018129717.tif 000008
【図７】
2018129717.tif 000009
【図８】
2018129717.tif 000010
【図９】
2018129717.tif 000011
【図１０】
2018129717.tif 000012
【図１１】
2018129717.tif 000013
【図１２】
2018129717.tif 000014
【図１３】
2018129717.tif 000015
【図１４】
2018129717.tif 000016
【図１５】
2018129717.tif 000017
【図１６】
2018129717.tif 000018
【図１７】
2018129717.tif 000019
【図１８】
2018129717.tif 000020
【図１９】
2018129717.tif 000021
【図２０】
2018129717.tif 000022
【図２１】
2018129717.tif 000023
【図２２】
2018129717.tif 000024