gpt4 book ai didi

c++ - 将 itkImage 保存为 DICOM 时未写入图像位置/方向

转载 作者:行者123 更新时间:2023-11-27 23:59:05 25 4
gpt4 key购买 nike

我有一个 3D 体积为 itkImage<unsigned char, 3>并想将其保存为 DICOM 系列。到目前为止保存该系列有效,但元数据标签“图像位置患者”和“图像方向患者”未保存在 dicom 文件中。所有其他标签都已正确保存。

如果我将元数据字典打印到控制台,这些标签将被正确打印。当我在 ITK-SNAP 中打开文件时,这两个标签丢失了。

0010|0010 Patient

0010|0020 12345

0020|0032 0\0\0

0020|0037 1\0\0\0\1\0

这是将这些标记存储在元数据中的代码部分。我创建了一个 gist有一个工作示例。

UC3ImageType::PointType position;
UC3ImageType::IndexType index;
index[0] = 0;
index[1] = 0;
index[2] = f;
image->TransformIndexToPhysicalPoint(index, position);
value.str("");
value << position[0] << "\\" << position[1] << "\\" << position[2];
itk::EncapsulateMetaData<std::string>(*dictionary, "0020|0032", value.str());
value.str("");
value << position[2];
itk::EncapsulateMetaData<std::string>(*dictionary, "0020|1041", value.str());

itk::EncapsulateMetaData<std::string>(*dictionary, "0020|0037", "1\\0\\0\\0\\1\\0");

这段代码有什么问题?是否需要其他标签,以便将这些标签也保存下来?

最佳答案

我可以通过指定不同的 SOP 类 UID 来解决问题。默认情况下它使用 Secondary Capture IOD我把它改成了Ultrasound Multi Frame ,这也更适合我的形象。现在图像方向/位置已正确存储。

const std::string SOP_CLASS_UID = "0008|0016";
const std::string US_MULTIFRAME_UID = "1.2.840.10008.5.1.4.1.1.3.1";
itk::EncapsulateMetaData<std::string>(*dictionary, SOP_CLASS_UID, US_MULTIFRAME_UID);

然而,对我来说仍然很奇怪,当元数据标签由于任何原因未保存时没有警告或异常。

关于c++ - 将 itkImage 保存为 DICOM 时未写入图像位置/方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40462879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com