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