-4

binaryある基準に基づいて、画像を (0 & 1) 画像に変換しました。そして、いくつかのピクセルには、値-1をフラグとして割り当てました。プログラムを実行すると、期待どおりの結果が得られます。しかし、imwrite結果 (画像) を取得すると、値が (0 & 255) になり、その値を持つピクセル-1がなくなります。それはと関係がありimwriteますか?画像を書き込むときに値をそのまま維持するにはどうすればよいですか?

ありがとう。

4

3 に答える 3

1

使用しているパラメーターや使用しているファイル形式については言及していませんがimwrite、シングルビット形式であると思われます。つまり、各ピクセルが持つことができる唯一の値は0または1です。画像を読み返すと、1に変換され255ますが、まだ 2 つの可能性しかありません。イメージがメモリ内にある間は、必要に応じて値を設定できますが、ファイルが書き込まれるときにすべての値が再度変換されます。

于 2013-07-30T16:34:12.947 に答える
1

-1 を論理配列に入れることはできません。論理配列を作成するとします

x = true(2,2);

課題

x(1) = -1;

に等しい

x(1) = (-1 ~= 0);

したがって、ゼロ以外の値は に変換されtrueます。

解決策として、 を設定する前にflags、logical 配列を uint8 に変換します。

img = uint8(255 * img_logical);
img(3,10) = 254; % secret flag
imwrite(img, 'img.jpg');
于 2013-07-30T15:47:45.110 に答える