-
Die
vorliegende Erfindung betrifft Multimedia-Anwendungen und insbesondere
die Anzeige von Videoanwendungen mit einer erhöhten Video-Framerate.
-
Während die Übertragungsbandbreitenrate über Computernetzwerke
hinweg immer größer wird, wächst die
zu übertragende
Datenmenge sogar noch schneller. Computerbenutzer möchten mehr
Daten in einem gleichwertigen oder kürzeren Zeitrahmen senden und
empfangen können.
Die gegenwärtigen Bandbreitenbeschränkungen
begrenzen diese Fähigkeit
zum Empfang von mehr Daten in kürzerer Zeit,
da sich Daten und Zeit in einer Computernetzwerkumgebung im Allgemeinen
umgekehrt proportional verhalten. Ein bestimmter über verschiedene Computernetzwerke übertragener
Datentyp ist ein durch eine Serie von Frames repräsentiertes
Videosignal. Die Bandbreitenbeschränkungen begrenzen auch die
Framerate eines über
ein Netzwerk übertragenen
Videosignals, was wiederum die temporale Bildqualität des auf
der Empfangsseite produzierten Videosignals mindert.
-
Durch
die Anwendung von Echtzeit-Frameinterpolation auf ein Videosignal
wird die Wiedergaberate des Signals erhöht, was wiederum zu einer besseren
Bildqualität
führt.
Ohne eine Erhöhung
der Netzbandbreite zu erfordern, ermöglicht die Frameinterpolation
eine Erhöhung
der Framerate eines Videosignals durch Einfügen neuer Frames zwischen die über das
Netzwerk empfangenen Frames. Bei der Anwendung der gegenwärtigen Echtzeit-Frame-Interpolationsverfahren
auf ein komprimiertes Videosignal kommt es jedoch zum Einfügen von
signifikanten Interpolationsartefakten in die Videosequenz. Aus
diesen und anderen Gründen
besteht daher ein Bedarf an der vorliegenden Erfindung.
-
Die
EP-A-0386805 beschreibt eine Dekodiervorrichtung für ein Fernsehsignal
mit Bewegungsinformationen in Digitaldatenform und Bereitstellung
der Interpolation gesteuert von Bewegungsvektoren für in Kategorien
relativer Bewegung eingeteilte Blöcke.
-
Ausführungsformen
der vorliegenden Erfindung sind in den beigefügten Ansprüchen dargelegt.
-
Bei
einer Ausführungsform
umfasst ein Verfahren die Auswahl einer Anzahl von Blöcken eines Frame-Paares
und die Synthetisierung eines interpolierten Frames auf der Basis
dieser aus dem Frame-Paar ausgewählten
Blöcke.
Außerdem
wird die Synthese des Interpolations-Frames abgebrochen, wenn festgestellt
wird, dass der Interpolations-Frame von unannehmbarer Qualität ist.
-
Bei
einer weiteren Ausführungsform
umfasst ein Verfahren die Auswahl einer Blockgröße auf der Basis eines Aktivitätsniveaus
für einen
aktuellen Frame und einen vorherigen Frame und die Synthetisierung
eines Interpolations-Frames
auf der Grundlage der für
diese beiden Frames ausgewählten
Blockgröße.
-
Bei
einer weiteren Ausführungsform
umfasst ein Verfahren die Führung
einer Anzahl von Listen, von denen jede einen aktuellen Gewinnblock
enthält, für eine Anzahl
von Interpolationsblöcken
eines Interpolations-Frames zur Ermittlung eines am besten passenden
Blocks aus einem Frame-Paar
für die
einzelnen Interpolationsblöcke.
Zusätzlich
wird der am besten passende Block für die einzelnen Interpolationsblöcke aus
dem aktuellen Gewinnblock der einzelnen Listen nach einem Fehlerkriterium
und einem Überlappungskriterium
ausgewählt.
Der Interpolations-Frame wird auf der Basis des am besten passenden
Blocks für
die einzelnen Interpolationsblöcke synthetisiert.
-
Bei
einer weiteren Ausführungsform
umfasst ein Verfahren die Auswahl eines Nullbewegungsvektors für ein gegebenes
Pixel im Interpolations-Frame, wenn ein dem gegebenen Pixel im Interpolations-Frame
entsprechendes aktuelles Pixel in einem aktuellen Frame ermittelt
wird, das als abgedeckt oder unabgedeckt klassifiziert wird. Der
Interpolations-Frame wird auf der Basis des Nullbewegungsvektors
für das
gegebene Pixel im Interpolations-Frame synthetisiert, wenn das dem
gegebenen Pixel im Interpolations-Frame entsprechende aktuelle Pixel im
aktuellen Frame als abgedeckt oder unabgedeckt ermittelt wird.
-
Bei
einer weiteren Ausführungsform
umfasst ein Verfahren die Klassifizierung einer Anzahl von Pixeln
in einem aktuellen Frame als eine aus einer Anzahl von unterschiedlichen
Pixelklassifizierungen zur Synthese eines Interpolations-Frames. Die Synthese des
Interpolations-Frames wird abgebrochen und der vorherige Frames
wiederholt, wenn anhand der Zuweisung der Anzahl von Pixeln im aktuellen
Frame festgestellt wird, dass der Interpolations-Frame von unannehmbarer
Qualität
ist.
-
Bei
einer weiteren Ausführungsform
umfasst ein Verfahren die Auswahl eines besten Bewegungsvektors
für jeden
aus einer Anzahl von Blöcken
für einen
hypothetischen Interpolations-Frame,
der sich zeitlich zwischen einem aktuellen und einem vorherigen
Frame befindet. Der beste Bewegungsvektor wird für jeden aus der Anzahl von
Blöcken
für einen hypothetischen
Interpolations-Frame für
eine Anzahl von Interpolations-Frames im relativen Abstand der Anzahl
an Interpolations-Frames vom aktuellen Frame skaliert. Die Anzahl
von Interpolations-Frames wird auf der Basis des besten Bewegungsvektors
für die
einzelnen Blöcke
innerhalb der Anzahl von Interpolations-Frames synthetisiert.
-
KURZBESCHREIBUNG
DER ZEICHNUNGEN
-
1 zeigt
ein Blockdiagramm eines Systems entsprechend einer erfindungsgemäßen Ausführungsform.
-
2 zeigt
ein Blockdiagramm einer Frameinterpolation entsprechend einer erfindungsgemäßen Ausführungsform.
-
3 zeigt
ein Ablaufdiagramm entsprechend einer erfindungsgemäßen Ausführungsform.
-
4 zeigt
ein Diagramm der entsprechenden Blöcke für einen vorherigen Frame, einen
Interpolations-Frame und einen aktuellen Frame entsprechend einer
erfindungsgemäßen Ausführungsform.
-
5 zeigt
ein Ablaufdiagramm eines Blockbewegungsschätzverfahrens entsprechend einer
erfindungsgemäßen Ausführungsform.
-
6 zeigt
ein Diagramm der entsprechenden Blöcke für einen vorherigen Frame, einen
Interpolations-Frame und einen aktuellen Frame für eine erste Iteration zur
Vorwärtsbewegungsschätzung bei der
Ermittlung des besten Bewegungsvektors für Blöcke des Interpolations-Frames.
-
7 zeigt
ein Diagramm der entsprechenden Blöcke für einen vorherigen Frame, einen
Interpolations-Frame und einen aktuellen Frame für eine zweite Iteration zur
Vorwärtsbewegungsschätzung bei
der Ermittlung des besten Bewegungsvektors für Blöcke des Interpolations-Frames.
-
8 zeigt
ein Ablaufdiagramm eines Blockbewegungsschätzverfahrens entsprechend einer weiteren
erfindungsgemäßen Ausführungsform.
-
9 zeigt
ein Ablaufdiagramm eines Verfahrens zur Fehlervorhersage und Fehlererkennung entsprechend
einer erfindungsgemäßen Ausführungsform.
-
10 zeigt
ein Diagramm der entsprechenden Blöcke für einen vorherigen Frame, einen
Interpolations-Frame und einen aktuellen Frame zur Beschreibung
der mehrfachen Frame-Interpolation
entsprechend einer erfindungsgemäßen Ausführungsform.
-
11 zeigt
ein Ablaufdiagramm eines Verfahrens zur Verwendung von Blockbewegungsvektoren
aus einem komprimierten Bitstrom für die Ermittlung des besten
Bewegungsvektors.
-
12 zeigt
ein Ablaufdiagramm eines Verfahrens zur Prüfung, ob für die in 10 dargestellte erfindungsgemäße Ausführungsform
Frame-Interpolation durchgeführt
werden soll, wenn der aktuelle Frame nicht INTRA-kodiert ist, sondern über eine
von Null verschiedene Anzahl von INTRAkodierten Makroblöcken verfügt.
-
13 zeigt
das Schema eines Computers, in Verbindung mit dem die erfindungsgemäße Ausführungsform
praktiziert werden kann.
-
BESCHREIBUNG
-
Zu
den Ausführungsformen
der Erfindung gehören
rechnergestützte
Systeme, Verfahren, Computer und Medien in wechselndem Umfang. Zusätzlich zu
den Aspekten und Vorzügen
der in diesem Überblick
beschriebenen vorliegenden Erfindung ergeben sich weitere Aspekte
und Vorzüge
der Erfindung unter Bezugnahme auf die Zeichnungen und aus der Lektüre der folgenden
detaillierteren Beschreibung.
-
Im
Folgenden wird eine detaillierte Beschreibung einzelner Ausführungsformen
der Erfindung unter Bezugnahme auf die beigefügten und zu diesem Dokument
gehörenden
Zeichnungen gegeben, die spezielle Ausführungsbeispiele zur Durchführung der Erfindung
veranschaulicht. Diese Ausführungsformen
sind ausreichend genau beschrieben, um dem Fachmann die Anwendung
der Erfindung zu ermöglichen,
wobei sich versteht, dass weitere Ausführungsformen nutzbar sowie
logische, mechanische, elektrische und sonstige Änderungen vorgenommen werden
können,
ohne vom Umfang der vorliegenden Erfindung abzuweichen. Die folgende
detaillierte Beschreibung ist daher nicht in einschränkendem
Sinne zu verstehen; der Umfang der vorliegenden Erfindung wird einzig
durch die beigefügten
Ansprüche definiert.
-
Die
folgenden Ausführungen
beziehen sich auf 1, die ein System entsprechend
einer erfindungsgemäßen Ausführungsform
darstellt. Das System aus 1 umfasst
die Bildquelle 100, den Computer 102, das Netzwerk 104,
den Computer 106, den Blockteiler 108, den Mechanismus 110,
den Pixelzustandszuweiser 112, den Synthetisierer 114 und die
Bildausgabe 116. Wie dargestellt sind Blockteiler 108,
Mechanismus 110, Pixelzustandszuweiser 112 und Synthetisierer 114 vorzugsweise
Teil des Computers 106, obwohl die Erfindung darauf nicht
beschränkt
ist. Bei einer solchen Ausführungsform
sind Blockteiler 108, Mechanismus 110, Pixelzustandszuweiser 112 und
Synthetisierer 114 vorzugsweise Computerprogramme auf dem
Computer 106 sind – das
heißt,
dass Programme (mithin ein Blockteilerprogramm, ein Mechanismusprogramm,
ein Pixelzustandszuweiserprogramm und ein Synthetisiererprogramm)
durch einen Prozessor des Computers von einem computerlesbaren Medium
wie dessen Speicher aus ausgeführt
werden. Der Computer 106 umfasst vorzugsweise auch ein
in 1 nicht dargestelltes Betriebssystem, in dem und
in Verbindung mit dem die Programme laufen und dessen Bedeutung der
Fachmann zu würdigen
weiß.
-
Die
Bildquelle 100 generiert mehrere Frames einer Videosequenz.
Bei einer Ausführungsform
umfasst die Bildquelle 100 eine Videokamera zur Generierung
der Mehrfach-Frames. Die Bildquelle 100 ist funktional
an den Computer 102 gekoppelt. Der Computer 102 empfängt die
Mehrfach-Frames einer Videosequenz von der Bildquelle 100 und
kodiert die Frames + Bei einer Ausführungsform werden die Frames mit
dem Fachmann bekannten Datenkomprimierungsalgorithmen kodiert. Der
Computer 102 ist funktional an das Netzwerk 104 gekoppelt,
das wiederum funktional an den Computer 106 gekoppelt ist.
Das Netzwerk 104 leitet die Mehrfach-Frames vom Computer 102 an
den Computer 106 weiter. Bei einer Ausführungsform ist dieses Netzwerk
das Internet. Der Computer 106 empfängt die Mehrfach-Frames vom
Netzwerk 104 und erzeugt einen Interpolations-Frame zwischen
zwei aufeinander folgenden Frames in der Videosequenz.
-
Nach
der genaueren Darstellung in 2 teilt
der auf dem Computer 106 residente Blockteiler 108 die
beiden aufeinander folgenden Frames Frame(t) 202 (den aktuellen
Frame) und Frame(t-1) 204 (den vorherigen Frame) gemeinsam
mit dem Interpolations-Frame(t-1/2) 208 in Blöcke. Der
Mechanismus 110 nimmt die einzelnen Blöcke des Interpolations-Frames(t-1/2) 208 und
ermittelt für
jeden Block den besten Bewegungsvektor auf der Grundlage der beiden
entsprechenden aufeinander folgenden Frames (Frame(t) 202 und
Frame(t-1) 204) zwischen denen der Interpolations-Frame(t-1/2) 208 residieren wird.
-
Der
Pixelzustandszuweiser 112 nimmt einen Satz von drei Frames – Frame(t) 202,
Frame(t-1) 204 und Frame(t-2) 206 (der dem vorherigen
vorangehende Frame) und charakterisiert die einzelnen Pixel im aktuellen
Frame. Bei einer Ausführungsform
werden die einzelnen Pixel einem von vier Zuständen zugeordnet: in Bewegung,
stationär,
abgedeckter Hintergrund und nicht abgedeckter Hintergrund.
-
Der
Synthetisierer 114 empfängt
den besten Bewegungsvektor für
die einzelnen Blöcke
im Interpolations-Frame(t-1/2) 208 vom Mechanismus 110 und
die Pixelzustandszuweisung der einzelnen Pixel im Frame(t) 202 vom
Pixelzustandszuweiser 112 und erstellt den Interpolations-Frame(t-1/2) 208 durch Synthetisierer
auf blockweiser Basis. Nach der Generierung des Interpolations-Frames(t-1/2) 208 durch den
Computer 106, empfängt
die funktional an den Computer 106 gekoppelte Bildwiedergabe 116 Frame(t) 202 und
Frame(t-1) 204 zusammen mit dem Interpolations-Frame(t-1/2) 208 und
zeigt diese entsprechend an. Bei einer Ausführungsform umfasst die Bildwiedergabe 116 einen
Computermonitor oder ein Fernsehgerät.
-
Die
folgenden Ausführungen
beziehen sich auf 3, die ein Ablaufdiagramm eines
Verfahrens entsprechend einer erfindungsgemäßen Ausführungsform darstellt. Das Verfahren
wird vorzugsweise zumindest zum Teil als eines oder mehrere auf dem
Computer laufende Programme durchgeführt, das heißt, als
ein Programm, das von einem computerlesbaren Medium wie einem Speicher
vom Prozessor eines Computers ausgeführt. Die Programme sind zur
Verteilung, Installation und Ausführung auf einem anderen (in
geeigneter Weise ausgestatteten) Computer vorzugsweise auf einem
computerlesbaren Medium wie einer Diskette oder einer CD-ROM (Compact
Disk-Read Only Memory) speicherbar.
-
In
Block 300 werden alle Pixel im aktuellen Frame unterschiedlichen
Pixelkategorien zugewiesen. Bei einer Ausführungsform umfassen diese Kategorien
die Zustände
in Bewegung, stationär,
abgedeckter Hintergrund und nicht abgedeckter Hintergrund. In Block 302 werden
der aktuelle und der vorherige Frame aus der vom Netzwerk 104 ankommenden
Videosequenz gemeinsam mit dem Interpolations-Frame zwischen diesen
beiden Frames in Blöcke
eingeteilt. In Block 304 wird für jeden Block des Interpolations-Frames
ein bester Bewegungsvektor gewählt.
In Block 306 wird der Interpolations-Frame aufgrund der
Pixelzustandszuweisung der Pixel im aktuellen Frame und dem besten
Bewegungsvektor für
den entsprechenden Interpolations-Frame blockweise synthetisiert.
-
Bei
einer Ausführungsform
wird den Blöcken bei
der Teilung der Frames in Blöcke
im Block 302 pro Frame dynamisch eine an das Aktivitätsniveau des
Frame-Paars, aus dem der Interpolations-Frame synthetisiert wird,
angepasste Größe zugewiesen. Der
Vorteil der Verwendung einer solchen adaptiven Blockgröße liegt
darin, dass die Auflösung
des durch die Bewegungsschätzung
erzeugten Bewegungsfeldes zur Berücksichtigung sowohl großer als
auch kleiner Bewegungsmengen geändert
werden kann.
-
Bei
einer Ausführungsform
verwendet Block 302 bei Einsatz der dynamischen Blockgrößenauswahl
die Pixelzustandszuweisung aus Block 300 zur Ermittlung
der Blockgröße für einen
Satz von Interpolations-Frames. Anfänglich wird eine Blockgröße von N × N gewählt (N =
16 für
das Common Intermediate Format (CIF), bei einer Ausführungsform
gleich 32 für größere Videoformate)
und tesselliert (d.h. teilt) eine Klassifikationszuordnung des Bildes
in Blöcke
dieser Größe. Die
Klassifikationszuordnung für
ein Bild enthält
einen Zustand (aus den vier Zuweisungen (in Bewegung, stationär, abgedeckt
oder nicht abgedeckt)) für
die einzelnen Pixel innerhalb des Bildes. Für jeden Block in dieser Klassifikationszuordnung
werden die zu einer Klasse gehörenden
relativen Pixelanteile berechnet. Dann wird die Anzahl an Blöcken mit
einer Pixelklasse berechnet, die den Prozentsatz P der Gesamtpixelanzahl überschreitet.
Bei einer Ausführungsform
ist P = 75. Wenn der Anteil solcher homogener Blöcke in der Klassifikationszuordnung
größer als
ein zuvor festgelegter Prozentsatz P'' ist,
wird N als Blockgröße für die Bewegungsschätzung ausgewählt. Andernfalls
wird N durch 2 geteilt und der Prozess wiederholt, bis ein Wert
für N gewählt wurde oder
N unter einen bestimmten Mindestwert gefallen ist. Bei einer Ausführungsform
beträgt
dieser Mindestwert acht, da eine kleinere Blockgröße zum wohlbekannten
Effekt der Bewegungsfeldinstabilität führt und den Einsatz von rechnerisch
aufwändigen
Feldregulierungsverfahren zu deren Korrektur erfordert.
-
Bei
einer Ausführungsform
wählt der
Blockauswahlprozess während
eines Interpolationsprozesses eine einzige Blockgröße für einen
ganzen Frame aus. Eine einzige Blockgröße für einen ganzen Frame hat den
Vorteil einer verringerten Komplexität der Bewegungseinschätzungs-
und Bewegungskompensationsaufgaben gegenüber einer Ausführungsform,
bei der sich die Blockgrößenauswahl
in einem einzigen Frame von Block zu Block ändern darf.
-
Eine
Ausführungsform
von Block 304 aus 3 zur Ermittlung
des besten Bewegungsvektors für
die einzelnen Blöcke
des Interpolations-Frames ist in 4, 5, 6, 7 und 8 dargestellt.
Zur Ermittlung des besten Bewegungsvektors bietet diese Ausführungsform
eine Blockbewegungsschätzung
aus Vorwärts-
und Rückwärtsbewegungsschätzung mit
dem Nullbewegungsvektor. 4 zeigt die einbezogenen Frames
sowie deren zur Ermittlung des besten Bewegungsvektors herangezogenen
Blöcke.
Für nichtstationäre Blöcke gilt:
Wenn (mvx, mvy)
den besten Bewegungsvektor (entsprechend Block 408) bezeichnet
und von einer linearen Translationsbewegung ausgegangen wird, müsste Block 408 im
Interpolations-Frame 402 bei (x + mvx/2, y
+ mvy/2) auftreten. Im Allgemeinen passt
Block 408 nicht genau in den Rasterblock im Interpolations-Frame 402.
Stattdessen würde
er die vier N × N-Blöcke 412, 414, 416 und 418 abdecken.
Im Beispiel für
die Vorwärtsbewegungsschätzung ist
der Block 406 entsprechend Block 410 im aktuellen
Frame 404 der am besten passende Block im vorherigen Frame 400.
Im Interpolations-Frame 402, deckt die Projektion Teile der
vier Blöcke 412, 414, 416 und 418 ab;
der Überlappungsgrad
ist für
die vier betroffenen Blöcke
nicht unbedingt der gleiche.
-
In 5 werden
für jeden
Block im Interpolations-Frame drei Listen von Bewegungsvektorkandidaten
(d.h. die Kandidatenlisten) erstellt und der/die Bewegungsvektor(en),
mit dem/denen die Bewegungsprojektion den Block teilweise oder ganz
abdeckt, in die Listen eingefügt.
Es gibt eine Liste für den
Nullbewegungsvektor, den Vorwärtsbewegungsvektor
und den Rückwärtsbewegungsvektor.
Jede Liste enthält
nur ein Element: den aktuell führenden Bewegungsvektor
in dieser Kategorie. In Block 502 wird die mittlere absolute
Differenz (MAD) des Nullbewegungsvektors berechnet und in der Nullbewegungsvektor-Kandidatenliste
in Block 504 vermerkt. In Block 506 und 510 werden
die Vorwärts-
und Rückwärtsbewegungsvektoren
mit der entsprechenden MAD und Überlappung
berechnet. In Block 508 und Block 512 werden bei
der Ausführung
der Vorwärts-
und Rückwärtsbewegungsvektorschätzung bei
Bedarf die Bewegungsvektorlisten unter Verwendung des maximalen Überlappungskriteriums
in Block 508 und 512 aktualisiert. In Block 514 wird
für jede
der drei Listen (Nullbewegungsvektorliste, Vorwärtsbewegungsvektorliste und
Rückwärtsbewegungsvektorliste)
ein führender
Bewegungsvektor gewählt.
-
In 6 und 7 werden
zwei Vorwärtsbewegungsvektoren
ermittelt, die den besten Bewegungsvektor für die Blöcke 612, 614, 616 und 618 des
Interpolations-Frames(t-1/2) 602 bestimmen. Zur besseren Übersicht
sind die Teile, in denen 6 und 7 gleich
sind, in gleicher Weise nummeriert. Die Frames sind in Blöcke unterteilt.
In 6 wird Block 606 des Frames(t-1) 602 als
am besten passender Block für
Block 610 des Frames(t) 604 ermittelt. Es werden
daher Bewegungsvektoren auf der Basis einer linearen Translationsbewegung
zwischen den Blöcken 606 und 610 erstellt.
Block 608 für
den Interpolations-Frame(t-1/2) 602 wird auf der Basis des
Bewegungsvektors zwischen den Blöcken 606 und 610 gebildet.
Jedoch passt Block 608 nicht perfekt in einen beliebigen
der zuvor abgeteilten Blöcke des
Interpolations-Frames(t-1/2) 602; stattdessen bedeckt (d.h. überlappt)
Block 608 teilweise die Blöcke 612, 614, 616 und 618 des
Interpolations-Frames(t-1/2) 602. Daher werden die zu Block 608 gehörenden Bewegungsvektoren
auf die Kandidatenlisten für
die Blöcke 612, 614, 616 und 618 gesetzt.
-
In
gleicher Weise wird in 7 Block 702 des Frames(t-1) 600 als
am besten passender Block für
Block 706 des Frames(t) 604 ermittelt. Es werden Bewegungsvektoren
auf der Basis einer linearen Translationsbewegung zwischen den Blöcken 702 und 706 erstellt.
Block 704 für
den Interpolations-Frame(t-1/2) 602 wird auf der Basis
des Bewegungsvektors zwischen den Blöcken 702 und 706 gebildet.
Jedoch passt Block 704 wie Block 608 nicht perfekt
in einen beliebigen der zuvor abgeteilten Blöcke des Interpolations-Frames(t-1/2) 602;
stattdessen bedeckt (d.h. überlappt)
Block 704 teilweise die Blöcke 612, 614, 616 und 618 des
Interpolations-Frames(t-1/2) 602. Daher werden die zu Block 703 gehörenden Bewegungsvektoren
auf die Kandidatenlisten für
die Blöcke 612, 614, 616 und 618 gesetzt.
-
Auf
der Grundlage dieser beiden Vorwärtsbewegungsvektorkandidaten überlappt
beim Interpolations-Frame(t-1/2) 602 Block 608 den
Block 612 stärker
als Block 704 und daher ist Block 608 der aktuell
führende
Vorwärtsbewegungsvektorkandidat
für Block 612.
In gleicher Weise überlappt
bei Block 614 des Interpolations-Frames(t-1/2) 602 Block 704 den Block 614 stärker als
Block 608 und daher ist Block 704 der aktuell
führende
Vorwärtsbewegungsvektorkandidat
für Block 614.
-
In 5 wird
der Block 514 bei einer Ausführungsform durch das Verfahren
aus 8 ausgeführt,
wenn der endgültige
Bewegungsvektor aus einer der Kandidatenlisten ausgewählt wird.
In 8 bei Block 808 verwendet das Auswahlkriterium
für die drei
Kandidaten Forward Motion Vector (FMV; Vorwärtsbewegungsvektor)-Kandidat 802,
Backward Motion Vector (BMV; Rückwärtsbewegungsvektor)-Kandidat 804 und
Zero Motion Vector (ZMV; Nullbewegungsvektor)-Kandidat 806 aus
den Kandidatenlisten sowohl den Blockzuordnungsfehler (MAD oder
Summe der absoluten Differenz (SAD)) und die Überlappuny zur Wahl des besten
Bewegungsvektors. Der Grundgedanke für die Verwendung des Blockzuordnungsfehlers
besteht in der Benachteiligung unzuverlässiger Bewegungsvektoren auch dann,
wenn sie eine große Überlappung
ergeben. Im Besonderen ist der gewählte Bewegungsvektor derjenige,
bei dem das Verhältnis
Em des Blockzuordnungsfehlers zur Überlappung
von den drei Kandidaten am kleinsten ist. In Block 810 wird
ermittelt, ob alle drei Verhältniswerte
unter einem vorbestimmten Schwellenwert A1 liegen. Wenn festgestellt
wird, dass alle drei Verhältniswerte
unter einem vorbestimmten Schwellenwert A1 liegen, wählt Block 812 den
Kandidaten mit der stärksten Überlappung,
den Nullbewegungsvektor, aus. Bei einer Ausführungsform beträgt A1 1,0.
Wenn festgestellt wird, dass alle drei Verhältniswerte nicht unter einem
vorbestimmten Schwellenwert A1 in Block 814 liegen, wird
der Vektor mit dem kleinsten Verhältnis Em ausgewählt.
-
Überdies
wird der Nullbewegungsvektor in Block 816 selbst dann erneut
gewählt,
wenn entweder der Vorwärts-
oder der Rückwärtsbewegungsvektor
ausgewählt
wurden und die Überlappung
für den
gewählten
Bewegungsvektor unter einem vorbestimmten Schwellenwert 0 liegt.
Bei einer Ausführungsform
liegt 0 im Bereich von 50–60%
der bei der Bewegungsschätzung
verwendeten Blockgröße. Zudem
wird in Block 818 die Fehlererkennung benachrichtigt, wenn
der Nullbewegungsvektor in Block 816 entweder durch den
Vorwärts-
oder den Rückwärtsbewegungsvektor
ersetzt wird. Die Fehlererkennung wird weiter unten genauer beschrieben.
Bei einer weiteren Ausführungsform
wird die Rückwärtsbewegungsvektorschätzung eliminiert
und so bei der Blockbewegungsschätzung
nur die Nullbewegungsvektor- und Vorwärtsbewegungsvektorschätzung verwendet.
Wenn in Block 818 das gewählte Verhältnis Em größer als
der vorbestimmte Schwellenwert 0 ist, wird der zugehörige Bewegungsvektor
als bester Bewegungsvektor akzeptiert.
-
Bei
einer weiteren Ausführungsform
wird bei der Synthetisierung des Interpolations-Frames in Block 306 von 3 für die als
abgedeckt oder nicht abgedeckt eingestuften Pixel ein Nullbewegungsvektor
statt des eigentlichen zu diesem bestimmten Interpolationsblock
gehörenden
Bewegungsvektors verwendet. Dies führt zu einer Reduzierung von
Artefakten an den Kanten von sich bewegenden Objekten, weil die
abgedeckten und nicht abgedeckten Regionen per Definition lokale
Szenenwechsel darstellen und daher nicht durch Blockzuordnungsverfahren kompensiert
werden können.
Außerdem
kann ein Tiefpassfilter (z.B. ein 2D 1-2-1-Filter) zur Glättung der
Kantenbildfehler an den Kanten von abgedeckten Regionen eingesetzt
werden.
-
Die
Fähigkeit
zur Entdeckung von Interpolations-Frames mit signifikanten Artefakten
ermöglicht eine
insgesamt bessere Wahrnehmung von Bildqualität. Ohne diese Fähigkeit
beeinträchtigen
nur wenige schlecht interpolierte Frames die Wahrnehmung der Bildqualität durch
den Benutzer bei einer ganzen Sequenz, die im Großen und
Ganzen erfolgreich interpoliert wurde. Die Erkennung dieser schlecht
interpolierten Frames und deren Entfernung aus der Sequenz ermöglicht eine
bedeutende Frameratenverbesserung ohne spürbaren Verlust an Raumqualität durch
die Gegenwart von Artefakten. Interpolationsfehler sind unvermeidlich,
da nichttranslatorische Bewegungen wie Drehung und Objektverformung
nie vollständig
mit Verfahren auf Blockbasis erfasst werden können und daher eine Art von
Fehlerprognose und -erkennung ein integraler Bestandteil der Frame-Interpolation
sein muss.
-
Bei
einer in 9 dargestellten Ausführungsform
sind Fehlerprognose und Fehlererkennung in den Interpolationsprozess
einbezogen. Die Fehlerprognose ermöglicht einer rechtzeitigen
Abbruch der Interpolation und verhindert somit einige mit hohem
Rechenaufwand verbundene Tasks wie die Bewegungsschätzung für einen
Interpolations-Frame,
der im Nachhinein als unannehmbar beurteilt wird. In Block 906 wird
die Klassifikationszuordnung mit der gewählten Blockgröße tesselliert, wobei
als Eingangswerte Frame(t) 904 (der aktuelle Frame), Frame(t-1) 902 (der
vorherige Frame) und Frame(t-2) 901 (der dem vorherigen
vorangegangene Frame) genommen werden. In Block 908 der
einzelnen Blöcke
in Frame(t) 904 werden die relativen Anteile der abgedeckten
und nicht abgedeckten Pixel berechnet. Wenn festgestellt wird, dass
die Summe dieser Anteile einen vorbestimmten Schwellenwert L überschreitet,
wird der Block als verdächtig
markiert. Der Grundgedanke ist hierbei, dass abgedeckte und nicht
abgedeckte Regionen nicht gut bewegungskompensiert werden können und
normalerweise zu Artefakten an der Peripherie sich bewegender Objekte
führen.
Nachdem alle Blöcke
in der Klassifikationszuordnung verarbeitet wurden und festgestellt
wird, dass die Anzahl der für
den aktuellen Frame als verdächtig
markierten Blöcke
einen vorbestimmten Schwellenwert überschreitet, wird der vorherige
Frame in Block 910 wiederholt.
-
Die
Prognose ist normalerweise nur ein frühzeitiger Indikator für mögliche Fehler
und muss in Verbindung mit der Fehlererkennung eingesetzt werden.
Nach der Bewegungsschätzung
in Block 912 und Block 914 verwendet die Fehlererkennung
die Anzahl an nichtstationären
Blöcken,
die infolge eines geringeren Überlappungsverhältnisses
als dem in Block 818 in 8 oben beschriebenen
vorbestimmten Schwellenwerts zur Verwendung des Nullbewegungsvektors
gezwungen wurden. Wenn festgestellt wird, dass die Anzahl solcher
Blöcke
einen zuvor festgelegten Anteil von aller Blöcke überschreitet, wird der Frame
in Block 910 abgewiesen und der vorherige Frame wiederholt.
Wenn jedoch festgestellt wird, dass diese Anzahl von Blöcken einen
zuvor festgelegten Anteil nicht überschritten
hat, erfolgt die Synthese von Block 916, der dem Block 306 in 3 gleicht.
-
In 10 wird
eine weitere Ausführungsform veranschaulicht,
in der der Blockbewegungsschätzer auf
die Synthese mehrerer Interpolations-Frames zwischen zwei aufeinander
folgenden Frames erweitert wird. Frame(t-2/3) 1004 und
Frame(t-1/3) 1008 werden zwischen dem vorherigen Frame(t-1) 1002 und
dem aktuellen Frame(t) 1010 interpoliert. Der hypothetische
Interpolations-Frame(t-1/2) 1006 befindet sich temporal
zwischen Frame(t-1) 1002 und Frame(t) 1010. Ein
einziger Kandidat für
die einzelnen Blöcke
im hypothetischen Interpolations-Frame(t-1/2) 1006 wird
mit dem Nullbewegungsvektor sowie dem Vorwärts- und Rückwärtsbewegungsvektor erstellt.
Dann wird der beste Bewe gungsvektor aus den drei Kandidaten für die einzelnen
Blöcke
des hypothetischen Interpolations-Frames(t-1/2) 1006 nach
der bereits gegebenen Beschreibung unter Verweis auf 4, 5, 6, 7 und 8 ausgewählt.
-
Zur
Synthetisierung der einzelnen Blöcke
in jedem der eigentlichen Interpolations-Frames(t-2/3) 1004 und
(t-1/3) 1008 wird der beste Bewegungsvektor für den hypothetischen
Interpolations-Frame(t-1/2) 1006 mit dem relativen Abstand
der eigentlichen Interpolations-Frames(t-2/3) 1004 und
(t-1/3) 1008 vom Bezugs-Frame (entweder Frame(t-1) 1002 oder
Frame(t) 1010) skaliert. Im Vergleich zu dem Prozess, bei
dem eine Kandidatenliste für
die einzelnen Blöcke
in jedem der eigentlichen Interpolations-Frames erstellt wird, führt dies
zu einer fließenderen
Bewegung ohne Bildschwankungen. Dieser Prozess hat auch den zusätzlichen
Vorteil, weniger Rechenaufwand zu erfordern, da die Komplexität der Bewegungsvektorauswahl
mit der Anzahl der zu interpolierenden Frames nicht zunimmt, weil
eine einzige Kandidatenliste konstruiert wird.
-
Es
lassen sich weitere Ausführungsformen zum
Zuschnitt auf eine diverse Menge von Plattformen mit unterschiedlichen
Rechner-Ressourcen (z.B. Verarbeitungsleistung, Speicherkapazität usw.) entwickeln.
In 11 ist zum Beispiel eine Ausführungsform für Block 304 in 3 dargestellt,
wo der beste Bewegungsvektor für
die einzelnen Blöcke
des Interpolations-Frames ausgewählt
wird. Diese Ausführungsform
in 11 verwendet die Blockbewegungsvektoren aus einem
komprimierten Bitstrom zur Ermittlung des besten Bewegungsvektors,
wodurch der Bewegungsschätzprozess
eliminiert wird. Viele blockbewegungskompensierte Bildkomprimierungsalgorithmen
wie H.261, H.263 und H.263+ generieren Block- (und Makroblock-)
Bewegungsvektoren, die als Teil der temporalen Prognoseschleife
verwendet werden und zur Verwendung durch den Dekodierer in den
Bitstrom einkodiert sind. ITU Telecom, Bereich Standardisierung
der ITU, CODEC Empfehlung für
einen Video-CODEC der audiovisuelle Dienste mit p·64 kbps
ermöglicht,
Entwurf der ITU-T-Empfehlung H.261, 1693; ITU Telecom, Bereich Standardisierung
der ITU, Video-Kodierung für die
Kommunikation audiovisueller Dienste im Bereich niedriger Bitraten,
ITU-T-Empfehlung H.263, 1996; ITU Telecom, Bereich Standardisierung
der ITU, Video-Kodierung für
die Kommunikation audiovisueller Dienste im Bereich niedriger Bitraten,
Entwurf der ITU-T-Empfehlung H.263 Version 2, 1997 (d.h. H.263+).
Bewegungsvektoren sind üblicherweise Vorwärtsbewegungsvektoren,
doch können
sowohl Rückwärts- als
auch Vorwärtsbewegungsvektoren zur
temporalen Skalierbarkeit herangezogen werden. Bei einer Ausführungsform
sind die kodierten Vektoren ausschließlich Vorwärtsbewegungsvektoren. Bei dieser
Ausführungsform
wird die für
die Blockgröße verwendete
Bewegungsschätzung
vom Kodierer bestimmt, wodurch das Blockauswahlmodul eliminiert wird.
Zum Beispiel kann die H.263+ entweder 8 × 8-Blöcke oder 16 × 16-Makroblöcke zur
Bewegungsschätzung
verwenden, und der Kodierer wählt
einen dieser Blöcke
mit einer Kodierstrategie zur Erfüllung von Übertragungsgeschwindigkeits-
und Qualitätszielen.
Die Blockgröße kann
aus den Header-Angaben bezogen werden, die als Teil der einzelnen
Video-Frames kodiert sind. Die Blockgröße wird sowohl beim Aufbau
der Kandidatenliste als auch bei der Fehlerprognose verwendet.
-
Eine
Folge der Verwendung von im Bitstrom kodierten Bewegungsvektoren
ist, dass der Bewegungsvektorwähler
während
der Frame-Interpolation keine MAD-zu-Überlappung- Verhältnisse
nutzen kann, weil der Bitstrom keine Angaben zu mit den übertragenen
Bewegungsvektoren assoziierten MADs enthält. Stattdessen wählt der
Bewegungsvektorauswahlprozess für
die einzelnen Blöcke
im Interpolations-Frame den Bitstrom-Bewegungsvektorkandidaten mit
der maximalen Überlappung.
Der Nullbewegungsvektorkandidat wird aus der Kandidatenliste ausgeschlossen.
-
Unter
weiterer Bezugnahme auf 11 wird in
Block 1102 die Videosequenz dekodiert. Wie bei zuvor beschriebenen
Ausführungsformen
werden die Frames zur Klassifizierung der Pixel im aktuellen Frame
zum Block 1104 geschickt. Außerdem werden die Bitstromdaten
einschließlich
der Bewegungsvektoren und ihrer jeweiligen Eigenschaften zum Aufbau der
Kandidatenliste und damit zur Auswahl des besten Bewegungsvektors
an Block 1106 weitergeleitet. Die Blöcke 1108, 1110 und 1112 zeigen,
wie die Prognose von Interpolationsfehlern, die Erkennung von Interpolationsfehlern
bzw. die Synthetisierung von Interpolations-Frames auch in die Ausführungsform
in 11 eingebunden sind, wie dies zuvor bei anderen Ausführungsformen
anhand von 3 und 9 beschrieben
wurde. Im Block 1114 wird die Videosequenz gerendert.
-
Bei
dieser Ausführungsform
muss aufgrund der Verwendung von kodierten Bewegungsvektoren das
Problem behandelt werden, was geschieht, wenn die Bewegungsdaten
nicht im Bitstrom zur Verfügung
stehen. Diese Situation kann entstehen, wenn ein Frame ohne temporale
Prognose kodiert wird (INTRA-kodierter Frame) oder einzelne Makroblöcke in einem
Frame ohne temporale Prognose kodiert werden. Um diese Fälle behandeln
zu können, müssen ein
paar Annahmen über
die zur INTRA-Kodierung
von Frames führende
Kodierstrategie aufgestellt werden.
-
Der übermäßige Gebrauch
von INTRA-kodierten Frames (bzw. eine signifikante Anzahl von INTRA-kodierten
Blöcken
in einem Frame) wird vermieden, weil die INTRA-Kodierung im Allgemeinen (in
Bezug auf Bits) weniger effektiv ist als die bewegungskompensierte
INTER-Kodierung. In folgenden Situationen ist die INTRA-Kodierung
auf Frame-Ebene entweder effektiver und/oder absolut notwendig: (1)
die temporale Korrelation zwischen dem vorherigen Frame und dem
aktuellen Frame ist gering (z.B. wenn ein Szenenwechsel zwischen
den Frames auftritt) und (2) der INTRA-Frame wird vom entfernten Dekodierer
speziell angefordert, weil der Dekodierer versucht, (a) Zustandsinformationen
zu initialisieren (z.B. wenn sich der Dekodierer einer bereits bestehenden
Konferenz anschließt)
oder (b) die Zustandsinformationen nach einer Bitstrombeschädigung durch
den Übertragungskanal
erneut zu initialisieren (z.B. bei Paketverlust über das Internet oder bei Leitungsgeräuschen über Telefonleitungen).
-
Die
Situationen, die eine INTRA-Kodierung auf Blockebene erfordern sind
analog zu den Genannten, wobei hier noch ein durch einige Kodierungsalgorithmen
wie H.261 und H.263 eingeführtes weiteres
Szenario hinzukommt, da diese in regelmäßigen Abständen (z.B. alle 132 übertragenen
Makroblöcke)
eine INTRA-Kodierung von Makroblöcken
erfordern. Zur Erhöhung
der Elastizität
eines Bitstroms bei Verlust oder Beschädigung von Daten kann ein Kodierer
zudem eine Strategie annehmen, bei der dieses Intervall in Abhängigkeit
von den Verlusteigenschaften des Übertragungskanals variiert
wird. Es wird vermutet, dass ein Frame nur dann INTRA-kodiert wird,
wenn der Kodierer feststellt, dass die temporale Korrelation zwischen
dem aktuellen und dem vorherigen Frame für eine effektive bewegungskompensierte
Kodierung zu gering ist. Daher werden in dieser Situation in Block 1112 von 11 keine
Interpolations-Frames synthetisiert, sondern der vorherige Frame
wird von Block 1114 wiederholt, wobei der von Block 1102 kommende
dekodierte Frame direkt verwendet wird.
-
12 zeigt
eine Ausführungsform,
bei der der aktuelle Frame nicht INTRA-kodiert ist, aber eine von
Null verschiedene Anzahl von INTRA-kodierten Makroblöcken aufweist,
deren relativer Anteil bestimmt, ob eine Frame-Interpolation erfolgt. In Block 1204 wird
die Anzahl an INTRA-kodierten Blöcken
für den
aktuellen Frame 1202 berechnet. In Block 1206 wird
eine Festlegung getroffen, ob die Anzahl an INTRA-kodierten Makroblöcken geringer
ist als der festgelegte Schwellenwert P5.
Wenn dabei festgestellt wird, dass die Anzahl an INTRA-kodierten
Blöcken größer als
der festgelegte Schwellenwert P5 ist, wird der
vorherige Block in Block 1208 wiederholt. Wenn dabei festgestellt
wird, dass die Anzahl an INTRA-kodierten Blöcken kleiner als der festgelegte
Schwellenwert P5 ist, wird in Block 1210 eine
Frame-Interpolation durchgeführt.
-
In
Block 1210 wird die Frame-Interpolation bei einer Reihe
von verschiedenen Ausführungsformen
für INTRA-kodierte
Makroblöcke
durchgeführt, die
keine Bewegungsvektoren haben. Die erste Ausführungsform besteht in der Verwendung
des Nullbewegungsvektors für
INTRA-kodierte Makroblöcke und
optional darin, alle Pixelblöcke
in diesem Block als zur nicht abgedeckten Klasse gehörend anzusehen.
Bei dieser Ausführungsform
wird angenommen, dass, wenn der Makroblock tatsächlich INTRA-kodiert wurde,
weil keine gute Prognose gefunden wurde, eine hohe Wahrscheinlichkeit
besteht, dass der Makroblock abgedeckte oder nicht abgedeckte Pixel enthält.
-
Eine
weitere Ausführungsform
der Frame-Interpolation 1210 besteht in der Synthetisierung
eines Bewegungsvektors für
den Makroblock aus den Bewegungsvektoren der umliegenden Makroblöcke mit einem
trennbaren 2D-Interpolationskern, der die horizontalen und vertikalen
Komponenten des Bewegungsvektors interpoliert. Bei diesem Verfahren
wird davon ausgegangen, dass der Makroblock Teil eines größeren einem
Translationsprozess unterworfenen Objekts ist und dass er nicht
wegen einer fehlenden genauen Prognose sondern auf Anforderung von
einem Dekodierer oder als Teil einer elastischen Kodierstrategie
INTRA-kodiert wurde.
-
Eine
weitere Ausführungsform
der Frame-Interpolation 1210 verwendet eine Kombination
aus den genannten Ausführungsformen
mit einem Mechanismus zur Entscheidung, ob der Makroblock wegen
einer schlechten temporalen Prognose INTRA-kodiert wurde oder nicht.
Dieser Mechanismus kann durch Untersuchung des entsprechenden Blocks
in der Zustandsklassifikationszuordnung implementiert werden; wenn
der Makroblock eine Überlegenheit
von abgedeckten und/oder nicht abgedeckten Pixeln aufweist, kann
im vorherigen Frame keine gute Prognose für diesen Makroblock gefunden
werden. Wenn die Klassifikationszuordnung impliziert, dass der betreffende
Makroblock eine schlechte temporale Progose haben würde, wird
die erste Ausführungsform
mit dem Einsatz von Nullbewegungsvektoren für die INTRA-kodierten Makroblocks
ausgewählt,
ansonsten wird die zweite Ausführungsform der
Synthetisierung des Bewegungsvektors gewählt. Diese dritte Ausführungsform
der Frame-Interpolation 1210 ist
komplexer als jede der bereits beschriebenen Ausführungsformen
und ist daher die bevorzugte Ausführungsform, wenn die Anzahl
an INTRA-kodierten Makroblöcken
klein ist (d.h. der festgelegte Schwellenwert für die Anzahl an INTRA-kodierten
Makroblöcken
wird aggressiv eingestellt).
-
Bei
anderen Ausführungsformen
verwendet die Bewegungsschätzung
die Klassifizierungszuordnung zur Bestimmung der Kandidatenblöcke für die Kompensation
und eine geeignete Blockzuordnungsmaßnahme (z.B. gewichtete SADs
mit Klassifizierungszuständen
zum Ausschluss von unwahrscheinlichen Pixeln). Bei einer anderen
Ausführungsform besteht
eine variable Blockgrößenauswahl
innerhalb eines Frames zur Verbesserung der Körnigkeit des Bewegungsfeldes
in kleinen einer Bewegung unterworfenen Bereichen.
-
13 schließlich zeigt
das Schema eines repräsentativen
Computers, mit dem die erfindungsgemäßen Ausführungsformen praktiziert werden können. Es
wird angemerkt, dass Ausführungsformen
der Erfindung auf anderen elektronischen Geräten praktiziert werden können und
nicht auf einen Digitalempfänger
mit Internet-Anschluss beschränkt sind.
Der Computer 1310 ist funktional an den Monitor 1312,
das Zeigegerät 1314 und
die Tastatur 1316 gekoppelt. Der Computer 1310 umfasst
einen Prozessor, einen Arbeitsspeicher (RAM), einen Nurlesespeicher
(ROM) und ein oder mehrere Speichervorrichtungen wie ein Festplattenlaufwerk,
ein Diskettenlaufwerk (in das eine Diskette eingelegt werden kann),
ein CD-Laufwerk und ein Bandkassettenlaufwerk. Speicher, Festplattenlaufwerke,
Disketten usw. sind Arten von computerlesbaren Medien. Die Erfindung
ist nicht auf einen bestimmten Computer 1310 beschränkt. Auf
dem Computer 1310 befindet sich ein computerlesbares Medium,
das ein Computerprogramm speichert, welches auf dem Computer 1310 ausgeführt wird.
Die von dem Computerprogramm durchgeführte Frame-Interpolation entspricht einer
Ausführungsform
der Erfindung.
-
Obwohl
in diesem Dokument spezielle Ausführungsformen dargestellt und
beschrieben wurden, ist dem Fachmann damit bekannt, dass jede Anordnung
zur Erreichung des gleichen Ziels an die Stelle der dargestellten
Ausführungsformen
treten könnte. Diese
Anmeldung soll auch Adaptionen oder Variationen der Erfindung abdecken.
Es wird offenkundig beabsichtigt, dass die Erfindung nur durch die
folgenden Ansprüche
eingeschränkt
wird.