ITK/Examples/EdgesAndGradients/BinaryContourImageFilter: Difference between revisions
Daviddoria (talk | contribs) mNo edit summary |
(Use QuickView) |
||
Line 6: | Line 6: | ||
#include "itkImageFileWriter.h" | #include "itkImageFileWriter.h" | ||
#include "itkBinaryContourImageFilter.h" | #include "itkBinaryContourImageFilter.h" | ||
#include " | #include "QuickView.h" | ||
typedef itk::Image<unsigned char, 2> ImageType; | typedef itk::Image<unsigned char, 2> ImageType; | ||
Line 32: | Line 24: | ||
= binaryContourImageFilterType::New (); | = binaryContourImageFilterType::New (); | ||
binaryContourFilter->SetInput(image); | binaryContourFilter->SetInput(image); | ||
QuickView viewer; | |||
viewer.AddImage<ImageType>(image); | |||
viewer.AddImage<ImageType>(binaryContourFilter->GetOutput()); | |||
viewer.Visualize(); | |||
return EXIT_SUCCESS; | return EXIT_SUCCESS; |
Revision as of 01:18, 12 December 2010
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">
- include "itkImage.h"
- include "itkImageFileWriter.h"
- include "itkBinaryContourImageFilter.h"
- 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>