IDL: чтение нескольких изображений DICOM сохраняет их в файле .dat - PullRequest
0 голосов
/ 16 ноября 2018

Я пишу программу в IDL для чтения изображений DICOM, затем сохраняю их в большой матрице и, наконец, сохраняю в файле .dat.DICOM называются IM0, IM1, IM2, .. IM21777 .Я написал код ниже, но я получаю ошибку.Я использую IDL версии 6.4.

files = file_search('E:\SE7\IM*)
n_files = n_elements(files)

full_data = fltarr(256,256,n_files)

for i=0L, n_files-1 do begin 
    full_data[*,*,i] = read_dicom('E:\SE7\IM')
endfor

path  = 'E:\'
open, 1, path + "full_data.dat'
writeu, 1, full_data
close, 1

Я не уверен, как перебрать имя DICOM, например, IM0, IM1, IM2 и т. Д.

После того, как я сохраню их в большой матрице (то есть full_data = [256,256,2178]) Хотелось бы сделать 3D матрицу 4D.Это возможно?Я хотел бы, чтобы он имел размеры [256, 256, 22, 99], т.е. 2178/99.

1 Ответ

0 голосов
/ 16 ноября 2018

Я не уверен, какую ошибку вы получаете, но вам не хватает кавычки в первой строке. Должно быть:

files = file_search('E:\SE7\IM*')

Чтобы зациклить имя DICOM, вы можете объединить в цепочку индекс цикла, используя + и STRTRIM() следующим образом:

for i=0L, n_files-1 do begin 
    full_data[*,*,i] = read_dicom('E:\SE7\IM'+STRTRIM(i,2))
endfor

Наконец, чтобы превратить вашу матрицу (256,256,2178) в матрицу (256,256,22,99), используйте REBIN:

final_data = REBIN(full_data, 256, 256, 20, 99)

В зависимости от того, как вы хотите расположить размеры, вам могут потребоваться дополнительные операции. Этот пост является отличным учебником о том, как управлять массивами и их размерностью: Учебник по койотскому измерению жонглирования .

...