It is hard to see how machine-vision camera manufacturers produce decent-quality products at reasonable prices. The multi-megapixel sensors at the heart of current machine-vision cameras are among the largest of VLSI (very-large-scale integration) semiconductor chips, and it is almost impossible to make them with the pixel-to-pixel uniformity required for high-precision imaging applications. Without some way of compensating for manufacturing variations across a given image sensor, many otherwise acceptable chips would have to be discarded. That would drastically reduce manufacturing yields and drive sensor-chip prices far beyond levels acceptable for many applications.
Many digital camera manufacturers use lookup tables (LUTs) to escape this quality/cost problem. An LUT is a matrix of values stored in non-volatile semiconductor memory that an on-board computer then uses to modify each image file before passing it to the output (see Figure 1).
Typically, camera manufacturers use this LUT system to rapidly compensate for variations in pixel sensitivity (defective pixel correction) and systematic intensity variations across the image due to optical vignetting (flat field correction). In its most basic implementation, the LUT carries one or two bytes of information representing a correction factor for each pixel. As the image sensor circuitry passes a digital value for each array pixel, the image processing computer looks up the correction factor for that pixel and applies it to the value before passing it on to the output circuitry. The LUT value for a given pixel would combine factors for both defective-pixel and flat-field correction. There are, of course, other ways to store these corrections, but looking up and applying a single factor from a stored table requires the least processing overhead.
While LUT systems are common in machine- vision cameras, most manufacturers do not give users access to them. Users can improve the image-acquisition process when they have access to the LUT system by downloading modified LUTs that correct variations caused by a particular application and/or hardware aging. For example, the manufacturer’s LUT compensates for the vignetting characteristics of the lens they used to test the camera, which may or may not be similar to the lens the user employs in their application.
Similarly, non-linear sensitivity effects become important when the application lighting level differs from that of the manufacturer’s test, or even when environmental conditions, such as temperature, are different. In addition, there may be special application requirements that might lead the user to suppress or enhance pixel sensitivity in one part of the image over that of another. Of course, as the image-capture hardware ages, the ideal corrections might be expected to change. In such a situation, the ability to modify the LUT values would help the user maintain the system’s viability.
Imperx gives the end user LUT access through three camera system capabilities: auxiliary software to build LUTs, downloading of new LUTs to the camera, and LUT cascades. The auxiliary software runs on a host computer and provides a simple, intuitive interface through which the user can build new LUTs.