1 #ifndef __C_RELIABILITY_MERGE2D_H__ 2 #define __C_RELIABILITY_MERGE2D_H__ 5 #include "MODULES/segmentationmodule.h" 44 Blob *getMergedBlob();
46 void initMergeData(
bool **initialMergeMap,
int *previousMergeSequence,
int mergeableNumber,
int *reallyMergeableBlobs,
bool *forbiddenElements);
51 typedef QSharedPointer<AlternativeElement> SpAlternativeElement;
53 typedef QSharedPointer<MergedElement> SMergedElement;
60 std::map<int, SpAlternativeElement> mergedElements;
66 enum mergeParameterSet {
75 double m_mergeDistMax;
76 double m_overlapingRatio;
79 bool m_eliminateOverlapedBlobs;
80 double m_eliminateOverlapedBlobsOverlapingRatio;
81 double m_eliminateOverlapedBlobsProbability;
82 double m_eliminateOverlapedBlobsReliability;
87 std::map<int, SpAlternativeElement> definedMerges;
88 int shortestMergePath;
89 int *shortestSequence;
90 Blob *shortestSequenceMerge;
92 std::map<Blob *, std::map<Blob *, mergeData> > m_mapCorrespondences;
97 QImage *m_segmentation;
98 Blob *m_lastMergedBlob;
107 bool setParameters(QDomNode& config);
108 bool setParameters(QDomNode& config, mergeParameterSet i_mergeParameterSet);
110 bool defaultParameters(mergeParameterSet i_mergeParameterSet);
112 bool canBeMerged(
Blob *i_blob1,
Blob *i_blob2);
113 bool getNextCorrespondence(
Blob **i_pBlob1,
Blob **i_pBlob2);
114 bool isAValidCorrespondence(
Blob *i_blob1,
Blob *i_blob2);
116 bool blobOnTopAndNotOnAOIGround(
Blob *i_blob1,
Blob *i_blob2);
117 bool distanceCriteria(
Blob *i_blob1,
Blob *i_blob2);
118 double widthIntersectionRatio(
Blob *i_blob1,
Blob *i_blob2);
119 double heightIntersectionRatio(
Blob *i_blob1,
Blob *i_blob2);
121 void preMerge(
bool **initialMergeMap, std::vector<Blob>& blobsList);
122 Blob *getMergedBlob(
int *mergeSequence,
int sequenceLength, std::vector<Blob>& blobsVector,
int blobsNumber,
bool classify);
124 void computeModelScoresForMerge(std::map<ObjectType, double>& mergeMap,
Blob *i_blob1,
Blob * i_blob2);
125 mergeType computeMergeScoreForType(
Blob *i_blob1,
Blob *i_blob2, ObjectType blobType);
126 void constructCorrespondenceTable();
129 void setInitialCorrespondences(
bool **initialMergeMap,
int blobsNumber,
Blob **blobsVector);
131 int *reallyMergeableBlobs,
int mergeableNumber,
Blob **blobsVector,
int blobsNumber);
132 int checkValidityOfSubtreesForSequence(
int *sequence,
int length,
bool **initialMergeMap,
int *reallyMergeableBlobs,
int mergeableNumber,
Blob **blobsVector,
int blobsNumber);
134 int *reallyMergeableBlobs,
int mergeableNumber,
Blob **blobsVector,
int blobsNumber,
bool *forbiddenElements);
136 Blob *getMergedBlob(
int *mergeSequence,
int sequenceLength,
Blob **blobsVector,
int blobsNumber,
bool classify);
137 void clearDefinedMerges();
138 void clearDefinedMergesFromStartingKey(
int value);
140 Blob *justMerge2D(
int *mergeSequence,
int sequenceLength,
Blob **blobsVector);
142 bool checkValidityOfPathsForSequence(
int *sequence,
int length,
tree<SMergedElement> &mergeTree,
Blob *mergedBlob,
int mergeableNumber);
145 void mergeBlobsInFirstOne(
Blob *,
Blob *);
146 Blob **reduceOverlapedBlobs(
Blob **blobsVector,
int &blobsNumber, std::vector<Blob>& blobsList);
147 int reduceOverlapedBlobsMarkingElimination(
bool *eliminationVector,
bool *blobWithMergeResult,
Blob **blobsVector,
int blobsNumber,
bool *pertinentElements);
149 void setGroup(
int groupsVector[],
bool **relations,
int elementsNumber,
int groupId,
int startPoint,
int referencePoint,
int *elementsToAnalyzeVector);
150 int setGroups(
int groupsVector[],
bool **relations,
int elementsNumber,
int *elementsToAnalyzeVector);
152 void orderAscending(
int *array,
int top,
int bottom);
153 int getMiddle(
int *array,
int top,
int bottom);
156 void updateCorrespondenceTable(
Blob *i_blob);
157 void removeCorrespondencesWithBlob(
Blob *i_blob);
158 void removeCorrespondence(
Blob *i_blob1,
Blob *i_blob2);
159 void updateClassificationTable(
Blob *i_blob1,
Blob *i_blob2);
160 bool canBelongToBlob(
Blob *blob1,
Blob *blob2);
Definition: ReliabilityMerge2D.h:29
Definition: ReliabilityMerge2D.h:13
Definition: ReliabilityMerge2D.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
Definition: ReliabilityMerge2D.h:55
Depth-first iterator, first accessing the node, then its children.
Definition: tree.hh:106
Definition: ReliabilityMerge2D.h:21