How to reduce grayscale levels ?

15 visualizzazioni (ultimi 30 giorni)
Mohab Mostafa
Mohab Mostafa il 27 Apr 2015
Commentato: Image Analyst il 4 Gen 2018
I have an RGB image, converted it into Grayscale image X = imread('lena.bmp'); Y = rgb2gray(X); now the image is represented by 8 bits (256 levels) and i want to quantize this image "Y" by reducing the grayscale levels to 32 (5 bits), how to do that ?
i know i can show the image like this imshow(Y,colormap(gray(32))); but that will just show the image with 32 levels and i want to save it in a variable not just showing it off

Risposta accettata

Image Analyst
Image Analyst il 27 Apr 2015
Use imquantize() or just divide the image by 8.
Y32 = Y / 8;
  10 Commenti
soe
soe il 4 Gen 2018
For image Y, to convert from 256 levels to 32 levels, the values should be 0 to 31. But Y/8 may be 0 to 32. (e.g. 255/8 = 31.875 becomes 32). So, how can i solve this problem?
Image Analyst
Image Analyst il 4 Gen 2018
Use floor():
y8 = uint8(floor(double(y)/8))

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Modify Image Colors in Help Center e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by