Adaptive Dynamic Range
This document describes an alternative approach to handling the limited dynamic range of (digital) cameras, and shows an implementation of the technique - dubbed Adaptive Dynamic Range or ADR - in the SPi-V viewer.
Dynamic Range and HDRi
When compared to our own eyes, cameras have a limited dynamic range. In laymen's terms the dynamic range of an image (or camera) is a measure of how many steps there are between the brightest white (eg the sun, as opposed to a white coffe cup) and the darkest black (eg an object in a nearly full shadow, as opposed to the same object in direct sunlight).
The dynamic range issue is especially relevant for panoramic images, as one panoramic scene can easily have drastically varying lighting form one direction in the scene to another.
A HDR image increases the effective dynamic range by (digitally) combining multiple photos of the same scene in increasing exposures. While this solves the dynamic range problem at the camera end, it opposes another dynamic range limit: that of the display. The HDR image can be compressed to fit within the dynamic range of the display device, but this leads to an image with less contrast - though it shows details in both light and dark parts of the image. Techniques like contrast blending adapt the dynamic range of the image locally, maintaining overall contrast in the scene, though they can lead to halo artifacts
A fine overview of using HDRi for panoramas can be found on VR-log.
Click here for a comparison of different exposures in a panorama (ptViewer content)
An adaptive approach
When a scene with varying lighting is viewed through a video camera, the camera adapts continuously (unless the exposure locked by the user). In a lesser extend the human eye also adjusts to extreme variations in lighting.
The ADR approach simualtes this adaptive exposure by using two differently exposed panoramas, and dynamically mixing these to achieve an adapted exposure (and dynamic range) for the current view.
To determine this correct exposure, a high contrast greyscale version of the panorama is included in in the SPi-V file. 9 rays are casted within this greyscale map, determining the local light-value. The 9 values are weighted to simulate a camera's matrix metering. To further simulate the continuous adaptation of the camera's exposure, the light value is dampened slightly. The resulting lighting value is used to mix the two panoramas before the current view is rendered.
The result of the ADR approach is a panorama that has a local dynamic range the viewer expects, showing detail in both dark and light areas, and has good contrast in all areas.
The subtle adaptation of the virtual camera's exposure will probably feel more natural than viewing a panorama with fixed exposure.
|Click the thumbnail to view the ADR-pano|
ADR panorama implemented in SPi-V
The double exposure panorama was shot on a sunny day in an empty warehouse in Delft (NL)
Shooting an ADR panorama is less involving than shooting a full HDR panorama. A traditional HDR panorama requires a series of 5-7 exposures for each position (resulting in over 20 photos for a single 4 fisheye shots panorama). The demo on this page uses only two exposures per position. Since with only two exposures registering the shots is less of an issue, it is even possible to create handheld ADR panoramas (the demo was shot using a philopod).
Delivering an ADR panorama requires using a viewer that supports it. Currently, the SPi-V engine is the only engine that supports ADR panoramas. The SPi-V engine uses 3d hardware acceleration to mix the two exposures in realtime.