how can I concatenate cropped images from a folder?

4 visualizaciones (últimos 30 días)
arwa el 18 de Ag. de 2014
Comentada: Image Analyst el 15 de Oct. de 2014
I am a beginner in matlab, and I was assigned a project to crop a series of images in a folder and then combine the together.
I always get stuck because I don't know how to make the loop. so far I called the path of the folder. can you direct me to what kind of functions should I be using?
Thank You.

Respuestas (2)

Ben11 el 18 de Ag. de 2014
Editada: Ben11 el 18 de Ag. de 2014
Here is a bit of code to get you going. It creates a dialog title to allow the user to select the folder containing tiff files (you can change to other extensions if you want) to crop, then store the images in a cell array and use a loop to actually crop the images using imcrop. For the example I'm assuming a grayscale image, but it can easily be modified.
clear all
dialog_title = 'Select the directory containing the images to be processed';
folder_name = uigetdir('',dialog_title);
% select current folder
ImagesToRead = dir('*.tif');
ImageCell = cell(1,length(ImagesToRead));
CroppedImageCell = cell(1,length(ImagesToRead));
for k = 1:length(ImagesToRead)
ImageCell{k} = imread(ImagesToRead(i).name); % Read image and store in cell array.
CroppedImageCell{k} = imcrop(ImageCell{k},CropRectangle); % See comments below
% Save to resulting images in a sequence or a stack:
% 1) Sequence:
SequenceName = 'DummyName' ; name of the sequence...change as you wish.
for k = 1:length(ImagesToRead)
ExportedName = sprintf('%s%d.tif',SequenceName,k); % Add the frame # after the name
% 2) Stack
SequenceName = 'DummyName' ; name of the sequence...change as you wish.
for k = 1:length(ImagesToRead)
imwrite(CroppedImageCell{k},SequenceName,'tif','WriteMode','append','Compression','none'); % Note the "append" writing mode.
In the above code, you will want to change "CropRectangle" to a rectangle with the size/position that best fits your need. Consult the link I provided above to know how to do so.
If it's not clear please ask for more details :)
  4 comentarios
Image Analyst
Image Analyst el 15 de Oct. de 2014
Seems like a weird, unnecessary mixing of different string methods to me. I'd do it more simply like this:
filename = sprintf('dummyname%03d', i);

Iniciar sesión para comentar.

Image Analyst
Image Analyst el 18 de Ag. de 2014
The images have to match up in the dimension they are to be stitched together in. You can try the montage() function.
You can also try this stitching app: which handles images of mismatched sizes.

Community Treasure Hunt

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

Start Hunting!

Translated by