Direct Graphical Models  v.1.7.0
GraphDenseExt.h
1 // Extended (dense) Graph class interface;
2 // Written by Sergey Kosov in 2018 for Project X
3 #pragma once
4 
5 #include "GraphExt.h"
6 
7 namespace DirectGraphicalModels
8 {
9  class CGraphDense;
10  // ================================ Extended Dense Graph Class ================================
17  class CGraphDenseExt : public CGraphExt
18  {
19  public:
24  DllExport CGraphDenseExt(CGraphDense &graph) : m_graph(graph) {}
25  DllExport ~CGraphDenseExt(void) = default;
26 
27  // From CGraphExt
28  DllExport void buildGraph(Size graphSize) override;
29  DllExport void setGraph(const Mat &pots) override;
36  DllExport void addDefaultEdgesModel(float val, float weight = 1.0f) override
37  {
38  addGaussianEdgeModel(Vec2f::all(val * 0.03f), weight);
39  }
47  DllExport void addDefaultEdgesModel(const Mat& featureVectors, float val, float weight = 1.0f) override
48  {
49  addBilateralEdgeModel(featureVectors, Vec2f::all(val * 0.03f), 20.0f, weight);
50  }
58  DllExport void addDefaultEdgesModel(const vec_mat_t &featureVectors, float val, float weight = 1.0f) override
59  {
60  addBilateralEdgeModel(featureVectors, Vec2f::all(val * 0.03f), 20.0f, weight);
61  }
62  DllExport Size getSize(void) const override { return m_size; }
63 
64 
72  DllExport void addGaussianEdgeModel(Vec2f sigma, float weight = 1.0f, const std::function<void(const Mat& src, Mat& dst)>& semiMetricFunction = {});
82  DllExport void addBilateralEdgeModel(const Mat& featureVectors, Vec2f sigma, float sigma_opt = 1.0f, float weight = 1.0f, const std::function<void(const Mat& src, Mat& dst)>& semiMetricFunction = {});
92  DllExport void addBilateralEdgeModel(const vec_mat_t& featureVectors, Vec2f sigma, float sigma_opt = 1.0f, float weight = 1.0f, const std::function<void(const Mat& src, Mat& dst)>& semiMetricFunction = {});
93 
94 
95  private:
97  Size m_size;
98  };
99 }
void buildGraph(Size graphSize) override
Builds a 2D graph of size corresponding to the image resolution.
General graph extension abstract class for 2D image classifaction.
Definition: GraphExt.h:16
Size getSize(void) const override
Returns the size of the graph.
Definition: GraphDenseExt.h:62
CGraphDense & m_graph
The graph.
Definition: GraphDenseExt.h:96
Size m_size
Size of the 2D graph.
Definition: GraphDenseExt.h:97
void addDefaultEdgesModel(const vec_mat_t &featureVectors, float val, float weight=1.0f) override
Adds default contrast-sensitive edge model.
Definition: GraphDenseExt.h:58
void addDefaultEdgesModel(const Mat &featureVectors, float val, float weight=1.0f) override
Adds default contrast-sensitive edge model.
Definition: GraphDenseExt.h:47
CGraphDenseExt(CGraphDense &graph)
Constructor.
Definition: GraphDenseExt.h:24
void addGaussianEdgeModel(Vec2f sigma, float weight=1.0f, const std::function< void(const Mat &src, Mat &dst)> &semiMetricFunction={})
Add a Gaussian potential model with standard deviation sigma.
void addDefaultEdgesModel(float val, float weight=1.0f) override
Adds default data-independet edge model.
Definition: GraphDenseExt.h:36
Extended Dense graph class for 2D image classifaction.
Definition: GraphDenseExt.h:17
void setGraph(const Mat &pots) override
Fills an existing 2D graph with potentials or builds a new 2D graph of size corresponding to pots...
void addBilateralEdgeModel(const Mat &featureVectors, Vec2f sigma, float sigma_opt=1.0f, float weight=1.0f, const std::function< void(const Mat &src, Mat &dst)> &semiMetricFunction={})
Add a Bilateral pairwise potential with spacial standard deviations sigma and color standard deviatio...
Fully-connected (dense) graph class.
Definition: GraphDense.h:15