Difference between revisions of "ITK/Examples/Morphology/FlatStructuringElement"

From KitwarePublic
< ITK‎ | Examples
Jump to navigationJump to search
(Actually use the input argument.)
(Deprecated content that is moved to sphinx)
 
(2 intermediate revisions by one other user not shown)
Line 1: Line 1:
<div class="floatcenter">[[File:ITK_Examples_Baseline_Morphology_TestFlatStructuringElement.png]]</div>
{{warning|1=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.}}
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==
<source lang="cpp">
#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;
}
</source>
 
==CMakeLists.txt==
<source lang="cmake">
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)
 
</source>

Latest revision as of 14:02, 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.