重命名 dicom 图像
Rename dicom images
我有110张CT dicom图像,它们的名字是随机的,所以当我使用任何dicom viewer显示它们时,它们都是随机显示的。因此,我试图根据图像编号 (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 并在新名称中使用它?
我认为您只需要在脚本中添加以下行:
imgHdr.InstanceNumber = i;
并尝试在查看器中加载图像。
InstanceNumber
可作为 dicominfo
输出结构的一个元素访问:
instancenumber = ImgHdr.InstanceNumber;
我会使用 sprintf
构造文件名
outputfilename = sprintf('T%04d', instancenumber);
sprintf
有很多格式反映了 C++ printf
的格式,我在上面使用的格式打印了一个整数('d')和 4 位数字('4') , 零填充('0')。这有利于文件管理器的自动排序。如果您需要不同的格式,请查看文档 here。
我有110张CT dicom图像,它们的名字是随机的,所以当我使用任何dicom viewer显示它们时,它们都是随机显示的。因此,我试图根据图像编号 (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 并在新名称中使用它?
我认为您只需要在脚本中添加以下行:
imgHdr.InstanceNumber = i;
并尝试在查看器中加载图像。
InstanceNumber
可作为 dicominfo
输出结构的一个元素访问:
instancenumber = ImgHdr.InstanceNumber;
我会使用 sprintf
outputfilename = sprintf('T%04d', instancenumber);
sprintf
有很多格式反映了 C++ printf
的格式,我在上面使用的格式打印了一个整数('d')和 4 位数字('4') , 零填充('0')。这有利于文件管理器的自动排序。如果您需要不同的格式,请查看文档 here。