esp::sensor::RedwoodNoiseModelGPUImpl struct

Provides a CUDA/GPU implementation of the Redwood Noise Model for PrimSense Depth sensors provided here: http://redwood-data.org/indoor/dataset.html

Please cite the following work if you use this noise model

@inproceedings{choi2015robust,
  title={Robust reconstruction of indoor scenes},
  author={Choi, Sungjoon and Zhou, Qian-Yi and Koltun, Vladlen},
  booktitle={Proceedings of the IEEE Conference on Computer Vision and
    Pattern Recognition}, pages={5556--5565}, year={2015}
}

Constructors, destructors, conversion operators

RedwoodNoiseModelGPUImpl(const Eigen::Ref<const Eigen::RowMatrixXf> model, const int gpuDeviceId, const float noiseMultiplier)
Constructor.
~RedwoodNoiseModelGPUImpl()

Public functions

auto simulateFromCPU(const Eigen::Ref<const Eigen::RowMatrixXf> depth) -> Eigen::RowMatrixXf
Simulates noisy depth from clean depth. The input is assumed to be on the CPU and the output will be on the CPU. If the input isn't on the CPU, bad things happen, segfaults happen.
void simulateFromGPU(const float* devDepth, const int rows, const int cols, float* devNoisyDepth)
Similar to simulateFromCPU() but the input and output are assumed to be on the GPU. If they aren't, bad things happen, segfaults happen.

Function documentation

esp::sensor::RedwoodNoiseModelGPUImpl::RedwoodNoiseModelGPUImpl(const Eigen::Ref<const Eigen::RowMatrixXf> model, const int gpuDeviceId, const float noiseMultiplier)

Constructor.

Parameters
model The distortion model from http://redwood-data.org/indoor/data/dist-model.txt The 3rd dimension is assumed to have been flattened into the second
gpuDeviceId The CUDA device ID to use
noiseMultiplier Multiplier for the Gaussian random-variables. This can be used to increase or decrease the noise level

Eigen::RowMatrixXf esp::sensor::RedwoodNoiseModelGPUImpl::simulateFromCPU(const Eigen::Ref<const Eigen::RowMatrixXf> depth)

Simulates noisy depth from clean depth. The input is assumed to be on the CPU and the output will be on the CPU. If the input isn't on the CPU, bad things happen, segfaults happen.

Parameters
depth in Clean depth, i.e. depth from habitat's depth shader
Returns Simulated noisy depth

void esp::sensor::RedwoodNoiseModelGPUImpl::simulateFromGPU(const float* devDepth, const int rows, const int cols, float* devNoisyDepth)

Similar to simulateFromCPU() but the input and output are assumed to be on the GPU. If they aren't, bad things happen, segfaults happen.

Parameters
devDepth in Device pointer to the clean depth Assumed to be a continguous array in row-major order
rows in The number of rows in the depth image
cols in The number of columns
devNoisyDepth out Device pointer to the memory to write the noisy depth