DE102016125539A1 - Adaptive überlappungsblockprädiktion bei videokodierung mit variabler blockgrösse - Google Patents

Adaptive überlappungsblockprädiktion bei videokodierung mit variabler blockgrösse Download PDF

Info

Publication number
DE102016125539A1
DE102016125539A1 DE102016125539.4A DE102016125539A DE102016125539A1 DE 102016125539 A1 DE102016125539 A1 DE 102016125539A1 DE 102016125539 A DE102016125539 A DE 102016125539A DE 102016125539 A1 DE102016125539 A1 DE 102016125539A1
Authority
DE
Germany
Prior art keywords
prediction
block
adjacent
overlap region
current block
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.)
Pending
Application number
DE102016125539.4A
Other languages
English (en)
Inventor
Yue Chen
Debargha Mukherjee
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 DE102016125539A1 publication Critical patent/DE102016125539A1/de
Pending legal-status Critical Current

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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • 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
    • 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/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/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • 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/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/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/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • 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
    • 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/573Motion compensation with multiple frame prediction using two or more reference frames in a given prediction direction
    • 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/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/86Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness

Landscapes

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

Abstract

Das Dekodieren eines aktuellen Blocks eines kodierten Videostreams umfasst das Generieren eines Basisprädiktionsblocks für den aktuellen Block auf der Grundlage von aktuellen, mit dem aktuellen Block verbundenen Prädiktionsparametern und das Erkennen benachbarter Prädiktionsparameter, die zum Dekodieren von zuvor dekodierten, an den aktuellen Block angrenzenden benachbarten Blöcken verwendet wurden, und das Bestimmen einer Überlappungsregion innerhalb des aktuellen Blocks und angrenzend an den benachbarten Block. Die Überlappungsregion hat eine Größe, die als Funktion einer Differenz zwischen den ersten Prädiktionsparametern und den zweiten Prädiktionsparametern des benachbarten Blocks bestimmt wird. Für jedes Pixel in der Überlappungsregion wird eine Überlappungsvorhersage eines Pixelwerts als Funktion der Basisvorhersage und einer auf den benachbarten Prädiktionsparametern basierenden Vorhersage erzeugt.

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.
  • Ein Aspekt der in diesem Dokument enthaltenen Lehren ist ein Verfahren zum Dekodieren von Einzelbildern eines kodierten Videostreams. Das Dekodieren eines aktuellen Blocks eines aktuellen Einzelbildes kann das Erzeugen einer Basisvorhersage für den aktuellen Block auf der Grundlage von aktuellen, mit dem aktuellen Block verbundenen Prädiktionsparametern, das Identifizieren von benachbarten Prädiktionsparametern, die zum Dekodieren eines zuvor dekodierten benachbarten, an den aktuellen Block angrenzenden Blocks verwendet wurden, und das Bestimmen einer Überlappungsregion innerhalb des aktuellen Blocks und angrenzend an den benachbarten Block umfassen, wobei die Überlappungsregion eine Größe hat, die als Funktion einer Differenz zwischen den aktuellen Prädiktionsparametern und den benachbarten Prädiktionsparametern bestimmt wird. Für jedes Pixel innerhalb der Überlappungsregion kann das Dekodieren das Erzeugen einer Überlappungsvorhersage eines Pixelwerts als Funktion der Basisvorhersage und einer auf den benachbarten Prädiktionsparametern basierenden Vorhersage umfassen.
  • Ein weiterer Aspekt der in diesem Dokument enthaltenen Lehren ist ein Verfahren zum blockbasierten Dekodieren einer Vielzahl von Einzelbildern eines komprimierten Videostreams. Das Dekodieren kann das Bestimmen einer ersten Überlappungsregion im aktuellen Block und angrenzend an einen zuvor dekodierten ersten benachbarten Block und das Erzeugen einer Vorhersage von Pixelwerten in der ersten Überlappungsregion als Funktion einer ersten Vorhersage mit ersten Prädiktionsparametern des aktuellen Einzelbildes und einer zweiten Vorhersage mit zweiten Prädiktionsparametern des ersten benachbarten Blocks umfassen. Die erste Überlappungsregion kann eine Größe haben, die durch eine Funktion einer Differenz zwischen den ersten Prädiktionsparametern und den zweiten Prädiktionsparametern anpassbar ist.
  • Ein weiterer Aspekt der in diesem Dokument enthaltenen Lehren ist ein Verfahren zum blockbasierten Dekodieren eines aktuellen Blocks einer Vielzahl von Blocks in einem aktuellen Einzelbild eines kodierten Videostreams. Das Verfahren kann das Erzeugen einer Vorhersage von Pixelwerten des aktuellen Blocks auf der Grundlage von ersten Prädiktionsparametern umfassen. Das Verfahren kann das Definieren einer Überlappungsregion im aktuellen Block und angrenzend an einen benachbarten Block aus einer Vielzahl von zuvor dekorierten Blocks umfassen. Die erste Überlappungsregion kann eine Größe haben, die als Differenzfunktion zwischen den ersten Prädiktionsparametern und den zweiten Prädiktionsparametern des benachbarten Blocks definiert ist. Das Verfahren kann das Erzeugen einer aktualisierten Vorhersage von Pixelwerten für jedes Pixel in der Überlappungsregion umfassen. Die aktualisierte Vorhersage kann eine Funktion der ersten Vorhersage und einer zweiten Vorhersage sein, wobei die zweite Vorhersage auf den zweiten Prädiktionsparametern basieren kann.
  • 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.
  • DETAILLIERTE 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 ursprünglichen Bilder aus den begrenzten Informationen neu zu erstellen. Die Angaben für jeden Block in der Ausgabe können durch eine Reduzierung der räumlichen Redundanz, eine Verringerung der zeitlichen Redundnnz oder eine Kombination davon eingeschränkt sein. 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 gezeigt beinhaltet eine Kommunikationsschnittstelle 110, eine Kommunikationseinheit 120, eine Benutzeroberfläche (UI) 130, einen Prozessor 140, einen Speicher 150, Anweisungen 160 und eine Stromquelle 170. Wie hier verwendet beinhaltet der Begriff „Computergerät” jede Einheit oder Kombination von Einheiten, die in der Lage ist, jedes der hier beschriebenen Verfahren oder Teile davon auszuführen.
  • Das Computergerät 100 kann ein stationäres Computergerät sein, z. B. ein PC, ein Server, eine Workstation, ein Minicomputer, ein Großrechner oder ein mobiles Computergerät, z. B. ein Mobiltelefon, ein Personal Digital Assistant (PDA), ein Laptop oder ein Tablet-PC. Obwohl als eine Einheit dargestellt, können ein oder mehrere Elemente des Kommunikationsgeräts 100 in eine beliebige Anzahl von separaten physikalischen Einheiten integriert werden. UI 130 und der Prozessor 140 können beispielsweise in eine erste physikalische Einheit integriert werden und der Speicher 150 kann in einer zweiten physischen Einheit integriert werden.
  • 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 ist zum Senden und Empfangen von Signalen über ein kabelgebundenes oder kabelloses Medium 180 konfiguriert. Zum Beispiel ist wie gezeigt die Kommunikationseinheit 120 operativ mit einer Antenne verbunden, die konfiguriert ist, um über Funksignale zu kommunizieren. Obwohl in 1 dargestellt, kann die Kommunikationseinheit 120 konfiguriert werden, um jedes kabelgebundene oder kabellose Kommunikationsmedium wie UV-Licht (UV), sichtbares Licht, Radiofrequenz (RF), Glasfaser, Kabel oder eine Kombination davon zu übertragen, zu empfangen oder beides. 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 enthält jede beliebige Einheit, die eine Schnittstelle mit dem Nutzer darstellt, z. B. eine virtuelle oder physische Tastatur, ein Touchpad, eine Anzeige, ein Touch-Display, ein Lautsprecher, ein Mikrofon, eine Videokamera, ein Sensor oder eine Kombination davon. Wie dargestellt, kann die UI 130 mit dem Prozessor oder mit einem beliebigen anderen Element des Kommunikationsgeräts 100, wie beispielsweise der Stromquelle 170, in Wirkverbindung stehen. Obwohl als eine Einheit dargestellt, kann die UI 130 eine oder mehrere physikalische Einheiten beinhalten. Beispielsweise kann die UI 130 eine Audio-Schnittstelle für die Durchführung von Audio-Kommunikationen mit einem Nutzer 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. Beispielsweise kann der Prozessor 140 einen Prozessor mit Sonderzweck, einen digitalen Signalprozessor (DSP), eine Vielzahl von Mikroprozessoren, einen oder mehrere Mikroprozessoren in Verbindung mit einem DSP-Kern, einen Controller, einen Mikrocontroller, eine anwendungsspezifische integrierte Schaltung (ASIC), ein Field Programmable Gate Array (FPGA), eine programmierbare logische Anordnung, eine speicherprogrammierbare Steuerung, einen Microcode, Firmware und jede Art von integrierter Schaltung (IC), eine Status-Maschine oder eine Kombination davon beinhalten. Wie hier verwendet beinhaltet der Begriff „Prozessor” einem einzigen 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 kann ein beliebiges nichtflüchtiges computerverwendbares oder computerlesbares Medium beinhalten, wie beispielsweise ein beliebiges physisches Gerät zur Verwendung durch oder in Verbindung mit dem Prozessor 140, das zum Beispiel Anweisungen 160 oder beliebige damit verbundene Informationen 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 Kombination davon realisiert werden. Beispielsweise können die Anweisungen 160 als Informationen implementiert werden, die in Speicher 150 gespeichert sind, wie ein Computerprogramm, das durch den Prozessor 140 zum Durchführen der jeweiligen Verfahren, Algorithmen, Aspekte oder Kombinationen davon wie hier beschrieben ausgeführt werden kann. Die Anweisungen 160 oder ein Teil davon können als Spezialprozessor oder Spezialschaltung implementiert werden, zu welchen eine spezielle Hardware gehört, die eine beliebige Anzahl der Methoden, Algorithmen, Aspekte oder Kombinationen davon enthalten kann, wie hierin beschrieben. Teile der Anleitung 160 können auf mehrere Prozessoren auf der gleichen oder auf verschiedenen Maschinen oder in einem Netzwerk wie einem LAN, einem WAN, dem Internet oder einer Kombination davon verteilt werden.
  • 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, das Kommunikationsgerät 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äß 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. Beispielsweise kann das Datenverarbeitungs- und Kommunikationssystem 200 ein Mehrfach-Zugangssystem sein, das ein oder mehrere verdrahtete oder drahtlose Kommunikationsgeräte wie die Computer- und Kommunikationsgeräte 100A/100b/100C mit Kommunikationen wie Sprache, Daten, Video, Nachrichten, Senden oder einer Kombination davon versorgt. 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 Endgeräte beschrieben werden und das Computer- und Kommunikationsgerät 100C als Server beschrieben wird, kann jedes Computer- und Kommunikationsgerät einige oder alle Funktionen eines Servers, einige oder alle Funktionen eines Endgeräts oder einige oder alle Funktionen eines Servers und eines Endgeräts durchführen.
  • Jedes Computer- und Kommunikationsgerät 100A/100B/100C kann für die Ausführung einer drahtgebundenen oder drahtlosen Kommunikation konfiguriert sein. Ein Computer- und Kommunikationsgerät 100A/100B/100C kann beispielsweise konfiguriert werden, um drahtgebundenen oder drahtlose Kommunikationssignale zu übertragen oder zu empfangen und kann ein Endgerät (UE), eine Mobilstation, eine feste oder mobile Teilnehmereinheit, ein Mobiltelefon, einen PC, einen Tabletcomputer, einen Server, 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. Ein Zugriffspunkt 210A/210B kann beispielsweise eine Basisstation, eine Basis-Transceiver-Station (BTS), einen Node-B, einen verbesserten Node-B (eNode B), einen Home-Node-B (HNode-B), einen drahtlosen Router, einen kabelgebundenen Router, einen Hub, ein Relais, einen Schalter oder jedes ähnliche drahtgebundene oder drahtlose Gerät beinhalten. Obwohl jeder Zugriffspunkt 210A/210B als einzelne Einheit angezeigt wird, kann ein Zugriffspunkt eine beliebige Anzahl miteinander verbundener Elemente enthalten.
  • 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. Zum Beispiel kann das Netzwerk 220 ein lokales Netzwerk (LAN) sein, ein Weitverkehrsnetz (WAN), ein virtuelles privates Netzwerk (VPN), ein Handy- oder Mobiltelefon-Netzwerk, das Internet oder ein anderes Mittel der elektronischen Kommunikation. Das Netzwerk kann ein Kommunikation-Protokoll verwenden wie beispielsweise das Transmission Control Protokoll (TCP), das User Datagram-Protokoll (UDP), das Internetprotokoll (IP), das Echtzeit-Transport-Protokoll (RTP), das Hyper Text Transport Protocol (HTTP) oder eine Kombination davon.
  • 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. Zum Beispiel kommunizieren die Computer- und Kommunikationsgeräte 100A/100B wie dargestellt über drahtlose Kommunikationsverbindungen 180A/180B, und Computer- und Kommunikationsgerät 100C kommuniziert über eine kabelgebundene Kommunikationsverbindung 180C. Jedes beliebige der Computer- und Kommunikationsgeräte 100A/100B/100C kann über eine kabelgebundene oder kabellose 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 der Kommunikation über das Netz 220 darstellt, können die Computer- und Kommunikationsgeräte 100A/100B/100C über eine beliebige Anzahl von Kommunikationsverbindungen miteinander kommunizieren, wie über direkt verdrahtete oder drahtlose Kommunikationsverbindungen.
  • 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 für den Einsatz bei der Kodierung und Dekodierung gemäß 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 beinhaltet eine Folge von nebeneinander liegenden Einzelbildern 320. Obwohl drei nebeneinanderliegende Einzelbilder 320 dargestellt werden, kann die Videosequenz 310 eine beliebige Anzahl von nebeneinanderliegenden Einzelbildern 320 beinhalten. Jedes Einzelbild 330 der nebeneinanderliegenden Einzelbildern 320 kann ein Einzelbild aus dem Videostrom darstellen. Ein Einzelbild 330 kann Blöcke 340 beinhalten. Obwohl in 3 nicht explizit dargestellt, beinhaltet ein Block Pixel. Beispielsweise kann ein Block eine 16×16-Pixelgruppe, eine 8×8-Pixelgruppe, eine 8×16-Pixelgruppe oder jede andere Pixelgruppe 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 Anzeigeinformationen beinhalten, wie beispielsweise Helligkeitsinformation, Farbinformation oder andere Informationen, die verwendet werden können, um den Videostream oder einen Teil davon zu speichern, zu verändern, oder zu kommunizieren.
  • 4 ist ein Blockdiagramm eines Encoders 400 gemäß Implementierungen dieser Offenbarung. Der Kodierer 400 kann in einem Gerät implementiert werden, zum Beispiel in einem Computer 100, wie in 1 dargestellt oder in den in 2 dargestellten Computer- und Kommunikationsgeräten 100A/100B/100C, wie zum Beispiel in einem Computer-Softwareprogramm, das in einem Datenspeichergerät 150 gespeichert ist, wie dem in 1. Das Computersoftwareprogramm kann Maschinenanweisungen beinhalten, die von einem Prozessor ausgeführt werden, wie dem Prozessor 140, der in 1 dargestellt ist, und kann das Gerät anweisen, die Videodaten wie hier beschrieben zu kodieren. Der Kodierer 400 kann als spezielle Hardware implementiert werden, 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 (dargestellt durch die unterbrochenen Verbindungslinien) für die Rekonstruktion eines Einzelbildes für die Kodierung von weiteren Blöcken beinhalten. 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 Videostrom 402 zu kodieren.
  • Zum Kodieren des Videostreams 402 kann jedes Bild innerhalb des Videostreams 402 in Einheiten von Blöcken verarbeitet werden. Somit kann ein aktueller Block aus den Blöcken in einem Einzelbild identifiziert werden, und der aktuelle Block kann kodiert werden.
  • In der Intra-/Inter-Prognoseeinheit 410 wird der aktuelle Block entweder anhand der Intraframe-Prognose, die innerhalb eines Einzelbildes realisiert werden kann, oder anhand einer Interframe-Prognose, die von Einzelbild zu Einzelbild realisiert werden kann, kodiert. Intra-Prognose kann beinhalten, dass ein Prognoseblock anhand von Stichproben im aktuellen Einzelbild erzeugt wird, die zuvor kodiert und rekonstruiert wurden. Die Inter-Vorhersage kann das Erzeugen eines Prädiktionsblocks von Abtastwerten in einer oder mehreren zuvor konstruierten Referenzbildern beinhalten. Die Erzeugung eines Prognoseblocks für einen aktuellen Block in einem aktuellen Einzelbild kann beinhalten, dass eine Bewegungsschätzung durchgeführt wird, um einen Bewegungsvektor zu erzeugen, der einen geeigneten Referenzblock im Referenzeinzelbild erzeugt.
  • Die Intra/Inter-Prädiktionseinheit 410 kann den Prädiktionsblock vom aktuellen Block (Rohblock) subtrahieren, um einen Restblock zu erzeugen. Die Transformereinheit 420 führt eine blockbasierte Transformation durch, die die Transformation des Restblocks in Transformationskoeffizienten beinhalten kann, wie z. B. im Frequenzbereich. Beispiele für blockbasierte Transformationen sind die Karhunen-Loève-Transformation (KLT), die diskrete Kosinustransformation (DCT) und die Singularwertzerlegungstransformation (SVD). In einem Beispiel beinhaltet die DCT die Transformation eines Blocks in den Frequenzbereich. 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 anhand eines Quantisierungs-Werts bzw. einer Quantisierungsebene (auch Quantisierer genannt) in diskrete Quantenwerte um, die als quantisierte Transformationskoeffizienten bezeichnet werden können. Die quantisierten Transformationskoeffizienten können durch die Entropiekodierungseinheit 440 entropiekodiert werden, um entropiekodierte Koeffizienten zu erzeugen. Entropiekodierung kann die Verwendung einer Wahrscheinlichkeitsverteilungsmetrik beinhalten. 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 eine Referenzeinzelbild-Synchronisation zwischen dem Kodierer 400 und einem entsprechenden Dekodierer aufrechtzuerhalten, wie beispielsweise dem Dekodierer 500 in 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 addiert den Prognoseblock, der durch die Intra-/Inter-Prognoseeinheit 410 erzeugt wurde, zum derivativen Restblock, um einen rekonstruierten Block zu erstellen. Die Schleifenfiltereinheit 480 kann auf den rekonstruierten Block angewandt werden, um Verzerrungen zu reduzieren, beispielsweise die Blockierung von Artefakten.
  • Andere Variationen des Kodierers 400 können verwendet werden, um die komprimierten Bitstroms 404 zu kodieren. Beispielsweise kann ein nicht auf Transformation basierter Kodierer den Restblock direkt ohne die Transformationseinheit 420 quantifizieren. Die Quantisierungseinheit 430 und die Dequantisierungseinheit 450 können in einer einzelnen Einheit kombiniert werden.
  • 5 ist ein Blockdiagramm eines Decoders 500 gemäß Implementierungen dieser Offenbarung. Der Decoder 500 kann in einer Vorrichtung implementiert werden, wie beispielsweise in dem in 1 dargestellten Computer 100 oder in den in 1 oder in 2 dargestellten Computer- und Kommunikationsgeräten 100A/100B/100C, wie zum Beispiel in einem Computer-Softwareprogramm, das in einem Datenspeichergerät 150 wie dem in 1 dargestellten gespeichert ist. Das Computersoftwareprogramm kann Rechneranweisungen beinhalten, die durch einen Prozessor wie dem Prozessor 140 ausgeführt werden können, siehe 1 dargestellt, und bewirken, dass das Gerät wie hierin beschrieben Videodaten kodiert. Der Decoder 500 kann als spezielle Hardware implementiert werden, 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 die Blockierung von Artefakten zu reduzieren. Die Deblockierungsfiltereinheit 570 kann auf den rekonstruierten Block angewandt werden, um die Blockierungsverzerrung zu reduzieren. Das Ergebnis wird als Ausgabevideostream 504 ausgegeben.
  • 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 die Inter-Vorhersage 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 ein Blockdiagramm einer beispielhaften blockbasierten Vorhersage mit variablen Blockgrößen gemäß den Implementierungen dieser Offenbarung ist. 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 im 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 der Überlappungsregion v×w kann einer Größe des aktuellen Blocks von x'×y' 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 B. 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 Prädiktionsparameter an 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 Blocks 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 8. 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) entsprechen, 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, wo 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 DE102016125539A1_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 DE102016125539A1_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 kann 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 des Wortes „Beispiel” oder „Aspekt” 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 Computer 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. Verfahren zum Dekodieren von Einzelbildern eines Videostreams, umfassend: Erzeugen einer Basisvorhersage für den aktuellen Block auf der Grundlage von aktuellen Prädiktionsparametern, die mit dem aktuellen Block verbunden sind; Identifizieren von benachbarten Prädiktionsparametern, die zum Dekodieren eines zuvor dekodierten benachbarten, an den aktuellen Block angrenzenden Blocks verwendet wurden; Bestimmen einer Überlappungsregion im aktuellen Block und angrenzend an den benachbarten Block, wobei die Überlappungsregion eine Größe hat, die als Funktion einer Differenz zwischen den aktuellen Prädiktionsparametern und den benachbarten Prädiktionsparametern bestimmt wird; und Erzeugen einer Überlappungsvorhersage eines Pixelwerts als Funktion der Basisvorhersage und einer auf den benachbarten Prädiktionsparametern basierenden Vorhersage für jedes Pixel innerhalb der Überlappungsregion.
  2. Verfahren nach Anspruch 1, des Weiteren umfassend: Erkennen von benachbarten Prädiktionsparametern, die für die Dekodierung einer Vielzahl von zuvor dekodierten benachbarten Blöcken verwendet wurden; Bestimmen einer Überlappungsregion im aktuellen Block und angrenzend an den benachbarten Block für jeden zuvor dekodierten benachbarten Block, wobei die Überlappungsregion eine Größe hat, die als Funktion einer Differenz zwischen den aktuellen Prädiktionsparametern und den benachbarten Prädiktionsparametern bestimmt wird.
  3. Verfahren nach Anspruch 2, weiterhin umfassend das Auslassen mindestens einer Überlappungsregion unter der Bedingung, dass die Differenz geringer als einen Mindestschwellenwert ist.
  4. Verfahren nach einem der vorhergehenden Ansprüche, wobei die Überlappungsvorhersage ein gewichtetes Mittel der Basisvorhersage und der Vorhersage aufgrund von benachbarten Parameter umfasst.
  5. Verfahren nach Anspruch 4, wobei die Gewichte für das gewichtete Mittel als Funktion des Abstands zwischen jedem entsprechenden Pixel und einer Grenze zwischen dem aktuellen Block und dem benachbarten Block bestimmt werden.
  6. Verfahren nach Anspruch 4, wobei die Gewichte für das gewichtete Mittel 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 bestimmt werden.
  7. Verfahren nach einem der vorhergehenden Ansprüche, weiterhin umfassen das Bestimmen einer gewichteten Funktion für die Überlappungsvorhersage anhand von Kontextinformationen von zuvor dekodierten benachbarten Blöcken.
  8. Verfahren nach einem der vorhergehenden Ansprüche, wobei die Überlappungsregion rechteckig ist und die Größe der Überlappungsregion um eine Anzahl von horizontalen Pixeln größer als die Größe des benachbarten Blocks eingestellt wird.
  9. Verfahren nach einem der vorhergehenden Ansprüche, wobei die Überlappungsregion rechteckig ist und die Größe der Überlappungsregion um eine Anzahl von vertikalen Pixeln größer als die Größe des benachbarten Blocks eingestellt wird.
  10. Verfahren nach einem der vorhergehenden Ansprüche, wobei die Größe des aktuellen Blocks von der Größe des benachbarten Blocks verschieden ist.
  11. Verfahren, umfassend: Dekodieren eines aktuellen Blocks in einem aktuellen Einzelbild eines Videostreams, umfassend: Bestimmen einer ersten Überlappungsregion innerhalb des aktuellen Blocks und angrenzend an einen zuvor dekodierten benachbarten Block; und Erzeugen einer Vorhersage von Pixelwerten in der ersten Überlappungsregion als 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 erste Überlappungsregion eine Größe hat, die durch eine Funktion einer Differenz zwischen den ersten Prädiktionsparametern und den zweiten Prädiktionsparametern anpassbar ist.
  12. Verfahren 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.
  13. Verfahren nach Anspruch 11 oder 12, weiterhin umfassend: 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 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.
  14. Verfahren nach Anspruch 13, wobei mindestens ein Teil der ersten Überlappungsregion mindestens einen Teil der zweiten Überlappungsregion überlappt, um eine vierte Überlappungsregion zu bilden, wobei das Verfahren weiterhin Folgendes umfasst: 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.
  15. Verfahren zum Dekodieren eines aktuellen Blocks des aktuellen Bildes in einer Vielzahl von Einzelbildern eines Videostreams, umfassend: Erzeugen einer ersten Vorhersage von Pixelwerten des aktuellen Blocks auf der Grundlage von ersten Prädiktionsparametern; Bestimmen einer Überlappungsregion im aktuellen Block und angrenzend an den benachbarten Block aus einer Vielzahl von zuvor dekodierten Blocks, wobei die Überlappungsregion eine Größe hat, die als Funktion einer Differenz zwischen den aktuellen Prädiktionsparametern und den zweiten Prädiktionsparametern des benachbarten Blocks bestimmt wird; und Erzeugen einer aktualisierten Vorhersage von Pixelwerten für Pixel in der Überlappungsregion, wobei die aktualisierte Vorhersage eine Funktion der ersten Vorhersage und einer zweiten Vorhersage ist, wobei die zweite Vorhersage auf zweiten Prädiktionsparametern basiert.
  16. Verfahren nach Anspruch 15, weiterhin umfassend das Gewichten der aktualisierten Vorhersage, sodass der Beitrag durch die zweite Vorhersage größer ist, wenn das Pixel sich relativ näher am benachbarten Block befindet.
  17. Verfahren nach Anspruch 15 oder 16, wobei die Überlappungsregion rechteckig ist und die Größe der Überlappungsregion um eine Anzahl von horizontalen Pixeln, eine Anzahl von vertikalen Pixeln oder eine Anzahl sowohl von horizontalen als auch von vertikalen Pixeln größer als die Größe des benachbarten Blocks eingestellt wird.
  18. Verfahren nach einem der Ansprüche 15 bis 17, wobei die Vorhersage der Überlappungsregion das Kombinieren von gewichteten Pixelwerten der ersten Vorhersage und gewichteten Pixelwerten der zweiten Vorhersage umfasst.
  19. Verfahren nach Anspruch 18, wobei die Gewichtungsfaktoren für die einzelnen kombinierten gewichteten Pixelwerte als Funktion des Abstands zwischen jedem entsprechenden Pixel und einer Grenze zwischen dem aktuellen Block und dem benachbarten Block bestimmt werden.
  20. Verfahren nach Anspruch 18, wobei Gewichtungsfaktoren für die einzelnen gewichteten Pixelwerte der ersten Vorhersage als Funktion des Abstands zwischen jedem entsprechenden Pixel und dem Mittelpunkt des aktuellen Blocks und Gewichtungsfaktoren für die einzelnen gewichteten Pixelwerte der zweiten Vorhersage als Funktion des Abstands zwischen jedem entsprechenden Pixel und dem Mittelpunkt des benachbarten Blocks bestimmt werden.
DE102016125539.4A 2016-06-06 2016-12-23 Adaptive überlappungsblockprädiktion bei videokodierung mit variabler blockgrösse Pending DE102016125539A1 (de)

Applications Claiming Priority (2)

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

Publications (1)

Publication Number Publication Date
DE102016125539A1 true DE102016125539A1 (de) 2017-12-07

Family

ID=57797024

Family Applications (2)

Application Number Title Priority Date Filing Date
DE202016008368.7U Active DE202016008368U1 (de) 2016-06-06 2016-12-23 Adaptive Überlappungsblockprädiktion bei Videokodierung mit variabler Blockgrösse
DE102016125539.4A Pending DE102016125539A1 (de) 2016-06-06 2016-12-23 Adaptive überlappungsblockprädiktion bei videokodierung mit variabler blockgrösse

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE202016008368.7U Active DE202016008368U1 (de) 2016-06-06 2016-12-23 Adaptive Überlappungsblockprädiktion bei Videokodierung mit variabler Blockgrösse

Country Status (5)

Country Link
US (1) US10390033B2 (de)
CN (1) CN107465925B (de)
DE (2) DE202016008368U1 (de)
GB (1) GB2551235B (de)
WO (1) WO2017213699A1 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10567793B2 (en) * 2016-06-06 2020-02-18 Google Llc Adaptive overlapped block prediction in variable block size video coding
JP6808889B2 (ja) * 2018-03-29 2021-01-06 日本放送協会 画像符号化装置、画像復号装置、及びプログラム
KR20210046679A (ko) * 2018-08-27 2021-04-28 파나소닉 인텔렉츄얼 프로퍼티 코포레이션 오브 아메리카 부호화 장치, 복호 장치, 부호화 방법 및 복호 방법
WO2023154574A1 (en) * 2022-02-14 2023-08-17 Beijing Dajia Internet Information Technology Co., Ltd. Methods and devices for geometric partitioning mode with adaptive blending

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US9445121B2 (en) * 2008-08-04 2016-09-13 Dolby Laboratories Licensing Corporation Overlapped block disparity estimation and compensation architecture
EP2497271B1 (de) * 2009-11-06 2020-08-19 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Hybride videocodierung
US9628788B2 (en) 2010-03-16 2017-04-18 Thomson Licensing Methods and apparatus for implicit adaptive motion vector predictor selection for video encoding and decoding
JPWO2011121894A1 (ja) * 2010-03-31 2013-07-04 三菱電機株式会社 画像符号化装置、画像復号装置、画像符号化方法及び画像復号方法
JP2012070278A (ja) 2010-09-24 2012-04-05 Jvc Kenwood Corp 動画像復号装置、動画像復号方法及び動画像復号プログラム
US9883203B2 (en) * 2011-11-18 2018-01-30 Qualcomm Incorporated Adaptive overlapped block motion compensation
US9813730B2 (en) * 2013-12-06 2017-11-07 Mediatek Inc. Method and apparatus for fine-grained motion boundary processing
US11303900B2 (en) 2013-12-06 2022-04-12 Mediatek Inc. Method and apparatus for motion boundary processing
KR20180020965A (ko) 2015-04-27 2018-02-28 엘지전자 주식회사 비디오 신호의 처리 방법 및 이를 위한 장치
US10250904B2 (en) * 2015-05-05 2019-04-02 Avago Technologies International Sales Pte. Limited Apparatus and method for overlapped motion compensation for video coding
US10567793B2 (en) * 2016-06-06 2020-02-18 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
GB201621890D0 (en) 2017-02-01
WO2017213699A1 (en) 2017-12-14
GB2551235A (en) 2017-12-13
CN107465925A (zh) 2017-12-12
US20170353733A1 (en) 2017-12-07
DE202016008368U1 (de) 2017-09-06
US10390033B2 (en) 2019-08-20
CN107465925B (zh) 2020-09-25
GB2551235B (en) 2021-03-31

Similar Documents

Publication Publication Date Title
US11310501B2 (en) Efficient use of quantization parameters in machine-learning models for video coding
DE102016125125B4 (de) Tile-Copying für Videokompression
US10869036B2 (en) Receptive-field-conforming convolutional models for video coding
US10848765B2 (en) Rate/distortion/RDcost modeling with machine learning
US10009625B2 (en) Low-latency two-pass video coding
WO2018144085A1 (en) Multi-level machine learning-based early termination in partition search for video coding
DE102016125535A1 (de) Adaptive Überlappungsblockprädiktion bei Videokodierung mit variabler Blockgröße
DE202016008175U1 (de) Adaptive gerichtete Intra-Prädiktion mit Blockgröße
US10554965B2 (en) Motion-compensated partitioning
US9247251B1 (en) Right-edge extension for quad-tree intra-prediction
DE102016125539A1 (de) Adaptive überlappungsblockprädiktion bei videokodierung mit variabler blockgrösse
DE202016008155U1 (de) Hybrid-Prädiktionsmodi zur Kodierung von Videos
DE102016125456A1 (de) Kodierinterpolationsfilter
DE202016008178U1 (de) Bewegungsvektorvorhersage mittels eines vorhergehenden Einzelbildresiduums
US20170237939A1 (en) Loop filtering for multiform transform partitioning
EP3211893A1 (de) Verfahren und vorrichtung zur videosignaldecodierung/-codierung mittels transformation aus einer grafikvorlage
DE112015004399T5 (de) Frequenzbereichsentstörung
DE112015005159B4 (de) Kodierung im alternierenden blockbeschränkten entscheidungsmodus
US10652552B1 (en) Efficient noise reduction coding
KR102294438B1 (ko) 듀얼 디블로킹 필터 임계값들
DE202016008160U1 (de) Dynamischer Kodiermodus für Referenz-Bewegungsvektoren

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R138 Derivation of utility model

Ref document number: 202016008368

Country of ref document: DE

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: PROCK, THOMAS, DR., GB

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

R082 Change of representative

Representative=s name: PROCK, THOMAS, DR., GB

R016 Response to examination communication