Tone-mapping, also known as tone reproduction in other fields, is a process which maps an input image of high dynamic range to a limited low dynamic range, making it amenable to the most output devices such as LCD monitors. While rendering natural environmental scenes or imaginary virtual (synthesized) scenes involves shading and lighting on high dynamic range, even (most of) modern output devices still have very narrow dynamic range of [0, 1]. To scale down this high dynamic range into low dynamic range, various mapping operators (or functions) were suggested, and many of them were derived from photographic field.
Reinhard suggested a tone-mapping operator in his paper, and until now many real-time systems and implementations are using it. Reinhard’s approach is based on the Zone System devised by a famous American photographer Ansel Adams. Ansel Adams classified an input scene’s luminance scale into eleven zones, mapping the darkest region to zone 0 and the brightest region to zone X. (He numbered the zones with Roman numerals.) See the following image (an illustration from Reinhard’s paper).
Reinhard applied this zoning method to computer graphics tone-mapping by first measuring the average luminance level of the input image with log-average (this is a geometric mean; please refer to here about log-average). Note that, in the upper image, luminance levels are represented using exponents.
Here in this equation, an offset value (delta) is added to a pixel’s luminance value Lw(x, y) to avoid undefined log(0). Then, using this average luminance value, every pixels of input image are scaled with the following equation.
Here, a new parameter (alpha) exists to simulate the camera exposure configuration. Reinhard named this parameter a Key which defines the overall spanning range of scaled luminance values. For example, if we set this key larger, scaled luminance values span over higher range, resulting in more bright output image.
Then, to scale down input pixel colors to the range of [0, 1], a simple operator is used.
When L(x, y) is small, this equation hardly scale the luminance value itself. But, as L(x, y) gets larger, scaling effect (approximately 1/L(x, y)) of luminance value gets more outstanding. Therefore, this operator tends to compress high luminance values. See the following graph.
And this equation can be revised to have an upper threshold to burn out brightest region.