【実施例】
【0028】
以下,実施例に沿って詳しく説明する.
図1は本発明の情報埋め込みと抽出のための電子透かしシステムの構成図である.著作権保有者のコンピュータ3 には,著作権を有す画像データが,例えばハードディスクなどのデータメモリ7に保管されている.画像データは,プログラムメモリ6にある画像処理プログラムにより,CPU11,ROM 4,RAM5などを用いて画像処理され,モニター8に表示される.コンピュータ3にはスキャナー1,プリンタ2が接続され,処理された画像はモニター8に表示されたりプリンタから出力されたりし,またスキャナー1から画像読み取りができる.かかる画像処理は負荷の高い処理が多いため,GPUなどの高速化を図るための処理ボードが入っている場合もある.
【0029】
図2は,インターネット配信の処理手順を示すものである.透かし情報を埋め込まれた画像は,著作権者16のコンピュータからインターネット12により公開される(13).それを見た購入希望者17は,購入希望を配信者に連絡する(14).所定の手続き後,著作権者は透かしの埋め込みと除去のための秘密鍵を配信する(15).購入者は,著作権者との契約に基づき,送付された画像の埋め込まれた電子透かしを除去し,画像の編集加工を行う.
【0030】
さらに購入者は,編集加工された画像データを,2次著作権者として自己の著作情報やURLなどの情報をこの秘密鍵を用いて埋め込むことができる.これらの透かし情報を埋め込まれた画像は,市場に流通し様々な利用がなされる.
【0031】
違法な複製や利用の監視には,透かし抽出ソフトウェアにより画像から透かし情報を抽出し,自己の著作物であることを確認できる.この透かし抽出ソフトウェアには秘密性はなく,例えば,著作権者のホームページなどから自由にダウンロードできるようにして広く公開しだれでも使用できる.第三者はこれにより画像の所有者や著作権情報,連絡先などを知ることができるため,不正使用の警告にもなる.
【0032】
秘密鍵は埋め込む画像ごとに1対1で対応する.このため,著作権者は悪用されないように画像ごとに異なる鍵を用いる.このためこの鍵を用いて他の画像の透かしを除去することはできない.また後述の様に結託攻撃に対しても耐性がある.このとき,透かし読み出しのソフトウェアは,前述の様に,鍵が異なっても共通に使える.
【0033】
ここで,まず本発明に用いられるドットプロファイル作成アルゴリズムを
図3に沿って説明する.
今,求めるドットプロファイルのサイズをR×R ( R=2^m,^はべき乗を表す)として,まず,疑似乱数発生器により,R^2/2個のランダムドット(初期状態はホワイトノイズ)を重ならないようにして発生させ,p(i,j)とする.この時,疑似乱数発生器のSEED値を変えることにより初期状態のドットプロファイルを変更可能である.
STEP1:p(i,j)ドットプロファイルの二次元フーリエ変換を行い,P(u,v)を得る.
STEP2:P(u,v)にフィルタD(u,v)を掛けて,新たなP'(u,v)を得る.ここで,D(u,v)は低域が0となるフィルタである.
STEP3:P'(u,v)に逆フーリエ変換を行い,多値の点プロファイルp'(i,j)を得る.
STEP4: 誤差関数e(i,j)=p'(i,j)-p(i,j)を求め,各画素位置での誤差の大きい順に白,黒反転する.
STEP5: 上記操作を誤差が許容量以内になるまで繰り返す.
以上の操作を行い最終的に目的とするブルーノイズ特性を示すドットプロファイルを得る.
【0034】
次に,フィルタD(u,v)について説明する.D(u,v)は異方性を持たせるため,u軸方向とv軸方向で異なるフィルタとする.これは楕円であっても矩形であってもよい.U軸方向のカットオフ周波数(fmin)をfu とし,f0=(1/2)^(1/2)・fn としたとき,
b=(fu-f0)/fn
とすると,Rに非依存のドットプロファイルが得られる.ここで,fnはナイキスト周波数を示す.v軸方向はu軸方向のβ倍であるとする.
【0035】
一例として,R=64で,b=-1/16 ,β=1.5の時の楕円フィルタで求めたドットプロファイルを
図4に示す.かかるドットプロファイルp0(i,j)とし,そのパターンとスペクトル特性P0を
図3(a)に示す.β=1.5とは,フィルタD(u,v)がy軸方向に1.5倍に拡大されていることを意味する.スペクトル分布がu軸,v軸に対して対象であるため,p0(i,j)の虚数部は0となる.同図(b)のドットパターンp1(i,j)はp0(i,j)を90°回転したもので,スペクトルも同様に90°回転したものとなる.同図(c),(d)はそれぞれAffine係数検出パターンとヘッダー用パターンで後述する.
【0036】
続いて,多値画像データへの透かし埋め込みアルゴリズムについて説明する.
透かし情報の埋め込みは,カラー画像データをY,Cb,Crに変換し,輝度Yに透かし情報を埋め込む.Blue(印刷時はイエロー)に埋め込むのがもっとも理想的である.ただし,精度よく色分離することが必要である.
【0037】
今,周波数空間においてブロック単位で異種のスペクトルパターンを埋め込むこととして,異なるスペクトルパターンをPi (u,v) (i=0,・・・,n)とする.Piはそのスペクトルが前述のブルーノイズ特性を示す.ブルーノイズのカットオフ周波数fminは埋め込まれる画像の最大周波数よりも大きい周波数を選ぶことが理想的である.画像のスペクトルをブルーノイズスペクトルの0領域(低域部)に押し込めることができるため、分離が容易であるからである.
画像ブロックの周波数スペクトルをI(u,v)とすると,埋め込まれたスペクトルW(u,v)は,
W(u,v)=I(u,v)+gain・Pi (u,v) ---------- (1)
となる.ここで,不可視となるためには,gain≪1でなければならない.透かし情報Pi (u,v)が精度よく抽出されるためには,前述のようにI(u,v)とPi (u,v)の重なりを少なくすることが望ましい.
【0038】
実際の透かし情報の埋め込み作業は実空間で行う.前式を実空間(画素空間)に変換する(小文字で表す)と,
w(x,y)=i(x,y)+gain・pi (x,y) ---------- (2)
となる.透かし情報として、0,1の1ビットのデータを埋め込むとして,2つの異なるブルーノイズ特性を示すドットパターンpi(x,y)(i=1,2)を用意する。そのうえで、埋め込むビット情報(0,1)に対して,
埋め込みビット=0の時 → p0(x,y))
埋め込みビット=1の時 → p1(x,y)
として埋め込む.ここで,p0およびp1は(1,0)の二値であるが,平均輝度を保存するため(1/2,-1/2)とする.
もし、2ビットの多値データを埋め込む場合には、4つのドットパターンを用意すればよい。
【0039】
p0およびp1のドットパターンが透かし情報に応じて並置されるが、ランダムなドットであるため,両者の境界は目立たない.また,ブルーノイズ特性を示すハーフトーンスクリーンは,プリンタのFMスクリーンとしてよく用いられ,分散性ドットで均一性にすぐれているため人の視覚にも一様で粒状性も感じさせない.しかしながら、ドットの異方性を大きくすると目につくようになるため、βが1.5以内にする必要がある。
【0040】
図4の(c)および(d)は,矩形フィルタを用いてブルーノイズパターンを求めたものである.(c)はb=-3/16 の矩形フィルタからの生成パターンである.また,(d)は,b=0の矩形バンドフィルタから生成されたドットパターンである.(c)のパターンは後述のAffine変換係数の探索に,(d)のパターンは文字列の先頭におかれ,繰り返しの区切りパターンとして用いられる.
【0041】
原画像への埋め込み可能なデータ量(最大ビット数)Nは,画像サイズをW画素×H画素の画像データに対して,
N=int(W/R)×int(H/R) ---------- (3)
で与えられる.ここで,int()は少数以下切り捨てを表す.埋め込み可能文字数は,ASCII文字の場合は,int(N/8)となる.通常,著作権保護希望の対象画像はHDサイズ(1980画素×1024画素)以上の画像であり,HD画像では,N=480ビット=60バイトとなり,著作権情報の埋め込みとしては十分である.しかしながら,小さいサイズの画像で十分な情報量を必要とする場合には,R=32として埋め込めば,例えば,512画素×512画素の場合,N=256ビット=32バイトの情報量が埋め込み可能である.
【0042】
図5は1024画素×576画素の画像にR=64のドットパターンを埋め込んだものである.
したがって,この画像は,
N=int(1024/64)×int (576/64)= 16×9=144ビット=18バイト
となり,最大18バイト(ASCIIの場合)までの文字情報が埋め込み可能である.同図(a)は埋め込まれた画像を示す.埋め込みのgainは0.0625で,ある.すなわち,原画に±8 のドットパターンを合成したものである.同図(b)は後述の抽出結果で正答が得られている.
図6は
図5(b)の一部を拡大したものである,画像のスペクトルは楕円型のスペクトルの内部に包含されている.このため,両者のスペクトルを分離することが容易であることが分かる.
【0043】
埋め込み画像はgain を大きくすることにより,印刷耐性を高めることが可能である.しかしながら,gainを大きくするとドットパターンが見えるようになる.
図7はgainを変えて埋め込んだ場合の画像を示す.同図(a)のgain=0.125の場合,埋め込みは視覚的にほとんどわからないが,gainが増大するにつれ拡大画像でドット構造が目につくようになる.しかしながら,ブルーノイズ特性のため、拡大率が極端に大きくなければ,人の視覚特性によりほとんど目立たない.
【0044】
図8は透かし埋め込み処理フローを示す.まず,埋め込むための透かし情報ビット列wm(i,j)を用意する(20).ここでiは埋め込む文字のi番目を,jはそのjビット目を表す(MSBを0ビット目とする).ASCII文字の場合,8ビット/文字 であるので,j=0,1,…7である.また,iは,1≦i≦N/8である.ただしNは式(3)で示された埋め込み最大ビット数である.続いて,画像データをR×Rのブロックに分割し(21),ブロック単位でドットパターンを合成していくが,文字列の先頭であるか否か(22)で,先頭の場合はヘッダーパターン(pHeadder)を埋め込む.さらに,文字のMSB(Most Significant Bit)であるか否か(23)で,MSBの場合は,後述のAffine検出用のパターン(pAffine)を埋め込む.そのどちらでもない場合は,埋め込みビットが0の場合はp0, 埋め込みビットが1の場合はp1のパターンを埋め込む(24).全ブロックに埋め込みが終わった段階で終了する.ただし、Affine検出用パターンはヘッダーパターンで兼用される場合は必ずしも必要でない。
【0045】
埋め込んだ透かし情報が,埋め込みのgainが小さいために抽出できない場合がある.原画像の該当するブロックの空間周波数が高いとそのようなことが生じる.
図9はgainの自動調整を行うフローを示したもので,まず,gain=g として透かし情報wm(i,j)を画像の全ブロックに埋め込む(31).全ブロックを埋め込んだら,次に透かし読み取りを行う(32).ここでは,抽出した透かし情報wm’(i,j)と,埋め込む前の透かし情報 wm(i,j)を比較し一致するか否かを判定する.それと同時に,後述の抽出ビットの信頼度wmrel’(i,j)が,ある一定の閾値以上か判定する(33).透かし情報が一致しない場合や,一致していても信頼度が閾値以下の場合は,gainに一定値Δgを足して(34),再び透かしの埋め込みを行う.信頼度の定量化が可能なため,以上のようにして最適な透かし強度での埋め込みを自動で行うことができる.
【0046】
透かし情報の抽出は,読み取った画像の大きさ,傾きを補正後,ブロック単位でスペクトル画像を求める.式(2)をフーリエ変換して,
F{w(x,y)}=F{i(x,y)} + gain・F{pi (x,y)} ---------- (4)
となる.ただし,F{ }はフーリエ変換を表す.通常,F{i(x,y)}は原画像のスペクトルで,0周波数付近に局在し,F{pi (x,y)}はそれを取り巻くスペクトルとなる.このため,両者の重なりは少なく,両者を分離することは容易である.
【0047】
図10は補正画像の処理フローを示したものである.まず,画像の中から対象画像を切り出し(36),R×Rのウィンドウに該当する部分にFFTを施し矩形パターンを探す(37).印刷画像が縮小や拡大されているため,場合によっては一辺が R/2^n (nは整数)のウィンドウサイズで行ってもよい.矩形パターンが見つかると,Affine係数を求めることができる(38).その後,逆Affine変換を行い元の画像サイズと方向に戻す(39).続いてエッジ強調を画像に施し(40),補正画像を得る.
【0048】
Affine係数は以下のようにして求める.今,埋め込み画像w(x,y)がa倍に拡大されたとすると,そのフーリエ変換は,変倍前のフーリエスペクトルをP(fx,fy )とすると,
F{w(x/a,y/a)}=F{i(x/a,y/a)}+gain・F{p(x/a,y/a) }
=F{i(x/a,y/a) }+gain・|a|・P(au,av)
となり,スペクトル空間で1/aに縮小される.また,画像をθ回転させたものは,フーリエスペクトルでもθ回転する.したがって,埋め込まれた画像のスペクトルの分布を計測することにより施されたAffine係数を求めることができる.検出用の窓サイズは小さくてもかまわない.例えば,レジストレーション考慮をせずに40画素×40画素の窓サイズで抽出を試みる場合,余白を設けて64画素×64画素にしてFFT(高速フーリエ変換)を施しても,検出は可能である.
【0049】
図11に透かし抽出の処理フローを示す.まず補正画像をR×Rのブロックに分割し(41),最初のブロックにFFTを行う(42).続いて得られたスペクトル画像にヒストグラムイコライゼーションを施す(43).これはスペクトルパターンのコントラストを向上させると同時に,後述の信頼度の定量化での規格化を図るためである.続いて後述のマスク処理を行い(44),透かし情報wm’(i,j) および信頼度wmrel’(i,j)を得る.すべてのブロックが終了したか否かを判断し(46),終了しなければ次のブロックへ行き,再び同様の処理を行う.
【0050】
図12はフーリエ変換後のスペクトル分布からパターン認識により透かし情報の抽出を行う識別器としてのマスクパターンを示す.縦長および横長の楕円形状のマスクで,埋め込み用のドットパターンのスペクトル特性に対応したものである.図中黒の領域は値が0,白部分は値が1であるとする.透かしの入ったスペクトルにこのマスクを重ね,重なり部分の積分輝度値の差分から,ビットが0か1かを判断する.すなわち,
図13において,ブロックのスペクトルパターンW(i,j)に対して,以下の積分輝度値の出力Q0 ,Q1 を得る(40).
Q0=M0◎W=(1/Z)ΣM0(i,j)・W(i,j)
Q1=M1◎W=(1/Z)ΣM1(i,j)・W(i,j) ---------- (5)
ここで◎はマスク演算を,Zはマスクの値が1の画素数を表す.かかる出力から,
Q0>Q1 の時, 抽出ビット=wm’(i,j)=0
Q1>Q0 の時, 抽出ビット=wm’(i,j)=1
となる(41).同時に,以下のように信頼度を得る(42).
wmrel’(i,j)=|Q0-Q1|
かかる信頼度はその値が大きいほど抽出ビットの信頼度が高い.
【0051】
図14に透かし情報の精度および信頼性の向上策について説明する.画像のサイズにより式(3)から埋め込み最大ビット数Nが与えられる.今埋め込みたいビット数がnで n<N であるとすると,重複してビット列を埋め込むことができる.
図10の透かし情報の抽出では,ビット数にかかわらず(文字列の繰り返しを考慮せずに)Nまでの連続した透かし情報wm’ と信頼度wmrel’ を得た.この連続した文字列から信頼度の高いものを選択してnまでの透かし情報を求めていく.
【0052】
まず,iを埋め込んだ文字列のi番目の文字番号(0<i≦N),jをビット番号(0≦j≦7)としたとき,nを法としてその剰余kは,k=i mod n で表され(50),(i,j)番目の信頼度wmrel’が
wmrel’(i,j)>wmrel(k,j) の時信頼度が高いため,
wm(k,j)=wm’(i,j)
wmrel(k,j)=wmrel’(i,j) ---------- (6)
として(52),透かし情報を置き換える.これを全ビット及び全ブロックで,iがNまで,すなわち埋め込みビット数Nが終了するまで行う.
【0053】
上記操作により埋め込みビット列の,最も信頼度の高い透かし情報が選ばれ,埋め込まれた文字の信頼度が高くなり,正しく抽出される.この方法は多数決で決める手法に比べて精度が高い.
【0054】
以上のようにして透かしの抽出が行われるが,前述の
図5の(b)は抽出時のスペクトル分布を示す.埋め込みはASCII文字で“kawamura” の8文字を埋め込んだものである.各文字をビットに展開し,
図3で説明したように,”0“に対してp0を,”1“に対してはp1のパターンを埋め込む.またASCII文字の先頭ビット(MSB)はすべて0であるため,これをAffine変換係数検出用のパターン,文字列の最初の文字の先頭ビットを文字列区切り用のヘッダーパターンを用いた.図からわかるように,直交する2つの楕円スペクトルパターンと大小2つの矩形パターンが検出される.大きな矩形パターンは文字列のヘッダーパターンで,小さな矩形パターンはAffine検出用である.埋め込み可能文字数は18バイトで,8文字の文字列が2回と2文字が埋め込み可能であるため,信頼度の高いものを選ぶことにより抽出結果の精度を向上させることができると同時に,各文字の信頼度を定量化できる.
【0055】
透かし情報は埋め込みパターンを知ることにより,除去し原画像を得ることができる.すなわち式(2)より,
i(x,y)=w(x,y) - gain・pi (x,y)
となり,埋め込みパターンpi (x,y),およびgainを“鍵”として受け取ることにより原画像に戻すことができる.完全に元の画像に戻すためには,埋め込み画像のオーバーフロー,アンダーフローを避けるため,あらかじめダイナミックレンジを制限しておく必要がある.
画像データが8ビットの場合、画像データDataに対して、
Data'=Data+gain(128-Data) ----------(7)
なる変換で、ダイナミックレンジをリニアに圧縮し、出力データData'を得る。透かし除去後はこの逆変換することにより完全に元の画像に戻すことができる。すなわち、
Data=(Data'-128・gain)/(1-gain) ----------(8)
かかる変換は、gain を与えることで自動的に行うことができる。通常、gain≪1 であるので、画質に与える影響は少ない。
【0056】
透かしの除去は,画像を編集加工する際に必要である.強度の弱い透かしの場合,埋め込まれた状態で行ってもよいが,高品質な画像を必要とする場合は,いったん除去して行う.
編集後の最終データは,2次著作権情報を透かし情報を新たに埋め込むことが可能である.その場合,透かし埋め込みのソフトウェアを使い,鍵に含まれる埋め込みパターンを利用する.
【0057】
さらに,公開する画像に別の電子透かし情報を埋め込んでもよい.例えば,印刷耐性を高めたグリーンノイズパターンを埋め込む電子透かしなどである.このように,ユーザビリティーに応じたシステムを適宜構成することが可能となる.
【0058】
次に本手法の攻撃耐性について説明する.電子透かしに対する攻撃としては,例えば信号の強調(シャープネス調整),ノイズの付加,フィルタリング(線形,非線形),非可逆圧縮(JPEG,MPEG),変形(回転,拡大縮小)などがある.これらの攻撃は輝度情報への攻撃であり,本手法の様に分散ドットの集合による埋め込みは,解像度方向への攻撃(例えば,強いローパスフィルタなど)がない限りは保持でき,一般に強靭であるといえる.さらに,gainを大きくすることにより,耐性を高めることができる.
【0059】
また,透かしの埋め込まれていない原画像や,複数の埋め込み画像から,透かしパターンを特定するような,結託攻撃(collusion attack)に対しては,画像ごとに埋め込みパターンを変更することにより回避できる.同じスペクトル特性を有す多数のドットパターンが存在する。このため,画像ごとに埋め込みパターンを変えれば、同一の鍵により他の画像の埋め込まれた透かしデータを除去することはできない.
【0060】
図15は,ドットパターン作成時の初期値(乱数のSEED値)を変えて異なったクラスタードットパターンp0を生成したものである.スペクトル分布は同一であり,抽出ソフトウェアは共通であるが,ドットプロファイルは異なる.R=64の場合,異なるパターン数は,(4096)C(2048) 個だけ可能であり(CはCombination を表す),同じパターンとなる確率は極めて低いため,安全性は高い.スペクトルの分布は同じため透かしの抽出ソフトウェアの変更は必要ない.したがって,画像ごとにドットパターンのプロファイルを変えることにより結託攻撃を回避することができる.著作権者は購入者に対してそれぞれ異なる乱数から求めたドットプロファイルを”秘密鍵”として提供する.購入者ごとにこの鍵は異なるため,他の購入者の画像から透かしを除去することはできない.
【0061】
さらに,90°回転したドットパターンp1を異なる乱数パターンから新規に作成することにより,安全性はさらに高まる.この場合,鍵パターンは2つ必要となり,両方の鍵がそろって,初めて透かしの除去が可能となる.
【0062】
通常の電子透かしは,原画と照らし合わせることで透かしの埋め込みアルゴリズムが概略推測できる.例えば周波数空間に埋め込んだものは,原画と差分を取った後,あらゆる直交変換を試してみれば大体の推測はできる.時間はかかるがアルゴリズムは解明される.このため,透かしアルゴリズムはセキュリティ上、原則非公開である.
一方,本アルゴリズムはアルゴリズムを公開しても,逆解析により透かし情報を解読するには多大の労力を要す。さらに、透かしを除去する鍵は原則,1枚の画像に対して1つであるため,仮に鍵情報を解読できても,他の画像にその鍵を使って透かしを除去することはできない.
【0063】
また、画像は、透かしをそのまま除去せずに用いることも可能である.埋め込まれた画像はブルーノイズ特性の高周波数ドットパターンで,視覚系のローパス特性からパターンは殆ど認識されないため、高画質を保持できる。輝度変換に関わる編集加工処理であれば、元の透かし情報は保持できる。
【0064】
また,ドットの空間分布から情報を抽出するため,濃度ムラや照明ムラに影響を受けにくい.埋め込む情報量を増やすためには,埋め込みブロックサイズを小さく,例えば,32画素×32画素にすればよい.このとき埋め込む情報量は64画素×64画素のときの4倍になる。しかしながら、ブロックサイズを小さくすると含まれるドットの数が減少し、母集団が減るため統計的な意味での精度が低下するので注意を要する。
【0065】
本透かしの埋め込みは,ブロック単位の埋め込みでディザ法による二値化と同様,高速に処理可能である.抽出はやや複雑で演算負荷が高いが,ブロック単位で独立であるため,並列処理を行うことにより,並列数に逆比例して演算時間が減少するため,大きなサイズの画像に対して有効である.