Program Listing for File utils.h
↰ Return to documentation for file (include/cpphots/clustering/utils.h)
#ifndef CPPHOTS_CLUSTERING_UTILS_H
#define CPPHOTS_CLUSTERING_UTILS_H
#include "../types.h"
#include "../interfaces/clustering.h"
namespace cpphots {
class ClustererHistogramMixin : public virtual interfaces::Clusterer {
public:
std::vector<uint32_t> getHistogram() const override;
void reset() override;
protected:
void updateHistogram(uint16_t k);
private:
std::vector<uint32_t> hist;
};
class ClustererOnlineMixin : public virtual interfaces::Clusterer {
public:
bool isOnline() const final;
void train(const std::vector<TimeSurfaceType>& tss) override;
};
class ClustererOfflineMixin : public virtual interfaces::Clusterer {
public:
uint16_t cluster(const TimeSurfaceType& surface) override;
bool isOnline() const final;
bool toggleLearning(bool enable = true) override;
protected:
bool isLearning() const;
private:
std::vector<TimeSurfaceType> learning_tss;
bool learning = false;
};
using ClustererSeedingType = std::function<void(interfaces::Clusterer&, const std::vector<TimeSurfaceType>&)>;
void ClustererUniformSeeding(interfaces::Clusterer& clusterer, const std::vector<TimeSurfaceType>& time_surfaces);
void ClustererPlusPlusSeeding(interfaces::Clusterer& clusterer, const std::vector<TimeSurfaceType>& time_surfaces);
ClustererSeedingType ClustererAFKMC2Seeding(uint16_t chain);
ClustererSeedingType ClustererRandomSeeding(uint16_t width, uint16_t height);
}
#endif