Abstract:
A method and apparatus for controlling image compression is disclosed. A current block of pixels is firstly compressed. The average pixel size of the compressed current block is averaged with an average pixel size of preceding block or blocks to obtain an average value. The compressed current block is passed as output, if the average value is not greater than a target value; otherwise a portion of the current block prior to compression is truncated and then passed as the output.

Description:
BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     The present invention generally relates to image compression, and more particularly to a method and apparatus for dynamically controlling pixel size in image compression. 
     2. Description of the Prior Art 
     Image compression is frequently used to reduce data size of a digital image, to facilitate other image process, image storage or image transport. In the image transport, for example, pixel size of the compressed image should not exceed system bandwidth with which the compressed image can be reliably transported; otherwise the buffer of the encoder/transmitter or the decoder/receiver would result in overflow, a situation that system designers keenly want to prevent from occurring. 
     It is recognized that no single compression/coding scheme is universally suitable for all kinds of image and systems. For the worse, a compression/coding scheme will usually uncontrollably expand instead of reducing the size of an image of certain types. 
     For the foregoing reasons, a need has arisen to propose a method and apparatus that could controllably and dynamically govern the image compression/coding, to prevent the occurrence of buffer overflow and catastrophic data expanding. 
     SUMMARY OF THE INVENTION 
     In view of the foregoing, it is an object of the present invention to provide a compression/coding method and apparatus that could controllably and dynamically govern the image compression/coding, to prevent the occurrence of buffer overflow and catastrophic data expanding. 
     According to the object, the present invention provides a method for controlling image compression. A current block of pixels is firstly compressed. The average pixel size of the compressed current block is averaged with an average pixel size of preceding block or blocks to obtain an average value. The compressed current block is passed as output, if the average value is not greater than a target value; otherwise a portion of the current block prior to compression is truncated and then passed as the output. 
     According to another embodiment, the present invention provides apparatus for controlling image compression. A compressor compresses a current block of pixels. A compression controller averages the average pixel size of the compressed current block with an average pixel size of preceding block or blocks to obtain an average value. Subsequently, the compression controller passes the compressed current block as output, if the average value is not greater than a target value. Otherwise, a truncator truncates a portion of the current block prior to compression, and passes the truncated current block as the output under control of the compression controller. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1A  illustrates a flow diagram of image compression method according to one embodiment of the present invention; 
         FIG. 1B  illustrates a block diagram of corresponding image compression apparatus according to the embodiment; 
         FIG. 1C  shows an example of image pixels under compression according to the present embodiment with respect to  FIGS. 1A-1B ; 
         FIG. 2A  illustrates a flow diagram of associated image decompression method according to the embodiment of the present invention; and 
         FIG. 2B  illustrates a block diagram of associated image decompression apparatus according to the embodiment. 
     
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
       FIG. 1A  illustrates a flow diagram of image compression method according to one embodiment of the present invention, and  FIG. 1B  illustrates a block diagram of corresponding image compression apparatus according to the embodiment.  FIG. 1C  shows an example of image pixels under compression according to the present embodiment with respect to  FIGS. 1A-1B . For purpose of demonstration and brevity, only a partial line of a frame is illustrated here. 
     At the outset of compression, the pixels of  FIG. 1C  are grouped into blocks as indicated with dotted lines. In this exemplary embodiment, four neighboring pixels are grouped as a block. For example, neighboring pixels  10 ,  11 ,  13 ,  13  constitute a block #n, and following pixels  20 ,  128 ,  200 ,  255  constitute another block #n+1. It is appreciated by those skilled in the art that the number of pixels in a block is not limited to four as in this example, and may be fixed or varied. 
     The blocks are then subjected to compression or encoding (step  10 ) in sequence by a compressor  20 . It is noted that the terms “compression” and “encoding/coding” are interchangeably used in this disclosure. In the embodiment, the current block #n temporarily stored in a buffer  22  is firstly subjected to compression. For the purpose of illustration, a differential pulse code modulation (DPCM) is used for image compression with the assumption that neighboring pixels have similar brightness, while other coding or compression technique could be well utilized instead. In the DPCM, a preceding pixel&#39;s brightness is subtracted from a succeeding pixel&#39;s brightness. The results are shown in  FIG. 1C  and the second column of Table I. 
                                         TABLE I                               Entropy   Pixel size           original   DPCM   coding   (bits/pixel)                           10   10 − 10 = 0   0   1 × 3 = 3           11   11 − 10 = 1   100   3 × 3 = 9           13   13 − 11 = 2   1101   4 × 3 = 12           13   13 − 13 = 0   0   1 × 3 = 3           Total = 24 × 4 = 96           Total = 27           Average = 96/           Average = 27/           4 = 24           4 = 6.7                        
In the embodiment, the DPCM results are further, but not necessarily, subjected to another compression-entropy coding, such as Huffman coding. In the entropy coding, the brightness difference (of DPCM) that occurs more frequently are assigned shorter codes, and the brightness difference that occurs less frequently are assigned longer codes. The results are thus variable-length codes as shown in the third column of Table I, with the pixel size (bits/pixel) shown in the fourth column of Table I. It is noted that the number of bits in each entropy code is multiplied by three (3) for the reason that a pixel is displayed, for example, as a composite result of red (R) color, green (G) color and blue (B) color in the RGB color space. As seen from the sixth row of Table I, the four original pixels are compressed from 96 bits (or average pixel size of 24 bit/pixel) to 27 bits (or average pixel size of 6.7 bits/pixel). In other words, the compression reaches a compression rate of 3.5.
 
     Subsequently, an average value is obtained by averaging the average pixel size of the compressed current block #n with the average pixel size of preceding block or blocks that have been either compressed or truncation coded (step  11 ). It is appreciated by those skilled in the art that the number of preceding blocks to be averaged may be one or more than one. In the embodiment, a compression controller  24  operates to perform the averaging according to the output of the compressor  20  and a stored preceding average pixel size. In this example, assume the average pixel size of preceding blocks is 11.3 bits/pixel, and therefore the average value is 9 (=(11.3+6.7)/2) bits/pixel. 
     The average pixel size is then compared to a target value (step  12 ) with which a system bandwidth can accommodate and ensure that an encoder or a decoder buffer does not overflow. If the average value is not greater than the target value, the compression controller  24  activates the compressor  20  (and inactivates a truncator  26 ) such that the output from the compressor  20  is allowed to pass (step  13 ). On the other hand, if the average value is greater than the target value, the compression controller  24  then (inactivates the compressor  20  and) activates truncator  26  to perform truncation coding (step  14 ) on the original pixels of the current block such that the output from the truncator  26  is allowed to pass (step  15 ). The truncation coding on the block is discussed below accompanying the exemplary block #n+1. For the current block #n, the average value (i.e., 9) is not greater than the target value (i.e., 12), and therefore the output from the compressor  20  is allowed to pass (step  13 ). 
     The block #n+1 currently stored in the buffer  22  is now subjected to compression, i.e., DPCM and entropy coding. The results from DPCM are shown in  FIG. 1C  and the second column of Table II, and the results from entropy coding are shown in the third column, with the pixel size (bits/pixel) shown in the fourth column of Table II. 
     
       
         
               
               
               
               
             
           
               
                 TABLE II 
               
               
                   
               
               
                   
                   
                 Entropy 
                 Pixel size 
               
               
                 original 
                 DPCM 
                 coding 
                 (bits/pixel) 
               
               
                   
               
             
             
               
                  20 
                  20 − 13 = 7 
                 0111 
                 4 × 3 = 12 
               
               
                 128 
                 128 − 20 = 108 
                 11110 
                 5 × 3 = 15 
               
               
                 200 
                 200 − 128 = 72 
                 101100 
                 6 × 3 = 18 
               
               
                 255 
                 255 − 200 = 55 
                 111110 
                 6 × 3 = 18 
               
               
                 Total = 24 × 4 = 96 
                   
                   
                 Total = 63 
               
               
                 Average = 96/ 
                   
                   
                 Average = 63/ 
               
               
                 4 = 24 
                   
                   
                 4 = 15.7 
               
               
                   
               
             
          
         
       
     
     As seen from the sixth row of Table II, the four original pixels are compressed from 96 bits (or average pixel size of 24 bit/pixel) to 63 bits (or average pixel size of 15.7 bits/pixel). 
     Subsequently, an average value is obtained by averaging the average pixel size of the compressed current block #n+1 with the average pixel size of preceding block or blocks that have been either compressed or truncation coded (step  11 ). In this example, as the average pixel size of preceding blocks is 9 bits/pixel, the average value is thus 12.3 (=(9+15.7)/2) bits/pixel. 
     The average value is then compared to a target value (step  12 ) with which a system bandwidth can accommodate and ensure that an encoder or a decoder buffer does not overflow. In this example, the average value (i.e., 12.3) is greater than the target value (i.e. 12), and the compression controller  24  therefore (inactivates the compressor  20  and) activates truncator  26  to perform truncation coding (step  14 ) on the original (uncompressed) pixels of the current block #n+1 such that the output from the truncator  26  is allowed to pass (step  15 ). According to the present embodiment, the least significant bit or bits (LSB) of the pixel brightness are truncated, such that the average pixel size is no longer greater than the target value (12 bits/pixel) with which a system bandwidth can accommodate. For example, four least significant bits (LSB) of the pixel brightness for each color are truncated, as shown in second column (before truncation) and the third column (after truncation) of Table III. The average pixel size of the current block #n+1 after truncation coding becomes 12 bits/pixel. This average pixel size (i.e., 12) is averaged with the average pixel size (i.e., 9) of preceding blocks up to the block #n, and the average pixel size of preceding blocks up to the block #n+1 is updated as 10.5 (=(9+12)/2) bits/pixel. 
     
       
         
               
               
               
             
               
               
               
             
           
               
                 TABLE III 
               
               
                   
               
               
                   
                 Before 
                 after 
               
               
                 Original 
                 truncation 
                 truncation 
               
               
                 (in decimal) 
                 (in binary) 
                 (in binary) 
               
               
                   
               
             
             
               
                   
               
             
          
           
               
                 20 
                 00010100 
                 0001 
               
               
                 128 
                 10000000 
                 1000 
               
               
                 200 
                 11001000 
                 1100 
               
               
                 255 
                 11111111 
                 1111 
               
               
                   
               
             
          
         
       
     
     For the block #n+1, the truncated results in Table III are allowed to pass (step  15 ) by the compression controller  24  as output, in lieu of the results of entropy coding in Table II. 
       FIG. 2A  illustrates a flow diagram of associated image decompression method according to the embodiment of the present invention, and  FIG. 2B  illustrates a block diagram of associated image decompression apparatus according to the embodiment. 
     At the outset of the decompression, a decompression controller  44  determines whether the pixels temporarily stored in a buffer  42  have ever been truncated (step  30 ). The determination of truncation is usually performed by, but not limited to, examining header transported from a compressor/encoder. If the determination is negative, the pixels are subjected to a decompression or decompressions (step  31 ) of a decompressor  40  that are the inverse operation(s) of the compressor  20 . On the other hand, if the determination of step  30  is affirmative, the pixels are subjected to reconstruction (step  32 ) by a reconstructor  46  such that the truncated LSB(s) are reconstructed, for example, by inserting bit(s) “0” or “1,” at the locations of the truncated LSB(s). For the example discussed above, each truncated pixel of the block #n+1 is reconstructed by inserting bits “0” at [3:0], as shown in the third column of Table IV. 
     
       
         
               
               
               
               
               
             
               
               
               
               
               
             
           
               
                   
                 TABLE IV 
               
               
                   
                   
               
               
                   
                 Original 
                   
                   
                   
               
               
                   
                 (in 
                   
                   
                 Unconditional 
               
               
                   
                 decimal) 
                 Truncated 
                 Reconstructed 
                 carry 
               
               
                   
                   
               
             
             
               
                   
               
             
          
           
               
                   
                 20 
                 0001 
                 00010000 
                 00011000 
               
               
                   
                 128 
                 1000 
                 10000000 
                 10001000 
               
               
                   
                 200 
                 1100 
                 11000000 
                 11001000 
               
               
                   
                 255 
                 1111 
                 11110000 
                 11111000 
               
               
                   
                   
               
             
          
         
       
     
     In the present embodiment, a further step  33 —unconditional mathematical carry is performed, such that the most significant bit of the inserted LSB(s) is replaced with a carry “1”. In this example, the most significant bit of the four inserted LSBs (or the fourth bit from the right hand of the reconstructed pixel) is replaced with a carry “1”. This operation is performed in order to make up the loss during the lossy truncation coding. 
     According to the embodiment illustrated above, the present invention could be utilized to controllably govern the compression/coding by dynamically selecting an appropriate compression/coding scheme such that the pixel size of the compressed image would not exceed system bandwidth, therefore preventing the occurrence of buffer overflow. In short, the compressor/decompressor or encoder/decoder according to the present invention can operate at possibly full speed without overflow. 
     Although specific embodiments have been illustrated and described, it will be appreciated by those skilled in the art that various modifications may be made without departing from the scope of the present invention, which is intended to be limited solely by the appended claims.