ITK/Examples/Functions/GaussianBlurImageFunction

From KitwarePublic
< ITK‎ | Examples
Revision as of 19:44, 26 March 2011 by Abayiz (talk | contribs)
Jump to navigationJump to search

This example shows how to perform Gaussian blur image function on input image, and stores the output as a vtk file format.

GaussianBlurImageFunction.cxx

<source lang="cpp">

  1. if defined(_MSC_VER)
  2. pragma warning ( disable : 4786 )
  3. endif
  1. ifdef __BORLANDC__
  2. define ITK_LEAN_AND_MEAN
  3. endif
  1. include "itkImage.h"
  2. include "itkImageFileReader.h"
  3. include "itkImageFileWriter.h"
  4. include "itkGaussianBlurImageFunction.h"
  5. include "itkImageRegionIterator.h"

int main( int argc, char * argv[] ) {

 if( argc < 5 ) {
   std::cerr << "Usage: " << std::endl;
   std::cerr << argv[0] << "  inputImageFile  outputImageFile sigma maxKernelWidth" << std::endl;
   return EXIT_FAILURE;
 }
 typedef itk::Image< float, 2 >             ImageType;
 typedef itk::ImageFileReader< ImageType >  ReaderType;
 typedef itk::ImageRegionIterator< ImageType > IteratorType;
 typedef itk::ImageRegionConstIterator< ImageType > ConstIteratorType;
 ReaderType::Pointer reader = ReaderType::New();
 reader->SetFileName( argv[1] );
 reader->Update();
 const ImageType * inputImage = reader->GetOutput();
 ImageType::RegionType region = inputImage->GetBufferedRegion();
 ConstIteratorType it( inputImage, region );
 ImageType::Pointer output = ImageType::New();
 output->SetRegions( region );
 output->SetOrigin(  inputImage->GetOrigin()  );
 output->SetSpacing( inputImage->GetSpacing() );
 output->Allocate();
 IteratorType out( output, region );
 typedef itk::GaussianBlurImageFunction< ImageType > GFunctionType;
 GFunctionType::Pointer gaussianFunction = GFunctionType::New();
 gaussianFunction->SetInputImage( inputImage );
 GFunctionType::ErrorArrayType setError;
 setError.Fill( 0.01 );
 gaussianFunction->SetMaximumError( setError );
 gaussianFunction->SetSigma( atof( argv[3] ) );
 gaussianFunction->SetMaximumKernelWidth( atoi( argv[4] ) );
 it.GoToBegin();
 out.GoToBegin();

cmake_minimum_required(VERSION 2.6)

PROJECT(GaussianBlurImageFunction)

FIND_PACKAGE(ITK REQUIRED) INCLUDE(${ITK_USE_FILE})

ADD_EXECUTABLE(GaussianBlurImageFunction GaussianBlurImageFunction.cxx) TARGET_LINK_LIBRARIES(GaussianBlurImageFunction ITKCommon ITKBasicFilters ITKIO

${ITK_LILBRARIES})
 while( !it.IsAtEnd() )
   {
   out.Set( gaussianFunction->EvaluateAtIndex(it.GetIndex() ) );
   ++it;
   ++out;
   }
 typedef itk::ImageFileWriter < ImageType > WriterType;
 WriterType::Pointer writer = WriterType::New();
 writer->SetFileName(argv[2]);
 writer->SetInput(output);
 writer->Update();
 return EXIT_SUCCESS;

} </source>

CMakeLists.txt

<syntaxhighlight lang="cmake">

cmake_minimum_required(VERSION 2.6)

PROJECT(GaussianBlurImageFunction)

FIND_PACKAGE(ITK REQUIRED) INCLUDE(${ITK_USE_FILE})

ADD_EXECUTABLE(GaussianBlurImageFunction GaussianBlurImageFunction.cxx) TARGET_LINK_LIBRARIES(GaussianBlurImageFunction ITKCommon ITKBasicFilters ITKIO

${ITK_LILBRARIES})

</syntaxhighlight>