IDL: чтение нескольких изображений DICOM сохраняет их в файле.dat

Я пишу программу в IDL для чтения изображений DICOM, затем сохраняю их в большой матрице и, наконец, сохраняю в файле.dat. DICOMs называются 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 ответ

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

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)

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

Другие вопросы по тегам