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