how to convert the pixel values of the image in the range of (0-255) into (0-1)?

Hi i have to convert the image pixel values in the range of (0-255) into (0-1) Is there any function or program available?

Answers (3)

im1=imread('yourfile');
b=linspace(0,1,255);
im2=arrayfun(@(x) b(x+1),im1)

4 Comments

Again I would definitely avoid the slow array fun, because a lookup table method can be solved directly much faster:
im2 = b(im1 + 1);
I've tried this, it works only for mxn array, for jpg (mxnx3) array, it does not work.
Surprising. Then I'd suggest:
im2 = reshape(b(im1(:) + 1), size(im1));
But this looks less attractive, of course. Anyway, it is still faster.
Surprising. You are right, I messed up, in fact I've tried b(im) instead of b(im+1), did not even read the error message, thinking it was caused by the matrix dimension. im contains 0 that causes the error. b(im1) worked for a tif image that does not contains a 0

Sign in to comment.

imageUINT8 = randi([0, 255], 640, 480);
imageDOUBLE = image / 255;
See also im2double.
Yes, there is a built-in function. It is called mat2gray().
normalizedImage = mat2gray(grayLevelImage);

Asked:

on 28 Feb 2013

Community Treasure Hunt

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

Start Hunting!