我有110张CT dicom图像,它们的名字是random,因此当我使用任何dicom查看器显示它们时,它们会随机显示。因此,我试图根据它们的图像编号(0020,0013)或切片位置(0020,1041)重命名这些dicom图像。我已经开始写剧本了
image_list=dir('*.dcm');
for i=1:25
img=dicomread(image_list(i).name);
imgHdr = dicominfo(image_list(i).name);
dicomwrite(img, ['T' num2str(i) '.dcm'], imgHdr,'CreateMode','Copy')
end
但是我不知道如何告诉它检查InstanceNumber并以新名称使用它?
答案 0 :(得分:2)
InstanceNumber
可作为dicominfo
输出结构的元素访问:
instancenumber = ImgHdr.InstanceNumber;
我会使用sprintf
outputfilename = sprintf('T%04d', instancenumber);
sprintf
镜像来自C ++ printf
的格式有很多格式,我上面使用的格式打印整数(' d') 4位数(' 4'),零填充(' 0')。这适用于文件管理器的自动排序。如果您需要其他格式,请查看文档here。
答案 1 :(得分:0)
我认为您只需要在脚本中添加以下行:
imgHdr.InstanceNumber = i;
并尝试在查看器中加载图像。