Saving a grayscale image with scaled values
6 次查看(过去 30 天)
显示 更早的评论
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 个评论
Jan
2022-11-8
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
采纳的回答
Jan
2022-11-8
编辑:Jan
2022-11-8
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 个评论
Image Analyst
2022-11-8
Jan
2022-11-8
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)
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Introduction to Installation and Licensing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!