34 #ifndef _DENDRO_NODE_HPP
35 #define _DENDRO_NODE_HPP
37 #include "Core/include/DCore.h"
38 #include "Morpho/include/DMorpho.h"
39 #include "Morpho/include/DStructuringElement.h"
55 template <
class MarkerLabelT =
size_t>
60 double internalNodeValuationInitial;
61 double internalNodeValuationFinal;
66 MarkerLabelT nbMarkersUnder;
67 vector<MarkerLabelT> markersCount;
68 vector<MarkerLabelT> lookupProgeny;
75 std::vector<double> moments;
76 vector<MarkerLabelT> contoursCount;
84 : valuation(0), internalNodeValuationInitial(0),
85 internalNodeValuationFinal(0), leafValuation(0), energy(0), marker(0),
86 label(0), nbMarkersUnder(0), markersCount(0), lookupProgeny(0),
87 isInternalNode(0), father(0), childLeft(0), childRight(0),
88 neighborLeft(0), neighborRight(0), moments(0), contoursCount(0),
89 contoursSize(0), fidelityTerm(0)
95 valuation = dendroNodeToCopy.valuation;
96 internalNodeValuationInitial =
97 dendroNodeToCopy.internalNodeValuationInitial;
98 internalNodeValuationFinal = dendroNodeToCopy.internalNodeValuationFinal;
99 leafValuation = dendroNodeToCopy.leafValuation;
100 energy = dendroNodeToCopy.energy;
101 marker = dendroNodeToCopy.marker;
102 label = dendroNodeToCopy.label;
103 nbMarkersUnder = dendroNodeToCopy.nbMarkersUnder;
104 markersCount = dendroNodeToCopy.markersCount;
105 lookupProgeny = dendroNodeToCopy.lookupProgeny;
106 isInternalNode = dendroNodeToCopy.isInternalNode;
107 moments = dendroNodeToCopy.moments;
108 contoursCount = dendroNodeToCopy.contoursCount;
109 contoursSize = dendroNodeToCopy.contoursSize;
110 fidelityTerm = dendroNodeToCopy.fidelityTerm;
112 if (dendroNodeToCopy.father != NULL) {
117 if (dendroNodeToCopy.childLeft != NULL) {
122 if (dendroNodeToCopy.childRight != NULL) {
127 if (dendroNodeToCopy.neighborLeft != NULL) {
128 neighborLeft =
new DendroNodeType(*(dendroNodeToCopy.neighborLeft));
132 if (dendroNodeToCopy.neighborRight != NULL) {
133 neighborRight =
new DendroNodeType(*(dendroNodeToCopy.neighborRight));
135 neighborRight = NULL;
141 if (
this != &dendroNodeToCopy) {
142 valuation = dendroNodeToCopy.valuation;
143 internalNodeValuationInitial =
144 dendroNodeToCopy.internalNodeValuationInitial;
145 internalNodeValuationFinal =
146 dendroNodeToCopy.internalNodeValuationFinal;
147 leafValuation = dendroNodeToCopy.leafValuation;
148 marker = dendroNodeToCopy.marker;
149 markersCount = dendroNodeToCopy.markersCount;
150 lookupProgeny = dendroNodeToCopy.lookupProgeny;
151 label = dendroNodeToCopy.label;
152 nbMarkersUnder = dendroNodeToCopy.nbMarkersUnder;
153 isInternalNode = dendroNodeToCopy.isInternalNode;
154 moments = dendroNodeToCopy.moments;
155 contoursCount = dendroNodeToCopy.contoursCount;
156 contoursSize = dendroNodeToCopy.contoursSize;
157 fidelityTerm = dendroNodeToCopy.fidelityTerm;
158 if (dendroNodeToCopy.father != NULL) {
164 if (dendroNodeToCopy.childLeft != NULL) {
170 if (dendroNodeToCopy.childRight != NULL) {
176 if (dendroNodeToCopy.neighborLeft != NULL) {
178 neighborLeft =
new DendroNodeType(*(dendroNodeToCopy.neighborLeft));
182 if (dendroNodeToCopy.neighborRight != NULL) {
183 delete neighborRight;
184 neighborRight =
new DendroNodeType(*(dendroNodeToCopy.neighborRight));
186 neighborRight = NULL;
198 return internalNodeValuationInitial;
200 void setInternalNodeValuationInitial(
double nValuation)
202 internalNodeValuationInitial = nValuation;
204 double getInternalNodeValuationFinal()
206 return internalNodeValuationFinal;
208 void setInternalNodeValuationFinal(
double nValuation)
210 internalNodeValuationFinal = nValuation;
212 double getValuation()
216 void setValuation(
double nValuation)
218 valuation = nValuation;
220 double getLeafValuation()
222 return leafValuation;
224 void setLeafValuation(
double nValuation)
226 leafValuation = nValuation;
228 void setEnergy(
double nEnergy)
236 MarkerLabelT getMarker()
240 void setMarker(
double nMarker)
244 MarkerLabelT getLabel()
248 void setLabel(
double nLabel)
252 MarkerLabelT getNbMarkersUnder()
254 return nbMarkersUnder;
256 void setNbMarkersUnder(MarkerLabelT nNbMarkersUnder)
258 nbMarkersUnder = nNbMarkersUnder;
260 std::vector<MarkerLabelT> &getMarkersCount()
264 void setMarkersCount(std::vector<MarkerLabelT> nMarkersCount)
266 markersCount = nMarkersCount;
268 std::vector<MarkerLabelT> &getLookupProgeny()
270 return lookupProgeny;
272 void setLookupProgeny(std::vector<MarkerLabelT> nLookupProgeny)
274 lookupProgeny = nLookupProgeny;
276 bool getIsInternalNode()
278 return isInternalNode;
280 void setIsInternalNode(
bool nIsInternalNode)
282 isInternalNode = nIsInternalNode;
298 childLeft = nChildLeft;
306 childRight = nChildRight;
312 void setNeighborLeft(
DendroNode *nNeighborLeft)
314 neighborLeft = nNeighborLeft;
318 return neighborRight;
320 void setNeighborRight(
DendroNode *nNeighborRight)
322 neighborRight = nNeighborRight;
324 std::vector<double> getMoments()
328 void setMoments(std::vector<double> nMoments)
332 vector<MarkerLabelT> getContoursCount()
334 return contoursCount;
336 void setContoursCount(vector<MarkerLabelT> nContoursCount)
338 contoursCount = nContoursCount;
340 double getContoursSize()
344 void setContoursSize(
double nContoursSize)
346 contoursSize = nContoursSize;
348 double getFidelityTerm()
352 void setFidelityTerm(
double nFidelityTerm)
354 fidelityTerm = nFidelityTerm;
359 if (refToReturn->getFather() != NULL) {
360 while (refToReturn != refToReturn->getFather() &&
361 refToReturn->getFather() != NULL) {
362 refToReturn = refToReturn->getFather();
385 return internalNodeValuationInitial <
386 nDendroNode.internalNodeValuationInitial;
390 return internalNodeValuationInitial >
391 nDendroNode.internalNodeValuationInitial;
393 bool operator==(
const DendroNode &nDendroNode)
395 return internalNodeValuationInitial ==
396 nDendroNode.internalNodeValuationInitial;
DendroNode : node of a Dendrogram.
Definition: DendroNode.hpp:57
DendroNode()
Default constructor.
Definition: DendroNode.hpp:83
DendroNode & operator=(DendroNode const &dendroNodeToCopy)
Assignment operator.
Definition: DendroNode.hpp:139
DendroNode(const DendroNodeType &dendroNodeToCopy)
Copy constructor.
Definition: DendroNode.hpp:93
double getInternalNodeValuationInitial()
Setters and getters.
Definition: DendroNode.hpp:196
bool operator<(const DendroNode &nDendroNode)
Operators overriding.
Definition: DendroNode.hpp:383
static bool isInferior(DendroNode *dendroNodeL, DendroNode *dendroNodeR)
Comparison functions.
Definition: DendroNode.hpp:372
virtual ~DendroNode()
Destructor.
Definition: DendroNode.hpp:192
size_t label(const Image< T1 > &imIn, Image< T2 > &imOut, const StrElt &se=DEFAULT_SE)
label() - Image labelization
Definition: DMorphoLabel.hpp:564