Jafar
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
detector.hpp
00001 /* $Id$ */
00002 
00003 #ifndef SAMS_DETECTOR_HPP
00004 #define SAMS_DETECTOR_HPP
00005 
00006 #include <vector>
00007 #include <string>
00008 #include "kernel/keyValueFile.hpp"
00009 #include "image/Image.hpp"
00010 #include "gfm/HarrisLaplaceDetector.hpp"
00011 #include "sams/feature.hpp"
00012 
00013 namespace jafar {
00014   namespace sams {
00015 
00019     class Detector : public jafar::kernel::KeyValueFileSaveLoad {
00020     public:
00021       virtual ~Detector() {};
00022 
00027         virtual void compute(const jafar::image::Image& src_, 
00028         std::vector< jafar::sams::Feature *>& fVec_) const =0;
00029 
00030     }; // class Detector
00031 
00038     class SSDetector : public Detector {
00039       public :
00042       SSDetector() : byDefault(true) {};
00043 
00047         SSDetector(const std::string& file_);
00048 
00059         SSDetector(bool harrisPreProc_,
00060         int startScale_,
00061         int stopScale_,
00062         int nbins_,
00063         double yt_,
00064         double wt_,
00065         bool fplogpFlag_,
00066         int fplogpprec_ = 10000);
00067 
00069       virtual ~SSDetector() {
00070       };
00071 
00072 
00077         virtual void compute(const jafar::image::Image& src_, 
00078         std::vector< jafar::sams::Feature *>& fVec_) const;
00079 
00080 
00081     protected:
00085         void loadKeyValueFile(jafar::kernel::KeyValueFile const& keyValueFile);
00086 
00090         void saveKeyValueFile(jafar::kernel::KeyValueFile& keyValueFile);
00091 
00092     private:
00094       bool byDefault;
00096       bool harrisPreProc;
00098       int startScale;
00100       int stopScale;
00102       int nbins;
00104       double yt;
00106       double wt;
00108       bool fplogpFlag;
00110       int fplogpprec;
00111 
00113       std::vector<double> fplogp;
00114 
00117       void do_CalcSalScale1D(const jafar::image::Image &Image_,
00118         std::vector<jafar::sams::Feature *> &fVec_) const; 
00119 
00122       void clusterize(std::vector<jafar::sams::Feature *>& features_,
00123         std::vector<jafar::sams::Feature *>& clust_) const;
00124 
00125 
00126     }; // class SSDetector
00127 
00128 
00132     class DOGDetector : public Detector {
00133     public:
00134       DOGDetector () {};
00135       virtual ~DOGDetector () {};
00136 
00141         virtual void compute(const jafar::image::Image& src_, 
00142         std::vector< jafar::sams::Feature *>& fVec_) const;
00143     protected:
00147       void loadKeyValueFile(jafar::kernel::KeyValueFile const& keyValueFile) {
00148         JFR_WARNING("SIFTDetector::loadKeyValueFile: Not implemented");
00149       };
00150 
00154       void saveKeyValueFile(jafar::kernel::KeyValueFile& keyValueFile){
00155         JFR_WARNING("SIFTDetector::saveKeyValueFile: Not implemented");
00156       };
00157     }; /* class DOGDetector */
00158 
00162     class SHDetector : public Detector {
00163     public:
00164       struct Params {
00166         int startScale;
00168         int stopScale;
00170         int nbins;
00172         double yt;
00174         double wt;
00176         int max_count;
00177 
00178         Params(int start=3,int stop=33, int bins=16, double y=0.0, double w=0.5,int mc=500) :
00179         startScale(start), stopScale(stop), nbins(bins), yt(y), wt(w), max_count(mc) {};
00180       };
00181 
00182       SHDetector(Params params_=Params()) : params(params_) {};
00183 
00185       virtual ~SHDetector() {
00186       };
00187 
00188 
00193         virtual void compute(const jafar::image::Image& src_, 
00194         std::vector< jafar::sams::Feature *>& fVec_) const;
00195     protected:
00199       void loadKeyValueFile(jafar::kernel::KeyValueFile const& keyValueFile) {
00200         JFR_WARNING("SHDetector::loadKeyValueFile: Not implemented");
00201       };
00202 
00206       void saveKeyValueFile(jafar::kernel::KeyValueFile& keyValueFile){
00207         JFR_WARNING("SHDetector::saveKeyValueFile: Not implemented");
00208       };
00209     private:
00210       Params params;
00211     }; // class SHDetector
00212 
00213     // class HLDetector : public Detector {
00214 //    public:
00215 //      struct Params {
00216 //        double scale_step;
00217 //        int scaleSpaceSize;
00218 // 
00219 //        Params(double sstep=1.2, int ssize=17) 
00220 //          : scale_step(sstep), scaleSpaceSize(ssize) {};
00221 //      };
00222 // 
00223 //      HLDetector (Params p=Params()) 
00224 //        : params(p), hld(2.0,jafar::gfm::HarrisDetector::HS_EIGEN,3.0,p.scale_step,p.scaleSpaceSize) {};
00225 //      virtual ~HLDetector ();
00226 // 
00227 //      virtual void compute(const jafar::image::Image& src_, 
00228 //        std::vector< jafar::sams::Feature *>& fVec_) const;
00229 //    protected:
00230 //      /*! Load parameters from file
00231 //      * @param keyValueFile path to data file
00232 //      */
00233 //      void loadKeyValueFile(jafar::kernel::KeyValueFile const& keyValueFile) {
00234 //        JFR_WARNING("SHDetector::loadKeyValueFile: Not implemented");
00235 //      };
00236 // 
00237 //      /*! save parameters from file
00238 //      * @param keyValueFile path to data file
00239 //      */
00240 //      void saveKeyValueFile(jafar::kernel::KeyValueFile& keyValueFile){
00241 //        JFR_WARNING("SHDetector::saveKeyValueFile: Not implemented");
00242 //      };
00243 //    private:
00244 //      Params params;
00245 //      mutable jafar::gfm::HarrisLaplaceDetector hld;
00246 //    }; // class HLDetector
00247 
00248   } // namespace sams
00249 } // namespace jafar
00250 
00251 #endif // SAMS_DETECTOR_HPP
00252 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on Wed Oct 15 2014 00:37:27 for Jafar by doxygen 1.7.6.1
LAAS-CNRS