Difference between revisions of "ITK/Examples/ImageProcessing/ConnectedComponentImageFilter"

From KitwarePublic
< ITK‎ | Examples
Jump to navigationJump to search
(Template CreateImage, use image internal typedefs, optionally accept input argument.)
(Deprecated content that is moved to sphinx)
 
(3 intermediate revisions by one other user not shown)
Line 1: Line 1:
<div class="floatcenter">[[File:ITK_Examples_Baseline_ImageProcessing_TestConnectedComponentImageFilter.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 releasesIn many cases, the examples on this page no longer conform to the best practices for modern ITK versions.}}
==ConnectedComponentImageFilter.cxx==
<source lang="cpp">
#include "itkImage.h"
#include "itkImageFileReader.h"
#include "itkConnectedComponentImageFilter.h"
#include "itkRescaleIntensityImageFilter.h"
 
#include "QuickView.h"
template <typename TImage>
static void CreateImage(TImage* const image);
 
int main( int argc, char *argv[])
{
  typedef itk::Image<unsigned char, 2>  ImageType;
 
  ImageType::Pointer image;
 
  if(argc < 2)
    {
    image = ImageType::New();
    CreateImage(image.GetPointer());
    }
  else
    {
    std::string fileName = argv[1];
    typedef itk::ImageFileReader<ImageType> ReaderType;
    ReaderType::Pointer reader = ReaderType::New();
    reader->SetFileName(fileName);
    reader->Update();
 
    image = reader->GetOutput();
    }
 
  typedef itk::ConnectedComponentImageFilter <ImageType, ImageType >
    ConnectedComponentImageFilterType;
 
  ConnectedComponentImageFilterType::Pointer labelFilter
    = ConnectedComponentImageFilterType::New ();
  labelFilter->SetInput(image);
  labelFilter->Update();
 
  typedef itk::RescaleIntensityImageFilter< ImageType, ImageType > RescaleFilterType;
  RescaleFilterType::Pointer rescaleFilter = RescaleFilterType::New();
  rescaleFilter->SetOutputMinimum(0);
  rescaleFilter->SetOutputMaximum(255);
  rescaleFilter->SetInput(labelFilter->GetOutput());
 
  QuickView viewer;
  viewer.AddImage<ImageType>( image, false );  
  viewer.AddImage<ImageType>( rescaleFilter->GetOutput(), false ); 
  viewer.Visualize();
 
  return EXIT_SUCCESS;
}
 
template <typename TImage>
void CreateImage(TImage* const image)
{
  // Create an image with 2 connected components
  typename TImage::IndexType start = {{0,0}};
  start[0] = 0;
  start[1] = 0;
 
  typename TImage::SizeType size;
  unsigned int NumRows = 200;
   unsigned int NumCols = 300;
  size[0] = NumRows;
  size[1] = NumCols;
 
  typename TImage::RegionType region(start, size);
 
  image->SetRegions(region);
  image->Allocate();
 
  // Make a square
  for(typename TImage::IndexValueType r = 20; r < 80; r++)
    {
    for(typename TImage::IndexValueType c = 30; c < 100; c++)
      {
      typename TImage::IndexType pixelIndex = {{r,c}};
 
      image->SetPixel(pixelIndex, 255);
      }
    }
 
  // Make another square
  for(typename TImage::IndexValueType r = 100; r < 130; r++)
    {
    for(typename TImage::IndexValueType c = 115; c < 160; c++)
      {
      typename TImage::IndexType pixelIndex = {{r,c}};
 
      image->SetPixel(pixelIndex, 255);
      }
    }
}
</source>
 
{{ITKVTKCMakeLists|ConnectedComponentImageFilter|}}

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