| .TH IM_INVERTLUT 3 "June 2001" |
| .SH NAME |
| im_invertlut \- turn a set of greyscale measurements into a gamma-correcting |
| LUT |
| .SH SYNOPSIS |
| #include <vips/vips.h> |
| |
| int |
| .br |
| im_invertlut( DOUBLEMASK *input, IMAGE *output, int lut_size ) |
| |
| .SH 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. |
| |
| Eg. input like: |
| |
| 4 3 |
| 0.1 0.2 0.3 0.1 |
| 0.2 0.4 0.4 0.2 |
| 0.7 0.5 0.6 0.3 |
| |
| 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. |
| |
| .SH RETURN VALUE |
| -1 on error, otherwise 0 |
| .SH SEE ALSO |
| im_histgr(3), im_hsp(3), im_heq(3), im_identity(3). |
| .SH COPYRIGHT |
| 2001, National Gallery |