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