我有 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...
这是什么原因,我该如何解决这个错误?
提前感谢您的帮助!