/** * @file SpectralCluster.h * @brief spectral clustering by kmeans-clustering of eigenvectors * @author Erik Rodner * @date 11/13/2007 */ #ifndef SPECTRALCLUSTERINCLUDE #define SPECTRALCLUSTERINCLUDE #include "core/vector/VectorT.h" #include "core/vector/MatrixT.h" #include "ClusterAlgorithm.h" #include "KMeans.h" namespace OBJREC { /** spectral clustering by kmeans-clustering of eigenvectors */ class SpectralCluster : public ClusterAlgorithm { protected: int noClasses; double alpha; KMeans kmeans; enum { L_UNNORMALIZED = 0, L_RW_NORMALIZED }; virtual void computeLaplacian ( const NICE::VVector & features, // refactor-nice.pl: check this substitution // old: Matrix & laplacian, NICE::Matrix & laplacian, int method, double alpha ); virtual void getSimilarityMatrix ( const NICE::VVector & features, // refactor-nice.pl: check this substitution // old: Matrix & laplacian, double alpha ); NICE::Matrix & laplacian, double alpha ); public: /** simple constructor */ SpectralCluster (int _noClasses, double alpha); /** simple destructor */ virtual ~SpectralCluster(); void cluster ( const NICE::VVector & features, NICE::VVector & prototypes, std::vector & weights, std::vector & assignment ); }; } // namespace #endif