Это нельзя сделать напрямую в SimpleITK, поскольку концепция изображения не эквивалентна массиву интенсивностей, она имеет физический пространственный экстент (см. это объяснение для чтения документов ).Интервал, начало и направление двух умноженных изображений должны быть одинаковыми.
Чтобы сделать то, что вы хотите, вам нужно будет выполнить итерации по фрагментам, а затем заново составить том.
ЗдесьПример кода, который делает именно это:
import SimpleITK as sitk
img = sitk.ReadImage('training_001_ct.mha')
slc = sitk.GridSource(outputPixelType=img.GetPixelID(), size=img.GetSize()[0:2],
sigma=(0.1,0.1), gridSpacing=(20.0,20.0))
slc.SetSpacing(img.GetSpacing()[0:2])
modified_slices = []
for i in range(img.GetDepth()):
current_img_slc = img[:,:,i]
slc.SetOrigin(current_img_slc.GetOrigin())
slc.SetDirection(current_img_slc.GetDirection())
modified_slices.append(current_img_slc*slc)
sitk.Show(sitk.JoinSeries(modified_slices))
Пожалуйста, опубликуйте будущие вопросы на форуме ITK Discourse и используйте тег simpleitk.