Documentation>C API
hikmeans.c File Reference

Hierarchical Integer K-Means Clustering - Declaration. More...

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include "hikmeans.h"

Functions

vl_uint8vl_hikm_copy_subset (vl_uint8 const *data, vl_uint32 *ids, vl_size N, vl_size M, vl_uint32 id, vl_size *N2)
 Copy a subset of the data to a buffer. More...
 
static VlHIKMNodexmeans (VlHIKMTree *tree, vl_uint8 const *data, vl_size N, vl_size K, vl_size height)
 Compute HIKM clustering. More...
 
static void xdelete (VlHIKMNode *node)
 Delete node. More...
 
VlHIKMTreevl_hikm_new (int method)
 New HIKM tree. More...
 
void vl_hikm_delete (VlHIKMTree *f)
 Delete HIKM tree. More...
 
void vl_hikm_init (VlHIKMTree *f, vl_size M, vl_size K, vl_size depth)
 Initialize HIKM tree. More...
 
void vl_hikm_train (VlHIKMTree *f, vl_uint8 const *data, vl_size N)
 Train HIKM tree. More...
 
void vl_hikm_push (VlHIKMTree *f, vl_uint32 *asgn, vl_uint8 const *data, vl_size N)
 Project data down HIKM tree. More...
 
vl_size vl_hikm_get_ndims (VlHIKMTree const *f)
 Get data dimensionality. More...
 
vl_size vl_hikm_get_K (VlHIKMTree const *f)
 Get K. More...
 
vl_size vl_hikm_get_depth (VlHIKMTree const *f)
 Get depth. More...
 
int vl_hikm_get_verbosity (VlHIKMTree const *f)
 Get verbosity level. More...
 
vl_size vl_hikm_get_max_niters (VlHIKMTree const *f)
 Get maximum number of iterations. More...
 
VlHIKMNode const * vl_hikm_get_root (VlHIKMTree const *f)
 Get maximum number of iterations. More...
 
void vl_hikm_set_verbosity (VlHIKMTree *f, int verb)
 Set verbosity level. More...
 
void vl_hikm_set_max_niters (VlHIKMTree *f, int max_niters)
 Set maximum number of iterations. More...
 

Detailed Description

Author
Brian Fulkerson
Andrea Vedaldi

Function Documentation

vl_uint8* vl_hikm_copy_subset ( vl_uint8 const *  data,
vl_uint32 ids,
vl_size  N,
vl_size  M,
vl_uint32  id,
vl_size N2 
)
Parameters
dataData
idsData labels
NNumber of indices
MData dimensionality
idLabel of data to copy
N2Number of data copied (out)
Returns
a new buffer with a copy of the selected data.
void vl_hikm_delete ( VlHIKMTree f)
Parameters
fHIKM tree.
vl_size vl_hikm_get_depth ( VlHIKMTree const *  f)
Parameters
fHIKM tree.
Returns
depth.
vl_size vl_hikm_get_K ( VlHIKMTree const *  f)
Parameters
fHIKM tree.
Returns
K.
vl_size vl_hikm_get_max_niters ( VlHIKMTree const *  f)
Parameters
fHIKM tree.
Returns
maximum number of iterations.
vl_size vl_hikm_get_ndims ( VlHIKMTree const *  f)
Parameters
fHIKM tree.
Returns
data dimensionality.
VlHIKMNode const* vl_hikm_get_root ( VlHIKMTree const *  f)
Parameters
fHIKM tree.
Returns
maximum number of iterations.
int vl_hikm_get_verbosity ( VlHIKMTree const *  f)
Parameters
fHIKM tree.
Returns
verbosity level.
void vl_hikm_init ( VlHIKMTree f,
vl_size  M,
vl_size  K,
vl_size  depth 
)
Parameters
fHIKM tree.
MData dimensionality.
KNumber of clusters per node.
depthTree depth.
Returns
a new HIKM tree representing the clustering.
Remarks
depth cannot be smaller than 1.
VlHIKMTree* vl_hikm_new ( int  method)
Parameters
methodclustering method.
Returns
new HIKM tree.
void vl_hikm_push ( VlHIKMTree f,
vl_uint32 asgn,
vl_uint8 const *  data,
vl_size  N 
)
Parameters
fHIKM tree.
asgnPath down the tree (out).
dataData to project.
NNumber 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.

void vl_hikm_set_max_niters ( VlHIKMTree f,
int  max_niters 
)
Parameters
fHIKM tree.
max_nitersmaximum number of iterations.
void vl_hikm_set_verbosity ( VlHIKMTree f,
int  verb 
)
Parameters
fHIKM tree.
verbverbosity level.
void vl_hikm_train ( VlHIKMTree f,
vl_uint8 const *  data,
vl_size  N 
)
Parameters
fHIKM tree.
dataData to cluster.
NNumber of data.
static void xdelete ( VlHIKMNode node)
static
Parameters
nodeto delete.

The function deletes recursively node and all its descendent.

static VlHIKMNode* xmeans ( VlHIKMTree tree,
vl_uint8 const *  data,
vl_size  N,
vl_size  K,
vl_size  height 
)
static
Parameters
treeHIKM tree to initialize.
dataData to cluster.
NNumber of data points.
KNumber of clusters for this node.
heightTree height.
Remarks
height cannot be smaller than 1.
Returns
a new HIKM node representing a sub-clustering.