de.unihalle.informatik.MiToBo.tracking.multitarget.algo
Class MultiTargetIMMFilter

java.lang.Object
  extended by de.unihalle.informatik.MiToBo.tracking.multitarget.algo.MultiTargetIMMFilter
All Implemented Interfaces:
FirstOrderMoment<AbstractMultiState<MotionModelID>>, MultiTargetPredictionFilter<AbstractMultiState<MotionModelID>>, MultiTargetPredictionFilterIndep<MotionModelID>, Copyable<MultiTargetPredictionFilter<AbstractMultiState<MotionModelID>>>

public class MultiTargetIMMFilter
extends java.lang.Object
implements MultiTargetPredictionFilterIndep<MotionModelID>

Multi-target Interacting Multiple Models (IMM) filter for varying number of targets.

Author:
Oliver Gress

Field Summary
protected  double delta_t
           
protected  AbstractMultiStateFactory<MotionModelID> factoryX
           
protected  AbstractMultiStateFactory<MotionModelID> factoryZ
           
protected  Jama.Matrix markov
          Markov matrix probability of dynamic model switching: A matrix with size (#dynamicmodels x #dynamicmodels).
protected  AbstractMultiState<MotionModelID> meanX
           
protected  GaussMixDistribution newbornStateDistrib
           
protected  Jama.Matrix newbornStateFromObs
           
private  MultiObsDistributionIndepGaussMix<MotionModelID> p_obs
           
protected  ExponentialDistribution pdeath
           
protected  java.util.Vector<GaussMixDistribution> pobs
          observation distribution: independent Gaussian mixtures for each target
protected  LinearTransformGaussNoise[] predictors
          dynamic models
protected  LinearTransformGaussNoise projector
          observation model
protected  java.util.Vector<GaussMixDistribution> pstate
          state distribution: independent Gaussian mixtures for each target
protected  java.util.Random rand
           
protected  java.util.HashMap<java.lang.Short,java.lang.Integer> targetIDtoIdx
           
 
Constructor Summary
MultiTargetIMMFilter(MultiTargetIMMFilter imm)
          Copy constructor.
MultiTargetIMMFilter(java.util.Vector<GaussMixDistribution> initialStateDistrib, LinearTransformGaussNoise observationModel, LinearTransformGaussNoise[] dynamicsModels, Jama.Matrix markov, double delta_t, ExponentialDistribution targetDeathDistrib, GaussMixDistribution newbornStateDistrib, Jama.Matrix stateFromObs, AbstractMultiStateFactory<MotionModelID> factoryX, AbstractMultiStateFactory<MotionModelID> factoryZ)
          Constructor that initializes the internal random generator with seed 1.
MultiTargetIMMFilter(java.util.Vector<GaussMixDistribution> initialStateDistrib, LinearTransformGaussNoise observationModel, LinearTransformGaussNoise[] dynamicsModels, Jama.Matrix markov, double delta_t, ExponentialDistribution targetDeathDistrib, GaussMixDistribution newbornStateDistrib, Jama.Matrix stateFromObs, AbstractMultiStateFactory<MotionModelID> factoryX, AbstractMultiStateFactory<MotionModelID> factoryZ, java.util.Random rand)
          Constructor.
 
Method Summary
 MultiTargetPredictionFilterIndep<MotionModelID> copy()
           
 java.util.Set<java.lang.Short> getExistingTargetIDs()
           
 AbstractMultiState<MotionModelID> getMean()
           
 AbstractMultiObservationDistributionIndep<MotionModelID,MotionModelID> getObservationDistribution()
           
protected  void letTargetsDie()
          Let targets die randomly using the specified distribution of target death and the internal random generator.
 void predict()
          Prediction step method
 void update(AbstractMultiState<MotionModelID> observation, DataAssociation association)
          Update step method given a multi-target observation
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

delta_t

protected double delta_t

factoryX

protected AbstractMultiStateFactory<MotionModelID> factoryX

factoryZ

protected AbstractMultiStateFactory<MotionModelID> factoryZ

markov

protected Jama.Matrix markov
Markov matrix probability of dynamic model switching: A matrix with size (#dynamicmodels x #dynamicmodels). The matrix element (i,j) specifies the probability P(M^t = j | M^{t-1} = i) of switching the dynamic model from i in time step t-1 to j in time step t


meanX

protected AbstractMultiState<MotionModelID> meanX

newbornStateDistrib

protected GaussMixDistribution newbornStateDistrib

newbornStateFromObs

protected Jama.Matrix newbornStateFromObs

p_obs

private MultiObsDistributionIndepGaussMix<MotionModelID> p_obs

pdeath

protected ExponentialDistribution pdeath

pobs

protected java.util.Vector<GaussMixDistribution> pobs
observation distribution: independent Gaussian mixtures for each target


predictors

protected LinearTransformGaussNoise[] predictors
dynamic models


projector

protected LinearTransformGaussNoise projector
observation model


pstate

protected java.util.Vector<GaussMixDistribution> pstate
state distribution: independent Gaussian mixtures for each target


rand

protected java.util.Random rand

targetIDtoIdx

protected java.util.HashMap<java.lang.Short,java.lang.Integer> targetIDtoIdx
Constructor Detail

MultiTargetIMMFilter

public MultiTargetIMMFilter(MultiTargetIMMFilter imm)
Copy constructor.


MultiTargetIMMFilter

public MultiTargetIMMFilter(java.util.Vector<GaussMixDistribution> initialStateDistrib,
                            LinearTransformGaussNoise observationModel,
                            LinearTransformGaussNoise[] dynamicsModels,
                            Jama.Matrix markov,
                            double delta_t,
                            ExponentialDistribution targetDeathDistrib,
                            GaussMixDistribution newbornStateDistrib,
                            Jama.Matrix stateFromObs,
                            AbstractMultiStateFactory<MotionModelID> factoryX,
                            AbstractMultiStateFactory<MotionModelID> factoryZ)
Constructor that initializes the internal random generator with seed 1.

Parameters:
initialStateDistrib - distributions of the different independent targets' states
observationModel - observation model
dynamicsModels - multiple dynamic models
markov - model transition matrix: each column holds the probabilities to switch from the dynamic model of column-index to the corresponding model of row-index
delta_t - time step
targetDeathDistrib - distribution of the death/survival of targets depending on last time of association
newbornStateDistrib - distribution of newborn targets
stateFromObs - a matrix to transform an observation (vector) to a state vector
factoryX - multi-state factory
factoryZ - multi-observation factory

MultiTargetIMMFilter

public MultiTargetIMMFilter(java.util.Vector<GaussMixDistribution> initialStateDistrib,
                            LinearTransformGaussNoise observationModel,
                            LinearTransformGaussNoise[] dynamicsModels,
                            Jama.Matrix markov,
                            double delta_t,
                            ExponentialDistribution targetDeathDistrib,
                            GaussMixDistribution newbornStateDistrib,
                            Jama.Matrix stateFromObs,
                            AbstractMultiStateFactory<MotionModelID> factoryX,
                            AbstractMultiStateFactory<MotionModelID> factoryZ,
                            java.util.Random rand)
Constructor.

Parameters:
initialStateDistrib - distributions of the different independent targets' states
observationModel - observation model
dynamicsModels - multiple dynamic models
markov - model transition matrix: each column holds the probabilities to switch from the dynamic model of column-index to the corresponding model of row-index
delta_t - time step
targetDeathDistrib - distribution of the death/survival of targets depending on last time of association
newbornStateDistrib - distribution of newborn targets
stateFromObs - a matrix to transform an observation (vector) to a state vector
factoryX - multi-state factory
factoryZ - multi-observation factory
rand - random generator
Method Detail

copy

public MultiTargetPredictionFilterIndep<MotionModelID> copy()
Specified by:
copy in interface MultiTargetPredictionFilterIndep<MotionModelID>
Specified by:
copy in interface Copyable<MultiTargetPredictionFilter<AbstractMultiState<MotionModelID>>>

getExistingTargetIDs

public java.util.Set<java.lang.Short> getExistingTargetIDs()

getMean

public AbstractMultiState<MotionModelID> getMean()
Specified by:
getMean in interface FirstOrderMoment<AbstractMultiState<MotionModelID>>

getObservationDistribution

public AbstractMultiObservationDistributionIndep<MotionModelID,MotionModelID> getObservationDistribution()
Specified by:
getObservationDistribution in interface MultiTargetPredictionFilterIndep<MotionModelID>

letTargetsDie

protected void letTargetsDie()
Let targets die randomly using the specified distribution of target death and the internal random generator. Used by RBMCDA!!


predict

public void predict()
Description copied from interface: MultiTargetPredictionFilter
Prediction step method

Specified by:
predict in interface MultiTargetPredictionFilter<AbstractMultiState<MotionModelID>>

update

public void update(AbstractMultiState<MotionModelID> observation,
                   DataAssociation association)
Description copied from interface: MultiTargetPredictionFilter
Update step method given a multi-target observation

Specified by:
update in interface MultiTargetPredictionFilter<AbstractMultiState<MotionModelID>>