6

私は経験豊富なプログラマーではありません。VS2010 プロジェクトに DICOM ビューアーを追加する必要があるだけです。Windows フォームで画像を表示できますが、ウィンドウの中心と幅を変更する方法がわかりません。これが私のスクリプトです:

DicomImage image = new DicomImage(_filename);
            int maxV = image.NumberOfFrames;
            sbSlice.Maximum = maxV - 1;
            image.WindowCenter = 7.0;
            double wc = image.WindowCenter;
            double ww = image.WindowWidth;

            Image result = image.RenderImage(0);
            DisplayImage(result);

それは動かなかった。これが正しいアプローチかどうかはわかりません。

4

2 に答える 2

6

DicomImage クラスは、画像ビューアを実装するために使用されることを意図して作成されたものではありません。これは、DICOM Dump ユーティリティでプレビュー イメージをレンダリングし、イメージの圧縮/解凍コーデックをテストするために作成されました。ライブラリに含めたのは間違いだったのでしょうか?

意図した機能をはるかに超えた何かに使用されている場合、コードにバグがあるという欠点を見つけるのは困難です。

とはいえ、WindowCenter/WindowWidth プロパティがレンダリングされたイメージに適用されるように、コードを修正するのに時間がかかりました。これらの変更は Git リポジトリにあります。

var img = new DicomImage(fileName);
img.WindowCenter = 2048.0;
img.WindowWidth = 4096.0;
DisplayImage(img.RenderImage(0));
于 2012-10-27T15:49:02.693 に答える
2

コードを見たところ、非常にバグが多かったようです。https://github.com/rcd/fo-dicom/blob/master/DICOM/Imaging/DicomImage.cs

現在のバグのある実装では、Dataset.Get(DicomTag.PhotometricInterpretation) がまたはduringでない限り、WindowCenterまたはプロパティの設定は効果がありません。これはすでにばかげていますが、変数は 1 つの場所でのみ設定され、作成にすぐに使用されるため、使用できません (プロパティを使用して変数を変更する機会がありません)。唯一のチャンスは、グレースケールの初期化です: .WindowWidthMonochrome1Monochrome2Load()_renderOptions_pipelineWindowCenter_renderOptions_renderOptions = GrayscaleRenderOptions.FromDataset(Dataset);

現在の解決策: データセットには以下が必要です

  • DicomTag.WindowCenter適切に設定する
  • DicomTag.WindowWidth != 0.0
  • DicomTag.PhotometricInterpretation == Monochrome1またMonochrome2

次のコードはそれを実現します。

DicomDataset dataset = DicomFile.Open(fileName).Dataset;
//dataset.Set(DicomTag.WindowWidth, 200.0); //the WindowWidth must be non-zero
dataset.Add(DicomTag.WindowCenter, "100.0");
//dataset.Add(DicomTag.PhotometricInterpretation, "MONOCHROME1"); //ValueRepresentations tag is broken
dataset.Add(new DicomCodeString(DicomTag.PhotometricInterpretation, "MONOCHROME1"));
DicomImage image = new DicomImage(dataset);
image.RenderImage();

最善の解決策: このバグのあるライブラリが修正されるまで待ちます。

于 2012-10-27T02:23:15.180 に答える