Getting zero for depth in some areas but does not match with any cases cited by microsoft

JAMES MORGENSTERN 176 Reputation points
2020-11-19T19:52:16.717+00:00

Just received the Kinect DK unit and am investigating for a robotics application.

I have static scene: Kinect is static, roughly vertical, looking at table with several metal parts on it.

I have some areas with specular reflection so no depth measurement there. I understand that.

but I have other broad, flat areas, 4-8 mm above the background, that are showing zero for depth measurement despite reasonable values in the IR image. attached are three images ... in the first i built a 3 band image of (ir, ir, depth) just to make analysis and display here easier as a box print so specific pixels can be compared. also uploaded roi of IR and same are in depth; use 340:380 to display depth.

In the Kinect docs it is explained that a possible explanation fo41193-depth-demo.png41155-irird-boxprint.jpgr zero depth is multipath effects. I do have extensive experience in signal processing in multipath environments. This does not strike me as a multipath issue: the area[s] of zero depth are extensive, not near corners or other reflectors, the objects and sensor are static [not moving].

critical for out application that we get depth to all points on our objects of interest.

what is causing this?
can it be an artifact of the range to depth processing?
Is it possible to receive raw range output from the Kinect instead of after microsoft processing ?

Azure Kinect DK
Azure Kinect DK
A Microsoft developer kit and peripheral device with advanced artificial intelligence sensors for sophisticated computer vision and speech models.
288 questions
{count} votes

3 answers

Sort by: Most helpful
  1. Quentin Miller 351 Reputation points
    2020-11-26T21:10:51.273+00:00

    @JAMES MORGENSTERN Can you please share a depth image and corresponding RGB image that illustrates the issue.

    0 comments No comments

  2. JAMES MORGENSTERN 176 Reputation points
    2020-12-15T16:57:55.357+00:00

    I provided you via email with the requested images. You should know that the problem is consistent and reproducable.

    You responded that the problem lies in the workings of the USB port.

    Rubbish ...

    Here is the problem: The Kinect provides a dynamic range of some 8meters with an accuracy of a bit better than 1mm. So about 14 bits of dynamic range from an 8 bit device. How does that work? Quoting Microsoft: "The Kinect uses multiple different frequencies at the same time and the firmware combines the results." That is, for each surface in the scene, several ambiguous measurements are taken and then combined using Diophantine equations: that is, solving for integers m, n etc. that produce identical absolute range estimates from the several ambiguous range estimates: mrangeinterval1 + rangemeasurement1 = nrangeinterval2+rangemeasurement2. When the diophantine equation does not yield a solution the processor spits out a value of zero -- "I give up". I am not sure why the processor would fail; incidently, Microsoft very clearly states that the combining of frequencies happens in the GPU of the host computer in the SDK dll and NOT in the Kinect firmware.

    Nevertheless, I claim I can get around this problem by working with the single, higher resolution image provided by the higher frequency modulation; I just need Microsoft to give me access to this data. So: How do I get access to this data ?

    0 comments No comments

  3. Quentin Miller 351 Reputation points
    2020-12-15T19:23:44.753+00:00

    @JAMES MORGENSTERN I am sorry James but I do not recall responding to you via email that the issue lies with your USB port. A search of my sent email found nothing. Nevertheless if I did I am sorry for the confusion.

    I have passed you request on to the depth team and will post their response.

    0 comments No comments