Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中的ITK:SimpleTk还是非SimpleTk?_Python_C++_Image Processing_Itk - Fatal编程技术网

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)。验证下载时应该没有错误。如果有,可能是因为目录创建权限错误
  • 该项目应该在没有错误的情况下生成
  • WrapITK.pth
    文件从ITK
    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已经被替换,我不知道这一点。真是好消息!