ImageMolecule.h
Go to the documentation of this file.
00001 /*
00002  * ImageMolecule.h
00003  *
00004  *  Created on: Oct 20, 2010
00005  *      Author: erublee
00006  */
00007 
00008 #ifndef IMAGEMOLECULE_H_
00009 #define IMAGEMOLECULE_H_
00010 #include <opencv2/core/core.hpp>
00011 #include <string>
00012 #include <vector>
00013 #include <list>
00014 #include <map>
00015 #include <set>
00016 
00017 #include <pano_core/ImageAtom.h>
00018 #include <pano_core/ModelFitter.h>
00019 
00020 namespace pano {
00021 
00022 
00027 class ImageMolecule: public serializable {
00028 public:
00031     ImageMolecule();
00032 
00038     ImageMolecule(const ImageMolecule& rhs);
00039 
00050     ImageMolecule(const std::list<AtomPair> & pairs);
00051 
00052 
00053 
00054     ImageMolecule(const std::vector<AtomPair> & pairs);
00055 
00056     ~ImageMolecule(){}
00057 
00065     void insertAtom(const cv::Ptr<ImageAtom>& atom) throw();
00066 
00067     void insertAtoms(const std::set<cv::Ptr<ImageAtom> > & atoms);
00068 
00074     void insertPair(const AtomPair& pair) throw();
00075 
00076     bool removePair(const AtomPair& pair) throw();
00077 
00078     void removeBadPairs();
00079 
00084     void insertPairs(const std::list<AtomPair>& pairs) throw();
00085     void insertPairs(const std::vector<AtomPair>& pairs) throw();
00086 
00091     void peelAtoms( int flag = 0);
00092 
00097     std::set<cv::Ptr<ImageAtom> >& getAtoms() throw();
00098 
00103     const std::set<cv::Ptr<ImageAtom> >& getAtoms() const throw();
00104 
00105 
00110     std::vector<AtomPair>& getPairs() throw();
00111 
00116     const std::vector<AtomPair>& getPairs() const throw();
00117 
00126     void setAnchor(const cv::Ptr<ImageAtom>& atom) throw();
00127 
00132     const cv::Ptr<ImageAtom>& getAnchor() const throw(std::logic_error);
00133 
00137     bool hasAtom(const cv::Ptr<ImageAtom>& atom) const
00138             throw();
00139 
00143     void hasAtomThrow(const cv::Ptr<ImageAtom>& atom)const
00144             throw(std::logic_error);
00145 
00153     const std::list<int>* getPairIndices(const cv::Ptr<ImageAtom>& atom) const;
00154 
00155 
00156 
00157     const AtomPair* getPairByIndex(size_t idx) const;
00158 
00159     cv::Ptr<ImageAtom> getMaximallyConnectedAtom( int node_offset = 0 ) const;
00160 
00161     void merge(cv::Ptr<ImageAtom> pivot, const ImageMolecule& molecule);
00162 
00163     /*
00164      * serializable functions
00165      */
00166     virtual int version() const
00167     {
00168       return 0;
00169     }
00170 
00171     virtual void serialize(cv::FileStorage& fs) const;
00172     virtual void deserialize(const cv::FileNode& fn);
00173 
00174 private:
00175     std::map<cv::Ptr<ImageAtom> , std::list<int> > pairmap_;
00176     std::set<cv::Ptr<ImageAtom> > atoms_;
00177     std::vector<AtomPair > pairs_;
00178     cv::Ptr<ImageAtom> anchor_;
00179 };
00180 
00181 }
00182 
00183 
00184 #endif /* IMAGEMOLECULE_H_ */


pano_core
Author(s): Ethan Rublee
autogenerated on Wed Aug 26 2015 16:34:01