50 PSSK(
const std::vector<std::pair<double, double> >& interval,
52 std::size_t number_of_pixels = 1000,
57 this->_construct(interval, filter, number_of_pixels, min, max);
60 PSSK(
const char* filename,
62 std::size_t number_of_pixels = 1000,
65 unsigned int dimension = std::numeric_limits<unsigned int>::max())
68 std::vector<std::pair<double, double> > intervals;
69 if (dimension == std::numeric_limits<unsigned int>::max()) {
74 this->_construct(intervals, filter, number_of_pixels, min, max);
79 void _construct(
const std::vector<std::pair<double, double> >& intervals,
81 std::size_t number_of_pixels = 1000,
86 std::clog <<
"Entering construct procedure \n";
91 min = std::numeric_limits<double>::max();
92 max = -std::numeric_limits<double>::max();
94 for (std::size_t i = 0; i != intervals.size(); ++i) {
95 if (intervals[i].first < min) min = intervals[i].first;
96 if (intervals[i].second > max) max = intervals[i].second;
102 auto pad = std::fabs(max - min) / 100;
108 std::clog <<
"min : " << min << std::endl;
109 std::clog <<
"max : " << max << std::endl;
110 std::clog <<
"number_of_pixels : " << number_of_pixels << std::endl;
117 std::vector<std::vector<double> > heat_map;
118 for (std::size_t i = 0; i != number_of_pixels; ++i) {
119 std::vector<double> v(number_of_pixels, 0);
120 heat_map.push_back(v);
122 Base::heat_map_.swap(heat_map);
125 std::clog <<
"Done creating of the heat map, now we will fill in the structure \n";
128 for (std::size_t pt_nr = 0; pt_nr != intervals.size(); ++pt_nr) {
131 static_cast<int>((intervals[pt_nr].first - Base::min_) / (Base::max_ - Base::min_) * number_of_pixels);
133 static_cast<int>((intervals[pt_nr].second - Base::min_) / (Base::max_ - Base::min_) * number_of_pixels);
136 std::clog <<
"point : " << intervals[pt_nr].first <<
" , " << intervals[pt_nr].second << std::endl;
137 std::clog <<
"x_grid : " << x_grid << std::endl;
138 std::clog <<
"y_grid : " << y_grid << std::endl;
143 x_grid -= filter.size() / 2;
144 y_grid -= filter.size() / 2;
148 std::clog <<
"After shift : \n";
149 std::clog <<
"x_grid : " << x_grid << std::endl;
150 std::clog <<
"y_grid : " << y_grid << std::endl;
151 std::clog <<
"filter.size() : " << filter.size() << std::endl;
154 for (std::size_t i = 0; i != filter.size(); ++i) {
155 for (std::size_t j = 0; j != filter.size(); ++j) {
157 if (((x_grid + i) >= 0) && (x_grid + i < Base::heat_map_.size()) && ((y_grid + j) >= 0) &&
158 (y_grid + j < Base::heat_map_.size())) {
160 std::clog << y_grid + j <<
" " << x_grid + i << std::endl;
162 Base::heat_map_[y_grid + j][x_grid + i] += filter[i][j];
163 Base::heat_map_[x_grid + i][y_grid + j] += -filter[i][j];