/** * @file PPGraphCut.h * @brief a post procession step after semantic segmentation which use a variant of GraphCut * @author Björn Fröhlich * @date 09/08/2009 */ #ifndef PPGRAPHCUTINCLUDE #define PPGRAPHCUTINCLUDE #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 #include "objrec/cbaselib/ClassNames.h" #include "objrec/segmentation/RSMeanShift.h" #include "objrec/mrf/mrfmin/GCoptimization.h" namespace OBJREC { class PPGraphCut : public Persistent { protected: //! the configfile const Config *conf; //! count of classes int classno; //! Shape features Examples shapefeats; //! classifier for shape features FPCRandomForests *rf; double *coocurence; public: /** simple constructor */ PPGraphCut(); /** simple constructor */ PPGraphCut(const Config *_conf); /** simple destructor */ ~PPGraphCut(); /** * set the count of classes * @param _classno count of classes */ void setClassNo(int _classno); /** initialize the RelativeLocationPrior Variables*/ void Init(); /** * train region * @param regions input regions with size and position * @param mask */ void trainImage(Examples ®ions, NICE::Matrix &mask); /** * train region * @param regions input regions with size and position */ void trainImage(RegionGraph ®ions); /** * finish the priors maps */ void finishPP(ClassNames &cn); /** * use shape pp * @param regions * @param mask * @param probabilities probability maps for each pixel */ void optimizeImage(Examples ®ions, NICE::Matrix &mask, GenericImage & probabilities); /** * use shape pp * @param regions * @param mask * @param probabilities for each region */ void optimizeImage(RegionGraph ®ions, vector > & 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