-
Gebiet der Erfindung
-
Die vorliegende Erfindung bezieht
sich auf ein Verfahren und eine Vorrichtung zum Codieren von bewegten
Bildsequenzen. Insbesondere bezieht sich die vorliegende Erfindung
auf ein Verfahren und eine Vorrichtung für eine Bewegungsschätzung und eine
Bewegungskompensation in einem Videosignalkompressionssystem.
-
Ausgangspunkt
-
Verfahren zum Kodieren von bewegten
Bildern oder Video wie zum Beispiel die MPEG1, MPEG2, N.261 und
H.263 Standards wurden für
eine effiziente Übertragung
und Speicherung entwickelt. Eine detaillierte Beschreibung von einem
solchen Codierverfahren ist im MPEG2 Testmodell 5, ISO/IEC JTC1/SC29/WG11/N0400,
April 1993 zu finden. Bei dem beschriebenen Co-dierverfahren wird eine Eingangsvideosequenz
organisiert in eine Sequenzschicht, Gruppen von Bildern (GOP = Group-Of-Pictures),
Bilder, Scheiben bzw. Abschnitte, Makroblöcke und schlussendlich eine
Blockschicht. Jedes Bild ist gemäß seines
bestimmten Bildcodiertyps codiert. Die Bildcodiertypen bzw. -arten,
die verwendet werden, umfassen ein intracodiertes Bild (I-Bild (I-picture = intra-coded-picture)),
vorhergesagt-codiertes Bild (P-Bild (P-picture = predictive-coded
picture)), und bi-direktional vorhergesagt-codiertes Bild (B-Bild (B-picture =
bi-directionally predictive-coded picture)).
-
Eine Bewegungsschätzung/Kompensation, eine Transformationscodierung
und eine statistische Codierung werden verwendet, um die Eingangsvideosequenz
effizient zu komprimieren. Z. B. wird bei dem MPEG2 Testmodell 5
jedes Bild von der Eingangsvideosequenz in Reihen bzw. Zeilen kleinerer und
nichtüberlappender
Makroblöcke
der Bildelemente (Pixel) partitioniert. Makroblöcke in jeder Zeile bzw. Reihe
können
in eine oder mehrere Scheiben bzw. Abschnitte gruppiert werden.
Die Kompression wird an jedem Makroblock auf einer Reihe-zu-Reihe Basis
durchgeführt
und zwar ausgehend von dem am weitesten links liegenden Makroblock
zu dem am weitesten rechts liegenden Makroblock und der obersten
Reihe zur untersten Reihe.
-
Bei dem Bewegungsschätz-/Kompensationsverfahren
werden Bewegungsvektoren für
jeden Makroblock in einem Bild detektiert. Der Codiermodus für einen
Makroblock (z. B. intracodiert, vorwärts-vorhergesagt, nach hintenvorhergesagt,
oder interpoliert) wird ausgesucht, basierend auf den detektierten
Bewegungsvektoren und dem bestimmten Bildcodiertyp. Die verwendeten
Bewegungsvektoren werden mit Codes mit variabler Länge differenziell codiert
vor der Ausgabe.
-
Ein typischer Bewegungsvektor-Entscheidungsprozess
weist das Bestimmen für
jeden zu codierenden Makroblock eines Suchfensters auf, bestehend
aus Pixeln aus einem Bezugsbild und Zusammenpassen bzw. Abgleichen
von Pixelwerten des Makroblocks zu Blöcken von Pixelwerten, die sich
aus dem Suchfenster ergeben. Dieser Vorgang ist als sehr rechenintensiv
bekannt. Insbesondere besitzt die Größe des Suchfensters einen direkten Einfluss
auf die Berechnungsbelastung.
-
Viele Verfahren zum Abgleichen der
Pixelblöcke
sind verfügbar,
wie beispielsweise ein abschließendes
Suchverfahren, welches jeden definierbaren Block innerhalb des Suchfensters
vergleicht, einem logarithmischen Suchverfahren, einer hierarchischen
Suche und unterschiedlichen anderen möglichen Abwandlungen. In Abhängigkeit
von den Anwendungsanforderungen kann ein Suchverfahren ausgewählt werden,
basierend auf dessen Leistung hinsichtlich Genauigkeit und Rechenkomplexität.
-
Um für Sequenzen vorzusorgen, welche
große
Objektbewegungen zwischen den Bildern besitzen, bestehen Verfahren
zum Erhöhen
des Suchbereichs ohne Vergrößerung des
Suchfensters. Diese Verfahren sehen Bewegungsvektoren mit größerer Genauigkeit
für Bildsequenzen
mit großen
Bewegungen ohne einen großen
Anstieg der Rechenleistung vor. Ein solches Verfahren ist das Teleskop-Suchverfahren,
bei dem die Bewegungsvektoren von Makro blöcken aus einem zuvor codierten
oder angepassten Bild verwendet werden, um ein neues Suchfenster
für jeden
derzeitigen Makroblock zu erzeugen. Das Teleskop-Suchverfahren weist
die Schritte des Erhaltens eines Bewegungsvektors aus einem an derselben
Stelle liegenden Makroblock von einem nächstkommenden codierten Bild
auf; das optionale Skalieren des erhaltenen Bewegungsvektors gemäß den Bildabständen zwischen
dem Bezugsbild, dem am nächsten
liegenden codierten Bild und dem derzeitigen Bild; und das Definieren
des Suchfensters basierend auf der Mittelposition des derzeitigen
Makroblocks plus einer Versetzung, die durch den skalierten Bewegungsvektor
definiert ist, vor.
-
Alternative Verfahren zum Bestimmen
des Suchfensters sind in den US-Patenten
5,473,379 und 5,657,087 offenbart. Die darin beschriebenen Verfahren
weisen die Schritte des Berechnens eines globalen Bewegungsvektors
basierend auf den Bewegungsvektoren eines vorhergehenden Bildes
und das Versetzen der Suchfenster für alle Makroblöcke durch
den berechneten globalen Bewegungsvektor vor. Der globale Bewegungsvektor
kann bestimmt werden durch die Mittel- oder Medianfunktion, oder durch
den gebräuchlichsten
Bewegungsvektor des vorhergehenden Bildes; er kann ferner normalisiert werden
gemäß den Bildabständen. Der
berechnete globale Bewegungsvektor kann als eine globale Translationsbewegung
von Objekten von einem Bild zu dem anderen dargestellt werden.
-
Eine Vorrichtung welche die Bewegungsschätzung implementiert,
kann eine Sucheinheit bzw. Suchmaschine (search engine) umfassen
zum Durchführen
des Vergleichs der derzeitigen Makroblockpixel mit Kandidatpixelblöcken von
dem Suchfenster. Eine beispielhafte Implementierung einer geeigneten
Sucheinheit ist ein systolischer Vektorrechner bzw. -prozessor,
der die Summe der absoluten Differenz des derzeitigen Makroblocks
mit allen Kandidatblöcken
berechnet und vergleicht. Ein Suchfenster Cache ist mit der Sucheinheit
gekoppelt, um die große
Eingangsdatenbandbreitenanforderung der Sucheinheit zu erhalten
bzw. aufrecht zu erhalten. Der Suchfenster Cache wird über ein
DMA mit dem neuen Suchfenster für
jeden Makroblock auf den neuesten Stand gebracht und zwar von einem langsameren
aber größeren Frame-
bzw. Bildspeicher, in dem das Bezugsbild gespeichert ist. Ein programmierbarer
oder eine feste Funktion aufweisender Controller mit einem notwendigen
RAM oder ROM wird verwendet, um die Suchfenster zu bestimmen, den
DMA Update des Cache mit dem Suchfenster zu steuern, sowie um die
Sucheinheit für
resultierende Bewegungsvektoren zu überwachen.
-
Um die Bandbreite zwischen dem Cache
und Rahmenspeicher zu minimieren, ist der Suchfenster Cache so aufgebaut,
dass der überlappende
Bereich von einem Suchfenster und dem nächsten maximiert ist. Während eine
Reihe von Makroblöcken
von links nach rechts verarbeitet wird, wird jeweils nur der am meisten
rechts liegende Teil des Suchfensters für jeden Makroblock in den Suchfenster
Cache geladen.
-
In einigen Fällen kann die Größe der Bildbewegung
von einem Rahmen bzw. Frame zum nächsten Frame sehr groß sein,
insbesondere wenn das Referenzbild um zwei oder mehr Frames in der
Sequenz von dem Ausgangsbild beabstandet ist. Jedoch würde das
Erhöhen
der Größe des Suchfensters
für eine
bessere Anpassung der großen
Bewegungsgröße die Implementierungskomplexität und den
Leistungsverbrauch eskalieren lassen.
-
Das zuvor genannte Teleskop-Suchverfahren
expandiert den möglichen
Suchbereich durch Neudefinition der Suchfensteranordnung für jeden Makroblock.
Dieses Verfahren besitzt Probleme in Bildregionen mit unkorrelierter
Bewegung, bei denen das Suchfenster vergrößert werden muss, um die nicht
korrekt definierte Suchfensteranordnung in Betracht zu ziehen. Hinsichtlich
der Implementierung erhöht
der expandierte mögliche
Suchbereich die Anforderung hinsichtlich der Suchfenster Cachegröße und auch
die Bandbreitenanforderungen zwischen dem Suchfenster Cache und
dem Frame Speicher. Dies ist der Fall, da der Suchfenster Cache
Daten von allen möglichen
Orten des Suchfensters für
den nächsten
Makroblock speichern muss.
-
Verfahren, welche den globalen Bewegungsvektor
verwenden, wie in den US-Patenten 5,473,379
und 5,657,087 beschrieben sind, können verwendet werden zum Minimieren
der Suchfenster Cachegröße sowie
der Bandbreitenanforderungen des Frame Speichers, während der
tatsächliche Suchbereich
ausgedehnt wird. Diese Verfahren fixieren den Versatz des Suchfensters
für alle
Makroblöcke
in einem Bild. Da jedoch nur ein einzelner globaler Bewegungsvektor
verwendet wird, um alle Makroblocksuchfenster zu versetzen, arbeitet
die Suchbereichsausdehnung nur mit Bildern gut, welche eine gleichförmige Translationsbewegung
enthalten. Bilder mit Zoomen, Rotationsbewegung und Share-Effekten
können
z. B. nicht gut mit dieser Technik gehandhabt werden.
-
Schlussendlich werden alle detektierten
und verwendeten Bewegungsvektoren differenziell codiert mit Codes
mit variabler Länge
(VLC = variable length codes) zum Reduzieren der Codierbitrate.
Das Expandieren bzw. Ausdehnen des Suchbereichs kann größere Bewegungsvektoren
erzeugen, welche größere VLC-Tabellen
erfordern, welche auf dem Bildniveau ausgewählt werden zum Codieren der
Bewegungsvektoren. Dies führt
wiederum dazu, dass die Bitrate für die Bewegungsvektorcodierung
erhöht wird.
-
JP
09 163380 beschreibt eine Bildcodiervorrichtung und ein
Bewegungsvektor-Detektierverfahren.
-
Die Erfindung
-
Gemäß der vorliegenden Erfindung
ist ein Verfahren zum Bestimmen von Bewegungsvektoren für das Codieren
von Bilddaten in einer Sequenz von Bildern gemäß Anspruch 1 vorgesehen.
-
Die vorliegende Erfindung sieht auch
einen Codierer für
bewegte Bilder zum Codieren einer Sequenz von Bildern wie im Anspruch
13 beansprucht vor.
-
Ein Ausführungsbeispiel der vorliegenden Erfindung
verwendet einen lokalen Bewegungsschätzer, der einen lokalen Bewegungsvektor
für jede
Reihe von Makroblocks in einem zu codierenden Bild bestimmt. Der
lokale Bewegungsschätzer
kann die lokalen Bewegungsvektoren bestimmen, basierend auf detektierten
Bewegungsvektoren von den entsprechenden Makroblockreihen eines
zuvor verarbeiteten oder codierten Bildes. Jeder bestimmte lokale
Bewegungsvektor sieht eine Versetzung für Suchfenster aller Makroblöcke in einer
vorgegebenen Reihe vor. Die lokalen Bewegungsvektoren passen sich
besser an Bewegungsvariationen innerhalb eines Bildes an und ermöglichen
eine Expansion des effektiven Suchbereichs des Bewegungsschätzers ohne
ein Vergrößerung der
Suchfenstergröße.
-
Bei dem bevorzugten Ausführungsbeispiel definiert
jeder lokale Bewegungsvektor einen festgelegten Versatz für alle Suchfenster
innerhalb einer Makroblockreihe, und daher bleiben die Größen des Lachens
bzw. Zwischenspeicherns und das auf den neuesten Standbringen bzw.
des Updatens des Lache von einem Makroblock zum nächsten innerhalb der
Reihe konstant unter der Voraussetzung, dass die Suchfenstergröße auch
festgelegt ist. Dies ist besonders vorteilhaft, da die Cachegröße sowie
die Bandbreitenanforderungen zum auf den neuesten Standbringen des
Lache an diesem Punkt am höchsten
sind. Infolge der reduzierten Suchfenstergrößen für Makroblöcke in der Nähe der am
meisten links und rechts liegenden Seiten der Reihe werden die Caching
bzw. Zwischenspeicheranforderungen und die Bandbreitenanforderungen
für das
auf den neuesten Standbringen des Lache im Mittel reduziert, wenn
sich der Schätzvorgang
von einer Makroblockreihe zur nächsten
bewegt. Daher können
die Cachegröße und die
Bandbreitenanforderungen zum auf den neuesten Standbringen des Lache
optimiert werden, basierend nur auf der Suchfenstergröße selbst.
-
Zusätzlich kann ein maximaler Versatzvektor mit
dem bestimmten Satz von lokalen Bewegungsvektoren für ein zu
codierendes Bild bestimmt werden. Der maximale Versatzvektor kann
das Maximum der Absolutwerte der Horizontalund Vertikalkomponenten
von dem Satz von lokalen Bewegungsvektoren sein. Durch Kombinieren
des maximalen Versatzvektors und der Suchfenstergröße wird
die maximal mögliche
Bewegungsvektorgröße bestimmt, und
daher kann eine entsprechende VLC-Tabelle zum Codieren von Bewegungsvektoren
für das
Bild ausgewählt
werden. In diesem Fall kann die Auswahl der VLC-Tabellen, welche
für unterschiedliche
maximale mögliche
Bewegungsvektoren optimiert sind, adaptiv gemacht werden und zwar
gemäß der Bewegungsgröße von Bild
zu Bild.
-
Ein Bildsequenzcodierer gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung codiert jedes Eingangsbild durch Bestimmen
seines Bildcodiertyps (I-, P-, oder B-Bild), Erhalten von Makroblöcken von
dem Bild, Aussetzen der Makroblöcke
eines P-Bildes oder B-Bildes einem Bewegungsvektordetektierprozess
(Frame und/oder Feld vorwärts und/oder
rückwärts) unter
Verwendung eines lokalen Bewegungsschätzers, Durchführen der
notwendigen Bewegungskompensation (vorhergesagt (predicted) oder
interpoliert) unter Verwendung der detektierten Bewegungsvektoren
aller Makroblöcke
an einen Transformationscodierer gefolgt durch einen statistischen
Codierer. Der lokale Bewegungsschätzer wird auf den neuesten
Stand gebracht mit Bewegungsvektoren von den zuletzt bearbeiteten
Bildern durch den Bewegungsvektordetektor. Die Bewegungsvektoren
werden verwendet zum Erzeugen eines lokalen Bewegungsvektors für jede Reihe
von Makroblöcken in
einem neuen zu codierenden Bild. Die erzeugten lokalen Bewegungsvektoren
werden verwendet zum Versetzen von Suchfenstern von allen Makroblöcken in
der entsprechenden Makroblockreihe.
-
Ausführungsbeispiele der vorliegenden
Erfindung sind in der Lage, ein verbessertes Bildsequenzcodierverfahren
oder eine Vorrichtung vorzusehen, welche einen Bewegungsschätzer mit
einem ausgedehnten Suchbereich und einem minimierten Suchfenster
enthält.
Ferner können
Ausführungsbeispiele
der Erfindung eine Vorrichtung zum Codieren einer Bildsequenz vorsehen,
die einen Bewegungsschätzer
umfasst mit optimierter Suchfenster Cachegröße und optimierten Framezwischenspeicher
(frame buffer memory)-Bandbreitenanforderungen.
Die zuvor beschriebenen Ausführungsbeispiele der
Erfindung ermöglichen
ein effizientes Verfahren für
die Bewegungsvektorencodierung.
-
Kurze Beschreibung
der Zeichnungen
-
Die Erfindung wird in größerer Einzelheit nachfolgend
anhand eines Beispiels durch die folgende Beschreibung bevorzugter
Ausführungsbeispiele
derselben und unter Bezugnahme auf die Zeichnungen beschrieben,
in den Zeichnungen zeigt:
-
1 ein
Funktionsblockdiagramm eines Videocodierers mit einem lokalen Bewegungsschätzer gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung:
-
2 eine
Vorwärts-
und Rückwärtsbewegungsvektordetektierung
für B-Bilder und P-Bilder gemäß der vorliegenden
Erfindung;
-
3 eine
Illustration darüber,
wie ein Suchfenster durch einen lokalen Bewegungsvektor innerhalb
eines Referenzbildes definiert wird, und zwar gemäß der vorliegenden
Erfindung; und
-
4 ein
Blockdiagramm einer Schaltung zum Implementieren des Bewegungsvektordetektors und
des lokalen Bewegungsschätzers
als Teil einer Codiersystemvorrichtung für bewegte Bilder gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung.
-
Detaillierte
Beschreibung der bevorzugten Ausführungsbeispiele
-
Ein Blockdiagramm eines Bildsequenzcodierers
gemäß einem
bevorzugten Ausführungsbeispiel der
vorliegenden Erfindung ist in 1 dargestellt. Eine
Bewegbildsequenz, die die Form eines Videosignals besitzen kann,
wird in einen Framebuffer bzw. Rahmenzwischenspeicher (A) 101 für Neuordnungsund
Prozessanforderungen (z. B. Raster zu Makroblockumwandlung) eingegeben.
Die Bewegbildsequenz kann vor der Eingabe vorprozessiert sein. Nützliche
Vorprozessiertechniken können
eine Rauschreduktion, eine Inversete lecine- bzw. Fernsehfilmbearbeitung,
und eine Chroma- bzw. (Farb-) Tonunterabtastung umfassen.
-
Ein Bildcodiertyp (I-, P- oder B-Bild)
wird bestimmt unter Verwendung bekannter Verfahren entsprechend
den Anwendungsnotwendigkeiten für
jedes Bild in der Eingangsbildsequenz. Ein I-Bild ist ein intracodiertes
Bild, das hauptsächlich
für einen
freien Zugriff oder ein auf den neuesten Standbringen einer Szene
verwendet wird, ein P-Bild verwendet eine nach vorne gerichtete
Bewegungsvorhersagecodierung mit Bezugnahme auf ein zuvor codiertes
I-oder P-Bild (Ankerbild),
und ein B-Bild verwendet eine vorwärts gerichtete und nach hinten
gerichtete Bewegungsvorhersage/Interpolationscodierung mit Bezugnahme
auf zuvor codierte I- und/oder P-Bilder. Eine Eingangsbildsequenz
kann entweder eine feld- oder rahmen- bzw. framestrukturierte Sequenz
sein, die von einer Zwischenzeilen- bzw. einer Teilbild- oder einer
fortschreitenden Quelle stammt. Makroblöcke, die Blöcke von Pixelwerten enthalten,
werden von einem zu codierenden Bild abgeleitet, und zwar von Bilddaten,
die in dem Framebuffer bzw. Bildspeicher (A) 101 gespeichert
sind. Die Makroblöcke
werden auf einer Reihen-auf Reihenbasis abgeleitet und zwar beginnend
mit dem am Weitesten links liegenden Makroblock zu dem am Weitesten
rechts liegenden Makroblock und von der obersten Reihe zu der untersten
Reihe. Makroblöcke,
die zu einem I-Bild gehören,
werden direkt zu einem Transformationscodierer 105 weitergeleitet,
während
Makroblöcke,
die zu einem P-Bild
oder B-Bild gehören,
zu einem Bewegungsvektordetektor 102 weitergeleitet werden. Es
ist auch möglich,
die Makroblöcke,
die zu einem I-Bild gehören,
dem Bewegungsvektordetektor 102 auszusetzen zur Erzeugung
von Fehlerverdeckungsbewegungsvektoren, wie es in dem MPEG 2 Standard
definiert ist.
-
Alle notwendigen Bewegungsvektoren,
z. B. die Frame und/oder Feld, vorwärts und/oder rückwärts und
16 × 16/16 × 8/8 × 8 Bewegungsvektoren jedes
Makroblocks werden durch den Bewegungsvektordetektor 102 detektiert
durch Anpassen bzw. Angleichen des Makroblocks an Kandidatblöcke, die aus
einem Suchfenster erhalten werden, das von einem Referenzbild erhalten
wird, das in einem Framebuffer bzw. Bildspeicher (B) 103 gespeichert
ist. Unterschiedliche Anpassungsverfahren, wie z. B. das umfassende
Suchverfahren, das logarithmische Suchverfahren, das Mehrschritt-
oder hierarchische Suchverfahren und unterschiedliche Suchfenstergrößen können in
dem Bewegungsvektordetektor 102 verwendet werden, abhängig von
der Anwendung sowie den Implementierungserfordernissen. Anpassungsverfahren
können
auch mit unterschiedlichen Pixelauflösungen implementiert werden,
z. B. ganzzahlig, Halbpixel- oder Viertelpixelauflösung. Das
Anpassungskriterium kann basieren auf dem Minimum der absoluten
Fehler, dem Quadrat der Fehler, oder anderen geeigneten Verzerrungsfunktionen.
Zusätzlich
können
Verfahren zum Überprüfen benachbarter Makroblockbewegungsvektorkorrelationen
verwendet werden. Einzelheiten unterschiedlich beschriebener Anpassungsverfahren
und Anpassungskriterien welche in Verbindung mit den Ausführungsbeispielen der
vorliegenden Erfindung verwendet werden können, sind bekannt und werden
sich dem Fachmann leicht ergeben.
-
Der Bewegungsvektordetektor 102 ist
mit einem Bewegungskompensationsprozessor 104 gekoppelt.
In dem Bewegungskompensationsprozess 104 wird zunächst ein
Makroblockcodiermodus, der intracodiert, Frame/Feld vorwärts/rückwärts vorhergesagt,
oder Frame/Feld interpoliert sein kann, ausgewählt für jeden Makroblock basierend
auf den detektierten Bewegungsvektoren von dem Bewegungsvektordetektor 102.
Jegliche notwendigen Schätzfehler
werden dann basierend auf dem ausgewählten Makroblockcodiermodus
erzeugt. Ein beispielhaftes Makroblockcodiermodus-Entscheidungsverfahren
ist in den MPEG 2 Testmodell 5 Spezifikationen zu finden.
-
Die sich ergebenden Makroblöcke von
dem Bewegungskompensationsprozess 104 werden einem Transformationscodierer 105 ausgesetzt,
welcher eine Korrelation innerhalb jedes Makroblocks und auch seine
psychovisuellen Effekte ausnutzt bzw. verwertet. Beispiele von populären Transformationscodierern
sind in den MPEG 1, MPEG 2, N.261 und H.263 Standards zu finden.
Ein Ausführungsbeispiel
eines Transformationscodierers 105 gemäß dem MPEG2 Testmodell 5 umfasst
eine diskrete Kosinustransformation (DCT), ei nen Quantisierer, einen Ratencontroller
mit adaptiver Quantisierung, einen Inversquantisierer und eine Invers-DCT.
Der Transformationscodierer 105 erzeugt transformierte
und quantisierte Koeffizienten für
jeden Makroblock welche einem statistischen Codierer 106 ausgesetzt werden.
Zusätzlich
werden die transformierten und quantisierten Koeffizienten invers
quantifiziert und invers transformiert durch den Transformationscodierer 105,
um rekonstruierte Makroblöcke
zu produzieren. Vor dem Speichern der rekonstruierten Makroblöcke in den
Framebuffer bzw. Bildspeicher (B) 103 für zukünftige Bezugnahme wird jegliche
notwendige Invers- oder Bewegungskompensation für jeden rekonstruierten Makroblock
vorgesehen durch den Bewegungskompensationsprozess 104.
Bezugsbilder werden gebildet durch die rekonstruierten Makroblöcke zur
Verwendung in dem Bewegungsvektordetektor 102 und dem Bewegungskompensationsprozess 104.
In einigen Anwendungen oder Codierfällen können die Eingangsbilder direkt
als Bezugs- oder Referenzbilder für den Bewegungsvektordetektor 102 genommen
werden.
-
Der statistische Codierer 106 verwertet
alle statistischen Redundanzen in den empfangenen Daten bzw. nutzt
diese aus und multiplext die Ergebnisse zum Erzeugen des schlussendlichen,
komprimierten Ausgangsbitstromes. Als ein Beispiel verwendet der
statistische Codierer 106 in dem MPEG2 Testmodell 5 das
Zick-Zack-Scannen und Lauflängencodieren
der transformierten und quantifizierten Koeffizienten, das Differentialcodieren
der verwendeten Bewegungsvektoren und das Multiplexen aller Ergebnisse und
notwendiger Seiteninformation (z. B. Sequenz/GOP/Bild/Slice bzw.
Schnitt/Makroblockschicht, Headerinformation, Bildcodiertypen, Makroblockcodiermodii,
usw.). Der statistische Codierer 106 verwendet Codes mit
variabler Länge
(VLC = variable length codes) von VLC Tabellen 110.
-
Ein lokaler Bewegungsschätzer 107 bestimmt
einen lokalen Bewegungsvektor für
jeden Reihe von Makroblöcken
aus einem Eingangsbild. Bei einem Ausführungsbeispiel des lokalen
Bewegungsschätzers 107 werden
Bewegungsvektoren von derselben Makroblockreihe eines Bildes, wie
sie durch den Bewegungsvektordetektor 102 detektiert wurden,
Bemittelt zum Erzeugen des lokalen Bewegungsvektors für die entsprechende
Makroblockreihe eines neuen Eingangsbildes. Alternativ kann der
Medianbewegungsvektor oder der am häufigsten vorkommende Vektor
ausgewählt
werden statt des durchschnittlichen, um als lokaler Bewegungsvektor ausgegeben
zu werden. Weitere Verfahren zum Erzeugen des lokalen Bewegungsvektors
jeder Makroblockreihe gemäß der vorliegenden
Erfindung sind möglich
mit Bewegungsvektoren von benachbarten (oberen oder unteren oder
zusätzlichen
Nachbarbild) Makroblockreihen oder mit unabhängigen Reihenbewegungsdetektoren;
es kann aber nur einen geringen oder überhaupt keinen Implementierungsvorteil hierfür geben.
Jeder erzeugte lokale Bewegungsvektor kann gemäß den involvierten Bildabständen normalisiert
werden.
-
2 illustriert
ein Beispiel wie lokale Bewegungsvektoren (MV) erzeugt werden können unter Verwendung
von Ergebnissen einer vorhergehenden Vorwärts- und/oder Rückwärtsbewegungsvektordetektierung
gemäß der vorliegenden
Erfindung. Bei diesem Beispiel befinden sich zwei B-Bilder 202 und 203 (B1
bzw. B2) zwischen zwei Anker I oder P-Bildern 201 und 204.
Die Bilder sind in ihrer Anzeigereihenfolge gezeigt und repräsentieren
einen kleinen Teil einer Eingangsbildsequenz. Eine Vorwärts-MV-Detektierung
wird für
das Bild 202 (B1), 203 (B2) und 204 (P)
durchgeführt,
repräsentiert durch
B1-Vorwärts 206,
B2-Vorwärts 207 bzw.
P-Vorwärts 208.
In gleicher Weise wird eine Rückwärts-MV-Detektierung
durchgeführt
für das
Bild 202 (B1) und 203 (B2) und eine Vorwärts-MV-Detektierung
für das
Bild 201 (I/P) bezüglich
eines vorhergehenden Referenzbildes, was dargestellt ist durch vorhergehendes
I/P-Vorwärts 216.
Die Makroblockreihen 211, 212, 213 und 214 repräsentieren
Makroblockreihen derselben Vertikalposition oder Reihenzahl in den
Bildern 201, 202, 203 bzw. 204.
-
Es ist zu bevorzugen, dass ein lokaler
MV für die
Verwendung für
zukünftige
MV-Detektierung erzeugt wird durch Bewegungsvektoren von einem sehr
naheliegenden Bild. Z. B. kann ein lokaler MV zur Verwendung in
B2-Vorwärts 207 der
Makroblockreihe 213 erzeugt werden durch Bewegungsvektoren,
die sich aus B1-Vorwärts 206 für die Reihe 212 ergeben.
Unter Bezugnahme auf
-
2 fasst
die folgende Tabelle die Auswahl der Bewegungsvektoren für die lokale
MV-Erzeugung als eines von vielen möglichen Ausführungsbeispielen
des lokalen Bewegungsschätzers
gemäß der vorliegenden
Erfindung zusammen.
Lokaler
MV zur Verwendung in: | mit
lokalem MV erzeugt durch MVS ergeben aus: |
B1-Vorwärts 206 | vorhergehend
I/P-Vorwärts
216 oder vorhergehend B2-Rückwärts 215 |
B2-Vorwärts 207 | B1-Vorwärts 206 |
P-Vorwärts 208 | B2-Vorwärts 207 |
B2-Rückwärts 209 | B2-Vorwärts 207
oder P-Vorwärts
208 |
B1-Rückwärts 210 | B2-Rückwärts 209
oder B1-Vorwärts
206 |
-
Die sich ergebenden lokalen Bewegungsvektoren
werden in einem lokalen MV-Speicher 108, der in 1 dargestellt ist, gespeichert.
Wenn sie verfügbar
sind, werden die lokalen Bewegungsvektoren durch den Bewegungsvektordetektor 102 herausgezogen
zum Versetzen der Suchfenster der entsprechenden Makroblockreihen.
Ein optionaler maximaler Suchbereichsdetektor 109 kann
gemäß der vorliegenden
Erfindung verwendet werden zum Bestimmen der maximalen horizontalen
und vertikalen Suchbereiche aller Bewegungsvektoren eines Bildes,
so dass optimale VLCs aus den VLC-Tabellen 110 verwendet
werden können
zum Codieren von Bewegungsvektoren in dem statistischen Codierer 106.
Der maximale Suchbereich, der unabhängig für Horizontal- und Vertikalbewegung
definiert wird, ist der maximale Bereich aller lokaler Bewegungsvektoren
für ein
Bild plus dem maximalen Bereich des Suchfensters für das Bild.
Mit dem maximalen Suchbereichsdetektor 109 können kürzere VLCs
oder kürzere
Bitraten verwendet werden zum Codieren von Bewegungsvektoren für eine Sequenz
von Szenen mit geringer Bewegung und die VLCs und VLC-Tabellen werden
adaptiv ausgeweitet, wenn die Bewegung innerhalb der Sequenz oder
den Szenen größer wird.
Die maximale Suchbereichsinformation kann auf der Bildebene codiert
oder übertragen
wer den. Verfahren für
die VLC-Codierung von Bewegungsvektoren sind in dem MPEG2 Standard
zu finden.
-
In 3 ist
der Vorgang zur Bestimmung eines Suchfensters unter Verwendung eines
lokalen MV dargestellt. Ein Suchfenster für einen derzeitigen Makroblock
(MB), der codiert werden soll, wird bestimmt aus einem Referenzbild 301 in
dem zunächst die
Position eine auf gleicher Stelle liegenden MB 302 an dem
Referenzbild 301 bestimmt wird. Die Position wird dann
durch den lokalen Bewegungsvektor 303, der für die Makroblockreihe
erzeugt wurde, versetzt, wobei der derzeitige MV zu einer neuen
Versatz-MB-Position 304 gehört, wie dargestellt ist, Schlussendlich
werden die horizontalen und vertikalen Suchbereiche eingeschlossen,
und zwar zentriert um die Versatz-MB-Position 304 zum Bilden des Suchfensters 305 für den derzeitigen
MB. Das Suchfenster 305 wird dann verwendet für die Bewegungsvektordeteküerung für den derzeitigen
MB.
-
4 zeigt
ein Blockdiagramm einer Schaltung, die verwendet werden kann zum
Implementieren des Bewegungsvektordetektors und des lokalen Bewegungsschätzers als
Teil einer Bewegt-Bildcodiersystemvorrichtung gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung. Typischerweise werden das Eingangsbild
und das Referenzbild in einem großen Framebuffer bzw. Bildspeicher 405 gespeichert,
der implementiert werden kann unter Verwendung eines DRAM (dynamischer
Zufallszugriffsspeicherldynamic random access memory). Ein Gontroller 401,
der ein Mikroprozessor, ein Digitalsignalprozessor (DSP) oder ein
Sequenzen bzw. eine Ablaufsteuerung mit fester Funktion sein kann,
wird verwendet zum Steuern eines DMA (Direktspeicherzugriffscontrollerldirect
memory access controller) 404 zum Zugreifen auf den Framebuffer
bzw, Bildspeicher 405. Instruktionscodes, die für den Controller 401 erforderlich
sind, können
in einem Instruktions-ROM (nur Lesespeicher/read only memory) 402 gespeichert
sein.
-
Ein derzeitiger zu codierender MB
wird bestimmt und in eine Sucheinheit bzw. Suchmaschine 407 geladen
durch den Controller 401 und DMA 404. Der Controller
erhält
einen zuvor bestimmten lokalen Bewegungsvektor für die entsprechende Makroblockreihe
aus Daten in einem RAM 403. Unter Verwendung des bestimmten
lokalen Bewegungsvektors definiert der Controller ein Suchfenster
und überträgt die entsprechenden
Daten von einem Referenzbild, das indem Framebuffer bzw. Bildspeicher 405 gespeichert
ist an ein Suchfenster Cache 406 unter Verwendung des DMA 404.
Angenommen, dass ein lokaler Bewegungsvektor für die gesamte Makroblockreihe
verwendet wird und die Suchfenstergröße gemäß den Anwendungs- oder Implementierungserfordernissen
festgelegt ist, muss für
nachfolgende MBs nur ein Teil des definierten Suchfensters in den Suchfenster
Cache 406 geladen werden. Der Rest des definierten Suchfensters überlappt
mit dem Suchfenster des vorhergehenden MB und ist daher schon in
dem Suchfenster Cache 406 gespeichert.
-
Mit dem derzeitigen MB führt die
Sucheinheit bzw. Suchmaschine 407 eine Bewegungsvektordetektierung
durch, basierend auf den Suchfensterdaten in dem Suchfenster Cache 406.
Die Suchmachine 407 kann implementiert sein zur Duchführung spezieller
Suchverfahren, wie z. B. das abschließende Suchverfahren oder das
mehrschritt-/mehrauflösungshierarchische
Suchverfahren oder spezifische Suchkriterien, wie z. B. die Verwendung
der minimalen Summe von Quadratfehlern oder absoluten Fehlern. Eine
systolische Vektorrechnerarchitektur kann in der Suchmaschine 407 verwendet
werden, um die Rechenleistungsanforderungen zu erfüllen. Die Suchmaschine 407 sieht
als Ausgabe alle detektierten Bewegungsvektoren für den Controller 401 vor. Zusätzlich werden
die Ergebnisse der Suchkritieriumberechnung (minimale Quadratfehler,
absolute Fehler usw.) für
den Makroblockcodiermodusentscheidungsprozess vorgesehen an dem
Ende einer Reihe bestimmter Controller 401 einem lokalen
Bewegungsvektor unter Verwendung der Ausgangsbewegungsvektoren für jede Makroblockreihe
und speichert den lokalen Bewegungsvektor in den Daten RAM 403 für zukünftige Verwendung.
-
Aus der vorhergehenden Beschreibung
ergibt sich, dass Ausführungsbeispiele
der vorliegenden Erfindung ein verbessertes Verfahren und eine Vorrichtung für die Bewegungsvektordetektierung vorsehen.
Ein lokaler Bewegungsschätzer
wird verwendet um besser die Bild-zu-Bildbewegung vorherzusagen,
die nicht nur aus einer Translationsbewegung, sondern aus einer
Zoom-, einer Share- bzw. Sprung- oder Splitscreen-Bewegung besteht.
Die bessere Vorhersage der Bild-zu-Bildbewegung erlaubt die Verwendung
kleinerer Suchfenster zum Berechnen individueller Makroblockbewegungsvektoren
und ermöglicht
daher eine Reduzierung der Rechenlast und der Implementierungskomplexität. Mit einem
festgelegten lokalen Bewegungsvektor (fester Versatz) für jede Makroblockreihe
kann die Suchfenster Cache Größe minimiert
werden auf nur die Suchfenstergröße. Darüber hinaus
wird das auf den neuesten Standbringen des Suchfenster Caches auch
minimiert und somit ergibt sich eine Reduzierung der Speicherzugriffsbandbreite.
Diese Ergebnisse sehen eine zusätzliche
Reduzierung der Implementierungskomplexität vor.
-
Die vorliegende Erfindung erlaubt
ferner, dass maximale Horizontal- und Vertikal-Bewegungssuchbereiche
adpativ bestimmt werden unter Verwendung der lokalen Bewegungsvektoren.
Dieses Verfahren sieht einen effizienten Weg zum Codieren von Bewegungsvektoren
unter Verwendung von Codes mit variabler Länge vor. Sequenzen oder Szenen mit
geringer Bewegung werden besser codiert mit einer Bewegungsvektorbitratenreduzierung
während andererseits
die Bewegungssektorbitrate erhöht wird,
um größere Bewegung
innerhalb einer Sequenz oder Szenen zu handhaben.
-
Die vorhergehende detaillierte Beschreibung der
Ausführungsbeispiele
der vorliegenden Erfindung wurde nur anhand eines Beispiels dargestellt und
ist nicht dazu gedacht, die Erfindung, die durch die nachfolgenden
Ansprüche
definiert wird, einzuschränken.