1 #ifndef __C_RELIABILITY_MERGE_H__ 2 #define __C_RELIABILITY_MERGE_H__ 5 #include "ReliabilityClassification.h" 6 #include "MODULES/segmentationmodule.h" 24 std::map<ObjectType, double> mergeTypeMap;
43 Blob *getMergedBlob();
45 void initMergeData(
bool **initialMergeMap,
int *previousMergeSequence,
int mergeableNumber,
int *reallyMergeableBlobs,
bool *forbiddenElements);
50 typedef QSharedPointer<AlternativeElement> SpAlternativeElement;
52 typedef QSharedPointer<MergedElement> SMergedElement;
59 std::map<int, SpAlternativeElement> mergedElements;
67 enum mergeParameterSet {
76 double m_mergeDistMax;
77 double m_overlapingRatio;
78 classificationCriteria m_mergingCriteria;
81 bool m_eliminateOverlapedClassifiedBlobs;
82 double m_eliminateOverlapedClassifiedBlobsOverlapingRatio;
83 double m_eliminateOverlapedClassifiedBlobsProbability;
84 double m_eliminateOverlapedClassifiedBlobsReliability;
89 std::map<int, SpAlternativeElement> definedMerges;
90 int shortestMergePath;
91 int *shortestSequence;
92 Blob *shortestSequenceMerge;
94 std::map<ObjectType, SpModelInterface> m_mapModels;
95 std::map<Blob *, std::map<Blob *, mergeData> > m_mapCorrespondences;
101 QImage *m_segmentation;
102 Blob *m_lastMergedBlob;
112 bool setParameters(QDomNode& config);
113 bool setParameters(QDomNode& config, mergeParameterSet i_mergeParameterSet);
115 bool defaultParameters(mergeParameterSet i_mergeParameterSet);
118 bool getNextCorrespondence(
Blob **i_pBlob1,
Blob **i_pBlob2);
119 bool isAValidCorrespondence(
Blob *i_blob1,
Blob *i_blob2);
121 bool blobOnTopAndNotOnAOIGround(
Blob *i_blob1,
Blob *i_blob2);
122 bool distanceCriteria(
Blob *i_blob1,
Blob *i_blob2);
123 double widthIntersectionRatio(
Blob *i_blob1,
Blob *i_blob2);
124 double heightIntersectionRatio(
Blob *i_blob1,
Blob *i_blob2);
126 void addModel(ObjectType i_blobType, SpModelInterface i_spModel);
127 void preMerge(
bool **initialMergeMap, std::vector<Blob>& blobsList);
128 Blob *getMergedBlob(
int *mergeSequence,
int sequenceLength, std::vector<Blob>& blobsVector,
int blobsNumber,
bool classify);
130 void computeModelScoresForMerge(std::map<ObjectType, double>& mergeMap,
Blob *i_blob1,
Blob * i_blob2);
131 mergeType computeMergeScoreForType(
Blob *i_blob1,
Blob *i_blob2, ObjectType blobType);
132 void constructCorrespondenceTable();
135 void setInitialCorrespondences(
bool **initialMergeMap,
int blobsNumber,
Blob **blobsVector);
137 int *reallyMergeableBlobs,
int mergeableNumber,
Blob **blobsVector,
int blobsNumber);
138 int checkValidityOfSubtreesForSequence(
int *sequence,
int length,
bool **initialMergeMap,
int *reallyMergeableBlobs,
int mergeableNumber,
Blob **blobsVector,
int blobsNumber);
140 int *reallyMergeableBlobs,
int mergeableNumber,
Blob **blobsVector,
int blobsNumber,
bool *forbiddenElements);
142 Blob *getMergedBlob(
int *mergeSequence,
int sequenceLength,
Blob **blobsVector,
int blobsNumber,
bool classify);
143 void clearDefinedMerges();
144 void clearDefinedMergesFromStartingKey(
int value);
146 Blob *justMerge2D(
int *mergeSequence,
int sequenceLength,
Blob **blobsVector);
148 bool checkValidityOfPathsForSequence(
int *sequence,
int length,
tree<SMergedElement> &mergeTree,
Blob *mergedBlob,
int mergeableNumber);
151 void mergeBlobsInFirstOne(
Blob *,
Blob *);
152 Blob **reduceOverlapedBlobs(
Blob **blobsVector,
int &blobsNumber, std::vector<Blob>& blobsList);
153 int reduceOverlapedBlobsMarkingElimination(
bool *eliminationVector,
bool *blobWithMergeResult,
Blob **blobsVector,
int blobsNumber,
bool *pertinentElements);
155 void setGroup(
int groupsVector[],
bool **relations,
int elementsNumber,
int groupId,
int startPoint,
int referencePoint,
int *elementsToAnalyzeVector);
156 int setGroups(
int groupsVector[],
bool **relations,
int elementsNumber,
int *elementsToAnalyzeVector);
158 void orderAscending(
int *array,
int top,
int bottom);
159 int getMiddle(
int *array,
int top,
int bottom);
162 void updateCorrespondenceTable(
Blob *i_blob);
163 void removeCorrespondencesWithBlob(
Blob *i_blob);
164 void removeCorrespondence(
Blob *i_blob1,
Blob *i_blob2);
165 void updateClassificationTable(
Blob *i_blob1,
Blob *i_blob2);
166 bool canBelongToBlob(
Blob *blob1,
Blob *blob2);
Definition: ReliabilityMerge.h:54
Definition: ReliabilityMerge.h:65
Definition: ReliabilityMerge.h:28
Definition: ReliabilityMerge.h:19
Definition: calibration.h:51
Definition: ReliabilityClassification.h:37
Definition: ReliabilityMerge.h:11
An object of this class is instantiated at main code, and this object is used by every class to push ...
Definition: Datapool.h:39
Depth-first iterator, first accessing the node, then its children.
Definition: tree.hh:106