Basic Image AlgorithmS Library  2.8.0
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
GaussHelmert.hh
1 #ifndef _GaussHelmert_hh_
2 #define _GaussHelmert_hh_
3 #include <bias_config.h>
4 
5 #include <Base/Debug/Debug.hh>
6 
7 
8 #include <Base/Math/Vector.hh>
9 #include <Base/Math/Matrix.hh>
10 //template <class T> class Vector;
11 //template <class T> class Matrix;
12 
13 
14 namespace BIAS {
15 
16  //template <class T> class Vector;
17  //template <class T> class Matrix;
18 
19 /** @class GaussHelmert
20  * @ingroup g_mathalgo
21  @brief see Foerstner, 2004, "Uncertainty And Projective Geometry"
22  ! untested !
23  @author woelk 04/2006
24 */
25  class BIASMathAlgo_EXPORT GaussHelmert
26  : public Debug
27  {
28  public:
29 
30  virtual ~GaussHelmert();
31 
32  int Solve(BIAS::Vector<double>& observations,
33  const BIAS::Matrix<double>& obs_cov,
36 
37 
38  protected:
40  double Precision_;
41 
42  /// protected constructor to prohibit instantiation of class
43  GaussHelmert();
44 
45  void ComputeNormalSystem_(const Matrix<double>& A, const Matrix<double>& B,
46  const Matrix<double>& H,
47  const Matrix<double>& Sigma_ll,
48  const Vector<double>& x_hat,
49  const Vector<double>& l_hat,
50  const Vector<double>& v_hat,
51  Matrix<double>& normal_matrix,
52  Vector<double>& normal_vector);
53 
54  /// jacobian of g_() with respect to x at x, l
55  virtual Matrix<double>& GetA_(const Vector<double>& l,
56  const Vector<double>& x) = 0;
57 
58  /// transposed of jacobian of g_() with respect to l at x, l
59  virtual Matrix<double>& GetB_(const Vector<double>& l,
60  const Vector<double>& x) = 0;
61 
62  /// transposed of jacobian of h_() with respect to x at x
63  virtual Matrix<double>& GetH_(const Vector<double>& x) = 0;
64 
65  /// joint constraints on obseravtions and unknowns
66  virtual Vector<double>& g_(const Vector<double>& l,
67  const Vector<double>& x) = 0;
68 
69  /// constraints on the unknowns
70  virtual Vector<double>& h_(const Vector<double>& x) = 0;
71 
72  }; // class
73 
74 } // namespace
75 
76 #endif // _GaussHelmert_hh_
see Foerstner, 2004, &quot;Uncertainty And Projective Geometry&quot; ! untested !
Definition: GaussHelmert.hh:25