de.unihalle.informatik.MiToBo.tracking.multitarget.algo
Class MultiObservationTrackerRBMCDAIMM
java.lang.Object
de.unihalle.informatik.Alida.operator.ALDOperator
de.unihalle.informatik.MiToBo.core.operator.MTBOperator
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 classes/interfaces inherited from class de.unihalle.informatik.Alida.operator.ALDOperator |
de.unihalle.informatik.Alida.operator.ALDOperator.HidingMode |
Fields inherited from class de.unihalle.informatik.Alida.operator.ALDOperator |
completeDAG, name, operatorExecutionEventlistenerList, portHashAccess, verbose, versionProvider |
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 |
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
MultiObservationTrackerRBMCDAIMM
public MultiObservationTrackerRBMCDAIMM()
throws de.unihalle.informatik.Alida.exceptions.ALDOperatorException
- Throws:
de.unihalle.informatik.Alida.exceptions.ALDOperatorException
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.