首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oak DICOM -更改图像窗位

Oak DICOM -更改图像窗位
EN

Stack Overflow用户
提问于 2012-10-23 07:15:07
回答 2查看 4.6K关注 0票数 6

我不是一个有经验的程序员,只需要添加一个DICOM查看器到我的VS2010项目。我可以在Windows窗体中显示图像,但是不知道如何更改窗口的中心和宽度。下面是我的脚本:

代码语言:javascript
复制
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);

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-27 10:23:15

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

在当前有buggy的实现中,除非Dataset.Get(DicomTag.PhotometricInterpretation)在Load()期间为Monochrome1Monochrome2,否则设置WindowWidthMonochrome1属性不起作用。这已经很荒谬了,但是仍然不能使用它,因为_renderOptions变量只在一个地方设置,并且立即用于创建_pipeline (不给您使用WindowCenter属性更改它的机会)。您唯一的机会就是灰度_renderOptions初始化:_renderOptions = GrayscaleRenderOptions.FromDataset(Dataset);

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

  • DicomTag.WindowCenter设置appropriately
  • DicomTag.WindowWidth != 0.0
  • DicomTag.PhotometricInterpretation == Monochrome1Monochrome2

下面的代码实现了这一点:

代码语言:javascript
复制
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();

最好的解决方案是:等待这个有buggy的库被修复。

票数 2
EN

Stack Overflow用户

发布于 2012-10-27 23:49:03

创建DicomImage类的目的并不是为了实现图像查看器。创建它是为了在DICOM转储实用程序中渲染预览图像,并测试图像压缩/解压缩编解码器。也许将它包含在库中是一个错误?

当代码用于远远超出其预期功能的时候,我很难在代码中找出有buggy的错误。

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

代码语言:javascript
复制
var img = new DicomImage(fileName);
img.WindowCenter = 2048.0;
img.WindowWidth = 4096.0;
DisplayImage(img.RenderImage(0));
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13021320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档