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

mitk::NavigationDataTransformFilter Class Reference

NavigationDataTransformFilter applies an user-defined rigid transformation on navigation data objects. Input navigation data are mapped 1:1 on output navigation data. To run the filter SetRigid3DTransform(TransformType::Pointer transform) has to be called first. More...

#include <mitkNavigationDataTransformFilter.h>

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

List of all members.

Public Types

typedef itk::Rigid3DTransform
< float > 
TransformType
typedef
NavigationDataTransformFilter 
Self
typedef
NavigationDataToNavigationDataFilter 
Superclass
typedef itk::SmartPointer< SelfPointer
typedef itk::SmartPointer
< const Self
ConstPointer

Public Member Functions

virtual const char * GetClassName () const
void SetRigid3DTransform (TransformType::Pointer transform)
 Set the rigid transform used to transform the input navigation data.

Static Public Member Functions

static Pointer New ()

Protected Member Functions

 NavigationDataTransformFilter ()
virtual ~NavigationDataTransformFilter ()
virtual void GenerateData ()
 filter execute method

Protected Attributes

itk::QuaternionRigidTransform
< double >::Pointer 
m_QuatOrgRigidTransform
 transform needed to rotate orientation
itk::QuaternionRigidTransform
< double >::Pointer 
m_QuatTmpTransform
 further transform needed to rotate orientation
TransformType::Pointer m_Transform
 transform which will be applied on navigation data(s)

Detailed Description

NavigationDataTransformFilter applies an user-defined rigid transformation on navigation data objects. Input navigation data are mapped 1:1 on output navigation data. To run the filter SetRigid3DTransform(TransformType::Pointer transform) has to be called first.

Documentation

Definition at line 36 of file mitkNavigationDataTransformFilter.h.


Member Typedef Documentation

typedef itk::SmartPointer<const Self> mitk::NavigationDataTransformFilter::ConstPointer
typedef itk::Rigid3DTransform< float > mitk::NavigationDataTransformFilter::TransformType

Definition at line 41 of file mitkNavigationDataTransformFilter.h.


Constructor & Destructor Documentation

mitk::NavigationDataTransformFilter::NavigationDataTransformFilter (  ) [protected]
mitk::NavigationDataTransformFilter::~NavigationDataTransformFilter (  ) [protected, virtual]

Definition at line 32 of file mitkNavigationDataTransformFilter.cpp.

{
  m_Transform = NULL;
}

Member Function Documentation

void mitk::NavigationDataTransformFilter::GenerateData (  ) [protected, virtual]

filter execute method

Documentation transforms navigation data

Definition at line 43 of file mitkNavigationDataTransformFilter.cpp.

References mitk::NavigationData::GetOrientation(), mitk::NavigationData::GetPosition(), mitk::NavigationData::Graft(), mitk::NavigationData::IsDataValid(), mitk::NavigationData::SetDataValid(), mitk::NavigationData::SetOrientation(), and mitk::NavigationData::SetPosition().

{

  // only update data if m_Transform was set
  if(m_Transform.IsNull())
  {
    itkExceptionMacro("Invalid parameter: Transform was not set!  Use SetRigid3DTransform() before updating the filter.");
    return;  
  }
  else
  {
    this->CreateOutputsForAllInputs(); // make sure that we have the same number of outputs as inputs

    /* update outputs with tracking data from tools */
    for (unsigned int i = 0; i < this->GetNumberOfOutputs() ; ++i)
    {
      mitk::NavigationData* output = this->GetOutput(i);
      assert(output);
      const mitk::NavigationData* input = this->GetInput(i);
      assert(input);

      if (input->IsDataValid() == false)
      {
        output->SetDataValid(false);
        continue;
      }

      mitk::NavigationData::PositionType tempCoordinateIn, tempCoordinateOut;
      tempCoordinateIn = input->GetPosition();

      itk::Point<float,3> itkPointIn, itkPointOut;
      itkPointIn[0] = tempCoordinateIn[0];
      itkPointIn[1] = tempCoordinateIn[1];
      itkPointIn[2] = tempCoordinateIn[2];

      //do the transform
      itkPointOut = m_Transform->TransformPoint( itkPointIn );  

      tempCoordinateOut[0] = itkPointOut[0];
      tempCoordinateOut[1] = itkPointOut[1];
      tempCoordinateOut[2] = itkPointOut[2];

      output->Graft(input); // First, copy all information from input to output
      output->SetPosition(tempCoordinateOut);// Then change the member(s): add new position of navigation data after tranformation
      output->SetDataValid(true); // operation was successful, therefore data of output is valid.

      //---transform orientation
      NavigationData::OrientationType  quatIn = input->GetOrientation();
      vnl_quaternion<double> const vnlQuatIn(quatIn.x(), quatIn.y(), quatIn.z(), quatIn.r());

      itk::Matrix<float,3,3> rotMatrix = m_Transform->GetMatrix();
      itk::Matrix<double,3,3> rotMatrixD;

      mitk::TransferMatrix(rotMatrix,rotMatrixD);

      m_QuatOrgRigidTransform->SetRotationMatrix(rotMatrixD);
      m_QuatTmpTransform->SetRotation(vnlQuatIn);
      m_QuatTmpTransform->Compose(m_QuatOrgRigidTransform,false);

      vnl_quaternion<double> vnlQuatOut = m_QuatTmpTransform->GetRotation();
      NavigationData::OrientationType quatOut(vnlQuatOut[0], vnlQuatOut[1], vnlQuatOut[2], vnlQuatOut[3]);
      
      output->SetOrientation(quatOut);


    }
  }
}
virtual const char* mitk::NavigationDataTransformFilter::GetClassName (  ) const [virtual]
static Pointer mitk::NavigationDataTransformFilter::New (  ) [static]
void mitk::NavigationDataTransformFilter::SetRigid3DTransform ( TransformType::Pointer  transform )

Set the rigid transform used to transform the input navigation data.

Documentation

Definition at line 37 of file mitkNavigationDataTransformFilter.cpp.

{
  m_Transform = transform; 
  this->Modified();
}

Member Data Documentation

itk::QuaternionRigidTransform<double>::Pointer mitk::NavigationDataTransformFilter::m_QuatOrgRigidTransform [protected]

transform needed to rotate orientation

Definition at line 58 of file mitkNavigationDataTransformFilter.h.

Referenced by NavigationDataTransformFilter().

itk::QuaternionRigidTransform<double>::Pointer mitk::NavigationDataTransformFilter::m_QuatTmpTransform [protected]

further transform needed to rotate orientation

Definition at line 59 of file mitkNavigationDataTransformFilter.h.

Referenced by NavigationDataTransformFilter().

TransformType::Pointer mitk::NavigationDataTransformFilter::m_Transform [protected]

transform which will be applied on navigation data(s)

Definition at line 69 of file mitkNavigationDataTransformFilter.h.

Referenced by NavigationDataTransformFilter().


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