Dealing with Transparent Objects
Introduction
Transparent and translucent objects are among the most challenging scenes for any 3D camera. Examples include bottles, jars, plastic wrapping, bubble wrap, and clear plastic containers. Light passes through these surfaces and reflects off whatever is behind them, which makes the surfaces themselves hard to capture. A standard structured-light pipeline tends to either miss the surface entirely or place points on the background instead.
The Omni Engine is designed specifically for these scenes. It manages to get data on transparent surfaces that the other Vision Engines cannot. This article explains how to get good data on transparent objects with the Omni Engine, and how to avoid the most common artifacts.
Note
The Omni Engine is only available for Zivid 2+. For Zivid 3, use the Stripe Engine, which still produces usable data on many transparent scenes.
Start with the right Presets
The fastest way to get good data on transparent objects is to use Presets. The Consumer Goods presets use the Omni Engine and are tuned for the high dynamic range and high reflectiveness typical of transparent scenes.
Try both the Quality and the Fast variant of the Consumer Goods presets and compare them on your scene. Sometimes Quality gives more coverage on the transparent surfaces, and sometimes Fast does, so it is worth checking both.
Thanks to its high dynamic range, the Omni Engine usually covers the scene in a single acquisition, so you rarely need HDR captures for transparent objects.
Sometimes a second acquisition helps, typically one with a longer exposure time to get more signal on the weak transparent surfaces. Start by doubling the exposure time of the first acquisition, then keep doubling until the coverage and SNR are good. If you overshoot and lose coverage or SNR, reduce the exposure time again.
Find the right working distance
Transparent performance degrades faster than non-transparent performance as you move away from the camera’s focus distance, so keep the object close to it. Check the datasheets for your camera models to find the optimal Omni Engine working distance and range.
The distance between the transparent surface and the background behind it also matters, and for best performance it should be moderate and uniform:
Collapsed points appear when the background is too close to the transparent surface, so the points of the surface collapse down onto the background. Increase the distance between the transparent object and whatever is behind it.
Floating points appear when the background is too far from the transparent surface, so points float above the transparent surface. Reduce the distance, or keep it uniform across the scene.
Often you cannot control this distance, because it is inherent to the object. For example, a lunch box with a transparent lid has a fixed gap from the lid to the bottom of the box. This means there is a limit to the size of transparent items a given camera model can image, in terms of the air gap in the Z direction from the transparent surface to the next surface behind it. The size of this gap limit depends on the camera model: the MR60 is made for smaller parts and thus smaller gaps, while the MR130 and LR110 are made for bigger parts and larger gaps.
Find the right camera angle
The angle between the camera and the transparent surface affects both coverage and reflections, and the two pull in different directions.
Aim the camera perpendicular to the transparent surface to maximize coverage
When the camera looks straight at a transparent surface, you get better completeness of that surface.
Tilt the camera to reduce vertical reflections
Reflections from vertical surfaces, such as bin walls, can produce floating points or ghost planes. Tilting the camera away from those surfaces reduces these reflections. See how to position the camera in bin-picking applications for how to pan and tilt the camera to avoid bin-wall reflections.
These two goals can conflict. For example, with a bin whose transparent objects lie flat on the bottom, mounting the camera directly above and parallel to the bin bottom maximizes coverage of those surfaces, but it increases the chances of producing vertical reflections from the bin walls. Tilting the camera reduces the vertical reflections, but it lowers the coverage on the surfaces that are parallel to the bin bottom. Find the compromise that works for your scene.
Choose the background
For transparent objects, the background matters. A dark background typically gives cleaner coverage than a bright, specular one. For example, when imaging empty transparent bottles, place them on a dark absorptive background or in a dark bin rather than on a light, specular surface.
Adjust filters
If you start from the Consumer Goods presets, the filters are already set up well for transparent scenes, so adjust them only if the coverage is not good enough.
Hole Repair: Get more coverage on the transparent surfaces by reducing the
Strictnessand increasing theHoleSize.Noise Removal: Reduce the
Threshold, or turn the filter off, to keep more low-confidence points on the transparent surfaces and avoid accidentally removing data you want to preserve.Noise Repair: Keep it on, as it repairs regions of missing data.
Cluster Filter: Increase the
MaxNeighborDistanceand reduce theMinArea.Outlier Filter: Turning it off is also an option to try when you are losing points, to avoid accidentally removing data you want to keep.
Learn how to adjust filters in the Adjusting Filters tutorial.
When Stripe works better than Omni
The Omni Engine is built to recover transparent surfaces and gives the best coverage on most transparent scenes. In rare cases the Stripe Engine produces a better result on a particular transparent scene, so it is worth comparing the two when Omni does not give the result you need.
Further reading
Continue to the next advanced topic: Dealing with Strong Ambient Light.