(57)【特許請求の範囲】
【請求項１】
データを埋め込む対象である埋め込み対象データを操作することにより、前記埋め込み対象データに埋め込まれる被埋め込みデータを前記埋め込み対象データに埋め込み、前記被埋め込みデータを前記埋め込み対象データに埋め込んだ埋め込み符号化データを出力するデータ処理装置であって、
情報が有するエネルギの偏りを利用して他の情報が埋め込まれた前記情報が元の情報に復元されるように操作を行う第１の操作ルールにしたがい、前記埋め込み対象データを、任意の被埋め込みデータに対応して操作し、前記埋め込み対象データに前記任意の被埋め込みデータを埋め込んだ第１の操作ルールによる埋め込み符号化データを生成する第１の埋め込み手段と、
前記第１の操作ルールとは異なる第２の操作ルールにしたがい、前記第１の操作ルールによる埋め込み符号化データを、他の任意の被埋め込みデータに対応して操作し、前記第１の操作ルールによる埋め込み符号化データに前記他の任意の被埋め込みデータを埋め込んだ第２の操作ルールによる埋め込み符号化データを生成する第２の埋め込み手段と
を備え、
前記埋め込み対象データは、画像データであり、
前記第１と２の操作ルールのうちの一方は、画像データを構成する画素の位置を、空間または時間方向に操作する操作ルールであり、前記第１と２の操作ルールのうちの他方は、画像データを構成する画素をレベル方向に操作する操作ルールである
ことを特徴とするデータ処理装置。
【請求項２】
前記第１の操作ルールは、前記画像データの相関性を利用して前記第１の操作ルールによる埋め込み符号化データが前記画像データに復元される操作ルールである
ことを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
データを埋め込む対象である埋め込み対象データを操作することにより、前記埋め込み対象データに埋め込まれる被埋め込みデータを前記埋め込み対象データに埋め込み、前記被埋め込みデータを前記埋め込み対象データに埋め込んだ埋め込み符号化データを出力するデータ処理装置であって、
情報が有するエネルギの偏りを利用して他の情報が埋め込まれた前記情報が元の情報に復元されるように操作を行う第１の操作ルールにしたがい、前記埋め込み対象データを、任意の被埋め込みデータに対応して操作し、前記埋め込み対象データに前記任意の被埋め込みデータを埋め込んだ第１の操作ルールによる埋め込み符号化データを生成する第１の埋め込み手段と、
前記第１の操作ルールとは異なる第２の操作ルールにしたがい、前記第１の操作ルールによる埋め込み符号化データを、他の任意の被埋め込みデータに対応して操作し、前記第１の操作ルールによる埋め込み符号化データに前記他の任意の被埋め込みデータを埋め込んだ第２の操作ルールによる埋め込み符号化データを生成する第２の埋め込み手段と
を備え、
前記埋め込み対象データは、画像データであり、
前記第１の埋め込み手段は、前記画像データにおける所定方向に並ぶ画素列を、前記任意の被埋め込みデータに対応する分だけ、前記所定方向にローテーションすることを、前記第１の操作ルールとして、前記画像データに前記任意の被埋め込みデータを埋め込んだ前記第１の操作ルールによる埋め込み符号化データを生成し、
前記第２の埋め込み手段は、前記画像データにおける所定方向に並ぶ画素列を前記所定方向にローテーションすることにならない操作を行う操作ルールを、前記第２の操作ルールとして、前記第１の操作ルールによる埋め込み符号化データに前記他の任意の被埋め込みデータを埋め込んだ前記第２の操作ルールによる埋め込み符号化データを生成する
ことを特徴とするデータ処理装置。
【請求項４】
前記第２の埋め込み手段は、前記第１の操作ルールによる埋め込み符号化データとされた前記画像データの複数の画素の画素値を表すビット列の各ビットごとのビットプレーンを、前記他の任意の被埋め込みデータに対応して入れ替えるビットプレーンスワップを行うことを、前記第２の操作ルールとして、前記第１の操作ルールによる埋め込み符号化データに前記他の任意の被埋め込みデータを埋め込んだ前記第２の操作ルールによる埋め込み符号化データを生成する
ことを特徴とする請求項３に記載のデータ処理装置。
【請求項５】
前記第１の埋め込み手段は、
前記画像データを、第１の被埋め込みデータに対応して、水平または垂直方向のうちのいずれか１つの方向にローテーションすることにより、前記画像データに対して、前記第１の被埋め込みデータを埋め込んだ第１の埋め込み符号化データを生成し、
さらに、前記第１の埋め込み符号化データを、第２の被埋め込みデータに対応して、水平または垂直方向の垂直方向のうちの他の方向にローテーションすることにより、前記第１の埋め込み符号化データに対して、前記第２の被埋め込みデータを埋め込んだ第２の埋め込み符号化データを生成し、
前記第２の埋め込み手段は、前記第２の埋め込み符号化データを、第３の被埋め込みデータに対応してビットプレーンスワップすることにより、前記第２の埋め込み符号化データに対して、前記第３の被埋め込みデータを埋め込んだ第３の埋め込み符号化データを生成する
ことを特徴とする請求項４に記載のデータ処理装置。
【請求項６】
データを埋め込む対象である埋め込み対象データを操作することにより、前記埋め込み対象データに埋め込まれる被埋め込みデータを前記埋め込み対象データに埋め込み、前記被埋め込みデータを前記埋め込み対象データに埋め込んだ埋め込み符号化データを出力するデータ処理方法であって、
情報が有するエネルギの偏りを利用して他の情報が埋め込まれた前記情報が元の情報に復元されるように操作を行う第１の操作ルールにしたがい、前記埋め込み対象データを、任意の被埋め込みデータに対応して操作し、前記埋め込み対象データに前記任意の被埋め込みデータを埋め込んだ第１の操作ルールによる埋め込み符号化データを生成する第１の埋め込みステップと、
前記第１の操作ルールとは異なる第２の操作ルールにしたがい、前記第１の操作ルールによる埋め込み符号化データを、他の任意の被埋め込みデータに対応して操作し、前記第１の操作ルールによる埋め込み符号化データに前記他の任意の被埋め込みデータを埋め込んだ第２の操作ルールによる埋め込み符号化データを生成する第２の埋め込みステップと
を備え、
前記埋め込み対象データは、画像データであり、
前記第１と２の操作ルールのうちの一方は、画像データを構成する画素の位置を、空間または時間方向に操作する操作ルールであり、前記第１と２の操作ルールのうちの他方は、画像データを構成する画素をレベル方向に操作する操作ルールである
ことを特徴とするデータ処理方法。
【請求項７】
データを埋め込む対象である埋め込み対象データを操作することにより、前記埋め込み対象データに埋め込まれる被埋め込みデータを前記埋め込み対象データに埋め込み、前記被埋め込みデータを前記埋め込み対象データに埋め込んだ埋め込み符号化データを出力するデータ処理を、コンピュータに行わせるプログラムであって、
情報が有するエネルギの偏りを利用して他の情報が埋め込まれた前記情報が元の情報に復元されるように操作を行う第１の操作ルールにしたがい、前記埋め込み対象データを、任意の被埋め込みデータに対応して操作し、前記埋め込み対象データに前記任意の被埋め込みデータを埋め込んだ第１の操作ルールによる埋め込み符号化データを生成する第１の埋め込みステップと、
前記第１の操作ルールとは異なる第２の操作ルールにしたがい、前記第１の操作ルールによる埋め込み符号化データを、他の任意の被埋め込みデータに対応して操作し、前記第１の操作ルールによる埋め込み符号化データに前記他の任意の被埋め込みデータを埋め込んだ第２の操作ルールによる埋め込み符号化データを生成する第２の埋め込みステップと
を備え、
前記埋め込み対象データは、画像データであり、
前記第１と２の操作ルールのうちの一方は、画像データを構成する画素の位置を、空間または時間方向に操作する操作ルールであり、前記第１と２の操作ルールのうちの他方は、画像データを構成する画素をレベル方向に操作する操作ルールである
ことを特徴とするプログラム。
【請求項８】
データを埋め込む対象である埋め込み対象データを操作することにより生成された、前記埋め込み対象データに埋め込まれる被埋め込みデータを前記埋め込み対象データに埋め込んだ埋め込み符号化データを、前記埋め込み対象データと被埋め込みデータに復元するデータ処理装置であって、
情報が有するエネルギの偏りを利用して他の情報が埋め込まれた前記情報が元の情報に復元されるように操作を行う第１の操作ルールにしたがい、前記埋め込み対象データを、任意の被埋め込みデータに対応して操作し、前記埋め込み対象データに前記任意の被埋め込みデータを埋め込んだ第１の操作ルールによる埋め込み符号化データを生成し、
前記第１の操作ルールとは異なる第２の操作ルールにしたがい、前記第１の操作ルールによる埋め込み符号化データを、他の任意の被埋め込みデータに対応して操作し、前記第１の操作ルールによる埋め込み符号化データに前記他の任意の被埋め込みデータを埋め込んだ第２の操作ルールによる埋め込み符号化データを生成する
ことにより得られた前記第２の操作ルールによる埋め込み符号化データを、前記第２の操作ルールにしたがって操作するとともに、前記第１の操作ルールにしたがって操作し、その操作によって得られるデータのエネルギの偏りを利用して、前記第１の操作ルールによる埋め込み符号化データと前記他の任意の被埋め込みデータを復元する第１の復元手段と、
前記第１の操作ルールによる埋め込み符号化データを、前記第１の操作ルールにしたがって操作し、その操作によって得られるデータのエネルギの偏りを利用して、前記埋め込み対象データと前記任意の被埋め込みデータを復元する第２の復元手段と
を備え、
前記埋め込み対象データは、画像データであり、
前記第１と２の操作ルールのうちの一方は、画像データを構成する画素の位置を、空間または時間方向に操作するものであり、前記第１と２の操作ルールのうちの他方は、画像データを構成する画素をレベル方向に操作するものである
ことを特徴とするデータ処理装置。
【請求項９】
前記第１の操作ルールは、前記埋め込み対象データの相関性を利用して前記第１の操作ルールによる埋め込み符号化データを前記埋め込み対象データに復元する操作ルールであり、
前記第１の復元手段は、
前記第２の操作ルールによる埋め込み符号化データを、前記第２の操作ルールにしたがって操作する第１の操作手段と、
前記第１の操作手段による操作によって得られたデータを、前記第１の操作ルールにしたがって操作する第２の操作手段と、
前記第２の操作手段による操作によって得られたデータの相関を求める相関演算手段と、
前記相関演算手段によって求められた相関に基づいて、前記第１の操作手段における前記第２の操作ルールによる埋め込み符号化データの操作を決定し、その操作を表す操作情報を出力する操作決定手段と
を有し、
前記操作決定手段が出力する操作情報に基づいて、前記第２の操作ルールによる埋め込み符号化データを、前記第１の操作ルールによる埋め込み符号化データと前記他の任意の被埋め込みデータに復元する
ことを特徴とする請求項８に記載のデータ処理装置。
【請求項１０】
前記第１の復元手段は、前記相関演算手段によって求められた相関を表す関数の特徴量を求める特徴量演算手段をさらに有し、
前記操作決定手段は、前記特徴演算手段において求められる前記相関を表す関数の特徴量に基づいて、前記第２の操作ルールによる埋め込み符号化データの操作を決定する
ことを特徴とする請求項９に記載のデータ処理装置。
【請求項１１】
前記第２の復元手段は、前記第１の操作ルールによる埋め込み符号化データを、前記第１の操作ルールにしたがって操作し、その操作によって得られるデータの相関に基づいて、前記埋め込み対象データと前記任意の被埋め込みデータを復元する
ことを特徴とする請求項９に記載のデータ処理装置。
【請求項１２】
前記第２の操作ルールによる埋め込み符号化データは、
前記埋め込み対象データとしての画像データにおける所定方向に並ぶ画素列を、前記任意の被埋め込みデータに対応する分だけ、前記所定方向にローテーションすることを、前記第１の操作ルールとして、前記画像データに前記任意の被埋め込みデータを埋め込んだ前記第１の操作ルールによる埋め込み符号化データを生成し、
前記第１の操作ルールによる埋め込み符号化データとされた前記画像データの複数の画素の画素値を表すビット列の各ビットごとのビットプレーンを、前記他の任意の被埋め込みデータに対応して入れ替えるビットプレーンスワップを行うことを、前記第２の操作ルールとして、前記第１の操作ルールによる埋め込み符号化データに前記他の任意の被埋め込みデータを埋め込んだ前記第２の操作ルールによる埋め込み符号化データを生成する
ことにより得られたものであり、
前記第１の復元手段は、
前記第２の操作ルールによる埋め込み符号化データとされた前記画像データをビットプレーンスワップするビットプレーンスワップ手段と、
前記ビットプレーンスワップ手段によるビットプレーンスワップによって得られたデータとしての画像データにおける前記所定方向に並ぶ画素列をローテーションするローテーション手段と、
前記ローテーション手段によるローテーションによって得られたデータとしての画像データの相関を求める相関演算手段と、
前記相関演算手段によって求められた相関に基づいて、前記ビットプレーンスワップ手段における、前記第２の操作ルールによる埋め込み符号化データとされた前記画像データの操作を決定し、その操作を表す操作情報を出力する操作決定手段と
を有し、
前記操作決定手段が出力する操作情報に基づいて、前記第２の操作ルールによる埋め込み符号化データとされた前記画像データを、前記第１の操作ルールによる埋め込み符号化データと前記他の任意の被埋め込みデータを復元する
ことを特徴とする請求項８に記載のデータ処理装置。
【請求項１３】
前記第２の操作ルールによる埋め込み符号化データは、
前記画像データを、第１の被埋め込みデータに対応して、水平または垂直方向のうちのいずれか１つの方向にローテーションすることにより、前記画像データに対して、前記第１の被埋め込みデータを埋め込んだ第１の埋め込み符号化データを生成し、
前記第１の埋め込み符号化データを、第２の被埋め込みデータに対応して、水平または垂直方向のうちの他の方向にローテーションすることにより、前記第１の埋め込み符号化データに対して、前記第２の被埋め込みデータを埋め込んだ第２の埋め込み符号化データを生成し、
前記第２の埋め込み符号化データを、第３の被埋め込みデータに対応してビットプレーンスワップすることにより、前記第２の埋め込み符号化データに対して、前記第３の被埋め込みデータを埋め込んだ前記第３の埋め込み符号化データを生成する
ことにより得られた前記第３の埋め込み符号化データであり、
前記ローテーション手段は、前記ビットプレーンスワップ手段によるビットプレーンスワップによって得られたデータとしての画像データにおける前記他の方向に並ぶ画素列をローテーションし、
前記相関演算手段は、前記ローテーション手段によるローテーションによって得られたデータとしての画像データの、前記１つの方向に隣接する画素列どうしの相関を求める
ことを特徴とする請求項１２に記載のデータ処理装置。
【請求項１４】
データを埋め込む対象である埋め込み対象データを操作することにより生成された、前記埋め込み対象データに埋め込まれる被埋め込みデータを前記埋め込み対象データに埋め込んだ埋め込み符号化データを、前記埋め込み対象データと被埋め込みデータに復元するデータ処理方法であって、
情報が有するエネルギの偏りを利用して他の情報が埋め込まれた前記情報が元の情報に復元されるように操作を行う第１の操作ルールにしたがい、前記埋め込み対象データを、任意の被埋め込みデータに対応して操作し、前記埋め込み対象データに前記任意の被埋め込みデータを埋め込んだ第１の操作ルールによる埋め込み符号化データを生成し、
前記第１の操作ルールとは異なる第２の操作ルールにしたがい、前記第１の操作ルールによる埋め込み符号化データを、他の任意の被埋め込みデータに対応して操作し、前記第１の操作ルールによる埋め込み符号化データに前記他の任意の被埋め込みデータを埋め込んだ第２の操作ルールによる埋め込み符号化データを生成する
ことにより得られた前記第２の操作ルールによる埋め込み符号化データを、前記第２の操作ルールにしたがって操作するとともに、前記第１の操作ルールにしたがって操作し、その操作によって得られるデータのエネルギの偏りを利用して、前記第１の操作ルールによる埋め込み符号化データと前記他の任意の被埋め込みデータを復元する第１の復元ステップと、
前記第１の操作ルールによる埋め込み符号化データを、前記第１の操作ルールにしたがって操作し、その操作によって得られるデータのエネルギの偏りを利用して、前記埋め込み対象データと前記任意の被埋め込みデータを復元する第２の復元ステップと
を備え、
前記埋め込み対象データは、画像データであり、
前記第１と２の操作ルールのうちの一方は、画像データを構成する画素の位置を、空間または時間方向に操作するものであり、前記第１と２の操作ルールのうちの他方は、画像データを構成する画素をレベル方向に操作するものである
ことを特徴とするデータ処理方法。
【請求項１５】
データを埋め込む対象である埋め込み対象データを操作することにより生成された、前記埋め込み対象データに埋め込まれる被埋め込みデータを前記埋め込み対象データに埋め込んだ埋め込み符号化データを、前記埋め込み対象データと被埋め込みデータに復元するデータ処理を、コンピュータに行わせるプログラムであって、
情報が有するエネルギの偏りを利用して他の情報が埋め込まれた前記情報が元の情報に復元されるように操作を行う第１の操作ルールにしたがい、前記埋め込み対象データを、任意の被埋め込みデータに対応して操作し、前記埋め込み対象データに前記任意の被埋め込みデータを埋め込んだ第１の操作ルールによる埋め込み符号化データを生成し、
前記第１の操作ルールとは異なる第２の操作ルールにしたがい、前記第１の操作ルールによる埋め込み符号化データを、他の任意の被埋め込みデータに対応して操作し、前記第１の操作ルールによる埋め込み符号化データに前記他の任意の被埋め込みデータを埋め込んだ第２の操作ルールによる埋め込み符号化データを生成する
ことにより得られた前記第２の操作ルールによる埋め込み符号化データを、前記第２の操作ルールにしたがって操作するとともに、前記第１の操作ルールにしたがって操作し、その操作によって得られるデータのエネルギの偏りを利用して、前記第１の操作ルールによる埋め込み符号化データと前記他の任意の被埋め込みデータを復元する第１の復元ステップと、
前記第１の操作ルールによる埋め込み符号化データを、前記第１の操作ルールにしたがって操作し、その操作によって得られるデータのエネルギの偏りを利用して、前記埋め込み対象データと前記任意の被埋め込みデータを復元する第２の復元ステップと
を備え、
前記埋め込み対象データは、画像データであり、
前記第１と２の操作ルールのうちの一方は、画像データを構成する画素の位置を、空間または時間方向に操作するものであり、前記第１と２の操作ルールのうちの他方は、画像データを構成する画素をレベル方向に操作するものである
ことを特徴とするプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ処理装置およびデータ処理方法、並びにプログラムに関し、特に、例えば、画像データに対して、多くのデータを埋め込むとともに、そのデータが埋め込まれた画像データと、埋め込んだデータを復元すること等ができるようにするデータ処理装置およびデータ処理方法、並びにプログラムに関する。
【０００２】
【従来の技術】
例えば、情報としてのあるデータ系列に対して、そのデータ量を増加させることなく、他の情報としての他のデータ系列を埋め込む手法としては、例えば、ディジタル音声データ（オーディオデータ）の最下位ビットや、下位２ビットなどを、埋め込む情報に変換するものなどがある。この手法は、ディジタル音声データの下位ビットが、その音質にあまり影響を与えないことを利用し、その下位ビットを、単に、他のデータ系列を構成するデータに置き換えるものであり、従って、再生時には、他のデータ系列が埋め込まれたディジタル音声データは、その下位ビットを元に戻さずに、そのまま出力される。即ち、この場合、他のデータ系列が埋め込まれた下位ビットを、元に戻すのは困難であり、また、下位ビットは、音質に、あまり影響を与えないことから、ディジタル音声データは、他のデータ系列が埋め込まれた状態で出力される。
【０００３】
しかしながら、以上のような手法によれば、元の音声データと異なる音声データが出力される。即ち、元の音声データに埋め込まれた他のデータは、元の音声データにとっては、ノイズとなるから、他のデータが埋め込まれた音声データは、その音質が劣化したものとなる。
【０００４】
また、音声データの他、画像データにも、上述の音声データにおける場合と同様にして、他のデータの埋め込みが可能であるが、この場合も、他のデータが埋め込まれた画像データは、その画質が劣化したものとなる。
【０００５】
【発明が解決しようとする課題】
そこで、本件出願人は、画質を劣化させることなく（画質の劣化を最低限に抑えて）、元の画像データと、それに埋め込まれていた他のデータを復元することのできる埋め込み手法について、先に提案している。
【０００６】
即ち、いま、他のデータを埋め込む対象となる画像データ等を、埋め込み対象データと、埋め込み対象データに埋め込まれる他のデータを、被埋め込みデータと、埋め込み対象データに対して被埋め込みデータを埋め込むことにより得られるデータを、埋め込み符号化データと、それぞれいうものとする。
【０００７】
この場合、被埋め込みデータを、埋め込み対象データに埋め込む埋め込み処理では、例えば、図１Ａに示すように、埋め込み対象データとしての画像データを構成する水平ラインが、その上方向から下方向に、順次、注目ラインとされる。そして、注目ラインが、被埋め込みデータに対応する分だけ、例えば、右方向にローテーションされることで、その被埋め込みデータが、埋め込み対象データとしての画像データ（の注目ライン）に埋め込まれる。ここで、図１Ａは、被埋め込みデータとして、「２」が埋め込まれる場合を示しており、注目ラインが、被埋め込みデータ「２」に対応して、２画素分だけ、右方向にローテーションされている。
【０００８】
埋め込み処理では、上述のようにして、埋め込み対象データとしての画像データが、被埋め込みデータに対応してローテーションされることにより、被埋め込みデータが、埋め込み対象データに埋め込まれ、これにより、埋め込み符号化データが生成される。この埋め込み符号化データは、埋め込み対象データとしての画像データの水平ラインを水平方向（ここでは右方向）にローテーションしたものであるから、そのデータ量は、埋め込み対象データと同一であり、従って、上述の埋め込み処理によれば、埋め込み対象データと被埋め込みデータは、埋め込み対象データのデータ量に圧縮されることになる。
【０００９】
以上のような埋め込み符号化データを、元の埋め込み対象データと被埋め込みデータに復元する復元処理では、例えば、図１Ｂに示すように、埋め込み符号化データとされた画像データを構成する水平ラインが、その上方向から下方向に、順次、注目ラインとされる。さらに、注目ラインの１ライン上の水平ラインが基準ラインとされ、注目ラインが、埋め込み処理の場合とは反対方向の左方向に、１画素ずつローテーションされる。また、注目ラインをローテーションしながら、その注目ラインを構成する各画素と、基準ラインを構成する対応する画素との相関の総和などが、注目ラインと基準ラインの相関として計算され、その相関を最大にするローテーション量が求められる。そして、基準ラインが、相関を最大にするローテーション量だけローテーションされることにより元の位置に戻されるとともに、そのローテーション量が、その注目ラインに埋め込まれていた被埋め込みデータとして復元される。
【００１０】
復元処理では、上述のようにして、埋め込み符号化データとしての画像データを構成する各水平ラインが、基準ラインとの相関を最大にする位置にローテーションされることにより、埋め込み対象データとしての画像データが復元されるとともに、各水平ラインのローテーション量に基づいて、埋め込み符号化データに埋め込まれていた被埋め込みデータが復元される。
【００１１】
以上のように、先に提案した埋め込み処理および復元処理によれば、埋め込み対象データと被埋め込みデータを、埋め込み対象データのデータ量となる埋め込み符号化データに圧縮すること、即ち、被埋め込みデータの分だけ圧縮することができ、さらに、そのように圧縮された埋め込み符号化データを、元の埋め込み対象データと被埋め込みデータに復元することができる。
【００１２】
ところで、より多くの被埋め込みデータを埋め込むことができれば便利であるが、ラインをローテーションするという操作ルールだけでは、画像データに埋め込むことのできる被埋め込みデータのデータ量は、その画像データを構成するライン数による制限を受ける。
【００１３】
本発明は、このような状況に鑑みてなされたものであり、埋め込み対象データに対して、より多くの被埋め込みデータを埋め込む埋め込み処理と、その埋め込み処理によって得られた埋め込み符号化データを、元の埋め込み対象データと被埋め込みデータに復元する復元処理を行うことができるようにするものである。
【００１４】
【課題を解決するための手段】
本発明の第１のデータ処理装置は、情報が有するエネルギの偏りを利用して他の情報が埋め込まれた情報が元の情報に復元されるように操作を行う第１の操作ルールにしたがい、埋め込み対象データを、任意の被埋め込みデータに対応して操作し、埋め込み対象データに任意の被埋め込みデータを埋め込んだ第１の操作ルールによる埋め込み符号化データを生成する第１の埋め込み手段と、第１の操作ルールとは異なる第２の操作ルールにしたがい、第１の操作ルールによる埋め込み符号化データを、他の任意の被埋め込みデータに対応して操作し、第１の操作ルールによる埋め込み符号化データに他の任意の被埋め込みデータを埋め込んだ第２の操作ルールによる埋め込み符号化データを生成する第２の埋め込み手段とを備え、埋め込み対象データは、画像データであり、第１と２の操作ルールのうちの一方は、画像データを構成する画素の位置を、空間または時間方向に操作する操作ルールであり、第１と２の操作ルールのうちの他方は、画像データを構成する画素をレベル方向に操作する操作ルールであることを特徴とする。
【００１５】
本発明の第１のデータ処理方法は、情報が有するエネルギの偏りを利用して他の情報が埋め込まれた情報が元の情報に復元されるように操作を行う第１の操作ルールにしたがい、埋め込み対象データを、任意の被埋め込みデータに対応して操作し、埋め込み対象データに任意の被埋め込みデータを埋め込んだ第１の操作ルールによる埋め込み符号化データを生成する第１の埋め込みステップと、第１の操作ルールとは異なる第２の操作ルールにしたがい、第１の操作ルールによる埋め込み符号化データを、他の任意の被埋め込みデータに対応して操作し、第１の操作ルールによる埋め込み符号化データに他の任意の被埋め込みデータを埋め込んだ第２の操作ルールによる埋め込み符号化データを生成する第２の埋め込みステップとを備え、埋め込み対象データは、画像データであり、第１と２の操作ルールのうちの一方は、画像データを構成する画素の位置を、空間または時間方向に操作する操作ルールであり、第１と２の操作ルールのうちの他方は、画像データを構成する画素をレベル方向に操作する操作ルールであることを特徴とする。
【００１６】
本発明の第１のプログラムは、情報が有するエネルギの偏りを利用して他の情報が埋め込まれた情報が元の情報に復元されるように操作を行う第１の操作ルールにしたがい、埋め込み対象データを、任意の被埋め込みデータに対応して操作し、埋め込み対象データに任意の被埋め込みデータを埋め込んだ第１の操作ルールによる埋め込み符号化データを生成する第１の埋め込みステップと、第１の操作ルールとは異なる第２の操作ルールにしたがい、第１の操作ルールによる埋め込み符号化データを、他の任意の被埋め込みデータに対応して操作し、第１の操作ルールによる埋め込み符号化データに他の任意の被埋め込みデータを埋め込んだ第２の操作ルールによる埋め込み符号化データを生成する第２の埋め込みステップとを備え、埋め込み対象データは、画像データであり、第１と２の操作ルールのうちの一方は、画像データを構成する画素の位置を、空間または時間方向に操作する操作ルールであり、第１と２の操作ルールのうちの他方は、画像データを構成する画素をレベル方向に操作する操作ルールであることを特徴とする。
【００１８】
本発明の第２のデータ処理装置は、第２の操作ルールによる埋め込み符号化データを、第２の操作ルールにしたがって操作するとともに、第１の操作ルールにしたがって操作し、その操作によって得られるデータのエネルギの偏りを利用して、第１の操作ルールによる埋め込み符号化データと他の任意の被埋め込みデータを復元する第１の復元手段と、第１の操作ルールによる埋め込み符号化データを、第１の操作ルールにしたがって操作し、その操作によって得られるデータのエネルギの偏りを利用して、埋め込み対象データと任意の被埋め込みデータを復元する第２の復元手段とを備え、埋め込み対象データは、画像データであり、第１と２の操作ルールのうちの一方は、画像データを構成する画素の位置を、空間または時間方向に操作するものであり、第１と２の操作ルールのうちの他方は、画像データを構成する画素をレベル方向に操作するものであることを特徴とする。
【００１９】
本発明の第２のデータ処理方法は、第２の操作ルールによる埋め込み符号化データを、第２の操作ルールにしたがって操作するとともに、第１の操作ルールにしたがって操作し、その操作によって得られるデータのエネルギの偏りを利用して、第１の操作ルールによる埋め込み符号化データと他の任意の被埋め込みデータを復元する第１の復元ステップと、第１の操作ルールによる埋め込み符号化データを、第１の操作ルールにしたがって操作し、その操作によって得られるデータのエネルギの偏りを利用して、埋め込み対象データと任意の被埋め込みデータを復元する第２の復元ステップとを備え、埋め込み対象データは、画像データであり、第１と２の操作ルールのうちの一方は、画像データを構成する画素の位置を、空間または時間方向に操作するものであり、第１と２の操作ルールのうちの他方は、画像データを構成する画素をレベル方向に操作するものであることを特徴とする。
【００２０】
本発明の第２のプログラムは、第２の操作ルールによる埋め込み符号化データを、第２の操作ルールにしたがって操作するとともに、第１の操作ルールにしたがって操作し、その操作によって得られるデータのエネルギの偏りを利用して、第１の操作ルールによる埋め込み符号化データと他の任意の被埋め込みデータを復元する第１の復元ステップと、第１の操作ルールによる埋め込み符号化データを、第１の操作ルールにしたがって操作し、その操作によって得られるデータのエネルギの偏りを利用して、埋め込み対象データと任意の被埋め込みデータを復元する第２の復元ステップとを備え、埋め込み対象データは、画像データであり、第１と２の操作ルールのうちの一方は、画像データを構成する画素の位置を、空間または時間方向に操作するものであり、第１と２の操作ルールのうちの他方は、画像データを構成する画素をレベル方向に操作するものであることを特徴とする。
【００２２】
本発明の第１のデータ処理装置およびデータ処理方法、並びにプログラムにおいては、情報が有するエネルギの偏りを利用して他の情報が埋め込まれた情報が元の情報に復元されるように操作を行う第１の操作ルールにしたがい、埋め込み対象データが、任意の被埋め込みデータに対応して操作され、埋め込み対象データに任意の被埋め込みデータを埋め込んだ第１の操作ルールによる埋め込み符号化データが生成される。そして、第１の操作ルールとは異なる第２の操作ルールにしたがい、第１の操作ルールによる埋め込み符号化データが、他の任意の被埋め込みデータに対応して操作され、第１の操作ルールによる埋め込み符号化データに他の任意の被埋め込みデータを埋め込んだ第２の操作ルールによる埋め込み符号化データが生成される。この場合において、埋め込み対象データは、画像データであり、第１と２の操作ルールのうちの一方は、画像データを構成する画素の位置を、空間または時間方向に操作する操作ルールであり、第１と２の操作ルールのうちの他方は、画像データを構成する画素をレベル方向に操作する操作ルールである。
【００２３】
本発明の第２のデータ処理装置およびデータ処理方法、並びにプログラムにおいては、第２の操作ルールによる埋め込み符号化データが、第２の操作ルールにしたがって操作されるとともに、第１の操作ルールにしたがって操作され、その操作によって得られるデータのエネルギの偏りを利用して、第１の操作ルールによる埋め込み符号化データと他の任意の被埋め込みデータが復元される。そして、第１の操作ルールによる埋め込み符号化データが、第１の操作ルールにしたがって操作され、その操作によって得られるデータのエネルギの偏りを利用して、埋め込み対象データと任意の被埋め込みデータが復元される。この場合において、埋め込み対象データは、画像データであり、第１と２の操作ルールのうちの一方は、画像データを構成する画素の位置を、空間または時間方向に操作するものであり、第１と２の操作ルールのうちの他方は、画像データを構成する画素をレベル方向に操作するものである。
【００２４】
【発明の実施の形態】
図２は、本発明を適用した埋め込み符号化／復号システムの一実施の形態の構成例を示している。
【００２５】
この埋め込み符号化／復号システムは、符号化装置１１および復号装置１２で構成されている。符号化装置１１は、埋め込み対象データとしての、例えば、画像データに対して、被埋め込みデータを埋め込むことにより、埋め込み符号化データを生成して出力し、復号装置１２は、その埋め込み符号化データを、元の埋め込み対象データと被埋め込みデータに復号する。
【００２６】
即ち、符号化装置１１は、埋め込み対象データベース１、被埋め込みデータベース２、および埋め込み符号化器３で構成されている。
【００２７】
埋め込み対象データベース１は、埋め込み対象データとしての、例えばディジタル画像データを記憶している。そして、埋め込み対象データベース１からは、そこに記憶されている画像データが読み出され、埋め込み符号化器３に供給される。
【００２８】
また、被埋め込みデータベース２は、被埋め込みデータ（ディジタルデータ）を記憶している。そして、被埋め込みデータベース２からも、そこに記憶されている被埋め込みデータが読み出され、埋め込み符号化器３に供給される。
【００２９】
埋め込み符号化器３では、埋め込み対象データベース１からの画像データ、および被埋め込みデータベース２からの被埋め込みデータが受信される。さらに、埋め込み符号化器３は、埋め込み対象データベース１からの画像データが有するエネルギの偏りを利用して復号を行うことができるように、その画像データを、被埋め込みデータベース２からの被埋め込みデータに対応して操作することで、画像データに、被埋め込みデータを埋め込み、埋め込み符号化データを生成して出力する。埋め込み符号化器３が出力する埋め込み符号化データは、例えば、半導体メモリ、光磁気ディスク、磁気ディスク、光ディスク、磁気テープ、相変化ディスクなどでなる記録媒体４に記録され、あるいは、また、例えば、地上波、衛星回線、ＣＡＴＶ（Cable Television）網、インターネット、公衆回線などでなる伝送媒体５を介して伝送され、復号装置１２に提供される。
【００３０】
復号装置１２は、復元器６で構成され、そこでは、記録媒体４または伝送媒体５を介して提供される埋め込み符号化データが受信される。さらに、復元器６は、その埋め込み符号化データを、埋め込み対象データとしての画像データが有するエネルギの偏りを利用して、元の画像データおよび被埋め込みデータに復元する。この復元された画像データは、例えば、図示せぬモニタに供給されて表示される。
【００３１】
なお、被埋め込みデータとしては、例えば、埋め込み対象データとしての元の画像データに関連するテキストデータや、音声データ、その画像データを縮小した縮小画像データ等は勿論、元の画像データに無関係なデータも用いることができる。
【００３２】
次に、図３は、図２の埋め込み符号化器３の構成例を示している。
【００３３】
埋め込み対象データベース１から供給される埋め込み対象データとしての画像データは、フレームメモリ２１に供給されるようになされており、フレームメモリ２１は、埋め込み対象データベース１からの画像データを、例えば、フレーム単位で一時記憶する。
【００３４】
埋め込み部２２は、被埋め込みデータベース２に記憶された被埋め込みデータを受信し、その被埋め込みデータを、フレームメモリ２１に記憶された埋め込み対象データとしての画像データに埋め込む埋め込み処理を行い、これにより、画像データのエネルギの偏りを利用して元に戻すことができる埋め込み符号化データを生成する。
【００３５】
なお、フレームメモリ２１は、複数のフレーム（またはフィールド）を記憶することのできるように、複数バンクで構成されており、バンク切り替えを行うことで、フレームメモリ２１では、埋め込み対象データベース１から供給される画像データの記憶、埋め込み部２２による埋め込み処理の対象となっている画像データの記憶、および埋め込み処理後の画像データ（埋め込み符号化データ）の出力を、同時に行うことができるようになっている。これにより、埋め込み対象データベース１から供給される画像データが、動画であっても、埋め込み符号化データのリアルタイム出力を行うことができるようになっている。
【００３６】
次に、図４は、図３の埋め込み符号化器３が出力する埋め込み符号化データを、画像データのエネルギの偏りを利用して元の画像データと被埋め込みデータに復元する図２の復元器６の構成例を示している。
【００３７】
埋め込み符号化データ、即ち、被埋め込みデータが埋め込まれた画像データ（以下、適宜、埋め込み画像データともいう）は、フレームメモリ３１に供給されるようになされており、フレームメモリ３１は、埋め込み画像データを、例えば、フレーム単位で一時記憶する。なお、フレームメモリ３１も、図３のフレームメモリ２１と同様に構成され、バンク切り替えを行うことにより、埋め込み画像データが、動画であっても、そのリアルタイム処理が可能となっている。
【００３８】
復元部３２は、フレームメモリ３１に記憶された埋め込み画像データを、画像データのエネルギの偏りを利用して元の画像データと被埋め込みデータに復元する復元処理を行う。
【００３９】
次に、上述の埋め込み符号化器３で行われる埋め込み処理と、復元器６で行われる復元処理の原理について説明する。
【００４０】
一般に、情報と呼ばれるものは、エネルギ（エントロピー）の偏り（普遍性）を有し、この偏りが、情報（価値ある情報）として認識される。即ち、例えば、ある風景を撮影して得られる画像が、そのような風景の画像であると人によって認識されるのは、画像（画像を構成する各画素の画素値など）が、その風景に対応したエネルギの偏りを有するからであり、エネルギの偏りがない画像は、雑音等にすぎず、情報としての利用価値はない。
【００４１】
従って、価値ある情報に対して、何らかの操作を施し、その情報が有する本来のエネルギの偏りを、いわば破壊した場合でも、その破壊されたエネルギの偏りを元に戻すことで、何らかの操作が施された情報も、元の情報に戻すことができる。即ち、情報を操作して得られるデータは、その情報が有する本来のエネルギの偏りを利用して、元の価値ある情報に復元することができる。
【００４２】
ここで、情報が有するエネルギ（の偏り）を表すものとしては、例えば、相関性、連続性、相似性などがある。
【００４３】
情報の相関性とは、その情報の構成要素（例えば、画像であれば、その画像を構成する画素や水平ラインなど）どうしの相関（例えば、自己相関や、ある構成要素と他の構成要素との距離など）を意味する。例えば、画像の相関性を表すものとしては、画像の水平ライン間の相関があり、この相関を表す相関値としては、例えば、２つの水平ラインにおける、対応する画素の画素値どうしの差分の２乗和等の逆数を用いることができる。
【００４４】
即ち、例えば、いま、図５に示すようなＨ本の水平ラインを有する画像があった場合に、その上から１行目の水平ライン（第１水平ライン）と、他の水平ラインとの相関は、一般に、図６Ａに示すように、第１水平ラインとの距離が近い水平ライン（図５における画像の上側の水平ライン）ほど、第Ｍ水平ラインについての相関として示すように大きくなり、第１水平ラインとの距離が遠い水平ライン（図５における画像の下側の水平ライン）ほど、第Ｎ水平ラインについての相関として示すように小さくなる。従って、第１水平ラインから近いほど、第１水平ラインとの相関が大きくなり、遠いほど相関が小さくなるという相関の偏りがある。
【００４５】
そこで、いま、図５の画像において、第１水平ラインから比較的近い第Ｍ水平ラインと、第１水平ラインから比較的遠い第Ｎ水平ラインとの画素を入れ替える操作を行い（１＜Ｍ＜Ｎ≦Ｈ）、その入れ替え後の画像について、第１水平ラインと、他の水平ラインとの相関を計算値すると、それは、例えば、図６Ｂに示すようになる。
【００４６】
即ち、入れ替え後の画像では、第１水平ラインから近い第Ｍ水平ライン（入れ替え前の第Ｎ水平ライン）との相関が小さくなり、第１水平ラインから遠い第Ｎ水平ライン（入れ替え前の第Ｍ水平ライン）との相関が大きくなる。
【００４７】
従って、図６Ｂでは、第１水平ラインから近いほど相関が大きくなり、遠いほど相関が小さくなるという相関性の偏りが破壊されている。しかしながら、画像については、一般に、第１水平ラインから近いほど相関が大きくなり、遠いほど相関が小さくなるという相関性の偏りを利用することにより、破壊された相関性の偏りを復元することができる。即ち、図６Ｂにおいて、第１水平ラインから近い第Ｍ水平ラインとの相関が小さく、第１水平ラインから遠い第Ｎ水平ラインとの相関が大きいのは、画像が有する本来の相関性の偏りからすれば、明らかに不自然であり（おかしく）、第Ｍ水平ラインと第Ｎ水平ラインとは入れ替えるべきである。そして、図６Ｂにおける第Ｍ水平ラインと第Ｎ水平ラインとを入れ替えることで、図６Ａに示すような本来の相関性の偏りを有する画像、即ち、元の画像を復元することができる。
【００４８】
ここで、図５および図６で説明した場合においては、水平ラインの入れ替え操作が、画像データに対して、被埋め込みデータを埋め込むこととなる。そして、被埋め込みデータの埋め込みに際して、例えば、何水平ライン目を移動するかや、どの水平ラインどうしを入れ替えるかなどといった画像データに対する操作が、被埋め込みデータに対応して決定される。一方、被埋め込みデータが埋め込まれた埋め込み画像データ（埋め込み符号化データ）の水平ラインを、元の画像データの相関を利用して、元の位置に入れ替えることが、元の画像データを復元することになる。そして、その復元に際して、例えば、何水平ライン目を移動したかや、どの水平ラインどうしを入れ替えたかなどの埋め込み画像データに対する操作に基づいて、画像データに埋め込まれていた被埋め込みデータが復元される。
【００４９】
次に、図７乃至図９を参照して、画像データの相関性を利用する埋め込み処理と復元処理の例について説明する。
【００５０】
図７乃至図９の実施の形態では、埋め込み処理において、埋め込み対象データとしての画像データを構成する一部の画素が、処理対象画素として選択され、その選択された画素が、被埋め込みデータに対応してレベル方向に操作されることにより（画素値が操作されることにより）、その画素に対して、被埋め込みデータが埋め込まれる。一方、復元処理では、埋め込み処理によって得られた埋め込み画像データを構成する一部の画素（埋め込み処理で選択されたのと同一位置の画素）が、処理対象画素として選択され、図７に示すように、その処理対象画素に対して、埋め込み処理における場合と逆の操作が施されることで、その画素値が変更される。さらに、図７に示すように、画素値の変更前の処理対象画素と、その周辺画素（図７の実施の形態では、左右に隣接する画素）との相関値Ｒ1が演算されるとともに、画素値の変更された処理対象画素と、その画素の周辺画素との相関値Ｒ2が演算される。そして、その相関値Ｒ1とＲ2との大小関係に基づいて、画素値の変更前または変更後の処理対象画素のうちのいずれか一方が、元の画像データの復元結果とされるとともに、その処理対象画素に埋め込まれていた被埋め込みデータが復元される。
【００５１】
図８は、図３の埋め込み符号化器３が、画像データの相関性を利用して行う埋め込み処理の例を示すフローチャートである。
【００５２】
埋め込み対象データベース１では、そこに記憶されている埋め込み対象データとしての画像データが読み出され、例えば、１フレーム単位で、フレームメモリ２１に供給されて記憶される。
【００５３】
一方、埋め込み部２２は、被埋め込みデータベース２から、被埋め込みデータを、例えば１ビットずつ受信し、ステップＳ１において、その１ビットの被埋め込みデータを埋め込む処理の対象とする画素（処理対象画素）を、フレームメモリ２１に記憶された画像から選択する。
【００５４】
ここで、本実施の形態では、例えば、フレームメモリ２１に記憶された画像データから、五の目格子状に、画素が、順次選択され、処理対象画素とされるようになっている。
【００５５】
その後、埋め込み部２２は、ステップＳ２において、被埋め込みデータベース２から受信した被埋め込みデータが１または０のうちのいずれであるかを判定する。ステップＳ２において、被埋め込みデータが、１または０のうちの、例えば０であると判定された場合、ステップＳ１に戻る。即ち、埋め込み部２２は、被埋め込みデータが０である場合には、処理対象画素に、何らの操作も施さずに（所定の定数としての０を加算し）、ステップＳ１に戻り、次の１ビットの被埋め込みデータが、被埋め込みデータベース２から送信されてくるのを待って、次に処理対象画素とすべき画素を選択し、以下、同様の処理を繰り返す。
【００５６】
また、ステップＳ２において、被埋め込みデータが、１または０のうちの、例えば１であると判定された場合、ステップＳ３に進み、埋め込み部２２は、処理対象画素に対して、所定の操作を施す。即ち、埋め込み部２２は、所定の定数としての、例えば、２の、画像データを構成する画素に割り当てられているビット数−１乗を、処理対象画素の画素値に加算する。
【００５７】
従って、画像データを構成する画素の画素値として、例えば、８ビットが割り当てられている場合には、ステップＳ３では、２7が、処理対象画素の画素値に加算されることになる。
【００５８】
なお、この加算は、画素値が、例えば、ＹＵＶなどで表現されている場合には、輝度成分Ｙ、または色成分Ｕ，Ｖのいずれに対して行っても良い。また、加算は、画素値が、例えば、ＲＧＢで表現されている場合には、Ｒ，Ｇ，Ｂのいずれに対して行っても良い。即ち、ステップＳ３における加算は、画素値が複数の成分で構成される場合には、その複数の成分のうちの１つまたは２以上に対して行っても良いし、全部に対して行っても良い。また、ステップＳ３の加算は、複数の成分それぞれごとに、独立に行うことも可能である。
【００５９】
ステップＳ３において、処理対象画素の画素値に、２7が加算された後は、ステップＳ４に進み、その加算結果がオーバフローしているかどうかが判定される。ステップＳ４において、加算結果がオーバフローしていないと判定された場合、ステップＳ５をスキップして、ステップＳ６に進み、埋め込み部２２は、その加算結果を、処理対象画素の画素値として、フレームメモリ２１に書き込み（上書きし）、ステップＳ１に戻る。
【００６０】
また、ステップＳ４において、加算結果がオーバフローしていると判定された場合、即ち、本実施の形態では、画素値が８ビットであるから、加算結果が、２8以上となった場合、ステップＳ５に進み、埋め込み部２２は、その加算値の補正を行う。即ち、ステップＳ５では、オーバフローした加算値が、例えば、そのオーバフローした分（オーバフローした加算値から２8を減算した値）に補正される。そして、ステップＳ６に進み、埋め込み部２２は、その補正後の加算結果を、処理対象画素の画素値として、フレームメモリ２１に書き込み、次の１ビットの被埋め込みデータが、被埋め込みデータベース２から送信されてくるのを待って、ステップＳ１に戻る。
【００６１】
なお、フレームメモリ２１に記憶された、ある１フレームの画像データについて埋め込み処理が行われた後は、その１フレームの画像データ、即ち、埋め込み画像データは、フレームメモリ２１から読み出されて出力される。そして、埋め込み部２２は、フレームメモリ２１に記憶された、次の１フレームの画像データを対象に、埋め込み処理を続行する。
【００６２】
次に、図９のフローチャートを参照して、図８の埋め込み処理により得られる埋め込み画像データを復元する、復元器６による復元処理について説明する。
【００６３】
フレームメモリ３１では、そこに供給される埋め込み画像データが、例えば、１フレーム単位で順次記憶される。
【００６４】
一方、復元部３２は、ステップＳ１１において、フレームメモリ３１に記憶されたあるフレームの埋め込み画像データから、復元処理の対象とする画素（処理対象画素）を選択する。
【００６５】
ここで、復元部３２では、埋め込み部２２と同様に、フレームメモリ３１に記憶された埋め込み画像データから、五の目格子状に、画素が、順次選択される。即ち、埋め込み処理と復元処理では、同一の画素が、処理対象画素として選択される。
【００６６】
その後、ステップＳ１２に進み、復元部３２は、処理対象画素に対し、図３の埋め込み部２２が行った操作と逆の操作を施す。即ち、埋め込み部２２は、所定の定数としての、例えば、２の、画像を構成する画素に割り当てられているビット数−１乗を、処理対象画素の画素値から減算する。
【００６７】
従って、上述したように、埋め込み画像データを構成する画素の画素値として、例えば、８ビットが割り当てられている場合においては、ステップＳ１２では、２7が、処理対象画素の画素値から減算されることになる。
【００６８】
なお、この減算は、画素値が、例えば、ＹＵＶなどで表現されている場合には、輝度成分Ｙ、または色成分Ｕ，Ｖのいずれに対して行っても良い。また、減算は、画素値が、例えば、ＲＧＢで表現されている場合には、Ｒ，Ｇ，Ｂのいずれに対して行っても良い。但し、ステップＳ１２における減算は、図８のステップＳ３における加算が行われたものと同一のものに対して行う必要がある。即ち、画素値が、例えば、ＹＵＶなどで表現されており、図８のステップＳ３における加算が、ＹＵＶのうちの、例えば、Ｙ成分に対して行われた場合には、ステップＳ１２における減算は、やはり、Ｙ成分に対して行う必要がある。
【００６９】
ステップＳ１２において、処理対象画素の画素値から、２7が減算された後は、ステップＳ１３に進み、その減算結果がアンダフローしているかどうかが判定される。ステップＳ１３において、減算結果がアンダフローしていないと判定された場合、ステップＳ１４をスキップして、ステップＳ１５に進む。
【００７０】
また、ステップＳ１３において、減算結果がアンダフローしていると判定された場合、即ち、加算結果が、０未満となった場合、ステップＳ１４に進み、復元部３２は、その減算値の補正を行う。即ち、ステップＳ１４では、アンダフローした減算値が、例えば、その減算値に２8を加算した値に補正され、ステップＳ１５に進む。
【００７１】
ステップＳ１５では、処理対象画素の画素値（ステップＳ１２で２7を減算していないもの）（以下、適宜、第１の画素値という）Ｐ1と、その画素値から２7を減算した減算値（以下では、ステップＳ１４で補正されたものも含むものとする）（以下、適宜、第２の画素値という）Ｐ2のそれぞれについて、処理対象画素の周辺画素としての、例えば、その左右に隣接する画素との間の相関を表す相関値が演算される。
【００７２】
即ち、ステップＳ１５では、例えば、処理対象画素の第１の画素値Ｐ1と、その左右の画素それぞれの画素値との差分の絶対値が演算され、その結果得られる２つの絶対値の加算値の逆数が、処理対象画素の第１の画素値Ｐ1についての相関値Ｒ1として求められる。さらに、ステップＳ１５では、処理対象画素の第２の画素値Ｐ2についても、その左右の画素それぞれの画素値との差分の絶対値どうしの加算値の逆数が演算され、それが、処理対象画素の第２の画素値Ｐ2の相関値Ｒ2として求められる。
【００７３】
なお、ステップＳ１５において、処理対象画素との間の相関を求めるのに用いる画素は、その左右に隣接する画素に限定されるものではなく、上下に隣接する画素であっても良いし、時間的に隣接する画素であっても良い。また、必ずしも、空間的または時間的に隣接する画素である必要もない。但し、処理対象画素との相関を求めるにあたっては、埋め込み画像データにおいて、被埋め込みデータが埋め込まれていない画素を用いるのが望ましい。これは、処理対象画素について、被埋め込みデータが埋め込まれた画素との相関を求めても、元の画像データについての相関を得ることができず、従って、画像データの相関性を利用することができないため、被埋め込みデータが埋め込まれた画素から、元の画素値および被埋め込みデータを、正確に復元するのが困難となるからである。また、画像データの相関性を利用して、処理対象画素を復元する以上、処理対象画素との相関値を求めるのに用いる画素は、その処理対象画素との空間的または時間的距離が近いものであるのが望ましい。
【００７４】
第１の画素値Ｐ1についての相関値Ｒ1、および第２の画素値Ｐ2についての相関値Ｒ2の算出後は、ステップＳ１６に進み、復元部３２において、その相関値Ｒ1とＲ2とが比較される。
【００７５】
ステップＳ１６において、相関値Ｒ1が、相関値Ｒ2より大きい（または以上である）と判定された場合、ステップＳ１７に進み、復元部３２において、被埋め込みデータの復元結果として、０が出力され、ステップＳ１１に戻る。そして、この場合、フレームメモリ３１の記憶値は書き換えられず、従って、処理対象画素の画素値の復元結果は、その画素値Ｐ1のままとされる。
【００７６】
即ち、第１の画素値Ｐ1についての相関値Ｒ1の方が、第２の画素値Ｐ2についての相関値Ｒ2より大きいということは、処理対象画素の画素値としては、画素値Ｐ2よりも、画素値Ｐ1の方が確からしいこととなるので、処理対象画素の画素値の復元結果は、その確からしい画素値Ｐ1とされる。さらに、画素値Ｐ1は、ステップＳ１２で２7が減算されていないものであるから、図８のステップＳ３で２7が加算されていないと考えられる。そして、図８の埋め込み処理では、被埋め込みデータが０の場合には、２7を加算しないこととしているから、第１の画素値Ｐ1についての相関値Ｒ1の方が大きく、画素値Ｐ1が、処理対象画素の画素値として確からしい場合には、そこに埋め込まれた被埋め込みデータは０ということになる。
【００７７】
一方、ステップＳ１６において、相関値Ｒ2が、相関値Ｒ1より大きい（以上である）と判定された場合、ステップＳ１８に進み、復元部３２において、フレームメモリ３１に記憶された処理対象画素の画素値が、その画素値から２7を減算した減算値、即ち、第２の画素値Ｐ2に書き換えられる。従って、この場合、処理対象画素の画素値の復元結果は、その画素値Ｐ2とされる。そして、ステップＳ１９に進み、復元部３２において、被埋め込みデータの復元結果として、１が出力され、ステップＳ１１に戻る。
【００７８】
即ち、第２の画素値Ｐ2についての相関値Ｒ2の方が、第１の画素値Ｐ1についての相関値Ｒ1より大きいということは、処理対象画素の画素値としては、画素値Ｐ1よりも、画素値Ｐ2の方が確からしいこととなるので、処理対象画素の画素値の復元結果は、その確からしい画素値Ｐ2とされる。さらに、画素値Ｐ2は、ステップＳ１２で、画素値Ｐ1から２7が減算されたものであるから、図８のステップＳ３で、元の画素値に２7が加算されたものであると考えられる。そして、図８の埋め込み処理では、被埋め込みデータが１の場合には、２7を加算することとしているから、第２の画素値Ｐ2についての相関値Ｒ2の方が大きく、画素値Ｐ2が、処理対象画素の画素値として確からしい場合には、そこに埋め込まれた被埋め込みデータは１ということになる。
【００７９】
ここで、上述のようにして求められる相関値Ｒ1とＲ2との差分が小さい場合には、画素値Ｐ1とＰ2のうちのいずれが、処理対象画素の画素値として確からしいかは、一概には言えない。そこで、このような場合には、処理対象画素の左右に隣接する画素だけでなく、他の画素をも用いて、画素値Ｐ1，Ｐ2それぞれについての相関値を求め、その相関値を比較することで、画素値Ｐ1，Ｐ2のうちのいずれが、処理対象画素の画素値として確からしいかを決定することができる。
【００８０】
以上のように、被埋め込みデータが埋め込まれた画像データである埋め込み画像データを、画像の相関性を利用して、元の画像データと被埋め込みデータに復元するようにしたので、その復元のためのオーバヘッドがなくても、埋め込み画像データを、元の画像データと被埋め込みデータに復元することができる。従って、その復元画像（復号画像）には、基本的に、被埋め込みデータを埋め込むことによる画質の劣化は生じない。
【００８１】
即ち、図８の埋め込み処理によれば、画像データの画素値に、被埋め込みデータの値に対応した所定値（図８の実施の形態では、０または２7）を加算し、その加算値がオーバーフローしている場合には、その補正を行うという操作ルールにしたがい、画像データに対して、被埋め込みデータが埋め込まれ、埋め込み画像データが生成される。
【００８２】
一方、図９の復元処理によれば、埋め込み処理における操作ルールにしたがい、埋め込み画像データに対して、埋め込み処理における場合とは逆の操作が行われ、その操作後のデータの相関に基づいて、埋め込み処理において行われた操作が、いわば特定される。そして、その特定された操作にしたがい、埋め込み画像データが、元の画像データと被埋め込みデータが復元される。
【００８３】
従って、図８の埋め込み処理における操作ルールは、画像データの相関性を利用して、被埋め込みデータが埋め込まれた埋め込み画像データを元に戻すことができる操作ルールであるということができるが、埋め込み処理では、このような操作ルールを採用することで、画像データの画質を劣化させることなく（最低限の劣化に抑えて）、かつデータ量を増加せずに、画像データに被埋め込みデータを埋め込むことができる。
【００８４】
即ち、被埋め込みデータが埋め込まれた画素は、画像の相関性、即ち、ここでは、被埋め込みデータが埋め込まれなかった画素との間の相関を利用することにより、オーバヘッドなしで、元の画素と被埋め込みデータに復元（戻す）ことができる。従って、その結果得られる復元画像（復号画像）には、基本的に、被埋め込みデータを埋め込むことによる画質の劣化は生じない。
【００８５】
なお、図７乃至図９の実施の形態では、処理対象画素と、他の画素との間の相関を表す相関値として、それらの画素値の差分の絶対値の逆数を用いるようにしたが、相関値は、これに限定されるものではない。
【００８６】
また、図７乃至図９の実施の形態では、画像データから、五の目格子状に、画素を選択し、その画素に、被埋め込みデータを埋め込むようにしたが、被埋め込みデータを埋め込む画素の選択パターンは、これに限定されるものではない。但し、被埋め込みデータを埋め込んだ画素の復元にあたっては、上述したように、被埋め込みデータが埋め込まれていない画素を用いて相関を求めるのが望ましく、また、画素どうしの相関は、基本的に、それらの間の空間的または時間的距離が離れるほど小さくなっていく。従って、正確な復元を行う観点からは、被埋め込みデータを埋め込む画素は、空間的または時間的に、いわゆる疎らになるように選択するのが望ましい。一方、多くの被埋め込みデータを埋め込む観点、即ち、圧縮率の観点からは、被埋め込みデータを埋め込む画素は、ある程度多くする必要がある。従って、被埋め込みデータを埋め込む画素は、復元の正確さと、圧縮率とをバランスさせて選択するのが望ましい。
【００８７】
さらに、図７乃至図９の実施の形態では、処理対象画素として選択された１画素に、１ビットの被埋め込みデータを埋め込むようにしたが、１画素に、２ビット以上の被埋め込みデータを埋め込むようにすることも可能である。例えば、１画素に、２ビットの被埋め込みデータを埋め込む場合には、その２ビットの被埋め込みデータにしたがって、例えば、０，２6，２7，２6＋２7のうちのいずれかを、画素値に加算するようにすれば良い。
【００８８】
また、図７乃至図９の実施の形態では、画素値に、０または２7のうちのいずれかを加算することで（画素値に、２7を加算しないか、または加算することで）、被埋め込みデータを埋め込むようにしたが、画素値に加算する値は、２7に限定されるものではない。但し、画素値の下位ビットにしか影響を与えないような値を加算する場合には、その加算値と、元の画素値とが、あまり異なったものとならず、従って、図９のステップＳ１５で求められる相関値Ｒ1とＲ2も、あまり異なったものとならなくなる。これは、画素値および被埋め込みデータの復元結果の精度を劣化させることとなるから、被埋め込みデータにしたがって、画素値に加算する値は、元の画素値の上位ビットに影響を与えるような値とするのが望ましい。
【００８９】
さらに、図７乃至図９の実施の形態では、画素値に、所定値を加算することで、被埋め込みデータの埋め込みを行うようにしたが、被埋め込みデータの埋め込みは、加算以外の操作（例えば、ビット反転や、前述した水平ラインのローテーションなど）を、画素値に施すことによって行うことも可能である。但し、上述したように、画素値および被埋め込みデータの復元結果の精度の劣化を防止する観点から、画素値に施す操作は、元の画像についての相関と、操作を施した画像についての相関とが大きく異なるようなものであることが望ましい。
【００９０】
また、図７乃至図９の実施の形態では、処理対象画素として選択された１画素に、１ビットの被埋め込みデータを埋め込むようにしたが、複数画素に、１ビットの被埋め込みデータを埋め込むようにすることも可能である。即ち、近接する２画素以上に対して、１ビットの被埋め込みデータに対応する同一の操作を行うようにすることが可能である。
【００９１】
次に、情報の連続性を利用した埋め込み処理と復元処理について説明する。
【００９２】
例えば、画像データのある１水平ラインについて注目した場合に、その注目ラインにおいて、図１０Ａに示すような、画素値の変化パターンが連続している波形ＷＡＶＥ＃１が観察されたとすると、その注目ラインと離れた他の水平ラインでは、注目ラインとは異なる画素値の変化パターンが観察される。従って、注目ラインと、その注目ラインと離れた他の水平ラインとにおいては、画素値の変化パターンが異なり、連続性においても偏りがある。即ち、画像のある部分の画素値の変化パターンに注目すると、その注目部分に隣接する部分には、同様の画素値の変化パターンが存在し、注目部分から離れるにつれて、異なる画素値の変化パターンが存在するという連続性の偏りがある。
【００９３】
そこで、いま、図１０Ａに示した、画像データのある水平ラインにおける、画素値の変化パターンが連続している波形ＷＡＶＥ＃１の一部を、例えば、図１０Ｂに示すように、離れた水平ラインにおける波形ＷＡＶＥ＃２と入れ替える。
【００９４】
この場合、画像データの連続性の偏りが破壊される。しかしながら、近接する部分の画素値の変化パターンは連続しており、離れるほど、画素値の変化パターンが異なるという連続性の偏りを利用することにより、破壊された連続性の偏りを復元することができる。即ち、図１０Ｂにおいて、波形の一部ＷＡＶＥ＃２の画素値の変化パターンが、他の部分の画素値の変化パターンに比較して大きく異なっているのは、波形が有する本来の連続性の偏りからすれば、明らかに不自然であり、他の部分の画素値の変化パターンと異なっている部分ＷＡＶＥ＃２は、他の部分の画素値の変化パターンと同様の波形に入れ替えるべきである。そして、そのような入れ替えを行うことで、連続性の偏りが復元され、これにより、図１０Ｂに示した波形から、図１０Ａに示した元の波形を復元することができる。
【００９５】
ここで、図１０で説明した場合においては、波形の一部を、その周辺の画素値の変化パターンとは大きく異なる画素値の変化パターンの波形に入れ替えることが、画像データに対して、被埋め込みデータを埋め込むこととなる。また、その埋め込みに際して、例えば、波形のどの部分の画素値の変化パターンを入れ替えるのかや、画素値の変化パターンをどの程度大きく変化させるのかなどが、被埋め込みデータにしたがって決定される。一方、被埋め込みデータが埋め込まれた埋め込み画像データ（埋め込み符号化データ）、即ち、大きく異なる画素値の変化パターンを一部に有する波形を、周辺の画素値の変化パターンは連続しており、離れるほど、画素値の変化パターンが異なるという連続性の偏りを利用して、元の波形に戻すことが、その元の波形を復元することとなる。そして、その復元に際して、例えば、波形のどの部分の画素値の変化パターンが大きく変化していたのかや、画素値の変化パターンがどの程度大きく変化していたのかなど、即ち、埋め込み画像データを、どのような操作によって、元の画像データ（波形）に戻したかによって、画像データに埋め込まれていた被埋め込みデータが復元される。
【００９６】
次に、図１１は、埋め込み符号化器３において、画像の連続性を利用した埋め込みが行われる場合の埋め込み処理の例を示すフローチャートである。
【００９７】
まず最初に、ステップＳ２１において、埋め込み部２２は、埋め込み対象データベース１に記憶された埋め込み対象データとしての１フレーム分の画像データを、フレームメモリ２１にさせる。さらに、ステップＳ２１では、埋め込み部２２は、フレームメモリ２１に記憶された画像データの連続領域を検出し、その連続領域の位置を示す連続領域データを、図示せぬワーク用のメモリ（以下、適宜、ワークメモリという）に記憶させる。
【００９８】
即ち、例えば、いま、図１２Ａに示すような、横×縦が２２４（＝ ７×３２）×１６００画素からなる画像データを対象に、その連続領域を検出する場合には、埋め込み部２２は、画像データを、例えば、３２×１画素毎の画像ブロックに分割し、各画像ブロック毎にＤＣＴ(Discrete Cosine Transform)処理を施して、画像ブロック毎のＤＣＴ係数を算出する。
【００９９】
さらに、埋め込み部２２は、画像ブロックをラスタスキャン順にスキャンして、順次、注目ブロックとし、例えば、注目ブロックに対応するＤＣＴ係数と左隣の隣接画像ブロックの対応するＤＣＴ係数との差分の絶対値和を順に算出して、注目ブロックの連続性評価値としてワークメモリに記憶させる。また、埋め込み部２２は、算出された連続性評価値（差分値）が所定閾値以下である画像ブロックを連続領域と認識し、その画像ブロックの位置をワークメモリに記憶させる。
【０１００】
ここで、本来、連続領域とされるべき画像ブロックの一部がノイズ等の影響により連続領域ではないと判断される可能性もあるので、そのような判断が行われるのを防止するために、埋め込み部２２は、連続領域の検出の後、補正処理を行い、連続領域に隣接する、非連続領域とされた画像ブロックを、連続領域の画像ブロックに変換する。即ち、補正処理によれば、例えば、２つの連続領域に挟まれた短い区間の非連続領域の画像ブロックや、連続領域に隣接する１つ（または少数）の非連続領域の画像ブロックが、連続領域の画像ブロックに変換され（連続領域の画像ブロックとみなされ）、これにより、２つの連続領域と、その間に挟まれていた領域（非連続領域の画像ブロック）が、全体として、１つの連続領域に補正され、あるいは、１つの連続領域と、それに隣接する非連続領域の画像ブロックが、全体として、１つの連続領域に補正される。
【０１０１】
その後、ステップＳ２２に進み、埋め込み部２２は、被埋め込みデータデータベース２から、被埋め込みデータを、例えば６ビット（３ビット＋３ビット）ずつ受信し、ステップＳ２３に進む。
【０１０２】
ステップＳ２３では、埋め込み部２２は、上述の６ビットの被埋め込みデータを埋め込む画素群としての処理対象画像を選択、抽出する。即ち、ステップＳ２３では、例えば、フレームメモリ２１に記憶された１フレームの画像データが、仮想的に、上半分と下半分の領域（以下、適宜、それぞれを、上領域と下領域という）に分割され、その上領域と下領域のそれぞれの、例えば上から同一の位置にある水平ラインの連続領域が選択、抽出される。
【０１０３】
具体的には、例えば、フレームメモリ２１に記憶された１フレームの画像データが、例えば、図１２Ａに示すように、１６００ラインの水平ラインで構成される場合には、第１水平ラインから第８００水平ラインまでの領域が、上領域とされ、第８０１水平ラインから第１６００水平ラインまでの領域が、下領域とされる。そして、フレームメモリ２１に記憶された画像データについて、最初に、ステップ２３の処理が行われる場合には、図１２Ａに斜線を付して示すように、上領域の第１行である第１水平ラインと、下領域の第１行である第８０１水平ラインの連続領域が選択、抽出される。
【０１０４】
なお、埋め込み部２２は、ステップＳ２１においてワークメモリに記憶された連続領域データを参照して、第１水平ラインと、第８０１水平ラインの連続領域のみを選択、抽出する。ここで、図１２の実施の形態においては、第１水平ラインと、第８０１水平ラインの全領域が連続領域であるとして、選択、抽出されている。
【０１０５】
そして、ステップＳ２４に進み、埋め込み部２２は、処理対象画像である、例えば、第１水平ラインの画像と、第８０１の水平ラインの画像を入れ替えることにより、画像データに、被埋め込みデータを埋め込む。
【０１０６】
即ち、図１２Ｂは、被埋め込みデータが埋め込まれる前の第１水平ラインの画像データの画素値を示している。また、図１２Ｃは、被埋め込みデータが埋め込まれる前の第８０１水平ラインの画像データの画素値を示している。図１２Ｂおよび図１２Ｃに示すように、第１水平ラインの領域と第８０１水平ラインの領域では、画素値の変化パターン（周波数特性）が異なっている。
【０１０７】
例えば、いま、上位３ビットが２で、下位３ビットが６の６ビットの被埋め込みデータを、画像データに埋め込むこととすると、埋め込み部２２は、上位３ビットの２を埋め込むため、図１２Ｂに示した第１水平ラインの左から２ブロック目の画像ブロックを選択するとともに、下位３ビットの６を埋め込むため、図１２Ｃに示した第８０１水平ラインの左からの６ブロック目の画像ブロックを選択する。さらに、埋め込み部２２は、選択された第１水平ラインの２ブロック目の画像ブロックと、第８０１水平ラインの６ブロック目の画像ブロックを入れ替える操作を行う。これにより、第１水平ラインの画素値の変化パターンが、図１２Ｂから図１２Ｄに示すように変更されるとともに、第８０１水平ラインの画素値の変化パターンが、図１２Ｃから図１２Ｅに示すように変更され、第１水平ラインと第８０１水平ラインに、上位３ビットが２を表し、かつ下位３ビットが６を表す６ビットの被埋め込みデータが埋め込まれる。
【０１０８】
その後、ステップＳ２５において、埋め込み部２２は、被埋め込みデータが埋め込まれた第１水平ラインと第８０１水平ラインの画像データを、フレームメモリ２１に書き込み（上書きし）、ステップＳ２６に進む。
【０１０９】
ステップＳ２６では、埋め込み部２２は、フレームメモリ２１に記憶された１フレームの画像データのすべての水平ラインに、被埋め込みデータを埋め込んだかどうかを判定する。ステップＳ２６において、まだ、すべての水平ラインに、被埋め込みデータを埋め込んでいないと判定された場合、ステップＳ２２に戻り、埋め込み部２２は、新たな被埋め込みデータを受信し、ステップＳ２３に進む。ステップＳ２３では、埋め込み部２２は、上領域と下領域から、次の水平ラインを選択し、即ち、いまの場合は、第２水平ラインと第８０２水平ラインを選択し、以下、同様の処理を繰り返す。
【０１１０】
一方、ステップＳ２６において、フレームメモリ２１に記憶された１フレームの画像データのすべての水平ラインに、被埋め込みデータを埋め込んだと判定された場合、即ち、ステップＳ２３で、第１水平ラインと第８０１水平ラインのセットから、第８００ラインと第１６００ラインのセットまでが、処理対象画像として選択された場合、埋め込み部２２は、フレームメモリ２１に記憶された画像データ、即ち、被埋め込みデータが埋め込まれた画像データ（埋め込み画像データ）を読み出して出力させ、埋め込み処理を終了する。
【０１１１】
なお、図１１の埋め込み処理は、フレームメモリ２１に記憶された画像データを対象に、フレーム単位で繰り返し行われる。
【０１１２】
次に、図１３は、画像の連続性を利用して、埋め込み対象データとしての画像データに対して被埋め込みデータが埋め込まれた埋め込み符号化データを復元する復元処理の例を示すフローチャートである。
【０１１３】
まず最初に、ステップＳ３１において、復元部３２は、１フレーム単位の埋め込み符号化データ（埋め込み画像データ）を、フレームメモリ３１に記憶させる。さらに、ステップＳ３１では、復元部３２は、図１１のステップＳ２１における場合と同様にして、埋め込み符号化データの中から連続領域を抽出し、その画像ブロックの位置を、連続領域データとして、図示せぬワークメモリに記憶させる。
【０１１４】
ここで、本実施の形態では、図１２で説明したことから、１水平ラインに３ビットの被埋め込みデータが埋め込まれるが、この埋め込みは、１水平ラインのうち１つの画像ブロックを、他の水平ラインの画像ブロックに変更する操作によって行われる。従って、１水平ラインを構成する画像ブロックのうちの、少なくとも１つは、被埋め込みデータの埋め込みのための変更操作によって非連続領域になっている。しかしながら、連続領域の抽出の際には、図１１のステップ２１で説明したように、補正処理が行われるため、被埋め込みデータの埋め込みのための変更操作によって非連続領域とされた画像ブロックは、連続領域に変換される（連続領域とみなされる）。
【０１１５】
その後、ステップＳ３２に進み、復元部３２は、ステップＳ３１でワークメモリに記憶された連続領域データを参照して、図１１のステップＳ２３における場合と同様に、フレームメモリ３１に記憶された１フレームの埋め込み画像データを、上領域と下領域に、仮想的に分割し、その上領域と下領域それぞれから、同一位置の水平ラインの連続領域を、順次、選択、抽出する。
【０１１６】
従って、フレームメモリ３１に記憶された埋め込み画像データについて、ステップＳ３２の処理が最初に行われる場合には、上領域の第１行である第１水平ラインと、下領域の第１行である第８０１水平ラインが選択される。ここで、図１１のステップＳ２３で説明したように、埋め込み対象データとしての画像データの第１水平ラインと、第８０１水平ラインの全領域（全画像ブロック）が、連続領域であるとすると、ステップＳ３２では、第１水平ラインと、第８０１水平ラインの全領域が抽出される。
【０１１７】
そして、ステップＳ３３に進み、復元部３２は、ステップＳ３２で上領域と下領域それぞれから抽出された第１水平ラインの連続領域と、第８０１水平ラインの連続領域を構成する、上述の３２×１画素単位の画像ブロックを、例えばＤＣＴ処理し、これにより、画像データの連続性を評価する評価値としてのＤＣＴ係数を算出して、ステップＳ３４に進む。
【０１１８】
ステップＳ３４では、復元部３２は、上領域から抽出された第１水平ラインの連続領域を構成する画像ブロックを、例えば、左側から、順次、注目ブロックとし、その注目ブロックについて、例えば、注目ブロックのＤＣＴ係数から、その左隣の画像ブロックのＤＣＴ係数を減算し、そのＤＣＴ係数の差分値の絶対値和を算出する。さらに、復元部３２は、下領域から抽出された第８０１水平ラインの連続領域についても同様に、その連続領域を構成する画像ブロックを、順次、注目ブロックとし、その注目ブロックについて、ＤＣＴ係数の差分値の絶対値和を算出する。そして、復元部３２は、算出したＤＣＴ係数の差分値の絶対値和を、ワークメモリに記憶させる。
【０１１９】
なお、注目ブロックの左隣の画像ブロックが存在しない場合、即ち、ここでは、連続領域を構成する左端の画像ブロックが注目ブロックとされた場合、その注目ブロックについてのＤＣＴ係数の差分値の絶対値和は、例えば、０とされる。
【０１２０】
その後、ステップＳ３５に進み、復元部３２は、ワークメモリに記憶された２つの水平ラインそれぞれについて、その連続領域を構成する画像ブロックのＤＣＴ係数の差分値の絶対値和（差分絶対値和）が１番目に大きい画像ブロックと、２番目に大きい画像ブロックの２つの画像ブロックを検出し、その画像ブロックの位置をワークメモリに記憶させる。即ち、例えば、いま、ワークメモリに、第１水平ラインの連続領域を構成する画像ブロックについてのＤＣＴ係数の差分絶対値和と、第８０１ラインの連続領域を構成する画像ブロックについてのＤＣＴ係数の差分絶対値和が記憶されている場合には、第１水平ラインにおいて、ＤＣＴ係数の差分絶対値和が１番目に大きい画像ブロック（以下、適宜、第１位の画像ブロックという）と、２番目に大きい画像ブロック（以下、適宜、第２位の画像ブロックという）が検出され、その第１位と第２位の画像ブロックの位置が、ワークメモリに記憶されるとともに、第８０１水平ラインにおいても、第１位の画像ブロックと、第２位の画像ブロックが検出され、その第１位と第２位の画像ブロックの位置が、ワークメモリに記憶される。
【０１２１】
そして、ステップＳ３６に進み、復元部３２は、ワークメモリに記憶された、２つの水平ラインそれぞれについての第１位および第２位の画像ブロックの位置に基づいて、６ビットの被埋め込みデータを復元して出力する。
【０１２２】
即ち、復元部３２は、第１位と第２の画像ブロックが隣接し、かつ第１位と第２位の画像ブロックについてのＤＣＴ係数の差分絶対値和どうしが同程度の値（差分絶対値和どうしの差が所定の閾値以下）の場合、その隣接する第１位と第２の画像ブロックのうちの、左側に位置する画像ブロック位置を、図１１の埋め込み処理によって被埋め込みデータを埋め込むのに入れ替えられた画像ブロックの位置（以下、適宜、埋め込み位置という）として、ワークメモリに記憶させるとともに、その埋め込み位置に対応する値を、被埋め込みデータの復元結果として出力する。
【０１２３】
具体的には、例えば、図１１の埋め込み処理において、第１水平ラインの連続領域につき、図１２Ｂおよび図１２Ｄに示したように、その左から３番目の画像ブロックと、第８０１水平ラインの画像ブロックとの入れ替え操作が行われた場合、その左から２番目と３番目の画像ブロックについては、そのＤＣＴ係数の差分絶対値和が大きくなる。従って、第１水平ラインについては、図１３のステップＳ３５において、その左から３番目と４番目の２つの隣接する画像ブロックが、第１位と第２位の画像ブロック（または第２位と第１位の画像ブロック）として検出され、その左側に位置する画像ブロック、即ち、左から３番目の画像ブロックの位置（埋め込み位置）に基づいて、上述の６ビットの被埋め込みデータのうちの上位３ビットが、２（＝３−１）に復元される。
【０１２４】
また、例えば、図１１の埋め込み処理において、第８０１水平ラインの連続領域につき、図１２Ｃおよび図１２Ｅに示したように、その左から７番目の画像ブロックと、第１水平ラインの画像ブロックとの入れ替え操作が行われた場合、その左から７番目と８番目の画像ブロックについては、そのＤＣＴ係数の差分絶対値和が大きくなる。従って、第８０１水平ラインについては、図１３のステップＳ３５において、その左から７番目と８番目の２つの隣接する画像ブロックが、第１位と第２位の画像ブロック（または第２位と第１位の画像ブロック）として検出され、その左側に位置する画像ブロック、即ち、左から７番目のブロックの位置（埋め込み位置）に基づいて、上述の６ビットの被埋め込みデータのうちの下位３ビットが、６（＝７−１）に復元される。
【０１２５】
ここで、図１１の埋め込み処理において、水平ラインの連続領域の左端の画像ブロックまたは右端の画像ブロックが、他の水平ラインの画像ブロックと入れ替えられることにより、被埋め込みデータが埋め込まれている場合には、ＤＣＴ係数の差分絶対値和は、その入れ替えが行われた画像ブロックについてのみ、ある程度大きくなり、他のブロックについては、それほど大きくならない。このため、復元部３２は、第１位と第２位の画像ブロックの位置が隣接していない場合、または第１位と第２位の画像ブロックについてのＤＣＴ係数の差分絶対値和どうしが同程度の値でない場合（差分絶対値和どうしの差が所定の閾値以上の場合）には、第１位の画像ブロックの位置に基づき、被埋め込みデータを復元する。即ち、この場合、第１位の画像ブロックが、左端または右端の画像ブロックであるとき、被埋め込みデータとして、０または７が、それぞれ復元される。
【０１２６】
以上のようにして、埋め込み位置に基づいて、被埋め込みデータが復元されると、ステップＳ３７に進み、復元部３２は、ステップＳ３５においてワークメモリに記憶された、６ビットの被埋め込みデータを復元するのに用いられた２つの埋め込み位置にしたがい、フレームメモリ３１に記憶された埋め込み画像データの、ステップＳ３２で選択された２つの水平ラインにおける画像ブロックの位置を入れ替える。
【０１２７】
即ち、例えば、図１１の埋め込み処理において、図１２で説明したように、上領域の第１行である第１水平ラインの左から３番目の画像ブロックと、下領域の第１行である第８０１ラインの左から７番目の画像ブロックとが入れ替えられた場合には、図１３のステップＳ３５において、第１水平ラインについては、左から３番目を表す埋め込み位置が記憶され、第８０１水平ラインについては、左から７番目を表す埋め込み位置が記憶される。従って、この場合、ステップ３７では、第１水平ラインの左から３番目の画像ブロックと、第８０１水平ラインの左から７番目の画像ブロックとが入れ替えられ、これにより、第１水平ラインおよび第８０１水平ラインが復元される。
【０１２８】
その後、復元部３２は、復元した２つの水平ラインを、フレームメモリ３１に上書きする形で書き込み、ステップＳ３８に進む。ステップＳ３８では、復元部３２は、フレームメモリ３１に記憶された１フレームの埋め込み画像データについて、埋め込み対象データとしての画像データと、そこに埋め込まれている被埋め込みデータの復元が終了したか否かを判定する。ステップＳ３８において、フレームメモリ３１に記憶された１フレームの埋め込み画像データについての復元が終了していないと判定された場合、ステップＳ３２に戻り、フレームメモリ３１に記憶された埋め込み画像データにおける上領域と下領域それぞれから、次の行の水平ラインが選択され、以下、同様の処理が繰り返される。
【０１２９】
また、ステップＳ３８において、フレームメモリ３１に記憶された１フレームの埋め込み画像データについての復元が終了したと判定された場合、ステップＳ３９に進み、復元部３２は、フレームメモリ３１に記憶された画像データ、即ち、復元された埋め込み対象データとしての画像データを出力させ、処理を終了する。
【０１３０】
なお、図１３の実施の形態によれば、埋め込み対象データとしての画像データは、２つの水平ラインごとに、即ち、その上領域と下領域それぞれの同一行の水平ラインごとに復元される。従って、復元された画像データは、上述のように、フレームメモリ３１に記憶された１フレームの画像データすべてが復元された後に出力することもできるが、復元単位である２つの水平ラインが復元されるごとに出力することも可能である。
【０１３１】
以上のように、被埋め込みデータが埋め込まれた画像データである埋め込み画像データを、画像の連続性を利用して、元の画像データと被埋め込みデータに復元するようにしたので、その復元のためのオーバヘッドがなくても、埋め込み画像データを、元の画像データと被埋め込みデータに復元することができる。従って、その復元画像（復号画像）には、基本的に、被埋め込みデータを埋め込むことによる画質の劣化は生じない。
【０１３２】
即ち、図１１の埋め込み処理によれば、１の水平ラインにおける、６ビットの被埋め込みデータの上位３ビットに対応する位置の画像ブロックと、他の１つの水平ラインにおける、６ビットの被埋め込みデータの下位３ビットに対応する位置の画像ブロックとを入れ替えるという操作ルールにしたがい、画像データに対して、被埋め込みデータが埋め込まれ、埋め込み画像データが生成される。
【０１３３】
一方、図１３の復元処理によれば、埋め込み画像データのＤＣＴ係数を、連続性の評価値として、その連続性を利用し、埋め込み処理における操作ルールにしたがって、埋め込み画像データに対して、埋め込み処理における場合とは逆の操作が行われる。そして、その操作によって、埋め込み画像データが、元の画像データと被埋め込みデータが復元される。
【０１３４】
従って、図１１の埋め込み処理における操作ルールは、画像データの連続性を利用して、被埋め込みデータが埋め込まれた埋め込み画像データを元に戻すことができる操作ルールであるということができるが、埋め込み処理では、このような操作ルールを採用することで、画像データの画質を劣化させることなく（最低限の劣化に抑えて）、かつデータ量を増加せずに、画像データに被埋め込みデータを埋め込むことができる。
【０１３５】
なお、上述の場合には、埋め込み画像データのＤＣＴ係数を、連続性の評価値として用いるようにしたが、連続性の評価値としては、ＤＣＴ係数以外のものを使用することが可能である。
【０１３６】
次に、情報の相似性を利用した埋め込み処理と復元処理について説明する。
【０１３７】
例えば、風景を撮影した画像等の一部は、画像のフラクタル性（自己相似性）を利用して生成することができることが知られている。そして、例えば、図１４Ａに示すような、海Ｒ１と森Ｒ２が表示されている画像においては、海Ｒ１全体の画素値の変化パターン（例えば、エッジ形状）と、その海Ｒ１の一部の画素値の変化パターンとの相似性は高いが、それらの変化パターンと、海Ｒ１から離れた森Ｒ２の画素値の変化パターンとの相似性は低いという相似性の偏りがある。
【０１３８】
そこで、いま、図１４Ａに示した海Ｒ１の一部Ｒ３と、森Ｒ２の一部Ｒ４とを入れ替える。
【０１３９】
この場合、画像の相似性の偏りが破壊され、図１４Ｂに示すような画像が得られる。しかしながら、近接する部分の画素値の変化パターンは相似性が高く、離れるほど、画素値の変化パターンの相似性が低くなるという相似性の偏りを利用することにより、破壊された相似性の偏りを復元することができる。即ち、図１４Ｂにおいて、海Ｒ１の画像の一部が、海Ｒ１と相似性の低い森Ｒ２の画像の一部Ｒ４になっていること、および森Ｒ２の画像の一部が、森Ｒ２と相似性の低い海Ｒ１の画像の一部Ｒ３となっていることは、画像が有する本来の相似性の偏りからすれば、明らかに不自然である。具体的には、図１４Ｂにおいて、海Ｒ１の画像の中の、森Ｒ２の画像の一部Ｒ４についての相似性は、海Ｒ１の他の部分についての相似性に比較して極端に低くなっており、また、森Ｒ２の画像の中の、海Ｒ１の画像の一部Ｒ３についての相似性も、森Ｒ２の他の部分についての相似性に比較して極端に低くなっている。一方、海Ｒ１の中にある森Ｒ２の一部Ｒ４と、森Ｒ２との相似性、および森Ｒ２の中にある海Ｒ１の一部Ｒ３と、海Ｒ１の相似性は、いずれも高い。
【０１４０】
従って、画像が本来有する相似性の偏りからすれば、海Ｒ１の画像の一部となっている、森Ｒ２の画像の一部Ｒ４と、森Ｒ２の画像の一部となっている、海Ｒ１の画像の一部Ｒ３とは入れ替えるべきである。そして、そのような入れ替えを行うことで、画像の相似性の偏りが復元され、これにより、図１４Ｂに示した画像から、図１４Ａに示した元の画像を復元することができる。
【０１４１】
ここで、図１４で説明した場合においては、埋め込み対象データとしての海Ｒ１の画像の一部Ｒ３と、森Ｒ２の画像の一部Ｒ４とを入れ替えることが、被埋め込みデータを、埋め込み対象データに埋め込むことになる。また、その埋め込みに際して、例えば、海Ｒ１の画像のどの部分（画面上の位置）と、森Ｒ２の画像のどの部分とを入れ替えるのかなどが、被埋め込みデータにしたがって決定されることになる。一方、被埋め込みデータが埋め込まれた埋め込み画像データ（埋め込み符号化データ）、即ち、海Ｒ１の一部が、森Ｒ２の一部Ｒ４となっているとともに、森Ｒ２の一部が、海Ｒ１の一部Ｒ３となっている画像を、周辺の画素値の変化パターンの相似性は高く、離れるほど、画素値の変化パターンの相似性が低くなっていくという相似性の偏りを利用して、元の画像に戻すことが、その元の画像を復元することとなる。そして、その復元に際して、例えば、海の画像のどの部分と、森の画像のどの部分とが入れ替えられていたのかなど、即ち、埋め込み画像データを、どのような操作によって元の画像データに戻したかによって、画像データに埋め込まれていた被埋め込みデータを復元される。
【０１４２】
次に、図１５を参照して、相似性について、さらに説明する。
【０１４３】
いま、例えば、図１５Ａに示すようなフラクタル画像を埋め込み対象データとして、そこに被埋め込みデータを埋め込むとした場合、被埋め込みデータに対応して、フラクタル画像の一部が、そのフラクタル画像とは相似でない画像に入れ替えられることで、フラクタル画像への被埋め込みデータの埋め込みが行われる。即ち、図１５Ａでは、樹木の葉の形状をしたフラクタル画像が埋め込み対象データとされているが、被埋め込みデータの埋め込みは、そのフラクタル画像の一部が、例えば、図１５Ｂに示すように、三角形に入れ替えられることで行われる。即ち、図１５では、図１５ＢにおいてＤ１およびＤ２で示す部分が三角形になっており、このように、三角形に入れ替えられるフラクタル画像の位置や、フラクタル画像と入れ替える三角形の大きさ、数などが、被埋め込みデータにしたがって決定される。
【０１４４】
一方、上述のようにして、被埋め込みデータが埋め込み対象データとしてのフラクタル画像に埋め込まれた埋め込み符号化データは、例えば、次のようにして、フラクタル画像と被埋め込みデータとに復元される。即ち、例えば、図１５Ｂにおいて、点線の四角形で囲んである部分については、三角形との入れ替えを行わないこととしておき、その点線の四角形で囲んである部分を、教師画像として、その教師画像と相似でない部分（ここでは、三角形）が検索される。さらに、教師画像と相似でない部分である三角形が、教師画像に含まれる、フラクタル画像の基準図形から生成される画像（フラクタル画像）に入れ替えられ、これにより、元のフラクタル画像（図１５Ａ）が復元される。そして、検索された三角形の位置や、大きさ、数などに基づいて、埋め込まれた被埋め込みデータが復元される。
【０１４５】
なお、上述の場合においては、教師画像に含まれる、フラクタル画像の基準図形を検出する必要があるが、これは、例えば、次のようにして行われる。即ち、図１５Ｂの画像のうちの、教師画像と、それ以外の部分との相似性、および教師画像の自己相似性に基づいて、図１５Ｂの画像を対象に、フラクタル画像の基準図形が検索され、教師画像以外の部分を、最も効率良く表すことができる図形が、基準図形として検出される。
【０１４６】
また、図１５の実施の形態では、元のフラクタル画像の生成規則が認識されており、その生成規則に基づいて、三角形と入れ替える画像が、基準図形を用いて生成されるものとする。即ち、埋め込み対象データとしてのフラクタル画像と被埋め込みデータの復元時においては、三角形と入れ替える画像を生成するための、基準図形の大きさや、位置、回転量などが、生成規則に基づいて特定され、その特定された基準図形の大きさや、位置、回転量などにしたがって、基準図形が操作され、三角形と入れ替える画像（フラクタル画像）が生成されるものとする。
【０１４７】
次に、図１６は、埋め込み符号化器３において、画像の相似性を利用した埋め込みが行われる場合の処理の例を示すフローチャートである。
【０１４８】
ステップＳ５１において、埋め込み部２２は、埋め込み対象データベース１から１フレーム分の画像データを、フレームメモリ２１に転送して記憶させ、さらに、画像データの相似領域を検出し、その相似領域の位置を示す相似領域データを、ワークメモリに記憶させる。
【０１４９】
即ち、例えば、図１７Ａに示すような、５６×１６００画素からなるフラクタル画像を、埋め込み対象データとして、被埋め込みデータの埋め込みを行う場合には、埋め込み部２２は、まず、その５６×１６００画素からなるフラクタル画像を、例えば、８×８画素毎の画像ブロックに分割し、その画像ブロックを、順次、注目ブロックとする。さらに、埋め込み部２２は、注目ブロックを構成する画素を、例えば、ラスタスキャン順にスキャンし、注目ブロックと、その左右に隣接する画像ブロックである２つの周辺画像ブロックそれぞれとの相似性を算出する。
【０１５０】
具体的には、埋め込み部２２は、注目ブロックの大きさ、位置、回転量を所定量だけ変更しながら、その注目ブロックと、左隣または右隣の画像ブロック（周辺画像ブロック）それぞれとのマッチングを行い、これにより、例えば、注目ブロックを構成する各画素と、周辺画像ブロックを構成する対応する画素との差分絶対値和の逆数を、マッチング度として求める。さらに、埋め込み部２２は、注目ブロックと、２つの周辺画像ブロックそれぞれとの２つのマッチング度を平均し、その平均値を、注目ブロックの周辺との相似性を表す評価値（相似性評価値）として、ワークメモリに記憶させる。ここで、左端または右端の画像ブロックが、注目ブロックのときは、その左側または右側には、周辺画像ブロックが存在しないため、例えば、右側または左側の周辺画像ブロックとの間で求められた１つのマッチング度を、そのまま注目ブロックの相似性評価値とすることとする。埋め込み部２２は、算出された相似性評価値（マッチング度）が所定に閾値以上となった画像ブロックを相似領域として認識し、その画像ブロックの位置を、ワークメモリに記憶させる。
【０１５１】
ここで、本来、相似領域とされるべき画像ブロックの一部がノイズ等の影響により相似領域ではないと判断される可能性もあるので、そのような判断が行われるのを防止するために、埋め込み部２２は、相似領域の検出の後、補正処理を行い、相似領域に隣接する、非相似領域とされた画像ブロックを、相似領域の画像ブロックに変換する。即ち、補正処理によれば、例えば、２つの相似領域に挟まれた短い区間の非相似領域の画像ブロックや、相似領域に隣接する１つ（または少数）の非相似領域の画像ブロックが、相似領域の画像ブロックに変換され（相似領域の画像ブロックとみなされ）、これにより、２つの相似領域と、その間に挟まれていた領域（非相似領域の画像ブロック）が、全体として、１つの相似領域に補正され、あるいは、１つの相似領域と、それに隣接する非相似領域の画像ブロックが、全体として、１つの相似領域に補正される。
【０１５２】
次に、ステップＳ５２において、埋め込み部２２は、被埋め込みデータベース２から、被埋め込みデータを、例えば、６ビット（３ビット＋３ビット）ずつ受信する。
【０１５３】
そして、ステップＳ５３において、埋め込み部２２は、上述の６ビットの被埋め込みデータを埋め込む画像ブロック群としての処理対象画像を選択、抽出する。即ち、ステップＳ５３では、例えば、フレームメモリ２１に記憶された１フレームの画像データが、仮想的に、上半分と下半分の領域（上領域と下領域）に分割され、その上領域と下領域のそれぞれの、例えば上から同一の行にある相似領域が選択、抽出される。
【０１５４】
具体的には、例えば、フレームメモリ２１に記憶された１フレームの画像データが、例えば、図１７Ａに示すように、１６００ラインの水平ラインで構成され、ステップＳ５１で８×８画素の画像ブロックに分割された場合には、第１行から第１００行までの画像ブロックの領域が、上領域とされ、第１０１行から第２００行までの画像ブロックの領域が、下領域とされる。そして、フレームメモリ２１に記憶された画像データについて、最初に、ステップ５３の処理が行われる場合には、上領域の第１行の画像ブロックと、下領域の第１行の画像ブロックの相似領域が選択、抽出される。
【０１５５】
なお、埋め込み部２２は、ステップＳ５１においてワークメモリに記憶された連続領域データを参照して、第１行の画像ブロックと、第１０１行の画像ブロックの相似領域のみを選択、抽出する。ここで、図１７の実施の形態においては、第１行と、第１０１行の全画像ブロックが相似領域であるとして、選択、抽出されている。
【０１５６】
その後、ステップＳ５４に進み、埋め込み部２２は、例えば、処理対象画像である、第１行の画像ブロックのうちの１つと、第１０１行の画像ブロックのうちの１つを入れ替えることにより、フレームメモリ２１に記憶された画像データに被埋め込みデータを埋め込む。
【０１５７】
即ち、図１７Ａは、被埋め込みデータが埋め込まれる前の埋め込み対象データとしての画像データを示しており、図１７Ｂは、被埋め込みデータが埋め込まれた後の埋め込み符号化データを示している。
【０１５８】
図１７Ａの埋め込み対象データにおいては、第１行の画像ブロックの領域と第１０１行の画像ブロックの領域とで、画素値の変化パターン、すなわち、画像ブロック内の図形の相似性が異なっている。
【０１５９】
いま、例えば、上位３ビットが２で、下位３ビットが６となっている６ビットの被埋め込みデータを、第１行と第１０１行の画像ブロックに埋め込むものとすると、埋め込み部２２は、６ビットの被埋め込みデータのうちの上位３ビットの２に対応して、図１７Ａの第１行の左から３番目の画像ブロックを選択するとともに、６ビットの被埋め込みデータのうちの下位３ビットの６に対応して、図１７Ａの第１０１行の左から７番目の画像ブロックを選択する。さらに、埋め込み部２２は、選択した第１行の左から３番目の画像ブロックと、第１０１行の左から７番目の画像ブロックとを入れ替え、これにより、図１７Ｂに示すように、６ビットの被埋め込みデータを、第１行と第１０１行の画像ブロックに埋め込む。
【０１６０】
ここで、左から、ｉ番目の画像ブロックを、以下、適宜、第ｉ画像ブロックという。
【０１６１】
ステップＳ５４において、被埋め込みデータを埋め込んだ後は、ステップＳ５５に進み、埋め込み部２２は、被埋め込みデータを埋め込んだ第１行の画像ブロックと、第１０１行の画像ブロックを、フレームメモリ２１に上書きする形で書き込み、ステップＳ５６に進む。
【０１６２】
ステップＳ５６では、埋め込み部２２は、フレームメモリ２１に記憶された１フレームの画像データのすべての画像ブロックの行に、被埋め込みデータを埋め込んだかどうかを判定する。ステップＳ５６において、まだ、すべての画像ブロックの行に、被埋め込みデータを埋め込んでいないと判定された場合、ステップＳ５２に戻り、埋め込み部２２は、新たな被埋め込みデータを受信し、ステップＳ５３に進む。ステップＳ５３では、埋め込み部２２は、上領域と下領域から、次の行の画像ブロックを選択し、即ち、いまの場合は、第２行の画像ブロックと第１０２行の画像ブロックを選択し、以下、同様の処理を繰り返す。
【０１６３】
一方、ステップＳ５６において、フレームメモリ２１に記憶された１フレームの画像データのすべての画像ブロックの行に、被埋め込みデータを埋め込んだと判定された場合、即ち、ステップＳ５３で、第１行と第１０１行の画像ブロックのセットから、第１００行と第２００行の画像ブロックのセットまでが、処理対象画像として選択された場合、埋め込み部２２は、フレームメモリ２１に記憶された画像データ、即ち、被埋め込みデータが埋め込まれた画像データ（埋め込み画像データ）を読み出して出力させ、埋め込み処理を終了する。
【０１６４】
なお、図１６の埋め込み処理は、埋め込み対象データとしての画像データのフレームを対象として、適宜、繰り返し行われる。
【０１６５】
次に、図１８は、画像の相似性を利用して、埋め込み対象データとしての画像データに対して被埋め込みデータが埋め込まれた埋め込み符号化データを復元する復元処理の例を示すフローチャートである。
【０１６６】
まず最初に、ステップＳ６１において、復元部３２は、１フレーム単位の埋め込み符号化データ（埋め込み画像データ）を、フレームメモリ３１に順次記憶させる。さらに、ステップＳ３１では、復元部３２は、図１６のステップＳ５１における場合と同様にして、埋め込み符号化データの中から相似領域を抽出し、その画像ブロックの位置を、相似領域データとして、図示せぬワークメモリに記憶させる。
【０１６７】
ここで、本実施の形態では、図１７で説明したことから、画像ブロックの１行に３ビットの被埋め込みデータが埋め込まれるが、この埋め込みは、１行を構成する画像ブロックのうちの１つの画像ブロックを変更する操作（入れ替える操作）によって行われる。従って、１行を構成する画像ブロックのうちの、少なくとも１つは、被埋め込みデータの埋め込みのための変更操作によって非相似領域になっている。しかしながら、相似領域の抽出の際には、図１６のステップ５１で説明したように、補正処理が行われるため、被埋め込みデータの埋め込みのための変更操作によって非相似領域とされた画像ブロックは、相似領域に変換される（相似領域とみなされる）。従って、ステップＳ３１で抽出される相似領域には、図１６の埋め込み処理で入れ替えが行われた画像ブロックが含まれる。
【０１６８】
その後、ステップＳ６２に進み、復元部６２は、ステップＳ６１でワークメモリに記憶された相似領域データを参照して、図１６のステップＳ５３における場合と同様に、フレームメモリ３１に記憶された１フレームの埋め込み画像データを、上領域と下領域に、仮想的に分割し、その上領域と下領域それぞれから、同一行の画像ブロックの相似領域を、順次、選択、抽出する。
【０１６９】
従って、フレームメモリ３１に記憶された埋め込み画像データについて、ステップＳ６２の処理が最初に行われる場合には、上領域の第１行と、下領域の第１行が選択される。ここで、図１６のステップＳ５３で説明したように、埋め込み対象データとしての画像データの第１行の画像ブロックと、第１０１行の画像ブロックのすべてが、相似領域であるとすると、ステップＳ６２では、第１行と、第１０１行の全画像ブロックが、相似領域であるとして抽出される。
【０１７０】
そして、ステップＳ６３に進み、復元部６２は、図１６のステップＳ５１で説明した場合と同様にして、ステップＳ６２で上領域と下領域それぞれから抽出された第１行の相似領域と、第１０１行の相似領域を構成する８×８画素単位の画像ブロックを、順次、注目ブロックとし、その注目ブロックについて、周辺画像ブロックとの間でマッチングを行う。これにより、復元部６２は、注目ブロックについて、周辺画像ブロックとの間のマッチング度を求め、さらに、そのマッチング度から、図１６および図１７で説明した場合と同様にして、相似性評価値を求める。
【０１７１】
なお、上述の場合には、注目ブロックと左右の画像ブロック（周辺画像ブロック）それぞれのマッチング度の平均値を、注目ブロックの相似性評価値とするようにしたが、その他、例えば、注目ブロックと左右の画像ブロックそれぞれのマッチング度のうちの大きい方または小さい方を、相似性評価値として採用するようにすることも可能である。
【０１７２】
復元部６２は、上述したようにして、上領域と下領域それぞれから抽出された第１行の相似領域と、第１０１行の相似領域を構成する画像ブロックそれぞれの相似性評価値を求めると、その相似性評価値を、ワークメモリに記憶させ、ステップＳ６５に進む。
【０１７３】
ステップＳ６５では、復元部３２は、ワークメモリに記憶された２行（上領域の１行と、その行に対応する下領域の１行の、合計２行）の画像ブロックの相似領域それぞれから、相似性評価値が最大の画像ブロックを検出し、その画像ブロックの位置を、ワークメモリに記憶させる。即ち、例えば、いま、ワークメモリに、第１行の相似領域を構成する画像ブロックについての相似性評価値と、第１０１行の相似領域を構成する画像ブロックについての相似性評価値が記憶されている場合には、第１行において、相似性評価値が最大の画像ブロック（以下、適宜、最大相似性画像ブロックという）と、第１０１行において、最大相似性画像ブロックが検出され、その最大相似性画像ブロックの位置が、ワークメモリに記憶される。
【０１７４】
そして、ステップＳ６６に進み、復元部３２は、ワークメモリに記憶された、２行それぞれの最大相似性画像ブロックの位置に基づいて、６ビットの被埋め込みデータを復元して出力する。
【０１７５】
即ち、復元部３２は、上領域または下領域の行の最大相似性画像ブロックが、第ｉ画像ブロックである場合、ｉ−１を、６ビットの被埋め込みデータの上位３ビットまたは下位３ビットとして、それぞれ復元し、さらに、その上位３ビットと下位３ビットから、６ビットの被埋め込みデータを構成して出力する。
【０１７６】
ここで、例えば、図１７Ｂに示した場合では、第１行の最大相似性画像ブロックは、第３画像ブロックとなり、第１０１行の最大相似性画像ブロックは、第７画像ブロックとなる。従って、６ビットの被埋め込みデータの上位３ビットと下位３ビットは、それぞれ２と６になる。
【０１７７】
以上のようにして、最大相似性画像ブロックの位置に基づいて、被埋め込みデータが復元されると、ステップＳ６７に進み、復元部３２は、ステップＳ６５においてワークメモリに記憶された、６ビットの被埋め込みデータを復元するのに用いた２つの最大相似性画像ブロックの位置にしたがい、フレームメモリ３１に記憶された埋め込み画像データの、ステップＳ６２で選択された２行の画像ブロックの位置を入れ替える。
【０１７８】
即ち、例えば、図１６の埋め込み処理において、図１７で説明したように、上領域の第１行の第３画像ブロックと、下領域の第１行（全体の第１０１行）の第７画像ブロックとが入れ替えられた場合には、図１８のステップＳ６５において、第１行については、第３画像ブロックの位置が記憶され、第１０１行については、第７画像ブロックの位置が記憶される。従って、この場合、ステップ６７では、第１行の第３画像ブロックと、第１０１行の第７画像ブロックとが入れ替えられ、これにより、第１行および第１０１行の画像データが復元される。
【０１７９】
その後、復元部３２は、復元した２行の画像データ（画像ブロック）を、フレームメモリ３１に上書きする形で書き込み、ステップＳ６８に進む。ステップＳ６８では、復元部３２は、フレームメモリ３１に記憶された１フレームの埋め込み画像データについて、埋め込み対象データとしての画像データと、そこに埋め込まれている被埋め込みデータの復元が終了したか否かを判定する。ステップＳ６８において、フレームメモリ３１に記憶された１フレームの埋め込み画像データについての復元が終了していないと判定された場合、ステップＳ６２に戻り、フレームメモリ３１に記憶された埋め込み画像データにおける上領域と下領域それぞれから、次の行の画像ブロックが選択され、以下、同様の処理が繰り返される。
【０１８０】
また、ステップＳ６８において、フレームメモリ３１に記憶された１フレームの埋め込み画像データについての復元が終了したと判定された場合、ステップＳ６９に進み、復元部３２は、フレームメモリ３１に記憶された画像データ、即ち、復元された埋め込み対象データとしての画像データを出力させ、処理を終了する。
【０１８１】
なお、図１８の実施の形態においても、図１３の実施の形態における場合と同様に、復元された画像データは、フレームメモリ３１に記憶された１フレームの画像データすべてが復元された後に出力することもできるし、復元単位である２行の画像ブロックが復元されるごとに出力することも可能である。
【０１８２】
以上のように、被埋め込みデータが埋め込まれた画像データである埋め込み画像データを、画像の相似性を利用して、元の画像データと被埋め込みデータに復元するようにしたので、その復元のためのオーバヘッドがなくても、埋め込み画像データを、元の画像データと被埋め込みデータに復元することができる。従って、その復元画像（復号画像）には、基本的に、被埋め込みデータを埋め込むことによる画質の劣化は生じない。
【０１８３】
即ち、図１６の埋め込み処理によれば、１行の画像ブロックにおける、６ビットの被埋め込みデータの上位３ビットに対応する位置の画像ブロックと、他の行を構成する、６ビットの被埋め込みデータの下位３ビットに対応する位置の画像ブロックとを入れ替えるという操作ルールにしたがい、画像データに対して、被埋め込みデータが埋め込まれ、埋め込み画像データが生成される。
【０１８４】
一方、図１８の復元処理によれば、埋め込み画像データのマッチング度を、相似性の評価値として、その相似性を利用し、埋め込み処理における操作ルールにしたがって、埋め込み画像データに対して、埋め込み処理における場合とは逆の操作が行われる。そして、その操作によって、埋め込み画像データが、元の画像データと被埋め込みデータが復元される。
【０１８５】
従って、図１６の埋め込み処理における操作ルールは、画像データの相似性を利用して、被埋め込みデータが埋め込まれた埋め込み画像データを元に戻すことができる操作ルールであるということができるが、埋め込み処理では、このような操作ルールを採用することで、画像データの画質を劣化させることなく（最低限の劣化に抑えて）、かつデータ量を増加せずに、画像データに被埋め込みデータを埋め込むことができる。
【０１８６】
なお、上述の場合には、相似性評価値として、埋め込み画像データのマッチング度を用いるようにしたが、相似性評価値としては、マッチング度以外のものを使用することが可能である。
【０１８７】
以上のように、埋め込み符号化器３において、埋め込み対象データとしての画像データが有するエネルギの偏りを利用して復元を行うことができるように操作を行う操作ルールにしたがい、画像データを、被埋め込みデータに対応して操作することにより、画像データに被埋め込みデータを埋め込み、埋め込み符号化データを出力する場合には、復元器６では、その埋め込み符号化データを、画像データが有するエネルギの偏りを利用することにより、復元のためのオーバヘッドなしで、元の画像データおよび被埋め込みデータに復元することができる。
【０１８８】
また、埋め込み対象データとしての画像データには、被埋め込みデータが埋め込まれることで、その埋め込みの結果得られる埋め込み画像データ（埋め込み符号化データ）は、元の画像データと異なる画像とされ、人が価値ある情報として認識することのできる画像ではなくなることから、埋め込み対象データとしての画像データについては、オーバヘッドなしの暗号化を実現することができる。
【０１８９】
さらに、完全可逆の電子透かしを実現することができる。即ち、従来の電子透かしでは、例えば、画質にあまり影響のない画素値の下位ビットが、電子透かしに対応する値に、単に変更されていたが、この場合、その下位ビットを、元の値に戻すことは困難である。従って、復元画像の画質は、電子透かしとしての下位ビットの変更により、少なからず劣化する。これに対して、埋め込み符号化データを、埋め込み対象データとしての画像データが有するエネルギの偏りを利用して復元する場合には、劣化のない元の画像データおよび被埋め込みデータを得ることができ、従って、被埋め込みデータを電子透かしとして用いることで、電子透かしに起因して復元画像の画質が劣化することはない。
【０１９０】
また、埋め込み対象データに埋め込まれた被埋め込みデータは、埋め込み符号化データから埋め込み対象データを復元することで取り出す（復元する）ことができるので、埋め込み対象データとともに、オーバヘッドなしでサイドインフォメーションを提供することができる。言い換えれば、被埋め込みデータを取り出すためのオーバヘッドなしで、その被埋め込みデータを埋め込み対象データに埋め込むことができるので、その埋め込みの結果得られる埋め込み符号化データは、被埋め込みデータの分だけ圧縮（埋め込み圧縮）されているということができる。従って、例えば、ある画像の半分を埋め込み対象データとするとともに、残りの半分を被埋め込みデータとすれば、埋め込み対象データである半分の画像に、残りの半分の画像を埋め込むことができるから、この場合、画像は、単純には、１／２に圧縮されることになる。
【０１９１】
さらに、埋め込み符号化データは、情報が有するエネルギの偏りという、いわば統計量を利用して復元されるため、誤りに対する耐性の強いものとなる。即ち、ロバスト性の高い符号化であるロバスト符号化（統計的符号化）を実現することができる。
【０１９２】
また、例えば、画像データを埋め込み対象データとする一方、被埋め込みデータとして、画像データとは異なるメディアの、例えば、音声データを用いるようにすることで、音声をキーとして、画像データの提供を行うようなことが可能となる。即ち、図２の符号化装置１１側において、例えば、契約者が発話した音声「開けゴマ」など被埋め込みデータとして、埋め込み対象データである画像データに埋め込んでおき、復元装置１２側では、ユーザに、音声「開けゴマ」を発話してもらい、その音声と、画像データに埋め込まれた音声とを用いて話者認識を行うようにする。このようにすることで、例えば、話者認識の結果、ユーザが契約者である場合にのみ、自動的に、画像を提示するようなことが可能となる。なお、この場合、被埋め込みデータとしての音声は、いわゆる特徴パラメータではなく、音声波形そのものを用いることが可能である。
【０１９３】
また、例えば、音声データを埋め込み対象データとする一方、被埋め込みデータとして、音声とは異なるメディアの、例えば、画像データを用いるようにすることで、画像をキーとして、音声の提供を行うようなこと（例えば、顔認識後の音声応答）が可能となる。即ち、図２の符号化装置１１側において、例えば、ユーザへの応答としての音声に、そのユーザの顔の画像を埋め込み、復元装置１２側では、ユーザの顔を撮影し、その結果得られる画像とマッチングする顔画像が埋め込まれている音声を出力するようにすることで、ユーザごとに異なる音声応答を行う音声応答システムを実現することが可能となる。
【０１９４】
さらに、音声に、音声を埋め込んだり、画像に、画像を埋め込んだりするような、あるメディアの情報に、それと同一メディアの情報を埋め込むようなことも可能である。あるいは、また、画像に、契約者の音声と顔画像を埋め込んでおけば、ユーザの音声と顔画像とが、画像に埋め込まれているものと一致するときのみ、その画像を提示するようにする、いわば二重鍵システムなどの実現も可能となる。
【０１９５】
また、例えば、テレビジョン放送信号を構成する、いわば同期した画像と音声のうちのいずれか一方に、他方を埋め込むようなことも可能であり、この場合、異なるメディアの情報どうしを統合した、いわば統合符号化を実現することができる。
【０１９６】
さらに、埋め込み処理では、上述したように、情報には、そのエネルギの偏りに特徴があるほど、多くの被埋め込みデータを埋め込むことができる。従って、例えば、ある２つの情報について、エネルギの偏りに特徴がある方を適応的に選択し、その選択した方に、他方を埋め込むようにすることで、全体のデータ量を制御することが可能となる。即ち、２つの情報どうしの間で、一方の情報によって、他方の情報量を、いわば吸収するようなことが可能となる。そして、このように全体のデータ量を制御することができる結果、伝送路の伝送帯域や使用状況、その他の伝送環境にあったデータ量による情報伝送（環境対応ネットワーク伝送）が可能となる。
【０１９７】
また、例えば、画像に、その画像を縮小した画像を埋め込むことで（あるいは、音声に、その音声を間引いたものを埋め込むことで）、データ量を増加することなく、いわゆる階層符号化（下位階層の情報量を少なくすることにより、上位階層の情報を生成する符号化）を実現することができる。
【０１９８】
さらに、例えば、画像に、その画像を検索するためのキーとなる画像を埋め込んでおくことで、そのキーとなる画像に基づいて、画像の検索を行うデータベースを実現することが可能となる。
【０１９９】
以上のように、情報が有するエネルギ（の偏り）を表すものとしては、相関性、連続性、相似性などがあるが、以下においては、説明を簡単にするため、例えば、相関性にのみ注目して、説明を行う。そこで、まず、埋め込み対象データとして、画像データを用い、その画像データの相関性を利用する埋め込み処理と復元処理の他の例として、３つの方式（第１、第２、第３の方式）を紹介する。
【０２００】
第１の方式では、埋め込み処理において、埋め込み対象データとしての画像データを構成する画素の位置を、例えば、１列（垂直方向に並ぶ画素列）単位で、被埋め込みデータに対応して入れ替える（画素スワップする）ことを操作ルールとして、その操作ルールにしたがい、埋め込み対象データとしての画像データが操作されることで、各列に、被埋め込みデータが埋め込まれる。
【０２０１】
即ち、第１の方式の埋め込み処理では、被埋め込みデータに基づいて、埋め込み対象データとしての、例えば、１フレームの画像データの各列の位置を、どのように入れ替えるかを表す画素スワップ情報が生成される。具体的には、例えば、埋め込み対象データとしての１フレームの画像データが、Ｍ行Ｎ列の画素で構成され、その画像データの第ｎ列（左からｎ番目の列）を、第ｎ’列に入れ替える場合には、ｎとｎ’とが対応付けられた画素スワップ情報が生成される（ｎ，ｎ’は、１以上Ｎ以下の整数）。
【０２０２】
ここで、１フレームの画像データの列数が、上述のように、Ｎ列である場合には、その入れ替え方は、そのすべての列を入れ替えの対象とすると、Ｎ！（！は、階乗を表す）通りだけある。従って、この場合、１フレームには、最大で、ｌｏｇ2（Ｎ！）ビット（但し、小数点以下切り捨て）の被埋め込みデータの埋め込みが可能となる。
【０２０３】
画素スワップ情報の生成後は、その画素スワップ情報にしたがって、埋め込み対象データとしての画像データの各列の位置が入れ替えられる（画素スワップされる）ことで、埋め込み対象データに、被埋め込みデータが埋め込まれ、埋め込み符号化データ（埋め込み画像データ）が生成される。
【０２０４】
ここで、第１の方式では、上述のように、埋め込み対象データとしての画像データの各列を、被埋め込みデータに対応して画素スワップするという操作ルールにしたがって、被埋め込みデータが埋め込まれるので、この第１の方式を、以下、適宜、画素スワップ方式という。
【０２０５】
次に、図１９のフローチャートを参照して、図３の埋め込み符号化器３で、画素スワップ方式による埋め込み処理が行われる場合の、その埋め込み処理について説明する。
【０２０６】
埋め込み対象データベース１からは、そこに記憶されている埋め込み対象データとしての画像データが、例えば、１フレーム単位で読み出され、フレームメモリ２１に、順次供給されて記憶される。
【０２０７】
そして、埋め込み部２２は、ステップＳ８１において、１フレームの画像に埋め込み可能なデータ量の被埋め込みデータを、被埋め込みデータベース２から読み出す。即ち、例えば、上述したように、１フレームの画像の列数がＮ列であり、そのすべての列を画素スワップ（入れ替え）の対象とする場合には、１フレームには、最大で、ｌｏｇ2（Ｎ！）ビットの被埋め込みデータの埋め込みが可能であるから、そのようなビット数（以下）の被埋め込みデータが、被埋め込みデータベース２から読み出される。
【０２０８】
そして、埋め込み部２２は、ステップＳ８２に進み、ステップＳ８１で読み出した被埋め込みデータに基づいて、画素スワップ情報を生成する。即ち、埋め込み部２２は、被埋め込みデータに基づき、フレームメモリ２１に記憶された画像データのフレームの第１列乃至第Ｎ列のうちの、例えば、第１列を除く第２列乃至第Ｎ列それぞれを、第何列に画素スワップするかを表す画素スワップ情報を生成する。
【０２０９】
その後、ステップＳ８３に進み、埋め込み部２２は、画素スワップ情報にしたがって、フレームメモリ２１に記憶された処理対象のフレームの各列の位置を画素スワップする。そして、列の画素スワップが行われたフレームは、フレームメモリ２１から読み出され、埋め込み符号化データとして出力される。
【０２１０】
なお、フレームの各列の画素スワップは、フレームメモリ２１における画像データ（を構成する画素）の記憶位置を変更することで行うことができるが、その他、例えば、フレームメモリ２１からフレームを読み出すときのアドレスを制御することによって、結果として、列の画素スワップが行われたフレームが、フレームメモリ２１から読み出されるようにすることも可能である。
【０２１１】
また、ここでは、画素スワップ情報には、第２列乃至第Ｎ列それぞれを、第何列に画素スワップするかを表す情報が含まれているが、第１列を、第何列に画素スワップするかを表す情報は含まれていない。従って、埋め込み部２２では、第２列乃至第Ｎ列それぞれの画素スワップは行われるが、第１列の画素スワップは行われない。なお、第１列の画素スワップを行わない理由については、後述する。
【０２１２】
ステップＳ８３において、フレームメモリ２１から埋め込み符号化データが出力されると、ステップＳ８４に進み、フレームメモリ２１に、まだ処理の対象とされていないフレームが記憶されているかどうかが判定され、記憶されていると判定された場合、ステップＳ８１に戻り、まだ処理されていないフレームを対象に、同様の処理が繰り返される。
【０２１３】
また、ステップＳ８４において、フレームメモリ２１に、まだ処理の対象とされていないフレームが記憶されていないと判定された場合、埋め込み処理を終了する。
【０２１４】
以上のように、フレームメモリ２１に記憶された画像を構成する１以上の画素の集合としての、各列の画素の位置を、被埋め込みデータに対応して画素スワップすることにより、各列に、被埋め込みデータを埋め込む場合には、その逆の画素スワップ（ここでは、列の入れ替え）を行うことで、元の画像データを復元することができ、さらに、どのような画素スワップを行ったかということに基づいて、被埋め込みデータを復元することができる。従って、画像データの画質の劣化を極力なくし、かつデータ量を増加せずに、画像データに被埋め込みデータを埋め込むことができる。
【０２１５】
即ち、被埋め込みデータが埋め込まれた画像データである、列の位置の画素スワップが行われた画像データ（埋め込み画像データ）の各列は、その画像データの相関性、つまり、ここでは、例えば、元の画像データと同一の正しい位置にある列との間の相関を利用することにより、オーバヘッドなしで、元の位置に画素スワップすることができ、さらに、その画素スワップの仕方（各列を、どの列に画素スワップしたか）により、被埋め込みデータを復元ことができる。従って、その結果得られる復元画像には、基本的に、被埋め込みデータを埋め込むことによる画質の劣化は生じない。
【０２１６】
なお、埋め込み符号化データに、正しい位置にある列が存在しない場合には、上述のように画像データの相関性を利用して、画像データと被埋め込みデータを復元するのは、一般には、困難である。そこで、ここでは、図１９の埋め込み処理において、各フレームの第１列は、入れ替えを行わないで、そのまま、埋め込み符号化データとして出力するようにしている。
【０２１７】
但し、第１列を含むすべての列を入れ替えの対象として、埋め込み符号化を行うことも可能であり、この場合、例えば、入れ替え後の列の少なくとも１以上の元の位置を、オーバヘッドとして、埋め込み符号化データに含めることで、元の画像データと被埋め込みデータの復元が容易に可能となる。
【０２１８】
また、被埋め込みデータは、画像データの第１列以外のすべての列を一度に入れ替えることにより、その画像データに埋め込むことも、また、画像データの第１列以外の列を、順次入れ替えることにより、その画像データに埋め込むことも可能である。
【０２１９】
次に、画素スワップ方式による埋め込み処理により得られる埋め込み画像データは、以下のような、画像データの相関性を利用した画素スワップ方式による復元処理により、元の画像と被埋め込みデータに復元することができる。
【０２２０】
即ち、画素スワップ方式による復元処理では、埋め込み画像データを構成する列のうち、既に復元した最新の列と、他の列との相関を計算し、既に復元した列との相関を最大にする列を、その既に復元した列の右隣の位置に画素スワップすることを、埋め込み画像データを構成するすべての列について行うことで、元の画像データが復元され、さらに、埋め込み画像データを元の画像データに復元する際の、埋め込み画像データの各列の画素スワップの仕方に基づいて、被埋め込みデータが復元される。
【０２２１】
次に、図２０のフローチャートを参照して、図４の復元器６において画素スワップ方式による復元処理が行われる場合の、その復元処理について説明する。
【０２２２】
フレームメモリ３１では、そこに供給される埋め込み画像データが、例えば、１フレーム単位で順次記憶される。
【０２２３】
そして、復元部３２は、ステップＳ９１において、フレームの列数をカウントするための変数ｎに、初期値としての、例えば、１がセットされ、ステップＳ９２に進み、変数ｎが、フレームの列数であるＮから１を減算したＮ−１以下であるかどうかが判定される。
【０２２４】
ステップＳ９２において、変数ｎがＮ−１以下であると判定された場合、ステップＳ９３に進み、復元部３２は、フレームメモリ３１に記憶された埋め込み画像データのフレームから、第ｎ列の画素（画素列）を読み出し、その第ｎ列の各画素（の画素値）を要素として並べたベクトル（以下、適宜、列ベクトルという）ｖnを生成する。ここで、フレームがＭ行の画素で構成される場合には、列ベクトルｖn（後述する列ベクトルｖkも同様）は、Ｍ次元のベクトルとなる。
【０２２５】
その後、ステップＳ９４において、復元部３２は、第ｎ列より右側にある列をカウントするための変数ｋに、初期値としてのｎ＋１をセットし、ステップＳ９５に進む。ステップＳ９５では、復元部３２は、ステップＳ９３における場合と同様に、埋め込み画像データのフレームから、第ｋ列の画素を読み出し、その第ｋ列の画素を要素とする列ベクトルｖkを生成して、ステップＳ９６に進む。
【０２２６】
ステップＳ９６では、復元部３２は、列ベクトルｖnおよびｖkを用いて、第ｎ列と第ｋ列との間の相関を表す相関値を求める。
【０２２７】
即ち、復元部３２は、まず、列ベクトルｖnとｖkとの距離ｄ（ｎ，ｋ）を、次式にしたがって計算する。
【０２２８】
0003940986.tif 000002
但し、上式において、Σは、ｍを、１からＭに変化させてのサメーションを表す。また、Ａ（ｉ，ｊ）は、処理対象になっている埋め込み画像データのフレームの第ｉ行第ｊ列の画素（画素値）を表す。
【０２２９】
さらに、復元部３２は、列ベクトルｖnとｖkとの距離ｄ（ｎ，ｋ）の逆数１／ｄ（ｎ，ｋ）を、第ｎ列と第ｋ列との相関を表す相関値として求める。
【０２３０】
第ｎ列と第ｋ列との相関値の算出後は、ステップＳ９７に進み、復元部３２は、変数ｋが、フレームの列数であるＮから１を減算したＮ−１以下であるかどうかを判定する。ステップＳ９７において、変数ｋがＮ−１以下であると判定された場合、ステップＳ９８に進み、復元部３２は、変数ｋを１だけインクリメントして、ステップＳ９５に戻り、以下、ステップＳ９７において、変数ｋがＮ−１以下でないと判定されるまで、ステップＳ９５乃至Ｓ９８の処理を繰り返す。即ち、これにより、第ｎ列と、それより右側にある埋め込み画像の列それぞれとの相関値が求められる。
【０２３１】
その後、ステップＳ９７において、変数ｋがＮ−１以下でないと判定されると、ステップＳ９９に進み、復元部３２は、第ｎ列との相関値を最大にするｋを求めて、ステップＳ１００に進む。そして、いま、第ｎ列との相関値を最大にするｋを、例えばＫと表すと、復元部３２は、ステップＳ１００において、フレームメモリ３１に記憶された処理対象の埋め込み画像データのフレームの第ｎ＋１列と第Ｋ列とを画素スワップ、即ち、第Ｋ列を、第ｎ列の右隣の第ｎ＋１列に入れ替える。
【０２３２】
その後、ステップＳ１０１に進み、復元部３２は、変数ｎを１だけインクリメントして、ステップＳ９２に戻り、以下、ステップＳ９２において、変数ｎがＮ−１以下でないと判定されるまで、ステップＳ９２乃至Ｓ１０１の処理を繰り返す。
【０２３３】
ここで、本実施の形態では、埋め込み画像データの第１列は、元の画像データの第１列のままであるから、変数ｎが、初期値である１のときは、第１列との相関が最も高い埋め込み画像データの列が、第１列の右隣の第２列に画素スワップされる。第１列との相関が最も高い列は、画像データの相関性から、基本的に、元の画像データの第２列であるから、この場合、図１９の埋め込み処理において、埋め込み画像データのどこかの列に画素スワップされた元の画像データの第２列は、元の位置（列）に戻される（復元される）ことになる。
【０２３４】
そして、変数ｎが２となると、上述したようにして元の位置に画素スワップされた第２列との相関が最も高い埋め込み画像データの列が、その第２列の右隣の第３列に画素スワップされる。第２列との相関が最も高い列は、やはり、画像データの相関性から、基本的に、元の画像データの第３列であるから、この場合、図１９の埋め込み処理において、埋め込み画像データのどこかの列に画素スワップされた元の画像データの第３列は、元の位置に戻されることになる。
【０２３５】
以下、同様にして、フレームメモリ３１に記憶された埋め込み画像データは、元の画像データに復元されていく。
【０２３６】
そして、ステップＳ９２において、変数ｎがＮ−１以下でないと判定された場合、即ち、埋め込み画像データを構成する第２列乃至第Ｎ列すべてが、画像データの相関性を利用して元の位置に戻され、これにより、フレームメモリ３１の記憶内容が、元の画像データに復元された場合、ステップＳ１０２に進み、復元部３２は、その復元された画像データを、フレームメモリ３１から読み出させる。さらに、ステップＳ１０２では、復元部３２が、埋め込み画像データを元の画像データに復元した際の、埋め込み画像データの第２列乃至第Ｎ列それぞれの画素スワップの仕方（画素スワップ情報）に基づいて、埋め込み画像データに埋め込まれていた被埋め込みデータを復元して出力する。
【０２３７】
その後、ステップＳ１０３に進み、復元部３２は、フレームメモリ３１に、まだ処理の対象とされていない埋め込み画像データのフレームが記憶されているかどうかを判定し、記憶されていると判定した場合、ステップＳ９１に戻り、まだ処理の対象とされていない埋め込み画像データのフレームを対象に、同様の処理を繰り返す。
【０２３８】
また、ステップＳ１０３において、フレームメモリ３１に、まだ処理の対象とされていない埋め込み画像データのフレームが記憶されていないと判定された場合、復元処理を終了する。
【０２３９】
以上のように、被埋め込みデータが埋め込まれた画像データである埋め込み画像データを、画像データの相関性を利用して、元の画像データと被埋め込みデータに復元するようにしたので、その復元のためのオーバヘッドがなくても、符号化データを、元の画像と被埋め込みデータに復元することができる。従って、その復元画像には、基本的に、被埋め込みデータを埋め込むことによる画質の劣化は生じない。
【０２４０】
なお、図２０の復元処理においては、既に復元された最新の列（ｎ＝１の場合においては、埋め込み処理時に画素スワップされない第１列）と、まだ復元されていない列との相関を求め、その相関に基づいて、既に復元された最新の列の右隣の位置に画素スワップされるべき列を検出するようにしたが、その他、例えば、既に復元された複数の列それぞれと、まだ復元されていない列との相関を演算することにより、既に復元された最新の列の右隣に画素スワップされるべき列を検出するようにすることも可能である。
【０２４１】
また、上述の場合には、被埋め込みデータに基づき、埋め込み対象データとしての画像データ構成する画素を、列単位で画素スワップすることにより（垂直ラインの画素スワップを行うことにより）、被埋め込みデータを埋め込むようにしたが、被埋め込みデータの埋め込みは、その他、例えば、埋め込み対象データとしての画像データを、行単位で画素スワップしたり（水平ラインの画素スワップを行ったり）、また、時間方向に並ぶ所定数のフレームの同一位置にある画素列を画素スワップすることにより行うことも可能である。
【０２４２】
さらに、画素スワップ方式による埋め込み処理では、例えば、埋め込み対象データとしての画像データを、列単位で画素スワップし、さらに、行単位で画素スワップすることにより、被埋め込みデータを埋め込むことも可能である。
【０２４３】
ここで、列と行の両方の画素スワップを行って得られる埋め込み画像データについて、例えば、列の位置を元の位置に戻す復元処理を考えると、その復元処理では、式（１）のΣにおいて加算される項の順番が変化するだけで、加算される項自体は変化しない。従って、式（１）によって求められる距離ｄ（ｎ，ｋ）は、画像データの列だけ画素スワップした場合と、列と行の両方を画素スワップした場合とで変化しないため、列と行の両方を画素スワップして得られた埋め込み画像データも、列だけ画素スワップして得られた埋め込み画像データと同様に、図２０の復元処理によって、元の画像データと被埋め込みデータに復元することができる。即ち、列と行の両方を画素スワップして得られた埋め込み画像データは、図２０の復元処理を、列と行について、それぞれ独立に行うことで、元の画像データと被埋め込みデータに復元することができる。
【０２４４】
以上から、埋め込み処理において、列と行の両方を画素スワップすることにより、画像データに被埋め込みデータを埋め込む場合には、行と列のうち、いずれの画素スワップを先または後に行うかは、復元処理に影響を与えない。従って、埋め込み処理においては、行と列の画素スワップのうちのいずれを先または後に行っても良いし、復元処理においても、行と列の画素スワップのうちのいずれを先または後に行っても良い。また、行と列の画素スワップを、交互に行うようなことも可能である。
【０２４５】
但し、埋め込み処理において、列だけの画素スワップを行う場合には、埋め込み画像データを元の画像データに復元した際の、埋め込み画像データの列の画素スワップの仕方が、被埋め込みデータの復元結果となるが、行と列の両方の画素スワップを行う場合には、埋め込み画像データの第ｍ行ｎ列の位置（ｍ，ｎ）にある画素が、復元画像（元の画像データ）のどの位置（ｍ’，ｎ’）に画素スワップされたかが、被埋め込みデータの復元結果となる。
【０２４６】
また、図１９の埋め込み処理では、埋め込み対象データとしての画像データの第１列だけを固定にし、図２０の復元処理では、この第１列を、いわば復元の基準として、埋め込み画像データの画素スワップを行うようにしたが、復元の基準は、第１列でなくても、あらかじめ、埋め込み処理と復元処理で設定しておけば、最後の第Ｎ列であっても良いし、その他の任意の列でも良い。さらに、復元の基準は、１列の画素すべてである必要はなく、極端には、１画素であっても良い。
【０２４７】
なお、例えば、第１列だけを、いわば復元の基準とし、画像データの相関を利用して、埋め込み画像データの画素スワップを行う場合には、１の列の画素スワップを誤ると、その後の列（ここでは、画素スワップを誤った列の右側にある列）の画素スワップも誤る可能性が高くなる。この場合、元の画像データを復元することができないから、被埋め込みデータを復元することもできなくなる。
【０２４８】
そこで、埋め込み処理においては、複数の列（例えば、全列から等間隔に選択した複数の列）を、復元の基準として残しておく（画素スワップの対象としない）ようにすることが可能である。
【０２４９】
次に、第２の方式では、埋め込み処理において、埋め込み対象データとしての画像データを構成する複数の画素の画素値を表すビット列の各ビットごとのビットプレーンを、被埋め込みデータに対応して入れ替える（従って、レベル方向の操作を行う）ビットプレーンスワップを行うことを操作ルールとして、その操作ルールにしたがい、埋め込み対象データとしての画像データが操作されることで、その画像データに、被埋め込みデータが埋め込まれる。
【０２５０】
即ち、第２の方式の埋め込み処理では、図２１に示すように、埋め込み対象データとしての画像データが、複数の画素で構成される画像ブロックにブロック化され、さらに、画像ブロックが、その画像ブロックを構成する各画素の画素値を表すビット列の各ビットごとのビットプレーンに分割される。
【０２５１】
ここで、埋め込み対象データとしての画像データを構成する各画素値に、例えば、８ビットが割り当てられているとすると、画像ブロックは、画素値の最下位ビット、最下位ビットから２ビット目のビット、３ビット目のビット、・・・、７ビット目のビット、最上位ビット（以下、適宜、それぞれを第１乃至第８ビットという）それぞれからなるビットプレーンに分割される。
【０２５２】
そして、画像ブロックのビットプレーンが、被埋め込みデータに対応して並べ替えられる（ビットプレーンスワップされる）ことにより、画像データに、被埋め込みデータが埋め込まれる。
【０２５３】
なお、例えば、上述のように、埋め込み対象データとしての画像データを構成する画素値に８ビットが割り当てられている場合には、１の画像ブロックからは、８面のビットプレーンが得られる。そして、８面のビットプレーンの並べ替え方（ビットプレーンスワップの仕方）は、４０３２０（＝８！（！は階乗を表す））通りあるから、１つの画像ブロックには、最大で、ｌｏｇ2（８！）ビット（但し、小数点以下は切り捨て）の被埋め込みデータを埋め込むことができる。従って、埋め込み処理では、被埋め込みデータが、そのようなビット数ごとに区切られ、埋め込み対象データとしての画像データを構成する各画像ブロックに埋め込まれる。
【０２５４】
ここで、第２の方式では、上述のように、埋め込み対象データとしての画像データの各画像ブロックのビットプレーンを、被埋め込みデータに対応してビットプレーンスワップするという操作ルールにしたがって、被埋め込みデータが埋め込まれるので、この第２の方式を、以下、適宜、ビットプレーンスワップ方式という。
【０２５５】
次に、図２２のフローチャートを参照して、図３の埋め込み符号化器３で、ビットプレーンスワップ方式による埋め込み処理が行われる場合の、その埋め込み処理について説明する。
【０２５６】
まず最初に、ステップＳ１１１において、埋め込み部２２は、１フレームの画像に埋め込むことのできる分の被埋め込みデータを、被埋め込みデータベース２から読み出し、１つの画像ブロックに埋め込むことのできる単位にフォーマットする（被埋め込みデータを分割する）。さらに、ステップＳ１１１では、埋め込み部２２は、埋め込み対象データベース１に記憶された埋め込み対象データとしての画像データのフレームのうち、まだ処理の対象としていないフレームの画像データを、フレームメモリ２１に記憶させる。
【０２５７】
そして、ステップＳ１１２に進み、埋め込み部２２は、フレームメモリ２１に記憶された１フレームの画像を、例えば、横×縦が４×４画素の画像ブロックに分割し、ステップＳ１１３に進む。ステップＳ１１３では、埋め込み部２２は、フレームメモリ２１に記憶された１フレームの画像データを構成する各画像ブロックを、ビットプレーンに分割し、ステップＳ１１４に進む。
【０２５８】
ステップＳ１１４では、埋め込み部２２は、ビットプレーンに分割した各画像ブロックのうち、例えば、ラスタスキャン順で、まだ、注目ブロックとしていないものを、注目ブロックとし、その注目ブロックのビットプレーンを、ステップ１１１で得た１単位の被埋め込みデータに対応してビットプレーンスワップし、そのビットプレーンスワップ後の画像ブロックを、フレームメモリ２１に上書きする形で書き込む。
【０２５９】
その後、ステップＳ１１５に進み、埋め込み部２２は、フレームメモリ２１に記憶された１フレームの画像を構成する画像ブロックすべてを注目ブロックとして処理（ビットプレーンを並べ替える処理）を行ったかどうかを判定する。ステップＳ１１５において、まだ、１フレームのブロックすべてを処理していないと判定された場合、ステップＳ１１４に戻り、埋め込み部２２は、ラスタスキャン順で、また、注目ブロックとしていない画像ブロックを、新たに注目ブロックとして、以下、同様の処理を繰り返す。
【０２６０】
一方、ステップＳ１１５において、１フレームのブロックすべてを注目ブロックとして処理したと判定された場合、ステップＳ１１６に進み、埋め込み部２２は、被埋め込みデータに対応してビットプレーンスワップが行われた画像ブロックで構成される１フレームの画像データ、即ち、埋め込み画像データを、フレームメモリ２１から読み出して出力させ、処理を終了する。
【０２６１】
なお、以上の埋め込み処理は、埋め込み対象データベース１に記憶された埋め込み対象データとしての画像データの１フレームごとに繰り返し行われる。
【０２６２】
以上のように、各画像ブロックのビットプレーンを、被埋め込みデータに対応してビットプレーンスワップすることにより、各画像ブロックに、被埋め込みデータを埋め込む場合には、その逆のビットプレーンスワップを行うことで、元の画像データを復元することができ、さらに、どのようなビットプレーンスワップを行ったかということに基づいて、被埋め込みデータを復元することができる。従って、画像の画質の劣化を極力なくし、かつデータ量を増加せずに、画像に被埋め込みデータを埋め込むことができる。
【０２６３】
即ち、画像においては、画像ブロックを構成するビットプレーンにおけるビットどうしの相関は、基本的に、上位ビットのビットプレーンほど高い（下位ビットのビットプレーンほど低い）。従って、このような画像の相関性、即ち、ここでは、ビットプレーンを構成するビットどうしの相関を利用することにより、被埋め込みデータに対応してビットプレーンスワップされたビットプレーンは、オーバヘッドなしで、元の順番に並べ替えることができ、さらに、その並べ替え方により、被埋め込みデータを復元することができる。従って、復元された画像には、基本的に、被埋め込みデータを埋め込むことによる画質の劣化は生じない。
【０２６４】
次に、ビットプレーンスワップ方式による埋め込み処理により得られる埋め込み画像データは、以下のような、画像データの相関性を利用したビットプレーンスワップ方式による復元処理により、元の画像データと被埋め込みデータに復元することができる。
【０２６５】
即ち、ビットプレーンスワップ方式による復元処理では、フレームごとの埋め込み画像データが、ビットプレーンスワップによる埋め込み処理における場合と同一の画像ブロックにブロック化され、さらに、各画像ブロックが、その画像ブロックを構成する画素の画素値を表すビット列の各ビットごとのビットプレーンに分割される。そして、各画像ブロックを構成する各ビットプレーン内のビットどうしの相関を表す相関値が求められる。
【０２６６】
具体的には、例えば、図２３Ａに示すように、まず、相関値を計算するビットプレーンが、注目ビットプレーンとして、画像ブロックから取り出される。そして、いま、画像ブロックが、例えば、上述したように、４×４画素で構成される場合、注目ビットプレーンも、横×縦が４×４ビットで構成されることになるが、その４×４ビットの注目ビットプレーンから、例えば、図２３Ｂに示すような、その中心部分の２×２ビットＡ，Ｂ，Ｃ，Ｄそれぞれを中心とした所定の大きさの４つの小ブロックが構成される。ここで、図２３Ｂは、ビットＡを中心として構成された３×３ビットの小ブロックを示している。
【０２６７】
ビットプレーンスワップ方式による復元処理では、注目ビットプレーンから得られた各小ブロックについて、その中心のビットと同一の値のビットの数がカウントされ、そのカウント値が、小ブロックの中心ビットと、他のビットとの間の相関値として求められる。ここで、図２３Ｂに示したビットＡを中心とする小ブロックにおいては、その中心ビット（ここでは、ビットＡ）が０となっており、その左上、上、右上、右、右下、下、左下、左のビットが、それぞれ１，０，１，０，０，１，０，０になっている。従って、０になっている中心ビットと同一の値になっているのは、その中心ビットの上、左、右下、左下、左の５ビットであるため、中心ビットについての他のビットとの間の相関値は、５になる。
【０２６８】
ビットプレーンスワップ方式による復元処理では、上述のようにして、注目ビットプレーンから得られた、ビットＡ乃至Ｄそれぞれを中心とする各小ブロックについて、相関値が求められる。さらに、このようにして求められたビットＡ乃至Ｄそれぞれを中心とする小ブロックについての相関値どうしが加算され、その加算値が、注目ビットプレーンの相関値とされる。
【０２６９】
画像ブロックを構成する各ビットプレーンは、順次、注目ビットプレーンとされ、上述のようにして、相関値が求められる。そして、画像ブロックのすべてのビットプレーンの相関値を求められると、図２４に示すように、相関値の高いビットプレーンが最上位ビット側に位置するとともに、相関値の低いビットプレーンが最下位ビット側に位置するように、即ち、相関値の昇順に、ビットプレーンがビットプレーンスワップされる。これにより、画像ブロックが復元される。ここで、図２４では、濃度の薄いビットプレーンほど、相関値の高いビットプレーンを表している。
【０２７０】
画像ブロックが復元された後は、その復元された画像ブロック（以下、適宜、復元ブロックという）を構成するビットプレーンの並びと、復元前の画像ブロックを構成するビットプレーンの並びとを比較することで、画像ブロックの復元にあたって、各ビットプレーンが、どのようにビットプレーンスワップされたのかが検出され、そのビットプレーンスワップの仕方に基づいて、復元ブロックに埋め込まれていた被埋め込みデータが復元される。
【０２７１】
次に、図２５フローチャートを参照して、図４の復元器６においてビットプレーンスワップ方式による復元処理が行われる場合の、その復元処理について説明する。
【０２７２】
復元部３２は、ステップＳ１２１において、１フレームの埋め込み画像データを、フレームメモリ３１に記憶させ、ステップＳ１２２に進む。ステップＳ１２２では、復元部３２は、フレームメモリ３１に記憶された１フレームの埋め込み画像データを、埋め込み処理における場合と同様に、画像ブロックにブロック化し、ステップＳ１２３に進む。ステップＳ１２３では、復元部３２は、各画像ブロックをビットプレーンに分割し、ステップＳ１２４に進む。
【０２７３】
復元部３２は、ステップＳ１２４において、ビットプレーンに分割された各画像ブロックを、例えば、ラスタスキャン順に、順次、注目ブロックとして、その注目ブロックの各ビットプレーンの相関値を、図２３で説明したように計算し、ステップＳ１２５に進む。ステップＳ１２５では、復元部３２は、ビットプレーンの相関値が昇順に並ぶように、注目ブロックのビットプレーンをビットプレーンスワップし、これにより、元の画像データを構成する画像ブロックを復元する。さらに、ステップＳ１２５では、復元部３２は、復元した画像ブロック（復元ブロック）を、フレームメモリ３１に上書きする形で書き込むとともに、その復元ブロックのビットプレーンの並びと、復元前の画像ブロックのビットプレーンの並びとを比較することで、埋め込み処理において、復元ブロックにつき、どのようなビットプレーンスワップが行われたかを認識する。そして、復元部３２は、その認識結果に基づいて、復元ブロックに埋め込まれていた被埋め込みデータを復元する。
【０２７４】
その後、ステップＳ１２６に進み、復元部３２は、フレームメモリ３１に記憶された１フレームの埋め込み画像データの画像ブロックすべてを注目ブロックとして処理を行ったかどうかを判定し、まだ、１フレームのブロックすべてを処理していないと判定した場合、ステップＳ１２４に戻り、ラスタスキャン順で、まだ、注目ブロックとしていない画像ブロックを、新たに注目ブロックとして、以下、同様の処理を繰り返す。
【０２７５】
一方、ステップＳ１２６において、フレームメモリ３１に記憶された１フレームの画像ブロックすべてを処理したと判定された場合、ステップＳ１２７に進み、復元部３２は、フレームメモリ３１に記憶された復元ブロックで構成される１フレームの画像データ、即ち、復元された元の画像データを読み出して出力させる。さらに、ステップＳ１２６では、復元部３２は、ステップＳ１２５で復元した被埋め込みデータを出力し、復元処理を終了する。
【０２７６】
なお、以上の復元処理は、１フレームの埋め込み画像データごとに繰り返し行われる。
【０２７７】
以上のように、埋め込み対象データとしての画像データのビットプレーンをビットプレーンスワップすることにより被埋め込みデータが埋め込まれた埋め込み画像データについて、ビットプレーンスワップを行い、画像の相関性を利用して、ビットプレーンを元の画像データにおける並びに戻すようにしたので、オーバヘッドがなくても、埋め込み画像データを、元の画像データと被埋め込みデータに復元することができる。従って、その復元画像には、基本的に、被埋め込みデータを埋め込むことによる画質の劣化は生じない。
【０２７８】
次に、第３の方式では、埋め込み処理において、埋め込み対象データとしての画像データを構成するライン（水平ラインもしくは垂直ライン、または時間方向に並ぶ複数の画素で構成されるライン）を、被埋め込みデータに対応してローテーションする（従って、空間方向または時間方向の操作を行う）ラインローテーションを行うことを操作ルールとして、その操作ルールにしたがい、埋め込み対象データとしての画像データが操作されることで、その画像データに、被埋め込みデータが埋め込まれる。
【０２７９】
即ち、第３の方式の埋め込み処理では、埋め込み対象データとしての画像データの、例えば、水平方向の各ライン（水平方向に並ぶ一連の画素）（水平ライン）を、被埋め込みデータに対応する分だけ、水平方向にずらすラインローテーションを行うことで、各水平ラインに、被埋め込みデータが埋め込まれる。
【０２８０】
ここで、第３の方式では、上述のように、埋め込み対象データとしての画像データのラインを、被埋め込みデータに対応してローテーションするという操作ルールにしたがって、被埋め込みデータが埋め込まれるので、この第３の方式を、以下、適宜、ラインローテーション方式という。
【０２８１】
次に、図２６のフローチャートを参照して、図３の埋め込み符号化器３で、ラインローテーション方式による埋め込み処理が行われる場合の、その埋め込み処理について説明する。
【０２８２】
埋め込み対象データベース１からは、そこに記憶されている埋め込み対象データとしての画像データが読み出され、フレームメモリ２１に、順次供給されて記憶される。
【０２８３】
そして、埋め込み部２２は、ステップＳ１３１において、フレームメモリ２１に記憶された画像データを構成する水平ラインのうち、まだ、注目ラインとしていないものを、注目ラインとして読み出し、ステップＳ１３２に進む。ステップＳ１３２では、埋め込み部２２は、注目ラインが、第１水平ライン（１フレームの画像データの最上行の水平ライン）であるかどうかを判定する。ステップＳ１３２において、注目ラインが第１水平ラインであると判定された場合、ステップＳ１３３に進み、埋め込み部２２は、その第１水平ラインを、そのまま、フレームメモリ２１に上書きする形で書き込み、ステップＳ１３７に進む。即ち、第１水平ラインは、特に操作（ラインローテーション）されず、従って、被埋め込みデータは埋め込まれない。
【０２８４】
また、ステップＳ１３２において、注目ラインが第１水平ラインでないと判定された場合、即ち、注目ラインが、第２水平ライン以降のいずれかの水平ラインである場合、ステップＳ１３４に進み、埋め込み部２２は、注目ラインに埋め込むべき被埋め込みデータを、被埋め込みデータベース２から読み出し、ステップＳ１３５に進む。ステップＳ１３５では、埋め込み部２２は、注目ラインを、例えば、ステップＳ１３４で読み出された被埋め込みデータに対応する画素数分だけ、水平方向にローテーションする。
【０２８５】
即ち、例えば、いま、図２７Ａに示すように、第Ｎ水平ライン（Ｎ≠１）が注目ラインとされているとすると、埋め込み部２２は、図２７Ｂに示すように、その第Ｎ水平ラインを、被埋め込みデータの値と同一の画素数だけ、水平方向である左または右方向のうちの、例えば右方向にスライドする（ずらす）。そして、埋め込み部２２は、そのスライドにより、フレームの右にはみ出した第Ｎ水平ラインの部分を、図２７Ｃに示すように、その第Ｎ水平ラインの左側にはめ込む。
【０２８６】
埋め込み部２２は、注目ラインをローテーションし、これにより、注目ラインに、被埋め込みデータを埋め込むと、ステップＳ１３６に進み、そのローテーション後の注目ラインを、フレームメモリ２１に上書きする形で書き込み、ステップＳ１３７に進む。
【０２８７】
ステップＳ１３７では、埋め込み部２２は、フレームメモリ２１に記憶された画像データのすべての水平ラインを、注目ラインとして処理を行ったかどうかを判定する。ステップＳ１３７において、フレームメモリ２１に記憶された画像データのすべての水平ラインを、まだ、注目ラインとしていないと判定された場合、ステップＳ１３１に戻り、まだ、注目ラインとしていない水平ライン（例えば、いままで注目ラインとされていた１ライン下の水平ラインが、新たに注目ラインとされ、以下、同様の処理が繰り返される。
【０２８８】
また、ステップＳ１３７において、フレームメモリ２１に記憶された画像データのすべての水平ラインを、注目ラインとしたと判定された場合、即ち、フレームメモリ２１に記憶された１フレームの画像データの各水平ライン（但し、ここでは、第１水平ラインを除く）に、被埋め込みデータが埋め込まれ、埋め込み画像データが生成された場合、埋め込み部２２は、その１フレームの埋め込み画像データを、フレームメモリ２１から読み出して出力させ、処理を終了する。
【０２８９】
なお、以上の埋め込み処理は、フレームメモリ２１に記憶された画像データの各フレームについて、繰り返し行われる。
【０２９０】
図２６の埋め込み処理によれば、ある１フレームの画像データは、次のような埋め込み画像データとされる。
【０２９１】
即ち、例えば、図２８Ａに示すような画像データに、被埋め込みデータとして、１０，１５０，２００，・・・を埋め込む場合においては、図２８Ｂに示すように、第１水平ラインは、そのまま出力され、第２水平ラインは、最初の被埋め込みデータと同一の値である１０画素だけ、右方向にローテーションされる。さらに、第３水平ラインは、２番目の被埋め込みデータと同一の値である１５０画素だけ、右方向にローテーションされ、第４水平ラインは、３番目の被埋め込みデータと同一の値である２００画素だけ、右方向にローテーションされる。第５水平ライン以降も、同様に、被埋め込みデータに対応する画素数だけ、右方向にローテーションされていく。
【０２９２】
以上のように、フレームメモリ２１に記憶された画像を構成する水平ラインを、被埋め込みデータに対応した画素数だけ、右方向にローテーションすることにより、各水平ラインに、被埋め込みデータを埋め込む場合には、その逆のローテーション（逆向きのローテーション）を行うことで、元の画像データを復元することができ、さらに、その逆のローテーションを行ったときのローテーション量に基づき、画像データに埋め込まれていた被埋め込みデータを復元することができる。従って、画像データの画質の劣化を極力なくし、かつデータ量を増加せずに、画像データに被埋め込みデータを埋め込むことができる。
【０２９３】
即ち、被埋め込みデータが埋め込まれた水平ラインは、元の位置から被埋め込みデータに対応するローテーション量（画素数）だけローテーションされているが、このような水平ラインは、画像データの相関性、即ち、ここでは、元の位置にある水平ラインとの間の相関を利用することにより、オーバヘッドなしで、元の位置に戻すことができる。さらに、水平ラインを元の位置に戻すことで、埋め込み処理によって、その水平ラインがローテーションされたローテーション量を認識することができ、そのローテーション量に基づいて、その水平ラインに埋め込まれていた被埋め込みデータを復元することができる。従って、その結果得られる復元画像には、基本的に、被埋め込みデータを埋め込むことによる画質の劣化は生じない。
【０２９４】
なお、埋め込み画像データに、元の位置にある水平ラインが存在しない場合には、上述のように画像の相関性を利用して、画像データと被埋め込みデータを復元するのは、一般には、困難である。そこで、ここでは、図２６の埋め込み処理において、各フレームの第１水平ラインには、被埋め込みデータを埋め込まないで（ローテーションしないで）、そのまま、埋め込み画像データとするようにしている。
【０２９５】
次に、ラインローテーション方式による埋め込み処理により得られる埋め込み画像データは、以下のような、画像データの相関性を利用したラインローテーション方式による復元処理により、元の画像データと被埋め込みデータに復元することができる。
【０２９６】
即ち、ラインローテーション方式による復元処理では、埋め込み画像データの各水平ラインが、例えば、その第１水平ラインから、順次、注目ラインとされるとともに、その注目ラインの１ライン上の水平ラインが、基準ラインとされる。
【０２９７】
なお、注目ラインは、これから元の位置に戻そうとしている水平ラインであり、また、いまの場合、上方向から下方向に向かって、水平ラインが、順次、注目ラインとされるので、基準ラインは、既に元の位置に戻されている水平ラインである。
【０２９８】
ラインローテーション方式による復元処理では、その後、注目ラインを、１画素ずつ右または左のうちのいずれか一方向にローテーションしながら、そのローテーション後の注目ラインと、基準ラインとの間の相関を表す相関値が演算される。
【０２９９】
具体的には、例えば、図２９Ａに示すように、注目ラインをローテーションせずに（注目ラインを、０画素分だけローテーションして）、その注目ラインを構成する画素の画素値と、基準ラインを構成する対応する画素の画素値との差分絶対値の総和の逆数が、注目ラインについての基準ラインとの間の相関値として計算される。さらに、図２９Ｂに示すように、注目ラインが、１画素だけ右または左のうちのいずれかにローテーションされ（図２９では、図２７で説明した場合の逆方向である左方向にローテーションされている）、そのローテーション後の注目ラインについて、基準ラインとの間の相関値が計算される。以下、同様にして、注目ラインが元の位置（埋め込み画像データにおける元の位置）に戻るまで、注目ラインを、２画素、３画素、・・・と順次ローテーションしながら、基準ラインとの間の相関値が計算される。
【０３００】
以上のようにして、各ローテーション量（ここでは、水平ラインを構成する画素数）でローテーションされた注目ラインについての相関値が計算された後は、各ローテーション量の中から、注目ラインについての相関値を最大にするローテーション量が検出される。そして、その検出されたローテーション量が、注目ラインを元の位置に戻すローテーション量として決定され（この決定されたローテーション量を、以下、適宜、決定ローテーション量という）、注目ラインが、決定ローテーション量だけ、相関値を計算する場合と同一の方向（上述の場合は、左方向）にローテーションされることで、元の位置に戻される。即ち、これにより、注目ラインが復元される。
【０３０１】
さらに、決定ローテーション量に基づいて、注目ラインに埋め込まれていた被埋め込みデータが復元される。
【０３０２】
次に、図３０フローチャートを参照して、図４の復元器６においてラインローテーション方式による復元処理が行われる場合の、その復元処理について説明する。
【０３０３】
フレームメモリ３１では、そこに供給される埋め込み画像データが、例えば、１フレーム単位で順次記憶される。
【０３０４】
そして、復元部３２は、ステップＳ１４１において、フレームメモリ３１に記憶された埋め込み画像データの、まだ注目ラインとされていない水平ラインのうちの、より上の行の水平ラインを、注目ラインとして読み出し、ステップＳ１４２に進む。ステップＳ１４２では、復元部３２は、注目ラインが、第１水平ラインであるかどうかを判定する。ステップＳ１４２において、注目ラインが、第１水平ラインであると判定された場合、ステップＳ１４３に進み、復元部３２は、第１水平ラインである注目ラインを、そのまま、フレームメモリ３１に上書きする形で書き込み、ステップＳ１５０に進む。即ち、図２８の埋め込み処理では、上述したように、第１水平ラインには、被埋め込みデータが埋め込まれていないため（従って、ローテーションされていない）、第１水平ラインは、特に操作されない。
【０３０５】
また、ステップＳ１４２において、注目ラインが、第１水平ラインでないと判定された場合、即ち、注目ラインが、第２水平ライン以降のいずれかの水平ラインである場合、ステップＳ１４４に進み、復元部３２は、注目ラインの１ライン上の水平ラインを基準ラインとして、フレームメモリ３１から読み出し、ステップＳ１４５に進む。ステップＳ１４５では、復元部３２は、注目ラインと基準ラインとの間の相関値（ライン相関値）を計算し、その内蔵するメモリに記憶して、ステップＳ１４６に進む。
【０３０６】
ステップＳ１４６では、復元部３２は、注目ラインを、例えば、左方向に、１画素だけローテーションし、ステップＳ１４７に進む。ステップＳ１４７では、復元部３２は、ステップＳ１４６で注目ラインがローテーションされることにより、そのローテーション後の注目ラインの各画素が、フレームメモリ３１に記憶されている注目ラインの各画素の位置に戻ったかどうかを判定する。
【０３０７】
ステップＳ１４７において、ローテーション後の注目ラインの各画素が、フレームメモリ３１に記憶されている注目ラインの各画素の位置に戻っていないと判定された場合、ステップＳ１４５に戻り、ローテーション後の注目ラインと基準ラインとの間の相関値が計算され、以下、同様の処理が繰り返される。
【０３０８】
また、ステップＳ１４７において、ローテーション後の注目ラインの各画素が、フレームメモリ３１に記憶されている注目ラインの各画素の位置に戻ったと判定された場合、ステップＳ１４８に進み、復元部３２は、注目ラインについて、ステップＳ１４５乃至Ｓ１４７のループ処理を行うことにより得られた各ローテーション量に対する相関値の中から、その最大値を求める。さらに、ステップＳ１４８では、復元部３２は、最大値となる相関値を与えるローテーション量を検出し、そのローテーション量を、決定ローテーション量として決定する。そして、復元部３２は、その決定ローテーション量に基づいて、注目ラインに埋め込まれていた被埋め込みデータを復元して出力し、即ち、決定ローテーション量を、そのまま被埋め込みデータとして出力し、ステップＳ１４９に進む。
【０３０９】
ステップＳ１４９では、復元部３２は、フレームメモリ３１に記憶されている注目ラインを読み出し、決定ローテーション量だけ左方向にローテーションすることにより、注目ラインを復元する（注目ラインを、元の画像データにおける位置に戻す）。さらに、ステップＳ１４９では、復元部３２は、ローテーション後の注目ラインを、フレームメモリ３１に上書きする形で書き込み、ステップＳ１５０に進む。
【０３１０】
ステップＳ１５０では、復元部３２は、フレームメモリ３１に記憶された埋め込み画像データのすべての水平ラインを、注目ラインとして処理を行ったかどうかを判定する。ステップＳ１５０において、フレームメモリ３１に記憶された埋め込み画像データのすべての水平ラインを、まだ、注目ラインとしていないと判定された場合、ステップＳ１４１に戻り、いままで注目ラインとされていた１ライン下の水平ラインが、新たに注目ラインとされ、以下、同様の処理が繰り返される。
【０３１１】
また、ステップＳ１５０において、フレームメモリ３１に記憶された埋め込み画像データのすべての水平ラインを、注目ラインとしたと判定された場合、即ち、フレームメモリ３１に記憶された１フレームの埋め込み画像データの各水平ライン（但し、ここでは、第１水平ラインを除く）に埋め込まれていた被埋め込みデータを復元するとともに、その埋め込み画像データを、元の画像データに復元した場合、復元部３２は、その復元した画像データを、フレームメモリ３１から読み出して出力させ、処理を終了する。
【０３１２】
なお、以上の復元処理は、フレームメモリ３１に記憶された埋め込み画像データの各フレームについて、繰り返し行われる。
【０３１３】
以上のように、水平ラインをローテーションすることにより被埋め込みデータが埋め込まれた埋め込み画像データについて、水平ラインのローテーションを行い、画像の相関性を利用して、水平ラインを元の位置に戻すようにしたので、オーバヘッドがなくても、埋め込み画像データを、元の画像データと被埋め込みデータに復元することができる。従って、その復元画像には、基本的に、被埋め込みデータを埋め込むことによる画質の劣化は生じない。
【０３１４】
なお、図３０の復元処理では、注目ラインと、基準ラインとの間の相関を表す相関値として、対応する画素どうしの差分絶対値の総和（差分絶対値和）を用いるようにしたが、その他、例えば、画素の差分の自乗和等を用いることも可能である。
【０３１５】
また、図２６の埋め込み処理では、１つの水平ラインを、被埋め込みデータにしたがってローテーションするようにしたため、１つの水平ラインには、その水平ラインを構成する画素数だけの範囲内の値の被埋め込みデータの埋め込みが可能である。但し、１つの水平ラインを構成する画素数より大きい範囲内の値の被埋め込みデータの埋め込みであっても、例えば、２つの水平ラインなどの複数の水平ラインを、被埋め込みデータにしたがってローテーションするようにすることで行うことが可能である。
【０３１６】
ところで、上述した図２６のラインローテーション方式による埋め込み処理では、埋め込み対象データとしての画像データの水平方向に並ぶ画素で構成される水平ラインを、水平方向にローテーションすることにより、被埋め込みデータの埋め込みを行うようにしたが、被埋め込みデータの埋め込みは、その他、例えば、画像データの垂直方向に並ぶ画素で構成される垂直ラインを、垂直方向にローテーションしたり、あるいは、斜め方向に並ぶ画素で構成されるラインを、その斜め方向にローテーションすることなどによって行うことも可能である。
【０３１７】
また、ラインローテーション方式による場合には、水平ラインまたは垂直ラインのうちのいずれか一方をローテーションすることにより、被埋め込みデータを埋め込み、その後、水平ラインまたは垂直ラインのうちの他方をローテーションすることにより、被埋め込みデータを、さらに埋め込むことが可能である。
【０３１８】
即ち、例えば、図３１Ａに示すように、ラインローテーション方式による埋め込み処理では、埋め込み対象データとしての画像データの水平ラインを、所定の被埋め込みデータ（以下、適宜、第１の被埋め込みデータという）に対応してローテーションすることにより、その第１の被埋め込みデータを埋め込み、さらに、その結果生成される埋め込み符号化データ（以下、適宜、第１の埋め込み符号化データという）としての画像データの垂直ラインを、別の被埋め込みデータ（以下、適宜、第２の被埋め込みデータという）に対応してローテーションすることにより、その第２の被埋め込みデータを埋め込むことが可能である。
【０３１９】
いま、第１の埋め込み符号化データとしての画像データの垂直ラインをローテーションすることにより、第２の被埋め込みデータを埋め込んで生成される埋め込み符号化データを、第２の埋め込み符号化データというものとすると、第２の埋め込み符号化データには、元の画像データの水平ラインだけでなく、垂直ラインもローテーションすることによって、被埋め込みデータが埋め込まれているから、図２６の埋め込み処理で説明したように、画像データの水平ラインだけをローテーションする場合に比較して、より多くの被埋め込みデータを埋め込むことができる。
【０３２０】
即ち、例えば、埋め込み対象データとしての画像データの水平ラインと垂直ラインのライン数が同一であるとした場合には、画像データの水平ラインと垂直ラインの両方をローテーションして生成される第２の埋め込み符号化データには、画像データの水平ラインだけをローテーションして生成される第１の埋め込み符号化データにおける場合の２倍のデータ量の被埋め込みデータを埋め込むことができる。
【０３２１】
以上のような第２の埋め込み符号化データを、埋め込み対象データ、並びに第１および第２の被埋め込みデータに復元する復元処理は、やはり、画像の相関性を利用して、次のように行うことができる。
【０３２２】
即ち、埋め込み対象データとしての画像データの水平ラインをローテーションすると、その画像データにおける、水平ラインと直交する空間方向である垂直方向の相関性が破壊される。従って、画像データの水平ラインのみをローテーションすることにより生成される埋め込み符号化データについては、その水平ラインを、垂直方向の相関性を元に戻すように（図３０の復元処理においては、基準ラインとの間の相関値が最大になるように）ローテーションすることで、元の画像データに復元することができる。
【０３２３】
画像データの垂直ラインのみをローテーションすることにより生成される埋め込み符号化データについても、上述の、水平ラインをローテーションすることにより生成される埋め込み符号化データにおける場合と同様にして、元の画像データに復元することができる。
【０３２４】
即ち、埋め込み対象データとしての画像データの垂直ラインをローテーションすると、その画像データにおける、垂直ラインと直交する空間方向である水平方向の相関性が破壊される。従って、画像データの垂直ラインをローテーションすることにより生成される埋め込み符号化データについては、その垂直ラインを、水平方向の相関性を元に戻すようにローテーションすることで、元の画像データに復元することができる。
【０３２５】
以上から、画像データの水平ラインをローテーションすると、垂直方向の相関性は破壊されるが、水平方向の相関性は影響を受けない。また、画像データの垂直ラインをローテーションすると、水平方向の相関性は破壊されるが、垂直方向の相関性は影響を受けない。そして、画像データの水平ラインをローテーションすることにより生成される埋め込み符号化データは、垂直方向の相関性だけを利用して、元の画像データに復元することができ、画像データの垂直ラインをローテーションすることにより生成される埋め込み符号化データは、水平方向の相関性だけを利用して、元の画像データに復元することができる。
【０３２６】
従って、図３１Ａに示したように、埋め込み対象データとしての画像データの水平ラインを、第１の被埋め込みデータに対応してローテーションすることにより、第１の埋め込み符号化データを生成し、その第１の埋め込み符号化データとしての画像データの垂直ラインを、第２の被埋め込みデータに対応してローテーションすることにより生成された第２の埋め込み符号化データは、図３１Ｂに示すように、その垂直ラインを、水平方向の相関性を元に戻すようにローテーションすることで、第１の埋め込み符号化データと第２の被埋め込みデータに復元することができる。そして、第１の埋め込み符号化データは、その水平ラインを、垂直方向の相関性を元に戻すようにローテーションすることで、埋め込み対象データと第１の被埋め込みデータに復元することができる。即ち、第２の埋め込み符号化データは、元の埋め込み対象データと、第１および第２の被埋め込みデータに復元することができる。
【０３２７】
水平ラインのローテーションによる埋め込みと、垂直ラインのローテーションによる埋め込みとは、いずれも、被埋め込みデータに対応してラインをローテーションするという操作ルールにしたがって、埋め込み対象データを操作するラインローテーション方式による埋め込みであるが、水平ラインのローテーションは、垂直方向の相関にのみ影響を与え、垂直ラインのローテーションは、水平方向の相関にのみ影響を与えるものであるから、水平ラインのローテーションと、垂直ラインのローテーションとは、いわば、独立した操作または直交した操作であるということができる。このように、水平ラインのローテーションと、垂直ラインのローテーションとが、独立した操作であるがゆえに、画像データの水平ラインを第１の被埋め込みデータに対応してローテーションし、さらに、垂直ラインを第２の被埋め込みデータに対応してローテーションして得られる第２の埋め込み符号化データは、元の画像データと、第１および第２の被埋め込みデータに復元することができる。
【０３２８】
ところで、第２の埋め込み符号化データは、埋め込み対象データとしての画像データの水平ラインと垂直ラインがローテーションされたものであるから、画像データの、いわば空間的な相関性が、すべての空間方向について破壊されたものとなっている。
【０３２９】
従って、第２の埋め込み符号化データとしての画像データに対して、ラインローテーション方式による場合は勿論、その他の操作ルールにしたがって操作を行う、例えば、上述の画素スワップ方式や、ビットプレーンスワップ方式によって、さらに被埋め込みデータの埋め込みを行うと、対応する方式による復元処理では、第２の埋め込み符号化データも、その第２の埋め込み符号化データに埋め込んだ被埋め込みデータも復元することが困難となる。
【０３３０】
即ち、第２の埋め込み符号化データとしての画像データに対して、ラインローテーション方式によって、さらに別の被埋め込みデータ（以下、適宜、第３の被埋め込みデータという）を埋め込んだ場合、その第３の被埋め込みデータは、第２の埋め込み符号化データの水平ラインまたは垂直ラインを、第３の被埋め込みデータに対応してローテーションすることにより埋め込まれる。
【０３３１】
しかしながら、この第３の被埋め込みデータに対応する水平ラインまたは垂直ラインのローテーションは、第１の被埋め込みデータの埋め込みを行うための水平ラインのローテーション、または第２の被埋め込みデータの埋め込みを行うための垂直ラインのローテーションと重複する操作であるから、水平ラインのローテーションが、第１または第３の被埋め込みデータのうちのいずれの埋め込みによるものであるのかを区別することができず、あるいは、垂直ラインのローテーションが、第２または第３の被埋め込みデータのうちのいずれの埋め込みによるものであるのかを区別することができず、このため、第２の埋め込み符号化データも、第３の被埋め込みデータも復元することはできない。
【０３３２】
また、画素スワップ方式や、ビットプレーンスワップ方式による復号処理では、上述したことから、空間的に近接する画素との相関を利用して、元の画像データとそこに埋め込まれていた被埋め込みデータの復元が行われる。
【０３３３】
しかしながら、画第２の埋め込み符号化データとしての画像データについては、その空間方向の相関性が、すべての方向について破壊されているため、そのような第２の埋め込み符号化データに、画素スワップ方式や、ビットプレーンスワップ方式によって、第３の被埋め込みデータを埋め込むことは、エネルギの偏りのない、例えば、ノイズを埋め込み対象データとして、画素スワップ方式や、ビットプレーンスワップ方式によって、被埋め込みデータを埋め込むことと等価である。
【０３３４】
従って、そのような埋め込みにより得られた埋め込み符号化データについては、画像データ（情報としての価値がある画像データ）が有する空間方向の相関性を利用することができず、画素スワップ方式や、ビットプレーンスワップ方式による復元処理によっては、元の埋め込み対象データと被埋め込みデータを復元することはできない。
【０３３５】
以上から、空間方向の相関性がすべての方向について破壊されている第２の埋め込み符号化データに対して、画素スワップ方式や、ビットプレーンスワップ方式によって、第３の被埋め込みデータを埋め込み、埋め込み符号化データを生成した場合には、その埋め込み符号化データ（以下、適宜、第３の埋め込み符号化データという）については、第２の埋め込み符号化データとしての画像データの相関性を利用することによっては、第２の埋め込み符号化データと第３の被埋め込みデータを復元することはできない。
【０３３６】
ところで、ラインローテーション方式による埋め込み処理によって生成された第２の埋め込み符号化データに対して、さらに、同一のラインローテーション方式によって、第３の被埋め込みデータを埋め込んだ場合には、上述したように、第２の埋め込み符号化データを生成するときに行われる操作と、第３の埋め込み符号化データを生成するときに行われる操作とが重複することがあるので、仮に、第１の埋め込み符号化データ（または、埋め込み対象データ）としての画像データを復元することができても、第１乃至第３の被埋め込みデータすべてを復元することは困難である。
【０３３７】
一方、ラインローテーション方式による埋め込み処理によって生成された第２の埋め込み符号化データに対して、さらに、ラインローテーション方式とは異なる、例えば、ビットプレーンスワップ方式等によって、第３の被埋め込みデータを埋め込んだ場合には、第２の埋め込み符号化データを生成するときに行われる操作と、第３の埋め込み符号化データを生成するときに行われる操作とが重複することはない。
【０３３８】
従って、この場合は、仮に、第１の埋め込み符号化データ（または、埋め込み対象データ）としての画像データを復元することができれば、第１乃至第３の被埋め込みデータも、すべて復元することができる。
【０３３９】
即ち、仮に、第３の埋め込み符号化データから、第１の埋め込み符号化データを復元することができれば、第１の埋め込み符号化データから第３の埋め込み符号化データを生成する操作が特定される。そして、第１の埋め込み符号化データから第３の埋め込み符号化データを生成する操作は、第１の埋め込み符号化データに対して第２の被埋め込みデータを埋め込む操作と、その操作によって得られる第２の埋め込み符号化データに対して第３の被埋め込みデータを埋め込む操作とからなり、さらに、いまの場合、第２の被埋め込みデータを埋め込む操作と、第３の被埋め込みデータを埋め込む操作とは、重複することがない。
【０３４０】
従って、第１の埋め込み符号化データから第３の埋め込み符号化データを生成する操作が特定されれば、その操作に基づき、第２の埋め込み符号化データに対して第３の被埋め込みデータを埋め込んだ操作を（第１の埋め込み符号化データに対して第２の被埋め込みデータを埋め込んだ操作も）特定することができる。
【０３４１】
そこで、図３２を参照して、第１の埋め込み符号化データから第３の埋め込み符号化データを生成する操作を特定し、さらに、第２の埋め込み符号化データに対して第３の被埋め込みデータを埋め込んだ操作を特定する方法について説明する。
【０３４２】
なお、以下では、例えば、第１の埋め込み符号化データは、埋め込み対象データとしての画像データの水平ラインを、第１の被埋め込みデータに対応してローテーションして生成され、第２の埋め込み符号化データは、第１の埋め込み符号化データとしての画像データの垂直ラインを、第２の被埋め込みデータに対応してローテーションして生成されたものとする。さらに、第３の埋め込み符号化データは、第２の埋め込み符号化データとしての画像データを、第３の被埋め込みデータに対応してビットプレーンスワップして生成されたものとする。
【０３４３】
また、図２１乃至図２５の実施の形態においては、ビットプレーンとして、４×４画素の画像ブロックを構成する画素群のビットプレーンを採用したが、以下では、例えば、１つの垂直ラインを構成する画素群のビットプレーンを採用するものとする。
【０３４４】
即ち、以下においては、ビットプレーンスワップ方式による埋め込み処理および復元処理では、１つの垂直ラインを、１つの画像ブロックとして、垂直ラインを構成する各画素の画素値を表すビット列の各ビットごとのビットプレーンがビットプレーンスワップされるものとする。但し、ビットプレーンスワップの対象となる画像ブロックは、垂直ラインに限定されるものではない。
【０３４５】
この場合、埋め込み対象データとしての画像データに対して、第１乃至第３の被埋め込みデータを埋め込む埋め込み処理は、図３２Ａに示すように行われる。
【０３４６】
即ち、まず、図３１Ａで説明したように、埋め込み対象データとしての画像データの水平ラインが、第１の被埋め込みデータに対応してローテーションされることにより、埋め込み対象データに対して第１の被埋め込みデータを埋め込んだ第１の埋め込み符号化データが生成され、さらに、その第１の埋め込み符号化データとしての画像データの垂直ラインが、第２の被埋め込みデータに対応してローテーションされることにより、第１の埋め込み符号化データに対して第２の被埋め込みデータを埋め込んだ第２の埋め込み符号化データが生成される。
【０３４７】
そして、図３２Ａに示すように、第２の埋め込み符号化データとしての画像データの各垂直ラインを画像ブロックとして、各画像ブロックのビットプレーンを、第３の被埋め込みデータに対応してビットプレーンスワップすることにより、第２の埋め込み符号化データに対して第３の被埋め込みデータを埋め込んだ第３の埋め込み符号化データが生成される。
【０３４８】
ここで、第２の埋め込み符号化データとしての画像データにおいて、ある垂直ラインが、元の位置（第１の埋め込み符号化データとしての画像データにおける元の位置）にあるとして、その元の位置にある垂直ラインを基準ラインとするとともに、その基準ラインの右隣の垂直ラインを注目ラインとして、注目ラインを元の位置に戻すことを考えると、注目ラインは、図２９および図３０で説明した場合と同様に、ラインローテーション方式による復元処理を行うことによって、元の位置に戻すことができる。
【０３４９】
即ち、注目ラインを、ローテーション量を変えながら、垂直方向にローテーションし、各ローテーション量に対して、基準ラインとの間の相関値を計算する。そして、その相関値を最大にするローテーション量だけローテーションした位置が、注目ラインの元の位置ということになる。
【０３５０】
ところで、上述のようにして、注目ラインについて求められる相関値は、その注目ラインのローテーション量に対して計算されるものであるから、ローテーション量を引数とする関数になっている。
【０３５１】
いま、この相関値を表す関数を、相関値関数というものとし、第２の埋め込み符号化データの、左からＮ番目の垂直ライン（第Ｎ垂直ライン）を注目ラインとして、その注目ラインについて、相関値関数を描くと、その相関値関数は、例えば、図３２Ｂに示すようになる。なお、図３２においては（後述する図３３および図４１においても同様）、相関値関数として、各ローテーション量に対する相関値そのものを表す関数ではなく、相関値の逆数を表す関数を示してある。
【０３５２】
図３２Ｂでは、相関値関数は、その関数値が最小になるローテーション量の付近で、急峻な凹部が現れるものとなっている。なお、図３２Ｂの相関値関数は、上述したように、相関値の逆数を表す関数であり、その関数値を最小にするローテーション量は、相関値を最大にするローテーション量であるから、注目ラインを元の位置に戻すローテーション量（決定ローテーション量）である。従って、相関値関数を、相関値そのものを表す関数とすれば、相関値関数は、急峻な凸部が現れるものとなり、その関数値を最大にするローテーション量が、決定ローテーション量となる。
【０３５３】
第２の埋め込み符号化データとしての画像データにおいて、注目ラインの相関値関数は、図３２Ｂに示したように、急峻な凹部を有するという特徴を有するものとなるが、このような特徴は、第２の埋め込み符号化データに第２の被埋め込みデータが埋め込まれる前の画像データ、つまり、第１の埋め込み符号化データとしての画像データが有する水平方向の相関性（ここでは、注目ラインと基準ラインとの間の相関性）によるものである。
【０３５４】
即ち、第１の埋め込み符号化データは、元の画像データ（埋め込み対象データ）の水平ラインをローテーションしたものであり、上述したように、その垂直方向の相関性は破壊されているが、水平方向の相関性は破壊されておらず、元の画像データの水平方向の相関性を、そのまま有している。このため、第２の埋め込み符号化データの垂直ラインをローテーションした場合には、その垂直ラインが、第１の埋め込み符号化データにおける位置（元の位置）付近にローテーションされたときに、相関値が急激に増加する。このため、相関値関数は、図３２Ｂに示したように、急峻な凹部を有するものとなる。
【０３５５】
ここで、上述したように、相関値関数の関数値は、相関値の逆数なので、相関値で考えれば、相関値は、その値が最大になるローテーション量の付近で、急峻な凸部が現れるものとなる。
【０３５６】
一方、図３２Ａに示したように、第２の埋め込み符号化データとしての画像データの各垂直ラインを画像ブロックとして、各画像ブロックのビットプレーンが、第３の被埋め込みデータに対応してビットプレーンスワップされることにより、第２の埋め込み符号化データに対して第３の被埋め込みデータが埋め込まれた第３の埋め込み符号化データについて、上述の第２の埋め込み符号化データにおける場合と同様に、第Ｎ垂直ラインを注目ラインとして、その注目ラインについて、その左隣の垂直ラインである基準ラインとの間の相関を表す相関値関数を描くと、その相関値関数は、例えば、図３２Ｃに示すようになる。
【０３５７】
図３２Ｃでは、相関値関数は、図３２Ｂの相関値関数のような、急峻な凹部が現れるという特徴を有しないものとなっている。
【０３５８】
このように、第３の埋め込み符号化データの垂直ラインについての相関値関数が、第２の埋め込み符号化データの垂直ラインについての相関値関数のように、急峻な凹部を有しないのは、次のような理由による。
【０３５９】
即ち、第３の埋め込み符号化データは、第２の埋め込み符号化データの垂直ラインを画像ブロックとして、その画像ブロックのビットプレーンをビットプレーンスワップしたものであり、このビットプレーンスワップによれば、画像データが有する空間方向の相関性は破壊される。そして、ビットプレーンスワップにより相関性が破壊されている画像データの相関性を元に戻すには、ビットプレーンを元の並びに戻すビットプレーンスワップを行う必要があり、垂直ラインを、どの位置にローテーションしたとしても、ビットプレーンスワップにより破壊されている相関性を元に戻すことはできない。
【０３６０】
このため、第３の埋め込み符号化データとしての画像データの垂直ラインについての基準ラインとの間の相関値は、その垂直ラインのローテーション量によっては、それほど大きく変化しないものとなる。従って、その相関値の逆数を表す関数である相関値関数は、図３２Ｃに示したように、急峻な凹部のない、図３２Ｂの場合に比較して平坦なものとなる。
【０３６１】
ところで、第３の埋め込み符号化データの、ある垂直ラインを注目ラインとし、さらに、その注目ラインを画像ブロックとして、そのビットプレーンスワップを行い、そのビットプレーンスワップ後の注目ラインについて相関値関数を求めた場合、仮に、ビットプレーンスワップにより、注目ラインのビットプレーンが、元の並び（第２の埋め込み符号化データにおける並び）に戻っていれば、その相関値関数は、図３２Ｂに示したように、急峻な凹部を有するものとなる。
【０３６２】
一方、注目ラインのビットプレーンが、元の並びに一致していなければ、その相関値関数は、ビットプレーンスワップを行わない場合と同様なもの、即ち、図３２Ｃに示したように、急峻な凹部のないものとなる。
【０３６３】
従って、第３の埋め込み符号化データの、ある垂直ラインを注目ラインとして、その注目ラインのビットプレーンを、所定のパターンでビットプレーンスワップし、その結果得られる垂直ライン（以下、適宜、仮復元垂直ラインという）の相関値関数を求めた場合に、その相関値関数が、急峻な凹部を有するものであるときには、その関数値を最小にするローテーション量だけ、仮復元垂直ラインをローテーションした位置が、その仮復元垂直ラインの元の位置であり、さらに、仮復元垂直ラインを構成するビットプレーンの並びが、元の並びであることになる。
【０３６４】
以上から、仮復元垂直ラインについて、急峻な凹部を有する相関値関数が得られれば、その仮復元垂直ラインが、注目ラインの復元結果となり、さらに、注目ラインから仮復元垂直ラインを得るときの、注目ラインのビットプレーンのビットプレーンスワップのパターン（以下、適宜、スワップパターンという）に基づいて、注目ラインに埋め込まれた第３の被埋め込みデータを復元することができる。即ち、図３２Ｄに示すように、第３の埋め込み符号化データを、第２の埋め込み符号化データと第３の被埋め込みデータに復元することができる。
【０３６５】
ここで、図３２Ｂおよび図３２Ｃに示した相関値関数は、模式的なものであるが、自然画が表示された実際の画像データについて相関値関数を求めると、その相関値関数は、例えば、図３３に示すようになる。
【０３６６】
即ち、図３３は、１９２０×１０３５画素で構成される画像データのＹ成分のみを対象に、水平ラインのローテーションと垂直ラインのローテーションを行い、さらに、垂直ラインのビットプレーンスワップを行って得られた第３の埋め込み符号化データの、ある垂直ラインを注目ラインとして、その注目ラインについて求めた相関値関数を示している。
【０３６７】
図３３においてＦ1で示す相関値関数は、注目ラインのビットプレーンが元の並びとは異なる場合のものであり、急峻な凹部のない、比較的平坦なものとなっている。
【０３６８】
また、図３３においてＦ2で示す相関値関数は、注目ラインのビットプレーンが元の並びと一致している場合のものであり、非常に急峻な凹部を有するものとなっている。
【０３６９】
次に、図３４は、上述のように、ラインローテーション方式による埋め込みを行い、さらに、ビットプレーンスワップ方式による埋め込みを行うことにより、第３の埋め込み符号化データを生成する場合の、図３の埋め込み部２２の構成例を示している。
【０３７０】
図３４の実施の形態では、埋め込み部２２は、水平ラインローテーション埋め込み部４１、垂直ラインローテーション埋め込み部４２、およびビットプレーンスワップ埋め込み部４３で構成されている。
【０３７１】
水平ラインローテーション埋め込み部４１は、被埋め込みデータベース２から、１フレームの水平ラインをローテーションすることにより埋め込むことのできる分を被埋め込みデータを、第１の被埋め込みデータとして読み出す。さらに、水平ラインローテーション埋め込み部４１は、フレームメモリ２１に記憶された埋め込み対象データとしての１フレームの画像データ（原画像データ）の水平ラインを、順次、注目ラインとして、その注目ラインを、第１の被埋め込みデータに対応して（水平方向に）ローテーションすることにより、その注目ラインに対して第１の被埋め込みデータを埋め込む。そして、水平ラインローテーション埋め込み部４１は、埋め込み対象データとしての画像データのうちの、例えば、第１水平ラインを除くすべての水平ラインを注目ラインとして、第１の被埋め込みデータを埋め込み、これにより、第１の埋め込み符号化データを得ると、その第１の埋め込み符号化データを、垂直ラインローテーション埋め込み部４２に出力する。
【０３７２】
垂直ラインローテーション埋め込み部４２は、被埋め込みデータベース２から、１フレームの垂直ラインをローテーションすることにより埋め込むことのできる分の被埋め込みデータ（但し、第１の被埋め込みデータとしたものを除く）を、第２の被埋め込みデータとして読み出す。さらに、垂直ラインローテーション埋め込み部４２は、水平ラインローテーション埋め込み部４１から供給される第１の埋め込み符号化データとしての１フレームの画像データの垂直ラインを、順次、注目ラインとして、その注目ラインを、第２の被埋め込みデータに対応して（垂直方向に）ローテーションすることにより、その注目ラインに対して第２の被埋め込みデータを埋め込む。そして、垂直ラインローテーション埋め込み部４２は、第１の埋め込み符号化データとしての画像データのうちの、例えば、第１垂直ラインを除くすべての垂直ラインを注目ラインとして、第２の被埋め込みデータを埋め込み、これにより、第２の埋め込み符号化データを得ると、その第２の埋め込み符号化データを、ビットプレーンスワップ埋め込み部４３に出力する。
【０３７３】
ビットプレーンスワップ埋め込み部４３は、被埋め込みデータベース２から、１フレームの垂直ラインをビットプレーンスワップすることにより埋め込むことのできる分の被埋め込みデータ（但し、第１および第２の被埋め込みデータとしたものを除く）を、第３の被埋め込みデータとして読み出す。さらに、ビットプレーンスワップ埋め込み部４３は、垂直ラインローテーション埋め込み部４２から供給される第２の埋め込み符号化データとしての１フレームの画像データの垂直ラインを、順次、注目ラインとして、その注目ラインを、第２の被埋め込みデータに対応して（レベル方向に）ビットプレーンスワップすることにより、その注目ラインに対して第３の被埋め込みデータを埋め込む。そして、ビットプレーンスワップ埋め込み部４３は、第２の埋め込み符号化データとしての画像データのうちの、例えば、第１垂直ラインを除くすべての垂直ラインを注目ラインとして、第３の被埋め込みデータを埋め込み、これにより、第３の埋め込み符号化データを得ると、その第３の埋め込み符号化データを、フレームメモリ２１に上書きする形で書き込む。
【０３７４】
次に、図３５のフローチャートを参照して、図３４の埋め込み部２２による埋め込み処理について説明する。
【０３７５】
まず最初に、ステップＳ１６１において、水平ラインローテーション埋め込み部４１は、フレームメモリ２１から埋め込み対象データとしての１フレームの画像データを読み出す。さらに、ステップＳ１６１では、水平ラインローテーション埋め込み部４１、垂直ラインローテーション部４２、ビットプレーンスワップ埋め込み部４３は、被埋め込みデータベース２から、第１乃至第３の被埋め込みデータそれぞれを読み出す。
【０３７６】
そして、ステップＳ１６２に進み、水平ラインローテーション埋め込み部４１は、フレームメモリ２１から読み出した埋め込み対象データとしての１フレームの画像データの水平ラインを、順次、注目ラインとして、その注目ラインを、第１の被埋め込みデータに対応してローテーションすることにより、その注目ラインに対して第１の被埋め込みデータを埋め込む。そして、水平ラインローテーション埋め込み部４１は、埋め込み対象データとしての画像データのうちの、第１水平ラインを除くすべての水平ラインを注目ラインとして、第１の被埋め込みデータを埋め込むことにより、第１の埋め込み符号化データを生成すると、その第１の埋め込み符号化データを、垂直ラインローテーション埋め込み部４２に出力して、ステップＳ１６３に進む。
【０３７７】
ステップＳ１６３では、垂直ラインローテーション埋め込み部４２が、水平ラインローテーション埋め込み部４１から供給される第１の埋め込み符号化データとしての１フレームの画像データの垂直ラインを、順次、注目ラインとして、その注目ラインを、第２の被埋め込みデータに対応してローテーションすることにより、その注目ラインに対して第２の被埋め込みデータを埋め込む。そして、垂直ラインローテーション埋め込み部４２は、第１の埋め込み符号化データとしての画像データのうちの、第１垂直ラインを除くすべての垂直ラインを注目ラインとして、第２の被埋め込みデータを埋め込むことにより、第２の埋め込み符号化データを生成すると、その第２の埋め込み符号化データを、ビットプレーンスワップ埋め込み部４３に出力して、ステップＳ１６４に進む。
【０３７８】
ステップＳ１６４では、ビットプレーンスワップ埋め込み部４３が、垂直ラインローテーション埋め込み部４２から供給される第２の埋め込み符号化データとしての１フレームの画像データの垂直ラインを、順次、注目ラインとして、その注目ラインを、第２の被埋め込みデータに対応してビットプレーンスワップすることにより、その注目ラインに対して第３の被埋め込みデータを埋め込む。
【０３７９】
即ち、これにより、注目ラインを構成する各画素の画素値が、例えば、図３６Ａに示すようなものである場合には、その注目ラインの各画素の画素値は、第３の被埋め込みデータに対応するビットプレーンスワップにより、図３６Ｂに示すようなものに変更される。
【０３８０】
ここで、図３６においては（後述する図４１においても同様）、画素値が８ビットであるとして、注目ラインを構成する各画素の画素値の各ビットを、左側を上位ビットとするとともに、右側を下位ビットとして、正方形で表してある。また、図３６において画素値の各ビットを表す正方形のうち、影を付してあるものは、値が０であることを、影を付していないものは、値が１であることを、それぞれ表す。
【０３８１】
図３５に戻り、ステップＳ１６４において、ビットプレーンスワップ埋め込み部４３は、第２の埋め込み符号化データとしての画像データのすべての垂直ラインを注目ラインとして、第３の被埋め込みデータを埋め込むことにより、第３の埋め込み符号化データを生成すると、その第３の埋め込み符号化データを、フレームメモリ２１に上書きする形で書き込む。
【０３８２】
以上のようにして、フレームメモリ２１に記憶された第３の埋め込み符号化データは、フレームメモリ２１から読み出され、以下、フレームメモリ２１に記憶された次のフレームの画像データを、埋め込み対象データとして、図３５の処理が繰り返される。
【０３８３】
以上のように、ラインローテーション方式により第１および第２の被埋め込みデータを埋め込み、さらに、ビットプレーンスワップ方式により第３の被埋め込みデータを埋め込む場合には、ラインローテーション方式だけ、またはビットプレーンスワップ方式だけを採用する場合に比較して、より多くの被埋め込みデータを埋め込むことができる。
【０３８４】
次に、図３７は、図３４のビットプレーンスワップ埋め込み部４３の構成例を示している。
【０３８５】
入力データ保持部５１は、垂直ラインローテーション埋め込み部４２（図３４９から供給される第２の埋め込み符号化データを一時記憶する。
【０３８６】
注目ライン選択部５２は、入力データ保持部５１に記憶された第２の埋め込み符号化データとしての１フレームの画像データを構成する垂直ラインから、注目ラインとするものを選択し、スワップ情報取得部５４と、ビットプレーンスワップ部５５に供給する。
【０３８７】
被埋め込みデータ保持部５３は、被埋め込みデータベース２（図３４）から読み出された第３の被埋め込みデータを一時記憶する。
【０３８８】
スワップ情報取得部５４は、被埋め込みデータ保持部５３から、注目ラインをビットプレーンスワップすることにより埋め込むことのできるデータ量だけの第３の被埋め込みデータを読み出し、その第３の被埋め込みデータに対応して、注目ラインのビットスワップの仕方（スワップパターン）を表すスワップ情報を生成する。即ち、例えば、画素値が８ビットである場合には、上述したように、４０３２０通りのスワップパターンが存在するが、注目ラインをビットプレーンスワップするのに、どのスワップパターンを採用するかは、埋め込む第３の被埋め込みデータの値に対応して、一意に、あらかじめ決定されている。そして、スワップ情報取得部５４は、被埋め込みデータ保持部５３から読み出した第３の被埋め込みデータに一意に対応付けられているスワップパターンを表すスワップ情報を生成し、ビットプレーンスワップ部５５に供給する。
【０３８９】
ここで、本実施の形態では、注目ラインは、１フレームの垂直ラインであるから、比較的多数の画素で構成される。従って、そのような多数の画素の画素値のあるビットで構成されるビットプレーンが、他のビットで構成されるビットプレーンと同一であることは、確率的に、極めて稀である。
【０３９０】
しかしながら、極めて稀であっても、注目ラインのあるビットのビットプレーンが、他のビットのビットプレーンと一致する場合があり得る。
【０３９１】
いま、注目ラインの第ｉビット（最下位ビットからｉビット目）のビットプレーンと、第ｊ（≠ｉ）ビットのビットプレーンとが同一構成のビットプレーンとなっているとすると、第ｉビットのビットプレーンと第ｊビットのビットプレーンとを入れ替えるビットプレーンスワップを行っても、注目ラインのビットプレーンの並びは、ビットプレーンスワップの前と後とで変化しない（実質的に変化しない）。
【０３９２】
従って、この場合、第ｉビットのビットプレーンと第ｊビットのビットプレーンとを入れ替えるスワップパターンによるビットプレーンスワップと、入れ替えないスワップパターンによるビットプレーンスワップとは、そのビットプレーンスワップ結果からは区別することができない。
【０３９３】
そこで、スワップ情報取得部５４は、そのような区別することのできない２以上のビットプレーンスワップのスワップパターンについては、そのうちの１つ、即ち、例えば、同一のビットプレーンどうしの入れ替えを行わないスワップパターンのみを有効にし、他のスワップパターンを無効とする。
【０３９４】
その結果、スワップ情報取得部５４では、上述の例で言えば、第ｉビットと第ｊビットのビットプレーンを入れ替えるスワップパターンを表すスワップ情報は、生成されなくなる。
【０３９５】
なお、この場合、スワップパターンの総数は、無効とされるスワップパターンが存在しない場合に比較して少なくなるため、注目ラインに埋め込むことのできる第３の被埋め込みデータのデータ量（ビット数）も減少することになる。
【０３９６】
また、スワップ情報取得部５４は、注目ラインについて、区別することのできないスワップパターンが存在するかどうかは、注目ライン選択部５２から供給される注目ラインの各ビットのビットプレーンを参照することにより判定する。
【０３９７】
ビットプレーンスワップ部５５は、注目ライン選択部５２から供給される注目ラインのビットプレーンを、スワップ情報取得部５４から供給されるスワップ情報が表すスワップパターンにしたがってビットプレーンスワップすることにより、そのスワップ情報に対応する第３の被埋め込みデータを埋め込む。そして、ビットプレーンスワップ部５５は、第２の埋め込み符号化データとしての画像データを構成する垂直ラインすべてに対して、第３の被埋め込みデータを埋め込んだデータ、即ち、第３の埋め込み符号化データを生成すると、その第３の埋め込み符号化データを、フレームメモリ２１（図３４）に出力して書き込む。
【０３９８】
次に、図３８のフローチャートを参照して、図３７のビットプレーンスワップ埋め込み部４３の処理について説明する。なお、この図３８の処理は、ビットプレーンスワップ埋め込み部４３が、図３５のステップＳ１６４において行う処理である。
【０３９９】
ビットプレーンスワップ埋め込み部４３では、まず最初に、ステップＳ１７１において、入力データ保持部５１が、垂直ラインローテーション埋め込み部４２（図３４）から供給された第２の埋め込み符号化データを一時記憶する。さらに、ステップＳ１７１では、被埋め込みデータ保持部５３が、被埋め込みデータベース２（図３４）から読み出された第３の被埋め込みデータを記憶する。
【０４００】
そして、ステップＳ１７２に進み、注目ライン選択部５２が、入力データ保持部５１に記憶された第２の埋め込み符号化データとしての１フレームの画像データを構成する垂直ラインから、注目ラインとするものを選択する。即ち、注目ライン選択部５２は、例えば、第２の埋め込み符号化データとしての１フレームの画像データの第１垂直ラインから、順次、右方向の垂直ラインを、注目ラインとして選択するようになっており、ステップＳ１７２では、注目ライン選択部５２は、第２の埋め込み符号化データとしての１フレームの画像データを構成する垂直ラインのうち、まだ、注目ラインとしていない、より左方向にある垂直ライン（いままで注目ラインとされていた垂直ラインの右隣の垂直ライン）を、注目ラインとして選択する。この注目ラインは、注目ライン選択部５２から、スワップ情報取得部５４およびビットプレーンスワップ部５５に供給される。
【０４０１】
その後、ステップＳ１７３に進み、スワップ情報取得部５４は、被埋め込みデータ保持部５３から、注目ラインをビットプレーンスワップすることにより埋め込むことのできるデータ量だけの第３の被埋め込みデータを読み出し、その第３の被埋め込みデータに対応したスワップパターンを表すスワップ情報を生成する。
【０４０２】
スワップ情報取得部５４が生成したスワップ情報は、ビットプレーンスワップ部５５に供給され、ビットプレーンスワップ部５５は、スワップ情報を受信すると、ステップＳ１７３からＳ１７４に進み、注目ライン選択部５２から供給された注目ラインのビットプレーンを、スワップ情報取得部５４から供給されたスワップ情報が表すスワップパターンにしたがってビットプレーンスワップすることにより、そのスワップ情報に対応する第３の被埋め込みデータを埋め込む。
【０４０３】
そして、ステップＳ１７５に進み、注目ライン選択部５２は、入力データ保持部５１に記憶された第２の埋め込み符号化データとしての１フレームの画像データのすべての垂直ラインを注目ラインとしたかどうかを判定し、まだ、第２の埋め込み符号化データとしての１フレームの画像データのすべての垂直ラインを注目ラインとしていないと判定した場合、ステップＳ１７２に戻る。この場合、ステップＳ１７２では、注目ライン選択部５２において、上述したように、第２の埋め込み符号化データとしての１フレームの画像データの垂直ラインのうち、まだ、注目ラインとされていないものが、新たに注目ラインとして選択され、以下、同様の処理が繰り返される。
【０４０４】
また、ステップＳ１７５において、第２の埋め込み符号化データとしての１フレームの画像データのすべての垂直ラインを注目ラインとしたと判定された場合、ステップＳ１７６に進み、ビットプレーンスワップ部５５は、第２の埋め込み符号化データとしての１フレームの画像データを構成する垂直ラインすべてに対して、第３の被埋め込みデータを埋め込んだデータ、即ち、第３の埋め込み符号化データを、フレームメモリ２１（図３４）に出力して上書きし、処理を終了する。
【０４０５】
次に、図３９は、図３４の埋め込み部２２において生成される第３の埋め込み符号化データを、埋め込み対象データとしての画像データと、そこに埋め込まれていた第１乃至第３の被埋め込みデータに復元する場合の、図４の復元部３２の構成例を示している。
【０４０６】
図３９の実施の形態では、復元部３２は、ビットプレーンスワップ戻し部６１、垂直ラインローテーション戻し部６２、および水平ラインローテーション戻し部６３から構成されている。
【０４０７】
ビットプレーンスワップ戻し部６１は、フレームメモリ３１に記憶された第３の埋め込み符号化データを読み出し、その第３の埋め込み符号化データを、図３２で説明したようにして、第２の埋め込み符号化データと、第３の被埋め込みデータに復元する。
【０４０８】
即ち、ビットプレーンスワップ戻し部６１は、第３の埋め込み符号化データとしての１フレームの画像データの垂直ラインを、順次、注目ラインとし、その注目ラインをビットプレーンスワップ方式にしたがって操作し、さらに、ラインローテーション方式にしたがって操作する。
【０４０９】
具体的には、ビットプレーンスワップ戻し部６１は、注目ラインをビットプレーンスワップすることにより、そのビットプレーンの全通りの並びを求める。また、ビットプレーンスワップ戻し部６１は、各並びのビットプレーンで構成される注目ラインをローテーションすることにより、全ローテーション量でローテーションされた注目ラインを求める。そして、ビットプレーンスワップ戻し部６１は、各並びのビットプレーンで構成される注目ラインについて、各ローテーション量に対する基準ラインとの相関を表す相関値を求め、その相関値の逆数のローテーション量に対する変化を表す相関値関数を求める。
【０４１０】
その後、ビットプレーンスワップ戻し部６１は、各並びのビットプレーンで構成される注目ラインについて求められた相関値関数の中から、上述したような急峻な凹部を有するものを求め、その相関値関数に対応するビットプレーンの並びに、注目ラインのビットプレーンをビットプレーンスワップするスワップパターンを検出する。そして、ビットプレーンスワップ戻し部６１は、注目ラインのビットプレーンを、検出したスワップパターンにしたがってビットプレーンスワップすることにより、第３の埋め込み符号化データとしての注目ラインを、第２の埋め込み符号化データとしての画像データの垂直ラインに復元し、さらに、検出したスワップパターンに基づいて、注目ラインに埋め込まれている第３の被埋め込みデータを復元する。
【０４１１】
ビットプレーンスワップ戻し部６１は、第３の埋め込み符号化データとしての１フレームの画像データの垂直ラインすべてを注目ラインとして、上述の処理を行い、これにより、第２の埋め込み符号化データとしての１フレームの画像データと、そこに埋め込まれていた第３の被埋め込みデータを復元する。そして、ビットプレーンスワップ戻し部６１は、復元した第２の埋め込み符号化データを、垂直ラインローテーション戻し部６２に供給する。
【０４１２】
垂直ラインローテーション戻し部６２と水平ラインローテーション戻し部６３は、ビットプレーンスワップ戻し部６１から供給される第２の埋め込み符号化データを、図３１Ｂで説明したようなラインローテーション方式による復元処理によって、埋め込み対象データと、第１および第２の被埋め込みデータに復元する。
【０４１３】
即ち、垂直ラインローテーション戻し部６２は、ビットプレーンスワップ戻し部６１から供給される第２の埋め込み符号化データとしての画像データの垂直ラインを、順次、注目ラインとして、図３１Ｂで説明したようなラインローテーション方式による復元処理を行い、これにより、第１の埋め込み符号化データと、そこに埋め込まれていた第２の被埋め込みデータを復元する。そして、垂直ラインローテーション戻し部６２は、復元した第１の埋め込み符号化データを、水平ラインローテーション戻し部６３に供給する。
【０４１４】
水平ラインローテーション戻し部６３は、垂直ラインローテーション戻し部６２から供給される第１の埋め込み符号化データとしての画像データの水平ラインを、順次、注目ラインとして、図３１Ｂで説明したようなラインローテーション方式による復元処理を行い、これにより、埋め込み対象データとしての画像データと、そこに埋め込まれていた第１の被埋め込みデータを復元する。そして、水平ラインローテーション戻し部６３は、復元した埋め込み対象データを、フレームメモリ３１に上書きする形で書き込む。
【０４１５】
次に、図４０のフローチャートを参照して、図３９の復元部３２による復元処理について説明する。
【０４１６】
ビットプレーンスワップ戻し部６１は、まず最初に、ステップＳ１８１において、フレームメモリ３１から第３の埋め込み符号化データとしての１フレームの画像データを読み出し、ステップＳ１８２に進む。
【０４１７】
ステップＳ１８２では、ビットプレーンスワップ戻し部６１は、フレームメモリ３１から読み出した第３の埋め込み符号化データを、第２の埋め込み符号化データと、第３の被埋め込みデータに復元する。
【０４１８】
即ち、図４１Ａに示すように、ビットプレーンスワップ戻し部６１は、注目ラインをビットプレーンスワップし、さらに、各並びのビットプレーンで構成される注目ラインをローテーションしながら、注目ラインについて、その左隣の垂直ラインである基準ラインとの間の相関を表す相関値関数（ここでは、相関値の逆数を、その関数値とする相関値関数）を求める。そして、ビットプレーンスワップ戻し部６１は、各並びのビットプレーンで構成される注目ラインについて求めた相関値関数の中から、図４１Ｂに示すような急峻な凹部を有するものを求め、その相関値関数に対応するビットプレーンの並びに、注目ラインのビットプレーンをビットプレーンスワップするスワップパターンを検出する。その後、ビットプレーンスワップ戻し部６１は、注目ラインのビットプレーンを、検出したスワップパターンにしたがってビットプレーンスワップすることにより、第３の埋め込み符号化データとしての注目ラインを、第２の埋め込み符号化データとしての画像データの垂直ラインに復元し、さらに、検出したスワップパターンに基づいて、注目ラインに埋め込まれている第３の被埋め込みデータを復元する。
【０４１９】
ビットプレーンスワップ戻し部６１は、第３の埋め込み符号化データとしての１フレームの画像データの垂直ラインすべてを注目ラインとして、上述の処理を行い、これにより、第２の埋め込み符号化データとしての１フレームの画像データと、そこに埋め込まれていた第３の被埋め込みデータを復元すると、その復元した第２の埋め込み符号化データを、垂直ラインローテーション戻し部６２に供給し、ステップＳ１８３に進む。
【０４２０】
ステップＳ１８３では、垂直ラインローテーション戻し部６２は、ビットプレーンスワップ戻し部６１から供給された第２の埋め込み符号化データとしての画像データの垂直ラインを、順次、注目ラインとして、図３１Ｂで説明したようなラインローテーション方式による復元処理を行い、これにより、第１の埋め込み符号化データと、そこに埋め込まれていた第２の被埋め込みデータを復元する。そして、垂直ラインローテーション戻し部６２は、復元した第１の埋め込み符号化データを、水平ラインローテーション戻し部６３に供給し、ステップＳ１８４に進む。
【０４２１】
ステップＳ１８４では、水平ラインローテーション戻し部６３は、垂直ラインローテーション戻し部６２から供給された第１の埋め込み符号化データとしての画像データの水平ラインを、順次、注目ラインとして、図３１Ｂで説明したようなラインローテーション方式による復元処理を行い、これにより、埋め込み対象データとしての画像データと、そこに埋め込まれていた第１の被埋め込みデータを復元する。
【０４２２】
そして、ステップＳ１８５に進み、水平ラインローテーション戻し部６３は、復元した埋め込み対象データを、フレームメモリ３１に出力し、上書きする形で書き込む。さらに、ステップＳ１８５では、ビットプレーンスワップ戻し部６１、垂直ラインローテーション戻し部６２、水平ラインローテーション戻し部６３が、復元した第１乃至第３の被埋め込みデータをそれぞれ出力し、処理を終了する。
【０４２３】
以上のようにして、フレームメモリ３１に書き込まれた埋め込み対象データは、フレームメモリ３１から読み出され、以下、フレームメモリ３１に記憶された次のフレームの第３の埋め込み符号化データを対象として、図４０の処理が繰り返される。
【０４２４】
以上のように、ビットプレーンスワップ戻し部６１において、第３の埋め込み符号化データをビットプレーンスワップ方式にしたがって操作するとともに、ラインローテーション方式にしたがって操作し、その操作後のデータの相関値関数を利用して復元処理を行うようにしたので、第３の埋め込み符号化データを、第２の埋め込み符号化データと、そこに埋め込まれていた第３の被埋め込みデータに復元することができ、さらに、垂直ラインローテーション戻し部６２において、第２の埋め込み符号化データを、第１の埋め込み符号化データと、そこに埋め込まれていた第２の被埋め込みデータに復元し、水平ラインローテーション部６３において、第１の埋め込み符号化データを、埋め込み対象データと、そこに埋め込まれていた第１の被埋め込みデータに復元することができる。
【０４２５】
即ち、埋め込み対象データに対して、第１乃至第３の被埋め込みデータという多くのデータが埋め込まれている第３の埋め込み符号化データを、元の埋め込み対象データと、第１乃至第３の被埋め込みデータに復元することができる。
【０４２６】
次に、図４２は、図３９のビットプレーンスワップ戻し部３２の詳細構成例を示している。
【０４２７】
入力データ保持部７１は、フレームメモリ３１（図３９）から供給される第３の埋め込み符号化データとしての１フレームの画像データを一時記憶する。
【０４２８】
基準ライン選択部７２は、埋め込み符号化データ保持部８２に記憶された、既に復元された第２の埋め込み符号化データとしての画像データを構成する垂直ラインの中から、所定の垂直ラインを選択し、基準ラインとして読み出す。即ち、基準ライン選択部７２は、後述する注目ライン選択部７３において注目ラインとされた垂直ラインの左隣の、既に第２の埋め込み符号化データに復元されている垂直ラインを、基準ラインとして選択する。そして、基準ライン選択部７２は、基準ラインを、垂直ライン間相関値計算部７６に供給する。
【０４２９】
注目ライン選択部７３は、入力データ保持部７１に記憶された第３の埋め込み符号化データとしての画像データを構成する垂直ラインを、順次、注目ラインとして選択して読み出し、ビットプレーンスワップ部７４に供給する。ここで、注目ライン選択部７３は、例えば、第３の埋め込み符号化データとしての画像データのフレームの第１垂直ラインから、順次、右方向の垂直ラインを、注目ラインとして選択するようになっている。
【０４３０】
ビットプレーンスワップ部７４は、最適スワップ情報選択部８０から供給される最適スワップ情報に対応するスワップパターンにしたがい、注目ラインのビットプレーンをビットプレーンスワップし、そのビットプレーンスワップ後の注目ラインを、第２の埋め込み符号化データを構成する垂直ラインの復元結果として、埋め込み符号化データ保持部８２に供給する。また、ビットプレーンスワップ部７４は、仮スワップ情報決定部８１から供給される仮スワップ情報に対応するスワップパターンにしたがい、注目ラインのビットプレーンをビットプレーンスワップし、そのビットプレーンスワップ後の注目ラインを、上述の仮復元垂直ラインとして、ラインローテーション部７５に供給する。
【０４３１】
ラインローテーション部７５は、ビットプレーンスワップ部７４から供給される仮復元垂直ラインを、全通りのローテーション量でローテーションし、各ローテーション量でローテーションした仮復元垂直ライン（以下、適宜、ローテーションラインという）を、垂直ライン間相関値計算部７６に供給する。
【０４３２】
ここで、第３の埋め込み符号化データとしての画像データのフレームを構成する垂直ラインが、Ｎ画素で構成される場合には、ラインローテーション部７５は、０乃至Ｎ−１画素分のローテーション量それぞれでローテーションしたローテーションラインを求める。
【０４３３】
垂直ライン間相関値計算部７６は、ラインローテーション部７５から供給される各ローテーション量のローテーションラインと、基準ライン選択部７２から供給される基準ラインとの相関値を計算し、相関値保持部７７に供給する。即ち、垂直ライン間相関値計算部７６は、例えば、あるローテーション量のローテーションラインを構成する画素の画素値と、その画素に対応する基準ラインを構成する画素の画素値との差分絶対値を計算し、その総和（差分絶対値和）の逆数を求める。そして、垂直ライン間相関値計算部７６は、各ローテーション量のローテーションラインについて、上述の差分絶対値和の逆数を求め、各ローテーション量のローテーションラインの相関値（基準ラインとの間の相関値）として、相関値保持部７７に供給する。
【０４３４】
関数値保持部７７は、垂直ライン間相関値計算部７６から供給される各ローテーション量のローテーションラインの相関値を一時記憶する。
【０４３５】
相関値関数形状特徴量計算部７８は、関数値保持部７７に記憶された相関値を参照し、仮復元垂直ラインを各ローテーション量でローテーションしたときの、基準ラインとの相関を表す相関値関数（仮復元垂直ラインについての相関値関数）の特徴量を求め、相関値関数特徴量保持部７９に供給する。
【０４３６】
ここで、仮復元垂直ラインについての相関値関数は、ここでは、上述したように、各ローテーション量でローテーションした仮復元垂直ラインと、基準ラインとの間の相関を表すものであり、関数値保持部７７に記憶された相関値は、仮復元垂直ラインについての相関値関数の、各ローテーション量における関数値の逆数になっている。
【０４３７】
相関値関数形状特徴量計算部７８は、このような関数値保持部７７に記憶された相関値を参照することにより、例えば、仮復元垂直ラインについての相関値関数の関数値の最小値を、その相関値関数の特徴量として求める。
【０４３８】
なお、ここでは、相関値関数の特徴量として、その関数値の最小値を求めるようにしたが、相関値関数の特徴量は、これに限定されるものではない。即ち、相関値関数の特徴量は、相関値関数が、例えば、図３３に示したように、急峻な凹部を有する形状のものであるかどうかを判定することができるものであれば良く、従って、相関値関数の特徴量としては、関数値の最小値の他、例えば、変化の割合（関数の微分値）等を採用することが可能である。
【０４３９】
相関値関数形状特徴量保持部７９は、相関値関数形状特徴量計算部７８から供給される仮復元垂直ラインについての相関値関数の特徴量（ここでは、上述したように、関数値の最小値）を一時記憶する。
【０４４０】
なお、相関値関数形状特徴量保持部７９には、相関値関数形状特徴量計算部７８から、仮復元垂直ラインについての相関値関数の特徴量が供給される他、仮スワップ情報決定部８１から、その仮復元垂直ラインを生成するときのスワップパターンを表す仮スワップ情報が供給されるようになっている。そして、相関値関数形状特徴量保持部７９は、仮復元垂直ラインについての相関値関数と、その仮復元垂直ラインを生成するときのスワップパターンを表す仮スワップ情報と対応付け、その相関値関数と仮スワップ情報のセットを記憶するようになっている。
【０４４１】
最適スワップ情報選択部８０は、相関値関数形状特徴量保持部７９に記憶された、各スワップパターンを表す仮スワップ情報に対応付けられている相関値関数の特徴量を参照することにより、同じく相関値関数形状特徴量保持部７９に記憶された仮スワップ情報の中から、急峻な凹部を有する形状の相関値関数が得られた仮復元垂直ラインのスワップパターンを表す仮スワップ情報を選択し、その選択した仮スワップ情報を、注目ラインにとって、最適なビットプレーンスワップを行うスワップパターンを表すスワップ情報として、つまり、注目ラインのビットプレーンの並びを元の並びに復元するスワップパターンを表すスワップ情報（以下、適宜、最適スワップ情報という）として、ビットプレーンスワップ部７４および被埋め込みデータ保持部８３に供給する。
【０４４２】
即ち、本実施の形態では、相関値関数の特徴量として、その関数値の最小値を採用するが、この場合は、各スワップパターンにしたがって注目ラインをビットプレーンスワップした仮復元垂直ラインについての相関値関数のうち、その関数値の最小値が最小のものが、急峻な凹部を有する形状を有しているということができる。
【０４４３】
そこで、最適スワップ情報選択部８０は、相関値関数形状特徴量保持部７９に記憶された相関値関数の特徴量のうち、最小のものを検出し、さらに、その最小の特徴量に対応付けられている仮スワップ情報を選択する。そして、最適スワップ情報選択部８０は、その選択した仮スワップ情報を、相関値関数形状特徴量保持部７９から読み出し、最適スワップ情報として、ビットプレーンスワップ部７４および被埋め込みデータ保持部８３に供給する。
【０４４４】
なお、最適スワップ情報選択部８０は、上述のように、相関値関数の特徴量のうちの最小のものを検出するが、これは、相関値そのものについて言えば、相関値の最大値を検出することと等価である。
【０４４５】
仮スワップ情報決定部８１は、注目ラインをビットプレーンスワップするスワップパターンを決定し、そのスワップパターンを表すスワップ情報を、仮スワップ情報として、ビットプレーンスワップ部７４に供給する。
【０４４６】
即ち、ビットプレーンスワップ部７４は、注目ラインのビットプレーンの並びを、全通りの並びに並び替えるビットプレーンスワップを行うスワップパターンを、順次設定し、そのスワップパターンを表すスワップ情報を、仮スワップ情報として、ビットプレーンスワップ部７４に供給する。
【０４４７】
埋め込み符号化データ保持部８２は、ビットプレーンスワップ部７４から供給される、最適スワップ情報が表すスワップパターンにしたがってビットプレーンスワップされた注目ラインを一時記憶する。
【０４４８】
被埋め込みデータ保持部８３は、最適スワップ情報選択部８０から供給される最適スワップ情報に基づき、注目ラインに埋め込まれている第３の被埋め込みデータを復元して一時記憶する。
【０４４９】
次に、図４３のフローチャートを参照して、図４２のビットプレーンスワップ戻し部６１の処理について説明する。なお、この図４３の処理は、ビットプレーンスワップ戻し部６１が、図４０のステップＳ１８２において行う処理である。
【０４５０】
まず最初に、入力データ保持部７１は、フレームメモリ３１から入力される第３の埋め込み符号化データとしての１フレームの画像データを一時記憶し、ステップＳ１９２に進む。
【０４５１】
ステップＳ１９２では、注目ライン選択部７３が、入力データ保持部７１に記憶された第３の埋め込み符号化データとしての１フレームの画像データの垂直ラインのうち、まだ、注目ラインとしていない、より左側の垂直ラインを、注目ラインとして選択し、ビットプレーンスワップ部７４に供給する。さらに、ステップＳ１９２では、基準ライン選択部７２が、埋め込み符号化データ保持部８２に記憶された、既に、第２の埋め込み符号化データに復元されている画像データの垂直ラインのうちの、注目ラインの左隣の垂直ラインを、基準ラインとして選択し、垂直ライン間相関値計算部７６に供給する。
【０４５２】
ここで、第１垂直ラインは、上述したように、埋め込み処理において、処理の対象とされないので、第３の埋め込み符号化データは埋め込まれていない。このため、注目ライン選択部７３は、ステップＳ１９２において、第１垂直ラインを、注目ラインとして選択した場合には、その第１垂直ラインを、そのまま、ビットプレーンスワップ部７４を介して、埋め込み符号化データ保持部８２に供給して記憶させる。そして、注目ライン選択部７３は、ステップＳ１９２に戻り、第３の埋め込み符号化データとしての１フレームの画像データの次の垂直ライン、即ち、第２垂直ラインを、注目ラインとして選択する。
【０４５３】
その後、ステップＳ１９３に進み、仮スワップ情報決定部８１は、仮スワップ情報を生成し、ビットプレーンスワップ部７４に供給する。
【０４５４】
即ち、例えば、上述したように、画素値が８ビットで構成される場合には、注目ラインも、８つのビットプレーンで構成され、その並びは、８！通り存在するが、この場合、ステップＳ１９３において、仮スワップ情報決定部８１は、その８！通りのビットプレーンの並びにビットプレーンスワップするスワップパターンのうち、まだ、仮スワップ情報を生成していないものの１つを、注目ラインのビットプレーンスワップに用いるスワップパターンとして決定し、そのスワップパターンを表す仮スワップ情報を生成して、ビットプレーンスワップ部７４および相関値関数形状特徴量保持部７９に供給する。
【０４５５】
そして、ステップＳ１９４に進み、ビットプレーンスワップ部７４は、仮決定部８１から供給される仮スワップ情報が表すスワップパターンにしたがって、注目ラインをビットプレーンスワップし、そのビットプレーンスワップ結果を、仮復元垂直ラインとして、ラインローテーション部７５に供給して、ステップＳ１９５に進む。
【０４５６】
ステップＳ１９５では、ラインローテーション部７５が、ローテーション量を、前回のローテーション量に１を加算した値にセットし、そのローテーション量だけ、仮復元垂直ラインをローテーションする。
【０４５７】
ここで、ステップＳ１９５において、新たな仮復元垂直ラインに対して、最初のローテーションが行われる場合、ラインローテーション部７５は、ローテーション量を、０に初期化する。
【０４５８】
ラインローテーション部７５は、仮復元垂直ラインをローテーションすると、そのローテーションした仮復元垂直ラインであるローテーションラインを、垂直ライン間相関値計算部７６に供給し、ステップＳ１９６に進む。
【０４５９】
ステップＳ１９６では、垂直ライン間相関値計算部７６は、ラインローテーション部７５からのローテーションラインと、基準ライン選択部７２からの基準ラインとの間の相関値を計算し、相関値保持部７７に供給して記憶させる。
【０４６０】
その後、ステップＳ１９７に進み、ラインローテーション部７５は、仮復元垂直ラインを、全通りのローテーション量でローテーションしたかどうかを判定する。ステップＳ１９７において、まだ、仮復元垂直ラインを、全通りのローテーション量でローテーションしていないと判定された場合、ステップＳ１９５に戻り、上述したように、ラインローテーション部７５は、ローテーション量を、前回のローテーション量に１を加算した値にセットし、以下、同様の処理を繰り返す。
【０４６１】
また、ステップＳ１９７において、仮復元垂直ラインを、全通りのローテーション量でローテーションしたと判定された場合、即ち、仮復元垂直ラインを各ローテーション量でローテーションしたものそれぞれと、基準ラインとの相関値がすべて求められ、相関値保持部７７に記憶された場合、ステップＳ１９８に進み、相関値関数形状特徴量計算部７８は、関数値保持部７７に記憶された相関値を参照することにより、上述したように、仮復元垂直ラインについての相関値関数の関数値の最小値を、その相関値関数の特徴量として求める。そして、相関値関数形状特徴量計算部７８は、仮復元垂直ラインについての相関値関数の特徴量を、相関値関数形状特徴量保持部７９に供給し、仮スワップ情報決定部８１が出力する仮スワップ情報と対応付けて記憶させ、ステップＳ１９９に進む。
【０４６２】
ステップＳ１９９では、仮スワップ情報決定部８１が、注目ラインを構成するビットプレーンの全通りの並びについて、仮スワップ情報を生成したかどうかを判定する。ステップＳ１９９において、注目ラインを構成するビットプレーンの全通りの並びについて、まだ、仮スワップ情報を生成していないと判定された場合、ステップＳ１９３に戻り、仮スワップ情報決定部８１は、上述したように、全通りのビットプレーンの並びのうち、まだ、仮スワップ情報を生成していない並びについてのスワップパターンの１つを、注目ラインのビットプレーンスワップに用いるスワップパターンとして決定し、以下、同様の処理を繰り返す。
【０４６３】
一方、ステップＳ１９９において、注目ラインを構成するビットプレーンの全通りの並びについて、仮スワップ情報を生成したと判定された場合、即ち、相関値関数形状特徴量保持部７９に、注目ラインについて、ビットプレーンの全通りの並びに対応する仮スワップ情報と、その仮スワップ情報に対応する相関値関数の特徴量が記憶された場合、ステップＳ２００に進み、最適スワップ情報選択部８０は、相関値関数形状特徴量保持部７９に記憶された、各スワップパターンを表す仮スワップ情報に対応付けられている相関値関数の特徴量を参照することにより、同じく相関値関数形状特徴量保持部７９に記憶された仮スワップ情報の中から、急峻な凹部を有する形状の相関値関数が得られた仮復元垂直ラインのスワップパターンを表す仮スワップ情報を選択し、最適スワップ情報として決定して、ビットプレーンスワップ部７４および被埋め込みデータ保持部８３に供給する。
【０４６４】
即ち、ステップＳ２００では、最適スワップ情報選択部８０は、相関値関数形状特徴量保持部７９に記憶された相関値関数の特徴量のうち、最小のものを検出し、さらに、その最小の特徴量に対応付けられている仮スワップ情報を選択する。そして、最適スワップ情報選択部８０は、その選択した仮スワップ情報を、相関値関数形状特徴量保持部７９から読み出し、最適スワップ情報として、ビットプレーンスワップ部７４および被埋め込みデータ保持部８３に供給する。
【０４６５】
そして、ステップＳ２０１に進み、ビットプレーンスワップ部７４と、被埋め込みデータ保持部８３は、最適スワップ情報に基づいて、注目ラインに対応する第２の埋め込み符号化データの垂直ラインと、そこに埋め込まれていた第３の被埋め込みデータを、それぞれ復元する。
【０４６６】
即ち、ステップＳ２０１では、ビットプレーンスワップ部７４は、最適スワップ情報選択部８０から供給される最適スワップ情報に対応するスワップパターンにしたがい、注目ラインのビットプレーンをビットプレーンスワップすることにより、第２の埋め込み符号化データを構成する垂直ラインを復元し、埋め込み符号化データ保持部８２に供給して記憶させる。さらに、ステップＳ２０１では、被埋め込みデータ保持部８３が、最適スワップ情報選択部８０から供給される最適スワップ情報に基づき、注目ラインに埋め込まれている第３の被埋め込みデータを復元して一時記憶する。
【０４６７】
その後、ステップＳ２０２に進み、注目ライン選択部７３は、入力データ保持部７１に記憶された第３の埋め込み符号化データとしての画像データのフレームのすべての垂直ラインを、注目ラインとして選択したかどうかを判定する。ステップＳ２０２において、入力データ保持部７１に記憶された第３の埋め込み符号化データとしての画像データのフレームのすべての垂直ラインを、まだ、注目ラインとして選択していないと判定された場合、ステップＳ１９２に戻り、注目ライン選択部７３が、入力データ保持部７１に記憶された第３の埋め込み符号化データとしての１フレームの画像データの垂直ラインのうち、まだ、注目ラインとしていない、より左側の垂直ラインを、注目ラインとして選択し、以下、上述の場合と同様の処理を繰り返す。
【０４６８】
一方、ステップＳ２０２において、入力データ保持部７１に記憶された第３の埋め込み符号化データとしての画像データのフレームのすべての垂直ラインを、注目ラインとして選択したと判定された場合、即ち、入力データ保持部７１に記憶された第３の埋め込み符号化データとしての１フレームの画像データが、第２の埋め込み符号化データと、そこに埋め込まれていた第３の被埋め込みデータに復元され、その第２の埋め込み符号化データと第３の被埋め込みデータが、埋め込み符号化データ保持部８２と被埋め込みデータ保持部８３にそれぞれ記憶された場合、ステップＳ２０３に進み、埋め込み符号化データ保持部８２は、そこに記憶された第２の埋め込み符号化データを読み出し、垂直ラインローテーション戻し部６２（図３９）に供給する。さらに、ステップＳ２０３では、被埋め込みデータ保持部８３が、そこに記憶された第３の被埋め込みデータを読み出して出力し、処理を終了する。
【０４６９】
なお、本実施の形態では、埋め込み処理において、注目ラインのビットプレーンの全通りの並びを許可するビットプレーンスワップを行うこととしたが、下位のビットのビットプレーンどうしの入れ替えしか行われないようなビットプレーンスワップは禁止する（そのようなビットプレーンスワップを、スワップパターンから除外する）ようにすることが可能である。
【０４７０】
即ち、垂直ラインについて、その下位ビットのビットプレーンどうしのみの入れ替えを行った場合（例えば、最下位ビットのビットプレーンと、その１ビット上位のビットのビットプレーンとの入れ替えを行った場合）と、ビットプレーンの入れ替えを行わない場合においては、相関値関数に、大きな違いが現れないことがある。そして、この場合、急峻な凹部を有する相関値関数の検出を誤り、埋め込み符号化データを、正しく復元すること（元に戻すこと）ができなくなることがある。
【０４７１】
このような復元の誤りは、下位ビットのビットプレーンどうしのみの入れ替えを禁止することで防止することができる。
【０４７２】
なお、上述のような復元の誤りは、垂直ラインについて、その下位ビットのビットプレーンどうしのみの入れ替えを行った場合と、ビットプレーンの入れ替えを行わない場合とで、画素値がほとんど変化しないことに起因する。
【０４７３】
このようなビットプレーンスワップ前と後で、画素値の変化が少ないことに起因する復元の誤りは、そのような画素値の変化が少ないビットプレーンスワップを禁止する（行わない）ようにする他、画素値を表すバイナリコードを、０（または１）の数が同一のバイナリコードで表現される画素値どうしの間隔が均一に粗になるように画素値が割り当てられたバイナリコードに変換して、埋め込み処理および復元処理を行うことによっても防止することができる。
【０４７４】
即ち、例えば、いま、説明を簡単にするために、注目ラインとしての垂直ラインが１画素で構成され、その画素値が８ビットで表現されるものとする。
【０４７５】
この場合、注目ラインを構成する画素の画素値が、例えば、「２」であるとすると、そのバイナリコードは、「００００００１０」であるから、このバイナリコードをビットプレーンスワップして得られるビットプレーンとしてのバイナリコードは、「０００００００１」、「００００００１０」、「０００００１００」、「００００１０００」、「０００１００００」、「００１０００００」、「０１００００００」、「１０００００００」の８通りが存在する。
【０４７６】
そして、この８通りのバイナリコード「０００００００１」、「００００００１０」、「０００００１００」、「００００１０００」、「０００１００００」、「００１０００００」、「０１００００００」、「１０００００００」が表す画素値は、それぞれ、「１」、「２」、「４」、「８」、「１６」、「３２」、「６４」、「１２８」であり、この８パターンのバイナリコードに対応する画素値の間隔は、密のところもあれば、粗のところもある。即ち、画素値が小さい部分では、画素値どうしの間隔は密になり、画素値が大きい部分では、画素値どうしの間隔は粗になる。
【０４７７】
このため、注目ラインを構成する画素値「２」のように、間隔が密になっている画素値については、その下位ビットのみを入れ替えるビットプレーンスワップを行っても、画素値が、あまり変化しない。
【０４７８】
即ち、例えば、画素値「２」のバイナリコード「００００００１０」における最下位ビット（のビットプレーン）と、その１ビット上位のビット（のビットプレーン）とを入れ替えるビットプレーンスワップを行うと、バイナリコード「０００００００１」が得られるが、このビットプレーンスワップ後のバイナリコード「０００００００１」が表す画素値は「１」であり、ビットプレーンスワップ前の画素値「２」と１しか変わらない。
【０４７９】
このため、ビットプレーンスワップ前と後の注目ラインについての相関値も、あまり差のないものとなり、その結果、復元を誤る可能性が高くなる。
【０４８０】
そこで、０（または１）の数が同一のバイナリコードで表現される画素値どうしの間隔が均一に粗になるように画素値が割り当てられたバイナリコード（以下、適宜、新コードという）を採用し、注目ラインを構成する画素の画素値を表すバイナリコード（以下、適宜、従来コードという）を、新コードに変換することで、下位ビットのみを入れ替えるビットプレーンスワップであっても、そのビットプレーンスワップの前と後で、値が大きく異なる画素値を得ることが可能となる。
【０４８１】
即ち、図４４および図４５は、８ビットのバイナリコードに関して、従来コードが表す画素値と、新コードに割り当てられている画素値との対応関係を示している。
【０４８２】
図４４および図４５において、codeの列は、８ビットのバイナリコードとしての新コードおよび従来コードを表し、oldの列は、codeの列におけるバイナリコードを従来コードとして見た場合の、その従来コードが表す画素値を表す。また、newの列は、codeの列におけるバイナリコードを新コードとして見た場合の、その新コードに割り当てられている画素値を表す。
【０４８３】
新コードについては、０または１の数が同一の新コードに対して、各新コードに対応する画素値どうしの間隔が、均一で、かつ、なるべく粗になるように、画素値が割り当てられており、その結果、下位ビットのみを入れ替えるビットプレーンスワップであっても、そのビットプレーンスワップの前と後で、値が大きく異なる画素値を得ることができるようになっている。
【０４８４】
即ち、図４６は、図４４および図４６における８ビットの新コードのうち、「１」が６ビットだけのもの（従って、「０」が２ビットだけのもの）の並びの全２８パターンと、対応する画素値とを示している。
【０４８５】
例えば、図４６の上から６番目のバイナリコード「０１１１１１０１」と、７番目のバイナリコード「０１１１１１１０」とは、その最下位ビットとその１ビット上位のビットとを入れ替えた関係にあるが、従来コードでは、それぞれ、画素値「１２５」と「１２６」を表すから、その差は１しかない。
【０４８６】
これに対して、バイナリコード「０１１１１１０１」と、「０１１１１１１０」とは、新コードでは、図４６に示すように、それぞれ、画素値「４９」と「６２」を表すから、その差は１３となる。
【０４８７】
従って、新コードによれば、ビットプレーンスワップの前と後で、値が大きく異なる画素値を得ることが可能となり、埋め込み処理および復元処理を、新コードを採用して行うことによって、ビットプレーンスワップの前と後で画素値があまり変化しないことに起因する復元の誤りを防止することができる。
【０４８８】
次に、上述した一連の処理は、ハードウェアにより行うこともできるし、ソフトウェアにより行うこともできる。一連の処理をソフトウェアによって行う場合には、そのソフトウェアを構成するプログラムが、汎用のコンピュータ等にインストールされる。
【０４８９】
そこで、図４７は、上述した一連の処理を実行するプログラムがインストールされるコンピュータの一実施の形態の構成例を示している。
【０４９０】
プログラムは、コンピュータに内蔵されている記録媒体としてのハードディスク１０５やＲＯＭ１０３に予め記録しておくことができる。
【０４９１】
あるいはまた、プログラムは、フレキシブルディスク、CD-ROM(Compact Disc Read Only Memory)，MO(Magneto Optical)ディスク，DVD(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのリムーバブル記録媒体１１１に、一時的あるいは永続的に格納（記録）しておくことができる。このようなリムーバブル記録媒体１１１は、いわゆるパッケージソフトウエアとして提供することができる。
【０４９２】
なお、プログラムは、上述したようなリムーバブル記録媒体１１１からコンピュータにインストールする他、ダウンロードサイトから、ディジタル衛星放送用の人工衛星を介して、コンピュータに無線で転送したり、LAN(Local Area Network)、インターネットといったネットワークを介して、コンピュータに有線で転送し、コンピュータでは、そのようにして転送されてくるプログラムを、通信部１０８で受信し、内蔵するハードディスク１０５にインストールすることができる。
【０４９３】
コンピュータは、CPU(Central Processing Unit)１０２を内蔵している。CPU１０２には、バス１０１を介して、入出力インタフェース１１０が接続されており、CPU１０２は、入出力インタフェース１１０を介して、ユーザによって、キーボードや、マウス、マイク等で構成される入力部１０７が操作等されることにより指令が入力されると、それにしたがって、ROM(Read Only Memory)１０３に格納されているプログラムを実行する。あるいは、また、CPU１０２は、ハードディスク１０５に格納されているプログラム、衛星若しくはネットワークから転送され、通信部１０８で受信されてハードディスク１０５にインストールされたプログラム、またはドライブ１０９に装着されたリムーバブル記録媒体１１１から読み出されてハードディスク１０５にインストールされたプログラムを、RAM(Random Access Memory)１０４にロードして実行する。これにより、CPU１０２は、上述したフローチャートにしたがった処理、あるいは上述したブロック図の構成により行われる処理を行う。そして、CPU１０２は、その処理結果を、必要に応じて、例えば、入出力インタフェース１１０を介して、LCD(Liquid CryStal Display)やスピーカ等で構成される出力部１０６から出力、あるいは、通信部１０８から送信、さらには、ハードディスク１０５に記録等させる。
【０４９４】
ここで、本明細書において、コンピュータに各種の処理を行わせるためのプログラムを記述する処理ステップは、必ずしもフローチャートとして記載された順序に沿って時系列に処理する必要はなく、並列的あるいは個別に実行される処理（例えば、並列処理あるいはオブジェクトによる処理）も含むものである。
【０４９５】
また、プログラムは、１のコンピュータにより処理されるものであっても良いし、複数のコンピュータによって分散処理されるものであっても良い。さらに、プログラムは、遠方のコンピュータに転送されて実行されるものであっても良い。
【０４９６】
なお、被埋め込みデータは、特に限定されるものではなく、例えば、画像データや、音声データ、テキスト、コンピュータプログラム、制御信号、その他のデータを、被埋め込みデータとして用いることが可能である。
【０４９７】
また、本実施の形態では、埋め込み対象データとして画像データを採用し、被埋め込みデータを、その画像データに埋め込むようにしたが、埋め込み対象データとしては、その他、例えば、音声データ等を採用することも可能である。即ち、例えば、時系列の音声データを、適当なフレームに区切り、各フレームの音声データを、被埋め込みデータにしたがって入れ替えることで、被埋め込みデータを、音声に埋め込むことが可能である。
【０４９８】
さらに、本実施の形態では、埋め込み対象データの水平ラインをローテーションし、さらに、垂直ラインをローテーションして得られる第２の埋め込み符号化データに対して、ビットプレーンスワップ方式により、第３の被埋め込みデータを埋め込むようにしたが、その他、第３の被埋め込みデータは、埋め込み対象データの水平ラインまたは垂直ラインのいずれか一方のみをローテーションして得られる埋め込み符号化データに対して埋め込むことも可能である。
【０４９９】
また、本実施の形態では、ラインローテーション方式による埋め込みを行い、さらに、ビットプレーンスワップ方式による埋め込みを行うことで、より多くの被埋め込みデータを埋め込むようにしたが、その逆の順番で埋め込みを行うようにすることも可能である。さらに、このような多くの被埋め込みデータの埋め込みは、その他の任意の２つの方式の埋め込みを採用することで行うことが可能である。さらに、埋め込みは、３以上の複数の方式を採用して行うことも可能である。但し、採用する複数の方式の埋め込みは、上述したように、その埋め込みのための操作として、重複する操作を有しないものであることが望ましい。
【０５００】
【発明の効果】
本発明の第１のデータ処理装置およびデータ処理方法、並びにプログラムによれば、情報が有するエネルギの偏りを利用して他の情報が埋め込まれた情報が元の情報に復元されるように操作を行う第１の操作ルールにしたがい、埋め込み対象データが、任意の被埋め込みデータに対応して操作され、埋め込み対象データに任意の被埋め込みデータを埋め込んだ第１の操作ルールによる埋め込み符号化データが生成される。そして、第１の操作ルールとは異なる第２の操作ルールにしたがい、第１の操作ルールによる埋め込み符号化データが、他の任意の被埋め込みデータに対応して操作され、第１の操作ルールによる埋め込み符号化データに他の任意の被埋め込みデータを埋め込んだ第２の操作ルールによる埋め込み符号化データが生成される。従って、より多くの被埋め込みデータを埋め込むことが可能となる。
【０５０１】
本発明の第２のデータ処理装置およびデータ処理方法、並びにプログラムによれば、第２の操作ルールによる埋め込み符号化データが、第２の操作ルールにしたがって操作されるとともに、第１の操作ルールにしたがって操作され、その操作によって得られるデータのエネルギの偏りを利用して、第１の操作ルールによる埋め込み符号化データと他の任意の被埋め込みデータが復元される。そして、第１の操作ルールによる埋め込み符号化データが、第１の操作ルールにしたがって操作され、その操作によって得られるデータのエネルギの偏りを利用して、埋め込み対象データと任意の被埋め込みデータが復元される。従って、より多くの被埋め込みデータが埋め込まれた埋め込み符号化データを、元の埋め込み対象データと被埋め込みデータに復元することが可能となる。
【図面の簡単な説明】
【図１】ラインローテーション方式による埋め込み処理と復元処理の概要を説明する図である。
【図２】埋め込み符号化／復元システムの一実施の形態の構成例を示すブロック図である。
【図３】埋め込み符号化器３の構成例を示すブロック図である。
【図４】復元器６の構成例を示すブロック図である。
【図５】埋め込み対象データとしての画像データを示す図である。
【図６】相関性を利用した埋め込み／復元を説明するための図である。
【図７】相関性を利用した埋め込み／復元を説明するための図である。
【図８】埋め込み処理を説明するフローチャートである。
【図９】復元処理を説明するフローチャートである。
【図１０】連続性を利用した埋め込み／復元を説明する図である。
【図１１】埋め込み処理を説明するフローチャートである。
【図１２】埋め込み処理および復元処理を説明する図である。
【図１３】復元処理を説明するフローチャートである。
【図１４】相似性を利用した埋め込み／復元を説明するための図である。
【図１５】相似性を利用した埋め込み／復元を説明するための図である。
【図１６】埋め込み処理を説明するフローチャートである。
【図１７】埋め込み処理および復元処理を説明する図である。
【図１８】復元処理を説明するフローチャートである。
【図１９】埋め込み処理を説明するためのフローチャートである。
【図２０】復元処理を説明するためのフローチャートである。
【図２１】ビットプレーンスワップ方式による埋め込み処理を説明するための図である。
【図２２】埋め込み処理を説明するためのフローチャートである。
【図２３】ビットプレーンの相関の計算方法を説明するための図である。
【図２４】ビットプレーンスワップ方式による復元処理を説明するための図である。
【図２５】復元処理を説明するためのフローチャートである。
【図２６】埋め込み処理を説明するためのフローチャートである。
【図２７】ローテーションを説明するための図である。
【図２８】埋め込み処理の結果を説明するための図である。
【図２９】ラインローテーション方式による復元処理を説明するための図である。
【図３０】復元処理を説明するためのフローチャートである。
【図３１】水平ラインと垂直ラインの両方をローテーションする埋め込み処理と復元処理を説明する図である。
【図３２】相関値関数を利用して復元可能な埋め込み処理と復元処理を説明する図である。
【図３３】実際の画像の相関値関数を示す図である。
【図３４】埋め込み部２２の構成例を示すブロック図である。
【図３５】埋め込み部２２による埋め込み処理を説明するフローチャートである。
【図３６】ビットプレーンスワップ埋め込み部４３の処理を説明するための図である。
【図３７】ビットプレーンスワップ埋め込み部４３の構成例を示すブロック図である。
【図３８】ビットプレーンスワップ埋め込み部４３の処理を説明するフローチャートである。
【図３９】復元部３２の構成例を示すブロック図である。
【図４０】復元部３２の処理を説明するフローチャートである。
【図４１】ビットプレーンスワップ戻し部６１の処理を説明するための図である。
【図４２】ビットプレーンスワップ戻し部６１の構成例を示すブロック図である。
【図４３】ビットプレーンスワップ戻し部６１の処理を説明するフローチャートである。
【図４４】新コードと画素値との対応関係を示す図である。
【図４５】新コードと画素値との対応関係を示す図である。
【図４６】新コードと画素値との対応関係を示す図である。
【図４７】本発明を適用したコンピュータの一実施の形態の構成例を示すブロック図である。
【符号の説明】
１  埋め込み対象データベース，  ２  被埋め込みデータベース，  ３  埋め込み符号化器，  ４  記録媒体，  ５  伝送媒体，  ６  復元器，  １１  符号化装置，  １２  復号装置，  ２１  フレームメモリ，  ２２  埋め込み部，  ３１  フレームメモリ，  ３２  復元部，  ４１  水平ラインローテーション埋め込み部，  ４２  垂直ラインローテーション埋め込み部，  ４３  ビットプレーンスワップ埋め込み部，  ５１  入力データ保持部，  ５２  注目ライン選択部，  ５３  被埋め込みデータ保持部，  ５４  スワップ情報取得部，  ５５  ビットプレーンスワップ部，  ６１  ビットプレーンスワップ戻し部，  ６２  垂直ラインローテーション戻し部，  ６３  水平ラインローテーション戻し部，７１  入力データ保持部，  ７２  基準ライン選択部，  ７３  注目ライン選択部，  ７４  ビットプレーンスワップ部，  ７５  ラインローテーション部，７６  垂直ライン間相関値計算部，  ７７  相関値保持部，  ７８  相関値関数形状特徴量計算部，  ７９  相関値形状特徴量保持部，  ８０  最適スワップ情報選択部，  ８１  仮スワップ情報決定部，  ８２  埋め込み符号化データ保持部，  ８３  被埋め込みデータ保持部，  １０１  バス，  １０２  CPU，  １０３  ROM，  １０４  RAM，  １０５  ハードディスク，  １０６  出力部，１０７  入力部，  １０８  通信部，  １０９  ドライブ，  １１０  入出力インタフェース，  １１１  リムーバブル記録媒体
【図１】
0003940986.tif 000003
【図２】
0003940986.tif 000004
【図３】
0003940986.tif 000005
【図４】
0003940986.tif 000006
【図５】
0003940986.tif 000007
【図６】
0003940986.tif 000008
【図７】
0003940986.tif 000009
【図８】
0003940986.tif 000010
【図９】
0003940986.tif 000011
【図１０】
0003940986.tif 000012
【図１１】
0003940986.tif 000013
【図１２】
0003940986.tif 000014
【図１３】
0003940986.tif 000015
【図１４】
0003940986.tif 000016
【図１５】
0003940986.tif 000017
【図１６】
0003940986.tif 000018
【図１７】
0003940986.tif 000019
【図１８】
0003940986.tif 000020
【図１９】
0003940986.tif 000021
【図２０】
0003940986.tif 000022
【図２１】
0003940986.tif 000023
【図２２】
0003940986.tif 000024
【図２３】
0003940986.tif 000025
【図２４】
0003940986.tif 000026
【図２５】
0003940986.tif 000027
【図２６】
0003940986.tif 000028
【図２７】
0003940986.tif 000029
【図２８】
0003940986.tif 000030
【図２９】
0003940986.tif 000031
【図３０】
0003940986.tif 000032
【図３１】
0003940986.tif 000033
【図３２】
0003940986.tif 000034
【図３３】
0003940986.tif 000035
【図３４】
0003940986.tif 000036
【図３５】
0003940986.tif 000037
【図３６】
0003940986.tif 000038
【図３７】
0003940986.tif 000039
【図３８】
0003940986.tif 000040
【図３９】
0003940986.tif 000041
【図４０】
0003940986.tif 000042
【図４１】
0003940986.tif 000043
【図４２】
0003940986.tif 000044
【図４３】
0003940986.tif 000045
【図４４】
0003940986.tif 000046
【図４５】
0003940986.tif 000047
【図４６】
0003940986.tif 000048
【図４７】
0003940986.tif 000049