The Kinect for Windows SDK exposes depth data as an array of 16-bit values, with the least-significant 3-bits used for player index.1 There are therefore 2^13 = 8192 values available to report depth within the supported range. A sample depth image is shown below in Figure 1. Note that the shape is a result of the sensor being angled downwards, and that black areas correspond to those pixels where no depth information was reported by the sensor.

Figure 1. Kinect depth image.
If this image is rotated and viewed from above, as shown below in Figure 2, discrete depth bands become visible.

Figure 2. Kinect depth image, rotated to highlight depth-banding.
The intervals between depth values for another sample image are plotted against depth in Figure 3 below. Note that the sample image used did not contain any data around 1.5m in depth, so there are some jumps in the data at this point. The graph shows how the depth intervals increase in size with distance from the sensor, from around a 2mm gap at 1m depth to around a 45mm gap at 4m depth.

Figure 3. Depth step by depth.
My initial attempt at a smoothing algorithm is shown below in Figure 4. This approach looks for horizontal and vertical lines of equal depth, and interpolates data between the discrete depth bands. Since these depth bands increase in size further away from the camera, smoothing is more effective for larger depth values.


Figure 4. Raw and smoothed depth image.
1 As of version 1.6, the Kinect for Windows SDK exposes extended depth information.
Comments
I am new to kinect, and want to map the depth to 3D point cloud. How do i proceed.
And one more thing, i dont have kinect sensor at present, i am about to buy it, so can you please instruct me some kinect data center on the web which can
provide me with depth image samples in robotic applications.
thanks,
cheers,
Junaid
Dave
Add Comment