Go to the documentation of this file.00001
00002 #ifndef vpgl_essential_matrix_h_
00003 #define vpgl_essential_matrix_h_
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include <vnl/vnl_fwd.h>
00019 #include <vnl/vnl_matrix_fixed.h>
00020 #include <vgl/vgl_fwd.h>
00021 #include <vcl_iosfwd.h>
00022
00023 #include "vpgl_perspective_camera.h"
00024 #include "vpgl_calibration_matrix.h"
00025 #include "vpgl_fundamental_matrix.h"
00026
00027
00028 template <class T>
00029 class vpgl_essential_matrix : public vpgl_fundamental_matrix<T>
00030 {
00031 public:
00032
00033
00034
00035 vpgl_essential_matrix();
00036
00037
00038 vpgl_essential_matrix( const vpgl_fundamental_matrix<T>& F,
00039 const vpgl_calibration_matrix<T>& K_left,
00040 const vpgl_calibration_matrix<T>& K_right);
00041
00042
00043
00044
00045 vpgl_essential_matrix( const vpgl_perspective_camera<T>& cr,
00046 const vpgl_perspective_camera<T>& cl );
00047
00048
00049 vpgl_essential_matrix( const vnl_matrix_fixed<T,3,3>& E ) : vpgl_fundamental_matrix<T>(E) {}
00050
00051
00052 vpgl_essential_matrix(const vpgl_essential_matrix<T>& other);
00053
00054
00055 const vpgl_essential_matrix<T>& operator=( const vpgl_essential_matrix<T>& em );
00056
00057
00058 virtual ~vpgl_essential_matrix();
00059 };
00060
00061
00062
00063
00064 template <class T>
00065 bool extract_left_camera(const vpgl_essential_matrix<T>& E,
00066 const vgl_point_2d<T>& left_corr,
00067 const vgl_point_2d<T>& right_corr,
00068 vpgl_perspective_camera<T>& p_left,
00069 const T translation_mag = (T)1);
00070
00071
00072
00073 template <class T>
00074 vcl_ostream& operator<<(vcl_ostream& s, vpgl_essential_matrix<T> const& p);
00075
00076
00077 template <class T>
00078 vcl_istream& operator>>(vcl_istream& s, vpgl_essential_matrix<T>& p);
00079
00080 #endif // vpgl_essential_matrix_h_