A mixture of Gaussians adaptive updater base on Leotta-Mundy. 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_lm_updater (const gaussian_type &init_gaussian, unsigned int max_cmp=5, T g_thresh=T(2.5), T min_stdev=T(0.16), unsigned int ws=300) | |
Constructor. | |
void | operator() (mog_type &mix, const F &sample, T sample_weight=T(1)) const |
The main function. | |
Protected Member Functions | |
T | total_weight (const mog_type &mix) const |
Count the total mixture weight. | |
void | update (mog_type &mix, const F &sample, T samp_weight) 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. | |
unsigned int | window_size_ |
The moving window size in number of frames. | |
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 base on Leotta-Mundy.
Combines the greedy matching of the S-G method for speed with the dynamic learning rate of Lee for faster learning. Unnormalized weights serve a dual role with observation counts. This algorithm is based on: M. Leotta and J. Mundy, "Learning background and shadow appearance with 3-d vehicle models", BMVC, 2:649--658, September 2006.
Definition at line 316 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_lm_updater< mog_type >::F |
Reimplemented from vpdt_mog_updater< mog_type >.
Definition at line 320 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_lm_updater< mog_type >::gaussian_type |
Reimplemented from vpdt_mog_updater< mog_type >.
Definition at line 319 of file vpdt_update_mog.h.
typedef vpdt_field_traits<F>::scalar_type vpdt_mog_lm_updater< mog_type >::T |
Reimplemented from vpdt_mog_updater< mog_type >.
Definition at line 321 of file vpdt_update_mog.h.
vpdt_mog_lm_updater< mog_type >::vpdt_mog_lm_updater | ( | const gaussian_type & | init_gaussian, |
unsigned int | max_cmp = 5 , |
||
T | g_thresh = T(2.5) , |
||
T | min_stdev = T(0.16) , |
||
unsigned int | ws = 300 |
||
) | [inline] |
Constructor.
Definition at line 324 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.
void vpdt_mog_lm_updater< mog_type >::operator() | ( | mog_type & | mix, |
const F & | sample, | ||
T | sample_weight = T(1) |
||
) | const [inline] |
The main function.
Definition at line 334 of file vpdt_update_mog.h.
T vpdt_mog_lm_updater< mog_type >::total_weight | ( | const mog_type & | mix | ) | const [inline, protected] |
Count the total mixture weight.
Definition at line 342 of file vpdt_update_mog.h.
void vpdt_mog_lm_updater< mog_type >::update | ( | mog_type & | mix, |
const F & | sample, | ||
T | samp_weight | ||
) | const [inline, protected] |
Update the mixture with sample using learning rate alpha.
Definition at line 353 of file vpdt_update_mog.h.
T vpdt_mog_lm_updater< mog_type >::gt2_ [protected] |
Squared Gaussian Mahalanobis distance threshold.
Definition at line 390 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_lm_updater< mog_type >::min_var_ [protected] |
Minimum variance allowed in each Gaussian component.
Definition at line 392 of file vpdt_update_mog.h.
unsigned int vpdt_mog_lm_updater< mog_type >::window_size_ [protected] |
The moving window size in number of frames.
Definition at line 394 of file vpdt_update_mog.h.