8 #ifndef SE_VOLUME_CARVER_HPP 9 #define SE_VOLUME_CARVER_HPP 38 template<
typename MapT,
typename SensorT>
45 const Eigen::Matrix4f& ,
59 template<se::Colour ColB, se::Semantics SemB,
int BlockSize,
typename SensorT>
65 typedef typename OctreeType::NodeType
NodeType;
73 struct VolumeCarverConfig {
75 sigma_min(map.getDataConfig().sigma_min_factor * map.getRes()),
76 sigma_max(map.getDataConfig().sigma_max_factor * map.getRes()),
77 tau_min(map.getDataConfig().tau_min_factor * map.getRes()),
78 tau_max(map.getDataConfig().tau_max_factor * map.getRes())
99 const SensorT& sensor,
101 const Eigen::Matrix4f& T_WS,
119 bool crossesFrustum(std::vector<srl::projection::ProjectionStatus>& proj_corner_stati);
130 bool cameraInNode(
const Eigen::Vector3i& node_coord,
132 const Eigen::Matrix4f& T_WS);
146 const float depth_value_max,
147 const float node_dist_min_m,
148 const float node_dist_max_m);
161 template<
class SensorTDummy = SensorT>
162 typename std::enable_if_t<std::is_same<SensorTDummy, se::PinholeCamera>::value,
void>
163 operator()(
const Eigen::Vector3i& octant_coord,
164 const int octant_size,
165 const int octant_depth,
179 template<
class SensorTDummy = SensorT>
180 typename std::enable_if_t<std::is_same<SensorTDummy, se::OusterLidar>::value,
void>
181 operator()(
const Eigen::Vector3i& octant_coord,
182 const int octant_size,
183 const int octant_depth,
188 const SensorT& sensor_;
190 const Eigen::Matrix4f T_SW_;
192 const float map_res_;
193 VolumeCarverConfig config_;
194 const float max_depth_value_;
195 const float zero_depth_band_;
196 const float size_to_radius_;
204 #include "impl/volume_carver_impl.hpp" 206 #endif // SE_VOLUME_CARVER_HPP const float tau_min
Definition: volume_carver.hpp:84
std::vector< se::OctantBase * > node_list
Definition: volume_carver.hpp:30
std::vector< se::OctantBase * > block_list
Definition: volume_carver.hpp:31
VolumeCarver(MapT &, const SensorT &, const se::Image< float > &, const se::DensePoolingImage< SensorT > &, const Eigen::Matrix4f &, const int)
Definition: volume_carver.hpp:41
OctreeType::NodeType NodeType
Definition: volume_carver.hpp:65
std::vector< se::VarianceState > variance_state_list
Definition: volume_carver.hpp:32
std::vector< bool > projects_inside_list
Definition: volume_carver.hpp:33
Definition: volume_carver.hpp:39
const float sigma_max
Definition: volume_carver.hpp:83
const float sigma_min
Definition: volume_carver.hpp:82
MapType::OctreeType OctreeType
Definition: volume_carver.hpp:64
Map< Data< se::Field::Occupancy, ColB, SemB >, se::Res::Multi > MapType
Definition: volume_carver.hpp:63
This class only helps to dynamic cast the octant to the right type and builds the base of nodes and b...
Definition: octant.hpp:24
const float tau_max
Definition: volume_carver.hpp:85
VarianceState
Definition: volume_carver.hpp:27
Helper wrapper to allocate and de-allocate octants in the octree.
Definition: colour_utils.hpp:17
OctreeType::BlockType BlockType
Definition: volume_carver.hpp:66
Definition: volume_carver.hpp:29
VolumeCarverConfig(const MapType &map)
Definition: volume_carver.hpp:74