
modifié : include/ArrayTree/ArrayTreeBuilder.tpp modifié : include/Attributes/AreaAttributes.hpp modifié : include/Attributes/AreaAttributes.tpp modifié : include/Attributes/AverageAttributes.hpp modifié : include/Attributes/AverageAttributes.tpp modifié : include/Attributes/MoIAttributes.hpp modifié : include/Attributes/MoIAttributes.tpp modifié : include/Attributes/SDAttributes.hpp modifié : include/Attributes/SDAttributes.tpp modifié : include/Attributes/XYAttributes.hpp modifié : include/Attributes/XYAttributes.tpp modifié : include/CompAttribute.hpp modifié : include/CompAttribute.tpp modifié : include/IImage.hpp modifié : include/IImage.tpp modifié : include/Tree.hpp modifié : include/Tree.tpp modifié : src/Tree.cpp modifié : src/testMain.cpp
129 lines
3.5 KiB
C++
129 lines
3.5 KiB
C++
#ifndef _OTB_TRISKELE_ARRAY_TREE_BUILDER_HPP
|
|
#define _OTB_TRISKELE_ARRAY_TREE_BUILDER_HPP
|
|
|
|
#ifdef ENABLE_LOG
|
|
#include <iostream>
|
|
#endif // ENABLE_LOG
|
|
|
|
#include "triskeleDebug.hpp"
|
|
#include "triskeleSort.hpp"
|
|
#include "triskeleDealThreads.hpp"
|
|
#include "TreeBuilder.hpp"
|
|
#include "Attributes/WeightAttributes.hpp"
|
|
#include "AttributeProfiles.hpp"
|
|
#include "IImage.hpp"
|
|
#include "GraphWalker.hpp"
|
|
#include "Weight.hpp"
|
|
#include "Leader.hpp"
|
|
|
|
namespace otb {
|
|
namespace triskele {
|
|
namespace arrayTree {
|
|
|
|
template <typename WeightT, typename PixelT>
|
|
class ArrayTreeBuilder : public TreeBuilder {
|
|
protected:
|
|
unsigned int coreCount;
|
|
const Raster<PixelT> &raster;
|
|
const GraphWalker &graphWalker;
|
|
TreeType type;
|
|
bool countingFlag;
|
|
Leader leaders;
|
|
|
|
// transcient
|
|
DimNodeId *childCountRec;
|
|
DimImg *newCompId;
|
|
WeightT *compWeights;
|
|
public:
|
|
inline ArrayTreeBuilder (Raster<PixelT> &raster, const GraphWalker &graphWalker,
|
|
const TreeType &treeType, const bool &countingSort = true);
|
|
inline ~ArrayTreeBuilder ();
|
|
|
|
inline void buildTree (Tree &tree, WeightAttributes<WeightT> &weightAttributes);
|
|
inline void setAttributProfiles (AttributeProfiles<PixelT> &attributeProfiles, const Raster<PixelT> &raster);
|
|
protected:
|
|
template<typename WeightFunct>
|
|
inline void
|
|
buildTree (Tree &tree, const WeightFunct &weightFunct);
|
|
template<typename WeightFunct>
|
|
inline void
|
|
setAttributProfiles (AttributeProfiles<PixelT> &attributeProfiles, const WeightFunct &weightFunct);
|
|
|
|
// template<typename WeightFunct>
|
|
// inline void
|
|
// fillAPTree (PixelT *leafAPTree, const WeightFunct &weightFunct);
|
|
|
|
template<typename WeightFunct>
|
|
inline void
|
|
buildParents (Edge<WeightT> *edges, const WeightFunct &weightFunct, const Rect &tile, DimImg &topParent);
|
|
|
|
template<typename WeightFunct>
|
|
inline void
|
|
connectLeaf (DimImg a, DimImg b, const WeightT &weight, DimImg &parCount, const WeightFunct &weightFunct);
|
|
|
|
template<typename WeightFunct>
|
|
inline void
|
|
connectComp (DimImg newComp, DimImg topA, DimImg topB, const WeightFunct &weightFunct);
|
|
|
|
template<typename WeightFunct>
|
|
inline void
|
|
connectComp (DimImg topA, DimImg topB, const WeightFunct &weightFunct);
|
|
|
|
template<typename WeightFunct>
|
|
inline DimImg
|
|
updateNewId (const vector<DimImg> &compBases, const vector<DimImg> &compTops, const WeightFunct &weightFunct);
|
|
|
|
inline void
|
|
updateNewId (const DimImg curComp, DimImg &compCount);
|
|
|
|
inline void
|
|
compress (const DimImg &compTop);
|
|
|
|
inline void
|
|
createParent (DimImg &topParent, const WeightT &weight, DimImg &childA, DimImg &childB);
|
|
|
|
inline void
|
|
addChild (const DimImg &parent, DimImg &child);
|
|
|
|
inline void
|
|
addChildren (const DimImg &parent, const DimImg &sibling);
|
|
|
|
inline DimImg
|
|
findRoot (DimImg comp);
|
|
|
|
template<typename WeightFunct>
|
|
inline DimImg
|
|
findTopComp (const DimImg &comp, const WeightFunct &weightFunct);
|
|
|
|
template<typename WeightFunct>
|
|
inline DimImg
|
|
findTopComp (DimImg comp, const WeightT &weight, const WeightFunct &weightFunct);
|
|
|
|
inline DimImg
|
|
findCompMultiChild (DimImg comp);
|
|
|
|
inline void
|
|
buildChildren ();
|
|
|
|
template<typename WeightFunct>
|
|
inline void
|
|
initWeights (const GraphWalker &graphWalker, const WeightFunct &weightFunct);
|
|
|
|
// #ifdef ENABLE_LOG
|
|
// inline void
|
|
// printTree (const Size &size, const bool &rec);
|
|
// inline void
|
|
// printLeaders (const Size &size);
|
|
// inline void
|
|
// printNewCompIdx (const Size &size);
|
|
// #endif
|
|
};
|
|
|
|
#include "ArrayTreeBuilder.tpp"
|
|
|
|
} // arrayTree
|
|
} // triskele
|
|
} // otb
|
|
|
|
#endif // _OTB_TRISKELE_ARRAY_TREE_BUILDER_HPP
|