DE19506164C2 - Verfahren zum Komprimieren eingegebener Symbole in Codeworte - Google Patents

Verfahren zum Komprimieren eingegebener Symbole in Codeworte

Info

Publication number
DE19506164C2
DE19506164C2 DE19506164A DE19506164A DE19506164C2 DE 19506164 C2 DE19506164 C2 DE 19506164C2 DE 19506164 A DE19506164 A DE 19506164A DE 19506164 A DE19506164 A DE 19506164A DE 19506164 C2 DE19506164 C2 DE 19506164C2
Authority
DE
Germany
Prior art keywords
bit
context
symbol
symbols
binary
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
DE19506164A
Other languages
English (en)
Other versions
DE19506164A1 (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
Application filed by Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to DE19549491A priority Critical patent/DE19549491C2/de
Publication of DE19506164A1 publication Critical patent/DE19506164A1/de
Application granted granted Critical
Publication of DE19506164C2 publication Critical patent/DE19506164C2/de
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
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N11/00Colour television systems
    • H04N11/04Colour television systems using pulse code modulation
    • H04N11/042Codec means
    • 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
    • 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/42Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/46Colour picture communication systems
    • H04N1/64Systems for the transmission or the storage of the colour picture signal; Details therefor, e.g. coding or decoding means therefor
    • H04N1/644Systems for the transmission or the storage of the colour picture signal; Details therefor, e.g. coding or decoding means therefor using a reduced set of representative colours, e.g. each representing a particular range in a colour space
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N11/00Colour television systems
    • H04N11/04Colour television systems using pulse code modulation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Description

Die Erfindung betrifft ein Verfahren zum Komprimieren eingege­ bener Symbole in Codeworte gemäß dem Patentanspruch 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 Stel­ le 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 anneh­ men 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.
Bei vielen Anwendungen wird jeder Pixel-Wert einer ganz be­ stimmten 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 be­ stimmt 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-Ta­ belle. 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.
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 substi­ tuieren. 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än­ dige 24 Bit-Farbbeschreibung der ausgewählten Farben entspre­ chend dem 8 Bit-Index jedes Pixels indem Bild auflistet. Somit kommt es zu einer Platzeinsparung, in dem die ausgewählten Far­ ben nur einmal vollständig beschrieben werden und auf jedes Pi­ xel durch genau einen Index in dem Codebuch Bezug genommen wird.
Eine Bildkompression ist für viele Abbildungsanwendungen wegen der Menge an benötigten Daten wichtig, um ein Bild darzustel­ len. In dem vorstehenden Beispiel werden 24×1024×768 oder 18 874 368 Bits (2 359 296 Bytes) benötigt, um ein einzi­ ges nichtkomprimiertes Bild darzustellen oder es werden 8×1024×768 (6 291 456 Bytes) Bits im Falle eines palet­ tierten Bildes benötigt. Eine Kompression ist noch viel wichti­ ger bei einer Videoaufnahme, welche einen kontinuierlichen Bildstrom mit einer hohen Bildfrequenz, beispielsweise 30 Bil­ der 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 be­ grenzter Bandbreite. Natürlich müssen bei Verwenden von sich bewegenden Bildern die Bilder auch wieder schnell genug dekom­ primiert 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-De­ kompression. 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 gespei­ chert werden und zu einem Zeitpunkt nach der Kompression dekom­ primiert werden.
Ein Maß, wie gut eine Kompression arbeitet, ist das Kompres­ sionsverhältnis. Das Kompressionsverhältnis ist das Verhältnis der Größe der nichtkomprimierten Daten zu den komprimierten Da­ ten. Ein anderes Maß für die Güte einer Kompression besteht darin, wie schnell Daten komprimiert und dekomprimiert werden können. Bei vielen Anwendungen ist die Kompressionsgeschwindig­ keit nicht so wichtig wie die Dekompressionsgeschwindigkeit, da eine Kompression nicht in Echtzeit zu erfolgen braucht.
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üngli­ chen Signals, wie das Vorhandensein einer relativen Kontinuität von Pixel-Farbwerten. Bei palettierten Bildern ist diese Konti­ nuität üblicherweise nicht vorhanden und kann nicht unmittelbar dazu verwendet werden, um das Kompressionsverhältnis zu verbes­ sern.
Bei palettierten Bildern kann der Farbunterschied zwischen zwei Pixel-Werten nicht unbedingt aus den Pixel-Werten hergeleitet werden, da die Pixel-Werte keine 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 eingegebe­ nen Symbolen zu komprimieren, wobei jedes eingegebene Symbol ein Symbol in einem M-Symbole aufweisenden (M-ary) Alphabet ist.
Von Y. Chin, et al. ist in "Lossy Compression of Palettized Ima­ ges", ICASSP-93 Vol. V, S. 325 bis 328, ein Beispiel einer mit Verlust behafteten Kompression von palettierten Bildern be­ schrieben. 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 kom­ primierten Signal komprimiert, welches dekomprimiert werden kann, um das ursprüngliche Signal exakt aus dem komprimierten Signal zurückzugewinnen, so daß folglich keine Verzerrung ein­ gebracht wird.
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.
Die EP 0 574 746 A1 betrifft ein Verfahren zur Echtzeitkompression und zur Echtzeitdekompression von Videosignalen, die zum einen eine Bewegung vermitteln und zum anderen digital sind. Eine Huffman-Tabelle wird dabei verwendet, um die Codierung sowie Decodierung zur realisieren. Eine fixe Tabelle muß hier verwendet werden, so daß dem Sender und dem Empfänger, d. h. dem Codierer und dem Decodierer, jeweils exakt die gleiche Tabelle bekannt sein muß und entsprechend auch verwendet werden muß, um zu einem brauch­ baren Ergebnis zu gelangen.
Es ist demgegenüber die Aufgabe der vorliegenden Erfindung, ein verbessertes Verfahren zum Komprimieren von Daten bzw. Bilddaten in Codeworte zur Verfügung zu stellen.
Dies wird durch ein Verfahren mit den im Patentanspruch 1 aufgeführten Merkmalen erreicht. Zweckmäßige Varianten des erfindungsgemäßen Verfahrens werden durch die Unteransprüche definiert.
In einer bevorzugten Ausführungsform der Erfindung sind einge­ gebene Symbole Symbole in einem M Symbole aufweisenden Alphabet (welches im folgenden der Kürze halber als M-Alphabet bezeich­ net wird) und sie werden basierend auf einem Kontext-Modell der eingegebenen Daten digitalisiert, wobei die Digitalisierung ge­ wählt wird, um eine gute Kompression durch einen binären Coder zu schaffen. Ein Codierer setzt eingegebene Symbole in Codewor­ te um, während ein Decodierer Codeworte in die eingegebenen Symbole umsetzt. Die spezielle Digitalisierung wird aus einer Reindexier-Tabelle festgelegt, welche jedes eingegebene Symbol in einer Anzahl von Binärwerten abbildet. Die Abbildung wird aus den zu komprimierenden Bildern festgelegt und wird übli­ cherweise mit Hilfe der komprimierten Bilder als Overhead über­ tragen.
Eine Methode, um die Abbildung der Reindexier-Tabelle zu erzeu­ gen, besteht 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 ein­ gegebenen Symbole und welche Symbole und Indizes bereits zuge­ ordnet sind. Einem ganz bestimmten, eingegebenen Symbol wird ein Index aus den verbleibenden, nicht zugeordneten Indizes zu­ geordnet, was die minimale, partielle bitweise Entropie schafft, die den bereits zugeordneten Indizes und den eingege­ benen 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 Berech­ nungen.
Die reindexierten, eingegebenen Daten durchlaufen eine Kontext- Modelleinheit, einen Wahrscheinlichkeits-Schätzungsmodul und einem Bit-Generator, dessen Ausgangsdaten die komprimierten Da­ ten sind. Der umgekehrte Prozeß wird angewendet, um die Daten zu dekomprimieren. Erforderlichenfalls wird die Reindexier-Ta­ belle als Overhead von dem Kompressor zu dem Dekompressor durchgegeben. Die Reindexiertabelle ist nicht notwendig, wenn sie vorher festgelegt wird.
Gemäß einem weiteren Gesichtspunkt 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 Ge­ sichtspunkt der Erfindung werden Kompression und Dekompression parallel durchgeführt, und die eingegebenen Werte an dem Kom­ pressor 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 entspre­ chend angeordnet, damit eine Verzögerung groß genug ist, so daß die Kontext-Bits vollständig codiert werden, wenn der Dekom­ pressor 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 Aus­ gangswerte der parallelen Kompressoren über einen einzigen Übertragungskanal, wobei jeweils ein kleiner Overhead benötigt wird, um die Kanäle an den verschiedenen parallelen Dekompres­ soren zu trennen.
In spezifischen Ausführungsformen werden die eingegebenen Sym­ bole aus einem Alphabet von 256 Symbolen ausgewählt; der Rein­ dexier-Prozeß wird durch einen entsprechend programmierten di­ gitalen 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 Wahr­ scheinlichkeitsverteilungen von eingegebenen Symbolen über eine Gruppe von Bildern oder Bildteilen, und eine neue Reindexierta­ belle wird von dem Kompressor an den Dekompressor für jede Gruppe von Bildern oder Bildteilen übertragen.
Nachfolgend wird die Erfindung anhand von bevorzugten Ausfüh­ rungsformen unter Bezugnahme auf die anliegenden Zeichnungen im einzelnen erläutert. Es zeigen:
Fig. 1 ein Blockdiagramm eines Daten-Kompressionssystems mit einem Kompressor und einem Dekompressor;
Fig. 2 ein Blockdiagramm des in Fig. 1 dargestellten Kompres­ sors;
Fig. 3 ein Blockdiagramm des in Fig. 1 dargestellten Dekompres­ sors;
Fig. 4 eine detaillierte Darstellung eines Speichers, in dem eine Kontextfach-Wahrscheinlichkeitstabelle gespeichert ist;
Fig. 5 ein Blockdiagramm eines Daten-Kompressionssystems, das eine Reindexiereinheit zum Reindexieren von M Symbolen entsprechend einer Reindexier-Tabelle aufweist;
Fig. 6 ein Blockdiagramm einer Index-Optimiereinheit, welche eine Reindexiertabelle erzeugt, welche auf dem Datenin­ halt eines zu komprimierenden Datenblocks basiert;
Fig. 7 ein Flußdiagramm eines Prozesses, welcher mittels einer Index-Optimiereinheit durchgeführt ist, um eine geeigne­ te Reindexiertabelle zu bestimmen,
Fig. 8 eine Darstellung von verschiedenen Kontext-Modellen, welche durch die Kontext-Modelleinheiten der Fig. 2 und 3 ausgeführt sind;
Fig. 9 ein Blockdiagramm eines parallelen Kompressionssystems;
Fig. 10 ein Blockdiagramm eines parallelen Kompressionssystems mit einem einzigen Kanal;
Fig. 11 ein Blockdiagramm der Arbeitsweise eines Umordnungspuf­ fers;
Fig. 12 eine logische Darstellung einer Aufzeichnung, welche einen Kontext-Zustand darstellt, und
Fig. 13(a) und 13(b) Zeitgraphen eines Pipeline-Coders, welcher mehr als ein eingegebenes Symbol zu einer bestimmten Zeit verarbeiten kann.
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­ schreibt, wie parallele Kompressoren und Dekompressoren mit dem erfindungsgemäßen Verfahren verbessert arbeiten, 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.
Entropie-Codieren
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.
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 Codewort-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.
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.
Es ist wichtig, daß die Wahrscheinlichkeitsverteilung der Nul­ len 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.
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.
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.
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.
Dekompression
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 rage 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.
Context-Modellieren
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.
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.
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.
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.
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.
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).
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.
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.
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.
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 Er­ findung 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.
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.
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.
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.
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 einge­ gebenen 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.
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).
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.
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.
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.
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 Entscheidungs­ ausgang 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.
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.
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.
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.
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.
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.
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.
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-Module 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.
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-Bit­ strom 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.
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.
Reindexieren
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 ande­ res (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.
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.
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.
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.
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.
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.
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.
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.
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.
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 vor­ kommt. 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 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.
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 entspre­ chend. 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.
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.
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, . . . Si1} 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.
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.
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 X dem Reindex-Wert für Si zu und zeigt die Zuordnung in der Tabelle 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.
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:
H(x) = -x*log2x-(1-x)*log2(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.
Parallel-Verarbeitung
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.
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 über­ lassen 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.
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.
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 Spei­ cher 116.
In Fig. 9 ist ein paralleles Kompressionssystem 400 gemäß der Erfindung mit einem Umordnungspuffer 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.
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.
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 aufheben (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.
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.
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).
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.
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.
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.
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 Pipeline-Verarbeitung zunichte ma­ chen.
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.

Claims (10)

1. Verfahren zum Komprimieren von eingegebenen Symbolen zu Codeworten, wobei jedes eingegebene Symbol aus einem Alphabet von M Symbolen ausgewählt wird, um ein Pixel in einem palettierten Bild darzustellen, wobei die Codeworte in weniger Bits dargestellt werden, und von welchen aus die eingegebenen Symbole decodiert werden können, um eine Übertragung über einen Kanal begrenzter Bandbreite durchzuführen oder um in einem begrenzten Speicher gespeichert zu werden, wobei das Verfahren folgende Schritte aufweist:
  • - Auswählen eines Kontext-Modells;
  • - Lesen eines eingegebenen Stroms von M eingegebenen Symbolen;
  • - Bestimmen einer Verteilung von Kontexten, welche durch das Kontext- Modell angezeigt worden sind über den besagten eingegebenen Strom;
  • - Bestimmen einer Verteilung der M eingegebenen Symbole in den Kontexten über den besagten eingegebenen Strom;
  • - Zuordnen einer ersten Binärfolge zu einem ersten Symbol der M Symbole in dem Alphabet, wobei die Binärfolge K Bits ist, wobei K eine ganze Zahl ist, die größer als oder gleich log2M ist;
  • - Zuordnen von nachfolgenden Binärfolgen zu nachfolgenden Symbolen der M Symbole in dem Alphabet, wobei die nachfolgende Binärfolge die Binärfolge ist, die aus allen nicht-zugeordneten Binärfolgen ausgewählt worden ist, was hinausläuft auf eine minimale partielle bitweise Entropie über ein partielles Alphabet von Symbolen des Alphabets, welche bereits einer Binärfolge und der ausgewählten Binärfolge zugeordnet worden sind, um dadurch eine Re­ indexiertabelle zu bilden, um ein M Symbol in seine zugeordnete binäre Dar­ stellung zu übersetzen;
  • - Wiederholen des Schrittes, Zuordnen von nachfolgenden Binärfolgen, zumindest bis (M-1) Binärfolgen Symbole zugeordnet sind;
  • - Zuordnen einer verbliebenen Binärfolge zu einem verbliebenen Symbol, um die Reindexiertabelle zu vervollständigen;
  • - Binärdarstellen jedes M Eingangssymbols mit Hilfe der Reindexiertabelle, um einen Bitstrom zu bilden,
  • - Entropie-Codieren des Bitstroms, um die Codeworte in einem Kompressor (102) in einem komprimierten Codewort-Strom zu wandeln.
2. Verfahren nach Anspruch 1 mit den folgenden Merkmalen:
  • - Übertragen des komprimierten Codewort-Stroms über den Kanal (104) an einen Dekompressor (106);
  • - Dekomprimieren des komprimierten Codewort-Stroms nach einer Übertra­ gung, um den Bitstrom als einen decodierten bzw. dekomprimierten Bitstrom zurückzugewinnen, wobei der Dekompressor (106) aus den empfangenen Codeworten sowie gegebenenfalls Informationen zur Funktion des Kompres­ sors (102) und/oder der Reindexiertabelle der Dekompression vornimmt, und
  • - Übersetzen des decodierten Bitstroms entsprechend Kontext-Modellen, die aus vorher übersetzten Teilen des decodierten bzw. dekomprimierten Bit­ stroms abgeleitet sind.
3. Verfahren nach einem der Ansprüche 1 oder 2, bei welchem die partielle bitweise Entropie eine Summe von partiellen Bit-Entropien über alle Kontexte und alle K Bit-Positionen der Binärfolgen ist, wobei eine partielle Bit-Entropie eine Entropie eines Verhältnisses einer partiellen bedingten Positions-Wahrscheinlichkeit und einer partiellen bedingten Wahrscheinlichkeit ist.
4. Verfahren nach einem der Ansprüche 2 bis 3, bei welchem der komprimierte Codewort-Strom und die Reindexiertabelle an den Dekompressor (106) übertragen werden.
5. Verfahren nach Anspruch 2, bei welchem der decodierte Bitstrom mit Hilfe der Reindexiertabelle in umgekehrter Richtung deindexiert wird.
6. Verfahren nach einem der Ansprüche 1 bis 5, bei welchem das Kontext- Modell ein Bitpositions-Kontext-Modell ist, wobei ein Kontext eines Bits durch die besagte Bit-Position innerhalb deren binären Darstellung bestimmt wird.
7. Verfahren nach einem der Ansprüche 1 bis 5, bei welchem das Kontext- Modell ein Bitebenen-Kontext-Modell ist, wobei ein Kontext eines Bits durch die Bitposition innerhalb seiner binären Darstellung und durch ein Kontext-Symbol festgelegt ist.
8. Verfahren nach einem der Ansprüche 1 bis 5, bei welchem das Kontext- Modell ein bitweise abhängiges Kontext-Modell ist, wobei ein Kontext eines Bits, wenn überhaupt, durch vorher verarbeitete Bits der besagten binären Bit-Darstellung festgelegt ist.
9. Verfahren nach einem der Ansprüche 1 bis 5, bei welchem das Kontext- Modell ein erstes, bitweise abhängiges Markov-Kontext-Modell ist, wobei ein Kontext eines Bits, wenn überhaupt, durch vorher verarbeitete Bits der besagten Bit- Darstellung und durch ein Kontext-Symbol festgelegt wird.
10. Verfahren nach einem der Ansprüche 1 bis 5, bei welchem das Kontext- Modell ein gemischtes Kontext-Modell ist, wobei ein Kontext eines Bits, wenn überhaupt, durch vorher verarbeitete Bits der besagten, binären Bit-Darstellung und durch Bits einer binären Darstellung eines Kontext-Symbols bestimmt wird.
DE19506164A 1994-02-23 1995-02-22 Verfahren zum Komprimieren eingegebener Symbole in Codeworte Expired - Fee Related DE19506164C2 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE19549491A DE19549491C2 (de) 1994-02-23 1995-02-22 Entropie-Codierer

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
DE19506164A1 DE19506164A1 (de) 1995-08-31
DE19506164C2 true DE19506164C2 (de) 1998-04-16

Family

ID=22740860

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19506164A Expired - Fee Related DE19506164C2 (de) 1994-02-23 1995-02-22 Verfahren zum Komprimieren eingegebener Symbole in Codeworte

Country Status (9)

Country Link
US (1) US5471207A (de)
KR (1) KR100201918B1 (de)
CN (2) CN1044183C (de)
DE (1) DE19506164C2 (de)
FR (1) FR2716587B1 (de)
GB (1) GB2286942B (de)
RU (1) RU2125765C1 (de)
TW (1) TW255999B (de)
WO (1) WO1995023457A1 (de)

Families Citing this family (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6229927B1 (en) * 1994-09-21 2001-05-08 Ricoh Company, Ltd. Reversible embedded wavelet system implementation
US6549666B1 (en) * 1994-09-21 2003-04-15 Ricoh Company, Ltd Reversible embedded wavelet system implementation
US5689589A (en) * 1994-12-01 1997-11-18 Ricoh Company Ltd. Data compression for palettized video images
US5659631A (en) 1995-02-21 1997-08-19 Ricoh Company, Ltd. Data compression for indexed color image data
JP3364074B2 (ja) * 1995-06-05 2003-01-08 株式会社リコー ビットプレーン符号化装置
US5710562A (en) * 1995-08-31 1998-01-20 Ricoh Company Ltd. Method and apparatus for compressing arbitrary data
DE19538310A1 (de) * 1995-10-14 1997-04-17 Sel Alcatel Ag Vorrichtung zum zeitlichen Komprimieren von Signalen
US5708431A (en) * 1995-11-14 1998-01-13 Lucent Technologies Inc. Method for compression coding of potentially unbounded integers
JP2840589B2 (ja) * 1996-02-09 1998-12-24 富士通株式会社 データ圧縮装置及びデータ復元装置
US6037982A (en) * 1996-03-28 2000-03-14 Intel Corporation Multi-pass video compression
US6256652B1 (en) * 1996-04-18 2001-07-03 Jury P. Milto Binary code compression and decompression and parallel compression and decompression processor
US5815097A (en) * 1996-05-23 1998-09-29 Ricoh Co. Ltd. Method and apparatus for spatially embedded coding
US6188795B1 (en) * 1996-06-13 2001-02-13 Dublin City University Data compression
US6028963A (en) * 1996-06-17 2000-02-22 Canon Kabushiki Kaisha Image encoding based on judgement on prediction error
EP1158805B1 (de) * 1996-07-31 2003-10-22 Matsushita Electric Industrial Co., Ltd. Bilddekoder und Verfahren zur Bilddekodierung
US6094453A (en) 1996-10-11 2000-07-25 Digital Accelerator Corporation Digital data compression with quad-tree coding of header file
US5963716A (en) * 1996-12-02 1999-10-05 Hewlett-Packard Company Bi-directional data stream decompression
US5808572A (en) * 1997-05-22 1998-09-15 National Science Council Method and apparatus for finite-length arithmetic coding
US6757436B2 (en) * 1997-06-19 2004-06-29 Electroncs For Imaging, Inc. Methods and apparatus for data compression based on modeling schemes
GB2327003A (en) * 1997-07-04 1999-01-06 Secr Defence Image data encoding system
US5990864A (en) * 1998-01-12 1999-11-23 Autodesk, Inc. Converting color images to an arbitrary palette
GB2333412B (en) * 1998-01-20 2002-05-15 Daewoo Electronics Co Ltd Context-based arithmetic encoding/decoding apparatus
US6038346A (en) * 1998-01-29 2000-03-14 Seiko Espoo Corporation Runs of adaptive pixel patterns (RAPP) for lossless image compression
FR2774542B1 (fr) * 1998-01-30 2001-12-14 Daewoo Electronics Co Ltd Procede et appareil pour le codage/decodage arithmetiques a base du contexte
KR100281321B1 (ko) * 1998-03-26 2001-02-01 전주범 적응적인 산술 부호화 및 그 복호화 방법
US6449394B1 (en) * 1999-07-09 2002-09-10 Sarnoff Corporation Packing variable-length code bits at fixed positions
US6522783B1 (en) * 1999-11-23 2003-02-18 Sharp Laboratories Of America, Inc. Re-indexing for efficient compression of palettized images
US7212677B2 (en) * 2000-01-11 2007-05-01 Minolta Co., Ltd. Coder, coding method, program, and image forming apparatus for improving image data compression ratio
DE10003166A1 (de) * 2000-01-25 2001-07-26 Ingo Krumpholz Waringsche Datenspeicherung
US6492916B1 (en) * 2001-03-30 2002-12-10 Ricoh Co., Ltd. Method and apparatus for generating multiple selectable contexts
US7382878B2 (en) * 2001-06-22 2008-06-03 Uponus Technologies, Llc System and method for data encryption
JP2004534333A (ja) * 2001-07-05 2004-11-11 ヴラディミール ヴラディミロヴィッチ ナシプニ コンピュータネットワークにおける分散データ処理に関する統合された保護方法及びシステム
GB2381606A (en) * 2001-10-31 2003-05-07 Hewlett Packard Co Data compression, storage and analysis
EP1322117A1 (de) * 2001-12-06 2003-06-25 Koninklijke Philips Electronics N.V. Arithmetischer Kodierer und Dekodierer
DE10204617B4 (de) * 2002-02-05 2005-02-03 Siemens Ag Verfahren und Vorrichtungen zur Kompression und Dekompression eines Videodatenstroms
US6717927B2 (en) 2002-04-05 2004-04-06 Interdigital Technology Corporation System for efficient recovery of node B buffered data following serving high speed downlink shared channel cell change
ES2552696T3 (es) * 2002-04-23 2015-12-01 Ntt Docomo, Inc. Sistema y método para codificación y decodificación aritmética
US9577667B2 (en) 2002-04-23 2017-02-21 Ntt Docomo, Inc. System and method for arithmetic encoding and decoding
JP2003319391A (ja) * 2002-04-26 2003-11-07 Sony Corp 符号化装置および方法、復号装置および方法、記録媒体、並びにプログラム
JP3961870B2 (ja) * 2002-04-30 2007-08-22 株式会社リコー 画像処理方法、画像処理装置、及び画像処理プログラム
US6744387B2 (en) * 2002-07-10 2004-06-01 Lsi Logic Corporation Method and system for symbol binarization
US7706405B2 (en) 2002-09-12 2010-04-27 Interdigital Technology Corporation System for efficient recovery of Node-B buffered data following MAC layer reset
US6850175B1 (en) * 2003-09-18 2005-02-01 Ntt Docomo, Inc. Method and apparatus for arithmetic coding
US6906647B2 (en) 2002-09-20 2005-06-14 Ntt Docomo, Inc. Method and apparatus for arithmetic coding, including probability estimation state table creation
US20040101205A1 (en) * 2002-11-27 2004-05-27 General Electric Company Position coding system and method
US6900748B2 (en) * 2003-07-17 2005-05-31 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Method and apparatus for binarization and arithmetic coding of a data value
US7379608B2 (en) * 2003-12-04 2008-05-27 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung, E.V. Arithmetic coding for transforming video and picture data units
US7599435B2 (en) 2004-01-30 2009-10-06 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Video frame encoding and decoding
US7586924B2 (en) 2004-02-27 2009-09-08 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Apparatus and method for coding an information signal into a data stream, converting the data stream and decoding the data stream
KR100609697B1 (ko) * 2004-06-02 2006-08-08 한국전자통신연구원 이득 고정형 광증폭기를 이용한 광 선로 감시 시스템
US7053803B1 (en) * 2005-01-31 2006-05-30 Hewlett Packard Development Company, L.P. Data compression
CN101444057B (zh) * 2006-03-17 2013-04-24 北电网络有限公司 发射和接收mimo信号的系统和方法
JP4769305B2 (ja) * 2006-11-14 2011-09-07 日本電信電話株式会社 画像信号符号化方法及び復号方法、情報源符号化及び復号方法、それらの装置、及びそれらのプログラム並びにプログラムを記録した記憶媒体
EP2096439A4 (de) * 2006-12-21 2011-01-05 Ajinomoto Kk Verfahren zur beurteilung von kolorektalkarzinom, kolorektalkarzinom-beurteilungsvorrichtung, -verfahren, -system, -programm und aufzeichnungsmedium
US9467699B2 (en) * 2008-12-03 2016-10-11 Hfi Innovation Inc. Method for performing parallel coding with ordered entropy slices, and associated apparatus
AU2009343438A1 (en) * 2009-04-03 2011-10-20 I-CES (Innovative Compression Engineering Solutions) Method for processing a digital file notably of the image, video and/or audio type
WO2011129774A1 (en) * 2010-04-15 2011-10-20 Agency For Science, Technology And Research Probability table generator, encoder and decoder
CN102845065A (zh) * 2010-04-19 2012-12-26 捷讯研究有限公司 用于重排并行熵编码和解码的方法和设备
WO2012006738A1 (en) * 2010-07-13 2012-01-19 Research In Motion Limited Methods and devices for data compression using context-based coding order
KR101726274B1 (ko) * 2011-02-21 2017-04-18 한국전자통신연구원 병렬 엔트로피 부호화/복호화 방법 및 장치
JP5410638B2 (ja) 2011-03-10 2014-02-05 日本電信電話株式会社 量子化制御装置及び方法、及び量子化制御プログラム
RU2452026C1 (ru) * 2011-06-14 2012-05-27 Борис Иванович Волков Способ оцифровывания изображения и устройство его осуществления
US8754791B1 (en) * 2013-03-01 2014-06-17 Gurulogic Microsystems Oy Entropy modifier and method
US8933826B2 (en) 2013-03-01 2015-01-13 Gurulogic Microsystems Oy Encoder apparatus, decoder apparatus and method
GB2526337A (en) * 2014-05-21 2015-11-25 Canon Kk Method and apparatus for syntax element encoding in video coding and decoding
US9877029B2 (en) 2014-10-07 2018-01-23 Qualcomm Incorporated Palette index binarization for palette-based video coding
US10448058B2 (en) * 2015-05-21 2019-10-15 Qualcomm Incorporated Grouping palette index at the end and index coding using palette size and run value
US9673836B1 (en) * 2016-09-23 2017-06-06 International Business Machines Corporation System level testing of entropy encoding
US10687062B1 (en) * 2019-02-22 2020-06-16 Google Llc Compression across multiple images
CN111049527B (zh) * 2019-12-23 2023-03-17 云南大学 一种图像编码解码方法
US11728826B2 (en) 2021-05-24 2023-08-15 Google Llc Compression and decompression in hardware for data processing

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0562672A2 (de) * 1992-03-22 1993-09-29 Igp, Research And Development Ltd. Bilddarstellungsverfahren durch Datenkompression
EP0574746A1 (de) * 1992-06-19 1993-12-22 Intel Corporation Verfahren und Vorrichtung zur Echtzeitkompression und -dekompression eines digitalen bewegten Videosignals mit unveränderlicher Huffman-Tabelle

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0079442B1 (de) * 1981-11-09 1988-07-27 International Business Machines Corporation Datenübersetzungsgerät zur Übersetzung zwischen rohen und kompressionskodierten Datenformen
US4870695A (en) * 1987-03-20 1989-09-26 International Business Machines Corporation Compression and de-compression of column-interlaced, row-interlaced graylevel digital images
US5095374A (en) * 1989-10-10 1992-03-10 Unisys Corporation Method and apparatus for lossless compression and decompression of image data
US4973961A (en) * 1990-02-12 1990-11-27 At&T Bell Laboratories Method and apparatus for carry-over control in arithmetic entropy coding
US5349348A (en) * 1991-08-15 1994-09-20 International Business Machines Corporation Multi-mode data stream generator
JP3108479B2 (ja) * 1991-08-28 2000-11-13 株式会社リコー 符号化復号化方法およびその装置
US5272478A (en) * 1992-08-17 1993-12-21 Ricoh Corporation Method and apparatus for entropy coding
US5583500A (en) * 1993-02-10 1996-12-10 Ricoh Corporation Method and apparatus for parallel encoding and decoding of data
US5381145A (en) * 1993-02-10 1995-01-10 Ricoh Corporation Method and apparatus for parallel decoding and encoding of data

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0562672A2 (de) * 1992-03-22 1993-09-29 Igp, Research And Development Ltd. Bilddarstellungsverfahren durch Datenkompression
EP0574746A1 (de) * 1992-06-19 1993-12-22 Intel Corporation Verfahren und Vorrichtung zur Echtzeitkompression und -dekompression eines digitalen bewegten Videosignals mit unveränderlicher Huffman-Tabelle

Also Published As

Publication number Publication date
FR2716587B1 (fr) 1998-12-18
TW255999B (de) 1995-09-01
GB9503417D0 (en) 1995-04-12
FR2716587A1 (fr) 1995-08-25
CN1139188C (zh) 2004-02-18
CN1223502A (zh) 1999-07-21
GB2286942B (en) 1998-07-15
CN1044183C (zh) 1999-07-14
KR950026293A (ko) 1995-09-18
GB2286942A (en) 1995-08-30
WO1995023457A1 (en) 1995-08-31
DE19506164A1 (de) 1995-08-31
CN1117222A (zh) 1996-02-21
RU2125765C1 (ru) 1999-01-27
US5471207A (en) 1995-11-28
KR100201918B1 (ko) 1999-06-15
RU95102477A (ru) 1996-12-27

Similar Documents

Publication Publication Date Title
DE19506164C2 (de) Verfahren zum Komprimieren eingegebener Symbole in Codeworte
DE69624276T2 (de) System und Verfahren zur variablen Längenkodierung von sich bewegenden Bildern
DE3789857T2 (de) System zur Komprimierung von Bildern mit mehreren Graustufen.
EP1467491B1 (de) Arithmetische Codierung von Transformationskoeffizienten
DE69313540T2 (de) Verbesserte Vorrichtung zur variablen Längendekodierung
DE69328855T2 (de) Datenkomprimierung/ -dekomprimierung mit Cache-Speichern
DE19635251C2 (de) Verfahren und Apparat zur Komprimierung beliebiger Daten
DE4314741C2 (de) Dekodierer für Einheiten von Huffman-kodierten Daten
DE69227533T2 (de) Bildverarbeitungsverfahren und -gerät
DE69425847T2 (de) Rechner für die inverse diskrete Cosinus-Transformation
DE2550928C2 (de) Einrichtung zur Komprimierung einer m·n-Matrix deltacodierter Punkte
DE3109795A1 (de) Bandeinengungsverfahren fuer getoente bilder
DE69516734T2 (de) Bildverarbeitungsverfahren und -gerät
EP2489187B1 (de) Verfahren zur codierung von symbolen aus einer folge digitalisierter bilder
DE69527883T2 (de) Decodierung eines Huffman Codes mit MSB und LSB Tabellen
DE69026320T2 (de) Halbtonbilddatenkomprimierungsverfahren und -vorrichtung
EP2068448B1 (de) Verfahren und Anordnung zur arithmetischen Enkodierung und Dekodierung mit Verwendung mehrerer Tabellen
DE2640414A1 (de) Schaltungsanordnung fuer die kompressionscodierung unter verwendung einer korrelation zwischen zweidimensionalen, aus zweiwertigen digitalen bildern abgeleiteten matrizen
DE19544761A1 (de) Verfahren zum Komprimieren eines eingegebenen Symbols
DE19534730A1 (de) Verfahren zum Codieren und Decodieren von Daten
DE102007020292A1 (de) Verfahren zur Komprimierung von Daten unter Verwendung einer Lauflängen-Kodierung insbesondere für medizinische Bilddaten
DE69735835T2 (de) Dekodierer variabler Länge und Verfahren zur Dekodierung zweier Kodewörter pro Takt
DE2340230A1 (de) Verfahren und vorrichtung zur vorhersage des signalpegelwertes eines nachrichtenelementes
EP3624456A1 (de) Verfahren zur kompression und dekompression von bilddaten
DE60012717T2 (de) Bildcodierung unter verwendung einer umordnung von wavelet-koeffizienten

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8172 Supplementary division/partition in:

Ref country code: DE

Ref document number: 19549491

Format of ref document f/p: P

Q171 Divided out to:

Ref country code: DE

Ref document number: 19549491

AH Division in

Ref country code: DE

Ref document number: 19549491

Format of ref document f/p: P

D2 Grant after examination
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee