Дамп Dcmtk, сократите время, не загружая все

Я работаю с изображениями DICOM и использую DCMTK, чтобы выполнить какой-либо процесс.

Моя проблема в том, что мне нужно получить только определенные теги пакета изображений. Но процесс занимает слишком много времени.

Я использую dcmdump -M -L +P '0010,0020' +P '0010,0010

  • -M не загружайте очень длинные значения (например, данные пикселей)
  • -L печатать укороченные значения длинных тегов (по умолчанию)
  • +P распечатать текстовый дамп тега, эту опцию можно указать несколько раз

А вот на "сброс" одного файла уходит ~1sc. Это потому, что все теги все еще загружены, но затем +P выполняет поиск по всем тегам.

У меня есть только несколько тегов для извлечения. Есть ли возможность загружать только определенные теги, чтобы сократить время, необходимое для создания дампа файла?

Возможно, DCMTK не подходит для использования. Я открыт для всего.


person Atnaize    schedule 09.05.2018    source источник
comment
Вы имеете в виду, что на файл требуется 1 секунда? Я не могу это подтвердить. Это правда, что все элементы данных анализируются dcmdump, но большие значения определенно не загружаются, если используются опции -M и -L. Поскольку вы упомянули пакет изображений: вы вызываете dcmdump несколько раз или используете режим рекурсивного поиска...?   -  person J. Riesmeier    schedule 09.05.2018
comment
Действительно требуется 1sc на файл. И да, я использую dcmdump несколько раз, по одному на файл.   -  person Atnaize    schedule 09.05.2018
comment
Тогда это долгое время, вероятно, используется для загрузки двоичного файла dcmdump? Конечно, вы также можете запустить dcmdump с несколькими именами файлов или использовать рекурсивный пакетный режим, например: dcmdump +P 10,10 -M -L +r +sd . +fo +Fs -q Это должно дать вам список с именем пациента всех файлов DICOM, хранящихся в текущем каталоге (и ниже).   -  person J. Riesmeier    schedule 10.05.2018
comment
@ J.Riesmeier, проблема в том, что я хочу делать это по файлу, потому что я упорядочиваю их в файловой структуре. Я не хочу обрабатывать пакетно, за исключением случаев, когда есть волшебная функция, которая упорядочивает так, как мне нужно;)   -  person Atnaize    schedule 14.05.2018
comment
Можно было добавить все файлы для дампа в командную строку, т.е. в нужном порядке :) Конечно, следует следить за тем, чтобы не превышалась максимальная длина командной строки (зависит от вашей оболочки). Кстати, какую операционную систему вы используете? Время запуска программы можно было бы улучшить, используя встроенный словарь данных. См.: support.dcmtk.org/docs/file_datadict.html.   -  person J. Riesmeier    schedule 14.05.2018


Ответы (1)


В пакете gdcm есть инструмент командной строки, позволяющий делать именно то, что вы хотите.

http://gdcm.sourceforge.net/html/gdcmscanner.html

Чтобы отобразить все значения имени пациента (0010,0010) для файлов в текущем каталоге.

gdcmscanner -t 10,10 -d . -p

Он загружает только те биты, которые вы запрашиваете. Это быстро.

person ColonelFazackerley    schedule 09.05.2018
comment
Кажется, что это невозможно для одного файла, но больше для каталога / многих каталогов. У вас есть опыт работы с этим инструментом? - person Atnaize; 09.05.2018
comment
да, я использовал инструменты командной строки dcmtk и gdcm. в вашем вопросе говорилось «изображения», поэтому я предположил, что вам нужно несколько файлов. Я не использовал последние сборки, но gdcmdump раньше был намного быстрее, чем dcmdump от dcmtk. - person ColonelFazackerley; 09.05.2018