nouveau fichier : src/TestArrayTreeBuilder.cpp
This commit is contained in:
parent
8149f1353b
commit
5d83342f5f
190
src/TestArrayTreeBuilder.cpp
Normal file
190
src/TestArrayTreeBuilder.cpp
Normal file
@ -0,0 +1,190 @@
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include <numeric> // partial_sum
|
||||
#include <vector>
|
||||
|
||||
#include "triskeleDebug.hpp"
|
||||
#include "triskeleBase.hpp"
|
||||
#include "Tree.hpp"
|
||||
#include "TreeStats.hpp"
|
||||
#include "TreeBuilder.hpp"
|
||||
#include "IImage.hpp"
|
||||
#include "Attribute.hpp"
|
||||
#include "AttributeProfiles.hpp"
|
||||
#include "ArrayTree/triskeleArrayTreeBase.hpp"
|
||||
#include "ArrayTree/triskeleSort.hpp"
|
||||
#include "ArrayTree/Border.hpp"
|
||||
#include "ArrayTree/GraphWalker.hpp"
|
||||
#include "ArrayTree/Leader.hpp"
|
||||
#include "ArrayTree/Weight.hpp"
|
||||
#include "ArrayTree/ArrayTreeBuilder.hpp"
|
||||
#include "Attributes/WeightAttributes.hpp"
|
||||
|
||||
using namespace otb::triskele;
|
||||
using namespace otb::triskele::arrayTree;
|
||||
|
||||
//typedef uint16_t WeightT;
|
||||
typedef uint16_t PixelT;
|
||||
typedef uint16_t WeightT;
|
||||
|
||||
// ========================================
|
||||
PixelT pixelsA[] = {
|
||||
4, 0, 2, 8, 7, 2,
|
||||
5, 8, 0, 0, 0, 2,
|
||||
|
||||
5, 5, 2, 0, 2, 3,
|
||||
1, 1, 0, 0, 3, 3
|
||||
};
|
||||
PixelT pixelsB[] = {
|
||||
2, 0, 3, 6, 5, 2,
|
||||
4, 0, 6, 7, 1, 7,
|
||||
|
||||
1, 5, 2, 3, 0, 6,
|
||||
4, 5, 4, 1, 1, 6
|
||||
};
|
||||
PixelT pixelsC [] = {
|
||||
2, 0, 0, 6, 4, 3,
|
||||
6, 7, 0, 7, 2, 6,
|
||||
|
||||
7, 5, 7, 4, 4, 1,
|
||||
7, 0, 0, 3, 5, 4
|
||||
};
|
||||
PixelT pixelsN1 [] = { // pb A)
|
||||
5, 1, 7, 2, 7, 0,
|
||||
2, 6, 0, 5, 2, 5,
|
||||
|
||||
6, 7, 2, 2, 5, 7,
|
||||
3, 7, 5, 6, 6, 6
|
||||
};
|
||||
PixelT pixelsN2 [] = { // B3) parentId:2 nodeStart:4 nodeEnd:5
|
||||
6, 6, 2, 4, 5, 2,
|
||||
0, 2, 0, 1, 5, 5,
|
||||
|
||||
2, 7, 7, 4, 7, 0,
|
||||
7, 6, 5, 6, 5, 1
|
||||
};
|
||||
PixelT pixelsN3 [] = { // A) childIdx:27 parentId:2 parentIdx:26 rootId:5
|
||||
5, 1, 7, 2, 7, 0,
|
||||
2, 6, 0, 5, 2, 5,
|
||||
|
||||
6, 7, 2, 2, 5, 7,
|
||||
3, 7, 5, 6, 6, 6
|
||||
};
|
||||
PixelT pixelsB1 [] = { //A) childIdx:27 parentId:2 parentIdx:26 rootId:8
|
||||
5, 6, 7, 0, 5, 3,
|
||||
2, 2, 1, 3, 2, 1,
|
||||
|
||||
3, 3, 7, 3, 7, 5,
|
||||
4, 6, 5, 7, 4, 3
|
||||
};
|
||||
PixelT pixelsB2 [] = { //B3) parentId:4 nodeStart:17 nodeEnd:18
|
||||
0, 6, 6, 5, 7, 2,
|
||||
7, 6, 0, 3, 7, 5,
|
||||
4, 0, 1, 1, 1, 2,
|
||||
2, 2, 2, 1, 1, 1
|
||||
};
|
||||
PixelT pixelsB3 [] = { //) parents[0]:0 parentId:6 level child:0 parent:0 parentOrig:5
|
||||
0, 7, 1, 4, 3, 0,
|
||||
0, 4, 4, 4, 6, 0,
|
||||
5, 1, 7, 2, 4, 1,
|
||||
6, 6, 4, 6, 1, 5
|
||||
};
|
||||
PixelT pixelsC1 [] = { //A) childIdx:26 parentId:1 parentIdx:25 rootId:9
|
||||
6, 1, 7, 7, 3, 3,
|
||||
0, 3, 0, 0, 6, 4,
|
||||
3, 3, 4, 6, 7, 4,
|
||||
5, 7, 6, 6, 1, 5
|
||||
};
|
||||
|
||||
PixelT pixelsC2 [] = { // init leafCount ?
|
||||
1, 3, 0, 0, 5, 3,
|
||||
0, 5, 7, 7, 5, 4,
|
||||
3, 3, 6, 3, 4, 6,
|
||||
0, 0, 0, 1, 5, 7
|
||||
};
|
||||
|
||||
// ========================================
|
||||
PixelT pixels3x3_A [] = {
|
||||
0, 0, 0,
|
||||
2, 3, 2,
|
||||
0, 3, 3
|
||||
};
|
||||
PixelT pixels4x4_B [] = {
|
||||
0, 7, 2, 5,
|
||||
2, 1, 5, 7,
|
||||
1, 3, 5, 0,
|
||||
6, 4, 0, 5
|
||||
};
|
||||
PixelT pixels4x4_C [] = {
|
||||
2, 7, 7, 4,
|
||||
5, 6, 1, 1,
|
||||
7, 5, 3, 5,
|
||||
4, 4, 4, 2
|
||||
};
|
||||
|
||||
PixelT pixelsT1_18x12 [] = {
|
||||
5, 0, 0, 5, 0, 7, 4, 5, 2, 6, 0, 2, 2, 6, 5, 2, 1, 5 ,
|
||||
3, 2, 4, 7, 6, 1, 7, 2, 7, 5, 4, 6, 7, 1, 6, 0, 6, 7 ,
|
||||
7, 2, 4, 1, 1, 4, 3, 3, 3, 0, 5, 4, 5, 1, 6, 2, 0, 5 ,
|
||||
3, 7, 7, 2, 5, 3, 0, 4, 4, 7, 4, 2, 6, 3, 4, 2, 5, 5 ,
|
||||
7, 0, 0, 2, 1, 6, 6, 6, 7, 4, 0, 7, 1, 4, 6, 0, 6, 3 ,
|
||||
3, 7, 0, 7, 6, 4, 1, 4, 0, 6, 6, 5, 3, 5, 5, 4, 7, 6 ,
|
||||
2, 5, 5, 1, 2, 5, 0, 3, 1, 6, 4, 0, 2, 7, 7, 2, 7, 5 ,
|
||||
6, 0, 1, 6, 6, 7, 3, 2, 5, 1, 6, 4, 7, 0, 2, 4, 1, 4 ,
|
||||
2, 1, 7, 3, 7, 3, 3, 1, 3, 2, 3, 2, 7, 2, 2, 0, 0, 1 ,
|
||||
0, 4, 3, 5, 5, 1, 1, 4, 1, 3, 1, 2, 7, 3, 3, 7, 6, 2 ,
|
||||
2, 2, 4, 5, 4, 7, 7, 4, 1, 2, 4, 2, 3, 4, 6, 6, 1, 3 ,
|
||||
7, 3, 7, 0, 6, 0, 2, 6, 3, 5, 5, 2, 7, 7, 4, 3, 5, 0
|
||||
};
|
||||
|
||||
// ========================================
|
||||
void test () {
|
||||
Size size (18, 12);
|
||||
Border border (size, false);
|
||||
GraphWalker graphWalker (size, border);
|
||||
int leafCount = graphWalker.vertexMaxCount ();
|
||||
TreeType treeType = MAX;
|
||||
|
||||
// ====================
|
||||
int coreCount = 2;
|
||||
//PixelT *pixels = pixelsT1_18x12;
|
||||
PixelT *pixels = new PixelT [leafCount];
|
||||
srand (time (NULL));
|
||||
for (int i = 0; i < leafCount; ++i)
|
||||
pixels[i] = std::rand() % 8;
|
||||
// ====================
|
||||
|
||||
Raster<PixelT> raster (size);
|
||||
for (int i = 0; i < leafCount; ++i)
|
||||
raster.getPixels ()[i] = pixels[i];
|
||||
Size doubleSize (size.width, 2*size.height);
|
||||
PixelT id[2*leafCount];
|
||||
for (int i = 0; i < 2*leafCount; ++i)
|
||||
id[i] = i;
|
||||
|
||||
cout << endl << "*** coreCount:" << coreCount << endl
|
||||
<< "index / level / border" << endl << endl
|
||||
<< printMap (id, doubleSize, 0) << endl
|
||||
<< printMap (pixels, size, 0) << endl
|
||||
<< border << endl;
|
||||
|
||||
debug = true;
|
||||
ArrayTreeBuilder<PixelT, WeightT> atb (raster, graphWalker, treeType);
|
||||
Tree tree (coreCount);
|
||||
WeightAttributes<PixelT> weightAttributes (tree);
|
||||
atb.buildTree (tree, weightAttributes);
|
||||
tree.check ();
|
||||
|
||||
AttributeProfiles<PixelT> attributeProfiles (tree);
|
||||
atb.setAttributProfiles (attributeProfiles);
|
||||
cerr << attributeProfiles;
|
||||
}
|
||||
|
||||
// ========================================
|
||||
int
|
||||
main (int argc, char **argv, char **envp) {
|
||||
test ();
|
||||
return 0;
|
||||
}
|
||||
|
||||
// ========================================
|
||||
Loading…
Reference in New Issue
Block a user