同事Oak DICOM - 改变图像窗口级别

时间:2012-10-22 23:15:07

标签: c# asp.net dicom fo-dicom

我不是一位经验丰富的程序员,只需要在我的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);

它不起作用。我不知道这是不是正确的方法。

2 个答案:

答案 0 :(得分:6)

DicomImage类的创建并非旨在用于实现图像查看器。它的创建是为了在DICOM Dump实用程序中渲染预览图像并测试图像压缩/解压缩编解码器。将它包含在库中可能是错误的吗?

当我将代码中的错误用于远远超出其预期功能的东西时,我很难发现它是错误的。

也就是说,我花了一些时间修改代码,以便WindowCenter / WindowWidth属性应用于渲染图像。您可以在Git仓库中找到这些修改。

var img = new DicomImage(fileName);
img.WindowCenter = 2048.0;
img.WindowWidth = 4096.0;
DisplayImage(img.RenderImage(0));

答案 1 :(得分:2)

我查看了代码,看起来非常错误。 https://github.com/rcd/fo-dicom/blob/master/DICOM/Imaging/DicomImage.cs

在当前的错误实施设置中,WindowCenterWindowWidth属性无效,除非在{{{}期间数据集.Get(DicomTag.PhotometricInterpretation)为Monochrome1Monochrome2 1}}。这已经很荒谬了,但它仍然无法使用,因为Load()变量只设置在一个地方,并立即用于创建_renderOptions(不会让你有机会使用{{_pipeline更改它1}}属性)。您唯一的机会是灰度WindowCenter初始化:_renderOptions

当前解决方案:您的数据集应该

  • _renderOptions = GrayscaleRenderOptions.FromDataset(Dataset);设置正确
  • DicomTag.WindowCenter
  • DicomTag.WindowWidth != 0.0DicomTag.PhotometricInterpretation == Monochrome1

以下代码实现了:

Monochrome2

最佳解决方案:等待这个有缺陷的库修复。