DE60306011T2 - Rundungskontrolle für mehrstufige Interpolation - Google Patents

Rundungskontrolle für mehrstufige Interpolation Download PDF

Info

Publication number
DE60306011T2
DE60306011T2 DE60306011T DE60306011T DE60306011T2 DE 60306011 T2 DE60306011 T2 DE 60306011T2 DE 60306011 T DE60306011 T DE 60306011T DE 60306011 T DE60306011 T DE 60306011T DE 60306011 T2 DE60306011 T2 DE 60306011T2
Authority
DE
Germany
Prior art keywords
pixel
values
value
interpolation
rounding
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60306011T
Other languages
English (en)
Other versions
DE60306011D1 (de
Inventor
Sridhar Seattle Srinivasan
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Application granted granted Critical
Publication of DE60306011D1 publication Critical patent/DE60306011D1/de
Publication of DE60306011T2 publication Critical patent/DE60306011T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G02OPTICS
    • G02CSPECTACLES; SUNGLASSES OR GOGGLES INSOFAR AS THEY HAVE THE SAME FEATURES AS SPECTACLES; CONTACT LENSES
    • G02C9/00Attaching auxiliary optical parts
    • G02C9/02Attaching auxiliary optical parts by hinging
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/523Motion estimation or motion compensation with sub-pixel accuracy
    • GPHYSICS
    • G02OPTICS
    • G02CSPECTACLES; SUNGLASSES OR GOGGLES INSOFAR AS THEY HAVE THE SAME FEATURES AS SPECTACLES; CONTACT LENSES
    • G02C5/00Constructions of non-optical parts
    • G02C5/02Bridges; Browbars; Intermediate bars
    • GPHYSICS
    • G02OPTICS
    • G02CSPECTACLES; SUNGLASSES OR GOGGLES INSOFAR AS THEY HAVE THE SAME FEATURES AS SPECTACLES; CONTACT LENSES
    • G02C2200/00Generic mechanical aspects applicable to one or more of the groups G02C1/00 - G02C5/00 and G02C9/00 - G02C13/00 and their subgroups
    • G02C2200/06Locking elements

Description

  • Technisches Gebiet
  • Es werden Techniken und Werkzeuge zur Rundungssteuerung bei Mehrstufeninterpolation beschrieben. So bedienen sich beispielsweise ein Videokodierer oder ein Videodekodierer bei der Berechnung von Pixelwerten in Referenzvideorahmen mittels Mehrstufeninterpolation einer stufenweise alternierenden Rundungssteuerung.
  • Hintergrund
  • Digitale Videos verbrauchen große Mengen an Speicher- und Übertragungskapazitäten. Eine typische unbearbeitete digitale Videosequenz enthält 15 bis 30 Rahmen (frames) pro Sekunde. Jeder Rahmen kann Zehntausende oder Hunderttausende von Pixeln (auch „Pels" genannt) enthalten. Jedes Pixel stellt ein winziges Element eines Bildes dar. In unbearbeiteter Form stellt ein Computer ein Pixel gängigerweise durch 24 Bit dar. So kann ein Pixel beispielsweise einen 8 Bit langen Luminanzwert (auch Luma-Wert genannt), der die Grauskalenkomponente des Pixels festlegt, und zwei 8 Bit lange Chrominanzwerte (auch Chroma-Werte genannt), die die Farbkomponente des Pixels festlegen, enthalten. Damit kann die Anzahl der Bits pro Sekunde, das heißt die Bitrate, einer typischen unbearbeiteten digitalen Videosequenz bei bis zu 5 Millionen Bit pro Sekunde oder mehr liegen.
  • Viele Computer und Computernetzwerke verfügen nicht über die Ressourcen, um unbearbeitete digitale Videos zu verarbeiten. Aus diesem Grunde bedienen sich Entwickler der Kompression (auch Kodierung (coding oder encoding) genannt), um die Bitrate des digitalen Videos zu verringern. Die Kompression kann verlustfrei sein, wodurch die Qualität des Videos nicht leidet, der Senkung der Bitrate jedoch durch die Komplexität des Videos Schranken gesetzt sind. Die Kompression kann jedoch auch verlustbehaftet sein, wodurch die Qualität des Videos leidet, die Senkung der Bitrate jedoch drastischer ausfällt. Die Dekompression ist der zur Kompression inverse beziehungsweise umgekehrte Vorgang.
  • Zu den Videokompressionstechniken zählen allgemein die Intrarahmenkompression (intraframe compression) und die Interrahmenkompression (interframe compression). Bei den Intrarahmenkompressionstechniken werden einzelne Rahmen, die üblicherweise I-Rahmen oder Key-Frame (key frames) genannt werden, komprimiert. Bei Interrahmenkompressionstechniken hingegen erfolgt die Kompression von Rahmen in Abhängigkeit von vorhergehenden und/oder nachfolgenden Rahmen, die üblicherweise Prädiktionsrahmen (predicted frame), P-Rahmen oder B-Rahmen genannt werden.
  • Das Programm Windows Media Video, Version 8 („WMV8") der Microsoft Corporation enthält einen Videokodierer und einen Videodekodierer. Der WMV8-Kodierer bedient sich der Intrarahmen- und der Interrahmenkompression, und der WMV8-Dekodierer bedient sich der Intrarahmen- und der Interrahmendekompression. Die Interrahmenkompression in dem WMV8-Kodierer bedient sich einer blockbasierten bewegungsausgeglichenen Prädiktion zur Kodierung, gefolgt von einer Wandlungskodierung des Restfehlers.
  • Beim WMV8-Programm wird ein Rahmen in Form von drei Pixelebenen dargestellt: eine Luminanzebene (Y) der Luminanzpixelwerte und zwei Chrominanzebenen (U, V) der Chrominanzpixelwerte. Die Auflösung der Y-Ebene entspricht in der Horizontalen und der Vertikalen dem Doppelten der Auflösung der U- und V-Ebenen. Daher umfasst ein Rahmen mit 320 Pixeln zu 240 Pixeln eine Y-Ebene mit 320 Pixeln zu 240 Pixeln sowie U- und V-Ebenen mit 160 Pixeln zu 120 Pixeln.
  • Der WMV8-Kodierer unterteilt einen Prädiktionsrahmen in 8 × 8-Pixelblöcke. Gruppen von vier 8 × 8-Luminanzblöcken und zwei kolokalisierten 8 × 8-Chrominanzblöcken (der eine für die U-Chrominanzebene und der andere für die V-Chrominanzebene) bilden 16 × 16-Makroblöcke. Daher umfasst jeder 16 × 16-Makroblock vier 8 × 8-Luminanzblöcke und zwei 8 × 8-Chrominanzblöcke.
  • Für einen Makroblock eines Prädiktionsrahmens nimmt der WMV8-Kodierer eine Bewegungsabschätzung vor. Bei der Bewegungsabschätzung wird die Bewegung eines Makroblocks in einem Prädiktionsrahmen approximiert, indem nach dem Makroblock in dem Prädiktionsrahmen gesucht wird, und der Makroblock in dem Prädiktionsrahmen an einen Makroblock aus einem Referenzrahmen angepasst wird. Gemäß 1 berechnet beispielsweise der WMV8-Kodierer einen Bewegungsvektor für einen Makroblock (115) in dem Prädiktionsrahmen (110). Zur Berechnung des Bewegungsvektors sucht der Ko dierer in einem Suchbereich (135) eines Referenzrahmens (130). Innerhalb des Suchbereiches (135) vergleicht der Kodierer die Luminanzwerte des Makroblocks (115) aus dem Prädiktionsrahmen (110) mit den Luminanzwerten verschiedener Kandidatenblöcke aus dem Referenzrahmen (130), um einen passenden Treffer zu finden. Bei dem WMV8-Kodierer kann die Bewegungsvektorgenauigkeit eingestellt werden. Es können zudem ein Suchbereich und Bewegungsvektoren mit einer horizontalen Vollpixel-, Halbpixel- oder Viertelpixelauflösung sowie einer vertikalen Vollpixel- oder Halbpixelauflösung verwendet werden. Mit subpixelgenauen Bewegungsvektoren kann der WMV8-Kodierer die Subpixelbewegung in einer Videosequenz annähern.
  • Während des Bewegungsausgleiches bedient sich der WMV8-Kodierer der Bewegungsvektoren für Makroblöcke des Prädiktionsrahmens, um die Prädiktoren für die Makroblöcke aus dem Referenzrahmen zu bestimmen. Für jeden der Bewegungsprädiktionsmakroblöcke berechnet der WMV8-Kodierer die Differenz (auch Rest oder Fehler genannt) zwischen dem ursprünglichen Makroblock und dessen Prädiktor. Der WMV8-Kodierer unterteilt den Rest in Blöcke und komprimiert die restlichen Blöcke verlustbehaftet. Zur Rekonstruktion der Bewegungsprädiktionsmakroblöcke des Prädiktionsrahmens dekomprimiert der WMV8-Kodierer die Reste und addiert sie zu den Prädiktoren für die jeweiligen Makroblöcke.
  • Der WMV8-Kodierer bedient sich zudem der Bewegungsvektoren für Makroblöcke der Prädiktionsrahmen, um die Prädiktoren für die Makroblöcke aus dem Referenzrahmen zu bestimmen. Zur Rekonstruktion der Bewegungsprädiktionsmakroblöcke des Prädiktionsrahmens dekomprimiert der WMV8-Dekodierer die Reste und addiert sie zu den Prädiktoren für die Makroblöcke.
  • Während der Bewegungsabschätzung oder des Bewegungsausgleiches müssen der WMV8-Kodierer oder der entsprechende Dekodierer, wenn ein Bewegungsvektor eine Subpixelgenauigkeit (das heißt Halbpixel- oder Viertelpixelgenauigkeit) aufweist, Pixelwerte an Subpixelpositionen in dem Referenzrahmen bestimmen. Der WMV8-Kodierer oder der entsprechende Dekodierer erzeugen Werte für Subpixelpositionen unter Verwendung von Interpolationsfiltern. 2 zeigt Subpixelabtastpositionen H0, H1, H2, die Werte aufweisen, die mittels Interpolation der Vollpixelwerte a, b, c, ..., p berechnet sind.
  • Wird mit Halbpixelbewegungsvektorgenauigkeit gearbeitet, so lauten die Interpolationsfilter, die für Luminanzpixelwerte an drei verschiedenen Halbpixelpositionen H0, H1, H2 verwendet werden, folgendermaßen. H0 = (f + g + R2) >> 1 (1) H1 = (f + j + R2) >> 1 (2) H2 = (f + g + j + k + R1) >> 2 (3)
  • Hierbei bezeichnen R1 und R2 Rundungssteuerwerte, die von einem 1-Bit-Rundungssteuermerker (flag) gesteuert werden, der die Rundungsart für einen bestimmten Rahmen angibt. Wird der Rundungssteuermerker auf 0 gesetzt, so gilt R1 = 2 und R2 = 1. Wird der Rundungssteuermerker auf 1 gesetzt, so gilt R1 = R2 = 0. Der Wert des Rundungssteuermerkers wechselt für jeden P-Rahmen zwischen 1 und 0. Bei jedem I-Rahmen wird der Wert des Rundungssteuermerkers auf 0 zurückgesetzt. Auf diese Weise arbeitet die Rundungssteuerung rahmenweise.
  • Gleichungen 1, 2 und 3 stellen Beispiele für eine bilineare Interpolation dar. Die bilineare Interpolation ist schnell und erzeugt tendenziell glatte Pixelwerte. Die Glättung kann gewünschte Effekte (so beispielsweise eine gesenkte Wahrnehmbarkeit des Quantisierungsrauschens) aufweisen, sie kann jedoch auch zu einem Verlust gültiger Pixelinformation führen.
  • Bei einer Viertelpixelbewegungsvektorauflösung bedienen sich der WMV8-Kodierer oder der entsprechende Kodierer zunächst bikubischer Filter, um Luminanzpixelwerte an Halbpixelpositionen zu interpolieren. Die bikubische Interpolation ist langsamer als die bilineare Interpolation, behält jedoch tendenziell Randwerte bei und führt zu einem geringeren Verlust gültiger Pixelinformation. Die bikubischen Filter für drei verschiedene Halbpixelpositionen H0, H1 und H2 lauten folgendermaßen. H0 = (–e + 9f + 9g – h + 8) >> 4 (4) H1 = (–b + 9f + 9j – n + 8) >> 4 (5) H2 = (–t0 + 9t1 + 9t2 – t3 + 8) >> 4 (6)
  • Hierbei werden t0, t1, t2 und t3 folgendermaßen berechnet. t0 = (–a + 9b + 9c – d + 8) >> 4 (7) t1 = (–e + 9f + 9g – h + 8) >> 4 (8) t2 = (–i + 9j + 9k – i + 8) >> 4 (9) t3 = (–m + 9n + 9o – p + 8) >> 4 (10)
  • Die Gleichungen (4) bis (10) können zu einer Ausgabe außerhalb des Bereiches der Eingabewerte führen. So erzeugt beispielsweise bei einer 8 Bit langen Eingabe (Bereich 0 bis 255) die Reihe von Werten 0 255 255 0 in jeder der Gleichungen (4) bis (10) einen Ausgabewert von 287. Daher schneiden (clamp oder clip) der WMV8-Kodierer oder der entsprechende Dekodierer den Ausgabewert jeder der Gleichungen (4) bis (10) derart ab, dass dieser innerhalb des gültigen Bereiches liegt. So werden beispielsweise für 8 Bit lange Ausgabewerte Werte kleiner als 0 zu 0 geändert, während Werte größer als 255 zu 255 geändert werden. Das Abschneiden löst das Bereichsproblem, verlangsamt jedoch die Berechnung. Darüber hinaus führt das Abschneiden zu einer Abnahme der Genauigkeit.
  • Der WMV8-Kodierer oder der entsprechende Dekodierer berechnen anschließend Pixelwerte an bestimmten Viertelpixelpositionen in einer nachfolgenden Interpolationsstufe. Diese Viertelpixelstellen sind horizontal zwischen entweder zwei Halbpixelstellen oder einer Vollpixelstelle und einer Halbpixelstelle angeordnet. Mit Blick auf die Viertelpixelstellen bedienen sich der WMV8-Kodierer oder der entsprechende Dekodierer unter Verwendung zweier horizontal benachbarter Halbpixel-/Vollpixelstellen ohne Rundungssteuerung einer bilinearen Interpolation (das heißt (x + y + 1) >> 1).
  • Sobald die Luminanzbewegungsvektoren berechnet sind, leiten der WMV8-Kodierer oder der entsprechende Dekodierer die kolokalisierten Chrominanzbewegungsvektoren her. Da die Chrominanzebene beim WMV8-Programm sowohl in der Horizontalen wie auch in der Vertikalen halb so groß wie die Luminanzebene ist, müssen die Luminanzbewegungsvektorwerte zu geeigneten Chrominanzbewegungsvektorwerten skaliert werden. Beim WMV8-Programm beinhaltet dieser Umwandlungsvorgang das Halbieren der Luminanzbewegungsvektoren und das Runden der resultierenden Chrominanzbewegungsvektoren auf Halbpixelgenauigkeit. Auf diese Weise werden Luminanzbewegungsvektoren mit Halbpixelgenauigkeit nicht in Chrominanzbewegungsvektoren mit Viertelpixelgenauigkeit umgewandelt. Darüber hinaus stellt der Vorgang des Chrominanzrundens beim WMV8-Programm einen Single-Mode-Vorgang dar, der von einem Anwender nicht geändert oder ausgewählt werden kann.
  • Beim WMV8-Programm können die Pixelwerte an Subpixelpositionen in einem Referenzrahmen unter bestimmten Umständen Bereichsunterschreitungen (underflow) oder Bereichsüberschreitungen (overflow) erfahren. So kann beispielsweise der Luminanzpixelwert an einer Viertelpixelposition 271 (was außerhalb des Bereiches zwischen 0 und 255 ist) sein, wenn der benachbarte Vollpixelpositionswert 255 ist, und der benachbarte Halbpixelpositionswert bei 287 liegt (0 + 9·255 + 9·255 – 0 + 8 >> 4 = 287 und 255 + 287 + 1 >> 1 = 271). Um dieses Problem zu lösen, schneiden nach dem Addieren der Restblöcke zu dem Prädiktor für einen Makroblock der WMV8-Kodierer und der entsprechende Dekodierer gegebenenfalls die rekonstruierten Werte für den Makroblock derart ab, dass sie innerhalb eines Bereiches zwischen 0 und 255 liegen.
  • Neben dem WMV8-Programm befassen sich einige weitere internationale Standards mit Videokompression und Videodekompression. Zu diesen Standards zählen MPEG-1, MPEG-2 und MPEG-4 (Motion Picture Experts Group MPEG, Expertengruppe für bewegte Bilder) sowie H.261, H.262 und H.263 der ITU (International Telecommunication Union ITU, Internationale Telekommunikationsunion). Analog zum WMV8-Programm bedienen sich diese Standards einer Kombination aus Intrarahmen- und Interrahmenkompression, wobei sich diese Standards üblicherweise in Details von den beim WMV8-Programm verwendeten Kompressionstechniken unterscheiden.
  • Einige Standards (so beispielsweise MPEG-4 und H.263) bedienen sich einer Halbpixelbewegungsabschätzung und eines Halbpixelbewegungsausgleiches unter Verwendung bilinearer Filter und einer Basisrundungssteuerung. Darüber hinaus werden beim H.263-Standard Chrominanzbewegungsvektoren, die theoretisch eine Viertelpixelauflösung (das heißt die Hälfte der Auflösung der Halbpixelluminanzbewegungsvektoren) aufweisen, entweder auf Halbpixelgenauigkeit oder auf Vollpixelgenauigkeit gerundet, sodass keine Viertelpixelwerte im Chrominanzraum zugelassen sind. Für zusätzliche Details betreffend die Bewegungsabschätzung und den Bewegungsausgleich bei den genannten Standards ziehe man die Spezifikationen der Standards zu Rate.
  • Die europäische Patentanmeldung EP 0 884 912 A2 beschreibt Videokodierer und Videodekodierer, bei denen sowohl Rahmen der Sorte P+ (bei denen eine Rundung halbzahliger Werte von 0 weg erfolgt) wie auch Rahmen der Sorte P– (bei denen eine Rundung halbzahliger Werte zu 0 hin erfolgt) Verwendung finden, um Rundungsfehler zu beseitigen und um die Anhäufung von Rundungsfehlern zu vermeiden. Das US-Patent 6,282,243 beschreibt eine Prädiktionsbildberechnungseinheit, bei der eine Abrundung interpolierter Pixelwerte auf eine ganze Zahl entsprechend einem Rundungsalgorithmus erfolgt, der durch eine Berechnungssteuerung spezifiziert ist. Das US-Patent 5,659,365 beschreibt Chrominanzbewegungsvektoren, die unter Verwendung von Rundungsinformation berechnet werden, die in einem Extrabit für Luminanzbewegungsvektoren mit ungeradzahligen Werten enthalten ist.
  • Die Bewegungsabschätzung und der Bewegungsausgleich stellen effektive Kompressionstechniken dar. Die bislang gängigen Techniken der Bewegungsabschätzung und des Bewegungsausgleiches (so beispielsweise beim WMV8-Programm und den vorgenannten Standards) weisen jedoch einige Nachteile auf, darunter die folgenden Nachteile.
    • (1) Bei der Berechnung von Pixelwerten an Subpixelpositionen in Referenzrahmen sinkt bei den Kodierern und Dekodierern unnötigerweise die Genauigkeit der vorläufigen Werte. Wird beispielsweise der Pixelwert für eine Viertelpixelposition beim WMV8-Programm berechnet, so werden vorläufige Werte an Halbpixelpositionen um 4 Bit nach rechts verschoben, und dies ungeachtet der Tatsache, dass eine größere Bittiefe zur Verfügung stünde. Darüber hinaus schneiden der WMV8-Kodierer und der entsprechende Dekodierer die vorläufigen Werte während der zweistufigen Interpolation von Viertelpixelpositionen ab, was die Berechnungsgeschwindigkeit senkt, und was zu einer unnötigen Abnahme der Genauigkeit führt.
    • (2) Die Interpolation für Pixelwerte ist bei der Viertelpixelbewegungsabschätzung und dem Viertelpixelbewegungsausgleich in vielen Fällen ineffizient. So bedingt beispielsweise beim WMV8-Programm die Berechnung einer eindimensionalen Viertelpixelposition die Verwendung eines Filters für eine Halbpixelposition, gefolgt von der Verwendung eines bilinearen Filters.
    • (3) Die Kodierer und Dekodierer sind nicht in der Lage, auf eine Häufung von Rundungsfehlern geeignet zu reagieren, die bei einer mehrstufigen Interpolation auftreten kann. Rundungsfehler treten beispielsweise dann auf, wenn Pixelwerte in einer Videosequenz von Rahmen zu Rahmen wiederholt abgerundet werden. Dieser Rundungsfehler kann bei Videosequenzen niedriger Qualität und niedriger Bitrate wahrnehmbare Artefakte bewirken. Interpolieren beispielsweise der WMV8-Kodierer und der entsprechende Dekodierer für einen Pixelwert an einer Viertelpixelposition in mehreren Stufen, so kommt keine Rundungssteuerung zum Einsatz. Anstatt dessen werden die Ergebnisse jeder Stufe auf dieselbe Weise in jeder Interpolationsstufe (und ohne Rundungssteuerung) gerundet.
    • (4) Die Chrominanzrundung erfolgt nicht auf Viertelpixelgenauigkeit, und es besteht keine Kontrolle über die Optionen der Chrominanzbewegungsvektorrundung. So runden beispielsweise der WMV8-Kodierer und der entsprechende Dekodierer alle Chrominanzbewegungsvektoren auf einen Halbpixelwert und können nur in diesem einen Betriebszustand betrieben werden (single mode).
  • Eingedenk der kritischen Wichtigkeit der Bewegungsabschätzung und des Bewegungsausgleiches bei digitalen Videos ist nicht überraschend, dass die Bewegungsabschätzung und der Bewegungsausgleich weit fortentwickelte Gebiete darstellen. Wie groß auch immer die Vorteile bereits bestehender Techniken der Bewegungsabschätzung und des Bewegungsausgleiches sind, sie reichen nicht an die Vorteile der nachfolgend beschriebenen Techniken und Werkzeuge heran.
  • Zusammenfassung
  • Die Aufgabe der vorliegenden Erfindung besteht darin, die Qualität der Bilddarstellung beim Videokodieren und Videodekodieren zu verbessern.
  • Die Aufgabe wird durch die vorliegende Erfindung gemäß Definition in den unabhängigen Ansprüchen gelöst. Ausführungsbeispiele der Erfindung sind in den abhängigen Ansprüchen niedergelegt.
  • Die Detailbeschreibung betrifft kurzgesagt verschiedene Techniken und Werkzeuge zur Rundungssteuerung bei Mehrstufeninterpolation. So bedienen sich beispielsweise bei Videokodier- und Dekodieranwendungen ein Videokodierer und ein Videodekodierer bei der Berechnung von Pixelwerten in Referenzvideorahmen mittels Mehrstufeninterpolation einer stufenweise alternierenden Rundungssteuerung. Die Verwendung der stufenweise alternierenden Rundungssteuerung verringert die Anhäufung von Rundungsfehlern aus der Mehrstufeninterpolation von Rahmen zu Rahmen. Dies kann die Gesamtleistung dadurch verbessern, dass wahrnehmbare Artefakte bei bestimmten Typen von Videosequenzen (beispielsweise bei über das Internet mittels Streaming bereitgestellten Videosequenzen niedriger Qualität und Bitrate) verringert werden.
  • Eine Komponente, so beispielsweise ein Videokodieren oder Dekodierer, berechnet Werte in mehreren Interpolationsstufen mittels der stufenweise alternierenden Rundungssteuerung. So rundet beispielsweise in einer ersten Stufe die Komponente zunächst einen ersten Randwert zu der nächsten ganzen Zahl in einer ersten Richtung ab, während die Komponente in einer zweiten Stufe einen zweiten Randwert zu der nächsten ganzen Zahl in einer zweiten Richtung rundet, die zu der ersten Richtung entgegengesetzt ist. In einigen Fällen steuert ein Rundungssteuerparameter die ersten und zweiten Richtungen. Der Rundungssteuerparameter kann auf einer Rahmen-für-Rahmen-Basis oder auch auf einer anderen Basis alternieren (beispielsweise zwischen 0 und 1).
  • Die verschiedenen Techniken und Werkzeuge können in Kombination oder unabhängig voneinander verwendet werden. Zusätzliche Merkmale und Vorteile erschließen sich aus der nachfolgenden Detailbeschreibung, die anhand der begleitenden Zeichnung erfolgt.
  • Kurzbeschreibung der Zeichnung
  • 1 ist ein Diagramm, das die Bewegungsabschätzung in einem Videokodierer entsprechend dem Stand der Technik erläutert.
  • 2 ist ein Diagramm, das die Subpixelstellen für die Interpolation bei der Subpixelbewegungsabschätzung und dem Subpixelbewegungsausgleich entsprechend dem Stand der Technik erläutert.
  • 3 ist ein Blockdiagramm einer geeigneten Berechnungsumgebung, in der mehrere beschriebene Ausführungsbeispiele implementiert sein können.
  • 4 ist ein Blockdiagramm eines verallgemeinerten Videokodiersystems, das bei mehreren beschriebenen Ausführungsbeispielen zum Einsatz kommt.
  • 5 ist ein Blockdiagramm eines verallgemeinerten Videodekodiersystems, das bei mehreren beschriebenen Ausführungsbeispielen zum Einsatz kommt.
  • 6 ist ein Diagramm, das Stellen für die Pixelwertintenpolation während der Subpixelbewegungsabschätzung und des Subpixelbewegungsausgleiches zeigt.
  • 7 ist ein Diagramm, das Vollpixelstellen mit Vollpixeln zeigt, die zur Berechnung interpolierter Pixelwerte für Subpixelstellen verwendet werden.
  • 8 ist ein Diagramm, das eine zweistufige Interpolationstechnik zur Interpolation von Werten an Subpixelpositionen zeigt.
  • 9 ist ein Diagramm, das eine Abtastposition mit einem Halbpixel in der Horizontalen und einem Halbpixel in der Vertikalen sowie die vorläufigen Werte an Subpixelpositionen zeigt, die zur Berechnung des Wertes an der Abtastposition verwendet werden.
  • 10 ist ein Diagramm, das eine Abtastposition mit einem Viertelpixel in der Horizontalen und einem Halbpixel in der Vertikalen, eine Abtastposition mit einem Halbpixel in der Horizontalen und einem Viertelpixel in der Vertikalen und die vorläufigen Werte an Subpixelpositionen zeigt, die zur Berechnung des Wertes an der Abtastposition verwendet werden.
  • 11 ist ein Diagramm, das eine Abtastposition mit einem Viertelpixel in der Horizontalen und einem Viertelpixel in der Vertikalen und die vorläufigen Werte an Subpixelpositionen zeigt, die zur Berechnung des Wertes an der Abtastposition verwendet werden.
  • 12 ist ein Diagramm, das eine mehrstufige Interpolationstechnik mit verbessertem Wertebereich (in Bit) für die vorläufigen Werte zeigt.
  • 13 ist ein Diagramm, das eine mehrstufige Interpolationstechnik mit ausgelassenem Abschneiden zeigt.
  • 14 ist ein Diagramm, das eine mehrstufige Interpolationstechnik mit verschobenem Bitschieben zeigt.
  • 15 ist ein Diagramm, das eine mehrstufige Interpolationstechnik unter Verwendung einer stufenweise wechselnden Rundungssteuerung zeigt.
  • 16 ist ein Flussdiagramm, das eine Technik zum Auswählen zwischen mehreren Betriebsarten der Chrominanzrundung und Interpolation zeigt.
  • 17 ist eine Tabelle, die eine erste Betriebsart der Chrominanzrundung zeigt.
  • 18 ist eine Tabelle, die eine zweite Betriebsart der Chrominanzrundung zeigt.
  • Detailbeschreibung
  • Die beschriebenen Ausführungsbeispiele betreffen Techniken und Werkzeuge zur Subpixelinterpolation bei der Bewegungsabschätzung und beim Bewegungsausgleich. Verschiedene Ausführungsbeispiele betreffen Techniken und Werkzeuge zum Erhalten der Genauigkeit bei einer mehrstufigen Interpolation mittels Verschiebens des Abschneidens und/oder Bitschiebens (Vorgänge, die zu einer Abnahme der Genauigkeit führen können) bis in spätere Stufen der Interpolation. Weitere Ausführungsbeispiele betreffen effiziente Filter sowie Rundungsverfahren für die mehrstufige Interpolation.
  • Ein Kodierer beziehungsweise ein Dekodierer nehmen eine Subpixelinterpolation an einem Referenzrahmen oder an einem Abschnitt eines Rahmens, so beispielsweise an einem oder mehreren Blöcken oder Makroblöcken, vor. Der Kodierer/Dekodierer berechnet Pixelwerte an Subpixelstellen innerhalb des Referenzrahmens. Der Kodierer/Dekodierer kann anschließend einen Bewegungsausgleich unter Verwendung subpixelgenauer Bewegungsvektoren vornehmen.
  • Bei einigen Ausführungsbeispielen nehmen ein Videokodierer beziehungsweise ein Videodekodierer die Subpixelinterpolation in einer Videokodieranwendung oder einer Videodekodieranwendung vor. Alternativ nimmt ein anderer Kodierer oder Dekodierer oder eine andere Art von Komponente die Subpixelinterpolation oder die nachstehend beschriebene andere Technik bei einer anderen Art von Anwendung vor.
  • Als Alternative zur Durchführung einer Subpixelinterpolation an Referenzrahmen nimmt bei einigen Ausführungsbeispielen ein Kodierer/Dekodierer die Subpixelinterpolation an Feldern, Objektschichten (object layers) oder anderen Bildern vor.
  • Bei einigen Ausführungsbeispielen wird die Subpixelinterpolation durch Berechnung von Pixelwerten in den Luminanz- und Chrominanzebenen einer Referenzebene im YUV-Farbraum vorgenommen. Alternativ kann auch ein anderer Farbraum (beispielsweise YIQ oder RGB) verwendet werden.
  • Die verschiedenartigen Techniken und Werkzeuge können in Kombination oder unabhängig voneinander verwendet werden. Verschiedene Ausführungsbeispiele implementieren eine oder mehrere der beschriebenen Techniken und eines oder mehrere der beschriebenen Werkzeuge. Obwohl die einzelnen Verfahrensschritte bei diesen Techniken üblicherweise aus Gründen einfacherer Darstellung in einer bestimmten sequenziellen Reihenfolge beschrieben werden, sollte einsichtig sein, dass diese Art der Beschreibung bestimmte Umordnungen der Reihenfolge der Verfahrensschritte einschließt, es sei denn, eine bestimmte Reihenfolge ist explizit gefordert. So können Verfahrensschritte, die nacheinander beschrieben werden, in einigen Fällen umgeordnet oder gleichzeitig ausgeführt werden. Darüber hinaus zeigen Flussdiagramme aus Gründen der einfacheren Darstellung üblicherweise nicht verschiedene Realisierungswege, durch die bestimmte Techniken in Verbindung mit anderen Techniken in der Praxis umgesetzt werden können.
  • Bei einigen Ausführungsbeispielen bedienen sich ein Videokodierer und ein entsprechender Dekodierer verschiedener Merker (flags) und Signale in einem Bitstrom. Obwohl bestimmte Merker und Signale beschrieben werden, sollte einsichtig sein, dass diese Art der Beschreibung andere Konventionen (beispielsweise Nullen anstelle von Einsen) für die Merker und Signale einschließt.
  • I. Berechnungsumgebung
  • 3 zeigt ein verallgemeinertes Beispiel einer geeigneten Berechnungsumgebung (300), durch die mehrere der beschriebenen Ausführungsbeispiele implementiert sein können. Die Berechnungsumgebung (300) ist nicht dafür gedacht, irgendeine Beschränkung mit Blick auf den Verwendungs- und Funktionalitätsumfang nahezulegen, da die Techniken und Werkzeuge in verschiedenen Allzweck- oder Sonderzweckberechnungsumgebungen implementiert sein können.
  • Wie in 3 gezeigt ist, umfasst die Berechnungsumgebung (300) wenigstens eine Verarbeitungseinheit (310) und einen Arbeitsspeicher (320). In 3 ist die grundlegende Ausgestaltung (330) mit einer gestrichelten Linie umrandet. Die Verarbeitungseinheit (310) führt computerausführbare Anweisungen aus und kann ein reeller oder ein virtueller Prozessor sein. In einem Multiverarbeitungssystem (multi-processing system) führen mehrere Verarbeitungseinheiten computerausführbare Anweisungen aus, um die Verarbeitungsleistung zu erhöhen. Der Arbeitsspeicher (320) kann ein flüchtiger Arbeits speicher (so beispielsweise ein Register, ein Cache, ein RAM), ein nichtflüchtiger Arbeitsspeicher (so beispielsweise ein ROM, ein EEPROM, ein Flash-Arbeitsspeicher und dergleichen) oder eine Kombination von beidem sein. Der Arbeitsspeicher (320) speichert Software (380), die die Subpixelinterpolationstechniken in einem Kodierer und/oder Dekodierer implementiert, so beispielsweise als Videokodierer und/oder Dekodierer.
  • Die Berechnungsumgebung kann zusätzliche Merkmale aufweisen. So umfasst die Berechnungsumgebung (300) beispielsweise einen Speicher (340), eine oder mehrere Eingabevorrichtungen (350), eine oder mehrere Ausgabevorrichtungen (360) sowie eine oder mehrere Datenaustauschverbindungen (370). Ein Verbindungsmechanismus (nicht gezeigt), so beispielsweise ein Bus, ein Controller oder ein Netzwerk, verbindet die Komponenten der Berechnungsumgebung (300). Typischerweise stellt eine Betriebssystemsoftware (nicht gezeigt) eine Arbeitsumgebung für andere in der Berechnungsumgebung (300) arbeitende Software bereit und koordiniert darüber hinaus die Aktivitäten der Komponenten der Berechnungsumgebung (300).
  • Der Speicher (340) kann entfernbar oder nichtentfernbar sein und umfasst magnetische Platten, magnetische Bänder oder Kassetten, CD-ROMs, DVDs und anderen Medien, die zur Speicherung von Information verwendet werden können, und auf die innerhalb der Berechnungsumgebung (300) zugegriffen werden kann. Der Speicher (340) speichert Anweisungen für die Software (380), die die Subpixelinterpolationstechniken implementiert.
  • Die Eingabevorrichtung (350) beziehungsweise die Eingabevorrichtungen können eine berührungsempfindliche Eingabevorrichtung sein, so beispielsweise eine Tastatur, eine Maus, ein Pen oder ein Trackball, eine stimmbasierte Eingabevorrichtung, eine Abtastvorrichtung oder eine andere Vorrichtung, die die Eingabe in die Berechnungsumgebung (300) bewirkt. Zur Audio- oder Videokodierung können die Eingabevorrichtung beziehungsweise die Eingabevorrichtungen (350) eine Soundkarte, eine Videokarte, eine TV-Tunerkarte oder ähnliche Vorrichtungen sein, die Audio- oder Videoeingaben in analoger oder digitaler Form annehmen, oder eine CD-ROM oder eine CD-RW, die Audio- oder Videoabtastungen in der Berechnungsumgebung (300) ausliest. Die Ausgabevorrichtung (360) beziehungsweise die Ausgabevorrichtungen können eine Anzeige, ein Drucker, ein Lautsprecher, ein CD-Schreiber oder eine andere Vorrichtung sein, die die Ausgabe aus der Berechnungsumgebung (300) vornehmen.
  • Die Datenaustauschverbindung (370) beziehungsweise die Datenaustauschverbindungen ermöglichen einen Datenaustausch über ein Datenaustauschmedium zu einer weiteren Berechnungseinheit. Das Datenaustauschmedium liefert Information, so beispielsweise computerausführbare Anweisungen, Audio- oder Videoeingaben und -ausgaben oder andere Daten in Form eines modulierten Datensignals. Ein moduliertes Datensignal ist ein Signal, bei dem eine oder mehrere Eigenschaften derart gesetzt oder geändert sind, dass Information in dem Signal kodiert ist. Als Beispiel und keinesfalls als Beschränkung seien als Datenaustauschmedium unter anderem drahtgebundene oder drahtlose Techniken genannt, die auf einem elektrischen, optischen, hochfrequenztechnischen, infrarottechnischen, akustischen oder anderem Träger implementiert sind.
  • Die Techniken und Werkzeuge können im allgemeinen Kontext computerlesbarer Medien beschrieben sein. Computerlesbare Medien sind beliebige verfügbare Medien, auf die innerhalb einer Berechnungsumgebung zugegriffen werden kann. Beispielhalber und keineswegs als Beschränkung seien als computerlesbare Medien in der Berechnungsumgebung (300) unter anderem ein Arbeitsspeicher (320), ein Speicher (340), Datenaustauschmedien und Kombinationen hiervon genannt.
  • Die Techniken und Werkzeuge können in dem allgemeinen Kontext computerausführbarer Anweisungen beschrieben sein, so beispielsweise derjenigen, die in Programmmodulen enthalten sind, die in einer Berechnungsumgebung in einem reellen oder virtuellen Zielprozessor ausgeführt werden. Allgemein zählen zu den Programmmodulen Routinen, Programme, Bibliotheken, Objekte, Klassen, Komponenten, Datenstrukturen und dergleichen, die bestimmte Aufgaben ausführen oder bestimmte abstrakte Datentypen implementieren. Die Funktionalität der Programmmodule kann je nach Wunsch bei verschiedenartigen Ausführungsbeispielen kombiniert oder unter bestimmten Programmmodulen aufgeteilt werden. Computerausführbare Anweisungen für Programmmodule können in einer lokalen oder verteilten Berechnungsumgebung ausgeführt werden.
  • Im Sinne der vorliegenden Darstellung werden in der Detailbeschreibung Begriffe wie „bestimmen" und „auswählen" zur Beschreibung von Verfahrensschritten auf einem Computer in einer Berechnungsumgebung verwendet. Diese Begriffe stellen hochgradige Abstraktionen für Verfahrensschritte dar, die von einem Computer ausgeführt werden, und dürfen nicht mit Handlungen verwechselt werden, die von einem menschlichen Wesen ausgeführt werden. Die tatsächlichen von einem Computer ausgeführten Verfah rensschritte, die diesen Begriffen entsprechen, ändern sich in Abhängigkeit von der jeweiligen Implementierung.
  • II. Verallgemeinerte Videokodierer und Videodekodierer
  • 4 ist ein Blockdiagramm eines verallgemeinerten Videokodierers (400), während 5 ein Blockdiagramm eines verallgemeinerten Videodekodierers (500) ist.
  • Die Beziehungen, die zwischen den Modulen innerhalb des Kodierers und des Dekodierers gezeigt sind, bezeichnen den Hauptinformationsfluss in dem Kodierer und dem Dekodierer. Andere Beziehungen sind aus Gründen einer einfacheren Darstellung nicht gezeigt. Insbesondere sind in 4 und 5 keine Zusatzinformationen gezeigt, durch die Kodierereinstellungen, Betriebsarten, Tabellen und dergleichen angegeben werden, die für die Videosequenzen, Rahmen, Makroblöcke, Blöcke oder dergleichen verwendet werden. Derartige Zusatzinformationen werden üblicherweise in dem Ausgabebitstrom gesendet, nachdem eine Entropiekodierung der Zusatzinformation erfolgt ist. Das Format des ausgegebenen Bitstromes kann das Windows-Media-Video-Format oder ein beliebiges anderes Format sein.
  • Der Kodierer (400) und der Dekodierer (500) sind blockbasiert und verwenden das 4:2:0-Makroblockformat, wobei jeder Makroblock vier Luminanz-8 × 8-Luminanz-Blöcke (die bisweilen auch als 16 × 16-Makroblock behandelt werden) und zwei 8 × 8-Chrominanz-Blöcke (beispielsweise einen U-Block und einen V-Block) enthalten. Alternativ sind der Kodierer (400) und der Dekodierer (500) objektbasiert, verwenden ein anderes Makroblock- oder Blockformat oder führen Operationen an Mengen von Pixeln mit einer Größe oder Ausgestaltung aus, die nicht 8 × 8-Blöcken oder 16 × 16-Blöcken entsprechen.
  • In Abhängigkeit von der Implementierung und dem Typ der gewünschten Kompression können Module des Kodierers oder Dekodierers hinzugefügt, weggelassen, auf mehrere Module verteilt, mit anderen Modulen kombiniert und/oder gegen andere Module ausgetauscht werden. Bei alternativen Ausführungsbeispielen bedienen sich Kodierer oder Dekodierer mit verschiedenen Modulen und/oder anderen Ausgestaltungen von Modulen einer oder mehrerer der beschriebenen Techniken.
  • A. Videokodierer
  • 4 ist ein Blockdiagramm eines allgemeinen Videokodiersystems (14). Das Kodiersystem (400) empfängt eine Sequenz von Videorahmen mit einem aktuellen Rahmen (405) und erzeugt komprimierte Videoinformationen (495) als Ausgabe. Bestimmte Ausführungsbeispiele des Videokodierers bedienen sich üblicherweise einer Abwandlung oder einer ergänzten Ausgestaltung des verallgemeinerten Kodierers (400).
  • Das Kodiersystem (400) komprimiert Prädiktionsrahmen und Key-Frame. Aus Gründen einer einfacheren Darstellung zeigt 4 einen Weg für Key-Frame durch das Kodiersystem (400) und einen Weg für Vorwärtsprädiktionsrahmen. Viele der Komponenten des Kodiersystems (400) werden zur Kompression sowohl der Key-Frame wie auch der Prädiktionsrahmen verwendet. Die genauen Verfahrensschritte, die von diesen Komponenten ausgeführt werden, können in Abhängigkeit von der Art der zu komprimierenden Information variieren.
  • Ein Prädiktionsrahmen (auch p-Rahmen, b-Rahmen für bidirektionale Prädiktion oder interkodierter Rahmen (intercoded frame) genannt) ermittelt die Prädiktion (beziehungsweise Differenz) zu einem oder mehreren weiteren Rahmen. Der Prädiktionsrest ist die Differenz zwischen der Prädiktion und dem ursprünglichen Rahmen. Demgegenüber wird ein Key-Frame (auch i-Rahmen oder intrakodierter Rahmen (intracoded frame) genannt) ohne Referenz gegenüber anderen Rahmen komprimiert.
  • Ist der aktuelle Rahmen (405) ein Vorwärtsprädiktionsrahmen, so schätzt ein Bewegungsabschätzer (410) die Bewegung der Makroblöcke oder anderer Mengen von Pixeln des aktuellen Rahmens (405) in Bezug auf einen Referenzrahmen ab, der der rekonstruierte vorherige Rahmen (425) ist, der in dem Rahmenspeicher (420) gespeichert ist. Bei alternativen Ausführungsbeispielen ist der Referenzrahmen ein späterer Rahmen, oder es erfolgt eine bidirektionale Prädiktion des aktuellen Rahmens. Der Bewegungsabschätzer (410) gibt als Zusatzinformation eine Bewegungsinformation (415) aus, so beispielsweise Bewegungsvektoren. Ein Bewegungsausgleicher (430) wendet die Bewegungsinformation (415) auf den rekonstruierten vorhergehenden Rahmen (425) an, um einen bewegungsausgeglichenen aktuellen Rahmen (435) zu bilden. Die Prädiktion ist jedoch selten vollkommen, und die Differenz zwischen dem bewegungsausgeglichenen aktuellen Rahmen (435) und dem ursprünglichen aktuellen Rahmen (405) ist der Prädiktionsrest (445). Alternativ setzen der Bewegungsabschätzer und der Bewegungsausgleicher eine andere Art von Bewegungsabschätzung beziehungsweise Bewegungsausgleich ein.
  • Ein Frequenzwandler (460) wandelt die Raumdomänenvideoinformation in Frequenzdomänendaten (spektral) um. Bei blockbasierten Videorahmen wendet der Frequenzwandler (460) eine diskrete Kosinustransformation (discrete cosine transform DCT) oder eine Variante hiervon auf Blöcke der Bewegungsprädiktionsdaten an, wodurch Blöcke aus DCT-Koeffizienten gebildet werden. Alternativ wendet der Frequenzwandler (460) eine andere herkömmliche Frequenzwandlung, so beispielsweise eine Fouriertransformation, an, oder er setzt eine Wavelet- oder Subbandanalyse an. Bei einigen Ausführungsbeispielen wendet der Frequenzwandler (460) eine Frequenzumwandlung auf Blöcke von Raumprädiktionsresten für Key-Frame an. Der Frequenzwandler (460) kann eine Frequenzwandlung der Größe 8 × 8, 8 × 4, 4 × 8 oder auch einer anderen Größe vornehmen.
  • Ein Quantisierer (470) quantisiert anschließend die Blöcke der Spektraldatenkoeffizienten. Der Quantisierer wendet eine gleichmäßige skalare Quantisierung auf die Spektraldaten mit einer Schrittweite an, die in Abhängigkeit von den Rahmen oder auf anderer Basis variiert. Alternativ wendet der Quantisierer eine andere Art von Quantisierung auf die Spektraldatenkoeffizienten an, so beispielsweise eine nichtgleichmäßige, vektorbasierte oder nichtadaptive Quantisierung, oder er quantisiert die Raumdomänendaten in einem Kodiersystem, in dem keine Frequenzwandlung vorgenommen wird, direkt. Zusätzlich zu der adaptiven Quantisierung kann der Kodierer (400) die Techniken der Rahmenaussonderung (frame dropping), des adaptiven Filterns (adaptive filtering) oder andere Techniken zur Steuerung der Rate einsetzen.
  • Wird ein rekonstruierter aktueller Rahmen für eine nachfolgende Bewegungsabschätzung und einen nachfolgenden Bewegungsausgleich verwendet, so nimmt ein Umkehrquantisierer (476) eine Umkehrquantisierung an den quantisierten Spektraldatenkoeffizienten vor. Ein Umkehrfrequenzwandler (466) nimmt sodann die Umkehrung der Verfahrensschritte des Frequenzwandlers (460) vor, wodurch er einen rekonstruierten Prädiktionsrest (für einen Prädiktionsrahmen) oder einen rekonstruierten Key-Frame erzeugt. War der aktuelle Rahmen (405) ein Key-Frame, so wird der rekonstruierte Key-Frame aus dem rekonstruierten aktuellen Rahmen (nicht gezeigt) genommen. War der aktuelle Rahmen (405) ein Prädiktionsrahmen, so wird der rekonstruierte Prädiktionsrest zu dem bewegungsausgeglichenen aktuellen Rahmen (435) hinzuaddiert, um den rekonstruierten aktuellen Rahmen zu bilden. Der Rahmenspeicher (420) puffert den rekonstruierten aktuellen Rahmen zur Verwendung bei der Prädiktion des nächsten Rahmens. Bei eini gen Ausführungsbeispielen wendet der Kodierer einen Blockierfilter auf den rekonstruierten Rahmen an, um Diskontinuitäten in den Blöcken des Rahmens aktiv zu glätten.
  • Der Entropiekodierer (480) komprimiert die Ausgabe des Quantisierers (470) wie auch bestimmte Zusatzinformationen (beispielsweise die Bewegungsinformation (415), die Größe des Quantisierungsschrittes). Typische Entropiekodiertechniken sind unter anderem das arithmetische Kodieren, das differentielle Kodieren, das Huffmann-Kodieren, das Lauflängenkodieren (run length coding), das LZ-Kodieren, das Wörterbuchkodieren sowie Kombinationen hiervon. Der Entropiekodierer (480) verwendet üblicherweise verschiedene Kodiertechniken für verschiedene Arten von Information (beispielsweise DC-Koeffizienten, AC-Koeffizienten, verschiedene Arten von Zusatzinformation) und kann unter mehreren Kodiertabellen innerhalb einer bestimmten Kodiertechnik wählen.
  • Der Entropiekodierer (480) verbringt die komprimierte Videoinformation (495) in den Puffer (490). Ein Pufferfüllstandsanzeiger wird den bitratenadaptiven Modulen zugeleitet. Die komprimierte Videoinformation (495) wird dem Puffer (490) mit einer konstanten oder vergleichsweise konstanten Bitrate entnommen und zur nachfolgenden Streamingverarbeitung mit jener Bitrate gespeichert. Alternativ nimmt das Kodiersystem (400) ein Streaming der komprimierten Videoinformationen unmittelbar im Gefolge der Kompression vor.
  • Vor oder nach dem Puffer (490) kann die komprimierte Bildinformation (495) zum Zwecke der Übertragung über ein Netzwerk kanalkodiert werden. Die Kanalkodierung kann eine Fehlererfassung und Berichtigungsdaten auf die komprimierte Videoinformation (495) anwenden.
  • B. Videodekodierer
  • 5 ist ein Blockdiagramm eines allgemeinen Videodekodiersystems (500). Das Dekodiersystem (500) empfängt Information (595) für eine komprimierte Sequenz von Videorahmen und erzeugt eine Ausgabe mit einem rekonstruierten Rahmen (505). Bestimmte Ausführungsbeispiele von Videodekodierern verwenden üblicherweise Abwandlungen oder Ergänzungen des allgemeinen Dekodierers (500).
  • Das Dekodiersystem (500) dekomprimiert Prädiktionsrahmen und Key-Frame. Aus Gründen einer einfacheren Darstellung zeigt 5 einen Weg für Key-Frame durch das Dekodiersystem (500) und einen Weg für Vorwärtsprädiktionsrahmen. Viele der Komponenten des Dekodiersystems (500) werden zur Dekomprimierung sowohl von Key-Frame wie auch von Prädiktionsrahmen verwendet. Die genauen Verfahrensschritte, die von diesen Komponenten ausgeführt werden, können von der Art der zu komprimierenden Information abhängen.
  • Ein Puffer (590) empfängt die Informationen (595) für die komprimierte Videosequenz und stellt die empfangenen Informationen einem Entropiedekodierer (580) zur Verfügung. Der Puffer (590) empfängt die Information üblicherweise mit einer Rate, die über die Zeit vergleichsweise konstant ist, und enthält einen Flimmerpuffer (jitter buffer), um kurzzeitige Schwankungen bei der Bandbreite oder Übertragung auszugleichen. Der Puffer (590) kann einen Playbackpuffer oder auch andere Puffer enthalten. Alternativ empfängt der Puffer (590) Informationen mit einer veränderlichen Rate. Vor oder nach dem Puffer (590) kann die komprimierte Videoinformation kanalkodiert und für eine Fehlererfassung und Berichtigung verarbeitet werden.
  • Der Entropiedekodierer (580) nimmt eine Entropiedekodierung an den entropiekodierten quantisierten Daten wie auch an der entropiekodierten Zusatzinformation (beispielsweise der Bewegungsinformation (515), der Größe des Quantisierungsschrittes) vor, wobei er gängigerweise die – zur Kodierung des Kodierers umgekehrte – Dekodierung vornimmt. Entropiedekodiertechniken sind unter anderem das arithmetische Dekodieren, das differentielle Dekodieren, das Huffmann-Dekodieren, das Lauflängendekodieren (run length decoding), das LZ-Dekodieren, das Wörterbuchdekodieren sowie Kombinationen hieraus. Der Entropiedekodierer (580) bedient sich häufig verschiedener Dekodiertechniken für verschiedene Arten von Information (beispielsweise DC-Koeffizienten, AC-Koeffizienten, verschiedene Arten von Zusatzinformation) und kann unter mehreren Kodiertabellen innerhalb einer bestimmten Dekodiertechnik auswählen.
  • Ist der zu rekonstruierende Rahmen (505) ein Vorwärtsprädiktionsrahmen, so wendet der Bewegungsausgleicher (530) die Bewegungsinformation (515) auf einen Referenzrahmen (525) an, um eine Prädiktion (535) des Rahmens (505) zu bilden, der gerade rekonstruiert wird. So verwendet der Bewegungsausgleicher (530) beispielsweise einen Makroblockbewegungsvektor, um einen Makroblock in dem Referenzrahmen (425) zu finden. Ein Rahmenpuffer (520) speichert vorher rekonstruierte Rahmen zur Verwendung als Referenzrahmen. Alternativ wendet der Bewegungsausgleicher eine andere Art des Bewegungsausgleiches an. Die Prädiktion durch den Bewegungsausgleicher ist selten vollkommen, sodass der Dekodierer (500) auch Prädiktionsreste rekonstruiert.
  • Benötigt der Dekodierer einen rekonstruierten Rahmen für einen nachfolgenden Bewegungsausgleich, so puffert der Rahmenspeicher (520) den rekonstruierten Rahmen zur Verwendung bei der Prädiktion des nächsten Rahmens. Bei einigen Ausführungsbeispielen wendet der Kodierer einen Deblockierfilter auf den rekonstruierten Rahmen an, um Diskontinuitäten in den Blöcken des Rahmens adaptiv zu glätten.
  • Ein Umkehrquantisierer (570) nimmt eine Umkehrquantisierung der entropiedekodierten Daten vor. Im Allgemeinen wendet der Umkehrquantisierer eine gleichmäßige skalare Umkehrquantisierung auf die entropiedekodierten Daten mit einer Schrittweite, die in Abhängigkeit von den Rahmen oder auf anderer Basis variiert, an. Alternativ wendet der Umkehrquantisierer eine andere Art von Umkehrquantisierung auf die Daten an, so beispielsweise eine nichtgleichmäßige, vektorbasierte oder nichtadaptive Quantisierung, oder er nimmt eine direkte Umkehrquantisierung der Raumdomänendaten in einem Dekodiersystem vor, bei dem keine Umkehrfrequenzwandlung verwendet wird.
  • Ein Umkehrfrequenzwandler (560) wandelt die quantisierten Frequenzdomänendaten in Raumdomänenvideoinformationen um. Bei blockbasierten Videorahmen wendet der Umkehrfrequenzwandler (560) eine Umkehr-DCT (inverse DCT, IDCT) oder eine Variante der IDCT auf Blöcke von DCT-Koeffizienten an, wodurch Bewegungsprädiktionsrestdaten erzeugt werden. Alternativ verwendet der Frequenzwandler (560) eine andere herkömmliche Umkehrfrequenzwandlung, so beispielsweise eine Fouriertransformation, oder er bedient sich einer Wavelet- oder Subbandsynthese. Bei einigen Ausführungsbeispielen wendet der Umkehrfrequenzwandler (560) eine Umkehrfrequenzwandlung auf Blöcke von Raumprädiktionsresten für Key-Frame an. Der Umkehrfrequenzwandler (560) kann eine Umkehrfrequenzwandlung der Größe 8 × 8, 8 × 4, 4 × 8 oder auch einer anderen Größe vornehmen.
  • III. Bewegungsabschätzung und Bewegungsausgleich
  • Die Interrahmenkodierung nutzt vorübergehende Redundanzen zwischen Rahmen, um eine Kompression durchzuführen. Vorübergehende Redundanzverringerungen bedienen sich vorher kodierter Rahmen als Prädiktoren bei der Kodierung des aktuellen Rahmens. Bei den nachstehend beschriebenen Ausführungsbeispielen nutzt ein Videokodierer vor übergehende Redundanzen in typischen Videosequenzen, um die Information unter Verwendung einer kleineren Anzahl von Bits zu kodieren. Der Videokodierer bedient sich der Bewegungsabschätzung, um die Bewegung eines Blocks, eines Makroblocks oder einer anderen Menge von Pixeln eines Prädiktionsrahmens relativ zu einem Referenzrahmen (beispielsweise einem vorher kodierten oder vorhergehenden Rahmen) zu parametrisieren. Der Videokodierer (wie auch der entsprechende Dekodierer) bedienen sich des Bewegungsausgleiches, um den Prädiktionsrahmen unter Verwendung der Bewegungsinformationen und des Referenzrahmens zu rekonstruieren.
  • Der Bewegungsausgleich ist der Vorgang der Erzeugung einer Prädiktion für einen Videorahmen (das heißt des Prädiktionsrahmens) durch Versetzen (displacing) des Referenzrahmens. Wie bereits angemerkt wurde, wird die Prädiktion für einen Block, einen Makroblock oder eine andere Menge von Daten aus dem Referenzrahmen gebildet. Darüber hinaus ist die Versetzung üblicherweise rechteckig und über die ganze Prädiktionsstrukturierung (prediction tile) konstant. Eine derartige Versetzung ist durch einen Bewegungsvektor mit zwei Komponenten entsprechend der Versetzung oder Schiebung entlang der x-Richtung und entlang der Y-Richtung festgelegt. Die horizontale Bewegungsvektorkomponente (X) und die vertikale Bewegungsvektorkomponente (Y) stellen die Versetzung zwischen der Strukturierung, die aktuell einer Prädiktion unterworfen ist, und der entsprechenden Stelle im Referenzrahmen dar. Positive Werte stellen Stellen dar, die unter der aktuellen Stelle und zu deren Rechter befindlich sind. Negative Werte stellen Stellen dar, die über der aktuellen Stelle und zu deren Linker befindlich sind.
  • Bei einer Implementierung ist ein Block eine 8 × 8-Strukturierung von Pixeln und ein Makroblock eine 16 × 16-Strukturierung von Pixeln, wobei die Bewegungsvektoren auf Viertelpixelgenauigkeit festgelegt sind. Bei anderen Implementierungen wenden der Kodierer und der Dekodierer eine oder mehrere der beschriebenen Techniken auf Strukturierungen verschiedener Größen oder Strukturierungen veränderlicher Größe an, und zwar mit Bewegungsvektoren verschiedener Auflösung oder beliebig veränderlichen Bewegungsvektoren und/oder unter Verwendung von Bewegungsinformationen jenseits der Bewegungsvektoren.
  • Die Bewegungsvektorkomponenten sind üblicherweise als Pixelversetzungen – oftmals mit Subpixelgenauigkeit – spezifiziert. Die Subpixelversetzungen werden durch Filtern des Referenzrahmens unter Verwendung geeignet festgelegter Bewegungsausgleichsfilter gefiltert. Für den Fall eines rechteckigen Subpixelbewegungsausgleiches werden die X- und Y-Komponenten als Festkommazahlen dargestellt. Der ganzzahlige Teil dieser Zahlen wird Vollpixelschiebung beziehungsweise ganzzahlige Pixelschiebung genannt, während der gebrochenzahlige Teil Subpixelschiebung genannt wird. Ist die Subpixelschiebung gleich 0, so entspricht die Bewegung einer ganzen Zahl von Pixeln. Am häufigsten ist dies als Kopie eines Blockes aus dem Referenzrahmen implementiert, um den Prädiktor zu erzeugen (obwohl gegebenenfalls bestimmte Arten der Filterung angewendet werden können). Demgegenüber wird für den Fall, dass die Subpixelschiebung nicht gleich 0 ist, der Prädiktor dadurch erzeugt, dass ein oder mehrere Filter entsprechend der Subpixelschiebung auf die Vollpixelstellen in dem Referenzrahmen angewendet werden. Daher ist der Bewegungsausgleichsfilter durch die Subpixelschiebung bestimmt.
  • Zur Implementierung von Subpixelschiebungen als Filteroperationen interpolieren die Bewegungsausgleichsfilter Datenpunkte an gebrochenzahligen Pixelstellen auf Basis von Referenzwerten an Vollpixelstellen. Im Allgemeinen nimmt die Qualität der Interpolation durch Wirkung des Filters zu. Einige Ausführungsbeispiele bedienen sich trennbarer Zweihahnfilter (2-tap filter) und Vierhahnfilter (4-tap filter) in jeder Richtung, die bilinearen und bikubischen Interpolatoren entsprechen.
  • Bei einigen Ausführungsbeispielen bedienen sich die Bewegungsausgleichsfilter einer ganzzahligen Arithmetik und Division, die als Bitschiebung implementiert ist. Der Rundungssteuerparameter R nimmt die Werte 0 oder 1 an und bestimmt die Richtung der Rundung für diese Divisionen. Der Rundungssteuerparameter kann konstant gewählt werden, er kann durch ein externes Signal vorgegeben werden, oder er kann implizit aus vorher kodierten Informationen hergeleitet werden.
  • 6 zeigt Vollpixel- und Subpixelstellen in einem Referenzrahmen (600), der während der Subpixelbewegungsabschätzung und des Subpixelbewegungsausgleiches bei einigen Ausführungsbeispielen verwendet wird. In Viertelpixelintervallen in jeder Richtung enthält der Referenzrahmen (600) Subpixelstellen, für die ein Kodierer oder Dekodierer Pixelwerte für eine bestimmte Versetzung interpolieren kann. Die ganzzahligen Positionen a bis p des Referenzrahmens (600) sind in 6 als schattierte Kreise gezeigt, während die Viertelpixelpositionen und die Halbpixelpositionen, die zwischen den ganzzahligen Stellen beziehungsweise Vollstellen liegen, als nichtschattierte Kreise gezeigt sind. Die Stellen P0 bis P8 zeigen neun repräsentative Subpixelpositionen, wie in Tabelle 1 beschrieben ist.
    Position Beschreibung
    P0 Viertelpixel horizontal, Vollpixel vertikal
    P1 Halbpixel horizontal, Vollpixel vertikal
    P2 Vollpixel horizontal, Viertelpixel vertikal
    P3 Viertelpixel horizontal, Viertelpixel vertikal
    P4 Halbpixel horizontal, Viertelpixel vertikal
    P5 Vollpixel horizontal, Halbpixel vertikal
    P6 Viertelpixel horizontal, Halbpixel vertikal
    P7 Halbpixel horizontal, Halbpixel vertikal
    P8 Viertelpixel horizontal, Dreiviertelpixel vertikal
    Tabelle 1: Repräsentative Subpixelpositionen
  • Die Dreiviertelpixelposition, als deren Beispiel P8 angegeben ist, kann als Spezialfall der Viertelpixelposition angesehen werden; sie ist um eine Viertelpixelschiebung von einer Vollpixelstelle entfernt. Weitere Dreiviertelpixelpositionen sind möglich, jedoch nicht dargestellt. Die Subpixelpositionen P0 bis P8 werden im Laufe der nachfolgenden Beschreibung der Interpolationsfilter wiederverwendet. Bei alternativen Ausführungsbeispielen interpolieren der Kodierer und der Dekodierer Werte an zusätzlichen oder anderen Subpixelpositionen, so beispielsweise an jenen in einem Intervall jenseits eines Viertelpixels in jeder Richtung.
  • A. Genäherte bikubische Interpolationsfilter
  • Für Subpixelinterpolationen verwenden bei einigen Ausführungsbeispielen ein Videokodierer und ein entsprechender Dekodierer lineare/bilineare Filter und/oder kubische/bikubische Filter, die folgendermaßen festgelegt sind.
  • Ein linearer Interpolator ist ein lineares Polynom beziehungsweise ein Polynom erster Ordnung in einer Dimension, bei dem bekannte Werte an denjenigen zwei Gitterpunkten verwendet werden, die den zu interpolierenden Punkten am nächsten sind. Der Wert der linearen Funktion an dem interpolierten Punkt ist die lineare Interpolation. Die Multiplikatoren des linearen Polynoms werden durch Lösen eines linearen Gleichungssystems berechnet, wodurch die Koeffizienten des linearen Filters bestimmt werden. Ein linearer Interpolationsfilter wird durch zwei Filterhähne beschrieben. Ein bilinearer Interpolator ist ein linearer Interpolator, der in zwei Dimensionen trennbar ist.
  • Ein kubischer Interpolator ist ein kubisches Polynom beziehungsweise ein Polynom dritter Ordnung in einer Dimension, bei dem bekannte Werte an denjenigen vier Gitterpunkten verwendet werden, die dem interpolierten Punkt am nächsten sind. Der Wert der kubischen Funktion an dem interpolierten Punkt ist die kubische Interpolation. Die Multiplikatoren des kubischen Polynoms werden durch Lösen eines Systems von Gleichungen bestimmt, wodurch die Koeffizienten des kubischen Filters bestimmt werden. Ein kubischer Interpolationsfilter ist durch vier Filterhähne festgelegt. Ein bikubischer Interpolator ist ein kubischer Interpolator, der in zwei Dimensionen trennbar ist.
  • Die Begriffe „linear" und „bilinear" werden auf dem Gebiet der Videokompression und der Videodekompression üblicherweise austauschbar verwendet. Bei einer üblichen zweidimensionalen Interpolation wird die in einer Dimension ausgeführte Interpolationsoperation in der anderen Dimension repliziert, weshalb jede Filterstufe als bilineare Filterung bezeichnet wird. Die Begriffe „kubisch" und „bikubisch" sind entsprechend austauschbar.
  • Im Rahmen der vorliegenden Druckschrift werden die Begriffe „linear" und „bilinear" austauschbar zur Beschreibung einer Filterung in einer, zwei oder mehr Dimensionen verwendet. Auf ähnliche Weise werden die Begriffe „kubisch" und „bikubisch" austauschbar zur Beschreibung einer Filterung in einer, zwei oder mehr Dimensionen verwendet. Gleichungen (11) bis (13) legen beispielsweise Typen kubischer Filter fest, werden jedoch als bikubische Filter bezeichnet, da bei den üblichen Anwendungen der zweistufigen Interpolation für Referenzvideorahmen die Filter bei Operationen verwendet werden, die für beide Dimensionen der zweistufigen Interpolation repliziert werden. Allgemein ist die Dimensionalität der Filterung aus dem Kontext bekannt.
  • Bei einigen Ausführungsbeispielen verwenden ein Kodierer und ein Dekodierer genäherte bikubische Filter zur Interpolation von Werten an Subpixelstellen. Der Kodierer und der Dekodierer verwenden beispielsweise die nachfolgenden Filter (von denen F1 ein bikubischer Filter ist, während F2 und F3 genäherte bikubische Filter darstellen) an möglichen Schiebungsstellen in einem Referenzrahmen, so beispielsweise bei dem in 6 gezeigten. Halbpixelschiebung F1:[–1 9 9 –1] (11) Viertelpixelschiebung F2:[–4 53 18 –3] (12) Dreiviertelpixelschiebung F3:[–3 18 53 –4] (13)
  • In der Praxis umfassen die Filter eine Rechtsschiebung (beispielsweise 4 Bit für F1, 6 Bit für F2 und F3), um die Entwicklung auszugleichen, die möglicherweise durch die Filterkoeffizienten eingeführt worden ist. Der Operator >> ist ein Rechtsschiebeoperator. Eine Rechtsschiebeoperation schiebt die Bits einer binären Zahl nach rechts, wobei das niedrigstwertige Bit gestrichen wird, und eine Null als höchstwertiges Bit hinzugefügt wird. Diese Operation führt zu einer einfachen Division durch zwei hoch der Anzahl verschobener Bits (So führt beispielsweise eine Rechtsschiebung um 3 Bit zu einer Division durch 23 = 8), wobei der Rest ignoriert wird.
  • Die Filterkoeffizienten für F2 und F3 basieren unzusammenhängend auf dem echten bikubischen Viertelpixelinterpolator, der ein Vierhahnfilter ist. Die nachfolgende Gleichung zeigt das Ergebnis der Anwendung des bikubischen Viertelpixelfilters für die Stelle P0: (–7e + 105f + 35g – 5h) >> 7 (14)
  • Die Koeffizientenwerte summieren sich auf 128, und das Produkt der Filterung wird um 7 Bit nach rechts verschoben. Die genäherten bikubischen Filter F2 und F3 nähern sich dem reinen bikubischen Filter mit Blick auf die Leistung an, haben jedoch eine niedrigere Auflösung, was die folgende Gleichung deutlich macht. (–7e + 105f + 35g – 5h) >> 7 = (–3,5e + 52,5f + 17,5g – 2,5h) >> 6 ≈ (–4e + 53f + 18g – 3h) >> 6 (15)
  • In vielen Fällen führt die Verwendung eines reinen bikubischen Filters bei einer mehrstufigen Interpolation zu einem Verlust von Bits der Genauigkeit, sodass der Normalisierungsfaktor für den genäherten bikubischen Filter um wenigstens die Hälfte reduziert wird (das heißt, die Rechtsschiebung wird um 1 Bit oder mehr verkleinert). Die für den genäherten bikubischen Filter von Gleichung (15) gewählten Filterkoeffizienten basieren auf einer Rundung des echten bikubischen Filters, nachdem das Frequenzdomänenverhalten (beispielsweise zur Erhaltung der Hochfrequenzinformation) und das empirische Verhalten (beispielsweise zur Erhaltung der niedrigsten Verzerrung bei einer gegebenen Bitrate) berücksichtigt worden ist. Insbesondere enthalten die Filter F2 und F3 immer noch vier Filterkoeffizienten (Im Allgemeinen beschleunigt die Verwendung von weniger Filterkoeffizienten in einem Filter die Implementierung, wobei jedoch ausreichend Filterkoeffizienten verwendet werden sollten, um das Rauschen bei einem benachbarten Pixel ausreichend zu berücksichtigen). Die Filterkoeffizienten werden derart angepasst, dass sie sich auf 64 summieren, wodurch die Implementierung unter Verwendung einer 16-Bit-Arithmetik vereinfacht wird, wobei eine Näherung eines bikubischen Filters höherer Auflösung stattfindet. Andere Filterkoeffizientenwerte, die sich auf 64 addieren, können ebenfalls verwendet werden, wobei auch hier ein bikubischer Filter angenähert wird. Ein Filter, der sich im Wesentlichen wie ein reiner bikubischer Filter verhält, der jedoch weniger Support und/oder eine niedrigere Auflösung aufweist, wird „genäherter" bikubischer Filter (approximate bicubic filter) genannt. Eine Art der objektiven Bestimmung, ob sich ein Filter im Wesentlichen wie ein reiner bikubischer Filter verhält, besteht darin nachzuprüfen, ob der genäherte Filter mit dem reinen bikubischen Filter gut (das heißt innerhalb einer vorgegebenen Schwelle) korreliert. Bei einer Implementierung wird die Korrelation durch den Kosinus des Winkels zwischen den Vektoren für die Filter (wobei gewünscht ist, dass dieser Wert so nahe wie möglich an 1 ist) gemessen, wobei die Schwelle bei 0,95 liegt. Andere objektive oder subjektive Maßnahmen, andere Messungen und/oder Schwellen können ebenfalls Verwendung finden. So können die Filterkoeffizienten des genäherten bikubischen Filters beispielsweise derart gewählt werden, dass ihre Summe einen anderen Wert ergibt, wodurch eine effiziente Fouriertransformation oder eine andere mathematische Operationen vereinfacht werden.
  • Wie nachstehend noch detailliert beschrieben wird, zeigt 7 allgemein die Vollpixelstellen mit Pixelwerten, die zur Berechnung interpolierter Pixel für jeden der Fälle entsprechend den bikubischen Filtern gemäß Gleichungen (11) bis (13) verwendet werden. P bezeichnet die Subpixelposition, für die ein Pixelwert berechnet wird. I1, I2, I3 und I4 stellen Vollpixelstellen entlang der Dimension der Interpolation dar. 7 zeigt die horizontale Interpolation, wobei dieselben Operationen und dieselbe Anordnung auch bei Positionen für die vertikale Interpolation Anwendung finden.
  • Bei alternativen Ausführungsbeispielen bedienen sich ein Kodierer und ein Dekodierer anderer und/oder zusätzlicher Interpolationsfilter. Der Kodierer und Dekodierer bedienen sich beispielsweise eines bilinearen Filters (das heißt eines Zweihahnfilters), um den Wert zu interpolieren. Mit Blick auf die Subpixelpositionen von 6 können beispielsweise diejenigen Interpolationsfilter, die zur Bestimmung der Werte P1, P5 und P7 eingesetzt werden, Filter sein, die in Gleichungen (1) bis (3) dargestellt sind.
  • B. Eindimensionale Interpolation
  • Für verschiedene Subpixelpositionen berechnen der Kodierer und der Dekodierer bei einigen Ausführungsbeispielen einen interpolierten Wert in lediglich einer Dimension. Wie 7 gezeigt ist, zeigen die nachfolgenden Gleichungen den Betrieb der Filter F1 (Halbpixelschiebung), F2 (Viertelpixelschiebung) und F3 (Dreiviertelpixelschiebung), wenn zwischen ganzzahligen Pixeln beziehungsweise Vollpixeln interpoliert wird. F1 (–1I1 + 9I2 + 9I3 – 1I4 + 8 – r) >> 4 (16) F2 (–4I1 + 53I2 + 18I3 – 3I4 + 32 – r) >> 6 (17) F3 (–3I1 + 18I2 + 53I3 – 4I4 + 32 – r) >> 6 (18)
  • Hierbei steuert der Wert r die Rundung. Der Wert r hängt von dem binären Rahmenniveaurundungssteuerparameter R ab und bestimmt die Interpolationsrichtung folgendermaßen.
  • Figure 00270001
  • Zur weiteren Erläuterung einer eindimensionalen Interpolation zeigen P1 und P5 von 6 Halbpixelpositionen in dem Referenzrahmen (600), bei denen eine Interpolation in lediglich einer Dimension (das heißt die horizontale Richtung für P1 und die vertikale Richtung für P5) vorgenommen wird. Die folgenden Gleichungen zeigen den Betrieb des Filters F1 (Halbpixelschiebung) bei einer Interpolation zwischen den ganzzahligen Pixeln für P1 und P5: P1 = (–1e + 9f + 9g – 1h + 8 – r) >> 4 (20) P5 = (–4b + 9f + 9j – 1n + 8 – r) >> 4 (21)
  • Entsprechend zeigen P0 und P2 von 6 Viertelpixelpositionen in dem Referenzrahmen (600), bei denen eine Interpolation in lediglich einer Dimension erforderlich ist. Die folgenden Gleichungen zeigen den Betrieb des Filters F2 (Viertelpixelschiebung) bei einer Interpolation zwischen ganzzahligen Pixeln für P0 und P2. P0 = (–4e + 53f + 18g – 3h + 32 – r) >> 6 (22) P2 = (–4b + 53f + 18j – 3n + 32 – r) >> 6 (23)
  • Der genäherte bikubische Viertelpixelfilter F2 kann durch lediglich eine kleine Abwandlung auch zur Berechnung von Dreiviertelpixelpositionen verwendet werden. So zeigen beispielsweise die nachfolgenden Gleichungen den Betrieb des Filters F3 (Dreiviertelpixelschiebung) bei der Interpolation zwischen ganzzahligen Pixeln für P8. P8 = (–3b + 18f + 53j – 4n + 32 – r) >> 6 (24)
  • Alternativ bedienen sich der Kodierer und der Dekodierer anderer und/oder zusätzlicher Interpolationsfilter für um Halbpixel, Viertelpixel oder Dreiviertelpixel verschobene Positionen in einer Dimension. Der Kodierer und der Dekodierer verwenden beispielsweise Filter mit mehr oder weniger Filterkoeffizienten, anderen Filterkoeffizienten, einer anderen Rundung oder auch ohne Rundung.
  • C. Mehrdimensionale Interpolation
  • Bei einigen Ausführungsbeispielen wird die Interpolation für Subpixelpositionen vorgenommen, die in zwei Richtungen versetzt (offset) sind. In 6 beispielsweise stellen P3, P4, P6 und P7 Positionen dar, für die eine Interpolation sowohl in horizontaler wie auch in vertikaler Dimension auftritt.
  • Bei einem Ausführungsbeispiel, das dem Interpolationsverfahren (800) gemäß 8 entspricht, werden die zweidimensionalen Subpixelpositionen zunächst entlang der vertikalen Richtung und anschließend entlang der horizontalen Richtung interpoliert. Wie nachstehend noch detailliert beschrieben wird, erfolgt die Interpolation unter Verwendung eines oder mehrerer der Filter F1, F2 oder F3, die in den vorstehenden Gleichungen (16) bis (18) beschrieben sind. Bei dem in 8 dargestellten Ausführungsbeispiel wird die Rundung sowohl nach der vertikalen Filterung wie auch nach der horizontalen Filterung vorgenommen. Die Bitschiebung in der Rundungsregel stellt die Beibehaltung der Genauigkeit, die innerhalb der Grenzen der 16-Bit-Arithmetik zulässig ist, in den vorläufigen Ergebnissen sicher.
  • In 8 wird zunächst die vertikale Filterung vorgenommen, gefolgt von einer horizontalen Filterung. Die Tatsache, dass mit der vertikalen Filterung begonnen wird, verbes sert die Leistung bei einigen Architekturen. Bei anderen Ausführungsbeispielen ist die Reihenfolge der Filterungen eine andere. So kann beispielsweise die Interpolation in der horizontalen Richtung vor derjenigen in der vertikalen Richtung vorgenommen werden. Zudem sind verschiedene andere Kombinationen von Interpolationsfiltern (beispielsweise mehrere horizontale und/oder mehrere vertikale Filter und dergleichen) in Gebrauch.
  • Die Eingabewerte und die Ausgabepixelwerte (811, 838) weisen eine Bittiefe von 8 Bit sowie einen Wertebereich mit 256 Werten auf. Die vorläufigen Werte (820) weisen eine Bittiefe von 16 Bit für einen Wertebereich mit 65536 Werten auf. Bei alternativen Ausführungsbeispielen weisen die Eingabewerte, die Ausgabewerte und die vorläufigen Werte eine andere (das heißt höhere) Bittiefe auf.
  • In einer ersten Stufe (810) wird ein geeigneter vertikaler Filter (Fv) auf den 8 Bit langen Eingabepixelwert beziehungsweise die entsprechenden Eingabepixelwerte (811) angewendet (812). Die Verwendung des vertikalen Filters hängt davon ab, ob die ausgewählte Subpixelposition um ein Viertelpixel, ein Halbpixel oder ein Dreiviertelpixel verschoben wird, und kann die Form eines oder mehrerer der vorstehend beschriebenen bikubischen Filter annehmen.
  • Die Rundungsregel nach der vertikalen Filterung ist folgendermaßen definiert. (S + RV) >> shiftV (25)
  • Hierbei bezeichnet S das vertikal gefilterte Ergebnis, wobei Rv = 2shiftV-1 – 1 + R der Rundungssteuerwert ist, der rahmenweise zwischen 0 und 1 wechselt. Die Rundungsregel enthält eine Rundung mit einer stufenweise wechselnden Rundungssteuerung (813) und einer Bitschiebung (840).
  • Die Rechtsschiebung bewirkt gegebenenfalls einen Auflösungsverlust, weshalb wenigstens ein Teil der Rechtsschiebung in die späteren Stufen der Interpolation verschoben wird. Der Rechtsschiebungswert für shiftV hängt von der interpolierten Subpixelposition ab. Insbesondere gilt shiftV = {5, 3, 3, 1} für P3, P4, P6 und P7. Das Ausmaß des Schiebung ist geringer, als es für einen Ausgleich der Entwicklung bedingt durch die Filterkoeffizientenwerte der ersten Stufe (das heißt die Verschiebung ist kleiner als 6 Bit für den genäherten bikubischen Filter) möglich ist, jedoch ausreichend, um sicherzustellen, dass die vorläufigen Ergebnisse der nachfolgenden Filterung im Wertebereich für die vorläufigen Werte (beispielsweise 65536 mögliche Werte für 16 Bit lange Worte) verbleiben. Verglichen mit der Vollschiebung wird durch diese verkürzte Schiebung die Genauigkeit der vorläufigen Pixelwerte (820) nach der ersten Stufe (810) der Interpolation beibehalten. Die vorläufigen Pixelwerte (820) weisen einen Wertebereich von y Bit auf, wobei y größer als 8 Bit ist. Das Ausmaß des Schiebung, die in der ersten Stufe durchgeführt wird, hängt gegebenenfalls von der verfügbaren Bittiefe und den Koeffizienten der Interpolationsfilter ab. So sind beispielsweise bei der hier beschriebenen beispielhaften Implementierung die vorläufigen Werte auf eine Wortgrenze von 16 Bit beschränkt.
  • Man betrachte den Punkt P3 in 6 und die Eingabewerte in dem Bereich von 0 bis 255 (8 Bit). Der Bereich der vorläufigen Werte durch die Anwendung der genäherten bikubischen Filterkoeffizienten [–4 53 18 –3) auf die 8 Bit langen Eingabewerte liegt zwischen –1785 und 18105 (etwa 14,3 Bit, wobei hier eine Rundung auf 15 Bit für die Implementierung erfolgt), was durch den Entwicklungsfaktor der Filterkoeffizienten bedingt ist. Eine nachfolgende horizontale Filterung, bei der die genäherten bikubischen Filterkoeffizienten (mit zusätzlicher Entwicklung) auf die vorläufigen Werte angewendet werden, kann Werte außerhalb des 16 Bit langen Wertebereiches erzeugen, was zu einer Bereichsüberschreitung (overflow) führt. Daher werden die vorläufigen Werte derart ausreichend verschoben, dass sichergestellt ist, dass die nachfolgende horizontale Filterung zu einem Wert innerhalb des 16 Bit langen Wertebereiches führt. So ist beispielsweise das Ausmaß der Schiebung für P3 gleich 5 Bit, wobei der Wertebereich der verschobenen vorläufigen Werte zwischen –55 und 565 (grob 9,3 Bit, die für die Implementierung auf 10 Bit aufgerundet werden) liegt. Der Ausgabebereich durch die Anwendung der genäherten bikubischen Filterkoeffizienten auf die verschobenen vorläufigen Werte liegt dann zwischen –7860 und 40500, was einem Wertebereich von weniger als 16 Bit entspricht. Daher wird die verkürzte Schiebung derart berechnet, dass die 16 Bit lange Wortgrenze voll ausgeschöpft wird, wobei jedoch sichergestellt ist, dass in der zweiten Stufe (830) der Interpolation keine Überschreitung auftritt.
  • In der zweiten Stufe (830) wird ein geeigneter horizontaler Filter (FH) eingesetzt (832), um den Wert an der zweidimensionalen Subpixelposition aus den Werten (820), die von dem vertikalen Filter bestimmt worden sind, zu interpolieren. Die Rundungsregel nach der horizontalen Filterung lautet folgendermaßen. (S + 64 – R) >> 7 (26)
  • Hierbei bezeichnen S das horizontal gefilterte Ergebnis und R den Rundungssteuerwert, der rahmenweise wechselt. Wie bei der Rundungsregel der ersten Stufe enthält die Rundungsregel der zweiten Stufe eine Rundung mit stufenweise wechselnder Rundungssteuerung (833) und einer Bitschiebung (834). Aufgrund der verschobenen Schiebung in der ersten Stufe überschreitet das Ausmaß der Schiebung der zweiten Stufe üblicherweise das, was normalerweise für den ausgewählten horizontalen Filter zu erwarten ist, und wird derart errechnet, dass ein Wert ausgegeben wird, der den gewünschten Wertebereich aufweist.
  • Sämtliche Fälle der bikubischen Filterung können möglicherweise ein Interpolationspixel erzeugen, dessen Wert negativ ist, oder dessen Wert größer als der Maximalwert des Wertebereiches (beispielsweise 255 für eine 8 Bit lange Ausgabe) ist. In diesen Fällen schneiden bei 8 Bit langen Ausgabewerten der Kodierer und Dekodierer den Ausgabewert (836) derart ab, dass dieser in einem annehmbaren Bereich liegt. Insbesondere werden Bereichsunterschreitungen auf 0 und Bereichsüberschreitungen auf 255 gesetzt. Nach dem Abschneiden wird ein interpolierter 8 Bit langer Wert (838) ausgegeben.
  • In 8 liegt die Schiebung der zweiten Stufe bei 7 Bit. Es wird also ein gefilterter Ausgabewert mit 9 Bit beibehalten. Mit Blick auf das vorgenannte Beispiel für P3 liegt beispielsweise der Bereich des gefilterten Ausgabewertes zwischen –61 und 316, was einem Wertebereich von grob 8,6 Bit entspricht (wobei für die Implementierung eine Rundung auf 9 Bit erfolgt). Obwohl der gültige Bereich der interpolierten Daten bei nur 8 Bit liegt, erzeugt das zusätzliche eine Bit im Kopfbereich (Headroom) eine Information bezüglich Bereichsüberschreitungen und Bereichsunterschreitungen. Mit anderen Worten, es tritt beim Setzen des höchstwertigen Bits (das heißt des Zeichenbits beziehungsweise des Vorzeichenbits) eine Bereichsunterschreitung oder eine Bereichsüberschreitung auf. Welche der beiden aufgetreten ist, ist insbesondere durch Analyse der verbleibenden 8 Mantissenbits ermittelbar.
  • 9 bis 11 zeigen die vorstehend anhand 8 beschriebene zweidimensionale Interpolation. 9 zeigt eine Subpixelposition P7 (Halbpixel in der Horizontalen und Halbpixel in der Vertikalen) des Referenzrahmens (600) von 6. Zwei bikubische Halbpixelinterpolationsfilter werden zur Interpolation der Werte von P7 verwendet. In der ersten Stufe werden die vorläufigen Werte V1 bis V4 aus genäherten ganzzahligen Pixel positionen unter Verwendung eines bikubischen Halbpixelfilters der nachfolgenden allgemeinen Form berechnet. Vinter = (–1x1 + 9x2 + 9x3 – 1x4) (27)
  • Somit gilt: V1 = (–1a + 9e + 9i – 1m) (28) V2 = (–1b + 9f + 9j – 1n) (29) V3 = (–1c + 9g + 9k – 1o) (30) V4 = (–1d + 9h + 9l – 1p) (31)
  • Nach dem Addieren eines geeigneten Wertes von Rv werden die Ergebnisse um 1 Bit nach rechts verschoben. In der zweite Stufe werden die vorläufigen Ergebnisse V1 bis V4 von einem Halbpixelfilter zur Berechnung des Pixelwertes bei P7 verwendet. Insbesondere wird ein Halbpixelfilter der nachfolgenden Form verwendet. P7 = (–1V1 + 9V2 + 9V3 – 1V4) (32)
  • Wie vorstehend diskutiert wurde, wird das Ergebnis der zweiten Stufe um 7 Bit nach rechts verschoben, um einen 9 Bit langen Wert zu erhalten. Der 9 Bit lange Wert umfasst 8 Mantissenbits und ein Vorzeichenbit. Nachdem ein notwendiges Abschneiden vorgenommen worden ist, um eine Bereichsüberschreitung oder eine Bereichsunterschreitung auszugleichen, wird ein finaler 8 Bit langer interpolierter Wert ausgegeben.
  • 10 zeigt eine Subpixelposition P4 (Halbpixel in der Horizontalen und Viertelpixel in der Vertikalen) des Referenzrahmens (600) von 6. Ein bikubischer Viertelpixel- und Halbpixelinterpolationsfilter wird zur Interpolation des Wertes P4 verwendet. In der ersten Stufe werden die vorläufigen Werte V1 bis V4 aus den genäherten ganzzahligen Pixelpositionen unter Verwendung eines bikubischen Viertelpixelfilters der nachfolgenden allgemeinen Formel berechnet. Vinter = (–4x1 + 53x2 + 18x3 – 3x4) (33)
  • Der Filter wird auf dieselbe Weise auf die ganzzahligen Pixelwerte des Referenzrahmens (600) angewandt, wie dies vorstehend im Zusammenhang mit der Berechnung von P7 beschrieben worden ist. Nach Addition des geeigneten Wertes von Rv werden die Ergebnisse um 3 Bit nach rechts verschoben. In der zweiten Stufe werden die vorläufigen Ergebnisse V1 bis V4 von einem Halbpixelfilter zur Berechnung des Pixelwertes bei P4 verwendet. Insbesondere wird ein Halbpixelfilter der nachfolgenden Form verwendet. P4 = (–1V1 + 9V2 + 9V3 – 1V4) (34)
  • Das Ergebnis der zweiten Stufe wird um 7 Bit nach rechts verschoben, um einen 9 Bit langen Wert zu erhalten. Es wird gegebenenfalls ein Abschneiden vorgenommen, und schließlich wird ein finaler 8 Bit langer interpolierter Wert ausgegeben.
  • 10 zeigt zudem eine Subpixelposition P6 (Viertelpixel in der Horizontalen, Halbpixel in der Vertikalen). Um den Wert von P6 zu interpolieren, wird die Technik zur Interpolation von P4 mit lediglich einer geringfügigen Abwandlung angewendet. Bei dieser abgewandelten Technik wird ein bikubischer Halbpixelfilter in der ersten Stufe verwendet, um die vorläufigen Werte zu bestimmen. Die vorläufigen Pixelstellen sind in 10 bei V5 bis V8 gezeigt. In der zweiten Stufe verwendet der bikubische Viertelpixelfilter die vorläufigen Werte zur Berechnung der Werte von P6. Insbesondere wird ein bikubischer Viertelpixelfilter der nachfolgenden Form verwendet. P6 = (–4V5 + 53V6 + 18V7 – 3V8) (35)
  • Das Ausmaß der Schiebung in der ersten Stufe und in der zweiten Stufe sind das gleiche wie bei der Technik zur Berechnung von P4 (das heißt, die Schiebung der ersten Stufe liegt bei 3, und die Schiebung der zweiten Stufe liegt bei 7).
  • 11 zeigt eine Subpixelposition P3 (Viertelpixel in der Horizontalen, Viertelpixel in der Vertikalen) des Referenzrahmens (600) von 6. Zwei bikubische Viertelpixelinterpolationsfilter werden zur Interpolation des Wertes von P3 verwendet. In der ersten Stufe werden die vorläufigen Werte V1 bis V4 aus den genäherten ganzzahligen Pixelpositionen unter Verwendung eines bikubischen Viertelpixelfilters der nachfolgenden allgemeinen Form berechnet. Vinter = (–4x1 + 53x2 + 18x3 – 3x4) (36)
  • Der Filter wird auf dieselbe Weise auf die ganzzahligen Pixelwerte des Referenzrahmens (600) angewandt, wie dies vorstehend bei der Berechnung von P4 beschrieben worden ist. Nach der Addition des geeigneten Wertes von Rv werden die Ergebnisse um 5 Bit nach rechts verschoben. In der zweiten Stufe werden die vorläufigen Ergebnisse V1 bis V4 von einem weiteren bikubischen Viertelpixelfilter verwendet, um den Pixelwert bei P3 zu berechnen. Insbesondere wird ein Viertelpixelfilter der nachfolgenden Form verwendet. P3 = (–4V1 + 53V2 + 18V3 – 3V4) (37)
  • Das Ergebnis der zweiten Stufe wird um 7 Bit nach rechts verschoben, um einen 9 Bit langen Wert zu erhalten. Es wird gegebenenfalls ein Abschneiden durchgeführt, woraufhin der finale 8 Bit lange interpolierte Wert ausgegeben wird.
  • Obwohl in 9 bis 11 nicht gezeigt, können auch die Werte der Subpixelpositionen mit Dreiviertelsubpixelschiebungen in einer oder in beiden Dimensionen berechnet werden. Um eine derartige Subpixelposition zu berechnen, können die vorstehend dargelegten Verfahren abgewandelt werden, indem geeignete kubische Dreiviertelpixelfilter anstelle der bikubischen Viertelpixelfilter verwendet werden.
  • Bei anderen Ausführungsbeispielen werden bilineare Filter oder eine Kombination aus bilinearen und bikubischen Filtern zur Interpolationen der Werte an Subpixelabtastpositionen verwendet. Die Verwendung bilinearer Filter verringert im Allgemeinen das Ausmaß der Schiebung, die (nach der ersten Stufe und insgesamt) vorgenommen wird, da die Koeffizienten eine kleinere Entwicklung als bei bikubischen Filtern einbringen. Bei einer Implementierung unter Verwendung bilinearer Filter und 16 Bit langer vorläufiger Werte wird beispielsweise keine Bitschiebung in der ersten Stufe ausgeführt, wodurch die Verwendung der 16 Bit langen Wortgrenze maximiert wird, und die Rechtsschiebung von 4 Bit nach der letzten Stufe ausgeführt wird. Ähnlich kann das Abschneiden bis in die letzte Stufe verschoben werden.
  • Eines der den beschriebenen Verfahren zugrundeliegenden Prinzipien betrifft die Verwendung der höchstmöglichen Genauigkeit in jeder Filterstufe, während man innerhalb einer gewünschten „Wortgrößengrenze" W verbleibt. Weist der Ausgabewert einen Wertebereich von D Bit auf, und werden L Bit in der letzten Stufe ausgesondert, so kann die Ausgabe der letzten Filterstufe bis zu D + L + 1 Bit annehmen, wobei das eine zu sätzliche Bit zur Signalisierung von Bereichsunterschreitungen und Bereichsüberschreitungen verwendet wird. Andersherum gesagt, wenn die letzte Stufe der Filterung zu einer Entwicklung von k Bit führt, so sollte die Eingabe für die letzte Stufe innerhalb von D + L – k liegen. Um die maximale Genauigkeit bei einer W Bit langen Darstellung zu erhalten, ist die nachfolgende Beziehung gegeben. D + L + 1 = W (38)
  • Darüber hinaus ist die Eingabe für die letzte Stufe D + L – k = W – k – 1 Bit lang.
  • Die vorgenannte Logik kann rekursiv auf die vorletzte Stufe der Filterung und so weiter angewendet werden. In der Tat können die Schranken zusammengeschoben werden, indem gebrochenzahlige Bits zur Darstellung von nicht-2k-Bereichen und Entwicklungsfaktoren verwendet werden.
  • 12 bis 15 sind Diagramme, die verschiedene Techniken darstellen, die vorstehend in Kombination beschrieben wurden, die jedoch auch einzeln auf eine mehrstufige Interpolation anwendbar sind. 12 bis 15 zeigen nicht die verschiedenen Arten, auf die die jeweilige mehrstufige Interpolation (1200, 1300, 1400, 1500) in Verbindung mit den anderen mehrstufigen Interpolationstechniken verwendet werden kann.
  • Obwohl jede der 12 bis 15 zwei Stufen darstellt, kann auch die Technik der mehrstufigen Interpolation (1200, 1300, 1400, 1500) gemäß Darstellung in 12 bis 15 mehr Stufen umfassen. Allgemeiner gesagt, es können Techniken der mehrstufigen Interpolation (1200, 1300, 1400, 1500) mit einem beliebigen Typ trennbarer Filter in mehreren Dimensionen wie auch als beliebige Filter implementiert sein, die in einer Kaskaden-, Gitter- oder Netzstruktur implementiert sind.
  • 12 bis 15 zeigen verallgemeinerte Eingabewerte, Ausgabewerte und Filter, die bei der mehrstufigen Interpolation Verwendung finden. Die jeweils spezifische Wahl der Bittiefe für die Eingabewerte der ersten Stufe, die Ausgabewerte der letzten Stufe und die vorläufigen Werte kann willkürlich in Entsprechung zu den technischen Spezifikationen einer Zielarchitektur oder Zielanwendung erweitert werden. So können beispielsweise die Eingabewerte 8 Bit lange Pixelwerte an Vollpixelpositionen im Referenzrahmen, die Ausgabewerte 8 Bit lange Pixelwerte an Subpixelpositionen im Referenzrahmen und die Filter reguläre und genäherte bikubische Filter (wie vorstehend anhand Fi guren 6 bis 8 beschrieben) sein. Alternativ weisen die Eingabewerte und/oder die Ausgabewerte Wertebereiche mit einer anderen Bittiefe auf, oder es können andere Filter eingesetzt werden.
  • Eine Komponente, so beispielsweise der Kodierer oder Dekodierer, die vorstehend anhand 4 beziehungsweise 5 beschrieben worden ist, kann die mehrstufige Interpolation (1200, 1300, 1400, 1500) ausführen. Alternativ kann ein anderer Kodierer oder Dekodierer oder eine andere Art von Komponente die mehrstufige Interpolation (1200, 1300, 1400, 1500) ausführen.
  • 12 zeigt ein Diagramm einer mehrstufigen Interpolation (1200) mit einem vergrößerten Wertebereich (in Bit) für vorläufige interpolierte Werte. In der ersten Stufe (1210) wendet die Komponente einen ersten Filter F1 auf einen oder mehrere Eingabewerte (1211) in einem Bereich von x Bit an (1212), wodurch ein vorläufiger Wert oder mehrere vorläufige Werte (1220) in einem Bereich von y Bit erzeugt werden, wobei y größer als x ist. Die y Bit langen vorläufigen Werte sind beispielsweise Pixelwerte mit einem Wertebereich von mehr als 8 Bit, und die x Bit langen Eingabewerte weisen einen Wertebereich von 8 Bit auf.
  • Bei jeder der nicht vorhandenen oder mehreren vorläufigen Stufen (1222) wendet, was nicht im Detail gezeigt ist, die Komponente einen Filter auf die vorläufigen Werte (1220) in einem Bereich von y Bit an. Die Ausgabe der vorläufigen Stufen ist ein vorläufiger Wert (1229) in einem Bereich von z Bit, wobei z größer als x ist (In 12 bis 15 sind für den Fall, dass die letzte Stufe die zweite Stufe ist, die von der ersten Stufe ausgegebenen vorläufigen Werte die vorläufigen Eingabewerte für die letzte Stufe).
  • In der letzten Stufe (1230) wendet die Komponente einen letzten Filter FL auf die vorläufigen Werte (1229) in einem Bereich von z Bit an (1232). Die finale Ausgabe ist ein Ausgabewert (1234) in einem Bereich von x Bit. Für jede der Techniken der mehrstufigen Interpolation (1200, 1300, 1400, 1500) wiederholt die Komponente gegebenenfalls die mehrstufige Interpolation (1200, 1300, 1400, 1500) für zusätzliche Ausgabewerte. Bei der wiederholten Interpolation kann die Komponente bestimmte vorläufige Werte, die bei den vorhergehenden Interpolationen berechnet worden sind, erneut verwenden.
  • 13 zeigt ein Diagramm einer mehrstufigen Interpolation (1300) mit ausgelassenem Abschneiden. Das Verschieben des Abschneidens beschleunigt die Berechnung bei spielsweise dadurch, dass die Komponente nicht mehr jeden vorläufigen Wert hinsichtlich einer oberen und unteren Schranke des Bereiches prüft. Das Verschieben des Abschneidens wahrt auch die Genauigkeit bei den vorläufigen Werten.
  • In der ersten Stufe (1310) wendet die Komponente einen ersten Filter F1 auf einen oder mehrere Eingabewerte (1311) in einem Bereich von x Bit an (1312). Nach Anwenden des ersten Filters F1 wird kein Abschneiden vorgenommen. So können der eine vorläufige Wert oder die mehreren vorläufigen Werte (1320), die von dem ersten Filter F1 ausgegeben werden, einen Wertebereich von mehr als x Bit aufweisen. Die Eingabewerte sind beispielsweise 8 Bit lange Werte, und die Ausgabe des ersten Filters F1 weist aufgrund des Entwicklungsfaktors, der durch die Koeffizienten des ersten Filters F1 eingeführt worden ist, einen Wertebereich von 9 oder mehr Bit auf.
  • Bei jeder der nicht vorhandenen oder mehreren vorläufigen Stufen (1322) wendet, was nicht im Detail gezeigt ist, die Komponente einen Filter auf den einen oder die mehreren nicht abgeschnittenen vorläufigen Werte (1320) an. Das Abschneiden kann auch in den nicht vorhandenen oder mehreren vorläufigen Stufen (1322) ausgelassen werden. Die von den nicht vorhandenen oder mehreren vorläufigen Stufen (1322) ausgegebenen vorläufigen Werte (1329) werden in die letzte Stufe (1330) eingegeben, in der die Komponente einen letzten Filter FL auf die Werte (1329) anwendet (1332). Die finale Ausgabe aus dem letzten Filter FL wird abgeschnitten (1334), und ein Wert (1336) in einem Bereich von x Bit wird ausgegeben.
  • 14 zeigt ein Diagramm einer mehrstufigen Interpolation (1400) mit verschobener Bitschiebung. In der ersten Stufe (1410) wendet die Komponente einen ersten Filter F1 auf einen oder mehrere Eingabewerte (1411) in einem Bereich von x Bit an (1412). Im Zusammenwirken mit der Anwendung des ersten Filters F1 oder auch nach dessen Anwendung wird eine verkürzte Bitschiebung (1414) ausgeführt. Die verkürzte Schiebung (1414) ist kleiner als diejenige, die benötigt wird, um einen Ausgabewert (angesichts des Entwicklungsfaktors der Koeffizienten des ersten Filters F1) in einem Bereich von x Bit sicherzustellen, und ist kleiner als diejenige, die üblicherweise mit dem ersten Filter F1 assoziiert wird. Entsprechend erzeugt die verkürzte Bitschiebung (1414) einen oder mehrere vorläufige Werte mit einem Wertebereich (von y Bit), der größer als x Bit ist. So weisen die Eingabewerte beispielsweise einen Wertebereich von 8 Bit auf, und die vorläufigen Werte einen Wertebereich von mehr als 8 Bit.
  • In jeder der nicht vorhandenen oder mehreren vorläufigen Stufen (1422) wendet, was im Detail nicht gezeigt ist, die Komponente einen Filter auf einen oder mehrere vorläufige Werte (1420) an. Ein oder mehrere vorläufige Werte (1429) mit einem Wertebereich von z Bit (größer als x Bit) werden aus den nicht vorhandenen oder mehreren vorläufigen Stufen (1422) ausgegeben, und in einer letzten Stufe (1430) wenden die Komponenten den letzten Filter FL auf die Werte (1429) an (1432). Die finale Ausgabe aus dem letzten Filter FL wird in einem Ausmaß verschoben (1434), das größer als das üblicherweise mit dem letzten Filter FL assoziierte Ausmaß ist, wodurch der Wertebereich des Ausgabewertes (1434) auf eine spezifizierte Bittiefe kontrahiert wird. So ist beispielsweise der Wertebereich (in Bit) des Ausgabewertes (1434) gleich x oder x + 1. Bei einer Implementierung wird die Schiebung der ersten Stufe und der vorläufigen Stufe soweit als möglich bis zur finalen Stufe verschoben. Das Ausmaß, in dem die Schiebung verschoben wird, kann von der verfügbaren Bittiefe für die vorläufigen Berechnungen und den Entwicklungsfaktoren der jeweiligen Filter abhängen.
  • 15 zeigt eine Technik der mehrstufigen Interpolation (1500) und der Verwendung einer stufenweise wechselnden Rundungssteuerung. Die mehreren Stufen in der Interpolationstechnik (1500) wechseln dahingehend, wie sie die Rundungssteuerung zur Anpassung der Rundung einsetzen. Dies trägt dazu bei, bei bestimmten Videosequenzen eine Häufung von Rundungsfehlern von einem Rahmen zum nächsten zu verhindern. Enthält beispielsweise eine Videosequenz niedriger Qualität eine allmähliche Bewegung in einer Dimension (panning) oder zwei Dimensionen (zooming), so kann die Häufung von Rundungsfehlern zu einem allmählichen von Rahmen zu Rahmen stärker werdenden Verblassen der Farben führen, was wahrnehmbare Artefakte bewirkt. Ein stufenweise erfolgender Wechsel der Rundungssteuerung trägt dazu bei, dass dieses Farbverblassen (color fading) verhindert wird.
  • Ein numerisches Beispiel soll helfen, die Rundung zu erläutern, bei der die stufenweise wechselnde Rundungssteuerung vor einer Rechtsbitschiebung zum Einsatz kommt. Die Rechtsbitschiebung führt im Wesentlichen zur Division und Trunkierung des nach rechts geschobenen Wertes. Das Addieren eines Rundungswertes vor der Bitschiebung bewirkt eine Rundung des geschobenen Wertes nach oben oder nach unten (zur jeweils nächsten ganzen Zahl), anstatt dass immer eine Rundung nach unten (Trunkierung) erfolgen würde. Der Einsatz der Rundungssteuerung ändert bei einem Marginalwert die Richtung der Rundung (nach oben oder nach unten). Es sei beispielsweise für jede der mehreren Stufen angenommen, dass die Ausgabe der Filterung durch Addieren von ½ des „Divi sors" einer Rechtsschiebung vor der Rechtsschiebung angepasst wird (beispielsweise das Addieren von 24 = 16 vor einer 5-Bit-Rechtsschiebung oder das Addieren von 26 = 64 vor einer 7-Bit-Rechtsschiebung). Die Wirkung der Addition besteht in der (auf die nächste höhere ganze Zahl erfolgenden) Aufrundung von Werten, die eine gebrochenzahlige Komponente von 0,5 oder höher (nach Division entsprechend der Bitschiebung) aufweisen. Derartige Werte würden andernfalls durch die Rechtsschiebung (auf die nächste niedrigere ganze Zahl) trunkiert werden. Unabhängig von der Addition werden Werte, die eine gebrochenzahlige Komponente von weniger als 0,5 (nach Division entsprechend der Bitschiebung) aufweisen, immer noch durch die Rechtsschiebung (auf die nächste niedrigere ganze Zahl) trunkiert. Die Rundungssteuerung wechselt dann die Richtung der Rundung für bestimmte Marginalwerte. So wird beispielsweise in jeder der mehreren Stufen die Ausgabe der Filterung durch Subtrahieren von 0 oder 1 (des wechselnden Rundungssteuerwertes) vor der Rechtsschiebung (das heißt 2shiftV-1 oder 2shiftV-1 – 1) angepasst. Der Effekt der Rundungssteueranpassung besteht darin, die Richtung der Rundung für Werte zu ändern, die eine gebrochenzahlige Komponente von 0,5 (nach Division entsprechend der Bitschiebung) aufweisen. Wird 1 subtrahiert, so werden die Marginalwerte abgerundet. Andernfalls werden die Marginalwerte aufgerundet.
  • Jede der mehreren Stufen setzt einen Rundungssteuerwert ein, der vor der mehrstufigen Interpolation zwischen 0 und 1 wechselt, sodass die verschiedenen Stufen einen Wechsel dahingehend vornehmen, wie die Rundungssteuerwerte eingesetzt werden. Alternativ verwendet die mehrstufige Interpolationstechnik (1500) einen Rundungssteuerwert, der selbst stufenweise wechselt.
  • In der ersten Stufe (1510) von 15 wendet die Komponente einen ersten Filter F1 auf einen oder mehrere Eingabewerte (1511) in einem Bereich von x Bit an (1512). Im Zusammenwirken mit der Anwendung des ersten Filters F1 oder nach dessen Anwendung wird eine Rundung an der Ausgabe des ersten Filters F1 vorgenommen (1514). Die Rundung (1514) wird mittels der stufenweise wechselnden Rundungssteuerung angepasst. So bewirkt in der ersten Stufe (1510) die stufenweise wechselnde Rundungssteuerung beispielsweise eine Rundung des Ausgabewertes nach oben zur nächsten ganzen Zahl, wenn der Ausgabewert ein Marginalwert ist (wobei der Ausgabewert andernfalls nach unten gerundet werden wird). Ein oder mehrere gerundete vorläufige Werte (1520) werden von der ersten Stufe in die zweite Stufe (1530) eingegeben.
  • In der zweiten Stufe (1530) wendet die Komponente einen zweiten Filter F2 auf einen oder mehrere vorläufige Werte (1520) an (1532). Die Rundung (1534) wird an der Ausgabe des zweiten Filters F2 vorgenommen. Im Zusammenwirken mit der Anwendung des zweiten Filters F2 oder nach dessen Anwendung wird eine Rundung (1534) mit stufenweise wechselnder Rundungssteuerung vorgenommen, wobei die Rundungssteuerung die Rundung in entgegengesetzte Richtung, wie dies bei den Marginalwerten der erste Stufe der Fall war, vornimmt. So bewirkt beispielsweise in der zweiten Stufe (1530) die stufenweise wechselnde Rundungssteuerung eine Rundung des Ausgabewertes nach unten zur nächsten ganzen Zahl, wenn der Ausgabewert der Marginalwert ist. Ein oder mehrere vorläufige Werte (1536) werden von der zweiten Stufe ausgegeben und können in nicht vorhandenen oder mehreren zusätzlichen Stufen (1540) verwendet werden. Die nicht vorhandenen oder mehreren zusätzlichen Stufen (1540) können darüber hinaus eine stufenweise wechselnde Rundungssteuerung enthalten.
  • Die wechselnde Rundungssteuerung ist nicht auf eine Anwendung in aufeinanderfolgenden Stufen beschränkt, sondern kann auch bei verschiedenen anderen Kombinationen der Stufen Verwendung finden. Die erste Richtung kann darüber hinaus von einer Anzahl von Parametern abhängig sein. So kann die erste Richtung beispielsweise bei einem Videokodierer oder einem entsprechenden Dekodierer von der Rundungssteuerung, die bei den vorherigen Rahmen verwendet worden ist, oder vom Typ des Rahmens, der interpoliert wird (beispielsweise ein I-Rahmen, ein P-Rahmen oder ein B-Rahmen) abhängen. Bei anderen Ausführungsbeispielen kann die erste Richtung konstant gewählt werden, sie kann implizit aus Kausalinformation (beispielsweise aus vorher kodierter/dekodierter Information) hergeleitet werden, sie kann unter Verwendung eines Pseudozufallsgenerators hergeleitet werden, oder sie kann als Teil des Bitstroms signalisiert werden. Die stufenweise wechselnde Rundungssteuerung kann bei einer mehrstufigen Interpolation unter Verwendung eines beliebigen Filters aus einer Vielzahl von Interpolationsfiltern, darunter bilineare Filter, bikubische Filter oder genäherte bikubische Filter, Verwendung finden.
  • D. Chrominanzbewegungsvektoren
  • Da Chrominanzbewegungsvektoren (Chroma-Bewegungsvektoren) implizit aus den kolokalisierten Luminanzbewegungsvektoren abgeleitet werden, ist ihre Genauigkeit beschränkt und bietet Raum für Vereinfachung. Die Vereinfachung kann die Berechnungskomplexität der Subpixelinterpolation für Chrominanzwerte bei dem Kodierer und dem Dekodierer verringern, ohne dass die Wahrnehmungsqualität des kodierten Videos merklich sinkt. Darüber hinaus können der Kodierer und der Dekodierer zwischen verschiedenen Betriebsarten (Modi) für die Chrominanzbewegungsvektorrundung und die zugehörige Interpolation hin- und herschalten. Eine Betriebsart beispielsweise legt Wert auf die Qualität des kodierten Videos auf Kosten einer größeren Berechnungskomplexität. Eine weitere Betriebsart betont die Einfachheit der Berechnung auf Kosten der Qualität.
  • Bei einer Implementierung verwenden ein Videokodierer und der entsprechende Dekodierer ein 1-Bit-Sequenzlevel-Feld „FASTUVMC" zur Steuerung der Subpixelinterpolation für Chrominanzwerte und der Rundung der Chrominanzbewegungsvektoren. Aus diesem Grunde operieren der Videokodierer und der entsprechende Dekodierer in einem von zwei verschiedenen Chrominanzrundungsbetriebsarten, nämlich einem Schnellmodus und einem Grundmodus, getrennt.
  • 16 zeigt eine Technik (1600) zum Auswählen zwischen mehreren Chrominanzrundungs- und Interpolationsbetriebsarten beziehungsweise Modi. Ein Videokodierer oder ein entsprechender Dekodierer, so beispielsweise gemäß der Beschreibung von 4 beziehungsweise 5, kann diese Techniken ausführen.
  • Der Videokodierer oder Dekodierer bestimmt (1610), ob der 1 Bit lange Menker FASTUVMC die Verwendung des Schnellmodus für den Chrominanzbewegungsausgleich (flag = 1) oder des Grundmodus für den Chrominanzbewegungsausgleich (flag = 0) anzeigt. Der Merker ist beispielsweise ein Sequenzlevelfeld entsprechend einer Einstellung des Anwenders, die der Kodierer in den Bitstrom des kodierten Videos hineinschreibt, und der Dekodierer aus dem Bitstrom ausliest. Alternativ bedienen sich der Kodierer und der Dekodierer mehrerer Bits zur Signalisierung einer Chrominanzrundung und/oder einer Interpolationsbetriebsart unter Verwendung von Kodes fester Länge oder veränderlicher Länge, beispielsweise um zwischen mehr als zwei verfügbaren Betriebsarten auszuwählen. Anstelle eines Sequenzlevelfeldes entsprechend einer Einstellung seitens eines Anwenders kann die Schaltinformation auch anderswo in dem Bitstrom signalisiert und/oder entsprechend anderen Kriterien eingestellt werden.
  • Der Videokodierer oder der entsprechende Dekodierer nehmen anschließend einen Chrominanzbewegungsausgleich im Grundmodus (1620) oder im Schnellmodus (1630) vor. Die Details betreffend den Grundmodus (1620) und den Schnellmodus (1630) bei der Bewegungsvektorrundung und der zugehörigen Interpolation sind nachstehend für eine Implementierung angegeben. Alternativ weisen diese Modi andere Implementierungen auf. So kann beispielsweise die Nachschlagtabelle, die bei der Implementierung mit Schnellmodus (1630) gemäß nachstehender Beschreibung verwendet wird, zu einer anderen Abbildung geändert werden, was zu einem gewünschten Leistungsniveau für eine spezifische Architektur führt, oder sie kann geändert werden, um Bewegungsvektoren anderer Genauigkeit zu entsprechen. Zusätzlich zum Grundmodus (1620) und zum Schnellmodus (1630) oder anstelle hiervon können sich der Kodierer oder der Dekodierer anderer Modi für die Chrominanzbewegungsvektorrundung der Chrominanzbewegungsvektoren bedienen.
  • Bei einer Implementierung werden im Schnellmodus (beispielsweise wenn der Chrominanzrundungsmerker gleich 1 ist) die Chrominanzbewegungsvektoren in Viertelpixelversetzungen (das heißt in Einviertelpixel- und Dreiviertelpixelversetzungen) auf die nächsten Vollpixelpositionen abgerundet, die Chrominanzbewegungsvektoren, die an Halbpixelversetzungen befindlich sind, werden ungerundet gelassen, und die bilineare Filterung wird für die gesamte Chrominanzinterpolation vorgenommen. In diesem Modus steigt die Geschwindigkeit beim Kodierer und beim Dekodierer. Die Motivation für diese Optimierung ist der merkliche Unterschied zwischen der Komplexität der Interpolationspixelversetzungen, die bei (a) Vollpixelpositionen, (b) Halbpixelpositionen, (c) Viertelpixelpositionen für wenigstens eine Koordinate (x und y) und (d) Viertelpixelpositionen für beide Koordinaten auftreten. Das Verhältnis a : b : c : d ist grob 1 : 4 : 4,7 : 6,6. Durch Anwenden des Schnellmodus kann (a) und (b) der Vorzug gegeben werden, was die Dekodierzeit senkt. Da dies nur mit Blick auf die Chrominanzinterpolation erfolgt, sind die Qualitätsverluste bei Kodierung und Qualität (insbesondere die sichtbare Qualität) vernachlässigbar.
  • Im Schnellmodus wird ein finales Rundungslevel bei den Chrominanzbewegungsvektoren folgendermaßen vorgenommen: // RndTbl[–3] = –1, RndTbl[–2] = 0, RndTbl[–1] = +1, RndTbl[0] = 0 // RndTbl[1] = –1, RndTbl[2] = 0, RndTbl[3] = 1 cmv_x = cmv_x + RndTbl[cmv_x % 4]; cmv_y = cmv_y + RndTbl[cmv_y % 4]; (39)
  • Hierbei bezeichnen cmv_x und cmv_y die x- und y-Koordinaten der Chrominanzbewegungsvektoren in Einheiten von Viertelpixeln, wobei % die Modulooperation (Restoperation) bezeichnet, für die (x % a) = –(–x % a) gilt (Der Modulowert einer negativen Zahl ist gleich dem negativen Modulowert der entsprechenden positiven Zahl). Ist also cmv_x (oder cmv_y) durch 4 teilbar, so weist der Chrominanzbewegungsvektor eine ganzzahlige Versetzung auf. Ist cmv_x % 4 = +/–2, so weist der Chrominanzvektor eine Halbpixelversetzung auf. Ist cmv_x % 4 = +/–1 oder +/–3, so weist der Chrominanzvektor eine Viertelpixelversetzung auf. Wie aus der vorgenannten Abbildungsoperation ersichtlich ist, sind die Viertelpixelpositionen durch Rundung des Chrominanzbewegungsvektors auf die nächste Vollposition beziehungsweise ganzzahlige Position (Halbpixelpositionen bleiben unverändert) nicht zugelassen. Dieser Modus führt also eine Abbildung der Chrominanzkoordinate auf Vollpixel- und Halbpixelpositionen durch. Eine bilineare Filterung kann zum Zwecke einer weiteren Beschleunigung für sämtliche Chrominanzinterpolationen in diesem Modus vorgenommen werden. Obwohl diese Schnellmodusimplementierung in Kombination mit der Auswahl zwischen mehreren Rundungsmodi beschrieben worden ist, kann die Schnellmodusimplementierung alternativ auch unabhängig verwendet werden (das heißt als einzig möglicher Modus).
  • 17 ist eine Tabelle (1700), die den Schnellmodus der Chrominanzrundung zeigt. Die erste Reihe (1710) zeigt die Luminanzbewegungsvektorwerte mit Viertelpixelgenauigkeit. Obwohl die Luminanzbewegungsvektorwerte bezüglich ihrer gebrochenzahligen Versetzungen von den Vollpixelwerten gezeigt sind, können sie als ganzzahlige Werte dargestellt werden, wobei jede ganze Zahl ein Viertelpixelinkrement (das heißt 0, 1, 2, 3, 4 anstelle von 0, ¼, ½, ¾, 1) darstellt. Die zweite Reihe (1720) zeigt, wie die entsprechenden Chrominanzbewegungsvektorwerte im Schnellmodus derart gerundet werden, dass sie Vollpixel- oder Halbpixelgenauigkeit aufweisen.
  • In dem zweiten Modus, das heißt dem Grundmodus dieser Implementierung (wenn beispielsweise der Chrominanzrundungsmerker gleich 0 ist), bleiben die Chrominanzbewegungsvektoren, die an Viertelpixelversetzungen befindlich sind, ohne Rundungsfehler an ihren Viertelpixelversetzungen. Die Chrominanzbewegungsvektoren an anderen Subpixelversetzungen werden auf die nächste Vollpixel- oder Halbpixelposition gerundet. In diesem Modus ist die Geschwindigkeit des Dekodierens geringer als in den anderen Modi, wobei jedoch die Genauigkeit, mit der die Chrominanzpixelwerte berechnet werden, höher ist. Der Grundmodus nimmt daher eine Abbildung der Chrominanzkoordinaten auf ganzzahlige Halbpixel- und Viertelpixelpositionen vor. Eine bikubische oder bilineare Fil terung gemäß vorstehender Beschreibung kann zur Chrominanzinterpolation verwendet werden.
  • 18 ist eine Tabelle, die den Grundmodus der Chrominanzrundung darstellt. Die erste Reihe (1810) zeigt die Luminanzbewegungsvektorwerte mit Viertelpixelgenauigkeit. Die dritte Reihe (1830) zeigt, wie die entsprechenden Chrominanzbewegungsvektorwerte im Grundmodus gemäß vorstehender Beschreibung derart abgerundet werden, dass sie Vollpixel-, Halbpixel- oder Viertelpixelgenauigkeit aufweisen. Bei anderen Implementierungen wird der Chrominanzraum auf andere Auflösungen im Chrominanzraum gerundet.
  • Eingedenk der vorbeschriebenen dargelegten Prinzipien der vorliegenden Erfindung unter Bezugnahme auf die Ausführungsbeispiele ist einsichtig, dass die verschiedenartigen Ausführungsbeispiele mit Blick auf Anordnung und Details modifiziert werden können, ohne dass von den zugrundeliegenden Prinzipien abgewichen würde. So sind die Prinzipien und Techniken gemäß vorstehender Beschreibung beispielsweise nicht auf die Verwendung in einem Videokodierer und/oder Videodekodierer beschränkt. Anstatt dessen können sie in einem beliebigen Berechnungskontext eingesetzt werden, wo ein Wert teilweise auf Basis eines oder mehrerer vorläufiger Werte berechnet wird, oder wo trennbare Filter in mehreren Dimensionen eingesetzt werden.
  • Es ist einsichtig, dass die Programme, Vorgänge und Verfahren gemäß vorstehender Beschreibung nicht auf eine bestimmte Art von Berechnungsumgebung bezogen oder beschränkt sind, es sei denn, es wird explizit anderes angegeben. Bestimmte Arten von Allzweck- oder Spezialzweckberechnungsumgebungen können zur Ausführung der Operationen entsprechend der vorstehend beschriebenen Techniken verwendet werden. Elemente der gezeigten Ausführungsbeispiele, die als Software dargestellt sind, können als Hardware implementiert sein, und umgekehrt.
  • Eingedenk der zahlreichen möglichen Ausführungsbeispiele, auf die die Prinzipien der vorliegenden Erfindung angewandt werden können, werden all diejenigen Ausführungsbeispiele als Erfindung beansprucht, die in den Schutzbereich der nachfolgenden Ansprüche fallen und deren Äquivalenten entsprechen.

Claims (18)

  1. Verfahren, das umfasst: Berechnen eines Wertes an einer Abtastposition in einem einzelnen Bezugs-Videobild (600) unter Verwendung mehrerer Stufen (1510, 1530, 1540) von Interpolation zum Bestimmen des Wertes, wobei die mehreren Stufen (1510, 1530, 1540) stufenweise alternierende Rundungssteuerung (stage-alternating rounding controll) einschließen.
  2. Verfahren nach Anspruch 1, wobei das Berechnen einschließt: auf einer ersten Stufe der mehreren Stufen Runden (1514) eines ersten Randwertes auf die nächstgelegene ganze Zahl in einer ersten Richtung gemäß der stufenweise alternierenden Rundungssteuerung; und auf einer zweiten Stufe der mehreren Stufen Runden (1534) eines zweiten Randwertes auf die nächstgelegene ganze Zahl in einer zweiten Richtung entgegengesetzt zu der ersten Richtung gemäß der stufenweise alternierenden Rundungssteuerung.
  3. Verfahren nach Anspruch 2, wobei ein Rundungs-Steuerparameter die erste und die zweite Richtung steuert.
  4. Verfahren nach Anspruch 3, wobei der Rundungs-Steuerparameter Bild für Bild sowie von Stufe zu Stufe innerhalb des Bezugs-Videobildes (600) alterniert.
  5. Verfahren nach einem der Ansprüche 1 bis 4, wobei der Wert für ein Pixel ist.
  6. Verfahren nach Anspruch 1, wobei das Bezugs-Videobild (600) ein erstes Bezugs-Videobild ist, die stufenweise alternierende Rundungssteuerung eine erste Rundungsrichtung für das erste Bezugs-Videobild anzeigt und das Verfahren des Weiteren Wiederholen des Berechnens für einen Wert an einer Abtastposition in einem zweiten Bezugs-Videobild sowie Umkehren der ersten Rundungsrichtung für das zweite Bezugs-Videobild auf Basis eines Rundungs-Steuerparameters umfasst.
  7. Verfahren nach Anspruch 6, wobei das erste Bezugs-Videobild ein Key-Frame ist und die erste Rundungsrichtung für den Key-Frame vorgegeben ist.
  8. Verfahren nach Anspruch 1, wobei die Abtastposition in einem Bezugs-Videohalbbild liegt und der Wert für ein Pixel ist.
  9. Verfahren nach einem der Ansprüche 1 bis 8, das des Weiteren an jeder von mehreren anderen Abtastpositionen Wiederholen des Berechnens für Werte an den anderen Abtastpositionen umfasst.
  10. Verfahren nach Anspruch 1, wobei die stufenweise alternierende Rundungssteuerung die Richtung der Rundung für Randwerte von Stufe zu Stufe auf den mehreren Stufen (1510, 1530, 1540) von Interpolation alterniert.
  11. Computerlesbares Medium (320, 340), das durch Computer ausführbare Befehle speichert, die ein Computersystem veranlassen, das Verfahren nach einem der Ansprüche 1 bis 10 beim Video-Codieren (400) durchzuführen.
  12. Computerlesbares Medium (320, 340), das durch Computer ausführbare Befehle speichert, die ein Computersystem veranlassen, das Verfahren nach einem der Ansprüche 1 bis 10 beim Video-Decodieren (500) durchzuführen.
  13. System (300), das so konfiguriert ist, dass es das Verfahren nach einem der Ansprüche 1 bis 10 durchführt.
  14. System (300), das umfasst: eine Einrichtung zum Berechnen eines Wertes in einem einzelnen Bezugs-Videobild (600) unter Verwendung mehrerer Stufen (1510, 1530, 1540) von Interpolation zum Bestimmen des Wertes, wobei die mehreren Stufen (1510, 1530, 1540) stufenweise alternierende Rundungssteuerung einschließen.
  15. System nach Anspruch 14, wobei die Einrichtung zum Berechnen mehrere andere Werte in mehreren Bezugs-Videobildern unter Verwendung der mehreren Stufen von Interpolation (1510, 1530, 1540) berechnet und das System des Weiteren umfasst: eine Einrichtung zum Durchführen von Bewegungskompensation bezüglich der Bezugs-Videobilder (600).
  16. System nach Anspruch 14, wobei auf einer ersten Stufe der mehreren Stufen (1510, 1530, 1540) die Einrichtung zum Berechnen einen ersten Randwert auf die nächste ganze Zahl in einer ersten Richtung rundet (1514) und auf einer zweiten Stufe der mehreren Stufen (1510, 1530, 1540) die Einrichtung zum Berechnen einen zweiten Randwert auf die nächste ganze Zahl in einer zweiten Richtung entgegengesetzt zu der ersten Richtung rundet (1534).
  17. System nach Anspruch 16, wobei ein Rundungs-Steuerparameter die erste und die zweite Richtung steuert und der Rundungs-Steuerparameter Bild für Bild zwischen 0 und 1 alterniert.
  18. System nach Anspruch 14 oder 17, wobei der Wert für ein Pixel ist.
DE60306011T 2002-04-10 2003-03-27 Rundungskontrolle für mehrstufige Interpolation Expired - Lifetime DE60306011T2 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US37186002P 2002-04-10 2002-04-10
US371860P 2002-04-10
US382294P 2003-03-04
US10/382,294 US7305034B2 (en) 2002-04-10 2003-03-04 Rounding control for multi-stage interpolation

Publications (2)

Publication Number Publication Date
DE60306011D1 DE60306011D1 (de) 2006-07-27
DE60306011T2 true DE60306011T2 (de) 2006-10-05

Family

ID=28794438

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60306011T Expired - Lifetime DE60306011T2 (de) 2002-04-10 2003-03-27 Rundungskontrolle für mehrstufige Interpolation

Country Status (9)

Country Link
US (1) US7305034B2 (de)
EP (1) EP1353513B1 (de)
JP (1) JP4077354B2 (de)
KR (1) KR100593344B1 (de)
CN (2) CN1238799C (de)
AT (1) ATE330430T1 (de)
DE (1) DE60306011T2 (de)
ES (1) ES2266665T3 (de)
HK (1) HK1059857A1 (de)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NO319629B1 (no) 2003-11-28 2005-09-05 Tandberg Telecom As Fremgangsmate for korrigering av interpolerte pikselverdier
EP1617672A1 (de) * 2004-07-13 2006-01-18 Matsushita Electric Industrial Co., Ltd. Bewegunsschätzer/kompensator mit einem 16-bit 1/8 pel interpolationsfilter
EP1872588B1 (de) * 2005-04-13 2021-01-27 InterDigital VC Holdings, Inc. Luma- und chromacodierung unter verwendung von verschiedenen prädiktoren
US20060285597A1 (en) * 2005-06-20 2006-12-21 Flextronics International Usa, Inc. Reusing interpolated values in advanced video encoders
BRPI0614662A2 (pt) * 2005-07-28 2011-04-12 Thomson Licensing compensação e estimativa de movimento usando um cache hierárquico
US8265151B1 (en) 2005-12-14 2012-09-11 Ambarella Taiwan Ltd. Mode decision using approximate 1/2 pel interpolation
US8208553B2 (en) * 2006-05-04 2012-06-26 Altera Corporation Methods and apparatus for quarter-pel refinement in a SIMD array processor
JP4682384B2 (ja) * 2006-07-11 2011-05-11 株式会社メガチップス 1/4画素輝度用動き予測機構、組合せ輝度用動き予測機構、及び組合せ輝度・色差用動き予測機構
CN100551073C (zh) * 2006-12-05 2009-10-14 华为技术有限公司 编解码方法及装置、分像素插值处理方法及装置
US9332264B2 (en) * 2007-12-30 2016-05-03 Intel Corporation Configurable performance motion estimation for video encoding
US8705622B2 (en) * 2008-04-10 2014-04-22 Qualcomm Incorporated Interpolation filter support for sub-pixel resolution in video coding
US8804831B2 (en) * 2008-04-10 2014-08-12 Qualcomm Incorporated Offsets at sub-pixel resolution
US9077971B2 (en) * 2008-04-10 2015-07-07 Qualcomm Incorporated Interpolation-like filtering of integer-pixel positions in video coding
US8462842B2 (en) * 2008-04-10 2013-06-11 Qualcomm, Incorporated Symmetry for interpolation filtering of sub-pixel positions in video coding
US9967590B2 (en) 2008-04-10 2018-05-08 Qualcomm Incorporated Rate-distortion defined interpolation for video coding based on fixed filter or adaptive filter
US8971412B2 (en) * 2008-04-10 2015-03-03 Qualcomm Incorporated Advanced interpolation techniques for motion compensation in video coding
US8121434B2 (en) 2008-06-13 2012-02-21 Microsoft Corporation Multi-pass image resampling
JP2010161747A (ja) * 2009-01-09 2010-07-22 Toshiba Corp サブピクセル生成装置及び方法並びに動き補償装置
EP2222086A1 (de) * 2009-02-18 2010-08-25 EcoDisc Technology AG Verfahren und Vorrichtung zur Vermeidung von Rundungsfehlern nach Durchführung einer inversen diskreten orthogonalen Transformation
WO2010126783A2 (en) * 2009-04-30 2010-11-04 Roman Gitlin Method and apparatus for streamlined implementation of interpolation in multiple dimensions
US20110200108A1 (en) * 2010-02-18 2011-08-18 Qualcomm Incorporated Chrominance high precision motion filtering for motion interpolation
JP5390458B2 (ja) * 2010-04-08 2014-01-15 株式会社Nttドコモ 動画像予測符号化装置、動画像予測符号化方法、動画像予測符号化プログラム、動画像予測復号装置、動画像予測復号方法、及び動画像予測復号プログラム
US8406506B2 (en) 2010-05-18 2013-03-26 Honda Motor Co., Ltd. Fast sub-pixel optical flow estimation
TWI419570B (zh) * 2011-01-03 2013-12-11 Novatek Microelectronics Corp 多媒體裝置及其移動補償方法
CN102611887B (zh) 2011-01-21 2015-08-05 华为技术有限公司 非整像素位置运动矢量的坐标值取整方法和装置
PL3367686T3 (pl) * 2011-06-24 2021-06-28 Ntt Docomo, Inc. Urządzenie i sposób predykcji z kompensacją ruchu
KR20130050149A (ko) 2011-11-07 2013-05-15 오수미 인터 모드에서의 예측 블록 생성 방법
KR101674777B1 (ko) * 2011-11-08 2016-11-09 구글 테크놀로지 홀딩스 엘엘씨 샘플 적응 오프셋 코딩 및/또는 시그널링을 위한 장치들 및 방법들
TWI597968B (zh) 2012-12-21 2017-09-01 杜比實驗室特許公司 在高位元深度視訊的可適性編碼中,高精度升取樣
US9762920B2 (en) * 2013-06-07 2017-09-12 Qualcomm Incorporated Dynamic range control of intermediate data in resampling process
CN103686028A (zh) * 2013-11-29 2014-03-26 浙江大学 一种用于大屏幕多投影系统的视频像素交替插值方法
US9749642B2 (en) 2014-01-08 2017-08-29 Microsoft Technology Licensing, Llc Selection of motion vector precision
US9774881B2 (en) 2014-01-08 2017-09-26 Microsoft Technology Licensing, Llc Representing motion vectors in an encoded bitstream
KR102440941B1 (ko) 2015-03-03 2022-09-05 삼성전자주식회사 이미지 처리 정보에 따라 크기와 방향을 갖는 초기 위상을 계산할 수 있는 이미지 처리 장치들
CN106710514B (zh) * 2015-07-24 2018-10-26 西安诺瓦电子科技有限公司 可编程逻辑器件、接收卡和led显示屏控制系统
CN109308078B (zh) * 2017-07-27 2021-08-27 龙岩智康太阳能科技有限公司 定日镜控制方法、装置及计算机可读存储介质和终端设备
US20230215031A1 (en) * 2021-12-31 2023-07-06 Microsoft Technology Licensing, Llc Interpolating Image and/or Audio in Plural Passes that Use Different Configurations

Family Cites Families (81)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60158786A (ja) 1984-01-30 1985-08-20 Kokusai Denshin Denwa Co Ltd <Kdd> 画像動き量検出方式
US4661849A (en) 1985-06-03 1987-04-28 Pictel Corporation Method and apparatus for providing motion estimation signals for communicating image sequences
US4661853A (en) 1985-11-01 1987-04-28 Rca Corporation Interfield image motion detector for video signals
DE3854171T2 (de) 1987-06-09 1995-12-21 Sony Corp Bewertung von Bewegungsvektoren in Fernsehbildern.
DE3854337T2 (de) 1987-06-09 1996-02-01 Sony Corp Bewegungskompensierte Interpolation von digitalen Fernsehbildern.
US5054103A (en) * 1987-09-24 1991-10-01 Matsushita Electric Works, Ltd. Picture encoding system
US5242779A (en) * 1989-06-21 1993-09-07 Hoechst Aktiengesellschaft Photosensitive mixture containing photocurable compound and polyurethane binder with grafted vinyl alcohol units, carboxylic acid vinyl ester units and vinyl acetal units
DE69033782T2 (de) 1989-10-14 2002-06-20 Sony Corp Verfahren und Anordnung zum Kodieren/Dekodieren eines Videosignales
JP2712645B2 (ja) 1989-10-14 1998-02-16 ソニー株式会社 動きベクトル伝送方法及びその装置並びに動きベクトル復号化方法及びその装置
US5103306A (en) 1990-03-28 1992-04-07 Transitions Research Corporation Digital image compression employing a resolution gradient
KR950011200B1 (ko) 1990-10-31 1995-09-29 니뽕 빅터 가부시끼가이샤 인터레이스 동화상 신호의 압축 장치
AU660020B2 (en) 1991-05-24 1995-06-08 British Broadcasting Corporation, The Video image processing
US5317397A (en) 1991-05-31 1994-05-31 Kabushiki Kaisha Toshiba Predictive coding using spatial-temporal filtering and plural motion vectors
US5467136A (en) 1991-05-31 1995-11-14 Kabushiki Kaisha Toshiba Video decoder for determining a motion vector from a scaled vector and a difference vector
US5428396A (en) 1991-08-03 1995-06-27 Sony Corporation Variable length coding/decoding method for motion vectors
JPH0541862A (ja) 1991-08-03 1993-02-19 Sony Corp 動きベクトルの可変長符号化方式
CA2079434A1 (en) 1991-09-30 1993-03-31 Derek Andrew Motion vector estimation, motion picture encoding and storage
JP2962012B2 (ja) 1991-11-08 1999-10-12 日本ビクター株式会社 動画像符号化装置及びその復号装置
GB2262854B (en) 1991-12-24 1995-05-24 Sony Broadcast & Communication Image processing apparatus
US6441842B1 (en) 1992-02-19 2002-08-27 8×8, Inc. Video compression/decompression processing and processors
US5594813A (en) * 1992-02-19 1997-01-14 Integrated Information Technology, Inc. Programmable architecture and methods for motion estimation
WO1993018618A1 (en) * 1992-03-03 1993-09-16 Kabushiki Kaisha Toshiba Time-varying image encoder
US6226327B1 (en) 1992-06-29 2001-05-01 Sony Corporation Video coding method and apparatus which select between frame-based and field-based predictive modes
PT2334083E (pt) 1993-03-24 2013-09-30 Sony Corp Método para codificar e descodificar vetores de movimento e respetivo dispositivo e método para codificar e descodificar sinais de imagem e respetivo dispositivo
US5442400A (en) 1993-04-29 1995-08-15 Rca Thomson Licensing Corporation Error concealment apparatus for MPEG-like video data
JPH06343172A (ja) 1993-06-01 1994-12-13 Matsushita Electric Ind Co Ltd 動きベクトル検出方法及び動きベクトル符号化方法
US5477272A (en) 1993-07-22 1995-12-19 Gte Laboratories Incorporated Variable-block size multi-resolution motion estimation scheme for pyramid coding
TW283289B (de) 1994-04-11 1996-08-11 Gen Instrument Corp
US5594504A (en) 1994-07-06 1997-01-14 Lucent Technologies Inc. Predictive video coding using a motion vector updating routine
US5684538A (en) 1994-08-18 1997-11-04 Hitachi, Ltd. System and method for performing video coding/decoding using motion compensation
EP0710033A3 (de) 1994-10-28 1999-06-09 Matsushita Electric Industrial Co., Ltd. MPEG Videodekoder mit breitbandigem Speicher
US5623311A (en) 1994-10-28 1997-04-22 Matsushita Electric Corporation Of America MPEG video decoder having a high bandwidth memory
JPH08256341A (ja) * 1995-03-17 1996-10-01 Sony Corp 画像信号符号化方法、画像信号符号化装置、画像信号記録媒体、及び画像信号復号化装置
DE19606584C2 (de) * 1995-04-19 1997-07-31 Porsche Ag Verfahren zur Zylinderabschaltung einer Brennkraftmaschine
GB2301971B (en) 1995-06-06 1999-10-06 Sony Uk Ltd Video compression
GB2301972B (en) 1995-06-06 1999-10-20 Sony Uk Ltd Video compression
US5970173A (en) 1995-10-05 1999-10-19 Microsoft Corporation Image compression and affine transformation for image motion compensation
US5929940A (en) 1995-10-25 1999-07-27 U.S. Philips Corporation Method and device for estimating motion between images, system for encoding segmented images
US5991463A (en) 1995-11-08 1999-11-23 Genesis Microchip Inc. Source data interpolation method and apparatus
JP2798035B2 (ja) 1996-01-17 1998-09-17 日本電気株式会社 適応動きベクトル補間による動き補償フレーム間予測方法
US5787203A (en) 1996-01-19 1998-07-28 Microsoft Corporation Method and system for filtering compressed video images
US5692063A (en) 1996-01-19 1997-11-25 Microsoft Corporation Method and system for unrestricted motion estimation for video
US5799113A (en) 1996-01-19 1998-08-25 Microsoft Corporation Method for expanding contracted video images
US6957350B1 (en) 1996-01-30 2005-10-18 Dolby Laboratories Licensing Corporation Encrypted and watermarked temporal and resolution layering in advanced television
US5982438A (en) 1996-03-22 1999-11-09 Microsoft Corporation Overlapped motion compensation for object coding
US5847776A (en) 1996-06-24 1998-12-08 Vdonet Corporation Ltd. Method for entropy constrained motion estimation and coding of motion vectors with increased search range
US6233017B1 (en) 1996-09-16 2001-05-15 Microsoft Corporation Multimedia compression system with adaptive block sizes
US6130963A (en) 1996-11-22 2000-10-10 C-Cube Semiconductor Ii, Inc. Memory efficient decoding of video frame chroma
US6377628B1 (en) 1996-12-18 2002-04-23 Thomson Licensing S.A. System for maintaining datastream continuity in the presence of disrupted source data
US6201927B1 (en) 1997-02-18 2001-03-13 Mary Lafuze Comer Trick play reproduction of MPEG encoded signals
US6005980A (en) 1997-03-07 1999-12-21 General Instrument Corporation Motion estimation and compensation of video object planes for interlaced digital video
US5844613A (en) 1997-03-17 1998-12-01 Microsoft Corporation Global motion estimator for motion video signal encoding
US6404813B1 (en) 1997-03-27 2002-06-11 At&T Corp. Bidirectionally predicted pictures or video object planes for efficient and flexible video coding
US5973755A (en) 1997-04-04 1999-10-26 Microsoft Corporation Video encoder and decoder using bilinear motion compensation and lapped orthogonal transforms
US6067322A (en) 1997-06-04 2000-05-23 Microsoft Corporation Half pixel motion estimation in motion video signal encoding
US6574371B2 (en) * 1997-06-09 2003-06-03 Hitachi, Ltd. Image decoding method
EP2288166B1 (de) * 1997-06-09 2015-08-05 Hitachi, Ltd. Bilddekodierung
JPH1169345A (ja) 1997-06-11 1999-03-09 Fujitsu Ltd フレーム間予測動画像符号化装置及び復号装置並びにフレーム間予測動画像符号化方法及び復号方法
JP2897763B2 (ja) 1997-07-28 1999-05-31 日本ビクター株式会社 動き補償符号化装置、復号化装置、符号化方法及び復号化方法
FR2766946B1 (fr) 1997-08-04 2000-08-11 Thomson Multimedia Sa Procede et dispositif de pretraitement pour estimation de mouvement
US6281942B1 (en) 1997-08-11 2001-08-28 Microsoft Corporation Spatial and temporal filtering mechanism for digital motion video signals
US6339656B1 (en) 1997-12-25 2002-01-15 Matsushita Electric Industrial Co., Ltd. Moving picture encoding decoding processing apparatus
US6122017A (en) 1998-01-22 2000-09-19 Hewlett-Packard Company Method for providing motion-compensated multi-field enhancement of still images from video
JP3888597B2 (ja) 1998-06-24 2007-03-07 日本ビクター株式会社 動き補償符号化装置、及び動き補償符号化復号化方法
JP4026238B2 (ja) 1998-07-23 2007-12-26 ソニー株式会社 画像復号装置及び画像復号方法
US6219070B1 (en) 1998-09-30 2001-04-17 Webtv Networks, Inc. System and method for adjusting pixel parameters by subpixel positioning
GB2343579A (en) 1998-11-07 2000-05-10 Ibm Hybrid-linear-bicubic interpolation method and apparatus
US6418166B1 (en) 1998-11-30 2002-07-09 Microsoft Corporation Motion estimation and block matching pattern
US6983018B1 (en) 1998-11-30 2006-01-03 Microsoft Corporation Efficient motion vector coding for video compression
US6496608B1 (en) 1999-01-15 2002-12-17 Picsurf, Inc. Image data interpolation system and method
US6320593B1 (en) 1999-04-20 2001-11-20 Agilent Technologies, Inc. Method of fast bi-cubic interpolation of image information
US6968008B1 (en) 1999-07-27 2005-11-22 Sharp Laboratories Of America, Inc. Methods for motion estimation with adaptive motion accuracy
US6647061B1 (en) 2000-06-09 2003-11-11 General Instrument Corporation Video size conversion and transcoding from MPEG-2 to MPEG-4
US7206453B2 (en) 2001-05-03 2007-04-17 Microsoft Corporation Dynamic filtering for lossy compression
US6950469B2 (en) 2001-09-17 2005-09-27 Nokia Corporation Method for sub-pixel value interpolation
US20030095603A1 (en) * 2001-11-16 2003-05-22 Koninklijke Philips Electronics N.V. Reduced-complexity video decoding using larger pixel-grid motion compensation
CN101448162B (zh) 2001-12-17 2013-01-02 微软公司 处理视频图像的方法
US7003035B2 (en) 2002-01-25 2006-02-21 Microsoft Corporation Video coding methods and apparatuses
US7277587B2 (en) 2002-04-26 2007-10-02 Sharp Laboratories Of America, Inc. System and method for lossless video coding
US20050013498A1 (en) 2003-07-18 2005-01-20 Microsoft Corporation Coding of motion vector information
KR100586882B1 (ko) 2004-04-13 2006-06-08 삼성전자주식회사 모션 스케일러빌리티를 지원하는 코딩 방법 및 장치

Also Published As

Publication number Publication date
ATE330430T1 (de) 2006-07-15
ES2266665T3 (es) 2007-03-01
CN1238799C (zh) 2006-01-25
HK1059857A1 (en) 2004-07-16
DE60306011D1 (de) 2006-07-27
US20030194011A1 (en) 2003-10-16
CN1453725A (zh) 2003-11-05
KR20030081119A (ko) 2003-10-17
EP1353513B1 (de) 2006-06-14
EP1353513A2 (de) 2003-10-15
CN100362510C (zh) 2008-01-16
JP2003339050A (ja) 2003-11-28
EP1353513A3 (de) 2003-10-29
CN1455349A (zh) 2003-11-12
US7305034B2 (en) 2007-12-04
JP4077354B2 (ja) 2008-04-16
KR100593344B1 (ko) 2006-06-26

Similar Documents

Publication Publication Date Title
DE60306011T2 (de) Rundungskontrolle für mehrstufige Interpolation
DE60307354T2 (de) Chrominanz-Bewegungsvektorrundung
DE60302602T2 (de) Sub-Pixel-Interpolation in Bewegungsschätzung und Bewegungskompensation
DE60310800T2 (de) Approximierter Kubikfilter
DE60309375T2 (de) Parametrisierung für verlauf-kompensation
DE60308255T2 (de) 2D-Transformationen zur Bild- und Videokodierung
DE602004002455T2 (de) Bewegungsvektorschätzung durch adaptive zeitliche Vorhersage
DE69723550T2 (de) Kodierung und dekodierung von grafischen symbolen
DE60215241T2 (de) Verfahren und Vorrichtung zur Reduzierung von Störungen in dekodierten Bildern mit Nachfilterung
DE69817460T2 (de) Bildsequenzdekodierungsverfahren
CN109302608B (zh) 图像处理方法、设备及系统
US6650708B1 (en) Video signal encoding apparatus
DE112012001635T5 (de) Verfahren zur Verwaltung einer Referenzbildliste und Vorrichtung zu dessen Ausführung
CN104967851B (zh) 用于运动补偿预测的方法和设备
JP2001326936A (ja) 画像符号化装置及び方法
EP0259562A1 (de) Verfahren zur bewegungskompensierten Bild-zu-Bild-Prädiktionscodierung
EP2140687A2 (de) Flussfeldbewegungskompensation zur videokompression
US10609417B2 (en) High efficiency adaptive loop filter processing for video coding
DE69937833T2 (de) Verfahren und vorrichtung zur skalierbaren formkodierung
US6188730B1 (en) Highly programmable chrominance filter for 4:2:2 to 4:2:0 conversion during MPEG2 video encoding
DE102020125206A1 (de) Verfahren und system zur mehrkanalvideocodierung mit frameratenänderung und kanalübergreifender referenzierung
US7366238B2 (en) Noise filter for video processing
EP1025704B1 (de) Verfahren zur bewegungskompensierenden prädiktion von bewegtbildfolgen
DE112015001531T5 (de) Datenkodierung und Dekodierung
DE69909880T2 (de) Dekodierung eines komprimierten digitalen Bildsignals

Legal Events

Date Code Title Description
8364 No opposition during term of opposition