ITK/Examples/EdgesAndGradients/GradientRecursiveGaussianImageFilter

From KitwarePublic

Jump to: navigation, search

This example demonstrates how to use the GradientRecursiveGaussianImageFilter which computes the gradient of an image by convolution with the first derivative of a Gaussian. The filter is implemented using the RecursiveGaussianImageFilter.

GradientRecursiveGaussianImageFilter.cxx

#include "itkImageFileWriter.h"
#include "itkImageFileReader.h"
#include "itkGradientRecursiveGaussianImageFilter.h"
#include "itkImage.h"
 
int main(int argc, char* argv[])
{  
   // Verify number of parameters in command line
  if( argc < 3 )
    {
    std::cerr << "Usage: " << std::endl;
    std::cerr << argv[0] << " inputImageFile  outputVectorImageFile " << std::endl;
    return EXIT_FAILURE;
    }
 
  //typedef
  typedef signed short          InputPixelType;
  typedef float                 ComponentType;
  const   unsigned int          Dimension = 2;
 
  typedef itk::CovariantVector< ComponentType, 
								Dimension  >      OutputPixelType;
 
  typedef itk::Image< InputPixelType,  Dimension >    InputImageType;
  typedef itk::Image< OutputPixelType, Dimension >    OutputImageType;
 
  typedef itk::ImageFileReader< InputImageType  >  ReaderType;
  typedef itk::ImageFileWriter< OutputImageType >  WriterType;
 
  //Filter class is instantiated
  typedef itk::GradientRecursiveGaussianImageFilter<InputImageType, OutputImageType> FilterType;
 
  FilterType::Pointer filter = FilterType::New();
 
  //sigma is specified in millimeters
  filter->SetSigma( 1.5 );  
 
  //create the reader and writer 
  ReaderType::Pointer reader = ReaderType::New();
  WriterType::Pointer writer = WriterType::New();
 
  //recover file names from command line arguments
  const char * inputFilename  = argv[1];
  const char * outputFilename = argv[2];		//e.g. *.mhd (can be displayed in Paraview)
 
  reader->SetFileName( inputFilename  );
  writer->SetFileName(outputFilename);
 
  //  processing pipeline:
  filter->SetInput( reader->GetOutput() );
  writer->SetInput( filter->GetOutput() );
 
  try 
    { 
    //execute the pipeline
    writer->Update(); 
    } 
  catch( itk::ExceptionObject & err ) 
    { 
    std::cerr << "ExceptionObject caught !" << std::endl; 
    std::cerr << err << std::endl; 
    return EXIT_FAILURE;
    } 
 
  return EXIT_SUCCESS;
}

CMakeLists.txt

cmake_minimum_required(VERSION 2.8)
 
project(GradientRecursiveGaussianImageFilter)
 
find_package(ITK REQUIRED)
include(${ITK_USE_FILE})
 
add_executable(GradientRecursiveGaussianImageFilter GradientRecursiveGaussianImageFilter.cxx)
 
if( "${ITK_VERSION_MAJOR}" LESS 4 )
  target_link_libraries(GradientRecursiveGaussianImageFilter ITKReview ${ITK_LIBRARIES})
else( "${ITK_VERSION_MAJOR}" LESS 4 )
  target_link_libraries(GradientRecursiveGaussianImageFilter ${ITK_LIBRARIES})
endif( "${ITK_VERSION_MAJOR}" LESS 4 )
Personal tools