# How to convert 3D to 4D images

조회 수: 21(최근 30일)
mohd akmal masud 2022년 2월 15일
댓글: mohd akmal masud 2022년 2월 15일
Hi all
I have image dicom as 3D as (attached). How to combine it all the slice to 4D?
anyone can help me?

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

### 채택된 답변

Simon Chan 2022년 2월 15일
Try thw following:
[filename,pathname]=uigetfile('*.dcm','Select Files', 'MultiSelect', 'on');
Nz = length(filename);
for k = 1: Nz
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

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

### 추가 답변(1개)

DGM 2022년 2월 15일
편집: DGM 2022년 2월 15일
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)
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]);
##### 댓글 수: 1표시숨기기 없음
mohd akmal masud 2022년 2월 15일
TQ Sir DGM and Simon Chan, Its work!!

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

R2021b

### Community Treasure Hunt

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

Start Hunting!

Translated by