DE2801988A1 - Arithmetische codierung von symbolfolgen - Google Patents

Arithmetische codierung von symbolfolgen

Info

Publication number
DE2801988A1
DE2801988A1 DE19782801988 DE2801988A DE2801988A1 DE 2801988 A1 DE2801988 A1 DE 2801988A1 DE 19782801988 DE19782801988 DE 19782801988 DE 2801988 A DE2801988 A DE 2801988A DE 2801988 A1 DE2801988 A1 DE 2801988A1
Authority
DE
Germany
Prior art keywords
length
memory
digits
sequence
fraction
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.)
Withdrawn
Application number
DE19782801988
Other languages
English (en)
Inventor
Glen George Langdon
Jorma Johannen Rissanen
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE2801988A1 publication Critical patent/DE2801988A1/de
Withdrawn 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/4006Conversion to or from arithmetic code

Landscapes

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

Description

28019
Anmelderin: International Business Machines
Corporation, Armonk, N.Y., 10 50 4
ker-cn
Arithmetische Codierung von Symbolfolgen
Die Erfindung betrifft Schaltungsanordnungen zur arithmetischen Codierung entsprechend dem Patentanspruch 1 und zur Decodierung von Folgen von Symbolen aus endlichen Quellalphabeten, wobei die benutzte Codierung die relative Auftretenshäufigkeit der einzelnen Symbole als Grundlage für eine Kompaktierung ausnutzt. Insbesondere beinhaltet die Erfindung eine Verbesserung gegenüber sowohl der numerativen Codierung als auch der Kompaktierungstechnik nach Huffman. Es möge daran erinnert werden, daß Huffman eine Lehre zur Kompaktierung angab unter Zuordnung von Codeworten unterschiedlicher Länge zu jedem einzelnen Zeichen eines Quellalphabets, wobei die Länge der einzelnen Codeworte umgekehrt proportional ist zur relativen Auftretenshäufigkeit der einzelnen Zeichen. Die Auftretenshäufigkeit wird dabei entweder statisch oder semi-statisch berücksichtigt.
Seit Huffmans grundlegender Veröffentlichung In den Proceedings of the IRE im September 1952 auf den Seiten 1098 bis 1101, "A Method for the Construction of Minimum Redundancy Codes", wurden zahlreiche Modifikationen in Form verschiedener Patente und Anmeldungen beschrieben: DE-PS 21 44 113, DE-OS 21 39 731, P 21 53 920.8, DE-OS 22 05 422, DE-OS 22 10 044 und US-Patentanmeldung T 925 002. Eine nützliche Informationsgrundlage ist das Buch von Norman Abramson, "Information Theory and Coding", McGraw Hill, 1963, Kapitel 3 und 4. Bei allem ist jedoch ein klassischer Code übriggeblieben mit gewissen Nachteilen. Dl· Codeworte werden dabei aus einer gegebenen Folge im vorhineien bekannter Symbole " abgeleitet. Alle Codeworte sind voneinander unterscheidbar und keines der gegebenen Codeworte ist dabei der Anfang eines
sä 976 005 809836/0552
?8019$8
anderen der insgesamt vorkommenden Codeworte.
Die numerative Codierung ist die Codierung aller Permutationen einer binären Folge von η Symbolen unter vorangehender Sortierung der 2n vorkommenden Begriffe und unter Darstellung der einzelnen Begriffe mittels einer Ordnungszahl. Dazu möge hingewiesen werden auf T.M. Cover, "Enumerative Source Encoding", IEEE Transactions on Information Theory, Jan. 1973, Seiten 73 bis 77. Gegeben sei eine binäre Folge von η Binärziffern, von denen immer m den Wert 1 aufweisen. T(n,m) steht dann für sämtliche möglichen Folgen von η Binärziffern mit m Einsen. Es ist dabei erforderlich, die einzelnen Begriffe in einer durchgehenden Weise zu ordnen, z.B. nach ihrer Größe mit von links nach rechts wachsender Wertigkeit. Für ein Beispiel η = 3 und m = 2 ist 011<101<110 die mögliche Ordnung. Wenn jedem einzelnen Begriff dieser Ordnung eine Positionsnummer zugeordnet wird, dann ist der letzte Ausdruck der Binomialkoeffizient (n)=nl/(n-m)!m!. Alle anderen
Ordnungsnumern der Codeworte sind kleiner.
Sowohl nach Huffman als auch bei der numerativen Codierung findet die durchschnittliche Symbollänge eine untere Grenze, die durch die zugehörige Entropiefunktion der Quellsymbol-JHäufigkeiten bestimmt wird.
JEs sei eine Quellsymbolfolge s gegeben, in der s=a.a.... nach rechts anwächst, sa, soll die neue gewinnbare Folge bezeichnen, die unter Anhängung des neuen Symbols a, an das Ende der alten Folge s gewonnen wird, wobei k die Werte 1 bis N annehmen kann. Bei den Huffman-Codierungen wird die codierte Darstellung von sa, gewonnen unter Anhängung oder Zufügung des Codeworts A, des Symbols a, an das rechte Ende der Codefolge von s. Dies bedeutet, daß die Codewortlänge für jedes Symbol unabhängig von der Symbolvorkommenshäufigkeit um ganze Bitzahlen wächst. Ferner bedeutet dies für binäre Quellfolgen, daß
SA~976 ööl 809836/0552
ί
die Codierung nach Huffman entweder keine Kontaktierung oder j für kleine Alphabete nur eine nicht zufriedenstellende Kom-
jpaktierung ergibt.
IUm eine verbesserte Kompaktierung nach Huffman für kleine !Quellalphabete zu erreichen, wurde eine mit Blockbildung be- !nannte Technik angegeben. Bei der Blockbildung sind die neuen jQuellsymbole des Quellalphabets Nebeneinanderreihungen von ,zwei oder mehr der ursprünglichen Quellsymbole. Bei der Bejtrachtung von k Symbolen erhöht sich die Größe des Quell- ! alphabets auf Nk.
'Ganz offensichtlich benötigt die numerative Codierung keine ■Blockbildung. Jedoch erfordert die Berechnung jedes neuen !Codeworts C(sa, ) die Kenntnis sämtlicher Bits der vorangehen-
I JC
den Folge C(s). Dazu wäre andererseits ein unbegrenzt großer Speicher erforderlich.
Die Aufgabe der vorliegenden Erfindung ist demgegenüber die Schaffung verbesserter Schaltungsanordnungen zur Kompaktierung und Dekompaktierung von Codefolgen, insbesondere binärer Bitfolgen; das dabei verwendete Verfahren soll sowohl von der ' Blockbildung nach Huffman als auch von einer unbegrenzten , Speichergröße, wie sie für die numerative Codierung erforderlieh ist, freimachen; es soll eine vereinheitlichte Technik zur Folgecodierung angegeben werden, die im wesentlichen sowohl von der Folgeanordnung der Symbole als auch von der Größe des Quellalphabets unbeeinflußt ist; es soll des weiteren ein · günstiges Kompaktierungsverhältnis erreichbar sein, das sich einem möglichen Idealwert nähert.
Die Lösung dieser Aufgabe ist im Patentanspruch 1 gekennzeichnet. Vorteilhafte Ausgestaltungen sind in den Unteransprüchen beschrieben. Dazu ist auch eine entsprechende Dekompaktierungsanordnung angegeben.
SA 976 ΌΟ5
T09836/0B52
Gegeben sei eine Folge s=a.a.... von Symbolen; Huffman würde im vorhinein ein Codewort jedem einzelnen Symbol des endlichen Quellalphabets zuteilen, aus dem die Symbole stammen. Bei numerativer Codierung würde die Folge s mittels einer Codefolge C(s) dargestellt, wobei jede neue Codefolge C(sa, ) für das nächste Symbol a, die gesamte vorangehende Folge C(s) zu berücksichtigen hätte.
Es wurde beobachtet, daß eine neue Codefolge C(sa, ) gebildet werden kann aus der Ordnungs- oder Positionszahl k von a. bei einer beliebigen Anordnung sämtlicher Symbole des Quellaphabets, aus einer Länge und aus den letzten wenigen Ziffern der vorangehenden Codefolge C(s). Diese Beobachtungen werden bei einem Verfahren ausgenutzt, welches zuerst die Bestimmung eines Längenbetrags und zweitens die Verwendung eines Bruches und eines ganzzahligen Teils davon bei der Erzeugung einer neuen Codefolge verwendet. Bei der Codierung wird zuerst für die neue Codefolge der Längenbetrag L(safc) bestimmt. Danach wird die neue Codefolge berechnet. Dies läßt sich durch die folgenden Rekursionen kurz ausdrücken:
ι L(sak)=L(s)+i,(ak) j
C(sak)=C(s)+Pk_1-2L(sak)
Darin ist L(s) der Längenbetrag der vorangehenden Codefolge ■ C(s), ß(afc) eine rationale Näherung für log2(1/p(a )), p(a k) die vorbekannte Auftretenswahrscheinlichkeit. Die Längenangabe ;
■£(a, ) muß des weiteren der Kraft-Ungleichung ί
κ ι
k=1
für ein Alphabet mit N Symbolen genügen.
... ist die kumulative Auftretenswahrscheinlichkeit bei einer beliebigen Anordnung der Symbole des Alphabets, wobei
SA 97(5 005
P1 = ΣΓ p(a ) mit P =o, P =1.
Es wird des weiteren als Teil der vorliegenden Erfindung betrachtet, daß sowohl der Bruchanteil als auch der ganzzahlige !Anteil des Längenbetrags vorteilhafterweise verwendet werden
können. Als Beispiel dafür:
! Lisa,) = L(s)+Ä(a.) = ganzer Teil y + Bruch χ
! = y(sak) + x(sak)
(Dies wird auf die zweite Rekursion mit dem folgenden Ergebnis
!angewandt:
C(sak)=C(s)+Pk_1-2L(sak)=C(s)+Pk_1
Wenn y ganzzahlig ist, läßt sich die Multiplikation eines !Werts in einem Register mit 2"y durch Links-Versatz bei +y und durch Rechts-Versatz bei -y ausführen. Der Faktor 2 kann durch q Bits, d.h. e(x)3i2x, angenähert werden. Dafür bietet sich ein Tabellenauslesen an.
Als Ergebnis dieser Betrachtungen kann eine Ausführung der vor-i liegenden Erfindung zur Codierung die folgenden Einzelheiten bei der Erzeugung eines neuen Codefolgeabschnitts umfassen:
(1) Tabellenauslesen von JKa,)
(2) Addition zur Erlangung von L(sa, )
(3) Tabellenauslesen von β(χ)*2
(4) Multiplikation von P^1 und e(x)
(5) Linksversatz um y Bits
(6) Addition von C(s) und Ρ_1β(χ)2Υ
Eine andere Ausführung kombiniert die Schritte (3) und (4) und versetzt im Schritt (5) nach rechts. Dies ergibt sich aus der Umschreibung der Rekursion: 2~y(sak)C(sak)=2~y SA 976 005
Darin ist A^P^ . 2x(sak)
Das veränderte Verfahren umfaßt:
(1) Tabellenauslesen von £(a, )
(2) Addition zu x(s) zur Gewinnung von L(sa,) =
y(sak)+x(sak)
(3) Tabellenauslesen von A,
(4) Rechtsversatz von C(s) um y(sa ) Bitpositionen
(5) Addition von Afc und 2~yisak*«C(s)
Diese Abwandlung vereinfacht die Berechnung der neuen Codefolge. Sie erfordert nur die Addition von A, zur versetzten vorangehenden Codefolge. Dies beruht auf der Eigenschaft, daß A, lediglich eine Funktion der Positionszahl k und des Bruchanteils x(sak) ist. Die Abwandlung sieht vor, daß A und C(s) dieselben Relativstellungen in bezug zum Binärpunkt einnehmen. In diesem Zusammenhang soll daran erinnert werden, daß P^.* und x(sa, ) zwischen 0 und 1 liegen.
Was die Codierung anbetrifft, wird eine Quellsymbolfolge seriell der Schaltungsanordnung zugeführt und dabei eine entsprechende Binärcodefolge gewonnen. Die codierte Binärfolge kann decodiert werden unter Berücksichtigung des Anfangs und des Endes der Folge. Wenn C(sa, ) auf den Bereich zwischen 0 und 2 beschränkt ist, dann kann der Binärpunkt von C(sak) auf die !letzte Hinzufügung A, ausgerichtet werden. Infolgedessen stellt das am weitesten links angeordnete Bit von C(sa ) eine
ι Λ
ganze Zahl dar und die Bits rechts davon einen Bruchwert.
Von Interesse dürfte sein, daß die Folge während des Codierens aus "r" Ziffern besteht. Dieses "r" ist ebenfalls der Genauigkeitsindex für A, . Für jeweils y geringerwertige Ziffern von C(s), die während eines Zyklus aus dem Codierer herausgeschoben werden, werden r-y werthöchste Ziffern bei der neuen Berechnung an die Folge angehängt. Der Parameter "r"
SA 976 005 8 09836/0!
sollte vorzugsweise XLog(1/p) sein, wobei ρ die Auftretenswahrscheinlichkeit des seltensten Symbols ist.
Die Decodierung erfordert die Verwendung eines Längenbetrags bei der Zergliederung der komprimierten Bitfolge in decodierbare Zeichen und dann die Ablösung der einzelnen Zeichen aus der Folge in einer zur Codierung dualen Weise. Wenn z.B. der Decodierer einen Speicher mit 2 -1 Worten enthält, wobei r die Bitlänge von A, ist, dann ist für die Decodierung erforderlich:
(1) Feststellung des Beginns der codierten Folge C(sak)
(2) Adressierung eines Speichers mit den nächsten r Bits von C(sa, ) und q Bits des zugeführten Rest-Bruchteils x(sa, ) sowie die Wiedergewinnung von a, und A(a, )
JC it
j (3) Versetzung der Folge um y(sa, ) Bitstellen zur Ausrichtung des Decodierers auf den nächsten Teil der ■ komprimierten Codefolge
j Die Erfindung umfaßt ein Kompaktierungsverfahren, welches ohne ■Blockbildung und bei begrenztem Speichervolumen auch eine jFehlerprüfung und die Begrenzung der Speichergröße für die Codeworttabellen ermöglicht.
Bei der Huffman-Codierung von Binäralphabeten ist eine n-Bitblockbildung erforderlich, um die Existenz der oberen Grenze HisJ^-^HCs)+— zu garantieren-(siehe dazu Norman Abramson oder Shannons erstes Theorem, S. 73), wobei H(s) die Entropie oder die theoretische minimale Durchschnittslänge der codierten Symbole und L /n die Durchschnittslänge der codierten Symbole . bei der Codierungsmethode sind. Die Größe der Tabellen für : die Huffman-Codeworte benötigt einen Speicher für 2 Codeworte< wobei viele dieser Codeworte mehr als η Bits aufweisen. '
sä" 976OÖ5 8"ö 9 8 36 /0 S 5 2
Im Gegensatz dazu kann die arithmetische Codierung bei einer gleichen oberen Grenze von H(s)-f— Tabellen verwenden, deren Volumen der Größe von η entspricht; dabei ist jede Wortlänge von der Größenordnung log_n.
Zusätzlich zur Kontaktierung codierter Zeichen ermöglicht die arithmetische Anordnung eine alternative Kompressionstechnik für Folgen nichtcodierter Daten, wobei in beiden Fällen eine einheitliche Kompaktierungsmethode anwendbar ist und nicht verschiedene Mechanismen für codierte und nichtcodierte Quelldaten erforderlich sind.
Ein Ausführungsbeispiel ist in den Zeichnungen dargestellt und wird nachfolgend beschrieben.
Fig. 1A zeigt eine Anordnung zur binären Folgecodie
rung im Zusammenhang mit einem Kombinationsspeicher bzw. einem übertragungssystem.
Fign. 1B und 1C stellen Funktionsblockschaltbilder des Standes der Technik mit Huffman-Codierung und -Decodierung dar.
Fign. 2 und 3 zeigen funktioneile logische Diagramme für
einen arithmetischen Folgecodierer und -decodierer entsprechend der vorliegenden Erfin-
! dung.
i Fign. 4A und 4B stellen Folge- und Zeitschaubilder des Codie-i
rers und Decodierers gemäß Fign. 2 und 3 dar.)
!Beschreibung des Ausführungsbeispiels [
j In Fig. 1 ist in allgemeiner Form eine Binärfolge-Codieranlage j dargestellt, die zusammen mit einem Kombinationsspeicher
I sä 976 005 8 0W56/0 55 2
bzw. einem Übertragungssystem verwendet wird. Eine Informationsquelle 1 gibt Quellsymbole a, aus einem Quellalphabet ab:
Kl
Diese Symbole werden nacheinander über den Pfad 3 einem Puffer- und Steuergerät zugeführt. Dieser Block wird im folgenden kurz als Puffer 5 bezeichnet; er ermöglicht die notwendige Geschwindigkeitsanpassung mit der Informationsquelle und des weiteren die erforderlichen Signalanpassungen und Codetransformationen, die vor der nachfolgenden Weitergabe erforderlich sind. Ein typisches Speicher- bzw. übertragungssystem enthält einen Speicher 15, aus welchem die zuletzt eingelaufenen Informationen zuerst wieder herauskommen, zur Speisung einer verwendenden Endeinrichtung 29. Da Geschwindigkeitsan-•passungen und Codetransformationen übliche Begleiterscheinungen bei verwendenden Endeinrichtungen sind, ist ein weiteres Puffer- und Steuergerät, im folgenden kurz als Puffer 19 bezeichnet, zwischen dem Speicher 15 und der verwendenden Endieinrichtung 29 vorgesehen. Üblicherweise wird eine Folge von Symbolen aus der Quelle 1 über den Pfad 3 im Puffer 5 ■akkumuliert. Die Symbole werden dann einer Transformationseinrichtung in Form eines Codierers 9 über einen Nebenpfad 7 zugeführt. Der Codierer führt eine 1:1-Verarbeitung durch und liefert die transformierten Symbole über einen Pfad 11 dem Puffer 5 zurück. Steuerinformationen bezüglich Taktgabe und Längenmerkmale der einzelnen Codezeichen werden über !einen separaten Parallelpfad 12 übermittelt. Ähnlicherweise !wird die Transformation der vom Speicher 15 empfangenen und Jim Puffer 19 akkumulierten Zeichen im Decodierer 23 durchgeführt. Dieser Decodierer muß dieselben Originalsymbole wieder- ; gewinnen, die von der Quelle 1 abgegeben wurden. Dazu muß er sowohl die Originalzeichen als auch Längeninformationen herausziehen, um die über den Pfad 21 vom Puffer 19 zugeführte Codefolge ordnungsgemäß aufteilen zu können. Sowohl die Längenmerkmale als auch die Daten der Quellzeichen werden dann dem Puffer 19 über Pfade 22 bzw. 25 zugeführt. SA 976 005
Codierung und Decodierung nach Huffman
In den Fign. 1B und 1C sind die Funktionsblockschaltbilder eines Huffman-Codierers und -Decodiereres nach dem Stande der Technik dargestellt. Es sollen einige Bemerkungen zu den Eigenschaften von Codes nach Huffman gegeben werden. Ein Huffman-Code nutzt die a priori bekannte Auftretenswahrscheinlichkeit p(a,) aus mit k=1,2,...,N, wobei jedem Quellsymbol ic
ein entsprechendes Codewort verschieden großer Länge *-(a, )
N zugeordnet wird mit ρ (a, )>_2~l (ak} und Σ 2~1)±λ. Während
die codierte Folge aus Nullen und Einsen besteht, entspricht
£(a, ) der Bitzahl der Huffman-Codeworte für a, . k κ.
Die Huffman-Codierung der Quellfolge umfaßt die Auffindung eines Codewortes A, und der Länge JKa,) in einem Speicher für die einzelnen Quellsymbole afc, die Verschiebung der vorangehend codierten Folge C um Ä(a,) Bits nach rechts oder links und die Anfügung des Codeworts A, . Die Huffman-Codierung der
iQuellfolge a.a.a wird dann wiedergegeben durch A.A.A, . Dies i ] k ι j κ
wird auch als Kettung der entsprechenden Codeworte bezeichnet.
I In Fig. 1B werden die Quellsymbole a., a., a, seriell aus dem
ι XJK.
;Puffer 5 dem Codierer 9 über den Pfad 7 zugeführt und in einem Eingangsregister 31 aufgenommen. Eine Information a, aus dieisem Eingangsregister 31 entspricht als Adresse einem Huffman-
Codewort A, und einem Längenmerkmal Ma1). Diese Elemente k κ.
wiederum werden in zwei Register 35 und 37 eingegeben.
A, wird darauf aus dem Register 35 in vorgegebene Stellen eines Ausgangs-Schieberegisters 41 übertragen. Das Längenmerkmal Jl (a, ) im Register 37 bedient eine Verschiebesteuerung 39,
JC
die für die Verschiebung des Codeworts A, um eine vorgegebene Stellenzahl sorgt, so daß das nächste Zeichen in das Ausgangsregister nachrücken und gleichzeitig eine Ausgabe über den Pfad 11 erfolgen kann.
¥a7976 005 " 809836/0552
In Fig. 1C ist der entsprechende Decodierer 23 nach Huffman dargestellt. Dieser Decodierer ist ein solcher, wie er in der US-PS 3 883 847 beschrieben ist. Die komprimierte Codewortfolge vom Puffer 19 wird einem Eingangsregister 43 über den Pfad 21 zugeführt. Die maximale Codewortlänge ist im vorhinein 'bekannt. Somit werden bei einer Speichergröße für Worte, wobei Iog2(1/p ) die Länge in Bits des längsten Codewortes ist, zuerst Iog0(1/p ) Bits in das Eingangsregister 43 zwecks Adressierung eines Speichers 47 eingegeben. Die aus dem Speicher 47 ausgelesenen Werte sind die Quellsymbole a, und deren Länge Ma,), welch letztere in ein Register 49 eingegeben wird. Der Inhalt des Registers 49 wird jeweils für die Verschiebung innerhalb des Registers 43 unter Steuerung durch die Verschiebesteuerung 45 verwendet, wobei eine Ausrichtung auf den neuen Anfangspunkt des nächsten zu decodierenden Codeworts erfolgt.
Codewortlängen zur Verbesserung des Kompressionsgrads
Es ist augenscheinlich, daß die Längen von Kompressionscodeworten nach Huffman auf ganzzahlige Werte beschränkt sind. Dabei ist es wohl einzusehen, daß günstigerweise jedes Codewort mit variierender Länge i.(a,) in Beziehung zur relativen Auftretenshäufigkeit p, im Quellalphabet stehen sollte:
p(ak)> 2 K ; p(ak)=2 K +E;.*.A (ak)=log2 [i/p(ak)J +E
Es ist ganz offensichtlich, daß bei &(ak) in Form ganzer Zahlen p(afc) nicht rational ist. Daraus folgt, daß eine Kompressionscodierung mit ganzzahlig abgestuften Codewortlängen keinen größeren Kompressionsgrad aufweisen kann als ein System, bei dem die Codewortlängen auch Brüche enthalten. Die Benutzung von Bruchwerten ist der Fall bei numerativen und arithmetischen Folgecodes.
976 005 &~ÖMT67ST5T
I Codierungsalgorithmus eines Ausführungsbeispiels der Erfindung
In einer gegebenen Folge s von Quellsymbolen a., a. kann jedes weitere Symbol a, als Hinzufügung zu der Folge s betrachtet werden; als Beispiel: s = a.a. und sa, = a.a.a, . Wenn s einem '
I^ iC IjK
Codierer zugeführt wird, soll die entsprechende Ausgabe bezeichnet werden als C(s). Sowohl beim numerativen als auch beim betrachteten Folgecode gelten: s ■*■ C(s) i
sa -> C(sa). I
Die Codierung wird rekursiv wie folgt definiert: ;
L(sa, )= Längenbetrag = L(s)+Ä(a, )
Lisa ) C(sa,)= komprimierte Codefolge = C (s)+P, .,· 2 k
A(ak) = log21/p(ak);Pk_l= Σ ρ(a±);PO=O;PN=1 I Dabei sind p(a, ) und Ä(a, ) zwangsweise so verknüpft,
K K
j daß
! N ..(al
j Σ 2 k'<1.
k-1
Wenn der Längenbetrag aufgeteilt wird in die Summe einer ganzen Zahl und eines Bruchwerts, dann läßt sich die Berechnung der komprimierten Codefolge C(sa.) leichter durchführen. Dann ist:
L(sak) = y(sak) + x(sak)
= ganze Zahl + Bruch
Es möge sein AR = Pk_1'2x(sak). Dann ist C(sak) = C(s)+Ak.2y(sak} 2"yC(sa,) = 2"yC(s) + A, .
j*. Jv
976 005 809836/OS52
Nun sind CK P .j<1 und 0<_x(sa,)<_1# ;
; AO<Ak<2. j
; i
Während A, eine Funktion von k und χ ist, läßt sich dieser Wert mittels einer Tabellenauslesung mit k und χ bestimmen. ;
Jedoch verlangt die Erzeugung eines Folgeabschnitts für C(sa ) '■ !eine sorgfältige Ausrichtung der vorangehend codierten Folge ! C(s) mit dem Tabellenauslesewert A,.
In Fig. 2 ist ein arithmetischer Folgecodierer dargestellt, |der die zweite, abgeänderte Form der Rekursion verwendet. Dem \ {codierer wird jeweils über den Pfad 7 wiederum ein Quellsym- : jbol a, zugeführt zwecks Erzeugung einer komprimierten Codefolge lc(sa, ) auf dem Pfad 11 gleichzeitig mit einer Steuerinformation auf dem Pfad 12, welche aus einem Bruchwert über die Leitung 69 und einem Verschiebewert über die Leitung 77 besteht. '.
Zeitschema I
Die Zeitschemen des Codierers und Decodierers weisen ausreichend Zeit zwischen den einzelnen Taktimpulsen auf, um dem ungünstigsten Fall von Schaltkreisverzögerungen wie Triggereinschaltzeiten und Laufzeiten zu genügen. Fig. 4A erläutert die relative Lage dieser Verzögerungen im Codierer und Fig. 4B das entsprechende im Decodierer. Das Taktflattern wird dabei innerhalb maximal zulässiger Toleranzen angenommen.
Die Codierspeicher 57 und 59 sowie die Decodierspeicher 99, 109 und 117 werden mit den erforderlichen Werten während einer Einleitungsphase geladen. Diese Speicher können Lese/Schreibspeicher, Festwertspeicher oder programmierbare Festwertspeicher sein. Die Möglichkeiten zum Laden der Speicher sind nicht im einzelnen beschrieben, da sie zum bekannten Stand der Technik gehören. (Siehe dazu z.B. Memory Design Handbook, Intel Corp., Santa Clara, Californien, Copyright 1975.)
sä 976 005 8 09836/0552
Das C-Register 87 ist wichtig für die Entwicklung der codierten Folge, da es die höchstwertigen r Bits, nämlich den arithmetischen Operandenteil der voranlaufenden Folge speichert. Das X-Register 67 ist ebenfalls wichtig, da es die q Bits des jeweiligen Bruchwerts speichert. Diese beiden Register werden bei der Einleitung auf null gesetzt; das X-Register 67 könnte auch zu Beginn auf jeden beliebigen Wert eingestellt werden. Der Anfangswert für das C-Register 87 muß jedoch gleich oder kleiner als der Wert (maxC ) sein; dieser steht in Abhängigkeit von x, wie das im Abschnitt "Anforderungen an A und r" erläutert ist. Es ist zu bemerken, daß bei numerativer Codierung der arithmetische Operandenteil der vorangehend codierten Folge C(s) die gesamte Länge der Folge C(s) ist. Beim hierin beschriebenen Verfahren speichert das C-Register 87 einen Codefolgeabschnitt, welcher nur die höchstwertigen r Bits umfaßt, die den arithmetischen Operanden der vorangehend codierten Folge C(s) bilden. Alle geringerwertigen Bits werden einer Verschiebung unterworfen. Vor der arithmetischen Verwendung wird der Inhalt des C-Registers 87 einer Verschiebung nach rechts um y(sa, ) Stellen unterworfen. Wenn dies erfolgt, werden die y(sa, ) am weitesten rechts stehenden Bits des C-Registers 87 als Ausgabefolgeabschnitt für den betrachteten Schritt behandelt und über den Pfad 11 zum Puffer 5 gem. Fig. 1A geführt, wobei der Verschiebewert y(sa, ) über den Pfad 12 übertragen wird, um dem Puffer 5 mitzuteilen, wieviele Bits er aufnehmen soll.
Jedes einzelne Symbol a, wird im Eingangsregister 31 aufgenommen und einem Übersetzer 53 zugeführt. Dieser übersetzer wandelt die einzelnen Symbole in ihr Stellungs- oder Ordnungszahl-Äquivalent k um. Dieser Wert wird über Leitung 55 dem Speicher 57 zugeführt. Der Speicher 57 enthält die Längenangaen £(a, ) nach folgender Beziehung:
I A(ak) = Iog2(1/p(ak)) = y(ak) + x(ak)
j t Bits q Bits
sä 976 005 --eo<lft*6
2ΒΠ1988
Der ganzzahlige Teil y(a, ) enthält t Bits, der Bruch x(a ) dagegen q Bits. Ganz nebenher betrachtet: Leitung 55 enthält η Einzeladern und die Leitungen 61 und 71 enthalten q bzw. t Einzeladern, wie neben schrägen Strichen angedeutet ist.
Der Addierer 63 und der +1-Addierer 75 bestimmen den ganzzahligen Wert y(sa, ). Der Addierer 63 und die getaktete Ausgäbe des X-Registers 67 bestimmen den Bruch x(sa, ). Der Wert y(sa, ) ist ganzzahlig. Sein Wert entspricht einer zu versetzenden Stellenzahl bei der Ausrichtung der vorangegangenen Codefolge C(s) im Schieberegister 79 mit dem A, über Leitung 89, um dabei die höchstwertigen Stellen für C(sa,5 zur Verfügung zu stellen.
Der übrigbleibende Bruch x(sa, ) wird zu Beginn des nächsten Taktzyklus in das X-Register 67 überführt, wie gerade vorher der Wert x(s) in das X-Register zu Beginn des vorangegangenen Zyklus übernommen wurde. Der Wert x(sa, ) zusammen mit k holt
den hinzuzufügenden Wert A, durch Tabellenauslesung im Speicher 59 ab. A, mit r Bits wird über Leitung 89 dem Addierer
1 JC
83 zugeführt. Die neue Codefolge C(sa ) wird gebildet durch Addition von A, im Addierer 83 zum entsprechend geschobenen Wert von C(s). Die y(sa,) geringerwertigen Bits des vorangehenden r Bits langen Folgesegments von C(s) werden zum Puffer 5 gegeben. Beim nächsten Taktzyklus wird das neugebildete Segment der Codefolge C(sa.) über Leitung 85 zum C-Register 87 geführt. Die Zeit zwischen aufeinanderfolgenden Taktimpuljsen ist so bemessen, daß x(sa, ) und C(sa. ) auch bei größtmög- !liehen Schaltkreisverzögerungen erst zur Ruhe kommen können. ■Bei den einzelnen Registerstellen handelt es sich um flankengetriggerte Flipflops. Der Puffer 5 kann so ausgebildet sein, daß er mit jedem Taktimpuls dem Codierer ein neues Symbol a,
zuführt und dabei die y geringerwertigen Bits des vorangehenden Folgesegments von C(s), welches herausgeschoben wurde, löscht. Nach der Codierung des letzten Symbols nimmt der !Puffer 5 den Rest von C(sa ) auf und empfängt den Wert sä 976 0O5 80 9836/05 5 2
2ΒΠ1988
des letzten Bruches x(sa, ).
Größe der Parameter r und q
Wie vorangehend erläutert wurde, stellt C(sa, ) die codierte Folge mit dem Symbol a. dar, das dem Codierer 9 zugeführt wird. C(s) ist die vorangehend codierte Folge. Ihre Länge in Bits umfaßt die Summierung aller vorangehenden Längenangaben 9. (a, ) der vorangehend codierten Zeichen. Die Frage ist jedoch, wieviele Bits dieser Folge C(s) jeweils noch innerhalb des Codierers stehen. Die Antwort darauf ist: eine vorgegebene Zahl "r" der höchstwertigen Bits. Von diesen noch vorhandenen r Bits von C(s) werden die y(sa,) geringerwertigen Bits herausgeschoben, wenn der neue Längenbetrag L(sa, ) bestimmt ist. Dabei bleiben r-y(sa.) Bits von C{s) übrig für die Verwendung als arithmetischer Operand für die geringstwertigen Bits von A, .
Zusammengefaßt:
L(sak) = L(s) + Jl (ak) = y(sak) + x(sak).
Jedoch ist nur der Teil von L(s) noch vorhanden, der dem Bruch x(s) entspricht, d.h. L(s) = x(s). Der ganzzahlige Teil y(s) wurde beim Codieren zur Folgeverschiebung benutzt. Daraus folgt:
L(sa,)=x(s)+£(ak) = ganzzahliger Teil y(sak) + Bruch x(sa, ) .
Bei der Codierung wird der Wert Ak unter Tabellenauslesung aus dem Speicher 59 gewonnen. Die Adresse zur Ansprache des Speichers umfaßt η Bits von k, der Positionszahl von a., und q Bits des verbliebenen Bruches x(sa.). Die Zahl q wird als (unabhängiger Parameter behandelt.
Die r Bits eines herausgezogenen A, müssen mit den r-y(sa, ) Bits von C(s) korrekt ausgerichtet werden. Um dies durchzu- ; führen, wird C(s) um y(safc) Bitpositionen nach rechts verscho-
SA 976 005 8098 36 /Ö 5 52
28Π1988
ben. Infolgedessen werden die geringstwertxgen Bits von A, und das verschobene C(s) korrekt aufeinander ausgerichtet. Um diese Operation verständlich zu machen, soll daran erinnert werden, daß in dem Falle, in welchem A, nach links versetzt wird, C(sa,) = C(s) + A,2y(sak). Wenn C(s) bezüglich A1 nach rechts verschoben wird, bedeutet dies eine Multiplikation beider Seiten der Rekursion mit 2 k , das heißt:
2-y(sak} C(sav) = 2"^8V 1
Die Zahl r bestimmt die für A, geforderte Genauigkeit. Ein wesentlicher Auslegungsfaktor dafür ist die Wahrscheinlichkeit ρ des am wenigsten häufig auftretenden Quellsymbols. Es möge beachtet werden, daß A = P2* ist. Die folgende Möglichkeit sei dazu betrachtet:
Ak Pk-1 λ k una Ak+1 " Pk Z k+l '
Wenn x(sa, ) = x(s'a, .) , dann muß zwischen den P's unterschieden werden, um auch zwischen den A's zu unterscheiden. Um P,>P, Λ zu gewährleisten, muß r>log(1/p ) sein.
JC JC"~ I *—" Iu
Die Zahl von q Bits im verbliebenen Bruch x(sa,) ist ein Maß dafür, wie die augenblickliche Codewortlänge sich dem 1 Ideal nähert. Es ist wohl zu verstehen, daß die ideale Länge log„(1/p(a, )) ist. Weil die Codewortlängen nach Huffman auf ganze Zahlen beschränkt sind, können sie dieses Ideal nicht erreichen. Mit größer werdendem q ist die engere Annäherung an dieses Ideal erreichbar.
! Verschiebung nach rechts gegenüber Verschiebung nach links
Es soll eine eingeklammerte Kennzeichnung zur Beschreibung der Symbolstellung in einer Quellfolge eingeführt werden, wobei C ' = 0 der Anfangswert der codierten Folge und i/ '=0
SA 976 005 8 098 36/05
der Anfangslängenbetrag ist. Um das erste Symbol a' ' einer Folge zu codieren, werden L(1)(1)=y (1)+x(1) und A (1)(x(1))
α.
bestimmt. Anstelle einer Versetzung von A (1) um y Bits nach links und Addition zu C ist auch eine Verschiebung von C umy ' Bits nach rechts und Addition zu A (1) möglieh: 2-y(1).C(1) = A (1) +0.2-y(1).
ei
Bei Codierung der Folge a a wird der neue relative
Längenbetrag L(2) = £(2) + x(1).
y = y(a a ) bezeichnet den ganzzahligen Teil von L
x(2) = x(a(1)a(2)) bezeichnet den Bruchteil von L(2).
Die neue codierte Folge ist:
2-y(2).c(2) =c(1).2-y(2) +A (2)(x(2))#
Zur Codierung des i-ten Quellsymbols bei gegebener Codefolge
erden di
g
C ' und dem Bruch χ werden die Rekursionen:
- =Aa
Mit dem Quellsymbol a., codiert gilt dann:
L(sa, ) = l{a, ) + x(s) = y(sa, ) + x(sa, ) ic Jc Jc Jc
JC JC
Anforderungen an Afc und r
Jedem Symbol a, entspricht eine Länge ü, , die den Versatzbe-Jc Jc
trag bei der Verschiebung von C(s) bei der Codierung beeinflußt. Der andere Faktor, der den Verschiebungswert beeinflußt ist der alte übrigbehaltene Bruch x(s). Der Verschiebewert y(sa,), der neu anfallende Bruch x(sa, ) und die Hinzufügung
976 005 - β09β36/05 5
2B01988
A, genügen der nachstehenden wichtigen Ungleichung, die als arithmetische Codierungleichung bezeichnet werden möge:
Die hinzuzufügenden Werte A, .. und A, , die benachbarten Symbolen a, .. und a, entsprechen, müssen der Größe nach ausreichend verschieden sein und der Verschiebebetrag muß ebenfalls ausreichend groß sein, um 2 ^ k «C(s) hinreichend klein zumachen, so daß die Summe kleiner wird als A, * . Wenn diese Vorschrift nicht eingehalten wird, arbeitet die arithmetische Codierung nicht. Es soll ein Ausblick geworfen v/erden auf die Decodierung von 2~^ k -C(sa,); C(sa,) ist mindestens so groß wie A, , da es sich ja um eine Hinzufügung handelt. Aus der oben angegebenen Ungleichung ist ebenfalls bekannt, daß 2~y(sak .C(sa.) kleiner ist als A,+1 . Des weiteren hat der Operandenteil von C(sa, ) nur r Bits und x(sa ) hat q Bits.
r+CT
Deshalb existieren nur 2 4 mögliche Kombinationen von C(sa )
und x(sa ). Für jede dieser Kombinationen ist das Symbol ic
a, , das zu C(sa,) beiträgt, vorbestimmt; seine Ordnungszahl k
T"4-n
kann als entsprechendes Wort in einem 2 q-Wortspeicher geispeichert werden.
;Nun soll die Existenz einer Tabelle von Werten A, betrachtet ;werden, die das Codieren und Decodieren ermöglicht. Aus der arithmetischen Codierungleichung ergibt sich:
ι Praktisch sind die Werte A, Näherungen an r Bits. Die Genauig-
K
keit der hinzugefügten Werte A, hängt ab von dem größtmöglichen Wert C(s). Dieser hängt wieder ab vom Wert x1 des vorangegangenen behaltenen Bruchs und vom Wert k1 des vorangehend codierten Symbols, χ soll den augenblicklichen Wert des zugehörigen Bruchs bezeichnen und x1 den vorangehenden Wert; y(sak) +x= &(ak) + x1 ι wobei y(sa,) = I (afc) + x1 - x.
sä 976 cos - ■■ 808838/0662
Aus dieser Beziehung ist zu erkennen, daß für gegebene Werte χ und k der Wert x1 der Bruchanteil vom 1+x-Bruchanteil von
2,(a,) ist. Da A (x)>Aw i(x)>...A1(x), ist für einen gegebenen κ η η"" ι ι
behaltenen Bruch χ der Wert max C >A (χ). Dabei bezeichnet max C den maximalen Wert von C(sa,) = A, (x) + 2~y k -C(s) , was sich codieren läßt mit einem laufenden übrigbleibenden Bruch x. Das Decodierungskriterium ist dann für jedes k<N und jeden möglichen Bruchwert x:
Ak+1(x)-Ak(x)>max Οχ, .2"VX'+X
Die eben angegebene Gleichung bedeutet keine Einschränkungen für An(X). Wenn jedoch A^(x1) zu groß wird, dann wird max C größer, womit zwangsweise die Differenzen A. .. (x)-A, (x) größer werden und wiederum A (x) noch größer. Um diesem Problem beizukommen, müssen obere Grenzen für max C und A (x) angegeben werden:
Wenn A (x)·2~x+2~£n <1 für alle χ ist, d.h., wenn A (χ)+2χ~λη<2χ ist, dann ist max C <2.
Π — X—
Wenn C maximal ist und das Symbol a codiert wird, dann gilt:
max C = A (χ) + max C .2"£n"X +X χ η χ
Durch Multiplikation beider Seiten mit 2~X ergibt sich: max C ·2~Χ= A (x).2"X+(max C -2~X 1-2^n
X Xl X
Aus der ebengenannten Gleichung ergibt sich dann für alle χ mit max C = 2X:
A (χ)-2"χ+2"*η = 1
η
Es läßt sich durch Induktion zeigen, daß für alle χ und
K (χ)·2"χ+2"λη <1 auch max C <2X gilt.
ι η χ
SA976005 809 836/0552
Decodierungsalgorithmus für das Ausführungsbeispiel der Erfindung
In Fig. 3 ist ein arithmetischer Folgedecodierer dargestellt. Dieser Decodierer arbeitet mit dem Puffer 19 zusammen, wobei er über den Pfad 21 eine komprimierte Folge aufnimmt und die decodierten Symbole über den Pfad 25 gleichzeitig mit Längeninformationen über den Pfad 22 abgibt, welche für die überführung komprimierter Bitfolgesegmente vom Puffer zum Decodierer benötigt werden. Die Verschiebesteuerinformationen werden über die mit 123 bezeichnete Leitung des Steuerpfads 22 übermittelt.
Um die Funktionen des Decodierers einzuleiten, wird der Wert des Bruches x(sa, ) am Ende einer Codierfolge vom Puffer 19 in ein X-Register 103 über die Leitung 101 des Pfades 22 übertragen. Die höchstwertigen r Bits von C(sa, ) werden in ein C-Register 95 gebracht. Die r Bits vom Register 95 bilden zusammen mit den q Bits aus dem Bruchregister 103 eine Adresse zur Ermittlung der Positionszahl k des letzten zu decodierenden Symbols a,, wobei dieser k-Wert aus dem Speicher 99 gejwonnen wird. Der Wert A, wiederum wird im Speicher 109 ermittelt, indem dieser durch η Bits des k-Werts und q Bits von x(sa, ) über die Leitungen 107 und 105 adressiert wird.
Es ist zur Extrahierung der komprimierten codierten Elemente ,die Verfolgung der komprimierten Codefolge erforderlich. Dazu wird einerseits durch Subtraktion die relative Größendifferenz jzwischen der codierten Folge über Leitung 97 und A, ermittelt, welches über Leitung 111 zum Subtrahierer 113 geführt wird. Die verschobene Folge C(s) auf Leitung 115 wiederum wird zwecks Linksverschiebung dem Schieberegister 91 zugeführt, um dort zusätzlich mit Füllbits versehen werden zu können.
sä 976ÖÖ5 809836/0Β5Ϊ
7R01988
Um den ganzzahligen Teil und den Bruchanteil von I(a.) zu ermitteln, ist die Adressierung eines Speichers 117 über Leitung 107 erforderlich. Wie in Fig. 3 dargestellt, wird y(a, ) einem
ic
Addierer 121 über Leitung 119 und x(a, ) dem Minuseingang eines Subtrahierers 125 zugeführt. Der Bruchwert x(s) auf Leitung 129 wird als Differenz zwischen dem Bruchwert x(sa, ) und x(a, ) ermittelt. Der ganzzahlige Teil des Längenbetrags des neuen Codeworts, nämlich y(sa,), wird mittels einer +1-Addition im Addierer 121 durch Addition des Überlaufsignals des Subtrahierers 125 über den Inverter 127 zu y(a, ) gewonnen.
Bei der Decodierung des letzten Symbols muß das Register 95 den Anfangswert von C (üblicherweise 0) und das Register 103 den Anfangswert des übrigbleibenden Bruchs enthalten. Diese können als Prüfmerkmale für die Verarbeitung der codierten Folge verwendet werden.
Der jeweilige Symbolwert a, wird ermittelt, indem der Wert k auf Leitung 105 dem übersetzer 131 zugeführt wird. Dabei läuft die Umkehr der Vorgänge ab, die sich im übersetzer 53 des Codierers gemäß Fig. 2 abspielen. Die Ausgabe des Übersetzers 131 wird über den Pfad 25 zurück in den Puffer 19 geführt.
Zahlenbeispiele
Die Erfindung wird durchsichtiger, wenn die Ausführungsbeispiele und deren Funktion anhand der nachfolgenden Codier- und Decodierbeispiele studiert werden. Die erreichbaren Verbesserungen werden noch einleuchtender, wenn ein Vergleich gemacht wird mit der Codierung und Decodierung desselben Quellalphabets !nach Huffman.
SA976OOS 809836/0552
Bestimmung der Werte A,
Anhand eines Beispiels soll die Methodik der arithmetischen Codierung erläutert werden. Dazu soll ein Quellalphabet S = a., a_, a3 und a. betrachtet werden mit p. = 0,65, ρ = 0,075, p3 = 0,025 und p. = 0,25. Für das Alphabet S beträgt die Entropie 1,31729 Bits pro Symbol und die Längen für den entsprechenden Huffman-Code {,. = 1, £„ = 3, £., = 3 und I. = 2. Die Durchschnittslänge pro Symbol ist 1,45 Bits; es wird dabei eine codierte Folge erreicht, die ungefähr 72,5 % der Länge der Quellfolge entspricht, für die zwei Bits pro Quellsymbol angenommen werden. Die Quellsymbole seien a1 = 00, a„ = 01, a3 = 10 und a. = 11. Die theoretisch bestmögliche Kompression wäre 1,31729 oder 65,86 % des Quellalphabets S.
Nun soll demgegenüber die arithmetische Codierung betrachtet werden mit z.B. einem Bruchwertbit für die Länge, d.h. q = Das Problem ist nun die Findung eines Längensatzes £.., £?, £_ und l., mit welchem eine Minimierung der Durchschnittslänge erreichbar ist. In diesem Falle kann mit Längen nach Huffman ibegonnen werden und die idealen Längen Iog2(1/p.) = 0,62149; ■3,77370; 5,32193 und 2 berechnet werden. Eine volle Ausschöp- ;fung der möglichen Variationen über diese Werte hinaus führt I zu den Längen l~ =0,5, £_ = 4, Jl3 = 4,5 und I. = 2,5; dabei 'erbringt die Anwendung der Kraft-Ungleichung 0,990578, was kleiner ist als 1. Für das oben betrachtete Quellalphabet S ergeben diese Längen eine Durchschnittslänge von 1,3625, d.h. eine Kompression auf 68,125 %, was auf jeden Fall besser ist als eine Symbolcodierung nach Huffman mit Kompression auf 72,5 %.
Bei der Auslegung der Werte A, für Längen 0,5; 4; 4,5 und 2,5
_o :
sind die idealen Wahrscheinlichkeiten p' =2 k. Dabei er-
k ι
SÄ 97B ÖÖ5
609836/05
geben sich bei den eben angegebenen Längen: p' = Of7071, pl 2 = 0,0625, p'3 = 0,04419 und p1 = 0,17678.
Für den Bruch χ = 0 stellen die Werte A, (0) die Annäherung an q Bruchbits der idealen, kumulativen Wahrscheinlichkeiten pV_i dar. Wenigstens fünf Bruchbits werden vorgeschlagen, deren kleinster p'3 binär 0,0000101101... ist.
A^(O) = p'o = 0,0 = 0,00...0
A'2(0) = p1 = 0,7071067+ = 0,10110101000+
A'3(0) = p'2 = 0,7696067+ = 0,11000101000+
A'4(0) = p'3 = 0,8138009+ = 0,11010000010+
Die auf der Hand liegende zu lösende Aufgabe ist die Näherung
von A' (0) an r (ein Ganzzahlbit und r-1 Bruchbits), wobei κ
den Decodierbarkeitskriterien entsprochen wird. Es sollen max C <2° und max C_ c<20'5 angenommen werden. Eine Aufrundung
auf (r-1) = 5 Bruchbits ergibt:
Erster Versuch (x=0) Ak+1~Ak x1 (2X*)·(2~£k~x'+x)
A k+rAk X1 5 (2X') -(2~£k~X
0, 71875 0, 0,7071067812
0, 0625 0 5 0,0625
0, 0625 0, 5 0,044194174
0, 0,1767766953
A1(0)=0,0
A2(O)=(O,10111)2=O,71875
A3(0)=(0,11001)2=O,78125
A4(O)=(O,11011)2=O,84375
Angenommen, max C =1 und max C^ _=1,1414. Dann ist: Ak+1(0) - Ak(0)>max C ,-2Äk+xl mit k=1, 2 und
Jedoch ist A4(O)+2"~Ä4 = 1,O2O526695>1. Dies kann korrigiert ,werden durch Übergang auf (r-1) = 6 Bruchbits und Subtraktion ι _r
von 2 von A (0), A3(O) und A.(0) beim ersten Versuch.
SA976005 809836/0552
7801988
Zweiter Versuch (x=O) Ak+i"Ak (2X") · (2~V"X'+X)
A1(O)=O^O 0,703125 0,7071067812
A2(O)=(O,101101)2=O,7O3125 0,0625 0,0625
A3 (O) = (0,11000D2=O,765625 0,0625 0,044194174
A4(O)=(O,110101)2=O,828125 0,1767766953
In diesem Falle ist A4(0)-A3(O)=O,0625. Dies ist um mehr als 2~6 größer als 2~£3 = 0,044194174. Damit kann auch A4 um 2~6 kleiner gemacht werden.
Dritter Versuch
A1(O)=O
A2 (O) = (0,101101) 2=0,703125 A3(O)=(O,110001)2=0,765625 A4(O)=(O,110100)2=O,8125
Nun ist 0,8125 + 2~Ä4 = O,9892766953<2°.
Es verbleibt jedoch ein Problem mit A„ (0)-A1 (0) <2 1. Wenn das
max C j. klein genug ist, dann sind die Decodierbarkeitsu, 3
kriterien noch zu erfüllen auf der Grundlage der aktuellen Werte max C <2° und max Cn [.<20'5.
Wie im Falle mit χ = 0 soll mit der idealen Hinzufügung A' (0,5) = 2 ' P1V--I begonnen werden:
IA' 1 (0,5) = 0,0 = 0
;A'2(O,5) = 1 = (1,000000O)2
!a'3(O,5) = 1,088388348 = 1,00010110+ A'4(O,5) = 1,150888348 = 1,00100110+
Erster Versuch (x=0,5): Aufrundung der idealen Werte
Ά —Α
Ak+1 k
(2X<) · (2~V"X'+X)
0,703125 0,7071067812
0,0625 0,0625
0,046875 0,044194174
0,1767766953
SA975Ö°5 - 80 98 36/0B5
A1 (0,5)=0,000000=0 1 0 1
A2(0,5)=1,000000=1 0,09375 0,5 0,08838834765
A3(0,5)=1,000110=1,09375 O,0625 0 0,0625
A4(0,5)=1,001010=1,15625 0 0,25
Eine Probe mit A4(0,5) ergibt: A4(0,5)+2°'5~Äk = 1,4Ο625<20'5 = 1,41421; dies wird erfüllt bei der Kenntnis von A4(O) und A4 (0,5). max C_ und max CQ 5 können bestimmt werden durch Codierung einer Folge von Symbolen a.. Zu Anfang wird C auf 0 angenommen und C nach oben begrenzt auf 2 ; Cn c wird
0 5 ' mit einer oberen Grenze angenommen von 2 ' . Diese monoton zunehmenden Folgen konvergieren nach max Cn bzw. max Cn ,.. max CQ ist bestimmt worden zu 0,9879032758, was binär 0,111111001110011100111...001H... entspricht, max Cn 5 ist 1,403225806, d.h. binär 1,011001110011100111...001H... mit diesem neuen Wert von max Cn -· jÄ- (0) -A1 (0)} = 0,703125 wird geprüft gegen max Cn c·2~Ä1~O/5=(1,403225806)·(0,5) = 0,701612903. Die Decodierbarkeitskriterien werden dabei erfüllt.
Wenn dieser letzte Versuch die Decodierbarkeitskriterien nicht erfüllt hätte, dann würde die Erhöhung der Zahl von Bruchbits (r-1) eine engere Annäherung an die ideale Hinzufügung A1, (x)
_fl K
!ergeben. Solange Σ2 k<1 ist, existiert immer eine Lösung für q>0 (d.h. für die Bruchlänge von L· ).
Um das Beispiel fortzuführen, müssen die Speicher im Codierer !und Decodierer betrachtet werden. Der Codierspeicher 57 enthält
Adresse (k) SA 976 005 Wert Uk)
00 (000,D2
01 (100,O)2
10 (1OO,1)2
11 J010'1J 2
809836/0552
Der Speicher 59 enthält:
7801988
Adresse (x;k)
O; 00
O; 01
O; 10
0; 11
1; 00
1; 01
1; 10
1; 11
Wert Ak(x)
(0,000000)2 (O,1O11O1)2 (0,110001)2 (0,110100)2 (0,000000)2 (1,000000)2 (1,00011O)2 (1,001010)o
Im Decodierer gilt für die Speicher 109 und 117 dasselbe wie für die Speicher 59 und 57 im Codierer. Der Speicher enthält folgende Einzelheiten:
Adresse x; C 0,000000
ψ
0,101100
Codierung von k Symbol
O;
0;
0,101101 00
•1-
00
a1
0; 0,110000 01
I
a2
0; 0,110001
0,110011
01
0;
0;
0,110100
1 , Λ 1111
10
ψ
10
a3
0; 0,000000
0,1Ψ11111
11
J,
a4
0; 1,000000
1,000101
Λ
1; 1,000110 00
a1
1; 1,001001 00
1;
1;
1,001010 01
4-
01
a2
1; 1,111111 10
ψ
10
a3
1; 11
I
1; Y
11
a4
1;
SA 976 005
8O9836/0S52
Beispiel: Codierung einer Symbolfolge
Angenommen, die Folge a4a„a1a3 sei zu codieren. C bezeichnet den Inhalt des C-Registers. Es ergibt sich dabei folgender Ablauf:
Takt (1) a44=2,5; x=O,5 C(1*=A4(0,5)=(1,001010)2 Takt (2) a) a2+&2=4; y=4, x=0,5; A3(0,5)=(1,000000)2
b) C wird um vier Stellen nach rechts verschoben und zu A_(0,5) hinzuaddiert:
(2)
Cv '=1;0OO1OO1O1O. Die geringstwertxgen vier
Bits gehen zum Puffer. C=1,000100.
Takt (3) a) a .j->£.,= 0,5; y=1, x=0 und A1(O)=O
(2)
b) C wird um eine Stelle nach rechts geschoben und zu A1(0) hinzuaddiert:
(3)
Cv '=0,10001001010. Das geringstwertige
Bit geht zum Puffer; C=O,100010. Takt (4) a) a^i 3=4,5; y=4, x=0,5; A3 (0,5) =1,000110
b) C wird um vier Stellen nach rechts verschoben und zu A1(0) hinzuaddiert:
Cv '=1,001000001001010. Ein O-Bit geht zum Puffer. C=1,001000.
Entsprechende Decodierung
Gegeben sind 0=1,001000001001010 und ein übrigbleibender Bruch x=0,5. Der Decodierer wird zu Beginn mit seinem X-Register auf null und mit seinem siebenstelligen C-Register auf 1,001000 gestellt.
Takt (1) a) Die Adresse x; C = 1; 1,001000 für den Speicher 99 liest aus k(iO)=a3·
SA 976 005 809836/055 2
b) A-.=4,5. Das neue χ ist O. y=£,+ neues χ augenblickliches y=4.
c) A3(O,5)=1,000110 wird von 1,001000 subtrahiert. Dabei ergibt sich 0,000010.
d) Dieser Wert wird um vier Stellen nach links versetzt, mit den nächsten vier Bits vom Puffer (0010) aufgefüllt und als C gespeichert: 0,100010. C im Puffer = 01010.
Takt (2) a) Die Adresse x; C = 0;0,100010 für den Speicher 99 liest aus k(OO)=a...
b) £..=0,5. Das neue χ ist O. y=O,5+O,5=1.
c) A1 (0,5)=0,000000 wird von 0=0,100010 subtrahiert.
d) Das Ergebnis wird um eine Stelle nach links versetzt mit einem Bit (O) vom Puffer aufgefüllt und im Speicher als C gespeichert: 1,000100. C im Puffer = 1010.
Takt (3) a) Die Adresse x; C= 1; 1,000100 für den Speicher 99 liest aus k(01)=a_.
b) Ä2=4* Das neue x ist °'5· y=4,5-O,5=4.
c) A2(O,5)=1,000000 wird von C=1,000100 subtrahiert. Dabei ergibt sich 0,000100.
d) Dieser Wert wird um vier Stellen nach ; links versetzt, mit vier Bits (1010) vom j Puffer aufgefüllt und im Speicher als C ! gespeichert: C=1,001010. Der Puffer ist '■
jetzt leer. j
ι Takt (4) Der Puffer ist jetzt leer, was andeutet,
daß der letzte Schritt abzulaufen hat.
sä 976 005 8098 36/θΊ>5Ϊ
a) Die Adresse χ; C=O; 1,001010 für den Speicher 99 liest aus k(11)=a..
b) £.= 2,5. Das neue χ ist O. y=2.
c) A4(0,5)=1,001010 wird von C=1,001010 subtrahiert. Dabei ergibt sich 0,000000.
d) Der Puffer berücksichtigt jetzt keinen Verschiebungswert mehr. Die Decodierung ist vollständig durchgeführt.
Eine Prüfung muß jetzt ergeben, daß das C-Register lauter Nullen enthält und daß das X-Register ebenfalls auf seinem Ursprungswert 0 steht. Sollte dies nicht der Fall sein, dann ist ein Codier- oder Decodierfehler oder ein übertragungsfehler aufgetreten.
Zusammenfassung
Es wurden Schaltungsanordnungen beschrieben, die ein Verfahren zur kompaktierenden Codierung und zur wieder dekompaktierenden Decodierung binärer Bitfolgen durchführen. Dabei ist die Blockbildung der Folgeelemente entsprechend der Codierung nach Huffman und ein quasi-endloser Speicher, wie bei der !einfachen numerativen Codierung notwendig, nicht erforderlich. Das benutzte Verfahren codiert nacheinander die einzelnen
[Begriffe bzw. Symbole einer Symbolfolge s=a.a Jeder
!einzelne Begriff a, in einem Quellalphabet mit N Symbolen jführt zu einer neuen codierten Folge C(sa, ) und einem neuen jLängenbetrag L(sa,). Das Verfahren und die ausführende Schaltungsanordnung umfassen die Schritte der Bildung von L(sa,) nach der Rekursion L(sa, )=L(s)+Ä (a, ) , wobei &(a.) eine rationale Näherung des Iog21/p(a,) ist, und wobei p(a,) die a priori Auftretenswahrscheinlichkeit von a, ist und &(a. ) so dimensioniert sein muß, daß der Ungleichung nach Kraft entsprochen wird:
I 2"*<ν<1
k=1
sä 976 005 go 98 36yοs s 2
C(sak) wird nach der Rekursion C(s) + [Pk-1 '211^k1 !gebildet.
j k-1
iDarin ist P, ,= Σ ρ(a.) die kumulative Auftretenswahrschein-
I 1^""1 i=1 *
,lichkeit bei einer beliebig gewählten Anordnung aller Symbole.
Anstelle einer Vorhineinzuteilung von Codeworten zu allen !Symbolen entsprechend der Codierung nach Huffman wird nach dem der Erfindung zugrundeliegenden Verfahren für die Bildung der Folge C(sa. ) die Ordnungszahl (Stellungszahl k) des jeweiligen Symbols a. nach seiner Häufigkeit, der Längenbetrag L(sa.) und die letzten Bits der vorher gebildeten komprimierten Symbolfolge C(s) berücksichtigt. Die Benutzung von nur wenigen Bits der gerade vorher codierten Folge C(s) zur Bestimmung von C(sa, ) begrenzt den erforderlichen Speicher auf eine annehmbare Größe.
SA 976 005 8 0 98 3 6/0552

Claims (1)

  1. PATENTANSPRÜCHE
    c
    1. Schaltungsanordnung zur arithmetischen Codierung von Folgen von Symbolen aus einem endlichen Quellalphabet, gekennzeichnet durch die Kombination der folgenden
    : Merkmale:
    Ein erster Speicher (57) , aus dem für jedes zugeführte Symbol a, eine Längenangabe *(a. ) auslesbar ist;
    ; ein erster Addierer (63, 75), der die jeweils ausgelesene Längenangabe Ka, ) mit dem sich bei der Codierung vorangehend zugeführter Symbole ergebenden Längenbetrag
    L(s) laufend zur Berechnung des jeweils sich bei der Codierung weiterer Datenfolgeabschnitte ergebenden neuen Längenbetrags L(sa. ) addiert,
    j wobei jeder neue Längenbetrag L(sa. ) aus einem ganzzahligen Teil y(sa. ) und einem Bruchteil xisa^) besteht; ein zweiter Speicher (59), aus dem für jedes zugeführte Symbol a, ein Wert A. vorgegebener Stellenzahl r auslesbar ist, der bestimmt wird durch den jeweiligen neuen Längenbetrag Lisa. ) und andererseits durch die kumulative Auftretenswahrscheinlichkeit des zugeführten Symbols in einer vorgebbaren Häufigkeitsanordnung der insgesamt zuführbaren Symbole;
    eine Verschiebeanordnung (Schieberegister 79), mit deren Hilfe entsprechend dem ganzzahligen Teil yCsa^) ι des jeweils berechneten neuen Längenbetrags Lisa. ) die j y geringerwertigen Stellen des vorangehend gebildeten Abschnitts der Codefolge C(s) vernachlässigend herausschiebbar sind;
    ein zweiter Addierer (83), dem einerseits der aus dem zweiten Speicher ausgelesene Wert A. vorgegebener j Stellenzahl r und dem andererseits eine vorbestiraaie. j Zahl der bei der vorgenannten Verschiebung übrigbleibenden höherwertigen Stellen des vorangehend gebilde- ! ten Abschnitts der Codefolge C(s) bei der laufenden ι additiven Berechnung jeweils eines neuen, an die voran- \ SA 976 005 87Γ9 8 !5 8 /Ö 5 %7
    — INSPECTED
    gehende Codefolge C(s) anhängbaren Folgeabschnitts arithmetisch zu codierender Symbole zugeführt werden.
    2. Schaltungsanordnung nach Anspruch 1, dadurch gekennzeichnet ,
    daß nur die vorgegebene Stellenzahl r der beim Verschieben übrigbleibenden werthöchsten Stellen der vorangehend gebildeten Codefolge C(s) als arithmetischer Operand dem zweiten Addierer (83) zugeführt wird.
    3. Schaltungsanordnung nach einem der vorangehenden Ansprüche, dadurch gekennzeichnet,
    daß das verwendete endliche Quellalphabet Symbole wenigstens quasi-konstanter relativer Auftretenshäufigkeit umfaßt,
    wobei die vorgegebene Häufigkeitsanordnung der Symbole auf abnehmender relativer Auftretenshäufigkeit beruht.
    4. Schaltungsanordnung nach einem der vorangehenden Ansprüche, dadurch gekennzeichnet,
    daß die jeweils aus dem ersten Speicher (57) ausgelesene, dem zugeführten Symbol a^ entsprechende Längenangabe Ma.) mit dem bei der vorangehenden Codierung sich ergebenden Längenbetrag L(s) addiert den zugehörigen, aus dem ganzzahligen Teil y(sa, ) und dem Bruchteil x(sa. ) bestehenden neuen Längenbetrag Lisa. ) nach dem Zusammenhang
    L(sak) = L(s) + A(ak) » y(sak) + X(S^) ergibt,
    wobei y(sa.) und xfsa, ) getrennt am Ausgang des ersten Speichers verfügbar sind.
    5. Schaltungsanordnung nach einem der vorangehenden Ansprüche, dadurch gekennzeichnet,
    daß der jeweils aus dem zweiten Speicher (59) ausgelesene, vom zugeführten Symbol a. und vom neuen Längenbe-
    SA 976 005 80 9836/05S2
    trag Lisa.) abhängige Wert A. vorgegebener Stellenzahl r dem nachstehenden Zusammenhang entspricht:
    mit
    und pt-i a·"·8 kumulativer Auftretenswahrscheinlichkeit der einzelnen Symbole bei der gewählten Häufigkeitsanordnung .
    6. Schaltungsanordnung nach Anspruch 5f dadurch gekennzeichnet , daß Aj^ im folgenden Bereich liegt: i
    x(sa.) -(r-1) ,. x(sa.) -(r-1)
    • 2 —2 I <A < IP ·2 +2 I
    7. Schaltungsanordnung nach einem der vorangehenden An- : Sprüche, dadurch gekennzeichnet, ι daß die vorgesehene Verschiebeanordnung (Schieberegister 79) zur Verschiebung des vorangehend gebildeten Ab-
    : schnitte der Codefolge C(s) um eine vom ganzzahligen \ \ Teil y(sa. ) des jeweiligen neuen Längenbetrags Lisa. ) \ abhängige Stellenzahl y nach folgendem Zusammenhang j dimensioniert ist:
    ; -y(sa.) -y(sa. )
    j 2 K .C(sak)-2 K .CisJ+Ak
    t mit C(sa. ) als neu ergänzter Codefolge.
    8, Schaltungsanordnung nach einem der vorangehenden Ansprüche, dadurch gekennzeichnet,
    daß für den jeweiligen neuen Längenbetrag der folgende Zusammenhang besteht:
    SÄT976ÖÖ5 δΜδΤθ /^ ΒΊΓ2
    2801908
    mit x(s) als dem Bruchteil des Längenbetrags L(s).
    9. Schaltungsanordnung nach einem der vorangehenden Ansprüche, dadurch gekennzeichnet, daß die vorgegebene Stellenzahl r>log1/p ist, mit ρ
    *"~ III HI
    als der Wahrscheinlichkeit des am wenigsthäufig auftretenden Symbols a, .
    10. Schaltungsanordnung nach einem der vorangehenden Ansprüche, dadurch gekennzeichnet, daß die jeweils ausgelesene Längenangabe &(&i.) eine q-stellige rationale Näherung an den inversen Logarithmus der Auftretenswahrscheinlichkeit des jeweils zu codierenden Symbols a, ist.
    11· Schaltungsanordnung zur Arithmetischen Decodierung einer mit einer Schaltungsanordnung nach einem der vorangehenden Ansprüche gewonnenen codierten Datenfolge mit dem ziel der wiedergewinnung der ursprünglich auf der Codierseite eingegebenen Symbolfolge, gekennzeichnet durch die Kombination der folgenden Merkmal·s
    Eine Verschiebeanordnung (Schieberegister 91), der einerseits ein« vorgegeben· Zahl r von Stellen der von der Codierseite zugeführten Codefolge C(Sa^) und andererseits t Stellen des ganczahligen Teils yCsa^) des Längenbetrage L(Sa^) eingegeben wird; ein erster Speicher (99), der durch die höchstwertigen r Stellen der «uftftihrten Cod*folge C(sak) sowie andererseits durch g Stellen des Bruchteils x(sa^) adressiert wird und an dessen Ausganf die Ordnungszahl k des jeweils su deoodierenden Syefcola a^ innerhalb der für die Codierung «wählten Hä«fifk»lteanordnung der Quellalphabet β jrwbele abnehmbar isti ein swelter Speicher (109), der einerseits dwröh die
    sä 976 005 809836/0552
    aus dem ersten Speicher jeweils ausgelesene Ordnungszahl k sowie andererseits durch den Bruchteil x(sa. ) adressiert wird und an dessen Ausgang dabei der Wert A. verfügbar ist;
    ein erster Subtrahierer (113), dessen Pluseingang die höchstwertigen r Stellen der zugeführten Codefolge C(sa.) von der vorgenannten Verschiebeanordnung und dessen Minuseingang der aus dem zweiten Speicher ausgelesene Wert A. zugeführt wird, wobei am Subtrahiererausgang die r-stellige Differenz 2~v ^k' *C(s) abnehmbar ist;
    ein dritter Speicher (117), der mit der Ordnungszahl k vom ersten Speicher adressiert wird und an dessen Ausgang die zugehörige Längenangabe Ma.) des jeweils wiederzugewinnenden Symbols a, in Form ihres ganzzahligen Teils y(«O und ihres Bruchteils x(a k) abnehmbar 1st; ein zweiter Subtrahierer (125), dessen Pluseingang der Bruchteil x(sa. ) des Längenbetrags L(sa.) und dessen Minuseingang vom dritten Speicher der Bruchteil X(2O zugeführt wird;
    ein +1-Addierer (121), dessen erster Eingang mit dem y(a.)-Ausgang des dritten Speichers und dessen zweiter Eingang mit dem Überlaufausgang des zweiten Subtrahierers über einen Inverter (127) verbunden ist, wobei am Addiererausgang der jeweilige ganzzahlige Teil yisa^) ■
    ι abnehmbar ist; !
    j eine Verschiebeanordnung (Schieberegister 91), der einerseits die Differenz in der Form 2~y*sak/ ·0(8) j vom Ausgang des ersten Subtrahierers (113) sowie ande- | rerseits der ganzzahlige Teil y(sa. ) vom Ausgang des j
    ; +1-Addierers (121) eingegeben wird, wobei in diese
    ! Verschiebeanordnung jeweils die nächsten y(sa, ) höchstwertigen Stellen der zugeführten Codefolge eingegeben werden und um yisa^ Stellen nach rechts verschoben werden;
    sä 976OO5 BÜ9836n)5S~2
    "" 6 ■"
    ein Register (103), das laufend den jeweiligen Bruchteil x(sa, ) des Längenbetrags L(sa.) bereithält; ein Übersetzer (131), der für jede vom ersten Speicher (99) abgegebenen Ordnungszahl k das zugehörige wiederzugewinnende, auf der Codierseite eingegebene Symbol a, abnehmbar macht.
    12. Schaltungsanordnung nach Anspruch 11, dadurch gekennzeichnet,
    daß eine Nullprüfvorrichtung vorgesehen ist, der die empfangene Codefolge C(sa, ) und des weiteren der Bruchteil x(sa.) des zugehörigen Längenbetrags L(sa. ) zugeführt werden,
    wobei dann, wenn die Nullprüfvorrichtung die beiden vorgenannten Werte als null erkennt, die ordnungsgemäße Decodierung der gesamten von der Codierseite zugeführten Datenfolge gegeben ist.
    SA 976 005
DE19782801988 1977-03-04 1978-01-18 Arithmetische codierung von symbolfolgen Withdrawn DE2801988A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US05/774,365 US4122440A (en) 1977-03-04 1977-03-04 Method and means for arithmetic string coding

Publications (1)

Publication Number Publication Date
DE2801988A1 true DE2801988A1 (de) 1978-09-07

Family

ID=25101022

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19782801988 Withdrawn DE2801988A1 (de) 1977-03-04 1978-01-18 Arithmetische codierung von symbolfolgen

Country Status (5)

Country Link
US (1) US4122440A (de)
JP (1) JPS53110338A (de)
DE (1) DE2801988A1 (de)
FR (1) FR2382718A1 (de)
GB (1) GB1566238A (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0045075A1 (de) * 1980-07-29 1982-02-03 Siemens Aktiengesellschaft Verfahren zur Umwandlung von linear codierten digitalen Signalen in nichtlinear codierte digitale Signale gemäss einer dem A-Gesetz gehorchenden Mehrfachsegmentkennlinie

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4463342A (en) * 1979-06-14 1984-07-31 International Business Machines Corporation Method and means for carry-over control in the high order to low order pairwise combining of digits of a decodable set of relatively shifted finite number strings
US4286256A (en) * 1979-11-28 1981-08-25 International Business Machines Corporation Method and means for arithmetic coding utilizing a reduced number of operations
US4506325A (en) * 1980-03-24 1985-03-19 Sperry Corporation Reflexive utilization of descriptors to reconstitute computer instructions which are Huffman-like encoded
US4295125A (en) * 1980-04-28 1981-10-13 International Business Machines Corporation Method and means for pipeline decoding of the high to low order pairwise combined digits of a decodable set of relatively shifted finite number of strings
JPS58500308A (ja) * 1981-03-30 1983-02-24 インタ−ナシヨナル・ビジネス・マシ−ンズ・コ−ポレ−シヨン 値の同時更新を用いた高速度算術的圧縮符号化
DE3176918D1 (en) * 1981-08-07 1988-12-01 Ibm Data recording or transmission system using run length limited coding
CA1208786A (en) * 1981-10-15 1986-07-29 Steven G. Finn Data compression
JPS5992616A (ja) * 1982-11-04 1984-05-28 エス・ア−ル・アイ・インタ−ナシヨナル デイジタル・デ−タ圧縮の方法および装置
US4567464A (en) * 1983-01-28 1986-01-28 International Business Machines Corporation Fixed rate constrained channel code generating and recovery method and means having spectral nulls for pilot signal insertion
US4652856A (en) * 1986-02-04 1987-03-24 International Business Machines Corporation Multiplication-free multi-alphabet arithmetic code
US4891643A (en) * 1986-09-15 1990-01-02 International Business Machines Corporation Arithmetic coding data compression/de-compression by selectively employed, diverse arithmetic coding encoders and decoders
US4905297A (en) * 1986-09-15 1990-02-27 International Business Machines Corporation Arithmetic coding encoder and decoder system
US4935882A (en) * 1986-09-15 1990-06-19 International Business Machines Corporation Probability adaptation for arithmetic coders
IL86993A (en) * 1988-07-05 1991-07-18 Ibm Israel Method of generating a compressed representation of a source data string
US5086439A (en) * 1989-04-18 1992-02-04 Mitsubishi Denki Kabushiki Kaisha Encoding/decoding system utilizing local properties
US5025258A (en) * 1989-06-01 1991-06-18 At&T Bell Laboratories Adaptive probability estimator for entropy encoding/decoding
JPH05507819A (ja) * 1990-01-12 1993-11-04 リサーチ コーポレーション テクノロジーズ,インク 変調もしくは圧縮による最大符号化率の符号化復号化のための方法及び装置
US5333313A (en) * 1990-10-22 1994-07-26 Franklin Electronic Publishers, Incorporated Method and apparatus for compressing a dictionary database by partitioning a master dictionary database into a plurality of functional parts and applying an optimum compression technique to each part
US5272478A (en) * 1992-08-17 1993-12-21 Ricoh Corporation Method and apparatus for entropy coding
US5546080A (en) * 1994-01-03 1996-08-13 International Business Machines Corporation Order-preserving, fast-decoding arithmetic coding arithmetic coding and compression method and apparatus
US5822456A (en) * 1994-07-14 1998-10-13 Johnson-Grace Optimal spline interpolation for image compression
AU698055B2 (en) * 1994-07-14 1998-10-22 Johnson-Grace Company Method and apparatus for compressing images
US5574449A (en) * 1995-02-24 1996-11-12 Intel Corporation Signal processing with hybrid variable-length and entropy encodidng
US5621403A (en) * 1995-06-20 1997-04-15 Programmed Logic Corporation Data compression system with expanding window
US5955977A (en) * 1997-03-31 1999-09-21 Sharp Laboratories Of America, Inc. System for avoiding start code emulation and long carry-over propagation
US5818368A (en) * 1997-04-18 1998-10-06 Premier Research, Llc Method and apparatus for lossless digital data compression
US6404931B1 (en) 1998-12-14 2002-06-11 Microsoft Corporation Code book construction for variable to variable length entropy encoding
US6377930B1 (en) * 1998-12-14 2002-04-23 Microsoft Corporation Variable to variable length entropy encoding
US6678842B1 (en) * 1998-12-14 2004-01-13 Agere Systems Inc. Communications system and associated deskewing methods
US8692695B2 (en) 2000-10-03 2014-04-08 Realtime Data, Llc Methods for encoding and decoding data
US7386046B2 (en) 2001-02-13 2008-06-10 Realtime Data Llc Bandwidth sensitive data compression and decompression
US8968643B2 (en) * 2002-12-06 2015-03-03 National Institute For Materials Science Ni-based single crystal super alloy
US7536054B2 (en) 2003-02-19 2009-05-19 Ishikawajima-Harima Heavy Industries Co., Ltd. Image compression device, image compression method, image compression program, compression encoding method, compression encoding device, compression encoding program, decoding method, decoding device, and decoding program
US7840072B2 (en) 2003-03-13 2010-11-23 Hewlett-Packard Development Company, L.P. Method and system for pattern matching
US6900746B1 (en) * 2003-12-23 2005-05-31 Wend Llc Asynchronous, data-activated concatenator for variable length datum segments
JP4227067B2 (ja) * 2004-04-28 2009-02-18 株式会社東芝 動画像符号化方法と装置及びプログラム
US7161507B2 (en) * 2004-08-20 2007-01-09 1St Works Corporation Fast, practically optimal entropy coding
US7265691B2 (en) * 2005-06-23 2007-09-04 1Stworks Corporation Modeling for enumerative encoding
US7167115B1 (en) 2005-08-26 2007-01-23 American Megatrends, Inc. Method, apparatus, and computer-readable medium for data compression and decompression utilizing multiple dictionaries
US7730385B2 (en) * 2005-11-30 2010-06-01 Motorola, Inc. Method for decoding a received control channel message with a priori information
US8321326B2 (en) * 2009-09-15 2012-11-27 Auerbach Group Llc Method and system for enhancing the efficiency of a digitally communicated data exchange
US20110177862A1 (en) 2010-01-15 2011-07-21 Lee Amaitis Electrical computers and digital processing systems involving interprogram or interprocess communication regarding amusement devices and games
US8280729B2 (en) * 2010-01-22 2012-10-02 Research In Motion Limited System and method for encoding and decoding pulse indices
US8531321B1 (en) 2011-07-21 2013-09-10 Luca Rossato Signal processing and inheritance in a tiered signal quality hierarchy
US8779950B2 (en) 2012-03-05 2014-07-15 Dcba, Llc Command encoded data compression
US9734595B2 (en) 2014-09-24 2017-08-15 University of Maribor Method and apparatus for near-lossless compression and decompression of 3D meshes and point clouds
US10158738B2 (en) * 2014-12-22 2018-12-18 Here Global B.V. Optimal coding method for efficient matching of hierarchical categories in publish-subscribe systems
US10499074B2 (en) 2017-01-09 2019-12-03 Qualcomm Incorporated Binary arithmetic coding with small tables or short-operand multiplications for video coding
US11003811B2 (en) 2018-02-09 2021-05-11 International Business Machines Corporation Generating samples of outcomes from a quantum simulator
US10897270B2 (en) 2018-06-06 2021-01-19 Yingquan Wu Dynamic dictionary-based data symbol encoding
US10671306B2 (en) 2018-06-06 2020-06-02 Yingquan Wu Chunk-based data deduplication
JP2022139227A (ja) 2021-03-11 2022-09-26 キオクシア株式会社 圧縮装置および制御方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0045075A1 (de) * 1980-07-29 1982-02-03 Siemens Aktiengesellschaft Verfahren zur Umwandlung von linear codierten digitalen Signalen in nichtlinear codierte digitale Signale gemäss einer dem A-Gesetz gehorchenden Mehrfachsegmentkennlinie

Also Published As

Publication number Publication date
FR2382718B1 (de) 1982-01-08
JPS6148298B2 (de) 1986-10-23
US4122440A (en) 1978-10-24
FR2382718A1 (fr) 1978-09-29
GB1566238A (en) 1980-04-30
JPS53110338A (en) 1978-09-27

Similar Documents

Publication Publication Date Title
DE2801988A1 (de) Arithmetische codierung von symbolfolgen
DE2513862C2 (de) Vorrichtung zum Decodieren von Codes minimaler Redundanz und variabler Länge
EP0290085B1 (de) System zur Übertragung von Videobildern
DE3587107T2 (de) Drehungsverfahren und -geraet fuer binaere bilder.
DE2540472C3 (de) Verfahren und Schaltungsanordnungen zur Codierung binärer Daten unter Anwendung eines abgewandelten Null-Modulationscodes
DE2640414C2 (de) Schaltungsanordnung ung Verfahren für die Kompressionscodierung unter Verwendung einer Korrelation zwischen zweidimensionalen, aus zweiwertigen digitalen Bildern abgeleiteten Matrizen
DE69025033T2 (de) Vorrichtung zur Dekodierung von Kode variabler Länge und geeignetes Adresssteuerungsverfahren
DE2706080C2 (de) Verfahren zur adaptiven Quantisierung von Transformationskoeffizienten eines Bildes und Anordnung zum Durchführen des Verfahrens
DE3202789C2 (de)
DE2652459C2 (de) Umsetzvorrichtung für Binärsignale variabler Länge
EP2489187B1 (de) Verfahren zur codierung von symbolen aus einer folge digitalisierter bilder
DE2153517A1 (de) Anordnung zur Codeumsetzung
DE10301362A1 (de) Blockdatenkompressionssystem, bestehend aus einer Kompressionseinrichtung und einer Dekompressionseinrichtung, und Verfahren zur schnellen Blockdatenkompression mit Multi-Byte-Suche
DE2558264C3 (de) Verfahren zur Verdichtung binärer Bilddaten
DE69125424T2 (de) Vorrichtung zur variablen Längenkodierung und Vorrichtung zur variablen Längendekodierung
DE2805294C2 (de) Codierende Übertragungsanlage für Faksimile-Signale
DE2900586C2 (de) Anordnung zum Decodieren von Codewörtern variabler Länge
DE69032076T2 (de) Einrichtung für Datenkodierung und Vorwärts-Fehlerkorrektur für eine niedrige Offset-Gleichspannung und eine kurze Lauflänge
DE3038953C2 (de) Verfahren zur Bandkompression
DE2340250A1 (de) Verfahren zum codieren eines eine bestimmte redundanz aufweisenden nachrichtenstromes
DE2405534C2 (de) Nachrichtenübertragungssystem, insbesondere zur Übertragung von Videosignalen
DE69009713T2 (de) Verfahren zur Bilddatenkompression durch Laufvorhersage.
DE19963687B4 (de) Modulations-Codierer und -Decodierer
DE2645621C2 (de) Verfahren und Vorrichtung zur Kompression und Expansion einer Folge von bereits momentan komprimierten Digitalcodewörtern
DE2440768A1 (de) Verfahren und vorrichtung zur datenkompression fuer die faksimile-uebertragung graphischer information

Legal Events

Date Code Title Description
8139 Disposal/non-payment of the annual fee