3

我正在尝试使用 Simple ITK 旋转 3D 图像。这是我的代码: imagetoresize是原始图像。图像大小为 (512,512,149)

targetimage = imagetoresize
origin = imagetoresize.GetOrigin()
targetimage = imagetoresize
imagetoresize.SetOrigin((0,0,0))
transform = sitk.VersorTransform((0,0,1), np.pi)
transform.SetCenter((256,256,74))
outimage=sitk.Resample(imagetoresize,targetimage.GetSize(),transform,sitk.sitkLinear,[0,0,0], imagetoresize.GetSpacing(), imagetoresize.GetDirection())
outimage.SetOrigin(origin)

代码旋转图像,但中心移动。旋转后
的原始图像

有人可以向我解释为什么中心移动了吗?

任何帮助都感激不尽。

4

1 回答 1

4

您正在以像素而不是在物理空间中设置旋转中心。

SimpleITK(和 ITK)在物理空间而不是索引空间中执行转换和重采样。应该没有必要将图像的原点设置为0。我相信你应该使用 imagetoresize.TransformContinuousIndexToPhysicalPoint(center_index) 来获得物理空间的中心。

于 2017-06-09T17:14:06.690 回答