Applies the selected tone curve to the image. This is just a somewhat random selection of functions, mainly for messing with.
Available tone operators:
//Compile: g++ -o loggamma loggamma.c //Usage: ./loggamma > loggamma.lut #include <stdio.h> #include <math.h> float lin2loggamma(float in) { double a = 0.17883277, b = 0.28466892, c = 0.55991073; double rubicon = 1.0/12.0; double sqrt3 = sqrt(3); if (in > rubicon) return a * log(12*in - b) + c; else return sqrt3 * pow(in, 0.5); } int main() { float in, log; float increment = 1.0 / 20.0; //20 steps, make this larger for better resolution... for (in=0.0; in<=1.0; in+=increment) printf("%f\n", lin2loggamma(in)); }
R(x) = pow((x(6.2x+.5))/(x(6.2x+1.7)+0.06),2.2)rawproc parameterizes the coefficients as follows:
y = pow((x(Ax+B))/(x(Ax+C))+D,Power)Usage notes:
The numbers in the various parameter boxes can be changed with the mouse thumbwheel, incremented/decremented with each notch. For float parameters, holding the Ctrl key while rolling the thumbwheel changes the third digit from the right; holding the Shift key changes the second digit from the right; rolling the thumbwheel with no key pressed changes the rightmost digit.
The curve plot at the bottom of the tool pane graphically depicts the chosen tone curve. The curve is computed using the actual tone curve operation, applied to a synthetic one-row image with monotonically increasing tone values from 0.0 - 1.0. The curve can be zoomed using the mouse scroll wheel; Shift-scroll and Ctrl-scroll increase the zoom rate by 10 and 100, respectively. The zoom scale can be reset to 1.0 by double-clicking in the curve plot.
The norm checkbox enables/disables normalization to 0.0 - 1.0 of reinhard and filmic, which by themselves never reach 1.0. The loggamma operator does this by definition, per the HEVC specification. gamma is hard-coded to normalize.
Properties: See tool.tone.* in Configuration Properties