Python中的ITK:SimpleTk还是非SimpleTk?
由于Python中的ITK:SimpleTk还是非SimpleTk?,python,c++,image-processing,itk,Python,C++,Image Processing,Itk,由于Python中的simpletk,我已经开始使用ITK一周了。尽管目前我对simpletk感到满意,但我注意到一些功能,如Powell优化方案或OnePlusEvolutionary在simpletk中不可用。这似乎与基于landmark的注册方法相同 因此,我想知道是否有一种方法可以检索ITK(在C++)中simpletk中可用的所有功能,或者是否有必要执行我自己的包装 如果没有,我将在以后学习C++这样做 谢谢 还有WrapITK,它是ITK的python包装,您可以使用ITK进行编译(
Python
中的simpletk
,我已经开始使用ITK
一周了。尽管目前我对simpletk
感到满意,但我注意到一些功能,如Powell优化方案
或OnePlusEvolutionary
在simpletk
中不可用。这似乎与基于landmark的注册方法相同
因此,我想知道是否有一种方法可以检索ITK
(在C++
)中simpletk
中可用的所有功能,或者是否有必要执行我自己的包装
如果没有,我将在以后学习C++
这样做
谢谢 还有WrapITK,它是ITK的python包装,您可以使用ITK进行编译(因此,您必须自己编译它,但至少不需要编写扭曲代码)。见 但是请注意,可能并非所有过滤器都已包装(上次更新于2009年,因此现在情况可能更好)。
我遇到的唯一一个编译过的wrapITK包是Devide RE(如果我没记错的话,它有一个旧版本的ITK,3.2),但可能还有Slicer和Vistrail也有它()你是对的。SimpleTk的功能有限。但是,可以使用WrapITK接口访问Python中的整个ITK库。这是一个旧的界面,我不相信已经更新了一段时间。然而,仍然可以从源代码编译新的构建并使用WrapITK 这个过程并不十分顺利。我过去曾在Windows机器上进行过构建,然后注意到我不得不遇到的一些不太顺利的步骤。我把它们放在这里。既然你没有提到你的操作系统,我将继续解释Windows的设置。让我们看看你是否能启动并运行它
- ITK-4.6+Python2.7+CMake+VS2008专业版(全部32位)
- VS2008之后的版本都无法编译GCCXML,这是生成python绑定所必需的
- 配置CMAKE后,需要另外设置以下标志:
ITK\u WRAP\u PYTHON
(所有类型:浮点、双精度等)ITK\u WRAP.*
(如果设置了第一个标志,则自动设置)ITK\u BUILD\u SHARED\u LIBS
- 在VS2008中,仅在发布模式下生成。project explorer中的项目数将超过500个。大约需要建造300-350个
- 在构建时,请确保您有一个可访问的internet连接用于下载GCCXML(在VS2008中开始构建后,可能会下载GCCXML)。验证下载时应该没有错误。如果有,可能是因为目录创建权限错误
- 该项目应该在没有错误的情况下生成
- 将
文件从ITKWrapITK.pth
复制到build/Wrapping/Generators/Python/Release
Python/Lib/site包中
- 将以下内容添加到
变量中: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()
导入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(“”)
writer.SetFileName(“D:/Output.png”)
writer.SetInput(reader.GetOutput())
writer.Update()
对于图像处理,您看过skimage或opencv吗?我看过skimage,因为它有几个基于功能的检测器(SIFT、SURF、ORB等),在我的案例中可能很有用。关于OpenCV,ITK提供了更多关于图像注册的功能。您可以提出一个功能请求来添加额外的优化器:为什么需要这些优化器,而当前的优化器不满足您的要求?只是尝试不同的方法,一些是基于梯度的,而另一些是基于启发式的(蚂蚁、遗传算法、单纯形)。然而,simplex和Powell的方法是在NiPy库中实现的。我还没有尝试过,但是最新版本的编译器没有任何限制,因为GCCXML已经被替换,我不知道这一点。真是好消息!