#pragma once #include #include #include #include #include #include #include #include //Boost serialization test: #include #include #include #include #include //YAS Serialization: #include #include #include //Debug, for measuring execution times #include #include #include "Descriptor.h" #include "Mutation.h" using namespace std; using namespace chrono; using namespace Magick; //ENUM_STRING(descriptorss, (totalColors)(averageColor)(numDescriptors)) namespace fs = boost::filesystem; namespace ar = boost::archive; //Manager class for descriptors. //Contains functions to load, store, process //all images, descriptors and mutations class DescriptorManager { public: DescriptorManager(); DescriptorManager(const fs::path & image_path); ~DescriptorManager(); void Init(); void rankImages(string image_name, int method); multiset> rankMutations(string image_name, int method); void runExperiments(); void generatePreviews(string imagename); void outputMap(int a); void outputMap(); void outputRank(string imagename, int method); private: static const int numDescriptors = 8; static const int numMutations = 8; //TODO: automagically update this? bool initialized = false; int numImages; map> features[numDescriptors]; //array of maps that will hold the descriptors map> mutatedFeatures[numDescriptors][numMutations]; multiset > distances; //multiset that stores the distances fs::path img_path; //where the images are Descriptor* descriptor_types[numDescriptors]; Mutation* mutators[numMutations]; };