Direct Graphical Models  v.1.5.2
DirectGraphicalModels::CTrainEdgePottsCS Class Reference

Contrast-Sensitive Potts training class. More...

#include <TrainEdgePottsCS.h>

Inheritance diagram for DirectGraphicalModels::CTrainEdgePottsCS:
Collaboration diagram for DirectGraphicalModels::CTrainEdgePottsCS:

Public Member Functions

 CTrainEdgePottsCS (byte nStates, word nFeatures, ePotPenalApproach penApproach=eP_APP_PEN_EXP)
 Constructor. More...
 
virtual ~CTrainEdgePottsCS (void)
 
- Public Member Functions inherited from DirectGraphicalModels::CTrainEdgePotts
 CTrainEdgePotts (byte nStates, word nFeatures)
 Constructor. More...
 
virtual ~CTrainEdgePotts (void)
 
virtual void reset (void)
 Resets class variables. More...
 
virtual void addFeatureVecs (const Mat &featureVector1, byte gt1, const Mat &featureVector2, byte gt2)
 Adds a pair of feature vectors. More...
 
- Public Member Functions inherited from DirectGraphicalModels::CTrainEdge
 CTrainEdge (byte nStates, word nFeatures)
 Constructor. More...
 
virtual ~CTrainEdge (void)
 
void addFeatureVecs (const Mat &featureVectors, const Mat &gt, const CGraphExt *pGraph)
 Adds a block of new feature vectors. More...
 
void addFeatureVecs (const vec_mat_t &featureVectors, const Mat &gt, const CGraphExt *pGraph)
 Adds a block of new feature vectors. More...
 
virtual void train (bool doClean=false)
 Random model training. More...
 
Mat getEdgePotentials (const Mat &featureVector1, const Mat &featureVector2, float *params, size_t params_len, float weight=1.0f) const
 Returns the edge potential, based on the feature vectors. More...
 
- Public Member Functions inherited from DirectGraphicalModels::ITrain
 ITrain (byte nStates, word nFeatures)
 Constructor. More...
 
virtual ~ITrain (void)
 
word getNumFeatures (void) const
 Returns number of features. More...
 
- Public Member Functions inherited from DirectGraphicalModels::CBaseRandomModel
 CBaseRandomModel (byte nStates)
 Constructor. More...
 
virtual ~CBaseRandomModel (void)
 
virtual void save (const std::string &path, const std::string &name=std::string(), short idx=-1) const
 Saves the training data. More...
 
virtual void load (const std::string &path, const std::string &name=std::string(), short idx=-1)
 Loads the training data. More...
 
byte getNumStates (void) const
 Returns number of features. More...
 

Protected Member Functions

virtual Mat calculateEdgePotentials (const Mat &featureVector1, const Mat &featureVector2, float *params, size_t params_len) const
 Returns the contrast-sensitive edge potentials. More...
 
- Protected Member Functions inherited from DirectGraphicalModels::CTrainEdgePotts
virtual void saveFile (FILE *pFile) const
 Saves the random model into the file. More...
 
virtual void loadFile (FILE *pFile)
 Loads the random model from the file. More...
 
- Protected Member Functions inherited from DirectGraphicalModels::CBaseRandomModel
std::string generateFileName (const std::string &path, const std::string &name, short idx) const
 Generates name of the data file for storing random model parameters. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from DirectGraphicalModels::CTrainEdgePotts
static Mat getEdgePotentials (float val, byte nStates)
 Returns the data-independent edge potentials. More...
 
static Mat getEdgePotentials (float *values, byte nStates)
 Returns the data-independent edge potentials. More...
 
- Protected Attributes inherited from DirectGraphicalModels::ITrain
word m_nFeatures
 The number of features (length of the feature vector) More...
 
- Protected Attributes inherited from DirectGraphicalModels::CBaseRandomModel
byte m_nStates
 The number of states (classes) More...
 

Detailed Description

Contrast-Sensitive Potts training class.

This class improves the CTrainEdgePotts class by considering the contrast in test-data between edge's nodes. In other respects this class is still training-data-independent, and thus may be applied without edge training procedure, i.e. functions reset(), save(), load(), addFeatureVecs() are unnecessary here.

This class may be used in case when the training-data for edges is not available.

Author
Sergey G. Kosov, serge.nosp@m.y.ko.nosp@m.sov@p.nosp@m.roje.nosp@m.ct-10.nosp@m..de

Definition at line 35 of file TrainEdgePottsCS.h.

Constructor & Destructor Documentation

◆ CTrainEdgePottsCS()

DirectGraphicalModels::CTrainEdgePottsCS::CTrainEdgePottsCS ( byte  nStates,
word  nFeatures,
ePotPenalApproach  penApproach = eP_APP_PEN_EXP 
)
inline

Constructor.

Parameters
nStatesNumber of states (classes)
nFeaturesNumber of features
penApproachFlag specifying the penalization approach for the edge potential matrix (Ref. ePotPenalApproach)

Definition at line 44 of file TrainEdgePottsCS.h.

◆ ~CTrainEdgePottsCS()

virtual DirectGraphicalModels::CTrainEdgePottsCS::~CTrainEdgePottsCS ( void  )
inlinevirtual

Definition at line 49 of file TrainEdgePottsCS.h.

Here is the call graph for this function:

Member Function Documentation

◆ calculateEdgePotentials()

Mat DirectGraphicalModels::CTrainEdgePottsCS::calculateEdgePotentials ( const Mat &  featureVector1,
const Mat &  featureVector2,
float *  params,
size_t  params_len 
) const
protectedvirtual

Returns the contrast-sensitive edge potentials.

This function returns matrix with diagonal elements equal to parameter \(\vec{\theta}\) provided through argument params and penalized with a penalization function \(\mathcal{P}\), which depends on the difference between arguments featureVector1 and featureVector2; all the other elements are 1's:

\[edgePot[nStates][nStates] = \begin{bmatrix} \theta_1\mathcal{P} & 1 & \cdots & 1 \\ 1 & \theta_2\mathcal{P} & \cdots & 1 \\ \vdots & \vdots & \ddots & \vdots \\ 1 & 1 & \cdots & \theta_{nStates}\mathcal{P} \end{bmatrix}, \]

where \(\mathcal{P}\equiv\mathcal{P}(d;\,\lambda)\) is the penalization function, where \(d = ||\textbf{f}_1 - \textbf{f}_2||_2\) is the Euclidean distance between feature vectors, and \(\lambda\) is a parameter provided through argument params. For more details on penalization fuction, please refere to ePotPenalApproach.

Parameters
featureVector1Multi-dimensinal point \(\textbf{f}_1\): Mat(size: nFeatures x 1; type: CV_{XX}C1), corresponding to the first node of the edge
featureVector2Multi-dimensinal point \(\textbf{f}_2\): Mat(size: nFeatures x 1; type: CV_{XX}C1), corresponding to the second node of the edge
paramsArray of control parameters \(\{\vec{\theta},\lambda\} \). \(\vec{\theta}\) may consist either from one parameter (in this case all the diagonal elemets will be the same), or from nStates parameters, specifying smoothness strength for each state (class) individually; \(\lambda\) consists from one parameter.
params_lenThe length of the params parameter. It must be equal to (1 || nStates) + 1.
Returns
The edge potential matrix: Mat(size: nStates x nStates; type: CV_32FC1)

If featureVector1 or featureVector2 is empty, the function returns the test-data-independent Potts potential: CTrainEdgePotts::calculateEdgePotentials()

Reimplemented from DirectGraphicalModels::CTrainEdgePotts.

Reimplemented in DirectGraphicalModels::CTrainEdgePrior.

Definition at line 52 of file TrainEdgePottsCS.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

The documentation for this class was generated from the following files: