How to 'aggregate' a stack of images (picture 1) in matlab as in attached picture 2

6 views (last 30 days)
I tried to use loop as below
for i = 1 : 10
imshow(df(:,:,i)) % Problem because df is the structure, not the 3-D array dff.
end
but it did not work.

Accepted Answer

Image Analyst
Image Analyst on 7 Aug 2022
Edited: Image Analyst on 9 Aug 2022
% Take 10 fields of your structure called "df",
% and put into slices of a new 3-D image array called "dff":
[rows, columns] = size(df.x1);
% Preallocate space for the 3-D array dff
dff = zeros(rows, columns, 10, class(df.x1));
% Get fields of structure and put them into correspondingly-named slices of dff.
dff(:, :, 1) = df.x1; % Put the x1 image into slice1.
dff(:, :, 2) = df.x2; % Put the x2 image into slice2.
dff(:, :, 3) = df.x3; % Put the x3 image into slice3.
dff(:, :, 4) = df.x4; % Put the x4 image into slice4.
dff(:, :, 5) = df.x5; % Put the x5 image into slice5.
dff(:, :, 6) = df.x6; % Put the x6 image into slice6.
dff(:, :, 7) = df.x7; % Put the x7 image into slice7.
dff(:, :, 8) = df.x8; % Put the x8 image into slice8.
dff(:, :, 9) = df.x9; % Put the x9 image into slice9.
dff(:, :, 10) = df.x10; % Put the x10 image into slice10.

More Answers (1)

yanqi liu
yanqi liu on 9 Aug 2022
yes,sir,may be use eval and for loop to make the structer,such as
for i = 1:10
figure(i);
imshow(eval(sprintf('df.x%d', i)), [])
end

Community Treasure Hunt

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

Start Hunting!