The Pixelink API accommodates the use of a user-specified lookup table (LUT) for custom image adjustment. The LUT is an array that maps each possible pixel value to a user-specified pixel value. Typically, the number of elements in the LUT array is equal to the number of possible pixel values in the input, which is a function of the pixel depth of the data stream. The number of elements is 2n, where “n” is the number of bits per pixel. So, for a camera with 10-bit pixels, the LUT would have 210 = 1024 elements. However, certain models of cameras with higher bit depth may not support all 2n entries. On these cameras, the output value of the LUT is an interpolated value. To determine the number of elements supported in the LUT, use the PxLGetFeature command.
The values of the original pixel data are integers from 0 to 2n –1. (So, for a 10-bit camera, the values range from 0 to 1023.)
Examples of uses of lookup tables include pixel depth reduction (say, from 10-bit to 8-bit), grayscale inversion, and custom filtering.
In the Pixelink API, LUTs are treated as camera features by the set and get functions. A LUT is loaded as a feature using the PxLSetFeature function and applied to the camera, allowing the processing to the performed in hardware for optimal speed. However, unlike other features, LUTs are not stored in descriptors.
The LUT can be read from the camera using the PxLGetFeature function.