2016-01-12 2 views
0

У меня есть файл DICOM, содержащий распределение дозы от лучевой терапии. Это распределение дозы необходимо для вычисления различных вещей в MatLab. Но почему-то MatLab не может прочитать эти файлы, и я понятия не имею, почему.Информация о файле DICOM в файл .txt

Я пробовал некоторые программы в Интернете, которые могут их прочитать, но я не могу получить экспорт 3D-матрицы, содержащей распределение дозы, которое затем можно загрузить в MatLab.

Единственное, что я нашел, это программа, которая предоставляет файл txt с тремя столбцами (положение x, y позиция и яркость) для одного фрагмента за раз. Ofc, из этого я могу создать то, что я ищу, но это занимает много времени, чтобы пройти через 100-1500 срезов для каждого пациента, чтобы каждый отдельный экспорт txt-файла.

Так что мне было интересно, знает ли кто-нибудь программу или что-то, что может сделать это легко?

+0

Если это двоичный файл [ 'fread'] (http://nl.mathworks.com/help/matlab/ref/fread.html) следует сделать трюк – Adriaan

+1

Вместо того, чтобы искать какой-то другой программы, вы должны решить свою проблему с помощью Matlab и файлов DICOM. В чем проблема с чтением файла? И если все не удается, преобразование в текст, вероятно, является наихудшим выбором, поскольку для изображений вы должны использовать двоичный формат, иначе файлы становятся большими. – Daniel

+0

@ Daniel Честно говоря, это мой коллега, который использует MatLab для этого, что не может заставить его работать. Он просто говорит, что не может его правильно прочитать и получает нулевую матрицу, если пытается получить доступ к дозе. Это файлы, подобные этому файлу: http://1drv.ms/1SMJrDE Я понятия не имею, что он делает что-то неправильно, или это странный DICOM. –

ответ

2

Вы можете определенно справиться с этим, используя встроенные функции MATLAB.

Чтобы получить заголовок DICOM, вам нужно будет использовать dicominfo, а затем, чтобы получить данные изображения, которые вы пытаетесь получить, вам нужно будет использовать dicomread.

Используя образ, который вы предоставили, я смог загрузить его, используя следующее.

info = dicominfo('rtdose.dcm'); % Unnecessary because you can use dicomread directly on the filename 
im = dicomread(info); 
size(im) 

    512 512 1 118 

Как вы можете видеть, это 4D-матрица, где я предполагаю, что 4-е измерение - это время. Затем я зациклился на изображениях и обнаружил, что наибольший сигнал произошел между конкретными точками времени, и я сделал gif этих изображений, отображаемых в оттенках серого (номер кадра в левом верхнем углу).

enter image description here