-
Die
vorliegende Erfindung betrifft Vorrichtungen zur Codierung digitaler
Videosignale und Vorrichtungen zur Decodierung eines komprimierten
digitalen Videosignals.
-
Es
finden weltweite Bemühungen
statt, um die Qualität
der Produktion, Übertragung
und Wiedergabe von Videosignalen zu verbessern, weil für Videosysteme
verbesserter Qualität
sehr viel kommerzielle Wichtigkeit vorhergesagt wird. Bei diesen
Bemühungen
wird zumindest teilweise die Auflösung vergrößert, mit der Bilder in repräsentative
elektrische Signale umgesetzt werden, indem die räumlichen
und zeitlichen Abtastraten vergrößert werden,
mit denen Videobilder in elektrische Signale umgesetzt werden. Diese
Zunahme der Auflösung
bedeutet folglich, daß mehr
Daten über
Bilder in einem gegebenen Zeitraum produziert, verarbeitet und übertragen
werden müssen.
-
Videobilder,
wie zum Beispiel die Bilder im Sichtfeld einer Fernsehkamera, werden
mit einer vorbestimmten Rate abgetastet und in einer Reihe elektrischer
Signale umgesetzt, wobei jedes elektrische Signal eine Kenngröße einer
vorbestimmten Region des Bildes repräsentiert, die im allgemeinen
als Bildelement, Pel oder Pixel bezeichnet wird. Mehrere Bildelemente
zusammengenommen bilden zu einem vorbestimmten Zeitpunkt quasi ein
Standbild, das die Beschaffenheit des Bildes an dem vorbestimmten
Zeitpunkt repräsentiert. Bei
der Vergrößerung der
Qualität
von auf diese Weise produzierten Videosignalen müssen zumindest teilweise mehr
kleinere Bildelemente verwendet werden, um ein gegebenes Einzelbild
zu repräsentieren,
und es müssen
sehr viel Einzelbilder pro Zeiteinheit produziert werden. Zum Beispiel
spezifiziert die Empfehlung CCIR-601 die Anzahl der Bildelemente
in einem Einzelbild als 720 horizontale Bildelemente × 486 vertikale Bildelemente
(USA und Japan) oder 576 vertikale Bildelemente (Europa). In jeder
Sekunde werden 30 oder 25 verschachtelte Bilder produziert. Bei
HDTV-Projekten (hochauflösendes
Fernsehen) wurde vorgeschlagen, mit etwa 700–1000 horizontalen Zeilen jeweils
mit 1200–2000
Bildelementen zu arbeiten. Diese HDTV-Bemühungen ziehen in Betracht,
25 oder 30 verschachtelte Bilder pro Sekunde oder 60 oder 50 nichtverschachtelte Bilder
pro Sekunde zu produzieren.
-
Mit
zunehmender Anzahl der Bildelemente für jedes Videoeinzelbild und
zunehmender Rate, mit der Einzelbilder produziert werden, muß eine zunehmende
Menge an Videodaten in einem gegebenen Zeitraum produziert, übertragen
und empfangen werden. Es wäre
vorteilhaft, wenn durch diese Systeme produzierte Videosignale so
komprimiert werden könnten,
daß weniger
Daten erzeugt werden könnten,
die immer noch genug Informationen enthalten würden, so daß qualitativ hochwertigere
Videobilder wiedergegeben werden könnten.
-
Es
wurden mehrere Datenkomprimierungsverfahren vorgeschlagen, die versuchen,
qualitativ hochwertigere Videobilder mit derselben Anzahl von Bit
und denselben Bitraten wie für
qualitativ weniger hochwertige Bilder zu übertragen. Bei einem solchen
Verfahren wird ein Codierer verwendet, der digitale Videosignale empfängt, die
Kenngrößen einer
Sequenz von Bildelementen repräsentieren.
Der Codierer transformiert Blöcke
solcher Videosignale zu Blöcken
von Transformationskoeffizienten in bezug auf die räumlichen
Fequenzkomponenten in den Bereich des Bildes, die durch die Blöcke von
Bildelementen repräsentiert
werden. Die Blöcke
von Frequenzkoeffizienten werden dann gemäß einer bestimmten vorbestimmten
Sequenz quantisiert und gescannt. Die quantisierten Frequenzkoeffizienten
werden dann in der Reihenfolge, die durch die Scanning-Sequenz definiert
wird, zu einem Variable-Wortlänge- Codierer gesendet,
der die quantisierten Frequenzkoeffizienten dann codiert und die
codierten quantisierten Frequenzenkoeffizienten überträgt. Es hat sich erwiesen, daß weniger
Bit gesendet werden müssen,
wenn anstelle von Pixeldatenbit diese codierten quantisierten Frequenzkoeffizienten
gesendet werden.
-
Bei
einem anderen vorgeschlagenen Datenkomprimierungsverfahren werden
die Kenngrößen eines Segments
des Videosignals geschätzt
und die Schätzung
von dem tatsächlichen
Videosignalsegment subtrahiert, um ein geschätztes Fehlersignal zu erzeugen,
das dann anstelle des tatsächlichen
Videosignalsegments codiert und übertragen
wird. Wieder hat sich gezeigt, daß weniger Bit übertragen
werden müssen,
wenn anstelle von Pixeldatensignalen Schätzungsfehlersignale übertragen
werden.
-
Bei
einer weiteren Technik zum Komprimieren von Videodaten werden Daten
produziert und übertragen,
die im Hinblick auf ein aktuelles Videosignalsegment und ein vorheriges
Videosignalsegment berechnete Bewegungsvektoren repräsentieren,
anstelle der Übertragung
der Pixeldaten. Mit diesen Bewegungsvektoren kann man eine Bewegungskompensation
zur Erzeugung genauerer Schätzungen
eines Videosignals und kleinerer Schätzungsfehlersignale bereitstellen,
wodurch dann die Anzahl der zum Übertragen
von Videosignalen notwendigen Bit verringert wird.
-
Jede
dieser Techniken versucht, Daten zu senden, die von einem tatsächlichen
Videosignal abgeleitet werden, mit denen ein Decodierer in einem
Empfänger
der Videosignale aus einer begrenzten Teilmenge der das tatsächliche
Videosignal definierenden Daten das tatsächliche Videosignal rekonstruieren
kann. Die tatsächliche
Anzahl der Bit, die in diesen Situationen übertragen werden muß, ist kleiner
als die Anzahl der Bit, die notwendig sind, um jedes Bildelement
in dem Videosignal zu definieren, und somit können Videosignale mit höherer Auflösung mit
derselben Bitrate übertragen
werden. Obwohl jede dieser Techniken bis zu einem gewissen Grade
bei der Erzielung einer geeigneten Komprimierung von Videodaten
ohne übermäßigen Informationsverlust
erfolgreich ist, gibt es signifikante Gebiete, auf denen die Codierung
von Videodaten verbessert werden kann, so daß die Anzahl der Bit, die übertragen
werden muß,
verringert wird und ein Videodecodierer eine genaue Rekonstruktion
vornehmen kann.
-
Aus
EP-A-0451545 ist eine Anordnung bekannt, die sowohl ein Einzelbildformat
als auch ein Teilbildformat zum gleichzeitigen Komprimieren des
Videosignals verwendet. Tatsächlich
werden beide Formate verwendet, um ein erstes und ein zweites komprimiertes
Videosignal zu erhalten, die dann auf Fehler ausgewertet werden.
Das komprimierte Videosignal mit den wenigsten Fehlern wird dann
für die
weitere Verarbeitung ausgewählt.
Beide Codierungstechniken werden gleichzeitig verwendet.
-
Aus
WO-A-9015506 ist eine Codierungsanordnung bekannt, die eine diskrete
Kosinustransformation verwendet, die als Reaktion auf einen Entscheidungsprozeß verwendet
wird, bei dem ein sogenannter Vollbildblock oder separat zwei Halbbildblöcke beteiligt
sind. Bildwertdifferenzen in den Halbbildpaaren werden miteinander
addiert, um eine Halbbildsumme zu erhalten. Ähnlich werden Bildwertdifferenzen
in dem Vollbild addiert, um eine Vollbildsumme zu bilden. Die Vollbildsumme
wird mit einem Bewertungsfaktor multipliziert und dann von einer
Halbbildsumme subtrahiert, um ein positives Entscheidungsergebnis
bereitzustellen. Wenn das Entscheidungsergebnis positiv ist, wird
das Vollbild umgesetzt, andernfalls werden beide Halbbilder separat umgesetzt.
-
Aus
PATENT ABSTRACTS OF JAPAN, Band 015, Nr. 355 (E-1109) 9.9.1991, und JP-A-31 039 088 (RICOH
CO LTD) 13.6.1991, ist eine weitere Codierungsanordnung bekannt,
die eine diskrete Kosinustransformation verwendet. Die diskrete
Kosinustransformation wird in jedem Datenblock ausgeführt und
durch Dividieren eines erhaltenen Gleichstromkoeffizienten durch
jede Schwelle einer Quantisierungsmatrix, um die Quantisierung zu
bewirken. Eine Gleichstromkomponente des quantisierten Gleichstromkoeffizienten
eines aktuellen Datenblocks wird von der quantisierten Gleichstromkomponente
eines vorherigen Datenblocks subtrahiert, und die Anzahl der Bit
dieser Differenz wird dann Huffman-codiert.
-
Gemäß einem
Aspekt der vorliegenden Erfindung wird eine Codierungvorrichtung
nach Anspruch 1 bereitgestellt.
-
Gemäß einem
weiteren Aspekt der vorliegenden Erfindung wird eine Decodierungsvorrichtung
nach Anspruch 10 bereitgestellt.
-
Die
verbesserte Komprimierung von Videodaten wird durch einen adaptiven
Videoeinzelbild-/-teilbildcodierer und -decodierer erreicht. Bei
einem Beispiel der Erfindung werden verschieden große Videodatenblöcke verarbeitet,
um verschiedene Codierungs- und verschiedene Bewegungsschätzbetriebsarten
zu erzielen. Das Verhalten eines die Erfindung realisierenden Codierers
und das Verhalten eines entsprechenden Decodierers passen sich an
bestimmte Kenngrößen des
Videobildes an. Bei diesem adaptiven Verhalten erfolgt ein Wechseln
zwischen einem Prozeß des
Codierens und des Decodierens von Informationen aus einem Videoeinzelbild
oder dem Codieren und Decodieren von Informationen aus einem Videoteilbild.
Bei einem spezifischerem Beispiel umfaßt die vorliegende Erfindung
eine Anpassung zwischen Codierungs- und Decodierungsinformationen
aus einem Videodateneinzelbild oder Codierung und Decodierung von
Informationen aus jedem von mehreren verschachtelten Videodatenteilbildern.
Abhängig
von der verwendeten Codierungsbetriebsart können entweder einzeln oder
in beliebiger Kombination verschiedene Schritte unternommen werden,
um die Komprimierung und Dekomprimierung von Videodaten zu verbessern.
Bei spezifischen Beispielen wird eine angemessene Quantisierung
gewählt,
es werden verschiedene Scanning-Techniken
verwendet, verschiedene Techniken zur Vorhersage bestimmter Komponenten
der Videosignale verwendet oder verschiedene Bewegungskompensationsbetriebsarten
verwendet. Die Vorteile der vorliegenden Erfindung sind für alle Videosysteme
nützlich,
bei denen digitale Videosignale vorkommen, darunter hochauflösendes Fernsehen
und Videotelekommunikationssysteme.
-
Kurze Beschreibung
der Zeichnung
-
1 ist ein Blockschaltbild eines die Erfindung
realisierenden Videosignalcodierers;
-
1a ist
eine Darstellung einer Bildstrukturgruppe, die bei einem Beispiel
der Erfindung nützlich
ist;
-
1b und 1c zeigen
Beispiele für
bei einem Beispiel der Erfindung nützliche Block-Scans;
-
1d bis 1k zeigen
Beispiele für
Tabellen, die die Längen
der in einem Beispiel der Erfindung verwendeten Variable-Länge-Codes
identifizieren;
-
2 ist
ein Blockschaltbild eines die Erfindung realisierenden Videosignaldecodierers;
-
3 ist
ein Blockschaltbild der Funktionalspezifikation eines blockadaptiven
bewegungskompensierten unidirektionalen Prädiktors;
-
4 ist ein Blockschaltbild der Funktionalspezifikation
eines blockadaptiven bewegungskompensierten bidirektionalen Prädiktors;
-
5 ist
ein ausführliches
Blockschaltbild des in 1 gezeigten
blockadaptiven Einzelbild-/Teilbildcodierungsanalysierers;
-
6 ist
ein Bockschaltbild des Blockformatierers von 1;
-
7 ist ein Blockschaltbild des Blockentformatierers
von 1 und 2;
-
8 ist
ein Flußdiagramm
der Intra-Gleichstromkoeffizientenprädiktion
von 1 und 2;
-
9 ist
ein Beispiel für
adaptive Einzelbild-/Teilbild-Gleichstromkoeffizientenprädiktion;
-
10 ist
ein Blockschaltbild des variable-Wortlängenwahl-Analysierers von 1;
-
11 ist
ein Flußdiagramm
der Codierung eines Mscale-Parameters für B-Bilder in einem Beispiel der
Erfindung;
-
12 ist
ein Flußdiagramm
der Decodierung eines Mscale-Parameters für B-Bilder in einem Beispiel der
Erfindung;
-
13 ist
ein Blockschaltbild eines Beispiels für einen in einem Beispiel der
Erfindung nützlichen Sichtbarkeitsmatrixselektor;
-
14 ist
ein Blockschaltbild eines in einem Beispiel der Erfindung nützlichen
Vorwärts-/Invers-Scan-Selektors;
-
15 ist
ein Flußdiagramm
der Bewegungsvektorprädiktion
für P-Bilder
in einem Beispiel der Erfindung; und
-
16 ist ein Flußdiagramm der Bewegungsvektorprädiktion
für B-Bilder
in einem Beispiel der Erfindung.
-
Ausführliche
Beschreibung
-
1 zeigt einen die Erfindung realisierenden
beispielhaften adaptiven bewegungskompensierten prädiktiven/interpolativen
Codierer. Der Codierer von 1 empfängt digitale
Videoeingangssignale auf einer Eingangsleitung 10 und komprimiert
diese Videoeingangssignale zur Übertragung
zu einem Empfänger,
der diese Signale dekomprimiert, um Videobilder zu erzeugen. Die
digitalen Videoeingangssignale sind räumliche und zeitliche Abtastwerte
eines Videobildes und können
durch Scannen eines Bildfeldes und Erzeugen eines die Kenngrößen des
Bildfeldes an vorbestimmten Punkten betreffenden elektrischen Signals
erzeugt werden. Die bei der Scanning-Operation bestimmten Kenngrößen werden
in elektrische Signale umgesetzt und digitalisiert. Die Videoeingangssignale
umfassen eine Abfolge digitaler Wörter, die jeweils bestimmte
Informationen an einem bestimmten Zeitpunkt über eine kleine Region des
Bildfeldes repräsentieren,
die als Bildelement bezeichnet wird. Eine vollständige Menge digitaler Repräsentationen
für das
Bild an einem bestimmten Zeitpunkt wird als Einzelbild oder Bild
bezeichnet. Jedes Einzelbild kann als aus einer Anzahl kleinerer Regionen
bestehend betrachtet werden, die allgemein als Teilbilder bekannt
sind; zum Beispiel kann jedes Einzelbild aus zwei verschachtelten
Teilbildern bestehen, die ungeradzahlige und geradzahlige horizontale
Linien oder Zeilen von Bildelementen in dem Bild repräsentieren.
Das Einzelbild kann außerdem
so betrachtet werden, daß es
eine Anzahl von Makroblöcken,
Submakroblöcken
und Blöcken
von Bildelementen, die Gruppen zusammenhängender Bildelemente repräsentieren,
wie zum Beispiel 16 × 16-Makroblöcke von
Bildelementen, 16 × 8-Subblöcke von
Bildelementen und 8 × 8-Blöcke von
Bildelementen, repräsentiert.
-
Das
digitale Videoeingangssignal kann ein Monochrom-Videosignal oder ein Farbvideosignal
sein. Im Fall eines Monochrom-Videosignals kann jedes Einzelbild
eine Menge digitaler Repräsentationen
der Helligkeit oder Intensität
eines zweidimensionalen Bildelementarrays, woraus ein Videobild
besteht, umfassen, Im Fall eines Farbvideosignals umfaßt jedes
Bild nicht nur eine Helligkeitskomponente, sondern auch eine Farbkomponente.
Zum Beispiel kann bei der Empfehlung CCIR 601 ein Farbvideosignalbild
(d.h. eine zeitliche Probe des Bildes) aus einem Luminanzeinzelbild
aus 720 horizontalen Bildelementen × 480 vertikalen Bildelementen
und zwei Chrominanzeinzelbildern Cb und Cr mit 1/4 Auflösung von
jeweils 360 horizontalen Bildelementen × 240 vertikalen Bildelementen
zusammengesetzt sein. Eine Sequenz solcher Bilder kann mit einer
Rate von 29,97 Bildern pro Sekunde übertragen werden. Der Luminanzrahmen
wird als verschachtelte Vereinigung zweier konstituierender CCIR-601-Luminanzteilbilder
gebildet werden, während
die Chrominanzeinzelbilder durch Filterung und Unterabtastung der
jeweiligen 4:2:2-CCIR-601-Chrominanzeinzelbilder abgeleitet werden.
-
Zum
Zwecke der Darstellung eines spezifischen Beispiels für die Erfindung
nimmt die nachfolgende Beschreibung an, daß das Videosignal auf der Eingangsleitung 10 ein
Videosignal gemäß der Empfehlung CCIR
601 ist. Für
Fachleute ist erkennbar, daß die
Prinzipien der Erfindung auch für
andere Arten von Videosignalen, wie zum Beispiel HDTV-Videosignalen,
gelten. Um bei der Beschreibung des Beispiels für die Erfindung von 1 zu helfen, sollte bestimmte Terminologie
definiert werden. Ein Block ist ein Array zusammenhängender
Bildelemente von 8 horizontalen Zeilen mal 8 vertikalen Spalten.
Blöcke
können
Gruppen von Luminanzdaten oder Gruppen von Chrominanzdaten sein.
Ein Makroblock besteht aus vier zusammenhängenden 8 × 8-Luminanzdatenblöcken und
den beiden 8 × 8-Chrominanzdatenblöcken, die
dem durch die vier Luminanzdatenblöcke repräsentierten Bereich des Bildes
entsprechen. Ein Slice ist eine horizontale Zeile von Makroblöcken, beginnend
am linken Rand des Bildes und endend am rechten Rand des Bildes.
Ein Luminanzeinzelbild wird als verschachtelte Vereinigung zweier
CCIR-601-Luminanzteilbilder gebildet. Ein Einzelbild umfaßt geradzahlige
horizontale Zeilen von Bildelementen und das andere Teilbild umfaßt ungeradzahlige
horizontale Zeilen von Bildelementen.
-
Bei
den in 1 und 2 gezeigten
Beispielen für
die Erfindung werden mehrere Bildtypen codiert und decodiert. Genauer
gesagt werden I-Bilder, P-Bilder und B-Bilder codiert und decodiert.
I-Bilder oder intracodierte Bilder sind Bilder, die ohne Bezug auf
irgendwelche andere Bilder codiert und decodiert werden. P-Bilder
oder vorhergesagte Bilder sind Bilder, die im Hinblick auf ein vorheriges
Bild codiert werden. Zur Erzeugung von P-Bildern kann Bewegungskompensation
verwendet werden. B-Bilder oder bidirektional vorhergesagte Bilder
sind Bilder, die im Hinblick auf Kenngrößen eines vorherigen I- oder
P-Bildes und eines zukünftigen
I- oder P-Bildes codiert werden. Wie im Fall der P-Bilder können auch
B-Bilder unter Verwendung von Bewegungskompensation codiert werden.
Unter entsprechenden Umständen
können
von P-Bildern und I-Bildern
bestimmte ihrer Blöcke
auf dieselbe Weise codiert werden, wie die Blöcke der I-Bilder codiert werden,
d.h. ohne Bezug auf andere Bilder ("Intracodierung"). Eine Struktur einer Gruppe-von-Bild
(GOP) wird in diesem Beispiel mit N = 12 und M = 3 gemäß der Sprechweise
der Motion Picture Experts Group (MPEG) verwendet. Die GOP besteht
aus einem intracodierten I-Bild,
3 prädiktiv
codierten P-Bildern und 8 bidirektional prädiktiven Code-B-Bildern. Diese
GOP stellt sicher, daß alle
12/29,97 (ungefähr
0,4) Sekunden ein vollständiges
I-Bild auftritt, wobei es sich daher um die maximale Verzögerung zum
Erfassen eines Bildes aus einem Bitstrom handelt. Siehe 1a.
-
Ein
Bild wird in Makroblöcke
aufgeteilt, wobei ein Makroblock ein 16 × 16-Luminanzblock ist, plus
die mitangeordneten 8 × 8-Cb-
und Cr-Blöcke
(jeweils einer). Diese Definition läßt sich jedoch leicht auf die
volle CCIR-601-Vertikalchrominanzauflösung erweitern, wobei ein 16 × 16-Luminanzblock
mit zwei 8 × 8-Cb-
und zwei 8 × 8-Cr-Blöcken assoziiert
wird. Der Makroblock ist die Einheit, für die Betriebsarten der Bewegungskompensation
und Quantisierung definiert werden. Ein Slice wird als eine Zeile
von Makroblöcken
definiert, beginnend am linken Rand des Bildes und endend am rechten
Rand.
-
Das
digitale Videoeingangssignal auf der Eingangsleitung 10 wird
durch den in 1 gezeigten Codierer
zu einem komprimierten Bitstrom codiert, der auf der Ausgangsleitung 26 zu
einem anderen Ort übertragen
werden kann, der einen Empfänger
aufweist, der den Bitstrom decodieren und ein Videosignal erzeugen
kann. Ein wichtiges Merkmal des Codierers von
-
1 besteht darin, daß in entsprechenden Umständen vielfältige Codierungstechniken
verwendet werden können,
um das Videoeingangssignal auf der Leitung 10 effizient
zu komprimieren und um eine präzise Rekonstruktion
des Videobildes in dem Decodierer ohne signifikanten Informationsverlust
zu gestatten. Genauer gesagt wählt
der Codierer von 1 adaptiv seine Codierungsbetriebsart
dergestalt, daß entweder
Codierung von Einzelbildern in dem Videosignal oder Codierung der
verschachtelten Teilbilder in den Einzelbildern des Videoeingangssignals
stattfindet. Nachdem die Art der für das Videoeingangssignal zu
verwendenden Codierung ausgewählt
wurde, können
im Hinblick auf die durch den Codierer von 1 verwendete
Codierungstechnik vielfältige
Techniken, die zum Komprimieren von Videodaten verwendet werden,
auf adaptive Weise verbessert werden. Zum Beispiel können Techniken
zur Schätzung
zukünftiger
Videosignale genauer gemacht werden. Außerdem werden Techniken zur
Verwendung der Bewegungskompensation mit diesen Schätzungstechniken
verbessert. Zusätzlich
können
auch Dinge wie etwa Quantisierungsprozeduren, Scanning-Techniken, Gleichstromkoeffizientenprädiktion
und Variable-Wortlängen-Codierung
verbessert werden.
-
Es
werden zwei grundlegende Quantisierungs- und Codierungsbetriebsarten
für einen
Makroblock zugelassen: Einzelbildcodierung und Teilbildcodierung.
Diese Quantisierungs- und Codierungsbetriebsarten sind von den Bewegungskompensationsbetriebsarten
völlig
unabhängig.
Bei der Einzelbildcodierung werden aus einem Makroblock vier 8 × 8-Luminanzsubblöcke gebildet.
Bei der Teilbildcodierung werden aus einem Makroblock vier 8 × 8-Luminanzsubblöcke abgeleitet,
indem die Zeilen der beiden Teilbilder getrennt werden, so daß jeder
Subblock nur Zeilen eines Teilbilds enthält. Die Einzelbildcodierung
ist der Teilbildcodierung überlegen, wenn
zwischen den beiden Teilbildern nicht viel Bewegung besteht, und
die Teilbildcodierung ist überlegen, wenn
es detaillierte bewegliche Bereiche gibt. Die Betriebsartenentscheidung
erfolgt dann im Pixelbereich einmal für den gesamten Makroblock.
Dann wird auf jeden Einzelbildsubblock oder Teilbildsubblock abhängig von der
gewählten
Betriebsart eine 8 × 8-DCT
angewandt.
-
Das
digitale Videoeingangssignal auf der Eingangsleitung 10 in 1 wird zu dem nichtinvertierenden Eingang
eines Summierelements 11 gelenkt. Ein invertierender Eingang
des Summierelements 11 empfängt ein Signal auf der Leitung 12 in
bezug auf eine Schätzung
des Videoeingangssignals auf der Leitung 10. Die Schätzung für P-Bilder
basiert auf einer im Hinblick auf vergangene I- und P-Bilder durchgeführte Prädiktion. Die
Schätzung
für B-Bilder
basiert auf einer im Hinblick auf vergangene und zukünftige I-
und P-Bilder durchgeführte
Prädiktion.
Für I-Bilder
und intracodierte Teile von P- und B-Bildern wird keine Schätzung durchgeführt, so
daß das
Schätzungssignal
auf der Leitung 12 in diesen Situationen Null ist, wie
symbolisch in 1 durch die Öffnung eines
Schaltelements 13b des Inter/Intratyps in Reihe mit der
Leitung 12 dargestellt. Das Summierelement 11 erzeugt
auf der Leitung 13 ein Ausgangssignal, das mit dem Fehler
zwischen dem digitalen Videoeingangssignal auf der Leitung 10 und
dem geschätzten
Signal auf der Leitung 12 zusammenhängt. Das geschätzte Fehlersignal
auf der Leitung 13 wird zu dem Eingang eines blockadaptiven
Einzelbild-/Teilbildcodierungsanalysierers 14 gelenkt.
Abhängig
von dem Zustand eines Schaltelements 13a untersucht der
Codierungsanalysierer 14 vorbestimmte Kenngrößen der
Videoeingangssignale auf der Leitung 10 oder des Schätzungsfehlersignals
auf der Leitung 13 und trifft eine Entscheidung bezüglich der
Art von von dem Codierer von 1 zu
verwendender Codierung. Wenn das Schaltelement 13a die
Leitung 13 mit dem Eingang des Analysierers 14 verbindet,
entscheidet der Analysierer 14, ob es vorteilhaft wäre, entweder
die Einzelbilder des Schätzungsfehlersignals
auf der Leitung 13 oder die verschachtelten Teilbilder
dieses Schätzungsfehlersignals zu
codieren. Wenn das Schaltelement 13a das Eingangssignal
auf der Leitung 10 mit dem Eingang des Analysierers 14 verbindet,
entscheidet der Analysierer, ob es vorteilhaft wäre, entweder die Einzelbilder
des Eingangssignals auf der Leitung 10 oder die verschachtelten
Teilbilder dieses Eingangssignals auf der Leitung 13 zu
codieren. Die Beschaffenheit der Entscheidung des Analysierers 14 wird
durch die Herstellung eines Codierungstypsignals auf der Leitung 15 angegeben.
Bei einem spezifischen Beispiel der Erfindung, das ein durch eine
Verschachtelungs-Scanning-Technik erzeugtes Videoeingangssignal
verwendet, prüft
der Selektor 14, ob Ähnlichkeiten
in benachbarten oder alternierenden horizontalen Abtastzeilen in
dem Eingangssignal oder dem Schätzungsfehlersignal
bestehen. Wenn der Selektor findet, daß die Differenzen zwischen
angrenzenden Abtastzeilen kleiner als die Differenzen zwischen alternierenden
Abtastzeilen sind, erzeugt der Selektor 14 ein Codierungstypsignal
auf der Leitung 15, das angibt, daß Einzelbilder von Videoinformationen
in dem Schätzungsfehlersignal
oder dem Eingangssignal durch den Codierer von 1 codiert
werden sollen. Wenn der Selektor 14 findet, daß die Differenzen
zwischen angrenzenden Abtastzeilen größer als die Differenzen zwischen
abwechselnden ungeraden und geraden Abtastzeilen sind, erzeugt der
Selektor 14 ein Codierungstypsignal auf der Leitung 15,
das anzeigt, daß jedes
Teilbild ungeradzahliger Abtastzeilen und jedes Teilbild geradzahliger
Abtastzeilen separat codiert werden soll.
-
Das
Eingangssignal auf der Leitung 10 oder das Schätzungsfehlersignal
auf der Leitung 13 wird selektiv zu dem Eingang einer Blockformatierungsschaltung 15a gelenkt
(abhängig
von dem Zustand des Schaltelements 13a). Die Formatierungsschaltung 15a reagiert
außerdem
auf das Codierungstypsignal auf der Leitung 15, um die
Signale entweder auf der Leitung 10 oder der Leitung 13 in
der richtigen Reihenfolge auf eine Leitung 17 zu dem Eingang
einer Schaltung 16 für
diskrete Kosinustransformation zu lenken. Wenn der Selektor 14 Teilbildcodierung
gewählt
hat, wird die Reihenfolge, in der die Daten das Eingangssignal auf
der Leitung 10 oder das Schätzungsfehlersignal auf der
Leitung 13 umfassen, geändert,
so daß zuerst
ungeradzahlige Abtastzeilen nacheinander zu dem Eingang der Schaltung 16 für diskrete
Kosinustransformation auf der Eingangsleitung 17 gelenkt
werden, gefolgt durch aufeinanderfolgende geradzahlige Abtastzeilen
oder umgekehrt. Die Schaltung 16 für diskrete Kosinustransformation
wandelt dann jeden Submakroblock entweder geradzahliger oder ungeradzahliger
Abtastzeilen in eine Matrix von Transformationskoeffizienten um,
die in diesem Beispiel der Erfindung räumliche Frequenzkomponenten
in dem durch jeden Submakroblock repräsentierten Teil des Bildes
repräsentieren.
-
Wenn
der Selektor 14 Einzelbildcodierung gewählt hat, wird jeder Makroblock
auf der Leitung 17 in der Reihenfolge, in der sie am Eingang
des Selektors 14 auf Leitung 13 empfangen wurden,
zu der Schaltung 16 für
diskrete Kosinustransformation gesendet. Die Schaltung 16 für diskrete
Kosinustransformation wandelt dann jeden Block in dem Makroblock
in eine ähnlich
große
Matrix von Transformationskoeffizienten um, die bei diesem Beispiel
der Erfindung räumliche
Frequenzkomponenten in dem durch jeden Makroblock repräsentierten
Teil des Bildes repräsentiert.
-
Zusätzlich zu
einer Einzelbildcodierung gesamter Makroblöcke und einer Teilbildcodierung
von Submakroblöcken,
die ungeradzahlige und geradzahlige Abtastzeilen repräsentieren,
kann der Selektor 14 auch so konfiguriert werden, daß er den
Codierer von 1 anleiten kann, andere
Arten von Submakroblöcken
zu codieren, wie zum Beispiel Gruppen zusammenhängender Blöcke, deren Größe kleiner
als die eines Makroblocks ist.
-
Die
von der Schaltung 16 für
diskrete Kosinustransformation erzeugten Transformationskoeffizienten werden
auf der Ausgangsleitung 18 zu dem Eingang eines Sichtbarkeitsmatrixselektors
und wahrnehmungsbezogenen Quantisierers 19 gelenkt. Der
Quantisierer 19 dividiert jeden der transformierten Koeffizienten
aus der Schaltung 16 für
diskrete Transformation durch vorbestimmte Skalierungsfaktoren in
einer von mehreren Sichtbarkeitsmatrizen und einem Quantisierungsparameter,
der im Hinblick auf die Kenngrößen des
digitalen Eingangssignals bestimmt wird, das auf der Leitung 20 zu
dem Quantisierer 19 übermittelt
wird, und im Hinblick der Kenngrößen des
auf der Leitung 21 auf dem Quantisierer 19 übermittelten
Schätzungsfehlersignals.
Um wieviel die Transformationskoeffizienten quantisiert werden,
wird außerdem
durch das von dem Selektor 14 auf der Leitung 15 erzeugte
Codierungstypsignal bestimmt. Der Quantisierer 19 stellt
mit dem Codierungstypsignal die Quantisierungspegel ein, die auf
die Transformationskoeffizienten aus der Schaltung für diskrete
Kosinustransformation angewandt werden, um die Komprimierung von
durch den Betrieb des Quantisierers 19 erzeugten Videosignalen
zu verbessern.
-
Für Wechselstromkoeffizientenquantisierung
werden ein 5-Bit-Quantisierungsparameter und eine Menge von Quantisierermatrizen
verwendet. Quantisierung wird für Nicht-Intra-Codierung
mit einer Totzone und für
Intracodierung ohne durchgeführt.
Dieses Beispiel der Erfindung ermöglicht vier verschiedene Quantisierermatrizen:
eine für
jede der Kombinationen von Intra-/Nicht-Intra-
und Einzelbild-/Teilbild-codierten Makroblöcken. Es sind keine Vorgabematrizen
spezifiziert; die benutzten werden auf der Sequenzschicht geladen und übertragen.
Die Cb- und Cr-Subblöcke
verwenden dieselben Matrizen wie die Luminanzsubblöcke.
-
In
I-Bildern werden alle Makroblöcke
codiert und für
jeden Makroblock wird der 5-Bit-Quantisierungsparameter übertragen.
In P- und B-Bildern können
bestimmte Makroblöcke
keine codierten Koeffizientendaten enthalten. Für jeden Makroblock wird ein
Ein-Bit-Flag gesendet, um zu signalisieren, ob der Makroblock codiert ist
oder nicht. In P-Bildern wird der Quantisierungsparameter dann für jeden
codierten Makroblock übertragen.
-
Bei
B-Bildern wird am Anfang jedes Slice ein 5-Bit-Quantisierungsparameter übertragen.
Für jeden
codierten Makroblock in dem Slice, der einen von vier Multiplikatoren
(die alle in der Sequenzschicht übertragen werden)
identifiziert, wird ein Zwei-Bit-Index
(mit der Bezeichnung mscale addr) übertragen. Der Slice-Quantisierungsparameter
wird mit dem gewählten
Multiplikator (mit der Bezeichnung mscale) multipliziert und das Produkt
wird auf die nächste
ganze Zahl gerundet und auf 5 Bit begrenzt. Die resultierende Zahl
wird zu dem Quantisierungsparameter für diesen Makroblock.
-
Ein
Rahmen des codierten Blockmusters (zur Signalisierung, welcher der
Subblöcke
in einem Makroblock codierte Daten enthält) wird nur bei B-Bildern verwendet.
-
Nachdem
die Wechselstromkoeffizienten quantisiert wurden, werden sie für die Übertragung
codiert. Eine Scanning-Matrix ("scan") definiert die Reihenfolge,
in der sie zur Codierung verarbeitet werden. Es werden zwei feste
Scans definiert: einer zur Verwendung im Einzelbildcodierungsmodus
und der andere zur Verwendung im Teilbildcodierungsmodus. Diese
Scans ändern
sich bei diesem Beispiel der Erfindung nicht mit dem Bildtyp. Siehe 1b und 1c.
-
Lauflängen- und
Ebenenkombinationen werden für
von Null verschiedene quantisierte Wechselstromkoeffizienten VL-codiert. Für jeden
Makroblock in I- und P-Bildern darf der Codierer aus einer kleinen
Anzahl von Codebüchern
ein Codebuch auswählen.
In diesem Beispiel der Erfindung werden vier Codebücher für I-Bilder
und vier für
P-Bilder verwendet. Diese acht Codebücher werden im Prinzip durch
Permutieren einer Menge von Codewörtern abgeleitet. Unter anderem
unterscheiden sie sich durch die Länge des Codeworts für Blockende
(EOB) (2, 3 oder 4 Bit). Die Längen
der Codewörter
der oberen linken Ecke jedes Codebuchs sind in 1d–1k gezeigt.
-
Für einen
bestimmten Makroblock in einem I- oder P-Bild wird das Codebuch
ausgewählt,
das den kleinsten Bitzählwert
ergibt, und dem Decodierer mit einer 2-Bit-Kennung signalisiert. Bei B-Bildern
hat sich dieses Oberhead für
die Codebuchauswahl als zu groß erwiesen;
deshalb wird für
alle Makroblöcke
in B-Bildern ein festes Codebuch verwendet. Dieses Codebuch ist
eines der vier bei P-Bildern verwendeten und ist das in 1h gezeigte.
-
In 1 werden die quantisierten Transformationskoeffizienten
in einer vorbestimmten Reihenfolge durch eine Scan-Selektorschaltung 23 gescannt,
und zu einem Codierer und Multiplexer 24 gesendet, der
zwischen einer Codierung mit fester Wortlänge der Transformations koeffizienten
oder einer oder mehreren Variable-Wortlänge-Codierung der Transformationskoeffizienten
wählen
kann. Der Scan-Analysierer 23 reagiert auf das von dem
Selektor 14 auf der Leitung 15 erzeugte Codierungstypsignal.
Der Scan-Selektor 23 bestimmt eine mehrerer möglichen
Scanning-Reihenfolgen die zum Lenken der Transformationskoeffizienten
zu dem Codierer und Multiplexer 24 verwendet werden können. Die
Reihenfolge, die der Scanning-Selektor 23 wählt, basiert
darauf, welche Reihenfolge am zweckmäßigsten von dem Codierer und
Multiplexer 24 verwendet werden kann, um die Transformationskoeffizienten
mit der geringsten Anzahl von Bit am effizientesten zu codieren.
Wenn zum Beispiel Einzelbildcodierung verwendet wurde, kann der
Scan-Selektor 23 so konfiguriert werden, daß er ein
Zickzack-Scanning der Transformationskoeffizienten in dem Quantisierer 19 durchführt. Wenn Teilbildcodierung
gewählt
wurde, kann der Scan-Selektor 23 ein vertikales Scannen
der quantisierten Transformationskoeffizienten in dem Quantisierer 19 durchführen. Eine
der Strategien, die beim Scannen der quantisierten Transformationskoeffizienten
verwendet werden können,
ist eine Strategie, die gleichwertige Koeffizienten zur sequenziellen Übertragung
zu dem Codierer und Multiplexer 24 miteinander gruppiert.
Beispiele für Scanning-Sequenzen
für Einzelbildblock-Scans
und Teilbildblock-Scans sind in 1a bzw. 1b dargestellt.
Wenn gleichwertige Koeffizienten miteinander gruppiert werden, kann
der Codierer 24 eine effizientere Codierung verwenden,
wie zum Beispiel Codierung mit variabler Wortlänge. Mit längeren Wortlängen können höherwertige
Koeffizienten repräsentiert
werden, während
mit kürzeren
Wortlängen
Koeffizienten repräsentiert werden
können,
die einen Wert von Null oder in der Nähe von Null aufweisen. Ein
Code für
Blockende (EOB) kann zum Senden mehrerer gleichwertiger Koeffizienten
verwendet werden.
-
Wie
später
ausführlicher
beschrieben wird, enthält
die Schaltung von 1 einen Analysierer 23a für die Auswahl
der variablen Wortlänge,
der auf die von dem Scan-Selektor 23 ausgegebenen DCT-Koeffizienten und
das Bildtypsignal aus der Leitung 32 reagiert. Der Analysierer 23a erzeugt
ein Tabellenauswahlsignal für variable
Wortlänge,
das in den Codierer und Multiplexer 24 ausgegeben wird
und das von dem Codierer und Multiplexer 24 zur Auswahl
einer von mehreren Codetabellen verwendet wird, mit der verschiedene
Arten von Codierung mit fester Wortlänge und variabler Wortlänge der
DCT-Koeffizienten durchgeführt
werden können.
-
Zusätzlich zu
der Übertragung
codierter Transformationskoeffizienten empfängt und sendet der Codierer
und Multiplexer 24 zusammen mit den codierten Koeffizienten
eine Anzahl von Steuersignalen, die von einem Decodierer in einem
Videosignalempfänger
zur Erzeugung eines Videobildes aus den durch den Codierer von 1 erzeugten codierten Signalen verwendet
werden. Diese Steuersignale umfassen ein Signal, das mit dem auf
der Leitung 30 zwischen dem Quantisierer 19 und
dem Codierer und Multiplexer 24 erzeugten Quantisierungsparameter
zusammenhängt.
Diese Steuersignale umfassen außerdem
ein Bildtypsignal auf der Leitung 32, das durch einen in 1 nicht gezeigten unabhängig ablaufenden
Sequencer erzeugt werden kann. 1a zeigt
ein Beispiel für
eine Sequenz von I-, P- und B-Bildern,
die verwendet werden können.
Das Bildtypsignal auf der Leitung 32 repräsentiert,
welche Art von Bild der Codierer von 1 erzeugt,
nämlich
entweder ein I-, ein P- oder ein B-Bild bei diesem Beispiel der
Erfindung.
-
Die
von dem Codierer 24 erzeugten Wörter werden zu einem Puffer 25 gesendet,
der dann zu entsprechenden Zeitpunkten diese Wörter in einen Ausgangsbitstrom
auf einer Codiererausgangsleitung 26 lenkt. Auf der Leitung 27 wird
ein Völlesignal
erzeugt, das zu einem Eingang des Quantisierers 19 gelenkt
wird und dadurch seine Funktionsweise steuert, um zu verhindern,
daß der
Puffer 25 über-
oder unterläuft.
-
Es
wird nun die Erzeugung einer Schätzung
des digitalen Videoeingangssignals beschrieben. Die Transformationskoeffizienten
an dem Ausgang des Scan-Selektors 23 werden mit dem Eingang
eines Invers-Scan-Selektors 28 verbunden, der die Transformationskoeffizienten
wieder zu der Reihenfolge umordnet, in der sie im Quantisierer 19 vorlagen,
bevor sie durch den Scan-Selektor 23 gescannt wurden. Wie
in 1 gezeigt, reagiert der Invers-Scan-Selektor 28 außerdem auf
das Codierungstypsignal auf der Leitung 15, das dem Invers-Scan-Selektor 28 die
vorbestimmte Reihenfolge mitteilt, in die die quantisierten Transformationskoeffizienten
durch den Scan-Selektor 23 gebracht wurden, und der dadurch
der Mechanismus ist, durch den der Invers-Scan-Selektor 28 die korrekte Invers-Scanning-Sequenz
verwenden kann. Die durch den Invers-Scan-Selektor 28 umgeordneten
Transformationskoeffizienten werden zu einem Sichtbarkeitsmatrixselektor
und Dequantisierer 29 geleitet, der an den Transformationskoeffizienten
eine Invers-Quantisierungsprozedur ausführt, die im Prinzip die Operation
des Quantisierers 19 umkehrt. Wie in 1 gezeigt,
reagiert der Dequantisierer 29 auf das Codierungstypsignal
auf der Leitung 15 und dem durch den Quantisierer 19 erzeugten
Quantisierungsparameter, um die korrekte Dequantisierungsprozedur
zu bestimmen.
-
Die
Ausgabe des Dequantisierers 29 wird zu dem Eingang einer
Schaltung 34 für
inverse diskrete Kosinustransformation geleitet, die ein Ausgangssignal
erzeugt, das dem auf der Leitung 13 erzeugten Schätzungsfehlersignal
entspricht. Das Ausgangssignal der Schaltung 34 für inverse
diskrete Kosinustransformation wird zu dem nichtinvertierenden Eingang
eines Summierelements 36 geleitet, das an seinem invertierenden Eingang
ein Signal auf der Leitung 38 empfängt, das mit einer Schätzung des
Videoeingangssignals auf der Leitung 10 zusammenhängt. Die
Ausgabe des Summierelements 36 wird zu einem Speicher 36a für das nächste vorherige
Bild gelenkt (über
ein Schreibe-nächstes-Schaltelement 36b zwischen
dem Ausgang des Summierelements 36 und dem Eingang des
Speichers 36a für
das nächste
Bild). Die Ausgabe des Summierelements 36 repräsentiert
ein Einzelbild von Videodaten, das durch den Codierer von 1 codiert wurde. Das Schreiben eines Bildes
in den Speicher 36a für
das nächste
Bild bewirkt, daß ein
zuvor in dem Speicher 36a für das nächste Bild gespeichertes Bild über Schließung eines
Schreibe-vorheriges-Schaltelements 36d in
einen Speicher 36c für
das vorherige Bild geschrieben wird.
-
Eine
Bewegungsschätzschaltung 37 empfängt das
digitale Videoeingangssignal aus der Leitung 10, mit den
Inhalten der Speicher 36a und 36c zusammenhängende Signale
und das Bildtypsignal aus der Leitung 32. Die Bewegungsschätzschaltung 37 erzeugt
Signale, die mit Bewegungsvektoren zusammenhängen, die von einer Schätzungsschaltung 38 verwendet
werden, die eine Schätzung
oder Prädiktion
des Videoeingangssignals auf der Leitung 10 erzeugt. Eine
Schätzungsschaltung 38 reagiert
auf die Inhalte der Speicher 36a und 36c und die
durch die Bewegungsschätzungsschaltung 37 erzeugten
Bewegungsvektoren, um eine bewegungskompensierte Schätzung des
Videoeingangssignals auf der Leitung 10 zu erzeugen.
-
Die
von der Schätzungsschaltung 38 bei
diesem Beispiel der Erfindung erzeugte bewegungskompensierte Schätzung, an
der die zuvor beschriebene Makroblockstruktur von Videosignalen
beteiligt ist, berücksichtigt
den Umstand, daß ein
Makroblock zwei verschachtelte Teilbilder von Luminanzpixeln enthält. Folglich verwendet
die Schätzungsschaltung 38 zwei
Hauptkategorien von Bewegungskompensation, nämlich einen Einzelbildbewegungskompensationsmodus
und einen Teilbildkompensationsmodus. Bei dem Einzelbildbewegungskompensationsmodus
werden Bildelemente eines gesamten Einzelbildes makroblockweise
aus Bildelementen in Referenzeinzelbildern vorhergesagt. Im Teilbildkompensationsmodus
werden die Bildelemente eines Teilbildes nur aus Pixeln oder Referenzteilbildern
vorhergesagt, die einem Teilbild entsprechen. Zum Beispiel werden
Pixel in einem Teilbild ungeradzahliger Abtastzeilen nur aus Pixeln
in einem Referenzteilbild ungeradzahliger Abtastzeilen vorhergesagt.
-
Zusätzlich zu
der Verwendung verschiedener Bewegungskompensationsbetriebsarten
auf der Basis der Vorhersage von Einzelbildern oder Teilbildern
von Bildelementen, kann es andere Arten der Kompensation geben,
die auf dem behandelten Bildtyp basieren. Bei diesem Beispiel der
Erfindung können
die Kompensationsbetriebsarten auch darauf basieren, ob P-Bilder
oder B-Bilder vorhergesagt werden. (Für I-Bilder wird keine Vorhersage
durchgeführt).
Es werden nun Beispiele für
Bewegungskompensationstypen zusammengefaßt.
-
A. Bewegungskompensationsbetriebsarten
für P-Bilder
-
- 1. 16 × 16-Einzelbildbewegungskompensationsmodus
(Typ 1):
In diesem Modus wird der 16 × 16-Luminanzblock durch einen
anderen 16 × 16-Block
aus einem Referenzeinzelbild kompensiert, das unter Verwendung eines
Vorwärtsbewegungsvektors
abgerufen wird. Es wird nicht zwischen den Bildelementabtastzeilen
der verschachtelten Teilbilder unterschieden. Der Prädiktionsblock
enthält
Bitelemente beider Teilbilder des Referenzeinzelbildes.
- 2. 16 × 8-Einzelbildbewegungskompensationsmodus
(Typ 2):
In diesem Modus wird der 16 × 16-Luminanzblock durch eine
horizontale Abgrenzungslinie in einen oberen 16 × 8-Subblock und einen unteren
16 × 8-Subblock
aufgeteilt. Jeder Subblock wird unabhängig unter Verwendung eines
Vorwärtsbewegungsvektors
kompensiert. Wieder wird nicht zwischen Abtastzeilen der beiden
verschachtelten Teilbilder, aus denen die Luminanzsubblöcke bestehen,
unterschieden. Für
jeden Makroblock werden in diesem Modus zwei Bewegungsvektoren erzeugt
und übertragen.
- 3. 16 × 8-Teilbildbewegungskompensationsmodus
(Typ 3):
In diesem Modus wird der 16 × 16-Luminanzblock nach Teilbildpolarität, nämlich nach
ungeradzahligen und geradzahligen Abtastzeilen, in zwei 16 × 8-Subblöcke aufgeteilt.
Jeder der 16 × 8-Subblöcke enthält nur Bildelementzeilen
eines der verschachtelten Teilbilder in dem ursprünglichen
16 × 16-Luminanzblock.
Jeder Teilbildsubblock wird unabhängig unter Verwendung eines
separaten Vorwärtsbewegungsvektors
mit einem 16 × 8-Subblock
kompensiert, der aus Bildelementabtastzeilen eines Teilbildes derselben
Polarität
in dem Referenzeinzelbild abgeleitet wird. Es werden für jeden
Makroblock in diesem Modus zwei Bewegungsvektoren erzeugt und übertragen.
-
B. Bewegungskompensationsbetriebsarten
für B-Bilder
-
- 1. Bidirektionaler (P und N) 16 × 16-Einzelbildbewegungskompensationsmodus
(Typ 3):
Ein Vorwärtsbewegungsvektor
(von einem vorherigen [P]-Rahmen) ruft einen 16 × 16-Block von einem vergangenen
Referenzeinzelbild ab und ein Rückwärtsbewegungsvektor
(aus einem neuen [N]-Einzelbild)
ruft einen 16 × 16-Block
von einem zukünftigen
Referenzeinzelbild ab. Die 16 × 16-Blöcke werden
gemittelt, um einen Endprädiktionsblock
zu ergeben.
- 2. Unidirektionaler (P) 16 × 16-Vorwärtseinzelbildbewegungskompensationsmodus
(Typ 1):
Dies ist ein unidirektionaler Vorwärtsprädiktionsmodus, bei dem für jeden
Makroblock nur ein Vorwärtsbewegungsvektor
verwendet wird.
- 3. Unidirektionaler (N) 16 × 16-Rückwärtseinzelbildbewegungskompensationsmodus
(Typ 2):
Dies ist ein unidirektionaler Rückwärtsprädiktionsmodus, bei dem für jeden
Makroblock nur ein Rückwärtsbewegungsvektor
verwendet wird.
- 4. 16 × 8-Einzelbildbewegungskompensationsmodus
(Typ 4); oben-vorwärts
(P1) mit unten-rückwärts (N2):
In
diesem Modus wird der 16 × 16-Luminanzblock
durch eine horizontale Abgrenzungslinie in einen oberen 16 × 8-Subblock
und einen unteren 16 × 8-Subblock
aufgeteilt. Der obere Subblock wird mit einem Vorwärtsbewegungsvektor
kompensiert, der einen 16 × 8-Block
aus einem vergangenen Referenzeinzelbild abruft. Der untere Subblock
wird mit einem Rückwärtsbewegungsvektor
kompensiert, der einen 16 × 8-Block
von einem zukünftigen
Referenzeinzelbild abruft. Für
jeden Makroblock werden in diesem Modus zwei Bewegungsvektoren
erzeugt und übertragen.
- 5. 16 × 8-Einzelbildbewegungskompensationsmodus
(Typ 5); oben-rückwärts (N1)
mit unten-vorwärts
(P2):
Dieser Modus ist dem oben beschriebenen Modus B.4. ähnlich.
Der obere Subblock wird mit einem Rückwärtsbewegungsvektor kompensiert
und der untere Subblock mit einem Vorwärtsbewegungsvektor.
- 6. 16 × 8-Teilbildbewegungskompensationsmodus
(Typ 6); ungerade-vorwärts
(P1) mit gerade-rückwärts (N2):
In
diesem Modus wird der 16 × 16-Luminanzblock
nach Teilbildpolarität
in zwei 16 × 8-Teilbildsubblöcke aufgetrennt.
Einer der Teilbildsubblöcke
enthält
die ungeradzahligen Bildelementabtastzeilen, und der andere Teilbildsubblock
enthält
die geradzahligen Bildelementabtastzeilen. Der die ungeradzahligen
Teilbildzeilen enthaltende 16 × 8-Teilbildsubblock
wird mit einem Vorwärtsbewegungsvektor
und einem weiteren, nur aus den ungeradzahligen Abtastzeilen eines
vergangenen Referenzeinzelbildes abgeleiteten 16 × 8-Subblocks kompensiert. Ähnlich wird
der die geradzahligen Teilbildabtastzeilen enthaltende 16 × 8-Teilbildsubblock
mit einem Rückwärtsbewegungsvektor
und einem nur aus den geradzahligen Teilbildzeilen eines zukünftigen Referenzeinzelbildes
abgeleiteten 16 × 8-Subblock
kompensiert. Pro Makroblock werden in diesem Modus zwei Bewegungsvektoren
erzeugt und übertragen.
- 7. 16 × 8-teilbildbewegungskompensierter
Modus (Typ 7); ungerade-rückwärts (N1)
mit gerade-vorwärts (P2):
Dieser
Modus ist dem oben beschriebenen Modus B.6. ähnlich, wobei der die ungeradzahligen
Teilbildzeilen enthaltende 16 × 8-Subblock
mit einem Rückwärtsbewegungsvektor
und einem Subblock aus einem zukünftigen
Referenzeinzelbild kompensiert wird und der die geradzahligen Teilbildzeilen
enthaltende 16 × 8-Block
mit einem Vorwärtsbewegungsvektor
und einem Subblock aus einem vergangenen Referenzeinzelbild kompensiert
wird. Pro Makroblock werden in diesem Modus zwei Bewegungsvektoren
erzeugt und übertragen.
-
Die
Bewegungsschätzungsschaltung 37 kann
also Bewegungsvektoren erzeugen, die zur Bewirkung vielfältiger Bewegungskompensationsbetriebsarten
notwendig sind. Diese Bewegungsvektoren werden über eine Leitung 39 zu
der Schätzungsschaltung 38 übertragen
und werden von der Schätzungsschaltung
zur Durchführung
bei einer adaptiven bewegungskompensierten Prädiktion des Videoeingangssignals
auf der Leitung 10 verwendet.
-
Die
Schätzungsschaltung
besteht aus zwei Hauptteilen, einem blockadaptiven Einzelbild-/Teilbild-uni-/bidirektional bewegungskompensierten
Prädiktionsanalysierer 38a und
einem blockadaptiven Einzelbild-/Teilbild-uni-/bidirektional
bewegungskompensierten Prädiktionsselektor 38b.
Der Prädiktionsanalysierer 38a reagiert
auf die durch die Bewegungsschätzungsschaltung 37 erzeugten
Bewegungsvektoren, das Bildtypsignal aus der Leitung 32 und
den Inhalt des Speichers 36a für das nächste Bild und des Speichers 36c für das vorherige
Bild. Der Prädiktionsanalysierer 38a erzeugt
auf der Leitung 38c ein Bewegungskompensationstypsignal,
das identifiziert, welche der Bewegungskompensationsbetriebsarten,
wie zum Beispiel der hier beschriebenen Kompensationsbetriebsarten,
zur Erzeugung einer Schätzung
des Videoeingangssignals auf der Leitung 10 benutzt wird.
Der Prädiktionsselektor 38b nimmt entsprechende
der durch die Bewegungsschätzschaltung 37 berechneten
Bewegungsvektoren und das Bewegungskompensationstypsignal auf der
Leitung 38c und berechnet eine Schätzung des Videoeingangssignals
auf der Leitung 10. Die Schätzung wird im Hinblick auf
entsprechende der in den Speichern 36a und 36c gespeicherten
Einzelbilder erzeugt.
-
Jede
Bewegungsvektorkomponente wird differenziell mit Bezug auf eine
zuvor übertragene
Komponente codiert. Die von der Bewegungsschätzungsschaltung 37 erzeugten
Bewegungsvektoren werden auch auf einer Leitung 40 zu einer
Bewegungsvektorprädiktionsschaltung 41 und
auch zu dem Summierelement 42 übertragen. Außerdem empfängt die
Bewegungsvektorprädiktionsschaltung 41 das
Bildtypsignal auf der Leitung 32 und das Bewegungskompensationstypsignal
auf der Leitung 38c, wodurch die von der Schätzungsschaltung 38 verwendete
Bewegungskompensationsbetriebsart identifiziert wird. Die Schaltung 41 erzeugt
ein Ausgangssignal für
den invertierenden Eingang des Summierelements 42, das
mit einem vorhergesagten Wert des durch die Bewegungsschätzungsschaltung 37 erzeugten
Bewegungsvektors zusammenhängt.
Das Summierelement 42 subtrahiert die Bewegungsvektorschätzung von
dem Bewegungsvektorsignal auf der Leitung 40 und erzeugt
ein Differenzbewegungsvektorsignal, das zu dem Eingang des Codierers
und Multiplexers 24 geleitet wird. Der Codierer und Multiplexer 24 sendet
ein Differenzbewegungsvektorsignal zur Einfügung in den Ausgangsbitstrom
auf der Leitung 26 zu dem Puffer 25. Ein Decodierer
rekonstruiert mit dem Differenzbewegungsvektorsignal ein Videobild
gemäß dem Videoeingangssignal
auf der Leitung 10.
-
Der
Decodierer und Multiplexer 24 empfängt außerdem ein Blockklassifizierungssignal
auf der Leitung 43, das als Reaktion auf das zuvor beschriebene
Bildtypsignal, das Codierungstypsignal und das Bewegungskompensationstypsignal
von einer Blocktypklassifizierungsschaltung 44 erzeugt
wird.
-
Die
Blocktypklassifizierungsschaltung 44 empfängt außerdem ein
Inter-/Intra-Typsignal auf der Leitung 44a, das identifiziert,
ob für
den klassifizierten Videoblock Intercodierung oder Intracodierung
verwendet wird. Das Inter-/Intra-Typsignal wird von einer Inter-/Intra-Analysiererschaltung 44b erzeugt,
das das Videoeingangssignal auf der Leitung 10 und das
Schätzungsfehlersignal
auf der Leitung 13 empfängt.
Die Analysiererschaltung 44a bestimmt und vergleicht die
in dem Eingangssignal und dem Schätzungssignal vorliegenden Energien
und trifft eine Entscheidung darüber,
ob Inter- oder Intracodierung verwendet werden soll. Intercodierung,
nämlich
Codierung des Schätzungsfehlersignals
auf der Leitung 13, wird für P- und B-Bilder verwendet, wenn die Energie
des Schätzungsfehlersignals
kleiner als die Energie des Eingangssignals ist. Manchmal wäre es in
P- und B-Bildern,
wie zum Beispiel, wenn ein Szenenwechsel vorliegt, vorteilhaft,
im Intra-Verfahren zu codieren, nämlich das Eingangsvideosignal
auf der Leitung 10 anstelle des Schätzungsfehlers auf der Leitung 17 zu
codieren. Dies ist der Fall, wenn die Energie in dem Videoeingangssignal
auf der Leitung 10 kleiner als die Energie in dem Schätzungsfehlersignal
auf der Leitung 13 ist. Wenn die Analysiererschaltung 44b diesen
Zustand erfaßt,
zeigt das Inter-/Intratypsignal an, daß Intracodierung verwendet
werden soll. Wie in 1 gezeigt, steuert
das Inter-Intratypcodierungssignal aus dem Analysierer 44b die
Zustände
des Schaltelements 13a und des Inter-/Intratypschaltelements 13b.
Das Inter-/Intracodierungstypsignal
aus dem Analysierer 44b wird außerdem zu dem Eingang des Quantisierers 19 geleitet,
um die Quantisierungsoperation abhängig davon, wie die Videodaten
codiert werden, zu steuern. Das Inter- /Intracodierungstypsignal ist außerdem Teil
des zu dem Codierer und Multiplexer 24 gesendeten Blockklassifizierungssignals.
-
Das
Blockklassifizierungssignal auf der Leitung 43 wird durch
den Codierer und Multiplexer zur Einfügung in den Ausgangsbitstrom
auf der Leitung 26 zu dem Puffer 25 übertragen.
Ein Decodierer erzeugt mit dem Blockklassifizierungssignal ein Bild
gemäß dem Videoeingangssignal
auf der Leitung 10.
-
Alle
Makroblöcke
in I-Bildern werden intracodiert; in P- und B-Bildern ist auch eine
Intracodierung von Makroblöcken
erlaubt. Bei intracodierten Makroblöcken (Teilbild- oder Einzelbildmodus)
wird Gleichstromkoeffizient jedes Subblocks gleichförmig auf
255 Pegel quantisiert. Dann verwendet man Gleichstromprädiktion
zur Verringerung der zur Codierung der Gleichstromkoeffizienten
notwendigen Anzahl von Bit. Für
Luminanz-Gleichstromprädiktion
werden zwei Prädiktoren
geführt,
um ihre Effizienz beim Umschalten zwischen den Einzelbild- und Teilbildcodierungsbetriebsarten
zu vergrößern. Für die Chroma-Gleichstromprädiktion reicht
für jede
Farbkomponente ein Prädiktor
aus. Alle Gleichstromprädiktoren
werden am Anfang eines Slice und bei nichtintracodierten Makroblöcken auf
Null zurückgesetzt.
-
Ein
Signal auf der Leitung 47, das mit den Beträgen von
durch die Schaltung 16 für diskrete Kosinustransformation
erzeugten intracodierten Gleichstromkoeffizienten zusammenhängt, wird
zu dem Eingang einer Intra-Gleichstromkoeffizientenprädiktionsschaltung 45 und
dem nichtinvertierenden Eingang eines Summierelements 46 geleitet.
Der Schalter 48 in der Leitung 47 repräsentiert
symbolisch die Richtung nur der durch die Schaltung 16 für diskrete
Kosinustransformation erzeugten Intra-Gleichstromkoeffizienten zu
dem Eingang der Schaltung 45 für Intra-Gleichstromkoeffizientenprädiktion
und dem Summierelement 46. Die Prädiktionsschaltung 45 empfängt außerdem das
von dem Codierungsanalysierer 14 erzeugte Codierungstypsignal.
Die Prädiktionsschaltung 45 erzeugt
eine Ausgabe, die mit einem vorhergesagten Wert des Intracode-Gleichstromeffizienten
zusammenhängt,
und leitet dieses Ausgangssignal zu dem invertierenden Eingang des
Summierelements 46. Der nichtinvertierende Eingang des
Summierelements 46 empfängt
den tatsächlichen
Intra-Gleichstromkoeffizienten.
Das Summierelement 46 subtrahiert die Prädiktion
von dem Gleichstromkoeffizienten, um eine Differenz-Gleichstromkoeffizientenprädiktion
zu erzeugen, die zu dem Eingang des Codierers und Multiplexers 24 geleitet
wird. Der Differenz-Gleichstromkoeffizient wird durch den Codierer
und Multiplexer 24 zur Einfügung in den Bitstrom auf der
Ausgangsleitung 26 zu dem Puffer 25 gelenkt. Ein
Decodierer konstruiert mit dem Differenz-Gleichstromkoeffizienten ein Bild gemäß dem Videoeingangssignal 10.
-
2 zeigt
einen adaptiven bewegungskompensierten uni-/bidirektional prädiktiven/interpolativen
Decodierer, mit dem der von einem Codierer, wie zum Beispiel dem
in 1 gezeigten, erzeugte Ausgangsbitstrom
decodiert werden kann. Der Decodierer von 2 empfängt auf
einer Eingangsleitung 50 einen Eingangsbitstrom. Der Eingangsbitstrom
auf der Leitung 50 wird in einem Puffer 52 abgelegt
und dann zu einem Decodierer und Demultiplexer 54 mit variabler
Wortlänge
gesendet, der eine Decodier- und Demultiplexoperation durchführt, die
die Umkehrung des von dem in 1 gezeigten
Codierer und Multiplexer 24 erzeugten Codierens und Multiplexens
ist. Der Decodierer und Demultiplexer 54 erzeugt auf einer
Ausgangsleitung 56 die quantisierten diskreten Kosinustransformationskoeffizienten
von 1. Ein Invers-Scan-Selektor 64 ordnet
die Reihenfolge der auf der Eingangsleitung 56 erscheinenden
Koeffizienten zu derselben Reihenfolge um, die diese Koeffizienten
in dem Quantisierer 19 von 1 hatten.
Der Invers-Scan-Selektor 64 leitet
die von ihm empfangenen Koeffizienten in umgekehrter Reihenfolge
zu einem Sichtbarkeitsmatrixselektor und Dequantisierer 66.
Die Dequantisiererschaltung 66 reagiert auf ein Codierungstypsignal
auf der Leitung 68, ein Bildtypsignal auf der Leitung 70 und
den Quantisierungsparameter auf der Leitung 68a, der durch
die Decodierer- und Demultiplexerschaltung 54 aus dem Bitstromeingang
des Decodierers von 2 abgerufen wird, um eine Dequantisierung
durchzuführen,
die die Umkehrung der von dem Quantisierer 19 in 1 durchgeführten Quantisierung ist.
-
Die
Intra-Gleichstromtransformationskoeffizienten für I-Bilder und intracodierte
Teile von P- und B-Bildern werden am Ausgang eines Summierelements 58 erzeugt,
das den durch den Decodierer und Demultiplexer 54 decodierten
und demultiplexten Differenz-Gleichstromkoeffizienten empfängt. Das
Summierelement 58 empfängt
außerdem
ein Intra-Gleichstromkoeffizientenprädiktionssignal aus einer Prädiktionsschaltung 60, die
außerdem
auf Intra-Gleichstromkoeffizientensignale auf der Leitung 57 und
ein Codierungstypsignal auf der Leitung 68 reagiert. Der
Zustand eines Schaltelements 66a wird gesteuert, um eine
Eingangsleitung einer Schaltung 72 für inverse diskrete Kosinustransformation
zwischen dem DCT-Koeffizientensignal am Ausgang des Dequantisierers 66 und
dem Intra-Gleichstromkoeffizientensignal auf der Leitung 57 umzuschalten.
Die dequantisierten Transformationskoeffizienten und die Intra-Gleichstromkoeffizienten
werden durch ein Schaltelement 66a hindurch zu einer Schaltung 72 für inversen
diskreten Kosinustransfer geleitet, die eine Transformationsoperation
ausführt,
die die Umkehrung der durch die Schaltung 16 für diskrete
Kosinustransformation in 1 durchgeführten Transformationsoperation
ist. Die Ausgabe der Schaltung 72 für inverse diskrete Kosinustransformation
in 2 ist eine decodierte Version entweder des Videosignals
auf der Eingangsleitung 10 im Fall von I-Bildern und intracodierten
Teilen von P- und B-Bildern oder eine decodierte Version des Schätzungsfehlersignals
auf der Leitung 13 in 1.
Das Ausgangssignal der Transformationsschaltung 72 wird
zu dem Eingang einer Blockformatierungsschaltung 72a geleitet,
die eine Entformatierungsoperation durchführt, die die Umkehrung der
durch den Block 15a in 1 durchgeführten Formatierungsoperation
ist. Die Ausgabe der Entformatierungsschaltung 72a wird
zu einem Eingang eines Summierelements 74 geleitet. Ein
anderer Eingang des Summierelements 74 empfängt ein
Schätzungssignal
auf der Leitung 76. Die Ausgabe des Summierelements 74 hängt mit
der Differenz zwischen dem Schätzungsfehlersignal
aus dem Entformatierer 72a und dem Schätzungssignal auf der Leitung 76 zusammen
und umfaßt
eine Videoausgabe auf der Leitung 78, die dem Videoeingangssignal
auf der Leitung 10 in 1 analog
ist.
-
Der
Decodierer und Demultiplexer 54 in 2 lenkt
das aus dem Codierer von 1 empfangene Blockklassifizierungssignal über eine
Eingangsleitung 82 zu einer Blocktypentklassifizierungsschaltung 80. Die
Blocktypentklassifizierungsschaltung 80 produziert auf
der Leitung 68 ein Codierungstypsignal, auf der Leitung 70 ein
Bildtypsignal, auf der Leitung 88 ein Bewegungskompensationstypsignal
und auf der Leitung 88a ein Inter-/Intratypsignal, entsprechend
den durch den Codierer von 1 erzeugten
Codierungstyp-, Bildtyp-, Bewegungskompensationstyp- und Inter-/Intratypsignalen.
-
Der
Decodierer und Demultiplexer 54 ruft außerdem das Differenzbewegungsvektorsignal
aus dem durch den Codierer von 1 gesendeten
Bitstrom ab und lenkt das Differenzbewegungsvektorsignal auf einer
Leitung 90 zu dem Eingang eines Summierelements 92.
Eine weitere Eingabe für
das Summierelement 92 wird entlang der Leitung 96 aus
einer Bewegungsvektorprädiktionsschaltung 94 empfangen.
Die Bewegungsvektorprädiktionsschaltung 94 reagiert
auf ein Bewegungskompensationstypsignal auf der Leitung 88,
ein Bildtypsignal auf der Leitung 70 und gewählte Bewegungsvektoren
auf der Leitung 98a, um eine Prädiktion der Bewegungsvektoren
zu erzeugen, die zu einem der Eingänge des Summierelements 92 geleitet
wird.
-
Die
Ausgabe des Summierelements 92 ist ein Bewegungsvektorsignal
auf der Leitung 98, das den Bewegungsvektorsignalen entspricht,
die von dem Bewegungsschätzer 37 erzeugt
und bei der durch die Schaltung von 1 durchgeführten Codierung
verwendet werden. Die Bewegungsvektorsignale werden auf einer Eingangsleitung 102 zu
einer Schätzungsschaltung 100 geleitet.
Durch selektives Öffnen
und Schließen
eines in 2 gezeigten Schaltelements 100b reagiert
ein Speicher 100a für
das nächste
Bild auf die Videoausgangssignale auf der Leitung 78, um
gewählte
Einzelbilder des Videoausgangssignals zu speichern. Das Schreiben
eines neuen Einzelbildes von Informationen in den Speicher 100a bewirkt,
daß ein
vorheriges Einzelbild in dem Speicher 100a über Schließung eines
Schaltelements 100d in den Speicher 110c für das vorherige
Bild geschrieben wird. Die Schätzungsschaltung 100 reagiert
auf den Inhalt der Speicher 100a und 100c, die
Bewegungsvektoren auf der Leitung 102, das Bewegungskompensationstypsignal
auf der Leitung 88 und ein Bildtypsignal auf der Leitung 70,
um eine Schätzung
auf der Leitung 76 des Videoausgangssignals auf der Leitung 78 auf
analoge Weise wie die durch die Schätzungsschaltung 38 in 1 erzeugte Schätzung zu erzeugen. Wie in 1 wirkt das Schaltelement 100e in
Reihe mit der Leitung 76 zum Trennen des Schätzungssignals
von dem Eingang des Summierelements 74, wenn I-Bilder decodiert
werden oder wenn intracodierte Teile von P- und B-Bildern vorkommen.
-
3 zeigt
ein Blockschaltbild eines blockadaptiven bewegungskompensierten
Prädiktors 106.
Auf der Leitung 108 wird ein decodiertes Bild empfangen.
Die Schaltung von 3 erzeugt Vorhersagen von P-Bildern
gemäß den oben
für P-Bilder
identifizierten Bewegungskompensationsbetriebsarten. Das decodierte
Bild kann entweder von dem Ausgang des Summierelements 36 in 1 oder dem Ausgang des Summierelements 74 in 2 empfangen
werden. Das decodierte Bild auf der Leitung 108 wird in
dem Speicher 36c oder 100c für das vorherige Bild empfangen.
Das decodierte Bild aus dem Speicher für das vorherige Bild wird zu dem
Eingang eines Schaltelements 110 gesendet, das das decodierte
Bild selektiv gemäß dem Bewegungskompensationstypsignal
zu einer von drei Ausgangsleitungen leitet. Wenn der Bewegungskompensationstyp der
Typ A.1. ist, wird das decodierte Bild zu einem Einzelbildmakroblockbewegungskompensationsprädiktor 112 gesendet,
der auf der Ausgangsleitung 114 des Prädiktors 106 ein bewegungskompensiertes
Prädiktionssignal
erzeugt. Wenn der Bewegungskompensationstyp der Typ A.2. ist, wird
das decodierte Bild zu dem Eingang eines Submakroblockschaltelements 116 gesendet.
Das Schaltelement 116 lenkt entsprechende Teile des decodierten
Bildes selektiv zu einer von zwei einzelbildsubmakroblockbewegungskompensierten
Prädiktionsschaltungen 118 und 120.
Der Einzelbildsubmakroblock der oberen Hälfte wird zu den Prädiktionsschaltungen 118 geleitet
und der Einzelbildsubmakroblock der unteren Hälfte zu der Prädiktionsschaltung 120.
Die von den Schaltungen 118 und 120 erzeugten
Prädiktionen
werden zu zwei Eingängen 122 und 124 eines
Einzelbildsubmakroblock-zu-Makroblock-Formatierers 126 gesendet,
der die resultierende formatierte Prädiktion dann zu der Ausgangsleitung 114 der
Prädiktionsschaltung 106 leitet.
-
Wenn
der Bewegungskompensationstyp der Typ A.3. ist, wird das decodierte
Bild durch das Schaltelement 110 zu dem Eingang eines Submakroblockschaltelements 128 gesendet,
das den oberen Teilbildsubmakroblockteil des decodierten Bildes
selektiv zu einer von zwei teilbildsubmakroblockbewegungskompensierten
Prädiktionsschaltungen 130 und 132 und
den unteren Teilbildsubmakroblockteil des decodierten Bilds zu der
anderen der beiden Prädiktionsschaltungen 130 und 132 sendet.
Die von den Prädiktionsschaltungen 130 und 132 erzeugten
Prädiktionssignale
werden auf den Leitungen 134 und 136 zu den Eingängen einer Teilbildsubmakroblöcke-zu-Makroblock-Formatierungsschaltung 138 geleitet,
die dann die formatierten Prädiktionen
auf der Ausgangsleitung 114 der Prädiktionsschaltung 106 ausgibt.
Die Prädiktorschaltungen
reagieren auf eines oder zwei Bewegungsvektorsignale (MV1 oder MV1
und MV2), wie oben beschrieben und in 3 gezeigt.
-
4 ist ein Blockschaltbild eines blockadaptiven
bewegungskompensierten bidirektionalen Prädiktors 140. Die Schaltung
von 4 erzeugt Prädiktionen von B-Bildern gemäß den oben
für B-Bilder
identifizierten Bewegungskompensationsbetriebsarten. Auf der Leitung 142 wird
ein decodiertes vorheriges Bild von einem der Ausgänge des
Summierelements 36 in 1 oder
des Summierelements 74 in 2 empfangen. Das
decodierte vorherige Bild wird zu dem Speicher 36c oder 100c für das vorherige
Bild von 1 bzw. 2 gesendet.
Auf einer Eingangsleitung 146 wird von dem Ausgang entweder
des Summierelements 36 in 1 oder
des Summierelements 74 in 2 ein decodiertes
nächstes
Bild empfangen. Das decodierte nächste
Bild wird zu dem Speicher 36a oder 100a für das nächste Bild
von 1 bzw. 2 geleitet.
Das decodierte vorherige Bild in dem Speicher für das vorherige Bild wird selektiv
durch ein Schaltelement 150 auf der Eingangsleitung 149 abhängig von
dem Bewegungskompensationstypsignal in 1 und 2 zu
einem von sechs Ausgangsleitungen geleitet. Das decodierte nächste Bild
in dem Speicher für
das nächste
Bild wird selektiv durch das Schaltelement 150 auf der
Eingangleitung 152 wieder abhängig von dem Wert des Bewegungskompensationstypsignals
in 1 und 2 zu einer
einer zweiten Menge von sechs Ausgangsleitungen geleitet.
-
Wenn
der Bewegungskompensationstyp der Typ B.1. ist, wird das decodierte
vorherige Bild in dem Speicher für
das vorherige Bild auf einer Ausgangsleitung 154 zu dem
Eingang einer Einzelbildmakroblockbewegungskompensationsprädiktionsschaltung 156 geleitet,
die dann auf einer Leitung 158 und auf einer Ausgangsleitung 160 der
Prädiktionsschaltung 140 eine
einzelbildmakroblockbewegungskompensierte Prädiktion ausgibt. Die Bewegungskompensation
des Typs B.1. ist für
das decodierte nächste Bild
in dem Speicher 146 für
das nächste
Bild undefiniert, so daß die
decodierten nächsten
Bilder nicht an der Prädiktionsoperation
beteiligt sind und das auf der Ausgangsleitung 160 erzeugte
Prädiktionssignal
in Situationen des Typs B.1. nicht beeinflussen.
-
Wenn
der Bewegungskompensationstyp der Typ B.2. ist, wird das decodierte
nächste
Bild in dem Speicher für
das nächste
Bild zu einer Ausgangsleitung 156 des Schaltelements 150 in
Richtung des Eingangs einer einzelbildmakroblockbewegungskompensierten
Prädiktionsschaltung 162 geleitet,
die auf einer Ausgangsleitung 164 und einer Ausgangsleitung 160 der
Prädiktions schaltung 140 eine
einzelbildmakroblockbewegungskompensierte Prädiktion ausgibt. Die Bewegungskompensation
des Typs B.2. ist für
decodierte vorherige Bilder in dem Speicher für vorherige Bilder undefiniert,
so daß die
decodierten vorherigen Bilder nicht an der Prädiktionsoperation beteiligt
sind und das auf der Ausgangsleitung 160 erzeugte Prädiktionssignal
in Situationen des Typs B.2. nicht beeinflussen.
-
Wenn
der Bewegungskompensationstyp der Typ B.3. ist, wird das decodierte
vorherige Bild in dem Speicher für
das vorherige Bild auf der Ausgangsleitung 166 des Schaltelements 150 zu
einem Eingang einer einzelbildmakroblock-bidirektionalbewegungskompensierten
Prädiktionsschaltung 168 geleitet.
Das decodierte nächste
Bild in dem Speicher für
das nächste
Bild wird auf einer Ausgangsleitung 170 des Schaltelements 150 zu
einem zweiten Eingang der Prädiktionsschaltung 168 geleitet.
Die Prädiktionsschaltung 168 erzeugt auf
der Leitung 172 ein Prädiktionssignal,
das zu der Ausgangsleitung 160 der Prädiktionsschaltung 140 geleitet
wird.
-
Wenn
der Bewegungskompensationstyp der Typ B.4. ist, wird das in dem
Speicher für
das vorherige Bild gespeicherte decodierte vorherige Bild zu einer
Ausgangsleitung 174 des Schaltelements 150 geleitet, und
das in dem Speicher 148 für das nächste Bild gespeicherte decodierte
nächste
Bild wird zu einer Ausgangsleitung 176 des Schaltelements 150 geleitet.
Die Bilder auf den Leitungen 174 und 176 werden
zu den Eingängen
eines Schaltelements 178 geleitet, das die Bilder selektiv
zu den Eingängen
von zwei einzelbildsubmakroblockbewegungskompensierten Prädiktionsschaltungen 180 und 182 leitet.
Die Ausgangssignale der Prädiktionsschaltungen 180 und 182 werden
auf den Leitungen 186 und 188 zu den Eingängen einer
Einzelbildsubmakroblöcke-zu-Makroblock-Formatierungs- Schaltung 184 geleitet.
Das Ausgangssignal der Formatierungsschaltung 184 wird
zu der Ausgangsleitung 160 der Prädiktionsschaltung 140 geleitet.
-
Wenn
der Bewegungskompensationstyp der Typ B.5. ist, wird das decodierte
vorherige Bild in dem Speicher für
das vorherige Bild zu einer Ausgangsleitung 190 des Schaltelements 150 geleitet,
und das decodierte nächste
Bild in dem Speicher für
das nächste
Bild wird zu einer Ausgangsleitung 192 des Schaltelements 150 geleitet.
Die Bilder auf den Leitungen 190 und 192 werden
zu den Eingängen
eines Schaltelements 194 geleitet, das die Bilder selektiv
zu zwei einzelbildsubmakroblockbewegungskompensierten Prädiktionsschaltungen 196 und 198 leitet.
Die Prädiktionssignale
auf den Leitungen 200 und 202 aus den Prädiktionsschaltungen 196 und 198 werden
in eine Einzelbildsubmakroblöcke-zu-Makroblock-Formatierungsschaltung 204 eingegeben,
die formatierte Prädiktionssignale
zu der Ausgangsleitung 160 der Prädiktionsschaltung 140 sendet.
-
Wenn
der Bewegungskompensationstyp der Typ B.6. ist, wird das decodierte
vorherige Bild in dem Speicher für
das vorherige Bild zu einer Ausgangsleitung 206 des Schaltelements 150 geleitet,
und das decodierte nächste
Bild in dem Speicher für
das nächste
Bild wird zu einer Ausgangsleitung 208 des Schaltelements 150 gesendet.
Die Bilder auf den Leitungen 206 und 208 werden
zu den Eingängen
eines Schaltelements 210 gesendet, das diese Bilder selektiv
zu den Eingängen
von zwei teilbildsubmakroblockbewegungskompensierten Prädiktionsschaltungen 212 und 214 leitet.
Die Prädiktionsschaltungen 212 und 214 senden auf
den Leitungen 216 und 218 Prädiktionssignale zu den Eingängen einer
Teilbildsubmakroblöcke-zu-Makroblock-Formatierungsschaltung 220.
Die Formatierungsschaltung 220 leitet formatierte Prädiktionssignale
zu der Ausgangsleitung 160 der Prädiktionsschaltung 140.
-
Wenn
der Bewegungskompensationstyp der B.7. ist, wird das decodierte
vorherige Bild in dem Speicher für
das vorherige Bild zu einer Ausgangsleitung 222 des Schaltelements 150 gesendet,
und das decodierte nächste
Bild in dem Speicher für
das nächste
Bild wird zu einer Ausgangsleitung 224 des Schaltelements 150 gesendet.
Die Bilder auf den Leitungen 222 und 224 werden
zu den Eingängen
eines Schaltelements 226 gesendet, das die Bildsignale
selektiv zu zwei teilbildsubmakroblockbewegungskompensierten Prädiktionsschaltungen 228 und 230 leitet.
Die Prädiktionsschaltungen
senden Prädiktionssignale
zu einer Teilbildsubmakroblöcke-zu-Makroblöcke-Formatierungsschaltung 232,
die die Prädiktionssignale
zu der Ausgangsleitung 160 der Prädiktionsschaltung 140 leitet.
Wie in 3 gezeigt, reagieren die Prädiktorschaltungen auf eines oder
zwei Bewegungsvektorsignale (MV1 oder MV1 und MV2).
-
5 zeigt
ein ausführliches
Blockschaltbild des in 1 gezeigten
blockadaptiven Einzelbild-/Teilbildcodierungsanalysierers 14.
Der Codierungsanalysierer empfängt
Makroblöcke
auf einer Eingangsleitung 234. Die auf der Eingangsleitung 234 empfangenen
Makroblöcke
werden zu einem Makroblock-Vertikalkorrelationscomputer 236 geleitet,
der den Grad an Korrelation zwischen sukzessiven horizontalen Zeilen
jedes Makroblocks bestimmt und auf der Leitung 238 ein
Einzelbildkorrelationssignal erzeugt, das zu einer Schwellen- und
Komparatorschaltung 240 gesendet wird. Die auf der Eingangsleitung 234 empfangenen
Makroblöcke werden
außerdem
zu einer Makroblock-zu-Einzelbildsubmakroblöcke-Formatierungsschaltung 242 gesendet. Der
Formatierer 242 trennt jeden Makroblock in zwei separate
Teilbilder auf, von denen eines die geradzahligen horizontalen Zeilen
von Bildelementen in jedem Makroblock und das andere die ungeradzahligen
horizontalen Zeilen von Bildelementen in jedem Makroblock umfaßt. Die
geradzahligen horizontalen Zeilen werden zu einem Submakroblock-Vertikalkorrelationscomputer 244 gesendet,
wenn ein Selektorschalter 246 den Ausgang der Formatierungsschaltung 242 mit
dem Eingang des Korrelationscomputers 244 verbindet. Der
Korrelationscomputer 244 bestimmt den Grad an Korrelation
zwischen den zu dem Computer 244 gesendeten geradzahligen
horizontalen Zeilen und erzeugt ein Signal an die Submakroblockselektorschaltung 248 das
mit dem Korrelationsgrad zusammenhängt. Wenn sich der Schalter 248 in
einer entsprechenden Stellung befindet, wird das Signal aus dem
Korrelationscomputer 244 in Bezug auf den Korrelationsgrad
zu dem Eingang eines Akkumulators 250 gesendet. Die ungeradzahligen
horizontalen Zeilen werden zu einem Submakroblock-Vertikalkorrelationscomputer 252 gesendet,
wenn der Selektorschalter 246 den Ausgang der Formatierungsschaltung 242 mit
dem Eingang des Korrelationscomputers 252 verbindet. Der
Korrelationscomputer 252 bestimmt den Grad an Korrelation
zwischen den zu dem Computer 252 gesendeten ungeradzahligen
horizontalen Zeilen und erzeugt ein zu dem Submakroblockselektorschalter 248 gesendetes
Signal, das mit dem Korrelationsgrad zusammenhängt. Wenn der Schalter 248 entsprechend
geschaltet ist, wird das Signal aus dem Korrelationscomputer 252 in
Bezug auf den Korrelationgsgrad der ungeradzahligen Zeilen zu dem
Akkumulator 250 gesendet. Der Akkumulator 250 summiert
die Korrelationsgrade der ungeradzahligen und geradzahligen Teilbilder
in den Makroblöcken
und erzeugt ein Gesamtkorrelationssignal, das den Grad an Korrelation
in den Teilbildern angibt. Das Gesamtkorrelationssignal wird in
einer Dividiererschaltung 254 durch zwei dividiert und
zu der Schwelle in der Komparatorschaltung 240 gesendet.
Die Komparatorschaltung 240 vergleicht die Korrelationsgrade
des Einzelbildkorrelationssignals aus dem Computer 236 und
des Teilbildkorrelationssignals aus dem Dividierer 254 und
erzeugt das in 1 und 2 erzeugte
Codierungstypsignal. Das Codierungstypsignal gibt an, ob Einzelbilder
von Videoinformationen codiert und decodiert oder Teilbilder von
Videoinformationen codiert und decodiert werden sollen. Genauer
gesagt sind Einzelbilder zu codieren und zu decodieren, wenn der
Einzelbildkorrelationsgrad größer als
der Teilbildkorrelationsgrad ist. Teilbilder sind zu codieren und
zu decodieren, wenn der Teilbildkorrelationsgrad größer als
der Einzelbildkorrelationsgrad ist.
-
6 zeigt
den Blockformatierer 15a von 1.
Auf einer Eingangsleitung 256 werden Makroblöcke empfangen
und zu dem Eingang eines Schaltelements 258 geleitet. Der
Zustand des Schaltelements wird durch die Eigenschaften des von
der Schaltung von 5 erzeugten Codierungstypsignals
bestimmt. Wenn das Codierungstypsignal anzeigt, daß Einzelbildcodierung
stattfinden soll, verbindet das Schaltelement 258 die Leitung 256 mit
dem Eingang eines Makroblock-zu-Einzelbildblöcke-Formatierers 260,
dessen Ausgangssignal zu einem Schaltelement 262 geleitet
wird, das den Ausgang des Formatierers 260 mit einer Blockausgangsleitung 264 des
Formatierers von 6 verbindet. Wenn das Codierungstypsignal
anzeigt, daß Teilbildcodierung
stattfinden soll, verbindet das Schaltelement 258 die Leitung 256 mit
dem Eingang eines Makroblock-zu-Teilbildblöcke-Formatierers 266,
dessen Ausgangssignal zu dem Schaltelement 262 geleitet
wird, das den Ausgang des Formatierers 266 mit der Blockausgangsleitung 264 des
Formatierers von 6 verbindet.
-
7 ist ein Diagramm eines sowohl in 1 als auch in 2 gezeigten
Blockentformatierers. Der Entformatierer von 7 empfängt Blöcke auf
einer Eingangsleitung 268, die dieses Blöcke zu dem
Eingang eines Schaltelements 270 leitet. Wenn das Codierungstypsignal
anzeigt, daß Einzelbildcodierung
stattfinden soll, verbindet das Schaltelement 270 die auf
der Eingangsleitung 268 empfangenen Blöcke mit dem Eingang eines Einzelbildblöcke-zu-Makroblock-Formatierers 272,
der Einzelbildmakroblöcke
zu dem Eingang eines Schaltelements 274 leitet, das in
dieser Situation, durch das Codierungstypsignal so konfiguriert
wird, daß es Einzelbildblöcke aus
dem Formatierer 272 zu einer Makroblockausgangsleitung 276 leitet.
Wenn das Codierungstypsignal anzeigt, daß Teilbildcodierung stattfinden
soll, verbindet das Schaltelement 270 die auf der Eingangsleitung 268 empfangenen
Blöcke
mit dem Eingang eines Teilbildblöcke-zu-Makroblock-Formatierers 278,
der die Teilbildblöcke
zu dem Eingang eines Schaltelements 274 leitet, das durch
das Codierungstypsignal so konfiguriert wird, daß es Makroblöcke aus
dem Formatierer 278 zu der Makroblockausgangsleitung 276 leitet.
-
8 ist
ein Flußdiagramm,
das eine wie in 1 und 2 gezeigte
Intra-Gleichstromkoeffizientenprädiktionsschaltung
repräsentiert.
Tatsächlich
werden berechnete Intra-Gleichstromkoeffizienten auf der Leitung 47 zu
dem Eingang der Schaltung von 8 geleitet.
Im Block 280 wird ein Quantisierungsindex berechnet, indem
der auf der Leitung 47 vorliegende Gleichstromkoeffizient
durch einen Gleichstromschrittgrößenparameter
dividiert wird, der acht betragen kann. Im Block 282 wird
dann eine Entscheidung getroffen, um zu bestimmen, ob dieser Gleichstromkoeffizient
der Gleichstromkoeffizient für
den ersten Makroblock in einem Slice ist oder ob der vorherige Makroblock
ein Nicht-Intra-Makroblock war. Für die Zwecke der vorliegenden
Besprechung identifiziert der Blockindex die Speicherstelle eines
Blocks in einem Makroblock, wie in 9 für einen Einzelbildmakroblock
und einen Teilbildmakroblock gezeigt. Wenn die Entscheidung im Block 282 ja
ist, wird dann im Block 284 entschieden, ob der Blockindex
Null ist. Wenn der Blockindex Null ist, wird ein Gleichstrom-Top-Blockprädiktorparameter
im Block 286 gleich irgendeinem beliebigen Wert gesetzt,
zum Beispiel wird der Prädiktor
auf 128 gesetzt. Die von der Prädiktionsschaltung von 8 vorgenommene
Gleichstromprädiktion
wird im Block 288 gleich diesem Top-Blockgleichstromprädiktor gesetzt.
Im Block 290 wird der Top-Blockprädiktor mit dem Wert des im
Block 280 berechneten Quantisierungsindex überschrieben.
Im Block 292 wird ein unterer Blockgleichstromprädiktorparameter
gleich dem Wert des im Block 290 gesetzten oberen Blockgleichstromprädiktors
gesetzt. Die Gleichstromprädiktion
wird auf der Ausgangsleitung 294, die dem Ausgang der Intra-Gleichstromkoeffizientenprädiktorblöcke in 1 und 2 entspricht,
aus der Schaltung von 8 ausgegeben.
-
Wenn
der Blockindex 1, 2 oder 3 ist, was im Block 284 in 8 bestimmt
wird, wird im Block 296 geprüft, ob der Blockindex Eins
ist. Wenn der Blockindex Eins ist, wird die Gleichstromprädiktion
im Block 298 gleich dem oberen Blockgleichstromprädiktor gesetzt.
Der obere Blockgleichstromprädiktor
wird dann im Block 300 mit dem Quantisierungsindex überschrieben
und die Gleichstromprädiktion
wird auf der Leitung 294 von der Schaltung von 8 ausgegeben.
Wenn der im Block 296 bestimmte Blockindex 2 oder 3 beträgt, wird
die Gleichstromprädiktion
im Block 302 auf den unteren Blockgleichstromprädiktor gesetzt
und der untere Blockgleichstromprädiktor wird dann mit dem Wert
des Quantisierungsindex im Block 304 überschrieben. Die Gleichstromprädiktion
wird wieder auf der Leitung 294 von der Schaltung von 8 ausgegeben.
-
Wenn
der Makroblock nicht der erste Makroblock in einem Slice ist oder
der vorherige Makroblock kein Makroblock des Non-Intra-Typs ist,
was im Block 282 in 8 bestimmt
wird, wird im Block 306 entschieden, ob der aktuelle Makroblocktyp
derselbe wie der vorherige Makroblocktyp ist. Wenn der aktuelle
Makroblock ein Makroblock des Einzelbildtyps ist, bestimmt Block 306 in 8,
ob der vorherige Makroblock ebenfalls ein Makroblock des Einzelbildtyps
war. Wenn der aktuelle Makroblock ein Makroblock des Teilbildtyps
ist, bestimmt Block 306 in 8, ob der
vorherige Makroblock ebenfalls ein Makroblock des Teilbildtyp war.
Wenn eine dieser Bestimmungen positiv ist, wird im Block 308 geprüft, ob der
Blockindex Null oder Eins ist. Wenn der Blockindex Null oder Eins
ist, wird die Gleichstromprädiktion
im Block 310 gleich dem oberen Block-Gleichstromprädiktor gesetzt
und im Block 312 wird dann der obere Block-Gleichstromprädiktor gleich
dem im Block 280 berechneten Quantisierungsindex gesetzt.
Die Gleichstromprädiktion
wird dann von der Schaltung von 8 auf der
Leitung 294 ausgegeben. Wenn der Blockindex 2 oder 3 ist,
was im Block 308 bestimmt wird, wird die Gleichstromprädiktion
im Block 314 gleich dem unteren Blockprädiktor gesetzt. Im Block 316 wird
dann der untere Block-Gleichstromprädiktor mit dem Quantisierungsindex überschrieben,
und außerdem
wird die Gleichstromprädiktion
von der Schaltung der 8 auf der Leitung 294 gesendet.
-
Wenn
der aktuelle Makroblocktyp nicht derselbe wie der vorherige Makroblocktyp
ist, was im Block 306 bestimmt wird, wird im Block 318 geprüft, ob der
Blockindex Null ist. Wenn der Blockindex Null ist, wird im Block 320 ein
Mittelwert der aktuellen Werte des oberen Block-Gleichstromprädiktors und des unteren Block-Gleichstromprädiktors
bestimmt. Der im Block 320 berechnete Mittelwert wird im
Block 322 gerundet. Der obere Block-Gleichstromprädiktor wird
im Block 324 gleich dem gerundeten Mittelwert gesetzt.
Die Gleichstromprädiktion
wird dann im Block 326 gleich dem oberen Block-Gleichstromprädiktor gesetzt.
Der obere Block-Gleichstromprädiktor
wird dann im Block 328 mit dem Wert des Quantisierungsindex überschrieben.
Der untere Block-Gleichstromprädiktor
wird im Block 330 gleich dem oberen Block-Gleichstromprädiktor gesetzt.
Die Gleichstromprädiktion
wird zu der Ausgangsleitung 294 der Schaltung von 8 gesendet.
-
Wenn
der Blockindex 1, 2 oder 3 ist, was im Block 318 bestimmt
wird, wird im Block 332 bestimmt, ob der Blockindex 1 ist.
Wenn der Blockindex 1 ist, wird die Gleichstromprädiktion
im Block 334 gleich dem oberen Block-Gleichstromprädiktor gesetzt.
Der obere Block-Gleichstromprädiktor wird
dann im Block 336 mit dem Quantisierungsindex überschrieben
und die Gleichstromprädiktion
wird zu der Ausgangsleitung 294 der Schaltung von 8 geleitet.
Wenn der Blockindex nicht 1 ist, was im Block 332 bestimmt
wird, wird die Gleichstromprädiktion
im Block 338 gleich dem Wert des unteren Block-Gleichstromprädiktors
gesetzt und der untere Block-Gleichstromprädiktor wird dann im Block 340 mit
dem Wert des im Block 280 berechneten Quantisierungsindex überschrieben.
Wie in den anderen Fällen
wird die Gleichstromprädiktion
zu der Ausgangsleitung 294 geleitet.
-
9 zeigt
eine Sequenz von sechs Makroblöcken
in einem Videodatenslice. Die Pfeile in 9 zeigen
schematisch die Beziehung zwischen den vorhergesagten Gleichstromkoeffizienten
für jeden
der Videodatenblöcke
und den tatsächlichen
Werten von für
benachbarte Blöcke
berechneten Gleichstromkoeffizienten. Der Ursprung jedes der Pfeile
wird in dem Block plaziert, für
den ein tatsächlicher
Gleichstromkoeffizient bestimmt wurde. Die Pfeilspitze gibt die
Speicherstelle des Blocks an, für
den der tatsächliche
Wert des Gleichstromkoeffizienten als Prädiktion des Gleichstromkoeffizienten
für den
die Pfeilspitze enthaltenden Block verwendet wird. Die Kreise in bestimmten
der Blöcke
geben die Situation an, in der ein Mittelwert tatsächlicher Werte
von Gleichstromkoeffizienten zur Vorhersage des Gleichstromkoeffizienten
für den
Block, in dem die Kreise verankert sind, verwendet wird. 9 zeigt
einen Makroblock des Einzelbildtyps mit der Bezifferung 0 am Start
des Makroblock-Slice, gefolgt durch den Makroblock des Einzelbildtyps
mit der Bezifferung 1, einen Makroblock des Teilbildtyps mit der
Bezifferung 2, einen Makroblock des Einzelbildtyps mit der Bezifferung
3, einen Makroblock des Teilbildtyps mit der Bezifferung 4 und einen
Makroblock des Teilbildtyps mit der Bezifferung 5. Jeder der Makroblöcke enthält vier
Blöcke,
wobei dem oberen linken Block jedes Makroblocks ein Blockindex von
0 gegeben wird. Dem oberen rechten Block jedes Makroblocks wird
ein Blockindex von 1 gegeben, dem unteren linken Block jedes Makroblocks
wird ein Blockindex von 2 gegeben und dem unteren rechten Block
jedes Makroblocks ein Blockindex von 3. Beispielsweise werden ein
Einzelbildmakroblock 0 und ein Teilbildmakroblock 4 mit den Blockindizes
in 9 bezeichnet. Der Block in dem Einzelbildmakroblock
0 mit einem Index 0 wird so vorhergesagt, daß er einen Wert des Gleichstromkoeffizienten
gleich einem beliebigen Wert wie zum Beispiel 128 aufweist. Der
vorhergesagte Wert des Gleichstromkoeffizienten für den Block
in dem Einzelbildmakroblock 0 mit einem Index von 1 wird so vorhergesagt,
daß er
der für
den Block mit einem Index von 0 berechnete Gleichstromkoeffizient
ist, wie durch den Pfeil von dem Block mit einem Index von 0 zu
dem Block mit einem Index von 1 dargestellt wird. Der vorhergesagte
Wert des Gleichstromkoeffizientens für den Block mit einem Index
von 2 in dem Einzelbildmakroblock 0 wird so vorhergesagt, daß er mit
dem tatsächlichen
Wert des für
den Block mit einem Index von 0 in dem Einzelbildmakroblock 0 berechneten
Gleichstromkoeffizienten übereinstimmt,
wie durch den vertikal nach unten gerichteten Pfeil von dem Block
mit Index 0 zu dem Block mit Index 2 dargestellt wird. Der vorhergesagte
Wert des Gleichstromkoeffizienten für den Block mit einem Index
von 3 in dem Makroblock 0 ist derselbe wie der tatsächliche
Wert des für
den Block mit einem Index von 2 in Makroblock 0 berechneten Gleichstromkoeffizienten.
Der Wert des Gleichstromkoeffizienten, der für die Blöcke mit Index 0 in dem Teilbildmakroblock
2, dem Einzelbildmakroblock 3 und dem Teilbildmakroblock 4 vorhergesagt
wird, werden jeweils so vorhergesagt, daß sie der Mittelwert der berechneten
Koeffizienten für
die Blöcke
mit Index 1 und 3 in den vorherigen Makroblöcken in jedem Fall sind. Der
Rest der Vorhersagen ist im Hinblick auf den Inhalt von 8 und 9 offensichtlich
und wird nicht weiter besprochen.
-
10 ist
ein Blockschaltbild des in 1 gezeigten
Variable-Wortlängen-Wahl-Analysierers.
Der Analysierer empfängt
das Bildtypsignal auf der Leitung 32 als ein Eingangssignal
für einen
Signalübersetzer 342,
der zwei Signale erzeugt: eine Intracodierungsanzeige 344,
die identifiziert, ob Codierung des Intra-Typs vorliegt, und eine
B-Typ-Prädiktionsanzeige 346,
die anzeigt, ob eine prädiktive
Codierung von B-Bildern unternommen wird oder nicht.
-
Der
Variable-Wortlänge-Wahl-Analysierer
empfängt
außerdem
die DCT-Koeffizienten aus dem Scan-Selektor 23 in einem
Lauflängencomputer 348,
der für
alle empfangenen, von Null verschiedenen Koeffizienten die Anzahl
von Nullen unmittelbar vor dem Empfang dieses von Null verschiedenen
DCT-Koeffizienten bestimmt. Anders ausgedrückt, bestimmt der Computer 348 die
Lauflänge
für jeden
DCT-Koeffizienten und sendet Signale in bezug auf die Amplitude
und die Lauflänge
jedes empfangenen DCT-Koeffizienten zu dem Eingang eines Intra-Anzeige-Schaltelements 350.
Das Schaltelement 350 leitet die Signale aus dem Lauflängencomputer 348,
wenn es sich in dem in 10 gezeigten Zustand Nummer
1 befindet, zu dem Eingang des Sequenzschaltelements 352,
bei dem es sich um eine Zählschaltung
handeln kann. Das Schaltelement 350 befindet sich in dem
Zustand Nummer 1, wenn der Auswahlanalysierer von 10 DCT-Koeffizienten für I-Bilder
analysiert. Das Schaltelement 352 leitet die Amplitude
und Lauflänge
jedes Koeffizienten sequenziell zu den Eingängen jeder einer Reihe von
vier Variable-Wortlänge-Codelänge-Tabellen 354, 356, 358 und 356.
Die Tabellen 354, 356, 358 und 360 enthalten
Daten, die die erwartete Codelänge
repräsentieren,
die produziert wird, wenn der DCT-Koeffizient mit einer Amplitude
und Lauflänge,
die durch die Signale aus dem Lauflängencomputer 348 repräsentiert
werden, gemäß vier verschiedener
Codierungsverfahren codiert werden, nämlich einem für jede der
Tabellen 354, 356, 358 und 360.
Wenn das Schaltelement 352 den Ausgang des Lauflängencomputers 348 mit
dem Eingang einer der Tabellen 354, 356, 358 und 360 verbindet,
erzeugt diese Tabelle auf einer jeweiligen Ausgangsleitung 362, 364, 366 und 368 ein
Signal bezüglich
der erwarteten Codelänge, die
aus einer Codierung des DCT-Koeffizienten gemäß dem Codierungsverfahren,
für das
die Daten in der Tabelle erzeugt wurden, resultieren wird. Die erwarteten
Codelängen
auf den Leitungen 362, 364, 366 und 368 werden
zu den Eingängen
Nummer 1 eines Schaltelements 370 geleitet. Wenn die DCT-Koeffizienten
für I-Bilder
bestimmt sind, ist der Zustand des Schaltelements 370 dergestalt,
daß die
Signale auf den Leitungen 362, 364, 366 und 368 zu
den Eingängen
von Akkumulatoren 372, 374, 376 bzw. 378 geleitet
werden. Der Inhalt der Akkumulatoren 372, 374, 376 und 378 wird
zu vier Eingängen
einer Komparator- und Minimumauswertungsschaltung 380 geleitet,
die auf ein Vergleichsfreigabesignal reagiert, um zu bestimmen,
welche der in den Akkumulatoren 372, 374, 376 und 378 gespeicherten erwarteten
Lauflängen
die kleinste ist. Die Auswertungsschaltung 380 erzeugt
auf der Leitung 382 ein Variable-Wortlänge-Tabelle-Auswahlsignal,
das dann zu dem Codierer und Multiplexer 24 in 1 gesendet wird, der das auf der Leitung 382 erzeugte
Signal dann zur Auswahl eines effizienten Codierungsverfahrens mit
fester oder variabler Wortlänge
verwendet, das durch die Beschaffenheit des Variable-Wortlänge-Tabelle-Auswahlsignal auf
der Leitung 382 identifiziert wird. Das Auswahlsignal auf
der Leitung 382 bewirkt, daß der Codierer 24 eine
von mehreren in dem Codierer 24 gespeicherten Codierungstabellen
auswählt,
die jeweils die Codierung quantisierter DCT-Koeffizienten gemäß einem separaten
und verschiedenen Codierungsverfahren mit fester Wortlänge oder
variabler Wortlänge
steuert.
-
Wenn
P- und B-Bilder codiert werden, wird das Schaltelement 350 in
den Zustand 0 versetzt, so daß die
DCT-Koeffizientenamplituden und -lauflängen zu dem Eingang eines Bidirektional-Prädiktions-Anzeigeschaltelements 384 geleitet
werden. Wenn P-Bilder codiert werden, befindet sich das Schaltelement 384 im Zustand
0, der bewirkt, daß die
Koeffizientenamplituden und -lauflängen mit dem Eingang eines
Sequenzschaltelements 386 verbunden werden, bei dem es
sich um eine Zählschaltung
handeln kann. Das Schaltelement 386 verbindet sequenziell
die P-Bild-Koeffizientenamplituden und -lauflängen mit jeder von vier Variable-Wortlänge-Codelänge-Tabellen 388, 390, 392 und 394.
Die Tabellen 388, 390, 392 und 394 enthalten
jeweils Informationen über
erwartete Codelängen,
die durch Codierung des DCT-Koeffizienten mit der berechneten Amplitude
und den berechneten Lauflängen
gemäß separaten
und verschiedenen durch jede Tabelle 388, 390, 392 und 394 repräsentierten
Codes produziert werden. Die erwarteten Codelängen aus den Tabellen 388, 390, 392 und 394 werden
zu den 0-Eingängen
des Schaltelements 370 gesendet. Für P-Bilder ist der Zustand
der Schaltelemente 370 und 396 dergestalt, daß die Ausgaben
der Tabellen 388, 390, 392 und 394 auf
Ausgangsleitungen 398, 400, 402 und 404 und
zu den Eingängen
der Akkumulatoren 372, 374, 376 und 378 geleitet werden.
Wie im oben beschriebenen Fall von I-Bildern leiten die Akkumulatoren 372, 374, 376 und 378 die erwarteten
Codelängen
zu der Auswertungsschaltung 380, die dann auf der Leitung 382 ein
Variable-Wortlänge-Auswahlsignal
erzeugt, mit dem der Codierer und Multiplexer 24 die quantisierten
DCT-Koeffizienten unter Verwendung eines Codes codiert, der im Hinblick
auf die kleinste Anzahl von Bit, die zum Übertragen der DCT-Koeffizienten
verwendet werden muß,
am effizientesten ist.
-
Wenn
die Schaltung von 10 B-Bilder analysiert, werden
die DCT-Koeffizientenamplituden und -lauflängen aus dem Computer 348 zu
dem Eingang eines Schaltelements 384 geleitet, das sich
in einem Zustand befindet, der diese Amplituden und Lauflängen nur
mit der Variable-Wortlänge-Codelänge-Tabelle 388 verbindet,
die das erwartete Lauflängensignal
produziert und es zu dem Eingang des Akkumulators 372 sendet,
und dient zur Erzeugung eines Variable-Wortlänge-Tabelle-Auswahl-Signals auf der Leitung 382.
Man beachte, daß im
Fall von B-Bildern der Zustand des Schaltelements 396 dergestalt
ist, daß die
Ausgaben der Tabellen 390, 392 und 394 nicht
mit den Eingängen
der Akkumulatoren 374, 376 und 378 verbunden
werden.
-
Bei
dem hier beschriebenen Beispiel der Erfindung wird ein Parameter
Mscale erzeugt. Der Parameter M scale ist ein bei der Berechnung
des Quantisierungsparameters für
bidirektional codierte Einzelbilder zu verwendender Multiplikator.
Für jeden
Makroblock wird ein Parameter M scale durch Auswahl aus vorbestimmten Tabellen
produziert, die experimentell für
eine bestimmte Bildauflösung
und -bitrate bestimmt wurden.
-
11 ist
ein Flußdiagramm
der Codierung des Parameters M scale für bidirektional codierte Bilder. Im
Block 406 wird entschieden, ob der aktuelle Makroblock
in dem vorherigen P-Bild oder I-Bild codiert wurde. Wenn nicht,
wird im Block 408 eine weitere Entscheidung getroffen,
ob der mittlere Quantisierungsparameter für ein entsprechendes Slice
in dem vorherigen P-Bild oder I-Bild von Null verschieden war. Wenn
er gleich Null war, wird der mittlere Quantisierungsparameter im
Block 410 gleich 16 gesetzt. Wenn der mittlere Quantisierungsparameter
von Null verschieden war, was im Block 408 bestimmt wird,
oder nachdem der mittlere Quantisierungsparameter im Block 410 auf
16 gesetzt wurde, wird der Quantisierungsparameter für den entsprechenden
Makroblock in dem vorherigen P-Bild oder I-Bild im Block 412 gleich
16 gesetzt, da es für
diesen Makroblock keinen Quantisierungsparameter gab. Wenn der Makroblock
in dem vorherigen P-Bild oder I-Bild codiert wurde, was im Block 406 bestimmt
wird, oder nach dem Betrieb des Blocks 412 wird die Quantisierungsschrittgröße im Block 414 gleich
zweimal den Quantisierungsparameter gesetzt. Die Quantisierungsschrittgröße für das Slice
wird im Block 414 gleich zweimal den mittleren Quantisierungsparameter
für das
entsprechende Slice in dem vorherigen P-Bild oder I-Bild gesetzt.
Im Block 416 wird dann entschieden, ob die Prädiktion
für den
Makroblock unidirektional oder intra sein soll. Wenn die Prädiktion
bidirektional sein soll, oder anders ausgedrückt, wenn am Ausgang des Blocks 416 der
Nein-Route gefolgt
wird, wird im Block 418 ein vorübergehender Skalenfaktor gleich
einem Skalenfaktor gesetzt, der auf die Auflösung und Bitrate mal der Quantisiererschrittgröße für den Makroblock
in dem vorherigen P-Bild oder I-Bild abgestimmt ist. Im Block 420 wird
ein Verhältnisparameter
berechnet, indem der vorübergehende
Skalenfaktor durch die Quantisierungs schrittgröße für das Slice dividiert wird.
Im Block 422 wird eine Variable min_ind gleich 9 gesetzt,
eine Variable min_valf wird gleich 1000 gesetzt und eine Variable
zlimit wird gleich 4 gesetzt. Im Block 424 wird dann entschieden,
ob ein Index z kleiner als zlimit ist. Wenn z kleiner als zlimit
ist, wird eine Variable absdiff gleich dem Absolutwert der Differenz
zwischen dem im Block 420 berechneten Verhältnis und
dem Parameter mscale im Block 426 gesetzt. Im Block 428 wird
dann entschieden, ob der wert von absdiff kleiner als min_valf ist.
Wenn von Block 428 aus der Ja-Route gefolgt wird, wird
eine Variable min_ind gleich z gesetzt, und die Variable min_valf
wird gleich der Variable absdiff gesetzt (Block 430). Die
Routine von 11 kehrt dann zum Eingang von
Block 424 zurück.
Wenn am Ausgang des Blocks 428 der Nein-Route gefolgt wird,
kehrt die Routine von 11 direkt zu dem Eingang von
Block 424 zurück.
Die gerade beschriebene Schleife wird wiederholt, bis z nicht mehr
kleiner zlimit ist und der Nein-Route am Ausgang von Block 424 gefolgt
wird, woraufhin im Block 432 die aktuelle Quantisierungsschrittgröße gleich
einem gerundeten Produkt einer im Block 432 gezeigten mscale-Variablen
und der Quantisierungsschrittgröße für das Slice
gesetzt wird. Der aktuelle Quantisierungsparameter wird gleich der
Hälfte
der Quantisierungsschrittgröße gesetzt
(Block 434) und der Wert von min_ind wird zur Einfügung in
den Codiererausgangsbitstrom zur Verwendung durch den Decodierer
zur Rekonstruktion von Bildern aus dem komprimierten Bitstrom gesendet.
Der aktuelle Quantisierungsparameter wird durch den Betrieb der
Blöcke 436 und 438 auf
ein Ventil von 31 abgeschnitten.
-
Wenn
im Block 416 bestimmt wird, daß unidirektionale Prädiktion
vorliegt, wird im Block 440 ein vorübergehender Skalenfaktor berechnet,
im Block 442 wird ein Verhältnis des vorübergehenden
Skalenfaktors zu der Quantisierungsschrittgröße berechnet, und im Block 444 werden
die Variablen min_ind, min_valf und zlimit auf dieselben Werte wie
im Block 422 gesetzt. Dann wird im Block 446 entschieden,
ob ein Index z kleiner als zlimit ist. Wenn dies der Fall ist, wird
in Block 448 eine Variable absdiff als der Absolutwert
der Differenz zwischen dem im Block 442 berechneten Verhältnis und
einem im Block 448 identifizierten mscale-Parameter berechnet.
Dann wird im Block 450 geprüft, ob absdiff kleiner als
min_valf ist. Wenn dies der Fall ist, wird min_ind gleich z gesetzt,
und min_valf wird gleich absdiff gesetzt (Block 452). Dann
kehrt die Routine von 11 zu dem Eingang von Block 446 zurück. Die
Schleife wird fortgesetzt, bis z nicht mehr kleiner als zlimit ist,
und die Routine folgt dann der Nein-Route als Ausgabe des Blocks 446.
Wenn im Block 454 der Nein-Route gefolgt wird, wird der
aktuelle Quantisierungsschrittparameter gleich einem Produkt ähnlich dem
bereits für
Block 432 beschriebenen Produkt gesetzt und die Routine
von 11 führt
die zuvor beschriebenen, in den Blöcken 434, 436 und 438 identifizierten
Schritte aus.
-
12 zeigt
die Funktionsweise eines Decodierers in bezug auf den mscale-Parameter,
der für
B-Bilder produziert wird. Der min_ind-Parameter wird aus dem zu
dem Decodierer gesendeten Bitstrom extrahiert (Block 456).
Aus diesem Bitstrom wird im Block 458 der Quantisierungsparameter
für das
Slice extrahiert. Block 460 berechnet die Quantisierungsschrittgröße aus dem
Quantisierungsparameter für
das Slice im Block 460. Im Block 462 wird dann
entschieden, ob die Prädiktion
für den
Makroblock unidirektional oder intra ist. Wenn die Prädiktion
unidirectional oder intra ist, wird wie im Block 464 spezifiziert
der aktuelle Quantisierungsschritt berechnet. Wenn die Prädiktion
bidirektional ist, wird die aktuelle Quantisierungsschrittgröße wie im Block 456 spezifiziert
berechnet.
-
13 zeigt
ein ausführliches
Blockschaltbild eines Sichtbarkeitsmatrixselektors. Auf der Leitung 468 werden
DCT-Koeffizienten in den Selektor eingegeben, die zu dem Eingang
einer Koeffizientengewichtungsschaltung 470 geleitet werden.
Für Fachleute
ist erkennbar, daß Gewichtungsfaktoren
aus einer gewählten
von vier Sichtbarkeitsmatrizen 472, 474, 476 und 478 abgerufen
werden, und zwar abhängig
von den Zuständen der
Schaltelemente 480, 482, 484, 486, 488 und 490,
wobei diese Zustände
durch den Zustand von in 13 identifizierten
und an anderer Stelle besprochenen Signalen bestimmt werden. Abhängig davon,
welche Sichtbarkeitsmatrix ausgewählt wird, werden vorbestimmte
Gewichtungsfaktoren auf der Leitung 492 zu einem Eingang
der Koeffizientenwarteschaltung 470 geleitet, die dann
auf einer Ausgangsleitung 494 im Hinblick auf die auf der
Leitung 468 eingeführten
DCT-Koeffizienten
und die auf der Leitung 492 eingeführten Gewichtungskoeffizienten
gewichtete DCT-Koeffizienten erzeugt.
-
14 ist
ein Blockschaltbild eines Vorwärts-/Invers-Scan-Selektors. Der
Scan-Selektor von 14 umfaßt eine Vorwärts-/Invers-Scan-Formatierungsschaltung 496,
die auf der Leitung 498 ein Vorwärts-/Invers-Scan-Kennzeichnungssignal
und auf der Leitung 500 Quantisierungsindizes empfängt. Gemäß Informationen,
die in vier Scanning-Blöcken 502, 504, 506 und 508 gespeichert
sind, kann eine von vier vorbestimmten Scanning-Reihenfolgen produziert
werden. Abhängig
von den Zuständen
der Schaltelemente 510, 512, 514, 516, 518 und 520,
die durch die Beschaffenheit von in 14 identifizierten
und an anderem Ort besprochenen Steuersignalen bestimmt werden,
wird die Funktionsweise des Scan-Formatierers 496 durch
Signale auf einer Eingangsleitung 522 gesteuert, die durch
einen gewählten
der Scanning-Blöcke 502, 504, 506 und 508 erzeugt
werden. Der Scan-Formatierer 496 erzeugt auf der Leitung 524 im
Hinblick auf die auf den Leitungen 498, 500 und 522 empfangenen
Eingangssignale Scan-Quantisierungsindizes.
-
15 ist
ein Flußdiagramm
der Bewegungsvektorprädiktion
für P-Bilder.
Im Block 526 wird ein neuer Makroblock erhalten. Block 528 bestimmt,
ob dieser Makroblock der erste Makroblock eines Slice ist. Wenn
es der erste Makroblock ist, werden die Variablen, die in fünf Registern
gespeichert sind, die im Block 530 identifiziert werden,
auf Null initialisiert, und die Routine von 15 schreitet
dann zum Eingang eines Entscheidungsblocks 532 voran. Wenn
im Block 528 bestimmt wird, daß dieser Makroblock nicht der
erste Makroblock in einem Slice ist, schreitet die Routine von 15 direkt
von Block 528 zu dem Eingang von Block 532 voran. Block 532 bestimmt,
ob dies ein Inter-Makroblock
ist. Wenn es nicht ein Inter-Makroblock ist, werden die Variablen,
die in fünf
Registern gespeichert sind, die im Block 534 identifiziert
werden, auf Null initialisiert, und die Routine von 15 fährt zum
Eingang von Block 526 zurück.
-
Wenn
Block 532 bestimmt, daß der
Makroblock ein Inter-Makroblock
ist, dann wird entschieden, um welchen Bewegungskompensationstyp
es sich handelt. Diese Entscheidungen erfolgen in den Blöcken 536, 538 und 540.
Wenn der Bewegungskompensationstyp Typ 1 ist, wird im Block 542 eine
Bewegungsvektorprädiktionsvariable
gleich dem Wert der Variable REG 16 × 16 FRM_P gesetzt. Im Block 544 wird
die Variable REG 16 × 16
FRM_P gleich dem Wert einer aktuellen Bewegungsvektorvariablen gesetzt,
und die Bewegungsprädiktion
wird von der Routine von 15 ausgegeben.
-
Wenn
der Bewegungskompensationstyp der Typ 2 ist, wird im Block 546 eine
erste Bewegungsvektorprädiktions varibable
gleich der Variablen REG 16 × 8
FRM_P1 gesetzt. Die Variable REG 16 × 8 FRM_P1 wird im Block 548 auf
den Wert einer aktuellen Bewegungsvektorvariablen (P1) umgeändert. Im
Block 550 wird eine zweite Bewegungsvektorprädiktionsvariable
gleich der Variablen REG 16 × 8
FRM_P2 gesetzt. Im Block 552 wird die Variable REG 16 × 8 FRM_P2
gleich dem Wert einer aktuellen Bewegungsvektorvariablen (P2) gesetzt,
und die Bewegungsprädiktion
wird von der Routine von 15 ausgegeben.
-
Wenn
der Bewegungskompensationstyp der Typ 3 ist, wird eine erste Bewegungsvektorprädiktionsvariable
gleich der Variablen REG 16 × 8
FLD_P1 gesetzt (Block 554). Im Block 556 wird
die Variable REG 16 × 8
FLD_P1 dann gleich einer aktuellen Bewegungsvektorvariablen (P1)
gesetzt. Im Block 558 wird eine zweite Bewegungsvektorprädiktionsvariable
gleich der Variablen REG 16 × 8
FLD_P2 gesetzt. Die Variable REG 16 × 8 FLD_P2 wird dann gleich
dem Wert einer aktuellen Bewegungsvektorvariablen (P2) gesetzt (Block 560), und
die Routine von 15 gibt die Bewegungsvektorprädiktion
aus. Im Block 561 wird ein Fehlerzustand identifiziert,
falls bestimmt wird, daß der
Bewegungskompensationstyp keiner der drei zulässigen Typen in 15 ist.
-
16 ist ein Flußdiagramm der Bewegungsvektorprädiktion
für B-Bilder.
Im Block 562 wird ein neuer Makroblock erhalten. Im Block 564 wird
bestimmt, ob dies der erste Makroblock in einem Slice ist. Wenn
es der erste Makroblock in einem Slice ist, wird eine Liste von
Variablen in dem Register, das im Block 566 identifiziert
wird, auf Null initialisiert. Nach dem Betrieb des Blocks 566 schreitet
die Routine von 16 zum Eingang von
Block 568 voran. Wenn der Makroblock nicht der erste Makroblock
in einem Slice ist, was im Block 564 bestimmt wird, wird
die Ausgabe von Block 564 direkt mit dem Eingang von Block 568 verbunden.
-
Block 568 bestimmt,
ob es sich um einen Inter-Makroblock
handelt. Wenn es sich nicht um einen Inter-Makroblock handelt, initialisiert Block 570 eine
Liste von Variablen, die in Registern gespeichert sind, die im Block 570 identifiziert
werden, auf Null, und die Routine von 16 kehrt
dann zum Eingang von Block 562 zurück. Wenn Block 568 bestimmt,
daß es
sich um einen Inter-Makroblock handelt, bestimmen dann die Blöcke 572, 574, 576, 578, 580, 582 und 584,
ob der Bewegungskompensationstyp einer der sieben möglichen Typen
ist.
-
Wenn
der Bewegungskompensationstyp der Typ 1 für B-Bilder ist, setzt Block 586 eine
Bewegungsvektorprädiktionsvariable
gleich der Variablen REG 16 × 16
FRM_P. Block 588 setzt die Variable REG 16 × 16 FRM_P
dann gleich einer aktuellen Bewegungsvektorvariablen (P), und die
Routine von 16 gibt dann die Bewegungsvektorprädiktion
aus.
-
Wenn
der Bewegungskompensationstyp der Typ 2 für B-Bilder ist, setzt Block 590 eine
Bewegungsvektorprädiktionsvariable
gleich der Variablen REG 16 × 16
FRM_N. Block 592 setzt die Variable REG 16 × 16 FRM_N
dann auf den Wert einer aktuellen Bewegungsvektorvariablen (N),
und die Routine von 16 gibt die Bewegungsvektorprädiktion
aus.
-
Wenn
der Bewegungskompensationstyp der Typ 3 für B-Bilder ist, setzt Block 594 eine
erste Bewegungsvektorprädiktionsvariable
auf den Wert der variablen REG 16 × 16 FRM_P. Block 596 setzt
eine aktuelle Bewegungsvektorvariable (P) dann auf den Wert der
Variablen REG 16 × 16
FRM_P.
-
Block 598 setzt
eine zweite Bewegungsvektorprädiktionsvariable
gleich der Variablen REG 16 × 16 FRM_N.
Block 600 setzt dann den Wert von REG 16 × 16 FRM_N
auf den Wert der aktuellen Bewegungsvektorvariablen (N), und die
Routine von 16 gibt die Bewegungsvektorprädiktionen
aus.
-
Wenn
der Bewegungskompensationstyp der Typ 4 für B-Bilder ist, setzt Block 602 eine
erste Bewegungsvektorprädiktionsvariable
gleich der Variablen REG 16 × 8
FRM_P1. Block 604 verwandelt den Wert der Variablen REG
16 × 8
FRM_P1 in den Wert einer aktuellen Bewegungsvektorvariablen (P1).
Block 606 setzt eine zweite Bewegungsvektorprädiktionsvariable
auf den Wert der Variablen REG 16 × 8 FRM_N2. Block 608 verwandelt
den Wert der Variablen REG 16 × 8
FRM_N2 in den Wert einer aktuellen Bewegungsvektorvariablen (N2),
und die Routine von 16 gibt die Bewegungsvektorprädiktionen
aus.
-
Wenn
der Bewegungskompensationstyp der Typ 5 für B-Bilder ist, setzt Block 610 eine
erste Bewegungsvektorprädiktionsvariable
gleich der Variablen REG 16 × 8
FRM_N1. Block 612 verwandelt den Wert der Variablen REG
16 × 8
FRM_N1 in den Wert einer aktuellen Bewegungsvektorvariablen (N1).
Block 614 setzt den Wert einer zweiten Bewegungsvektorprädiktionsvariable
gleich dem Wert der Variablen REG 16 × 8 FRM_P2. Block 616 verwandelt
den Wert der Variablen REG 16 × 8
FRM_P2 dann in den Wert einer aktuellen Bewegungsvektorvariablen
(P2), und die Routine von 16 gibt
die Bewegungsvektorprädiktionen
aus.
-
Wenn
der Bewegungskompensationstyp der Typ 6 für B-Bilder ist, setzt Block 618 den
Wert einer ersten Bewegungsvektorprädiktionsvariablen auf den Wert
der Variablen REG 16 × 8
FLD_P1. Block 620 verwandelt den Wert der Variablen REG
16 × 8
FLD_P1 dann in den Wert einer aktuellen Bewegungsvektorvariablen (P1).
Block 622 setzt den Wert einer zweiten Bewegungsvektorprädiktionsvariablen
gleich dem Wert der Variablen REG 16 × 8 FLD_N2. Block 624 verwandelt
den Wert der Variablen REG 16 × 8
FLD_N2 in den Wert einer aktuellen Bewegungsvektorvariablen (N2),
und die Routine von 16 gibt die Bewegungsvektorprädiktionen
aus.
-
Wenn
der Bewegungskompensationstyp der Typ 7 für B-Bilder ist, setzt Block 626 den
Wert einer ersten Bewegungsvektorprädiktionsvariablen auf den Wert
der Variablen REG 16 × 8
FLD_N1. Block 628 verwandelt den Wert der Variablen REG
16 × 8
FLD_N1 dann in den Wert, der gleich einer aktuellen Bewegungsvektorvariablen
(N1) ist. Block 630 setzt den wert einer zweiten Bewegungsvektorprädiktionsvariablen
gleich dem Wert der Variablen REG 16 × 8 FLD_P2. Block 632 verwandelt
den Wert der Variablen REG 16 × 8
FLD_P2 dann in den Wert, der derselbe ist wie der einer aktuellen
Bewegungsvektorvariablen (P2), und die Routine von 16 gibt
die Bewegungsvektorprädiktionen
aus.
-
Wenn
die Routine von 16 bestimmt, daß der Bewegungskompensationstyp
keiner der 7 zulässigen
Typen ist, identifiziert die Routine von 16 im
Block 634 einen Fehlerzustand.
-
Es
folgt eine Zusammenfassung der syntaktischen Einzelheiten dieses
Beispiels der Erfindung:
-
Sequenz-Kopfteil:
-
- • sequence_header_code
- • horizontal_size
- • vertical
size
- • pel_aspect_ratio
- • picture_rate
- • bit_rate
- • intra_frame_quantizer_matrix[64]
- • intra_field_quantizer_matrix[64]
- • nonintra_frame_quantizer_matrix[64]
- • nonintra_field_quantizer_matrix[64]
- • mscale
[64]
-
Gruppe-von-Bildern-Schicht:
-
- • group_start-code
- • time_code
- • closed_gop
- • broken_link
-
Bildschicht:
-
- • picture_start_code
- • temporal_reference
- • picture_coding_type
- • full_pel_forward_vector
(für P-
und B-Bilder)
- • forward_f
(für P-
und B-Bilder)
- • full_pel_backward_vector
(für B-Bilder)
- • backward_f
(für B-Bilder)
-
Slice-Schicht:
-
- • slice_start_code
- • quantization_parameter
-
Makroblock-Schicht bei
intracodierten MBs:
-
- • macroblock_type
- • quantization_parameter
(5 Bit)
- • vlc_select
(2 Bit)
-
Makroblock-Schicht bei
prädiktiv
codierten MBs:
-
- • macroblock_type
- • motion_horizontal_forward
- • motion_vertical_forward
- • macroblock_code_nocode
(1 Bit)
- • quantization_parameter
(5 Bit, gesendet, wenn macroblock_code_nocode "1" ist)
- • vlc_select
(2 Bit, gesendet, wenn macroblock_code_nocode "1" ist)
-
Makroblock-Schicht
bei bidirektional prädiktiv
codierten MBs
-
- • macroblock_type
- • motion_horizontal_forward
- • motion_vertical_forward
- • motion_horizontal_backward
- • motion_vertical_backward
- • macroblock_code_nocode
(1 Bit)
- • mscale_addr
(2 Bit, gesendet, wenn macroblock_code_nocode "1" ist)
- • coded_block_pattern
(gesendet, wenn macroblock_code_nocode "1" ist)
-
Blockschicht bei intracodierten
MBs:
-
- • dct_dc_size
- • dct_dc_differential
- • dct_coeff_next
- • end_of_block
(Codewort hängt
von verwendetem Codebuch ab)
-
Blockschicht bei nicht-intracodierten
MBs:
-
- • dct_coeff_first
- • dct_coeff_next
- • end_of_block
(bei P-Bildern hängt
das Codewort von dem verwendeten Codebuch ab)
-
Die
gesamte Menge von Makroblockbetriebsarten für alle drei Bildtypen ist in
der nachfolgenden Tabelle 1 aufgelistet.
-
TABELLE
I VLC-TABELLEN
FÜR MAKROBLOCKTYPEN
-
Bei
einem vollautomatisierten Codierer mit einem Durchgang beträgt die durch
den Codierungsvorgang entstehende Verzögerung 2 bis 3 Bildperioden.
Die Verzögerung
im Decodierer beträgt
1 bis 2 Bildperioden (wobei etwaige Nachverarbeitungsverzögerungen
nicht mitgezählt
werden). Der Codierer- und Decodiererpuffer führen jedoch eine signifikant
größere Verzögerung von
0,5 Sekunden ein. Die Gesamtcodeverzögerung beträgt also 0,65 bis 0,7 Sekunden.
-
I-Bilder
stellen etwa alle 0,4 Sekunden Zugangspunkte bereit. Beginnend mit
dem I-Bild können
die anderen Bilder in der GOP je nach Bedarf decodiert werden, um
das gewünschte
Bild aus dem Bitstrom zu erhalten.
-
Schnelles
Vorspulen und Rückspulen
freigegeben, indem man I-Bilder in regelmäßigen Abständen hat.
-
Die
Grundmerkmale der vorliegenden Unterbreitung wurden mit allen syntaktischen
Einzelheiten präsentiert.