ITK/Examples/Morphology/FlatStructuringElement

From KitwarePublic
< ITK‎ | Examples
Revision as of 07:56, 19 October 2012 by Daviddoria (talk | contribs) (Actually use the input argument.)
Jump to navigationJump to search
ITK Examples Baseline Morphology TestFlatStructuringElement.png

Create a structuring element (kernel) that can be used for any of the morphology filters.

Pixel values matching the erode value are considered the "foreground" and all other pixels are "background". In this example, we set 255 (white) to the foreground value. We see in the resulting image (right) that the white value is eroded - that is, the white region becomes smaller (and hence the black region becomes larger).

FlatStructuringElement.cxx

#include "itkImageFileReader.h"
#include "itkFlatStructuringElement.h"
#include "itkBinaryErodeImageFilter.h"

#include "QuickView.h"

int main(int argc, char *argv[])
{
  if(argc < 2)
    {
    std::cerr << argv[0] << " InputImageFile [radius]" << std::endl;
    return EXIT_FAILURE;
    }

  unsigned int radius = 2;
  if (argc > 2)
    {
    radius = atoi(argv[2]);
    }

  typedef itk::Image<unsigned char, 2>    ImageType;
  typedef itk::ImageFileReader<ImageType> ReaderType;
  ReaderType::Pointer reader = ReaderType::New();
  reader->SetFileName(argv[1]);

  typedef itk::FlatStructuringElement<2> StructuringElementType;
  StructuringElementType::RadiusType elementRadius;
  elementRadius.Fill(radius);

  StructuringElementType structuringElement = StructuringElementType::Box(elementRadius);

  typedef itk::BinaryErodeImageFilter <ImageType, ImageType, StructuringElementType>
    BinaryErodeImageFilterType;

  BinaryErodeImageFilterType::Pointer erodeFilter
    = BinaryErodeImageFilterType::New();
  erodeFilter->SetInput(reader->GetOutput());
  erodeFilter->SetKernel(structuringElement);
  erodeFilter->SetErodeValue(255);

  QuickView viewer;
  viewer.AddImage(reader->GetOutput());
  viewer.AddImage(erodeFilter->GetOutput());
  viewer.Visualize();

  return EXIT_SUCCESS;
}

CMakeLists.txt

cmake_minimum_required(VERSION 2.6)

PROJECT(FlatStructuringElement)

include_directories(/home/doriad/src/ITK/Wrapping/WrapITK/ExternalProjects/ItkVtkGlue/src/)

FIND_PACKAGE(VTK REQUIRED)
INCLUDE(${VTK_USE_FILE})

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

ADD_EXECUTABLE(FlatStructuringElement FlatStructuringElement.cxx)
TARGET_LINK_LIBRARIES(FlatStructuringElement
vtkHybrid
ITKBasicFilters ITKCommon ITKIO)