1. A method of estimating a 3D surface of an object, wherein: (a) a pulse source emits wave pulses that travel to the object, reflect off of the object, and then travel from the object to a sensor by one or more diffuse reflections; (b) an occluder prevents the wave pulses from traveling in a direct line from the object to the sensor; (c) each respective wave pulse has a direction immediately before the wave pulse first diffusely reflects after being emitted by the pulse source; (d) the direction of the respective wave pulses varies from wave pulse to wave pulse; (e) the sensor captures streak images while the wave pulses arrive at the sensor after the one or more diffuse reflections; (f) a processor performs a calculation to estimate the 3D surface, wherein the calculation includes (i) calculating a voxel grid for a volume in which the object is located, (ii) for each respective voxel in a set of voxels in the voxel grid, initializing a variable associated with the respective voxel to zero or to a reference value, and (iii) for each respective pixel of the sensor for each of the respective streak images, incrementing the variable for each voxel that is a candidate, based on time of flight, of being an origin of measured intensity at the respective pixel, the increment being calculated based at least in part on measured intensity at the respective pixel; and (iv) calculating a second derivative to filter data that results from step (iii).