Saving a grayscale image with scaled values
5 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Hello, here is my problem:
I have a 196*196 image, and such matrix looks like that for example:

using imshow("img",[]) displays the image correctly because it's scaled, while not using it produces something like that:

I want to save the correct output that should looke like this:

But I can't find the correct parameters for imwrite...
Also I have to say that Im running it with a loop, and planning later on to do image processing, with batch processor and registration and etc.
6 Commenti
Jan
il 8 Nov 2022
folder = "directory"
for i = 1:100
% Scale the image:
img = fisp1(:,:,1,i);
tmp = min(img(:));
img = (img - tmp) / (max(img(:)) - tmp);
% Save the file:
name = fullfile(folder, sprintf('rep%d.png', i));
imwrite(img, name);
end
Risposta accettata
Jan
il 8 Nov 2022
Modificato: Jan
il 8 Nov 2022
folder = "directory"
for i = 1:100
% Scale the image:
img = fisp1(:,:,1,i);
tmp = min(img(:));
img = (img - tmp) / (max(img(:)) - tmp);
% Nicer scaling (Thanks Image Analyst):
% normalize(img, 'range'), or: rescale(img), or: mat2gray(img)
% Save the file:
name = fullfile(folder, sprintf('rep%d.png', i));
imwrite(img, name);
end
If the original values of the image have the range [a, b], so a is the minimal value and b maximal one.
Then img-a has range [0, b-a]. If you divide this by b-a, you get the range [0, 1]. This scales the interval [a,b] to [0,1] to get the maximum contrast.
2 Commenti
Image Analyst
il 8 Nov 2022
Jan
il 8 Nov 2022
Image Analyst's suggestions are smart:
img = rand(1,8)
img2 = normalize(img, 'range')
% Or:
img2 = rescale(img)
% Or:
img2 = mat2gray(img)
% Or less nice:
tmp = min(img(:));
img = (img - tmp) / (max(img(:)) - tmp)
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Introduction to Installation and Licensing 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!