如何使用opendicom.net库进行dicom处理

时间:2012-07-28 12:15:17

标签: c# windows-runtime dicom

是否有人使用opendicom.net库进行dicom图像解析。在示例代码中,它引用了以下行:

        DataElementDictionary dataElementDictionary = new DataElementDictionary();
        UidDictionary uidDictionary = new UidDictionary();

        try
        {
            dataElementDictionary.LoadFrom("**dicom-elements-2004.dic**",
             DictionaryFileFormat.BinaryFile);
            uidDictionary.LoadFrom("**dicom-uids-2004.dic**",
            DictionaryFileFormat.BinaryFile);

        }
        catch (Exception dictionaryException)
        {

            //Console.Error.WriteLine ("Problems processing dictionaries:\n" +  
            //   dictionaryException); 
            return;
        } 

我可以在哪里获取文件dicom-elements-2004.dic和dicom-uids-2004.dic?我没有在网站上得到这些。请帮忙

3 个答案:

答案 0 :(得分:3)

openDICOM.NET是一个非常简单的DICOM文件处理库。库本身被设计为相对平台无关,即应该可以在各种操作系统中使用.NET Framework和Mono进行构建。但是,开箱即用它不可能构建为WinRT / Metro库,因此除非您进行了大量重构,否则我假设您已将库编译为常规C#类库.NET Framework 4.5?

假设您正在开发Windows WPF或Forms应用程序,并假设您已设法使用 openDICOM.NET 读取DICOM数据集,那么您应该能够构建一个{{ 1}}对象:

PixelData

var pixelData = new PixelData(dataset); 对象,您可以像素数组一样访问像素数据:

PixelData

然后,您需要使用byte[][] byteArray = pixelData.ToBytesArray(); 对象的以下属性将字节二维数组转换为可用于构造位图图像的一维数组:

PixelData

在WPF应用程序中,您应该能够创建WriteableBitmap对象,并在Windows窗体中创建Bitmap对象。

然而 openDICOM.NET 多年没有维护,我强烈建议您使用不同的,更新的库作为您的DICOM处理的基础。例如,请查看轻量级库Evil DICOM。在这里,您可以使用现成的方法创建(Windows窗体)Rows Columns BitsAllocated (BitsStored) ,只需使用文件名创建一个DICOM图像对象,并立即访问相应的位图图像:

Bitmap

Evil DICOM 目前仅适用于Windows窗体,但重构所需的类以使用WPF可能相对较小。

值得探索的其他开源类库是mdcm和最近的fo-dicom,两者都是由Colby Dillion开发的。至少 mdcm 提供完整的WPF支持。

答案 1 :(得分:0)

我知道这是一个老问题但是我遇到了这个问题,并且刚刚使用openDicom.NEt打开了一个文件

 var columns = df.PixelData.Columns;
 var rows = df.PixelData.Rows;
 int displayStride = ((int)columns * PixelFormats.Gray16.BitsPerPixel + 7) / 8; //truncating
 var fromArr = df.PixelData.ToBytesArray()[0];

 theImage.Source = BitmapSource.Create((int)columns, (int)rows, 96, 96,
                   PixelFormats.Gray16, null, fromArr, displayStride);

答案 2 :(得分:-1)

以下是您要求的文件。

dataElementDictionary.LoadFrom("**dicom-elements-2004.dic**",
         DictionaryFileFormat.BinaryFile);
        uidDictionary.LoadFrom("**dicom-uids-2004.dic**",
        DictionaryFileFormat.BinaryFile); 

位于以下指定路径中的位置 DicomTagSeeker-source.zip\DicomTagSeeker\bin\Debug\libraries\dictionary

Dicom Tag Seeker