[Insight-users] CompositeFilterExample and modification

Ignacio García Fenoll igfenoll at gmail.com
Wed Apr 2 07:49:48 EDT 2008


Good after-noon itk users!!

I am trying to use CompositeFilterExample (the compilation has been
satisfactory) but the output image is not well built. Have anybody had the
same problem?

By the way, I have constructed another filter using as base
CompositeFilterExample. I want that my filter get an image, reescale its
intensity and, after that, make an automatic adaptation of the histogram. In
the same way, I have obtained an executable, but it doesn't work. What is
the problem with that?

This is my code.

#if defined(_MSC_VER)
#pragma warning ( disable : 4786 )
#endif

#ifdef __BORLANDC__
#define ITK_LEAN_AND_MEAN
#endif

#include "itkImageToImageFilter.h"


#include "itkRescaleIntensityImageFilter.h"
#include "itkAdaptiveHistogramEqualizationImageFilter.h"

#include "itkNumericTraits.h"

namespace itk {

template <class TImageType>
class ITK_EXPORT CompositeExampleImageFilter :
    public ImageToImageFilter<TImageType, TImageType>
{
public:

  typedef CompositeExampleImageFilter               Self;
  typedef ImageToImageFilter<TImageType,TImageType> Superclass;
  typedef SmartPointer<Self>                        Pointer;
  typedef SmartPointer<const Self>                  ConstPointer;

  itkNewMacro(Self);

  itkTypeMacro(CompositeExampleImageFilter, ImageToImageFilter);



  typedef typename TImageType::PixelType PixelType;



protected:

  CompositeExampleImageFilter();


protected:

  typedef RescaleIntensityImageFilter< TImageType, TImageType >
RescalerType;
  typedef AdaptiveHistogramEqualizationImageFilter< TImageType >
EqualizerType;


    void GenerateData();

private:

  CompositeExampleImageFilter(Self&);   // intentionally not implemented
  void operator=(const Self&);          // intentionally not implemented


  typename RescalerType::Pointer     m_RescaleFilter;
  typename EqualizerType::Pointer    m_EqualizeFilter;


};

}

namespace itk
{

//  Software Guide : BeginCodeSnippet
template <class TImageType>
CompositeExampleImageFilter<TImageType>
::CompositeExampleImageFilter()
{

  m_RescaleFilter = RescalerType::New();
  m_EqualizeFilter = EqualizerType::New();


m_RescaleFilter->SetOutputMinimum(NumericTraits<PixelType>::NonpositiveMin());
  m_RescaleFilter->SetOutputMaximum(NumericTraits<PixelType>::max());

  m_EqualizeFilter->SetInput( m_RescaleFilter->GetOutput() );


}

template <class TImageType>
void
CompositeExampleImageFilter<TImageType>::
GenerateData()
{

  m_RescaleFilter->SetInput( this->GetInput() );
  m_RescaleFilter->Update();
  m_EqualizeFilter->SetInput( this->GetOutput() );
  m_EqualizeFilter->Update();

}

}


#include "itkImageFileReader.h"
#include "itkImageFileWriter.h"

int main( int argc, char* argv[] )
{
  if( argc < 3 )
    {
    std::cerr << "Usage: " << std::endl;
    std::cerr << argv[0] << "  inputImageFile  outputImageFile" <<
std::endl;
    return EXIT_FAILURE;
    }

  typedef itk::Image<short, 2>                        ImageType;
  typedef itk::ImageFileReader<ImageType>             ReaderType;
  typedef itk::ImageFileWriter<ImageType>             WriterType;

  typedef itk::CompositeExampleImageFilter<ImageType> FilterType;

  ReaderType::Pointer reader = ReaderType::New();
  WriterType::Pointer writer = WriterType::New();
  FilterType::Pointer filter = FilterType::New();

  reader->SetFileName( argv[1] );
  filter->SetInput( reader->GetOutput() );
  writer->SetInput( filter->GetOutput() );
  writer->SetFileName( argv[2] );

  try
    {
    writer->Update();
    }
  catch ( itk::ExceptionObject e )
    {
    std::cerr << "Error: " << e << std::endl;
    }

  return 0;
}


Thank you very much!!!

-- 
Ignacio García Fenoll
Grupo de Imágenes Médicas
Departamento de Teoría de la Señal y Comunicaciones
Universidad de Sevilla
e-mail: igfenoll at gmail.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20080402/ba1b2373/attachment.htm>


More information about the Insight-users mailing list