我找不到有关此功能的任何 python 文档。
我尝试了以下代码,但输出绝对错误。
warp = sitk.WarpImageFilter()
warp.SetInterpolator(sitk.sitkLinear)
out = warp.Execute(reference_img, transform_img)
它给了我确切的reference_img,但不是转换后的图像。
你用过这个功能吗?你能帮我解决这个问题吗?
我尝试了以下代码,但输出绝对错误。
warp = sitk.WarpImageFilter()
warp.SetInterpolator(sitk.sitkLinear)
out = warp.Execute(reference_img, transform_img)
它给了我确切的reference_img,但不是转换后的图像。
你用过这个功能吗?你能帮我解决这个问题吗?
WarpImageFilter 与所有其他 SimpleITK 过滤器一样,在 SimpleITK 构建基础架构中经过严格测试。过滤器包装包括对多个测试的描述,其中验证了结果并验证了跨语言的行为。此外,在 SimpleITK 中,所有过滤器都会自动测试几种行为的一致性,这是通过 SimpleITK 的代码生成过程完成的。
现在ResampleImageFilter
是 WarpImageFilter 的首选方法。它应用任何变换来重新采样图像,其中 aDisplacementFieldTransform
包含位移场图像。这与WarpImageFilter
仅采用位移场的不同。
“参考图像”似乎有些混乱。重采样和扭曲过滤器都需要知道图像的输出信息。这包括输出原点、输出大小、输出间距和输出方向。这些可以单独手动设置,也可以从“参考图像”中设置。有ResampleImageFilter.SetRefenceImage()
和WarpImageFilter.SetOutputParametersFromImage
方法可以做同样的事情。参考图像是可选的。
WarpImageFilter
利用 SimpleITK 测试数据的示例用法:
img = sitk.ReadImage("cthead1-Float.mha")
dis = sitk.ReadImage("cthead1-dis1.nrrd")
warper = sitk.WarpImageFilter()
warper.SetOutputParameteresFromImage(img)
out = warper.Execute(img,dis)
这是使用 ResampleImageFilter 完成的相同操作。它需要将位移场图像转换为 float64 以与变换一起使用:
resampler = sitk.ResampleImageFilter()
resampler.SetReferenceImage(img)
dis_tx = sitk.DisplacementFieldTransform(sitk.Cast(dis,sitk.sitkVectorFloat64))
resampler.SetTransform(dis_tx)
out = resampler.Execute(img)