[ITK-users] [ITK] Overload GenerateOutputInformation

Gianna Nigro gianna.nigro at gmail.com
Mon May 5 09:09:11 EDT 2014


Thank you very much, Matt.
I would like to understand better how to do it in the correct way..
Maybe you could help me more easily if I write some code as example of what
I'm trying to do:

The main.cxx contains :

  std::string inputFilename = argv[1];
  std::string outputFilename = argv[2];

  typedef itk::Image< int, 4 > InputImageType; //I've got an Input Image
with all the four dimensions of int elements
  typedef itk::Image< double, 4 > OutputImageType; //my output image'
fourth dimension should be of elements of type double

  typedef itk::ImageFileReader<InputImageType> ReaderType;

  typedef  itk::ImageFileWriter<OutputImageType> WriterType;

  typedef itk::myFilter <InputImageType, OutputImageType> FilterType;

  ReaderType::Pointer reader = ReaderType::New();
  reader->SetFileName(inputFilename);

 try
    {
    reader->Update();
    }
  catch( itk::ExceptionObject & excp )
    {
    std::cerr << "Exception caught !" << std::endl;
    std::cerr << excp << std::endl;
    }

  FilterType::Pointer myFilterPointer = FilterType::New();
  myFilterPointer->SetInput(reader->GetOutput());

  try
    {
    myFilterPointer->Update();
    }
  catch( itk::ExceptionObject & excp )
    {
    std::cerr << "Exception caught !" << std::endl;
    std::cerr << excp << std::endl;
    }


  WriterType::Pointer writer = WriterType::New();
  writer->SetFileName(outputFilename);
  writer->SetInput(myFilterPointer->GetOutput());
   try
    {
    writer->Update();
    }
  catch( itk::ExceptionObject & excp )
    {
    std::cerr << "Exception caught !" << std::endl;
    std::cerr << excp << std::endl;
    }

return EXIT_SUCCESS;
}


the myFilter.h header files contains:

namespace itk
{

  template< class TInputImage, class TOutputImage>
  class myFilter:
  public ImageToImageFilter< TInputImage, TOutputImage >
  {

    public:

       /** Standard class typedefs. */
        typedef myFilter     Self;
      typedef ImageToImageFilter < TInputImage, TOutputImage > Superclass;
      typedef SmartPointer< Self >        Pointer;
    typedef SmartPointer< const Self >  ConstPointer;

    /** Method for creation through the object factory. */
      itkNewMacro(Self);

    /** Run-time type information (and related methods). */
      itkTypeMacro(myFilter, ImageToImageFilter);



     /* Typedef for images */
    typedef TInputImage                    InputImageType;
    typedef TOutputImage                   OutputImageType;
    typedef typename TInputImage::IndexType       InputIndexType;  //è lo
stesso per l'immagine in input e quella in output?
    typedef typename TOutputImage::IndexType      OutputIndexType;
    typedef typename OutputImageType::Pointer     OutputImagePointer;
      typedef typename InputImageType::ConstPointer InputImageConstPointer;
      typedef typename TInputImage::PixelType       InputPixelType;  // int
    typedef typename TOutputImage::PixelType      OutputPixelType; //double
      typedef typename TInputImage::SizeType        InputImageSize;
    typedef typename TOutputImage::SizeType       OutputImageSize;

      virtual void GenerateOutputInformation();


  protected:
      myFilter() {};
      virtual ~myFilter(){} ;

    void PrintSelf(std::ostream & os, Indent indent) const;

      void GenerateData(); //Method of the filter

  private:
      myFilter(const Self &); //purposely not implemented
      void operator=(const Self &);  //purposely not implemented
    //eventuali variabili:
    double max_uptake; //picco
    std::vector<int> x_t; //sarà il vettore contenente gli istanti di tempo
(se ho 13 frame avrà 13 istanti di tempo, va da 0 a 13.
    std::vector<float> parameters; //Conterrà i parametri semiquantitativi
  };
} //namespace ITK


#ifndef ITK_MANUAL_INSTANTIATION
#include "myFilter.hxx"
#endif



and in myFilter.hxx I have such a GenerateData method:

//GenerateData method
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20140505/62ebeab5/attachment.html>


More information about the Insight-users mailing list