Public Types | Public Member Functions | Private Attributes
vpdl_kernel_base< T, n > Class Template Reference

A base class for kernel (aka Parzen window) distributions. More...

#include <vpdl_kernel_base.h>

Inheritance diagram for vpdl_kernel_base< T, n >:
Inheritance graph
[legend]

List of all members.

Public Types

typedef vpdt_field_default< T,
n >::type 
vector
 the data type used for vectors.
typedef vpdt_field_traits
< vector >::matrix_type 
matrix
 the data type used for matrices.
typedef vpdt_field_default< T,
n >::type 
field_type
 the data type used for vectors.

Public Member Functions

 vpdl_kernel_base ()
 vpdl_kernel_base (const vcl_vector< vector > &samplez)
unsigned int num_components () const
 Return the number of components in the mixture.
virtual unsigned int dimension () const
 Return the run time dimension, which does not equal n when n==0.
virtual void add_sample (const vector &s)
 Add a new sample point.
virtual void clear_samples ()
 Remove all sample points.
virtual void set_samples (const vcl_vector< vector > &samplez)
 Set the collection of sample points.
const vcl_vector< vector > & samples () const
 Access the sample points.
virtual void compute_mean (vector &mean) const
 Compute the mean of the distribution.
virtual vpdl_distribution< T, n > * clone () const =0
 Create a copy on the heap and return base class pointer.
virtual T density (const vector &pt) const =0
 Evaluate the unnormalized density at a point.
virtual T prob_density (const vector &pt) const
 Evaluate the probability density at a point.
virtual T log_prob_density (const vector &pt) const
 Evaluate the log probability density at a point.
virtual T gradient_density (const vector &pt, vector &g) const =0
 Compute the gradient of the unnormalized density at a point.
virtual T norm_const () const =0
 The normalization constant for the density.
virtual T cumulative_prob (const vector &pt) const =0
 Evaluate the cumulative distribution function at a point.
virtual vector inverse_cdf (const T &p) const
 Compute the inverse of the cumulative_prob() function.
virtual T box_prob (const vector &min_pt, const vector &max_pt) const
 The probability of being in an axis-aligned box.
virtual void compute_covar (matrix &covar) const =0
 Compute the covariance of the distribution.

Private Attributes

vcl_vector< vectorsamples_
 The sample points around which the kernels are centered.

Detailed Description

template<class T, unsigned int n = 0>
class vpdl_kernel_base< T, n >

A base class for kernel (aka Parzen window) distributions.

A kernel distribution is restricted form of a mixture where each component has the same weight and takes the same form. Essentially, a copy of a single distribution is translated (and possibly scaled) to each point in a collection of samples

Definition at line 26 of file vpdl_kernel_base.h.


Member Typedef Documentation

template<class T, unsigned int n = 0>
typedef vpdt_field_default<T,n>::type vpdl_distribution< T, n >::field_type [inherited]

the data type used for vectors.

Reimplemented in vpdl_mixture_of< dist_t >.

Definition at line 36 of file vpdl_distribution.h.

template<class T , unsigned int n = 0>
typedef vpdt_field_traits<vector>::matrix_type vpdl_kernel_base< T, n >::matrix

the data type used for matrices.

Reimplemented from vpdl_multi_cmp_dist< T, n >.

Reimplemented in vpdl_kernel_vbw_base< T, n >, vpdl_kernel_fbw_base< T, n >, and vpdl_kernel_gaussian_sfbw< T, n >.

Definition at line 32 of file vpdl_kernel_base.h.

template<class T , unsigned int n = 0>
typedef vpdt_field_default<T,n>::type vpdl_kernel_base< T, n >::vector

the data type used for vectors.

Reimplemented from vpdl_multi_cmp_dist< T, n >.

Reimplemented in vpdl_kernel_vbw_base< T, n >, vpdl_kernel_fbw_base< T, n >, and vpdl_kernel_gaussian_sfbw< T, n >.

Definition at line 30 of file vpdl_kernel_base.h.


Constructor & Destructor Documentation

template<class T , unsigned int n = 0>
vpdl_kernel_base< T, n >::vpdl_kernel_base ( ) [inline]

Definition at line 35 of file vpdl_kernel_base.h.

template<class T , unsigned int n = 0>
vpdl_kernel_base< T, n >::vpdl_kernel_base ( const vcl_vector< vector > &  samplez) [inline]

Definition at line 38 of file vpdl_kernel_base.h.


Member Function Documentation

template<class T , unsigned int n = 0>
virtual void vpdl_kernel_base< T, n >::add_sample ( const vector s) [inline, virtual]

Add a new sample point.

Reimplemented in vpdl_kernel_vbw_base< T, n >.

Definition at line 53 of file vpdl_kernel_base.h.

template<class T , unsigned int n>
T vpdl_distribution< T, n >::box_prob ( const vector min_pt,
const vector max_pt 
) const [virtual, inherited]

The probability of being in an axis-aligned box.

The box is defined by two points, the minimum and maximum. Implemented in terms of cumulative_prob() by default.

Reimplemented in vpdl_mixture< T, n >, vpdl_kernel_gaussian_sfbw< T, n >, vpdl_gaussian_sphere< T, n >, and vpdl_mixture_of< dist_t >.

Definition at line 86 of file vpdl_distribution.txx.

template<class T , unsigned int n = 0>
virtual void vpdl_kernel_base< T, n >::clear_samples ( ) [inline, virtual]

Remove all sample points.

Reimplemented in vpdl_kernel_vbw_base< T, n >.

Definition at line 61 of file vpdl_kernel_base.h.

template<class T, unsigned int n = 0>
virtual vpdl_distribution<T,n>* vpdl_distribution< T, n >::clone ( ) const [pure virtual, inherited]
template<class T, unsigned int n = 0>
virtual void vpdl_distribution< T, n >::compute_covar ( matrix covar) const [pure virtual, inherited]

Compute the covariance of the distribution.

This may be trivial for distributions like Gaussians, but actually involves computation for others.

Implemented in vpdl_mixture< T, n >, vpdl_kernel_gaussian_sfbw< T, n >, vpdl_gaussian_sphere< T, n >, vpdl_gaussian< T, n >, vpdl_gaussian_indep< T, n >, and vpdl_mixture_of< dist_t >.

template<class T , unsigned int n = 0>
virtual void vpdl_kernel_base< T, n >::compute_mean ( vector mean) const [inline, virtual]

Compute the mean of the distribution.

Assume that each kernel has its mean at the sample point

Implements vpdl_distribution< T, n >.

Definition at line 80 of file vpdl_kernel_base.h.

template<class T, unsigned int n = 0>
virtual T vpdl_distribution< T, n >::cumulative_prob ( const vector pt) const [pure virtual, inherited]

Evaluate the cumulative distribution function at a point.

This is the integral of the density function from negative infinity (in all dimensions) to the point in question

Note:
It is not possible to compute this value for all functions in closed form. In some cases, numerical integration may be used. If no good solutions exists the function should return a quiet NaN.

Implemented in vpdl_mixture< T, n >, vpdl_kernel_gaussian_sfbw< T, n >, vpdl_mixture_of< dist_t >, vpdl_gaussian_sphere< T, n >, vpdl_gaussian_indep< T, n >, and vpdl_gaussian< T, n >.

template<class T, unsigned int n = 0>
virtual T vpdl_distribution< T, n >::density ( const vector pt) const [pure virtual, inherited]

Evaluate the unnormalized density at a point.

Note:
This is not a probability density. To make this a probability multiply by norm_const()
See also:
prob_density

Implemented in vpdl_mixture< T, n >, vpdl_mixture_of< dist_t >, vpdl_gaussian_sphere< T, n >, vpdl_gaussian_indep< T, n >, vpdl_gaussian< T, n >, and vpdl_kernel_gaussian_sfbw< T, n >.

template<class T , unsigned int n = 0>
virtual unsigned int vpdl_kernel_base< T, n >::dimension ( ) const [inline, virtual]

Return the run time dimension, which does not equal n when n==0.

Implements vpdl_distribution< T, n >.

Definition at line 45 of file vpdl_kernel_base.h.

template<class T, unsigned int n = 0>
virtual T vpdl_distribution< T, n >::gradient_density ( const vector pt,
vector g 
) const [pure virtual, inherited]

Compute the gradient of the unnormalized density at a point.

Returns:
the density at pt since it is usually needed as well, and is often trivial to compute while computing gradient
Return values:
gthe gradient vector

Implemented in vpdl_mixture< T, n >, vpdl_mixture_of< dist_t >, vpdl_kernel_gaussian_sfbw< T, n >, vpdl_gaussian_sphere< T, n >, vpdl_gaussian_indep< T, n >, and vpdl_gaussian< T, n >.

template<class T, unsigned int n>
vpdl_distribution< T, n >::vector vpdl_distribution< T, n >::inverse_cdf ( const T &  p) const [virtual, inherited]

Compute the inverse of the cumulative_prob() function.

The value of x: P(x'<x) = P for x' drawn from the distribution.

Note:
This is only valid for univariate distributions multivariate distributions will return a quiet NaN

The value of x: P(x'<x) = P for x' drawn from the distribution. This is only valid for univariate distributions multivariate distributions will return -infinity

Definition at line 75 of file vpdl_distribution.txx.

template<class T, unsigned int n = 0>
virtual T vpdl_distribution< T, n >::log_prob_density ( const vector pt) const [inline, virtual, inherited]

Evaluate the log probability density at a point.

Reimplemented in vpdl_gaussian_sphere< T, n >, vpdl_gaussian_indep< T, n >, and vpdl_gaussian< T, n >.

Definition at line 62 of file vpdl_distribution.h.

template<class T, unsigned int n = 0>
virtual T vpdl_distribution< T, n >::norm_const ( ) const [pure virtual, inherited]

The normalization constant for the density.

When density() is multiplied by this value it becomes prob_density norm_const() is reciprocal of the integral of density over the entire field

Implemented in vpdl_mixture< T, n >, vpdl_kernel_fbw_base< T, n >, vpdl_mixture_of< dist_t >, vpdl_gaussian_sphere< T, n >, vpdl_gaussian_indep< T, n >, and vpdl_gaussian< T, n >.

template<class T , unsigned int n = 0>
unsigned int vpdl_kernel_base< T, n >::num_components ( ) const [inline, virtual]

Return the number of components in the mixture.

Implements vpdl_multi_cmp_dist< T, n >.

Definition at line 42 of file vpdl_kernel_base.h.

template<class T, unsigned int n = 0>
virtual T vpdl_distribution< T, n >::prob_density ( const vector pt) const [inline, virtual, inherited]
template<class T , unsigned int n = 0>
const vcl_vector<vector>& vpdl_kernel_base< T, n >::samples ( ) const [inline]

Access the sample points.

Definition at line 73 of file vpdl_kernel_base.h.

template<class T , unsigned int n = 0>
virtual void vpdl_kernel_base< T, n >::set_samples ( const vcl_vector< vector > &  samplez) [inline, virtual]

Set the collection of sample points.

Reimplemented in vpdl_kernel_vbw_base< T, n >.

Definition at line 67 of file vpdl_kernel_base.h.


Member Data Documentation

template<class T , unsigned int n = 0>
vcl_vector<vector> vpdl_kernel_base< T, n >::samples_ [private]

The sample points around which the kernels are centered.

Definition at line 96 of file vpdl_kernel_base.h.


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