Software Archive
Read-only legacy content
17061 Discussions

Getting precise depth data without QueryVertices()

Michael_S_18
Beginner
629 Views

Greetings,

I've been trying to get depth data to use for point cloud processing.

I tried using QueryVertices function, but it only gives me 3D data with 1mm precision.

I heard that Real Sense camera is supposed to give more precision, but I couldn't get such data. I tried to get a point cloud by using ProjectDepthToCamera function but I couldn't get it to work well as the resulting point cloud is nothing like the objects in the real world.

Would anyone please teach me how to get depth data with the highest precision(depth resolution) for this device?

Thank you in advance,

Michael

0 Kudos
4 Replies
samontab
Valued Contributor II
629 Views

OK, this may not be as simple as it seems.

First of all, it depends on the camera that you have (F200 or R200), and also the scene itself.

If it is the F200, you should make sure that you have enough time to process the image correctly. There is a parameter that you can change called MotionRangeTradeOff. Make sure you start with a high value for this. It should give you better depth estimates. Also, make sure the laserPower is on a correct number (not too bright, not too dim, just enough to illuminate your object). Change the depthConfidence threshold to match your application. It is basically a parameter that allows you to filter out noisy data, which means you can end up with fewer good quality data points, or a lot of points that also include not very good precision. Filteroption is a similar concept, change it accordingly. Finally Accuracy changes the projected pattern. Try to use the highest quality pattern.

Have a look here for more info about how the F200 works:
https://software.intel.com/en-us/forums/realsense/topic/537872

The R200 works in a different way, but it also has tunable parameters that can be tweaked for similar trade offs.

That should give a good starting point.

0 Kudos
Michael_S_18
Beginner
629 Views

Actually, I'm not looking for the best parameter to get the best depth data, I just want to know how to get a 3D depth data in real world coordinates (point cloud data) without using QueryVertices as it loses the detailed depth information of the data. As in for example, how to convert depth image to point cloud( sample on how to use ProjectDepthToCamera or so).

Perhaps it is possible to project the data using the camera parameters from QueryDepthFocusLength and QueryDepthPrincipalPoint ?

Would it be the same whether I project manually or use ProjectDepthToCamera ?

Sorry if my question was a bit hard to understand. I'm still a beginner in image projections..

0 Kudos
samontab
Valued Contributor II
629 Views

Can you give some numerical examples?, I don't see how QueryVertices loses resolution.

0 Kudos
Michael_S_18
Beginner
629 Views

The value i get from GetDepthUnit is 31.25 micrometers ( I use F200 camera ), while the z values i get from QueryVertices is integer value in milimeters. This means QueryVertices doesn't give the data below milimeter resolution.

For example, when i take depth data of a sphere placed about 25cm from the camera, the z values starting from the nearest point would be like 255.0, 256.0, 257.0 and so on.

Nonetheless, I just figured out that I gave weird values to ProjectDepthToCamera so now I can project depth images to 3D point cloud, with depth resolution of 31.25 micrometers just fine.

Thanks anyway for the advice, samontab.

Best regards,

Michael

0 Kudos
Reply