2014-01-27 395 views
2

我知道如何在C++中實現itk圖像和SimpleITK圖像之間的轉換,這是SimpleITK(Examples/ITKIntegration.cxx)中的一個示例。如何在Python中實現itk圖像和SimpleITK圖像之間的轉換?

// 
    // 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)」,我得到一個錯誤「這個= _SimpleITK.new_Image(*參數) NotImplementedError:錯誤數量或類型的重載函數'new_Image'「的參數。而在Python中,不可能像C++中的「dynamic_cast」那樣轉換類型。

有一種可能的解決方案,它使用PyBuffer將itkImage轉換爲numpy數組,然後使用SimpleITK將數組最終轉換爲SimpleITK圖像。但是我無法構建itkPyBuffer。我認爲這種方法不是直接解決這個問題。

你能幫我把C++代碼轉換成可用的Python代碼嗎?謝謝。

回答

0

我可以複製一個SimpleITK圖像無法在Python中從itk圖像實例化。我沒有找到解決PyBuffer的方法,所以你可能需要編譯。這裏有一個關於可能幫助你的小錯誤的描述:https://pypi.python.org/pypi/MedPy/0.1.0

+0

謝謝你的回答。我已經避免通過將名爲DeVIDE(http://www.ohloh.net/p/DeVIDE)的所有關於itk的文件複製到python itk目錄中,因爲它在DeVIDE中具有「PyBuffer」並且DeVIDE本身就是易於安裝。我的解決方案聽起來很奇怪,但它工作。 – ghk