How to convert 3D to 4D images

25 visualizzazioni (ultimi 30 giorni)
mohd akmal masud
mohd akmal masud il 15 Feb 2022
Commentato: mohd akmal masud il 15 Feb 2022
Hi all
I have image dicom as 3D as (attached). How to combine it all the slice to 4D?
anyone can help me?

Risposta accettata

Simon Chan
Simon Chan il 15 Feb 2022
Try thw following:
[filename,pathname]=uigetfile('*.dcm','Select Files', 'MultiSelect', 'on');
Nz = length(filename);
for k = 1: Nz
imagedata = dicomread(fullfile(pathname,filename{k}));
if k == 1
[Ny,Nx] = size(imagedata);
rawdata = zeros(Ny,Nx,Nz);
end
rawdata(:,:,k) = imagedata; % Convert to 3D
end
Dimage = permute(rawdata,[1 2 4 3]); % Convert to 4D

Più risposte (1)

DGM
DGM il 15 Feb 2022
Modificato: DGM il 15 Feb 2022
If you have a volumetric image represented in a 3D array and you want to slice it on dim 3 and arrange each slice into a frame in a 4D image, you can do
B = permute(A,[1 2 4 3]);
If you want to slice on another dimension, just rearrange the first,second, and fourth elements of that vector in the call to permute().
EDIT:
A concrete example:
dirname = 'ZubalPhantomDicom';
dicomlist = dir(fullfile(pwd,dirname,'*.dcm'));
imstack = cell(numel(dicomlist),1);
for cnt = 1:numel(dicomlist)
imstack{cnt} = dicomread(fullfile(pwd,dirname,dicomlist(cnt).name));
end
% the image is currently a cell array of pages
% say we arrange the pages on dim3
imstack3 = cat(3,imstack{:});
% let's say we want to arrange the pages on dim4 instead
imstack4 = cat(4,imstack{:});
% let's say we wanted to take imstack3 and turn it into imstack4
imstack34 = permute(imstack3,[1 2 4 3]);

Categorie

Scopri di più su Convert Image Type in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by