DE19506164C2 - Verfahren zum Komprimieren eingegebener Symbole in Codeworte - Google Patents
Verfahren zum Komprimieren eingegebener Symbole in CodeworteInfo
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods 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/91—Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N11/00—Colour television systems
- H04N11/04—Colour television systems using pulse code modulation
- H04N11/042—Codec means
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/4006—Conversion to or from arithmetic code
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/42—Conversion 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N1/00—Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
- H04N1/46—Colour picture communication systems
- H04N1/64—Systems for the transmission or the storage of the colour picture signal; Details therefor, e.g. coding or decoding means therefor
- H04N1/644—Systems 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N11/00—Colour television systems
- H04N11/04—Colour television systems using pulse code modulation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods 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/436—Methods 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-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.
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.
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.
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.
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.
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)
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)
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)
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 |
-
1994
- 1994-02-23 US US08/200,233 patent/US5471207A/en not_active Expired - Lifetime
-
1995
- 1995-02-14 TW TW084101311A patent/TW255999B/zh active
- 1995-02-21 GB GB9503417A patent/GB2286942B/en not_active Expired - Fee Related
- 1995-02-22 DE DE19506164A patent/DE19506164C2/de not_active Expired - Fee Related
- 1995-02-22 RU RU95102477A patent/RU2125765C1/ru not_active IP Right Cessation
- 1995-02-22 CN CN95102737A patent/CN1044183C/zh not_active Expired - Fee Related
- 1995-02-23 FR FR9502105A patent/FR2716587B1/fr not_active Expired - Fee Related
- 1995-02-23 KR KR1019950003580A patent/KR100201918B1/ko not_active IP Right Cessation
- 1995-02-23 WO PCT/US1995/002354 patent/WO1995023457A1/en active Application Filing
-
1998
- 1998-07-07 CN CNB981156827A patent/CN1139188C/zh not_active Expired - Fee Related
Patent Citations (2)
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 |