4

Execute注册方法返回注册(转换)版本的SimpleElastix运动图像,但不允许类似地转换另一张图像。我有两个 CT 图像并且想根据骨骼进行配准,因此我使用大约 600 到 1500 Hounsfield 单位之间的逻辑 sigmoid 对输入图像进行软阈值处理,以便对比度集中在骨骼上。为简单起见,您可以假设阈值将所有低于 600 的值设为 0,将所有值从 0 线性缩放到 1,并将高于 1500 的所有值设为 1。

注册,使用SimpleElastix

fixed = sitk.GetImageFromArray(threshold(...))
moving = sitk.GetImageFromArray(threshold(...))

elastixImageFilter = sitk.ElastixImageFilter()
elastixImageFilter.SetFixedImage(fixed)
elastixImageFilter.SetMovingImage(moving)

parameterMapVector = sitk.VectorOfParameterMap()
# ...
elastixImageFilter.SetParameterMap(parameterMapVector)

registered = elastixImageFilter.Execute()

但是,我想在没有软阈值的情况下对原始图像进行操作。

有没有办法应用在原始图像上找到的配准转换?通过获取变换或通过提供未阈值的运动图像“乘客侧”,使其类似地变换但不用于优化成本函数。

4

1 回答 1

2

我认为您可以在 elastixImageFilter 之后使用 transformixImageFilter 来做到这一点,如下所示:

elastixImageFilter = sitk.ElastixImageFilter()
elastixImageFilter.SetFixedImage(fixed)
elastixImageFilter.SetMovingImage(moving)

parameterMapVector = sitk.VectorOfParameterMap()
# ...
elastixImageFilter.SetParameterMap(parameterMapVector)
elastixImageFilter.Execute()

transformParameterMap = elastixImageFilter.GetTransformParameterMap()

transformix = sitk.TransformixImageFilter()
transformix.SetTransformParameterMap(transformParameterMap)
transformix.SetMovingImage(sitk.GetImageFromArray(thirdImage))

transformix.Execute()

transformedThirdImg = 
sitk.GetArrayFromImage(transformix.GetResultImage())
于 2018-05-14T12:22:47.657 回答