(57)【特許請求の範囲】
【請求項１】
第１の個数の画素値をマトリックス状に並べてなる原画像データに、前記第１の個数以下の第２の個数の数値信号からなる識別情報を埋め込むための識別情報埋込方法であって、互いに直交する基底関数の組み合わせを前記個々の数値信号に関連付けて第２の個数生成し、前記基底関数の各組み合わせ毎に、原画像データ中の各画素の位置に対する直交する各基底関数の値とその画素の輝度値との積の総和を計算することによって、第２の個数の基底関数の組み合わせに夫々対応する第２の個数の重み係数を算出し、前記各数値信号毎に、前記重み係数が取りうる値を定義域に含むとともに前記数値信号が取りうる数値を値域に含む多対一関数である埋込関数を参照し、その出力値がその数値信号の数値と一致する複数の解の中から、その数値信号に関連付けられた前記重み係数との差が最も小さい解を特定し、前記第２の個数の重み係数の全てが、夫々について特定された前記入力値と同じ値となるように、前記画像データの画素値を変更することを特徴とする画像データへの識別情報埋込方法。
【請求項２】
請求項１記載の画像データへの識別情報埋込方法によって前記識別情報が埋め込まれた処理対象画像データから、前記識別情報を抽出するための識別情報抽出方法であって、互いに直交する基底関数の組み合わせを前記個々の数値信号に関連付けて第２の個数生成し、前記基底関数の各組み合わせ毎に、処理対象画像データ中の各画素の位置に対する直交する各基底関数の値とその画素の輝度値との積の総和を計算することによって、第２の個数の基底関数の組み合わせに夫々対応する第２の個数の重み係数を算出し、前記各重み係数毎に、前記重み係数が取りうる値を定義域に含むとともに前記数値信号が取りうる数値を値域に含む多対一関数である埋込関数を参照し、その重み係数に対する前記埋込関数の値を算出することを特徴とする識別情報が埋め込まれた画像データからの識別情報抽出方法。
【請求項３】
第１の個数の画素値をマトリックス状に並べてなる原画像データに、前記第１の個数以下の第２の個数の数値信号からなる識別情報を埋め込むための識別情報埋込方法であって、前記原画像データの各画素値に対して直交変換を施して、第１の個数の重み係数をマトリックス状に並べてなる係数分布データを生成し、この係数分布データを構成する各重み係数から選択された第２の個数の重み係数を、夫々、何れかの前記数値信号に対応させ、
これら各数値信号毎に、前記重み係数が取りうる値を定義域に含むとともに前記数値信号が取りうる数値を値域に含む多対一関数である埋込関数を参照し、その出力値がその数値信号の数値と一致する複数の解の中からその数値信号に対応する前記係数分布データ中の重み係数との差が最も小さい解を特定し、特定した入力値によって前記係数分布データ中の当該重み係数を置換し、全ての数値信号に対応する重み係数の置換がなされた係数分布データに対して、逆直交変換を施すことを特徴とする画像データへの識別情報埋込方法。
【請求項４】
請求項３記載の画像データへの識別情報埋込方法によって前記識別情報が埋め込まれた処理対象画像データから、前記識別情報を抽出するための識別情報抽出方法であって、前記処理対象画像データの各画素値に対して直交変換を施して、第１の個数の重み係数をマトリックス状に並べてなる係数分布データを生成し、この係数分布データから前記各数値信号に対応している第２の個数の重み係数を取り出し、取り出された各重み係数毎に、前記重み係数が取りうる値を定義域に含むとともに前記数値信号が取りうる数値を値域に含む多対一関数である埋込関数を参照し、その重み係数に対する前記埋込関数の値を算出することを特徴とする識別情報が埋め込まれた画像データからの識別情報抽出方法。
【請求項５】
第１の個数の画素値をマトリックス状に並べてなる原画像データに、前記第１の個数以下の第２の個数の数値信号からなる識別情報を埋め込むための識別情報埋込方法であって、前記原画像データの各画素値に対して２次元離散コサイン変換を施して、第１の個数の重み係数をマトリックス状に並べてなる周波数分布データを生成し、この周波数分布データを構成する各重み係数から選択された第２の個数の重み係数を、夫々、何れかの前記数値信号に対応させ、これら各数値信号毎に、前記重み係数が取りうる値を定義域に含むとともに前記数値信号が取りうる数値を値域に含む多対一関数である埋込関数を参照し、その出力値がその数値信号の数値と一致する複数の解の中からその数値信号に対応する前記周波数分布データ中の重み係数との差が最も小さい解を特定し、特定した入力値によって前記周波数分布データ中の当該重み係数を置換し、全ての数値信号に対応する重み係数の置換がなされた周波数分布データに対して、２次元逆離散コサイン変換を施すことを特徴とする画像データへの識別情報埋込方法。
【請求項６】
請求項５記載の画像データへの識別情報埋込方法によって前記識別情報が埋め込まれた処理対象画像データから、前記識別情報を抽出するための識別情報抽出方法であって、前記処理対象画像データの各画素値に対して２次元離散コサイン変換を施して、第１の個数の重み係数をマトリックス状に並べてなる周波数分布データを生成し、この周波数分布データから前記各数値信号に対応している第２の個数の重み係数を取り出し、取り出された各重み係数毎に、前記重み係数が取りうる値を定義域に含むとともに前記数値信号が取りうる数値を値域に含む多対一関数である埋込関数を参照し、その重み係数に対する前記埋込関数の値を算出することを特徴とする識別情報が埋め込まれた画像データからの識別情報抽出方法。
【請求項７】
前記埋込関数は、周期関数であることを特徴とする請求項１，３，５の何れかに記載の画像データへの識別情報埋込方法。
【請求項８】
前記埋込関数は、周期関数であることを特徴とする請求項２，４，６の何れかに記載の識別情報が埋め込まれた画像データからの識別情報抽出方法。
【請求項９】
前記埋込関数は、連続した周期関数であることを特徴とする請求項１，３，５の何れかに記載の画像データへの識別情報埋込方法。
【請求項１０】
前記埋込関数は、連続した周期関数であることを特徴とする請求項２，４，６の何れかに記載の識別情報が埋め込まれた画像データからの識別情報抽出方法。
【請求項１１】
前記埋込関数は、同じ出力値をとる複数の入力値同士の間隔が、入力値が小さい時には狭く、入力値が大きい時には広いことを特徴とする請求項１，３，５の何れかに記載の画像データへの識別情報埋込方法。
【請求項１２】
前記埋込関数は、同じ出力値をとる複数の入力値同士の間隔が、入力値が小さい時には狭く、入力値が大きい時には広いことを特徴とする請求項２，４，６の何れかに記載の識別情報が埋め込まれた画像データからの識別情報抽出方法。
【請求項１３】
第１の個数の画素値をマトリックス状に並べてなる原画像データに、前記第１の個数以下の第２の個数の数値信号からなる識別情報を埋め込むための識別情報埋込装置であって、前記重み係数が取りうる値を定義域に含むとともに前記数値信号が取りうる数値を値域に含む多対一関数である埋込関数を保持する埋込関数保持手段と、前記原画像データの各画素値に対して直交変換を施して、第１の個数の重み係数をマトリックス状に並べてなる係数分布データを生成する直交変換手段と、この係数分布データを構成する各重み係数から選択された第２の個数の重み係数を、夫々、何れかの前記数値信号に対応させるとともに、これら各数値信号毎に、前記埋込関数の出力値がその数値信号の数値と一致する複数の解の中からその数値信号に対応する前記係数分布データ中の重み係数との差が最も小さい解を特定し、特定した入力値によって前記係数分布データ中の当該重み係数を置換する重み係数置換手段と、この重み係数置換手段によって重み係数の置換がなされた係数分布データに対して逆直交変換を施す逆直交変換手段とを備えたことを特徴とする画像データへの識別情報埋込装置。
【請求項１４】
請求項１３記載の画像データへの識別情報埋込装置によって前記識別情報が埋め込まれた処理対象画像データから、前記識別情報を抽出するための識別情報抽出装置であって、前記重み係数が取りうる値を定義域に含むとともに前記数値信号が取りうる数値を値域に含む多対一関数である埋込関数を保持する埋込関数保持手段と、前記処理対象画像データの各画素値に対して直交変換を施して、第１の個数の重み係数をマトリックス状に並べてなる係数分布データを生成する直交変換手段と、この係数分布データから前記各数値信号に対応している第２の個数の重み係数を取り出す取出手段と、取り出された各重み係数毎に、前記埋込関数の値を算出する算出手段とを備えたことを特徴とする識別情報が埋め込まれた画像データからの識別情報抽出装置。
【発明の詳細な説明】
【０００１】
【発明が属する技術分野】
本発明は、通信回線等の各種媒体を通じて流通されるデジタル画像データ中に著作権者等の権利者を示す識別情報を埋め込む技術，及び、このようなデジタル画像データから識別情報を抽出する技術に関する。
【０００２】
【従来の技術】
近年のデジタル技術の発展やマルチメディア社会の発展とともに、様々な情報がデジタルデータに変換され、通信網，衛星通信，ＣＤ−ＲＯＭ等の各種の媒体を介して広く流通されるようになっている。このようなマルチメディア社会におけるデジタルデータの流通には、不可避的に、デジタルデータの複製の問題が伴っている。
【０００３】
このデジタルデータの複製は適法な範囲であるならばマルチメディア社会における文化の発展に寄与し得るが、それが直接商業上利用される場合の様に不正使用に該当する場合には、デジタルデータが劣化無く複製可能であることから、権利者（著作者，著作権者，出版権者，著作隣接権の権利者，等）の利益損失が甚大なものとなる虞がある。
【０００４】
そのため、画像データに関しては、従来、識別情報を外見上認識困難な態様でデータ中に埋め込むことによってこの画像データが不正に複製された際の証拠とするための技術が、提案されている。例えば、J.Cox et al. "Secure Spread Spectrum Watermarking for Multimedia", NEC Reserch Institute, Technical Report 95-10では、以下のような技術が提案されている。即ち、この技術によると画像データが直交変換され、変換によって得られた各基底関数の重み係数のうち識別情報の各ドット位置に対応する複数の重み係数が選択され、選択された各重み係数の値に識別情報の各ドットの値が加算され、加算後の係数を含む全ての重み係数に対して逆直交変換が施され、その結果、識別情報埋込済画像データが生成される。
【０００５】
【発明が解決しようとする課題】
しかしながら、上記した従来の技術によると、元の（識別情報埋め込み前の）画像データを直交変換して得られた重み係数は種々の値をとり得るので、識別情報埋込済画像データを直交変換して得られた各重み係数のうちから識別情報の各ドットの値が加算されているものを特定することは不可能であった。そのため、上述した技術を実施するには、元の画像データと識別情報埋込済画像データとを夫々保存・管理しておくとともに、複製物が現れたときには、保存・管理している識別情報埋込済画像を直交変換して得られた各重み係数から元の画像データを直交変換して得られた各重み係数を減算することによって識別情報の各ドットの値を抽出すると同時に、複製物を直交変換して得られた各重み係数から元の画像データを直交変換して得られた各重み係数を減算することによって識別情報の各ドットの値を抽出し、両識別情報の同一性を証明しなければならなかった。
【０００６】
このように、従来の技術によると識別情報埋込済画像データ及び原画像データを二重に保存・管理しなければならなかったので、データ管理や検出時の証明作業が煩雑であるとともに、流通されるデータ量に比して２倍の記憶装置が必要となっていた。このような問題は、１０００枚程度の画像データを扱うデータベースや新聞のデータベースの様にデータを頻繁に更新しなければならないデータベースの場合に、特に、深刻である。
【０００７】
なお、このデータの二重管理の問題を避けるために、原画像を直交変換して得られた重み係数の一部を識別情報の値そのものに置換してしまうことも考えられるが、このような置き換えは、逆直交変換後の画像の画質を著しく悪化させてしまうとともに、画像データを直交変換するだけで直ちに識別情報が複製者に認識されてデータの書換がなされてしまう虞がある。
【０００８】
そこで、本発明の課題は、以上の問題に鑑み、原画像データ無しに識別情報埋込済画像データからの識別情報抽出が可能であり且つ複製者に認識不可能な態様で、画像画質を劣化させること無く画像データに識別情報を埋め込むことができる画像データへの識別情報埋込方法及び装置，この方法又は装置によって識別情報が埋め込まれた画像データからの識別情報抽出方法及び装置，並びに、コンピュータをこのような識別情報埋込装置又は識別情報抽出装置として機能させるプログラムを格納したコンピュータ可読媒体に関する。
【０００９】
【課題を解決するための手段】
各請求項記載の発明は、上記課題を解決するためになされたものである。
即ち、請求項１記載の発明は、図１の原理図に示した通り、第１の個数の画素値をマトリックス状に並べてなる原画像データに、前記第１の個数以下の第２の個数の数値信号からなる識別情報を埋め込むための識別情報埋込方法であって、互いに直交する基底関数の組み合わせを前記個々の数値信号に関連付けて第２の個数生成し（Ｓ１）、前記基底関数の各組み合わせ毎に、原画像データ中の各画素の位置に対する直交する各基底関数の値とその画素の輝度値との積の総和を計算することによって、第２の個数の基底関数の組み合わせに夫々対応する第２の個数の重み係数を算出し（Ｓ２）、前記各数値信号毎に、前記重み係数が取りうる値を定義域に含むとともに前記数値信号が取りうる数値を値域に含む多対一関数である埋込関数を参照し、その出力値がその数値信号の数値と一致する複数の入力値のうちから、その数値信号に関連付けられた基底関数の組み合わせに対応する重み係数に最も近い入力値を特定し（Ｓ３）、前記第２の個数の重み係数の全てが、夫々について特定された前記入力値と同じ値となるように、前記画像データの画素値を変更する（Ｓ４）ことを特徴とする。
【００１０】
このように、本発明によると、識別情報の数値情報が直接重み係数に埋め込まれるのではなく、この数値情報を出力値とする埋込関数の複数の入力値のうち本来の重み係数の値に最も近いものが、この重み係数に置換される。従って、置換前後における重み係数の値の差分は、非常に小さくて済む。従って、画素値の変更後における画像データの画質をあまり劣化させることがない。また、画素値の変更後における重み係数は、埋込関数によって識別情報を構成する数値情報の何れかの数値と対応しているので、原画像データがなくても、画素値の変更後における画像データから識別情報を抽出することができる。さらに、第三者は、重み係数を計算したとしても、埋込関数を知らなければ、各重み係数がどのような数値に対応しているかを探知することができない。従って、第三者は、識別情報の内容を知ることが不可能なので、この識別情報の改変を行うことはできない。
【００１１】
原画像データの画素値は、白黒画像の輝度値，ＲＧＢ信号の各色信号の輝度値，又はＹＣＣ信号の輝度値であっても良いし、ＹＣＣ信号の色差値であっても良い。
【００１２】
原画像データのドット数は、縦横同数であっても良いし、縦横に異なっても良い。
識別情報の各数値信号がとりうる数値は、二値であっても良いし、それ以上の値であっても良い。
【００１３】
識別情報の各数値信号は、ライン状に並んで配置されていても良いし、マトリックス状に配置された画像情報であっても良い。
重み係数の算出は、識別情報の各数値信号に対応する基底関数の組み合わせに対してのみ行われても良いし、直交変換に従って、全ての基底関数の組み合わせに対して行われても良い。前者によれば、重み係数の算出処理の処理総数が少なくなる。後者によれば、識別情報の各数値信号に対応する基底関数の組み合わに対する重み係数を特定された入力値に置換した後に、全ての重み係数に対して逆直交変換をするだけで、画像データの画素値を変更することができる。この直交変換としては、２次元離間コサイン変換，２次元離散サイン変換，２次元アダマール変換を用いることができる。
【００１４】
埋込関数は、関数式の形態で保持されていても良いし、複数の入力値に対する一つの出力値の関係を規定したテーブルの形態で保持されていても良い。また、埋込関数は、多対一関数である限り、周期関数であっても周期関数で無くても良い。周期関数であれば、関数式が単純となるので、本発明を実施する装置が簡略化できる。即ち、埋込関数の１周期中における識別情報の各数値信号の数値との交点を求めさえすれば、それらの交点を周期の整数倍だけずらした点毎に解があるので、入力値の特定が容易になる。なお、画素値の変更後における画像データの画質の観点から考えると、重み係数が大きな成分ほど、その重み係数の値を変更しても、この変更による誤差が主観的に見え難くなる。また、変更の度合いが大きい程、様々な画像データの改変に対する耐性が強くなる。ここで、変更の度合いを大きくするためには、埋込関数の周期を大きくすれば良い。このことから、より大きな重み係数に対しては、より大きく重み係数の値を変更し、より小さな重み係数に対しては、より小さく重み係数の値を変更するように、重み係数の値が大きくなるにつれて周期が大きくなるような埋込関数を使用しても良い。
【００１５】
請求項２記載の発明は、請求項１記載の画像データへの識別情報埋込方法によって前記識別情報が埋め込まれた処理対象画像データから、前記識別情報を抽出するための識別情報抽出方法であって、互いに直交する基底関数の組み合わせを前記個々の数値信号に関連付けて第２の個数生成し、前記基底関数の各組み合わせ毎に、処理対象画像データ中の各画素の位置に対する直交する各基底関数の値とその画素の輝度値との積の総和を計算することによって、第２の個数の基底関数の組み合わせに夫々対応する第２の個数の重み係数を算出し、前記各重み係数毎に、前記重み係数が取りうる値を定義域に含むとともに前記数値信号が取りうる数値を値域に含む多対一関数である埋込関数を参照し、その重み係数に対する前記埋込関数の値を算出することを特徴とする。
【００１６】
請求項３記載の発明は、第１の個数の画素値をマトリックス状に並べてなる原画像データに、前記第１の個数以下の第２の個数の数値信号からなる識別情報を埋め込むための識別情報埋込方法であって、前記原画像データの各画素値に対して直交変換を施して、第１の個数の重み係数をマトリックス状に並べてなる係数分布データを生成し、この係数分布データを構成する各重み係数から選択された第２の個数の重み係数を、夫々、何れかの前記数値信号に対応させ、これら各数値信号毎に、前記重み係数が取りうる値を定義域に含むとともに前記数値信号が取りうる数値を値域に含む多対一関数である埋込関数を参照し、その出力値がその数値信号の数値と一致する複数の入力値のうちからその数値信号に対応する前記係数分布データ中の重み係数に最も近い入力値を特定し、特定した入力値によって前記係数分布データ中の当該重み係数を置換し、全ての数値信号に対応する重み係数の置換がなされた係数分布データに対して、逆直交変換を施すことを特徴とする。
【００１７】
請求項４記載の発明は、請求項３記載の画像データへの識別情報埋込方法によって前記識別情報が埋め込まれた処理対象画像データから、前記識別情報を抽出するための識別情報抽出方法であって、前記処理対象画像データの各画素値に対して直交変換を施して、第１の個数の重み係数をマトリックス状に並べてなる係数分布データを生成し、この係数分布データから前記各数値信号に対応している第２の個数の重み係数を取り出し、取り出された各重み係数毎に、前記重み係数が取りうる値を定義域に含むとともに前記数値信号が取りうる数値を値域に含む多対一関数である埋込関数を参照し、その重み係数に対する前記埋込関数の値を算出することを特徴とする。
【００１８】
請求項５記載の発明は、第１の個数の画素値をマトリックス状に並べてなる原画像データに、前記第１の個数以下の第２の個数の数値信号からなる識別情報を埋め込むための識別情報埋込方法であって、前記原画像データの各画素値に対して２次元離散コサイン変換を施して、第１の個数の重み係数をマトリックス状に並べてなる周波数分布データを生成し、この周波数分布データを構成する各重み係数から選択された第２の個数の重み係数を、夫々、何れかの前記数値信号に対応させ、これら各数値信号毎に、前記重み係数が取りうる値を定義域に含むとともに前記数値信号が取りうる数値を値域に含む多対一関数である埋込関数を参照し、その出力値がその数値信号の数値と一致する複数の入力値のうちからその数値信号に対応する前記周波数分布データ中の重み係数に最も近い入力値を特定し、特定した入力値によって前記周波数分布データ中の当該重み係数を置換し、全ての数値信号に対応する重み係数の置換がなされた周波数分布データに対して、２次元逆離散コサイン変換を施すことを特徴とする。
【００１９】
請求項６記載の発明は、請求項５記載の画像データへの識別情報埋込方法によって前記識別情報が埋め込まれた処理対象画像データから、前記識別情報を抽出するための識別情報抽出方法であって、前記処理対象画像データの各画素値に対して２次元離散コサイン変換を施して、第１の個数の重み係数をマトリックス状に並べてなる周波数分布データを生成し、この周波数分布データから前記各数値信号に対応している第２の個数の重み係数を取り出し、取り出された各重み係数毎に、前記重み係数が取りうる値を定義域に含むとともに前記数値信号が取りうる数値を値域に含む多対一関数である埋込関数を参照し、その重み係数に対する前記埋込関数の値を算出することを特徴とする。
【００２０】
請求項７記載の発明は、請求項１，３，５の何れかにおける埋込関数が、周期関数であることで、特定したものである。
請求項８記載の発明は、請求項２，４，６の何れかにおける埋込関数が、周期関数であることで、特定したものである。
【００２１】
請求項９記載の発明は、請求項１，３，５の何れかにおける埋込関数が、連続した周期関数であることで、特定したものである。
請求項１０記載の発明は、請求項２，４，６の何れかにおける埋込関数が、連続した周期関数であることで、特定したものである。
【００２２】
請求項１１記載の発明は、請求項１，３，５の何れかにおける埋込関数の同じ出力値をとる複数の入力値同士の間隔が、入力値が小さい時には狭く、入力値が大きい時には広いことで特定したものである。
【００２３】
請求項１２記載の発明は、請求項２，４，６の何れかにおける埋込関数の同じ出力値をとる複数の入力値同士の間隔が、入力値が小さい時には狭く、入力値が大きい時には広いことで特定したものである。
【００２４】
請求項１３記載の発明は、第１の個数の画素値をマトリックス状に並べてなる原画像データに、前記第１の個数以下の第２の個数の数値信号からなる識別情報を埋め込むための識別情報埋込装置であって、前記重み係数が取りうる値を定義域に含むとともに前記数値信号が取りうる数値を値域に含む多対一関数である埋込関数を保持する埋込関数保持手段と、前記原画像データの各画素値に対して直交変換を施して、第１の個数の重み係数をマトリックス状に並べてなる係数分布データを生成する直交変換手段と、この係数分布データを構成する各重み係数から選択された第２の個数の重み係数を、夫々、何れかの前記数値信号に対応させるとともに、これら各数値信号毎に、前記埋込関数の出力値がその数値信号の数値と一致する複数の入力値のうちからその数値信号に対応する前記係数分布データ中の重み係数に最も近い入力値を特定し、特定した入力値によって前記係数分布データ中の当該重み係数を置換する重み係数置換手段と、この重み係数置換手段によって重み係数の置換がなされた係数分布データに対して逆直交変換を施す逆直交変換手段とを備えたことを特徴とする。
【００２５】
請求項１４記載の発明は、請求項１３記載の画像データへの識別情報埋込装置によって前記識別情報が埋め込まれた処理対象画像データから、前記識別情報を抽出するための識別情報抽出装置であって、前記重み係数が取りうる値を定義域に含むとともに前記数値信号が取りうる数値を値域に含む多対一関数である埋込関数を保持する埋込関数保持手段と、前記処理対象画像データの各画素値に対して直交変換を施して、第１の個数の重み係数をマトリックス状に並べてなる係数分布データを生成する直交変換手段と、この係数分布データから前記各数値信号に対応している第２の個数の重み係数を取り出す取出手段と、取り出された各重み係数毎に、前記埋込関数の値を算出する算出手段とを、備えたことを特徴とする。
【００２６】
請求項１５記載の発明は、コンピュータに対して、第１の個数の画素値をマトリックス状に並べてなる原画像データの各画素値に対して直交変換を施させて、第１の個数の重み係数をマトリックス状に並べてなる係数分布データを生成させ、この係数分布データを構成する各重み係数から選択された第２の個数の重み係数を、夫々、第２の数値信号からなる識別情報の何れかの数値信号に対応させ、これら各数値信号毎に、前記重み係数が取りうる値を定義域に含むとともに前記数値信号が取りうる数値を値域に含む多対一関数である埋込関数を参照させ、その出力値がその数値信号の数値と一致する複数の入力値のうちからその数値信号に対応する前記係数分布データ中の重み係数に最も近い入力値を特定させ、特定した入力値によって前記係数分布データ中の当該重み係数を置換させ、前記識別情報の全ての数値信号に対応する重み係数の置換がなされた係数分布データに対して、逆直交変換を施させるプログラムを格納したコンピュータ可読媒体であることを、特徴とする。
【００２７】
請求項１６記載の発明は、コンピュータに対して、第１の個数の画素値をマトリックス状に並べてなるとともに第２の個数の数値信号からなる識別情報た埋め込まれている処理対象画像データの各画素値に対して直交変換を施させて、第１の個数の重み係数をマトリックス状に並べてなる係数分布データを生成させ、この係数分布データから前記各数値信号に対応している第２の個数の重み係数を取り出させ、取り出された各重み係数毎に、前記重み係数が取りうる値を定義域に含むとともに前記数値信号が取りうる数値を値域に含む多対一関数である埋込関数を参照させ、その重み係数に対する前記埋込関数の値を算出させるプログラムを格納したコンピュータ可読媒体であることを、特徴とする。
【００２８】
【発明の実施の形態】
以下、図面に基づいて、本発明の実施の形態を説明する。
本発明による画像データへの識別情報埋込方法及び装置の実施の形態である埋込用コンピュータ，及び識別情報が埋め込まれた画像データからの識別情報抽出方法及び装置の実施の形態である抽出用コンピュータは、以下に説明するように、従来公知のあらゆる種類の直交変換処理及び逆直交変換処理を使用することができ、且つ、あらゆる大きさの原画像及び識別情報（但し、識別情報≦原画像）を処理できる様に、構成されている。
（識別情報埋込及び抽出の概略）
まず、本実施形態の具体的構成の説明を行う前に、本実施形態による画像データへの識別情報埋め込みの原理，及び識別情報が埋め込まれた画像データからの識別情報抽出の概略を説明する。
【００２９】
ここでは、識別情報埋込対象の原画像データ（モノクロ−ム画像データ，若しくは、ＮＴＳＣカラー画像データから抽出された輝度データ等）が、Ｎ×Ｎ個の画素から構成されているとする。そして、埋込対象の識別情報は、夫々所定の値が与えられたＬ（Ｌ≦Ｎ×Ｍ）個の信号からなるデータであるとする。
【００３０】
埋込用コンピュータは、上述した原画像データの全体，又は原画像データを分割して得られた複数のブロック（但し、各ブロックの画素数はＬ個以上）の夫々に対して、直交変換を行う。原画像を分割して各ブロックに対して直交変換を行うのは、埋込処理が施された画像が部分的に切り取られて複製された場合でも署名画像を劣化無く抽出するためである。但し、個々の部分画像の大きさを小さくしすぎると、埋込処理が施された画像が劣化してしまうので、８×８画素以上としておくことが望ましい。
【００３１】
直交変換に際しては、識別情報の各信号に対して関連付けられた互いに直交する基底関数の組合せがＬ個用意される。そして、それぞれの基底関数の組合せ毎に、原画像データの各画素の位置に対する直交する各基底関数の値とその輝度値との積の総和を計算して、夫々の基底関数の組合せの重み係数を求める。なお、ここで、「直交する」とは、Ｎ×Ｍ個の画素からなる原画像又はブロック内において、各基底関数の変数の方向が互いに直交していることを言う。
【００３２】
次に、埋込用コンピュータは、識別情報を構成する各信号の値を、予め関連付けられている基底関数の組合せの重み係数に、夫々埋め込む。このとき、埋込用コンピュータは、各信号の値を直接重み係数に加算したり重み係数に上書きするのではなく、各信号毎に所定の埋込関数を用意し、この埋込関数により各信号の値に対応する値を、元の重み係数に置き換える。
【００３３】
各信号毎に用意される埋込関数は、各信号毎に夫々異なった定義の関数であっても良いし、各信号に共通の定義の関数であっても良い。何れの場合であっても、各埋込関数は、重み係数が取りうる値をその定義域の中に含み、識別情報の各信号がとり得る値をその値域の中に含む。また、各埋込関数は、定義域に含まれる複数の入力値が同一の出力値に対応する多対一関数である。具体的には、この埋込関数としては、単純な関数であれば処理が単純化するので、例えば下記式（１）に示されるような周期関数（同じ出力値をとる複数の入力値同士の間隔が、入力値が小さい時には狭く、入力値が大きい時には広い連続した周期関数）が望ましい。
【００３４】
【数１】
0003686741.tif 000002
【００３５】
埋込用コンピュータは、識別情報を構成する各信号毎に、その信号の値を出力値とする埋込関数の全ての入力値を逆算する。そして、算出された全ての入力値のうちから、その信号に予め対応付けられている基底関数の組合せの重み係数との差が最も小さくなるものを特定し、特定された入力値を元の重み係数の値に置き換える。
【００３６】
その後で、埋込用コンピュータは、直交変換後における各基底関数の組合せの重み係数の値が置換え後の値となるように、原画像データ又はブロックの各画素の値を書き換える。このようにして識別情報埋込済画像データが得られる。なお、上述したように重み係数の値の置き換えによる変化量が最小限に抑えられているので、識別情報埋込済画像データの劣化は、最小限度に留められる。また、第三者が識別情報埋込済画像データを直交変換したとしても、埋込関数を知らなければ、識別情報の各信号の値を知ることはできないので、この識別情報を改変することは不可能である。
【００３７】
抽出用コンピュータは、処理対象画像データの全体，又は処理対象画像データを分割して得られた複数のブロック（但し、各ブロックの画素数はＬ個以上）の夫々に対して、直交変換を行う。このとき、原画像データへの識別情報の埋込時と同様に、識別情報の各信号に対して関連付けられた互いに直交する基底関数の組合せがＬ個用意される。そして、それぞれの基底関数の組合せ毎に、処理対象画像データの各画素の位置に対する直交する各基底関数の値とその輝度値との積の総和が計算され、夫々の基底関数の組合せの重み係数が求められる。なお、通常、これらの基底関数としては、原画像データへの識別情報の埋込時のものと同様のものが用いられる。
【００３８】
抽出用コンピュータは、求められた各重み係数を対応する埋込関数に入力して、出力値を求める。そして、このようにして求められた埋込関数の各出力値を、対応する重み係数に対して予め関連付けられている識別情報の信号の並び順通りに並べる。すると、処理対象画像データが識別情報埋込済画像データであれば、並べられた出力値は、識別情報と一致する。このように、抽出用コンピュータは、原画像データがなくても、各埋込関数を保持していさえすれば、識別情報埋込済画像データから識別情報を抽出することができる。そして、この埋込関数は、様々な原画像データに対して共通に用いられ得る。従って、保存・管理すべきデータの総量が、従来のものに比して、大幅に少なくなる。
（埋込用コンピュータの構成）
次に、埋込用コンピュータの具体的構成を説明する。図２は、この埋込用コンピュータのハードウェアのうち、原画像データへの識別情報埋込処理に関係する構成のみを示した概略ブロック図である。図２に示すように、この埋込用コンピュータは、互いにバスＢによって接続されたＣＰＵ１，入力用ディスク装置２，ＲＯＭ３，出力用ディスク装置４を有している。
【００３９】
入力用ディスク装置２は、ＣＰＵ１からの指示に応じて原画像データ２１をＣＰＵ１に入力するハードディスク装置，フロッピーディスク装置，光磁気ディスク装置，等である。
【００４０】
埋込関数保持手段及びコンピュータ可読媒体としてのＲＯＭ３は、ＣＰＵ１にて実行される識別情報埋込プログラム３１，識別情報３２，及び埋込関数３３を保持している読み出し専用メモリである。
【００４１】
ＣＰＵ１は、埋込用コンピュータ全体の制御を実行するプロセッサであり、ＲＯＭ３から読み出した識別情報埋込プログラム３１を実行することによって、その内部に直交変換処理部１１，係数抽出処理部１２，係数置換部１３，係数埋込部１４，及び逆直交変換部１５を展開し、図３に概略を示す識別情報埋込処理を実行する。なお、図２における点線は、ＣＰＵ１内におけるデータの流れを示している。
【００４２】
直交変換手段としての直交変換処理部１１は、入力用ディスク装置２から読み出したＮ×Ｍ画素の原画像データ２１に対して上述した直交変換処理を実行して、基底関数のＮ×Ｍ個の組合せに対する重み係数を夫々算出する。このＮ×Ｍ個の重み係数は、原画像と同じくＮ×Ｍ個のマトリックスを形成する。この重み係数のマトリックスを、以下、便宜上「係数分布画像データ」という。直交変換処理部１１は、この係数分布画像データを、係数抽出処理部１２及び係数埋込部１４へ夫々通知する。
【００４３】
係数抽出処理部１２は、直交変換処理部１１から通知された係数分布画像データから、識別情報の各信号を埋め込むべきＬ個の重み係数を抽出して、係数置換部１３へ通知する。
【００４４】
係数置換手段としての係数置換部１３は、ＲＯＭ３から識別情報３２及び埋込関数３３を読み込む。そして、識別情報３２の各信号毎に、埋込関数３３を逆算して、その信号の値を出力値とする埋込関数３３の全ての入力値を求める。そして、求められた入力値の中から、係数抽出処理部１２から通知された対応する重み係数の値との差が最も小さくなるものを特定し、当該係数の書換値として係数埋込部１３に通知する。
【００４５】
係数置換手段としての係数埋込部１４は、直交変換処理部１１から受け取った係数分布画像データ中の係数置換部１３から通知された書換値に対応する重み係数の値を、この書換値によって上書きする。
【００４６】
逆緒項変換手段としての逆直交変換部１５は、係数埋込部１４から受け取ったＮ×Ｍ個の重み係数に対して、逆直交変換を実行する。この逆直交変換部１５は、識別情報埋込済画像の各画素毎に、直交変換処理部１１において用いられた基底関数の各組合せに対応する重み係数とその画素の位置に対する各基底関数の値との積の総和を計算し、その画素の輝度値を求める。逆直交変換部１５は、このようにして輝度を求めた各画素からなる識別情報埋込済画像５１を、出力用ディスク装置４に送り出す。
【００４７】
出力用ディスク装置４は、ＣＰＵ１から渡された識別情報埋込済画像データ４１が書き込まれるハードディスク装置，フロッピーディスク装置，光磁気ディスク装置，等である。
【００４８】
図３は、識別情報埋込プログラム３１を読み込んだＣＰＵ１によって実行される識別情報埋込処理の内容を示すフローチャートである。この識別情報埋込処理は、埋込用コンピュータに接続された図示せぬキーボードを介して識別情報埋込コマンドが入力されることを契機にスタートする。
この識別情報埋込処理がスタートした後最初に実行されるＳ００１では、ＣＰＵ１は、識別情報３２をなすＬ個の信号Ｓi［ｉ＝１〜Ｌ］を、ＲＯＭ３から読み込む。
【００４９】
次のＳ００２では、ＣＰＵ１は、Ｌ個の埋込関数３３（ｆi(x)［ｉ＝１〜Ｌ］）をＲＯＭ３から読み込む。
次のＳ００３では、ＣＰＵ１は、Ｎ×Ｍ画素の原画像データを、入力用ディスク装置２から読み込む。
【００５０】
次のＳ００４では、ＣＰＵ１は、Ｓ００３にて読み込んだ原画像データ全体に対して上述した直交変換処理を施して、Ｎ×Ｍドットの係数分布画像データを生成する。
【００５１】
次のＳ００５では、ＣＰＵ１は、Ｓ００４にて生成された係数分布画像データを構成する各重み係数の中から、Ｓ００１にて読み込んだ識別情報の各信号Ｓi［ｉ＝１〜Ｌ］に対応する位置にある重み係数Ｃi［ｉ＝１〜Ｌ］を選択する。
【００５２】
次のＳ００６では、ＣＰＵ１は、処理対象の重み係数Ｃiを特定するための変数ｉを、初期設定して“１”とする。
次に、ＣＰＵ１は、Ｓ００７乃至Ｓ０１０のループ処理を実行する。このループに入って最初のＳ００７では、ＣＰＵ１は、処理対象の重み係数Ｃiに対応する識別情報の信号Ｓi及び埋込関数ｆi(x)に基づいて、ｆi(ｃik)＝Ｓiの関係を満たすＫi個の解ｃik（１≦ｋ≦Ｋi）を求める。ここに、上記ｉ番目の信号Ｓiに対応して用意された埋込関数ｆi(x)＝Ｓiの解ｃikの個数は、Ｋiであると定義される。
【００５３】
次のＳ００８では、ＣＰＵ１は、Ｓ００４にて生成された係数分布画像データ中の処理対象の重み係数Ｃiを値を、Ｓ００７にて求められた各解ｃik中最も当該重み係数Ｃiに近いものの値に書き換える。
【００５４】
次のＳ００９では、ＣＰＵ１は、変数ｉがＬに達したか否か，即ち、識別情報を構成する全ての信号に対してＳ００７及びＳ００８の処理を実行したか否かをチェックする。そして、未だ変数ｉがＬに達していなければ、Ｓ０１０にて変数ｉをインクリメントした後で、処理をＳ００７に戻す。
【００５５】
これに対して変数ｉがＬに達していれば、ＣＰＵ１は、Ｓ０１１において、Ｓ００８での書換のなされた係数分布画像に対して上述した逆直交変換を施して、Ｎ×Ｍドットの識別情報埋込済画像データを生成する。
【００５６】
次のＳ０１２では、ＣＰＵ１は、Ｓ０１１にて生成した識別情報埋込済画像データを出力用ディスク装置４に書き込む。以上により、ＣＰＵ１は、埋込処理を終了する。
（抽出用コンピュータの構成）
次に、抽出用コンピュータの具体的構成を説明する。図４は、この抽出用コンピュータのハードウェアのうち、識別情報埋込済画像データからの識別情報抽出処理に関係する構成のみを示した概略ブロック図である。図４に示すように、この抽出用コンピュータは、互いにバスＢによって接続されたＣＰＵ１，入力用ディスク装置２，ＲＯＭ３，及び出力装置５を有している。即ち、抽出用コンピュータのハードウェア構成は、埋込用コンピュータのハードウェア構成と同一であり、唯ＲＯＭ３内に識別情報抽出プログラム３４が格納されている点，及び、出力用ディスク装置４が必須でなく出力装置５が必須である点のみが異なる。従って、ＲＯＭ３内に識別情報埋込プログラム３１及び識別情報抽出プログラム３４の双方が格納されているとともに、出力用ディスク装置４及び出力装置５がバスＢに接続されていれば、一台のコンピュータを埋込用コンピュータ及び抽出用コンピュータとして機能させることができる。
【００５７】
図４において、入力用ディスク装置２は、ＣＰＵ１からの指示に応じて処理対象画像データ（識別情報埋込済画像データ）２２をＣＰＵ１に入力するハードディスク装置，フロッピーディスク装置，光磁気ディスク装置，等である。
【００５８】
埋込関数保持手段及びコンピュータ可読媒体としてのＲＯＭ３は、ＣＰＵ１にて実行される識別情報抽出プログラム３４，及び埋込関数３２を保持している読み出し専用メモリである。この埋込関数３２は、埋込用コンピュータのものと全く同一である。
【００５９】
ＣＰＵ１は、抽出用コンピュータ全体の制御を実行するプロセッサであり、ＲＯＭ３から読み出した識別情報抽出プログラム３４を実行することによって、その内部に直交変換処理部１６，係数抽出処理部１７，及び識別情報算出部１８を展開し、図５に概略を示す識別情報抽出処理を実行する。なお、図４における点線は、ＣＰＵ１内におけるデータの流れを示している。
【００６０】
直交変換手段としての直交変換処理部１６は、入力用ディスク装置２から読み出したＮ×Ｍ画素の処理対象画像データ２２に対して上述した直交変換処理を実行して、基底関数のＮ×Ｍ個の組合せに対する重み係数を夫々算出する。そして、Ｎ×Ｍ個の重み係数からなる係数分布画像データを、係数抽出処理部１７へ通知する。
【００６１】
取出手段としての係数抽出処理部１７は、直交変換処理部１６から通知された係数分布画像データから、識別情報の各信号が埋め込まれている可能性のあるＬ個の重み係数を抽出して、識別情報算出部１８へ通知する。
【００６２】
算出手段としての識別情報算出部１８は、ＲＯＭ３から埋込関数３３を読み込む。そして、係数抽出処理部１７から通知された各重み係数毎に、埋込関数３３の出力値を求める。そして、求められた各出力値を、その出力値に対応する重み係数の係数分布画像データ中での配列に従って配列して、出力装置５に対して出力する。
【００６３】
出力装置５は、ＣＰＵ１から渡されたＬ個の出力値を表示するディスプレイ装置又は出力値を印字するプリンタ等である。
図５は、識別情報抽出プログラム３４を読み込んだＣＰＵ１によって実行される識別情報抽出処理の内容を示すフローチャートである。この識別情報抽出処理は、抽出用コンピュータに接続された図示せぬキーボードを介して識別情報抽出コマンドが入力されることを契機にスタートする。
【００６４】
この識別情報抽出処理がスタートした後最初に実行されるＳ１０１では、ＣＰＵ１は、Ｌ個の埋込関数３３（ｆi(x)［ｉ＝１〜Ｌ］）をＲＯＭ３から読み込む。
【００６５】
次のＳ１０２では、ＣＰＵ１は、Ｎ×Ｍ画素の処理対象画像データを、入力用ディスク装置２から読み込む。
次のＳ１０３では、ＣＰＵ１は、Ｓ１０２にて読み込んだ処理対象画像データ全体に対して上述した直交変換処理を施して、Ｎ×Ｍドットの係数分布画像データを生成する。
【００６６】
次のＳ１０４では、ＣＰＵ１は、Ｓ１０３にて生成された係数分布画像データを構成する各重み係数の中から、埋込コンピュータにおける識別情報３２の各信号Ｓi［ｉ＝１〜Ｌ］に対応する位置にある重み係数Ｃi［ｉ＝１〜Ｌ］を選択する。
【００６７】
次のＳ１０５では、ＣＰＵ１は、処理対象の重み係数Ｃiを特定するための変数ｉを、初期設定して“１”とする。
次に、ＣＰＵ１は、Ｓ１０６乃至Ｓ１０８のループ処理を実行する。このループに入って最初のＳ１０６では、ＣＰＵ１は、処理対象の重み係数Ｃiに対応する埋込関数ｆi(ｘ)のＣiに対する出力値Ｓiを求める。
【００６８】
次のＳ１０７では、ＣＰＵ１は、変数ｉがＬに達したか否か，即ち、識別情報が埋め込まれている可能性のある全ての重み係数に対してＳ１０６の処理を実行したか否かをチェックする。そして、未だ変数ｉがＬに達していなければ、Ｓ１０８にて変数ｉをインクリメントした後で、処理をＳ１０６に戻す。
【００６９】
これに対して変数ｉがＬに達していれば、ＣＰＵ１は、Ｓ１０９において、Ｓ１０６にて求められた全ての出力値Ｓi［ｉ＝１〜Ｌ］を、対応する各重み係数Ｃi［ｉ＝１〜Ｌ］の係数分布画像データ内での配列通りに並べて出力装置５に出力する。その結果、出力装置５は、Ｓ１０２にて読み込んだ処理対象画像データが識別情報埋込済画像データであれば、識別情報に対応するデータを表示又は印字することができる。
【００７０】
なお、本実施形態に用いられる直交変換としては、２次元離散コサイン変換（２次元ＤＣＴ），２次元離散サイン変換（２次元ＤＳＴ），又は、２次元アダマール変換を採用することができる。次に、直交変換として２次元ＤＣＴを採用した場合における識別情報埋込処理及び識別情報抽出処理の具体的処理内容を、実施例１として以下に説明する。
【００７１】
【実施例１】
この実施例１では、原画像データは、図１０（ａ）に示すように、Ｎ×Ｎ（但し、Ｎ＞＞８）画素から構成されるとする。また、原画像データの各画素の輝度値は、０〜２５５のグレースケールであるとする。また、識別情報は、図１０（ｄ）に示すように、８×８個の各画素に白の輝度値（２５５）又は黒の輝度値（０）を選択的に付与して欧文字「ＦＪ」を表した画像データ（以下、「署名画像データ」という）であるとする。これに伴い、識別情報埋込済画像データを「署名画像埋込済画像データ」と云うものとする。また、２次元ＤＣＴによって得られる重み係数は、原画像データにおける各周波数成分の強度（振幅）に対応するので、上述した「係数分布画像データ」を便宜上「周波数分布画像データ」というものとする。また、埋込関数としては、各重み係数に対して共通に適用される唯一つの関数ｆ（ｘ），即ち、図１０（ｅ）のグラフに示される鋸歯状に連続した周期関数が、用意されているものとする。
（識別情報埋込処理）
図６及び図８は、実施例１による識別情報埋込処理を示すフローチャートである。
【００７２】
この識別情報埋込処理がスタートした後最初に実行される図６のＳ２０１では、ＣＰＵ１は、署名画像データＳ(i,j)［ｉ＝０〜７，ｊ＝０〜７］を、ＲＯＭ３から読み込む。
【００７３】
次のＳ２０２では、ＣＰＵ１は、埋込関数ｆ(x)をＲＯＭ３から読み込む。
次のＳ２０３では、ＣＰＵ１は、Ｎ×Ｎ画素の原画像データを、入力用ディスク装置２から読み込む。
【００７４】
次のＳ２０４では、ＣＰＵ１は、Ｓ２０３にて読み込んだ原画像データ全体に対して２次元ＤＣＴを施して、図１０（ｂ）に示す様なＮ×Ｎドットの周波数分布画像データを生成する。具体的には、このＳ２０４では、ＣＰＵ１は、図７に示す２次元ＤＣＴ処理サブルーチンを実行する。
【００７５】
この２次元ＤＣＴ処理サブルーチンに入って最初のＳ３０１では、ＣＰＵ１は、算出対象重み係数Ｃ(i,j)の周波数分布画像データ中での列（０を最左とする）を示す変数ｉを、初期化して“０”とする。
【００７６】
次のＳ３０２では、ＣＰＵ１は、変数ｘの関数Ｗi(ｘ)を、下記式（２）に示す通り設定する。ここで変数ｘは、原画像データ中における各画素の列（０を最左とする）に対応している。
【００７７】
【数２】
0003686741.tif 000003
【００７８】
次のＳ３０３では、ＣＰＵ１は、算出対象重み係数Ｃ(i,j)の周波数分布画像データ中での行（０を最上とする）を示す変数ｊを、初期化して“０”とする。次のＳ３０４では、ＣＰＵ１は、変数ｙの関数Ｗj(ｙ)を、下記式（３）に示す通り設定する。ここで変数ｙは、原画像データ中における各画素の行（０を最上とする）に対応している。
【００７９】
【数３】
0003686741.tif 000004
【００８０】
次のＳ３０５では、ＣＰＵ１は、現時点において設定されている両関数Ｗi(ｘ)，Ｗj(ｙ)と原画像データに含まれる各画素の輝度値Ｇ(x,y)とに基づいて下記式（４）を実行し、算出された級数を、現在の変数ｉ及びｊによって特定される重み係数Ｃ(i,j)の値とする。
【００８１】
【数４】
0003686741.tif 000005
【００８２】
次のＳ３０６では、ＣＰＵ１は、現時点における変数ｊの値が(Ｎ−１)に達しているかどうかをチェックする。そして、未だ変数ｊの値が(Ｎ−１)に達していない場合には、ＣＰＵ１は、Ｓ３０７において、変数ｊをインクリメントする。続いて、ＣＰＵ１は、Ｓ３０８において、現時点での変数ｊを下記式（５）に代入し、変数ｙの新たな関数Ｗj(ｙ)として設定し直す。
【００８３】
【数５】
0003686741.tif 000006
【００８４】
ＣＰＵ１は、その後で、処理をＳ３０５に戻し、次の行に存する重み係数Ｃ(i,j)を算出する。
これに対して、現時点における変数ｊの値が(Ｎ−１)に達しているとＳ３０６にて判定した場合には、ＣＰＵ１は、処理をＳ３０９に進める。このＳ３０９では、ＣＰＵ１は、現時点における変数ｉの値が(Ｎ−１)に達しているかどうかをチェックする。そして、未だ変数ｉの値が(Ｎ−１)に達していない場合には、ＣＰＵ１は、Ｓ３１０において、変数ｉをインクリメントする。続いて、ＣＰＵ１は、Ｓ３１１において、現時点での変数ｉを下記式（６）に代入し、変数ｘの新たな関数Ｗi(ｘ)として設定し直す。
【００８５】
【数６】
0003686741.tif 000007
【００８６】
ＣＰＵ１は、その後で、処理をＳ３０３に戻し、次の列に存する重み係数Ｃ(i,j)を算出する。
これに対して、現時点における変数ｉの値が(Ｎ−１)に達しているとＳ３０９にて判定した場合には、ＣＰＵ１は、周波数分布画像データを構成する全ての重み係数が算出されたと判断して、このサブルーチンを終了して、処理を図６のメインルーチンに戻す。
【００８７】
処理が戻された図６のメインルーチンにおいては、Ｓ２０４の完了後、処理がＳ２０５へ進められる。このＳ２０５以降Ｓ２１２までの処理は、図１０（ｂ）乃至（ｇ）に示される様に、周波数分布画像データ（図１０（ｂ））中のＤＣ成分を示す領域及び底周波数成分を示す領域（ｉ＝０〜７且つｊ＝０〜７の領域）（図１０（ｃ））を取り出して、この領域に署名画像データを埋め込むための処理である。このようにＤＣ成分を示す重み係数及び低周波成分を示す重み係数のみに署名画像データを埋め込むようにしたのは、ＤＣ成分及び低周波成分の多少の変動は、署名画像埋込済画像データの画質に与える影響が小さいからである。
【００８８】
Ｓ２０５では、ＣＰＵ１は、取出対象重み係数Ｃ(i,j)の周波数分布画像データ中での列，及び、署名画像中の参照対象画素Ｓ(i,j)の列を示す変数ｉを、初期化して“０”とする。
【００８９】
次のＳ２０６では、ＣＰＵ１は、取出対象重み係数Ｃ(i,j)の周波数分布画像データ中での行，及び、署名画像中の参照対象画素Ｓ(i,j)の行を示す変数ｊを、初期化して“０”とする。
【００９０】
次のＳ２０７では、ＣＰＵ１は、ＲＯＭ３から署名画像データ（図１０(ｄ)）及び埋込関数ｆ（ｘ）（図１０(ｅ)）を読み出して、現時点における変数ｉ及び変数ｊによって特定される署名画像データ中の参照対象画素Ｓ（i,j）の輝度値を出力値とする埋込関数ｆ（ｘ）の全入力値ｃijkを求める。即ち、ｆ（ｃijk）＝Ｓ（ｉ，ｊ）を満たすＫij個の解ｃijk（１≦ｋ≦Ｋi）を、全て求める。ここで、ｆ（ｃijk）＝Ｓ（ｉ，ｊ）に対する解ｃijkの個数はＫij個と定義される。
【００９１】
次のＳ２０８では、ＣＰＵ１は、Ｓ２０７にて求められた全入力値ｃijkのうち、現時点における変数ｉ及び変数ｊによって特定される取出対象重み係数Ｃ(i,j)の値に最も近いものを選択する。そして、現時点における変数ｉ及び変数ｊによって特定される取出対象重み係数Ｃ(i,j)の値を、選択された入力値ｃijkに置き換える（図１０(ｆ)参照）。
【００９２】
次のＳ２０９では、ＣＰＵ１は、現時点における変数ｊの値が“７”に達しているかどうかをチェックする。そして、未だ変数ｊの値が“７”に達していない場合には、ＣＰＵ１は、Ｓ２１０において変数ｊをインクリメントした後で、次の行の重み係数Ｃ(i,j)を置換するために、処理をＳ２０７へ戻す。
【００９３】
これに対して、現時点における変数ｊの値が“７”に達しているとＳ２０９にて判定した場合には、ＣＰＵ１は、処理をＳ２１１に進める。このＳ２１１では、ＣＰＵ１は、現時点における変数ｉの値が“７”に達しているかどうかをチェックする。そして、未だ変数ｉの値が“７”に達していない場合には、ＣＰＵ１は、Ｓ２１２において変数ｉをインクリメントした後で、次の列の重み係数Ｃ(i,j)を置換するために、処理をＳ２０６へ戻す。
【００９４】
これに対して、現時点における変数ｉの値が“７”に達しているとＳ２１１にて判定した場合には、ＣＰＵ１は、処理をＳ２１３へ進める。このＳ２１３では、ＣＰＵ１は、Ｓ２０８にて値が置換された重み係数Ｃ(i,j)を含む周波数分布画像データ（図１０(ｇ)）全体に対して２次元逆ＤＣＴを施して、図１０（ｈ）に示す様なＮ×Ｎドットの署名画像埋込済画像データを生成する。具体的には、このＳ２１３では、ＣＰＵ１は、図８に示す２次元逆ＤＣＴ処理サブルーチンを実行する。
【００９５】
この２次元逆ＤＣＴ処理サブルーチンに入って最初のＳ４０１では、ＣＰＵ１は、この処理に用いられる関数を、下記式（７）〜（１０）の通り定義する。
【００９６】
【数７】
0003686741.tif 000008
【００９７】
次のＳ４０２では、ＣＰＵ１は、算出対象画素Ｒ（x,y）の署名画像埋込済画像データ内での列（０を最左とする）を示す変数ｘを、初期化して“０”とする。
【００９８】
次のＳ４０３では、ＣＰＵ１は、算出対象画素Ｒ（x,y）の署名画像埋込済画像データ内での行（０を最上とする）を示す変数ｙを、初期化して“０”とする。
【００９９】
次のＳ４０４では、ＣＰＵ１は、現時点での変数ｘ及びｙによって特定される署名画像埋込済画像データの画素Ｒ（x,y）の輝度値を算出する。具体的には、ＣＰＵ１は、現時点での変数ｘの値をＳ４０１にて定義した式（８）の関数に代入するとともに、現時点での変数ｙの値をＳ４０１にて定義した式（１０）の関数に代入する。その上で、ＣＰＵ１は、上記代入を行った式（８）の関数及び式（１０）の関数，並びに、Ｓ４０１にて定義した式（７）の関数及び式（９）の関数に基づいて、下記式（１１）を実行し、算出された級数を、現在の変数ｘ及びｙによって特定される画素Ｒ（x,y）の輝度値とする。
【０１００】
【数８】
0003686741.tif 000009
【０１０１】
次のＳ４０５では、ＣＰＵ１は、現時点における変数ｙの値が(Ｎ−１)に達しているかどうかをチェックする。そして、未だ変数ｙの値が(Ｎ−１)に達していない場合には、ＣＰＵ１は、Ｓ４０６において変数ｙをインクリメントした後に、処理をＳ４０４へ戻し、次の行に存する画素Ｒ（x,y）の輝度値を算出する。
【０１０２】
これに対して、現時点における変数ｙの値が(Ｎ−１)に達しているとＳ４０５にて判定した場合には、ＣＰＵ１は、処理をＳ４０７へ進める。このＳ４０７では、ＣＰＵ１は、現時点における変数ｘの値が(Ｎ−１)に達しているかどうかをチェックする。そして、未だ変数ｘの値が(Ｎ−１)に達していない場合には、ＣＰＵ１は、Ｓ４０８において変数ｘをインクリメントした後に、処理をＳ４０３へ戻し、次の列に存する画素Ｒ（x,y）の輝度値を算出する。
【０１０３】
これに対して、現時点における変数ｘの値が(Ｎ−１)に達しているとＳ４０７にて判定した場合には、ＣＰＵ１は、署名画像埋込済画像データを構成する全ての画素の輝度値が算出されたと判断して、このサブルーチンを終了して、処理を図６のメインルーチンに戻す。
【０１０４】
処理が戻された図６のメインルーチンにおいては、Ｓ２１３の完了後、処理がＳ２１４へ進められる。このＳ２１４では、ＣＰＵ１は、Ｎ×Ｎ画素の署名画像埋込済画像データを、出力用ディスク装置４へ出力する。
（識別情報抽出処理）
図９は、実施例１による識別情報抽出処理を示すフローチャートである。
【０１０５】
この識別情報埋込処理がスタートした後最初に実行される図９のＳ５０１では、ＣＰＵ１は、埋込関数ｆ(x)をＲＯＭ３から読み込む。
次のＳ５０２では、ＣＰＵ１は、図１１（ａ）に示すようなＮ×Ｎ画素の処理対象画像データを、入力用ディスク装置２から読み込む。
【０１０６】
次のＳ５０３では、ＣＰＵ１は、Ｓ５０２にて読み込んだ処理対象画像データ全体に対して２次元ＤＣＴを施して、図１１（ｂ）に示す様なＮ×Ｎドットの周波数分布画像データを生成する。具体的には、このＳ５０３では、ＣＰＵ１は、図７に示す２次元ＤＣＴ処理サブルーチンを実行する。
【０１０７】
次のＳ５０４以降Ｓ５１０までの処理は、図１１（ｂ）乃至（ｅ）に示される様に、周波数分布画像データ（図１１（ｂ））中のＤＣ成分を示す領域及び低周波数成分を示す領域（ｉ＝０〜７且つｊ＝０〜７の領域）（図１１（ｃ））を取り出して、この領域から署名画像データを抽出するための処理である。
【０１０８】
Ｓ５０４では、ＣＰＵ１は、取出対象重み係数Ｃ(i,j)の周波数分布画像データ中での列を示す変数ｉを、初期化して“０”とする。
次のＳ５０５では、ＣＰＵ１は、取出対象重み係数Ｃ(i,j)の周波数分布画像データ中での行を示す変数ｊを、初期化して“０”とする。
【０１０９】
次のＳ５０６では、ＣＰＵ１は、ＲＯＭ３から埋込関数（図１１(ｄ)，図１０（ｅ）と同一）を読み出して、現時点における変数ｉ及び変数ｊによって特定される抽出対象重み係数Ｃ(i,j)の値を埋込関数ｆ（ｘ）に代入して、ｉ列目・ｊ行目の出力値Ｓ’(i,j)を算出する。
【０１１０】
次のＳ５０７では、ＣＰＵ１は、現時点における変数ｊの値が“７”に達しているかどうかをチェックする。そして、未だ変数ｊの値が“７”に達していない場合には、ＣＰＵ１は、Ｓ５０８において変数ｊをインクリメントした後で、次の行の出力値Ｓ’を算出するために、処理をＳ５０６へ戻す。
【０１１１】
これに対して、現時点における変数ｊの値が“７”に達しているとＳ５０７にて判定した場合には、ＣＰＵ１は、処理をＳ５０９に進める。このＳ５０９では、ＣＰＵ１は、現時点における変数ｉの値が“７”に達しているかどうかをチェックする。そして、未だ変数ｉの値が“７”に達していない場合には、ＣＰＵ１は、Ｓ５１０において変数ｉをインクリメントした後で、次の列の出力値Ｓ’(i,j)を算出するために、処理をＳ５０５へ戻す。
【０１１２】
これに対して、現時点における変数ｉの値が“７”に達しているとＳ５０９にて判定した場合には、ＣＰＵ１は、処理をＳ５１１へ進める。このＳ５１１では、ＣＰＵ１は、Ｓ５０６にて算出されたｉ×ｊドットの出力値（輝度値）からなる画像データを出力装置５へ出力する。このとき、処理対象画像データが署名画像埋込済画像データであったならば、この画像データは、署名画像（図１０（ｄ））と同一の画像データ（図１１（ｅ））となる。
【０１１３】
【発明の効果】
以上のように構成された本発明によれば、画像データの画質をあまり悪化させることなく、第三者からは識別不可能な形態で、原画像データに識別情報を埋め込むことができる。しかも、埋め込まれた識別情報は、原画像データ無しに抽出することが可能である。従って、画像データの権利者等は、原画像データを保存・管理する必要がないので、大容量の記憶装置を用意する必要がない。
【図面の簡単な説明】
【図１】  本発明の原理図
【図２】  本発明の第１の実施形態による埋込用コンピュータの概略構成を示すブロック図
【図３】  図２のＣＰＵ１にて実行される識別情報埋込処理の内容を示すフローチャート
【図４】  本発明の第１の実施形態による抽出用コンピュータの概略構成を示すブロック図
【図５】  図４のＣＰＵ１にて実行される識別情報抽出処理の内容を示すフローチャート
【図６】  実施例１による識別情報埋込処理の内容を示すフローチャート
【図７】  図６のＳ２０４にて実行される２次元ＤＣＴ処理サブルーチンの内容を示すフローチャート
【図８】  図６のＳ２１３にて実行される２次元逆ＤＣＴ処理サブルーチンの内容を示すフローチャート
【図９】  実施例１による識別情報抽出処理の内容を示すフローチャート
【図１０】  実施例１による署名画像埋込処理の流れを示す説明図
【図１１】  実施例１による署名画像抽出処理の流れを示す説明図
【符号の説明】
１    ＣＰＵ
２    入力用ディスク装置
３    ＲＯＭ
４    出力用ディスク装置
５    出力装置
１１    直交変換処理部
１２    係数抽出処理部
１３    係数置換部
１４    係数埋込部
１５    逆直交変換処理部
１６    直交変換処理部
１７    係数抽出処理部
１８    識別情報算出部
【図１】
0003686741.tif 000010
【図２】
0003686741.tif 000011
【図３】
0003686741.tif 000012
【図４】
0003686741.tif 000013
【図５】
0003686741.tif 000014
【図６】
0003686741.tif 000015
【図７】
0003686741.tif 000016
【図８】
0003686741.tif 000017
【図９】
0003686741.tif 000018
【図１０】
0003686741.tif 000019
【図１１】
0003686741.tif 000020