How to convert 3D to 4D images

22 ビュー (過去 30 日間)
mohd akmal masud
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
Simon Chan 2022 年 2 月 15 日
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

その他の回答 (1 件)

DGM
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)
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]);
  1 件のコメント
mohd akmal masud
mohd akmal masud 2022 年 2 月 15 日
TQ Sir DGM and Simon Chan, Its work!!

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeConvert Image Type についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by