Adapter for vtkProbeFilter, making it a 3D+t filter. More...
#include <mitkProbeFilter.h>


Public Types | |
| typedef ProbeFilter | Self |
| typedef SurfaceSource | Superclass |
| typedef itk::SmartPointer< Self > | Pointer |
| 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::Surface * | GetInput (void) |
| const mitk::Image * | GetSource (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 () |
Adapter for vtkProbeFilter, making it a 3D+t filter.
Definition at line 38 of file mitkProbeFilter.h.
| 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.
| typedef ProbeFilter mitk::ProbeFilter::Self |
Definition at line 41 of file mitkProbeFilter.h.
Definition at line 41 of file mitkProbeFilter.h.
| 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.
{
}
| 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 ) );
}
1.7.2