3D processing parameters overview
This document gives a short overview of the available processing parameters for the O3R 3D cameras.
Since type and default values can change depending on the firmware version, we recommend using the schema to read out the type and default value for specific parameters. For example, to check the type and default value of the maxDistNoise
for the port0
you can use:
$ ifm3d jsonschema | jq .properties.ports.properties.port0.properties.processing.properties.diParam.properties.maxDistNoise
{
"default": 0.05,
"description": "Maximum distance noise, given as the standard deviation in [m]. (0.0: disable check).",
"maximum": 1,
"minimum": 0,
"type": "number"
}
from ifm3dpy.device import O3R
o3r = O3R("192.168.0.69")
o3r.get_schema()["properties"]["ports"]["properties"]["port0"]["properties"]["processing"]["properties"]["diParam"]["properties"]["maxDistNoise"]
{'default': 0.05, 'description': 'Maximum distance noise, given as the standard deviation in [m]. (0.0: disable check).', 'maximum': 1.0, 'minimum': 0.0, 'type': 'number'}
// Note that this example does not include the necessary imports.
auto dev = std::make_shared<ifm3d::O3R>();
ifm3d::json o3r_schema;
o3r_schema = dev->GetSchema()["properties"]["ports"]["properties"]["port0"]["properties"]["processing"]["properties"]["diParam"]["properties"]["maxDistNoise"];
// Printing out the o3r_schema would give:
//{
// "default": 0.05,
// "description": "Maximum distance noise, given as the standard deviation in [m]. (0.0: disable check).",
// "maximum": 1.0,
// "minimum": 0.0,
// "type": "number"
//}
Maximum Distance Noise
Variable name |
Short description |
---|---|
|
Defines the maximum allowable distance noise. Its value represents the standard deviation of the distance value, in meters. |
Typical filters tend to utilize “broad strokes” when making decisions on which pixel to keep and which to filter. These “broad strokes” may eliminate pixels that are critical to the use case. By utilizing the noise value, we only eliminate pixels with the highest noise value (e.g, ambient light) while preserving the maximum amount of usable data. Applying filters in conjunction with the maximum distance noise filter increases the potential for usable pixels in the scene.
When to change default:
Lower the max. distance noise value if you are attempting to measure an object with high precision (e.g, box dimensioning).
Increase the max. distance noise value if it is more important to evaluate all pixels in the scene, regardless of their noise (for example obstacle detection).
Learn more here.
Minimum Amplitude and minimum reflectivity
Variable name |
Short description |
---|---|
|
Defines the minimum amplitude value required for a pixel to be valid |
|
Defines the minimum reflectivity percentage required of the measured object for a pixel to be valid |
A pixel is valid if the energy (amplitude) received is above the defined threshold. The measured amplitude is primarily affected by both the reflectivity of the object and its distance to the camera. |
When to change the default:
Lower the default value when the standard targets are known to have low reflectivity (for example <10% like matte black targets). A lower amplitude threshold is also valuable when attempting to detect negative obstacles (for example stairs). It is recommended to enable a noise filter (temporal or adaptive filter) when lowering the default minimum amplitude.
Learn more about the minimum amplitude here.
Learn more about the minimum reflectivity here.
Adaptive Noise Bilateral Filter and Median Filter
Variable name |
Short description |
Min/max values |
---|---|---|
|
Adaptive Noise Bilateral Filter. mask size is (2*anfFilterSizeDiv2+1)^2. |
0: disable the filter |
|
Size of the mask for spatial median filtering (the size is (2*medianSizeDiv2+1)^2) |
0: disable the filter |
The adaptive bilateral noise filter reduces distance noise while also preserving object edges. Utilizing a larger number of pixels (for example 7x7) in the mask will, in most cases, result in better image quality.
We recommend that you typically use the bilateral filter because it is more efficient and has a better incorporation of the noise.
The median filter does not preserve edges as well as the bilateral filter and tends to produce round corners, but being more computationally efficient, could be utilized with “in-motion” use cases (for example obstacle detection on mobile robots).
Learn more here.
Temporal Filter
Variable name |
Short description |
---|---|
|
Enables the filter |
The temporal filter mitigates distance noise by integrating pixel information over multiple frames. There is no strict limit for the number of frames. Instead, an automatic resetting approach is applied to the pixels.
Although the O3R temporal filter can be used for “in-motion” use cases, it is best suited for static scenes.
Learn more here.
Mixed Pixel Filtering
Variable name |
Short description |
Min/max values |
---|---|---|
|
Filtering mode (angle or distance) |
0: disable the filter, 1: mixed pixel filter is on and uses an angle threshold, 2: mixed pixel filter is on and uses an adaptive delta distance threshold |
|
Threshold given in [rad] for the minimum angle between the surface tangent and the view vector (used if |
Mixed pixels (or “flying pixels”) are pixels that fall partially on a foreground object and partially on an object in the background. Because the physics of indirect ToF do not allow the imager to distinguish partial pixel measurements, the full pixel result is a weighted average distance measurement between the two targets. When viewing the point cloud, these pixels appear “floating”, or not corresponding to any object. The mixed pixel filter removes the mixed pixels from the image.
When to change the default: Mixed pixels fall on the edges of targets. Use cases, such as negative obstacle detection, could take advantage of the additional information provided by these mixed pixels, requiring the filter to be disabled.
Learn more here.
Symmetry Threshold
Variable name |
Short description |
---|---|
|
The threshold given as a factor of the symmetry’s standard deviation. If set to 0, the filter is disabled. |
The raw modulated signal used to perform the distance measurement is designed to be perfectly symmetrical (sent and received). This is true for static applications. If the object is in motion, however, the symmetry of the reflected signal may be altered, leading to “motion blur”. This artifact can be mitigated by allowing “less” symmetry in the measurements.
Note: adjusting this filter for faster motion, or allowing less symmetry, will increase overall distance noise.
Learn more here.
CUDA processing
Variable name |
Short description |
---|---|
|
Defines whether to process the data on the GPU ( |
Starting with firmware version 1.4.30, all 3D data is processed by default on the GPU using a CUDA-based implementation. The useCuda
parameter determines where the distance data is computed: set it to true for GPU processing and false for CPU processing. We generally recommend keeping CUDA processing enabled.
Learn more here.