2012-08-23 36 views
2

我有一個簡單的C#控制檯應用程序,它將一個dicom文件放入一個流中,然後將該流複製到一個.jpg文件中。我的代碼創建文件,但我無法查看圖像。以下是我正在使用的代碼。如何將沒有擴展名的DICOM文件轉換爲.png文件或.jpg文件?

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Drawing; 
using System.IO; 
using System.Windows.Forms; 
using rzdcxLib; 
using System.Drawing.Imaging; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     public static void CopyStream(Stream input, Stream output) { 
      byte[] buffer = new byte[8 * 1024]; 
      int len; 
      while ((len = input.Read(buffer, 0, buffer.Length)) > 0) { 
       output.Write(buffer, 0, len); 
      } 
     } 
     static void Main(string[] args) 
     { 
      Stream myStream = 
      new FileStream("F:\\MIS\\JLoren\\Projects\\" + 
          "814-Convert for Chandra\\DICOM\\Test\\IM1", 
          FileMode.Open, 
          FileAccess.Read); 
      Stream OutPut = 
      new FileStream("F:\\MIS\\JLoren\\Projects\\" + 
          "814-Convert for Chandra\\DICOM\\Test\\IM1.jpg", 
          FileMode.Create, 
          FileAccess.Write); 
      CopyStream(myStream, OutPut); 
     } 
    } 
} 
+2

就我所能做的快速網絡搜索而言,DICOM是一種容器格式,它包含患者數據,用於捕獲圖像的設備信息以及最終的一些「像素數據」,但是此像素數據可以包含多個(和多維)圖像。圖像存儲[_「使用各種標準,包括JPEG,JPEG無損,JPEG 2000和運行長度編碼(RLE)」_](http://en.wikipedia.org/wiki/DICOM#DICOM_data_format) ,所以只需將文件內容複製到名爲.jpg的文件將不起作用。 [搜索](https://www.google.nl/search?q=export+dicom+to+jpeg)。 – CodeCaster

回答

4

有關DICOM圖像格式,以及如何與信息C#讀了DICOM圖像看起來here。請注意,這些圖像通常是16位灰度,這意味着8bpp(每通道)監視器格式不能以全色範圍顯示這些圖像。您必須爲您的特定轉換選擇值"window" and "level"。修復這些值可能會導致您在轉換後的圖像中丟失信息。參見:Hounsfeld units

另外 - DICOM的核心原則之一是圖像是無損的。在繼續進行JPG轉換之前,確保您的目的可以接受。 PNG應該沒問題。

+0

雖然很普遍,但事實上並不要求圖像是無損的。許多DICOM文件中的圖像數據實際上是以有損JPG格式進行壓縮的。簡單的谷歌搜索似乎證實了這一點(例如http://www.mccauslandcenter.sc.edu/mricro/dicom/index.html) –

+0

:)雖然格式DOES支持這一點 - 我從未見過客戶端或醫療成像他會推薦有損圖像 - 除了可能作爲「預覽」或某種應用程序的圖像傳輸方式之外。 – Ani

相關問題