使用 SimpleITK 重采样后,输出 MRI 图像的值(几乎)到处都是 0

问题描述 投票:0回答:0

我有 3 维 NIfTI MRI 图像,我想将其重新采样为统一的体素大小 (1, 1, 1)。这很好用:

img = sitk.ReadImage(img_path)

output_spacing = [1.0, 1.0, 1.0]

input_spacing = img.GetSpacing()
input_size = img.GetSize()
size_x = int(round(input_size[0] * input_spacing[0]/output_spacing[0]))
size_y = int(round(input_size[1] * input_spacing[1]/output_spacing[1]))
size_z = int(round(input_size[2] * input_spacing[2]/output_spacing[2]))
size = [size_x, size_y, size_z]

resampler = sitk.ResampleImageFilter()

resampler.SetDefaultPixelValue(0)
resampler.SetOutputDirection(img.GetDirection())
resampler.SetInterpolator(sitk.sitkLinear)
resampler.SetOutputOrigin(img.GetOrigin())
resampler.SetOutputSpacing([1.0, 1.0, 1.0])
resampler.SetSize(size)

img_resampled = resampler.Execute(img)

然而,原始图像看起来也旋转了。我怀疑这是因为他们有奇怪的方向,例如

(-0.08117500577885353, -0.01032194044222358, 0. 9966465738475954, 0.9617029292569339, 0.26183942332790555, 0.0810390887 0110368, 0.26179781186143564, -0.9650562542861514, 0.011325764448564252).

但是如果我设置“resampler.SetOutputDirection([1.0, 0.0, 0.0, 1.0, 0.0, 1.0])”而不是“resampler.SetOutputOrigin(img.GetOrigin())”,输出的 MRT 图像(几乎)到处都是值 0...

这是什么原因,我该如何解决这个错误?

提前感谢您的帮助!

python resampling simpleitk nifti mri
© www.soinside.com 2019 - 2024. All rights reserved.