Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从DICOM图像的原始数据创建图像_C#_Dicom - Fatal编程技术网

C# 如何从DICOM图像的原始数据创建图像

C# 如何从DICOM图像的原始数据创建图像,c#,dicom,C#,Dicom,我有来自DICOM图像的字节[]中的原始像素数据。 现在我想把这个字节[]转换成图像对象 我试过: Image img = Image.FromStream(new MemoryStream(byteArray)); 但这对我不起作用。我还应该使用什么?需要注意的一点是,dicom“图像”不一定只是图像数据。dicom文件格式包含的不仅仅是原始图像数据。这可能是你挂断电话的地方。考虑检查DICOM文件标准,您应该能够在DICOM的维基百科文章中找到链接。这将帮助您了解如何解析出您真正感兴趣的信

我有来自DICOM图像的
字节[]
中的原始像素数据。 现在我想把这个
字节[]
转换成
图像
对象

我试过:

Image img = Image.FromStream(new MemoryStream(byteArray));

但这对我不起作用。我还应该使用什么?

需要注意的一点是,dicom“图像”不一定只是图像数据。dicom文件格式包含的不仅仅是原始图像数据。这可能是你挂断电话的地方。考虑检查DICOM文件标准,您应该能够在DICOM的维基百科文章中找到链接。这将帮助您了解如何解析出您真正感兴趣的信息。

需要注意的一点是,dicom“图像”不一定只是图像数据。dicom文件格式包含的不仅仅是原始图像数据。这可能是你挂断电话的地方。考虑检查DICOM文件标准,您应该能够在DICOM的维基百科文章中找到链接。这将帮助您了解如何解析出您真正感兴趣的信息。

您使用的是纯标准的DICOM文件吗?我维护DICOM解析器已经两年多了,我遇到了一些真正奇怪的DICOM文件,它们没有完全符合标准(公司实现了他们自己的标准DICOM文件)。将字节数组刷新到文件中,并测试图像查看器(irfanview、picassa等)是否可以显示它。如果您的代码使用的是普通JPEG流,那么根据我的经验,99.9999%的可能性是因为文件以某种奇怪的方式显示了标准(相信我,医疗公司经常这样做)

还请注意,DICOM标准支持JPEG标准的几种变体。可能是位图类不支持从DICOM文件获取的数据。你能写下传输语法吗


欢迎你把文件寄给我(如果不是很大的话)yossi1981@gmail.com,我可以检查一下,有一段时间我已经编辑了半年的DICOM文件。

您使用的是纯标准的DICOM文件吗?我维护DICOM解析器已经两年多了,我遇到了一些真正奇怪的DICOM文件,它们没有完全符合标准(公司实现了他们自己的标准DICOM文件)。将字节数组刷新到文件中,并测试图像查看器(irfanview、picassa等)是否可以显示它。如果您的代码使用的是普通JPEG流,那么根据我的经验,99.9999%的可能性是因为文件以某种奇怪的方式显示了标准(相信我,医疗公司经常这样做)

还请注意,DICOM标准支持JPEG标准的几种变体。可能是位图类不支持从DICOM文件获取的数据。你能写下传输语法吗

欢迎你把文件寄给我(如果不是很大的话)yossi1981@gmail.com,我可以检查一下,有一段时间我已经编辑了半年的DICOM文件。

你应该使用GDCM

草根DICOM是DICOM医学档案的C++库。它会自动包装为python/C#/Java(使用swig)。它支持原始、JPEG 8/12/16位(有损/无损)、JPEG 2000、JPEG-LS、RLE和压缩(zlib)

它是可移植的,可以在大多数系统(Win32、linux、MacOSX)上运行

例如,见:

    • 您应该使用GDCM

      草根DICOM是DICOM医学档案的C++库。它会自动包装为python/C#/Java(使用swig)。它支持原始、JPEG 8/12/16位(有损/无损)、JPEG 2000、JPEG-LS、RLE和压缩(zlib)

      它是可移植的,可以在大多数系统(Win32、linux、MacOSX)上运行

      例如,见:


      像素数据通常(如果不总是)结束于DICOM数据的末尾。如果您可以计算出宽度、高度、步幅和颜色深度,那么应该可以跳到(7FE00010)数据元素值,然后只抓取后面的字节。这是大多数普通图像查看器在显示DICOM图像时使用的技巧。

      像素数据通常(如果不总是)结束于DICOM数据的末尾。如果您可以计算出宽度、高度、步幅和颜色深度,那么应该可以跳到(7FE00010)数据元素值,然后只抓取后面的字节。这是大多数普通图像观看者在显示DICOM图像时使用的技巧。

      DICOM是一个荒谬的规范,我真诚地希望在不久的将来对其进行彻底检查。也就是说,Offis有一个软件套件“DCMTK”,它相当擅长用各种流行编码转换DICOM。仅尝试在文件中提前跳过x字节可能对单个文件很好,但如果您有一个卷或多个卷,则需要一种更健壮的策略。我使用了DCMTK的转换代码,在它们进入pnm之前,我只是抓取了图像位。您将在DCMTK中查找的文件是dcm2pnm,或者可能是dcmj2pnm,具体取决于编码方案


      我用一个运行时标志修复了缩放窗口的问题。DCMTK是开源的,附带了相当简单的构建说明

      DICOM是一个荒谬的规范,我真诚地希望在不久的将来对其进行彻底检查。也就是说,Offis有一个软件套件“DCMTK”,它相当擅长用各种流行编码转换DICOM。仅尝试在文件中提前跳过x字节可能对单个文件很好,但如果您有一个卷或多个卷,则需要一种更健壮的策略。我使用了DCMTK的转换代码,在它们进入pnm之前,我只是抓取了图像位。您将在DCMTK中查找的文件是dcm2pnm,或者可能是dcmj2pnm,具体取决于编码方案

      我的刻度窗有问题