123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- /**
- * @file GenericLocalFeatureSelection.h
- * @brief This class provides a generic chooser function for different descriptors, which are derived from LocalFeatureRepresentation.
- * @date 26.10.2011
- */
- #ifndef _NICE_OBJREC_LF_SELECTION_INCLUDE
- #define _NICE_OBJREC_LF_SELECTION_INCLUDE
- #include "vislearning/features/localfeatures/LocalFeatureRepresentation.h"
- #include "vislearning/features/localfeatures/LFMikolajczyk.h"
- #include "vislearning/features/localfeatures/LFPatches.h"
- #include "vislearning/features/localfeatures/LFGenericLocal.h"
- #include "vislearning/features/localfeatures/LFSiftPP.h"
- // #include "vislearning/features/localfeatures/LFSegmentation.h" //located in objrec, please move this to ensure its functionality
- #include "vislearning/features/localfeatures/LFWriteCache.h"
- #include "vislearning/features/localfeatures/LFReadCache.h"
- // #include "vislearning/features/localfeatures/LFSegContour.h" //located in objrec, please move this to ensure its functionality
- #include "vislearning/features/localfeatures/LFColorSande.h"
- #include "vislearning/features/localfeatures/LFonHSG.h"
- /** NOTE: This class only returns Descriptors, which NOT need any given positions. All Descriptors calculate there own positions, on DIFFERENT ways. **/
- namespace OBJREC {
- class GenericLFSelection
- {
- public:
- /** LocalFeature Selector
- * @brief This methode switches between the different LocalFeature-Types. One has to set the "localfeature_type" on a valid value and the methode returns a LocalFeatureRepresentation derived Object.
- * @param[in] Config* - A pointer to the given configfile, which must contain "section" - "localfeature_type"
- * @param[in] string - This string defines the value for "section" in the configfile.
- * @return LocalFeatureRepresentation* - The LocalFeatureRepresentation which contains the selected LocalFeature-Type.
- */
- static
- LocalFeatureRepresentation *selectLocalFeatureRep ( const NICE::Config *conf, std::string section = "features" )
- {
- // return Value
- LocalFeatureRepresentation *lfrep = NULL;
-
- // string which defines the localfeature_type (for Ex. Sande, ...)
- std::string localfeature_type = conf->gS(section, "localfeature_type", "");
-
- if ( localfeature_type == "mikolajczyk" )
- {
- lfrep = new LFMikolajczyk ( conf );
- }
- else if ( localfeature_type == "color" )
- {
- lfrep = new LFColorSande ( conf );
- }
- else if ( ( localfeature_type == "sift" ) || ( localfeature_type == "siftpp" ) )
- {
- lfrep = new LFSiftPP ( conf );
- }
- else if ( ( localfeature_type == "generic_local" ) || ( localfeature_type == "generic" ) )
- {
- int numFeatures = conf->gI(section, "localfeature_count");
- lfrep = new LFGenericLocal ( conf, numFeatures );
- }
- else if ( ( localfeature_type == "grey" ) || ( localfeature_type == "patches" ) )
- {
- int numFeatures = conf->gI(section, "localfeature_count");
- lfrep = new LFPatches ( conf, numFeatures );
- }
- else if( ( localfeature_type == "onHSG" ) )
- {
- lfrep = new LFonHSG( conf);
- }
- else
- {
- lfrep = NULL;
- }
- if ( conf->gB(section, "localfeature_cache_read", false) )
- {
- int numFeatures = conf->gI(section, "localfeature_count", -1);
- LocalFeatureRepresentation *lfrep_read = new LFReadCache ( conf, lfrep, numFeatures );
- lfrep = lfrep_read;
- }
- // no correct localfeature_type was given
- if ( lfrep == NULL )
- fthrow(NICE::Exception, "Local feature type not found: " << localfeature_type );
- if ( conf->gB(section, "localfeature_cache_save", false) )
- {
- LocalFeatureRepresentation *lfrep_save = new LFWriteCache ( conf, lfrep );
- lfrep = lfrep_save;
- }
-
- return lfrep;
- }
- };
- }
- #endif
|