Tone mapping

From Wikipedia, the free encyclopedia
Jump to: navigation, search
This article is about technique to map colors of HDR images. For a general technique to map colors between images, see Color mapping.

Tone mapping is a technique used in image processing and computer graphics to map one set of colors to another to approximate the appearance of high dynamic range images in a medium that has a more limited dynamic range. Print-outs, CRT or LCD monitors, and projectors all have a limited dynamic range that is inadequate to reproduce the full range of light intensities present in natural scenes. Tone mapping addresses the problem of strong contrast reduction from the scene radiance to the displayable range while preserving the image details and color appearance important to appreciate the original scene content.

Historical relevance of Tone Mapping[edit]

Solutions to the tone reproduction issue have been attempted since the days of early painters. These painters only had access to the limited contrast range of available pigments. Leonardo Da Vinci resorted to using midrange colors for all objects in order to attempt to achieve the desired contrast in the image, despite this distorting the actual brightness levels [1]. The introduction of film-based photography created further issues since capturing the enormous dynamic range of lighting from the real world on a chemically limited negative was very difficult. Early film developers attempted to remedy this issue by designing the film stocks and the print development systems that gave a desired S-shaped tone curve with slightly enhanced contrast (about 15%) in the middle range and gradually compressed highlights and shadows [2]. The dodge and burn technique was also employed by photographers to overcome the limitations of the print process [3].

The advent of digital photography gave hope for better solutions to this problem. One of the earliest algorithms employed by Land and McCann in 1971 was Retinex, inspired by theories of lightness perception [4].This method is inspired by the eye’s biological mechanisms of adaptation when lighting conditions are an issue. Gamut mapping algorithms were also extensively studied in the context of color printing. Computational models such as CIECAM02 or iCAM were used to predict color appearance. Despite this, if algorithms could not sufficiently map tones and colors, a skilled artist was still needed, as is the case with cinematographic movie post-processing.

Computer graphic techniques capable of rendering high-contrast scenes shifted the focus from color to luminance as the main limiting factor of display devices. Several tone mapping operators were developed to map high dynamic range (HDR) images to standard displays. More recently, this work has branched away from utilizing luminance to extend image contrast and towards other methods such as user-assisted image reproduction. Currently, image reproduction has shifted towards display-driven solutions since displays now possess advanced image processing algorithms that help adapt rendering of the image to viewing conditions, save power, up-scale color gamut and dynamic range.

Purpose and methods[edit]

The goals of tone mapping can be differently stated depending on the particular application. In some cases producing just aesthetically pleasing images is the main goal, while other applications might emphasize reproducing as many image details as possible, or maximizing the image contrast. The goal in realistic rendering applications might be to obtain a perceptual match between a real scene and a displayed image even though the display device is not able to reproduce the full range of luminance values.

Various tone mapping operators have been developed in the recent years [5]. They all can be divided in two main types:

  • global (or spatially uniform) operators: they are non-linear functions based on the luminance and other global variables of the image. Once the optimal function has been estimated according to the particular image, every pixel in the image is mapped in the same way, independent of the value of surrounding pixels in the image. Those techniques are simple and fast[1] (since they can be implemented using look-up tables), but they can cause a loss of contrast. Examples of common global tone mapping methods are contrast reduction and color inversion.
  • local (or spatially varying) operators: the parameters of the non-linear function change in each pixel, according to features extracted from the surrounding parameters. In other words, the effect of the algorithm changes in each pixel according to the local features of the image. Those algorithms are more complicated than the global ones; they can show artifacts (e.g. halo effect and ringing); and the output can look unrealistic, but they can (if used correctly) provide the best performance, since human vision is mainly sensitive to local contrast.

A simple example of global tone mapping filter is V_{\text{out}}=\frac{V_{\text{in}}}{V_{\text{in}}+1}, where Vin is the luminance of the original pixel and Vout is the luminance of the filtered pixel. This function will map the luminance Vin in the domain [0,\infty) to a displayable output range of [0,1). While this filter provides a decent contrast for parts of the image with low luminance (particularly when Vin < 1), parts of the image with higher luminance will get increasingly lower contrast as the luminance of the filtered image goes to 1.

A perhaps more useful global tone mapping method is gamma compression, which has the filter V_{\text{out}}=A\,V_{\text{in}}^{\gamma}, where A > 0 and 0 < γ < 1. This function will map the luminance Vin in the domain [0,1/A^{1/\gamma}] to the output range [0,1]. γ regulates the contrast of the image; a lower value for lower contrast. While a lower constant γ gives a lower contrast and perhaps also a duller image, it increases the exposure of underexposed parts of the image while at the same time, if A < 1, it can decrease the exposure of overexposed parts of the image enough to prevent them from being overexposed.

An even more sophisticated group of tone mapping algorithms is based on contrast or gradient domain methods, which are 'local'. Such operators concentrate on preserving contrast between neighboring regions rather than absolute value, an approach motivated by the fact that the human perception is most sensitive to contrast in images rather than absolute intensities. Those tone mapping methods usually produce very sharp images, which preserve very well small contrast details; however, this is often done at the cost of flattening an overall image contrast, and may as a side effect produce halo-like glows around dark objects. Examples of such tone mapping methods include: gradient domain high dynamic range compression [6] and A Perceptual Framework for Contrast Processing of High Dynamic Range Images[7] (a tone mapping is one of the applications of this framework).

Another approach to tone mapping of HDR images is inspired by the anchoring theory of lightness perception [8]. This theory explains many characteristics of the human visual system such as lightness constancy and its failures (as in the checker shadow illusion), which are important in the perception of images. The key concept of this tone mapping method (Lightness Perception in Tone Reproduction[9]) is a decomposition of an HDR image into areas (frameworks) of consistent illumination and the local calculation of the lightness values. The net lightness of an image is calculated by merging of the frameworks proportionally to their strength. Particularly important is the anchoring—relating of the luminance to a known luminance, namely estimating which luminance value is perceived as white in the scene. This approach to tone mapping does not affect the local contrast and preserves the natural colors of an HDR image due to the linear handling of luminance.

One simple form of tone mapping takes a standard image (not HDR – the dynamic range already compressed) and applies unsharp masking with a large radius, which increases local contrast rather than sharpening. See unsharp masking: local contrast enhancement for details.

One of the commonly used tone mapping algorithms is the iCAM06 which is based on both the color appearance model and hierarchical mapping[10]. After bilateral filtering, the image is broken into a base layer and a detail later. White point adaptation and chrominance adaptation are applied to the base layer, while detail enhancement is applied to the detail layer. Eventually the two layers are merged together and converted to the IPT color space. In general, this method is good but has some shortcomings, specifically in how computationally heavy the filtering method is. A proposed solution[11] to this involves performance optimization of the filter. The base layer of the image is also converted to the RGB space for tone compression. This method also allows for more output adjustment and saturation enhancement, making it be less computationally intensive and better at reducing the overall halo effect.

Tone mapping in digital photography[edit]

Tone mapped HDR image of Dundas Square; Tone mapping was done as post-processing technique, using Photomatix photographic software.

Forms of tone mapping long precede digital photography. The manipulation of film and development process to render high contrast scenes, especially those shot in bright sunlight, on printing paper with a relatively low dynamic range, is effectively a form of tone mapping, although it is not usually called that. Local adjustment of tonality in film processing is primarily done via dodging and burning, and is particularly advocated by and associated with Ansel Adams, as described in his book The Print; see also his Zone System.

The normal process of exposure compensation, brightening shadows and altering contrast applied globally to digital images as part of a professional or serious amateur workflow is also a form of tone mapping.

However, HDR tone mapping, usually using local operators, has become increasingly popular amongst digital photographers as a post-processing technique, where several exposures at different shutter speeds are combined to produce an HDR image and a tone mapping operator is then applied to the result. There are now many examples of locally tone mapped digital images, inaccurately known as "HDR photographs", on the internet, and these are of varying quality. This popularity is partly driven by the distinctive appearance of locally tone mapped images, which many people find attractive, and partly by a desire to capture high-contrast scenes that are hard or impossible to photograph in a single exposure, and may not render attractively even when they can be captured. Although digital sensors actually capture a higher dynamic range than film, they completely lose detail in extreme highlights, clipping them to pure white, producing an unattractive result when compared with negative film, which tends to retain colour and some detail in highlights.

In some cases local tone mapping is used even though the dynamic range of the source image could be captured on the target media, either to produce the distinctive appearance of a locally tone mapped image, or to produce an image closer to the photographer's artistic vision of the scene by removing sharp contrasts, which often look unattractive. In some cases, tone mapped images are produced from a single exposure which is then manipulated with conventional processing tools to produce the inputs to the HDR image generation process. This avoids the artifacts that can appear when different exposures are combined, due to moving objects in the scene or camera shake. However, when tone mapping is applied to a single exposure in this way, the intermediate image has only normal dynamic range, and the amount of shadow or highlight detail that can be rendered is only that which was captured in the original exposure.

Tone mapping in relation to display devices[edit]

One of the original goals of tone mapping was to be able to reproduce a given scene or image onto a display device such that the brightness sensation of the image to a human viewer closely matches the real-world brightness sensation. However, a perfect match for this problem is never possible and thus the output image on a display is often built from a tradeoff between different image features. Choosing between features is often based on the necessary application, and given appropriate metrics for the application, one possible solution is to treat the issue as an optimization problem[12].

For this method, models for the Human Visual System (HVS) and the display are first generated, along with a simple tone mapping operator. The contrast distortions are weighted according to their individual visibilities approximated by the HVS. With these models, an objective function that defines the tone curve can be created and solved using a fast quadratic solver.

With the addition of filters, this method can also be extended to videos. The filters ensure that the rapid changing of the tone-curve between frames are not salient in the final output image.


Example of the imaging process[edit]

Tone mapped High dynamic range image example showing stained glass windows in south alcove of Old Saint Paul's, Wellington, New Zealand.
The six individual exposures used to create the previous image. In the low exposure images, the room is dark and unclear, but the details of the windows are visible. In the high exposure images, the windows are bright and unclear, but the details of the room are revealed.

The images on the right show the interior of a church, a scene which has a variation in radiance much larger than that which can be displayed on a monitor or recorded by a conventional camera. The six individual exposures from the camera show the radiance of the scene in some range transformed to the range of brightnesses that can be displayed on a monitor. The range of radiances recorded in each photo is limited, so not all details can be displayed at once: for example, details of the dark church interior cannot be displayed at the same time as those of the bright stained-glass window. An algorithm is applied to the six images to recreate the high dynamic range radiance map of the original scene (a high dynamic range image). Alternatively, some higher-end consumer and specialist scientific digital cameras are able to record a high dynamic range image directly, for example with RAW images.

In the ideal case, a camera might measure luminance directly and store this in the HDR image; however, most high dynamic range images produced by cameras today are not calibrated or even proportional to luminance, due to practical reasons such as cost and time required to measure accurate luminance values — it is often sufficient for artists to use multiple exposures to gain an "HDR image" which grossly approximates the true luminance signal.

The high dynamic range image is passed to a tone mapping operator, in this case a local operator, which transforms the image into a low dynamic range image suitable for viewing on a monitor. Relative to the church interior, the stained-glass window is displayed at a much lower brightness than a linear mapping between scene radiance and pixel intensity would produce. However, this inaccuracy is perceptually less important than the image detail, which can now be shown in both the window and the church interior simultaneously.

Visual effect[edit]

Local tone mapping produces a number of characteristic effects in images. These include halos around dark objects, a "painting-like" or "cartoon-like" appearance due to a lack of large global contrasts, and highly saturated colours. Many people find the resulting images attractive and these effects to add an interesting new set of choices for post-processing in digital photography. Some people believe that the results stray too far from realism, or find them unattractive, but these are aesthetic judgements, and often concern the choices made by the photographer during the tone mapping process, rather than being a necessary consequence of using tone mapping.

Not all tone mapped images are visually distinctive. Reducing dynamic range with tone mapping is often useful in bright sunlit scenes, where the difference in intensity between direct illumination and shadow is great. In these cases the global contrast of the scene is reduced, but the local contrast maintained, while the image as a whole continues to look natural. Use of tone mapping in this context may not be apparent from the final image:

Tone mapping can also produce distinctive visual effects in the final image, such as the visible halo around the tower in the Cornell Law School image below. It can be used to produce these effects even when the dynamic range of the original image is not particularly high. Halos in images come about because the local tone mapping operator will brighten areas around dark objects, to maintain the local contrast in the original image, which fools the human visual system into perceiving the dark objects as being dark, even if their actual luminance is the same as that of areas of the image perceived as being bright. Usually this effect is subtle, but if the contrasts in the original image are extreme, or the photographer deliberately sets the luminance gradient to be very steep, the halos become visible.

OpenCV code for Tone Mapping[edit]

OpenCV has several resources for implementing simple tone mapping algorithms. An example of this implementation can be seen below [13]:

#include <opencv2/photo.hpp>
#include "opencv2/imgcodecs.hpp"
#include <opencv2/highgui.hpp>
#include <vector>
#include <iostream>
#include <fstream>
 
using namespace cv;
using namespace std;
 
void loadExposureSeq(String, vector<Mat>&, vector<float>&);
 
int main(int, char**argv)
{
    vector<Mat> images;
    vector<float> times;
    loadExposureSeq(argv[1], images, times);
 
    Mat response;
    Ptr<CalibrateDebevec> calibrate = createCalibrateDebevec();
    calibrate->process(images, response, times);
 
    Mat hdr;
    Ptr<MergeDebevec> merge_debevec = createMergeDebevec();
    merge_debevec->process(images, hdr, times, response);
 
    Mat ldr;
    Ptr<TonemapDurand> tonemap = createTonemapDurand(2.2f);
    tonemap->process(hdr, ldr);
 
    Mat fusion;
    Ptr<MergeMertens> merge_mertens = createMergeMertens();
    merge_mertens->process(images, fusion);
 
    imwrite("fusion.png", fusion * 255);
    imwrite("ldr.png", ldr * 255);
    imwrite("hdr.hdr", hdr);
 
    return 0;
}
 
void loadExposureSeq(String path, vector<Mat>& images, vector<float>& times)
{
    path = path + std::string("/");
    ifstream list_file((path + "list.txt").c_str());
    string name;
    float val;
    while(list_file >> name >> val) {
        Mat img = imread(path + name);
        images.push_back(img);
        times.push_back(1 / val);
    }
    list_file.close();
}

This content is © opencv dev team and is published under the openBSD license By downloading, copying, installing or using the software you agree to this license. If you do not agree to this license, do not download, install, copy or use the software.

This code takes in an input of several exposure images and constructs the HDR image. The code then uses a simple tone mapping algorithm based on the work of Durand and Dorsey[14] which employs a bilateral filter for correction. It then runs an exposure fusion merge the exposures and writes out the results into one image.


Gallery[edit]

See also[edit]

References[edit]

  1. ^ Livingstone, M. 2002. "Vision and Art: The Biology of Seeing." Harry N Abrams
  2. ^ Hunt, R. 2004. "The Reproduction of Colour in Photography, Printing and Television: 6th Edition." John Wiley & Sons.
  3. ^ Adams, A. 1981. "The Print, The Ansel Adams Photography Series 3." New York Graphic Society
  4. ^ Land, E. H., and McCann, J. J. 1971. "Lightness and the retinex theory." Journal of the Optical Society of America 61, 1, 1–11.
  5. ^ Kate Devlin, Alan Chalmers, Alexander Wilkie, Werner Purgathofer. "STAR Report on Tone Reproduction and Physically Based Spectral Rendering" in Eurographics 2002. DOI: 10.1145/1073204.1073242
  6. ^ Raanan Fattal, Dani Lischinski, Michael Werman. "Gradient Domain High Dynamic Range Compression"
  7. ^ Rafal Mantiuk, Karol Myszkowski, Hans-Peter Seidel. "A Perceptual Framework for Contrast Processing of High Dynamic Range Images"
  8. ^ Alan Gilchrist. "An Anchoring Theory of Lightness Perception".
  9. ^ Grzegorz Krawczyk, Karol Myszkowski, Hans-Peter Seidel. "Lightness Perception in Tone Reproduction for High Dynamic Range Images"
  10. ^ Fairchild, M. D., Johnson, G.M.: ‘The iCAM framework for image appearance, differences and quality’. J Electron. Imaging, 2004
  11. ^ Xiao, J., Li, W., Liu, G., Shaw, S., & Zhang, Y. (n.d.). Hierarchical tone mapping based on image color appearance model. [15]
  12. ^ Mantiuk, R., Daly, S., & Kerofsky, L. (n.d.). Display Adaptive Tone Mapping. http://resources.mpi-inf.mpg.de/hdr/datmo/mantiuk08datm.pdf
  13. ^ http://docs.opencv.org/trunk/doc/tutorials/photo/hdr_imaging/hdr_imaging.html
  14. ^ Durand and Julie Dorsey, “Fast Bilateral Filtering for the Display of High-Dynamic-Range Images”. ACM Transactions on Graphics, 2002, 21, 3, 257 - 266
  1. ^ G. Qiu et al, "Tone Mapping for HDR Image using Optimization-A New Closed Form Solution", Proc. ICPR 2006, 18th International Conference on Pattern Recognition, vol.1, pp.996-999

External links[edit]

Tone mapping algorithms[edit]