Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
mitkTransform.h
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 #ifndef MITKTRANSFORM_H
13 #define MITKTRANSFORM_H
14 
15 #include <itkObject.h>
16 #include <opencv2/calib3d.hpp>
17 #include <mitkCommon.h>
18 #include <mitkNumericTypes.h>
19 #include <mitkNavigationData.h>
20 #include <tinyxml.h>
21 #include <sstream>
22 #include <vtkMatrix4x4.h>
23 #include <mitkXMLSerializable.h>
24 #include <MitkCameraCalibrationExports.h>
25 
26 namespace mitk {
27 
36  class MITKCAMERACALIBRATION_EXPORT Transform: public itk::Object,
37  public XMLSerializable
38  {
39  public:
40  mitkClassMacroItkParent(Transform, itk::Object);
41  itkFactorylessNewMacro(Transform);
43  mitkNewMacro1Param(Transform, const std::string&);
44 
49  static const std::string UNKNOWN_TYPE;
50  static const std::string ENDOSCOPE_SCOPE_TOOL;
51  static const std::string ENDOSCOPE_CAM_TOOL;
52  static const std::string CHESSBOARD_TOOL;
53  static const std::string POINTER_TOOL;
54  static const std::string POINTER_TO_CHESSBOARD_ORIGIN;
55  static const std::string POINTER_TO_CHESSBOARD_X_SUPPORT_POINT;
56  static const std::string POINTER_TO_CHESSBOARD_Y_SUPPORT_POINT;
57  static const std::string BOARD_TO_BOARD_TOOL;
58  static const std::string REFERENCE_CAMERA_TRANSFORM;
59  static const std::string REFERENCE_SCOPE_TRANSFORM;
60  static const std::string EYE_TO_HAND_TRANSFORM;
61  static const std::string CAMERA_EXTRINSICS;
62 
63  itkGetConstMacro(Type, std::string);
64  itkSetMacro(Type, std::string&);
69  void Copy( const mitk::Transform* transform );
70 
75  void Copy( const mitk::NavigationData* transform );
76 
83  void TransposeRotation();
84 
88  mitk::Transform::Pointer Clone() const;
89 
97  void Concatenate( mitk::Transform* transform );
101  void Concatenate( const vnl_matrix_fixed<mitk::ScalarType, 4, 4>& transform );
102 
106  void Concatenate( const vtkMatrix4x4* transform );
107 
111  void Invert();
115  void Reset();
116 
120  void FromXML(TiXmlElement* elem) override;
124  void FromCSVFile(const std::string& file);
128  void SetNavigationData( const mitk::NavigationData* naviData );
132  void SetOrientation( const vnl_quaternion<mitk::ScalarType>& orientation);
136  void SetOrientation( const vnl_quaternion<float>& orientation);
140  void SetTranslation( const vnl_vector_fixed<mitk::ScalarType, 3>& transl);
144  void SetTranslation( const vnl_vector<double>& transl);
148  void SetPosition( const mitk::Point3D& transl);
152  void SetRotation( vnl_matrix_fixed<mitk::ScalarType, 3, 3>& mat);
156  void SetRotation( vnl_matrix<mitk::ScalarType>& mat);
160  void SetMatrix( const vnl_matrix_fixed<mitk::ScalarType, 4, 4>& mat);
164  void SetMatrix( const vtkMatrix4x4* mat);
168  void SetTranslation( float* array );
174  void SetRotation( float* array );
178  void SetTranslation( double array[3] );
182  void SetRotation( double array[3][3] );
183 
187  void SetTranslation( const cv::Mat& transl);
191  void SetRotation( const cv::Mat& mat );
195  void SetRotationVector( const cv::Mat& rotVec);
196 
200  mitk::NavigationData::Pointer GetNavigationData() const;
204  mitk::Point3D GetPosition() const;
208  mitk::Point3D GetTranslation() const;
212  bool IsValid() const;
216  void SetValid(bool valid);
217 
221  mitk::Quaternion GetOrientation() const;
222 
226  vnl_matrix_fixed<mitk::ScalarType, 4, 4> GetMatrix() const;
230  void GetMatrix(vtkMatrix4x4* matrix) const;
235  void GetVtkOpenGlMatrix(vtkMatrix4x4* matrix) const;
236 
237  mitk::Point3D TransformPoint(mitk::Point3D point) const;
238 
242  void ToXML(TiXmlElement* elem) const override;
246  std::string ToString() const;
250  std::string ToCSVString() const;
254  std::string ToMatlabString(const std::string& varname="transform",
255  bool printLastRow=true) const;
259  void ToCSVFile(const std::string& file) const;
263  void ToMatlabFile(const std::string& file
264  , const std::string& varname="transform") const;
268  cv::Mat GetCvTranslation() const;
269  cv::Mat GetCvRotationVector() const;
270  cv::Mat GetCvRotationMatrix() const;
271  cv::Mat GetCvMatrix() const;
272 
276  vnl_vector_fixed<mitk::ScalarType, 3> GetVnlTranslation() const;
277  vnl_vector_fixed<double, 3> GetVnlDoubleTranslation() const;
278  vnl_quaternion<double> GetVnlDoubleQuaternion() const;
279  vnl_matrix_fixed<mitk::ScalarType, 3, 3> GetVnlRotationMatrix() const;
280  vnl_matrix_fixed<double, 4, 4> GetVnlDoubleMatrix() const;
281 
282  protected:
283  Transform();
284  Transform(const mitk::NavigationData* nd);
285  Transform(const std::string& s);
286 
287  // everything is stored here
288  mitk::NavigationData::Pointer m_NavData;
289 
293  std::string m_Type;
294 };
295 
296 } // namespace mitk
297 
298 MITKCAMERACALIBRATION_EXPORT std::ostream& operator<<
299  (std::ostream& os, mitk::Transform::Pointer p);
300 
301 #endif // MITKTRANSFORM_H
static const std::string BOARD_TO_BOARD_TOOL
Definition: mitkTransform.h:57
#define mitkNewMacro1Param(classname, type)
Definition: mitkCommon.h:72
Navigation Data.
static const std::string ENDOSCOPE_CAM_TOOL
Definition: mitkTransform.h:51
DataCollection - Class to facilitate loading/accessing structured data.
static const std::string UNKNOWN_TYPE
Definition: mitkTransform.h:49
mitk::NavigationData::Pointer m_NavData
std::string m_Type
static const std::string EYE_TO_HAND_TRANSFORM
Definition: mitkTransform.h:60
static const std::string ENDOSCOPE_SCOPE_TOOL
Definition: mitkTransform.h:50
#define mitkClassMacroItkParent(className, SuperClassName)
Definition: mitkCommon.h:49
static const std::string REFERENCE_CAMERA_TRANSFORM
Definition: mitkTransform.h:58
vnl_quaternion< ScalarType > Quaternion
static const std::string POINTER_TO_CHESSBOARD_ORIGIN
Definition: mitkTransform.h:54
class representing a transfrom in 3D
Definition: mitkTransform.h:36
static const std::string CHESSBOARD_TOOL
Definition: mitkTransform.h:52
static const std::string POINTER_TOOL
Definition: mitkTransform.h:53
static const std::string POINTER_TO_CHESSBOARD_Y_SUPPORT_POINT
Definition: mitkTransform.h:56
static const std::string CAMERA_EXTRINSICS
Definition: mitkTransform.h:61
interface for all classes able to write themselves to XML files
static mitk::PlanarFigure::Pointer Clone(mitk::PlanarFigure::Pointer original)
static const std::string REFERENCE_SCOPE_TRANSFORM
Definition: mitkTransform.h:59
static const std::string POINTER_TO_CHESSBOARD_X_SUPPORT_POINT
Definition: mitkTransform.h:55