无法使用GDCM库创建DICOMDIR文件

时间:2015-01-07 14:38:52

标签: c# dicom gdcm

我正在使用 GDCM 库来创建DICOMDIR文件。我实施了代码,如 GDCM docs:

所示

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文件?

1 个答案:

答案 0 :(得分:0)

根据documentation,您确定了:

  

警告:: PS 3.11 - 2008 / D.3.1 SOP类和传输语法   复合图像&独立存储需要存储为   显式VR Little Endian Uncompressed(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将任何邮件正确地重定向到文件(默认情况下不是stdout)。

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

有关详细信息,另请参阅gdcmgendir man page