我查看了代码,它看起来非常错误。https://github.com/rcd/fo-dicom/blob/master/DICOM/Imaging/DicomImage.cs
在当前的错误实现中,设置WindowCenter
orWindowWidth
属性无效,除非 Dataset.Get(DicomTag.PhotometricInterpretation) 是Monochrome1
or Monochrome2
during Load()
。这已经很荒谬了,但它仍然不能使用,因为_renderOptions
变量只设置在一个地方并立即用于_pipeline
创建(不给你机会使用WindowCenter
属性来更改它)。您唯一的机会是灰度_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();
最好的解决方案:等待这个有缺陷的库被修复。