Design Article
Image sensor color calibration using Zynq-7000 SoC
Gabor Szedo, Steve Elzinga, Greg Jewett, Xilinx Inc.
11/14/2012 4:15 PM EST
Full lookup table
Camera calibration assigns an expected value to all possible camera input tristimulus values. A brute-force approach to the problem is to use a large lookup table containing expected values for all possible input RGB values. This solution has two drawbacks. The first is memory size. For 10-bit components, the table is 230 word (4 Gbytes) deep and 30 bits wide. The second problem is initialization values. Typically only a few dozen to a few hundred camera input/expected-value pairs are established via calibration measurements. The rest of the sparse lookup-table values have to be interpolated. This interpolation task is not trivial, as the heterogeneous component input-to-output functions are neither monotone nor smooth. Figure 2a presents the measured vs. expected-value pairs for R,G,B input (rows) and output (columns) values.

Figure 2a – R,G,B measured vs. expected mapping values
A visual evaluation of empirical results interpolated (Figure 2b) did not show significant quality improvement over a gamma-corrected, color-correction matrix-based solution. Most image- or video-processing systems are constrained on accessible bandwidth to external memory. The large size of the lookup table, which mandates external memory use; the significant bandwidth demand the per-pixel accesses pose; and the static nature of lookup-table contents (difficult to reprogram on a frame-by-frame basis) limit practical use of a full LUT-based solution in embedded video- and image-processing applications.

Figure 2b – R component output as a function of R,G,B inputs
Next: Color-correction matrix
Camera calibration assigns an expected value to all possible camera input tristimulus values. A brute-force approach to the problem is to use a large lookup table containing expected values for all possible input RGB values. This solution has two drawbacks. The first is memory size. For 10-bit components, the table is 230 word (4 Gbytes) deep and 30 bits wide. The second problem is initialization values. Typically only a few dozen to a few hundred camera input/expected-value pairs are established via calibration measurements. The rest of the sparse lookup-table values have to be interpolated. This interpolation task is not trivial, as the heterogeneous component input-to-output functions are neither monotone nor smooth. Figure 2a presents the measured vs. expected-value pairs for R,G,B input (rows) and output (columns) values.

Figure 2a – R,G,B measured vs. expected mapping values

Figure 2b – R component output as a function of R,G,B inputs
Next: Color-correction matrix
Navigate to related information

