ページ 11

C言語での画像処理

Posted: 2013年6月24日(月) 15:01
by ERUZA
1枚目のシェア画像では、各画素の値(白または黒)をランダムに決定します。2枚目のシェア画像では、秘密画像が白の画素に対応する場合は1枚目のシェア画像と同じ色に、黒の画素に対応する場合は白黒を反転した色にに決定します。そしてこの二枚の画像を重ね合わせることで秘密の画像が浮かび上がるのです暗号化手法です。これをPixlr Editorを使うとできるのですが、C言語でのプログラムが分かりません。
どなたか教えてください。お願いします。

Re: C言語での画像処理

Posted: 2013年6月24日(月) 15:35
by usao
具体的に何がわからないのかを説明しないと答えられないと思います.

とりあえず私にはあなたの言っている内容がいまいち把握できません.
・秘密画像(暗号化対象),シェア画像1,シェア画像2 の3枚の2値画像が存在する?
・シェア画像1は全画素ランダムで白か黒かが決まる
・シェア画像2の作成方法の説明が???

Re: C言語での画像処理

Posted: 2013年6月24日(月) 16:50
by beatle
恐らくこういうことでしょうか。

シェア画像1、シェア画像2、秘密画像をそれぞれS,T,Xと表す。
各ピクセルについて、次のようにシェア画像2を生成する。
T(x,y) = S(x,y) + X(x,y)
ただし、+は排他的論理和で、T(x,y), S(x,y), X(x,y) は各画像の位置(x,y)にある画素値(0 or 1)を表す。

SとTが分かった状態からXを求めるには両辺にTとXを加算して
T(x,y) + T(x,y) + X(x,y) = S(x,y) + X(x,y) + T(x,y) + X(x,y)
すなわち
X(x,y) = S(x,y) + T(x,y)
と変形すれば良いです。
+は排他的論理和なので、同じものを加算すると0になります。
T(x,y) + T(x,y) + X(x,y) = 0 + X(x,y) = X(x,y)

for文を2重に使ってxとyを変化させ、各画素に対して上記の計算を行えば秘密画像を復号化できますね。