Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions

mitk::ProbeFilter Class Reference
[Process Classes]

Adapter for vtkProbeFilter, making it a 3D+t filter. More...

#include <mitkProbeFilter.h>

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

List of all members.

Public Types

typedef ProbeFilter Self
typedef SurfaceSource Superclass
typedef itk::SmartPointer< SelfPointer
typedef itk::SmartPointer
< const Self
ConstPointer

Public Member Functions

virtual const char * GetClassName () const
virtual void GenerateOutputInformation ()
virtual void GenerateInputRequestedRegion ()
virtual void GenerateData ()
const mitk::SurfaceGetInput (void)
const mitk::ImageGetSource (void)
virtual void SetInput (const mitk::Surface *input)
virtual void SetSource (const mitk::Image *source)

Static Public Member Functions

static Pointer New ()

Protected Member Functions

 ProbeFilter ()
virtual ~ProbeFilter ()

Detailed Description

Adapter for vtkProbeFilter, making it a 3D+t filter.

Definition at line 38 of file mitkProbeFilter.h.


Member Typedef Documentation

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

Definition at line 41 of file mitkProbeFilter.h.

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

Definition at line 41 of file mitkProbeFilter.h.

Definition at line 41 of file mitkProbeFilter.h.

Definition at line 41 of file mitkProbeFilter.h.


Constructor & Destructor Documentation

mitk::ProbeFilter::ProbeFilter (  ) [protected]

Definition at line 33 of file mitkProbeFilter.cpp.

{

}
mitk::ProbeFilter::~ProbeFilter (  ) [protected, virtual]

Definition at line 38 of file mitkProbeFilter.cpp.

{

}

Member Function Documentation

void mitk::ProbeFilter::GenerateData (  ) [virtual]

Definition at line 98 of file mitkProbeFilter.cpp.

References mitk::BaseData::GetTimeSlicedGeometry(), mitk::Image::GetVtkImageData(), mitk::Surface::GetVtkPolyData(), mitk::TimeSlicedGeometry::MSToTimeStep(), QuadProgPP::t(), and mitk::TimeSlicedGeometry::TimeStepToMS().

{
  mitk::Surface *input  = const_cast< mitk::Surface * >(this->GetInput());  
  mitk::Image *source = const_cast< mitk::Image * >(this->GetSource());
  mitk::Surface::Pointer output = this->GetOutput();

  itkDebugMacro(<<"Generating Data");

  if(output.IsNull())
  {
    itkDebugMacro(<<"Output is NULL.");
    return;
  }

  mitk::Surface::RegionType outputRegion = output->GetRequestedRegion();
  const mitk::TimeSlicedGeometry *outputTimeGeometry = output->GetTimeSlicedGeometry();
  const mitk::TimeSlicedGeometry *inputTimeGeometry = input->GetTimeSlicedGeometry();
  const mitk::TimeSlicedGeometry *sourceTimeGeometry = source->GetTimeSlicedGeometry();
  ScalarType timeInMS;
  int timestep=0;

  int tstart, tmax;

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

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

    vtkProbeFilter* probe = vtkProbeFilter::New();

    timestep = inputTimeGeometry->MSToTimeStep( timeInMS );
    probe->SetInput( input->GetVtkPolyData(timestep) );

    timestep = sourceTimeGeometry->MSToTimeStep( timeInMS );
    probe->SetSource( source->GetVtkImageData(timestep) );

    output->SetVtkPolyData( probe->GetPolyDataOutput(), t );  

    probe->Update();
    probe->Delete();
  }
}
void mitk::ProbeFilter::GenerateInputRequestedRegion (  ) [virtual]

Definition at line 144 of file mitkProbeFilter.cpp.

References mitk::SlicedData::GetLargestPossibleRegion(), mitk::BaseData::GetTimeSlicedGeometry(), mitk::TimeSlicedGeometry::IsValidTime(), mitk::TimeSlicedGeometry::MSToTimeStep(), mitk::SlicedData::SetRequestedRegion(), mitk::Surface::SetRequestedRegion(), and mitk::TimeSlicedGeometry::TimeStepToMS().

{
  Superclass::GenerateInputRequestedRegion();

  mitk::Surface *input  = const_cast< mitk::Surface * >( this->GetInput() );  
  mitk::Image *source = const_cast< mitk::Image * >( this->GetSource() );

  if(input==NULL) return;
  if(source==NULL) return;

  mitk::Surface::Pointer output = this->GetOutput();
  mitk::Surface::RegionType outputRegion = output->GetRequestedRegion();
  const mitk::TimeSlicedGeometry *outputTimeGeometry = output->GetTimeSlicedGeometry();

  mitk::Surface::RegionType inputSurfaceRegion = outputRegion;
  Image::RegionType sourceImageRegion = source->GetLargestPossibleRegion();

  if(outputRegion.GetSize(3)<1)
  {
    mitk::Surface::RegionType::SizeType surfacesize;
    surfacesize.Fill(0);
    inputSurfaceRegion.SetSize(surfacesize);
    input->SetRequestedRegion( &inputSurfaceRegion  );
    mitk::Image::RegionType::SizeType imagesize;
    imagesize.Fill(0);
    sourceImageRegion.SetSize(imagesize);
    source->SetRequestedRegion( &sourceImageRegion );
    return;
  }

  //create and set input requested region for the input surface
  const mitk::TimeSlicedGeometry *inputTimeGeometry = input->GetTimeSlicedGeometry();

  ScalarType timeInMS;
  int timestep=0;

  // convert the start-index-time of output in start-index-time of input via millisecond-time
  timeInMS = outputTimeGeometry->TimeStepToMS(outputRegion.GetIndex(3));
  timestep = inputTimeGeometry->MSToTimeStep( timeInMS );
  if( ( timeInMS > ScalarTypeNumericTraits::NonpositiveMin() ) && ( inputTimeGeometry->IsValidTime( timestep ) ) )
    inputSurfaceRegion.SetIndex( 3, timestep );
  else
    inputSurfaceRegion.SetIndex( 3, 0 );
  // convert the end-index-time of output in end-index-time of input via millisecond-time
  timeInMS = outputTimeGeometry->TimeStepToMS(outputRegion.GetIndex(3)+outputRegion.GetSize(3)-1);
  timestep = inputTimeGeometry->MSToTimeStep( timeInMS );
  if( ( timeInMS > ScalarTypeNumericTraits::NonpositiveMin() ) && ( outputTimeGeometry->IsValidTime( timestep ) ) )
    inputSurfaceRegion.SetSize( 3, timestep - inputSurfaceRegion.GetIndex(3) + 1 );
  else
    inputSurfaceRegion.SetSize( 3, 1 );

  input->SetRequestedRegion( &inputSurfaceRegion  );

  //create and set input requested region for the source image
  const mitk::TimeSlicedGeometry *sourceTimeGeometry = source->GetTimeSlicedGeometry();

  // convert the start-index-time of output in start-index-time of source via millisecond-time
  timeInMS = outputTimeGeometry->TimeStepToMS(outputRegion.GetIndex(3));
  timestep = sourceTimeGeometry->MSToTimeStep( timeInMS );
  if( ( timeInMS > ScalarTypeNumericTraits::NonpositiveMin() ) && ( sourceTimeGeometry->IsValidTime( timestep ) ) )
    sourceImageRegion.SetIndex( 3, timestep );
  else
    sourceImageRegion.SetIndex( 3, 0 );
  // convert the end-index-time of output in end-index-time of source via millisecond-time
  timeInMS = outputTimeGeometry->TimeStepToMS(outputRegion.GetIndex(3)+outputRegion.GetSize(3)-1);
  timestep = sourceTimeGeometry->MSToTimeStep( timeInMS );
  if( ( timeInMS > ScalarTypeNumericTraits::NonpositiveMin() ) && ( outputTimeGeometry->IsValidTime( timestep ) ) )
    sourceImageRegion.SetSize( 3, timestep - sourceImageRegion.GetIndex(3) + 1 );
  else
    sourceImageRegion.SetSize( 3, 1 );

  sourceImageRegion.SetIndex( 4, 0 );
  sourceImageRegion.SetSize( 4, 1 );

  source->SetRequestedRegion( &sourceImageRegion );
}
void mitk::ProbeFilter::GenerateOutputInformation ( void   ) [virtual]

Definition at line 67 of file mitkProbeFilter.cpp.

References mitk::TimeSlicedGeometry::New(), and mitk::Geometry3D::New().

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

  if(input.IsNull()) return;
  if(source.IsNull()) return;

  if(input->GetGeometry()==NULL) return;  
  if(source->GetGeometry()==NULL) return; 

  if( (input->GetTimeSlicedGeometry()->GetTimeSteps()==1) && (source->GetTimeSlicedGeometry()->GetTimeSteps()>1) )
  {
    Geometry3D::Pointer geometry3D = Geometry3D::New();
    geometry3D->Initialize();
    geometry3D->SetBounds(source->GetTimeSlicedGeometry()->GetBounds());
    geometry3D->SetTimeBounds(source->GetTimeSlicedGeometry()->GetGeometry3D(0)->GetTimeBounds());

    TimeSlicedGeometry::Pointer outputTimeSlicedGeometry = TimeSlicedGeometry::New();
    outputTimeSlicedGeometry->InitializeEvenlyTimed(geometry3D, source->GetTimeSlicedGeometry()->GetTimeSteps());

    output->Expand(outputTimeSlicedGeometry->GetTimeSteps());
    output->SetGeometry( outputTimeSlicedGeometry );
  }
  else
    output->SetGeometry( static_cast<Geometry3D*>(input->GetGeometry()->Clone().GetPointer()) );

  itkDebugMacro(<<"GenerateOutputInformation()");
}
virtual const char* mitk::ProbeFilter::GetClassName (  ) const [virtual]
const mitk::Surface * mitk::ProbeFilter::GetInput ( void   )

Definition at line 43 of file mitkProbeFilter.cpp.

{
  if (this->GetNumberOfInputs() < 1)
  {
    return 0;
  }
  return static_cast< const mitk::Surface * >(this->ProcessObject::GetInput(0) );
}
const mitk::Image * mitk::ProbeFilter::GetSource ( void   )

Definition at line 52 of file mitkProbeFilter.cpp.

{
  return static_cast< const mitk::Image * >(this->ProcessObject::GetInput(1));    
}
static Pointer mitk::ProbeFilter::New (  ) [static]

Reimplemented from mitk::SurfaceSource.

void mitk::ProbeFilter::SetInput ( const mitk::Surface input ) [virtual]

Definition at line 57 of file mitkProbeFilter.cpp.

{
  this->ProcessObject::SetNthInput( 0, const_cast< mitk::Surface * >( input ) );
}
void mitk::ProbeFilter::SetSource ( const mitk::Image source ) [virtual]

Definition at line 62 of file mitkProbeFilter.cpp.

{
  this->ProcessObject::SetNthInput( 1, const_cast< mitk::Image * >( source ) );  
}

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