Looking at the DNG SDK (v1.4), I found that the exposure operation is implemented as a 1D function, with a small non-linearity in the very low part of the dynamic range for positive exposure values, and a significant non-linearity in the high part of the dynamic range. This can be seen in the DNG SDK at dng_function_exposure_ramp::Evaluate
and dng_function_exposure_tone::Evaluate
.
In fact, for positive exposure values, while the operation is linear (with a small offset) for values higher than some small threshold (fBlack + fRadius
).
However, for lower values, the operation is quadratic.
For negative exposure values, the lower part of the dynamic range (up to 0.25) is handled linearly, the highlights are handled with a quadratic function.
My question, is what's the reason for that non-linearity, and how important is it for the final result.
(I'm asking about the reasoning behind the decision to perform a non-linear operation for exposure.)