ITK/Examples/Cxx/Developer/ImageSource

From KitwarePublic
< ITK‎ | Examples
Revision as of 17:07, 5 February 2017 by Lorensen (talk | contribs)
Jump to navigationJump to search

Description

This example demonstrates how to make a filter which produces an image.

ITK Classes Demonstrated

ImageSource.cxx

<source lang="cpp">

  1. include "itkImage.h"
  2. include "itkImageFileWriter.h"
  1. include "MyImageSource.h"

int main(int, char*[]) {

 // Setup types
 typedef itk::Image<unsigned char, 2>   ImageType;
 typedef itk::MyImageSource<ImageType>  FilterType;
 // Create and the filter
 FilterType::Pointer filter = FilterType::New();
 filter->Update();
 filter->GetOutput()->Print(std::cout);
 typedef  itk::ImageFileWriter< ImageType  > WriterType;
 WriterType::Pointer writer = WriterType::New();
 writer->SetFileName("Test.jpg");
 writer->SetInput(filter->GetOutput());
 writer->Update();


 return EXIT_SUCCESS;

} </source>

MyImageSource.h

<source lang="cpp">

  1. ifndef __MyImageSource_h
  2. define __MyImageSource_h
  1. include "itkImageSource.h"
  1. include <set>

namespace itk { template< class TImage> class MyImageSource:public ImageSource< TImage > { public:

 /** Standard class typedefs. */
 typedef MyImageSource         Self;
 typedef ImageSource< TImage > Superclass;
 typedef SmartPointer< Self >  Pointer;
 /** Method for creation through the object factory. */
 itkNewMacro(Self);
 /** Run-time type information (and related methods). */
 itkTypeMacro(MyImageSource, ImageSource);

protected:

 MyImageSource(){}
 ~MyImageSource(){}
 /** Does the real work. */
 virtual void GenerateData();

private:

 MyImageSource(const Self &); //purposely not implemented
 void operator=(const Self &);  //purposely not implemented

}; } //namespace ITK

  1. ifndef ITK_MANUAL_INSTANTIATION
  2. include "MyImageSource.txx"
  3. endif
  1. endif // __MyImageSource_h

</source>

MyImageSource.txx

<source lang="cpp">

  1. ifndef __MyImageSource_txx
  2. define __MyImageSource_txx
  1. include "MyImageSource.h"

namespace itk {

template< class TOutputImage> void MyImageSource< TOutputImage>

GenerateData()

{

 typename TOutputImage::Pointer output = this->GetOutput();
 typename TOutputImage::RegionType region;
 typename TOutputImage::IndexType start;
 start[0] = 0;
 start[1] = 0;

 typename TOutputImage::SizeType size;
 size[0] = 200;
 size[1] = 300;

 region.SetSize(size);
 region.SetIndex(start);

 output->SetRegions(region);
 output->Allocate();

 itk::ImageRegionIterator<TOutputImage> imageIterator(output,output->GetLargestPossibleRegion());

 while(!imageIterator.IsAtEnd())
   {
   if(imageIterator.GetIndex()[0] == imageIterator.GetIndex()[1])
     {
     imageIterator.Set(255);
     }
   else
     {
     imageIterator.Set(0);
     }

   ++imageIterator;
   }

}

}// end namespace


  1. endif

</source>

Template:CMakeLists