how can I concatenate cropped images from a folder?

조회 수: 1 (최근 30일)
arwa
arwa 2014년 8월 18일
댓글: Image Analyst 2014년 10월 15일
Hi
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.

답변 (2개)

Ben11
Ben11 2014년 8월 18일
편집: Ben11 2014년 8월 18일
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
clc
dialog_title = 'Select the directory containing the images to be processed';
folder_name = uigetdir('',dialog_title);
addpath(folder_name);
% select current folder
cd(folder_name);
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
end
% 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
imwrite(CroppedImageCell{k},ExportedName,'tif','WriteMode','overwrite','Compression','none');
end
% 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.
end
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
Ben11
Ben11 2014년 10월 15일
Oh sorry I did not see your comment. @Thorsten's answer is the way to go. Glad it helped you!
Image Analyst
Image Analyst 2014년 10월 15일
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);

댓글을 달려면 로그인하십시오.


Image Analyst
Image Analyst 2014년 8월 18일
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: http://www.mathworks.com/matlabcentral/fileexchange/25797-stitch which handles images of mismatched sizes.

카테고리

Help CenterFile Exchange에서 Image Processing Toolbox에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by