Abstract:
A transform approach to image coding where pixels are coded in the order prescribed by a predetermined &#34;List&#34;. The code for each pixel is developed by computing a prediction for the pixel based on the known pixel values in the neighborhood of the pixel and subtracting this prediction from the true value of the pixel. This results in a sequence of predominantly non-zero valued pixel prediction errors at the beginning of the encoding process (of each block), and predominantly zero valued pixel prediction errors towards the end of the encoding process. Enhancements to this approach include adaptive encoding, where pixel sequences having expected zero prediction errors are not encoded, and run length encoding of the signals to be transmitted or stored for augmenting the encoding process.

Description:
This application is a continuation of application Ser. No. 841,571, filed on Mar. 20, 1986, now abandoned. 
    
    
     BACKGROUND OF THE INVENTION 
     This relates to data processing and, more specifically, to a method and apparatus for encoding and decoding information in an efficient manner, both from the standpoint of the number of bits employed to describe the data and from the standpoint of the encoding process. Still more particularly, the method and apparatus of this invention relate to encoding and decoding of image information. 
     Image data compression has been a topic of considerable interest in recent years because of the burgeoning fields of information and communication. Although a picture is worth a thousand words, with unadorned techniques it may take more transmission capacity to handle a single picture than many thousands of words. Compared to text, the information content in an image is normally quite large and, therefore, the efficient transmission and/or storage of pictorial information has been subjected to extensive research for a number of years. 
     A number of factors have come into play that assist in that research. First, in many instances, the images stored or transmitted are static. No movement needs to be communicated, and that relaxes the storage and transmission requirements. Second, users find it acceptable for motion to have a limited temporal resolution. That too relaxes the storage requirements. Third, sometimes the information need not be handled on a real-time basis. Consequently, there is time to indulge in rather sophisticated processing techniques. 
     Another reason why image data compression is possible is that images contain a considerable amount of superfluous information. Generally, one can identify two kinds of superfluous information. Statistical redundancy, having to do with similarities in the data representing the image; and subjective redundancy, having to do with data similarities which can be removed without user complaints. Statistical redundancy is illustrated by the transmission of a white page which may be depicted without repeatedly specifying (at every pixel) the color of the page. Subjective redundancy is illustrated by the fact that in depicting movement one can ignore events that occur faster than a certain speed, because the human eye cannot discern those events. 
     Researchers have tried to encode images in a number of ways that realize transmission and storage savings by eliminating the aforementioned redundancies. These encoding approaches can be broadly divided into predictive Pulse Code Modulation, Interpolative or Extrapolative Coding, Transform Coding, and Vector Quantization. 
     In predictive coding, such as in the Differential Pulse Code Modulation (DPCM) approach, an attempt is made to predict the pixel to be encoded. The prediction is made by using the encoded values of the previously encoded pixels. Generally, these pixels are combined to generate a predicted value; and the signal that is quantized, encoded and transmitted is the difference between the actual value and the generated predicted value. Adaptive DPCM, where the prediction algorithm is based on local picture statistics, is a variation on this approach. 
     In interpolative coding, only a subset of the extrapolative coding, only a subset of the pixels is sent to the receiver. The receiver must then interpolate the available information to develop the missing pixels. 
     In transform coding, instead of coding the image as discrete intensity values on sets of sampling points, an alternative representation is made first by transforming blocks of pixels into a set of coefficients. It is the coefficients that are quantized and transmitted. Several transformations have been used in the art, such as the Hadamard, the Karhunen-Loeve, and the Discrete Cosine Transforms. These transforms, being unitary, conserve the signal energy in the transform domain but, typically, most of the energy is concentrated in relatively few samples. Predominately, it is the samples representing the low frequencies that are non-zero. Samples that are zero, or ones that are very close to zero, need not be transmitted. Still additional samples of low value can be quantized coarsely, resulting in substantial compression of the data that needs to be either stored or transmitted. 
     Yet another encoding technique is Vector Quantization, where an image block is decomposed into a set of vectors. From the possible (or experienced) signal patterns and corresponding vectors, a subset of representative vectors is selected and included in a code book. When encoding, the developed sets of vectors are replaced with the closest representative vectors in the code book, and compression is achieved by further replacing the representative vectors with labels. At the receiver, the inverse operation takes place with a table look-up which recovers the representative vectors. A facsimile of the image is reconstructed from the recovered representative vectors. 
     The decoding process in vector quantization is quite simple, but that is not the case on the encoding side. Primarily this is because one must develop the code book, and that becomes impractical when the image block is large or when good fidelity is desired. Also, to develop those representative vectors one must use a &#34;training&#34; set of data. 
     It is an object of this invention, therefore, to provide an image compression approach that is both efficient and easy to implement. 
     SUMMARY OF THE INVENTION 
     These and other objects of the invention are realized with a Block List Transform (BLT) approach to image coding. As with the the Block Transform Coding and the Vector Quantization approaches, the BLT encodes two dimensional blocks of pixels. Furthermore, it uses predictive coding to represent the pixels of each block which is processed. The encoding process is different, however, because the pixels are not treated in the normal order of left-to-right, top-to-bottom. Instead, they are coded in the order prescribed by a predetermined &#34;List&#34;. The code for each pixel is developed by computing a prediction based on the previously coded pixel values in the neighborhood of the pixel being coded and subtracting this prediction from the true value of the present pixel. This results in a sequence of predominantly non-zero valued pixel prediction errors at the beginning of the encoding process (of each block), and predominantly zero valued pixel prediction errors towards the end of the encoding process. Enhancements to this approach include adaptive encoding, where pixel sequences having expected zero prediction errors are not encoded, and run length encoding of the signals to be transmitted/stored for augmenting the encoding process. 
    
    
     BRIEF DESCRIPTION OF THE DRAWING 
     FIG. 1 depicts a square image and a plurality of blocks dividing the image; 
     FIG. 2 shows one of the blocks of FIG. 1 in detail and identifies the pixel coordinates within the block; 
     FIG. 3 is a table specifying the prediction pixels employed in developing a predicted value for each of the pixels in FIG. 2; 
     FIG. 4 identifies the quantization groupings in the table of FIG. 3; 
     FIG. 5 is a table identifying the quantization interval and rounding values for the groupings of FIG. 4; 
     FIG. 6 is a table that presents the pixels of FIG. 2 in an order, as close as possible, according to geometrical proximity of the pixels; 
     FIG. 7 is a table that introduces the prediction orders and thresholds used in an adaptive encoding method following the principles of this invention; 
     FIG. 8 is a block diagram describing one embodiment of an encoder embodying the principles of this invention; 
     FIG. 9 is a block diagram illustrating a decoder embodiment adapted to decode the signals developed by the FIG. 8 encoder; 
     FIG. 10 is a block diagram illustrating an encoder embodiment employing adaptive encoding in accordance with the principles of this invention; and 
     FIG. 11 is a block diagram illustrating a decoder embodiment adapted to decode the signals developed by the FIG. 10 encoder. 
    
    
     DETAILED DESCRIPTION 
     An image to be encoded may be divided into overlapping blocks, or non-overlapping blocks as shown in FIG. 1. Typically the blocks are small enough so that there is reasonable correlation between the pixels in the block. FIG. 2 shows an 8×8 block of pixels, such as block 10 in FIG. 1, along with some pixels from previously coded blocks above and to the left of block 10. The first pixel subscript is the row number, and the second is the column number. The pixels to be coded are in rows 1-8, columns 1-8, while row 0 and column 0 are from previously transmitted blocks, and need not be coded. FIG. 2 can also be viewed as an overlapping block, having one overlapping row and one overlapping column. 
     FIG. 3 is a table which shows one complete list of the pixels in block 10. The list of FIG. 3 specifies the order of coding of the pixels in the block of FIG. 2 and the pixels used in developing the predicted value of each pixel. It should be understood, of course, that the list of FIG. 3 is merely illustrative and that many other lists can be created which achieve essentially the same encoding results. Also included in the table of FIG. 3 are the previously transmitted pixels which are to be used in the prediction of the corresponding pixel to be coded. 
     The method of my invention proceeds as follows. The first pixel to be encoded and sent is the lower right hand pixel 88 (in FIG. 2), for which a prediction is formed from pixels 08 and 80. It may be highlighted that pixels 08 and 80 have values that have been previously developed in the course of the encoding process of previous blocks. The difference between the actual value of pixel 88 and its prediction is quantized, coded and transmitted. This is the quantized differential prediction error. A coded value for pixel 88 is then formed by adding the prediction to the quantized differential error. This is also the value which is reconstructed at the receiver. In accordance with the instant invention, the coded value of pixel 88 is substituted in block 10 for the original value of the pixel. Next, a prediction for pixel 84 is developed using pixels 80 and 88 and the difference between the prediction value and the actual value is encoded and sent. Pixel 84 is then replaced in block 10 by its coded value. This procedure continues until all remaining pixels in the list have a zero quantized differential prediction error. At that time, an End-Of-Block (EOB) message is sent, and the coder moves onto the next block of pixels to be coded. 
     Actually, in some realizations it is advantageous (as will become more apparent infra) to use a small buffer where a few values are saved prior to transmission. Also, a zero counter keeps track of strings of zero values. Zero values are not sent right away and may not be sent at all, if they occur immediately before an EOB. 
     It may be observed that as the algorithm progresses further down the list, the prediction pixels become spatially closer and closer to the pixel to be coded. This leads to a prediction error that, on average, becomes smaller and smaller toward the end of the list. 
     It may also be noted that, as in Block Transform Coding, in BLT coding the last few non-zero data are often preceded by many zero values. Encoding and sending all those zero values in order to read the few non-zero data points can cause an unnecessarily high bit rate. Therefore, if the last few nonzero values (stored in the aforementioned small buffer) are small, they can usually be truncated to zero without seriously affecting coded image quality, and the overall bit rate is then reduced. 
     Another property for which the BLT can be used to good advantage is that quantization of the prediction error can become coarser and coarser as the encoding process continues down the list. This occurs for two reasons. First, nonzero BLT data towards the end of the list are caused by edges or texture in the picture; and in these regions it is well known that quantization noise is less visible than in flat, low detail areas of the image. Secondly, for pixels further down the list, only large magnitude intensity transitions are able to cause sizable BLT data, because the neighboring points are, presumably, close to the actual average of the image. Therefore, large quantization errors will not be as visible for these pixels. Thirdly, the feedback quantization of the BLT results in the quantization noise being fairly localized and of high frequency. This further contributes to a lessening of visibility. This, by the way, is in contrast to Block Transform Coding approaches (e.g., Cosine Transform) in which quantization of one coefficient affects all pixels in the block. 
     Taking advantage of the above-described inherent advantages of the BLT approach, an enhanced algorithm allows for different quantization levels in different groups of pixels. FIG. 4 shows the pixels of FIG. 3 grouped into six classes {1,2,3,4,5,6} for the purpose of defining quantizations. Pixels in the lower classes have their prediction errors quantized finer than those of the upper classes. FIG. 5 shows one possible allocation for uniform quantization. The quantization can be carried out by simply adding the rounding value to the magnitude of the prediction error, dividing by the quantization interval size and multiplying by the sign of the prediction error. This yields a signed integer. Reconstruction is accomplished through multiplication by the interval size. 
     When encoding certain classes of images, it turns out that clusters of nonzero data points occur along edges of objects and in textured regions. This clustering of BLT data points suggests that savings may be possible if the pixels are sent not in a fixed order, but instead are sent according to a criterion of whether or not nearby data points are zero. The first step in implementing such an adaptive procedure is to reorder the prediction table of FIG. 4 so that pixels which are geometrically close to each other in the block are also close to each other in the table. One possibility of such reordering is shown in the prediction table of FIG. 6. It may be noted that the FIG. 4 quantization classes are retained, and that in some cases the pixels used to develop the prediction values had to be altered in order to utilize only previously coded pixels. This is necessary because the receiver has available only the previously encoded pixels. 
     The next step is to devise a criterion for determining when there are no more significant data points to be sent in the small region currently being coded. An example of such a procedure is shown in the table of FIG. 7. 
     The first two columns of the FIG. 7 table are the same as in the prediction table of FIG. 6. The next two columns are entitled &#34;Next Pixel if Skip&#34; and specify which coded pixel to skip to if it is determined that coded pixels can be skipped. If a &#34;Small Skip&#34; is to be attempted, the first pixel entry is used. If a &#34;Large Skip&#34; is to be attempted, the second pixel entry is used. 
     In general, whenever a zero quantized prediction error is transmitted, a skip of pixels is attempted. Whether or not to attempt a large or a small skip is determined by the previously coded reference pixels. If the coded prediction errors for these reference pixels are sufficiently small then a large skip is attempted. Otherwise, a small skip is attempted. If there are no reference pixels, then only a small skip is attempted. 
     It may be in certain circumstances that not all skips are in the best interests of maintaining good coded picture quality. For example, in some image blocks pixels 44, 40 and 80 may well have zero quantized prediction error, which would normally imply a large skip from pixel 44 to coded pixel 48. However, in some other image blocks there may be large nonzero quantized prediction errors at some of the intervening coded pixels in the list. For this reason a &#34;Cancel Skip (CS)&#34; message capability is included which may be transmitted by the coder. The occurrence of this message means that the skip attempt which would normally be made because of zero differential values is to be ignored at the coder and the decoder. Decoding then simply resumes with the next pixel, as if the previous pixel has a nonzero differential value. The cancel skip code rarely needs to be sent, however, with well designed Block Lists. 
     Columns 5-8 of the skip criterion table determine whether or not a CS message is to be transmitted. If a large skip is being attempted, columns 4, 6 and 8 are used; otherwise, columns 3, 5 and 7 are used. The way these parameters are used is as follows. Following the decision to attempt a skip, the coder begins calculating quantized differential values for succeeding pixels up to, but not including, the pixel specified in column 3 or 4, whichever is being used. During this process the nonzero quantized values are counted in accordance with their value. When the absolute value of the quantized differential values is small, e.g., equal to the quantization interval itself, then a &#34;small pixel&#34; counter is incremented. If the nonzero value is large, a &#34;large pixel&#34; counter is incremented. For each pixel examined before a possible CS, a zero differential value is coded for that pixel even if the actual quantized differential value is nonzero and one of the counters is incremented. If during the skip attempt, the number in the small pixel counter exceeds the value in column 5 or 6, whichever is being used, or the number in the large pixel counter exceeds the value in column 7 or 8, whichever is being used, then a CS message is sent followed by a zero value for each pixel examined so far in the attempted skip. Coding of pixels then resumes in the normal manner. It may be noted that the letter &#34;I&#34; in the table of FIG. 7 indicates &#34;infinity&#34;, which represents an arbitrary large number; and EB stands for End of Block. 
     By the above-described adaptive means, small areas of zero differential values within a block can be coded without requiring any information to be sent to the receiver. The decoder assumes simply that in the absence of a CS message, skipped pixels have zero differential value and can be replaced by their prediction values in the reproduced image. 
     If skipped pixels occur at the end of the ordered list of coded pixels, then the End-of-Block message can also be deleted from the transmission, as long as the first pixel value in the following block is forcibly transmitted independently of whether it has a zero value. However, it only pays to delete the end-of-block message if less than a certain number of zero values exist. If a long string of zero pixels must otherwise be sent at the end of a block, then sending the end-of-block message takes fewer bits. 
     As simple as the encoding approach is, the decoding approach is even simpler. To decode an image block with the aid of received signals one must only consult the column and row of two previous blocks, as in FIG. 2, (which is effect seed the process) and the Block List used in the encoding process. A prediction signal is developed based on the prediction pixels specified in the list, and the prediction signal is augmented by the quantized prediction error received from the encoder. The augmented signal is stored in the block and the decoding process continues with the next pixel in the list. 
     FIG. 8 shows one possible implementation of the basic coding operation called for by the instant invention. For a simple arithmetic averaging predictor, all that is required is an accumulator 120, a pixel-RAM 130, a ROM 140 for the controlling list, counters 150 and 160, and a coder 170. 
     Although the method of my invention deals with blocks, such as the 8×8 block of FIG. 2, one must realize that in many applications one is presented with entire scan lines at a time. Before accepting the first pixel in the 8th scan line, therefore, one must dispose of (or store) the lines of the previous seven scans. Eight scan lines comprise a strip of pixel blocks and, accordingly, the first step is to load an entire strip of pixel blocks (appearing on line 121), into the pixel-RAM. RAM addresses for this operation are provided by input counter 160. The bottom-most row (8) of pixels from the previously transmitted strip of pixel blocks is kept in the pixel-RAM and becomes the top-most row (0) of the present strip of pixel blocks. The leftmost column (0) of the leftmost block is filled with some suitable predetermined value, e.g., the value of pixel 01, or in the case of color difference blocks, simply zero. 
     Coding commences next. Block counter 150 outputs the address of pixel 00 for the block presently being coded and all other addresses are referenced to it with the aid of adder 157. Accumulator 120 contains a register 122 and that register is cleared. Thereafter, list-ROM 140 outputs, for example four addresses corresponding to the four pixels which are employed to develop the prediction value. List ROM 140 contains the entire list of the block, e.g., the list of FIG. 3. These are added by the accumulator (adder 123), and the sum is divided by four (divider 124) to obtain the coded pixel value. Thence, list-ROM 140 outputs the address of the pixel to be coded, the encoded pixel is passed to subtracter 171 along lead 126 where it meets the predicted value on lead 172. A differential error is computed in subtracter 171 and passed on to quantizer 173. Quantizer 173 develops the quantized prediction error (QPE) whose value is added to the prediction value in adder 174 to obtain the coded pixel value. The coded pixel is then written into the pixel-RAM to replace the uncoded pixel value. This coded pixel value is later be used in the predictions of other pixels in the same block, or for pixels in blocks to the right and below in the image. Succeeding pixels of the block are coded similarly, under control of counter 160 which provides addresses to list-ROM 140 and pixel-RAM 130. 
     The quantized prediction error values may be coded in any one of several ways prior to transmission or storage; most of which are fairly well known. For example, FIG. 8 shows a variable word-length coder 180 for the non-zero values, in parallel with a zero counter 190 which is used to implement run-length coding of zero values. If the end-of-block arrives after a string of zero values (as it usually will), then the final run-length of zeros is not sent. Instead, an end-of-block message is transmitted. 
     The decoder for the basic BLT is shown in FIG. 9 and it is essentially the inverse of the encoder. The variable word-length decoder (180) produces either nonzero prediction error values or zero-run lengths, depending on what was transmitted. In the case of zero-run lengths, the zero counter is used to produce a string of zero quantized prediction error (QPE) values to be added (in adder 174) to the corresponding prediction values (from accumulator 120) in order to reproduce the coded pixels. Upon reception of an end-of-block signal, the zero counter is used to produce zero QPE values for the remaining pixels of the block. After decoding all blocks of a strip, the data is output from pixel-RAM 130 via lead 126, with the pixel-RAM addresses being provided by output Counter 160. List-ROM 140 and counters 150 and 160 operate in a manner that corresponds to their operation in the FIG. 8 encoder. 
     One implementation for an adaptive BLT encoder is shown in FIG. 10. First, all registers are reset to zero (e.g., within accumulators 48 and 64 and elements 69, 70, 71), and image data enters pixel-RAM 41 in the same way as in FIG. 8, with addresses being provided by input counter 42. Coding then commences as in FIG. 8. Pixel addresses within a block are provided by counter 43 and list-ROM 44, and fed to adder 45. The beginning address of each block is output by block-counter 47 and fed to adders 45 and 46. The output of adder 45 then provides the pixel addresses necessary for prediction and coding. Every set of four prediction pixel addresses is followed by one coded pixel address. 
     Coding commences as in FIG. 8 using accumulator-divide-by-4 circuit 48, subtracter 49, quantizer 50, adder 51, and variable word-length coder 59 together with zero counter 30. The output of quantizer 50 is the Quantized Prediction Error (QPE). 
     Adaptive BLT coding begins as soon as a zero value for QPE is transmitted by the coder 59. A QPE=0 causes a STRT signal to appear at the output of NOR gate 52, which in turn causes register 53 to be set to 1.  The output of Register 53 is the skip attempt indicator (S), which enables certain operations described below. The S signal is fed back to NOR gate 52 in order to disable further STRT signals during this skip attempt. Small/Large indicator 54 checks the magnitude of each nonzero QPE and passes the result to counters 55 and 56. If S=1, indicating that a skip attempt is in progress, then small counter 55 counts the number of &#34;small&#34; nonzero QPEs, while large counter 56 counts the number of &#34;large&#34; nonzero QPEs. Whenever S=0, counters 55 and 56 are reset to zero. 
     During a skip attempt, S=1 also causes the Coded Prediction Error (CPE) to be forced to zero by means of inverter 57 and AND gate 58. Zero CPEs generated during a skip attempt are counted by zero counter 60 for possible later transmission. Whenever S=0, counter 60 is reset to zero. 
     Coded Prediction Error (CPE) values are added to the prediction values by adder 51, and the resulting coded pixel values are inserted into pixel-RAM 41 with addresses being provided by adder 45, in the same way as in FIG. 8. However, with adaptive BLT the magnitude of the CPE values (which are provided by gate 58 and modified by ABS circuit 61) are inserted into the prediction-error-RAM 62. Addresses are provided by reference-pixel-ROM 63 and adder 46 in exactly the same way as with list-ROM 44 and adder 45, except that here four reference pixel addresses appear at the output of adder 46 instead of four prediction pixel addresses. 
     While accumulator 48 is calculating a prediction value, accumulator 64 is summing the magnitudes of the corresponding reference pixel CPEs. After this is done, circuit 65 examines the resulting value to determine if a large skip or a small skip should be attempted, and passes the answer to ROMs 66, 67 and 68. Memories 66, 67, and 68 contain the information of columns 3-8 in FIG. 7. At the start of a skip attempt, as indicated by the STRT output of NOR gate 52, the outputs of ROMs 66, 67 and 68 are stored in registers 69, 70 and 71, respectively, for use as follows. 
     Register 69 outputs the number of small nonzero QPEs allowed before a premature cancellation of the skip attempt, and similarly register 70 outputs the number of allowed large nonzero QPEs. Register 71 outputs the next pixel to be encoded if the skip attempt is successful. 
     The output of counter 55, which is the number of small nonzero QPEs encountered so far, is compared with the maximum allowed (in register 69) by comparator 72. If the number is too large then comparator 72 causes a CANCEL signal to appear at the output of OR gate 74. Similarly, the number of large nonzero QPEs (in counter 56) is compared with the maximum allowed (in Register 70) by comparator 73, and if it is too large the CANCEL signal is generated. 
     The CANCEL signal is fed to variable word-length coder 59, whereupon it causes a cancel-skip word to be sent to the channel. Following this, the zero run-length output of zero counter 60 is sent, and counter 60 is reset to zero. The CANCEL signal is also fed to OR gate 75, which generates a STOP signal which, in turn, causes the skip indicator output (S) of register 53 to be reset to zero, thus prematurely ending the skip attempt. 
     During a skip attempt, S=1 enables comparator 76, which compares the output of pixel-counter 43 with the next-pixel-if-skip value in register 71. When they become equal the skip attempt is successful, and the END signal is generated. The END signal is fed to OR gate 75 which resets register 53 to S=0. Coding then recommences in the normal way. 
     An implementation of an adaptive BLT Decoder is shown in FIG. 11, where most of the modules perform exactly the same function as their counterparts in FIG. 10. In normal operation, variable word-length decoder 89 receives CPE values and passes them to adder 81 for construction of the decoded pixels. However, if a CANCEL message is received, then immediately following may be a zero run-length value. Decoder 89 then outputs the CANCEL signal during the entire time that zero counter 80 is producing zero CPE values corresponding to the received zero run-length value. The CANCEL signal of decoder 89 is fed to both OR gate 95 and to NOR gate 82 in order to prevent a skip, as described below. Following this, normal operation resumes. 
     If a zero CPE value is received which is not immediately followed by a CANCEL signal, then a skip can be made, and a STRT signal is generated at the output of NOR gate 82. Skip indicator register 83 is then set to S=1, which disables further operation by decoder 89. Pixels are then decoded using zero CPE values until the END signal is generated by comparator 76, which causes register 83 to be reset to S=0. Following this, normal operation again resumes. 
     Upon reception of an End-of-Block signal, decoder 89 simply outputs a very large zero run-length number to zero-counter 80. This causes zero CPE values to be generated until the end of the block, at which time pixel-counter 43 generates a Start-of-Block signal resetting the system. Frequently, it is not necessary to send and End-of-Block signal, since in many cases the transmission of a few zero CPE values causes automatic skips to the end of the block. 
     The above-described method and implementation are illustrative of the principles of my invention and variations are, of course, possible which are within the scope of my invention. For example, what has been described is an approach where there is effectively a one row and one column overlap between adjacent blocks. It should be realized that any desired overlap is possible in accordance with my invention. The obvious tradeoff is that with greater overlap the prediction accuracy improves, but each new block either encodes fewer pixels or is larger. 
     Another enhancement may be to use a number of pixels other than four in developing the predicted value of a pixel, or of using other than a simple arithmetic average, e.g., median. Again, there is a tradeoff between accuracy and processing effort. 
     Yet another variation relates to the block list. In some applications (e.g., where the block is very large) it may be easier to develop the block list &#34;on the fly&#34; rather than rely on a large table. Instead of a list-ROM element one would have a processing element that would develop the required sets of prediction pixels. 
     Still another enhancement relates to the order in which the blocks of FIG. 1 are processed. In facsimile transmission where sequential scanning is the norm (e.g., from top to bottom and from left to right), blocks would most conveniently be encoded in a similar sequence. This is the approach employed in the above illustrative embodiments, with a pixel-RAM storing strips of data. If the pixel-RAM is large enough, however, the entire image may be stored first and the order of encoding can then be different. One could, for example, start with the block in the center of the image and work outwards, or vice versa. 
     Although the description above relates to encoding and decoding of image information, as has been indicated initially invention relates to the field of data compression generally. The aforesaid pixels are mere illustrative examples of data points, or values, and the method and apparatus described herein in connection with an image compression environment is equally applicable to other data compression tasks, such as compression of speech signals.