Abstract:
A method for neutral pixel detection using color space feature vectors wherein one color space coordinate represents lightness is provided. The method includes the following steps: a) receiving an input image represented in a first color space; b) converting the input image to a second color space wherein one coordinate represents lightness; c) selecting a pixel in the second color space representation to be classified; d) computing second color space feature vectors associated with the selected pixel; and e) classifying the selected pixel between neutral and color classes based on the values computed for the second color space feature vectors. Typically, the input image is processed using a smoothing filter to create a smoothed input image prior to the conversion to the second color space. The method can be adapted to page processing or strip processing schemes with respect to the input image.

Description:
BACKGROUND OF INVENTION  
         [0001]    The invention relates to neutral color detection. It finds particular application in conjunction with neutral pixel detection in image data using color space feature vectors wherein one color space coordinate represents lightness and will be described with particular reference thereto. However, it is to be appreciated that the invention is also amenable to other applications.  
           [0002]    Neutral colors include black, white, gray, and colors containing a predetermined amount of gray. In a three-dimensional color space where one of the color space coordinates represents lightness (i.e., luminance), neutral colors are grouped on or near the lightness axis of the color space. One such color space is commonly known as the L*a*b* color space.  
           [0003]    In the L*a*b* color space, values L*, a*, and b* are plotted at right angles to one another to form a three dimensional coordinate system. Equal distances in the color space represent equal color differences. Value L* represents a position with respect to a lightness (i.e., L*) axis; value a* represents a position with respect to a redness/greenness (i.e., a*) axis; and value b* represents a position with respect to a yellowness/blueness (i.e., b*) axis. The L*a*b* color space is also referred to as CIELAB, CIE L*a*b*, or CIE Lab. CIE (Commission International de L&#39;Eclairage) is an international commission on illumination that is the main international organization concerned with color and color measurement.  
           [0004]    In color image processing, reproduction, recording and the like, a page of image data is read and typically a three-color, cyan-magenta-yellow (CMY), system is employed for rendering. Optionally, a fourth color, black (K), is included. Generally, combinations of the colors CMY are applied in relative proportions to produce the color portions of the image. Additionally, the CMY colors can be applied to produce a resultant black. However, the resultant black achieved by combining the CMY colors is not as high quality as that achieved with the true black (K). Chromatic noise, misregistration, and the like can degrade the quality of black images generated by a CMY resultant black application. Moreover, multiple CMY passes are relatively more time consuming compared to a K pass, and they increase the depletion of CMY inks and/or toners. Generally, these and other inherent constraints, limitations, and/or reproduction demands associated with color processing and/or printing make it desirable to limit CMY utilization where possible.  
           [0005]    In the past, there have been developed techniques for determining if input pages are neutral in color (i.e. black and white, or monochromatic) to thereby reduce CMY utilization where it was not necessary. For example, in U.S. Pat. No. 5,287,204 to Koizumi et al. and U.S. Pat. No. 5,282,026 to Nagata, both incorporated herein by reference, such techniques are disclosed. However, both references achieve limited results. That is to say, the references are directed to detecting at the page level and determining if an input page is neutral in color. Generally with these techniques, each page as a whole is classified as color or neutral, which results in either the whole page undergoing color processing or none of the page undergoing color processing. As such, these approaches fail to address, for example, chromatic noise in a neutral region of an otherwise color page. Moreover, no provisions are made for high quality neutral detail, such as text, that may be located in a color page or region thereof.  
           [0006]    A more recent method of neutral color detection is disclosed in U.S. Pat. No. 6,249,592 to Fan et al., incorporated herein by reference. This method provides neutral color detection of a whole page or one or more regions in a page. This method includes reading an input page. The contents of the page are detected and it is determined if the page is neutral in color. If the page is not neutral in color, the page is then divided into a number of regions. Each region is then detected, and a determination is made if individual regions are neutral in color. Next, details located outside regions determined to be neutral in color are detected and it is determined if the details are neutral in color. This multi-resolution technique permits the full page, an individual region, and/or particular details to be processed without the constraints, limitations, and reproduction demands associated with their color counterparts. However, a drawback of this method is that it requires the computation of images at multiple resolutions in order to judge whether a region is neutral or not. This can be time consuming in applications.  
           [0007]    Color image paths in copiers, scanners, and printers must maintain performance at a certain page per minute (ppm) level (for example, but not limited to, 20-100 ppm). Image processing within the color image path requires substantial storage space (e.g., 90 Mbytes per page). If an entire document image is deemed neutral, color image processing can be bypassed, saving time, memory, and color ink or toner. If a region of a document image is deemed neutral, the image can be processed using a halftoning algorithm selected to increase image quality. If a pixel in a document image is deemed neutral, the pixel can be printed with black ink or toner.  
         BRIEF SUMMARY OF INVENTION  
         [0008]    Thus, there is a particular need for a method of neutral pixel detection. The invention contemplates a method for neutral pixel detection that overcomes at least one of the above-mentioned problems and others.  
           [0009]    In one aspect of the invention, a method for classifying a pixel between neutral and color classes for use in color image processing is provided. The method includes the following steps: a) receiving an input image represented in a first color space; b) converting the input image to a second color space wherein one coordinate of the second color space represents lightness; c) selecting a pixel in the second color space representation of the input image to be classified; d) computing second color space feature vectors associated with the selected pixel; and e) classifying the selected pixel between neutral and color classes based on the values computed for the second color space feature vectors.  
           [0010]    In another aspect of the invention, a method for neutral pixel detection for use in color image processing is provided. The method includes the following steps: a) receiving an input image represented in a first color space; b) converting the input image to a second color space wherein one coordinate of the second color space represents lightness; c) selecting a pixel in the second color space representation of the input image; d) computing second color space feature vectors associated with the selected pixel; and e) detecting if the selected pixel is neutral based on the values computed for the second color space feature vectors.  
           [0011]    In yet another aspect of the invention, a method for classifying pixels of an input image between neutral and color classes for use in color image processing is provided. The method includes the following steps: a) receiving a first strip of an input image represented in a first color space wherein the strip is comprised of a plurality of scanlines; b) converting the input image strip to a second color space wherein one coordinate of the second color space represents lightness; c) selecting a first pixel in the second color space representation of the input image strip to be classified; d) computing second color space feature vectors associated with the selected pixel; e) classifying the selected pixel between neutral and color classes based on the values computed for the second color space feature vectors; f) determining if any additional pixels of the input image strip to be classified have not been classified; and g) if any additional pixels to be classified have not been classified, selecting a next pixel in the second color space representation of the input image strip to be classified and repeating steps d) through f).  
           [0012]    Benefits and advantages of the invention will become apparent to those of ordinary skill in the art upon reading and understanding the description of the invention provided herein. 
       
    
    
     BRIEF DESCRIPTION OF DRAWINGS  
       [0013]    The invention is described in more detail in conjunction with a set of accompanying drawings.  
         [0014]    [0014]FIG. 1 shows neutral pixels and non-neutral (color) pixels within an L*a*b* color space.  
         [0015]    [0015]FIG. 2 shows an exemplary color image processing system in an embodiment of the invention.  
         [0016]    [0016]FIG. 3 is a flowchart of a neutral pixel detection method in an embodiment of the invention.  
         [0017]    [0017]FIG. 4 shows an exemplary implementation of the smoothing filter step of FIG. 3.  
         [0018]    [0018]FIG. 5 shows an exemplary implementation of the L*a*b* color space conversion step of FIG. 3.  
         [0019]    [0019]FIG. 6 shows an exemplary implementation of the L*a*b* feature vector computation and classification steps of FIG. 3.  
         [0020]    [0020]FIG. 7 shows an exemplary implementation of the pixel classification step of FIG. 3.  
         [0021]    [0021]FIG. 8 shows an exemplary implementation of a tree classifier as the classifier of FIG. 7 in an embodiment of the invention. 
     
    
     DETAILED DESCRIPTION  
       [0022]    While the invention is described in conjunction with the accompanying drawings, the drawings are for purposes of illustrating exemplary embodiments of the invention and are not to be construed as limiting the invention to such embodiments. It is understood that the invention may take form in various components and arrangement of components and in various steps and arrangement of steps beyond those provided in the drawings and associated description. Within the drawings, like reference numerals denote like elements.  
         [0023]    With reference to FIG. 1, neutral pixels and non-neutral (color) pixels within an L*a*b* color space  1  are shown. When viewing a distribution of pixels from image data in three dimensions within the L*a*b* color space  1 , points near the L* axis  3  are neutral pixels  5 , while points more distant from the L* axis  3  are non-neutral (color) pixels  7 . The neutral pixels  5  are depicted as filled circles. The non-neutral (color) pixels  7  are depicted as circles without any fill pattern.  
         [0024]    With reference to FIG. 2, an exemplary color image processing system  10  in an embodiment of the invention is shown. The system  10  includes a color scanner  12 , a computer  14 , and a printer  16 . The color scanner  12  is an example of an input device and provides image data to the computer  14 . The computer  14  performs color image processing and provides processed image data to the printer  16 . One aspect of the color image processing performed by the computer  14  performs neutral pixel detection in accordance with the invention. The printer  16  is an example of a rendering device and renders the processed image data on media. A similar operation could also be performed by a raster input scanner, image processor, and rendering engine in a color copier.  
         [0025]    Since the color image processing in the system  10  is performed on electronic image data in common computer environments and architectures, a variety of additional configurations and scenarios implementing the invention are also possible. For example, the input device could be a storage device with a document or image to be rendered stored as an electronic file. The storage device could be a disk drive, digital camera, or other type of device. The electronic file may have been created on the computer system using application software capable of creating documents or images or created elsewhere and merely connected to the computer  14  or transferred to the storage device. Similarly, the output device can be any rendering device, including any type of display or printer. The color image processing performed on the computer  14 , including neutral pixel detection, can be tailored to the color palette and characteristics of the scanner or input device.  
         [0026]    With reference to FIG. 3, a flowchart of a neutral pixel detection method  100  in an embodiment of the invention is shown. The method  100  begins at step  102  when input image data is received  102 . Typically, the image is initially represented in the RGB color space. However, for purposes of the invention, the image may be represented in any three-dimensional color space. Next, a smoothing filter is applied  104  to smooth the image to reduce image noise. An averaging filter is a simple kind of smoothing filter and is used here for illustration. The smoothed image is converted to the L*a*b* color space  106 . A first pixel to be classified is selected  108  from the L*a*b* representation of the image. Next, L*a*b* feature vectors are computed for a window  110 . The window includes the pixel to be classified and neighboring pixels associated with the pixel to be classified. Typically, the pixel to be classified is the central pixel in the window. At step  112 , the pixel to be classified is classified as either neutral or color (non-neutral) using a binary classifier. Next, the method must determine if the pixel classified is the last pixel in the image to be classified  114 . If the pixel classified is not the last pixel to be classified, the next pixel is selected  116  and the method returns to step  108  to compute L*a*b* feature vectors for a window associated with the next pixel to be classified. Thus, steps  110  through  114  are repeated for each pixel in the image. When the pixel classified is the last pixel to be classified, the method is at its end  116 .  
         [0027]    The method  100  may be implemented in a strip processing scheme or in a page processing scheme, depending on various economic and performance considerations. Where economic considerations prevail, strip processing is known to require less memory and may be more advantageous. Where performance considerations prevail, page processing may be more advantageous.  
         [0028]    [0028]FIG. 3 reflects page processing. In other words, the entire image is received in step  102  and stored in a page buffer in the computer  14 . At step  104 , the entire image is smoothed and stored in a smoothed page buffer in the computer  14 . Likewise, at step  106 , the entire image is converted to the L*a*b* color space and stored in an L*a*b* page buffer in the computer  14 .  
         [0029]    For strip processing, the computer  14  includes a strip buffer, a smoothed strip buffer, and an L*a*b* strip buffer, each buffer comprising a certain number of scanlines. The strip buffer advances through the scanlines of the image in a first-in-first-out (FIFO) fashion. Steps  102  through  116  of the method  100  are performed on the image data in the strip buffer, sequentially producing smoothed image data for the smoothed strip buffer and L*a*b* image data for the L*a*b* strip buffer. Then, the strip buffer is advanced through the image a certain number of scanlines and steps  102  through  116  are repeated until each pixel in the image is classified.  
         [0030]    Under both processing schemes, the result is that each pixel in the image is classified as either neutral or color. These results are used in further image processing (i.e., image segmentation and rendering) to eliminate or reduce 3-color or multicolor processing and color rendering. For example, if the entire image or page is neutral, color image processing can be eliminated. Similarly, if one or more regions or objects within an image or page are neutral, color image processing can be reduced. The neutral or color classification of pixels can also be used during rendering so that black ink or toner is used for neutral pixels instead of a combination of color inks or toners to create the neutral pixel.  
         [0031]    It is noted that the recited page buffers and strip buffers are associated with image processing functions. In an image processing system  10 , where the computer  14  performs image processing functions, the buffers are associated with the computer as described above. However, in alternate image processing systems, such buffers may be migrated to the scanner  12  or the printer  16 . In other alternate image processing systems, such buffers may be part of the raster input scanner, image processor, or rendering engine.  
         [0032]    With reference to FIGS. 4 and 5, an exemplary implementation of the smoothing filter  104  step of FIG. 3 is shown. In this example, the document image  120  is represented in the RGB color space. The smoothing filter  104  is performed on each pixel in the document image  120 . In FIG. 4, the pixel  122  being processed is a number of pixels down from the top of the image and a number of pixels to the right of the left side of the image. This reflects a step in the middle of the smoothing process after a number of pixels have already been averaged with a number of additional pixels to be averaged before the process is completed.  
         [0033]    In this example, a 5×5 pixel window  123  in red  124 , green  126 , and blue  128  is used because color scanners typically produce pixel arrays in red, green, and blue. Alternate size windows may also produce satisfactory results. The window  123  is represented in each of the color channels (i.e., red  124 , green  126 , and blue  128 ) associated with the input color space. As shown in FIG. 5, an average red value  130  for the central pixel  122  is determined by summing the values of each pixel in the red window  124  and dividing the sum by 25. Likewise, an average green value  132  for the central pixel  122  is determined by summing the values of each pixel in the green window  126  and dividing the sum by 25. An average blue value  134  for the central pixel  122  is determined by summing the values of each pixel in the blue window  128  and dividing the sum by 25. The average values for the central pixel  122  can be determined in parallel or in any sequence. Once the average RGB value is determined for the central pixel  122 , the window is advanced one pixel and the smoothing process is repeated until each pixel in the document image  120  is averaged. Typically, the window is advanced left or right in alternating rows and down. However, other patterns of advancing through the image that achieve the desired results are possible.  
         [0034]    With continuing reference to FIG. 5, an exemplary implementation of the L*a*b* color space conversion  106  step of FIG. 3 is shown. For purposes of illustrating the L*a*b* conversion process  106 , the average RGB values (i.e.,  130 ,  132 ,  134 ) for the central pixel  122  are converted to L*a*b* values in the L*a*b* color space. In practice, the L*a*b* conversion process  106  is performed on each pixel in the document image  120 .  
         [0035]    With reference to FIGS. 6 and 7, an exemplary implementation of L*a*b* feature vector computation  110  step of FIG. 3 is shown. In this example, the document image  120  is represented in an L*a*b* image buffer  136 . L*a*b* feature vectors are represented by V1, V2, and V3. The VI feature vector is associated with the L* channel of the L*a*b* color space. The V2 feature vector is associated with the a* channel of the L*a*b* color space. The V3 feature vector is associated with the b* channel of the L*a*b* color space. L*a*b* feature vector computation  110  is performed on each pixel in the L*a*b* image buffer  136  in conjunction with classification of the pixel as either neutral or color  112 . In FIGS. 6 and 7, the pixel  138  for which L*a*b* feature vectors are being computed is a number of pixels down from the top of the image and a number of pixels to the right of the left side of the image. This reflects a step in the middle of the computation/classification process after a number of pixels have already been classified with a number of additional pixels to be classified before the process is completed.  
         [0036]    In this example, a 3×3 pixel window  140  is used in the L*a*b* feature vector computation  110 . The 3×3 pixel window  140  is used in conjunction with the  5 × 5  pixel window  123  used for RGB smoothing. Alternate size windows may also produce satisfactory results. The window  140  is represented in an a* channel window  142  and b* channel window  144  of the L*a*b* color space. The central pixel  138  of the window is represented in the L* channel of the L*a*b* color space. In this example, the L*a*b* feature vector are computed using the following equations:  
               V1   =         L   *          (     x   ,   y     )       /   255       ,           (   1   )                 V2   =       (         a   *          (       x   -   1     ,     y   -   1       )       +       a   *          (     x   ,     y   -   1       )       +       a   *          (       x   +   1     ,     y   -   1       )       +       a   *          (       x   -   1     ,   y     )       +                
            a   *          (     x   ,   y     )       +       a   *          (       x   +   1     ,   y     )       +       a   *          (       x   -   1     ,     y   +   1       )       +       a   *          (     x   ,     y   +   1       )       +     
            a   *          (       x   +   1     ,     y   +   1       )         )     /   255                  ,   and           (   2   )                 V3   =       (         b   *          (       x   -   1     ,     y   -   1       )       +       b   *          (     x   ,     y   -   1       )       +       b   *          (       x   +   1     ,     y   -   1       )       +       b   *          (       x   -   1     ,   y     )       +                             b   *          (     x   ,   y     )       +       b   *          (       x   +   1     ,   y     )       +       b   *          (       x   -   1     ,     y   +   1       )       +       b   *          (     x   ,     y   +   1       )       +     
            b   *          (       x   +   1     ,     y   +   1       )         )     /   255.                          (   3   )                               
 
         [0037]    Where (x,y) are the coordinates of the central pixel with respect to the L*a*b* image buffer  136 . In general terms, a) the L* feature vector (V1) is represented by a normalized L* value for the pixel being classified (e.g., normalized by dividing the sum by 255 (i.e., white)), b) the a* feature vectors (V2) is represented by a normalized sum of the a* values for each pixel in the a* window  146  (e.g., normalized by dividing the sum by  255  (i.e., white)), and c) the b* feature vectors (V3) is represented by a normalized sum of the b* values for each pixel in the b* window  148  (e.g., normalized by dividing the sum by  255  (i.e., white)). In practice, the L*a*b* feature vectors may be normalized to other scales by changing the value in the denominator.  
         [0038]    Once the L*a*b* feature vectors are computed, the values are provided to a classifier for classification of the central pixel  138 . Then, the 3×3 window  140  is advanced one pixel and the L*a*b* feature vector computation process is repeated until each pixel in the L*a*b* image buffer  136  is classified. Typically, the window is advanced left or right in alternating rows and down. However, other patterns of advancing through the image that achieve the desired results are possible.  
         [0039]    With reference to FIG. 7, an exemplary implementation of the pixel classification  112  step of FIG. 3 is shown. The L*a*b* feature vector values (i.e., V1, V2, and V3) computed for the pixel  140  to be classified are provided to the classifier  112 . Based on previously determined logic and thresholds, the classifier determines whether to classify the pixel  140  as neutral or color from the L*a*b* feature vector values (i.e., V1, V2, and V3). In practice, the classifier  112  may be a neural network, a tree classifier, or any type of classifier capable of making a binary decision between the neutral and color classes. Usually it is beneficial to develop a model for a tree classifier by training a tree classifier to properly respond to the feature vectors in a manner tailored to the color palette and characteristics associated with a given scanner or input device. Once trained, the logic and thresholds representing the operations performed by the tree classifier are usually more economically than a neural network classifier.  
         [0040]    With reference to FIG. 8, an exemplary implementation of a tree classifier such as the classifier  112  of FIG. 7 in an embodiment of the invention is shown. The classifier  112  receives L*a*b* feature vectors  110  associated with the pixel to be classified. In general, the classifier  112  compares the value of one or more L*a*b* feature vectors to predetermined thresholds until the class of the pixel can be distinguished between neutral or color. The first comparison checks if the V3 feature vector is less than threshold T 1  (e.g., 4.6955)  150 . If the V3 feature vector is less than threshold T 1 , a second comparison checks if the V3 feature vector is less than threshold T 2  (e.g., 4.4175)  152 . If the V3 feature vector is less than threshold T 2 , a third comparison checks if the V2 feature vector is less than threshold T 3  (e.g., 4.6455)  154 . If the V2 feature vector is less than threshold T 3 , a fourth comparison checks if the V2 feature vector is less than threshold T 4  (e.g., 4.407)  156 . If the V2 feature vector is less than threshold T 4 , the pixel is classified as neutral  158  and an associated information bit or tag is set to one (1).  
         [0041]    The previous paragraph represents one path through the tree classifier. Various alternate paths are also possible. For example, at step  150 , if the V3 feature vector is not less than threshold T 1 , the pixel is classified as color  162  and an associated information bit or tag is set to zero (0). Again, at step  152 , if the V3 feature vector is not less than threshold T 2 , the pixel is classified as color  162  and an associated information bit or tag is set to zero (0). Likewise, at step  156 , if the V2 feature vector is not less than threshold T 4 , the pixel is classified as color  162  and an associated information bit or tag is set to zero (0). Similarly, at step  154 , if the V2 feature vector is not less than threshold T 3 , a final comparison checks if the V1 feature vector is less than threshold T 5  (e.g., 0.253) 160. If the V1 feature vector is less than threshold T 5 , the pixel is classified as neutral  158  and an associated information bit or tag is set to one (1); otherwise, the pixel is classified as color  162  and an associated information bit or tag is set to zero (0).  
         [0042]    The tree classifier of FIG. 8, particularly the example threshold values, was created from data sets and statistics generated by training it using a particular model of scanner. Therefore, the structure or logic of the tree classifier and the thresholds identified are tailored to the color palette and characteristics of the subject scanner model. Therefore, the tree classifier of FIG. 8 may or may not produce satisfactory results for other scanners or other type of input devices. Accordingly, tree classifiers, such as the one shown in FIG. 8, may be constructed with quite different logic and thresholds for other scanners and other types of input devices.  
         [0043]    While the invention is described herein in conjunction with exemplary embodiments, it is evident that many alternatives, modifications, and variations will be apparent to those skilled in the art. Accordingly, the embodiments of the invention in the preceding description are intended to be illustrative, rather than limiting, of the spirit and scope of the invention. More specifically, it is intended that the invention embrace all alternatives, modifications, and variations of the exemplary embodiments described herein that fall within the spirit and scope of the appended claims or the equivalents thereof