1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- /**
- * @file PCA.h
- * @brief extract fourier domain value
- * @author Michael Koch
- * @date 5/27/2008
- */
- #ifndef PCAINCLUDE
- #define PCAINCLUDE
- #include "core/vector/VectorT.h"
- #include "core/vector/MatrixT.h"
- #include "vislearning/math/ftransform/FTransform.h"
- namespace OBJREC {
- /** extract PCA features */
- class PCA: public FTransform
- {
- protected:
- NICE::Vector mean;
- NICE::Matrix basis;
- NICE::Matrix normbasis;
- NICE::Matrix normalization;
- uint targetDimension;
- uint maxiteration;
- double mindelta;
- void calculateMean ( const NICE::Matrix &features, NICE::Vector & mean );
- public:
- PCA ( uint dim, uint maxiteration = 100, double mindelta = 1e-4 );
- PCA ( void );
- NICE::Matrix getBasis();
- NICE::Vector getMean();
- void restore ( std::istream & is, int format = 0 );
- void store ( std::ostream & os, int format = 0 ) const;
- void clear ();
- /**
- * get Basis Vectors of PCA
- * @param features Input Features
- * @param dimension Dimension size / number of principal components
- * @return Basis Vectors
- */
- void calculateBasis ( const NICE::Matrix &features, const uint targetDimension, const uint mode = 0 );
- void calculateBasis ( const NICE::Matrix &features, const uint targetDimension, const bool adaptive, const double targetRatio = 1.0 );
- /**
- * returns the dimension of the transformed features
- * @return feature dim
- */
- int getTargetDim();
- /**
- * get Features in PCA Space
- * @param data input data
- * @param normalize normalisation switch
- * @return Features as Vector
- */
- NICE::Vector getFeatureVector ( const NICE::Vector &data, const bool normalize = true );
- ~PCA();
- private:
- void init ( uint dim = 10, uint maxiteration = 100, double mindelta = 1e-4 );
- };
- } // namespace
- #endif
|