⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 newmat.h

📁 国外一个大牛人写的MEAN-SHIFT目标跟踪算法
💻 H
📖 第 1 页 / 共 5 页
字号:
   Real MaximumAbsoluteValue() const      { CornerClear(); return GeneralMatrix::MaximumAbsoluteValue(); }   Real MinimumAbsoluteValue() const      { int i, j; return GeneralMatrix::MinimumAbsoluteValue2(i, j); }   Real Maximum() const { int i, j; return GeneralMatrix::Maximum2(i, j); }   Real Minimum() const { int i, j; return GeneralMatrix::Minimum2(i, j); }   Real Trace() const;   LogAndSign LogDeterminant() const;   void GetRow(MatrixRowCol&);   void GetCol(MatrixRowCol&);   void GetCol(MatrixColX&);   void RestoreCol(MatrixRowCol&) {}   void RestoreCol(MatrixColX&);   GeneralMatrix* Transpose(TransposedMatrix*, MatrixType);   void ReSize(int,int);                       // change dimensions   void ReSize(const GeneralMatrix& A);   bool SameStorageType(const GeneralMatrix& A) const;   void ReSizeForAdd(const GeneralMatrix& A, const GeneralMatrix& B);   void ReSizeForSP(const GeneralMatrix& A, const GeneralMatrix& B);   MatrixBandWidth BandWidth() const;   void SetParameters(const GeneralMatrix*);   NEW_DELETE(SymmetricBandMatrix)};class BandLUMatrix : public GeneralMatrix// for LU decomposition of band matrix{   int* indx;   bool d;   bool sing;                                   // true if singular   Real* store2;   int storage2;   void ludcmp();   int m1,m2;                                   // lower and upperpublic:   BandLUMatrix(const BaseMatrix&);   MatrixType Type() const;   void lubksb(Real*, int=0);   ~BandLUMatrix();   GeneralMatrix* MakeSolver() { return this; } // for solving   LogAndSign LogDeterminant() const;   void Solver(MatrixColX&, const MatrixColX&);   void GetRow(MatrixRowCol&);   void GetCol(MatrixRowCol&);   void GetCol(MatrixColX& c) { GetCol((MatrixRowCol&)c); }   void operator=(const BaseMatrix&);   void operator=(const BandLUMatrix& m) { operator=((const BaseMatrix&)m); }   void CleanUp();                                // to clear store   bool IsEqual(const GeneralMatrix&) const;   bool IsSingular() const { return sing; }   NEW_DELETE(BandLUMatrix)};// ************************** GenericMatrix class ************************/class GenericMatrix : public BaseMatrix{   GeneralMatrix* gm;   int search(const BaseMatrix* bm) const;   friend class BaseMatrix;public:   GenericMatrix() : gm(0) {}   GenericMatrix(const BaseMatrix& bm)      { gm = ((BaseMatrix&)bm).Evaluate(); gm = gm->Image(); }   GenericMatrix(const GenericMatrix& bm)      { gm = bm.gm->Image(); }   void operator=(const GenericMatrix&);   void operator=(const BaseMatrix&);   void operator+=(const BaseMatrix&);   void operator-=(const BaseMatrix&);   void operator*=(const BaseMatrix&);   void operator|=(const BaseMatrix&);   void operator&=(const BaseMatrix&);   void operator+=(Real);   void operator-=(Real r) { operator+=(-r); }   void operator*=(Real);   void operator/=(Real r) { operator*=(1.0/r); }   ~GenericMatrix() { delete gm; }   void CleanUp() { delete gm; gm = 0; }   void Release() { gm->Release(); }   GeneralMatrix* Evaluate(MatrixType = MatrixTypeUnSp);   MatrixBandWidth BandWidth() const;   NEW_DELETE(GenericMatrix)};// *************************** temporary classes *************************/class MultipliedMatrix : public BaseMatrix{protected:   // if these union statements cause problems, simply remove them   // and declare the items individually   union { const BaseMatrix* bm1; GeneralMatrix* gm1; };						  // pointers to summands   union { const BaseMatrix* bm2; GeneralMatrix* gm2; };   MultipliedMatrix(const BaseMatrix* bm1x, const BaseMatrix* bm2x)      : bm1(bm1x),bm2(bm2x) {}   int search(const BaseMatrix*) const;   friend class BaseMatrix;   friend class GeneralMatrix;   friend class GenericMatrix;public:   ~MultipliedMatrix() {}   GeneralMatrix* Evaluate(MatrixType mt=MatrixTypeUnSp);   MatrixBandWidth BandWidth() const;   NEW_DELETE(MultipliedMatrix)};class AddedMatrix : public MultipliedMatrix{protected:   AddedMatrix(const BaseMatrix* bm1x, const BaseMatrix* bm2x)      : MultipliedMatrix(bm1x,bm2x) {}   friend class BaseMatrix;   friend class GeneralMatrix;   friend class GenericMatrix;public:   ~AddedMatrix() {}   GeneralMatrix* Evaluate(MatrixType mt=MatrixTypeUnSp);   MatrixBandWidth BandWidth() const;#ifdef __GNUG__   void SelectVersion(MatrixType, int&, int&) const;#else   void SelectVersion(MatrixType, bool&, bool&) const;#endif   NEW_DELETE(AddedMatrix)};class SPMatrix : public AddedMatrix{protected:   SPMatrix(const BaseMatrix* bm1x, const BaseMatrix* bm2x)      : AddedMatrix(bm1x,bm2x) {}   friend class BaseMatrix;   friend class GeneralMatrix;   friend class GenericMatrix;public:   ~SPMatrix() {}   GeneralMatrix* Evaluate(MatrixType mt=MatrixTypeUnSp);   MatrixBandWidth BandWidth() const;#ifdef __GNUG__   void SelectVersion(MatrixType, int&, int&) const;#else   void SelectVersion(MatrixType, bool&, bool&) const;#endif#ifndef TEMPS_DESTROYED_QUICKLY   friend SPMatrix SP(const BaseMatrix&, const BaseMatrix&);#else   friend SPMatrix& SP(const BaseMatrix&, const BaseMatrix&);#endif   NEW_DELETE(SPMatrix)};class ConcatenatedMatrix : public MultipliedMatrix{protected:   ConcatenatedMatrix(const BaseMatrix* bm1x, const BaseMatrix* bm2x)      : MultipliedMatrix(bm1x,bm2x) {}   friend class BaseMatrix;   friend class GeneralMatrix;   friend class GenericMatrix;public:   ~ConcatenatedMatrix() {}   MatrixBandWidth BandWidth() const;   GeneralMatrix* Evaluate(MatrixType mt=MatrixTypeUnSp);   NEW_DELETE(ConcatenatedMatrix)};class StackedMatrix : public ConcatenatedMatrix{protected:   StackedMatrix(const BaseMatrix* bm1x, const BaseMatrix* bm2x)      : ConcatenatedMatrix(bm1x,bm2x) {}   friend class BaseMatrix;   friend class GeneralMatrix;   friend class GenericMatrix;public:   ~StackedMatrix() {}   GeneralMatrix* Evaluate(MatrixType mt=MatrixTypeUnSp);   NEW_DELETE(StackedMatrix)};class SolvedMatrix : public MultipliedMatrix{   SolvedMatrix(const BaseMatrix* bm1x, const BaseMatrix* bm2x)      : MultipliedMatrix(bm1x,bm2x) {}   friend class BaseMatrix;   friend class InvertedMatrix;                        // for operator*public:   ~SolvedMatrix() {}   GeneralMatrix* Evaluate(MatrixType mt=MatrixTypeUnSp);   MatrixBandWidth BandWidth() const;   NEW_DELETE(SolvedMatrix)};class SubtractedMatrix : public AddedMatrix{   SubtractedMatrix(const BaseMatrix* bm1x, const BaseMatrix* bm2x)      : AddedMatrix(bm1x,bm2x) {}   friend class BaseMatrix;   friend class GeneralMatrix;   friend class GenericMatrix;public:   ~SubtractedMatrix() {}   GeneralMatrix* Evaluate(MatrixType mt=MatrixTypeUnSp);   NEW_DELETE(SubtractedMatrix)};class ShiftedMatrix : public BaseMatrix{protected:   union { const BaseMatrix* bm; GeneralMatrix* gm; };   Real f;   ShiftedMatrix(const BaseMatrix* bmx, Real fx) : bm(bmx),f(fx) {}   int search(const BaseMatrix*) const;   friend class BaseMatrix;   friend class GeneralMatrix;   friend class GenericMatrix;public:   ~ShiftedMatrix() {}   GeneralMatrix* Evaluate(MatrixType mt=MatrixTypeUnSp);#ifndef TEMPS_DESTROYED_QUICKLY   friend ShiftedMatrix operator+(Real f, const BaseMatrix& BM)      { return ShiftedMatrix(&BM, f); }#endif   NEW_DELETE(ShiftedMatrix)};class NegShiftedMatrix : public ShiftedMatrix{protected:   NegShiftedMatrix(Real fx, const BaseMatrix* bmx) : ShiftedMatrix(bmx,fx) {}   friend class BaseMatrix;   friend class GeneralMatrix;   friend class GenericMatrix;public:   ~NegShiftedMatrix() {}   GeneralMatrix* Evaluate(MatrixType mt=MatrixTypeUnSp);#ifndef TEMPS_DESTROYED_QUICKLY   friend NegShiftedMatrix operator-(Real, const BaseMatrix&);#else   friend NegShiftedMatrix& operator-(Real, const BaseMatrix&);#endif   NEW_DELETE(NegShiftedMatrix)};class ScaledMatrix : public ShiftedMatrix{   ScaledMatrix(const BaseMatrix* bmx, Real fx) : ShiftedMatrix(bmx,fx) {}   friend class BaseMatrix;   friend class GeneralMatrix;   friend class GenericMatrix;public:   ~ScaledMatrix() {}   GeneralMatrix* Evaluate(MatrixType mt=MatrixTypeUnSp);   MatrixBandWidth BandWidth() const;#ifndef TEMPS_DESTROYED_QUICKLY   friend ScaledMatrix operator*(Real f, const BaseMatrix& BM)      { return ScaledMatrix(&BM, f); }#endif   NEW_DELETE(ScaledMatrix)};class NegatedMatrix : public BaseMatrix{protected:   union { const BaseMatrix* bm; GeneralMatrix* gm; };   NegatedMatrix(const BaseMatrix* bmx) : bm(bmx) {}   int search(const BaseMatrix*) const;private:   friend class BaseMatrix;public:   ~NegatedMatrix() {}   GeneralMatrix* Evaluate(MatrixType mt=MatrixTypeUnSp);   MatrixBandWidth BandWidth() const;   NEW_DELETE(NegatedMatrix)};class TransposedMatrix : public NegatedMatrix{   TransposedMatrix(const BaseMatrix* bmx) : NegatedMatrix(bmx) {}   friend class BaseMatrix;public:   ~TransposedMatrix() {}   GeneralMatrix* Evaluate(MatrixType mt=MatrixTypeUnSp);   MatrixBandWidth BandWidth() const;   NEW_DELETE(TransposedMatrix)};class ReversedMatrix : public NegatedMatrix{   ReversedMatrix(const BaseMatrix* bmx) : NegatedMatrix(bmx) {}   friend class BaseMatrix;public:   ~ReversedMatrix() {}   GeneralMatrix* Evaluate(MatrixType mt=MatrixTypeUnSp);   NEW_DELETE(ReversedMatrix)};class InvertedMatrix : public NegatedMatrix{   InvertedMatrix(const BaseMatrix* bmx) : NegatedMatrix(bmx) {}public:   ~InvertedMatrix() {}#ifndef TEMPS_DESTROYED_QUICKLY   SolvedMatrix operator*(const BaseMatrix&) const;       // inverse(A) * B   ScaledMatrix operator*(Real t) const { return BaseMatrix::operator*(t); }#else   SolvedMatrix& operator*(const BaseMatrix&);            // inverse(A) * B   ScaledMatrix& operator*(Real t) const { return BaseMatrix::operator*(t); }#endif   friend class BaseMatrix;   GeneralMatrix* Evaluate(MatrixType mt=MatrixTypeUnSp);   MatrixBandWidth BandWidth() const;   NEW_DELETE(InvertedMatrix)};class RowedMatrix : public NegatedMatrix{   RowedMatrix(const BaseMatrix* bmx) : NegatedMatrix(bmx) {}   friend class BaseMatrix;public:   ~RowedMatrix() {}   GeneralMatrix* Evaluate(MatrixType mt=MatrixTypeUnSp);   MatrixBandWidth BandWidth() const;   NEW_DELETE(RowedMatrix)};class ColedMatrix : public NegatedMatrix

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -