16 #include <itkImageIterator.h> 17 #include <itkImageConstIterator.h> 24 if (pixelValue != m_IgnoredPixelValue)
26 m_IgnoredPixelValue = pixelValue;
41 if (IsUpdateRequired())
62 imgTimeSel->UpdateLargestPossibleRegion();
76 template <
typename TPixel,
unsigned int VImageDimension>
79 typedef itk::Image<TPixel, VImageDimension>
ImageType;
80 typedef itk::Image<unsigned short, VImageDimension> MaskType;
82 typename MaskType::Pointer
mask = MaskType::New();
83 mask->SetOrigin(image->GetOrigin());
84 mask->SetSpacing(image->GetSpacing());
85 mask->SetLargestPossibleRegion(image->GetLargestPossibleRegion());
86 mask->SetBufferedRegion(image->GetBufferedRegion());
87 mask->SetDirection(image->GetDirection());
88 mask->SetNumberOfComponentsPerPixel(image->GetNumberOfComponentsPerPixel());
93 itk::ImageRegionConstIterator<ImageType> imageIterator(image, image->GetLargestPossibleRegion());
94 itk::ImageRegionIterator<MaskType> maskIterator(mask, mask->GetLargestPossibleRegion());
97 for (imageIterator.GoToBegin(); !imageIterator.IsAtEnd(); ++imageIterator, ++maskIterator)
99 if (imageIterator.Value() ==
static_cast<TPixel
>(m_IgnoredPixelValue))
108 bool IgnorePixelMaskGenerator::IsUpdateRequired()
const 110 unsigned long thisClassTimeStamp = this->GetMTime();
112 unsigned long inputImageTimeStamp =
m_inputImage->GetMTime();
114 if (thisClassTimeStamp > m_InternalMaskUpdateTime)
119 if (m_InternalMaskUpdateTime < inputImageTimeStamp)
124 if (internalMaskTimeStamp > m_InternalMaskUpdateTime)
mitk::Image::ConstPointer m_inputImage
itk::Image< unsigned char, 3 > ImageType
DataCollection - Class to facilitate loading/accessing structured data.
mitk::Image::Pointer GetMask() override
Computes and returns the mask.
void InternalCalculateMask(typename itk::Image< TPixel, VImageDimension > *image)
Image::Pointer GrabItkImageMemory(itk::SmartPointer< ItkOutputImageType > &itkimage, mitk::Image *mitkImage=nullptr, const BaseGeometry *geometry=nullptr, bool update=true)
Grabs the memory of an itk::Image (with a specific type) and puts it into an mitk::Image.The memory is managed by the mitk::Image after calling this function. The itk::Image remains valid until the mitk::Image decides to free the memory.
#define AccessByItk(mitkImage, itkImageTypeFunction)
Access a MITK image by an ITK image.
mitk::Image::Pointer m_InternalMask
mitk::Image::Pointer image
void SetTimeStep(unsigned int timeStep) override
SetTimeStep is used to set the time step for which the mask is to be generated.
void SetIgnoredPixelValue(RealType pixelValue)
The mask will be 0 there inputImage==pixelValue and 1 otherwise.
mitk::Image::Pointer mask