2進数表現のための2種の符号系

(KIT ステガノグラフィ研究グループ)


 

PBC と CGC は以下のような排他的論理和演算(EOR)で相互変換ができます。

以下の2つのBMP画像は、同じ画像データを PBC と CGC で表現した場合の違いを示しています(CGC の場合は PBCと見做しての表示です)。

 

PBC

CGC   

 

 

BPCS 方式では、Vessel Image をPBCコードからCGCコードに変換した後で、実際の埋込み処理をします。これはCGCの方がより良質の("ブロック状の形"が現れない) Stego Image が得られるからです。その理由は以下の通りです。

 

なお、以下の説明では各ビットプレーンを "下から n 番目 (n=1,2,3,...) のビットプレーン" で表わすことにします。これは "重要度が n 番目に低い" ビットプレーンという意味です。例えば、上に示している PBCb2 は、下から 3番目 のビットプレーンとなります。

 

ファイル中の或るブロック部分(即ち、或る引続く8バイト)を "PBCの 下から n 番目のプレーンの或る場所に埋め込む" と言うことは、その場所の元の画像データを、そっくり ファイルブロックと置き換える ことであり、その部分の幾つかの画素の或る色の値を "常に 2n-1 だけ変化させる" ことになります。この場合、変化したブロック部分の色が "まとまって" 変化してしまい、そこが不自然なブロック (8x8画素) として目立つことになります。

(例) 上に例示している4ビットのPBCで、下から 3番目のプレーンでの埋込みで "0" --> "1" と置換えられると、0 (=0000)-->4 (=0100),  1 (=0001)-->5 (=0101),  2(=0010) -->6 (=0110),  3 (=0011)-->7 (0111),  8 (=1000)-->12 (=1100) ... のように変化します。変化の大きさは一定で、 4 です。このような変化はブロック状となって現れます。 また、"1" --> "0" の場合は -4 となり、やはり変化が目立ちます。

一方、CGC では、一定ではなく、多様に変化します(但し、平均的な色の変化は 2n-1 )。

(例)  0 (=0000)-->7 (=0100),  1 (=0001)-->6 (=0101),  2 (=0011)-->5 (=0111),  3 (=0010)-->4 (=0110),  12 (=1010)-->11 (=1110) ... などのようになります。従って、色の変化はあまりブロック状にはなりません。

 

Back to Home

(最終更新日: 2017,04,05  河口英二)