ITK/Examples/EdgesAndGradients/BinaryContourImageFilter

From KitwarePublic
< ITK‎ | Examples
Revision as of 01:18, 12 December 2010 by Lorensen (talk | contribs) (Use QuickView)
Jump to navigationJump to search

This example demonstrates how to find the edges of binary blobs in an image. An example image with two solid white rectangles is programmatically created. This original image and the blob outlines are displayed.

BinaryContourImageFilter.cxx

<source lang="cpp">

  1. include "itkImage.h"
  2. include "itkImageFileWriter.h"
  3. include "itkBinaryContourImageFilter.h"
  1. include "QuickView.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::BinaryContourImageFilter <ImageType, ImageType >
   binaryContourImageFilterType;
 binaryContourImageFilterType::Pointer binaryContourFilter
   = binaryContourImageFilterType::New ();
 binaryContourFilter->SetInput(image);
 QuickView viewer;
 viewer.AddImage<ImageType>(image);
 viewer.AddImage<ImageType>(binaryContourFilter->GetOutput());
 viewer.Visualize();
 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] = NumRows;
 size[1] = NumCols;
 region.SetSize(size);
 region.SetIndex(start);
 image->SetRegions(region);
 image->Allocate();
 // Make a square
 for(unsigned int r = 20; r < 80; r++)
   {
   for(unsigned int c = 30; c < 100; c++)
     {
     ImageType::IndexType pixelIndex;
     pixelIndex[0] = r;
     pixelIndex[1] = c;
     image->SetPixel(pixelIndex, 255);
     }
   }
 // Make another square
 for(unsigned int r = 100; r < 130; r++)
   {
   for(unsigned int c = 115; c < 160; c++)
     {
     ImageType::IndexType pixelIndex;
     pixelIndex[0] = r;
     pixelIndex[1] = c;
     image->SetPixel(pixelIndex, 255);
     }
   }

} </source>

CMakeLists.txt

<source lang="cmake"> cmake_minimum_required(VERSION 2.6)

PROJECT(BinaryContourImageFilter)

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(BinaryContourImageFilter BinaryContourImageFilter.cxx) TARGET_LINK_LIBRARIES(BinaryContourImageFilter vtkHybrid ITKBasicFilters ITKCommon ITKIO) </source>