I am trying to quantize an image into 12 bit intensity using the below code:
R2D = mat2gray(R2D); % intensity between [0,1] Double
R2D = double(uencode(R2D,12)); % intensity between [0,2^12] integer
PIC = mat2gray(R2D); % intensity between [0,1] Double
imshow(pic);
the problem is in 'uencode' function , the input must be in the range of [-1,1], is there a way to do that quantization for input values between [0,1]? may be some changes to the 'uencode' will do job :)
Many thanks

 채택된 답변

Alan AF
Alan AF 2012년 2월 10일

0 개 추천

Thank you, I found the Solution:
R2D = mat2gray(R2D);
[R2D8,map] = gray2ind(R2D,128);
pic = ind2gray(R2D8,map);
pic = mat2gray(pic);
imshow(pic);

추가 답변 (1개)

Image Analyst
Image Analyst 2012년 2월 10일

0 개 추천

How about using code like:
actualMin = double(min(min(imgOriginal)));
actualMax = double(max(max(imgOriginal)));
slope = (desiredMax - desiredMin) / (double(actualMax) - double(actualMin));
scaledImage = slope * (double(imgOriginal) - actualMin) + desiredMin;

댓글 수: 2

Alan AF
Alan AF 2012년 2월 10일
Thanks for your reply
Actually my intention is to Quantize the Image (i.e store every pixel into an 12 bit integer), is there a way to do that?
many thanks :)
Image Analyst
Image Analyst 2012년 2월 10일
I didn't think that was your intention because at the end you called mat2gray() which forces it into a 0-1 range, which pretty much wipes out quantization - not quite but for most intents and purposes it does. And the quantized intermediate images, you didn't do anything with.

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

제품

질문:

2012년 2월 10일

편집:

2013년 10월 8일

Community Treasure Hunt

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

Start Hunting!

Translated by