supereight
Loading...
Searching...
No Matches
dense_pooling_image.hpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2019-2021 Smart Robotics Lab, Imperial College London, Technical University of Munich
3 * SPDX-FileCopyrightText: 2019-2021 Nils Funk
4 * SPDX-FileCopyrightText: 2021 Sotiris Papatheodorou
5 * SPDX-License-Identifier: BSD-3-Clause
6 */
7
8#ifndef SE_DENSE_POOLING_IMAGE
9#define SE_DENSE_POOLING_IMAGE
10
11#include <iostream>
12#include <se/common/timings.hpp>
13#include <se/sensor/sensor.hpp>
14
15namespace se {
16
17using Value = float;
18using Status = int;
19
20struct Pixel {
23
24 // STATUS Crossing: Voxel image intersection
25 // outside := 2;
26 // crossing := 1;
27 // inside := 0;
28 enum statusCrossing { inside = 0, crossing = 1, outside = 2 };
29
30 // STATUS Known: Voxel content
31 // unknown := 2;
32 // partially known := 1;
33 // known := 0;
34 enum statusKnown { known = 0, part_known = 1, unknown = 2 };
35
38
39 Pixel(){};
40
43
44 // Inside pixel //
45
46 // Init known pixel
48 {
49 Pixel knownPixel(std::numeric_limits<Value>::max(),
50 std::numeric_limits<Value>::min(),
53 return knownPixel;
54 };
55
56 // Init unknown pixel
58 {
59 Pixel unknownPixel(std::numeric_limits<Value>::max(),
60 std::numeric_limits<Value>::min(),
63 return unknownPixel;
64 };
65
66 // Crossing pixel //
67
69 {
70 Pixel crossingPixel(std::numeric_limits<Value>::max(),
71 std::numeric_limits<Value>::min(),
74 return crossingPixel;
75 };
76
77 // Init crossing partially known pixel
79 {
80 Pixel crossingPixel(std::numeric_limits<Value>::max(),
81 std::numeric_limits<Value>::min(),
84 return crossingPixel;
85 };
86
88 {
89 Pixel crossingPixel(std::numeric_limits<Value>::max(),
90 std::numeric_limits<Value>::min(),
93 return crossingPixel;
94 };
95
96 // Outside pixel //
97
98 // Init outside pixel
104};
105
106template<typename SensorImplType>
108 public:
109 using Img = std::vector<Pixel>;
110 using Imgs = std::vector<Img>;
111
113
114 bool inImage(const int u, const int v) const;
115 Pixel conservativeQuery(const Eigen::Vector2i& bb_min, const Eigen::Vector2i& bb_max) const;
116 Pixel poolBoundingBox(int u_min, int u_max, int v_min, int v_max) const;
117
118 int width() const
119 {
120 return image_width_;
121 };
122 int height() const
123 {
124 return image_height_;
125 };
127 {
128 return image_max_value_;
129 };
130 int maxLevel() const
131 {
132 return image_max_level_;
133 }
134
135 private:
136 int image_max_level_;
137 int image_width_;
138 int image_height_;
139 Imgs pooling_image_;
140 Value image_max_value_;
141};
142
143
144
145} // namespace se
146
147#include "impl/dense_pooling_image_impl.hpp"
148
149#endif // SE_DENSE_POOLING_IMAGE
Definition dense_pooling_image.hpp:107
Value maxValue() const
Definition dense_pooling_image.hpp:126
std::vector< Img > Imgs
Definition dense_pooling_image.hpp:110
std::vector< Pixel > Img
Definition dense_pooling_image.hpp:109
bool inImage(const int u, const int v) const
Pixel poolBoundingBox(int u_min, int u_max, int v_min, int v_max) const
int maxLevel() const
Definition dense_pooling_image.hpp:130
DensePoolingImage(const se::Image< float > &depth_image)
int height() const
Definition dense_pooling_image.hpp:122
Pixel conservativeQuery(const Eigen::Vector2i &bb_min, const Eigen::Vector2i &bb_max) const
int width() const
Definition dense_pooling_image.hpp:118
Definition image.hpp:19
Helper wrapper to allocate and de-allocate octants in the octree.
Definition bounded_vector.hpp:14
Definition dense_pooling_image.hpp:20
Value max
Definition dense_pooling_image.hpp:22
static Pixel knownPixel()
Definition dense_pooling_image.hpp:47
static Pixel crossingPartKnownPixel()
Definition dense_pooling_image.hpp:78
statusKnown
Definition dense_pooling_image.hpp:34
@ part_known
Definition dense_pooling_image.hpp:34
@ unknown
Definition dense_pooling_image.hpp:34
@ known
Definition dense_pooling_image.hpp:34
statusCrossing status_crossing
Definition dense_pooling_image.hpp:36
static Pixel outsidePixelBatch()
Definition dense_pooling_image.hpp:99
Pixel()
Definition dense_pooling_image.hpp:39
Value min
Definition dense_pooling_image.hpp:21
static Pixel crossingKnownPixel()
Definition dense_pooling_image.hpp:68
static Pixel unknownPixel()
Definition dense_pooling_image.hpp:57
static Pixel crossingUnknownPixel()
Definition dense_pooling_image.hpp:87
statusKnown status_known
Definition dense_pooling_image.hpp:37
Pixel(Value min, Value max, statusCrossing status_crossing, statusKnown status_known)
Definition dense_pooling_image.hpp:41
statusCrossing
Definition dense_pooling_image.hpp:28
@ inside
Definition dense_pooling_image.hpp:28
@ crossing
Definition dense_pooling_image.hpp:28
@ outside
Definition dense_pooling_image.hpp:28