ITK/Examples/ImageProcessing/RegionalMaximaImageFilter: Difference between revisions

From KitwarePublic
< ITK‎ | Examples
Jump to navigationJump to search
(CreateImage must be static to avoid duplicate symbols in test driver.)
(Deprecated content that is moved to sphinx)
 
(2 intermediate revisions by one other user not shown)
Line 1: Line 1:
[[File:ITK_Examples_ImageProcessing_RegionalMaximaImageFilter_Input.png‎]]
{{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.
[[File:ITK_Examples_ImageProcessing_RegionalMaximaImageFilter_Output.png‎]]
}}
 
==RegionalMaximaImageFilter.cxx==
<source lang="cpp">
#include "itkImage.h"
#include "itkImageFileWriter.h"
#include "itkRegionalMaximaImageFilter.h"
 
 
typedef itk::Image<unsigned char, 2>  ImageType;
 
static void CreateImage(ImageType::Pointer image);
 
int main(int, char *[])
{
  ImageType::Pointer image = ImageType::New();
  CreateImage(image);
 
  typedef itk::RegionalMaximaImageFilter <ImageType, ImageType >
    RegionalMaximaImageFilter;
 
  RegionalMaximaImageFilter::Pointer filter
    = RegionalMaximaImageFilter::New ();
  filter->SetInput(image);
 
  typedef itk::ImageFileWriter< ImageType > WriterType;
  WriterType::Pointer writer = WriterType::New();
 
  writer->SetFileName("intensityblobs.png");
  writer->SetInput( image );
  writer->Update();
 
  writer->SetFileName("maximal.png");
  writer->SetInput( filter->GetOutput() );
  writer->Update();
 
  return EXIT_SUCCESS;
}
 
void CreateImage(ImageType::Pointer image)
{
  // Create an image with 2 connected components
  ImageType::RegionType region;
  ImageType::IndexType start;
  start[0] = 0;
  start[1] = 0;
 
  ImageType::SizeType size;
  unsigned int NumRows = 200;
  unsigned int NumCols = 300;
  size[0] = NumCols;
  size[1] = NumRows;
 
  region.SetSize(size);
  region.SetIndex(start);
 
  image->SetRegions(region);
  image->Allocate();
 
  // Make two intensity blobs
  for(unsigned int r = 0; r < NumRows; r++)
    {
    for(unsigned int c = 0; c < NumCols; c++)
      {
      ImageType::IndexType pixelIndex;
      pixelIndex[0] = c;
      pixelIndex[1] = r;
 
      double c1 = c - 100.0;
      double c2 = c - 200.0;
 
      double rr = r - 100.0;
 
      // purposely use 270,257 since it is > 255
      double v1 = 270.0 - vcl_sqrt( rr*rr + c1*c1 );
      double v2 = 257.0 - vcl_sqrt( rr*rr + c2*c2 );
 
      double maxv = v1;
      if( maxv < v2 ) maxv = v2;
 
      double val = maxv;
 
      if( val <  0.0 ) val = 0.0;
      if( val > 255.0 ) val = 255.0;
 
      image->SetPixel(pixelIndex, val);
      }
    }
}
</source>
 
==CMakeLists.txt==
<source lang="cmake">
cmake_minimum_required(VERSION 2.6)
 
PROJECT(RegionalMaximaImageFilter)
 
FIND_PACKAGE(ITK REQUIRED)
INCLUDE(${ITK_USE_FILE})
 
ADD_EXECUTABLE(RegionalMaximaImageFilter RegionalMaximaImageFilter.cxx)
TARGET_LINK_LIBRARIES(RegionalMaximaImageFilter
ITKBasicFilters ITKCommon ITKIO)
</source>

Latest revision as of 15:10, 5 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.