none
Does the Kinect try to auto-correct the depth stream if part of it is blocked? RRS feed

  • Question

  • I'm seeing some really odd behavior in which part of my depth stream is obstructed, but the Z-Data coming back starts to skew itself.

    eg. I'm looking at a flat surface, and on the right side of my depth image I start to see the z-depth get further away from the lens (sometimes up to 10-12cm) without moving either the surface or the Kinect itself.

    What it *feels* like it's doing is saying "oh, odd, that depth pixel isn't being returned, maybe I'll distort the image slightly to see if I can grab it".

    I'm trying to keep the question as abstract as possible to see if my assumption is even in the realm of what's happening.

    Tuesday, April 8, 2014 12:02 AM

All replies

  • The signal can get noisy around the edges, so it will do its best to a point. You should see more unknown values for the depth that you normally would on the rest of the frame. Also consider how perpendicular the camera plane is to the wall and whether everything is perfectly level. The IR interference in the room and the reflectivity of the wall can add to the noise skewing the values a bit.


    Carmine Sirignano - MSFT

    Tuesday, April 8, 2014 4:54 PM
  • Thanks for the reply, I guess the odd thing is that I'm not seeing unknown depth, but depth changing over time for the same set of points.

    It's positioned upside down and pointing at a mirror (so the top and bottom points are being lost). I'm guessing what you're saying about interference is correct in this case.

    That said, is there anything in the 1.8 SDK that can get the raw depth pixels before any attempt to process them? There seems to be a few posts around online that describe the formula that the Kinect uses to take one of it's 2048 values to convert it to mm.

    Wednesday, April 9, 2014 10:57 PM
  • There are no api's that give you access to that data before what is provided in the api's. The varying values you get in depth are due to noise and you need to do some filtering if that is applicable to your application.

    You might want to try something like this:

    http://www.codeproject.com/Articles/317974/KinectDepthSmoothing


    Carmine Sirignano - MSFT

    Tuesday, April 22, 2014 11:25 PM