Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Friends

mitk::GeometryClipImageFilter Class Reference
[Process Classes]

Filter for clipping an image with a Geometry2D. More...

#include <mitkGeometryClipImageFilter.h>

Inheritance diagram for mitk::GeometryClipImageFilter:
Inheritance graph
[legend]
Collaboration diagram for mitk::GeometryClipImageFilter:
Collaboration graph
[legend]

List of all members.

Public Types

typedef GeometryClipImageFilter Self
typedef ImageToImageFilter Superclass
typedef itk::SmartPointer< SelfPointer
typedef itk::SmartPointer
< const Self
ConstPointer

Public Member Functions

virtual const char * GetClassName () const
void SetClippingGeometry (const mitk::Geometry3D *aClippingGeometry)
const mitk::Geometry3DGetClippingGeometry () const
virtual bool GetClipPartAboveGeometry () const
virtual void SetClipPartAboveGeometry (bool _arg)
virtual void ClipPartAboveGeometryOn ()
virtual void ClipPartAboveGeometryOff ()
virtual void SetOutsideValue (ScalarType _arg)
virtual ScalarType GetOutsideValue () const
virtual void SetAutoOutsideValue (bool _arg)
virtual bool GetAutoOutsideValue () const
virtual void AutoOutsideValueOn ()
virtual void AutoOutsideValueOff ()
virtual void SetAutoOrientLabels (bool _arg)
virtual bool GetAutoOrientLabels () const
virtual void SetLabelBothSides (bool _arg)
virtual bool GetLabelBothSides () const
virtual void LabelBothSidesOn ()
virtual void LabelBothSidesOff ()
virtual void SetAboveGeometryLabel (ScalarType _arg)
virtual ScalarType GetAboveGeometryLabel () const
virtual void SetBelowGeometryLabel (ScalarType _arg)
virtual ScalarType GetBelowGeometryLabel () const

Static Public Member Functions

static Pointer New ()

Protected Member Functions

 GeometryClipImageFilter ()
 ~GeometryClipImageFilter ()
virtual void GenerateInputRequestedRegion ()
virtual void GenerateOutputInformation ()
virtual void GenerateData ()
 A version of GenerateData() specific for image processing filters.

Protected Attributes

mitk::Geometry3D::ConstPointer m_ClippingGeometry
mitk::GeometryData::Pointer m_ClippingGeometryData
mitk::TimeSlicedGeometry::ConstPointer m_TimeSlicedClippingGeometry
mitk::ImageTimeSelector::Pointer m_InputTimeSelector
mitk::ImageTimeSelector::Pointer m_OutputTimeSelector
bool m_ClipPartAboveGeometry
ScalarType m_OutsideValue
bool m_AutoOutsideValue
bool m_LabelBothSides
bool m_AutoOrientLabels
 Orient above like vtkPolyDataNormals does with AutoOrientNormals.
ScalarType m_AboveGeometryLabel
ScalarType m_BelowGeometryLabel
itk::TimeStamp m_TimeOfHeaderInitialization

Friends

template<typename TPixel , unsigned int VImageDimension>
void _InternalComputeClippedImage (itk::Image< TPixel, VImageDimension > *itkImage, mitk::GeometryClipImageFilter *geometryClipper, const mitk::Geometry2D *clippingGeometry2D)

Detailed Description

Filter for clipping an image with a Geometry2D.

The given geometry for clipping can be either a Geometry2D or a TimeSlicedGeometry containing multiple instances of Geometry2D

Definition at line 46 of file mitkGeometryClipImageFilter.h.


Member Typedef Documentation

typedef itk::SmartPointer<const Self> mitk::GeometryClipImageFilter::ConstPointer

Definition at line 49 of file mitkGeometryClipImageFilter.h.

typedef itk::SmartPointer<Self> mitk::GeometryClipImageFilter::Pointer

Definition at line 49 of file mitkGeometryClipImageFilter.h.

Definition at line 49 of file mitkGeometryClipImageFilter.h.

Definition at line 49 of file mitkGeometryClipImageFilter.h.


Constructor & Destructor Documentation

mitk::GeometryClipImageFilter::GeometryClipImageFilter (  ) [protected]
mitk::GeometryClipImageFilter::~GeometryClipImageFilter (  ) [protected]

Definition at line 48 of file mitkGeometryClipImageFilter.cpp.

{

}

Member Function Documentation

virtual void mitk::GeometryClipImageFilter::AutoOutsideValueOff (  ) [virtual]
virtual void mitk::GeometryClipImageFilter::AutoOutsideValueOn (  ) [virtual]
virtual void mitk::GeometryClipImageFilter::ClipPartAboveGeometryOff (  ) [virtual]
virtual void mitk::GeometryClipImageFilter::ClipPartAboveGeometryOn (  ) [virtual]
void mitk::GeometryClipImageFilter::GenerateData (  ) [protected, virtual]

A version of GenerateData() specific for image processing filters.

This implementation will split the processing across multiple threads. The buffer is allocated by this method. Then the BeforeThreadedGenerateData() method is called (if provided). Then, a series of threads are spawned each calling ThreadedGenerateData(). After all the threads have completed processing, the AfterThreadedGenerateData() method is called (if provided). If an image processing filter cannot be threaded, the filter should provide an implementation of GenerateData(). That implementation is responsible for allocating the output buffer. If a filter an be threaded, it should NOT provide a GenerateData() method but should provide a ThreadedGenerateData() instead.

See also:
ThreadedGenerateData()

Reimplemented from mitk::ImageSource.

Definition at line 195 of file mitkGeometryClipImageFilter.cpp.

References AccessByItk_2, mitk::TimeSlicedGeometry::MSToTimeStep(), QuadProgPP::t(), and mitk::TimeSlicedGeometry::TimeStepToMS().

{
  Image::ConstPointer input = this->GetInput();
  Image::Pointer output = this->GetOutput();

  if((output->IsInitialized()==false) || (m_ClippingGeometry.IsNull()))
    return;

  const Geometry2D * clippingGeometryOfCurrentTimeStep = NULL;

  if(m_TimeSlicedClippingGeometry.IsNull())
  {
    clippingGeometryOfCurrentTimeStep = dynamic_cast<const Geometry2D*>(m_ClippingGeometry.GetPointer());
  }
  else
  {
    clippingGeometryOfCurrentTimeStep = dynamic_cast<const Geometry2D*>(m_TimeSlicedClippingGeometry->GetGeometry3D(0));
  }

  if(clippingGeometryOfCurrentTimeStep == NULL)
    return;

  m_InputTimeSelector->SetInput(input);
  m_OutputTimeSelector->SetInput(this->GetOutput());

  mitk::Image::RegionType outputRegion = output->GetRequestedRegion();
  const mitk::TimeSlicedGeometry *outputTimeGeometry = output->GetTimeSlicedGeometry();
  const mitk::TimeSlicedGeometry *inputTimeGeometry = input->GetTimeSlicedGeometry();
  ScalarType timeInMS;

  int timestep=0;
  int tstart=outputRegion.GetIndex(3);
  int tmax=tstart+outputRegion.GetSize(3);

  int t;
  for(t=tstart;t<tmax;++t)
  {
    timeInMS = outputTimeGeometry->TimeStepToMS( t );

    timestep = inputTimeGeometry->MSToTimeStep( timeInMS );

    m_InputTimeSelector->SetTimeNr(timestep);
    m_InputTimeSelector->UpdateLargestPossibleRegion();
    m_OutputTimeSelector->SetTimeNr(t);
    m_OutputTimeSelector->UpdateLargestPossibleRegion();

    if(m_TimeSlicedClippingGeometry.IsNotNull())
    {
      timestep = m_TimeSlicedClippingGeometry->MSToTimeStep( timeInMS );
      if(m_TimeSlicedClippingGeometry->IsValidTime(timestep) == false)
        continue;

      clippingGeometryOfCurrentTimeStep = dynamic_cast<const Geometry2D*>(m_TimeSlicedClippingGeometry->GetGeometry3D(timestep));
    }

    AccessByItk_2(m_InputTimeSelector->GetOutput(),_InternalComputeClippedImage,this,clippingGeometryOfCurrentTimeStep);
  }

  m_TimeOfHeaderInitialization.Modified();
}
void mitk::GeometryClipImageFilter::GenerateInputRequestedRegion (  ) [protected, virtual]

What is the input requested region that is required to produce the output requested region? The base assumption for image processing filters is that the input requested region can be set to match the output requested region. If a filter requires more input (for instance a filter that uses neighborhoods needs more input than output to avoid introducing artificial boundary conditions) or less input (for instance a magnify filter) will have to override this method. In doing so, it should call its superclass' implementation as its first step. Note that this imaging filters operate differently than the classes to this point in the class hierachy. Up till now, the base assumption has been that the largest possible region will be requested of the input.

See also:
ProcessObject::GenerateInputRequestedRegion(), ImageSource::GenerateInputRequestedRegion()

Reimplemented from mitk::ImageToImageFilter.

Definition at line 70 of file mitkGeometryClipImageFilter.cpp.

References mitk::GenerateTimeInInputRegion(), mitk::BaseData::IsInitialized(), and mitk::SlicedData::SetRequestedRegionToLargestPossibleRegion().

{
  Superclass::GenerateInputRequestedRegion();

  mitk::Image* output = this->GetOutput();
  mitk::Image* input = const_cast< mitk::Image * > ( this->GetInput() );
  if((output->IsInitialized()==false) || (m_ClippingGeometry.IsNull()))
    return;

  input->SetRequestedRegionToLargestPossibleRegion();

  GenerateTimeInInputRegion(output, input);
}
void mitk::GeometryClipImageFilter::GenerateOutputInformation ( void   ) [protected, virtual]

Definition at line 84 of file mitkGeometryClipImageFilter.cpp.

{
  mitk::Image::ConstPointer input = this->GetInput();
  mitk::Image::Pointer output = this->GetOutput();

  if ((output->IsInitialized()) && (this->GetMTime() <= m_TimeOfHeaderInitialization.GetMTime()))
    return;

  itkDebugMacro(<<"GenerateOutputInformation()");

  unsigned int i;
  unsigned int *tmpDimensions = new unsigned int[input->GetDimension()];

  for(i=0;i<input->GetDimension();++i)
    tmpDimensions[i]=input->GetDimension(i);

  output->Initialize(input->GetPixelType(),
    input->GetDimension(),
    tmpDimensions,
    input->GetNumberOfChannels());

  delete [] tmpDimensions;

  output->SetGeometry(static_cast<mitk::Geometry3D*>(input->GetGeometry()->Clone().GetPointer()));

  output->SetPropertyList(input->GetPropertyList()->Clone());    

  m_TimeOfHeaderInitialization.Modified();
}
virtual ScalarType mitk::GeometryClipImageFilter::GetAboveGeometryLabel (  ) const [virtual]
virtual bool mitk::GeometryClipImageFilter::GetAutoOrientLabels (  ) const [virtual]
virtual bool mitk::GeometryClipImageFilter::GetAutoOutsideValue (  ) const [virtual]
virtual ScalarType mitk::GeometryClipImageFilter::GetBelowGeometryLabel (  ) const [virtual]
virtual const char* mitk::GeometryClipImageFilter::GetClassName (  ) const [virtual]
virtual bool mitk::GeometryClipImageFilter::GetClipPartAboveGeometry (  ) const [virtual]
const mitk::Geometry3D * mitk::GeometryClipImageFilter::GetClippingGeometry (  ) const

Definition at line 65 of file mitkGeometryClipImageFilter.cpp.

{
  return m_ClippingGeometry;
}
virtual bool mitk::GeometryClipImageFilter::GetLabelBothSides (  ) const [virtual]
virtual ScalarType mitk::GeometryClipImageFilter::GetOutsideValue (  ) const [virtual]
virtual void mitk::GeometryClipImageFilter::LabelBothSidesOff (  ) [virtual]
virtual void mitk::GeometryClipImageFilter::LabelBothSidesOn (  ) [virtual]
static Pointer mitk::GeometryClipImageFilter::New (  ) [static]

Method for creation through the object factory.

Reimplemented from mitk::ImageToImageFilter.

Referenced by GeometryClipImageFilter().

virtual void mitk::GeometryClipImageFilter::SetAboveGeometryLabel ( ScalarType  _arg ) [virtual]
virtual void mitk::GeometryClipImageFilter::SetAutoOrientLabels ( bool  _arg ) [virtual]
virtual void mitk::GeometryClipImageFilter::SetAutoOutsideValue ( bool  _arg ) [virtual]
virtual void mitk::GeometryClipImageFilter::SetBelowGeometryLabel ( ScalarType  _arg ) [virtual]
virtual void mitk::GeometryClipImageFilter::SetClipPartAboveGeometry ( bool  _arg ) [virtual]
void mitk::GeometryClipImageFilter::SetClippingGeometry ( const mitk::Geometry3D aClippingGeometry )

Definition at line 53 of file mitkGeometryClipImageFilter.cpp.

{
  if(aClippingGeometry != m_ClippingGeometry.GetPointer())
  {
    m_ClippingGeometry = aClippingGeometry;
    m_TimeSlicedClippingGeometry = dynamic_cast<const TimeSlicedGeometry*>(aClippingGeometry);
    m_ClippingGeometryData->SetGeometry(const_cast<mitk::Geometry3D*>(aClippingGeometry));
    SetNthInput(1, m_ClippingGeometryData);
    Modified();
  }
}
virtual void mitk::GeometryClipImageFilter::SetLabelBothSides ( bool  _arg ) [virtual]
virtual void mitk::GeometryClipImageFilter::SetOutsideValue ( ScalarType  _arg ) [virtual]

Friends And Related Function Documentation

template<typename TPixel , unsigned int VImageDimension>
void _InternalComputeClippedImage ( itk::Image< TPixel, VImageDimension > *  itkImage,
mitk::GeometryClipImageFilter geometryClipper,
const mitk::Geometry2D clippingGeometry2D 
) [friend]

Member Data Documentation

Definition at line 157 of file mitkGeometryClipImageFilter.h.

Orient above like vtkPolyDataNormals does with AutoOrientNormals.

Definition at line 152 of file mitkGeometryClipImageFilter.h.

Definition at line 142 of file mitkGeometryClipImageFilter.h.

Definition at line 162 of file mitkGeometryClipImageFilter.h.

Definition at line 132 of file mitkGeometryClipImageFilter.h.

Definition at line 123 of file mitkGeometryClipImageFilter.h.

Definition at line 124 of file mitkGeometryClipImageFilter.h.

Referenced by GeometryClipImageFilter().

mitk::ImageTimeSelector::Pointer mitk::GeometryClipImageFilter::m_InputTimeSelector [protected]

Definition at line 126 of file mitkGeometryClipImageFilter.h.

Referenced by GeometryClipImageFilter().

Definition at line 147 of file mitkGeometryClipImageFilter.h.

mitk::ImageTimeSelector::Pointer mitk::GeometryClipImageFilter::m_OutputTimeSelector [protected]

Definition at line 127 of file mitkGeometryClipImageFilter.h.

Referenced by GeometryClipImageFilter().

Definition at line 138 of file mitkGeometryClipImageFilter.h.

Definition at line 166 of file mitkGeometryClipImageFilter.h.

Definition at line 125 of file mitkGeometryClipImageFilter.h.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines