GMPHDLinear2DTargetNoIdFilter.h

Go to the documentation of this file.
00001 // ----------------------------------------------------------------------------
00002 //
00003 // $Id$
00004 //
00005 // Copyright 2008, 2009, 2010, 2011, 2012  Antonio Franchi and Paolo Stegagno    
00006 //
00007 // This file is part of MIP.
00008 //
00009 // MIP is free software: you can redistribute it and/or modify
00010 // it under the terms of the GNU General Public License as published by
00011 // the Free Software Foundation, either version 3 of the License, or
00012 // (at your option) any later version.
00013 //
00014 // MIP is distributed in the hope that it will be useful,
00015 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00017 // GNU General Public License for more details.
00018 //
00019 // You should have received a copy of the GNU General Public License
00020 // along with MIP. If not, see <http://www.gnu.org/licenses/>.
00021 //
00022 // Contact info: antonio.franchi@tuebingen.mpg.de stegagno@diag.uniroma1.it
00023 //
00024 // ----------------------------------------------------------------------------
00025 
00035 
00036 #ifndef __GMPHD_FILTER_H
00037 #define __GMPHD_FILTER_H
00038 
00039 #include <Spaces.h>
00040 #include <GaussianMixture.h>
00041 #include "PHDFilter.h"
00042 
00043 using namespace MipBaselib;
00044 using namespace arma;
00045 
00046 namespace MipAlgorithms{
00047  
00049  /* @{ */
00050  
00054  class GMPHDLinear2DTargetNoIdFilterPars:public PHDFilterPars{
00055   public:
00056    
00057    // system model
00059    DMat A;
00061    DMat N_n_x;
00062    
00063    // measurement model
00065    DMat H;
00067    DMat N_n_z;
00068    
00069    // pruning thresholds
00072    Decimal truncThresh;
00074    int maxNumComponents;
00077    Decimal mergThresh;
00078    
00079    // constructors
00081    GMPHDLinear2DTargetNoIdFilterPars();
00083    GMPHDLinear2DTargetNoIdFilterPars(Decimal pS, Decimal pD, Time t, DMat& a, DMat& nx, DMat& h, DMat& nz, Decimal tt, int mc, Decimal mt);
00084  };
00085  
00086  
00090  class GMPHDLinear2DTargetNoIdFilterVars:public PHDFilterVars{
00091    
00092   public:
00093    GaussianMixture prediction;
00094    
00095    vector<DCol> predictedMeasures;
00096    vector<DMat> predictedCovariances;
00097    vector<DMat> kalmanGains;
00098    vector<DMat> stepKCovariances;
00099    
00100    GaussianMixture belief;
00101    
00102    GMPHDLinear2DTargetNoIdFilterVars();
00103  };
00104  
00105  
00109  class GMPHDLinear2DTargetNoIdFilter:public PHDFilter{
00110   private:
00111    GMPHDLinear2DTargetNoIdFilterVars* _gmvars;
00112    GMPHDLinear2DTargetNoIdFilterPars* _gmpars;
00113 
00114   public:
00115    GMPHDLinear2DTargetNoIdFilter();
00116    
00117    GMPHDLinear2DTargetNoIdFilter(GMPHDLinear2DTargetNoIdFilterPars inParams);
00118    
00119    void step(PHDFilterIn &in);
00120    
00121    string print();
00122 
00123    void getBelief(GaussianMixture &gm);
00124    
00125    string getObjectName() const {
00126     return "GMPHDLinear2DTargetNoIdFilter";
00127    }
00128    
00129    PHDFilterOutputType getOutputType(){
00130     return PHD_OUT_GMID;
00131    }
00132    
00133   protected:
00134    void _predictBirthTarget();
00135    void _predictExistingTarget();
00136    void _buildPHDUpdateComponents();
00137    void _updateWithMeasurements(PHDFilterIn &in);
00138    void _prune();
00139    void _prune2();
00140 
00141    void _initialize(PHDFilterIn &in);
00142    void _normalStep(PHDFilterIn &in);
00143    
00144    Decimal _mahalanobisDist(GaussianComponent& a, GaussianComponent& b);
00145    
00146  };
00147  
00148  /* @} */
00149  
00150 }
00151 
00152 
00153 #endif
00154 
00155 
00156 
00157 
00158 
00159 
00160 
00161 

Generated on Mon Feb 20 07:01:06 2017 for MIP by  doxygen 1.5.6