locked
Depth image RRS feed

  • Question

  • Hello,

    we got the depth image(you can see it at www.cs.huji.ac.il/~haniel_1985) using resolution of 640x480 and 16 bits depth per pixel

    Is there a way to create a better depth image that will give us more accurate details in the image, like our facial features for example?

    thanks,

    Haniel and Chen  

    Tuesday, July 26, 2011 12:40 PM

Answers

  • I don't know about doing so by using the depth image, but you can certainly do it using the device:

    http://www.xbox.com/en-US/Kinect/KinectAvatars

    I suspect they're actually using the color image although recently they released an update for the XBox that improve accuracy. However they do it that they did shows it is possible. That doesn't mean it's easy though.

    A good start would be better depth shading. Your grey scale shading is losing a lot of detail. You're mapping many depths to one color and many similar depths to indistinguishable colors. You have three eight bit color channels and one 12 bit depth channel. So splitting those 12 bits into three channels 4 bits at a time is one way not to lose detail. If that's the high order 4 bits of the color channels then each change in color is a distinct change in color. Depth shading in that manner you can save the color image, reload it and reconstruct the depth image exactly. You lose no detail and you can visually see each change in depth.

    That's rather psychedelic and it's commonly referred to as rainbow shading. Similar to above rather than doing a narrow band you can repeat the bands. An example being climbing up and down the grey scale. So intensity = depth mod 256; if (((depth /256) mod 2) == 0) then intensity = 255 - intensity;.  It's easier to distinguish 64 shades of grey than 256 though.

    It helps to understand what, exactly, you're getting. At 2m you're getting depths roughly to the nearest cm. That doesn't mean you can get any value to the mm within 1cm of the actual distance, but, rather, you will get a specific value and the actual value is within 5mm of that specific value. If you actually get 2000 as the depth for a pixel then you won't ever get 1995 or 2005. Instead you'll get like 1990 and 2010 and the only value between will be the 2000. At the center of the screen I get 1986, 1998, 2009. As the object moves closer and further away it will flip from 1998 to 1986 or 2009 but it will never be any value between 1986 and 2009 other than 1998.

    Tuesday, July 26, 2011 7:37 PM

All replies

  • Not sure if facial expressions are possible but:

    - Calibration.

    - Use pseudo-colors and scale the pseudo colors in a narrow band, e.g. 1.0-1.2 meters.



    Tuesday, July 26, 2011 1:33 PM
  • I don't know about doing so by using the depth image, but you can certainly do it using the device:

    http://www.xbox.com/en-US/Kinect/KinectAvatars

    I suspect they're actually using the color image although recently they released an update for the XBox that improve accuracy. However they do it that they did shows it is possible. That doesn't mean it's easy though.

    A good start would be better depth shading. Your grey scale shading is losing a lot of detail. You're mapping many depths to one color and many similar depths to indistinguishable colors. You have three eight bit color channels and one 12 bit depth channel. So splitting those 12 bits into three channels 4 bits at a time is one way not to lose detail. If that's the high order 4 bits of the color channels then each change in color is a distinct change in color. Depth shading in that manner you can save the color image, reload it and reconstruct the depth image exactly. You lose no detail and you can visually see each change in depth.

    That's rather psychedelic and it's commonly referred to as rainbow shading. Similar to above rather than doing a narrow band you can repeat the bands. An example being climbing up and down the grey scale. So intensity = depth mod 256; if (((depth /256) mod 2) == 0) then intensity = 255 - intensity;.  It's easier to distinguish 64 shades of grey than 256 though.

    It helps to understand what, exactly, you're getting. At 2m you're getting depths roughly to the nearest cm. That doesn't mean you can get any value to the mm within 1cm of the actual distance, but, rather, you will get a specific value and the actual value is within 5mm of that specific value. If you actually get 2000 as the depth for a pixel then you won't ever get 1995 or 2005. Instead you'll get like 1990 and 2010 and the only value between will be the 2000. At the center of the screen I get 1986, 1998, 2009. As the object moves closer and further away it will flip from 1998 to 1986 or 2009 but it will never be any value between 1986 and 2009 other than 1998.

    Tuesday, July 26, 2011 7:37 PM