(57)【特許請求の範囲】
【請求項１】
各画素が２m の階調を持つディジタルの原画像を縦・横に所定個数の画素からなる複数のブロックに分割し，
前記分割された各ブロックのそれぞれに対し，そのブロックの座標位置に対応してモジュローｐ（ｐ≦ｍ）のハッシュ関数により０〜（ｐ−１）の一つを算出し，
当該ブロックを構成する複数の各画素の２0 〜２m-1 の同じ重みに対応する値同士で構成するｍ個のビットプレーンの中から前記ハッシュ関数により算出された値に対応する重みのビットプレーンを取り出し，
前記取り出されたビットプレーンを構成する所定個数のビット中に，当該原画像のブロック位置に対応する２値の署名画像の１画素の値を埋め込むため，
前記取り出されたビットプレーンを構成する全てのビットについて“１”（または“０”）の合計の偶奇を求め，
前記署名画像の前記ブロックに対応する位置の画素の値が“１”か“０”かに応じて，前記ビットプレーンの中の“１”（または“０”）の個数が偶数（または奇数）になるようにビットプレーン内の任意の一つの画素の値を変更して１画素の値を埋め込むことにより署名済画像を得ることを特徴とする濃淡画像への署名方法。
【請求項２】
各画素が２m の階調を持つディジタルの原画像を縦・横に所定個数の画素からなる複数のブロックに分割し，
前記分割された各ブロックのそれぞれに対し，そのブロックの座標位置に対応してモジュローｐ（ｐ≦ｍ）のハッシュ関数により０〜（ｐ−１）の一つを算出し，
当該ブロックを構成する複数の各画素の２0 〜２m-1 の同じ重みに対応する値同士で構成するｍ個のビットプレーンの中から前記ハッシュ関数により算出された値に対応する重みのビットプレーンを取り出し，
前記取り出されたビットプレーンを構成する所定個数のビット中に，当該原画像のブロックに対応する位置に濃淡画像である署名画像の１画素の値を埋め込むため，
前記取り出されたビットプレーンの中の中心位置のビットを除いて，周囲の各画素に対応する各ビットの中に，前記署名画像の前記ブロックに対応する位置の１画素の各重みに対応する全ビットを設定することにより１画素の値を埋め込むことにより署名済画像を得ることを特徴とする濃淡画像への署名方法。
【請求項３】
請求項１または２の何れかにおいて，
前記ハッシュ関数として，モジュローｐにより前記ブロックの位置を表す数値（ｉ，ｊ）を加算または乗算を行う関数を使用することを特徴とする濃淡画像への署名方法。
【請求項４】
請求項１により２値の署名画像が署名された署名済画像を縦・横に所定個数の画素からなる複数のブロックに分割し，
前記分割された各ブロックのそれぞれに対し，そのブロックの位置に対応して前記署名画素の埋め込みに使用したハッシュ関数により一つの値を算出し，
当該ブロックを構成する複数の各画素の２0 〜２m-1 の同じ重みに対応する値同士で構成するｍ個のビットプレーンの中から前記ハッシュ関数により算出された値に対応する重みのビットプレーンを当該ブロックから取り出し，
前記取り出されたビットプレーン内の“１”（または“０”）の個数の奇・偶を判別し，奇数の場合は当該ブロックに対応する署名画像の画素を“０”（または“１”），偶数の場合は“１”（または“０”）と判別し，
署名済画像の全ブロックから対応する２値の署名画像の全体の画像を復号することを特徴とする署名画像の復号方法。
【請求項５】
請求項２により濃淡の署名画像が署名された署名画像を縦・横に所定個数の画素からなる複数のブロックに分割し，
前記分割された各ブロックのそれぞれに対し，そのブロックの位置に対応して前記署名画素の埋め込みに使用したハッシュ関数により一つの値を算出し，
当該ブロックを構成する複数の各画素の２0 〜２m-1 の同じ重みに対応する値同士で構成するｍ個のビットプレーンの中から前記ハッシュ関数により算出された値に対応する重みのビットプレーンを当該ブロックから取り出し，
前記取り出されたビットプレーンの中の中心位置のビットを除いて，周囲の各画素に対応する複数ビットを，署名画像の前記ブロックに対応する位置の画素の各重みに対応するビットとして抽出し，
署名済画像の全ブロックから対応する濃淡画像である署名画像を復号することを特徴とする署名画像の復号方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は濃淡画像への署名方法及び復号方法に関する。
近年，多種多様な画像データがネットワークを経由して多くの人に利用され，ネットワークのユーザはこれらの画像を容易に取得して複製できるので，他人の著作物であるという権利意識が薄い。同様にＣＤＲＯＭ等の媒体に記録されたデジタル画像についても，簡単に複製が可能であるために著作権の侵害が問題になっており，効果的な保護方法の開発が望まれている。
【０００２】
【従来の技術】
ネットワーク上を伝送される画像や，ＣＤＲＯＭ等の記録媒体に記録された画像等のいわゆるマルチメディア（または電子メディア）の画像は一般のユーザにより簡単に取得することができると共に，原本と同じものを複製することが容易であるため，画像の著作権が侵害される可能性が非常に高くなっている。
【０００３】
そのため，近年，マルチメディアの著作権を保護するための研究として，次の▲１▼〜▲３▼の報告を含めて種々の提案がなされている。
▲１▼『著作権保護機能を有する文書画像データの構成法』，松谷秀久外３名，信学技報，ＩＳＥＣ９４−５８，ＰＰ５９−６８，Ｍａｒｃｈ  １９９５
▲２▼『著作権処理のためのシステム構造の提案』，喜多村，情処研報，Ｖｏｌ．９５．ＮＯ．３７，ＡＶＭ−８，ＰＰ．１２９−１３４，Ｍａｒｃｈ  １９９５
▲３▼『ディジタル画像の著作権保護方式』，小池外２名，ＳＣＩＳ９３−１３Ｃ，Ｊａｎ．１９９５  上記の▲１▼〜▲３▼の従来の提案は，いずれの場合も，予め著作権に関する事項を原画像に埋め込んでおき，システムが常時監視できるようにするものである。
【０００４】
画像の中に著作権を表す事項を埋め込む方法としては，明るさを利用する方法，暗さを利用する方法，変化を利用する方法，縁（エッジ）を利用する方法，データ圧縮のための直交変換（フーリエ変換等）時に挿入する方法等がある。
【０００５】
【発明が解決しようとする課題】
上記した従来の方法では，画像に署名情報を埋め込むので，それがノイズとなり画質劣化を引き起こすという問題があった。そのため劣化防止策として，視覚上影響の少ない部分に埋め込み位置を限定する方法が採られている。
【０００６】
しかし，埋め込み位置を限定することは，著作権を持たない第３者による埋め込み情報の検出が比較的容易であり，この埋め込み情報を除去して原画像の複製を行う攻撃に対して破られる可能性が高いという問題がある。
【０００７】
同様に，認証のための署名手法としても従来の方法では，埋め込まれた情報を削除または改ざんしようとする第３者からの攻撃に耐えることができるという保証がなかった。
【０００８】
本発明は濃淡画像を対象として視覚的にほとんど変化を与えることなく署名画像を埋め込むことが可能な濃淡画像への署名方法及び復号方法を提供することを目的とする。
【０００９】
【課題を解決するための手段】
本発明は各画素が２ｍ  の階調を持つディジタルの原画像を縦・横に所定個数の画素からなる複数のブロックに分割して分割された各ブロックのそれぞれに対し，そのブロックの座標位置に対応してモジュローｐ（ｐ≦ｍ）のハッシュ関数により０〜（ｐ−１）の一つを算出し，ブロックを構成する複数の各画素の２０  〜２ｍ−１  の同じ重みに対応する値同士で構成するｍ個のビットプレーンの中から前記算出された値に対応する重みのプレーンを取り出してそのビットプレーンの値の中に，当該原画像のブロックに対応する署名画像の中の当該ブロックに対応する位置の画素の値を埋め込み，埋め込まれたプレーンにより原画像の対応するプレーンを更新して署名画像を埋め込むものである。
【００１０】
図１は本発明の署名画像埋め込みの原理構成を示し，図２は本発明の署名画像復号の原理構成を示す。
図１において，１は原画像ブロック化手段，２はブロック対応位置決定手段，３は署名画素選択手段，４はブロック対応署名画素値埋め込み手段，１０は原画像データ，１１はブロックデータ，１２は署名画像データ，１３は署名済画像データである。
【００１１】
署名を埋め込みたい原画像データ１０はｎ×ｎ画素から成り，各画素が２ｍ  階調を表す重み２０  〜２ｍ−１  のｍビットで構成される。最初に原画像ブロック化手段１により，この原画像データ１０をＧとすると，全体をｑ×ｑ画素（ｑ≧３）のブロックに分割する。分割された各ブロックデータ１１をｇｉｊ（ｉ，ｊはブロックの原画像における位置を表す数値で，それぞれｑ画素毎に＋１される）とする。ここで，ブロックｇｉｊのｑ×ｑ個の画素の２０  〜２ｍ−１  の各重みに対応するｍ個のビットプレーンをｇｉｊ（ｋ）（ｋ＝０，１…，ｍ−１）とすると，ｇｉｊ（ｋ）はｑ×ｑビットの集まりである。ここで，ブロック対応位置決定手段２において出力のばらつきが均質で署名の埋め込み位置を一意に決定できる，次の式（１）に示す位置決定関数ｆとして予め決められたハッシュ関数を用い，ｉ，ｊを代入して，モジュローｐ（ｐ≦ｍ）の計算を行って，埋め込み用のビットプレーンｋ’を求める。
【００１２】
ｋ’＝ｆ（ｇｉｊ）（ｋ’＝０，１，…，ｐ−１）          （１）
署名画像データ１２として著作者のサイン，顔写真，会社のマーク等の著作権の証明になるものを２値または濃淡（多値）により表現した画像を用い，埋め込む署名画像のサイズは（ｎ／ｑ）×（ｎ／ｑ）画素とし，署名画素選択手段３は原画像の対象となるブロックの位置に対応する署名画像データ１２の１画素（ｓｉｊで表し，ｉ，ｊは署名画像の座標で，原画像のブロックｇｉｊのｉ，ｊに対応）を選択する。次にブロック対応署名画素値埋め込み手段４は，選択した署名画素の値を当該ブロックの埋め込み用のビットプレーンｋ’に埋め込む。すなわち，署名画像データ１２をＳとすると，Ｓの各画素ｓｉｊに対応するブロックの埋め込み用のビットプレーンｋ’のｑ×ｑビットの中に埋め込む。この時，当該ビットプレーンのｑ×ｑの中心ビット以外のビットに埋め込むようにしても良い。
【００１３】
このようにして，対象となる全てのブロックについて，ブロック対応位置決定手段２，ブロック対応署名画素値埋め込み手段４による動作を繰り返して，署名が埋め込まれた署名済画像データ１３が得られる。
【００１４】
なお，位置決定関数ｆの出力値はｋ＝０，１，…，ｐ−１の範囲内にあるが，ビットプレーン上のビットを変更すると同ブロック内の画素値は最大２ｐ−１  階調変動する可能性があり，ｋ’は小さい方が望ましい。一方，下位ビットは攻撃（署名を消す行為等）の対象となり易く，埋め込み位置として適当ではないが，本発明ではこの位置がブロックに対応して変動するため，攻撃に対し充分に対向することができる。
【００１５】
次に図２に示す構成において，１ａは上記図１により作成された署名済画像データ１３をブロック化する署名済画像ブロック化手段，２ａは署名済画像の各ブロックについて，対応する埋め込み位置を決定するブロック対応位置決定手段，３ａは署名画素値を検出して記憶する署名画素値識別手段，１３は上記図１と同様に署名済画像データ，１４はブロックデータ，１５は復号された署名画像データである。
【００１６】
復号を行う場合，署名済画像ブロック化手段１ａにより署名済画像データ１３について上記図１の１の場合と同様のサイズの画素数（ｎ／ｑ×ｎ／ｑ）でブロック化を行う。各ブロックデータ１４に対してブロック対応位置決定手段２ａは上記図１の２と同じハッシュ関数を用いた位置決定関数ｆの計算を行って，埋め込み用のビットプレーンｋ’を求める。次に署名画素値識別手段３ａにより，対象となるブロックからｋ’に対応するビットプレーンのデータを取り出して，埋め込まれた画素の値を識別する。識別された画素は署名画像データ１５に格納される。この復号の動作を各ブロックについて行うことにより，署名画像データ１５に全ての署名画素が復号される。
【００１７】
【発明の実施の形態】
図３は原画像が濃淡画像で署名画像２値の場合の処理フローである。
この実施例では，原画像が２５６（＝２８  ）階調を持つ写真，絵画等の画像で，各画素が２０  ，２  １，２２  …２７  の各重みに対応した８ビットで構成され，署名画像が２値（２０  の重みだけで０または１）画像であり，サインや２値の図形を表すものとする。また，原画像をブロック化する場合，１つのブロックを３×３＝９画素（上記図１の原理構成においてｑ＝３の場合）とする。
【００１８】
この２値の署名画像を署名する実施例では，原画像の各ブロックの中の選択されたビットプレーン中に署名画像の２値の画素の“１”，“０”に対応して，“１”の数を奇数に設定する。
【００１９】
以下の処理は，ＣＰＵ，メモリ，イメージリーダ等を備える情報処理装置（図示省略）において実行することができる。
最初に原画像を入力し（図３のＳ１），次に署名画像を入力すると（同Ｓ２），各画像はメモリのそれぞれの領域に各画像が格納される。この場合，原画像Ｇの画素数はｎ×ｎで２ｍ  階調であり，埋め込みを行う署名画像Ｓは原画像Ｇの縦，横の１／３の長さとし，画素数は（ｎ／３）  ×（ｎ／３）  画素で２０  階調（２値）であり，その画素をｓｉｊで表す。署名画像Ｓの各画素ｓｉｊは，“０”または“１”で，ｉ，ｊ＝０，１，…，ｎ／３である。
【００２０】
次に原画像をブロックに分割する（同Ｓ３）。この実施例では，３×３画素で１ブロックとし，各ブロックの３×３画素をｇｉｊで表し，ｉ，ｊは上記署名画像のｉ，ｊと同様に０，１，…，ｎ／３である。
【００２１】
原画像の座標をｉ，ｊとすると，最初にｉ＝０，ｊ＝０とし（図３のＳ４），原画像の最初のブロックについてハッシュ関数ｆの計算によりｋ’を求める（図３のＳ５）。
【００２２】
ハッシュ関数ｆは，種々の関数を使用することができるが，具体例を挙げると次の式（２），（３）で表す関数が簡単でありながらばらつきのある値を発生し，実施例ではこの一方を使用する。但し，（２），（３）以外にもｉ，ｊを用いた種々の関数を使用できることは可能である。
【００２３】
ｆ（ｇｉｊ）＝ｉ＋ｊ（モジュローｐ）            （２）
ｆ（ｇｉｊ）＝ｉ×ｊ（モジュローｐ）            （３）
但し，ｐ＝１，２，…，ｍであり，ｐ＝ｍとした場合，ｆ（ｇｉｊ）の計算結果として０，１，２，…，ｍ−１の何れか一つの値が得られ，２５６階調の場合はｍ＝８である。
【００２４】
この結果得られたｋ’に対応するビットプレーンを取得する（図３のＳ６）。図４はブロックとビットプレーンの説明図である。図４のＡは原画像を３×３画素（合計９画素）でブロック化した時の一つのブロックを表し，その中心の画素がｇｉｊである。ブロックを構成する９個の各画素はそれぞれ２５６階調の中の一つの階調を表す２０  ，２  １，２２  …２７  の各重みに対応した８ビットのデータにより構成され，各重みに対して“１”または“０”の値を持つ。このブロックの中の同じ重みに対応して水平方向の３×３（ビット）の平面がビットプレーンであり，ビットプレーンが上下方向に８枚積層されたものとしてＡに示されている。その上端のビットプレーンはＭＳＢ（最上位桁の２７  ）に対応し，下端のビットプレーンはＬＳＢ（最下位桁の２０  ）に対応している。
【００２５】
上記のハッシュ関数の演算により当該ブロック（座標ｇｉｊを含む）に対応するｋ’の値が求められると，図４のＢ．に示すように対応するビットプレーンが取り出され，ｇｉｊ（ｋ’）として示されている。このビットプレーンの各ビットデータをｇｂｉｔｔ  で表し，ｔをビットプレーン内の９個のビットデータの中の一つ（位置）を表すと，ｇｂｉｔｔ  ＝０または１，ｔ＝０，１，…８である。
【００２６】
図３の処理フローに戻ると，ビットプレーンが図４のＢに示すように取得されると，署名画素の埋め込みが開始される。最初に変数ｚ，ｔを０に設定する（同Ｓ７）。ｚはビットプレーン内の“１”（または“０”でもよいが以下の説明では“１”とする）の個数の計数値を表す変数であり，ｔはビットプレーン内のビットデータの個数の計数値を表す変数である。
【００２７】
ステップＳ８〜Ｓ１０の動作を繰り返して，ビットプレーン内の各ビット（ｇｂｉｔｔ  ）について“１”の場合は＋１の計数をして，変数ｚに計数値が得られる。計数を終了すると，原画像のブロックｇｉｊに対応する位置の署名画像ｓｉｊ（２値）が“１”か判別する（図３のＳ１１）。“１”の場合は，ｚの計数値が奇数であるか判別して（同Ｓ１２），偶数であれば全てのビットｇｂｉｔｔ  は元のままで，奇数であれば任意の１つのビット（ｇｂｉｔｔ  ）を反転する（同Ｓ１３）。また，ｓｉｊが“０”の場合は，ｚの計数値が偶数か判別し（同Ｓ１４），偶数であるなら任意のビット（ｇｂｉｔｔ  ）を反転して（同Ｓ１５）奇数にする。
【００２８】
このＳ１１〜Ｓ１５の処理により，図３の右側に示す署名のパターンとして示す▲１▼〜▲４▼の４つのケースの何れかに該当する判別が行われ，▲２▼，▲３▼の場合に原画像のビットプレーンの任意のビット（ｇｂｉｔｔ  ）が反転される。従って，署名画像のビットが“１”の場合，原画像の対応するビットプレーンの“１”の個数が奇数，“０”の場合は奇数に設定される。
【００２９】
図５は署名画素とビットプレーンの変化を示す例である。
この例では，Ａに示すようにビットプレーンｇｉｊ（ｋ’）の中のビット（ｇｂｉｔｔ  ）の“１”の個数が４個で，偶数の例である。この場合，対応する署名画像の画素ｓｉｊが“１”の場合は，Ｂに示すように，ビットプレーンの内容はそのままにし，画素ｓｉｊが“０”の場合はビットプレーン内の一つの“１”のビット（ｇｂｉｔｔ  ）が反転されて，“１”の合計個数を３個（奇数）にしている。
【００３０】
１つのブロックに対する署名画像の１画素の埋め込みが終了すると，図３のＳ１６〜Ｓ１９において順次，ｉ，ｊを更新して各ブロックについてＳ５以下の処理が実行されて，各ブロックに対し署名画像の各画素が埋め込まれると，原画像への署名画像の埋め込みが終了し，署名済画像が得られる。
【００３１】
上記図３に示す処理フローにより作成された署名済画像から２値の署名画像を復号することにより，原画像が署名者により作成されたことを証明することができる。
【００３２】
図６は署名済画像から２値の署名画像復号の処理フローである。
最初に，署名済画像（ｎ×ｎ画素，２５６階調）を入力し（図６のＳ１），ブロック分割を行う（同Ｓ２）。なお，メモリには予め復号する署名画像用の領域を確保しておく。このブロック分割は，上記署名画像の埋め込みの場合と同様に１ブロックを３×３画像とし，各ブロックをｇｉｊとし，ｉ，ｊは０，１，…，ｎ／３とする。次にｉ，ｊを０に設定し（同Ｓ３），最初のブロックの画素ｇｉｊについて，ハッシュ関数ｆを用いてｋ’（埋め込み用ビットプレーン）を決定する（同Ｓ４）。この時のハッシュ関数は，署名画像を埋め込み時と同じ関数を使用する。計算により求められたビットプレーン（３×３ビット）を取得すると，変数ｚ（“１”の個数の計数値），変数ｔ（ビットの個数の計数値）を用いてＳ６〜Ｓ９において，その全ビット（ｇｂｉｔｔ  ）内の“１”の個数を計数する。次に“１”の計数値を表すｚが奇数であるか判別し（図６のＳ１０），奇数の場合は対象となるブロックに対応する署名画像の画素ｓｉｊを“１”とし（同Ｓ１１），偶数の場合は画素ｓｉｊを“０”とする（同Ｓ１２）。
【００３３】
次にｉの値を更新して（図６のＳ１３），ｉ＞ｎ／３か判別し，ｉがｎ／３を越えない場合はステップＳ４に戻って同様の処理を繰り返し，ｉがｎ／３を越えると次にｊを更新する（同Ｓ１４）。このｊについてもｊ＞ｎ／３であるか判別し（図６のＳ１５），該当しないとステップＳ４に戻って同様の処理を繰り返して，ｊがｎ／３を越えると，原画像の全てのブロックについて復号が終了し，復号画像Ｒを合成して表示する。
【００３４】
図７は原画像と署名画像が共に濃淡画像の場合の署名の処理フローである。
この場合，原画像と署名画像は何れも２５６（＝２８  ）階調を持つ写真，絵，等の画像で，各画素が２０  ，２  １，２２  …２７  の各重みに対応した８ビットで構成されているものとする。
【００３５】
この濃淡を持つ署名画像を原画像に署名する実施例では，原画像の各ブロックの中の選択されたビットプレーン中に署名画像の濃淡画素の全ビット値を設定することを原理とする。
【００３６】
以下の処理は，上記図３と同様にＣＰＵ，メモリ，イメージリーダ等を備える情報処理装置（図示省略）において実行することができる。
最初に原画像を入力し（図７のＳ１），次に署名画像を入力すると（同Ｓ２），各画像はメモリのそれぞれの領域に格納される。また，原画像Ｇの画素数はｎ×ｎで２８  階調であり，埋め込みを行う署名画像Ｓは原画像Ｇの縦，横の１／３の長さとし，画素数は（ｎ／３）  ×（ｎ／３）  画素で２８  階調であり，その画素をｓｉｊで表し，ｉ，ｊ＝０，１，…，ｎ／３である。
【００３７】
次に原画像をブロックに分割する（同Ｓ３）。この実施例でも上記図３と同様に３×３画素で１ブロックとし，各ブロックの３×３画素をｇｉｊで表し，ｉ，ｊは上記署名画像のｉ，ｊと同様に０，１，…，ｎ／３である。
【００３８】
ブロックの座標をｉ，ｊとすると，最初にｉ＝０，ｊ＝０とし（図７のＳ４），原画像の最初のブロックについてハッシュ関数ｆの計算によりｋ’を求める。この場合のハッシュ関数ｆは，上記図３の場合と同様の関数を用いてｉ，ｊにより決定する。ｋ’は０，１，２，…，７の何れか一つの値であり，得られたｋ’に対応するビットプレーンを原画像のデータから取得する（図７のＳ５，Ｓ６）。
【００３９】
この場合のビットプレーンの構成は上記した図４のＢに，ｇｉｊ（ｋ’）として示され，ビットプレーンの各ビットデータをｇｂｉｔｔ  で表し，ｔをビットプレーン内の９個のビットデータの中の位置を表すと，ｇｂｉｔｔ  ＝０または１，ｔ＝０，１，…８である。
【００４０】
ビットプレーンが取得されると，署名画素の埋め込みが実行される。この場合，対象となるブロックに対応する署名画像の画素ｓｉｊの多値データｓｂｉｔｔ  （２０  ，２１  ，…，２ｍ−１  の各重みに対応する値から成る）を取得し（図７のＳ７），ｔ＝０として設定し，ｓｂｉｔｔ  をビットプレーンのｇｂｉｔｔ  としてセットし（同Ｓ８），以下ｔの値を更新してＳ９〜Ｓ１１のループにより署名画像の画素ｉｊの８ビットをビットプレーンのｇｂｉｔｔ  にセットする。但し，ビットプレーンは９ビットあるため，その中心のビットを除いた８ビットの位置に，画素ｓｉｊの８ビットの多値データｓｂｉｔｔ  を配置する。
【００４１】
図８にビットプレーンに濃淡の署名画像の画素を埋め込む例を示す。この場合，図８のＡに示す原画像のブロックから選択されたビットプレーンｇｉｊ（ｋ’）の９つのビット（ｇｂｉｔｔ  ）に対し，中心のビットを除いた周囲の８ビットにそれぞれ０〜７の位置を表す番号を付与する。一方，原画像の対象となるブロックに対応する署名画像の画素ｓｉｊの０〜ｍ−１の各重みに対応する８ビットのデータは図８のＢに示す値とすると，このＢに示す０〜７の値をＡに示す０〜７の位置に設定すると，図８のＣに示す署名画素が埋め込まれたビットプレーンが得られる。
【００４２】
一つの原画像の一つのブロックに対する署名画像の一つの画素の埋め込みが終わると，図７のＳ１２〜Ｓ１５の処理を介してｉ，ｊを更新してＳ５〜Ｓ１１の処理が繰り返され，全てのブロックに対し対応する署名画像の画素が埋め込まれると署名済画像が得られて終了する。
【００４３】
なお，この図７の実施例は，署名画像も原画像と同じ２５６（２８  ）階調の場合であるが，署名画像が２ｒ  の場合には，２０  ，２１  ，２２  ，…，２ｒ−１  の合計ｒ個のデータをビットプレーン内に設定することにより署名画像の画素を埋め込むことができる。
【００４４】
また，この実施例では濃淡画像について説明したが，同様の処理によりカラーの原画像に対し，単色の濃淡の署名画像や，カラーの署名画像を埋め込むことができる。その場合，原画像をブロック化して，Ｒ，Ｇ，Ｂのカラーに対応して選択されたビットプレーンに対し，濃淡の署名画像の対応する画素の値をセットしたり，カラーの署名画像の対応する画素のＲ，Ｇ，Ｂの値をそれぞれ設定することにより実現することができる。
【００４５】
上記の図７に示す処理フローにより作成された署名済画像から濃淡の署名画像を復号すると，原画像が署名者により作成されたことを証明することができる。
図９は署名済画像から多値の署名画像を復号するための処理フローである。
【００４６】
署名済画像を入力し（図９のＳ１），３×３のブロックに分割する（同Ｓ２）。最初にｉ＝０，ｊ＝０を設定して（同Ｓ３），署名済画像の中の対象ブロックについてハッシュ関数ｆを用いてｋ’＝ｆ（ｇｉｊ）を計算し（同Ｓ４），対象となるブロックからｋ’に対応するビットプレーンを取得する（同Ｓ５）。この後，Ｓ６〜Ｓ９の処理により，ビットプレーン内のｔ＝０からｍ−１（＝７）までのｇｂｉｔｔ  を順番に取り出してｓｂｉｔｔ  として署名画像の画素のデータとしてセットする。この処理は，上記図８のＣに示す署名画素を含むビットプレーンから，図８のＢに示す署名画像の画素を得ることに相当する。
【００４７】
一つのビットプレーンについて０〜７の合計８ビットが得られると，署名画像の一つの画素の値（ｓｉｊ）が取得されたものとし（図９のＳ１０），以下のＳ１１〜Ｓ１４の処理において，ｉ，ｊを順番に更新して他のブロックについてＳ４〜Ｓ９の処理が繰り返し実行されて，全ブロックからそれぞれに対応する署名画像の画素の値（ｓｉｊ）が得られると，復号画像（署名画像）が合成され，表示を行い（同Ｓ１５），処理を終了する。
【００４８】
本発明により標準画像データベースＳＩＤＢＡの「ｇｉｒｌ」，「ｍｏｏｎ」及び「ａｅｒｉａｌ」といった周知の複数の画像（２５６×２５６画素，２５６階調）に，２値の文字からなる署名画像（８５×８５画素の２階調）や，人物の顔写真を表す濃淡の署名画像（８５×８５画素の２５６階調）を埋め込んだ結果，何れの場合にも画質劣化はほとんど認められないという実験結果を得ることができた。さらに詳細に画質を評価するため，信号対雑音比（ＳＮＲ）を求めた結果を図１０，図１１に示す。但し，ＳＮＲは次の式（４）で定義し，ｅｒｒ（エラー）は次の式（５）により定義されるものとし，式（５）の中のｏｒｇｉ  は原画像の輝度レベル，ｅｍｂｉ  は署名画像の輝度レベルを表す。
【００４９】
【数１】
0003593422.tif 000002
【００５０】
図１０は２値の署名画像の場合のｐ（ハッシュ関数のモジュロー値）に対応するＳＮ比を示し，図１１は多値の署名画像の場合のｐに対応するＳＮ比を示す。図１０，図１１において，それぞれ（ａ）  は埋め込み用のビットプレーンの位置決定のハッシュ関数ｆとして，上記の式（２）のｆ＝ｉ＋ｊ（ｍｏｄｐ）を用いた場合の各ｐ（モジュロー）に対するＳＮ比（ＳＮＲ），（ｂ）  は上記の式（３）のｆ＝ｉ×ｊ（ｍｏｄｐ）を用いた場合の各ｐに対するＳＮ比（ＳＮＲ）を示す。
【００５１】
図１０，図１１により，ｐが大きくなると上位のビットプレーンを利用する機会が増すので画質が劣化するが，ｐ≦７で２値の署名データを埋め込んだ場合，それぞれＳＮ比が４０ｄＢを越えており，良好な画面が保持されていることが分かる。更に，本発明の埋め込みの方法によれば，埋め込んだ署名データを完全な形で復号できる利点がある。
【００５２】
本発明の安全性を確認するため，署名の削除，改ざんを目的とした攻撃に対する耐性を評価した結果，次の３種類の攻撃を行い，強度を検証した。
攻撃１：各画素の下位αビットを削除する。
【００５３】
攻撃２：各画素の輝度レベルを±βとする。
攻撃３：各画素にγ以下の雑音を付加する。
但し，画像を著しく損傷するような攻撃は，ユーザの立場（画像が全く見えない）から意味をなさないので，対象外とした。
【００５４】
攻撃１に対しては，実験により下位ビットαとして１，２，３，４を削除した場合の結果として，図１２に攻撃後復号した署名画像（２値）を示す。これによれば，攻撃１に対しかなりの強度を発揮している。これはハッシュ関数ｆ（位置決定関数）により埋め込み位置ｋ’がランダムに０〜（ｐ−１）に振り分けられているためである。攻撃２に対しては，埋め込みアルゴリズムの中で画質維持のために行う輝度の補正により損傷を受けやすいが，画素の輝度レベルβが２のｋ’乗と等しい場合は，その部分ブロックの署名情報が欠落するが，βが２の（ｋ’−１）乗より小さいと下位ビットを操作することで攻撃を防止できる。これは結果的に画質を劣化させることになるので，画質維持と強度保持のトレードオフの問題である。また攻撃３に対しても同様のことがいえる。
【００５５】
【発明の効果】
本発明によれば，画像の著作権保護のための署名情報を簡単な方法により原画像の中に原画像に依存することなく画質の劣化を抑制しつつ完全に埋め込むことができる。
【００５６】
また，署名済画像に対する署名の削除，改ざんを目的とした各種の攻撃に対しても，ブロックに対応して埋め込み位置がランダムであるため推定することが困難であり，簡単に削除，改ざんを行うことができない。
【００５７】
濃淡の原画像へ２値及び多値（濃淡）の署名画像の何れでも埋め込みが簡単に行うことが可能となる。
【図面の簡単な説明】
【図１】本発明の署名画像埋め込みの原理構成を示す図である。
【図２】本発明の署名画像復号の原理構成を示す図である。
【図３】原画像が濃淡画像で署名画像２値の場合の署名の処理フローを示す図である。
【図４】ブロックとビットプレーンの説明図である。
【図５】署名画素とビットプレーンの変化を示す例である。
【図６】署名済画像から２値の署名画像復号の処理フロー示す図である。
【図７】原画像と署名画像が共に濃淡画像の場合の署名の処理フローである。
【図８】ビットプレーンに濃淡の署名画像の画素を埋め込む例を示す図である。
【図９】署名済画像から多値の署名画像を復号するための処理フローを示す図である。
【図１０】２値の署名画像の場合のｐに対応するＳＮ比を示す図である。
【図１１】多値の署名画像の場合のｐに対応するＳＮ比を示す図である。
【図１２】攻撃後復号した署名画像（２値）の例を示す図である。
【符号の説明】
１    原画像ブロック化手段
２    ブロック対応位置決定手段
３    署名画素選択手段
４    ブロック対応署名画素値埋め込み手段
１０  原画像データ
１１  ブロックデータ
１２  署名画像データ
１３  署名済画像データ
【図１】
0003593422.tif 000003
【図２】
0003593422.tif 000004
【図３】
0003593422.tif 000005
【図４】
0003593422.tif 000006
【図５】
0003593422.tif 000007
【図６】
0003593422.tif 000008
【図７】
0003593422.tif 000009
【図８】
0003593422.tif 000010
【図９】
0003593422.tif 000011
【図１０】
0003593422.tif 000012
【図１１】
0003593422.tif 000013
【図１２】
0003593422.tif 000014