Abstract:
The same circuitry is used for effecting FIR filtering and color space transformation. The input to a multiply-add array of a conventional FIR filter is appropriately multiplexed to provide the alternative uses of the same multiply-add array. In this manner, for example, the same multiply-add array can be used for scaling an image and for transforming the image from one color space to another.

Description:
BACKGROUND OF THE INVENTION  
         [0001]    1. Field of the Invention  
           [0002]    This invention relates to the field of video processing, and in particular to a video processor that includes a color space matrix transformation and finite impulse response (FIR) filter.  
           [0003]    2. Description of Related Art  
           [0004]    FIR Filters  
           [0005]    Finite impulse response (FIR) filters are commonly used in video processing systems for filtering picture element (pixel) values, particularly pixel values that are produced when an image is scaled or otherwise transformed from its original form. For example, a decimation, or downsampling, of an image to produce a 4:1 reduction in image size can be effected by merely choosing every fourth input pixel value to provide each output pixel value. Such a sampling, however, will generally produce visual anomalies and/or discontinuities, as the particular pixel value selected may not be representative of the non-selected pixel values. An FIR filter provides for a weighted averaging of a plurality of pixel values to produce each pixel value, thereby reducing the anomalies and discontinuities that may occur with non-filtered scaling. In an upscaling application, wherein multiple output samples are produced for each input sample, the weighted averaging provides for an interpolated value for each output sample, wherein the inclusion of pixel values beyond the immediately adjacent input samples provides for a less-artificial-appearing filling of values between the input samples.  
           [0006]    A common FIR structure for video processing is a six-tap, three-component filter that provides an output pixel value that is a dependent upon six input pixel values, each pixel value being represented by three components, such as red-green-blue components in an RGB color space. In a conventional six-tap three-component FIR filter, the following transformation is effected:  
         [           a   0   ′               a   1   ′               a   2   ′           ]     =         [           c   00           c   01           c   02           c   03           c   04           c   05               c   10           c   11           c   12           c   13           c   14           c   15               c   20           c   21           c   22           c   23           c   24           c   25           ]     ×     [           a   0   0           a   1   0           a   2   0               a   0     -   1             a   1     -   1             a   2     -   1                 a   0     -   2             a   1     -   2             a   2     -   2                 a   0     -   3             a   1     -   3             a   2     -   3                 a   0     -   4             a   1     -   4             a   2     -   4                 a   0     -   5             a   1     -   5             a   2     -   5             ]       +     [           e   0               e   1               e   2           ]                             
 
           [0007]    In the above equation, a i   j  corresponds to the i th  component of the j th  pixel value, c 00 -c 25  are the coefficients, or weights, for providing the weighted average, and e 0 -e 3  are the translation, or offset, terms applied to each output pixel component value a′ 0 -a′ 3 . Additional processing, including quantization, rounding, clamping, etc. are also subsequently applied, but are not illustrated herein, for ease of understanding.  
           [0008]    Note that, for effective filtering, an FIR filter of at least 3 taps, and preferably 6 or more taps are generally employed. At least eighteen multipliers and adders are required to effect the example 6-tap 3-component FIR filter.  
           [0009]    Color Space Transformation  
           [0010]    Generally, different video processing applications employ different color space representations of the pixel values. For example, computer systems generally employ an RGB (red-green-blue) color space, wherein each pixel value is represented by a red component, a green component, and a blue component. A conventional broadcast television signal, on the other hand, encodes images using a luminance component (Y) and two chrominance components (U and V) corresponding to a YUV color space. A quadrature variation of YUV is the YIQ color space. The YCbCr color space is a scaled version of YUV that is used in digital video encodings. Other color space representations of an image are also common in the art. In VIDEO DEMYSTIFIED, by Keith Jack, published in 1966 by HighText Interactive, Inc. of San Diego, Calif., eight different color space standards are presented, with equations for converting from one color space to another.  
           [0011]    In traditional systems that support more than one color space, the transformation between color spaces is typically effected via hardware that is customized for the particular color space transformation. A customized design allows for a reduction in circuitry and the required area for this circuitry on an integrated circuit, but limits the applicability of the design to the particular color space transformation. If multiple transformations are intended to be supported, a matrix transformation structure is generally employed:  
         [           A   0   ′               A   1   ′               A   2   ′           ]     =         [           C   00           C   01           C   02               C   10           C   11           C   12               C   20           C   21           C   22           ]     ×     [             A   0     +     D   0                   A   1     +     D   1                   A   2     +     D   2             ]       +     [           B   0               B   1               B   2           ]                             
 
           [0012]    where A 0 -A 2  are the component values of the input pixel in the input color space, A′ 0 -A′ 2  are the component values of the output pixel in the output color space, D 0 -D 2  are the offsets associated with the input color components, B 0 -B 2  are the offsets associated with the output color components, and C 00 -C 22  are the coefficients of the particular transformation equation. For example, the conversion between conventional RGB and YCbCr color spaces is effected via the following equations.  
           [0013]    From an input pixel having R-G-B component values to an output pixel having Y-Cb-Cr component values:  
         [         Y           Cb           Cr         ]     =         [         0.257       0.504       0.098             -   0.148           -   0.291         0.439           0.439         -   0.368           -   0.071           ]     ×     [         R           G           B         ]       +     [         16           128           128         ]                             
 
           [0014]    From an input pixel having Y-Cb-Cr component values to an output pixel having R-G-B component values:  
         [         R           G           B         ]     =         [         1.164       0       1.596           1.164         -   0.392           -   0.813             1.164       0       2.017         ]     ×     [           Y   -   16               Cb   -   128               Cr   -   128           ]       +     [         0           0           0         ]                             
 
           [0015]    In a system that is configured to provide multiple color-space transformations, the different input-to-output color space transformations are performed by loading the appropriate coefficients and offsets to a 3×3 matrix multiplier and adder. Note that such an embodiment requires at least nine multipliers and adders, in addition to a preprocessor that subtracts the appropriate offsets (D 0 , D 1 , D 2 ) from the input components (e.g. Y-16, Cb-128, and Cr-128) of particular color spaces.  
         BRIEF SUMMARY OF THE INVENTION  
         [0016]    It is an object of this invention to reduce the circuitry and area required to effect color space transformation. It is a further object of this invention to optimize the use of the circuitry provided for FIR filtering.  
           [0017]    These objects and others are achieved by using the same circuitry for effecting FIR filtering and color space transformation. The input to a multiply-add array of a conventional FIR filter is appropriately multiplexed to provide the alternative uses of the FIR filter components. In this manner, for example, the same multiply-add array of components can be used for scaling an image and for transforming the image from one color space to another. 
       
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0018]    The invention is explained in further detail, and by way of example, with reference to the accompanying drawings wherein:  
         [0019]    [0019]FIG. 1 illustrates an example block diagram of a video processing system in accordance with this invention.  
         [0020]    [0020]FIG. 2 illustrates an example block diagram of a multi-use FIR filter combination in accordance with this invention.  
         [0021]    Throughout the drawings, the same reference numerals indicate similar or corresponding features or functions. 
     
    
     DETAILED DESCRIPTION OF THE INVENTION  
       [0022]    [0022]FIG. 1 illustrates an example block diagram of an image processing system  100  in accordance with this invention. The processing system  100  is presented as an example application of this invention, although one of ordinary skill in the art will recognize that the invention is not limited to this example application. The processing system  100  allows multiple input image sources, of different formats, and in particular, images having pixel values using different color-space encodings. A source selector  110  selects a particular input image source, and provides the select image to a color-space converter  120 . In this example, to minimize design complexity, the color-space converter  120  is configured to convert, as necessary, pixel encodings in one color space to an encoding in a particular color space that the remainder of the system is configured to process. That is, for example, in a computer-based display system, a number of utility processes and application programs exist that are based on an RGB color space encoding. For example, image enhancement schemes that are configured to sharpen images, or remove noise from images, are commonly available for processing RGB encoded images. By converting other color space encodings into an RGB encoding, these existing utility processes and application programs can be employed. In a conventional image processing system, the color space conversion function is provided by special purpose hardware or by a 3×3 matrix multiplication, as discussed in the background to this invention. In accordance with this invention, the color-space converter  120  is configured to employ the multiplication and addition components of an FIR filter  140   b , discussed further below.  
         [0023]    As is common in the art, in the example image processing system  100 , a memory  130  is used to communicate the image data among processing blocks. This memory  130  may include, for example, line buffers for individual lines in the image, frame memory for sequential images, cache memory, and so on. In this example, the color space converter  120  is configured to provide the source image data to the FIR filter  140   b , and the FIR filter  140   b  is configured to place the color-space-converted data in the memory  130 .  
         [0024]    A scaler  150  is configured to provide optional scaling of the image from the memory  130 . In accordance with this invention, the example scaler  150  is configured to use the same multiply-add array of an FIR filter  140   b  as the color-space converter  120 , via a multiplexer  140   a , as discussed further below. In this example, the scaled version of the image, from the FIR filter  140   b , is also stored in the memory  130 , for subsequent processing by a display driver  160  for presentation of the image on a display  170 . Note that other processes, such as quantization, rounding, clamping, sharpening, and so on may be applied to the scaled or unscaled data that is in the memory  130 , as is common in the art, but are not illustrated in FIG. 1, for ease of understanding.  
         [0025]    A multiplexer  140   a  selects whether the input to the FIR filter  140   b  is from the color-space converter  120 , or the scaler  150 . Depending upon the particular configuration and supported functions of the processing system  100 , the multiplexer  140   a  may introduce constraints on the use of the FIR filter  140   b . For example, for maximum throughput of the system  100 , the multiplexer  140   a  may be configured such that only one function, color-space-conversion or image-scaling, may be applied for a given input stream. That is, for example, in an RGB-based system, scaling may be provided only for images that are provided from an RGB source, which does not require color-space conversion. If throughput is not critical, the system  100  may be configured to set the multiplexer  140   a  to convert each input image to the select color-space, and, after the image is converted, to set the multiplexer  140   a  to scale the color-space-converted image. Other multiplexing schemes will be evident to one of ordinary skill in the art in view of this disclosure. For example, the system may be configured to control the multiplexer  140   a  so that data from the converter  120  and scaler  150  are alternately processed, thereby allowing continuous processing, albeit at a slower rate than a system that limits the processing by the FIR filter  140   b  to one input or the other for the entire process.  
         [0026]    [0026]FIG. 2 illustrates an example block diagram of a multi-use FIR filter combination  140  in accordance with this invention. The FIR filter combination  140  comprises the aforementioned FIR filter  140   b , and a plurality of multiplexers  220 ,  230 ,  240 , that are represented in FIG. 1 as the multiplexer  140   a.    
         [0027]    In accordance with this invention, the multiplexers  220 ,  230 ,  240  are configured to provide an appropriate input to the FIR filter  140   b  to effect the intended transformation. In the example of FIG. 2, the input InB corresponds to the conventional input to an FIR filter to effect a scaling function, as discussed above with regard to the 6-tap, 3-component FIR filter that provides the following matrix operation:  
         [           a   0   ′               a   1   ′               a   2   ′           ]     =         [           c   00           c   01           c   02           c   03           c   04           c   05               c   10           c   11           c   12           c   13           c   14           c   15               c   20           c   21           c   22           c   23           c   24           c   25           ]     ×     [           a   0   0           a   1   0           a   2   0               a   0     -   1             a   1     -   1             a   2     -   1                 a   0     -   2             a   1     -   2             a   2     -   2                 a   0     -   3             a   1     -   3             a   2     -   3                 a   0     -   4             a   1     -   4             a   2     -   4                 a   0     -   5             a   1     -   5             a   2     -   5             ]       +     [           e   0               e   1               e   2           ]                             
 
         [0028]    As illustrated in the example of FIG. 2, a series of delay elements  210  in the FIR filter  140   b  provide the a 0 , a −0 , . . . a −5  pixel values, corresponding, for example, to a series of pixel values comprising a six-pixel length of a horizontal line. The coefficients c 00 -C 25  and offsets e 0 -e 3  are set by the scaler  150  (of FIG. 1), based on the scaling factor and phase of the input and output pixel values, using algorithms that are common in the art. The above matrix multiplication and addition is effected via an array of multipliers and adders  250 , as is common in the art for conventional FIR filters.  
         [0029]    To provide color-space conversion of an input InA to the multiplexed FIR filter system  140 , the conventional 3×3 matrix operation is provided by the example 6-tap, 3-component FIR filter as follows.  
         [0030]    As presented above, the conventional 3×3 color-space conversion is provided by:  
         [           A   0   ′               A   1   ′               A   2   ′           ]     =         [           C   00           C   01           C   02               C   10           C   11           C   12               C   20           C   21           C   22           ]     ×     [             A   0     +     D   0                   A   1     +     D   1                   A   2     +     D   2             ]       +       [           B   0               B   1               B   2           ]     .                             
 
         [0031]    This conventional 3×3 color-space conversion can be shown to be equivalent to:  
         [           A   0   ′               A   1   ′               A   2   ′           ]     =         [             C   00           C   01           C   02               C   10           C   11           C   12               C   20           C   21           C   22                      C   00           C   01           C   02               C   10           C   11           C   12               C   20           C   21           C   22             ]     ×     [           A   0           A   0           A   0               A   1           A   1           A   1               A   2           A   2           A   2               D   0           D   0           D   0               D   1           D   1           D   1               D   2           D   2           D   2           ]       +       [           B   0               B   1               B   2           ]     .                             
 
         [0032]    That is, the 3×3 color-space conversion coefficient matrix C 00 -C 22  is duplicated to fill the 6×3 FIR filter coefficient matrix, and the input values A 0 -A 2  and offsets D 0 -D 2  are provided as discrete entries. The YCbCr to RGB color-space conversion as presented in the background of the invention, for example, is recast to:  
         [         R           G           B         ]     =       [         1.164       0       1.596       1.164       0       1.596           1.164         -   0.392           -   0.813         1.164         -   0.392           -   0.813             1.164       0       2.017       1.164       0       2.017         ]     ×             [         Y       Y       Y           Cb       Cb       Cb           Cr       Cr       Cr             -   16           -   16           -   16               -   128           -   128           -   128               -   128           -   128           -   128           ]     +     [         0           0           0         ]                                 
 
         [0033]    By recasting the conventional 3×3 color-space conversion matrix operation to a 6×3 FIR filter matrix, the multiplexers  220 ,  230 ,  240  can be configured to provide the appropriate inputs to the example 6×3 FIR filter  140   b  of FIG. 2. As illustrated, when the mode signal is asserted to an opposite state to the state used to effect the conventional FIR filter function, the inputs to the multiply-add array  250  of the FIR filter  140   b  are switched by the multiplexer to provide the appropriate input values A 0 -A 2 , output-offset values B 0 -B 2  duplicated coefficient values C 00 -C 22 , and input-offsets D 0 -D 2  to the 6×3 multipliers and adders to effect the 6×3 color-transformation matrix operation presented above. Note that, although the 3×3 color space transformation is effected by a 3×6 multiply-add array  250 , which is substantially larger than the conventional 3×3 multiply-add array that is typically used to effect a 3×3 matrix operation, a savings in circuit-area is achieved, because the multiplexers  220 ,  230 ,  240  can be expected to consume less area than a conventional 3×3 multiply-add array.  
         [0034]    As would be evident to one of ordinary skill in the art, if a different sized FIR filter  140   b  is provided, the 3×3 color-space conversion matrix operation is recast as required to conform to the different sized FIR filter. A 4×4 FIR filter can be used, for example, by filling the parameters of the 3×3 color-space matrix directly into the 3×3 subset of the 4×4 FIR filter, and zero-filling the unused inputs.  
         [0035]    The foregoing merely illustrates the principles of the invention. It will thus be appreciated that those skilled in the art will be able to devise various arrangements which, although not explicitly described or shown herein, embody the principles of the invention and are thus within the spirit and scope of the following claims.