3

有没有人使用 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?我没有在网站上得到这些。请帮忙

4

3 回答 3

3

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

假设您真的在开发 Windows WPF 或 Forms 应用程序,并假设您已经设法使用openDICOM.NET读取了 DICOM 数据集,那么您应该能够构造一个PixelData对象:

var pixelData = new PixelData(dataset);

PixelData对象中,您可以将像素数据作为字节数组访问:

byte[][] byteArray = pixelData.ToBytesArray();

然后,您需要使用对象的以下属性将字节二维数组转换为可用于构造位图图像的一维数组PixelData

Rows
Columns
BitsAllocated
(BitsStored)

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

但是openDICOM.NET已经很多年没有维护了,我强烈建议您使用不同的、更新的库作为 DICOM 处理的基础。例如,请查看轻量级库Evil DICOM。这里有现成的创建 (Windows Forms) 的方法Bitmap,只需使用文件名创建一个 DICOM 图像对象并立即访问相应的位图图像:

var imageMtx = new EvilDicom.Image.ImageMatrix(name_of_dicom_file);
var dicomImage = imageMtx.GetImage(slice_numeber);

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

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

于 2012-07-30T15:17:58.170 回答
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);
于 2014-11-17T15:47:11.080 回答
-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 标签搜索器

于 2017-03-16T09:17:24.367 回答