reading multiple images from a folder in Matlab

32 views (last 30 days)
yasmine
yasmine on 7 Nov 2011
Commented: Emily Leung on 18 Jun 2021
I want to read many images from a folder in the Matlab directory using imread() and then make different operations in every image individually , i wrote this code but it disagrees about (+k+):
num_file=1;
file = dir('image.orig');
num_file = numel(file);
NF=num_file;
Y=1;Z=1;
images = cell(1,NF,T);
T=cell(Y,Z,3);
for k = 1:NF
images{1,k}(Y,Z,3) = imread('C:Work\image.orig\'+k-1+'.JPEG');
end
also, i want to save the matrix of each image in a cell array and i don't if what i wrote is right or not and i cannot have a permission to read from the folder, i checked the folder and found that it is read only, what do you think?
Thank you in advance

Accepted Answer

Walter Roberson
Walter Roberson on 7 Nov 2011
file = dir('image.orig');
NF = length(file);
images = cell(NF,1);
for k = 1 : NF
images{k} = imread(fullfile('image.orig', file(k).name));
end
  8 Comments
Walter Roberson
Walter Roberson on 10 Nov 2011
I would put a breakpoint in and check each step -- for example, does file come out empty?
Check to be sure that you have not accidentally created your own dir.m or imread files:
which -all dir
which -all imread

Sign in to comment.

More Answers (4)

Image Analyst
Image Analyst on 8 Nov 2011
It's always worth throwing in a plug for the FAQ: http://matlab.wikia.com/wiki/FAQ#How_can_I_process_a_sequence_of_files.3F

yasmine
yasmine on 8 Dec 2011
Would you please help me : i'm dividing an image into blocks then making some analysis on each block i divided the image using mat2cell
now i want to convert each block into a numeric array but this error appears to me:
Assignment has more non-singleton rhs dimensions than non-singleton
subscripts
Here is the code:
nb(1) = ceil(256/ b(1)); % number of blocks in each dimension
nb(2) = ceil(384/ b(2)); % number of blocks in each dimension
C=mat2cell(images,ones(256/ b(1),1)*b(1),ones(384/ b(2),1)*b(2),3);% dividing the Image into blocks.
A= size(C);
m=1;
while (m < ((nb(1)*nb(2))+1))
for i=1:nb(1)%256
for j=1:nb(2)%384
A(i,j)=cell2mat(C{i,j});% here is the error
figure(1),subplot(nb(1),nb(2),m), image(A(i,j));
m=m+1;
end
end
end
  6 Comments
Walter Roberson
Walter Roberson on 9 Dec 2011
I think this should definitely have gone in its own thread ;-)
You are trying to apply imhist() to a (subsection of) a truecolor image (which is thus a 3D matrix). imhist() is only for grayscale images. You should convert your whole image to grayscale before you break it up in to blocks; or you should convert each block to grayscale and imhist that as you go; or you should imhist() each of the three color planes separately.

Sign in to comment.


Shaveta Arora
Shaveta Arora on 9 Apr 2016
If I have .tiff images and .tif images that I want to read, how they can be read ? I know how to read one type of images but how to read two types of images.
  4 Comments
Emily Leung
Emily Leung on 18 Jun 2021
@Walter Roberson i solved the issue, thank you very much this approach saved me many an if loop!

Sign in to comment.


Kumar Vaibhav
Kumar Vaibhav on 1 Aug 2016
Edited: Walter Roberson on 1 Aug 2016
I=imread(sprintf('C:/Users/kumar.vaibhav/Documents/MATLAB/Visually Similar Images/%d.jpeg',i));
  1 Comment
Walter Roberson
Walter Roberson on 1 Aug 2016
Kumar, is there a question associated with that?

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!