Add new comment

Gamma curve and increasing the exposure

I am really stumped on this problem, and couldn't find the answer anywhere.

After I manually process the raw stuff, I am getting nice colors and everything. I apply a gamma curve of 2.2 and all is fine. I build and store my gamma curve in an array with this function (it's just a hack):

//gamma is a double of 2.2
    for(i=0;i<65535;i++)
    {
        double i_double=i;
 
        resulting_gamma=pow(i_double/(double)channels_max,1.0f/gamma);
        color_curve[i]=resulting_gamma*255;
    }

Channels max is the maximum color of any channel.
This function works well, as it places all the values of any given sRGB in a 0 to 1f range.

The problem is when I want the increase the exposure, and I multiply all the pixels (just after the WB step) with a certain value. While the pixels will have a new value, they will still be in the same range of 0-1f like before, and nothing will change. So I guess that instead of using channels_max I should use something else. But to what value should I change it, if not to the max value?

I could also apply the exposure AFTER the gamma curve, but then I guess some of the details might be lost? In all the places where I read it, the exposure compensation should be done before the gamma curve.

Thanks for reading!

Forums: