DE69916661T2 - Codebuchkonstruktion für entropiekodierung von variabler zu variabler länge - Google Patents

Codebuchkonstruktion für entropiekodierung von variabler zu variabler länge Download PDF

Info

Publication number
DE69916661T2
DE69916661T2 DE69916661T DE69916661T DE69916661T2 DE 69916661 T2 DE69916661 T2 DE 69916661T2 DE 69916661 T DE69916661 T DE 69916661T DE 69916661 T DE69916661 T DE 69916661T DE 69916661 T2 DE69916661 T2 DE 69916661T2
Authority
DE
Germany
Prior art keywords
symbol
grouping
groupings
high probability
symbols
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69916661T
Other languages
English (en)
Other versions
DE69916661D1 (de
Inventor
Wei-Ge Chen
Ming-Chieh Lee
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.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of DE69916661D1 publication Critical patent/DE69916661D1/de
Application granted granted Critical
Publication of DE69916661T2 publication Critical patent/DE69916661T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime 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

Description

  • Gebiet der Erfindung
  • Die Erfindung betrifft im allgemeinen Datenkompression, und insbesondere eine Form einer Entropiecodierung.
  • Hintergrund
  • In einer typischen Codierungsumgebung werden Eingabedaten von einem Codierer codiert, über einen Kommunikationskanal übertragen (oder einfach gespeichert) und von einem Decoder decodiert. Während der Codierung wird ein Eingabesignal typischerweise vorverarbeitet, abgetastet, konvertiert, komprimiert oder anderweitig in eine Form zur Übertragung oder Speicherung manipuliert. Nach der Übertragung oder Speicherung versucht der Decoder die Originaleingabe wieder zu rekonstruieren.
  • Eine wesentliche Einschränkung dieses einfachen Modells besteht darin, dass ein gegebener Kommunikationskanal eine bestimmte Kapazität oder Bandbreite besitzt. Demzufolge ist es häufig erforderlich, den Informationsinhalt der Eingabedaten zu reduzieren, um deren zuverlässige Übertragung, falls überhaupt möglich, über den Kommunikationskanal zu ermöglichen. Wenn das Eingabesignal aus Symbolen mit gleicher wahrscheinlicher Auftrittsmöglichkeit zusammengesetzt ist, besteht dann eine optimale Codierung in der Verwendung von Codewörtern gleicher Länge, wobei jedes Bit eines n-Bitcodes eine Unterscheidung zwischen 2n gleich wahrscheinlichen Eingabemöglichkeiten erlaubt. Somit kann ein einziges Bit (d. h. ein Codebuch mit zwei Einträgen) zwei Möglichkeiten unterscheiden, zwei Bits können vier Möglichkeiten unterscheiden, usw.
  • Es ist jedoch nicht typisch, dass ein Eingabestrom eine gleiche Wahrscheinlichkeit eines Empfangs irgendeiner speziellen Nachricht besitzt. In der Praxis sind aufgrund einer semantischen oder syntaktischen Struktur in der Eingabe bestimmte Nachrichten wahrscheinlicher als andere. Die Aufgabe der Entropiecodierung besteht darin, einen Vorteil aus einer derartigen Datenkorrelation zu ziehen und die mittlere Länge der Codeworte von erwarteten Eingaben mit bestimmten hoch wahrscheinlichen Eingaben zu minimieren. Wenn eine Nachricht wahrscheinlicher als andere ist, werden ein kürzerer Codebucheintrag für wahrscheinliche Nachrichten und längere Einträge für die weniger wahrscheinlichen verwendet.
  • In letzter Zeit wurde erheblicher Aufwand in die Entwicklung von verlustlosen und verlustbehafteten Kompressionstechniken für die Reduzierung der Größe von Daten zur Übertragung oder Speicherung investiert. Eine beliebte verlustlose Technik ist als Huffmann-Codierung bekannt, welche eine spezielle Form von Entropiecodierung ist. Die Entropiecodierung arbeitet durch Zuweisen von Codes variabler Länge (z. B. Codebucheinträgen) zu Blöcken fester Größe der Eingabe. D. h., ein zulässige Variable X, welche bekanntermaßen Werte x1 .. xm mit entsprechender Wahrscheinlichkeit p1 .. pm annimmt, wird einem Eintrag innerhalb eines Satzes von Codeworten {Y} zugeordnet. Jedes Codewort yl k in {Y} der Länge k besteht wiederum aus einer begrenzten Folge von Codealphabeteinträgen {A} = {a1 .. ad}. Zur Vereinfachung wird yl k einfach als yl bezeichnet, wobei k mit impliziert wird. Für digitale Anwendungen ist das Codealphabet wahrscheinlich eine Reihe binärer Digits {0, 1} mit in Bits gemessenen Codelängen. Wenn dessen angenommenen Codeworte so aufgebaut sind, muss nur eine einzige Abtastung einer komprimierten Darstellung betrachtet werden, um die entsprechende Ausgabe zu rekonstruieren. Die Schwierigkeit in einer Entropiecodierung des Quellensignals hängt von der Anzahl m möglicher Werte ab, die X annehmen kann. Für kleine m gibt es nur einige wenige mögliche Nachrichten, und daher kann das Codebuch für die Nachrichten sehr klein sein (es werden z. B. nur einige wenige Bits benötigt, um unzweifelhaft alle möglichen Nachrichten darzustellen).
  • Wenn bekannt ist, dass ein Sender ein Quellensignal bereitstellt, das eine von vier Nachrichten x1 .. x4 mit entsprechenden Wahrscheinlichkeiten p1 .. p4 von 1/2, 1/4, 1/8 und 1/16 enthält, kann man ineffizient die vier möglichen Nachrichten mit nur zwei Bits darstellen. Dieses verschwendet jedoch Bandbreite, da die ungleichmäßigen Wahrscheinlichkeiten Dateneigenschaften anzeigen, die vorteilhaft genutzt werden können. Ein effizienteres Verfahren, das als Skalar-Huffmann-Codierung bekannt ist, erfordert einen Mittelwert von weniger als 2 Bits, um eine derartige Nachricht zu codieren. Ein kurzer Codebucheintrag wird x1 zugewiesen, da dieses am wahrscheinlichsten ist, und zunehmend längere Codes für die weniger wahrscheinlichen Eingaben. Ein möglicher Satz von Codebucheinträgen ist die Zuweisung von "1", um die Nachricht x1 darzustellen, "01" für Nachricht x2, "000" für die Nachricht x3 und "001" für die Nachricht x4, Dieses ergibt eine mittlere Codelänge von 1,56 Bits anstelle von 2 für die Codierung der Zufallsvariablen X – ein deutliche Einsparung.
  • Die Kompressionsleistung dieses Lösungsansatzes ist dadurch begrenzt, dass jedes Quellensymbol einem Codewort mit einer ganzzahligen Anzahl von Bits zugewiesen wird. Herkömmliche Verfahren zur Überwindung dieser Einschränkung umfassen eine arithmetische Codierung und Vektor-Huffmann-Codierung. Diese Verfahren gruppieren X's in Blöcke oder Vektoren, welche selbst als ein weiteres Quellensymbol behandelt werden. D. h., statt einfach jede einzelne Nachricht X zu codieren, werden stattdessen Folgen von mehreren X's codiert. So wie die Vertahren zum Codieren einzelner Symbole den Vorteil der Auftrittshäufigkeit eines Symbols in einem Eingabestrom nutzt, ermöglicht der letztere Lösungsansatz der Gruppierung von Symbolen dem Codierer, den Vorteil von Abhängigkeiten zwischen Eingabesymbolen zu nutzen. Die Codierung von Folgen von X's erzeugt weitere Einsparungen, da es aus Informationstheorieuntersuchungen bekannt ist, dass die Entropie einer kohärenten Serie X1 .. Xn kleiner oder gleich als die Summe der Entropie jedes einzelnen X ist.
  • Theoretisch kann die Vektor-Huffmann-Codierung eine kohärente Quelle wesentlich effizienter als die Skalar-Huffmann-Codierung komprimieren. Der Wirkungsgrad der Vektor-Huffmann-Codierung ist nur durch praktische Gesichtspunkte beschränkt. Um höhere Kompressionsverhältnisse zu erzielen, werden größere Vektordimensionen benötigt. Eine größere Dimension vergrößert jedoch die Codebucheinträge über praktikable Begrenzungen hinaus. Beispielsweise entspricht für Quellensymbole mit 30 möglichen Werten, eine Dimension von nur 6 einem Codebuch von 729 Millionen Einträgen.
  • Man beachte auch, dass die vorstehenden Beispiele von Entropiecodierung als eine Codierung von fester zu variabler Länge gekennzeichnet sind, da die Quellensymbole eine feste Länge besitzen, und die Codeworte eine variable Länge abhängig von der Wahrscheinlichkeit des entsprechenden Quellensymbols besitzen. Weitere Vertahren einer Entropiecodierung wurden versucht, welche den entgegengesetzten Ansatz versuchen, wobei eine variable Anzahl von Quellensymbolen miteinander gruppiert und dann in Codeworte mit gleicher Länge übersetzt werden. Wenn die Quelle aus unabhängigen X's besteht, und die Symbolgruppierungen eine gleiche Wahrscheinlichkeit erreichen, ist ein derartiges umgekehrtes Verfahren möglicherweise optimal. Jedoch erfordern wie bei der Großdimensionsvektor-Huffmann-Codierung derartige Lösungen Ressourcen, welche praktisch (wenn überhaupt) verfügbare Ressourcen überschreiten. Zusätzlich ist für Quellen mit Datenkohärenz, wie z. B. für Audio- oder Videodatenströme dieser Lösungsansatz mit variabler zu fester Länge nicht nutzbringend.
  • EP 0 283 735 A2 beschreibt ein adaptives Datenkompressionsverfahren und eine Vorrichtung.
  • R. L. Bailey et al., "Pipelining Data Compression Algorithms", The Computer Journal 33 (1990) August, No. 4, pages 308 bis 313 beschreibt eine Hintereinanderschaltung mehrerer Datenkompressionsalgorithmen durch sequentielles Verarbeiten von zwei vollständig unterschiedlichen Algorithmen. Eingangsdaten werden mit einem String-Parsing-Algorithmus von variabler zu fester Länge komprimiert. Dieses wandelt die Eingabedaten in Codes fester Länge um, welche dann mit einem Codierungsalgorithmus von fester zu variabler Länge komprimiert werden. "Pipelining" tritt durch die Kompression von Daten mit einem ersten Algorithmus auf, welcher ein erstes Codebuch verwendet, das Codewörter fester Länge erzeugt, und indem dann die Ausgabe des ersten Algorithmus einem zweiten Algorithmus zugeführt wird, welcher ein zweites Codebuch verwendet, das Codeworte variabler Länge erzeugt.
  • WO 98/40969 A2 beschreibt ein Textdateikompressionssystem, das eine alphabetisch geordnete Hauptwörterbuchliste aller in der Textdatei auftretenden einmaligen Worte erzeugt. Das Kompressionssystem erzeugt ferner ein Wörterbuch gemeinsamer Worte, das auf am häufigsten in der Textdatei angetroffene Worte verweist. Das Wörterbuch der gemeinsamen Worte und das Hauptwörterbuch weisen zusammen einen eindeutigen Ein-Bit-Code jedem der am häufigsten angetroffenen Worte zu, die in dem Wörterbuch gemeinsamer Worte enthalten sind, und einen eindeutigen Zwei-Bit-Code allen anderen Worten, die in dem Hauptwörterbuch enthalten sind. Nach dem Erzeugen der Wörterbücher wird ein Wortindex durch Ersetzen jedes Wortes in der Textdatei durch dessen zugewiesenen Ein- oder Zwei-Bit-Code erzeugt, welche somit eine komprimierte Form der Textdatei repräsentieren. Die am häufigsten in der Textdatei angetroffenen Worte werden ermittelt, indem ein Zählwert der Anzahl von Malen geführt wird, mit der jedes einzelne Wörterbuchwort in der Textdatei auftritt.
  • Zusammenfassung
  • Es ist die Aufgabe der Erfindung, ein verbessertes Verfahren und System zum Aufbauen eines Codebuchs für Symbole bereitzustellen, die aus einem Alphabet entnommen werden.
  • Diese Aufgabe wird von der Erfindung wie in den unabhängigen Ansprüchen beansprucht gelöst. Bevorzugte Ausführungsformen sind in den abhängigen Ansprüchen definiert.
  • Es wird ein Verfahren zum Zuweisen von Codes variabler Länge zu Eingabefolgen variabler Länge bereitgestellt. Insbesondere werden Entropietyp-Codes wahrscheinlichen Eingangsfolgen zugewiesen, welche somit das Codieren eines speziellen Eingabestroms in ein komprimiertes Format ermöglichen. Wenn die Erfindung in einer Ressourcen-beschränkten Umgebung implementiert wird, kann sie so konfiguriert werden, dass sie die Größe des Codebuches, das für die Durchführung der Codierung und Decodierung erforderlich ist, reduziert. Beispielsweise könnten Codeworte variabler Länge nur Eingaben zugewiesen werden, die hoch wahrscheinlich sind, während Vorgabecodes weniger wahrscheinlichen Folgen zugewiesen werden können. Der Wahrscheinlichkeitsgrad, der für die Zuweisung eines spezifischen Codes zu einer spezifischen Eingabe erforderlich ist, wird abhängig von einer gewünschten Codebuchgröße angepasst.
  • Der zu codierende Eingabestrom kann jeder Datentyp sein, wie z. B. Zahlen, Buchstaben, oder ein binärer Datenstrom, welcher Audio-, Video- oder andere Datentypen codiert. Zur Vereinfachung wird der Eingabestrom hierin als eine Reihe von Symbolen bezeichnet, wobei jedes "Symbol" die entsprechende Messeinheit für die spezielle Eingabe bezeichnet.
  • Insbesondere wird ein Codebuch für die Codierung von Symbolen aufgebaut, in welchem Symbolgruppen variabler Größe jeweils einem Code variabler Länge auf der Basis der Auftrittswahrscheinlichkeit von Symbolgruppierungen zugewiesen wird. Zum Auf bauen des Codebuchs werden mögliche Symbolgruppierungen erzeugt und mit der Wahrscheinlichkeit der erzeugten Gruppierung verglichen, welche in der exemplarischen Eingabe auftritt, die zum Erzeugen des Codebuchs verwendet wird. Eine derartige exemplarische Eingabe wird als eine angenähert beliebige Eingabe angenommen, welche wahrscheinlich empfangen wird und eine Codierung erfordert. Man beachte, dass die Eingabe dazu verwendet werden kann, um die Erzeugung von Gruppierungen zu betreiben, oder dass alle möglichen Gruppierungen getestet und mit einer exemplarischen Eingabe verglichen werden können; es wird hierin angenommen, dass die Gruppierungen eingangsbetrieben sind.
  • Eine Datenstruktur (oder Äquivalent) kann zum Verfolgen von Symbolkombinationen (z. B. den Gruppierungen) verwendet werden. Diese Struktur wird dazu verwendet, das neue Symbol mit zuvor empfangenen Symbolen zu verbinden, so dass beliebig lange Gruppierungen von zuvor empfangenen Symbolen verfolgt werden. Eine mögliche Konfiguration für die Datenstruktur ist eine baumartige Datenstruktur, in welcher aufeinanderfolgende Symbolgruppierungen neue Blattknoten ausbilden. Diese Knoten können eine vollständige Gruppierung enthalten, oder lediglich die einzige Symbolerweiterung zu einem vorhergehenden Elternknoten. In dieser letzteren Konfiguration entspricht der Pfad von der Wurzel des Baumes einer speziellen Gruppierung.
  • Um die Gruppierung und Wahrscheinlichkeitszuweisungen zu starten, werden bevorzugt eine oder mehrere triviale Gruppierungen ausgewählt, wie z. B. Einzelsymbol"Gruppen", welche Symbole aus dem Eingabealphabet enthalten. Die Wahrscheinlichkeit dieser Anfangsgruppierungen wird bewertet, um die Gruppierung zu ermitteln, welche höchst wahrscheinlich als Eingabe auftritt, wobei eine derartige Wahrscheinlichkeit notwendigerweise in Bezug auf die exemplarischen Eingaben berechnet wird. Die wahrscheinlichste Gruppierung wird dann mit Symbolen aus dem Alphabet erweitert, um vorläufige Gruppierungen zu erzeugen. Die Wahrscheinlichkeit dieser vorläufigen Gruppierungen wird dann bewertet, um die wahrscheinlichsten vorläufigen Erweiterungen zu identifizieren, und die am wenigsten wahrscheinlichen Gruppierungen, die in nur eine einzige Gruppierung kombiniert werden.
  • Das Konzept eines Codebuchs besteht in der Zuweisung von Codeworten zu Symbolgruppierungen. In einer Ressourcen-beschränkten Umgebung kann die Erfindung so konfiguriert werden, dass die Codebuchgröße beschränkt bleibt. Ein Vertahren dieses durchzuführen besteht in der Vermeidung der Zuweisung von Codes zu allen Eingabefolgen. Statt dessen werden nur wahrscheinliche Eingabefolgen in dem Codebuch gespeichert, und einem Entropie-Code zugewiesen. Unwahrscheinliche Folgen werden in dem Codebuch als ein Eingabefolgevorsatz gefolgt von einem speziellen Erweiterungsbuchstabenzusatz dargestellt. Dieser Zusatzbuchstabe repräsentiert alle möglichen Eingabefolgeerweiterungen zu dem Vorsatz. Die Vorsatz/Zusatz-Paarung repräsentiert alle möglichen Eingabefolgen beginnend mit dem Vorsatz, der keinen Eintrag in dem Codebuch besitzt. Somit ergeben sich nach der Bewertung der vorläufigen Erweiterungen zwei Codebucheinträge, einer für die meist wahrscheinliche Erweiterung und einer, der alle anderen Erweiterungen (wiederum unter Annahme nur der am meist wahrscheinlichen Erweiterung) repräsentiert.
  • Dieser Prozess der Erweiterung von Gruppierungen und Zusammenlegung von Gruppierungen wird wiederholt, bis die Datenstruktur bis zu einer vorbestimmten Kapazität aufgefüllt worden ist. Man beachte jedoch, dass selbst dann, wenn das Codebuch bis zu seiner Kapazität aufgefüllt wurde, die Eingabe weiter abgetastet werden kann, so dass Einträge mit höherer Wahrscheinlichkeit innerhalb der Eingabe weniger wahrscheinliche aktuelle Einträge verdrängen. Der Wirkungsgrad dieser Codierungstechnik ist alleine durch die gewählte Buchgröße und die Typikalität der exemplarischen Eingabe beschränkt. Sobald das Codebuch erzeugt worden ist, wird jeder Codebucheintrag einem Entropie-Code zugewiesen, d. h., einem Code mit einer Länge umgekehrt proportional zu der Wahrscheinlichkeit des Eintrags.
  • Kurzbeschreibung der Zeichnungen
  • 1 ist eine Blockdarstellung eines Computersystems, das zur Implementierung einer Entropiecodierung von variabel zu variabel verwendet werden kann.
  • 2 stellt ein Grundkommunikationsmodell dar.
  • 3 ist ein Flussdiagramm, das die Erzeugung eines Codebuchs mit Einträgen variabler Länge für Symbolgruppierungen variabler Länge darstellt.
  • 4 bis 10 stellen eine Erzeugung eines Codebuches gemäß 3 für ein Alphabet {A, B, C} dar.
  • Detaillierte Beschreibung
  • Die Erfindung wurde in einem Audio/Video-Codec implementiert. Dieses ist nur ein Beispiel, wie die Erfindung implementiert werden kann. Die Erfindung ist dafür ausgelegt, dort eingesetzt zu werden, wo immer eine Entropiecodierung verwendet werden kann, und ist auch für die Kompression jedes Datentyps anwendbar. Kurz gesagt, erfordert eine optimale Entropiecodierung erhebliche Ressourcen, und die dargestellten Ausführungsformen stellen eine nahezu optimale Codierungslösung bereit, welche weitaus weniger Ressourcen erfordert.
  • Exemplarische Betriebsumgebung
  • 1 und die nachstehende Diskussion sollen eine kurze, allgemeine Beschreibung einer geeigneten Berechnungsumgebung bereitstellen, in welcher die Erfindung implementiert werden kann. Obwohl die Erfindung in dem allgemeinen Zusammenhang von Computer-ausführbaren Befehlen eines Computerprogramms beschrieben wird, das auf einem Personalcomputer abläuft, wird der Fachmann auf diesem Gebiet erkennen, dass die Erfindung auch in Kombination mit anderen Programmmodulen implementiert werden kann. Im allgemeinen beinhalten Programmodule Routinen, Programme, Komponenten, Datenstrukturen, usw., welche spezielle Aufgaben ausführen oder spezielle abstrakte Datentypen implementieren. Ferner wird der Fachmann auf diesem Gebiet erkennen, dass die Erfindung mit anderen Computersystemkonfigurationen, die Handgeräte, Multiprozessorsysteme, Mikroprozessor-basierende oder programmierbare Consumer-Elektronik, Minicomputer, Großcomputer und dergleichen umfassen, in die Praxis umgesetzt werden kann. Die dargestellte Ausführungsform der Erfindung wird auch in verteilten Computerumgebungen eingesetzt, in welchen Aufgaben von entfernten Verarbeitungsvorrichtungen durchgeführt werden, welche über ein Verbindungsnetzwerk miteinander verbunden sind. Einige Ausführungsformen der Erfindung können jedoch auf selbständigen Computern ausgeführt werden. In einer verteilten Computerumgebung können Programmmodule sowohl in lokalen als auch in entfernten Speichereinrichtungen lokalisiert sein.
  • Gemäß 1 enthält ein exemplarisches System für die Implementation der Erfindung einen Computer 20, der eine Verarbeitungseinheit 21, einen Systemspeicher 22 und einen Systembus 23 enthält, der verschiedene Systemkomponenten einschließlich des Systemspeichers mit der Prozesseinheit 21 verbindet. Die Verarbeitungseinheit kann irgendeiner von verschiedenen im Handel verfügbaren Prozessoren sein, die einen Intel X86, Pentium und kompatiblen Mikroprozessor von Intel oder andere, den Alpha-Prozessor von Digital und den PowerPC von IBM und Motorola umfassen. Dual-Mikroprozessoren und andere Mehrfach-Prozessorarchitekturen können ebenfalls als die Verarbeitungseinheit 21 verwendet werden.
  • Der Systembus kann irgendeiner von verschiedenen Arten von Busstrukturen sein, die einen Speicherbus oder eine Speichersteuerung, einen Peripheriebus und einem lokalen Bus sein, die eine Vielfalt von herkömmlichen Busarchitekturen wie z. B. PCI, AGP, VESA, Microchannel, ISA und EISA verwenden, um nur ein paar zu nennen. Der Systemspeicher enthält einen Nur-Lese-Speicher (ROM) 24 und einen Speicher mit wahlfreiem Zugriff (RAM) 25. Ein Basis-Eingabe/Ausgabe-System (BIOS), das die Grundroutinen enthält, welche zur Übertragung von Information zwischen Elementen innerhalb des Computers 20 beispielsweise während des Startvorgangs beitragen, ist im ROM 24 gespeichert.
  • Der Computer 20 enthält ferner ein Festplattenlaufwerk 27, ein Magnetplattenlaufwerk 28, um beispielsweise von einer entnehmbaren Platte 29 zu lesen oder darauf zu schreiben, und ein optisches Plattenlaufwerk 30, beispielsweise zum Lesen einer CD-ROM Disk 31 oder zum Lesen von oder Schreiben auf andere optische Medien. Das Festplattenlaufwerk 27, Magnetplattenlaufwerk 28 und optische Plattenlaufwerk 30 sind mit dem Systembus 23 über eine Festplattentreiberschnittstelle 32, eine Magnetplattentreiberschnittstelle 33 und eine Schnittstelle 34 für ein optisches Laufwerk verbunden. Die Laufwerke und ihre zugeordneten Computer-lesbaren Medien stellen einen nicht flüchtigen Speicher von Daten, Datenstrukturen, Computer-ausführbaren Befehlen, usw. für den Computer 20 dar. Obwohl sich die Beschreibung von Computer-lesbaren Medien vorstehend auf eine Festplatte, eine entnehmbare magnetische Platte und eine CD bezieht, dürfte es für den Fachmann erkennbar sein, dass andere Medientypen, welche von einem Computer lesbar sind, wie z. B. Magnetkassetten, Flash-Memory-Karten, digi tale Videoplatten, Bernoulli-Kassetten und dergleichen, ebenfalls in der exemplarischen Betriebsumgebung verwendet werden können.
  • Eine Anzahl von Programmmodulen kann in den Laufwerken und RAM 25 einschließlich eines Betriebssystems 35 einem oder mehreren Anwendungsprogrammen (z. B. Internet-Browser-Software) 36, anderen Programmmodulen 37 und Programmdaten 38 gespeichert sein.
  • Ein Benutzer kann Befehle und Information in den Computer 20 über eine Tastatur 40 und Zeigevorrichtung, wie z. B. eine Maus 42, eingeben. Weitere (nicht dargestellte) Eingabevorrichtungen können ein Mikrophon, Joystick, Game Pad, eine Satellitenschüssel, einen Scanner oder dergleichen umfassen. Diese und weitere Eingabevorrichtungen sind mit der Verarbeitungseinheit 21 oft über eine serielle Anschlussschnittstelle 46 verbunden, die mit dem Systembus verbunden ist, können jedoch auch über andere Schnittstellen, wie z. B. einem Parallelport, Spieleport oder einen universellen seriellen Bus (USB) angeschlossen sein. Ein Monitor 47 oder eine andere Art von Anzeigevorrichtung ist ebenfalls mit dem Systembus 22 über eine Schnittstelle, wie z. B. einen Videoadapter 48, verbunden. Zusätzlich zu dem Monitor enthalten Personalcomputer typischerweise weitere (nicht dargestellte) periphere Ausgabevorrichtungen, wie z. B. Lautsprecher und Drucker.
  • Vom Computer 20 wird erwartet, dass er in einer vernetzten Umgebung unter Einsatz logischer Verbindungen zu einem oder mehreren entfernten Computern, wie z. B. einem entfernten Computer 49, arbeitet. Der entfernte Computer 49 kann ein Webserver, ein Rooter, ein gleichrangiges Gerät, oder ein weiterer gemeinsamer Netzknoten sein, und enthält typischerweise viele von den in Bezug auf den Computer 20 beschriebenen Elementen, obwohl nur eine Speichereinrichtung 50 in 1 dargestellt ist. Der Computer 20 kann den entfernten Computer 49 über eine Internetverbindung kontaktieren, welche über einen Gateway (Überleiteinrichtung) 55 (z. B. einen Rooter, eine spezielle Leitung oder eine andere Netzwerkverbindung), eine Modem 54 Verbindung, oder über ein Büro-internes lokales Netz (LAN) 51 oder ein Weitbereichsnetz (WAN) 52 aufgebaut wird. Man wird erkennen, dass die dargestellten Netzverbindungen exemplarisch sind und weitere Einrichtungen zum Aufbau einer Kommunikationsverbindung zwischen den Computern verwendet werden können.
  • Gemäß den Praktiken des Fachmanns auf dem Gebiet der Computerprogrammierung wird die vorliegende Erfindung nachstehend unter Bezugnahme auf Akte und symbolische Darstellungen von Operationen, die von dem Computer 20 ausgeführt werden, beschrieben, soweit es nicht anderweitig angegeben wird. Derartige Akte und Operationen werden manchmal als vom Computer ausgeführt bezeichnet. Man wird erkennen, dass die Akte und symbolisch dargestellten Operationen die Manipulation Daten repräsentierender elektrischer Signale durch die Verarbeitungseinheit 21, was eine sich ergebende Transformation oder Reduzierung der elektrischen Signaldarstellung bewirkt, und die Aufbewahrung von Datenbits an Speicherstellen in dem Speichersystem (einschließlich dem Systemspeicher 22, dem Festplattenlaufwerk 27 und Floppy-Laufwerke 29, und der CD-ROM 31 ), um dadurch den Betrieb des Computersystems zu rekonfigurieren oder anderweitig zu verändern, sowie auch eine weitere Verarbeitung von Signalen einschließen. Die Speicherstellen, in welchen die Datenbits gespeichert werden, sind physikalische Stellen, welche den Datenbits entsprechende spezielle elektrische, magnetische oder optische Eigenschaften besitzen.
  • 2 stellt ein Grundkommunikationsmodell dar. In einem Grundkommunikationsmodell gibt es eine Datenquelle oder Sender 200, einen Kommunikationskanal 204 und einen Datenempfänger 208. Die Quelle kann jemand sein, der an einem Telefon über Telefonleitungen mit einer weiteren Person spricht. Oder die Quelle kann über drahtlose Verfahren an Fernseh- oder Rundfunkempfänger gesendetes Fernsehen oder Rundfunk sein. Oder die Quelle kann eine digitale Codierung bestimmter Daten, wie z. B. Audio, Video oder anderer sein, welche über eine drahtgebundene oder drahtlose Kommunikationsverbindung (z. B. ein LAN oder das Internet) an einen entsprechenden Decoder für die Information gesendet werden.
  • Um das Senden und das Empfangen der Daten zu ermöglichen, wird ein Codierer 202 verwendet, um die Datenquelle für die Übertragung über den Kommunikationskanal 204 vorzubereiten. Der Codierer ist für die Umwandlung der Quellendaten in ein Format verantwortlich, das für den Kanal 204 geeignet ist. Beispielsweise wird im Zusammenhang mit einem üblichen Telefonanruf die Stimme einer Person typischerweise von dem Telefonhörer aus Sprachtönen in analoge Impulse umgewandelt, die als analoge Daten an ein lokales Telefonempfangsgerät gesendet werden. Dieses analoge Signal wird dann in digitale Form umgewandelt, mit zahlreichen weiteren ähnlich codierten Gesprächen welche multiplexiert, und über eine gemeinsame Leitung an den Empfänger gesendet. Somit entspricht in 2 der Kanal 204 zum großen Teil einem gemeinsamen Pfad, welcher von mehreren Sendern und Empfängern gemeinsam genutzt wird. An dem Empfangsende 208 ist ein Decoder 206 zum Umkehren des Codierungsprozesses erforderlich, um dem Empfänger erfassbare Daten zu präsentieren.
  • Um die Datenübertragung zu optimieren, ist der Codierer 202 häufig dafür ausgelegt, Kompressionsverfahren für die Übertragung der Daten zu verwenden. Kompression ist erwünscht, da mit Ausnahme unüblicher Umstände die Kommunikationsbandbreite eingeschränkt ist. Daher müssen für komplexe Datenquellen, wie z. B. Audio- oder Videodaten die Quellendaten komprimiert werden, um deren Übertragung über herkömmliche Übertragungspfade zu ermöglichen.
  • Ein besonders effektives Codierungsverfahren ist als Entropiecodierung bekannt, welches ein "Codebuch" nutzt, das kurze Codeworte enthält, welche hoch wahrscheinlichen Eingabedaten vorab zugewiesen worden sind.
  • Ein effektives Codierverfahren ist Entropiecodierung. Derartige Codierer können aus der Datenkohärenz Kapital schlagen, und sind besonders effektiv, wenn Symbole eine nichtgleichförmige Wahrscheinlichkeitsverteilung besitzen.
  • 3 ist ein Flussdiagramm, das ein bevorzugtes Verfahren zum Erzeugen eines Codebuches darstellt. Insbesondere stellt 3 im Gegensatz zu herkömmlichen Techniken dar, wie ein Codebuch mit Codezuordnungen variabler Längen für Symbolgruppierungen variabler Längen zu erzeugen ist. Wie vorstehend diskutiert, erfordern herkömmliche Techniken Codes fester Länge oder feste Blöcke zur Eingabe. Bevorzugte Implementationen überwinden die Ressourcenanforderungen einer Großdimensionsvektor-Codierung, und die Nichtanwendbarkeit einer Codierung in Worte gleicher Länge, indem ein Entropie-basierender variabler zu variabler Code bereitgestellt wird, wobei Codeworte variabler Länge verwendet werden, um Folgen mit variabler Länge X zu codieren.
  • yi stelle jede Symbolgruppe [xj] für 1 ≤ j ≤ ni mit einer Wahrscheinlichkeit Pi eines Auftritts innerhalb des Datenstroms (2 Kanal 204) dar, und dass jeder Gruppe ein ent sprechendes Codewort mit Li Bits zugeordnet ist. Es wird angenommen, dass jedes xj aus einem festen Alphabet vorbestimmter Größe entnommen wird. Die Aufgabe besteht in der Minimierung der Gleichung
  • Figure 00130001
  • Anstelle der Suche einer allgemeinen Lösung zu dem Problem wird das Problem in zwei unterschiedliche Aufgaben aufgeteilt. Die erste Aufgabe ist die Identifikation einer (suboptimalen) Gruppierung eines Satzes von Eingangssymbolen {xj} über einen nachstehend beschriebenen empirischen Lösungsansatz. Die zweite Aufgabe besteht in der Zuweisung eines Entropiecodes für die gruppierten Symbole {yi}. Man beachte, dass bekannt ist, dass dann, wenn die Quelle nicht kohärent ist (d. h., der Eingang unabhängig oder ohne Speicher ist) jede Gruppierung, welche dieselbe Konfiguration von {Nj} besitzt, denselben Codierungswirkungsgrad erzielen kann. In dieser Situation wird die erste Aufgabe unlogisch.
  • Zur Durchführung der ersten Aufgabe wird eine anfänglich triviale Symbolgruppierung 300 erzeugt, wie z. B. {yj} = {xj}. Diese anfängliche Konfigurierung nimmt an, dass ein exemplarischer Eingabestrom verwendet wird, um die Erzeugung des Codebuchs zu trainieren. Es dürfte sich verstehen, dass ein Computer mit Softwarekonstruktionen, wie z. B. Datenstrukturen, programmiert werden kann, um den Empfang jedes Symbols aus einer Eingabe zu verfolgen. Derartige Datenstrukturen können als eine binäre Baumstruktur, Hash-Tabelle oder irgendeine Kombination der zwei implementiert werden. Weitere äquivalente Strukturen können ebenfalls verwendet werden.
  • Nach der Ermittlung der trivialen Gruppierung wird die Auftrittswahrscheinlichkeit für jedes yi berechnet 302. Eine derartige Wahrscheinlichkeit wird in Bezug auf jede exemplarische Eingabe ermittelt, welche zum Trainieren der Codebucherzeugung verwendet wurde. Da weitere Symbole der Symboldatenstruktur hinzugefügt werden, werden die Wahrscheinlichkeiten dynamisch angepasst.
  • Anschließend wird die höchst wahrscheinliche Gruppierung yi identifiziert 304 (bezeichnet als ymp). Wenn in 306 das Symbol mit der höchsten Wahrscheinlichkeit eine Grup pierung vorheriger Symbole mit niedrigerer Wahrscheinlichkeit ist, wird dann die Gruppierung in ihre Bestandteilsymbole aufgeteilt 308 und die Verarbeitung vom Schritt 302 aus neu gestartet. (Obwohl Symbole kombiniert werden können, behält die Gruppe die Speicherung aller Symbole darin bei, so dass Symbole extrahiert werden können).
  • Wenn das Symbol keine Gruppierung ist, fährt die Verarbeitung dann mit dem Schritt 310 fort, in welchem die wahrscheinlichste Gruppierung dann vorläufig mit Einzelsymbolerweiterungen xj's erweitert wird 310. Bevorzugt wird ymp mit jedem Symbol aus dem X-Alphabet erweitert. Es kann jedoch eine Vorhersageeinrichtung verwendet werden, um nur einen Erweiterungssatz zu erzeugen, welcher nur wahrscheinliche Erweiterungen enthält, wenn das Alphabet sehr lang ist, und wenn bekannt ist, dass viele Erweiterungen unwahrscheinlich sind. Beispielsweise kann eine derartige Vorhersageeinrichtung auf einer semantischen oder kontextuellen Bedeutung basieren, so dass sehr unwahrscheinliche Erweiterungen a priori ignoriert werden können.
  • Die Wahrscheinlichkeit für jede vorläufige Erweiterung von ymP wird dann berechnet 312, und nur die höchst wahrscheinliche Erweiterung wird beibehalten 314. Der Rest der Erweiterungen mit niedrigerer Wahrscheinlichkeit wird als eine kombinierte Gruppierung zusammengefasst 316 und in einem Codebuch mit einem speziellen Symbol gespeichert, um eine kombinierte Gruppierung anzuzeigen. Dieses Ersatzzeichensymbol stellt irgendeine beliebige Symbolgruppierung mit ymp als einen Vorsatz dar, jedoch mit einer Erweiterung (Zusatz), der sich von der wahrscheinlichsten Erweiterung unterscheidet. D. h., wenn ymp+ xmp) die wahrscheinlichste Wurzel und Erweiterung ist, werden die anderen weniger wahrscheinlichen Erweiterungen als ymp , dargestellt. (Man beachte, dass diese Diskussion zur Verdeutlichung eine serielle Verarbeitung von Einzelsymbolerweiterungen annimmt; es wird jedoch eine parallele Ausführung mehrerer Symbolerweiterungen mit in Betracht gezogen).
  • Der Codebuchaufbau wird durch Wiederholen 318 der Schritte 302 bis 316 abgeschlossen, bis alle Erweiterungen durchgeführt worden sind, oder die Anzahl der Codebucheinträge eine vorbestimmte Grenze erreicht. Die Auswirkung einer wiederholten Anwendung der vorstehenden Operationen besteht in der automatischen Sammlung von Symbolgruppierungen mit hoher Korrelation, so dass eine Zwischengruppenkorrelation mi nimiert ist. Dieses minimiert den Zähler von
    Figure 00150001
    während gleichzeitig die Länge des meist wahrscheinlichen yi maximiert wird, so dass der Zähler von L maximiert wird.
  • Es sind verschiedene Techniken für die Speicherung und Manipulierung des Codebuchs verfügbar. Eine Struktur für ein Codebuch ist quer und die Speicherung eines N-fachen (z. B. binären, tertiellen, usw.) Baums, in welcher die Symbolgruppierungen eine Durchquerung der Baumstruktur führen. Blattknoten des Baumes repräsentieren das Ende der erkannten Symbolfolge, wo ein Entropiecode der Folge zugeordnet wird. Knoten können in Software als eine Struktur, Klassendefinition oder eine andere Struktur codiert sein, welche die Speicherung eines Symbols oder von dem Knoten zugeordneter Symbole ermöglicht.
  • Alternativ kann das Codebuch als eine Tabelle strukturiert sein, wobei jede Eingabesymbolfolge in der Auftrittswahrscheinlichkeit sortiert ist, wobei eine hoch wahrscheinliche Eingabe an der Spitze der Tabelle liegt. Für große Tabellen kann die Tabelle abhängig von dem ersten Symbol sortiert sein, d. h. allen Symbolen, welche mit "A" beginnen, werden miteinander gruppiert, gefolgt von einer Reihe, welche mit "B" beginnt, usw. Gemäß dieser Anordnung werden alle Einträge innerhalb der Gruppierung gemäß ihrer Auftrittswahrscheinlichkeit gruppiert. Die Position am Beginn jedes Abschnittes wird markiert/verfolgt, so dass eine Hash-Funktion (z. B. ein Nachschlagen auf der Basis des ersten Symbols) verwendet werden kann, um den korrekten Abschnitt der Codebuchtabelle zu lokalisieren. In diesem Nachschlagetabellen-Lösungsansatz zum Speichern des Codebuchs erfordert, sobald das erste Symbol erfasst ist, das Nachschlagen lediglich eine Suche des entsprechenden Tabellenabschnittes bis ein übereinstimmender Eintrag lokalisiert wird.
  • 4 bis 10 veranschaulichen die Erzeugung eines Codebuchs gemäß 3 für ein Alphabet {A, B, C}. Für diese Diskussion wird das Codebuch bezüglich eines exemplarischen Eingabestroms "A A A B B A A C A B A B B A B" definiert. Wie vorstehend diskutiert, können eine oder mehrere exemplarische Eingaben verwendet werden, um ein Codebuch zu erzeugen, das dann von Codierern und Decodierern zum Verarbeiten beliebiger Eingaben verwendet werden kann. Zur Verdeutlichung ist das Codebuch als eine Baumstruktur dargestellt, obwohl es in der Tat als eine lineare Tabelle, Hash-Tabelle, Datenbank usw. implementiert werden kann. Gemäß Darstellung ist der Baum links/rechts orientiert, wobei die linke Säule (z. B. "A" und "XO") eine obere Reihe der Baumstruktur repräsentiert, und anschließend eingerückte Zeilen die "Kinder" des vorhergehenden Zeilenknotens darstellen (beispielsweise ist in einem Oben/Unten-Baum für 5 der Knoten "A" ein Elternknoten der ersten Zeile für einen Mittelkindknoten "B" der zweiten Zeile).
  • Bei der Erzeugung des Codebuchs besteht die allgemeine Regel in der Aufnahme des wahrscheinlichsten Blattknotens, dessen Erweiterung, Neuberechnung der Wahrscheinlichkeiten, um den wahrscheinlichsten Blattknoten zu ermitteln, und dann in der Kompaktierung der restlichen Geschwisterknoten in einen einzigen Xn Knoten (n = O ... N, jedes Mal, wenn Knoten kombiniert worden sind). Wenn sich herausstellt, dass der wahrscheinlichste Knoten ein Gruppenknoten ist, wird die Gruppe unterteilt, Wahrscheinlichkeiten neu berechnet, und der wahrscheinlichste Elementknoten beibehalten (d. h., die restlichen Gruppenelemente werden neu gruppiert). Die Verarbeitung läuft zyklisch weiter ab, bis ein Stopzustand, wie z. B. ein Codebuch mit vorbestimmter Größe erreicht worden ist.
  • 4 stellt eine anfängliche Gruppierung für den Eingabestrom "A A A B B A A C A B A B B A B" dar. Ein anfängliches Parsing der Eingabe stellt Auftrittswahrscheinlichkeiten von A = 8/15, B = /15 und C = 1/15 dar. Diese anfängliche triviale Gruppierung kann auf der Basis unterschiedlicher Kriterien erzeugt werden, wobei die einfachste darin besteht, dass man ein Knoten erster Ebene für jedes Zeichen in dem Alphabet hat. Wenn jedoch das Eingabealphabet groß ist, kann die triviale Gruppierung auf einen bestimmten Untersatz von Symbolen mit der höchsten Wahrscheinlichkeit beschränkt werden, wobei die restlichen Symbole in eine X Gruppierung kombiniert werden. 4 stellt diese Technik dar, indem mit nur zwei Anfangsgruppen gestartet wird, wobei die Gruppe A 400 die Wahrscheinlichkeit 8/15 hat, und die Gruppe XO 402 mit der Wahrscheinlichkeit 7/15 hat, während XO alle restlichen Symbole mit niedriger Wahrscheinlichkeit in dem Alphabet, wie z. B. B und C darstellt.
  • Nach der Erzeugung einer anfänglichen trivialen Gruppierung wird der Blattknoten mit der höchsten Wahrscheinlichkeit zur Erweiterung ausgewählt (siehe auch Diskussion von 3 bezüglich der Verarbeitungsfolge). Somit wird gemäß Darstellung in 5 die Gruppe A 400 vorläufig durch jeden Buchstaben in dem Alphabet erweitert (oder man kann die Erweiterung auf einen bestimmten Untersatz davon wie für das Erzeugen der anfänglichen Gruppierung beschrieben, beschränken). Wahrscheinlichkeiten werden dann bezüglich des Eingabestroms "A A A B B A A C A B A B B A B" neu berechnet, um Werte für die vorläufigen Erweiterungen A 406, B 408 und C 410 zu ermitteln. Das Ergebnis sind neun Parsing-Gruppen, wobei "A A" 2/9 mal auftritt, "A B" 4/9 mal auftritt und "A C" 0/9 mal auftritt. Somit wird die wahrscheinlichste Erweiterung "A B" beibehalten, und die anderen Erweiterungen in X1 = A, C zusammengefasst. Man beachte, dass, obwohl diese Diskussion wiederholt alle Wahrscheinlichkeiten neu berechnet, ein effizienter Ansatz darin besteht, Wahrscheinlichkeiten und Symbolzuordnungen für jeden Knoten innerhalb des Knotens beizubehalten und Information nur nach Bedarf zu berechnen.
  • 6 stellt das Zusammenfassen in X1 412 für 5 dar. Die Verarbeitung wiederholt sich mit der Identifikation des Knotens mit der höchsten Wahrscheinlichkeit, z. B. des Knotens B 408 mit der Wahrscheinlichkeit 4/9.
  • Gemäß Darstellung in 7 wird dieser Knoten 408 vorläufig mit Symbolen A 414, B 416, C 418 erweitert und wie vorstehend diskutiert die vorläufige Gruppierung mit der höchsten Wahrscheinlichkeit beibehalten. Nach der Neuberechnung der Wahrscheinlichkeiten, ist das Ergebnis acht Parsing-Gruppen, in welchen die Symbolfolge "A B A" 414 einmal auftritt, "A B B" 416 einmal auftritt und "A B C" 418 überhaupt nicht auftritt. Da die vorläufigen Erweiterungen A 414 und B 416 dieselbe Auftrittswahrscheinlichkeit besitzen, muss eine Regel definiert werden, welches Symbol zur Beibehaltung gewählt wird. Für diese Diskussion wird, sobald gleiche Wahrscheinlichkeiten vorliegen, der Knoten der höchsten Zeile (d. h. der Kindknoten am weitesten links in einem Oben/Unten-Baum) beibehalten. In gleicher Weise wird, wenn ein Konflikt zwischen Baumreihen vorliegt, der Knoten der am weitesten links liegenden Reihe (d. h. der Knoten am nächsten zu der Wurzel eines Oben/Unten-Baums) beibehalten.
  • Man beachte, dass das vorstehend beschriebene Parsing der exemplarischen Eingabe nicht die Aufeinanderfolge von zwei Symbolen "A B" der Eingabe berücksichtigt. Gemäß Darstellung in 7 gibt es kein "A B" entsprechendes Blatt, da diese Konfiguration in "A B A", "A B B" und "A B C" erweitert wurde. Zur Kompensation können Codebucheinträge erzeugt werden, um solche Enden von Eingabefolgen zu berücksichtigen, oder die Eingabe ohne Eintrag kann mit einem speziellen Zeichen verlassen und in den codierten Ausgabestrom eingefügt werden. Beispielsweise kann ein spezielles Symbol verwendet werden, um das Ende einer Eingabe anzuzeigen, und dadurch implizieren, wie aufeinanderfolgende Buchstaben bei der Decodierung zu handhaben sind.
  • Somit wird gemäß Darstellung in 8 der Knoten A 414 beibehalten und die Knoten B 416 und C 418 werden in den Knoten X2 = B, C 420 kombiniert, welcher eine kombinierte Wahrscheinlichkeit von 1/8 + 0/8 besitzt. Nun besteht der nächste Schritt in der Erweiterung des Knotens mit der derzeit höchsten Wahrscheinlichkeit in Bezug auf den Eingabestrom. Gemäß Darstellung besitzen die Knoten X1 = A, C 412 und XO = B, C 402 dieselbe Auftrittswahrscheinlichkeit (3/8). Gemäß vorstehender Diskussion wird der höchste Knoten in dem Baum (XO 402) erweitert. (Obwohl es nur für die Konsistenz erforderlich ist, wird es bevorzugt, Knoten höherer Ebene zu erweitern, da dieses den Codierungswirkungsgrad vergrößern kann, indem die Anzahl langer Codewörter vergrößert wird).
  • Jedoch ist XO 402 ein kombinierter Knoten, so dass er aufgeteilt statt erweitert werden muss. 9 veranschaulicht das Ergebnis der Aufteilung des Knotens XO in seine Bestandsymbole B 422 und C 424. Eine Neuberechnung der Wahrscheinlichkeiten zeigt, dass Symbolfolgen "A B A" mit 1/8 auftreten, "A B X2" mit 1/8 auftreten, "A X1" mit 3/8 auftreten, "B" 422 mit 2/8 auftritt und "C" mit 1/8 auftritt. Da dieses ein Aufteilungsvorgang ist, wird der Teilungsknoten mit der höchsten Wahrscheinlichkeit (z. B. der Knoten B 422) beibehalten, und der bzw. die restlichen Knoten werden wieder in XO = C 424 rückkombiniert.
  • 10 stellt das Ergebnis der Beibehaltung des Knotens B 422 mit der hohen Wahrscheinlichkeit dar. Man beachte, dass die Gruppierung XO nun nur ein einziges Symbol "C" repräsentiert. Nach einer Betrachtung der Wahrscheinlichkeiten muss der Knoten mit der höchsten Wahrscheinlichkeit identifiziert und aufgeteilt oder erweitert werden. Gemäß Darstellung tritt die Symbolfolge "A B A" mit 1/8, "A B X2" mit 1/8, "A X1" mit 3/8, "B" mit U8 und "XO" mit 1/8 auf. Daher muss der Knoten X1 412 als ein kombinierter Knoten geteilt werden.
  • Die Teilung setzt sich wie vorstehend diskutiert fort und die Verarbeitung des Codebuchs verläuft zyklisch gemäß Darstellung in 3, wobei Knoten mit höchster Wahrscheinlichkeit erweitert oder geteilt werden bis ein Stopzustand erreicht wird (d. h., das Codebuch eine maximale Größe erreicht). Man beachte, dass für die Konfiguration von 10 die mittleren Bits pro Eingangssymbol, unter Annahme von Teilbits unter idealer Huffmann-Codierung der Blattknoten angenähert 0,8 Bitpro Symbol sind (variiert abhängig davon, wie die Folgeeingabe "A B" gehandhabt wird). Dieses stellt eine signifikante (etwa 10%) Einsparung gegenüber früheren verlustlosen Kompressionstechniken dar wie z. B. eine ideale Skalar-Huffmann-Codierung dar.

Claims (21)

  1. Verfahren zum Aufbauen eines Codebuchs für Symbole, die aus einem Alphabet entnommen werden, wobei das Verfahren gekennzeichnet ist durch: Empfangen einer Reihe von Symbolen über eine Eingabe; Speichern mehrerer Symbolgruppierungen variabler Größe in einer Datenstruktur, wobei jede Symbolgruppierung durch ein oder mehr aneinandergrenzende Symbole definiert wird und wobei Parsing der empfangenen Reihe von Symbolen entsprechend den mehreren Symbolgruppierungen Wahrscheinlichkeiten des Auftretens für die mehreren Symbolgruppierungen über die gesamte empfangene Reihe ergibt und sich das Parsing der empfangenen Reihe von Symbolen mehrere Male wiederholt und sich wenigstens eine der mehreren Symbolgruppierungen nach jedem der mehreren Parsingvorgänge auf Basis der Wahrscheinlichkeiten des Auftretens über die gesamte empfangene Reihe ändert; Zuweisen eines Codes variabler Länge für jede der mehreren Symbolgruppierungen auf Basis einer Wahrscheinlichkeit des Auftretens dieser Symbolgruppierung in der empfangenen Reihe; und Ausgeben eines Codebuchs, das die mehreren Symbolgruppierungen mit entsprechenden zugewiesenen Codes für anschließende Kompression von variabel zu variabel verbindet.
  2. Verfahren nach Anspruch 1, wobei das Speichern umfasst: Identifizieren (304) einer Symbolgruppierung der mehreren Symbolgruppierungen mit hoher Wahrscheinlichkeit; Erweitern (310) der Symbolgruppierung mit hoher Wahrscheinlichkeit zu mehreren vorläufigen Gruppierungen, wobei jede der mehreren vorläufigen Gruppierungen die Symbolgruppierung mit hoher Wahrscheinlichkeit und ein zusätzliches Symbol aus dem Alphabet umfasst; Identifizieren (314) einer vorläufigen Gruppierung mit hoher Wahrscheinlichkeit; Kombinieren (316) der mehreren vorläufigen Gruppierungen bis auf die vorläufige Gruppierung mit hoher Wahrscheinlichkeit zu einer kombinierten Gruppierung; Speichern der vorläufigen Gruppierung mit hoher Wahrscheinlichkeit in der Datenstruktur; und Speichern der kombinierten Gruppierung in der Datenstruktur.
  3. Verfahren nach Anspruch 2, das des Weiteren das Wiederholen der Vorgänge von Anspruch 2 umfasst, bis eine vorgegebene Anzahl von Codebuch-Einträgen erreicht ist.
  4. Verfahren nach Anspruch 2, wobei die vorläufige Gruppierung mit hoher Wahrscheinlichkeit durch die Symbolgruppierung mit hoher Wahrscheinlichkeit gebildet wird, auf die eine wahrscheinlichste Erweiterung folgt, und wobei die kombinierte Gruppierung durch die Symbolgruppierung mit hoher Wahrscheinlichkeit gebildet wird, auf die eine spezielle Erweiterung folgt, die jeder beliebigen Erweiterung entspricht, die sich von der wahrscheinlichsten Erweiterung unterscheidet.
  5. Verfahren nach Anspruch 1, wobei das Speichern umfasst: Identifizieren (304) einer Symbolgruppierung der mehreren Symbolgruppierungen mit hoher Wahrscheinlichkeit; und wenn die Symbolgruppierung mit hoher Wahrscheinlichkeit eine zuvor kombinierte Gruppierung (306) ist, Aufteilen (308) der zuvor kombinierten Gruppierung in mehrere Einzel-Symbolgruppierungen, Identifizieren einer Einzel-Symbolgruppierung der mehreren Einzel-Symbolgruppierung mit hoher Wahrscheinlichkeit und erneutes Kombinieren der mehreren Einzel-Symbolgruppierungen bis auf die Einzel-Symbolgruppierung mit hoher Wahrscheinlichkeit.
  6. Verfahren nach einem der Ansprüche 1–5, wobei die empfangenen Symbole aus einer exemplarischen Eingabe stammen.
  7. Verfahren nach einem der Ansprüche 1–5, wobei die Reihe von Symbolen Streaming-Daten umfasst.
  8. Verfahren nach Anspruch 7, wobei die Streaming-Daten aus einem nichtflüchtigen Speichermedium abgerufen werden.
  9. Verfahren nach einem der Ansprüche 1–8, wobei die Datenstruktur als eine Tabelle mit Einträgen zum Speichern der mehreren Symbolgruppierungen konfiguriert ist.
  10. Verfahren nach einem der Ansprüche 1–8, wobei die Datenstruktur als ein Baum mit Knoten (400424) konfiguriert ist, der Symbole enthält, und wobei jede der mehreren Symbolgruppierungen durch einen transversalen Weg durch den Baum identifiziert wird.
  11. Verfahren nach einem der Ansprüche 1 bis 10, wobei durch das wiederholte Parsing und Ändern die durchschnittliche Größe der mehreren Symbolgruppierungen zunimmt.
  12. Verfahren nach einem der Ansprüche 1 bis 10, wobei für eine vorgegebene Anzahl von Symbolgruppierungen durch das wiederholte Parsing und Ändern die durchschnittliche Größe der mehreren Symbolgruppierungen auf ein Maximum zunimmt.
  13. Verfahren nach einem der Ansprüche 1 bis 12, wobei eine oder mehrere Symbolgruppierungen, die nicht in der Datenstruktur dargestellt sind, mit einem Escape-Eintrag kodiert sind.
  14. Verfahren nach Anspruch 1, wobei das Speichern umfasst: Ausbilden einer anfänglichen Sammlung mehrerer kürzerer Gruppierungen; Auswählen einer ersten kürzeren Gruppierung der mehreren kürzeren Gruppierungen; Definieren mehrerer längerer Gruppierungen, indem die erste kürzere Gruppierung mit Erweiterungssymbolen erweitert wird; Berechnen einer Wahrscheinlichkeit des Empfangens jeder der mehreren längeren Gruppierungen, um Gruppierungen mit hoher Wahrscheinlichkeit und mit niedriger Wahrscheinlichkeit zu identifizieren; und Kombinieren jeder der Gruppierungen mit geringer Wahrscheinlichkeit zu einer kombinierten Gruppierung, die die erste kürzere Gruppierung und ein Erweiterungssymbol umfasst, das die Erweiterungssymbole bis auf ein Erweiterungssymbol von Gruppierungen mit hoher Wahrscheinlichkeit darstellt.
  15. Verfahren nach Anspruch 1, wobei die Datenstruktur hierarchisch ist und wobei das Speichern umfasst: Erzeugen einer neuen Teilebene einer vorangehenden Hierarchieebene in der Datenstruktur; Auswählen einer Eltern-Gruppierung aus der vorangehenden Hierarchieebene; Definieren eines Erweiterungssatzes von Symbolen mit mehreren Elementen, wobei jedes der mehreren Elemente durch wenigstens ein Symbol aus dem Alphabet definiert wird; Definieren einer Teilgruppierung der Eltern-Gruppierung für jedes Element des Erweiterungssatzes durch Erweitern der Eltern-Gruppierung mit diesem Element; Berechnen einer Wahrscheinlichkeit des Empfangens dieser Teilgruppierung für jede definierte Teilgruppierung; Identifizieren wenigstens einer definierten Teilgruppierung mit hoher Wahrscheinlichkeit, die die Eltern-Gruppierung und ein Element des Erweiterungssatzes mit hoher Wahrscheinlichkeit umfasst, wobei alle anderen definierten Teilgruppierungen niedrige Wahrscheinlichkeit haben; und Kombinieren jeder der definierten Teilgruppierungen mit niedriger Wahrscheinlichkeit zu einer kombinierten Gruppierung, die die Eltern-Gruppierung und ein spezielles Symbol umfasst, das jedes beliebiges Element des Erweiterungssatzes außer dem Element mit hoher Wahrscheinlichkeit darstellt.
  16. Verfahren nach Anspruch 1, wobei das Parsing der empfangenen Reihe von Symbolen entsprechend den mehreren Symbolgruppierungen umfasst: Ausbilden einer anfänglichen Sammlung mehrerer kürzerer Symbolgruppierungen; Auswählen einer ersten kürzeren Symbolgruppierung der mehreren kurzen Symbolgruppierungen; Definieren eines Erweiterungssatzes von Symbolen mit mehreren Elementen, wobei jedes der mehreren Elemente durch wenigstens ein Symbol aus dem Alphabet definiert wird; Definieren einer längeren Symbolgruppierung für jedes Element des Erweiterungssatzes, indem die erste kürzere Symbolgruppierung mit diesem Element erweitert wird; Berechnen einer Wahrscheinlichkeit des Empfanges der längeren Symbolgruppierung für jede definierte längere Symbolgruppierung; Identifizieren wenigstens einer definierten längeren Symbolgruppierung mit hoher Wahrscheinlichkeit, die die erste kürzere Symbolgruppierung und ein Element des Erweiterungssatzes mit hoher Wahrscheinlichkeit umfasst, wobei alle anderen definierten längeren Symbolgruppierungen niedrige Wahrscheinlichkeit haben; und Kombinieren jeder der definierten längeren Symbolgruppierungen mit niedriger Wahrscheinlichkeit zu einer kombinierten Symbolgruppierung, die die erste kürzere Symbolgruppierung und ein spezielles Symbol umfasst, das jedes beliebige Element des Erweiterungssatzes bis auf das Element mit hoher Wahrscheinlichkeit darstellt.
  17. Verfahren nach Anspruch 16, das des Weiteren umfasst: für jede einer oder mehrerer Iterationen bis zum Erreichen einer vorgegebenen Symbolgruppierungszahl Wiederholen der Vorgänge des Auswählens, des Definierens einer längeren Symbolgruppierung, des Berechnens, des Identifizierens und des Kombinierens von Anspruch 16 unter Verwendung einer nachfolgenden Symbolgruppierung mehrerer aktueller Symbolgruppierungen für diese Iteration anstelle der ersten kürzeren Symbolgruppierung der mehreren kürzeren Symbolgruppierungen.
  18. Computerlesbares Medium, auf dem durch Computer ausführbare Befehle gespeichert sind, die einen Computer veranlassen, das Verfahren nach einem der Ansprüche 1 bis 17 durchzuführen.
  19. System zum Aufbauen eines Codebuchs für Symbole, die aus einem Alphabet entnommen werden, wobei das System gekennzeichnet ist durch: einen Speicher, der so konfiguriert ist, dass er eine Datenstruktur zum Speichern mehrerer Symbolgruppierungen variabler Größe enthält, wobei jede Symbolgruppierung durch ein oder mehrere aneinandergrenzende Symbole definiert wird; durch Computer ausführbare Befehle zum Parsen einer Reihe mehrerer Symbole entsprechend den mehreren Symbolgruppierungen, wobei das Parsing Wahrscheinlichkeiten des Auftretens der mehreren Symbolgruppierung über die gesamte Reihe ergibt und sich das Parsing der Reihe von Symbolgruppierungen mehrere Male wiederholt und sich wenigstens eine der mehreren Symbolgruppierungen nach jedem der mehreren Parsingvorgänge auf Basis der Wahrscheinlichkeiten des Auftretens über die gesamte Reihe ändert; durch Computer ausführbare Befehle zum Zuweisen eines Codes variabler Länge für jede der mehreren Symbolgruppierungen auf Basis einer Wahrscheinlichkeit des Auftretens dieser Symbolgruppierung in der empfangenen Reihe; und durch Computer ausführbare Befehle zum Ausgeben eines Codebuchs, das die mehreren Symbolgruppierung variabler Größe mit den zugewiesenen Codes variabler Länge für anschließende Kompression von variabel zu variabel verbindet.
  20. System nach Anspruch 19, das des Weiteren durch Computer ausführbare Befehle zum Aufteilen einer kombinierten Gruppierung in Einzelsymbole umfasst.
  21. System nach Anspruch 19 oder 20, das des Weiteren umfasst: durch Computer ausführbare Befehle zum Identifizieren einer Symbolgruppierung der mehreren Symbolgruppierungen mit hoher Wahrscheinlichkeit; durch Computer ausführbare Befehle zum Erweitern der Symbolgruppierung mit hoher Wahrscheinlichkeit zu mehreren vorläufigen Gruppierungen, wobei jede der mehreren vorläufigen Gruppierungen die Symbolgruppierung mit hoher Wahrscheinlichkeit und ein anderes Symbol aus dem Alphabet umfasst; durch Computer ausführbare Befehle zum Identifizieren einer vorläufigen Gruppierung mit hoher Wahrscheinlichkeit; durch Computer ausführbare Befehle zum Kombinieren der mehreren vorläufigen Gruppierungen bis auf die vorläufige Gruppierung mit hoher Wahrscheinlichkeit zu einer kombinierten Gruppierung; durch Computer ausführbare Befehle zum Speichern der vorläufigen Gruppierung mit hoher Wahrscheinlichkeit in der Datenstruktur; und durch Computer ausführbare Befehle zum Speichern der kombinierten Gruppierung in der Datenstruktur.
DE69916661T 1998-12-14 1999-12-07 Codebuchkonstruktion für entropiekodierung von variabler zu variabler länge Expired - Lifetime DE69916661T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US211532 1998-12-14
US09/211,532 US6404931B1 (en) 1998-12-14 1998-12-14 Code book construction for variable to variable length entropy encoding
PCT/US1999/029003 WO2000036751A1 (en) 1998-12-14 1999-12-07 Code book construction for variable to variable length entropy encoding

Publications (2)

Publication Number Publication Date
DE69916661D1 DE69916661D1 (de) 2004-05-27
DE69916661T2 true DE69916661T2 (de) 2004-08-19

Family

ID=22787319

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69916661T Expired - Lifetime DE69916661T2 (de) 1998-12-14 1999-12-07 Codebuchkonstruktion für entropiekodierung von variabler zu variabler länge

Country Status (6)

Country Link
US (1) US6404931B1 (de)
EP (1) EP1147612B1 (de)
JP (1) JP4559631B2 (de)
AT (1) ATE265106T1 (de)
DE (1) DE69916661T2 (de)
WO (1) WO2000036751A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102010009263A1 (de) * 2010-02-25 2011-08-25 Knorr-Bremse Systeme für Nutzfahrzeuge GmbH, 80809 Verfahren zur Datenübertragung zu einem elektronischen Steuergerät

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6624761B2 (en) * 1998-12-11 2003-09-23 Realtime Data, Llc Content independent data compression method and system
US6601104B1 (en) 1999-03-11 2003-07-29 Realtime Data Llc System and methods for accelerated data storage and retrieval
US6604158B1 (en) 1999-03-11 2003-08-05 Realtime Data, Llc System and methods for accelerated data storage and retrieval
US20030191876A1 (en) * 2000-02-03 2003-10-09 Fallon James J. Data storewidth accelerator
US6748457B2 (en) 2000-02-03 2004-06-08 Realtime Data, Llc Data storewidth accelerator
GB2367459A (en) * 2000-09-28 2002-04-03 Roke Manor Research Method of compressing data packets
US9143546B2 (en) 2000-10-03 2015-09-22 Realtime Data Llc System and method for data feed acceleration and encryption
US7417568B2 (en) * 2000-10-03 2008-08-26 Realtime Data Llc System and method for data feed acceleration and encryption
US8692695B2 (en) 2000-10-03 2014-04-08 Realtime Data, Llc Methods for encoding and decoding data
US6735339B1 (en) * 2000-10-27 2004-05-11 Dolby Laboratories Licensing Corporation Multi-stage encoding of signal components that are classified according to component value
US7386046B2 (en) 2001-02-13 2008-06-10 Realtime Data Llc Bandwidth sensitive data compression and decompression
US7016547B1 (en) 2002-06-28 2006-03-21 Microsoft Corporation Adaptive entropy encoding/decoding for screen capture content
US7433824B2 (en) * 2002-09-04 2008-10-07 Microsoft Corporation Entropy coding by adapting coding between level and run-length/level modes
ES2297083T3 (es) * 2002-09-04 2008-05-01 Microsoft Corporation Codificacion entropica por adaptacion de la codificacion entre modos por longitud de ejecucion y por nivel.
US7313817B2 (en) * 2003-06-17 2007-12-25 Lockheed Martin Corporation Data transmission system utilizing efficient complexity estimation of the kolmogorov complexity for data transmission
US7688894B2 (en) * 2003-09-07 2010-03-30 Microsoft Corporation Scan patterns for interlaced video content
US7724827B2 (en) * 2003-09-07 2010-05-25 Microsoft Corporation Multi-layer run level encoding and decoding
US7782954B2 (en) * 2003-09-07 2010-08-24 Microsoft Corporation Scan patterns for progressive video content
US7941311B2 (en) * 2003-10-22 2011-05-10 Microsoft Corporation System and method for linguistic collation
US7599840B2 (en) * 2005-07-15 2009-10-06 Microsoft Corporation Selectively using multiple entropy models in adaptive coding and decoding
US7693709B2 (en) 2005-07-15 2010-04-06 Microsoft Corporation Reordering coefficients for waveform coding or decoding
US7684981B2 (en) * 2005-07-15 2010-03-23 Microsoft Corporation Prediction of spectral coefficients in waveform coding and decoding
US7565018B2 (en) * 2005-08-12 2009-07-21 Microsoft Corporation Adaptive coding and decoding of wide-range coefficients
US8599925B2 (en) * 2005-08-12 2013-12-03 Microsoft Corporation Efficient coding and decoding of transform blocks
US7933337B2 (en) * 2005-08-12 2011-04-26 Microsoft Corporation Prediction of transform coefficients for image compression
US8184710B2 (en) * 2007-02-21 2012-05-22 Microsoft Corporation Adaptive truncation of transform coefficient data in a transform-based digital media codec
US7774205B2 (en) * 2007-06-15 2010-08-10 Microsoft Corporation Coding of sparse digital media spectral data
US8179974B2 (en) 2008-05-02 2012-05-15 Microsoft Corporation Multi-level representation of reordered transform coefficients
US8406307B2 (en) 2008-08-22 2013-03-26 Microsoft Corporation Entropy coding/decoding of hierarchically organized data
KR20110011357A (ko) * 2009-07-28 2011-02-08 삼성전자주식회사 비트의 순서를 변경한 데이터의 부호화, 복호화 방법 및 장치
DE102012211031B3 (de) 2012-06-27 2013-11-28 Siemens Aktiengesellschaft Verfahren zur Codierung eines Datenstroms
US10044405B2 (en) * 2015-11-06 2018-08-07 Cable Television Laboratories, Inc Signal power reduction systems and methods
SE542507C2 (en) * 2016-03-31 2020-05-26 Zeropoint Tech Ab Variable-sized symbol entropy-based data compression
US9673836B1 (en) * 2016-09-23 2017-06-06 International Business Machines Corporation System level testing of entropy encoding

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4122440A (en) 1977-03-04 1978-10-24 International Business Machines Corporation Method and means for arithmetic string coding
US4464650A (en) 1981-08-10 1984-08-07 Sperry Corporation Apparatus and method for compressing data signals and restoring the compressed data signals
US4558302A (en) * 1983-06-20 1985-12-10 Sperry Corporation High speed data compression and decompression apparatus and method
JPS61107818A (ja) 1984-10-30 1986-05-26 Nec Corp エントロピ−符号化方式とその装置
JPH0821863B2 (ja) 1985-04-13 1996-03-04 キヤノン株式会社 データ処理方法
JPS62247626A (ja) 1986-04-19 1987-10-28 Fuji Photo Film Co Ltd 符号化方法
US4862167A (en) 1987-02-24 1989-08-29 Hayes Microcomputer Products, Inc. Adaptive data compression method and apparatus
US5003307A (en) 1989-01-13 1991-03-26 Stac, Inc. Data compression apparatus with shift register search means
US5532694A (en) 1989-01-13 1996-07-02 Stac Electronics, Inc. Data compression apparatus and method using matching string searching and Huffman encoding
US5479562A (en) * 1989-01-27 1995-12-26 Dolby Laboratories Licensing Corporation Method and apparatus for encoding and decoding audio information
DE3912605B4 (de) 1989-04-17 2008-09-04 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Digitales Codierverfahren
US5254990A (en) 1990-02-26 1993-10-19 Fujitsu Limited Method and apparatus for compression and decompression of data
US5049881A (en) 1990-06-18 1991-09-17 Intersecting Concepts, Inc. Apparatus and method for very high data rate-compression incorporating lossless data compression and expansion utilizing a hashing technique
US5227789A (en) 1991-09-30 1993-07-13 Eastman Kodak Company Modified huffman encode/decode system with simplified decoding for imaging systems
JP3134424B2 (ja) 1991-10-31 2001-02-13 ソニー株式会社 可変長符号化方法及び装置
US5229768A (en) 1992-01-29 1993-07-20 Traveling Software, Inc. Adaptive data compression system
US5227788A (en) 1992-03-02 1993-07-13 At&T Bell Laboratories Method and apparatus for two-component signal compression
US5406279A (en) 1992-09-02 1995-04-11 Cirrus Logic, Inc. General purpose, hash-based technique for single-pass lossless data compression
US5442350A (en) 1992-10-29 1995-08-15 International Business Machines Corporation Method and means providing static dictionary structures for compressing character data and expanding compressed data
US5400075A (en) 1993-01-13 1995-03-21 Thomson Consumer Electronics, Inc. Adaptive variable length encoder/decoder
JP2505980B2 (ja) 1993-04-16 1996-06-12 インターナショナル・ビジネス・マシーンズ・コーポレイション 静的辞書作成方法及びコンピュ―タ実行システム
JP3210996B2 (ja) 1993-07-30 2001-09-25 三菱電機株式会社 高能率符号化装置及び高能率復号化装置
US5550541A (en) 1994-04-01 1996-08-27 Dolby Laboratories Licensing Corporation Compact source coding tables for encoder/decoder system
JP3278297B2 (ja) 1994-07-20 2002-04-30 富士通株式会社 データ圧縮方法及びデータ復元方法並びにデータ圧縮装置及びデータ復元装置
JPH08116263A (ja) * 1994-10-17 1996-05-07 Fujitsu Ltd データ処理装置及びデータ処理方法
JPH08167852A (ja) * 1994-12-13 1996-06-25 Fujitsu Ltd データ圧縮方法及び装置
JPH08205169A (ja) * 1995-01-20 1996-08-09 Matsushita Electric Ind Co Ltd 動画像符号化装置及び復号装置
DE69619002T2 (de) * 1995-03-10 2002-11-21 Toshiba Kawasaki Kk Bildkodierungs-/-dekodierungsvorrichtung
US5884269A (en) 1995-04-17 1999-03-16 Merging Technologies Lossless compression/decompression of digital audio data
JP3181809B2 (ja) 1995-05-31 2001-07-03 シャープ株式会社 データ圧縮のための圧縮コードの復元回路
US5825830A (en) 1995-08-17 1998-10-20 Kopf; David A. Method and apparatus for the compression of audio, video or other data
US5819215A (en) 1995-10-13 1998-10-06 Dobson; Kurt Method and apparatus for wavelet based data compression having adaptive bit rate control for compression of digital audio or other sensory data
US5933104A (en) 1995-11-22 1999-08-03 Microsoft Corporation Method and system for compression and decompression using variable-sized offset and length fields
US5831559A (en) 1996-01-24 1998-11-03 Intel Corporation Encoding/decoding video signals using multiple run-val mapping tables
JP3566441B2 (ja) 1996-01-30 2004-09-15 シャープ株式会社 テキスト圧縮用辞書作成装置
JP3277792B2 (ja) 1996-01-31 2002-04-22 株式会社日立製作所 データ圧縮方法および装置
JP3267142B2 (ja) 1996-02-23 2002-03-18 ケイディーディーアイ株式会社 可変長符号生成装置
US5790706A (en) 1996-07-03 1998-08-04 Motorola, Inc. Method and apparatus for scanning of transform coefficients
DE19637522A1 (de) 1996-09-13 1998-03-19 Bosch Gmbh Robert Verfahren zur Reduzierung von Daten in Videosignalen
US5959560A (en) 1997-02-07 1999-09-28 Said; Amir Data compression via alphabet partitioning and group partitioning
US5999949A (en) 1997-03-14 1999-12-07 Crandall; Gary E. Text file compression system utilizing word terminators
US5946043A (en) 1997-12-31 1999-08-31 Microsoft Corporation Video coding using adaptive coding of block parameters for coded/uncoded blocks
US6100824A (en) 1998-04-06 2000-08-08 National Dispatch Center, Inc. System and method for data compression
US6029126A (en) 1998-06-30 2000-02-22 Microsoft Corporation Scalable audio coder and decoder

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102010009263A1 (de) * 2010-02-25 2011-08-25 Knorr-Bremse Systeme für Nutzfahrzeuge GmbH, 80809 Verfahren zur Datenübertragung zu einem elektronischen Steuergerät
WO2011104268A2 (de) 2010-02-25 2011-09-01 Knorr-Bremse Systeme für Nutzfahrzeuge GmbH Verfahren zur datenübertragung zu einem elektronischen steuergerät
DE102010009263B4 (de) * 2010-02-25 2012-04-12 Knorr-Bremse Systeme für Nutzfahrzeuge GmbH Verfahren zur Datenübertragung zu einem elektronischen Steuergerät
US8760326B2 (en) 2010-02-25 2014-06-24 Knorr-Bremse Systeme Fuer Nutzfahrzeuge Gmbh Method for data transmission to an electronic control unit

Also Published As

Publication number Publication date
DE69916661D1 (de) 2004-05-27
WO2000036751A1 (en) 2000-06-22
EP1147612B1 (de) 2004-04-21
EP1147612A1 (de) 2001-10-24
JP4559631B2 (ja) 2010-10-13
US6404931B1 (en) 2002-06-11
JP2002533005A (ja) 2002-10-02
ATE265106T1 (de) 2004-05-15

Similar Documents

Publication Publication Date Title
DE69916661T2 (de) Codebuchkonstruktion für entropiekodierung von variabler zu variabler länge
DE69918172T2 (de) Entropiekodierung von variabler zu variabler länge
DE10301362B4 (de) Blockdatenkompressionssystem, bestehend aus einer Kompressionseinrichtung und einer Dekompressionseinrichtung, und Verfahren zur schnellen Blockdatenkompression mit Multi-Byte-Suche
DE69532775T2 (de) Verfahren zur Datenkomprimierung und -Dekomprimierung und zugehöriges Datenkomprimierungs- und Dekomprimierungsgerät
DE10196890B4 (de) Verfahren zum Ausführen einer Huffman-Decodierung
DE69935811T3 (de) Frequenzbereichsaudiodekodierung mit Entropie-code Moduswechsel
DE3912605B4 (de) Digitales Codierverfahren
DE60127695T2 (de) Verfahren zur komprimierung von datenpaketen
EP1550219B1 (de) Verfahren und anordnung zur arithmetischen enkodierung und dekodierung von binären zuständen sowie ein entsprechendes computerprogramm und ein entsprechendes computerlesbares speichermedium
DE19742417A1 (de) Vorrichtung und Verfahren zur Durchführung von M-fachem Maschinenendzustands-Entropiekodieren bzw. Entropiekodieren mit einer Maschine mit finitem Zustand
DE4340591A1 (de) Datenkompressionsverfahren unter Verwendung kleiner Wörterbücher zur Anwendung auf Netzwerkpakete
DE2513862A1 (de) Vorrichtung zum dekodieren
DE60015755T2 (de) Verlustfreie adaptive codierung von daten eines endlichen alphabets
US6049633A (en) Adaptive arithmetic codec method and apparatus
DE60311886T2 (de) Verfahren und vorrichtung zum sortieren zyklischer daten in lexikographischer reihenfolge
CN114429200A (zh) 规范化哈夫曼编解码方法及神经网络计算芯片
Kieffer et al. Survey of grammar-based data structure compression
DE19653133C2 (de) System und Verfahren zur pre-entropischen Codierung
DE19803845C2 (de) Verfahren und Einrichtung zur Übertragung einer durch digitale Daten repräsentierten Nachricht
Ramanathan Unishox: A hybrid encoder for short unicode strings
DE102006047465A1 (de) Verfahren und Vorrichtung zur Kompression und Dekompression digitaler Daten auf elektronischem Wege unter Verwendung einer Kontextgrammatik
Gunther T-Complexity and T-Information Theory--an Executive Summary
Haghighi et al. Optimizing run-length algorithm using octonary repetition tree
EP0525349B1 (de) Einrichtung zur redunanzvermindernden Codierung
DE102006028469B4 (de) Adaptives Quantisiertes Codierungsverfahren

Legal Events

Date Code Title Description
8364 No opposition during term of opposition