Public Types | Public Member Functions | Protected Member Functions | Protected Attributes
vpdt_mog_lee_updater< mog_type > Class Template Reference

A mixture of Gaussians adaptive updater based on D. More...

#include <vpdt_update_mog.h>

Inheritance diagram for vpdt_mog_lee_updater< mog_type >:
Inheritance graph
[legend]

List of all members.

Public Types

typedef mog_type::component_type gaussian_type
typedef gaussian_type::field_type F
typedef vpdt_field_traits< F >
::scalar_type 
T
typedef mog_type distribution_type
typedef mog_type::field_type field_type

Public Member Functions

 vpdt_mog_lee_updater (const gaussian_type &init_gaussian, unsigned int max_cmp=5, T g_thresh=T(2.5), T min_stdev=T(0.16), bool use_wta=false)
 Constructor.
void operator() (mog_type &mix, const F &sample) const
 The main function.

Protected Member Functions

T total_num_obs (const mog_type &mix) const
 Count the total number of observations in all components.
vcl_vector< vcl_pair< unsigned
int, double > > 
matches (const mog_type &mix, const F &sample) const
 find all matches within the gt2_ threshold and compute the probability of each.
void winner_take_all (vcl_vector< vcl_pair< unsigned int, double > > &m) const
 Apply a winner-take-all strategy to the matches.
void update (mog_type &mix, const F &sample, T alpha) const
 Update the mixture with sample using learning rate alpha.
void insert (mog_type &mixture, const F &sample, T init_weight) const
 insert a sample in the mixture.
unsigned int match (const mog_type &mix, const F &sample, const T &gt2, T &sqr_dist) const
 Return the index of the first Gaussian within the threshold distance.

Protected Attributes

T gt2_
 Squared Gaussian Mahalanobis distance threshold.
T min_var_
 Minimum variance allowed in each Gaussian component.
bool use_winner_take_all_
 Use a winner-take_all strategy.
gaussian_type init_gaussian_
 A model for new Gaussians inserted.
unsigned int max_components_
 The maximum number of components in the mixture.

Detailed Description

template<class mog_type>
class vpdt_mog_lee_updater< mog_type >

A mixture of Gaussians adaptive updater based on D.

-S. Lee. Modification of the S-G method. Each Gaussian has its own learning rate that adjusts with the number of observations. This algorithm requires that the Gaussians in the mixture are wrapped in a vpdt_num_obs class to count the number of observations. This algorithm is based on: D.-S. Lee. "Effective gaussian mixture learning for video background subtraction", PAMI, 27:827--832, May 2005.

Definition at line 167 of file vpdt_update_mog.h.


Member Typedef Documentation

template<class mog_type >
typedef mog_type vpdt_mog_updater< mog_type >::distribution_type [inherited]

Definition at line 25 of file vpdt_update_mog.h.

template<class mog_type >
typedef gaussian_type::field_type vpdt_mog_lee_updater< mog_type >::F

Reimplemented from vpdt_mog_updater< mog_type >.

Definition at line 171 of file vpdt_update_mog.h.

template<class mog_type >
typedef mog_type::field_type vpdt_mog_updater< mog_type >::field_type [inherited]

Definition at line 26 of file vpdt_update_mog.h.

template<class mog_type >
typedef mog_type::component_type vpdt_mog_lee_updater< mog_type >::gaussian_type

Reimplemented from vpdt_mog_updater< mog_type >.

Definition at line 170 of file vpdt_update_mog.h.

template<class mog_type >
typedef vpdt_field_traits<F>::scalar_type vpdt_mog_lee_updater< mog_type >::T

Reimplemented from vpdt_mog_updater< mog_type >.

Definition at line 172 of file vpdt_update_mog.h.


Constructor & Destructor Documentation

template<class mog_type >
vpdt_mog_lee_updater< mog_type >::vpdt_mog_lee_updater ( const gaussian_type init_gaussian,
unsigned int  max_cmp = 5,
T  g_thresh = T(2.5),
T  min_stdev = T(0.16),
bool  use_wta = false 
) [inline]

Constructor.

Definition at line 175 of file vpdt_update_mog.h.


Member Function Documentation

template<class mog_type >
void vpdt_mog_updater< mog_type >::insert ( mog_type &  mixture,
const F sample,
T  init_weight 
) const [inline, protected, inherited]

insert a sample in the mixture.

Parameters:
sampleA Gaussian is inserted with a mean of sample and a covariance from init_gaussian_
init_weightThe normalized weight the resulting sample should have after insertion

Definition at line 44 of file vpdt_update_mog.h.

template<class mog_type >
unsigned int vpdt_mog_updater< mog_type >::match ( const mog_type &  mix,
const F sample,
const T gt2,
T sqr_dist 
) const [inline, protected, inherited]

Return the index of the first Gaussian within the threshold distance.

The threshold gt2 is on the square distance. The computed square distance is returned by reference in sqr_dist If there are no matches return the number of components (last index + 1)

Definition at line 70 of file vpdt_update_mog.h.

template<class mog_type >
vcl_vector<vcl_pair<unsigned int,double> > vpdt_mog_lee_updater< mog_type >::matches ( const mog_type &  mix,
const F sample 
) const [inline, protected]

find all matches within the gt2_ threshold and compute the probability of each.

Definition at line 207 of file vpdt_update_mog.h.

template<class mog_type >
void vpdt_mog_lee_updater< mog_type >::operator() ( mog_type &  mix,
const F sample 
) const [inline]

The main function.

Definition at line 185 of file vpdt_update_mog.h.

template<class mog_type >
T vpdt_mog_lee_updater< mog_type >::total_num_obs ( const mog_type &  mix) const [inline, protected]

Count the total number of observations in all components.

Definition at line 194 of file vpdt_update_mog.h.

template<class mog_type >
void vpdt_mog_lee_updater< mog_type >::update ( mog_type &  mix,
const F sample,
T  alpha 
) const [inline, protected]

Update the mixture with sample using learning rate alpha.

Definition at line 258 of file vpdt_update_mog.h.

template<class mog_type >
void vpdt_mog_lee_updater< mog_type >::winner_take_all ( vcl_vector< vcl_pair< unsigned int, double > > &  m) const [inline, protected]

Apply a winner-take-all strategy to the matches.

Keep only the highest probability match and assign it probability 1

Definition at line 242 of file vpdt_update_mog.h.


Member Data Documentation

template<class mog_type >
T vpdt_mog_lee_updater< mog_type >::gt2_ [protected]

Squared Gaussian Mahalanobis distance threshold.

Definition at line 297 of file vpdt_update_mog.h.

template<class mog_type >
gaussian_type vpdt_mog_updater< mog_type >::init_gaussian_ [mutable, protected, inherited]

A model for new Gaussians inserted.

Definition at line 84 of file vpdt_update_mog.h.

template<class mog_type >
unsigned int vpdt_mog_updater< mog_type >::max_components_ [protected, inherited]

The maximum number of components in the mixture.

Definition at line 86 of file vpdt_update_mog.h.

template<class mog_type >
T vpdt_mog_lee_updater< mog_type >::min_var_ [protected]

Minimum variance allowed in each Gaussian component.

Definition at line 299 of file vpdt_update_mog.h.

template<class mog_type >
bool vpdt_mog_lee_updater< mog_type >::use_winner_take_all_ [protected]

Use a winner-take_all strategy.

Definition at line 302 of file vpdt_update_mog.h.


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