How to select every 10 images corresponding to one image?

1 view (last 30 days)
Suppose we have two folders A and B , both contain images.
Let folder A have 6 images:a1,a2,...,a6
folder B have 60 images: b1,b2,...,b60.
I want to select 10 images in B for each image in A, in the following way
for a1 select b1,b2,...,b10
for a2 select b11,b12,...,b20
.
.
.
for a6 select b51,b52,...,b60

Accepted Answer

Kevin Holly
Kevin Holly on 20 Sep 2021
%Select image folder A
A_dir = uigetdir();
%Select image folder B
B_dir = uigetdir();
%Identify files of interest
A_files=dir(fullfile(A_dir,'*.tif')); %Here, I am assuming the images are TIFF files and all file types are the same. Change this to .png, .jpg, or .bpm...etc if needed.
B_files=dir(fullfile(B_dir,'*.tif')); % * is a wildcard
%Load images
for i = 1:length(A_files)
A_image = imread([A_dir,filesep,A_files(i).name]);
if i == 1
for ii = 1:10
B_images(ii,:,:) = imread([B_dir,filesep,B_files(ii).name]);
end
else
for ii = 1:10
B_images(ii,:,:) = imread([B_dir,filesep,B_files((i-1)*10+(ii-1).name]);
end
end
end
  4 Comments
Kevin Holly
Kevin Holly on 21 Sep 2021
Edited: Kevin Holly on 21 Sep 2021
%Load images
A = [];
for i = 1:length(A_files)
A_image = imread([A_dir,filesep,A_files(i).name]);
if i == 1
for ii = 1:10
B_images(ii,:,:) = imread([B_dir,filesep,B_files(ii).name]);
A = [A; {A_image} {B_images(ii,:,:)}]
end
else
for ii = 1:10
B_images(ii,:,:) = imread([B_dir,filesep,B_files((i-1)*10+(ii-1)).name]);
A = [A; {A_image} {B_images(ii,:,:)}]
end
end
end

Sign in to comment.

More Answers (0)

Categories

Find more on Images in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!