ITK/Examples/SpatialObjects/SpatialObjectToImageFilter: Difference between revisions

From KitwarePublic
< ITK‎ | Examples
Jump to navigationJump to search
(Created page with "==SpatialObjectToImageFilter.cxx== <source lang="cpp"> #include "itkSpatialObjectToImageFilter.h" #include "itkEllipseSpatialObject.h" #include "itkImageFileWriter.h" int main( ...")
 
(Deprecated content that is moved to sphinx)
 
(2 intermediate revisions by one other user not shown)
Line 1: Line 1:
==SpatialObjectToImageFilter.cxx==
{{warning|1=The media wiki content on this page is no longer maintainedThe examples presented on the https://itk.org/Wiki/*  pages likely require ITK version 4.13 or earlier releases.   In many cases, the examples on this page no longer conform to the best practices for modern ITK versions.}}
<source lang="cpp">
#include "itkSpatialObjectToImageFilter.h"
#include "itkEllipseSpatialObject.h"
#include "itkImageFileWriter.h"
 
int main( int argc, char *argv[] )
{
  if( argc != 2 )
    {
    std::cerr << "Usage: " << argv[0] << " outputimagefile " << std::endl;
    return EXIT_FAILURE;
    }
 
  typedef unsigned char PixelType;
  const unsigned int Dimension = 2;
 
  typedef itk::Image< PixelType, Dimension >      ImageType;
 
  typedef itk::EllipseSpatialObject< Dimension >  EllipseType;
 
  typedef itk::SpatialObjectToImageFilter<
    EllipseType, ImageType >  SpatialObjectToImageFilterType;
 
  SpatialObjectToImageFilterType::Pointer imageFilter =
    SpatialObjectToImageFilterType::New();
 
  //  The SpatialObjectToImageFilter requires that the user defines the grid
  //  parameters of the output image. This includes the number of pixels along
  // each dimension, the pixel spacing, image direction and
 
  ImageType::SizeType size;
  size[ 0 ] =  50;
  size[ 1 ] =  50;
 
  imageFilter->SetSize( size );
 
  ImageType::SpacingType spacing;
  spacing[0] =  100.0 / size[0];
  spacing[1] =  100.0 / size[1];
 
  imageFilter->SetSpacing( spacing );
 
  EllipseType::Pointer ellipse    = EllipseType::New();
  EllipseType::ArrayType radiusArray;
  radiusArray[0] = 10;
  radiusArray[1] = 20;
  //ellipse->SetRadius(  size[0] * 0.2 * spacing[0] );
  ellipse->SetRadius(radiusArray);
 
  // Position the ellipse
 
  typedef EllipseType::TransformType                TransformType;
 
  TransformType::Pointer transform = TransformType::New();
 
  transform->SetIdentity();
 
  TransformType::OutputVectorType  translation;
  TransformType::CenterType        center;
 
  translation[ 0 ] =  size[0] * spacing[0] / 2.0;
  translation[ 1 ] = size[1] * spacing[1] / 4.0;
   transform->Translate( translation, false );
 
  ellipse->SetObjectToParentTransform( transform );
 
  imageFilter->SetInput(ellipse);
 
  ellipse->SetDefaultInsideValue(255);
 
  ellipse->SetDefaultOutsideValue(0);
 
  imageFilter->SetUseObjectValue( true );
 
  imageFilter->SetOutsideValue( 0 );
 
  typedef itk::ImageFileWriter< ImageType >    WriterType;
  WriterType::Pointer writer = WriterType::New();
 
  writer->SetFileName( argv[1] );
  writer->SetInput( imageFilter->GetOutput() );
 
  try
    {
    imageFilter->Update();
    writer->Update();
    }
  catch( itk::ExceptionObject & excp )
    {
    std::cerr << excp << std::endl;
    return EXIT_FAILURE;
    }
 
  return EXIT_SUCCESS;
}
 
</source>
 
==CMakeLists.txt==
<source lang="cmake">
cmake_minimum_required(VERSION 2.6)
 
PROJECT(SpatialObjectToImageFilter)
 
FIND_PACKAGE(ITK REQUIRED)
INCLUDE(${ITK_USE_FILE})
 
ADD_EXECUTABLE(SpatialObjectToImageFilter SpatialObjectToImageFilter.cxx)
TARGET_LINK_LIBRARIES(SpatialObjectToImageFilter ITKIO)
 
</source>

Latest revision as of 22:19, 6 June 2019

Warning: The media wiki content on this page is no longer maintained. The examples presented on the https://itk.org/Wiki/* pages likely require ITK version 4.13 or earlier releases. In many cases, the examples on this page no longer conform to the best practices for modern ITK versions.