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>


Public Types | |
| typedef itk::Rigid3DTransform < float > | TransformType |
| typedef NavigationDataTransformFilter | Self |
| typedef NavigationDataToNavigationDataFilter | Superclass |
| typedef itk::SmartPointer< Self > | Pointer |
| 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) | |
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.
| typedef itk::SmartPointer<const Self> mitk::NavigationDataTransformFilter::ConstPointer |
Reimplemented from mitk::NavigationDataToNavigationDataFilter.
Definition at line 43 of file mitkNavigationDataTransformFilter.h.
| typedef itk::SmartPointer<Self> mitk::NavigationDataTransformFilter::Pointer |
Reimplemented from mitk::NavigationDataToNavigationDataFilter.
Definition at line 43 of file mitkNavigationDataTransformFilter.h.
Reimplemented from mitk::NavigationDataToNavigationDataFilter.
Definition at line 43 of file mitkNavigationDataTransformFilter.h.
Reimplemented from mitk::NavigationDataToNavigationDataFilter.
Definition at line 43 of file mitkNavigationDataTransformFilter.h.
| typedef itk::Rigid3DTransform< float > mitk::NavigationDataTransformFilter::TransformType |
Definition at line 41 of file mitkNavigationDataTransformFilter.h.
| mitk::NavigationDataTransformFilter::NavigationDataTransformFilter | ( | ) | [protected] |
Definition at line 21 of file mitkNavigationDataTransformFilter.cpp.
References m_QuatOrgRigidTransform, m_QuatTmpTransform, m_Transform, and New().
: mitk::NavigationDataToNavigationDataFilter() { m_Transform = NULL; //transform to rotate orientation m_QuatOrgRigidTransform = itk::QuaternionRigidTransform<double>::New(); m_QuatTmpTransform = itk::QuaternionRigidTransform<double>::New(); }
| mitk::NavigationDataTransformFilter::~NavigationDataTransformFilter | ( | ) | [protected, virtual] |
Definition at line 32 of file mitkNavigationDataTransformFilter.cpp.
{
m_Transform = NULL;
}
| 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] |
Reimplemented from mitk::NavigationDataToNavigationDataFilter.
| static Pointer mitk::NavigationDataTransformFilter::New | ( | ) | [static] |
Referenced by mitkNavigationDataTransformFilterTest(), and NavigationDataTransformFilter().
| 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();
}
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().
1.7.2