Borrar filtros
Borrar filtros

Image Normalization in the range 0 to 1

259 visualizaciones (últimos 30 días)
Sapam Jaya
Sapam Jaya el 12 de Dic. de 2013
Comentada: DGM el 13 de Feb. de 2023
How to normalize an image in the range 0 to 1?

Respuesta aceptada

Image Analyst
Image Analyst el 12 de Dic. de 2013
Use mat2gray() or im2double(). Hopefully you have the image processing Toolbox.
normImage = mat2gray(yourImage);
normImage = im2double(yourImage);
Also look at stretchlim() and imadjust().
  10 comentarios
Image Analyst
Image Analyst el 23 de Sept. de 2021
If you really want them to have fractional values between 0 and 1, that's not a standard image format so you'll just have to save them with
save('myFile.mat', 'yourImageVariable');
to save them in a .mat file.
Andrea Daou
Andrea Daou el 29 de Sept. de 2021
Thank you for your help.

Iniciar sesión para comentar.

Más respuestas (3)

mutant
mutant el 6 de Oct. de 2019
Old question but as of R2017b, rescale does exactly this.
B = rescale(A); % Normalizes image (0 to 1, by default)
You can even use this to scale to uint8, for example:
B = rescale(A,0,255); % Normalizes image to [0 255]
Documentation here:

Azzi Abdelmalek
Azzi Abdelmalek el 12 de Dic. de 2013
Editada: Azzi Abdelmalek el 12 de Dic. de 2013
If im is your image
im=(im-min(im(:)))/(max(im(:))-min(im(:)))
  1 comentario
Jos (10584)
Jos (10584) el 12 de Dic. de 2013
I suggest to do this in two steps to avoid the calculation of MIN twice ...
IM = IM - min(IM(:)) ;
IM = IM / max(IM(:)) ;

Iniciar sesión para comentar.


Sajid Khan
Sajid Khan el 6 de Feb. de 2014
Editada: DGM el 13 de Feb. de 2023
function image_normalized = imnormalize( image_orig, min_norm, max_norm)
val_max = max(image_orig(:));
val_min = min(image_orig(:));
range = val_max - val_min;
image_normalized = (image_orig - val_min) ./ range; % Then scale to [x,y] via:
range2 = max_norm - min_norm;
image_normalized = (image_normalized*range2) + min_norm;
end
In this function, you can set min_norm = 0 and max_norm = 1 to normalize image to a scale of 0 to 1. If you have any other questions to ask, then you are welcome. I always use this function for normalization purpose. It even works if you have to increase the scale length.
  2 comentarios
Image Analyst
Image Analyst el 6 de Feb. de 2014
Your function basically does the same thing as the built in function mat2gray().
DGM
DGM el 13 de Feb. de 2023
Rather, mat2gray() only allows the specification of the input levels, assuming the output levels are [0 1]. Sajid's function allows specification of the output levels, while using image extrema as the input levels.
So in that sense, it's more like rescale(), same syntax and everything.

Iniciar sesión para comentar.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by