【问题标题】:Cannot create DICOMDIR file using GDCM library无法使用 GDCM 库创建 DICOMDIR 文件
【发布时间】:2015-01-07 14:38:51
【问题描述】:

我正在使用 GDCM 库来创建 DICOMDIR 文件。我实现了 GDCM 文档中所示的代码:

http://gdcm.sourceforge.net/html/GenerateDICOMDIR_8cs-example.html

在代码中:

    private int GenerateDicomDir(string directory, string outFileName)
    {
        gdcm.Directory d = new gdcm.Directory();
        uint nfiles = d.Load(directory, true);
        if (nfiles == 0) return 1;

        string descriptor = "Descriptor";
        FilenamesType filenames = d.GetFilenames();

        gdcm.Trace.DebugOn();
        gdcm.DICOMDIRGenerator gen = new DICOMDIRGenerator();
        gen.SetFilenames(filenames);
        gen.SetDescriptor(descriptor);
        if (!gen.Generate())
        {
            return 1;
        }

        gdcm.FileMetaInformation.SetSourceApplicationEntityTitle("GenerateDICOMDIR");
        gdcm.Writer writer = new Writer();
        writer.SetFile(gen.GetFile());

        writer.SetFileName(outFileName);
        if (!writer.Write())
        {
            return 1;
        }

        return 0;
    }

该函数返回并且不生成 DICOMDIR 文件。我已经添加了跟踪调试,但仍然无法调试或获取任何输出消息。

有没有办法为一堆 DICOM 文件生成 DICOMDIR 文件?

【问题讨论】:

    标签: c# dicom gdcm


    【解决方案1】:

    根据documentation,您确定:

    警告: : PS 3.11 - 2008 / D.3.1 SOP 类和传输语法 复合图像和独立存储需要存储为 显式 VR Little Endian 未压缩 (1.2.840.10008.1.2.1)。当一个 使用生成器将使用的另一种传输语法找到 DICOM 文件 只是停下来。输入文件应该是 Explicit VR Little Endian 文件名应该是有效的 VR::CS 值(16 字节,大写 ...)

    如果您打开详细调试,您可以记录确切的错误消息,请参阅gdcm::Trace 了解用法。

    根据gdcm::Trace的文档,需要注意以下几点:

    警告:在编译期间删除所有字符串消息 编译时将 CMAKE_BUILD_TYPE 设置为:Release MinSizeRel 建议在编译期间使用 RelWithDebInfo 和/或 Debug 应用程序的原型设计。

    您还可以使用gdcm::Trace::SetStreamToFile,将任何消息正确重定向到文件(而不是默认情况下的标准输出)。

    由于使用了 gdcm.Directory 的递归选项,还需要注意子目录名是有效的(VR::CS,16bytes,大写...)。

    另请参阅gdcmgendir man page 了解更多信息。

    【讨论】:

    • 我已经按照你说的添加并更新了问题部分代码的最新版本。但是,输出控制台中仍然没有调试消息。 @malat
    • 我不知道为什么你不能得到错误信息,但我敢打赌问题出在我原来的帖子上。您的文件名约定错误(99% 的可能性),或者您忘记先将 DCM 文件转换为 Explicit Little Endian Transfer Syntax。
    • 我使用的是 1.2.840.10008.1.2.1 uid,它是 Explicit VR Little Endian。我的文件名是 IM180。
    • 我将流重定向到文件并且不会产生任何到文件的跟踪消息。
    • @OzanDeniz 请加入 gdcm 邮件列表:lists.sourceforge.net/lists/listinfo/gdcm-developers 并向我发送一些 DICOM 数据集
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-27
    • 1970-01-01
    • 2017-07-27
    • 1970-01-01
    相关资源
    最近更新 更多