Abstract:
A method and circuit computes a Discrete Cosine Transform in a more efficient manner for improving the computation speed, thereby reducing the computation time and allowing a higher number of digital samples to be processed. The circuit provides a microcontroller that includes a parallel accumulation multiplier for performing a first transform of the input data. A further quantization step is then performed on the transformed data. Likewise, the method includes the first transform being computed by the parallel accumulation multiplier. A further quantization step is performed on the transformed data. In this respect, the method and circuit provides good performance in terms of compression rate.

Description:
RELATED APPLICATIONS 
     This application is based upon prior filed provisional application Serial No. 60/091,080 filed on Jun. 29, 1998, the entire contents of which is incorporated herein by reference. 
    
    
     FIELD OF THE INVENTION 
     The present invention relates to the field of electronics, and, more particularly, to signal processing of digital video image data. 
     BACKGROUND OF THE INVENTION 
     The encoding of video signals requires processing of a very high number of samples, e.g., millions per second. The sample flow is normally processed by many processors operating in parallel. In these applications, a two-dimensional Discrete Cosine Transform (DCT) is used on small input size signals to increase the calculation speed of the digital image compression process. The use of DCTs is disclosed, for example, in the article: “FAST ALGORITHMS FOR THE DISCRETE COSINE TRANSFORM”, by E. Feig and S. Winograd, IEEE Transactions on Signal Processing, Vol. 40, No. 9, September 1992. 
     The transformation phase is an important step of the digital image compression process since it allows compression of the information associated with the input signal. For instance, an 8×8 matrix image block is compressed into a relatively small number of coefficients. The calculation of the DCT is also used in the definition of the JPEG Standard for image compression. The calculation of the DCT involves a particularly large number of operations, typically on the order of O(N 2 ). The variable N denotes the number of points to which the transform is applied. A number of fast calculating algorithms have been developed in an effort to lower the number of necessary operations. 
     A system for DCT calculation is disclosed in U.S. Pat. No. 5,197,021, titled “SYSTEM AND CIRCUIT FOR THE CALCULATION OF THE BIDIMENSIONAL DISCRETE TRANSFORM”. Another solution is disclosed by W. Pennebaker and J. Mitchell, in the article: “STILL IMAGE DATA COMPRESSION STANDARD,” Van Nostrand Reinhold, New York, 1993. However, when an implementation of such approaches is sought on systems in which the critical calculation depends on various factors, a substantial loss in algorithm efficiency is often incurred. This destroys any attempt in lowering the cost in terms of duty cycles required to complete the computation phase. 
     SUMMARY OF THE INVENTION 
     An object of the present invention is to provide a technique for computing a bidimensional Discrete Cosine Transform (DCT) in a more efficient manner. 
     Another object of the invention is to provide a method for computing a DCT using a less complicated circuit, such as using a single microcontroller for computing the DCT. 
     Yet another object of the invention is to provide a circuit for reducing the computation time for computing a DCT. 
     The method and circuit according to the present invention computes a Discrete Cosine Transform in a more efficient manner for improving the computation speed, thereby reducing the computation time and allowing a higher number of digital samples to be processed. 
     The circuit provides a microcontroller that includes a parallel accumulation multiplier for performing at least a first transform of the input data. A further quantization step is then performed on the transformed data. Likewise, the method includes at least the first transform being computed by a parallel accumulation multiplier. IA further quantization step is performed on the transformed data. In this respect, the method and circuit provides good performance in terms of compression rate. The above cited features of the circuit are thus used to optimize the calculation times. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     The features and advantages of the inventive method and circuit architecture will be understood by the following description of a best mode of implementation given by way of indication and a non-limiting example with reference to the following drawings. 
     FIG. 1 is a circuit diagram illustrating a parallel accumulator multiplier included in a circuit architecture according to the present invention; and 
     FIG. 2 is a scheme of how transformed data are processed in the circuit diagram illustrated in FIG.  1 . 
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     For a better understanding of the method and circuit according to the present invention, definition of a Forward Discrete Cosine Transform (FDCT) will be discussed below:                S        (     u   ,   v     )       =         C        (   v   )       2            C        (   u   )       2            ∑     y   =   0     7            ∑     x   =   0     7            s        (     y   ,   x     )            cos        [         (       2      x     +   1     )        u                 π     16     ]            cos        [         (       2      y     +   1     )        v                 π     16     ]                       [   a   ]                                
     where 
     C(v)=/2, when v=0 
     C(v)=1, when v&gt;0 
     The input data are s(y,x), and S(v,u) are the DCT coefficients. From the above formula the two summations may be split as follows:          S        (     v   ,   u     )       =         C        (   v   )       2            ∑     y   =   0     7            cos        [         (       2      y     +   1     )        v                 π     16     ]            (         C        (   u   )       2            ∑     x   =   0     7            s        (     y   ,   x     )            cos        [       (       2      x     +     1      u                 π         16     ]             )                                  
     Hence, putting            t   u          (   y   )       =         C        (   u   )       2            ∑     x   =   0     7            s        (     y   ,   x     )            cos        [         (       2      x     +   1     )        u                   π   .       16     ]                                    
     The equation [a] can be re-written as:          S        (     v   ,   u     )       =         C        (   v   )       2            ∑     y   =   0     7            cos        [         (       2      y     +   1     )        v                 π     16     ]              t   u          (   y   )                                    
     Thus, [a] has been reduced to a successive application of two unidimensional DCTs. 
     The 8×8 matrix of elements t u (y) can be represented as follows:              (             t   0          (   0   )               t   1          (   0   )               t   2          (   0   )               t   3          (   0   )           …               t   0          (   1   )               t   1          (   1   )                                                       t   0          (   2   )                                                                   t   0          (   3   )                                                               …                                                         )           [   b   ]                                
     An algorithm used for calculating the above matrix is disclosed in the above referenced article: “FAST ALGORITHMS FOR THE DISCRETE COSINE TRANSFORM”, by E. Feig and S. Winograd. This article discloses the use of the symmetry present in the DCT equations to lower the number of operations required for the calculation. 
     If the following quantity is defined as C k =cos(kΠ/16) and if s(n) is an eight point vector, by calculating the following sums s jk =s(j)+s(k) and the following differences d jk =s(j)−s(k), the equations for determining the DCT coefficients can be written in the following formulas: 
     
       
           2   S ( 0 )= C   4 ( s   0734   +s   1625 ) 
       
     
     
       
           2   S ( 1 )= C   1   d   07   +C   3   d   16   +C   5   d   25   +C   7   d   34   
       
     
     
       
           2   S ( 2 )= C   2   d   0734   +C   6   d   1625   
       
     
     
       
           2   S ( 3 )= C   3   d   07   −C   7   d   16   −C   1   d   25   −C   5   d   34   
       
     
     
       
           2   S ( 4 )= C   4 ( s   0734   −s   1625 ) 
       
     
     
       
           2   S ( 5 )= C   5   d   07   −C   1   d   16   +C   1 d 25   +C   3   d   34   
       
     
     
       
           2   S ( 6 )= C   6   d   0734   −C   2   d   1625   
       
     
     
       
           2   S ( 7 )= C   7   d   07   −C   5   d   16   +C   3   d   25   −C   1 d 34   [c] 
       
     
     Thus, if the points s( 0 ,x) are initially taken as inputs, the t u ( 0 ) vector is obtained, i.e., the first row in the temporary [b] matrix. However, at the next step, which is necessary to calculate the final points of the bidimensional DCT, the t 0 (y) vector is needed. Therefore, it is necessary that the first column in matrix [b] be determined in advance. At this stage, by applying again the first dimension (1-D) algorithm, the following are obtained: S( 0 , 0 ), S( 1 , 0 ), S( 2 , 0 ) . . . , which is the column of a new matrix. By repeating for the t,(y) vectors, the entire second direction (2-D) DCT points can be obtained. 
     While the overall number of operations required to calculate the DCT may be large, the above-discussed technique optimizes certain characteristics of microcontrollers. The overall large number of operations is despite the use of a fast algorithm for calculating the 1-D DCT. As illustrated in FIG. 1, a microcontroller architecture may be provided with a parallel accumulator multiplier. This allows the results of previously carried out multiplications to be accumulated. In this manner, not all the sums will have to be calculated. However, an exception to this is with respect to finding the s jk  and d jk  values. 
     The next step to the transformation phase is a quantization phase. The multiplication factor 2 appearing in the S(i) equations group [c] can be included into the quantization coefficient. Furthermore, by dividing both terms of equations [c] through one of the coefficients C i , the number of multiplications can be further reduced. As will be appreciated, such coefficients should also be included in the quantization factor of the subsequent phase. 
     Before describing the additional measures taken to optimize the computational cost of the DCT according to the invention, the implementation of the algorithm on microcontrollers does not include any operations involving real or floating point numbers. These operations would not be supported by the microcontroller. Accordingly, the multiplication of real numbers are handled as operating with integers. 
     The coefficients C i , which are real numbers, are converted to integers through a change of base with a multiplication by a power of 2 (leftward shift), and a loop of the fractional portion. On the other hand, the s(y,x) input data are left unaltered since these are image samples represented by eight bits, including a sign, which have undergone a level shift, i.e., have values in the range between −128 and +127 range. 
     Multiplications by a power of 2, as well as divisions, require a minor computational effort since they consist of a shift of the operand bits to the left or to the right through a number of places equal to the exponent. At this point, the multiplication of the coefficients C i  by the s jk  or d jk  values yields a result which is not aligned, in terms of exponential base, to the elements which have not been multiplied. For example, in the following expression s lm +s jk C i , s lm  should also be aligned to the exponent as has been used for converting the real number C i  to an integer. 
     It will be appreciated that, were this transformation to be repeated on nearly all of the equations which yield the points of the 1-D DCT, a loss in efficiency of the algorithm under consideration would be experienced. However, by dividing, for example, the 2nd, 4th, 6th and 8th equations by the d 07  multiplying coefficient, and the 3rd and 7th equations by the d 0734  multiplying coefficient, the alignment operations only needs to be carried out on d 07  and d 0734 . With the 1st and 5th equations, the problem does not exist because the division by C 4  will eliminate the multiplication operations. 
     In view of the above discussion, the 1-D algorithm is applied twice. A first time to s(y,x) and a second time to t u (y). The following is ultimately obtained:        4        (             S        (     0   ,   0     )         C   4   2               S        (     0   ,   1     )           C   4          C   1                 S        (     0   ,   2     )           C   4          C   2             …               S        (     1   ,   0     )           C   1          C   4                 S        (     1   ,   1     )         C   1   2               S        (     1   ,   2     )           C   1          C   2                                 S        (     2   ,   0     )           C   2          C   4                                                     …                                             )                            
     The coefficients of the 2-D DCT are, therefore, divided by C i . Specifically, the divisions by the squares of C i  are presented on the main diagonal, and the divisions by the cross products of C i  are presented in the remainder of the matrix. Also present is a factor 4 which multiplies all the elements. 
     As previously mentioned, the calculation of the DCT is followed by the quantization phase. Therefore, the need to have the proper values of the coefficients calculated in the previous DCT phase reset can be avoided by including the division and multiplication operations, required for adjustment purposes, to the quantization coefficients. 
     The above technique can be further utilized to advantage through an efficient construction of the code. For the purpose, a description in machine language, i.e., assembly language, of the algorithm has been used so that by exploiting the hardware features the time taken to calculate the algorithm could be improved. As for the quantization phase, the luminance and chrominance blocks are handled differently due to the different informational contents. The following are the quantization tables used as recommended by the JPEG Standard: 
     
       
         
               
             
               
               
               
               
               
               
               
               
               
             
           
               
                 TABLE 1 
               
               
                   
               
               
                 Quantization table for luminance 
               
               
                   
               
             
             
               
                   
               
             
          
           
               
                   
                 16 
                 11 
                 10 
                 16 
                 24 
                 40 
                 51 
                 61 
               
               
                   
                 12 
                 12 
                 14 
                 19 
                 26 
                 58 
                 60 
                 55 
               
               
                   
                 14 
                 13 
                 16 
                 24 
                 40 
                 57 
                 69 
                 56 
               
               
                   
                 14 
                 17 
                 22 
                 29 
                 51 
                 87 
                 80 
                 62 
               
               
                   
                 18 
                 22 
                 37 
                 56 
                 68 
                 109  
                 103  
                 77 
               
               
                   
                 24 
                 35 
                 55 
                 64 
                 81 
                 104  
                 113  
                 92 
               
               
                   
                 49 
                 64 
                 78 
                 87 
                 103  
                 121  
                 120  
                 101  
               
               
                   
                 72 
                 92 
                 95 
                 98 
                 112  
                 100  
                 103  
                 99 
               
               
                   
                   
               
             
          
         
       
     
     
       
         
               
             
               
               
               
               
               
               
               
               
               
             
           
               
                 TABLE 2 
               
               
                   
               
               
                 Quantization table for chrominance 
               
               
                   
               
             
             
               
                   
               
             
          
           
               
                   
                 17 
                 18 
                 24 
                 47 
                 99 
                 99 
                 99 
                 99 
               
               
                   
                 18 
                 21 
                 26 
                 66 
                 99 
                 99 
                 99 
                 99 
               
               
                   
                 24 
                 26 
                 56 
                 99 
                 99 
                 99 
                 99 
                 99 
               
               
                   
                 47 
                 66 
                 99 
                 99 
                 99 
                 99 
                 99 
                 99 
               
               
                   
                 99 
                 99 
                 99 
                 99 
                 99 
                 99 
                 99 
                 99 
               
               
                   
                 99 
                 99 
                 99 
                 99 
                 99 
                 99 
                 99 
                 99 
               
               
                   
                 99 
                 99 
                 99 
                 99 
                 99 
                 99 
                 99 
                 99 
               
               
                   
                 99 
                 99 
                 99 
                 99 
                 99 
                 99 
                 99 
                 99 
               
               
                   
                   
               
             
          
         
       
     
     The quantization phase is performed by divisions which, however, can be converted to multiplications. This is where Q(u,v) are the elements in the above tables:            S   Q          (     v   ,   u     )       =         S        (     v   ,   u     )         Q        (     v   ,   u     )         =       S        (     v   ,   u     )            (     1     Q        (     v   ,   u     )         )                                
     However, if the algorithm is to be applied in its entirety, the remaining terms in S(u,v) should be removed at the end of the DCT transformation operation. Therefore, the correct operation becomes:            S   Q          (     v   ,   u     )       =         S   ~          (     v   ,   u     )            (     1     Q        (     v   ,   u     )         )              C   i          C   j       4                              
     where {tilde over (S)}(v,u) is the result of the DCT. 
     After carrying out the multiplication, everything must be brought back to the proper exponential base. That is, a division by a power of 2 must be carried out by a rightward shift through a corresponding number of places to the precision being used. The result thus obtained will be an integer which represents the quantized DCT coefficients, which are then included in the 8×8 output block in a zig-zag pattern as shown in FIG.  2 . 
     The inventive method and circuit architecture achieve many advantages; such as a providing a faster calculation of the DCT; an efficient use of the circuit architecture does not require any additional hardware provisions; and there is no need for a floating-point multiplier.