There are several robotics datasets for SLAM, like this one.

In this webpage you can see that the depth image is scaled by a factor of 5000, so that float depth images can be stored in 16 bit png files:

The depth images are scaled by a factor of 5000, i.e., a pixel value of 5000
in the depth image corresponds to a distance of 1 meter from the camera, 10000
to 2 meter distance, etc. A pixel value of 0 means missing value/no data.

I do not understand why this value is chosen. Why not simply 1000, so that there is a conversion of meters to millimeters?


1 Answer 1


PNG does not support float numbers (afaik). Hence the depth value needs to be encoded as a fixed point value. The fixed point was chosen, I guess, to get a good trade-off between accuracy (0.2 mm) and range (13 m).

  • $\begingroup$ Exactly, instead of saving a float depth image in a xml or yml (ascii), this scaling is used in order to use png files as you say. But can you give a reference for the values that you mention for accuracy/range? Are they just a rule of thumb for robotics, or do you have a specific reference? $\endgroup$
    – dim_tz
    Mar 19, 2015 at 19:27
  • 1
    $\begingroup$ Rule of thumb, and not universal in robotics. I would say mostly depends on the range of your depth sensor. My guess: they wanted to have a range of 10 m, and then rounded for the step size. $\endgroup$
    – Jakob
    Mar 20, 2015 at 7:41

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.