Thin-plate-spline-based landmark-based curved geometry. More...
#include <mitkSphereLandmarkProjector.h>
Public Types | |
typedef SphereLandmarkProjector | Self |
typedef LandmarkProjector | Superclass |
typedef itk::SmartPointer< Self > | Pointer |
typedef itk::SmartPointer < const Self > | ConstPointer |
Public Member Functions | |
virtual const char * | GetClassName () const |
virtual void | ProjectLandmarks (const mitk::PointSet::DataType::PointsContainer *targetLandmarks) |
Static Public Member Functions | |
static Pointer | New () |
Protected Member Functions | |
SphereLandmarkProjector () | |
virtual | ~SphereLandmarkProjector () |
virtual void | ComputeCompleteAbstractTransform () |
Compute the transform from parameter space to world space incorporating the given interpolating transform, which uses the landmarks. | |
Protected Attributes | |
vtkSphericalTransform * | m_SphericalTransform |
vtkTransform * | m_SphereRotation |
vtkTransform * | m_SpatialPlacementTransform |
vtkGeneralTransform * | m_PlaneToSphericalTransform |
mitk::PlaneGeometry::Pointer | m_SphereParameterPlane |
Thin-plate-spline-based landmark-based curved geometry.
Definition at line 37 of file mitkSphereLandmarkProjector.h.
typedef itk::SmartPointer<const Self> mitk::SphereLandmarkProjector::ConstPointer |
Reimplemented from mitk::LandmarkProjector.
Definition at line 40 of file mitkSphereLandmarkProjector.h.
typedef itk::SmartPointer<Self> mitk::SphereLandmarkProjector::Pointer |
Reimplemented from mitk::LandmarkProjector.
Definition at line 40 of file mitkSphereLandmarkProjector.h.
Reimplemented from mitk::LandmarkProjector.
Definition at line 40 of file mitkSphereLandmarkProjector.h.
Reimplemented from mitk::LandmarkProjector.
Definition at line 40 of file mitkSphereLandmarkProjector.h.
mitk::SphereLandmarkProjector::SphereLandmarkProjector | ( | ) | [protected] |
Definition at line 26 of file mitkSphereLandmarkProjector.cpp.
References mitk::LandmarkProjector::m_ParameterPlane, m_PlaneToSphericalTransform, m_SpatialPlacementTransform, m_SphereParameterPlane, m_SphereRotation, m_SphericalTransform, and New().
{ m_SphericalTransform = vtkSphericalTransform::New(); m_SphereRotation = vtkTransform::New(); m_SpatialPlacementTransform = vtkTransform::New(); m_PlaneToSphericalTransform = vtkGeneralTransform::New(); m_SphereRotation->RotateX(90); //setup parameter-plane of the sphere: x is phi, y is theta; the radius is always 1 mitk::ScalarType origin[3] = {1, 0, 2*vnl_math::pi}; // (1, 0, 6.28) (1, 0, 0) mitk::ScalarType right[3] = {0, 0, -2*vnl_math::pi}; // (0,3.14, 0) (0, 0, 6.28) mitk::ScalarType bottom[3] = {0, vnl_math::pi, 0}; // (0, 0,-6.28) (0,3.14, 0) m_SphereParameterPlane = mitk::PlaneGeometry::New(); m_SphereParameterPlane->InitializeStandardPlane(right, bottom); m_SphereParameterPlane->SetOrigin(origin); m_SphereParameterPlane->SetSizeInUnits(100, 50); m_ParameterPlane = m_SphereParameterPlane; }
mitk::SphereLandmarkProjector::~SphereLandmarkProjector | ( | ) | [protected, virtual] |
Definition at line 48 of file mitkSphereLandmarkProjector.cpp.
{ m_SphericalTransform->Delete(); m_SphereRotation->Delete(); m_SpatialPlacementTransform->Delete(); m_PlaneToSphericalTransform->Delete(); }
void mitk::SphereLandmarkProjector::ComputeCompleteAbstractTransform | ( | ) | [protected, virtual] |
Compute the transform from parameter space to world space incorporating the given interpolating transform, which uses the landmarks.
Called after a new interpolating transform is set via SetInterpolatingAbstractTransform().
Implements mitk::LandmarkProjector.
Definition at line 56 of file mitkSphereLandmarkProjector.cpp.
{ m_PlaneToSphericalTransform->Identity(); m_PlaneToSphericalTransform->PostMultiply(); m_PlaneToSphericalTransform->Concatenate(m_SphericalTransform); m_PlaneToSphericalTransform->Concatenate(m_SphereRotation); m_PlaneToSphericalTransform->Concatenate(m_InterpolatingAbstractTransform);//GetInterpolatingAbstractTransform()); m_PlaneToSphericalTransform->Concatenate(m_SpatialPlacementTransform); m_CompleteAbstractTransform = m_PlaneToSphericalTransform; }
virtual const char* mitk::SphereLandmarkProjector::GetClassName | ( | ) | const [virtual] |
Reimplemented from mitk::LandmarkProjector.
static Pointer mitk::SphereLandmarkProjector::New | ( | ) | [static] |
Referenced by mitk::PointSetToCurvedGeometryFilter::GenerateData(), and SphereLandmarkProjector().
void mitk::SphereLandmarkProjector::ProjectLandmarks | ( | const mitk::PointSet::DataType::PointsContainer * | targetLandmarks ) | [virtual] |
Implements mitk::LandmarkProjector.
Definition at line 68 of file mitkSphereLandmarkProjector.cpp.
References QuadProgPP::max().
{ unsigned int size=targetLandmarks->Size(); mitk::PointSet::DataType::PointsContainer::ConstIterator pointiterator, start = targetLandmarks->Begin(); mitk::PointSet::DataType::PointsContainer::ElementIdentifier id; //Part I: Calculate center of sphere mitk::Point3D center; center.Fill(0); mitk::ScalarType radius; mitk::PointSet::PointType point; //determine center for(id=0, pointiterator=start;id<size;++id, ++pointiterator) { point = pointiterator->Value(); center[0]+=point[0]; center[1]+=point[1]; center[2]+=point[2]; } center[0]/=(mitk::ScalarType)size; center[1]/=(mitk::ScalarType)size; center[2]/=(mitk::ScalarType)size; //determine radius switch(0) { case 0/*MIN*/: radius = mitk::ScalarTypeNumericTraits::max(); for(id=0, pointiterator=start;id<size;++id, ++pointiterator) { point = pointiterator->Value(); mitk::Vector3D v; v[0]=point[0]-center[0]; v[1]=point[1]-center[1]; v[2]=point[2]-center[2]; if (v.GetNorm() < radius) radius = v.GetNorm(); } break; case 1/*MAX*/: radius = 0; for(id=0, pointiterator=start;id<size;++id, ++pointiterator) { point = pointiterator->Value(); mitk::Vector3D v; v[0]=point[0]-center[0]; v[1]=point[1]-center[1]; v[2]=point[2]-center[2]; if (v.GetNorm() > radius) radius = v.GetNorm(); } break; case 2/*AVERAGE*/: radius = 0; for(id=0, pointiterator=start;id<size;++id, ++pointiterator) { point = pointiterator->Value(); mitk::Vector3D v; v[0]=point[0]-center[0]; v[1]=point[1]-center[1]; v[2]=point[2]-center[2]; radius += v.GetNorm(); } radius*=1.0/size; break; } mitk::Point3D origin = m_SphereParameterPlane->GetOrigin(); origin[0]=radius; m_SphereParameterPlane->SetOrigin(origin); m_SpatialPlacementTransform->GetMatrix()->SetElement(0, 3, center[0]); m_SpatialPlacementTransform->GetMatrix()->SetElement(1, 3, center[1]); m_SpatialPlacementTransform->GetMatrix()->SetElement(2, 3, center[2]); //Part II: Project points on sphere mitk::Point3D projectedPoint; m_WritableFinalTargetLandmarks->Initialize(); m_ProjectedLandmarks->Initialize(); m_WritableFinalTargetLandmarks->Reserve(size); m_ProjectedLandmarks->Reserve(size); for(id=0, pointiterator=start;id<size;++id, ++pointiterator) { point = pointiterator->Value(); mitk::Vector3D v; v=point-center; mitk::FillVector3D(point, v[0], v[1], v[2]); v.Normalize(); v*=radius; mitk::FillVector3D(projectedPoint, v[0], v[1], v[2]); m_WritableFinalTargetLandmarks->InsertElement(id, point); m_ProjectedLandmarks->InsertElement(id, projectedPoint); } }
vtkGeneralTransform* mitk::SphereLandmarkProjector::m_PlaneToSphericalTransform [protected] |
Definition at line 54 of file mitkSphereLandmarkProjector.h.
Referenced by SphereLandmarkProjector().
vtkTransform* mitk::SphereLandmarkProjector::m_SpatialPlacementTransform [protected] |
Definition at line 53 of file mitkSphereLandmarkProjector.h.
Referenced by SphereLandmarkProjector().
Definition at line 56 of file mitkSphereLandmarkProjector.h.
Referenced by SphereLandmarkProjector().
vtkTransform* mitk::SphereLandmarkProjector::m_SphereRotation [protected] |
Definition at line 52 of file mitkSphereLandmarkProjector.h.
Referenced by SphereLandmarkProjector().
vtkSphericalTransform* mitk::SphereLandmarkProjector::m_SphericalTransform [protected] |
Definition at line 51 of file mitkSphereLandmarkProjector.h.
Referenced by SphereLandmarkProjector().