引言
默写情况下,dcm文件导出后虽然名字为1001.dcm,1002.dcm,…,但是并非连续的,1002.dcm可能是第10层,为了后续后处理,前期可以将dcm文件序号和层数对应上
代码如下:
clc;clear;close all;
%%
patients = dir('data_czey/Y*');
for ii = 1:numel(patients) % 遍历病人
patientname = patients(ii).name;
disp(['-----------------',patientname,'-----------------']) % 显示处理病人ID号
dcmnames=dir(['data_czey/',patientname,'/*.DCM']); % 列出该病人下所有dcm文件
N_dcm=numel(dcmnames);
% DCM = zeros(512,512,N_dcm); % 重新排序图像所用的矩阵
IDX = zeros(1,N_dcm); % 重新排序图像所用的索引
for jj=1:N_dcm
dcmname=dcmnames(jj).name;
filefullpath=fullfile('data_czey',patientname,dcmname);
% DCM(:,:,jj) = dicomread(filefullpath); % 存储图像矩阵
info = dicominfo(filefullpath);
IDX(jj) = info.SliceLocation; % 存储SliceLocation,用于排序
end
[~,idx] = sort(IDX,'descend'); % 根据存储SliceLocation排序,idx为排序后index
for kk = 1:N_dcm
index=sprintf('1%03d',kk); % 输出1001.dcm格式
%
DCM文件排序与重命名

这段代码主要用于对名为'Y*'的患者目录下的DCM医学影像文件进行排序和重命名。通过读取每个DCM文件的'SliceLocation'信息,按照降序排序,并将文件重命名为1001.dcm格式,以确保文件序号与其实际层数对应。处理过程中,还提供了辅助信息以帮助后续的后处理操作。
最低0.47元/天 解锁文章
1443





