Shield Fields: Modeling and Capturing 3D Occluders

Douglas Lanman1,2      Ramesh Raskar1,3      Amit Agrawal1      Gabriel Taubin2
1Mitsubishi Electric Research Laboratories (MERL)      2Brown University      3MIT Media Lab

Abstract

We describe a unified representation of occluders in light transport and photography using shield fields: the 4D attenuation function which acts on any light field incident on an occluder. Our key theoretical result is that shield fields can be used to decouple the effects of occluders from the incident illumination. We first describe the properties of shield fields in the frequency-domain and briefly analyze the “forward” problem of efficiently computing cast shadows. Afterwards, we apply the shield field signal-processing framework to make several new observations regarding the “inverse” problem of reconstructing 3D occluders from cast shadows – extending previous work on shape-from-silhouette and visual hull methods. From this analysis we develop the first single-camera, single-shot approach to capture visual hulls without requiring moving or programmable illumination. We analyze several competing camera designs – ultimately leading to the development of a new large-format, mask-based light field camera that exploits optimal tiled-broadband codes for light-efficient shield field capture. We conclude by presenting a detailed experimental analysis of shield field capture and 3D occluder reconstruction.

Resources

Paper (Preprint updated 24 Nov. 2008)
High resolution (pdf) [13.5 MB]
Low resolution (pdf) [540 KB]
Supplementary Video
High resolution (xvid) [25.8 MB]
YouTube (hyperlink)

Supplementary Material
Slides (ppt) [26.4 MB]
Archive (zip) [312 MB]
View archive online (hyperlink)

BibTeX Entry

@ARTICLE{Lanman:2008:ShieldFields,
   author = {Douglas Lanman and Ramesh Raskar and Amit Agrawal and Gabriel Taubin},
   title = {Shield Fields: Modeling and Capturing 3D Occluders},
   journal = {ACM Transactions on Graphics (Proc. SIGGRAPH Asia)},
   year = {2008},
   volume = {27},
   number = {5},
}