Save file.bmp from a matrix.

Dear all,
I am quite new in Matlab and I am eperiencing some issue by saving a matrix as an image.
I have a matrix (202 x 134 double) composed of 0 and 1. I want to generate a black and white image from that.
If used: imshow(mymat), and I save the file from that it is perfect; but I have to save images within a loop.
I tried to use:
imwrite(mymat,sprintf('FIG%d.bmp',z1))%,'Quality',100)
But the quality of the image is very very low as you can see from the attached pictured.
I tried also to use:
image = mat2gray(mymat,[0 1]);
imwrite(image,sprintf('FIG%d.bmp',z1))
But I get the same result.
Thanks in advance.

4 Comments

202x134 is a fairly low resolution already, but the file you uploaded is 67x101.
Can you confirm that size(mymat) returns [202 134]?
I would suggest avoiding image as a variable name, as that is already a base Matlab function/class.
Yes sorry I made a mistake, size(mymat) is [101 67].
Thanks for your suggestion, I did it but the result is still the same.
I attach here the Matlab script, too. Do you have some suggestions to solve this? Maybe a different way to save the figure such as with saveas? But since I have only a matrix and not a figure I don't know how to implement it.
How did you get the idea you have a 202x134 matrix? Nothing so far indicates that. Using a different function will not fix anything if your input data is not what you expect.
Michele Vanini
Michele Vanini on 19 Apr 2021
Edited: Michele Vanini on 19 Apr 2021
Because in the script above I changed the value of d from 1 to 0.5 and obtained a 202x134 matrix. With d = 1 I obtain a 101x67 matrix which is the one used to generate the image.

Sign in to comment.

 Accepted Answer

In your code, you save the image as JPEG - that's probably why it's blurry. Never use JPG for image analysis.
%save image as jpeg
imwrite(image_rotated,sprintf('FIG%d.jpeg',z1),'Quality',100); % will create FIG1, FIG2,...
Cast it to uint8 and Save it as PNG and it should be fine.
% Save image as PNG.
baseFileName = sprintf('FIG%d.PNG', z1);
fullFileName = fullfile(pwd, baseFileName);
fprintf('Saving image file : "%s".\n', fullFileName);
imwrite(uint8(image_rotated), fullFileName); % Will create FIG1, FIG2,...
fprintf('Success! Done saving image file.\n')
The saved/recalled image will be the same size as image_rotated.
Dont' use image as the name of a variable since that's the name of a built-in function.

More Answers (0)

Categories

Find more on Convert Image Type in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!