-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathglobals.hpp
100 lines (75 loc) · 2.13 KB
/
globals.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#ifndef GLOBALS_H
#define GLOBALS_H
#define DLOG(x) \
do { \
} while (0)
// #define DLOG(x) (x)
// #include <blaze/Math.h>
#include <array>
#include <blaze/Math.h>
#include <cstdint>
#include <unordered_map>
#include <vector>
// using blaze::DynamicMatrix;
using std::vector;
#define SLIC_ITERATIONS 10
#define DEFAULT_MAX_CLUSTERS 128
#define DEFAULT_WEIGHT_FACTOR 20
extern int width, height;
extern vector<vector<double>> lmat;
extern vector<vector<double>> amat;
extern vector<vector<double>> bmat;
extern vector<std::array<double, 5>> centers;
extern vector<vector<double>> distances;
extern vector<vector<int>> clusters;
extern int numClusters;
extern int step;
extern double step2;
extern int maxClusters;
extern int weightFactor;
extern double weightFactor2;
// super pixel class (numberSuperpixels)
extern vector<int> spCls;
// Classification Masks (numberSuperpixels, numberClasses)
extern vector<vector<int>> clsMasks;
// mask resolution class distance (numberSuperpixels, numberClasses)
extern vector<vector<double>> mrClassDist;
inline std::pair<int, int> adj_pair(int a, int b) {
return a < b ? std::pair<int, int>(a, b) : std::pair<int, int>(b, a);
}
struct pair_hash {
std::size_t operator()(const std::pair<int, int> &p) const {
return p.first ^ p.second;
// return (size_t)(((long)p.first) << 32) | (unsigned int)p.second;
}
};
// inline size_t pair_hash(std::pair<int, int> p) {}
extern std::unordered_map<std::pair<int, int>, double, pair_hash> spAdjMap;
extern double stdClusterLabNorm;
struct ClassPoint {
int cls;
int ri;
int ci;
};
struct Line {
double ri1;
double ri2;
double ci1;
double ci2;
double A;
double B;
double C;
};
struct ClassPolygon {
int cls;
vector<Line> lines;
};
extern int totalClasses;
extern vector<ClassPoint> classPoints;
extern vector<uint32_t> classToColor;
extern vector<int> spClsMask;
extern vector<uint32_t> coloredMask;
extern bool verboseMode;
extern vector<double> clusterMembers;
extern vector<ClassPolygon> polygons;
#endif