-
Die vorliegende Erfindung betrifft ein Codierverfahren für bewegte Bilder, und insbesondere eine Technik zum Herleiten von Direkt-Modus-Bewegungsvektoren für ein in einer Kompressionstechnik für bewegte Bilder der nächsten Generation definiertes B-Bild (”B-predictive picture”, Bidirektional-Vorhersage-Bild).
-
Ein herkömmliches B-Bild hat fünf Typen an Vorhersagemoden, wie etwa einen Vorwärts-Modus (”forward mode”), einen Rückwärts-Modus (”backward mode”), einen Bi-Direktional-Modus (”bi-directional mode”), einen Direkt-Modus (”direct mode”) und einen Intra-Modus (”intra mode”). In dem Vorwärts-Modus, dem Rückwärts-Modus und dem Bi-Direktional-Modus können die Richtungen von Bewegungsvektoren (”motion vectors”) aus den Modusnamen erkannt werden, da in den Modusnamen Richtungsinformation enthalten ist. In dem Direkt-Modus werden zwei Bewegungsvektoren aus beiden Richtungen von einem Bewegungsvektor eines entsprechend angeordneten Blocks (”co-located block”) in einem benachbarten Bild auf der Grundlage einer zeitlichen Redundanzcharakteristik, wonach zwischen benachbarten Bildern eine Bewegungskontinuität konstant aufrecht erhalten wird, erhalten. Dieser Direkt-Modus weist einen Vorteil hinsichtlich einer Codiereffizienz auf, da Bewegungsinformation nicht zu einem Decoder gesendet wird.
-
In dem Artikel ”Long-Term Memory Motion-Compensated Prediction” von Thomas Wiegand, Xiaozheng Zhang und Bernd Girod, IEEE Transactions an circuits and systems for video technology, vol. 9, no. 1, Februar 1999 wird Videocodierung unter Verwendung von Multiframe-Referrenzbildern vorgeschlagen. Um die entsprechenden Referenzbilder eindeutig zu bestimmen, wird die Übertragung eines als ”time delay” bezeichneten zusätzlichen Parameters vorgeschlagen.
-
Aus der Offenlegungsschrift
EP 0 863 674 A2 ist die Codierung von Doppelvorhersage Bildern (B-Bildern) im Direkt-Modus unter Verwendung von vergangenen und zukünftigen Ankerbildern bekannt.
-
Andererseits ist ein B-Bild, wie es in einer zukünftigen Kompressionstechnik für bewegte Bilder, wie etwa H.264 oder MPEG-4, Teil 10, vorgeschlagen wird, dadurch gekennzeichnet, dass das B-Bild als ein Referenzbild verwendet werden kann, da es in einem Referenzbildpuffer gespeichert werden kann. Dieses B-Bild ist ferner dadurch gekennzeichnet, dass es fünf Arten von Vorhersagemoden hat, wie etwa list-0-Modus, list-1-Modus, Doppelvorhersage-Modus, Direkt-Modus und Intra-Modus.
-
Der list-0-Modus ist ähnlich dem herkömmlichen Vorwärts-Modus, und Bewegungsinformation, wie etwa ein Referenzbild-Index und eine Bewegungsvektordifferenz werden jeweils durch ref_idx_l0 und mvd_10 angegeben. Der list-1-Modus ist ähnlich dem herkömmlichen Rückwärts-Modus, und Bewegungsinformation, wie etwa ein Referenzbild-Index und eine Bewegungsvektordifferenz, werden jeweils durch ref_idx_l1 und mvd_l1 angegeben. Der Doppel-Vorhersagemodus hat zwei Referenzbilder, welche beide zeitlich vor oder nach dem B-Bild angeordnet sein können oder welche zeitlich vor bzw. nach dem B-Bild angeordnet sein können. In diesem Fall werden zwei Referenzbild-Indizes und zwei Bewegungsvektordifferenzen jeweils durch ref_idx_l0, ref_idx_l1, mvd_l0 und mvd_l1 angegeben, und jedes Referenzbild hat Bildordnungszähldaten, POC (”Picture order count”), welche zeitliche Anordnungsinformation darstellen.
-
In dem Direkt-Modus werden Bewegungsvektoren durch Auswahl einer räumlichen oder zeitlichen Technik erhalten. Gemäß der räumlichen Direkt-Modus-Technik werden list-0- und list-1-Referenzbildindizes und Bewegungsvektoren aus zu einem zu codierenden Makroblock benachbarten Blöcken erhalten. Gemäß der zeitlichen Direkt-Modus-Technik wird ein list-0-Bewegungsvektor MVF und ein list-1-Bewegungsvektor MVB durch Skalieren eines list-0-Bewegungsvektors eines entsprechend angeordneten Blocks (”co-located block”) in einem list-1-Referenzbild für den Direkt-Modus erhalten, was ähnlich ist wie bei dem herkömmlichen B-Bild. Hier ist das list-1-Referenzbild für den Direkt-Modus ein Bild, wo ein Index zur list-1-Vorhersage 0 ist, und ein list-0-Referenzbild für den Direkt-Modus ist ein list-0-Referenzbild, auf welches ein Bewegungsvektor eines entsprechend angeordneten Blocks in dem list-1-Referenzbild für den Direkt-Modus zeigt.
-
Die 1a bis 1c zeigen Vorgabeindizes (”default indizes”) für list-0-Vorhersage, Vorgabeindizes für list-1-Vorhersage und list-1-Referenzbilder für den Direkt-Modus von jeweiligen B-Bildern in einem IBBBP-Muster, wenn die Zahl von verfügbaren list-0- bzw. list-1-Referenzbildern (oder die Grölte eines Kurzzeitpuffers) 6 ist. Hier sind die Vorgabeindizes für die list-0-Vorhersage und die Vorgabeindizes für die list-1-Vorhersage abhängig von einer Ausgabeordnung, oder einem POC-Wert, eines vorangehend decodierten Referenzbildes, und zwar unabhängig von einer Decodierordnung. In 1 verwenden alle B-Bilder ein zeitlich nachfolgendes P-Bild als das list-1-Referenzbild für den Direkt-Modus.
-
Die 2a bis 2c zeigen Vorgabeindizes für eine list-0-Vorhersage, Vorgabeindizes für eine list-1-Vorhersage und list-1-Referenzbilder für den Direkt-Modus von jeweiligen B-Bildern in einem IBBB-Muster unter Verwendung von nur B-Bildern. Wenn in 2a ein zu codierendes B-Bild B8 ist, ist ein zeitlich vorhergehendes B5 mit einem list-1-Index 0 ein list-1-Referenzbild für den Direkt-Modus. Wie in 2b gezeigt, ist ein list-1-Referenzbild für den Direkt-Modus des nachfolgend zu decodierenden B7 das zeitlich nachfolgende B8. Schließlich ist, wie in 2c gezeigt, ein list-1-Referenzbild für den Direkt-Modus von dem nachfolgend zu decodierenden B9 das zeitlich vorgehende B7.
-
Folglich kann, wie aus den 1a bis 2c hervorgeht, ein list-1-Referenzbild für den Direkt-Modus ein P-Bild oder ein B-Bild, welches dem zu codierenden B-Bild zeitlich folgt, oder ein B-Bild sein, welches diesem zeitlich vorangeht.
-
3a bis 3h zeigen Moden, welche ein entsprechend angeordneter Block (”Co-located block”) in einem list-1-Referenzbild für den Direkt-Modus haben kann, wenn das list-1-Referenzbild einem B-Bild zeitlich folgt. In diesem Fall hat der entsprechend angeordnete Block, da das list-1-Referenzbild ein P-Bild oder ein B-Bild sein kann, einen oder zwei Bewegungsvektoren oder den Intra-Modus. Die Kompressionstechnik für bewegte Bilder der nächsten Generation, wie etwa H.264 oder MPEG-4 Teil 10, erlaubt die Umordnung von Referenzbildindizes auf einer ”slice”-Ebene, so dass ein Index 0 für list-1-Vorhersage einem Bild unmittelbar nach einem B-Bild zugeordnet werden kann. Das heisst, da das list-1-Referenzbild unmittelbar nach einem B-Bild existieren kann, dass ein Bewegungsvektor des entsprechend angeordneten Blocks vorwärts oder rückwärts gerichtet sein kann.
-
Die 4a bis 4h zeigen Moden, welche ein entsprechend angeordneter Block in einem list-1-Referenzbild für den Direkt-Modus haben kann, wenn das list-1-Referenzbild einem B-Bild zeitlich vorangeht. In diesem Fall hat der entsprechend angeordnete Block einen oder zwei Bewegungsvektoren, oder, wie vorangehend beschrieben, den Intra-Modus. Zwischen dem list-1-Referenzbild und dem B-Bild können andere Referenzbilder vorhanden sein, so dass ein Bewegungsvektor des entsprechend angeordneten Blocks zeitlich in die Vorwärts- oder die Rückwärtsrichtung zeigen kann.
-
Wie aus den 3a bis 4h ersichtlich ist, kann das list-1-Referenzbild für den Direkt-Modus verschiedene Vorhersagemoden haben, welche einen Bedarf danach ergeben, ein Verfahren zum Berechnen von Direkt-Modus-Bewegungsvektoren unter Berücksichtigung solcher verschiedenartiger Fälle zu untersuchen.
-
Die vorliegende Erfindung wendet sich den oben genannten Problemen zu, und es ist eine Aufgabe der vorliegenden Erfindung, ein Verfahren zum Berechnen von Direkt-Modus-Bewegungsvektoren eines B-Bildes (”Bi-predictive picture”) anzugeben, welches in einer Kompressionstechnik für bewegte Bilder der nächsten Generation definiert ist, wobei eine Technik zum Herleiten der Direkt-Modus-Bewegungsvektoren des B-Bildes vorgeschlagen wird, um die Wahrscheinlichkeit zu erhöhen, dass ein Direkt-Modus als ein Vorhersagemodus eines Makroblocks ausgewählt wird, um eine B-Bild-Codiereffizienz zu erhöhen.
-
Die vorstehende Aufgabe wird durch ein Verfahren mit den Merkmalen des unabhängigen Anspruch 1 gelöst. Vorteilhafte Weiterbildungen finden sich in den Unteransprüchen.
-
Gemäß einer vorteilhaften Ausgestaltung der Erfindung können die obigen und anderen Ziele erreicht werden durch die Bereitstellung eines Verfahrens zum Berechnen von Direkt-Modus-Bewegungsvektoren eines B-Bildes (Doppel-Vorhersage-Bildes, ”Bi-predictive picture”) in einem Codiersystem für bewegte Bilder und zum Extrahieren der Direkt-Modus-Bewegungsvektoren des B-Bildes, umfassend die Schritte des Auswählens eines (ein list-0-Bewegungsvektor oder ein list-1-Bewegungsvektor) der beiden Bewegungsvektoren, wenn ein entsprechend angeordneter Block in einem list-1-Referenzbild für den Direkt-Modus zwei Bewegungsvektoren hat, und Herleiten der Direkt-Modus-Bewegungsvektoren des B-Bildes aus dem ausgewählten Bewegungsvektor.
-
Vorzugsweise kann der obige Schritt den Schritt des Auswählens von einem der list-0- und list-1-Bewegungsvektoren umfassen, welcher zu einem Bild zeigt, welches dem list-1-Referenzbild für den Direkt-Modus zeitlich näher ist als ein Bewegungsvektor zum Herleiten der Direkt-Modus-Bewegungsvektoren, wobei der list-0-Bewegungsvektor als der Bewegungsvektor zum Herleiten der Direkt-Modus-Bewegungsvektoren ausgewählt wird, wenn die zwei Bewegungsvektoren zu dem gleichen Referenzbild zeigen, wobei ein Referenzbild als ein list-0-Referenzbild für den Direkt-Modus bestimmt wird, auf welches durch den ausgewählten Bewegungsvektor gezeigt wird, und die Direkt-Modus-Bewegungsvektoren des B-Bildes hergeleitet werden. Alternativ kann der obige Schritt den Schritt des unbedingten Auswählens des list-0-Bewegungsvektors als einen Bewegungsvektor zur Herleitung der Direkt-Modus-Bewegungsvektoren umfassen, und zwar unabhängig von einem zeitlichen Abstand, wobei ein Referenzbild, auf welches der list-0-Bewegungsvektor zeigt, als ein list-0-Referenzbild für den Direkt-Modus ausgewählt wird, und die Direkt-Modus-Bewegungsvektoren des B-Bildes hergeleitet werden.
-
Gemäß einer weiteren vorteilhaften Ausgestaltung der vorliegenden Erfindung wird ein Verfahren zum Berechnen von Direkt-Modus-Bewegungsvektoren eines B-Bildes (Doppel-Vorhersage-Bildes, ”Bi-predictive picture”) in einem Codiersystem für bewegte Bilder bereitgestellt, um die Direkt-Modus-Bewegungsvektoren des B-Bildes zu extrahieren, umfassend die Schritte des Auswählens eines der Bewegungsvektoren eines entsprechend angeordneten Blocks in einem list-1-Referenzbild für den Direkt-Modus als einen Bewegungsvektor zum Herleiten der Direkt-Modus-Bewegungsvektoren, und zwar unabhängig von Moden (einem list-0-Modus und/oder einem list-1-Modus) der Bewegungsvektoren des entsprechend angeordneten Blocks, Bestimmen eines Referenzbildes, auf welches durch den ausgewählten Bewegungsvektor gezeigt wird, als ein list-0-Referenzbild für den Direkt-Modus, und Berechnen der Direkt-Modus-Bewegungsvektoren des B-Bildes. Es wurde ein herkömmliches Verfahren vorgeschlagen, um Direkt-Modus-Bewegungsvektoren aus einem list-0-Bewegungsvektor eines entsprechend angeordneten Blocks herzuleiten. Wenn dieses herkömmliche Verfahren auf den Fall angewendet wird, wo ein entsprechend angeordneter Block in einem list-1-Referenzbild nur einen list-1-Bewegungsvektor hat, werden alle Direkt-Modus-Bewegungsvektoren 0, da der list-0-Bewegungsvektor 0 ist. Die vorliegende Erfindung kann dieses Problem jedoch überwinden.
-
Gemäß einer weiteren vorteilhaften Ausgestaltung der vorliegenden Erfindung wird ein Verfahren zum Berechnen von Direkt-Modus-Bewegungsvektoren eines B-Bildes (Doppel-Vorhersage-Bildes, ”Bi-predictive picture”) in einem Codiersystem für bewegte Bilder vorgeschlagen, um die Direkt-Modus-Bewegungsvektoren des B-Bildes zu extrahieren, umfassend die Schritte: wenn ein entsprechend angeordneter Block in einem list-1-Referenzbild für den Direkt-Modus nur einen list-1-Bewegungsvektor hat, wird der der entsprechend angeordnete Block als ein Block betrachtet der eine Bewegung von 0 hat, Bestimmen eines decodierten Bildes, welches zeitlich. unmittelbar vordem B-Bild liegt, als ein list-0-Referenzbild für den Direkt-Modus, und Herleiten der Direkt-Modus-Bewegungsvektoren des B-Bildes.
-
Gemäß einer weiteren vorteilhaften Ausgestaltung der vorliegenden Erfindung wird ein Verfahren zum Berechnen von Direkt-Modus-Bewegungsvektoren eines B-Bildes (Doppel-Vorhersage-Bildes, ”Bi-predictive picture”) in einem Codiersystem für bewegte Bilder bereitgestellt, um die Direkt-Modus-Bewegungsvektoren des B-Bildes zu extrahieren, umfassend die Schritte: wenn ein entsprechend angeordneter Block in einem list-1-Referenzbild für den Direkt-Modus nur einen list-1-Bewegungsvektor hat, Verwenden des list-1-Bewegungsvektors des entsprechend angeordneten Blocks (”Co-located block”) als einen Bewegungsvektor zum Herleiten der Direkt-Modus-Bewegungsvektoren, Bestimmen eines zeitlich unmittelbar vor dem B-Bild angeordneten decodierten Bildes als ein list-0-Referenzbild für den Direkt-Modus, und Herleiten der Direkt-Modus-Bewegungsvektoren des B-Bildes.
-
Gemäß einer weiteren vorteilhaften Ausgestaltung der vorliegenden Erfindung wird ein Verfahren zum Berechnen von Direkt-Modus-Bewegungsvektoren eines B-Bildes (Doppel-Vorhersage-Bildes, ”Bi-predictive picture”) in einem Codiersystem für bewegte Bilder bereitgestellt, um die Direkt-Modus-Bewegungsvektoren des B-Bildes zu extrahieren, umfassend die Schritte: wenn ein entsprechend angeordneter Block in einem list-1-Referenz-Bild für den Direkt-Modus nur einen list-1-Bewegungsvektor hat, Verwenden des list-1-Bewegungsvektors des entsprechend angeordneten Blocks als einen Bewegungsvektor zum Herleiten der Direkt-Modus-Bewegungsvektoren, Bestimmen eines Referenzbildes, auf welches durch den list-1-Bewegungsvektor des entsprechend angeordneten Blocks gezeigt wird, als ein list-0-Referenzbild für den Direkt-Modus, und Herleiten der Direkt-Modus-Bewegungsvektoren des B-Bildes.
-
Gemäß einer weiteren vorteilhaften Ausgestaltung der vorliegenden Erfindung wird ein Verfahren zum Berechnen von Direkt-Modus-Bewegungsvektoren eines B-Bildes (Doppel-Vorhersage-Bildes, ”Bi-predictive picture”) in einem Codiersystem für bewegte Bilder zum Extrahieren der Direkt-Modus-Bewegungsvektoren des B-Bildes vorgeschlagen, umfassend die Schritte: Setzen eines zuletzt decodierten Bildes als ein list-1-Referenzbild für den Direkt-Modus, Skalieren eines Bewegungsvektors eines entsprechend angeordneten Blocks in dem list-1-Referenzbild für den Direkt-Modus, um einen list-0-Bewegungsvektor MVF und einen list-1-Bewegungsvektor MVB herzuleiten, und Berechnen der Direkt-Modus-Bewegungsvektoren des B-Bildes. Bei einem herkömmlichen Verfahren wird ein Bild, welches einen Index 0 für list-1-Vorhersage hat, als ein list-1-Referenzbild für den Direkt-Modus definiert. Wenn zwischen dem B-Bild und dem Bild mit dem Index 0 ein hiervon verschiedenes Bild decodiert wird, muss Bewegungsinformation und Referenzbildinformation des Bildes mit dem Index 0 aufrecht erhalten werden, was zu einer zusätzlichen Speicherbenutzung führt. Das vorliegende Verfahren kann jedoch die zusätzliche Speicherbenutzung einsparen.
-
Gemäß einer weiteren vorteilhaften Ausgestaltung der vorliegenden Erfindung wird ein Verfahren zum Berechnen von Direkt-Modus-Bewegungsvektoren eines B-Bildes (Doppel-Vorhersage-Bildes, ”Bi-predictive picture”) in einem Codiersystem für bewegte Bilder zum Extrahieren der Direkt-Modus-Bewegungsvektoren des B-Bildes bereitgestellt, umfassend die Schritte: wenn ein list-1-Referenzbild für den Direkt-Modus dem B-Bild zeitlich vorangeht, Skalieren eines Bewegungsvektors eines entsprechend angeordneten Blocks in dem list-1-Referenzbild für den Direkt-Modus, um einen list-0-Bewegungsvektor MVF und einen list-1-Bewegungsvektor MVB herzuleiten, und Berechnen der Direkt-Modus-Bewegungsvektoren des B-Bildes.
-
Vorzugsweise kann der obige Schritt, wenn sowohl ein Makroblock des B-Bildes als auch ein entsprechend angeordneter Makroblock des list-1-Referenzbildes in einem Rahmen-Modus (”frame mode”) sind und ein list-0-Referenzbild für den Direkt-Modus dem list-1-Referenzbild zeitlich vorangeht, den Schritt des Berechnens der Direkt-Modus-Bewegungsvektoren MVF und MVB des B-Bildes wie folgt umfassen: MVF = TDB × MV/TDD MVB = (TDB – TDD) × MV/TDD oder Z = TDB × 256/TDD MVF = (Z × MV + 128) >> 8 W = Z – 256 MVB = (W × MV + 128) >> 8, wobei TDB einen zeitlichen Abstand zwischen einem gegenwärtigen B-Rahmen und einem list-0-Referenzrahmen repräsentiert, TDD einen zeitlichen Abstand zwischen einem list-1-Referenzrahmen und dem list-0-Referenzrahmen repräsentiert, und MV einen Bewegungsvektor des entsprechend angeordneten Blocks in dem list-1-Referenzbild für den Direkt-Modus repräsentiert.
-
Ferner kann der obige Schritt, wenn sowohl ein Makroblock des B-Bildes als auch ein entsprechend angeordneter Makroblock des list-1-Referenzbildes in einem Rahmen-Modus (”frame mode”) sind und ein list-0-Referenzbild für den Direkt-Modus dem list-1-Referenzbild zeitlich folgt, den Schritt des Berechnens der Direkt-Modus-Bewegungsvektoren MVF und MVB des B-Bildes wie folgt umfassen: MVF = –TDB × MV/TDD MVB = –(TDB + TDD) × MV/TDD oder Z = –TDB ×256/TDD MVF = (Z × MV + 128) >> 8 W = Z – 256 MVB = (W × MV + 128) >> 8, wobei TDB einen zeitlichen Abstand zwischen einem gegenwärtigen B-Rahmen und einem list-0-Referenzrahmen repräsentiert, TDD einen zeitlichen Abstand zwischen einem list-1-Referenzbild und dem list-0-Referenzbild repräsentiert, und MV einen Bewegungsvektor des entsprechend angeordneten Blocks in dem list-1-Referenzbild für den Direkt-Modus repräsentiert.
-
Ferner kann der obige Schritt, wenn sowohl ein Makroblock des B-Bildes als auch ein entsprechend angeordneter Makroblock des list-1-Referenzbildes in einem Feld-Modus (”field mode”) sind und ein list-0-Referenzbild für den Direkt-Modus dem list-1-Referenzbild zeitlich vorangeht, den Schritt des Berechnens der Direkt-Modus-Bewegungsvektoren MVF,i und MVB,i für jedes Feld i eines B-Rahmens wie folgt umfassen: MVF,i = TDB,i × MVi/TDD,i MVB,i = (TDB,i – TDD,i) × MVi/TDD,i oder Z = TDB,i × 256/TDD,i MVF,i = (Z × MVi + 128) >> 8 W = Z – 256 MVB,i = (W × MVi + 128) >> 8, wobei TDB,i einen zeitlichen Abstand zwischen einem gegenwärtigen B-Feld und einem list-0-Referenzfeld repräsentiert, TDD,i D,i einen zeitlichen Abstand zwischen einem list-1-Referenzfeld und dem list-0-Referenzfeld repräsentiert, und MVi einen Bewegungsvektor des entsprechend angeordneten Blocks in einem list-1-Referenzfeld für den Direkt-Modus repräsentiert.
-
Ferner kann der obige Schritt, wenn sowohl ein Makroblock des B-Bildes als auch ein entsprechend angeordneter Makroblock des list-1-Referenzbildes in einem Feld-Modus (”field mode”) sind und ein list-0-Referenzbild für den Direkt-Modus dem list-1-Referenzbild zeitlich folgt, den Schritt des Berechnens der Direkt-Modus-Bewegungsvektoren MVF,i und MVB,i für jedes Feld eines B-Rahmens wie folgt umfassen: MVF,i = –TDB,i × MVi/TDD,i MVB,i = –(TDB,i – TDD,i) × MVi/TDD,i oder Z = –TDB,i × 256/TDD,i MVF,i = (Z × MVi + 128) >> 8 W = Z – 256 MVB,i = (W × MVi + 128) >> 8, wobei TD,i einen zeitlichen Abstand zwischen einem gegenwärtigen B-Feld und einem list-0-Referenzfeld repräsentiert, TDD,i einen zeitlichen Abstand zwischen einem list-1-Referenzfeld und dem list-0-Referenzfeld repräsentiert, und MVi einen Bewegungsvektor des entsprechend angeordneten Blocks in einem list-1-Referenzfeld für den Direkt-Modus repräsentiert.
-
Ferner kann der obige Schritt, wenn ein Makroblock des B-Bildes in einem Feld-Modus (”field mode”) ist, ein entsprechend angeordneter Makroblock des list-1-Referenzbildes. in einem Rahmen-Modus (”frame mode”) ist und ein list-0-Referenzbild für den Direkt-Modus dem list-1-Referenzbild zeitlich vorangeht, den Schritt des Berechnens der Direkt-Modus-Bewegungsvektoren MVF,i und MVB,i für jedes Feld i des B-Rahmens wie folgt umfassen: MVF,i = –TDB,i × MV/TDD MVB = (TDB,i – TDD,i) × MV/TDD oder Z = TDB,i × 256/TDD MVF,i = (Z × MV + 128) >> 8 W = Z – 256 MVB,i = (W × MV + 128) >> 8, wobei TDB,i einen zeitlichen Abstand zwischen einem gegenwärtigen B-Feld und einem list-0-Referenzfeld repräsentiert, TDD einen zeitlichen Abstand zwischen einem list-1-Referenzrahmen und einem list-0-Referenzrahmen repräsentiert, und MV einen Bewegungsvektor eines entsprechend angeordneten Blocks in einem list-1-Referenzrahmen für den Direkt-Modus repräsentiert.
-
Ferner kann der obige Schritt, wenn ein Makroblock des B-Bildes in einem Feld-Modus (”field mode”) ist, ein entsprechend angeordneter Makroblock des list-1-Referenzbildes in einem Rahmen-Modus (”frame mode”) ist und ein list-0-Referenzbild für den Direkt-Modus dem list-1-Referenzbild zeitlich folgt, den Schritt des Berechnens der Direkt-Modus-Bewegungsvektoren MVF,i und MVB,i für jedes Feld i des B-Rahmens wie folgt umfassen: MVF,i = –TDB,i × MV/TDD MVB,i = (TDB,i – TDD) × MV/TDD oder Z = –TDB,i × 256/TDD MVF,i = (Z × MV + 128) >> 8 W = Z – 256 MVB,i = (W × MV + 128) >> 8, wobei TDB,i einen zeitlichen Abstand zwischen einem gegenwärtigen B-Feld und einem list-0-Referenzfeld repräsentiert, TDD einen zeitlichen Abstand zwischen einem list-1-Referenzrahmen und einem list-0-Referenzrahmen repräsentiert, und MV einen Bewegungsvektor eines entsprechend angeordneten Blocks in einem list-1-Referenzrahmen für den Direkt-Modus repräsentiert.
-
Ferner kann der obige Schritt, wenn ein Makroblock des B-Bildes in einem Rahmen-Modus (”frame mode”) ist, ein entsprechend angeordneter Makroblock in dem list-1-Referenzbild in einem Feld-Modus (”field mode”) ist und ein list-0-Referenzbild für den Direkt-Modus dem list-1-Referenzbild zeitlich vorangeht, den Schritt des Berechnens der Direkt-Modus-Bewegungsvektoren MVF und MVB des B-Rahmens aus der unten angegebenen Gleichung umfassen, wobei Bewegungsinformation eines entsprechend angeordneten Blocks in einem Feld 1 eines list-1-Referenzrahmens zur Berechnung der Direkt-Modus-Bewegungsvektoren verwendet wird: MVF = TDB × MV1/TDD,1 MVB = (TDB – TDD,1) × MV1/TDD,1 oder Z = TDB × 256/TDD,1 MVF = (Z × MV1 + 128) >> 8 W = Z – 256 MVB = (W × MV1 + 128) >> 8, wobei TDB einen zeitlichen Abstand zwischen einem gegenwärtigen B-Rahmen und einem list-0-Referenzrahmen repräsentiert, TDD,1 einen zeitlichen Abstand zwischen einem Feld 1 des list-1-Referenzrahmens und einem list-0-Referenzfeld repräsentiert, und MV1 einen Bewegungsvektor eines entsprechend angeordneten Blocks in dem Feld 1 des list-1-Referenzrahmens für den Direkt-Modus repräsentiert.
-
Ferner kann der obige Schritt, wenn ein Makroblock des B-Bildes in einem Rahmen-Modus (”frame mode”) ist, ein entsprechend angeordneter Makroblock des list-1-Referenzbilds in einem Feld-Modus (”field mode”) ist und ein list-0-Referenzbild für den Direkt-Modus dem list-1-Referenzbild zeitlich vorangeht, den Schritt des Berechnens der Direkt-Modus-Bewegungsvektoren MVF und MVB eines B-Rahmens aus der unten angegebenen Gleichung umfassen, wobei Bewegungsinformation eines entsprechend angeordneten Blocks in einem Feld 1 eines list-1-Referenzrahmens zur Berechnung der Direkt-Modus-Bewegungsvektoren verwendet wird: MVF = –TDB × MV1/TDD,1 MVB = –(TDB + TDD,1) × MV1/TDD,1 oder Z = –TDB × 256/TDD,1 MVF = (Z × MV1 + 128) >> 8 W = Z – 256 MVB = (W × MV1 + 128) >> 8, wobei TDB einen zeitlichen Abstand zwischen einem gegenwärtigen B-Rahmen und einem list-0-Referenzrahmen repräsentiert, TDD,1 einen zeitlichen Abstand zwischen einem Feld 1 des list-1-Referenzrahmens und einem list-0-Referenzfeld repräsentiert, und MV1 einen Bewegungsvektor eines entsprechend angeordneten Blocks in dem Feld 1 des list-1-Referenzrahmens für den Direkt-Modus repräsentiert.
-
In einer weiteren Ausgestaltung der Erfindung wird ein Verfahren zum Berechnen von Direkt-Modus-Bewegungsvektoren eines B Bildes (Doppel-Vorhersage-Bildes, ”Bi-predictive picture”) in einem Codiersystem für bewegte Bilder zum Extrahieren der Direkt-Modus-Bewegungsvektoren des B-Bildes bereitgestellt, umfassend die Schritte: wenn sowohl ein list-0-Referenzbild als auch ein list-1-Referenzbild für den Direkt-Modus dem B Bild zeitlich folgen, Skalieren eines Bewegungsvektors eines entsprechend angeordneten Blocks in dem list-1-Referenzbild für den Direkt-Modus, um einen list-0-Bewegungsvektor MVF und einen list-1-Bewegungsvektor MVB herzuleiten, und Berechnen der Direkt-Modus-Bewegungsvektoren des B-Bildes.
-
Vorzugsweise kann der obige Schritt, falls sowohl ein Makroblock des B-Bildes als auch ein entsprechend angeordneter Makroblock des list-1-Referenzbildes in einem Rahmen-Modus (”frame mode”) sind und das list-0-Referenzbild für den Direkt-Modus dem list-1-Referenzbild zeitlich folgt, den Schritt des Berechnens der Direkt-Modus-Bewegungsvektoren MVF und MVB des B-Bildes wie folgt umfassen: MVF = TDB × MV/TDD MVB = (TDB – TDD) × MV/TDD oder Z = TDB × 256/TDD MVF = (Z × MV + 128) >> 8 W = Z – 256 MVB = (W × MV + 128) >> 8, wobei TDB einen zeitlichen Abstand zwischen einem gegenwärtigen B-Rahmen und einem list-0-Referenzrahmen repräsentiert, TDD einen zeitlichen Abstand zwischen einem list-1-Referenzrahmen und dem list-0-Referenzrahmen repräsentiert, und MV einen Bewegungsvektor des entsprechend angeordneten Blocks in dem list-1-Referenzbild für den Direkt-Modus repräsentiert.
-
Ferner kann der obige Schritt, wenn sowohl ein Makroblock des B-Bildes und ein entsprechend angeordneter Makroblock des list-1-Referenzbildes in einem Rahmen-Modus (”frame mode”) sind und das list-0-Referenzbild für den Direkt-Modus dem list-1-Referenzbild zeitlich vorangeht, den Schritt des Berechnens der Direkt-Modus-Bewegungsvektoren MVF und MVB des B-Bildes wie folgt umfassen: MVF = –TDB × MV/TDD MVB = (TDB – TDD) × MV/TDD oder Z = – TDB × 256/TDD MVF (Z × MV + 128) >> 8 W = Z – 256 MVB = (W × MV + 128) >> 8, wobei TDB einen zeitlichen Abstand zwischen einem gegenwärtigen B-Rahmen und einem list-0-Referenzrahmen repräsentiert, TDD einen zeitlichen Abstand zwischen einem list-1-Referenzrahmen und dem list-0-Referenzrahmen repräsentiert, und MV einen Bewegungsvektor des entsprechend angeordneten Blocks in dem list-1-Referenzbild für den Direkt Modus repräsentiert.
-
Ferner kann der obige Schritt, wenn sowohl ein Makroblock des B-Bildes als auch ein entsprechend angeordneter Makroblock des list-1-Referenzbildes in einem Feld-Modus (”field mode”) sind und das list-0-Referenzbild für den Direkt-Modus dem list-1-Referenzbild zeitlich folgt, den Schritt des Berechnens der Direkt-Modus-Bewegungsvektoren MVF,i und MVB,i für jedes Feld i eines B-Rahmens wie folgt umfassen: MVF,i = TDB,1 × MVi/TDD,i MVB,i = (TDB,i – TDD,i) × MVi/TDD,i oder Z = TDB,i × 256/TDD,i MVF,i = (Z × MVi + 128) >> 8 W = Z – 256 MVB,i = (W × MVi + 128) >> 8, wobei TDB,i einen zeitlichen Abstand zwischen einem gegenwärtigen B-Feld und einem list-0-Referenzfeld repräsentiert, TDD,i einen zeitlichen Abstand zwischen einem list-1-Referenzfeld und dem list-0-Referenzfeld repräsentiert, und MVi einen Bewegungsvektor eines entsprechend angeordneten Blocks in einem list-1-Referenzfeld für den Direkt-Modus repräsentiert.
-
Ferner kann der obige Schritt, wenn sowohl ein Makroblock des B-Bildes als auch ein entsprechend angeordneter Makroblock des list-1-Referenzbildes in einem Feld-Modus (”field mode”) sind und das list-0-Referenzbild für den Direkt-Modus dem list-1-Referenzbild zeitlich vorangeht, den Schritt des Berechnens der Direkt-Modus-Bewegungsvektoren MVF,i und MVB,i für jedes Feld i eines B-Rahmens wie folgt umfassen: MVF,i = –TDB,i × MVi/TDD,i MVB,i = –(TDB,i – TDD,i) × MVi/TDD,i
-
oder Z = –TDB,i × 256/TDD,i MVF,i = (Z × MVi + 128) >> 8 W = Z – 256 MVB,i = (W × MVi + 128) >> 8 wobei TDB,i einen zeitlichen Abstand zwischen einem gegenwärtigen B-Feld und einem list-0-Referenzfeld repräsentiert, TDD,i einen zeitlichen Abstand zwischen einem list-1-Referenzfeld und dem list-0-Referenzfeld repräsentiert, und MVi einen Bewegungsvektor eines entsprechend angeordneten Blocks in einem list-1-Referenzfeld für den Direkt-Modus repräsentiert.
-
Ferner kann der obige Schritt, wenn ein Makroblock des B-Bildes in einem Feld-Modus (”field mode”) ist ein entsprechend angeordneter Makroblock das list-1-Referenzbildes in einem Rahmen-Modus (”frame mode”) ist und das list-0-Referenzbild für den Direkt-Modus dem list-1-Referenzbild zeitlich vorangeht, den Schritt des Berechnens der Direkt-Modus-Bewegungsvektoren MVF,i und MVB,i für jedes Feld i des B-Rahmens wie folgt umfassen: MVF,i = –TDB,i × MV/TDD MVB,i = (TDB,i – TDD) × MV/TDD oder Z = TDB,i × 256/TDD MVF,i = (Z × MV + 128) >> 8 W = Z – 256 MVB,i = (W × MV + 128) >> 8, wobei TDB,i einen zeitlichen Abstand zwischen einem gegenwärtigen B-Feld und einem list-0-Referenzfeld repräsentiert, TDD einen zeitlichen Abstand zwischen einem list-1-Referenzrahmen und einem list-0-Referenzrahmen repräsentiert, und MV einen Bewegungsvektor eines entsprechend angeordneten Blocks in einem list-1-Referenzrahmen für den Direkt-Modus repräsentiert.
-
Ferner kann der obige Schritt, wenn ein Makroblock des B-Bildes in einem Feld-Modus (”field mode”) ist, ein entsprechend angeordneter Makroblock das list-1-Referenzbildes in einem Rahmen-Modus (”frame mode”) ist und das list-0-Referenzbild für den Direkt-Modus dem list-1-Referenzbild zeitlich vorangeht, den Schritt des Berechnens der Direkt-Modus-Bewegungsvektoren MVF,i und MVB,i für jedes Feld i eines B-Rahmens wie folgt umfassen: MVF,i = –TDB,i × MV/TDD MVB,i = –(TDB,i – TDD) × MV/TDD oder Z = –TDB,i × 256/TDD MVF,i = (Z × MV + 128) >> 8 W = Z – 256 MVB,i = (W × MV + 128) >> 8, wobei TDB,i einen zeitlichen Abstand zwischen einem gegenwärtigen B-Feld und einem list-0-Referenzfeld repräsentiert, TDD einen zeitlichen Abstand zwischen einem list-1-Referenzrahmen und einem list-0-Referenzrahmen repräsentiert, und MV einen Bewegungsvektor eines entsprechend angeordneten Blocks in einem list-1-Referenzrahmen für den Direkt-Modus repräsentiert.
-
Ferner kann der obige Schritt, wenn ein Makroblock des B-Bildes in einem Rahmen-Modus (”frame mode”) ist, ein entsprechend angeordneter Makroblock das list-1-Referenzbildes in einem Feld-Modus (”field mode”) ist und das list-0-Referenzbild für den Direkt-Modus dem list-1-Referenzbild zeitlich folgt, den Schritt des Berechnens der Direkt-Modus-Bewegungsvektoren MVF und MVB des B-Rahmens aus der unten angegebenen Gleichung umfassen, wobei Bewegungsinformation eines entsprechend angeordneten Blocks in einem Feld 0 eines list-1-Referenzrahmens zur Berechnung der Direkt-Modus-Bewegungsvektoren verwendet wird: MVF = TDB × MV0/TDD,0 MVB = (TDB – TDD,0) × MV0/TDD,0 oder Z = TDB × 256/TDD,0 MVF = (Z × MV0 + 128) >> 8 W = Z – 256 MVB = (W × MV0 + 128) >> 8, wobei TDB einen zeitlichen Abstand zwischen einem gegenwärtigen B-Rahmen und einem list-0-Referenzrahmen repräsentiert, TDD0 einen zeitlichen Abstand zwischen einem Feld 0 des list-1-Referenzrahmens und einem list-0-Referenzfeld repräsentiert, und MV0 einen Bewegungsvektor eines entsprechend angeordneten Blocks in dem Feld 0 des list-1-Referenzrahmens für den Direkt-Modus repräsentiert. Ferner kann der obige Schritt, wenn ein Makroblock des B-Bildes in einem Rahmen-Modus (”frame mode”) ist, ein entsprechend angeordneter Makroblock des list-1-Referenzbildes in einem Feld-Modus (”field mode”) ist und das list-0-Referenzbild für den Direkt-Modus dem list-1-Referenzbild zeitlich vorangeht, den Schritt des Berechnens der Direkt-Modus-Bewegungsvektoren MVF und MVB des B-Rahmens aus den unten angegebenen Gleichungen umfassen, wobei Bewegungsinformation eines entsprechend angeordneten Blocks in einem Feld 0 eines list-1-Referenzrahmens zur Berechnung der Direkt-Modus-Bewegungsvektoren verwendet wird: MVF = –TDB × MV0/TDD,0 MVB = (TDB – TDD,0) × MV0/TDD,0 oder Z = –TDB × 256/TDD,0 MVF = (Z × MV0 + 128) >> 8 W = Z – 256 MVB = (W × MV0 + 128) >> 8, wobei TDB einen zeitlichen Abstand zwischen einem gegenwärtigen B-Rahmen und einem list-0-Referenzrahmen repräsentiert, TDD,0 einen zeitlichen Abstand zwischen einem Feld 0 des list-1-Referenzrahmens und einem list-0-Referenzfeld repräsentiert, und MV0 einen Bewegungsvektor eines entsprechend angeordneten Blocks in dem Feld 0 des list-1-Referenzrahmens für den Direkt-Modus repräsentiert.
-
Gemäß einer weiteren vorteilhaften Ausgestaltung der vorliegenden Erfindung wird ein Verfahren zum Berechnen von Direkt-Modus-Bewegungsvektoren eines B-Bildes in einem Codiersystem für bewegte Bilder zum Extrahieren der Direkt-Modus-Bewegungsvektoren des B-Bildes bereitgestellt, umfassend die Schritte: Zuweisen eines Vorzeichens zu einem zeitlichen Zwischen-Bild-Distanzwert, Skalieren eines Bewegungsvektors eines entsprechend angeordneten Blocks in einem list-1-Referenzbild für den Direkt-Modus unabhängig von Orten der list-0- und list-1-Referenzbilder für den Direkt-Modus, um einen list-0-Bewegungsvektor MVF und einen list-1-Bewegungsvektor MVB herzuleiten, und Berechnen der Direkt-Modus-Bewegungsvektoren des B-Bildes.
-
Vorzugsweise kann der obige Schritt, wenn sowohl ein Makroblock des B-Bildes als auch ein entsprechend angeordneter Makroblock des list-1-Referenzbildes in einem Rahmen-Modus (”frame mode”) sind, den Schritt des Berechnens der Direkt-Modus-Bewegungsvektoren MVF und MVB des B-Bildes wie folgt umfassen: MVF = TDB × MV/TDD MVB = (TDB – TDD) × MV/TDD oder Z = TDB × 256/TDD MVF=(Z × MV + 128) >> 8 W = Z – 256 MVB = (W × MV + 128) >> 8, wobei TDB einen zeitlichen Abstand zwischen einem gegenwärtigen B-Feld und einem list-0-Referenzrahmen repräsentiert, welchem ein positives (+) Vorzeichen zugeordnet wird, wenn er von dem B-Rahmen ausgehend gemessen wird, und dem ein negatives (–) Vorzeichen zugewiesen wird, wenn er von dem list-0-Referenzrahmen gemessen wird, TDD einen zeitlichen Abstand zwischen einem list-1-Referenzrahmen und dem list-0-Referenzrahmen repräsentiert, welchem ein positives (+) Vorzeichen zugeordnet wird, wenn er von dem list-1-Referenzrahmen aus gemessen wird und dem ein negatives (–) Vorzeichen zugewiesen wird, wenn er von dem list-0-Referenzrahmen gemessen wird, und MV einen Bewegungsvektor des entsprechend angeordneten Blocks in dem list-1-Referenzbild für den Direkt-Modus repräsentiert. Ferner kann der obige Schritt, falls sowohl ein Makroblock des B-Bildes als auch ein entsprechend angeordneter Block des list-1-Referenzbildes in einem Feld-Modus (”field mode”) sind, den Schritt des Berechnens der Direkt-Modus-Bewegungsvektoren MVF,i und MVB,i für jedes Feld i des B-Rahmens wie folgt umfassen: MVF,i = TDB,i × MVi/TDD,i MVB,i = (TDB,i – TDD,i) × MVi/TDD,i oder Z = TDB,i × 256/TDD,i MVF,i = (Z × MVi + 128) >> 8 W = Z – 256 MVB,i = (W × MVi + 128) >> 8, wobei TDB,i einen zeitlichen Abstand zwischen einem gegenwärtigen B-Feld und einem list-0-Referenzfeld repräsentiert, welchem ein positives (+) Vorzeichen zugeordnet wird, wenn er von dem B-Feld ausgehend gemessen wird, und dem ein negatives (–) Vorzeichen zugeordnet wird, wenn er von dem list-0-Referenzfeld gemessen wird, TDD,i einen zeitlichen Abstand zwischen einem list-1-Referenzfeld und dem list-0-Referenzfeld repräsentiert, welchem ein positives (+) Vorzeichen zugeordnet wird, wenn er von dem list-1-Referenzfeld gemessen wird, und welchem ein negatives (–) Vorzeichen zugeordnet wird, wenn er von dem list-0-Referenzfeld aus gemessen wird, und MVi einen Bewegungsvektor des entsprechend angeordneten Blocks in einem list-1-Referenzfeld für den Direkt-Modus repräsentiert.
-
Ferner kann der obige Schritt, wenn ein Makroblock des B-Bildes in einem Feld-Modus (”field mode”) ist, und ein entsprechend angeordneter Makroblock des list-1-Referenzbildes in einem Rahmen-Modus (”frame mode”) ist, den Schritt des Berechnens der Direkt-Modus-Bewegungsvektoren MVF,i und MVB,i für jedes Feld i des B-Rahmens wie folgt umfassen: MVF,i = TDB,i × MV/TDD MVB,i = (TDB,i – TDD) × MV/TDD oder Z = TDB,i × 256/TDD MVF,i = (Z × MV + 128) >> 8 W = Z – 256 MVB,i = (W × MV + 128) >> 8, wobei TDB,i einen zeitlichen Abstand zwischen einem gegenwärtigen B-Feld und einem list-0-Referenzfeld repräsentiert, welchem ein positives (+) Vorzeichen zugeordnet wird, wenn er von dem B-Feld aus gemessen wird, und welchem ein negatives (–) Vorzeichen zugeordnet wird, wenn er von dem list-0-Referenzfeld aus gemessen wird, TDD einen zeitlichen Abstand zwischen dem list-1-Referenzrahmen und dem list-0-Referenzrahmen repräsentiert, welchem ein positives (+) Vorzeichen zugeordnet wird, wenn er von dem list-1-Referenzrahmen aus gemessen wird, und welchem ein negatives (–) Vorzeichen zugeordnet wird, wenn er von dem list-0-Referenzrahmen aus gemessen wird, und MV einen Bewegungsvektor eines entsprechend angeordneten Blocks in einem list-1-Referenzrahmen für den Direkt-Modus repräsentiert.
-
Ferner kann der obige Schritt, wenn ein Makroblock des B-Bildes in einem Rahmen-Modus (”frame mode”) ist, ein entsprechend angeordneter Makroblock des list-1-Referenzbildes in einem Feld-Modus (”field mode”) ist, und das list-1-Referenzbild dem B-Bild zeitlich vorangeht, den Schritt des Berechnens der Direkt-Modus-Bewegungsvektoren MVF und MVB eines B-Rahmens aus der unten angegebenen Gleichung umfassen, wobei Bewegungsinformation eines entsprechend angeordneten Blocks in einem Feld 0 eines list-1-Referenzrahmens zum Berechnen der Direkt-Modus-Bewegungsvektoren verwendet wird: MVF = TDB × MV0/TDD,0 MVB = (TDB – TDD,0) × MV0/TDD,0 oder Z = TDB × 256/TDD,0 MVF = (Z × MV0 + 128) >> 8 W = Z – 256 MVB = (W × MV0 + 128) >> 8, wobei TDB einen zeitlichen Abstand zwischen einem gegenwärtigen B-Feld und einem list-0-Referenzrahmen repräsentiert, welchem ein positives (+) Vorzeichen zugeordnet wird, wenn er von dem B-Rahmen aus gemessen wird, und welchem ein negatives (–) Vorzeichen zugeordnet wird, wenn er von dem list-0-Referenzfeld aus gemessen wird, TDD,0 einen zeitlichen Abstand zwischen einem Feld 0 des list-1-Referenzrahmens und einem list-0-Referenzfeld repräsentiert, welchem ein positives (+) Vorzeichen zugeordnet wird, wenn er von dem Feld 0 des list-1-Referenzrahmens aus gemessen wird, und welchem ein negatives (–) Vorzeichen zugeordnet wird, wenn er von dem list-0-Referenzfeld aus gemessen wird, und MV0 einen Bewegungsvektor eines entsprechend angeordneten Blocks in dem Feld 0 des list-1-Referenzrahmens für den Direkt-Modus repräsentiert.
-
Ferner kann der obige Schritt, wenn ein Makroblock des B-Bildes in einem Rahmen-Modus (”frame mode”) ist, ein entsprechend angeordneter Makroblock des list-1-Referenzbildes in einem Feld-Modus (”field mode”) ist, und das list-1-Referenzbild dem B-Bild zeitlich vorangeht, den Schritt des Berechnens der Direkt-Modus-Bewegungsvektoren MVF und MVB eines B-Rahmens aus der unten angegebenen Gleichung umfassen, wobei Bewegungsinformation eines entsprechend angeordneten Blocks in einem Feld 0 eines list-1-Referenzrahmens zum Berechnen der Direkt-Modus-Bewegungsvektoren verwendet wird: MVF = TDB × MV1/TDD,1 MVB = (TDB – TDD,1) × MV1/TDD,1 oder Z = TDB × 256/TDD,1 MVF = (F × MV1 + 128) >> 8 W = Z – 256 MVB = (W × MV1 + 128) >> 8, wobei TDB einen zeitlichen Abstand zwischen einem gegenwärtigen B-Rahmen und einem list-0-Referenzrahmen repräsentiert, welchem ein positives (+) Vorzeichen zugeordnet wird, wenn er von dem B-Rahmen aus gemessen wird, und welchem ein negatives (–) Vorzeichen zugeordnet wird, wenn er von dem list-0-Referenzrahmen aus gemessen wird, TDD,1 einen zeitlichen Abstand zwischen einem Feld 1 eines list-1-Referenzrahmens und einem list-0-Referenzfeld repräsentiert, welchem ein positives (+) Vorzeichen zugeordnet wird, wenn er von dem Feld 1 des list-1-Referenzrahmens aus gemessen wird, und welchem ein negatives (–) Vorzeichen zugeordnet wird, wenn er von dem list-0-Referenzfeld aus gemessen wird, und MV1 einen Bewegungsvektor eines entsprechend angeordneten Blocks in dem Feld 1 des list-1-Referenzrahmens für den Direkt-Modus repräsentiert.
-
Gemäß einer weiteren vorteilhaften Ausgestaltung der vorliegenden Erfindung wird ein Verfahren zum Berechnen von Direkt-Modus-Bewegungsvektoren eines B-Bildes in einem Codiersystem für bewegte Bilder zum Extrahieren der Direkt-Modus-Bewegungsvektoren des B-Bildes bereitgestellt, umfassend die Schritte: wenn ein entsprechend angeordneter Makroblock in einem list-1-Referenzbild für den Direkt-Modus in einem Intra-Modus (”intra mode”) ist, Vorhersagen und Berechnen von list-0- und list-1-Referenzbildern und Bewegungsvektoren aus benachbarten Blöcken eines Makroblocks des zu codierenden B-Bildes auf der Grundlage einer räumlichen Redundanz, und Berechnen der Direkt-Modus-Bewegungsvektoren des B-Bildes.
-
Vorzugsweise kann der obige Schritt, wenn benachbarte Blöcke A, B und C des zu codierenden Makroblocks sich auf verschiedene Referenzbilder beziehen, den Schritt des Auswählens eines Referenzbildes mit einem kleinsten Index als Referenzbild für jede Liste umfassen.
-
Ferner kann der obige Schritt, wenn zwei oder mehr benachbarte Blöcke des zu codierenden Makroblocks sich auf ein Referenzbild mit einem gleichen Index beziehen, den Schritt des Auswählens dieses Referenzbildes als das Referenzbild für jede Liste umfassen.
-
Ferner kann der obige Schritt die Schritte umfassen: Setzen seiner list-0- und list-1-Bewegungsvektoren zu 0, wenn einer der benachbarten Blöcke A, B und C des zu codierenden Makroblocks in dem Intra-Modus (”intra mode”) ist, Auswählen eines Bewegungsvektors, welcher die gleiche Richtung hat wie ein zeitlicher Ort des Referenzbildes für jede Liste eines benachbarten Blocks, und Gewinnen des Bewegungsvektors für jede Liste durch eine Mittelungsoperation, oder Auswählen von nur einem der beiden Bewegungsvektoren dieses Blocks, wenn ein benachbarter Block zwei Bewegungsvektoren mit den gleichen Richtungen aufweist, und Gewinnen des Bewegungsvektors für jede Liste durch eine Medianoperation unter Einbeziehung des ausgewählten Bewegungsvektors.
-
Ferner kann der obige Schritt, wenn ein effektiver Referenzbildindex für jeden list-Modus nicht hergeleitet werden kann, den Schritt des Setzens der list-0- und list-1-Referenzbildindizes zu 0 und des Setzens des Bewegungsvektors für jeden list-Modus zu 0 umfassen.
-
Die obigen und weitere Ziele, Merkmale und weiteren Vorteile der vorliegenden Erfindung werden aus der nachfolgenden detaillierten Beschreibung unter Bezugnahme auf die beiliegenden Zeichnungen verständlicher, in welchen:
-
1a bis 1c Ansichten sind, welche list-1-Referenzbilder für den Direkt-Modus in einem allgemeinen IBBBP-Muster erläutern;
-
2a bis 2c Ansichten sind, welche list-1-Referenzbilder für den Direkt-Modus in einem allgemeinen IBBB-Muster erläutern;
-
3a bis 3h Ansichten sind, welche Fälle erläutern, wo ein list-1-Referenzbild für den Direkt-Modus einem B-Bild zeitlich folgt (L0 MV: list-0-Bewegungsvektor und L1 MV: list-1-Bewegungsvektor);
-
4a bis 4h Ansichten sind, welche Fälle erläutern, wo ein list-1-Referenzbild für den Direkt-Modus einem B-Bild zeitlich vorangeht (L0 MV: list-0-Bewegungsvektor und L1 MV: list-1-Bewegungsvektor);
-
5 eine Ansicht ist, welche die Bewegungsvektor-Vorhersage eines Blocks E erläutert, und zwar unter Verwendung von Bewegungsvektoren von benachbarten Blöcken A, B und C unter Berücksichtigung einer allgemeinen räumlichen Redundanz;
-
6a bis 6c Ansichten sind, welche Fälle erläutern, wo sowohl ein Makroblock eines B-Bildes als auch ein entsprechend angeordneter Makroblock in einem list-1-Referenzbild für den Direkt-Modus in einem Rahmen-Modus sind und das list-1-Referenzbild dem B-Bild zeitlich folgt;
-
7a bis 7d Ansichten sind, welche Fälle erläutern, wo sowohl ein Makroblock eines B-Bildes und ein entsprechend angeordneter Makroblock in einem list-1-Referenzbild für den Direkt-Modus in einem Feld-Modus sind und das list-1-Referenzbild dem B-Bild zeitlich folgt;
-
8a bis 8c Ansichten sind, welche Fälle erläutern, wo ein Makroblock eines B-Bildes in einem Feld-Modus ist, ein entsprechend angeordneter Makroblock in einem list-1-Referenzbild für den Direkt-Modus in einem Rahmen-Modus ist und das list-1-Referenzbild dem B-Bild zeitlich folgt;
-
9a bis 9c Ansichten sind, welche Fälle erläutern, wo ein Makroblock eines B-Bildes in einem Rahmen-Modus ist, ein entsprechend angeordneter Makroblock in einem list-1-Referenzbild für den Direkt-Modus in einem Feld-Modus ist und das list-1-Referenzbild dem B-Bild zeitlich folgt;
-
10a und 10b Ansichten sind, welche Fälle erläutern, wo sowohl ein Makroblock eines B-Bildes und ein entsprechend angeordneter Makroblock in einem list-1-Referenzbild für den Direkt-Modus in einem Rahmen-Modus sind und das list-1-Referenzbild dem B-Bild zeitlich vorangeht;
-
11a bis 11d Ansichten sind, welche Fälle erläutern, wo sowohl ein Makroblock eines B-Bildes als auch ein entsprechend angeordneter Makroblock in einem list-1-Referenzbild für den Direkt-Modus in einem Feld-Modus sind und das list-1-Referenzbild dem B-Bild zeitlich vorangeht;
-
12a und 12b Ansichten sind, welche Fälle erläutern, wo ein Makroblock eines B-Bildes in einem Feld-Modus ist, ein entsprechend angeordneter. Makroblock in einem list-1-Referenzbild für einen allgemeinen Direkt-Modus in einem Rahmen-Modus ist und das list-1-Referenzbild dem B-Bild zeitlich vorangeht; und
-
13a und 13b Ansichten sind, welche Fälle erläutern, wo ein Makroblock eines B-Bildes in einem Rahmen-Modus ist, ein entsprechend angeordneter Makroblock in einem list-1-Referenzbild für einen allgemeinen Direkt-Modus in einem Feld-Modus ist und das list-1-Referenzbild dem B-Bild zeitlich vorangeht;
-
Die vorliegende Erfindung schlägt ein Verfahren zum Herleiten von Direkt-Modus-Bewegungsvektoren, wenn ein entsprechend angeordneter Makroblock in einem list-1-Referenzbild für den Direkt-Modus in einem Intra-Modus ist, und ein Verfahren zum Gewinnen der Direkt-Modus-Bewegungsvektoren in einem Fall, wo das list-1-Referenzbild einem B-Bild zeitlich folgt, und in einem Fall, wo das list-1-Referenzbild dem B-Bild zeitlich vorangeht, vor.
-
Die vorliegende Erfindung schlägt ferner ein Verfahren zum Berechnen der Direkt-Modus-Bewegungsvektoren unabhängig von den Orten von list-0- und list-1-Referenzbildern für den Direkt-Modus durch Zuordnen eines Vorzeichens zu einem zeitlichen Zwischen-Bild-Abstandswert vor, um Algorithmen zu vereinfachen, welche zur Berechnung der Direkt-Modus-Bewegungsvektoren verwendet werden.
-
Andererseits werden ein Rahmen-Modus (”frame mode”) und ein Feld-Modus (”field mode”) auf einer Bild-Ebene umgeschaltet, so dass das B-Bild und das list-1-Referenzbild in dem Rahmen-Modus oder dem Feld-Modus codiert werden können. Als Folge davon haben ein Makroblock des B-Bildes und ein entsprechend angeordneter Makroblock des list-1-Referenzbildes vier Arten von Rahmen/Feld-codierten Kombinationen.
-
[1] DER FALL, WO DER ENTSPRECHEND ANGEORDNETE MAKROBLOCK DES LIST-1-REFERENZBILDES IN DEM INTRA-MODUS IST
-
Wie in den 3f und 4f gezeigt, kann ein entsprechend angeordneter Makroblock in einem list-1-Referenzbild für den Direkt-Modus in dem Intra-Modus sein, und zwar unabhängig von einer zeitlichen Anordnung des Referenzbildes. Da der Makroblock in diesem Modus keine Bewegungsinformation hat, setzt ein herkömmliches Verfahren die Direkt-Modus-Bewegungsvektoren zu 0 und definiert ein list-0-Referenzbild als das zuletzt decodierte Bild. Das herkömmliche Verfahren kann jedoch eine hohe Codiereffizienz nicht garantieren. Deshalb tätigt die vorliegende Erfindung eine Vorhersage und Berechnung von list-0- und list-1-Referenzbildern und Bewegungsvektoren aus einem Makroblock eines zu codierenden B-Bildes benachbarten Blöcken, und zwar auf der Grundlage einer räumlichen Redundanz.
-
Ein Referenzbild-Index für jeden list-Modus wird auf folgende Weise gewonnen. 5 ist eine Ansicht, welche die Bewegungsvektor-Vorhersage eines Blocks E unter Verwendung von Bewegungsvektoren benachbarter Blöcke A, B und C unter Berücksichtigung einer allgemeinen räumlichen Redundanz erläutert.
- – Wenn die benachbarten Blöcke A, B und C verschiedene Referenzbild-Indizes haben, wird ein kleinster der Referenzbild-Indizes als ein Referenzbild-Index für den Direkt-Modus bestimmt.
- – Wenn zwei der benachbarten Blöcke den gleichen Referenzbild-Index haben, wird dieser Index als ein Referenzbild-Index für den Direkt-Modus bestimmt.
- – Wenn alle der benachbarten Blöcke den gleichen Referenzbild-Index haben, wird dieser Index als ein Referenzbild-Index für den Direkt-Modus bestimmt.
Ein Bewegungsvektor für jeden list-Modus wird durch die folgende Bewegungsvektor-Vorhersage gewonnen. Wenn zu er dieser Zeit einer der benachbarten Blöcke A, B und C in dem Intra-Modus ist, werden seine list-0- und list-1-Bewegungsvektoren zu 0 gesetzt.
- – Ein Bewegungsvektor, welcher die gleiche Richtung hat wie ein zeitlicher Ort des wie oben genannt gewonnenen Referenzbildes für jeden list-Modus wird aus einem benachbarten Block ausgewählt, und ein Bewegungsvektor für jeden list-Modus wird durch eine Median-Operation gewonnen.
- – Wenn ein benachbarter Block zwei Bewegungsvektoren mit den gleichen Richtungen hat, wird nur einer der beiden Bewegungsvektoren in diesem Block ausgewählt und in die Median-Operation einbezogen.
-
Wenn andererseits keiner der effektiven list-0- und list-1-Referenzbild-Indizes von einem benachbarten Block hergeleitet werden kann, werden diese zu 0 gesetzt und ein Bewegungsvektor für jeden list-Modus wird zu 0 gesetzt.
-
[2] DER FALL, WO DAS LIST-1-REFERENZBILD FÜR DEN DIREKT-MODUS DEM B-BILD ZEITLICH FOLGT
-
FALL 1: SOWOHL DER MAKROBLOCK DES B-BILDES ALS AUCH DER ENTSPRECHEND ANGEORDNETE MAKROBLOCK DES LIST-1-REFERENZBILDES SIND IN DEM RAHMEN-MODUS
-
Wie aus den 3a bis 3h ersichtlich ist, kann der entsprechend angeordnete Block in dem list-1-Referenzbild einen Bewegungsvektor oder zwei Bewegungsvektoren haben. Gemäß der vorliegenden Erfindung wird, wenn der entsprechend angeordnete Block zwei Bewegungsvektoren hat, einer (L0 MV oder L1 MV) der beiden Bewegungsvektoren ausgewählt, und die Direkt-Modus-Bewegungsvektoren werden von dem ausgewählten Bewegungsvektor hergeleitet (dies wird nachfolgend beschrieben auf der Grundlage des Falls, wo L0 MV (list-0-Bewegungsvektor) ausgewählt ist).
-
Folglich können die 3a und 3c einfach als 6a dargestellt werden, die 3b, 3d und 3e als 6c und die 3g und 3h als 6b.
-
Wenn das list-0-Referenzbild und das list-1-Referenzbild für den Direkt-Modus zeitlich vor bzw. nach dem B-Bild angeordnet sind (6a), oder wenn sowohl das list-0- als auch das list-1-Referenzbild für den Direkt-Modus zeitlich nach dem B-Bild angeordnet sind und das list-0-Referenzbild dem list-1-Referenzbild zeitlich folgt (6b), werden die Direkt-Modus-Bewegungsvektoren MVF und MVB wie folgt berechnet: MVF = TDB × MV/TDD MVB = (TDB – TDD) × MV/TDD wobei TDB einen zeitlichen Abstand zwischen einem gegenwärtigen B-Rahmen und einem list-0-Referenzrahmen repräsentiert, und TDD einen zeitlichen Abstand zwischen einem list-1-Referenzrahmen und dem list-0-Referenzrahmen repräsentiert.
-
Unter Anwendung einer Bit-Operation auf die Berechnung der Direktmodus-Bewegungsvektoren MVF und MVB derselben, kann die obige Gleichung zur Erleichterung derselben wie folgt ausgedrückt werden: Z = TDB × 256/TDD MVF = (Z × MV + 128) >> 8 W = Z – 256 MVB = (W × MV + 128) >> 8
-
Wenn sowohl das list-0- als auch das list-1-Referenzbild für den Direktmodus zeitlich nach dem B-Bild angeordnet ist, und das list-0-Referenzbild dem list-1-Referenzbild zeitlich vorangeht (6c), werden die Direktmodus-Bewegungsvektoren MVF und MVB wie folgt berechnet: MVF = –TDB × MV/TDD MVB = –(TDB + TDD) × MV/TDD
-
Diese Gleichung kann wie folgt ausgedrückt werden: Z = – TDB × 256/TDD MVF = (Z × MV + 128) >> 8 W = Z – 256 MVB = (W × MV + 128) >> 8
-
FALL 2: SOWOHL DER MAKROBLOCK DES B-BILDES ALS AUCH DER ENTSPRECHEND ANGEORDNETE MAKROBLOCK DES LIST-1-REFERENZBILDES SIND IN DEM FELD-MODUS
-
7a bis 7d zeigen Fälle, wo sowohl der Makroblock des B-Bildes als auch der entsprechend angeordnete Makroblock des list-1-Referenzbilds in dem Feld-Modus sind. Jeder Bewegungsvektor des Makroblocks des B-Bildes wird von einem Bewegungsvektor eines entsprechend angeordneten Blocks in einem list-1-Referenzfeld gleicher Parität hergeleitet.
-
Wenn die list-0- und list-1-Referenzbilder für den Direktmodus zeitlich vor bzw. nach dem B-Bild angeordnet sind (7a), oder wenn sowohl das list-0- als auch das list-1-Referenzbild für den Direktmodus zeitlich nach dem B-Bild angeordnet sind und das list-0-Referenzbild dem list-1-Referenzbild zeitlich folgt (7b), werden die list-0 und list-1-Bewegungsvektoren MVF,i und MVB,i für jedes Feld i eines B-Rahmens (i = 0 bezeichnet ein erstes Feld und i = 1 bezeichnet ein zweites Feld) wie folgt berechnet: MVF,i = TDB,i × MVi/TDD,i MVB,i = (TDB,i – TDD,i) × MVi/TDD,i wobei Mvi einen Bewegungsvektor eines entsprechend angeordneten Blocks eines Felds i in einem list-1-Referenzrahmen bezeichnet, TDB,i einen zeitlichen Abstand zwischen einem gegenwärtigen B-Feld und einem list-0-Referenzfeld repräsentiert, und TDD,i einen zeitlichen Abstand zwischen einem list-1-Referenzfeld und dem list-0-Referenzfeld repräsentiert.
-
Die obigen Gleichungen können wie folgt ausgedrückt werden: Z = TDB,i × 256/TDD,i MVF,i = (Z × MVi + 128) >> 8 W = Z – 256 MVB,i = (W × MVi + 128) >> 8
-
Wenn, da der entsprechend angeordnete Block des Felds i in dem list-1-Referenzrahmen einen Bewegungsvektor hat, der zu einem Feld in einem dem B-Bild zeitlich nachfolgenden Rahmen zeigt, sowohl das list-0- als auch das list-1-Referenzbild für den Direktmodus zeitlich nach dem B-Bild angeordnet sind und das list-0-Referenzbild dem list-1-Referenzbild zeitlich vorangeht (7c und d), werden die Direktmodus-list-0- und -list-1-Bewegungsvektoren MVF,i und MVB,i wie folgt berechnet: MVF,i = –TDB,i × MVi/TDD,i MVB,i = –(TDB,i + TDD,i) × MVi/TDD,i
-
Die obigen Gleichungen können wie folgt ausgedrückt werden: Z = –TDB,i × 256/TDD,i MVF,i = (Z × MVi + 128) >> 8 W = Z – 256 MVB,i = (W × MVi + 128) >> 8
-
FALL 3: DER MAKROBLOCK DES B-BILDS IST IN DEM FELDMODUS UND DER ENTSPRECHEND ANGEORDNETE MAKROBLOCK DES LIST-1-REFERENZBILDS IST IN DEM RAHMENMODUS
-
Die 8a bis 8c zeigen Fälle, wo der Makroblock des B Bilds in dem Feldmodus und der entsprechend angeordnete Makroblock des list-1-Referenzbilds in dem Rahmen-Modus. Hierbei soll die vertikale Koordinate des gegenwärtigen Makroblocks ycurrent und die vertikale Koordinate des entsprechend angeordneten Makroblocks des list-1-Referenzbilds yco-located sein, und es wird die Beziehung Yco-located = 2 × ycurrent zwischen den beiden Koordinaten erstellt. Auch sind list-0- und list-1-Referenzfelder mit den gleichen Paritäten wie die der der list-0- und list-1-Referenzrahmen vorhanden.
-
Wenn die list-0- und list-1-Referenzbilder für den Direktmodus zeitlich vor bzw. nach dem B-Bild angeordnet sind (8a), oder wenn sowohl das list-0- als auch das list-1-Referenzbild für den Direktmodus zeitlich nach dem B-Bild angeordnet sind und das list-0-Referenzbild dem list-1-Referenzbild zeitlich folgt (8b), werden die list-0- und list-1-Bewegungsvektoren MVF,i und MVB,i für jedes Feld i des B-Rahmens wie folgt berechnet: MVF,i = TDB,i × MV/TDD MVB,i = (TDB,i – TDD) × MV/TDD
-
Die obige Gleichung kann wie folgt ausgedrückt werden: Z = TDB,i × 256/TDD MVF,i = (Z × MV + 128) >> 8 W = Z – 256 MVB,i = (W × MV + 128) >> 8
-
Wenn, da der entsprechend angeordnete Block in dem list-1-Referenzrahmen einen Bewegungsvektor hat, der zu einem dem B-Bild zeitlich nachfolgenden Rahmen zeigt, sowohl das list-0- als auch das list-1-Referenzbild für den Direktmodus nach dem B-Bild angeordnet sind und das list-0-Referenzbild dem list-1-Referenzbild zeitlich vorangeht (8c), werden die list-0 und list-1-Beweungsvektoren MVF,i und MVB,i für jedes Feld des B-Rahmens wie folgt berechnet: MVF,i = –TDB,i × MV/TDD MVB,i = –(TDB,i + TDD) × MV/TDD
-
Die obige Gleichung kann wie folgt ausgedrückt werden: Z = –TDB,i × 256/TDD MVF,i = (Z × MV + 128) >> 8 W = Z – 256 MVB,i = (W × MV + 128) >> 8, wobei TDB,i einen zeitlichen Abstand zwischen dem gegenwärtigen B-Feld und dem list-0-Referenzfeld repräsentiert, TDD einen zeitlichen Abstand zwischen dem list-1-Referenzrahmen und dem list-0-Referenzrahmen repräsentiert, und MV einen Bewegungsvektor des entsprechend angeordneten Blocks in dem list-1-Referenzrahmen für den Direktmodus repräsentiert.
-
FALL 4: DER MAKROBLOCK DES B-BILDS IST IN DEM RAHMENMODUS UND DER ENTSPRECHEND ANGEORDNETE MAKROBLOCK DES LIST-1-REFERENZBILDS IST IN DEM FELDMODUS
-
Die 9a bis 9c zeigen Fälle, wo der Makroblock des B-Bilds in dem Rahmen-Modus ist und der entsprechend angeordnete Makroblock des list-1-Referenzbilds in dem Feld-Modus ist. Es sei hier die vertikale Koordinate des gegenwärtigen Makroblocks ycurrent und die vertikale Koordinate des entsprechend angeordneten Makroblocks des list-1-Referenzbilds yco-located, und es kann die Relation yco-located = ycurrent/2 zwischen den beiden Koordinaten aufgestellt werden. Ebenso wird, da das Feld 0 des list-1-Referenzrahmens zeitlich dem B-Bild näher ist als dessen Feld 1, Bewegungsinformation des entsprechend angeordneten Blocks des Felds 0 zur Berechnung der Direktmodus-Bewegungsvektoren verwendet.
-
Wenn die list-0- und list-1-Referenzbilder für den Direktmodus zeitlich vor bzw. nach dem B-Bild angeordnet sind (9a), oder wenn sowohl das list-0- als auch das list-1-Referenzbild für den Direktmodus zeitlich nach dem B-Bild angeordnet sind und das list-0-Referenzbild dem list-1-Referenzbild zeitlich folgt (9b), werden die Direkt-Modus-list-0- und -list-1-Bewegungsvektoren MVF und MVB des B-Rahmens wie folgt berechnet: MVF = TDB × MV0/TDD,0 MVB = (TDB – TDD,0) × MV0/TDD,0
-
Die obige Gleichung kann wie folgt ausgedrückt werden: Z = TDB × 256/TDD,0 MVF = (Z × MV0 + 128) >> 8 W = Z – 256 MVB = (W × MV0 + 128) >> 8
-
Wenn, da der entsprechend angeordnete Block des Felds 0 des list-1-Referenzrahmens einen Bewegungsvektor hat, der zu einem Feld eines dem B-Bild zeitlich nachfolgenden Rahmen zeigt, sowohl das list-0 als auch das list-1-Referenzbild für den Direktmodus zeitlich nach dem B-Bild angeordnet sind und das list-0-Referenzbild dem list-1-Referenzbild zeitlich vorangeht (9c), werden die list-0 und list-1-Bewegungsvektoren MVF und MVB wie folgt berechnet: MVF = –TDB × MV0/TDD,0 MVB = –(TDB + TDD,0) × MV0/TDD,0
-
Die obige Gleichung kann wie folgt ausgedrückt werden: Z = –TDB × 256/TDD,0 MVF = (Z × MV0 + 128) >> 8 W = Z – 256 MVB = (W × MV0 + 128) >> 8, wobei TDB einen zeitlichen Abstand zwischen dem gegenwärtigen B-Rahmen und dem list-0-Referenzrahmen repräsentiert, TDD,0 einen zeitlichen Abstand zwischen einem Feld 0 des list-1-Referenzrahmens und dem list-0-Referenzfeld repräsentiert, und MV0 einen Bewegungsvektor des entsprechend angeordneten Blocks in Feld 0 des list-1-Referenzrahmens für den Direktmodus repräsentiert
-
[3] DER FALL, WO DAS LIST-1-REFERENZBILD FÜR DEN DIREKTMODUS DEM B-BILD ZEITLICH VORANGEHT
-
In diesem Fall sind sowohl das list-0- als auch das list-1-Referenzbild immer zeitlich vor dem B-Bild angeordnet.
-
FALL 1: SOWOHL DER MAKROBLOCK DES B-BILDS. ALS AUCH DER ENTSPRECHEND ANGEORDNETE MAKROBLOCK DES LIST-1-REFERENZBILDS SIND IN DEM RAHMEN-MODUS
-
Wie aus den 4a bis 4h ersichtlich ist, kann der entsprechend angeordnete Block in dem list-1-Referenzbild einen Bewegungsvektor oder zwei Bewegungsvektoren haben. Gemäß der vorliegenden Erfindung wird, wenn der entsprechend angeordnete Block zwei Bewegungsvektoren hat, einer (L0 MV oder L1 MV) der beiden Bewegungsvektoren ausgewählt, und Direktmodus-Bewegungsvektoren werden aus dem ausgewählten Bewegungsvektor hergeleitet (dies wird nachfolgend beschrieben auf der Grundlage des Falls, wo L0 MV (list-0-Bewegungsvektor) ausgewählt wird).
-
Entsprechend können die 4a, 4c, 4e, 4g und 4h einfach als 10a dargestellt werden, und die 4b und 4d als 10b.
-
Wenn das list-0-Referenzbild für den Direktmodus dem list-1-Referenzbild für den Direktmodus zeitlich vorangeht, werden die Direktmodus-Bewegungsvektoren MVF und MVB wie folgt berechnet (10a): MVF = TDB × MV/TDD MVB = (TDB – TDD) × MV /TDD, wobei TDB einen zeitlichen Abstand zwischen einem gegenwärtigen B-Rahmen und einem list-0-Referenzrahmen repräsentiert, TDD einen zeitlichen Abstand zwischen einem list-1-Referenzrahmen und dem list-0-Referenzrahmen repräsentiert, und MV einen Bewegungsvektor des entsprechend angeordneten Blocks in dem list-1-Referenzbild für den Direktmodus repräsentiert.
-
Die obige Gleichung kann wie folgt ausgedrückt werden: Z = TDB × 256/TDD MVF = (Z × MV + 128) >> 8 W = Z – 256 MVB = (W × MV + 128) >> 8
-
Wenn das list-0-Referenzbild dem list-1-Referenzbild zeitlich folgt, werden die Direktmodus-Bewegungsvektoren MVF und MVB wie folgt berechnet (10b): MVF = –TDB × MV/TDD MVB = –(TDB + TDD) × MV/TDD
-
Diese Gleichung kann wie folgt ausgedrückt werden: Z = – TDB × 256/TDD MVF = (Z × MV + 128) >> 8 W = Z – 256 MVB = (W × MV + 128) >> 8, wobei TDB einen zeitlichen Abstand zwischen dem gegenwärtigen B-Rahmen und dem list-0-Referenzrahmen repräsentiert, TDD einen zeitlichen Abstand zwischen dem list-1-Referenzrahmen und dem list-0-Referenzrahmen repräsentiert, und MV einen Bewegungsvektor des entsprechend angeordneten Blocks in dem list-1-Referenzbild für den Direktmodus repräsentiert.
-
FALL 2: SOWOHL DER MAKROBLOCK DES B-BILDS ALS AUCH DER ENTSPRECHEND ANGEORDNETE MAKROBLOCK DES LIST-1-REFERENZBILDS SIND IN DEM FELD-MODUS
-
Wenn das list-0-Referenzbild für den Direktmodus dem list-1-Referenzbild für den Direktmodus zeitlich vorangeht, werden die Direktmodus-list-0-und list-1-Bewegungsvektoren MVF,i und MVB,i für jedes Feld i eines B-Rahmens wie folgt berechnet (11a und 11b): MVF,i = TDB,i × MVi/TDD,i MVB,i = (TDB,i – TDD,i) × MVi/TDD,i
-
Die obige Gleichung kann wie folgt ausgedrückt werden: Z = TDB,i × 256/TDD,i MVF,i = (Z × MVi + 128) >> 8 W = Z – 256 MVB,i = (W × MVi + 128) >> 8, wobei TDB,i einen zeitlichen Abstand zwischen einem gegenwärtigen B-Feld und einem list-0-Referenzfeld. repräsentiert, TDD,i einen zeitlichen Abstand zwischen einem list-1-Referenzfeld und dem list-0-Referenzfeld repräsentiert, und MVi einen Bewegungsvektor eines entsprechend angeordneten Blocks in einem list-1-Referenzfeld für den Direktmodus repräsentiert.
-
Wenn, da der entsprechend angeordnete Block in dem Feld i in dem list-1-Referenzrahmen einen Bewegungsvektor hat, der zu einem Feld in einem zeitlich nachfolgenden Rahmen zeigt, das list-0-Referenzbild dem list-1-Referenzbild zeitlich vorangeht, werden die Direktmodus-list-0 und -list-1-Bewegungsvektoren MVF,i und MVB,i wie folgt berechnet (11c und 11d): MVF,i = TDB,i × MVi/TDD,i MVB,i = –(TDB,i + TDD,i) × MVi/TDD,i
-
Die obige Gleichung kann wie folgt ausgedrückt werden: Z = –TDB,i × 256/TDD,i MVF,i = (Z × MVi + 128) >> 8 W = Z - 256 MVB,i = (W × MVi + 128) >> 8, wobei TDB,i einen zeitlichen Abstand zwischen dem gegenwärtigen B-Feld und dem list-0-Referenzfeld repräsentiert, TDD,i einen zeitlichen Abstand zwischen dem list-1-Referenzfeld und dem list-0-Referenzfeld repräsentiert, und MVi einen Bewegungsvektor des entsprechend angeordneten Blocks in dem list-1-Referenzfeld für den Direktmodus repräsentiert.
-
FALL 3: DER MAKROBLOCK DES B-BILDS IST IN DEM FELD-MODUS UND DER ENTSPRECHEND ANGEORDNETE MAKROBLOCK DES LIST-1-REFERENZBILDS IST IN DEM RAHMEN-MODUS
-
Wenn das list-0-Referenzbild für den Direktmodus dem list-1-Referenzbild für den Direktmodus zeitlich vorangeht, werden die Direktmodus-list-0 und list-1-Bewegungsvektoren MVF,i und MVB,i für jedes Feld i des B-Rahmens wie folgt berechnet (12a): MVF,i = TDB,i × MV/TDD MVB,i = (TDB,i – TDD) × MV/TDD
-
Die obige Gleichung kann wie folgt ausgedrückt werden: Z = TDB,i × 256/TDD MVF,i = (Z × MV + 128) >> 8 W = Z – 256 MVB,i = (W × MV + 128) >> 8, wobei TDB,i einen zeitlichen Abstand zwischen dem gegenwärtigen B-Feld und dem list-0-Referenzfeld repräsentiert, TDD einen zeitlichen Abstand zwischen dem list-1-Referenzrahmen und dem list-0-Referenzrahmen repräsentiert, und MV einen Bewegungsvektor des entsprechend angeordneten Blocks in dem list-1-Referenzrahmen für den Direktmodus repräsentiert.
-
Wenn, da der entsprechend angeordnete Block in dem list-1-Referenzrahmen einen Bewegungsvektor hat, der zu einem zeitlich nachfolgenden Rahmen zeigt, das list-0-Referenzbild dem list-1-Referenzbild zeitlich nachfolgt, werden die Direktmodus-list-0- und -list-1-Bewegungsvektoren MVF,i und MVB,i wie folgt berechnet (12b): MVF,i = TDB,i × MV/TDD MVB,i = –(TDB,i + TDD) × MVi/TDD
-
Die obige Gleichung kann wie folgt ausgedrückt werden: Z = –TDB,i × 256/TDD,i MVF,i = (Z × MVi + 128) >> 8 W = Z – 256 MVB,i = (W × MVi + 128) >> 8, wobei TDB,i einen zeitlichen Abstand zwischen dem gegenwärtigen B-Feld und dem list-0-Referenzfeld repräsentiert, TDD einen zeitlichen Abstand zwischen dem list-1-Referenzrahmen und dem list-0-Referenzrahmen repräsentiert, und MV einen Bewegungsvektor des entsprechend angeordneten Blocks in dem list-1-Referenzfeld für den Direktmodus repräsentiert.
-
FALL 4: DER MAKROBLOCK DES B-BILDS IST IN DEM RAHMEN-MODUS UND DER ENTSPRECHEND ANGEORDNETE MAKROBLOCK DES LIST-1-REFERENZBILDS IST IN DEM FELD-MODUS
-
Da das Feld 1 f1 des list-1-Referenzrahmens dem B-Bild zeitlich näher ist als das Feld 0 f0 desselben, wird Bewegungsinformation eines entsprechend angeordneten Blocks des Felds 1 f1 zur Berechnung der Direktmodus-Bewegungsvektoren verwendet.
-
Wenn das list-0-Referenzbild für den Direktmodus dem list-1-Referenzbild für den Direktmodus zeitlich vorangeht, werden die Direktmodus-list-0- und list-1-Bewegungsvektoren MVF und MVB für jedes Feld i des B-Rahmens wie folgt berechnet (13a): MVF = TDB × MV1/TDD,1 MVB = (TDB – TDD,1) × MV1/TDD,1
-
Die obige Gleichung kann wie folgt ausgedrückt werden: Z = TDB × 256/TDD,1 MVF = (Z × MV1 + 128) >> 8 W = Z - 256 MVB = (W × MV1 + 128) >> 8, wobei TDB einen zeitlichen Abstand zwischen dem gegenwärtigen B-Rahmen und dem list-0-Referenzrahmen repräsentiert, TDD,1 einen zeitlichen Abstand zwischen einem Feld 1 des list-1-Referenzrahmens und dem list-0-Referenzfeld repräsentiert, und MV1 einen Bewegungsvektor des entsprechend angeordneten Blocks im Feld 1 des list-1-Referenzrahmens für den Direktmodus repräsentiert.
-
Wenn, da der entsprechend angeordnete Block des Felds 1 f1 des list-1-Referenzrahmens einen Bewegungsvektor hat, der zu einem Feld eines zeitlich nachfolgenden Rahmens zeigt, das list-0-Referenzbild dem list-1-Referenzbild zeitlich nachfolgt, werden die Direktmodus-list-0- und -list-1-Bewegungsvektoren MVF und MVB wie folgt berechnet (13b): MVF = –TDB × MV1/TDD,1 MVB = –(TDB + TDD,1) × MV1/TDD,1
-
Die obige Gleichung kann wie folgt ausgedrückt werden: Z = –TDB × 256/TDD,1 MVF = (Z × MV1 + 128) >> 8 W = Z – 256 MVB = (W × MV1 + 128) >> 8, wobei TDB einen zeitlichen Abstand zwischen dem gegenwärtigen B-Rahmen und dem list-0-Referenzrahmen repräsentiert, TDD,1 einen zeitlichen Abstand zwischen einem Feld 1 des list-1-Referenzrahmens und dem list-0-Referenzfeld repräsentiert, und MV1 einen Bewegungsvektor des entsprechend angeordneten Blocks in dem Feld 1 des list-1-Referenzrahmens für den Direktmodus repräsentiert.
-
[4] Der Fall, wo die Direktmodus-Bewegungsvektoren durch Zuweisen eines Vorzeichens zu einem zeitlichen Zwischen-Bild-Distanzwert berechnet werden
-
In dem Fall, daß das list-1-Referenzbild für den Direktmodus zeitlich vor oder nach dem B-Bild angeordnet ist, werden in jedem Fall zwei Arten von Algorithmen angegeben. Solche Algorithmen können einfach durch Zuweisen eines Vorzeichens an einen zeitlichen Zwischen-Bild-Distanzwert wie folgt ausgedrückt werden.
-
FALL 1: Sowohl der Makroblock des B-Bilds ALS AUCH der entsprechend angeordnete Makroblock des list-1-Referenzbilds sind in dem Rahmen-Modus
-
Wenn sowohl der Makroblock des B-Bilds als auch der entsprechend angeordnete Makroblock des list-1-Referenzbilds in dem Rahmen-Modus sind, können die Direktmodus-Bewegungsvektoren MVF und MVB des B-Bilds wie folgt berechnet werden: MVF = TDB × MV/TDD MVB = (TDB – TDD) × MV/TDD oder Z = TDB × 256/TDD MVF = (Z × MV + 128) >> 8 W = Z – 256 MVB = (W × MV + 128) >> 8, wobei TDB einen zeitlichen Abstand zwischen einem gegenwärtigen B-Rahmen und einem list-0-Referenzrahmen repräsentiert, welchem ein positives (+) Vorzeichen zugeordnet wird, wenn er von dem B-Rahmen aus gemessen wird, und welchem ein negatives (–) Vorzeichen zugeordnet wird, wenn er von dem list-0-Referenzrahmen gemessen wird, TDD einen zeitlichen Abstand zwischen einem list-1-Referenzrahmen und dem list-0-Referenzrahmen repräsentiert, welchem ein positives (+) Vorzeichen zugeordnet wird, wenn er von dem list-1-Referenzrahmen ausgemessen wird, und welchem ein negatives (–) Vorzeichen zugeordnet wird, wenn er von dem list-0-Referenzrahmen aus gemessen wird, und MV einen Bewegungsvektor des entsprechend angeordneten Blocks in dem list-1-Referenzbild für den Direktmodus repräsentiert.
-
FALL 2: SOWOHL DER MAKROBLOCK DES B-BILDS ALS AUCH DER ENTSPRECHEND ANGEORDNETE BLOCK DES LIST-1-REFERENZBILDS SIND IN DEM FELDMODUS
-
Wenn sowohl der Makroblock des B-Bilds als auch der entsprechend angeordnete Makroblock des list-1-Referenzbilds in dem Feldmodus sind, werden die Direktmodus-Bewegungsvektoren MVF,i und MFB,i für jedes Feld i des B-Rahmens wie folgt berechnet werden: MVF,i = TDB,i × MVi/TDD,i MVB,i = (TDB,i – TDD,i) × MVi/TDD,i oder Z = TDB,i × 256/TDD,i MVF,i = (Z × MVi + 128) >> 8 W = Z – 256 MVB,i = (W × MVi + 128) >> 8, wobei TDB,i einen zeitlichen Abstand zwischen einem gegenwärtigen B-Feld und einem list-0-Referenzfeld repräsentiert, welchem ein positives (+) Vorzeichen zugeordnet wird, wenn er von dem B-Feld aus gemessen wird, und welchem ein negatives (–) Vorzeichen zugeordnet wird, wenn er von dem list-0-Referenzfeld aus gemessen wird, TDD,i einen zeitlichen Abstand zwischen einem list-1-Referenzfeld und dem list-0-Referenzfeld repräsentiert, welchem ein positives (+) Vorzeichen zugeordnet wird, wenn er von dem list-1-Referenzfeld gemessen wird, und welchem ein negatives (–) Vorzeichen zugeordnet wird, wenn er von dem list-0-Referenzfeld aus gemessen wird, und MVi einen Bewegungsvektor eines entsprechend angeordneten Blocks in einem list-1-Referenzfeld für den Direktmodus repräsentiert.
-
FALL 3: DER MAKROBLOCK DES B-BILDS IST IN DEM FELD-MODUS UND DER ENTSPRECHEND ANGEORDNETE MAKROBLOCK DES LIST-1-REFERENZBILDS IST IN DEM RAHMEN-MODUS
-
Wenn der Makroblock des B-Bilds in dem Feld-Modus ist und der entsprechend angeordnete Makroblock des list-1-Referenzbilds in dem Rahmenmodus ist, können die Direktmodus-Bewegungsvektoren MVF,i und MVB,i für jedes Feld i des B-Rahmens wie folgt berechnet werden: MVF,i = TDB,i × MV/TDD MVB,i = (TDB,i – TDD) × MV/TDD oder Z = TDB,i × 256/TDD MVF,i = (Z × MV + 128) >> 8 W = Z – 256 MVB,i = (W × MV + 128) >> 8; wobei TDB,i einen zeitlichen Abstand zwischen dem gegenwärtigen B-Feld und dem list-0-Referenzfeld repräsentiert, welchem ein positives (+) Vorzeichen zugeordnet wird, wenn er von dem B-Feld ausgemessen wird, und welchem ein negatives (–) Vorzeichen zugeordnet wird, wenn er von dem list-0-Referenzfeld ausgemessen wird, TDD einen zeitlichen Abstand zwischen dem list-1-Referenzrahmen und dem list-0-Referenzrahmen repräsentiert, welchem ein positives (+) Vorzeichen zugeordnet wird, wenn er von dem list-1-Referenzrahmen ausgemessen wird, und welchem ein negatives (–) Vorzeichen zugeordnet wird, wenn er von dem list-0-Referenzrahmen gemessen wird, und MV einen Bewegungsvektor des entsprechend angeordneten Blocks in dem list-1-Referenzrahmen für den Direktmodus repräsentiert.
-
FALL 4: DER MAKROBLOCK DES B-BILDS IST IN DEM RAHMEN-MODUS UND DER ENTSPRECHEND ANGEORDNETE MAKROBLOCK DES LIST-1-REFERENZBILDS IST IN DEM FELD-MODUS
-
Wenn der Makroblock des B-Bilds in dem Rahmen-Modus ist, der entsprechend angeordnete Makroblock des list-1-Referenzbilds in dem Feldmodus ist und das list-1-Referenzbild dem B-Bild zeitlich nachfolgt, ist das Feld 0 des list-1-Referenzrahmens dem B-Bild zeitlich näher als das Feld 1 desselben, so daß Bewegungsinformation eines entsprechend angeordneten Blocks des Feld 0 für die Berechnung der Direktmodus-Bewegungsvektoren verwendet wird. Als ein Ergebnis können die Direktmodus-Bewegungsvektoren MVF und MVB des B-Rahmens aus den nachfolgenden Gleichungen erhalten werden, wobei die Bewegungsinformation des entsprechend angeordneten Blocks dem Feld 0 des list-1-Referenzrahmens zur Berechnung der Direktmodus-Bewegungsvektoren verwendet wird: MVF = TDB × MV0/TDD,0 MVB = (TDB – TDD,0) × MV0/TDD,0 oder Z = TDB × 256/TDD,0 MVF = (Z × MV0 + 128) >> 8 W = Z – 256 MVB (W × MV0 + 128) >> 8, wobei TDB einen zeitlichen Abstand zwischen dem gegenwärtigen B-Rahmen und dem list-0-Referenzrahmen repräsentiert, welchem ein positives (+) Vorzeichen zugeordnet wird, wenn es von dem B-Rahmen ausgemessen wird und welchem ein negatives (–) Vorzeichen zugeordnet wird, wenn er von dem list-0-Referenzrahmen ausgemessen wird, TDD,0 einen zeitlichen Abstand zwischen einem Feld 0 des list-1-Referenzrahmens und dem list-0-Referenzfeld repräsentiert, welchem ein positives (+) Vorzeichen zugeordnet wird, wenn er von dem Feld 0 des list-1-Referenzrahmens ausgemessen wird und welchem ein negatives (–) Vorzeichen zugeordnet wird, wenn er von dem list-0-Referenzfeld ausgemessen wird, und MV0 einen Bewegungsvektor des entsprechend angeordneten Blocks in dem Feld O des list-1-Referenzrahmens für den Direktmodus repräsentiert.
-
Wenn das list-1-Referenzbild dem B-Bild zeitlich vorangeht, ist das Feld 1 des list-1-Referenzrahmens dem B-Bild zeitlich näher als dessen Feld 0, so daß Bewegungsinformation eines entsprechend angeordneten Blocks des Felds 1 zur Berechnung der Direktmodus-Bewegungsvektoren verwendet wird. Als Folge davon können die Direktmodus-Bewegungsvektoren MVF und MVB des B-Rahmens aus den nachfolgenden Gleichungen erhalten werden, wobei die Bewegungsinformation des entsprechend angeordneten Blocks in dem Feld 1 des list-1-Referenzrahmens zur Berechnung der Direktmodus-Bewegungsvektoren verwendet wird: MVF = TDB × MV1/TDD,1 MVB = (TDB – TDD,1) × MV1/TDD,1 oder Z = TDB × 256/TDD,1 MVF = (Z × MV1 + 128) >> 8 W = Z – 256 MVB = (W × MV1 + 128) >> 8, wobei TDB einen zeitlichen Abstand zwischen dem gegenwärtigen B-Rahmen und dem list-0-Referenzrahmen repräsentiert, welchem ein positives (+) Vorzeichen zugeordnet wird, wenn er von dem B-Rahmen ausgemessen wird, und welchem ein negatives (–) Vorzeichen zugeordnet wird, wenn er von dem list-0-Referenzrahmen ausgemessen wird, TDD,1 einen zeitlichen Abstand zwischen einem Feld 1 des list-1-Referenzrahmens und dem list-0-Referenzfeld repräsentiert, welchem ein positives (+) Vorzeichen zugeordnet wird, wenn es von dem Feld 1 des list-1-Referenzrahmens ausgemessen wird, und welchem ein negatives (–) Vorzeichen zugeordnet wird, wenn er von dem list-0-Referenzfeld ausgemessen wird, und MV1 einen Bewegungsvektor des entsprechend angeordneten Blocks in dem Feld 1 des list-1-Referenzrahmens für den Direktmodus repräsentiert.
-
Wie aus der vorangehenden Beschreibung hervorgeht, stellt die vorliegende Erfindung ein Verfahren zum Berechnen von Direktmodus-Bewegungsvektoren eines B-Bilds bereit, welches in einer Kompressionstechnik für bewegte Bilder der nächsten Generation definiert ist. Es wird eine Technik zum Extrahieren der Direktmodus-Bewegungsvektoren des B-Bilds vorgeschlagen, um die Wahrscheinlichkeit zu erhöhen, daß ein Direktmodus als ein Vorhersagemodus eines Makroblocks ausgewählt wird, wodurch die B-Bild-Kodiereffizienz verbessert wird.