Concave bowl on a marble slab.
There are interreflections inside the concave bowl and subsurface
scattering on the translucent marble slab.

Image captured with a lowfrequency
projected pattern. Due to interreflections, scene points
that are not directly lit have a large radiance. This results
in structured light decoding errors.

Image captured with a highfrequency
projected pattern.
Due to subsurface scattering on the marble slab, the high frequency
pattern is blurred. Consequently, this image are not decoded accurately.


3D Reconstruction Comparison



Using conventional Gray codes results in errors due to interreflections.
Modulated phase shifting relies on explicitly separating the direct and the
global illumination components. Hence, it suffers from low signal to noise
ratio due to low direct component on the marble slab. Our result using an
ensemble of codes has significantly fewer errors.


Designing patterns for preventing errors due to interreflections
Interreflections result in errors for structured light patterns
with low spatial frequencies (see paper for details). To prevent
errors due to interreflections, structured light patterns with only
high spatial frequencies must be used. Existing patterns (phase
shifting, conventional Gray codes) have patterns with a range of
spatial frequencies. We show that by using simple logical operations,
codes with only high spatial frequencies can be constructed. Below
we show an example with a Vgroove scene (see paper for details).



Designing patterns for subsurface scattering and defocus
Local effects such as subsurface scattering and defocus result
in blurring of incident illumination. For such effects, patterns
with low spatial frequencies must be used. We used tools from
combinatorial mathematics literature to design binary patterns
with high minimum stripe width (low spatial frequencies) as shown
below. Note the distribution of stripe widths for different codes.



Handling scenes with multiple global illumination effects
For most scenes, we do not have a priori knowledge of the form of
global illumination effects. Moreover, many scenes can have both
interreflections (longrange) and local effects. For such scenes,
we project an ensemble of codes and perform a simple consistency check.
For example, we project four codes  two sets of logical codes
(optimized for interreflections) and two sets optimized for local effects.
For each scene point, we get four different depth values (as shown below).
The key idea is that if the codes make errors, they are random errors.
However, if any two agree, with high probability they will agree on the correct value.



