Я на самом деле работаю над изображениями МРТ, используя Python. Формат изображения - это формат NIFTI, который я получаю, как визуализировать срезы по осям x, y или z, но теперь я хочу использовать фильтрацию Собеля по каждому из них и создать новое изображение NIFTI с этими срезами.
Для этого:
- Я загружаю основное изображение .nii.gz (img = nib.load (im_path))
- Я снова загружаю основное изображение .nii.gz с новым имя "img_sobel" (img_sobel = nib.load (im_path))
- Создать al oop для каждого среза
- Собел, фильтрующий срез
- Заменить этот срез на соответствующий часть img_sobel («img_sobel_data [:,:, sl] == np.hypot (sx, sy)»)
- После l oop сохраните img_sobel с именем «image_XXX_Sobel»
Используя подзаговор, я вижу, что фильтрация sobel работает на каждом срезе, но кажется, что строка "img_sobel_data [:,:, sl] == np.hypot (sx, sy)" не работает, почему ?
Вот раздел lopp:
# Name the interested data
img_data = img.get_fdata()
img_sobel_data = img_sobel.get_fdata()
header = img.header
nb_img = header.get_data_shape()
nb_img_h = nb_img[2] #Hauteur
for sl in range(0,nb_img_h):
slice_h = img_data[:, :, sl]
#Sobel
sx = ndimage.sobel(slice_h, axis=0, mode='constant')
sy = ndimage.sobel(slice_h, axis=1, mode='constant')
sobel_h = np.hypot(sx, sy)
img_sobel_data[:, :, sl] = sobel_h #Change the image slice to the sobel one
# Save Sobel:
nib.save(img_sobel,imSobel_path)
Что не так? Разве мы не можем заменить фрагмент изображения из другого в Python? Есть ли хитрость для решения этой проблемы?
Спасибо!
РЕДАКТИРОВАТЬ: ОК, я получаю немного больше, почему я не могу сделать так легко: я извлек фрагменты изображения NIFTI , отфильтровал их, но я не изменил сам образ NIFTI !!! Итак, мой вопрос: как изменить изображение NIFTI, полученное из img_sobel.get_fdata ()?