CUDA

Algorithm Implementations

integrate_depth_maps

class integrate_depth_maps : public kwiver::vital::algo::integrate_depth_maps

Public Functions

PLUGGABLE_IMPL (integrate_depth_maps, "depth map fusion", PARAM_DEFAULT(ray_potential_thickness, double, "Distance that the TSDF covers sloping from Rho to zero. " "Units are in voxels.", 20.0), PARAM_DEFAULT(ray_potential_rho, double, "Maximum magnitude of the TDSF", 1.0), PARAM_DEFAULT(ray_potential_eta, double, "Fraction of rho to use for free space constraint. " "Requires 0 <= Eta <= 1.", 1.0), PARAM_DEFAULT(ray_potential_epsilon, double, "Fraction of rho to use in occluded space. " "Requires 0 <= Epsilon <= 1.", 0.01), PARAM_DEFAULT(ray_potential_delta, double, "Distance from the surface before the TSDF is truncate. " "Units are in voxels", 200.0), PARAM_DEFAULT(voxel_spacing_factor, double, "Multiplier on voxel spacing.  Set to 1.0 for voxel " "sizes that project to 1 pixel on average.", 1.0), PARAM_DEFAULT(max_voxels_per_launch, unsigned, "Maximum number of voxels to process in a single kernel " "launch.  Processing too much data at once on the GPU " "can cause the GPU to time out.  Set to zero for " "unlimited.", 20000000), PARAM_DEFAULT(grid_spacing, array3, "Relative spacing for each dimension of the grid", array3({ 1., 1., 1. }))) virtual ~integrate_depth_maps()=default

Destructor.

virtual bool check_configuration(vital::config_block_sptr config) const

Check that the algorithm’s currently configuration is valid.

virtual void integrate(kwiver::vital::vector_3d const &minpt_bound, kwiver::vital::vector_3d const &maxpt_bound, std::vector<kwiver::vital::image_container_sptr> const &depth_maps, std::vector<kwiver::vital::image_container_sptr> const &weight_maps, std::vector<kwiver::vital::camera_perspective_sptr> const &cameras, kwiver::vital::image_container_sptr &volume, kwiver::vital::vector_3d &spacing) const

Integrate multiple depth maps with per-pixel weights into a common volume

The weight maps in this variant encode how much weight to give each depth pixel in the integration sum. If the vector of weight_maps is empty then all depths are given full weight.

Note

the volume data is stored as a 3D image. Metadata fields on the image specify the origin and scale of the volume in world coordinates.

Parameters:
  • minpt_bound[in] the min point of the bounding region

  • maxpt_bound[in] the max point of the bounding region

  • depth_maps[in] the set of floating point depth map images

  • weight_maps[in] the set of floating point [0,1] weight maps

  • cameras[in] the set of cameras, one for each depth map

  • volume[inout] the fused volumetric data

  • spacing[out] the spacing between voxels in each dimension