ITK/Examples/Functions/GaussianBlurImageFunction: Difference between revisions
Daviddoria (talk | contribs) |
|
(No difference)
|
Revision as of 20:00, 26 March 2011
This example shows how to perform Gaussian blur image function on input image, and saves the output as a float or double image type.
GaussianBlurImageFunction.cxx
<source lang="cpp">
- if defined(_MSC_VER)
- pragma warning ( disable : 4786 )
- endif
- ifdef __BORLANDC__
- define ITK_LEAN_AND_MEAN
- endif
- include "itkImage.h"
- include "itkImageFileReader.h"
- include "itkImageFileWriter.h"
- include "itkGaussianBlurImageFunction.h"
- 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>