creating a code to upload and read tif images

Hi,
I got a series of tif images and I am trying to create a matlab code to upload and read it. can somebody helps me?

1 Comment

Hi Mario,
Have you tried using the 'imread' function. If not you can try using it using the following link

Sign in to comment.

Answers (1)

Hi Mario,
To handle a series of TIF images in MATLAB, write a script that can iterate through all the TIF files in a given directory, read each image, and display them for further analysis.
Below is a sample MATLAB code to achieve this:
% Define the directory where your TIF images are stored
imageDir = 'your_directory_path'; % Change this to your directory path
% List all TIF files in the directory
imageFiles = dir(fullfile(imageDir, '*.tif'));
% Loop through each image file
for i = 1:length(imageFiles)
% Construct the full file path for the image
filePath = fullfile(imageDir, imageFiles(i).name);
% Read the image
img = imread(filePath);
% Display the image
imshow(img);
title(['Image ' num2str(i)]);
end
This script will read and display each TIF image stored in the specified directory. Adjust the directory path and other options as necessary to fit your specific requirements.
Please refer the below documentation for 'imread' and 'imshow' functions:
I hope it helps!

4 Comments

Hi Gayatri,
Thanks for the support, the code works well, but it saves the data of the last image only as a matix and I need to save the data of all images as martix.
can you show me how to do that?
"...I need to save the data of all images as martix. can you show me how to do that?"
Use indexing to store the data within the loop, e.g.:
P = 'your_directory_path';
S = dir(fullfile(P,'*.tif'));
for k = 1:numel(S)
F = fullfile(S(k).folder,S(k).name);
I = imread(F);
S(k).data = I;
end
All of your imported data will be stored in the structure S, which you can trivially access using indexing. For example, the 2nd file:
S(2).name % file name
S(2).data % file data
See also:
which shows how to use indexing to store file data in cell array.
Thanks Stephen,
I tried the code and the result of S(2).data is matrix 1400x1400 uint8. I tried transfer the matrix to double matrix to be 1400x1400x 500 double using the below command:
U(k)=double(S(k).data)
but it transfer only the last velocity field to double not the whole series. can you please advice me how to correct my command?
If you want all of the images concatenated into one 3D array then use CAT() e.g.:
A = cat(3,S.data)
Note that the order of the files returned by DIR() may not be what you expect (particularly if the filenames have numbers in them). If you expect the filenames to be sorted into alphanumeric order then you will need to ensure this yourself, e.g.:
  • using sufficient leading zeros in the filenames, or
  • downloading NATSORTFILES() and calling it before the FOR-loop, e.g.:
S = natsortfiles(S);

Sign in to comment.

Categories

Find more on Environment and Settings in Help Center and File Exchange

Products

Release

R2023b

Tags

Asked:

on 3 Apr 2024

Edited:

on 8 Apr 2024

Community Treasure Hunt

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

Start Hunting!