
modifié : CMakeListsOTB.txt modifié : LICENSE modifié : MakefileNoOTB modifié : Readme.html modifié : Readme.txt modifié : include/Appli/Option.hpp modifié : include/Appli/Selected.hpp modifié : include/Appli/Selected.tpp modifié : include/ArrayTree/ArrayTreeBuilder.hpp modifié : include/ArrayTree/ArrayTreeBuilder.tpp modifié : include/ArrayTree/Border.hpp modifié : include/ArrayTree/Border.tpp modifié : include/ArrayTree/GraphWalker.hpp modifié : include/ArrayTree/GraphWalker.tpp modifié : include/ArrayTree/Leader.hpp modifié : include/ArrayTree/Leader.tpp modifié : include/ArrayTree/Weight.hpp modifié : include/ArrayTree/Weight.tpp modifié : include/ArrayTree/triskeleArrayTreeBase.hpp modifié : include/ArrayTree/triskeleArrayTreeBase.tpp modifié : include/ArrayTree/triskeleSort.hpp modifié : include/ArrayTree/triskeleSort.tpp modifié : include/AttributeProfiles.hpp modifié : include/AttributeProfiles.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/WeightAttributes.hpp modifié : include/Attributes/WeightAttributes.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/QuadTree/QuadTreeBuilder.hpp modifié : include/Tree.hpp modifié : include/Tree.tpp modifié : include/TreeBuilder.hpp modifié : include/TreeBuilder.tpp modifié : include/TreeStats.hpp modifié : include/TreeStats.tpp modifié : include/XMLTree/XMLTreeBuilder.hpp modifié : include/triskeleBase.hpp modifié : include/triskeleBase.tpp modifié : include/triskeleDealThreads.hpp modifié : include/triskeleDealThreads.tpp modifié : include/triskeleDebug.hpp modifié : include/triskeleGdalGetType.hpp modifié : otb-module.cmake modifié : src/Appli/Option.cpp modifié : src/Appli/Selected.cpp modifié : src/ArrayTree/triskeleArrayTreeBase.cpp modifié : src/CMakeLists.txt modifié : src/IImage.cpp modifié : src/PerfArrayTreeBuilder.cpp modifié : src/QuadTree/QuadTreeBuilder.cpp modifié : src/TestArrayTreeBuilder.cpp modifié : src/Tree.cpp modifié : src/TreeStats.cpp modifié : src/XMLTree/XMLTreeBuilder.cpp modifié : src/apGenerator.cpp modifié : src/triskeleBase.cpp modifié : src/triskeleDebug.cpp
131 lines
3.6 KiB
C++
131 lines
3.6 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 <boost/chrono.hpp>
|
|
|
|
#include "triskeleBase.hpp"
|
|
#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 treeType;
|
|
size_t countingSortCeil;
|
|
Leader leaders;
|
|
|
|
// transcient
|
|
DimNodeId *childCount;
|
|
DimImg *newCompId;
|
|
WeightT *compWeights;
|
|
public:
|
|
inline ArrayTreeBuilder (const Raster<PixelT> &raster, const GraphWalker &graphWalker,
|
|
const TreeType &treeType, const size_t &countingSortCeil = 2);
|
|
inline ~ArrayTreeBuilder ();
|
|
|
|
inline void buildTree (Tree &tree, WeightAttributes<WeightT> &weightAttributes);
|
|
inline void setAttributProfiles (AttributeProfiles<PixelT> &attributeProfiles);
|
|
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
|
|
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);
|
|
|
|
inline void
|
|
unlinkParent (const DimImg &par);
|
|
|
|
template<typename WeightFunct>
|
|
inline void
|
|
connect3Comp (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 DimImg
|
|
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
|
|
findNotLonelyTop (DimImg comp);
|
|
inline DimImg
|
|
findMultiChildrenTop (DimImg comp);
|
|
|
|
inline void
|
|
buildChildren ();
|
|
|
|
// nice ostream
|
|
struct CPrintComp {
|
|
const ArrayTreeBuilder &atb;
|
|
const DimImg &compId;
|
|
inline CPrintComp (const ArrayTreeBuilder &atb, const DimImg &compId);
|
|
inline ostream &print (ostream &out) const;
|
|
};
|
|
inline CPrintComp printComp (const DimImg &compId) const { return CPrintComp (*this, compId); }
|
|
friend inline ostream &operator << (ostream& out, const CPrintComp &lc) { return lc.print (out); }
|
|
};
|
|
|
|
|
|
#include "ArrayTreeBuilder.tpp"
|
|
|
|
} // arrayTree
|
|
} // triskele
|
|
} // otb
|
|
|
|
#endif // _OTB_TRISKELE_ARRAY_TREE_BUILDER_HPP
|