繁体   English   中英

如何在Python中扩展ITK类?

[英]How to extend an ITK class in Python?

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指标。 基本上,您只需要修改以itk为前缀的文件中的GetValue()GetValueAndDerivative()函数即可实现指标。 然后,如果要通过参数映射和CMakeLists文件将参数传递到度量标准以在构建系统中注册度量标准,则需要修改以elx开头的文件。 参数映射是键值对,允许您配置注册组件(包括指标)。 您可以在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优化器和自定义指标一起使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM