Clear Filters
Clear Filters

Cropping 3D image and save into mat files

1 view (last 30 days)
Fadhurrahman
Fadhurrahman on 17 Jan 2022
Commented: Fadhurrahman on 18 Jan 2022
Greetings,
So i want to crop a 3D images with 5x5x8 and save every single 5x5x8 into a mat files. the output has a 5x5x8 in it.
is there any reference to do it?
here is my code
Thank you very much for helping.
clear
close all
clc
R1 = geotiffread('1.tif');
R2 = geotiffread('2.tif');
R3 = geotiffread('3.tif');
R4 = geotiffread('4.tif');
R5 = geotiffread('5.tif');
R6 = geotiffread('6.tif');
R7 = geotiffread('7.tif');
R8 = geotiffread('8.tif');
stackb = cat(3,R1, R2, R3, R4, R5, R6, R7,R8)
% stackc=cat(3,R1, R2, R3, R4, R5, R6, R7)
c = images.spatialref.Cuboid([1,5],[1,5],[1,8]);
croppedVolume = imcrop3(stackc,c);
[rows, columns, numberOfColorChannels] = size(stackb);
N = rows;
for i = 1:N
Icropped{i} = imcrop3(stackb,c);
end
save(name, 'Icropped')
  4 Comments
KSSV
KSSV on 18 Jan 2022
They are in a cell, you can extract them by using {}.
Icroped{1}, Icropped{2},..etc.
Fadhurrahman
Fadhurrahman on 18 Jan 2022
@KSSV thank you. i have a new problem for saving it
so i want to save these "DCrop" for every iteration. but in the end it only save a single file
here's the code
N = 1000;
name=sprintf('a_%3d')
for i = 1:N
stackc = squeeze(stackc);
targetSize = [5 5 7];
win = randomCropWindow3d(size(stackc),targetSize);
Dcrop = imcrop3(stackc,win);
i=i+1
end
save(name,"Dcrop")

Sign in to comment.

Answers (0)

Categories

Find more on Agriculture in Help Center and File Exchange

Products


Release

R2021b

Community Treasure Hunt

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

Start Hunting!