0

SimpleITK 提供易于使用的 Python 接口。我可以从那里扩展课程吗?

我需要解决一个注册问题,这需要我编写自定义的注册类,尤其是相似度度量。如何在 Python 中扩展 SimpleITK 以供我使用?

4

2 回答 2

4

SimpleElastix包是SimpleITK的扩展,除了标准的 SimpleITK 方法外,还包括 elastix 注册库。您可以在 elastix 中编写您的指标,并使用 SimpleElastix 将您的指标包装在 Python(或 SimpleITK 支持的任何其他语言)中。然后,您将使用 SimpleElastix 执行注册。要在 SimpleElastix 中使用您的潜在指标:

import SimpleITK as sitk

SimpleElastix = sitk.SimpleElastix()
SimpleElastix.SetParameter("Metric", "NameOfYourMetric")
SimpleElastix.SetFixedImage(sitk.ReadImage("fixedImage.nii"))
SimpleElastix.SetMovingImage(sitk.ReadImage("movingImage.nii"))
resultImage = SimpleElastix.Execute()

Elastix 本身是 ITK v3 注册库的扩展,因此如果您对 ITK 感到满意,elastix 代码库对您来说不会陌生。您可以通过查看src/Components/Metrics目录中的示例来了解指标是如何实现的。例如,看一下 AdvancedMeanSqaures 指标。基本上你只需要修改前缀为的文件中的GetValue()和函数来实现你的指标。然后您需要修改前缀为的文件GetValueAndDerivative()itkelx如果您想通过参数映射和 CMakeLists 文件将参数传递给您的指标,以将指标注册到构建系统。参数映射是键值对,允许您配置注册组件,包括您的指标。您可以在SimpleElastix 文档elastix 手册中阅读有关参数映射的更多信息。

要使用 SimpleElastix 包装您的指标,请克隆存储库并按照指南手动构建 SimpleElastix,除非您设置ELASTIX_DIR为修改后的 elastix 版本。elastix 构建系统将负责将您的指标包装在 elastix 中,而 SimpleElastix 构建系统将负责将 elastix 包装在 python 中。

免责声明:我是 SimpleElastix 的作者。

于 2016-03-10T14:52:05.593 回答
1

Python 的封装 SimpleITK 接口不提供扩展或派生的接口。SimpleITK ImageRegistrationMethods 的选项是可用的选项。

派生类和调整算法最好在 C++ 级别使用 ITK 完成。

你也许可以用 SimpleITK 和 Python 的组件组装一个小的注册框架。例如,您可以使用 SimpleITK 中的 ResampleImageFilter 和 Transform 类以及 scipy 优化器和自定义指标。

于 2016-02-24T20:17:49.473 回答