3D图像旋转简单的ITK Python

时间:2017-06-09 12:21:51

标签: python image image-rotation simpleitk

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

有人可以向我解释为什么中心会被转移吗?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

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

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