特定の画像データ(静止画像あるいは動画像シーケンス)に対して、それに付随する情報を画像データ中に付加し、再生時にその付随情報を検出して利用する技術がある。この代表的な例として、著作権情報の付加が挙げられる。
不特定の利用者が特定の画像データを利用することが可能である場合、その画像に対して著作権を持つ者が、その権利を主張するためには、あらかじめ著作権情報を画像データ中に付加しておく必要がある。著作権情報を付加することにより、画像の再生装置あるいは再生方法の処理手順の中で、その画像データを表示不可とすべき著作権情報が検出された場合には、その画像データの表示を行わない等の対策を講じることが可能となる。
上述の著作権情報の付加、あるいは検出は、現在、ビデオテープの不正コピー防止等でよく利用されている。近頃は、ビデオテープのレンタルを行う店も多いが、多くの利用者が、店から低価格で借りたビデオテープを不正にコピーして楽しんだ場合、そのビデオテープの著作権を持つ者およびビデオテープのレンタルを行う店の損害は甚大である。
ビデオテープには、画像データがアナログ的に記録されているため、コピーを行なった場合に画質が劣化する。そのため、コピーが複数回繰り返された場合、元々保持されていた画質を維持することは非常に困難となる。
これに対し、最近普及しつつあるデジタル的に画像データを記録し、再生する機器等においては、不正コピーによる損害はさらに大きなものとなる。それは、画像データをデジタル的に扱う機器等では、原理的にコピーによって画質が劣化することがないためである。そのため、デジタル的に処理を行う機器等における不正コピー防止は、アナログの場合と比べてはるかに重要である。
画像データに付随する情報をその画像データ中に付加する方法は、主に2通りある。
第1の方法は、画像データの補助部分に付加する方法である。例えばビデオテープでは、図32に示したように、その画像データの補助的情報が、表示画面には実質的に表示されない画面上部(補助部分)に記録されている。この領域の一部を利用して、付随情報を付加することが可能である。
第2の方法は、画像データの主要部分(実質的に表示される部分)に付加する方法である。これは、図33に示したように、ある特定のパターン(ウォータマーク(Water Mark)パターン)を、視覚的に感知できない程度に、画像の全体あるいは一部に付加するものである。この具体例として、乱数やM系列等を用いて発生させた鍵パターンを利用して、情報の付加あるいは検出を行うスペクトラム拡散等がある。
以下では、ウォータマークパターンを用いた場合の画像データの主要部分への付随情報の付加あるいは検出の一例を述べる。図34乃至図37にこの具体例を示した。
各画素について、プラスまたはマイナスの2つのシンボルのいずれかを取る、図34に示されるような、4n×4n個の画素に対応するウォータマークパターンを用いると仮定する。ウォータマークパターンは、2つのシンボルのいずれかをランダムに取る方が望ましく、その領域の形状、大きさは任意で構わない。
付随情報を付加する際には、付加を行う対象となる画像上で、ウォータマークパターンの領域と等しい大きさの領域を設定する。設定された領域とウォータマークパターンを重ねて照らし合わせ、プラスのシンボルが対応する画素には値aを加算し、マイナスのシンボルが対応する画素からは値bを減算する。a,b共に、任意の値で構わないが、そのウォータマークパターンを通じて一定にするべきである。
図35乃至図37の例では、a=1,b=1に設定しており、図35に示すように、付加を行う対象となる領域の画素値が全て100の場合には、ウォータマークに対応する埋め込み操作により101と99の画素値が形成される。
付随情報を検出する際には、検出を行う対象となる画像上で、ウォータマークパターンの領域と等しい大きさの領域を設定する。この領域の画素値の全てを合計した値を評価値として用いる。画素値の全てを合計する際には、設定された領域とウォータマークパターンを重ねて照らし合わせ、プラスのシンボルが対応する画素については加算、マイナスのシンボルが対応する画素については減算を適用する。図36の例では、画素値101の画素は加算され、画素値99の画素は減算され、それらの演算結果が加算される。この時、付随情報を付加する際に用いたウォータマークパターンと同じパターンを用いなければ、付随情報を正しく検出することはできない。このような検出操作により、例えば図36に示すように、付随情報が付加されている場合の評価値は(4n)^2(領域に含まれる画素数の数と同じ)になり、図37に示すように、付随情報が付加されていない場合の評価値は0となる。
ウォータマークパターンの領域が充分に広く、かつウォータマークパターンが充分にランダムである場合、付随情報が付加されていない場合の評価値は常にほぼ0となる。そのため、評価値がある一定の閾値を超えた場合には、付随情報が付加されていると判別することができる。上記の手順により、付随情報が付加されているか否かという2値の情報(1ビット)を付加することが可能となる。より多くの情報を付加したい場合には、画像全体をk個の領域に分けて、それぞれ上記の操作を行う等の処理方法により、2^k通り(kビット)の情報を付加することができる。
ウォータマークパターンは、例えばM系列を用いて生成したものを利用することができる。M系列(最長符号系列)は、0と1の2値のシンボルからなる数列で、0と1の統計的分布は一定であり、符号相関は原点で1、その他では符号長に反比例するものである。もちろん、M系列以外の方法でウォータマークパターンを生成しても構わない。
画像データをデジタル的に記録し、再生する場合、そのままでは非常に情報量が多くなるため、データを圧縮するのが一般的である。画像データを圧縮する方法として、JPEG(Joint Photographic Experts Group)(カラー静止画像符号化方式)、あるいはMPEG(Moving Picture Experts Group)(カラー動画像符号化方式)等の高能率符号化方法が国際的に標準化され、実用化に至っている。この高能率符号化によって画像データを圧縮する場合を例に取り、付随情報の付加および検出を行う構成例を次に説明する。
図38には、エンコーダの構成を示した。入力された画像データには、まずウォータマーク付加器1において、付随情報fが付加される。付随情報fが付加された画像データを符号化器2に入力し、高能率符号化を行なって符号化ビット列を生成する。
図39には、符号化器2のより具体的な構成例を表している。この例においては、符号化器2は、フレームメモリ41を備えており、フレームメモリ41は、ウォータマーク付加器1より供給された画像データをフレーム単位で記憶するようになされている。動きベクトル検出器50は、フレームメモリ41に記憶された画像データから、動きベクトルvを検出し、検出結果を動き補償器43と可変長符号化器46に出力している。動きベクトル検出器50においては、16×16画素で構成されるマクロブロック単位でブロックマッチング処理が行われ、動きベクトルvが検出される。また、より高い精度を実現するために、半画素単位でのマッチング処理も行われる。
動き補償器43は、フレームメモリを内蔵しており、符号化すべき現在のフレームの各位置の画素値を、既に符号化が行われ、それを復号して得られた、内蔵するフレームメモリに保存されている画像から予測する。時刻tにおいて入力されたフレームの位置(i,j)における画素値I{i,j,t}の予測値I’{i,j,t}は、その位置に対応する動きベクトルv=(vx(i,j,t),vy(i,j,t))を用いて、次式のように決定される。
I’{i,j,t}=
(I{i’,j’,t−T}+I{i’+1,j’,t−T}
+I{i’,j’+1,t−T}+I{i’+1,j’+1,t−T})/4
なお、ここで、i’とj’は次式で表される。
i’=int(i+vx(i,j,t)T)
j’=int(j+vy(i,j,t)T)
ここでTは、現在予測を行っている画像Iが入力された時刻と、フレームメモリ上に記憶されている画像が入力された時刻の差を表し、上記式の右辺のI{i’,j’,t−T},I{i’+1,j’,t−T},I{i’,j’+1,t−T},I{i’+1,j’+1,t−T}は、動き補償器43に内蔵されているフレームメモリ上の画素値を表す。また、int(x)は、xを超えない最大の整数値を表している。
減算器42は、フレームメモリ41より供給される、現在符号化すべき画素の値から、動き補償器43より供給される動きベクトルvに基づき、動き補償することにより算出された予測値を減算し、DCT器44に出力している。DCT器44は、減算器42より入力された差分値で構成される8×8画素のブロックに対して2次元DCT(Discrete Cosine Transform)処理を施す。量子化器45は、DCT器44より入力されたDCT係数cに対して、適当なステップサイズQを用いて、次式に従って量子化処理を行う。
c’=int(c/Q)
量子化器に45により量子化されたDCT係数c’は、可変長符号化器46と逆量子化器47に供給される。可変長符号化器46は、量子化器45により量子化されたDCT係数c’と動きベクトル検出器50より供給された動きベクトルvを可変長符号化し、符号ビット列を出力する。
逆量子化器47は、量子化器45で用いられたステップサイズと同一のステップサイズQを用いて、次式に示されるように逆量子化処理を行う。
c”=c’×Q
逆量子化器47で逆量子化されたデータは、IDCT器48に入力され、逆DCT処理が施され、画素値の差分値が復元される。
IDCT器48の出力する差分値は、動き補償器43が出力する予測値と加算器49により加算され、もとの画素値のデータとなり、動き補償器43に内蔵されているフレームメモリに記憶される。
次に、その動作について説明する。デジタル化されている画像データは、ウォータマーク付加器1に入力され、付随情報fに対応してウォータマークが付加される。
ウォータマーク付加器1によりウォータマークが付加された画像データは、フレームメモリ41に供給され、フレーム単位で記憶される。動きベクトル検出器50は、フレームメモリ41に記憶されている画像データの動きベクトルvを検出する。動き補償器43は、内蔵するフレームメモリに記憶されている参照フレームの画像データに対して動き補償を施し、予測画像データを生成して、減算器42に供給する。減算器42は、フレームメモリ41より供給された画像データから動き補償器43より供給された予測画像データを減算し、その減算結果をDCT器44に供給する。DCT器44は、入力された差分値の画像データをDCT係数に
変換する。量子化器45は、DCT器44より供給されたDCT係数を量子化し、可変長符号化器46に出力する。可変長符号化器46は、入力された量子化データを可変長符号に変換し、符号ビット列として、図示せぬ伝送路に伝送したり、記録媒体に供給し、記録させる。
量子化器45より出力された量子化データは、逆量子化器47で逆量子化され、IDCT器48に供給される。IDCT器48は、入力されたDCT係数に対してIDCT処理を施し、もとの差分値の画像データを出力する。この差分値の画像データは、動き補償器43より読み出された予測画像データに、加算器49で加算され、もとの画像データに復元されて、動き補償器43の内蔵するフレームメモリに記憶される。
なお、可変長符号化器46は、動きベクトル検出器50より供給された動きベクトルvも可変長符号に変換し、出力する。
通常は、上記に示したような予測値との差分を符号化する画像間符号化 (INTER coding) が行われる。しかし、現在符号化すべき画素の値と、動き補償器43によって算出された予測値との差分が大きい場合には、符号化ビット量が多くなることを防ぐために、画像内符号化 (INTRA coding) が行われる場合もある。すなわち、ブロック内の各画素値について、差分をとらずにそのまま DCT 器44に送り、その画素値に対して符号化が行われる。
図40には、デコーダの構成を示した。入力された符号化ビット列は、復号器21において画像データに復元される。その後ウォータマーク検出器22において付随情報fが検出される。
図41は、復号器21のより詳細な構成例を表している。この構成例においては、復号器21の逆可変長符号化器61が、入力された符号ビット列を逆可変長符号化処理(可変長復号化処理)して、復号した画像データ(DCT係数)を逆量子化器62に出力し、復号した動きベクトルvを動き補償器65に出力するようになされている。逆量子化器62は、入力されたDCT係数を逆量子化し、IDCT器63に出力している。IDCT器63は、入力された、逆量子化されたDCT係数に対してIDCT処理を施し、もとの差分値の画像データに復元して、加算器64に出力している。
動き補償器65は、内蔵するフレームメモリに記憶されている画像データに対して逆可変長符号化器61より供給される動きベクトルvに基づいて動き補償を施し、予測画像を生成し、加算器64に出力している。加算器64は、この予測画像に対して、IDCT器63より供給された差分値を加算し、もとのフレーム画像を復元して出力するようになされている。
加算器64の出力は、動き補償器65に内蔵されているフレームメモリに供給され、記憶されるとともに、ウォータマーク検出器22に供給されるようになされている。ウォータマーク検出器22は、入力された画像データから付随情報fを検出し、出力するとともに、もとの画像データを出力するようになされている。
次に、その動作について説明する。逆可変長符号化器61は、入力された符号ビット列を逆可変長符号化処理し、復号されたDCT係数を逆量子化器62に出力する。逆量子化器62は、入力されたDCT係数を逆量子化し、IDCT器63に出力する。IDCT63は、入力されたDCT係数に対してIDCT処理を施し、もとの差分画像データを出力する。
動き補償器65は、内蔵するフレームメモリに記憶されている、既に復元されている画像データに対して、逆可変長符号化器61より供給される動きベクトルvに基づいて動き補償を施し、予測画像データを生成して加算器64に出力する。加算器64は、この予測画像データに対してIDCT器63より供給される差分値の画像データを加算し、もとの画像データを復元する。もとの画像データは、次の予測画像生成のために、動き補償器65のフレームメモリに供給され、記憶される。
また、加算器64より出力された画像データは、ウォータマーク検出器22に供給され、ウォータマークが検出される。
画像データを高能率符号化しない場合には、図38の符号化器2、あるいは図40の復号器21を除いた構成を用いれば、画像データ上に付随情報を付加し、あるいは検出することができる。
ウォータマーク付加器1とウォータマーク検出器22の構成を、それぞれ図42と図43に示した。
図42は、ウォータマーク付加器1の構成を示している。入力された画像データ及び付随情報 f は、付随情報付加器11へと渡される。付随情報 f が on である場合、対象の画像領域上の各画素に対してウォータマークパターンを付加するが、そのためにまず付随情報付加器11は、付加対象の画素位置 p をウォータマークパターン照合制御器101へと渡す。この画素位置 p は、例えば画像の左上の位置を起点として、走査順で何番目の位置であるかを示す1次元的な位置表現で構わない。ウォータマークパターン照合制御器101では、画素位置 p を基に、ウォータマークパターン保持メモリ12に記憶されているウォータマークパターンのシンボルを参照し、得られたシンボル S を付随情報付加器11へと渡す。付随情報付加器11は、渡されたシンボル S を用いて、付加対象の画素にウォータマークパターンの付加を行なう。
ウォータマーク付加器1で行なわれる一連の処理を図44に示した。始めにステップS141で、ウォータマークの付加レベルa,bに所定の値を設定する。ステップS142では、付随情報の付加を行う対象となる画像上でウォータマークパターンの領域と等しい大きさの領域を設定し、その領域内の各画素についてウォータマークパターンとの照合を行う。ステップS143で、ウォータマークのシンボルの判定を行い、その画素が対応するウォータマークのシンボルがプラスである場合には、ステップS144で、その画素にaを足す。その画素が対応するウォータマークのシンボルがマイナスである場合には、ステップS145で、その画素からbを引く。この処理を、ステップS146で、対象領域の全画素について行われたと判定されるまで繰り返す。
図43は、ウォータマーク検出器22の構成を示している。入力された画像データは、評価値算出器31へと渡される。対象の画像領域上の各画素から評価値を算出するために、評価値算出器31は評価対象の画素位置 p をウォータマークパターン照合制御器111へと渡す。この画素位置 p は、上述したように、例えば画像の左上の位置を起点として、走査順で何番目の位置であるかを示す1次元的な位置表現とされる。ウォータマークパターン照合制御器111では、画素位置 p を基にウォータマークパターン保持メモリ32に記憶されているウォータマークパターンのシンボルを参照し、得られたシンボル S を評価値算出器31へと渡す。評価値算出器31は、渡されたシンボル S を用いて、評価値の算出を行なう。算出された評価値は、評価値比較器33で閾値処理され、付随情報 f が出力される。また、入力された画像データは、画像変換器34を介して、そのまま、または、所定の加工あるいは処理が施されて出力される。
ウォータマーク検出器22で行なわれる一連の処理を図45に示した。始めに、ステップS161で、評価値sumの初期化および閾値thの設定を行う。ステップS162でウォータマークパターンの領域と等しい大きさの領域を設定し、その領域内の各画素についてウォータマークパターンとの照合を行う。ステップS163で、その画素が対応するウォータマークのシンボルがプラスであると判定された場合には、ステップS164で、評価値sumにその画素値を足す。その画素のウォータマークのシンボルがマイナスである場合には、ステップS165で、評価値sumからその画素値を引く。この処理をステップS166で、対象領域の全画素について行ったと判定されるまで繰り返す。その後、ステップS167で、評価値sumと閾値thとを比較し、sum>thである場合には、付随情報が付加されているとみなして、ステップS168で、付随情報fをonにする。そうでない場合には、ステップS169で付随情報fをoffにする。
付随情報fは、例えば不正コピーを防止する場合には、以下のように利用される。図40のデコーダの場合を例にすると、出力される画像データおよび付随情報fは、図示せぬ画像表示部に渡される。画像表示部では、付随情報fがonである場合にはそのまま画像を表示するが、付随情報fがoffである場合には、例えば画像を表示しない、画像データの主要領域を表示しない、画像にスクランブルを掛ける(受けとった画像データをでたらめに表示する)等の加工あるいは処理を行う。あるいは、図43のウォータマーク検出器22に示した画像変換器34を設け、付随情報fに応じてこのような画像データの加工あるいは処理を行うように構成することもある。
図1は、本発明を適用したエンコーダの構成例を表しており、図38と図39に示した従来のエンコーダに対応する部分には、同一の符号を付してある。この構成例においては、図38と図39における場合とは異なり、画像データが符号化器2に入力され、符号化された後、ウォータマーク付加器1に供給され、ウォータマークが付加されるようになされている。符号化器2の構成と動作は、図39に示した符号化器2の場合と同様である。
これに対して、図1のウォータマーク付加器1は、例えば図2に示すように構成されている。図2において、図42に示した場合に対応する部分には、同一の符号を付してある。このウォータマーク付加器1においては、8×8画素で構成されるブロック単位で、ウォータマークパターンの付加が行われるようになされている。
図2のウォータマーク付加器1には、符号ビット列及び付随情報 f が入力される。入力された符号ビット列は、付随情報を付加する符号の位置を探すために、簡易符号解読器121で簡易的に解読される。どの符号の位置を探すかは、符号ビット列上で付随情報を付加する際に対象となる符号の種類に依り、より具体的には後で述べるが、例えば、 DCT 係数の直流成分を表す係数が検索される。場合によっては、符号ビット列の全体あるいは一部に対して復号を行ない、全体あるいは一部の再生画像を構成しても良い。
符号ビット列上で付随情報を付加する際に対象となる符号の位置を示す符号位置情報 b は、入力された符号ビット列と共に付随情報付加器11に渡される。付随情報付加器11は、入力された付随情報 f が on である場合、符号ビット列上の対象となる符号にウォータマークパターンを付加するため、付加対象の位置情報 p をウォータマークパターン照合制御器101へと渡す。
MPEG 等の高能率符号化では、例えばマクロブロックあるいはブロック等を単位として符号化が行なわれるため、付加対象の符号の位置情報 p はそれらの空間的位置を表すことが一般的である。具体的には、例えば画像の左上の位置を起点として、走査順で何番目の位置であるかを示す1次元的な位置表現や、同じく画像の左上の位置を原点として、空間上でどの座標に位置するかを示す2次元的な位置表現等が用いられる。
ウォータマークパターン照合制御器101は、位置情報 p を基にウォータマークパターン保持メモリ12に記憶されているウォータマークパターンのシンボルを参照し、得られたシンボル S を付随情報付加器11へと渡す。付随情報付加器11は、渡されたシンボル S を用いて、付加対象の符号にウォータマークパターンの付加を行なう。具体的には、付加対象の符号を新たな符号に置き換える等の修正が行なわれる。場合によっては、復号して得られた再生画像の全体あるいは一部を修正し、それを再度符号化しても良い。
8×8画素のブロック単位でウォータマークパターンの付加あるいは検出を行なう概念図が図3に示されている。例えば、ウォータマークパターンを保持しておくメモリ12上では、メモリ容量の節約のため1画素単位でウォータマークパターンを記憶しておく。実際にウォータマークパターンを付加あるいは検出する際には、各画素を8×8画素のブロック領域に拡大する。図3の例では、4×6画素のウォータマークパターンが、1画素を1ブロック(8×8画素)として、32(=8×4)×48(=8×6)画素に拡大されている。拡大を行なう際には、単にウォータマークパターンのシンボルをコピーするだけで構わないが、補間等の何らかの処理を施して拡大を行なっても良い。あるいは、ウォータマークパターンを8×8画素のブロック単位で扱うため、上記の方法とは異なる別の方法を用いても良い。
8×8画素のブロック単位でウォータマークパターンの付加あるいは検出を行なう理由は、JPEG あるいは MPEG 等の高能率符号化の多くが、8×8画素のブロック単位で DCT を行なうからである。DCT を行なうことにより、画像すなわち空間上の8×8画素のブロック領域は、周波数上の8×8画素のブロック領域に変換される。他の周波数成分と比べると、DCT の直流成分は特に重要である。JPEG あるいは MPEG 等の高能率符号化でも、他の周波数成分と比べて DCT の直流成分は、例えば細かく量子化され、語長の長い符号を用いて符号化される等、特別の扱いを受けて符号化されることが多い。8×8画素のブロック単位でウォータマークパターンの付加あるいは検出を行なうと、DCT の直流成分だけにこの影響が及ぶように構成することができるため、確実に付随情報を付加あるいは検出することができる。なお、任意の高能率符号化方式あるいは方法が、画像すなわち空間上あるいは周波数上の任意の単位で何らかの処理を行なっている場合、ウォータマークパターンの付加あるいは検出をその単位で行なうことにより、本実施の形態で示す効果と同様の効果を得ることができる。
ウォータマーク付加器1は、図4に示した一連の処理を行なう。始めにステップS1で、付加情報付加器11は、ウォータマークの付加レベル a, b を所定の値に設定する。ステップS2で、ウォータマークパターン照合制御器101は、付随情報の付加を行なう対象となる画像上でウォータマークパターンの領域と等しい大きさの領域を設定し、その領域内の各画素についてウォータマークパターンとの照合を行なう。この時ステップS3で、ウォータマークパターンは、例えば図3に示したような方法で、8×8画素のブロック領域に拡大して用いられる。
付加情報付加器11は、ステップS4で、その画素が対応するウォータマークのシンボルを判定し、シンボルがプラスである場合には、ステップS5で、その画素xに a を足す。その画素が対応するウォータマークのシンボルがマイナスである場合には、ステップS6で、その画素xから b を引く。図3の例では、任意の画素位置のウォータマークパターンのシンボルは、8×8画素のブロック領域を対象範囲としている。そのため、ステップS7で、その対象となる8×8画素のブロック領域の全画素について、処理が行われたと判定されるまで、同じシンボルを用いてこの処理が繰り返される。そして、ウォータマークパターンのシンボルを順次変えながら、ステップS8で、対象領域の全画素についての処理が行われたと判定されるまで、同様の処理が繰り返される。
図5は、デコーダの構成例を表しており、図40と図41に示した場合と対応する部分には、同一の符号を付してある。この構成例においては、入力された符号ビット列が、最初にウォータマーク検出器22に入力され、ウォータマークが検出されるようになされている。そして、ウォータマーク検出器22より出力された符号ビット列が復号器21に供給され、復号されるようになされている。復号器21の構成と動作は、図41に示した場合と同様であるので、その説明は省略する。
図6は、図5のウォータマーク検出器22の構成例を示している。ウォータマーク検出器22には、符号ビット列が入力される。入力された符号ビット列は、付随情報を検出する符号の位置を探すために、簡易符号解読器131で簡易的に解読される。この場合の位置とは、例えば符号ビット列上の位置や、あるいは復号された時の空間的あるいは周波数的な位置等のことを言い、それら以外の位置も含めて、種々の位置を探しても良い。どの符号の位置を探すかは、符号ビット列上で付随情報を検出する際に対象となる符号の種類に依り、このことはウォータマーク付加器1のところで述べた場合と同様である。場合によっては、符号ビット列の全体あるいは一部に対して復号を行ない、全体あるいは一部の再生画像を構成しても良い。
符号ビット列上で付随情報を検出する際の対象となる符号の位置を示す符号位置情報 b は、入力された符号ビット列と共に、簡易符号解読器131から評価値算出器31へと渡される。符号ビット列上の対象の各符号から評価値を算出するために、評価値算出器31は、評価対象の符号位置 p をウォータマークパターン照合制御器111へと渡す。この符号位置 p は、ウォータマーク付加器1のところで述べた場合と同様に、1次元的あるいは2次元的な位置表現等を用いることができる。
ウォータマークパターン照合制御器111は、符号位置 p を基に、ウォータマークパターン保持メモリ32に記録されているウォータマークパターンのシンボルを参照し、得られたシンボル S を評価値算出器31へと渡す。評価値算出器31は、渡されたシンボル S を用いて、評価値の算出を行なう。ウォータマーク付加器1について説明した場合と同様に、ウォータマークは、ブロックに拡大されて用いられる。算出された評価値は、評価値比較器33で閾値処理され、付随情報 f が出力される。また、入力された画像データは、符号変換器34を介して、そのまま、または、所定の加工あるいは処理が施されて出力される。符号変換器34は、付随情報 f が off の場合、例えば符号ビット列を出力しない、符号ビット列をでたらめに配置し直す等の加工あるいは処理を施す。
ウォータマーク検出器22では、図7に示した一連の処理を行なう。始めに、ステップS21で、評価値算出器31と評価値比較器33は、それぞれ評価値 sum を0に初期化するとともに、閾値 th に所定の値を設定する。ステップS22で、ウォータマークパターン照合制御器111は、ウォータマークパターンの領域と等しい大きさの領域を設定し、その領域内の各画素についてウォータマークパターンとの照合を行なう。この時ステップS23で、ウォータマークパターンは、ウォータマーク付加器1のところで説明した場合と同様に、例えば図3に示したような方法で、8×8画素のブロック領域に拡大して用いられる。評価値算出器31は、その画素が対応するウォータマークのシンボルを判定し、シンボルがプラスである場合には、ステップS25で、sum にその画素値xを足す。その画素が対応するウォータマークのシンボルがマイナスである場合には、ステップS26で、評価値 sum からその画素値xを引く。
図3の例では、任意の画素位置のウォータマークパターンのシンボルは、8×8画素のブロック領域を対象範囲としている。そのため、ステップS27で、その対象となる8×8画素のブロック領域の全画素について、同様の処理が行われたと判定されるまで、同じシンボルを用いてこの処理が繰り返される。そして、ウォータマークパターンのシンボルを順次変えながら、ステップS28で、対象領域の全画素について同様の処理が行われたと判定されるまで、この処理が繰り返される。その後、ステップS29で、評価値比較器33は、評価値 sum と閾値 th とを比較し、sum > th である場合には、ステップS30で、付随情報が付加されているとみなして、付随情報 f を on にする。そうでない場合には、ステップS31で、付随情報 f を off にする。
評価値 sum を閾値 th と比較する際には、先に示した比較方法以外のどのような比較方法を用いても良い。例えば、評価値のバイアス成分(ウォータマークパターンが付加されている場合の評価値と、ウォータマークパターンが付加されていない場合の評価値との差) B(図36と図37の例では (4n)^2 )が一定であることを利用して、どの程度バイアス成分が保持されているとみなすかを示すバイアス信頼係数 c(0≦c≦1)と共に比較を行なっても良い。また、何らかの方法を用いて標準的な評価値を算出し、その値と実際の評価値とを比較することによって、付随情報の検出を行なっても良い。
ウォータマークのシンボルは、プラス、マイナス以外のどのようなシンボルを用いても良い。また、2種類ではなく、3種類以上のどのようなシンボルを用いても良い。例えば、プラス、ゼロ、マイナスの3種類のシンボルを用意しておき、ウォータマークパターンとの照合を行なった際に、シンボルがゼロである画素については、評価値 sum に影響を与えない(その画素値を評価値 sum に足しも引きもしない)ようにするなど、各シンボルにどのような意味を与えても良い。
ウォータマークパターンを画像上に付加する領域は、任意の形状及び範囲で構わない。また、付加したウォータマークパターンとの整合が取れている限り、検出時に評価値を求める領域の形状及び範囲は任意で構わない。このことは、同じウォータマークパターンのシンボルを用いて処理を行なう画像領域、例えば個々の8×8画素のブロック領域についても同様である。一例を挙げると、8×8画素のブロック領域全体ではなく、一部の領域のみを用いてウォータマークパターンの付加あるいは検出を行なっても良い。さらにウォータマークパターンは、時間的あるいは空間的に渡るより広い領域を用いて、付加あるいは検出を行なうことにしても良い。例えば動画像シーケンスにおいては、時間的な基準を用い、現フレームの時間的位置だけでなく、過去や未来のフレームを利用しても良い。例えば非常に大きな画像サイズを持つ静止画像においては、1枚の画像をある単位で複数の画像領域に分割して扱うことにし、空間的な基準を用い、現在対象としている画像領域に対して、例えば走査順で前や後に位置する画像領域を利用しても良い。
このように、ウォータマークを拡大し、ブロック化する場合、第2の実施の形態として、図8に示したように、縦方向の2つのブロックを単位(横8画素×縦16画素)として(ブロックの縦方向の長さを、マクロブロックの縦方向の長さの整数倍の長さとして)、ウォータマークパターンの付加あるいは検出を行なうようにすることができる。
横8×縦16の縦2つのブロック単位でウォータマークパターンの付加あるいは検出を行なう理由は、以下の通りである。
図9に示したように、MPEG では、マクロブロックを単位として符号化が行なわれる。4:2:0フォーマットの場合、マクロブロックは、4つの輝度 (Y) ブロックと空間的に対応した2つの色差 (Cb, Cr) ブロックの、合計6つのブロックから構成される。なお、各ブロックの大きさは、8×8画素である。
インターレース画像を対象としている MPEG2 では、画像間符号化あるいは画像内符号化を行なう際に、2種類の DCT 符号化モードをマクロブロック単位で切り替えることができる。この概念図を図10と図11に示した。図10のフレーム DCT モードでは、各ブロックがフレームで構成されるように分解され、図11のフィールド DCT モードでは、各ブロックがフィールドで構成されるように分解される。この2つの DCT モードを適応的に切り替えることにより、MPEG2 ではインターレース画像に対する符号化効率を向上させている。
ここで、MPEG2 の符号化の過程で任意のマクロブロックにおいてフィールド DCT モードが選ばれ、かつ、8×8画素のブロック領域を単位としてウォータマークパターンの付加を行なうケースを考える。この場合、そのマクロブロックについて、縦2つの輝度ブロックのウォータマークパターンのシンボルが異なっていたとしても、DCT のために構成されるフィールド DCT モードのブロックにおいて、ウォータマークパターンの同一の成分が付加されてしまう。従って、これを元のマクロブロックの状態に戻したとき、上のブロックと下のブロックに、同一のシンボルが現れてしまう。そのため、これらのブロックにおけるウォータマークパターンの成分は、直流成分以外の周波数成分を含むことになるため、確実に付随情報を付加することができなくなる。
横8×縦16画素の縦2つのブロック単位でウォータマークパターンの付加あるいは検出を行なう場合には、上記のような問題は起こらないため、確実に付随情報を付加あるいは検出することができる。
任意の高能率符号化装置あるいは方法が、画像すなわち空間上あるいは周波数上で任意の単位を定義し、それを単位として複数に跨って何らかの処理を行なっている場合、ウォータマークパターンの付加あるいは検出をその複数に跨ってまとめて行なうことにより、本実施の形態で示す場合と同様の効果を得ることができる。
図12は、ウォータマーク付加器1の他の処理例を表している。この第3の実施の形態の処理例においては、ウォータマークは、ブロック化されず、1画素単位で処理されるようになされている(勿論、ブロック化して、処理するようにしてもよい)。この場合におけるウォータマーク付加器1の構成は、図2に示した場合と同様である。始めにステップS41で、付随情報付加器11は、ウォータマークの付加レベル a, b に所定の値を設定する。ステップS42では、簡易符号解読器121により、符号ビット列上で付随情報を付加する際に対象となる符号の位置まで、符号ビット列が読み進められる。その後、ステップS43で、直前のブロックで発生したミスマッチに対する補正処理が適宜行われる。このことについては、後で述べる。
ステップS44で、ウォータマークパターン照合制御器101は、符号ビット列上の対象となる符号のブロック位置に応じて、ウォータマークパターンとの照合を行なう。例えば、DCT の直流成分の符号に付随情報を付加する場合、ステップS45で、ウォータマークパターン照合制御器101は、そのブロック位置のウォータマークのシンボルを判定し、シンボルがプラスである場合には、ステップS46で、その符号で表される直流成分 x に a を足した値 x' を算出する。そのブロック位置のウォータマークのシンボルがマイナスである場合には、ステップS47で、その符号で表される直流成分 x から a を引いた値 x' が算出される。そして、ステップS48で、付随情報付加器11は、そのブロック位置の直流成分 x の符号を x' の符号に修正する。その符号が固定長の符号部分であ
る場合には、この修正処理は単なる符号の置き換えで済む。これらの処理が、ステップS49において、対象領域の全符号について行われたと判定されるまで繰り返される。
次に、ステップS43の補正処理の具体例を挙げる。MPEG において DCT の直流成分は差分符号化(DPCM : Differential Pulse Code Modulation)が行なわれる。差分符号化においては、例えば、3, 6, 12, 4, 7 という数列があった場合、それぞれ直前の数値との差分を計算し、3, 3, 6, −8, 3 という数列に直して符号化が行なわれる。この時、例えば3番目の差分値を 4 に置き換えて付随情報を付加した場合、補正を行なわないと、4番目以降の数値は本来の数値よりも 2 だけ小さな値となってしまう。3番目の数値を置き換えて付随情報を付加する処理はそのままにして、4番目以降の数値を補正するためには、4番目の差分値を 2 だけ大きい −6 に置き換えれば良い。このように、補正を行なう際には、付随情報を付加する方法に応じて処理方法を決めれば良い。
上記では、例えばマクロブロックあるいはブロックを単位として、付随情報を付加する例を説明した。より一般的には、必要な構成を取ってそれらの処理を行なう限り、マクロブロックあるいはブロックに限らず、どのような単位でウォータマークパターンの付加を行なっても良い。しかし、実際の符号ビット列は、例えば符号化レートといった種々の制約に準じて生成されている。一例として、付加対象の符号を新たな符号に置き換えると、多くの場合その置き換えによって符号の語長が変化し、種々の問題が生じる。
これらの問題を防ぐためには、符号ビット列上で付随情報を付加する際に対象となる符
号を吟味し、例えば図13に示すように、付随情報の付加の前後において、語長が変化し
ないように、固定長の符号部分だけについて付随情報を付加する等の工夫を行なわなけれ
ばならない。MPEG では、ブロック単位で符号化される DCT の直流成分や、マクロブロック単位で符号化される動きベクトル等で、固定長の符号化が行なわれる。特に、DCT の直流成分の符号を付加対象に選んだ場合、JPEG 等においてもこの値はブロック単位で固定長符号化が行なわれるため、汎用性が高くなる。
固定長以外の符号(可変長の符号)を用いて付随情報の付加を行なっても良いが、その場合には、符号ビット列上に不必要なビットを挿入する、符号ビット列上の不必要なビットを削るなど、必要となる構成を取って処理を行なう。なお上記のこれらのことは、任意の符号化方法、あるいは任意の復号方法などにおいて、同様に適用可能である。
図14は、図12の付加処理に対応する検出処理を表している。この処理は、図6に示したウォータマーク検出器22と同一の構成で実行される。始めに、ステップS61で、評価値算出器31と、評価値比較器33により、評価値 sum の初期化及び閾値 th の設定が行なわれる。ステップS62で、簡易符号解読器131は、符号ビット列上で付随情報を付加する際の対象となる符号の位置まで、符号ビット列を読み進める。ステップS63で、ウォータマークパターン照合制御器111は、符号ビット列上の対象となる符号のブロック位置に応じて、ウォータマークパターンとの照合を行なう。
例えば、DCT の直流成分の符号に付随情報を付加する場合、評価値算出器31はステップS64で、その符号が対応するウォータマークのシンボルを判定し、シンボルがプラスである場合には、ステップS65で、評価値 sum にその符号で表される直流成分xを足す。その画素が対応するウォータマークのシンボルがマイナスである場合には、評価値算出器31はステップS66で、評価値 sum からその符号で表される直流成分xを引く。これらの処理は、ステップS67で、対象領域の全符号について行われたと判定されるまで繰り返される。
その後、評価値比較器33は、ステップS68で、評価値 sum と閾値 th とを比較し、sum > th である場合には、ステップS69で、付随情報が付加されているとみなして付随情報 f を on にする。そうでない場合には、ステップS70で、付随情報 f を off にする。
本実施の形態における構成は、付随情報の付加あるいは検出を行なう処理内容が等価と見なせる限り、従来例、第1または第2の実施の形態、あるいはその他の構成と組み合わせても構わない。例えば、DCT の直流成分の符号に付随情報を付加する場合、これは8×8画素のブロック単位でウォータマークパターンの付加を行なうことと等価であると見なすことができる。よって、付随情報を付加する際には本実施の形態の構成を用い、付随情報を検出する際には第1の実施の形態の構成を用いても構わない。
上述したように、必要な構成を取って処理を行なう限り、DCT の直流成分の符号に限らず、任意の符号を用いて付随情報の付加あるいは検出を行なっても良い。ただし、固定長の符号部分に付随情報を付加し、検出した方が、符号ビット列の符号の長さを変化させることなく、容易に付随情報を付加できる。MPEG で固定長の符号化が行なわれるのは、ブロック単位で符号化される DCT の直流成分、マクロブロック単位で符号化される動きベクトル等である。以下では、このことについてより詳細に述べる。
図15は、MPEG 方式において付随情報の付加を行なう原理を表している。同図に示すように、 GOP(Group Of Pictures)は、1枚のIピクチャ、複数枚のPピクチャ、および複数枚のBピクチャにより構成されている。図15の例においては、15枚のピクチャにより1つの GOP が構成されている。ブロック単位で符号化される DCT の直流成分に付随情報を付加する場合においては、 GOP を構成するピクチャの中からIピクチャが選択される。
16×16画素のマクロブロックは、図9で示したように、輝度信号(Y)の場合、8×8画素からなる4個のブロックで構成される。色差信号Cb,Crは、16×16画素の1つのマクロブロックに対して8×8画素のブロックで表現される。これらの画素データは、 DCT 変換(離散コサイン変換)により、 DCT 係数に変換される。
1つのブロックの8×8個の DCT 係数Coeff[0][0]乃至Coeff[7][7]は、所定の量子化ステップで量子化され、量子化レベルQF[0][0]乃至QF[7][7]に変換される。
DCT 係数のうち、左上のCoeff[0][0](scan[0])は、直流成分(DC成分)を表し、この直流成分からは、直前のブロックの直流成分を予測値とした差分値が演算され、その差分値が符号化される。残りの交流成分(AC成分)は、ブロック内でジグザグスキャンにより、直流成分としてのscan[0]に続いて、scan[1]乃至scan[63]として並びかえられた後、符号化される。
図16に示すように、 DCT 係数のうち、DC成分は、直前のDC成分との差分が演算され、その差分値が符号化される。輝度信号の場合、4個のブロックの順番は、左上、右上、左下、右下の順番とされる。従って、左上のブロックのDC成分としては、直前のマクロブロックの右下のブロックのDC成分との差分が符号化され、右上のブロックのDC成分としては、左上のブロックのDC成分との差分が符号化され、左下のブロックのDC成分としては、右上のブロックのDC成分との差分が符号化され、右下のブロックのブロックのDC成分としては、左下のブロックのDC成分との差分が符号化される。
色差信号の場合は、それぞれ直前の対応する色差信号のブロックのDC成分との差分が符号化される。
このように、DC成分の差分値を符号化するとき、DC成分は、サイズと、そのサイズで表される実際の値(DC Differential)を結合した形で表される。前者は、可変長符号(VLC:Variable Length Code)とされ、後者は、固定長符号(FLC:Fixed Length Code)とされる。
DC成分(DC差分成分)のサイズは、例えば、輝度信号の場合、図17(A)に示すように規定されており、色差信号場合、図17(B)に示すように規定されている。また、例えばDC成分(DC差分成分)のサイズが3である場合、DC差分成分は、図18に示すように規定されている。
従って、例えば輝度信号の場合、DC成分(DC差分成分)のサイズが3(図17(A)の VLC の”101”)で、実際のDC差分成分zz[0]が−6(図18の DCT Differential の”001”)であるとき、その差分値は、”101”と”001”を結合して、101001で表される。
付随情報を付加する際には、DC成分(DC差分成分)のサイズが変化しないような範囲内でDC差分成分を変化させれば、固定長の符号部分だけを用いて付随情報を付加することができる。
例えば輝度信号のDC差分成分のサイズが3で、実際のDC差分成分zz[0]が−6である場合を考える。ウォータマークパターンのシンボルがプラスで付加レベル a が1である場合には、その差分値を101001から101010に置き換えれば、実際のDC差分成分は−6より1だけ大きい−5になる。ウォータマークパターンのシンボルがマイナスで付加レベル b が1である場合には、その差分値を101001から101000に置き換えれば、実際のDC差分成分は−6より1だけ小さい−7になる。
同じく輝度信号のDC差分成分のサイズが3で、実際のDC差分成分zz[0]が−6である場合、ウォータマークパターンのシンボルがプラスで、付加レベル a が3であると、図18に示すように、−3(=−6+3)のDC差分成分zz[0]は規定されていないので、固定長の符号部分だけを用いて付随情報を付加することはできない。この場合、このブロック位置では付随情報の付加は行なわない。あるいは、例えば付加レベル2までなら固定長の符号部分で付随情報を付加することが可能なので、差分値を101001から101011に置き換えることにしても良い。この時、実際のDC差分成分が−6より2だけ大きい−4になったことをレジスタ等に記録し、DC差分成分に対する次の付加を行なう際には、その値も参照して利用するべきである。このことについては、後で述べる。
DC成分のサイズが0、つまり実際のDC差分成分zz[0]が0である場合には、固定長の符号部分だけを用いて付随情報を付加することはできないため、そのブロック位置では付随情報の付加は行なわない。あるいは、何らかの処理により、付随情報を付加することにしても良い。
付随情報を付加することによるDC成分の実際のずれ分は、レジスタ等に記録し、DC差分成分に対する次の付加を行なう際に、その値も参照して、次のように利用する。例えば、直前の付随情報の付加によって、DC成分の実際の値が本来の値よりも2だけ大きくなっている場合、レジスタに2を記録しておく(R=2とする)。次の付加を行なう際に、実際のDC差分成分zz[0]が7の時、輝度信号のDC差分成分のサイズは3である。ウォータマークパターンのシンボルがマイナスで付加レベル b が1である場合、DC成分が差分符号化されていることを考慮すると、付随情報を付加するためには、−R−b = −2−1 = −3 だけDC差分成分を変化させる必要がある。そのため、差分値を101111から101100に置き換え、実際のDC差分成分を7から4にし、DC成分の実際の値が1だけ小さい値になったことを記録するために、R = 2−3 = −1 にする。付随情
報を付加することによって発生するDC成分の実際のずれ分は、上記以外の方法を用いて記録しても良い。
なお、DC成分(DC差分成分)を利用した付随情報の付加を行なう際には、上記以外の何らかの方法を用いても良い。
上記実施の形態においては、DC成分(DC差分成分)を用いて付随情報を付加する場合を説明したが、Motion Vector(動きベクトル)の差分値を符号化したコードの中のMotion_residual(FLC)を用いることも可能である。
すなわち、MPEG方式においては、図39の従来例で説明すると、動きベクトル検出器50でPピクチャおよびBピクチャの動きベクトルを検出し、これを符号化してビットストリーム中に含めて伝送するようになされている。このMotion Vectorは、図19に示すような VLC とされるMotion_codeと、 FLC としてのMotion_residualで表される。Motion_codeは、Motion Vectorの大まかな値を表し、Motion_residualは、細かな値を表すための補正値を表す。また、f_codeは、Motion_codeの精度(倍率)を表している。
例えば、f_codeが1の場合、Motion_codeは0.5精度の値を表す。これにより、充分細かな値が表されるので、この場合、Motion_residualは使用されない。
f_codeが2である場合、Motion_codeは整数精度を表し、Motion_residualは、0.5精度の値を表す。すなわち、このとき、Motion_residualは、0または0.5を示す1ビットの FLC で表される。
さらに、f_codeが3である場合、Motion_codeは2の倍数の精度の値を表し、Motion_residualは、0,0.5,1.0または1.5を表す2ビットの FLC となる。
なお、DC Differentialの場合と同様に、Motion_codeが0である場合、Motion_residualは存在しない。
このような FLC であるMotion_residualに、上述したDC Differentialの場合と同様に、付随情報を付加するようにすることができる。
付随情報を検出する際には、例えば動きベクトルあるいはその差分値などを足し引きして、評価値を算出すれば良い。これ以外の方法を用いて、付随情報の検出を行なっても良い。
なお、Motion_residualはPピクチャとBピクチャに存在するが、BピクチャのMotion_residualを用いるようにすれば、Bピクチャは他のピクチャの予測に用いられることがないので、キーデータ挿入による他のピクチャへの影響を防止することができる。
ところで、ウォータマークパターンの付加を行なう際、第4の実施の形態として、例えば対象の画像領域毎に付加レベルを可変にすることができる。このような構成にすることで、例えば視覚的に影響のない範囲内で付随情報の付加量を増加させ、付随情報の検出時の誤検出をなくすことが可能となる。この場合、評価値のバイアス成分 B(図36と図37の例では (4n)^2 )がより大きな値になるため、付随情報の検出時に評価値と閾値との比較が容易になる。
図20は、この場合のウォータマーク付加器1の構成例を示している。入力された画像データは、簡易符号解読器121で簡易解読された後、付随情報過付加判別器141へと渡される。付随情報過付加判別器141では、例えばウォータマークパターンを付加する際に可能な最大付加レベルや、その位置情報等を解析し、それらの過付加情報 k を付随情報付加器11に渡す。あるいは、それ以外の解析を行なって、過付加情報 k を割り出しても良い。その他の構成は、付随情報付加器11において、過付加情報 k に応じた付加レベルで付随情報の付加を行なう以外は、図2の場合と同様である。
この図20のウォータマーク付加器1では、図21に示した一連の処理を行なう。始めにステップS81で、付随情報付加器11は、ウォータマークの付加レベル a, b を設定する。この時、付随情報過付加判別器141は、付随情報の付加を行なう対象となる画像上でウォータマークパターンの領域と等しい大きさの領域を設定し、その領域において、例えばウォータマークパターンを付加可能な最大付加レベルを算出し、付随情報付加器11は、その値を付加レベル a, b に反映させる。あるいは、それ以外の方法を用い、付加レベル a, b に反映させても良い。その他のステップS82乃至88の処理は、図4のステップS2乃至8の処理と同様であるので、その説明は省略する。
ウォータマークパターンを付加する際に可能な最大付加レベルを算出する際には、様々な基準が利用可能であるが、以下ではその具体例をいくつか述べる。
まず、視覚的に影響のない範囲内という基準を用いて、付加レベルを変化させることができる。例えば、あらかじめ基本的な付加レベル a0, b0 をそれぞれ1と設定しておく。高周波成分が多く含まれる領域では、ウォータマークパターンを付加することによるノイズ成分は目立ちにくくなる。そこで、あらかじめ付加レベル ak, bk を設定し、その値を基本的な付加レベルよりも大きい値(例えば2)に設定しておく。付随情報の付加を行なう対象となる画像に対し、ハイパスフィルタ等を用いて高周波成分が多く含まれる領域を特定し、その領域では ak, bk を付加し、それ以外の領域では a0, b0 を付加することにすれば、視覚的に影響のない範囲内で付随情報の付加量を増加させることができる。あるいは、ハイパスフィルタ等を用いた時に得られるレベルに応じて、個々の領域に対する ak, bk をそれぞれ設定し、それらの付加レベルで付加することにしても良い。
第3の実施の形態に対しては、上記の処理はより容易に行なうことができる。第3の実施の形態では、例えばブロック単位で符号化される DCT の直流成分に付随情報を付加するが、実際に付加を行なう時点では、既に DCT の交流成分も算出されている。そのため、その交流成分を利用し、高周波成分が多く含まれる領域を特定すれば、例えばウォータマークパターンを付加する際に可能な最大付加レベルを容易に算出することができる。具体的には、 DCT 係数の量子化レベルのうち、例えばQF[4][4]乃至QF[7][7]といった高周波成分でレベル0以外の係数が存在した場合、その最大レベルに応じて多くのレベルを付加する等の方法がある。
そして、符号化時における固定長の符号部分の許す限りという基準を用いて、付加レベルを変化させることができる。このことについては、既に第3の実施の形態のところで基本的な処理方法を述べた。第3の実施の形態では、固定長の符号部分だけを用いて付随情報を付加することができない場合、付随情報の付加を行なわない例を主に記した。これを逆手にとれば、符号長が変わらない範囲内で、付随情報の付加量を増加させることができる。例えば輝度信号のDC差分成分のサイズが3で、実際のDC差分成分zz[0]が−6である場合を考える。ウォータマークパターンのシンボルがプラスの時、差分値を101001から101011に置き換えれば、実際のDC差分成分は−6より2だけ大きい−4になり、付加レベル b=2 とすることができる。必要であるなら、差分値を1010
01から101111に置き換え、実際のDC差分成分を−6から7に変えれば、付加レベル b=13 とすることもできる。
同じく第3の実施の形態で、マクロブロック単位で符号化される動きベクトルを用いて、付随情報の付加を行なう場合も同様である。動きベクトルが多少ずれたとしても、復号して得られる画像の画質は、視覚的に問題ない程度の劣化で済むことが多い。そこで、例えば固定長の符号部分の許す範囲内でベクトルをずらし、それぞれのずらし位置における予測画像と実際の画像との差分画像の電力を調べておく。付随情報を付加する際に、例えばその電力がある閾値以下でかつずれ量の大きいベクトルに置き換えるといった処理を行えば、付随情報の付加量を増加させることができる。
上記で示した以外の基準を用いて、ウォータマークパターンを付加する際の付加レベルを決めても良い。また、これらの基準を組み合わせて用いても構わない。
ところで、ウォータマークパターンの検出を行なう際、第5の実施の形態として、付加時の領域の単位を任意の方法で分割して扱い、分割したそれぞれの部分領域に対して評価値を算出し、それらの評価値を比較することで、付随情報の検出精度を高めることが可能である。
本実施の形態を説明するために、以下のような新しい付随情報の検出方法を導入する。すなわち、付随情報を検出する際、ウォータマークパターンをずらしながら、それぞれのずらし位置(位相)に対する評価値を求め、それらの評価値を比較して付随情報を検出する。このようにすると、相対的評価基準を利用できる。
ここで、ウォータマークパターンをずらして評価値を求める理由を述べる。例えば、M系列を用いてウォータマークパターンを生成した場合、0あるいは周期分以外の位置(位相)で任意にずらしたウォータマークパターンと、元のウォータマークパターンとの相関は非常に低くなる。言い換えれば、付加した時のウォータマークパターンに対して少しでもずらしたウォータマークパターンを用いて検出を行なうと、評価値のバイアス成分はほぼ0となる。例えば図36と図37において、ずらしたウォータマークパターンを用いて検出を行なうと、評価値 (4n)^2 はほぼ0となる。
そのため、ウォータマークパターンをずらして求めた評価値は、ウォータマークパターンが付加されていない場合の標準的な評価値とほぼ等しいとみなすことができる。従って、ウォータマークパターンをずらして求めた評価値と、ずらし量0の時の評価値とを比較することにより、相対的評価基準を利用できるため、付随情報の検出を容易に行なうことができる。これにより、付随情報が埋め込まれていない場合の評価値がほぼ 0 となるような、充分に広い領域のウォータマ
ークパターン(M系列なら、高次の系列)を用いなくても、狭い領域のウォータマークパターン(M系列なら、低次の系列)を用いるだけで、付随情報の検出を確実に行うことができる。
図22には、この場合におけるウォータマーク検出器22の構成を示した(なお、ウォータマーク付加器1側の構成と動作は、上記実施の形態の場合と同様である)。入力された画像データは、複数(図22の例の場合、3個)の評価値算出器31−1乃至31−3に入力される。ウォータマークパターン保持メモリ12に記録されているウォータマークパターンは、必要に応じてウォータマークパターンがずらされ、各評価値算出器31−1乃至31−3に供給される。
ウォータマークパターンをずらす際には、図23に示すように、例えば画像の走査順に従ってずらす方法等がとられる。例えば8×8のブロック単位で付随情報を付加してあったとしても、検出時にずらす単位は、付加時の単位以外であっても良い。図23では、8×8画素のブロック単位(8画素単位)で前後にずらす場合と、1画素単位で前後にずらす場合の例が、概念的に示されている。また、上記のようなずらし方に限定されるわけではなく、これ以外の方法でずらしても構わない。
評価値算出器31−2では、例えば8×8のブロック単位で i ブロック分だけずらしたウォータマークパターンを用いて評価値を算出する。評価値算出器31−1では、ウォータマークパターンをずらさずに評価値を算出する。評価値算出器31−3では、例えば8×8のブロック単位で j ブロック分だけずらしたウォータマークパターンを用いて評価値を算出する。ずらし量は i>0, j<0, |i|=|j| のように、ずらし量0を中心に前後に同じ量だけずらす方が良いが、任意のずらし量で構わない。
各評価値算出器31−1乃至31−3では、それぞれのウォータマークパターンを用いて評価値を算出する際、8×8画素のブロックの全ての画素について評価値を算出するのではなく、その一部の画素だけを用いて評価値を算出する。そして、評価値を算出する際に用いる一部の画素をずらしながら、それぞれのずらし位置に対応する評価値を複数回算出する。評価値を算出する際に用いる一部の画素の領域の範囲は任意で構わないが、付随情報を付加する際の領域を任意の方法で分割して扱う方が良い。この例として、図24に、8×8画素のブロックを、8×1画素の8個の領域(列)に分割する例を示した。
図24では、ブロック内ずらし量0の時に評価値を算出する範囲を、各ブロックの左から3番目の列に位置する画素と決め、それを中心に、 −2 から 5 まで
のブロック内ずらし量に対する評価値の算出範囲の例が示してある。このような処理を行なうことで、図23に概念的に示したように、ウォータマークパターンを1画素単位で前後にずらして評価値を算出する場合と同様の効果を、ウォータマークパターンをずらさずに実現することができる。
図22に示した i, j を i=−1, j=1 とすると、図24の基準で見れば i は−8画素、j は8画素のブロック内ずらし量で評価値を算出することと等価である。そこで、例えば、評価値算出器31−2では、i=−1 として、ブロック内ずらし量 −8+5, −8+4 に対する評価値を算出し、評価値算出器31−3では、j=1として、ブロック内ずらし量 8−2, 8−1 に対する評価値を算出する。評価値算出器31−1では、ブロック内ずらし量 −2 から 5 に対する評価値を算出する。このようにすれば、ブロック内ずらし量 −4 から 7 に対する評価値を疑似的に連続的に算出でき、後で述べるように、評価値の比較が容易となり、付随情報の検出精度を高めることができる。
各ブロック内ずらし量に対応して評価値を算出する処理は、1つの演算単位(プロセッサエレメント)(PE : Processor Element)と見なすことができる。図22には、上記の場合における各評価値算出器31−1乃至31−3での PE の個数を示している。すなわち、評価値算出器31−1乃至31−3は、それぞれ、8個(−2乃至5までの演算を行うPE)、2個(−8+5(=−3)と−8+4(=−4)の演算を
行うPE)、または2個(8−2(=6)と8−1(=7)の演算を行うPE)の演算単位(PE)を有している。
図25には、各 PE において実行される処理の流れを PE のブロック図で具体的に示した。この図では、付加レベル a=1, b=0 としている。セレクタ161は、評価値を算出するために入力される画素値が、例えば8ビットである場合、その画素に対応するウォータマークパターンのシンボルに応じて、その画素値(プラスの場合)、あるいは0(マイナスの場合)を、8ビットで出力する。セレクタ161の出力値とレジスタ163の値が加算器162で足し算され、その加算値が、例えば24ビットのレジスタ163に蓄えられる。対象の範囲内の全ての画素についてこの加算処理が繰り返され、処理終了後のレジスタ163の評価値は評価値比較器33へ入力される。
上記以外のウォータマークパターンのずらし量や、評価値を算出する際のずらし量を用いても構わない。また、上記以外の方法で、評価値を算出する際に用いる一部の画素の領域の範囲を構成しても構わない。
各評価値算出器31−1乃至31−3で算出された評価値は、評価値比較器33で閾値処理され、評価結果すなわち付随情報 f が出力される。この具体的な
処理については、後で述べる。
図22のウォータマーク検出器22では、図26と図27に示した一連の処理を行う。まず、ステップS101で、評価値算出器31−1乃至31−3は、閾値 th に所定の値を設定する。次に、評価値算出器31−1におけるずらし量0のウォータマークパターンを用いた時の、現フレームの画像に対する評価値 sumn を求めるための処理がステップS102で開始され、ステップS103で、評価値演算処理が実行される。この評価値演算処理の詳細は図27に示されている。
この図27の処理では、ステップS121で、評価値 sum の初期化を行った後、ステップS122乃至S126において、ウォータマークパターンを z=0 だけずらしたパターンに対して、図45に示した従来例のステップS162乃至S166と同様の処理を行い、ステップS127で、求めた sum の値を、 sumn に設定する。
同様に、図26のステップS104,S105で、評価値算出器31−2におけるずらし量 z=i のウォータマークパターンを用いた時の評価値 sumi が求められる。そして、ステップS106,S107で、評価値算出器31−3におけるずらし量 z=j のウォータマークパターンを用いた時の評価値 sumj が求められる。このように、ブロック内ずらし量に応じて、 sumi, sumj, sumn について、それぞれいくつかの評価値を算出することができる。
このようにして求めた3つのまとまりの評価値に対し、例えば以下のような比較を行う。すなわち、評価値比較器33は、ステップS108で、 sumi, sumj として求めたいくつかの評価値を平均し、基準値 sumave を求める。また、 sumn として求めたいくつかの評価値を平均する。さらに、ステップS109で、評価値比較器33は、 sumn の平均値と sumave との差分の絶対値を求め、その差が閾値 th よりも大きい場合には、付随情報が付加されているとみなして、ステップS110で、付随情報 f を on にする。そうでない場合には、ステップS111で、付随情報 f を off にする。
図28の評価値比較器33のブロック図では、この処理の流れを具体的に示した。評価値算出器31−2より出力されたずらし量 i の評価値(−3と−4のPEの出力)は、加算器171により加算され、評価値算出器31−3の出力するずらし量 j の評価値(6と7のPEの出力)は、加算器172により加算される。加算器173は、加算器171の出力と加算器172の出力を加算し、割算器174に出力する。割算器174は、加算器173より出力された値を4で割算し、基準値 sumave を出力する。
一方、評価値算出器31−1の出力するずらし量0の評価値(−2乃至5のPEの出力)は、加算器175乃至181により加算され、割算器182に供給される。割算器182は、加算器181から供給された値を8で割算し、平均値 sumn を演算する。
減算器183は、割算器182の出力 sumn から、割算器174の出力 sumaveを減算し、その減算結果を絶対値回路184に供給する。絶対値回路184は、減算器183の出力の絶対値を演算し、比較器185に出力する。比較器185は、絶対値回路184から供給される値と、閾値 th を比較し、その比較結果を出力する。その比較結果に応じて評価結果、すなわち付随情報 f の on, off が出力される。
評価値を比較する方法は、どのようなものであっても良いが、より検出精度を高めるためには、例えば以下のように処理を行うと良い。図29には、8×8画素のブロック単位で付随情報を付加した場合について、上記のような検出方法で評価値を算出した場合の、ブロック内ずらし量に対する評価値のグラフ例を示した。このグラフでは、ウォータマークパターン付加時の評価値の推移を点線で、未付加時の評価値の推移を実線で示した。また、8×8画素のブロック単位でウォータマークパターンを前後にずらした場合に相当するブロック内ずらし量について、その評価値を、2重丸で特に強調して示した。
図29に示すように、ブロック内ずらし量 −2 から 5 の範囲では、評価値にバイアス成分(図36と図37の例では、(4n)^2 )が加わっている。しかし、これまでに述べた評価値の比較方法では、ウォータマークパターン付加時の評価値だけを用いて付随情報の検出を行うことは困難である。なぜなら、例えば前後にウォータマークパターンを±1ブロックずらした時(図29では、ブロック内ずらし量±8画素に相当)の評価値を平均して求めた基準値 sumave と、ずらし量0の時(図29では、ブロック内ずらし量0に相当)の評価値とでは、あまり大きな差がないため、付随情報が付加されていないと誤検出される可能性が高いからである。
そこで、ウォータマークパターンをずらした時の境界付近の評価値を用いるため、上記の例で示したように、例えばブロック内ずらし量 −4 から 7 に対する評価値を疑似的に連続的に算出しておく。ブロック内ずらし量が −3 の時の評価値と比べて、 −2 の時の評価値がバイアス成分の分だけ大きく、しかもブロック内ずらし量が 6 の時の評価値と比べて、 5 の時の評価値がバイアス成分の分だけ大きい時に、付随情報が付加されていると判断すれば、誤検出の可能性は大きく減少する。あるいは、どちらかがバイアス成分の分だけ大きい時に、付随情報が付加されていると判断しても良い。ブロック内ずらし量 −4 及び −3 の平均値を用いたり、その評価値の推移から −2 の時の評価値を外挿あるいは予測して得られる値を用いるなどして、比較を行っても良い。もちろん、上記に挙げた以外の比較方法を用いて、付随情報の検出を行っても良い。
前後1つずつのずらし量だけでなく、それぞれ複数のずらし量を用い、それらについて求めた全てあるいは一部の評価値に対して、フィルタ等を用いて標準的な評価値を構成しても構わない。それとは逆に、例えば前のずらし量だけを用いるというように、どちらか一方のずらし量だけを用いて、標準的な評価値を構成しても良い。また、ブロック内ずらし量等のように、評価値を算出する際に用いる一部の画素の領域の範囲についても、同様である。
また、小数精度のずらし量についても反復処理を行うことにし、そのような場合はウォータマークパターンあるいは対象領域の画素を補間して評価値を求めることにしても良い。
現フレームの画像に対する標準的な評価値 summed を求める際には、どのような処理方法を用いても良い。先の例では平均を用いる場合などについて説明したが、任意の単一のずらし量の評価値をそのまま利用しても良いし、複数の評価値のうち全部あるいは一部に対する最大値、最小値などを求めて利用するというように、どのような処理方法を用いて標準的な評価値を求めても構わない。これには、例えば −2 及び −1 ずらした時の評価値の推移から、ずらし量0の時の評価値を予測あるいは外挿するというような、より複雑な処理方法も含まれる。
以上においては、本発明をエンコーダとデコーダに適用した場合を例として説明したが、例えば、図30に示すように、フォーマッタに適用することも可能である。この場合、マスタテープ201または伝送路202よりより供給された画像データが、フォーマッタ203に供給される。フォーマッタ203は、上述した場合と同様の構成の復号器21とウォータマーク検出器22を有している。復号器21は、入力された符号ビット列を復号し、ウォータマーク検出器22に出力する。マスタテープ201または伝送路202からの画像データが、既に復号された状態の画像データである場合には、これがウォータマーク検出器22に直接供給される。
ウォータマーク検出器22は、入力された画像データが付随情報fを含むか否かを検出し、その検出結果に対応して、画像変換器34を制御する。従って、付随情報が付加されている画像データは出力され、スタンパ204が形成され、このスタンパ204から、大量のレプリカディスク205が生成される。これに対して、入力された画像データが、付随情報が付加されていない場合には、画像変換器34は画像データを出力しない。従って、この場合、スタンパ204は作成することができないことになる。
図31は、本発明を記録装置に適用した場合の構成例を表している。この場合、記録装置221には、例えば、図30のフォーマッタ203で製造されたディスク205、または伝送路202から符号化された画像データ、または既に復号されている画像データが入力される。符号化されている画像データは、復号器21で復号された後、ウォータマーク検出器22に供給される。既に復号された状態の画像データは、ウォータマーク検出器22に、直接供給される。
ウォータマーク検出器22は、図30のフォーマッタ203における場合と同様に、付随情報が付加されている場合には、画像変換器34から画像データを出力し、ディスク222に記録させるが、付随情報が付加されていない場合には、画像変換器34を制御して、画像データを出力させないようにする。その結果、このとき、ディスク222には、記録装置221に入力された画像データを記録することができないことになる。
なお、上記したような処理を行うプログラムをユーザに伝送する伝送媒体としては、磁気ディスク、CD−ROM、固体メモリなどの記録媒体の他、ネットワーク、衛星などの通信媒体を利用することができる。
1 ウォータマーク付加器, 2 符号化器, 11 付随情報付加器, 12 ウォータマークパターン保持メモリ, 31 評価値算出器, 32 ウォータマークパターン保持メモリ, 33 評価値比較器, 34 画像変換器, 101,111 ウォータマークパターン照合制御器, 121,131 簡易符号解読器, 141 付随情報過付加判別器