借助 Python
中的 SimpleITK
,我已经开始使用 ITK
一周了。尽管目前我对 SimpleITK
很满意,但我注意到一些功能,例如 Powell 优化方案
或 OnePlusEvolutionary
并不理想在 SimpleITK
中可用。这似乎与基于地标的注册方法相同。
所以,我想知道是否有一种方法可以在 SimpleITK
中检索 ITK
(在 C++
中)中可用的所有功能,或者如果有必要自己包装吗?
如果没有,我稍后会学习 C++
来做到这一点!
谢谢!
最佳答案
你是对的。 SimpleITK 的功能有限。然而,可以使用 WrapITK 接口(interface)访问 Python 中的整个 ITK 库。这是一个旧界面,我相信已经有一段时间没有更新了。但是,仍然可以从源代码编译新版本并使用 WrapITK。
这个过程并不顺利。我过去曾在 Windows 机器上完成过构建,然后注意到我必须遇到的一些不太顺利的步骤。我会把它们放在这里。由于您没有提到您的操作系统,我将继续解释 Windows 的设置。让我们看看您是否能够启动并运行它。
- ITK-4.6 + Python2.7 + CMake + VS2008 专业版(全部 32 位)
- VS2008 之后的版本都可以编译 GCCXML,这是生成 python 绑定(bind)所必需的
- 配置 CMAKE 后,还需要设置以下标志:
ITK_WRAP_PYTHON
ITK_WRAP_*
(所有类型:浮点型、 double 型等)ITK_BUILD_SHARED_LIBS
(如果设置了第一个标志,则自动设置)
- 在 VS2008 中,仅在 Release模式下构建。项目浏览器中的项目数量将超过 500 个。应该构建大约 300-350 个。
- 构建时,请确保您有可访问的互联网连接来下载 GCCXML(在 VS2008 中开始构建后可能会下载该文件)。验证下载时不应出现错误。如果有,可能是目录创建权限错误。
- 项目构建时应该没有错误
- 将
WrapITK.pth
文件从 ITKbuild/Wrapping/Generators/Python/Release
复制到Python/Lib/site-packages
- 将以下内容添加到您的
Path
变量中:C:\ProgramLibs\ITK\build2008\lib\Release
C:\ProgramLibs\ITK\build2008\bin\Release
C:\ProgramLibs\ITK\build2008\lib
- 现在 ITK 应该可以正常工作(下面是一个测试 python 文件,您可以使用它对构建运行健全性检查)。除了每次在程序中或在 Python 解释器上第一次调用
itk.Image
时,都会出现十几个警告,并且执行这些警告需要时间。这是一个已知的问题。一旦你过了这个阶段,一切就顺利了。
测试文件
import itk
pixelType = itk.UC
imageType = itk.Image[pixelType, 2]
readerType = itk.ImageFileReader[imageType]
writerType = itk.ImageFileWriter[imageType]
reader = readerType.New()
writer = writerType.New()
reader.SetFileName("<input image file location>")
writer.SetFileName("D:/Output.png")
writer.SetInput( reader.GetOutput() )
writer.Update()
关于python - Python 中的 ITK : SimpleITK or not?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31285492/