Abstract:
Color space conversion from a first image definition scheme to a second image definition scheme is realized by utilizing only one step of matrix multiplication and by determining whether determined RGB values are in a valid RGB region and, if not, generating a first modification factor to bring the RGB vector onto or in close proximity to the boundary of the valid RGB region. Then, the first modification factor is employed to modify in a prescribed manner the converted chroma values. In a specific embodiment of the invention, only a single matrix multiplication is employed and the otherwise additional required multiplication and/or division steps are realized by additions and/or subtractions and by employing a prescribed iterative process to bring the RGB values into or close to the valid RGB color space region. The converted chroma values are also modified by associated second modification factors also generated in the iteration process. In another specific embodiment of the invention, the converted chroma values are modified or not during an iteration depending upon whether a factor corresponding to and related to R 0,  G 0 , B 0  is within a specific color space region or not. If R 0,  G 0 , B 0  are within the specific color space region, the chroma values are modified by the associated second modification factors, the second modification factors are adjusted and the process is iterated. If R 0,  G 0 , B 0  are other than within the specific color space region, the chroma values are not modified, the second modification factors are adjusted and the process is iterated. A prescribed number of iterations are used.

Description:
TECHNICAL FIELD  
         [0001]    This invention relates to television systems and, more particularly, to color space conversion.  
         BACKGROUND OF THE INVENTION  
         [0002]    The color space Y, Cr and Cb have different representations in Standard Definition (SD) television (TV) and High Definition (HD) TV. Specifically, color space is defined in the International Telecommunications Union (ITU) Recommendation ITU-R BT.601. It is noted that Y is a luma component and that Cr and Cb are color difference signals, typically associated with SDTV. YPrPb are similar color space values, typically associated with HDTV. RGB are color space values for red (R), green (G) and blue (B), respectively.  
           [0003]    Proper color space conversions are required in, for example, up-converters where SD images are converted to HD images. To this end, standards have been promulgated to specify these conversions. Specifically, the Society of Motion Picture and TV Engineers (SMPTE) has defined such standards, namely, SMPTE125M specifies a matrix converting RGB values to YCrCb values and their valid region for SDTV, and SMPTE274M specifies the conversion for HDTV.  
           [0004]    Prior arrangements are known which convert the SD YCrCb values into HD YPrPb values. One such prior arrangement is shown in FIG. 1, which includes matrix multiplier  101  that generates tentative RGB values in response to the YCrCb SD values. These tentative RGB values may be invalid in that one or more of them is outside a prescribed color space region. Consequently, unit  102  is needed to project the invalid tentative RGB values to valid RGB color space within the prescribed valid region. The resulting valid RGB values are supplied to matrix multiplier  103 , which yields the desired HD YPrPb values.  
           [0005]    A problem with such prior arrangements is their use of the multiple matrix multipliers and/or lookup tables to realize the matrix multiplications required by the SMPTE standards noted above. Some implementations also require one or more division steps, which are very undesirable, especially in hardware implementations. In hardware implementations, for example, as an integrated circuit, such operations take up significant chip space, while in software implementations the processes are long and time consuming, thereby requiring more powerful high speed processors to effect them rapidly.  
         SUMMARY OF THE INVENTION  
         [0006]    These and other problems and limitations are overcome in an embodiment of the invention in converting from a first image definition scheme to a second image definition scheme by utilizing only one step of matrix multiplication and by determining whether determined RGB values are in a valid RGB region and, if not, generating a first modification factor to bring the RGB vector onto or in close proximity to the boundary of the valid RGB region. Then, the first modification factor is employed to modify in a prescribed manner the converted chroma values.  
           [0007]    In a specific embodiment of the invention, only a single matrix multiplication is employed and the otherwise additional required multiplication and/or division steps are realized by additions and/or subtractions and by employing a prescribed iterative process to bring the RGB values into or close to the valid RGB color space region. The converted chroma values are also modified by associated second modification factors also generated in the iteration process.  
           [0008]    In another specific embodiment of the invention, the converted chroma values are modified or not during an iteration depending upon whether a factor corresponding to and related to R 0,  G 0 , B 0  is within a specific color space region or not. If R 0,  G 0 , B 0  are within the specific color space region, the chroma values are modified by the associated second modification factors, the second modification factors are adjusted and the process is iterated. If R 0,  G 0 , B 0  are other than within the specific color space region, the chroma values are not modified, the second modification factors are adjusted and the process is iterated. A prescribed number of iterations are used. 
       
    
    
     BRIEF DESCRIPTION OF THE DRAWING  
       [0009]    [0009]FIG. 1 shows a prior art color space converter;  
         [0010]    [0010]FIG. 2 illustrates a color space converter in accordance with the invention;  
         [0011]    [0011]FIG. 3 depicts a specific embodiment on a color space converter in accordance with the invention;  
         [0012]    [0012]FIG. 4 shows one embodiment of the iteration and modification unit  304  employed in the embodiment of the invention shown in FIG. 3; and  
         [0013]    [0013]FIG. 5 illustrates another embodiment of the iteration and modification unit  304  employed in the embodiment of the invention shown in FIG. 3. 
     
    
     DETAILED DESCRIPTION  
       [0014]    Theoretical Discussion  
         [0015]    Color space has different representations for standard definition television (SDTV) and for high definition television (HDTV), namely, Y, Cr and Cb for SDTV and Y, Pr and Pb for HDTV. Proper color space conversions are required in converters when SDTV images are converted to HDTV images and vice versa.  
         [0016]    In this discussion, the following notation will be employed. Y is a luma component and Cr and Cb are chroma components, i.e., color difference signals, as are Pr and Pb. RGB are color space values for red, green and blue, respectively. Y′s, C′r and C′b are Y, Cr and Cb, respectively, in SDTV properly scaled to a color space region of [0,1] for Y′s and a color space region of [−0.5,0.5] for C′r and C′b. Y′h, P′b and P′b are the luma and chroma components in HDTV properly scaled to the same color space ranges as the SDTV components. Color space values r, g and b are the RGB gamma precorrected values in the color space region [0,1]. Ysd, Yhd and R are column vectors, namely, Ysd=tr[Y′s, C′r, C′b], Yhd=tr[Y′h, P′r, P′b] and R=tr[r, g, b]. Note that the bold type denotes a vector.  
         [0017]    Standard SMPTE125M specifies the color space conversion for SDTV as  
             Ysd   =       Ms   ·   R     =       [         0.299       0.587       0.144           0.500         -   0.419           -   0.081               -   0.169           -   0.331         0.500         ]     ·     R   .                 (   1   )                               
 
         [0018]    Standard SMPTE274M specifies the color space conversion for HDTV as  
             Yhd   =       Mh   ·   R     =       [         0.2126       0.7152       0.0722           0.5000         -   0.4542           -   0.0458               -   0.1146           -   0.3854         0.5000         ]     ·     R   .                 (   2   )                               
 
         [0019]    In an up-converter, the color space conversion is effected as  
             Yhd   =       Mh   ·   R     =         Ms     -   1       ·   Ysd     =       [         1.0000         -   0.2127           -   0.1181             0.0       1.0251       0.0744           0.0       0.1152       1.0187         ]     ·     Ysd   .                   (   3   )                               
 
         [0020]    Similarly, in a down-converter for converting HDTV images to SDTV images the color space conversion is effected as  
             Ysd   =       Ms   ·   R     =       Ms   ·     Mh     -   1       ·   Yhd     =       [         1.0000       0.1961       0.1016           0.0       0.9835         -   0.0718             0.0         -   .01112         1.0187         ]     ·     Yhd   .                   (   4   )                               
 
         [0021]    In both the up-conversion and the down-conversion it is possible that a set of valid YCrCb color space values can produce invalid RGB values, that is, r, g, b values outside of the color space region [0,1]. The proper handling of such invalid RGB values is required. Taking the up-conversion as an example, if a set of RGB values is outside the unit cube [0,1] 3 , then Yh, P′r and P′b need to be modified so that the corresponding RGB values are valid. The modification is such that Yh remains the same, and new values for P′r and P′b are moved toward the origin (0,0) in the unit cube in a straight line until the values of RGB become valid.  
         [0022]    Now the relationship between YCrCb and RGB values is considered regardless of whether the application is up-conversion or down-conversion. The basic formulation is as follows. Given a YCrCb vector Y=tr[Y′, C′r, C′b], its corresponding RGB vector is R=tr[r, g, b]. M denotes the matrix transform between YCrCb and RGB, i.e., Y=M*R, where M=Ms for SDTV and M=Mh for HDTV. Note that the region of Y is assumed to be [0,1] for Y′ and −0.5,0.5] for C′r and C′b. For a given Y vector, the corresponding R vector may or may not be in the valid space [0,1] 3 . If vector R is not in valid space, then vector Y needs to be modified to yield valid RGB values. The modification is such that Y′ is held unchanged, but chroma Cr and Cb are moved toward the origin in the valid space until vector R becomes valid. This defines a new vector Ynew=tr[Y, Cr, Cb] such that  
         Y=Y′,  Cr=xC′b, Cb=xC′b , x in [0,1],  (5)  
         [0023]    where x is chosen so that the new RGB vector M −1  Ynew lies on the boundary of [0,1] 3 .  
         [0024]    The RGB values corresponding to vector Ynew are obtained by applying the inverse of the matrix M, namely,  
               Rnew   =       [         R           G           B         ]     =         M     -   1       (       [           Y   ′             0           0         ]     +     [         0               xC   ′        r                 xC   ′        b           ]                  )     =           M     -   1                  [           Y   ′             0           0         ]     +       xM     -   1                  [         0               C   ′        r                 C   ′        b           ]                  =       [           R   0               G   0               B   0           ]                +     x        [           R   1               G   1               B   1           ]                                    (   6   )                               
 
         [0025]    where x is in the region [0,1].  
         [0026]    From equation (5), it is seen that the value of x=0 represents a gray color. Therefore, Rnew is always valid for x=0, regardless of Y′, C′r and C′b. If the values of Y′, C′r and C′b generate invalid RGB values, i.e., if Rnew is invalid when x=1, then it is clear that there exists a value in the space region (0,1) such that Rnew lies on the boundary of the valid RGB space value region [0,1] 3 . This value of x can be determined as follows. Since Rnew is invalid, there must be one value of R, G and B that is outside the space region [0,1] for x=1. Assume that the R value is outside of [0,1] for x=1. Note that if more than one value is outside of [0,1] anyone of them can be used. Then, from equation (6), for x=1, R=R 0 +R 1 , where R 0 , R 1  are defined in equation (6). Then either R 0 +R 1 &lt;0, or R 0 +R 1 &gt;1. In the former case, there is a modification factor value of x in (0,1) such that R 0 +xR 1 =0. Similarly, if R 0 +R 1 &gt;1, then there is an x in (0,1) such that R 0 +xR 1 =1. Therefore, the value of x can be determined by  
               x   =       p   -     R   0         R   1         ,       where                 p     =         0                 if                   R   0       +     R   1       &lt;   0       ,                  and                 p     =         1                 if                   R   0       +     R   1       &gt;   1.               (   7   )                               
 
         [0027]    From equation (7), the modified values of C′r and C′b can be computed via equation (5).  
         [0028]    An example of the specific case of up-conversion is considered for conversion from SDTV to HDTV images. For a given SD luma/chroma vector Ysd, equation (3) can be used to obtain the luma/chroma vector in HD. It is possible for Ysd to produce invalid RGB values, due to, for example, the interpolation of chroma values. In such instances, resulting vector Yhd needs to be modified in accordance with the procedures noted above to obtain a new vector Yhdnew which is in the form of equation (5), namely,  
         Y=Y′h,  Pr=xP′r, Pb=xP′b , x in [0,1].  (8)  
         [0029]    Then, applying equation (6) to HD results in  
             Rnew   =       [         R           G           B         ]     =           (   Mh   )       -   1          Yhdnew     =         (   Mh   )       -   1              (       [             Y   ′        h             0           0         ]     +     [         0               xP   ′        r                 xP   ′        b           ]                  )     .                   (   9   )                               
 
         [0030]    From equation (3), it is seen that Y′h is the first component of vector Mh*(Ms) −1 , resulting in  
                 [             Y   ′        h             0           0         ]     =       E   1     ·   Mh   ·     Ms     -   1       ·   Ysd       ,       where                   E   1       =       [         1       0       0           0       0       0           0       0       0         ]     .               (   10   )               Similarly   ,       [         0               P   ′        h                 P   ′        r           ]     =       E   2     ·   Mh   ·     Ms     -   1       ·   Ysd       ,       where                   E   2       =       [         0       0       0           0       1       0           0       0       1         ]     .               (   11   )                               
 
         [0031]    Combining equations (9), (10) and (11) yields  
               Rnew   =       [         R           G           B         ]     =       [           R   0               G   0               B   0           ]                +     x        [           R   1               G   1               B   1           ]                        ,           (   12   )                 where              [           R   0               G   0               B   0           ]                =       Mh     -   1       ·     E   1     ·   Mh   ·     Ms     -   1       ·   Ysd             (   13   )                 and              [           R   1               G   1               B   1           ]                =       Mh     -   1       ·     E   2     ·   Mh   ·     Ms     -   1       ·     Ysd   .               (   14   )                               
 
         [0032]    Employing equations (1) and (2), the matrices for equations (13) and (14) are  
               [           R   0               G   0               B   0           ]     =         [         1.0000         -   0.2127           -   0.1181             1.0000         -   0.2127           -   0.1181             1.0000         -   0.2127           -   0.1181           ]     ·   Ysd     =                [             Y   ′        s             -   0.2127          C   ′        r             -   0.1181          C   ′        b                 Y   ′        s             -   0.2127          C   ′        r             -   0.1181          C   ′        b                 Y   ′        s             -   0.2127          C   ′        r             -   0.1181          C   ′        b           ]               (   15   )                 and              [           R   1               G   1               B   1           ]     =         [         0.0       1.6144       0.1171           0.0         -   0.5015           -   0.2256             0.0       0.2137       1.8902         ]     ·   Ysd     =       [           1.6144        C   ′        r             +   0.1171          C   ′        b                 -   0.5015          C   ′        r             -   0.2256          C   ′        b               0.2137        C   ′        r           1.8902        C   ′        b           ]                .               (   16   )                               
 
         [0033]    In the above formulations, all values have been normalized to unity. That is the RGB and luma values have been scaled to [0,1] and the chroma values have been scaled to [−0.5,0.5]. Now the integer values will be considered. In both the SMPTE125M and SMPTE274M standards, the 10 bit luma and chroma values are restricted to [64,940] and [64,960], respectively. Notations Ys, Cr and Cb are used for the integer values in SD and notations Yh, Pr and Pb are used for the integer values in HD. 10 bits are also used to represent the RGB values, within a region [0,1023]. Then, equation (3) for converting SD and HD becomes  
               [         Yh           Pr           Pb         ]     =       [         64           512           512         ]     +       [         1.0000         -   0.2127           -   0.1181             0.0       1.0251       0.0744           0.0       0.1152       1.0187         ]     ·       [         Ys         -   64             Cr         -   512             Cb         -   512           ]     .                 (   17   )                               
 
         [0034]    The 10 bit equivalents of equations (15) and (16) become  
                 [           R   0               G   0               B   0           ]     =       [         1.1678         -   0.2429           -   0.1348             1.1678         -   0.2429           -   0.1348             1.1678         -   0.2419           -   0.1348           ]     ·     [         Ys         -   64             Cr         -   64             Cb         -   64           ]                            (   18   )                 and              [           R   1               G   1               B   1           ]     =       [         0.0       1.8432       0.1337           0.0         -   0.5725           -   0.2576             0.0       0.2440       2.1581         ]     ·       [         Ys         -   64             Cr         -   64             Cb         -   64           ]                .               (   19   )                               
 
         [0035]    Equation (8) is equivalent to  
         Yhnew=Yh,  Prnew= 512 +x ( Pr− 512),  Pbnew= 512 +x ( Pr− 512),  (20)  
         [0036]    where x is determined as follows.  
                     1   ,               if                 0     ≤     (       X   0     +     X   1       )     ≤   1023     ,       for                 all                 X     =   R     ,   G   ,   B                 x   =       p   -     X   0         X   1         ,               if                 0     ≤     (       X   0     +     X   1       )     &lt;   0     ,       or                 if                   (       X   0     +     X   1       )       &gt;   1023     ,       for                 some                 X     =   R     ,   G   ,   B           ,           (   21   )                               
 
         [0037]    where p=0 if X 0 +X 1 &lt;0, and p=1023 if X 0 +X 1 &gt;1023. Note that X is a correction factor, X 0  is an initial correction factor and X 1  is a first correction factor after the initial one.  
         [0038]    The value x as set forth in equation (21) needs to have a prescribed accuracy. This degree of accuracy, i.e., number of iterations required, is determined as follows.  
         [0039]    The value of x determine via equation (21) is employed in equation (20) to obtain modified values of Pr and Pb. To this end, let x be the exact value given by equation (21) and x′ be an approximation. Then,  
           x′=x+e , where e is the error in the approximation.  (22)  
         [0040]    Substituting equation (22) into equation (20), yields the error in Pr and Pb due to the use of x′ instead of x as  
         Error in  Py=e ( Py− 512), where y is r or b.  (23)  
         [0041]    Since |Py−512|&lt;512, the error in chroma is bounded by  
         |Error in  Py|≦ 512| e|.   (24)  
         [0042]    Therefore, if |e&lt;2 −9 , then the error in the determination of Pr or Pb via equation (20) will be less than one (1) LSB (least significant bit). This indicates that the value of x in equation (22) only needs to be computed to an accuracy of 2 −9 . That is, x only needs to have nine (9) bits after the binary point and, hence, only nine (9) iterations are required.  
         [0043]    Embodiments of the Invention  
         [0044]    A first process for efficiently realizing the SD to HD color space conversion is set forth below. Thus, for a given set of SD luma and chroma, i.e., Ys, Cr and Cb, do the following:  
         [0045]    [0045] 601 —Determine Yh, Pr and Pb via equation (17) (note that the coefficients need to be quantized).  
         [0046]    [0046] 602 —Determine R 0 , G 0 , B 0  and R 1 , G 1 , B 1  via equation (18) and equation (19), respectively. Note that R 0 =G 0 =B 0 .  
         [0047]    [0047] 603 —If 0≦(X 0 +X 1 )≦1023 for all X=R, G, B then STOP, else go to step  604 .  
         [0048]    [0048] 604 —Let X be one of R, G, B, such that (X 0 +X 1 )&lt;0, or (X 0 +X 1 )&gt;1023.  
         [0049]    Let  
         [0050]    p=0 if (X 0 +X 1 )&lt;0, and p=1023 if (X 0 +X 1 )&gt;1023. Determine  
         x   =       p   -     X   0         X   1         ,                         
 
         [0051]     where x is a first modification factor.  
         [0052]    [0052] 605 —Determine new modified chroma values 512+x(Pr−512) and 512+x(Pb−512).  
         [0053]    The above first process may be effected employing the embodiment shown in FIG. 2. As shown, the SD YCrCb luma and chroma values are supplied to unit  201  where a single matrix multiplication is effected via equation (17) to obtain tentative HD YPrPb values ( 601 ). Then, the tentative values are modified, if required, in unit  202  to obtain the new HD YPrPb luma and chroma values ( 602  through  605 ). It should be noted that this first process may be suitable for software implementation but not very suitable for hardware implementation primarily due the multiplication and the division steps that are required.  
         [0054]    The undesirable use of the division and multiplications in steps  604  and  605  in the above embodiment need to be avoided. This is realized, in accordance with an aspect of the invention, by making an approximation of the value of the factor “x” through a plurality of iterations of its approximation x′, instead of trying to determine it in a single step as is done in step  604  above. This is done as follows;  
         [0055]    a) Starting with x=1.  
         [0056]    b) At each iteration determine the RGB values using  
         [         R           G           B         ]     =       [           R   0               G   0               B   0           ]     +       x              [           R   1               G   1               B   1           ]                   from                 equation                     (   6   )     .                               
 
         [0057]    c) Test to determine if each of R, G, B is in color space region [0,1023].  
         [0058]    d) If one of R, G, B is outside color space region [0,1023], decrease the value of x by one half its value (note that R, G, B must inside region [0,1023] when x=0).  
         [0059]    e) If all of R, G, B are inside region [0,1023], increase the value of x by one half its value.  
         [0060]    f) Iterate steps c-e until either  
         [0061]    1) R, G, B happen to be on the boundary of the valid region, or  
         [0062]    2) a prescribed number of iterations have been completed to realize the desired accuracy for x.  
         [0063]    Thus, it is seen that through the iterations of steps c-e the RGB vector is getting closer and closer to the boundary of the valid region. Each iteration gains one bit in the accuracy of x. Note that as indicated above for a particular application, it was enough for x to have nine (9) bits of accuracy. Consequently, only nine (90 iterations of steps c-e are required.  
         [0064]    The above process, i.e., including steps a-e above, demonstrates how to determine an approximation for the value of x without doing division. It, however, turns out that there is no need to explicitly determine the value of x and then do the multiplications in step  605  above. The multiplications can be carried out as part of the process including step a-e above. For example, the value of 512+x(Pr−512) can be obtained while the value of x is being determined. To this end, the process starts with P=512+x(Pr−512)=Pr. In the iteration process, if x is decreased, P is also decreased by an appropriate amount. Similarly, if x is increase, P is increased by an appropriate amount. Then, at the end of the iterations, P is also at its desired value. Therefore, the modified chroma values are at their desired values at the end of the process.  
         [0065]    A second efficient process for realizing the SD to HD color space conversion is described as follows.  
         [0066]    [0066] 701 —Determine Yh, Pr and Pb via equation (17) (note that the coefficients need to be quantized). These are tentative values Y′P′rP′b.  
         [0067]    [0067] 702 —Determine R 0 , G 0 , B 0  and R 1 , G 1 , B 1  via equation (18) and equation (19), respectively. Note that R 0 =G 0 =B 0 .  
         [0068]    [0068] 703 —Let R=R 0 +R 1 , G=G 0 +G 1 , B=B 0 +B 1 .  
         [0069]    [0069] 704 —If R, G, B as defined in step  703  are all in region [0,1023], then STOP, else go to step  705 .  
         705   -     Let                 Dr       =           Pr   -   512     2                   and                                Db     =         Pb   -   512     2     .                             
 
         [0070]     Let X be one of R, G, B that is outside the region [0,1023].  
           Let                 Dx     =       X   1     2       ,                         
 
         [0071]     where X 1  is that corresponding to R 1 , G 1 , B 1 .  
         [0072]    [0072] 706 —Iterate steps  706 . 1  and  706 . 2  for nine (9) iterations.  
         [0073]    [0073] 706 . 1 —If X&lt;0 or X&gt;1023 (outside of region [0,1023]), then  
         [0074]    Pr(HD)=Pr−Dr, Pb(HD)=Pb−Db, X′=X−Dx  
         [0075]    else if 0&lt;X&lt;1023 (inside of region [0, 1023], but not on the boundary)  
         [0076]    Pr(HD)=Pr+Dr, Pb(HD)=Pb+Db, X′=X+Dx.  
           706.2   -     Let                 Dx       =     Dx   2       ,     Dr   =     Dr   2       ,     Db   =       Db   2     .                             
 
         [0077]    The above second process for effecting the SD to HD color space conversion may be realized employing the embodiment shown in FIG. 3 and FIG. 4. As shown in FIG. 3, SD, YCrCb values are supplied to unit  301  where a single matrix multiplication from SD to HD is performed via equation (17) to determine the tentative HD Y′P′rP′b values ( 701 ). HD Y′P′rP′b values are supplied to unit  302  which determines tentative RGB values in accordance with equation (18) and equation (19) ( 702 ,  703 ). If the tentative RGB values are with the valid region [0,1023], in this example, the tentative HD Y′P′rP′b are used ( 704 ). If not, unit  303  determines the initial values for Dr, Db, Dx and X ( 705 ). Then, in unit  304  iterations are made on Dr, Db and Dx and the HD chroma Pr and Pr values are modified accordingly ( 706 . 1  and  706 . 2 ). It is noted that in units  302 ,  303  and  304  that there is no modification of the HD luma Y value. Further, note that luma Y occurs for each pixel in the image while chroma Cr and Cb occur alternately every second horizontal pixel, i.e., YCr (pixel 1), YCb (pixel 2), YCr (pixel 3), YCb (pixel 4), etc.  
         [0078]    [0078]FIG. 4 shows details of unit  304 . As indicated, Y(HD) in is Y(HD) out of unit  304 . Values for X (X′), Pr(HD) and Pb(HD) are obtained on an iterative basis via iteration units  400 ,  400 - 1  and  400 - 2 , respectively, where in this example the number of iterations is nine (9). Each of units  400 ,  400 - 1  and  400 - 2  are structurally and operationally essentially the same. Thus, unit  400  includes delay unit  401  having a delay of one data clock and which is initially set to an initial value of Dx from unit  303  associated with the incoming YCrCb values. The initial Dx is supplied as an output from delay  401  on the next data clock and is supplied to right shift unit  402 , one input of selector  403  and to negate unit  404 . Right shift unit  402  shifts the digital value of Dx one (1) bit to the right, which effects a divide by 2 function, i.e., Dx/2. In turn, the Dx/2 value is supplied as an input to delay  401  where it is delayed by one data clock. Also, supplied as inputs to selector  403  are the current −Dx value from negate unit  404  and a logical 0 value. Thus, either Dx, −Dx or logical 0 is supplied via selector  403  to an input of summer  405 . The value supplied from selector  403  to summer  405  is dependent on the value of X supplied to comparator  407 . If X&lt;0 or X&gt;1023, X is outside the valid region and selector  403  is controlled to select −Dx; if 0&lt;X&lt;1023, X is inside the valid region and selector  403  is controlled to select Dx; and if X=0 or X=1023, X is on the boundary of the valid region and selector  403  is controlled to select logical 0. The value of X supplied as an input to comparator unit  407  is that from delay  406 . Delay  406  is supplied at reset with an initial value of X from unit  303  (FIG. 3). This initial value of X is supplied on a next data clock as an output from delay  406  to an input of summer  405  and to comparators  407 ,  407 - 1  and  407 - 2 . The output from summer  405  is supplied to an input of delay  406  and, in turn, the output from delay  406  is supplied to each of comparators  407 ,  407 - 1  and  407 - 2 . Additionally, after nine (9) iterations, in this example, the output from summer  405  is X′. Operation of iteration unit  400 - 1  is essentially the same as for iteration unit  400 , discussed above, except of a few differences. The differences between units  400  and  400 - 1  being that an initial value of Dr from unit  303  is supplied to delay  401 - 1  at reset, Dr and −Dr are supplied as inputs to selector  403 - 1 , an initial value of P′r from unit  301  is supplied to delay  406 - 1  at reset, either Dr, −Dr or logical 0 are selected as an output from selector  403 - 1  and along with P′r as inputs to summer  405 - 2  and the output from summer  405 - 1  is Pr(HD), after completion of the nine (9) iterations.  
         [0079]    Similarly, operation of iteration unit  400 - 2  is essentially the same as for iteration unit  400 , discussed above, except of a few differences. The differences between units  400  and  400 - 2  being that an initial value of Db from unit  303  is supplied to delay  401 - 2  at reset, Db and −Db values are supplied to selector  403 - 2 , an initial value of P′b from unit  301  is supplied to delay  406 - 2  at reset, either Db, −Db or logical 0 are selected as an output from selector  403 - 2  and along with P′b as inputs to summer  405 - 2  and the output from summer  405 - 2  is Pb(HD), after completion of the nine (9) iterations.  
         [0080]    In the operation of the embodiment of unit  304  shown in FIG. 4, both addition and subtraction is required to generate the desired values by using the process described in steps  701  through  706 . 2 , as discussed above. A more efficient third process is one in which the subtractions are eliminated. This more efficient third process is as follows:  
         [0081]    [0081] 801 —Determine Yh, Pr and Pb via equation (17) (note that the coefficients need to be quantized). These are tentative values Y′P′rP′b.  
         [0082]    [0082] 802 —Determine R 0 , G 0 , B 0  and R 1 , G 1 , B 1 , via equation (18) and equation (19), respectively. Note that R 0 =G 0 =B 0 .  
         [0083]    [0083] 803 —Let R=R 0 +R 1 , G=G 0 +G 1 , B=B 0 +B 1 .  
         [0084]    [0084] 804 —If R, G, B as defined in step  803  are all in region [0,1023], then STOP, else go to step  805 .  
         805   -     Let                 Dr       =           Pr   -   512     2                   and                                Db     =         Pb   -   512     2     .                             
 
         [0085]     Let X be one of R, G, B that is outside the region [0,1023].  
           Let                 Dx     =       X   1     2       ,                         
 
         [0086]     where X 1  is that corresponding to R 1 , G 1 , B 1 .  
         [0087]    [0087] 806 —Iterate steps  806 . 1  and  806 . 2  for nine (9) iterations.  
         [0088]    [0088] 806 . 1 —If 0&lt;X+Dx&lt;1023 (inside of region [0,1023], but not on the boundary), then  
         [0089]    Pr(HD)=Pr+Dr, Pb(HD)=Pb+Db, X′=X+Dx  
         [0090]    else  
         [0091]     Pr(HD)=Pr, Pb(HD)=Pb, X′=X.  
           806.2   -     Let                 Dx       =     Dx   2       ,     Dr   =     Dr   2       ,     Db   =       Db   2     .                             
 
         [0092]    The above third process may be effected employing the embodiment shown in FIG. 3 and FIG. 5. As shown in FIG. 3, SD YCrCb values are supplied to unit  301  where a single matrix multiplication from SD to HD is performed via equation (17) to determine the tentative HD Y′P′rP′b values ( 801 ). HD Y′P′rP′b values are supplied to unit  302  which determines tentative RGB values in accordance with equation (18) and equation (19) ( 802 ,  803 ). If the tentative RGB values are with the valid region [0,1023], in this example, the tentative HD Y′P′rP′b are used ( 804 ). If not, unit  303  determines the initial values for Dr, Db, Dx and X ( 805 ). Then, in unit  304  iterations are made on Dr, Db and Dx and the HD chroma Pr and Pr values are modified accordingly ( 806 . 1  and  806 . 2 ). It is noted that in units  302 ,  303  and  304  that there is no modification of the HD luma Y value. Further, note that luma Y occurs for each pixel in the image while chroma Cr and Cb occur alternately every second horizontal pixel, i.e., YCr (pixel 1), YCb (pixel 2), YCr (pixel 3), YCb (pixel 4), etc.  
         [0093]    [0093]FIG. 5 shows details of unit  304 . As indicated, Y(HD) in is Y(HD) out of unit  304 . Values for X (X′), Pr(HD) and Pb(HD) are obtained on an iterative basis via iteration units  500 ,  500 - 1  and  500 - 2 , respectively, where in this example the number of iterations is nine (9). Each of units  500 ,  500 - 1  and  500 - 2  are structurally and operationally essentially the same. Thus, unit  500  includes delay unit  401  having a delay of one data clock and which is initially set to an initial value of Dx from unit  303  associated with the incoming YCrCb values. The initial Dx is supplied as an output from delay  401  on the next data clock and is supplied to right shift unit  402 , and one input of selector  501 . Right shift unit  402  shifts the digital value of Dx one (1) bit to the right, which effects a divide by 2 function, i.e., Dx/2. In turn, the Dx/2 value is supplied as an input to delay  401  where it is delayed by one data clock. Also supplied as an input to selector  501  is a logical 0 value. Thus, either Dx or logical 0 is supplied via selector  501  to an input of summer  405 . The value supplied from selector  501  to summer  405  is dependent on the value of X supplied to comparator  407 . If 0&lt;X&lt;1023, X is inside the valid region and selector  501  is controlled to select Dx; and if X≦0 or X≧1023, X is on or outside the boundary of the valid region and selector  501  is controlled to select logical 0. The value of X supplied as an input to comparator unit  502  is that from delay  406 . Delay  406  is supplied at reset with an initial value of X from unit  303  (FIG. 3). This initial value of X is supplied on a next data clock as an output from delay  406  to an input of summer  405  and to comparator  502 . The output from summer  405  after nine (9) iterations, in this example, is X′, where X′=X+Dx, when Dx is selected and X′=X, when logical 0 is selected, and is supplied to iteration units  500 - 1  and  500 - 2  and, therein, to comparator  502 - 1  and  502 - 2 , respectively.  
         [0094]    Operation of iteration unit  500 - 1  is essentially the same as for iteration unit  500 , discussed above, except of a few differences. The differences between units  500  and  500 - 1  being that X′ is supplied to comparator  502 - 1 , an initial value of Dr from unit  303  is supplied to delay  401 - 1  at reset, Dr value is supplied as an input to selector  501 - 1 , an initial value of P′r from unit  301  is supplied to delay  406 - 1  at reset, either Dr or logical 0 are selected as an output from selector  501 - 1  and along with P′r as inputs to summer  405 - 2  and the output from summer  405 - 1  is Pr(HD), after completion of the nine (9) iterations.  
         [0095]    Similarly, operation of iteration unit  500 - 2  is essentially the same as for iteration unit  500 , discussed above, except of a few differences. The differences between units  500  and  500 - 2  being that X′ is supplied to comparator  502 - 2 , an initial value of Db from unit  303  is supplied to delay  401 - 2  at reset, Db value is supplied to selector  501 - 2 , an initial value of P′b from unit  301  is supplied to delay  406 - 2  at reset, either Db or logical 0 are selected as an output from selector  502 - 2  and along with P′b as inputs to summer  405 - 2  and the output from summer  405 - 2  is Pb(HD), after completion of the nine (9) iterations.  
         [0096]    It is noted that most of the discussion above is centered about converting from SD to HD. It will be apparent to those skilled in the art that the embodiments described above can equally be utilized to effect a color space conversion from HD to SD, i.e., a so-called down conversion. To this end the matrix multiplication in, for example, unit  201  in FIG. 2 and  301  in FIG. 3 would be that of equation (4). Equation (4) readily yields a 10 bit representation similar to equation (17) for the down conversion from HD to SD.  
         [0097]    Moreover, the above-described embodiments are, of course, merely illustrative of the principles of the invention. Indeed, numerous other methods or apparatus may be devised by those skilled in the art without departing from the spirit and scope of the invention.