How to reduce grayscale levels ?

조회 수: 15 (최근 30일)
Mohab Mostafa
Mohab Mostafa 2015년 4월 27일
댓글: Image Analyst 2018년 1월 4일
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

채택된 답변

Image Analyst
Image Analyst 2015년 4월 27일
Use imquantize() or just divide the image by 8.
Y32 = Y / 8;
  댓글 수: 10
soe
soe 2018년 1월 4일
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 2018년 1월 4일
Use floor():
y8 = uint8(floor(double(y)/8))

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Red에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by