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 float* model, int modelRows, int modelCols, int gpuDeviceId, float noiseMultiplier)
Constructor.
~RedwoodNoiseModelGPUImpl()

Public functions

auto simulateFromCPU(const float* depth, int rows, int cols) -> Grid2Df
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, int rows, 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 float* model, int modelRows, int modelCols, int gpuDeviceId, float noiseMultiplier)

Constructor.

Parameters
model The distortion model data as a contiguous row-major float array from http://redwood-data.org/indoor/data/dist-model.txt The 3rd dimension is assumed to have been flattened into the second
modelRows Number of rows in the model array
modelCols Number of columns in the model array
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

Grid2Df esp::sensor::RedwoodNoiseModelGPUImpl::simulateFromCPU(const float* depth, int rows, int cols)

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 as a contiguous row-major float array
rows in Number of rows in the depth image
cols in Number of columns in the depth image
Returns Simulated noisy depth as a Grid2D<float>

void esp::sensor::RedwoodNoiseModelGPUImpl::simulateFromGPU(const float* devDepth, int rows, 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