00001
00002
00003
00004
00005
00017 #ifndef _SIGNPIVOTCALIBRATION_H_
00018 #define _SIGNPIVOTCALIBRATION_H_
00019
00020 #include <vector>
00021 #include "itkVersorRigid3DTransform.h"
00022
00023 #include <SignDLL.h>
00024
00025 typedef itk::Versor<double> QuaternionType;
00026 typedef itk::Vector<double> TranslationType;
00027
00028 class SIGN_EXPORT SignPivotCalibration
00029 {
00030 public:
00031 SignPivotCalibration();
00032 ~SignPivotCalibration();
00033
00034 unsigned int GetNumberOfSamples() const;
00035
00039 void AddSample(std::vector<double> quat,std::vector<double> trans);
00041 void CalculateCalibration();
00042
00044 void GetPivotPosition(double pos[3]);
00046 void GetTranslation(double trans[3]);
00048 double GetRMSE();
00049
00050 private:
00051
00052 double pivotPosition[3];
00053 itk::Vector<double> translation;
00054 double RMSE;
00055 bool validPivotCalibration;
00056
00057 std::vector<QuaternionType> quaternionSampleCollection;
00058 std::vector<TranslationType> translationSampleCollection;
00059 };
00060
00061 #endif