|
Details
I implemented a straightforward ray tracing renderer using the parameterization described in
"Dynamically Reparameterized Light Fields" by Isaksen, McMillan, and Gortler. Thus, the
"scene" consists of a planar camera surface that is fixed in space and a planar focal
surface that can be moved. See the figure below (taken from the paper) for more details.
To render an image from a desired virtual camera position, the algorithm is as follows:
For each pixel
{
Create ray from virtual camera center of projection (cop) through the current pixel
Find the intersection of the ray with the camera surface
If the intersection is within range of the data cameras
{
Find the intersection of the ray with the focal plane
Project that intersection onto the image plane of each of the four closest data cameras
Bi-linearly interpolate within each of the corresponding source images
Bi-linearly interpolate between the resulting four colors based on where you are on
the camera surface (i.e. based on s and t)
}
}
See the figure below (taken from the paper) for more details.
Example Images
The two images below illustrate the advantage of a movable focal plane.
In the image to the left, the focal plane is at a depth that is significantly
behind the geometry of the original scene. Since the camera surface is sparsely
sampled (i.e. only an 8x8 image set with the samples spaced fairly far apart),
significant ghosting appears in the rendered image. In the image to the right,
the focal plane has been moved to a depth that better approximates the geometry
of the original scene, and the resulting rendering is much improved.
The remaining two images appearing below show renders from two different
camera positions (just to show that I can move the camera around).
|