Разница между dcm2pnm, dcmj2pnm и dcml2pnm
Название говорит само за себя. В чем разница между dcm2pnm ( http://support.dcmtk.org/docs/dcm2pnm.html), dcmj2pnm ( http://support.dcmtk.org/docs/dcmj2pnm.html) и dcml2pnm ( http://support.dcmtk.org/docs/dcml2pnm.html) команды инструментария dcmtk ( http://support.dcmtk.org/docs/pages.html)? Все они, кажется, конвертируют изображения dicom в другие форматы. Есть ли какие-то особые ситуации, когда один должен быть предпочтительнее других?
Изменить: Кажется, dcml2pnm поддерживает больше форматов. Почему бы не использовать это для всех целей? Каковы преимущества других команд?
2 ответа
Я, вероятно, разработчик DCMTK, о котором говорил @kritzel_sw.
Разница между тремя инструментами командной строки DCMTK заключается в поддержке сжатых изображений DICOM и форматов вывода.
- dcm2pnm был оригинальным инструментом, который был разработан более 20 лет назад и который первоначально поддерживал только формат изображения PNM/PGM для вывода (именно поэтому инструмент называется "dcm2pnm", а не "dcm2img" или тому подобное). И поскольку в то время DCMTK не поддерживал никаких инкапсулированных синтаксисов передачи (т. Е. Сжатия), можно читать только несжатые изображения DICOM.
- dcmj2pnm находится в подмодуле DCMTK "dcmjpeg" и добавляет поддержку сжатых JPEG-изображений DICOM (на основе библиотеки IJG), а также формат изображения JPEG для вывода.
- dcml2pnm находится в подмодуле DCMTK "dcmjpls" и добавляет поддержку сжатых JPEG-LS изображений DICOM (на основе библиотеки CharLS). Он не поддерживает обычный JPEG.
Все это, вероятно, более очевидно из пакета с исходным кодом, чем из двоичного пакета, но это также упоминается в упомянутой выше документации (см. Раздел "Описание").
Если вы спросите, почему есть три разных инструмента (на самом деле, есть и четвертый для поддержки JPEG-2000, но не являющийся частью общедоступной DCMTK), мой ответ будет: это в основном по историческим причинам, но также и для причина сохранения как можно более простой зависимости между различными модулями DCMTK. Кроме того, мы рассматриваем инструменты командной строки как своего рода примеры приложений базовой библиотеки классов C++. Итак, если вам нужен инструмент, который поддерживает все схемы сжатия изображений, доступные в DCMTK, такой инструмент будет легко написать.
Хороший вопрос. Один из разработчиков dcmtk иногда публикует здесь сообщения, возможно, вам повезло получить лучший ответ, чем мой.
dcmj2pnm добавляет кодеки JPEG к функциональности dcm2pnm. Таким образом, он способен обрабатывать сжатые JPEG-данные DICOM и создавать выходные JPEG-изображения. Так что это расширенный набор функций dcm2pnm. Я думаю, что это так, потому что dcmtk предлагает различные параметры компиляции, которые позволяют включать / исключать libjpeg. Просто отражает параметры инструментария для сопутствующих инструментов командной строки. Подтверждено списком форматов файлов при запуске с опцией -h
Для dcml2pnm я не уверен, но это хорошее предположение: то же самое, что и для JPEG, но включает кодер JPEG-LS, который является еще одним дополнительным сторонним инструментарием для dcmtk.