(57)【要約】【課題】ブロックの数よりも大きくなる可能性がある可変長の付加データを正確に検出することができるとともに、再生画像の劣化を防止することができるようにする。【解決手段】データ埋め込み部１５が所定の規則にしたがって埋め込み対象のブロックを選択し、係数並び替え部１３による並び替え後の当該ブロックにおけるＤＣＴ係数の中で、“０”でない最後尾のＤＣＴ係数より高周波成分側の“０”の領域に、ビット取り出し部１４により取り出されたビットに対応する数値を埋め込むように構成する。【選択図】図１
2010068421.tif 000002
【特許請求の範囲】
【請求項１】
電子透かしを埋め込む対象の画像をブロック単位に分割し、各ブロックの画素の成分をＤＣＴ変換して、各ブロックの画素のＤＣＴ係数を算出するＤＣＴ変換手段と、上記ＤＣＴ変換手段により算出された各ブロックの画素のＤＣＴ係数をジグザグスキャン順序に並び替える係数並び替え手段と、ヘッダにユニークワードが付加されている可変長データの先頭から順番にビットを取り出すビット取り出し手段と、所定の規則にしたがって埋め込み対象のブロックを選択し、上記係数並び替え手段による並び替え後の当該ブロックにおけるＤＣＴ係数の中で、“０”でない最後尾のＤＣＴ係数より高周波成分側の“０”の領域に、上記ビット取り出し手段により取り出されたビットに対応する数値を埋め込むデータ埋め込み手段とを備えた電子透かし装置。
【請求項２】
データ埋め込み手段によりブロックが選択される際の規則と同一の規則にしたがって読み出し対象のブロックを選択し、上記ブロックにおける領域の数値を読み出す数値読み出し手段と、上記数値読み出し手段により読み出された数値の系列とユニークワードを比較して、上記系列の中から可変長データを検出するとともに、上記可変長データが埋め込まれる前の画像の画像コードを検出するデータ検出手段とを設けたことを特徴とする請求項１記載の電子透かし装置。
【請求項３】
データ埋め込み手段は、ビット取り出し手段により取り出されたビットに対応する数値を埋め込む際、“０”でない最後尾のＤＣＴ係数より高周波成分側の“０”の領域の中で、未だビットに対応する数値を埋め込んでいない最も高周波成分側の領域に埋め込むことを特徴とする請求項１または請求項２記載の電子透かし装置。
【請求項４】
データ埋め込み手段は、ビット取り出し手段により取り出されたビットが“０”であれば、“０”でない最後尾のＤＣＴ係数より高周波成分側の“０”の領域に“−１”を埋め込み、上記ビットの値が“１”であれば、上記領域に“＋１”を埋め込み、データ検出手段は、数値読み出し手段により読み出された数値が“０”であれば、上記数値は可変長データの一部を構成しておらず、“０”の領域であると認識することを特徴とする請求項３記載の電子透かし装置。
【請求項５】
データ埋め込み手段は、“０”でない最後尾のＤＣＴ係数が正の値であれば、上記ＤＣＴ係数に“＋１”を加え、“０”でない最後尾のＤＣＴ係数が負の値であれば、上記ＤＣＴ係数に“−１”を加え、データ検出手段は、数値読み出し手段により読み出された数値が“＋２”以上であれば、上記数値に“−１”を加え、上記数値が“−２”以下であれば、上記数値に“＋１”を加えることを特徴とする請求項４記載の電子透かし装置。
【請求項６】
データ埋め込み手段は、可変長データを構成するビットの値が“０”又は“＋１”である場合、“０”でない最後尾のＤＣＴ係数が正の値であれば、上記ＤＣＴ係数に“＋１”を加え、データ検出手段は、数値読み出し手段により読み出された数値が“＋２”以上であれば、上記数値に“−１”を加えることを特徴とする請求項３記載の電子透かし装置。
【請求項７】
データ埋め込み手段は、可変長データを構成するビットの値が“０”又は“−１”である場合、“０”でない最後尾のＤＣＴ係数が負の値であれば、上記ＤＣＴ係数に“−１”を加え、データ検出手段は、数値読み出し手段により読み出された数値が“−２”以下であれば、上記数値に“＋１”を加えることを特徴とする請求項３記載の電子透かし装置。
【請求項８】
データ埋め込み手段は、“０”でない最後尾のＤＣＴ係数の絶対値が最大値である場合、ＤＣＴ係数を加算する処理を実施せずに、上記ＤＣＴ係数の絶対値が最大値である旨を示す情報ビットを上記ＤＣＴ係数より１つ高周波成分側の領域に含めることを特徴とする請求項５から請求項７のうちのいずれか１項記載の電子透かし装置。
【請求項９】
データ埋め込み手段は、ビット取り出し手段が可変長データから１ビットを取り出す毎に、その１ビットを埋め込む対象のブロックが同一のブロックに重複しないように所定の鍵により定められた順番で選択することを特徴とする請求項１から請求項８のうちのいずれか１項記載の電子透かし装置。
【請求項１０】
データ埋め込み手段は、所定の規則にしたがって選択した埋め込み対象のブロックに可変長データを埋め込むことができない場合、埋め込み対象のブロックを再選択して、当該ブロックに可変長データを埋め込み、数値読み出し手段は、上記ブロックを読み出し対象のブロックとして選択することを特徴とする請求項２記載の電子透かし装置。
【請求項１１】
ビット取り出し手段は、ヘッダにデータ長を示す情報ビットが付加されている可変長データの先頭から順番にビットを取り出すことを特徴とする請求項１から請求項１０のうちのいずれか１項記載の電子透かし装置。
【請求項１２】
データ埋め込み手段は、ビット取り出し手段により取り出されたビットに対応する数値を埋め込む際、上記可変長データの中にユニークワードと同一の系列が存在する場合、上記系列を別のコードに置き換えることを特徴とする請求項１から請求項１１のうちのいずれか１項記載の電子透かし装置。
【請求項１３】
可変長データを秘匿する必要がある場合、ペイロード用鍵を用いて、上記可変長データのペイロードを暗号化する一方、画像を秘匿する必要がある場合、画像復元用鍵を用いて、上記可変長データのヘッダを暗号化する暗号化手段を設けたことを特徴とする請求項１から請求項１２のうちのいずれか１項記載の電子透かし装置。
【請求項１４】
データ埋め込み手段は、ビット取り出し手段により取り出されたビットに対応する数値を埋め込む際、“０”でない最後尾のＤＣＴ係数より高周波成分側の“０”の領域の中で、未だビットに対応する数値を埋め込んでいない最も低周波成分側の領域に埋め込むことを特徴とする請求項１または請求項２記載の電子透かし装置。
【請求項１５】
データ埋め込み手段は、ビット取り出し手段により取り出されたビットに対応する数値を埋め込む際、“０”でない最後尾のＤＣＴ係数より高周波成分側の“０”の領域の中で、未だビットに対応する数値を埋め込んでいない最も低周波成分側の領域に“０”を埋め込み、上記領域より高周波成分側の領域にビットに対応する数値を埋め込むことを特徴とする請求項１または請求項２記載の電子透かし装置。
【請求項１６】
データ埋め込み手段は、ビット取り出し手段により取り出されたビットに対応する数値を埋め込む際、すべてのブロックに対する数値の埋め込み数が一致するように、一部のブロックにダミービットを埋め込むことを特徴とする請求項１または請求項２記載の電子透かし装置。
【請求項１７】
ビット取り出し手段は、ダミービットが付加されている可変長データの先頭から順番にビットを取り出すことを特徴とする請求項１６記載の電子透かし装置。
【請求項１８】
データ埋め込み手段は、可変長データであるダミービットを１回以上埋め込んで、徐々に画像を劣化させることを特徴とする請求項１または請求項２記載の電子透かし装置。
【請求項１９】
電子透かしを埋め込む対象の画像をブロック単位に分割し、各ブロックの画素の成分をＤＣＴ変換して、各ブロックの画素のＤＣＴ係数を算出するＤＣＴ変換手段と、上記ＤＣＴ変換手段により算出された各ブロックの画素のＤＣＴ係数をジグザグスキャン順序に並び替える係数並び替え手段と、ヘッダにユニークワードが付加されている可変長データの先頭から順番にビットを取り出すビット取り出し手段と、所定の規則にしたがって埋め込み対象のブロックを選択し、上記係数並び替え手段による並び替え後の当該ブロックにおける所定の係数番号の領域に、上記ビット取り出し手段により取り出されたビットに対応する数値を埋め込むデータ埋め込み手段とを備えた電子透かし装置。
【請求項２０】
データ埋め込み手段によりブロックが選択される際の規則と同一の規則にしたがって読み出し対象のブロックを選択し、上記ブロックにおける領域の数値を読み出す数値読み出し手段と、上記数値読み出し手段により読み出された数値の系列とユニークワードを比較して、上記系列の中から可変長データを検出するとともに、上記可変長データが埋め込まれる前の画像の画像コードを検出するデータ検出手段とを設けたことを特徴とする請求項１９記載の電子透かし装置。
【請求項２１】
データ埋め込み手段は、すべてのブロックで共通するブロック内の係数番号を決定することを特徴とする請求項１９または請求項２０記載の電子透かし装置。
【請求項２２】
データ埋め込み手段は、可変長データを構成するビットの値が“０”又は“＋１”、あるいは、“０”又は“−１”である場合、所定の係数番号の領域が“０”であれば、上記領域に上記ビットの値を埋め込み、所定の係数番号の領域が正の値であれば、上記領域に“＋１”を加え、所定の係数番号の領域が負の値であれば、上記領域に“−１”を加え、データ検出手段は、数値読み出し手段により読み出された数値が“＋２”以上であれば、上記数値に“−１”を加え、上記数値が“−２”以下であれば、上記数値に“＋１”を加えることを特徴とする請求項２０記載の電子透かし装置。
【請求項２３】
データ埋め込み手段は、ビット取り出し手段により取り出されたビットに対応する数値を埋め込むブロックが一巡する毎に、埋め込み対象のブロックの順番を変更することを特徴とする請求項１９または請求項２０記載の電子透かし装置。
【請求項２４】
ビット取り出し手段は、可変長データが複数のシーケンスから構成されている場合、シーケンスの番号を示す情報ビットが付加されている可変長データの先頭から順番にビットを取り出すことを特徴とする請求項１から請求項２３のうちのいずれか１項記載の電子透かし装置。
【請求項２５】
ビット取り出し手段は、当該シーケンスが２巡回目以降に継続する場合の開始位置と、他のシーケンスの開始位置を示す情報ビットが付加されている可変長データの先頭から順番にビットを取り出すことを特徴とする請求項２４記載の電子透かし装置。
【請求項２６】
画像を改ざん検出対象のブロックに分割して、各ブロックの画像コードのハッシュ値を算出し、上記ハッシュ値を示す可変長データを生成する可変長データ生成手段と、データ検出手段により検出された可変長データが埋め込まれる前の画像の画像コードのハッシュ値を算出し、上記ハッシュ値と上記データ検出手段により検出された可変長データが示すハッシュ値を比較して、改ざんの有無を判定する改ざん検出手段とを設けたことを特徴とする請求項２または請求項２０記載の電子透かし装置。
【請求項２７】
ビット取り出し手段は、ヘッダにＭＰＥＧの１ＧＯＰのフレーム番号を示す情報ビットが付加されている可変長データの先頭から順番にビットを取り出すことを特徴とする請求項１から請求項２６のうちのいずれか１項記載の電子透かし装置。
【請求項２８】
ビット取り出し手段は、ペイロードに画像コードの新しい量子化マトリックスが格納され、ヘッダに画像コードの元の量子化マトリックスが格納されている可変長データの先頭から順番にビットを取り出すことを特徴とする請求項１から請求項２６のうちのいずれか１項記載の電子透かし装置。
【請求項２９】
データ検出手段は、可変長データから元の量子化マトリックスを検出して、画像コードの新しい量子化マトリックスを元の量子化マトリックスに戻すことで、元の画像コードを復元することを特徴とする請求項２８記載の電子透かし装置。
【請求項３０】
ＤＣＴ変換手段が電子透かしを埋め込む対象の画像をブロック単位に分割し、各ブロックの画素の成分をＤＣＴ変換して、各ブロックの画素のＤＣＴ係数を算出するＤＣＴ変換ステップと、係数並び替え手段が上記ＤＣＴ変換手段により算出された各ブロックの画素のＤＣＴ係数をジグザグスキャン順序に並び替える係数並び替えステップと、ビット取り出し手段がヘッダにユニークワードが付加されている可変長データの先頭から順番にビットを取り出すビット取り出しステップと、データ埋め込み手段が所定の規則にしたがって埋め込み対象のブロックを選択し、上記係数並び替え手段による並び替え後の当該ブロックにおけるＤＣＴ係数の中で、“０”でない最後尾のＤＣＴ係数より高周波成分側の“０”の領域に、上記ビット取り出し手段により取り出されたビットに対応する数値を埋め込むデータ埋め込みステップとを備えた電子透かし方法。
【請求項３１】
ＤＣＴ変換手段が電子透かしを埋め込む対象の画像をブロック単位に分割し、各ブロックの画素の成分をＤＣＴ変換して、各ブロックの画素のＤＣＴ係数を算出するＤＣＴ変換ステップと、係数並び替え手段が上記ＤＣＴ変換手段により算出された各ブロックの画素のＤＣＴ係数をジグザグスキャン順序に並び替える係数並び替えステップと、ビット取り出し手段がヘッダにユニークワードが付加されている可変長データの先頭から順番にビットを取り出すビット取り出しステップと、データ埋め込み手段が所定の規則にしたがって埋め込み対象のブロックを選択し、上記係数並び替え手段による並び替え後の当該ブロックにおける所定の係数番号の領域に、上記ビット取り出し手段により取り出されたビットに対応する数値を埋め込むデータ埋め込みステップとを備えた電子透かし方法。
【請求項３２】
数値読み出し手段がデータ埋め込み手段によりブロックが選択される際の規則と同一の規則にしたがって読み出し対象のブロックを選択し、上記ブロックにおける領域の数値を読み出す数値読み出しステップと、データ検出手段が上記数値読み出し手段により読み出された数値の系列とユニークワードを比較して、上記系列の中から可変長データを検出するとともに、上記可変長データが埋め込まれる前の画像のデータを検出するデータ検出ステップとを設けたことを特徴とする請求項３０または請求項３１記載の電子透かし方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ＪＰＥＧ、ＭＰＥＧなどのＤＣＴ方式の圧縮画像に電子透かしを埋め込む電子透かし装置及び電子透かし方法に関するものである。
【背景技術】
【０００２】
電子透かしは、人間の目や耳に感知できない情報を画像コンテンツに埋め込む技術である。
例えば、画像コンテンツの著作権を保護する目的で、氏名などの少ない著作権情報を電子透かしとして画像コンテンツに埋め込む利用形態が考えられる。
この場合、悪意者がフィルターなどを利用して、画像コンテンツから著作権情報を消すことを試みても、著作権情報を消すことは困難である。
【０００３】
電子透かしは、一般的には、悪意者の攻撃から画像コンテンツを保護する目的で利用されるが、他の利用法もある。
即ち、攻撃耐性については問題とせず、多くのメタデータを画像コンテンツに埋め込む利用法もある。
例えば、撮影後の編集前の画像に対してメタデータ（例えば、撮影者、撮影日時、撮影場所、撮影時の状況、コメントなど）を埋め込み、画像を自由に編集した後、その画像に埋め込まれているメタデータを取り出すなどの利用法がある。
【０００４】
ここで、図２０は従来の電子透かし装置の埋め込み側を示す構成図である。
図２０において、ＪＰＥＧコード１０１は電子透かしを埋め込む対象の原画の画像コードである。
低解像度静止画１０２は電子透かしとして埋め込む画像であり、テキストデータ１０３は電子透かしとして埋め込むデータである。
【０００５】
多重器１０４は低解像度静止画１０２とテキストデータ１０３を多重化して、付加データ（＝低解像度静止画１０２＋テキストデータ１０３）を生成する処理を実施する。
付加データ多重用メモリ１０５は多重器１０４により生成された付加データを保持するメモリである。
透かし埋め込みＣＰＵ１０６は付加データ多重用メモリ１０５に保持されている付加データを予め決められた規則にしたがって原画のＪＰＥＧコード１０１に埋め込むことで、電子透かし入りＪＰＥＧコード１０７を生成する処理を実施する。
【０００６】
次に動作について説明する。
まず、多重器１０４は、低解像度静止画１０２とテキストデータ１０３を入力すると、その低解像度静止画１０２とテキストデータ１０３を多重化することで、１つのまとまったデータである付加データを生成し、その付加データを付加データ多重用メモリ１０５に格納する。
透かし埋め込みＣＰＵ１０６は、多重器１０４が付加データを付加データ多重用メモリ１０５に格納すると、付加データ多重用メモリ１０５から付加データを取り出し、予め決められた規則にしたがって、その付加データを原画のＪＰＥＧコード１０１に埋め込むことで、電子透かし入りＪＰＥＧコード１０７を生成する。
付加データを電子透かしとして埋め込む具体的な手順は後述する。
【０００７】
次に、図２１は従来の電子透かし装置の検出側を示す構成図である。
図２１において、透かし検出ＣＰＵ１０８は予め決められた規則にしたがって電子透かし入りＪＰＥＧコード１０７に埋め込まれている付加データを分離することで、分離後のＪＰＥＧコードである復元ＪＰＥＧコード１０９と分離後の付加データを出力する処理を実施する。
復元ＪＰＥＧコード１０９はＪＰＥＧコード１０１に相当する画像コードである。
【０００８】
付加データ分離用メモリ１１０は透かし検出ＣＰＵ１０８により分離された付加データを保持するメモリである。
分離器１１１は付加データ分離用メモリ１１０に保持されている付加データを検出低解像度静止画１１２と検出テキストデータ１１３に分離する処理を実施する。
検出低解像度静止画１１２は低解像度静止画１０２に相当する画像である。
検出テキストデータ１１３はテキストデータ１０３に相当するデータである。
【０００９】
次に動作について説明する。
まず、透かし検出ＣＰＵ１０８は、電子透かし入りＪＰＥＧコード１０７を入力すると、予め決められた規則にしたがって電子透かし入りＪＰＥＧコード１０７に埋め込まれている付加データを分離することで、ＪＰＥＧコード１０１に相当する画像コードである復元ＪＰＥＧコード１０９を出力する。
また、透かし検出ＣＰＵ１０８は、分離後の付加データを付加データ分離用メモリ１１０に格納する。
付加データを検出する具体的な手順は後述する。
【００１０】
分離器１１１は、透かし検出ＣＰＵ１０８が付加データを付加データ分離用メモリ１１０に格納すると、付加データ分離用メモリ１１０から付加データを取り出し、その付加データを検出低解像度静止画１１２と検出テキストデータ１１３に分離して出力する。
【００１１】
ここで、図２２はＭＰＥＧ・ＪＰＥＧの符号化方式を示す説明図である。
ＭＰＥＧ・ＪＰＥＧの符号化方式では、画像の輝度・色差成分を８画素×８画素のブロックに分割する。
ただし、ＭＰＥＧでは、マクロブロックという輝度信号が１６画素×１６画素の上位レーヤーであるが、ＤＣＴ変換を８画素×８画素のブロックで行うので、ブロックのレーヤーにだけ着目する。
図２２（ａ）は画像のブロック分割例を示しており、元の画像の解像度が、例えば、水平１６０画素（２０ブロック）×垂直１２０画素（１５ブロック）であれば、２０×１５＝３００のブロックが存在する。
【００１２】
図２３は従来の電子透かし装置における付加データの埋め込み手順を示すフローチャートである。
図２５は従来の電子透かし装置により付加データが埋め込まれる様子を示す説明図である（以下の非特許文献１を参照）。
まず、透かし埋め込みＣＰＵ１０６は、画像のブロックより上のレーヤーを分離する（ステップＳＴ１）。
即ち、透かし埋め込みＣＰＵ１０６は、付加データを埋め込む対象はブロックのレーヤーであるため、ブロックより上のレーヤーをそのままの形式で分離し、ＣＰＵ内のメモリに記録する。
【００１３】
次に、透かし埋め込みＣＰＵ１０６は、１フレーム内の各ブロックの係数データを２次元可変調復号することで、各ブロックの６４係数を検出して、ＣＰＵ内のメモリに記録する（ステップＳＴ２）。
次に、透かし埋め込みＣＰＵ１０６は、埋め込み対象のブロックの順番を決定する（ステップＳＴ３）。
即ち、付加データを原画のＪＰＥＧコード１０１に埋め込むことで、原画のＪＰＥＧコード１０１の一部が書き換えられるが、その際、付加データが埋め込まれたブロックの再生画質が劣化するので、透かし埋め込みＣＰＵ１０６は、その劣化が分かりづらくなるように（埋め込み対象のブロックが分散するように）、予め決められた鍵（埋め込みと検出で共通の鍵）を用いて、ブロックの番号１〜３００が重複しないようにスクランブルすることで、埋め込むブロックの順番を決定する。
【００１４】
次に、透かし埋め込みＣＰＵ１０６は、予め決めた規則にしたがって付加データの数値を変更して、数値変更後の付加データｄ（ｉ）（例えば、大きさがｎビットの付加データであれば、ｄ（１）〜ｄ（ｎ））をステップＳＴ３で決定された順番で埋め込む（ステップＳＴ４）。
図２５では、付加データｄ（１）〜ｄ（１６）が１６ビットの固定長のデータであり、各ブロックの係数が第１係数から第６４係数まである例を示しており、各ブロックの係数の中で、最後の０でない係数の最下位ビットを付加データｄ（１）〜ｄ（１６）に置き換えることで、付加データｄ（１）〜ｄ（１６）を埋め込んでいる。
【００１５】
次に、透かし埋め込みＣＰＵ１０６は、ステップＳＴ４で付加データが埋め込まれた全ブロックの６４係数を２次元可変調符号化することで、ブロックレーヤーの可変長コードを生成する（ステップＳＴ５）。
最後に、透かし埋め込みＣＰＵ１０６は、ＣＰＵ内のメモリに記録しておいたブロックより上のレーヤーをそのままの形式でブロックレーヤーの可変長コードに合成し、画像コードとして生成する（ステップＳＴ６）。
【００１６】
図２４は従来の電子透かし装置における付加データの検出手順を示すフローチャートである。
透かし検出ＣＰＵ１０８は、透かし埋め込みＣＰＵ１０６と同様に、画像のブロックより上のレーヤーを分離する（ステップＳＴ１１）。
次に、透かし検出ＣＰＵ１０８は、透かし埋め込みＣＰＵ１０６と同様に、１フレーム内の各ブロックの係数データを２次元可変調復号することで、各ブロックの６４係数を検出して、ＣＰＵ内のメモリに記録する（ステップＳＴ１２）。
次に、透かし検出ＣＰＵ１０８は、透かし埋め込みＣＰＵ１０６と同様に、予め決められた鍵（埋め込みと検出で共通の鍵）を用いて、ブロックの番号１〜３００が重複しないようにスクランブルすることで、埋め込みブロックの順番を決定する（ステップＳＴ１３）。
【００１７】
次に、透かし検出ＣＰＵ１０８は、ステップＳＴ１３で決定されたブロックの順番で、当該ブロックから予め決めた規則にしたがって付加データｄ（ｉ）を検出して数値を復元する（ステップＳＴ１４）。
図２５の例では、最後の０でない係数の最下位ビットを１６ビット分だけ取ることで、付加データｄ（１）〜ｄ（１６）を検出する。
【００１８】
次に、透かし検出ＣＰＵ１０８は、透かし埋め込みＣＰＵ１０６と同様に、全ブロックの６４係数を２次元可変調符号化することで、ブロックレーヤーの可変長コードを生成する（ステップＳＴ１５）。
最後に、透かし検出ＣＰＵ１０８は、透かし埋め込みＣＰＵ１０６と同様に、ＣＰＵ内のメモリに記録しておいたブロックより上のレーヤーをそのままの形式でブロックレーヤーの可変長コードに合成し、画像コードとして生成する（ステップＳＴ１６）。
【００１９】
ここで、検出低解像度静止画１１２及び検出テキストデータ１１３は重要な情報であり、低解像度静止画１０２及びテキストデータ１０３と同一であるが、復元ＪＰＥＧコード１０９は、元の画像コードの付加データを埋め込んだブロックの最下位ビットが元に戻らず、例えば、それを全て０に置き換えても、原画のＪＰＥＧコード１０１とわずかに異なり、再生した画像は多少劣化する。
【００２０】
図２６は他の従来例により付加データが埋め込まれる様子を示す説明図である（以下の非特許文献２を参照）。
図２５の例では、画像コードの一部を元に戻せない方法で付加データを埋め込んでいるが、図２６の例では、１６ビットの固定長の付加データｄ（１）〜ｄ（１６）を第６４係数目に埋め込むようにしている。
通常、第６４係数は、大部分が０であるが、０でないブロックもある。この従来例では、０でないブロックについても、ｄ（ｉ）（ｉ＝１〜１６）（ｄ（ｉ）は“０”または“１”）に置き換えるようにしている。
この場合、付加データを正しく検出することができるが、元の画像コードを破壊してしまうことになる。
【００２１】
なお、ＤＣＴ係数の最下位１ビットに付加データを埋め込む方式が以下の特許文献１，２に開示されているが、この方式では、元の画像コードを復元することができない。
【００２２】
【特許文献１】特開２００７−２２１３８７号公報
【特許文献２】特開２００７−２２１３８８号公報
【非特許文献１】伊藤浩、馬養浩一、鈴木光義著、“ＪＰＥＧ画像の真正性を証明する電子透かしの方法”、信学全大、Ｄ−１１−３３，２００３
【非特許文献２】貴家仁志、“ＪＰＥＧ、ＭＰＥＧ画像へのバイナリデータの埋め込み法（多次元信号処理とその応用・実現論文小特集”、信学論Ｊ８３−Ａ（１２），１３４９−１３５６，２０００
【発明の開示】
【発明が解決しようとする課題】
【００２３】
従来の電子透かし装置は以上のように構成されているので、電子透かしとして埋め込む付加データについては正しく検出することができるが、復元された画像コードが、電子透かしが埋め込まれる原画の画像コードとわずかに異なってしまったり、画像コードを破壊してしまったりして、再生画像が劣化する課題があった。画像コードに既に付加データが埋め込まれている場合には、その付加データを壊してしまうことがある。
また、ブロックの数よりも大きくなる可能性がある可変長の付加データについては、付加データの先頭が分からないため、付加データを検出することができない課題があった。
【００２４】
この発明は上記のような課題を解決するためになされたもので、ブロックの数よりも大きくなる可能性がある可変長の付加データを正確に検出することができるとともに、再生画像の劣化を防止することができる電子透かし装置及び電子透かし方法を得ることを目的とする。
【課題を解決するための手段】
【００２５】
この発明に係る電子透かし装置は、ＤＣＴ変換手段により算出された各ブロックの画素のＤＣＴ係数をジグザグスキャン順序に並び替える係数並び替え手段と、ヘッダにユニークワードが付加されている可変長データの先頭から順番にビットを取り出すビット取り出し手段とを設け、データ埋め込み手段が所定の規則にしたがって埋め込み対象のブロックを選択し、係数並び替え手段による並び替え後の当該ブロックにおけるＤＣＴ係数の中で、“０”でない最後尾のＤＣＴ係数より高周波成分側の“０”の領域に、ビット取り出し手段により取り出されたビットに対応する数値を埋め込むようにしたものである。
【発明の効果】
【００２６】
この発明によれば、ＤＣＴ変換手段により算出された各ブロックの画素のＤＣＴ係数をジグザグスキャン順序に並び替える係数並び替え手段と、ヘッダにユニークワードが付加されている可変長データの先頭から順番にビットを取り出すビット取り出し手段とを設け、データ埋め込み手段が所定の規則にしたがって埋め込み対象のブロックを選択し、係数並び替え手段による並び替え後の当該ブロックにおけるＤＣＴ係数の中で、“０”でない最後尾のＤＣＴ係数より高周波成分側の“０”の領域に、ビット取り出し手段により取り出されたビットに対応する数値を埋め込むように構成したので、ブロックの数よりも大きくなる可能性がある可変長データを正確に検出することができるとともに、再生画像の劣化を防止することができる効果がある。
【発明を実施するための最良の形態】
【００２７】
実施の形態１．
図１はこの発明の実施の形態１による電子透かし装置の埋め込み側を示す構成図である。
図１において、ビデオカメラ１は動画を撮影して、その動画の映像データを出力する処理を実施する。
ＭＰＥＧエンコーダ２はビデオカメラ１から出力された映像データを圧縮して、原画ＭＰＥＧコードを生成する処理を実施する。
ＭＰＥＧ埋め込みバッファメモリ３はＭＰＥＧエンコーダ２により生成された原画ＭＰＥＧコードを保持するメモリである。
【００２８】
デジタルスチルカメラ４は静止画を撮影して、その静止画の静止画データを出力する処理を実施する。
静止画エンコーダ５はデジタルスチルカメラ４から出力された静止画データを圧縮して、静止画圧縮データを生成する処理を実施する。
静止画埋め込みバッファメモリ６は静止画エンコーダ５により生成された静止画圧縮データを保持するメモリである。
【００２９】
マイク７は音声を集音して、音声データを出力する処理を実施する。
音声エンコーダ８はマイク７から出力された音声データを圧縮して、音声圧縮データを生成する処理を実施する。
音声埋め込みバッファメモリ９は音声エンコーダ８により生成された音声圧縮データを保持するメモリである。
電波時計・ＧＰＳ１０はＧＰＳ衛星から送信されるＧＰＳデータを受信して、現在時刻と現在位置を検出し、現在時刻と現在位置を示す時刻位置データ（テキストデータ）を出力する処理を実施する。
【００３０】
電子透かし埋め込み部１１はＭＰＥＧ埋め込みバッファメモリ３に保持されている原画ＭＰＥＧコードに対して、静止画埋め込みバッファメモリ６に保持されている静止画圧縮データと、音声埋め込みバッファメモリ９に保持されている音声圧縮データと、電波時計・ＧＰＳ１０から出力された時刻位置データとを電子透かしとして埋め込む処理を実施する。
【００３１】
電子透かし埋め込み部１１のＤＣＴ変換部１２はＭＰＥＧ埋め込みバッファメモリ３に保持されている原画ＭＰＥＧコード（電子透かしを埋め込む対象の画像）をブロック単位に分割し、各ブロックの画素の成分をＤＣＴ変換して、各ブロックの画素のＤＣＴ係数を算出する処理を実施する。
なお、ＤＣＴ変換部１２はＤＣＴ変換手段を構成している。
【００３２】
電子透かし埋め込み部１１の係数並び替え部１３はＤＣＴ変換部１２により算出された各ブロックの画素のＤＣＴ係数をジグザグスキャン順序に並び替える処理を実施する。
なお、係数並び替え部１３は係数並び替え手段を構成している。
電子透かし埋め込み部１１のビット取り出し部１４はヘッダにユニークワード、シーケンス番号及びデータ長を示すビット情報が付加されている可変長データ（静止画圧縮データ、音声圧縮データ、時刻位置データ）の先頭から順番にビットを取り出す処理を実施する。
なお、ビット取り出し部１４はビット取り出し手段を構成している。
【００３３】
電子透かし埋め込み部１１のデータ埋め込み部１５は鍵により定められた順番で埋め込み対象のブロックを選択し、係数並び替え部１３による並び替え後の当該ブロックにおけるＤＣＴ係数の中で、“０”でない最後尾のＤＣＴ係数より高周波成分側の“０”の領域に、ビット取り出し部１４により取り出されたビットに対応する数値を埋め込む処理を実施する。
なお、データ埋め込み部１５はデータ埋め込み手段を構成している。
【００３４】
送信バッファメモリ１６は電子透かし埋め込み部１１により電子透かしが埋め込まれた原画ＭＰＥＧコードである電子透かし入り画像データ１７を保持し、その電子透かし入り画像データ１７を回線などに送出する。
【００３５】
図２はこの発明の実施の形態１による電子透かし装置の検出側を示す構成図である。
図２において、受信バッファメモリ１８は回線などから電子透かし入り画像データ１７を受信して保持するメモリである。
電子透かし検出部１９は受信バッファメモリ１８に保持されている電子透かし入り画像データ１７から、所定の規則にしたがって可変長データである静止画圧縮データ、音声圧縮データ及び時刻位置データを検出し、電子透かし入り画像データ１７から可変長データを削除することで、原画ＭＰＥＧコードを復元する処理を実施する。
【００３６】
電子透かし検出部１９の数値読み出し部２０はデータ埋め込み部１５によりブロックが選択される際の規則と同一の規則にしたがって読み出し対象のブロックを選択し、そのブロックにおける領域の数値を読み出す処理を実施する。
なお、数値読み出し部２０は数値読み出し手段を構成している。
データ検出部２１は数値読み出し部２０により読み出された数値の系列とユニークワードを比較して、その系列の中から可変長データである静止画圧縮データ、音声圧縮データ及び時刻位置データを検出するとともに、その可変長データが埋め込まれる前の原画の画像コードに相当するＭＰＥＧコードを復元する処理を実施する。
なお、データ検出部２１はデータ検出手段を構成している。
【００３７】
ＭＰＥＧ復号バッファメモリ２２は電子透かし検出部１９から出力された復元ＭＰＥＧコードを保持するメモリである。
ＭＰＥＧデコーダ２３はＭＰＥＧ復号バッファメモリ２２に保持されている復元ＭＰＥＧコードを復号して検出映像データをディスプレイ２４に出力する処理を実施する。
ディスプレイ２４はＭＰＥＧデコーダ２３から出力された検出映像データにしたがって映像を表示する。
【００３８】
静止画復号バッファメモリ２５は電子透かし検出部１９から出力された検出静止画圧縮データを保持するメモリである。
静止画デコーダ２６は静止画復号バッファメモリ２５に保持されている検出静止画圧縮データを復号して検出静止画データをモニタ２７に出力する処理を実施する。
モニタ２７は静止画デコーダ２６から出力された検出静止画データにしたがって静止画を表示する。
【００３９】
音声復号バッファメモリ２８は電子透かし検出部１９から出力された検出音声圧縮データを保持するメモリである。
音声デコーダ２９は音声復号バッファメモリ２８に保持されている検出音声圧縮データを復号して検出音声データをスピーカ３０に出力する処理を実施する。
スピーカ３０は音声デコーダ２９から出力された検出音声データにしたがって音声を再生する。
時刻表示器３１は電子透かし検出部１９から出力された検出時刻位置データにしたがって現在時刻と現在位置を表示する。
【００４０】
なお、図１は電子透かし装置の埋め込み側の構成を示し、図２は電子透かし装置の検出側の構成を示しているが、この実施の形態１の電子透かし装置は、埋め込み側の構成と検出側の構成の双方を備えているものとする。
【００４１】
次に動作について説明する。
ビデオカメラ１は、動画を撮影すると、その動画の映像データをＭＰＥＧエンコーダ２に出力する。
ＭＰＥＧエンコーダ２は、ビデオカメラ１から映像データを受けると、その映像データを圧縮して原画ＭＰＥＧコードを生成し、その原画ＭＰＥＧコードをＭＰＥＧ埋め込みバッファメモリ３に格納する。
【００４２】
デジタルスチルカメラ４は、静止画を撮影すると、その静止画の静止画データを静止画エンコーダ５に出力する。
静止画エンコーダ５は、デジタルスチルカメラ４から静止画データを受けると、その静止画データを圧縮して静止画圧縮データを生成し、その静止画圧縮データを静止画埋め込みバッファメモリ６に格納する。
【００４３】
マイク７は、音声を集音して、音声データを音声エンコーダ８に出力する。
音声エンコーダ８は、マイク７から音声データを受けると、その音声データを圧縮して音声圧縮データを生成し、その音声圧縮データを音声埋め込みバッファメモリ９に格納する。
電波時計・ＧＰＳ１０は、ＧＰＳ衛星から送信されるＧＰＳデータを受信して、現在時刻と現在位置を検出し、現在時刻と現在位置を示す時刻位置データを電子透かし埋め込み部１１に出力する。
【００４４】
電子透かし埋め込み部１１は、ＭＰＥＧ埋め込みバッファメモリ３に保持されている原画ＭＰＥＧコードに対して、静止画埋め込みバッファメモリ６に保持されている静止画圧縮データと、音声埋め込みバッファメモリ９に保持されている音声圧縮データと、電波時計・ＧＰＳ１０から出力された時刻位置データとを電子透かしとして埋め込む処理を実施する。
電子透かし埋め込み部１１における概略的な埋め込み手順は、図２３の埋め込み手順と同様である。
以下、電子透かし埋め込み部１１の特徴的な処理内容を具体的に説明する。
【００４５】
電子透かし埋め込み部１１のＤＣＴ変換部１２は、ＭＰＥＧ埋め込みバッファメモリ３に保持されている原画ＭＰＥＧコードをブロック単位に分割し、各ブロックの画素の成分をＤＣＴ変換して、各ブロックの画素のＤＣＴ係数を算出する。
図２２（ａ）は画像のブロック分割例を示しており、元の画像の解像度が、例えば、水平１６０画素（２０ブロック）×垂直１２０画素（１５ブロック）であれば、２０×１５＝３００のブロックが存在する。
図２２（ｂ）は各ブロックの画素の成分を示しており、図２２（ｃ）は各ブロックの画素のＤＣＴ係数を示している。
【００４６】
電子透かし埋め込み部１１の係数並び替え部１３は、ＤＣＴ変換部１２が各ブロックの画素のＤＣＴ係数を算出すると、図２２（ｄ）に示すように、各ブロックの画素のＤＣＴ係数をジグザグスキャン順序に並び替える処理を実施する。
電子透かし埋め込み部１１のビット取り出し部１４は、ヘッダにユニークワード、シーケンス番号及びデータ長を示すビット情報が付加されている可変長データの先頭から順番にビットを取り出す処理を実施する。
【００４７】
ここで、図３は可変長データのデータ構成を示す説明図である。
静止画データ、音声データ、時刻位置データ（テキストデータ）などの可変長データは、データ本体であるペイロードの前にヘッダが配置されている。
可変長データのヘッダには、例えば、３２ビットのユニークワードと、８ビットのシーケンス番号と、１６ビットのデータ長を示す情報ビットが格納されている。
【００４８】
“ユニークワード”は、電子透かしの埋め込み対象の画像の映像データと異なる可変長データが埋め込まれていることと、当該可変長データの先頭を特定するためのデータである。
ユニークワードは、通常の可変長データにはあり得ない語長の系列で構成されている。
図３の例では、３２ビットの“ＤＥＡＤＢＥＥＦ（１６進）”で構成されている。
【００４９】
ただし、万が一、ユニークワードと同一の系列が可変長データのペイロード内に存在する場合、ペイロード内のデータをユニークワードと誤って検出してしまうため、ペイロード内の系列である“ＤＥＡＤＢＥＥＥ（１６進）”については最後の１ビットに“０”を追加することにより、“ＤＥＡＤＢＥＥＥ（１６進）＋０（２進）”という別のコードに変更し、ペイロード内の系列である“ＤＥＡＤＢＥＥＦ（１６進）”については“ＤＥＡＤＢＥＥＥ（１６進）＋１（２進）”という別のコードに変更する。
このように、ペイロード内の系列を変更すると、検出側では、“ＤＥＡＤＢＥＥＦ（１６進）”はユニークワードとして検出され、“ＤＥＡＤＢＥＥＥ（１６進）＋０（２進）”はペイロード内の系列“ＤＥＡＤＢＥＥＥ（１６進）”として検出され、“ＤＥＡＤＢＥＥＥ（１６進）＋１（２進）”はペイロード内の系列“ＤＥＡＤＢＥＥＦ（１６進）”として検出される。
【００５０】
“シーケンス番号”は、当該可変長データが何のデータ（例えば、静止画データ、音声データ、時刻位置データ）であるかを特定するための数値である。
“データ長”は、当該可変長データの終わりを特定するためのデータであり、可変長データの長さを示している。
【００５１】
なお、可変長データを秘匿する必要がある場合には、図示せぬ暗号化手段が、ペイロード用鍵を用いて、その可変長データのペイロードを暗号化し、検出時には、同じペイロード用鍵を用いて、その可変長データのペイロードを解読するようにする。
数人で可変長データを重畳するときは、これらのペイロード用鍵を各自が秘匿するようにすれば、他人がペイロードを解読することができなくなる。
また、画像を秘匿する必要がある場合には、図示せぬ暗号化手段が、画像復元用鍵を用いて、可変長データのヘッダを暗号化する。
画像を復元する権利を持つ人が共通で画像復元用鍵を持つようにすれば、可変長データのヘッダを除去して、元の画像を正確に復元することができる。
【００５２】
電子透かし埋め込み部１１のデータ埋め込み部１５は、係数並び替え部１３が各ブロックの画素のＤＣＴ係数をジグザグスキャン順序に並び替えると、図４に示すように、並び替え後のブロックの中から、鍵により定められた順番で埋め込み対象のブロックを選択する。
データ埋め込み部１５は、埋め込み対象のブロックを選択すると、そのブロックにおけるＤＣＴ係数の中で、“０”でない最後尾のＤＣＴ係数より高周波成分側の“０”の領域に、ビット取り出し部１４により取り出されたビットに対応する数値を埋め込む処理を実施する。
【００５３】
ここで、図４はデータ埋め込み部１５による電子透かしの埋め込み方法を示す説明図である。
例えば、可変長データを画像の輝度信号にだけ埋め込む場合、画像の解像度が水平１６０画素×垂直１２０画素であれば、１フレームのブロック数は３００個である（図２２（ａ）を参照）。
このとき、左上のブロックから順番に、１ビットずつ埋め込むようにしてもよいが、画質が劣化しているブロックが左上に集中するのを避けるため、画質が劣化しているブロックが画像全体に分散するように、所定の鍵で埋め込むブロックの順序を決定する（埋め込むブロックが重複しないように決定する）。
そして、当該ブロックの係数に１ビットずつ埋め込み、可変長データを構成するｎビットのうち、３００のビットを埋め込んだ後は、同一のブロック順序で、次の係数に埋め込むようにする。
【００５４】
図４の例では、最初に、最も高周波成分側である第６４係数の領域に３００のビットを埋め込み、それ以降は、第６３係数の領域、第６２係数の領域、第６１係数の領域、第６０係数の領域に、順次、３００のビットを埋め込んでいる。
最後に、第５９係数の領域に残りのビットを埋め込んでいる。
このように、最も高周波成分側の領域から低周波成分側の領域に順次ビットを埋め込むことで、ブロックの数よりも大きなビット数の可変長データを埋め込むことができる。
【００５５】
なお、図４の例では、可変長データを構成するビットが“０”であれば、“−１”を埋め込み、可変長データを構成するビットが“１”であれば、“＋１”を埋め込むようにしている。
この場合、画像コードの０領域における“０”と埋め込みビットを区別することができるため、検出側では、埋め込みビットが可変長データを構成するビットであることを認識することができる。
【００５６】
図４では、第５９係数の領域に残りのビットを埋め込んでいる例を示しているが、可変長データのデータ長が更に長い場合、第５９係数よりも更に低周波成分側の領域にビットを埋め込む必要がある。
図５の例では、第５７係数の領域に可変長データｄ（ｉ）を埋め込んだ後、可変長データｄ（ｉ＋１）を次のブロックに埋め込む際、可変長データｄ（ｉ＋１）を埋め込むブロックの位置が、当該ブロックの“０”でない最後尾のＤＣＴ係数の次の係数の位置であるため、その位置を強制的に“０”として、当該ブロックをスキップし、可変長データｄ（ｉ＋１）を次のブロックに埋め込むようにしている。
それ以降、第５６係数の領域に埋め込む際、第５６係数より高周波成分側に“０”（先に強制的に埋め込んだ“０”）があれば、当該領域は画像コードが埋め込まれているブロックであることが分かるので、可変長データｄ（ｊ）の次の可変長データｄ（ｊ＋１）は当該ブロックをスキップして、次のブロックに埋め込むようにしている。
【００５７】
図５の例では、可変長データを検出する際、ヘッダにデータ長を示す情報ビットが記録されているので、そのデータ長まで、順次、可変長データｄ（１）〜ｄ（ｎ）を読み出せば検出することができる。
読み出しの途中で、“０”がある場合、“０”をスキップすれば、正確に可変長データｄ（１）〜ｄ（ｎ）を検出することができる。
また、可変長データｄ（１）〜ｄ（ｎ）を全て“０”にすることで、正確に元の画像コードを復元することができる。
【００５８】
上記のようにして、電子透かし埋め込み部１１が電子透かしを原画ＭＰＥＧコードに埋め込むことにより、電子透かし入り画像データ１７を送信バッファメモリ１６に書き込むと、送信バッファメモリ１６から電子透かし入り画像データ１７が回線などに送出される。
【００５９】
受信バッファメモリ１８は、回線などから電子透かし入り画像データ１７を受信して保持する。
電子透かし検出部１９は、受信バッファメモリ１８に保持されている電子透かし入り画像データ１７から、可変長データである静止画圧縮データ、音声圧縮データ及び時刻位置データを検出し、電子透かし入り画像データ１７から可変長データを削除することで、原画ＭＰＥＧコードを復元する。
電子透かし検出部１９における概略的な検出手順は、図２４の検出手順と同様である。
以下、電子透かし検出部１９の特徴的な処理内容を具体的に説明する。
【００６０】
電子透かし検出部１９の数値読み出し部２０は、電子透かし埋め込み部１１のデータ埋め込み部１５によりブロックが選択される際の規則と同一の規則にしたがって読み出し対象のブロックを選択する。
即ち、数値読み出し部２０は、図４及び図５に示すように、データ埋め込み部１５が選択するブロックの順番と同一の順番で読み出し対象のブロックを選択する。
数値読み出し部２０は、読み出し対象のブロックを選択すると、そのブロックにおける領域の数値を読み出す処理を実施する。
【００６１】
電子透かし検出部１９のデータ検出部２１は、数値読み出し部２０により読み出された数値の系列とユニークワード（可変長データのヘッダに記録されている３２ビットのユニークワードと同一のユニークワード）を比較する。
データ検出部２１は、数値読み出し部２０により読み出された数値の系列の中に、当該ユニークワードと同一の系列があれば、その系列は検出対象の可変長データの先頭部分であると認識する。
【００６２】
データ検出部２１は、可変長データの先頭部分を検出すると、先頭部分に続く系列とシーケンス番号（可変長データのヘッダに記録されている８ビットのシーケンス番号と同一のシーケンス番号）を比較する。
データ検出部２１は、先頭部分に続く系列が静止画圧縮データのシーケンス番号と一致していれば、当該系列は、静止画圧縮データのヘッダの一部を構成している系列であると認識する。
また、データ検出部２１は、先頭部分に続く系列が音声圧縮データのシーケンス番号と一致していれば、当該系列は、音声圧縮データのヘッダの一部を構成している系列であると認識する。
また、データ検出部２１は、先頭部分に続く系列が時刻位置データのシーケンス番号と一致していれば、当該系列は、時刻位置データのヘッダの一部を構成している系列であると認識する。
【００６３】
データ検出部２１は、可変長データ（静止画圧縮データ、音声圧縮データ、時刻位置データ）の種類を特定すると、上記系列に続く系列である１６ビットのデータ長を示す情報ビットを検出する。
データ検出部２１は、可変長データのデータ長を示す情報ビットを検出すると、可変長データのヘッダに続くペイロードの長さを認識して、可変長データのペイロードを検出する。
可変長データのペイロードには、“−１”または“＋１”の数値が埋め込まれており、数値が“−１”であれば、可変長データのビットが“０”であると認識し、数値が“＋１”であれば、可変長データのビットが“１”であると認識する。
データ検出部２１は、上記のようにして、可変長データである静止画圧縮データ、音声圧縮データ及び時刻位置データを検出すると、検出静止画圧縮データ、検出音声圧縮データ及び検出時刻位置データとして、静止画復号バッファメモリ２５、音声復号バッファメモリ２８及び時刻表示器３１に出力する。
【００６４】
データ検出部２１は、数値読み出し部２０により読み出された数値のうち、可変長データに係る数値以外の数値は、ＭＰＥＧコードに係る数値であると認識する。
このとき、数値が“０”であれば、ＭＰＥＧコードの０領域であり、数値が“０”でなければ、ＭＰＥＧコードのＤＣＴ係数であると認識する。
【００６５】
データ検出部２１は、ＭＰＥＧコードのＤＣＴ係数を特定すると、各ブロックの順番を元に戻し（係数並び替え部１３によりジグザグスキャン順序に並び替えられる前の状態に戻す）、各ブロックの画素のＤＣＴ係数を逆ＤＣＴ変換して、各ブロックの画素の成分を求める（図２２（ｃ）→図２２（ｂ）の状態に戻す）。
データ検出部２１は、逆ＤＣＴ変換後のＭＰＥＧコードを復元ＭＰＥＧコード（ＭＰＥＧエンコーダ２から出力された原画ＭＰＥＧコードに相当するＭＰＥＧコード）としてＭＰＥＧ復号バッファメモリ２２に出力する。
【００６６】
ＭＰＥＧデコーダ２３は、電子透かし検出部１９が復元ＭＰＥＧコードをＭＰＥＧ復号バッファメモリ２２に格納すると、その復元ＭＰＥＧコードを復号して検出映像データをディスプレイ２４に出力する。
ディスプレイ２４は、ＭＰＥＧデコーダ２３から出力された検出映像データにしたがって映像を表示する。
【００６７】
静止画デコーダ２６は、電子透かし検出部１９が検出静止画圧縮データを静止画復号バッファメモリ２５に格納すると、その検出静止画圧縮データを復号して検出静止画データをモニタ２７に出力する。
モニタ２７は、静止画デコーダ２６から出力された検出静止画データにしたがって静止画を表示する。
【００６８】
音声デコーダ２９は、電子透かし検出部１９が検出音声圧縮データを音声復号バッファメモリ２８に格納すると、その検出音声圧縮データを復号して検出音声データをスピーカ３０に出力する。
スピーカ３０は、音声デコーダ２９から出力された検出音声データにしたがって音声を再生する。
時刻表示器３１は、電子透かし検出部１９から検出時刻位置データを受けると、その検出時刻位置データにしたがって現在時刻と現在位置を表示する。
【００６９】
この実施の形態１の電子透かし装置では、電子透かしの埋め込み時に、大量の可変長データを重畳して埋め込むことができるため、従来例のように、多重器１０４で付加データを予め多重化する必要がない。
また、検出時に、重畳された可変長データを個別に検出することができるので、従来例のように分離器１１１で付加データを分離する必要がない。
【００７０】
ここまでは、図４及び図５を用いて、可変長データの埋め込み方法を説明したが、図６のようにして、可変長データを埋め込むようにしてもよい。
図４及び図５では、“０”でない最後尾のＤＣＴ係数が第６３係数までのとき有効であり、“０”でない最後尾のＤＣＴ係数が第６４係数まである場合には適用することができないが、図６では、“０”でない最後尾のＤＣＴ係数が第６４係数まである場合も適用することができる。
【００７１】
図４及び図５では、可変長データを構成するビットが“０”であれば、“−１”を埋め込み、可変長データを構成するビットが“１”であれば、“＋１”を埋め込むようにしているが、図６では、可変長データを構成するビットが“０”であれば、“０”を埋め込み、可変長データを構成するビットが“１”であれば、“１”を埋め込むようにする。
データ埋め込み部１５は、可変長データを構成するビットを埋め込む過程で、“０”でない最後尾のＤＣＴ係数を検出すると、そのＤＣＴ係数が正の値であれば、そのＤＣＴ係数に“１”を加算し、その可変長データを構成するビットを埋め込まずスキップして、次のブロックに埋め込むようにする。
ただし、“０”でない最後尾のＤＣＴ係数の絶対値が最大値であり、“１”を加算することができない場合、そのＤＣＴ係数に“１”を加算せずに、そのＤＣＴ係数の絶対値が最大値である旨を示す情報ビットを上記ＤＣＴ係数より１つ高周波成分側の領域に含めるようにする。検出側では、１つ高周波成分側の領域に含められている情報ビットを見れば、そのＤＣＴ係数の絶対値が最大値であるために、“１”が加算されていないことを認識することができる。
【００７２】
図６の例では、第５６係数の領域に可変長データｄ（ｉ）を埋め込んだ後、可変長データｄ（ｉ＋１）を次のブロックに埋め込む際、可変長データｄ（ｉ＋１）を埋め込むブロックの位置が、当該ブロックの“０”でない最後尾のＤＣＴ係数の位置であるため、そのＤＣＴ係数に“１”を加算して、当該ブロックをスキップし、可変長データｄ（ｉ＋１）を次のブロックに埋め込むようにしている。
この場合、“０”でない最後尾のＤＣＴ係数は、“２”以上の正の値か、負の値になり、可変長データを構成するビット“０”，“１”と区別することができる。
なお、高周波成分の領域に、“２”以上の正の値か、負の値がある場合も、その値が画像コードであることが分かるので、可変長データを構成するビットの埋め込みをスキップするようにする。
【００７３】
図６の例では、可変長データを検出する際、ヘッダにデータ長を示す情報ビットが記録されているので、そのデータ長まで、順次、可変長データｄ（１）〜ｄ（ｎ）を読み出せば検出することができる。
読み出しの途中で、“２”以上の正の値か、負の値がある場合、それらをスキップすれば、正確に可変長データｄ（１）〜ｄ（ｎ）を検出することができる。
また、可変長データｄ（１）〜ｄ（ｎ）を削除して、正確に元の画像コードを復元する場合、“２”以上の正の値には“−１”を加えて、画像コードを元に戻せば、正確に元の画像コードを復元することができる。
【００７４】
ここでは、可変長データを構成するビットが“０”であれば、“０”を埋め込み、可変長データを構成するビットが“１”であれば、“１”を埋め込むものについて示したが、可変長データを構成するビットが“０”または“−１”である場合、可変長データを構成するビットが“０”であれば、“０”を埋め込み、可変長データを構成するビットが“−１”であれば、“−１”を埋め込むようにする。
データ埋め込み部１５は、可変長データを構成するビットを埋め込む過程で、“０”でない最後尾のＤＣＴ係数を検出すると、そのＤＣＴ係数が負の値であれば、そのＤＣＴ係数に“−１”を加算し、その可変長データを構成するビットを埋め込まずスキップして、次のブロックに埋め込むようにする。
ただし、“０”でない最後尾のＤＣＴ係数の絶対値が最大値であり、“−１”を加算することができない場合、そのＤＣＴ係数に“−１”を加算せずに、そのＤＣＴ係数の絶対値が最大値である旨を示す情報ビットを上記ＤＣＴ係数より１つ高周波成分側の領域に含めるようにする。検出側では、１つ高周波成分側の領域に含められている情報ビットを見れば、そのＤＣＴ係数の絶対値が最大値であるために、“−１”が加算されていないことを認識することができる。
【００７５】
この場合、“０”でない最後尾のＤＣＴ係数は、正の値か、“２”以下の負の値になり、可変長データを構成するビット“０”，“−１”と区別することができる。
可変長データを検出する際、正の値か、“２”以下の負の値がある場合、それらをスキップすれば、正確に可変長データｄ（１）〜ｄ（ｎ）を検出することができる。
【００７６】
図４及び図５では、シーケンスが１つだけの例を示したが、シーケンスが２つ以上ある場合、図６のようにして、可変長データを埋め込むようにする。
重畳する可変長データをシーケンス１とシーケンス２とすると、シーケンス１については上記の埋め込み方法で埋め込むようにする。
シーケンス２については、シーケンス１の全ての埋め込み終わった第５９係数の１つ前の第５８係数から、第１シーケンスと同じ埋め込み方法で埋め込むようにする。
第５８係数に全て埋め込んだ後は、順次、第５７係数、第５６係数へと埋め込みを継続する。
【００７７】
可変長データの検出の際は、シーケンス１，２のヘッダにはユニークワードが記録されているので、第６４係数のブロック埋め込み順の先頭からデータを読み出し、それがユニークワードであれば、それがシーケンスの先頭であることが分かり、その後のシーケンス番号を読み出して、検出対象のシーケンスか否かを判定する。
検出対象のシーケンスであれば、その後の可変長データのデータ長を示す情報ビットを検出して、その分のデータを読み込めば、正確に検出対象のシーケンスの可変長データを検出することができる。
【００７８】
次に、画像コードの全ての０領域に、可変長データを埋め込み尽くした場合について説明する。
例えば、画像コードの０領域に、可変長データ“０”（００００  ００００  ００００  ００００二進数）、または、“−１”（１１１１  １１１１  １１１１  １１１１二進数２の補数表現）を埋め込んでいき、全ての０領域に可変長データを埋め込み尽くした場合、埋め込まれた可変長データに対して、下位２ビット目と、その上位ビットの全てを“０”、または、“１”として埋め込むことで、可変長データの埋め込みを継続することができる。
【００７９】
最初のビットが“０”（００００  ００００  ００００  ００００二進数）だったものの下位２ビット目と、その上位ビットの全てに“０”を埋め込むと、“０”（００００  ００００  ００００  ００００二進数）、“１”を埋め込むと、“−２”（１１１１ １１１１  １１１１  １１１０二進数）となる。
また、最初のビットが“−１”（１１１１  １１１１  １１１１  １１１１二進数）だったものの下位２ビット目と、その上位ビットの全てに“０”を埋め込むと、“＋１”（００００  ００００  ００００  ０００１二進数)、“１”を埋め込むと、“−１”（１１１１  １１１１  １１１１  １１１０二進数）となる。
【００８０】
これらの結果は、数値で“−２”、“−１”、“０”、“＋１”であり、絶対値が小さな数値である。
検出のときは、最下位の１ビット目が最初に埋め込まれた可変長データ、下位２ビット目が次に埋め込まれた可変長データであり、正確に検出することができる。
画像コードとの識別方法として、画像コードの最後の“０”でないＤＣＴ係数が正の値のときは“＋１”を加え、負の値のときは“−２”を加えることで、“−３”以下、または、“＋２”以上の数値に変更すればよい。上位３ビット目以降に埋め込むときも同様である。
【００８１】
以上で明らかなように、この実施の形態１によれば、ＤＣＴ変換部１２により算出された各ブロックの画素のＤＣＴ係数をジグザグスキャン順序に並び替える係数並び替え部１３と、ヘッダにユニークワードが付加されている可変長データの先頭から順番にビットを取り出すビット取り出し部１４とを設け、データ埋め込み部１５が所定の規則にしたがって埋め込み対象のブロックを選択し、係数並び替え部１３による並び替え後の当該ブロックにおけるＤＣＴ係数の中で、“０”でない最後尾のＤＣＴ係数より高周波成分側の“０”の領域に、ビット取り出し部１４により取り出されたビットに対応する数値を埋め込むように構成したので、ブロックの数よりも大きくなる可能性がある可変長データを正確に検出することが可能になり、また、再生画像の劣化を防止することが可能になる効果を奏する。
【００８２】
また、この実施の形態１によれば、データ埋め込み部１５によりブロックが選択される際の規則と同一の規則にしたがって読み出し対象のブロックを選択し、そのブロックにおける領域の数値を読み出す数値読み出し部２０と、数値読み出し部２０により読み出された数値の系列とユニークワードを比較して、その系列の中から可変長データを検出するとともに、その可変長データが埋め込まれる前の画像の画像コードを検出するデータ検出部２１とを設けるように構成したので、ブロックの数よりも大きくなる可能性がある可変長データを正確に検出することができるとともに、再生画像の劣化を防止することができる効果を奏する。
【００８３】
この実施の形態１によれば、データ埋め込み部１５は、ビット取り出し部１４により取り出されたビットに対応する数値を埋め込む際、“０”でない最後尾のＤＣＴ係数より高周波成分側の“０”の領域の中で、未だビットに対応する数値を埋め込んでいない最も高周波成分側の領域に埋め込むように構成したので、元の画像コードを破壊することなく、可変長データを埋め込むことができる効果を奏する。
【００８４】
この実施の形態１によれば、データ埋め込み部１５は、ビット取り出し部１４により取り出されたビットが“０”であれば、“０”でない最後尾のＤＣＴ係数より高周波成分側の“０”の領域に“−１”を埋め込み、そのビットの値が“１”であれば、上記領域に“＋１”を埋め込み、データ検出部２１は、数値読み出し部２０により読み出された数値が“０”であれば、その数値は可変長データの一部を構成しておらず、“０”の領域であると認識するように構成したので、元の画像コードと可変長データを正確に区別して検出することができる効果を奏する。
【００８５】
この実施の形態１によれば、データ埋め込み部１５は、“０”でない最後尾のＤＣＴ係数が正の値であれば、そのＤＣＴ係数に“＋１”を加え、“０”でない最後尾のＤＣＴ係数が負の値であれば、そのＤＣＴ係数に“−１”を加え、データ検出部２１は、数値読み出し部２０により読み出された数値が“＋２”以上であれば、その数値に“−１”を加え、その数値が“−２”以下であれば、その数値に“＋１”を加えるように構成したので、可変長データを構成するビット“０”，“＋１”、または、“０”，“−１”であるとき、そのビットの値をそのまま埋め込む場合でも、元の画像コードと可変長データを正確に区別して検出することができる効果を奏する。
【００８６】
この実施の形態１によれば、データ埋め込み部１５は、可変長データを構成するビットの値が“０”又は“＋１”である場合、“０”でない最後尾のＤＣＴ係数が正の値であれば、そのＤＣＴ係数に“＋１”を加え、データ検出部２１は、数値読み出し部２０により読み出された数値が“＋２”以上であれば、その数値に“−１”を加えるように構成したので、可変長データを構成するビットの値が“０”又は“＋１”であるとき、そのビットの値をそのまま埋め込む場合でも、元の画像コードと可変長データを正確に区別して検出することができる効果を奏する。
【００８７】
この実施の形態１によれば、データ埋め込み部１５は、可変長データを構成するビットの値が“０”又は“−１”である場合、“０”でない最後尾のＤＣＴ係数が負の値であれば、そのＤＣＴ係数に“−１”を加え、データ検出部２１は、数値読み出し部２０により読み出された数値が“−２”以下であれば、その数値に“＋１”を加えるように構成したので、可変長データを構成するビットの値が“０”又は“−１”であるとき、そのビットの値をそのまま埋め込む場合でも、元の画像コードと可変長データを正確に区別して検出することができる効果を奏する。
【００８８】
この実施の形態１によれば、データ埋め込み部１５は、“０”でない最後尾のＤＣＴ係数の絶対値が最大値である場合、ＤＣＴ係数を加算する処理を実施せずに、そのＤＣＴ係数の絶対値が最大値である旨を示す情報ビットを上記ＤＣＴ係数より１つ高周波成分側の領域に含めるように構成したので、検出側では、１つ高周波成分側の領域に含められている情報ビットを見れば、そのＤＣＴ係数の絶対値が最大値であるために、“−１”が加算されていないことを認識することができる効果がある。
【００８９】
この実施の形態１によれば、データ埋め込み部１５は、ビット取り出し部１４が可変長データから１ビットを取り出す毎に、その１ビットを埋め込む対象のブロックが同一のブロックに重複しないように所定の鍵により定められた順番で選択するように構成したので、埋め込み対象のブロックが分散されて、再生画像の劣化を分かりづらくすることができる効果を奏する。
【００９０】
この実施の形態１によれば、データ埋め込み部１５は、所定の規則にしたがって選択した埋め込み対象のブロックに可変長データを埋め込むことができない場合、埋め込み対象のブロックを再選択して、当該ブロックに可変長データを埋め込み、数値読み出し部２０は、上記ブロックを読み出し対象のブロックとして選択するように構成したので、元の画像コードを破壊することなく、可変長データを埋め込むことができる効果を奏する。
【００９１】
この実施の形態１によれば、ビット取り出し部１４は、ヘッダにデータ長を示す情報ビットが付加されている可変長データの先頭から順番にビットを取り出すように構成したので、可変長データのデータ長が変化しても、その可変長データの終わりを特定することができるようになり、可変長データを正確に検出することができる効果を奏する。
【００９２】
この実施の形態１によれば、データ埋め込み部１５は、可変長データを構成するビットをブロックに埋め込む際、その可変長データの中にユニークワードと同一の系列が存在する場合、その系列を別のコードに置き換えるように構成したので、可変長データの本体のデータをユニークワードと誤認することを防止することができる効果を奏する。
【００９３】
この実施の形態１によれば、可変長データを秘匿する必要がある場合、ペイロード用鍵を用いて、その可変長データのペイロードを暗号化する一方、画像を秘匿する必要がある場合、画像復元用鍵を用いて、その可変長データのヘッダを暗号化するように構成したので、ユーザが所有している権限に応じて、例えば、可変長データを読むことはできなくても、可変長データを消去して元の画像コードを復元することができるなど、様々な使用方法を提供することができる効果を奏する。
【００９４】
実施の形態２．
上記実施の形態１では、データ埋め込み部１５がビット取り出し部１４により取り出されたビットに対応する数値を埋め込む際、“０”でない最後尾のＤＣＴ係数より高周波成分側の“０”の領域の中で、未だビットに対応する数値を埋め込んでいない最も高周波成分側の領域に埋め込むものについて示したが、データ埋め込み部１５がビット取り出し部１４により取り出されたビットに対応する数値を埋め込む際、“０”でない最後尾のＤＣＴ係数より高周波成分側の“０”の領域の中で、未だビットに対応する数値を埋め込んでいない最も低周波成分側の領域に埋め込むようにしてもよい。
図７はこの発明の実施の形態２による電子透かし装置のデータ埋め込み部１５による電子透かしの埋め込み方法を示す説明図である。
【００９５】
図７の例では、可変長データを構成するビットが“０”であれば、データ埋め込み部１５が“−１”を埋め込み、可変長データを構成するビットが“１”であれば、データ埋め込み部１５が“＋１”を埋め込むようにしている。
また、データ埋め込み部１５は、上記実施の形態１と同様に、鍵により定められた順番で埋め込み対象のブロックを選択し、そのブロックにおいて、“０”でない最後尾のＤＣＴ係数を検出すると、そのＤＣＴ係数より１つ高周波成分側の領域に、ビット取り出し部１４により取り出されたビットに対応する数値“−１”又は“＋１”を埋め込むようにしている。
【００９６】
以降、“０”でない最後尾のＤＣＴ係数より１つ高周波成分側の領域に、既に、ビット取り出し部１４により取り出されたビットに対応する数値“−１”又は“＋１”を埋め込んでいる場合には、更に、１つ高周波成分側の領域に、ビット取り出し部１４により取り出されたビットに対応する数値“−１”又は“＋１”を埋め込むようにしている。
図７の例では、“０”でない最後尾のＤＣＴ係数より、１〜４、または、１〜５高周波成分側の領域に、ビット取り出し部１４により取り出されたビットに対応する数値“−１”又は“＋１”を埋め込んでいる。
【００９７】
また、図７の例では、全てのブロックに対する数値の埋め込み数（巡回数）を同じにするために、一部のブロック（４つの数値が埋められているブロック）に、ダミービットとして“１”を埋め込むようにしている。
検出側では、各ブロックの巡回数が等しいため、各ブロックの最も高い周波数成分からデータを順次読み出すことができる。
【００９８】
図８はデータ埋め込み部１５による他の電子透かしの埋め込み方法を示す説明図である。
図８の例では、ダミーデータを埋め込まなくても済むように、“０”でない最後尾のＤＣＴ係数より１つ高周波成分側の領域に“０”を埋め込み、その領域より１つ高周波成分側の領域に、順次、ビット取り出し部１４により取り出されたビットに対応する数値“−１”又は“＋１”を埋め込むようにしている。
検出側では、各ブロックの最も高い周波数成分は可変長データであり、それより低い周波数成分にある最初の“０”が、可変長データと画像コードの分離の印となるので、可変長データを正確に検出することができる。
【００９９】
図９はデータ埋め込み部１５による他の電子透かしの埋め込み方法を示す説明図である。
図９の例では、可変長データを構成するビットが“０”であれば、データ埋め込み部１５が“０”を埋め込み、可変長データを構成するビットが“１”であれば、データ埋め込み部１５が“１”を埋め込むようにしている。
データ埋め込み部１５は、可変長データを構成するビットを埋め込む過程で、“０”でない最後尾のＤＣＴ係数を検出すると、そのＤＣＴ係数が正の値であれば、そのＤＣＴ係数に“＋１”を加算し、そのＤＣＴ係数より１つ高周波側成分の領域に、ビット取り出し部１４により取り出されたビットに対応する数値“０”又は“１”を埋め込むようにしている。
【０１００】
以降、“０”でない最後尾のＤＣＴ係数より１つ高周波成分側の領域に、既に、ビット取り出し部１４により取り出されたビットに対応する数値“０”又は“１”を埋め込んでいる場合には、更に、１つ高周波成分側の領域に、ビット取り出し部１４により取り出されたビットに対応する数値“０”又は“１”を埋め込むようにしている。ビット取り出し部１４により取り出されたビットに対応する数値が第６４係数まで埋め込んだ後は、次のブロックにスキップして埋め込みを継続する。
この場合、画像コードの最後（“０”でない最後尾のＤＣＴ係数）は、“２”以上の正の値か、負の値であり、可変長データを構成するビット“０”，“１”と区別することができる。
【０１０１】
図９の例では、可変長データを検出する際、“２”以上の正の値と負の値が、画像コードと可変長データの分離の印であり、その分離の位置から１つ高周波成分側の領域からが可変長データである。
そして、その可変長データを構成するビットに対応する数値を順次検出していくが、第６４係数の領域から数値を検出した後は、次のブロックにスキップして、その可変長データを構成するビットに対応する数値の検出を継続すれば、全ての可変長データを正確に検出することができる。
また、可変長データを削除して、元の画像コードを復元する場合、分離の印である“２”以上の数値に“−１”を加えて、画像コードを元に戻せば、元の画像コードを正確に復元することができる。
【０１０２】
また、複数のシーケンスを重畳する場合、前に埋め込んだシーケンスより、１つ高周波成分側のＤＣＴ係数の埋め込みブロックの最初から次のシーケンスを埋め込めばよい。
ただし、上記実施の形態１のように、ダミーデータを入れない代わりに、各シーケンスの順回数の幅を一定にするために、第２シーケンス以降は、分離の印からの距離を一定とする。
図９の例では、可変長データを検出する際、画像コードと可変長データの分離の印を見つけ、その分離の印の位置から高周波成分側に同じ距離の位置から、埋め込みブロック順にデータを読み出して、ユニークワードを検出すれば、それが可変長データのシーケンスの先頭であり、その後のシーケンス番号を読み出して、検出対象のシーケンスか否かを判定する。
検出対象のシーケンスであれば、その後のデータ長を読み込んで、その分のデータを読み込めば、そのシーケンスの可変長データを正確に検出することができる。
【０１０３】
なお、ＭＰＥＧにおいて、ＰＳ（プログラムストリーム）やＴＳ（トランスポートストリーム）は、ＭＰＥＧのＥＳ（エレメンタリーストリーム）を固定長にパケット化してしまう関係上、可変長データをＰＳやＴＳに埋め込むときに画像のコード長が増加するため、パケットの分離、可変長データの埋め込み、再パケット化の過程が必要である。
したがって、予め、埋め込むデータ量が分かっているときは、その分のダミーデータを予め埋め込んでおいて、ＰＳやＴＳにした後、ダミーデータを可変長データに変更することで埋め込み、画像のコード長が増加しないようにする。
これにより、そのままのパケット構造を維持することができるため、パケットの分離や再パケット化の過程が不要となる。
【０１０４】
また、ダミービットを付加すると、そのダミービットの大きさに応じて画質が劣化することを利用すれば、コンテンツをユーザに提供する際の画像の画質を制御することができる。
例えば、異なる画像を復元する際の鍵を用いて、適当な大きさのダミービットを可変長データとして、徐々に画像に重畳することで、強制的に画像を徐々に劣化させるようにする。
この場合、ユーザは、各画像を復元する際の鍵で、徐々にダミービットを削除して、徐々に元の画像に近い状態に復元することができるが、その鍵の数により、復元可能な画像の画質の限界が制御される。
【０１０５】
以上で明らかなように、この実施の形態２によれば、データ埋め込み部１５がビット取り出し部１４により取り出されたビットに対応する数値を埋め込む際、“０”でない最後尾のＤＣＴ係数より高周波成分側の“０”の領域の中で、未だビットに対応する数値を埋め込んでいない最も低周波成分側の領域に埋め込むように構成したので、元の画像コードを破壊することなく、可変長データを埋め込むことができる効果を奏する。
【０１０６】
また、この実施の形態２によれば、データ埋め込み部１５がビット取り出し部１４により取り出されたビットに対応する数値を埋め込む際、“０”でない最後尾のＤＣＴ係数より高周波成分側の“０”の領域の中で、未だビットに対応する数値を埋め込んでいない最も低周波成分側の領域に“０”を埋め込み、その領域より高周波成分側の領域にビットに対応する数値を埋め込むように構成したので、ダミーデータを埋め込むことなく、元の画像コードと可変長データを正確に区別して検出することができる効果を奏する。
【０１０７】
この実施の形態２によれば、データ埋め込み部１５がビット取り出し部１４により取り出されたビットに対応する数値を埋め込む際、すべてのブロックに対する数値の埋め込み数が一致するように、一部のブロックにダミービットを埋め込むように構成したので、各ブロックの最も高い周波数成分からデータを順次読み出すことができる効果を奏する。
【０１０８】
この実施の形態２によれば、データ埋め込み部１５が可変長データであるダミービットを１回以上埋め込んで、徐々に画像を劣化させるように構成したので、ダミービットを埋め込む際の鍵の数により、復元可能な画像の画質の限界を制御することができる効果を奏する。
【０１０９】
実施の形態３．
上記実施の形態１では、データ埋め込み部１５がビット取り出し部１４により取り出されたビットに対応する数値を埋め込む際、“０”でない最後尾のＤＣＴ係数より高周波成分側の“０”の領域の中で、未だビットに対応する数値を埋め込んでいない最も高周波成分側の領域に埋め込むものについて示したが、データ埋め込み部１５が鍵により定められた順番で埋め込み対象のブロックを選択し、係数並び替え部１３による並び替え後の当該ブロックにおける所定の係数番号の領域に、ビット取り出し部１４により取り出されたビットに対応する数値を埋め込むようにしてもよい。
図１０はこの発明の実施の形態３による電子透かし装置のデータ埋め込み部１５による電子透かしの埋め込み方法を示す説明図である。
【０１１０】
図１０の例では、データ埋め込み部１５が、できるだけ“０”の係数を多く含む任意の係数番号の領域に、ビット取り出し部１４により取り出されたビットに対応する数値を埋め込むようにしている。
例えば、任意の係数番号の領域の全てが“０”である場合、ブロック数に等しい数だけ、ビット取り出し部１４により取り出されたビットに対応する数値を埋め込むことができる。
【０１１１】
即ち、データ埋め込み部１５は、ビット取り出し部１４により取り出されたビットに対応する数値を埋め込むに際して、画像コードの分布を分析することにより、できるだけ“０”の係数を多く含む係数番号の領域を探索し、その係数番号の“０”の領域に、ビット取り出し部１４により取り出されたビットに対応する数値“０”又は“１”を埋め込むようにする。
データ埋め込み部１５は、１つの係数番号の領域に埋め込み切れない場合、複数の係数番号の領域に分けて埋め込むようにする。
【０１１２】
画像コードと可変長データの分離方法としては、可変長データを構成するビットに対応する数値“０”又は“１”を埋め込む過程で、探索した係数番号の領域が、各ブロックの画像コードにおいて、“０”でない最後尾のＤＣＴ係数より低周波成分側の領域である場合、“０”でない最後尾のＤＣＴ係数が正の値であれば、そのＤＣＴ係数に“＋１”を加算し、可変長データを構成するビットに対応する数値を埋め込まずにスキップして、次のブロックに継続して埋め込むようにする。
【０１１３】
この場合、“０”でない最後尾のＤＣＴ係数は“２”以上の正の値か負の値であり、“２”以上の正の値か負の値であれば、“０”でない最後尾のＤＣＴ係数であることが分かるので、画像コードと可変長データを正確に区別して検出することができる。
ただし、探索した係数番号の領域よりも、高周波成分側の領域に、既に本方式の可変長データが埋め込まれている可能性があるが、その埋め込まれているデータが、可変長データであるか、画像コードであるかは、ユニークワードと照合することで判別することができる。
【０１１４】
探索した係数番号の領域よりも、高周波成分側の領域に、異なる方式の電子透かしの可変長データが埋め込まれている場合、その埋め込まれているデータが、可変長データであるか否かを識別することができないため、その埋め込まれているデータが、画像コードであると認識せざるを得ない。
この場合、途中の０領域も、画像コードと認識することになるため、可変長データを埋め込めないことになる。
これでは、埋め込める可変長データの容量が削減されてしまうので、別の埋め込み方法として、画像コードの途中の０領域にも、可変長データを構成するビットに対応する数値“０”又は“１”を埋め込むようにする。
【０１１５】
即ち、埋め込む位置のＤＣＴ係数が０以外のときは、そのＤＣＴ係数が正の値であれば、そのＤＣＴ係数に“＋１”を加えて、そのＤＣＴ係数を“−１”以下、または、“＋２”以上とすることで、画像コードであることを明確にして、その位置には可変長データを埋め込まないで、次のブロックにスキップするようにする。
検出時には、数値が“０”又は“１”であれば、可変長データを構成するビットに対応する数値であると認識し、数値が“−１”以下、または、“＋２”以上であれば、画像コードとして次のブロックにスキップするようにする。
元の画像コードに復元する場合には、“＋２”以上の数値に“−１”を加えるようにすればよい。
【０１１６】
図１１はデータ埋め込み部１５による他の電子透かしの埋め込み方法を示す説明図である。
図１０の例では、すべての係数番号の領域で、埋め込みブロックの順番が固定であるため、最初の順番のブロックに可変長データの埋め込みが集中し、そのブロックだけ大きく劣化してしまうようになる。
図１１の例では、係数番号の領域毎に、埋め込みブロックの順番を決めて、その順序で埋め込んでいくようにしている。
これにより、小さな複数の可変長データを重畳するときも、埋め込むブロックが分散して、画質劣化が特定のブロックに偏ることがなくなる。
【０１１７】
図１２はデータ埋め込み部１５による他の電子透かしの埋め込み方法を示す説明図である。
図１２の例では、１シーケンスが１つの係数番号の領域に埋め込み切れない場合、そのシーケンスをいくつかのパーティションに分けて、複数の係数番号の領域に埋め込むようにしている。
このとき、１から順番にパーティション番号を付け、検出する際には、そのパーティション番号の順番に、パーティションを並べて結合することで、元のシーケンスに戻すようにしている。
【０１１８】
図１３は可変長データのデータ構成を示す説明図である。
図１３の例では、ヘッダのシーケンス番号の後の定位置にパーティション番号を配置している。
パーティションの検出が終了した後、継続するパーティションが埋め込まれている係数番号を配置することで、容易に可変長データの検出を行うことができる。
また、他のシーケンスが、どの係数番号の領域に埋め込まれているかなどを示す情報ビットを埋め込めば、各シーケンスの検出をより容易に行うことができる。
【０１１９】
以上で明らかなように、この実施の形態３によれば、データ埋め込み部１５が鍵により定められた順番で埋め込み対象のブロックを選択し、係数並び替え部１３による並び替え後の当該ブロックにおける所定の係数番号の領域に、ビット取り出し部１４により取り出されたビットに対応する数値を埋め込むように構成したので、元の画像コードを破壊することなく、可変長データを埋め込むことができる効果を奏する。
【０１２０】
また、この実施の形態３によれば、データ埋め込み部１５は、可変長データを構成するビットの値が“０”又は“＋１”、あるいは、“０”又は“−１”である場合、所定の係数番号の領域が“０”であれば、その領域に上記ビットの値を埋め込み、所定の係数番号の領域が正の値であれば、その領域に“＋１”を加え、所定の係数番号の領域が負の値であれば、その領域に“−１”を加え、データ検出部２１は、数値読み出し部２０により読み出された数値が“＋２”以上であれば、上記数値に“−１”を加え、上記数値が“−２”以上であれば、上記数値に“＋１”を加えるように構成したので、元の画像コードと可変長データを正確に区別して検出することができる効果を奏する。
【０１２１】
この実施の形態３によれば、データ埋め込み部１５は、ビット取り出し部１４により取り出されたビットに対応する数値を埋め込むブロックが一巡する毎に、埋め込み対象のブロックの順番を変更するように構成したので、小さな複数の可変長データを重畳する場合でも、埋め込むブロックが分散されて、画質劣化が特定のブロックに偏ることを防止することができる効果を奏する。
【０１２２】
この実施の形態３によれば、可変長データが複数のシーケンスから構成されている場合、ビット取り出し部１４が、シーケンスの番号を示す情報ビットが付加されている可変長データの先頭から順番にビットを取り出すように構成したので、１シーケンスが１つの係数番号の領域に埋め込み切れない場合でも、１シーケンスのデータを埋め込むことができる効果を奏する。
【０１２３】
この実施の形態３によれば、ビット取り出し部１４が、シーケンスが２巡回目以降に継続する場合の開始位置と、他のシーケンスの開始位置を示す情報ビットが付加されている可変長データの先頭から順番にビットを取り出すように構成したので、各シーケンスを容易に検出することができる効果を奏する。
【０１２４】
実施の形態４．
上記実施の形態１では、電子透かし埋め込み部１１のＤＣＴ変換部１２が、ＭＰＥＧ埋め込みバッファメモリ３に保持されている原画ＭＰＥＧコードをブロック単位に分割し、各ブロックの画素の成分をＤＣＴ変換して、各ブロックの画素のＤＣＴ係数を算出するものについて示したが、ＤＣＴ変換部１２が、原画ＭＰＥＧコードを改ざん検出対象のブロックに分割して、各ブロックの画像コードのハッシュ値を算出し、そのハッシュ値を示す可変長データを生成するようにしてもよい。
この場合、ＤＣＴ変換部１２は可変長データ生成手段を構成している。
【０１２５】
電子透かし検出部１９の改ざん検出手段（図示せず）は、データ検出部２１が上記実施の形態１と同様にして、可変長データを検出するとともに、その可変長データを埋め込む前の原画ＭＰＥＧコード（復元ＭＰＥＧコード）を復元すると、その復元ＭＰＥＧコードのハッシュ値を算出し、そのハッシュ値とデータ検出部２１により検出された可変長データが示すハッシュ値を比較して、改ざんの有無を判定する処理を実施する。
【０１２６】
図１４は改ざん検出ブロックを示す説明図である。
図１４（ａ）は８×８のブロックＢ１〜Ｂ３００と改ざん検出ブロックの対応関係を示し、図１４（ｂ）は改ざん検出ブロック番号（１〜２５）を示している。
図１４の例では、改ざん検出ブロック１は、Ｂ１、Ｂ２、Ｂ３、Ｂ４、Ｂ３１、Ｂ３２、Ｂ３３、Ｂ３４、Ｂ６１、Ｂ６２、Ｂ６３、Ｂ６４の１２ブロックで構成されているが、この分割法は任意でよい。
【０１２７】
ＤＣＴ変換部１２は、例えば、改ざん検出ブロック１を構成する１２個のブロックＢ１、Ｂ２、Ｂ３、Ｂ４、Ｂ３１、Ｂ３２、Ｂ３３、Ｂ３４、Ｂ６１、Ｂ６２、Ｂ６３、Ｂ６４の画像コードを順に結合したデータに対して、ＳＨＡハッシュ関数を用いて、１６ビットのハッシュ値ｈ（１，１）〜ｈ（１，１６）を算出する。
ＤＣＴ変換部１２は、１６ビットのハッシュ値ｈ（１，１）〜ｈ（１，１６）を算出すると、そのハッシュ値ｈ（１，１）〜ｈ（１，１６）を可変長データとして、その改ざん検出ブロック１に埋め込むようにする。
改ざん検出ブロック２〜２５についても、改ざん検出ブロック１と同様にして、１６ビットのハッシュ値ｈ（２，１）〜ｈ（２，１６）、・・・・・、ｈ（２５，１）〜ｈ（２５，１６）を算出し、そのハッシュ値ｈ（２，１）〜ｈ（２，１６）、・・・・・、ｈ（２５，１）〜ｈ（２５，１６）を可変長データとして、その改ざん検出ブロック２〜２５に埋め込むようにする。
【０１２８】
図１５はこの発明の実施の形態４による電子透かし装置のデータ埋め込み部１５による電子透かしの埋め込み方法を示す説明図である。
図１５の例では、改ざん検出ブロック毎に区切り、その中で、上記実施の形態１〜３と同様の方法で、ハッシュ値を可変長データとして埋め込むようにしている。
【０１２９】
電子透かし検出部１９のデータ検出部２１は、上記実施の形態１〜３と同様の方法で、改ざん検出ブロック毎に可変長データを検出するとともに、画像コードから全ての可変長データを除去して、可変長データを埋め込む前の原画ＭＰＥＧコード（復元ＭＰＥＧコード）を復元する。
電子透かし検出部１９の改ざん検出手段は、ＤＣＴ変換部１２と同様にして、データ検出部２１により復元された復元ＭＰＥＧコードのハッシュ値ｈ（１，１）〜ｈ（１，１６）、・・・・・、ｈ（２５，１）〜ｈ（２５，１６）を算出する。
【０１３０】
電子透かし検出部１９の改ざん検出手段は、データ検出部２１により検出された可変長データが示すハッシュ値（ＤＣＴ変換部１２により算出されたハッシュ値）と、自己が算出した復元ＭＰＥＧコードのハッシュ値を比較する。
電子透かし検出部１９の改ざん検出手段は、双方のハッシュ値が一致していれば、改ざんがなされていないと判断するが、一致していなければ、一致していない部分において、改ざんがなされていると判断する。
【０１３１】
以上で明らかなように、この実施の形態４によれば、画像を改ざん検出対象のブロックに分割して、各ブロックの画像コードのハッシュ値を算出し、そのハッシュ値を示す可変長データを生成するＤＣＴ変換部１２と、データ検出部２１により検出された可変長データが埋め込まれる前の画像コードのハッシュ値を算出し、そのハッシュ値とデータ検出部２１により検出された可変長データが示すハッシュ値を比較して、改ざんの有無を判定する改ざん検出手段とを設けるように構成したので、一部の画像領域単位で、改ざんを検出することができる効果を奏する。
【０１３２】
実施の形態５．
図１６はこの発明の実施の形態５による電子透かし装置が可変長データをＭＰＥＧ画像コードに埋め込む方法を示す説明図である。
図１６（ａ）は表示順のピクチャの並びを示しており、ＭＰＥＧ動画の場合、１５フレームを１ＧＯＰ（グループオブピクチャ）として、最初のフレーム内予測符号化のＩピクチャ（Ｉ３フレーム）と、前方のフレームを用いる片方向フレーム間予測符号化のＰピクチャ（Ｐ６、Ｐ９、Ｐ１２、Ｐ１５フレーム）と、前方と後方の両方のフレームを用いる双方向フレーム間予測符号化のＢピクチャ（Ｂ１、Ｂ２、Ｂ４、Ｂ５、Ｂ７、Ｂ８、Ｂ１０、Ｂ１１、Ｂ１３、Ｂ１４）とから構成されている。
各Ｐピクチャは、その直前のＩピクチャ又はＰピクチャを用いて、フレーム間予測を行う。
また、各Ｂピクチャは、その直前のＩピクチャ又はＰピクチャと、直後のＩピクチャ又はＰピクチャを用いて、フレーム間予測を行う。
【０１３３】
図１６（ｂ）は圧縮順の画像コードの並びを示しており、全てのブロックをＤＣＴ符号化するＩピクチャが最もデータ量が多く、一部のブロックだけＤＣＴ符号化するＰピクチャとＢピクチャはデータ量が少ない。
ＰピクチャとＢピクチャでは、ＤＣＴ符号化するブロックがランダムに発生するため、ここに可変長データを埋め込むと複雑になるため、可変長データをＩピクチャにのみ埋め込むのが簡明である。
ただし、可変長データをフレーム単位に１対１に埋め込みたい場合、各フレームの可変長データを可変長データ１〜可変長データ１５として、これらの可変長データ１〜可変長データ１５をＩピクチャに埋め込み、各フレームと可変長データが１対１に対応するようにする。
【０１３４】
図１７は可変長データのデータ構成を示す説明図である。
可変長データのヘッダにＧＯＰのフレーム番号１〜１５（４ビット）を追加し、そのフレーム番号が例えば“５”であれば、ヘッダに続くペイロードは、フレーム５に関する可変長データ５であることを示している。
ただし、ヘッダに他のデータがある場合は、予め固定長でデータの配置を決めておき、正確に検出できるようする必要がある。
【０１３５】
以上で明らかなように、この実施の形態５によれば、ビット取り出し部１４が、ヘッダにＭＰＥＧの１ＧＯＰのフレーム番号を示す情報ビットが付加されている可変長データの先頭から順番にビットを取り出すように構成したので、可変長データをＭＰＥＧ画像コードに埋め込むことができる効果を奏する。
【０１３６】
実施の形態６．
上記実施の形態１では、ビット取り出し部１４がペイロードの前にヘッダが付加されている可変長データの先頭から順番にビットを取り出すものについて示したが、ビット取り出し部１４が、ペイロードに画像コードの新しい量子化マトリックスが格納され、ヘッダに画像コードの元の量子化マトリックスが格納されている可変長データの先頭から順番にビットを取り出すようにしてもよい。
この場合、データ検出部２１は、可変長データから元の量子化マトリックスを検出して、画像コードの新しい量子化マトリックスを元の量子化マトリックスに戻すことで、元の画像コードを復元するようにする。
【０１３７】
係数データは、元々、ＤＣＴ係数を各係数位置の量子化マトリックスで除算した数値であり、量子化マトリックスの大きな係数を変更すると、再生画像の劣化が大きくなる。
量子化マトリックスは、ＪＰＥＧやＭＰＥＧの画像コードのブロックよりも上のレーヤーのヘッダ領域に記載されているので、０が多い高周波領域の量子化マトリックスを小さくすれば、係数の値を変更する際の劣化の度合いが減少する。
ただし、画像コードを復元するには、量子化マトリックスも元に戻す必要があるため、元の量子化マトリックスを可変長データとして画像コードに埋め込むようにする。
【０１３８】
図１８は量子化マトリックスの可変長データのデータ構成を示す説明図である。
図１８の例では、６４個の係数に対応する量子化値があり、この量子化値を左上から右下に順番に並べ、全てを２進数にして可変長データとしている。
【０１３９】
図１９は可変長データのデータ構成を示す説明図である。
図１９の例では、可変長データのヘッダには、可変長データが量子化マトリックスである旨を示す８ビットのシーケンス番号（この例では、“３３”）、この量子化マトリックスが有効となる４ビットのフレーム番号（この例は、“３”であり、ＧＯＰの第３ピクチャが該当する）、この量子化マトリックスが有効となる１６ビットのブロック番号（この例では、“３１”であり、第３１ブロックが該当する）が配置されており、元の画像コードのどのフレームのどのブロックの量子化マトリックスがあったかを示し、画像コードを復元するときに、量子化マトリックスを元に戻して、元の画像コードに完全に復元する。
【０１４０】
以上で明らかなように、この実施の形態６によれば、ビット取り出し部１４が、ペイロードに画像コードの新しい量子化マトリックスが格納され、ヘッダに画像コードの元の量子化マトリックスが格納されている可変長データの先頭から順番にビットを取り出す一方、データ検出部２１が、可変長データから元の量子化マトリックスを検出して、画像コードの新しい量子化マトリックスを元の量子化マトリックスに戻すことで、元の画像コードを復元するように構成したので、元の画像コードに復元が可能な方法で、画質劣化が最小限な可変長データの埋め込みを実現することができる効果を奏する。
【図面の簡単な説明】
【０１４１】
【図１】この発明の実施の形態１による電子透かし装置の埋め込み側を示す構成図である。
【図２】この発明の実施の形態１による電子透かし装置の検出側を示す構成図である。
【図３】可変長データのデータ構成を示す説明図である。
【図４】この発明の実施の形態１による電子透かし装置のデータ埋め込み部１５による電子透かしの埋め込み方法を示す説明図である。
【図５】この発明の実施の形態１による電子透かし装置のデータ埋め込み部１５による電子透かしの埋め込み方法を示す説明図である。
【図６】この発明の実施の形態１による電子透かし装置のデータ埋め込み部１５による電子透かしの埋め込み方法を示す説明図である。
【図７】この発明の実施の形態２による電子透かし装置のデータ埋め込み部１５による電子透かしの埋め込み方法を示す説明図である。
【図８】この発明の実施の形態２による電子透かし装置のデータ埋め込み部１５による電子透かしの埋め込み方法を示す説明図である。
【図９】この発明の実施の形態２による電子透かし装置のデータ埋め込み部１５による電子透かしの埋め込み方法を示す説明図である。
【図１０】この発明の実施の形態３による電子透かし装置のデータ埋め込み部１５による電子透かしの埋め込み方法を示す説明図である。
【図１１】この発明の実施の形態３による電子透かし装置のデータ埋め込み部１５による電子透かしの埋め込み方法を示す説明図である。
【図１２】この発明の実施の形態３による電子透かし装置のデータ埋め込み部１５による電子透かしの埋め込み方法を示す説明図である。
【図１３】可変長データのデータ構成を示す説明図である。
【図１４】改ざん検出ブロックを示す説明図である。
【図１５】この発明の実施の形態４による電子透かし装置のデータ埋め込み部１５による電子透かしの埋め込み方法を示す説明図である。
【図１６】この発明の実施の形態５による電子透かし装置が可変長データをＭＰＥＧ画像コードに埋め込む方法を示す説明図である。
【図１７】可変長データのデータ構成を示す説明図である。
【図１８】量子化マトリックスの可変長データのデータ構成を示す説明図である。
【図１９】可変長データのデータ構成を示す説明図である。
【図２０】従来の電子透かし装置の埋め込み側を示す構成図である。
【図２１】従来の電子透かし装置の検出側を示す構成図である。
【図２２】ＭＰＥＧ・ＪＰＥＧの符号化方式を示す説明図である。
【図２３】従来の電子透かし装置における付加データの埋め込み手順を示すフローチャートである。
【図２４】従来の電子透かし装置における付加データの検出手順を示すフローチャートである。
【図２５】従来の電子透かし装置により付加データが埋め込まれる様子を示す説明図である。
【図２６】他の従来例により付加データが埋め込まれる様子を示す説明図である。
【符号の説明】
【０１４２】
１  ビデオカメラ、２  ＭＰＥＧエンコーダ、３  ＭＰＥＧ埋め込みバッファメモリ、４  デジタルスチルカメラ、５  静止画エンコーダ、６  静止画埋め込みバッファメモリ、７  マイク、８  音声エンコーダ、９  音声埋め込みバッファメモリ、１０  電波時計・ＧＰＳ、１１  電子透かし埋め込み部、１２  ＤＣＴ変換部（ＤＣＴ変換手段、可変長データ生成手段）、１３  係数並び替え部（係数並び替え手段）、１４  ビット取り出し部（ビット取り出し手段）、１５  データ埋め込み部（データ埋め込み手段）、１６  送信バッファメモリ、１７  電子透かし入り画像データ、１８  受信バッファメモリ、１９  電子透かし検出部、２０  数値読み出し部（数値読み出し手段）、２１  データ検出部（データ検出手段）、２２  ＭＰＥＧ復号バッファメモリ、２３  ＭＰＥＧデコーダ、２４  ディスプレイ、２５  静止画復号バッファメモリ、２６  静止画デコーダ、２７  モニタ、２８  音声復号バッファメモリ、２９  音声デコーダ、３０  スピーカ、３１  時刻表示器、１０１  ＪＰＥＧコード、１０２  低解像度静止画、１０３  テキストデータ、１０４  多重器、１０５  付加データ多重用メモリ、１０６  透かし埋め込みＣＰＵ、１０７  電子透かし入りＪＰＥＧコード、１０８  透かし検出ＣＰＵ、１０９  復元ＪＰＥＧコード、１１０  付加データ分離用メモリ、１１１  分離器、１１２  検出低解像度静止画、１１３  検出テキストデータ。
【図１】
2010068421.tif 000003
【図２】
2010068421.tif 000004
【図３】
2010068421.tif 000005
【図４】
2010068421.tif 000006
【図５】
2010068421.tif 000007
【図６】
2010068421.tif 000008
【図７】
2010068421.tif 000009
【図８】
2010068421.tif 000010
【図９】
2010068421.tif 000011
【図１０】
2010068421.tif 000012
【図１１】
2010068421.tif 000013
【図１２】
2010068421.tif 000014
【図１３】
2010068421.tif 000015
【図１４】
2010068421.tif 000016
【図１５】
2010068421.tif 000017
【図１６】
2010068421.tif 000018
【図１７】
2010068421.tif 000019
【図１８】
2010068421.tif 000020
【図１９】
2010068421.tif 000021
【図２０】
2010068421.tif 000022
【図２１】
2010068421.tif 000023
【図２２】
2010068421.tif 000024
【図２３】
2010068421.tif 000025
【図２４】
2010068421.tif 000026
【図２５】
2010068421.tif 000027
【図２６】
2010068421.tif 000028