2

dicom ファイルをストリームに配置し、そのストリームを .jpg ファイルにコピーする単純な C# コンソール アプリケーションがあります。私のコードはファイルを作成しますが、画像を表示できません。以下は私が使用しているコードです。

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);
        }
    }
}
4

1 に答える 1

4

DICOM 画像形式と、C# で DICOM 画像を読み取る方法については、こちらを参照してください。これらの画像は多くの場合 16 ビット グレースケールであることに注意してください。つまり、8bpp (チャンネルごと) のモニター形式では、これらの画像をフル カラー レンジで表示することはできません。特定のコンバージョンの「ウィンドウ」と「レベル」の値を選択する必要があります。これらの値を修正すると、変換されたイメージの情報が失われる可能性があります。参照: Hounsfeld 単位.

また、DICOM の核となる原則の 1 つは、画像が無損失であることです。JPG 変換に進む前に、これが目的に合っていることを確認してください。PNGは大丈夫なはずです。

于 2012-08-23T15:14:07.893 に答える