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

java.lang.Object
  extended by de.unihalle.informatik.Alida.operator.ALDOperator
      extended by de.unihalle.informatik.MiToBo.core.operator.MTBOperator
          extended by de.unihalle.informatik.MiToBo.tracking.multitarget.algo.MultiObservationTrackerRBMCDAIMM
All Implemented Interfaces:
de.unihalle.informatik.Alida.datatypes.ALDConfigurationValidator, de.unihalle.informatik.Alida.operator.events.ALDOperatorExecutionProgressEventListener, EventListener

@ALDMetaInfo(export=ALLOWED)
@ALDAOperator(genericExecutionMode=NONE,
              level=STANDARD)
public class MultiObservationTrackerRBMCDAIMM
extends MTBOperator

Tracking of multiple targets using Rao-Blackwellized Monte Carlo Data Association (RBMCDA) for observation-to-target association and Interacting Multiple Models (IMM) filters for target state estimation.

Author:
Oliver Gress

Nested Class Summary
 
Nested classes/interfaces inherited from class de.unihalle.informatik.Alida.operator.ALDOperator
de.unihalle.informatik.Alida.operator.ALDOperator.HidingMode
 
Field Summary
 double delta_t
           
 String dotGraphFilename
           
 double essPercentage
           
protected  Vector<MultiState<MotionModelID>> groundtruthObservations
           
protected  Vector<MultiState<MotionModelID>> inputObservations
           
 double lambdaBirth
           
 double lambdaClutter
           
 double lambdaDeath
           
 double maxDistNeighbors
           
 int maxNumNeighbors
           
 Jama.Matrix modelTransition
           
 boolean noNeighborsOldAlgo
           
 int numSamples
           
protected  ObservationAdjacency obsAssocAdjacency
           
protected  Vector<MultiState<MotionModelID>> outputObservations
           
 double pDetect
           
 double qsize
           
 double qxy
           
 double qxy_
           
protected  Random rand
           
 long randomSeed
           
 double rsize
           
 double rxy
           
 double sqrtSizeMax
           
 double sqrtSizeMin
           
 DynamicColorLUT trackcolors
           
 double xMax
           
 double xMin
           
 double yMax
           
 double yMin
           
 
Fields inherited from class de.unihalle.informatik.Alida.operator.ALDOperator
completeDAG, name, operatorExecutionEventlistenerList, portHashAccess, verbose, versionProvider
 
Constructor Summary
MultiObservationTrackerRBMCDAIMM()
           
 
Method Summary
 Vector<MultiState<MotionModelID>> getOutputObservations()
          Get a copy of the input observations with IDs set corresponding to the tracking results after GreedyGourmetPartitioning of the track graph constructed from the RBMCDA samples.
 double getSampleConditionalProb(int i, int t)
          Get the probability of the associations of i-th sample at the time t conditional on previous associations and all observations up to time t.
 RBMCDASampleInfo<MotionModelID> getSampleInfo(int i)
          Get the sample info object of the i-th sample.
 double getSampleJointProb(int i)
          Get the joint probability of all associations of the i-th sample conditional on all observations, normalized by all samples' probabilities.
 double[] getSampleJointProbs()
          Get the joint probability of all associations of all samples conditional on all observations, normalized by all samples' probabilities.
 Vector<MultiState<MotionModelID>> getSampleObservations(int i)
          Get a copy of the observations with IDs set corresponding to the i-th sample's tracking results.
protected  void operate()
           
 void setGroundtruthObservations(Vector<MultiState<MotionModelID>> groundtruthObservations)
           
 void setInputObservations(Vector<MultiState<MotionModelID>> inputObservations)
           
 
Methods inherited from class de.unihalle.informatik.MiToBo.core.operator.MTBOperator
readResolve
 
Methods inherited from class de.unihalle.informatik.Alida.operator.ALDOperator
addOperatorExecutionProgressEventListener, fieldContained, fireOperatorExecutionProgressEvent, getALDPortHashAccessKey, getConstructionMode, getHidingMode, getInInoutNames, getInInoutNames, getInNames, getInOutNames, getMissingRequiredInputs, getName, getNumParameters, getOutInoutNames, getOutNames, getParameter, getParameterDescriptor, getParameterNames, getSupplementalNames, getVerbose, getVersion, handleOperatorExecutionProgressEvent, isConfigured, print, print, print, printInterface, printInterface, readHistory, reinitializeParameterDescriptors, removeOperatorExecutionProgressEventListener, runOp, runOp, runOp, setConstructionMode, setHidingMode, setName, setParameter, setVerbose, toStringVerbose, unconfiguredItems, validate, validateCustom, validateGeneric, writeHistory, writeHistory, writeHistory
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

inputObservations

@Parameter(label="inputObservations",
           required=true,
           direction=IN,
           description="Input observations")
protected Vector<MultiState<MotionModelID>> inputObservations

groundtruthObservations

@Parameter(label="groundtruthObservations",
           required=false,
           direction=IN,
           description="groundtruth observations")
protected Vector<MultiState<MotionModelID>> groundtruthObservations

outputObservations

@Parameter(label="outputObservations",
           required=false,
           direction=OUT,
           description="Output observations (MotionModelIDs set according to tracking results)")
protected Vector<MultiState<MotionModelID>> outputObservations

obsAssocAdjacency

@Parameter(label="obsAssocAdjacency",
           required=false,
           direction=OUT,
           description="Adjacency matrix of observation associations from all samples")
protected ObservationAdjacency obsAssocAdjacency

dotGraphFilename

@Parameter(label="dotGraphFilename",
           required=false,
           direction=IN,
           description="File to write the observation associations graph and computed subgraphs (tracks) to")
public String dotGraphFilename

pDetect

@Parameter(label="pDetect",
           required=true,
           direction=IN,
           description="Probability of detecting a target")
public double pDetect

lambdaBirth

@Parameter(label="lambdaBirth",
           required=true,
           direction=IN,
           description="Mean/variance of the Poisson distribution of the number of newborn observed targets")
public double lambdaBirth

lambdaClutter

@Parameter(label="lambdaClutter",
           required=true,
           direction=IN,
           description="Mean/variance of the Poisson distribution of the number of clutter observations")
public double lambdaClutter

lambdaDeath

@Parameter(label="lambdaDeath",
           required=true,
           direction=IN,
           description="Parameter of the exponential distribution of the survival of nonassociated targets")
public double lambdaDeath

delta_t

@Parameter(label="delta_t",
           required=false,
           direction=IN,
           description="time interval between two frames")
public double delta_t

xMin

@Parameter(label="xMin",
           required=true,
           direction=IN,
           description="x-min of the rectangular region where the observations reside in (e.g. for image creation)")
public double xMin

yMin

@Parameter(label="yMin",
           required=true,
           direction=IN,
           description="y-min of the rectangular region where the observations reside in (e.g. for image creation)")
public double yMin

xMax

@Parameter(label="xMax",
           required=true,
           direction=IN,
           description="x-max of the rectangular region where the observations reside in (e.g. for image creation)")
public double xMax

yMax

@Parameter(label="yMax",
           required=true,
           direction=IN,
           description="y-max of the rectangular region where the observations reside in (e.g. for image creation)")
public double yMax

sqrtSizeMin

@Parameter(label="sqrtSizeMin",
           required=true,
           direction=IN,
           description="Minimum sqrt(size) (third component of observation vector)")
public double sqrtSizeMin

sqrtSizeMax

@Parameter(label="sqrtSizeMax",
           required=true,
           direction=IN,
           description="Maximum sqrt(size) (third component of observation vector)")
public double sqrtSizeMax

modelTransition

@Parameter(label="modelTransition",
           required=true,
           direction=IN,
           description="A 2x2 markov matrix with probabilities of changing the dynamic models from time t-1 to t")
public Jama.Matrix modelTransition

qxy

@Parameter(label="qxy",
           required=true,
           direction=IN,
           description="Variance of the current x-/y-position in the process noise covariance matrix")
public double qxy

qxy_

@Parameter(label="qxy_",
           required=true,
           direction=IN,
           description="Variance of the last x-/y-position in the process noise covariance matrix")
public double qxy_

qsize

@Parameter(label="qsize",
           required=true,
           direction=IN,
           description="Variance of sqrt(size) in the process noise covariance matrix")
public double qsize

rxy

@Parameter(label="rxy",
           required=true,
           direction=IN,
           description="Variance of the current x-/y-position in the measurement noise covariance matrix")
public double rxy

rsize

@Parameter(label="rsize",
           required=true,
           direction=IN,
           description="Variance of sqrt(size) in the measurement noise covariance matrix")
public double rsize

numSamples

@Parameter(label="numSamples",
           required=true,
           direction=IN,
           description="The number RBMCDA samples")
public int numSamples

essPercentage

@Parameter(label="ESS percentage",
           required=true,
           direction=IN,
           description="The percentage (range [0,1]) of number of samples below ESS to trigger resampling.")
public double essPercentage

noNeighborsOldAlgo

@Parameter(label="No neighbors (old algo)",
           required=true,
           direction=IN,
           description="Do not consider any neighbor observations and compute with old algo.")
public boolean noNeighborsOldAlgo

maxNumNeighbors

@Parameter(label="Max number of neighbors",
           required=true,
           direction=IN,
           description="The maximum number of neighboring observations considered")
public int maxNumNeighbors

maxDistNeighbors

@Parameter(label="Max distance of neighbors",
           required=true,
           direction=IN,
           description="The maximum number of neighboring observations considered")
public double maxDistNeighbors

randomSeed

@Parameter(label="randomSeed",
           required=true,
           direction=IN,
           description="A seed for the random number generator")
public long randomSeed

rand

protected Random rand

trackcolors

public DynamicColorLUT trackcolors
Constructor Detail

MultiObservationTrackerRBMCDAIMM

public MultiObservationTrackerRBMCDAIMM()
                                 throws de.unihalle.informatik.Alida.exceptions.ALDOperatorException
Throws:
de.unihalle.informatik.Alida.exceptions.ALDOperatorException
Method Detail

setInputObservations

public void setInputObservations(Vector<MultiState<MotionModelID>> inputObservations)

setGroundtruthObservations

public void setGroundtruthObservations(Vector<MultiState<MotionModelID>> groundtruthObservations)

getOutputObservations

public Vector<MultiState<MotionModelID>> getOutputObservations()
Get a copy of the input observations with IDs set corresponding to the tracking results after GreedyGourmetPartitioning of the track graph constructed from the RBMCDA samples. Be aware that observations of a track with only a single observation are interpreted as clutter.


operate

protected void operate()
                throws de.unihalle.informatik.Alida.exceptions.ALDOperatorException,
                       de.unihalle.informatik.Alida.exceptions.ALDProcessingDAGException
Specified by:
operate in class de.unihalle.informatik.Alida.operator.ALDOperator
Throws:
de.unihalle.informatik.Alida.exceptions.ALDOperatorException
de.unihalle.informatik.Alida.exceptions.ALDProcessingDAGException

getSampleConditionalProb

public double getSampleConditionalProb(int i,
                                       int t)
Get the probability of the associations of i-th sample at the time t conditional on previous associations and all observations up to time t.


getSampleJointProb

public double getSampleJointProb(int i)
Get the joint probability of all associations of the i-th sample conditional on all observations, normalized by all samples' probabilities.


getSampleJointProbs

public double[] getSampleJointProbs()
Get the joint probability of all associations of all samples conditional on all observations, normalized by all samples' probabilities.


getSampleObservations

public Vector<MultiState<MotionModelID>> getSampleObservations(int i)
Get a copy of the observations with IDs set corresponding to the i-th sample's tracking results. Be aware that observations of a track with only a single observation are interpreted as clutter in contrast to the sample info objects returned by getSampleInfo.


getSampleInfo

public RBMCDASampleInfo<MotionModelID> getSampleInfo(int i)
Get the sample info object of the i-th sample. Here tracks with single observations are available in contrast to sample observations returned by getSampleObservations.



Copyright © 2010–2015 Martin Luther University Halle-Wittenberg. All rights reserved.