|
|
Line 1: |
Line 1: |
| <div class="floatcenter">[[File:ITK_Examples_Baseline_EdgesAndGradients_TestBinaryContourImageFilter.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.}} |
| 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>
| |
| {{ITKVTKCMakeLists|{{SUBPAGENAME}}}}
| |