DE4210246A1 - Codierungs- und Decodierungsverfahren sowie -vorrichtungen - Google Patents
Codierungs- und Decodierungsverfahren sowie -vorrichtungenInfo
- Publication number
- DE4210246A1 DE4210246A1 DE4210246A DE4210246A DE4210246A1 DE 4210246 A1 DE4210246 A1 DE 4210246A1 DE 4210246 A DE4210246 A DE 4210246A DE 4210246 A DE4210246 A DE 4210246A DE 4210246 A1 DE4210246 A1 DE 4210246A1
- Authority
- DE
- Germany
- Prior art keywords
- code
- state
- pixel
- dpcm
- pixels
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/124—Quantisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/593—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Description
Die Erfindung bezieht sich auf ein adaptives PCM/DPCM-Verfahren
und ein darauf beruhendes Coder-Decoder-Paar zur Reduktion
digitaler Bilddaten. Das Verfahren besteht aus zwei Prozessen:
einem Codierungsprozeß und einem Decodierungsprozeß. Der
Codierungsprozeß hat die Aufgabe, Bilddaten mit m Bit pro Pixel
in n-Bit-Codes umzuwandeln, wobei n<m. Abhängig von lokalen
statistischen Eigenschaften der Bilddaten wird der
Codierungsprozeß mit Hilfe der Pulscode-Modulation (PCM) oder
der Differential-Pulscode-Modulation (DPCM) ausgeführt. Der
Decodierungsprozeß dient dazu, aus den Codes die ursprünglichen
Bilddaten mit fast derselben radiometrischen Genauigkeit
wiederherzustellen. Im folgenden werden der Codierungsprozeß und
der Decodierungsprozeß zusammen als Prozeß bezeichnet.
Der Coder ist eine Vorrichtung, die den Codierungsprozeß
ausführt. Der Decoder ist eine Vorrichtung, die den
Decodierungsprozeß ausführt. Der Coder und der Decoder sind
als Zustandsmaschinen in der Art eines Mealy-Automaten
konzipiert. Jede Zustandsmaschine besteht aus mehreren Zuständen
und einer Steuerschaltung, die es der Maschine ermöglicht, von
einem Zustand in einen anderen überzugehen. Jeder Zustand stellt
einen spezifischen Arbeitsmodus des Prozesses dar.
Die Grauwerte der Bilddaten werden in mehrere PCM-Bereiche
unterteilt. Grauwertdifferenzen, sofern sie innerhalb
vorgegebener Grenzwerte liegen, werden in mehrere DPCM-Bereiche
unterteilt. Ein Zustand wird PCM-Zustand bzw. DPCM-Zustand
genannt, wenn ihm ein PCM-Bereich bzw. ein DPCM-Bereich
zugeordnet ist. In einem PCM-Zustand wird der Prozeß mit Hilfe
der PCM im zugeordneten PCM-Bereich ausgeführt. In einem DPCM-
Zustand wird der Prozeß mit Hilfe der DPCM im zugeordneten
DPCM-Bereich ausgeführt.
Der Coder und der Decoder haben je einen Anfangszustand, von dem
aus der Prozeß im ersten Takt startet. Abhängig vom
vorliegenden Pixel (bei der Codierung) oder Code (bei der
Decodierung) muß sich der Prozeß entscheiden, ob er zu Beginn
des nächsten Takts in einen anderen Zustand übergeht oder in
demselben Zustand bleibt. Findet ein Zustandsübergang statt, so
gibt der Codierungsprozeß einen n-bit-Code ab, um den
Zustandswechsel zu signalisieren. Dieser spezielle Code wird als
Steuercode bezeichnet. Beim Decoder veranlaßt der Steuercode
den Decodierungsprozeß dazu, in denselben Zustand überzugehen.
Der Prozeß beginnt immer im Anfangszustand, läuft in
Intervallen mit einer vorgegebenen Anzahl I von Takten ab und
versetzt sich zu Beginn des I-ten Takts in den Anfangszustand
zurück. Ein solches Intervall mit I Takten, das im
Anfangszustand beginnt und endet, wird Prozeßintervall, kurz
Intervall, genannt.
Im Kapitel wird das Verfahren ausführlich beschrieben; anhand
eines konkreten Beispieles wird gezeigt, wie der
Codierungsprozeß 7-Bit-Bilddaten in 3-Bit-Codes umwandelt und
wie der Decodierungsprozeß aus diesen 3-Bit-Codes die
ursprünglichen Bilddaten wiederherstellt. Anschließend werden
die Blockschaltdiagramme des Coders und des Decoders angegeben
und erläutert.
Das Verfahren beruht auf einer wichtigen Eigenschaft digitaler
Bilddaten: Sie enthalten sehr viele redundante Infor
mationen, die sich in redundanten Bits ausdrücken lassen.
Nahe zueinander liegende Pixel eines Bildes sind meist statistisch
miteinander korreliert. Der Grad der Korrelation
spiegelt sich in der sogenannten Differenzstatistik wider.
Die Differenzstatistik ist die Statistik über die Grauwert
differenzen von Pixeln, die unmittelbar nebeneinander
liegen. Diese Statistik hat im allgemeinen die Form einer
Gauß'schen Verteilung mit dem Mittelwert 0 und der Streuung
S. Je stärker benachbarte Pixel statistisch miteinander
korreliert sind, desto kleiner wird S.
Während diese Eigenschaft die Grundlage für DPCM schafft,
bestätigen Ausnahmen in der Praxis die Regel: Die Ausnahmen
treten häufig in einem Bild an den Stellen mit großen
Grauwertgradienten auf, insbesondere dort, wo Kanten, Kurven,
Ecken, Flecke oder sonstige prägnante Texturmerkmale
reichlich vorhanden sind. Bei konventionellen PCM/DPCM-
Verfahren versucht man, große und abrupte Änderungen der
Grauwerte benachbarter Pixel durch PCM abzufangen und dabei
das Kompressionsverhältnis konstant zu halten. D. h. der
Coder muß sich an solchen Stellen von DPCM auf PCM umstellen
und dabei einen Code abgeben, der den Decoder dazu
veranlaßt, sich ebenfalls von DPCM auf PCM umzustellen. Um
das Kompressionsverhältnis konstant zu halten, muß der
Coder in diesem Falle den Code, der eigentlich zur
Wiederherstellung eines Pixel benutzt werden soll, für die
Umstellung einzusetzen. Da der Decoder nach der Umstellung
auf PCM keine Möglichkeit hat, den Grauwert des betroffenen
Pixel zu erfahren, ersetzt er den "verlorenen" Grauwert einfach
durch den Grauwert des zuletzt wiederhergestellten
Pixel. Die Folge: Die Grauwerte an den Stellen mit den prägnanten
Texturmerkmalen werden so stark verfälscht, daß das
wiederhergestellte Bild nicht für Bildmessung verwendet
werden kann.
Die wichtigste Aufgabe des vorliegenden Verfahrens besteht
darin, diesen Mangel zu beseitigen und dabei das bewährte
Prinzip und die Vorteile der digitalen PCM/DPCM beizubehalten.
Um diese Aufgabe zu erfüllen, muß der Coder in der
Lage sein, bei Pixeln mit großem Grauwertgradienten jeweils
zwei Codes abzugeben: der erste veranlaßt den Decoder dazu,
sich auf den entsprechenden Zustand umzustellen; der zweite
ermöglicht es ihm, im neuen Zustand das betroffene Pixel
wiederherzustellen. Da der erste Code die Aufgabe hat, den
Decodierungsprozeß zu steuern, wird er Steuercode genannt.
Werden die Bilddaten zeilenweise codiert und sind in jeder
Zeile J Pixel enthalten, dann wird die Anzahl L der von
einem Coder bei der Codierung einer Bildzeile abgegebenen
Codes eine Veränderliche sein, die von lokalen statis
tischen Eigenschaften der Bilddaten abhängt. Im allgemeinen
gilt L<J, wobei (L-J) die Anzahl der Steuercodes angibt,
die der Coder zur Codierung einer Bildzeile benötigt.
Diese Differenz stellt auch die Anzahl der Zustandsübergänge
dar, die der Codierungsprozeß bzw. der Decodierungs
prozeß machen muß, um eine Bildzeile mit J Pixeln zu
codieren bzw. zu decodieren. Aus diesem Grunde ist das
Kompressionsverhältnis bei diesem neuen Verfahren nicht
konstant; es hängt von der Differenzstatistik der Bilddaten
ab. Je kleiner die Streuung S der Differenzstatistik ist,
desto größer wird das Kompressionsverhältnis.
Im folgenden wird anhand eines konkreten Beispiels gezeigt,
wie der Codierungsprozeß Bilddaten mit 7 Bit pro Pixel in
3-Bit-Codes umwandelt und wie der Decodierungsprozeß aus
diesen Codes die ursprünglichen Bilddaten wiederherstellt.
Um die optimale Anzahl von PCM- und DPCM-Zuständen für den
Coder/Decoder zu ermitteln, wurde Simulation anhand von Bild
daten mit 7 Bits pro Pixel und 6912 Pixel pro Zeile aus
geführt. Es hat sich dabei herausgestellt, daß es zum
besten Kompromiß zwischen dem Kompressionsverhältnis und
der Genauigkeit der wiederhergestellten Bilddaten kommt,
wenn man bei der Verwendung von 3-Bit-Codes der
Coder/Decoder jeweils als Zustandsmaschine mit 3 PCM- und
zwei DPCM-Zuständen wie folgt konzipiert:
Der Automatengraph der Zustandsmaschine ist in Abb. 1
angegeben, wobei gerichtete Kanten (Pfeile) die zulässigen
Zustandsübergänge darstellen. DPCM1 und DPCM2 werden in
der Tabelle 1 dargestellt; PCM1, PCM2 und PCM3 in der
Tabelle 2.
Z0 ist der Anfangszustand der Zustandsmaschine, in dem jedes
Prozeßintervall beginnt und endet. Z0 ist auch der gemeinsame,
nächste Zustand von Z1, Z2 und Z3. D. h. befindet sich
ein Prozeß in Z1, Z2 oder Z3, so geht er zu Beginn des nächsten
Takts automatisch in Z0 über.
Abb. 2 stellt den Codierungsprozeß schematisch dar, der aus
5 Funktionsblöcken A, B, G, D, P besteht. Wir gehen davon
aus, daß im Takt t ein Pixel mit dem Grauwert g(t) vorliegt,
der Puffer P den Erwartungswert g′(t) enthält, und
sich der Codierungsprozeß im Zustand Z(t) befindet. Ist
Z(t) gleich Z0 oder Z4, dann errechnet A die Differenz
Δg(t) = g(t) - g′(t)
und leitet sie dem Funktionsblock B zu. Ist Z(t) gleich Z1,
Z2 oder Z3, dann liefert A den aktuellen Grauwert g(t)
unmittelbar an den Funktionsblock B. B bestimmt anhand von
g(t) bzw. Δg(t) den nächsten Zustand Z(t+1). D hat die
Aufgaben, den nächsten Erwartungswert g′(t+1) zu ermitteln
und g′(t) im Puffer P durch g′(t+1) zu ersetzen. B und D
entscheiden gemeinsam darüber, welchen Code der Codegeber G
in jedem einzelnen Takt abzugeben hat.
Liegt zu Beginn des Takts t ein Grauwert vor, so hängt das
Verhalten des Codierungsprozesses von seinem aktuellen
Zustand ab. Es ist deshalb notwendig, den Codierungsprozeß
in jedem einzelnen Zustand zu betrachten.
Das Verhalten des Codierungsprozesses hängt vom Betrag der
Grauwertdifferenz g(t) folgendermaßen ab:
Je nachdem, in welchem PCM-Bereich g(t) liegt, gibt der
Codierungsprozeß einen Steuercode C ab und geht zu Beginn
des nächsten Takts in einen der 3 PCM-Zustände über:
Der Codierungsprozeß gibt den Steuercode C=0 ab und
geht zu Beginn des nächsten Takts in Z4 über.
Der Codierungsprozeß bleibt in demselben Zustand und gibt
einen Code C für die Grauwertdifferen Δg(t) ab:
C=1, wenn -11 <= Δg(t) < -8;
C=2, wenn -8 <= Δg(t) < -5;
C=3, wenn 5 < Δg(t) <= 8;
C=4, wenn 8 < Δg(t) <= 11.
C=2, wenn -8 <= Δg(t) < -5;
C=3, wenn 5 < Δg(t) <= 8;
C=4, wenn 8 < Δg(t) <= 11.
Das Verhalten des Codierungsprozesses hängt vom Betrag der
Grauwertdifferenz g(t) folgendermaßen ab:
Der Codierungsprozeß gibt den Steuercode C=0 ab und
geht in den Zustand Z0 über.
Der Codierungsprozeß bleibt in demselben Zustand und gibt
einen Code C für die Grauwertdifferenz Δg(t) ab:
C=1, wenn -5 <= Δg(t) < -2;
C=2, wenn Δg(t) = -2;
C=3, wenn Δg(t) = -1;
C=4, wenn Δg(t) = 0;
C=5, wenn Δg(t) = 1;
C=6, wenn Δg(t) = 2;
C=7, wenn 2 < Δg(t) <= 5.
C=2, wenn Δg(t) = -2;
C=3, wenn Δg(t) = -1;
C=4, wenn Δg(t) = 0;
C=5, wenn Δg(t) = 1;
C=6, wenn Δg(t) = 2;
C=7, wenn 2 < Δg(t) <= 5.
Der Codierungsprozeß ermittelt aus dem Bereich PCM1
(Tabelle 2) den neuen Erwartungswert g′(t+1), gibt dafür
einen Code C ab, und versetzt sich zu Beginn des nächsten
Takts automatisch in den Anfangszustand Z0 zurück.
Wie Zustand Z1, der neue Erwartungswert g′(t=1) wird jedoch
aus dem Bereich PCM2 (Tabelle 2) ermittelt.
Wie Zustand Z1, der neue Erwartungswert g′(t=1) wird jedoch
aus dem Bereich PCM3 (Tabelle 2) ermittelt.
Abb. 3 stellt den Decodierungsprozeß schematisch dar, der
aus 5 Funktionsblöcken Q, E, F, S, R besteht. Wir gehen
davon aus, daß im Takt t ein Code C vorliegt, der Puffer R
den alten Erwartungswert g′(t-1) enthält und sich der
Decodierungsprozess im Zustand Z(t) befindet. Der alte
Erwartungswert g′(t-1) ist im Grunde der Grauwert des
zuletzt wiederhergestellten Pixel. Q hat die Aufgabe, den
vorliegenden Code C zu überprüfen und im Zusammenhang mit
dem aktuellen Zustand Z(t) zu bestimmen, ob ein Pixel
wiederhergestellt oder ein neuer Zustand Z(t+1) ermittelt
wird. Ist Z(t) gleich Z0 oder Z4, und es wird ein Pixel
wiederhergestellt, so ermittelt E aus der Tabelle 1 eine dem
Code C entsprechende Grauwertdifferenz Δg′(t) und leitet sie
dem Funktionsblock S zu. S ist ein Addierer, der die Summe
g′(t) = g′(t-1) = Δg′(t)
bildet und sie als Grauwert des wiederherzustellenden Pixel
abgibt. Zur gleichen Zeit ersetzt g′(t) den alten Erwartungs
wert g′(t-1) in R. Ist Z(t) gleich Z1, Z2 oder Z3,
dann ermittelt F aus der Tabelle 2 einen dem Code C
entsprechenden Grauwert g′(t) und gibt ihn als Grauwert des
wiederherzustellenden Pixel ab. Zur gleichen Zeit ersetzt
g′(t) den alten Erwartungswert g′(t-1) in R. Der Decodierungs
prozeß geht zu Beginn des Takts (t+1) automatisch in
den Anfangszustand über.
Liegt zu Beginn des Takts t ein Code vor, so hängt das
Verhalten des Decodierungsprozesses von seinem aktuellen
Zustand ab. Es ist deshalb notwendig, den Decodierungs
prozeß in jedem einzelnen Zustand zu betrachten.
Der Decodierungsprozeß braucht nichts anderes zu tun als
zu Beginn des nächsten Takts in den dem Steuercode C
entsprechenden Zustand überzugehen:
Code | |
Z(t+1) | |
C=5 | |
Z1 | |
C=6 | Z2 |
C=7 | Z3 |
C=0 | Z4 |
Der Decodierungsprozeß bleibt in demselben Zustand und
errechnet g′(t) wie folgt:
g′(t) = g′(t-1) + Δg′(t)
wobei Δg′(t) eine vom Code C abhängige Größe ist, die
anhand der Tabelle 1 ermittelt wird:
Code | |
Δg′(t) | |
C=1 | |
-10 | |
C=2 | -7 |
C=3 | 7 |
C=4 | 10 |
Der Prozeß gibt g′(t) als Grauwert des wiederherzustellenden
Pixel ab und ersetzt g′(t-1) durch g′(t).
Wenn C=0, dann tut der Decodierungsprozeß nichts anderes
als sich zu Beginn des nächsten Takts in den Anfangszustand
zurück zu versetzen. Bei allen anderen Codes bleibt der
Decodierungsprozeß in demselben Zustand und errechnet g′(t)
wie folgt:
g′(t) = g′(t-1) + Δg′(t)
wobei Δg′(t) eine vom Code C abhängige Größe ist, die
anhand der Tabelle 1 ermittelt wird:
Code | |
Δg′(t) | |
C=1 | |
-4 | |
C=2 | -2 |
C=3 | -1 |
C=4 | 0 |
C=5 | 1 |
C=6 | 2 |
C=7 | 4 |
Der Prozeß gibt g′(t) als Grauwert des wiederherzustellenden
Pixels ab und ersetzt g′(t-1) durch g′(t).
Der Decodierungsprozeß gibt einen dem Code C zugeordneten
Grauwert g′(t) ab, ersetzt g′(t-1) durch g′(t) und geht zu
Beginn des nächsten Takts in den Anfangszustand Z0 über.
Zustand Z1: | |
PCM für den oberen Grauwertbereich | |
Code | |
g′(t) | |
C=1 | |
82 | |
C=2 | 88 |
C=3 | 94 |
C=4 | 100 |
C=5 | 106 |
C=6 | 112 |
C=7 | 118 |
C=0 | 124 |
Zustand Z2: | |
PCM für den mittleren Grauwertbereich | |
Code | |
g′(t) | |
C=1 | |
42 | |
C=2 | 47 |
C=3 | 52 |
C=4 | 57 |
C=5 | 62 |
C=6 | 67 |
C=7 | 72 |
C=0 | 77 |
Zustand Z3: | |
PCM für den oberen Grauwertbereich | |
Code | |
g′(t) | |
C=1 | |
2 | |
C=2 | 7 |
C=3 | 12 |
C=4 | 17 |
C=5 | 22 |
C=6 | 27 |
C=7 | 32 |
C=0 | 37 |
Tabelle 3 zeigt in allen Einzelheiten, wie sich der Coder
und der Decoder verhalten, wenn am Eingang des Coders die
nachstehende Folge von Grauwerten vorliegt:
10, 13, 18, 22, 84, 83, 86, 85, 84, 86, 48, 53, 55, 58, 57, 50, 56, 54, 52, 49
10, 13, 18, 22, 84, 83, 86, 85, 84, 86, 48, 53, 55, 58, 57, 50, 56, 54, 52, 49
Der Coder gibt für diese kurze Folge von 20 7-Bit-Pixeln
insgesamt 29 3-Bit-Codes ab. Das Kompressionsverhältnis
beträgt in diesem Falle:
Die mittlere Abweichung der Grauwerte der wiederher
gestellten Pixel ist 0,77.
Der Weg, der die Codes vom Ausgang des Coders zum Eingang
des Decoders führt, ist leider nicht frei von Störungen.
Dieser Weg kann z. B. aus einem Übertragungskanal und/oder
einem Datenträger bestehen. Ein fehlerhafter Code kann dazu
führen, daß die Zustandsübergänge des Decodierungs
prozesses nicht mehr mit den des Codierungsprozesses
übereinstimmen. Dies hat zwei Konsequenzen:
- - Fehlerhafte Pixel werden hergestellt, die sich auf der ganzen Zeile des Bildes fortpflanzen.
- - Die Anzahl der wiederhergestellten Pixel pro Zeile stimmt nicht mit der Zeilenlänge des ursprünglichen Bildes überein.
Man benötigt also zwei Maßnahmen, um das Coder-Decoder-
Paar fehlertolerant zu machen:
Der Codierungsprozeß und der Decodierungsprozeß werden
nach Ablauf einer vorgegebenen Anzahl I von Takten in ihren
Anfangszustand zurückversetzt. I wird Prozeß-Intervall,
kurz Intervall, genannt. Nach der Abgabe (bei der Codierung)
bzw. Überprüfung (bei der Decodierung) des Kontrollcodes
beginnt das nächste Intervall, indem der Prozeß erneut im
Anfangszustand startet. Tritt beim Decodierungsprozeß ein
fehlerhafter Code auf, so kann sich der Fehler nur bis zum
Ende des Intervalls fortpflanzen. Auf diese Weise wird die
Fortpflanzung fehlerhafter Pixel auf höchstens ein Intervall
beschränkt. Andererseits muß man berücksichtigen,
daß jedes Intervall im Durchschnitt zwei zusätzliche Zu
standsübergänge, d. h. zwei zusätzliche Codes, benötigt.
Ein allzu kurzes Intervall kann also dazu führen, daß sich
das Kompressionsverhältnis wesentlich verschlechtert. Ein
geeignetes Intervall soll stets ein Kompromiß zwischen zwei
entgegengesetzten Anforderungen sein: Die Fehlerfortpflanzung
möglichst schnell zu stoppen und ein hohes Kompressions
verhältnis zu erzielen. Simulation anhand von 7-Bit-
bilddaten (Zeilenlänge: 6912 Pixel) hat gezeigt, daß ein
guter Kompromiß in einem Intervall von 26-30 Takten zu
finden ist.
Im Normalbetrieb muß die Anzahl K der innerhalb eines
Intervalls vom Decoder wiederhergestellten Pixel identisch
sein mit der Anzahl J der vom Coder in demselben Intervall
codierten Pixel. Ein fehlerhafter Code kann jedoch dazu
führen, daß J<K oder J<K. Um dies zu kontrollieren,
gibt der Coder am Ende eines jeden Intervalls einen zusätzlichen
Code aus, der die Differenz D=I-J kennzeichnet.
Dabei ist I eine Konstante, die das Intervall angibt. Am
Ende eines jeden Intervalls überprüft der Decoder den Kontroll
code, stellt J=I-D wieder her und vergleicht J mit
K. Hierzu gibt es drei Möglichkeiten:
J=K: | |
Kein Fehler. Der Dekodierungsprozeß setzt sich im nächsten Intervall fort. | |
J<K: | Zuwenig Pixel wurden in diesem Intervall wiederhergestellt. Der Decodierungsprozeß ergänzt die Grauwerte der fehlenden (J-K) Pixel durch den Grauwert des zuletzt im Intervall wiederhergestelltem Pixel. Der Prozeß zeigt den Fehler an und setzt sich im nächsten Intervall fort. |
J<K: | Zuviel Pixel wurden in diesem Intervall wiederhergestellt. Der Decodierungsprozeß vernachlässigt die letzten (K-J) Pixel, zeigt den Fehler an und setzt sich im nächsten Intervall fort. |
Wenn eine Bildzeile vollständig wiederhergestellt ist, wird
die Fehleranzeige geprüft. Ist die Anzeige gesetzt,
so wird sie zurückgesetzt und die entsprechende Zeilennummer in
einen dafür vorgesehenen Puffer eingetragen.
Die Blockschaltdiagramme des Coders und des Decoders sind in
Abb. 4 und Abb. 5 dargestellt.
Gehen wir davon aus, daß sich der Coder zu Beginn des Takts
t im Zustand Z(t) befindet und der Puffer 43 den Erwar
tungswert g′(t) enthält. Liegt zu diesem Zeitpunkt ein
neuer Grauwert g(t) vor, so errechnet der Volladdierer 41
die Differenz
Δg(t) = g(t) - g′(t)
und leitet sie dem Ergebnisregister 42 zu. Das Ergebnis
ermöglicht es dem Adressengenerator 44, den nächsten
Zustand Z(t+1) zu ermitteln.
Ein Zustandsübergang findet statt und der Coder muß
einen Steuercode abgeben. Der Adressengenerator 46 ermittelt
aus der Registerdatei 47 einen dem Zustandsübergang
entsprechenden Steuercode und liefert ihn an den
Codepuffer 4C.
Der Coder bleibt in demselben Zustand. Hierin gibt es zwei
Möglichkeiten:
Liegt die aktuelle Differenz Δg(t) vor, dann ermittelt
der Adressengenerator 48 aus der Registerdatei 49 die
quantisierte Differenz Δg′(t) und leitet sie dem Puffer
43 zu. Der Puffer 43 enthält nun zwei Werte: g′(t)
und Δg′(t). Der Volladdierer 41 errechnet aus diesen
Werten einen neuen Erwartungswert
g′(t+1) = g′(t) = Δg′(t),
legt ihn im Ergebnisregister 42 ab und ersetzt g′(t) im
Puffer 43 durch diesen neuen Erwartungswert.
Gleichzeitig ermittelt der Adressengenerator 46 aus der
Registerdatei 47 einen dem neuen Erwartungswert
entsprechenden Code und liefert ihn an den Codepuffer
4C.
Der aktuelle Grauwert g(t) wird durch das Ergebnisregister
42 dem Adressengenerator 48 vorgelegt. Dieser ermittelt
aus der Registerdatei 49 den entsprechenden quan
tisierten Grauwert, der als neuer Erwartungswert g′(t+1)
dem Puffer 43 und dem Adressengenerator 46 zugeleitet
wird. Der Adressengenerator 46 sucht aus der Register
datei 47 einen dem Erwartungswert g′(t+1) entsprechenden
Code aus und legt ihn im Codepuffer 4C ab.
Der Takt-und-Pixel-Zähler 4A hat die Aufgabe, die Differenz
zwischen der Anzahl der Takte und der Anzahl der codierten
Pixel in einem jeden Intervall zu bilden. Am Ende eines
jeden Intervalls gibt der Kontrollcode-Generator 4B einen
Kontrollcode ab, der dieser Differenz entspricht.
Der Adressengenerator 52 überprüft jeden beim Codepuffer
50 eintreffenden Code und entscheidet zunächst, ob der
Decoder eine Zustandsänderung vorzunehmen hat. Ist dies der
Fall, so bestimmt der Adressengenerator 52 mit Hilfe des
Zustandsregisters 51 den neuen Zustand und veranlaßt den
Decoder dazu, zu Beginn des nächsten Takts in den neuen
Zustand überzugehen. Andernfalls wird keine Zustandsänderung
in Gang gesetzt und, je nachdem in welchem Zustand
sich der Decoder gerade befindet, ermittelt der Adressengenerator
52 aus der Registerdatei 53 einen dem vorliegenden
Code entsprechenden Grauwert g′(t) (PCM-Zustand) oder eine
dem vorliegenden Code entsprechende Grauwertdifferenz Δg′(t)
(DPCM-Zustand). Ist der Decoder in einem PCM-Zustand, so
wird g′(t) als nächster Erwartungswert im Puffer 54
zwischengespeichert und als Grauwert des wiederherzustellenden
Pixel dem Pixelpuffer 57 zugeleitet. Ist der Decoder in
einem DPCM-Zustand, so wird Δg′(t) dem Puffer 56
zugeführt. Zu diesem Zeitpunkt enthält der Puffer 54 noch
den alten Erwartungswert g′(t-1). Der Volladdierer 55 bildet
die Summe g′(t)
g′(t) = g′(t-1) + Δg′(t)
und liefert sie als Grauwert des wiederherzustellenden Pixel
an den Pixelpuffer 57. Gleichzeitig wird g′(t) als nächster
Erwartungswert im Puffer 54 zwischengespeichert.
Trifft ein Kontrollcode am Endes des Intervalls beim
Codepuffer 50 ein, so wird dieser der Kontrollcode-
Prüfschaltung 59 zugeführt. Diese Prüfschaltung prüft
anhand des Kontrollcodes und des Ergebnisses des Pixel-und-
Takt-Zählers nach, ob eine Korrektur der wiederher
gestellten, noch im Pixelpuffer 57 anstehenden Pixel notwendig
ist. Ist dies der Fall, so werden sie nach den in
Abschnitt 2.4.2 angegebenen Vorschriften korrigiert.
Claims (4)
1. Codierungsprozeß wie im ersten Kapitel definiert,
der durch folgende Merkmale gekennzeichnet ist:
- 1.1 Der Anfangszustand ist ein DPCM-Zustand, dem der gröbste DPCM-Bereich, d. h. DPCM-Bereich mit den gröbsten Grauwertdifferenzen, zugeordnet ist.
- 1.2 Ist der Codierungsprozeß im Anfangszustand und es
liegt ein Grauwert vor, so kann er abhängig von der
errechneten Grauwertdifferenz entweder
- a. in einen PCM-Zustand übergehen und dabei einen Steuercode abgeben, oder
- b. in einen anderen DPCM-Zustand übergehen und dabei einen Steuercode abgeben, oder
- c. in demselben Zustand bleiben und dabei einen Code für die aktuelle Grauwertdifferenz abgeben.
- 1.3 Ist der Codierungsprozeß in einem PCM-Zustand, so gibt er einen Code für den quantisierten Grauwert des vorliegenden Pixel ab und versetzt sich zu Beginn des nächsten Takts automatisch in den Anfangszustand zurück, ohne dabei einen Steuercode abzugeben.
- 1.4 Ist der Codierungsprozeß in einem DPCM-Zustand, der
nicht Anfangszustand ist, dann kann er sich abhängig
von errechneter Grauwertdifferenz entweder
- a. in demselben Zustand aufhalten und dabei einen Code für die Grauwertdiferenz abgeben, oder
- b. in einen anderen DPCM-Zustand - der auch Anfangszustand sein kann - versetzen und dabei einen Steuer code abgeben.
- 1.5 Am Ende eines jeden Prozeßintervalls mit I Takten versetzt sich der Codierungsprozeß in den Anfangszu stand zurück, ermittelt die Anzahl J der codierten Pixel und gibt einen Kontrollcode für die Differenz (I-J) ab. Beim Decoder ermöglicht es dieser Kontroll code dem Decodierungsprozeß, etwaige Fehler festzustellen und Fehlerfortpflanzung zu stoppen.
2. Decodierungsprozeß wie im ersten Kapitel definiert,
der durch folgende Merkmale gekennzeichnet ist:
- 2.1 Der Anfangszustand ist ein DPCM-Zustand, wie unter Punkt 1.1 angegeben
- 2.2 Ist der Decodierungsprozeß im Anfangszustand, so
hängt sein Verhalten vom vorliegenden Code ab:
- - Ist der Code ein Steuercode, so geht der Prozeß entweder in einen PCM-Zustand oder einen anderen DPCM-Zustand über, ohne dabei ein Pixel wiederherzustellen.
- - Ist der Code kein Steuercode, so bleibt der Prozeß in demselben Zustand, errechnet aus dem Code einen Grauwert, und stellt das nächste Pixel wieder her.
- 2.3 Ist der Decodierungsprozeß in einem PCM-Zustand und es liegt ein Code vor, so ermittelt er einen dem Code zugeordneten Grauwert und stellt das nächste Pixel wieder her. Der Prozeß versetzt sich zu Beginn des nächsten Takts automatisch in den Anfangszustand zurück.
- 2.4 Befindet sich der Decodierungsprozeß in einem DPCM-
Zustand, der nicht Anfangszustand ist, so hängt sein
Verhalten vom vorliegenden Code ab:
- - Ist der Code ein Steuercode, dann versetzt sich der Prozeß in einen anderen DPCM-Zustand - der auch Anfangszustand sein kann - ohne dabei ein Pixel wiederherzustellen.
- - Ist der Code kein Steuercode, dann bleibt der Prozeß in demselben Zustand, errechnet aus dem Code einen Grauwert, und stellt das nächste Pixel wieder her.
- 2.5 Am Ende eines jeden Prozeßintervalls versetzt sich der Decodierungsprozeß in den Anfangszustand zurück, ermittelt die Anzahl K der wiederhergestellten Pixel, und vergleicht sie mit der durch den Kontrollcode übermittelten Anzahl J der im Coder während desselben Intervalls codierten Pixel. Stimmen J und K nicht überein, so sind entweder zuviel oder zuwenig Pixel wiederhergestellt worden. Im ersten Falle werden die überzähligen Pixel vernachlässigt. Im zweiten Falle werden fehlende Pixel durch das im Prozeßintervall zuletzt wiederhergestellte Pixel ergänzt.
3. Coder (Abb. 4) wie im ersten Kapitel definiert,
dadurch gekennzeichnet, daß er als Zustandsmaschine in
der Art eines Mealy-Automaten konzipiert ist und folgende
Komponenten aufweist (Abb. 4):
- - Eine Steuerschaltung (41, 42, 43, 44, 45), die aus einem Volladdierer (41), einem Ergebnisregister (42), einem Puffer (43) für quantisierte Grauwerte und Grauwertdifferenzen, einem Adressengenerator (44) und einem Zustandsregister (45) besteht. Diese Steuer schaltung ermöglicht es dem Coder, in jedem Takt den nächsten Zustand der Maschine zu bestimmten.
- - Ein Pixelpuffer (40), der dazu dient, einlaufende Pixel aufzufangen.
- - Eine Registerdatei (49), die quantisierte Grauwerte und Grauwertdifferenzen enthält. Aus dieser Register datei können einzelne Werte mit Hilfe des Adressengenerators (48) geholt und im Puffer (43) abgelegt werden.
- - Eine Registerdatei (47), in der n-Bit-Codes gespeichert sind. Die einzelnen Codes können mit Hilfe des Adressengenerators (46) geholt und im Codepuffer (4C) abgelegt werden.
- - Ein Pixel-und-Takt-Zähler (4A), der die codierten Pixel und die Takte in einem jeden Intervall abzählt.
- - Ein Kontrollcode-Generator (4B), der am Ende eines jeden Intervalls anhand des Zählergebnisses des Pixel-und-Takt-Zählers einen Kontrollcode bildet und abgibt.
- - Ein Codepuffer (4C), der dazu dient, die Codes aufzunehmen und sie in vorgeschriebenem Format auszugeben.
4. Decoder (Abb. 5) wie im ersten Kapitel definiert,
dadurch gekennzeichnet, daß er als Zustandsmaschine in
der Art eines Mealy-Automaten konzipiert ist und folgende
Komponenten aufweist (Abb. 5):
- - Ein Codepuffer (50), der dazu dient, einlaufende Codes aufzufangen.
- - Eine Registerdatei (53), in der Erwartungswerte und quantisierte Grauwertdifferenzen gespeichert sind.
- - Eine Steuerschaltung (51, 52), die aus einem Zu standsregister (51) und einem Adressengenerator (52) besteht. Das Zustandsregister gibt den aktuellen Zustand der Maschine an. Anhand des vorliegenden Codes bestimmt die Steuerschaltung den nächsten Zustand und ermittelt aus der Registerdatei (53) entweder einen Erwartungswert oder eine Grauwertdifferenz.
- - Eine Addiererschaltung (54, 55, 56), die aus einem Erwartungwert im Puffer (54) und einer Grauwertdifferenz im Puffer (56) einen neuen Erwartungswert errechnet und das entsprechende Pixel wiederherstellt.
- - Ein Pixelpuffer (57) zur Aufnahme der in einem Intervall wiederhergestellten Pixel.
- - Ein Pixel-und-Takt-Zähler (58), der die im Pixel puffer (57) anstehenden, wiederhergestellten Pixel abzählt.
- - Eine Kontrollcode-Prüfschaltung (59), die am Ende eines jeden Prozeßintervalls prüft, ob die durch den Kontrollcode übermittelte Anzahl J der codierten Pixel mit der Anzahl K der im Intervall wiederhergestellten, noch im Pixelpuffer (57) anstehenden Pixel übereinstimmt. Stimmen J und K nicht überein, dann werden die im Pixelpuffer anstehenden Pixel nach dem in Abschnitt 2.4.2 beschriebenen Verfahren korrigiert.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE4210246A DE4210246A1 (de) | 1992-03-28 | 1992-03-28 | Codierungs- und Decodierungsverfahren sowie -vorrichtungen |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE4210246A DE4210246A1 (de) | 1992-03-28 | 1992-03-28 | Codierungs- und Decodierungsverfahren sowie -vorrichtungen |
Publications (1)
Publication Number | Publication Date |
---|---|
DE4210246A1 true DE4210246A1 (de) | 1993-09-30 |
Family
ID=6455332
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE4210246A Withdrawn DE4210246A1 (de) | 1992-03-28 | 1992-03-28 | Codierungs- und Decodierungsverfahren sowie -vorrichtungen |
Country Status (1)
Country | Link |
---|---|
DE (1) | DE4210246A1 (de) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004064402A1 (en) * | 2003-01-13 | 2004-07-29 | Nokia Corporation | Processing of images using a limited number of bits |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3642394A1 (de) * | 1986-12-11 | 1988-06-23 | Siemens Ag | Verfahren und schaltungsanordnung zur datenreduktion eines bildsignals |
-
1992
- 1992-03-28 DE DE4210246A patent/DE4210246A1/de not_active Withdrawn
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3642394A1 (de) * | 1986-12-11 | 1988-06-23 | Siemens Ag | Verfahren und schaltungsanordnung zur datenreduktion eines bildsignals |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004064402A1 (en) * | 2003-01-13 | 2004-07-29 | Nokia Corporation | Processing of images using a limited number of bits |
EP1853068A1 (de) * | 2003-01-13 | 2007-11-07 | Nokia Corporation | Verarbeitung von Bildern unter Verwendung einer begrenzten Anzahl von Bits |
US7715638B2 (en) | 2003-01-13 | 2010-05-11 | Nokia Corporation | Processing of images using a limited number of bits |
USRE43256E1 (en) | 2003-01-13 | 2012-03-20 | Nokia Corporation | Processing of images using a limited number of bits |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69333789T2 (de) | Kodierung von kontinuierlichen Bilddaten | |
EP0276753B1 (de) | Verfahren und Vorrichtung zur digitalen Nachrichtenübertragung und/oder -aufzeichnung und -wiedergabe | |
DE69127739T2 (de) | Bilddatenverarbeitungsgerät | |
DE69132063T2 (de) | Bildcodierung mit Optimierung der erzeugten Codemenge | |
EP0717503B1 (de) | Digitales Codier- und Decodierverfahren | |
DE3109795A1 (de) | Bandeinengungsverfahren fuer getoente bilder | |
DE69709847T2 (de) | Verfahren und vorrichtung zur bildkodierung und -dekodierung sowie datenaufzeichnungsmedium | |
DE3636675C2 (de) | ||
DE3875334T2 (de) | Verfahren zur synchronisierung fuer die uebertragung ueber einen asynchronen kanal einer folge von kodierten bildern, die mittels eines kodes mit variabler laenge kodiert sind und einrichtung zur durchfuehrung dieses verfahrens. | |
DE3750853T2 (de) | Verfahren zur Bildsignalkodierung mittels Orthogonal-Transformation. | |
DE69029317T2 (de) | Steuerungssystem für die bildkodierung | |
DE2550928C2 (de) | Einrichtung zur Komprimierung einer m·n-Matrix deltacodierter Punkte | |
DE3239607C2 (de) | ||
DE3742098A1 (de) | Verfahren und vorrichtung zur kompression und rekonstruktion von daten | |
DE19802860B4 (de) | Verfahren und Vorrichtung zum kontext-basierten arithmetischen Codieren/Decodieren | |
DE3853899T2 (de) | Verfahren und Vorrichtung zur Codierung und Decodierung eines Signals. | |
EP0123893B1 (de) | Verfahren und Schaltungsanordnung zur Bildfehlerkorrektur | |
DE2946982C2 (de) | Verfahren zum Übertragen eines Faksimile-Signals | |
EP0554300B1 (de) | Verfahren, coder und decoder zur datenübertragung und/oder -speicherung | |
DE69224546T2 (de) | Kodier- und Dekodiereinrichtungen | |
DE69418824T2 (de) | Steuersystem zur Bewegtbilddekodierung | |
DE19821727A1 (de) | Vorrichtung und Verfahren zur Codierung mit variabler Länge | |
DE2516332A1 (de) | Verfahren zur codierung von elektrischen signalen, die bei der abtastung eines graphischen musters mit aus text und bild gemischtem inhalt gewonnen werden | |
DE2232121A1 (de) | Redundanz verminderndes system fuer eingangssignalproben | |
DE69528853T2 (de) | System und Verfahren zum Editieren bewegter Bilder |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8110 | Request for examination paragraph 44 | ||
8130 | Withdrawal |