(57)【要約】【課題】指定した箇所の複写時の劣化を防止する。【解決手段】ホストコンピュータにおいて実行されるドライバは、まず劣化防止箇所が指定されると、そのして箇所のオブジェクトについてＰＤＬデータを生成し（１３０３）、そのデータが、画像データに埋め込み可能であるか判定する（１３０４）。埋め込み可能であれば、画像全体について印刷用のビットマップデータを生成し、そのデータにＰＤＬデータを電子透かし情報として埋め込む（１３０５）。そして生成された印刷所の画像データをプリンタに送信して印刷させる。一方、その印刷物を複写する場合、複写装置において電子透かしを抽出し、抽出されたデータをＰＤＬデータとして解釈実行する。そして、生成された画像データを元の画像データに合成し、それを印刷出力する。【選択図】図１３
2005020436.tif 000002
【特許請求の範囲】
【請求項１】
出力対象画像のドットデータを生成する画像データ生成手段と、
前記ドットデータに、画像データの少なくとも一部に対応するコードデータを埋め込むコード埋め込み手段と、
前記コード埋め込み手段により埋め込まれたドットデータを出力手段により画像として出力させる手段と
を備えることを特徴とする画像処理装置。
【請求項２】
前記コード埋め込み手段は、前記出力対象画像のうち、指定されたオブジェクトを記述するページ記述言語で記述されたコードデータを生成し、そのコードデータを前記ドットデータに埋め込むことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
入力画像データから、該画像データに埋め込まれたコードデータの抽出を試みるコード抽出手段と、
前記抽出手段によりコードデータが抽出された場合、抽出されたコードデータに基づいて画像データを生成し、該画像データと、前記入力画像データとを合成する合成手段と
を備えることを特徴とする画像処理装置。
【請求項４】
前記合成手段は、前記コードデータをページ記述言語として解釈して画像データを生成し、該画像データに対応する画像が、前記入力画像データに対応する画像上で前記コードデータにより指定された位置に配置されるように、前記コードデータから生成された画像データと前記入力画像データとを合成することを特徴とする請求項３に記載の画像処理装置。
【請求項５】
請求項３または４に記載の画像処理装置と、
前記画像処理装置により合成された画像データを画像として出力するための画像形成手段と
を備えることを特徴とする画像形成装置。
【請求項６】
画像を画像データとして読み取る読み取り手段を更に備え、前記読み取り手段により読み取られた画像データを前記画像処理装置の入力画像データとすることを特徴とする請求項５に記載の画像形成装置。
【請求項７】
出力対象画像のドットデータを生成する画像データ生成工程と、
前記ドットデータに、画像データの少なくとも一部に対応するコードデータを埋め込むコード埋め込み工程と、
前記コード埋め込み工程により埋め込まれたドットデータを出力手段により画像として出力させる工程と
を備えることを特徴とする画像処理方法。
【請求項８】
入力画像データから、該画像データに埋め込まれたコードデータの抽出を試みるコード抽出工程と、
前記抽出工程によりコードデータが抽出された場合、抽出されたコードデータに基づいて画像データを生成し、該画像データと、前記入力画像データとを合成する合成工程と
を備えることを特徴とする画像処理方法。
【請求項９】
コンピュータにより実行することで、請求項１乃至６のいずれか１項に記載の画像処理装置を実現させるためのコンピュータプログラム。
【請求項１０】
請求項９に記載のプログラムを記録したことを特徴とするコンピュータ可読の記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、例えばページ記述言語等が埋め込まれた画像を出力し、あるいは、ページ記述言語等が埋め込まれた画像から画像を生成する画像処理装置に関する。
【０００２】
【従来の技術】
電子透かし（デジタルウォーターマーク）と呼ばれる、画像の中へのデータを埋め込みことが可能な既知の技術がある。電子透かしとは“不可視の”電子透かしとも呼ばれ、オリジナルの画像データに、人間の視覚では殆ど認識できないレベルのオリジナル画像データからの変化として所望のデータを埋め込む技術である。そして、電子透かしは、画像データに埋め込まれているか否かをその埋め込み方法に応じた方法で判定することができ、埋め込まれている場合には埋め込まれたデータを抽出することもできる。
【０００３】
電子透かしは、電子透かしが埋め込まれた画像データそのものから抽出できるのみならず、その画像データを印刷物に固定した場合にも、固定された画像を読み取って画像データを再生することで、その存在の判定及び抽出が可能である。
【０００４】
【特許文献１】特開２００１−１１９５６２号公報
【０００５】
【発明が解決しようとする課題】
ところで、コンピュータシステム等により生成された画像データを、印刷装置により用紙等に画像を形成した印刷物として出力した場合、その印刷物を原稿としてイメージスキャナや複写機等により画像として読み取って複写すると、複写された画像の品質は原稿の品質よりも劣化する。
【０００６】
このような複写による画像品質の劣化は多くの場合大きな問題にはならない。しかしながら、複写物を原稿とする複写を重ねれば画質の劣化により文字等の判読が困難な程度にいたる場合もある。あるいは、コンピュータ等による文字認識を目的としている場合、画質の劣化は直ちに認識率の低下をもたらす。さらに、文書中の署名や会社名といった特定の箇所については、複写物についてもできるだけ高品質で出力することが望ましい。
【０００７】
本発明は上記従来例に鑑みて成されたもので、電子透かし技術を利用することで、大規模なシステムを用いることなく複写による画像品質の劣化を防止することができる画像処理装置及び画像形成装置を提供することを目的とする。
【０００８】
【課題を解決するための手段】
上記目的を達成するため、本発明の画像処理装置は以下の構成を有する。
【０００９】
出力対象画像のドットデータを生成する画像データ生成手段と、
前記ドットデータに、画像データの少なくとも一部に対応するコードデータを埋め込むコード埋め込み手段と、
前記コード埋め込み手段により埋め込まれたドットデータを出力手段により画像として出力させる手段とを備える。
【００１０】
更に好ましくは、前記コード埋め込み手段は、前記出力対象画像のうち、指定されたオブジェクトを記述するページ記述言語で記述されたコードデータを生成し、そのコードデータを前記ドットデータに埋め込む。
【００１１】
あるいは、本発明の画像処理装置は、入力画像データから、該画像データに埋め込まれたコードデータの抽出を試みるコード抽出手段と、
前記抽出手段によりコードデータが抽出された場合、抽出されたコードデータに基づいて画像データを生成し、該画像データと、前記入力画像データとを合成する合成手段とを備える。
【００１２】
更に好ましくは、前記合成手段は、前記コードデータをページ記述言語として解釈して画像データを生成し、該画像データに対応する画像が、前記入力画像データに対応する画像上で前記コードデータにより指定された位置に配置されるように、前記コードデータから生成された画像データと前記入力画像データとを合成する。
【００１３】
更に好ましくは、本発明の画像形成装置は、上記画像処理装置と、
前記画像処理装置により合成された画像データを画像として出力するための画像形成手段と
を備える。
【００１４】
更に好ましくは、画像を画像データとして読み取る読み取り手段を更に備え、前記読み取り手段により読み取られた画像データを前記画像処理装置の入力画像データとする。
【００１５】
【発明の実施の形態】
［第１実施形態］
本発明の第１の実施形態として、図１２に示した、コンピュータ１２０１およびそれに接続されたプリンタ１２０３、複写機を有するシステムについて説明する。プリンタ１２０３は、コンピュータ１２０１から受信した印刷データに基づいて印刷出力を行う。また、そのプリンタ１２０３により印刷された文書を複写するための複写機１２０４も本実施形態のシステムの一部を構成する。この複写機１２０４はコンピュータ１２０１と接続されている必要はない。しかしながら、複写機１２０４とプリンタ１２０３とを兼ねるデバイス、たとえばディジタル複合機（以下単に複合機と呼ぶ。）と呼ばれるデバイスであれば、このプリンタと複写機の機能を１台で実現できる。その場合には、本実施形態のシステムを構成する装置は、コンピュータとその複合機で十分である。複合機は、コンピュータに接続されたプリントしての機能、画像スキャナで原稿を読み取りそれをプリンタにより出力する複写機としての機能、画像スキャナで読み取った画像をコンピュータに送信する機能、電話回線に接続されてファクシミリ送信やファクシミリ受信の機能等を遂行することができる。
【００１６】
図１６はコンピュータ１２０１及びプリンタ１２０３を接続したシステムのブロック図である。図１６において、ホストコンピュータ１２０１では、ＣＰＵ１６０１によりＲＡＭ１６０２に記憶された文書処理プログラムを実行して図形、イメージ、文字、表（表計算等を含む）等が混在した文書処理を実行し、また、プリンタドライバプログラムを実行して、作成された文書データ等に含まれるオブジェクトをプリンタで解釈可能なＰＤＬで表された形式に変換する。また、後述する手順を実行して、電子透かし埋め込み処理を行う。ＣＰＵ１は、このほかシステムバス４に接続される各デバイスを統括的に制御する。キーボードコントローラ（ＫＢＣ）１６０５は、キーボード１６０９や不図示のポインティングデバイスからのキー入力を制御する。ＣＲＴコントローラ（ＣＲＴＣ）１６０６は、ＣＲＴディスプレイ１６１０の表示を制御する。ディスクコントローラ（ＤＫＣ）１６０７は、ブートプログラム、文書処理等の種々のアプリケーション、プリンタドライバプログラム等を記憶するハードディスク（ＨＤ）やフロッピー（登録商標）ディスク（ＦＤ）等の外部メモリ１１とのアクセスを制御する。プリンタコントローラ（ＰＲＴＣ）１６０８は、所定の双方向インターフェース（双方向Ｉ／Ｆ）１２０２を介してプリンタ１２０３に接続されて、プリンタ１２０３との通信制御処理を実行する。
【００１７】
プリンタ１２０３においては、プリンタＣＰＵ１６１２は、ＲＯＭ１６１３あるいはＲＡＭ１６１９に記憶された制御プログラム等に記憶された制御プログラム等に基づいてシステムバス１６１５に接続される各種のデバイスとのアクセスを統括的に制御し、印刷部Ｉ／Ｆ１６１６を介して接続される印刷部（プリンタエンジン）１６１７に出力情報としての画像信号を出力する。ＣＰＵ１６１２は双方向Ｉ／Ｆ１２０２を介してホストコンピュータ１２０１との通信処理が可能となっており、プリンタ内の情報等をホストコンピュータ１２０１に通知可能に構成されている。ＲＡＭ１６１９はＣＰＵ１６１２の主メモリ、ワークエリア等として機能するＲＡＭである。入力部１６１８はホストコンピュータ１２０１と双方向インターフェース１２０２を介して印刷状態情報などのステータス情報などの交信を制御し、プリンタ内の情報等をホストコンピュータ１２０１に通知可能に構成されている。メモリコントローラ（ＭＣ）１６２０は、ブートプログラム、種々のアプリケーション、フォントデータ、ユーザファイル、編集ファイル等を記憶するハードディスク（ＨＤ）、フロッピー（登録商標）ディスク（ＦＤ）等の外部メモリ１６１４とのアクセスを制御する。操作部１０１２は、表示パネルやキーボードを含んでおり、オペレータへの情報の提供や、オペレータからの指示の入力を行わせる。
【００１８】
なお複写機１２０４は、図１６のコンピュータ１２０１の代わりに画像スキャナを接続して入力部１６１８から読み込まれた画像データを入力する構成としたものと考えることができるため、図示は省略する。
【００１９】
このような構成において、本実施形態のシステムでは以下のような機能を遂行する。
【００２０】
＜本実施形態のシステムの概略機能＞
本実施形態にかかるコンピュータ１２０１により実行される、プリンタを制御するドライバプログラムは、接続されたプリンタにより印刷させる印刷データをビットマップ形式で生成し、ページ記述言語（ＰＤＬ）で記述された、指定されたオブジェクトを表すＰＤＬコードを、その印刷データに電子透かしとして一定の手順で埋め込んで、印刷ジョブとしてプリンタ１２０３に送信する。それをコンピュータ１２０１から受信したプリンタ１２０３は受信したデータに応じた画像を印刷する。
【００２１】
一方、そのようにして印刷された画像は、複写機１２０４の画像スキャナにより読み取られると、コンピュータ１２０１により埋め込まれた電子透かしの有無が判定され、電子透かしが含まれていればそれを抽出して抽出されたコードをＰＤＬで記述されたコマンド及びパラメータとして解釈して実行する。その結果得られる画像データは、画像スキャナにより読み取られた画像データに上書きするなどして合成され、複写機１２０４によって印刷出力される。
【００２２】
まず電子透かしの埋め込みおよび抽出の技術について説明する。
【００２３】
［電子透かし埋め込み処理部］
図１は、本実施形態のプリンタドライバプログラムの備える電子透かし処理に関する機能ブロック（電子透かし処理部）を示す図である。プリンタドライバの電子透かし処理部は、機能上は、画像入力部１０１、埋め込み情報入力部１０２、鍵情報入力部１０３、電子透かし生成部１０４、電子透かし埋め込み部１０５、画像出力部１０６を有する。上記各部はそれぞれの処理に必要な機能を概念的なものとして捉えたものであり、たとえば個々のソフトウエアモジュールに相当する。なお、ここで説明する埋め込み処理はハードウエア処理により実現されても良い。なお以下の説明においてメモリとは、コンピュータ１２０１のＲＡＭ１６０２などであり、画像データや埋め込まれる付加情報、また作業に利用される領域がメモリに割り当てられる。また、以下の説明では各ブロックの出力データが次のブロックの入力データとなるものとして記載されているが、データは共通のメモリに格納され、各機能ブロックはそのメモリに出力を書き込み、次のブロックはその内容を参照することでデータの入出力を実現することもできる。
【００２４】
（画像入力部）
まず、画像入力部１０１の機能について説明する。画像入力部１０１には電子透かしの埋め込み対象となる画像を表す画像データＩが入力される。この画像データＩは、文書処理アプリケーションで作成された文書データ等を電子透かしの埋め込み処理の対象となるビットマップデータに変換したものである。ビットマップデータは、たとえば１画素をＲＧＢそれぞれ８ビットで表現したフルカラー画像データや、１画素を８ビット階調で表現したモノクロ画像データなどである。その画像データＩは画像入力部１０１から出力され、電子透かし埋め込み部１０５に入力され、電子透かしが埋め込まれる単位毎、たとえば１ページのシート上に形成される画像データごとにメモリに記憶される。画像入力部１０１が、このビットマップデータを生成する機能を有していても良い。
【００２５】
なお以降の説明では、説明を簡単にするために、画像データＩはモノクロの多値画像を表現しているものとするが、本発明はこのような場合には限定されない。例えばカラー画像データ等の複数の色成分からなる画像データに対して電子透かしを埋め込むならば、その複数の色成分である例えばＲＧＢ成分、或いは輝度、色差成分の夫々を上記モノクロの多値画像として扱う様にし、各成分に対して電子透かしを埋め込めばよい。この場合には、モノクロ多値画像へ電子透かしを埋め込む場合と比較して、約３倍のデータ量を埋め込むことが可能となる。
【００２６】
（埋め込み情報入力部）
次に、埋め込み情報入力部１０２の機能について説明する。埋め込み情報入力部１０２には、画像データＩに電子透かしとして埋め込むべきバイナリデータ列が入力される。そのバイナリデータ列は埋め込み情報入力部１０２から出力され、電子透かし生成部１０４に入力されてメモリに記憶される。以下、埋め込まれるバイナリデータ列を付加情報Ｉｎｆと呼ぶ。付加情報Ｉｎｆは、“０”または“１”の何れかを表すビットの組み合わせによって構成される情報である。この付加情報ｉｎｆは、画像データＩの著作者を特定する著作権情報を表していたり、画像データＩの利用者を特定する利用者情報を表していたりする。本実施形態では、付加情報ｉｎｆは、ＰＤＬで記述した印刷すべきオブジェクトのコードデータである。後述する手順でプリンタドライバによって生成されたＰＤＬコードは、同じくプリンタドライバにより実現される埋め込み情報入力部１０２により電子透かし処理部に入力される。すなわち、生成されたＰＤＬコードを付加情報ｉｎｆとしてメモリの所定のアドレスに記憶する。
【００２７】
なお、付加情報Ｉｎｆは、その付加情報Ｉｎｆが容易に悪用されない様に暗号化されていても良い。付加情報Ｉｎｆは、この付加情報Ｉｎｆが電子透かしとして埋め込まれた画像データＩに対して、悪意を持った人間により、付加情報Ｉｎｆが画像データＩから抽出できない様に内容変更（以下攻撃と呼ぶ）が施された場合にも、正しくその付加情報Ｉｎｆを抽出できる様に、誤り訂正符号化が施されても良い。ただし、本実施形態では、付加情報ｉｎｆについて暗号化や誤り訂正符号化は行わない。なお上記攻撃には故意によらない攻撃も有る。例えば、一般的な画像処理（非可逆圧縮、輝度補正、幾何変換、フィルタリングなど）が、結果として電子透かしを除去してしまうことも有り、この場合も攻撃であると言える。このような暗号化および誤り訂正符号化などの処理の詳細は公知であるので本明細における詳しい説明は省略する。以降では、ｎビットで表現される付加情報を埋め込む例について詳しく説明する。
【００２８】
（鍵情報入力部）
次に、鍵情報入力部１０３の機能について説明する。鍵情報入力部１０３には付加情報Ｉｎｆの埋め込みおよび抽出に必要な鍵情報ｋが入力されてハードディスクやＲＡＭ等のメモリに格納される。入力は、コンピュータ１２０１のキーボード等によりオペレータから入力されたり、あるいは、コンピュータにより自動生成することもできる。その鍵情報ｋは鍵情報入力部１０３から出力されて電子透かし生成部１０４に入力される。
【００２９】
ここで鍵情報ｋとはＬ（正数）ビットで表される実数である。Ｌ＝８の正数として表現する場合には、“０１０１０１０１”が鍵情報ｋの一例であり、例えば、正の整数として表現する場合には“８５”として与えられる。鍵情報ｋは、後述する擬似乱数発生部２０２で実行される擬似乱数発生処理に初期値として与えられる。電子透かし埋め込み処理部および後述する電子透かし抽出処理部において共通の鍵情報ｋを使用した場合に限り、電子透かしとして埋め込まれている付加情報Ｉｎｆを正しく抽出することが可能である。即ち、鍵情報ｋを所有している利用者だけが付加情報Ｉｎｆを正しく抽出することができる。
【００３０】
（電子透かし生成部）
次に、電子透かし生成部１０４の機能について説明する。電子透かし生成部１０４には埋め込み情報入力部１０２から付加情報Ｉｎｆ、及び鍵情報入力部１０３から鍵情報ｋが入力され、入力され記憶された付加情報Ｉｎｆと鍵情報ｋとに基づいて電子透かしｗが生成され、生成された電子透かしｗが出力される。生成された電子透かしｗはこれもメモリに記憶される。
【００３１】
＜電子透かしの生成処理＞
電子透かし生成部１０４の機能の詳細について図２を用いて説明する。図２に示すように、電子透かし生成部１０４は基本行列生成部２０１、擬似乱数発生部２０２、及び擬似乱数割り当て部２０３から構成される。
【００３２】
まずはじめに基本行列生成部２０１の機能について説明する。基本行列生成部２０１では、基本行列ｍが生成される。生成された基本行列ｍは出力され、擬似乱数割り当て部２０３に入力される。ここで基本行列ｍとは付加情報Ｉｎｆを構成する各ビットの位置と、前記各ビットが埋め込まれる画像データＩ上の画素位置を対応付けるために用いられる行列である。
【００３３】
ここでは、基本行列生成部２０１は複数の基本行列を選択的に利用することが可能である。そしてどの基本行列を用いるかは、その時の目的／状況に応じて変化させる必要が有り、本発明ではこれら基本行列の切り替えにより最適な電子透かし（付加情報Ｉｎｆ）の埋めこみが可能である。
【００３４】
基本行列ｍの具体例を図３に示す。行列３０１は１６ビットから構成される付加情報Ｉｎｆを埋め込む場合に用いられる基本行列ｍの一例を示したものである。行列３０１に示す様に１６ビットの付加情報Ｉｎｆを埋め込むために、例えば４×４の基本行列ｍが用いられ、更に１から１６の数字が基本行列内の各要素に割り当てられている。
【００３５】
図３から分かる様に、この説明では、基本行列ｍ内の要素の値と付加情報Ｉｎｆのビット位置が対応付けられるものとする。具体的には、基本行列ｍ内の要素の値が“１”の位置に付加情報Ｉｎｆのビット位置“１”のビット情報（最上位ビット）を埋め込み、同様に、基本行列ｍ内の要素の値が“２”の位置に付加情報Ｉｎｆのビット位置“２”のビット情報（最上位ビットの次のビット）を埋め込む。基本行列ｍは、メモリ１６０２やハードディスク１６１１に予め用意されている。
【００３６】
次に、擬似乱数発生部２０２の機能について説明する。擬似乱数発生部２０２には、鍵情報入力部１０３から鍵情報ｋが入力され、鍵情報ｋを元に擬似乱数列ｒが生成される。鍵情報ｋは擬似乱数を発生させる場合の初期値として用いる値であり、予め本実施形態の電子透かし処理に用いるものとして定められた値がハードディスク１６１１等に保存されている。鍵情報ｋを初期値として生成された擬似乱数列ｒは擬似乱数割り当て部２０３に入力される。ここで擬似乱数列ｒとは、｛−１，１｝の範囲に含まれる一様分布に従う実数列である。生成される擬似乱数は初期値によって異なる系列となる。即ち、第１の鍵情報を用いて生成した第１の擬似乱数列と、第１の鍵情報とは異なる第２の鍵情報を用いて生成した第２の擬似乱数列は異なるが、第１の鍵情報と同一の第２の鍵情報を用いて生成した第２の擬似乱数列は、第１の擬似乱数列と同一である。擬似乱数列ｒを生成する方法は公知の技術であるので詳細な説明は省略する。生成された擬似乱数列ｒは擬似乱数割り当て部２０３に出力される。
【００３７】
次に、擬似乱数割り当て部２０３の機能について説明する。擬似乱数割り当て部２０３には、基本行列ｍと付加情報ｉｎｆ、擬似乱数列ｒとが入力される。そして、付加情報ｉｎｆの値を参照して、擬似乱数列ｒの各要素を基本行列ｍの所定の要素が配置された位置に割り当てて、電子透かしｗを生成する。以降では、基本行列ｍの所定の要素に乱数列が割り当てられた行列を電子透かしｗと呼ぶ。擬似乱数割り当て部２０３からは生成された電子透かしｗが出力される。
【００３８】
具体的には、少なくとも埋め込まれるビット数までカウントできるカウンタ変数をメモリに用意する。また、基本行列ｍに相当する大きさの行列が格納できる領域をメモリに確保する。なお、基本行列ｍの要素をｍ（ｉ，ｊ）、生成される電子透かしの要素をｗ（ｉ，ｊ）で表し、カウンタ変数をｃで表す。また、付加情報ｉｎｆのｉ桁目をｉｎｆ（ｉ）、擬似乱数列ｒの第ｉ番目の要素をｒ（ｉ）と表す。これらはすべてメモリ上に割り当てられた対応するロケーションを表す。そのロケーションに格納された内容はｖを名前の前に付して表す。たとえばカウンタ変数ｃの値はｖｃであり、付加情報ｉｎｆ（ｉ）の値はｖｉｎｆ（ｉ）である。また、擬似乱数列を生成する際には、ｒ（１）については、初期値として鍵情報ｋを用いて乱数生成の処理を実行することで生成する。ｒ（２）以降は、乱数生成の処理を実行することで順次乱数系列を生成させる。
【００３９】
まずカウンタ変数ｃの値ｖｃとして１をセットする。そのカウンタ変数ｃの値ｖｃにより基本行列ｍを走査する。基本行列ｍにおいて要素の値がカウンタ変数ｃの値と等しくなるもの、すなわちｖｍ（ｉ，ｊ）＝ｖｃなる要素ｍ（ｉ，ｊ）が見つかれば、その要素ｍ（ｉ，ｊ）に対応する配列ｗの要素ｗ（ｉ，ｊ）に、擬似乱数列ｒの第ｖｃ番目の要素ｒ（ｖｃ）の値ｖｒ（ｖｃ）を格納する。ただしその際、付加情報ｉｎｆの第ｖｃ番目の要素ｉｎｆ（ｖｃ）を参照し、その値ｖｉｎｆ（ｖｃ）が０であれば、値ｖｒ（ｖｃ）の符号を反転した値−ｖｒ（ｖｃ）を格納する。ｖｃを値とする要素は基本行列ｍには複数含まれている場合もあるので（後述する。）、以上の手順を基本行列ｍ全体について行う。
【００４０】
以上の手順を、カウンタ変数ｖの値ｖｃに１加算して繰り返す。そして、カウンタ変数ｃの値が、付加情報ｉｎｆの要素数に達するまで繰り返す。たとえば付加情報ｉｎｆが１６ビットであれば、カウンタ変数ｃに１加算する毎に上記手順を実行し、値１６について上記処理を完了したならば、電子透かしｗが完成する。
【００４１】
＜電子透かし生成方法の変形例＞
次に、行列３０１からの埋めこみ方法の変形例について説明する。
【００４２】
図３の行列３０２は８ビットから構成される付加情報Ｉｎｆを埋め込む場合に用いられる基本行列の他の一例を示したものである。行列３０２に示す基本行列は基本行列３０１の全要素のうち、１から８までの値を持つ要素だけを用いたものである。値を持たない要素の部分には付加情報Ｉｎｆを埋め込まない。値を持たない要素の部分には、たとえば０や、付加情報ｉｎｆの桁数（要素数）を越える数値を埋め込んでおく。行列３０２の様に付加情報Ｉｎｆを表す各ビットの埋めこみ位置を散らすことにより、基本行列３０１を用いて生成した電子透かしよりも、電子透かし（付加情報Ｉｎｆ）の埋めこみによる画像の変化（画質劣化）を認識しずらい電子透かしを生成できる。
【００４３】
図３の行列３０３は、行列３０２と同様に８ビットから構成される付加情報Ｉｎｆを埋め込む場合に用いられる基本行列ｍの一例を示したものである。行列３０２と行列３０３は夫々８ビットの付加情報Ｉｎｆを埋め込むことが可能な基本行列ｍであるが、行列３０２は全画素の５０％にあたる画素を付加情報Ｉｎｆの埋め込みに用いているのに対して、行列３０３では全画素（１００％）を付加情報Ｉｎｆの埋め込みに用いられる。即ち、１ビット埋め込むために行列３０２では基本行列中の１画素を用いているのに対して、行列３０３では基本行列中の２画素を用いて付加情報Ｉｎｆの１ビットを埋め込んでいる。行列３０３の様に、付加情報Ｉｎｆを表す各ビットを埋めこむ回数を増やすことにより、電子透かしが埋め込まれた画像に攻撃が加えられた場合には、行列３０１や行列３０２よりも、その電子透かし（付加情報Ｉｎｆ）を確実に抽出できる（攻撃耐性が有る）ことになる。
【００４４】
ここで、全画素中で電子透かしの埋め込みのために使用する画素の割合を、以降では充填率と呼ぶことにする。行列３０１を用いた場合充填率は１００％、行列３０２を用いた場合は充填率５０％、行列３０３を用いた場合は充填率１００％である。
【００４５】
図３の行列３０４は、行列３０３を用いた場合と同様に全画素を付加情報Ｉｎｆの埋め込みに用いている。即ち、充填率は１００％である。しかしながら、行列３０３は８ビットの付加情報Ｉｎｆを埋め込むのに対して、行列３０４を用いた場合には４ビットの付加情報Ｉｎｆしか埋め込まない。よって、１ビット埋め込むために行列３０３では基本行列中の２画素を用いているのに対して、行列３０４では基本行列中の４画素を用いて付加情報Ｉｎｆの１ビットを埋め込んでいる。行列３０４の様に、付加情報Ｉｎｆを表す各ビットを埋めこむ回数を増やすことにより、電子透かしが埋め込まれた画像に攻撃が加えられた場合には、行列３０１や行列３０２や行列３０３よりも、その電子透かし（付加情報Ｉｎｆ）を確実に抽出できる（攻撃耐性が有る）ことになる。ただし、攻撃耐性が非常に有る代わりに、埋め込む付加情報Ｉｎｆの情報量は４ビットとなり、行列３０１や行列３０２や行列３０３よりも少ない。
【００４６】
次に、上述した４つの例を表にまとめたものを示す。
2005020436.tif 000003
このように、基本行列ｍをどのような構成にするかによって、充填率と１ビットを埋め込むのに使用する画素数と埋め込み可能な情報量を選択的に設定することができる。上記表１では、充填率は主に電子透かしを埋め込んだ画像の画質に影響するパラメータであり、１ビットを埋め込むために使用する画素数は主に攻撃に対する耐性に影響するパラメータである。充填率を大きくすると電子透かしを埋め込んだ画像の質の劣化は大きくなり、１ビット埋め込むために使用する画素数を多くすると攻撃に対する耐性は強くなる。以上から分かる様に、電子透かしを実現する際には、埋めこみ対象の画質と電子透かしの攻撃に対する耐性と埋め込める付加情報Ｉｎｆの情報量がトレードオフの関係にある。
【００４７】
本発明においては、上述した複数種類の基本行列ｍを適応的に選択することによって、電子透かしの耐性と画質と情報量を制御、及び設定することが可能である。
【００４８】
＜電子透かし生成処理の例＞
ここで、擬似乱数列ｒの各要素を基本行列ｍの所定の要素に割り当てる前述した処理の詳細について例を用いて説明する。
【００４９】
まず、例として図３に示した基本行列３０４を用いる。前述したように基本行列３０４を用いることにより４ビットの情報を埋め込み可能である。
【００５０】
まずはじめに、基本行列３０４に示す基本行列内の各要素のうち、値として“１”を持つ要素をラスタースキャン順にスキャンして、順に擬似乱数列ｒの各要素を割り当てる。割り当てる際には、付加情報Ｉｎｆに応じて付加情報Ｉｎｆのビットが“１”の時は擬似乱数列ｒの要素をそのまま割り当て、一方で付加情報Ｉｎｆのビットが“０”の時は擬似乱数列ｒの要素に“−１”をかけた値を割り当てる。
【００５１】
次に、値として“２”をもつ要素において同様の処理を実行する。以上の処理を、値としてｎ（埋め込みビット数）を持つ要素までに対して実行する。以上の示した例によって生成された電子透かしｗの一例を図４に示す。電子透かし４０１は擬似乱数列ｒとしてｒ＝｛０．７，−０．６、−０．９，０．８｝という実数列、付加情報Ｉｎｆとして“１００１”という４ビットの情報を用いた場合の例である。
【００５２】
こうして生成された電子透かしｗは電子透かし生成部１０４の出力として出力され、電子透かし埋め込み部１０５に入力される。
【００５３】
尚、以上では説明のために１６ビット、８ビット及び４ビットの付加情報を埋め込むために４×４の基本行列を用いたが、本発明はこれに限らず、１ビット埋め込むために更に多くの画素を利用し、より大きなサイズの基本行列を用いる場合も本発明の範疇に含む。より大きなサイズの基本行列を用いた場合には、擬似乱数列もより長い実数列を用いることになる。実際には、説明に用いたような４要素から構成される乱数列では、後述する電子透かし抽出処理が正しく動作しない可能性がある。具体的には、付加情報Ｉｎｆが埋め込まれているにも関わらず、集積画像ｃと電子透かしｗ１、ｗ２、…、ｗｎとの相関係数が小さくなる可能性がある。よって、例えば６４ビットの付加情報を埋め込むために充填率５０％において２５６×２５６の基本行列を用いるような構成とする。この場合、１ビット埋め込むために５１２画素使用することになる。本実施形態では、付加情報ｉｎｆとしてＰＤＬで記述されたコードが画像に埋め込まれる。そこで、予想される埋め込むべきデータ量から逆に基本行列のスケール（あるいは充填率も）を決定するのが望ましい。たとえば充填率５０パーセントとすれば、埋め込むべきＰＤＬコードのサイズがｐビットであれば、３２√ｐ×３２√ｐ程度のサイズの基本行列が必要とされる。ＰＤＬデータのサイズは、記述するオブジェクトが文字列であればその文字数に応じてサイズがある程度決まるので、埋め込める文字列の長さを基準として基本行列のサイズを決定することもできる。
【００５４】
（電子透かし埋め込み部）
次に、電子透かし埋め込み部１０５の機能について説明する。電子透かし埋め込み部１０５では、画像データＩ及び電子透かしｗが入力され、画像データＩに電子透かしｗが埋め込まれ、電子透かしｗが埋め込まれた画像データＩ’が出力される。
【００５５】
電子透かし埋め込み部１０５の処理の詳細について説明する。電子透かし埋め込み部１０５では、
Ｉ’（ｉ，ｊ）＝Ｉ（ｉ，ｊ）＋ａ×ｗ（ｉ，ｊ）  …  （式１）
という式に従って、電子透かしの埋め込み処理が実行される。ここで、Ｉ’（ｉ，ｊ）は電子透かしが埋め込まれた画像データの画素、Ｉ（ｉ，ｊ）は電子透かしが埋め込まれる前の画像データの画素、ｗ（ｉ，ｊ）は電子透かしの要素、ｉ及びｊはそれぞれ画像Ｉ、Ｉ’の画素位置及び電子透かしｗの要素の位置（ｘ座標及びｙ座標）を表すパラメータ、定数ａは電子透かしの強度を設定するパラメータである。ただし、画像データは、電子透かしｗと同一サイズ（縦横の画素数が基本行列に対応するサイズ）の互いに重ならないブロックに分割され、式１はその個々のブロックについての演算を示す。このブロックを、以下マクロブロックと呼ぶ。
【００５６】
この処理は、画像入力部１０１により入力されてメモリに記憶された画像データについて、電子透かしｗのサイズに対応したマクロブロック毎に、当該マクロブロックの内容Ｉ（ｉ，ｊ）とメモリに記憶された定数ａおよび電子透かしｗ（ｉ，ｊ）とを参照して式１右辺の演算を実行し、それを画像データの当該マクロブロックＩ（ｉ，ｊ）に格納（あるいはマクロブロックに対応するあらたなメモリ領域Ｉ’（ｉ，ｊ）に格納）することで実行される。画像データがラスタイメージであれば、マクロブロックにおけるアドレスｉは着目マクロブロックの各ラインにおける先頭から末尾までの範囲となり、アドレスｊは着目マクロブロックの先頭ラインから末尾ラインまでの範囲となる。さらに、ひとつのマクロブロックについて式１の処理を終えたなら、次のマクロブロックについても同様の処理を行いつつ、画像データの全領域について式１の演算処理を施す。
【００５７】
例えば、定数ａの値としては“１０”程度の値が選択可能である。定数ａの値を大きく設定することによって耐性の強い電子透かしを埋め込むことが可能であるが、画質劣化が大きくなる。一方で、定数ａの値を小さく設定することによって電子透かしの耐性は弱くなるが、画質劣化は小さくすることが可能である。前述した基本行列ｍの構成と同様に、定数ａの値を適当に設定することにより、電子透かしの攻撃に対する耐性と電子透かしを埋め込んだ後の画像の画質のバランスを設定することが可能である。
【００５８】
式１に示した電子透かし埋め込み処理の具体例として、４×４の基本行列ｍを用いた場合の例を図５に示す。図５において行列５０１は式１における画像データのマクロブロックＩ’、行列５０２は画像データのマクロブロックＩ、行列５０３は電子透かしｗを表す。図５に示すように、式１の演算は行列内の各要素に対して実行される。
【００５９】
以上、式１（図５）に示した演算処理は実際には入力された画像データＩの全体に対して繰り返し実行される。例えば、入力された画像データＩが２４×２４画素から構成されている場合の例を図６に示す。図６に示すように、入力された画像データＩは４×４画素から構成される互いに重ならないマクロブロックに分割され、分割された夫々のマクロブロックに対して式１（図５）に示した演算処理が繰り返し実行される。
【００６０】
全てのマクロブロックに対して繰り返し電子透かしの埋め込み処理を実行することにより、結果的に画像全体に電子透かしを埋め込むことが可能である。更に、１つのマクロブロックにはｎビットから構成される付加情報Ｉｎｆの全体が埋め込まれている。このことから、少なくともマクロブロックが１つあれば埋め込んだ付加情報Ｉｎｆを抽出することができる。即ち、埋め込んだ付加情報Ｉｎｆを抽出するために画像データＩの全体を必要とはせず、画像データＩの一部（少なくともひとつのマクロブロック）があれば十分である。
【００６１】
このように画像データＩの一部から電子透かしを完全に抽出可能であることを「切り取り耐性がある」と呼ぶ。マクロブロック単位の電子透かし埋め込み処理を画像全体に繰り返し実行することにより、電子透かしに切り取り耐性を持たせることが可能である。こうして電子透かし埋め込み部１０５により生成された電子透かし埋め込み済み画像Ｉ’は、画像出力部１０６を通じて、電子透かしの埋め込み処理部の最終的な出力として出力される。
【００６２】
本実施形態においては、出力された画像データＩ’はいったんメモリ等に格納されて、プリンタ１２０３により解釈実行可能なＰＤＬデータ等に変換する処理が施されて、プリンタ１２０３に対して出力される。
【００６３】
［電子透かし抽出処理部］
次に、以上で述べた電子透かしの埋め込み処理部によって埋め込まれた電子透かしを抽出する方法について説明する。以下、図７を用いて本発明に適用される電子透かしの抽出処理部（機能）を説明する。電子透かし処理部は、本実施形態においては複写機１２０４に実装されている。機能上は、抽出処理部は、画像入力部７０１、鍵情報入力部７０２、電子透かし生成部７０３、電子透かし抽出部７０４、電子透かし出力部７０５を有する。上記各部はそれぞれの処理に必要な機能を概念的なものとして捉えたものであり、たとえば個々のソフトウエアモジュールに相当する。なお、ここで説明する埋め込み処理はハードウエア処理により実現されても良い。なお以下の説明においてメモリとは、コンピュータ１６１２（複写機の構成についても、画像スキャナ部の他は図１６のプリンタの構成を参照する。）のＲＡＭ１６１９などであり、画像データや埋め込まれる付加情報、また作業に利用される領域がＲＡＭ１６１９等のメモリに割り当てられる。また、以下の説明では各ブロックの出力データが次のブロックの入力データとなるものとして記載されているが、データは共通のメモリに格納され、各機能ブロックはそのメモリに出力を書き込み、次のブロックはその内容を参照することでデータの入出力を実現することもできる。
【００６４】
（画像入力部）
まず、画像入力部７０１の機能について説明する。画像入力部７０１には電子透かしが埋め込まれている可能性がある画像データＩ”が入力される。複写機１２０４においては、画像入力部７０１は画像を読み取って対応する画像データを生成する画像スキャナと考えることができる。
【００６５】
画像入力部７０１の出力は電子透かし抽出部７０４に入力される。入力された画像データＩ”はいったんメモリに格納される。尚、画像入力部７０１によって入力される画像データＩ”は、前述した電子透かしの埋め込み処理部によって電子透かしが埋め込まれた画像データＩ’に限定されることはない。もちろん、電子透かしが埋め込まれた画像データＩ’である場合もあるが、画像データＩ’が攻撃された画像であっても良い。更に、電子透かしが埋め込まれていない画像データＩであっても良い。電子透かし抽出部では、別途入力される抽出パターンを用いて、後述する電子透かしの抽出処理が行われる。
【００６６】
（鍵情報入力部）
次に、鍵情報入力部７０２の機能について説明する。鍵情報入力部７０２において電子透かしを抽出するための鍵情報ｋが入力され、その出力は抽出パターン生成部７０３に入力される。ここで、入力される鍵情報ｋは、前述した電子透かしの埋め込み処理部における鍵情報入力部１０３によって入力されたものと同一のものでなければならない。異なる鍵情報が入力された場合には正しく付加情報を抽出することは出来ない。即ち、正しい鍵情報ｋを有する利用者だけが正しい付加情報Ｉｎｆ’を抽出することが可能である。
【００６７】
具体的には、鍵情報入力部７０２は、操作部１０１２などから入力された鍵情報をたとえばハードディスクやＲＯＭあるいはＲＡＭ等にを格納し、格納された鍵情報を読み出して抽出パターン生成部７０３に渡す。また、複写機１２０４がコンピュータ１２０１に接続されている場合には、コンピュータ１２０１から通信により獲得することもできる。これは、プリンタドライバによる電子透かし埋め込み処理により埋め込まれた電子透かしを画像から抽出するためには、鍵情報ｋは、電子透かし生成部１０４が用いた鍵情報ｋと同一の鍵情報ｋを抽出時にも用いる必要があるためである。
【００６８】
（抽出パターン生成部）
次に、抽出パターン生成部７０３の機能について説明する。抽出パターン生成部７０３には鍵情報入力部７０２から鍵情報ｋが入力され（あるいは記憶された鍵情報を読み）、入力された鍵情報ｋに基づいて抽出パターンが生成され、その抽出パターンが出力され、メモリに記憶される。
【００６９】
抽出パターン生成部７０３の処理の機能の詳細について図８を用いて説明する。図８に示すように、抽出パターン生成部７０３は基本行列生成部８０１、擬似乱数発生部８０２、及び擬似乱数割り当て部８０３から構成される。
【００７０】
ここで、基本行列生成部８０１は前述した電子透かし生成部１０４の基本行列生成部２０１と、更に擬似乱数発生部８０２は擬似乱数発生部２０２と同じ動作であるので詳細な説明は省略する。但し、基本行列生成部８０１において生成される基本行列と基本行列生成部２０１において生成される基本行列は同一のものでなければ正しく付加情報を抽出することはできない。
【００７１】
次に、擬似乱数割り当て部８０３の機能の詳細について説明する。擬似乱数割り当て部８０３には基本行列ｍと擬似乱数列ｒが入力され、擬似乱数列ｒの各要素が基本行列ｍの所定の要素に割り当てられる。ここで、前述した電子透かし生成部１０４（図２）で用いられた擬似乱数割り当て部２０３との違いは、擬似乱数割り当て部２０３においては出力される電子透かしｗは一つであったのに対して、擬似乱数割り当て部８０３からは埋め込み情報量の数（本発明ではｎ個）だけ抽出パターン出力されることである。
【００７２】
具体的には、少なくとも埋め込まれるビット数までカウントできるカウンタ変数をメモリに用意する。また、基本行列ｍに相当する大きさの行列を、抽出しようとする電子透かしとして埋め込まれている付加情報ｉｎｆの桁（ビット）の数だけ格納できる領域をメモリに確保する。なお、基本行列ｍの要素をｍ（ｉ，ｊ）、生成される抽出パターンの要素をｗ（ｋ，ｉ，ｊ）で表し、カウンタ変数をｃ１，ｃ２で表す。ｉ，ｊは行列の各要素の位置を表し、ｋは生成される抽出パターンの番号（１≦ｋ≦ｎ）を表す。また、擬似乱数列ｒの第ｉ番目の要素をｒ（ｉ）と表す。これらはすべてメモリ上に割り当てられた対応するロケーションを表す。そのロケーションに格納された内容はｖを名前の前に付して表す。たとえばカウンタ変数ｃ１の値はｖｃ１である。
【００７３】
（１）まずカウンタ変数ｃ１の値ｖｃ１として１をセットする。
（２）カウンタ変数ｃ２の値ｖｃ２として１をセットする。
（３）そのカウンタ変数ｃ１の値ｖｃ１により基本行列ｍを走査する。基本行列ｍにおいて要素の値がカウンタ変数ｃ１の値と等しくなるもの、すなわちｖｍ（ｉ，ｊ）＝ｖｃ１なる要素ｍ（ｉ，ｊ）が見つかれば、その要素ｍ（ｉ，ｊ）に対応する第ｖｃ１番目の配列ｗにおける位置（ｉ，ｊ）の要素、すなわちｗ（ｖｃ１，ｉ，ｊ）に、擬似乱数列ｒの第ｖｃ２番目の要素ｒ（ｖｃ２）の値ｖｒ（ｖｃ２）を格納する。
（４）そして、カウンタ変数ｃ２の値ｖｃ２に１を加算し、（３）からの処理、すなわち基本行列ｍの値ｖｃ１による走査を繰返し行う。この場合、走査は続きから行われる。この手順を基本行列ｍ全体について走査が終了するまで繰り返す。
（５）値ｖｃ１について基本行列ｍ全体の走査が終了したなら、カウンタ変数ｃ１の値ｖｃ１に１を加算し、（２）からの処理を繰返し行う。これを、カウンタ変数ｃ１の値が１〜ｎについて繰り返して行う。以上の手順により、ｎ個の抽出パターンｗ１〜ｗｎが完成し、メモリ上に生成される。なおｗ１などと表記する場合の添付数字は、上記抽出パターンのインデックスｋに相当する。
【００７４】
なお、擬似乱数列を生成する際には、ｒ（１）については、初期値として鍵情報ｋを用いて乱数生成の処理を実行することで生成する。ｒ（２）以降は、乱数生成の処理を実行することで順次乱数系列を生成させる。
【００７５】
＜抽出パターン生成処理の例＞
ここで、擬似乱数列ｒの各要素を基本行列ｍの所定の要素に割り当てる機能の詳細について例を用いて説明する。基本行列ｍの例として図３に示した基本行列３０４を用いる。基本行列３０４を用いた場合、４ビットの付加情報を埋め込み可能であり、擬似乱数割り当て部８０３からは４個の抽出パターンｗ１、ｗ２、ｗ３、ｗ４が出力される。
【００７６】
まずはじめに、基本行列３０４の各要素のうち、値として“１”を持つ要素をラスタースキャン順にスキャンして、順に擬似乱数列ｒの各要素を割り当てる。基本行列３０４の各要素のうち、値として“１”を持つ要素全てに擬似乱数列ｒの各要素の割り当てが終了したら、擬似乱数列ｒを割り当てた行列を抽出パターンｗ１として生成する。図９に抽出パターンの例を示す。抽出パターンｗ１（９０１）は擬似乱数列ｒとしてｒ＝｛０．７，−０．６、−０．９，０．８｝という実数列を用いた場合の例である。以上の処理を、基本行列３０４の各要素のうち、値として“２”、“３”、“４”を持つ要素全てに対して実行し、夫々抽出パターンｗ２（９０２）、抽出パターンｗ３（９０３）、抽出パターンｗ４（９０４）として生成する。こうして生成された抽出パターンｗ１、ｗ２、ｗ３、ｗ４を合わせると、各要素の値は、電子透かしの埋め込み処理部で用いられた電子透かしｗの対応する要素の絶対値に等しくなる。生成された抽出パターンｗ１、ｗ２、ｗ３、ｗ４は抽出パターン生成部７０３から出力され、電子透かし抽出部７０４に入力される。
【００７７】
（電子透かし抽出部）
次に、電子透かし抽出部７０４の機能について説明する。電子透かし抽出部７０４では、画像データＩ’及び抽出パターンｗ１、ｗ２、…、ｗｎが入力され、抽出パターンｗ１、ｗ２、…、ｗｎを用いて画像データＩ’から付加情報Ｉｎｆ’を抽出し、抽出された付加情報Ｉｎｆ’を出力する。ここで、望ましくは抽出された付加情報Ｉｎｆ’は埋め込んだ付加情報Ｉｎｆに等しい。しかしながら、電子透かしを埋め込んだ画像データＩ’が種々の攻撃を受けている場合には必ずしも付加情報Ｉｎｆと付加情報Ｉｎｆ’は一致しない。
【００７８】
電子透かし抽出部７０４の機能の詳細について説明する。電子透かし抽出部７０４では、入力された画像データＩ’から生成された集積画像ｃと抽出パターンｗ１、ｗ２、…、ｗｎとの相互相関が夫々計算される。ここで、集積画像ｃとは、入力された画像データＩ”をマクロブロックの大きさ（基本行列の大きさ）の互いに重ならないブロックに分割し、分割された夫々のブロックの要素（画素）の値の平均値を算出し、その平均値を要素とする行列（画像データ）である。
【００７９】
集積画像ｃについて図１０に示した具体例を用いて説明する。図１０は４×４画素の抽出パターンと２４×２４画素の画像Ｉ”が入力された場合の集積画像ｃの例である。図１０において、画像データ１００１は、２４×２４画素の画像データＩ”が４×４画素の互いに重ならないブロックに分割された例を示す。図１０に示す例の場合、３６個のブロックに分割されている。この３６個のブロックのにおいて、対応する位置にある要素の値の平均値を求め、その平均値を要素とする行列が集積画像ｃ１００２である。すなわち、メモリに格納された画像データＩをマクロブロックに対応するｎ個のブロックに分割し、そのｋ番目のブロックＩＢ（ｋ）の位置（ｉ，ｊ）の要素をＩＢ（ｋ，ｉ，ｊ）とすれば、集積画像の各要素は、ｃ（ｉ，ｊ）＝ΣＩＢ（ｋ，ｉ，ｊ）／ｎで与えられる。ここでΣはｋについて１〜ｎまでの総和を意味する。
【００８０】
こうして生成された集積画像ｃと抽出パターンｗ１、ｗ２、…、ｗｎとの相互相関が各々計算される。相関係数を計算する具体的な方法について、集積画像ｃと抽出パターンｗｎの相関係数を計算する場合の例を用いて説明する。
相関係数は、集積画像ｃと抽出パターンｗｎの類似度を測定する統計量であり、
ρｎ＝（ｃ’Ｔ・ｗ’ｎ）／｜ｃ’Ｔ｜・｜ｗ’ｎ｜    …  （式２）
と表される。ここで、ｃ’及びｗｎ’はそれぞれ、集積画像ｃおよび抽出パターンｗｎの各要素から、それぞれの行列の要素の平均値を引いた値を要素とする行列である。ｃＴは行列ｃの転置行列である。ρｎは−１から＋１の値の範囲の値をとる。集積画像ｃと抽出パターンｗｎが正の相関が強い時にρｎは＋１に近づき、一方で集積画像ｃと抽出パターンｗｎが負の相関が強い時にρｎは−１に近づく。ここで「正の相関が強い」とは、「集積画像ｃが大きいほど抽出パターンｗｎが大きくなる」という関係のことであり、「負の相関が強い」とは「集積画像ｃが大きいほど抽出パターンｗｎが小さくなる」という関係のことである。また、集積画像ｃと抽出パターンｗｎが無相関の時には、ρｎは０となる。
【００８１】
こうして算出した相互相関の結果によって、入力された画像データＩ”に付加情報Ｉｎｆ’が電子透かしとして埋め込まれているか否か、更に、埋め込まれている場合には付加情報Ｉｎｆ’を構成する各ビットが１であるか０であるかを判定する。
【００８２】
集積画像ｃと抽出パターンｗ１、ｗ２、…、ｗｎとの相関係数ρ１、ρ２、…、ρｎを夫々算出し、算出された相互相関の結果が０に近い場合には「付加情報が埋め込まれていない」、相互相関の結果が０から離れた正数の場合には「ビット１」、相互相関の結果が０から離れた負数の場合には「ビット０」であると夫々判断する。０に近いか否かは、あらかじめ定めたしきい値を基準として判定される。すなわち、第ｉ番目の抽出パターンｗｉについての相関係数ρｉとしきい値ｔｈ１およびｔｈ２とを比較し、以下の通り判定される。ここでｔｈ１は一定値以下の負数であるか否かを判定するためのしきい値であり、ｔｈ２は一定値以上の正数であるか否かを判定するためのしきい値である。
（１）ｔｈ１＜ρｉ＜ｔｈ２の場合、抽出しようとする付加情報の第ｉビットは埋め込まれていない。
（２）ｔｈ１≧ρｉの場合、抽出しようとする付加情報の第ｉビットは０である。
（３）ｔｈ２≦ρｉの場合、抽出しようとする付加情報の第ｉビットは１である。
【００８３】
なお、付加情報が埋め込まれていないと判定された桁（ビット）と、埋め込まれていると判定されたビットとが混在している場合には、たとえばしきい値ｔｈ１を一定値増加させ、ｔｈ２を一定し減少させてから、再度判定を行うなどしてもよい。その結果全てのビットが埋め込まれていると判定されたなら、そのビット列を付加情報の値と決定し、埋め込まれていないと判定されるビットが残るのであれば、付加情報は埋め込まれていないものと判定してもよい。
【００８４】
以上説明した相互相関を求めることは、集積画像ｃと抽出パターンｗ１、ｗ２、…、ｗｎの夫々が、どれくらい類似しているかを評価することに等しい。即ち、前述した電子透かしの埋め込み処理部によって、画像データＩ”（集積画像ｃ）の中に抽出パターンｗ１、ｗ２、…、ｗｎが埋め込まれている場合には、これらは比較的類似しており、この類似の度合いが相互相関値として算出される。更に、ビット”１”が埋め込まれている場合（抽出パターンｗ１、ｗ２、…、ｗｎが加えられている場合）には相互相関値は正となり、一方で、ビット”０”が埋め込まれている場合（抽出パターンｗ１、ｗ２、…、ｗｎが減じられている場合）には相互相関値は負になる。
【００８５】
具体例として、図１１に前述した４ビットの付加情報“１００１”が埋め込まれた画像データＩ”（集積画像ｃ）からｗ１、ｗ２、ｗ３、ｗ４を用いて電子透かしを抽出する例を示す。
【００８６】
まず、集積画像ｃと４つの抽出パターンｗ１、ｗ２，ｗ３、ｗ４（４ビットの付加情報Ｉｎｆ’に対応）との相互相関値が夫々算出される。入力された画像データＩ’（集積画像ｃ）に付加情報Ｉｎｆ’が埋め込まれている場合には、相関係数は夫々”１、−１、−１，１”と算出され、このことから付加情報Ｉｎｆ’は“１００１”と判定でき、最終的に４ビットの付加情報Ｉｎｆ’を抽出することが可能である。
【００８７】
こうして抽出されたｎビットから構成される付加情報Ｉｎｆ’は電子透かし出力部７０５を通じて出力される。この際に、前述した電子透かしの埋め込み処理部において、付加情報Ｉｎｆが埋め込まれる時に、誤り訂正符号化処理や暗号化処理が施されている場合には、夫々誤り訂正復号処理や暗号復号処理が実行される。得られた情報が最終的に抽出されたバイナリデータ列（付加情報Ｉｎｆ’）として出力される。
【００８８】
この手法では、印刷物に対して、８００ピクセル×６００ピクセル程度の多値画像に１２８ビット程度のデータを埋め込むことが知られており、他にもさまざまな既知の埋め込み手法が存在する。８００×６００程度のサイズは、画素密度を６００ｄｐｉとすれば、実寸にして３５ミリ×２５ミリ程度のサイズとなる。埋め込めるデータ量は単純にそのサイズに比例するものとすれば、Ａ４サイズ（２１０ミリ×２９０ミリ）の画像であれば、限られた長さの文字列オブジェクトを定義したＰＤＬコードを埋め込むためには十分な容量がある。なお、この容量は基本行列によって決定されるため、使用される基本行列が決定された時点で予め知ることができる。そのため、付加情報のデータ量とその容量とを埋め込み処理の前に比較することができる。
【００８９】
＜本実施形態におけるプリンタドライバにおける出力処理＞
次に、添付の図面を参照して本発明に係る一実施形態を説明する。
【００９０】
図１３は本実施形態におけるコンピュータシステムにより提供される、ページ記述言語が埋め込まれた画像データを生成するためのシーケンスを示すフローチャートである。この処理プログラムはコンピュータシステム１２０１上で提供され、一般的にはドライバソフトウェアと呼ばれる、印刷装置専用の出力ソフトウェアで実現される。ドライバソフトウェアは各種のアプリケーションへ印刷機能を提供しており、さまざまな設定が可能であり印刷装置特有のページ記述言語を生成し、印刷装置へ出力することで印刷を実現している。
【００９１】
次に図１３を参照してドライバソフトウエアがプリンタ１２０３に送信する印刷データを生成する処理手順を述べる。
【００９２】
ページ記述言語が埋め込まれた画像データを生成するために、まずユーザが印刷設定を行うことで画像劣化を防止したい箇所を指定させる（１３０１）。
【００９３】
この指定は、たとえば画像のプレビュー表示をユーザが見て、そのプレビュー画面上において、ポインティングデバイス等により所望の箇所を指摘することで行われる。プレビュー表示機能は文書処理などのアプリケーションプログラムには備えられているが、その画像上で位置を指定するための機能は通常有していない。そこで、アプリケーションプログラムに、プレビュー画面上で位置を指定させる機能と、指定された位置をプリンタドライバに渡すための機能を設けることでこれを実現できる。あるいは、プリンタドライバは通常種々の設定をユーザに行わせるためのユーザインターフェースを備えているので、その機能のひとつとしてプレビュー表示機能を設け、そのプレビュー画面上で位置を指定させることもできる。この場合、アプリケーションは無関係なので劣化防止位置を指定できるか否かはアプリケーションに依存しない。劣化防止箇所が指定された場合には、指定された旨のフラグおよび指定された箇所（位置あるいは範囲）を記憶する。
【００９４】
印刷開始等の指示が入力された場合、劣化防止箇所が指定されているか否か、ステップ１３０１で記憶したフラグを基準として判定する（１３０２）。
【００９５】
ユーザが劣化防止範囲を指定していない場合は、一般的な印刷と同様に画像データを生成し（１３０７）、印刷装置へデータを出力する（１３０６）。
【００９６】
一方、劣化防止箇所が指定されている場合には、次に、ドライバソフトウェアにおいて、劣化防止箇所として指定された箇所について、ページ記述言語（ＰＤＬ：Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）を用いたＰＤＬコードデータを生成する（１３０３）。この際、指定された箇所を含むオブジェクトがＰＤＬ化される。たとえば、指定された箇所に文字オブジェクトが含まれていれば、その文字がＰＤＬデータに変換される。もちろん、そのオブジェクトが配置される位置等もＰＤＬデータには含まれる。
【００９７】
なお、この段階でＰＤＬ化するオブジェクトの種類に制限を設けることもできる。たとえば、指定された箇所に含まれる文字オブジェクトのみをＰＤＬコードへの変換の対象とすることもステップ１３０３において実現できる。もちろん、グラフィクスオブジェクトのみをＰＤＬ化したり、あるいは文字及びグラフィクスをＰＤＬ化の対象とすることもできる。ビットマップデータをＰＤＬ化の対象とすることも可能ではあるが、その場合には変換後のデータ量を減少させるために、圧縮処理を施してから、圧縮されたデータをＰＤＬ化の対象とする等の方法を講じることが望ましい。
【００９８】
そして、生成されたデータが、ページ全体を印刷した際にその画像中に埋め込むことができるサイズかどうかを判定する（１３０４）。この判定は前述したように、基本行列としてどのような行列が用いられるかによって決定される埋め込み可能なデータ容量を基準として行える。
【００９９】
ステップ１３０４における判定の結果、生成されたページ記述言語のデータサイズが埋め込むことができない場合は、印刷不可能の旨をユーザへ通知し、再度ユーザに印刷の設定を促す。
【０１００】
一方、判定の結果、ページ記述言語のデータサイズが埋め込むことができる場合は、ページ記述言語を埋め込んだ、ページ記述言語で表現した画像データを生成する（１３０５）。そのためにまず印刷対象の画像全体をビットマップデータとして展開する。そして、前述した付加情報ｉｎｆとしてステップ１３０３で生成されたＰＤＬコードデータを、画像データＩとして展開されたビットマップデータを、図１の埋め込み情報入力部１０２および画像入力部１０１それぞれに渡すことで、図１の埋め込み処理部によりＰＤＬコードデータの画像データへの埋め込みが実行される。図１の各ブロックは、本実施例においてはソフトウエアモジュールとして実現されているので、埋め込み情報入力部１０２および画像入力部１０１へのデータの引き渡しは、たとえば各データのアドレスの引き渡し等により実現できる。
【０１０１】
そして印刷装置へ生成した画像データを出力する（１３０６）。画像データの出力に際しては、電子透かしが埋め込まれた画像データ全体についてプリンタ１２０３が解釈実行可能なＰＤＬデータに変換されてからプリンタ１２０３に送信される。その際、画像データに埋め込まれたページ記述言語は画像の中のイメージの一部となっているため、プリンタ１２０３は電子透かしが埋め込まれていない通常の画像データとして印刷を行うことが可能である。
【０１０２】
＜本実施形態における複写機における複写処理＞
図１４は本実施形態における印刷装置１２０３あるいは複写機１２０４により提供される、印刷装置１２０３から出力された画像を、複写機１２０４の画像読み取り部から読み取り、読み取られた画像からページ記述言語を抽出し、抽出されたページ記述言語を解釈し画像を生成し、読み取られた画像データと編集（合成）して出力を行う処理シーケンスを示すフローチャートである。
【０１０３】
まず、画像を複写機１２０４に装着されている画像読み取り部から読み取る（１４０１）。複写機１２０４はページ記述言語のコードデータが電子透かしとして含まれるかどうかを読み取った画像から判断を行い（１４０２）、ページ記述言語が含まれない場合は何もしない。ページ記述言語のコードデータが電子透かしとして含まれているか否かの判定及び抽出は、上述した「電子透かし抽出処理部」について説明した通りの手順で行われる。すなわち、読み込んだ画像データを図７の画像入力部７０１に画像データＩ”として引き渡すことで、電子透かし抽出処理部により電子透かしの判定及び抽出が行われる。
【０１０４】
ページ記述言語が含まれておりそれが抽出された場合は、ページ記述言語を解釈して印刷用データを生成する（１４０３）。ただし、解釈できないコードが含まれている場合（たとえば実行中に文法エラーが生じる場合など）には、抽出されたコードに誤りがあるか、あるいは偶然にも本発明とは無関係な目的のために挿入された電子透かしが抽出された場合であると考えられるので、印刷用データの生成は行わない。
【０１０５】
その後、画像読み取り部からステップ１４０１で読み取った画像から印刷用データ（ビットマップデータ）を生成し（１４０４）、埋め込まれたページ記述言語から生成した印刷用データがあれば、それを読み取った画像から生成した印刷用データへ上書きすることで、最終的な印刷用データを作成する（１４０５）。もちろん、上書きはページ記述言語で定義されたオブジェクトの位置にされる。そして印刷用データを用いて画像形成を行う（１４０６）。
【０１０６】
以上の手順により、電子透かしとして埋め込まれたＰＤＬデータを元に画像データを生成し、それを電子透かしが埋め込まれた画像データに上書き合成することで、指定された部分あるいはオブジェクトについては、複写による画質の劣化を防止することができる。
【０１０７】
［第１実施形態の変形例］
なお、図１３の手順は、印刷装置において行うこともできる。その場合には、印刷装置はコンピュータからＰＤＬデータで記述されたコードである印刷データを受信するとともに、出力画像に埋め込まれるコードがそのＰＤＬのコードのうちどの部分であるかの指定も受信する。印刷装置は、受信した印刷データをプリントエンジンで出力可能な形式の２値あるいは多値のドットデータに変換し、変換されたドットデータに、指定されたＰＤＬのコード（２進コード）を、上述した電子透かしの方法を用いて埋め込む。
【０１０８】
このほか、複製禁止の旨の文字列に相当するＰＤＬコードを電子透かしとして文書に埋め込み、複製時にそれを文書に上書きして複製物であることを明示することもできる。
【０１０９】
また、ファクシミリ送信に際しても本発明のＰＤＬコードの埋め込みを行うことができる。ファクシミリ受信した場合には、一端ファクシミリデータをメモリ上で復号し、そこから上述した電子透かしの判定及び抽出を行う。そして、コードが抽出されたなら、そのコードをＰＤＬとして解釈し、生成された画像を複合されたファクシミリ画像に合成して出力する。
【０１１０】
ファクシミリ画像は一般に複写された文書に比べて画像品質の劣化の程度が著しいいため、一層本発明の効果が発揮される。そして、特筆すべきは、このようにしてＰＤＬが埋め込まれたデータであっても画像としては通常の画像と変わりなく処理できるために、特に本発明にかかる機能を備えたファクシミリ装置を送受信の相手としていなくとも、通常のファクシミリ通信と変わるところなく通信を行うことができる。
【０１１１】
また、図１４のステップ１４０３においてＰＤＬデータから画像データを生成する際に、文字やグラフィクスオブジェクトについては、指定された線の幅よりも若干太くした線の画像データを生成することで、上書き位置の多少の位置ずれや、元の画像における境界線の劣化等をより改善する効果を得ることができる。
【０１１２】
［第２実施形態］
図１５は本実施形態における印刷装置により提供される、印刷装置から出力された画像を前記印刷装置の画像読み取り部から読み取り、読み取られた画像からページ記述言語を抽出し、抽出されたページ記述言語を解釈し画像を生成し、読み取られた画像データと編集し出力を行うシーケンスを示すフローチャートである。
【０１１３】
この手順も図１４と同様複写機により実行されるプログラムである。
【０１１４】
まず、ページ記述言語が埋め込まれた画像を印刷装置１２０３あるいは複写機１２０４に装着されている画像読み取り部から読み取る（１５０１）。印刷装置はページ記述言語が含まれるかどうかを読み取った画像から判断を行い（１５０２）、ページ記述言語が含まれない場合は何もしない。ページ記述言語が含まれた場合は、ページ記述言語を解釈し印刷用データを生成する（１５０３）。印刷装置１２０３あるいは１２０４が複数のプロセスの並行処理が可能な装置である場合、ステップ１５０２の処理と並行して、画像読み取り部から１５０１で読み取った画像から印刷用データを生成し（１５０４）、埋め込まれたページ記述言語から生成した印刷用データがあれば、それを読み取った画像から生成した印刷用データへ上書きすることで、最終的な印刷用データを作成する（１５０５）。そして印刷用データを用いて出力を行う（１５０６）。
【０１１５】
以上のように、本実施形態においても第１実施形態と同様に、コンピュータシステムから印刷装置へ出力を行う際に、画像劣化を防ぐ必要のある箇所をあらかじめ指定して印刷を行わせることを可能とし、指定された箇所の情報を画像へ埋め込むことが可能な大きさで表現し、印刷物を再度印刷装置の画像読み取り部より読み取り印刷を行う場合に、指定された箇所の画像の劣化を防ぎ、しかも大規模なシステムを必要としない画像処理システムを提供できるる。
【０１１６】
くわえて、本実施形態では、処理の一部を並列実行するために、印刷出力が開始されるまでの時間が短縮される。
【０１１７】
なお、本発明は、複数の機器（例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機、ファクシミリ装置など）に適用してもよい。
【０１１８】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体（または記録媒体）を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても達成される。
【０１１９】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコード自体およびプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０１２０】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【０１２１】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【０１２２】
【発明の効果】
以上のように、本発明によれば、コンピュータシステムから印刷装置へ出力を行う際に、画像劣化を防ぐ必要のある箇所をあらかじめ指定し、指定された箇所の画像をコード化して出力画像に埋め込むことが可能となり、印刷物を画像読み取り部より読み取り印刷を行うなどして複写する場合に発生する画像劣化を、指定された箇所については防止できる。
【図面の簡単な説明】
【図１】本発明における電子透かしの埋め込み処理の一例を説明するブロック図
【図２】本発明における電子透かし生成部の一例を説明するブロック図
【図３】本発明における基本行列の一例を示す図
【図４】本発明における電子透かしの一例を示す図
【図５】本発明における電子透かし埋め込み演算の一例を示す図
【図６】本発明におけるマクロブロックの一例を示す図
【図７】本発明における電子透かしの抽出処理の一例を説明するブロック図
【図８】本発明における抽出パターン生成部の一例を示す図
【図９】本発明における抽出パターンの一例を示す図
【図１０】本発明における集積画像を用いた電子透かしの抽出の一例を説明する図
【図１１】本発明における集積画像を用いた電子透かしの抽出演算の一例を説明する図
【図１２】本発明における実施形態の一例を示すブロック図
【図１３】本発明における実施形態の一例を示すフローチャート
【図１４】本発明における実施形態の一例を示すフローチャート
【図１５】本発明における実施形態の一例を示すフローチャート
【図１６】本発明におけるシステム構成を示すブロック図
【符号の説明】
１２０１      ホストコンピュータ
１２０２      ネットワーク
１２０３      画像読み取り部を有する印刷装置
１２０４      画像読み取り部を有する印刷装置
【図１】
2005020436.tif 000004
【図２】
2005020436.tif 000005
【図３】
2005020436.tif 000006
【図４】
2005020436.tif 000007
【図５】
2005020436.tif 000008
【図６】
2005020436.tif 000009
【図７】
2005020436.tif 000010
【図８】
2005020436.tif 000011
【図９】
2005020436.tif 000012
【図１０】
2005020436.tif 000013
【図１１】
2005020436.tif 000014
【図１２】
2005020436.tif 000015
【図１３】
2005020436.tif 000016
【図１４】
2005020436.tif 000017
【図１５】
2005020436.tif 000018
【図１６】
2005020436.tif 000019