test_kmeans_hier.cpp
Go to the documentation of this file.
00001 #include <vocabulary_tree/simple_kmeans.h>
00002 #include <Eigen/Core>
00003 #include <vector>
00004 #include <cstdio>
00005 #include <fstream>
00006 
00007 int main(int argc, char** argv)
00008 {
00009   static const size_t K = 5;
00010   typedef Eigen::Vector2f Feature;
00011   typedef std::vector<Feature, Eigen::aligned_allocator<Feature> > FeatureVector;
00012   
00013   FeatureVector features;
00014   FeatureVector centers;
00015   std::vector<unsigned int> membership;
00016 
00017   std::ifstream infile(argv[1]);
00018   while (infile.good()) {
00019     Feature f;
00020     infile >> f[0] >> f[1];
00021     if (infile.good())
00022       features.push_back(f);
00023   }
00024   
00025   vt::SimpleKmeans<Feature> kmeans(Feature::Zero());
00026 #if 1
00027   kmeans.setRestarts(3);
00028 #else
00029   kmeans.setInitMethod(vt::InitGiven());
00030   centers.reserve(5);
00031   centers.push_back(Feature(1000, 0));
00032   centers.push_back(Feature(306, 963));
00033   centers.push_back(Feature(-812, 594));
00034   centers.push_back(Feature(-812, -594));
00035   centers.push_back(Feature(306, -963));
00036 #endif
00037 
00038   double sse = kmeans.cluster(features, K, centers, membership);
00039 
00040   for (size_t i = 0; i < centers.size(); ++i) {
00041     printf("%f %f\n", centers[i][0], centers[i][1]);
00042   }
00043   printf("sse = %f\n", sse);
00044 }


vocabulary_tree
Author(s): Patrick Mihelich
autogenerated on Thu Jan 2 2014 12:12:26