contrib/oxl/mvl/TripleMatchSetLineSeg.h
Go to the documentation of this file.
00001 // This is oxl/mvl/TripleMatchSetLineSeg.h
00002 #ifndef TripleMatchSetLineSeg_h_
00003 #define TripleMatchSetLineSeg_h_
00004 #ifdef VCL_NEEDS_PRAGMA_INTERFACE
00005 #pragma interface
00006 #endif
00007 //:
00008 // \file
00009 // \brief Three-view line matches
00010 //
00011 //  TripleMatchSetLineSeg is a TripleMatchSet that holds matches
00012 //  between corners in three LineSegSets.
00013 //
00014 // \author
00015 //     Andrew W. Fitzgibbon, Oxford RRG, 09 Aug 96
00016 //-----------------------------------------------------------------------------
00017 
00018 #include "PairMatchSetLineSeg.h"
00019 #include "TripleMatchSet.h"
00020 
00021 class LineSegSet;
00022 class PairMatchSetLineSeg;
00023 class HomgLineSeg2D;
00024 
00025 class TripleMatchSetLineSeg : public TripleMatchSet
00026 {
00027  public:
00028   TripleMatchSetLineSeg();
00029   TripleMatchSetLineSeg(LineSegSet& lines1, LineSegSet& lines2, LineSegSet& lines3);
00030   TripleMatchSetLineSeg(const PairMatchSetLineSeg&, const PairMatchSetLineSeg&);
00031 
00032   void set(LineSegSet& lines1, LineSegSet& lines2, LineSegSet& lines3);
00033 
00034   PairMatchSetLineSeg* get_matches12() { return (PairMatchSetLineSeg*)match12_; }
00035   PairMatchSetLineSeg* get_matches23() { return (PairMatchSetLineSeg*)match23_; }
00036 
00037   LineSegSet* get_linesegs1() { return get_matches12()->get_linesegs1(); }
00038   LineSegSet* get_linesegs2() { return get_matches12()->get_linesegs2(); }
00039   LineSegSet* get_linesegs3() { return get_matches23()->get_linesegs2(); }
00040 
00041   PairMatchSetLineSeg const* get_matches12() const { return (PairMatchSetLineSeg const*)match12_; }
00042   PairMatchSetLineSeg const* get_matches23() const { return (PairMatchSetLineSeg const*)match23_; }
00043 
00044   LineSegSet const* get_linesegs1() const { return get_matches12()->get_linesegs1(); }
00045   LineSegSet const* get_linesegs2() const { return get_matches12()->get_linesegs2(); }
00046   LineSegSet const* get_linesegs3() const { return get_matches23()->get_linesegs2(); }
00047 
00048   //: Copy inliers to three arrays, and record the original indices.
00049   void extract_matches(vcl_vector <HomgLineSeg2D>& linesegs1, vcl_vector <int>& lineseg_index_1,
00050                        vcl_vector <HomgLineSeg2D>& linesegs2, vcl_vector <int>& lineseg_index_2,
00051                        vcl_vector <HomgLineSeg2D>& linesegs3, vcl_vector <int>& lineseg_index_3) const;
00052 
00053   //: Copy inliers to three arrays
00054   void extract_matches(vcl_vector <HomgLineSeg2D>& linesegs1,
00055                        vcl_vector <HomgLineSeg2D>& linesegs2,
00056                        vcl_vector <HomgLineSeg2D>& linesegs3) const;
00057 };
00058 
00059 #endif // TripleMatchSetLineSeg_h_