ITK/Examples/ImageProcessing/MaskImageFilter: Difference between revisions

From KitwarePublic
< ITK‎ | Examples
Jump to navigationJump to search
(Deprecated content that is moved to sphinx)
 
(3 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<div class="floatcenter">[[File:ITK_Examples_Baseline_ImageProcessing_TestMaskImageFilter.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.
This example shows how to mask an image with a binary mask. Pixels in the original image where the mask is non zero will remain the same. Pixels in the original image where the mask is equal to zero will be set to the "outside" value.
}}
 
The output shows the input image, the mask, and the masked output image.
 
==MaskImageFilter.cxx==
<source lang="cpp">
#include "itkConfigure.h"
 
#if ( ITK_VERSION_MAJOR < 4  ) //These are all defaults in ITKv4
// Not supported in ITKv3.
int main(int argc, char *argv[])
{
  return 0;
}
#else
#include "itkImage.h"
#include "itkImageFileReader.h"
#include "itkMaskImageFilter.h"
 
#include "QuickView.h"
 
typedef itk::Image<unsigned char, 2> ImageType;
 
void CreateHalfMask(ImageType::Pointer image, ImageType::Pointer &mask);
 
int main(int argc, char *argv[])
{
  if(argc < 2)
    {
    std::cerr << "Usage: " << argv[0] << " filename" << std::endl;
    return EXIT_FAILURE;
    }
 
  typedef itk::ImageFileReader<ImageType> ReaderType;
  ReaderType::Pointer reader = ReaderType::New();
  reader->SetFileName(argv[1]);
  reader->Update();
 
  ImageType::Pointer mask = ImageType::New();
  CreateHalfMask(reader->GetOutput(), mask);
 
  typedef itk::MaskImageFilter< ImageType, ImageType > MaskFilterType;
  MaskFilterType::Pointer maskFilter = MaskFilterType::New();
  maskFilter->SetInput(reader->GetOutput());
  maskFilter->SetMaskImage(mask);
  mask->Print(std::cout);
  QuickView viewer;
  viewer.AddImage(
    reader->GetOutput(),true,
    itksys::SystemTools::GetFilenameName(argv[1])); 
 
  std::stringstream desc;
  desc << "Mask";
  viewer.AddImage(
    mask.GetPointer(),
    true,
    desc.str()); 
 
  std::stringstream desc2;
  desc2 << "MaskFilter";
  viewer.AddImage(
    maskFilter->GetOutput(),
    true,
    desc2.str()); 
 
   viewer.Visualize();
 
  return EXIT_SUCCESS;
}
 
 
void CreateHalfMask(ImageType::Pointer image, ImageType::Pointer &mask)
{
  ImageType::RegionType region = image->GetLargestPossibleRegion();
 
  mask->SetRegions(region);
  mask->Allocate();
 
  ImageType::SizeType regionSize = region.GetSize();
 
  itk::ImageRegionIterator<ImageType> imageIterator(mask,region);
 
  // Make the left half of the mask white and the right half black
  while(!imageIterator.IsAtEnd())
  {
    if(imageIterator.GetIndex()[0] > regionSize[0] / 2)
        {
        imageIterator.Set(0);
        }
      else
        {
        imageIterator.Set(255);
        }
 
    ++imageIterator;
  }
 
}
#endif
</source>
 
 
{{ITKVTKCMakeLists|MaskImageFilter|}}
</source>

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