/** * @file PPSuperregion.h * @brief a post procession step after semantic segmentation which use a variant of Region Growing * @author Björn Fröhlich * @date 08/19/2009 */ #ifndef PPSUPERREGIONINCLUDE #define PPSUPERREGIONINCLUDE #include #include "objrec/image/GenericImage.h" #include "objrec/cbaselib/CachedExample.h" #include "objrec/baselib/Preprocess.h" #include "objrec/baselib/Globals.h" #include "objrec/classifier/fpclassifier/randomforest/FPCRandomForests.h" #include "objrec/cbaselib/VectorFeature.h" #include "objrec/cbaselib/ClassNames.h" #include "objrec/segmentation/RSMeanShift.h" #ifdef NICE_USELIB_ICE #include #endif namespace OBJREC { class PPSuperregion : public Persistent { protected: //! the configfile const Config *conf; //! count of classes int classno; //! Shape features Examples shapefeats; //! classifier for shape features FPCRandomForests *rf; public: /** simple constructor */ PPSuperregion(); /** simple constructor */ PPSuperregion(const Config *_conf); /** simple destructor */ ~PPSuperregion(); /** * set the count of classes * @param _classno count of classes */ void setClassNo(int _classno); /** initialize the RelativeLocationPrior Variables*/ void Init(); /** * combines connected regions with the same label to superregions * @param regions the input regions * @param mask the mask for the regions * @param superregions the superregions * @param classes the classlabels of the superregions */ #ifdef NICE_USELIB_ICE void getSuperregions(const Examples ®ions, const NICE::Matrix &mask, vector &superregions, vector &classes, NICE::Matrix &smask); #endif /** * Lerne Form der Regionen an * @param regions input regions with size and position * @param mask */ void trainShape(Examples ®ions, NICE::Matrix &mask); /** * finish the priors maps */ void finishShape(ClassNames &cn); /** * use shape pp * @param regions * @param mask */ void optimizeShape(Examples ®ions, NICE::Matrix &mask, GenericImage & probabilities); /** * load data from an input stream * @param is input stream * @param format */ void restore (istream & is, int format = 0); /** * write data to an output stream * @param os outputstream * @param format */ void store (ostream & os, int format = 0) const; /** * clear all informations */ void clear (); }; } //namespace #endif