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)
В зависимости от того, как вы хотите, чтобы размеры были расположены, вам могут потребоваться дополнительные операции. Этот пост является отличным учебником о том, как управлять массивами и их размерностью: Учебник Койота по измерениям жонглирования.