SinglePhotonLidar

class deepinv.physics.SinglePhotonLidar(sigma=1.0, bins=50, device='cpu', rng: Generator | None = None)[source]

Bases: Physics

Single photon lidar operator for depth ranging.

See https://ieeexplore.ieee.org/abstract/document/9127841 for a review of this imaging method.

The forward operator is given by

\[y_{i,j,t} = \mathcal{P}(h(t-d_{i,j}) r_{i,j} + b_{i,j})\]

where \(\mathcal{P}\) is the Poisson noise model, \(h(t)\) is a Gaussian impulse response function at time \(t\), \(d_{i,j}\) is the depth of the scene at pixel \((i,j)\), \(r_{i,j}\) is the intensity of the scene at pixel \((i,j)\) and \(b_{i,j}\) is the background noise at pixel \((i,j)\).

For a pixel grid of size (H,W) and batch size B, the signals have size (B, 3, H, W), where the first channel contains the depth of the scene \(d\), the second channel contains the intensity of the scene \(r\) and the third channel contains the per pixel background noise levels \(b\).

Parameters:
  • sigma (float) – Standard deviation of the Gaussian impulse response function.

  • bins (int) – Number of histogram bins per pixel.

  • device (str) – Device to use (gpu or cpu).

  • rng (torch.Generator (Optional)) – a pseudorandom random number generator for the Poisson noise model deepinv.physics.noise.PoissonNoise()

A(x, **kwargs)[source]

Applies the forward operator.

Input is of size (B, 3, H, W) and output is of size (B, bins, H, W)

Parameters:

x (torch.Tensor) – tensor containing the depth, intensity and background noise levels.

A_dagger(y, **kwargs)[source]

Applies Matched filtering to find the peaks.

Input is of size (B, bins, H, W), output of size (B, 3, H, W).

Parameters:

y (torch.Tensor) – measurements

Examples using SinglePhotonLidar:

Single photon lidar operator for depth ranging.

Single photon lidar operator for depth ranging.