Regions.H
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 #ifndef Regions_H_DEFINED
00039 #define Regions_H_DEFINED
00040
00041 #include "Util/Types.H"
00042 #include "Image/Image.H"
00043 #include "Image/ImageSet.H"
00044 #include "Image/Pixels.H"
00045 #include "Image/Layout.H"
00046 #include "Image/Point3D.H"
00047 #include "plugins/SceneUnderstanding/LGN.H"
00048 #include "plugins/SceneUnderstanding/SMap.H"
00049 #include "Simulation/SimEvents.H"
00050 #include "Simulation/SimModule.H"
00051 #include "Media/MediaSimEvents.H"
00052 #include "Component/ModelOptionDef.H"
00053 #include "Component/OptionManager.H"
00054 #include "Component/ModelParam.H"
00055
00056 #include <vector>
00057 #include <string>
00058
00059 class SimEventRegionsPrior;
00060
00061 class Regions : public SimModule
00062 {
00063 public:
00064
00065 struct RegionState
00066 {
00067 std::vector<Point2D<int> > region;
00068 std::vector<Point2D<int> > notRegion;
00069 double prob;
00070 double mu;
00071 double sigma;
00072 RegionState() {}
00073 };
00074
00075
00076 Regions(OptionManager& mgr, const std::string& descrName = "Regions",
00077 const std::string& tagName = "Regions");
00078
00079
00080 ~Regions();
00081
00082 void evolve();
00083
00084 Layout<PixRGB<byte> > getDebugImage();
00085
00086 void calcRegionLikelihood(RegionState& rs);
00087
00088 double calcRegionLikelihood(Image<float>& mu);
00089
00090 protected:
00091
00092 SIMCALLBACK_DECLARE(Regions, SimEventLGNOutput);
00093
00094
00095 SIMCALLBACK_DECLARE(Regions, SimEventSMapOutput);
00096
00097
00098 SIMCALLBACK_DECLARE(Regions, SimEventSaveOutput);
00099
00100
00101 SIMCALLBACK_DECLARE(Regions, SimEventUserInput);
00102
00103
00104 SIMCALLBACK_DECLARE(Regions, SimEventRegionsPrior);
00105
00106
00107
00108 OModelParam<bool> itsShowDebug;
00109
00110 private:
00111
00112 ImageSet<float> itsRegionsCellsInput;
00113 std::vector<SMap::SMapState> itsSMapInput;
00114 Point2D<int> itsProbe;
00115 RegionState itsBackgroundRegion;
00116 std::vector<RegionState> itsRegionsState;
00117 std::vector<RegionState> itsRegionsPrior;
00118 std::vector<Point2D<int> > itsUserPolygon;
00119 float itsTempColor;
00120
00121 };
00122
00123
00124 class SimEventRegionsOutput : public SimEvent
00125 {
00126 public:
00127 SimEventRegionsOutput(SimModule* src, std::vector<Regions::RegionState>& cellsOutput) :
00128 SimEvent(src), itsCells(cellsOutput)
00129 {}
00130
00131 virtual ~SimEventRegionsOutput(){}
00132 std::vector<Regions::RegionState> getCells() { return itsCells; }
00133
00134 private:
00135 const std::vector<Regions::RegionState>& itsCells;
00136 };
00137
00138
00139 class SimEventRegionsPrior : public SimEvent
00140 {
00141 public:
00142 SimEventRegionsPrior(SimModule* src,
00143 std::vector<Regions::RegionState>& regions) :
00144 SimEvent(src), itsRegions(regions)
00145 {}
00146
00147 virtual ~SimEventRegionsPrior(){}
00148 std::vector<Regions::RegionState> getRegions() { return itsRegions; }
00149
00150 private:
00151 const std::vector<Regions::RegionState>& itsRegions;
00152 };
00153
00154
00155
00156
00157
00158
00159
00160
00161
00162 #endif //