-
HINTERGRUND DER ERFINDUNG
-
(1) Gebiet der Erfindung
-
sDie
vorliegende Erfindung betrifft ein Datenkomprimierungsverfahren
und ein Datendekomprimierungsverfahren und eine Datenkomprimierungsvorrichtung
und eine Datendekomprimierungsvorrichtung dafür.
-
(2) Beschreibung der verwandten
Technik
-
Moderne
Computer tendieren dazu, verschiedene Typen von Daten wie zum Beispiel
Graphikzeichencodes, Vektorinformationen, Bilder, etc., zu verarbeiten,
und das Volumen der in dem Computer verarbeiteten Daten nimmt rapide
zu. Wenn ein großes
Datenvolumen verarbeitet wird, werden redundante Abschnitte der
Daten weggelassen, um das Volumen von Daten zu komprimieren, um
dadurch eine erforderliche Speicherkapazität zu verringern oder die Daten
schneller zu übertragen.
Eine Universalcodierung wird als Verfahren vorgeschlagen, wodurch
verschiedene Daten auf eine Weise komprimiert werden können.
-
Übrigens
ist diese Erfindung auf verschiedene Daten anwendbar und nicht auf
ein Gebiet der Zeichencodekomprimierung begrenzt. In dieser Beschreibung
wird eine Worteinheit als Zeichen bezeichnet, und Daten, die aus
einer willkürlichen
Anzahl von Wörtern
gebildet sind, werden als Zeichenkette bezeichnet.
-
Es
gibt eine Wörterbuchcodierung,
die die Analogie von Datenfolgen nutzt, und eine statistische Codierung,
die die Häufigkeit
des Auftretens einer Datenkette nutzt. Die obenerwähnte Universalcodierung
ist ein Verfahren, das für
die statistische Codierung repräsentativ
ist.
-
Eine
repräsentative
Art der Universalcodierung ist auch eine arithmetische Codierung.
Die arithmetische Codierung dient dazu, einen Code zu erzeugen,
der an eine Auftrittswahrscheinlichkeit von jedem Zeichen anpaßbar ist,
ohne eine Codetabelle zu verwenden, und es wird angenommen, daß durch sie
eine Komprimierung mit maximaler Effektivität möglich ist, falls eine Auftrittswahrscheinlichkeit
von jedem Zeichen der Informationsquelle bekannt ist. Die arithmetische
Codierung wird klassifiziert in eine binäre arithmetische Codierung
und eine mehrwertige arithmetische Codierung mit mehr als einem
Binärwert.
-
Im
folgenden wird die mehrwertige arithmetische Codierung beschrieben.
-
Bei
der mehrwertigen arithmetischen Codierung wird zunächst eine
Zahlenreihe von 0 ≤ P < 1 (im folgenden
beschrieben als [0, 1]) durch die Anzahl von Ereignissen von erschienenen
Zeichen (im folgenden als Symbol bezeichnet) geteilt.
-
Eine
Breite von jeder Sektion wird proportional zu einem Verhältnis einer
Auftrittswahrscheinlichkeit von jedem Symbol bestimmt, und die Sektionen werden
in der Reihenfolge der hohen Auftrittswahrscheinlichkeit angeordnet.
-
Als
nächstes
wird eine Sektion selektiert, die einem auftretenden Symbol entspricht,
wird die selektierte Sektion in Sektionen geteilt, die der Anzahl von
allen Symbolen entsprechen, wenn das nächste Symbol auftritt, und
wird eine Sektion selektiert, die dem nächsten Symbol entspricht, so
daß die
selektierte Sektion rekursiv geteilt wird.
-
Der
obige Prozeß wird
unter Bezugnahme auf Darstellungen, die ein Prinzip der mehrwertigen arithmetischen
Codierung zeigen, in 70(a) und 70(b) eingehender beschrieben.
-
70(a) zeigt ein Beispiel für Auftrittshäufigkeiten
von Symbolen, während 70(b) ein Beispiel für das Teilen der Sektion eines
Symbols zeigt.
-
Als
Beispiel wird eine Sektion einer Graphikzeichenkette "abe" beim Teilen erhalten.
-
Jetzt
wird eine Zahlenreihe (0, 1) in fünf Sektionen von Zeichen a,
b, c, d und e geteilt, wie in 70(a) gezeigt.
-
Zuerst
wird eine Sektion (0, 0,2) eines Symbols "a" selektiert,
das zuerst auftritt. Dann wird die selektierte Sektion (0, 0,2)
weiter in fünf
Sektionen von allen Symbolen "a" bis "e" geteilt.
-
Eine
Sektion (0,04, 0,06) des Symbols "b" wird
selektiert, das als zweites auftritt, und dann in fünf Sektionen
von allen Symbolen "a" bis "e" geteilt. Eine Sektion des Symbols "e", das zuletzt auftritt, wird selektiert,
so daß schließlich eine
Sektion [0,05, 0,06) einer Zeichenkette "a b e" erhalten wird.
-
Indem
der obige Prozeß an
allen Eingangsdaten so wie oben erläutert wiederholt wird, ist
es möglich,
eine Sektion einer Zeichenkette zu bestimmen, die zu codieren ist.
Ein beliebiger Punkt in der Sektion der Zeichenkette, die schließlich bestimmt wird,
wird in binärer
Schreibweise dargestellt und dann als komprimierter Code ausgegeben.
-
Der
Ausdruck "arithmetische
Codierung" stammt
daher, daß ein
Codewort in einem binären Zahlenwert
nach dem Dezimalkomma in Form von [0,11011..] ausgedrückt wird,
der bei der Berechnung erhalten werden kann.
-
Als
Verfahren zum Teilen einer Sektion gemäß einer Auftrittshäufigkeit,
wie oben erwähnt,
gibt es eine statische Codierung, bei der eine Sektion gemäß einer
vorbestimmten Auftrittshäufigkeit
geteilt wird, die nicht von einer tatsächlichen Auftrittshäufigkeit
einer Zeichenkette abhängt,
eine semi-adaptive Codierung, bei der eine Sektion gemäß einer
Auftrittshäufigkeit
geteilt wird, die erhalten wird, indem im voraus alle Zeichenketten
gescant werden, und eine adaptive Codierung, bei der eine Häufigkeit
immer dann berechnet wird, wenn ein Zeichen auftritt, um die Sektion
für jedes
Zeichen zurückzusetzen.
-
Indessen
ist ein Verfahren zum Komprimieren von Daten in eine Bit-(Zeichen)-Einheit
unter Verwendung der obigen mehrwertigen arithmetischen Codierung
zur Dateikomprimierung zum Beispiel in den folgenden zwei Dokumenten
(1) und (2) beschrieben.
- (1) "Arithmetic Coding for Data Compression", Commun. of ACM,
Bd. 30, Nr. 6, S. 520–540
(1986);
- (2) "An Adaptive
Dependency Source Model for Data Compression Scheme", Commun. of ACM,
Bd. 32, Nr. 1, S. 77–83.
-
Das
Dokument (1) vermittelt einen tatsächlichen Algorithmus der mehrwertigen
arithmetischen Codierung. Die mehrwertige Codierung in dem Dokument
(1) ist eines der Verfahren, das als Entropiecodierung bezeichnet
wird, wobei Daten durch eine einzelne Zeicheneinheit codiert und
komprimiert werden. Bei der Entropiecodierung wird eine Auftrittswahrscheinlichkeit
eines fokussierten Zeichens bei der mehrwertigen Codierung codiert,
und die Auftrittswahrscheinlichkeit von jedem Zeichen wird immer
dann, wenn ein Zeichen auftritt, sequentiell aktualisiert, so daß durch
die Entropiecodierung verschiedene Daten dynamisch und adaptiv codiert
werden können.
Ein detaillierter Prozeß der
mehrwertigen Codierung ist in einem Flußdiagramm von 71(a) gezeigt.
-
Das
Dokument (2) vermittelt ein Verfahren zum Ausdrücken eines fokussierten Zeichens
mit einer bedingten Wahrscheinlichkeit unter Verwendung eines unmittelbar
vorhergehenden Zeichens, wobei die bedingte Wahrscheinlichkeit bei
der mehrwertigen Codierung codiert wird, um eine hohe Komprimierungsrate
zu erhalten. Bei dem Verfahren von dem Dokument (2) wird jede bedingte
Wahrscheinlichkeit sequentiell aktualisiert, um verschiedene Daten
dynamisch und adap tiv codieren zu können. Bei solch einer mehrwertigen
Codierung wird der Prozeß ausgeführt, der
in dem Flußdiagramm
von 70(b) gezeigt ist.
-
Anstelle
der mehrwertigen Codierung wird eine dynamische Huffman-Codierung
vorgeschlagen, die eine Abwandlung der Huffman-Codierung ist (siehe "Variations on a Theme
by Huffman", IEEE Trans.
Inform. Theory, Bd. 24, Nr. 6, 1978, oder "Design and Analysis of Dynamic Huffman
Codes", Journal
of ACM, Bd. 34, Nr. 4, 1987). Die dynamische Huffman-Codierung hat
eine Codiereffektivität,
die der mehrwertigen Codierung unterlegen ist, die eine längere Verarbeitungszeit
erfordert. Deshalb wird ein Verfahren zum Codieren einer bedingten
Wahrscheinlichkeit durch die dynamische Huffman-Codierung nicht tatsächlich angewendet.
-
72 zeigt ein Beispiel für einen Algorithmus der mehrwertigen
arithmetischen Codierung und Decodierung.
-
Im
Unterschied zu der arithmetischen Codierung gibt es eine sogenannte
Splay-Tree- oder Spreizbaum-Codierung (siehe z. B. "Application of Splay
Tree to Data Compression" von
Douglas W. Jones, Commun. of ACM, Bd. 31, Nr. 8, S. 996–1007).
-
Bei
der Splay-Codierung wird eine Codetabelle in Baumstruktur verwendet
(im folgenden als Codebaum bezeichnet), wie in 73(a) gezeigt, wobei ein Symbol an einem Ende
des Codebaums (im allgemeinen als Blatt bezeichnet) eingetragen wird
und ein Abstand von einem oberen Ende des Codebaums (im allgemeinen
als Wurzel bezeichnet) bis zu einem Blatt, wo Eingangsdaten gespeichert sind,
als Codewort ausgegeben wird.
-
Genauer
gesagt, wenn angenommen wird, daß der Weg von der Wurzel zu
dem Blatt des Codebaums verläuft,
wird "1" dem Codewort zugeordnet, wenn
sich der Weg nach rechts ver zweigt, und wird "0" zugeordnet,
wenn sich der Weg nach links verzweigt.
-
Bei
dem in 73(a) gezeigten Beispiel lautet
der Code eines Symbols A [10110] und eines Symbols B [001].
-
Falls
die Codelänge
verändert
wird (das heißt,
falls der Code aktualisiert wird), wird ein codiertes Blatt gegen
ein anderes Blatt oder einen Kontakt an dem Codebaum (als Knoten
bezeichnet) ausgetauscht.
-
73(b) zeigt ein Beispiel für die obenerwähnte Codeaktualisierung.
Als Eingangsdaten werden, wie in 73(b) gezeigt,
anfangs die Symbole A, B, C und D in Blättern des Codebaums gespeichert.
-
Ein
Knoten des Symbols A und ein Knoten des Symbols C werden ausgetauscht,
und ein Knoten D höheren
Grades des Symbols A und ein Knoten eines Symbols E werden ausgetauscht,
wie in 73(c) gezeigt. Als Resultat
lautet der Code des Symbols A [110] ausgehend von [10110], so daß der Code
aktualisiert wurde.
-
Der
obige Fall dient zum dynamischen Codieren einer Auftrittswahrscheinlichkeit
von jedem Wort bei einer Codierung mit variabler Länge. Um eine
Komprimierungsrate weiter zu erhöhen,
wird eine bedingte Auftrittswahrscheinlichkeit, die eine Abhängigkeitsbeziehung
zwischen einem Eingangssignal und dem unmittelbar vorausgehenden
Zeichen einführte,
bei einer dynamischen Codierung mit variabler Länge codiert.
-
Dieses
Verfahren ist eine statistische Codierung unter Verwendung einer
statistischen Charakteristik von Daten. Diese Codierung wird bei
einem Prozeß ausgeführt, wie
in 74 gezeigt, der aus zwei Stufen gebildet ist,
das heißt,
aus einem Kontextsammelschritt 511 und einem Schritt zum
dynamischen Codieren mit variabler Länge 512, wie in 74 gezeigt.
-
Ein
Kontext in vorderer und hinterer Beziehung zu einer Zeichenkette
wird aus Eingangsdaten bei einem Kontextsammelschritt gesammelt,
eine Baumstruktur eines Kontextes wird erzeugt, wie in 75(b) gezeigt, und sie wird bei einer dynamischen
Codierung mit variabler Länge
codiert, um eine bedingte Wahrscheinlichkeit zu bestimmen.
-
Die
obige bedingte Wahrscheinlichkeit wird bestimmt, indem die Anzahl
des Auftretens immer dann gezählt
wird, wenn eine Zeichenkette ein Zeichen in jedem Knoten in einem
Kontextbaum in einer in 75(b) gezeigten
Baumstruktur überkreuzt.
-
Ein
Kontextsammelverfahren zum Bestimmen einer bedingten Wahrscheinlichkeit
wird hauptsächlich
in die folgenden zwei Verfahren klassifiziert. Übrigens wird die Zeichenanzahl
einer Bedingung (eines Kontextes) im folgenden als Grad bezeichnet (siehe "Data Compression
Using Adaptive Coding and Partial String Matching", JOHN G. CLEARY
et al., IEEE, Bd. COM-32, Nr. 4, APRIL 1984, S. 396–402).
-
(1) Festgrad-Kontextsammelverfahren
-
Dieses
Verfahren drückt
eine Bedingung einer bedingten Wahrscheinlichkeit mit einer feststehenden
Zeichenanzahl aus.
-
Zum
Beispiel wird bei einem Kontext des Grades 2 ein Kontext eines Zeichens,
das zwei unmittelbar vorausgehenden Zeichen folgt, gesammelt, um
eine bedingte Wahrscheinlichkeit p(y|x1,
x2) zu codieren, wobei y ein fokussiertes
Zeichen ist, das zu codieren ist, und x1 und
x2 das erste Zeichen bzw. das zweite Zeichen
ist, denen das fokussierte Zeichen folgt.
-
(2) Mischkontextsammelverfahren
-
Falls
bei dem obigen Festgrad-Kontextsammelverfahren die unmittelbar vorausgehende
bedingte Zeichenkette selten auftritt, tendiert eine Einschätzung einer
bedingten Wahr scheinlichkeit dazu, ungenau zu sein. Falls im Gegensatz
dazu die unmittelbar vorausgehende bedingte Zeichenkette häufig auftritt, tendiert
eine Einschätzung
der bedingten Wahrscheinlichkeit dazu, genau zu sein, wobei noch
die Möglichkeit
besteht, den Grad zu erhöhen.
-
Im
allgemeinen können
Daten, die eine stärkere
Korrelation zwischen Zeichen erreichen, wenn der verwendete Grad
weiter erhöht
wird, eine hohe Komprimierungsrate vorsehen. Daten, die eine schwächere Korrelation
zwischen Zeichen erreichen, wenn der verwendete Grad weiter erhöht wird,
sehen jedoch eine schwache Komprimierungsrate vor.
-
Eine
Lösung
für das
obige Problem kann die sein, den Kontert zu mischen (Mischen des
Grades). Bei diesem Verfahren steht der Grad der unmittelbar vorausgehenden
Zeichenkette nicht fest. Der Grad wird erhöht, falls das Auftreten gehäuft ist,
und falls das Auftreten selten ist, wird der Grad mit der niedrigeren
Zahl beibehalten. Dabei wird der Grad für Eingangsdaten adaptiv erhöht.
-
Bei
der statistischen Codierung, bei der eine arithmetische Codierung
für einen
dynamischen Code mit variabler Länge
verwendet wird, muß jedoch
eine akkumulierte Häufigkeit
von allen Daten, die eingegeben worden sind, immer dann, wenn Daten
eingegeben werden, noch einmal berechnet und eine Zahlenreihe von
[0, 1) noch einmal geteilt werden. Dadurch ist ein arithmetischer
Prozeß mit
einem enormen Volumen erforderlich, so daß es unmöglich ist, die Verarbeitungsrate
zu erhöhen.
-
ZUSAMMENFASSUNG DER ERFINDUNG
-
Die
Ziele dieser Erfindung sind das Vorsehen eines Datenkomprimierungsverfahrens
und eines Datendekomprimierungsverfahrens sowie einer Datenkomprimierungsvorrichtung
und einer Datendekomprimierungsvorrichtung dafür, wodurch ein Codeeintragprozeß mit hoher
Geschwindigkeit ermöglicht wird,
indem neue Daten in einen Codebaum eingetragen werden, während der
Codebaum umgeordnet wird, statt ein Berechnen von Sektionen bei
einer arithmetischen Codierung zu vollziehen.
-
Diese
Ziele sind durch die Merkmale der unabhängigen Ansprüche erreicht
worden.
-
Gemäß der vorliegenden
Erfindung umfaßt ein
Datenkomprimierungsverfahren zum Komprimieren von Eingangsdaten
durch das Codieren der Eingangsdaten gemäß einem Verlauf des Auftretens
der Eingangsdaten in der Vergangenheit das Ausführen eines Kontextsammelschrittes
zum Sammeln von Zeichenketten der Eingangsdaten und das Ausführen eines
Codierschrittes zum Erzeugen und Aktualisieren eines Codebaums,
während
der Codebaum gemäß den Zeichenketten
der Eingangsdaten umgeordnet wird, die bei dem Kontextsammelschritt
erhalten wurden.
-
Ein
Datenkomprimierungsverfahren zum Komprimieren von Eingangsdaten
durch das Codieren der Eingangsdaten gemäß einem Verlauf des Auftretens
der Eingangsdaten in der Vergangenheit umfaßt das Sammeln der Zeichenketten
der Eingangsdaten, deren Benummerung und deren Eintragung in ein
Wörterbuch,
das Zuteilen eines Codes zu einer jeden der Zeichenketten, das Codieren
und das Aktualisieren des Codes entsprechend einer Wörterbuchnummer
einer längsten
koinzidierenden Zeichenkette, das Eintragen einer verlängerten
Zeichenkette der genannten Zeichenkette, die zu codieren ist, bis
die verlängerte
Zeichenkette eine vorbestimmte maximale Zeichenkettenlänge erreicht,
das Eintragen eines Codes entsprechend der verlängerten Zeichenkette.
-
Ein
Datendekomprimierungsverfahren zum Dekomprimieren von codierten
Daten, die durch das Codieren von Eingangsdaten gemäß einem
Verlauf der Eingangsdaten in der Vergan genheit erhalten wurden,
umfaßt
das Ausführen
eines Kontextsammelschrittes zum Sammeln von Zeichenketten von decodierten
Daten, das Ausführen
eines Codierschrittes zum Erzeugen und Aktualisieren eines Codebaums,
während
der Codebaum gemäß den Zeichenketten
der decodierten Daten, die bei dem Kontextsammelschritt erhalten
wurden, umgeordnet wird.
-
Ein
Datendekomprimierungsverfahren zum Dekomprimieren von codierten
Daten, die durch das Codieren von Eingangsdaten gemäß einem
Verlauf der Eingangsdaten in der Vergangenheit erhalten wurden,
umfaßt
das Sammeln von Zeichenketten von decodierten Daten, deren Benummerung
und deren Eintragung in ein Wörterbuch
sowie das Zuteilen eines Codes zu einer jeden der Zeichenketten
der decodierten Daten, das Decodieren einer Zeichenkette entsprechend
einer Wörterbuchnummer
als Code und das Aktualisieren dessen, das Eintragen einer verlängerten
Zeichenkette der codierten Zeichenkette, bis die verlängerte Zeichenkette
eine vorbestimmte maximale Zeichenkettenlänge erreicht, das Eintragen
eines Codes entsprechend der verlängerten Zeichenkette.
-
Ein
Datenkomprimierungsverfahren zum Komprimieren von Eingangsdaten
durch das Codieren der Eingangsdaten gemäß einem Verlauf des Auftretens
der Eingangsdaten in der Vergangenheit umfaßt das Ausführen eines Kontextsammelschrittes zum
Halten einer Kombination aus Eingangsdaten und einem Kontext, der
aus n kontinuierlichen Daten gebildet ist, denen die genannten Eingangsdaten
folgen, das Ausführen
eines Codebaumhalteschrittes zum Halten von Codebäumen, die
für jeden
genannten Kontext jeweils unabhängig
sind, das Ausführen eines
Codeausgabeschrittes zum Ausgeben eines Codes, der als einzigartige
Daten definiert ist, gemäß einer
Gabelung von Knoten, die ein Gabelungspunkt auf einem Weg von einer
Wurzel, die ein oberes Ende des Codebaums bezeichnet, zu einem Blatt
ist, in dem die Daten gespeichert sind, falls Daten entsprechend
dem bei dem Kontextsammelschritt gehaltenen Kontext auftreten, das
Ausführen
eines Codebaum-Umordnungsschrittes
zum Austauschen eines Blattes mit den Daten gegen ein Blatt mit
anderen Daten oder einen internen Knoten nach einem Prozeß bei dem
Codeausgabeschritt.
-
Ein
Datenkomprimierungsverfahren zum Komprimieren von Eingangsdaten
durch das Codieren der Eingangsdaten gemäß einem Verlauf des Auftretens
der Eingangsdaten in der Vergangenheit umfaßt das Ausführen eines Kontextsammelschrittes zum
Halten einer Kombination aus Eingangsdaten und einem Kontext, der
aus n kontinuierlichen Daten gebildet ist, denen die Eingangsdaten
folgen, das Ausführen
eines Codebaumhalteschrittes zum Halten von Codebäumen, die
für jeden
genannten Kontext jeweils unabhängig
sind, das Ausführen
eines Codeausgabeschrittes zum Ausgeben eines Codes, der als einzigartige
Daten definiert ist, gemäß einer Gabelung
eines Knotens, der ein Gabelungspunkt auf einem Weg von einer Wurzel,
die ein oberes Endes des Codebaums bezeichnet, zu einem Blatt an dem
Codebaum ist, in dem die Daten gespeichert sind, falls Daten entsprechend
dem bei dem Kontextsammelschritt gehaltenen Kontext auftreten, das Ausführen eines
Codebaum-Umordnungsschrittes zum Austauschen eines Blattes mit den
Daten gegen ein Blatt mit anderen Daten oder einen internen Knoten
nach einem Prozeß bei
dem Codeausgabeschritt, das Ausführen
eines Kontextunterscheidungsschrittes zum Unterscheiden, ob die
Kombination aus den Eingangsdaten und dem Kontext bei dem Kontextsammelschritt
gehalten wurde, das Ausführen
eines Escape-Code-Halteschrittes, um im voraus an dem Codebaum ein
Blatt zu halten, in dem ein Escape-Code nicht gespeichert ist, der
als Daten definiert ist, die jene Daten angeben, falls die Kombination aus
den Eingangsdaten und dem Kontext bei dem Kontextsammelschritt in
einem Verlauf nicht gehalten wird, das Ausgeben des Escape-Codes,
das Wiederholen eines Prozesses, um einen Kontext der Daten zu verkürzen, bis
eine bei dem Kontextsammelschritt gehaltene Kombination erhalten
wird.
-
Ein
Datenkomprimierungsverfahren zum Komprimieren von Eingangsdaten
durch das Codieren der Eingangsdaten gemäß einem Verlauf des Auftretens
der Eingangsdaten in der Vergangenheit umfaßt das Ausführen eines Kontextsammelschrittes zum
Halten einer Kombination aus Eingangsdaten und einem Kontext, der
aus n kontinuierlichen Daten gebildet ist, denen die Eingangsdaten
folgen, das Ausführen
eines Codebaumhalteschrittes zum Halten von Codebäumen, die
für jeden
genannten Kontext jeweils unabhängig
sind, das Ausführen
eines Codeausgabeschrittes zum Ausgeben eines Codes, der als einzigartige
Daten definiert ist, gemäß einer Gabelung
eines Knotens, der ein Gabelungspunkt auf einem Weg von einer Wurzel,
die ein oberes Endes des Codebaums bezeichnet, zu einem Blatt an dem
Codebaum ist, in dem die Daten gespeichert sind, falls Daten entsprechend
dem bei dem Kontextsammelschritt gehaltenen Kontext auftreten, das Ausführen eines
Codebaum-Umordnungsschrittes zum Austauschen eines Blattes mit den
Daten gegen ein Blatt mit anderen Daten oder einen internen Knoten
nach einem Prozeß bei
dem Codeausgabeschritt, das Ausführen
eines Kontextunterscheidungsschrittes zum Unterscheiden, ob die
Kombination aus den Eingangsdaten und dem Kontext bei dem Kontextsammelschritt
gehalten wurde, das Ausführen
eines Escape-Code-Halteschrittes, um im voraus an dem Codebaum ein
Blatt zu halten, in dem ein Escape-Code nicht gespeichert ist, der
als Daten definiert ist, die jene Daten angeben, das Ausführen eines Kontext-Neueintragschrittes
zum Neueintragen der Kombination aus Eingangsdaten und einem Kontext bei
dem Kontextsammelschritt, falls die Kombination aus den Eingangsdaten
und dem Kontext in einem Verlauf bei dem Kontextsammelschritt nicht
gehalten wird, das Ausführen
eines Codebaum-Neueintragschrittes, um dann, falls die Kombination
aus den Eingangsdaten und dem Kontext in einem Verlauf bei dem Kontextsammelschritt
nicht gehalten wird, die Daten in den Codebaum entsprechend dem
Kontext neu einzutragen, falls die Kombination aus den Eingangsdaten
und dem Kontext in dem Verlauf bei dem Kontextsammelschritt nicht
gehalten wird, das Ausgeben eines Codes des Escape-Codes, das gleichzeitige
Eintragen der Kombination aus den Eingangsdaten und dem Kontext
in den Verlauf, das Eintragen der Daten in den Codebaum entsprechend
dem Kontext, das Wiederholen eines Prozesses, um den Kontext der
Daten zu verkürzen,
bis eine bei dem Kontextsammelschritt gehaltene Kombination erhalten wird.
-
Ein
Datenkomprimierungsverfahren zum Komprimieren von Eingangsdaten
durch das Codieren der Eingangsdaten gemäß einem Verlauf des Auftretens
der Eingangsdaten in der Vergangenheit umfaßt das Ausführen eines Kontextsammelschrittes zum
Halten einer Kombination aus Eingangsdaten und einem Kontext, der
aus n kontinuierlichen Daten gebildet ist, denen die Eingangsdaten
folgen, das Ausführen
eines Codebaumhalteschrittes zum Halten von Codebäumen, die
für jeden
genannten Kontext jeweils unabhängig
sind, das Ausführen
eines Codeausgabeschrittes zum Ausgeben eines Codes, der als einzigartige
Daten definiert ist, gemäß einer Gabelung
eines Knotens, der ein Gabelungspunkt auf einem Weg von einer Wurzel,
die ein oberes Endes des Codebaums bezeichnet, zu einem Blatt an dem
Codebaum ist, in dem die Daten gespeichert sind, falls Daten entsprechend
dem bei dem Kontextsammelschritt gehaltenen Kontext auftreten, das Ausführen eines
Codebaum-Umordnungsschrittes zum Austauschen eines Blattes mit den
Daten gegen ein Blatt mit anderen Daten oder einen internen Knoten
nach einem Prozeß bei
dem Codeausgabeschritt, das Ausführen
eines Kontextunterscheidungsschrittes zum Unterscheiden, ob die
Kombination aus den Eingangsdaten und dem Kontext bei dem Kontextsammelschritt
gehalten wurde, das Ausführen
eines Escape-Code-Halteschrittes, um im voraus an dem Codebaum ein
Blatt zu halten, in dem ein Escape-Code nicht gespeichert ist, der
als Daten definiert ist, die jene Daten angeben, das Ausführen eines Kontext-Neueintragschrittes
zum Neueintragen der Kombination aus Eingangsdaten und einem Kontext bei
dem Kontextsammelschritt, falls die Kombination aus den Eingangsdaten
und dem Kontext in einem Verlauf bei dem Kontextsammelschritt nicht
enthalten ist, das Ausführen
eines Codebaum-Neueintragschrittes, um dann, falls die Kombination
aus den Eingangsdaten und dem Kontext in einem Verlauf bei dem Kontextsammelschritt
nicht gehalten wird, die Daten in den Codebaum entsprechend dem
Kontext neu einzutragen, wobei bei dem Kontext-Neueintragschritt
und dem Codebaum-Neueintragschritt nur eine Kombination aus einem
unmittelbar vorausgehenden Kontext, bei dem bestimmt wurde, daß er in dem
Verlauf enthalten ist, und den Daten eingetragen wird.
-
Ein
Datendekomprimierungsverfahren zum Dekomprimieren von decodierten
Daten, die durch das Codieren von Eingangsdaten gemäß einem
Verlauf der Eingangsdaten in der Vergangenheit erhalten wurden,
umfaßt
das Ausführen
eines Kontextsammelschrittes zum Halten eines Verlaufs einer Kombination
aus decodierten Daten und einem Kontext, das Ausführen eines
Codebaumhalteschrittes zum Halten von Codebäumen, die für jeden genannten Kontext jeweils
unabhängig
sind, das Ausführen eines
Codebaumbestimmungsschrittes zum Bestimmen eines Codebaums der Daten
gemäß einem
Kontext von Daten, der bis unmittelbar zuvor decodiert worden ist,
das Ausführen
eines Decodierschrittes zum Decodieren der Daten von dem Codebaum,
der bei dem Codebaumbestimmungsschritt bestimmt wurde, und eines
Codes der Daten, das Ausführen eines
Codebaum-Umord nungsschrittes zum Austauschen eines Blattes, das
ein Datenspeicherpunkt an dem Codebaum ist, gegen ein anderes Blatt
oder einen internen Knoten, der ein Gabelungspunkt an dem Codebaum
ist, unter Verwendung desselben Mittels wie ein Komprimierer, nachdem
die Daten bei dem Decodierschritt decodiert worden sind.
-
Ein
Datendekomprimierungsverfahren zum Dekomprimieren von codierten
Daten, die durch das Codieren von Eingangsdaten gemäß einem
Verlauf der Eingangsdaten in der Vergangenheit erhalten wurden,
umfaßt
das Ausführen
eines Kontextsammelschrittes zum Halten eines Verlaufs einer Kombination
aus decodierten Daten und einem Kontext, das Ausführen eines
Codebaumhalteschrittes zum Halten von Codebäumen, die für jeden Kontext jeweils unabhängig sind,
das Ausführen
eines Codebaumbestimmungsschrittes zum Bestimmen eines Codebaums
der Daten gemäß einem
Kontext von Daten, der bis unmittelbar zuvor decodiert worden ist, das
Ausführen
eines Decodierschrittes zum Decodieren der Daten von dem Codebaum,
der bei dem Codebaumbestimmungsschritt bestimmt wurde, und eines
Codes der Daten, das Ausführen
eines Codebaum-Umordnungsschrittes zum Austauschen eines Blattes,
das ein Datenspeicherpunkt an dem Codebaum ist, gegen ein anderes
Blatt oder einen internen Knoten, der ein Gabelungspunkt an dem
Codebaum ist, unter Verwendung desselben Mittels wie ein Codierer,
nachdem die Daten bei dem Decodierschritt decodiert worden sind,
das Eintragen eines Escape-Codes im voraus, der als Daten definiert
ist, die angeben, daß Daten
nicht gespeichert sind, in jedem der Codebäume entsprechend jeweiligen
Kontexten, falls der Escape-Code bei dem Decodierschritt decodiert
wird, das Wiederholen eines Prozesses, um eine Länge eines Kontextes zu verkürzen, bis
ein Code ohne den Escape-Code decodiert ist.
-
Ein
Datendekomprimierungsverfahren zum Dekomprimieren von codierten
Daten, die durch das Codieren von Eingangsdaten gemäß einem
Verlauf der Eingangsdaten in der Vergangenheit erhalten wurden,
umfaßt
das Ausführen
eines Kontextsammelschrittes zum Halten eines Verlaufs einer Kombination
aus decodierten Daten und einem Kontext, das Ausführen eines
Codebaumhalteschrittes zum Halten von Codebäumen, die für jeden Kontext jeweils unabhängig sind,
das Ausführen
eines Codebaumbestimmungsschrittes zum Bestimmen eines Codebaums
der Daten gemäß einem
Kontext von Daten, der bis unmittelbar zuvor decodiert worden ist, das
Ausführen
eines Decodierschrittes zum Decodieren der Daten von dem Codebaum,
der bei dem Codebaumbestimmungsschritt bestimmt wurde, und eines
Codes der Daten, das Ausführen
eines Codebaum-Umordnungsschrittes zum Austauschen eines Blattes,
das ein Datenspeicherpunkt an dem Codebaum ist, gegen ein anderes
Blatt oder einen internen Knoten, der ein Gabelungspunkt an dem
Codebaum ist, unter Verwendung desselben Mittels wie ein Codierer,
nachdem die Daten bei dem Decodierschritt decodiert worden sind,
das Ausführen
eines Kontext-Neueintragschrittes zum Neueintragen der Daten bei
dem Kontextsammelschritt, das Ausführen eines Codebaum-Neueintragschrittes
zum Neueintragen der decodierten Daten in den Codebaum entsprechend
dem Kontext, falls ein Escape-Code decodiert wird, der als Daten
definiert ist, die angeben, daß Daten
nicht gespeichert sind, das Ausführen
des Kontext-Neueintragschrittes und des Codebaum-Neueintragschrittes,
das Wiederholen eines Prozesses, um eine Länge des Kontextes zu verkürzen, bis
ein Code ohne den Escape-Code decodiert ist.
-
Ein
Datendekomprimierungsverfahren zum Dekomprimieren von codierten
Daten, die durch das Codieren von Eingangsdaten gemäß einem
Verlauf der Eingangsdaten in der Vergangenheit erhalten wurden,
umfaßt
das Ausführen
eines Kontext sammelschrittes zum Halten eines Verlaufs einer Kombination
aus decodierten Daten und einem Kontext, das Ausführen eines
Codebaumhalteschrittes zum Halten von Codebäumen, die für jeden Kontext jeweils unabhängig sind,
das Ausführen
eines Codebaumbestimmungsschrittes zum Bestimmen eines Codebaums
der Daten gemäß einem
Kontext von Daten, der bis unmittelbar zuvor decodiert worden ist, das
Ausführen
eines Decodierschrittes zum Decodieren der Daten von dem Codebaum,
der bei dem Codebaumbestimmungsschritt bestimmt wurde, und eines
Codes der Daten, das Ausführen
eines Codebaum-Umordnungsschrittes zum Austauschen eines Blattes,
das ein Datenspeicherpunkt an dem Codebaum ist, gegen ein anderes
Blatt oder einen internen Knoten, der ein Gabelungspunkt an dem
Codebaum ist, unter Verwendung desselben Mittels wie ein Codierer,
nachdem die Daten bei dem Decodierschritt decodiert worden sind,
das Ausführen
eines Kontext-Neueintragschrittes zum Neueintragen der Daten bei
dem Kontextsammelschritt, das Ausführen eines Codebaum-Neueintragschrittes
zum Neueintragen der decodierten Daten in den Codebaum entsprechend
dem Kontext, falls der Escape-Code bei einem Prozeß auch nur
einmal decodiert wird, bis ein Code ohne den Escape-Code decodiert
ist, der als Daten definiert ist, die angeben, daß Daten
nicht gespeichert sind, das Neueintragen der decodierten Daten in
einen Kontext, der unmittelbar vor dem Decodieren eines Codes ohne
den Escape-Code erhalten wurde, bei dem Kontext-Neueintragschritt
und dem Codebaum-Neueintragschritt.
-
Eine
Datenkomprimierungsvorrichtung, die Eingangsdaten gemäß einem
Verlauf des Auftretens der Eingangsdaten in der Vergangenheit codiert,
um die Eingangsdaten zu komprimieren, umfaßt ein Vordaten-Haltemittel,
das einen Kontext hält,
der aus n Eingangsdaten gebildet ist, die bis unmittelbar vor einer
Eingabe der Eingangsdaten eingegeben worden sind, ein Codebaumhaltemittel,
das Codebäume
hält, die
für jeden
genannten Kontext jeweils unabhängig sind,
ein Codebaumbestimmungsmittel, das einen Codebaum der Daten gemäß den Eingangsdaten
bestimmt, die bis unmittelbar vor dem Halten in dem Vordaten-Haltemittel
erhalten wurden, ein Codeausgabemittel, das einzigartige Daten ausgibt,
gemäß einer
Gabelung von einem Knoten, der ein Gabelungspunkt ist, der auf einem
Weg von einer Wurzel, die ein oberes Ende des Codebaums bezeichnet,
der durch das Codebaumbestimmungsmittel selektiert wurde, zu einem
Blatt positioniert ist, in dem die Daten gespeichert sind, ein Codebaum-Umordnungsmittel,
das ein codiertes Blatt gegen ein anderes Blatt oder einen internen
Knoten austauscht, ein Vordaten-Aktualisierungsmittel, das die Daten
in das Vordaten-Haltemittel einträgt.
-
Eine
Datenkomprimierungsvorrichtung, die Eingangsdaten gemäß einem
Verlauf des Auftretens der Eingangsdaten in der Vergangenheit codiert,
um die Eingangsdaten zu komprimieren, umfaßt ein Vordaten-Haltemittel,
das einen Kontext hält,
der aus n Eingangsdaten gebildet ist, die bis unmittelbar vor einer
Eingabe der Eingangsdaten eingegeben worden sind, ein Verlaufshaltemittel,
das eine Kombination aus den Eingangsdaten und einem Kontext hält, ein Codebaumhaltemittel,
das Codebäume
hält, die
für jeden
Kontext jeweils unabhängig
sind, worin ein Escape-Code, der als Daten definiert ist, die angeben, daß Daten
nicht gespeichert sind, im voraus eingetragen ist, ein Codebaumbestimmungsmittel,
das einen Codebaum der Daten gemäß dem Kontext
und den Eingangsdaten bestimmt, ein Kontextunterscheidungsmittel,
das unterscheidet, ob die Daten in dem Codebaum gespeichert sind,
der durch das Codebaumbestimmungsmittel bestimmt wurde, ein Escape-Code-Ausgabemittel,
das einen Escape-Code ausgibt, gemäß einer Gabelung von einem
Knoten, der ein Gabelungspunkt ist, der auf einem Weg von einem
Blatt, das ein oberes Ende des Codebaums bezeichnet, zu einem Blatt
positioniert ist, das ein Datenspeicherpunkt ist, falls die Daten
nicht in dem Codebaum gespeichert sind, ein Kontextänderungsmittel,
das eine Länge
n des Kontextes verkürzt,
falls die Daten nicht in dem Codebaum gespeichert sind, ein Codeausgabemittel,
das einen Code der Daten gemäß der Gabelung
von einem Knoten, der auf einem Weg von einer Wurzel des Codebaums
zu einem Blatt mit den Daten positioniert ist, ausgibt, falls die Daten
nicht in dem Codebaum gespeichert sind, ein Codebaum-Umordnungsmittel,
das ein codiertes Blatt gegen ein anderes Blatt oder einen internen Knoten
austauscht, ein Vordaten-Aktualisierungsmittel, das die Daten in
das Vordaten-Haltemittel einträgt,
ein Steuermittel, das einen Prozeß wiederholt, bis die Daten
codiert sind, falls der Escape-Code codiert wird.
-
Eine
Datenkomprimierungsvorrichtung, die Eingangsdaten gemäß einem
Verlauf des Auftretens der Eingangsdaten in der Vergangenheit codiert,
um die Eingangsdaten zu komprimieren, umfaßt ein Vordaten-Haltemittel,
das einen Kontext hält,
der aus n Eingangsdaten gebildet ist, die bis unmittelbar vor einer
Eingabe der Eingangsdaten eingegeben worden sind, ein Verlaufshaltemittel,
das eine Kombination aus den Eingangsdaten und einem Kontext hält, ein Codebaumhaltemittel,
das Codebäume
hält, die
für jeden
Kontext jeweils unabhängig
sind, worin ein Escape-Code, der als Daten definiert ist, die angeben, daß Daten
nicht gespeichert sind, im voraus eingetragen ist, ein Codebaumbestimmungsmittel,
das einen Codebaum der Daten gemäß dem Kontext
und den Eingangsdaten bestimmt, ein Kontextunterscheidungsmittel,
das unterscheidet, ob die Daten in dem Codebaum gespeichert sind,
der durch das Codebaumbestimmungsmittel bestimmt wurde, ein Escape-Code-Ausgabemittel,
das einen Escape-Code ausgibt, gemäß einer Gabelung von einem
Knoten, der ein Gabelungs punkt ist, der auf einem Weg von einem
Blatt, das ein oberes Ende des Codebaums bezeichnet, zu einem Blatt
positioniert ist, das ein Datenspeicherpunkt ist, falls die Daten
nicht in dem Codebaum gespeichert sind, ein Verlaufseintragmittel, das
die Kombination aus den Daten und dem Kontext in das Verlaufshaltemittel
einträgt,
falls die Daten nicht in dem Codebaum gespeichert sind, ein Codeeintragmittel,
das die Daten in den Codebaum neu einträgt, falls die Daten nicht in
dem Codebaum gespeichert sind, ein Kontextänderungsmittel, das eine Länge n des
Kontextes verkürzt,
falls die Daten nicht in dem Codebaum gespeichert sind, ein Codeausgabemittel,
das einen Code der Daten gemäß der Gabelung
von einem Knoten, der auf einem Weg von einer Wurzel des Codebaums
zu einem Blatt mit den Daten positioniert ist, ausgibt, falls die
Daten in dem Codebaum gespeichert sind, ein Codebaum-Umordnungsmittel,
das ein codiertes Blatt gegen ein anderes Blatt oder einen internen
Knoten austauscht, ein Vordaten-Aktualisierungsmittel,
das die Daten in das Vordaten-Haltemittel einträgt, ein Steuermittel, das einen
Prozeß wiederholt,
bis die Daten codiert sind, falls der Escape-Code codiert wird.
-
Eine
Datenkomprimierungsvorrichtung, die Eingangsdaten gemäß einem
Verlauf des Auftretens der Eingangsdaten in der Vergangenheit codiert,
um die Eingangsdaten zu komprimieren, umfaßt ein Vordaten-Haltemittel,
das einen Kontext hält,
der aus n Eingangsdaten gebildet ist, die bis unmittelbar vor einer
Eingabe der Eingangsdaten eingegeben worden sind, ein Verlaufshaltemittel,
das eine Kombination aus den Eingangsdaten und einem Kontext hält, ein Codebaumhaltemittel,
das Codebäume
hält, die
für jeden
Kontext jeweils unabhängig
sind, worin ein Escape-Code, der als Daten definiert ist, die angeben, daß Daten
nicht gespeichert sind, im voraus eingetragen ist, ein Codebaumbestimmungsmittel,
das einen Codebaum der Daten gemäß dem Kontext
und den Eingangsdaten bestimmt, ein Kontextunterscheidungsmittel,
das unterscheidet, ob die Daten in dem Codebaum gespeichert sind,
der durch das Codebaumbestimmungsmittel bestimmt wurde, ein Escape-Code-Ausgabemittel,
das einen Escape-Code ausgibt, gemäß einer Gabelung von einem
Knoten, der ein Gabelungspunkt ist, der auf einem Weg von einem
Blatt, das ein oberes Ende des Codebaums bezeichnet, zu einem Blatt
positioniert ist, das ein Datenspeicherpunkt ist, falls die Daten
nicht in dem Codebaum gespeichert sind, ein Kontextänderungsmittel,
das eine Länge
n des Kontextes verkürzt,
falls die Daten nicht in dem Codebaum gespeichert sind, ein Escape-Code-Ausgabemittel,
das einen Code der Daten ausgibt, gemäß einer Gabelung von einem Knoten,
der auf einem Weg von einer Wurzel des Codebaums zu einem Blatt
mit den Daten positioniert ist, falls die Daten in dem Codebaum
gespeichert sind, ein Verlaufseintragmittel, das die Kombination aus
den Daten und dem Kontext in das Verlaufshaltemittel einträgt, ein
Codeeintragmittel, das die Daten in einen Codebaum neu einträgt, ein
Codebaum-Umordnungsmittel, das ein codiertes Blatt gegen ein anderes
Blatt oder einen internen Knoten austauscht, ein Vordaten-Aktualisierungsmittel,
das die Daten in das Vordaten-Haltemittel einträgt, ein Steuermittel, das bewirkt,
daß das
Verlaufseintragmittel eine Kombination aus einem Kontext unmittelbar
vor dem Codieren der Daten und den Daten in das Verlaufshaltemittel
einträgt,
falls der Escape-Code beim Codieren der Daten auch nur einmal codiert
wird, und bewirkt, daß das
Codeeintragmittel die Daten in einen Codebaum neu einträgt, der
einen Escape-Code
hat, der unmittelbar vor dem Codieren der Daten codiert worden ist.
-
Eine
Datendekomprimierungsvorrichtung, die einen Code decodiert, der
gemäß einem
Verlauf des Auftretens in der Vergangenheit codiert worden ist,
umfaßt
ein Vordaten-Haltemittel, das n Daten hält, die vor dem Decodieren
eines Codes decodiert worden sind, ein Verlaufshaltemittel, das
eine Kombination aus decodierten Daten und einem Kontext hält, ein
Codebaumbestimmungsmittel, das einen Codebaum bestimmt, der verwendet
wird, um die Daten zu decodieren, gemäß dem Kontext, der in dem Vordaten-Haltemittel
gehalten wird, ein Decodiermittel, das Daten ausgibt, die in einem
Blatt gespeichert sind, das ein Datenspeicherpunkt auf einem Weg
ist, der durch Scannen eines Knotens, der ein Gabelungspunkt ist,
von einer Wurzel erreicht wird, die ein oberes Ende des Codebaums
bezeichnet, der durch das Codebaumbestimmungsmittel selektiert wurde,
gemäß einem
Code, ein Codebaum-Umordnungsmittel, das ein decodiertes Blatt gegen
ein anderes Blatt oder einen internen Knoten austauscht, und ein
Vordaten-Aktualisierungsmittel, das die decodierten Daten in das
Vordaten-Haltemittel einträgt.
-
Eine
Datendekomprimierungsvorrichtung, die einen Code decodiert, der
gemäß einem
Verlauf des Auftretens in der Vergangenheit codiert worden ist,
umfaßt
ein Vordaten-Haltemittel, das n Daten hält, die vor dem Decodieren
eines Codes decodiert worden sind, ein Verlaufshaltemittel, das
eine Kombination aus decodierten Daten und einem Kontext hält, ein
Codebaumhaltemittel, das einen Codebaum hält, worin ein Escape-Code,
der als Daten definiert ist, die angeben, daß Daten nicht gespeichert sind,
im voraus eingetragen ist, ein Codebaumbestimmungsmittel, das einen
Codebaum, der verwendet wird, um die Daten zu decodieren, gemäß dem Kontext
bestimmt, der in dem Vordaten-Haltemittel gehalten wird, ein Decodiermittel,
das Daten ausgibt, die in einem Blatt gespeichert sind, das ein
Datenspeicherpunkt ist, der durch Scannen eines Knotens erreicht wird,
der ein Gabelungspunkt auf einem Weg von einer Wurzel ist, die ein
oberes Ende des Codebaums bezeichnet, der durch das Codebaumbestimmungsmittel
selektiert wurde, gemäß einem
Code, ein Codebaum-Umordnungsmittel, das ein decodiertes Blatt gegen
ein anderes Blatt oder einen internen Knoten austauscht, ein Kontextänderungsmittel,
das die Daten aussondert, falls ausgegebene Daten der Escape-Code
sind, um den Kontext zu verkürzen,
ein Vordaten-Aktualisierungsmittel, das die decodierten Daten in
das Vordaten-Haltemittel einträgt,
ein Steuermittel, das bewirkt, daß das Kontextänderungsmittel
den Kontext zurücksetzt,
wenn der Escape-Code decodiert wird, und einen Prozeß wiederholt,
bis ein Code ohne den Escape-Code decodiert ist.
-
Eine
Datendekomprimierungsvorrichtung, die einen Code decodiert, der
gemäß einem
Verlauf des Auftretens in der Vergangenheit codiert worden ist,
umfaßt
ein Vordaten-Haltemittel, das n Daten hält, die vor dem Decodieren
eines Codes decodiert worden sind, ein Verlaufshaltemittel, das
eine Kombination aus decodierten Daten und einem Kontext hält, ein
Codebaumhaltemittel, das einen Codebaum hält, worin ein Escape-Code im
voraus gespeichert ist, ein Codebaumbestimmungsmittel, das einen
Codebaum, der verwendet wird, um die Daten zu decodieren, gemäß dem Kontext
bestimmt, der in dem Vordaten-Haltemittel gehalten wird, ein Decodiermittel, das
Daten ausgibt, die in einem Blatt gespeichert sind, das ein Datenspeicherpunkt
ist, der durch Scannen eines Knotens erreicht wird, der ein Gabelungspunkt
auf einem Weg von einer Wurzel ist, die ein oberes Ende des Codebaums
bezeichnet, der durch das Codebaumbestimmungsmittel selektiert wurde, gemäß einem
Code, ein Codebaum-Umordnungsmittel, das das decodierte Blatt gegen
ein anderes Blatt oder einen internen Knoten austauscht, ein Kontextänderungsmittel,
das die Daten aussondert, falls ausgegebene Daten der Escape-Code sind, um den Kontext
zu verkürzen,
ein Vordaten-Aktualisierungsmittel, das die decodierten Daten in
das Vordaten- Haltemittel
einträgt,
ein Verlaufseintragmittel, das alle Kontexte, die erhalten werden,
wenn der Escape-Code bei einem Decodierprozeß decodiert wird, und decodierte
Daten in das Verlaufshaltemittel einträgt, ein Codeeintragmittel,
das einen Code der Daten in alle Codebäume einträgt, die dem Kontext entsprechen,
der zu der Zeit des Decodierens des Escape-Codes bei dem Decodierprozeß für die Daten
erhalten wird, ein Steuermittel, das bewirkt, daß das Kontextänderungsmittel
den Kontext zurücksetzt, wenn
der Escape-Code decodiert wird, und einen Prozeß wiederholt, bis der Escape-Code decodiert ist.
-
Eine
Datendekomprimierungsvorrichtung, die einen Code decodiert, der
gemäß einem
Verlauf des Auftretens in der Vergangenheit codiert worden ist,
umfaßt
ein Vordaten-Haltemittel, das n Daten hält, die vor dem Decodieren
eines Codes decodiert worden sind, ein Verlaufshaltemittel, das
eine Kombination aus decodierten Daten und einem Kontext hält, ein
Codebaumhaltemittel, das einen Codebaum hält, worin ein Escape-Code im
voraus gespeichert ist, der als Daten definiert ist, die angeben,
daß Daten
nicht eingetragen sind, ein Codebaumbestimmungsmittel, das einen
Codebaum, der verwendet wird, um die Daten zu decodieren, gemäß dem Kontext
bestimmt, der in dem Vordaten-Haltemittel gehalten wird, ein Decodiermittel,
das Daten ausgibt, die in einem Blatt gespeichert sind, das ein
Datenspeicherpunkt ist, der durch Scannen eines Knotens erreicht
wird, der ein Gabelungspunkt auf einem Weg von einer Wurzel ist, die
ein oberes Ende des Codebaums darstellt, der durch das Codebaumbestimmungsmittel
selektiert wurde, gemäß einem
Code, ein Codebaum-Umordnungsmittel, das das decodierte Blatt gegen
ein anderes Blatt oder einen internen Knoten austauscht, ein Kontextänderungsmittel,
das die Daten aussondert, falls ausgegebene Daten der Escape-Code sind,
um den Kontext zu verkürzen,
ein Vordaten-Aktualisierungsmittel, das die decodierten Daten in
das Vordaten-Haltemittel einträgt,
ein Verlaufseintragmittel, das einen Kontext zu der Zeit des letzten
Decodierens des Escape-Codes bei einem Decodierprozeß für die Daten
und die decodierten Daten in das Verlaufshaltemittel einträgt, ein
Codeeintragmittel, das einen Code der Daten in einen Codebaum einträgt, der
einem Kontext zu der Zeit des letzten Decodierens des Escape-Codes
bei dem Decodierprozeß für die Daten
entspricht, ein Steuermittel, das bewirkt, daß das Kontextänderungsmittel
den Kontext zurücksetzt,
wenn der Escape-Code decodiert wird, und einen Prozeß wiederholt,
bis ein Code ohne den Escape-Code decodiert ist.
-
Ein
Datenkomprimierungsverfahren zum Codieren von Eingangsdaten gemäß einem
Verlauf des Auftretens der Eingangsdaten in der Vergangenheit, um
die Eingangsdaten zu komprimieren, umfaßt das Ausführen eines Kontexthalteschrittes
zum Halten eines Kontextbaums, worin eine Kombination enthalten
ist aus Eingangsdaten und einem Kontext, der aus n kontinuierlichen
Daten gebildet ist, denen die Eingangsdaten folgen, das Ausführen eines
Codebaumhalteschrittes zum Halten von Codebäumen, die für jeden genannten Kontext jeweils
unabhängig sind,
das Ausführen
eines Kontextbaum-Neueintragschrittes zum Neueintragen der Daten
in den bei dem Kontextbaumhalteschritt gehaltenen Kontextbaum, falls
die Kombination aus den Eingangsdaten und dem Kontext bei dem Kontextbaumhalteschritt
nicht gehalten wurde, das Ausführen
eines Codebaum-Neueintragschrittes zum Neueintragen der Daten in
den bei dem Codebaum-Halteschritt gehaltenen Codebaum, falls die
Kombination aus den Eingangsdaten und dem Kontext bei dem Kontextbaumhalteschritt
nicht gehalten wurde, das Ausführen
eines Neueintragschrittes zum Speichern der Daten in einem neuen
Blatt, das erhalten wird, indem ein Blatt ver zweigt wird, das ein
Datenspeicherpunkt an dem bei dem Codebaumhalteschritt gehaltenen
Codebaum ist, falls die Kombination aus den Eingangsdaten und dem
Kontext bei dem Kontextbaumhalteschritt nicht gehalten wurde, das
Ausführen
eines Kontextänderungsschrittes
zum Ändern
des Kontextes, falls die Kombination aus den Eingangsdaten und dem
Kontext bei dem Kontextbaumhalteschritt nicht gehalten wurde, das
Ausführen
eines Codeausgabeschrittes zum Ausgeben eines Codes gemäß der Gabelung
auf einem Weg von einem oberen Ende des Codebaums zu einem Blatt,
in dem die Eingangsdaten oder ein spezifischer Code an dem Codebaum
gespeichert sind, das Ausführen
eines Codebaum-Umordnungsschrittes zum Austauschen eines Blattes,
in dem die Eingangsdaten oder der spezifische Code in dem Codebaum
gespeichert sind, gegen ein anderes Blatt oder einen internen Knoten, der
als Gabelungspunkt definiert ist, wobei das obere Ende des Codebaums
ausgenommen ist, das Verzweigen eines Blattes, in dem der spezifische
Code gespeichert ist, um den spezifischen Code und neue Daten in
zwei neu erhaltene Blätter
bei dem Neueintragschritt einzutragen.
-
Ein
Datenkomprimierungsverfahren zum Codieren von Eingangsdaten gemäß einem
Verlauf des Auftretens der Eingangsdaten in der Vergangenheit, um
die Eingangsdaten zu komprimieren, umfaßt das Ausführen eines Codebaumhalteschrittes
zum Halten eines Codebaums, in dem ein Escape-Code im voraus gespeichert
ist, der als Daten definiert ist, die angeben, daß Daten
nicht gespeichert sind, das Ausführen
eines Kontextbaumhalteschrittes zum Halten eines Kontextbaums, worin
eine Kombination enthalten ist aus Eingangsdaten und n kontinuierlichen
Daten, denen die Eingangsdaten folgen, das Ausführen eines Kontextbaum-Neueintragschrittes
zum Neueintragen der Daten in den bei dem Kontextbaumhalteschritt
gehaltenen Kontextbaum, falls die Kombination aus den Ein gangsdaten
und dem Kontext bei dem Kontextbaumhalteschritt nicht gehalten wurde,
das Ausführen
eines Codebaum-Neueintragschrittes zum Neueintragen der Daten in
den bei dem Codebaumhalteschritt gehaltenen Codebaum, falls die Kombination
aus den Eingangsdaten und dem Kontext bei dem Kontextbaumhalteschritt
nicht gehalten wurde, das Ausführen
eines Neueintragschrittes zum Speichern der Daten in einem neuen
Blatt, das erhalten wird, indem ein Blatt verzweigt wird, das ein
Datenspeicherpunkt an dem bei dem Codebaumhalteschritt gehaltenen
Codebaum ist, falls die Kombination aus den Eingangsdaten und dem
Kontext bei dem Kontextbaumhalteschritt nicht gehalten wurde, das Ausführen eines
Kontextänderungsschrittes
zum Ändern
des Kontextes, falls die Kombination aus den Eingangsdaten und dem
Kontext bei dem Kontextbaumhalteschritt nicht gehalten wurde, das
Ausführen
eines Codeausgabeschrittes zum Ausgeben eines Codes gemäß der Gabelung
auf einem Weg von einem oberen Ende des Codebaums zu einem Blatt, in
dem die Eingangsdaten oder der Escape-Code gespeichert sind, das
Ausführen
eines Codebaum-Umordnungsschrittes
zum Austauschen eines Blattes, in dem die Eingangsdaten oder der
Escape-Code gespeichert sind, gegen ein anderes Blatt oder einen
internen Knoten, der als Gabelungspunkt definiert ist, wobei das
obere Ende des Codebaums ausgenommen ist, das Verzweigen eines Blattes,
in dem der Escape-Code gespeichert ist, um den Escape-Code und neue
Daten in zwei neu erhaltene Blätter
bei dem Neueintragschritt einzutragen.
-
Ein
Datendekomprimierungsverfahren zum Decodieren eines Codes, der durch
das Codieren von Eingangsdaten gemäß einem Verlauf der Eingangsdaten
in der Vergangenheit erhalten wurde, umfaßt das Ausführen eines Kontexthalteschrittes zum
Halten eines Kontextbaums, worin eine Kombination aus decodierten
Daten und einem Kontext gespeichert ist, das Ausfüh ren eines
Codebaumhalteschrittes zum Halten von Codebäumen, die für jeden genannten Kontext jeweils
unabhängig
sind, das Ausführen
eines Codebaumbestimmungsschrittes zum Bestimmen eines Codebaums
des Codes gemäß Daten,
die bis unmittelbar zuvor decodiert worden sind, das Ausführen eines
Decodierschrittes zum Decodieren eines Codes durch das Scannen eines Weges
von einer Wurzel, die ein oberes Ende des Codebaums bezeichnet,
zu einem Blatt, das ein Datenspeicherpunkt ist, gemäß dem Code,
das Ausführen
eines Kontextänderungsschrittes
zum Ändern des
Kontextes, falls das erreichte Blatt ein spezifischer Code in dem
Codebaum ist, das Ausführen
eines Codebaum-Umordnungsschrittes zum Austauschen von Blättern mit
den decodierten Daten und dem spezifischen Code gegen andere Blätter oder
einen internen Knoten, der ein Gabelungspunkt ist, das Ausführen eines
Neueintragschrittes zum Neueintragen der decodierten Daten in den
Codebaum, falls der spezifische Code decodiert wird, das Ausführen eines
Kontextbaumeintragschrittes zum Eintragen der Daten, die bei dem
Neueintragschritt eingetragen worden sind, in den bei dem Kontextbaumhalteschritt gehaltenen
Kontextbaum, bei dem Neueintragschritt das Verzweigen desselben
Blattes wie ein Blatt, das in einem Codierer selektiert worden ist,
um verzweigt zu werden, um neue Daten darin einzutragen.
-
Ein
Datendekomprimierungsverfahren zum Decodieren eines Codes, der durch
das Codieren von Eingangsdaten gemäß einem Verlauf der Eingangsdaten
in der Vergangenheit erhalten wurde, umfaßt das Ausführen eines Codebaumhalteschrittes
zum Halten eines Codebaums, worin ein Escape-Code im voraus gespeichert
ist, der als Daten definiert ist, die angeben, daß Daten
nicht gespeichert sind, das Ausführen
eines Kontextbaumhalteschrittes zum Halten eines Kontextbaums, worin
eine Kombination aus decodierten Daten und einem Kontext gespeichert
ist, das Ausführen
eines Codebaumbestimmungs schrittes zum Bestimmen eines Codebaums
des Codes gemäß Daten,
die bis unmittelbar zuvor decodiert worden sind, das Ausführen eines Decodierschrittes
zum Decodieren eines Codes durch das Scannen eines Weges von einer
Wurzel, die ein oberes Ende des Codebaums bezeichnet, zu einem Blatt,
das ein Datenspeicherpunkt ist, gemäß dem Code, das Ausführen eines
Kontextänderungsschrittes
zum Ändern
des Kontextes, falls ein erreichtes Blatt der Escape-Code ist, das
Ausführen
eines Codebaum-Umordnungsschrittes zum Austauschen von Blättern mit
den decodierten Daten und dem Escape-Code gegen andere Blätter oder
einen internen Knoten, der ein Gabelungspunkt ist, das Ausführen eines
Neueintragschrittes zum Neueintragen der decodierten Daten in den
Codebaum, falls der Escape-Code decodiert wird, das Ausführen eines
Kontextbaumeintragschrittes zum Eintragen der Daten, die bei dem
Neueintragschritt eingetragen worden sind, in den bei dem Kontextbaumhalteschritt
gehaltenen Kontextbaum, bei dem Neueintragschritt das Verzweigen
desselben Blattes wie ein Blatt, das in einem Codierer selektiert
worden ist, um verzweigt zu werden, um neue Daten darin einzutragen.
-
Eine
Datenkomprimierungsvorrichtung, die Eingangsdaten gemäß einem
Verlauf des Auftretens der Eingangsdaten in der Vergangenheit codiert,
umfaßt
ein Codebaumhaltemittel, das einen Codebaum hält, worin ein Escape-Code im
voraus gespeichert ist, der als Daten definiert ist, die angeben,
daß Daten
nicht gespeichert sind, ein Kontextbaumhaltemittel, das einen Kontextbaum
hält, worin
eine Kombination aus Eingangsdaten und einem Kontext gespeichert
ist, ein Kontexteintragmittel, das die Daten in den Kontextbaum
neu einträgt,
nachdem der Escape-Code codiert worden ist, ein Codeeintragmittel, das
ein Blatt verzweigt, das ein Datenspeicherpunkt des Escape-Codes
an dem Codebaum ist, nachdem der Escape-Code codiert worden ist,
um die Daten darin neu einzutragen, ein Kontextänderungsmittel, das den Kontext ändert, falls
die Kombination aus den Eingangsdaten und dem Kontext in dem Kontextbaum
nicht gehalten wird, ein Codiermittel, das einen Code gemäß der Gabelung
auf einem Weg von einem oberen Ende des Codebaums zu einem Blatt ausgibt,
worin die Eingangsdaten oder ein Escape-Code gespeichert sind, ein
Codeaktualisierungsmittel, das Blätter, in denen codierte Daten
und der Escape-Code gespeichert sind, gegen andere Blätter oder
einen internen Knoten austauscht.
-
Eine
Datenkomprimierungsvorrichtung, die Eingangsdaten gemäß einem
Verlauf des Auftretens der Eingangsdaten in der Vergangenheit codiert,
umfaßt
ein Codebaumhaltemittel, das einen Codebaum hält, worin ein Escape-Code im
voraus gespeichert ist, der als Daten definiert ist, die angeben,
daß Daten
nicht gespeichert sind, ein Kontextbaumhaltemittel, das einen Kontextbaum
hält, worin
eine Kombination aus Eingangsdaten und einem Kontext gespeichert
ist, ein Kontexteintragmittel, das die Daten in den Kontextbaum
neu einträgt,
nachdem der Escape-Code codiert worden ist, ein Verzweigungspositionssuchmittel,
das ein Blatt mit der längsten
Codelänge
an dem Codebaum heraussucht, ein Codeeintragmittel, das ein Blatt
verzweigt, das ein Datenspeicherpunkt ist und durch das Verzweigungspositionssuchmittel
herausgesucht worden ist, um die Daten neu einzutragen, nachdem
der Escape-Code codiert worden ist, ein Kontextänderungsmittel, das den Kontext ändert, falls
die Kombination aus den Eingangsdaten und dem Kontext in dem Kontextbaum nicht
gehalten wird, ein Codiermittel, das einen Code gemäß der Gabelung
auf einem Weg von einem oberen Ende des Codebaums zu einem Blatt
ausgibt, worin die Eingangsdaten oder der Escape-Code gespeichert
sind, und ein Codeaktualisierungsmittel, das Blätter, in denen codierte Daten
und der Escape-Code gespeichert sind, gegen andere Blätter oder einen
internen Knoten austauscht.
-
Eine
Datenkomprimierungsvorrichtung, die Eingangsdaten gemäß einem
Verlauf des Auftretens der Eingangsdaten in der Vergangenheit codiert,
umfaßt
ein Codebaumhaltemittel, das einen Codebaum hält, worin ein Escape-Code im
voraus nicht gespeichert ist, der als Daten definiert ist, die jene
Daten angeben, ein Kontextbaumhaltemittel, das einen Kontextbaum
hält, worin
eine Kombination aus Eingangsdaten und einem Kontext gespeichert
ist, ein Kontexteintragmittel, das die Daten in den Kontextbaum
neu einträgt,
nachdem der Escape-Code
codiert worden ist, ein Verzweigungspositionshaltemittel, das eine Position
eines Blattes hält,
das ein Datenspeicherpunkt ist und in den Codebaum neu eingetragen
worden ist, ein Codeeintragmittel, das ein Blatt an einer Position
verzweigt, die in dem Verzweigungspositionshaltemittel gehalten
wird, nachdem der Escape-Code codiert worden ist, um die Daten darin
neu einzutragen, ein Kontextänderungsmittel,
das den Kontext ändert,
falls die Kombination aus den Eingangsdaten und dem Kontext in dem
Kontextbaum nicht gespeichert ist, ein Codiermittel, das einen Code
gemäß der Gabelung
auf einem Weg von einem oberen Ende des Codebaums zu einem Blatt ausgibt,
worin die Eingangsdaten oder der Escape-Code gespeichert sind, ein
Codeaktualisierungsmittel, das Blätter, in denen codierte Daten
und der Escape-Code gespeichert sind, gegen andere Blätter oder
einen internen Knoten austauscht, der ein Gabelungspunkt ist.
-
Eine
Datendekomprimierungsvorrichtung, die einen Code decodiert, der
durch das Codieren von Eingangsdaten gemäß einem Verlauf der Eingangsdaten
in der Vergangenheit erhalten wurde, umfaßt ein Codebaumhaltemittel,
das einen Codebaum hält,
worin ein Escape-Code im voraus gespeichert ist, der als Daten definiert
ist, die angeben, daß Daten
nicht gespeichert sind, ein Kontextbaumhaltemittel, das einen Kontextbaum
hält, worin
eine Kombination aus decodierten Daten und einem Kontext gespeichert
ist, ein Codebaumbestimmungsmittel, das einen Codebaum des Codes
gemäß Daten
bestimmt, die bis unmittelbar zuvor decodiert worden sind, ein Decodiermittel,
das einen Code decodiert, durch Scannen eines Weges von einer Wurzel,
die ein oberes Ende des Codebaums bezeichnet, zu einem Blatt, das
ein Datenspeicherpunkt ist, gemäß dem Code,
ein Kontextänderungsmittel,
das den Kontext ändert,
falls ein erreichtes Blatt der Escape-Code ist, ein Codeaktualisierungsmittel,
das Blätter
mit den decodierten Daten und dem Escape-Code gegen andere Blätter oder
einen internen Knoten austauscht, der ein Gabelungspunkt ist, ein
Codeeintragmittel, das ein Blatt des Escape-Codes verzweigt, wenn der Escape-Code
decodiert wird, um die decodierten Daten darin neu einzutragen,
ein Kontextbaumeintragmittel, das die Daten, die durch das Codeeintragmittel
eingetragen worden sind, in den in dem Kontextbaumhaltemittel gehaltenen
Kontextbaum einträgt.
-
Eine
Datendekomprimierungsvorrichtung, die einen Code decodiert, der
durch das Codieren von Eingangsdaten gemäß einem Verlauf der Eingangsdaten
in der Vergangenheit erhalten wurde, umfaßt ein Codebaumhaltemittel,
das einen Codebaum hält,
worin ein Escape-Code im voraus nicht gespeichert ist, der als Daten
definiert ist, die jene Daten angeben, ein Kontextbaumhaltemittel,
das einen Kontextbaum hält,
worin eine Kombination aus decodierten Daten und einem Kontext gespeichert ist,
ein Codebaumbestimmungsmittel, das einen Codebaum des Codes gemäß Daten
bestimmt, die bis unmittelbar zuvor decodiert worden sind, ein Decodiermittel,
das einen Code decodiert, durch Scannen eines Weges von einer Wurzel,
die ein oberes Ende des Codebaums bezeichnet, zu einem Blatt, das
ein Datenspeicherpunkt ist, gemäß dem Code,
ein Kontextänderungsmittel,
das den Kontext ändert,
falls ein erreichtes Blatt der Escape-Code ist, ein Codeaktualisierungsmittel,
das Blätter
mit den decodierten Daten und dem Escape-Code gegen andere Blätter oder
einen internen Knoten austauscht, der ein Gabelungspunkt ist, ein
Verzweigungspositionssuchmittel, das ein Blatt mit der längsten Codelänge an dem Codebaum
heraussucht, ein Codeeintragmittel, das ein Blatt verzweigt, das
durch das Verzweigungspositionssuchmittel herausgesucht worden ist,
nachdem der Escape-Code codiert worden ist, um die Daten darin neu
einzutragen, ein Kontextbaumeintragmittel, das die Daten, die durch
das Codeeintragmittel eingetragen worden sind, in den in dem Kontextbaumhaltemittel
gehaltenen Kontextbaum einträgt.
-
Eine
Datendekomprimierungsvorrichtung, die einen Code decodiert, der
durch das Codieren von Eingangsdaten gemäß einem Verlauf der Eingangsdaten
erhalten wurde, umfaßt
ein Codebaumhaltemittel, das einen Codebaum hält, worin ein Escape-Code im
voraus gespeichert ist, der als Daten definiert ist, die angeben,
daß Daten
nicht gespeichert sind, ein Kontextbaumhaltemittel, das einen Kontextbaum
hält, worin
eine Kombination aus decodierten Daten und einem Kontext gespeichert
ist, ein Codebaumbestimmungsmittel, das einen Codebaum des Codes
gemäß Daten
bestimmt, die bis unmittelbar zuvor decodiert worden sind, ein Decodiermittel, das
einen Code decodiert, durch Scannen eines Weges von einer Wurzel,
die ein oberes Ende des Codebaums bezeichnet, zu einem Blatt, das
ein Datenspeicherpunkt ist, gemäß dem Code,
ein Kontextänderungsmittel,
das den Kontext ändert,
falls ein erreichtes Blatt der Escape-Code ist, ein Codeaktualisierungsmittel,
das Blätter
mit den decodierten Daten und dem Escape-Code gegen andere Blätter oder
einen internen Knoten austauscht, der ein Gabelungspunkt ist, ein
Verzwei gungspositionshaltemittel, das eine Position eines Blattes
hält, das
in den Codebaum neu eingetragen worden ist, ein Codeeintragmittel,
das ein Blatt an einer in dem Verzweigungspositionshaltemittel gehaltenen
Position verzweigt, nachdem der Escape-Code codiert worden ist,
um die Daten darin neu einzutragen, ein Kontextbaumeintragmittel,
das die Daten, die durch das Codeeintragmittel eingetragen worden
sind, in den in dem Kontextbaumhaltemittel gehaltenen Kontextbaum einträgt.
-
Gemäß dem Datenkomprimierungsverfahren
dieser Erfindung wird ein Codebaum erzeugt und aktualisiert, während der
Codebaum gemäß einer Zeichenkette
von Eingangsdaten umgeordnet wird, die durch das Sammeln von Zeichenketten
der Eingangsdaten erhalten wird. Deshalb ist es möglich, einen
Prozeß mit
zwei Stufen auszuführen,
das heißt, mit
einer Stufe zum Bestimmen einer Häufigkeit des Auftretens von
auftretenden Eingangsdaten, um ein Wahrscheinlichkeitsmodell aufzustellen,
um eine Codetabelle zu bilden, und mit einer Stufe zum Zuordnen
eines Codes zu jedem Eingangsdatum gemäß dieser Codetabelle zu derselben
Zeit. Dadurch kann eine Verarbeitungsrate bei der Datenkomprimierung außerordentlich
erhöht
werden.
-
Ferner
werden gemäß dem Datenkomprimierungsverfahren
dieser Erfindung Zeichenketten von Eingangsdaten gesammelt, benummert
und in ein Wörterbuch
eingetragen, wird ein Code mit jeder Zeichenkette in Entsprechung
gebracht, wird der Code entsprechend einer Wörterbuchnummer der längsten koinzidierenden
Zeichenkette codiert und aktualisiert, wird eine verlängerte Zeichenkette
einer zu codierenden Zeichenkette eingetragen, bis sie eine vorbestimmte
maximale Zeichenkettenlänge
erreicht, und wird ein Code entsprechend der verlängerten
Zeichenkette eingetragen. Deshalb ist es möglich, die Eingangsdaten nicht
in einer Einheit eines Zeichens zu codieren, sondern in einer Einheit einer
Zeichenkette als Vielzahl von Zeichen, so daß eine Verarbeitungsrate bei
der Datenkomprimierung außerordentlich
erhöht
werden kann.
-
Des
weiteren wird gemäß dem Datendekomprimierungsverfahren
dieser Erfindung ein Codebaum erzeugt und aktualisiert, während eine Splay-Codierung
gemäß einer
Zeichenkette von decodierten Daten ausgeführt wird, die durch das Sammeln
von Zeichenketten von decodierten Daten erhalten wird. Somit ist
es möglich,
einen Prozeß mit zwei
Stufen auszuführen,
das heißt,
mit einer Stufe zum Bestimmen einer Häufigkeit des Auftretens eines
Codes einer Zeichenkette, um decodiert zu werden, um ein Wahrscheinlichkeitsmodell
aufzustellen, um eine Codetabelle zu bilden, und mit einer Stufe zum
Decodieren eines Codes einer Zeichenkette, um gemäß dieser
Codetabelle decodiert zu werden. Dadurch kann eine Verarbeitungsrate
bei der Datendekomprimierung außerordentlich
erhöht
werden.
-
Des
weiteren werden gemäß dem Datendekomprimierungsverfahren
dieser Erfindung Zeichenketten von decodierten Daten gesammelt,
benummert und in ein Wörterbuch
eingetragen, wird ein Splay-Code mit jeder decodierten Zeichenkette
in Entsprechung gebracht, wird eine Zeichenkette entsprechend einer
Wörterbuchnummer
in einen Splay-Code decodiert und aktualisiert, wird eine verlängerte Zeichenkette
einer zu decodierenden Zeichenkette eingetragen, bis sie eine vorbestimmte maximale
Zeichenkettenlänge
erreicht. Deshalb ist es möglich,
eingegebene Daten nicht in einer Einheit eines Zeichens zu decodieren,
sondern in einer Einheit einer Zeichenkette als Vielzahl von Zeichen,
so daß eine
Verarbeitungsrate bei der Datendekomprimierung außerordentlich
erhöht
werden kann.
-
Des
weiteren ist es gemäß dem Datenkomprimierungsverfahren
dieser Erfindung möglich,
einen Prozeß mit
zwei Stufen auszuführen,
das heißt,
mit einer Stufe zum Bestimmen einer Häufigkeit des Auftretens von
Eingangsdaten, um ein Wahrscheinlichkeitsmodell aufzustellen, zum
Zuordnen eines Codes zu jedem Eingangsdatum, um eine Codetabelle
zu bilden, und mit einer Stufe zum Ausgeben eines Codes eines Zeichens,
das zu codieren ist, gemäß dieser
Codetabelle zu derselben Zeit, so daß eine Verarbeitungsrate bei
der Datenkomprimierung außerordentlich
erhöht
werden kann. Es ist auch möglich,
ein enormes Volumen einer arithmetischen Operation wegzulassen,
um ein Wahrscheinlichkeitsmodell, das bereits aufgestellt worden
ist, immer wieder aufzustellen, wenn Daten eingegeben werden, so
daß eine Verarbeitungsrate
bei der Datenkomprimierung weiter erhöht werden kann. Es ist ferner
möglich,
einen Code mit einer geringeren Anzahl von Bits auszudrücken, wenn
dieselben Daten wie Eingangsdaten, die in der Vergangenheit aufgetreten
sind, häufiger
auftreten, so daß ein
Effekt der Datenkomprimierung außerordentlich verbessert werden
kann.
-
Des
weiteren wird gemäß dem Datenkomprimierungsverfahren
dieser Erfindung, falls eine Kombination aus Eingangsdaten und einem
Kontext keine Kombination ist, die in einem Verlauf bei dem Kontextsammelschritt
gehalten wurde, ein Escape-Code ausgegeben und wird ein Prozeß, um einen
Kontext der Daten zu verkürzen,
wiederholt, bis eine bei dem Kontextsammelschritt gehaltene Kombination
erhalten wird. Deshalb ist es unnötig, den gesamten Verlauf von
Kombinationen aus Eingangsdaten und einem Kontext im voraus einzutragen,
um eine Zeitperiode zu verringern, die benötigt wird, bis eine Kombination
aus Eingangsdaten und einem Kontext erhalten wird. Dadurch kann
eine Verarbeitungsrate bei der Datenkomprimierung außerordentlich
erhöht werden.
-
Des
weiteren wird gemäß dem Datenkomprimierungsverfahren
dieser Erfindung, falls eine Kombination aus Eingangs daten und einem
Kontext nicht in dem Verlauf bei dem Kontextsammelschritt gehalten
wurde, ein Code eines Escape-Codes
ausgegeben, wird die Kombination aus den Eingangsdaten und dem Kontext
in den Verlauf zu derselben Zeit eingetragen, werden die Daten in
einen Codebaum eingetragen, der dem Kontext entspricht, und wird
ein Prozeß zum
Verkürzen
des Kontextes der Daten wiederholt, bis eine bei dem Kontextsammelschritt
gehaltene Kombination erhalten wird. Somit ist es möglich, die
Eingangsdaten, die in der Vergangenheit nicht eingetragen worden
sind, neu einzutragen, so daß diese
neu eingetragenen Daten in einer frühen Stufe bei dem nächsten Decodierprozeß codiert
werden können.
Dadurch kann ein Effekt der Datenkomprimierung bei weiterem Voranschreiten
des Codierprozesses weiter verstärkt
werden.
-
Des
weiteren wird gemäß dem Datenkomprimierungsverfahren
dieser Erfindung nur eine Kombination aus einem Kontext und Daten,
bei der bestimmt wird, daß sie
in dem Verlauf enthalten ist, bei dem Kontext-Neueintragschritt
und dem Codebaum-Neueintragschritt eingetragen. Folglich ist es unnötig, alle
Kombinationen aus einem Kontext und Daten einzutragen, bei denen
bestimmt wird, daß sie nicht
in dem Verlauf enthalten sind. Dadurch kann die Datenkomprimierung
außerordentlich
verbessert werden. Darüber
hinaus ist es möglich,
einen Code nur für
Daten zu vergeben (einzutragen), die tatsächlich sehr häufig auftreten,
so daß ein
Effekt der Datenkomprimierung außerordentlich verbessert werden
kann.
-
Gemäß dem Datendekomprimierungsverfahren
dieser Erfindung wird ein Blatt, das ein Datenspeicherpunkt ist,
gegen ein anderes Blatt oder einen internen Knoten, der ein Gabelungspunkt
an einem Codebaum ist, unter Verwendung desselben Mittels wie in
dem Codierer ausgetauscht. Daher ist es möglich, einen Prozeß mit zwei
Stufen auszuführen,
das heißt,
mit einer Stufe zum Bestimmen einer Häufigkeit des Auftretens von
Eingangsdaten, um ein Wahrscheinlichkeitsmodell aufzustellen und
einen Code jedem Eingangsdatum zuzuordnen, um eine Codetabelle zu
bilden, und mit einer Stufe zum Ausgeben eines zu decodierenden
Zeichens gemäß dieser
Codetabelle zu derselben Zeit, so daß eine Verarbeitungsrate bei
der Datendekomprimierung außerordentlich erhöht werden
kann. Es ist auch möglich,
ein enormes Volumen einer arithmetischen Operation wegzulassen,
um ein Wahrscheinlichkeitsmodell, das bereits aufgestellt worden
ist, immer dann wieder aufzustellen, wenn Daten eingegeben werden,
so daß eine Verarbeitungsrate
bei der Datendekomprimierung weiter erhöht werden kann. Es ist ferner
möglich,
einen Code von Daten mit einer geringeren Anzahl von Bits auszudrücken, wenn
derselbe Code wie jener von Eingangsdaten, der in der Vergangenheit
aufgetreten ist, häufiger
auftritt, so daß ein
Effekt der Datendekomprimierung außerordentlich verbessert werden
kann.
-
Ferner
wird gemäß dem Datendekomprimierungsverfahren
dieser Erfindung, falls ein Escape-Code bei dem Decodierprozeß decodiert
wird, ein Prozeß zum
Verkürzen
einer Länge
eines Kontextes wiederholt, bis ein Code ohne den Escape-Code decodiert ist,
so daß es
unnötig
ist, den gesamten Verlauf einer Kombination aus decodierten Daten
und einem Kontext im voraus einzutragen. Es ist auch möglich, eine
Zeitperiode zu verringern, die benötigt wird, bis die Kombination
aus den decodierten Daten und dem Kontext erhalten ist. Dadurch
kann eine Verarbeitungsrate bei der Datendekomprimierung außerordentlich
erhöht
werden.
-
Des
weiteren werden gemäß dem Datendekomprimierungsverfahren
dieser Erfindung Daten bei dem Kontextsammelschritt neu eingetragen,
und decodierte Daten werden in einen Codebaum neu eingetragen, der
einem Kontext entspricht. Wenn ein Escape-Code, der als Daten definiert
ist, die angeben, daß Daten
nicht gespeichert sind, decodiert wird, wird ein Prozeß zum Verkürzen einer
Länge des Kontextes
wiederholt, bis ein Code ohne den Escape-Code decodiert ist. Es
ist möglich,
decodierte Daten neu einzutragen, die in der Vergangenheit nicht eingetragen
worden sind, und die decodierten Daten, die neu eingetragen wurden,
in einer frühen
Stufe bei der nächsten
Datendecodierung zu decodieren. Deshalb kann ein Effekt der Datendekomprimierung
bei weiterem Fortschreiten des Prozesses des Decodierens weiter
verbessert werden.
-
Des
weiteren wird gemäß dem Datendekomprimierungsverfahren
dieser Erfindung, falls ein Escape-Code, der als Daten definiert
ist, die angeben, daß Daten
nicht eingetragen sind, auch nur einmal in einem Prozeß decodiert
wird, bis ein Code ohne den Escape-Code decodiert ist, ein Neueintragprozeß bei dem
Kontext-Neueintragschritt und dem Codebaum-Neueintragschritt nur
bei einem Kontext ausgeführt,
der unmittelbar vor dem Decodieren eines Codes ohne den Escape-Code erhalten wurde,
so daß es
unnötig
ist, alle Kombinationen aus dem Kontext und Daten einzutragen, bei
denen bestimmt wurde, daß sie
nicht in dem Verlauf der Eingangsdaten in der Vergangenheit enthalten
sind. Daher ist es möglich,
einen Code nur für
Daten zuzuordnen (einzutragen), die tatsächlich sehr häufig aufgetreten
sind. Dadurch kann ein Effekt der Datendekomprimierung außerordentlich
verbessert werden.
-
In
der Datenkomprimierungsvorrichtung dieser Erfindung kann ein Prozeß mit zwei
Stufen, das heißt,
mit einer Stufe zum Bestimmen einer Häufigkeit des Auftretens von
Eingangsdaten, um ein Wahrscheinlichkeitsmodell aufzustellen und
einen Code jedem Datum zuzuordnen, um einen Codebaum zu bilden,
und einer Stufe zum Ausgeben eines Codes von Daten, die gemäß dieser
Codetabelle zu codieren sind, zu derselben Zeit ausgeführt werden,
so daß eine
Verarbeitungsrate bei der Datenkomprimierung außerordentlich erhöht werden
kann. Es ist auch möglich,
ein enormes Volumen einer arithmetischen Operation wegzulassen,
um ein Wahrscheinlichkeitsmodell, das bereits aufgestellt worden
ist, immer dann wieder aufzustellen, wenn Daten eingegeben werden,
so daß eine
Verarbeitungsrate bei der Datenkomprimierung noch mehr erhöht werden kann.
Immer wenn dieselben Daten wie die Daten auftreten, die in der Vergangenheit
codiert worden sind, wird ein codiertes Blatt gegen ein anderes
Blatt oder einen internen Knoten ausgetauscht, um eine Codelänge zu ändern, so
daß es
möglich
ist, einen Code von Daten mit einer geringeren Anzahl von Bits auszudrücken, wenn
dieselben Daten häufiger
auftreten. Dadurch kann ein Effekt der Datenkomprimierung außerordentlich
verbessert werden.
-
Ferner
ist es in der Datenkomprimierungsvorrichtung dieser Erfindung unnötig, den
gesamten Verlauf einer Kombination aus Eingangsdaten und einem Kontext
im voraus einzutragen, so daß eine
Verarbeitungsrate bei der Datenkomprimierung außerordentlich erhöht werden
kann. Es ist auch möglich,
ein Volumen eines Speichers zu reduzieren, der verwendet wird, um
den Kontext darin einzutragen, wodurch eine Verarbeitungslast auf
der Datenkomprimierungsvorrichtung stark reduziert wird.
-
Des
weiteren ist es in der Datenkomprimierungsvorrichtung dieser Erfindung
möglich,
Eingangsdaten, die in der Vergangenheit nicht gespeichert worden
sind, neu einzutragen, so daß die
neu eingetragenen Daten in einer frühen Stufe bei dem nächsten Codierprozeß codiert
werden können.
Dadurch kann ein Effekt der Datenkomprimierung bei weiterem Fortschreiten
des Codierprozesses noch mehr verbessert werden, so daß eine Verarbeitungslast
auf der Datenkomprimierungsvorrichtung außerordentlich reduziert werden
kann.
-
Des
weiteren ist es in der Datenkomprimierungsvorrichtung dieser Erfindung
unnötig,
alle Kombinationen aus einem Kontext und Daten einzutragen, bei
denen bestimmt wurde, daß sie
nicht in dem Verlauf von Eingangsdaten in der Vergangenheit enthalten
sind. Somit ist es möglich,
einen Code nur für Daten
zuzuordnen (einzutragen), die tatsächlich sehr häufig auftreten,
so daß ein
Effekt der Datenkomprimierung außerordentlich verbessert werden
kann. Als Resultat kann eine Leistung der Datenkomprimierungsvorrichtung
beachtlich verbessert werden.
-
In
der Datendekomprimierungsvorrichtung dieser Erfindung kann ein Prozeß mit zwei
Stufen, das heißt,
mit einer Stufe zum Bestimmen einer Häufigkeit des Auftretens von
Eingangsdaten, um ein Wahrscheinlichkeitsmodell aufzustellen und
einen Code jedem Eingangsdatum zuzuordnen, um eine Codetabelle zu
bilden, und einer Stufe zum Ausgeben eines Zeichens, das gemäß dieser
Codetabelle zu decodieren ist, zu derselben Zeit ausgeführt werden,
so daß eine
Verarbeitungsrate bei der Datendekomprimierung außerordentlich
erhöht
werden kann. Es ist möglich,
ein enormes Volumen einer arithmetischen Operation wegzulassen,
um ein Wahrscheinlichkeitsmodell, das bereits aufgestellt worden
ist, immer dann wieder aufzustellen, wenn Daten eingegeben werden,
so daß eine
Verarbeitungsrate bei der Datendekomprimierung weiter erhöht werden
kann. Es ist auch möglich,
Daten mit einer geringeren Anzahl von Bits auszudrücken, wenn
derselbe Code wie jener von Eingangsdaten, der in der Vergangenheit aufgetreten
ist, häufiger
auftritt, so daß ein
Effekt der Datendekomprimierung außerordentlich verbessert werden
kann. Mit den obigen Vorteilen kann eine Leistung der Datendekomprimierungsvorrichtung
beachtlich verbessert werden.
-
Ferner
ist es in der Datendekomprimierungsvorrichtung dieser Erfindung
unnötig,
den gesamten Verlauf einer Kombi nation aus decodierten Daten und
einem Kontext im voraus einzutragen, so daß eine Zeitperiode, die benötigt wird,
bis eine Kombination aus den decodierten Daten und dem Kontext erhalten
wird, verringert werden kann. Dadurch kann eine Verarbeitungsrate
bei der Datendekomprimierung einhergehend mit einer Leistung der
Datendekomprimierungsvorrichtung außerordentlich verbessert werden.
-
Des
weiteren können
in der Datendekomprimierungsvorrichtung dieser Erfindung decodierte
Daten, die in der Vergangenheit nicht eingetragen worden sind, neu
eingetragen werden, und diese neu eingetragenen decodierten Daten
können
in einer frühen
Stufe bei dem nächsten
Prozeß decodiert
werden. Dadurch kann ein Effekt der Datendekomprimierung bei weiterem
Fortschreiten des Decodierprozesses noch mehr verbessert werden,
wodurch eine Leistung der Datendekomprimierungsvorrichtung enorm
verbessert wird.
-
Des
weiteren ist es in der Datendekomprimierungsvorrichtung dieser Erfindung
unnötig,
alle Kombinationen aus Kontext und Daten einzutragen, die decodiert
werden, um nicht in dem Verlauf von Eingangsdaten in der Vergangenheit
gehalten zu werden, so daß es
möglich
ist, einen Code nur für Daten
zuzuordnen (einzutragen), die tatsächlich sehr häufig auftreten.
Dadurch können
ein Effekt der Datendekomprimierung und eine Leistung der Datendekomprimierungsvorrichtung
außerordentlich
verbessert werden.
-
Gemäß dem Datenkomprimierungsverfahren
dieser Erfindung kann eine hohe Codierrate in dem Fall erreicht
werden, wenn Daten verarbeitet werden, die eine relativ große Anzahl
der Escape-Codes ergeben, oder in einer frühen Stufe, wenn der eingetragene
Kontext, der bei dem Kontextbaumhalteschritt gehalten wird, unzulänglich ist.
Falls der Codebaum-Umordnungsschritt vor dem Codebaum-Neueintragschritt
ausgeführt
wird, kann ein Code oder der spezifische Code eine Codelänge von lediglich
2 Bits haben. Falls der Codebaum-Umordnungsschritt nach dem Codebaum-Neueintragschritt ausgeführt wird,
kann der spezifische Code eine Codelänge von lediglich 1 Bit haben.
Dabei kann eine Effektivität
der Codierung außerordentlich
verbessert werden. Bei dem Codebaum-Neueintragprozeß werden
Daten immer nacheinander neu eingetragen, so daß jedesmal nur ein Symbol mit
hoher Wiederholbarkeit in dem höheren
Grad des Codebaums eingetragen wird. Dadurch kann ein Rückgang der
Effektivität
des Codierens verhindert werden, der durch die Existenz von Daten
verursacht wird, die einmal in den Codebaum eingetragen worden sind,
aber eigentlich nicht verwendet werden, so daß nach einem ausreichenden
Dateneintrag eine Effektivität
des Codierens außerordentlich
verbessert wird.
-
Des
weiteren kann gemäß diesem
Datenkomprimierungsverfahren dieser Erfindung der obige spezifische
Code als Escape-Code behandelt werden, der als Daten definiert ist,
die keinen Eintrag der Daten bedeuten. In dem Fall kann sich derselbe
Vorteil ergeben.
-
Gemäß dem Datendekomprimierungsverfahren
dieser Erfindung kann jedes von zwei geteilten Blättern eine
Codelänge
von (einer Codelänge
eines Blattes vor dem Teilen) + (1) Bits bei dem Daten-Neueintragschritt
haben, genauso wie in dem Codierer. Zusätzlich können ein Code von neu eingetragenen Daten
und der spezifische Code eine Codelänge von lediglich 2 Bits haben.
Deshalb kann, falls Daten verarbeitet werden, die eine relativ große Anzahl
von Escape-Codes ergeben, oder in einer frühen Stufe, wenn der Wörterbucheintrag
(der Eintrag von Symbolen in dem Codebaum) unzulänglich ist, ein Effekt der
Datendecodierung außerordentlich
verbessert werden.
-
Falls
der Codebaum-Umordnungsschritt vor dem Daten-Neueintragschritt ausgeführt wird,
können
decodierte Daten und der Escape-Code eine Codelänge von lediglich 2 Bits haben.
Falls der Codebaum-Umordnungsschritt nach dem Neueintragschritt
ausgeführt
wird, kann der Escape-Code eine Codelänge von lediglich 1 Bit haben.
Deshalb kann eine Effektivität
der Datendecodierung außerordentlich
verbessert werden. Der Dekomprimierer führt denselben Neueintragschritt
wie der Codierer aus, so daß Daten,
die in dem Codierer codiert worden sind, akkurat decodiert werden
können.
-
Des
weiteren kann gemäß diesem
Datenkomprimierungsverfahren dieser Erfindung der obige spezifische
Code als Escape-Code behandelt werden, der als Daten definiert ist,
die keinen Eintrag von Daten bedeuten. In dem Fall kann sich derselbe
Vorteil ergeben.
-
Die
Datenkomprimierungsvorrichtung dieser Erfindung kann eine extrem
hohe Decodierrate in dem Fall von Daten bieten, die die Escape-Codes
relativ häufig
ergeben, oder in einer frühen
Stufe, wenn der Eintrag von Kontext, der in dem Kontextbaumhaltemittel
gehalten wird, unzulänglich
ist. Falls das Codeaktualisierungsmittel einen Code aktualisiert,
bevor das Codeeintragmittel den Code einträgt, können der Code und ein spezifischer
Code eine Codelänge von
lediglich 2 Bits haben. Falls das Codeaktualisierungsmittel einen
Code aktualisiert, nachdem das Codeeintragmittel den Code eingetragen
hat, kann ein Escape-Code eine Codelänge von lediglich 1 Bit haben.
Deshalb kann eine Effektivität
des Codierens außerordentlich
verbessert werden. Das Codeeintragmittel trägt einen Code immer auf aufeinanderfolgende
Weise ein, so daß immer
nur Daten mit Wiederholbarkeit in dem höheren Grad des Codebaums eingetragen
werden. Dadurch kann ein Rückgang der
Codiereffektivität
verhindert werden, der durch die Existenz von Daten verursacht wird,
die einmal eingetragen worden sind, tatsächlich aber nicht verwendet
werden, so daß die
Codiereffektivität
nach einem ausreichen den Eintrag von Daten außerordentlich verbessert werden
kann und eine Leistung der Datenkomprimierungsvorrichtung beachtlich
verbessert werden kann.
-
Ferner
wird in der Datenkomprimierungsvorrichtung dieser Erfindung eine
lange Codelänge
für Daten
vergeben, die am seltensten auftreten, das heißt, an Daten, die nicht oft
verwendet werden. Folglich ist es möglich, einen Rückgang der
Codiereffektivität
zu minimieren, der dadurch verursacht wird, daß die Codelänge um 1 Bit vergrößert wird,
um eine Verarbeitungsrate der Datenkomprimierung einhergehend mit
einer Leistung der Datenkomprimierungsvorrichtung außerordentlich
zu verbessern.
-
Des
weiteren kann die Datenkomprimierungsvorrichtung dieser Erfindung
neuere Daten, die in einem Blatt gespeichert sind und zuletzt eingetragen
wurden, mehr an Daten annähern,
die eine relativ lange Codelänge
haben, so daß eine
Verarbeitungsrate bei der Datenkomprimierung außerordentlich erhöht werden
kann und ferner eine Verarbeitungslast auf der Datenkomprimierungsvorrichtung stark
verringert werden kann.
-
Des
weiteren kann die Datenkomprimierungsvorrichtung dieser Erfindung
eine hohe Decodierrate in dem Fall bieten, wenn Daten verarbeitet werden,
die eine relativ große
Anzahl von Escape-Codes ergeben, oder in einer frühen Stufe,
wenn der Eintrag von Kontexten, die in dem Kontextbaumhaltemittel
gehalten werden, unzulänglich
ist. Falls das Codeaktualisierungsmittel eine Codeaktualisierung
ausführt,
bevor das Codeeintragmittel einen Codeeintrag vornimmt, können ein
Code und der spezifische Code eine Codelänge von lediglich 2 Bits haben.
Falls das Codeaktualisierungsmittel die Codeaktualisierung ausführt, nachdem
das Codeeintragmittel den Codeeintrag vorgenommen hat, kann der Escape-Code
eine Codelänge
von lediglich 1 Bit haben. Dies ist sehr effektiv, um die Decodiereffektivität zu erhöhen. Darüber hinaus
führt das
Codeeintragmittel den Neueintrag eines Codes, der zu decodieren
ist, zu allen Zeiten auf aufeinanderfolgende Weise aus, so daß nur Daten
mit hoher Wiederholbarkeit in dem höheren Grad des Codebaums eingetragen werden.
Dadurch kann ein Rückgang
der Decodiereffektivität
verhindert werden, der durch die Existenz von Daten verursacht wird,
die einmal eingetragen worden sind, tatsächlich aber nicht verwendet
werden. Dadurch kann die Decodiereffektivität nach dem Eintragen eines
ausreichenden Volumens von Daten außerordentlich erhöht werden.
Als Resultat kann eine Leistung der Datenkomprimierungsvorrichtung beachtlich
verbessert werden.
-
Ferner
wird in der Datendekomprimierungsvorrichtung dieser Erfindung eine
lange Codelänge für Daten
vergeben, die am seltensten auftreten, das heißt, für Daten, die nicht häufig verwendet
werden. Somit ist es möglich,
einen Rückgang
der Decodiereffektivität
zu minimieren, der dadurch verursacht wird, daß die Codelänge um 1 zunimmt, um eine Verarbeitungsrate
der Datendekomprimierung einhergehend mit einer Leistung der Datendekomprimierungsvorrichtung
außerordentlich
zu verbessern.
-
Des
weiteren wird in der Datendekomprimierungsvorrichtung dieser Erfindung
der Neueintrag von Daten an einem Blatt vorgenommen, in dem Daten
gespeichert sind, die zuletzt eingetragen worden sind, so daß es möglich ist,
diese Daten, die in einem Blatt gespeichert sind und zuletzt eingetragen
worden sind, an Daten anzunähern,
die eine lange Codelänge
haben. Dadurch kann ein Rückgang
der Decodiereffektivität
effektiv minimiert werden, der durch eine Zunahme einer Codelänge von
Daten, die häufig verwendet
werden, um 1 Bit verursacht wird, um eine Verarbeitungsrate der
Datende komprimierung einhergehend mit einer Leistung der Datenkomprimierungsvorrichtung
außerordentlich
zu erhöhen.
-
KURZE BESCHREIBUNG DER
ZEICHNUNGEN
-
1 bis 14 sind
Blockdiagramme, die Aspekte dieser Erfindung zeigen;
-
15 ist ein Blockdiagramm einer Datenkomprimierungsvorrichtung
und einer Datendekomprimierungsvorrichtung gemäß einer ersten Ausführungsform
dieser Erfindung;
-
16(a) zeigt ein Beispiel für eine Speicherform eines Kontextbaums;
-
16(b) zeigt eine Elternbeziehung eines Wörterbuchs;
-
17 zeigt einen Anfangszustand eines Codebaums;
-
18 zeigt ein Beispiel für die Anordnung zum Speichern
eines Codebaums;
-
19(a) und 19(b) zeigen
ein Beispiel für
eine Basisoperation zur Codeaktualisierung an den Splay-Codes und
eine Codeaktualisierungsoperation bezüglich der Splay-Codes;
-
20 ist ein Flußdiagramm, das eine Prozedur
zum Codieren gemäß der ersten
Ausführungsform
dieser Erfindung zeigt;
-
21(a) und 21(b) zeigen
Prozeduren zum Aktualisieren eines Kontextbaums bzw. eines Codebaums
gemäß der ersten
Ausführungsform
dieser Erfindung;
-
22(a) und 22(b) zeigen
Prozeduren zum Aktualisieren des Kontextbaums bzw. des Codebaums
gemäß der ersten
Ausführungsform
dieser Erfindung;
-
23(a) und 23(b) zeigen
Prozeduren zum Aktualisieren des Kontextbaums bzw. des Codebaums
gemäß der ersten
Ausführungsform
dieser Erfindung;
-
24(a) und 24(b) zeigen
Prozeduren zum Aktualisieren des Kontextbaums bzw. des Codebaums
gemäß der ersten
Ausführungsform
dieser Erfindung;
-
25(a) und 25(b) zeigen
Prozeduren zum Aktualisieren des Kontextbaums bzw. des Codebaums
gemäß der ersten
Ausführungsform
dieser Erfindung;
-
26(a) und 26(b) zeigen
Prozeduren zum Aktualisieren des Kontextbaums bzw. des Codebaums
gemäß der ersten
Ausführungsform
dieser Erfindung;
-
27(a) und 27(b) zeigen
Prozeduren zum Aktualisieren des Kontextbaums bzw. des Codebaums
gemäß der ersten
Ausführungsform
dieser Erfindung;
-
28(a) und 28(b) zeigen
Prozeduren zum Aktualisieren des Kontextbaums bzw. des Codebaums
gemäß der ersten
Ausführungsform
dieser Erfindung;
-
29 zeigt eine Zeichenkette nach dem Codieren gemäß der ersten
Ausführungsform
dieser Erfindung;
-
30(a) und 30(b) zeigen
Algorithmen zum Erzeugen eines Kontextbaums;
-
31 ist ein Flußdiagramm zum Darstellen einer
Prozedur zum Decodieren gemäß der ersten Ausführungsform
dieser Erfindung;
-
32 ist ein Blockdiagramm einer Datenkomprimierungsvorrichtung
und einer Datendekomprimierungsvorrichtung gemäß einer zweiten Ausführungsform
dieser Erfindung;
-
33 ist ein Blockdiagramm der Datenkomprimierungsvorrichtung
gemäß der zweiten
Ausführungsform
dieser Erfindung;
-
34 ist ein Blockdiagramm einer Codiereinheit gemäß der zweiten
Ausführungsform
dieser Erfindung;
-
35 ist ein Flußdiagramm, das eine Prozedur
zum Codieren gemäß der zweiten
Ausführungsform
dieser Erfindung zeigt;
-
36 ist ein Flußdiagramm, das eine Prozedur
zum Ausgeben eines Codes gemäß der zweiten
Ausführungsform
dieser Erfindung zeigt;
-
37 ist ein Flußdiagramm, das eine Prozedur
zum Umformen eines Codebaums gemäß der zweiten
Ausführungsform
dieser Erfindung zeigt;
-
38 ist ein Blockdiagramm der Datendekomprimierungsvorrichtung
gemäß der zweiten
Ausführungsform
dieser Erfindung;
-
39 ist ein Blockdiagramm einer Decodiereinheit
gemäß der zweiten
Ausführungsform
dieser Erfindung;
-
40 ist ein Flußdiagramm, das eine Prozedur
zum Decodieren gemäß der zweiten
Ausführungsform
dieser Erfindung zeigt;
-
41 ist ein Flußdiagramm, das eine Prozedur
zum Decodieren gemäß der zweiten
Ausführungsform
dieser Erfindung zeigt;
-
42 ist ein Blockdiagramm einer Datenkomprimierungsvorrichtung
gemäß einer
ersten Abwandlung der zweiten Ausführungsform dieser Erfindung;
-
43 ist ein Flußdiagramm, das eine Prozedur
zum Codieren gemäß der ersten
Abwandlung der zweiten Ausführungsform
dieser Erfindung zeigt;
-
44 ist ein Blockdiagramm einer Datendekomprimierungsvorrichtung
gemäß der ersten
Abwandlung der zweiten Ausführungsform
dieser Erfindung;
-
45 ist ein Flußdiagramm, das eine Prozedur
zum Decodieren gemäß der ersten
Abwandlung der zweiten Ausführungsform
dieser Erfindung zeigt;
-
46 ist ein Blockdiagramm einer Datendekomprimierungsvorrichtung
gemäß einer
zweiten Abwandlung der zweiten Ausführungsform dieser Erfindung;
-
47 ist ein Flußdiagramm, das eine Prozedur
zum Codieren gemäß der zweiten
Abwandlung der zweiten Ausführungsform
dieser Erfindung zeigt;
-
48 ist ein Blockdiagramm der Dekomprimierungsvorrichtung
gemäß der zweiten
Abwandlung der zweiten Ausführungsform
dieser Erfindung;
-
49 ist ein Flußdiagramm, das eine Prozedur
zum Decodieren gemäß der zweiten
Abwandlung der zweiten Ausführungsform
dieser Erfindung zeigt;
-
50 ist ein Flußdiagramm, das eine Prozedur
zum Codieren gemäß einer
dritten Abwandlung der zweiten Ausführungsform dieser Erfindung zeigt;
-
51 ist ein Flußdiagramm, das eine Prozedur
zum Decodieren gemäß der dritten
Abwandlung der zweiten Ausführungsform
dieser Erfindung zeigt;
-
52 ist ein Blockdiagramm einer Datenkomprimierungsvorrichtung
gemäß einer
dritten Ausführungsform
dieser Erfindung;
-
53 ist ein Blockdiagramm einer Codeeintrageinheit
und einer Codebaumhalteeinheit gemäß der dritten Ausführungsform
dieser Erfindung;
-
54 zeigt eine Operation der Datenkomprimierungsvorrichtung
gemäß der dritten
Ausführungsform
dieser Erfindung;
-
55 zeigt die Operation der Datenkomprimierungsvorrichtung
gemäß der dritten
Ausführungsform
dieser Erfindung;
-
56 zeigt die Operation der Datenkomprimierungsvorrichtung
gemäß der dritten
Ausführungsform
dieser Erfindung;
-
57(a) und 57(b) zeigen
Beispiele für
einen Codebaum bzw. einen Kontextbaum;
-
58 ist ein Flußdiagramm, das eine Prozedur
zum Codieren gemäß der dritten
Ausführungsform
zeigt;
-
59 ist ein Flußdiagramm, das eine Prozedur
zum Codieren gemäß der dritten
Ausführungsform
zeigt;
-
60(a) und 60(b) zeigen
einen Zustand des Neueintragens eines Codes gemäß der dritten Ausführungsform
dieser Erfindung;
-
61 ist ein Flußdiagramm, das eine andere
Prozedur zum Codieren gemäß der dritten
Ausführungsform
dieser Erfindung zeigt;
-
62 ist ein Blockdiagramm der Datendekomprimierungsvorrichtung
gemäß der dritten
Ausführungsform
dieser Erfindung;
-
63 zeigt eine Operation der Datendekomprimierungsvorrichtung
gemäß der dritten
Ausführungsform
dieser Erfindung;
-
64 zeigt die Operation der Datendekomprimierungsvorrichtung
gemäß der dritten
Ausführungsform
dieser Erfindung;
-
65 ist ein Flußdiagramm, das eine Prozedur
zum Decodieren gemäß der dritten
Ausführungsform
dieser Erfindung zeigt;
-
66 ist ein Blockdiagramm einer Codeeintrageinheit
und einer Codebaumhalteeinheit gemäß einer ersten Abwandlung der
dritten Ausführungsform
dieser Erfindung;
-
67 ist ein Flußdiagramm, das eine Prozedur
zum Codieren gemäß der ersten
Abwandlung der dritten Ausführungsform
dieser Erfindung zeigt;
-
68 ist ein Blockdiagramm einer Codeeintrageinheit
und einer Codebaumhalteeinheit gemäß einer zweiten Abwandlung
der dritten Ausführungsform
dieser Erfindung;
-
69 ist ein Flußdiagramm, das eine Prozedur
zum Codieren gemäß der zweiten
Abwandlung der dritten Ausführungsform
dieser Erfindung zeigt;
-
70(a) und 70(b) zeigen
ein Prinzip einer mehrwertigen arithmetischen Codierung;
-
71(a) und 71(b) sind
jeweilige Flußdiagramme,
die Prozeduren bei der mehrwertigen arithmetischen Codierung zeigen,
um Daten durch ein Zeichen zu komprimieren;
-
72 zeigt ein Beispiel für einen Algorithmus der mehrwertigen
arithmetischen Codierung;
-
73(a) und 73(b) zeigen
ein Prinzip einer Splay-Codierung;
-
74 zeigt ein Prinzip einer statistischen Codierung;
und
-
75(a) und 75(b) zeigen
ein Beispiel für
den Eintrag in einen Kontextbaum.
-
BESCHREIBUNG DER BEVORZUGTEN
AUSFÜHRUNGSFORM
-
(a) Beschreibung von Aspekten
der Erfindung
-
Ein
Datenkomprimierungsverfahren gemäß dieser
Erfindung dient zum Codieren von Eingangsdaten gemäß einem
Verlauf des Auftretens der Daten, die in der Vergangenheit aufgetreten
sind, und umfaßt
die folgenden Schritte:
- (1) einen Kontextsammelschritt,
um Zeichenketten von Eingangsdaten zu sammeln; und
- (2) einen Codierschritt, um einen Codebaum zu erzeugen und zu
aktualisieren, während
der Codebaum gemäß einer
Datenkette der Eingangsdaten um- oder neugeordnet wird, die bei
dem Kontextsammelschritt erhalten worden ist.
-
Bei
dem obenerwähnten
Datenkomprimierungsverfahren gemäß dieser
Ausführungsform
werden Zeichenketten von Eingangsdaten gesammelt und wird ein Codebaum
gemäß den Zeichenketten der
Eingangsdaten, die bei dem Kontextsammelschritt erhalten wurden,
erzeugt und aktualisiert, während
die Daten bei der Splay-Operation verarbeitet werden.
-
Daher
ist es möglich,
einen Prozeß aus
zwei Stufen gleichzeitig auszuführen,
das heißt,
eine Stufe zum Bestimmen einer Häufigkeit
des Auftretens von aufgetretenen Eingangsdaten, um ein Wahrscheinlichkeitsmodell
zu erstellen, um eine Codetabelle zu bilden, und eine Stufe zum
Zuordnen eines Codes zu jedem Eingangsdatum unter Bezugnahme auf
diese Codetabelle, wodurch eine Verarbeitungsrate bei der Datenkomprimierung
außerordentlich
erhöht
werden kann.
-
Bei
dem Datenkomprimierungsverfahren dieser Erfindung werden Zeichenketten
der obigen Eingangsdaten gesammelt, jeweilig benummert und in ein
Wörterbuch
eingetragen. Jede Zeichenkette entspricht einem Code. Der Code,
der einer Wörterbuchnummer
der längsten
koinzidierenden Zeichenkette entspricht, wird codiert und aktualisiert,
während
eine verlängerte
Zeichenkette einer zu codierenden Zeichenkette eingetragen wird,
bis sie eine vorbestimmte maximale Zeichenkettenlänge erreicht, um
den Code entsprechend der verlängerten
Zeichenkette einzutragen.
-
Gemäß dem Datenkomprimierungsverfahren
dieser Erfindung kann eine erweiterte Zeichenkette von einer Zeichenkette,
die zu codieren ist, eingetragen werden, wie oben erwähnt, bis
sie eine vorbestimmte maximale Zeichenkettenlänge erreicht, um einen Code
einzutragen, der der erweiterten Zeichenkette entspricht. Daher
ist es möglich,
Eingangsdaten als Zeichenkette nicht in einer Einheit von einem
Zeichen zu codieren, sondern in einer Einheit von einer Vielzahl
von Zeichen, wodurch eine Verarbeitungsrate bei der Datenkomprimierung
außerordentlich
erhöht
wird.
-
Die
obige Zeichenkette kann in das Wörterbuch
auf solch eine Weise eingetragen werden, daß das unmittelbar vorausgehende
Zeichen, das schon codiert worden ist, zuerst eingetragen wird und
eine Zeichenkette, die dem unmittelbar vorausgehenden Zeichen folgt,
dann codiert wird. Alternativ kann ein Code jedem einzelnen Zeichen
zugeordnet werden, und falls eine Zeichenkette, die dem unmittelbar
vorausgehenden Zeichen folgt, nicht in den Zeichenketten in dem
Wörterbuch
enthalten ist, die schon gesammelt worden sind, wird ein Code für das einzelne Zeichen
codiert und ausgegeben. Danach wird das codierte Zeichen, das dem
unmittelbar vorausgehenden Zeichen folgt, in das Wörterbuch
eingetragen.
-
Durch
den obigen Prozeß wird
die Zeichenkette, die in das Wörterbuch
einzutragen ist, ab dem unmittelbar vorausgehenden Zeichen, das
schon codiert worden ist, eingetragen, und dann wird eine Zeichenkette
codiert, die dem unmittelbar vorausgehenden Zeichen folgt. Falls
die Zeichenkette, die dem unmittelbar vorausgehenden Zeichen folgt,
nicht in den Zeichenketten in dem Wörterbuch enthalten ist, die schon
gesammelt worden sind, wird ein Code für das einzelne Zeichen codiert,
ausgegeben und aktualisiert. Danach wird das codierte Zeichen, das
dem unmittelbar vorausgehenden Zeichen folgt, in das Wörterbuch
eingetragen.
-
Deshalb
ist es unnötig,
eine Zeichenkette, die nicht in dem Wörterbuch enthalten ist, bei
jeder Gelegenheit einzutragen, so daß eine Verarbeitungsrate bei
der Datenkomprimierung außerordentlich
erhöht
werden kann.
-
Andererseits
dient ein Datendekomprimierungsverfahren dieser Erfindung dazu,
codierte Daten zu decodieren, die gemäß einem Verlauf von Eingangsdaten
in der Vergangenheit codiert worden sind, und umfaßt den folgenden
Schritt:
- (1) einen Kontextsammelschritt, um
Zeichenketten von decodierten Daten zu sammeln; und
- (2) einen Splay-Codierschritt, um einen Codebaum zu erzeugen
und zu aktualisieren, während der
Codebaum gemäß einer
Zeichenkette der decodierten Daten umgeordnet wird, die bei dem Kontextsammelschritt
erhalten wurde.
-
Bei
dem obigen Datendekomprimierungsverfahren gemäß dieser Erfindung werden Zeichenketten
von decodierten Daten bei dem Kontextsammelschritt gesammelt, und
ein Codebaum wird erzeugt und aktualisiert, während er gemäß der Zeichenkette der
decodierten Daten umgeordnet wird, die bei dem Kontextsammelprozeß erhalten
wurde.
-
Gemäß dem obenerwähnten Datendekomprimierungsverfahren
dieser Erfindung ist es deshalb möglich, einen Prozeß aus zwei
Stufen gleichzeitig auszuführen,
das heißt,
eine Stufe zum Bestimmen einer Häufigkeit
des Auftretens eines Codes der zu decodierenden Zeichenkette und
zum Erstellen eines Wahrscheinlichkeitsmodells, um eine Codetabelle
zu bilden, und eine Stufe zum Decodieren des Codes der zu decodierenden
Zeichenkette unter Bezugnahme auf diese Codetabelle, wodurch eine
Verarbeitungsrate bei der Datendekomprimierung außerordentlich
erhöht
werden kann.
-
Das
Datendekomprimierungsverfahren dieser Erfindung dient zum Decodieren
von Eingangsdaten, die gemäß einem
Verlauf von Eingangsdaten in der Vergangenheit codiert worden sind,
bei dem Zeichenketten von decodierten Daten gesammelt werden, jeweilig
benummert werden und in das Wörterbuch
eingetragen werden, ein Code mit jeder der decodierten Zeichenketten
in Entsprechung gebracht wird, eine Zeichenkette entsprechend einer
Wörterbuchnummer
codiert und aktualisiert wird, eine verlängerte Zeichenkette von der
Zeichenkette, die zu codieren ist, eingetragen wird, bis sie eine
vorbestimmte maximale Zeichenkettenlänge erreicht, und dann ein
Code eingetragen wird, der der erweiterten Zeichenkette entspricht.
-
Bei
dem obenerwähnten
Datendekomprimierungsverfahren dieser Erfindung ist es möglich, eine verlängerte Zeichenkette
von einer Zeichenkette, die zu codieren ist, einzutragen, bis sie
eine vorbestimmte maximale Zeichenkettenlänge erreicht, um einen Code
entsprechend der erweiterten Zeichenkette einzutragen. Es ist deshalb
möglich,
die Eingangsdaten nicht in einer Einheit von einem Zeichen zu dekomprimieren,
sondern als Zeichenkette in einer Einheit von einer Vielzahl von
Zeichen. Dadurch kann eine Verarbeitungsrate bei der Datendekomprimierung
außerordentlich
erhöht
werden.
-
Ferner
ist es bei dem Datendekomprimierungsverfahren dieser Erfindung möglich, eine
Zeichenkette in das Wörterbuch
auf solch eine Weise einzutragen, daß das unmittelbar vorausgehende Zeichen,
das decodiert worden ist, eingetragen wird und dann eine Zeichenkette
decodiert wird, die dem unmittelbar vorausgehenden Zeichen folgt.
Alternativ ist es möglich,
einen Splay-Code jedem einzelnen Zeichen zuzuordnen, und falls ein
Code eines einzelnen Zeichens in einer Zeichenkette, die dem unmittelbar
vorausgehenden Zeichen folgt und nicht in gesammelten Zeichenketten
in dem Wörterbuch
enthalten ist, codiert wird, wird der Code aktualisiert, und dann
wird das decodierte Zeichen, das dem unmittelbar vorausgehenden
Zeichen folgt, in das Wörterbuch
eingetragen.
-
Gemäß dem Datendekomprimierungsverfahren
dieser Erfindung wird eine Zeichenkette in das Wörterbuch auf solch eine Weise
eingetragen, daß das
unmittelbar vorausgehende Zeichen, das decodiert worden ist, zuerst
eingetragen wird und dann eine Zeichenkette decodiert wird, die
dem unmittelbar vorausgehenden Zeichen folgt. In der Praxis wird zu
Beginn ein Code jedem einzelnen Zeichen zugeordnet, falls ein Code
eines einzelnen Zeichens in einer Zeichenkette, die dem unmittelbar
vorausgehenden Zeichen folgt und nicht in gesammelten Zeichenketten
in dem Wörterbuch
enthalten ist, decodiert wird, wird der Code aktualisiert und wird
das decodierte Zeichen, das dem unmittelbar vorausgehenden Zeichen
folgt, in das Wörterbuch
eingetragen.
-
Gemäß dem Datendekomprimierungsverfahren
dieser Erfindung ist es deshalb unnötig, einen Code einer Zeichenkette,
die nicht in dem Wörterbuch
enthalten ist, bei jeder Gelegenheit einzutragen, so daß eine Verarbeitungsrate
bei der Datendekomprimierung noch mehr erhöht werden kann.
-
Das
Datenkomprimierungsverfahren gemäß dieser
Erfindung dient zum Komprimieren von Eingangsdaten durch das Codieren
der Eingangsdaten gemäß einem
Verlauf des Auftretens der Eingangsdaten in der Vergangenheit und
umfaßt
den folgenden Schritt:
- (1) einen Kontextsammelschritt,
um eine Kombination aus Eingangsdaten und einem Kontext zu halten,
der aus n kontinuierlichen Daten gebildet ist, denen die Eingangsdaten
folgen;
- (2) einen Codebaumhalteschritt, um Codebäume zu halten, die jeweils
für jeden
Kontext unabhängig
sind;
- (3) einen Codeausgabeschritt, um einen Code auszugeben, der
als einzigartige Daten gemäß einer
Gabelung eines Knotens definiert ist, der ein Gabelungspunkt auf
einem Weg von einer Wurzel, die ein oberes Ende eines Codebaums
bezeichnet, zu einem Blatt an dem Codebaum ist, in dem Daten gespeichert
sind, wenn Daten auftreten, die dem Kontext entsprechen, der bei
dem Kontextsammelschritt gehalten wurde; und
- (4) einen Codebaum-Umordnungsschritt, um ein Blatt der Daten
gegen ein Blatt anderer Daten oder einen internen Knoten auszutauschen.
-
Das
Datenkomprimierungsverfahren dieser Erfindung funktioniert wie folgt:
- (1) Halten der Eingangsdaten und des Kontextes, der
aus den n kontinuierlichen Daten gebildet ist, denen die Eingangsdaten
folgen, bei dem Kontextsammelschritt;
- (2) Halten von Codebäumen,
die jeweils für
jeden Kontext unabhängig
sind, bei dem Codebaumhalteschritt;
- (3) Ausgeben, bei dem Codeausgabeschritt, eines Codes, der als
einzigartige Daten gemäß der Gabelung
eines Knotens definiert ist, der ein Gabelungspunkt auf einem Weg
von einer Wurzel, die ein oberes Ende eines Codebaums bezeichnet,
zu einem Blatt an dem Codebaum ist, in dem Daten gespeichert sind,
wenn Daten auftreten, die dem Kontext entsprechen, der bei dem Kontextsammelschritt
gehalten wurde; und
- (4) Austauschen, bei dem Codebaum-Umordnungsschritt, eines Blattes
der Daten gegen ein Blatt anderer Daten oder einen internen Knoten nach
einem Prozeß bei
dem Codeausgabeschritt.
-
Das
obige Datenkomprimierungsverfahren dieser Erfindung gestattet es,
einen Prozeß aus
zwei Stufen gleichzeitig auszuführen,
das heißt,
eine Stufe zum Bestimmen einer Auftrittshäufigkeit von Eingangsdaten,
um ein Wahrscheinlichkeitsmodell zu erstellen und einen Code jedem
Datum zuzuordnen, um eine Codetabelle zu bilden, und eine Stufe
zum Ausgeben eines Codes eines zu codierenden Zeichens unter Bezugnahme
auf diese Codetabelle. Dadurch kann eine Verarbeitungsrate bei der
Datenkomprimierung außerordentlich
erhöht
werden. Dadurch kann ferner das enorme Volumen einer arithmetischen
Operation, um das Wahrscheinlichkeitsmodell neu zu erstellen, das
bei jeder Dateneingabe bereits erstellt worden ist, reduziert werden,
wodurch die Verarbeitungsrate bei der Datenkomprimierung weiter
erhöht
werden kann. Des weiteren kann ein Code von Daten mit einer geringeren
Bitanzahl ausgedrückt
werden, falls dieselben Daten wie Eingangsdaten, die in der Vergangenheit
aufgetreten sind, häufiger
auftreten, so daß ein
Effekt der Datenkomprimierung außerordentlich verbessert werden kann.
-
Das
Datenkomprimierungsverfahren dieser Erfindung dient zum Komprimieren
von Eingangsdaten durch das Codieren der Eingangsdaten gemäß einem
Verlauf des Auftretens der Eingangsdaten in der Vergangenheit und
umfaßt
die folgenden Schritte:
- (1) einen Kontextsammelschritt,
um Eingangsdaten und einen Kontext zu halten, der aus n kontinuierlichen
Daten gebildet ist, denen die Eingangsdaten folgen;
- (2) einen Codebaumhalteschritt, um Codebäume zu halten, die jeweils
für jeden
Kontext unabhängig
sind;
- (3) einen Codeausgabeschritt, um einen Code auszugeben, der
als einzigartige Daten gemäß einer
Gabelung eines Knotens definiert ist, der einen Gabelungspunkt auf
einem Weg von einer Wurzel, die ein oberes Ende eines Codebaums ist,
zu einem Blatt an dem Codebaum bezeichnet, in dem Daten gespeichert
sind, wenn Daten auftreten, die dem Kontext entsprechen, der bei
dem Kontextsammelschritt gehalten wurde;
- (4) einen Codebaum-Umordnungsschritt, um ein Blatt der Daten
gegen ein Blatt anderer Daten oder einen internen Knoten nach einem
Prozeß bei
dem Codeausgabeschritt auszutauschen;
- (5) einen Kontextunterscheidungsschritt, um zu unterscheiden,
ob die Kombination aus den Eingangsdaten und dem Kontext bei dem
Kontextsammelschritt gehalten wurde oder nicht;
- (6) einen Escape-Code-Halteschritt, um an dem Codebaum ein Blatt
zu halten, in dem ein Escape-Code im voraus eingetragen wurde, der
als Daten definiert ist, die bedeuten, daß keine Daten gespeichert sind;
und
- (7) einen Schritt, um einen Escape-Code auszugeben, wenn die
Kombination aus den Eingangsdaten und dem Kontext in einem Verlauf
bei den Kontextsammelschritten nicht gehalten wurde, und den Kontext
der Daten zu verkürzen,
bis eine Kombination erhalten wird, die bei dem Kontextsammelschritt
gehalten wurde.
-
Das
obige Datenkomprimierungsverfahren dieser Erfindung funktioniert
wie folgt:
- (1) Halten einer Kombination aus
Eingangsdaten und einem Kontext, der aus n kontinuierlichen Daten
gebildet ist, denen die Eingangsdaten folgen, bei dem Kontextsammelschritt;
- (2) Halten von Codebäumen,
die jeweils für
jeden Kontext unabhängig
sind, bei dem Codebaumhalteschritt;
- (3) Ausgeben, bei dem Codeausgabeschritt, eines Codes, der als
einzigartige Daten gemäß der Gabelung
eines Knotens definiert ist, der ein Gabelungspunkt auf einem Weg
von einer Wurzel, die ein oberes Ende eines Codebaums bezeichnet,
zu einem Blatt an dem Codebaum ist, in dem Daten gespeichert sind,
wenn Daten auftreten, die dem Kontext entsprechen, der bei dem Kontextsammelschritt
gehalten wurde;
- (4) Austauschen, bei dem Codebaum-Umordnungsschritt, eines Blattes
der Daten gegen ein Blatt anderer Daten oder einen Knoten nach einer Operation
bei dem Codeausgabeschritt;
- (5) Unterscheiden, ob die Kombination aus den Eingangsdaten
und dem Kontext bei dem Kontextsammelschritt gehalten wurde oder
nicht;
- (6) Halten, an einem Codebaum, eines Blattes, in dem ein Escape-Code,
der als Daten definiert ist, die bedeuten, daß keine Daten gespeichert sind, bei
dem Escape-Code-Halteschritt im voraus eingetragen wurde; und
- (7) Ausgeben eines Escape-Codes, wenn die Kombination aus den
Eingangsdaten und dem Kontext in einem bei dem Kontextsammelschritt (1)
gehaltenen Verlauf nicht gehalten wurde, und Verkürzen des
Kontextes der Daten, bis eine Kombination erhalten wird, die bei
dem Kontextsammelschritt gehalten wurde.
-
Gemäß dem Datenkomprimierungsverfahren
dieser Erfindung ist es nicht erforderlich, den gesamten Verlauf
der Kombina tion aus den Eingangsdaten und dem Kontext im voraus
einzutragen. Dies ist effektiv, um eine Zeitperiode zu verkürzen, die
benötigt
wird, bis die Kombination aus den Eingangsdaten und dem Kontext
erhalten wird, so daß eine
Verarbeitungsrate bei der Datenkomprimierung außerordentlich erhöht werden
kann.
-
Das
Datenkomprimierungsverfahren dieser Erfindung dient zum Komprimieren
von Eingangsdaten durch das Codieren der Eingangsdaten gemäß einem
Verlauf des Auftretens der Eingangsdaten in der Vergangenheit und
umfaßt
die folgenden Schritte:
- (1) einen Kontextsammelschritt,
um eine Kombination aus Eingangsdaten und einem Kontext zu halten,
der aus n kontinuierlichen Daten gebildet ist, denen die Eingangsdaten
folgen;
- (2) einen Codebaumhalteschritt, um Codebäume zu halten, die jeweils
für jeden
Kontext unabhängig
sind;
- (3) einen Codeausgabeschritt, um einen Code auszugeben, der
als einzigartige Daten gemäß einer
Gabelung eines Knotens definiert ist, der ein Gabelungspunkt auf
einem Weg von einer Wurzel, die ein oberes Ende eines Codebaums
bezeichnet, zu einem Blatt an dem Codebaum ist, in dem Daten gespeichert
sind, wenn Daten auftreten, die dem Kontext entsprechen, der bei
dem Kontextsammelschritt gehalten wurde;
- (4) einen Codebaum-Umordnungsschritt, um ein Blatt der Daten
gegen ein Blatt anderer Daten oder einen internen Knoten nach einem
Prozeß bei
dem Codeausgabeschritt auszutauschen;
- (5) einen Kontextunterscheidungsschritt, um zu unterscheiden,
ob die Kombination aus den Eingangsdaten und dem Kontext bei dem
Kontextsammelschritt gehalten wurde oder nicht;
- (6) einen Escape-Code-Halteschritt, um an dem Codebaum ein Blatt
zu halten, in dem ein Escape-Code im voraus eingetra gen wurde, der
als Daten definiert ist, die bedeuten, daß keine Daten gespeichert sind;
- (7) einen Kontext-Neueintragschritt, um die Kombination aus
den Eingangsdaten und dem Kontext bei dem Kontextsammelschritt neu
einzutragen, falls die Kombination aus den Eingangsdaten und dem
Kontext in einem Verlauf bei dem Kontextsammelschritt nicht gehalten
wurde;
- (8) einen Codebaum-Neueintragschritt, um Daten in einen Codebaum,
der dem Kontext entspricht, neu einzutragen, falls die Kombination
aus den Eingangsdaten und dem Kontext in einem Verlauf des Kontextsammelschrittes
nicht gehalten wurde; und
- (9) einen Prozeß,
um einen Code eines Escape-Codes auszugeben, falls die Kombination
aus den Eingangsdaten und dem Kontext in dem Verlauf des Kontextsammelschrittes
nicht gehalten wurde, und gleichzeitig die Kombination aus den Eingangsdaten
und dem Kontext in den Verlauf einzutragen, die Daten in einen Codebaum
einzutragen, der dem Kontext entspricht, und einen Prozeß zu wiederholen,
um den Kontext der Daten zu verkürzen,
bis eine Kombination erhalten wird, die bei dem Kontextsammelschritt
gehalten wurde.
-
Das
obige Datenkomprimierungsverfahren dieser Erfindung funktioniert
wie folgt:
- (1) Halten einer Kombination aus
Eingangsdaten und einem Kontext, der aus n kontinuierlichen Daten
gebildet ist, denen die Eingangsdaten folgen, bei dem Kontextsammelschritt;
- (2) Halten von Codebäumen,
die jeweils für
jeden Kontext unabhängig
sind, bei dem Codebaumhalteschritt;
- (3) Ausgeben, bei dem Codeausgabeschritt, eines Codes, der als
einzigartige Daten gemäß der Gabelung
eines Knotens definiert ist, der ein Gabelungspunkt auf einem Weg
von einer Wurzel, die ein oberes Ende eines Codebaums bezeich net,
zu einem Blatt an dem Codebaum ist, in dem Daten gespeichert sind,
wenn Daten auftreten, die dem Kontext entsprechen, der bei dem Kontextsammelschritt
gehalten wurde;
- (4) Austauschen, bei dem Codebaum-Umordnungsschritt, eines Blattes
der Daten gegen ein Blatt anderer Daten oder einen internen Knoten nach
einem Prozeß bei
dem Codeausgabeschritt;
- (5) Unterscheiden, bei dem Kontextunterscheidungsschritt, ob
die Kombination aus den Eingangsdaten und dem Kontext bei dem Kontextsammelprozeß gehalten
wurde oder nicht;
- (6) Halten, bei dem Escape-Code-Halteschritt, eines Blattes,
in dem ein Escape-Code im voraus eingetragen wurde, der als Daten
definiert ist, die bedeuten, daß keine
Daten gespeichert sind;
- (7) Eintragen, bei dem Kontext-Neueintragschritt, einer Kombination
aus Eingangsdaten und einem Kontext bei dem Kontextsammelschritt,
falls die Kombination aus den Eingangsdaten und dem Kontext in einem
Verlauf bei dem Kontextsammelschritt nicht gehalten wurde;
- (8) Neueintragen, bei dem Codebaum-Neueintragschritt, der Daten
in einen Codebaum, der dem Kontext entspricht, falls die Kombination
aus den Eingangsdaten und dem Kontext in dem Verlauf bei dem Kontextsammelschritt
nicht gehalten wurde; und
- (9) Ausgeben eines Codes eines Escape-Codes, falls die Kombination
aus den Eingangsdaten und dem Kontext in dem Verlauf bei dem Kontextsammelschritt
nicht gehalten wurde, und gleichzeitiges Eintragen der Kombination
aus den Eingangsdaten und dem Kontext in dem Verlauf, Eintragen
der Daten in einen Codebaum, der dem Kontext entspricht, und Wiederholen
eines Prozesses, um den Kontext der Daten zu verkürzen, bis
eine Kombination erhalten wird, die bei dem Kontextsammelschritt
gehalten wurde.
-
Gemäß dem obigen
Datenkomprimierungsverfahren dieser Erfindung ist es möglich, Eingangsdaten,
die in der Vergangenheit nicht eingetragen worden sind, neu einzutragen
und diese neu eingetragenen Daten in einem frühen Stadium bei dem nächsten Codierprozeß zu codieren,
so daß ein
Effekt der Datenkomprimierung mit weiter voranschreitendem Codierprozeß mehr verstärkt werden
kann.
-
Das
Datenkomprimierungsverfahren dieser Erfindung dient zum Komprimieren
von Eingangsdaten durch das Codieren der Eingangsdaten gemäß einem
Verlauf des Auftretens der Eingangsdaten in der Vergangenheit und
umfaßt
die folgenden Schritte:
- (1) einen Kontextsammelschritt,
um eine Kombination aus Eingangsdaten und einem Kontext zu halten,
der aus n kontinuierlichen Daten gebildet ist, denen die Eingangsdaten
folgen;
- (2) einen Codebaumhalteschritt, um Codebäume zu halten, die jeweils
für jeden
Kontext unabhängig
sind;
- (3) einen Codeausgabeschritt, um einen Code auszugeben, der
als einzigartige Daten gemäß einer
Gabelung eines Knotens definiert ist, der ein Gabelungspunkt auf
einem Weg von einer Wurzel, die ein oberes Ende eines Codebaums
bezeichnet, zu einem Blatt an dem Codebaum ist, in dem Daten gespeichert
sind, wenn Daten auftreten, die dem Kontext entsprechen, der bei
dem Kontextsammelschritt gehalten wurde;
- (4) einen Codebaum-Umordnungsschritt, um ein Blatt der Daten
gegen ein Blatt anderer Daten oder einen internen Knoten nach einem
Prozeß bei
dem Codeausgabeschritt auszutauschen;
- (5) einen Kontextunterscheidungsschritt, um zu unterscheiden,
ob die Kombination aus den Eingangsdaten und dem Kontext bei dem
Kontextsammelschritt gehalten wurde oder nicht;
- (6) einen Escape-Code-Halteschritt, um an dem Codebaum ein Blatt
zu halten, in dem ein Escape-Code im voraus gespei chert wurde, der
als Daten definiert ist, die bedeuten, daß keine Daten eingetragen sind;
- (7) einen Kontext-Neueintragschritt, um die Kombination aus
den Eingangsdaten und dem Kontext bei dem Kontextsammelschritt neu
einzutragen, falls die Kombination aus den Eingangsdaten und dem
Kontext in einem Verlauf bei dem Kontextsammelschritt nicht gehalten
wurde;
- (8) einen Codebaum-Neueintragschritt, um Daten in einen Codebaum,
der dem Kontext entspricht, neu einzutragen, falls die Kombination
aus den Eingangsdaten und dem Kontext bei dem Kontextsammelschritt
nicht gehalten wurde; und
- (9) einen Schritt, um nur eine Kombination aus einem unmittelbar
vorausgehenden Kontext, für den
entschieden wurde, in dem Verlauf enthalten sein zu müssen, und
jenen Daten bei dem Kontext-Neueintragschritt und dem Codebaum-Neueintragschritt
einzutragen.
-
Das
obige Datenkomprimierungsverfahren dieser Erfindung funktioniert
wie folgt:
- (1) Halten einer Kombination aus
Eingangsdaten und einem Kontext, der aus n kontinuierlichen Daten
gebildet ist, denen die Eingangsdaten folgen, bei dem Kontextsammelschritt;
- (2) Halten von Codebäumen,
die jeweils für
jeden Kontext unabhängig
sind, bei dem Codebaumhalteschritt;
- (3) Ausgeben, bei dem Codeausgabeschritt, eines Codes, der als
einzigartige Daten gemäß der Gabelung
eines Knotens definiert ist, der ein Gabelungspunkt auf einem Weg
von einer Wurzel, die ein oberes Ende eines Codebaums bezeichnet,
zu einem Blatt an einem Codebaum ist, in dem Daten gespeichert sind,
wenn Daten auftreten, die dem Kontext entsprechen, der bei dem Kontextsammelschritt
gehalten wurde;
- (4) Austauschen, bei dem Codebaum-Umordnungsschritt, eines Blattes
der Daten gegen ein Blatt anderer Daten oder einen internen Knoten nach
einem Prozeß bei
dem Codeausgabeschritt;
- (5) Unterscheiden, bei dem Kontextunterscheidungsschritt, ob
die Kombination aus den Eingangsdaten und dem Kontext bei dem Kontextsammelprozeß gehalten
wurde oder nicht;
- (6) Halten, bei dem Escape-Code-Halteschritt, eines Blattes,
in dem ein Escape-Code im voraus eingetragen wurde, der als Daten
definiert ist, die bedeuten, daß keine
Daten wiederhergestellt wurden, an dem Codebaum;
- (7) Neueintragen, bei dem Kontext-Neueintragschritt, der Kombination
aus den Eingangsdaten und dem Kontext bei dem Kontextsammelschritt, falls
die Kombination aus den Eingangsdaten und dem Kontext in einem Verlauf
bei dem Kontextsammelschritt nicht gehalten wurde;
- (8) Neueintragen, bei dem Codebaum-Neueintragschritt, der Daten
in einen Codebaum, der dem Kontext entspricht, falls die Kombination
aus den Eingangsdaten und dem Kontext in dem Verlauf bei dem Kontextsammelschritt
nicht gehalten wurde; und
- (9) Eintragen, bei dem obigen Kontext-Neueintragschritt (7)
und dem Codebaum-Neueintragschritt (8), einer Kombination nur aus
einem Kontext, dem Daten folgen und für den entschieden wurde, in
dem Verlauf enthalten sein zu müssen, und
jenen Daten.
-
Gemäß dem obigen
Datenkomprimierungsverfahren dieser Erfindung ist es nicht erforderlich, jede
Kombination aus dem Kontext und Daten einzutragen, für die entschieden
worden ist, in dem Verlauf der Eingangsdaten in der Vergangenheit
nicht gespeichert sein zu müssen,
so daß es
möglich
ist, den Datenkomprimierungsprozeß außerordentlich zu verbessern.
Es ist ferner möglich,
einen Code nur für solche Daten
zuzuordnen (einzutragen), die tatsächlich häufig auftreten, so daß eine Effektivität der Datenkomprimierung
außerordentlich
verbessert werden kann.
-
Indessen
dient das Datendekomprimierungsverfahren dieser Erfindung zum Dekomprimieren
von codierten Daten, die durch das Codieren von Eingangsdaten gemäß einem
Verlauf der Eingangsdaten in der Vergangenheit erhalten wurden,
und umfaßt
die folgenden Schritte:
- (1) einen Kontextsammelschritt,
um einen Verlauf einer Kombination aus decodierten Daten und einem
Kontext zu halten;
- (2) einen Codebaumhalteschritt, um Codebäume zu halten, die jeweils
für jeden
Kontext unabhängig
sind;
- (3) einen Codebaumbestimmungsschritt, um einen Codebaum der
Daten von einem Kontext von Daten zu bestimmen, die bis unmittelbar
zuvor decodiert worden sind;
- (4) einen Decodierschritt, um Daten von dem Codebaum, der bei
dem Codebestimmungsschritt bestimmt wurde, und einen Code der Daten
zu decodieren; und
- (5) einen Codebaum-Umordnungsschritt, um ein Blatt an dem Codebaum,
in dem Daten gespeichert sind, gegen ein anderes Blatt oder einen
internen Knoten, der ein Gabelungspunkt an dem Codebaum ist, unter
Verwendung desselben Mittels wie in einem Codierer nach dem Decodieren bei
dem Decodierschritt auszutauschen.
-
Das
obige Datendekomprimierungsverfahren dieser Erfindung funktioniert
wie folgt:
- (1) Halten eines Verlaufs einer
Kombination aus decodierten Daten und einem Kontext bei dem Kontextsammelschritt;
- (2) Halten von Codebäumen,
die jeweils für
jeden Kontext unabhängig
sind, bei dem Codebaumhalteschritt;
- (3) Bestimmen eines Codebaums von Daten von einem Kontext von
Daten, die bis unmittelbar zuvor decodiert worden sind, bei dem
Codebaumbestimmungsschritt;
- (4) Decodieren der Daten von dem Codebaum, der bei dem Codebaumbestimmungsschritt
bestimmt wurde, und eines Codes der Daten bei dem Decodierschritt;
und
- (5) Austauschen, nach dem Codieren bei dem Codierschritt, eines
Blattes an dem Codebaum, in dem Daten gespeichert sind, gegen ein
anderes Blatt oder einen internen Knoten, der ein Gabelungspunkt
ist, unter Verwendung desselben Mittels wie in einem Codierer bei
dem Codebaum-Umordnungsschritt.
-
Gemäß dem obigen
Datenwiederherstellungsverfahren dieser Erfindung ist es möglich, einen Prozeß aus zwei
Stufen gleichzeitig auszuführen, das
heißt,
eine Stufe zum Bestimmen einer Auftrittshäufigkeit von Eingangsdaten,
um ein Wahrscheinlichkeitsmodell zu erstellen und einen Code jedem Eingangsdatum
zuzuordnen, um eine Codetabelle zu bilden, und eine Stufe zum Ausgeben
eines decodierten Zeichens unter Bezugnahme auf diese Codetabelle,
so daß eine
Verarbeitungsrate bei der Datendekomprimierung außerordentlich
erhöht
werden kann. Es ist auch möglich,
ein enormes Volumen einer arithmetischen Operation wegzulassen,
um das Wahrscheinlichkeitsmodell neu zu erstellen, das bei jeder
Dateneingabe bereits erstellt worden ist, so daß eine Verarbeitungsrate bei
der Datendekomprimierung mehr erhöht werden kann. Es ist ferner
möglich, einen
Code von Daten mit einer geringeren Anzahl von Bits auszudrücken, wenn
derselbe Code von Daten wie jener von Eingangsdaten, die in der
Vergangenheit aufgetreten sind, häufiger auftritt, so daß ein Effekt
der Datendekomprimierung außerordentlich verstärkt werden
kann.
-
Das
Datendekomprimierungsverfahren dieser Erfindung dient zum Dekomprimieren
von codierten Daten, die gemäß einem
Verlauf der Eingangsdaten in der Vergangenheit codiert worden sind,
und umfaßt
die folgenden Schritte:
- (1) einen Kontextsammelschritt,
um einen Verlauf einer Kombination aus decodierten Daten und einem
Kontext zu halten;
- (2) einen Codebaumhalteschritt, um Codebäume zu halten, die jeweils
für jeden
Kontext unabhängig
sind;
- (3) einen Codebaumbestimmungsschritt, um einen Codebaum der
Daten von einem Kontext von Daten zu bestimmen, die bis unmittelbar
zuvor decodiert worden sind;
- (4) einen Decodierschritt, um die Daten von einem Codebaum,
der bei dem Codebaumbestimmungsschritt bestimmt wurde, und einen
Code der Daten zu decodieren;
- (5) einen Codebaum-Umordnungsschritt, um ein Blatt an dem Codebaum,
in dem Daten gespeichert sind, gegen ein anderes Blatt oder einen
internen Knoten, der ein Gabelungspunkt an dem Codebaum ist, unter
Verwendung desselben Mittels wie in einem Codierer nach dem Decodieren bei
dem Decodierschritt auszutauschen; und
- (6) einen Schritt, um einen Escape-Code, der als Daten definiert
ist, die bedeuten, daß keine
Daten gespeichert sind, in Codebäumen
einzutragen, die jeweils jedem Kontext entsprechen, und falls der
Escape-Code beim Decodieren decodiert wird, einen Prozeß zum Verkürzen einer
Länge des
Kontextes zu wiederholen, bis ein Code ohne den Escape-Code decodiert
ist.
-
Das
obige Datendekomprimierungsverfahren dieser Erfindung funktioniert
wie folgt:
- (1) Halten eines Verlaufs einer
Kombination aus decodierten Daten und einem Kontext bei dem Kontextsammelschritt;
- (2) Halten von Codebäumen,
die jeweils für
jeden Kontext unabhängig
sind, bei dem Codebaumhalteschritt;
- (3) Bestimmen eines Codebaums von Daten von einem Kontext von
Daten, die bis unmittelbar zuvor decodiert worden sind, bei dem
Codebaumbestimmungsschritt;
- (4) Decodieren der Daten von dem Codebaum, der bei dem Codebaumbestimmungsschritt
bestimmt wurde, und eines Codes der Daten bei dem Decodierschritt;
- (5) Austauschen, nach dem Codieren bei dem Codierschritt, eines
Blattes an dem Codebaum, in dem Daten gespeichert sind, gegen ein
anderes Blatt oder einen internen Knoten an dem Codebaum, der ein
Gabelungspunkt ist, unter Verwendung desselben Mittels wie in einem
Codierer bei dem Codebaum-Umordnungsschritt;
und
- (6) Eintragen eines Escape-Codes im voraus, der als Daten definiert
ist, die bedeuten, daß keine Daten
gespeichert sind, in jedem Codebaum, der jedem Kontext entspricht,
und, falls ein Escape-Code beim Decodieren decodiert wird, Wiederholen
eines Prozesses, um eine Länge
des Kontextes zu verkürzen,
bis ein Code ohne den Escape-Code codiert ist.
-
Gemäß dem Datendekomprimierungsverfahren
dieser Erfindung ist es nicht erforderlich, im voraus den gesamten
Verlauf der Kombination aus den decodierten Daten und dem Kontext
einzutragen, so daß eine
Verarbeitungsrate bei der Datendekomprimierung außerordentlich
erhöht
werden kann. Es ist auch möglich,
eine Zeitperiode zu verkürzen, die
benötigt
wird, bis die Kombination aus den decodierten Daten und dem Kontext
erhalten wird, so daß eine
Verarbeitungsrate bei der Datenwiederherstellung noch mehr erhöht werden
kann.
-
Das
Datendekomprimierungsverfahren dieser Erfindung dient zum Dekomprimieren
von codierten Daten, die durch das Codieren von Eingangsdaten gemäß einem
Verlauf der Eingangsdaten in der Vergangenheit erhalten wurden,
und umfaßt
die folgenden Schritte:
- (1) einen Kontextsammelschritt,
um einen Verlauf einer Kombination aus decodierten Daten und einem
Kontext zu halten;
- (2) einen Codebaumhalteschritt, um Codebäume zu halten, die jeweils
für jeden
Kontext unabhängig
sind;
- (3) einen Codebaumbestimmungsschritt, um einen Codebaum der
Daten von einem Kontext von Daten zu bestimmen, die bis unmittelbar
zuvor decodiert worden sind;
- (4) einen Decodierschritt, um die Daten von dem Codebaum, der
bei dem Codebestimmungsschritt bestimmt wurde, und einen Code der
Daten zu decodieren;
- (5) einen Codebaum-Umordnungsschritt, um ein Blatt an dem Codebaum,
in dem Daten gespeichert sind, gegen ein anderes Blatt oder einen
internen Knoten, der ein Gabelungspunkt an dem Codebaum ist, unter
Verwendung desselben Mittels wie in einem Codierer nach dem Decodieren bei
dem Decodierprozeß auszutauschen;
- (6) einen Kontext-Neueintragschritt, um die Daten bei dem Kontextsammelschritt
neu einzutragen;
- (7) einen Codebaum-Neueintragschritt, um die decodierten Daten
in einen Codebaum, der dem Kontext entspricht, neu einzutragen;
- (8) einen Schritt, um den Kontext-Neueintragschritt und den
Codebaum-Neueintragschritt auszuführen, wenn ein Escape-Code
decodiert wird, der als Daten definiert ist, die bedeuten, daß keine Daten
gespeichert sind, und einen Prozeß zum Verkürzen einer Länge des
Kontextes zu wiederholen, bis ein Code ohne den Escape-Code codiert
ist.
-
Das
obige Datenwiederherstellungsverfahren dieser Erfindung funktioniert
wie folgt:
- (1) Halten eines Verlaufs einer
Kombination aus decodierten Daten und einem Kontext bei dem Kontextsammelschritt;
- (2) Halten von Codebäumen,
die jeweils für
jeden Kontext unabhängig
sind, bei dem Codebaumhalteschritt;
- (3) Bestimmen eines Codebaums von Daten von einem Kontext von
Daten, die bis unmittelbar zuvor decodiert worden sind, bei dem
Codebaumbestimmungsschritt;
- (4) Decodieren der Daten von dem Codebaum, der bei dem Codebaumbestimmungsschritt
bestimmt wurde, und eines Codes der Daten bei dem Decodierschritt;
- (5) Austauschen, nach dem Codieren bei dem Codierschritt, eines
Blattes an dem Codebaum, in dem Daten gespeichert sind, gegen ein
anderes Blatt oder einen internen Knoten an dem Codebaum, der ein
Gabelungspunkt ist, unter Verwendung desselben Mittels wie in einem
Codierer bei dem Codebaum-Umordnungsschritt;
- (6) Neueintragen, bei dem Kontext-Neueintragschritt, der Daten
bei dem Kontextsammelschritt;
- (7) Neueintragen der codierten Daten in einen Codebaum, der
dem Kontext entspricht, bei dem Codebaum-Neueintragschritt; und
- (8) Ausführen,
wenn ein Escape-Code decodiert wird, der als Daten definiert ist,
die bedeuten, daß keine
Daten eingetragen sind, des obigen Kontext-Neuspeicherschrittes
(6) und des Codebaum-Neueintragschrittes (7) und Wiederholen eines
Prozesses, um eine Länge
des Kontextes zu verkürzen,
bis ein Code ohne den Escape-Code decodiert ist.
-
Gemäß dem obigen
Datendekomprimierungsverfahren dieser Erfindung ist es möglich, codierte
Daten, die in der Vergangenheit nicht eingetragen worden sind, neu
einzutragen, um somit die neu eingetragenen decodierten Daten in
einem frühen Stadium
bei dem nächsten
Decodierprozeß zu
decodieren, so daß ein
Effekt der Datendekomprimierung mit weiterem Voranschreiten des
Decodierprozesses mehr verbessert werden kann.
-
Das
Datendekomprimierungsverfahren dieser Erfindung dient zum Dekomprimieren
von codierten Daten, die durch das Codieren von Eingangsdaten gemäß einem
Verlauf der Eingangsdaten in der Vergangenheit erhalten wurden,
und umfaßt
die folgenden Schritte:
- (1) einen Kontextsammelschritt,
um einen Verlauf einer Kombination aus decodierten Daten und einem
Kontext zu halten;
- (2) einen Codebaumhalteschritt, um Codebäume zu halten, die jeweils
für jeden
Kontext unabhängig
sind;
- (3) einen Codebaumbestimmungsschritt, um einen Codebaum der
Daten von einem Kontext von Daten zu bestimmen, die bis unmittelbar
zuvor decodiert worden sind;
- (4) einen Decodierschritt, um die Daten von dem Codebaum, der
bei dem Codebaumbestimmungsschritt bestimmt wurde, und einen Code der
Daten zu decodieren;
- (5) einen Codebaum-Umordnungsschritt, um ein Blatt an dem Codebaum,
in dem Daten gespeichert sind, gegen ein anderes Blatt oder einen
internen Knoten, der ein Gabelungspunkt an dem Codebaum ist, unter
Verwendung desselben Mittels wie in einem Codierer nach dem Decodieren bei
dem Decodierprozeß auszutauschen;
- (6) einen Kontext-Neueintragschritt, um die Daten bei dem Kontextsammelschritt
neu einzutragen;
- (7) einen Codebaum-Neueintragschritt, um die decodierten Daten
in einen Codebaum, der dem Kontext entspricht, neu einzutragen;
und
- (8) in einem Prozeß,
bis ein Code ohne den Escape-Code codiert ist, der Daten definiert,
die bedeuten, daß keine
Daten gespeichert sind, falls der Escape-Code auch nur einmal codiert
wird, Ausführen
eines Neueintragprozesses nur an einem Kontext unmittelbar vor dem
Decodieren eines Codes ohne den Escape-Code bei dem Kontext-Neueintragschritt
und dem Codebaum-Eintragschritt.
-
Das
obige Datendekomprimierungsverfahren dieser Erfindung funktioniert
wie folgt:
- (1) Halten eines Verlaufs einer
Kombination aus decodierten Daten und einem Kontext bei dem Kontextsammelschritt;
- (2) Halten von Codebäumen,
die jeweils für
jeden Kontext unabhängig
sind, bei dem Codebaumhalteschritt;
- (3) Bestimmen eines Codebaums von Daten von einem Kontext von
Daten, die bis unmittelbar zuvor decodiert worden sind, bei dem
Codebaumbestimmungsschritt;
- (4) Decodieren von Daten von dem Codebaum, der bei dem Codebaumbestimmungsschritt
bestimmt wurde, und eines Codes der Daten bei dem Decodierschritt;
- (5) Austauschen, nach dem Codieren bei dem Codierschritt, eines
Blattes an dem Codebaum, in dem Daten gespeichert sind, gegen ein
anderes Blatt oder einen internen Knoten an dem Codebaum, der ein
Gabelungspunkt ist, unter Verwendung desselben Mittels wie in einem
Codierer bei dem Codebaum-Umordnungsschritt;
- (6) Neueintragen, bei dem Kontext-Neueintragschritt, der Daten
bei dem Kontextsammelschritt;
- (7) Neueintragen der codierten Daten in einen Codebaum, der
dem Kontext entspricht, bei dem Codebaum-Neueintragschritt; und
- (8) Ausführen,
falls der Escape-Code in einem Prozeß auch nur einmal codiert wird,
bis ein Code ohne den Escape-Code decodiert ist, der als Daten definiert
ist, die bedeuten, daß keine
Daten gespeichert sind, eines Neueintragschrittes nur an einem Kontext
unmittelbar vor dem Decodieren eines Codes ohne den Escape-Code
bei dem Kontext-Neueintragschritt und dem Codebaum-Neueintragschritt.
-
Gemäß dem obigen
Datendekomprimierungsverfahren dieser Erfindung wird ein Neueintragprozeß nur an
dem Kontext unmittelbar vor dem Decodieren eines Codes ohne den
Escape-Code bei dem
Kontext-Neueintragschritt und dem Codebaum-Neueintragschritt ausgeführt, so
daß es
nicht erforderlich ist, alle Kombinationen aus einem Kontext und
Daten einzutragen, wofür
die Entscheidung getroffen worden ist, in dem Verlauf der Eingangsdaten
in der Vergangenheit nicht enthalten sein zu müssen, wodurch eine Verarbeitungsrate
der Datenkomprimierung außerordentlich
erhöht
werden kann und eine Effektivität
bei der Datendekomprimierung außerordentlich
verbessert werden kann, da nur für
Daten ein Code vergeben (eingetragen) wird, die tatsächlich häufig auftreten.
-
1 ist
ein Blockdiagramm, das einen Aspekt einer Datenkomprimierungsvorrichtung
gemäß dieser
Erfindung zeigt. Die Datenkomprimierungsvorrichtung von 1 komprimiert
Eingangsdaten durch das Codieren der Eingangsdaten gemäß einem
Verlauf des Auftretens der in der Vergangenheit auftretenden Eingangsdaten.
-
In 1 bezeichnet
Bezugszeichen 100 ein Vordaten-Haltemittel, bezeichnet 101 ein
Verlaufshaltemittel, bezeichnet 102 ein Codebaumhaltemittel, bezeichnet 103 ein
Codebaumbestimmungsmittel, bezeichnet 104 ein Codeausgabemittel,
bezeichnet 105 ein Codebaum-Umordnungsmittel und bezeichnet 106 ein
Vordaten-Aktualisierungsmittel.
-
Das
Vordaten-Haltemittel 100 hält einen Kontext, der aus n
Eingangsdaten gebildet ist, die bis unmittelbar vor der Eingabe
der Eingangsdaten eingegeben worden sind. Das Verlaufshaltemittel 101 hält eine
Kombination aus Eingangsdaten und einem Kontext. Das Codebaumhaltemittel
hält Codebäume, die
jeweils für
jeden Kontext unabhängig
sind.
-
Das
Codebaumbestimmungsmittel 103 bestimmt einen Codebaum von
Daten von den unmittelbar vorausgehenden Eingangsdaten, die in dem
Vordaten-Haltemittel 100 gehalten werden. Das Codeausgabemittel 104 gibt
einzigartige Daten gemäß einer
Gabelung von einem Knoten aus, der ein Gabelungspunkt ist, der im
Verlauf eines Weges von einer Wurzel eines Codebaums, die ein oberes
Ende des Codebaums darstellt, der durch das Codebaumbestimmungsmittel 103 bestimmt
wurde, zu einem Blatt, in dem Daten gespeichert sind, positioniert
ist.
-
Das
Codebaum-Umordnungsmittel 105 tauscht ein codiertes Blatt
gegen ein anderes Blatt oder einen internen Knoten aus. Das Vordaten-Aktualisierungsmittel 106 trägt die Daten
in dem Vordaten-Haltemittel 100 ein.
-
In
der obigen Datenkomprimierungsvorrichtung mit der obigen Struktur
hält das
Vordaten-Haltemittel 100 einen Kontext, der aus n Eingangsdaten gebildet
ist, die bis unmittelbar vor der Eingabe der Eingangsdaten eingegeben
worden sind, hält
das Verlaufshaltemittel 101 eine Kombination aus den Eingangsdaten
und dem Kontext und hält
das Codebaumhaltemittel 102 Codebäume, die jeweils für jeden
Kontext unabhängig
sind.
-
Das
Codebaumbestimmungsmittel 103 bestimmt einen Codebaum von
den Eingangsdaten, die bis unmittelbar zuvor eingegeben worden sind
und in dem Vordaten-Haltemittel 100 gehalten werden, das Codeausgabemittel 104 gibt
einzigartige Daten gemäß der Gabelung
von einem Knoten aus, der ein Gabelungspunkt ist, der im Verlauf
eines Weges von einer Wurzel eines Codebaums, die ein oberes Ende des
Codebaums darstellt, der durch das Codebaumbestimmungsmittel 103 bestimmt
wurde, zu einem Blatt, in dem Daten gespeichert sind, positioniert
ist.
-
Ferner
tauscht das Codebaum-Umordnungsmittel 105 ein codiertes
Blatt gegen ein anderes Blatt oder einen internen Knoten aus, und
das Vordaten-Aktualisierungsmittel 106 trägt die Daten
in das Vordaten-Haltemittel 100 ein.
-
Gemäß der obigen
Datenkomprimierungsvorrichtung dieser Erfindung ist es möglich, einen Prozeß, der zwei
Stufen umfaßt,
gleichzeitig auszuführen,
das heißt,
eine Stufe, um eine Auftrittshäufigkeit
von Eingangsdaten zu bestimmen, um ein Wahrscheinlichkeitsmodell
zu erstellen und einen Code jedem Eingangsdatum zuzuordnen, um eine
Codetabelle zu bilden, und eine Stufe, um einen Code der Daten von
dieser Codetabelle auszugeben, wodurch es möglich ist, eine Verarbeitungsrate
bei der Datenkomprimierung außerordentlich
zu erhöhen.
Es ist auch möglich,
ein enormes Volumen einer arithmetischen Operation wegzulassen,
um das Wahrscheinlichkeitsmodell neu zu erstellen, das bei jeder
Dateneingabe bereits erstellt worden ist, so daß die Verarbeitungsrate bei
der Datenkomprimierung mehr erhöht
werden kann. Ferner ist es möglich,
einen Codebaum durch das Austauschen eines codierten Blattes durch
ein anderes Blatt oder einen internen Knoten immer dann neu anzuordnen
oder umzuordnen, wenn dieselben Daten wie die Daten auftreten, die
in der Vergangenheit codiert worden sind, so daß es möglich ist, einen Code jener
Daten mit einer geringeren Anzahl von Bits auszudrücken, da
dieselben Daten häufiger
auftreten. Dadurch kann ein Effekt der Datenkomprimierung in der
Datenkomprimierungsvorrichtung außerordentlich verbessert werden.
-
2 ist
ein Blockdiagramm, das einen anderen Aspekt der Datenkomprimierungsvorrichtung gemäß dieser
Erfindung zeigt. Die Datenkomprimierungsvorrichtung von 2 codiert
Eingangsdaten gemäß einem
Verlauf des Auftretens der Eingangsdaten in der Vergangenheit, um
die Eingangsdaten zu komprimieren.
-
In 2 bezeichnet
Bezugszeichen 100 ein Vordaten-Haltemittel, bezeichnet 101 ein
Verlaufshaltemittel, bezeichnet 103 ein Codebaumbestimmungsmittel
und bezeichnet 107 ein Codebaumhaltemittel. Ferner bezeichnet
Bezugszeichen 108 ein Kontextunterscheidungsmittel, bezeichnet 109 ein Escape-Code-Ausgabemittel,
bezeichnet 110 ein Kontextänderungsmittel, bezeichnet 111 ein
Codeausgabemittel und bezeichnet 116 ein Steuermittel.
-
Das
Vordaten-Haltemittel 100 hält einen Kontext, der aus n
Eingangsdaten gebildet ist, die bis unmittelbar vor der Eingabe
der Eingangsdaten eingegeben worden sind. Das Verlaufshaltemittel 101 hält eine
Kombination aus Eingangsdaten und einem Kontext. Das Codebaumhaltemittel 107 hält Codebäume, die
jeweils für
jeden Kontext unabhängig sind,
wobei in jeden von ihnen ein Escape-Code, der als Daten definiert
ist, die bedeuten, daß keine
Daten gespeichert sind, im voraus eingetragen wird.
-
Das
Codebaumbestimmungsmittel 103 bestimmt einen Codebaum der
Daten von dem Kontext und den Eingangsdaten. Das Kontextunterscheidungsmittel 108 unterscheidet,
ob Daten in dem Codebaum gespeichert sind, der durch das Codebaumbestimmungsmittel 103 bestimmt
wurde. Das Escape-Code-Ausgabemittel 109 gibt einen Escape-Code gemäß der Gabelung
von einem Knoten aus, der ein Gabelungspunkt ist, der in dem Verlauf
eines Weges von einer Wurzel, die ein oberes Ende eines Codebaums
darstellt, zu einem Blatt, in dem die Daten gespeichert sind, positioniert
ist, falls die Daten nicht in dem Codebaum gespeichert sind.
-
Das
Kontextaktualisierungsmittel 110 verkürzt eine Länge n des Kontextes, falls
die Daten nicht in dem Codebaum gespeichert sind. Das Codeausgabemittel 111 gibt
einen Code der Daten gemäß der Gabelung
von einem Knoten aus, der in dem Verlauf eines Weges von einer Wurzel
des Codebaums zu einem Blatt der Daten positioniert ist, falls die
Daten in dem Codebaum gespeichert sind.
-
Das
Codebaum-Umordnungsmittel 105 tauscht ein codiertes Blatt
gegen ein anderes Blatt oder einen internen Knoten aus. Das Vordaten-Aktualisierungsmittel 106 trägt die Daten
in dem Vordaten-Haltemittel 100 ein. Das Steuermittel 116 wiederholt
einen Prozeß,
bis die Daten codiert sind, wenn ein Escape-Code codiert wird.
-
In
der obigen Datenkomprimierungsvorrichtung hält das Vordaten-Haltemittel 100 einen
Kontext, der aus n Eingangsdaten gebildet ist, die bis unmittelbar
vor der Eingabe der Daten eingegeben worden sind, hält das Verlaufshaltemittel 101 eine
Kombination aus den Eingangsdaten und dem Kontext und hält das Codebaumhaltemittel 107 Codebäume, die
jeweils für
jeden Kontext unabhängig
sind, wobei in jeden von ihnen ein Escape-Code im voraus eingetragen
wird, der als Daten definiert ist, die bedeuten, daß keine
Daten gespeichert sind.
-
Das
Codebaumbestimmungsmittel 103 bestimmt einen Codebaum der
Daten von dem Kontext und den Eingangsdaten, das Kontextunterscheidungsmittel 108 unterscheidet,
ob die Daten in dem Codebaum gespeichert sind, der durch das Codebaumbestimmungsmittel 103 bestimmt
wurde, und das Escape-Code-Ausgabemittel 109 gibt
einen Escape-Code gemäß der Gabelung
von einem Knoten aus, der ein Gabelungspunkt ist, der in dem Verlauf eines
Weges von einer Wurzel, die ein oberes Ende des Codebaums darstellt,
zu einem Blatt, in dem die Daten gespeichert sind, positioniert
ist, falls die Daten nicht in dem Codebaum gespeichert sind.
-
Ferner
verkürzt
das Kontextänderungsmittel 110 eine
Länge n
des Kontextes, falls die Daten nicht in dem Codebaum gespeichert
sind, gibt das Codeausgabemittel 111 einen Code der Daten
gemäß der Gabelung
von einem Knoten aus, der in dem Verlauf eines Weges von einer Wurzel
des Codebaums zu einem Blatt der Daten positioniert ist, falls die
Daten in dem Codebaum gespeichert sind, und tauscht das Codebaum-Umordnungsmittel 105 ein
codiertes Blatt gegen ein anderes Blatt oder einen internen Knoten
aus.
-
Das
Vordaten-Aktualisierungsmittel 106 trägt dann die Daten in das Vordaten-Haltemittel 100 ein, und
das Steuermittel 116 wiederholt einen Prozeß, bis die
Daten codiert sind, wenn der Escape-Code codiert wird.
-
Gemäß der obigen
Datenkomprimierungsvorrichtung dieser Erfindung ist es nicht erforderlich, im
voraus den gesamten Verlauf der Kombination aus den Eingangsdaten
und dem Kontext einzutragen, so daß eine Verarbeitungsrate bei
der Datenkomprimierung außerordentlich
erhöht
werden kann, wobei außerdem
ein Speicher außerordentlich
reduziert werden kann, der verwendet wird, um die Kontexte darin
einzutragen.
-
Dadurch
kann eine Leistung der Datenkomprimierungsvorrichtung in hohem Maße verbessert werden.
-
3 ist
ein Blockdiagramm, das einen anderen Aspekt der Datenkomprimierungsvorrichtung gemäß dieser
Erfindung zeigt. In 3 bezeichnet Bezugszeichen 100 ein
Vordaten-Haltemittel,
bezeichnet 101 ein Verlaufshaltemittel, bezeichnet 103 ein
Codebaumbestimmungsmittel, bezeichnet 105 ein Codebaum-Umordnungs-
oder Umordnungsmittel, bezeichnet 106 ein Vordaten-Aktualisierungsmittel,
bezeichnet 107 ein Codebaumhaltemittel, bezeichnet 108 ein
Kontextunterscheidungsmittel, bezeichnet 109 ein Escape-Code-Ausgabemittel,
bezeichnet 110 ein Kontextänderungsmittel, bezeichnet 111 ein
Codeausgabemittel, bezeichnet 112 ein Verlaufseintragmittel,
bezeichnet 113 ein Codeeintragmittel und bezeichnet 116 ein
Steuermittel.
-
Das
Vordaten-Haltemittel 100 hält einen Kontext, der aus n
Eingangsdaten gebildet ist, die bis unmittelbar vor der Eingabe
der Eingangsdaten eingegeben worden sind. Das Verlaufshaltemittel 101 hält eine
Kombination aus den Eingangsdaten und dem Kontext. Das Codebaumhaltemittel 107 hält Codebäume, die
jeweils für
jeden Kontext unabhängig sind,
wobei in jeden von ihnen ein Escape-Code, der als Daten definiert
ist, die bedeuten, daß keine
Daten gespeichert sind, im voraus eingetragen wird.
-
Das
Codebestimmungsmittel 103 bestimmt einen Codebaum der Daten
von dem Kontext und den Eingangsdaten. Das Kontextunterscheidungsmittel 108 unterscheidet,
ob die Daten in dem Codebaum gespeichert sind oder nicht, der durch
das Codebaumbestimmungsmittel 103 bestimmt wurde.
-
Ferner
gibt das Escape-Code-Ausgabemittel 109 einen Escape-Code
gemäß der Gabelung
von einem Knoten aus, der ein Gabelungspunkt ist, der in dem Verlauf
eines Weges von einer Wurzel, die ein oberes Ende des Codebaums
darstellt, zu einem Blatt positioniert ist, das ein Datenspeicherpunkt
ist, in dem ein Escape-Code gespeichert ist, falls die Daten nicht
in dem Codebaum gespeichert sind.
-
Das
Verlaufseintragmittel 112 trägt eine Kombination aus den
Daten und dem Kontext in das Verlaufshaltemittel 101 ein,
falls die Daten nicht in dem Codebaum gespeichert sind. Das Codeeintragmittel 113 trägt die Daten
in den Codebaum neu ein, falls die Daten nicht in dem Codebaum gespeichert sind.
Das Kontextänderungsmittel 110 verkürzt eine Länge n des
Kontextes, falls die Daten nicht in dem Codebaum gespeichert sind.
-
Ferner
gibt das Codeausgabemittel 111 einen Code der Daten gemäß der Gabelung
von einem Knoten aus, der in dem Verlauf eines Weges von einer Wurzel
des Codebaums zu einem Blatt der Daten positioniert ist, falls die
Daten in dem Codebaum gespeichert sind. Das Codebaum-Umordnungsmittel 105 tauscht
ein codiertes Blatt gegen ein anderes Blatt oder einen internen
Knoten aus.
-
Das
Vordaten-Aktualisierungsmittel 106 trägt die Daten in dem Vordaten-Haltemittel 100 ein.
Das Steuermittel 116 wiederholt einen Prozeß, bis die
Daten codiert sind, wenn der Escape-Code codiert wird.
-
In
der obigen Datenkomprimierungsvorrichtung hält das Vordaten-Haltemittel 100 einen
Kontext, der aus n Eingangsdaten gebildet ist, die bis unmittelbar
vor einer Eingabe der Eingangsdaten eingegeben worden sind, hält das Verlaufshaltemittel 101 eine
Kombination aus den Eingangsdaten und dem Kontext und hält das Codebaumhaltemittel 107 Codebäume, die
jeweils für
jeden Kontext unabhängig
sind, wobei in jeden von ihnen ein Escape-Code, der als Daten definiert
ist, die bedeuten, daß keine Daten
gespeichert sind, im voraus eingetragen wird.
-
Das
Codebaumbestimmungsmittel 103 bestimmt einen Codebaum der
Daten von dem Kontext und den Eingangsdaten, das Kontextunterscheidungsmittel 108 unterscheidet,
ob die Daten in dem Codebaum gespeichert sind, der durch das Codebaumbestimmungsmittel 103 bestimmt
wurde, und das Escape-Code-Ausgabemittel 109 gibt
einen Escape-Code gemäß der Gabelung
von einem Knoten aus, der ein Gabelungspunkt ist, der in dem Verlauf eines
Weges von einer Wurzel, die ein oberes Ende eines Codebaums darstellt,
zu einem Blatt positioniert ist, in dem der Escape-Code gespeichert
ist, falls keine Daten in dem Codebaum gespeichert sind.
-
Ferner
trägt das
Verlaufseintragmittel 112 eine Kombination aus den Daten
und dem Kontext in das Verlaufshaltemittel 101 ein, falls
die Daten nicht in dem Codebaum gespeichert sind, trägt das Codeeintragmittel 113 die
Daten in den Codebaum neu ein, falls die Daten nicht in dem Codebaum
gespeichert sind, verkürzt
das Kontextänderungsmittel 110 eine
Länge n
des Kontextes, falls die Daten nicht in dem Codebaum gespeichert
sind, und gibt das Codeausgabemittel 111 einen Code der
Daten gemäß der Gabelung
von einem Knoten aus, der in dem Verlauf eines Weges von einer Wurzel
des Codebaums zu einem Blatt der Daten positioniert ist, falls die
Daten in dem Codebaum gespeichert sind.
-
Dann
tauscht das Codebaum-Umordnungsmittel 105 ein codiertes
Blatt gegen ein anderes Blatt oder einen internen Knoten aus, trägt das Vordaten-Aktualisierungsmittel 106 die
Daten in das Vordaten-Haltemittel 100 ein, und das Steuermittel 116 wiederholt
einen Prozeß,
bis die Daten codiert sind, wenn ein Escape-Code codiert wird.
-
Gemäß der Datenkomprimierungsvorrichtung
dieser Erfindung ist es möglich,
Eingangsdaten, die in der Vergangenheit nicht im voraus eingetragen worden
sind, neu einzutragen und diese neu eingetragenen Daten in einem
frühen
Stadium bei dem nächsten
Codierprozeß zu
codieren. Dadurch kann ein Effekt der Datenkomprimierung mit voranschreitendem
Codierprozeß außerordentlich
verbessert werden, wobei außerdem
eine Verarbeitungslast auf der Datenkomprimierungsvorrichtung außerordentlich
reduziert wird.
-
4 ist
ein Blockdiagramm, das einen anderen Aspekt der Datenkomprimierungsvorrichtung gemäß dieser
Erfindung zeigt. In 4 bezeichnet Bezugszeichen 100 ein
Vordaten-Haltemittel,
bezeichnet 101 ein Verlaufshaltemittel, bezeichnet 103 ein
Codebaumbestimmungsmittel, bezeichnet 105 ein Codebaum-Umordnungsmittel,
bezeichnet 106 ein Vordaten-Aktualisierungsmittel, bezeichnet 107 ein
Codebaumhaltemittel, bezeichnet 108 ein Kontextunterscheidungsmittel,
bezeichnen 109 und 111 Escape-Code-Ausgabemittel,
bezeichnet 110 ein Kontextänderungsmittel, bezeichnet 114 ein
Verlaufseintragmittel, bezeichnet 115 ein Codeeintragmittel
und bezeichnet 117 ein Steuermittel.
-
Das
Vordaten-Haltemittel 100 hält einen Kontext, der aus n
Eingangsdaten gebildet ist, die bis unmittelbar vor einer Eingabe
von Eingangsdaten eingegeben worden sind. Das Verlaufshaltemittel 101 hält eine
Kombination aus den Eingangsdaten und dem Kontext. Das Codebaumhaltemittel 107 hält Codebäume, die
jeweils für
jeden Kontext unabhängig
sind, in die ein Escape-Code im voraus eingetragen wird, der als
Daten definiert ist, die bedeuten, daß keine Daten gespeichert sind.
-
Das
Codebaumbestimmungsmittel 103 bestimmt einen Codebaum der
Daten von dem Kontext und den Eingangsdaten. Das Kontextunterscheidungsmittel 108 unterscheidet,
ob die Daten in dem Codebaum gespeichert sind, der durch das Codebaumbestimmungsmittel 103 bestimmt
wurde.
-
Ferner
gibt das Escape-Code-Ausgabemittel 109 einen Escape-Code
gemäß der Gabelung
von einem Knoten aus, der ein Gabelungspunkt ist, der in dem Verlauf
eines Weges von einer Wurzel, die ein Ende des Codebaums darstellt,
zu einem Blatt, in dem Daten des Escape-Codes gespeichert sind,
positioniert ist.
-
Das
Kontextänderungsmittel 110 verkürzt eine
Länge n
des Kontextes, falls die Daten nicht in dem Codebaum gespeichert
sind. Das Escape-Code-Ausgabemittel 111 gibt einen Code
der Daten gemäß der Gabelung
von einem Knoten aus, der in dem Verlauf eines Weges von einer Wurzel
zu einem Blatt der Daten an dem Codebaum positioniert ist, falls
die Daten in dem Codebaum gespeichert sind.
-
Das
Verlaufseintragmittel 114 trägt eine Kombination aus den
Daten und dem Kontext in das Verlaufshaltemittel 101 ein.
Das Codeeintragmittel 115 trägt die Daten in den Codebaum
neu ein. Das Codebaum-Umordnungsmittel 105 tauscht ein
codiertes Blatt gegen ein anderes Blatt oder einen internen Knoten
aus. Das Vordaten-Aktualisierungsmittel 106 trägt die Daten
in dem Vordaten-Haltemittel 100 ein.
-
Das
Steuermittel 117 bewirkt, daß das Verlaufseintragmittel 114 eine
Kombination aus dem Kontext unmittelbar vor dem Codieren der Daten
und den Daten in dem Verlaufshaltemittel 101 einträgt, falls
ein Escape-Code beim Codieren der Daten auch nur einmal codiert
wird, und bewirkt, daß das
Codeeintragmittel 115 die Daten in den Codebaum neu einträgt, der
einen Escape-Code hat, der unmittelbar von dem Codieren der Daten
codiert worden ist.
-
In
der obigen Datenkomprimierungsvorrichtung hält das Vordaten-Haltemittel 100 einen
Kontext, der aus n Eingangsdaten gebildet ist, die bis unmittelbar
vor einer Eingabe von Daten eingegeben worden sind, hält das Verlaufshaltemittel 101 eine Kombination
aus den Eingangsdaten und dem Kontext, hält das Codebaumhaltemittel 107 Codebäume, die
jeweils für
jeden Kontext unabhängig
sind, in denen ein Escape-Code im voraus eingetragen wird, der bedeutet,
daß keine
Daten eingetragen sind.
-
Das
Codebaumbestimmungsmittel 103 bestimmt einen Codebaum der
Daten von dem Kontext und den Eingangsdaten, das Kontextunterscheidungsmittel 108 unterscheidet,
ob die Daten in dem Codebaum eingetragen sind, der durch das Codebaumbestimmungsmittel 103 bestimmt
wurde, und das Escape-Code-Ausgabemittel 109 gibt
einen Escape-Code gemäß der Gabelung
von einem Knoten aus, der in dem Verlauf eines Weges von einer Wurzel,
die ein oberes Ende des Codebaums darstellt, zu einem Blatt, das
ein Codespeicherpunkt für
den Escape-Code
ist, positioniert ist, falls keine Daten in dem Codebaum eingetragen
sind.
-
Ferner
verkürzt
das Kontextänderungsmittel 110 eine
Länge n
des Kontextes, falls die Daten nicht in dem Codebaum gespeichert
sind, und das Codeausgabemittel 111 gibt einen Code der
Daten gemäß der Gabelung
von einem Knoten aus, der in dem Verlauf eines Weges von einer Wurzel
des Codebaums zu einem Blatt der Daten positioniert ist, falls die
Daten in dem Codebaum gespeichert sind.
-
Das
Verlaufseintragmittel 114 trägt die Kombination aus den
Daten und dem Kontext in dem Verlaufshaltemittel 101 ein,
das Codeeintragmittel 115 trägt die Daten in den Codebaum
neu ein, das Codebaum-Umordnungsmittel 105 tauscht ein
codiertes Blatt gegen ein anderes Blatt oder einen internen Knoten
aus, und das Vordaten-Aktualisierungsmittel 106 trägt die Daten
in das Vordaten-Haltemittel 100 ein.
-
Ferner
bewirkt das Steuermittel 116, daß das Verlaufseintragmittel 114 eine
Kombination aus einem Kontext, der unmittelbar vor dem Codieren
der Daten erhalten wurde, und den Daten in das Verlaufshaltemittel 101 einträgt, falls
ein Escape-Code beim Codieren der Daten auch nur einmal codiert wird,
und bewirkt, daß das
Codeeintragmittel 115 die Daten in einen Codebaum neu einträgt, der
einen Escape-Code hat, der unmittelbar vor dem Codieren der Daten
codiert worden ist.
-
Daher
ist es in der obigen Datenkomprimierungsvorrichtung dieser Erfindung
nicht erforderlich, alle Kombinationen aus dem Kontext und den Daten einzutragen,
für die
entschieden wurde, in der Vergangenheit nicht in dem Verlauf der
Eingangsdaten eingetragen sein zu müssen, so daß es möglich ist, den Datenkomprimierungsprozeß außerordentlich
zu verbessern. Dies gestattet auch, daß nur für Daten, die tatsächlich häufig auftreten,
ein Code zugeordnet (eingetragen) wird, so daß eine Effektivität bei der Datenkomprimierung
außerordentlich
verbessert werden kann, wobei außerdem auch eine Leistung der
Datenkomprimierungsvorrichtung beträchtlich verbessert werden kann.
-
5 ist
ein Blockdiagramm, das einen anderen Aspekt der Datendekomprimierungsvorrichtung
dieser Erfindung zeigt. Die Datendekomprimierungsvorrichtung von 5 decodiert
einen codierten Code, der gemäß einem
Verlauf von in der Vergangenheit aufgetretenen Daten codiert worden
ist.
-
In 5 bezeichnet
Bezugszeichen 200 ein Vordaten-Haltemittel, bezeichnet 201 ein
Verlaufshaltemittel, bezeichnet 202 ein Codebaumhaltemittel, bezeichnet 203 ein
Codebaumbestimmungsmittel, bezeichnet 204 ein Decodiermittel,
bezeichnet 205 ein Codebaum-Umordnungs- oder Umordnungsmittel
und bezeichnet 206 ein Vordaten-Aktualisierungsmittel 206.
-
Das
Vordaten-Haltemittel 200 hält n Daten, die in der Vergangenheit
decodiert worden sind. Das Verlaufshaltemittel 201 hält eine
Kombination aus decodierten Daten und einem Kontext. Das Codebaumhaltemittel 202 hält Codebäume, die
jeweils für
jeden Kontext unabhängig
sind.
-
Das
Codebaumbestimmungsmittel 203 bestimmt einen Codebaum,
der verwendet wird, um Daten zu decodieren, von dem Kontext, der
in dem Vordaten-Haltemittel 200 gehalten wird. Das Decodiermittel 204 gibt
Daten aus, die in einem Blatt gespeichert sind, das ein Datenspeicherpunkt
ist, der durch Scannen eines Weges von einer Wurzel, die ein oberes
Ende des Codebaums darstellt, der durch das Codebaumbestimmungsmittel 203 selektiert
worden ist, zu einem Knoten, der ein Gabelungspunkt gemäß einem
Code ist, erreicht wird.
-
Das
Codebaum-Umordnungsmittel 205 tauscht ein decodiertes Blatt
gegen ein anderes Blatt oder einen internen Knoten aus. Das Vordaten-Aktualisierungsmittel 206 trägt die decodierten
Daten in dem Vordaten-Haltemittel 200 ein.
-
In
der obigen Datenwiederherstellungsvorrichtung hält das Vordaten-Haltemittel 200 n
Daten, die vor dem Decodieren eines Codes decodiert worden sind,
hält das
Verlaufshalte mittel 201 eine Kombination aus decodierten
Daten und einem Kontext und hält
das Codebaumhaltemittel 202 Codebäume, die jeweils für jeden
Kontext unabhängig
sind.
-
Das
Codebaumbestimmungsmittel 203 bestimmt einen Codebaum,
der verwendet wird, um Daten zu decodieren, von dem Kontext, der
in dem Vordaten-Haltemittel 200 gehalten wird, und das
Decodiermittel 204 gibt Daten aus, die in einem Blatt als Datenspeicherpunkt
gespeichert sind, der durch Scannen eines Weges von einer Wurzel,
die ein oberes Ende des Codebaums darstellt, der durch das Codebaumbestimmungsmittel 203 selektiert
wurde, zu einem Knoten, der ein Gabelungspunkt ist, gemäß einem
Code erreicht wird.
-
Ferner
tauscht das Codebaum-Umordnungsmittel 205 ein decodiertes
Blatt gegen ein anderes Blatt oder einen internen Knoten aus, und
das Vordaten-Aktualisierungsmittel 206 trägt die decodierten
Daten in dem Vordaten-Haltemittel 200 ein.
-
In
der obigen Datenwiederherstellungsvorrichtung dieser Erfindung ist
es möglich,
einen Prozeß aus
zwei Stufen gleichzeitig auszuführen,
das heißt,
eine Stufe, um eine Auftrittshäufigkeit
von Eingangsdaten zu bestimmen, um ein Wahrscheinlichkeitsmodell
zu erstellen und einen Code jedem Eingangsdatum zuzuordnen, um eine
Codetabelle zu bilden, und eine Stufe, um ein Zeichen, das zu decodieren
ist, von dieser Codetabelle auszugeben, so daß eine Verarbeitungsrate bei
der Datendekomprimierung in der Datendekomprimierungsvorrichtung außerordentlich
erhöht
werden kann. Es ist auch möglich,
ein enormes Volumen einer arithmetischen Operation, um ein Wahrscheinlichkeitsmodell
neu zu erstellen, das bei jeder Dateneingabe bereits erstellt worden
ist, wegzulassen, so daß eine
Verarbeitungsrate bei der Datenwiederherstellung mehr verbessert werden
kann. Es ist ferner möglich,
einen Code von Daten mit einer geringeren Anzahl von Bits auszu drücken, wenn
ein Code von denselben Daten wie den Daten, die in der Vergangenheit
aufgetreten sind, häufiger
auftritt, so daß ein
Effekt der Datendekomprimierung außerordentlich verbessert werden
kann, wobei außerdem
eine Leistung der Datendekomprimierungsvorrichtung außerordentlich
verbessert werden kann.
-
6 ist
ein Blockdiagramm eines anderen Aspektes der Datendekomprimierungsvorrichtung dieser
Erfindung. In 6 bezeichnet Bezugszeichen 200 ein
Vordaten-Haltemittel, bezeichnet 201 ein Verlaufshaltemittel,
bezeichnet 203 ein Codebaumbestimmungsmittel, bezeichnet 204 ein
Decodiermittel, bezeichnet 205 ein Codebaum-Umordnungsmittel,
bezeichnet 206 ein Vordaten-Aktualisierungsmittel, bezeichnet 207 ein
Codebaumhaltemittel, bezeichnet 208 ein Kontextänderungsmittel
und bezeichnet 213 ein Steuermittel.
-
Das
Vordaten-Haltemittel 200 hält n Daten, die vor dem Decodieren
eines Codes decodiert worden sind. Das Verlaufshaltemittel 201 hält eine
Kombination aus decodierten Daten und einem Kontext. Das Codebaumhaltemittel 207 hält Codebäume, in denen
jeweils ein Escape-Code im voraus gespeichert wurde, der als Daten
definiert ist, die bedeuten, daß keine
Daten eingetragen sind.
-
Das
Codebaumbestimmungsmittel 203 bestimmt einen Codebaum,
der verwendet wird, um Daten zu decodieren, von dem Kontext, der
in dem Vordaten-Haltemittel 200 gehalten wird. Das Decodiermittel 204 gibt
Daten aus, die in einem Blatt gespeichert sind, das ein Datenspeicherpunkt
ist, indem ein Weg von einer Wurzel, die ein oberes Ende eines Codebaums
darstellt, der durch das Codebaumbestimmungsmittel 203 selektiert
wurde, zu einem Knoten, der ein Gabelungspunkt ist, gemäß einem
Code gescant wird.
-
Ferner
tauscht das Codebaum-Umordnungsmittel 205 ein decodiertes
Blatt gegen ein anderes Blatt oder einen inter nen Knoten aus. Das
Kontextänderungsmittel 208 sondert
Daten aus, falls die ausgegebenen Daten ein Escape-Code sind, um
den Kontext zu verkürzen.
Das Vordaten-Aktualisierungsmittel 206 trägt die decodierten
Daten in dem Vordaten-Haltemittel 200 ein.
-
Das
Steuermittel 213 bewirkt, daß das Kontextänderungsmittel 208 den
Kontext zurücksetzt, falls
ein Escape-Code decodiert wird, und wiederholt einen Prozeß, bis ein
Code ohne einen Escape-Code decodiert ist.
-
In
der obigen Datenwiederherstellungsvorrichtung hält das Vordaten-Haltemittel 200 n
Daten, die vor dem Decodieren eines Codes decodiert worden sind.
Das Verlaufshaltemittel 201 hält eine Kombination aus decodierten
Daten und einem Kontext, und das Codebaumhaltemittel 207 hält Codebäume, in
denen jeweils ein Escape-Code im voraus eingetragen wurde, der als
Daten definiert ist, die bedeuten, daß keine Daten gespeichert sind.
-
Das
Codebaumbestimmungsmittel 203 bestimmt einen Codebaum,
der verwendet wird, um Daten zu decodieren, von dem Kontext, der
in dem Vordaten-Haltemittel 200 gehalten wird, und das
Decodiermittel 204 gibt Daten, die in einem Blatt gespeichert
sind, das ein Datenspeicherpunkt ist, der durch Scannen eines Weges
von einer Wurzel, die ein oberes Ende eines Codebaums darstellt,
der durch das Codebaumbestimmungsmittel 203 bestimmt wurde, zu
einem Knoten, der ein Gabelungspunkt ist, erreicht wird, gemäß einem
Code aus.
-
Ferner
tauscht das Codebaum-Umordnungsmittel 205 ein decodiertes
Blatt gegen ein anderes Blatt oder einen internen Knoten aus, sondert das
Kontextänderungsmittel 208 die
Daten aus, falls ausgegebene Daten ein Escape-Code sind, um den Kontext
zu verkürzen,
und trägt
das Vordaten-Aktualisierungsmittel 206 trägt die decodierten
Daten in dem Vordaten-Haltemittel 200 ein.
-
Das
Steuermittel 213 bewirkt, daß das Kontextänderungsmittel 208 den
Kontext zurücksetzt, wenn
ein Escape-Code decodiert wird, und wiederholt einen Prozeß, bis ein
Code ohne den Escape-Code decodiert ist.
-
In
dem obigen Datendekomprimierungsmittel dieser Erfindung ist es nicht
erforderlich, im voraus den gesamten Verlauf einer Kombination aus
den decodierten Daten und dem Kontext einzutragen, so daß es möglich ist,
eine Zeitperiode zu verkürzen,
die benötigt
wird, bis die Kombination aus den decodierten Daten und dem Kontext
erhalten wird. Als Resultat kann eine Verarbeitungsrate bei der
Datendekomprimierung außerordentlich
erhöht
werden, wobei außerdem
eine Leistung der Datendekomprimierungsvorrichtung in hohem Maße verbessert
werden kann.
-
7 ist
ein Blockdiagramm, das noch einen anderen Aspekt der Datendekomprimierungsvorrichtung
dieser Erfindung zeigt. In 7 bezeichnet
Bezugszeichen 200 ein Vordaten-Haltemittel, bezeichnet 201 ein
Verlaufshaltemittel, bezeichnet 203 ein Codebaumbestimmungsmittel,
bezeichnet 204 ein Decodiermittel, bezeichnet 205 ein
Codebaum-Umordnungsmittel, bezeichnet 206 ein Vordaten-Aktualisierungsmittel,
bezeichnet 207 ein Codebaumhaltemittel, bezeichnet 208 ein
Kontextänderungsmittel, bezeichnet 209 ein
Verlaufseintragmittel, bezeichnet 210 ein Codeeintragmittel
und bezeichnet 213 ein Steuermittel.
-
Das
Vordaten-Haltemittel 200 hält n Daten, die vor dem Decodieren
eines Codes decodiert worden sind. Das Verlaufshaltemittel 201 hält eine
Kombination aus decodierten Daten und einem Kontext. Das Codebaumhaltemittel 207 hält Codebäume, in denen
jeweils ein Escape-Code im voraus eingetragen wurde.
-
Das
Codebaumbestimmungsmittel 203 bestimmt einen Codebaum,
der verwendet wird, um Daten zu decodieren, von dem Kontext, der
in dem Vordaten-Haltemittel 200 gehalten wird. Das Decodiermittel 204 gibt
Daten aus, die in einem Blatt gespeichert sind, das ein Datenspeicherpunkt
ist, der erreicht wird, indem ein Weg von einer Wurzel, die ein oberes
Ende eines Codebaums darstellt, der durch das Codebaumbestimmungsmittel 203 selektiert wurde,
zu einem Knoten, der ein Gabelungspunkt ist, gemäß einem Code gescant wird.
-
Das
Codebaum-Umordnungsmittel 205 tauscht ein decodiertes Blatt
gegen ein anderes Blatt oder einen Knoten aus. Das Kontextänderungsmittel 208 sondert
die obigen Daten aus, wenn ausgegebene Daten ein Escape-Code sind,
um den Kontext zu verkürzen.
-
Das
Vordaten-Aktualisierungsmittel 206 trägt die decodierten Daten in
dem Vordaten-Haltemittel 200 ein. Das Verlaufseintragmittel 209 trägt jeden Kontext,
der erhalten wird, wenn ein Escape-Code bei dem Datendecodierprozeß decodiert
wird, und die decodierten Daten in dem Verlaufshaltemittel 201 ein.
-
Das
Codeeintragmittel 210 trägt einen Code der Daten in
alle Codebäume
ein, die dem Kontext entsprechen, wenn ein Escape-Code bei dem Datendecodierprozeß decodiert
wird. Das Steuermittel 213 bewirkt, daß das Kontextänderungsmittel 208 den Kontext
zurücksetzt,
wenn ein Escape-Code decodiert wird, und wiederholt einen Prozeß, bis ein
Code ohne einen Escape-Code decodiert ist.
-
In
der obigen Datenwiederherstellungsvorrichtung hält das Datenhaltemittel 200 n
Daten, die vor dem Decodieren eines Codes decodiert worden sind,
hält das
Verlaufshaltemittel 201 eine Kombination aus den decodierten
Daten und einem Kontext und hält
das Codebaumhaltemittel 207 Codebäume, in denen jeweils ein Escape-Code
im voraus eingetragen wurde.
-
Das
Codebaumbestimmungsmittel 203 bestimmt dann einen Codebaum,
der verwendet wird, um Daten zu decodieren, von dem Kontext, der
in dem Vordaten-Haltemittel 200 gehalten wird, und das Decodiermittel 204 gibt
Daten aus, die in einem Blatt gespeichert sind, das ein Datenspeicherpunkt
ist, der durch Scannen eines Weges von einer Wurzel, die ein oberes
Ende eines Codebaums darstellt, der durch das Codebaumbestimmungsmittel 203 bestimmt
wurde, zu dem Blatt über
einen Knoten, der ein Gabelungspunkt ist, gemäß einem Code erreicht wird.
-
Ferner
tauscht das Codebaum-Umordnungsmittel 205 ein decodiertes
Blatt gegen ein anderes Blatt oder einen internen Knoten aus, sondert das
Kontextänderungsmittel 208 die
Daten aus, wenn ausgegebene Daten ein Escape-Code sind, um den Kontext
zu verkürzen,
und das Vordaten-Aktualisierungsmittel 206 trägt die decodierten
Daten in dem Vordaten-Haltemittel 200 ein.
-
Das
Verlaufseintragmittel 209 trägt dann alle Kontexte, die
erhalten wurden, wenn ein Escape-Code bei dem Datendecodierprozeß decodiert
wird, und die decodierten Daten in dem Verlaufshaltemittel 201 ein,
das Codeeintragmittel 210 trägt einen Code der Daten in
allen Codebäumen
ein, die dem Kontext entsprechen, wenn ein Escape-Code bei dem Datendecodierprozeß decodiert
wird, und das Steuermittel 213 bewirkt, daß das Kontextänderungsmittel 208 den
Kontext zurücksetzt,
wenn ein Escape-Code decodiert wird, und wiederholt einen Prozeß, bis ein Code
ohne einen Escape-Code decodiert ist.
-
In
der obigen Datendekomprimierungsvorrichtung dieser Erfindung ist
es möglich,
decodierte Daten, die in der Vergangenheit nicht im voraus eingetragen
worden sind, neu einzutragen und diese decodierten Daten, die neu
eingetragen worden sind, in einem frühen Stadium bei dem nächsten Decodierprozeß zu decodieren.
Dadurch kann ein Effekt der Daten dekomprimierung mit voranschreitendem
Decodierprozeß mehr
verbessert werden und eine Leistung der Datendekomprimierungsvorrichtung
außerordentlich
verbessert werden.
-
8 ist
ein Blockdiagramm, das noch einen anderen Aspekt der Datendekomprimierungsvorrichtung
dieser Erfindung zeigt. In 8 bezeichnet
Bezugszeichen 200 ein Vordaten-Haltemittel, bezeichnet 201 ein
Verlaufshaltemittel, bezeichnet 203 ein Codebaumbestimmungsmittel,
bezeichnet 204 ein Decodiermittel, bezeichnet 205 ein
Codebaum-Umordnungsmittel, bezeichnet 206 ein Vordaten-Aktualisierungsmittel,
bezeichnet 207 ein Codebaumhaltemittel, bezeichnet 208 ein
Kontextänderungsmittel, bezeichnet 212 ein
Codeeintragmittel und bezeichnet 213 ein Steuermittel.
-
Das
Vordaten-Haltemittel 200 hält n Daten, die vor dem Decodieren
eines Codes decodiert worden sind. Das Verlaufshaltemittel 201 hält eine
Kombination aus decodierten Daten und einem Kontext. Das Codebaumhaltemittel 207 hält Codebäume, in denen
jeweils ein Escape-Code im voraus eingetragen wurde, der als Daten
definiert ist, die bedeuten, daß keine
Daten gespeichert sind.
-
Das
Codebaumbestimmungsmittel 203 bestimmt einen Codebaum,
der verwendet wird, um Daten zu decodieren, von dem Kontext, der
in dem Vordaten-Haltemittel 200 gehalten wird. Das Decodiermittel 204 gibt
Daten aus, die in einem Blatt gespeichert sind, das ein Datenspeicherpunkt
ist, der erreicht wird, indem ein Weg von einer Wurzel, die ein oberes
Ende des Codebaums darstellt, der durch das Codebaumbestimmungsmittel 203 bestimmt
wurde, zu einem Knoten, der ein Gabelungspunkt ist, gemäß einem
Code gescant wird.
-
Das
Codebaum-Umordnungsmittel 205 tauscht ein decodiertes Blatt
gegen ein anderes Blatt oder einen internen Knoten aus. Das Kontextänderungsmittel 208 sondert
die Daten aus, falls ausgegebene Daten ein Escape-Code sind, um
den Kontext zu verkürzen.
Das Vordaten-Aktualisierungsmittel 206 trägt die decodierten
Daten in dem Vordaten-Haltemittel 200 ein.
-
Das
Verlaufseintragmittel 211 trägt einen Kontext zu der Zeit
des letzten Codierens eines Escape-Codes bei dem Datendecodierprozeß und die Daten
in dem Verlaufshaltemittel 201 ein. Das Codeeintragmittel 212 trägt einen
Code der Daten in einen Codebaum ein, der dem Kontext zu der Zeit
des letzten Codierens eines Escape-Codes bei dem Datendecodierprozeß entspricht.
Das Steuermittel 213 bewirkt, daß das Kontextänderungsmittel 208 den
Kontext zurücksetzt,
wenn ein Escape-Code decodiert wird, und wiederholt den Prozeß, bis ein
Code ohne einen Escape-Code decodiert ist.
-
In
dem obigen Datendekomprimierungsmittel hält das Vordaten-Haltemittel 200 n
Daten, die vor dem Decodieren eines Codes decodiert worden sind, hält das Verlaufshaltemittel 201 eine
Kombination aus den decodierten Daten und einem Kontext und hält das Codebaumhaltemittel 207 Codebäume, in denen
jeweils ein Escape-Code im voraus eingetragen wurde, der als Daten
definiert ist, die bedeuten, daß kein
Dateneintrag vorhanden ist.
-
Das
Codebaumbestimmungsmittel 203 bestimmt einen Codebaum,
der verwendet wird, um Daten zu decodieren, von dem Kontext, der
in dem Vordaten-Haltemittel 200 gehalten wird, und das
Decodiermittel 204 gibt Daten aus, die in einem Blatt gespeichert
sind, das ein Speicherpunkt der Daten ist, der durch Scannen eines
Weges von einer Wurzel, die ein oberes Ende eines Codebaums darstellt,
der durch das Codebaumbestimmungsmittel 203 selektiert
wurde, zu einem Knoten, der ein Gabelungspunkt ist, gemäß einem
Code erreicht wird.
-
Ferner
tauscht das Codebaum-Umordnungsmittel 205 ein decodiertes
Blatt gegen ein anderes Blatt oder einen internen Knoten aus, und
das Kontextänderungsmittel 208 sondert die
Daten aus, falls ausgegebene Daten ein Escape-Code sind, um den
Kontext zu verkürzen.
-
Das
Vordaten-Aktualisierungsmittel 206 trägt dann die decodierten Daten
in dem Vordaten-Haltemittel 200 ein, das Verlaufseintragmittel 211 trägt einen
Kontext zu der Zeit des letzten Decodierens eines Escape-Codes bei
dem Datendecodierprozeß und
die decodierten Daten in dem Verlaufshaltemittel 201 ein,
und das Codeeintragmittel 212 trägt einen Code der Daten in
einem Codebaum ein, der dem Kontext zu der Zeit des letzten Decodierens
eines Escape-Codes bei dem Datendecodierprozeß entspricht.
-
Ferner
bewirkt das Steuermittel 213, daß das Kontextänderungsmittel 208 den
Kontext zurücksetzt,
wenn ein Escape-Code
decodiert wird, und wiederholt einen Prozeß, bis ein Code ohne einen Escape-Code
decodiert ist.
-
Gemäß dem obigen
Datenwiederherstellungsmittel dieser Erfindung ist es nicht erforderlich, alle
Kombinationen aus einem Kontext und Daten einzutragen, für die entschieden
worden ist, in der Vergangenheit nicht in dem Verlauf von Eingangsdaten
gespeichert sein zu müssen.
Zusätzlich
kann nur für
Daten, die tatsächlich
häufig
auftreten, ein Code zugeordnet (eingetragen) werden, so daß eine Effektivität bei der
Datendekomprimierung außerordentlich
verbessert werden kann, wobei außerdem auch eine Leistung der
Datenwiederherstellungsvorrichtung außerordentlich verbessert werden
kann.
-
Ein
Datenkomprimierungsverfahren gemäß dieser
Erfindung dient zum Komprimieren von Eingangsdaten durch das Decodieren
der Eingangsdaten gemäß einem
Verlauf des Auftretens der Eingangsdaten in der Vergangenheit und
umfaßt
die folgenden Schritte:
- (1) einen Kontextbaumhalteschritt,
um einen Kontextbaum zu halten, in dem eine Kombination aus Eingangsdaten
und einem Kontext, der n kontinuierliche Daten umfaßt, denen
die Eingangsdaten folgen, eingetragen ist;
- (2) einen Codebaumhalteschritt, um Codebäume zu halten, die jeweils
für jeden
Kontext unabhängig
sind;
- (3) einen Kontextbaum-Neueintragschritt, um Daten in den Kontextbaum
neu einzutragen, der bei dem Kontextbaumhalteschritt gehalten wird,
falls die Kombination aus den Eingangsdaten und dem Kontext bei
dem Kontextbaumhalteschritt nicht gehalten wurde;
- (4) einen Codebaum-Neueintragschritt, um die Daten in den Codebaum
neu einzutragen, der bei dem Codebaumhalteschritt gehalten wird,
falls die Kombination aus den Eingangsdaten und dem Kontext bei
dem Kontextbaumhalteschritt nicht gespeichert wurde;
- (5) einen Neueintragschritt, um die Daten in einem Blatt zu
speichern, das erhalten wird, indem ein Blatt verzweigt wird, das
ein Datenspeicherpunkt an dem Codebaum ist, der bei dem Codebaumhalteschritt
gehalten wird, falls die Kombination aus den Eingangsdaten und dem
Kontext bei dem Kontextbaumhalteschritt nicht gehalten wurde;
- (6) einen Kontextänderungsschritt,
um den Kontext zu ändern,
falls die Kombination aus den Eingangsdaten und dem Kontext bei
dem Codebaumhalteschritt nicht gehalten wurde;
- (7) einen Codeausgabeschritt, um einen Code gemäß einer
Gabelung von einem oberen Ende des Codebaums zu einem Blatt auszugeben,
in dem die Eingangsdaten oder ein spezifischer Code in dem Codebaum
gespeichert sind;
- (8) einen Codebaum-Umordnungs- oder Umordnungsschritt, um ein
Blatt, in dem die Eingangsdaten oder der spezifische Code in dem
Codebaum gespeichert sind, gegen ein anderes Blatt oder einen internen
Knoten auszutauschen, der als Gabelungspunkt definiert ist, wobei
das obere Ende des Codebaums ausgenommen ist; und
- (9) einen Neueintragschritt, um ein Blatt zu verzweigen, in
dem der spezifische Code gespeichert ist, um den spezifischen Code
und die neuen Daten in zwei jeweiligen neu erhaltenen Blättern einzutragen.
-
Das
obige Datenkomprimierungsverfahren dieser Erfindung funktioniert
wie folgt:
- (1) Halten eines Codebaums, in dem
eine Kombination aus Eingangsdaten und einem Kontext, der aus n
kontinuierlichen Daten gebildet ist, denen die Eingangsdaten folgen,
bei dem Kontexthalteschritt;
- (2) Halten von Codebäumen,
die jeweilig für
jeden Kontext unabhängig
sind, bei dem Codebaumhalteschritt;
- (3) Neueintragen, bei dem Kontextbaum-Neueintragschritt, der
Daten in dem Kontextbaum, der bei dem Kontexthalteschritt gehalten
wird, falls die Kombination aus den Eingangsdaten und dem Kontext
bei dem Kontextbaumhalteschritt nicht gehalten wurde;
- (4) Neueintragen, bei dem Codebaum-Neueintragschritt, der Daten
in dem Codebaum, der bei dem Codebaumhalteschritt gehalten wird,
falls die Kombination aus den Eingangsdaten und dem Kontext bei
dem Kontextbaumhalteschritt nicht gehalten wurde;
- (5) Speichern, bei dem Neueintragschritt, der Daten in einem
neuen Blatt, das durch Verzweigen eines Blattes erhalten wird, das
ein Datenspeicherpunkt an dem Codebaum ist, der bei dem Codebaumhalteschritt
gehalten wird, falls die Kombination aus den Eingangsdaten und dem
Kontext bei dem Kontextbaumhalteschritt nicht gehalten wurde;
- (6) Ändern,
bei dem Kontextänderungsschritt,
des Kontextes, falls die Kombination aus den Eingangsdaten und dem
Kontext bei dem Kontextbaumhalteschritt nicht gehalten wurde;
- (7) Ausgeben eines Codes gemäß der Gabelung, die
sich von einem oberen Ende des Codebaums zu einem Blatt erstreckt,
in dem die Eingangsdaten oder ein spezifischer Code gespeichert
sind, bei dem Codeausgabeschritt;
- (8) Austauschen eines Blattes, in dem die Eingangsdaten oder
der spezifische Code in dem Codebaum gespeichert sind, gegen ein
anderes Blatt oder einen internen Knoten, der als Gabelungspunkt
definiert ist, das obere Ende des Codebaums ausgenommen, bei dem
Codebaum-Umordnungsschritt; und
- (9) Eintragen des spezifischen Codes und neuer Daten in zwei
Blätter,
die durch Verzweigen eines Blattes, in dem der spezifische Code
gespeichert ist, neu erhalten werden, bei dem Neueintragschritt.
-
Die
obige Datenkomprimierungsvorrichtung kann eine hohe Codierrate im
Falle der Daten vorsehen, die den obigen spezifischen Code relativ
oft ausgeben, oder in einem frühen
Stadium, in dem der Eintrag von Kontexten, die bei dem Codebaumhalteschritt
gehalten werden, nicht ausreicht. Falls der Codebaum-Umordnungsschritt
vor dem obigen Codebaum-Neueintragschritt
ausgeführt
wird, ist es zum Beispiel möglich,
einen Code oder den spezifischen Code mit nur 2 Bits auszudrücken. Falls
der Codebaum-Umordnungsschritt nach dem obigen Codebaum-Neueintragschritt
ausgeführt
wird, ist es möglich,
den spezifischen Code mit nur 1 Bit auszudrücken. Dadurch kann die Codiereffektivität außerordentlich
verbessert werden. Bei dem obigen Codebaum-Neueintragschritt werden
die Daten immer nacheinander neu eingetragen, so daß jedes
Mal nur Kontexte mit hoher Wiederholbarkeit in den höheren Grad
des Codebaums eingetragen werden. Als Resultat ist es möglich, einen
Rückgang
der Codiereffektivität
auf Grund der Existenz von Daten zu verhindern, die einmal in den
Codebaum eingetragen worden sind, tatsächlich aber nicht verwendet
werden. Dadurch kann die Codiereffektivität in hohem Maße weiter
verbessert werden, nachdem genügend
Daten eingetragen worden sind.
-
Das
Datenkomprimierungsverfahren dieser Erfindung dient zum Komprimieren
von Eingangsdaten durch das Codieren der Eingangsdaten gemäß einem
Verlauf des Auftretens der Eingangsdaten in der Vergangenheit und
umfaßt
die folgenden Schritte:
- (1) einen Codebaumhalteschritt,
um Codebäume zu
halten, in denen jeweils ein Escape-Code eingetragen ist, der als
Daten definiert ist, die bedeuten, daß kein Dateneintrag vorhanden
ist;
- (2) einen Kontextbaumhalteschritt, um einen Kontextbaum zu halten,
in dem eine Kombination aus Eingangsdaten und einem Kontext, der
n kontinuierliche Daten umfaßt,
denen die Eingangsdaten folgen, gespeichert ist;
- (3) einen Codebaum-Neueintragschritt, um Daten in den Kontextbaum
neu einzutragen, der bei dem Kontextbaumhalteschritt gehalten wird,
falls die Kombination aus den Eingangsdaten und dem Kontext bei
dem Kontexthalteschritt nicht gehalten wurde;
- (4) einen Codebaum-Neueintragschritt, um Daten in den Codebaum
neu einzutragen, der bei dem Codebaumhalteschritt gehalten wird,
falls die Kombination aus den Eingangsdaten und dem Kontext bei
dem Kontextbaumhalteschritt nicht gehalten wurde;
- (5) einen Neueintragschritt, um die Daten in ein Blatt neu einzutragen,
das neu erhalten wird, indem ein Blatt, das ein Datenspeicherpunkt
an dem Codebaum ist, der bei dem Codebaumhalteschritt gehalten wird,
verzweigt wird, falls die Kombination aus den Eingangsdaten und
dem Kontext bei dem Kontextbaumhalteschritt nicht gehalten wurde;
- (6) einen Kontextänderungsschritt,
um den Kontext zu ändern,
falls die Kombination aus den Eingangsdaten und dem Kontext bei
dem Kontextbaumhalteschritt nicht gehalten wurde;
- (7) einen Codeausgabeschritt, um einen Code gemäß einer
Gabelung eines Weges auszugeben, der sich von einem oberen Ende
des Codebaums zu einem Blatt erstreckt, in dem die Eingangsdaten
oder ein Escape-Code gespeichert sind;
- (8) einen Codebaum-Umordnungsschritt, um ein Blatt, in dem die
Eingangsdaten oder ein Escape-Code gespeichert sind, gegen ein anderes Blatt
oder einen internen Knoten, der als Gabelungspunkt definiert ist,
das obere Ende des Codebaums ausgenommen; und
- (9) einen Neueintragschritt, um ein Blatt zu verzweigen, in
dem der Escape-Code gespeichert ist, um den Escape-Code und die
neuen Daten in zwei jeweiligen neu erhaltenen Blättern einzutragen.
-
Das
obige Datenkomprimierungsverfahren dieser Erfindung funktioniert
wie folgt:
- (1) Halten von Codebäumen, in
denen jeweils ein Escape-Code im voraus eingetragen wird, der als Daten
definiert ist, die bedeuten, daß kein
Dateneintrag vorhanden ist, bei dem Codebaumhalteschritt;
- (2) Halten eines Codebaums, in dem eine Kombination aus Eingangsdaten
und einem Kontext, der aus n kontinuierlichen Daten gebildet ist,
denen die Eingangsdaten folgen, gespeichert ist, bei dem Kontextbaumhalteschritt;
- (3) Neueintragen, bei dem Kontextbaum-Neueintragschritt, von
Daten in den Kontextbaum, der bei dem Kontextbaumhalteschritt gehalten
wird, falls die Kombination aus den Eingangsdaten und dem Kontext
bei dem Kontextbaumhalteschritt nicht gehalten wurde;
- (4) Neueintragen, bei dem Codebaum-Neueintragschritt, der Daten
in den Codebaum, der bei dem Codebaumhalteschritt gehalten wird,
falls die Kombination aus den Eingangsdaten und dem Kontext bei
dem Kontextbaumhalteschritt nicht gehalten wurde;
- (5) Speichern, bei dem Neueintragschritt, der Daten in einem
neuen Blatt, das durch Verzweigen eines Blattes erhalten wird, das
ein Datenspeicherpunkt an dem Codebaum ist, der bei dem Codebaumhalteschritt
gehalten wird, falls die Kombination aus den Eingangsdaten und dem
Kontext bei dem Kontextbaumhalteschritt nicht gehalten wurde;
- (6) Ändern,
bei dem Kontextänderungsschritt,
des Kontextes, falls die Kombination aus den Eingangsdaten und dem
Kontext bei dem Kontextbaumhalteschritt nicht gehalten wurde;
- (7) Ausgeben eines Codes gemäß der Gabelung eines
Weges von einem oberen Ende des Codebaums zu einem Blatt, in dem
die Eingangsdaten oder ein Escape-Code gespeichert sind, bei dem Codeausgabeschritt;
- (8) Austauschen eines Blattes, in dem die Eingangsdaten oder
ein Escape-Code gespeichert sind, gegen ein anderes Blatt oder einen
internen Knoten, der als Gabelungspunkt definiert ist, das obere
Ende des Codebaums ausgenommen, bei dem Codebaum-Umordnungsschritt;
und
- (9) Verzweigen eines Blattes, in dem der Escape-Code gespeichert
ist, um den Escape-Code und die neuen Daten in zwei jeweiligen neu
erhaltenen Blättern
einzutragen.
-
Die
obige Datenkomprimierungsvorrichtung kann eine hohe Codierrate im
Falle der Daten vorsehen, die den obigen spezifischen Code relativ
häufig ausgeben,
oder in einem frühen
Stadium, in dem der Eintrag von Kontexten, die bei dem Codebaumhalteschritt
gehalten werden, nicht ausreicht. Falls der Codebaum-Umordnungsschritt
vor dem obigen Codebaum-Neueintragschritt ausgeführt wird, ist es zum Beispiel
möglich,
einen Code oder den spezifischen Code mit nur 2 Bits auszudrücken. Falls
der Codebaum-Umordnungsschritt nach dem Codebaum-Neueintragschritt
ausgeführt
wird, ist es möglich,
den spezifischen Code mit nur 1 Bit auszudrücken. Dadurch kann die Codiereffektivität außerordentlich
verbes sert werden. Bei dem obigen Codebaum-Neueintragschritt werden
die Daten immer nacheinander neu eingetragen, so daß jedes
Mal nur Kontexte mit einer hohen Wiederholbarkeit in den höheren Grad
des Codebaums eingetragen werden. Als Resultat ist es möglich, einen
Rückgang
der Codiereffektivität
auf Grund der Existenz von Daten zu verhindern, die einmal in den
Codebaum eingetragen worden sind, tatsächlich aber nicht verwendet
werden. Dadurch kann die Codiereffektivität in hohem Maße weiter
außerordentlich
verbessert werden, nachdem genügend
Daten eingetragen worden sind.
-
Bei
dem Neueintragprozeß bei
dem obigen Codebaum-Neueintragschritt (4) ist es möglich, ein Blatt,
das am weitesten von der Wurzel entfernt ist, die als oberes Ende
des Codebaums definiert ist, von Blättern unter demselben Kontext
zu verzweigen und Daten, die in dem verzweigten Blatt gespeichert
gewesen sind, und neue Daten in zwei jeweiligen, durch die Verzweigung
neu erhaltenen Blättern
einzutragen. Alternativ ist es möglich,
das zuletzt eingetragene Blatt von Blättern unter demselben Kontext
zu verzweigen und Daten, die in dem verzweigten Blatt gespeichert
waren, und neue Daten in zwei jeweiligen, durch die Verzweigung
neu erhaltenen Blättern
einzutragen.
-
Bei
dem obigen Neueintragschritt (5) wird ein Blatt, das von der Wurzel
am weitesten entfernt ist, die als oberes Ende des Codebaums definiert
ist, von Blättern
unter demselben Kontext verzweigt, so daß Daten, die in dem verzweigten
Blatt gespeichert waren, und neue Daten in zwei jeweiligen, durch
die Verzweigung neu erhaltenen Blättern eingetragen werden. Alternativ
wird ein Blatt, bei dem der Eintrag zuletzt erfolgte, von Blättern unter
demselben Kontext verzweigt, so daß Daten, die in dem verzweigten Blatt
gespeichert waren, und neue Daten in zwei jeweiligen, durch die
Verzweigung neu erhaltenen Blättern
eingetragen werden.
-
Gemäß dem obigen
Datenkomprimierungsverfahren dieser Erfindung ist es möglich, eine
Codelänge
von Daten mit der niedrigsten Auftrittshäufigkeit, die nicht häufig verwendet
werden, zu verlängern.
Deshalb ist es möglich,
eine Verringerung der Effektivität
des Codierens zum Beispiel auf Grund einer Vergrößerung der Codelänge um 1
Bit zu verhindern und eine Verarbeitungsrate bei der Datenkomprimierung
außerordentlich
zu erhöhen.
Die neuen Daten, die in dem zuletzt eingetragenen Blatt gespeichert
waren, können
als Daten mit relativ langer Codelänge approximiert werden, so
daß die
Verarbeitungsrate bei der Datenkomprimierung mehr erhöht werden
kann.
-
Das
Datendekomprimierungsverfahren dieser Erfindung dient zum Dekomprimieren
von codierten Daten, die durch Decodieren von Eingangsdaten gemäß einem
Verlauf der Eingangsdaten in der Vergangenheit erhalten wurden,
und umfaßt
die folgenden Schritte:
- (1) einen Kontextbaumhalteschritt,
um einen Kontextbaum zu halten, in dem eine Kombination aus decodierten
Daten und einem Kontext gespeichert ist;
- (2) einen Codebaumhalteschritt, um Codebäume zu halten, die jeweils
für jeden
Kontext unabhängig
sind;
- (3) einen Codebaumbestimmungsschritt, um einen Codebaum von
Daten zu bestimmen, die bis unmittelbar zuvor decodiert worden sind;
- (4) einen Decodierschritt, um einen Code durch Scannen eines
Weges von einer Wurzel, die ein oberes Ende eines Codebaums darstellt,
zu einem Blatt, das ein Datenspeicherpunkt ist, gemäß dem Code
zu decodieren;
- (5) einen Kontextänderungsschritt,
um den Kontext zu ändern,
falls das erreichte Blatt ein spezifischer Code in dem Codebaum
ist;
- (6) einen Codebaum-Umordnungsschritt, um Blätter der decodierten Daten
und des spezifischen Codes gegen andere Blätter oder einen internen Knoten
auszutauschen, der ein Gabelungspunkt ist;
- (7) einen Neueintragschritt, um die decodierten Daten in den
Codebaum neu einzutragen, wenn der spezifische Code decodiert ist;
- (8) einen Kontexteintragschritt, um die Daten, die bei dem Neueintragschritt
eingetragen worden sind, in den Kontextbaum bei dem Kontextbaumhalteschritt
einzutragen; und
- (9) einen Neueintragschritt, um dasselbe Blatt wie ein Blatt,
das in einem Codierer selektiert worden ist, um verzweigt zu werden,
zu verzweigen, um die neuen Daten darin einzutragen.
-
Das
obige Datendekomprimierungsverfahren dieser Erfindung funktioniert
wie folgt:
- (1) Halten eines Kontextbaums, in
dem eine Kombination aus decodierten Daten und einem Kontext gespeichert
wird, bei dem Kontextbaumhalteschritt;
- (2) Halten von Codebäumen,
die jeweils für
jeden Kontext unabhängig
sind, bei dem Codebaumhalteschritt;
- (3) Bestimmen eines Codebaums eines Codes von decodierten Daten,
die bis unmittelbar zuvor decodiert worden sind, bei dem Codebaumbestimmungsschritt;
- (4) Decodieren eines Codes durch Scannen eines Weges von einer
Wurzel, die ein oberes Ende eines Codebaums darstellt, zu einem
Blatt, das ein Datenspeicherpunkt ist, gemäß dem Code bei dem Decodierschritt;
- (5) Ändern
des Kontextes, falls das erreichte Blatt ein spezifischer Code in
dem Codebaum ist, bei dem Kontextänderungsschritt;
- (6) Austauschen von Blättern
der decodierten Daten und des spezifischen Codes gegen andere Blätter oder
einen internen Knoten, der ein Gabelungspunkt ist, bei dem Codebaum-Umordnungsschritt;
- (7) Neueintragen, bei dem Neueintragschritt, der decodierten
Daten in den Codebaum, wenn der spezifische Code decodiert ist;
- (8) Eintragen, bei dem Kontextbaumeintragschritt, der Daten,
die bei dem Neueintragschritt in dem Codebaum eingetragen worden
sind, der bei dem Kontextbaumhalteschritt gehalten wurde; und
- (9) Verzweigen desselben Blattes wie ein Blatt, das in einem
Codierer selektiert worden ist, um verzweigt zu werden, um die neuen
Daten bei dem Neueintragschritt darin einzutragen.
-
Gemäß dem obigen
Datendekomprimierungsverfahren dieser Erfindung kann jedes der Blätter, die
in zwei geteilt werden, eine Codelänge von zum Beispiel [(Codelänge eines
Blattes vor der Teilung) + 1] Bits haben, und ein Code der neu eingetragenen
Daten oder der spezifische Code kann eine Codelänge von lediglich 2 Bits bei
dem Datenneueintragschritt haben, ähnlich wie in dem Codierer
(bei dem Komprimierungsverfahren). Als Resultat ist es möglich, eine
Effektivität
beim Decodieren von Daten außerordentlich
zu erhöhen,
falls Daten verarbeitet werden, in denen eine relativ große Anzahl
der spezifischen Codes decodiert wird, oder in einem frühen Stadium,
wenn der Wörterbucheintrag
(Eintrag von Symbolen in dem Codebaum) nicht ausreicht. Falls der
Codebaum-Umordnungsschritt vor dem Datenneueintragschritt ausgeführt wird,
können
die decodierten Daten oder der spezifische Code zum Beispiel eine
Codelänge
von lediglich 2 Bits haben. Falls der Codebaum-Umordnungsschritt
nach dem Neueintragschritt ausgeführt wird, kann der spezifische Code
eine Codelänge
von nur 1 Bit haben. Dadurch kann eine Effektivität bei der
Datendekomprimierung weiter erhöht
werden. Zusätzlich
dazu führt
der Dekomprimierer denselben Neuein tragschritt wie der Codierer
aus, so daß es
möglich
ist, die Daten, die in dem Komprimierer codiert worden sind, akkurat
zu decodieren.
-
Das
Datendekomprimierungsverfahren dieser Erfindung dient zum De komprimieren
von Eingangsdaten, die gemäß einem
Verlauf der Eingangsdaten in der Vergangenheit codiert worden sind,
und umfaßt
die folgenden Schritte:
- (1) einen Codebaumhalteschritt,
um Codebäume zu
halten, in denen jeweils ein Escape-Code im voraus eingetragen wurde,
der als Daten definiert ist, die bedeuten, daß keine Daten gespeichert sind;
- (2) einen Kontextbaumhalteschritt, um einen Kontextbaum zu halten,
in dem eine Kombination aus decodierten Daten und einem Kontext
gespeichert ist;
- (3) einen Codebaumbestimmungsschritt, um einen Codebaum von
den Daten zu bestimmen, die bis unmittelbar zuvor decodiert worden
sind;
- (4) einen Decodierschritt, um einen Code durch Scannen eines
Weges von einer Wurzel, die ein oberes Ende eines Codebaums darstellt,
zu einem Blatt, das ein Datenspeicherpunkt ist, gemäß dem Code
zu decodieren;
- (5) einen Kontextbaum-Umordnungsschritt, um den Kontext zu ändern, falls
das erreichte Blatt ein Escape-Code ist;
- (6) einen Codebaum-Umordnungsschritt, um Blätter der decodierten Daten
und eines Escape-Codes gegen andere Blätter oder einen internen Knoten
auszutauschen, der ein Gabelungspunkt ist;
- (7) einen Neueintragschritt, um die decodierten Daten in den
Codebaum neu einzutragen, wenn ein Escape-Code decodiert ist;
- (8) einen Kontexteintragschritt, um die Daten, die bei dem Neueintragschritt
in den Codebaum eingetragen worden sind, bei dem Kontextbaumhalteschritt
einzutragen; und
- (9) einen Neueintragschritt, um dasselbe Blatt wie ein Blatt,
das in einem Codierer selektiert worden ist, um verzweigt zu werden,
zu verzweigen, um die neuen Daten in ihm einzutragen.
-
Das
obige Datendekomprimierungsverfahren dieser Erfindung funktioniert
wie folgt:
- (1) Halten von Codebäumen, in
denen jeweils ein Escape-Code gespeichert wurde, der als Daten definiert
ist, die bedeuten, daß kein
Dateneintrag vorhanden ist, bei dem Codebaumhalteschritt;
- (2) Halten eines Kontextbaums, in dem eine Kombination aus decodierten
Daten und einem Kontext gespeichert wird, bei dem Kontextbaumhalteschritt;
- (3) Bestimmen eines Codebaums eines Codes von Daten, die bis
unmittelbar zuvor decodiert worden sind, bei dem Codebaumbestimmungsschritt;
- (4) Decodieren eines Codes durch Scannen eines Weges von einer
Wurzel, die ein oberes Ende eines Codebaums darstellt, zu einem
Blatt, das ein Datenspeicherpunkt ist, gemäß dem Code bei dem Decodierschritt;
- (5) Ändern
des Kontextes, falls das erreichte Blatt ein Escape-Code ist, bei
dem Kontextänderungsschritt;
- (6) Austauschen von Blättern
der decodierten Daten und eines Escape-Codes gegen andere Blätter oder
einen internen Knoten, der ein Gabelungspunkt ist, bei dem Codebaum-Umordnungsschritt;
- (7) Neueintragen der decodierten Daten in dem Codebaum, wenn
ein Escape-Code decodiert ist, bei dem Neueintragschritt;
- (8) Eintragen, bei dem Kontextbaumeintragschritt, der Daten,
die bei dem Neueintragschritt in dem Codebaum eingetragen worden
sind, der bei dem Kontextbaumhalteschritt gehalten wurde; und
- (9) Verzweigen desselben Blattes wie ein Blatt, das in einem
Codierer selektiert worden ist, um verzweigt zu werden, um darin
die neuen Daten bei dem Neueintragschritt einzutragen.
-
Gemäß dem obigen
Datendekomprimierungsverfahren kann jedes der Blätter, die in zwei geteilt wurden,
eine Codelänge
von zum Beispiel [(Codelänge
eines Blattes vor der Teilung) + 1] Bits haben, und ein Code der
neu eingetragenen Daten oder der spezifische Code kann eine Codelänge von
lediglich 2 Bits bei dem Datenneueintragschritt haben, ähnlich wie
in dem Codierer (bei dem Komprimierungsverfahren). Als Resultat
ist es möglich,
eine Effektivität
beim Decodieren von Daten außerordentlich zu
erhöhen,
falls Daten verarbeitet werden, in denen eine relativ große Anzahl
der spezifischen Codes decodiert wird, oder in einem frühen Stadium,
wenn der Wörterbucheintrag
(Eintrag von Symbolen in dem Codebaum) nicht ausreicht. Falls der
Codebaum-Umordnungsschritt vor dem Datenneueintragschritt ausgeführt wird,
können
die Daten oder der spezifische Code zum Beispiel eine Codelänge von lediglich
2 Bits haben. Falls der Codebaum-Umordnungsschritt
nach dem Neueintragschritt ausgeführt wird, kann der spezifische
Code eine Codelänge
von nur 1 Bit haben. Dadurch kann eine Effektivität beim Decodieren
von Daten weiter erhöht
werden. Zusätzlich
dazu führt
der Codierer denselben Neueintragschritt wie der Dekomprimierer
aus, so daß es
möglich
ist, die Daten, die in dem Codierer codiert worden sind, akkurat
zu decodieren.
-
9 ist
ein Blockdiagramm einer Vorrichtung, die zum Implementieren des
oben beschriebenen Datenkomprimierungsverfahrens gemäß dieser Erfindung
verwendet wird. Die in 9 gezeigte Datenkomprimierungsvorrichtung
codiert Eingangsdaten gemäß einem
Verlauf des Auftretens der Eingangsdaten in der Vergangenheit.
-
In 9 bezeichnet
Bezugszeichen 301 ein Codebaumhaltemittel, bezeichnet 302 ein
Kontextbaumhaltemittel, bezeichnet 303 ein Kontexteintragmittel,
bezeichnet 304 ein Codeeintragmittel, bezeichnet 305 ein
Kontextänderungsmittel,
bezeichnet 306 ein Codiermittel und bezeichnet 307 ein
Codeaktualisierungsmittel.
-
Das
Codebaumhaltemittel 301 hält Codebäume, in denen jeweils ein Escape-Code
im voraus eingetragen wurde, der im voraus als Daten definiert ist,
die bedeuten, daß kein
Dateneintrag vorhanden ist. Das Kontextbaumhaltemittel 302 hält einen
Kontextbaum, in dem eine Kombination aus Eingangsdaten und einem
Kontext gespeichert ist. Das Kontexteintragmittel 303 trägt Daten
in dem Kontextbaum neu ein, nachdem ein Escape-Code decodiert worden
ist.
-
Das
Codeeintragmittel 304 verzweigt ein Blatt, das ein Datenspeicherpunkt
für einen
Escape-Code in dem Codebaum ist, nachdem der Escape-Code codiert
worden ist, um die Daten darin neu einzutragen. Das Kontextänderungsmittel 305 ändert den
Kontext, falls die Kombination aus den Eingangsdaten und dem Kontext
in dem Kontextbaum nicht gespeichert ist.
-
Das
Codiermittel 306 gibt einen Code gemäß einem Weg von einem oberen
Ende des Codebaums zu einem Blatt aus, in dem die Eingangsdaten
oder der Escape-Code gespeichert sind. Das Codeaktualisierungsmittel 307 tauscht
ein Blatt, in dem die decodierten Daten oder der Escape-Code gespeichert sind,
gegen ein anderes Blatt oder einen internen Knoten aus.
-
In
der obigen Datenkomprimierungsvorrichtung hält das Codebaumhaltemittel 301 Codebäume, in
denen jeweils ein Escape-Code im voraus eingetragen wurde, der als
Daten definiert ist, die bedeuten, daß kein Dateneintrag vorhanden
ist, und das Kontextbaumhaltemittel 302 hält einen
Kontext baum, in dem eine Kombination aus Eingangsdaten und einem
Kontext gespeichert ist.
-
Das
Kontexteintragmittel 303 trägt Daten in dem Kontextbaum
neu ein, nachdem der Escape-Code codiert worden ist, das Codeeintragmittel 304 verzweigt
ein Blatt, das ein Datenspeicherpunkt für den Escape-Code in dem Codebaum
ist, nachdem der Escape-Code codiert worden ist, um die Daten darin neu
einzutragen, und das Kontextänderungsmittel 305 ändert den
Kontext, falls die Kombination aus den Eingangsdaten und dem Kontext
nicht in dem Kontextbaum gehalten wird.
-
Das
Codiermittel 306 gibt einen Code gemäß einem Weg von einem oberen
Ende des Codebaums zu einem Blatt aus, in dem die Eingangsdaten
oder der Escape-Code gespeichert sind, und das Codeaktualisierungsmittel 307 tauscht
ein Blatt, in dem die codierten Daten oder der Escape-Code gespeichert sind,
gegen ein anderes Blatt oder einen internen Knoten aus.
-
Die
obige Datenkomprimierungsvorrichtung dieser Erfindung kann ein hohe
Codierrate im Falle von Daten vorsehen, bei denen der Escape-Code
relativ oft ausgegeben wird, oder in einem frühen Stadium, wenn der Eintrag
von Kontexten, die in dem Kontextbaumhaltemittel 301 gehalten
werden, nicht ausreicht. Falls die Codeaktualisierung, die durch das
Codeaktualisierungsmittel 307 ausgeführt wird, vor dem Codeeintrag
erfolgt, der durch das Codeeintragmittel 304 vorgenommen
wird, kann der Code oder der Escape-Code eine Codelänge von
beispielsweise lediglich 2 Bits haben. Falls die Codeaktualisierung
durch das Codeaktualisierungsmittel 307 nach dem Codeeintrag
durch das Codeeintragmittel 304 ausgeführt wird, kann der Escape-Code
eine Codelänge
von lediglich 1 Bit haben, so daß eine Effektivität beim Codieren
außerordentlich
verbessert werden kann. Ferner wird der Neueintrag eines Codes durch
das Codeeintragmittel 304 immer nacheinander vorgenommen,
so daß es
möglich
ist, eine Effektivitätsverringerung
des Codierens auf Grund der Existenz von Daten, die einmal in den
Codebaum eingetragen worden sind, tatsächlich aber nicht verwendet
werden, zu verhindern. Dadurch kann eine Effektivität des Codierens
außerordentlich
verbessert werden, nachdem Daten in ausreichendem Maße eingetragen
worden sind. Als Resultat kann die Leistung der Datenkomprimierungsvorrichtung
spürbar verbessert
werden.
-
10 ist ein Blockdiagramm einer Vorrichtung, die
zum Implementieren des oben beschriebenen Datenkomprimierungsverfahrens
dieser Erfindung verwendet wird. Die in 10 gezeigte
Datenkomprimierungsvorrichtung hat ein Codebaumhaltemittel 301,
ein Kontextbaumhaltemittel 302, ein Kontexteintragmittel 303,
ein Kontextänderungsmittel 305,
ein Codiermittel 306 und ein Codeaktualisierungsmittel 307,
die denen von 9 ähnlich sind.
-
Bezugszeichen 310 bezeichnet
ein Verzweigungspositionssuchmittel. Das Verzweigungspositionssuchmittel 310 sucht
ein Blatt, das die längste
Codelänge
an einem Codebaum hat.
-
Bezugszeichen 311 bezeichnet
ein Codeeintragmittel. Das Codeeintragmittel 311 verzweigt
ein Blatt, das ein Datenspeicherpunkt ist, der durch das Verzweigungspositionssuchmittel 310 gesucht
wird, um Daten darin neu einzutragen, nachdem ein Escape-Code codiert
worden ist.
-
In
der obigen Datenkomprimierungsvorrichtung hält das Codebaumhaltemittel 301 Codebäume, in
denen jeweils ein Escape-Code im voraus eingetragen wurde, der als
Daten definiert ist, die bedeuten, daß kein Dateneintrag vorhanden
ist, und das Kontextbaumhaltemittel 302 hält einen
Kontextbaum, in dem eine Kombination aus Eingangsdaten und einem
Kontext gespeichert ist.
-
Das
Kontexteintragmittel 303 trägt Daten in den Kontext neu
ein, nachdem ein Escape-Code codiert worden ist, das Verzweigungspositionssuchmittel 310 sucht
ein Blatt mit der längsten
Codelänge, und
das Codeeintragmittel 311 verzweigt ein Blatt, das ein
Datenspeicherpunkt ist, der durch das Verzweigungspositionssuchmittel 310 gesucht
wird, nach dem Codieren des Escape-Codes, um die Daten darin neu
einzutragen.
-
Das
Kontextänderungsmittel 305 ändert den Kontext,
falls die Kombination aus den Eingangsdaten und dem Kontext in dem
Kontext nicht gehalten wird, das Codiermittel 306 gibt
einen Code gemäß der Gabelung
eines Weges von einem oberen Ende des Codebaums zu einem Blatt aus,
in dem die Eingangsdaten oder ein Escape-Code gespeichert sind, und
das Codeaktualisierungsmittel 307 tauscht ein Blatt, in
dem die codierten Daten oder der Escape-Code gespeichert sind, gegen
ein anderes Blatt oder einen Knoten aus.
-
Die
Datenkomprimierungsvorrichtung dieser Erfindung kann eine lange
Codelänge
für selten
verwendete Daten vergeben, die die niedrigste Auftrittshäufigkeit
haben, so daß es
zum Beispiel möglich
ist, einen Rückgang
der Effektivität
beim Codieren auf Grund einer um 1 Bit vergrößerten Codelänge zu verhindern,
wodurch eine Verarbeitungsrate bei der Datenkomprimierung und außerdem eine
Leistung der Datenkomprimierungsvorrichtung außerordentlich verbessert wird.
-
11 ist ein Blockdiagramm einer Vorrichtung, die
zum Implementieren des oben beschriebenen Datenkomprimierungsverfahrens
dieser Erfindung verwendet wird. Die in 11 gezeigte
Datenkomprimierungsvorrichtung hat ein Codebaumhaltemittel 301,
ein Kontextbaumhaltemittel 302, ein Kontexteintragmittel 303,
ein Kontextänderungsmittel 305,
ein Codiermittel 306 und ein Codeaktualisierungsmittel 307,
die denen von 9 ähnlich sind.
-
Bezugszeichen 308 bezeichnet
ein Verzweigungspositionshaltemittel. Das Verzweigungspositionshaltemittel 308 hält eine
Position eines Blattes, das ein Datenspeicherpunkt für neu eingetragene Daten
in einem Codebaum ist.
-
Bezugszeichen 309 bezeichnet
ein Codeeintragmittel. Das Codeeintragmittel 309 verzweigt
ein Blatt an einer Position, die in dem Verzweigungspositionshaltemittel 308 gehalten
wird, nachdem ein Escape-Code codiert worden ist, um darin die Daten neu
einzutragen.
-
In
der obigen Datenkomprimierungsvorrichtung hält das Codebaumhaltemittel 301 Codebäume, in
denen jeweils ein Escape-Code im voraus eingetragen wurde, der als
Daten definiert ist, die bedeuten, daß kein Dateneintrag vorhanden
ist, und das Kontextbaumhaltemittel 302 hält einen
Kontextbaum, in dem eine Kombination aus Eingangsdaten und einem
Kontext gespeichert ist.
-
Das
Kontexteintragmittel 303 trägt Daten in den Kontextbaum
neu ein, nachdem der Escape-Code codiert worden ist, das Verzweigungspositionshaltemittel 308 hält eine
Position eines Blattes, das ein Datenspeicherpunkt für neu eingetragene
Daten in dem Codebaum ist, und das Codeeintragmittel 309 verzweigt
ein Blatt an einer Position, die in dem Verzweigungspositionshaltemittel 308 gehalten
wird, nach dem Codieren des Escape-Codes, um die Daten darin neu
einzutragen.
-
Das
Kontextänderungsmittel 305 ändert den Kontext,
falls die Kombination aus den Eingangsdaten und dem Kontext in dem
Kontextbaum nicht gehalten wird, das Codiermittel 306 gibt
einen Code gemäß der Gabelung
eines Weges von einem oberen Ende des Codebaums zu einem Blatt aus,
in dem die Eingangsdaten oder der Escape-Code eingetragen sind,
und das Codeaktualisierungsmittel 307 tauscht ein Blatt,
in dem die Daten oder der Escape-Code gespeichert sind, gegen ein anderes
Blatt oder einen internen Knoten aus, der ein Gabelungspunkt ist.
-
Die
obige Datenkomprimierungsvorrichtung dieser Erfindung kann die neuen
Daten, die in dem Blatt gespeichert sind und zuletzt eingetragen
worden sind, Daten approximieren, die eine relativ lange Codelänge haben,
wodurch eine Verarbeitungsrate bei der Datenkomprimierung außerordentlich
erhöht wird
und eine Verarbeitungslast auf der Datenkomprimierungsvorrichtung
außerordentlich
reduziert wird.
-
12 ist ein Blockdiagramm einer Vorrichtung, die
zum Implementieren des obenerwähnten Datendekomprimierungsverfahrens
dieser Erfindung verwendet wird. Die in 12 gezeigte
Datenwiederherstellungsvorrichtung decodiert einen Code, der gemäß einem
Verlauf von Eingangsdaten in der Vergangenheit codiert worden ist.
-
In 12 bezeichnet Bezugszeichen 401 ein Codebaumhaltemittel,
bezeichnet 402 ein Kontextbaumhaltemittel, bezeichnet 403 ein
Codebaumbestimmungsmittel, bezeichnet 404 ein Decodiermittel,
bezeichnet 405 ein Kontextänderungsmittel, bezeichnet 406 ein
Codeaktualisierungsmittel, bezeichnet 407 ein Codeeintragmittel
und bezeichnet 408 ein Kontextbaumeintragmittel.
-
Hierbei
hält das
Codebaumhaltemittel 401 Codebäume, in denen jeweils ein Escape-Code
im voraus eingetragen wurde, der als Daten definiert ist, die bedeuten,
daß keine
Daten eingetragen sind. Das Kontextbaumhaltemittel 402 hält einen
Kontextbaum, in dem eine Kombination aus Eingangsdaten und einem
Kontext gespeichert ist. Das Codebaumbestimmungsmittel 403 bestimmt
einen Codebaum von Daten, die bis unmittelbar zuvor decodiert worden
sind.
-
Ferner
decodiert das Decodiermittel 404 einen Code durch Scannen
eines Weges von einer Wurzel, die ein oberes Ende des Codebaums
darstellt, zu einem Blatt, das ein Daten speicherpunkt ist, gemäß dem Code.
Das Kontextänderungsmittel 405 ändert den
Kontext, falls das erreichte Blatt ein Escape-Code ist. Das Codeaktualisierungsmittel 406 tauscht
Blätter
der decodierten Daten und eines Escape-Codes gegen andere Blätter oder
einen internen Knoten aus, der ein Gabelungspunkt ist.
-
Das
Codeeintragmittel 407 verzweigt ein Blatt des Escape-Codes,
falls der Escape-Code decodiert wird, um die decodierten Daten darin
neu einzutragen. Das Kontextbaumeintragmittel 408 trägt die Daten,
die durch das Codeeintragmittel 407 eingetragen worden
sind, in den Kontextbaum ein, der durch das Kontextbaumhaltemittel 402 gehalten
wird.
-
In
der obigen Datendekomprimierungsvorrichtung hält das Codebaumhaltemittel 401 Codebäume, in
denen jeweils ein Escape-Code im voraus eingetragen wurde, der als
Daten definiert ist, die bedeuten, daß kein Dateneintrag vorhanden
ist, hält das
Kontexthaltemittel 402 einen Codebaum, in dem eine Kombination
aus decodierten Daten und einem Kontext gespeichert ist, und bestimmt
das Codebaumbestimmungsmittel 403 einen Codebaum eines Codes
von Daten, die bis unmittelbar zuvor decodiert worden sind.
-
Das
Decodiermittel 404 decodiert einen Code durch Scannen eines
Weges von einer Wurzel, die ein oberes Ende des Codebaums darstellt,
zu einem Blatt, das ein Datenspeicherpunkt ist, gemäß dem Code,
und das Kontextänderungsmittel 405 ändert den
Kontext, falls das erreichte Blatt ein Escape-Code ist.
-
Das
Codeaktualisierungsmittel 406 tauscht Blätter der
decodierten Daten und des Escape-Codes gegen andere Blätter oder
einen internen Knoten aus, der ein Gabelungspunkt ist, das Codeeintragmittel 407 verzweigt
ein Blatt des Escape-Codes,
wenn der Escape-Code codiert ist, um die Daten darin neu einzutragen,
und das Kontextbaumeintragmittel 408 trägt die Daten, die durch das
Codeeintragmittel 407 eingetragen worden sind, in den Kontextbaum
ein, der durch das Kontextbaumhaltemittel 402 gehalten wird.
-
Die
obige Datenwiederherstellungsvorrichtung dieser Erfindung kann eine
hohe Decodierrate im Falle von Daten vorsehen, bei denen der Escape-Code
relativ oft ausgegeben wird, oder in einem frühen Stadium, wenn der Eintrag
des Kontextbaums, der durch das Kontextbaumhaltemittel 402 gehalten
wird, nicht ausreicht. Falls das Codeeintragmittel 407 den
Eintrag eines Codes vor der Codeaktualisierung durch das Codeaktualisierungsmittel 406 ausführt, kann
der Code oder der Escape-Code zum Beispiel eine Codelänge von
lediglich 2 Bits haben. Falls das Codeaktualisierungsmittel 406 die
Codeaktualisierung vor dem Codeeintrag durch das Codeeintragmittel 407 ausführt, kann
der Escape-Code eine Codelänge
von lediglich 1 Bit haben. Dadurch kann eine Effektivität beim Decodieren
der Daten außerordentlich
verbessert werden. Ferner wird der Neueintrag eines decodierten
Codes durch das Codeeintragmittel 407 immer nacheinander
ausgeführt, so
daß immer
nur Daten mit Wiederholbarkeit in den höheren Grad des Codebaums eingetragen
werden. Dadurch kann eine Verringerung der Effektivität des Decodierens
von Daten auf Grund der Existenz von Daten, die einmal in den Codebaum
eingetragen worden sind, tatsächlich
aber nicht verwendet werden, verhindert werden, so daß eine Effektivität des Decodierens
von Daten weitgehend verbessert werden kann, nachdem Daten in ausreichendem
Maße eingetragen
worden sind. Als Resultat kann eine Leistung der Datendekomprimierungsvorrichtung
spürbar verbessert
werden.
-
13 ist ein Blockdiagramm einer Vorrichtung, die
zum Implementieren des obenerwähnten Datendekomprimierungsverfahrens
dieser Erfindung verwendet wird. Die in 13 gezeigte
Datendekomprimierungsvorrichtung hat ein Codebaum haltemittel 401,
ein Kontextbaumhaltemittel 402, ein Codebaumbestimmungsmittel 403,
ein Decodiermittel 404, ein Kontextänderungsmittel 405 und
ein Codeaktualisierungsmittel 406, die jenen von 12 ähnlich
sind.
-
Bezugszeichen 411 bezeichnet
ein Verzweigungspositionssuchmittel. Das Verzweigungspositionssuchmittel 411 sucht
eine Position eines Blattes mit der längsten Codelänge an dem
Codebaum.
-
Bezugszeichen 412 bezeichnet
ein Codeeintragmittel. Das Codeeintragmittel 412 verzweigt
ein Blatt, das durch das Verzweigungspositionssuchmittel 411 gesucht
wird, nachdem ein Escape-Code codiert worden ist, um neue Daten
darin einzutragen.
-
Bezugszeichen 413 bezeichnet
ein Kontextbaumeintragmittel. Das Kontextbaumeintragmittel 413 trägt Daten,
die durch das Codeeintragmittel 413 eingetragen worden
sind, in den Kontextbaum ein, der durch das Kontextbaumhaltemittel 402 gehalten wird.
-
In
der obigen Datenwiederherstellungsvorrichtung hält das Codebaumhaltemittel 401 Codebäume, in
denen jeweils ein Escape-Code im voraus eingetragen wurde, der als
Daten definiert ist, die bedeuten, daß keine Daten eingetragen sind,
hält das Kontextbaumhaltemittel 402 einen
Kontextbaum, in dem eine Kombination aus decodierten Daten und einem
Kontext gespeichert ist, und bestimmt das Codebaumbestimmungsmittel 403 einen
Codebaum eines Codes von Daten, die bis unmittelbar zuvor decodiert
worden sind.
-
Das
Decodiermittel 404 decodiert einen Code durch Scannen eines
Weges von einer Wurzel, die ein oberes Ende des Codebaums darstellt,
zu einem Blatt, das ein Datenspeicherpunkt ist, und das Kontextänderungsmittel 405 ändert den
Kontext, falls das erreichte Blatt ein Escape-Code ist.
-
Ferner
tauscht das Codeaktualisierungsmittel 406 Blätter der
decodierten Daten und des Escape-Codes gegen andere Blätter oder
einen Knoten aus, der ein Gabelungspunkt ist, sucht das Verzweigungspositionssuchmittel 411 eine
Position eines Blattes mit der längsten
Codelänge
an dem Codebaum, verzweigt das Codeeintragmittel 412 ein
Blatt, das durch das Verzweigungspositionssuchmittel 411 gesucht
wurde, um die Daten darin neu einzutragen, und trägt das Kontextbaumeintragmittel 408 die
Daten, die durch das Codebaumeintragmittel 412 eingetragen
worden sind, in den Kontextbaum ein, der durch das Kontextbaumhaltemittel 402 gehalten
wird.
-
Durch
die obige Datenwiederherstellungsvorrichtung dieser Erfindung können selten
verwendete Daten, die eine niedrige Auftrittshäufigkeit haben, eine längere Codelänge haben,
so daß es
möglich
ist, eine Verringerung der Effektivität des Codierens von Daten zu
minimieren, die durch eine Erhöhung
der Codelänge
um 1 Bit verursacht wird, wodurch eine Verarbeitungsrate bei der
Datenwiederherstellung außerordentlich
erhöht
werden kann und eine Leistung der Datenwiederherstellungsvorrichtung
spürbar
verbessert werden kann.
-
14 ist ein Blockdiagramm einer Vorrichtung, die
zum Implementieren des obenerwähnten Datendekomprimierungsverfahrens
dieser Erfindung verwendet wird. Die in 14 gezeigte
Datendekomprimierungsvorrichtung hat ein Codebaumhaltemittel 401,
ein Kontextbaumhaltemittel 402, ein Codebaumbestimmungsmittel 403,
ein Decodiermittel 404, ein Kontextänderungsmittel 405 und
ein Codeaktualisierungsmittel 406, die jenen von 12 ähnlich
sind.
-
Bezugszeichen 409 bezeichnet
ein Verzweigungspositionshaltemittel. Das Verzweigungspositionshaltemittel 409 hält eine
Position eines Blattes, das in den Codebaum neu eingetragen worden
ist.
-
Bezugszeichen 410 bezeichnet
ein Codeeintragmittel. Das Codeeintragmittel 410 verzweigt
ein Blatt an einer Position, die in dem Verzweigungspositionshaltemittel 409 gehalten
wird, nachdem ein Escape-Code codiert worden ist, um neue Daten
darin einzutragen.
-
Bezugszeichen 414 bezeichnet
ein Kontextbaumeintragmittel. Das Kontextbaumeintragmittel 414 trägt die Daten,
die durch das Codeeintragmittel eingetragen worden sind, in den
Kontextbaum ein, der in dem Kontextbaumhaltemittel 402 gehalten wird.
-
In
der obigen Datendekomprimierungsvorrichtung hält das Codebaumhaltemittel 401 Codebäume, in
denen jeweils ein Escape-Code im voraus eingetragen wurde, der als
Daten definiert ist, die bedeuten, daß keine Daten eingetragen sind,
hält das Kontextbaumhaltemittel 402 einen
Codebaum, in dem eine Kombination aus decodierten Daten und einem
Kontext gespeichert ist, und bestimmt das Codebaumbestimmungsmittel 403 bestimmt
einen Codebaum von den Daten, die bis unmittelbar zuvor decodiert
worden sind.
-
Das
Decodiermittel 404 decodiert einen Code durch Scannen eines
Weges von einer Wurzel, die ein oberes Ende des Codebaums darstellt,
zu einem Blatt, das ein Datenspeicherpunkt ist, gemäß dem Code,
das Kontextänderungsmittel 405 ändert den
Kontext, falls das erreichte Blatt ein Escape-Code ist, das Codeaktualisierungsmittel 406 tauscht Blätter der
decodierten Daten und des Escape-Codes gegen andere Blätter oder
einen internen Knoten aus, der ein Gabelungspunkt ist, und das Verzweigungspositionshaltemittel 409 hält eine
Position eines Blattes, das in den Codebaum neu eingetragen worden
ist.
-
Ferner
verzweigt das Codeeintragmittel 410 ein Blatt an einer
Position, die in dem Verzweigungspositionshaltemittel 409 gehalten
wird, nachdem der Escape-Code codiert worden ist, um die Daten darin neu
einzutragen, und das Kontextbaumeintragmittel 408 trägt die Daten,
die durch das Codeeintragmittel 410 eingetragen worden
sind, in den Kontextbaum ein, der durch das Kontextbaumhaltemittel 402 gehalten
wird.
-
Gemäß der obigen
Datendekomprimierungsvorrichtung dieser Erfindung wird der Neueintrag
von Daten an einem Blatt ausgeführt,
in das Daten zuletzt eingetragen worden sind, und die in dem Blatt
gespeicherten Daten, die zuletzt eingetragen worden sind, können Daten
approximiert werden, die eine relativ lange Codelänge haben.
Somit ist es möglich, eine
Verringerung der Effektivität
des Codierens auf Grund einer Vergrößerung einer Codelänge von
selten verwendeten Daten um 1 Bit zu minimieren, so daß eine Verarbeitungsrate
bei der Datendekomprimierung außerordentlich
erhöht
werden kann und ferner eine Leistung der Datenwiederherstellungsvorrichtung
spürbar
verbessert werden kann.
-
(b) Beschreibung der ersten
Ausführungsform
der Erfindung
-
15 ist ein Blockdiagramm einer Datenkomprimierungsvorrichtung
und einer Datendekomprimierungsvorrichtung gemäß einer ersten Ausführungsform
dieser Erfindung. In 15 bezeichnet Bezugszeichen 1 die
Datenkomprimierungsvorrichtung, die ein eingegebenes Zeichen gemäß einem Verlauf
seines Auftretens in der Vergangenheit codiert, um es zu komprimieren,
bezeichnet 2 die Datendekomprimierungsvorrichtung, die
das Zeichen dekomprimiert, das in der Datenkomprimierungsvorrichtung 1 codiert
worden ist.
-
Die
Datenkomprimierungsvorrichtung führt einen
Kontextsammelschritt 11 aus, um Kontexte von eingegebenen
Zeichenkettendaten zu sammeln, um einen Kontextbaum zu erzeugen,
und einen Splay-Codierschritt 12, um einen Codebaum bei
einer Splay-Operation gemäß den Zeichenketten
der Eingangs daten, die bei dem Kontextsammelschritt 11 erhalten
wurden, zu erzeugen und zu aktualisieren.
-
Andererseits
führt die
Datendekomprimierungsvorrichtung 2 einen Splay-Codierschritt 21 aus, um
einen Codebaum bei der Splay-Operation gemäß den Zeichenketten der dekomprimierten
Daten zu erzeugen und zu aktualisieren, die in der Datenkomprimierungsvorrichtung 1 codiert
worden sind, und einen Kontextsammelschritt 22, um Zeichenketten
als dekomprimierte Daten zu sammeln.
-
Im
folgenden wird die Datenkomprimierungsvorrichtung als Codierer und
die Datendekomprimierungsvorrichtung als Decodierer bezeichnet.
-
(1) Beschreibung des Codierers
-
16(a) und 16(b) zeigen
ein Beispiel für
einen Kontextbaum, der bei dem Kontextsammelschritt 11 erzeugt
wird. 16(a) zeigt ein Beispiel, bei
dem Zeichenketten in einem Speicher in Form einer Liste gespeichert
werden, um den Kontextbaum innerhalb eines kurzen Zeitraumes bei
einem Hashing-Verfahren zu durchsuchen. 16(b) zeigt
ein Wörterbuch
(eine Liste) in Baumstruktur, worin die Zeichenketten wie in einer
Elternbeziehung gespeichert werden.
-
Die
Adresse, die in 16(a) gezeigt ist, wird in
Hexadezimaldarstellung ausgedrückt.
Bei dem in 16(a) gezeigten Beispiel beträgt die maximale
Größe des Kontextbaums
4K Knoten (4KW).
-
Falls
somit alle Zeichen im voraus eingetragen werden, ist eine Position
eines Bruder-Knotens in der ersten Ebene, die mit der Wurzel verbindet,
zuvor bekannt, so daß ein
direkter Zugriff ohne Bearbeitung der Liste bei der Suche möglich ist.
-
In
der zweiten Ebene und darunter sind Adressen von Kind-Knoten und
rechten Bruder-Knoten gespeichert. Bei einer Suche wird auf eine
Zeichenkette zugegriffen, indem die Liste bearbeitet wird, während gespeicherte
Zeichen in Form von einer Liste kollationiert werden, bis die Zeichenkette mit
den gespeicherten Zeichen koinzidiert.
-
Wenn
der Kontextbaum initialisiert wird, werden die Adressen auf bis
zu 100 gesetzt. Zu dieser Zeit wird der Dateiend-Code (engl.: End
of File code) (EOF) in eine Adresse 100 in der ersten Ebene eingetragen,
und ein Speicher unter einer Adresse 101 dient für einen neuen Eintrag.
-
17 zeigt ein Beispiel für einen Codebaum, der bei dem
obenerwähnten
Splay-Codierschritt 12 erzeugt wird.
-
Der
Codebaum wird bei der Initialisierung, wie in 17 gezeigt, im wesentlichen auf dieselbe Weise
wie bei der Splay-Tree-Codierung eingerichtet.
-
Falls
die maximale Größe des Codebaums bis
zu 4K Knoten (4KW) entsprechend 16(b) beträgt, werden
die Knoten in dem Codebaum in zwei Typen klassifiziert, nämlich in
einen inneren Knoten (mit einem Kind-Knoten) und einen äußeren Knoten (ein
Ende von jedem Code ohne Blatt oder Kind-Knoten).
-
Bei
der Splay-Codierung werden drei Arrays verwendet, das heißt, ein
oberes, ein linkes und ein rechtes, um auf den Codebaum zuzugreifen,
wie in 18 gezeigt.
-
In
dem oberen Array wird eine Adresse von jedem Knoten bis zu seinem
Eltern-Knoten gespeichert. In dem linken Array wird eine Adresse
von jedem Knoten bis zu seinem linken Kind-Knoten gespeichert. In
dem rechten Array werden Adressen von jedem Knoten bis zu dem rechten
Kind-Knoten gespeichert.
-
In
dem oberen Array werden innere Knoten in den führenden 4 KW [Adresse (hexadezimal) 000-FFF]
gespeichert, und äußere Knoten
werden in den übrigen
4 KW [Adresse (hexadezimal) 1000-1FFF] gespeichert.
-
Auf
die obige Art ist es möglich,
einen Code für
jeden Knoten in dem Kontextbaum mit einer Adresse des Codebaums
in Entsprechung zu bringen; ein Knotenzeiger (Zahl) eines Kontextbaums
+ 4K.
-
Übrigens
hat das obere Array eine Breite von 13 Bits, und die linken und
rechten Arrays haben jeweils eine Breite von 12 Bits.
-
Unter
Bezugnahme auf 19(a) und 19(b) wird als nächstes die Basisoperation des Codebaums,
der die obige Struktur hat, zu der Zeit der Aktualisierung beschrieben.
-
19(a) zeigt eine Basisoperation des Splay-Codes
zu der Zeit der Aktualisierung. Wenn auf ein Zeichen A zugegriffen
wird, wie in 19(a) gezeigt, wird ein Knoten
A gegen einen Knoten C an einem Zweig ausgetauscht, der entgegengesetzt
zu und zwei Stufen über
einem Zweig angeordnet ist, an dem der Knoten A angebracht ist.
-
Falls
auf ein Zeichen C von den Zeichen A bis E zugegriffen wird, wird
der Codebaum zum Beispiel so umgeformt, wie es in 19(b) gezeigt ist.
-
Die
obenerwähnte
Basisoperation wird nämlich
zweimal wiederholt, um den Codebaum zu aktualisieren.
-
Die
Basisoperation beim zweiten Mal dient zum Aktualisieren einer Länge des
Eltern-Knotens von dem Knoten, der beim ersten Mal aktualisiert worden
ist.
-
Falls
eine Tiefe des Codebaums tiefer wird, gestattet es die Wiederholung
der obigen Basisoperation, wie oben erwähnt, einen Abstand von der Wurzel
bis zu dem Knoten C, auf den zugegriffen wird (Code 0100), auf die
Hälfte
zu reduzieren (Code 10). Diese dynamische Rekombination des Codebaums von
der Wurzel bis zu dem Knoten, auf den zugegriffen wird, gestattet
es, daß die
Codetabelle an Eingangsdaten anpaßbar ist.
-
Mit
anderen Worten, die Codeaktualisierung der Splay-Codes ist wie die sogenannte Move-to-Front-Operation
in der linearen Liste, die in einem Binärbaum ausgeführt wird.
-
Unter
Bezugnahme auf die Schritte E1 bis E31 in einem Flußdiagramm,
das in 20 gezeigt ist, werden als
nächstes
ein Prozeß zum
Erzeugen eines Kontextbaums bei dem Kontextsammelschritt 11 und
ein Prozeß zum
Erzeugen und Aktualisieren des Codebaums bei dem Splay-Codierschritt 12,
wie oben erwähnt,
eingehender beschrieben. Hierbei wird ein Eingangszeichen als K
bezeichnet (K ist ein beliebiges Zeichen), und ein Zeichen, das
unmittelbar vor der Eingabe des Zeichens K eingegeben wurde, wird
als P bezeichnet (P ist ein beliebiges Zeichen).
-
Ein
Kontextbaum, ein Codebaum und das unmittelbar vorausgehende Zeichen
P werden initialisiert (Schritt E1).
-
Es
wird eine Prüfung
diesbezüglich
ausgeführt,
ob alle Zeichen, die eingegeben worden sind, codiert sind oder nicht
(Schritt E2). Falls irgendein Eingangszeichen uncodiert verblieben
ist, wird eine Länge
L einer Zeichenkette auf Null gesetzt (Schritt E3), und das Zeichen
K wird eingegeben (Schritt E4).
-
Dann
wird eine Prüfung
diesbezüglich
ausgeführt,
ob das unmittelbar vorausgehende Zeichen P in dem Kontextbaum unter
sich einen Kind-Knoten hat (Schritt E5). Falls das Zeichen P keinen Kind-Knoten
hat, wird ein Code des Grades 0 des Eingangszeichens K ausgegeben
(Schritt E6), und das Eingangszeichen K wird in den Kontextbaum
als Kind-Knoten unter dem unmittelbar vorausgehenden Zeichen P eingetragen
(Schritt E7).
-
Auf
der Seite des Codebaums wird ein Knoten, der zum Eintragen des Zeichens
K und eines Escape-Codes verwendet wird, unter dem unmittelbar vorausgehenden
Zeichen P erzeugt, und dann wird das Zeichen K eingetragen (Schritt
E8). Ein Beispiel für
einen Algorithmus zum Erzeugen eines Knotens ist in 30 gezeigt.
-
Das
unmittelbar vorausgehende Zeichen wird in das Eingangszeichen K
geändert
(Schritt E16). Eine Prüfung
diesbezüglich
wird ausgeführt,
ob eine Länge
L' der unmittelbar
vorausgehenden Zeichenkette einer maximalen Länge Lmax der Zeichenkette gleich
ist oder nicht (Schritt E24).
-
Falls
die Länge
L' der unmittelbar
vorausgehenden Zeichenkette der maximalen Zeichenkettenlänge Lmax
nicht gleich ist, wird eine Prüfung
diesbezüglich
vorgenommen, ob die unmittelbar vorausgehende Zeichenkette mit dem
Code des Grades 1 codiert und ausgegeben worden ist oder nicht (Schritt E25).
-
Falls
die unmittelbar vorausgehende Zeichenkette nicht mit dem Primärcode codiert
worden ist, wird eine Länge
L einer fokussierten Zeichenkette auf die Länge L' der unmittelbar vorausgehenden Zeichenkette
verschoben (Schritt E28). Es folgt eine Prüfung in bezug darauf, ob das
Zeichen K codiert worden ist oder nicht (Schritt E9). Falls das
Zeichen K codiert worden ist, wird der obige Prozeß ab Schritt E2
wiederholt (JA-Route bei Schritt E9). Falls das Zeichen K nicht
codiert worden ist, wird der obige Prozeß ab Schritt E3 wiederholt
(NEIN-Route bei Schritt E9).
-
Falls
ein Zeichen, das in dem Kind-Knoten gespeichert ist, mit dem Eingangszeichen
K bei dem obenerwähnten
Schritt E10 koinzidiert, wird eine Länge der Zeichenkette um 1 vergrößert (Schritt E17).
Es wird eine Prüfung
diesbezüglich
ausgeführt, ob
eine Länge
dieser Zeichenkette der maximalen Codelänge Lmax, die im voraus festgelegt
wurde, gleich ist oder nicht (Schritt E18).
-
Falls
sie nicht gleich ist, wird eine Prüfung diesbezüglich ausgeführt, ob
alle Zeichen der Eingangsdaten codiert worden sind oder nicht (Schritt E19).
Falls irgendein Zeichen verbleibt, das nicht codiert worden ist,
werden die Eingangszeichen bis jetzt zu dem unmittelbar vorausgehenden
Zeichen P verschoben (Schritt E20), und es wird noch ein Zeichen
K eingegeben (Schritt E21). Die Prozedur kehrt dann zu dem Prozeß bei dem
obenerwähnten
Schritt E10 zurück,
wo eine Prüfung
diesbezüglich
ausgeführt
wird, ob ein Zeichen, das in dem Kind-Knoten gespeichert ist, mit
dem Zeichen K koinzidiert oder nicht.
-
Falls
es nicht koinzidiert, wird eine Prüfung diesbezüglich ausgeführt, ob
eine Länge
der Zeichenkette 0 ist oder nicht (Schritt E11). Falls die Länge L gleich
oder größer als
1 ist, mit anderen Worten, das unmittelbar vorausgehende Zeichen
P hat einen Kind-Knoten, aber das entsprechende Zeichen K ist noch
nicht hinzugefügt,
wird ein Escape-Code unter dem unmittelbar vorausgehenden Zeichen
P ausgegeben und ein Code des Grades 0 des Zeichens K ausgegeben
(Schritt E12).
-
Ferner
wird das Zeichen K als Bruder-Knoten des Kind-Knotens unter dem unmittelbar vorausgehenden
Zeichen P in dem Codebaum eingetragen (Schritt E13). Der Escape-Code
unter dem unmittelbar vorausgehenden Zeichen P in dem Codebaum wird
in einen Escape-Code und einen Code des Zeichens K geteilt, und
der Code des Zeichens K wird hinzugefügt (Schritt E14). Codelängen des
Escape-Codes und des Codes des Grades 0K in dem Codebaum werden
als Splay-Codes aktualisiert (Schritt E15).
-
Es
ist möglich,
wie oben erwähnt,
eine verlängerte
Zeichenkette einer codierten Zeichenkette einzutragen, bis die verlängerte Zeichenkette
eine vorbestimmte maximale Zeichenkettenlänge erreicht.
-
Danach
wird über
die obenerwähnten
Schritte E16 und E24 wieder eine Prüfung diesbezüglich ausgeführt, ob
die unmit telbar vorausgehende Zeichenkette als Code des Grades 1
ausgegeben ist oder nicht (Schritt E25).
-
Genauer
gesagt, falls die unmittelbar vorausgehende Zeichenkette als Primärcode des
Grades 1 codiert und ausgegeben ist, wird eine verlängerte Zeichenkette,
die die unmittelbar vorausgehende Zeichenkette ist, zu der ein führendes
Zeichen des verlängerten
Zeichens (der Kette) hinzugefügt
wurde, in den Kontextbaum eingetragen (Schritt E26). Ein Code der
verlängerten
Zeichenkette, die codiert worden ist, wird in den Codebaum eingetragen (Schritt
E27). Dann wird der Prozeß ab
Schritt E28 wiederholt.
-
Das
obige Eintragen des Codes wird so vorgenommen, um den Code des unmittelbar
vorausgehenden Zeichens zu verzweigen und den Code des Grades 1
der Zeichenkette hinzuzufügen,
zu der das Zeichen K hinzugefügt
wurde. Beim Verzweigen der Zeichenkette wird der Escape-Code verzweigt,
da er als Code der codierten Zeichenkette betrachtet wird, um einen
Code der ursprünglichen
Zeichenkette und einen Code der Zeichenkette zu erzeugen, zu der das
Zeichen K hinzugefügt
wurde.
-
Das
unmittelbar vorausgehende Zeichen, das codiert worden ist, wird,
wie oben erwähnt,
zuerst als eine in das Wörterbuch
eingetragene Zeichenkette eingetragen, und dann wird eine Zeichenkette
codiert, die diesem unmittelbar vorausgehenden Zeichen folgt.
-
Falls
die Länge
L der Zeichenkette der maximalen Codelänge Lmax, die im voraus festgelegt wurde,
bei dem obigen Schritt E18 gleich ist, oder falls die Länge L der
Zeichenkette bei Schritt E11 gleich 0 ist, wird ein Code des Grades
1 ausgegeben, der einer Referenznummer eines Zeichens (einer Kette)
des Kontextbaums entspricht (Schritt E22). Eine Codelänge des
Codes des Grades 1, der von dem Codebaum ausgegeben wurde, wird
als Splay-Code aktualisiert (Schritt E23), und danach wird der Prozeß ab dem
obenerwähnten
Schritt E24 ausgeführt.
-
Der
obige Regelschleifenprozeß dient
zum Verlängern
der Anzahl von eingetragenen Zeichen (einer Länge einer Zeichenkette), falls
eine Kombination aus dem unmittelbar vorausgehenden Zeichen P und
dem Eingangszeichen K in den Kontextbaum eingetragen worden ist,
um sie durch eine Einheit einer Zeichenkette einzutragen.
-
Falls
alle Eingangszeichen bei dem obenerwähnten Schritt E2 codiert worden
sind, wird eine Prüfung
diesbezüglich
vorgenommen, ob das unmittelbar vorausgehende Zeichen P in dem Kontextbaum
unter sich einen Kind-Knoten hat oder nicht (Schritt E29). Falls
das unmittelbar vorausgehende Zeichen P einen Kind-Knoten hat, wird
ein Escape-Code unter dem unmittelbar vorausgehenden Zeichen P ausgegeben
(NEIN-Route von
Schritt E29 zu Schritt E30). Dann wird ein Code des Grades 0 von einem
EOF, der Dateiende bedeutet, ausgegeben (Schritt E31), und danach
wird der Prozeß beendet (NEIN-Route von Schritt
E29 zu Schritt E31).
-
Falls
das unmittelbar vorausgehende Zeichen P keinen Kind-Knoten hat,
wird ein Code des Grades 1 von EOF ausgegeben, und der Prozeß wird beendet.
-
Bei
dem Datenkomprimierungsverfahren zum Codieren einer Zeichenkette
als Eingangsdaten gemäß einem
Verlauf ihres Auftretens in der Vergangenheit, um diese zu komprimieren,
werden Zeichenketten von Eingangsdaten jeweilige Nummern verliehen
und in das Wörterbuch
eingetragen, während
die Splay-Codes entsprechend jeder der Zeichenketten bei dem obigen
Prozeß codiert
und aktualisiert werden.
-
Unter
Bezugnahme auf 21 bis 28 wird das
Aktualisieren und Erzeugen des Kontextbaums und des Codebaums als
nächstes
eingehender beschrieben, wobei das obige Eingangszeichen K als Beispiel
auf irgendeinen der Buchstaben a, b und c begrenzt ist und Zeichen "abc, abc, ab und
b" sukzessive eingegeben
werden.
-
Den
Zeichen a, b und c und einem Endcode EOF, der ausgegeben wird, nachdem
alle Eingangsdaten codiert worden sind, werden im voraus jeweilige
Nummern verliehen, wie in 21(a) und 21(b) gezeigt, und als a1,
b2, c3, EOF4 sowohl in den Kontextbaum als auch in den
Codebaum eingetragen.
-
Durch
das Initialisieren des Kontextbaums wird jedes der Zeichen a, b
und c, die an erster Stelle eingetragen worden sind, zu einem unmittelbar
vorausgehenden Zeichen, wie oben erwähnt. Falls kein Kontext vorhanden
ist, der dem unmittelbar vorausgehenden Zeichen folgt, dient das
unmittelbar vorausgehende Zeichen auch als unabhängige einzige Referenznummer.
Bei der folgenden Beschreibung wird angenommen, daß das Zeichen
c ein erstes unmittelbar vorausgehendes Zeichen ist.
-
Der
Codebaum ist, wie in 21(b) gezeigt, ein
binärer
Baum, bei dem ein Code "0" dem eingetragenen
Zeichen zugeordnet wird, wenn ein Weg von der Wurzel zu einem Knoten
an dem Knoten nach links unten verläuft, während "1" dem
eingetragenen Zeichen zugeordnet wird, wenn der Weg von der Wurzel
zu einem Knoten an dem Knoten nach rechts unten verläuft. Zu
der Zeit des Codierens wird ein Weg der Referenznummer eines entsprechenden Zeichens
von dem Knoten zu der Wurzel gestapelt, wird der Weg umgekehrt und
wird ein Code "0" oder "1" in Abhängigkeit davon zugeordnet,
ob der Weg nach links oder nach rechts abfällt, wodurch ein Codewort erhalten
werden kann, das der Referenznummer von jenem Zeichen entspricht.
-
Die
Codes des Grades 0 der Zeichen a1, b2, c3, EOF9 lauten "00,
01, 10 bzw. 11".
-
Wenn
eine Zeichenkette "abc" in einem in 21(a) und 21(b) gezeigten
Zustand eingegeben wird, wird ein neuer Knoten unter "c" (c3) in dem
Kontextbaum erzeugt, da angenommen wird, daß das Zeichen c (c3),
das eingetragen worden ist, ein unmittelbar vorausgehendes Zeichen
ist, und das erste Zeichen "a5" der
Zeichenkette "abc" und ein Escape-Code (ESC6), der keinen Eintrag des Zeichens "a5" darstellt, werden
eingetragen.
-
Da
auf einer Seite des Codebaums "a" in den Codebaum
eingetragen worden ist, wird ein Knoten, bei dem "a" eingetragen worden ist, wie in 22(b) gezeigt, gegen einen Knoten höheren Grades
von "c" ausgetauscht, das
das unmittelbar vorausgehende Zeichen ist, und werden "a" und ein Escape-Code (ESC) eingetragen,
wobei dieses "c" als neue Wurzel angesehen
wird (Codierung des Grades 1).
-
Der
obige Prozeß wird
an den Zeichen "b" und "c" in der Zeichenkette "abc" ausgeführt. Dadurch
werden der Kontextbaum und der Codebaum, wenn "b" eingegeben
wird, so wie in 23(a) bzw. 23(b) gezeigt. Wenn als nächstes "c" eingegeben
wird, werden der Kontextbaum und der Codebaum jeweilig so wie in 24(a) und 24(b) gezeigt.
-
Dieser
Prozeß entspricht
dem obenerwähnten
Regelschleifenprozeß,
der über
die JA-Route bei Schritt E5, die NEIN-Route bei Schritt E10 und die NEIN-Route
bei Schritt E25 ausgeführt
wird, die in 20 gezeigt sind.
-
Falls
kein Kind-Knoten unter einem unmittelbar vorausgehenden Zeichen
in dem Kontextbaum existiert, werden nämlich Knoten, die verwendet
werden, um ein Eingangszeichen und einen Escape-Code in ihnen einzutragen,
unter dem unmittelbar vorausgehenden Zeichen neu erzeugt, um sie
dort einzutragen.
-
Falls
dem Codebaum dasselbe Zeichen wie ein Zeichen, das in der Vergangenheit
eingetragen worden ist, wieder eingegeben wird, wird ein Knoten, in
den das Zeichen in der Vergangenheit eingetragen worden ist, gegen
einen Knoten höheren
Grades eines Knotens ausgetauscht, in den ein unmittelbar vorausgehendes
Zeichen des eingegebenen Zeichens eingetragen ist, wird der Knoten,
in den das Zeichen in der Vergangenheit eingetragen worden ist,
zu dem höheren
Grad verschoben, wodurch ein Abstand von der Wurzel zu dem Knoten
von jenem Zeichen auf die Hälfte
verringert wird, um eine Codelänge
zu verkürzen.
-
Wenn
eine Zeichenkette "abc" sukzessive eingegeben
wird, wird versucht, nur ein Zeichen "a" in
der Zeichenkette "abc" unter "c9" einzutragen, welches
das letzte Zeichen "c" in der Zeichenkette "abc" ist, die an erster
Stelle eingegeben worden ist, und als unmittelbar vorausgehendes
Zeichen betrachtet. Jedoch ist "a5" schon
unter "c3" in
dem Codebaum eingetragen worden, wie in 24(a) gezeigt,
so daß ein
einzutragendes Zeichen von einem Zeichen "a" auf
zwei Zeichen "ab" verlängert wird
und "b11" unter "a5" eingetragen wird,
wie in 25(a) gezeigt.
-
Zu
dieser Zeit wird ein Escape-Code (ESC), der unter "c" zusammen mit "a" gespeichert
ist, verzweigt, um einen neuen Knoten zu erzeugen, in den das eingetragene "ab", das durch Verlängern erhalten
wurde, in dem Kontextbaum eingetragen wird.
-
Falls
versucht wird, "b" der Zeichenkette "abc" in den Kontextbaum
einzutragen, wird sukzessive ein Zeichen, das einzutragen ist, von
einem Zeichen "b" auf zwei Zeichen "bc" verlängert, und
dann wird "c12" unter "b7" eingetragen, wie
in 26(a) gezeigt, da "b11" schon unter "a5" eingetragen worden ist,
wie in 25(a) gezeigt.
-
Zu
dieser Zeit wird in dem Codebaum ein Knoten eines Escape-Codes (ESC),
der unter "a" zusammen mit "b" gespeichert ist, verzweigt, um einen neuen
Knoten zu erzeugen, und das "bc", das durch Verlängern um
ein Zeichen in den Kon textbaum eingetragen wurde, wird darin eingetragen,
wie in 26(b) gezeigt.
-
Falls
das letzte Zeichen "c" der nächsten Zeichenkette "abc" eingetragen wird,
wird der obige Prozeß ausgeführt. Resultierende
Zustände
des Kontextbaums und des Codebaums sind in 27(a) bzw. 27(b) gezeigt (bis zu diesem Punkt sind "abc abc" eingegeben worden).
-
Falls
ferner eine Zeichenkette "ab" in den Kontextbaum
eingetragen wird, wird versucht, ein Zeichen "a" unter
einem unmittelbar vorausgehenden Zeichen "c12" einzutragen. Jedoch
ist unter "c9" schon "a13" gespeichert, wie
oben angegeben, so daß die
Anzahl von einzutragenden Zeichen um eins vergrößert wird, um "ab" zu ergeben, und
dann wird versucht, "b" unter "a13" einzutragen.
-
Jedoch
ist schon "b11" unter "a5" gespeichert, wie
in 27(a) gezeigt, so daß die Anzahl
von einzutragenden Zeichen um eins vergrößert wird, um "abb" zu erhalten, und
dann wird "b" unter "b11" eingetragen.
-
Zu
dieser Zeit wird in dem Codebaum ein Knoten, in dem "ab" gespeichert ist,
verzweigt, um in ihm "abb" einzutragen.
-
Der
obige Prozeß entspricht
dem obenerwähnten
Regelschleifenprozeß,
der über
die JA-Route bei Schritt E5, die JA-Route bei Schritt E10 und die NEIN-Route
bei Schritt E25 ausgeführt
wird.
-
Falls
nämlich
dann, wenn eine Zeichenkette eingegeben wird, schon eine Kombination
aus einem unmittelbar vorausgehenden Zeichen und einem Zeichen in
der Zeichenkette in dem Kontextbaum gespeichert worden ist, wird
die Anzahl von einzutragenden Zeichen um eins vergrößert, und
es wird ein Zeichen eingetragen, das nicht eingetragen worden ist.
-
Zu
dieser Zeit wird in dem Codebaum ein Knoten eines Escape-Codes (ESC),
der zusammen mit dem unmittelbar voraus gehenden Zeichen gespeichert
worden ist, verzweigt, um einen neuen Knoten zu erzeugen, und diese
Zeichenkette wird in ihm eingetragen.
-
Eine
Eingabe der Zeichen "abc
abc ab b", wie oben
erwähnt,
ist vollendet, und ein Code, der jedem der Zeichen zugeordnet wird,
ist so wie in 29 gezeigt.
-
Die
Zeichen "abc", die an erster Stelle
eingegeben worden sind, werden Zeichen für Zeichen codiert, wie in 29 gezeigt. Dementsprechende Codes lauten "00", "01" bzw. "10" und umfassen jeweils zwei
Bits.
-
Codewörter, die
einer Zeichenkette "abc" entsprechen, die
als zweites eingegeben worden ist, lauten "0", "0" bzw. "0" und
umfassen jeweils ein Bit, auf Grund von Beziehungen zu jeweiligen
unmittelbar vorausgehenden Zeichen.
-
Ferner
wird ein Code einer Zeichenkette aus den zwei Zeichen "ab" zugeordnet, die
als nächstes eingegeben
worden ist. Eine Zeichenkette, die aus zwei Zeichen gebildet ist,
wird durch ein Codewort aus nur zwei Bits ausgedrückt, wie
in 30 gezeigt.
-
Ein
Zeichen "b", das zuletzt eingegeben
worden ist, stellt einen Fall dar, wo kein Zeichen vorhanden ist,
das einer Verbindung der existierenden unmittelbar vorausgehenden
Zeichen entspricht. Das Zeichen "b" wird somit durch
eine Kombination aus drei Bits von einem ESC und einem Codewort
von einem einzigen Zeichen ausgedrückt.
-
Gemäß dem Datenkomprimierungsverfahren
dieser Erfindung wird ein Zeichen (Kette), das zu komprimieren ist,
mit einer ihm verliehenen Nummer in den Kontextbaum in einer Baumstruktur
eingetragen und wird ein Codebaum entsprechend dem Kontextbaum erzeugt
und aktualisiert, während
eine Splay-Codierung
ausgeführt
wird. Deshalb ist es möglich,
einen Prozeß aus
zwei Stufen auszuführen, das
heißt,
eine Stufe zum Konstruieren eines Wahrscheinlichkeitsmodells, um
eine Häufigkeit
des Auftretens eines auftretenden Zeichens zu bestimmen, und eine
Stufe, um jedem Zeichen einen Code zuzuordnen, so daß eine Verarbeitungsrate
bei der Datenkomprimierung außerordentlich
erhöht
werden kann.
-
Das
obige Wahrscheinlichkeitsmodell wird konstruiert, indem immer dann,
wenn ein Zeichen eingegeben wird, Knoten des Codebaums erzeugt und
aktualisiert werden (Splay-Prozeß). Auf diese Weise kann eine
Last eines enormen Volumens der arithmetischen Berechnung, um ein
Wahrscheinlichkeitsmodell zu rekonstruieren, das bei jeder Zeicheneingabe
schon konstruiert worden ist, reduziert werden, wodurch eine Verarbeitungsrate
der Datenkomprimierung erhöht
wird.
-
Bei
dem Datenkomprimierungsverfahren dieser Erfindung wird immer dann,
wenn dasselbe Zeichen wie ein Zeichen auftritt, das in der Vergangenheit
komprimiert (codiert) worden ist, ein Knoten des Codebaums desselben
Zeichens, das in der Vergangenheit eingetragen worden ist, gegen
einen Knoten eines höheren
Grades (bei dem Splay-Prozeß)
ausgetauscht, um eine Länge
des Codes auf die Hälfte
zu verringern. Deshalb ist es möglich,
einen Code jenes Zeichens (Kette) durch eine geringere Anzahl von
Bits auszudrücken,
wenn die Häufigkeit des
Auftretens desselben Zeichens (Kette) zunimmt, so daß ein Effekt
der Komprimierung außerordentlich verbessert
werden kann.
-
Bei
dem Datenkomprimierungsverfahren dieser Erfindung wird ein Zeichen
nicht Zeichen für Zeichen
codiert, wie in dem Fall, wenn die obenerwähnte Zeichenkette "ab" codiert wird, sondern
das Zeichen wird als Zeichenkette in einer Einheit von einer Vielzahl
von Zeichen codiert, wodurch eine Verarbeitungsrate bei der Codierung
mit variabler Länge erhöht wird.
Gemäß dieser
Erfindung ist eine zu codierende Einheit eine Zeichenkette, so daß eine Informationsquelle expandiert
werden kann und eine Codiereffektivität bei der Splay-Codierung außerordentlich
verbessert werden kann.
-
(2) Beschreibung des Decodierers
-
Als
nächstes
folgt eine Beschreibung eines Prozesses zum Dekomprimieren von Daten
bei dem Kontextsammelschritt 21 und dem Splay-Codierschritt 22 in
der obenerwähnten
Datendekomprimierungsvorrichtung 2, die in 17 gezeigt ist, der codierte (komprimierte) Daten
als Eingangscodes eingegeben werden, unter Bezugnahme auf die Schritte D1
bis D24 in einem Flußdiagramm
von 31.
-
Diese
Datendekomprimierung ist im wesentlichen eine Umkehrung des Codierprozesses,
der hinsichtlich des Codierers beschrieben worden ist.
-
Genauer
gesagt, ein Kontextbaum und ein Codebaum werden initialisiert, und
ein unmittelbar vorausgehendes Zeichen P wird initialisiert, um
auf "0" gesetzt zu werden
(Schritt D1). Eine Länge
der Kette L wird auf "0" gesetzt (Schritt
D2). Es folgt eine Prüfung
diesbezüglich,
ob ein Kind-Knoten unter dem unmittelbar vorausgehenden Zeichen
in dem Kontextbaum vorhanden ist (Schritt D3).
-
Falls
kein Kind-Knoten vorhanden ist, wird ein Zeichen "K" decodiert, wobei ein Eingangscode ein
Null-Code ist (NEIN-Route von Schritt D3 zu Schritt D4). Es folgt
eine Prüfung
diesbezüglich,
ob das codierte Zeichen "K" ein EOF-Code ist oder nicht (Schritt
D5).
-
Falls
das codierte Zeichen "K" kein EOF-Code ist,
schreitet die Prozedur längs
der NEIN-Route voran, wird das codierte Zeichen "K" ausgegeben (Schritt
D6) und wird das Zeichen in den Kontextbaum eingetragen (Schritt
D7). Der Schritt D7 wird genauso wie der Schritt E7 bei dem Codierprozeß ausgeführt, der
unter Bezugnahme auf 17 oben beschrieben worden
ist.
-
Genauso
wie bei Schritt E8 bei dem Codierprozeß werden Knoten für das Zeichen "K" und einen Escape-Code unter dem unmittelbar
vorausgehenden Zeichen "P" in dem Codebaum
erzeugt (Schritt D8), und das unmittelbar vorausgehende Zeichen "P" wird für das Zeichen "K" eingetragen (Schritt D17).
-
Die
folgenden Schritte D20 bis D23 werden genauso wie die Schritte E20
bis E23 des Codierprozesses ausgeführt. Eine Länge L' der unmittelbar vorausgehenden Zeichenkette
wird durch eine Länge
L einer fokussierten Zeichenkette ersetzt (Schritt D24), und die
Prozedur kehrt zu dem obigen Schritt D2 zurück.
-
Falls
bei Schritt D3 ein Kind-Knoten unter dem unmittelbar vorausgehenden
Zeichen "P" in dem Kontextbaum
vorhanden ist, wird ein eingegebener Code codiert, wobei er als
Code des Grades 1 von dem Codebaum angesehen wird, um eine Referenznummer
eines Zeichens (Kette) in dem Kontextbaum zu erhalten (JA-Route
von Schritt D3 zu Schritt D9).
-
Es
folgt eine Prüfung
diesbezüglich,
ob die codierte Referenznummer ein Escape-Code ist oder nicht (Schritt
D10). Falls sie kein Escape-Code ist, verläuft die Prozedur über die
NEIN-Route und wird der nächste
Code codiert, da das Eingangszeichen als Code des Grades 0 angesehen
wird, um ein Zeichen "K" zu erhalten (NEIN-Route
von Schritt D10 zu Schritt D11).
-
Genauso
wie bei dem obigen Schritt D5 wird eine Prüfung diesbezüglich ausgeführt, ob
das decodierte Zeichen "K" ein EOF-Code ist
oder nicht (Schritt D12). Falls das decodierte Zeichen "K" kein EOF-Code ist, verläuft die
Prozedur über
die NEIN-Route und wird ein Zeichen "K" ausgegeben (Schritt
D13).
-
Genauso
wie bei den Schritten E13 bis E15 bei dem Codierprozeß wird das
Zeichen "K" in den Kontextbaum
eingetra gen (Schritt D14). Das Zeichen "K" wird
unter dem unmittelbar vorausgehenden Zeichen "P" hinzugefügt (Schritt
D15). Ein Escape-Code und eine Codelänge des Codes des Grades 0" K" des Codebaums werden
als Splay-Codes aktualisiert (Schritt D16).
-
Danach
wird ein Prozeß ab
Schritt D17 ausgeführt.
-
Ein
Splay-Code wird jedem einzelnen Zeichen zugeordnet, wie oben erwähnt. Falls
ein Splay-Code eines Zeichens, dessen Zeichenkette, die einer unmittelbar
vorausgehenden Zeichenkette folgt, nicht in den Zeichenketten enthalten
ist, die in dem Wörterbuch
gesammelt worden sind, kann der Code aktualisiert werden und kann
das codierte Zeichen im Anschluß an
das obenerwähnte
unmittelbar vorausgehende Zeichen in den Kontextbaum eingetragen
werden.
-
Falls
die codierte Referenznummer bei Schritt D10 ein Escape-Code ist,
verläuft
die Prozedur über
die JA-Route, um eine Zeichenkette zu dekomprimieren, die der Referenznummer
in dem Kontextbaum entspricht, um sie auszugeben (Schritt D18).
Der letzte Buchstabe des Zeichens (der Kette) wird durch das unmittelbar
vorausgehende Zeichen "P" ersetzt (Schritt
D19).
-
Danach
wird ein Prozeß ab
dem obigen Schritt D20 ausgeführt.
-
Das
unmittelbar vorausgehende Zeichen, das decodiert worden ist, kann
zuerst in das Wörterbuch
als Zeichenkette eingetragen werden, wie oben erwähnt, die
in das Wörterbuch
einzutragen ist, und die Zeichenkette im Anschluß an das unmittelbar vorausgehende
Zeichen kann decodiert werden.
-
Falls
das decodierte Zeichen bei Schritt D4 oder bei Schritt D12 ein EOF-Code
ist, verläuft
die Prozedur über
die JA-Route und beendet den Dekomprimierungsprozeß.
-
Zeichenketten
von dekomprimierten Daten werden in dem Kontextbaum gesammelt und
mit jeweiligen Nummern eingetra gen, wie oben erwähnt. Einhergehend damit wird
ein Splay-Code jeder
der decodierten Zeichenketten zugeordnet, und eine Zeichenkette,
die einer Wörterbuchnummer
entspricht, wird mit einem Splay-Code decodiert und aktualisiert. Eine
verlängerte
Zeichenkette einer codierten Zeichenkette wird eingetragen, bis
sie eine vorbestimmte maximale Länge
einer Zeichenkette erreicht, und ein Splay-Code wird eingetragen,
der dieser verlängerten
Zeichenkette entspricht.
-
Das
Zeichen "K", das bei dem Kontextsammelschritt 11 und
dem Splay-Codierschritt 12 in der Datenkomprimierungsvorrichtung 1 komprimiert
und codiert worden ist, wird dekomprimiert, wie oben erwähnt.
-
Bei
dem Datendekomprimierungsverfahren gemäß dieser Erfindung wird ein
decodiertes Zeichen (Kette), dem eine Nummer verliehen wurde, in den
Kontextbaum eingetragen, und ein Codebaum wird konstruiert, der
eine Codetabelle ist, die dem Kontextbaum entspricht, wodurch es
möglich
ist, einen Prozeß aus
zwei Stufen auszuführen,
das heißt, eine
Stufe zum Suchen eines Codes, der mit einem codierten Code in der
Codetabelle koinzidiert, und eine Stufe zum Ausgeben eines Zeichens,
das einem koinzidierenden Code entspricht, als decodiertes Zeichen.
Somit ist das Datenwiederherstellungsverfahren dieser Erfindung
effektiv, um eine Verarbeitungsrate bei der Datendekomprimierung
zu erhöhen.
-
Das
obige Wahrscheinlichkeitsmodell wird konstruiert, indem Knoten in
dem Codebaum (bei dem Splay-Prozeß) immer dann, wenn ein Zeichen eingegeben
wird, erzeugt und aktualisiert werden. Auf diese Weise kann eine
Last eines enormen Berechnungsvolumens, um eine Codetabelle zu rekonstruieren,
die bei jeder Zeicheneingabe schon konstruiert worden ist, reduziert
werden, wodurch eine Verarbeitungsrate bei der Datendekomprimierung weiter
erhöht
werden kann.
-
Bei
dem Datendekomprimierungsverfahren dieser Erfindung wird immer dann,
wenn derselbe Code wie ein Code auftritt, der in der Vergangenheit decodiert
worden ist, ein Knoten in dem Codebaum, in den derselbe Code in
der Vergangenheit eingetragen worden ist, gegen einen Knoten höheren Grades (bei
dem Splay-Prozeß)
ausgetauscht, um eine Codelänge
auf die Hälfte
zu reduzieren. Als Resultat ist es möglich, einen Code mit einer
geringeren Bitanzahl auszudrücken,
wenn derselbe Code häufiger auftritt.
In dem Fall, wenn derselbe Code wiederholt codiert wird, kann eine
Verarbeitungsrate bei der Datendekomprimierung außerordentlich
erhöht
werden.
-
Bei
dem Datendekomprimierungsverfahren dieser Erfindung wird ein Zeichen
nicht Zeichen für Zeichen
decodiert, sondern als Zeichenkette in einer Einheit, die eine Vielzahl
von Zeichen umfaßt.
Auf diese Weise kann eine dekomprimierbare Informationsquelle expandiert
werden und eine Effektivität
bei der Datendekomprimierung außerordentlich
verbessert werden.
-
Die
Beschreibung erfolgte bei dieser Ausführungsform anhand des Beispiels,
bei dem eine Zeichenkette im Anschluß an ein unmittelbar vorausgehendes
Zeichen als Kontext gesammelt und codiert und decodiert wird. Es
ist jedoch nicht erforderlich, an dem unmittelbar vorausgehenden
Zeichen festzuhalten, sondern es ist möglich, einen Kontext zu sammeln,
der zwei vorherigen Zeichen folgt, und ihn zu codieren und zu decodieren.
-
Die
Beschreibung erfolgte bei dieser Ausführungsform anhand des Beispiels,
bei dem die Kontexte dynamisch gesammelt werden und bei einem Splay-Prozeß codiert
und decodiert werden. Diese Erfindung ist jedoch nicht auf das dynamische
Sammeln der Kontexte begrenzt, sondern es ist auch möglich, statische
Kontexte zu verwenden, die im voraus von repräsen tativen Mustern gesammelt
wurden, und sie bei dem Splay-Prozeß zu codieren
und zu decodieren.
-
Die
Beschreibung erfolgte bei dieser Ausführungsform anhand des Beispiels,
bei dem alle eingegebenen Daten bei einer Codierung mit variabler Länge (Splay-Codierung)
dynamisch codiert werden. Es ist jedoch möglich, Daten mit einem beträchtlichen Volumen
zu codieren, dann die Aktualisierungsoperation der Splay-Codierung
zu stoppen und die Daten bei einer statischen Codierung mit variabler
Länge zu codieren.
In dem Fall ist es lediglich erforderlich, solch eine Anordnung
zwischen dem Decodierer und dem Codierer vorzusehen, daß der Decodierer
und der Codierer synchron miteinander arbeiten.
-
Die
Beschreibung erfolgte bei dieser Ausführungsform anhand des Beispiels,
bei dem Daten, die zu komprimieren sind, Zeichen oder Zeichenketten sind.
Das Datenkomprimierungsverfahren und Datendekomprimierungsverfahren
gemäß dieser
Erfindung ist jedoch auf alle Daten wie z. B. Bilddaten, Audiodaten,
etc., anwendbar.
-
(c) Beschreibung der zweiten
Ausführungsform
-
Als
nächstes
folgt die Beschreibung einer zweiten Ausführungsform gemäß dieser
Erfindung.
-
32 ist ein Blockdiagramm einer Datenkomprimierungsvorrichtung
und einer Datendekomprimierungsvorrichtung, die verwendet werden,
um ein Datenkomprimierungsverfahren und ein Datendekomprimierungsverfahren
gemäß einer
zweiten Ausführungsform
dieser Erfindung auszuführen.
In 32 codiert eine Datenkomprimierungsvorrichtung 3 Eingangsdaten
gemäß einem
Verlauf des Auftretens der Daten in der Vergangenheit, um sie zu komprimieren.
Eine Datendekomprimierungsvorrichtung 4 decodiert Codes,
die durch die Datenkomprimierungsvorrichtung 3 codiert
worden sind.
-
Im
folgenden wird die Datenkomprimierungsvorrichtung 3 als
Codierer bezeichnet, und die Datendekomprimierungsvorrichtung 4 wird
als Decodierer bezeichnet. In der folgenden Beschreibung haben ein
Kontextbaum und ein Codebaum dieselbe Funktion wie jene, die in
der ersten Ausführungsform
beschrieben worden sind.
-
(1) Beschreibung des Codierers
-
33 ist ein Blockdiagramm, das eine interne Struktur
der obigen Datenkomprimierungsvorrichtung 3 zeigt. Wie
in 33 gezeigt, bezeichnen Bezugszeichen 100A-1 bis 100A-n (n
ist eine natürliche
Zahl) Vordaten-Halteeinheiten, bezeichnet 101A eine Kontextverlaufshalteeinheit,
bezeichnet 102A eine Codebaumhalteeinheit, bezeichnet 103A eine Codebaumbestimmungseinheit,
bezeichnet 104A eine Codiereinheit, bezeichnet 105A eine
Codebaumaktualisierungseinheit und bezeichnet 106A eine
Kontextaktualisierungseinheit.
-
Die
Vordaten-Halteeinheiten (Vordaten-Haltemittel) 100A-1~100A-n dienen
zum Halten eines Kontextes, der aus einer Anzahl von n Daten gebildet ist,
die bis unmittelbar vor Eingabe von Daten K (im folgenden gelegentlich
als Symbol K bezeichnet) eingegeben worden sind.
-
Die
Kontextverlaufshalteeinheit (ein Verlaufshaltemittel) 101A hält eine
Kombination aus den eingegebenen Daten K und einem Kontext. Die
Codebaumhalteeinheit (ein Codebaumhaltemittel) 102A hält Codebäume, die
jeweils für
jeden Kontext unabhängig
sind. Die Codebaumbestimmungseinheit (ein Codebaumbestimmungsmittel) 103A bestimmt
einen Codebaum von den Daten bis zur Eingabe der Daten K, die in
den Vordaten-Halteeinheiten 100A-1~100A-n gehalten
werden.
-
Die
Codiereinheit (ein Codeausgabemittel) 104A codiert die
Daten K und gibt die codierten Daten K gemäß einer Gabelung aus, die sich
von einem Knoten erstreckt, der auf einem Weg von einer Wurzel eines
Codebaums (einem oberen Ende des Codebaums), der durch die Codebaumbestimmungseinheit 103A selektiert
wurde, zu einem Blatt desselben liegt, in dem die Daten K gespeichert
sind.
-
Die
Codebaumaktualisierungseinheit (ein Codebaumaktualisierungsmittel) 105A tauscht
ein codiertes Blatt gegen ein anderes Blatt oder einen anderen internen
Knoten aus. Die Kontextaktualisierungseinheit (ein Vordaten-Aktualisierungsmittel) 106A trägt die Daten
K in die Vordaten-Halteeinheiten 100A-1~100A-n ein.
-
34 ist ein Blockdiagramm, das eine interne Struktur
der obenerwähnten
Codiereinheit 104A zeigt. Um die codierten Daten K auszugeben, die
gemäß einer
Gabelung codiert wurden, die sich von einem Knoten erstreckt, wie
oben erläutert,
enthält
die Codiereinheit 104A, wie in 34 gezeigt, eine
Unterscheidungseinheit von Knoten höheren Grades 41, eine
Knotennummerverwaltungseinheit (Speicher) 42, eine Positionsunterscheidungseinheit 43,
eine Verriegelung 44 und einen Stapelspeicher 45.
-
Die
Unterscheidungseinheit von Knoten höheren Grades 41 erhält eine
Knotennummer eines Knotens höheren
Grades von einer Knotennummer einer Wurzel des Codebaums und einer
Knotennummer eines Blattes des Kontextbaums. Die Knotennummerverwaltungseinheit
(Speicher) 42 verwaltet Knotennummern des Kontextbaums
und des Codebaums. Die Positionsunterscheidungseinheit 43 unterscheidet
einen Gabelungszustand eines Knotens.
-
Die
Verriegelung 44 dient zum temporären Halten einer Knotennummer
eines Blattes. Der Stapelspeicher hält temporär einen Code der Daten K, die
von der Positionsunterscheidungseinheit 43 ausgegeben werden,
und gibt sukzessive Codes aus, die in ihm gehalten werden, wenn
er ein Endsignal empfängt.
-
In
der obigen Datenkomprimierungsvorrichtung mit der obigen Struktur,
die in 33 gezeigt ist, halten die
Vordaten-Halteeinheiten 100A-1~100A-n einen Kontext,
der aus einer Anzahl von n Eingangsdaten gebildet ist, die bis zur
Eingabe der Daten K eingegeben worden sind. Die Kontextverlaufshalteeinheit 101A hält eine
Kombination aus Eingangsdaten und einem Kontext. Die Codebaumhalteeinheit 102A hält Codebäume, die
jeweils für
jeden Kontext unabhängig
sind.
-
Die
Codebaumbestimmungseinheit 103A bestimmt einen Codebaum
von Daten aus Eingangsdaten, die bis zu einer Eingabe von jenen
Daten eingegeben worden sind, die in den Vordaten-Halteeinheiten 100A-1~100A-n gehalten
werden. Die Codiereinheit 104A gibt einen Code (einzigartige
Daten) aus, der durch "0" oder "1" ausgedrückt wird, gemäß einer
Gabelung, die sich von einem Knoten erstreckt, der auf einem Weg
von einer Wurzel (einem oberen Ende) eines Codebaum, der durch die
Codebaumbestimmungseinheit 103A selektiert wurde, zu einem Blatt
desselben liegt, in dem die Daten K gespeichert sind.
-
Die
Codebaumaktualisierungseinheit 105A als Codebaumaktualisierungsmittel
tauscht ein codiertes Blatt gegen ein anderes Blatt oder einen anderen
internen Knoten aus. Die Vordaten-Aktualisierungseinheit 106A trägt die Daten
K in das Vordaten-Haltemittel 100A-1 ein.
-
Die
obige Operation wird unter Bezugnahme auf die Schritte A1 bis A6
in dem in 35 gezeigten Flußdiagramm
eingehender beschrieben.
-
Zunächst werden
Kontextzeichenketten P, die in den Vordaten-Halteeinheiten 100A-1~100A-n gehalten
werden, initialisiert (Schritt A1), und dann werden die zu codierenden
Daten K eingegeben (Schritt A2).
-
Die
Codebaumbestimmungseinheit 103A bestimmt einen Codebaum
entsprechend einem Kontext P von der Kontextver laufshalteeinheit 101A, die
einen Verlauf des Kontextes hält,
der in den Vordaten-Halteeinheiten 100A-1~100A-n gehalten
wird, und sendet eine Knotennummer (ID) eines Blattes, in dem die
Daten K gehalten werden, und eine Knotennummer (ID) eines Knotens
einer Wurzel des Kontextes P, die von dem bestimmten Codebaum erhalten wird,
und Informationen, die in der Kontextverlaufshalteeinheit 101A gespeichert
sind. Die Codiereinheit 104A gibt einen Code gemäß der Gabelung
eines Knotens aus, der sich von einem Blatt eines Symbols K (der
Daten K) zu der Wurzel des Codebaums erstreckt, der dem Kontext
P entspricht (Schritt A3). Übrigens
wird ein Prozeß,
der durch die Codiereinheit 104A ausgeführt wird, später unter
Bezugnahme auf 36 eingehender beschrieben.
-
Nach
dem Codieren in der Codiereinheit 104A tauscht die Codebaumaktualisierungseinheit 105A ein
Blatt des Ereignisses K an dem Codebaum gegen ein anderes Blatt
oder einen anderen Knoten aus (Schritt A4), speichert es in der
Codebaumhalteeinheit 102A zurück und aktualisiert dadurch
den Codebaum. Ein Prozeß,
der durch die Codebaumaktualisierungseinheit 105A ausgeführt wird,
wird später unter
Bezugnahme auf 37 eingehender beschrieben.
-
Die
Kontextaktualisierungseinheit 106A sondert die ältesten
Daten aus (Daten, die in der Vordaten-Halteeinheit 100-n gehalten
werden), trägt
die Eingangsdaten K als Kontext in der Vordaten-Halteeinheit 100A-1 ein,
wodurch die Kontextzeichenkette P aktualisiert wird (Schritt A5).
-
Es
wird geprüft,
ob das Codieren aller Daten beendet ist oder nicht (Schritt A6).
Falls es nicht beendet ist, wird ein Prozeß ab Schritt A2 wiederholt. Falls
es beendet ist, ist der Codierprozeß vollendet (JA-Route bei Schritt
A6).
-
Die
Ordnung des Knotenrekombinationsprozesses (Schritt A4) und des Kontextaktualisierungsprozesses
(Schritt A5) ist nicht auf das obige Beispiel begrenzt. Der Kontextaktualisierungsprozeß (Schritt A5)
kann vor dem Knotenrekombinationsprozeß ausgeführt werden (Schritt A4). Alternativ
ist es möglich, die
obigen Prozesse parallel auszuführen.
-
Wie
bei Schritt A3 erwähnt,
wird als nächstes unter
Bezugnahme auf die Schritte B1 bis B8 in 36 ein
Prozeß beschrieben,
der durch die Codiereinheit 104A mit der in 34 gezeigten und oben erläuterten Struktur ausgeführt wird.
-
Zunächst wird
der Stapelspeicher 45 (ein Kellerspeicher) initialisiert
(Schritt B1). Ein Adressenzeiger eines gegenwärtigen Knotens L wird auf ein Blatt
an dem Codebaum des Kontextes P eingestellt, in dem die Daten K
gespeichert sind (Schritt B2).
-
Die
Knotennummer (ID) des Blattes, in dem die Daten K gehalten werden,
die von dem obengenannten Schritt A3 zugeführt wird, wird von der Verriegelung 44 zu
der Positionsunterscheidungseinheit 43 gesendet. Die Positionsunterscheidungseinheit 43 erhält von der
Knotennummerverwaltungseinheit 42 Informationen darüber, auf
welcher Seite eines Knotens höheren
Grades der Knoten der empfangenen Knotennummer liegt, und unterscheidet,
ob der durch die Informationen empfangene Knoten auf der rechten
Seite des Knotens höheren
Grades liegt (Schritt B3).
-
Falls
der empfangene Knoten auf der rechten Seite des Knotens höheren Grades
liegt, wird "1" auf den Stapelspeicher 45 draufgelegt
(an ihn ausgegeben) (JA-Route bei Schritt B3 zu Schritt B4). Falls er
auf der linken Seite liegt, wird "0" auf
den Stapelspeicher 45 draufgelegt (an ihn ausgegeben) (NEIN-Route
bei Schritt B3 zu Schritt B5).
-
Eine
Knotennummer (ID), das heißt,
eine andere Knotennummer der Wurzel des Kontextes P, die von dem
obengenannten Schritt A3 zugeführt
wird, wird zu der Unterscheidungseinheit von Knoten höheren Grades 41 gesendet.
Die Unterscheidungseinheit von Knoten höheren Grades 41 unterscheidet, ob
der empfangene Knoten (oder ein Blatt) eine Wurzel ist oder nicht
(Schritt B6).
-
Falls
er eine Wurzel ist, gibt die Unterscheidungseinheit von Knoten höheren Grades 41 ein Endsignal
aus (JA-Route bei
Schritt B6). Falls er keine Wurzel ist, greift die Unterscheidungseinheit
von Knoten höheren
Grades 41 auf die Knotennummer-(ID)-Verwaltungseinheit 42 zu,
um eine Nummer dieses Knotens (oder des Blattes) oder eines Knotens
höheren
Grades (U) zu erhalten, und verschiebt einen Adressenzeiger zu dem
Knoten höheren
Grades, da dieser Knoten (U) als neuer gegenwärtiger Knoten L angesehen wird.
Dann wird der Prozeß ab Schritt
B3 wiederholt (NEIN-Route bei Schritt B6 zu Schritt B7).
-
Durch
das Wiederholen des Prozesses, bis der Adressenzeiger die Wurzel
erreicht, wird ein Weg von dem Blatt zu der Wurzel, der durch "1" oder "0" ausgedrückt wird,
in dem Stapelspeicher 45 gespeichert.
-
Dieser
Weg wird umgekehrt ab einem Bit niedrigeren Grades bitweise ausgegeben (Pop-up-Ausgabe),
so daß der
Weg von der Wurzel zu dem Blatt als Code ausgegeben wird (Schritt
B8).
-
Wie
bei Schritt A4 erwähnt,
wird als nächstes ein
Prozeß zum
Austauschen eines Blattes des Symbols K gegen ein anderes Blatt
oder einen Knoten, der durch die Codebaumaktualisierungseinheit 105A ausgeführt wird,
unter Bezugnahme auf die Schritte C1 bis C9 in 37 eingehender beschrieben.
-
Zuerst
wird ein Adressenzeiger eines Knotens Z, der ein Objekt des Austauschs
ist, auf das Blatt K eingestellt (Schritt C1). Ein Knoten höheren Grades
des Knotens Z wird dann auf einen Knoten U0 gesetzt (Schritt C2).
-
Es
wird unterschieden, ob der Knoten höheren Grades U0 von K eine
Wurzel des Codebaums ist oder nicht (Schritt C3). Falls er eine
Wurzel ist, ist der Austauschprozeß abgeschlossen (JA-Route bei Schritt
C3 zu Schritt C9). Falls er keine Wurzel ist, wird ein höherer Knoten
des Knotens U0 auf einen Knoten U1 gesetzt (NEIN-Route bei Schritt
C3 zu Schritt C4), und es wird unterschieden, auf welcher Seite
des Knotens höheren
Grades U1 vom Knoten U0 der Knoten U0 liegt (Schritt C5).
-
Falls
U0 auf der rechten Seite von U1 liegt, wird ein Knoten, der auf
der linken Seite des Knotens U1 liegt, auf den Knoten X gesetzt
(JA-Route bei Schritt C5 zu Schritt C6), und der Knoten Z wird gegen
den Knoten X ausgetauscht (Schritt C8). Mit anderen Worten, ein
Knoten auf der linken Seite des Knotens U1 wird mit dem Blatt K
rekombiniert.
-
Falls
der Knoten U0 auf der linken Seite von U1 liegt, wird ein Knoten,
der auf der rechten Seite des Knotens U1 liegt, auf den Knoten X
gesetzt (NEIN-Route bei Schritt C5 zu Schritt C7), und ein Knoten
Z wird gegen den Knoten X ausgetauscht (Schritt C8). Mit anderen
Worten, ein Knoten auf der rechten Seite des Knotens Ul wird mit
dem Blatt K rekombiniert.
-
Ferner
wird ein Adressenzeiger des Knotens Z auf den Knoten U1 eingestellt
(Schritt C9). Die Prozedur kehrt dann zu dem obigen Schritt C2 zurück. Bei
Schritt C3 wird der Prozeß wiederholt,
bis bestimmt wird, daß ein
Knoten höheren
Grades des eingestellten Adressenzeigers eine Wurzel ist, mit anderen
Worten, daß der
Adressenzeiger auf einem Knoten genau unter der Wurzel ist.
-
Durch
den obigen Prozeß wird
ein Abstand von der Wurzel zu dem Blatt, auf das zugegriffen wird,
(eine Codelänge)
halbiert.
-
Durch
das Wiederholen des obigen Prozesses an allen Eingangszeichen kann
eine Zeichenkette codiert werden.
-
In
der Datenkomprimierungsvorrichtung zum Ausführen des Datenkomprimierungsverfahrens
gemäß der zweiten
Ausführungsform
dieser Erfindung wird ein Zeichen, das zu codieren ist, wie oben
beschrieben, mit seiner Nummer in den Kontextbaum in einer Baumstruktur
eingetragen, und ein Codebaum entsprechend diesem Kontextbaum wird
erzeugt und aktualisiert, während
eine Splay-Codierung ausgeführt
wird. Dadurch ist es möglich,
einen Prozeß aus zwei
Stufen gleichzeitig auszuführen,
das heißt,
eine Stufe zum Konstruieren eines Wahrscheinlichkeitsmodells durch
das Bestimmen einer Auftrittshäufigkeit
eines auftretenden Zeichens, um einen Code jedem Zeichen zuzuordnen,
um eine Codetabelle zu bilden, und eine Stufe zum Ausgeben eines
Codes eines Zeichens, das zu codieren ist, von der Codetabelle.
Auf diese Weise kann eine Verarbeitungsrate bei der Datenkomprimierung
außerordentlich
erhöht werden.
-
Wie
oben angegeben, wird immer dann, wenn ein Zeichen eingegeben wird,
ein Knoten des Codebaums erzeugt und aktualisiert (im Splay-Prozeß), um ein
Wahrscheinlichkeitsmodell zu konstruieren. Auf diese Weise kann
eine Last eines enormen Volumens einer arithmetischen Operation
zum Rekonstruieren eines Wahrscheinlichkeitsmodells, das bei jeder
Zeicheneingabe schon konstruiert worden ist, reduziert werden, wodurch
eine Verarbeitungsrate bei der Datenkomprimierung weiter erhöht wird.
-
Ferner
wird immer dann, wenn dasselbe Zeichen wie ein Zeichen auftritt,
das in der Vergangenheit bereits komprimiert (codiert) worden ist,
ein Knoten des Codebaums dessel ben Zeichens, das in der Vergangenheit
bereits eingetragen worden ist, gegen einen Knoten höherer Ordnung
ausgetauscht, um (bei dem Splay-Prozeß) eine Länge einer Codelänge auf
die Hälfte
zu verringern. Deshalb ist es möglich, ein
Zeichen (Kette) mit einer geringeren Anzahl von Bits auszudrücken, wenn
dasselbe Zeichen (Kette) häufiger
auftritt. Dadurch kann ein Effekt der Komprimierung außerordentlich
verbessert werden.
-
(2) Beschreibung des Decodierers
-
38 ist ein Blockdiagramm, das eine interne Struktur
der obenerwähnten
Datendekomprimierungsvorrichtung 4 zeigt. Wie in 38 gezeigt, bezeichnen die Bezugszeichen 200A-1~200A-n (n ist
eine natürliche
Zahl) Vordaten-Halteeinheiten,
bezeichnet 201A eine Kontextverlaufshalteeinheit, bezeichnet 202A eine
Codebaumhalteeinheit, bezeichnet 203A eine Codebaumbestimmungseinheit,
bezeichnet 204A eine Decodiereinheit, bezeichnet 205A eine
Codebaumaktualisierungseinheit und bezeichnet 206 eine
Kontextaktualisierungseinheit.
-
Die
Vordaten-Halteeinheiten (ein Vordaten-Haltemittel) 200A-1~200A-n dienen
zum Halten einer Anzahl von n Daten, die vor dem Decodieren eines
Codes decodiert worden sind. Die Kontextverlaufshalteeinheit (ein
Verlaufshaltemittel) 201A hält eine Kombination aus einem
decodierten Symbol und einem Kontext. Die Codebaumhalteeinheit (ein Codebaumhaltemittel) 202A hält Codebäume, die
jeweils für
jeden Kontext unabhängig
sind.
-
Die
Codebaumbestimmungseinheit (ein Codebaumbestimmungsmittel) 203A bestimmt
einen Codebaum, um ein Symbol zu decodieren, von Kontexten, die
in den Vordaten-Halteeinheiten 200A-1~200A-n gehalten
werden. Die Decodiereinheit (ein Decodiermittel) 204A gibt
ein Symbol aus, das in einem Blatt gespeichert ist, das durch Scannen
eines Weges von einer Wurzel eines Codebaums (einem oberen Ende
eines Codebaums), der in der Codebaumbestimmungseinheit 203A selektiert wurde,
zu einem Knoten (einer Gabelung) desselben gemäß einem Code erreicht wird.
-
Die
Codebaumaktualisierungseinheit (ein Codelängenaktualisierungsmittel) 205A tauscht
ein decodiertes Blatt gegen ein anderes Blatt oder einen Knoten
aus. Die Kontextaktualisierungseinheit (ein Vordaten-Aktualisierungsmittel) 206A trägt ein decodiertes
Symbol in die Vordaten-Halteeinheiten 200A-1~200A-n ein.
-
39 ist ein Blockdiagramm, das eine interne Struktur
der obenerwähnten
Decodiereinheit 204A zeigt. Um ein Symbol auszugeben, das
in einem Blatt gespeichert ist, das durch Scannen eines Weges von
einer Wurzel eines Codebaums, der durch die Codebaumbestimmungseinheit 203A selektiert
wurde, zu einem Knoten gemäß einem
Code erreicht wird, enthält
die Decodiereinheit 204A, wie in 39 gezeigt,
eine Knotennummerverwaltungseinheit (Speicher) 42, eine
Verriegelung 48, eine Unterscheidungseinheit von Knoten
niedrigeren Grades 46 und eine Blatt/Knoten-Unterscheidungseinheit 47.
-
Die
Knotennummerverwaltungseinheit (Speicher) 42 ist jener ähnlich,
die in dem obenerwähnten
Codierer vorgesehen ist, der in 34 gezeigt
ist, und verwaltet die Knotennummer eines Kontextbaums und eines
Codebaums.
-
Die
Unterscheidungseinheit von Knoten niedrigeren Grades 46 erhält eine
Knotennummer eines Knotens niedrigeren Grades von einem Code, eine
Knotennummer einer Wurzel des Codebaums und Informationen, die in
der Knotennummerverwaltungseinheit 42 gespeichert sind.
Die Blatt/Knoten-Unterscheidungseinheit 47 unterscheidet,
ob ein Knoten niedrigeren Grades ein Blatt oder ein Knoten ist,
gemäß Informatio nen,
die von der Unterscheidungseinheit von Knoten niedrigeren Grades 46 und der
Knotennummerverwaltungseinheit 42 zugeführt werden. Die Verriegelung 48 hält temporär eine Knotennummer
einer Wurzel.
-
In
der obigen Struktur halten die Vordaten-Halteeinheiten 200A-1~200A-n einen
Kontext (Daten) in der Anzahl n, der vor dem Decodieren eines Codes
decodiert worden ist, und die Codehalteeinheit 202A hält Codebäume, die
jeweils für
jeden Kontext unabhängig
sind.
-
Die
Codebaumbestimmungseinheit 203A bestimmt einen Codebaum,
der verwendet wird, um Daten K zu decodieren, von einem Kontext,
der in der Vordaten-Halteeinheit 200A-1~200A-n gehalten wird.
Die Decodiereinheit 204A gibt Daten K aus, die in einem
Blatt gespeichert sind, das durch Scannen eines Weges von einer
Wurzel (einem oberen Ende) eines Codebaums, der durch die Codebaumbestimmungseinheit 203A selektiert
wurde, zu einem Knoten (einer Gabelung) desselben gemäß einem
Code der codierten Daten K erreicht wird.
-
Die
Codebaumaktualisierungseinheit 205A als Codelängenaktualisierungsmittel
tauscht ein decodiertes Blatt gegen ein anderes Blatt oder einen
internen Knoten aus. Die Vordaten-Aktualisierungseinheit 206A trägt die decodierten
Daten K als letzten Kontext in die Vordaten-Halteeinheit 200A-1 ein.
-
Als
nächstes
wird der obige Prozeß unter
Bezugnahme auf die Schritte F1 bis F6 in einem Flußdiagramm
von 40 eingehender beschrieben.
-
Zunächst wird
eine Anzahl von n Kontextzeichenketten P, die in den Vordaten-Halteeinheiten 200A-1~200A-n gehalten
werden, initialisiert (Schritt F1). Dann wird ein Symbol (Daten)
K, das zu decodieren ist, eingegeben (Schritt F2).
-
Die
Codebaumbestimmungseinheit 203A bestimmt einen Codebaum
entsprechend einem Kontext P von der Kontextver laufshalteeinheit 201A, die
einen Verlauf der Kontexte hält,
die in den Vordaten-Halteeinheiten 200A-1~200A-n gehalten
werden, und sendet eine Knotennummer (ID) des bestimmten Codebaums
und einen Code des Ereignisses K, der zu decodieren ist, zu der
Decodiereinheit 204A. Die Decodiereinheit 204A scant
einen Weg an dem bestimmten Codebaum von der Wurzel zu einem Blatt,
in dem das Ereignis K gespeichert ist, gemäß dem zugeführten Code und decodiert einen Code
(Schritt F3). Übrigens
wird ein Prozeß,
der durch die Decodiereinheit 204A ausgeführt wird,
später
unter Bezugnahme auf 41 eingehender beschrieben.
-
Nach
dem Decodieren tauscht die Codebaumaktualisierungseinheit 205A ein
Blatt an dem Codebaum des Ereignisses K, das decodiert worden ist,
gegen ein anderes Blatt oder einen internen Knoten aus (Schritt
F4) und speichert es in der Codebaumhalteeinheit 202A zurück, um den
Codebaum zu aktualisieren. Der Prozeß zum Austauschen von Knoten,
der durch die Codebaumaktualisierungseinheit 205A ausgeführt wird,
wird genauso wie der Prozeß bei
den Schritten C1 bis C9 vorgenommen, die durch die Codebaumaktualisierungseinheit 105A ausgeführt werden,
die zuvor unter Bezugnahme auf das Flußdiagramm von 37 beschrieben worden ist.
-
Die
Kontextaktualisierungseinheit 206A sondert die ältesten
Daten (Daten, die in der Vordaten-Halteeinheit 200A-n gehalten
werden) aus und aktualisiert die Kontextzeichenkette P durch Eintragen
des decodierten Symbols (Daten) K als Kontext in der Vordaten-Halteeinheit 200A-1.
-
Es
wird geprüft,
ob das Decodieren aller Daten beendet ist oder nicht (Schritt F6).
Falls es nicht beendet ist, wird der Prozeß ab Schritt F2 wiederholt (NEIN-Route
bei Schritt F6). Falls es beendet ist, ist der Decodierprozeß vollendet
(JA-Route bei Schritt F6).
-
Genauso
wie bei dem Codierprozeß kann
die Ordnung der obenerwähnten
Prozesse, das heißt, der
Prozeß zum
Austauschen von Knoten (bei Schritt F4) und der Prozeß zum Aktualisieren
des Kontextes (bei Schritt F5), verändert werden. Alternativ ist
es möglich,
die obigen Prozesse parallel auszuführen.
-
Wie
bei Schritt F3 angegeben, wird als nächstes der Codierprozeß, der durch
die Decodiereinheit 204A mit der obigen Struktur ausgeführt wird, die
in 39 gezeigt ist, unter Bezugnahme auf die Schritte
G1 bis G7 in einem Flußdiagramm
in 41 beschrieben.
-
Die
Unterscheidungseinheit von Knoten niedrigeren Grades 46 setzt
eine Knotennummer (ID) der Wurzel, die von der Codebaumbestimmungseinheit 203A zugeführt wird,
auf einen Knoten Z (Schritt G1). Die Unterscheidungseinheit von
Knoten niedrigeren Grades 46 setzt auch einen Code (von
1 Bit) des zu decodierenden Symbols K, der von derselben Codebaumbestimmungseinheit 203A über die
Verriegelung 48 zugeführt
worden ist, auf C (Schritt G2).
-
Es
wird geprüft,
ob der Code des zu decodierenden Symbols K, der auf C gesetzt wurde,
mit "1" koinzidiert oder
nicht (Schritt G3). Falls er mit "1" koinzidiert
(im Falle von JA), wird ein Knoten auf der rechten Seite des Knotens
Z auf Z gesetzt (JA-Route bei Schritt G3 zu Schritt G4). Falls er
nicht "1" ist (das heißt, er ist "0"), wird ein Knoten auf der linken Seite des
Knotens Z auf den Knoten Z gesetzt (NEIN-Route bei Schritt G3 zu
Schritt G5). Die Unterscheidungseinheit von Knoten niedrigeren Grades 46 erhält eine Knotennummer
des Knotens Z von der Knotennummerverwaltungseinheit 42 auf
der Basis einer Knotennummer des Knoten, der auf den Knoten Z gesetzt
wurde, und sendet jene Knotennummer zu der Blatt/Knoten-Unterscheidungseinheit 47.
Die Blatt/Knoten-Unterscheidungseinheit 47 erhält Positions informationen
des Knotens Z mit der zugeführten Knotennummer
von der Knotennummerverwaltungseinheit 42 und prüft, ob jene
Knotennummer Z ein Knoten oder ein Blatt ist (Schritt G6).
-
Falls
der Knoten Z kein Blatt ist (NEIN-Route bei Schritt G6), kehrt die
Prozedur zu Schritt G2 zurück,
und der Prozeß wird
wiederholt, bis ein Blatt erreicht wird, in dem das zu decodierende
Symbol K gespeichert ist.
-
Falls
der Knoten Z ein Blatt ist (JA-Route bei Schritt G6), bedeutet dies,
daß das
zu decodierende Ereignis K gefunden worden ist, und die Blatt/Knoten-Unterscheidungseinheit 47 sendet
ein Symbol-(Ereignis)-Ausgabesignal zu der Knotennummerverwaltungseinheit 42.
Die Knotennummerverwaltungseinheit 42, die jenes Signal
empfangen hat, gibt das Symbol K aus, das in jenem Blatt gespeichert
ist (Schritt G7), und gibt ein Endsignal für diesen Decodierprozeß aus.
-
Wie
oben kann durch Verfolgen eines mit Zahlenwerten "1" und "0" ausgedrückten Weges
an dem Codebaum, der in dem Codierer erzeugt wurde, bis hinab zu
einem Blatt, in dem das Ereignis K gespeichert ist, das codierte
Ereignis K decodiert werden.
-
In
der Datendekomprimierungsvorrichtung, die verwendet wird, um das
Datendekomprimierungsverfahren gemäß der zweiten Ausführungsform dieser
Erfindung auszuführen,
wird ein decodiertes Zeichen mit seiner eigenen Nummer in einen
Kontextbaum in einer Baumstruktur eingetragen und wird ein Codebaum
entsprechend dem Kontextbaum erzeugt und aktualisiert, während die
Splay-Operation an ihm ausgeführt
wird. Deshalb ist es möglich,
einen Prozeß aus
zwei Stufen gleichzeitig auszuführen, das
heißt,
eine Stufe, um einen Code zu suchen, der mit einem zu decodierenden
Code eines Zeichens koinzidiert, und eine Stufe, um ein Zeichen,
das dem koinzidierenden Code entspricht, als decodiertes Zeichen
aus zugeben. Auf diese Weise kann eine Verarbeitungsrate bei der
Datenwiederherstellung außerordentlich
erhöht
werden.
-
Genauso
wie in dem Decodierer wird das Wahrscheinlichkeitsmodell konstruiert,
indem Knoten des Codebaums bei dem Splay-Prozeß immer dann erzeugt und aktualisiert
werden, wenn ein Zeichen eingegeben wird, so daß ein enormes Volumen einer arithmetischen
Operation, um das Wahrscheinlichkeitsmodell zu rekonstruieren, das
bereits bei jeder Zeicheneingabe konstruiert worden ist, unerläßlich wird,
und eine Verarbeitungsrate bei der Datenwiederherstellung wird dadurch
außerordentlich
erhöht.
-
Genauso
wie in dem Decodierer wird ferner immer dann, wenn derselbe Code
wie ein Code auftritt, der in der Vergangenheit bereits decodiert
worden ist, ein Knoten des Codebaums desselben Codes, der in der
Vergangenheit eingetragen worden ist, gegen einen Knoten höheren Grades
(bei dem Splay-Prozeß)
ausgetauscht, um eine Codelänge
auf die Hälfte
zu verringern. Dadurch kann ein Code mit der geringeren Anzahl von
Bits ausgedrückt
werden, wenn derselbe Code häufiger
decodiert wird, so daß ein
Effekt der Wiederherstellung außerordentlich
verbessert wird.
-
(b-1) Beschreibung der
ersten Abwandlung der zweiten Ausführungsform der Erfindung
-
Die
nächste
Beschreibung betrifft eine erste Abwandlung der zweiten Ausführungsform
gemäß dieser
Erfindung.
-
(1) Beschreibung des Codierers
-
42 ist ein Blockdiagramm, das eine interne Struktur
einer Datenkomprimierungsvorrichtung 3 als Abwandlung der
zweiten Ausführungsform dieser
Erfindung zeigt. Wie in 42 gezeigt,
ist die Datenkomprimierungsvorrichtung 3 dieser Erfindung mit
einer Kontextunterscheidungseinheit 108A und einer Kontextänderungseinheit 110A zusätzlich zu den
Elementen versehen, die unter Bezugnahme auf 33 in
der zweiten Ausführungsform
beschrieben worden sind. Anstelle der Decodiereinheit 104A und der
Codebaumhalteeinheit 105A von 33 sind eine
Codiereinheit 104A' und
eine Codebaumhalteeinheit 107A vorgesehen.
-
Deshalb
wird die Beschreibung von den Elementen in 42,
die dieselben wie jene in 33 sind,
hier weggelassen, und im folgenden werden nur die Elemente beschrieben,
die sich von jenen in 33 unterscheiden.
-
Die
Codiereinheit 104A' als
Codeausgabemittel und Escape-Code-Ausgabemittel gibt einen Escape-Code
gemäß einer
Gabelung aus, die sich von einem Knoten erstreckt, der auf dem Weg
von einer Wurzel eines Codebaums zu einem Blatt liegt, in dem der
Escape-Code gespeichert ist, falls kein Symbol in den Codebaum eingetragen
ist, oder gibt einen Code eines Symbols gemäß einer Gabelung aus, die sich
von einem Knoten erstreckt, der auf dem Weg von der Wurzel des Codebaums
zu einem Blatt liegt, in dem das Symbol gespeichert ist, falls das
Symbol in den Codebaum eingetragen ist.
-
Die
Codiereinheit 104A' als
Steuermittel wiederholt einen Prozeß, bis Daten decodiert sind,
falls ein Escape-Code
codiert ist.
-
Die
Codebaumhalteeinheit (ein Codebaumhaltemittel) 107A hält Codebäume, die
jeweils für
jeden Kontext unabhängig
sind, in denen im voraus ein Escape-Code (ESC) eingetragen wurde,
der bedeutet, daß kein
Symbol gespeichert ist. Die Kontextunterscheidungseinheit (ein Kontextunterscheidungsmittel) 108A unterscheidet,
ob ein Symbol in einem Codebaum gespeichert ist oder nicht, der
durch die Codebaumbestimmungseinheit 103 bestimmt wurde. Die
Kontextänderungseinheit
(ein Kontextänderungsmittel) 110A verringert
eine Länge eines
Kontextes, falls das Symbol nicht in dem Codebaum gespeichert ist.
-
In
der Datenkomprimierungsvorrichtung 3 von 42 mit solch einer Struktur, die sich von der in 33 gezeigten unterscheidet, gibt die Codiereinheit 104A' einen ESC-Code
gemäß einer
Gabelung aus, die sich von einem Knoten erstreckt, der auf dem Weg
von einer Wurzel eines Codebaums zu einem Blatt liegt, in dem der
ESC gespeichert ist, falls in dem Codebaum kein Symbol K gespeichert
ist, oder gibt einen Code des Symbols K gemäß einer Gabelung aus, die sich
von einem Knoten auf dem Weg von einer Wurzel eines Codebaums zu
dem Blatt erstreckt, in dem das Symbol K gespeichert ist, falls
das Symbol K in dem Codebaum gespeichert ist.
-
Falls
der ESC codiert wird, wiederholt die Codiereinheit 104A' einen Prozeß, bis die
Daten (Symbol) K codiert sind.
-
Die
Codebaumhalteeinheit 107A hält Codebäume, die jeweils für jeden
Kontext unabhängig
sind und in denen im voraus ein ESC-Code gespeichert wurde, der
bedeutet, daß kein
Symbol eingetragen ist.
-
Der
obige Prozeß wird
im folgenden unter Bezugnahme auf die Schritte H1 bis H11 in dem
in 43 gezeigten Flußdiagramm eingehender beschrieben.
-
Die
Kontextänderungseinheit 110A initialisiert
eine Kontextzeichenkette P0 von allen Kontexten, die in der Vordaten-Halteeinheit 200A-1~200A-n gehalten
werden (Schritt H1). Die Kontextzeichenkette P0 wird auf einen Kontext
P gesetzt (Schritt H2). Dann werden Daten (Symbol) K eingegeben,
die zu codieren sind (Schritt H3).
-
Die
Kontextänderungseinheit 110A sendet den
Kontext P und Informationen über
die Daten K zu der Kontextverlaufshalteeinheit 101A und
der Codebaumbestimmungseinheit 103A. Die Kontextverlaufshalteeinheit 101A sendet
die Informatio nen über den
Kontext P, die von der Kontextänderungseinheit 110A zugeführt wurden,
zu der Kontextunterscheidungseinheit 108A.
-
Die
Kontextunterscheidungseinheit 108A unterscheidet, ob ein
Symbol K in dem Kontext P gespeichert ist, gemäß den empfangenen Informationen über den
Kontext P (Schritt H4).
-
Falls
das Symbol K in den Kontext P eingetragen worden ist, weist die
Kontextverlaufshalteeinheit 101A die Codiereinheit 104A' an, einen Escape-Code
(ESC) zu codieren. Die Codiereinheit 104A' gibt einen Code aus, der einer
Gabelung eines Knotens auf dem Weg von einem Blatt des Escape-Codes
(ESC) zu einer Wurzel an einem Codebaum entspricht, der dem Kontext
P entspricht, um den Escape-Code zu codieren (NEIN-Route bei Schritt
H4 zu Schritt H5).
-
Die
Codiereinheit 104A' weist
die Codebaumaktualisierungseinheit 105A durch die Codebaumbestimmungseinheit 103A an,
den Codebaum zu aktualisieren. Die Codebaumaktualisierungseinheit 105A tauscht
ein Blatt des ESC an dem Codebaum gegen ein anderes Blatt oder einen
internen Knoten aus (Schritt H6).
-
Der
Grad des Kontextes P (ein Anfangszustand des Codebaums hat den Grad
0) wird in den nächst
niedrigeren Grad verändert
(Schritt H7). Die Prozedur kehrt zu Schritt H4 zurück, und
der Prozeß wird
wiederholt, bis entschieden wird, daß das Symbol K in dem Kontext
P eingetragen ist (das heißt,
bis bei Schritt H4 durch JA beurteilt wird, daß das Symbol K in dem Kontext
P eingetragen ist).
-
Falls
das Symbol K bei dem obigen Schritt H4 in dem Kontext P gespeichert
ist (das heißt,
bis bei Schritt H4 durch JA beurteilt wird, daß das Symbol K in dem Kontext
P gespeichert ist), weist die Kontextverlaufshalteeinheit 101A die
Codiereinheit 104A' an,
das Symbol K zu codieren. Die Codiereinheit 104A' gibt einen
Code gemäß einer
Gabelung eines Knotens von einem Blatt des Symbols K zu der Wurzel
aus, um es zu codieren (JA-Route bei Schritt H4 zu Schritt H8).
-
Die
Codiereinheit 104A' weist
die Codebaumaktualisierungseinheit 105A durch die Codebaumbestimmungseinheit 103A an,
den Codebaum zu aktualisieren. Die Codebaumaktualisierungseinheit 105A tauscht
ein Blatt des Ereignisses gegen ein anderes Blatt oder einen internen
Knoten aus (Schritt H9).
-
Die
Kontextänderungseinheit 106A sondert die ältesten
Daten aus (Daten, die in der Vordaten-Halteeinheit 100A-n gehalten
werden), und trägt einen
Kontext der Eingangsdaten K in der Vordaten-Halteeinheit 100A-1 ein.
Die Kontextänderungseinheit 110A aktualisiert
eine Kontextzeichenkette P0 auf der Basis jener Informationen (Schritt
H10).
-
Es
wird geprüft,
ob das Codieren aller Daten beendet ist oder nicht (Schritt H11).
Falls es nicht beendet ist, wird der Prozeß nach Schritt H2 wiederholt, bis
das Codieren aller Daten beendet ist (JA-Route bei Schritt H11).
Falls es beendet ist, ist der gesamte Prozeß für das Codieren vollendet.
-
Detailliertere
Informationen über
den Codeausgabeprozeß bei
den obigen Schritten H5 und H8 bieten die Schritte B1 bis B8, die
unter Bezugnahme auf 36 in der zweiten Ausführungsform
beschrieben worden sind. Detailliertere Informationen über den
Knotenrekombinationsprozeß bieten
die Schritte C1 bis C9, die unter Bezugnahme auf 37 in der zweiten Ausführungsform beschrieben worden sind.
-
Wie
oben angegeben, wird in der Datenkomprimierungsvorrichtung gemäß der ersten
Abwandlung der zweiten Ausführungsform
dieser Erfindung ein Escape-Code (ESC) im voraus in den Codebaum eingetragen,
der bedeutet, daß kein
Symbol eingetragen ist, und wird ein Code dieses Escape-Codes ausgegeben,
während
das zu codierende Symbol nicht in einem Kontext enthalten ist, der
im voraus eingetragen worden ist (mit anderen Worten, bis ein Kontext,
der das Symbol enthält,
gefunden wird und das Symbol codiert wird). Demzufolge ist es nicht
erforderlich, im voraus alle Kombinationen von Symbolen (Kontexten)
einzutragen, die als Eingangsdaten auftreten, so daß ein Volumen
eines Speichers, der verwendet wird, um Kontexte darin einzutragen,
außerordentlich
reduziert werden kann.
-
Wie
oben angegeben, kann eine Codelänge eines
Escape-Codes, der
ausgegeben wird, während kein
Symbol in einem Kontext enthalten ist, und im voraus eingetragen
worden ist, bei dem Splay-Prozeß verringert
(halbiert) werden, so daß eine
Zeitperiode, die erforderlich ist, um einen Kontext zu finden, in
dem das Symbol eingetragen ist, und es zu codieren, verkürzt werden
kann. Dies gestattet es, die Verarbeitungsrate bei der Datenkomprimierung
in hohem Maße
zu erhöhen
und auch eine Prozeßlast
auf der Datenkomprimierungsvorrichtung in hohem Maße zu verringern.
-
(2) Beschreibung des Decodierers
-
44 zeigt eine interne Struktur einer Datendekomprimierungsvorrichtung 4 als
erste Abwandlung der zweiten Ausführungsform dieser Erfindung.
Wie in 44 gezeigt, hat die Datenwiederherstellungsvorrichtung 4 eine
Kontextänderungseinheit 210A zusätzlich zu
den Elementen, die unter Bezugnahme auf 38 beschrieben
worden sind. Anstelle der Decodiereinheit 204A und der
Codebaumhalteeinheit 205A sind eine Decodiereinheit 204A' und eine Codebaumhalteeinheit 207A vorgesehen.
-
Die
Beschreibung von Elementen, die mit denselben Bezugszeichen wie
in 38 versehen sind, wird hier weg gelassen. Im folgenden
werden nur Elemente beschrieben, die sich von denen in 38 unterscheiden.
-
Die
Codebaumhalteeinheit (ein Codebaumhaltemittel) 207A hält einen
Codebaum, in den ein Escape-Code eingetragen worden ist. Die Kontextänderungseinheit
(ein Kontextänderungsmittel) 210A sondert
eingegebene Daten aus, wenn Ausgangsdaten ein Escape-Code sind,
um einen Kontext zu verkürzen.
-
Die
Decodiereinheit 204A' gibt
Daten aus, die in einem Blatt gespeichert sind, das durch Scannen
eines Weges von einer Wurzel eines Codebaums, der durch die Codebaumbestimmungseinheit 203A selektiert
wurde, zu einem Knoten (einer Gabelung) gemäß einem Code erreicht wird,
der in dem obengenannten Codierer codiert worden ist.
-
Die
Decodiereinheit 204A' als
Steuermittel bewirkt, daß die
Kontextänderungseinheit 210A einen
Kontext zurücksetzt,
wenn ein Escape-Code decodiert wird, wie oben angegeben, und führt eine Steuerung
aus, um den Prozeß zu
wiederholen, bis Daten ohne einen Escape-Code codiert sind.
-
In
der Datendekomprimierungsvorrichtung mit der obigen Struktur, die
in 44 gezeigt ist und sich von jener von 38 unterscheidet, hält die Codebaumhalteeinheit 207A einen
Codebaum, in dem ein ESC im voraus eingetragen worden ist, und die Kontextänderungseinheit 210A sondert
eingegebene Daten K aus, wenn die Daten K, die von der Kontextänderungseinheit 210A ausgegeben
werden, ein ESC sind, um den Kontext zu verkürzen.
-
Die
Decodiereinheit 204A' gibt
die Daten K aus, die in einem Blatt gespeichert sind, das durch Scannen
eines Weges von einer Wurzel eines Codebaums, der durch die Codebaumbestimmungseinheit 203A selektiert
wurde, zu einem Knoten erreicht wird. Der ESC wird decodiert, die
Kontextänderungs einheit 210A ändert den
Grad des Kontextes und wiederholt den Prozeß, bis die Daten K ohne den
ESC decodiert sind.
-
Als
nächstes
wird die obige Operation unter Bezugnahme auf die Schritte J1 bis
J9 in einem Flußdiagramm,
das in 45 gezeigt ist, eingehender
beschrieben.
-
Zunächst initialisiert
die Kontextänderungseinheit 210A eine
Kontextzeichenkette P0 von allen Kontexten, die in den Vordaten-Halteeinheiten 200A-1~200A-n gehalten
werden (Schritt J1). Die Kontextzeichenkette P0 wird auf einen Kontext
P gesetzt (Schritt J2).
-
Die
Kontextänderungseinheit 110A sendet diesen
Kontext P zu der Kontextverlaufshalteeinheit 201A und der
Codebaumbestimmungseinheit 203A. Die Codebaumbestimmungseinheit 203A selektiert (bestimmt)
einen Codebaum gemäß dem empfangenen
Kontext P (Schritt J3) und sendet den bestimmten Codebaum zu der
Decodiereinheit 204A'.
-
Die
Decodiereinheit 204A' decodiert
einen Code durch Scannen eines Weges von einer Wurzel zu einem Blatt
an dem bestimmten Codebaum gemäß einem
Code, der in dem Codierer codiert worden ist (Schritt J4). Eine
detailliertere Beschreibung des Prozesses, der durch die Decodiereinheit 204A' ausgeführt wird,
bieten übrigens
die Schritte G1 bis G7, die unter Bezugnahme auf 41 in der zweiten Ausführungsform beschrieben worden
sind.
-
Die
Decodiereinheit 204A' prüft, ob ein
decodiertes Symbol K ein ESC (ein Escape-Code) ist oder nicht (Schritt
J5). Falls das decodierte Ereignis ein ESC ist, sendet die Decodiereinheit 204A' ein ESC-Signal
zu der Kontextänderungseinheit 210A (JA-Route
bei Schritt J5).
-
Die
Kontextänderungseinheit 210A,
die dieses ESC-Signal empfangen hat, ändert den Grad des Kontextes
P in den nächst
niedrigeren Grad (wodurch ein Kontext P zum Beispiel den Grad (n – 1) erhält, ungeachtet
der ältesten
Daten, die in der Vordaten-Halteeinheit 200A-n gehalten
werden) (Schritt J6). Die Kontextänderungseinheit 210A sendet
diesen Kontext P zu der Kontextverlaufshalteeinheit 201 und
der Codebaumbestimmungseinheit 203. Die Prozedur kehrt
zu Schritt J3 zurück.
-
Und
zwar wird der Prozeß ab
Schritt J2 wiederholt, bis die Decodiereinheit 204A' das Symbol
K ohne einen ESC decodiert.
-
Falls
das decodierte Symbol K kein ESC ist, wird ein Blatt des decodierten
Symbols K gegen ein anderes Blatt oder einen internen Knoten ausgetauscht
(NEIN-Route bei Schritt J5 zu Schritt J7). Weitere Einzelheiten
zu dem Prozeß des
Austauschens von Blättern
oder Knoten enthalten die Schritte C1 bis C9 im Flußdiagramm,
das unter Bezugnahme auf 37 in
der zweiten Ausführungsform
beschrieben worden ist.
-
Die
Kontextaktualisierungseinheit 206A sondert die ältesten
Daten aus (Daten, die in der Vordaten-Halteeinheit 200A-n gehalten
werden) und fügt das
decodierte Symbol K als Kontext in die Vordaten-Halteeinheit 200A-1 ein,
um es einzutragen, um die Kontextzeichenkette P0 zu aktualisieren
(Schritt J8).
-
Dann
wird geprüft,
ob das Decodieren aller Daten beendet ist oder nicht (Schritt J9).
Falls es nicht beendet ist, wird der Prozeß ab Schritt J2 wiederholt
(NEIN-Route bei Schritt J9 zu Schritt J2). Falls es beendet ist,
ist der Decodierprozeß vollendet (JA-Route
bei Schritt J9).
-
Genauso
wie bei dem oben angegebenen Beispiel des Codierers ist die Ordnung
des Prozesses zum Austauschen von Knoten (bei Schritt J7) und des
Prozesses zum Aktualisieren des Kontextes (bei Schritt J8) nicht
auf das obige Beispiel begrenzt. Der Kontextaktualisierungsprozeß (Schritt
J8) kann vor dem Knotenrekombinationsprozeß (Schritt J7) ausgeführt werden,
oder beide Prozesse können
parallel ausgeführt
werden.
-
In
der Datenwiederherstellungsvorrichtung gemäß der ersten Abwandlung der
zweiten Ausführungsform
dieser Erfindung wird ein Escape-Code (ESC) im voraus in einen Codebaum
eingetragen, der bedeutet, daß kein
Symbol eingetragen ist. Falls ein decodiertes Symbol der Escape-Code
ist, wird ein Kontext verkürzt
(geändert),
bis ein Code ohne den Escape-Code
(das heißt,
ein zu decodierender Code eines Symbols) decodiert wird und ein
zu decodierender Code des Symbols gesucht wird. Demzufolge ist es
nicht erforderlich, im voraus alle Kombinationen von Symbolen (Kontexten),
die als Eingangsdaten auftreten, in den Codebaum einzutragen, so
daß ein Volumen
eines Speichers, der verwendet wird, um die Kontexte darin einzutragen,
außerordentlich
reduziert werden kann.
-
Solange
ein decodiertes Symbol ein Escape-Code ist, wird bei dem Splay-Prozeß eine Codelänge des
Escape-Codes auf die Hälfte
verringert. Dadurch kann eine Zeitperiode, die benötigt wird,
bis ein Kontext, der das zu decodierende Symbol enthält, gefunden
ist und das Symbol decodiert ist, verringert werden, wodurch eine
Verarbeitungsrate bei der Datendekomprimierung in hohem Maße erhöht werden kann
und eine Verarbeitungslast auf der Datendekomprimierungsvorrichtung
in hohem Maße
verringert werden kann.
-
(b-2) Beschreibung der
zweiten Abwandlung der zweiten Ausführungsform der Erfindung
-
Die
nächste
Beschreibung betrifft eine zweite Abwandlung der zweiten Ausführungsform
dieser Erfindung.
-
(1) Beschreibung des Codierers
-
46 zeigt eine interne Struktur einer Datenkomprimierungsvorrichtung 3 als
zweite Abwandlung gemäß der zweiten
Ausführungsform
dieser Erfindung. Wie in 46 ge zeigt,
hat die Datenkomprimierungsvorrichtung 3 gemäß dieser
Ausführungsform
eine Codeeintrageinheit 112A zusätzlich zu den Elementen, die
bei der ersten Abwandlung der zweiten Ausführungsform unter Bezugnahme
auf 38 beschrieben worden sind.
-
Deshalb
wird die Beschreibung der Elemente von 46,
die dieselben wie jene von 33 sind,
hier weggelassen.
-
Die
Codeeintrageinheit 112A trägt Daten K in einen Codebaum
ein, falls die Eingangsdaten K in dem Codebaum nicht gespeichert
sind.
-
Bei
der obigen Struktur kann die Codeeintrageinheit 112A die
Daten K in den Codebaum eintragen, falls die Eingangsdaten K in
dem Codebaum nicht gespeichert sind.
-
Als
nächstes
wird die obige Operation unter Bezugnahme auf die Schritte K1 bis
K12 beschrieben, die in 47 gezeigt
sind. Die in 47 gezeigten Prozesse, den
Schritt K8 ausgenommen, sind jedoch genau dieselben wie die Schritte
H1 bis H11, die unter Bezugnahme auf das Flußdiagramm von 43 bei der ersten Abwandlung gemäß der zweiten
Ausführungsform
beschrieben worden sind.
-
Mit
anderen Worten, derselbe Prozeß wie der
Prozeß bei
den Schritten H1 bis H7 in 43 wird
bei den Schritten K1 bis K7 in dieser Ausführungsform ausgeführt, wonach
ein Prozeß bei
Schritt K8 ausgeführt
wird.
-
Genauer
gesagt, falls die Kontextunterscheidungseinheit 108A entscheidet,
daß das
Symbol K nicht in dem Codebaum gespeichert ist (NEIN-Route bei Schritt
K4), aktualisiert die Codebaumaktualisierungseinheit 105A einen
Code des ESC durch Austauschen eines Blattes des ESC gegen ein anderes Blatt
oder einen internen Knoten an dem Codebaum (Schritt K6). Die Kontextverlaufshalteeinheit 101A sendet
einen gegenwärtigen
Kontext P zu der Codeeintrageinheit 112A. Die Kontextänderungseinheit 110A verändert den
Grad des Kontex tes P in den nächst
niedrigeren Grad, um ihn zu ändern
(Schritt K7). Deshalb trägt
die Codeeintrageinheit 112A das Symbol K in den Codebaum
ein (Schritt K8).
-
Falls
bei Schritt K4 entschieden wird, daß das Ereignis K in dem Kontextbaum
gespeichert ist, wird derselbe Prozeß wie der obengenannte Prozeß bei den
Schritten H8 bis H11, die in 43 gezeigt sind,
bei den Schritten K9 bis K12 ausgeführt.
-
Die
Datenkomprimierungsvorrichtung gemäß der zweiten Abwandlung der
zweiten Ausführungsform
dieser Erfindung kann denselben Effekt wie der Codierer gemäß der ersten
Abwandlung der zweiten Ausführungsform
vorsehen, da die Schritte dieser Abwandlung außer Schritt K8 genau dieselben wie
die Schritte des Prozesses in dem Codierer gemäß der ersten Abwandlung der
zweiten Ausführungsform
sind.
-
Wie
oben angegeben, wird es durch Vorsehen von Schritt 8 möglich, ein
Symbol in den Codebaum einzutragen, während ein Escape-Code codiert
wird, so daß ein
Symbol, das nicht im voraus gespeichert wurde, in einem frühen Stadium
(in einem höheren
Grad) beim nächsten
Codieren codiert werden kann. Dadurch kann der Komprimierungseffekt mit
fortschreitender Codierung mehr verstärkt werden.
-
(2) Beschreibung des Decodierers
-
48 zeigt eine interne Struktur einer Datendekomprimierungsvorrichtung 4 gemäß einer zweiten
Abwandlung der zweiten Ausführungsform dieser
Erfindung. Wie in 48 gezeigt, hat die Datendekomprimierungsvorrichtung 4 eine
Codeeintrageinheit 212A zusätzlich zu den Elementen des
Dekomprimierers gemäß der ersten
Abwandlung der zweiten Ausführungsform,
die unter Bezugnahme auf 44 beschrieben
worden sind. Die Codeeintrageinheit 212A ist entsprechend
der Struktur des Codierers vorgesehen (siehe 46).
-
Deshalb
wird die Beschreibung der Elemente von 48,
die dieselben wie jene von 44 sind,
hier weggelassen.
-
Wenn
ein ESC (Escape-Code) bei dem Decodierprozeß von Daten, die in dem Codierer
codiert worden sind, decodiert wird, trägt die Codeeintrageinheit 212A einen
Code dieser decodierten Daten in alle Codebäume ein, die einem Kontext
entsprechen.
-
Zusätzlich zu
der Operation des in 44 gezeigten Dekomprimierers
trägt die
Codeeintrageinheit 212A einen Code von decodierten Daten
K in alle Codebäume
ein, die dem Kontext entsprechen, wenn ein Escape-Code beim Decodieren
der codierten Daten K decodiert wird.
-
Als
nächstes
wird die obige Operation unter Bezugnahme auf die Schritte L1 bis
L10 in 49 eingehender beschrieben.
-
Wie
in 49 gezeigt, wird bei den Schritten L1 bis L4 ein
Prozeß ausgeführt, der
dem Prozeß bei den
Schritten J1 bis J4 ähnlich
ist, der unter Bezugnahme auf 45 beschrieben
worden ist und in dem Dekomprimierer gemäß der ersten Abwandlung der
zweiten Ausführungsform
ausgeführt
wird.
-
Bei
Schritt L4 tauscht die Codebaumaktualisierungseinheit 205A,
nachdem die Decodiereinheit 204A einen Code decodiert hat,
ein Blatt des decodierten Symbols K gegen ein anderes Blatt oder
einen internen Knoten aus (Schritt L5).
-
Falls
der ESC (der Escape-Code) in der Vergangenheit decodiert worden
ist und die Codebaumaktualisierungseinheit 205A ein ESC-Signal von
der Decodiereinheit 204A zu diesem Zeitpunkt empfangen
hat, trägt
die Codebaumaktualisierungseinheit 205A das Symbol K in
alle Codebäume
ein, in denen dieser ESC gespeichert worden ist (Schritt L6).
-
Es
wird entschieden, ob das decodierte Symbol K ein ESC ist oder nicht
(Schritt L7). Falls das decodierte Symbol K ein ESC ist, wird ein
ESC-Signal, das angibt, daß das
decodierte Symbol K ein ESC ist, zu der Kontextaktualisierungseinheit 210A und
der Codeeintrageinheit 212A gesendet. Die Kontextänderungseinheit 210A,
die dieses ESC-Signal empfangen hat, ändert den Grad des Kontextes
P in den nächst
niedrigeren Grad, um ihn abzuändern (JA-Route
bei Schritt L7 zu Schritt L8). Die Prozedur kehrt dann zu Schritt
L3 zurück,
und der Prozeß wird wiederholt,
bis das Symbol K ohne einen ESC decodiert ist.
-
Wie
auf obige Weise erzeugt dann, falls das Symbol K, das in der Decodiereinheit 204A decodiert wird,
ein ESC ist, die Codeeintrageinheit 212A ein neues Blatt
an dem Codebaum. Falls die Decodiereinheit 204A das Symbol
K ohne einen ESC decodiert, wird dieses Symbol K in allen neu erzeugten Blättern gespeichert,
wodurch das genannte Symbol in alle Codebäume eingetragen werden kann,
in denen der ESC decodiert worden ist.
-
Falls
das Symbol K kein ESC bei dem obigen Schritt L7 ist, sondert die
Kontextaktualisierungseinheit 206A die ältesten Daten aus (Daten, die
in der Vordaten-Halteeinheit 200A-n gehalten werden) und trägt das decodierte
Symbol K als Kontext in die Vordaten-Halteeinheit 200A-1 ein,
um die Kontextzeichenkette P0 zu aktualisieren (Schritt L9).
-
Dann
wird geprüft,
ob alle Daten decodiert worden sind oder nicht (Schritt L10). Falls
sie nicht decodiert worden sind, wird der Prozeß ab Schritt L2 wiederholt
(NEIN-Route bei Schritt L10). Falls sie decodiert sind, ist der
Decodierprozeß vollendet (JA-Route
bei Schritt L10).
-
Falls
die Decodiereinheit 204A einen ESC decodiert, trägt die Codebaumeintrageinheit 212A, wie
oben angegeben, das Symbol K in den Codebaum in dem Decodierer neu
ein, genauso wie in dem Codierer.
-
Die
Datenwiederherstellungsvorrichtung gemäß der zweiten Abwandlung der
zweiten Ausführungsform
dieser Erfindung kann denselben Effekt wie der Decodierer gemäß der ersten
Abwandlung der zweiten Ausführungsform
ergeben. Zusätzlich dazu
wird ein Code eines Symbols, der zu decodieren ist, in den Codebaum
eingetragen, während
ein Code eines Escape-Codes
decodiert wird, so daß ein Symbol,
das in dem Codebaum nicht gespeichert worden ist, in einem frühen Stadium
beim nächsten Decodieren
decodiert werden kann, genauso wie in dem Codierer. Dies gestattet
eine Verstärkung
des Dekomprimierungseffektes, wenn der Decodierprozeß an Daten,
wie beispielsweise Zeichen, weiter voranschreitet, und eine weitgehende
Reduzierung einer Verarbeitungslast auf der Datendekomprimierungsvorrichtung.
-
(b-3) Beschreibung der
dritten Abwandlung der zweiten Ausführungsform
-
sAls
nächstes
folgt die Beschreibung einer dritten Abwandlung gemäß der zweiten
Ausführungsform
dieser Erfindung.
-
(1) Beschreibung des Codierers
-
In
einer Datenkomprimierungsvorrichtung 3 gemäß der dritten
Abwandlung dieser Ausführungsform
trägt die
Kontextänderungseinheit 110A als
Verlaufseintragmittel, anders als bei der oben beschriebenen zweiten
Abwandlung der zweiten Ausführungsform,
falls ein ESC während
des Codierens der Daten K auch nur einmal decodiert wird, eine Kombination
aus einem Kontext unmittelbar vor dem Codieren dieser Daten und
diesen Daten in die Kontextverlaufshalteeinheit 101A ein,
und die Codeeintrageinheit 112A trägt die Daten neu in den Codebaum
ein, der einen Escape-Code hat, der unmittelbar vor dem Codieren
dieser Daten decodiert wurde.
-
Unter
Bezugnahme auf die Schritte M1 bis M13, die in 50 gezeigt sind, wird die obige Operation als
nächstes
eingehender beschrieben.
-
Wie
in 50 gezeigt, ist ein Prozeß bei den Schritten M1 bis
M9 den Schritten H1 bis H9 von 43 gemäß der ersten
Abwandlung der zweiten Ausführungsform ähnlich.
-
Falls
das Symbol K der Eingangsdaten in dem Kontext P gespeichert ist
(JA-Route bei Schritt M4), geht die Prozedur über Schritt M8 zu Schritt M9 über, wo
der Codebaum umgeformt wird. Danach wird geprüft, ob das Symbol K, das durch
die Decodiereinheit 104 bei Schritt M8 codiert wurde, ein
ESC ist oder nicht (Schritt M10).
-
Falls
das codierte Symbol K ein ESC ist, trägt die Codeeintrageinheit 112A das
Symbol K in einen Codebaum ein, der dem Kontext P' unmittelbar vor dem
Codieren des Symbols K entspricht (JA-Route bei Schritt M10 zu Schritt
M11). Die Kontextaktualisierungseinheit 106A trägt den Kontext
P mit dem Symbol K als letzten Kontext in die Vordaten-Halteeinheit 100A-1 ein.
-
Gemäß diesen
Informationen fügt
die Kontextänderungseinheit 110A die
Daten K in die Kontextzeichenkette P0 ein, um sie zu aktualisieren (Schritt
M12), und trägt
sie in die Kontextverlaufshalteeinheit 101A ein.
-
Da
die Daten K in den Codebaum des Kontextes P' unmittelbar vor dem Codieren der Daten
K bei Schritt M11 (das heißt,
ein zuletzt codierter Kontext) gespeichert werden, trägt nämlich die
Kontextänderungseinheit 106A eine
Kombination aus den Daten K und dem Kontext P' unmittelbar vor dem Codieren der Daten
K in die Kontextverlaufshalteeinheit 101A ein.
-
Falls
das codierte Symbol K kein ESC ist (NEIN-Route bei Schritt M10), überspringt
die Prozedur den Schritt M11 und geht zu dem obigen Schritt M12 über.
-
Dann
wird geprüft,
ob das Decodieren aller Daten beendet ist oder nicht (Schritt M13).
Falls es nicht beendet ist (NEIN-Route bei Schritt M13), kehrt der
Prozeß zu
Schritt M2 zurück,
und der Prozeß wird wiederholt,
bis das Codieren aller Daten beendet ist. Falls es beendet ist,
ist der Codierprozeß vollendet (JA-Route
bei Schritt M13).
-
Die
Datenkomprimierungsvorrichtung gemäß der dritten Abwandlung der
zweiten Ausführungsform
dieser Erfindung kann, wie oben angegeben, denselben Effekt wie
der Codierer gemäß der zweiten
Abwandlung der zweiten Ausführungsform ergeben.
Zusätzlich
dazu wird dann, falls ein Symbol in einem zuvor eingetragenen Kontext
nicht enthalten ist, dieses Symbol nur in einen Codebaum eines Escape-Codes
eingetragen, der zuletzt codiert wurde, so daß ein Volumen eines Speichers,
der zum Eintragen von neuem Kontext verwendet wird, außerordentlich
reduziert werden kann. Dadurch kann eine Leistung der Datenkomprimierungsvorrichtung
in hohem Maße
verbessert werden.
-
Ferner
wird ein Knoten eines Codebaums eines neu eingetragenen Symbols
immer dann ausgetauscht, wenn dasselbe Symbol später eingetragen wird, um die
Codelänge
(bei dem Splay-Prozeß)
zu verkürzen.
Deshalb ist es möglich,
eine Codelänge eines
Codes nur eines Symbols, das tatsächlich häufig auftritt, zu verkürzen. Dadurch
kann der Komprimierungseffekt der Datenkomprimierungsvorrichtung außerordentlich
verbessert werden.
-
(2) Beschreibung des Decodierers
-
In
der Datendekomprimierungsvorrichtung gemäß der dritten Abwandlung dieser
Ausführungsform
trägt die
Kontextänderungseinheit 210A als
Verlaufseintragmittel, anders als bei der Datendekomprimierungsvorrichtung,
die in 48 gezeigt ist, einen Kontext
zu der Zeit des letzten Decodierens eines ESC (eines Escape-Codes)
bei dem Decodierprozeß der
codierten Daten K, die in dem Codierer codiert worden sind, und
die Daten K in der Kontextverlaufshalteeinheit 201A ein,
und die Codeeintrageinheit 212A trägt einen Code der Daten K in
einen Codebaum ein, der dem Kontext zu der Zeit des letzten Decodierens
des ESC bei dem Decodierprozeß der Daten
K entspricht.
-
Als
nächstes
wird die obige Operation unter Bezugnahme auf die Schritte N1 bis
N10 in 51 eingehender beschrieben.
-
Wie
in 51 gezeigt, ist ein Prozeß bei Schritt N1 bis N5 jenem
bei den Schritten K1 bis K5 ähnlich,
die in 49 gezeigt sind und in Verbindung mit
dem obigen Dekomprimierer gemäß der zweiten Abwandlung
der zweiten Ausführungsform
beschrieben worden sind.
-
In
dem Dekomprimierer gemäß dieser
Ausführungsform
wird ein Blatt des Symbols K, das bei Schritt N5 decodiert worden
ist, gegen ein anderes Blatt oder einen internen Knoten ausgetauscht,
und dann wird geprüft,
ob das decodierte Symbol K ein ESC ist oder nicht (Schritt N6).
-
Falls
das decodierte Symbol K ein ESC ist, wird die Zahl des Grades des
Kontextes P geändert (JA-Route
bei Schritt N6 zu Schritt N7). Der Prozeß kehrt zu Schritt N3 zurück, und
der Prozeß wird
wiederholt, bis das Symbol K ohne einen ESC decodiert wird.
-
Falls
das decodierte Symbol K kein ESC ist, erzeugt die Codebaumaktualisierungseinheit 205A ein
neues Blatt nur an einem Codebaum, in dem ein ESC unmittelbar zuvor
decodiert worden ist. Die Codebaumeintrageinheit 212A trägt das Symbol
K in das neue Blatt an diesem Codebaum ein (NEIN-Route bei Schritt
N6 zu Schritt N8).
-
Die
Kontextaktualisierungseinheit 206A sondert die ältesten
Daten aus (Daten, die in der Vordaten-Halteeinheit 200A-n gehalten
werden) und trägt das
decodierte Symbol K als Kontext in die Vordaten-Halteeinheit 200A-1 ein,
um die Kontextzeichenkette P0 zu aktualisieren (Schritt N9).
-
Es
wird geprüft,
ob das Decodieren aller Daten beendet ist oder nicht (Schritt N10).
Falls es nicht beendet ist, wird der Prozeß ab Schritt N2 wiederholt (NEIN-Route
bei Schritt N10 zu Schritt N2). Falls es beendet ist, ist der Decodierprozeß vollendet.
-
Die
Datendekomprimierungsvorrichtung gemäß der dritten Abwandlung der
zweiten Ausführungsform
ergibt denselben Effekt wie der Dekomprimierer gemäß der zweiten
Abwandlung der zweiten Ausführungsform.
Zusätzlich
dazu wird dann, falls ein Symbol nicht in einem zuvor eingetragenen
Kontext enthalten ist, ein Code dieses Symbols nur in einen Codebaum
eines Escape-Codes neu eingetragen, der zuletzt decodiert worden
ist, so daß immer nur
ein Eintrag für
ein Symbol erforderlich ist. Dadurch kann ein Volumen eines Speichers,
der zum Verwalten von Knoten-IDs zum Eintragen von Codes von neuen
Symbolen verwendet wird, außerordentlich
reduziert werden, wodurch die Leistung der Datendekomprimierungsvorrichtung
in hohem Maße verbessert
wird.
-
Ferner
wird ein Knoten an dem Codebaum, in dem ein neues Symbol gespeichert
ist, immer dann ausgetauscht, wenn dasselbe Symbol später eingetragen
wird, um die Codelänge
(bei dem Splay-Prozeß)
zu verringern, so daß nur
ein Symbol, das tatsächlich
häufig
auftritt, einen Code mit kürzerer
Länge haben
kann. Dadurch kann der Dekomprimierungseffekt der Datendekomprimierungsvorrichtung außerordentlich
verstärkt
werden.
-
(3) Beschreibung der dritten
Ausführungsform
der Erfindung
-
Als
nächstes
folgt die Beschreibung einer dritten Ausführungsform dieser Erfindung.
Eine Datenkomprimierungsvor richtung und eine Datendekomprimierungsvorrichtung
gemäß dieser
Ausführungsform
dienen zum Ausführen
des Datenkomprimierungsverfahrens und des Datendekomprimierungsverfahrens
dieser Erfindung, wie in 32 gezeigt,
genauso wie bei der zweiten Ausführungsform.
-
Genauso
wie bei der zweiten Ausführungsform
wird die Datenkomprimierungsvorrichtung als Codierer bezeichnet
und wird die Datendekomprimierungsvorrichtung als Dekomprimierer
bezeichnet. Ein Kontextbaum und ein Codebaum, die in der folgenden
Beschreibung vorkommen, haben dieselben Strukturen wie jene gemäß der ersten
Ausführungsform.
-
(1) Beschreibung des Codierers
-
52 ist ein Blockdiagramm, das eine interne Struktur
einer Datenkomprimierungsvorrichtung 3 zeigt (siehe 32), die dazu dient, ein Datenkomprimierungsverfahren
gemäß der dritten
Ausführungsform
dieser Erfindung auszuführen.
In 52 bezeichnet Bezugszeichen 301B eine
Codebaumhalteeinheit, bezeichnet 302B eine Kontextbaumhalteeinheit,
bezeichnet 303B eine Kontexteintrageinheit, bezeichnet 305B eine
Kontextänderungseinheit,
bezeichnet 306B eine Codiereinheit, bezeichnet 307B eine
Codeänderungseinheit,
bezeichnet 321B eine Kontexthalteeinheit und bezeichnet 322B eine
Codeeintrageinheit.
-
Die
Codebaumhalteeinheit (ein Codebaumhaltemittel) 301B hält einen
Codebaum, in dem ein Escape-Code (ESC) im voraus eingetragen wurde (das
heißt,
Daten, die bedeuten, daß Daten
nicht eingetragen sind). Die Kontextbaumhalteeinheit (ein Kontextbaumhaltemittel) 302B hält einen
Kontextbaum, in dem eine Kombination aus einem Symbol K (Eingangsdaten)
und einem Kontext eingetragen ist.
-
Die
Kontexteintrageinheit (ein Kontexteintragmittel) 303B trägt das Symbol
K neu in einen Kontextbaum ein, nach dem der Escape-Code codiert worden
ist. Die Kontextbaumhalteeinheit 321B hält temporär das eingegebene Symbol K.
-
Nachdem
der Escape-Code codiert worden ist, verzweigt die Kontexteintrageinheit
(ein Codeeintragmittel) 322B ein Blatt (einen Punkt, um
Daten darin zu speichern) des Escape-Codes an dem Codebaum, der in der Codebaumhalteeinheit
(dem Codebaumhaltemittel) 301B gehalten wird, um das Symbol
K neu einzutragen.
-
Zu
diesem Zweck enthält
die Codeeintrageinheit 322B eine Erzeugungseinheit von
neuen Knoten-IDs 61, eine Verriegelung 62 und
eine Elterninformationsaktualisierungseinheit 63, die später unter Bezugnahme
auf 53 beschrieben sind. Im Inneren
der Codebaumhalteeinheit 301B sind eine Halteinheit von
externen Knoten (Blatt-IDs) 64, eine Halteeinheit von internen
Knoten (Knoten-IDs) 65, eine ESC-ID-Halteeinheit 66 und eine Codebaumverwaltungseinheit 67 vorgesehen.
-
Die
Kontextänderungseinheit 305B ändert einen
Kontext, falls eine Kombination aus einem Symbol K und einem Kontext
nicht in dem Kontextbaum gehalten wird.
-
Die
Codiereinheit 306B gibt einen Code, der mit "1" und "0" ausgedrückt wird,
gemäß einer
Gabelung von einem oberen Ende des Codebaums zu einem Blatt aus,
in dem das Symbol K oder ein Escape-Code gespeichert ist.
-
Die
Codeaktualisierungseinheit 307B tauscht Blätter, in
denen das codierte Symbol K und ein Escape-Code gespeichert sind,
gegen andere Blätter
oder einen internen Knoten aus.
-
Wie
in 53 gezeigt, erzeugt im Inneren der Codeeintrageinheit 322B die
Erzeugungseinheit von neuen Knoten-IDs 61 zwei neue Knoten-IDs (ID-1,
ID-2), wenn sie ein Aktualisierungssignal von der Kontexthalteeinheit 302B empfängt. Die
Verriegelung 62 hält
temporär
ein ID (ESC-ID) eines Escape-Codes.
-
Die
Elterninformationsaktualisierungseinheit 63 empfängt Elterninformationen,
die aus drei Arten von Informationen (ESC-ID, ID-1 und ID-2) gebildet sind,
ein Knoten-ID eines Knotens höheren
Grades, der ein Objekt des Prozesses ist, ein Knoten-ID eines Knotens
niedrigeren Grades, der auf der unteren rechten Seite liegt, und
ein Knoten-ID eines Knotens niedrigeren Grades, der auf der unteren
linken Seite liegt, aktualisiert diese Elterninformationen und sendet
sie zu der Codebaumhalteeinheit 301B.
-
In
der Codebaumhalteeinheit 301B hält die Halteeinheit von externen
Knoten (Blatt-IDs) 64 Blatt-IDs von Blättern an einem Codebaum, worin
jeweils Daten gespeichert sind, hält die Halteeinheit von internen
Knoten (Knoten-IDs) 65 Knoten-IDs von Knoten eines Codebaums und hält die ESC-ID-Halteeinheit 66 einen
Escape-Code eines Codebaums und ein ID dieses Escape-Codes.
-
Die
Codebaumverwaltungseinheit 67 empfängt ein Kontext-ID von der Codebaumhalteeinheit 302B und
sendet dieses Kontext-ID zu der Halteeinheit von externen Knoten
(Blatt-IDs) 64,
der Halteeinheit von internen Knoten (Knoten-IDs) 65 und
der ESC-ID-Halteeinheit 66.
-
In
der Datenkomprimierungsvorrichtung 3 mit der obigen Struktur
gemäß der dritten
Ausführungsform
dieser Erfindung hält
die Codehalteeinheit 301B einen Codebaum, in dem ein Escape-Code
im voraus gespeichert ist, hält
die Kontextbaumhalteeinheit 302B einen Kontextbaum, in
dem eine Kombination aus einem Symbol K und einem Kontext P gespeichert
ist, und decodiert die Kontexteintrageinheit 303B den Escape-Code
und trägt
dann das Symbol K in den Kontextbaum neu ein.
-
Die
Kontexthalteeinheit 321B hält temporär den Kontext P. Die Codeeintrageinheit 322B codiert dann
den Codebaum, verzweigt ein Blatt des Escape-Codes an dem Codebaum
und trägt
das Symbol K neu ein.
-
Die
Kontextänderungseinheit 305B ändert den
Kontext P, falls eine Kombination aus dem eingegebenen Signal K
und dem Kontext P in dem Kontextbaum nicht gespeichert ist.
-
Die
Codiereinheit 306B gibt einen Code gemäß der Gabelung eines Weges
von einem oberen Ende des Codebaums zu einem Blatt aus, in dem Eingangsdaten
oder ein Escape-Code gespeichert sind. Die Codeaktualisierungseinheit 307B tauscht Blätter, in
denen codierte Daten und ein Escape-Code gespeichert sind, gegen
andere Blätter
oder einen Knoten aus.
-
57(a) zeigt ein Beispiel für einen Codebaum, während 57(b) ein Beispiel für einen Kontextbaum zeigt.
Wie in 57(a) gezeigt, hat der Codebaum
ID-Nummern (0-10)
von einer Wurzel und von Knoten als interne Knoten und von Blättern als externe
Knoten.
-
Andererseits
hat der Kontextbaum, wie in 57(b) gezeigt,
ein ID eines Kontextes und ID-Nummern von Symbolen, die in den Kontext
eingetragen worden sind. Die ID-Nummer des Kontextes ist mit einer
ID-Nummer einer Wurzel des Codebaums identisch, und die ID-Nummern
der Symbole sind mit der ID-Nummer von jeweiligen Blättern identisch.
-
Die
obige Operation wird als nächstes
unter Bezugnahme auf die Schritte P1 bis P16, die eine Operation
des Dekomprimierers gemäß dieser
Erfindung darstellen, der in 54 bis 56 gezeigt
ist, eingehender beschrieben.
-
In
der folgenden Beschreibung der Operation wird angenommen, daß der Codebaum
und der Kontextbaum die oben beschriebenen Strukturen haben.
-
Wie
in 54 gezeigt, wird dann, wenn ein Symbol K eingegeben
wird (Schritt P1), ein Kontext P, der in der Kontexthalteeinheit 321B gehalten
wird, an die Kontextänderungseinheit 305B ausgegeben (Schritt
P2).
-
Die
Kontextänderungseinheit 305B empfängt den
Kontext P und das Symbol K und trifft die Entscheidung, ob das Symbol
K in dem Kontext P gespeichert ist oder nicht. Falls das Symbol
K nicht in dem Kontext P gespeichert ist, gibt die Kontextbaumhalteeinheit 302B ein
Kontextänderungssignal
an die Kontextänderungseinheit 305B aus
(Schritt P3).
-
Die
Kontextänderungseinheit 305B sondert als
Antwort auf das Kontextänderungssignal
ein Zeichen des höchsten
Grades aus (das heißt,
ein Blatt, das von der Wurzel an dem Kontextbaum am weitesten entfernt
ist) und sendet den Kontext P mit dem nächst niedrigeren Grad zu der
Kontextbaumhalteeinheit 302B (Schritt P4).
-
Dieser
Prozeß wird
wiederholt, bis ein Kontext P bestimmt wird, in dem das Symbol K
gespeichert ist.
-
Wie
in 55 gezeigt, sendet die Kontextbaumhalteeinheit 302B ein
ID (Nummer) des Kontextes P und ein ID des Symbols K (oder eines
ESC, falls das Symbol K nicht gespeichert ist) zu der Codiereinheit 306B (Schritt
P5). Die Codiereinheit 306B überträgt das empfangene ID so wie
es ist zu der Codebaumhalteeinheit 301B (Schritt P6).
-
Die
Codebaumhalteeinheit 301B sendet eine ID-Nummer eines Knotens
höheren
Grades des empfangenen ID und Informationen darüber, ob das von der Codiereinheit 306B zugeführte ID
auf der linken Seite oder der rechten Seite des Knotens höheren Grades
liegt, zu der Codiereinheit 306B (Schritt P7).
-
Die
Codiereinheit 306B gibt "1" als
Code aus, falls das ID zum Beispiel auf der rechten Seite liegt,
oder gibt "0" als Code aus, falls
das ID auf der linken Seite liegt, gemäß den Positionsinformationen über einen
Knoten, der das ID hat, das von der Codiereinheit 306B zugeführt wurde
(Schritt P8).
-
Falls
das ID des Knotens höheren
Grades, das zusammen mit den obigen Positionsinformationen zugeführt wird,
mit einem ID (Wurzel-ID) des Kontextes P koinzidiert, das von der
Kontexthalteeinheit 302B zugeführt wurde, ist der Codierprozeß vollendet.
-
Falls
sie nicht koinzidieren, gibt die Codiereinheit 306B das
ID jenes Kontextes P an die Codeänderungseinheit 307B aus
(auf derselben Route bei Schritt P6) und erhält ein ID eines Knotens höheren Grades
und dessen Positionsinformationen von der Codebaumhalteeinheit 301B.
-
Der
obige Prozeß wird
wiederholt, bis eine ID-Nummer des Knotens höheren Grades, die von der Codebaumhalteeinheit 301B zugeführt wird,
mit einem ID des Kontextes P koinzidiert.
-
Nach
Vollendung dieses Prozesses empfängt
die Codeänderungseinheit 307B ein
ID des Kontextes P (das heißt,
ein Wurzel-ID des Codebaums) und ein Blatt-ID des codierten Symbols
K von der Codiereinheit 306B (Schritt P9) und tauscht diese Knoten
(bei dem Splay-Prozeß)
aus, um so die Codelänge
zu aktualisieren. Dieser Knotenaustauschprozeß wird auf dieselbe Weise wie
bei der ersten und zweiten Ausführungsform
ausgeführt.
-
In
dem Fall, wenn das Symbol K eingegeben und in dem Kontext P gespeichert
worden ist, wird dann, falls das Symbol K weiter eingegeben wird,
ein Knoten des Symbols K, das gespeichert worden ist, gegen einen
Knoten höheren
Grades ausgetauscht, um die Codelänge auf die Hälfte (1/2)
zu reduzieren.
-
Falls
das Symbol K nicht in dem obigen Kontext P gespeichert ist, empfängt die
Kontexteintrageinheit 310B, wie in 56 gezeigt,
einen Kontext P, um eingetragen zu werden, von der Kontextänderungseinheit 305B (Schritt 10).
Einhergehend damit empfängt
die Kontexteintrageinheit 310B das Symbol K (Schritt P11)
und gibt ein ID des eingetragenen Symbols an die Kontexthalteeinheit 302B aus
(Schritt P12). Die Kontexthalteeinheit 302B trägt das Symbol K
unter dem Kontext P neu ein.
-
Andererseits
empfängt
die Codeeintrageinheit 322B einen Codebaum, um einen Code
darin einzutragen, von der Codebaumhalteeinheit 301B (Schritt
P13). Die Codeeintrageinheit 322B empfängt auch das Symbol K, um eingetragen
zu werden, und ein ID des Symbols, um eingetragen zu werden, von der
Kontextbaumhalteeinheit 302B (Schritte P14 und P15), trägt das Symbol
K in den Codebaum neu ein und speichert es wieder in der Codebaumhalteeinheit 301B (Schritt
P16).
-
Wie
oben angegeben, wird das Symbol, das nicht in den Kontext P eingetragen
worden ist, eingetragen (codiert).
-
Die
Operation der Codeeintrageinheit 322B, um den Escape-Code
zu codieren und ein Blatt des Escape-Codes eines Codebaums zu verzweigen,
der in der Codebaumhalteeinheit 301B gehalten wird, um das
Symbol K neu einzutragen (bei den Schritten P13 bis P16), wird unter
Bezugnahme auf 53 als nächstes eingehender beschrieben.
-
Zunächst empfängt die
Codebaumverwaltungseinheit 67, die in der Codebaumhalteeinheit 301B vorgesehen
ist, ein Kontext-ID und sendet eine ESC-Adresse des Kontextes an
die ESC-ID-Halteeinheit.
-
Die
ESC-ID-Halteeinheit 66 empfängt die ESC-Adresse und gibt
ein ID des ESC und ein Symbol (einen ESC in diesem Fall), das an
diesem ID gespeichert ist, aus. Die Codeeintrageinheit 322B bewirkt,
daß die
Verriegelung 62 das ESC-ID und den ESC verriegelt.
-
Die
Erzeugungseinheit von neuen IDs 61 sendet zwei ID-Nummern (ID-1 und
ID-2) als Antwort auf ein Aktualisierungssignal. Ein ID-1 wird zusammen
mit dem ESC, der als neues ESC-ID in der ESC-ID-Halteeinheit 66 verriegelt
wurde, in der Codebaumhalteeinheit 301B gespeichert.
-
In
dem Codebaum sind IDs und Elterninformationen gespeichert, die Positionsinformationen der
IDs darstellen. Diese Elterninformationen sind aus drei Arten von
Informationen gebildet, das heißt, aus
einem eigenen ID eines Knotens höheren
Grades, einem Knoten-ID, das auf der unteren rechten Seite von seinem
eigenen liegt, und einem Knoten-ID, das auf der unteren linken Seite
von seinem eigenen liegt.
-
Die
Elterninformationsaktualisierungseinheit 63 aktualisiert
die Elterninformationen als Antwort auf die drei IDs (das heißt, das
ESC-ID, das ID-1 und das ID-2 vor der Änderung). Genauer gesagt, es
werden Informationen eingetragen, das heißt, das ESC-ID wird als ID
höheren
Grades des ID-1 und ID-2 eingetragen, das ID-1 wird auf der unteren
rechten Seite des ESC-ID positioniert, und das ID-2 wird auf der unteren
linken Seite des ESC-ID positioniert.
-
Die
Elterninformationen werden zusammen mit jedem ID in der Knoten-ID-Halteeinheit 65 der
Codebaumhalteeinheit 301B gespeichert.
-
Andererseits
werden ein eingetragenes Symbol und ein neues ID (ID-2) in der Blatt-ID-Halteeinheit 64 der
Codebaumhalteeinheit 301B eingetragen.
-
Durch
den obigen Prozeß wird
das neue ESC-ID (ID-1) für
den ESC eingetragen, wird das alte ESC-ID als Knoten-ID zusammen
mit den Elterninformationen in der Knoten-ID-Halteeinheit gehalten, werden
das neue ID (ID-2) und das Symbol K als neues Blatt in der Blatt-ID-Halteeinheit
gehalten und wird das Symbol K durch Verzweigen eines Blattes an
dem Codebaum eingetragen, der in der Codebaumhalteeinheit 301B gehalten
wird und in dem der Escape-Code gespeichert ist. Damit ist ein Prozeß zum Neueintragen
des Symbols K vollendet.
-
Die
Operation, die unter Bezugnahme auf 53 bis 56 beschrieben
worden ist, wird als Flußdiagramm
in 58 zusammengefaßt.
-
Zuerst
wird "0" für einen
Kontext P0 eingegeben, und der Kontext P0 wird initialisiert (Schritt Q1). Der Kontext
P0 wird als Variable für einen Kontext P eingegeben
(Schritt Q2). Übrigens
ist der Kontext Po ein Zeichen (Symbol), das unmittelbar zuvor eingegeben
und codiert worden ist. Falls zum Beispiel ein Codieren gemäß dieser
Ausführungsform
ein Modell unter Verwendung eines Kontextes n-ten Grades ist, werden
(n – 1)
Zeichen, die bis unmittelbar zuvor eingegeben und codiert worden
sind, in dem Kontext Po gespeichert.
-
Wenn
das Symbol K eingegeben wird, wird eine Suche danach ausgeführt, ob
das Symbol K in dem Kontextbaum des Kontextes P gespeichert ist (Schritt
Q3).
-
Falls
das Symbol K nicht in dem Kontextbaum des Kontextes P gespeichert
ist, wird ein Code eines ESC (ein Escape-Code) ausgegeben (NEIN-Route bei Schritt
Q3 zu Schritt Q4), und ein Blatt, in dem der ESC eines Codebaums
entsprechend dem Kontext P vorhanden ist, wird bei der Splay-Operation
verarbeitet (Schritt Q5).
-
Dann
wird ein Blatt des obigen ESC verzweigt (Schritt Q6). Der ESC und
das Symbol K werden in jeweilige neue Blätter eingetragen, die durch das
Verzweigen erhalten wurden (Schritt Q7). Das Symbol K wird auch
in den Kontextbaum des Kontextes P eingetragen.
-
Nachdem
das Symbol K wie oben eingetragen worden ist, wird ferner das älteste Zeichen
in dem Kontext P ausgesondert. Als nächstes wird ein Kontext P,
der den nächst
niedrigeren Grad hat, als Kontext P neu zugeordnet, um den Kontext
P zu ändern
(Schritt Q8).
-
Durch
Rückkehr
zu Schritt Q3 wird der Prozeß zum
sukzessiven Ändern
des Kontextes P fortgesetzt, bis festge stellt wird, daß das Symbol
K in dem Kontext P gespeichert ist.
-
Falls
das Symbol K in dem Kontextbaum des Kontextes P gespeichert ist,
wird ein Code des Symbols K ausgegeben (JA-Route bei Schritt Q3 zu Schritt Q9),
und ein Blatt eines Codebaums, in dem das Symbol K entsprechend
diesem Kontext P gespeichert ist, wird bei der Splay-Operation verarbeitet (Schritt
Q10).
-
Nach
dem Codieren des Symbols K wird das Symbol K zusätzlich in den Kontext P0 eingetragen, um den Kontext P0 zu
aktualisieren (Schritt Q11). (Zum Beispiel wird das Symbol K zusätzlich zu
dem Kontext P0 hinzugefügt, und das älteste Zeichen
in dem Kontext P0 wird ausgesondert.)
-
Dann
wird geprüft,
ob das Codieren aller Zeichen (Symbole) beendet ist oder nicht (Schritt
Q12). Falls es nicht beendet ist (NEIN-Route bei Schritt Q12), kehrt
der Prozeß zu
Schritt Q2 zurück,
und der Prozeß wird
wiederholt, bis das Codieren aller Zeichen beendet ist.
-
Bei
dem obigen Prozeß,
der in 58 gezeigt ist, wird ein Blatt
eines ESC bei der Splay-Operation verarbeitet, nachdem der ESC und
das Symbol K eingetragen worden sind. Die Ordnung von diesem Prozeß kann umgekehrt
ausgeführt
werden. In diesem Fall sind die Verarbeitungsschritte so wie in 59 gezeigt.
-
Die
Prozesse bei den Schritten R1 bis R3 und bei den Schritten R9 bis
R12 sind jenen bei den Schritten Q1 bis Q3 und bei den Schritten
Q9 bis Q12 in 58 ähnlich, wie in 59 gezeigt.
-
Falls
das Symbol K bei Schritt R3 nicht in dem Kontext P gespeichert ist,
wird ein Code des ESC ausgegeben (Schritt R4). Dann wird ein Blatt des
ESC verzweigt (Schritt R5), und der ESC und das Symbol K werden
in neue Blätter
eingetragen (Schritt R6).
-
Nachdem
der ESC und das Symbol K eingetragen worden sind, wie oben angegeben,
wird ein Blatt des ESC bei der Splay-Operation verarbeitet (Schritt
R7).
-
Genauso
wie bei Schritt Q8 in 58 wird der Kontext P geändert (Schritt
R12), und der Prozeß wird
wiederholt, bis das Symbol K bei Schritt R3 detektiert wird.
-
In
dem Fall, wenn Zeichen (Symbole) A bis E in dem Codebaum bereits
codiert und eingetragen worden sind, wie in 60(a) gezeigt,
wird dann, falls das Symbol K als Zeichen F bei den obigen Schritten
R1 bis R12 (oder bei den Schritten Q1 bis Q12 in 58) verarbeitet wird, ein Blatt des ESC an dem
Blatt mit der Nummer 6 verzweigt, und der ESC und das Zeichen F
werden in Blätter
mit den Nummern 11 und 12 eingetragen, die neu erzeugt werden.
-
In
dem Fall, wenn der Kontext, der bei dem obigen Prozeß verwendet
wird, zum Beispiel ein Kontext des Grades 3 ist, wird dann, wenn
das Symbol K mit dem Grad 0 (in einem Anfangszustand) codiert wird,
das Symbol K in jeden der Kontexte des Grades 1, des Grades 2 und
des Grades 3 eingetragen (im folgenden wird die Art des Eintragens
in allen Graden als Volleintragstyp bezeichnet).
-
Die
Schritte N1 bis N12 in 58 und
die Schritte Q1 bis Q12 in 59 zeigen
einen Prozeß, um
das Symbol K in die Kontexte aller Grade immer dann einzutragen,
wenn der ESC codiert wird, wie oben angegeben. Es ist jedoch möglich, das
Symbol K nur in einem Kontext eines gewissen Grades einzutragen,
der unmittelbar vor dem Codieren (Eintragen) des Symbols K codiert
worden ist. In diesem Fall ist ein Flußdiagramm dieses Prozesses
so wie in 61 gezeigt.
-
Genauer
gesagt, bei dem in 61 gezeigten Prozeß wird ein
Kontext P0 initialisiert und auf 0 gesetzt
(Schritt T1). Der Kontext P0 wird für einen Kontext
(eine Variable) P eingegeben, und 0 wird für einen Kontext (eine Variable)
X eingegeben (Schritt T2).
-
Dann
wird eine Suche ausgeführt,
ob ein Symbol K in dem Kontext P gespeichert ist oder nicht (Schritt
T3). Falls das Symbol K nicht in dem Kontext P gespeichert ist,
wird ein Prozeß ausgeführt, der
jenem bei den obengenannten Schritten Q4 und Q5 (siehe 58) ähnlich
ist (NEIN-Route bei Schritt T3 zu Schritt T4 und Schritt T5).
-
Danach
wird der Kontext P für
den Kontext X eingegeben (Schritt T6). Der Kontext P wird dann geändert (Schritt
T7). Der Prozeß wird
wiederholt, bis herausgefunden wird, daß das Symbol K in dem Kontext
P gespeichert ist.
-
Falls
das Symbol K in dem Kontext P bei dem obigen Schritt T3 gespeichert
ist, wird ein Prozeß ausgeführt, der
jenem bei den Schritten Q9 bis Q11 (siehe 58)
oder bei den Schritten R9 bis R11 (siehe 59) ähnlich ist
(Schritte T8 bis T10).
-
Danach
wird ein Blatt eines ESC des Kontextes X verzweigt (Schritt T11).
Der ESC und das Symbol K werden in zwei neue Blätter eingetragen, die durch
das Verzweigen erhalten werden (Schritt T12).
-
Ferner
wird geprüft,
ob das Codieren aller Zeichen (Symbole) beendet ist oder nicht (Schritt T13).
Falls es nicht beendet ist, wird der Prozeß nach Schritt T2 wiederholt
(NEIN-Route bei Schritt T13). Falls es beendet ist, ist der Codierprozeß vollendet (JA-Route
bei Schritt T13).
-
Durch
den obigen Prozeß wird
das Symbol K nicht in die Kontexte aller Grade eingetragen, sondern
nur in den Kontext (Kontext X) eines gewissen Grades unmittelbar
vor dem Codieren des Symbols (im folgenden wird eine Art des Eintragens
eines Symbols K nur in einen Kontext eines Grades unmittelbar vor
dem Codieren des Symbols als sequentieller Eintragstyp bezeichnet).
-
In
der Datenkomprimierungsvorrichtung gemäß der dritten Ausführungsform
dieser Erfindung kann, falls das Symbol K in dem Kontext P nicht
gespeichert ist, der Escape-Code (ESC) zu der Zeit des Verzweigens
und Eintragens eine Codelänge
von [(eine Codelänge
eines Blattes vor dem Verzweigen) + 1] Bits haben, und der neu eingetragene
Code und der Escape-Code
können
eine Codelänge
von lediglich 2 Bits haben. Im Falle einer Datenausgabe, bei der
eine relativ große
Anzahl von Escape-Code verarbeitet wird, oder in einem Anfangsstadium,
in dem der Wörterbucheintrag
(Eintrag von Symbolen in einen Codebaum) nicht ausreicht, kann diese
Erfindung eine hohe Codierrate vorsehen.
-
Der
Splay-Prozeß,
der vor einem Neueintrag eines Symbols ausgeführt wird, wie oben angegeben,
läßt eine
Codelänge
eines Codes oder eines Escape-Codes von lediglich 2 Bits zu, oder
der Splay-Prozeß,
der nach einem Neueintrag eines Symbols ausgeführt wird, läßt eine Codelänge eines Escape-Codes
von lediglich 1 Bit zu. Deshalb ist es möglich, eine Codiereffektivität außerordentlich
zu verbessern.
-
Im
Falle des obenerwähnten
sequentiellen Eintragstyps wird das Symbol immer nacheinander eingetragen.
Falls dasselbe Symbol zwei- oder dreimal auftritt, wird das Symbol
zweitens oder drittens so eingetragen, daß nur ein Symbol mit Wiederholbarkeit
in dem höheren
Grad des Codebaums eingetragen wird. Demzufolge ist es möglich, eine
Verringerung der Codiereffektivität zu verhindern, die durch die
Existenz eines Symbols bewirkt wird, das einmal eingetragen worden
ist, aber nicht häufig
verwendet wird, wodurch die Codiereffektivität außerordentlich verbessert wird,
nachdem die ausreichende Anzahl von Symbolen in dem Wörterbuch
eingetragen worden ist.
-
Der
sequentielle Eintragstyp erfordert eine kleinere Speicherkapazität (Wörterbuchkapazität) als der
Volleintragstyp.
-
(2) Beschreibung des Decodierers
-
62 ist ein Blockdiagramm, das eine interne Struktur
der Datendekomprimierungsvorrichtung 4 zeigt (siehe 32), die dazu dient, das Datendekomprimierungsverfahren
gemäß der dritten Ausführungsform
dieser Erfindung auszuführen.
In 62 bezeichnet Bezugszeichen 401B eine
Codebaumhalteeinheit, bezeichnet 402B eine Kontextbaumhalteeinheit,
bezeichnet 403B eine Kontextänderungseinheit, bezeichnet 404B eine
Decodiereinheit, bezeichnet 407B eine Codeeintrageinheit,
bezeichnet 408B eine Kontexteintrageinheit, bezeichnet 409B eine
Verriegelung und bezeichnet 421B eine Kontexthalteeinheit.
-
Die
Codebaumhalteeinheit (ein Codebaumhaltemittel) 401B hält einen
Codebaum, in dem ein Escape-Code (ESC) (das heißt, Daten, die bedeuten, daß keine
Daten gespeichert sind) im voraus eingetragen wurde. Die Kontextbaumhalteeinheit
(ein Kontextbaumhaltemittel) 402B hält einen Kontextbaum, in dem
eine Kombination aus einem decodierten Symbol (Daten) und einem
Kontext eingetragen ist.
-
Die
Kontextänderungseinheit 403B sucht
einen Kontextbaum, der in der Kontextbaumhalteeinheit 402B gehalten
wird, und ändert
den Kontext, falls ein erreichtes Blatt ein Escape-Code ist. Wenn
ein Symbol K eingegeben wird, das in dem Codierer codiert worden
ist, decodiert die Decodiereinheit 404B einen Code des
Symbols K durch Scannen eines Weges von einer Wurzel (einem oberen
Ende) eines Codebaums, der in der Codebaumhalteeinheit 401B gehalten
wird, zu einem Blatt (einem Datenspeicherpunkt) gemäß dem Code
des Symbols K.
-
Die
Codeänderungseinheit 406B tauscht Blätter des
decodierten Symbols K und des Escape-Codes gegen andere Blätter oder
einen Knoten aus, der ein Gabelungspunkt ist.
-
Die
Codeeintrageinheit (ein Codeeintragmittel) 407B, die als
Codebaumbestimmungsmittel fungiert, bestimmt einen Codebaum, der
in der Codebaumhalteeinheit 401B gehalten wird, in der
ein Code des Symbols K gespeichert ist, von einem Symbol, das bis
unmittelbar vor dem Decodieren des Symbols K decodiert worden ist.
Wenn ein Escape-Code codiert ist, verzweigt die Codeeintrageinheit 407B ein
Blatt des Escape-Codes, der in jenem Codebaum gespeichert ist, um
ein neues Blatt zu erzeugen, und trägt das decodierte Symbol K
in dieses Blatt neu ein.
-
Zu
diesem Zweck haben die Codeeintrageinheit 407B und die
obenerwähnte
Codebaumhalteeinheit 401 dieselben internen Strukturen
(siehe 53) wie die Codeeintrageinheit 322B und
die Codebaumhalteeinheit 301B in dem Komprimierer (siehe 52).
-
Die
Kontexteintrageinheit 408B trägt das Symbol K, das durch
die Codeeintrageinheit 407 eingetragen worden ist, in einen
Kontextbaum ein, der in der Kontextbaumhalteeinheit 402B gehalten
wird. Die Verriegelung 409B hält temporär das Symbol K, das in der
Codiereinheit 404B codiert worden ist. Die Kontexthalteeinheit 421B hält das codierte
Symbol K.
-
Die
obenerwähnte
Codebaumhalteeinheit 401B kann einen Codebaum halten, in
dem ein Escape-Code zuvor gespeichert worden ist. Die Kontextbaumhalteeinheit 402B kann
einen Kontextbaum halten, in dem eine Kombination aus dem decodierten Symbol
K und einem Kontext P gespeichert ist.
-
Die
Kontextänderungseinheit 403B kann
einen Kontext ändern,
falls ein erreichtes Blatt ein Escape-Code ist. Die Decodiereinheit 404B kann
einen Code des Symbols K durch Scannen eines Weges von einer Wurzel
zu einem Blatt eines Codebaums gemäß einem Code des codierten
Symbols K decodieren.
-
Die
Codeänderungseinheit 406,
die auch als Codebaumbestimmungsmittel dient, kann einen Codebaum,
in dem ein Code des Symbols K gehalten wird, von einem Symbol bestimmen,
das bis unmittelbar zuvor decodiert worden ist, und Blätter des
decodierten Symbols K und eines Escape-Codes gegen andere Blätter oder
einen internen Knoten austauschen.
-
Wenn
die Codeeintrageinheit 407B einen Escape-Code decodiert,
wird ein Blatt des Escape-Codes verzweigt, um ein neues Blatt zu
erzeugen, und das decodierte Symbol K wird in dieses neue Blatt
neu eingetragen.
-
Die
Kontexteintrageinheit 408B kann das Symbol K, das durch
die Codeeintrageinheit 407B eingetragen worden ist, in
einen Kontextbaum eintragen, der in der Kontextbaumhalteeinheit 402B gehalten
wird. Die Verriegelung 409B kann das Symbol K temporär halten,
das durch die Decodiereinheit 204B decodiert worden ist.
Die Kontexthalteeinheit 421B kann das Symbol K temporär halten,
das durch die Decodiereinheit 204B decodiert worden ist.
-
Die
obige Operation wird als nächstes
unter Bezugnahme auf die Schritte U1 bis U14 in 63 und 64,
die eine Operation des Dekomprimierers zeigen, eingehender beschrieben.
-
Die
Kontexthalteeinheit 421B hält, wie in 63 gezeigt, Symbole (einen Kontext), die bis zu jener
Zeit codiert worden sind, und gibt sie an die Kontextänderungseinheit 403B aus
(Schritt U1). Die Kontextänderungseinheit 403B gibt
den Kontext, der von der Kontexthalteeinheit 421B zugeführt wird,
so wie er ist beim ersten Mal an die Kontextbaumhalteeinheit 402B aus
(Schritt U2).
-
Die
Kontextbaumhalteeinheit 402B gibt ein ID des Kontextes,
das heißt,
ein Wurzel-ID, das von der Kontextände rungseinheit 403B zugeführt wird, an
die Decodiereinheit 404B aus (Schritt U3). Zu dieser Zeit
verlangt die Decodiereinheit 404B ein ID eines Knotens,
der auf der unteren rechten Seite liegt, falls ein Code (1 Bit)
für das
zugeführte
Wurzel-ID zum Beispiel "1" ist, oder ein ID
eines Knotens, der auf der unteren linken Seite liegt, falls ein
Code "0" ist, von der Codebaumhalteeinheit 401B (Schritt
U4).
-
Die
Codebaumhalteeinheit 401B sendet ein Knoten-ID eines verlangten
Knotens (oder eines Blattes) als Antwort zu der Decodiereinheit 404B (Schritt
U5).
-
Die
Codiereinheit 404B und die Codebaumhalteeinheit 401B wiederholen
den obigen Prozeß, bis
ein Blatt-ID oder ein Blatt erhalten wird, das ein Ende des Codebaums
darstellt.
-
Genauer
gesagt, die Decodiereinheit 404B verfolgt einen Codebaum,
der in der Codebaumhalteeinheit 401B gehalten wird, gemäß einem
Code, der in dem Codierer codiert worden ist, bis ein Blatt erreicht
wird, in dem das zu decodierende Symbol K gespeichert ist.
-
Wenn
ein Blatt gefunden wird, das ein Objekt ist, decodiert die Decodiereinheit 404B dieses
Blatt. Die Codeänderungseinheit 406B verarbeitet
dieses decodierte Blatt bei der Splay-Operation genauso wie in dem
Codierer, um die Codelänge
zu aktualisieren.
-
Falls
das Symbol, das bei diesem Prozeß decodiert worden ist, ein
ESC ist, sendet die Decodiereinheit 404B dieses Symbol
(ESC) zu der Verriegelung (Schritt U6). Die Verriegelung hält dieses
Symbol temporär
und sendet es zu der Kontextänderungseinheit 403B (Schritt
U7). Die Kontextänderungseinheit 403B führt einen
Kontextänderungsprozeß aus, der
jenem in dem Codierer ähnlich
ist, um es wieder zu decodieren.
-
Falls
das bei dem obigen Prozeß durch
die Decodiereinheit 404B decodierte Symbol ein Symbol ohne
einen ESC ist, das heißt,
das Symbol K, sendet die Decodiereinheit 404B dieses decodierte
Symbol K über
die Verriegelung 409B und die Kontexthalteeinheit 421B zu
der Kontexteintrageinheit 408B (Schritte U8 bis U11), wie
in 64 gezeigt. Die Kontexteintrageinheit 408B trägt dieses
Symbol K in die Kontextbaumhalteeinheit 402B neu ein.
-
Die
Codeeintrageinheit 407B empfängt ein Wurzel-ID eines Kontextes
P, in dem das Symbol K gespeichert ist und der von der Kontextbaumhalteeinheit 407B zugeführt wurde
(Schritt U12), und sendet dieses Wurzel-ID zu der Codebaumhalteeinheit 401B (Schritt
U13).
-
Die
Codehalteeinheit 401B sendet ein Wurzel-ID eines Codebaums,
der ein Wurzel-ID hat, das mit dem Wurzel-ID des zugeführten Kontextes
P identisch ist, zu der Codeeintrageinheit 407B zurück (Schritt
U14). Die Codeeintrageinheit 407B trägt einen neuen Code des Symbols
K in den Codebaum ein, der dieses Wurzel-ID hat (dieselbe Route
wie bei Schritt U13).
-
Der
obige Prozeß in
dem Dekomprimierer, bei dem die Codeeintrageinheit 407B das
Symbol K in der Codebaumhalteeinheit 401B einträgt, ist
dem Prozeß in
dem Codierer ähnlich,
bei dem die Codeeintrageinheit 322B das Symbol K in der
Codebaumhalteeinheit 301B einträgt.
-
Falls
der Eintragsprozeß in
dem Codierer vom Volleintragstyp ist, der in Verbindung mit dem Codierer
beschrieben worden ist, wie in 58 und 59 gezeigt,
sollte der Prozeß in
dem Dekomprimierer vom selben Volleintragstyp sein, wobei der ESC
in alle decodierten Kontexte eingetragen wird. Falls der Prozeß vom sequentiellen
Eintragstyp ist, der in 61 gezeigt
ist, sollte der Prozeß in
dem Dekomprimierer vom selben sequentiellen Eintragstyp ein, wobei
das Symbol K in einem Kontext eines ESC eingetragen wird, der zuletzt
decodiert worden ist.
-
Genauso
wie bei der Beschreibung des Codierers kann der obige Prozeß in dem
Decodierer in einem Flußdiagramm
in 65 dargestellt werden.
-
Ein
Zahlenwert des Maximalgrades wird für einen Kontext (eine Variable)
P0 eingegeben, um ihn zu initialisieren
(Schritt V1). Der Kontext P0 wird dann für einen
Kontext P eingegeben (Schritt V2).
-
Falls
nämlich
versucht wird, einen Code zu codieren, wird zunächst ein Prozeß mit einem
Kontext mit dem Maximalgrad ausgeführt.
-
Ein
Code, der in einem Blatt eines Codebaums gespeichert ist, der dem
Kontext P mit dem Maximalgrad entspricht, wird decodiert (Schritt
V3).
-
Dann
wird geprüft,
ob dieser decodierte Code ein Symbol ist oder nicht (Schritt V4).
Falls der decodierte Code kein Symbol sondern ein ESC ist, wird
ein Blatt des decodierten ESC bei der Splay-Operation genauso wie
in dem Codierer verarbeitet (NEIN-Route bei Schritt V4 zu Schritt
V5). Das Symbol höchsten
Grades (das älteste
Symbol) in dem Kontext P wird ausgesondert, und der Grad des Kontextes
wird in den nächst
niedrigeren Grad verändert,
um aktualisiert zu werden (Schritt V6). Die Prozedur kehrt zu Schritt
V2 zurück.
Mit anderen Worten, die Gradzahl des Kontextes P wird ausgehend
von dem höchsten
Grad nacheinander dekrementiert, bis ein Symbol ohne einen ESC (das
heißt,
das Symbol K) decodiert wird, um eine Suche nach dem Kontext P vorzunehmen,
in dem das Symbol K gespeichert ist.
-
Falls
das decodierte Signal ein Symbol ist, bedeutet dies, daß das Symbol
K decodiert ist, und so wird dieses Symbol ausgegeben (JA-Route
bei Schritt V4 zu Schritt V7). Ein Blatt dieses Symbols K wird bei
der Splay-Operation auf dieselbe Weise wie in dem Codierer verarbeitet,
um eine Codelänge
des Symbols K zu verkürzen
(zu aktualisieren) (Schritt V8).
-
Ferner
wird das Symbol K zusätzlich
in dem Kontext P0 eingetragen (Schritt V9).
Der ESC wird ausgesondert. Übrigens
wird die Änderung
dieses Kontextes P0 genauso wie in dem Codierer
ausgeführt.
-
Das
decodierte Symbol K wird durch Verzweigen eines Blattes des ESC
auf dieselbe Eintragsweise wie bei dem Codierer, wie zum Beispiel auf
die Volleintragsweise, neu eingetragen, falls bei dem Codierer die
Volleintragsweise zum Einsatz kommt (Schritt V10).
-
Dann
wird geprüft,
ob das Decodieren aller eingegebenen Codes beendet ist oder nicht
(Schritt V11). Falls es nicht beendet ist (NEIN-Route bei Schritt
V11), kehrt die Prozedur zu Schritt V2 zurück, und der Prozeß wird wiederholt,
bis das Decodieren aller Codes vollendet ist.
-
Wie
oben angegeben, wird in der Datendekomprimierungsvorrichtung gemäß der dritten
Ausführungsform
dieser Erfindung ein Blatt, das an dem Codebaum bereits existiert,
in zwei geteilt, damit eine Codelänge dieses Blattes bei dem
Prozeß zum
Neueintragen eines Symbols genauso wie in dem Dekomprimierer [(eine
Codelänge
des zuvor geteilten Blattes) + 1] Bits beträgt, wodurch eine Codelänge des
neu eingetragenen Symbols K oder eines Escape-Codes lediglich 2
Bits ausmachen kann. Somit kann eine Effektivität bei der Datendekomprimierung außerordentlich
verbessert werden, falls Daten verarbeitet werden, bei denen eine
relativ große
Anzahl von Escape-Codes codiert wird, oder in einem Stadium, in
dem der Wörterbucheintrag
nicht ausreicht.
-
Wie
oben angegeben, gestattet der Splay-Prozeß vor dem Neueintrag eines
Symbols eine Codelänge
des decodierten Symbols oder eines Escape-Codes von lediglich 2
Bits. Der Splay-Prozeß nach
dem Neueintrag gestattet eine Codelänge eines Escape-Codes von
lediglich 1 Bit. Demzufolge ist es möglich, eine Effektivität bei der
Datendekomprimierung außerordentlich
zu verbessern.
-
Wie
oben angegeben, führt
der Dekomprimierer denselben Eintragsprozeß wie der Dekomprimierer aus,
so daß Codes
akkurat decodiert werden können.
-
(c-1) Beschreibung einer
ersten Abwandlung der dritten Ausführungsform der Erfindung
-
Als
nächstes
folgt die Beschreibung einer ersten Abwandlung gemäß der dritten
Ausführungsform
dieser Erfindung. Eine Datenkomprimierungsvorrichtung und eine Datendekomprimierungsvorrichtung
gemäß der ersten
Abwandlung dieser Ausführungsform
dienen auch zum Ausführen
des Datenkomprimierungsverfahrens und des Datendekomprimierungsverfahrens,
das in 32 gezeigt ist, genauso wie
in der oben angegebenen dritten Ausführungsform.
-
Genauso
wie in der dritten Ausführungsform wird
eine Datenkomprimierungsvorrichtung 3 als Komprimierer
bezeichnet und wird eine Datendekomprimierungsvorrichtung 4 als
Decodierer bezeichnet.
-
(1) Beschreibung des Codierers
-
Der
Codierer hat dieselbe Struktur wie jener, der in der dritten Ausführungsform
beschrieben wurde, die in 52 gezeigt
ist.
-
Um
ein Symbol in einem Blatt einzutragen, das die längste Codelänge an einem Codebaum hat, der
in dem Codebaumhaltemittel 301B gehalten wird, enthält die Codeeintrageinheit 322B gemäß dieser Ausführungsform,
die in 52 gezeigt ist, eine Erzeugungseinheit
von neuen Knoten-IDs 61, eine Verriegelung 62,
eine Elterninformationsaktualisierungsein heit 63 und eine
Detektionseinheit der längsten Codelänge (ein
Gabelungspositionssuchmittel) 69, wie in 66 gezeigt. Die Codebaumhalteeinheit 301B hat
dementsprechend eine Halteeinheit von internen Knoten (Knoten-IDs) 65,
eine Codebaumverwaltungseinheit 67 und eine Halteeinheit
von externen Knoten/ESC-IDs (Blatt-IDs) 68.
-
In
der Codeeintrageinheit 322B erzeugt die Erzeugungseinheit
von neuen Knoten-IDs 61 zwei neue Knoten-IDs (ID-1 und
ID-2) als Antwort auf ein Aktualisierungssignal von der Kontextbaumhalteeinheit 302B.
Die Verriegelung 62 verriegelt ein Blatt-ID, das durch
die Detektionseinheit der längsten
Codelänge 69 detektiert
wurde.
-
Die
Elterninformationsaktualisierungseinheit 63 empfängt Elterninformationen,
die aus drei Arten von Informationen (ESC-ID, ID-1 und ID-2) gebildet sind,
das heißt,
ein ID des Knotens höheren
Grades, der ein Objekt des Prozesses ist, ein ID des Knotens niedrigeren
Grades, der unten rechts vom Objektknoten liegt, und ein ID des
unteren Knotens, der unten links vom Objektknoten liegt, aktualisiert
diese Elterninformationen und sendet sie zu der Codebaumhalteeinheit 301B.
-
Die
Detektionseinheit des längsten
Codes (das Gabelungspositionssuchmittel) 69 erhält ein Knoten-ID
eines Codebaums von der Codebaumhalteeinheit 301B, um ein
ID (ID-0) eines
Blattes mit der längsten
Codelänge
an diesem Codebaum zu detektieren.
-
In
der Codebaumhalteeinheit 301B hält die Halteeinheit von internen
Knoten (Knoten-IDs) 65 Knoten-IDs des Codebaums und hält die Halteeinheit von
externen Knoten/ESC-IDs (Blatt-IDs) 68 Blatt-IDs des Codebaums.
-
Die
Codebaumverwaltungseinheit 67 empfängt ein Kontext-ID von der Kontextbaumhalteeinheit 302B und
sendet dieses Kontext-ID zu der Halteeinheit von internen Knoten
(Knoten- IDs) 65 und der
Halteeinheit von externen Knoten/ESC-IDs (Blatt-IDs) 68.
-
Mit
den obigen Strukturen der Codeeintrageinheit 322B und der
Codebaumhalteeinheit 301B sucht die Codeeintrageinheit 322B ein
Blatt mit der längsten
Codelänge
an dem Codebaum, der in der Codebaumhalteeinheit 301B gehalten
wird, verzweigt das Blatt mit der längsten Codelänge, das durch
die Suche erhalten wird, nach dem Codieren eines Escape-Codes, und trägt ein Symbol
K neu darin ein.
-
Als
nächstes
wird der obige Prozeß unter
Bezugnahme auf die Schritte W1 bis W13 eines in 67 gezeigten Flußdiagramms eingehender beschrieben.
-
Um
einen Kontext zu suchen, der das Symbol K enthält, wird ein Kontext (ein Kontext
P) selektiert, der in der Kontexthalteeinheit 302B gehalten wird
(Schritte W1 und W2). Dann wird geprüft, ob das Symbol K in diesem
Kontext P gespeichert ist oder nicht (Schritt W3). Falls das Symbol
K in dem Kontext P gespeichert ist, wird ein Prozeß ausgeführt, der
jenem bei den obenerwähnten
Schritten Q9 bis Q12 in der dritten Ausführungsform, die in 58 gezeigt sind, ähnlich ist (Schritte W9 bis
W12).
-
Falls
das Symbol K nicht in dem Kontext P eingetragen ist, gibt die Codiereinheit 306B einen Code
eines ESC genauso wie bei den Schritten Q4 und Q5 in 58 aus (Schritt W4). Die Codeänderungseinheit 307B verarbeitet
ein Blatt des ESC an dem Codebaum, der in der Codebaumhalteeinheit 301B gehalten
wird, bei der Splay-Operation (Schritt W5).
-
Danach
empfängt
die Codebaumhalteeinheit 301B ein ID (ein Wurzel-ID) des
Kontextes P von der Kontextbaumhalteeinheit 302B und sendet
das Knoten-ID dieses Kontextes P und Elterninformationen davon zu
der Detektionseinheit des längsten
Codes 69.
-
Die
Detektionseinheit des längsten
Codes 69 detektiert ein ID (ID-0) eines Blattes X(p), das
die längste
Codelänge
hat, von den Elterninformationen (Schritt W6).
-
Dann
sendet die Detektionseinheit des längsten Codes 69 das
ID, das heißt,
das ID-0 des detektierten Blattes X(p), zu der Blatt-ID-Halteeinheit 68.
Die Verriegelung 70 verriegelt dieses ID-0 und ein Symbol,
das in dem ID-0 gespeichert ist.
-
Die
Erzeugungseinheit von neuen Knoten-IDs 71 erzeugt zwei
neue Knoten-IDs (ID-0 und ID-2). Die Elterninformationsaktualisierungseinheit 63 empfängt drei
IDs (ID-0, ID-1 und ID-2), um die Elterninformationen zu aktualisieren.
Die Elterninformationsaktualisierungseinheit 63 trägt diese
Knoten-IDs in die Knoten-ID-Halteeinheit 65 in der Codebaumhalteeinheit 301B ein.
-
Andererseits
werden das Symbol K, das einzutragen ist, nämlich das neue ID (ID-2), und
ein Symbol, das in das ID-0 und das ID-1 eingetragen worden ist,
jeweilig als neue Blätter
in die Blatt-ID-Halteeinheit 68 in der Codebaumhalteeinheit 301B eingetragen
(Schritt W7).
-
Durch
den obigen Prozeß wird
ein Blatt, das die längste
Codelänge
hat, ein interner Knoten, und zwei neue Blätter werden unter diesem Knoten
eingetragen.
-
Dann
wird der Kontext P geändert
(Schritt W8). Der obige Prozeß wird
wiederholt, bis detektiert wird, daß das Symbol K in dem Kontext
P gespeichert ist.
-
In
der Datenkomprimierungsvorrichtung gemäß der ersten Abwandlung der
dritten Ausführungsform
dieser Erfindung wird ein Blatt X(p) mit der längsten Codelänge (das
heißt,
das am weitesten von der Wurzel entfernte Blatt) detektiert, und
dieses Blatt wird verzweigt, um das Symbol K und ein Symbol, das
in dem X(p) eingetragen worden ist, in den Codebaum neu einzutragen.
Dafür kann
die erste Abwandlung der dritten Ausführungsform dieser Erfindung
dahingehend von Vorteil sein, daß zusätzlich zu dem Vorteil, der
durch den Codierer gemäß der dritten
Ausführungsform
geboten wird, eine Verringerung der Codiereffektivität, die dadurch
verursacht wird, daß die
Codelänge
um ein Bit verlängert
wird, da (die längste
Codelänge)
= (Symbol, dessen Auftrittshäufigkeit
die kleinste ist), auf ein Minimum herabgedrückt werden kann. Dies kann
eine weitgehende Verbesserung einer Verarbeitungsrate bei der Datenkomprimierung
und eine weitgehende Reduzierung einer Verarbeitungslast auf der
Datenkomprimierungsvorrichtung ermöglichen.
-
(2) Beschreibung des Decodierers
-
Eine
Datenwiederherstellungsvorrichtung 4 gemäß der ersten
Abwandlung dieser Ausführungsform
hat eine Struktur, die jener von 62 ähnlich ist.
Eine Codeeintrageinheit 407B und eine Codebaumhalteeinheit 401B in
dem Dekomprimierer haben interne Strukturen, die denen der Codeeintrageinheit 322B bzw.
der Codebaumhalteeinheit 301B in dem Codierer ähnlich sind
(siehe 66).
-
Da
die Codeeintrageinheit 407B und die Codebaumhalteeinheit 401B dieselbe
Struktur wie die Codeeintrageinheit 322B bzw. die Codebaumhalteeinheit 301B in
dem Codierer haben, ist ein Prozeß, der in der Codeeintrageinheit 407B ausgeführt wird, um
ein decodiertes Symbol in der Codebaumhalteeinheit 401B neu
einzutragen, derselbe wie jener, der in dem Codierer ausgeführt wird.
-
Es
reicht aus, einen Prozeß zum
Decodieren eines Symbols K, das in dem Codierer codiert worden ist,
genauso wie bei dem obenerwähnten
Prozeß (bei
den Schritten V1 bis V11) auszuführen,
die in 65 gemäß der ersten Ausführungsform
gezeigt sind. Bei Schritt V10, der in 65 gezeigt
ist, wird derselbe Prozeß wie
bei den Schritten W7 und W8 in dem Codierer ausgeführt (siehe 67).
-
Somit
wird in der Datendekomprimierungsvorrichtung gemäß der ersten Abwandlung der
dritten Ausführungsform
dieser Erfindung ein Blatt X(p) mit der längsten Codelänge (das
heißt,
das am weitesten von der Wurzel entfernte Blatt) an einem Codebaum
eines Kontextes P detektiert, wird dieses Blatt X(p) verzweigt und
werden ein Symbol K und ein Symbol, das in X(p) gespeichert worden
ist, in dem Codebaum neu eingetragen, genauso wie in dem Codierer
gemäß der dritten
Ausführungsform. Deshalb
kann die Datenkomprimierungsvorrichtung gemäß der ersten Abwandlung der
dritten Ausführungsform
dieser Erfindung dahingehend von Vorteil sein, daß zusätzlich zu
dem Vorteil, der durch den Codierer gemäß der dritten Ausführungsform
geboten wird, eine Verringerung der Codiereffektivität, die dadurch
verursacht wird, daß die
Codelänge
um ein Bit verlängert
wird, auf Grund von (längste
Codelänge)
= (Symbol, dessen Auftrittshäufigkeit
die kleinste ist), auf ein Minimum herabgedrückt werden kann. Dies kann
eine weitgehende Verbesserung einer Verarbeitungsrate bei der Datenkomprimierung
und eine weitgehende Reduzierung einer Verarbeitungslast auf der
Datenkomprimierungsvorrichtung ermöglichen.
-
Wie
oben angegeben, gestattet derselbe Eintragsprozeß für ein Symbol in dem Codierer
und Decodierer ein akkurates Decodieren des Symbols, das in dem
Codierer codiert worden ist.
-
(c-2) Beschreibung der
zweiten Abwandlung der dritten Ausführungsform der Erfindung
-
Als
nächstes
folgt eine Beschreibung einer zweiten Abwandlung gemäß der dritten
Ausführungsform
dieser Erfindung.
-
(1) Beschreibung des Codierers
-
Ein
Komprimierer dieser Ausführungsform hat
dieselbe Struktur wie jener, der in der dritten Ausführungsform
beschrieben worden ist, die in 52 gezeigt
ist.
-
Eine
Codeeintrageinheit 322B dieser Ausführungsform, die in 52 gezeigt ist, ist versehen mit einer Erzeugungseinheit
von neuen Knoten-IDs 61, einer Verriegelung 62,
einer Elterninformationsaktualisierungseinheit 63 und einer
Halteeinheit von zuletzt eingetragenen IDs 70, um ein Blatt
zu verzweigen, das in einem Codebaum neu eingetragen wurde, der
in einer Codebaumhalteeinheit 301B gehalten wird, um ein
Symbol darin einzutragen. Die Codebaumhalteeinheit 301B enthält eine
Halteeinheit von externen Knoten (Blatt-IDs) 64, eine Halteeinheit
von internen Knoten (Knoten-IDs) 65, eine ESC-ID-Halteeinheit 66 und
die Codebaumverwaltungseinheit 67.
-
In
der obigen Struktur bezeichnen dieselben Bezugszeichen dieselben
und entsprechenden Teile in 53 oder 66, und deren detaillierte Beschreibung wird hier übersprungen.
-
Die
Halteeinheit von zuletzt eingetragenen IDs (ein Gabelungspositionshaltemittel) 70,
die in dieser Ausführungsform
neu vorgesehen ist, hält
ein ID eines Blattes, das zuletzt in einem Codebaum eingetragen
worden ist, der in der Codebaumhalteeinheit 301B gehalten
wird.
-
Da
die Codeeintrageinheit 322B und die Codebaumhalteeinheit 301B die
obigen Strukturen haben, verzweigt die Codeeintrageinheit 322B das
letzte Blatt, in dem ein Symbol zuletzt eingetragen worden ist,
an dem Codebaum, der in der Codebaumhalteeinheit 301B gehalten
wird, und trägt
ein Symbol K in dieses neu erzeugte Blatt ein.
-
Als
nächstes
wird der obige Prozeß unter
Bezugnahme auf die Schritte X1 bis X13 in 69 eingehender
beschrieben.
-
In
dem obigen Prozeß wird
ein ID des zuletzt eingetragenen Blattes, das zuletzt eingetragen
worden ist, in der Halteeinheit von zuletzt eingetragenen IDs 70 gehalten,
und das ID wird verzweigt, um für
einen Neueintrag verwendet zu werden.
-
Genauer
gesagt, um einen Kontext zu suchen, der ein Symbol K enthält, wird
ein Kontext (ein Kontext P) selektiert, der in der Kontexthalteeinheit 302 gehalten
wird (Schritte X1 und X2). Es wird geprüft, ob das Symbol K in diesem
Kontext gespeichert ist oder nicht (Schritt X3). Falls das Symbol
K gespeichert ist, wird derselbe Prozeß wie bei den Schritten W10
bis W13 in 67 ausgeführt, die in der dritten Ausführungsform
beschrieben worden sind (JA-Route
bei Schritt X3 zu den Schritten X10 bis X13).
-
Falls
das Symbol K in dem Kontext P nicht gespeichert ist, gibt die Codiereinheit 306B einen Code
eines ESC genauso wie bei den Schritten X4 und X5 aus, die in 67 gezeigt sind (Schritt X4). Die Codeänderungseinheit 307B verarbeitet
ein Blatt des ESC des Codebaums, der in der Codebaumhalteeinheit 301B gehalten
wird, bei der Splay-Operation
(Schritt X5).
-
Danach
gibt die Codebaumhalteeinheit 301B ein ID (ein Wurzel-ID)
des Kontextes P so wie es ist an die Halteeinheit von zuletzt eingetragenen
IDs 70 aus.
-
Die
Halteeinheit von zuletzt eingetragenen IDs 70 sendet ein
Blatt-ID (ID-0) des zuletzt eingetragenen Blattes X(p) eines Codebaums,
der dem Kontext P entspricht, zu der Blatt-ID-Halteeinheit 64 in der
Codebaumhalteeinheit 301B. Die Verriegelung 62 verriegelt
das ID-0 und ein Symbol, das in dem ID-0 gehalten wird.
-
Die
Erzeugungseinheit von neuen IDs 61 erzeugt zwei neue IDs
(ID-1 und ID-2). Die Elterninformationsaktualisierungseinheit 63 empfängt drei
IDs (ID-0, ID-1 und ID-2), um Elterninformationen zu aktualisieren,
um das Blatt X(p) zu verzweigen (Schritt X6). Diese Informationen
werden in die Knoten-ID-Halteeinheit 65 in der Codebaumhalteeinheit 301B eingetragen.
-
Andererseits
werden das eingetragene Symbol K, das einzutragen ist, und ein Symbol,
das in dem Blatt X(p) gespeichert worden ist, als neue Blätter in
der Blatt-ID-Halteeinheit 64 in der Codebaumhalteeinheit 301B eingetragen
(Schritte X7 und X8). Das ID-2, das ein neues ID ist, wird in der
Halteeinheit von zuletzt eingetragenen IDs 70 gespeichert.
-
Der
Kontext P wird dann geändert
(Schritt X9). Der obige Prozeß wird
wiederholt, bis detektiert wird, daß das Symbol K in dem Kontext
P eingetragen ist.
-
Durch
den obigen Prozeß wird
dann, wenn ein neues Symbol K eingegeben wird, das zuletzt eingetragene
Blatt, das unmittelbar vor der Eingabe des Symbols K eingetragen
worden ist, geteilt, um das Symbol K darin einzutragen.
-
Wie
oben angegeben, wird in der Datenkomprimierungsvorrichtung gemäß der zweiten
Abwandlung der dritten Ausführungsform
dieser Erfindung ein Symbol in einem Codebaum eingetragen, indem ein
Blatt verzweigt wird, in dem ein Symbol unmittelbar zuvor eingetragen
worden ist, um das Symbol darin einzutragen, um (ein Symbol eines
Blattes, das unmittelbar zuvor eingetragen worden ist) an (ein Symbol
mit relativ langer Codelänge)
zu approximieren. Wie bei der ersten Abwandlung der dritten Ausführungsform
erwähnt,
ist es möglich,
den Prozeß zum
Detektieren eines Blattes mit der längsten Codelänge zu überspringen,
wodurch eine Verarbeitungsrate bei der Datenkomprimierung erhöht wird.
-
(2) Beschreibung des Decodierers
-
Der
Dekomprimierer hat, genauso wie der Codierer, dieselbe Struktur
wie der Codierer, der in der dritten Ausführungsform beschrieben worden
ist, die in 62 gezeigt ist. Eine Codeeintrageinheit 407B und
eine Codebaumhalteeinheit 401B in dem Dekomprimierer haben
dieselbe interne Struktur wie die Codeeintrageinheit 322B bzw.
die Codebaumhalteeinheit 301B in dem Dekomprimierer (siehe 68).
-
Da
die Codeeintrageinheit 407B und die Codebaumhalteeinheit 401B dieselben
Strukturen wie die Codeeintrageinheit 322B bzw. die Codebaumhalteeinheit 301B in
dem Codierer haben, ist ein Prozeß, der durch die Codeeintrageinheit 407B ausgeführt wird,
um einen Code eines decodierten Symbols in der Codebaumhalteeinheit 401B neu
einzutragen, genauso wie in dem Codierer, dem Dekomprimierer gemäß der ersten
Abwandlung der dritten Ausführungsform ähnlich.
-
Demzufolge
wird ein Prozeß zum
Decodieren eines Symbols K, das in dem Codierer gemäß dieser
Ausführungsform
codiert worden ist, auf dieselbe Weise wie in 65 gemäß der dritten
Ausführungsform
ausgeführt
(Schritte V1 bis V11). Mit anderen Worten, der ähnliche Prozeß wie bei
den Schritten X6 bis X8 in 69,
der ein Eintragsprozeß in dem
Codierer ist, wird bei Schritt V11 in 65 ausgeführt.
-
Wie
oben angegeben, wird in der Datenkomprimierungsvorrichtung gemäß der zweiten
Abwandlung der dritten Ausführungsform
dieser Erfindung ein Blatt eines Symbols, das unmittelbar zuvor
eingetragen worden ist, verzweigt, um ein Symbol in dieses Blatt
an einem Codebaum auf dieselbe Weise wie in dem Codierer neu einzutragen,
um (ein Symbol eines Blattes, das unmittelbar zuvor eingetragen wurde)
an (ein Symbol mit einer relativ langen Codelänge) zu approximieren. Deshalb
ist es möglich,
einen Prozeß zum
Detektieren eines Blattes mit der längsten Codelänge zu überspringen,
wie in der ersten Abwandlung der dritten Ausführungsform erwähnt, um
dadurch eine Verarbeitungsrate bei der Datendecodierung außerordentlich
zu erhöhen.
-
Wenn
ein Symbol in einen Codebaum in dem Dekomprimierer eingetragen wird,
wird derselbe Prozeß wie
in dem Codierer ausgeführt.
Dies gestattet ein akkurates Decodieren eines Symbols, das in dem Codierer
codiert worden ist.
-
In
der dritten Ausführungsform
und deren Abwandlungen wird das Verfahren, das in dem Codierer ausgeführt wird,
in Abhängigkeit
von zu codierenden Daten oder einem System verändert. Somit ist es möglich, eine
ID-Nummer, die angibt, welches System eingesetzt wird, zu dem Header-Abschnitt vor
der Übertragung
der codierten Daten hinzuzufügen
und ein Eintragsverfahren, das in dem Codierer verwendet worden
ist, gemäß der ID-Nummer
zu bestimmen, um es in dem Dekomprimierer zu selektieren.