Multiply Two Images¶
Synopsis¶
Multiply two images
Results¶
![Input image 1](../../../../_images/Gourds24.png)
Input image 1¶
![Input image 2](../../../../_images/mask2.png)
Input image 2¶
![Output image](../../../../_images/OutputMultiply.png)
Output image¶
Code¶
C++¶
#include "itkImageFileReader.h"
#include "itkImageFileWriter.h"
#include "itkMultiplyImageFilter.h"
int
main(int argc, char * argv[])
{
if (argc != 4)
{
std::cerr << "Usage: " << std::endl;
std::cerr << argv[0];
std::cerr << " <InputFileName 1> <InputFileName 2> <OutputFileName>";
std::cerr << std::endl;
return EXIT_FAILURE;
}
const char * inputFileName1 = argv[1];
const char * inputFileName2 = argv[2];
const char * outputFileName = argv[3];
constexpr unsigned int Dimension = 2;
using InputPixelType = unsigned char;
using InputImageType = itk::Image<InputPixelType, Dimension>;
using ReaderType = itk::ImageFileReader<InputImageType>;
ReaderType::Pointer reader1 = ReaderType::New();
reader1->SetFileName(inputFileName1);
ReaderType::Pointer reader2 = ReaderType::New();
reader2->SetFileName(inputFileName2);
using OutputPixelType = unsigned int;
using OutputImageType = itk::Image<OutputPixelType, Dimension>;
using FilterType = itk::MultiplyImageFilter<InputImageType, InputImageType, OutputImageType>;
FilterType::Pointer filter = FilterType::New();
filter->SetInput1(reader1->GetOutput());
filter->SetInput2(reader2->GetOutput());
using WriterType = itk::ImageFileWriter<OutputImageType>;
WriterType::Pointer writer = WriterType::New();
writer->SetFileName(outputFileName);
writer->SetInput(filter->GetOutput());
try
{
writer->Update();
}
catch (itk::ExceptionObject & error)
{
std::cerr << "Error: " << error << std::endl;
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}
Classes demonstrated¶
-
template<typename
TInputImage1
, typenameTInputImage2
= TInputImage1, typenameTOutputImage
= TInputImage1>
classMultiplyImageFilter
: public itk::BinaryGeneratorImageFilter<TInputImage1, TInputImage2, TOutputImage> Pixel-wise multiplication of two 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: