DE19653133A1 - System und Verfahren zur pre-entropischen Codierung - Google Patents

System und Verfahren zur pre-entropischen Codierung

Info

Publication number
DE19653133A1
DE19653133A1 DE1996153133 DE19653133A DE19653133A1 DE 19653133 A1 DE19653133 A1 DE 19653133A1 DE 1996153133 DE1996153133 DE 1996153133 DE 19653133 A DE19653133 A DE 19653133A DE 19653133 A1 DE19653133 A1 DE 19653133A1
Authority
DE
Germany
Prior art keywords
characters
data source
coding
character
file
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE1996153133
Other languages
English (en)
Other versions
DE19653133C2 (de
Inventor
Daniel Blaschkowski
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to DE1996153133 priority Critical patent/DE19653133C2/de
Priority to PCT/EP1997/007209 priority patent/WO1998027657A1/de
Publication of DE19653133A1 publication Critical patent/DE19653133A1/de
Application granted granted Critical
Publication of DE19653133C2 publication Critical patent/DE19653133C2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/42Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

Diese Erfindung bezieht sich allgemein auf Systeme und Verfahren zur verlustfreien Datenkomprimierung und insbesondere auf eine Kombinationsmethode für Zeichen einer Datenquelle sowie den Aufbau der elektronischen Schaltungen zur Codierung der Datenquelle.
Bei einer Speicherung oder Übertragung von Daten ist im allgemeinen die Speicher­ kapazität des vorgegebenen Speichermediums oder die Übertragungskapazität des Kanals der begrenzende Faktor. Bei Verfahren, die Daten speichern oder übertragen, ist es oft wichtig, die Daten deutlich zu komprimieren, so daß mehr Daten übertragen oder gespeichert werden können. Je nach Anwendungsfall ist es wichtig, daß die Kom­ primierung vollständig reversibel ist, so daß die Daten verlustfrei und vollständig wieder zurückgewonnen werden können. Ein Verfahren zur verlustfreien Datenkompression übersetzt also eine Eingabe-Zeichenkette reversibel in eine Ausgabe-Zeichenkette, die im Mittel kürzer ist. Die Angabe "im Mittel" bezieht sich auf die Tatsache, daß jeweils die gesamten zu komprimierenden Dateien bzw. Datenströme berücksichtigt werden sollen, wobei es durchaus möglich ist, daß einzelne Zeichenketten (strings) nicht verkürzt werden, da z. B. ungünstige Häufigkeitsverteilungen der Zeichen für eine Entropiekodierung vorliegen.
Stand der Technik
Die Verfahren der verlustfreien Datenkomprimierung zeichnen sich dadurch aus, daß ein Datum durch ein anderes Datum von kleinerem Bezeichnungsaufwand, aber mit gleichem Informationsgehalt, codiert wird, vgl. Völz, H.: Grundlagen der Information, Akademieverlag Berlin 1991, S. 19.
Die inverse Funktion, also das Wiederherstellen der Originaldaten, wird Dekomprimie­ rung genannt. Bei verlustfreier Datenkomprimierung wird die Ausgangsdatei wieder her­ gestellt. Im Gegensatz dazu werden bei verlustbehafteten Verfahren lediglich wichtige Inhalte der Originaldatei codiert; eine exakte Rekonstruktion der Ausgangsdaten ist nicht möglich.
In der Literatur werden die Verfahren der verlustfreien Datenkomprimierung meist nach zwei Grundprinzipien gegliedert, vgl. z. B. Held, G. et al.: Data and Image Com­ pression, 4th edition, Verlag John Wiley & Sons, Chichester 1996, oder vgl. auch Völz, H.: Komprimierung von Bilddateien, Nachrichtentechnik, Elektronik, Berlin, Band 43 (1993), Hefte 2, 3 und 4.
  • 1) Statistische Verfahren nutzen die ungleichmäßige Häufigkeitsverteilung von Zeichen einer Datenquelle und ersetzen häufige Zeichen durch kurze Codezeichen, seltene Zeichen durch lange Codezeichen. Statistische Verfahren bezeichnet man auch als Entropie-Codierungen. Zu diesen Verfahren zählen die Shannon-Fano-Codierung, die Huffman-Codierung sowie die arithmetische Codierung und deren Variationen.
  • 2) Bei referenzierenden Verfahren ersetzt ein einzelnes Codezeichen mehrere aufein­ anderfolgende Symbole der Datenquelle. Diese Codezeichen werden mit ihrer Entsprechung (Ersatzsymbol) entweder in einer Tabelle (Codebook, Dictionary) gespeichert oder innerhalb der Kette der uncodierten Zeichen als Abstandsverweise ausgegeben. Zu den bedeutendsten Verfahren dieser Gattung zählen die Lauflängen- Codierung, die Verfahren nach dem Pattern-Matching oder Pointer-Prinzip und tabellengestützte Verfahren nach Lempel-Ziv (LZ78) bzw. nach Welch und deren Variationen.
Einige Variationen nehmen eine Zwischenrolle ein bzw. lassen sich nicht in die obengenannten Grundprinzipien einordnen. Dazu zählen das Hilbert-Verfahren und einige zeichen-orientierte Methoden. In der Praxis werden unterschiedliche Verfahren oft miteinander kombiniert. In einer solchen Mehrschicht-Codierung (multi-level-coding) kommen verschiedene Techniken gleichzeitig oder sequentiell zum Einsatz.
Jedes der eingesetzten Verfahren erzielt eine Datenreduktion durch Minderung von Redundanz. Die Redundanz einer Datenquelle kann nach verschiedenen Methoden ermittelt werden. Die Methoden, nach denen ein Datenkompressor die Redundanz einer Datenquelle einbezieht, lassen sich folgendermaßen kategorisieren:
  • a) Bei einer statischen Strategie wird ein fester Typ von Redundanz angenommen.
  • b) Bei einer nicht-statischen Strategie wird die tatsächliche Redundanz variabel oder sogar adaptiv ermittelt. Bei einer variablen Strategie werden die zu komprimieren­ den Daten komplett analysiert und es wird anhand der so gewonnenen Werte ein optimales Verfahren ausgewählt. Je nachdem, wie oft die Datei komplett sequen­ tiell gelesen wird, spricht man von einem n-Pass-Verfahren. Die adaptive Strategie (dynamische Strategie) analysiert einen bereits gelesenen Teil der Daten und nutzt die bisherige Auswertung als Strategiegrundlage für die folgenden Daten.
Viele Kompressionsverfahren existieren in unterschiedlichen Varianten der Redund­ anzanpassung, so z. B. die Huffman-Codierung als statisches oder adaptives Verfahren.
Für die Auswahl einer der genannten Strategien ist zunächst der spezifische Inhalt der Datenquelle (Programm, Text, Bild, Ton, usw.) von Bedeutung. Darüber hinaus sind drei Kriterien entscheidend:
  • - Es kommt auf die Quellstruktur der zu komprimierenden Daten an. Sie läßt sich schematisch in Datenströme unbegrenzter Länge, Dateien von variabler, aber bestimmter Länge und Dateien fester Länge unterteilen.
  • - Die Auswahl wird auch dadurch bestimmt, wieviel Speicherplatz für den ein­ laufenden Datenstrom sowohl auf der Komprimierungsseite als auch auf der Dekomprimierungsseite tatsächlich verfügbar ist.
  • - Der Rechenaufwand für den Kompressionsvorgang begrenzt die Geschwindigkeit der Datenkomprimierung und der Rechenaufwand für die Dekomprimierung muß in der verfügbaren oder erwünschten Dekomprimierungszeit erledigt werden können.
In vielen praktischen Anwendungen hat sich das Prinzip der Block-Codierung bzw. der gleitenden Block-Codierung durchgesetzt. Im ersten Fall wird eine feste Anzahl von aufeinanderfolgenden Quellensymbolen zu einem Block zusammengefaßt. Jeder Block wird unabhängig von allen anderen betrachtet. Für gleitende Block-Codes wird ein Fenster definiert, unter dem möglichst viele Quellensymbole liegen. Das Fenster wird mit jedem Schritt des Codierprozesses um eine oder mehrere Positionen verschoben, wobei die Verschiebung wesentlich kleiner als die Fensterlänge ist.
Eine weitere gebräuchliche Einteilung von Kompressionsverfahren betrifft die Längen der Quell- bzw. Zieldatensequenzen. Da bei der Codierung stets Sequenzen von Quelldaten auf Codeworte abgebildet werden, wird danach klassifiziert, ob die Zeichen­ ketten von fester Länge (fixed length) oder variabler Länge (variable length) sind. Demnach existieren vier verschiedene Zuordnungsprinzipien: fest auf fest, fest auf variabel, variabel auf fest und variabel auf variabel. Eine Codierung "variabel auf variabel" entsteht beispielsweise bei einer Verkettung eines referenzierenden Tabellen­ verfahrens (Codebookverfahren) mit einer rekurrenten Entropie-Codierung.
Weitere Einzelheiten, Vorteile und Nachteile von statistischen Verfahren (Shannon-Fano- Algorithmus, Huffman-Algorithmus, arithmetische Codierung) und referenzierenden Verfahren (Lauflängen-Codierung, Pointer-Verfahren, Code-Erweiterung) sind beispiels­ weise in dem bereits genannten Artikel Völz, H.: Komprimierung von Bilddateien, Nachrichtentechnik, Elektronik, Berlin, Band 43 (1993), Hefte 2, 3 und 4 zusammen­ gestellt.
Im folgenden werden zwei Entropie-Codierungen etwas genauer beleuchtet, die im Rahmen einer Mehrschicht-Codierung zusammen mit der Erfindung verwendet werden können.
Die grundsätzliche Idee bei Entropiekodierungen liegt darin, die Auftrittswahrschein­ lichkeiten ps unterschiedlicher Symbole der Datenquelle dem Codierungsalgorithmus zugrunde zu legen. Enthält eine Datei z Zeichen, so sind die z Zeichen n ≦ z - Symbolklassen mit gleichen Zeichen zugeordnet. Eine minimal erreichbare Dateilänge berechnet sich also aus H . z. Bei der Entropie-Codierung werden Zeichen, die häufiger als andere auftreten, durch kurze Symbole, seltenere Zeichen durch längere Symbole kodiert.
Ähnlich den Kompressionstechniken für Bild- und Videodateien, bei denen nach Ähnlichkeiten im Datenmaterial (Bild) gesucht wird, z. B. räumliche und spektrale Redundanzen, werden bei den Kompressionstechniken für aus Textzeichen bestehenden Dateien wiederkehrende Symbolfolgen zu finden und/oder Häufigkeiten der einzelnen Zeichen auszunützen sein. Ein bekanntes Verfahren einer statistischen Codierung ist unter dem Begriff Huffman-Codierung bekannt. Die Idee der Huffman-Codierung geht auf das Prinzip des Morse-Alphabets zurück. Dort werden den häufig vorkommenden Symbolen oder Zeichen kürzere Codes zugeordnet als den seltener vorkommenden. Der Code für das häufige Symbol e besteht z. B. nur aus einem einzigen Morsezeichen. Der Huffman-Algorithmus ordnet alle Zeichen zunächst nach ihrer Häufigkeit in einer Tabelle. Die beiden seltensten erhalten als letzte Codeziffer eine 0 und eine 1. Beide werden in der Tabelle mit der Summe ihrer Wahrscheinlichkeiten zusammengefaßt. Die Häufigkeitstabelle hat damit ein Element weniger. Wieder sucht man die beiden seltensten Elemente und stellt ihrem Code eine 0 und eine 1 vor. Nach Zusammen­ fassen ihrer Wahrscheinlichkeiten beginnt der Algorithmus von vorn. Alle Zeichen sind kodiert, wenn nur noch ein Element in der Tabelle übrig ist. Häufig wird der Huff­ man-Algorithmus als Baum über die Wahrscheinlichkeiten der Zeichen dargestellt. Die beiden Symbole mit der geringsten Wahrscheinlichkeit des Auftretens werden, wie erwähnt, zusammengefaßt zu einem neuen Symbol mit einer Wahrscheinlichkeit addiert aus den Wahrscheinlichkeiten der beiden einzelnen Symbole. Die Ausgangssymbole werden als linker und rechter Teilbaum angehängt. Das letzte Symbol in der Liste entspricht der Wurzel des Kodierbaums. Die Codes für die einzelnen Zeichen können dann ganz einfach ermittelt werden, indem man die Nullen und Einsen der Teilbäume aneinander reiht, die auf dem Pfad von der Wurzel zu dem gewünschten Zeichen liegen. Die Information des Baumes - vorzugsweise in der Form einer Übersetzungs­ tabelle - muß mit den Daten mitgeliefert werden. In der Praxis kann es aufwendig sein, diese Information in Form von Headerdateien als Zuordnung zwischen dem jeweiligen Huffman-Code und dem Original-Byte mitzuführen.
Ein weiteres bekanntes Verfahren ist die arithmetische Codierung, die mit Häufigkeiten und Intervallen operiert. Bei diesem Schema werden die Symbole zunächst in einem Intervall von 0 bis 1 angeordnet. Die Wahrscheinlichkeit eines Symbols entspricht dabei der Länge seines zugehörigen Unterintervalls. Besteht also eine Datei aus z Zeichen, so gibt es z Unterintervalle. Die Häufigkeitsverteilung der Zeichen fließt bei dem Schema insofern ein, als daß das Codewort umso länger gewählt wird, je kleiner das zu einem Symbol gehörige Unterintervall ist und umgekehrt. Die Codierung erfolgt dadurch, daß jedem Symbol eine binäre Fließkommazahl zugeordnet wird, die dem Anfang der Position des Unterintervalls entspricht. Aus den Fließkommazahlen wird mit Hilfe der Unterintervalle eine einzige Zahlenfolge gebildet, die letztendlich in einen Code umgesetzt wird. Der Algorithmus dieser Intervallschachtelung benötigt allerdings unbedingt ein Sonderzeichen zum Abbruch. Da bei diesem Verfahren nicht die Wahrscheinlichkeiten einzelner Zeichen einfließen, sondern die ganze Datei gemäß der Häufigkeit der Zeichen kodiert wird, bringt die arithmetische Codierung meistens eine höhere Verdichtung als der Huffman-Code. Bezüglich des algorithmischen Auf­ wandes können allerdings beide Verfahren, die arithmetische Codierung meistens und die Huffman-Codierung, einfacheren Verfahren unterlegen sein.
Eine bekannte Blockcodierung, die sich nicht ohne weiteres als statistisches Verfahren oder referenzierendes Verfahren kategorisieren läßt, ist das sogenannte Byte-Pair-Enco­ ding. Diese Blockcodierung wurde 1994 erstmals vorgestellt, vgl. Held, G. et al.: Data and Image Compression, wie eingangs zitiert, Seiten 150-157. Das Verfahren ersetzt Paare nebeneinanderliegender Bytes in einer Datei durch ein Byte, das nicht in der Datei vorkommt. Für jede Ersetzung wird das Paar mit der größten Häufigkeit ausgewählt. Sobald die Ersetzung vorgenommen wurde, werden die Häufigkeiten von Nachbarpaaren aktualisiert. Haben zwei Paare die gleiche größte Häufigkeit, so wird das erste Paar genommen. Die Codierung ist beendet, wenn kein unbesetztes Byte in der Datei mehr frei ist oder wenn sämtliche Paarhäufigkeiten einen vorgegebenen Schwellenwert von z. B. drei unterschreiten.
Aufgabe und Lösung der Erfindung
Wünschenswert ist es, eine noch größere Kompressionsrate als bei den bisher bekann­ ten entropischen Verfahren zu erzielen. Der Erfindung liegt daher das Problem zugrun­ de, ein effizienteres, übergeordnetes System zur Datenkomprimierung zur Verfügung zu stellen, das abhängig von der Dateistruktur und der technischen Anwendung mit bisherigen Verfahren kombinierbar ist.
Die Aufgabe der Erfindung besteht deshalb darin, ein System und ein Verfahren zur verlustfreien Datenkomprimierung anzugeben, welches dazu beiträgt, die Redundanz einer Datenquelle soweit wie möglich zu vermindern.
Diese Aufgabe wird durch ein Codierungssystem mit den Merkmalen des Anspruchs 1 und durch ein Codierungsverfahren mit den Merkmalen des Anspruchs 16 gelöst. Zweckmäßige Ausgestaltungen des Erfindungsgedankens gehen aus den Unteransprüchen hervor.
Drei besonders zweckmäßige Merkmale der Erfindung, die auch für sich genommen als schutzwürdig angesehen werden, bilden den Gegenstand von Nebenansprüchen 31, 32 und 33. Die Verfahrensaspekte dieser Merkmale sind in den nebengeordneten Ver­ fahrensansprüchen 34, 35 und 36 aufgeführt.
Der wesentliche Vorteil des erfindungsgemäßen Verfahren liegt darin, daß durch Zusammenfassen von Symbolen der Codierungsgewinn wesentlich gesteigert werden kann. Die neue Entropie H' und die neue Dateigröße s' errechnen sich nach den Formeln, die in Tabelle 1 angegeben sind. Das wesentliche Kriterium ist die Senkung der Dateigröße, die auf eine Senkung der Zahl z' neuer Zeichen zurückgeht.
Dabei bedeuten:
H: alte Entropie
z: alte Zeichenzahl
s: alte Dateigröße s = H.z
a: Anzahl des Symbols a
b: Anzahl des Symbols b
ab: Anzahl der möglichen Zusammenfassungen von a und b
H': neue Entropie
z': neue Zeichenzahl z' = z - ab.
So läßt sich die komprimierte Dateigröße s' berechnen als Produkt aus H'.z'.
Bei der Erfindung wird zunächst, insoweit vergleichbar mit herkömmlichen Entropieco­ dierungen, von den Auftrittswahrscheinlichkeiten ps der einzelnen Symbole ausgegangen. Für die Symbole wird eine gleiche Bit-Länge, z. B. ein Byte, angenommen. Die Datei enthält insgesamt n unterschiedliche Symbole und z ≦ n Zeichen. Dann gilt für die Entropie H die Gleichung in Fig. 1. Die Gleichung gibt an, wieviel Bit im Mittel je Zeichen erforderlich sind. Daraus bestimmt sich unter den gegebenen Bedingungen die minimal erreichbare Dateilänge zu H.z. Da es nicht immer eine ideale Codierung zu geben braucht, kann die Datei in der Praxis auch etwas größer sein als der theoreti­ sche erreichbare Wert H.z. Mit der Huffman-Codierung kann man sich dieser Grenze nähern; etwas besser als die Huffman-Codierung kann die arithmetische Codierung sein.
In der Fig. 1 ist die Dateilänge für die erfindungsgemäße pre-entropische Codierung zusammengestellt. Nach dem Prinzip der pre-entropischen Codierung, das im folgenden erklärt wird, kann die eigentliche Entropiegrenze nach Shannon deutlich - mit typischen Faktoren von 2-4 - unterschritten werden. Dies setzt erfindungsgemäß zwar einen größeren und iterativ anzuwendenden Analysemechanismus auf der Komprimierungsseite voraus; da die Dekomprimierung aber fast genauso schnell wie bei üblichen Entropie­ verfahren erfolgt, ist der für die Analyse erforderliche Zeitaufwand auf der Kom­ primierungsseite angesichts eines um den Faktor 2-4 höheren Codierungsgewinns in vielen Fällen unwesentlich.
Der Kern-Gedanke der pre-entropischen Codierung ist in den Fig. 1 und 3 darge­ stellt. Es werden schrittweise neue Kombinationszeichen eingeführt, welche eine Gruppe vorhandener Einzelzeichen ersetzen. Da durch das zunächst versuchsweise Ersetzen meist nicht alle Zeichen einer Symbolklasse erfaßt werden, nimmt meist die Zahl der Klassen von n auf n' zu. Auch die mittlere Entropie der neuen oder zweiten Daten­ quelle, welche die Kombinationszeichen versuchsweise enthält, nimmt in der Regel von H auf H' zu. Gleichzeitig sinkt jedoch die Zahl der insgesamt in der Datei vorhande­ nen Zeichen von z auf z' ≦ z. Dadurch wird häufig die Dateilänge, also das Produkt aus dem Code-Aufwand (Entropie) und der Zeichenzahl kleiner als bei der Ausgangs­ datei. So entsteht bei richtiger Optimierung eine kleinere Zieldatei, insbesondere dann, wenn anschließend die neue Datei mit den n' Klassen einer normalen Entropiecodierung unterworfen wird (Huffman-Codierung, arithmetische Codierung). Ein Codierungsgewinn erfolgt so lange, wie der Bezeichnungsaufwand für einen Kombinationsvermerk (also für die Zusatzdaten zur Decodierung, die in einer Header-Datei erfaßt werden) kleiner ist als die absolute Differenz des Bezeichnungsaufwands der Datei vor und nach der Kombination.
Eine besonders vorteilhafte Ausgestaltung der Erfindung ist darin zu sehen, daß nicht nur einander benachbarte Zeichen kombiniert werden können, sondern daß zusätzlich auch Einzelzeichen mit unterschiedlichen Abständen miteinander zusammengefaßt werden können, wobei der Abstand jeweils im Header vermerkt werden muß. Es ist möglich, für das nächste Kombinationszeichen einen wiederum anderen Abstand zu wählen.
Im Ablauf, besonders gegen Ende des erfindungsgemäßen iterativen Verfahrens ist es möglich, daß durch Auflösung von bereits kombinierten Zeichen ein weiterer Codie­ rungsgewinn erzielt werden kann. Dieser Codierungsgewinn durch Zeichenauflösung ist in Tabelle 2 dargestellt. Das erfindungsgemäße Verfahren erweist sich deshalb als besonders vorteilhaft, da eine Codierungsgewinnsteigerung erzielbar ist, indem simultan zur Prüfung auf Zusammenfassung zweier Symbole a und b eine Auflösung anderer Symbole versucht wird. Abhängig von der günstigeren Dateigröße wird dann eine Zusammenfassung oder Auflösung der Symbole a und b ausgeführt.
Ein besonders wichtiger Vorteil des erfindungsgemäßen Verfahren liegt darin, daß die bei den meisten Komprimierungsverfahren mitzuführende Headerdatei kompakter darstellbar ist, so daß der neue Bezeichnungsaufwand in der Headerdatei gegen die Hälfte des alten konvergiert. Nach einem vorgegebenen Verfahrensschema werden die Einträge der Headerdatei vertauscht und die auf sie verweisenden Symbolwerte in der zu komprimierenden Datei verändert. Dadurch wird es möglich, auf einzelne Kom­ ponenten der Headerdateieinträge ohne Informationsverlust zu verzichten.
Die Erfindung der preentropischen Codierung wird im folgenden anhand der beiliegen­ den Zeichnungen und Tabellen und der dargestellten Ausführungsbeispiele näher beschrieben. Es zeigt:
Fig. 1 Das Prinzip der preentropischen Codierung.
Fig. 2 Ein Blockschaltbild wesentlicher Funktionsbausteine und Speicherbausteine zur Durchführung des Verfahrens der preentropischen Codierung.
Fig. 3 Ein Flußdiagramm einer Ablaufsteuerung zur preentropischen Codierung.
Fig. 4 Header-Tabellen, Tauschtafeln und Codierungsbäume, die durch Ver­ tauschen von Header-Einträgen entstehen.
Fig. 5 Ein Beispiel einer Codierung des durch Vertauschung gemäß Fig. 4, Zustand 4 entstandenen Header-Baums.
Tabelle 1: Eine Berechnung des Codierungsgewinns bei Zusammenfassen zweier Symbole a und b.
Tabelle 2: Eine Berechnung des Codierungsgewinns bei Auflösen zweier Symbole a und b.
Tabelle 3: Ein Programmierbeispiel für das Verfahren zur preentropischen Codie­ rung.
Wie in Fig. 1 dargestellt, ist bei dem erfindungsgemäßen Verfahren ein iterativer Analysemechanismus der bekannten Entropiekodierung vorangestellt.
Die Auswahl der Kombinationszeichen kann unterschiedlichen Überlegungen folgen. Beispielsweise ist bekannt, daß - unter sonst gleichen Bedingungen - eine sehr un­ gleichmäßige Häufigkeitsverteilung der Zeichen eine kleine Entropie zur Folge hat. Demnach sollten bei der hier vorgestellten pre-entropischen Codierung das häufigste Ausgangszeichen oder die häufigsten Ausgangszeichen nicht zur Bildung von Kom­ binationszeichen herangezogen werden. Deren Codierung wird besser einem anschließen­ den statistischen Verfahren überlassen.
Andererseits sollten, damit die Anzahl z der Zeichen in der Datenquelle stark sinkt, vor allem die häufigsten Kombinationszeichen benutzt werden. Die häufigsten Kom­ binationszeichen entstehen aber meist gerade aus den häufigsten Originalzeichen.
Diese Überlegungen zeigen, daß die beiden genannten Strategien sich zumindest teilweise widersprechen. Da außerdem noch die Zeichenzahl und der Aufwand für die Header-Datei in die Dateilänge eingehen, ist eine einfache Strategie zur Auswahl der Kombinationszeichen zwar möglich, aber oft nicht effektiv. Statt dessen wird gemäß den Fig. 1-3 ein komplexes iteratives Optimierungsverfahren angewandt. Die im folgen­ den beschriebene Strategie stellt ein bevorzugtes Ausführungsbeispiel dar. Diese Strategie kann in mehreren Punkten modifiziert, vereinfacht und/oder erweitert werden. Die entstehenden Varianten werden u. a. von der Struktur der Eingangsdaten (vor allem ihrer Länge) und vom Anwendungsfall (Zeitbedingungen, verfügbarer Speicherplatz usw.) abhängen. Im folgenden wird ein besonders typisches und universelles Vorgehen bei der Auswahl der Kombinationszeichen dargestellt, das sich in der praktischen Durchführung als effektiv erwiesen hat.
Schritt A
Aus der ersten Datenquelle werden zunächst die Auftrittswahrscheinlichkeiten ps aller n Symbole und die Auftrittswahrscheinlichkeiten qk aller k Kombinationszeichen bestimmt. Die Kombinationszeichen entstehen aus der Zusammenfassung mehrerer Zeichen und ihres Abstandes zueinander. Dabei kann die Menge der verwendeten Abstände und die Anzahl zu kombinierender Zeichen vorher festgelegt oder aus der Datei berechnet sein. Im einfachsten Fall werden zwei benachbarte Zeichen a und b zur Kombination verwendet. Dann wird ein Kombinationszeichen versuchsweise ausge­ wählt. Entsprechend seiner Häufigkeit entfallen dadurch entsprechend viele Originalzei­ chen der beiden Klassen a und b. Mit der sich so ergebenden neuen Häufigkeitsver­ teilung (einschließlich des ausgewählten Kombinationszeichens) wird die Entropie H' berechnet und gespeichert (Speicher 1 für Entropie in Fig. 2) und mit der Zeichen­ anzahl multipliziert (Speicher für Code-Aufwand und Dateigröße in Fig. 2). Danach geschieht der gleiche Vorgang mit einer zweiten Zeichenkombination. Das neue Produkt aus Entropie und Zeichenzahl wird mit dem vorhergehenden Produkt verglichen. Ist es kleiner, so wird es gespeichert, andernfalls verworfen. Dieser Vergleich erfolgt nacheinander mit allen Kombinationszeichen. Abschließend ist jenes Kombinationszeichen bekannt, das die voraussichtlich größte Komprimierung bewirkt. Die zugehörigen Parameter (neue Anzahl n' der Klassen, neue Häufigkeitsverteilung, Zusatzdaten im Header) werden zwischengespeichert und die Kombinationszeichen stellen eine neue Klasse von Symbolen dar. Nun wird eine zweite Datenquelle gebildet, indem die zugehörigen Zeichen in der ersten Datenquelle durch das Kombinationszeichen ersetzt werden. Die neue Symbolzahl n' liegt jetzt zwischen n - 1 und n + 1, und zwar je nach dem, ob 0, 1 oder 2 Ursprungssymbole durch das Kombinationssymbol vollständig ersetzt worden sind.
Iteration
Mit der zweiten Datenquelle, welche die gemäß Schritt A erzeugte neue Klasse von Zeichen enthält, werden erneut gemäß dem Schritt A Kombinationszeichen erzeugt und überprüft. Ist für eines der Kombinationszeichen die erreichbare Dateilänge signifikant kleiner als die vorhergehende, so wird Schritt A erneut versucht, andernfalls bricht das Verfahren ab und es verbleibt bei dem vorhergehenden, zuletzt erfolgreichen Kom­ binationszeichen.
Schritt B
Im Verlauf der Iteration kann es vorkommen, daß bereits erzeugte Kombinationszeichen durch nachfolgende Prozesse überflüssig werden. Daher wird schrittweise je eines der zuvor erzeugten Kombinationszeichen probeweise in seine Ursprungszeichen aufgelöst und für die so entstehende Datenquelle das Produkt aus Entropie H und Zeichenzahl z berechnet. Falls sich hieraus ein Codierungsgewinn ergibt, wird das Kombinations­ zeichen tatsächlich in seine Ursprungszeichen aufgelöst. Danach beginnt ein neuer Zyklus mit Schritt A.
Eine besonders vorteilhafte Ausgestaltung der Erfindung liegt darin, daß auch der Codierungsgewinn, der durch Auflösung von Kombinationszeichen entsteht, berücksich­ tigt wird. Die Untersuchung des Codierungsgewinns durch Auflösung wird entweder nach bereits getätigter Zusammenfassung zweier Zeichen unternommen, oder bereits bei der Prüfung auf Zusammenfassung zweier Symbole a und b. Wie in Fig. 3 darge­ stellt, wird dies bei Schritt 8 untersucht, in dem das entstehende Produkt aus Entropie und Zeichenzahl für Zusammenfassung bzw. Auflösung verglichen wird, so daß gegebe­ nenfalls bestehende Zusammenfassungen wieder gelöscht werden und die Datei aktuali­ siert wird (Schritte 9-12).
Gemäß der Fig. 4 und 5 besteht ein wesentlicher Vorteil des erfindungsgemäßen Systems darin, daß durch Vertauschen der Header-Einträge einzelne Einträge effizienter dargestellt werden können. Dabei ist das Ziel der Transpositionen, die Einträge nach ihren Komponenten zu sortieren. Dadurch sinkt die Entropie des Headers.
Angenommen zwei Symbole xi und yi werden zu einem Kombinationssymbol mit dem Wert i zusammengefaßt. Dann besteht die Header-Datei aus einer Tabelle mit Einträgen xi/yi, wobei der Index eines Eintrags gleich dem Wert des Kombinationssymbols ist. Werden nun zwei Einträge vertauscht, dann müssen alle auf sie verweisenden Daten entsprechend aktualisiert werden. Das Sortieren durch Vertauschung kann z. B. mit xi als erstem und yi als zweitem Schlüssel erfolgen oder umgekehrt. Die Komprimierung kann dann als Läuflängen- und/oder Differenzkodierung erfolgen.
Eine weitere Transposition-Strategie sortiert alternierend mit xi und yi als Schlüsseln. Diese Strategie läßt sich in fünf Regeln beschreiben (Fig. 4).
  • 1. Anfangs ist der erste Eintrag der Referenzeintrag.
  • 2. Nun werden alle Einträge gesucht, deren Komponente xi gleich dem Index des Referenzringtags ist und darunter einsortiert.
  • 3. Als nächstes werden alle Einträge, deren Komponente yi gleich dem Index des Referenzeintrages ist, anschließend einsortiert.
  • 4. Nun werden die in 2. und 3. einsortierten Einträge als Referenzeinträge betrachtet und mit ihnen nach Schritt 2.-4. rekursiv verfahren.
  • 5. Nachdem es in Schritt 2.-4. keine Übereinstimmungen mehr gibt, ist der nächste Eintrag der Referenzeintrag und es wird mit Schritt 2.-4. weiter verfahren.
Das Verfahren endet, wenn alle Einträge einsortiert sind. Durch die rekursive Vor­ gehensweise lassen sich die sortierten Einträge in baumartiger Codierung komprimieren (Fig. 4 und Fig. 5). Die in Schritt 2. bzw. 3. einsortierten Einträge (Kinder) stimmen in xi bzw. yi mit dem Index ihres Referenzeintrages (Vater) überein. Diese Indizes müssen nun im Code nicht mehr angegeben werden, es reicht die Anzahl der Kinder anzugeben. Die ausgesparten Indizes lassen sich dann durch Abzählen von der Wurzel aus errechnen.
Eine weitere vorteilhafte Ausgestaltung der Erfindung liegt darin, daß durch den Anwender für den spezifischen Anwendungsfall Parameter wählbar sind, die z. B. angeben, ob und wenn ja, wann eine Auflösung von Zeichen versucht werden soll und daß weiterhin - wie in Fig. 3 dargestellt - eine Menge der günstigen Abstände adaptiv ermittelbar ist.
Damit ergibt sich, daß gerade in zeitkritischen Anwendungen das erfindungsgemäße System optimal skalierbar ist. Da ein System zur verlustfreien Komprimierung von z. B. ROM-Daten oder speziellen Bilddaten nicht ohne Bewertung der zugehörigen Dekom­ primierung auskommen kann, wirkt es sich bei diesem Verfahren besonders vorteilhaft aus, daß die Dekomprimierung extrem schnell ist und fast keinen Speicherplatz benötigt. Dies ist z. B. bei der mobilen oder geostationären Übertragung besonders wichtig.
Die zwei oder mehr Ursprungszeichen, die zusammengefaßt werden, können unter­ schiedliche Abstände zueinander haben, d. h. die Zeichen müssen nicht unmittelbar benachbart sein. Die Abstände der Ursprungszeichen werden in der Header-Datei vermerkt an der Stelle, an der auch das Kombinationszeichen selbst eingetragen wurde. Bei der Bildung des nächsten Kombinationzeichens können andere Abstände gewählt werden.
Zusammenfassung der Eigenschaften und bevorzugte Anwendungsgebiete
Bei der Erfindung handelt es sich demzufolge um ein System und ein Verfahren zum Komprimieren und Dekomprimieren von Dateien. Es besteht aus ein oder zwei Stufen, nämlich einer neuartigen pre-entropischen Codierung und gegebenenfalls zusätzlich einer abschließenden Entropie-Codierung bekannter Art (z. B. Hufman- oder Shannon-Fano- Codierung). Dabei werden Wahrscheinlichkeiten/Häufigkeiten gleich langer Symbole, z. B. von Byte-Symbolen berücksichtigt. Die Wahrscheinlichkeiten können für einen gegebenen Datei-Inhalt bekannt sein oder es können die Häufigkeiten zu Beginn des Verfahrens ausgezählt werden. Das Verfahren der pre-entropischen Codierung ist dadurch gekennzeichnet, daß Symbolkombinationen nach einem neuartigen Kriterium ausgewählt und als zusätzliche Symbole eingeführt werden. Zwar steigt dadurch eventuell die Anzahl auftretender Klassen von Symbolen und damit eventuell auch die Entropie; jedoch sinkt in jedem Fall die Anzahl der in der Datei insgesamt enthaltenen Zeichen. Die Erfindung schlägt vor, daß eine Zusammenfassung mehrerer Zeichen zu einer Symbolkombination jeweils so gewählt wird, daß das Produkt aus Entropie mal die Anzahl der in der Datei enthaltenen Zeichen sinkt. In der Regel wird diejenige Symbolkombination herangezogen, bei der dieses Produkt minimal ist.
Der verkürzende Prozeß wird iterativ solange wiederholt, bis kein Gewinn mehr erreicht wird, d. h. bis durch Einführung einer neuen Symbolkombination keine Ver­ kürzung der Datei insgesamt mehr möglich ist. Bei dieser Iteration wird der steigende Aufwand für den Header berücksichtigt, der in der komprimierten Datei zum Zwecke der Dekomprimierung mitgeführt wird.
Bei den Erprobungen des erfindungsgemäßen Verfahrens wurde zusätzlich festgestellt, daß unter Umständen durch Auflösen früher eingeführter Zeichen ein weiterer Codie­ rungsgewinn zu erzielen ist. Es wird deshalb im Verlauf der iterativen Einführung neuer Zeichen an geeigneter Stelle untersucht, ob durch Rückkehr zu weniger stark zusammengefaßten Zeichen die Entropie und/oder der Header-Aufwand relativ stark zurückgehen.
Sowohl die Auswahl neuer Kombinationszeichen als auch die Auflösung bereits einge­ führter Kombinationszeichen können mehrfach iterativ verschachtelt sein. Die Wiederho­ lung garantiert, daß jeder Zwischenschritt zu einem guten Zwischenergebnis führt, nimmt aber andererseits Rechenzeit in Anspruch. Im Unterschied dazu liegt es aber auch im Rahmen der Erfindung, bei der Auswahl der Kombinationszeichen geradewegs nach Erfahrungsregeln vorzugehen. Beispielsweise könnte man vor allem Symbolkom­ binationen zulassen, die nicht den häufigsten Einzelsymbolen entsprechen. Wenn besonders häufige Symbole zu einem kleinen Wert der Entropie führen, so kann man deren Codierung in zweckmäßiger Weise der abschließenden entropischen Codierung überlassen. Ein anderes Auswahlkriterium besteht darin, daß solche Symbolkombinatio­ nen bevorzugt ausgewählt werden, welche die zugehörigen Einzelzeichen ganz oder nahezu ganz verschwinden lassen. Bei bestimmten Dateistrukturen kann die Dateilänge besonders effektiv verringert werden, wenn nicht nur benachbarte Symbole, sondern auch Symbole mit größeren Abständen zusammengefaßt werden. Da diese Abstände im Header zusätzlich vermerkt werden müssen, sollte die Anzahl der zu speichernden Abstände allerdings gering gehalten werden.
Überhaupt spielt der Header gegen Ende des Iterationsprozesses eine immer größere Rolle, da die Zahl der Kombinationsvermerke immer weiter anwächst. Im Rahmen der vorliegenden Erfindung ist deshalb auch eine Transposition von Kombinationsvermerken aufgezeigt, durch die Teile der Kombinationsvermerke im Header entfallen können. Eine andere Möglichkeit, den Bezeichnungsaufwand für den Header in Grenzen zu halten, besteht darin, auf die Header-Datei das gesamte Komprimierungsverfahren selbst nochmals anzuwenden.
Zusammenfassend stellt das Verfahren der pre-entropischen Codierung ein verlustfreies Datenkomprimierungsverfahren mit folgenden Eigenschaften dar:
  • 1. Die pre-entropische Codierung (1. Schicht) ist Teil einer 2-stufigen Komprimie­ rung, die auf eine nachfolgende Entropie-Codierung (2. Schicht) optimal abge­ stimmt ist.
  • 2. Der Komprimierungsgrad dieser mehrschichtigen Codierung liegt in den meisten Fällen deutlich über dem Komprimierungsgrad einer einfachen Codierung oder anderer bekannter Mehrschichtverfahren.
  • 3. Die Dekomprimierung geschieht extrem schnell und benötigt fast keinen Speicher­ platz.
  • 4. Die Komprimierung umfaßt ein variables n-Pass-Verfahren und kann relativ aufwendig sein, so daß das Verfahren insgesamt als bedingt asymmetrisch ein­ zustufen ist.
  • 5. Das Verfahren kann mit variabler oder adaptiver Strategie und sowohl in Blockbil­ dungs- als auch in Gleitfenstertechnik betrieben werden.
  • 6. In zeitkritischen Anwendungen ist das Verfahren optimal skalierbar.
Die hauptsächlichen Anwendungsgebiete der pre-entropischen Codierung sind die Komprimierung von ROM-Daten, wie sie z. B. auf CD-ROMs, in BIOS-Speichern, in Spielekonsolen usw. enthalten sind, und die Komprimierung von Daten, die in Compu­ ter-Netzwerken übertragen werden. Ein weiteres bevorzugtes Anwendungsgebiet ist die verlustfreie Komprimierung von bereits codierten Bilddaten, die zuvor verlustbehaftet komprimiert wurden, z. B. durch die Verfahren MPEG I, MPEG II, DCT usw.
Es kommen auch solche Anwendungsgebiete in Frage, in denen andere Verfahren wie z. B. Lempel-Ziv, GIF-Format usw., zu teuer sind. Bei der mobilen oder geostationären Kommunikation, bei welcher der Arbeitsspeicher sehr knapp ist, ist die starke Kom­ primierung von Daten ebenfalls vorteilhaft. Ferner ist die Erfindung in jeder Anwen­ dung von Vorteil, bei der eine sehr dicht gepackte Datenmenge sehr schnell dekom­ primiert werden muß.
Alphabetische Liste der verwendeten Abkürzungen
a: Anzahl des Symbols a in einer ersten Datenquelle
ab: Anzahl des Symbols ab in einer zweiten Datenquelle
b: Anzahl des Symbols b in einer ersten Datenquelle
H: Entropie einer ersten Datenquelle
H': Entropie einer zweiten Datenquelle
H'': Entropie einer weiteren Datenquelle
i: Index in die Header-Tabelle (dies ist gleichzeitig der Symbolwert)
k: Anzahl der Kombinationszeichen
n: Anzahl unterschiedlicher Symbol-Klassen einer ersten Datenquelle
n': Anzahl unterschiedlicher Symbol-Klassen einer zweite Datenquelle
ps
: Auftrittswahrscheinlichkeit des Symbols s in einer ersten Datenquelle
p's
: Auftrittswahrscheinlichkeit des Symbols s in einer zweiten Datenquelle
PT: Paar-Tabelle
qk
: Auftrittswahrscheinlichkeit des Kombinationszeichens k
s: Minimale Dateigröße einer ersten Datenquelle
s': Minimale Dateigröße einer zweiten Datenquelle
S: Ein Symbol einer Datenquelle
ST: Symbol-Tabelle
xi
: erstes Symbol des i-ten Eintrags in der Header-Tabelle
yi
: zweites Symbol des i-ten Eintrags in der Header-Tabelle
z: Zeichenzahl einer ersten Datenquelle
z': Zeichenzahl einer zweiten Datenquelle
z'': Zeichenzahl einer weiteren Datenquelle
Z: Header-Tabelle
Berechnung des Codierungs-Gewinns bei Zusammenfassen zweier Symbole a und b
z: alte Zeichenzahl
H: alte Entropie
s: alte Dateigröße: s = H.z
a: Anzahl des Symbols a
b: Anzahl des Symbols b
ab: Anzahl der möglichen Zusammenfassungen von a und b
z': Neue Zeichenzahl: z' = z - ab
H' Neue Entronie:
s': Neue Dateigröße: s' = H'.z'
Berechnung des Codierungs-Gewinns bei Auflösen eines Symbols ab in Symbole a und b
z: alte Zeichenzahl
H: alte Entropie
s: alte Dateigröße: s = H.z
ab: Anzahl des Symbols ab, hervorgegangen aus Kombination von a und b
a: Anzahl des Symbols a
b: Anzahl des Symbols b
z': Neue Zeichenzahl: z' = z + ab
H' Neue Entropie:
s': Neue Dateigröße: s' = H'.z'

Claims (36)

1. System zur Codierung einer ersten Datenquelle, mit einem Codierer, der eine Folge von Zeichen der ersten Datenquelle durch Datenkomprimierung teilweise oder vollständig auf Code-Zeichen abbildet, dadurch gekennzeichnet, daß der Codierer
  • a. für eine zweite Datenquelle, bei der eine Gruppe von zwei oder mehr Zeichen (a, b) der ersten Datenquelle auf ein neues Zeichen (ab) abgebildet ist, das Produkt aus der Entropie (H') der zweiten Datenquelle und der Zeichenanzahl (z') der zweiten Datenquelle ermittelt,
  • b. für eine weitere Datenquelle mit einer weiteren Gruppe von zwei oder mehr abgebildeten Zeichen der ersten Datenquelle ein weiteres Produkt der Entropie (H'') der weiteren Datenquelle und der Zeichenanzahl (z'') der weiteren Datenquelle ermittelt,
  • c. diejenige Gruppe von Zeichen der ersten Datenquelle speichert, der von den in a. und b. ermittelten Produkten (H'.z', H''.z'') das kleinere Produkt zu­ geordnet ist, und daß der Codierer
  • d. eine gespeicherte Gruppe von Zeichen (a, b) der ersten Datenquelle durch ein neues Zeichen (ab) in der Folge von Zeichen der ersten Datenquelle ersetzt.
2. System nach Anspruch 1, dadurch gekennzeichnet, daß das System eine Zieldatei umfaßt einschließlich einer Header-Datei, die aus Einträgen der zwei oder mehr zu kombinierenden, beispielsweise benachbarten Zeichen (a, b) besteht.
3. System nach Anspruch 2, dadurch gekennzeichnet, daß zwei oder mehr nicht benachbarte Zeichen der ersten Datenquelle auf ein neues Zeichen abgebildet werden und daß zusätzlich die Information über die Abstände der nicht benachbarten Zeichen in der Header-Datei erfaßt wird.
4. System nach mindestens einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß die Codierung abhängig von einer Datenstruktur einer zu komprimierenden Ausgangsdatei, insbesondere der Dateilänge, erfolgt.
5. System nach mindestens einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß die Codierung abhängig von der Art der Anwendung, insbesondere dem Speicherplatz und dem Zeitbedarf für Komprimierung und Dekomprimierung, erfolgt.
6. System nach mindestens einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß die Produktermittlung eine Iteration über eine Vielzahl weiterer Datenquellen mit weiteren möglichen Zeichenkombinationen umfaßt, die mit der Ermittlung eines minimalen Produkts (H'.z') endet.
7. System nach einem der Ansprüche 2 bis 6, dadurch gekennzeichnet, daß der Schritt des Ersetzens von Zeichen (a, b) durch ein Kombinationszeichen (a, b) so lange wiederholt wird, bis eine minimale Länge der Zieldatei einschließlich der Header-Datei als Abbruchkriterium erreicht ist.
8. System nach mindestens einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß gemäß einem vom Anwender gewählten Parameter bestimmbar ist, wieviel Zeichen jeweils zu einem Kombinationszeichen zu­ sammengefaßt werden.
9. System nach mindestens einem der Ansprüche 1 bis 7, dadurch gekennzeich­ net, daß die Produktermittlung auf eine Heuristik zurückgreift, nach der automatisch die Anzahl der zusammenfaßbaren Zeichen spezifisch für den Anwendungsfall bestimmt wird.
10. System nach mindestens einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß die Codierung folgenden Zusatzschritt umfaßt:
nach einer erfolgten Zusammenfassung von Zeichen zu einem Kombinations­ zeichen wird in einer weiteren Datenquelle ein Kombinationszeichen (a, b) durch seine ursprünglichen Einzelzeichen (a, b) ersetzt und das Produkt aus Entropie (H'') und Zeichenzahl (z'') ermittelt und mit dem entsprechenden Produkt der zweiten Datenquelle verglichen und, falls sich für die weitere Datenquelle ein kleineres Produkt ergibt, eine Auflösung des Kombinations­ zeichens in Einzelzeichen einer vorhergehenden Datenquelle vorgenommen.
11. System nach Anspruch 10, dadurch gekennzeichnet, daß das System einen vom Anwender bestimmbaren Parameter umfaßt, nach dem der Zusatzschritt der Zeichenauflösung wahlweise verwendet oder nicht verwendet wird.
12. System nach mindestens einem der Ansprüche 10 oder 11, dadurch gekenn­ zeichnet, daß das System einen vom Anwender bestimmbaren Parameter umfaßt, nach dem der Zusatzschritt der Zeichenauflösung erst ab einer durch den Parameter bestimmten Codierungstiefe zuschaltbar ist.
13. System zur Codierung einer Datenquelle durch Datenkomprimierung unter Verwendung einer Header-Datei nach Anspruch 2, dadurch gekennzeichnet, daß durch Vertauschen der Header-Einträge ohne Informationsverlust auf einzelne Headerdaten verzichtet und dadurch eine Speicherplatzreduktion in der Header-Datei erzielt wird.
14. System zur Codierung einer Datenquelle durch Datenkomprimierung unter Verwendung der Zieldatei nach Anspruch 2, dadurch gekennzeichnet, daß die in der Zieldatei enthaltene Folge von ursprünglichen Zeichen und Code- Zeichen anschließend einer Entropie-Codierung unterworfen wird.
15. System zur Dekomprimierung der Zieldatei einschließlich der Header-Datei nach Anspruch 2, dadurch gekennzeichnet, daß die Kombinationszeichen in der Zieldatei mit Hilfe der Header-Datei schrittweise in Kombinationszeichen niedrigerer Ordnung und/oder in ihre Einzelzeichen rückübersetzt werden.
16. Verfahren zur Codierung einer ersten Datenquelle, mit einem Codierer, der eine Folge von Zeichen der ersten Datenquelle durch Datenkomprimierung teilweise oder vollständig auf Code-Zeichen abbildet, dadurch gekennzeichnet, daß der Codierer
  • a. für eine zweite Datenquelle, bei der eine Gruppe von zwei oder mehr Zeichen (a, b) der ersten Datenquelle auf ein neues Zeichen (ab) abge­ bildet ist, das Produkt aus der Entropie (H') der zweiten Datenquelle und der Zeichenanzahl (z') der zweiten Datenquelle ermittelt,
  • b. für eine weitere Datenquelle mit einer weiteren Gruppe von zwei oder mehr abgebildeten Zeichen der ersten Datenquelle ein weiteres Produkt der Entropie (H'') der weiteren Datenquelle und der Zeichenanzahl (z'') der weiteren Datenquelle ermittelt,
  • c. diejenige Gruppe von Zeichen der ersten Datenquelle speichert, der von den in a. und b. ermittelten Produkten (H'.z', H''.z'') das kleinere Produkt zugeordnet ist, und daß der Codierer
  • d. eine gespeicherte Gruppe von Zeichen (a, b) der ersten Datenquelle durch ein neues Zeichen (ab) in der Folge von Zeichen der ersten Datenquelle ersetzt.
17. Verfahren nach Anspruch 16, dadurch gekennzeichnet, daß der Codierer eine Zieldatei umfaßt einschließlich einer Header-Datei, die aus Einträgen der zwei oder mehr zu kombinierenden, beispielsweise benachbarten Zeichen (a, b) besteht.
18. Verfahren nach Anspruch 17, dadurch gekennzeichnet, daß zwei oder mehr nicht benachbarte Zeichen der ersten Datenquelle auf ein neues Zeichen abgebildet werden und daß zusätzlich die Information über die Abstände der nicht benachbarten Zeichen in der Header-Datei erfaßt wird.
19. Verfahren nach mindestens einem der Ansprüche 16-18, dadurch gekenn­ zeichnet, daß die Codierung abhängig von einer Datenstruktur einer zu komprimierenden Ausgangsdatei, insbesondere der Dateilänge, erfolgt.
20. Verfahren nach mindestens einem der Ansprüche 16-19, dadurch gekenn­ zeichnet, daß die Codierung abhängig von der Art der Anwendung, insbeson­ dere dem Speicherplatz und dem Zeitbedarf für Komprimierung und Dekom­ primierung, erfolgt.
21. Verfahren nach mindestens einem der Ansprüche 16-20, dadurch gekenn­ zeichnet, daß die Produktermittlung eine Iteration über eine Vielzahl weiterer Datenquellen mit weiteren möglichen Zeichenkombinationen umfaßt, die mit der Ermittlung eines minimalen Produkts (H'.z') endet.
22. Verfahren nach einem der Ansprüche 17-21, dadurch gekennzeichnet, daß der Schritt des Ersetzens durch ein Kombinationszeichen so lange wiederholt wird, bis eine minimale Länge der Zieldatei einschließlich der Header-Datei als Abbruchkriterium erreicht ist.
23. Verfahren nach mindestens einem der Ansprüche 16-22, dadurch gekenn­ zeichnet, daß gemäß einem vom Anwender gewählten Parameter bestimmbar ist, wieviel Zeichen jeweils zu einem Kombinationszeichen zusammengefaßt werden.
24. Verfahren nach mindestens einem der Ansprüche 16-23, dadurch gekennzeich­ net, daß die Produktermittlung auf eine Heuristik zurückgreift, nach der automatisch die Anzahl der zusammenfaßbaren Zeichen spezifisch für den Anwendungsfall bestimmt wird.
25. Verfahren nach mindestens einem der Ansprüche 16-24, dadurch gekenn­ zeichnet, daß die Codierung folgenden Zusatzschritt umfaßt:
nach einer erfolgten Zusammenfassung von Zeichen zu einem Kombinations­ zeichen wird in einer weiteren Datenquelle ein Kombinationszeichen durch seine ursprünglichen Einzelzeichen ersetzt und das Produkt aus Entropie und Zeichenzahl ermittelt und mit dem entsprechenden Produkt der zweiten Daten­ quelle verglichen und, falls sich für die weitere Datenquelle ein kleineres Produkt ergibt, eine Auflösung des Kombinationszeichens in Einzelzeichen einer vorhergehenden Datenquelle vorgenommen.
26. Verfahren nach Anspruch 25, dadurch gekennzeichnet, daß das Verfahren einen vom Anwender bestimmbaren Parameter umfaßt, nach dem der Zusatz­ schritt der Zeichenauflösung wahlweise verwendet oder nicht verwendet wird.
27. Verfahren nach mindestens einem der Ansprüche 25 oder 26, dadurch ge­ kennzeichnet, daß das Verfahren einen vom Anwender bestimmbaren Parame­ ter umfaßt, nach dem der Zusatzschritt der Zeichenauflösung erst ab einer durch den Parameter bestimmten Codierungstiefe zuschaltbar ist.
28. Verfahren zur Codierung einer Datenquelle durch Datenkomprimierung unter Verwendung einer Header-Datei nach Anspruch 17, dadurch gekennzeichnet, daß durch Vertauschen der Header-Einträge ohne Informationsverlust auf einzelne Einträge verzichtet und dadurch eine Speicherplatzreduktion in der Header-Datei erzielt wird.
29. Verfahren zur Codierung einer Datenquelle durch Datenkomprimierung unter Verwendung der Zieldatei nach Anspruch 17, dadurch gekennzeichnet, daß die in der Zieldatei enthaltene Folge von ursprünglichen Zeichen und Code- Zeichen anschließend einer Entropie-Codierung unterworfen wird.
30. Verfahren zur Dekomprimierung der Zieldatei einschließlich der Header-Datei nach Anspruch 17, dadurch gekennzeichnet, daß die Kombinationszeichen in der Zieldatei mit Hilfe der Header-Datei schrittweise in Kombinationszeichen niedrigerer Ordnung und/oder in ihre Einzelzeichen niedrigerer Ordnung rückübersetzt werden.
31. System zur Codierung einer Datenquelle,
mit einem Codierer, der eine Folge von Zeichen der Datenquelle durch referenzierende Datenkomprimierung teilweise oder vollständig auf neue Codezeichen abbildet,
und mit einer Zieldatei zur Speicherung einer die neuen Codezeichen enthal­ tenden komprimierten Datenquelle,
einschließlich einer Headerdatei, die aus Einträgen von zwei oder mehr zu kombinierenden Zeichen besteht,
dadurch gekennzeichnet, daß
zwei oder mehr nicht benachbarte Zeichen der Datenquelle auf ein neues Codezeichen abgebildet werden,
und daß in der Headerdatei zusätzlich zu den neuen Codezeichen eine Infor­ mation über die Abstände der nicht benachbarten Zeichen erfaßt wird.
32. System zur Codierung einer ersten Datenquelle,
mit einem Codierer, der eine Folge von Zeichen der ersten Datenquelle durch referenzierende Datenkomprimierung teilweise oder vollständig auf neue Kom­ binationszeichen abbildet,
wobei der Codierer für eine zweite Datenquelle, bei der eine Gruppe von zwei oder mehr Einzelzeichen der ersten Datenquelle auf ein neues Kom­ binationszeichen abgebildet ist, nach einem vorgegebenen Kriterium ermittelt, ob ein Codierungsgewinn vorliegt,
dadurch gekennzeichnet, daß die Codierung folgenden Zusatzschritt umfaßt:
nach einer erfolgten Zusammenfassung von Einzelzeichen der ersten Daten­ quelle zu einem Kombinationszeichen der zweiten Datenquelle wird in einer weiteren Datenquelle das Kombinationszeichen durch seine ursprünglichen Einzelzeichen ersetzt,
dann wird nach dem vorgegebenen Kriterium untersucht, ob ein Codierungs­ gewinn für die weitere Datenquelle vorliegt,
und, falls ein Codierungsgewinn eintritt, wird eine Auflösung des Kombina­ tionszeichens in die Einzelzeichen der ersten Datenquelle vorgenommen.
33. System zur Codierung einer Datenquelle
mit einem Codierer, der eine Folge von Zeichen der Datenquelle durch referenzierende Datenkomprimierung teilweise oder vollständig auf neue Codezeichen abbildet,
und mit einer Zieldatei zur Speicherung einer die neuen Codezeichen enthal­ tenden komprimierten Datenquelle,
einschließlich einer Headerdatei, die aus Einträgen von zwei oder mehr zu kombinierenden Zeichen besteht,
dadurch gekennzeichnet, daß
durch Vertauschen der Headereinträge ohne Informationsverlust auf einzelne Headerdaten verzichtet und dadurch eine Speicherplatzreduktion in der Header­ datei erzielt wird.
34. Verfahren zur Codierung einer Datenquelle,
mit einem Codierer, der eine Folge von Zeichen der Datenquelle durch referenzierende Datenkomprimierung teilweise oder vollständig auf neue Codezeichen abbildet,
und mit einer Zieldatei zur Speicherung einer die neuen Codezeichen enthal­ tenden komprimierten Datenquelle,
einschließlich einer Headerdatei, die aus Einträgen von zwei oder mehr zu kombinierenden Zeichen besteht,
dadurch gekennzeichnet, daß
zwei oder mehr nicht benachbarte Zeichen der Datenquelle auf ein neues Codezeichen abgebildet werden,
und daß in der Headerdatei zusätzlich zu den neuen Codezeichen eine Infor­ mation über die Abstände der nicht benachbarten Zeichen erfaßt wird.
35. Verfahren zur Codierung einer ersten Datenquelle,
mit einem Codierer, der eine Folge von Zeichen der ersten Datenquelle durch referenzierende Datenkomprimierung teilweise oder vollständig auf ein neues Kombinationszeichen abbildet,
wobei der Codierer für eine zweite Datenquelle, bei der eine Gruppe von zwei oder mehr Einzelzeichen der ersten Datenquelle auf das neue Kom­ binationszeichen abgebildet ist, nach einem vorgegebenen Kriterium ermittelt, ob ein Codierungsgewinn vorliegt,
dadurch gekennzeichnet, daß die Codierung folgenden Zusatzschritt umfaßt:
nach einer erfolgten Zusammenfassung von Einzelzeichen der ersten Daten­ quelle zu einem Kombinationszeichen der zweiten Datenquelle wird in einer weiteren Datenquelle das Kombinationszeichen durch seine ursprünglichen Einzelzeichen ersetzt,
dann wird nach dem vorgegebenen Kriterium untersucht, ob ein Codierungs­ gewinn für die weitere Datenquelle vorliegt,
und, falls ein Codierungsgewinn eintritt, wird eine Auflösung des Kombina­ tionszeichens in die Einzelzeichen der ersten Datenquelle vorgenommen.
36. Verfahren zur Codierung einer Datenquelle
mit einem Codierer, der eine Folge von Zeichen der Datenquelle durch referenzierende Datenkomprimierung teilweise oder vollständig auf neue Codezeichen abbildet,
und mit einer Zieldatei zur Speicherung einer die neuen Codezeichen enthal­ tenden komprimierten Datenquelle,
einschließlich einer Headerdatei, die aus Einträgen von zwei oder mehr zu kombinierenden Zeichen besteht,
dadurch gekennzeichnet, daß
durch Vertauschen der Headereinträge ohne Informationsverlust auf einzelne Headerdaten verzichtet und dadurch eine Speicherplatzreduktion in der Header­ datei erzielt wird.
DE1996153133 1996-12-19 1996-12-19 System und Verfahren zur pre-entropischen Codierung Expired - Fee Related DE19653133C2 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE1996153133 DE19653133C2 (de) 1996-12-19 1996-12-19 System und Verfahren zur pre-entropischen Codierung
PCT/EP1997/007209 WO1998027657A1 (de) 1996-12-19 1997-12-19 System und verfahren zur pre-entropischen codierung

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE1996153133 DE19653133C2 (de) 1996-12-19 1996-12-19 System und Verfahren zur pre-entropischen Codierung

Publications (2)

Publication Number Publication Date
DE19653133A1 true DE19653133A1 (de) 1998-06-25
DE19653133C2 DE19653133C2 (de) 1998-11-05

Family

ID=7815435

Family Applications (1)

Application Number Title Priority Date Filing Date
DE1996153133 Expired - Fee Related DE19653133C2 (de) 1996-12-19 1996-12-19 System und Verfahren zur pre-entropischen Codierung

Country Status (2)

Country Link
DE (1) DE19653133C2 (de)
WO (1) WO1998027657A1 (de)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001010038A1 (en) * 1999-08-02 2001-02-08 The V.E. Group, Llc System, method and algorithm for the optimization of entropy for lossless compression
US7111094B1 (en) 1999-08-02 2006-09-19 Shin-Ping Liu System, method and algorithm for the optimization of entropy for lossless compression

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5006849A (en) * 1989-07-26 1991-04-09 Astro, Inc. Apparatus and method for effecting data compression
US4955066A (en) * 1989-10-13 1990-09-04 Microsoft Corporation Compressing and decompressing text files

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
VÖLZ, Horst: Grundlagen der Information. Berlin:d Akademie-Verlag, 1991, S.19,22-31, 36,37,95,96,113-119,460-464 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001010038A1 (en) * 1999-08-02 2001-02-08 The V.E. Group, Llc System, method and algorithm for the optimization of entropy for lossless compression
US7111094B1 (en) 1999-08-02 2006-09-19 Shin-Ping Liu System, method and algorithm for the optimization of entropy for lossless compression

Also Published As

Publication number Publication date
DE19653133C2 (de) 1998-11-05
WO1998027657A1 (de) 1998-06-25

Similar Documents

Publication Publication Date Title
DE10301362B4 (de) Blockdatenkompressionssystem, bestehend aus einer Kompressionseinrichtung und einer Dekompressionseinrichtung, und Verfahren zur schnellen Blockdatenkompression mit Multi-Byte-Suche
DE19622045C2 (de) Datenkomprimierungs- und Datendekomprimierungsschema unter Verwendung eines Suchbaums, bei dem jeder Eintrag mit einer Zeichenkette unendlicher Länge gespeichert ist
DE4340591C2 (de) Datenkompressionsverfahren unter Verwendung kleiner Wörterbücher zur Anwendung auf Netzwerkpakete
DE69725215T2 (de) Verfahren und Vorrichtung zur Komprimierung und Dekomprimierung von Schrifttypen
DE10196890B4 (de) Verfahren zum Ausführen einer Huffman-Decodierung
DE19606178C2 (de) Verfahren zum Komprimieren einer Anordnung von Pixelwerten und zum Dekomprimieren einer Anordnung von Pixelwerten aus einem komprimierten Datensatz
DE60033184T2 (de) Verfahren und Vorrichtung zur Datenkomprimierung von Netzwerkdatenpaketen unter Verwendung von paketweisen Hash Tabellen
DE69916661T2 (de) Codebuchkonstruktion für entropiekodierung von variabler zu variabler länge
DE60127695T2 (de) Verfahren zur komprimierung von datenpaketen
DE69833094T2 (de) Verfahren und Vorrichtung zur adaptiven Datenkompression mit höherem Kompressionsgrad
DE69834695T2 (de) Verfahren und Vorrichtung zur Datenkompression
EP1550219B1 (de) Verfahren und anordnung zur arithmetischen enkodierung und dekodierung von binären zuständen sowie ein entsprechendes computerprogramm und ein entsprechendes computerlesbares speichermedium
DE60107964T2 (de) Vorrichtung zur kodierung und dekodierung von strukturierten dokumenten
EP0260748A2 (de) Verfahren und Schaltungsanordung zur Bitratenreduktion
EP1500281A2 (de) Kodierung von transformations-koeffizienten in bild- oder videokodierern
DE102006062062B4 (de) Komprimierung von Lieddaten und Komprimierer/Dekomprimierer
DE10196847B4 (de) Ein Verfahren zum Erzeugen von Huffman-Code-Längeninformationen
DE10049571C1 (de) Verfahren und Anordnung zum Übertragen eines Vektors
EP1286471B1 (de) Verfahren zur Kompression von Daten
DE19653133C2 (de) System und Verfahren zur pre-entropischen Codierung
DE10131801B4 (de) Verfahren zur Datenkompression und Navigationssystem
DE60311886T2 (de) Verfahren und vorrichtung zum sortieren zyklischer daten in lexikographischer reihenfolge
DE102006047465A1 (de) Verfahren und Vorrichtung zur Kompression und Dekompression digitaler Daten auf elektronischem Wege unter Verwendung einer Kontextgrammatik
DE102006028469B4 (de) Adaptives Quantisiertes Codierungsverfahren
DE4432436C2 (de) Datenkompressionsverfahren und Vorrichtung zum Komprimieren von Daten

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
D2 Grant after examination
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee