How to create a single .mat file from multiple images?

Hi all,
Assume that I have 5 images as following: 1.bmp, 2.bmp, 3.bmp, 4.bmp, 5.bmp. I want to combine those 5 images into a single .mat file. Anyone knows how to solve this issue, please help me!!
Thanks in advance!!

2 commentaires

naila
naila le 1 Août 2013
Hi I have the same problem with images: 01.dcm, 02.dcm, 03.dcm ... 22.dcm;
%d isn't working for 01.dcm. what should I do Please
What is the error message?

Connectez-vous pour commenter.

 Réponse acceptée

Azzi Abdelmalek
Azzi Abdelmalek le 5 Oct 2012
Modifié(e) : Azzi Abdelmalek le 5 Oct 2012
for k=1:5
h{k}=imread(sprintf('%d.bmp',k));
end
save file h

7 commentaires

Thanks Azzi!! your solution found me well!!
However, how to modify your solution in order to achieve a 3d .mat file where the 3rd dimension is the frame sequence and the first two dimensions are of the size of the LR image!!
Thanks in advance!!
Matt Kindig
Matt Kindig le 5 Oct 2012
Modifié(e) : Matt Kindig le 5 Oct 2012
a = imread('1.bmp'); %read in first image to get size
[r,c]= size(a);
h = NaN(r,c,5); %pre-allocate memory
h(:,:,1) = a;
for k=2:5,
h(:,:,k) = imread(sprintf('%d.bmp',k))
end
save file h
Hi Matt,
Your solution didnt work at all!! At the line 4, there was an error as following: "Subscripted assignment dimension mismatch."
Please double check it!!
Matt J
Matt J le 6 Oct 2012
Modifié(e) : Matt J le 6 Oct 2012
Le Nguyen, you double check it. You're supposed to be studying the code people suggest to you and understanding why they work or don't work.
In this case, I suspect that your bitmap files are not 2D, but rather have color channels. Thus they cannot be treated as the slices of a 3D array, as Matt Kindig's code attempts to do.
Matt J is probably right. Here are some code snippets that may help you:
% Extract the individual red, green, and blue color channels.
redChannel = rgbImage(:, :, 1);
greenChannel = rgbImage(:, :, 2);
blueChannel = rgbImage(:, :, 3);
Alternatively,
% Get a weighted sum of the Red, Green, and Blue channels.
grayImage = rgb2gray(rgbImage);
Hi all,
After taking a look around Matlab for a while, I seem to know how to solve this issue!! You are right, Matt J!! My bitmap files are all 3D as well as colourful!! That's why Matt Kindig's solution didnt work at all!! Here is my modification and it really works well!!
img = rgb2gray(imread('1.bmp'));
[r,c]= size(img);
h = NaN(r,c,5); %pre-allocate memory
h(:,:,1) = img;
for k=2:5
h(:,:,k) = rgb2gray(imread(sprintf('%d.bmp',k)));
end
save filename h
I am totally a newbie to Matlab, thus, all of your suggestions are always helpful to me and I am really in debt of it!!
Again, thanks a lot!! :)
PS: if there are any modifications for better performance as well as optimization, please let me know!!
Jan
Jan le 1 Août 2013
Modifié(e) : Jan le 1 Août 2013
@Le: Please be careful with the exclamation marks. The have a lot of power in English, e.g. much more than in German.
Your solution looks fine and efficient. Disk access like imread has the benefit, that it is such slow, that improvements in other parts of the code are usually not significant.

Connectez-vous pour commenter.

Plus de réponses (1)

mona
mona le 3 Fév 2017

0 votes

how to deal with images in a single .mat file?

1 commentaire

Hi,
Have you figured out how to display multiple images stored in a single .mat file? Please help.

Connectez-vous pour commenter.

Catégories

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by