Here is an image (this is an overhead view of lights in downtown Los Angeles). This is just a plain old 8-bit per color image, it is not High Dynamic Range or anything:

We want to try to make those lights brighter. Let's try some simple manipulation. We will try to multiply the luminance everywhere, as though the exposure was longer, and see if we get a nice picture. Here is what most programs, including PhotoShop, will do:

1 2 4 8 16 32

Well, that looks a lot like what people are used to seeing when they mess with images using a computer. (In fact this is a higher quality conversion than most programs, as I did it in floating point and dithered the results back to 8 bits. Most programs use an 8-bit to 8-bit lookup table which necessarily means some color information is lost, due to the pigeonhole principle). Most users then give up after seeing this, and use more complicated color corrections such as histograms or lookup curves to get what they want.

But what if the math is done in Linear Floating Point? In these next examples the image was converted from sRGB to linear floating point, multiplied by a constant, and then converted back to sRGB:

1 2 4 8 16 32

Okay, I hope you can see that the second example looks a lot more like an increased exposure of the image. Yes nothing fancy is being done, just really simple math! Even if it is not perfect, it is much closer, and the user has a lot less work to do to get it perfect.

Go back