Abstract:
A method for forming a final digital color image, includes: capturing an image using an image sensor having panchromatic pixels and color pixels corresponding to at least two color photoresponses; providing from the captured image a digital high resolution panchromatic image and a digital high resolution color differences image; and using the digital high resolution panchromatic image and the digital high resolution color differences image to produce the final digital high resolution full color image.

Description:
[0001]     Reference is made to commonly-assigned U.S. patent application Ser. No. 11/191,729, filed Jul. 28, 2005, entitled “Image Sensor With Improved Light Sensitivity” by John T. Compton et al, and U.S. patent application Ser. No. ______, filed concurrently herewith, entitled “Image Sensor With Improved Light Sensitivity” by Takayuki Kijima et al the disclosure of which is incorporated herein. 
     
    
     FIELD OF THE INVENTION  
       [0002]     The invention relates generally to the field of digital image processing operations that are particularly suitable for use in all sorts of imaging devices.  
       BACKGROUND OF THE INVENTION  
       [0003]     Video cameras and digital still cameras generally employ a single image sensor with a color filter array to record a scene. This approach begins with a sparsely populated single-channel image in which the color information is encoded by the color filter array pattern. Subsequent interpolation of the neighboring pixel values permits the reconstruction of a complete three-channel, full-color image. One example of this process can be found in U.S. Pat. No. 5,506,619, Hamilton et al.  
         [0004]     Under low-light imaging situations, it is advantageous to have one or more of the pixels in the color filter array unfiltered, i.e. white or panchromatic in spectral sensitivity. These panchromatic pixels have the maximum light sensitivity capability of the capture system. Employing panchromatic pixels represents a tradeoff in the capture system between light sensitivity and color spatial resolution. To this end, many four-color color filter array systems have been described. U.S. Pat. No. 6,529,239, Dyck et al. teaches a green-cyan-yellow-white pattern that is arranged as a 2×2 block that is tessellated over the surface of the sensor. U.S. Pat. No. 6,757,012, Hubina et al. discloses both a red-green-blue-white pattern and a yellow-cyan-magenta-white pattern. In both cases the colors are arranged in a 2×2 block that is tessellated over the surface of the imager. The difficulty with such systems is that only one-quarter of the pixels in the color filter array have maximum light sensitivity, thus limiting the overall low-light performance of the capture device.  
         [0005]     To address the need of having more pixels with maximum light sensitivity in the color filter array, U.S. Patent Application Publication 2003/0210332, Frame, describes a pixel array with most of the pixels being unfiltered. Relatively few pixels are devoted to capturing color information from the scene producing a system with low color spatial resolution capability. Additionally, Frame teaches using simple linear interpolation techniques that are not responsive to, or protective of high frequency color spatial details in the image.  
         [0006]     What is needed is color filter array with an appropriate composition of panchromatic and color pixels in order to provide both improved low-light sensitivity and improved color spatial resolution fidelity. Additionally, a method is needed to process the image data produced by such a color filter array in order to preserve and enhance panchromatic and color spatial details and ultimate produce a full-color, full-resolution image.  
       SUMMARY OF THE INVENTION  
       [0007]     The present invention provides a method for forming a final digital color image, comprising:  
         [0008]     (a) capturing an image using an image sensor having panchromatic pixels and color pixels corresponding to at least two color photoresponses;  
         [0009]     (b) providing from the captured image a digital high resolution panchromatic image and a digital high resolution color differences image; and  
         [0010]     (c) using the digital high resolution panchromatic image and the digital high resolution color differences image to produce the final digital high resolution full color image.  
         [0011]     It is a feature of the present invention that images can be captured under low-light capture with improved image fidelity.  
         [0012]     It is another feature of the present invention that image fidelity is improved through the use of adaptive image processing strategies. 
     
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0013]      FIG. 1  is a perspective of a computer system including a digital camera for implementing the present invention;  
         [0014]      FIG. 2  is a block diagram of a preferred embodiment;  
         [0015]      FIG. 3  is a more detailed block diagram of block  204  in  FIG. 2 ;  
         [0016]      FIG. 4  is a region of pixels in block  200  in  FIG. 2 ;  
         [0017]      FIG. 5  is a region of pixels used in block  202  in  FIG. 2 ;  
         [0018]      FIG. 6  is a region of pixels produced in block  202  in  FIG. 2 ;  
         [0019]      FIG. 7  is a region of pixels used in block  204  in  FIG. 2 ;  
         [0020]      FIG. 8  is a region of pixels produced in block  204  in  FIG. 2 ;  
         [0021]      FIG. 9  is a region of pixels produced in block  206  in  FIG. 2 ;  
         [0022]      FIG. 10  is a region of pixels produced in block  210  in  FIG. 2 ;  
         [0023]      FIG. 11  is a region of pixels produced in block  200  in  FIG. 2  of an alternate embodiment;  
         [0024]      FIG. 12  is a region of pixels used in block  202  in  FIG. 2  of an alternate embodiment;  
         [0025]      FIG. 13  is a region of pixels used in block  204  in  FIG. 2  of an alternate embodiment;  
         [0026]      FIG. 14  is a region of pixels produced in block  200  in  FIG. 2  of an alternate embodiment;  
         [0027]      FIG. 15  is a region of pixels use in block  202  in  FIG. 2  of an alternate embodiment;  
         [0028]      FIG. 16  is a region of pixels used in block  204  in  FIG. 2  of an alternate embodiment;  
         [0029]      FIG. 17  is a region of pixels produced in block  204  in  FIG. 2  of an alternate embodiment;  
         [0030]      FIG. 18  is a region of pixels in block  210  in  FIG. 2  of an alternate embodiment;  
         [0031]      FIG. 19  is a region of pixels produce in block  200  in  FIG. 2  of an alternate embodiment;  
         [0032]      FIG. 20  is a region of pixels used in block  202  in  FIG. 2  of an alternate embodiment;  
         [0033]      FIG. 21  is a region of pixels used in block  204  in  FIG. 2  of an alternate embodiment; and  
         [0034]      FIG. 22  is a region of pixels produced in block  204  in  FIG. 2  of an alternate embodiment. 
     
    
     DETAILED DESCRIPTION OF THE INVENTION  
       [0035]     In the following description, a preferred embodiment of the present invention will be described in terms that would ordinarily be implemented as a software program. Those skilled in the art will readily recognize that the equivalent of such software can also be constructed in hardware. Because image manipulation algorithms and systems are well known, the present description will be directed in particular to algorithms and systems forming part of, or cooperating more directly with, the system and method in accordance with the present invention. Other aspects of such algorithms and systems, and hardware or software for producing and otherwise processing the image signals involved therewith, not specifically shown or described herein, can be selected from such systems, algorithms, components and elements known in the art. Given the system as described according to the invention in the following materials, software not specifically shown, suggested or described herein that is useful for implementation of the invention is conventional and within the ordinary skill in such arts.  
         [0036]     Still further, as used herein, the computer program can be stored in a computer readable storage medium, which can include, for example; magnetic storage media such as a magnetic disk (such as a hard drive or a floppy disk) or magnetic tape; optical storage media such as an optical disc, optical tape, or machine readable bar code; solid state electronic storage devices such as random access memory (RAM), or read only memory (ROM); or any other physical device or medium employed to store a computer program.  
         [0037]     Before describing the present invention, it facilitates understanding to note that the present invention is preferably utilized on any well-known computer system, such a personal computer. Consequently, the computer system will not be discussed in detail herein. It is also instructive to note that the images are either directly input into the computer system (for example by a digital camera) or digitized before input into the computer system (for example by scanning an original, such as a silver halide film).  
         [0038]     Referring to  FIG. 1 , there is illustrated a computer system  110  for implementing the present invention. Although the computer system  110  is shown for the purpose of illustrating a preferred embodiment, the present invention is not limited to the computer system  110  shown, but can be used on any electronic processing system such as found in home computers, kiosks, retail or wholesale photofinishing, or any other system for the processing of digital images. The computer system  110  includes a microprocessor-based unit  112  for receiving and processing software programs and for performing other processing functions. A display  114  is electrically connected to the microprocessor-based unit  112  for displaying user-related information associated with the software, e.g., by a graphical user interface. A keyboard  116  is also connected to the microprocessor based unit  112  for permitting a user to input information to the software. As an alternative to using the keyboard  116  for input, a mouse  118  can be used for moving a selector  120  on the display  114  and for selecting an item on which the selector  120  overlays, as is well known in the art.  
         [0039]     A compact disk-read only memory (CD-ROM)  124 , which typically includes software programs, is inserted into the microprocessor based unit for providing a way of inputting the software programs and other information to the microprocessor based unit  112 . In addition, a floppy disk  126  can also include a software program, and is inserted into the microprocessor-based unit  112  for inputting the software program. The compact disk-read only memory (CD-ROM)  124  or the floppy disk  126  can alternatively be inserted into externally located disk drive unit  122  which is connected to the microprocessor-based unit  112 . Still further, the microprocessor-based unit  112  can be programmed, as is well known in the art, for storing the software program internally. The microprocessor-based unit  112  can also have a network connection  127 , such as a telephone line, to an external network, such as a local area network or the Internet. A printer  128  can also be connected to the microprocessor-based unit  112  for printing a hardcopy of the output from the computer system  110 .  
         [0040]     Images can also be displayed on the display  114  via a personal computer card (PC card)  130 , such as, as it was formerly known, a PCMCIA card (based on the specifications of the Personal Computer Memory Card International Association) which contains digitized images electronically embodied in the PC card  130 . The PC card  130  is ultimately inserted into the microprocessor based unit  112  for permitting visual display of the image on the display  114 . Alternatively, the PC card  130  can be inserted into an externally located PC card reader  132  connected to the microprocessor-based unit  112 . Images can also be input via the compact disk  124 , the floppy disk  126 , or the network connection  127 . Any images stored in the PC card  130 , the floppy disk  126  or the compact disk  124 , or input through the network connection  127 , can have been obtained from a variety of sources, such as a digital camera (not shown) or a scanner (not shown). Images can also be input directly from a digital camera  134  via a camera docking port  136  connected to the microprocessor-based unit  112  or directly from the digital camera  134  via a cable connection  138  to the microprocessor-based unit  112  or via a wireless connection  140  to the microprocessor-based unit  112 .  
         [0041]     In accordance with the invention, the algorithm can be stored in any of the storage devices heretofore mentioned and applied to images in order to interpolate sparsely populated images.  
         [0042]      FIG. 2  is a high level diagram of the preferred embodiment. The digital camera  134  is responsible for creating an original digital red-green-blue-panchromatic (RGBP) color filter array (CFA) image  200 , also referred to as the digital RGBP CFA image or the RGBP CFA image. This image is considered to be a sparsely sampled image because each pixel in the image contains only one pixel value of red, green, blue, or panchromatic data. A copy of block  200  is passed to the low resolution RGB CFA image creation block  202 . Block  202  creates a digital low resolution RGB CFA image, also referred to as a low resolution RGB CFA image, from the RGBP CFA image. Another copy of block  200  is passed to the high resolution panchromatic image creation block  204 . Block  204  creates a digital high resolution panchromatic image also referred to as the high resolution panchromatic image from the RGBP CFA image. The output of block  204  is passed to the low resolution panchromatic image creation block  206 . Block  206  creates a digital low resolution panchromatic image, also referred to as a low resolution panchromatic image, from the high resolution panchromatic image. The output of block  206  and the output of block  202  are passed to the low resolution color differences creation block  208 . Block  208  creates a low resolution color differences image by subtracting the low resolution panchromatic image from the low resolution RGB CFA image. The output of block  208  is passed to the low resolution color differences image interpolation block  216 . Block  216  performs a Bayer CFA interpolation operation on the low resolution color differences. An example of such a Bayer CFA interpolation can be found in U.S. Pat. No. 5,506,619, Hamilton et al., though is should be apparent to those skilled in the art that other Bayer CFA interpolation methods can be used. The result of block  216  is a digital interpolated low resolution color differences image, also referred to as an interpolated low resolution color differences image, with three color difference values for each pixel. The output of block  216  is passed to the high resolution color differences creation block  210 . Block  210  creates a digital high resolution color differences image, also referred to as the high resolution color differences image, by bilinearly interpolating (upsizing) the low resolution color differences image. The output of block  210  and the output of block  204  are passed to the high resolution full color image creation block  212 . Block  212  creates a digital high resolution full color image also referred to as the high resolution full color image  214  by adding the high resolution panchromatic image to the high resolution color differences image.  
         [0043]      FIG. 3  is a more detailed diagram of the high resolution panchromatic image creation block  204  in  FIG. 2 . The RGBP CFA image  200  ( FIG. 2 ) is passed to the pixel neighborhood predictor computation block  300 . Block  300  computes a set of pixel neighborhood predictor values. The results of block  300  are passed to the pixel neighborhood classifier computation block  302 . Block  302  computes a set of pixel neighborhood classifier values with each classifier value corresponding to one of the predictor values computed in block  300 . The results of block  302  are passed to the direction of computation determination block  304 . Block  304  determines a preferred direction of computation based on the set of classifier values produced in block  302 . The result of block  304  and the results of block  300  are passed to the high resolution panchromatic pixel value computation block  306 . Block  306  selects an appropriate predictor value from the results of block  300  corresponding to the direction determined by block  304 . This selected predictor value then become the interpolated high resolution panchromatic pixel value. The results of block  306  become the output of block  204  ( FIG. 2 ).  
         [0044]      FIG. 4  is a region of pixels repeated throughout the RGBP CFA image block  200  ( FIG. 2 ). The salient aspect of  FIG. 4  is the two rows of panchromatic pixels are separated by alternating rows of red and green pixels and green and blue pixels.  
         [0045]      FIG. 5  is a region of pixels used by low resolution RGB CFA image creation block  202  ( FIG. 2 ) to produce the region of pixels illustrated in  FIG. 6 . The following expressions are used in the preferred embodiment to produce the pixel values in  FIG. 6 . 
   R′   1   =k ( R   1   +R   3   +R   5 )    G′   2   =k ( G   4   +G   6   +G   8 )    G′   3   =k ( G   9   +G   11   +G   13 )    B′   4   =k ( B   12   +B   14   +B   16 )  
 In these expression k is a scale factor to produce the desired pixel value range of the output values. Typical values for k are one-third to produce an average pixel value and one to produce a summed pixel value. It is noted that within the scope of this invention the creation of one pixel value from three pixel values is a form of subsampling. In an alternate embodiment of the present invention a different set of expressions for block  202  are used as follows. 
   R′   1   =k ( R   1   +R   3   +R   5 )    G′   2   =k ( G   2   +G   4   +G   6 )    G′   3   =k ( G   9   +G   11   +G   13 )    B′   4   =k ( B   10   +B   12   +B   14 )  
         [0046]      FIG. 7  is a region of pixels used by both the pixel neighborhood prediction computation block  300  ( FIG. 3 ) and the pixel neighborhood classifier computation block  302  ( FIG. 3 ). There are two sets of predictor values computed by block  300  ( FIG. 3 ). For the case when the central pixel of the pixel neighborhood is a green pixel, such as G 15  in  FIG. 7 , the following predictor values are computed. 
   p   slash =( P   10   +P   20 )/2    p   vertical =( P   9   +P   21 )/2    p   backslash =( P   8   +P   22 )/2  p horizontal =G 15    p left =G 15    p right =G 15      p   cubic =(− P   3 +4 P   9 +4 P   21   −P   27 )/6  
 For the case when the central pixel of the pixel neighborhood is not a green pixel, such as B 16  in  FIG. 7 , the following predictor values are computed. 
   p   slash =( P   11   +P   21 )/2    p   vertical =( P   10   +P   22 )/2    p   backslash =( P   9   +P   23 )/2    p   horizontal =( G   15   +G   17 )/2  p left =G 15    p right =G 17      p   cubic (− P   4 +4 P   10 +4 P   22   −P   28 )/6  
 There is one set of classifier values computed by block  302  ( FIG. 3 ). Though the color of the central pixel in a given neighborhood can be different, the same expressions are used for computing the classifiers. Two examples are now given. For the case when the central pixel of the pixel neighborhood is a green pixel, such as G 15  in  FIG. 7 , the following classifier values are computed. 
   c   slash   =|P   11   −P   21   |+|P   10   −P   20   |+|P   9   −P   19 |+|2 p   cubic   −P   10   −P   20 |/4    c   vertical   =|P   10   −P   22   |+|P   9   −P   21   |+|P   8   −P   20 |+|2 p   cubic   −P   9   −P   21 |/4    c   backslash   =|P   9   −P   23   |+|P   8   −P   22   |+|P   7   −P   21 |+|2 p   cubic   −P   8   −P   22 |/4    c   horizontal   =|B   14   −B   16   |+|P   8   −P   10   |+|P   20   −P   22 |+|2 G   15   −G   13   −G   17 |/8 +t   1      c   left   =|G   15   −G   13   |+|P   9   −P   21   |+|P   8   −P   20 |+|2 G   15   −G   13   −G   17 |/8 +t   2      c   right   =|G   15   −G   17   |+|P   9   −P   21   |+|P   10   −P   22 |+|2 G   15   −G   13   −G   17 |/8 +t   2    
 The values t 1  and t 2  are threshold values that are chosen to reduce, but not eliminate, the likelihood of c horizontal , c left , and c right  of being smaller than c slash , C vertical , or c backslash . Typical values for t 1  and t 2  are 20 and 40 for an 8-bit pixel value data range. For the case when the central pixel of the pixel neighborhood is not a green pixel, such as B 16  in  FIG. 7 , the following classifier values are computed. 
   c   slash   =|P   12   −P   22   |+|P   11   −P   21   |+|P   10   −P   20 |+|2 p   cubic   −P   11   −P   21 |/4    c   vertical   =|P   11   −P   23   |+|P   10   −P   22   |+|P   9   −P   21 |+|2 p   cubic   −P   10   −P   22 |/4    c   backslash   =|P   10   −P   24   |+|P   9   −P   23   |+|P   8   −P   22 |+|2 p   cubic   −P   9   −P   23 |/4    c   horizontal   =|G   15   −G   17   |+|P   9   −P   11   |+|P   21   −P   23 |+|2 B   16   −B   14   −B   18 8 +t   1      c   left   =|B   16   −B   14   |+|P   10   −P   22   |+|P   9   −P   21 |+2 B   16   −B   14   −B   18 /8 +t   2      c   right   =|B   16   −B   18   |+|P   10   −P   22   |+|P   11   −P   23 |+|2 B   16   −B   14   −B   18 |/8 +t   2    
 It should be noted that these expressions are substantially the same in both examples. For a red pixel centered neighborhood, one would take the classifiers from the second example and exchange red pixel values for blue pixel values. 
 
         [0047]     Returning to  FIG. 3 , the classifier values computed in block  302  are passed to the direction of computation determination block  304 . In block  304  each classifier value is compared to an activity threshold, t activity . A typical value for t activity  is 200 for an 8-bit pixel value data range. If all classifier values are greater than or equal to the activity threshold, then the direction of computation becomes a special case that is associated with the predictor value p cubic . Failing this first test, the classifier with the smallest value is determined. The direction associated with this classifier becomes the output of block  304 . The output of block  304  and the output of block  300  are passed to the high resolution panchromatic pixel value computation block  306 . In block  306  for each pixel neighborhood centered on a red, green, or blue pixel, the predictor value corresponding to the direction of computation determined in block  304  becomes the interpolated panchromatic value. A portion of the resulting high resolution panchromatic channel is illustrated in  FIG. 8 . In  FIG. 8  the values without subscripts represent original existing panchromatic values and the values with subscripts represent interpolated panchromatic values. Additionally,  FIG. 8  is a region of pixels used by low resolution panchromatic image creation block  206  ( FIG. 2 ) to produce the region of pixels illustrated in  FIG. 9 . The following expressions are used in the preferred embodiment to produce the pixel values in  FIG. 9 . 
 
 P′   1   =k ( P   1   +P   3   +P   5 ) 
 
 P′   2   =k ( P   4   +P   6   +P   8 ) 
 
 P′   3   =k ( P   9   +P   11   +P   13 ) 
 
 P′   4   =k ( P   12   +P   14   +P   16 ) 
 
 In these expression k is a scale factor to produce the desired pixel value range of the output values. Typically, k is one-third to produce an average pixel value. In an alternate embodiment of the present invention a different set of expressions for block  206  ( FIG. 2 ) is used as follows. 
 
 P′   1   =k ( P   1   +P   3   +P   5 ) 
 
 P′   2   =k ( P   2   +P   4   +P   6 ) 
 
 P′   3   =k ( P   9   +P   11   +P   13 ) 
 
 P′   4   =k ( P   10   +P   12   +P   14 ) 
 
         [0048]      FIG. 10  is a region of pixels created from the high resolution color differences creation block  210  ( FIG. 2 ). In  FIG. 10 , X 1  and X 4  represent existing color difference values in the low resolution color differences image created by block  208  ( FIG. 2 ). Interpolated color difference values X 2  and X 3  are computed in block  210  ( FIG. 2 ) with the following expressions: 
   X   2 =(2 X   1   +X   4 )/3    X   3 =( X   1 +2 X   4 )/3  
 As is standard practice for bilinear interpolation, this operation is first performed on each row to triple the amount of color difference values in each row. The computation is then repeated in the vertical direction on each column to triple the amount of color difference values in each column. The output of block  210  is sent to the high resolution full color image creation block  212 . 
 
         [0049]     An alternate embodiment of the present invention is now described.  FIG. 2  and  FIG. 3  are as in the preferred embodiment.  FIG. 11  is an alternate region of pixels repeated throughout the RGBP CFA image block  200  ( FIG. 2 ). The salient aspect of  FIG. 11  is that two rows of panchromatic pixels are separated by alternating rows of three adjacent red then three adjacent green pixels and three adjacent green and then three adjacent blue pixels.  
         [0050]      FIG. 12  is an alternate region of pixels used by low resolution RGB CFA image creation block  202  ( FIG. 2 ) to produce the region of pixels illustrated in  FIG. 6 . The following expressions are used in this alternate embodiment to produce the pixel values in  FIG. 6 . 
   R′   1   =k ( R   11   +R   12   +R   13 )    G′   2   =k ( G   14   +G   15   +G   16 )    G′   3   =k ( G   21   +G   22   +G   23 )    B′   4   =k ( B   24   +B   25   +B   26 )  
         [0051]     In these expression k is a scale factor to produce the desired pixel value range of the output values. Typical values for k are one-third to produce an average pixel value and one to produce a summed pixel value. It is noted that within the scope of this invention the creation of one pixel value from three pixel values is a form of subsampling.  
         [0052]      FIG. 13  is an alternate region of pixels used by both the pixel neighborhood prediction computation block  300  ( FIG. 3 ) and the pixel neighborhood classifier computation block  302  ( FIG. 3 ). For the case when the central pixel of the pixel neighborhood is a blue or red pixel, such as B 33  in  FIG. 13 , the following predictor values are computed.  
         P   slash     =       (       P   42     +     P   24       )     /   2                   P   vertical     =       (       P   23     +     P   43       )     /   2                   P   backslash     =       (       P   22     +     P   44       )     /   2                   P   horizontal     =     {                   (       3   ⁢     G   31       +     G   35       )     /   4     ,           for   ⁢           ⁢     B   32                     (       G   31     +     G   35       )     /   2     ,           for   ⁢           ⁢     B   33                     (       G   31     +     3   ⁢     G   35         )     /   4     ,           for   ⁢           ⁢     B   34             ⁢     
     ⁢     P   left       =           (       P   23     +     R   43       )     /   2     ⁢     
     ⁢     P   right       =           (       P   23     +     P   43       )     /   2     ⁢     
     ⁢     P   cubic       =       (       -     P   13       +     4   ⁢     P   23       +     4   ⁢     P   43       -     P   53       )     /   6                   
 For the case when the central pixel of the pixel neighborhood is a green pixel, then p horizontal  becomes simply the green central pixel value. There is one set of classifier values computed by block  302  ( FIG. 3 ). Though the color of the central pixel in a given neighborhood can be different, the same expressions are used for computing the classifiers. Returning to  FIG. 13 , the central pixel of the pixel neighborhood is B 33  for which the following classifier values are computed.  
         c   slash     =              P   25     -     P   43            +            P   24     -     P   42            +            P   23     -     P   41            +              2   ⁢     p   cubic       -     P   24     -     P   42            /   4                     c   vertical     =              P   24     -     P   44            +            P   23     -     P   43            +            P   22     -     P   42            +              2   ⁢     p   cubic       -     P   23     -     P   43            /   4                     c   backslash     =              P   23     -     P   45            +            P   22     -     P   44            +            P   21     -     P   43            +              2   ⁢     p   cubic       -     P   22     -     P   44            /   4                     c   horizontal     =         3   2     ⁢     (              P   22     -     P   24            +            P   42     -     P   44              )       +     t   1                     c   left     =         3   2     ⁢     (              P   23     -     P   43            +            P   22     -     P   42              )       +     t   2                     c   right     =         3   2     ⁢     (              P   23     -     P   43            +            P   24     -     P   44              )       +     t   2             
 The values t 1  and t 2  are threshold values that are chosen to reduce, but not eliminate, the likelihood of c horizontal , c left , and c right  of being smaller than c slash , c vertical , or c backslash . Typical values for t 1  and t 2  are 50 and 50 for an 8-bit pixel value data range. 
 
         [0053]     Returning to  FIG. 3 , the classifier values computed in block  302  are passed to the direction of computation determination block  304 . In block  304  each classifier value is compared to an activity threshold, t activity . A typical value for t activity  is 200 for an 8-bit pixel value data range. If all classifier values are greater than or equal to the activity threshold, then the direction of computation becomes a special case that is associated with the predictor value p cubic . Failing this first test, the classifier with the smallest value is determined. The direction associated with this classifier becomes the output of block  304 . The output of block  304  and the output of block  300  are passed to the high resolution panchromatic pixel value computation block  306 . In block  306  for each pixel neighborhood centered on a red, green, or blue pixel, the predictor value corresponding to the direction of computation determined in block  304  becomes the interpolated panchromatic value. A portion of the resulting high resolution panchromatic channel is illustrated in  FIG. 8 . In  FIG. 8  the values without subscripts represent original existing panchromatic values and the values with subscripts represent interpolated panchromatic values. Additionally,  FIG. 8  is a region of pixels used by low resolution panchromatic image creation block  206  ( FIG. 2 ) to produce the region of pixels illustrated in  FIG. 9 . The following expressions are used in the preferred embodiment to produce the pixel values in  FIG. 9 . 
 
 P′   1   =k ( P   1   +P   3   +P   5 ) 
 
 P′   2   =k ( P   4   +P   6   +P   8 ) 
 
 P′   3   =k ( P   9   +P   11   +P   13 ) 
 
 P′   4   =k ( P   12   +P   14   +P   16 ) 
 
 In these expression k is a scale factor to produce the desired pixel value range of the output values. Typically, k is one-third to produce an average pixel value. In an alternate embodiment of the present invention a different set of expressions for block  206  ( FIG. 2 ) is used as follows. 
 
 P′   1   =k ( P   1   +P   3   +P   5 ) 
 
 P′   2   =k ( P   2   +P   4   +P   6 ) 
 
 P′   3   =k ( P   9   +P   11   +P   13 ) 
 
 P′   4   =k ( P   10   +P   12   +P   14 ) 
 
         [0054]      FIG. 10  is a region of pixels created from the high resolution color differences creation block  210  ( FIG. 2 ). In  FIG. 10 , X 1  and X 4  represent existing color difference values in the low resolution color differences image created by block  208  ( FIG. 2 ). Interpolated color difference values X 2  and X 3  are computed in block  210  ( FIG. 2 ) with the following expressions: 
   X   2 =(2 X   1   +X   4 )/3    X   3 =( X   1 +2 X   4 )/3  
 As is standard practice for bilinear interpolation, this operation is first performed on each row to triple the amount of color difference values in each row. The computation is then repeated in the vertical direction on each column to triple the amount of color difference values in each column. The output of block  210  is sent to the high resolution full color image creation block  212 . 
 
         [0055]     A second alternate embodiment of the present invention is now described.  FIG. 2  and  FIG. 3  are as in the preferred embodiment.  FIG. 14  is an alternate region of pixels repeated throughout the RGBP CFA image block  200  ( FIG. 2 ). The salient aspect of  FIG. 14  is that single rows of panchromatic pixels are separated by alternating rows of four adjacent red then four adjacent green pixels and four adjacent green and then four adjacent blue pixels.  
         [0056]      FIG. 15  is an alternate region of pixels used by low resolution RGB CFA image creation block  202  ( FIG. 2 ) to produce the region of pixels illustrated in  FIG. 6 . The following expressions are used in this alternate embodiment to produce the pixel values in  FIG. 6 . 
   R′   1   =k ( R   11   +R   12   +R   13   +R   14   +R   21   +R   22   +R   23   +R   24 )    G′   2   =k ( G   15   +G   16   +G   17   +G   18   +G   25   +G   26   +G   27   +G   28 )    G′   3   =k ( G   31   +G   32   +G   33   +G   34   +G   41   +G   42   +G   43   +G   44 )    B′   4   =k ( B   35   +B   36   +B   37   +B   38   +B   45   +B   46   +B   47   +B   48 )  
         [0057]     In these expression k is a scale factor to produce the desired pixel value range of the output values. Typical values for k are one-eighth to produce an average pixel value and one to produce a summed pixel value. It is noted that within the scope of this invention the creation of one pixel value from eight pixel values is a form of subsampling.  
         [0058]      FIG. 16  shows four alternate regions of pixels used by both the pixel neighborhood prediction computation block  300  ( FIG. 3 ) and the pixel neighborhood classifier computation block  302  ( FIG. 3 ). For the case when one of the central pixels of the pixel neighborhood is a blue pixel, such as B 24  in  FIG. 16A , the following predictor values are computed.  
         p   slash     =     {                   (       P   31     +     P   13       )     /   2     ,           for   ⁢           ⁢     B   22                     (       P   32     +     P   14       )     /   2     ,           for   ⁢           ⁢     B   23                     (       P   33     +     P   15       )     /   2     ,           for   ⁢           ⁢     B   24                     (       P   34     +     P   16       )     /   2     ,           for   ⁢           ⁢     B   25             ⁢     
     ⁢     p   vertical       =     {                   (       P   12     +     P   32       )     /   2     ,           for   ⁢           ⁢     B   22                     (       P   13     +     P   33       )     /   2     ,           for   ⁢           ⁢     B   23                     (       P   14     +     P   34       )     /   2     ,           for   ⁢           ⁢     B   24                     (       P   15     +     P   35       )     /   2     ,           for   ⁢           ⁢     B   25             ⁢     
     ⁢     p   backlash       =     {                   (       P   11     +     P   33       )     /   2     ,           for   ⁢           ⁢     B   22                     (       P   12     +     P   34       )     /   2     ,           for   ⁢           ⁢     B   23                     (       P   13     +     P   35       )     /   2     ,           for   ⁢           ⁢     B   24                     (       P   14     +     P   36       )     /   2     ,           for   ⁢           ⁢     B   25             ⁢     
     ⁢     p   horizontal       =     {               6   ⁢     G   21       +     3   ⁢     R   41       +     B   22       ,           for   ⁢           ⁢     B   22                     6   ⁢     G   21       +     3   ⁢     R   41       +     B   23       ,           for   ⁢           ⁢     B   23                     6   ⁢     G   26       +     3   ⁢     R   46       +     B   24       ,           for   ⁢           ⁢     B   24                     6   ⁢     G   26       +     3   ⁢     R   46       +     B   25       ,           for   ⁢           ⁢     B   25                                 
 For the case when one of the central pixels of the pixel neighborhood is a red pixel, such as R 24  in  FIG. 16B , the following predictor values are computed predictor values are computed.  
         p   slash     =     {                   (       P   31     +     P   13       )     /   2     ,           for   ⁢           ⁢     R   22                     (       P   32     +     P   14       )     /   2     ,           for   ⁢           ⁢     R   23                     (       P   33     +     P   15       )     /   2     ,           for   ⁢           ⁢     R   24                     (       P   34     +     P   16       )     /   2     ,           for   ⁢           ⁢     R   25             ⁢     
     ⁢     p   vertical       =     {                   (       P   12     +     P   32       )     /   2     ,           for   ⁢           ⁢     R   22                     (       P   13     +     P   33       )     /   2     ,           for   ⁢           ⁢     R   23                     (       P   14     +     P   34       )     /   2     ,           for   ⁢           ⁢     R   24                     (       P   15     +     P   35       )     /   2     ,           for   ⁢           ⁢     R   25             ⁢     
     ⁢     p   backslash       =     {                   (       P   11     +     P   33       )     /   2     ,           for   ⁢           ⁢     R   22                     (       P   12     +     P   34       )     /   2     ,           for   ⁢           ⁢     R   23                     (       P   13     +     P   35       )     /   2     ,           for   ⁢           ⁢     R   24                     (       P   14     +     P   36       )     /   2     ,           for   ⁢           ⁢     R   25             ⁢     
     ⁢     p   horizontal       =     {               6   ⁢     G   21       +     3   ⁢     R   22       +     B   41       ,           for   ⁢           ⁢     R   22                     6   ⁢     G   21       +     3   ⁢     R   23       +     B   41       ,           for   ⁢           ⁢     R   23                     6   ⁢     G   26       +     3   ⁢     R   24       +     B   46       ,           for   ⁢           ⁢     R   24                     6   ⁢     G   26       +     3   ⁢     R   25       +     B   46       ,           for   ⁢           ⁢     R   25                                 
 For the case when one of the central pixels of the pixel neighborhood is a green pixel, such as G 24  in  FIG. 16C , the following predictor values are computed predictor values are computed.  
         p   slash     =     {                   (       P   31     +     P   13       )     /   2     ,           for   ⁢           ⁢     G   22                     (       P   32     +     P   14       )     /   2     ,           for   ⁢           ⁢     G   23                     (       P   33     +     P   15       )     /   2     ,           for   ⁢           ⁢     G   24                     (       P   34     +     P   16       )     /   2     ,           for   ⁢           ⁢     G   25             ⁢     
     ⁢     p   vertical       =     {                   (       P   12     +     P   32       )     /   2     ,           for   ⁢           ⁢     G   22                     (       P   13     +     P   33       )     /   2     ,           for   ⁢           ⁢     G   23                     (       P   14     +     P   34       )     /   2     ,           for   ⁢           ⁢     G   24                     (       P   15     +     P   35       )     /   2     ,           for   ⁢           ⁢     G   25             ⁢     
     ⁢     p   backslash       =     {                   (       P   11     +     P   33       )     /   2     ,           for   ⁢           ⁢     G   22                     (       P   12     +     P   34       )     /   2     ,           for   ⁢           ⁢     G   23                     (       P   13     +     P   35       )     /   2     ,           for   ⁢           ⁢     G   24                     (       P   14     +     P   36       )     /   2     ,           for   ⁢           ⁢     G   25             ⁢     
     ⁢     p   horizontal       =     {               6   ⁢     G   22       +     3   ⁢     R   42       +     B   21       ,           for   ⁢           ⁢     G   22                     6   ⁢     G   23       +     3   ⁢     R   43       +     B   21       ,           for   ⁢           ⁢     G   23                     6   ⁢     G   24       +     3   ⁢     R   44       +     B   26       ,           for   ⁢           ⁢     G   24                     6   ⁢     G   25       +     3   ⁢     R   45       +     B   26       ,           for   ⁢           ⁢     G   25                                 
 For the case when one of the central pixels of the pixel neighborhood is a green pixel, such as G 24  in  FIG. 16D , the following predictor values are computed predictor values are computed.  
         p   slash     =     {                   (       P   31     +     P   13       )     /   2     ,           for   ⁢           ⁢     G   22                     (       P   32     +     P   14       )     /   2     ,           for   ⁢           ⁢     G   23                     (       P   33     +     P   15       )     /   2     ,           for   ⁢           ⁢     G   24                     (       P   34     +     P   16       )     /   2     ,           for   ⁢           ⁢     G   25             ⁢     
     ⁢     p   vertical       =     {                   (       P   12     +     P   32       )     /   2     ,           for   ⁢           ⁢     G   22                     (       P   13     +     P   33       )     /   2     ,           for   ⁢           ⁢     G   23                     (       P   14     +     P   34       )     /   2     ,           for   ⁢           ⁢     G   24                     (       P   15     +     P   35       )     /   2     ,           for   ⁢           ⁢     G   25             ⁢     
     ⁢     p   backslash       =     {                   (       P   11     +     P   33       )     /   2     ,           for   ⁢           ⁢     G   22                     (       P   12     +     P   34       )     /   2     ,           for   ⁢           ⁢     G   23                     (       P   13     +     P   35       )     /   2     ,           for   ⁢           ⁢     G   24                     (       P   14     +     P   36       )     /   2     ,           for   ⁢           ⁢     G   25             ⁢     
     ⁢     p   horizontal       =     {               6   ⁢     G   22       +     3   ⁢     R   21       +     B   42       ,           for   ⁢           ⁢     G   22                     6   ⁢     G   23       +     3   ⁢     R   21       +     B   43       ,           for   ⁢           ⁢     G   23                     6   ⁢     G   24       +     3   ⁢     R   26       +     B   44       ,           for   ⁢           ⁢     G   24                     6   ⁢     G   25       +     3   ⁢     R   26       +     B   45       ,           for   ⁢           ⁢     G   25                                 
 There is one set of classifier values computed by block  302  ( FIG. 3 ). Though the color of the central pixel in a given neighborhood can be different, the same expressions are used for computing the classifiers. Referring to  FIG. 16A , the central pixel of the pixel neighborhood is B 24  and the following classifier values are computed.  
         c   slash     =     {                          P   30     -     P   12            +            P   31     -     P   13            +            P   32     -     P   14              ,           for   ⁢           ⁢     B   22                            P   31     -     P   13            +            P   32     -     P   14            +            P   33     -     P   15              ,           for   ⁢           ⁢     B   23                            P   32     -     P   14            +            P   33     -     P   15            +            P   34     -     P   16              ,           for   ⁢           ⁢     B   24                            P   33     -     P   15            +            P   34     -     P   16            +            P   35     -     P   17              ,           for   ⁢           ⁢     B   25             ⁢     
     ⁢     c   vertical       =     {                          P   11     -     P   31            +            P   12     -     P   32            +            P   13     -     P   33              ,           for   ⁢           ⁢     B   22                            P   12     -     P   32            +            P   13     -     P   33            +            P   14     -     P   34              ,           for   ⁢           ⁢     B   23                            P   13     -     P   33            +            P   14     -     P   34            +            P   15     -     P   35              ,           for   ⁢           ⁢     B   24                            P   15     -     P   34            +            P   15     -     P   35            +            P   16     -     P   36              ,           for   ⁢           ⁢     B   25             ⁢     
     ⁢     c   backlash       =     {                          P   10     -     P   32            +            P   11     -     P   33            +            P   12     -     P   34              ,           for   ⁢           ⁢     B   22                            P   11     -     P   33            +            P   12     -     P   34            +            P   13     -     P   35              ,           for   ⁢           ⁢     B   23                            P   12     -     P   34            +            P   13     -     P   35            +            P   14     -     P   36              ,           for   ⁢           ⁢     B   24                            P   13     -     P   35            +            P   14     -     P   36            +            P   15     -     P   37              ,           for   ⁢           ⁢     B   25             ⁢     
     ⁢     c   horizontal       =     {                      B   22     -     B   24            +            P   11     -     P   13            +            P   31     -     P   33            +   t     ,           for   ⁢           ⁢     B   22                            B   22     -     B   24            +            P   12     -     P   14            +            P   32     -     P   34            +   t     ,           for   ⁢           ⁢     B   23                            B   23     -     B   25            +            P   13     -     P   15            +            P   33     -     P   35            +   t     ,           for   ⁢           ⁢     B   24                            B   23     -     B   25            +            P   14     -     P   16            +            P   34     -     P   36            +   t     ,           for   ⁢           ⁢     B   25                                 
 The value t is a threshold value that is chosen to reduce, but not eliminate, the likelihood of c horizontal , of being smaller than c slash , c vertical  or c backslash . A typical values for t is 20 for an 8-bit pixel value data range. Referring to  FIG. 16B , the central pixel of the pixel neighborhood is R 24  and the following classifier values are computed.  
         c   slash     =     {                          P   30     -     P   12            +            P   31     -     P   13            +            P   32     -     P   14              ,           for   ⁢           ⁢     R   22                            P   31     -     P   13            +            P   32     -     P   14            +            P   33     -     P   15              ,           for   ⁢           ⁢     R   23                            P   32     -     P   14            +            P   33     -     P   15            +            P   34     -     P   16              ,           for   ⁢           ⁢     R   24                            P   33     -     P   15            +            P   34     -     P   16            +            P   35     -     P   17              ,           for   ⁢           ⁢     R   25             ⁢     
     ⁢     c   vertical       =     {                          P   11     -     P   31            +            P   12     -     P   32            +            P   13     -     P   33              ,           for   ⁢           ⁢     R   22                            P   12     -     P   32            +            P   13     -     P   33            +            P   14     -     P   34              ,           for   ⁢           ⁢     R   23                            P   13     -     P   33            +            P   14     -     P   34            +            P   15     -     P   35              ,           for   ⁢           ⁢     R   24                            P   15     -     P   34            +            P   15     -     P   35            +            P   16     -     P   36              ,           for   ⁢           ⁢     R   25             ⁢     
     ⁢     c   backlash       =     {                          P   10     -     P   32            +            P   11     -     P   33            +            P   12     -     P   34              ,           for   ⁢           ⁢     R   22                            P   11     -     P   33            +            P   12     -     P   34            +            P   13     -     P   35              ,           for   ⁢           ⁢     R   23                            P   12     -     P   34            +            P   13     -     P   35            +            P   14     -     P   36              ,           for   ⁢           ⁢     R   24                            P   13     -     P   35            +            P   14     -     P   36            +            P   15     -     P   37              ,           for   ⁢           ⁢     R   25             ⁢     
     ⁢     c   horizontal       =     {                      R   22     -     R   24            +            P   11     -     P   13            +            P   31     -     P   33            +   t     ,           for   ⁢           ⁢     R   22                            R   22     -     R   24            +            P   12     -     P   14            +            P   32     -     P   34            +   t     ,           for   ⁢           ⁢     R   23                            R   23     -     R   25            +            P   13     -     P   15            +            P   33     -     P   35            +   t     ,           for   ⁢           ⁢     R   24                            R   23     -     R   25            +            P   14     -     P   16            +            P   34     -     P   36            +   t     ,           for   ⁢           ⁢     R   25                                 
 The value t is a threshold value that is chosen to reduce, but not eliminate, the likelihood of c horizontal , of being smaller than c slash , c vertical , or c backslash . A typical values for t is 20 for an 8-bit pixel value data range. Referring to  FIG. 16C , the central pixel of the pixel neighborhood is G 24  and the following classifier values are computed.  
         c   slash     =     {                          P   30     -     P   12            +            P   31     -     P   13            +            P   32     -     P   14              ,           for   ⁢           ⁢     G   22                            P   31     -     P   13            +            P   32     -     P   14            +            P   33     -     P   15              ,           for   ⁢           ⁢     G   23                            P   32     -     P   14            +            P   33     -     P   15            +            P   34     -     P   16              ,           for   ⁢           ⁢     G   24                            P   33     -     P   15            +            P   34     -     P   16            +            P   35     -     P   17              ,           for   ⁢           ⁢     G   25             ⁢     
     ⁢     c   vertical       =     {                          P   11     -     P   31            +            P   12     -     P   32            +            P   13     -     P   33              ,           for   ⁢           ⁢     G   22                            P   12     -     P   32            +            P   13     -     P   33            +            P   14     -     P   34              ,           for   ⁢           ⁢     G   23                            P   13     -     P   33            +            P   14     -     P   34            +            P   15     -     P   35              ,           for   ⁢           ⁢     G   24                            P   15     -     P   34            +            P   15     -     P   35            +            P   16     -     P   36              ,           for   ⁢           ⁢     G   25             ⁢     
     ⁢     c   backlash       =     {                          P   10     -     P   32            +            P   11     -     P   33            +            P   12     -     P   34              ,           for   ⁢           ⁢     G   22                            P   11     -     P   33            +            P   12     -     P   34            +            P   13     -     P   35              ,           for   ⁢           ⁢     G   23                            P   12     -     P   34            +            P   13     -     P   35            +            P   14     -     P   36              ,           for   ⁢           ⁢     G   24                            P   13     -     P   35            +            P   14     -     P   36            +            P   15     -     P   37              ,           for   ⁢           ⁢     G   25             ⁢     
     ⁢     c   horizontal       =     {                      G   22     -     G   24            +            P   11     -     P   13            +            P   31     -     P   33            +   t     ,           for   ⁢           ⁢     G   22                            G   22     -     G   24            +            P   12     -     P   14            +            P   32     -     P   34            +   t     ,           for   ⁢           ⁢     G   23                            G   23     -     G   25            +            P   13     -     P   15            +            P   33     -     P   35            +   t     ,           for   ⁢           ⁢     G   24                            G   23     -     G   25            +            P   14     -     P   16            +            P   34     -     P   36            +   t     ,           for   ⁢           ⁢     G   25                                 
 The value t is a threshold value that is chosen to reduce, but not eliminate, the likelihood of c horizontal , of being smaller than c slash , c vertical , or c backslash . A typical value for t is 20 for an 8-bit pixel value data range. 
 
         [0059]     Returning to  FIG. 3 , the classifier values computed in block  302  are passed to the direction of computation determination block  304 . In block  304  each classifier value is compared to an activity threshold, t activity . A typical value for t activity  is 200 for an 8-bit pixel value data range. If all classifier values are greater than or equal to the activity threshold, then the direction of computation becomes a special case that is associated with the predictor value p cubic . Failing this first test, the classifier with the smallest value is determined. The direction associated with this classifier becomes the output of block  304 . The output of block  304  and the output of block  300  are passed to the high resolution panchromatic pixel value computation block  306 . In block  306  for each pixel neighborhood centered on a red, green, or blue pixel, the predictor value corresponding to the direction of computation determined in block  304  becomes the interpolated panchromatic value. A portion of the resulting high resolution panchromatic channel is illustrated in  FIG. 17 . In  FIG. 17  the values without subscripts represent original existing panchromatic values and the values with subscripts represent interpolated panchromatic values. Additionally,  FIG. 17  is a region of pixels used by low resolution panchromatic image creation block  206  ( FIG. 2 ) to produce the region of pixels illustrated in  FIG. 9 . The following expressions are used in the preferred embodiment to produce the pixel values in  FIG. 9 . 
 
 P′   1   =k ( P   20   +P   21   +P   22   +P   23   +P   40   +P   41   +P   42   +P   43 ) 
 
 P′   2   =k ( P   24   +P   25   +P   26   +P   27   +P   44   +P   45   +P   46   +P   47 ) 
 
 P′   3   =k ( P   60   +P   61   +P   62   +P   63   +P   80   +P   81   +P   82   +P   83 ) 
 
 P′   4   =k ( P   64   +P   65   +P   66   +P   67   +P   84   +P   85   +P   86   +P   87 ) 
 
         [0060]     In these expression k is a scale factor to produce the desired pixel value range of the output values. Typically, k is one-eighth to produce an average pixel value.  
         [0061]      FIG. 18  is a region of pixels created from the high resolution color differences creation block  210  ( FIG. 2 ). In  FIG. 18 , X 1  and X 5  represent existing color difference values in the low resolution color differences image created by block  208  ( FIG. 2 ). Interpolated color difference values X 2 , X 3 , and X 4  are computed in block  210  ( FIG. 2 ) with the following expressions: 
   X   2 =(3 X   1   +X   5 )/4    X   3 =( X   1   +X   5 )/2    X   4 =( X   1 +3 X   5 )/4  
 As is standard practice for bilinear interpolation, this operation is first performed on each row to triple the amount of color difference values in each row. The computation is then repeated in the vertical direction on each column to triple the amount of color difference values in each column. The output of block  210  is sent to the high resolution full color image creation block  212 . 
 
         [0062]     A third alternate embodiment of the present invention is now described.  FIG. 2  and  FIG. 3  are as in the preferred embodiment.  FIG. 19  is an alternate region of pixels repeated throughout the RGBP CFA image block  200  ( FIG. 2 ). The salient aspect of  FIG. 19  is that alternating single rows and single columns of panchromatic pixels are separated by isolated red, green, and blue pixels.  
         [0063]      FIG. 20  is an alternate region of pixels used by low resolution RGB CFA image creation block  202  ( FIG. 2 ) to produce the region of pixels illustrated in  FIG. 6 . The following expressions are used in this alternate embodiment to produce the pixel values in  FIG. 6 . 
   R′   1   =k ( R   11   +R   12   +R   21   +R   22 )    G′   2   =k ( G   13   +G   14   +G   23   +G   24 )    G′   3   =k ( G   31   +G   32   +G   41   +G   42 )    B′   4   =k ( B   33   +B   34   +B   43   +B   44 )  
         [0064]     In these expression k is a scale factor to produce the desired pixel value range of the output values. Typical values for k are one-fourth to produce an average pixel value and one to produce a summed pixel value. It is noted that within the scope of this invention the creation of one pixel value from four pixel values is a form of subsampling.  
         [0065]      FIG. 21  shows an alternate region of pixels used by both the pixel neighborhood prediction computation block  300  ( FIG. 3 ) and the pixel neighborhood classifier computation block  302  ( FIG. 3 ). The central pixel, X 22 , is either a red, green, or blue pixel. For the alternate region of pixels, the following predictor values are computed. 
   p   slash =( P   31   +P   13 )/2+└(− P   31   +P   21   +P   12   −P   13 )+(− P   13   +P   23   +P   32   −P   31 )┘/16    p   vertical =( P   12   +P   32 )/2+└(− P   11 +2 P   21   −P   31 )+(− P   33 +2 P   23   −P   13 )┘/16    p   backslash =( P   11   +P   33 )/2+└(− P   11   +P   21   +P   32   −P   33 )+(− P   33   +P   23   +P   12   −P   11 )┘/16    p   horizontal =( P   21   +P   23 )/2+└(− P   31 +2 P   32   −P   33 )+(−P 11 +2 P   12   −P   13 )┘/16    p   flat =( P   11   +P   12   +P   21   +P   23   +P   31   +P   32   +P   33 )/8  
 For the same alternate region of pixels, the following classifiers are computed. 
   c   slash   =|P   21   −P   12   |+|P   31   −P   13   |+|P   32   −P   23   |+|−P   31   +P   21   +P   12   −P   13   |+|−P   31   +P   32   +P   23   −P   13 |   c   vertical   =|P   11   −P   31   |+|P   12   −P   32   |+|P   13   −P   33   |+|−P   11 +2 P   21   −P   31   |+|−P   13 +2 P   23   −P   33 |   c   backslash   =|P   11   −P   33   |+|P   12   −P   23   |+|P   21   −P   32   |+|−P   11   +P   21   +P   32   −P   33   |+|−P   11   +P   12   +P   23   −P   33 |   c   horizontal   =|P   11   −P   13   |+|P   21   −P   23   |+|P   31   −P   33   |+|−P   11 +2 P   12   −P   13   |+|−P   31 +2 P   32   −P   33 | 
         [0066]     Returning to  FIG. 3 , the classifier values computed in block  302  are passed to the direction of computation determination block  304 . In block  304  each classifier value is compared to an activity threshold, t activity . A typical value for t activity  is 160 for an 8-bit pixel value data range. If all classifier values are less than or equal to the activity threshold, then the direction of computation becomes a special case that is associated with the predictor value p flat . Failing this first test, the classifier with the smallest value is determined. The direction associated with this classifier becomes the output of block  304 . The output of block  304  and the output of block  300  are passed to the high resolution panchromatic pixel value computation block  306 . In block  306  for each pixel neighborhood centered on a red, green, or blue pixel, the predictor value corresponding to the direction of computation determined in block  304  becomes the interpolated panchromatic value. A portion of the resulting high resolution panchromatic channel is illustrated in  FIG. 22 . In  FIG. 22  the values without subscripts represent original existing panchromatic values and the values with subscripts represent interpolated panchromatic values. Additionally,  FIG. 22  is a region of pixels used by low resolution panchromatic image creation block  206  ( FIG. 2 ) to produce the region of pixels illustrated in  FIG. 9 . The following expressions are used in the preferred embodiment to produce the pixel values in  FIG. 9 . 
 
 P′   1   =k ( P   11   +P   12   +P   21   +P   22 ) 
 
 P′   2   =k ( P   13   +P   14   +P   23   +P   24 ) 
 
 P′   3   =k ( P   31   +P   32   +P   41   +P   42 ) 
 
 P′   4   =k ( P   33   +P   34   +P   43   +P   44 ) 
 
         [0067]     In these expression k is a scale factor to produce the desired pixel value range of the output values. Typically, k is one-fourth to produce an average pixel value.  
         [0068]      FIG. 18  is a region of pixels created from the high resolution color differences creation block  210  ( FIG. 2 ). In  FIG. 18 , X 1  and X 5  represent existing color difference values in the low resolution color differences image created by block  208  ( FIG. 2 ). Interpolated color difference values X 2 , X 3 , and X 4  are computed in block  210  ( FIG. 2 ) with the following expressions: 
   X   2 =(3 X   1   +X   5 )/4    X   3 =( X   1   +X   5 )/2    X   4 =( X   1 +3 X   5 )/4  
 As is standard practice for bilinear interpolation, this operation is first performed on each row to triple the amount of color difference values in each row. The computation is then repeated in the vertical direction on each column to triple the amount of color difference values in each column. The output of block  210  is sent to the high resolution full color image creation block  212 . 
 
         [0069]     The interpolation algorithm disclosed in the preferred embodiment(s) of the present invention can be employed in a variety of user contexts and environments. Exemplary contexts and environments include, without limitation, wholesale digital photofinishing (which involves exemplary process steps or stages such as film in, digital processing, prints out), retail digital photofinishing (film in, digital processing, prints out), home printing (home scanned film or digital images, digital processing, prints out), desktop software (software that applies algorithms to digital prints to make them better—or even just to change them), digital fulfillment (digital images in—from media or over the web, digital processing, with images out—in digital form on media, digital form over the web, or printed on hard-copy prints), kiosks (digital or scanned input, digital processing, digital or scanned output), mobile devices (e.g., PDA or cell phone that can be used as a processing unit, a display unit, or a unit to give processing instructions), and as a service offered via the World Wide Web.  
         [0070]     In each case, the interpolation algorithm can stand alone or can be a component of a larger system solution. Furthermore, the interfaces with the algorithm, e.g., the scanning or input, the digital processing, the display to a user (if needed), the input of user requests or processing instructions (if needed), the output, can each be on the same or different devices and physical locations, and communication between the devices and locations can be via public or private network connections, or media based communication. Where consistent with the foregoing disclosure of the present invention, the algorithm itself can be fully automatic, can have user input (be fully or partially manual), can have user or operator review to accept/reject the result, or can be assisted by metadata (metadata that can be user supplied, supplied by a measuring device (e.g. in a camera), or determined by an algorithm). Moreover, the algorithm can interface with a variety of workflow user interface schemes.  
         [0071]     The interpolation algorithm disclosed herein in accordance with the invention can have interior components that utilize various data detection and reduction techniques (e.g., face detection, eye detection, skin detection, flash detection)  
         [0072]     The invention has been described in detail with particular reference to certain preferred embodiments thereof, but it will be understood that variations and modifications can be effected within the spirit and scope of the invention.  
       PARTS LIST  
       [0000]    
       
           110  Computer System  
           112  Microprocessor-based Unit  
           114  Display  
           116  Keyboard  
           118  Mouse  
           120  Selector on Display  
           122  Disk Drive Unit  
           124  Compact Disk-read Only Memory (CD-ROM)  
           126  Floppy Disk  
           127  Network Connection  
           128  Printer  
           130  Personal Computer Card (PC card)  
           132  PC Card Reader  
           134  Digital Camera  
           136  Camera Docking Port  
           138  Cable Connection  
           140  Wireless Connection  
           200  RGBP CFA Image  
           202  Low Resolution RGB CFA Image Creation  
           204  High Resolution Panchromatic Image Creation  
           206  Low Resolution Panchromatic Image Creation  
           208  Low Resolution Color Differences Creation  
           210  High Resolution Color Differences Creation  
           212  High Resolution Full Color Image Creation  
           214  High Resolution Full Color Image  
           216  Low Resolution Color Differences Image Interpolation  
           300  Pixel Neighborhood Predictor Computation  
           302  Pixel Neighborhood Classifier Computation  
           304  Direction of Computation Determination  
           306  High Resolution Panchromatic Pixel Value Computation