3D 图像旋转简单 ITK Python

3D Image Rotation Simple ITK Python

我正在尝试使用 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)

代码旋转了图像,但中心发生了偏移。
Orginal Image Image after rotate

谁能解释一下为什么中心会偏移?

任何帮助将不胜感激。

您正在以像素为单位设置旋转中心,而不是以物理为单位 space。

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