DE60302602T2 - Sub-Pixel-Interpolation in Bewegungsschätzung und Bewegungskompensation - Google Patents

Sub-Pixel-Interpolation in Bewegungsschätzung und Bewegungskompensation Download PDF

Info

Publication number
DE60302602T2
DE60302602T2 DE60302602T DE60302602T DE60302602T2 DE 60302602 T2 DE60302602 T2 DE 60302602T2 DE 60302602 T DE60302602 T DE 60302602T DE 60302602 T DE60302602 T DE 60302602T DE 60302602 T2 DE60302602 T2 DE 60302602T2
Authority
DE
Germany
Prior art keywords
pixel
values
bit
shift
stage
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
DE60302602T
Other languages
English (en)
Other versions
DE60302602D1 (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
Publication of DE60302602D1 publication Critical patent/DE60302602D1/de
Application granted granted Critical
Publication of DE60302602T2 publication Critical patent/DE60302602T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • 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
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F17STORING OR DISTRIBUTING GASES OR LIQUIDS
    • F17CVESSELS FOR CONTAINING OR STORING COMPRESSED, LIQUEFIED OR SOLIDIFIED GASES; FIXED-CAPACITY GAS-HOLDERS; FILLING VESSELS WITH, OR DISCHARGING FROM VESSELS, COMPRESSED, LIQUEFIED, OR SOLIDIFIED GASES
    • F17C1/00Pressure vessels, e.g. gas cylinder, gas tank, replaceable cartridge
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F17STORING OR DISTRIBUTING GASES OR LIQUIDS
    • F17CVESSELS FOR CONTAINING OR STORING COMPRESSED, LIQUEFIED OR SOLIDIFIED GASES; FIXED-CAPACITY GAS-HOLDERS; FILLING VESSELS WITH, OR DISCHARGING FROM VESSELS, COMPRESSED, LIQUEFIED, OR SOLIDIFIED GASES
    • F17C2205/00Vessel construction, in particular mounting arrangements, attachments or identifications means
    • F17C2205/01Mounting arrangements
    • F17C2205/0153Details of mounting arrangements
    • F17C2205/0188Hanging up devices
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F17STORING OR DISTRIBUTING GASES OR LIQUIDS
    • F17CVESSELS FOR CONTAINING OR STORING COMPRESSED, LIQUEFIED OR SOLIDIFIED GASES; FIXED-CAPACITY GAS-HOLDERS; FILLING VESSELS WITH, OR DISCHARGING FROM VESSELS, COMPRESSED, LIQUEFIED, OR SOLIDIFIED GASES
    • F17C2270/00Applications
    • F17C2270/01Applications for fluid transport or storage
    • F17C2270/0134Applications for fluid transport or storage placed above the ground

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Mechanical Engineering (AREA)
  • General Engineering & Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Television Systems (AREA)

Description

  • Technisches Gebiet
  • Es werden Techniken und Werkzeuge für Subpixelschiebungen bei der Bewegungsabschätzung und beim Bewegungsausgleich von Videokodier-/Dekodieranwendungen beschrieben. So verschiebt beispielsweise ein Videokodierer/Dekodierer das Bitschieben bei Durchführung einer mehrstufigen Interpolation für Pixelwerte an Subpixelpositionen in einem Referenzrahmen.
  • 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 Schlüsselrahmen (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 Druckschrift WO 03/026296 beschreibt die Interpolation beim Videokodieren zur Berechnung von Werten für Subpixel an gebrochenzahligen horizontalen und vertikalen Stellen. Das Patent US 6,282,243 beschreibt eine Prädiktionsbildberechnungseinheit, die interpolierte Pixelwerte auf ganze Zahlen abrundet, und zwar entsprechend einem von einer Berechnungssteuerung spezifizierten Rundungsalgorithmus. In dem Beitrag „A Motion Compensation Technique for Down-Scaled Pictures in Layered Coding" von Masahiro Iwahashi et al., veröffentlicht bei IEICE Transactions and Communications E77-B (1994), August, Nr. 8, Tokyo, XP 00470652, wird eine Technik zum Bewegungsausgleich beschrieben, bei der ein Drift genanntes Verwischen bei sich bewegenden Bildern verringert wird, die mittels schichtenbasierter Kodiersysteme niederskaliert sind. Das Patent US 5,659,365 offenbart Chrominanzbewegungsvektoren, die unter Verwendung einer in einem Extrabit enthaltenen Rundungsinformation für Luminanzbewegungsvektoren mit ungeradzahligen Werten berechnet werden. Das Patent US 5,901,248 beschreibt einen programmierbaren Bewegungsabschätzer, der einen Dualportarbeitsspeicher für die Speicherung eines Bildblocks, des Prädiktionsfehlers und einen temporären Block zur Verwendung bei der Interpolation sowie einen pixelgruppenbasierten Dualportarbeitsspeicher mit wahlfreiem Zugriff zur Speicherung eines Suchfensters umfasst. Das Patent US 6,219,464 B1 beschreibt ein Verfahren zur Erzeugung eines Upsample-Zielpixels, das zwischen zwei Zeilen von Eingangsquelldaten angeordnet 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 Kodieren und Dekodieren von Videorahmen 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, zusammengefasst dargestellt, verschiedene Techniken und Werkzeuge zur Bewegungsabschätzung und zum Bewegungsausgleich. Bei Videokodier- und Dekodieranwendungen können beispielsweise mehrstufige Interpolationen verwendet werden, um den Wert einer bestimmten Subabtastposition (subsample position) zu berechnen. Die vorläufigen Werte, die in einer ersten oder vorläufigen Stufe berechnet werden, weisen einen größeren Wertebereich als der Wertebereich des finalen beziehungsweise endgültigen Wertes auf. Das Abschneiden während der ersten oder vorläufigen Stufen kann ausgelassen werden. Die während der ersten oder vorläufigen Stufen vorgenommene Bitschiebung kann auch bis in eine finale Stufe verschoben werden. Die verschiedenartigen Techniken und Werkzeuge, die unabhängig voneinander oder in Kombination zum Einsatz kommen können, können die Genauigkeit verbessern, mit der der finale Wert an der Subabtastposition berechnet werden kann. Diese vergrößerte Genauigkeit verbessert die Gesamtqualität der komprimierten Videosequenzen.
  • Gemäß einem Aspekt berechnet eine Komponente, so beispielsweise ein Videokodierer oder ein entsprechender Dekodierer, einen finalen Wert an einer bestimmten Subabtastposition wenigstens teilweise auf Basis eines oder mehrerer vorläufiger Werte an einem oder mehreren genäherten Subabtastpositionen. Der finale Wert weist einen finalen Wertebereich von x Bit auf, und der eine vorläufige Wert oder die mehreren vorläufigen Werte weisen einen vorläufigen Wertebereich von y Bit auf, wobei y größer als x ist.
  • Entsprechend einem weiteren Aspekt berechnen ein Videokodierer oder ein entsprechender Dekodierer einen finalen Pixelwert an einer gebrochenzahligen Pixelposition in einem Referenzvideorahmen aus der Mehrzahl von Videorahmen unter Verwendung einer mehrstufigen Interpolation. Die mehreren Stufen beinhalten wenigstens eine erste Stufe und eine letzte Stufe. Die Berechnung beinhaltet das Auslassen des Abschneidens eines oder mehrerer vorläufiger Pixelwerte in der ersten Stufe. Die Berechnung beinhaltet darüber hinaus das Abschneiden des finalen Pixelwertes an der gebrochenzahligen Pixelposition in dem Referenzvideorahmen in der letzten Stufe.
  • Gemäß einem weiteren Aspekt berechnet eine Komponente, so beispielsweise ein Videokodierer oder ein entsprechender Dekodierer, den Wert einer bestimmten gebrochenzahligen Abtastposition unter Verwendung einer mehrstufigen Interpolation. Die Berechnung beinhaltet das Verschieben der Pixelschiebung von einer ersten Stufe von den mehreren Stufen in eine zweite Stufe von den mehreren Stufen, um die Genauigkeit des Wertes zu erhöhen.
  • Die Techniken und Werkzeuge überwinden einige der Nachteile der aus dem Stand der Technik bekannten Techniken der Bewegungsabschätzung und des Bewegungsausgleiches. Die verschiedenartigen 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 zusammen mit der begleitenden Zeichnung zu betrachten ist.
  • 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 Pixelwertinterpolation 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 berech net 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 Arbeitsspeicher (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 Berechnungs umgebung (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 Verfahrensschritte, 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 Schlüsselrahmen. Aus Gründen einer einfacheren Darstellung zeigt 4 einen Weg für Schlüsselrahmen durch das Kodiersystem (400) und einen Weg für Vorwärtsprädiktionsrahmen. Viele der Komponenten des Kodiersystems (400) werden zur Kompression sowohl der Schlüsselrahmen 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 Schlüsselrahmen (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 Schlüsselrahmen 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 Schlüsselrahmen erzeugt. War der aktuelle Rahmen (405) ein Schlüsselrahmen, so wird der rekonstruierte Schlüsselrahmen 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 einigen 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 Schlüsselrahmen. Aus Gründen einer einfacheren Darstellung zeigt 5 einen Weg für Schlüsselrahmen durch das Dekodiersystem (500) und einen Weg für Vorwärtsprädiktionsrahmen. Viele der Komponenten des Dekodiersystems (500) werden zur Dekomprimierung sowohl von Schlüsselrahmen 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 bei spielsweise 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 Schlüsselrahmen 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ädikti onsstrukturierung (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 Interpola tion 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 Beschrei bung 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. l1, l2, l3 und l4 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(–1l1 + 9l2 + 9l3 – 1l4 + 8 – r) >> 4 (16) F2(–4l1 + 53l2 + 18l3 – 3l4 + 32 – r) >> 6 (17) F3(–3l1 + 18l2 + 53l3 – 4l4 + 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, verbessert 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 Rundungsre gel 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 ent spricht. 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 Pixelpositionen 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 Pixelpo sitionen 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 Pixelpo sitionen 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 zusä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 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 beispielsweise 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 „Divisors" 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 Werfe 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 Merker FA-STUVMC 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 Filterung 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.

Claims (32)

  1. Verfahren, das in einem Computersystem (300) implementiert ist, wobei das Verfahren umfasst: Berechnen (computing) eines finalen Pixelwerts (1234) an einer gebrochenzahligen Pixelposition unter Verwendung mehrerer Stufen von räumlicher Interpolation und basierend wenigstens teilweise auf einem oder mehreren vorläufigen Werten (Zwischenwerten – intermediate values) (1230) an einer oder mehreren vorläufigen (intermediate) gebrochenzahligen Pixelpositionen, wobei der finale Pixelwert einen finalen Wertebereich (dynamic range) von x Bits hat, wobei die eine oder mehreren vorläufigen Werte einen voriäufigen (intermediate) Wertebereich von y Bit haben, nachdem sie um mindestens ein Bit bitverschoben wurden und wobei y größer als x ist.
  2. Verfahren nach Anspruch 1, wobei y nicht größer als 16 Bits ist.
  3. Verfahren nach Anspruch 1 oder 2, wobei x 8 Bits sind.
  4. Verfahren nach einem der Ansprüche 1 bis 3, wobei die Berechnung ein Verschieben von Bitschieben (1414) von einer früheren Stufe der mehreren Interpolationsstufen auf eine spätere Stufe der mehreren Interpolationsstufen enthält; und wobei das verschobene Bitschieben im Betrag für unterschiedliche Grade gebrochenzahligen Pixelschiebens variiert.
  5. Verfahren nach einem der Ansprüche 1 bis 3, wobei die Berechnung ein Verschieben von Bitschieben (1414) von einer früheren Stufe der mehreren Interpolationsstufen auf eine spätere Stufe der mehreren Interpolationsstufen enthält; und wobei das verschobene Bitschieben im Betrag in Abhängigkeit von Expansionsfaktoren für die früheren und späteren Stufen der mehreren Interpolationsstufen variiert.
  6. Verfahren nach einem der Ansprüche 1 bis 5, wobei eine erste Stufe der Berechnung in den einem oder mehreren vorläufigen Werten resultiert; und wobei eine zweite Stufe der Berechnung in dem finalen Pixelwert resultiert.
  7. Verfahren nach Anspruch 6, wobei die erste Stufe der Berechnung vertikales Filtern (812) und die zweite Stufe der Berechnung horizontales Filtern (832) umfasst.
  8. Verfahren nach einem der Ansprüche 1 bis 7, wobei die gebrochenzahlige Pixelposition und die vorläufigen gebrochenzahligen Pixelpositionen sich in einem Referenzvideorahmen (600) befinden.
  9. Verfahren, das in einem Computersystem (300) implementiert ist, wobei das Verfahren umfasst: Berechnen (computing) eines finalen Pixelwerts an einer gebrochenzahligen Pixelposition unter Benutzung mehrerer Stufen (1410, 1422, 1430) räumlicher Interpolation, wobei die Berechnung die Durchführung von Bitschieben (1414) in einer ersten Stufe der mehreren Stufen, aber das Verschieben mindestens eines Teils (some) des Bitschiebens von der ersten Stufe auf eine zweite Stufe der mehreren Stufen enthält, um die Genauigkeit des finalen Pixelwerts zu erhöhen.
  10. Verfahren nach Anspruch 9, wobei das verschobene Bitschieben im Betrag für unterschiedliche Grade von gebrochenzahligem Pixelschieben variiert.
  11. Verfahren nach Anspruch 9, wobei das verschobene Bitschieben im Betrag in Abhängigkeit von Expansionsfaktoren variiert, die in den ersten und zweiten Stufen der mehreren Interpolationsstufen eingeführt wurden.
  12. Verfahren nach einem der Ansprüche 9 bis 11, wobei die Berechnung weiterhin umfasst: Berechnen (computing) mehrerer vorläufiger (intermediate) Werte an vorläufigen (intermediate) gebrochenzahligen Pixelpositionen und Bitschieben (1414) jedes der mehreren vorläufigen Werte um einen ersten Schiebebetrag von einem oder mehreren Bits in der ersten Stufe der mehreren Stufen; und Berechnen (computing) des finalen Pixelwerts auf Basis wenigstens teilweise der mehreren vorläufigen Werte und Bitschieben (1434) des finalen Pixelwertes um einen zweiten Schiebebetrag, der größer ist als der Logarithmus zur Basis 2 eines Normalisierungsfaktors der zweiten Stufe der mehreren Interpolationsstufen in der zweiten Stufe der mehreren Stufen.
  13. Verfahren nach Anspruch 12, wobei der zweite Schiebebetrag größer als der erste Schiebebetrag ist.
  14. Verfahren nach Anspruch 12 oder 13, wobei der zweite Schiebebetrag sieben Bits ist.
  15. Verfahren nach einem der Ansprüche 12 bis 14, wobei die mehreren vorläufigen Werte einen Wertebereich (dynamic range) vorläufiger Werte besitzen, der sowohl vor dem Bitschieben um den ersten Schiebebetrag, als auch nach dem Bitschieben um den ersten Schiebebetrag größer als ein Wertebereich von Eingabewerten ist.
  16. Verfahren nach einem der Ansprüche 12 bis 15, wobei das Bitschieben um den ersten Schiebebetrag den Wertebereich erhält, während in der zweiten Stufe innerhalb einer Wortgrenze geblieben wird.
  17. Verfahren nach einem der Ansprüche 12 bis 16, wobei nach dem Bitschieben um den zweiten Schiebebetrag der finale Pixelwert × Mantissabits und ein Zeichenbit (sign bit) umfasst.
  18. Verfahren nach einem der Ansprüche 9 bis 11, wobei die Berechnung ein Auslassen eines Abschneidens (clamping) eines oder mehrerer vorläufiger Werte während der ersten Stufe der mehreren Stufen enthält; und wobei die Berechnung weiterhin ein Abschneiden (clamping) (1334) des finalen Pixelwerts an der gebrochenzahligen Pixelposition während der zweiten Stufe der mehreren Stufen enthält.
  19. Verfahren nach einem der Ansprüche 9 bis 18, wobei eine oder mehrere der ersten und zweiten Stufen einen annähernd bikubischen Filter verwenden.
  20. Verfahren nach einem der Ansprüche 9 bis 19, wobei die erste Stufe ein erstes Runden (1514) in einer ersten Richtung enthält und die zweite Stufe ein zweites Runden (1534) in einer zweiten Richtung, die der ersten Richtung entgegengesetzt ist, enthält; und wobei ein Rundungssteuerparameter die erste und zweite Richtung steuert.
  21. Verfahren nach einem der Ansprüche 9 bis 20, wobei sich die gebrochenzahlige Pixelposition in einem Referenzvideorahmen (600) befindet.
  22. Verfahren nach Anspruch 8 oder 21, wobei die gebrochenzahlige Pixelposition an einer Verschiebung um einen halben Pixel (half-pixel shift) in wenigstens einer Dimension des Referenzvideorahmens (600) lokalisiert ist.
  23. Verfahren nach Anspruch 8 oder 21, wobei die gebrochenzahlige Pixelposition bei einer Verschiebung um einen viertel Pixel (quarter-pixel shift) oder einer Verschiebung um dreiviertel Pixel (three-quarters-pixel shift) in wenigstens einer Dimension des Referenzvideorahmens (600) lokalisiert ist.
  24. Verfahren nach Anspruch 8 oder 21, wobei die gebrochenzahlige Pixelposition an einer Verschiebung um einen Subpixel (sub-pixel shift) in zwei Dimensionen des Referenzvideorahmens (600) lokalisiert ist.
  25. Verfahren nach Anspruch 8 oder 21, wobei die gebrochenzahlige Pixelposition an einer Verschiebung um einen viertel Pixel, Verschiebung um einen halben Pixel oder Verschiebung um dreivierte) Pixel in einer ersten Dimension des Referenzvideorahmens (600) und an einer Verschiebung um einen viertel Pixel, Verschiebung um einen halben Pixel oder Verschiebung um dreivierte) Pixel in einer zweiten Dimension des Referenzvideorahmens (600) lokalisiert ist.
  26. Verfahren nach einem der Ansprüche 1 bis 25, ferner umfassend ein Wiederholen der Berechnung an jeder von mehreren anderen gebrochenzahligen Pixelpositionen für einen Wert an der anderen gebrochenzahligen Pixelposition.
  27. Computerlesbarer Datenträger (320, 340, 380), der computerausführbare Befehle zum Veranlassen des Computersystems zum Durchführen des Verfahrens nach einem der Ansprüche 1 bis 26 während einer Videocodierung (400) speichert.
  28. Computerlesbarer Datenträger (320, 340, 380), der computerausführbare Befehle zum Veranlassen des Computersystems zum Durchführen des Verfahrens nach einem der Ansprüche 1 bis 26 während einer Videodecodierung (500) speichert.
  29. System (300), umfassend: Mittel zum Berechnen (computing) mehrerer vorläufiger Werte (Zwischenwerte – intermediate values) an vorläufigen (intermediate) gebrochenzahligen Pixelpositionen in einem Referenzvideorahmen (600), wobei jeder der mehreren vorläufigen Werte durch Interpolieren entlang einer ersten Dimension zwischen mehreren Werten an ganzzahligen Pixelpositionen in dem Referenzvideorahmen (600) berechnet (computed) wird; und Mittel zum Berechnen (computing) eines finalen Pixelwerts an einer finalen geborchenzahligen Pixelposition in dem Referenzvideorahmen (600) durch Interpolieren entlang einer zweiten Dimension zwischen den mehreren vorläufigen Werten an den vorläufigen gebrochenzahligen Pixelpositionen, wobei der finale Pixelwert einen finalen Wertebereich (dynamic range) von x Bits hat und wobei jeder der mehreren vorläufigen Werte um wenigstens ein Bit auf einen vorläufigen (intermediate) Wertebereich (dynamic range) von mehr als x Bits bitverschoben wurde.
  30. System nach Anspruch 29, wobei das Mittel zum Berechnen des finalen Pixelwerts Mittel zum Abschneiden (clamping) (1334) des finalen Pixelwerts enthält; und wobei das Mittel zum Berechnen der mehreren vorläufigen Werte eines Mittels zum Abschneiden (clamping) der mehreren vorläufigen Werte ermangelt.
  31. System nach Anspruch 29 oder 30, wobei das Mittel zum Berechnen der mehreren vorläufigen Werte Mittel zum Bitschieben (1414) um einen ersten Schiebebetrag enthält und wobei das Mittel zum Berechnen des finalen Pixelwerts Mittel zum Bitschieben (1434) um einen zweiten Schiebebetrag, der größer als der Logarithmus zur Basis 2 eines Normalisierungsfaktors für die Berechnung des finalen Pixelwerts ist, enthält.
  32. System nach Anspruch 31, wobei der zweite Schiebebetrag um einen variablen Betrag größer als der erste Schiebebetrag ist.
DE60302602T 2002-04-10 2003-03-27 Sub-Pixel-Interpolation in Bewegungsschätzung und Bewegungskompensation Expired - Lifetime DE60302602T2 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US37186002P 2002-04-10 2002-04-10
US371860P 2002-04-10
US10/382,311 US7620109B2 (en) 2002-04-10 2003-03-04 Sub-pixel interpolation in motion estimation and compensation
US382311P 2003-03-04

Publications (2)

Publication Number Publication Date
DE60302602D1 DE60302602D1 (de) 2006-01-12
DE60302602T2 true DE60302602T2 (de) 2006-06-29

Family

ID=29254462

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60302602T Expired - Lifetime DE60302602T2 (de) 2002-04-10 2003-03-27 Sub-Pixel-Interpolation in Bewegungsschätzung und Bewegungskompensation

Country Status (8)

Country Link
US (1) US7620109B2 (de)
EP (1) EP1353514B1 (de)
JP (1) JP2003333599A (de)
KR (1) KR100681971B1 (de)
AT (1) ATE312479T1 (de)
DE (1) DE60302602T2 (de)
ES (1) ES2254811T3 (de)
HK (1) HK1059856A1 (de)

Families Citing this family (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050105621A1 (en) * 2003-11-04 2005-05-19 Ju Chi-Cheng Apparatus capable of performing both block-matching motion compensation and global motion compensation and method thereof
NO319629B1 (no) 2003-11-28 2005-09-05 Tandberg Telecom As Fremgangsmate for korrigering av interpolerte pikselverdier
US8320464B2 (en) * 2004-05-04 2012-11-27 Qualcomm Incorporated Method and apparatus to construct bi-directional predicted frames for temporal scalability
KR100605105B1 (ko) 2004-05-28 2006-07-26 삼성전자주식회사 영상 보간 장치
EP1617672A1 (de) * 2004-07-13 2006-01-18 Matsushita Electric Industrial Co., Ltd. Bewegunsschätzer/kompensator mit einem 16-bit 1/8 pel interpolationsfilter
US7379076B2 (en) * 2004-07-15 2008-05-27 Microsoft Corporation Using pixel homogeneity to improve the clarity of images
JP4284265B2 (ja) * 2004-11-02 2009-06-24 株式会社東芝 動画像符号化装置、動画像符号化方法、動画像復号化装置および動画像復号化方法
US7751478B2 (en) * 2005-01-21 2010-07-06 Seiko Epson Corporation Prediction intra-mode selection in an encoder
JP4736456B2 (ja) * 2005-02-15 2011-07-27 株式会社日立製作所 走査線補間装置、映像表示装置、映像信号処理装置
JP2008544598A (ja) * 2005-06-10 2008-12-04 エヌエックスピー ビー ヴィ 交互の上向き及び下向き動きベクトル
US20060285597A1 (en) * 2005-06-20 2006-12-21 Flextronics International Usa, Inc. Reusing interpolated values in advanced video encoders
US7830961B2 (en) * 2005-06-21 2010-11-09 Seiko Epson Corporation Motion estimation and inter-mode prediction
WO2007014378A2 (en) * 2005-07-28 2007-02-01 Thomson Licensing Motion estimation and compensation using a hierarchical cache
EP1915872A1 (de) * 2005-08-15 2008-04-30 Nokia Corporation Verfahren und vorrichtung zur subpixel-interpolation für aktualisierungsvorgänge bei der videokodierung
US9479794B2 (en) 2005-11-10 2016-10-25 Freescale Semiconductor, Inc. Resource efficient video processing via prediction error computational adjustments
US8170102B2 (en) * 2005-12-19 2012-05-01 Seiko Epson Corporation Macroblock homogeneity analysis and inter mode prediction
US7843995B2 (en) * 2005-12-19 2010-11-30 Seiko Epson Corporation Temporal and spatial analysis of a video macroblock
WO2007116551A1 (ja) * 2006-03-30 2007-10-18 Kabushiki Kaisha Toshiba 画像符号化装置及び画像符号化方法並びに画像復号化装置及び画像復号化方法
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画素輝度用動き予測機構、組合せ輝度用動き予測機構、及び組合せ輝度・色差用動き予測機構
US9883202B2 (en) 2006-10-06 2018-01-30 Nxp Usa, Inc. Scaling video processing complexity based on power savings factor
KR100899730B1 (ko) * 2006-10-20 2009-05-27 삼성전자주식회사 영상 인코더 및 디코더에서의 색차 신호 보간 방법
KR101369746B1 (ko) * 2007-01-22 2014-03-07 삼성전자주식회사 적응적 보간 필터를 이용한 영상 부호화, 복호화 방법 및장치
US8275041B2 (en) * 2007-04-09 2012-09-25 Nokia Corporation High accuracy motion vectors for video coding with low encoder and decoder complexity
KR100909390B1 (ko) * 2007-09-18 2009-07-24 한국과학기술원 고속 움직임 보상 장치 및 방법
JP4461165B2 (ja) * 2007-09-26 2010-05-12 株式会社東芝 画像処理装置、方法およびプログラム
US9967590B2 (en) * 2008-04-10 2018-05-08 Qualcomm Incorporated Rate-distortion defined interpolation for video coding based on fixed filter or adaptive filter
US20090257499A1 (en) * 2008-04-10 2009-10-15 Qualcomm Incorporated Advanced interpolation techniques for motion compensation in video coding
US8971412B2 (en) * 2008-04-10 2015-03-03 Qualcomm Incorporated Advanced interpolation techniques for motion compensation in video coding
US8804831B2 (en) * 2008-04-10 2014-08-12 Qualcomm Incorporated Offsets at sub-pixel resolution
US8831086B2 (en) 2008-04-10 2014-09-09 Qualcomm Incorporated Prediction techniques for interpolation in video coding
TWI470578B (zh) * 2008-06-26 2015-01-21 Mstar Semiconductor Inc 計算用於待插補影像區塊之目標移動向量的影像處理方法及其相關裝置
US8208065B2 (en) 2008-07-30 2012-06-26 Cinnafilm, Inc. Method, apparatus, and computer software for digital video scan rate conversions with minimization of artifacts
US9078007B2 (en) * 2008-10-03 2015-07-07 Qualcomm Incorporated Digital video coding with interpolation filters and offsets
TW201101800A (en) * 2009-06-22 2011-01-01 Novatek Microelectronics Corp Image processing apparatus and method thereof
JP2014060744A (ja) * 2010-01-13 2014-04-03 Toshiba Corp 動画像符号化装置および復号装置
JP2013232974A (ja) * 2010-01-13 2013-11-14 Toshiba Corp 動画像符号化装置および復号装置
JP5323252B2 (ja) * 2010-03-30 2013-10-23 株式会社東芝 動画像符号化方法、復号化方法、符号化装置および復号化装置
US9219921B2 (en) * 2010-04-12 2015-12-22 Qualcomm Incorporated Mixed tap filters
US20110314253A1 (en) * 2010-06-22 2011-12-22 Jacob Yaakov Jeffrey Allan Alon System, data structure, and method for transposing multi-dimensional data to switch between vertical and horizontal filters
TWI521950B (zh) 2010-07-21 2016-02-11 財團法人工業技術研究院 用於視訊處理之移動估計之方法及裝置
WO2012077607A1 (ja) * 2010-12-07 2012-06-14 ソニー株式会社 画像処理装置及び画像処理方法
MX2013006130A (es) * 2010-12-07 2013-06-28 Sony Corp Dispositivo de procesamiento de imagenes y metodo de procesamiento de imagenes.
CN103503458B (zh) 2011-01-07 2017-09-22 诺基亚技术有限公司 视频编码中的运动预测
US9378560B2 (en) 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
FI3826307T3 (fi) * 2011-06-24 2023-10-18 Ntt Docomo Inc Menetelmä liikekompensoitua ennustusta varten
US9055304B2 (en) * 2011-07-01 2015-06-09 Qualcomm Incorporated Reduced resolution pixel interpolation
US8842939B2 (en) * 2011-08-23 2014-09-23 National Taiwan University Direction-adaptive image upsampling system and method using double interpolation
FR2980068A1 (fr) * 2011-09-13 2013-03-15 Thomson Licensing Procede de codage et de reconstruction d'un bloc de pixels et dispositifs correspondants
TR201819237T4 (tr) * 2011-09-14 2019-01-21 Samsung Electronics Co Ltd Boyutuna Bağlı Olarak Bir Tahmin Birimi (TB) Kod Çözme Usulü
KR20130050149A (ko) * 2011-11-07 2013-05-15 오수미 인터 모드에서의 예측 블록 생성 방법
JP2014082541A (ja) * 2012-10-12 2014-05-08 National Institute Of Information & Communication Technology 互いに類似した情報を含む複数画像のデータサイズを低減する方法、プログラムおよび装置
US9185437B2 (en) 2012-11-01 2015-11-10 Microsoft Technology Licensing, Llc Video data
CN104704827B (zh) * 2012-11-13 2019-04-12 英特尔公司 用于下一代视频的内容自适应变换译码
TWI521946B (zh) 2012-12-21 2016-02-11 杜比實驗室特許公司 在高位元深度視訊的可適性編碼中,高精度升取樣
US9008363B1 (en) 2013-01-02 2015-04-14 Google Inc. System and method for computing optical flow
CN104346770A (zh) 2013-07-24 2015-02-11 联咏科技股份有限公司 数据插补方法及数据插补系统
TWI602144B (zh) * 2013-10-02 2017-10-11 國立成功大學 包裝彩色圖框及原始景深圖框之方法、裝置及系統
US9774881B2 (en) * 2014-01-08 2017-09-26 Microsoft Technology Licensing, Llc Representing motion vectors in an encoded bitstream
US9749642B2 (en) 2014-01-08 2017-08-29 Microsoft Technology Licensing, Llc Selection of motion vector precision
US10225569B2 (en) * 2014-03-31 2019-03-05 Megachips Corporation Data storage control apparatus and data storage control method
US10462480B2 (en) 2014-12-31 2019-10-29 Microsoft Technology Licensing, Llc Computationally efficient motion estimation
US10291932B2 (en) 2015-03-06 2019-05-14 Qualcomm Incorporated Method and apparatus for low complexity quarter pel generation in motion search
US20160345018A1 (en) * 2015-05-19 2016-11-24 Microsoft Technology Licensing, Llc Video encoding and decoding
US9811892B1 (en) 2016-06-30 2017-11-07 Apple Inc. Separating sub-band image data for processing and merging with unprocessed image data
CN107959855B (zh) * 2016-10-16 2020-02-14 华为技术有限公司 运动补偿预测方法和设备
US10235763B2 (en) 2016-12-01 2019-03-19 Google Llc Determining optical flow
US10499078B1 (en) * 2017-02-07 2019-12-03 Google Llc Implicit motion compensation filter selection
CN108833916B (zh) * 2018-06-20 2021-09-24 腾讯科技(深圳)有限公司 视频编码、解码方法、装置、存储介质和计算机设备
EP4029250A4 (de) 2019-09-30 2023-01-04 Huawei Technologies Co., Ltd. Interpolationsfilter für eine interprädiktionsvorrichtung und verfahren zur videocodierung
CN113099231B (zh) * 2021-03-23 2022-12-20 北京百度网讯科技有限公司 确定亚像素插值位置的方法、装置、电子设备和存储介质

Family Cites Families (82)

* 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
EP0294958B1 (de) * 1987-06-09 1995-08-23 Sony Corporation Bewegungskompensierte Interpolation von digitalen Fernsehbildern
EP0294962B1 (de) * 1987-06-09 1995-07-19 Sony Corporation Bewertung von Bewegungsvektoren in Fernsehbildern
EP0424026B1 (de) * 1989-10-14 1997-07-23 Sony Corporation Anordnung und Verfahren zum Übertragen eines Videosignals
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
EP0683615B1 (de) * 1990-10-31 1999-05-19 Victor Company Of Japan, Ltd. Verfahren zur Kompression von bewegten Bildsignalen nach dem Zeilensprungverfahren
ATE162037T1 (de) * 1991-05-24 1998-01-15 British Broadcasting Corp Videobildverarbeitung
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
US5317397A (en) * 1991-05-31 1994-05-31 Kabushiki Kaisha Toshiba Predictive coding using spatial-temporal filtering and plural motion vectors
JPH0541862A (ja) * 1991-08-03 1993-02-19 Sony Corp 動きベクトルの可変長符号化方式
US5428396A (en) * 1991-08-03 1995-06-27 Sony Corporation Variable length coding/decoding method for motion vectors
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
US5594813A (en) * 1992-02-19 1997-01-14 Integrated Information Technology, Inc. Programmable architecture and methods for motion estimation
US6441842B1 (en) * 1992-02-19 2002-08-27 8×8, Inc. Video compression/decompression processing and processors
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
ES2431289T3 (es) * 1993-03-24 2013-11-25 Sony Corporation Método de decodificación de señal de imagen y aparato asociado
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
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
US6026182A (en) * 1995-10-05 2000-02-15 Microsoft Corporation Feature segmentation
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
US5991447A (en) * 1997-03-07 1999-11-23 General Instrument Corporation Prediction and coding of bi-directionally predicted 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
WO1998044479A1 (fr) * 1997-03-31 1998-10-08 Matsushita Electric Industrial Co., Ltd. Procede de visualisation du premier plan d'images et dispositif connexe
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
ES2545066T3 (es) 1997-06-09 2015-09-08 Hitachi, Ltd. Medio de grabación de información de imágenes
JPH1169345A (ja) * 1997-06-11 1999-03-09 Fujitsu Ltd フレーム間予測動画像符号化装置及び復号装置並びにフレーム間予測動画像符号化方法及び復号方法
JP2897763B2 (ja) * 1997-07-28 1999-05-31 日本ビクター株式会社 動き補償符号化装置、復号化装置、符号化方法及び復号化方法
US6310918B1 (en) * 1997-07-31 2001-10-30 Lsi Logic Corporation System and method for motion vector extraction and computation meeting 2-frame store and letterboxing requirements
US6266091B1 (en) * 1997-07-31 2001-07-24 Lsi Logic Corporation System and method for low delay mode operation video decoding
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
US6983018B1 (en) * 1998-11-30 2006-01-03 Microsoft Corporation Efficient motion vector coding for video compression
US6418166B1 (en) * 1998-11-30 2002-07-09 Microsoft Corporation Motion estimation and block matching pattern
US6496608B1 (en) * 1999-01-15 2002-12-17 Picsurf, Inc. Image data interpolation system and method
US6259741B1 (en) * 1999-02-18 2001-07-10 General Instrument Corporation Method of architecture for converting MPEG-2 4:2:2-profile bitstreams into main-profile bitstreams
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
US7110459B2 (en) * 2002-04-10 2006-09-19 Microsoft Corporation Approximate bicubic filter
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
KR20030081116A (ko) 2003-10-17
DE60302602D1 (de) 2006-01-12
EP1353514A3 (de) 2003-10-29
US7620109B2 (en) 2009-11-17
EP1353514A2 (de) 2003-10-15
US20030202607A1 (en) 2003-10-30
EP1353514B1 (de) 2005-12-07
HK1059856A1 (en) 2004-07-16
JP2003333599A (ja) 2003-11-21
KR100681971B1 (ko) 2007-02-15
ATE312479T1 (de) 2005-12-15
ES2254811T3 (es) 2006-06-16

Similar Documents

Publication Publication Date Title
DE60302602T2 (de) Sub-Pixel-Interpolation in Bewegungsschätzung und Bewegungskompensation
DE60307354T2 (de) Chrominanz-Bewegungsvektorrundung
DE60306011T2 (de) Rundungskontrolle für mehrstufige Interpolation
DE60310800T2 (de) Approximierter Kubikfilter
EP3741121B1 (de) Adaptiver interpolationsfilter
DE60309375T2 (de) Parametrisierung für verlauf-kompensation
DE69623330T2 (de) Merkmalbasiertes videokompressionsverfahren
DE69525127T2 (de) Gerät und Verfahren zur Kodierung und Dekodierung von Bildern unter Verwendung einer Kantensynthese und einer Wavelet-Rücktransformation
DE69723550T2 (de) Kodierung und dekodierung von grafischen symbolen
DE69424591T2 (de) Verfahren zur Kontrolle der Datenmenge und Kodierer zur Durchführung desselben.
CN109302608B (zh) 图像处理方法、设备及系统
DE69714071T2 (de) Vorrichtung zur kompression von pixelblöcken in einem bildverarbeitungssystem
DE69129595T2 (de) Systeme und Verfahren zur Kodierung alternierender Halbbilder in Zeilensprungbildsequenzen
DE69116869T2 (de) Digitale bildkodierung mit einer zufallsabtastung der bilder
DE69929430T2 (de) Verfahren und vorrichtung zur codierung von video-information
DE3855648T2 (de) Verfahren und vorrichtung für eine hierarchische kodierung zum wirksamen übertragen von bildfolgen
DE69735028T2 (de) Videokodierungs- und Videodekodierungsvorrichtung
DE602004002455T2 (de) Bewegungsvektorschätzung durch adaptive zeitliche Vorhersage
DE69227352T2 (de) Verfahren und System für die Ausführung einer hochwirksamen Bildsignalkodierung
DE69516734T2 (de) Bildverarbeitungsverfahren und -gerät
EP1091592A2 (de) Videosignalkodierungsvorrichtung
DE112012001635T5 (de) Verfahren zur Verwaltung einer Referenzbildliste und Vorrichtung zu dessen Ausführung
DE69937833T2 (de) Verfahren und vorrichtung zur skalierbaren formkodierung
DE102020125206A1 (de) Verfahren und system zur mehrkanalvideocodierung mit frameratenänderung und kanalübergreifender referenzierung
US6188730B1 (en) Highly programmable chrominance filter for 4:2:2 to 4:2:0 conversion during MPEG2 video encoding

Legal Events

Date Code Title Description
8364 No opposition during term of opposition