Mercurial > hg > qm-dsp
diff dsp/segmentation/ClusterMeltSegmenter.h @ 249:18a0dffa5c1a
* Various fixes to segmentation code
author | Chris Cannam <c.cannam@qmul.ac.uk> |
---|---|
date | Thu, 10 Jan 2008 15:14:53 +0000 |
parents | cdfd0948a852 |
children | d096a79fa772 |
line wrap: on
line diff
--- a/dsp/segmentation/ClusterMeltSegmenter.h Thu Jan 10 15:14:30 2008 +0000 +++ b/dsp/segmentation/ClusterMeltSegmenter.h Thu Jan 10 15:14:53 2008 +0000 @@ -1,10 +1,11 @@ +/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ + /* - * ClusterMeltSegmenter.h - * soundbite + * ClusterMeltSegmenter.h * - * Created by Mark Levy on 23/03/2006. - * Copyright 2006 Centre for Digital Music, Queen Mary, University of London. All rights reserved. - * + * Created by Mark Levy on 23/03/2006. + * Copyright 2006 Centre for Digital Music, Queen Mary, University of London. + * All rights reserved. */ #include <vector> @@ -13,72 +14,84 @@ #include "Segmenter.h" #include "hmm/hmm.h" #include "base/Window.h" -#include "dsp/chromagram/ConstantQ.h" using std::vector; -class ClusterMeltSegmenterParams // defaults are sensible for 11025Hz with 0.2 second hopsize +class Decimator; +class ConstantQ; + +class ClusterMeltSegmenterParams +// defaults are sensible for 11025Hz with 0.2 second hopsize { public: - ClusterMeltSegmenterParams() : featureType(FEATURE_TYPE_CONSTQ), hopSize(0.2), windowSize(0.6), fmin(62), fmax(16000), - nbins(8), ncomponents(20), nHMMStates(40), nclusters(10), histogramLength(15), neighbourhoodLimit(20) { } - feature_types featureType; - double hopSize; // in secs - double windowSize; // in secs - int fmin; - int fmax; - int nbins; - int ncomponents; - int nHMMStates; - int nclusters; - int histogramLength; - int neighbourhoodLimit; + ClusterMeltSegmenterParams() : + featureType(FEATURE_TYPE_CONSTQ), + hopSize(0.2), + windowSize(0.6), + fmin(62), + fmax(16000), + nbins(8), + ncomponents(20), + nHMMStates(40), + nclusters(10), + histogramLength(15), + neighbourhoodLimit(20) { } + feature_types featureType; + double hopSize; // in secs + double windowSize; // in secs + int fmin; + int fmax; + int nbins; + int ncomponents; + int nHMMStates; + int nclusters; + int histogramLength; + int neighbourhoodLimit; }; class ClusterMeltSegmenter : public Segmenter { public: - ClusterMeltSegmenter(ClusterMeltSegmenterParams params); - virtual ~ClusterMeltSegmenter(); - virtual void initialise(int samplerate); - virtual int getWindowsize(); - virtual int getHopsize(); - virtual void extractFeatures(double* samples, int nsamples); - void setFeatures(const vector<vector<double> >& f); // provide the features yourself - virtual void segment(); // segment into default number of segment-types - void segment(int m); // segment into m segment-types - int getNSegmentTypes() { return nclusters; } + ClusterMeltSegmenter(ClusterMeltSegmenterParams params); + virtual ~ClusterMeltSegmenter(); + virtual void initialise(int samplerate); + virtual int getWindowsize(); + virtual int getHopsize(); + virtual void extractFeatures(const double* samples, int nsamples); + void setFeatures(const vector<vector<double> >& f); // provide the features yourself + virtual void segment(); // segment into default number of segment-types + void segment(int m); // segment into m segment-types + int getNSegmentTypes() { return nclusters; } + protected: - //void mpeg7ConstQ(); - void makeSegmentation(int* q, int len); + void makeSegmentation(int* q, int len); - Window<double> *window; -// int windowLength; // in samples - ConstantQ* constq; - model_t* model; // the HMM - //vector<int> stateSequence; - //vector<int> segmentTypeSequence; - int* q; // the decoded HMM state sequence - vector<vector<double> > histograms; - - feature_types featureType; - double hopSize; // in seconds - double windowSize; // in seconds - - // constant-Q parameters - int fmin; - int fmax; - int nbins; - int ncoeff; - - // PCA parameters - int ncomponents; - - // HMM parameters - int nHMMStates; - - // clustering parameters - int nclusters; - int histogramLength; - int neighbourhoodLimit; + Window<double> *window; + ConstantQ* constq; + model_t* model; // the HMM + int* q; // the decoded HMM state sequence + vector<vector<double> > histograms; + + feature_types featureType; + double hopSize; // in seconds + double windowSize; // in seconds + + // constant-Q parameters + int fmin; + int fmax; + int nbins; + int ncoeff; + + // PCA parameters + int ncomponents; + + // HMM parameters + int nHMMStates; + + // clustering parameters + int nclusters; + int histogramLength; + int neighbourhoodLimit; + + Decimator *decimator; };