SimpleITK 提供易于使用的 Python 接口。我可以从那里扩展课程吗?
我需要解决一个注册问题,这需要我编写自定义的注册类,尤其是相似度度量。如何在 Python 中扩展 SimpleITK 以供我使用?
SimpleITK 提供易于使用的 Python 接口。我可以从那里扩展课程吗?
我需要解决一个注册问题,这需要我编写自定义的注册类,尤其是相似度度量。如何在 Python 中扩展 SimpleITK 以供我使用?
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()
itk
elx
如果您想通过参数映射和 CMakeLists 文件将参数传递给您的指标,以将指标注册到构建系统。参数映射是键值对,允许您配置注册组件,包括您的指标。您可以在SimpleElastix 文档或elastix 手册中阅读有关参数映射的更多信息。
要使用 SimpleElastix 包装您的指标,请克隆存储库并按照指南手动构建 SimpleElastix,除非您设置ELASTIX_DIR
为修改后的 elastix 版本。elastix 构建系统将负责将您的指标包装在 elastix 中,而 SimpleElastix 构建系统将负责将 elastix 包装在 python 中。
免责声明:我是 SimpleElastix 的作者。
Python 的封装 SimpleITK 接口不提供扩展或派生的接口。SimpleITK ImageRegistrationMethods 的选项是可用的选项。
派生类和调整算法最好在 C++ 级别使用 ITK 完成。
你也许可以用 SimpleITK 和 Python 的组件组装一个小的注册框架。例如,您可以使用 SimpleITK 中的 ResampleImageFilter 和 Transform 类以及 scipy 优化器和自定义指标。