- 8bitカラー(1677万色)⇒4bitカラー(4096色)に減色する (量子化であり、色深度即ちデータ量はそのまま)
- (メモリ上の) イメージデータの色深度を4bitにする (MATLABに4bit整数は無いので対策が必要)
- JPEGファイルの色深度を4bitにする (可能?)
8bitカラー画像を4bitに変換することはできますか?
15 views (last 30 days)
Show older comments
.jpegの画像を4bitに変換したいのですがどうすればいいですか?
ご教授いただきたく存じます。
4 Comments
Atsushi Ueno
on 24 Nov 2022
NO: 量子化により減色されましたが、データ量はむしろ増えています。
(imquantize関数においてvalues — 量子化値が設定されていない為メモリ上の型がuint8型からdouble型に変わっています。回答者様もその点を言及されている通り、意図的にそうしたのだと思います)
YES: データ型(bit数)も落とせばデータ量が削減されます。MATLABに4bit整数型はありません。Fixed-Point Designerを用いて4bitに固定小数点化する事を提案されています。しかし色深度を4bitにしてもJPEGファイルフォーマットに収める方法がありません。リンク先の質問範囲ではなかったのでそこまで説明されていません。
色深度とJPEG圧縮は別の話で、imwrite関数でJPEGファイルを作成するなら引数のMode — 圧縮のタイプおよびQuality — 出力ファイルの品質で設定します。圧縮により色深度が減る訳ではなく、圧縮の結果として量子化と同様に減色されます。これは極端な例で、通常のJPEG圧縮率であれば元画像と見た目は変わりません。
I = imread('peppers.png'); % uint8型。色深度は8bitのままにする
imwrite(I,'comp_peppers.jpg',"jpg","BitDepth",8,"Mode","lossy","Quality",0); % JPEG圧縮の限界に挑戦
I2 = imread('comp_peppers.jpg'); % JPEG圧縮されたJPEGファイルを開く
montage({I,I2});
Answers (1)
See Also
Categories
Find more on Convert Image Type in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!