OpenCV  4.1.1-pre
Open Source Computer Vision
Looking for a C++ dev who knows OpenCV?
I'm looking for work. Hire me!
cvflann::KMeansIndex< Distance > Class Template Reference

Hierarchical kmeans index. More...

#include <opencv2/flann/kmeans_index.h>

Inheritance diagram for cvflann::KMeansIndex< Distance >:
Collaboration diagram for cvflann::KMeansIndex< Distance >:

Classes

class  KMeansDistanceComputer
 

Public Types

typedef void(KMeansIndex::* centersAlgFunction) (int, int *, int, int *, int &)
 
typedef Distance::ResultType DistanceType
 
typedef Distance::ElementType ElementType
 

Public Member Functions

 KMeansIndex (const Matrix< ElementType > &inputData, const IndexParams &params=KMeansIndexParams(), Distance d=Distance())
 Index constructor. More...
 
 KMeansIndex (const KMeansIndex &)
 
virtual ~KMeansIndex ()
 Index destructor. More...
 
void buildIndex () CV_OVERRIDE
 Builds the index. More...
 
void chooseCentersGonzales (int k, int *indices, int indices_length, int *centers, int &centers_length)
 Chooses the initial centers in the k-means using Gonzales' algorithm so that the centers are spaced apart from each other. More...
 
void chooseCentersKMeanspp (int k, int *indices, int indices_length, int *centers, int &centers_length)
 Chooses the initial centers in the k-means using the algorithm proposed in the KMeans++ paper: Arthur, David; Vassilvitskii, Sergei - k-means++: The Advantages of Careful Seeding. More...
 
void chooseCentersRandom (int k, int *indices, int indices_length, int *centers, int &centers_length)
 Chooses the initial centers in the k-means clustering in a random manner. More...
 
void findNeighbors (ResultSet< DistanceType > &result, const ElementType *vec, const SearchParams &searchParams) CV_OVERRIDE
 Find set of nearest neighbors to vec. More...
 
int getClusterCenters (Matrix< DistanceType > &centers)
 Clustering function that takes a cut in the hierarchical k-means tree and return the clusters centers of that clustering. More...
 
IndexParams getParameters () const CV_OVERRIDE
 
flann_algorithm_t getType () const CV_OVERRIDE
 
virtual void knnSearch (const Matrix< ElementType > &queries, Matrix< int > &indices, Matrix< DistanceType > &dists, int knn, const SearchParams &params)
 Perform k-nearest neighbor search. More...
 
void loadIndex (FILE *stream) CV_OVERRIDE
 Loads the index from a stream. More...
 
KMeansIndexoperator= (const KMeansIndex &)
 
virtual int radiusSearch (const Matrix< ElementType > &query, Matrix< int > &indices, Matrix< DistanceType > &dists, float radius, const SearchParams &params)
 Perform radius search. More...
 
void saveIndex (FILE *stream) CV_OVERRIDE
 Saves the index to a stream. More...
 
void set_cb_index (float index)
 
size_t size () const CV_OVERRIDE
 Returns size of index. More...
 
int usedMemory () const CV_OVERRIDE
 Computes the inde memory usage Returns: memory used by the index. More...
 
size_t veclen () const CV_OVERRIDE
 Returns the length of an index feature. More...
 

Public Attributes

centersAlgFunction chooseCenters
 The function used for choosing the cluster centers. More...
 

Detailed Description

template<typename Distance>
class cvflann::KMeansIndex< Distance >

Hierarchical kmeans index.

Contains a tree constructed through a hierarchical kmeans clustering and other information for indexing a set of points for nearest-neighbour matching.

Member Typedef Documentation

◆ centersAlgFunction

template<typename Distance>
typedef void(KMeansIndex::* cvflann::KMeansIndex< Distance >::centersAlgFunction) (int, int *, int, int *, int &)

◆ DistanceType

template<typename Distance>
typedef Distance::ResultType cvflann::KMeansIndex< Distance >::DistanceType

◆ ElementType

template<typename Distance>
typedef Distance::ElementType cvflann::KMeansIndex< Distance >::ElementType

Constructor & Destructor Documentation

◆ KMeansIndex() [1/2]

template<typename Distance>
cvflann::KMeansIndex< Distance >::KMeansIndex ( const Matrix< ElementType > &  inputData,
const IndexParams params = KMeansIndexParams(),
Distance  d = Distance() 
)
inline

Index constructor.

Params: inputData = dataset with the input features params = parameters passed to the hierarchical k-means algorithm

References cvflann::KMeansIndex< Distance >::chooseCentersGonzales(), cvflann::KMeansIndex< Distance >::chooseCentersKMeanspp(), cvflann::KMeansIndex< Distance >::chooseCentersRandom(), cvflann::FLANN_CENTERS_GONZALES, cvflann::FLANN_CENTERS_KMEANSPP, cvflann::FLANN_CENTERS_RANDOM, cvflann::get_param(), and cv::max().

Here is the call graph for this function:

◆ KMeansIndex() [2/2]

template<typename Distance>
cvflann::KMeansIndex< Distance >::KMeansIndex ( const KMeansIndex< Distance > &  )

◆ ~KMeansIndex()

template<typename Distance>
virtual cvflann::KMeansIndex< Distance >::~KMeansIndex ( )
inlinevirtual

Index destructor.

Release the memory used by the index.

Member Function Documentation

◆ buildIndex()

template<typename Distance>
void cvflann::KMeansIndex< Distance >::buildIndex ( )
inlinevirtual

Builds the index.

Implements cvflann::NNIndex< Distance >.

Referenced by cvflann::AutotunedIndex< Distance >::getType(), and cvflann::hierarchicalClustering().

Here is the caller graph for this function:

◆ chooseCentersGonzales()

template<typename Distance>
void cvflann::KMeansIndex< Distance >::chooseCentersGonzales ( int  k,
int *  indices,
int  indices_length,
int *  centers,
int &  centers_length 
)
inline

Chooses the initial centers in the k-means using Gonzales' algorithm so that the centers are spaced apart from each other.

Params: k = number of centers vecs = the dataset of points indices = indices in the dataset Returns:

References cvflann::rand_int().

Referenced by cvflann::KMeansIndex< Distance >::KMeansIndex().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ chooseCentersKMeanspp()

template<typename Distance>
void cvflann::KMeansIndex< Distance >::chooseCentersKMeanspp ( int  k,
int *  indices,
int  indices_length,
int *  centers,
int &  centers_length 
)
inline

Chooses the initial centers in the k-means using the algorithm proposed in the KMeans++ paper: Arthur, David; Vassilvitskii, Sergei - k-means++: The Advantages of Careful Seeding.

Implementation of this function was converted from the one provided in Arthur's code.

Params: k = number of centers vecs = the dataset of points indices = indices in the dataset Returns:

References cv::min(), cvflann::rand_double(), and cvflann::rand_int().

Referenced by cvflann::KMeansIndex< Distance >::KMeansIndex().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ chooseCentersRandom()

template<typename Distance>
void cvflann::KMeansIndex< Distance >::chooseCentersRandom ( int  k,
int *  indices,
int  indices_length,
int *  centers,
int &  centers_length 
)
inline

Chooses the initial centers in the k-means clustering in a random manner.

Params: k = number of centers vecs = the dataset of points indices = indices in the dataset indices_length = length of indices vector

References cvflann::UniqueRandom::next().

Referenced by cvflann::KMeansIndex< Distance >::KMeansIndex().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ findNeighbors()

template<typename Distance>
void cvflann::KMeansIndex< Distance >::findNeighbors ( ResultSet< DistanceType > &  result,
const ElementType vec,
const SearchParams searchParams 
)
inlinevirtual

Find set of nearest neighbors to vec.

Their indices are stored inside the result object.

Params: result = the result object in which the indices of the nearest-neighbors are stored vec = the vector for which to search the nearest neighbors searchParams = parameters that influence the search algorithm (checks, cb_index)

Implements cvflann::NNIndex< Distance >.

References cvflann::FLANN_CHECKS_UNLIMITED, cvflann::get_param(), cvflann::BranchStruct< T, DistanceType >::node, and cvflann::Heap< T >::popMin().

Here is the call graph for this function:

◆ getClusterCenters()

template<typename Distance>
int cvflann::KMeansIndex< Distance >::getClusterCenters ( Matrix< DistanceType > &  centers)
inline

Clustering function that takes a cut in the hierarchical k-means tree and return the clusters centers of that clustering.

Params: numClusters = number of clusters to have in the clustering computed Returns: number of cluster centers

References cvflann::Logger::info(), and cvflann::Matrix< T >::rows.

Referenced by cvflann::hierarchicalClustering().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getParameters()

◆ getType()

template<typename Distance>
flann_algorithm_t cvflann::KMeansIndex< Distance >::getType ( ) const
inlinevirtual
Returns
The index type (kdtree, kmeans,...)

Implements cvflann::NNIndex< Distance >.

References cvflann::FLANN_INDEX_KMEANS.

◆ knnSearch()

template<typename Distance>
virtual void cvflann::NNIndex< Distance >::knnSearch ( const Matrix< ElementType > &  queries,
Matrix< int > &  indices,
Matrix< DistanceType > &  dists,
int  knn,
const SearchParams params 
)
inlinevirtualinherited

Perform k-nearest neighbor search.

Parameters
[in]queriesThe query points for which to find the nearest neighbors
[out]indicesThe indices of the nearest neighbors found
[out]distsDistances to the nearest neighbors found
[in]knnNumber of nearest neighbors to return
[in]paramsSearch parameters

Reimplemented in cvflann::Index< Distance >, cvflann::Index< cv::L2< ElementType > >, cvflann::Index< cv::L1< ElementType > >, cvflann::KDTreeSingleIndex< Distance >, and cvflann::LshIndex< Distance >.

◆ loadIndex()

template<typename Distance>
void cvflann::KMeansIndex< Distance >::loadIndex ( FILE *  stream)
inlinevirtual

Loads the index from a stream.

Parameters
streamThe stream from which the index is loaded

Implements cvflann::NNIndex< Distance >.

References cvflann::load_value().

Here is the call graph for this function:

◆ operator=()

template<typename Distance>
KMeansIndex& cvflann::KMeansIndex< Distance >::operator= ( const KMeansIndex< Distance > &  )

◆ radiusSearch()

template<typename Distance>
virtual int cvflann::NNIndex< Distance >::radiusSearch ( const Matrix< ElementType > &  query,
Matrix< int > &  indices,
Matrix< DistanceType > &  dists,
float  radius,
const SearchParams params 
)
inlinevirtualinherited

Perform radius search.

Parameters
[in]queryThe query point
[out]indicesThe indinces of the neighbors found within the given radius
[out]distsThe distances to the nearest neighbors found
[in]radiusThe radius used for search
[in]paramsSearch parameters
Returns
Number of neighbors found

Reimplemented in cvflann::Index< Distance >, cvflann::Index< cv::L2< ElementType > >, and cvflann::Index< cv::L1< ElementType > >.

◆ saveIndex()

template<typename Distance>
void cvflann::KMeansIndex< Distance >::saveIndex ( FILE *  stream)
inlinevirtual

Saves the index to a stream.

Parameters
streamThe stream to save the index to

Implements cvflann::NNIndex< Distance >.

References cvflann::save_value().

Here is the call graph for this function:

◆ set_cb_index()

template<typename Distance>
void cvflann::KMeansIndex< Distance >::set_cb_index ( float  index)
inline

Referenced by cvflann::AutotunedIndex< Distance >::getType().

Here is the caller graph for this function:

◆ size()

template<typename Distance>
size_t cvflann::KMeansIndex< Distance >::size ( ) const
inlinevirtual

Returns size of index.

Implements cvflann::NNIndex< Distance >.

◆ usedMemory()

template<typename Distance>
int cvflann::KMeansIndex< Distance >::usedMemory ( ) const
inlinevirtual

Computes the inde memory usage Returns: memory used by the index.

Implements cvflann::NNIndex< Distance >.

Referenced by cvflann::AutotunedIndex< Distance >::getType().

Here is the caller graph for this function:

◆ veclen()

template<typename Distance>
size_t cvflann::KMeansIndex< Distance >::veclen ( ) const
inlinevirtual

Returns the length of an index feature.

Implements cvflann::NNIndex< Distance >.

Member Data Documentation

◆ chooseCenters

template<typename Distance>
centersAlgFunction cvflann::KMeansIndex< Distance >::chooseCenters

The function used for choosing the cluster centers.


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