ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Are all the 16 bits of Realsense D415 depth message valid?

asked 2019-03-14 04:29:24 -0500

zmchen gravatar image

Hi! I am using an Intel Realsense camera D415 and I have got the depth message from a ros topic. The depth values for each pixel in RGB image is in the range of 0~65535. It is obvious that the depth value is of 16-bit. But I wonder whether all 16 bits are valid ? I mean how can I get the true depth value from the 16-bit value ? Are some bits useless if I want to restract true depth values ?

edit retag flag offensive close merge delete


Hi @zmchen How do you get the depth message from rostopic? Can you teach me?

cowboygary gravatar image cowboygary  ( 2020-02-25 03:49:23 -0500 )edit

2 Answers

Sort by ยป oldest newest most voted

answered 2019-03-14 11:19:05 -0500

Vicente Penades gravatar image

In my experience (Kinect V1 & V2, orbbec astra, RealSense)

Kinect V1 had a really weird depth format, where you have to shift bits, etc.

Kinect V2, RealSense, Astra, and probably the rest, use the standard of 1 Unit = 1mm as PeteBlackerThe3rd says...

But there's also special values:

If you get a pixel with value 0, it doesn't mean that at that pixel the measure was zero, it actually means "unknown" value. This usually happens when the sensor is not able to acquire a value for that particular pixel.

To some degree, zero value pixels can be considered as "transparent".

This is important, because it needs to be taken into account for processing the depth image. For example, RealSense has a "Spatial Hole Filling" post processing technique that fills the empty gaps using the surrounding bits, but I think it's not enabled by default.

I've also recall a depth camera that also had a non zero special value to indicate some sort of overload in the pixel measurement.

edit flag offensive delete link more


Thanks ! I also got some values like 13525 besides 65535 when I used D415 in my room. My camera's depth scale is 0.001, so depth value 13525 is cooresponds to 13.525 meters in real world. But this is impossible because the actual maximum distance should be about 3 meters in my room and range for D415 is about 10 meters. So what does 13525 mean? Can I just treat it as an error value?

zmchen gravatar image zmchen  ( 2019-03-16 21:26:55 -0500 )edit

answered 2019-03-14 09:33:44 -0500

The convention for depth values on most of the RGB-D cameras I have used is to use a 16 bit integer in units of mm. So the data format has an effective range of just over 65 meters, which is more than any depth camera I've seen.

All the bit are valid, but I don't know of any depth cameras that come close to using the full range. Which is exactly what you want because the convention will need to be changed if the range needs to change.

edit flag offensive delete link more


Thanks ! The maximum range for D415 is about 10 meters. But I also got some values like 13525 which indicates the distance is 13.525 meters in real world (my camera's depth scale is 0.001) when I used the camera in a 3m size room. So is such value just an error or not ?

zmchen gravatar image zmchen  ( 2019-03-16 21:34:55 -0500 )edit

Question Tools

1 follower


Asked: 2019-03-14 04:29:24 -0500

Seen: 1,416 times

Last updated: Mar 14 '19