Documentation - C API

hikmeans.h File Reference

Hierarchical integer K-Means clustering. More...

#include "generic.h"
#include "ikmeans.h"

Go to the source code of this file.

Data Structures

struct  _VlHIKMNode
 HIKM tree node. More...
struct  _VlHIKMTree
 HIKM tree. More...

Typedefs

typedef struct _VlHIKMNode VlHIKMNode
 HIKM tree node.
typedef struct _VlHIKMTree VlHIKMTree
 HIKM tree.

Functions

Create and destroy

VlHIKMTreevl_hikm_new (int method)
 New HIKM tree.
void vl_hikm_delete (VlHIKMTree *f)
 Delete HIKM tree.
Retrieve data and parameters

int vl_hikm_get_ndims (VlHIKMTree const *f)
 Get data dimensionality.
int vl_hikm_get_K (VlHIKMTree const *f)
 Get K.
int vl_hikm_get_depth (VlHIKMTree const *f)
 Get depth.
int vl_hikm_get_verbosity (VlHIKMTree const *f)
 Get verbosity level.
int vl_hikm_get_max_niters (VlHIKMTree const *f)
 Get maximum number of iterations.
VlHIKMNode const * vl_hikm_get_root (VlHIKMTree const *f)
 Get maximum number of iterations.
Set parameters

void vl_hikm_set_verbosity (VlHIKMTree *f, int verb)
 Set verbosity level.
void vl_hikm_set_max_niters (VlHIKMTree *f, int max_niters)
 Set maximum number of iterations.
Process data

void vl_hikm_init (VlHIKMTree *f, int M, int K, int depth)
 Initialize HIKM tree.
void vl_hikm_train (VlHIKMTree *f, vl_uint8 const *data, int N)
 Train HIKM tree.
void vl_hikm_push (VlHIKMTree *f, vl_uint *asgn, vl_uint8 const *data, int N)
 Project data down HIKM tree.

Detailed Description

Hierarchical Integer K-Means Clustering.

Hierarchical integer K-Means clustering (HIKM) is a simple hierarchical version of integer K-Means (IKM). The algorithm recursively applies integer K-means to create more refined partitions of the data.

Create a tree with vl_hikm_new() and delete it with vl_hikm_delete(). Use vl_hikm_train() to build the tree from training data and vl_hikm_push() to project new data down a HIKM tree.

HIKM tree

The HIKM tree is represented by a VlHIKMTree structure, which contains a tree composed of VlHIKMNode. Each node is an integer K-means filter which partitions the data into K clusters.

Author:
Brian Fulkerson

Definition in file hikmeans.h.


Typedef Documentation

typedef struct _VlHIKMNode VlHIKMNode

The number of children K is not bigger than the K parameter of the HIKM tree.


Function Documentation

void vl_hikm_delete ( VlHIKMTree f  ) 

------------------------------------------------------------------

Parameters:
f HIKM tree.

Definition at line 202 of file hikmeans.c.

References vl_free(), and xdelete().

int vl_hikm_get_depth ( VlHIKMTree const *  f  )  [inline]

------------------------------------------------------------------

Parameters:
f HIKM tree.
Returns:
depth.

Definition at line 109 of file hikmeans.h.

Referenced by vl_hikm_push().

int vl_hikm_get_K ( VlHIKMTree const *  f  )  [inline]

------------------------------------------------------------------

Parameters:
f HIKM tree.
Returns:
K.

Definition at line 97 of file hikmeans.h.

int vl_hikm_get_max_niters ( VlHIKMTree const *  f  )  [inline]

------------------------------------------------------------------

Parameters:
f HIKM tree.
Returns:
maximum number of iterations.

Definition at line 134 of file hikmeans.h.

int vl_hikm_get_ndims ( VlHIKMTree const *  f  )  [inline]

------------------------------------------------------------------

Parameters:
f HIKM tree.
Returns:
data dimensionality.

Definition at line 85 of file hikmeans.h.

Referenced by vl_hikm_push().

VlHIKMNode const * vl_hikm_get_root ( VlHIKMTree const *  f  )  [inline]

------------------------------------------------------------------

Parameters:
f HIKM tree.
Returns:
maximum number of iterations.

Definition at line 146 of file hikmeans.h.

int vl_hikm_get_verbosity ( VlHIKMTree const *  f  )  [inline]

------------------------------------------------------------------

Parameters:
f HIKM tree.
Returns:
verbosity level.

Definition at line 122 of file hikmeans.h.

void vl_hikm_init ( VlHIKMTree f,
int  M,
int  K,
int  depth 
)

------------------------------------------------------------------

Parameters:
f HIKM tree.
M Data dimensionality.
K Number of clusters per node.
depth Tree depth.
Remarks:
depth cannot be smaller than 1.
Returns:
a new HIKM tree representing the clustering.

Definition at line 225 of file hikmeans.c.

References xdelete().

VlHIKMTree* vl_hikm_new ( int  method  ) 

------------------------------------------------------------------

Parameters:
method clustering method.
Returns:
new HIKM tree.

Definition at line 182 of file hikmeans.c.

References vl_malloc().

void vl_hikm_push ( VlHIKMTree f,
vl_uint asgn,
vl_uint8 const *  data,
int  N 
)

------------------------------------------------------------------

Parameters:
f HIKM tree.
asgn Path down the tree (out).
data Data to project.
N Number of data.

The function writes to asgn the path of the data data down the HIKM tree f. The parameter asgn must point to an array of M by N elements, where M is the depth of the HIKM tree and N is the number of data point to process.

Definition at line 269 of file hikmeans.c.

References _VlHIKMNode::children, _VlHIKMNode::filter, _VlHIKMTree::root, vl_hikm_get_depth(), vl_hikm_get_ndims(), and vl_ikm_push().

void vl_hikm_set_max_niters ( VlHIKMTree f,
int  max_niters 
) [inline]

------------------------------------------------------------------

Parameters:
f HIKM tree.
max_niters maximum number of iterations.

Definition at line 170 of file hikmeans.h.

void vl_hikm_set_verbosity ( VlHIKMTree f,
int  verb 
) [inline]

------------------------------------------------------------------

Parameters:
f HIKM tree.
verb verbosity level.

Definition at line 158 of file hikmeans.h.

void vl_hikm_train ( VlHIKMTree f,
vl_uint8 const *  data,
int  N 
)

------------------------------------------------------------------

Parameters:
f HIKM tree.
data Data to cluster.
N Number of data.

Definition at line 248 of file hikmeans.c.

References _VlHIKMTree::depth, _VlHIKMTree::K, VL_MIN, and xmeans().