00001 #ifndef LOPER_CAMERACALIBRATOR
00002 #define LOPER_CAMERACALIBRATOR
00003
00014 #include <vector>
00015 #include <assert.h>
00016 #include "ImageCalibrator.hpp"
00017
00018
00019
00020 class CameraCalibrator
00021 {
00022 public:
00023 CameraCalibrator() :
00024 intrinsics(3,3)
00025 {}
00026
00027 void addImage (ImageCalibrator i);
00028
00029 int getNumImages() { return images.size(); }
00030 int getNumPoints();
00031
00032 void calculateClosedIntrinsics (double &alpha, double &beta, double &u0, double &v0, double &skewness);
00033 double calculateOptimizedIntrinsics (double &alpha, double &beta, double &u0, double &v0, double &skewness, double &k0, double &k1, bool bWithRadialDist);
00034
00035 void getClosedFormSolution ();
00036 double evaluate_f(const GslVector &guess, GslVector & result);
00037 void evaluate_df(const GslVector &guess, GslMatrix & result);
00038
00039 private:
00040 std::vector< ImageCalibrator > images;
00041
00042 GslMatrix intrinsics;
00043 bool bUseRadialDistortion;
00044 double k0;
00045 double k1;
00046 };
00047
00048 #endif // LOPER_CAMERACALIBRATOR