contrib/gel/vmal/vmal_dense_matching.h
Go to the documentation of this file.
00001 #ifndef vmal_dense_matching_h_
00002 #define vmal_dense_matching_h_
00003 
00004 //------------------------------------------------------------------------------
00005 // .NAME        vmal_dense_matching
00006 // .INCLUDE     vmal/vmal_dense_matching.h
00007 // .FILE        vmal_dense_matching.cxx
00008 // .SECTION Description:
00009 //
00010 // .SECTION Author
00011 //   L. Guichard
00012 // .SECTION Modifications:
00013 //------------------------------------------------------------------------------
00014 
00015 
00016 #include <vmal/vmal_multi_view_data_edge_sptr.h>
00017 #include <vnl/vnl_double_3x3.h>
00018 
00019 double vmal_round(double a);
00020 int vmal_round_int(double a);
00021 
00022 class vmal_dense_matching
00023 {
00024  public:
00025 
00026   vmal_dense_matching(const vnl_double_3x3 & H0,
00027                       const vnl_double_3x3 & H1);
00028 
00029   ~vmal_dense_matching();
00030 
00031   void set_fmatrix(const vnl_double_3x3 & F);
00032 
00033   void set_hmatrix(const vnl_double_3x3 & H);
00034 
00035 
00036   // Between two set of lines in 2 images that are matched, it compute
00037   //the best lines using the fundamental constraint.
00038   void refine_lines_using_F(vmal_multi_view_data_edge_sptr mvd_edge,
00039                             vmal_multi_view_data_edge_sptr res);
00040   // Between two set of lines in 2 images that are matched, it compute
00041   //the best lines using the homography.
00042   void refine_lines_using_H(vmal_multi_view_data_edge_sptr mvd_edge,
00043                             vmal_multi_view_data_edge_sptr res);
00044 
00045   void disparity_map(vmal_multi_view_data_edge_sptr mvd_edge,
00046                      int h, int w);
00047 
00048  private:
00049   vnl_double_3x3 H0_,H1_,F_;
00050   vnl_double_3x3 H_;
00051   int type_; //1 for Fundamental matrix, 2 for Homography matrix
00052 };
00053 
00054 #endif