C# 如何从DICOM图像的原始数据创建图像
我有来自DICOM图像的C# 如何从DICOM图像的原始数据创建图像,c#,dicom,C#,Dicom,我有来自DICOM图像的字节[]中的原始像素数据。 现在我想把这个字节[]转换成图像对象 我试过: Image img = Image.FromStream(new MemoryStream(byteArray)); 但这对我不起作用。我还应该使用什么?需要注意的一点是,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)上运行我用一个运行时标志修复了缩放窗口的问题。DCMTK是开源的,附带了相当简单的构建说明 DICOM是一个荒谬的规范,我真诚地希望在不久的将来对其进行彻底检查。也就是说,Offis有一个软件套件“DCMTK”,它相当擅长用各种流行编码转换DICOM。仅尝试在文件中提前跳过x字节可能对单个文件很好,但如果您有一个卷或多个卷,则需要一种更健壮的策略。我使用了DCMTK的转换代码,在它们进入pnm之前,我只是抓取了图像位。您将在DCMTK中查找的文件是dcm2pnm,或者可能是dcmj2pnm,具体取决于编码方案 我的刻度窗有问题