【问题标题】:How can I implement the conversion between itk image and SimpleITK image in Python?如何在 Python 中实现 itk 图像和 SimpleITK 图像之间的转换?
【发布时间】:2014-01-27 09:17:53
【问题描述】:

我知道如何在C++中实现itk图像和SimpleITK图像之间的转换,这是SimpleITK中的一个例子(Examples/ITKIntegration.cxx)。

  //
  // Extract the itk image from the SimpleITK image
  //
  InternalImageType::Pointer itkImage =
    dynamic_cast <InternalImageType*>( image.GetITKBase() );
  ...
  //
  // Return to the simpleITK setting by making a SimpleITK image using the
  // output of the blur filter.
  //
  sitk::Image blurredImage = sitk::Image( blurFilter->GetOutput() );

但是在 Python 中,当我使用其中 itkImage 是 itkImage 的“sitk.Image(itkImage)”时,出现错误“this = _SimpleITK.new_Image(*args) NotImplementedError: 重载函数“new_Image”的参数数量或类型错误。而在 python 中,不可能在 C++ 中转换类型如“dynamic_cast”。

对此有一种可能的解决方案,即使用 PyBuffer 将 itkImage 转换为 numpy 数组,然后使用 SimpleITK 将数组最终转换为 SimpleITK 图像。但我未能构建 itkPyBuffer。而且我认为这种方法并不能直接解决这个问题。

你能帮我把 C++ 代码转换成可用的 python 代码吗?谢谢。

【问题讨论】:

    标签: python c++ numpy itk


    【解决方案1】:

    这是 ITK 和 SimpleITK 图像之间的转换器: https://github.com/gregpost/itk-SimpleITK-Converter

    【讨论】:

    • 虽然这似乎是一个有效的答案,但您应该提供更多信息,了解这些信息如何为该问题提供重要的解决方案。请尝试改进您的答案。
    • 请为任何链接添加上下文,以便您的答案是独立的,这意味着答案需要在答案本身中。见"Provide context for links"。如果您可以在此处用自己的话回答问题并仅作为参考链接,那将是更可取的。请注意,此帖子可能会被删除。它是如何使用的?展示它如何回答问题。
    【解决方案2】:

    我可以复制 SimpleITK 图像无法在 Python 中从 itk 图像实例化。我没有找到绕过 PyBuffer 的方法,所以你可能不得不编译。以下是一个可能对您有所帮助的小错误的描述:https://pypi.python.org/pypi/MedPy/0.1.0

    【讨论】:

    • 感谢您的回答。我避免通过将所有关于 itk 的文件从名为 DeVIDE(ohloh.net/p/DeVIDE) 的软件复制到 python itk 目录来进行编译,因为 DeVIDE 中的 itk 具有“PyBuffer”并且 DeVIDE 本身很容易安装。我的解决方案听起来很奇怪,但确实有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 2021-08-28
    • 1970-01-01
    • 2018-10-08
    • 1970-01-01
    • 2010-09-06
    • 1970-01-01
    相关资源
    最近更新 更多