DE19549491C2 - Palletised image compression with entropy encoding - Google Patents

Palletised image compression with entropy encoding

Info

Publication number
DE19549491C2
DE19549491C2 DE19549491A DE19549491A DE19549491C2 DE 19549491 C2 DE19549491 C2 DE 19549491C2 DE 19549491 A DE19549491 A DE 19549491A DE 19549491 A DE19549491 A DE 19549491A DE 19549491 C2 DE19549491 C2 DE 19549491C2
Authority
DE
Germany
Prior art keywords
context
symbol
symbols
input
bit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE19549491A
Other languages
German (de)
Inventor
Ahmad Zandi
David G Stork
James Allen
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US08/200,233 external-priority patent/US5471207A/en
Application filed by Ricoh Co Ltd filed Critical Ricoh Co Ltd
Application granted granted Critical
Publication of DE19549491C2 publication Critical patent/DE19549491C2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4006Conversion to or from arithmetic code
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Abstract

The method includes the steps of selecting a context model for the input symbols to be compressed, and reading the input stream of M-ary input symbols. A distribution of contexts indicated by the context model is determined, and a binary sequence is assigned to each of the M symbols in the alphabet, wherein each sequence is K bits, K being an integer greater than or equal to log2M. A reindexing table is formed, having a minimum partial bitwise entropy over a partial alphabet of symbols, for translating each M-ary symbol to its assigned binary equivalent. The input stream is translated to a bit stream which is entropy encoded into a compressed codeword stream.

Description

Die Erfindung betrifft einen Entropie-Codierer nach dem Patentanspruch 1.The invention relates to an entropy encoder according to claim 1.

Bildkompression wird im allgemeinen an digitalisierten Bildern betrieben. Um ein Bild zu digitalisieren, wird das Bild an verschiedenen Stellen auf dem Bild abgetastet, was oft auch als Pixels bezeichnet wird. Jedes Pixel entspricht einer Stelle in dem Bild und eine Pixel- Farbe. Beispielsweise wird ein Bild durch eine zweidimensionale Anordnung aus (1024 × 768) Pixels dargestellt, wobei jedes Pixel einen 24 Bit Wert annehmen kann. Jeder Pixel- Wert kann eine andere Farbe darstellen, so daß das Bild mit Hilfe von 224 oder 16 777 216 möglichen Farben dargestellt werden kann.Image compression is generally performed on digitized images. In order to digitize an image, the image is scanned at various locations on the image, which is often also referred to as pixels. Each pixel corresponds to a location in the image and a pixel color. For example, an image is represented by a two-dimensional arrangement of (1024 × 768) pixels, where each pixel can have a 24-bit value. Each pixel value can represent a different color, so that the image can be displayed using 2 24 or 16 777 216 possible colors.

Bei vielen Anwendungen wird jeder Pixel-Wert einer ganz bestimmten Farbe in dem Bild zu dem Zeitpunkt zugeordnet, wenn das Bild digitalisiert wird. Mit Hilfe dieser Zuordnung kann die Farbe eines vorgegebenen Pixels durch den Pixel-Wert bestimmt werden. Bei anderen Anwendungen ist das digitale Bild ein palettiertes Bild. In einem palettierten Bild ist der Wert jedes Pixels nicht bezüglich einer Farbe festgelegt, es gibt jedoch einen Zeiger bei einem Eintrag in eine Farbpaletten-Tabelle. Wenn ein palettiertes Bild darzustellen ist, wird die Farbe eines Pixels dadurch gefunden, daß der Pixel-Wert als ein Index in der Farbpaletten-Tabelle verwendet wird, welche die Beziehung zwischen jedem Pixel-Wert und der Farbe enthält, die diesem Pixel-Wert zugeordnet ist.In many applications, each pixel value becomes a specific color in the image associated with the time when the image is digitized. With the help of this assignment the color of a given pixel can be determined by the pixel value. at In other applications, the digital image is a palletized image. In a palletized picture the value of each pixel is not fixed in terms of color, but there is a pointer for an entry in a color palette table. If a palletized image is to be displayed, the color of a pixel is found by using the pixel value as an index in the Color palette table is used which shows the relationship between each pixel value contains the color associated with that pixel value.

Eine Palettierung (palettization) ist eine Auswahl von wenigen Farben aus der Menge aller möglichen Farben, z. B. 256 (28) aus 16 777 216 (224) Farben und eine Methode, um eine beliebige Farbe durch eine aus den ausgewählten wenigen Farben zu substituieren. Im Ergebnis kann dann ein palettiertes Bild effizient als ein Code-Buch gespeichert werden, das (entsprechend dem vorstehenden Beispiel) für jeden von 256 Indizes die vollständige 24 Bit- Farbbeschreibung der ausgewählten Farben entsprechend dem 8 Bit-Index jedes Pixels indem Bild auflistet. Somit kommt es zu einer Platzeinsparung, in dem die ausgewählten Farben nur einmal vollständig beschrieben werden und auf jedes Pixel durch genau einen Index in dem Codebuch Bezug genommen wird.Palletization is a selection of a few colors from the set of all possible colors, e.g. B. 256 (2 8 ) out of 16 777 216 (2 24 ) colors and a method to substitute any color with one of the selected few colors. As a result, a palletized image can then be efficiently stored as a code book that (according to the example above) lists, for each of 256 indices, the complete 24-bit color description of the selected colors corresponding to the 8-bit index of each pixel in the image. This results in a space saving in which the selected colors are only completely described once and each pixel is referred to by exactly one index in the code book.

Eine Bildkompression ist für viele Abbildungsanwendungen wegen der Menge an benötigten Daten wichtig, um ein Bild darzustellen. In dem vorstehenden Beispiel werden 24 × 1024 × 768 oder 18 874 368 Bits (2 359 296 Bytes) benötigt, um ein einziges nichtkomprimiertes Bild darzustellen oder es werden 8 × 1024 × 768 Bits (6 291 456 Bytes) im Falle eines palettierten Bildes benötigt. Eine Kompression ist noch viel wichtiger bei einer Videoaufnahme, welche einen kontinuierlichen Bildstrom mit einer hohen Bildfrequenz, beispielsweise 30 Bilder pro Sekunde erfordert. Eine Kompression spart nicht nur Speicherplatz für die Bildspeicherung, sondern eine Kompression erlaubt auch eine effiziente Bildübertragung über Kanäle begrenzter Bandbreite. Natürlich müssen bei Verwenden von sich bewegenden Bildern die Bilder auch wieder schnell genug dekomprimiert werden, so daß sie mit der Bildfrequenz dargestellt werden können. Obwohl die Kompression vorher vorgenommen werden kann, erfordert die jeweilige Anwendung oft eine Echtzeit-Dekompression. In Ausführungsformen, bei welchen die Kompression im voraus erfolgt, ist die Eingabe in den Dekompressor ein Block von komprimierten Daten, welche in einem Speicher gespeichert werden und zu einem Zeitpunkt nach der Kompression dekomprimiert werden.Image compression is needed for many imaging applications because of the amount of it Data important to present an image. In the above example, 24 × 1024 × 768 or 18 874 368 bits (2 359 296 bytes) needed to be a single uncompressed To display image or 8 × 1024 × 768 bits (6 291 456 bytes) in the case of a palletized image needed. Compression is even more important with one Video recording, which is a continuous image stream with a high frame rate, for example, requires 30 frames per second. Compression not only saves Storage space for image storage, but compression also allows one efficient image transmission over channels of limited bandwidth. Of course, at Using moving pictures, the pictures again quickly enough be decompressed so that they can be displayed at the frame rate. Even though the compression can be done beforehand, often requires the respective application real-time decompression. In embodiments in which the compression in ahead, the input to the decompressor is a block of compressed data, which are stored in a memory and at a time after the Compression can be decompressed.

Ein Maß, wie gut eine Kompression arbeitet, ist das Kompressionsverhältnis. Das Kompressionsverhältnis ist das Verhältnis der Größe der nichtkomprimierten Daten zu den komprimierten Daten. Ein anderes Maß für die Gute einer Kompression besteht darin, wie schnell Daten komprimiert und dekomprimiert werden können. Bei vielen Anwendungen ist die Kompressionsgeschwindigkeit nicht so wichtig wie die Dekompressionsgeschwindigkeit, da eine Kompression nicht in Echtzeit zu erfolgen braucht.A measure of how well compression works is the compression ratio. The Compression ratio is the ratio of the size of the uncompressed data to the data compressed data. Another measure of the goodness of compression is how data can be compressed and decompressed quickly. In many applications the compression speed is not as important as the decompression speed, since compression does not have to take place in real time.

Oft wird das Kompressionsverhältnis verbessert, je mehr der Charakter der Daten bekannt ist. Normale digitale Bilder sind im allgemeinen das Ergebnis der Quantisierung von Wellenformen; folglich behalten sie viele der Eigenschaften des ursprünglichen Signals, wie das Vorhandensein einer relativen Kontinuität von Pixel-Farbwerten. Bei palettierten Bildern ist diese Kontinuität üblicherweise nicht vorhanden und kann nicht unmittelbar dazu verwendet werden, um das Kompressionsverhältnis zu verbessern.The compression ratio is often improved the more the character of the data is known is. Normal digital images are generally the result of quantizing Waveforms; hence they retain many of the characteristics of the original signal, such as  the presence of relative continuity of pixel color values. With palletized This continuity is usually not present in images and cannot be added directly can be used to improve the compression ratio.

Bei palettierten Bildern kann der Farbunterschied zwischen zwei Pixel-Werten nicht unbedingt aus den Pixel-Werten hergeleitet werden, da die Pixel-Werte nicht Pixel-Farben darstellen. Statt dessen stellen sie nur Indizes in der Code-Tabelle oder der Farbpaletten- Tabelle von Farbwerten dar. Die Schwierigkeit, palettierte Bilder zu komprimieren, kann als die Schwierigkeit verallgemeinert werden, eine Folge von eingegebenen Symbolen zu komprimieren, wobei jedes eingegebene Symbol ein Symbol in einem M-Symbole aufweisenden (M-ary) Alphabet ist.In the case of palletized images, the color difference between two pixel values cannot necessarily derived from the pixel values, since the pixel values are not pixel colors represent. Instead, they just put indexes in the code table or the color palette- Table of color values. The difficulty of compressing palletized images can be as the difficulty to be generalized to a sequence of symbols entered compress, with each symbol entered one symbol in one M symbols having (M-ary) alphabet.

Von Y. Chin, et al. ist in "Lossy Compression of Palettized Images", ICASSP-93, Vol. V, S. 325 bis 328, ein Beispiel einer mit Verlust behafteten Kompression von palettierten Bildern beschrieben. Obwohl eine mit Verlust behaftete Kompression im allgemeinen zu besseren Kompressionsverhältnissen führt, kann bei vielen Anwendungen die Verzerrung nicht toleriert werden, welche sich aus der verlustbehafteten Kompression ergibt, und es wird folglich eine verlustfreie Kompression gefordert. Bei einer verlustfreien Kompression wird ein Signal zu einem komprimierten Signal komprimiert, welches dekomprimiert werden kann, um das ursprüngliche Signal exakt aus dem komprimierten Signal zurückzugewinnen, so daß folglich keine Verzerrung eingebracht wird.By Y. Chin, et al. is in "Lossy Compression of Palettized Images", ICASSP-93, Vol. V, Pp. 325 to 328, an example of lossy compression of palletized Described in pictures. Although lossy compression generally increases leads to better compression ratios, the distortion in many applications not tolerated, which results from the lossy compression, and it lossless compression is consequently required. With lossless compression a signal is compressed into a compressed signal which decompresses can be used to get the original signal exactly from the compressed signal recover so that no distortion is consequently introduced.

Aus der EP 0 562 672 A2 ist ein Verfahren bekannt, bei dem ein Bild mittels einer Datenkompression dargestellt wird. Das Bild wird dabei in Abschnitte vorbestimmter Größe unterteilt, um daraufhin die Verteilung von Grauwerten über alle Bildelemente des Bildes zu bestimmen. Anschließend wird für jeden Bereich ein bestimmter vorgegebener Maßstab in Einheiten von Bildelementen bestimmt. Dann kann jeder Bereich in einzelne Zellen unterteilt werden, die jeweils für sich eine Anzahl von Punkten bzw. Bildelementen umfassen. Jeder dieser Punkte bzw. Bildelemente ist durch zwei Koordinaten bestimmt, wobei die Zellen jeweils eine Abmessung in der Größenordnung der bestimmten Abmessung aufweisen. Bildelemente werden in jeder Zelle erkannt und in jeweils zwei Kategorien unterteilt. Dann werden die erkannten Grundelemente in bestimmte Übertragungselemente oder Subübertragungselemente gewandelt. Diese werden dann entweder gespeichert oder übertragen.A method is known from EP 0 562 672 A2, in which an image by means of a Data compression is shown. The image is divided into sections of a predetermined size divided in order to then distribute gray values over all picture elements of the picture determine. Then a certain predetermined scale is given in for each area Units of picture elements determined. Then each area can be divided into individual cells are divided, each for a number of points or picture elements include. Each of these points or picture elements is determined by two coordinates, the cells each having a dimension on the order of the determined dimension exhibit. Image elements are recognized in each cell and in two categories divided. Then the recognized basic elements into certain transmission elements  or sub-transmission elements converted. These are then either saved or transfer.

Die EP 0 574 746 A1 betrifft ein Verfahren zur Echtzeitkompression und zur Echtzeit­ dekompression von Videosignalen, die zum einen eine Bewegung vermitteln und zum anderen digital sind. Eine Huffman-Tabelle wird dabei verwendet, um die Codierung sowie Decodierung zu realisieren. Eine fixe Tabelle muß hier verwendet werden, so daß dem Sender und dem Empfänger, d. h. dem Codierer und Decodierer, jeweils exakt die gleiche Tabelle bekannt sein muß und entsprechend auch verwendet werden muß, um zu einem brauchbaren Ergebnis zu gelangen.EP 0 574 746 A1 relates to a method for real-time compression and for real-time decompression of video signals that on the one hand convey movement and on the other others are digital. A Huffman table is used to do the coding as well Realize decoding. A fixed table must be used here so that the Sender and receiver, d. H. the encoder and decoder, exactly the same Table must be known and must also be used accordingly in order to become one useful result.

In dem Literaturzitat Rabbinani, Majid: Digital image compression techniques, SPIE 1991, S. 15 bis 19, 33 bis 36, 58 bis 59 wird in Kompressionsverfahren vorgestellt, bei dem eingegebene Symbole eines Alphabets mit einer Anzahl von Symbolen, die Pixel bzw. Bildelemente eines Bildes darstellen, zu Codewörtern komprimiert. Diese Codeworte können eingesetzt werden, um eingegebene Symbole verlustlos zu decordieren. Mittels der Bit-Position und durch ein Kontext-Symbol kann für jedes Bit ein Kontext ermittelt werden, für den ein binärer Entropic-Code bestimmt wird. Letztere werden verwendet, um die Bits der binär dargestellten Symbole zu codieren.In the literature reference Rabbinani, Majid: Digital image compression techniques, SPIE 1991, S. 15 to 19, 33 to 36, 58 to 59 is presented in compression processes, in which entered symbols of an alphabet with a number of symbols, the pixels or Represent picture elements of an image, compressed to code words. These code words can be used to losslessly decode entered symbols. By means of the Bit position and a context symbol can be used to determine a context for each bit, for which a binary entropic code is determined. The latter are used to change the bits to encode the binary represented symbols.

Aus den vorstehenden Ausführungen ist zu ersehen, daß ein verbesserter Entropic-Codierer für Bilder benötigt wird.From the foregoing, it can be seen that an improved entropic encoder is needed for pictures.

Diese Aufgabe wird durch einen Entropic-Codierer mit den Merkmalen des Anspruchs gelöst. Zweckmäßige Ausführungsformen gehen aus den Unteransprüchen hervor.This object is achieved by an entropic encoder with the features of the claim solved. Appropriate embodiments emerge from the subclaims.

Die gemäß der Erfindung erzielbaren Vorteile beruhen auf einem Kontext, welcher durch Kontext-Symbole geschaffen ist, welche auch eingegebene Symbole sind, mit den folgenden Merkmalen: eine Symbole umordnende Einrichtung, die mit einem Symboleingang des Entropie-Codierers verbunden ist, um eingegebene Symbole von einer eingegebenen Stromreihenfolge aus in eine umgeordnete Stromreihenfolge umzuordnen; eine Kontext- Modelleinheit, die mit einem Ausgang der Symbole umordnenden Einrichtung verbunden ist, welche eingegebene Symbole in der umgeordneten Stromreihenfolge erhält und eingegebene Symbole, erforderlichenfalls speichert, um einen Kontext eines aktuellen eingegebenen Symbols aus den Kontext-Symbolen eines aktuellen eingegebenen Symbols zu bestimmen; eine Wahrscheinlichkeits-Schätzeinheit, die entsprechend verbunden ist, um das aktuelle eingegebene Symbol und einen Kontext des aktuellen eingegebenen Symbols von der Kontext-Modell-Einheit zu erhalten, um die Wahrscheinlichkeit des aktuellen eingegebenen Symbols zu schätzen, das in seinem vorgegebenen Kontext vorkommt, und einen Bitgenerator, welcher mit der Wahrscheinlichkeits-Schätzeinheit verbunden ist, um Codeworte basierend auf Wahrscheinlichkeits-Schätzwerten zu erzeugen, welche durch die Wahrscheinlichkeits-Schätzeinheit geschaffen sind, wobei die Codeworte eine komprimierte Darstellung des umgeordneten Stroms von eingegebenen Symbolen sind, wobei die Symbole umordnende Einrichtung eingegebene Symbole so umordnet, dass ein umgeordneter Abstand zwischen dem aktuellen eingegebenen Symbol und den Kontext-Symbolen eines aktuellen eingegebenen Symbols in dem umgeordneten Strom größer ist als ein ursprünglicher Abstand zwischen dem aktuellen eingegebenen Symbol und den Kontext- Symbolen des aktuellen eingegebenen Symbols in dem eingegebenen Strom.The advantages achievable according to the invention are based on a context which is characterized by Context symbols are created, which are also entered symbols, with the following Features: a symbol rearranging device with a symbol input of the Entropy encoder is connected to input symbols from an input Rearrange current order into a rearranged current order; a context Model unit connected to an output of the symbol rearranging device is which symbols are entered in the rearranged stream order and  entered symbols, if necessary, stores a context of a current symbol entered from the context symbols of a current symbol entered determine; a probability estimation unit that is connected accordingly to that current entered symbol and a context of the current entered symbol of the context model unit to get the probability of the current estimate entered symbol, which occurs in its given context, and a bit generator connected to the probability estimating unit Generate code words based on probability estimates, which are determined by the Probability estimation unit are created, the code words being a compressed one Representation of the rearranged stream of symbols entered, where the symbols rearranging facility rearranges entered symbols so that a rearranged Distance between the currently entered symbol and the context symbols of a currently entered symbol in the rearranged stream is greater than one original distance between the currently entered symbol and the context Symbols of the currently entered symbol in the entered stream.

Dabei besteht eine Methode, um die Abbildung der Reindexier-Tabelle zu erzeugen, darin, einen Index zu einem bestimmten Zeitpunkt einem eingegebenen Symbol zuzuordnen. Der einem eingegebenen Symbol zugeordnete Index ist eine Funktion der Bits des Index, der Verteilung der eingegebenen Symbole, der Kontexte der eingegebenen Symbole und welche Symbole und Indizes bereits zugeordnet sind. Einem ganz bestimmten, eingegebenen Symbol wird ein Index aus den verbleibenden, nicht zugeordneten Indizes zugeordnet, was die minimale, partielle bitweise Entropie schafft, die den bereits zugeordneten Indizes und den eingegebenen Symbolen beigegeben ist, welchen die Indizes zugeordnet sind. Obwohl diese Methode nicht die globale minimale, bitweise Entropie erreichen kann, die für einen vorgegebenen Satz von Symbolverteilungen und Kontexten möglich ist, schafft sie ein gutes "lokales" Minimum für eine durchführbare Menge an Berechnungen.One method of creating the reindex table is to: assign an index to an entered symbol at a specific point in time. The an index associated with an entered symbol is a function of the bits of the index, the Distribution of the entered symbols, the contexts of the entered symbols and what Symbols and indices are already assigned. A very specific, entered Symbol is assigned an index from the remaining, unallocated indexes, what creates the minimal, partial bitwise entropy that corresponds to the already assigned indices and is added to the entered symbols to which the indices are assigned. Even though this method cannot achieve the global minimum, bitwise, entropy required for one given set of symbol distributions and contexts is possible, it creates a good one "Local" minimum for a feasible set of calculations.

Die reindexierten, eingegebenen Daten durchlaufen eine Kontext-Modelleinheit, einen Wahrscheinlichkeitsschätzungsmodul und einem Bit-Generator, dessen Ausgangsdaten die komprimierten Daten sind. Der umgekehrte Prozeß wird angewendet, um die Daten zu dekomprimieren. Erforderlichenfalls wird die Reindexier-Tabelle als Overhead von dem Kompressor zu dem Dekompressor durchgegeben. Die Reindexiertabelle ist nicht notwendig, wenn sie vorher festgelegt wird.The re-indexed, entered data pass through a context model unit, a Probability estimation module and a bit generator, the output data of which are compressed data. The reverse process is applied to the data decompress. If necessary, the re-indexing table is overhead from the  Compressor passed to the decompressor. The reindex table is not necessary if it is determined in advance.

Gemäß der Erfindung sind Kontext-Modelle, welche einen geringen Speicherplatz benutzen, jedoch eine gute Kompression für palettierte Bilder ergeben, durch eine Kontext- Modelleinheit geschaffen. Bei einem anderen Gesichtspunkt der Erfindung werden Kompression und Dekompression parallel durchgeführt, und die eingegebenen Werte an dem Kompressor werden gepuffert und wieder geordnet, um Platz zwischen einem zu codierenden Bit und den Bits zu lassen, welche den Kontext und das Codieren des zu codierenden Bit festlegen. Der Raum zwischen einem Bit und dessen Kontext-Bits sind entsprechend angeordnet, damit eine Verzögerung groß genug ist, so daß die Kontext-Bits vollständig codiert werden, wenn der Dekompressor das Bit erreicht, dessen Decodieren von den Kontext-Bits abhängt. Der Dekompressor enthält eine Einrichtung, um das entgegengesetzte Ordnen durchzuführen, so daß die Ausgangswerte des Dekompressors dieselben sind wie die Eingangswerte an dem Kompressor. Bei einigen Ausführungsformen durchlaufen die Ausgangswerte der parallelen Kompressoren über einen einzigen Übertragungskanal, wobei jeweils ein kleiner Overhead benötigt wird, um die Kanäle an den verschiedenen parallelen Dekompressoren zu trennen.According to the invention, context models that use a small storage space are however, give good compression for palletized images through a contextual Model unit created. In another aspect of the invention Compression and decompression performed in parallel, and the entered values The compressor will be buffered and reordered to take up space between you and the bits that encode the context and coding of the Set coding bit. The space between a bit and its context bits are arranged accordingly so that a delay is large enough so that the context bits be fully encoded when the decompressor reaches the bit whose decoding depends on the context bits. The decompressor contains a device to do this to perform opposite orders so that the output values of the decompressor are the same as the input values to the compressor. In some embodiments run through the output values of the parallel compressors over a single one Transmission channel, whereby a small overhead is required to connect the channels to separate the various parallel decompressors.

In spezifischen Ausführungsformen werden die eingegebenen Symbole aus einem Alphabet von 256 Symbolen ausgewählt; der Reindexier-Prozeß wird durch einen entsprechend programmierten digitalen Computer durchgeführt, der Kompressionsprozeß wird nicht in Echtzeit durchgeführt, und der Dekompressionsprozeß wird in Echtzeit durchgeführt. Bei 256 eingegebenen Symbolen belegt die Reindexiertabelle 256 Bytes. In einer spezifischen Ausführungsform basiert die Reindexier-Tabelle auf den Wahrscheinlichkeitsverteilungen von eingegebenen Symbolen über eine Gruppe von Bildern oder Bildteilen, und eine neue Reindexiertabelle wird von dem Kompressor an den Dekompressor für jede Gruppe von Bildern oder Bildteilen übertragen.In specific embodiments, the symbols entered are from an alphabet selected from 256 symbols; the re-indexing process is carried out accordingly programmed digital computer, the compression process is not in Real time, and the decompression process is performed in real time. at The re-indexing table occupies 256 bytes in the 256 symbols entered. In a specific In one embodiment, the re-indexing table is based on the probability distributions of symbols entered over a group of images or parts of images, and a new one The re-indexing table is sent from the compressor to the decompressor for each group of Transfer pictures or parts of pictures.

Nachfolgend wird die Erfindung anhand von bevorzugten Ausfüh­ rungsformen unter Bezugnahme auf die anliegenden Zeichnungen im einzelnen erläutert. Es zeigen:The invention is based on preferred embodiments tion forms with reference to the accompanying drawings in individual explained. Show it:

Fig. 1 ein Blockdiagramm eines Daten-Kompressionssystems mit einem Kompressor und einem Dekompressor; Fig. 1 is a block diagram of a data compression system including a compressor and a decompressor;

Fig. 2 ein Blockdiagramm des in Fig. 1 dargestellten Kompres­ sors; Fig. 2 is a block diagram of the compressor shown in Fig. 1;

Fig. 3 ein Blockdiagramm des in Fig. 1 dargestellten Dekompres­ sors; Fig. 3 is a block diagram of the decompressors shown in Fig. 1;

Fig. 4 eine detaillierte Darstellung eines Speichers, in dem eine Kontextfach-Wahrscheinlichkeitstabelle gespeichert ist; Fig. 4 is a detailed illustration of a memory in which a context bin probability table is stored;

Fig. 5 ein Blockdiagramm eines Daten-Kompressionssystems, das eine Reindexiereinheit zum Reindexieren von M Symbolen entsprechend einer Reindexier-Tabelle aufweist; Fig. 5 is a block diagram of a data compression system, which has a Reindexiereinheit for reindexing of M symbols according to a Reindexier table;

Fig. 6 ein Blockdiagramm einer Index-Optimiereinheit, welche eine Reindexiertabelle erzeugt, welche auf dem Datenin­ halt eines zu komprimierenden Datenblocks basiert; Fig. 6 is a block diagram of an index optimization unit which generates a Reindexiertabelle, which stop on the data into data to be compressed based one block;

Fig. 7 ein Flußdiagramm eines Prozesses, welcher mittels einer Index-Optimiereinheit durchgeführt ist, um eine geeigne­ te Reindexiertabelle zu bestimmen, Fig. 7 is a flowchart of a process by means of an index optimization unit is performed to determine a geeigne te Reindexiertabelle,

Fig. 8 eine Darstellung von verschiedenen Kontext-Modellen, welche durch die Kontext-Modelleinheiten der Fig. 2 und 3 ausgeführt sind; Fig. 8 is an illustration of various context models that are executed by the context model units of Figs. 2 and 3;

Fig. 9 ein Blockdiagramm eines parallelen Kompressionssystems; Fig. 9 is a block diagram of a parallel compression system;

Fig. 10 ein Blockdiagramm eines parallelen Kompressionsystems mit einem einzigen Kanal; Figure 10 is a block diagram of a single channel parallel compression system;

Fig. 11 ein Blockdiagramm der Arbeitsweise eines Umordnungspuf­ fers; Figure 11 is a block diagram of the operation of a reorder buffer.

Fig. 12 eine logische Darstellung einer Aufzeichnung, welche einen Kontext-Zustand darstellt, und Fig. 12 is a logical representation of a record showing a context state, and

Fig. 13(a) und 13(b) Zeitgraphen eines Pipeline-Coders, welcher mehr als ein eingegebenes Symbol zu einer bestimmten Zeit verarbeiten kann. 13 (a) and 13 (b) Time graph of a pipeline coder which can be processed as an input symbol at a certain time Fig. More.

Die nachstehende Beschreibung ist in mehrere Abschnitte unter­ teilt. Der erste Abschnitt beschreibt ein Entropie-Codieren. Der zweite Abschnitt beschreibt das Reindexieren, um eine Kompres­ sion zu verbessern, wenn ein Entropie-Codieren angewendet wird. Der dritte Abschnitt beschreibt, wie Kontext-Modellieren eine Entropie-Codierleistung durch genauere Schätzsymbol-Wahrschein­ lichkeiten verbessern kann. Kontext-Modellieren kann mit und oh­ ne ein Reindexieren angewendet werden. Der vierte Abschnitt be­ schriebt, wie parallele Kompressoren und Dekompressoren verbes­ sert werden, um die Datenraten zu verbessern. Schließlich be­ schreibt der fünfte Abschnitt, wie ein Puffern angewendet wird, um parallele Implementierungen zu erleichtern und noch dazu eine Kausalität aufrechtzuerhalten, um Daten parallel dekomprimieren zu können.The description below is divided into several sections Splits. The first section describes entropy coding. The second section describes reindexing to a compress sion to improve when entropy coding is applied. The third section describes how context modeling a Entropy coding performance through more accurate estimation symbol probability opportunities can improve. Context modeling can with and oh reindexing can be used. The fourth section be writes how parallel compressors and decompressors verbes be improved to improve the data rates. Finally be the fifth section writes how buffering is applied to facilitate parallel implementations and one more Maintain causality to decompress data in parallel to be able to.

Entropie-CodierenEntropy coding

Entropie-Coder sind auf dem Gebiet der Datenkompression be­ kannt. Ein Entropie-Coder, welcher eingegebene Symbole in ausge­ gebene Codeworte codiert, führt einen verlustfreien Prozeß durch, d. h. die ursprünglichen, eingegebenen Symbole können al­ lein aus den ausgegebenen Codeworten extrahiert werden. Ein Entropie-Coder wird so bezeichnet, da er versucht, ein Kompres­ sionsverhältnis zu erreichen, das nahe dem theoretischen, oberen Grenzwert ist, welcher durch die Entropie der eingegebenen Sym­ bole diktiert ist. Ein Codierer und ein Decodierer sind im all­ gemeinen so ausgelegt, daß der Decodierer die Umkehr des Codie­ rers ist. Der Begriff "Coder" bezeichnet ein Gerät, welches ent­ weder ein Codierer oder ein Decodierer oder beides ist.Entropy encoders are in the field of data compression known. An entropy encoder, which entered symbols in out encoded code words leads to a lossless process through, d. H. the original symbols entered can be al be extracted from the output code words. On Entropy coder is so named because it tries to make a compress tion ratio that is close to the theoretical, upper The limit value is determined by the entropy of the entered sym bole is dictated. An encoder and a decoder are in space generally designed so that the decoder reverses the Codie rers is. The term "coder" denotes a device which ent is neither an encoder nor a decoder, or both.

Alle Einzelheiten eines Entropie-Coders werden hier nicht be­ schrieben; es werden nur bestimmte Einzelheiten beschrieben, welche zu der vorliegenden Erfindung Bezug haben. In einem Entropie-Coder werden eingegebene Symbole von einem Eingang aus gelesen und ein oder mehrere eingegebene Symbole bewirken das Ausgeben eines Codewortes. Das (Die) spezielle(n) eingegebene(n) Symbol(e) und ausgebene Codwort-Kombinationen sind durch den verwendeten Code vorgeschrieben. Der verwendete Code in einem optimierten System wird auf der Basis der Wahrscheinlichkeits­ verteilung der eingegebenen Symbole ausgewählt. In einem adapti­ ven Entropoie-Coder kann sich der verwendete Code mit der Wahr­ scheinlichkeitsverteilung ändern. Wenn die Wahrscheinlichkeits­ verteilung gut geschätzt ist oder genau bekannt ist und Codes verwendet werden, die für diese Wahrscheinlichkeitsverteilung optimiert sind, ergibt sich eine gute Kompression.All the details of an entropy coder are not discussed here wrote; only certain details are described, which relate to the present invention. In one Entropy encoders are input symbols from an input read and one or more entered symbols do this Output a code word. The special (s) entered Symbol (s) and code word combinations output are indicated by the  required code. The code used in one optimized system is based on the probability distribution of the entered symbols selected. In an adapti ven entropoie coder, the code used can be true change probability distribution. If the probability distribution is well estimated or well known and codes used for this probability distribution are optimized, there is good compression.

Wenn die eingegebenen Symbole Bits sind, (d. h. ein Symbol ent­ weder 0 oder 1 ist), ist der Codierer ein binärer Entropie-Co­ der. Binäre Entropie-Codierer werden gegenüber anderen Entropie- Codierern bevorzugt, da die Einfachheit der Hardware wichtig ist. Ein ABS-Coder ist ein binärer Entropie-Coder (In einer am 10. Februar 1993 eingereichten US-Patentanmeldung S.N. 08/016,035 der Anmelderin sind ein "Verfahren und eine Einrich­ tung zum parallelen Decodieren und Codieren von Daten" beschrie­ ben. Auf diese Anmeldung ist vorstehend und wird im folgenden mit dem Hinweis "ABS-Coder" Bezug genommen). In einem binären Entropie-Codierer werden eingegebene Symbole an einen Bit-Gene­ rator angelegt, welcher ein oder mehrere Bits als einen einge­ gebenen Wert annimmt und ein Codewort für diese eingegebenen und angenommenen Bits abgibt. Wenn der Bit-Generator mit einer An­ zeige der Wahrscheinlichkeitsverteilung der Nullen (0'en) und der Einsen (1'en) in dem eingegebenen Strom versehen wird, kann er diese Information benutzen, um den Code herauszusuchen, um ihn zu verwenden. Andererseits könnte der Bit-Generator instru­ iert werden, welcher Code zu verwenden wird, was durch einen Wahrscheinlichkeits-Schätzmodul festgelegt ist. Die Codes können sich ändern, wenn der Bit-Generator festlegt, daß die ausgegebe­ nen Codeworte im Durchschnitt zu lang oder zu kurz für die tat­ sächliche Wahrscheinlichkeitsverteilung der eingegebenen Symbole sind. Bezüglich weiterer Einzelheiten wird auf die den ABS-Coder betreffende Anmeldung verwiesen.If the symbols entered are bits (i.e. a symbol ent is neither 0 or 1), the encoder is a binary entropy co the. Binary entropy encoders are compared to other entropy Coders preferred because the simplicity of the hardware is important is. An ABS encoder is a binary entropy encoder (in an am U.S. Patent Application S.N. Applicant's 08 / 016,035 are a "Procedure and Setup device for parallel decoding and encoding of data " ben. This application is above and will follow with the reference "ABS coder"). In a binary Entropy encoders are input symbols to a bit gene rator created, which one or more bits as one given value and a code word for this entered and assumes accepted bits. If the bit generator has an On show the probability distribution of the zeros (0's) and the ones (1's) in the input stream can be provided he use this information to look up the code to to use him. On the other hand, the bit generator instru what code will be used, what is by a Probability Estimation Module is set. The codes can change when the bit generator determines that the output code words too long or too short for the average neuter probability distribution of the entered symbols are. For more details, see the ABS encoder referenced application.

Es ist wichtig, daß die Wahrscheinlichkeitsverteilung der Nullen und Einsen gut geschätzt wird. Wenn ein binärer Entropie-Co­ dierer verwendet wird, müssen zuerst die Pixel-Werte eines zu komprimierenden Bildes, welches Symbole aus einem M-Werte ent­ haltenden Alphabet, einem sogenannten M-Alphabet sind, wobei M größer als zwei ist, in binäre Form gebracht werden. Wie sich in einigen Fällen herausstellt, beeinträchtigt die spezielle, ge­ wählte binäre Darstellung die Entropie des Bitstroms, der in dem binären Entropie-Codierer eingegeben worden ist, und wie oben ausgeführt, setzt die Entropie eine Grenze, wie weit ein Bit-Ge­ nerator den eingegebenen Bitstrom komprimieren kann. Wo die Un­ terscheidung nicht klar ist, wird ein "Pixel-Eingabesymbol" oder ein "Pixel-Symbol" verwendet, um auf ein Element der zu kompri­ mierenden Daten Bezug zu nehmen, bevor es in binäre Form ge­ bracht wird, was dann ein Eingangswert an einem Kompressor ist, und ein "binäres Eingabesymbol" wird verwendet, um auf ein ein­ gegebenes Symbol Bezug zu nehmen, welches in einen Bit-Generator eines binären Entropie-Codierers eingegeben wird.It is important that the probability distribution of the zeros  and ones are well appreciated. If a binary entropy co dier is used, the pixel values of one must be added compressing image, which symbols from an M-values holding alphabet, a so-called M alphabet, where M greater than two, can be put into binary form. As in turns out in some cases, the special, ge chose binary representation the entropy of the bit stream contained in the binary entropy encoder has been entered, and as above executed, entropy sets a limit on how far a bit Ge nerator can compress the input bitstream. Where the Un is not clear, a "pixel input symbol" or a "pixel symbol" is used to refer to an element of the compri reference data before it is converted into binary form what is then an input value to a compressor, and a "binary input symbol" is used to point to a given symbol to refer to, which is in a bit generator of a binary entropy encoder is entered.

Bei nicht-palettierten Bilddaten können die Pixel-Symbole ent­ sprechend einer Farbinformation in binäre Form gebracht werden, welche in den Pixel-Wert einbezogen wird. Beispielsweise soll ein Pixel-Wert einen von 256 Werten annehmen, und der angenomme­ ne Wert soll die Farbe des Pixels anzeigen. Wenn in diesem Fall ähnliche Farben durch ähnliche 8 Bit Werte dargestellt werden, kann sicher angenommen werden, daß 00001100 und 00001101 in der Farbe ähnlicher sind als 00001100 und 11111111. In einer Anzahl hier besprochener Beispiele ist M 256, und Symbole in dem soge­ nannten M-Alphabet werden durch K-Bit-Binärdarstellungen darge­ stellt, wobei K = 8 ist. Selbstverständlich sind auch andere Werte von M und K möglich, einschließlich Werten von M, welche nicht gerade Potenzen von zwei sind, wobei die einzige Beschrän­ kung darin besteht, daß K ≧ log2M ist.In the case of non-palletized image data, the pixel symbols can be brought into binary form in accordance with color information, which is included in the pixel value. For example, a pixel value should assume one of 256 values and the accepted value should indicate the color of the pixel. In this case, if similar colors are represented by similar 8 bit values, it can safely be assumed that 00001100 and 00001101 are more similar in color than 00001100 and 11111111. In a number of examples discussed here, M is 256, and symbols in the so-called M Alphabets are represented by K-bit binary representations, where K = 8. Of course, other values of M and K are also possible, including values of M that are not exactly powers of two, the only limitation being that K ≧ log 2 M.

Da bei dem Beispiel in dem typischen Bild benachbarte Pixel oft ähnliche Farben haben, kann die Anzahl an Bits, die erforderlich sind, um jedes Pixel auszudrücken, dadurch verringert werden, daß jedes Pixel durch die Differenz im Pixel-Farbwert zwischen dem Pixel und einem Nachbarpixel dargestellt wird. Diese Vorver­ arbeitung von Daten führt im allgemeinen zu einer besseren Kom­ pression, da die Anzahl Bits, die benötigt wird, um Werte darzu­ stellen, in Beziehung gesetzt wird zu der Entropie der Gruppe von Werten. Jedoch läuft im Falle von Pixels in einem palettier­ ten Bild eine ganz bestimmte Beziehung zwischen zwei Farben nicht auf eine Korrelation zwischen den Bits von solchen 8 Bit Darstellungen hinaus. Beispielsweise könnten in einem palettier­ ten Bild 00001100 und 00001101 sehr verschiedene Farben sein, und 00001100 und 11111111 könnten beinahe identische Farben sein. Es hängt alles von der Palette ab.Because in the example in the typical picture neighboring pixels often may have similar colors, the number of bits required are, to express each pixel, are reduced,  that each pixel by the difference in the pixel color value between the pixel and a neighboring pixel is displayed. This preliminary Data processing generally leads to a better comm pression, since the number of bits needed to add values is related to the entropy of the group of values. However, in the case of pixels it runs in a palettier th picture a very specific relationship between two colors not a correlation between the bits of such 8 bits Representations beyond. For example, in a pallet picture 00001100 and 00001101 can be very different colors, and 00001100 and 11111111 could be almost identical colors his. It all depends on the pallet.

Folglich sollte die Kompression von palettierten Bildern ver­ bessert werden, indem die Wahrscheinlichkeitsverteilung des Bit­ stroms genau geschätzt wird und indem die binäre Darstellung der eingegebenen Pixel-Symbole gewählt wird, was einen niedrigen Entropie-Bitstrom an einem Bit-Generator schafft. Lösungen des ersten Problems sind in dem Abschnitt erläutert, der unten mit "Kontext-Modellieren" überschrieben sind, und Lösungen des zu­ letzt angeführten Problems sind in dem Abschnitt besprochen, der mit "Reindexieren" überschrieben ist.As a result, the compression of palletized images should be reduced can be improved by the probability distribution of the bit current is estimated accurately and by the binary representation of the entered pixel symbols is chosen, which is a low Entropy bitstream on a bit generator creates. Solutions of the First problems are explained in the section below "Context modeling" are overwritten, and solutions of the The last mentioned problem are discussed in the section that is overwritten with "reindexing".

Dekompressiondecompression

Damit ein Kompressor eingegebene Symbole aus ausgegebenen Code­ worten korrekt decodiert, muß der Dekompressor wissen, welcher Code für welche Codeworte verwendet wird, wenn nicht der Codie­ rer ein adaptiver Codierer ist und einen fest vorgegebenen Code benutzt. Da das Overhead von Sendedaten, welche den Code anzei­ gen, die Brauchbarkeit der Kompression mindern würde, sollte der Dekompressor in der Lage sein, ein Anzeigen der Codes, die von den Codeworten aus verwendet worden sind, zu extrahieren. Dies ist möglich, wenn der Code, der bei einem vorgegebenen binären Eingabesymbol verwendet worden ist, durch ein Wahrscheinlich­ keitsschätzen bestimmt wird, was nur von Bits abhängt, welche in Codeworten bereits codiert worden sind. Wenn dies richtig ist, kann der Dekompressor, der eine Rückkopplungsschleife verwendet und Information über die eingegebenen Symbole speichert, wenn sie wiedergewonnen werden, festlegen, welcher Code nur von Daten aus verwendet wird, welche bereits decodiert sind.So that a compressor entered symbols from output code words decoded correctly, the decompressor must know which one Code for which code words is used, if not the code rer is an adaptive encoder and a fixed code used. Since the overhead of broadcast data indicating the code would reduce the usefulness of the compression, the Decompressor to be able to display the codes by the code words have been used to extract. This is possible if the code is at a given binary Input symbol has been used by a Probable is estimated, which only depends on bits that are in Codewords have already been encoded. If this is correct  can the decompressor using a feedback loop and stores information about the entered symbols if they are recovered, specifying which code is only data is used, which are already decoded.

Context-ModellierenContext Modeling

Je genauer die Wahrscheinlichkeitsschätzwerte sind, umso mehr sind die verwendeten Codes bezüglich der komprimierten Daten op­ timiert. Ein Weg, die Wahrscheinlichkeitsschätzwerte zu verfei­ nern, besteht darin, Wahrscheinlichkeitsschätzwerte für Mehr­ fach-Kontexte zu erhalten. Hierbei ist dann der Kontext eines eingegebenen Pixels das Pixel oder Pixels in einer definierten Beziehung zu dem eingegebenen Pixel. Beispielsweise wird in einem Kontext-Modell der Kontext eines eingegebenen Pixels durch das Pixel über dem eingegebenen Pixel bestimmt. Wenn der Kontext eines Bits in dem in einen Bitgenerator eingegebenen Bitstrom bestimmt wird, ist der Kontext durch Pixels und/oder Bits in einer festgelegten Beziehung zu dem eingegebenen Bit geschaf­ fen. Die Beziehung wird durch das Kontext-Modell festgesetzt.The more accurate the probability estimates are, the more are the codes used regarding the compressed data op timiert. One way to miss the probability estimates nern, is to estimate probability for more to maintain subject contexts. The context is then one entered pixels the pixel or pixels in a defined Relationship to the entered pixel. For example, in a context model the context of an input pixel determines the pixel above the entered pixel. If the context of a bit in the bit stream input to a bit generator the context is determined by pixels and / or bits in established relationship to the input bit fen. The relationship is determined by the context model.

Fig. 8 ist eine graphische Darstellung von fünf Kontext-Model­ len. In jedem Modell zeigt ein Zeiger P die Bitposition des ak­ tuellen eingegebenen Bits in dem Bitgenerator des aktuellen eingegebenen Symbols an, zu welchem der Kontext paßt. In allen dargestellten Kontexten ist der Kontext aus irgendeiner Unter­ gruppe der Bits des aktuellen eingegebenen Symbols, aus der durch P angezeigten Bitposition und den Bits des Symbols für das Pixel in dem Bild über dem Pixel für das aktuelle eingege­ bene Symbol abgeleitet, welches als das Symbol "darüber" be­ zeichnet wird. Selbstverständlich können auch andere Pixels, wie beispielsweise das Pixel links von dem aktuellen Pixel oder andere nicht dargestellte Kontext-Modelle genauso gut benutzt werden. Figure 8 is a graphical representation of five context models. In each model, a pointer P indicates the bit position of the current input bit in the bit generator of the current input symbol to which the context matches. In all contexts shown, the context is derived from any subset of the bits of the current input symbol, the bit position indicated by P, and the bits of the symbol for the pixel in the image above the pixel for the current input symbol, which is called the symbol "above" is referred to. Of course, other pixels, such as the pixel to the left of the current pixel or other context models, not shown, can also be used as well.

Jedes Kontext-Modell spezifiziert, wie der Kontext festgelegt ist, und die Anzahl an möglichen Kontexten kann ohne weiteres berechnet werden. Für jedes Kontext-Modell wird ein Wahrschein­ lichkeits-Schätzwert erhalten, und dieser Wahrscheinlichkeits- Schätzwert wird verwendet, wenn ein Symbol mit diesem Kontext vorkommt. Der Begriff "Kontext-Fach" wird oft verwendet, um an­ zuzeigen, in welchen Kontext ein Symbol fällt.Each context model specifies how the context is determined is, and the number of possible contexts can easily  be calculated. For each context model there is a probability probability estimate, and this probability Estimation is used when a symbol has this context occurs. The term "contextual subject" is often used to refer to show the context in which a symbol falls.

In Fig. 8 ist das Kontext-Modell (a) ein Bitpositions-Kontextmo­ dell. Bei diesem Modell ist der einzige Kontext die Bitposi­ tion, welche K Kontext-Fächer erfordert. Bei K = 8 ist dies eine vernünftige Anzahl an Kontextfächern.In Fig. 8, the context model (a) is a bit position context model. In this model, the only context is the bit position, which requires K context subjects. With K = 8, this is a reasonable number of context subjects.

Das Kontext-Modell (b) ist ein Bit Ebenen-Kontext-Modell, wel­ ches so bezeichnet ist, da es einen Satz von M Kontexten für jede Bitebene gibt. Folglich gibt es (M × K) Kontexte (2048, wenn M = 256 und K = 8 sind). Ein Kennzeichnen, das besonders zu erwähnen ist, besteht darin, daß die Kontexte des aktuellen Pixels in den Modellen (a) und (b) unabhängig sind von den Pixels, die verwendet werden, um das aktuelle Pixel darzustel­ len.The context model (b) is a bit level context model, wel ches is so named because it is a set of M contexts for every bit level there. Hence there are (M × K) contexts (2048, if M = 256 and K = 8). A mark that is special To be mentioned is that the contexts of the current Pixels in models (a) and (b) are independent of the Pixels used to represent the current pixel len.

Das Kontext-Modell (c) ist ein bitweise abhängiges Kontext-Mo­ dell, wobei der Kontext durch die Bit-Position bestimmt wird, wenn das aktuelle Bit und die vorherigen Bits sich in dem ak­ tuellen Symbol befinden. In diesem Modell gibt es (2K - 1) Kon­ texte (einen (1) Kontext, wenn der Zeiger P sich bei dem ersten Bit befindet, zwei (2) Kontexte für das nächste Bit, usw.). Für K = 8 schafft dieses Modell 255 Kontexte. Zu beachten ist, daß der Kontext eines Bits sich nicht auf die Werte für Bits ver­ läßt, die noch nicht codiert sind, so daß der Decoder undeco­ dierte Bits benötigt, um zu bestimmen, wie ein Bit zu decodie­ ren ist. (In Fig. 8 ist eine Verarbeitungsfolge von oben nach unten und von links nach rechts angenommen).The context model (c) is a bit-dependent context model, the context being determined by the bit position when the current bit and the previous bits are in the current symbol. In this model there are ( 2K - 1) contexts (one (1) context when pointer P is on the first bit, two (2) contexts on the next bit, etc.). For K = 8, this model creates 255 contexts. Note that the context of a bit cannot be relied on the values for bits that are not yet encoded, so the decoder needs undecoded bits to determine how to decode a bit. (A processing sequence from top to bottom and left to right is assumed in Fig. 8).

Das Kontext-Modell (d) ist ein gutes Kontext-Modell, welches alle Bits des Pixels "darüber" und die Bits des eingegebenen Pixels berücksichtigt, welche vor dem aktuellen Bit liegen. The context model (d) is a good context model, which all bits of the pixel "above" and the bits of the entered Pixels taken into account which are before the current bit.  

Dieses Kontext-Modell verknüpft die Information der Modelle (b) und (c) und schafft folglich M × (2K - 1) Kontexte. Obwohl dies Kontext-Modell eine feine Aufteilung der Kontexte schaffen könnte, kann der Speicher, der notwendig ist, um Werte für die­ se Kontexte zu speichern, eine Hardware-Implementierung eines Kompressors oder Dekompressors verhindern. Für M = 256 und K = 8 erfordert dieses Modell 65 280 Kontexte. Wenn jeder Kontext 8 Speicherbits erfordert, würde dies Kontext-Modell gerade für diesen Zweck einen 64K Speicher erfordern. Jedoch besteht ein Vorteil dieses Kontext-Modells gegenüber den Modellen (a) und (b) darin, daß die Leistung eines Kompressors, der dieses Mo­ dell benutzt, unabhängig von der verwendeten Digitalisierung gut ist, da ältere Bits des aktuellen Bits verwendet werden, um Kontexte zu bestimmen.This context model links the information of models (b) and (c) and consequently creates M × (2 K - 1) contexts. Although this context model could create a fine division of the contexts, the memory necessary to store values for these contexts can prevent a hardware implementation of a compressor or decompressor. For M = 256 and K = 8 this model requires 65 280 contexts. If each context requires 8 memory bits, this context model would require 64K memory for that purpose. However, an advantage of this contextual model over models (a) and (b) is that the performance of a compressor using this model is good regardless of the digitization used, since older bits of the current bit are used to To determine contexts.

Das Kontext-Modell (e) ist ein gemischtes Kontext-Modell, das als ein guter Kompromiß zwischen Speicher-Anforderungen und der Güte des Kontext-Modells anzusehen ist. In diesem Modell ist der Kontext die (P - 1) früheren Bits des aktuellen eingegebenen Symbols und der (K - (P - 1)) letzten Bits des Symbols darüber. Dies erfordert 2K Kontexte pro Bitstelle (2048 Kontexte für K = 8). Das Kontext-Modell ist im allgemeinen festgelegt zwischen dem Kompressor und dem Dekompressor. Jedoch ist nicht zu ver­ hindern, daß der Kompressor und der Dekompressor Kontext-Model­ le schalten, solange sie sich einigen, welches Kontext-Modell zu einer vorgegebenen Zeit verwendet wird. Wenn veränderliche Kontext-Modell zugelassen sind, muß ein Mechanismus vorhanden sein, um sicherzustellen, daß die Kontext-Modelle dieselben sind, beispielsweise ein Kommunikationskanal-Overhead, welcher das aktuelle Kontext-Modell anzeigt.The context model (s) is a mixed context model, which is to be seen as a good compromise between memory requirements and the quality of the context model. In this model, the context is the (P - 1) previous bits of the current input symbol and the (K - (P - 1)) last bits of the symbol above it. This requires 2 K contexts per bit position (2048 contexts for K = 8). The context model is generally established between the compressor and the decompressor. However, the compressor and the decompressor cannot be prevented from switching context models as long as they agree which context model is used at a given time. If changeable context models are permitted, a mechanism must be in place to ensure that the context models are the same, for example a communication channel overhead that indicates the current context model.

Die vorstehend wiedergegebene Erörterung von Entropie-Codieren und Kontext-Modellieren ist als eine Basis für die Erläuterung des in den Figuren dargestellten Kompressionssystems vorgese­ hen, welches nunmehr beschrieben wird. In Fig. 1 ist eine Aus­ führungsform eines Datenkompressionssystems 100 gemäß der Erfindung dargestellt, um Daten zu komprimieren, welche Symbole in einem sogenannten M-Alphabet aufweisen, und die Ausführungs­ form weist einen Kompressor 102, einen Kanal 104 und einen De­ kompressor 106 auf. Die Eingabewerte an dem Kompressor 102 sind ein Strom von eingegebenen Pixel-Symbolen, die jeweils einen Pixelwert in einem Bild darstellen, obwohl auch andere Daten- Typen verwendet werden könnten.The above discussion of entropy coding and context modeling is provided as a basis for explaining the compression system shown in the figures, which will now be described. In Fig. 1 a is off guide form a data compression system 100 according to the invention is shown, to compress data comprising symbols in a so-called M-alphabet, and the execution form includes a compressor 102, a channel 104 and a De compressor 106. The input values to compressor 102 are a stream of input pixel symbols, each representing a pixel value in an image, although other types of data could also be used.

Die eingegebenen Pixel-Symbole werden mittels des Kompressors 102 in komprimierte Codeworte umgesetzt, welche über den Kanal 104 an den Dekompressor 106 übertragen worden sind. Nur aus den empfangenen Codeworten und möglicherweise aus der Kenntnis der Arbeitsweise des Kompressors 102 und einer Reindexier-Tabelle (falls sie verwendet wird) gewinnt der Dekompressor 106 die ur­ sprünglichen Eingabesymbole oder deren Äquivalent wieder. In einigen Fällen werden die ursprünglichen Eingabesymbole von einer Darstellung in eine reindexierte Darstellung übersetzt, und das Datenkompressionssystem behandelt die dekomprimierten Symbole, ohne daß tatsächlich die Umkehr der Reindexierung durchgeführt wird.The entered pixel symbols are converted by means of the compressor 102 into compressed code words which have been transmitted to the decompressor 106 via the channel 104 . Decompressor 106 retrieves the original input symbols or their equivalent only from the code words received and possibly from knowledge of the operation of compressor 102 and a re-indexing table (if used). In some cases, the original input symbols are translated from a representation to a re-indexed representation, and the data compression system treats the decompressed symbols without actually reversing the re-indexing.

Ein Vorteil der Erfindung liegt in den gesteigerten Kompres­ sionsverhältnissen für eingegebene Symbole, welche Pixelwerte in einem palettierten Bild sind. Daher ist die mittels der Er­ findung geschaffene Kompression immer dann verwendbar, wenn der Kanal 104 eine begrenzte Bandbreite hat. Beispiele des Kanals 104 weisen einen Kommunikationskanal auf, welcher zwischen einem Bildspeicher und einer Anzeigeeinheit vorhanden ist, oder eine Speichereinheit und eine Vorrichtung für ein gespeichertes Bild auf. Der Kanal 104 kann auch die Übertragung von kompri­ mierten Daten in Form von Einrichtungen mit einem Speicher dar­ stellen, wie Spielpatronen bzw. -kassetten, welche Daten an einer Stelle komprimiert und an einer anderen Stelle übertragen werden, wo sie dekomprimiert werden. In einem späteren Zustand führt die Bandbreitenbegrenzung des Kanals 104 zu einer Begren­ zung in der Speicherkapazität, welche in der Speichereinheit verfügbar ist.An advantage of the invention lies in the increased compression ratios for input symbols, which are pixel values in a palletized image. Therefore, the compression created by the invention can be used whenever the channel 104 has a limited bandwidth. Examples of the channel 104 have a communication channel which is provided between an image memory and a display unit, or a storage unit and a device for a stored image. Channel 104 may also represent the transmission of compressed data in the form of devices with memory, such as game cartridges, which data is compressed at one location and transmitted to another where it is decompressed. In a later state, the bandwidth limitation of the channel 104 leads to a limitation in the storage capacity which is available in the storage unit.

In Fig. 2 enthält der Kompressor 102 eine Text-Modelleinheit 108 (1), einen Wahrscheinlichkeitsschätzmodul (PEM) 110(1), einen Bitgenerator 112(1), einen Kontext-Speicher 114(1) und einen Kontextfach-Wahrscheinlichkeitsspeicher 116(1). Die in Klammern gesetzten Zahlen werden verwendet, um gleichnumerierte Elemente zu unterscheiden, die sowohl in dem Kompressor 102 als auch in dem Dekompressor 106 zu finden sind. Bezugszeichen von Elemen­ ten, welche im allgemeinen beim Kompressor 102 oder beim Dekom­ pressor 106 verwendbar sind, sind ohne die in Klammern gesetz­ ten Zahlen dargestellt. Obwohl die Verbindung anhand eines ganz bestimmten in Fig. 2 dargestellten Kompressors 102 beschrieben wird, können andere Kompressoren genauso gut arbeiten. Bei­ spielsweise erfordern nicht alle Kompressoren die dargestellte Kopplung zwischen dem PE-Modul 110 und dem Bitgenerator 112, und ein PE-Modul 110 kann sich durchaus auch auf andere Daten stützen außer auf diejenigen von dem Bitgenerator 112, um seine Wahrscheinlichkeits-Schätzwerte zu aktualisieren.In Fig. 2, compressor 102 includes a text model unit 108 ( 1 ), a probability estimation module (PEM) 110 ( 1 ), a bit generator 112 ( 1 ), a context memory 114 ( 1 ) and a context subject probability memory 116 ( 1 ). The numbers in parentheses are used to distinguish like numbered elements found in both compressor 102 and decompressor 106 . Reference numerals of elements which are generally usable in the compressor 102 or in the decompressor 106 are shown without the numbers set in parentheses. Although the connection is described using a particular compressor 102 shown in FIG. 2, other compressors may work just as well. For example, not all compressors require the coupling shown between the PE module 110 and the bit generator 112 , and a PE module 110 may rely on data other than that from the bit generator 112 to update its likelihood estimates.

Die Kontext-Modelleinheit 108(1) ist mit dem Eingang des Kom­ pressors 102 verbunden und erhält dadurch die eingegebenen Pi­ xel-Symbole. Wenn eine Reindexiereinheit verwendet wird, ist der Eingang am Kompressor 102 ein Strom von reindexierten, ein­ gegebenen Pixel-Symbolen. Eine Kontext-Modelleinheit 108(1) weist zwei Ausgänge, einen Kontextfachidee-Ausgang und einen Entscheidungsausgang auf, welches beide Eingänge am PE-Modul 110(1) sind. Wenn der Eingang in einem Symbol von K Bits binär dargestellt ist, dann gibt die Kontext-Modelleinheit 108(1) K binäre "Entscheidungen" pro eingegebenem Pixel-Symbol ab. Für jede Entscheidung gibt die Kontext-Modelleinheit 108(1) auch einen Kontextfach-Identifizierer ab. Eine Kontext-Modelleinheit 108(1) ist auch mit dem Speicher 114(1) verbunden, um Datenele­ mente in diesem zu adressieren und um Daten bezüglich des Auf­ tretens von Symbolen in dem eingegebenen Strom zu lesen/zu schreiben, sowie erforderlichenfalls, um den Kontext des eingegebenen Pixel-Symbols zu bestimmen, das als dessen Eingang dar­ gestellt ist. Das spezielle Layout von Datenelementen im Spei­ cher 114(1) hängt von dem Kontext-Modell ab.The context model unit 108 (FIG. 1 ) is connected to the input of the compressor 102 and thereby receives the entered pixel symbols. If a re-indexing unit is used, the input to compressor 102 is a stream of re-indexed, given pixel symbols. A context model unit 108 ( 1 ) has two outputs, a context subject output and a decision output, which are both inputs to the PE module 110 ( 1 ). If the input is represented in binary form in a symbol of K bits, then the context model unit 108 ( 1 ) makes K binary "decisions" per input pixel symbol. The context model unit 108 ( 1 ) also issues a context subject identifier for each decision. A context model unit 108 ( 1 ) is also connected to the memory 114 ( 1 ) to address data elements therein and to read / write data regarding the occurrence of symbols in the input stream and, if necessary, to To determine the context of the entered pixel symbol, which is represented as its input. The particular layout of data elements in memory 114 ( 1 ) depends on the context model.

Der PE-Modul 110(1) erhält die zwei Eingangswerte von der Kon­ text-Modelleinheit 108(1) und hat zwei Ausgänge zu dem Bitgene­ rator 112(1): einen Wahrscheinlichkeitsklasse-(Pclass)Ausgang und einen Resultat-Ausgang. Der PE-Modul 110(1) ist auch mit dem Speicher 116(1) verbunden, um Datenelemente in diesem zu adressieren und Werte dieser Datenelemente zu lesen und zu mo­ difizieren, und ist ferner mit dem Bitgenerator 112(1) verbun­ den, um ein Tabellen-Aktualisiersignal zu erhalten. Für jede Entscheidungseingabe am PE-Modul 110(1) gibt der PE-Modul 110(1) ein Resultat-Bit und einen Pclass-Wert ab. Das Resultat- Bit hängt von dem Entscheidungs-Eingabebit und einem wahr­ scheinlichsten Bitsymbol (MPS) für das Kontext-Fach ab, welches dem Entscheidungseingabe-Bit zugeordnet ist. Das Resultat-Bit zeigt an, ob das Entscheidungseingabe-Bit das MPS-Symbol ist oder nicht. Das Gegenteil des MPS-Symbols (welches entweder 0 oder 1 ist, da der Bitgenerator binäre Symbole codiert,) ist ein am wenigsten wahrscheinliches Symbol (LPS).The PE module 110 ( 1 ) receives the two input values from the context model unit 108 ( 1 ) and has two outputs to the bit generator 112 ( 1 ): a probability class (Pclass) output and a result output. The PE module 110 ( 1 ) is also connected to the memory 116 ( 1 ) to address data elements therein and to read and modify values of these data elements, and is also connected to the bit generator 112 ( 1 ) to to get a table update signal. The PE module 110 (1) for each decision input at PE module 110 (1) outputs a result bit and a PCLASS value. The result bit depends on the decision input bit and a most likely bit symbol (MPS) for the context bin associated with the decision input bit. The result bit indicates whether the decision input bit is the MPS symbol or not. The opposite of the MPS symbol (which is either 0 or 1 because the bit generator encodes binary symbols) is a least likely symbol (LPS).

Der Bit-Generator 112(1) erhält einen Strom von Resultat-Bits und deren zugeordnete Pclass-Werte. Folglich erhält der Bit-Ge­ nerator 112(1) K-Resultatbits und einen zugeordneten Pclass- Wert für jedes Pixel-Symbol, das in die Kontext-Modelleinheit 108(1) eingegeben worden ist. Aus diesen zwei Eingangsströmen erzeugt der Bitgenerator 112(1) einen Strom komprimierter Code­ worte, wie in dem eingangs erwähnten ABS-Coder erläutert ist. Mit einem richtig bemessenen Bitgenerator kann der Resultatbit- Strom aus den ausgegebenen Codeworten zurückgewonnen werden, und die Codeworte weisen weniger Bits als der eingebene Bit­ strom auf. Der Pclass-Wert wird verwendet, um einen Code auszu­ wählen, um ihn zum Codieren des Bitstroms zu verwenden. Ande­ rerseits kann der PM-Modul (1) die Wahrscheinlichkeitsvertei­ lung des MPS- und des LPS-Symbols für jeden Kontext speichern und die Wahrscheinlichkeit an dem Bit-Generator schaffen.Bit generator 112 ( 1 ) receives a stream of result bits and their associated Pclass values. Thus, the bit generator 112 ( 1 ) receives K result bits and an associated Pclass value for each pixel symbol that has been input to the context model unit 108 ( 1 ). From these two input streams, the bit generator 112 ( 1 ) generates a stream of compressed code words, as explained in the ABS encoder mentioned at the beginning. With a properly sized bit generator, the result bit stream can be recovered from the output code words, and the code words have fewer bits than the input bit stream. The Pclass value is used to select a code to use to encode the bit stream. On the other hand, the PM module ( 1 ) can store the probability distribution of the MPS and LPS symbols for each context and create the probability on the bit generator.

Wie in der den ABS-Coder betreffenden Anmeldung ausgeführt ist, werden einige binäre Codes bei bestimmten Wahrscheinlichkeiten von Symbolen (0'en und 1'en) in dem Eingangsstrom optimiert. Wenn beispielsweise 0'en und 1'en an dem Eingang zu einem Bit­ generator gleich wahrscheinlich sind, dann ist ein optimaler Code einer ohne Kompression, d. h. ein Bit, das für jedes einge­ gebene Bit abgegeben wird. Die Optimierung eines Codes wird da­ durch bestimmt, wie nahe die durchschnittliche Codewort-Länge sich der theoretischen Entropie der eingegebenen Bits nähert.As stated in the application relating to the ABS coder, are some binary codes at certain probabilities of symbols (0's and 1's) optimized in the input stream. For example, if 0's and 1's at the input to a bit generator are equally likely, then an optimal one Code one without compression, d. H. a bit that's turned on for each given bit is given. The optimization of a code is there determined by how close the average code word length approaches the theoretical entropy of the input bits.

Da der Kompressor 102 auf ein Pixelsymbol zu einem bestimmten Zeitpunkt einwirkt und der PE-Modul 110 und der Bitgenerator 112 zu einem bestimmten Zeitpunkt auf ein Bit dieses Pixels einwirkt, haben die Begriffe eines "aktuellen" Pixels und eines "aktuellen" Bits eine entsprechende Bedeutung und werden in der folgenden Beschreibung verwendet, um die Arbeitsweise des Kom­ pressors 102 und Dekompressors 106 zu erläutern. Selbstver­ ständlich kann jedoch bei einem komplizierten Kompressor auf Symbole nicht zu einer bestimmten Zeit eingewirkt werden; je­ doch der Begriff eines "aktuellen" Symbols ist dennoch weiter­ hin verwendbar. Selbstverständlich können Elemente auch in einer Pipeline-Art betrieben werden, so daß das aktuelle Symbol für eine Stufe sich von dem aktuellen Symbol für eine andere Stufe unterscheidet.Since the compressor 102 acts on a pixel symbol at a certain point in time and the PE module 110 and the bit generator 112 act on a bit of this pixel at a certain point in time, the terms "current" pixel and a "current" bit have a corresponding meaning and are used in the following description to explain the operation of the compressor 102 and decompressor 106 . Of course, symbols cannot be acted on at a certain time in a complicated compressor; however, the term "current" symbol can still be used. Of course, elements can also be operated in a pipeline type so that the current symbol for one stage differs from the current symbol for another stage.

Bei einer Kompressions-Operation nimmt der Kompressor 102 jedes eingegebene Pixel-Symbol nacheinander auf und gibt einen Strom von Codeworten ab, obwohl nicht notwendigerweise ein Codewort für eine fest vorgegebene Anzahl an eingegebenen Symbolen abge­ geben wird. Beim Verarbeiten eines Pixel-Symbols wird das Sym­ bol in binärer Schreibweise ausgedrückt, und die binäre Dar­ stellung wird in die Kontext-Modelleinheit 108(1) eingegeben. Die Kontext-Modelleinheit 108(1) wertet die binäre Darstellung auf einer Bit-Basis aus, wobei jedes Bit an den Entscheidungsausgang der Modelleinheit zusammen mit einem Kontext-Fach ID abgegeben wird, welches den Kontext des Bits identifiziert. Wenn beispielsweise das verwendete Kontext-Modell das Bitposi­ tions-Kontext-Modell ist, zeigt das Kontext-Fach ID nur die Bit-Position in der binären Darstellung des eingegebenen Pixel- Symbols dar. Für den Bit-Positions-Kontext muß nur ein Speicher in dem aktuellen Bit gespeichert werden, jedoch für andere Kon­ text-Modell wird jedes Pixel, welche den Kontext eines anderen Pixels beeinflußt, im Speicher 114 gespeichert. Wenn das Kon­ text-Modell das Pixel über bzw. oberhalb des aktuellen Pixels enthält, dann würde es ausreichen, eine Zeile Pixel im Speicher 114 zu speichern.In a compression operation, the compressor 102 sequentially picks up each input pixel symbol and outputs a stream of code words, although a code word is not necessarily given for a predetermined number of input symbols. When processing a pixel symbol, the symbol is expressed in binary notation and the binary representation is entered into the context model unit 108 ( 1 ). The context model unit 108 ( 1 ) evaluates the binary representation on a bit basis, with each bit being delivered to the decision output of the model unit along with a context bin ID that identifies the context of the bit. If, for example, the context model used is the bit position context model, the context compartment ID only shows the bit position in the binary representation of the entered pixel symbol. For the bit position context, only one memory must be in the current bit, but for different context models, each pixel that affects the context of another pixel is stored in memory 114 . If the context model contains the pixel above or above the current pixel, it would be sufficient to store one line of pixels in memory 114 .

Wenn die eingegebenen Symbole Pixel-Farben in einer zweidimen­ sionalen Anordnung von Pixels darstellen, welche ein Bild bil­ den, ist die Abtastreihenfolge nicht so wichtig für einen Text­ block, wobei ein Kontext im allgemeinen durch die Buchstaben nahe bei einem aktuellen Buchstaben vorgesehen wird. Jedoch ist bei dieser Erörterung nur angenommen, daß die zweidimensionale Anordnung in den Kompressor 102 in einer vorherbestimmten Rei­ henfolge beispielsweise von einer oberen zu einer unteren Zeile und von links nach rechts in jeder Zeile eingetastet wird. Bei dieser Abtastreihenfolge kann das Pixel über dem aktuellen Pixel für einen Kontext verwendet werden, da das Pixel darüber bereits codiert worden ist, und es zu diesem Zeitpunkt notwendig ist, einen Kontext für das Decodieren des aktuellen Pixels zu schaffen, und da in einem üblichen Bild das Pixel direkt über dem aktuellen Pixel oft eine Farbe ist, welche wahrscheinlich dem aktuellen Pixel angepaßt ist.If the input symbols represent pixel colors in a two-dimensional array of pixels that form an image, the scanning order is not so important for a text block, context being generally provided by the letters near a current letter. However, in this discussion it is only assumed that the two-dimensional arrangement is keyed into the compressor 102 in a predetermined order, for example from an upper to a lower line and from left to right in each line. With this scan order, the pixel above the current pixel can be used for context since the pixel above it has already been encoded and it is necessary at this point to create a context for decoding the current pixel, and since in a common picture the pixel directly above the current pixel is often a color that is likely to match the current pixel.

Dies ist nichts Besonderes bei dem Kontext-Pixel, welches das Pixel über dem aktuellen Pixel ist, und obwohl viele Kontext-Mo­ delle möglich sind, erfordert eine erfolgreiche, verlustfreie Dekompression gerade des komprimierten Datenstroms, daß das ak­ tuelle Bit-Kontext-Modell nicht Bits oder Symbole enthält, wel­ che nicht zu dem Zeitpunkt decodiert worden sind, an welchem das aktuelle Bit zu decodieren ist. Einige Beispiele sollen diesen Punkt klären.This is nothing special about the context pixel that the Pixel is above the current pixel, and although many context Mo dents are possible requires successful, lossless Decompression of the compressed data stream that the ak current bit context model does not contain bits or symbols, wel have not been decoded at the time the  current bit is to be decoded. Some examples are given to this Clarify point.

Wenn das Kontext-Modell ein "Bit-Position"-Kontext ist, ist der Kontext des aktuellen Bits die Bit-Position in dem aktuellen eingegebenen Pixel, und der Kontext ID für diesen Kontext würde den aktuellen Kontext darstellen, welcher im Fall von K Bit bi­ när dargestellter Symbole K Kontexte schafft. Wenn jedoch der aktuelle Bit-Kontext den Code bestimmt, der verwendet worden ist, um dieses Bit zu codieren, muß der Kontext bekannt sein, bevor das Bit richtig decodiert werden kann. Folglich sollte die Verarbeitungsreihenfolge sicherstellen, daß der Kontext des ak­ tuellen Bits bekannt ist, bevor das Bit decodiert wird.If the context model is a "bit position" context, the is Context of the current bit the bit position in the current entered pixels, and the context ID for that context would represent the current context, which in the case of K Bit bi symbols depicted here K creates contexts. However, if the current bit context determines the code that has been used to encode this bit, the context must be known before the bit can be decoded correctly. Hence the Processing order ensure that the context of the ak actual bits is known before the bit is decoded.

Für jedes Bit, das von der Kontext-Modelleinheit an deren Ent­ scheidungsausgang abgegeben worden ist, akzeptiert der PE-Modul 110(1) die Entscheidung und das Kontext-Fach ID für diese Ent­ scheidung. Basierend auf dieser Entscheidung bezüglich des MPS- Symbols für das Kontext-Fach der Entscheidung gibt der PE-Modul 110(1) ein Resultatbit und einen zugeordneten Pclass-Wert ab. Wie das MPS-Symbol und der Pclass-Wert bestimmt werden, wird nachstehend erläutert.For each bit that has been delivered by the context model unit to its decision output, the PE module 110 ( 1 ) accepts the decision and the context subject ID for this decision. Based on this decision regarding the MPS symbol for the context subject of the decision, the PE module 110 ( 1 ) outputs a result bit and an assigned Pclass value. How the MPS symbol and the Pclass value are determined is explained below.

Der Pclass-Wert ist ein Schätzwert, wie wahrscheinlich das MPS- Symbol in dem Bitstrom ist, der von der Kontext-Modelleinheit 108(1) an die Entscheidungs-Signalleitung abgegeben worden ist. Obwohl die Wahrscheinlichkeitsverteilung der MPS- und LPS-Symbo­ le in den eingegebenen Daten durch Abtasten aller eingegebener Daten genau bestimmbar sein kann, sollte die Kompression nicht von der vollen Wahrscheinlichkeitsverteilung abhängen, da sie an dem Dekompressor vor dem Decodieren der Codeworte nicht zur Ver­ fügung steht. Daher wird der Schätzwert, welcher nur von vorher codierten Bits abhängt, verwendet. Wie in der den ABS-Coder be­ treffenden Anmeldung erläutert, verwendet der Bit-Generator 112(1) den Pclass-Wert, um zu bestimmen, welcher Code zu verwen­ den ist, um den Ergebnisbit-Strom zu codieren. Da ein Code über einen Bereich von Wahrscheinlichkeitsverteilungen optimiert wird, legt ein Pclass-Wert einen Bereich von Wahrscheinlich­ keitswerten, folglich die benannte Wahrscheinlichkeitsklasse, fest. Diese Wahrscheinlichkeits-Klassenwerte werden, einer pro Kontext, im Speicher 116 gespeichert. Der Speicher 116 speichert auch das MPS-Symbol für jeden Kontext. Fig. 4 zeigt das Layout des Speichers 116. Anfangs ist der Pclass-Wert für jeden Kontext ein Pclass-Wert, welcher anzeigt, daß die Wahrscheinlichkeit des MPS-Symbols 50% ist (und des LPS-Symbols 50% ist) und das MPS- Symbol kann beliebig aus 0 und 1 gewählt werden.The Pclass value is an estimate of how likely the MPS symbol is in the bit stream that has been provided by the context model unit 108 ( 1 ) to the decision signal line. Although the probability distribution of the MPS and LPS symbols in the input data can be determined precisely by sampling all the data entered, the compression should not depend on the full probability distribution, since it is not available on the decompressor before the code words are decoded , Therefore, the estimate, which only depends on previously coded bits, is used. As explained in the application relating to the ABS encoder, the bit generator 112 ( 1 ) uses the Pclass value to determine which code to use to encode the result bit stream. Because code is optimized over a range of probability distributions, a Pclass value defines a range of probability values, hence the named probability class. These probability class values are stored in memory 116 , one per context. Memory 116 also stores the MPS symbol for each context. Fig. 4 shows the layout of the memory 116th Initially, the Pclass value for each context is a Pclass value indicating that the probability of the MPS symbol is 50% (and that of the LPS symbol is 50%) and the MPS symbol can be chosen from 0 and 1 ,

Wie in der den ABS-Coder betreffenden Anmeldung ausgeführt, be­ steht eine Methode, Daten in einen Entropie-Codierer zu kompri­ mieren, darin, einen Code zu verwenden, welcher lange Durchläufe des MPS-Symbols zu einem Codewort reduziert, welches die Länge des Durchlaufs anzeigt. Der ursprüngliche Strom wird durch Abge­ ben einer Anzahl von MPS-Bits rekonstruiert, welche durch das Codewort angezeigt worden sind, worauf das LPS-Symbol folgt, au­ ßer wenn ein Durchlauf von MPS-Bits, der länger als ein maxima­ ler Durchlauf ist, in mehr als ein Wort unterteilt wird.As stated in the application relating to the ABS coder, be is a method of compressing data into an entropy encoder in using code that runs long of the MPS symbol to a code word which reduces the length of the run. The original stream is by Abge ben reconstructed a number of MPS bits, which by the Code word have been displayed, followed by the LPS symbol, au If a pass of MPS bits that is longer than a maxima The pass is divided into more than one word.

Nachdem ein Codewort abgegeben ist, signalisiert der Bitgenera­ tor 112(1) dem PE-Modul 110(1), ob der maximale Durchlauf von MPS-Bits vorhanden ist oder nicht. Diese Anzeige wird auf der Tabellen-Aktualisierungs-Signalleitung vorgesehen. Wenn die ma­ ximale Durchlauflänge eingetroffen ist, signalisiert der Bitge­ nerator 112(1) dem PE-Modul 110(1), die Pclass-Tabelle zu aktu­ alisieren, um anzuzeigen, daß das MPS-Symbol wahrscheinlicher ist als das vorher geschätzte. Wenn die maximale Durchlauflänge nicht eingetroffen ist, wird der Pclass-Wert geändert, um anzu­ zeigen, daß das MPS-Symbol weniger wahrscheinlich ist als das vorher geschätzte.After a code word is given, the bit generator 112 ( 1 ) signals the PE module 110 ( 1 ) whether the maximum throughput of MPS bits is present or not. This display is provided on the table update signal line. When the maximum pass length has arrived, bit generator 112 ( 1 ) signals PE module 110 ( 1 ) to update the Pclass table to indicate that the MPS symbol is more likely than the previously estimated one. If the maximum run length has not been reached, the Pclass value is changed to indicate that the MPS symbol is less likely than the previously estimated one.

Dekompression ist genau der entgegengesetzte Prozeß wie bei der Kompression: Codeworte werden in den Ergebnis-Bitstrom deco­ diert, der abgegebene Bitstrom wird in den Entscheidungs-Bitstrom umgewandelt und in Pixel-Symbolen zusammengestellt, welche dann abgegeben werden. In Fig. 3 weist der Dekompressor 106 eine Kontext-Modelleinheit 108(2), einen PE-Modul 110(2), einen Bit­ generator 112(2), Speicher 114(2) und 116(2) auf. Die Zusammen­ schaltung der Module in dem Dekompressor 106 ist für den Bit­ strom die Umkehr (der Zusammenschaltung) des Kompressors 102, es gilt jedoch dieselbe Richtung für die Information, bei dem Bit­ strom, so daß zwei Rückkopplungsschleifen gebildet sind.Decompression is exactly the opposite process to compression: code words are decoded into the result bit stream, the delivered bit stream is converted into the decision bit stream and compiled into pixel symbols, which are then delivered. In Fig. 3, the decompressor 106 includes a context-model unit 108 (2), a PE module 110 (2), a bit generator 112 (2), memory 114 (2) and 116 (2). The interconnection of the modules in the decompressor 106 is the inversion (interconnection) of the compressor 102 for the bit stream, but the same direction applies to the information in the bit stream, so that two feedback loops are formed.

Eine Rückkopplungsschleife bestimmt den Code, der verwendet wird, um ein Codewort zu codieren. Bei Kenntnis der verwendeten Codes kann der Bitgenerator 112(2) den Bitstrom decodieren. Die verwendeten Codes werden durch den Pclass-Wert bestimmt, der durch den PE-Modul 110(2) geschaffen ist. Der Pclass-Wert wird, wie bei dem PE-Modul 110(1) durch den Kontext und Signale auf der Tabellen-Aktualisierungsleitung bestimmt. Der Kontext wird aus Information über frühere Bits und Pixels bestimmt, welche in dem Speicher 114(2) gespeichert ist. Die Rückkopplungsschleife hat eine bestimmte Verzögerung, welche in einer Anzahl Bits ge­ messen werden kann. Die Verzögerung kann sich in Abhängigkeit von den empfangenen Codeworten ändern, und bei den meisten Aus­ führungsformen kann die Verzögerung bei einem Maximum liegen. Wenn das Verzögerungsmaximum X Bits ist, dann sollte der aktuel­ le Bit-Kontext nicht von den X-Bits abhängen, welche den aktuel­ len Bits in dem Entscheidungs-Bitstrom vorausgehen. Dies stellt sicher, daß das aktuelle Bit aus Information decodiert werden kann, die bereits von dem Dekompressor 106 verarbeitet worden ist. Diese Forderung bringt spezielle Probleme mit sich, welche die Erfindung löst, wobei die Daten parallel dekomprimiert wer­ den müssen.A feedback loop determines the code used to encode a code word. Knowing the codes used, bit generator 112 ( 2 ) can decode the bit stream. The codes used are determined by the Pclass value created by the PE module 110 ( 2 ). The Pclass value, as with the PE module 110 ( 1 ), is determined by the context and signals on the table update line. The context is determined from information about previous bits and pixels stored in memory 114 ( 2 ). The feedback loop has a certain delay, which can be measured in a number of bits. The delay may change depending on the code words received, and in most embodiments, the delay may be a maximum. If the delay maximum is X bits, then the current bit context should not depend on the X bits that precede the current bits in the decision bit stream. This ensures that the current bit can be decoded from information that has already been processed by decompressor 106 . This requirement brings with it special problems which the invention solves, the data having to be decompressed in parallel.

Reindexierenreindexing

Wie vorstehend ausgeführt, können binäre Entropie-Codierer-Da­ ten bis zu einem theoretischen Grenzwert komprimieren. Eine bi­ näre Darstellung bzw. Digitalisierung von palettierten Daten kann verwendet werden, um ein Bild so bequem wie irgendein anderes (durch Ändern der Farbpaletten-Tabelle) darzustellen; jedoch stellt es sich heraus, daß einige binäre Darstellungen bzw. Di­ gitalisierungen eine geringere Entropie für einige Kontext-Mo­ delle schaffen als andere. Dieser Vorteil kann durch das Hinzu­ fügen einer Reindexiereinheit an dem vorderen Ende des Kompres­ sors 102 geschaffen werden, wobei die Reindexiereinheit eine bi­ näre Darstellung auswählt, welche eine niedrige Entropie für die zu komprimierenden Daten schafft. Die Umkehr einer Reindexier­ einheit, eine Deindexiereinheit, kann am Ausgang des Dekompres­ sors 106 untergebracht werden oder die Definition der Farbpalet­ te kann modifiziert werden, um Rechenschaft über die Änderung von Alphabet-Zwischenraum infolge des Reindexierens abzulegen. In einigen Ausführungsformen kann die Reindexier-Tabelle sogar vor der Kompression festgelegt werden und sowohl in dem Kompres­ sor als auch in dem Dekompressor gespeichert werden.As stated above, binary entropy encoder data can compress up to a theoretical limit. A binary representation or digitization of palletized data can be used to display an image as conveniently as any other (by changing the color palette table); however, it turns out that some binary representations or digitizations create less entropy for some contextual models than others. This advantage can be created by adding a re-indexing unit at the front end of the compressor 102 , the re-indexing unit selecting a binary representation which creates a low entropy for the data to be compressed. The reversal of a re-indexing unit, a de-indexing unit, can be accommodated at the output of the decompressor 106 or the definition of the color palette can be modified to account for the change in alphabetical space as a result of the re-indexing. In some embodiments, the re-indexing table can even be set before compression and stored in both the compressor and the decompressor.

Fig. 5 zeigt ein Reindexierdaten-Kompressionssystem 158, das eine Reindexiereinheit 160, die mit dem Eingang des Kompressors 102 verbunden ist, eine Reindexiertabelle 162, welche eine (2 × M) Tabelle ist, und wahlweise eine Deindexiereinheit 164 aufweist. Eine Signalleitung 166 ist dargestellt, um die Übertragung der Reindexier-Tabelle zu dem Dekompressor 106 anzu­ zeigen, wenn das Reindexieren nicht festgelegt ist. Da die Rein­ dexier-Tabelle 162 nur (2 × M) ist, wird durch das Übertragen zusammen mit den verdichteten Daten kein merklicher Overhead an­ gebracht. FIG. 5 shows a re-indexing data compression system 158 which has a re-indexing unit 160 connected to the input of the compressor 102 , a re-indexing table 162 which is a (2 × M) table and optionally a de-indexing unit 164 . A signal line 166 is shown to indicate the transfer of the re-index table to decompressor 106 when re-indexing is not fixed. Since the pure indexing table 162 is only (2 × M), no noticeable overhead is brought about by the transmission together with the compressed data.

Die Arbeitsweisen der Reindexiereinheit 160 und der Deindexier­ einheit 164 sind unkompliziert und durch eine spezielle Reinde­ xiertabelle 162 vorgegeben. Die Reindexiereinheit 160 indexiert in die Tabelle 162 mit Hilfe eines Pixel-Symbols von deren Ein­ gang aus und liest den entsprechenden Reindexierwert aus. Dieser Wert wird als der binär dargestellte Symboleingang an den Kon­ text-Kompressor 102 abgegeben. Die Reindex-Werte in der Tabelle 162 sind derart, daß die Operation umkehrbar ist, d. h. genau ein Eintrag in der Reindex-Tabelle 162 gilt für jeden vorgegebenen Reindex-Wert. Wenn folglich der Ausgangswert des Dekompressors 106, welcher mit der Verzögerung des Kompressionssystems dersel­ be ist wie der Eingabewert am Kompressor 102, an die Deindexie­ reinheit 164 angelegt wird, falls sie verwendet ist, führt die Deindexiereinheit 164 die entgegengesetzte Transformation durch und gibt den Index ab, welcher das ursprüngliche M-Pixel-Symbol enthält. Wenn, wie vorstehend erwähnt, das tatsächliche ur­ sprüngliche M-Symbol nicht benötigt wird, und eine bekannte bi­ näre Darstellung verwendet werden kann, wird die Deindexierein­ heit 164 nicht benötigt.The operations of the re-indexing unit 160 and de-indexing unit 164 are straightforward and are specified by a special re-xing table 162 . The reindexing unit 160 indexes into the table 162 with the aid of a pixel symbol from the input thereof and reads out the corresponding reindexing value. This value is output as the binary symbol input to the context compressor 102 . The reindex values in the table 162 are such that the operation is reversible, ie exactly one entry in the reindex table 162 applies to each predefined reindex value. Thus, if the output of decompressor 106 , which is the same as the compression system delay, as the input to compressor 102 , is applied to de-indexing unit 164 , if used, de-indexing unit 164 performs the opposite transformation and outputs the index , which contains the original M-pixel symbol. As mentioned above, if the actual original M symbol is not needed and a known binary representation can be used, the de-indexer 164 is not needed.

Fig. 6 ist ein Blockdiagramm eines Reindextabellen-Generators 200, welcher verwendet wird, um die Reindex-Wert in der Tabelle 162 aus einem eingegebenen Datenblock zu erzeugen. Der Generator 200 kann entweder in einer dedizierten Hardware oder in einem entsprechend programmierten digitalen Computer implementiert sein. Das Benutzen eines digitalen universalen Rechners ist oft preiswerter, insbesondere für einmalige Kompressionen, obwohl er langsamer ist als dedizierte Hardware. Möglicherweise erlauben die meisten Anwendungen, daß eine Kompression vorher und nicht in Realzeit vorgenommen werden kann. FIG. 6 is a block diagram of a clean text table generator 200 used to generate the reindex values in table 162 from an input data block. The generator 200 can be implemented either in dedicated hardware or in a suitably programmed digital computer. Using a digital universal calculator is often cheaper, especially for one-time compressions, although it is slower than dedicated hardware. Most applications may allow compression to be done beforehand rather than in real time.

Die Eingabe am Generator 200 ist ein Block von Pixel-Symbolen. Dieser Block kann die Gesamtheit der Bilder sein, die zu kompri­ mieren sind, oder eine abgetastete Untergruppe der Bilder oder kann sogar Teile von Bildern sein. Wenn jedoch eine Kompression nicht in Realzeit durchzuführen ist, ergibt sich im allgemeinen kein Problem, den gesamten Datensatz als die Eingabe am Genera­ tor 200 zu verwenden. In einigen Ausführungsformen sind die Bilddaten in Blöcken von 16 oder 256 Bildern angeordnet und eine Reindex-Tabelle wird für jeden Block von Bilder erzeugt.The input to generator 200 is a block of pixel symbols. This block may be the entirety of the images to be compressed, a scanned subset of the images, or may even be parts of images. However, if compression is not to be performed in real time, there is generally no problem in using the entire data set as the input to the generator 200 . In some embodiments, the image data is arranged in blocks of 16 or 256 images and a re-index table is created for each block of images.

In Fig. 6 weist der Generator 200 einen die Reihenfolge festle­ genden Modul 204, einen bedingten Wahrscheinlichkeitsvertei­ lungs-Akkumulator 206, eine bedingte Wahrscheinlichkeitstabelle 208 zum Halten von Werten Pc(Si) für (i:0 bis M - 1 und c:0 bis N - 1), wobei Pc(Si) die Wahrscheinlichkeit ist, daß ein eingege­ benes Symbol Si in einem Kontext Cc vorkommt, eine Kontext-Wahr­ scheinlichkeitstabelle 209 zum Halten von Werten P(Cc) für (c:0 bis N - 1), wobei P(Cc) die Wahrscheinlichkeit ist, daß der Kon­ text Cc in dem eingegebenen Datenblock vorkommt, eine Greedy- Entropie-Minimiereinheit, deren Ausgang mit der Reindex-Tabelle verbunden ist, eine partielle bedingte Wahrscheinlichkeitstabel­ le 212 ("die PCP-Tabelle") zum Halten von Werten PCP(c) für (c:0 bis N - 1), wobei PCP(c) die partielle bedingte Wahrscheinlichkeit des Kontext Cc ist, wie nachstehend erläutert wird, eine par­ tielle Positions-Wahrscheinlichkeitstabelle 212 ("die PPCP-Ta­ belle") zum Halten von Werten PPCP(k, c) für (k:1 bis K und c:0 bis N - 1), wobei PPCP(c) die partielle bedingte Positionswahr­ scheinlichkeit des Kontext Cc und der Bit-Position k ist, wie nachstehend erläutert wird, und eine partielle bitweise Entropie-Tabelle 215 zum Halten von Werten PBE(j) für (j:1 bis M - 1) auf, wie später noch erläutert wird. Das Benutzen der ver­ schiedenen Tabellen wird nach dem Lesen der Beschreibung des Flußdiagramms der Fig. 7 deutlicher.In FIG. 6 200 includes the generator comprises the sequence festle constricting module 204, a conditional Wahrscheinlichkeitsvertei lungs accumulator 206, a conditional probability table 208 for holding values P c (S i) for (i: 0 to M - 1 and c: 0 to N-1), where P c (S i ) is the probability that an input symbol S i occurs in a context C c , a context probability table 209 for holding values P (C c ) for (c : 0 to N - 1), where P (C c ) is the probability that the context C c occurs in the input data block, a greedy entropy minimization unit, the output of which is connected to the reindex table, a partial conditional Probability table le 212 ("the PCP table") for holding values PCP (c) for (c: 0 to N-1), where PCP (c) is the partial conditional probability of the context C c , as explained below, a partial position probability table 212 ("the PPCP table") for holding Values PPCP (k, c) for (k: 1 to K and c: 0 to N-1), where PPCP (c) is the partial conditional position probability of the context C c and the bit position k, as explained below , and a partial bit-wise entropy table 215 for holding values PBE (j) for (j: 1 to M-1), as will be explained later. Using the various tables will become clearer after reading the description of the flow chart of FIG. 7.

Der Generator 200 arbeitet folgendermaßen. Der die Reihenfolge festlegende Modul 204 wandelt jedes Symbol aus dem Datenblock 202 in ein geordnetes Symbol Si um, wobei i 0 bis M - 1 ist. Da die Wirkung der Reindexier-Tabelle 102 darin besteht, die Symbo­ le wieder zu ordnen, ist die verwendete spezielle Reihenfolge von geringerer Bedeutung als die Arbeitsweise des Restes des Sy­ stems. In einer möglichen Ausführungsform sind Symbole in Daten­ blöcken 202 bereits als binäre K-Bit (K ≧ log2M) Werte gespei­ chert, in welchem Fall der Modul 204 nicht benötigt wird. In einer Ausführungsform ist S0 dem häufigsten Pixel-Symbol im Da­ tenblock 202, Si dem nächsthäufigen und so weiter zugeordnet, bis SM-1 dem am wenigsten häufigen Pixel-Symbol zugeordnet ist. Dies ist manchmal bekannt als die Frequenzverteilung 0-ter Ord­ nung oder als kontextlose Symbol-Frequenverteilung.The generator 200 operates as follows. The order-determining module 204 converts each symbol from the data block 202 into an ordered symbol S i , where i is 0 to M-1. Since the effect of the re-indexing table 102 is to reorder the symbols, the particular order used is of less importance than the operation of the rest of the system. In one possible embodiment, symbols in data blocks 202 are already stored as binary K bits (K ≧ log 2 M) values, in which case module 204 is not required. In one embodiment, S 0 is associated with the most common pixel symbol in data block 202 , S i with the next most frequent and so on until S M-1 is associated with the least common pixel symbol. This is sometimes known as the 0th order frequency distribution or as a contextless symbol frequency distribution.

Der Modul 204 liest, wenn er verwendet ist, Pixel-Symbole aus einem Datenblock 202 und läßt die binäre Darstellung der geord­ neten Symbole zu dem Akkumulator 206 durch, welcher Wahrschein­ lichkeiten in Tabellen 208 und 209 sammelt. Die Entropie-Mini­ miereinheit 210 liest dann den Inhalt von Tabellen 208 und 209, liest Werte aus und schreibt Werte in Tabellen 212, 214 und 216, um deren Hauptausgabewert zu erzeugen, welcher der Inhalt der Tabelle 162 wird. In einigen Ausführungsformen enthält die Mini­ miereinheit 210 eine interne Tabelle, welcher Indizes von Tabel­ le 162 zugeordnet sind, und in anderen Ausführungsformen be­ stimmt die Minimiereinheit 210, welche Indizes beim Schauen in die Tabelle 162 zugeordnet werden.The module 204 , when used, reads pixel symbols from a data block 202 and passes the binary representation of the ordered symbols to the accumulator 206 , which collects probabilities in tables 208 and 209 . The entropy minimization unit 210 then reads the contents of tables 208 and 209 , reads values and writes values in tables 212 , 214 and 216 to produce their main output value, which becomes the contents of table 162 . In some embodiments, the minimizer 210 includes an internal table to which indexes from table 162 are associated, and in other embodiments, the minimizer 210 determines which indexes are associated when looking into table 162 .

Die Arbeitsweise des Reindexiertabellen-Generators 200 wird am besten anhand des in Fig. 7 dargestellten Flußdiagramms in Ver­ bindung mit Fig. 6 verständlich. Das Flußdiagramm zeigt Blöcke 300 bis 328. Block 300 zeigt den Start eines Prozesses an, um eine Reindexiertabelle aus einem Datenblock zu erzeugen. Die Schritte in den Blöcken 302 und 306 werden üblicherweise von dem Akkumulator 206 durchgeführt, der Schritt im Block 304 vom Modul 204, wobei der Rest üblicherweise von der Entropie-Minimierein­ heit 210 durchgeführt wird. Der Prozeßablauf geht in der Block­ zahl-Reihenfolge vom Block 302 bis zum Block 328 und endet ent­ weder nach dem Block 328 oder geht zurück auf Block 316, wie un­ ten gezeigt ist.The operation of the reindex table generator 200 can best be understood from the flow chart shown in FIG. 7 in conjunction with FIG. 6. The flow diagram shows blocks 300 through 328 . Block 300 indicates the start of a process to generate a reindex table from a data block. The steps in blocks 302 and 306 are usually carried out by the accumulator 206 , the step in block 304 by the module 204 , the rest being usually carried out by the entropy minimizing unit 210 . The process flow goes in block number order from block 302 to block 328 and either ends after block 328 or goes back to block 316 as shown below.

Im Block 302 löscht der Akkumulator 206 die Tabellen 208 und 209. In dem Block 304 ordnet der Modul 204, falls er verwendet wird, die eingegebenen Symbole in S0 bis SM-1, und im Block 304 füllt der Akkumulator 206 die Tabellen 208 und 209. Wenn sie ge­ füllt sind, enthält die Tabelle 208 einen Eintrag für jede Kom­ bination eines Kontextes und eines eingegebenen Symbols, wobei ein Eintrag (c, i) der Tabelle 208 die Wahrscheinlichkeit des Symbols Si anzeigt, das in dem Kontext Cc vorkommt. Wenn sie ge­ füllt ist, enthält die Tabelle 209 einen Eintrag für jeden Kon­ text, wobei ein Eintrag c der Tabelle 209 die Wahrscheinlichkeit des Kontextes Cc anzeigt, welcher ungeachtet des Symbols vorkommt. Es gibt M mögliche Werte für i, und die Kontexte sind {C0, . . ., Cn-1}, wobei N mögliche Kontexte vorkommen. Folg­ lich enthält die Tabelle 208 (M × N) Einträge, und die Tabelle 209 enthält M Einträge.In block 302 , accumulator 206 deletes tables 208 and 209 . In block 304 , module 204 , if used, sorts the symbols entered into S 0 through S M-1 , and in block 304 , accumulator 206 fills tables 208 and 209 . When filled, the table 208 contains an entry for each combination of a context and an entered symbol, an entry (c, i) of the table 208 indicating the probability of the symbol S i that occurs in the context C c . When filled, the table 209 contains an entry for each context, an entry c of the table 209 indicating the probability of the context C c , which occurs regardless of the symbol. There are M possible values for i, and the contexts are {C 0,. , ., C n-1 }, where N possible contexts occur. As a result, table 208 contains (M × N) entries and table 209 contains M entries.

In einer Ausführungsform ist der Kontext das Symbol für das Pi­ xel über dem Pixel, von welchem aus S1 genommen wurde, in wel­ chem Fall N = M ist. In anderen Ausführungsformen ist der Kon­ text das Symbol für das Pixel auf der linken Seite (N = M) oder der Kontext ist zwei Symbole (N = M2). Jedoch würde ein Zweisym­ bol-Kontext M2 Kontexte für jedes eingegebene Symbol erfordern und folglich würden die Tabellen 208 und 209 für die meisten Werte von M sehr groß sein. In noch weiteren Ausführungsformen gibt es weniger als M Kontexte. Wenn beispielsweise alle mögli­ chen Symbole in weniger als M Gruppen gruppiert sind und der Kontext für ein Kontext-Pixel die Gruppe ist, welche das Pixel oberhalb des Kontext-Pixels erhält, dann kommen weniger als M Kontexte vor. Wenn beispielsweise alle Symbole in Gruppen von jeweils vier Symbolen gruppiert wären, würde N M/4 sein. Damit diese Reduzierung in den Kontexten nützlich ist, sollte eine in­ telligente Einrichtung zum Gruppieren von Symbolen verwendet werden.In one embodiment, the context is the symbol for the pixel above the pixel from which S 1 was taken, in which case N = M. In other embodiments, the context is the symbol for the pixel on the left (N = M) or the context is two symbols (N = M 2 ). However, a two symbol context would require M 2 contexts for each symbol entered, and thus tables 208 and 209 would be very large for most values of M. In still other embodiments, there are fewer than M contexts. For example, if all possible symbols are grouped into less than M groups and the context for a context pixel is the group that receives the pixel above the context pixel, then fewer than M contexts will occur. For example, if all symbols were grouped into groups of four symbols, NM / 4 would be. For this reduction in context to be useful, an intelligent device for grouping symbols should be used.

Im Block 308 setzt die Minimiereinheit 210 eine Schleifen-Ver­ änderliche i auf null und initialisiert die Reindex-Tabelle 162, die PCP(c) Tabelle 212 und die PPCP(k, c) Tabelle 214. Obwohl der Block 308 nach dem Block 306 dargestellt ist, könnte deren Rei­ henfolge umgekehrt werden, da keiner der Schritte von dem Ergeb­ nis des anderen abhängt. Die Reindex-Tabelle 162 wird initiali­ siert, um mit Hilfe von Flags oder anderen bekannten Mitteln zu zeigen, daß alle Einträge in der Tabelle 162 leer sind, und kei­ ne Indizes zugeordnet sind. Die PCP-Tabelle wird initialisiert, indem PCP(c) gleich 0 für alle c gesetzt wird, und die PPCP-Ta­ belle wird initialisiert, indem PPCP(k, c) = 0 für alle k und c gesetzt wird. Im Block 310 ordnet die Minimiereinheit 210 einen Index 0 bis S0 zu und aktualisiert die Reindex-Tabelle entsprechend. Im Block 312 aktualisiert die Minimiereinheit 210 die PCP(c) Tabelle für den hinzugefügten Index S0, indem PCP(c) = Pc(S0) für jedes c eingestellt wird. Im Block 314 aktualisiert die Minimiereinheit 210 die PPCP(c)-Tabelle für den hinzugefüg­ ten Index S0, indem PPCP(k, c) = Pc(S0) für jedes (c, k) Paar eingestellt wird, in welchem das k-te Bit der Basis 2 Darstel­ lung des zugeordneten Index "1" ist. Dieser Schritt ist nicht notwendig, wenn der erste zugeordnete Index 0 ist, da keines der Bits des Index 1 ist; dieser Schritt wird jedoch benötigt, wenn ein Nichtnull-Index zuerst zugeordnet wird.In block 308 , the minimizer 210 sets a loop variable i to zero and initializes the reindex table 162 , the PCP (c) table 212 and the PPCP (k, c) table 214 . Although block 308 is shown after block 306 , its order could be reversed since neither step depends on the other's result. The reindex table 162 is initialized to use flags or other known means to show that all entries in the table 162 are empty and no indexes are associated. The PCP table is initialized by setting PCP (c) equal to 0 for all c, and the PPCP table is initialized by setting PPCP (k, c) = 0 for all k and c. In block 310 , the minimization unit 210 assigns an index 0 to S 0 and updates the reindex table accordingly. In block 312 , the minimizer 210 updates the PCP (c) table for the added index S 0 by setting PCP (c) = Pc (S 0 ) for each c. In block 314 , the minimizer 210 updates the PPCP (c) table for the added index S 0 by setting PPCP (k, c) = Pc (S 0 ) for each (c, k) pair in which the k -th bit of the base 2 representation of the assigned index "1". This step is not necessary if the first associated index is 0 because none of the bits of the index is 1; however, this step is required if a non-zero index is assigned first.

Im Block 316 inkrementiert die Minimiereinheit 210 i, was bei dem ersten Durchgang durch den Block 316 i = 1 ergibt. Der Pro­ zeß in den Blöcken 316 bis 328 wird für jedes i zwischen 0 und M - 1 wiederholt, wobei ein Index in der Reindex-Tabelle einem Symbol in jeder Schleife zugeordnet wird. Natürlich ist die letzte Schleife, in welcher i = M - 1 ist, eigentlich nicht not­ wendig, da nur ein Index an diesem Punkt verbleibt, um SM-1 zu­ geordnet zu werden.In block 316, the minimization unit 210 increments i, which results in i = 1 on the first pass through block 316 . The process in blocks 316 through 328 is repeated for each i between 0 and M-1, with an index in the reindex table assigned to a symbol in each loop. Of course, the last loop, in which i = M - 1, is actually not necessary, since only one index remains at this point to be assigned to S M-1 .

Im Block 318 wird die PCP-Tabelle für das Symbol Si entspre­ chend PCP(c) = PCP(c) + Pc(Si) aktualisiert. Nach diesem Schritt ist die Wahrscheinlichkeit, die durch den Kontext Cc und das Al­ phabet von Symbolen A' = {S0, . . . Si} gegeben ist, daß das emp­ fangene Symbol in dem Alphabet A', PCP(c), der c-te Eintrag der PCP-Tabelle, ist. Im Block 320 wird ein partieller bitweiser Entropie-(PBE)Wert für jeden nicht zugeordneten Index erzeugt. Die nicht zugeordneten Indizes (deren Zahl M - 1 an dieser Stelle ist) werden in der Tabelle 162 gefunden oder werden durch die Minimiereinheit 210 intern vermerkt. Die partielle bitweise Entropie für einen Index j und ein Symbol Si, PBE(j, Si), die dadurch gegeben ist, daß die Indizes 0 bis i - 1 bereits zugeord­ net worden sind, ist in Gl.'en 1 bis 3 ausgedrückt.
In block 318 , the PCP table for the symbol S i is updated accordingly to PCP (c) = PCP (c) + P c (S i ). After this step, the probability, which is determined by the context C c and the alphabet of symbols A '= {S 0 ,. , , S i } is given that the received symbol in the alphabet A 'is PCP (c), the c-th entry of the PCP table. At block 320 , a partial bitwise entropy (PBE) value is generated for each unassigned index. The unassigned indices (the number of which is M-1 at this point) are found in table 162 or are noted internally by the minimizing unit 210 . The partial bit-wise entropy for an index j and a symbol S i , PBE (j, S i ), which is given by the fact that the indices 0 to i - 1 have already been assigned, is given in Eqs. 1 to 3 expressed.

wobei A' das Alphabet der i bereits zugeordneten Symbole ist, H(P) die Entropie der Wahrscheinlichkeitsverteilung P ist, bk(x) der Wert des k-ten Bits einer Basis 2-Darstellung von x ist und r(s) der Reindexierwert für das Symbol s ist.where A 'is the alphabet of the symbols already assigned, H (P) is the entropy of the probability distribution P, b k (x) is the value of the kth bit of a base 2 representation of x and r (s) is the reindexing value for the symbol is s.

Im Block 322 wählt die Minimiereinheit 210 den Minimalwert PBE(j, Si) aus allen berechneten Werten aus und setzt eine Varia­ ble X gleich dem j dieses Minimalwerts. Im Block 324 ordnet die Minimiereinheit 210 × dem Reindex-Wert für Si zu und zeigt die Zuordnung in der Tabelle 162.In block 322 , the minimization unit 210 selects the minimum value PBE (j, S i ) from all calculated values and sets a variable X equal to the j of this minimum value. In block 324 , the minimization unit assigns 210 × the reindex value for S i and shows the assignment in table 162 .

Im Block 326 aktualisiert die Minimiereinheit 210 die PPCP(c, k) Tabelle für Si und X entsprechend PPCP(c, k) = PPCP(c, k) + Pc(Si) für alle c und k, wobei gilt: bk(X) = 1. Nach diesem Schritt ist die Wahrscheinlichkeit, die durch den Kontext Cc und das Alpha­ bet A' = {S0, . . . Si} gegeben ist, daß das k-te Bit eines Reindex- Werts für ein empfangenes Symbol 1 ist und das empfangene Symbol in dem Alphabet A' PPCP(c, k) ist. In dem Block 328 überprüft die Minimiereinheit 210, um zu sehen, ob nicht zwei oder mehr Reindex-Werte zugeordnet worden sind. Dies ist der Fall, wenn i M - 2 oder kleiner in diesem Block ist, was bedeutet, daß (M - 1) Indizes zugeordnet worden sind. Der letzte Index ist SM-1 zuge­ ordnet. In block 326 , the minimization unit 210 updates the PPCP (c, k) table for S i and X corresponding to PPCP (c, k) = PPCP (c, k) + P c (S i ) for all c and k, where: b k (X) = 1. After this step, the probability is determined by the context C c and the alpha bet A '= {S 0 ,. , , S i } is given that the kth bit of a re-index value for a received symbol is 1 and the received symbol in the alphabet A 'is PPCP (c, k). In block 328 , the minimizer 210 checks to see if two or more reindex values have not been assigned. This is the case if i is M - 2 or less in this block, which means that (M - 1) indices have been assigned. The last index is assigned to S M-1 .

Der Nenner in Gl. (2) ist PCP(2), was im Block 318 durch Hinzu­ fügen von pc(Si) jedesmal dann aktualisiert wird, wenn ein Sym­ bol Si im Alphabet A' hinzugefügt wird. Der Zähler in Gl. (2) ist PPCP(k, c), wie es sein würde, wenn j der Index für Si wäre. Da der aktualisierte Wert von PPCP(k, c) von der speziellen Zuord­ nung von Index j zu Si abhängt, wird PPCP(k, c) nach der Auswahl von X = j im Block 326 aktualisiert. Natürlich braucht, da H eine bitweise Entropie-Funktion ist, Gl. (2) nur entweder für β = 0 oder 1 berechnet zu werden, da gilt: P(0) + P(1) = 1. Da auch H eine bitweise Entropie ist, vereinfacht sich Gl. (3) tatsächlich zu:
The denominator in Eq. (2) is PCP (2), which is updated in block 318 by adding p c (S i ) each time a symbol S i is added in the alphabet A '. The counter in Eq. (2) is PPCP (k, c) as it would be if j were the index for S i . Since the updated value of PPCP (k, c) depends on the particular mapping from index j to S i , PPCP (k, c) is updated in block 326 after the selection of X = j. Of course, since H is a bitwise entropy function, Eq. (2) to be calculated only for either β = 0 or 1, since: P (0) + P (1) = 1. Since H is also a bitwise entropy, Eq. (3) actually to:

H(x) = -x.log2x - (1 - x).log2(1 - x).H (x) = -x.log 2 x - (1 - x) .log 2 (1 - x).

Das Endergebnis des in Fig. 7 dargestellten Prozesses ist die Zuordnung von Reindex-Werten in der Reindex-Tabelle 162, welche für die Reindexiereinheit 160 verwendet wird, um eingegebene Pi­ xel-Symbole in eine binäre Darstellung zu reindexieren, was im allgemeinen zu einer besseren Kompression führt, als wenn die Reindexierung nicht vorgenommen würde.The end result of the process illustrated in Figure 7 is the mapping of re-index values in re-index table 162 , which is used for re-indexing unit 160 to re-index entered pixel symbols into a binary representation, which generally improves Compression leads as if the reindexing was not carried out.

Parallel-VerarbeitungParallel processing

In den vorstehenden Abschnitten ist beschrieben, wie Kompres­ sionsverhältnisse durch das Anwenden von adaptivem Codieren, Kontext-Modellen und Reindexieren zu verbessern sind. In einem Dekompressor erfordern ein adaptives Codieren und ein Kontext- Modellieren Rückkopplungsschleifen, da die Art und Weise, auf welche ein Bit aus einem Codewort-Strom decodiert wird, von In­ formation über frühere decodierte Werte und Symbole abhängt. Wenn es der Dekompressor erfordert, den Codewort-Strom in Echt­ zeit schnell zu decodieren, könnte ein Parallel-Verarbeiten an­ gewendet werden, um einen größeren Datendurchlauf zu schaffen.The previous sections describe how compresses conditions through the use of adaptive coding, Context models and reindexing need to be improved. In one Decompressors require adaptive coding and contextual Model feedback loops because of the way on which a bit is decoded from a code word stream, from In formation depends on previous decoded values and symbols. If the decompressor requires it, the code word stream in real Decoding time quickly could involve parallel processing can be used to create a larger data flow.

Eine derartige Parallelverarbeitung-Implementierung ist folgen­ de. Mit Hilfe des Bitpositions-Kontext-Modell (siehe Fig. 8(a)) wird jedes Bit in einem Pixel-Wert durch einen von acht Paral­ lel-Codern verarbeitet, wobei jedem Coder eine Bitposition überlassen wird. Bei dieser Anordnung ist der Kontext des Bits in einem Coder bekannt, da die Bitposition der einzige Kontext ist, und die Bitposition ist dem Coder bekannt, da sie eine Konstante für einen spezifischen Coder ist. Wenn jedoch andere Kontext-Mo­ delle verwendet werden, um eine bessere Kompression zu schaffen, ist ein Parallelschalten eines Coders nicht so einfach.Such a parallel processing implementation is de. With the help of the bit position context model (see FIG. 8 (a)), each bit in a pixel value is processed by one of eight parallel coders, each bit position being left to each coder. With this arrangement, the context of the bit in a coder is known because the bit position is the only context, and the bit position is known to the coder because it is a constant for a specific coder. However, if other context models are used to provide better compression, connecting a encoder in parallel is not that easy.

Als Beispiel wird das bitweise abhängige Kontext-Modell genom­ men, das in Fig. 8(c) dargestellt ist. Wenn jedes Bit eines Pixels an einen gesonderten Coder gesendet wird, können die Bits nicht parallel decodiert werden, da Bits links von einem zu de­ codierenden Bit zuerst decodiert werden müssen, um den notwendi­ gen Kontext für das zu decodierende Bit zu schaffen. Folglich führt die Verwendung von einigen Kontext-Modellen zu Zwängen bei einer Parallelverarbeitung. In einer Ausführungsform der Erfin­ dung ist daher, um die Verwendung eines bevorzugten Kontext-Mo­ dells zu ermöglichen und um noch dazu eine parallele Verarbei­ tung in einem Coder zuzulassen, welcher diese Kontext-Modelle verwendet, ein Umordnungspuffer vorgesehen. Fig. 9 und 10 zeigen, wie ein Umordnungspuffer und seine Umkehr, ein die Ordnung auf­ hebender (deordering) Puffer, mit Parallel-Codern verbunden ist; Fig. 11 zeigt die Arbeitsweise des Umordnungspuffer im einzelnen.As an example, the bit-dependent context model is shown, which is shown in Fig. 8 (c). If each bit of a pixel is sent to a separate encoder, the bits cannot be decoded in parallel since bits to the left of a bit to be decoded have to be decoded first to create the necessary context for the bit to be decoded. Consequently, the use of some context models creates constraints on parallel processing. In one embodiment of the invention, a reordering buffer is therefore provided in order to enable the use of a preferred context model and also to allow parallel processing in a coder which uses these context models. Figures 9 and 10 show how a reorder buffer and its reverse, a deordering buffer, are connected to parallel coders; Fig. 11 shows the operation of the reorder buffer in detail.

In einem bevorzugten Kontext-Modell werden zwei Beschränkungen bei einem Parallel-Coder ausgenutzt. Wenn jede Stufe unabhängig zu sein hat, dann sollte in dem Satz Bits, die in einem paralle­ len Zyklus verarbeitet worden sind, keines der Bits den Kontext der anderen Bits beeinflussen. Ferner sollten, wenn die Kontext- Daten zu aktualisieren sind, nachdem jedes Bit verarbeitet ist, nicht zwei Bits in dem Satz parallel verarbeiteter Bits einen Kontext gemeinsam benutzen. Fig. 12 veranschaulicht eine typische Kontext-Aufzeichnung, welche Kontext-Daten enthält, die aktuali­ siert werden können, wenn ein Bit mit einem vorgegebenen Kontext verarbeitet wird. Diese Aufzeichnung kann eine Zeile in einer Tabelle sein, beispielsweise in dem in Fig. 4 dargestellten Speicher 116.In a preferred context model, two restrictions are used in a parallel encoder. If each stage has to be independent, then in the set of bits processed in a parallel cycle, none of the bits should affect the context of the other bits. Furthermore, if the context data is to be updated after each bit is processed, two bits in the set of bits processed in parallel should not share a context. Figure 12 illustrates a typical context record that contains context data that can be updated when a bit is processed with a given context. This record may be a row in a table, for example in the memory 116 shown in FIG. 4.

In Fig. 9 ist ein paralleles Kompressionssystem 400 gemäß der Erfindung mit einem Umodnungspuffer 402, einem Demultiplexer 404, N parallelen Stufen 406 (0, . . . N - 1), ein Multiplexer 408 und ein die Ordnung aufhebender Puffer 410 dargestellt. Das System 400 kann mit und ohne Reindexieren benutzt werden. Jede Stufe 406 weist einen Kompressor 412, welcher dem Kompressor 102 ent­ spricht, einen Kanal 414 und einen Dekompressor 416 auf, welcher dem Dekompressor 106 entspricht.In Fig. 9 a parallel compression system of the invention with a Umodnungspuffer 402, a demultiplexer 404, N parallel stages 406,400 according to (0, N -... 1), a multiplexer 408 and an order-cancellation buffer 410 shown. System 400 can be used with and without reindexing. Each stage 406 has a compressor 412 , which speaks to the compressor 102 , a channel 414 and a decompressor 416 , which corresponds to the decompressor 106 .

Fig. 10 zeigt eine alternative Konfiguration 450, in welcher eine Verschachtelungseinheit 452 verwendet wird, um den Betrieb von Kanälen 414 (0, . . ., N - 1) zu einem einzigen Kanal 454 zu ver­ knüpfen, und eine Entschachtelungseinheit (de-interleaver) 456, welche verwendet wird, um den Betrieb des einzigen Kanals 454 wieder in die gesonderten Kanäle für jede Stufe aufzuteilen. Fig. 10 shows an alternative configuration 450 in which an interleaving unit 452 is used to link the operation of channels 414 (0,..., N-1) to a single channel 454 and a deinterleaving unit (de-interleaver ) 456 , which is used to split the operation of the single channel 454 back into the separate channels for each stage.

In Fig. 9 wird der Symbolstrom, der in das System 400 eingegeben worden ist, durch den Umordnungspuffer 402 gepuffert. Der Umord­ nungspuffer 404 nimmt einen Bitstrom von K Bits (K = 8 in Fig. 8) pro Symbol auf, was im einzelnen nachstehend noch erläutert wird, und gibt die Bits an den Demultiplexer 404 ab, welcher die umgeordneten Bits an die Parallel-Coder verteilt. In der "i"-ten- Parallelstufe 406(i) komprimiert der Kompressor 412(i) die der Stufe 406(i) zugeordneten Bits zu Codeworten, welche ihrerseits den Kanal 414(i) durchlaufen und durch den Dekompressor 416(i) dekomprimiert werden. Die Ausgänge aller Stufen werden dann durch den Multiplexer 408 verknüpft, und deren Verknüpfung wird an den die Umordnung aufhebenen (deordering) Puffer 410 abgege­ ben, welcher das Gegenteil des Umordnungspuffers 404 durchführt. Obwohl in dem dargestellten Parallel-Coder jeder Stufe ein ein­ zelner Kontext zugeordnet ist, läßt ein Umordnen die Flexibili­ tät zu, um die Parallelstufen in anderer Weise gemäß den Notwen­ digkeiten der Anwendung aufzuteilen. Beispielsweise könnte jede Stufe einem Pclass-Wert, wobei eine Gruppe eine Anzahl Kontexte aufweist, oder einer Aufteilung zugeordnet werden, die speziell sogar für den Betrieb über die verschiedenen Stufen ausgelegt ist.In FIG. 9, the symbol stream that has been input to system 400 is buffered by reorder buffer 402 . Reorder buffer 404 receives a bit stream of K bits (K = 8 in FIG. 8) per symbol, which will be explained in more detail below, and delivers the bits to demultiplexer 404 , which sends the reordered bits to the parallel encoders distributed. In the "i" th parallel stage 406 (i), the compressor 412 (i) compresses the bits associated with the stage 406 (i) into code words which in turn pass through the channel 414 (i) and are decompressed by the decompressor 416 (i) become. The outputs of all stages are then merged by multiplexer 408 and their mating is provided to de-ordering buffer 410 which does the opposite of reorder buffer 404 . Although a single context is assigned to each level in the parallel coder shown, rearrangement allows flexibility to divide the parallel levels in a different way according to the needs of the application. For example, each level could be assigned a Pclass value, where a group has a number of contexts, or a division that is specifically designed even for operation over the different levels.

Fig. 11(a) zeigt einen Umordnungspuffer 502, welcher in einem Parallel-Coder mit vier Parallelstufen und dem bitweise abhängi­ gen Kontext-Modell verwendet wird, obwohl er bei anderen Konfi­ gurationen verwendbar ist, wie beispielsweise bei 8 oder N Pa­ rallelstufen, einer unterschiedlichen Anzahl von Bits pro Pixel oder einem anderen Kontext-Modell. Vier eingegebene Bytes (Pi­ xels) sind links dargestellt sind, um in den Puffer 502 eingege­ ben zu werden) und acht 4 Bit-Blöcke sind dargestellt, die von dem Puffer 502 abgegeben werden. Die abgegebenen Blöcke, und zwar einer pro Parallel-Codier-Periode, werden an einen Paral­ lel-Coder abgegeben; folglich stellt jeder der abgegebenen Blöcke eine Gruppe von parallel verarbeiteten Bits dar. Wenn die eingegebenen Bits nicht umgeordnet würden, könnten die Blöcke, die in den Parallel-Coder eingegeben worden sind, gerade die vier höchstwertigen Bits eines Pixels A (A7 bis A4) sein, auf welche die vier niedrigstwertigen Bits des Pixels A (A3 bis A0), dann die vier höchstwertigen Bits von Pixels B (B7 bis B4), usw. folgen. Wie aus der vorstehenden Erörterung zu ersehen ist, wür­ de ohne ein Umordnen ein Satz parallel verarbeiteter Bits nicht unabhängig sein, wenn das bitweise abhängige Modell verwendet wird, da A4 seinen Kontext aus einer Position (4) und den Werten von Bits A7, A4 und A5 erhält, welche in derselben Gruppe von Bits sind. Fig. 11 (a) shows a reordering buffer 502 which is used in a parallel coder with four parallel stages and the bitwise dependent context model, although it can be used in other configurations, such as 8 or N parallel stages, one different number of bits per pixel or another context model. Four input bytes (pixels) are shown on the left to be input into the buffer 502 ) and eight 4-bit blocks are output from the buffer 502 . The delivered blocks, one per parallel coding period, are delivered to a parallel encoder; consequently, each of the output blocks represents a group of bits processed in parallel. If the input bits were not rearranged, the blocks that were input to the parallel encoder could just be the four most significant bits of a pixel A (A7 to A4) followed by the four least significant bits of pixel A (A3 to A0), then the four most significant bits of pixel B (B7 to B4), etc. As can be seen from the above discussion, without reordering a set of bits processed in parallel would not be independent if the bitwise dependent model is used, since A4 has its context from a position (4) and the values of bits A7, A4 and A5 receives which are in the same group of bits.

Um diese Schwierigkeit zu lösen, ordnet der Puffer 502 die ein­ gegebenen Bits um, wie dargestellt ist, um für Pixel A, B, C und D die Blöcke (Sätze von parallel verarbeiteten Bits) D7-C7-B7- A7, D6-C6-B6-A6, usw. abzugeben. Bei diesem Umordnen verläßt sich kein Bit auf irgendein anderes Bit in seiner Kontextgruppe. Wenn jedoch zwei Bits noch einen Kontext gemeinsam benutzen, würden beispielsweise D7 und C7 einen Kontext in dem bitweise abhängigen Kontext-Modell benutzen, da der bitweise abhängige Kontext die Bitposition und die Bits auf der linken Seite sind. Für D7 und C7 sind die Bitpositionen dieselben, und es gibt kei­ ne Bits links davon (siehe oben in Fig. 11).To solve this difficulty, the buffer 502 rearranges the given bits, as shown, to the blocks (sets of bits processed in parallel) D7-C7-B7-A7, D6-C6 for pixels A, B, C and D. -B6-A6, etc. With this reordering, no bit relies on any other bit in its context group. However, if two bits still share a context, for example, D7 and C7 would use a context in the bit-dependent context model since the bit-dependent context is the bit position and the bits on the left. For D7 and C7, the bit positions are the same and there are no bits to the left of it (see above in Fig. 11).

Diese zweite Beschränkung wird zusammen mit der ersten Be­ schränkung durch den in Fig. 11(b) dargestellten Umordnungspuffer gelöst. In diesem Puffer werden Pixels, die in Blöcken gruppiert sind, von verschiedenen Pixel, aber auch von verschiedenen Bit- Positionen genommen. Wenn eine Bitposition Teil des Kontextes ist, haben Bits mit verschiedenen Bitpositionen verschiedene Kontexte. Folglich weisen die von dem Puffer 504 abgegebenen Blöcke (Sätze von parallel verarbeiteten Bits) D7-C6-B5-A4, D6- C5-B4-A3 usw. bis zu dem neunten Block H7-G6-F5-E4 jeweils auf, welche nicht von anderen Bits in ihrem Block für einen Kontext abhängen und einen Kontext nicht mit irgendwelchen anderen Bits in ihrem Block gemeinsam benutzen. Eingegebene Pixels E, F, G und H sind nicht dargestellt, folgen aber auf das Pixel D.This second limitation is solved together with the first limitation by the reorder buffer shown in Fig. 11 (b). In this buffer, pixels grouped in blocks are taken from different pixels, but also from different bit positions. If a bit position is part of the context, bits with different bit positions have different contexts. Thus, the blocks (sets of bits processed in parallel) output from the buffer 504 each have D7-C6-B5-A4, D6-C5-B4-A3, etc. up to the ninth block H7-G6-F5-E4, which are not depend on other bits in its block for context and not share a context with any other bits in its block. Entered pixels E, F, G and H are not shown, but follow pixel D.

In Fig. 11(b) gibt es keine Pixels, die dem Pixel A vorangehen, um den Zustand des Puffers zu erläutern, der auf ein Rücksetzen folgt. Bei dem ersten Parallelschritt nach einem Rücksetzen des Puffers wird ein Block mit nur einem Bit (von einem Pixel A aus) verarbeitet. Bei dem nächsten Parallelschritt wird ein Bit von einem Pixel A aus und ein Bit von einem Pixel B aus verarbeitet. Obwohl das versetzte Anordnen von Bits, um Kontext-Konflikte zu vermeiden, bedeutet, daß nicht alle Parallelstufen in mehreren ersten Blöcken nach einem Rücksetzen verwendet werden, ist diese Unterausnutzung für eine vernünftige Bildgröße bedeutungslos. Im Falle von Fig. 11(b) kommt dies nur in den ersten drei Blöcken vor.In Fig. 11 (b), there are no pixels preceding pixel A to explain the state of the buffer that follows a reset. In the first parallel step after resetting the buffer, a block with only one bit (from a pixel A) is processed. In the next parallel step, a bit is processed from a pixel A and a bit from a pixel B. Although the staggering of bits to avoid context conflicts means that not all parallel stages are used in several first blocks after a reset, this underuse is meaningless for a reasonable image size. In the case of Fig. 11 (b), this only occurs in the first three blocks.

Fig. 13(a) und (b) erläutern eine Beschränkung eines Kontext-Mo­ dell, das in Pipeline-Coders angeordnet ist, und welche den Be­ schränkungen entspricht, die bei Parallel-Codern aufgetreten sind. Fig. 13(a) und 13 (b) zeigen den Fortschritt bei einem Pipe­ line-Coder, welcher die in Fig. 11 dargestellten Pixels A bis D verarbeitet, wobei Fig. 13(a) eine Pipeline zeigt, die Bits in einer nicht umgeordneten Reihenfolge verarbeitet, während Fig. 13(b) eine Pipeline zeigt, die Bits in einer umgeordneten Reihenfolge verarbeitet. In beiden Figuren ist jede Spalte mit einer Zeit t überschrieben und zeigt das Bit, das durch eine Pi­ peline-Stufe verarbeitet wird. Die in diesem Beispiel darge­ stellten Stufen sind eine Eingabestufe, drei Zwischenstufen (IS- 1 bis IS-3) und zwei Ausgangsstufen. Fig. 13 (a) and (b) illustrate a limitation of a context-Mo model which is arranged in pipeline coder, and corresponds to the restrictions which Be, which have occurred in parallel coders. Fig. 13 (a) and 13 (b) show the progress of a pipe line coder, which the pixel A shown processed to D in Fig. 11, Fig. 13 (a) illustrates a pipeline, the bits in a non- reordered, while Fig. 13 (b) shows a pipeline that processes bits in a reordered order. In both figures, each column is overwritten with a time t and shows the bit that is processed by a pipeline stage. The stages shown in this example are one input stage, three intermediate stages (IS-1 to IS-3) and two output stages.

In diesem Beispiel soll ein Bit verarbeitet werden, das verfüg­ bar ist, um den Kontext von anderen Bits in der ersten Ausgangs­ stufe, jedoch nicht früher zu bestimmen. Ferner soll die Verar­ beitung von IS-1 von dem Kontext des zu verarbeitenden Bits ab­ hängen, und das bitweise abhängige Kontext-Modell soll verwendet werden. Bei dem bitweise abhängigen Kontext-Modell hängt der Kontext des eingekreisten Bits A2 von A3 bis A7 ab. In Fig. 13(a) würde dies bedeuten, daß das Verarbeiten von Bits A2 in IS-1 zu­ mindest nicht weitergehen kann, bis die Bits A3 und A4 alle auf dem Weg zu der ersten Ausgangsstufe sind. (Die Bits A5 bis A7 sind bereits über die erste Ausgangsstufe hinaus. Diese Verzöge­ rung würde die Vorteile einer ipeline-Verarbeitung zunichte ma­ chen.In this example, we want to process a bit that is available to determine the context of other bits in the first output stage, but not earlier. Furthermore, the processing of IS-1 should depend on the context of the bit to be processed, and the bit-dependent context model should be used. In the context model depending on the bit, the context of the circled bit A2 depends on A3 to A7. In Fig. 13 (a) this would mean that the processing of bits A2 in IS-1 cannot continue at least until bits A3 and A4 are all on the way to the first output stage. (Bits A5 to A7 are already beyond the first output stage. This delay would negate the advantages of ipeline processing.

Um diese Schwierigkeit zu lösen, kann ein Umordnungspuffer, wie beispielsweise der Puffer 502, zu dem in Fig. 13(b) dargestellten Effekt verwendet werden. In diesem Beispiel ist das Bit B6 ein­ gekreist, welches seinen Kontext von dem Bit B7 aus erhält, wel­ ches an die erste Ausgabestufe in einem früheren Abschnitt abge­ geben wurde, und es ist folglich verfügbar, wenn B6 in IS-1 zu verarbeiten ist.To solve this difficulty, a reordering buffer such as buffer 502 can be used for the effect shown in Fig. 13 (b). In this example, bit B6 is circled, which gets its context from bit B7 which was given to the first output stage in a previous section, and is thus available when B6 is to be processed in IS-1.

Claims (3)

1. Entropie-Codierer, bei welchem eingegebene Symbole codiert werden, basierend auf ei­ nem Kontext, welcher durch Kontext-Symbole geschaffen ist, welche auch eingegebene Symbole sind, mit den folgenden Merkmalen:
Eine Symbole umordnende Einrichtung, die mit einem Symboleingang des Entropie- Codierers verbunden ist, um eingegebene Symbole von einer eingegebenen Stromreihen­ folge aus in eine umgeordnete Stromreihenfolge umzuordnen;
eine Kontext-Modelleinheit, die mit einem Ausgang der Symbole umordnenden Einrich­ tung verbunden ist, welche eingegebene Symbole in der umgeordneten Stromreihenfolge erhält und eingegebene Symbole, erforderlichenfalls speichert, um einen Kontext eines aktuellen eingegebenen Symbols aus den Kontext-Symbolen eines aktuellen eingegebenen Symbols zu bestimmen;
eine Wahrscheinlichkeits-Schätzeinheit, die entsprechend verbunden ist, um das aktuelle eingegebene Symbol und einen Kontext des aktuellen eingegebenen Symbols von der Kontext-Modell-Einheit zu erhalten, um die Wahrscheinlichkeit des aktuellen eingegebe­ nen Symbols zu schätzen, das in seinem vorgegebenen Kontext vorkommt, und
einen Bitgenerator, welcher mit der Wahrscheinlichkeits-Schätzeinheit verbunden ist, um Codeworte basierend auf Wahrscheinlichkeits-Schätzwerten zu erzeugen, welche durch die Wahrscheinlichkeits-Schätzeinheit geschaffen sind, wobei die Codeworte eine komp­ rimierte Darstellung des umgeordneten Stroms von eingegebenen Symbolen sind,
wobei die Symbole umordnende Einrichtung eingegebene Symbole so umordnet, dass ein umgeordneter Abstand zwischen dem aktuellen eingegebenen Symbol und den Kontext- Symbolen eines aktuellen eingegebenen Symbols in dem umgeordneten Strom größer ist als ein ursprünglicher Abstand zwischen dem aktuellen eingegebenen Symbol und den Kontext-Symbolen des aktuellen eingegebenen Symbols in dem eingegebenen Strom.
1. Entropy encoder, in which input symbols are encoded, based on a context created by context symbols, which are also input symbols, with the following features:
A symbol rearranging device connected to a symbol input of the entropy encoder to rearrange input symbols from an input current sequence into a rearranged current sequence;
a context model unit connected to an output of the symbol rearranging device, which receives input symbols in the rearranged stream order and stores input symbols, if necessary, to determine a context of a current input symbol from the context symbols of a current input symbol ;
a likelihood estimator connected appropriately to obtain the current input symbol and a context of the current input symbol from the context model unit to estimate the probability of the current input symbol that occurs in its given context, and
a bit generator connected to the probability estimator to generate code words based on probability estimates created by the probability estimator, the code words being a compressed representation of the rearranged stream of input symbols,
wherein the symbol rearranging means rearranges input symbols such that a rearranged distance between the current input symbol and the context symbols of a current input symbol in the rearranged stream is greater than an original distance between the current input symbol and the context symbols of the current one entered symbol in the entered stream.
2. Einrichtung nach Anspruch 1, mit einem Decoder, welcher aufweist:
eine zweite Kontext-Modelleinheit, welche decodierte eingegebene Daten erforderlichen­ falls speichert, um einen Kontext eines aktuellen eingegebenen Symbols zu bestimmen;
eine zweite Wahrscheinlichkeits-Schätzeinheit, die entsprechend geschaltet ist, um einen Kontext des aktuellen eingegebenen Symbols von der zweiten Kontext-Modelleinheit zu erhalten;
einen zweiten Bitgenerator, der entsprechend geschaltet ist, um die Code-Worte, die von dem Bit-Generator abgegeben worden sind, aufzunehmen, um einen Symbolstrom aus den Code-Worten basierend auf Wahrscheinlichkeits-Schätzwerten zu erzeugen, welche von der zweiten Wahrscheinlichkeits-Schätzeinheit geschaffen sind;
eine ein Symbolumordnen aufhebende Einrichtung, die mit einem Symbolausgang der zweiten Kontext-Modelleinheit verbunden ist, um decodierte eingegebene Symbole von der umgeordneten Stromreihenfolge aus in die eingegebene Stromreihenfolge umzuord­ nen, um dadurch eine Verzögerung zwischen den zu decodierenden Kontext-Symbolen und den aktuellen, zu decodierenden, eingegebenen Symbolen zu vergrößern.
2. Device according to claim 1, with a decoder, which comprises:
a second context model unit that stores decoded input data if necessary to determine a context of a current input symbol;
a second probability estimation unit, which is switched accordingly to obtain a context of the currently input symbol from the second context model unit;
a second bit generator, which is connected accordingly to receive the code words which have been output by the bit generator, in order to generate a symbol stream from the code words based on probability estimates, which are generated by the second probability estimation unit are created;
a symbol rearranging device connected to a symbol output of the second context model unit for rearranging decoded input symbols from the rearranged stream order into the input stream order, thereby causing a delay between the context symbols to be decoded and the current ones decoding entered symbols.
3. Einrichtung nach Anspruch 2, mit einer Einrichtung, um die Code-Worte parallel zu de­ codieren, wobei die größere Verzögerung ausreicht, um ein paralleles Decodieren zu er­ möglichen, während erforderlichenfalls Kontext-Symbole von dem Decodierer geschaffen werden.3. Device according to claim 2, with a device to de parallel the code words encode, the larger delay being sufficient to cause parallel decoding possible context symbols, if necessary, created by the decoder become.
DE19549491A 1994-02-23 1995-02-22 Palletised image compression with entropy encoding Expired - Fee Related DE19549491C2 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/200,233 US5471207A (en) 1994-02-23 1994-02-23 Compression of palettized images and binarization for bitwise coding of M-ary alphabets therefor
DE19506164A DE19506164C2 (en) 1994-02-23 1995-02-22 Method for compressing entered symbols into code words

Publications (1)

Publication Number Publication Date
DE19549491C2 true DE19549491C2 (en) 2003-08-07

Family

ID=26012703

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19549491A Expired - Fee Related DE19549491C2 (en) 1994-02-23 1995-02-22 Palletised image compression with entropy encoding

Country Status (1)

Country Link
DE (1) DE19549491C2 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19819405B4 (en) * 1997-05-01 2006-06-29 Ricoh Co., Ltd. Implementation of a reversible embedded wavelet system
US8565298B2 (en) 1994-09-21 2013-10-22 Ricoh Co., Ltd. Encoder rate control

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
RABBANI, Majid: Digital image compression tech- niques, SPIE-1991, Bellingham, Washington, S. 15-19, 34-37, 58-59 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8565298B2 (en) 1994-09-21 2013-10-22 Ricoh Co., Ltd. Encoder rate control
DE19819405B4 (en) * 1997-05-01 2006-06-29 Ricoh Co., Ltd. Implementation of a reversible embedded wavelet system

Similar Documents

Publication Publication Date Title
DE19506164C2 (en) Method for compressing entered symbols into code words
DE102015114973B4 (en) Data compression
EP1467491B1 (en) Arithmetical coding of transform coefficients
DE69631792T2 (en) APPARATUS AND METHOD FOR THE TWO-DIMENSIONAL DATA COMPRESSION
DE69637067T2 (en) Variable length decoding system
DE102015114978B4 (en) Data compression
DE4314741C2 (en) Decoder for units of Huffman encoded data
DE19635251C2 (en) Method and apparatus for compressing any data
DE3109795A1 (en) TAPE CONSTRUCTION METHOD FOR TINTED IMAGES
DE2550928C2 (en) Device for compressing a m * n matrix of delta-coded points
EP2489187B1 (en) Method for coding symbols from a digital image sequence
EP2068448B1 (en) Method and arrangement for arithmetic encoding and decoding with application of several tables
DE19606178A1 (en) Compression and decompression of pixel values
DE19742417A1 (en) Device and method for performing M-fold machine end-state entropy coding or entropy coding with a machine with a finite state
DE19534730A1 (en) Entropy encoder for facsimile transmission
DE2640414A1 (en) CIRCUIT ARRANGEMENT FOR COMPRESSION CODING USING A CORRELATION BETWEEN TWO-DIMENSIONAL MATRICES DERIVED FROM TWO-VALUE DIGITAL IMAGES
DE102007020292A1 (en) Method for compressing data using run-length coding, in particular for medical image data
DE69735835T2 (en) Variable length decoder and method for decoding two codewords per clock
EP3624456A1 (en) Method for compression and decompression of image data
DE2340230A1 (en) METHOD AND DEVICE FOR PREDICTING THE SIGNAL LEVEL VALUE OF A MESSAGE ELEMENT
EP1472888B1 (en) Context-sensitive encoding and decoding of a video data stream
DE60012717T2 (en) BILDCODING USING A CONVERSION OF WAVELET COEFFICIENTS
DE19925667B4 (en) Adaptive coding with adaptive speed
DE19549491C2 (en) Palletised image compression with entropy encoding
DE602004011213T2 (en) INTRAFRAME COMPRESSION AND DECOMPRIMATION OF VIDEO SIGNALS WITH A FIXED BITRATE

Legal Events

Date Code Title Description
8304 Grant after examination procedure
AC Divided out of

Ref document number: 19506164

Country of ref document: DE

Kind code of ref document: P

8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee