Чем смотреть файлы DICOM под Debian
Доброго всем вечера,
Столкнулся для себя с нестандартной проблемой - надо посмотреть файлы DICOM.
Дали CD-диск с файлами AUTORUN.INF CDVIEWER.EXE CDVIEWER.JAR DICOMDIR
в корне, дирами A и вложенной в нее дирой B в которой находятся
собственно DICOM-файлы. Это все дело прислали мне эл. почтой.
> $ file AUTORUN.INF
> AUTORUN.INF: Microsoft Windows Autorun file.
> $ file CDVIEWER.EXE
> CDVIEWER.EXE: PE32 executable for MS Windows (GUI) Intel 80386 32-bit
> $ file DICOMDIR
> DICOMDIR: DICOM medical imaging data
> file A00
> A00: DICOM medical imaging data
Нашел в дистре сквизи такие пакеты:
~$ aptitude search dicom
i dicom3tools - DICOM medical image files
manipulation and
i dicomnifti - конвертирует файлы DICOM в формат
NIfTI
i dicomscope - The OFFIS DICOM Viewer
i python-dicom - DICOM medical file reading and
writing
Установил их.
Пытаюсь открыть файлы в dicomscope - ничего не открывает, пишет - Load
Failed.
Не совсем правда понимаю, что грузить, пытался грузить и сами
dicom-файлы, и файл DICOMDIR - без толку.
В Process Log в окошке дикомдира никакого лога при этом не вижу.
Пытаюсь исполнить strace dicomscope, лается на то, что:
> open("/usr/lib/jvm/java-6-openjdk/jre/bin/../lib/amd64/jli/tls/x86_64/libz.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat("/usr/lib/jvm/java-6-openjdk/jre/bin/../lib/amd64/jli/tls/x86_64", 0x7fff6f258be0) = -1 ENOENT (No such file or directory)
> open("/usr/lib/jvm/java-6-openjdk/jre/bin/../lib/amd64/jli/tls/libz.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat("/usr/lib/jvm/java-6-openjdk/jre/bin/../lib/amd64/jli/tls", 0x7fff6f258be0) = -1 ENOENT (No such file or directory)
> open("/usr/lib/jvm/java-6-openjdk/jre/bin/../lib/amd64/jli/x86_64/libz.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat("/usr/lib/jvm/java-6-openjdk/jre/bin/../lib/amd64/jli/x86_64", 0x7fff6f258be0) = -1 ENOENT (No such file or directory)
> open("/usr/lib/jvm/java-6-openjdk/jre/bin/../lib/amd64/jli/libz.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat("/usr/lib/jvm/java-6-openjdk/jre/bin/../lib/amd64/jli", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
> open("/usr/lib/jvm/java-6-openjdk/jre/bin/../jre/lib/amd64/jli/tls/x86_64/libz.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat("/usr/lib/jvm/java-6-openjdk/jre/bin/../jre/lib/amd64/jli/tls/x86_64", 0x7fff6f258be0) = -1 ENOENT (No such file or directory)
> open("/usr/lib/jvm/java-6-openjdk/jre/bin/../jre/lib/amd64/jli/tls/libz.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat("/usr/lib/jvm/java-6-openjdk/jre/bin/../jre/lib/amd64/jli/tls", 0x7fff6f258be0) = -1 ENOENT (No such file or directory)
> open("/usr/lib/jvm/java-6-openjdk/jre/bin/../jre/lib/amd64/jli/x86_64/libz.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat("/usr/lib/jvm/java-6-openjdk/jre/bin/../jre/lib/amd64/jli/x86_64", 0x7fff6f258be0) = -1 ENOENT (No such file or directory)
> open("/usr/lib/jvm/java-6-openjdk/jre/bin/../jre/lib/amd64/jli/libz.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat("/usr/lib/jvm/java-6-openjdk/jre/bin/../jre/lib/amd64/jli", 0x7fff6f258be0) = -1 ENOENT (No such file or directory)
> open("/usr/lib/jvm/java-6-openjdk/jre/lib/amd64/server/tls/x86_64/libz.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat("/usr/lib/jvm/java-6-openjdk/jre/lib/amd64/server/tls/x86_64", 0x7fff6f258be0) = -1 ENOENT (No such file or directory)
> open("/usr/lib/jvm/java-6-openjdk/jre/lib/amd64/server/tls/libz.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat("/usr/lib/jvm/java-6-openjdk/jre/lib/amd64/server/tls", 0x7fff6f258be0) = -1 ENOENT (No such file or directory)
> open("/usr/lib/jvm/java-6-openjdk/jre/lib/amd64/server/x86_64/libz.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat("/usr/lib/jvm/java-6-openjdk/jre/lib/amd64/server/x86_64", 0x7fff6f258be0) = -1 ENOENT (No such file or directory)
> open("/usr/lib/jvm/java-6-openjdk/jre/lib/amd64/server/libz.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat("/usr/lib/jvm/java-6-openjdk/jre/lib/amd64/server", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
> open("/usr/lib/jvm/java-6-openjdk/jre/lib/amd64/tls/x86_64/libz.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat("/usr/lib/jvm/java-6-openjdk/jre/lib/amd64/tls/x86_64", 0x7fff6f258be0) = -1 ENOENT (No such file or directory)
> open("/usr/lib/jvm/java-6-openjdk/jre/lib/amd64/tls/libz.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat("/usr/lib/jvm/java-6-openjdk/jre/lib/amd64/tls", 0x7fff6f258be0) = -1 ENOENT (No such file or directory)
> open("/usr/lib/jvm/java-6-openjdk/jre/lib/amd64/x86_64/libz.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat("/usr/lib/jvm/java-6-openjdk/jre/lib/amd64/x86_64", 0x7fff6f258be0) = -1 ENOENT (No such file or directory)
> open("/usr/lib/jvm/java-6-openjdk/jre/lib/amd64/libz.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat("/usr/lib/jvm/java-6-openjdk/jre/lib/amd64", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
> open("/usr/lib/jvm/java-6-openjdk/jre/../lib/amd64/tls/x86_64/libz.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat("/usr/lib/jvm/java-6-openjdk/jre/../lib/amd64/tls/x86_64", 0x7fff6f258be0) = -1 ENOENT (No such file or directory)
> open("/usr/lib/jvm/java-6-openjdk/jre/../lib/amd64/tls/libz.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat("/usr/lib/jvm/java-6-openjdk/jre/../lib/amd64/tls", 0x7fff6f258be0) = -1 ENOENT (No such file or directory)
> open("/usr/lib/jvm/java-6-openjdk/jre/../lib/amd64/x86_64/libz.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat("/usr/lib/jvm/java-6-openjdk/jre/../lib/amd64/x86_64", 0x7fff6f258be0) = -1 ENOENT (No such file or directory)
> open("/usr/lib/jvm/java-6-openjdk/jre/../lib/amd64/libz.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
> stat("/usr/lib/jvm/java-6-openjdk/jre/../lib/amd64", 0x7fff6f258be0) = -1 ENOENT (No such file or directory)
нет файлов, которые похоже проге нужны.
Вроде бы основные пакеты оупджавы в системе есть:
> $ aptitude search openjdk
> p openjdk-6-dbg - Java runtime based on OpenJDK (debugging symbols)
> p openjdk-6-demo - Java runtime based on OpenJDK (demos and examples)
> p openjdk-6-doc - OpenJDK Development Kit (JDK) documentation
> p openjdk-6-jdk - комплект разработчика OpenJDK
> i A openjdk-6-jre - OpenJDK Java runtime, using Hotspot JIT
> i A openjdk-6-jre-headless - OpenJDK Java runtime, using Hotspot JIT (headless)
> i A openjdk-6-jre-lib - OpenJDK Java runtime (architecture independent libraries)
> v openjdk-6-jre-shark -
> p openjdk-6-jre-zero - Alternative JVM for OpenJDK, using Zero/Shark
> p openjdk-6-source ,
не знаю какого рожна ему не хватает, не документации же или сырцов
оупнджавы?!
В dicom3tools входят следующие утилиты:
> /usr/bin/andump
> /usr/bin/dcentvfy
> /usr/bin/dcsrdump
> /usr/bin/dcsort
> /usr/bin/dctable
> /usr/bin/dcdirdmp
> /usr/bin/dcdump
> /usr/bin/dcfile
> /usr/bin/dchist
> /usr/bin/dckey
> /usr/bin/dciodvfy
> /usr/bin/dcstats
> /usr/bin/jpegdump
но ни одной из них я не смог посмотреть картинки. В лучшем случае
получал какую-то метаинформацию о файле.
Как пользоваться python-dicom вообще не понял, видимо он нужен для
написания питон-скриптов для чтения этих файлов, в чем я не силен.
Утилита dicomhead из пакета dicomnifti выдает какую-то фигню:
> $ dicomhead DICOMDIR
>
> **** DICOMImage::Mosaic: Cannot get value of image type in image DICOMDIR
> $ dicomhead A/B/A00
>
> **** DICOMImage::NumSlices: Cannot get number of slices from A/B/A00
> **** Setting value to 1 (can be changed with '-s' option on command line.)
>
>
> **** DICOMImage::GetRepetitonTime: Cannot get value of acquisition repetition time in image A/B/A00
При употреблении указанной опции -s ругается, что не может открыть файл
-s, воспринимая ее не как опцию, а как файл (в man нет вообще опций
никаких).
Что за NIfTI format и как его читать, если в него конвертнуть, я честно
не совсем понимаю.
Пытался wine'ом открыть CDVIEWER.EXE - ругается, что нужна java 1.5 или
выше, видимо пойду в виртмашину открывать в винде, хотя эта идея мне
особо не нравиться...
Reply to: