hnc*_*ncl 6 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);
Run Code Online (Sandbox Code Playgroud)
那没起效.我不知道这是不是正确的方法.
小智 6
DicomImage类的创建并非旨在用于实现图像查看器.它的创建是为了在DICOM Dump实用程序中渲染预览图像并测试图像压缩/解压缩编解码器.也许将它包含在图书馆中是错误的?
当我将代码中的错误用于远远超出其预期功能的东西时,我很难发现它是错误的.
也就是说,我花了一些时间来修改代码,以便WindowCenter/WindowWidth属性适用于渲染图像.您可以在Git仓库中找到这些修改.
var img = new DicomImage(fileName);
img.WindowCenter = 2048.0;
img.WindowWidth = 4096.0;
DisplayImage(img.RenderImage(0));
Run Code Online (Sandbox Code Playgroud)
我查看了代码,它看起来非常错误。https://github.com/rcd/fo-dicom/blob/master/DICOM/Imaging/DicomImage.cs
在当前有缺陷的实现中,设置WindowCenter或WindowWidth属性无效,除非 Dataset.Get(DicomTag.PhotometricInterpretation) 为Monochrome1或Monochrome2期间Load()。这已经很荒谬了,但它仍然无法使用,因为该_renderOptions变量仅在一个位置设置并立即用于创建_pipeline(不给您使用属性更改它的机会WindowCenter)。你唯一的机会是灰度_renderOptions初始化:_renderOptions = GrayscaleRenderOptions.FromDataset(Dataset);。
当前的解决方案:您的数据集应该有
DicomTag.WindowCenter适当设置DicomTag.WindowWidth != 0.0DicomTag.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();
Run Code Online (Sandbox Code Playgroud)
最好的解决方案:等待这个有问题的库被修复。
| 归档时间: |
|
| 查看次数: |
4080 次 |
| 最近记录: |