isp:brightness

# Brightness

In the simplest terms the “brightness” of a pixel is its luminosity value as perceived by a human eye (making infrared and gamma rays $0$ “bright”). There are quite a few competing standards and definitions of what the means exactly, but for our purposes we will use the $L$ component of the HSL color space as our “brightness” value of a pixel.

Again, in the simplest terms, increasing or reducing pixel's brightness can be interpreted as adding or subtracting a fixed “gain” value (others may argue that a more natural approach would be to use a multiplier, while others still may bring the “vibrancy” approach into picture).

With that the implementation of the Brightness adjustment can be as simple as the following (where the “luma”, or brightness component $\in[0..100]%%$):

// pseudo-code
void brightness(/*array of pixels*/image, int _br){
for(const & pixel: image){
pixel.luma = std::clamp(pixel.luma + _br, 0, 100);
}
}