Повторите выборку всех изображений в базе данных до одинакового размера вокселя.

У меня есть 3 стека 512x512x133, 512x512x155 and 512x512x277, Я хотел бы пересчитать весь стек, чтобы сделать размеры 512x512x277, 512x512x277 and 512x512x277, Как это сделать?

Я знаю, что могу сделать повторную выборку, используя толщину среза и расстояние между пикселями. Но это не обеспечит одинаковое количество срезов в каждом случае.

2 ответа

Ты можешь использовать scipy.ndimage.interpolate.zoom, указав массив коэффициентов масштабирования для каждой оси следующим образом:

# example for first image
zoomArray = desiredshape.astype(float) / original.shape
zoomed = scipy.ndimage.interpolate.zoom(original, zoomArray)

ОБНОВИТЬ:

Если это слишком медленно, вы можете попробовать как-то создать отдельные изображения из вертикальных срезов вашего "куба изображений", обработать их с помощью некоторой высокоскоростной библиотеки изображений (некоторые люди любят ImageMagick, есть также PIL, opencv и т. Д.), и сложите их снова вместе. Таким образом, вы берете 512 изображений размером 512x133 и изменяете их размеры до 512x277, а затем снова складываете до 512x512x277, что является вашим конечным желаемым размером. Кроме того, это разделение позволило бы распараллеливание. Следует подумать: это будет работать, только если поперечная ось (та, вдоль которой вы будете разрезать 2D-изображения) не будет изменена!

Вы можете использоватьResampleпреобразовать в TorchIO.

      import torchio as tio
small, medium, large = dicom_dirs  # the folders of your three DICOMs
reference = tio.ScalarImage(large)
resample = tio.Resample(reference)
small_resampled = resample(small)
medium_resampled = resample(medium)

Три изображения теперь имеют одинаковую форму, 512 x 512 x 277.

Отказ от ответственности: я являюсь основным разработчиком TorchIO.

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