- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I just want to confirm what I'm seeing when I try and adjust R200 device parameters during 3d scanning. And further, what I should be seeing.
Any attempt to turn on "DisparityOutput" crashes the module. (probably this should fail more gracefully?)
The ZMinMax values are being re-set by the module, per frame. So if I change them, the module changes them back. Min is set to 0. Max is set to 65535.
The DSDisparityShift and DSDisparityMultiplier should have no use in this case because using DisparityOutput is not supported? Or do these parameters have an effect when DisparityOutput is disabled as well?
Your documentation on the camera states two things that may or may not be contradictory. I'm not sure what to make of them. First:
"""
The inside range is approximately 0.5-3.5 meters and an outside range up to 10 meters.
"""
Then later on:
"""
To get the best 3D Scanning results:
- Use a 2m (cubed) FOV, with at least 5000 pixels (640x480). For proper detection, use this chart:
Distance / min. Rectangular object size
30cm 4.5cm x 3.5cm,
100cm 16 cm x 11 cm
180cm 28 cm x 21 cm
"""
What is confusing is the minimum range of the camera. As configured by default, it does indeed seem to have a minimum range of about half a meter. It's unclear to me if I should be able to adjust that range to be much closer or not. The second snippet is talking about distances from 30cm to 180cm, which implies the half a meter minimum can be changed to be much smaller. But perhaps I am misunderstanding what is being stated here?
Also, what are the units for the range parameter? The docs simply state:
"""
The SetDSMinMaxZ function sets the distance value minimum and maximum value range.
"""
Millimeters? Centimeters? Something device specific?
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The near/far ranges cannot be expanded in current R4. The minimum distance from the camera to the object is 27cm (F200) and 60cm (R200). The far distance 52cm (F200) and 1.4m (R200). The SetDSMinMaxZ function sets the distance value minimum and maximum value range in millimeters. Thanks!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi David,
Could you clarify what you mean by "The SetDSMinMaxZ function sets the distance value minimum and maximum value range in millimeters." please? Does it affect the scanning range at all?
Thanks,
James
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
SetDSMinMaxZ is setting the camera's depth range. It will affect the range of the depth image.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
This is getting very confusing.
Lets limit this to the R200 as its depth is done differently than the F200 and its depth options use different parts of the Device API.
I will state facts, assumptions, theories and queries, as such, where reasonable. Please correct me where wrong.
Fact: The R200 calculates depth by first rectifying the two IR images to one another (probably just one to the other).
Assumption: The EnableDisparityOutput property is not an addition of substantial extra calculation, but rather an option to output an earlier or more raw version of the depth stream calculation. It isn't extra processing. It's probably less processing overall, because depth from disparity isn't calculated when outputting the earlier work product (disparity).
Query: Since the camera is doing disparity calculation inherently in either mode, the disparity shift and disparity scale parameters become ambiguous (as documented). Are they used as part of the intrinsic disparity calculations that are always done, and therefore are active parts of the the depth stream regardless of the value of "EnableDisparityOutput?" Or are they only part of the calculations involved in the actual "EnableDisparityOutput" pipeline?
Assumption: Once the two IR images are rectified, disparity is found by matching horizontally along a scan-line. The further away the match (in pixels), the closer the point to the camera in space. Therefore, when one puts a near or minimum limit on the reconstruction, one limits how far (in pixels) one needs to search for matches. Meaning: One function of a near limit, is optimization (of runtime) of finding the disparity (depth). This is critical to maintaining real-time performance.
Assumption: Unlike the F200 where the structured light is meant to encode the "source" of the light spatially, the R200's emitter mostly projects dots, noise or other fine details with which to help calculate disparity. The structured light from the R200 is not encoding specific data. Disparity calculation is aided by this structure, but disparity can be calculated on any subject that is well lit enough with IR light and has sufficient detail to be matched to itself in the different IR views.
Assumption: Horizontal resolution limits depth resolution (accuracy) assuming static camera geometry, because matching can only be so accurate with so many samples. Sub pixel accuracy can be accomplished, but can only be so accurate (depending on the subject) before falling to noise.
Fact: As disparity approaches 0, distance approaches infinity and depth accuracy approaches infinity (less accurate, more variance).
Theory: Assuming a minimum acceptable spatial accuracy, one can also optimize by the far or maximum value. When one leaves it at infinity (or, very large), one states the horizontal search range for disparity is between 0 and x pixels. x-0 provides a "size" for the search. The larger the size, the slower the search, until the operation becomes too slow for real-time. Hence, the desire to have the R200 keep a minimum value of about 60cm, to limit the search size. But if one unlocks the max value one can shrink the search range. In other-words, search for disparity between y and x pixels. x-y provides a size for the search. Therefore, one can accomplish a real-time runtime for a closer min by specifying a closer max that keeps the size of the horizontal disparity search reasonable. Or, for a given a realtime search size, n, there are many values of x and y that suffice. But if one sets y to 0, there is only one value of x. Therefore, to maintain realtime performance and shorten the near range, one simply needs to shorten the far range.
Query: Is there also a runtime consideration in subpixel (disparity) accuracy? Would a smaller depth search range result in a more accurate depth in real-time, because there is only so much time to converge on an accurate horizontal offset?
Query: Is the purpose of the DSMinMaxZ property, to allow such optimiztion in a way that application developers and users can understand/provide? By providing specific limits in mm, is the SDK supposed to adjust its disparity calculations? If not, what is the purpose of this property? There is little to no utility in having the SDK do nothing with this limit except clip the output at the last moment.
Query: Does the DSMinMaxZ property currently function correctly in this version of the SDK?
Assumption: The statement that the R200 has a "far" limit of "1.4m" is incorrect. That's the reasonable limit of the laser emitter's range (about). But with supplemental IR lighting (from the sun, for example) disparity can be calculated on lit objects with surface detail. I have observed this in practice.
Query: Are the disparity shift and scale properties simply the disparity search range? Is a shift of 0 leaving the far search at infinity? Is the scale the size of the search? Can one theoretically just keep run-time performance at realtime by leaving the scale as is by default at increasing the shift to bring both the near and far ranges closer to the camera? Or are these parameters something else? Perhaps purely related to the encoding of the disparity output?
Query: Do disparity shift and scale work in the current SDK?
Query: Are these Device parameters meant to be left open to control during a 3d scan? Or will the 3d scan take control of them authoritatively? I would point out that for the F200, most of the range and laser emitter modes and functions appear to be open and usable by the developer. They have useful effect. I've been scanning this way for a couple of weeks now. I would expect the same principal of the R200 part of the SDK. But at this point, that doesn't seem to be the case. What is the current status? What is the eventual design goal?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
David Lu (Intel) wrote:
The near/far ranges cannot be expanded in current R4. The minimum distance from the camera to the object is 27cm (F200) and 60cm (R200). The far distance 52cm (F200) and 1.4m (R200). The SetDSMinMaxZ function sets the distance value minimum and maximum value range in millimeters. Thanks!
You guys should be a bit more clear that you're only providing depth information for a 1-meter deep volume with the R200. I'd also seen the 0.5-3.5 range cited, and expected to have 3-meters of raw depth information, with the detection ranges on the other chart being software limits.
1m (ending at 1.5m) isn't quite what I'd expected from a "long range", world-sensing camera.
Are there any plans to use, say, the stereo IR data to supplement the depth, to expose a larger range of depth to developers?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
David Lu (Intel) wrote:
The far distance 52cm (F200) and 1.4m (R200).
The provided 1.4m value is certainly incorrect. My unit gives depth measurements for much longer distances.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
When I printf the depth value using R200, it reports 0.5m ~ 62.7m. What value range can I trust? The answer is 60cm ~ 1.4m? Do I have to discard all depth values outside the range?

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page