int
im_invertlut( DOUBLEMASK *input, IMAGE *output, int lut_size )
DESCRIPTION
Given a mask of target values and real values, generate a LUT which
will map reals to targets. Handy for linearising images from
measurements of a colour chart. All values in [0,1].
Extrapolate head and tail to 0 and 1.
means a patch with 10% reflectance produces an image with 20% in
channel 1, 30% in channel 2, and 10% in channel 3. A patch with 20%
reflectance makes an image with 40% red, 40% green and 20% blue, and so on.
Inputs don't need to be sorted (we do that). Generate any precision
LUT ... typically ask for 256 elements.
It won't work too well for non-monotonic camera responses (should fix this).
Interpolation is simple piecewise linear; ought to do something better really.