Spojrzałem na kod i wyglądało na bardzo błędne. https://github.com/rcd/fo-dicom/blob/master/DICOM/Imaging/DicomImage.cs
W obecnej implementacji buggy ustalające WindowCenter
lub WindowWidth
właściwości nie ma wpływu, chyba Dataset.Get (DicomTag.PhotometricInterpretation) jest albo Monochrome1
lub Monochrome2
podczas Load()
. To już jest śmieszne, ale nadal nie można go użyć, ponieważ zmienna _renderOptions
jest ustawiona tylko w jednym miejscu i jest natychmiast używana do tworzenia _pipeline
(nie dając szansy na jej zmianę przy użyciu właściwości WindowCenter
). Twoja jedyna szansa to inicjalizacja w skali szarości _renderOptions
: .
Obecne rozwiązanie: Twój zbiór danych powinien mieć
DicomTag.WindowCenter
odpowiednio ustawione
DicomTag.WindowWidth != 0.0
DicomTag.PhotometricInterpretation == Monochrome1
lub Monochrome2
Poniższy kod realizuje że:
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();
Najlepsze rozwiązanie: Zaczekaj, aż ta błędna biblioteka zostanie naprawiona.
Czy możesz nieco lepiej zrozumieć, z której biblioteki DICOM korzystasz? –
Używam Fellow Oak DICOM dla .NET, dzięki. – hncl
Zauważyłem, że wysłałeś to samo pytanie na forum dyskusyjnym * fo-dicom * i otrzymałeś odpowiedź, że w wersji oprogramowania, z której korzystasz, jest błąd na poziomie okna. Aby uzyskać spójność w * Stackoverflow *, dobrym pomysłem byłoby dostarczenie tutaj własnej odpowiedzi na podstawie odpowiedzi forum, a także wskazanie w pytaniu, że używasz * fo-dicom * version 1.0.26. –