libvot  0.1.3
A C++11 multithread library for image retrieval
Classes | Functions
tw Namespace Reference

namespace tw is mostly related to some utility functions developed by the repository owner, Tianwei Shen. More...

Classes

class  IO
 To safely read and write files. More...
 
class  SiftData
 Sift data structure used in libvot. More...
 
class  UnionFind
 Union-find data structure, used in various graph algorithms. More...
 
struct  VlFeatParam
 a parameter struct used in calling vlfeat sift function More...
 
struct  Vlfeature
 a struct containing the data of vlfeat features More...
 

Functions

bool OpencvKeyPoints2libvotSift (std::vector< cv::KeyPoint > &key_points, cv::Mat &descriptors, tw::SiftData &sift_data)
 
bool Vlfeature2LibvotSift (std::vector< Vlfeature > const &vlfeature_vec, unsigned char const *data, int image_width, int image_height, int num_channel, tw::SiftData &sift_data)
 
void VlFeatureDetection (unsigned char const *data, std::vector< Vlfeature > &vlfeature_vec, int image_width, int image_height, VlFeatParam const &vlfeat_param)
 
int RunVlFeature (unsigned char *data, int image_width, int image_height, int num_channel, SiftData &sift_data, VlFeatParam const &vlfeat_param)
 
template<typename T >
T * allocate_2d (T ***array, int row, int col)
 
template<typename T >
void free_2d (T ***array, T *data)
 
template int * allocate_2d< int > (int ***array, int row, int col)
 
template void free_2d< int > (int ***array, int *data)
 
template float * allocate_2d< float > (float ***array, int row, int col)
 
template void free_2d< float > (float ***array, float *data)
 
template double * allocate_2d< double > (double ***array, int row, int col)
 
template void free_2d< double > (double ***array, double *data)
 
template vot::LinkEdgeallocate_2d< vot::LinkEdge > (vot::LinkEdge ***array, int row, int col)
 
template void free_2d< vot::LinkEdge > (vot::LinkEdge ***array, vot::LinkEdge *data)
 
void GetIntialCenters (size_t n, int k, size_t *initial_idx)
 
void CopyDes2Double (double *dst, DTYPE *src, int length)
 
double DisDes2Double (double *dst, DTYPE *src, int length)
 
void MultiComputeAssignment (size_t num, int dim, int k, DTYPE **des, double *means, int *assignment, double *error_out, size_t *changed_num)
 
size_t ComputeAssignment (size_t num, int dim, int k, DTYPE **p, double *means, int *assignment, double &error_out, int thread_num)
 Compute new assignment for each feature points. More...
 
void MultiDesAccumulation (size_t num, int dim, int k, DTYPE **p, int *assignment_curr, double *totals, size_t *counts)
 Accumulate the feature descriptors to the total, a subroutine used by multi-threaded version of ComputeMeans. More...
 
void ComputeMeans (size_t num, int dim, int k, DTYPE **p, int *assignment_curr, double *means_curr, int thread_num)
 Compute new means for each cluster. More...
 
double ComputeError (size_t num, int dim, int k, DTYPE **p, double *means, int *assignment)
 
double Kmeans (size_t num, int dim, int k, DTYPE **p, double *means, int *assignment, int thread_num)
 

Detailed Description

namespace tw is mostly related to some utility functions developed by the repository owner, Tianwei Shen.

It includes some utility classes and functions, such as the file I/O class.

Function Documentation

template<typename T >
T * tw::allocate_2d ( T ***  arr,
int  row,
int  col 
)

allocate a continuous 2d array

template double* tw::allocate_2d< double > ( double ***  array,
int  row,
int  col 
)
template float* tw::allocate_2d< float > ( float ***  array,
int  row,
int  col 
)
template int* tw::allocate_2d< int > ( int ***  array,
int  row,
int  col 
)
template vot::LinkEdge* tw::allocate_2d< vot::LinkEdge > ( vot::LinkEdge ***  array,
int  row,
int  col 
)
size_t tw::ComputeAssignment ( size_t  num,
int  dim,
int  k,
DTYPE **  p,
double *  means,
int *  assignment,
double &  error_out,
int  thread_num 
)

Compute new assignment for each feature points.

Parameters
num- the total number of feature points
dim- the dimension of the feature points
k- the number of clusters
p- the address to the feature points
means- the descriptors of the clusters
assignment- the input and output assignments
error- total error of the new assignment
thread_num- thread number
Returns
double tw::ComputeError ( size_t  num,
int  dim,
int  k,
DTYPE **  p,
double *  means,
int *  assignment 
)
void tw::ComputeMeans ( size_t  num,
int  dim,
int  k,
DTYPE **  p,
int *  assignment_curr,
double *  means_curr,
int  thread_num 
)

Compute new means for each cluster.

Parameters
num- the total number of feature points
dim- the dimension of the feature points
k- the number of clusters
assignment_curr- the current assignments computed by ComputeAssignment
means_curr- the means of clusters
thread_num- the number of threads
Returns
void tw::CopyDes2Double ( double *  dst,
DTYPE src,
int  length 
)
inline
double tw::DisDes2Double ( double *  dst,
DTYPE src,
int  length 
)
inline
template<typename T >
void tw::free_2d ( T ***  array,
T *  data 
)

free a continuous 2d array, both the raw pointer to the data and the 2d array pointers are needed.

template void tw::free_2d< double > ( double ***  array,
double *  data 
)
template void tw::free_2d< float > ( float ***  array,
float *  data 
)
template void tw::free_2d< int > ( int ***  array,
int *  data 
)
template void tw::free_2d< vot::LinkEdge > ( vot::LinkEdge ***  array,
vot::LinkEdge data 
)
void tw::GetIntialCenters ( size_t  n,
int  k,
size_t *  initial_idx 
)

Random sample k indexes for [1...n] without replacement

double tw::Kmeans ( size_t  num,
int  dim,
int  k,
DTYPE **  p,
double *  means,
int *  assignment,
int  thread_num 
)
void tw::MultiComputeAssignment ( size_t  num,
int  dim,
int  k,
DTYPE **  des,
double *  means,
int *  assignment,
double *  error_out,
size_t *  changed_num 
)
void tw::MultiDesAccumulation ( size_t  num,
int  dim,
int  k,
DTYPE **  p,
int *  assignment_curr,
double *  totals,
size_t *  counts 
)

Accumulate the feature descriptors to the total, a subroutine used by multi-threaded version of ComputeMeans.

Parameters
num- the total number of feature points
start_id- the start index for this thread
dim- the dimension of the feature points
k- the number of clusters
p- the address to the starting feature point
assignment_curr- the current assignments computed by ComputeAssignment
total- accumulator
counts- counter
Returns
bool tw::OpencvKeyPoints2libvotSift ( std::vector< cv::KeyPoint > &  key_points,
cv::Mat &  descriptors,
tw::SiftData sift_data 
)
int tw::RunVlFeature ( unsigned char *  data,
int  image_width,
int  image_height,
int  num_channel,
SiftData sift_data,
VlFeatParam const &  vlfeat_param 
)
bool tw::Vlfeature2LibvotSift ( std::vector< Vlfeature > const &  vlfeature_vec,
unsigned char const *  data,
int  image_width,
int  image_height,
int  num_channel,
tw::SiftData sift_data 
)
void tw::VlFeatureDetection ( unsigned char const *  data,
std::vector< Vlfeature > &  vlfeature_vec,
int  image_width,
int  image_height,
VlFeatParam const &  vlfeat_param 
)