Exposure and Contrast adjustments part 4: Exposure
A word of warning
Exposure is the fourth and last of the exposure- and contrast-related adjustments. (The first three were Brightness/Contrast, Levels and Curves). At first sight, its control popup looks pretty simple: three sliders plus three eyedroppers for black, middle gray and white points. The only thing I had to do for this article is describe what each slider does, provide some simple examples and be done. So I thought. But Exposure is not straightforward at all.
First, a word of warning for those who seek simple guidelines to enhance their photos: this article won’t help you much further. What I write here is highly analytical. It’s all about arithmetic and mathematics. If you like that, read on. I provide a few formulas that I was unable to find anywhere else on the internet. Otherwise, you’d better jump to the conclusion or read some of my other stuff.
Math magic for dummies
Yes, there is quite a bit of math magic going on under the hood of this adjustment. So much that I had a hard time grasping the logic behind the controls just by experimenting. First, all three sliders have very drastic effects when moved more than just a small amount. Second, there seems to be very little white or black point protection. A careless move will likely clip highlights, shadows or both. (An exception to this is the Gamma slider – more about this later.) It’s not easy to deduce a simple mathematic formula or algorithm just from entering some straightforward values. What to do? How could I ever explain the adjustment’s mechanics if I wasn’t able to unravel them myself?
Of course, for cases like this Google and the World Wide Web can help. I think I found the clue to my confusion on the following web page:
Photoshop for dummies! The author doesn’t spend many words on the three sliders. The first one mainly adjusts highlights, the second shadows and the third midtones. I think there is more to say than that, but a very interesting remark comes at the top of this page. Let me quote:
“The Exposure adjustment in Photoshop CS6 is primarily meant to correct tonal values of High Dynamic Range images, which are 32 bits. (…) You can apply Exposure adjustments to 16-bit or even 8-bit images, as well. This command works by using a linear color space, also known as gamma 1.0, rather than your image’s color space, to make tonal adjustments.”
That explains something. If the adjustment was designed to correct HDR, 32-bit images, it’s not strange that the logic is not evident for an unsuspecting dummy opening an 8-bit original and just fiddling around with the three sliders. I will discuss the implications of the 32-bit aspect later. First, let me try to make heads or tails out of the three sliders, in 8-bit mode that is. The remark about the 32-bit and linearity helped me to uncover the arithmetic.
Figure 1. An original image
A primer on bit depth, gamma and linearity
Before I continue, let me explain the basics of bit depth and gamma corrections. The rest of this article builds heavily on these concepts.
A digital image in Photoshop can be coded in three possible bit depths: 8, 16 or 32.
Gamma correction is a technique to make images look the way humans perceive the world around us. If we define white as luminosity 1 and black as luminosity 0, one might think that luminosity 0.5 is “half gray” – as if we're dealing with a linear scale. For a camera, this is indeed the case. In the human visual system, it’s not. Half the amount of light is perceived just somewhat darker than the full amount. If we display an image in a linear way, just like the camera captured it, it would look way too dark in our eyes. A gamma correction is the usual way to compensate for this: nothing more than a simple mathematical formula applied to the measured luminance values.
Gamma 1.0 is the uncorrected value, a fully linear relationship. The default gamma value of sRGB is 2.2. Other values certainly exist (one can freely convert an image from one gamma to another, or artificially assign a different gamma in order to make an image look different), but these are out of scope for this article.
Figure 2. Graph showing gamma 1.0 vs. gamma 2.2
One last remark to finish our primer: the default gamma value for 32-bit coding is 1.0. In other words, Photoshop considers HDR work a linear affair. Whether this is a Photoshop choice or a universal standard, I don’t know. For the scope of this article, I assume a 32-bit image to be coded in gamma 1.0.
Slider 1: Exposure
Back to the Exposure adjustment: let’s look at the Exposure slider. When I want to get a feeling of what an unknown adjustment does to an image, it helps to mimic the update in a curve. Apply the adjustment, sample some points and plot them into a Curves adjustment. So this is what I did:
Figure 3. Exposure adjustment (left), Curve as described in the text (middle) and resulting image (right)
Voilà. Figure 3 shows Exposure adjustment, the constructed curve and the resulting image. Note the extreme clipping of highlights. The curve is a straight line hitting the top of the graph at about one third from the right. Whatever may be true of 32-bit logic and linear color space does not prevent us from writing a formula for this adjustment. When X is the original pixel value (given on a scale of 0 to 1), Y the result and E the entered value for Exposure, here is their relation:
NB. Why the min(imum)? Because in 8-bit mode, the maximum possible value of Y is 1. Where the inner part of the formula yields a value higher than that, the result must be reset to 1.
Note the 2.2 in the formula: the default gamma value of sRGB (and of my example image). For an Exposure value of 2.2, pixel values are simply doubled. Enter Exposure -2.2 and values are halved.
I think the observation that the Exposure slider mainly works on the highlights and less so on the shadows is correct, at least when working in 8-bit. See the curve of figure 3. The black point is well protected – the white point however is completely overridden.
Same trick? Why not. See figure 4: Offset + 0.1 (left), an approximation in a curve (middle) and resulting image (right).
Figure 4. Offset adjustment (left), approximation in a Curve (middle) and resulting image (right)
This time, it’s not so obvious what happens. From black to white, all pixels get lighter, but on the left side of the curve more so than on the right side. What sort of curve is this? A parabola? A hyperbola? For this move in particular, I needed the extra information that it was designed for “32-bit linear” in order to reverse-engineer the underlying formula. I will save you the details of that journey, but I am so proud of having found what I searched that I give you the full algorithm.
Of course, I give you the formula as well. X is original value (between 0 and 1), Y the result, O the offset:
NB. If you don’t understand this formula, no problem. Just read on, you missed nothing important.
How about the statement that this adjustment affects shadows more than highlights? From the curve it’s true, and looking at the resulting image, it’s also true. But in a linear space, the move is equally strong everywhere. The effect occurs just because in gamma 2.2 shadows are more sensitive to adjustments than highlights.
Needless to say, black and white points are completely neglected by the Offset slider.
The Gamma slider is the easiest to decipher, provided you haven’t skipped my quick explanation above. There is a simple formula, and I will give it here.
The slider works as though we work in a color space with gamma 1.0. Obviously, that’s not the case (the gamma of the image is still 2.2 as normal for sRGB), but we can pretend, can’t we? When moving the slider to a different value (G), the effect can be described as follows: if we started with gamma 1.0 and then changed the gamma to G, the image would look like this. The corresponding formula is as follows (again, X is the original value between 0 and 1, Y the result and G the gamma):
Here, I show the corresponding curve after having told you the formula. See figure 5 for G = 2.0.
Figure 5. Gamma adjustment (left), approximation in a Curve (middle) and resulting image (right)
As you can see from the graph, this slider indeed affects the midtones more than the extremes. Interestingly, anything fully black (RGB 0) or fully white (RGB 1) remains unchanged. This time, black and white points are respected.
The 32-bit magic
As Exposure was designed for 32-bit coded images, we will now have a look at what the sliders do for those. As you could expect, the formulas for 32-bit are a little different from their 8-bit counterparts – in fact, they are simpler. I provide them here without further explanation. X is the original (range 0-1), Y the adjusted pixel value, E exposure, O offset and G Gamma.
A few things I want to say about the 32-bit mechanics, and how they differ from what happens in 8-bit. I opened figure 1 in Photoshop, duplicated it and converted the copy to 32-bit. Despite this conversion, the two look exactly identical. Of course they do: without further adjustment, the pixels of the 32-bit version remain within the 8-bit range, the high-bit conversion doesn’t suddenly make it an HDR image.
Looking at the actual arithmetic, working in 32-bit is definitely different from doing things in 8-bit. In 8-bit, black (0) and white (1 or 255) are hard bumpers. Subtract 0.5 from 0.3 and the result is 0 (black). Nothing can be darker than black or lighter than white. In 32-bit, there is no such limitation. The same subtraction yields -0.2 (something darker than black). The difference becomes apparent in consecutive adjustments, especially for the Offset slider. To illustrate this, I applied two Exposure adjustments. In one: Offset -0.2. In the other, Offset +0.2. Working in 8-bit, shadow detail is lost in the first adjustment, which the second cannot recover. In 32-bit, thanks to the extreme dynamic range, no detail is lost at all. The two adjustments cancel each other out.
It’s time to have a look at the eyedroppers – there is definitely something odd in their behavior. To show what happens, I started again from our example image (figure 1).
Figure 6. Left: original image with 3 eyedroppers. Right: corrected in Curves with midtone eyedropper only
Figure 6 is the same as figure 1, but with three eyedroppers (marked with red circle). Bottom left, the black, just left of the middle the white and bottom right the midtone. The image right is a Curves correction with the midtone eyedropper only. Note a small color move (taking away a slight green cast) but no perceptible luminosity shift.
Figure 7. Midtone eyedropper in Exposure applied in 8-bit (left) and in 32-bit (right)
The RGB read-outs of the third sample (red marked bottom right point in figure 6 left) are 128, 133, 125. If I click the midtone eyedropper on that very point, a slight color correction is supposed to happen, but no luminosity shift to speak of. In Curves, this is exactly what happens (figure 6 right). In Exposure, quite the contrary occurs: no color shift but a strong darkening. And moreover, in 8-bit the result is very different than in 32-bit.
That no color correction occurs is according to design. The Exposure eyedroppers are supposed to only fix luminosity and leave color alone. But we can't reasonably speak of a 'luminosity fix' in figure 7. The results are so absurd that they make me think we’re dealing with one (or more) Photoshop bugs.
The problem is indeed caused by the midtone (middle) eyedropper; the white and black eyedroppers have pretty normal behavior, whether in 8-bit or in 32-bit. Here is a simple experiment to conduct to isolate the issue.
See figure 8 for original and both corrections.
Figure 8. Original (left), corrected for midtone in 8-bit (middle) and in 32-bit (right).
None of these values make sense to me. Apparently, Photoshop thinks that:
Don’t ask me for the logic behind this: both conclusions seem incomprehensible to me. This is not magic, it’s just plain wrong.
An advice for you and another one for Adobe
Here is my advice. Don’t use the Exposure adjustment if you work in 8- or 16-bit. Its mechanics are unintuitive, unsophisticated and unprotective. It’s in one word: clumsy, guaranteed to give erratic results. It can ruin your image if you’re not careful. And it cannot do anything that Curves can’t do better.
If however you happen to work with 32-bit images, then go ahead, study the formulas, make sure to understand what each control does and do whatever you like with them. Avoid the midtone eyedropper though (see previous paragraph). By the way, Exposure is definitely not suitable for tone mapping. Use the HDR Toning adjustment for that. Or better, use dedicated HDR software.
Another advice, not for the retoucher but for Adobe. Why is this adjustment called Exposure? For anyone seeking to fix an exposure problem, this sounds like the obvious choice, right? Well, not so, see all the above observations. If the adjustment is designed for 32-bit HDR images, then please make that clear in the name. Call it “HDR Exposure” or whatever. A minimal effort for you, a meaningful improvement for the users of your product.
Gerald Bakker, 13 February 2021
Photoshop by the Numbers