A mixture of Gaussians adaptive updater based on D. More...
#include <vpdt_update_mog.h>
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 >2, 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. |
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 169 of file vpdt_update_mog.h.
typedef mog_type vpdt_mog_updater< mog_type >::distribution_type [inherited] |
Definition at line 25 of file vpdt_update_mog.h.
typedef gaussian_type::field_type vpdt_mog_lee_updater< mog_type >::F |
Reimplemented from vpdt_mog_updater< mog_type >.
Definition at line 173 of file vpdt_update_mog.h.
typedef mog_type::field_type vpdt_mog_updater< mog_type >::field_type [inherited] |
Definition at line 26 of file vpdt_update_mog.h.
typedef mog_type::component_type vpdt_mog_lee_updater< mog_type >::gaussian_type |
Reimplemented from vpdt_mog_updater< mog_type >.
Definition at line 172 of file vpdt_update_mog.h.
typedef vpdt_field_traits<F>::scalar_type vpdt_mog_lee_updater< mog_type >::T |
Reimplemented from vpdt_mog_updater< mog_type >.
Definition at line 174 of file vpdt_update_mog.h.
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 177 of file vpdt_update_mog.h.
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.
sample | A Gaussian is inserted with a mean of sample and a covariance from init_gaussian_ |
init_weight | The normalized weight the resulting sample should have after insertion |
Definition at line 44 of file vpdt_update_mog.h.
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 72 of file vpdt_update_mog.h.
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 209 of file vpdt_update_mog.h.
void vpdt_mog_lee_updater< mog_type >::operator() | ( | mog_type & | mix, |
const F & | sample | ||
) | const [inline] |
The main function.
Definition at line 187 of file vpdt_update_mog.h.
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 196 of file vpdt_update_mog.h.
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 260 of file vpdt_update_mog.h.
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 244 of file vpdt_update_mog.h.
T vpdt_mog_lee_updater< mog_type >::gt2_ [protected] |
Squared Gaussian Mahalanobis distance threshold.
Definition at line 299 of file vpdt_update_mog.h.
gaussian_type vpdt_mog_updater< mog_type >::init_gaussian_ [mutable, protected, inherited] |
A model for new Gaussians inserted.
Definition at line 86 of file vpdt_update_mog.h.
unsigned int vpdt_mog_updater< mog_type >::max_components_ [protected, inherited] |
The maximum number of components in the mixture.
Definition at line 88 of file vpdt_update_mog.h.
T vpdt_mog_lee_updater< mog_type >::min_var_ [protected] |
Minimum variance allowed in each Gaussian component.
Definition at line 301 of file vpdt_update_mog.h.
bool vpdt_mog_lee_updater< mog_type >::use_winner_take_all_ [protected] |
Use a winner-take_all strategy.
Definition at line 304 of file vpdt_update_mog.h.