電子透かしの原理
Principles of Digital Watermark

1.埋め込み原理
1)定義
埋め込むコンテンツ(C):キャリアあるいはコンテナと称する。
埋め込み情報(W):電子透かし情報と称する。
埋め込み操作:←で表す。
埋め込み済みコンテンツ(C’)
2)埋め込み処理
電子透かし埋め込みとは次の操作を行うこと。   
 C'=C←W

2.知覚特性の利用
前述1の操作を行いますが操作の結果が人の知覚、すなわち聴覚や視覚で認識されるようでは困ります。そこで幾つかの生理学的あるいは画像、音楽の特性を利用します。

視覚、聴覚で共通している点
-1.高域、低域で感度が鈍くなる
-2.マスキング特性
-3.微分特性

聴覚特有の点
-1.ダイナミックレンジが広い
-2.位相に鈍感
-3.時間伸張に感度がある
など、ここでは省略しますが他にも幾つか大きな相違が見られます。重要なことは感度が「鈍くなる」という特性を利用するという点です。 その上で下記の手法を用いて埋め込み操作を行います。
           
3.埋め込み方法の区分
-1.置換法
-2.周波数領域変換法
-3.拡散法
-4.統計的方法
-5.ベクトル量子化法
-6.その他
以下の埋め込み法については
小野束 :電子透かしとコンテンツ保護、(株)オーム社(2001)を参照しました。
個別に簡単に説明します。

1)置換法
画像はピクセル(画素)と呼ぶ点の並びで構成され、通常は8ビットで階調表現します。
したがって明るさは0〜255のレベルを取ります。
ここで、例えば画像の一部が次のような3×6の画素数で構成されていたとします。
122 122 123 123 124 125
122 122 123 123 124 125
122 122 123 123 124 125
自然画像は値が緩やかに変化します。
ここで埋め込む情報が次の3ビットで構成されていたとしましょう。
埋め込み情報(Wi):110
埋め込み情報Wiを先頭から1ビットずつ取り出しながらつぎのように変更します。
Wiはi番目のビット、Cjはj番目の画素を示します。
if Wi = 1 then Cj →ODD
if Wi = 0 then Cj →EVEN
画素の先頭からWiを埋め込むとCjは次のようになります。このような操作を施しても画像上は何も変化が無かったように見えることでしょう。
視覚がだまされているのですね。
123 123 122 123 124 125
122 122 123 123 124 125
122 122 123 123 124 125
透かし情報を取り出すときは簡単です。
if Cj = ODD then 1
else 0
となります。
音楽のCDは16ビットで量子化されているのに対し画像は8ビットです。これは耳のほうがダイナミックレンジが広いためなのです。細かい相違に対する感度も目は鈍感です。ですから同じ手法を音楽に利用するときは注意が必要です。ただし、CTやMRIのような医療画像は10ビット以上でディジタル化されるので上記のような方法ではノイズを付加する結果となり危険です。
またこの方法はこのままではあまり実用的とは言えません。理由は階調を変化させてみればわかります。お考えください。

2)周波数領域変換法
JPEG圧縮の処理手順を考慮するととこの方法は理解しやすです。
JPEG圧縮を超簡単にすると下記となります。
原画像→離散コサイン変換→量子化テーブルによる量子化→符号化

この過程で離散コサイン変換(DCT)が行われます。DCTにより2次元画像が2次元の周波数成分に変換されます。そこで電子透かし埋め込みにDCTを用いる方式であれば圧縮過程の一部を埋め込みに利用できることになります。
JPEGでは演算の高速性を考慮して通常8×8画素単位で計算します。下記は画素の一部であるとしましょう。
113 77 40 25 
 73 59 48 48
 34 36 41 49
 25 20 13 14
DCT計算後は
 475 177 112 48
-156 -80 -32 -27
 84 6 -14 0
 23 116 102 22
となります。この計算は機械的に行うだけです。だから周波数領域などと意識する必要もないとおもいます。
次にこの値をQテーブルの対応した係数で割ります。
Qテーブルも8×8ですが下記はその一部で上記の画素位置に対応しています。
 16 11 10 16
 12 12 14 19
 14 13 16 24
 14 17 22 29
割った結果は下記となります。
 30 16 11 3
-13 -7 -2 -1
 6  1 -1  0
 2  7  5  1
要するに随分小さな値になっちゃうのですね。すると符号化するときに短い符号を割り当てることができます。符号化にはハフマン符号というのが用いられるが、これは区切りがなくても語の切れ目がわかる用に作られています。そして出現頻度の高いデータに短い符号を割り当てます。だから周波数領域に変換された時点で既に係数0のところが出現して圧縮されている(0だから)のが、Qテーブルで割ることにより係数がさらに小さくなり、符号化の効率でさらにデータとしては短くなる、というわけです。
以上がJPEG圧縮のイントロです。
ここから本論です。
電子透かしの埋め込みは周波数領域の係数に対して行います。先ほどとおなじような埋め込みルールで考えていけば良いはずです。
ただし、左上角の成分はDC成分といって平均的な明るさを示しますのでここは操作対象から除外します。一方、係数の右下は周波数が高い成分を示しています。画像の周波数成分の高いところは係数値が少々変化しても視覚的には大きな違和感を与えません。そこでこの特徴を利用して係数を操作しよう、ということになります。このサンプルでは、とりあえず、4×4のうち右下角の2×2あたりということになります。
ですから
-1 0
 5 1
あたりを埋め込み対象とすればいいわけです。実際にはこの領域は画像によって異なるためもう少し複雑な手順を踏んで決めていく必要があります。
ここまでくれば後は1)の方法と同様な埋め込み操作で実現できます。ただし操作対象は周波数係数です。
埋め込み情報(Wi):110
埋め込み情報Wをビットに分解し1ビットずつ取り出しながらつぎのように変更する。
Wiはi番目のビット、K(m,n)は(m,n)番目の画像の周波数係数を示します。
if Wi = 1 then K(m,n) →ODD
if Wi = 0 then K(m,n) →EVEN

あとはまた逆順の操作を行えば透かしの埋め込まれた画像jが完成します。
簡単ですか?この方法では周波数係数を変更しましたので結果は画像全域(分割ブロック内の)同じ周波数成分のところすべてにあまねく反映されていきます。そのため特定の画素の階調変化だけで透かしが消えることはありません。でもこのままでは実用性はあまり高くないのです。例えば画像は階調変化だけでなく歪ませたり切り取ったりします。それらに対して耐性を持たせるにはかなり工夫が必要なのです。なぜ?考えてみてください。

3)拡散法
拡散法は基本的には前記2)の方式の秘匿性および耐性を向上させるために考案されました。
拡散の電子透かしにおける利用法には二種類あります。
・埋め込み位置を拡散する方式:歴史のところで登場したCoxらの方法です。
・埋め込み情報を拡散して透かし埋め込み操作を行う方法:こちらは周波数拡散(Spread Spectrum)で、多数の方法が発表されています。また二種類の拡散方式が利用されています。
・直接拡散方式(DS)
・周波数ホッピング方式(FH)

直接拡散とは埋め込み信号を信号レベルとして拡散操作を行う方式、周波数ホッピングとは埋め込み位置を周波数スペクトルに展開させる方式です。
一例を下記に示します。この例はWavelet変換されたブロックについて適用しています。

画像のブロックあたりの平均電力を計算→画素ごとに直接拡散を行う→透かし情報を加える→逆拡散を行う

周波数ホッピング方式で拡散する場合は下記です。例は音楽です。

MDCT変換を行う→埋め込み周波数を鍵により決定→該当周波数を操作→逆MDCTにより戻す

拡散させるメリットですが、電子透かしとは何らかの形でノイズを加えることに他ならないので、なるべく広く拡散させておいたほうが目立たず、また耐性も上がるという考え方に基づきます。
事実、うまく使った方式においては相当の耐性向上が実現できます。ただし、オーディオ透かしなどで直接拡散を用いる場合は拡散ノイズが聞こえる人がいますので要注意です。したがってよりレベルを下げて埋め込みを行う必要性があり、積算してはじめて透かし信号として意味をなうようなことを行います。

4)統計的方法
統計的方法として知られているものにパッチワ−ク法があります。
画像の任意の差分ペアを全画素について求めます。
si=ai-bi
次にこの総和を求めます。
Sn=Σ(ai-bi)
ただし、総和はi=1から i=nまで。
次にそれぞれのペアを下記のようにδだけ変化させます。
ai+δ、bi-δ
同様に差分をとりその総和を求めると次式となります。
Sn'=Σ{(ai-bi)+2δ}
すなわち2δの統計的なシフトが生じます。これが透かし情報となるのです。
この方法を多ビットに展開するにはブロック分割する必要があります。
また、Wavelet変換のLL成分に利用した方法などがあります。

5)ベクトル量子化法
ベクトル量子化とはJPEG、MPEG、MP3などで用いられる圧縮符号化法に対してベクトルコードブックを用いる方法のことを指します。音声ではITU-TG.728が代表例として知られています。ベクトル符号化の特徴は高圧縮率にあります。画像では複数のメーカが独自の方式を発表しています。その中には256×256×8の画像を64ビットで表現(圧縮)することもできるとするものもあります。

ここではG.728について説明しましょう。画像で類似のことを行っている例もあります。
G.728ベクトル符号化では128個の波形ベクトルを持つコードブックがあります。
コードブックをODD番号グループ(A群とする)とEVEN番号グループ(B群とする)に分割します。そして次の操作を行います。

if Wi = 0 then A群より探索 else B群より探索

かくして得られたコードから信号を再構成します。
G.728はもともと低い伝送レートを想定していますから高音質のものではありません。そうではあっても透かしを埋め込んで聴感上違和感があってはだめです。この方式では透かし情報jの有無による差異にはきづきません。ではフィルタなどを通すと透かしはどうなるのでしょうか?考えてみてください。

6)その他(歴史的には古い方法です)
ア)FAXへの透かし
小史で述べた方法です。FAX画像は一種のニ値のスキャナ画像です。ランレングスとハフマン符号化が利用されています。
例えば用紙に縦棒一本引かれているときは下記のようなデータとなっています。0あるいは1は一画素を示し0.12mm/画素です。1の個数または0の個数をラン長といいます。
00000111110000
00000111110000
00000111110000
00000111110000
00001111000000
00011100000000
ここで埋め込みを行うときはこのラン長を制御します。
j列目のラン長をRjで示すとき以下の埋め込み規則を適用する。
if Wi = 1 then Rj →ODD
if Wi = 0 then Rj →EVEN
ただし、端部やラン長が短い、あるいは操作により隣のランと衝突する場合などの場合は除外します。
このようにするとハフマン符号化するときラン長の制御結果が符号ビット長に直接反映されない場合が多数生まれてきます。この結果データ長を変えずに情報を埋め込むことが実現できるのです。
FAXにはMH方式とさらに圧縮率を高めたMR方式とがあります。上記はMH方式についての考え方です。MR方式では垂直方向の情報も利用し圧縮率を稼ぐようになっています。電子透かしにおいても同様にそれぞれに対応して巧妙に埋め込みます。

イ)濃度パターン法(例はここを参照してください)
レベル0:0000
レベル1:0001
レベル2:0011
    ・
    ・
    ・
レベル15:1111
このように濃度パターンでは0(白レベル示す)、1(黒レベルを示す)の個数で明るさレベルを表しています。
ここで注意であるが画像の場合はそれぞれ正方に配列されておりこのように並んでいるわけではない。
要するに、0と1の数の比がレベルを表すと考えてよいのです。したがって中間のレベルの表し方には幾つかのバリエーションがあることになります。例えばレベル1では1の位置はどこであってもよいわけです。このことを利用し埋め込み情報によって配列を変化させることにより明るさは変化させず情報を埋め込むことが可能となります。
ウ)符号化の量子化歪を利用する方法
適応差分PCM方式(ADPCM)などで発生する量子化誤差を利用した方法などが知られています。
エ)色信号を利用する方法
色信号を利用して埋め込む方法も多数発表されています。この方式の中には大変面白い方法もあります。が致命的なことは色信号を取り除くと電子透かしが無くなってしまう事です。ここでは省略します。


電子透かしへ戻る

電子透かしの用途