Различие между тремя инструментами командной строки DCMTK заключается в следующем: поддержка сжатых изображений DICOM и выходных форматов.
dcm2pnm был оригинальным инструментом, который был разработан более 20 лет назад и изначально поддерживал только формат изображений PNM/PGM для вывода (поэтому инструмент называется dcm2pnm, а не dcm2img или тому подобное) . А поскольку в то время DCMTK не поддерживал никаких синтаксисов инкапсулированной передачи (т. е. сжатия), можно было читать только несжатые изображения DICOM.
dcmj2pnm находится в подмодуле DCMTK dcmjpeg и добавляет поддержку изображений DICOM, сжатых в формате JPEG (на основе библиотеки IJG), а также формат изображения JPEG для вывода.
dcml2pnm находится в подмодуле DCMTK dcmjpls и добавляет поддержку изображений DICOM, сжатых в формате JPEG-LS (на основе библиотеки CharLS). Он не поддерживает обычный JPEG.
Все это, вероятно, более очевидно из пакета с исходным кодом, чем из бинарного пакета, но это также упоминается в упомянутой выше документации (см. раздел «Описание»).
Если вы спросите, почему существует три разных инструмента (на самом деле, есть еще четвертый для поддержки JPEG-2000, но он не является частью общедоступного DCMTK), мой ответ будет таким: это в основном по историческим причинам, но также и для Причина сохранения зависимостей между различными модулями DCMTK как можно более простыми. Кроме того, мы рассматриваем инструменты командной строки как своего рода примеры приложений базовой библиотеки классов C++. Итак, если вам нужен инструмент, поддерживающий все схемы сжатия изображений, доступные в DCMTK, написать такой инструмент будет несложно.
personJ. Riesmeierschedule12.04.2017
comment
Очень хорошо объяснил. Возвращают ли эти функции значение true/false или 1/0 и т. д., чтобы указать, можно ли правильно открыть и преобразовать файл dicom?
- personrnso; 12.04.2017
comment
@rnso Да, они возвращают эти коды выхода. Также планируется использовать разные коды выхода для разных типов ошибок и документировать их на справочной странице, но это все еще в нашем списке дел (конечно, для всех инструментов командной строки DCMTK).
- personJ. Riesmeier; 12.04.2017
dcmj2pnm добавляет кодеки JPEG к функциональным возможностям dcm2pnm. Таким образом, он может обрабатывать данные DICOM, сжатые в формате JPEG, и создавать выходные изображения в формате JPEG. Так что это расширенный набор функций dcm2pnm. Я думаю, что это так, потому что dcmtk предлагает разные варианты компиляции, которые позволяют включать/исключать libjpeg. Просто отражает параметры набора инструментов для сопутствующих инструментов командной строки. Подтверждается списком форматов файлов при запуске с опцией -h
Для dcml2pnm я не уверен, но это хорошее предположение: то же, что и для JPEG, но включает кодировщик JPEG-LS, который является еще одним необязательным сторонним набором инструментов для dcmtk.