【问题标题】:Rename dicom images重命名 dicom 图像
【发布时间】:2015-05-14 19:43:29
【问题描述】:

我有 110 张 CT dicom 图像,它们的名称是随机的,所以当我使用任何 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 并在新名称中使用它?

【问题讨论】:

  • 我使用了 MatLab 提供的.dcminfo = dicominfo('CT-MONO2-16-ankle.dcm'),但我在dicominfo 提供的信息中没有找到Image Numbercheck the image number 是什么意思?
  • @il_raffa 抱歉,我的意思是 Matlab 中的 InstanceNumber(imageJ 中的图像编号)

标签: matlab rename dicom


【解决方案1】:

InstanceNumber 可作为dicominfo 输出结构的元素访问:

instancenumber = ImgHdr.InstanceNumber;

我会使用sprintf构造文件名

outputfilename = sprintf('T%04d', instancenumber);

sprintf 有多种格式与 C++ 中的printf 类似,我上面使用的格式打印一个整数('d'),有 4 位数字('4'),补零('0' )。这有利于文件管理器的自动排序。如果您需要不同的格式,请查看文档here

【讨论】:

    【解决方案2】:

    我认为您只需在脚本中添加以下行:

    imgHdr.InstanceNumber = i;
    

    并尝试在查看器中加载图像。

    【讨论】:

    • 感谢vizhanyolajos的回复,我试过了,但是又随机显示了。
    • 明天我会为你尝试一些东西......如果我有时间的话。
    • 感谢 vizhanyolajos,我设法按照 xenoclast 的建议做到了。再次感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-03
    • 2012-11-11
    • 2021-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多