У меня возникает проблема при изменении Синтаксиса передачи.
Я использую mDCM
библиотеку, и я добавил Dicom.Codec.dll в проект. 0002,0010,Transfer Syntax UID=1.2.840.10008.1.2.4.90
файлы имеют 0002,0010,Transfer Syntax UID=1.2.840.10008.1.2.4.90
(JPEG 2000 Сжатие изображения (только для Lossless)).
Ошибка: обнаружено исключение DicomCodecException. Нет зарегистрированного кодека для синтаксиса передачи!
Мой код:
string file = "C:\\Dicom\\1001.dcm";
string output = "C:\\Dicom\\Decompressed\\1001.dcm";
DicomFileFormat ff = new DicomFileFormat();
ff.Load(file, Dicom.DicomReadOptions.Default);
ff.ChangeTransferSytnax(DicomTransferSyntax.ExplicitVRLittleEndian, null); // Error here. No registered codec for transfer syntax!.
Dicom.Imaging.DicomImage im = new Dicom.Imaging.DicomImage(ff.Dataset);
System.Drawing.Image i = im.Render();
i.Save(output);
Еще одна вещь, которую я заметил, это тег 7FE0,0010,Pixel Data=0
. Для других файлов dicom метка данных Pixel data
имеет значения, превышающие 0
.
Файл не открывается в моих других dicom-зрителях (ezDICOM, DicomWorks, IrfanView и т.д.). Итак, я думал, что файл поврежден. Но тогда клиент дал нам application(.exe)
которое распаковывает файл.
После декомпрессии все мои зрители показывали изображение правильно.
Декомпрессированные файлы имели 7FE0,0010,Pixel Data=131072
.
Как упоминалось выше, я не регистрировал кодек.
Эта строка зарегистрировала кодек.
Dicom.Codec.Jpeg2000.DcmJpeg2000Codec.Register();