VAT  3.0
Video Analysis Tool
Public Member Functions | Public Attributes | Static Public Attributes | List of all members
RMMTracker Class Reference

Public Member Functions

 RMMTracker (Datapool *i_data)
 
void writeObjectTrajectories ()
 
void resetPauseCriterias ()
 
void activatePause ()
 
void setDefaultMultiModelTemplate ()
 
void setBufferSize ()
 
void setBufferSize (int &max, std::vector< SpReliabilitySingleModelInterface > &models)
 
QString initObjectLog (long object_id)
 
void writeObjectLog ()
 
void setRMMMobileObjectTemplates ()
 
bool setParameters (QDomNode &config)
 
bool processModelParameters (QString &filename)
 
bool init ()
 
bool initialPrepareRun ()
 
bool prepareRun ()
 
void initStaticMobileObject ()
 
void getMostLikelyMobileObjects (std::deque< SpRMMMobileObject > &mobileObjectsOutput)
 clears the current mobiles list and gives the processed list of most likely mobiles More...
 
void preMerge (std::vector< Blob > &)
 
void update ()
 
void eliminateUnlikelyMobiles ()
 
void run (std::vector< Blob > &)
 reliability tracker process main call More...
 
void followExistingMobiles ()
 
void setInvolvedBlobs ()
 
void createMobilePossibilities ()
 
void mergeUsedHypothesisSets ()
 
void mergeConflictingHypothesisSets (SpRMMHypothesisSet first, SpRMMHypothesisSet second)
 
void insertNewMobiles (std::deque< SpRMMHypothesisSet > &newHSets)
 
void insertNewMobiles (SpRMMHypothesis hypothesis, std::set< SpRMMHypothesis, hypothesesOrderedByBestProbabilityOperator > &newHypotheses)
 
void setBlobsVector (std::vector< Blob > &)
 
void freeBlobsVector ()
 
void presetBlobsVectorAndInitialMergeTable (std::vector< Blob > &)
 
void freeBlobsVectorAndInitialMergeTable ()
 
int setGroups (int elementsVector[], bool **relations, int elementsNumber, int *elementsToAnalyzeVector)
 
void setGroup (int elementsVector[], bool **relations, int elementsNumber, int groupId, int startPoint, int referencePoint, int *elementsToAnalyzeVector)
 
int setNewGroups (int elementsVector[], int elementsNumber, std::vector< BoundingBox > &elementsToAnalyzeVector)
 
void setNewGroup (int groupsVector[], int elementsNumber, int groupId, int startPoint, int referencePoint, std::vector< BoundingBox > &elementsToAnalyzeVector)
 
bool boundingBoxesRelated (BoundingBox &b1, BoundingBox &b2)
 
void generateNewMobiles (int bboxNumberToAnalyze, std::vector< BoundingBox > &bboxesToAnalyze, int groupsNumber, int *blobGroupVector, std::set< SpRMMHypothesis, hypothesesOrderedByBestProbabilityOperator > &new_hyps)
 
void generateNewMobiles (int bboxNumberToAnalyze, std::vector< BoundingBox > &bboxesToAnalyze, int groupsNumber, int *blobGroupVector, std::deque< SpRMMHypothesisSet > &newHSets)
 
void generateHypothesesForEvidences (std::vector< BoundingBox > &bboxesToMerge, int bboxesToMergeNumber, std::set< SpRMMHypothesis, hypothesesOrderedByBestProbabilityOperator > &new_hyps)
 
void recursiveComboGenerator (int position, int value, int *hypothesesCombo, std::vector< BoundingBox > &bboxesToMerge, int bboxesToMergeNumber, std::set< SpRMMHypothesis, hypothesesOrderedByBestProbabilityOperator > &new_hyps)
 
bool validBboxMergeConfiguration (int mergeGroupNumber, int mergeLength, int bboxesToMergeNumber, std::vector< BoundingBox > &bboxesToMerge, int *hypothesesCombo)
 
void processMergeVector (int *hypothesesCombo, std::vector< BoundingBox > &bboxesToMerge, int bboxesToMergeNumber, std::set< SpRMMHypothesis, hypothesesOrderedByBestProbabilityOperator > &new_hyps)
 
void checkConnectivity (bool groupVector[], int elementsNumber, int referencePoint, int *elementsToAnalyzeVector, std::vector< BoundingBox > &bboxesToMerge)
 
void insertNewMergeSolution (BoundingBox mergedBboxes[], int finalBboxesNumber, std::set< SpRMMHypothesis, hypothesesOrderedByBestProbabilityOperator > &new_hyps)
 
void setCurrentTimeAndFrame ()
 
void getMergeConnections (bool *listToUpdate, int startingBlobIndex)
 
void getRecursiveMergeConnections (bool *mergeList, int blobIndex)
 
void orderAscending (int *array, int top, int bottom)
 
int getMiddle (int *array, int top, int bottom)
 
void filterUnseenMobiles ()
 
void separateReliableHypotheses ()
 
void determineInvolvedBlobsForMobileObject (SpRMMMobileObject mobile)
 
bool combinationAlreadyIncluded (BoundingBox mergedBboxes[], int bboxNumberForHypothesis)
 
int getMobileId ()
 
bool checkDataPackDifference (SpReliabilitySingleModelInterface m1, SpReliabilitySingleModelInterface m2)
 
void getNewHypothesesFromBoundingBox (BoundingBox &bbox, std::set< SpRMMHypothesis, hypothesesOrderedByBestProbabilityOperator > &newHypotheses)
 
void getHypothesesForExistingMobile (SpRMMMobileObject mobile, BoundingBox &bbox, DetectionProblemType dtype, std::set< SpRMMHypothesis, hypothesesOrderedByBestProbabilityOperator > &newHypotheses)
 
void getNewHypothesesFromMobile (SpRMMMobileObject mobile, std::set< SpRMMHypothesis, hypothesesOrderedByBestProbabilityOperator > &newHypotheses)
 
void setInitialHypothesisSet (SpRMMMobileObject mobile, std::set< SpRMMHypothesis, hypothesesOrderedByBestProbabilityOperator > &newHypotheses)
 
ModelInstanceGeneralPackiterateMultiModel (int modelIndex, SpRMMMobileObject mobile, std::set< SpRMMHypothesis, hypothesesOrderedByBestProbabilityOperator > &hypotheses)
 
void generateNewHypotheses (SpRMMMobileObject mobile, std::set< SpRMMHypothesis, hypothesesOrderedByBestProbabilityOperator > &hypotheses)
 
void regenHypotheses (std::set< SpRMMHypothesis, hypothesesOrderedByBestProbabilityOperator > &new_hypotheses, std::set< SpRMMHypothesis, hypothesesOrderedByBestProbabilityOperator > hyps[], SpRMMMobileObject mobiles[], int dsize)
 
void regenHypotheses (std::set< SpRMMHypothesis, hypothesesOrderedByBestProbabilityOperator > &new_hypotheses, std::set< SpRMMHypothesis, hypothesesOrderedByBestProbabilityOperator > hyps[], int dsize)
 
ModelInstanceGeneralPackcombineHypotheses (std::set< SpRMMHypothesis, hypothesesOrderedByBestProbabilityOperator > &new_hypotheses, int modelIndex, SpRMMMobileObject mobile, int dsize, std::set< SpRMMHypothesis, hypothesesOrderedByBestProbabilityOperator > hyps[], ModelInstanceGeneralPack *post[])
 
void checkRepeatedObject (std::set< SpRMMHypothesis, hypothesesOrderedByBestProbabilityOperator > &hyps, SpRMMMobileObject m, std::set< SpRMMHypothesis, hypothesesOrderedByBestProbabilityOperator > &new_hyps)
 
bool equalHypotheses (unsigned long current_mobile_id, SpRMMHypothesis h1, SpRMMHypothesis h2)
 
bool equalHypotheses (SpRMMHypothesis h1, SpRMMHypothesis h2)
 
double segmentationSimilarity (ModelInstanceGeneralPack &m1, ModelInstanceGeneralPack &m2)
 
void genROIFromFg (cv::Mat &image_roi, BoundingBox &roi)
 
BoundingBox getMergedBoundingBox (int *mergeSequence, int sequenceLength, std::vector< BoundingBox > &bboxesToMerge)
 
double areaOfIntersection (SpRMMMobileObject m1, SpRMMMobileObject m2)
 
int getPairIndex (int mindex, int vindex)
 
bool mobilePairValidityChecked (int index1, int index2)
 
bool mobilePairIsValid (int index1, int index2)
 
bool checkMobilePairValidity (SpRMMMobileObject m1, int mindex1, int vindex1, SpRMMMobileObject m2, int mindex2, int vindex2)
 
bool setPairValidityAndGo (int index1, int index2, bool ret_value)
 
bool blobAlreadyIncludedInNewMobilesSet (Blob *blob)
 
bool equalMobiles (SpRMMHypothesis alt1, SpRMMHypothesis alt2)
 
bool equalMobiles (SpRMMMobileObject m1, SpRMMMobileObject m2)
 
bool sameUsed (SpRMMMobileObject m1, SpRMMMobileObject m2)
 
void filterContainedStartingMobiles ()
 
void filterEquallyConvergedMobiles ()
 
bool highCoverage (SpRMMMobileObject m1, SpRMMMobileObject m2)
 
void filterRepeatedHypotheses ()
 
std::set< SpRMMHypothesis, hypothesesOrderedByBestProbabilityOperatorgenerateBestPossiblePathsForMobiles (SpRMMHypothesis hypothesis)
 
std::set< SpRMMHypothesis, hypothesesOrderedByBestProbabilityOperatorgenerateHypothesesFromInitialBlob (SpRMMMobileObject currentMobile, std::set< SpRMMHypothesis, hypothesesOrderedByBestProbabilityOperator > newHypotheses, Blob *initialBlob, int numUsed, bool *usedBlobs, double *blobSupport, Rectangle< int > &mobileBBox)
 
void generateMobilePathFromInitialBlob (SpRMMMobileObject mobile, Blob *initialBlob, int numUsed, bool *usedBlobs, double *blobSupport, std::set< SpRMMHypothesis, hypothesesOrderedByBestProbabilityOperator > &newHypotheses)
 
void addNewHypotheses (unsigned long current_mobile_id, std::set< SpRMMHypothesis, hypothesesOrderedByBestProbabilityOperator > &current_hypotheses, std::set< SpRMMHypothesis, hypothesesOrderedByBestProbabilityOperator > &new_hypotheses)
 
void addNewHypotheses (std::set< SpRMMHypothesis, hypothesesOrderedByBestProbabilityOperator > &current_hypotheses, std::set< SpRMMHypothesis, hypothesesOrderedByBestProbabilityOperator > &new_hypotheses)
 
void generateHypothesesForMobilePathFromInitialBlob (int length, int position, int value, int *hypothesesCombo, int blobsToMergeNumber, int *blobsToMerge, SpRMMMobileObject mobile, Blob *initialBlob, int numUsed, bool *usedBlobs, std::set< SpRMMHypothesis, hypothesesOrderedByBestProbabilityOperator > &newHypotheses)
 
bool blobCanBeIncludedForMerge (int currentMergeLength, int *mergedBlobIndexes, int currentBlobIndex)
 

Public Attributes

Datapoolm_data
 
ReliabilityMultiModelTemplate m_multiModelTemplate
 
ReliabilityMergem_RMerge
 
ReliabilityMergem_PreMerge
 
SceneModelsmodel
 
QImage * m_pSegmentation
 
bool activatePreMerge
 
double maxObjectSpeed
 
int m_MultiModelBufferSize
 
double meanw
 
double meanl
 
double meanh
 
double hypothesesProbabilityThreshold
 hypotheses probability threshold parameter for pre-elimination
 
int m_maximumGeneratedHypothesesPerMobile
 
int m_maximumRetainedHypotheses
 
int maximumMobilePaths
 The maximum number of retained generated mobile paths.
 
int m_maximumHypothesesPerMobile
 
QString eliminationStrategy
 The elimination strategy to use : worst probability elimination s., random linear elimination s. and maximum likelihood estimator s.
 
std::deque< IdBlobPairbiggestBlobForNewMobile
 
std::set< long int > usedIdsByHypothesis
 
std::map< long int, std::set< SpRMMMobileObject, RMMorderedByBestCoherenceOperator > > mobileAlternativesMap
 
std::map< int, std::deque< long int > > mobileIdsUsingABlob
 
RMMHypothesisSetList hypothesisSets
 
std::map< long int, SpRMMMobileObject > mobilesOutList
 
bool parametersInitialised
 
QString m_MultiModelConfig
 
int lastMilliSecondsDifference
 
double CoherenceReliabilityThreshold
 
double CoherenceProbabilityThreshold
 
double IgnoreByDimensionalCoherenceThreshold
 
double IgnoreByVelocityCoherenceThreshold
 
double ImportanceRateForBestMobileHypothesisProbability
 
double m_mobile2DCoverageRateToConsiderEqual
 
bool m_internalOutputActivated
 
bool m_reducedOutputActivated
 
double m_lowVisualSupportThreshold
 
double m_blobCompletellySupportedThreshold
 
double m_InvolvedVisualEvidenceMultiplyingFactor
 
int m_InvolvedVisualEvidenceSumFactor
 
double m_InvolvedVisualEvidenceMinIntersectionRatio
 
bool m_setObjectLog
 
QString m_objectLogRootName
 
QString m_objectLogModelName
 
bool m_logModelFound
 
bool m_logFirstTime
 
std::map< unsigned long, QString > logFileNames
 
bool m_useKalman
 
int m_kalmanMaxPixelError
 
int * g_intersectionAreas
 
Blob ** blobsVector
 
bool * usedBlobs
 
int * involvedHypothesisSetsCounter
 
bool ** initialMergeMap
 
int * initialGroups
 
bool initialPreparation
 
bool * checkedMobilePairValidity
 
bool * validMobilePair
 
int blobsNumber
 
unsigned long mobile_id_counter
 
unsigned long hset_id_counter
 
int currentFrameNumber
 
unsigned long currentTimeMilliSeconds
 
TimeStamp lastTimeStamp
 
int g_inserted_for_hypothesis
 
int g_NumCurrentlyLost
 
SpRMMHypothesis g_baseHypothesis
 
std::set< SpRMMHypothesis, hypothesesOrderedByBestProbabilityOperatorg_newHypotheses
 
std::set< SpRMMHypothesis, hypothesesOrderedByBestProbabilityOperatorg_completeHypotheses
 
std::deque< Blob * > g_includedBlobsInNewMobiles
 
std::deque< Blob * > g_allocatedBlobs
 
double g_bestGlobalP
 
int g_numberOfNewMobiles
 
int g_NumLocallyAddedHypotheses
 
int * g_numberOfNewMobileVersions
 
int * g_mobileVersionIndex
 
int g_totalNumberOfMobileVersions
 
std::set< SpRMMMobileObject, RMMorderedByBestCoherenceOperator >::iterator * g_mobileIterators
 
std::set< SpRMMMobileObject, RMMorderedByBestCoherenceOperator >::iterator * g_setBegins
 
std::set< SpBestHypothesesNode, orderedByBestHypothesisProbabilityCooperationOperatorg_leaves
 
std::map< long int, std::set< SpRMMMobileObject, RMMorderedByBestCoherenceOperator > > * g_newObjectsList
 
double * g_variableContribution
 
double * distanceBetweenBlobs
 
bool m_activatePauseOnLost
 
bool m_pauseOnLost
 
bool m_activatePauseOnNew
 
bool m_pauseOnNew
 
std::set< unsigned long > chosen_object_trajectories
 
bool m_logTrajectories
 
bool m_logTrajectoriesById
 
QString m_logTrajectoryFileName
 
std::map< unsigned long, simplifiedObjectsimplifiedObjects
 

Static Public Attributes

static int m_hypothesisNumber = 0
 
static bool m_newOuts
 
static int acceptedPixelError = 0
 
static int acceptedPixelDistance = 5
 
static double accepted3DFeatureError = 0.0
 
static double acceptedOrientationError = 0.0
 
static double m_highVisualSupportThreshold = 0.95
 
static int m_meanMillisecondsDifferenceBetweenFrames = 110
 

Member Function Documentation

void RMMTracker::getMostLikelyMobileObjects ( std::deque< SpRMMMobileObject > &  mobileObjectsOutput)

clears the current mobiles list and gives the processed list of most likely mobiles

Returns
nothing, it modifies the class pointed by the given parameter
void RMMTracker::run ( std::vector< Blob > &  blobs)

reliability tracker process main call

Parameters
new_blobsthe new detected and classified blobs (time t)

The documentation for this class was generated from the following files: