8bit画像を4bitにimquantize
8 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Naoki Ishibashi
el 15 de Sept. de 2017
Respondida: Naoki Ishibashi
el 18 de Sept. de 2017
添付の画像ファイル(256*256,unit8)を4bit/pixelにquantizeしたく以下のコマンドを試したのですが、画像を表示させてさい真っ白の画像になってしまいました。解決法、また間違いありましたらご指摘頂けると幸いです。
img = imread('lenna_grey');
thresh = multithresh(img);
img_quant = imquantize(img, 3);
figure, imshow(img_quant);
0 comentarios
Respuesta aceptada
kenya tanaka
el 16 de Sept. de 2017
Editada: kenya tanaka
el 16 de Sept. de 2017
掲載されたプログラムでは二値化(1bit化)になっています。 このように書けば、4bit化(16値化)実現できるかと思います。
img = imread('lenna_grey');
thresh = multithresh(img,15);
img_quant = imquantize(img, thresh);
figure, imshow(img_quant);
imquantizeの返り値はdoubleです。 double型変数をimshowした場合、標準で0を黒とし1を白として表現されます。
imshow(img_quant,[1 16]);
imshowに最大値と最小値を別途与えることで、お望みの画像が得れるかと思います。
2 comentarios
kenya tanaka
el 16 de Sept. de 2017
上記投稿ですが、やってみたら真っ白でした。
対処法として、
①モノクロ画像として処理する。
img=rgb2gray(imread('wpwxunob.bmp'));
..
imshow(img_quant,[0 16]);
②img_quantを成型する。
..
img_quant=imquantize(img, thresh);
img_quant_min=min(img_quant(:));
img_quant_max=max(img_quant(:));
I=(img_quant-img_quant_min)./img_quant_max;
imshow(I);
これでお望みの画像が得れるかと思います。
Kei Otsuka
el 17 de Sept. de 2017
Editada: Kei Otsuka
el 17 de Sept. de 2017
少し細かいですが、16を表現するためには5bit必要になってしまいますので、量子化後に1を減算してあげるとより正確ですね。 整理しますと、
画像を読み込み
img = imread('coins.png');
4bit/pixelにするために閾値を計算
thresh = multithresh(img,15);
量子化実行(-1を忘れずに)
img_quant = imquantize(img, thresh) - 1;
結果を可視化
imshow(img_quant,[])
min,max関数を使えば、最小値が0、最大値が15になっていることを確認できます。 また、この場合画像データのデータ型はdoubleですが、Fixed-Point Designerをお持ちであれば、明示的に4bit固定小数点データ型への変換が可能です。
fiimg = fi(img_quant,0,4,0)
Más respuestas (1)
Ver también
Categorías
Más información sobre イメージ タイプの変換 en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!