[ITK-users] Geodesic Shape Guidance in Python

Robert scorpiuni at gmail.com
Tue Apr 26 05:34:29 EDT 2016


Hello,

I tried to implement a segmentation algorithm with shape guidance in Python,
while following a few C++ examples.

I encountered 2 Problems:

This Code creates a C++ Vector( shapeModeImages) containing the Modes
obtained via PCA:

  std::vector<InternalImageType::Pointer> shapeModeImages( numberOfPCAModes
);

  itk::NumericSeriesFileNames::Pointer fileNamesCreator =
          itk::NumericSeriesFileNames::New();

  fileNamesCreator->SetStartIndex( 0 );
  fileNamesCreator->SetEndIndex( numberOfPCAModes - 1 );
  fileNamesCreator->SetSeriesFormat( argv[15] );
  const std::vector<std::string> & shapeModeFileNames =
          fileNamesCreator->GetFileNames();

  for (unsigned int k = 0; k < numberOfPCAModes; ++k )
    {
    ReaderType::Pointer shapeModeReader = ReaderType::New();
    shapeModeReader->SetFileName( shapeModeFileNames[k].c_str() );
    shapeModeReader->Update();
    shapeModeImages[k] = shapeModeReader->GetOutput();
    }

  shape->SetMeanImage( meanShapeReader->GetOutput() );
  shape->SetPrincipalComponentImages( shapeModeImages );

I tried to write this in Python :

shapeModeImages = []

fileNamesCreator = itk.NumericSeriesFileNames.New()
fileNamesCreator.SetStartIndex(0)
fileNamesCreator.SetEndIndex(numberOfPCAModes-1)
fileNamesCreator.SetSeriesFormat('CorpusCallosumMode')

shapeModelFileNames = fileNamesCreator.GetFileNames()

for k in range(0, numberOfPCAModes):
    shapeModeReader = ReaderType.New()
    shapeModeReader.SetFileName(shapeModelFileNames[k]+'%s.mha' %k)
    shapeModeReader.Update()
    shapeModeImages.append(shapeModeReader.GetOutput())

But now, when I call 
shape.SetPrincipalComponentImages(shapeModeImages)

I get the following error:
TypeError: in method
'itkPCAShapeSignedDistanceFunctionD2IF2_SetPrincipalComponentImages',
argument 2 of type 'std::vector< itkImageF2_Pointer,std::allocator<
itkImageF2_Pointer > >'

It seems like I can't use a list to pass the Images... Is there a workaround
available, or simply another structure?

Second thing ( I did not have a look into this yet):
How do I translate this to Python? I can't see a Solution here immediately,
but like I said, I did not look into this yet:

  ShapeFunctionType::ParametersType pcaStandardDeviations( numberOfPCAModes
);
  pcaStandardDeviations.Fill( 1.0 );


Thanks for any Input,

Robert



--
View this message in context: http://itk-insight-users.2283740.n2.nabble.com/Geodesic-Shape-Guidance-in-Python-tp7588780.html
Sent from the ITK Insight Users mailing list archive at Nabble.com.


More information about the Insight-users mailing list