Abstract:
Imaging devices, such as digital cameras, scanners, displays and projectors, and related processing methods that implement calibration and post-capture image processing that quickly and accurately corrects image quality resulting from lens and CCD imperfections using a minimum amount of computation and memory storage space.

Description:
BACKGROUND  
       [0001]     All digital cameras suffer from lens and CCD effects that degrade image quality. For example, lens vignetting (the property of all lenses to gather more light in the center of the image) causes darkening of the corners of the image when compared with the image center. Another degradation is color shading, which is a gradual shift in color from one edge of the image to another. Color shading is easiest to see when the scene to be captured is a solid color (e.g. a clear blue sky or a blank wall). Color shading is the result of an interaction between the lens and CCD and is present in all digital cameras to varying degrees. A third type of degradation are lens blemishes which are caused by irregular lens surfaces. These irregularities are most visible when the lens is at full telephoto and smallest aperture (similar to the effect of dust on the lens).  
         [0002]     Good quality digital cameras utilize a calibration and post-capture image processing algorithm to reduce or remove unwanted lens and CCD effects. A camera is calibrated by capturing an image of a uniformly illuminated, uniform-color scene (e.g. a white wall). Since the scene is known to be of uniform brightness and color, gains can be determined for each pixel location (r,c) to ensure the final image has uniform brightness and color. These gains may be represented by a matrix G with R rows and C columns. Because lens and CCD distortion changes with zoom and aperture position, a gain image G az  needs to be stored for each aperture a ε{1 . . . A} and zoom position zε{1 . . . Z}. Unfortunately, there can be 100 or more such gain images for all zoom and aperture settings. The key is to utilize a method that can be computed quickly with minimum on-camera memory use while still accurately correcting lens and CCD effects.  
         [0003]     The most common solution to lens and CCD distortion correction is polynomial-fitting. In polynomial fitting, the vectors x=[1, 2, . . . C]T and y=[1, 2, . . . R]T are defined so that the following Vandermonde matrices can be defined 
 
 X=[x   0 , x 1 1, . . . ,  x   n−1 ]  (1) 
 
 Y=[y   0   , y   1 1, . . . ,  y   n−1 ].   (2) 
 
         [0004]     The polynomial approximation may then be written as: 
 
 G   az ≈YC az   X   T    (3) 
 
 where the n×n matrix C az  of polynomial coefficients are given by 
 
 C   az =( Y   T   Y ) −1   Y   T   G   az   X ( X   T   X ) −1    (4) 
 
         [0005]     Assuming n 2 coefficients per gain mask, 2 bytes per coefficient and 3 color planes, it would take a total of 6AZn 2  bytes to store all the polynomial coefficients. Assuming that the matrices X and Y can be precomputed, Equation 3 takes Cn(n+R) multiplies and C(n+R)(n−1) adds for a total of C(R+n)(2n−1) operations.  
         [0006]     Polynomial fitting thus involves fitting a two-dimensional polynomial to the gain image and then storing the coefficients of the polynomial. Since there are usually 10 or so polynomial coefficients, only 10 numbers need to be stored for each zoom and aperture position. Additionally, since polynomials are generated using only multiplications and additions, gain masks can be efficiently computed and applied once the user captures an image.  
         [0007]     Unfortunately, polynomials with an efficiently computable number of coefficients form a poor approximation to ideal gain masks. In short, polynomial fitting is a computationally efficient method of lens/CCD correction that involves a small amount of memory storage, but the overall correction ability is limited.  
         [0008]     It would be desirable to have a gain correction method that may be implemented in a calibration and post-capture image processing algorithm that achieves a superior level of correction with minimal memory use.  
     
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0009]     The various features and advantages of disclosed embodiments may be more readily understood with reference to the following detailed description taken in conjunction with the accompanying drawings, wherein like reference numerals designate like structural elements, and in which:  
         [0010]      FIGS. 1   a  and  1   b  are rear and front views, respectively, of an exemplary digital camera employing singular-value-decomposed gain correction;  
         [0011]      FIGS. 2   a - 2   d  illustrate comparison between polynomial computation and single value decomposition procedures; and  
         [0012]      FIG. 3  is a flow diagram that illustrates an exemplary gain correction method for use with a digital camera. 
     
    
     DETAILED DESCRIPTION  
       [0013]     The single value decomposition procedures discussed below relate to calibration and correction of images, and are generally described with regard to their use with a digital camera. However, it is to be understood that the method of calibration and correction described herein is also well-suited for use in scanners, displays and projectors, and the like, and is not limited to use in digital cameras.  
         [0014]     Referring to the drawing figures,  FIGS. 1   a  and  1   b  are rear and front views, respectively, of an exemplary digital camera  10  that may employ gain correction methods that may be implemented in a calibration and post-capture image processing algorithm as disclosed herein. As is shown in  FIGS. 1   a  and  1   b,  the exemplary digital camera  10  comprises a handgrip section  20  and a body section  30 . The handgrip section  20  includes a power button  21  or switch  21  having a lock latch  22 , a record button  23 , a strap connection  24 , and a battery compartment  26  for housing batteries  27 . The batteries may be inserted into the battery compartment  26  through an opening adjacent a bottom surface  47  of the digital camera  10 .  
         [0015]     As is shown in  FIG. 1   a,  a rear surface  31  of the body section  30  comprises a liquid crystal display (LCD)  32  or viewfinder  32 , a rear microphone  33 , a joystick pad  34 , a zoom control dial  35 , a plurality of buttons  36  for setting functions of the camera  10  and a video output port  37  for downloading images to a computer, for example. As is shown in  FIG. 1   b,  a zoom lens  41  extends from a front surface  42  of the digital camera  10 . A metering element  43  and front microphone  44  are disposed on the front surface  42  of the digital camera  10 . A pop-up flash unit  45  is disposed adjacent a top surface  46  of the digital camera  10 .  
         [0016]     An image sensor  11 , such as a charge coupled device (CCD) array, for example, is coupled to processing circuitry  12  (illustrated using dashed lines), both of which may be housed within the body section  30 , for example. An exemplary embodiment of the processing circuitry  12  comprises a microcontroller (μC)  12  or central processing unit (CPU)  12 . The microcontroller  12  or CPU  12  is coupled to a nonvolatile (NV) storage device  14 , and a high speed (volatile) storage device  15 , such as synchronous dynamic random access memory (SDRAM)  15 , for example.  
         [0017]     The processing circuitry  12  (microcontroller  12  or CPU  12 ) in the digital camera  10 , embodies firmware  13  comprising a calibration and gain correction algorithm  13  that implements a method  60  using singular-value decomposition. This will be discussed in more detail below and with reference to  FIG. 2 .  
         [0018]     The digital camera  10  is calibrated to generate a set of gain masks. These gain masks are compressed for on-camera storage with minimal loss of information into a form that is computationally efficient to decompress. In a first stage, the gain masks are individually compressed. Then, in a second stage, similarities between the compressed gain masks are exploited to further compress the data.  
         [0019]     The gain masks are individually compressed by computing a compressed approximation of a single gain mask via singular-value decomposition (SVD) into 
 
G=USV T    (5) 
 
 where U T U=V T V=I, I is an identity matrix and V T  represents the transpose of matrix V. The matrix S is diagonal with non-negative diagonal elements in decreasing order. 
 
         [0020]     The diagonal elements of S are called the singular values of G. Because the elements of G change slowly with changing row or column (in other words, G is smooth), the singular values of G will decrease quickly. This means that all but the largest n singular values can be set to zero to obtain a good approximation of G.  
         [0021]     Let the notation A(i:j, u: v) represent a sub-matrix of matrix A given by rows i thru j and columns u thru v. Define 
 
   U =U (1 : R, 1: n )√{square root over (S(1 :n, 1 :n ))}  (6) 
 
   V =V (1 : C, 1: n )√{square root over (S(1 :n, 1 :n ))}  (7) 
 
 so that the approximation can be written as G≈  U   V   T . 
 
         [0022]     An algorithm that can find U(1: R,1: n), V(1: C, 1: n)and S(1: n, 1: n) follows, This algorithm may be referred to as a subspace algorithm for partial single value decomposition.  
         [0023]     The subspace algorithm is a method for finding the n largest singular values (eigenvalues) and singular vectors (eigenvectors) of a given R×R hermetian matrix A (a real-valued matrix A is hermetian if A T =A). The subspace algorithm iterates until the error is less than some tolerance ε as follows  
         [0024]     Step 1: Pick an initial guess for U (e.g. U=A(1: R,1: n)).  
         [0025]     Step 2: QR decompose U→QR and then set U=Q, such as by using a decomposition algorithm discussed in Press, H. et al,  Numerical Recipes in C,  Cambridge University Press, N.Y. 1992.  
         [0026]     Step 3: Compute Y=AU and S=U T Y  
         [0027]     Step 4: If ||Y_US||&gt;_then set U=Y and loop to Step 2.  
         [0028]     Care must be taken not to choose n larger than the rank of A or the subspace method will not converge. The subspace method may be used to find the partial single value decomposition of a non-hermetian matrix A with R rows and C columns. Observe that 
 
 AA   T   =USV   T ( USV   T ) T   =USV   T   VSU   T   =US   2   U   T , 
 
 so the subspace algorithm can be used on AA T  to get U and S 2 . Matrix V can be solved for using A T =VSU T , A T U=VS, and A T US —     1   =V. If R&gt;C then it is faster to use A T A to get V and S 2  and compute U=AVS −1 . 
 
         [0029]     In the second stage, similarities between approximated gain masks are exploited in order to further reduce memory storage requirements. Let  U   az  represent the matrix for a given aperture a and zoom position z. The following outer-product matrix is generated for each column of  U   az   
               P   c     =       ∑     a   ,   z       ⁢           U   _       a   ⁢           ⁢   z       ⁡     (       1   ⁢     :     ⁢   R     ,   c     )       ⁢           U   _       a   ⁢           ⁢   z       ⁡     (       1   ⁢     :     ⁢   R     ,   c     )       T                 (   8   )             
 
 Singular-value decompose each outer product matrix 
 
P c U c S c U c   T .   (9) 
 
 Define the matrix Û c =U c (1: R,1: w) in order to form the approximation  U   az (1: R,c)≈Û c   T u azc  where u azc  is a w×1 vector given by 
 
 u   azc   =Û   c   T     U     az (1 :R,c ).   (10) 
 
         [0030]     Equations. 8, 9 and 10 are repeated to find the basis {circumflex over (V)} c  and weights v azc  for each column of  V   az . Table 1 summarizes the memory requirements for this method and Table 2 summarizes the computational requirements.  
                                       TABLE 1                                   Matrix   Size   Bytes   Qty   Total Bytes                           Û c     R × w   2Rw   n   2Rwn           {circumflex over (V)} c     C × w   2Cw   n   2Cwn           u azc     w × 1   2w   3AZn   6wAZn           V azc     w × 1   2w   3AZn   6wAZn                           2wn(R + C + 6AZ)                      
 
         [0031]    
       
         
               
               
               
               
               
             
           
               
                 TABLE 2 
               
               
                   
               
               
                   
               
               
                 Matrix 
                 Multiplies 
                 Adds 
                 Qty 
                 Total Operations 
               
               
                   
               
             
             
               
                   U   az (:, c) = Û c u azc   
                 Rw 
                 R(w − 1) 
                 n 
                 Rn(2w − 1) 
               
               
                   V   az (:, c) = {circumflex over (V)} c v azc   
                 Cw 
                 C(w − 1) 
                 n 
                 Cn(2w − 1) 
               
               
                 G az  =  U   azc   V   az   T   
                 RCn 
                 RC (n − 1) 
                 1 
                 RC (2n − 1) + 
               
               
                   
                   
                   
                   
                 n(R + C)(2w − 1) 
               
               
                   
               
             
          
         
       
     
         [0032]      FIGS. 2   a - 2   d  illustrate comparison between polynomial computation and single value decomposition procedures for R=122, C=163, A=10, and Z=11.  FIG. 2   a  shows an uncorrected image of a uniformly illuminated, uniform color scene. Notice the non-uniform color from top to bottom and lens blemish in the lower right corner.  FIG. 2   b  shows the image when corrected using the polynomial method with order n=3 which uses less memory but roughly the same number of operations as the single value decomposition method. Although vignetting has been reduced, the lens blemish is still clearly visible.  
         [0033]      FIG. 2   c  shows the image when corrected using the polynomial method with order n=7 which uses roughly the same amount of memory, but nearly three times the computation of the single value decomposition method. Although the lens blemish has been reduced, it is still clearly visible.  FIG. 2   d  shows the image when corrected using the single value decomposition method. The lens blemish in the lower right corner has been greatly reduced. Clearly, the single value decomposition method offers an improved trade-off between memory use, computational complexity and image correction ability.  
         [0034]     Conventional polynomial fitting leads to a coarse approximation of the ideal gain mask when using the typical number of polynomial coefficients that lead to computational efficiency. In contrast, singular-value decomposition of the ideal gain mask leads to an excellent approximation versus the amount of computation required to regenerate the gain mask.  
         [0035]     Given the above, and referring to  FIG. 3 , it is a flow diagram that illustrates an exemplary gain correction method  60  such as may be used with a digital camera  10 , for example. The exemplary gain correction method  60  may be implemented as follows.  
         [0036]     An imaging device  10 , such as a digital camera  10 , is provided  61  that comprises an image sensor  11 , processing circuitry  12  and a storage device  14 . The processing circuitry  12  is configured  62  to embody firmware  13  comprising a calibration and gain correction algorithm  13  that uses singular-value decomposition to generate approximations of gain masks for use in correcting images generated by the image sensor  11  caused by certain effects that degrade image quality.  
         [0037]     The imaging device  10 , or digital camera  10 , is calibrated  63  to generate a set of gain masks. The set of gain masks is compressed in two stages. Each individual gain mask is compressed  64  using single value decomposition to produce a singular-value-decomposed gain mask that comprises a compressed approximation of the gain mask. Each compressed approximated gain mask is then processed  65  to produce an outer product matrix. Each outer product matrix is then compressed  66  using single value decomposition to produce a singular-value-decomposed outer product matrix. The compressed set of singular-value-decomposed outer product matrices is stored  67  in the imaging device  10 , or digital camera  10 . During operation, an image is generated  68  by the image sensor  11 . A selected one of the stored compressed set of singular-value-decomposed outer product matrices that relates to the generated image is decompressed  69 . The generated image and the selected decompressed singular-value-decomposed outer product matrix are processed  70  to correct the image for effects that degrade image quality.  
         [0038]     The above-described single value decomposition method of lens and CCD correction provides improved correction ability and less computational complexity compared with conventional polynomial correction. A strength of the single value decomposition method comes from use of custom separable functions that best approximate a given gain mask. These separable functions require extra memory storage but provide an improved trade-off between accuracy of the gain mask approximation and overall computation. The single value decomposition method can be used whenever a group of similar images need to be stored in compressed format. The single value decomposition method may be considered as a form of 3D compression that is particularly suited to relatively smooth images. As a result, the above-described method of calibration and correction is well-suited for use in scanners, displays and projectors.  
         [0039]     Thus, digital cameras and algorithms that provide for lens and CCD correction using singular value decomposition have been disclosed. It is to be understood that the above-described embodiments are merely illustrative of some of the many specific embodiments that represent applications of the principles described herein. Clearly, numerous and other arrangements can be readily devised by those skilled in the art without departing from the scope of the invention.