以下、本発明に係る実施例について添付の図面を参照しつつ詳細に説明する。
<第1の実施例>
図1は本発明による画像符号化装置及び画像復号装置を伝送路と共に表すブロック図である。画像符号化装置10は、直交変換部11と、透かし埋め込部12と、量子化部13と、可変長符号化部14と、制御部15と、を含む。
直交変換部11は、外部より受け取った画像データPDを複数のブロックに分割し、これらの各々に対して、例えばDCT(Discrete Cosine Transform)などの直交変換処理を施して、ブロック毎の直交変換係数(以下、DCT係数と称する)DCを生成する。直交変換部11は、DCT係数DCを透かし埋め込部12に与える。
透かし埋め込み部12は、直交変換部11からのDCT係数DCに、外部より受け取った透かしデータTDを埋め込む機能を有する。本実施例における透かしデータの値は0、1及び−1の3値であるとする。透かし埋め込部12は、制御部15から透かし埋め込み位置データLCを受け取り、これに基づいて透かしデータTDの埋め込み対象のDCT係数を識別する。
透かし埋め込部12は、制御部15から量子化ステップ幅WSを受け取り、これを用いて当該DCT係数に透かしデータTDを埋め込む。当該透かしデータの埋め込み処理の詳細については後述する。透かし埋め込部12は、透かしデータの埋め込みによって得られた透かし入りDCT係数TCを量子化部13に与える。また、透かし埋め込部12は、直交変換部11からのDCT係数が透かしデータ埋め込み対象でないと判別した場合には、これをそのまま量子化部13に与える。
量子化部13は、透かし埋め込部12からの透かし入りDCT係数TCに対して、制御部15からの量子化ステップ幅WSで、通常の量子化処理を施す。また、量子化部13は透かし埋め込部12から透かし埋め込み無しのDCT係数を受け取った場合にも、これに制御部15からの量子化ステップ幅WSで、通常の量子化処理を施す。量子化部13は量子化処理によって得られた量子化データQDを可変長符号化部14に与える。
可変長符号化部14は、量子化部13からの量子化データQDに対して通常の可変長符号化処理を施して符号化データSDを得る。可変長符号化部14は、伝送路20を介して符号化データSDを画像復号装置30に送信する。
制御部15は、透かしデータ埋め込み対象ブロックの画像品質と当該透かしデータ埋め込み対象ブロックの周辺ブロックの画像品質との相違が小となるように(両者の画質が同等となるように)、当該透かしデータ埋め込み対象ブロックに対応する量子化ステップ幅WSの大きさを設定し、これを量子化部13及び透かし埋め込み部12に与える。当該量子化ステップ幅WSの大きさは、後述する式(1)によって算出される。ここでの周辺ブロックとは、透かしデータ埋め込み対象ブロックに隣接する少なくとも1つのブロックである。
制御部15は、可変長符号化部14からの符号量データSAに基づいて、動画像データの送受信ビットレートが所定の範囲に収まるように周辺ブロックの量子化ステップ幅WSの大きさを設定し、これを量子化部13に与える。
制御部15は、透かしデータTDの埋め込み対象のDCT係数DCを示す透かし埋め込み位置データLCを予め記憶しており、これに基づいて各ブロックが透かしデータ埋め込み対象ブロックであるのか、周辺ブロックであるのかを判別できる。制御部15は、透かし埋め込み位置データLCを透かし埋め込部12に与える。また、制御部15は、伝送路20を介して透かし埋め込み位置データLCを画像復号装置30に送信する。
伝送路20は、有線、無線いずれの伝送路でも良く、例えばインターネットなどの通信網でも良い。
画像復号装置30は、逆可変長符号化部31と、逆量子化部32と、透かし検出部33と、逆直交変換部34と、を含む。
逆可変長符号化部31は、伝送路20より符号化データSDを受け取り、これに通常の逆可変長符号化処理を施して量子化データQDを得る。逆可変長符号化部31は、量子化データQDを逆量子化部32に与える。
逆量子化部32は、量子化データQDに対してブロック毎の量子化ステップ幅で通常の逆量子化処理を施して透かし入りDCT係数TCを得る。逆量子化部32は、透かし入りDCT係数TCを透かし検出部33に与える。なお、逆量子化部32は、透かしの埋め込まれていない量子化データを逆可変長符号化部31から受け取った場合にも、当該量子化データに対して逆量子化処理を施してDCT係数を得て、当該DCT係数を透かし検出部33に与える。
透かし検出部33は、伝送路20より透かし埋め込み位置データLCを受け取り、これとブロック毎の量子化ステップ幅とに基づいて、透かし入りDCT係数TCから透かしデータTDを検出する。透かし検出部33は、透かし入りDCT係数TCから透かしデータTDを除去して得られた透かし除去DCT係数JCを逆直交変換部34に与える。また、透かし検出部33は、当該検出によって得られた透かしデータTDを出力する。
逆直交変換部34は、透かし検出部33からの透かし除去DCT係数JCに通常の逆直交変換処理を施して画像データPDとし、これを出力する。
図2は透かし埋め込み及び圧縮符号化処理ルーチンを表すフローチャートである。以下、図2を参照しつつ、画像符号化装置10における透かし埋め込み及び圧縮符号化処理について説明する。
先ず、直交変換部11は、外部より画像データを受け取ったら、これを複数のブロックに分割する。ここでは一例として画像データはブロックサイズが8×8画素の複数のブロックに分割されるものとする。直交変換部11は、更に当該分割によって得られたブロックの各々に対して直交変換処理を施して、DCT係数を生成する(ステップS201)。直交変換部11は、当該DCT係数を透かし埋め込部12に与える。
次に、制御部15が量子化ステップ幅の大きさを算出する(S202)。制御部15は、自身が記憶している透かし埋め込み位置データに基づいて透かし埋め込み対象のブロックを把握している。制御部15は、透かし埋め込み対象ブロックの量子化ステップ幅Qを式(1)で算出する。
ここで、Nは透かしデータ埋め込み対象ブロックの画素数、Mは3以上の整数、Aは画像データのピーク信号レベル、rは透かしデータ埋め込み対象ブロックの周辺ブロックの画像品質を表す。ここでの画像品質とは例えばPSNR(Peak Signal-to-Noise Ratio)値の平均値などである。式(1)によって、透かしデータ埋め込み対象ブロックの画像品質が、透かしデータが埋め込まれない周辺ブロックの画像品質と同等になる量子化ステップ幅が算出される。式(1)の算出根拠及び妥当性については後述する。
制御部15は、可変長符号化部14からの符号量データに基づいてビットレートが所定の範囲に収まるように周辺ブロックの量子化ステップ幅Qnを決定する。透かしデータが埋め込まれない周辺ブロックの量子化による誤差は、周辺ブロックの量子化ステップ幅Qnに対して−Qn/2〜+Qn/2の範囲で一様分布となるので、ブロック全体の誤差エネルギーE0は式(2)のようになる。
式(1−2)より、制御部15は、周辺ブロックのPSNR値を式(3)で算出し、これを適用する。
続いて、透かし埋め込部12は、透かし埋め込み処理ルーチンを実行する(S203)。図3は透かし埋め込み処理ルーチンを表すフローチャートである。以下、図3を参照しつつ、透かし埋め込部12における透かし埋め込み処理について説明する。
透かし埋め込部12は、直交変換部11からDCT係数を受け取り、制御部15から透かし埋め込み位置データを受け取る。透かし埋め込部12は、当該透かし埋め込み位置データに基づいて透かしデータ埋め込み対象のDCT係数を識別する(S301)。透かし埋め込部12は、直交変換部11からのDCT係数が埋め込み対象でないと判別した場合、当該DCT係数には透かしデータを埋め込まずに当該処理を終了し、当該DCT係数をそのまま量子化部13に与える。
透かし埋め込部12は、直交変換部11からのDCT係数が埋め込み対象であると判別した場合、制御部15から量子化ステップ幅を受け取り、外部から透かしデータを受け取る(S302)。図4は透かしデータ埋め込み対象のブロック及びそのDCT係数を表す図である。ここでは一例としてブロックサイズを8×8画素(=64画素)としている。64画素の各々のDCT係数がf1〜f64で表されている。ここでは、一例として透かし埋め込み位置データが、透かしデータ埋め込み対象のDCT係数としてf64を示しているものとする。
透かし埋め込部12は、透かしデータ埋め込み対象のDCT係数f64に対して、制御部15からの量子化ステップ幅の3倍の値で丸め処理を施す(S303)。図5は丸め処理における入力値と出力値の関係を表すグラフである。横軸は入力値、すなわち、丸め処理前のDCT係数を表す。縦軸は、出力値、すなわち、丸め処理後のDCT係数を表す。同図に示される丸め処理は、入力値が正数の領域では四捨五入の操作に相当し、入力値が負数の領域では符号を反転させたのち四捨五入して再度符号を反転させる処理に相当する。例えば、入力値(丸め処理前のDCT係数)が0.4であれば出力値(丸め処理後のDCT係数)は0となり、入力値が0.5であれば出力値は+1となる。また、入力値が−0.4であれば出力値は0となり、入力値が−0.5であれば出力値は−1となる。
透かし埋め込部12は、DCT係数に対して量子化ステップ幅の3倍の値で丸め処理を施す。具体的には、先ず、DCT係数を量子化ステップ幅の3倍の値で除算し、次に、当該除算によって得られた値を入力値として図5に示される特性に従って整数化した出力値を得る。最後に当該出力値に量子化ステップ幅の3倍の値を乗算することにより、丸め処理後のDCT係数が得られる。
ここでは、透かしデータの値は0、1及び−1の3値であるとする。透かし埋め込部12は、外部から受け取った透かしデータの値が1である場合、丸め処理後のDCT係数に量子化ステップ幅の値を加算して透かし入りDCT係数を得る(S304、S305)。当該透かしデータの値が−1である場合、透かし埋め込部12は丸め処理後のDCT係数から量子化ステップ幅の値を減算して透かし入りDCT係数を得る(S306、S307)。また、当該透かしデータの値が0である場合、透かし埋め込部12は、丸め処理後のDCT係数に対して量子化ステップ幅の加減算は行わない。なお、透かし埋め込部12は、透かし埋め込み対象ではないDCT係数f1〜f63については透かし埋め込み処理を施さない。透かし埋め込部12は、上記処理によって得られた透かし入りDCT係数を量子化部13に与える。
再び図2を参照する。上記した透かし埋め込み処理(S203)に続いて、量子化部13は、透かし入り及び透かし埋め込み無しのDCT係数の各々に対して、制御部15からの量子化ステップ幅で通常の量子化処理を施して量子化データを得る(S204)。具体的には、先ず、DCT係数を量子化ステップ幅で除算し、次に、当該除算によって得られた値を入力値として図5に示される特性に従って整数化した出力値(量子化データ)を得る。量子化部13は当該量子化データを可変長符号化部14に与える。
可変長符号化部14は、量子化部13からの量子化データに対して通常の可変長符号化処理を施して符号化データを得る(S205)。続いて可変長符号化部14は、伝送路20を介して当該符号化データを画像復号装置30に送信する(S206)。これと同時に、可変長符号化部14は、当該符号化処理において発生した符号量を表す符号量データを制御部15に与える。
続いて、画像復号装置30における透かし検出及び復号化処理について説明する。図6は透かし検出及び復号化処理ルーチンを表すフローチャートである。
先ず、逆可変長符号化部31が伝送路20を介して符号化データを受信する(S601)。逆可変長符号化部31は当該符号化データに通常の可変長符号化処理を施して量子化データを得る(S602)。逆可変長符号化部31は当該量子化データを逆量子化部32に与える。
逆量子化部32は、逆可変長符号化部31からの量子化データに対してブロック毎の量子化ステップ幅で通常の逆量子化処理を施してDCT係数を得る(S603)。逆量子化部32は、当該透かし入りDCT係数を透かし検出部33に与える。以下、透かしの埋め込まれているDCT係数を透かし入りDCT係数と称する。
透かし検出部33は、伝送路20より透かし埋め込み位置データを受け取り、これとブロック毎の量子化ステップ幅とに基づいて、逆量子化部32からの透かし入りDCT係数から透かしデータTDを検出する透かし検出処理を行う(S604)。図7は透かし検出処理ルーチンを表すフローチャートである。
先ず、透かし検出部33は、透かし埋め込み位置データに基づいて、逆量子化部32からのDCT係数が、透かし埋め込み対象のDCT係数であるか否かを判別する(S701)。透かし検出部33は、DCT係数が透かし埋め込み対象でないと判別した場合、当該処理を終了し、当該DCT係数をそのまま逆直交変換部34に与える。透かし検出部33は、DCT係数が透かし入りDCT係数であると判別した場合、当該DCT係数から、当該DCT係数を量子化ステップ幅の3倍の値で丸めた値を減算する(S702)。
透かし検出部33は、当該減算の結果が0であれば、透かしデータの値を0と判定する(S703、S704)。当該減算の結果が正数であれば、透かし検出部33は、透かしデータの値を1と判定する(S705、S706)。当該減算の結果が負数であれば、透かし検出部33は、透かしデータの値を−1と判定する(S707)。透かし検出部33は、当該判定によって得られた値を透かしデータとして外部に出力する。
上記判定の妥当性を以下に示す。画像符号化装置10における、透かし埋め込み対象のDCT係数をf、透かし入りDCT係数をg、量子化データをh、量子化ステップをQとし、画像復号装置30における、透かし入りDCT係数をs、透かし検出処理における減算結果をtとする。このとき、g、h、s、tは式(4)で表される。
ここで、記号<>は図5に示す整数化の演算処理を表す。αは、透かし値の0のときに0、透かし値の1のときに1、透かし値の−1のときに−1である。式(4)より、α=0の場合にはt=0、α=1の場合にはt=+Q、α=−1の場合にはt=―Qとなる。したがって、透かし検出部33は、減算結果tが0、正数及び負数の何れであるかに基づいて透かしデータの値を判定できる。
また、式(4)より、画像復号装置30における透かし入りDCT係数sは式(5)のように表される。
式(5)より、透かし入りDCT係数からαQを減算することによって、透かし成分を除去することができ、当該DCT係数の画像品質が向上することがわかる。そこで、透かし検出部33は、透かし入りDCT係数から量子化ステップ幅の値を減算して透かし除去DCT係数を得る。具体的には、透かし値が1の場合、透かし検出部33は、透かし入りDCT係数から量子化ステップ幅の値を減算して得られた値を透かし除去DCT係数とする。透かし値が−1の場合、透かし検出部33は、透かし入りDCT係数に量子化ステップ幅の値を加算して得られた値を透かし除去DCT係数とする。透かし検出部33は、当該透かし除去DCT係数を逆直交変換部34に与える。
再び図6を参照する。逆直交変換部34は、透かし検出部33からの透かし除去DCT係数に通常の逆直交変換処理を施して画像データを得て、これを出力する(S605)。上記した処理により、画像復号装置30は、画像符号化装置10にて埋め込まれた透かしデータを検出、出力することができる。
以下に、式(1)の妥当性について説明する。透かし埋め込み対象ブロックの符号化による誤差エネルギーEは、透かしが埋め込まれないDCT係数に対する量子化誤差E1と、透かし埋め込み対象のDCT係数に対する丸め処理による誤差E2と、当該DCT係数への透かし値埋め込みによる誤差E3の総和となる。ここで、量子化ステップ幅をQ、ブロック内に含まれている画素数をN(=64)、画像データのピーク信号レベルをA(=255)、ブロックのPSNRをr、定数M=3とする。E1は、N−1個のDCT係数について−Q/2〜+Q/2の範囲の一様分布であり、E2は1つのDCT係数について−MQ/2〜+MQ/2の範囲の一様分布であり、E3の最大値は量子化ステップ幅Qであるため、式(6)が得られる。
式(6)を変形することにより、前述した式(1)が得られる。
上記した如く本実施例による画像符号化装置は、ブロック毎の量子化ステップ幅に基づいて、透かし埋め込み対象のDCT係数に透かしデータを埋め込む。具体的には、画像符号化装置は、先ず、当該DCT係数に対して量子化ステップ幅の3倍の値で丸め処理を施す。次に画像符号化装置は、透かしデータが1の場合には、丸め処理によって得られた値に量子化ステップ幅の値を加算し、透かしデータが−1の場合には、丸め処理によって得られた値から量子化ステップ幅の値を減算することによって透かしデータの埋め込み処理をなす。
本実施例による画像復号装置は、ブロック毎の量子化ステップ幅に基づいて、透かしデータが埋め込まれたDCT係数から透かしデータを検出する。具体的には、画像復号装置は、先ず、当該DCT係数から、当該DCT係数に対して量子化ステップ幅の3倍で丸め処理を施して得られた値を減算する。画像復号装置は、当該減算の結果が0、1及び−1のいずれであるかに基づいて透かしデータの値を判定する。
従来技術においては、量子化誤差の影響によって透かし埋め込み画像に劣化が生じ、透かしデータを検出できなくなるという問題があった。式(6)に表されるように、通常、量子化などによって生じる誤差は、量子化ステップ幅の影響を受ける。上記したように本実施例による画像符号化装置は、透かし埋め込み処理において、透かしデータの値に応じて量子化ステップ幅を加算若しくは減算することによりDCT係数に透かしデータを埋め込む。画像復号装置は透かし検出処理において算出された値が0(量子化ステップ幅の加減算なし)であるのか、正数(量子化ステップ幅の加算)であるのか、または、負数(量子化ステップ幅の減算)であるのかによって、透かし値を判別するため、量子化ステップ幅の大小に左右されることなく、すなわち、量子化誤差に左右されずに、透かしデータを埋め込み、且つ正確に透かしデータを検出することができる。
本実施例による画像符号化装置は、透かし埋め込み対象ブロックの画像品質(PSNR値)を、周辺ブロックの画像品質に基づいて決定するため、透かしデータが埋め込まれたブロックの画質とその周辺のブロックの画質とが同等となり、透かしデータが埋め込まれた画像領域が視覚的に特定され難いという効果を奏する。更に、画像復号装置は、透かし入りDCT係数から透かしデータを取除いてから復号(逆直交変換)するため、画質を向上させることができる。
本実施例では、透かし埋め込部12が、DCT係数を量子化ステップ幅の3倍の値で丸め、透かし検出部33が同じく量子化ステップ幅の3倍の値で透かしデータを検出する場合について説明したが、上記の倍率は3倍に限られるものではなく、3以上の整数であれば本実施例と同様の効果が得られる。ただし、透かし埋め込部12で用いる倍率と透かし検出部33で用いる倍率とは同一である。
<第2の実施例>
本実施例における画像符号化装置10及び画像復号装置30は、第1の実施例と同様に図1のブロック図で表される。以下、第1の実施例と異なる部分について説明する。
本実施例では、透かしデータを0及び1からなるビット列とし、1つのブロックには1ビットの透かしビットが埋め込まれるものとする。
制御部15は、式(7)により、透かし埋め込み対象ブロックの量子化幅Qを算出する。
ここで、Nは透かしデータ埋め込み対象ブロックの画素数、Aは画像データのピーク信号レベル、rは透かしデータ埋め込み対象ブロックの周辺ブロックの画像品質(PSNR)を表す。式(7)の算出根拠及び妥当性については後述する。なお、ブロック全体の誤差エネルギーE0及び周辺ブロックのPSNR値は、第1の実施例と同様にそれぞれ式(2)及び式(3)で算出される。
図8は透かし埋め込み処理ルーチンを表すフローチャートである。以下、図8を参照しつつ、透かし埋め込部12における透かし埋め込み処理について説明する。
透かし埋め込部12は、直交変換部11からDCT係数を受け取り、制御部15から透かし埋め込み位置データを受け取る。透かし埋め込部12は、当該透かし埋め込み位置データに基づいて透かしデータ埋め込み対象のDCT係数を識別する(S801)。透かし埋め込部12は、直交変換部11からのDCT係数が埋め込み対象でないと判別した場合、当該DCT係数には透かしデータを埋め込まずに当該処理を終了し、当該DCT係数をそのまま量子化部13に与える。
透かし埋め込部12は、直交変換部11からのDCT係数が埋め込み対象であると判別した場合、制御部15から量子化ステップ幅を受け取り、外部から透かしデータを受け取る(S802)。ここでは第1の実施例と同様、図4に示されるDCT係数f64を透かしデータ埋め込み対象のDCT係数であるとする。
透かし埋め込部12は、透かしデータ埋め込み対象のDCT係数f64に対して、制御部15からの量子化ステップ幅の2倍の値で丸め処理を施す(S803)。具体的には、先ず、DCT係数を量子化ステップ幅の2倍の値で除算し、次に、第1の実施例と同様、当該除算によって得られた値を入力値として図5に示される特性に従って整数化した出力値を得る。最後に当該出力値に量子化ステップ幅の2倍の値を乗算することにより、丸め処理後のDCT係数が得られる。
透かし埋め込部12は、外部から受け取った透かしデータの値が1である場合、丸め処理後のDCT係数に量子化ステップ幅の値を加算して透かし入りDCT係数を得る(S804、S805)。当該透かしデータの値が0である場合、透かし埋め込部12は、丸め処理後のDCT係数に対して量子化ステップ幅の加減算は行わない。なお、透かし埋め込部12は、透かし埋め込み対象ではないDCT係数f1〜f63については透かし埋め込み処理を施さない。透かし埋め込部12は、上記処理によって得られた透かし入りDCT係数を量子化部13に与える。
続いて、第1の実施例と同様に、量子化部13が透かし入りDCT係数に量子化処理を施して量子化データとし、可変長符号化部14が当該量子化データに可変長符号化処理を施して符号化データとする。可変長符号化部14は伝送路20を介して当該符号化データを画像復号装置30に送信する。
画像復号装置30においても第1の実施例と同様に、逆可変長符号化部31が伝送路20からの符号化データに逆可変長符号化処理を施して量子化データとし、逆量子化部32が当該量子化データに逆量子化処理を施してDCT係数とし、これを透かし検出部33に与える。
透かし検出部33は、伝送路20より透かし埋め込み位置データを受け取り、これとブロック毎の量子化ステップ幅とに基づいて、逆量子化部32からの透かし入りDCT係数から透かしデータTDを検出する透かし検出処理を行う。図9は透かし検出処理ルーチンを表すフローチャートである。以下、図9を参照しつつ、透かし検出部33における透かし検出処理について説明する。
先ず、透かし検出部33は、透かし埋め込み位置データに基づいて、逆量子化部32からのDCT係数が、透かし埋め込み対象のDCT係数であるか否かを判別する(S901)。透かし検出部33は、DCT係数が透かし埋め込み対象でないと判別した場合、当該処理を終了し、当該DCT係数をそのまま逆直交変換部34に与える。透かし検出部33は、DCT係数が透かし入りDCT係数であると判別した場合、当該DCT係数から、当該DCT係数を量子化ステップ幅の2倍の値で丸めた値を減算する(S902)。
透かし検出部33は、当該減算の結果が0であれば、透かしデータの値を0と判定する(S903、S904)。当該減算の結果が0以外であれば、透かし検出部33は、透かしデータの値を1と判定する(S903、S905)。透かし検出部33は、当該判定によって得られた値を透かしデータとして外部に出力する。
上記判定の妥当性を以下に示す。画像符号化装置10における、透かし埋め込み対象のDCT係数をf、透かし入りDCT係数をg、量子化データをh、量子化ステップをQとし、画像復号装置30における、透かし入りDCT係数をs、透かし検出処理における減算結果をtとする。このとき、g、h、s、tは式(8)で表される。
ここで、記号<>は図5に示す整数化の演算処理を表す。αは、透かし値の0のときに0、透かし値の1のときに1である。式(8)より、α=0の場合にはt=0、α=1の場合にはt=±Qとなる。したがって、透かし検出部33は、減算結果tが0であるか否かに基づいて透かしデータの値を判定できる。なお、式(8)によれば、α=−1とした場合にもt=±Qとなることから、透かし埋め込部12において、透かしデータが1の場合に透かし入りDCT係数として量子化ステップ幅の値を加算する代わりに、量子化ステップ幅を減算しても良い。
また、式(8)より、画像復号装置30における透かし入りDCT係数sは式(9)のように表される。
式(9)より、透かし入りDCT係数からαQを減算することによって、透かし成分を除去することができ、当該DCT係数の画像品質が向上することがわかる。そこで、透かし検出部33は、透かしデータの値が1のときに、透かし入りDCT係数から量子化ステップ幅の値を減算して透かし除去DCT係数を得る。
続いて、第1の実施例と同様に、透かし検出部33は、透かし除去DCT係数を逆直交変換部34に与え、逆直交変換部34は、当該透かし除去DCT係数に通常の逆直交変換処理を施して画像データを得て、これを出力する。上記した処理により、画像復号装置30は、画像符号化装置10にて埋め込まれた透かしデータを検出、出力することができる。
以下に、式(7)の妥当性について説明する。透かし埋め込み対象ブロックの符号化による誤差エネルギーEは、透かしが埋め込まれないDCT係数に対する量子化誤差E1と、透かし埋め込み対象のDCT係数に対する丸め処理による誤差E2と、当該DCT係数への透かし値埋め込みによる誤差E3の総和となる。ここで、量子化ステップ幅をQ、ブロック内に含まれている画素数をN(=64)、画像データのピーク信号レベルをA(=255)、ブロックのPSNRをr、定数M=2とする。E1は、N−1個のDCT係数について−Q/2〜+Q/2の範囲の一様分布であり、E2は1つのDCT係数について−MQ/2〜+MQ/2の範囲の一様分布であり、E3の最大値は量子化ステップ幅Qであるため、式(10)が得られる。
式(10)を変形することにより、前述した式(7)が得られる。
本実施例による画像符号化装置は、DCT係数に対して量子化ステップ幅の2倍の値で丸め処理を施し、0及び1の2値の透かしデータの内、透かしデータが1の場合にのみ、丸め処理によって得られた値に量子化ステップ幅の値を加算することによって透かしデータの埋め込み処理をなす。
本実施例による画像復号装置は、DCT係数から、当該DCT係数に対して量子化ステップ幅の2倍で丸め処理を施して得られた値を減算し、当該減算の結果が0であるか否かに基づいて透かしデータの値を判定する。
上記した如く本実施例による画像符号化装置は、透かし埋め込み処理において、透かしデータの値が特定の値(ここでは0)である場合に量子化ステップ幅を加算(若しくは減算)することによりDCT係数に透かしデータを埋め込む。画像復号装置は透かし検出処理において算出された値が0(量子化ステップ幅の加減算なし)であるのか、0以外(量子化ステップ幅の加減算あり)であるのかによって、透かし値を判別するため、量子化ステップ幅の大小に左右されることなく、すなわち、量子化誤差に左右されずに、透かしデータを埋め込み、且つ正確に透かしデータを検出することができる。
本実施例では、透かし埋め込部12が、DCT係数を量子化ステップ幅の2倍の値で丸め、更に透かしデータが1の場合に量子化ステップ幅の値を加算する場合について説明したが、当該加算の代わりに量子化ステップ幅を減算するようにしても画像復号装置30にて透かしデータを正確に検出することができる。また、透かしデータが0の場合に量子化ステップ幅の値を加算若しくは減算するようにしても、画像復号装置30にて透かしデータを正確に検出することができるため、実施例と同様の効果が得られる。
<第3の実施例>
本実施例における画像符号化装置10及び画像復号装置30は、第1の実施例と同様に図1のブロック図で表される。以下、第1の実施例と異なる部分について説明する。
本実施例では、透かしデータを0及び1からなる2値列とし、1つのブロックには2値の透かし値が埋め込まれるものとする。
制御部15は、式(11)により、透かし埋め込み対象ブロックの量子化幅Qを算出する。
ここで、Nは透かしデータ埋め込み対象ブロックの画素数、Mは固定値2、Aは画像データのピーク信号レベル、rは透かしデータ埋め込み対象ブロックの周辺ブロックの画像品質(PSNR)を表す。式(11)の算出根拠及び妥当性については後述する。なお、ブロック全体の誤差エネルギーE0及び周辺ブロックのPSNR値は、第1の実施例と同様にそれぞれ式(2)及び式(3)で算出される。
図10は透かし埋め込み処理ルーチンを表すフローチャートである。以下、図10を参照しつつ、透かし埋め込部12における透かし埋め込み処理について説明する。
透かし埋め込部12は、直交変換部11からDCT係数を受け取り、制御部15から透かし埋め込み位置データを受け取る。透かし埋め込部12は、当該透かし埋め込み位置データに基づいて透かしデータ埋め込み対象のDCT係数を識別する(S101)。透かし埋め込部12は、直交変換部11からのDCT係数が埋め込み対象でないと判別した場合、当該DCT係数には透かしデータを埋め込まずに当該処理を終了し、当該DCT係数をそのまま量子化部13に与える。
透かし埋め込部12は、直交変換部11からのDCT係数が埋め込み対象であると判別した場合、制御部15から量子化ステップ幅を受け取り、外部から透かしデータを受け取る(S102)。ここでは第1の実施例と同様、図4に示されるDCT係数f64を透かしデータ埋め込み対象のDCT係数であるとする。
透かし埋め込部12は、透かしデータ埋め込み対象のDCT係数f64に対して、制御部15からの量子化ステップ幅の2倍の値で丸め処理を施す(S103)。具体的には、先ず、DCT係数を量子化ステップ幅の2倍の値で除算し、次に、第1の実施例と同様、当該除算によって得られた値を入力値として図5に示される特性に従って整数化した出力値を得る。最後に当該出力値に量子化ステップ幅の2倍の値を乗算することにより、丸め処理後のDCT係数が得られる。
続いて、透かし埋め込部12は、外部から受け取った透かしデータの値が1であるか否かを判別する(S104)。透かし埋め込部12は、当該透かしデータの値が1以外であると判別した場合、丸め処理後のDCT係数に対して量子化ステップ幅の加減算は行わない。透かし埋め込部12は、当該透かしデータの値が1であると判別した場合、丸め処理後のDCT係数が0以上であるか否かを判別する(S105)。
丸め処理後のDCT係数が0以上であれば、透かし埋め込部12は、丸め処理後のDCT係数に量子化ステップ幅の半分の値を加算する(S106)。丸め処理後のDCT係数が0未満であれば、透かし埋め込部12は、丸め処理後のDCT係数から量子化ステップ幅の半分の値を減算する(S107)。なお、透かし埋め込部12は、透かし埋め込み対象ではないDCT係数f1〜f63については透かし埋め込み処理を施さない。透かし埋め込部12は、上記処理によって得られた透かし入りDCT係数を量子化部13に与える。
続いて、第1の実施例と同様に、量子化部13が透かし入りDCT係数に量子化処理を施して量子化データとし、可変長符号化部14が当該量子化データに可変長符号化処理を施して符号化データとする。可変長符号化部14は伝送路20を介して当該符号化データを画像復号装置30に送信する。
画像復号装置30においても第1の実施例と同様に、逆可変長符号化部31が伝送路20からの符号化データに逆可変長符号化処理を施して量子化データとし、逆量子化部32が当該量子化データに逆量子化処理を施してDCT係数とし、これを透かし検出部33に与える。
透かし検出部33は、伝送路20より透かし埋め込み位置データを受け取り、これとブロック毎の量子化ステップ幅とに基づいて、逆量子化部32からの透かし入りDCT係数から透かしデータTDを検出する透かし検出処理を行う。図11は透かし検出処理ルーチンを表すフローチャートである。以下、図11を参照しつつ、透かし検出部33における透かし検出処理について説明する。
先ず、透かし検出部33は、透かし埋め込み位置データに基づいて、逆量子化部32からのDCT係数が、透かし埋め込み対象のDCT係数であるか否かを判別する(S111)。透かし検出部33は、DCT係数が透かし埋め込み対象でないと判別した場合、当該処理を終了し、当該DCT係数をそのまま逆直交変換部34に与える。透かし検出部33は、DCT係数が透かし入りDCT係数であると判別した場合、当該DCT係数から、当該DCT係数を量子化ステップ幅の2倍の値で丸めた値を減算する(S112)。
透かし検出部33は、当該減算の結果が0であれば、透かしデータの値を0と判定する(S113、S114)。当該減算の結果が0以外であれば、透かし検出部33は、透かしデータの値を1と判定する(S113、S115)。透かし検出部33は、当該判定によって得られた値を透かしデータとして外部に出力する。
上記判定の妥当性を以下に示す。画像符号化装置10における、透かし埋め込み対象のDCT係数をf、透かし入りDCT係数をg、量子化データをh、量子化ステップをQとし、画像復号装置30における、透かし入りDCT係数をs、透かし検出処理における減算結果をtとする。このとき、g、h、s、tは式(12)で表される。
ここで、記号<>は図5に示す整数化の演算処理を表す。αは、透かし値の0のときに0、透かし値の1のときに1である。sign(x)は、x>=0のときに1、x<0のときに−1である。式(12)より、α=0の場合にはt=0、α=1の場合にはt=±Q(<f/2Q> >=0のとき−Q、<f/2Q> <0のとき+Q)となる。したがって、透かし検出部33は、減算結果tが0であるか否かに基づいて透かしデータの値を判定できる。
また、式(12)より、画像復号装置30における透かし入りDCT係数sは式(13)のように表される。
式(13)より、透かし入りDCT係数からSign(<f/2Q>)αQを減算することによって、透かし成分を除去することができ、当該DCT係数の画像品質が向上することがわかる。そこで、透かし検出部33は、透かしデータの値が1のときに、t=−Qであれば透かし入りDCT係数から量子化ステップ幅の値を減算して、t=+Qであれば透かし入りDCT係数に量子化ステップ幅の値を加算して、透かし除去DCT係数を得る。
続いて、第1の実施例と同様に、透かし検出部33は、透かし除去DCT係数を逆直交変換部34に与え、逆直交変換部34は、当該透かし除去DCT係数に通常の逆直交変換処理を施して画像データを得て、これを出力する。上記した処理により、画像復号装置30は、画像符号化装置10にて埋め込まれた透かしデータを検出、出力することができる。
以下に、式(11)の妥当性について説明する。透かし埋め込み対象ブロックの符号化による誤差エネルギーEは、透かしが埋め込まれないDCT係数に対する量子化誤差E1と、透かし埋め込み対象のDCT係数に対する丸め処理による誤差E2と、当該DCT係数への透かし値埋め込みによる誤差E3の総和となる。ここで、量子化ステップ幅をQ、ブロック内に含まれている画素数をN(=64)、画像データのピーク信号レベルをA(=255)、ブロックのPSNRをr、定数M=2とする。E1は、N−1個のDCT係数について−Q/2〜+Q/2の範囲の一様分布であり、E2は1つのDCT係数について−MQ/2〜+MQ/2の範囲の一様分布であり、E3の最大値はQ/2であるため、式(14)が得られる。
式(14)を変形することにより、前述した式(11)が得られる。
本実施例による画像符号化装置は、DCT係数に対して量子化ステップ幅の2倍の値で丸め処理を施し、0及び1の2値の透かしデータの内、透かしデータが1の場合には、丸め処理によって得られた直交変換係数が0以上であれば、当該係数に量子化ステップ幅の半分の値を加算し、当該係数が0未満であれば、当該係数から量子化ステップ幅の半分の値を減算することによって透かしデータの埋め込み処理をなす。
本実施例による画像復号装置は、DCT係数から、当該DCT係数に対して量子化ステップ幅の2倍で丸め処理を施して得られた値を減算し、当該減算の結果が0であるか否かに基づいて透かしデータの値を判定する。
上記した如く本実施例による画像符号化装置は、透かし埋め込み処理において、透かしデータの値が0以上であるか否かに応じて量子化ステップ幅の半分の値を加算若しくは減算することによりDCT係数に透かしデータを埋め込む。画像復号装置は透かし検出処理において算出された値が0(量子化ステップ幅の加減算なし)であるのか、0以外(量子化ステップ幅の加減算あり)であるのかによって、透かし値を判別するため、量子化ステップ幅の大小に左右されることなく、すなわち、量子化誤差に左右されずに、透かしデータを埋め込み、且つ正確に透かしデータを検出することができる。
本実施例では、透かし埋め込部12が、DCT係数を量子化ステップ幅の2倍の値で丸め、透かし検出部33が同じく量子化ステップ幅の2倍の値で透かしデータを検出する場合について説明したが、上記の倍率は2倍に限られるものではなく、2以上の整数であれば本実施例と同様の効果が得られる。ただし、透かし埋め込部12で用いる倍率と透かし検出部33で用いる倍率とは同一である。
第1〜第3の実施例では、DCT係数に透かしデータを埋め込む場合について説明したが、DCT係数以外の直行変換係数に透かしデータを埋め込んでも、本実施例と同様の効果が得られる。また、従来公知の動画像符号化方式のように画像データより予測誤差画像データを生成して、これを符号化する場合にも、本発明の適用により、実施例と同様の効果が得られる。
第1〜第3の実施例では、画像のブロックサイズを8×8画素の場合について説明したが、当該サイズはこれに限定されず、例えば、4×4、16×16、32×32などのブロックサイズであっても本実施例と同様の効果を奏する。
第1〜第3の実施例では、制御部15が透かし位置データを画像復号装置に伝送する場合について説明したが、透かし位置データを予め定めた固定値し、画像復号装置30内に当該固定値を予め設定しておけば、当該透かし位置データを画像符号化装置10から画像復号装置30に伝送しなくても、実施例と同様の効果が得られる。