Compare Two Images and Set Output Pixel to Max#
Synopsis#
Pixel wise compare two input images and set the output pixel to their max.
Results#
Note
No output is printed, this example simply displays functionality.
Code#
C++#
#include "itkImage.h"
#include "itkMaximumImageFilter.h"
#include "itkImageRegionIterator.h"
using ImageType = itk::Image<unsigned char, 2>;
static void
CreateImage1(ImageType * image);
static void
CreateImage2(ImageType * image);
int
main()
{
  auto image1 = ImageType::New();
  CreateImage1(image1);
  auto image2 = ImageType::New();
  CreateImage2(image2);
  using MaximumImageFilterType = itk::MaximumImageFilter<ImageType>;
  auto maximumImageFilter = MaximumImageFilterType::New();
  maximumImageFilter->SetInput(0, image1);
  maximumImageFilter->SetInput(1, image2);
  maximumImageFilter->Update();
  return EXIT_SUCCESS;
}
void
CreateImage1(ImageType * image)
{
  ImageType::IndexType start;
  start.Fill(0);
  ImageType::SizeType size;
  size.Fill(100);
  ImageType::RegionType region;
  region.SetSize(size);
  region.SetIndex(start);
  image->SetRegions(region);
  image->Allocate();
  itk::ImageRegionIterator<ImageType> imageIterator(image, region);
  while (!imageIterator.IsAtEnd())
  {
    if (imageIterator.GetIndex()[0] < 30)
    {
      imageIterator.Set(255);
    }
    else
    {
      imageIterator.Set(0);
    }
    ++imageIterator;
  }
}
void
CreateImage2(ImageType * image)
{
  ImageType::IndexType start;
  start.Fill(0);
  ImageType::SizeType size;
  size.Fill(100);
  ImageType::RegionType region;
  region.SetSize(size);
  region.SetIndex(start);
  image->SetRegions(region);
  image->Allocate();
  itk::ImageRegionIterator<ImageType> imageIterator(image, region);
  while (!imageIterator.IsAtEnd())
  {
    if (imageIterator.GetIndex()[0] > 70)
    {
      imageIterator.Set(255);
    }
    else
    {
      imageIterator.Set(0);
    }
    ++imageIterator;
  }
}
Classes demonstrated#
- 
template<typename TInputImage1, typename TInputImage2 = TInputImage1, typename TOutputImage = TInputImage1>
 class MaximumImageFilter : public itk::BinaryGeneratorImageFilter<TInputImage1, TInputImage2, TOutputImage>
- Implements a pixel-wise operator Max(a,b) between two images. - The pixel values of the output image are the maximum between the corresponding pixels of the two input images. - This class is templated over the types of the two input images and the type of the output image. Numeric conversions (castings) are done by the C++ defaults. - ITK Sphinx Examples:
 
