Light Field Rendering

Marc Levoy and Pat Hanrahan,
Proc. SIGGRAPH '96.

Abstract:

A number of techniques have been proposed for flying through scenes by redisplaying previously rendered or digitized views. Techniques have also been proposed for interpolating between views by warping input images, using depth information or correspondences between multiple images. In this paper, we describe a simple and robust method for generating new views from arbitrary camera positions without depth information or feature matching, simply by combining and resampling the available images. The key to this technique lies in interpreting the input images as 2D slices of a 4D function - the light field. This function completely characterizes the flow of light through unobstructed space in a static scene with fixed illumination.

We describe a sampled representation for light fields that allows for both efficient creation and display of inward and outward looking views. We have created light fields from large arrays of both rendered and digitized images. The latter are acquired using a video camera mounted on a computer-controlled gantry. Once a light field has been created, new views may be constructed in real time by extracting slices in appropriate directions. Since the success of the method depends on having a high sample rate, we describe a compression system that is able to compress the light fields we have generated by more than a factor of 100:1 with very little loss of fidelity. We also address the issues of antialiasing during creation, and resampling during slice extraction.

Additional information available:

Slide sets

Demos, software, and data

A note on gamma correction

Unlike most of the images in our web hierarchy, the postscript images on this page have been gamma corrected in preparation for printing. The gamma used was 1/1.4. This will make them look too bright when viewed on an SGI display, which is hardware corrected to 1/1.7, but not as dark as our other images look when viewed on an uncorrected display. For correct viewing on an SGI, set your gamma correction value (using the "gamma" command) to 1.7/1.4 = 1.2.


This page © Copyright 1996 by Marc Levoy
The paper © Copyright 1996 by ACM
levoy@cs.stanford.edu