Sie sind auf Seite 1von 43

Thomas Richter, Rechenzentrum Uni Stuttgart / Accusoft-Pegasus

Bilddatenkompression Entropiecodierung
Arithmetische Codierung Spezialflle: Huffman-Codierung Golomb-Code Implementierungen Das Carry-Over Problem: Bit-Counting Das EOF-Problem Adaptive Codierung Kontextmodellierung Implementierungen Der MQ-Coder Bit-Stuffing

Thomas Richter, Rechenzentrum Uni Stuttgart / Accusoft-Pegasus

Bilddatenkompression Entropiecodierung
Ziel: Codierung einer Wahrscheinlichkeitsprozesses durch einen Bitstrom einer Lnge, die so kurz wie mglich (= die Entropie) der Quelle ist. Annahme (fr den Augenblick): Prozess 0-ter Ordnung, unabhngige aber nicht gleichverteilte Symbole. Alphabet ={a1,a2,..,an}, Wahrscheinlichkeiten p(ai). Entropie dann: H = -i pi log2(pi)

Thomas Richter, Rechenzentrum Uni Stuttgart / Accusoft-Pegasus

Ein asymptotisch optimales Verfahren zur Codierung von Nachrichten aus W.keitsprozessen.

Bilddatenkompression Arithmetische Codierung

Zunchst nur als theoretisches Modell definiert.

Codierungsvorschrift: Starte mit dem Einheitsintervall [0,1) und teile dies proportional zu den W.keiten der Symbole auf:
p(a1)

p(a2)

p(a3)

p(a4)

Whle das Teilintervall, welches dem ersten Symbol der Nachricht entspricht, etwa a4:
p(a1) p(a2) p(a3) p(a4)

Thomas Richter, Rechenzentrum Uni Stuttgart / Accusoft-Pegasus

Teile dieses Teilintervall wieder proportional zu den W.keiten auf:


p(a1) p(a2) p(a3) p(a4)

Bilddatenkompression Arithmetische Codierung

p(a1)

p(a2)

p(a3)

Whle erneut das Teilintervall, welches dem nchsten Symbol der Nachricht entspricht, etwa a1:
p(a1)

p(a2)

p(a3)

Teile dieses Intervall erneut proportional zu den Wahrscheinlichkeiten der Symbole


p(a1)

p(a2)

p(a3)

etc,etc...
p(a1) p(a2) p(a3)

Thomas Richter, Rechenzentrum Uni Stuttgart / Accusoft-Pegasus

Die codierte Nachricht besteht aus einer (beliebigen) Zahl aus dem Intervall nach Codierung des letzten Symbols.

Bilddatenkompression Arithmetische Codierung

Bentigte Anzahl von Bits zum Erreichen der Genauigkeit = Logarithmus der Lnge des Intervalls.

L p1, , p N 1log 2

i =1

pi =1i=1 log 2 pi

Erwartungswert der Lnge des Bitstroms: Wahrscheinlichkeit der Nachricht mal L.


E L=i =1 i
1

N =1

pi pi L pi ,, p i
1 N 1 N N

i =1 i
1

=1

pi pi 1 j=1 log 2 pi
1

=1i =1 pi log2 pi i
1 1 1

=1

pi log 2 pi =1 NH
N N

Durch Auflsen der hinteren Klammer und

i =1 p i k =1
k

Thomas Richter, Rechenzentrum Uni Stuttgart / Accusoft-Pegasus

Bilddatenkompression Arithmetische Codierung


ist also bis auf einen kleinen Rest optimal, d.h. die pro Symbol aufgewendete Anzahl Bits ist im Durchschnitt nicht grer als L 1 =l H N N bei einer Codierung einer Nachricht von N Symbolen.

Thomas Richter, Rechenzentrum Uni Stuttgart / Accusoft-Pegasus

Eingabe ist eine einzige Zahl im Intervall [0,1). Gesucht ist eine Symbolfolge, die diese Zahl codiert.
p(a1) p(a2) p(a3) p(a4)

Bilddatenkompression Decodierung

Input Bei bekannten Wahrscheinlichkeiten kann geschlossen werden, in welchem Intervall der Input liegt. Hier ist das erste Symbol a 4. Das Intervall 4 wird jetzt weiter gem den W.keiten unterteilt:
p(a1) p(a2) p(a3)

Das nchste Symbol ist damit a1. etc,etc...

Thomas Richter, Rechenzentrum Uni Stuttgart / Accusoft-Pegasus

Wahrscheinlichkeiten sind Zweierpotenzen, p ai =2 hier etwa: k1=1,k2=2,k3=k4=3.


p(a1) p(a2)

Bilddatenkompression Einige Spezialflle

k i

k i
p(a4)

p(a3)

0.0000 0.1000 0.1100 0.1110 Hier aufgetragen: Die untere Intervallgrenze als Binrbruch. Beobachtung: Im Intervall zum Symbol ai sind die ersten ki Stellen aller Zahlen innerhalb des Intervalles konstant. Diese Zahlen knnen also schon als Ergebnis herausgeschrieben werden, whrend die Codierung noch luft.

Thomas Richter, Rechenzentrum Uni Stuttgart / Accusoft-Pegasus

Erstes Symbol a2:

Bilddatenkompression Einige Spezialflle


Ausgabe: 10
p(a2) p(a3) p(a4)

p(a1)

0.0000

0.1000

0.1100 0.1110

Rekursive Aufteilung des Intervals: Die Teilintervalle sind jeweils ein 2k-tel kleiner, d.h. Die Binrbrche der Intervall-Anfnge sind jeweils nur im Vergleich zum ersten Symbol ein ki-tel nach rechts verschoben: 0.101100 0.101110 0.101000
p(a1) p(a3) p(a4)

0.0000

0.1000000

0.1100 0.1110

Thomas Richter, Rechenzentrum Uni Stuttgart / Accusoft-Pegasus

Zweites Symbol a1:

Bilddatenkompression Einige Spezialflle


0.101100 0.101000
p(a1)

Ausgabe: 0.100

0.101110
p(a3) p(a4)

0.0000

0.1000000

0.1100 0.1110

Zu jedem Symbol gehrt in dieser Codierung somit eine Ziffernfolge: a1 a2 a3 a4 : : : : 0 10 110 111 Diese Ziffern knnen ohne weiteres direkt vom Codierer geschrieben werden. Dies ist die Huffman-Codierung.

Thomas Richter, Rechenzentrum Uni Stuttgart / Accusoft-Pegasus

blicherweise stellt man den Code dann in einem Baum(-graphen) dar, bei dem die Bltter die Symbole und die Zweige die Entscheidungspunkte sind, bei denen entweder eine 0 oder eine 1 geschrieben wird.

Bilddatenkompression Huffman-Baum

0
a1 ber diesen Baum kommt man auch sofort zu einem Decodierungsalgorithmus. (wie?)

0
a2 a3

1 0 1
a4

Thomas Richter, Rechenzentrum Uni Stuttgart / Accusoft-Pegasus

Offenbar ist fr W.keiten, die Zweierpotenzen sind, der HuffmanCode identisch zum arithmetischen Code und damit ebenso optimal. Sind die W.keiten keine Zweierpotenzen, so ist der Code offenbar nicht mehr optimal, bzw. erzeugt zu lange Sequenzen. Um im Rahmen der von der Huffman-Codierung gegebenen Einschrnkung den besten Code fr gegebene Wahrscheinlichkeiten zu finden gibt es den Huffman-Algorithmus. Dieser ist recht aufwndig, und schwierig adaptiv zu machen (spter). Wir werden uns jedoch mit dem optimalen Code begngen...

Bilddatenkompression Huffman-Codierung

Thomas Richter, Rechenzentrum Uni Stuttgart / Accusoft-Pegasus

Annahme: W.keitsverteilung vom Typ p a k =2 , k =1 Nach dem gleichen Rezept wie oben erhalten wir den folgenden Code: a1 a2 a3 a4 ak : : : : : 0 10 110 1110 111....1110

Bilddatenkompression Einige Spezialflle: Golomb-Codes


k

mit k-1 Einsen.

Da dies auch ein arithmetischer Code ist, ist er fr diese Verteilung auch optimal. Diesen Code kann man auch als Komma-Code lesen: Die 0 dient als Komma zwischen den Codewrtern, die Anzahl der 1en identifiziert das Codewort.

Thomas Richter, Rechenzentrum Uni Stuttgart / Accusoft-Pegasus

Die Verteilung oben ist ein Spezialfall geometrischer W.keitsverteilungen (oder Laplace-Verteilungen) fr =1/2, die sehr typisch fr Bilddaten sind:

Bilddatenkompression Einige Spezialflle: Golomb-Codes

p k =1 k
Der obige Komma-Code ist sicherlich nur optimal fr =1/2, aber lsst sich fr andere aus dem Komma-Code ein guter Code bauen? Erstelle hierzu ein neues Alphabet basiertend auf einem Parameter m auf die folgende Weise:
a0 a1 a2 a4 a4 a5 a6 a7 a8 a9 a10 a11

....

bq:={aqm,aqm+1,aqm+2,...aqm+m-1} cr:={ar,ar+m,ar+2m,ar+3m,...} Aus bq und cr lsst sich ak rekonstruieren: k = mq+r b codiert den Block, c die Position innerhalb des Blockes.

Thomas Richter, Rechenzentrum Uni Stuttgart / Accusoft-Pegasus

Hieraus ergeben sich folgende W.keitsverteilungen fr b q und cr: pb q =i =0 p a qmi =1 i=0


m1 m1 m1 qmi

Bilddatenkompression Weitere Spezialflle: Golomb-Codes


=1
qm

i=0

m1

also wieder eine geometrische Verteilung mit Exponent qm (statt q) p c r =i=0 pa imr =1
r

i=0

im=r

1 m 1

auch eine geometrische Verteilung, aber ber einem endlichen Intervall mit einem um m kleineren Exponenten. Trick: Whle nun m so, dass m 1/2. Codiere b (Block-Index) mit dem Komma-Code, und codiere r (Position im Block) mit ceil(log2m) Bits in der Binrdarstellung. ak :11...110rr..rr q-1 mal 1, einmal 0, Binrdarstellung von r, wobei k=mq + r

Thomas Richter, Rechenzentrum Uni Stuttgart / Accusoft-Pegasus

Problem bei der Implementierung auer in Spezialfllen unendliche Genauigkeit scheint notwendig!

Bilddatenkompression Arithmetische Codierung: Implementierung

Reprsentiere das augenblickliche Codeintervall durch zwei Zahlen: A: die Lnge des Codeintervalls C: die untere Intervallgrenze Beide Zahlen werden als Fixkommazahlen in endlicher Genauigkeit reprsentiert, etwa mit 16 Bit.
p(a1) p(a2) p(a3) p(a4)

Lnge A=0x10000 C = 0x0000 Initialisierung des Codeintervalls vor Beginn der Codierung

Thomas Richter, Rechenzentrum Uni Stuttgart / Accusoft-Pegasus

Der Codierungsschritt: Update von A und C bei der Codierung eines Symbols mit W.keit p(ai)=Pi Vor der Codierung:

Bilddatenkompression Arithmetische Codierung: Implementierung

Update-Algorithmus: Untere Intervallgrenze verschieben durch die skalierte Gre aller Teilintervalle links von i Intervallgre mit Pi skalieren. Nach der Codierung: A

C C A ji P j A AP i

Thomas Richter, Rechenzentrum Uni Stuttgart / Accusoft-Pegasus

Normalisieren: Ohne einen weiteren Schritt wrde A immer kleiner werden. Beobachtung: Ein Bit kann aus dem Strom geschrieben werden, sobald das Codierungsintervall vollstndig in der ersten oder zweiten Hlfte des Einheitsintervalles liegt. Falls C+A 0.5: Schreibe 0 Falls C0.5: Schreibe 1

Bilddatenkompression Arithmetische Codierung: Implementierung

0.5 A

C In diesem Falle kann das halbe Intervall um den Faktor zwei aufgezogen, man sagt, renormalisiert werden.

Thomas Richter, Rechenzentrum Uni Stuttgart / Accusoft-Pegasus

Normalisierungsalgorithmen:

Bilddatenkompression Arithmetische Codierung: Implementierung


Falls C0.5: Schreibe 1 C 2C1 A 2A 0.5

Falls C+A 0.5: Schreibe 0 C 2C A 2A A

Hierdurch bleibt das Code-Intervall immer hinreichend gro. Problem: Was geschieht, wenn das Intervall gerade ber die 0.5 hinwegreicht und immer kleiner wird?

Thomas Richter, Rechenzentrum Uni Stuttgart / Accusoft-Pegasus

Dies ist gleichbedeutend damit, dass fr die den Codestream codierende Zahl noch nicht klar ist, ob es einen berlauf auf das nchste auszugebende Bit gibt. A =0x013f = 0.0000000100111111 0.5 ? C=0x7fef = 0.0111111111101111 Durch Codierung weiterer Symbole kann es passieren, dass A nur immer kleiner wird, diese Entscheidung aber immer weiter nach hinten verzgert wird.

Bilddatenkompression Das Carry-Over Problem

Thomas Richter, Rechenzentrum Uni Stuttgart / Accusoft-Pegasus

Lsungsmglichkeit 1 (#2 folgt spter): Bits zhlen. Hier steht immer die Bitkombination 01 C=0x7fef = 0.0111111111101111 A=0x013f = 0.0000000100111111 Hier steht fr kleine A immer das Bit 0 Solange C < 0.5 und A+C > 0.5 mssen die grnen Bits gar nicht aufgehoben werden! Entferne diese und zhle mit, wieviele entfernt wurden.
C 2C 1 2

Bilddatenkompression Das Carry-Over Problem

Normalisierung falls C0.25, A < 0.5 und C < 0.5, A+C 0.5

A 2A D D1

Thomas Richter, Rechenzentrum Uni Stuttgart / Accusoft-Pegasus

Graphische Interpretation der Operation 1 C 2C Normalisierungvorschrift falls C0.25, A < 0.5 2 und C < 0.5, A+C 0.5 A 2A D D1 A 0.25 C A 0.5 C Diese Operation zieht das Codeinterval um 0.5 herum auf. 0.5 0.75

Bilddatenkompression Das Carry-Over Problem

Thomas Richter, Rechenzentrum Uni Stuttgart / Accusoft-Pegasus

Durch diesen Trick ergibt sich eine Anpassung der gewhnlichen Normalisierung: Die gezhlten Bits mssen geschrieben werden. Gibt es einen berlauf, also C 0.5, so sind dabei die unterdrckten grnen Bits von A null geworden.

Bilddatenkompression Das Carry-Over Problem

Gibt es keinen berlauf, also A+C < 0.5, so sind alle grnen Bits von A eins geblieben.

C= 0.0111111111101111... A= 0.0000000000010000...

Iterationen spter... kein berlauf, A+C < 0.5, alle grnen Bits wurden zwischenzeitlich entfernt

Schreibe das nun bekannte rote 0 Bit, sowie die nicht in C und A gespeicherten, aber gemerkten grnen Bits. Lsche danach den Zhler.

Thomas Richter, Rechenzentrum Uni Stuttgart / Accusoft-Pegasus

Falls A+C < 0.5: Schreibe eine 0, schreibe D eins-Bits A2A C2A D0 Falls C 0.5: Schreibe eine 1, schreibe D null-Bits A2A C2C-1 D0 Ansonsten falls C 0.25 und A < 0.5: A2A C2C- DD+1 Hierdurch bleiben immer gengend Bits zur Reprsentierung von A und C verfgbar.

Bilddatenkompression Renormalisierung komplett

Thomas Richter, Rechenzentrum Uni Stuttgart / Accusoft-Pegasus

Der Decodierer verkleinert zwar stetig das Codeintervall, hat aber keine Information darber, wann die Decodierung abgeschlossen ist und das letzte Symbol decodiert worden ist. Zwei Lsungsmglichkeiten: mit EOF-Symbol: Erweitere das Alphabet geringfgig um ein Symbol EOF mit sehr geringer W.keit: ={a1,a2,...,an,EOF} codiere EOF als Abschluss der Codierung und stoppe die Decodierung sobald ein EOF-Symbol gefunden wurde. bermittle die Anzahl der Symbole in der Nachricht in einem Seitenkanal, etwa in einem formatspezifischen Header, der vorausgeschickt wird.

Bilddatenkompression Das EOF Problem

Thomas Richter, Rechenzentrum Uni Stuttgart / Accusoft-Pegasus

Selten kennt man die W.keiten im Voraus. Man kann diese in einem ersten Durchgang ber die Daten abschtzen und dann bermitteln, allerdings will man groe Datenmengen in einem Durchgang bermitteln.
Verzgerungsglied 010101... Codierer

Bilddatenkompression Adaptive Codierung

ai

p(ai)

Rckwrtsadaptive Anpassung der W.keiten nach Codierung: Intervallunterteilung ndert sich in jedem Schritt.

Obwohl der Codierer das i-te Symbol bereits kennt,werden die W.keitstabellen erst nach der Codierung von ai angepasst, denn...

Thomas Richter, Rechenzentrum Uni Stuttgart / Accusoft-Pegasus

Teile dieses Teilintervall wieder proportional zu den W.keiten auf:


p(a1) p(a2) p(a3) p(a4)

Bilddatenkompression Adaptive Arithmetische Codierung

p(a1)

p(a2)

p(a3)

Die Unterteilung des nchsten Teilintervalles wurden aufgrund der genderten Abschtzungen gendert.
p(a1)

p(a2)

p(a3)

Teile dieses Intervall erneut proportional zu den Wahrscheinlichkeiten der Symbole, ndere die W.keiten erneut...
p(a1) p(a2) p(a3)

Thomas Richter, Rechenzentrum Uni Stuttgart / Accusoft-Pegasus

... der Decodierer kennt das Symbol erst nach der Decodierung, kann aber die gleiche Anpassung durchfhren.
010101... Decodierer

Bilddatenkompression Rckwrtsadaptive Decodierung

ai Anpassung der p(ai) Abschtzung nach Decodierung.

p(ai)

Hierdurch bleiben die beim Codierer und Decodierer vorliegenden W.keitsabschtzungen synchron und mssen nicht bertragen werden. Mgliche Abschtzung fr p(ai): ~(Anzahl aufgetretener ai Symbole+1)/(Gesamtzahl der Symbole+1)

Thomas Richter, Rechenzentrum Uni Stuttgart / Accusoft-Pegasus

Bislang: W.keitsmodelle 0-ter Ordnung. Jetzt: Hhere Ordnung, statt W.keiten p(ai) etwa bedingte W.keiten p(ai|ai-1) erste Ordnung. Mache die Intervall-Unterteilung abhngig vom vorherigen Symbol, verwende eine zweidimensionale Tabelle p(at|at-1). Zeile: Auswahl durch das letzte Symbol, der p(a1|a1) p(a2|a1) p(a3|a1) Kontext, whlt die Intervallunterteilung p(a1|a2) p(a2|a2) p(a3|a2)
p(a1|a3) p(a2|a3) p(a3|a3)

Bilddatenkompression Kontextmodellierung

Spalte: Das zu codierende Symbol

Thomas Richter, Rechenzentrum Uni Stuttgart / Accusoft-Pegasus

Bislang: W.keitsmodelle 0-ter Ordnung. Jetzt: Hhere Ordnung, statt W.keiten p(ai) etwa bedingte W.keiten p(ai|ai-1) erste Ordnung. Codiererdesign mit Rckwrtsadaption:
Verzgerungsglied Verzgerungsglied 010101...

Bilddatenkompression Kontextmodellierung

ai

Codierer

Auswahl der Tabellenzeile durch vorletztes Symbol

p(at|at-1)

Adaption durch letztes und vorletztes Symbol

Verzgerungsglied

Thomas Richter, Rechenzentrum Uni Stuttgart / Accusoft-Pegasus

Beim Decodierer muss natrlich eine analoge Anpassung vorgenommen werden, damit die Tabellen beim Codierer und Decodierer immer synchron bleiben.
010101... Decodierer

Bilddatenkompression Kontextmodellierung

ai

Auswahl der Tabellenzeile fr nchstes zu decodierendes Symbol durch letztes Symbol

Verzgerungsglied

p(at|at-1)

Adaption durch letztes und vorletztes Symbol

Thomas Richter, Rechenzentrum Uni Stuttgart / Accusoft-Pegasus

Schneller Binrer Arithmetischer Codierer Wird verwendet in JBIG-2 (Bilevel-Codierung), JPEG 2000 Modifizierte Version des Q-Coders, optionaler AC in JPEG Entwickelt von IBM, mit Patenten von IBM & Mitsubishi

Bilddatenkompression Implementierung: Der MQ-Coder

LPS
Qe

MPS
1-Qe

Binrer Codierer, es gibt nur zwei Symbole: MPS: Most Probable Symbol mit W.keit 1-Q , oberes Intervall e LPS: Least Probable Symbol, W.keit Q e Code-Intervall hat nicht die Lnge 1 proportionale Unterteilung Der MQ-Coder verzichtet auf alle langsamen oder aufwndigen Operationen. Keine Multiplikation, nur Addition, Subtraktion und Shifts.

Thomas Richter, Rechenzentrum Uni Stuttgart / Accusoft-Pegasus

Implementierung des Codierungsschrittes.

Bilddatenkompression Der MQ-Coder: Approximationen

Lnge des Codeintervalls A bleibt immer zwischen 0.75 und 1.5 A


Qe 1-Qe

C LPS-Codierung: CC AQeA Qe fr A 1
Qe

A
1-Qe

C MPS-Codierung: CC+QeA C+Qe A(1-Qe)A = A QeA A Qe fr A 1

Thomas Richter, Rechenzentrum Uni Stuttgart / Accusoft-Pegasus

Bilddatenkompression Der MQ-Coder: Registerreprsentationen


Register werden nicht als Fliekomma abgelegt, sondern in einer Fixkommareprsentation mit 0.75 = 0x8000. Durch Normalisierung bleibt das A-Register immer grer als 0.75, also 0x8000.
1 15 Bit

Das A-Register

Falls = 0, so Normalisierung Anders als bei der allgemeinen Darstellung werden bei der Normalisierung nicht sofort die oberen Bits aus C herausgeschrieben,sondern bleiben gebuffert, bis sich ein ganzes Byte angesammelt hat. Register CT zhlt die dort freien Bits.
Ausgabebits 3 Spc 16 Bit

Ausgabe-Bereich

Spacer-Bits

Das C-Register Arbeitsbereich

Thomas Richter, Rechenzentrum Uni Stuttgart / Accusoft-Pegasus

Falls A zu klein wird, muss normalisiert werden. Der MQ-Coder schreibt aber die oberen Bits von C nicht sofort in den Strom, sondern akkumuliert jeweils 8 Bits in der oberen Registerhlfte von C, die dann in einem Zusatzregister B gebuffert werden. Solange A < 0x8000, dann Normalisierung: A 2A C 2C CTCT-1 (Bitcounter, freie Ausgabebits in C) Falls CT = 0: Rume Ausgaberegister B (schreibe in den Ausgabestrom) Kopiere Ausgabebits von C in B Lsche freie Bits in C Setze CT auf die Anzahl der freigewordenen Bits
8 Bit Ausgabebits 3 Spc 16 Bit

Bilddatenkompression Der MQ-Coder: Normalisierung

Ausgabebuffer B

CT freie Bits

Rechenregister C

Thomas Richter, Rechenzentrum Uni Stuttgart / Accusoft-Pegasus

Genau wie oben gibt es auch beim MQ-Coder das Carry-Over Problem. Es knnen sich mehr als 8 Bits im Ausgabebereich von C ansammeln, die dann in das B-Register berlaufen mssen. Im Prinzip knnte dann das B-Register ebenso berlaufen und der bisher geschriebene Strom wre ungltig. Qe Carry ?? Carry
8 Bit

Bilddatenkompression Der MQ-Coder: Das Carry-Over Problem

Carry
Ausgabebits 3 Spc

+
16 Bit

Ausgabestrom

C-Register

Das Problem des Carry-Over wird hier aber anders als oben gelst: Um ein mehrfaches berlaufen zu verhindern, wird nach je acht 8Bits ein Null-Bit eingefgt, in das das Carry berlaufen kann. Dieser Prozess heit Bit-Stuffing (etwa: Einfttern von Bits).

Thomas Richter, Rechenzentrum Uni Stuttgart / Accusoft-Pegasus

Algorithmische Beschreibung des Bit-Stuffings: Freilassen von Bits, um das Carry aufzunehmen. Geschieht beim Freirumen des BRegisters und der bernahme von Daten aus C. C hat ein zustzliches Bit, welches das Carry zunchst aufnehmen kann, bis das B-Register beim Rumen angepasst wird.
8 Bit B C 8-Bits 3 Spc 16 Bit

Bilddatenkompression Der MQ-Coder: Das Carry-Over Problem

Ausgabebits

Rum-Algorithmus Falls B = 0xff (nchste Ausgabe knnte hier hinein berlaufen) Schreibe B, bertrage nur 7 Bits aus C in B, CT7 Sonst: Ist Carry-Bit in C gesetzt? (berlauf stattgefunden?) BB+1, Carry-Bit0 (bertrage das Carry) Falls B = 0xff (nchste Ausgabe knnte berlaufen, Bitstuffing) Schreibe B, bertrage 7 Bits aus C in B, CT7 Sonst: Schreibe B, bertrage 8 Bits aus C in B, CT8 Sonst: (Normalfall): Schreibe B, bertrage 8 Bits aus B in C, CT8

Thomas Richter, Rechenzentrum Uni Stuttgart / Accusoft-Pegasus

Erinnerung: Abschtzung im MPS-Fall war: A(1-Qe) A-Qe Intervallgre vor MPS Codierung: A Intervallgre nach MPS Codierung: A-Qe

Bilddatenkompression Trick 2: MQ-Coder - Conditional Exchange

Das MPS Intervall sollte immer grer als das LPS-Intervall sein, also A-Qe A/2 LPS
Qe

MPS
1-Qe

A-Qe A/2 Das ist fr A < 2Qe nicht mehr der Fall! (Umformung) Mitsubishi-Patent: Codiere in diesem Fall ein LPS wie ein MPS und umgekehrt (Conditional Exchange)

Thomas Richter, Rechenzentrum Uni Stuttgart / Accusoft-Pegasus

Umkehr der Codierungsvorschrift fr den Conditional Exchange-Fall

Bilddatenkompression MQ-Coder: Conditional Exchange

Qe

1-Qe

Codiere stattdessen im Falle A < 2 Qe das jeweils inverse Symbol! LPS-Codierung: Falls A < 2Q : e AA-Q CC+Q e, e Sonst A Q e

(A zu klein) (MPS-Codierungsvorschrift im LPS-Falle) (normale LPS-Codierung)

MPS-Coding: Falls A< 2Q : (A zu klein) e A Q (LPS-Codierung im MSP-Fall) e Sonst AA-Q ,CC+Q (normale MPS-Codierung) e e

Thomas Richter, Rechenzentrum Uni Stuttgart / Accusoft-Pegasus

Wie beim gewhnlichen AC-Codierer passt der MQ-Coder Q e adaptiv an die beobachtete Quelle an. Dies geschieht aber ber einen endlichen Automaten abhngig vom Zustand S des Coders. Eintrge in der Tabelle des Automaten: Q (S): Abschtzung der LPS-W.keit im Zustand S e NextLPS(S): Nchster Zustand bei Codierung eines LPS NextMPS(S): Nchster Zustand bei Codierung eines MPS SWITCH(S): Flag, ob LPS und MPS vertauscht werden sollen. (nicht Conditonal Exchange wird verwendet falls Qe>1/2 abgeschtzt werden soll)
Qe NLPS NMPS SWTCH Qe Qe NLPS NMPS SWTCH

Bilddatenkompression MQ-Coder: Adaptive Codierung

NLPS

NMPS SWTCH

Thomas Richter, Rechenzentrum Uni Stuttgart / Accusoft-Pegasus

Aufbau des Automaten (Tabelle) in Ausschnitten als Beispiel


Index 0 1 2 3 4 5 6 7 Qe 0,503937 0,304715 0,140650 0,063012 0,030053 0,012474 0,503937 0.492218 NMPS 1 2 3 4 5 38 7 8 NLPS 1 6 9 12 29 33 6 14 SWITCH 1 0 0 0 0 0 1 0

Bilddatenkompression MQ-Coder: Adaptive Codierung

Thomas Richter, Rechenzentrum Uni Stuttgart / Accusoft-Pegasus

Eine Anpassung der Abschtzung der LPS-W.keit Qe geschieht jeweils bei der Codierung eines LPS-Symbols, und manchmal bei der Codierung eines MPS-Symbols, um die Geschwindigkeit zu verbessern: Code-LPS Adaption: If SWITCH(S) then MPS1-MPS SNextLPS(S) Q Q (S) e e Code-MPS Adaption: If A-Q < 0.75 (hier muss sowieso normalisiert werden!) e SNextMPS(S) Q Q (S) e e

Bilddatenkompression MQ-Coder: Adaptive Codierung

Thomas Richter, Rechenzentrum Uni Stuttgart / Accusoft-Pegasus

Bilddatenkompression MQ-Coder: Kontextmodellierung


Auch hier gibt es eine Kontext-Modellierung: Qe sowie der Automatenzustand S und das MPS-Symbol hngen von einem Kontext-Index ab, der vom Benutzer des MQ-Coders zu definieren ist. Beispiel: CTX = das letzte Symbol oder: CTX = abhngig von den Pixelwerten im kausalen Kontext oder.... Symbol (MPS/LPS) CTX
a b c

011101011...
MQ-Coder

Beispiel fr einen kausalen Kontext: Die Pixelwerte a,b,c und d sind dem Decodierer schon bekannt und knnen zur Bestimmung eines Kontexts verwendet werden.