DE202016008191U1 - Adaptive Überlappungsblockprädiktion bei Videokodierung mit variabler Blockgröße - Google Patents

Adaptive Überlappungsblockprädiktion bei Videokodierung mit variabler Blockgröße Download PDF

Info

Publication number
DE202016008191U1
DE202016008191U1 DE202016008191.9U DE202016008191U DE202016008191U1 DE 202016008191 U1 DE202016008191 U1 DE 202016008191U1 DE 202016008191 U DE202016008191 U DE 202016008191U DE 202016008191 U1 DE202016008191 U1 DE 202016008191U1
Authority
DE
Germany
Prior art keywords
prediction
block
adjacent
unit
overlap
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.)
Active
Application number
DE202016008191.9U
Other languages
English (en)
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.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of DE202016008191U1 publication Critical patent/DE202016008191U1/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/567Motion estimation based on rate distortion criteria
    • 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/583Motion compensation with overlapping blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • H04N19/122Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/182Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Discrete Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

Computergerät zum Kodieren von Einzelbildern eines Videostreams, umfassend: eine Einheit zum Kodieren eines aktuellen Blocks eines aktuellen Einzelbildes durch einen Prozessor in Reaktion auf Anweisungen, die auf einem nichtflüchtigen computerlesbaren Medium gespeichert sind, wobei das Kodieren Folgendes umfasst: eine Einheit zum Erzeugen eines Basisprädiktionsblocks für den aktuellen Block auf der Grundlage von aktuellen Prädiktionsparametern, die mit dem aktuellen Block verbunden sind; eine Einheit zum Erkennen benachbarter Prädiktionsparameter, die zum Kodieren von zuvor kodierten benachbarten Blöcken, die an den aktuellen Block angrenzen, verwendet wurden, wobei mindestens eine Seite des aktuellen Blocks an zwei oder mehr der zuvor kodierten benachbarten Blöcke angrenzt; eine Einheit zum Bestimmen von Überlappungsregionen im aktuellen Block, wobei jede der Überlappungsregionen einem jeweiligen zuvor kodierten benachbarten Block entspricht; und eine Einheit zum Erzeugen einer Überlappungsvorhersage von Pixelwerten für die einzelnen Überlappungsregionen gemäß einer gewichteten Funktion des Basisprädiktionsblocks und einer Vorhersage anhand von benachbarten Prädiktionsparametern, wobei die gewichtete Funktion auf einer Differenz zwischen den aktuellen Prädiktionsparametern und den benachbarten Prädiktionsparametern basiert.

Description

  • HINTERGRUND
  • Ein Digital-Video kann zum Beispiel für Telebusiness per Videokonferenz, High-Definition-Video-Entertainment, Videowerbung oder für die gemeinsame Nutzung von nutzergenerierten Videos verwendet werden. Aufgrund der großen Datenmenge, die in Videodaten enthalten ist, wird zur Übertragung und Speicherung eine Hochleistungskompression benötigt. Es liegen verschiedene Ansätze zur Reduzierung der Datenmenge in Videostreams als Vorschläge vor, darunter Kompression und andere Kodierungs- und Dekodierungstechniken.
  • KURZDARSTELLUNG
  • Diese Anmeldung betrifft allgemein das Kodieren und Dekodieren von Videodatenströmen zum Übertragen oder Speichern. Hierin offenbart sind Aspekte von Systemen, Verfahren und Vorrichtungen, die die adaptive Überlappungsblockprädiktion bei Videokodierung mit variabler Größe betreffen.
  • Unter Schutz gestellt werden und Gegenstand des Gebrauchsmusters sind dabei, entsprechend den Vorschriften des Gebrauchsmustergesetzes, lediglich Vorrichtungen wie in den beigefügten Schutzansprüchen definiert, jedoch keine Verfahren. Soweit nachfolgend in der Beschreibung gegebenenfalls auf Verfahren Bezug genommen wird, dienen diese Bezugnahmen lediglich der beispielhaften Erläuterung der in den beigefügten Schutzansprüchen unter Schutz gestellten Vorrichtung oder Vorrichtungen.
  • Einen Aspekt der hierin enthaltenen Lehre bildet ein Verfahren zum Kodieren von Bildern eines Videostreams, das das Kodieren eines aktuellen Blocks eines aktuellen Bildes, das Generieren eines Basisprädiktionsblocks für den aktuellen Block auf der Grundlage von aktuellen, mit dem aktuellen Block verbundenen Prädiktionsparametern, das Erkennen benachbarter Prädiktionsparameter, die zum Kodieren von zuvor kodierten benachbarten, an den aktuellen Block angrenzenden Blöcken verwendet wurden, umfasst. Mindestens eine Seite des aktuellen Blocks grenzt an zwei oder mehrere zuvor kodierte benachbarte Blöcke an. Das Kodieren kann das Bestimmen von Überlappungsregionen im aktuellen Block umfassen, wobei jede der Überlappungsregionen einem jeweiligen zuvor kodierten benachbarten Block entspricht, das Generieren einer Überlappungsvorhersage von Pixelwerten für jede der Überlappungsregionen gemäß einer gewichteten Funktion der Basisprädiktion und eine Vorhersage auf der Grundlage von benachbarten Prädiktionsparametern umfassen. Die gewichtete Funktion kann auf einer Differenz zwischen den aktuellen Prädiktionsparametern und den benachbarten Prädiktionsparametern basieren.
  • Einen weiteren Aspekt der hierin enthaltenen Lehren bildet ein Verfahren zum Kodieren eines aktuellen Blocks in einem aktuellen Bild eines Videostreams, umfassend das Bestimmen einer ersten Überlappungsregion im aktuellen Block und angrenzend an einen zuvor kodierten benachbarten Block, wobei mindestens eine Seite des aktuellen Blocks an zwei oder mehrere der zuvor kodierten benachbarten Blöcke angrenzt, und das Generieren einer Überlappungsvorhersage von Pixelwerten in der ersten Überlappungsregion als gewichtete Funktion einer ersten Vorhersage mit ersten Prädiktionsparametern des aktuellen Bildes und einer zweiten Vorhersage mit zweiten Prädiktionsparametern des ersten Prädiktionsblocks, wobei die gewichtete Funktion durch eine Funktion einer Differenz zwischen den ersten Prädiktionsparametern und den zweiten Prädiktionsparametern anpassbar ist.
  • Einen weiteren Aspekt der hierin enthaltenen Lehren bildet ein Verfahren zum Kodieren eines aktuellen Blocks eines aktuellen Bildes in einer Vielzahl von Bildern eines Videostreams, umfassend das Generieren eines ersten Prädiktionsblocks von Pixelwerten im aktuellen Block anhand einer ersten Vorhersage mit ersten Prädiktionsparametern, das Definieren einer Überlappungsregion im aktuellen Block und angrenzend an einen benachbarten Block aus einer Vielzahl von zuvor kodierten Blöcken mit variablen Blockgrößen, wobei mindestens eine Seite des aktuellen Blocks an zwei oder mehr der zuvor kodierten Blöcke angrenzt, und Generieren einer aktualisierten Vorhersage der Pixelwerte für jedes Pixel in der Überlappungsregion, wobei die aktualisierte Vorhersage eine gewichtete Funktion der ersten Vorhersage und der zweiten Vorhersage ist und die zweite Vorhersage auf den zweiten Prädiktionsparametern basiert. Die gewichtete Funktion kann durch eine Funktion einer Differenz zwischen den ersten Prädiktionsparametern und den zweiten Prädiktionsparametern anpassbar sein.
  • Die Offenbarung bietet auch eine entsprechende Vorrichtung zum wirksamen Umsetzen solcher Verfahren und Computerprogrammcodes zum Implementieren solcher Verfahren und Vorrichtungen, wenn er auf einem geeigneten Computer ausgeführt wird, sowie computerlesbare Medien zum Ausführen eines solchen Programmcodes.
  • Variationen in diesen und anderen Aspekten werden nachfolgend ausführlicher beschrieben.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Die folgende Beschreibung nimmt Bezug auf die beigefügten Zeichnungen, dabei gelten gleiche Referenznummern für gleiche Teile in verschiedenen Ansichten, falls nicht anders angegeben.
  • 1 ist ein Diagramm eines Computergeräts gemäß Implementierungen dieser Offenbarung.
  • 2 ist ein Diagramm eines Computer- und Kommunikationssystems gemäß Implementierungen dieser Offenbarung.
  • 3 ist ein Diagramm eines Videostreams für den Einsatz in Kodierung und Dekodierung gemäß Implementierungen dieser Offenbarung.
  • 4 ist ein Blockdiagramm eines Encoders gemäß Implementierungen dieser Offenbarung.
  • 5 ist ein Blockdiagramm eines Decoders gemäß Implementierungen dieser Offenbarung.
  • 6 ist ein Ablaufdiagramm eines beispielhaften Prozesses für adaptive Überlappungsblockprädiktion gemäß den Implementierungen dieser Offenbarung.
  • 7 ist ein Blockdiagramm einer beispielhaften blockbasierten Vorhersage mit variablen Blockgrößen gemäß den Implementierungen dieser Offenbarung.
  • 8 ist ein Blockdiagramm von beispielhaften Größenvariationen von Überlappungsregionen gemäß den Implementierungen dieser Offenbarung.
  • 9 ist ein Blockdiagramm einer gewichteten Funktion für eine Überlappungsblockprädiktion gemäß den Implementierungen dieser Offenbarung.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Videokomprimierungsmodelle können das Brechen jedes Bildes oder Einzelbildes in kleinere Teile wie Blöcke beinhalten und einen Ausgabebitstrom mit Techniken erzeugen, die die Informationen begrenzen, die jeder Block im Ausgang beinhaltet. Ein kodierter Bitstrom kann dekodiert werden, um die Blöcke und die Ausgangsbilder aus den beschränkten Informationen neu zu erstellen. Die für die einzelnen Blöcke in der Ausgabe enthaltenen Daten können durch Verringerung der räumlichen Redundanz, Verringerung der zeitlichen Redundanz oder eine Kombination daraus begrenzt werden. Zum Beispiel können zeitliche oder räumliche Redundanzen durch Vorhersage eines Bildes anhand von Informationen, die sowohl dem Kodierer als auch dem Dekodierer zur Verfügung stehen, und unter Einbeziehung von Informationen, die eine Differenz oder einen Rest zwischen dem vorhergesagten Bild und dem Originalbild in einem kodierten Videostream darstellen, verringert werden.
  • Ein Bild kann in Blöcke von variabler Größe unterteilt werden, Pixelwerte der einzelnen Blöcke werden mit zuvor kodierten Informationen vorhergesagt, und Prädiktionsparameter und Restdaten der einzelnen Blöcke werden als Ausgabe kodiert. Ein Dekodierer empfängt die Prädiktionsparameter und Restdaten in dem komprimierten Bitstrom und rekonstruiert das Bild, wozu die Vorhersage von Blöcken anhand von zuvor dekodierten Bilddaten gehören kann.
  • Eine Überlappungsvorhersage kann die Vorhersage eines Blockes durch Verwendung von Prädiktionsdaten benachbarter Blöcke verbessern. Die Prädiktionsblockgröße der benachbarten Blöcke kann zwischen benachbarten Blöcken variieren und von der Prädiktionsblockgröße eines aktuellen Blocks abweichen. Entsprechende Überlappungsregionen im aktuellen Block können gemäß entsprechenden benachbarten Blöcken erkannt werden, und eine Überlappungsvorhersage kann für entsprechende Überlappungsregionen auf der Grundlage von Prädiktionsparametern aus den entsprechenden benachbarten Blöcken bestimmt werden. Die Überlappungsvorhersage kann optimiert werden, indem man die Größe der einzelnen Überlappungsregionen im aktuellen Block anpasst, und zwar entsprechend dem Vergleich der Prädiktionsparameter des benachbarten Blocks mit den Prädiktionsparametern des aktuellen Blocks.
  • 1 ist ein Diagramm eines Computergeräts 100 gemäß den Implementierungen dieser Offenbarung. Ein Computergerät 100 wie hier dargestellt umfasst eine Kommunikationsschnittstelle 110, eine Kommunikationseinheit 120, eine Benutzerschnittstelle (UI) 130, einen Prozessor 140, einen Speicher 150, Anweisungen 160 und eine Stromquelle 170. Der Begriff „Computergerät” umfasst in der hier verwendeten Bedeutung jede Einheit oder Kombination von Einheiten, die in der Lage sind, ein beliebiges hierin offenbartes Verfahren oder einen beliebigen Teil oder Teile davon auszuführen.
  • Das Computergerät 100 kann ein stationäres Computergerät sein, wie beispielsweise ein Personalcomputer (PC), ein Server, eine Workstation, ein Minicomputer oder ein Großrechner; oder ein mobiles Computergerät, wie beispielsweise ein Mobiltelefon, ein Personal Digital Assistant (PDA), ein Laptop oder ein Tablet-PC. Obwohl als einzelne Einheit dargestellt, kann ein beliebiges Element oder können mehrere Elemente des Kommunikationsgerätes 100 in eine beliebige Anzahl von getrennten physikalischen Einheiten integriert werden. So können beispielsweise die UI 130 und der Prozessor 140 in einer ersten physikalischen Einheit integriert sein und der Speicher 150 kann in einer zweiten physikalischen Einheit integriert sein.
  • Die Kommunikationsschnittstelle 110 ist eine drahtlose Antenne wie dargestellt. Die Kommunikationsschnittstelle 110 kann alternativ oder zusätzlich ein drahtgebundener Kommunikationsanschluss sein, wie beispielsweise ein Ethernet-Port, eine Infrarotschnittstelle, eine serielle Schnittstelle oder jede andere drahtlose oder drahtgebundene Einheit, die in der Lage ist, mit einem drahtgebundenen oder drahtlosen elektronischen Kommunikationsmedium 180 zu kommunizieren.
  • Die Kommunikationseinheit 120 kann so konfiguriert sein, dass sie Signale über das drahtgebundene oder drahtlose Medium 180 sendet oder empfängt. Wie dargestellt, steht die Kommunikationseinheit 120 beispielsweise in Wirkverbindung mit einer Antenne, die für die Kommunikation über drahtlose Signale konfiguriert ist. Obwohl in 1 nicht explizit dargestellt, kann die Kommunikationseinheit 120 so konfiguriert sein, dass sie über jedes drahtgebundene oder drahtlose Kommunikationsmedium, wie beispielsweise Hochfrequenz (HF), Ultraviolett (UV), sichtbares Licht, Faseroptik, Drahtleitung oder eine Kombination davon, senden oder empfangen kann. Obwohl 1 eine einzelne Kommunikationseinheit 120 und eine einzelne Kommunikationsschnittstelle 110 darstellt, kann eine beliebige Anzahl von Kommunikationseinheiten und eine beliebige Anzahl von Kommunikationsschnittstellen verwendet werden.
  • Die UI 130 kann jede Einheit umfassen, die mit einem Benutzer zusammenwirken kann, wie beispielsweise ein virtuelles oder physisches Tastenfeld, Touchpad, Display, Touch-Display, Lautsprecher, Mikrofon, Videokamera, Sensor oder eine beliebige Kombination davon. Die UI-130 kann operativ wie dargestellt mit dem Prozessor oder mit einem anderen Element des Kommunikationsgeräts 100 verbunden werden, wie z. B. mit der Stromquelle 170. Obwohl als einzelne Einheit dargestellt, kann die UI 130 eine oder mehrere physikalische Einheiten beinhalten. So kann die UI 130 beispielsweise eine Audioschnittstelle zum Durchführen einer Audiokommunikation mit einem Benutzer beinhalten. Die UI 130 kann auch eine Berührungsanzeige zum Ausführen einer visuellen und berührungsbasierten Kommunikation mit dem Benutzer beinhalten. Obwohl als getrennte Einheiten dargestellt, können die Kommunikationsschnittstelle 110, die Kommunikationseinheit 120 und die UI 130 oder Teile davon als eine kombinierte Einheit konfiguriert sein. Die Kommunikationsschnittstelle 110, die Kommunikationseinheit 120 und die UI 130 können beispielsweise als Kommunikationsanschluss implementiert sein, der mit einem externen Touchscreen-Gerät verbunden werden kann.
  • Der Prozessor 140 umfasst ein beliebiges Gerät oder System, das in der Lage ist, ein Signal oder andere bestehende oder später entwickelte Informationen zu manipulieren oder zu verarbeiten, darunter optische Prozessoren, Quantenprozessoren, molekulare Prozessoren oder eine Kombination davon. So kann der Prozessor 140 beispielsweise einen Spezialprozessor, einen digitalen Signalprozessor (DSP), eine Vielzahl von Mikroprozessoren, einen oder mehrere Mikroprozessoren in Verbindung mit einem DSP-Core, einen Controller, einen Mikrocontroller, eine anwendungsspezifische integrierte Schaltung (ASIC), ein feldprogrammierbares Gate-Array (FPGA), ein programmierbares Logikarray, eine programmierbare Logiksteuerung, Mikrocode, Firmware, jede Art von integrierter Schaltung (IC), ein Zustandsmodul oder eine Kombination davon umfassen. In der hier verwendeten Bedeutung umfasst der Begriff „Prozessor” einen einzelnen Prozessor oder mehrere Prozessoren. Der Prozessor 140 kann in diesem Beispiel mit der Kommunikationsschnittstelle 110, der Kommunikationseinheit 120, der UI 130, dem Speicher 150, den Anweisungen 160 und der Stromquelle 170 in Wirkverbindung stehen.
  • Der Speicher 150 beinhaltet ein beliebiges nicht transitorisches, digitalisierbares oder computerlesbares Medium, wie ein beliebiges greifbares Gerät, das beispielsweise die Anweisungen 160 oder jede andere damit in Verbindung stehende Information für die Nutzung durch oder in Zusammenhang mit dem Prozessor 140 enthalten, speichern, kommunizieren oder transportieren kann. Das nichtflüchtige computerverwendbare oder computerlesbare Medium kann beispielsweise ein Festkörperlaufwerk, eine Speicherkarte, ein entfernbares Medium, ein Nur-Lese-Speicher (ROM), ein Speicher mit wahlfreiem Zugriff (RAM), jede Art von Laufwerk mit einer Festplatte, Diskette, eine optische Diskette, eine magnetische oder optische Karte, eine anwendungsspezifische integrierte Schaltung (ASICs) oder jede Art von nicht nichtflüchtigen Medien sein, die zum Speichern elektronischer Informationen oder einer beliebigen Kombination davon geeignet sind. Der Speicher 150 ist an den Prozessor 140 angeschlossen, beispielsweise über einen Speicher-Bus (nicht explizit dargestellt).
  • Die Anweisungen 160 enthalten Anweisungen zum Ausführen jedes beliebigen der hier offenbarten Verfahren oder eines oder mehrerer Teile davon. Die Anweisungen 160 können in Hardware. Software oder einer beliebigen Kombination davon realisiert sein. So können beispielsweise die Anweisungen 160 als in dem Speicher 150 gespeicherte Informationen implementiert werden, wie beispielsweise ein Computerprogramm, das durch den Prozessor 140 ausgeführt werden kann, um jedes der beliebigen Verfahren, Algorithmen, Aspekte oder Kombinationen davon auszuführen, wie hierin beschrieben. Die Anweisungen 160 oder ein Teil davon können als Spezialprozessor oder -schaltung implementiert sein, die spezialisierte Hardware zum Ausführen eines der Verfahren, Algorithmen, Aspekte oder Kombinationen davon, wie hier beschrieben, beinhalten können. Teile der Anweisungen 160 können über mehrere Prozessoren auf dem gleichen Rechner oder auf verschiedenen Rechnern oder über ein Netzwerk, wie beispielsweise ein lokales Netzwerk, ein Weitverkehrsnetz, das Internet oder eine Kombination davon verteilt sein.
  • Die Stromquelle 170 kann jedes geeignete Gerät zum Versorgen der des Computergeräts 100 mit Strom sein. So kann beispielsweise die Stromquelle 170 eine verdrahtete Stromquelle; eine oder mehrere Trockenzellenbatterien, wie Nickel-Cadmium (NiCd), Nickel-Zink (NiZn), Nickel-Metall-Hydrid (NiMH), Lithium-Ionen (Li-Ionen); Solarzellen; Brennstoffzellen; oder ein beliebiges anderes Gerät umfassen, das in der Lage ist, die Kommunikationsschnittstelle 110 mit Strom zu versorgen. Wie in 1 dargestellt, stehen die Kommunikationsschnittstelle 110, die Kommunikationseinheit 120, die UI 130, der Prozessor 140, die Anweisungen 160 und der Speicher 150 mit der Stromquelle 170 in Wirkverbindung.
  • Obwohl als getrennte Elemente dargestellt, können die Kommunikationsschnittstelle 110, die Kommunikationseinheit 120, die UI 130, der Prozessor 140, die Anweisungen 160, die Stromquelle 170, der Speicher 150 oder eine beliebige Kombination davon in einer oder mehreren elektronischen Einheiten, Schaltungen oder Chips integriert sein.
  • 2 ist ein Diagramm eines Computer- und Kommunikationssystems 200 gemäß den Implementierungen dieser Offenbarung. Das Computer- und Kommunikationssystem 200 kann eine oder mehrere Computer- und Kommunikationsgeräte 100A/100B/100C, einen oder mehrere Zugangspunkte 210A/210B und ein oder mehrere Netzwerke 220 beinhalten. So kann das Computer- und Kommunikationssystem 200 beispielsweise ein Mehrfachzugriffssystem sein, das Kommunikation, wie beispielsweise Sprache, Daten, Video, Nachrichtenübermittlung, Rundfunk oder eine Kombination davon, mit einem oder mehreren drahtgebundenen oder drahtlosen Kommunikationsgeräten, wie beispielsweise den Computer und Kommunikationsgeräten 100A/100B/100C, zur Verfügung stellt. Obwohl 2 drei Computer- und Kommunikationsgeräte 100A/100B/100C darstellt, können zur Vereinfachung zwei Zugangspunkte 210A/210B und ein Netzwerk 220 jede beliebige Anzahl von Computer- und Kommunikationsgeräten, Zugangspunkten und Netzwerken verwendet werden.
  • Die Computer- und Kommunikationsgeräte 100A/100B/100C können beispielsweise ein Computergerät sein, wie zum Beispiel das dargestellte Computergerät 100 in 1. Wie in diesem Beispiel dargestellt, können die Computer- und Kommunikationsgeräte 100A/100B jeweils Benutzergeräte sein, wie beispielsweise ein mobiles Computergerät, ein Laptop, ein Thin Client oder ein Smartphone, und das Computer- und Kommunikationsgerät 100C kann ein Server sein, wie beispielsweise ein Großrechner oder Cluster. Obwohl die Computer- und Kommunikationsgeräte 100A/100B als Benutzergeräte beschrieben sind und das Computer- und Kommunikationsgerät 100C als Server beschrieben ist, kann jedes Computer- und Kommunikationsgerät einige oder alle Funktionen eines Servers, einige oder alle Funktionen eines Benutzergeräts oder einige oder alle Funktionen eines Servers und eines Benutzergeräts ausführen.
  • Jedes Computer- und Kommunikationsgerät 100A/100B/100C kann für die Ausführung einer drahtgebundenen oder drahtlosen Kommunikation oder von beidem konfiguriert sein. So kann beispielsweise das Computer- und Kommunikationsgerät 100A/100B/100C für das Senden oder Empfangen von drahtgebundenen oder drahtlosen Kommunikationssignalen konfiguriert sein und kann ein Benutzergerät (UE), eine Mobilstation, eine feste oder mobile Teilnehmereinheit, ein Mobiltelefon, einen Personalcomputer, einen Tablet-Computer, einen Server, eine Unterhaltungselektronik oder ein ähnliches Gerät beinhalten. Obwohl jedes Computer- und Kommunikationsgerät 100A/100B/100C als einzelne Einheit dargestellt ist, kann ein Computer- und Kommunikationsgerät jede Anzahl von miteinander verbundenen Elementen beinhalten.
  • Jeder Zugangspunkt 210A/210B kann eine beliebige Art von Gerät sein, das für die Kommunikation mit dem Computer- und Kommunikationsgerät 100A/100B/100C, einem Netzwerk 220 oder beiden über drahtgebundene oder drahtlose Kommunikationsverbindungen 180A/180B/180C konfiguriert ist. So kann beispielsweise der Zugangspunkt 210A/210B eine Basisstation, eine Basis-Transceiver-Station (BTS), einen Knoten-B, einen erweiterten Knoten-B (eNode-B), einen Heimatknoten-B (HNode-B), einen WLAN-Router, einen Kabel-Router, einen Hub, ein Relais, einen Schalter oder ein beliebiges ähnliches drahtgebundenes oder drahtloses Gerät beinhalten. Obwohl jeder Zugangspunkt 210A/210B als einzelne Einheit dargestellt ist, kann ein Zugangspunkt jede Anzahl von miteinander verbundenen Elementen beinhalten.
  • Das Netzwerk 220 kann jede Art von Netzwerk sein, das zur Bereitstellung von Diensten wie Sprache, Daten, Anwendungen, Voice over Internet Protocol (VoIP) oder ein anderes beliebiges Kommunikationsprotokoll oder eine Kombination von Kommunikationsprotokollen über eine drahtgebundene oder drahtlose Kommunikationsverbindung konfiguriert ist. So kann beispielsweise das Netzwerk 220 ein lokales Netzwerk (LAN), ein Weitverkehrsnetz (WAN), ein virtuelles privates Netzwerk (VPN), ein Mobiltelefon oder Mobilfunknetz, das Internet oder jedes andere elektronische Kommunikationsmittel sein. Das Netzwerk kann ein Kommunikationsprotokoll wie beispielsweise das Übertragungssteuerungsprotokoll (TCP), das Benutzer-Datagramm-Protokoll (UDP), das Internetprotokoll (IP), das Real-Time Transport Protocol (RTP), das Hypertext-Transportprotokoll (HTTP) oder eine Kombination davon verwenden.
  • Die Computer- und Kommunikationsgeräte 100A/100B/100C können miteinander über das Netzwerk 220 unter Verwendung einer oder mehrerer drahtgebundener oder drahtloser Kommunikationsverbindungen oder über eine Kombination von drahtgebundenen und drahtlosen Kommunikationsverbindungen kommunizieren. Wie dargestellt, können zum Beispiel die Computer- und Kommunikationsgeräte 100A/100B über drahtlose Kommunikationsverbindungen 180A/180B kommunizieren, und das Computer- und Kommunikationsgerät 100C kann über eine drahtgebundene Kommunikationsverbindung 180C kommunizieren. Jedes der Computer- und Kommunikationsgeräte 100A/100B/100C kann unter Verwendung einer beliebigen drahtgebundenen oder drahtlosen Kommunikationsverbindung oder Verbindungen kommunizieren. So kann beispielsweise das erste Computer- und Kommunikationsgerät 100A über den ersten Zugangspunkt 210A unter Verwendung eines ersten Typs von Kommunikationsverbindung, das zweite Computer- und Kommunikationsgerät 100B über den zweiten Zugangspunkt 210B unter Verwendung eines zweiten Typs von Kommunikationsverbindung und das dritte Computer- und Kommunikationsgerät 100C über einen dritten Zugangspunkt (nicht dargestellt) unter Verwendung eines dritten Typs von Kommunikationsverbindung kommunizieren. In ähnlicher Weise können die Zugangspunkte 210A/210B mit dem Netzwerk 220 über einen oder mehrere Typen von verdrahteten oder drahtlosen Kommunikationsverbindungen 230A/230B kommunizieren. Obwohl 2 die Computer- und Kommunikationsgeräte 100A/100B/100C in Kommunikation über das Netzwerk 220 darstellt, können die Computer- und Kommunikationsgeräte 100A/100B/100C über jede beliebige Anzahl von Kommunikationsverbindungen, wie beispielsweise eine direkte drahtgebundene oder drahtlose Kommunikationsverbindung, miteinander kommunizieren.
  • Es sind andere Implementierungen des Computer- und Kommunikationsgeräts 200 möglich. So kann das Netzwerk 220 beispielsweise in einer Implementierung ein Ad-hoc-Netzwerk sein und einen oder mehrere Zugangspunkte 210A/210B auslassen. Das Computer- und Kommunikationsgerät 200 kann Geräte, Einheiten oder Elemente beinhalten, die nicht in 2 dargestellt sind. Beispielsweise kann das Datenverarbeitungs- und Kommunikationssystem 200 viele weitere Kommunikationsgeräte, Netzwerke und Zugriffspunkte beinhalten.
  • 3 ist ein Diagramm eines Videostreams 300 zur Verwendung bei der Kodierung und Dekodierung gemäß den Implementierungen dieser Offenbarung. Der Videostream 300, wie beispielsweise ein Videostream, der durch eine Videokamera aufgenommen wird, oder ein Videostream, der durch ein Computergerät erzeugt wird, kann eine Videosequenz 310 beinhalten. Die Videosequenz 310 kann eine Folge von benachbarten Einzelbildern 320 beinhalten. Obwohl drei nebeneinanderliegende Einzelbilder 320 dargestellt sind, kann die Videosequenz 310 eine beliebige Anzahl von nebeneinanderliegenden Einzelbildern 320 beinhalten. Jedes Einzelbild 330 von nebeneinanderliegenden Einzelbildern 320 kann ein einzelnes Bild aus dem Videostream darstellen. Jedes Einzelbild 330 kann Blöcke 340 beinhalten. Obwohl in 3 nicht ausdrücklich dargestellt, beinhaltet ein Block Pixel. Der Block kann beispielsweise eine 16×16 Gruppe von Pixeln, eine 8×8 Gruppe von Pixeln, eine 8×16 Gruppe von Pixeln oder jede andere Gruppe von Pixeln beinhalten. Sofern hierin nicht anders angegeben, kann der Begriff „Block” einen Superblock, einen Makroblock, ein Segment, eine Scheibe oder jedes andere Teil eines Einzelbildes beinhalten. Ein Einzelbild, ein Block, ein Pixel oder eine Kombination davon kann eine Anzeigeinformation, wie zum Beispiel eine Leuchtdichteinformation, eine Chrominanzinformation oder eine andere Information beinhalten, die zum Speichern, Modifizieren, Kommunizieren oder Darstellen des Videostreams oder eines Teils davon verwendet werden kann.
  • 4 ist ein Blockdiagramm eines Kodierers 400 gemäß den Implementierungen dieser Offenbarung. Der Kodierer 400 kann in einem Gerät, zum Beispiel einem Computer 100 wie in 1 dargestellt, oder in Computer- und Kommunikationsgeräten 100A/100B/100C implementiert sein, wie in 2 dargestellt, beispielsweise ein in einer Datenspeichereinheit gespeichertes Computersoftwareprogramm, zum Beispiel dem Speicher 150, wie in 1. Das Computersoftwareprogramm kann Rechneranweisungen beinhalten, die durch einen Prozessor wie zum Beispiel dem Prozessor 140 ausgeführt werden können, wie in 1 dargestellt, und kann bewirken, dass das Gerät wie hierin beschrieben Videodaten kodiert. Der Kodierer 400 kann als spezielle Hardware implementiert sein, beispielsweise im Computergerät 100.
  • Der Kodierer 400 kodiert einen Eingangsvideostream 402, wie beispielsweise einen Videostream 300, der in 3 dargestellt ist, um einen kodierten (komprimierten) Bitstrom 404 zu erzeugen. Der Kodierer 400 beinhaltet einen Vorwärtspfad zum Erzeugen des komprimierten Bitstroms 404. Der Vorwärtspfad kann wie dargestellt eine Intra/Inter-Prädiktionseinheit 410, eine Transformationseinheit 420, eine Quantisierungseinheit 430 und eine Entropiekodierungseinheit 440 beinhalten. Der Kodierer 400 kann einen Rekonstruktionspfad (durch gestrichelte Linien dargestellt) beinhalten, um ein Bild für die Kodierung von weiteren Blöcken zu rekonstruieren. Wie in 4 dargestellt, kann der Rekonstruktionspfad eine Dequantisierungseinheit 450, eine inverse Transformationseinheit 460, eine Rekonstruktionseinheit 470 und eine Schleifenfiltereinheit 480 beinhalten. Andere strukturelle Variationen des Kodierers 400 können verwendet werden, um den Videostream 402 zu kodieren.
  • Zum Kodieren des Videostreams 402 kann jedes Bild innerhalb des Videostreams 402 in Einheiten von Blöcken verarbeitet werden. Somit kann aus den Blöcken in einem Bild ein aktueller Block identifiziert werden, und der aktuelle Block kann kodiert werden.
  • In der Intra/Inter-Prädiktionseinheit 410 kann der aktuelle Block unter Verwendung entweder einer Intraframe-Vorhersage kodiert werden, die innerhalb eines Einzelbildes liegen kann, oder einer Interframe-Vorhersage, die von Bild zu Bild erfolgen kann. Die Intra-Vorhersage kann das Erzeugen eines Prädiktionsblocks von Abtastwerten im aktuellen Bild, die zuvor kodiert und rekonstruiert wurden, beinhalten. Die Inter-Vorhersage kann das Erzeugen eines Prädiktionsblocks von Abtastwerten in einem oder mehreren zuvor konstruierten Referenzeinzelbildern beinhalten. Das Erzeugen eines Prädiktionsblocks für einen aktuellen Block in einem aktuellen Bild kann das Durchführen einer Bewegungsschätzung beinhalten, um einen Bewegungsvektor zu erzeugen, der einen geeigneten Referenzblock im Referenzbild anzeigt.
  • Die Intra/Inter-Prädiktionseinheit 410 kann den Prädiktionsblock vom aktuellen Block (Rohblock) subtrahieren, um einen Restblock zu erzeugen. Die Transformationseinheit 420 kann eine blockbasierte Transformation durchführen, die das Transformieren des Restblocks in Transformationskoeffizienten, zum Beispiel im Frequenzbereich, beinhalten kann. Beispiele für blockbasierte Transformationen sind die Karhunen-Loève-Transformation (KLT), die diskrete Kosinustransformation (DCT) und die Singularwertzerlegungstransformation (SVD). In einem Beispiel wandelt die DCT einen Block in den Frequenzbereich um. Im Fall von DCT stützen sich die Werte des Transformationskoeffizienten auf die räumliche Frequenz, dabei ist die tiefste Frequenz (z. B. DC) der Koeffizient in der linken oberen Ecke der Matrix und der höchste Frequenzkoeffizient unten rechts in der Matrix.
  • Die Quantisierungseinheit 430 wandelt die Transformationskoeffizienten in diskrete Quantenwerte um, die einen Quantisierungswert (auch Quantisiererwert genannt) oder Quantisierungspegel verwenden und als quantisierte Transformationskoeffizienten bezeichnet werden. Die quantisierten Transformationskoeffizienten können durch die Entropiekodierungseinheit 440 entropiekodiert werden, um entropiekodierte Koeffizienten zu erzeugen. Entropiekodierung kann die Verwendung einer Wahrscheinlichkeitsverteilungsmetrik einschließen. Die entropiekodierten Koeffizienten und Informationen, die zum Dekodieren des Blocks verwendet werden und die die Art der verwendeten Vorhersage, Bewegungsvektoren und Quantisierungswerte beinhalten können, werden an den komprimierten Bitstrom 404 ausgegeben. Der komprimierte Bitstrom 404 kann unter Verwendung verschiedener Techniken wie Lauflängenkodierung (RLE) und Nulllaufkodierung formatiert werden.
  • Der Rekonstruktionspfad kann verwendet werden, um die Referenzbildsynchronisation zwischen dem Kodierer 400 und einem entsprechenden Dekodierer aufrechtzuerhalten, wie beispielsweise dem Dekodierer 500, siehe 5. Der Rekonstruktionspfad kann ähnlich dem nachstehend erläuterten Dekodierungsprozess sein und die Dequantisierung der quantisierten Transformationskoeffizienten an der Dequantisierungseinheit 450 und die inverse Transformation der dequantisierten Transformationskoeffizienten an der inversen Transformationseinheit 460 beinhalten, um einen derivativen Restblock zu erzeugen. Die Rekonstruktionseinheit 470 kann den Prädiktionsblock, der von der Intra/Inter-Prädiktionseinheit 410 erzeugt wird, zum abgeleiteten Restblock addieren, um einen rekonstruierten Block zu erzeugen. Die Schleifenfiltereinheit 480 kann auf den rekonstruierten Block angewendet werden, um Verzerrungen wie zum Beispiel blockierende Artefakte zu reduzieren.
  • Andere Variationen des Kodierers 400 können verwendet werden, um den komprimierten Bitstrom 404 zu kodieren. So kann beispielsweise ein nicht-transformbasierter Kodierer den Restblock direkt ohne die Transformationseinheit 420 quantisieren. Die Quantisierungseinheit 430 und die Dequantisierungseinheit 450 können in einer einzigen Einheit kombiniert sein.
  • 5 ist ein Blockdiagramm eines Dekodierers 500 gemäß den Implementierungen dieser Offenbarung. Der Dekodierer 500 kann in einem Gerät, zum Beispiel einem Computergerät 100, wie in 1 dargestellt, oder in Computer- und Kommunikationsgeräten 100A/100B/100C implementiert sein, wie in 2 dargestellt, beispielsweise ein in einer Datenspeichereinheit gespeichertes Computersoftwareprogramm, zum Beispiel dem Speicher 150, wie in 1. Das Computersoftwareprogramm kann Rechneranweisungen beinhalten, die durch einen Prozessor wie zum Beispiel dem Prozessor 140 ausgeführt werden können, wie in 1 dargestellt, implementiert sein und bewirken, dass das Gerät wie hierin beschrieben Videodaten kodiert. Der Dekodierer 500 kann als spezielle Hardware implementiert sein, beispielsweise im Computergerät 100.
  • Der Dekodierer 500 empfängt einen komprimierten Bitstrom 502, beispielsweise den komprimierten Bitstrom 404, wie in 4 dargestellt, und dekodiert den komprimierten Bitstrom 502, um einen Ausgangsvideostream 504 zu erzeugen. Im Beispiel von 5 kann der Dekodierer 500 eine Entropie-Dekodiereinheit 510, eine Dequantisierungseinheit 520, eine Invers-Transformationseinheit 530, eine Intra/Inter-Prädiktionseinheit 540, eine Rekonstruktionseinheit 550, eine Schleifenfiltereinheit 560 und eine Deblockierungsfiltereinheit 570 beinhalten. Andere strukturelle Variationen des Dekodierers 500 können verwendet werden, um den komprimierten Bitstrom 502 zu dekodieren.
  • Die Entropie-Dekodiereinheit 510 dekodiert Datenelemente innerhalb des komprimierten Bitstroms 502, um einen Satz von quantisierten Transformationskoeffizienten zu erzeugen. Die Entropie-Dekodiereinheit 510 kann zum Beispiel eine kontextadaptive binär-arithmetische Dekodierung verwenden. Die Dequantisierungseinheit 520 dequantisiert die quantisierten Transformationskoeffizienten, und die inverse Transformationseinheit 530 transformiert die dequantisierten Transformationskoeffizienten invers, um einen abgeleiteten Restblock zu erzeugen, der dem von der inversen Transformationseinheit 460 erzeugten abgeleiteten Restblock entspricht, siehe 4. Unter Verwendung von Headerinformationen, die aus dem komprimierten Bitstrom 502 dekodiert wurden, kann die Intra/Inter-Prädiktionseinheit 540 einen Prädiktionsblock erzeugen, der dem im Kodierer 400 erzeugten Prädiktionsblock entspricht. In der Rekonstruktionseinheit 550 kann der Prädiktionsblock zum abgeleiteten Restblock hinzugefügt werden, um einen rekonstruierten Block zu erzeugen. Die Schleifenfiltereinheit 560 kann auf den rekonstruierten Block angewendet werden, um blockierende Artefakte zu reduzieren. Die Deblockierungsfiltereinheit 570 kann auf den rekonstruierten Block angewandt werden, um die Blockierungsverzerrung zu reduzieren. Das Ergebnis kann als Ausgabevideostream 504 ausgegeben werden.
  • Andere Variationen des Dekodierers 500 können verwendet werden, um den komprimierten Bitstrom 502 zu dekodieren. So kann beispielsweise der Decoder 500 den Ausgabevideostream 504 ohne die Deblockierungsfiltereinheit 570 produzieren.
  • Die Reduzierung der zeitlichen Redundanz kann das Verwenden von Ähnlichkeiten zwischen Einzelbildern zum Kodieren eines Einzelbilds unter Verwendung einer relativ kleinen Datenmenge basierend auf einem oder mehreren Referenzbildern umfassen. Die Referenzbilder können zuvor kodierte, dekodierte und rekonstruierte Bilder des Videostreams sein. Ein Block oder Pixel eines aktuellen Bildes kann beispielsweise einem räumlich korrespondierenden Block oder Pixel eines Referenzbildes ähnlich sein. Ein Block oder Pixel eines aktuellen Rahmens kann beispielsweise einem Block oder Pixel eines Referenzbildes in einem anderen Teil ähnlich sein. In diesem Fall kann eine Reduzierung der zeitlichen Redundanz das Erzeugen von Bewegungsinformationen, die die räumliche Differenz oder Translation zwischen der Position des Blocks oder Pixels in dem aktuellen Einzelbild und der entsprechenden Position des Blocks oder Pixels im Referenzbild umfassen.
  • Das Reduzieren der zeitlichen Redundanz kann das Identifizieren eines Blocks oder Pixels in einem Referenzbild oder einen Teil des Referenzbilds beinhalten, der einem aktuellen Block oder Pixel eines aktuellen Einzelbildes entspricht. Ein Referenzbild oder ein Teil eines Referenzbildes, das im Speicher gespeichert sein kann, wird beispielsweise nach dem besten Block oder Pixel durchsucht, der zum Kodieren eines aktuellen Blocks oder Pixels des aktuellen Einzelbildes zu verwenden ist. Die Suche kann zum Beispiel den Block des Referenzbildes identifizieren, für den die Differenz der Pixelwerte zwischen dem Referenzbild und dem aktuellen Block minimiert ist und als Bewegungssuche bezeichnet werden. Der Teil des gesuchten Referenzbildes kann begrenzt sein. So kann beispielsweise der Teil des gesuchten Referenzbildes (der auch als Suchbereich bezeichnet wird), eine begrenzte Anzahl von Zeilen des Referenzbildes beinhalten. Das Identifizieren des Referenzblocks kann das Berechnen einer Kostenfunktion, beispielsweise einer Summe der absoluten Differenzen (SAD) zwischen den Pixeln der Blöcke im Suchbereich und den Pixeln des aktuellen Blocks, umfassen. Es kann mehr als ein Referenzbild vorgesehen sein. Zum Beispiel können drei Referenzbilder aus acht Referenzbildkandidaten ausgewählt werden.
  • Die räumliche Differenz zwischen dem Standort des Referenzblocks im Referenzbild und dem aktuellen Block im aktuellen Einzelbild wird oft als Bewegungsvektor dargestellt. Die Differenz der Pixelwerte zwischen dem Referenzblock und dem aktuellen Block kann als Differenzdaten, Restdaten oder als Restblock bezeichnet werden. Das Erzeugen von Bewegungsvektoren kann als Bewegungsschätzung bezeichnet werden. Ein Pixel eines aktuellen Blocks kann anhand des Standorts unter Verwendung von kartesischen Koordinaten als fx,y angegeben werden. In ähnlicher Weise wird ein Pixel des Suchbereichs des Referenzbildes anhand des Standorts unter Verwendung von kartesischen Koordinaten als rx,y dargestellt. Ein Bewegungsvektor (MV) für den aktuellen Block kann beispielsweise basierend auf einem SAD zwischen den Pixeln des aktuellen Einzelbildes und den entsprechenden Pixeln des Referenzbildes ermittelt werden.
  • Zur Interprädiktion kann der Kodierer 400 kodierte Informationen für Prädiktionsblöcke an Blockendpunkten übermitteln, darunter unter anderem einen Prädiktionsmodus, das/die Prädiktionsreferenzbild(er), Bewegungsvektor(en) nach Bedarf und Subpixelinterpolation nach Bedarf.
  • 6 ist ein Ablaufdiagramm eines beispielhaften Verfahrens für adaptive Überlappungsblockprädiktion gemäß den Implementierungen dieser Offenbarung. Adaptive Überlappungsblockprädiktion kann in einem Kodierer implementiert sein, zum Beispiel während einer von der Intra-/Inter-Prädiktionseinheit 410 des Kodierers 400 ausgeführten Vorhersage wie in 4 dargestellt, oder aber in einem Dekodierer, zum Beispiel während einer von der Intra-/Inter-Prädiktionseinheit 540 im Dekodierer 500 ausgeführten Vorhersage, siehe 5. Die dargestellte adaptive Überlappungsblockprädiktion umfasst das Bestimmen einer Basisvorhersage des aktuellen Blocks anhand von Prädiktionsparametern für den aktuellen Block in Schritt 610, das Erkennen benachbarter Prädiktionsparameter eines benachbarten Blocks in Schritt 620, das Bestimmen einer an den benachbarten Block im aktuellen Block angrenzenden Überlappungsregion in Schritt 630, das Bestimmen einer Überlappungsvorhersage der Überlappungsregion als gewichtete Funktion der Basisprädiktion und einer Vorhersage anhand der benachbarten Prädiktionsparameter in Schritt 640 und das Erzeugen eines Überlappungsprädiktionsblocks durch Kombinieren der Überlappungsvorhersagen in Schritt 650.
  • In Schritt 610 erfolgt eine Basisprädiktion für den aktuellen Block mit aktuellen Prädiktionsparametern für den aktuellen Block. Zum Beispiel können die Prädiktionsparameter für den aktuellen Block ein Referenzbild und Bewegungsvektoren des aktuellen Blocks beinhalten. Ein Basisprädiktionsblock kann mit der Basisprädiktion des aktuellen Blocks bestimmt werden.
  • Benachbarte Prädiktionsparameter werden in Schritt 620 identifiziert. Das Identifizieren von benachbarten Prädiktionsparametern kann das Erkennen von zuvor kodierten oder dekodierten benachbarten Blöcken sowie für jeden der zuvor kodierten oder dekodierten benachbarten Blöcke das Erkennen der zum Kodieren und Dekodieren des benachbarten Blocks verwendeten Prädiktionsparameter umfassen. Die benachbarten Blöcke können die an den aktuellen Block im Bild angrenzenden (oder zu ihm peripheren) Blöcke sein. Die benachbarten Blöcke können die in der Scanreihenfolge vor dem aktuellen Block liegenden Blöcke sein. Die Scanreihenfolge kann eine Raster-Scanreihenfolge, eine Wellenfront-Scanreihenfolge, eine Zickzack-Scanreihenfolge usw. sein.
  • Eine Überlappungsregion wird in Schritt 630 bestimmt. Eine Überlappungsregion im aktuellen Block kann für einen oder mehrere der kodierten oder dekodierten benachbarten Blöcke, die in Schritt 620 identifiziert wurden, bestimmt werden. Die Überlappungsregion kann eine an den entsprechenden benachbarten Block angrenzende Region im aktuellen Block, wie zum Beispiel eine Gruppierung von Pixeln, beinhalten. Die Bestimmung der Überlappungsregion kann davon abhängen, ob mindestens ein zuvor kodierter oder dekodierter benachbarter Block von der Größe her kleiner als der aktuelle Block ist.
  • Eine Überlappungsvorhersage wird in Schritt 640 für die in Schritt 630 identifizierte Überlappungsregion bestimmt. Die Überlappungsvorhersage kann anhand einer gewichteten Funktion der in Schritt 610 bestimmten Basisprädiktion und einer Vorhersage mit benachbarten Prädiktionsparametern aus dem entsprechenden benachbarten Block erzeugt werden, um Pixelwerte im aktuellen Block innerhalb der Überlappungsregion vorherzusagen. Zum Beispiel kann mit den Prädiktionsparametern des entsprechenden benachbarten Blocks für eine Überlappungsregion ein Prädiktionsblock der gleichen Größe wie die Größe der Überlappungsregion bestimmt werden. Die Überlappungsvorhersage für die Überlappungsregion kann anhand einer gewichteten Kombination aus Pixelwerten eines Basisprädiktionsblocks und den anhand der Prädiktionsparameter des entsprechenden benachbarten Blocks für die Überlappungsregion erzeugten Prädiktionsblock-Pixelwerten erfolgen. Zum Beispiel kann der Pixelwert für ein Pixel in der Überlappungsregion ein gewichtetes Mittel des Pixelwerts aus dem Basisprädiktionsblock und dem entsprechenden Pixelwert aus dem anhand der Prädiktionsparameter des entsprechenden benachbarten Blocks für die Überlappungsregion generierten Prädiktionsblock sein. Es ist auch möglich, das Generieren von Prädiktionsblöcken für die entsprechenden Überlappungsregionen zu Gunsten der Erzeugung des Überlappungsprädiktionsblocks auf einer Pixel-für-Pixel-Basis auszulassen.
  • Ein Überlappungsprädiktionsblock wird mithilfe von Überlappungsvorhersagen aus einem oder mehreren benachbarten Blöcken in Schritt 650 generiert. Zum Beispiel kann die Überlappungsvorhersage in Schritt 640 für eine oder mehrere Überlappungsregionen im aktuellen Block wiederholt werden, um den Überlappungsprädiktionsblock zu bilden.
  • Ein Teil des aktuellen Blocks, der räumlich nicht den Überlappungsregionen für den aktuellen Block entspricht, kann anhand der Basisvorhersage vorhergesagt werden.
  • Ein Überlappungsprädiktionsblock für den aktuellen Block kann mit dem Basisprädiktionsblock verglichen werden, wobei der Basisprädiktionsblock oder der Überlappungsprädiktionsblock als Prädiktionsblock für den aktuellen Block auf der Grundlage des Vergleichs verwendet wird. Zum Beispiel kann der Vergleich auf einer restbasierten Fehlermetrik beruhen, zum Beispiel einer Summe absoluter Differenzen, die Fehlerwerte zwischen dem aktuellen Block und den einzelnen Prädiktionsblöcken bestimmt. Der Kodierer 400 kann jeweils entweder den Basisprädiktionsblock oder den Überlappungsprädiktionsblock danach auswählen, welcher von ihnen geringere Fehlerwerte produziert.
  • Informationen, nach denen am aktuellen Block eine Überlappungsvorhersage durchgeführt wurde, können im kodierten Bitstrom enthalten sein. Zum Beispiel kann ein Typ von gewichteter Funktion, der für die Überlappungsvorhersage verwendet wurde, im codierten Bitstrom angegeben werden. Die Angabe der gewichteten Funktion kann aus dem kodierten Bitstrom ausgelassen werden, wobei das Dekodieren des kodierten Bitstroms die Bestimmung einer gewichteten Funktion mit Kontextinformationen von zuvor dekodierten benachbarten Bildern umfasst. Zum Beispiel kann das Dekodieren das Erkennen einer gewichteten Funktion umfassen, anhand derer Prädiktionsparameter benachbarter Blöcke die kleinsten restbasierten Fehler erzeugen.
  • 7 ist ein Blockdiagramm einer beispielhaften blockbasierten Vorhersage mit variablen Blockgrößen gemäß den Implementierungen dieser Offenbarung. Mindestens eine Seite des aktuellen Blocks kann an zwei oder mehrere zuvor kodierte oder dekodierte Blöcke angrenzen. Wie dargestellt, ist der aktuelle Block 720 für die Vorhersage von zuvor kodierten oder dekodierten oben benachbarten Blöcken 721, 722, 723 und dem links benachbarten Block 724 umgeben. Obwohl die zuvor kodierten oder dekodierten Blöcke in 7 als oberhalb und links vom Block 720 liegend dargestellt sind, können die zuvor kodierten oder dekodierten Blöcke unterhalb oder rechts vom aktuellen Block oder in einer Kombination aus oben, links, unten oder rechts (z. B. in Abhängigkeit von der Scanreihenfolge) liegen.
  • Wie in 7 dargestellt, ist der aktuelle Block 720 ein Block im Format 16×16, der benachbarte Block 721 ist ein Block im Format 8×8, die benachbarten Blöcke 722, 723 sind Blöcke im Format 4×4 und der benachbarte Block 724 ist ein Block im Format 16×16. Obwohl in 7 Blöcke im Format 16×16, 8×8 und 4×4 dargestellt sind, können offenbarungsgemäß auch andere Blockgrößen verwendet werden.
  • Für die Überlappungsvorhersage des aktuellen Blocks 720 kann in Bezug auf den einen oder die mehreren zuvor kodierten oder dekodierten benachbarten Blöcke eine Überlappungsregion bestimmt werden. Zum Beispiel werden Pixel im aktuellen Block 720 innerhalb von definierten Überlappungsregionen gruppiert, wobei eine Überlappungsregion für einen oder mehrere oben angrenzende Blöcke bestimmt wird, zum Beispiel die Überlappungsregionen 731, 732, 733, die jeweils den benachbarten Blöcken 721, 722 und 733 entsprechen, und die Überlappungsregion 734, die als linke Hälfte des aktuellen Blocks 720 dargestellt ist und dem links angrenzenden Block 724 entspricht. Wie in 7 dargestellt, können Überlappungsregionen einander selbst überlappen, zum Beispiel die Überlappungsregionen 731 und 734, wo die Überlappungsregion 731 eine dem oben angrenzenden Block 721 und dem links angrenzenden Block 724 entsprechende Kreuzung von Überlappungsregionen umfasst. Wie dargestellt, liegen die Überlappungsregionen 731734 im aktuellen Block 720 und grenzen an die jeweils entsprechenden benachbarten Blöcke 721724 an.
  • Die gewichtete Funktion für die Überlappungsvorhersage kann die Größe der Überlappungsregion bestimmen. Die Größe der Überlappungsregion kann der Größe des entsprechenden benachbarten Blocks entsprechen, zum Beispiel einer entsprechenden Spaltenabmessung v, einer Zeilenabmessung w oder beiden. Eine Überlappungsregion der Größe v×w kann einer Größe x×y eines benachbarten Blocks entsprechen, wobei v = x und w = y. Zum Beispiel wird eine Überlappungsregion wie die Überlappungsregion 731 im Format 8×8 im aktuellen Block 720, wie in 7 dargestellt, in Bezug auf den benachbarten Block 721 vom Format 8×8 definiert.
  • Die Größe der Überlappungsregion kann der Größe des entsprechenden aktuellen Blocks entsprechen, zum Beispiel einer entsprechenden Spaltenabmessung v, einer Zeilenabmessung w oder beiden. In manchen Implementierungen kann eine Größe v×w der Überlappungsregion einer Größe x'×y' des aktuellen Blocks entsprechen, wobei v×x' und w = y'. Als ein Beispiel kann der aktuelle Block kleiner als ein benachbarter Block sein und die Größe der Überlappungsregion für eine Dimension ist auf die Größe des aktuellen Blocks an der Grenze zum benachbarten Block begrenzt. Als weiteres Beispiel werden Überlappungsregionen 732 und 733 im Format 4×8 wie in 7 dargestellt in Bezug auf die jeweils benachbarten Blöcke 722 und 733 im Format 4×4 bestimmt, und die Anzahl von Zeilen entspricht der Hälfte einer Größenordnung des aktuellen Blocks von 16×16, wobei w = 1/2 y' = 8. Eine Größe v×w der Überlappungsregion kann einer Größe x'×y' des aktuellen Blocks entsprechen, wobei v = x'/2 und w = y'. Zum Beispiel wird eine 8×16 Überlappungsregion 734 in Bezug auf den links angrenzenden Block 724 im Format 16×16 bestimmt. Die Größe der Überlappungsregion kann sowohl der Größe des benachbarten Blocks als auch der Größe des aktuellen Blocks entsprechen. Andere Varianten von Überlappungsregionsgrößen können verwendet werden.
  • Ein Index einer gewichteten Funktion, der angibt, welche von verschiedenen diskreten Überlappungsregionsgrößen als gemeinsame Größe für alle Überlappungsregionen verwendet wird, kann in dem kodierten Bitstrom enthalten sein. Entsprechend kann das Dekodieren des Blocks das Dekodieren des Indexes umfassen, um zu bestimmen, welche der diskreten Überlappungsregionsgrößen für die gewichtete Funktion der Überlappungsvorhersage zu verwenden ist. Als Beispiel kann ein erster Index angeben, dass alle Überlappungsregionen eine Größe haben, bei der die erste Abmessung gleich der Länge des benachbarten Blocks und sich die zweite Abmessung über ½ der Länge des aktuellen Blocks erstreckt, wie die Überlappungsregion 732, siehe 7. Ein zweiter Index kann angeben, dass alle Überlappungsregionen eine erste Größenabmessung gleich der Kante des benachbarten Blocks und eine zweite Größenabmessung haben, die sich über ¼ der Länge des aktuellen Blocks erstreckt, wie die Überlappungsregion 904, siehe 8. Das Kodieren kann die Bestimmung einer gewichteten Funktion beinhalten, die je nach den Prädiktionsparametern für benachbarte Blocks verschiedene relative Größen zuordnen kann. Zum Beispiel kann das Kodieren die Erzeugung von mehreren Prädiktionsblock-Kandidaten entsprechend verschiedenen gewichteten Funktionen, das Bestimmen einer Ratenverzerrungskostenschätzung für die einzelnen Kandidaten und das Auswählen der gewichteten Funktion, die die beste Ratenverzerrungsoptimierung (z. B. den geringsten Ratenverzerrungsfehler) bietet, umfassen.
  • 8 ist ein Blockdiagramm von beispielhaften Größenvariationen von Überlappungsregionen gemäß den Implementierungen dieser Offenbarung. Eine Abmessung der Überlappungsregion kann eine entsprechende Abmessung des entsprechenden benachbarten Blocks überschreiten. Die in 8 dargestellte, dem benachbarten Block 722 entsprechende Überlappungsregion 902 ist beispielsweise in der horizontalen Abmessung größer als die Anzahl der horizontalen Pixel im entsprechenden benachbarten Block 722 und hat die gleiche vertikale Abmessung. Als weiteres Beispiel wird die dem benachbarten Block 722 entsprechende Überlappungsregion 904 entsprechend der horizontalen Abmessung des benachbarten Blocks bestimmt und entspricht ¼ der vertikalen Größe des aktuellen Blocks. Sowohl die horizontale als auch die vertikale Abmessung der Überlappungsregion kann die entsprechende Abmessung des entsprechenden benachbarten Blocks überschreiten. Sowohl die horizontale als auch die vertikale Abmessung der Überlappungsregion kann von der entsprechenden Abmessung des entsprechenden benachbarten Blocks überschritten werden.
  • Verschiedene Überlappungsregionsgrößen können mit einem Satz von diskreten Auslegungsfunktionen bestimmt werden, aus denen die Größe der Überlappungsregion adaptiv als Funktion einer Differenz zwischen Prädiktionsparametern des aktuellen Blocks und den angrenzenden Prädiktionsparametern des entsprechenden benachbarten Blocks ausgewählt werden kann. Ein Vergleich zwischen Bewegungsvektoren des aktuellen Blocks und Bewegungsvektoren des entsprechenden benachbarten Blocks für die Überlappungsregion kann eine Bewegungsvektordifferenz ergeben, die einen Schwellenwert überschreitet, und eine oder mehrere Abmessungen einer Standardgröße der Überlappungsregion werden entsprechend angepasst. Die Bestimmung der Differenz der Prädiktionsparameter zwischen dem benachbarten Block und dem aktuellen Block kann auf einem Vergleich des zeitlichen Abstands zwischen Referenzbildern für den benachbarten Block bzw. für den aktuellen Block basieren. Zum Beispiel kann das Referenzbild für den benachbarten Block das zuvor kodierte Bild und das Referenzbild für den aktuellen Block ein vor dem zuvor kodierten Bild kodiertes Bild sein, wobei die Differenz nach der Anzahl der Bilder oder dem zeitlichen Abstand zwischen den Referenzbildern gemessen werden kann.
  • Sowohl der benachbarte Block als auch der aktuelle Block können entsprechend einer Interprädiktion vorhergesagt werden, wobei die Größe der Überlappungsregion der gewichteten Funktion in diesem Fall nach der oben gegebenen Beschreibung erfolgen kann. Entweder der benachbarte Block oder der aktuelle Block können entsprechend einer Intraprädiktion vorhergesagt werden, wobei der jeweils andere entsprechend einer Interprädiktion vorhergesagt wird. In diesem Fall kann ein brauchbarer Vergleich der Prädiktionsparameter vielleicht nicht zur Verfügung stehen. Wenn ein Vergleich der Prädiktionsparameter nicht zur Verfügung steht, kann die gewichtete Funktion eine Überlappungsregionsgröße entsprechend einer vorbestimmten Funktion der aktuellen Blockgröße definieren. Zum Beispiel kann die Größe der Überlappungsregion als kleine Überlappungsregion definiert sein, zum Beispiel auf der Grundlage von ¼ der aktuellen Blocklänge. Als weiteres Beispiel kann die Größe der Überlappungsregion auf Null gesetzt oder keine Überlappungsregion bestimmt werden, denn die benachbarte Vorhersage kann als zu verschieden von der Vorhersage des aktuellen Blocks angesehen werden. In diesem letzteren Fall kann die Überlappungsvorhersage ausgelassen werden.
  • Eine definierte Überlappungsregionsgröße kann im Bereich von (0, 0), was keine Überlappungsregion bedeutet, bis x'×y' liegen, wobei diese Variablen die Größe des aktuellen Blocks angeben. Die gewichtete Funktion für die Überlappungsvorhersage kann die definierte Überlappungsregionsgröße anhand einer Differenz zwischen den Prädiktionsparametern anpassen. Zum Beispiel können bei einer Überlappungsregion wie der Überlappungsregion 732 in 7 Bewegungsvektorwerte des benachbarten Blocks 722 ähnlich den Bewegungsvektorwerten des aktuellen Blocks variieren, zum Beispiel des aktuellen Blocks 720, siehe 7. Entsprechend kann die Größenanpassung an die definierte Überlappungsgröße ausgelassen werden. Als weiteres Beispiel können die Bewegungsvektorwerte eines benachbarten Blocks, zum Beispiel des benachbarten Block 722 in 7, von den Bewegungsvektorwerten eines aktuellen Blocks verschieden sein, zum Beispiel des aktuellen Blocks 720 in 7, wobei die Differenz einen aufgestellten Schwellenwert überschreiten kann. In diesem Fall kann die Größe der Überlappungsregion angepasst werden. Zum Beispiel kann die Überlappungsregion ausgedehnt werden, wie für Überlappungsregion 902 dargestellt, oder sie kann verkleinert werden, wie für Überlappungsregion 904 dargestellt, siehe B. Das Anpassen der Überlappungsregionsgröße anhand von Differenzen zwischen Prädiktionsparametern kann das Anpassen der gewichteten Funktion der Überlappungsvorhersage in solcher Weise umfassen, dass die gewichtete Funktion zugunsten des Beitrags der Prädiktionsparameter des aktuellen Blocks oder der Prädiktionsparameter des benachbarten Blocks gewichtet wird, je nachdem, welche Prädiktionsparameter die Überlappungsvorhersage des aktuellen Blocks optimieren. Zum Beispiel kann die gewichtete Funktion einen Beitrag der Prädiktionsparameter des benachbarten Blocks für einige Pixel im aktuellen Block mit Null Wichten, indem mindestens eine Abmessung der Überlappungsregion geringer als eine entsprechende Abmessung des aktuellen Blocks eingestellt wird.
  • Eine Überlappungsregion kann unter der Bedingung ausgelassen werden, dass die Differenz zwischen Prädiktionsparameter des aktuellen Blocks und des benachbarten Blocks einen Schwellenwert überschreitet (d. h. die Größe der überlappungsregion ist 0×0). Eine Überlappungsregion kann unter der Bedingung ausgelassen werden, dass nur eine geringe oder gar keine Differenz zwischen den Prädiktionsparametern des aktuellen Blocks und des benachbarten Blocks besteht. Zum Beispiel kann die Vorhersage für den aktuellen Block im wesentlichen gleich der Vorhersage für den benachbarten Block sein, wobei die Differenz zwischen den Prädiktionsparameter geringer als ein Mindestschwellenwert sein und die Größe der Überlappungsregion 0×0 betragen kann.
  • Eine Basisprädiktion für den aktuellen Block 720 kann mit Prädiktionsparametern für den aktuellen Block 720 bestimmt werden. Die Basisprädiktion kann dann die Basisvorhersage für jede der Überlappungsregionen 731734 sein. Zum Beispiel kann für den gesamten aktuellen Block ein Basisprädiktionsblock so bestimmt werden, dass Pixelwerte für den Basisprädiktionsblock zum späteren Gebrauch gespeichert werden können, wenn die Überlappungsvorhersage für die einzelnen Pixel in den Überlappungsregionen des aktuellen Blocks 720 bestimmt wird.
  • Für jede der Überlappungsregionen, zum Beispiel die Überlappungsregionen 731734 in 7 kann eine Vorhersage anhand von Prädiktionsparametern des mit der Überlappungsregion verbundenen benachbarten Blocks bestimmt werden. Zum Beispiel wird eine Vorhersage für die Pixel in einer Überlappungsregion wie der Überlappungsregion 732 in 7 mit Prädiktionsparametern bestimmt, die das entsprechende Referenzbild und Bewegungsvektoren für einen benachbarten Block umfassen, wie den benachbarten Block 722 in 7.
  • Eine Überlappungsvorhersage kann für eine oder mehrere Überlappungsregionen, zum Beispiel die Überlappungsregionen 731734 in 7 als gewichtete Funktion der Basisvorhersage und von Vorhersagen anhand der entsprechenden benachbarten Prädiktionsparameter bestimmt werden. Zum Beispiel wird eine Überlappungsvorhersage für die einzelnen Pixel in einer Überlappungsregion wie der Überlappungsregion 732 in 7 als Mittel des Basisvorhersagewerts und von Vorhersage-Pixelwerten, die aufgrund der entsprechenden benachbarten Prädiktionsparameter erzeugt wurden, bestimmt. Es kann für ein Pixel im aktuellen Block mehr als eine Überlappungsregion geben. Zum Beispiel können zwei oder mehr benachbarte Überlappungsregionen einander überlappen, wie die Überlappungsregionen 731, 732 und 733 in 7, wobei die Überlappungsvorhersage als Mittel aus der Basisvorhersage anhand der Prädiktionsparameter für den aktuellen Block und n Vorhersagen anhand der jeweiligen Prädiktionsparameter für jeden der mit den Überlappungsregionen verbundenen n benachbarten Blöcke bestimmt wird. Zum Beispiel entsprechen in 7 Pixel in beiden Überlappungsregionen 731 und 734 zwei Vorhersagen aufgrund der entsprechenden benachbarten Prädiktionsparameter (d. h. n = 2), die mit der Basisvorhersage gemittelt werden können, um die Überlappungsvorhersage zu bestimmen. Jedes Pixel in der Überlappungsregion 731 kann als Mittel einer Basisvorhersage mit den Prädiktionsparametern des aktuellen Blocks 720, einer Vorhersage aufgrund der Prädiktionsparameter des benachbarten Blocks 721 und einer Vorhersage auf der Grundlage von Prädiktionsparameter des benachbarten Blocks 724 bestimmt werden.
  • Die gewichtete Funktion für die Überlappungsvorhersage kann eine Funktion des Abstands zwischen dem Mittelpunkt des aktuellen Blocks und dem Mittelpunkt eines mit der Überlappungsregion verbundenen benachbarten Blocks sein. Zum Beispiel kann die gewichtete Funktion eine Überlappungsvorhersage bestimmen, die benachbarte Blöcke von kleinerer Größe bevorzugt, wozu Pixel gehören, die im Durchschnitt näher am aktuellen Block als an einem größeren benachbarten Block liegen, und daher zuverlässiger sein und eine bessere Vorhersage des aktuellen Blocks liefern können. Zum Beispiel misst die gewichtete Funktion der Überlappungsregion 732 einen größeren Beitrag zur Überlappungsvorhersage des aktuellen Blocks 720 als der größeren Überlappungsregion 734 zu, denn der Mittelpunkt des benachbarten Blocks 722 liegt im Vergleich zum Mittelpunkt des benachbarten Blocks 724 näher am Mittelpunkt des aktuellen Blocks 720.
  • 9 ist ein Blockdiagramm einer gewichteten Funktion für eine Überlappungsblockprädiktion gemäß den Implementierungen dieser Offenbarung. Die Überlappungsvorhersage kann durch ein gewichtetes Mittel der ersten Vorhersage und der n benachbarten blockbasierten Vorhersagen optimiert werden. Zum Beispiel gibt P0 die Vorhersage mit Prädiktionsparametern des aktuellen Blocks, ω0 das Gewicht für die Vorhersage P0, Pn die Vorhersage mit Prädiktionsparameter des benachbarten Blocks, ωn das Gewicht für die Vorhersage Pn an, wobei die Gewichtung der Überlappungsprädiktion OP von Pixel 952 in Form der folgenden Gleichung (1) ausgedrückt wird:
    Figure DE202016008191U1_0002
  • Ein oder mehrere vorhergesagte Pixelwerte bei jedem Pixel in einer Überlappungsregion können gemäß einer gewichteten Funktion auf der Grundlage der relativen Pixelposition in Bezug auf den mit der Überlappungsregion verbundenen benachbarten Block gewichtet werden. Zum Beispiel kann die Überlappungsvorhersage so gewichtet werden, dass ein Beitrag durch die Vorhersage auf der Basis von Prädiktionsparametern des benachbarten Blocks größer ist, wenn sich das Pixel relativ näher am benachbarten Block befindet. Zum Beispiel hat Pixel 952 in Überlappungsregion 734 in 9 einen relativen Abstand 954 zum Mittelpunkt des entsprechenden benachbarten Blocks 724 und einen relativen Abstand 955 zum Mittelpunkt des aktuellen Blocks 720. Die Überlappungsvorhersagegewichte ω0, ωn sind eine Funktion der relativen Abstände 954, 955. Zum Beispiel gibt d0 den relativen Abstand vom Pixel zum Mittelpunkt des aktuellen Blocks, dn den relativen Abstand vom Pixel zum Mittelpunkt des benachbarten Blocks n, und die gewichtete Funktion ist eine Proportion der relativen Abstandswerte, die in Form der folgenden Gleichungen (2) und (3) ausgedrückt werden kann:
    Figure DE202016008191U1_0003
  • Die Überlappungsvorhersagegewichte ω0, ωn können eine Funktion eines relativen gerichteten Abstands zwischen dem Pixel und der Grenze zwischen dem benachbarten Block und dem aktuellen Block, zum Beispiel des horizontalen relativen Abstands 964 für den links angrenzenden Block 724 sein. Zum Beispiel kann die gewichtete Funktion auf einer Kosinusquadrat-Fensterfunktion basieren, in der die Gewichte ω0, ωn für ein Pixel an der angrenzenden Kante der Überlappungsregion n gleich sind, und ω0 = 1, ωn = 0 für ein Pixel gilt, das sich an der Kante der am weitesten vom Block n entfernten Überlappungsregion befindet. Als weiteres Beispiel können die Überlappungsvorhersagegewichte ω0, ωn eine Funktion eines vertikalen relativen Abstands zwischen dem Pixel und der nächstgelegenen Kante des benachbarten Blocks, zum Beispiel der vertikale relative Abstand 963 für Pixel 953 in Bezug auf den oben angrenzenden Block 723 sein.
  • Die Art der für die Überlappungsvorhersage verwendeten gewichteten Funktion kann mit einem Index kodiert sein, zum Beispiel durch den Kodierer 400 in 4 und im komprimierten Video-Bitstrom enthalten sein, zum Beispiel als komprimierter Video-Bitstrom 404 in 4. Der Index ist eine Angabe zum Dekodieren der für die Überlappungsvorhersage zu verwendenden gewichteten Funktion, zum Beispiel durch den Dekodierer 500 in 5. Zum Beispiel können verschiedene Kosinusquadrat-Gewichtungen einem ersten Satz von Indizes und verschiedene gewichtete Funktionen auf der Basis eines relativen Abstands zu Blockmittelpunkten einem zweiten Satz von Indizes zugeordnet sein.
  • Die gewichtete Funktion für die Überlappungsvorhersage keine eine Kombination von beliebigen oder allen gewichteten Funktionen sein, die in dieser Offenbarung beschrieben sind. Zum Beispiel kann die gewichtete Funktion zum Wichten der Überlappungsvorhersage nach der adaptiven Anpassung der Überlappungsregionsgröße, nach der Gewichtung der einzelnen Basisvorhersagen und Überlappungsvorhersagen für den aktuellen Block oder nach einer Kombination davon implementiert sein.
  • Die Wörter „Beispiel” und „Aspekt” werden hier so verwendet, dass sie als Beispiel oder Illustration dienend bedeuten. Ein Aspekt oder Design, der/das hier als „Beispiel” oder „Aspekt” beschrieben wird, ist nicht notwendigerweise als vorteilhaft oder bevorzugt gegenüber anderen Aspekten oder Designs auszulegen. Vielmehr soll der Gebrauch der Wörter „Beispiel” oder „exemplarisch” Konzepte auf eine konkrete Art und Weise darstellen. Wie in dieser Anmeldung verwendet, ist der Begriff „oder” eher als ein integratives „oder” als ein exklusives „oder” zu verstehen. Das heißt, sofern nicht anders angegeben oder klar aus dem Kontext hervorgeht, „beinhaltet X A oder B” und ist als eine der natürlichen inklusiven Permutationen zu verstehen. Das heißt, wenn X A beinhaltet; beinhaltet X B; oder wenn X sowohl A als auch B beinhaltet, beinhaltet „X A oder B” unter Bezug auf ein beliebiges vorstehendes Beispiel. Zusätzlich sollten die in dieser Anmeldung und den anhängenden Ansprüchen verwendeten Artikel „ein” und „eine” im Allgemeinen als „ein” oder „eine” verstanden werden, sofern nichts Anderes angegeben oder klar aus dem Zusammenhang zu einer singulären Form abgeleitet werden kann. Außerdem bedeutet der Gebrauch des Begriffs „eine Ausführungsform” oder „eine Implementierung” nicht, dass dieselbe Ausführungsform oder Implementierung gemeint ist, wenn dies nicht so beschrieben wird. Wie hierin verwendet, beinhalten die Begriffe „ermitteln” und „identifizieren” oder beliebige Variationen davon, das Auswählen, Ermitteln, Berechnen, Nachschlagen, Empfangen, Bestimmen, Festlegen, Erhalten oder anderweitiges Identifizieren oder Bestimmen in irgendeiner Weise unter Verwendung einer oder mehrerer der in 1.
  • Weiterhin können zur Vereinfachung der Erläuterung, obwohl die Figuren und Beschreibungen hierin Sequenzen oder eine Reihe von Schritten oder Stufen beinhalten können, Elemente der hierin offenbarten Verfahren in verschiedenen Reihenfolgen und/oder gleichzeitig auftreten. Zusätzlich können Elemente der hierin offenbarten Verfahren mit anderen Elementen auftreten, die hier nicht explizit dargestellt und beschrieben sind. Darüber hinaus können nicht alle Elemente der hierin beschriebenen Verfahren erforderlich ein Verfahren in Übereinstimmung mit dem offenbarten Gegenstand zu implementieren.
  • Implementierungen von Sendestation 100A und/oder Empfangsstation 100B (und die darauf gespeicherten und/oder ausgeführten Algorithmen, Verfahren, Anweisungen usw.) können in Hardware, Software oder einer beliebigen Kombination davon verwirklicht werden. Die Hardware kann beispielsweise Computer, Intellectual Property (IP) Kerne, anwendungsspezifische integrierte Schaltkreise (ASICs), programmierbare Logikarrays, optische Prozessoren, programmierbare Logiksteuerungen, Mikrocodes, Mikrocontroller, Server, Mikroprozessoren und digitale Signalprozessoren oder jede andere geeignete Schaltung beinhalten. In den Ansprüchen sollte der Begriff „Prozessor” als jede der vorgenannten Hardware entweder einzeln oder in Kombination verstanden werden. Die Begriffe „Signal” und „Daten” werden austauschbar verwendet. Weiterhin müssen Teile der Sendestation 100A und der Empfangsstation 100B nicht notwendigerweise auf die gleiche Weise implementiert werden.
  • Weiterhin können z. B. in einem Aspekt die Sendestation 100A oder die Empfangsstation 100B mit einem Computerprogramm implementiert werden, das bei seiner Ausführung jegliche der hier beschriebenen Verfahren, Algorithmen und/oder Anweisungen ausführt. Zusätzlich oder alternativ kann beispielsweise ein spezieller Computer/Prozessor verwendet werden, der spezialisierte Hardware zur Durchführung eines der hierin beschriebenen Verfahren, Algorithmen oder Anweisungen beinhalten kann.
  • Die Sendestation 100A und die Empfangsstation 100B können z. B. auf Computern in einem Videokonferenzsystem implementiert werden. Alternativ kann die Sendestation 100A auf einem Server und die Empfangsstation 100B kann auf einem vom Server getrennten Gerät implementiert werden, z. B. einem Handkommunikationsgerät. In diesem Fall kann die Sendestation 100A den Inhalt mit einem Kodierer 400 in ein kodiertes Videosignal kodieren und das kodierte Videosignal an das Kommunikationsgerät übertragen. Das Kommunikationsgerät wiederum kann dann das kodierte Videosignal mit einem Decoder 500 dekodieren. Alternativ kann das Kommunikationsgerät den Inhalt dekodieren, der lokal auf dem Kommunikationsgerät gespeichert ist, z. B. Inhalt, der nicht von der Sendestation 100A übertragen wurde. Andere geeignete Implementierungsschemata für die Sendestation 100A und Empfangsstation 100B sind verfügbar. So kann beispielsweise die Empfangsstation 100B im Allgemeinen ein stationärer PC sein anstatt eines mobilen Kommunikationsgerätes, und/oder ein Gerät, das einen Kodierer 400 einschließt, kann auch einen Decoder 500 beinhalten.
  • Ferner können alle oder ein Teil der Implementierungen die Form eines Computerprogrammprodukts annehmen, das zum Beispiel von einem greifbaren computerverwendbaren oder computerlesbaren Medium zugänglich ist. Ein computerverwendbares oder computerlesbares Medium kann jedes Gerät sein, das zum Beispiel das Programm zur Verwendung durch oder in Verbindung mit einem beliebigen Prozessor fassbar beinhalten, speichern, kommunizieren oder transportieren kann. Das Medium kann beispielsweise ein elektronisches, magnetisches, optisches, elektromagnetisches oder eine Halbleitervorrichtung sein. Es sind auch andere geeignete Medien verfügbar.
  • Die vorstehend beschriebenen Implementierungen wurden beschrieben, ein leichtes Verständnis der Anwendung zu ermöglichen und sind nicht einschränkend. Im Gegenteil deckt die Anmeldung verschiedene Modifikationen und äquivalente Anordnungen, die in den Schutzumfang der beigefügten Ansprüche fallen ab, wobei dem Umfang die breiteste Auslegung zugestanden werden soll, um alle Modifikationen und äquivalenten Strukturen, die nach dem Gesetz zulässig sind, zu umfassen.

Claims (20)

  1. Computergerät zum Kodieren von Einzelbildern eines Videostreams, umfassend: eine Einheit zum Kodieren eines aktuellen Blocks eines aktuellen Einzelbildes durch einen Prozessor in Reaktion auf Anweisungen, die auf einem nichtflüchtigen computerlesbaren Medium gespeichert sind, wobei das Kodieren Folgendes umfasst: eine Einheit zum Erzeugen eines Basisprädiktionsblocks für den aktuellen Block auf der Grundlage von aktuellen Prädiktionsparametern, die mit dem aktuellen Block verbunden sind; eine Einheit zum Erkennen benachbarter Prädiktionsparameter, die zum Kodieren von zuvor kodierten benachbarten Blöcken, die an den aktuellen Block angrenzen, verwendet wurden, wobei mindestens eine Seite des aktuellen Blocks an zwei oder mehr der zuvor kodierten benachbarten Blöcke angrenzt; eine Einheit zum Bestimmen von Überlappungsregionen im aktuellen Block, wobei jede der Überlappungsregionen einem jeweiligen zuvor kodierten benachbarten Block entspricht; und eine Einheit zum Erzeugen einer Überlappungsvorhersage von Pixelwerten für die einzelnen Überlappungsregionen gemäß einer gewichteten Funktion des Basisprädiktionsblocks und einer Vorhersage anhand von benachbarten Prädiktionsparametern, wobei die gewichtete Funktion auf einer Differenz zwischen den aktuellen Prädiktionsparametern und den benachbarten Prädiktionsparametern basiert.
  2. Computergerät nach Anspruch 1, des Weiteren umfassend: eine Einheit zum Erkennen von benachbarten Prädiktionsparametern, die für die Kodierung einer Vielzahl von zuvor kodierten benachbarten Blöcken variabler Größe verwendet wurden; eine Einheit zum Bestimmen einer Überlappungsregion im aktuellen Block und angrenzend an den benachbarten Block für jeden zuvor kodierten benachbarten Block, wobei die Überlappungsregion eine der Größe des aktuellen Blocks und des benachbarten Blocks entsprechende Größe hat.
  3. Computergerät nach Anspruch 1 oder 2, weiterhin umfassend eine Einheit zum Kodieren eines Indexes, der eine Überlappungsvorhersage für den aktuellen Block angibt.
  4. Computergerät nach Anspruch 3, wobei der Index Informationen zum Typ der gewichteten Funktion beinhaltet, darunter entweder eine Proportion für den relativen Abstand eines Pixels zu einem Mittelpunkt des aktuellen Blocks und einem Mittelpunkt des benachbarten Blocks, oder eine Kosinusquadrat-Fensterfunktion für den relativen Abstand des Pixels zum benachbarten Block.
  5. Computergerät nach einem der Ansprüche 1 bis 4, weiterhin umfassend eine Einheit zum Bestimmen von Gewichten für die gewichtete Funktion als Funktion des Abstands zwischen jedem entsprechenden Pixel und einer Grenze zwischen dem aktuellen Block und dem benachbarten Block.
  6. Computergerät nach einem der Ansprüche 1 bis 5, weiterhin umfassend eine Einheit zum Bestimmen von Gewichten für die gewichtete Funktion als Funktion des Abstands zwischen jedem entsprechenden Pixel und dem Mittelpunkt des aktuellen Blocks sowie des Abstands zwischen jedem entsprechenden Pixel und dem Mittelpunkt des benachbarten Blocks.
  7. Computergerät nach einem der Ansprüche 1 bis 6, des Weiteren umfassend: eine Einheit zum Erzeugen von Überlappungsvorhersagen für jeden zuvor kodierten benachbarten Block mit mindestens zwei diskreten Überlappungsregionsgrößen; eine Einheit zum Bestimmen von Ratenverzerrungskosten für jede der Überlappungsvorhersagen; eine Einheit zum Auswählen einer Überlappungsregionsgröße für alle Überlappungsvorhersagen anhand der Ratenverzerrungskostenoptimierung; eine Einheit zum Kodieren eines gewichteten Funktionsindexes, der die ausgewählte Überlappungsregionsgröße angibt.
  8. Computergerät nach einem der Ansprüche 1 bis 7, des Weiteren umfassend: eine Einheit zum Erzeugen eines Überlappungsprädiktionsblocks auf der Grundlage von allen Überlappungsvorhersagen im aktuellen Block; und eine Einheit zum Auswählen eines Prädiktionsblocks für den aktuellen Block als einen der Basisprädiktionsblöcke oder des Überlappungsprädiktionsblocks danach, welcher Block geringere Restwerte erzeugt.
  9. Computergerät nach einem der Ansprüche 1 bis 8, wobei die gewichtete Funktion eine Größe für die Überlappungsregion bestimmt.
  10. Computergerät nach einem der Ansprüche 1 bis 9, wobei die gewichtete Funktion einen größeren Beitrag von einem kleineren benachbarten Block für die Überlappungsvorhersage beinhaltet.
  11. Computergerät, umfassend: eine Einheit zum Kodieren eines aktuellen Blocks in einem aktuellen Bild eines Videostreams, umfassend: eine Einheit zum Bestimmen einer ersten Überlappungsregion im aktuellen Block und angrenzend an einen zuvor kodierten ersten benachbarten Block, wobei mindestens eine Seite des aktuellen Blocks an zwei oder mehr der zuvor kodierten benachbarten Blöcke angrenzt; und eine Einheit zum Erzeugen einer Überlappungsvorhersage von Pixelwerten in der ersten Überlappungsregion als gewichtete Funktion von: einer ersten Vorhersage mit ersten Prädiktionsparameter des aktuellen Bildes, und einer zweiten Vorhersage mit zweiten Prädiktionsparametern des ersten benachbarten Blocks, wobei die gewichtete Funktion durch eine Funktion einer Differenz zwischen den ersten Prädiktionsparametern und den zweiten Prädiktionsparametern anpassbar ist.
  12. Computergerät nach Anspruch 11, wobei die ersten Prädiktionsparameter Bewegungsvektoren beinhalten, die einem Referenzbild für das aktuelle Einzelbild entsprechen, und die zweiten Prädiktionsparameter Bewegungsvektoren beinhalten, die für die Vorhersage des ersten benachbarten Blocks verwendet werden, und die Differenz auf Bewegungsvektorwerten basiert.
  13. Computergerät nach Anspruch 11 oder 12, wobei die Funktion eine Differenz auf dem zeitlichen Abstand zwischen einem Referenzbild des aktuellen Blocks und einem Referenzbild des ersten benachbarten Blocks basiert.
  14. Computergerät nach einem der Ansprüche 11 bis 13, des Weiteren umfassend: eine Einheit zum Definieren einer zweiten Überlappungsregion im aktuellen Block und angrenzend an den zweiten benachbarten Block, wobei die zweite Überlappungsregion eine der Größe des zweiten benachbarten Blocks entsprechende Größe hat, wobei der zweite benachbarte Block mit dritten Prädiktionsparametern kodiert wird; und eine Einheit zum Erzeugen einer Vorhersage der zweiten Überlappungsregion als Funktion der ersten Vorhersage und einer dritten Vorhersage unter Verwendung der dritten Prädiktionsparameter aus dem zweiten benachbarten Block.
  15. Computergerät nach Anspruch 14, wobei mindestens ein Teil der ersten Überlappungsregion mindestens einen Teil der zweiten Überlappungsregion überlappt, um eine vierte Überlappungsregion zu bilden, wobei das Computergerät weiterhin Folgendes umfasst: eine Einheit zum Erzeugen einer Vorhersage der vierten Überlappungsregion als Funktion der ersten Vorhersage, der zweiten Vorhersage unter Verwendung der zweiten Prädiktionsparameter aus dem benachbarten Block und der dritten Vorhersage unter Verwendung der dritten Prädiktionsparameter aus dem zweiten benachbarten Block.
  16. Computergerät zum Kodieren eines aktuellen Blocks des aktuellen Bildes in einer Vielzahl von Bildern eines Videostreams, umfassend: eine Einheit zum Erzeugen eines ersten Prädiktionsblocks von Pixelwerten im aktuellen Block auf der Grundlage einer ersten Vorhersage unter Verwendung erster Prädiktionsparameter; eine Einheit zum Definieren einer Überlappungsregion im aktuellen Block und angrenzend an einen benachbarten Block unter einer Vielzahl von zuvor kodierten Blöcken mit variabler Größe, wobei mindestens eine Seite des aktuellen Blocks an zwei oder mehr der zuvor kodierten benachbarten Blöcke angrenzt; und eine Einheit zum Erzeugen einer aktualisierten Vorhersage von Pixelwerten für Pixel in der Überlappungsregion, wobei die aktualisierte Vorhersage eine gewichtete Funktion der ersten Vorhersage und einer zweiten Vorhersage ist, wobei die zweite Vorhersage auf zweiten Prädiktionsparametern basiert, wobei die gewichtete Funktion durch eine Funktion einer Differenz zwischen den ersten Prädiktionsparametern und den zweiten Prädiktionsparametern anpassbar ist.
  17. Computergerät nach Anspruch 16, des Weiteren umfassend: eine Einheit zum Erzeugen eines Überlappungsprädiktionsblocks auf der Grundlage einer Vielzahl von aktualisierten Vorhersagen im aktuellen Block, die Überlappungsregionen entsprechen, die für zuvor kodierte oben angrenzende Blöcke und zuvor kodierte links angrenzende Blöcke definiert wurden; und eine Einheit zum Erzeugen eines Prädiktionsblocks für den aktuellen Block als entweder der erste Prädiktionsblock oder der Überlappungsprädiktionsblock je nachdem, welcher Block geringere Restwerte erzeugt.
  18. Computergerät nach Anspruch 16 oder 17, weiterhin umfassend eine Einheit zum Gewichten der aktualisierten Vorhersage, sodass der Beitrag durch die zweite Vorhersage größer ist, wenn sich das Pixel relativ näher am benachbarten Block befindet.
  19. Computergerät nach Anspruch 16 oder 17, wobei die gewichtete Funktion Gewichte für die erste Vorhersage und die zweite Vorhersage umfasst, wobei die Gewichte als Funktion des Abstands zwischen jedem entsprechenden Pixel und einer Grenze zwischen dem aktuellen Block und dem benachbarten Block bestimmt werden.
  20. Computergerät nach Anspruch 16 oder 17, wobei Gewichte für die Pixelwerte der ersten Vorhersage und der zweiten Vorhersage als Funktion des Abstands zwischen jedem entsprechenden Pixel und dem Mittelpunkt des aktuellen Blocks und Gewichte für jeden der Pixelwerte der zweiten Vorhersage als Funktion des Abstands zwischen jedem entsprechenden Pixel und dem Mittelpunkt des benachbarten Blocks bestimmt werden.
DE202016008191.9U 2016-06-06 2016-12-23 Adaptive Überlappungsblockprädiktion bei Videokodierung mit variabler Blockgröße Active DE202016008191U1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/174,223 US10567793B2 (en) 2016-06-06 2016-06-06 Adaptive overlapped block prediction in variable block size video coding
US15/174,223 2016-06-06

Publications (1)

Publication Number Publication Date
DE202016008191U1 true DE202016008191U1 (de) 2017-04-27

Family

ID=57794394

Family Applications (2)

Application Number Title Priority Date Filing Date
DE202016008191.9U Active DE202016008191U1 (de) 2016-06-06 2016-12-23 Adaptive Überlappungsblockprädiktion bei Videokodierung mit variabler Blockgröße
DE102016125535.1A Pending DE102016125535A1 (de) 2016-06-06 2016-12-23 Adaptive Überlappungsblockprädiktion bei Videokodierung mit variabler Blockgröße

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE102016125535.1A Pending DE102016125535A1 (de) 2016-06-06 2016-12-23 Adaptive Überlappungsblockprädiktion bei Videokodierung mit variabler Blockgröße

Country Status (5)

Country Link
US (1) US10567793B2 (de)
CN (1) CN107465923B (de)
DE (2) DE202016008191U1 (de)
GB (1) GB2551234B (de)
WO (1) WO2017213700A1 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10390033B2 (en) * 2016-06-06 2019-08-20 Google Llc Adaptive overlapped block prediction in variable block size video coding
CN110337811A (zh) * 2018-02-14 2019-10-15 北京大学 运动补偿的方法、装置和计算机系统
CN112055965A (zh) * 2018-04-04 2020-12-08 日本放送协会 预测图像校正装置、图像编码装置、图像解码装置以及程序
KR102582887B1 (ko) * 2018-07-06 2023-09-25 미쓰비시덴키 가부시키가이샤 동화상 부호화 장치, 동화상 복호 장치, 동화상 부호화 방법 및 동화상 복호 방법
CN111507903B (zh) * 2020-04-16 2021-05-11 鲁东大学 基于五曲面片加权平均拟合的图像放大方法和装置

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2853553B2 (ja) * 1994-02-22 1999-02-03 日本電気株式会社 動画像符号化方式
US7653133B2 (en) * 2003-06-10 2010-01-26 Rensselaer Polytechnic Institute (Rpi) Overlapped block motion compression for variable size blocks in the context of MCTF scalable video coders
JP2010524383A (ja) * 2007-04-09 2010-07-15 エルジー エレクトロニクス インコーポレイティド ビデオ信号処理方法及び装置
CN101046964B (zh) * 2007-04-13 2011-09-14 清华大学 基于重叠变换压缩编码的错误隐藏帧重建方法
WO2010017166A2 (en) * 2008-08-04 2010-02-11 Dolby Laboratories Licensing Corporation Overlapped block disparity estimation and compensation architecture
EP2555523A4 (de) * 2010-03-31 2016-05-11 Mitsubishi Electric Corp Bildverschlüsselungsvorrichtung, bildentschlüsselungsvorrichtung, bildverschlüsselungsverfahren und bildentschlüsselungsverfahren
EP2375744A1 (de) 2010-04-12 2011-10-12 Panasonic Corporation Komplexitätsverringerung zur 1/8-Pel-Interpolation
CN102256126A (zh) * 2011-07-14 2011-11-23 北京工业大学 混合图像的编码方法
US11303900B2 (en) 2013-12-06 2022-04-12 Mediatek Inc. Method and apparatus for motion boundary processing
US9813730B2 (en) * 2013-12-06 2017-11-07 Mediatek Inc. Method and apparatus for fine-grained motion boundary processing
CN104079937B (zh) * 2014-07-16 2017-06-23 山东大学 一种基于运动矢量分析的由h.264到hevc的快速帧间转码方法及转码装置
US10250904B2 (en) 2015-05-05 2019-04-02 Avago Technologies International Sales Pte. Limited Apparatus and method for overlapped motion compensation for video coding
US10390033B2 (en) * 2016-06-06 2019-08-20 Google Llc Adaptive overlapped block prediction in variable block size video coding
US10419777B2 (en) * 2016-12-22 2019-09-17 Google Llc Non-causal overlapped block prediction in variable block size video coding

Also Published As

Publication number Publication date
DE102016125535A1 (de) 2017-12-07
GB201621884D0 (en) 2017-02-01
GB2551234A (en) 2017-12-13
GB2551234B (en) 2020-09-30
US10567793B2 (en) 2020-02-18
WO2017213700A1 (en) 2017-12-14
US20170353735A1 (en) 2017-12-07
CN107465923B (zh) 2020-09-25
CN107465923A (zh) 2017-12-12

Similar Documents

Publication Publication Date Title
DE102016125125B4 (de) Tile-Copying für Videokompression
US10848765B2 (en) Rate/distortion/RDcost modeling with machine learning
US10009625B2 (en) Low-latency two-pass video coding
DE202016008191U1 (de) Adaptive Überlappungsblockprädiktion bei Videokodierung mit variabler Blockgröße
US10554965B2 (en) Motion-compensated partitioning
DE202016008175U1 (de) Adaptive gerichtete Intra-Prädiktion mit Blockgröße
US9247251B1 (en) Right-edge extension for quad-tree intra-prediction
DE102016125539A1 (de) Adaptive überlappungsblockprädiktion bei videokodierung mit variabler blockgrösse
US10652552B1 (en) Efficient noise reduction coding
DE202016008155U1 (de) Hybrid-Prädiktionsmodi zur Kodierung von Videos
US20170237939A1 (en) Loop filtering for multiform transform partitioning
DE202016008207U1 (de) Kodierinterpolationsfilter
EP3198555B1 (de) Rauschunterdrückung im frequenzbereich
DE112015005159B4 (de) Kodierung im alternierenden blockbeschränkten entscheidungsmodus
US11394972B2 (en) Method and device for encoding/decoding video signal by using optimized conversion based on multiple graph-based model
KR102294438B1 (ko) 듀얼 디블로킹 필터 임계값들
US11503292B2 (en) Method and apparatus for encoding/decoding video signal by using graph-based separable transform
WO2024005777A1 (en) Circular-shift transformation for image and video coding

Legal Events

Date Code Title Description
R207 Utility model specification
R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: GOOGLE INC., MOUNTAIN VIEW, CALIF., US

R082 Change of representative

Representative=s name: BETTEN & RESCH PATENT- UND RECHTSANWAELTE PART, DE

R150 Utility model maintained after payment of first maintenance fee after three years
R151 Utility model maintained after payment of second maintenance fee after six years