DE3732045C2 - - Google Patents
Info
- Publication number
- DE3732045C2 DE3732045C2 DE19873732045 DE3732045A DE3732045C2 DE 3732045 C2 DE3732045 C2 DE 3732045C2 DE 19873732045 DE19873732045 DE 19873732045 DE 3732045 A DE3732045 A DE 3732045A DE 3732045 C2 DE3732045 C2 DE 3732045C2
- Authority
- DE
- Germany
- Prior art keywords
- characters
- data
- binary
- code words
- predicted
- 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
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/004—Predictors, e.g. intraframe, interframe coding
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Description
Die Erfindung bezieht sich auf ein Verfahren zum Komprimieren
und Dekomprimieren von Daten gemäß dem Oberbegriff des Patentanspruchs
1. Insbesondere bezieht sie sich auf ein Verfahren
zum Komprimieren und Dekomprimieren von Daten, die in einem
Speicher gespeichert werden oder die über einen Datenübertragungskanal
übertragen werden.
Es ist allgemein bekannt, daß bei einer Speicherung oder einer
Übertragung von Daten die Speicherkapazität eines vorgegebenen
Speichermediums bzw. die Übertragungskapazität eines vorgegebenen
Datenübertragungskanals praktisch begrenzt ist. Wenn ein
Datenverarbeitungssystem an oder in der Nähe dieser Grenze arbeitet,
wird der Wunsch nach einem Verfahren zum Komprimieren
der Daten auftreten, der diese Grenze wirksam hinausschiebt, so
daß mehr Daten in dem Speicher gespeichert werden können bzw.
über den Übertragungskanal übertragen werden können. Bei einem
derartigen Verfahren erfolgt die Komprimierung der Daten auf
der Aufzeichnungsseite bzw. Sendeseite und die Dekomprimierung
der Daten auf der Wiedergabeseite bzw. der Empfangsseite. Die
Verfahren zur Komprimierung bzw. Dekomprimierung der Daten
sollten reversibel sein, so daß es auf einfache Weise möglich
ist, auf der Empfangsseite die auf der Sendeseite komprimierten
Daten wiederzugewinnen. Zweckmäßigerweise sollte das Verfahren
so allgemein ausgebildet sein, daß keine besonderen Eigenschaften
der Daten vor der Komprimierung berücksichtigt werden müssen,
mit der Ausnahme, daß die Daten redundante Informationen
enthalten müssen, so daß sie überhaupt komprimierbar sind. Daten,
die keine oder nur wenig Redundanz aufweisen, werden eine
negative Komprimierung zur Folge haben, d. h. die sich ergebenden
Daten werden umfangreicher sein.
Es sind grundsätzlich drei Komprimierungsverfahren bekannt, die
teilweise in großem Umfang benutzt werden: Die Lauflängencodierung,
die Huffmancodierung und die Anfangs-Ende-Schlüsselkomprimierung.
Bei der Lauflängencodierung werden wiederholt auftretende Zeichenfolgen
durch kürzere Codewörter ersetzt, beispielsweise
durch eine Folge aus drei Zeichen, nämlich einem Steuerzeichen,
einem Zeichen, das wiederholt wird und einem Datenwort, das die
Anzahl der Wiederholungen anzeigt.
Bei der Huffmancodierung wird zunächst eine Analyse der Daten
durchgeführt, um die Häufigkeit der verschiedenen Wörter festzustellen.
Die häufigsten Wörter werden dann durch die kürzesten
Codewörter dargestellt.
Schließlich werden bei der Anfangs-Ende-Schlüsselkomprimierung
wiederholt auftretende Zeichenfolgen am Anfang einer Aufzeichnung
durch Zählwerte ersetzt, die die Anzahl der Zeichen angeben,
die von dem vorhergehenden Aufzeichnungsvorgang verwendet
werden können. Dieses Verfahren ist insbesondere geeignet für
Daten, die eine große Anzahl von mehrfach auftretenden Wörtern
haben.
Insbesondere für Lauflängencodierung geeignet ist ein Digital
datenkompressor, der in DE 31 23 757 A1 beschrieben ist und
darauf ausgerichtet ist, Digitaldaten unter Verwendung einer
Vorhersagevorrichtung zu komprimieren und der sich insbesondere
für die Verarbeitung von Texten wie auch Halbtonbildern eignet.
Die Vorhersagevorrichtung wird dazu eingesetzt, um die Daten
kompression bei der Datencodierung zu erhöhen. Dazu beobachtet
die Vorhersagevorrichtung vorausgegangene Bitstellen einer momentan
abgetasteten Dokumentenzeile sowie die unmittelbar benachbarten
Bitstellen in ein bis zwei vorausgegangenen Zeilen.
Daraus wird abgeleitet, welcher Bitwert für die augenblickliche
Bitstelle erwartet wird. Der vorhergesagte Wert wird mit dem
tatsächlichen Wert der augenblicklichen Bitstelle verglichen,
bei Übereinstimmung beider Werte gibt die Vorhersagevorrichtung
eine "0", andernfalls eine "1" ab. Es wird auch ein Zwei-Stu
fen-Verfahren beschrieben, das die parallele Vorhersage mehrerer
Bits ermöglicht. Eine Schaltungsanordnung zur Durchführung
des Verfahrens umfaßt einen Puffer zum Speichern der Daten der
vorhergehenden Zeile und der augenblicklichen Zeile, zwei Register
zum Halten oder Speichern der Vorhersagedatenmuster für
die vorhergehende und die augenblickliche Zeile sowie zwei pro
grammierbare Festwertspeicher zum Durchführen einer Zwei-Stu
fen-Vorhersage.
Aus DE 35 23 247 A1 ist weiterhin eine Einrichtung zur Datenreduktion
binärer Datenströme bei stark unterschiedlichen Symbol
wahrscheinlichkeiten bekannt. Diese Einrichtung weist einen in
den Datenweg eingefügten Coder zur Codierung der Abstände des
weniger häufig auftretenden Symbols auf, in dem ein Abstand in
eine Anzahl Codewörter umgesetzt wird, wobei die Zahl der Codewörter
pro Abstand gegebenenfalls variabel sein kann. Weiterhin
ist vorgesehen, daß von den acht zu einem Byte zusammengefaßten
Bits des seriellen Datenstromes sieben Bitstellen für die binäre
Codierung des Abstandes verwendet werden und das achte Bit
die Information für ein gegebenenfalls erforderliches weiteres
Byte zur Codierung des Abstandes enthält.
Diese bekannten Verfahren arbeiten für die besonderen Arten von
Daten sehr gut. Für eine allgemeine Verwendung haben sie den
Nachteil, daß sie eine kleine Komprimierbarkeit, eine kleine
Verarbeitungsgeschwindigkeit oder beides aufweisen. Insbesondere
muß bei der Huffmancodierung die Frequenzanalyse vor der
Komprimierung durchgeführt werden und die Huffmancodierung ist
damit nicht geeignet für eine Realzeitkomprimierung/Dekomprimierung.
Der Erfindung liegt daher die Aufgabe zugrunde, ein Verfahren
zum Erhöhen der Speicherdichte in einem Speicher bzw. der Über
tragungskapazität eines Übertragungskanals anzugeben, das allgemein
verwendet werden kann und nur darauf beruht, daß Redundanz
in den Daten vorhanden ist und kein vorausgehendes Wissen
oder keine Analyse der Art der zu komprimierenden Daten erfordert.
Erfindungsgemäß wird die Aufgabe bei dem Verfahren der eingangs
genannten Art durch die im kennzeichnenden Teil des Patentanspruchs
1 angegebenen Merkmale gelöst.
Das Verfahren gemäß der Erfindung hat den Vorteil, daß es sehr
schnell durchführbar ist und eine Realzeitverarbeitung bei der
Komprimierung der Daten mit hoher Geschwindigkeit ermöglicht.
Vorteilhafte Ausgestaltungen des Verfahrens sind in den Patentansprüchen
2 bis 15 angegeben.
Das Verfahren gemäß der Erfindung wird im folgenden anhand einer
Anordnung zur Durchführung des Verfahrens näher erläutert.
Es zeigt
Fig. 1 ein Blockschaltbild eines Aufzeichnungs- oder Übertragungskanals,
Fig. 2 ein Blockschaltbild einer Komprimierungsstufe und
Fig. 3 ein Blockschaltbild einer Dekomprimierungsstufe.
Bei dem in Fig. 1 dargestellten Blockschaltbild eines Aufzeichnungs-
oder Übertragungskanals werden auf der Sendeseite zu
übertragende oder aufzuzeichnende Daten D von einer Datenquelle
DS abgegeben und einer Komprimierstufe C zugeführt, die diese
Daten in komprimierte Daten umsetzt und als Codewörter CW an
einen Kanal K abgibt, der als Übertragungs- oder als Aufzeichnungskanal
ausgebildet ist. Auf der Empfangsseite werden die
übertragenen Daten einer Dekomprimierstufe DC zugeführt, die
aus den komprimierten Daten die ursprünglichen Daten D wieder
zurückgewinnt und diese an einer Ausgabeeinheit T abgibt.
Weitere Einzelheiten bei der Komprimierung werden im folgenden
in Zusammenhang mit der Fig. 2 beschrieben und weitere Einzelheiten
der Dekomprimierung der Daten werden anschließend in Zusammenhang
mit der Fig. 3 beschrieben.
Die von der Datenquelle DS zugeführten Daten werden in der in
Fig. 2 dargestellten Komprimierstufe C einem Schieberegister
SR 1, einem Vergleicher C 0 und einem RAM-Speicher S 1 zugeführt.
In dem Schieberegister SR 1 sind jeweils N Bits speicherbar und
diese N Bits dienen als Adresse für den Speicher S 1. In dem
Speicher S 1 ist für jede Kombination der N Bits ein vorherzusagender
Binärwert gespeichert und diese Binärwerte können beliebige
Anfangswerte oder bestimmte vorgegebene Anfangswerte darstellen.
Beispielsweise wird angenommen, daß alle diese Binärwerte
0 sind. Falls beispielsweise in dem Schieberegister SR 1
N = 3 Bits gespeichert werden, die die Binärwerte 001 aufweisen,
sagt der Speicher S 1 als nächstes auftretendes Datenzeichen
PD 1 ein Datenzeichen mit dem Binärwert 0 voraus. Falls das
nächste Datenzeichen D tatsächlich den Binärwert 0 aufweist,
stellt der Vergleicher C 0 die Gleichheit zwischen dem Datenzeichen
D und dem vorhergesagten Datenzeichen PD fest. Über ein
UND-Gatter G 1 wird ein von einer zentralen Einheit CU 1 abgegebener
Taktimpuls T 1 als Taktimpuls T 2 an einen Zähler CNT abgegeben,
der diesen um eine Zähleinheit, beispielsweise von 0 auf
1 erhöht.
Danach sind im Schieberegister SR 1 beispielsweise die Datenzeichen
010 gespeichert und der Speicher S 1 sagt wiederum den Binärwert
0 als Datenzeichen PD 1 voraus. Der Vergleicher C 0 gibt
damit erneut ein Vergleichssignal C 1 mit dem Binärwert 0 ab, da
tatsächlich beispielsweise ein Datenzeichen 1 folgen soll und
sperrt das UND-Gatter G 1. Die zentrale Einheit CU 1erkennt
durch das Signal C 1, daß der Vergleich negativ war und übernimmt
den Zählwert 1 aus dem Zähler CNT durch ein Signal S 3 in
das Register R 1. Anschließend wird der Zähler CNT durch ein
Signal S 4 von der zentralen Einheit CU 1 zurückgesetzt. Da der
Vergleich negativ war, gibt die zentrale Einheit CU 1 ein
Steuersignal S 5 an den Speicher S 1 ab und das richtige Datenzeichen
D mit dem Binärwert 1 wird unter der Adresse 010 eingespeichert,
so daß bei einem erneuten Auftreten der Folge von
Binärzeichen 010 der Binärwert 1 vorhergesagt werden würde.
Der nun im Register R 1 gespeicherte Zählwert wird anschließend
codiert und als Codewort CW an den Übertragungs- oder Aufzeichnungskanal
K abgegeben. Einzelheiten der Codierungen werden unten
beschrieben.
Danach sagt der Speicher S 1 aufgrund der Binärzeichen 101 wieder
einen Binärwert 0 als Datenzeichen PD 1 voraus. Dies stimmt
mit dem tatsächlich folgenden Binärwert 0 des Datenzeichens D
überein, so daß der Zähler CNT seinen Zählwert von 0 auf 1 erhöht.
Danach wird aufgrund der im Schieberegister SR 1 gespeicherten
Binärzeichen 010 nun nicht mehr der Binärwert 0, sondern
der Binärwert 1 vorhergesagt, da der Eintrag in dem Speicher
S 1 geändert wurde. Auch dieser Binärwert des vorhergesagten
Datenzeichens PD 1 stimmt mit dem tatsächlichen Binärwert
des Datenzeichens D überein, so daß der Zählwert des Zählers
CNT auf 2 erhöht wird.
Anschließend wird aufgrund der im Schieberegister SR 1 gespeicherten
Binärzeichen 101 als Datenzeichen PD 1 wieder der Binärwert
0 vorhergesagt und der Vergleicher C 0 stellt die Nichtübereinstimmung
fest, so daß erneut durch ein Signal S 3 der
Zählwert des Zählers CNT in das Register R 1 übernommen wird und
der Zähler CNT anschließend durch das Signal S 4 zurückgesetzt
wird. Anschließend wird dieser neue Zählwert 2 als Codewort CW
übertragen. Danach treten beispielsweise wieder zwei Übereinstimmungen
der vorhergesagten und der tatsächlichen Datenzeichen
PD 1 bzw. D auf und anschließend stimmt beispielsweise wiederum
das vorhergesagte Datenzeichen PD 1 nicht mit dem tatsächlichen
Datenzeichen D überein und der Zählwert 2 wird erneut
als Codewort CW übertragen. Danach sollen beispielsweise die
vorhergesagten Datenzeichen PD 1 siebenmal mit den tatsächlichen
Datenzeichen D übereinstimmen, so daß anschließend der Zählwert
7 in das Register R 1 übernommen wird.
Im folgenden wird eine vorteilhafte Art der Codierung der im
Register R 1 gespeicherten Zählwerte beschrieben.
Wie bereits erwähnt, sind in dem Register R 1 die Zählwerte des
Zählers CNT aufeinanderfolgend gespeichert, die angeben, wie
oft eine korrekte Vorhersage getroffen wurde. Die Codierung
dieser Zählwerte sollte mit einer minimalen Anzahl von Binärzeichen
erfolgen. Die optimale Anzahl von Binärzeichen, die
verwendet werden kann, um eine vorgegebene Zahl darzustellen,
entspricht dem Logarithmus der Zahl mit der Basis 2. Damit erfordert
die Zahl 6 beispielsweise drei Bits (110), während die
Zahl 19 fünf Bits (10011) usw. erfordert. Wenn jedoch eine Kompression
dieser Daten durchgeführt werden soll, besteht keine
Möglichkeit, zu erkennen, wie viele Binärzeichen zu einem vorgegebenen
Zählwert gehören, so daß diese Art der Darstellung
nicht brauchbar ist. Andererseits stellt die Verwendung einer
vorgegebenen Anzahl von Binärzeichen für die Darstellung eines
Zählwertes einen zu hohen Verbrauch an Binärzeichen dar, da die
vorgegebene Anzahl der Binärzeichen groß genug sein muß, um den
größten erwarteten Zählwert darzustellen und diese große Anzahl
muß auch benutzt werden, um kleine Zählwerte darzustellen.
Bei einem bevorzugten Codierungsschema bei dem Verfahren gemäß
der vorliegenden Erfindung wird dieses Problem dadurch gelöst,
daß der Zählwert durch Codewörter CW dargestellt wird. Ein anfängliches
Codewort CW hat eine vorgegebene Größe und weitere
Codewörter CW, die ebenfalls eine vorgegebene Größe aufweisen,
werden hinzugefügt, wenn sie benötigt werden, um größere Zählwerte
darzustellen. Bei der Dekomprimierung beginnt der Decodierprozeß
mit einem Codewort CW derselben vorgegebenen Größe
und aus charakteristischen Merkmalen dieses Codewortes CW kann
erkannt werden, ob zusätzliche Codewörter CW erforderlich sind.
Ein derartiges Merkmal kann typischerweise darin bestehen, daß
dieses Codewort CW ausschließlich Binärzeichen 1 enthält. Die
Größe des zusätzlichen Codewortes CW kann typischerweise eine
Funktion der Größe des vorangehenden Codeworts CW sein, d. h.
der vorangehenden Größe +1.
Die Ausgangsgröße des ersten Codeworts CW kann typischerweise
eine feste Zahl sein. Diese Größe des ersten Codeworts CW kann
danach eine andere bekannte Zahl sein, typischerweise die optimale
Zahl des vorangehenden Zählwerts, wie er oben definiert
wurde. Weiterhin kann die Anfangsgröße in besonderen Fällen die
optimale Größe des dem vorangehenden Zählwert vorhergehenden
Zählwerts sein.
Die Binärzeichen in jedem Codewort CW definieren eine Zahl und
der Zählwert wird durch die Summe dieser Zahlen dargestellt.
Falls beispielsweise der vorangehende Zählwert 5 war und der
laufende Zählwert 11 ist, ist die optimale Anzahl von Binärzeichen
für den vorangegangenen Zählwert drei Binärzeichen (101)
und wird beispielsweise als Anfangsgröße auch für den laufenden
Zählwert 11 benutzt. Da die Zahl 11 nicht durch drei Binärzeichen
ausgedrückt werden kann, ist ein zusätzliches Codewort CW
erforderlich. Dies wird für die Dekomprimierung dadurch mitgeteilt,
daß in dem ersten Codewort CW alle Codezeichen den Binärwert
1 aufweisen. Drei Binärzeichen 1 stellen die Zahl 7
dar, so daß das zusätzliche Codewort CW (11-7) = 4 darstellen
muß. Weiterhin kann die Größe des zusätzlichen Codeworts CW typischerweise
um ein Binärzeichen größer sein als das vorangehende
Codewort CW, d. h. sie wird vier Binärzeichen aufweisen.
Damit werden die Codewörter, die den Zählwert 11 darstellen,
aus zwei Codewörtern CW 1111 und 0100 gebildet. Ein Zählwert
von 39 würde in entsprechender Weise aus drei Codewörtern zusammengesetzt
werden, nämlich 1111 1111 und 10001 (7 + 15 + 17).
In beiden Fällen würde das Codewort 1111 nicht die Zahl 7 darstellen,
da 1111 verwendet wird, um anzugeben, daß ein weiteres
Codewort CW folgt. Für die Darstellung der Zahl 7 wären zwei
Codewörter CW erforderlich, nämlich 1111 und 0000.
Eine Beschreibung der Codierung erfolgt nun im Zusammenhang mit
der Fig. 2.
Zunächst muß die Zahl 1 übertragen werden, da zuerst das Datenzeichen
PD und nur dieses richtig vorhergesagt wurde. Die Zahl
1 ist durch die Codezeichen 01 im Register R 1 gespeichert und
wird durch Signale RS einer arithmetischen und logischen Einheit
ALU 1 zugeführt. Es wird angenommen, daß jedes erste Codewort
CW nicht, wie oben angegeben, drei, sondern nur zwei Binärzeichen
aufweist. Diese zwei Binärzeichen sind in einem Register
R 2 gespeichert. Die arithmetische und logische Einheit
ALU 1 stellt nun fest, daß die Zahl 1 durch die beiden Binärzeichen
codierbar ist, indem sie die Differenz zwischen den in den
Registern R 1 und R 2 gespeicherten Zahlen bildet. Damit können
als Signale S 6 die Binärwerte der beiden im Register R 1 gespeicherten
Binärzeichen über einen durch die zentrale Einheit CU 1
gesteuerten Selektor SE als Codewörter CW abgegeben werden. Anschließend
steuert die zentrale Einheit CU 1, wie bereits beschrieben,
die Kompression der weiteren Daten und codiert in
ähnlicher Weise die beiden Zählwerte 2 und überträgt diese über
den Selektor SE.
Wenn festgestellt wird, daß sieben aufeinanderfolgende Datenzeichen
richtig vorhergesagt wurden, ist die Differenz zwischen
den Inhalten der Register R 1 und R 2 0 oder positiv, so daß mindestens
ein weiteres Codewort CW erforderlich ist. Daher werden
in ein Register R 3 so viele Binärzeichen mit dem Binärwert 1
eingespeichert, wie im Register R 2 angegeben ist und als Signale
S 7 über den Selektor SE als erstes Codewort CW abgegeben.
Anschließend wird der Inhalt des Registers R 2 um ein Binärzeichen
erhöht, da das nachfolgende Codewort CW ein Binärzeichen
mehr enthalten soll. Im vorliegenden Fall verbleibt noch der
Binärwert 4, der mit dem nächsten Codewort CW durch die Binärzeichen
1000 codiert wird und über das Register R 1 als Signal
S 6 über den Datenselektor SE ausgegeben wird. Falls das Codewort
CW nicht ausgereicht hätte, hätten wieder alle Binärzeichen
den Binärwert 1 angenommen und es wäre ein weiteres Codewort
CW mit einer noch größeren Anzahl von Binärzeichen hinzugekommen.
Dieser Vorgang wird solange wiederholt, bis das letzte
Codewort CW mindestens ein von 1 verschiedenes Binärzeichen
enthält.
Es wäre auch möglich, in Abänderung des oben beschriebenen Vorgangs
in einem Register R 4 die Größe des jeweils vorangehenden
Codeworts CW zu speichern, bevor die Größe des Codeworts CW im
Register R 2 verändert wird.
Der Dekomprimierungsvorgang wird nun im folgenden in Zusammenhang
mit Fig. 3 beschrieben. Die Dekomprimierung ist die Umkehrung
der Komprimierung und enthält zwei Phasen, nämlich eine
Decodierungsphase und eine Vorhersagephase. Die Parameter beim
Dekomprimierungsvorgang müssen denjenigen beim Komprimierungsvorgang
entsprechen. Die Codewörter CW, die zur Empfangsseite
übertragen werden, werden durch codierte Zählwerte von erfolgreichen
Vorhersagen dargestellt, wie es oben beschrieben wurde.
Die erste Aufgabe beim Dekomprimierungsvorgang besteht darin,
die Codewörter CW zu decodieren, um diese Zählwerte wieder zu
gewinnen. Die Ausgangsgröße des ersten Codeworts CW ist in einem
Register R 5 gespeichert. Folglich wird eine entsprechende
Anzahl von Binärzeichen der Codewörter CW in ein Register R 6
eingespeichert. Die Einspeicherung und auch die übrige Zeitsteuerung
erfolgt durch eine zentrale Einheit CU 2. Durch eine
arithmetische und logische Einheit ALU 2 wird geprüft, ob die im
Register R 2 gespeicherten Binärzeichen alle den Binärwert 1
aufweisen, um festzustellen, ob noch weitere Codewörter CW zu
dem Zählwert gehören. Die Binärzeichen in dem Register R 6 werden
zu einem weiteren Register R 7 übertragen, das den endgültigen
Zählwert enthält, falls nicht alle Binärzeichen den Binärwert
1 aufweisen. Falls jedoch alle Binärzeichen den Binärwert
1 aufweisen und damit angezeigt wird, daß ein zusätzliches Codewort
CW zu dem Zählwert hinzugehört, wird der Inhalt des Registers
R 5 um ein Binärzeichen erhöht und eine entsprechend
größere Anzahl von Binärzeichen des Codeworts CW wird in das
Register R 6 eingespeichert. Die Anzahl, die durch diese Binärzeichen
dargestellt wird, wird dann zu der im Register R 7 gespeicherten
Zahl hinzuaddiert, um den endgültigen Zählwert zu
erhalten. Wenn nicht alle Binärzeichen im Register R 6 den Binärwert
1 aufweisen, stellt die im Register R 7 gespeicherte
Zahl den endgültigen Zählwert dar. Andernfalls muß der Vorgang
mit einer vergrößerten Anzahl von Binärzeichen für das nächste
Codewort CW solange fortgesetzt werden, bis nicht alle Binärzeichen
im Register R 6 den Binärwert 1 aufweisen.
Der im Register R 7 endgültig gespeicherte Zählwert gibt die Anzahl
der erfolgreichen Vorhersagen an, die erwartet werden können,
wenn auf der Empfangsseite die Datenzeichen D in derselben
Weise vorhergesagt werden, wie auf der Sendeseite.
Die Binärzeichen, die als Basis für die Vorhersage der nächsten
Datenzeichen verwendet werden, werden in einem Schieberegister
SR 2 gespeichert, das dem Schieberegister SR 1 auf der Sendeseite
entspricht. Dieses Schieberegister SR 2 speichert ebenfalls N
Binärzeichen und speichert anfänglich beispielsweise lauter Binärzeichen
mit dem Binärwert 0. Diese Binärzeichen werden wieder
als Adresse eines RAM-Speichers S 2 verwendet, der dem RAM-
Speicher S 1 entspricht. Als Ausgangswerte sind in dem Speicher
S 2 unter den verschiedenen Adressen beispielsweise jeweils die
Binärwerte 0 gespeichert. In jedem Fall müssen es dieselben
Ausgangswerte wie im Speicher S 1 sein. Die vorhergesagten Daten
PD 2 werden einem Antivalenzglied A zugeführt, das als gesteuerter
Inverter dient und an seinem Ausgang die zurückgewonnenen
Daten D abgibt. Wenn ein Datenzeichen richtig vorhergesagt wurde,
wird es unverändert durch das Antivalenzglied A durchgeschaltet
und dem Schieberegister SR 2 für die nächste Vorhersage
zugeführt. Dies erfolgt solange, wie die Anzahl im Register R 7
angibt. Mit jeder richtigen Vorhersage wird der Inhalt des Registers
R 7 um 1 vermindert. Wenn der Inhalt des Registers R 7 0
ist, wird das nächste vorhergesagte Datenzeichen PD 2 invertiert
und als Datenzeichen D ausgegeben und auch in das Schieberegister
SR 2 eingespeichert. Außerdem wird das invertierte vorhergesagte
Datenzeichen PD 2 an die entsprechende Stelle im Speicher
S 2 eingespeichert. Das im Schieberegister SR 2 gespeicherte
invertierte vorhergesagte Datenzeichen PD 2 wird dann für die
nächste Vorhersage verwendet. Anschließend werden wieder so
viele vorhergesagte Datenzeichen PD 2 unverändert als Datenzeichen
D abgegeben, wie es im Register R 7 angegeben ist.
Sowohl auf der Sendeseite als auf der Empfangsseite müssen dieselben
Vorhersagealgorithmen verwendet werden. Eine andere Möglichkeit
der Vorhersage besteht beispielsweise darin, daß in
den Speichern SP 1 und SP 2 jeweils zwei Zahlen in Verbindung mit
einem vorhergesagten Binärzeichen gespeichert sind. Die zwei
Zahlen, die ursprünglich 0 sind, können einen Zählwert darstellen,
der angibt, wie oft sich herausgestellt hat, daß das nächste
Binärzeichen der Daten D 0 bzw. 1 ist in Verbindung mit der
zu verarbeitenden Folge von Binärzeichen. Das vorhergesagte Binärzeichen
würde dann als der Wert ausgewählt werden, der den
höchsten Zählwert hat. Eine weitere Möglichkeit besteht darin,
daß eine Anzahl die Differenz zwischen den beiden Zählwerten
darstellen könnte und die andere Anzahl könnte denjenigen Binärwert
darstellen, der den höchsten Zählwert aufweist. Wenn es
sich herausgestellt hat, daß das nächste Binärzeichen identisch
der zweiten Zahl ist, würde die erste Zahl erhöht werden und im
anderen Fall vermindert werden. Wenn die erste Anzahl negativ
wird, würde sich der Wert der zweiten Anzahl invertieren. Das
vorhergesagte Bit würde natürlich dann die zweite Anzahl sein.
Schließlich besteht eine weitere Möglichkeit darin, daß nur eine
einzige Zahl verwendet wird, die ein vorhergesagtes Binärzeichen
0 darstellt, wenn sie positiv ist und 1, wenn sie negativ
ist und die Anzahl erhöht wird, wenn sich herausgestellt
hat, daß das nächste Binärzeichen eine 0 ist und andernfalls
vermindert wird.
Der zuletzt dargestellte Algorithmus würde ein vorhergesagtes
Bit darstellen, das ein statistisches Auftreten von Bitmustern
berücksichtigt. Die Anzahl der statistischen Proben könnten dadurch
beschränkt werden, daß die entsprechenden Zählwerte beschränkt
werden. Diese Anzahl bildet einen anderen Parameter
der Erfindung. Der Algorithmus, der im Zusammenhang mit den Fig. 2
und 3 beschrieben wurde, kann als ein Spezialfall betrachtet
werden, bei dem die Anzahl der Proben 1 ist.
Claims (15)
1. Verfahren zum Komprimieren und Dekomprimieren von Daten, bei
dem die Daten auf der Sendeseite komprimiert und dazu auf eine
vorgegebene Anzahl von Datenzeichen (D) folgende Datenzeichen
(D) jeweils vorhergesagt werden, über einen Übertragungs- oder
Aufzeichnungskanal übertragen werden und auf der Empfangsseite
dekomprimiert werden, dadurch gekennzeichnet,
daß die jeweilige Anzahl der jeweils richtig vorhergesagten
Datenzeichen (PD 1) als Codewörter (CW) übertragen bzw.
aufgezeichnet wird und daß auf der Empfangsseite aus der Anzahl
der jeweils richtig vorhergesagten Datenzeichen (PD 1) die ursprünglichen
Datenzeichen (D) wieder zurückgewonnen werden.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet,
daß die jeweilige Anzahl der richtig vorhergesagten
Datenzeichen (D) durch Codewörter (CW) codiert
wird, wobei ein erstes Codewort (CW) eine vorgegebene minimale
Anzahl von Binärzeichen aufweist und gegebenenfalls weitere Codewörter
(CW) mit einer vorgegebenen Anzahl von Binärzeichen
hinzugefügt werden, wobei dann die den zusätzlichen Codewörtern
(CW) jeweils vorangehenden Codewörter (CW) Binärzeichen mit
vorgegebenen Binärwerten enthalten.
3. Verfahren nach Anspruch 1 oder Anspruch 2, dadurch
gekennzeichnet, daß die Vorhersage der Datenzeichen
(PD 1, PD 2) unter Verwendung eines Speichers (S 1, S 2)
erfolgt, indem jeweils einer vorgegebenen Anzahl von Datenzeichen
(D) ein vorhergesagtes Datenzeichen (PD 1, PD 2) zugeordnet
wird.
4. Verfahren nach Anspruch 3, dadurch gekennzeichnet,
daß in dem Speicher (S 1, S 2) Anfangswerte
gespeichert sind, deren Binärwerte aufgrund von zuvor aufgetretenen
Folgen von Datenzeichen (D) festgelegt werden.
5. Verfahren nach Anspruch 4, dadurch gekennzeichnet,
daß die Anfangswerte der vorhergesagten
Datenzeichen (PD 1, PD 2) willkürliche Binärzeichen sind.
6. Verfahren nach Anspruch 4, dadurch gekennzeichnet,
daß alle Anfangswerte der vorherzusagenden
Datenzeichen (PD 1, PD 2) gleich sind.
7. Verfahren nach einem der Ansprüche 1 bis 6, dadurch
gekennzeichnet, daß jeweils eine vorgegebene
Anzahl von Datenzeichen (D) als Adresse dem Speicher (S 1, S 2)
zugeführt wird.
8. Verfahren nach einem der Ansprüche 1 bis 7, dadurch
gekennzeichnet, daß auf der Sendeseite die
vorhergesagten Datenzeichen (PD 1) mit den tatsächlichen Datenzeichen
(D) verglichen werden, daß bei Übereinstimmung ein
Zählwert in einem Zähler (CNT) erhöht wird und daß bei Nichtübereinstimmung
der Zählwert gespeichert wird, der Zähler (CNT)
zurückgesetzt wird und ein richtiges Datenzeichen (D) in den
Speicher (S 1) eingespeichert wird.
9. Verfahren nach Anspruch 8, dadurch gekennzeichnet,
daß der Zählwert geprüft wird, ob er durch
eine vorgegebene Anzahl von Binärzeichen in einem Codewort (CW)
codierbar ist, daß, falls dies der Fall ist, ein entsprechendes
Codewort (CW) ausgegeben wird und daß andernfalls solange weitere
Codewörter (CW) hinzugefügt werden, bis der Zählwert durch
die Summe der Codewörter (CW) codiert werden kann, wobei die
jeweils vorangehenden Codewörter (CW) vorgegebene Binärzeichen
enthalten.
10. Verfahren nach Anspruch 9, dadurch gekennzeichnet,
daß die Anzahl der Binärzeichen in dem Codewort
(CW) und den weiteren Codewörtern (CW) konstant ist.
11. Verfahren nach Anspruch 9, dadurch gekennzeichnet,
daß die Anzahl der Binärzeichen in den
weiteren Codewörtern (CW) größer ist als diejenige des ersten
Codeworts (CW).
12. Verfahren nach Anspruch 11, dadurch gekennzeichnet,
daß die Anzahl der Binärzeichen in den
weiteren Codewörtern (CW) jeweils um 1 größer ist.
13. Verfahren nach Anspruch 11, dadurch gekennzeichnet,
daß die Anzahl der Binärzeichen in den
weiteren Codewörtern (CW) jeweils um 2 größer ist.
14. Verfahren nach einem der Ansprüche 1 bis 13, dadurch
gekennzeichnet, daß auf der Empfangsseite aus
einem Speicher (S 2) solange vorhergesagte Datenzeichen (PD 2)
ausgelesen werden, wie es der durch die Codewörter (CW) codierte
Zählwert angibt und daß anschließend jeweils ein vorhergesagtes
Datenzeichen (PD 2) korrigiert ausgegeben und im Speicher
(S 2) korrigiert wird.
15. Verfahren nach einem der Ansprüche 1 bis 13, dadurch
gekennzeichnet, daß die Sendeseite Einrichtungen
(DS) zur Aufzeichnung von Daten, der Aufzeichnungskanal (K)
ein magnetisches Aufzeichnungsmedium und die Empfangsseite eine
Wiedergabeeinrichtung (T) für magnetisch aufgezeichnete Daten
darstellt.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE19873732045 DE3732045A1 (de) | 1987-09-23 | 1987-09-23 | Verfahren zum komprimieren und dekomprimieren von daten |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE19873732045 DE3732045A1 (de) | 1987-09-23 | 1987-09-23 | Verfahren zum komprimieren und dekomprimieren von daten |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3732045A1 DE3732045A1 (de) | 1989-04-06 |
DE3732045C2 true DE3732045C2 (de) | 1991-11-07 |
Family
ID=6336686
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19873732045 Granted DE3732045A1 (de) | 1987-09-23 | 1987-09-23 | Verfahren zum komprimieren und dekomprimieren von daten |
Country Status (1)
Country | Link |
---|---|
DE (1) | DE3732045A1 (de) |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5728476A (en) * | 1980-06-20 | 1982-02-16 | Xerox Corp | Method of predicting input bit and forming output bit |
DE3523247A1 (de) * | 1985-06-28 | 1987-01-02 | Siemens Ag | Einrichtung zur datenreduktion binaerer datenstroeme |
-
1987
- 1987-09-23 DE DE19873732045 patent/DE3732045A1/de active Granted
Also Published As
Publication number | Publication date |
---|---|
DE3732045A1 (de) | 1989-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69925774T2 (de) | Arithmetisches Kodierung- Dekodierung- sowie Warscheinlichkeitsschätzungsverfahren | |
DE19506164C2 (de) | Verfahren zum Komprimieren eingegebener Symbole in Codeworte | |
DE69726661T2 (de) | Verfahren und vorrichtung zur kodierung eines digitalen informationssignales | |
EP0260748B1 (de) | Verfahren und Schaltungsanordung zur Bitratenreduktion | |
DE2264090C3 (de) | Datenverdichtung | |
DE69024629T2 (de) | Vorrichtung zur kompression von datenlängen und datenfolgen | |
DE68926876T2 (de) | Vorrichtung zur Vektorquantisierung von Bildern | |
DE2652459C2 (de) | Umsetzvorrichtung für Binärsignale variabler Länge | |
DE1296182C2 (de) | Verfahren zur uebertragung binaerer informationssignale sowie kodierer zur abgabe solcher signale und mit diesem betreibbarer dekodierer | |
EP2068448B1 (de) | Verfahren und Anordnung zur arithmetischen Enkodierung und Dekodierung mit Verwendung mehrerer Tabellen | |
DE69527883T2 (de) | Decodierung eines Huffman Codes mit MSB und LSB Tabellen | |
DE2227148B2 (de) | Schaltungsanordnung zur Umsetzung digitaler Daten | |
DE69413512T2 (de) | Vorrichtung zur Dekodierung von Kodes mit veränderlicher Länge | |
DE69125424T2 (de) | Vorrichtung zur variablen Längenkodierung und Vorrichtung zur variablen Längendekodierung | |
DE2805294C2 (de) | Codierende Übertragungsanlage für Faksimile-Signale | |
DE2340230A1 (de) | Verfahren und vorrichtung zur vorhersage des signalpegelwertes eines nachrichtenelementes | |
DE68923012T2 (de) | Kodierungs- und Dekodierungsverfahren variabler Länge, Kodierungs- und Dekodierungsvorrichtung zur Ausführung dieses Verfahrens. | |
DE2500055C2 (de) | Faksimile-uebertragungssystem | |
DE3854490T2 (de) | Dynamische Bestimmung von Multi-Mode-Kodierung für Datenkomprimierung. | |
DE69319506T2 (de) | Verfahren und Gerät zum Kodieren und Dekodieren digitaler Bilddaten | |
DE69607063T2 (de) | Verfahren und System zur Kompression und Dekompression von digitalen Bildsignalen | |
DE3732045C2 (de) | ||
EP0427884B1 (de) | Verfahren und Anordnung zum Komprimieren und Dekomprimieren von Daten | |
DE2253378B2 (de) | Verfahren und Anordnung zur Codierung von Faksimilesignalen | |
DE2127516A1 (de) | Verfahren zur Übertragung binärcodierter Signale von Bildvorlagen oder Schriftvorlagen |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8110 | Request for examination paragraph 44 | ||
D2 | Grant after examination | ||
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |