21 #include "itkImageRegionConstIterator.h" 22 #include "itkImageRegionIteratorWithIndex.h" 28 this->SetNumberOfIndexedInputs(2);
29 this->SetNumberOfRequiredInputs(2);
45 this->ProcessObject::SetNthInput(1,
m_Mask);
55 Superclass::GenerateInputRequestedRegion();
78 itkDebugMacro(<<
"GenerateOutputInformation()");
80 output->Initialize(input->GetPixelType(), *input->GetTimeGeometry());
82 output->SetPropertyList(input->GetPropertyList()->Clone());
87 template <
typename TPixel,
unsigned int VImageDimension>
93 m_MaskTimeSelector->GetOutput()->GetImageDescriptor()->GetChannelDescriptor().GetPixelType();
96 typedef itk::Image<TPixel, VImageDimension> ItkInputImageType;
97 typedef itk::Image<unsigned char, VImageDimension> ItkMaskImageType;
98 typedef itk::Image<TPixel, VImageDimension> ItkOutputImageType;
100 typedef itk::ImageRegionConstIterator<ItkInputImageType> ItkInputImageIteratorType;
101 typedef itk::ImageRegionConstIterator<ItkMaskImageType> ItkMaskImageIteratorType;
102 typedef itk::ImageRegionIteratorWithIndex<ItkOutputImageType> ItkOutputImageIteratorType;
106 maskimagetoitk->Update();
107 typename ItkMaskImageType::Pointer maskItkImage = maskimagetoitk->GetOutput();
112 outputimagetoitk->Update();
113 typename ItkOutputImageType::Pointer outputItkImage = outputimagetoitk->GetOutput();
116 typename ItkInputImageType::RegionType inputRegionOfInterest = inputItkImage->GetLargestPossibleRegion();
117 ItkInputImageIteratorType inputIt(inputItkImage, inputRegionOfInterest);
118 ItkMaskImageIteratorType maskIt(maskItkImage, inputRegionOfInterest);
119 ItkOutputImageIteratorType outputIt(outputItkImage, inputRegionOfInterest);
129 for (inputIt.GoToBegin(), maskIt.GoToBegin(), outputIt.GoToBegin(); !inputIt.IsAtEnd() && !maskIt.IsAtEnd();
130 ++inputIt, ++maskIt, ++outputIt)
132 if (maskIt.Get() > itk::NumericTraits<typename ItkMaskImageType::PixelType>::Zero)
134 outputIt.Set(inputIt.Get());
147 typedef itk::Image<TPixel, VImageDimension> ItkInputImageType;
148 typedef itk::Image<unsigned short, VImageDimension> ItkMaskImageType;
149 typedef itk::Image<TPixel, VImageDimension> ItkOutputImageType;
151 typedef itk::ImageRegionConstIterator<ItkInputImageType> ItkInputImageIteratorType;
152 typedef itk::ImageRegionConstIterator<ItkMaskImageType> ItkMaskImageIteratorType;
153 typedef itk::ImageRegionIteratorWithIndex<ItkOutputImageType> ItkOutputImageIteratorType;
157 maskimagetoitk->Update();
158 typename ItkMaskImageType::Pointer maskItkImage = maskimagetoitk->GetOutput();
163 outputimagetoitk->Update();
164 typename ItkOutputImageType::Pointer outputItkImage = outputimagetoitk->GetOutput();
167 typename ItkInputImageType::RegionType inputRegionOfInterest = inputItkImage->GetLargestPossibleRegion();
168 ItkInputImageIteratorType inputIt(inputItkImage, inputRegionOfInterest);
169 ItkMaskImageIteratorType maskIt(maskItkImage, inputRegionOfInterest);
170 ItkOutputImageIteratorType outputIt(outputItkImage, inputRegionOfInterest);
180 for (inputIt.GoToBegin(), maskIt.GoToBegin(), outputIt.GoToBegin(); !inputIt.IsAtEnd() && !maskIt.IsAtEnd();
181 ++inputIt, ++maskIt, ++outputIt)
183 if (maskIt.Get() > itk::NumericTraits<typename ItkMaskImageType::PixelType>::Zero)
185 outputIt.Set(inputIt.Get());
204 if ((output->IsInitialized() ==
false) || (mask.IsNull()) || (mask->GetTimeGeometry()->CountTimeSteps() == 0))
218 int tstart = outputRegion.GetIndex(3);
219 int tmax = tstart + outputRegion.GetSize(3);
222 for (t = tstart; t < tmax; ++t)
void SetRequestedRegionToLargestPossibleRegion() override
virtual TimeStepType CountTimeSteps() const =0
Returns the number of time steps.
mitk::ScalarType m_MaxValue
int GetComponentType() const
Get the component type (the scalar (!) type). Each element may contain m_NumberOfComponents (more tha...
const mitk::TimeGeometry * GetTimeGeometry() const
Return the TimeGeometry of the data as const pointer.
void GenerateData() override
mitk::Image::Pointer m_Mask
~MaskImageFilter() override
mitk::ScalarType m_MinValue
itk::ImageRegion< RegionDimension > RegionType
virtual TimeStepType TimePointToTimeStep(TimePointType timePoint) const =0
Converts a time point to the corresponding time step.
Image class for storing images.
virtual TimePointType TimeStepToTimePoint(TimeStepType timeStep) const =0
Converts a time step to a time point.
#define AccessByItk(mitkImage, itkImageTypeFunction)
Access a MITK image by an ITK image.
bool m_OverrideOutsideValue
void GenerateTimeInInputRegion(const mitk::TimeGeometry *outputTimeGeometry, const TOutputRegion &outputRegion, const mitk::TimeGeometry *inputTimeGeometry, TInputRegion &inputRegion)
void SetMask(const mitk::Image *mask)
InputImageType * GetInput(void)
virtual bool IsInitialized() const
Check whether the data has been initialized, i.e., at least the Geometry and other header data has be...
mitk::Image::Pointer mask
OutputType * GetOutput()
Get the output data of this image source object.
void InternalComputeMask(itk::Image< TPixel, VImageDimension > *itkImage)
itk::TimeStamp m_TimeOfHeaderInitialization
const mitk::Image * GetMask() const
void GenerateOutputInformation() override
mitk::ImageTimeSelector::Pointer m_InputTimeSelector
mitk::ScalarType m_OutsideValue
mitk::ImageTimeSelector::Pointer m_MaskTimeSelector
void GenerateInputRequestedRegion() override
Class for defining the data type of pixels.
mitk::ImageTimeSelector::Pointer m_OutputTimeSelector