libcrn  3.9.5
A document image processing library
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Types | Public Member Functions | List of all members
crn::kMeans< T, type, type > Class Template Reference

k-means clustering algorithm More...

#include <CRNkMeans.h>

Public Types

using value_type = typename std::result_of< decltype(Dereference< T >)&(const T &)>::type
 

Public Member Functions

 kMeans (const kMeans &)=delete
 
 kMeans (kMeans &&)=default
 
kMeansoperator= (const kMeans &)=delete
 
kMeansoperator= (kMeans &&)=default
 
void AddPrototype (const T &sam)
 Adds one prototype. More...
 
void AddRandomPrototype ()
 Adds one random prototype out of the samples pool. More...
 
size_t GetNbClasses () const noexcept
 Returns the number of classes. More...
 
const std::vector< value_type > & GetPrototypes () const noexcept
 Returns the vector of prototypes. More...
 
void ClearPrototypes () noexcept
 Clears the prototypes. More...
 
void AddSample (const T &sam)
 Adds one sample. More...
 
void AddSample (T &&sam)
 Adds one sample. More...
 
size_t GetNbSamples () const noexcept
 Returns the number of samples. More...
 
const std::vector< const T > & GetSamples () const noexcept
 Returns the vector of samples. More...
 
void ClearSamples () noexcept
 Clears the samples. More...
 
size_t Run (size_t maxcnt=100)
 Runs the k-means. More...
 
size_t Classify (const value_type &obj, double *distance=nullptr)
 Finds the closest prototype. More...
 
const std::vector< size_t > & GetClass (size_t k) const
 Returns the content of one class. More...
 

Detailed Description

template<typename T, typename std::enable_if< IsMetric< typename std::result_of< decltype(Dereference< T >)&(const T &)>::type >::value, int >::type = 0, typename std::enable_if< IsVectorOverR< typename std::result_of< decltype(Dereference< T >)&(const T &)>::type >::value, int >::type = 0>
class crn::kMeans< T, type, type >

k-means clustering algorithm

k-means clustering utility. Caution: the samples are not freed when the object is destroyed.

Author
Yann LEYDIER
Date
March 2007
Version
0.3

Definition at line 49 of file CRNkMeans.h.

Member Typedef Documentation

template<typename T , typename std::enable_if< IsMetric< typename std::result_of< decltype(Dereference< T >)&(const T &)>::type >::value, int >::type = 0, typename std::enable_if< IsVectorOverR< typename std::result_of< decltype(Dereference< T >)&(const T &)>::type >::value, int >::type = 0>
using crn::kMeans< T, type, type >::value_type = typename std::result_of<decltype(Dereference<T>)&(const T&)>::type

Definition at line 52 of file CRNkMeans.h.

Constructor & Destructor Documentation

template<typename T , typename std::enable_if< IsMetric< typename std::result_of< decltype(Dereference< T >)&(const T &)>::type >::value, int >::type = 0, typename std::enable_if< IsVectorOverR< typename std::result_of< decltype(Dereference< T >)&(const T &)>::type >::value, int >::type = 0>
crn::kMeans< T, type, type >::kMeans ( const kMeans< T, type, type > &  )
delete
template<typename T , typename std::enable_if< IsMetric< typename std::result_of< decltype(Dereference< T >)&(const T &)>::type >::value, int >::type = 0, typename std::enable_if< IsVectorOverR< typename std::result_of< decltype(Dereference< T >)&(const T &)>::type >::value, int >::type = 0>
crn::kMeans< T, type, type >::kMeans ( kMeans< T, type, type > &&  )
default

Member Function Documentation

template<typename T , typename std::enable_if< IsMetric< typename std::result_of< decltype(Dereference< T >)&(const T &)>::type >::value, int >::type = 0, typename std::enable_if< IsVectorOverR< typename std::result_of< decltype(Dereference< T >)&(const T &)>::type >::value, int >::type = 0>
void crn::kMeans< T, type, type >::AddPrototype ( const T &  sam)
inline

Adds one prototype.

Definition at line 59 of file CRNkMeans.h.

template<typename T , typename std::enable_if< IsMetric< typename std::result_of< decltype(Dereference< T >)&(const T &)>::type >::value, int >::type = 0, typename std::enable_if< IsVectorOverR< typename std::result_of< decltype(Dereference< T >)&(const T &)>::type >::value, int >::type = 0>
void crn::kMeans< T, type, type >::AddRandomPrototype ( )
inline

Adds one random prototype out of the samples pool.

Exceptions
ExceptionNotFoundNo sample available

Definition at line 66 of file CRNkMeans.h.

template<typename T , typename std::enable_if< IsMetric< typename std::result_of< decltype(Dereference< T >)&(const T &)>::type >::value, int >::type = 0, typename std::enable_if< IsVectorOverR< typename std::result_of< decltype(Dereference< T >)&(const T &)>::type >::value, int >::type = 0>
void crn::kMeans< T, type, type >::AddSample ( const T &  sam)
inline

Adds one sample.

Parameters
[in]samThe sample to add

Definition at line 85 of file CRNkMeans.h.

template<typename T , typename std::enable_if< IsMetric< typename std::result_of< decltype(Dereference< T >)&(const T &)>::type >::value, int >::type = 0, typename std::enable_if< IsVectorOverR< typename std::result_of< decltype(Dereference< T >)&(const T &)>::type >::value, int >::type = 0>
void crn::kMeans< T, type, type >::AddSample ( T &&  sam)
inline

Adds one sample.

Parameters
[in]samThe sample to add

Definition at line 92 of file CRNkMeans.h.

template<typename T , typename std::enable_if< IsMetric< typename std::result_of< decltype(Dereference< T >)&(const T &)>::type >::value, int >::type = 0, typename std::enable_if< IsVectorOverR< typename std::result_of< decltype(Dereference< T >)&(const T &)>::type >::value, int >::type = 0>
size_t crn::kMeans< T, type, type >::Classify ( const value_type obj,
double *  distance = nullptr 
)
inline

Finds the closest prototype.

Parameters
[in]objthe sample to classify
[out]distancethe distance to the closest prototype
Returns
the index of the closest prototype

Definition at line 153 of file CRNkMeans.h.

template<typename T , typename std::enable_if< IsMetric< typename std::result_of< decltype(Dereference< T >)&(const T &)>::type >::value, int >::type = 0, typename std::enable_if< IsVectorOverR< typename std::result_of< decltype(Dereference< T >)&(const T &)>::type >::value, int >::type = 0>
void crn::kMeans< T, type, type >::ClearPrototypes ( )
inlinenoexcept

Clears the prototypes.

Definition at line 80 of file CRNkMeans.h.

template<typename T , typename std::enable_if< IsMetric< typename std::result_of< decltype(Dereference< T >)&(const T &)>::type >::value, int >::type = 0, typename std::enable_if< IsVectorOverR< typename std::result_of< decltype(Dereference< T >)&(const T &)>::type >::value, int >::type = 0>
void crn::kMeans< T, type, type >::ClearSamples ( )
inlinenoexcept

Clears the samples.

Definition at line 101 of file CRNkMeans.h.

template<typename T , typename std::enable_if< IsMetric< typename std::result_of< decltype(Dereference< T >)&(const T &)>::type >::value, int >::type = 0, typename std::enable_if< IsVectorOverR< typename std::result_of< decltype(Dereference< T >)&(const T &)>::type >::value, int >::type = 0>
const std::vector<size_t>& crn::kMeans< T, type, type >::GetClass ( size_t  k) const
inline

Returns the content of one class.

Exceptions
ExceptionDimensionwrong class number
Parameters
[in]kThe id of the class
Returns
the content of class k

Definition at line 168 of file CRNkMeans.h.

template<typename T , typename std::enable_if< IsMetric< typename std::result_of< decltype(Dereference< T >)&(const T &)>::type >::value, int >::type = 0, typename std::enable_if< IsVectorOverR< typename std::result_of< decltype(Dereference< T >)&(const T &)>::type >::value, int >::type = 0>
size_t crn::kMeans< T, type, type >::GetNbClasses ( ) const
inlinenoexcept

Returns the number of classes.

Definition at line 76 of file CRNkMeans.h.

template<typename T , typename std::enable_if< IsMetric< typename std::result_of< decltype(Dereference< T >)&(const T &)>::type >::value, int >::type = 0, typename std::enable_if< IsVectorOverR< typename std::result_of< decltype(Dereference< T >)&(const T &)>::type >::value, int >::type = 0>
size_t crn::kMeans< T, type, type >::GetNbSamples ( ) const
inlinenoexcept

Returns the number of samples.

Definition at line 97 of file CRNkMeans.h.

template<typename T , typename std::enable_if< IsMetric< typename std::result_of< decltype(Dereference< T >)&(const T &)>::type >::value, int >::type = 0, typename std::enable_if< IsVectorOverR< typename std::result_of< decltype(Dereference< T >)&(const T &)>::type >::value, int >::type = 0>
const std::vector<value_type>& crn::kMeans< T, type, type >::GetPrototypes ( ) const
inlinenoexcept

Returns the vector of prototypes.

Definition at line 78 of file CRNkMeans.h.

template<typename T , typename std::enable_if< IsMetric< typename std::result_of< decltype(Dereference< T >)&(const T &)>::type >::value, int >::type = 0, typename std::enable_if< IsVectorOverR< typename std::result_of< decltype(Dereference< T >)&(const T &)>::type >::value, int >::type = 0>
const std::vector<const T>& crn::kMeans< T, type, type >::GetSamples ( ) const
inlinenoexcept

Returns the vector of samples.

Definition at line 99 of file CRNkMeans.h.

template<typename T , typename std::enable_if< IsMetric< typename std::result_of< decltype(Dereference< T >)&(const T &)>::type >::value, int >::type = 0, typename std::enable_if< IsVectorOverR< typename std::result_of< decltype(Dereference< T >)&(const T &)>::type >::value, int >::type = 0>
kMeans& crn::kMeans< T, type, type >::operator= ( const kMeans< T, type, type > &  )
delete
template<typename T , typename std::enable_if< IsMetric< typename std::result_of< decltype(Dereference< T >)&(const T &)>::type >::value, int >::type = 0, typename std::enable_if< IsVectorOverR< typename std::result_of< decltype(Dereference< T >)&(const T &)>::type >::value, int >::type = 0>
kMeans& crn::kMeans< T, type, type >::operator= ( kMeans< T, type, type > &&  )
default
template<typename T , typename std::enable_if< IsMetric< typename std::result_of< decltype(Dereference< T >)&(const T &)>::type >::value, int >::type = 0, typename std::enable_if< IsVectorOverR< typename std::result_of< decltype(Dereference< T >)&(const T &)>::type >::value, int >::type = 0>
size_t crn::kMeans< T, type, type >::Run ( size_t  maxcnt = 100)
inline

Runs the k-means.

Parameters
[in]maxcntmaximal number of iterations
Returns
the number of iterations

Definition at line 107 of file CRNkMeans.h.


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