00001 /*========================================================================= 00002 00003 Program: Medical Imaging & Interaction Toolkit 00004 Language: C++ 00005 Date: $Date$ 00006 Version: $Revision$ 00007 00008 Copyright (c) German Cancer Research Center, Division of Medical and 00009 Biological Informatics. All rights reserved. 00010 See MITKCopyright.txt or https://www.mitk.org/copyright.html for details. 00011 00012 This software is distributed WITHOUT ANY WARRANTY; without even 00013 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00014 PURPOSE. See the above copyright notices for more information. 00015 00016 =========================================================================*/ 00017 00018 00019 #ifndef MITKTHINPLATESPLINECURVEDGEOMETRY_H_HEADER_INCLUDED_C1C68A2C 00020 #define MITKTHINPLATESPLINECURVEDGEOMETRY_H_HEADER_INCLUDED_C1C68A2C 00021 00022 #include "mitkLandmarkProjectorBasedCurvedGeometry.h" 00023 00024 class vtkPoints; 00025 class vtkThinPlateSplineTransform; 00026 00027 namespace mitk { 00028 00029 //##Documentation 00030 //## @brief Thin-plate-spline-based landmark-based curved geometry 00031 //## 00032 //## @ingroup Geometry 00033 class MITK_CORE_EXPORT ThinPlateSplineCurvedGeometry : public LandmarkProjectorBasedCurvedGeometry 00034 { 00035 public: 00036 mitkClassMacro(ThinPlateSplineCurvedGeometry, LandmarkProjectorBasedCurvedGeometry); 00037 00038 itkNewMacro(Self); 00039 00040 virtual void ComputeGeometry(); 00041 00042 virtual AffineGeometryFrame3D::Pointer Clone() const; 00043 00044 vtkThinPlateSplineTransform* GetThinPlateSplineTransform() const 00045 { 00046 return m_ThinPlateSplineTransform; 00047 } 00048 00049 virtual void SetSigma(float sigma); 00050 virtual float GetSigma() const; 00051 00052 virtual bool IsValid() const; 00053 00054 protected: 00055 ThinPlateSplineCurvedGeometry(); 00056 virtual ~ThinPlateSplineCurvedGeometry(); 00057 00058 vtkThinPlateSplineTransform* m_ThinPlateSplineTransform; 00059 00060 vtkPoints* m_VtkTargetLandmarks; 00061 vtkPoints* m_VtkProjectedLandmarks; 00062 00063 void InitializeGeometry(Self * newGeometry) const; 00064 }; 00065 00066 } // namespace mitk 00067 00068 #endif /* MITKTHINPLATESPLINECURVEDGEOMETRY_H_HEADER_INCLUDED_C1C68A2C */