binary
ある基準に基づいて、画像を (0 & 1) 画像に変換しました。そして、いくつかのピクセルには、値-1
をフラグとして割り当てました。プログラムを実行すると、期待どおりの結果が得られます。しかし、imwrite
結果 (画像) を取得すると、値が (0 & 255) になり、その値を持つピクセル-1
がなくなります。それはと関係がありimwrite
ますか?画像を書き込むときに値をそのまま維持するにはどうすればよいですか?
ありがとう。
binary
ある基準に基づいて、画像を (0 & 1) 画像に変換しました。そして、いくつかのピクセルには、値-1
をフラグとして割り当てました。プログラムを実行すると、期待どおりの結果が得られます。しかし、imwrite
結果 (画像) を取得すると、値が (0 & 255) になり、その値を持つピクセル-1
がなくなります。それはと関係がありimwrite
ますか?画像を書き込むときに値をそのまま維持するにはどうすればよいですか?
ありがとう。
使用しているパラメーターや使用しているファイル形式については言及していませんがimwrite
、シングルビット形式であると思われます。つまり、各ピクセルが持つことができる唯一の値は0
または1
です。画像を読み返すと、1
に変換され255
ますが、まだ 2 つの可能性しかありません。イメージがメモリ内にある間は、必要に応じて値を設定できますが、ファイルが書き込まれるときにすべての値が再度変換されます。
-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');