-
Prioritätsanspruch
-
Die Anmeldung beansprucht die Priorität gemäß 35 U.S.C §119 (e) der früher angemeldeten
US provisorischen Anmeldung Nr. 62/439723 , angemeldet am 28.12.2016, der früher angemeldeten
US provisorischen Anmeldung Nr. 62/440379 , angemeldet am 29.12.2016, der früher angemeldeten
US provisorischen Anmeldung Nr. 62/459,797 , angemeldet am 16.02.2017, der früher angemeldeten
US provisorischen Anmeldung Nr. 62/522420 , angemeldet am 20.05.2017 und der früher angemeldeten
US provisorischen Anmeldung Nr. 62/482178 , angemeldet am 05.04.2017, von denen jede hierin durch Verweis miteinbezogen ist.
-
Hintergrund
-
Die technischen Verbesserungen in der Weiterentwicklung von Videokodierungsstandards zeigen einen Trend zu erhöhter Kodierungseffizienz, um höhere Bitraten, höhere Auflösungen und bessere Videoqualität zu ermöglichen. Das Joint-Video Exploration Team entwickelt ein neues Videokodierungsschema, das als JVET bezeichnet wird. Andere Videokodierungsschemata, wie etwa HEVC (High Efficiency Video Coding) ist JVET ein blockbasiertes räumlich und zeitlich hybrides prädiktives Kodierungsschema. Verglichen mit HEVC jedoch enthält JVET viele Modifikationen zur Bitstromstruktur, Syntax, Beschränkungen und Abbildungen zur Erzeugung dekodierter Bilder. JVET wurde in Joint Exploration Model (JEM) Encodern und Dekodern implementiert.
-
Zusammenfassung der Erfindung
-
Die vorliegende Offenbarung schafft ein Verfahren zur Verwendung von Planer Mode zum Vorhersagen von Pixelwerten für eine momentane Kodierungseinheit (CU). Das Verfahren enthält das Berechnen eines Intensitätswerts eines unteren rechten benachbarten Pixels der momentanen CU. Der untere rechte Intensitätswert kann zusammen mit einem Intensitätswert eines benachbarten Pixels aus der Reihe von horizontalen Pixeln an der Oberseite der momentanen CU verwendet werden, um die Intensitätswerte für die benachbarten Pixel in einer Spalte entlang der rechten Seite des momentanen Blocks zu berechnen. Der untere rechte Intensitätswert kann zusammen mit einem benachbarten Pixel aus der Spalte von vertikalen Randpixeln auf der linken Seite der momentanen CU verwendet werden, um die Intensitätswerte für die benachbarten Pixel in einer Reihe entlang der Unterseite des momentanen Blocks zu berechnen. Das Verfahren umfasst ferner das Berechnen eines ersten und zweiten Prädiktors und das Ableiten eines Prädiktionspixelwerts aus dem ersten und zweiten Prädiktor, wobei eine Mehrzahl von Prädiktionspixelwerten einen Prädiktionsblock bilden.
-
Die vorliegende Offenbarung schafft ebenfalls eine Vorrichtung zum Vorhersagen von Pixelwerten für eine momentane Kodierungseinheit (CU) mittels der hierin offenbarten Maßnahmen.
-
Figurenliste
-
Weitere Details der Erfindung werden mithilfe der anhängenden Zeichnungen erläutert.
- 1 zeigt die Unterteilung eines Bildes in eine Mehrzahl von Kodierungsbaumeinheiten (CTU).
- 2 zeigt eine beispielhafte Partitionierung eines CTU in Modierungseinheiten (CU).
- 3 zeigt eine Quad Tree + Binär Tree (QTBT) Darstellung der CU Partitionierung aus 2.
- 4 zeigt ein vereinfachtes Blockdiagramm für CU Kodierung in einem JVET Encoder.
- 5 zeigt etwaige Intra Prediction Modes für Lumakomponenten in JVET.
- 6 zeigt ein vereinfachtes Blockdiagramm für CU Kodierung in einem JVET Decoder.
- 7a zeigt die horizontale Prädiktorkalkulation.
- 7b zeigt eine vertikale Prädiktorkalkulation.
- 8 zeigt ein Beispiel einer planaren Prädiktionsebene mit dem JVET Verfahren, das von einer flachen Ebene abweicht.
- 9 illustriert den planaren Prädiktionsblock der basierend auf Gleichung (5) erzeugt worden ist, wobei die Eckenintensitätswerte identisch zu einem Beispiel in 8 sind.
- 10 zeigt ein Ausführungsbeispiel eines Computersystems, das angepasst und/oder konfiguriert ist, ein Verfahren zur CU Kodierung durchzuführen.
- 11 ist ein Flussdiagramm, das ein Verfahren zum Durchführen der offenbarten Maßnahmen darstellt.
- 12 ist eine High Level Ansicht eines Source Device und eines Destination Device, die Merkmale der hierin beschriebenen Systeme und Devices enthalten können.
-
Detaillierte Beschreibung
-
Digitales Video involviert eine riesige Menge Daten, die jedes einzelne Bild (Frame) einer digitalen Videosequenz oder Bildserie in unkomprimierter Weise darstellen. Die Übertragung unkomprimierter digitaler Videos über Computernetzwerke ist üblicherweise durch Bandbreitenbegrenzungen limitiert und erfordert üblicherweise eine riesige Menge Speicherplatz. Encodieren des digitalen Videos kann sowohl die Speicherplatzals auch die Bandbreitenanforderungen verringern.
-
Frames einer Videosequenz oder genauer gesagt Decoding Tree Units innerhalb jedes Frames können mittels JVET encodiert und decodiert werden. JVET ist ein Videokodierungsschema, das von dem Joint Video Exploration Team entwickelt wird. Versionen von JVET sind in JEM (Joint Exploration Model) Encodern und Decodern implementiert worden. Ähnlich zu anderen Videokodierungsschemata wie HEVC (High Efficiency Video Coding), ist JVET ein blockbasiertes räumlich und zeitlich hybrides prädiktives Kodierungsschema.
-
Während dem Kodieren mit JVET wird ein Frame zuerst in quadratische Blöcke, Decodings Tree Units (CTUs) 100 genannt werden unterteilt, wie in 1 dargestellt. Fig. zeigt die Unterteilung eines Frames in eine Mehrzahl von CTUs 100. Beispielsweise können die CTUs 100 Blöcke von 128 × 128 Pixeln sein. Ein Frame kann ein Bild in einer Videosequenz sein, die eine Mehrzahl von Frames enthält. Ein Frame kann eine Matrix oder eine Menge von Matrizen enthalten, in denen die Pixelwerte Intensitätswerte in dem Bild darstellen. Die Pixelwerte können definiert werden, Farbe und Helligkeit in Full Color Video Kodierung darzustellen, wobei die Pixel in drei Kanäle geteilt werden. In einem YCbCr Farbraum haben Pixel beispielsweise einen Luma-Wert, Y, der die Graustufenintensität in dem Bild repräsentiert und zwei Crominanzwerte, Cb und Cr, die das Ausmaß repräsentieren in welchem die Farbe von Grau in Richtung Blau und Rot abweicht. In anderen Ausführungsformen, können die Pixelwerte mit anderen Werten in unterschiedlichen Farbräumen oder -modellen repräsentiert werden. Die Auflösung des Videos kann durch die Anzahl der Pixel in einem Frame bestimmt sein. Eine höhere Auflösung kann eine größere Anzahl Pixel und eine bessere Definition des Bildes bedeuten, kann allerdings auch zu höheren Bandbreite-, Speicher-, und Übertragungsanforderungen führen.
-
2 eine beispielhafte Partitionierung einer CTU 100 in CUs 102, welche die Basiseinheiten der Prädiktion bei der Kodierung sind. Jede CTU 100 in einem Frame kann in eine oder mehrere CUs (Coding Units) 102 partitioniert werden. Die CUs 102 können für die Prädiktion und Transformation wie nachfolgend beschrieben verwendet werden. Anders als HEVC, können bei JVET die CUs 102 rechteckig oder quadratisch sein und können ohne weitere Partitionierung in Prädiktionseinheiten oder Transformationseinheiten kodiert werden. Die CUs 102 können so groß wie ihre Wurzel CTUs 100 sein oder kleinere Unter-Unterteilungen einer Wurzel CTU 100 bis hinunter zu 4x4 Blocks.
-
Bei JVET, kann eine CTU 100 in CUs 102 entsprechend einem Quad Tree + Binary Tree (QTBT) Schema partitioniert werden, bei dem die CTU 100 rekursiv in quadratische Blöcke entsprechend einem Quad Tree gespalten werden kann und diese quadratischen Blöcke können dann rekursiv horizontal oder vertikal entsprechend Binary Trees gespalten werden. Parameter können zum Einstellen der Spaltung entsprechend dem QTBT eingestellt werden, wie etwa die CTU Größe, die Maximumgröße der Quad Tree und Binär Tree Blattknoten, der maximalen Größe für den Binär Tree Wurzelknoten und die Maximumtiefe der Binär Trees.
-
Fig. zeigt als nicht beschränkendes Beispiel eine CTU 100 die in CUs 102 partitioniert ist, wobei durchgezogene Linien die Quad Tree Spaltung anzeigen und die gestrichelten Linien die Binär Tree Spaltung anzeigen. Wie dargestellt, erlaubt die binäre Spaltung eine horizontale Spaltung und vertikale Spaltung, um die Struktur der CTU und ihrer Unter-Unterteilung in CUs zu definieren.
-
3 zeigt eine QTBT Blockstrukturdarstellung der Partitionierung aus 2. Um eine encodierte Darstellung einer Aufnahme oder eines Bildes zu erzeugen, kann der Videoencoder eine Menge von CTUs erzeugen. In 3 repräsentiert der Quad Tree Wurzelknoten die CTU 100. Um eine kodierte CTU zu erzeugen, kann der Videoencoder rekursiv Quad Tree Partitionierung auf den Coding Tree Blocks einer CTU durchführen, um die Coding Tree Blocks in Coding Blocks (CBs) zu teilen. Daher wie hierin verwendet, kann ein Video Slice (beispielsweise ein Video Frame oder ein Bereich eines Video Frames) in Coding Blocks partitioniert werden, die auch als Coding Units bezeichnet werden können, wobei jede solche Coding Unit Blöcke enthalten kann, wie etwa Luma-Blöcke und Chroma-Blöcke, die unabhängig voneinander decodiert werden. Weil JEM Flexibilität für CU Partitionierungsformen unterstützt, um besser lokale Charakteristiken von Videodaten zuzuordnen, können die CUs nicht quadratische Formen haben und das Codieren kann auf dem CU Level oder dem Luma- oder Chroma-Blocklevel innerhalb der CU stattfinden. Es wird hierin auf das Encodieren oder Decodieren eines Coding Blocks Bezug genommen, bei dem ein Coding Block einen Blockpixel, die eine CU bilden oder Coding Blocks innerhalb der CU repräsentieren.
-
Wie in 3 dargestellt, repräsentiert jeder Kinderknoten in einer CTU 100 in dem Quad Tree Bereich einen von vier quadratischen Blöcken, die von einem quadratischen Elternblock abgespalten wurden. Die quadratischen Blöcke, die durch die Quad Tree Blattknoten repräsentiert werden können dann null oder mehrmals unter Verwendung von Binary Trees geteilt werden, wobei die Quad Tree Blattknoten die Wurzelknoten der Binär Trees sind, welche die Eltern Coding Unit repräsentieren, die in zwei Kinder Coding Units partitioniert werden. Auf jeder Stufe des Binär Tree Bereichs, kann ein Block vertikal oder horizontal und symmetrisch oder asymmetrisch geteilt werden. Beispielsweise kann ein auf „0“ gesetzter Merker (Flak) anzeigen, dass der Block symmetrisch horizontal gespalten ist, während ein auf „1“ gesetzter Merker anzeigen kann, dass der Block symmetrisch vertikal gespalten wird.
-
Nach der Quad Tree-Spaltung und der Binär Tree-Spaltung, stellen die durch die QTBT-Blattknoten repräsentierten Blöcke die endgültigen CUs 102 dar, die codiert werden sollen, etwa codieren mittels Interprädiktion oder Intraprädiktion. Interprädiktion nutzt zeitliche Redundanzen zwischen unterschiedlichen Frames. Beispielsweise können zeitlich benachbarte Frames eines Videos Blöcke von Pixeln enthalten, die im Wesentlichen gleichbleiben. Während des Encodierens, kann ein Bewegungsvektor die Bewegung von Blöcken von Pixeln in einem Frame mit einem Block korrelierender Pixel in einem anderen Frame in Verbindung setzen. Daher muss das System diese Blöcke von Pixeln nicht zweimal encodieren, sondern kann den Block von Pixeln einmal encodieren und den Bewegungsvektor bereitstellen, um den korrelierten Block von Pixeln vorherzusagen.
-
Bei Intraprädiktion kann ein Frame oder ein Bereich eines Frames ohne Referenz auf Pixel in anderen Frames encodiert werden. Stattdessen nutzt Intraprädiktion räumliche Redundanzen zwischen Blöcken von Pixeln innerhalb des Frames aus. Beispielsweise kann der Codierungsprozess eine räumliche Korrelation zwischen benachbarten Blöcken referenzieren, bei denen räumlich benachbarte Blöcke von Pixeln ähnliche Eigenschaften aufweisen, und durch Vorhersage eines Zielblocks basierend auf Prädiktionsmodes, die in benachbarten Blocks verwendet werden, diese Korrelation ausnutzen.
-
Für Inter Slices oder Slices oder Full Frames, die mittels Interprädiktion codiert sind, können unterschiedliche Partitionierungsstrukturen für Luma- und Chromakomponenten verwendet werden. Beispielsweise kann bei einem Inter Slice eine CU 102 einem Coding Block für unterschiedliche Farbkomponenten aufweisen wie beispielsweise einem Luma CB und zwei Chroma CBs. Bei Intra Slices oder Slices oder Full Frames, die mittels Intraprädiktion codiert sind, kann die Partitionierungsstruktur für Luma- und Chromakomponenten dieselbe sein. Daher kann jede der CTUs 100 einen Coding Tree Block von Luma Samples, entsprechenden Coding Tree Blocks von Chroma Samples und Syntaxstrukturen umfassen, die zum Codieren der Samples der Coding Tree Blocks verwendet werden. Ein CTU kann einen einzelnen Coding Tree Block umfassen und die Syntaxstrukturen, die zum Codieren der Samples verwendet werden. In jedem Fall kann die CTU mit Coding Blocks innerhalb einer oder mehrerer Coding Einheiten enthalten sein, wie in 2 und 3 dargestellt.
-
4 zeigt ein vereinfachtes Blockdiagramm für CU Codierung in einem JVET Encoder. Die Hauptstufen der Videocodierung enthalten die Partitionierung, um die CUs 102 zu identifizieren, wie zuvor beschrieben, gefolgt vom Encodieren der CUs 102 unter Verwendung von Prädiktion bei 404 oder 406, das Erzeugen einer Rest-CU 410 bei 408, die Umwandlung bei 412, Quantisierung bei 416 und Entropy Coding bei 420. Der Encoder und der Encodingprozess, die in 4 illustriert sind, enthalten einen Decodierungsprozess, der nachfolgend genauer beschrieben wird.
-
Mit einer gegebenen momentanen CU 102 (beispielsweise eine CU vor der Encodierung; beispielsweise die Original CU, die encodiert werden soll für die Übertragung in den Bitstrom durch Erzeugen einer Prädiktions-CU) kann der Encoder eine Prädiktions-CU 402 entweder räumlich, durch Verwenden von Intraprädiktion bei 404, oder zeitlich, durch Verwenden von Interprädiktion bei 406 erhalten. Die grundlegende Idee von Prädiktionscodierung ist es ein Unterschieds- oder Restsignal zwischen dem ursprünglichen Signal und einer Prädiktion für das ursprüngliche Signal zu übertragen. Auf der Empfängerseite kann das ursprüngliche Signal rekonstruiert werden durch Addieren des Rests und der Prädiktion, wie nachfolgend beschrieben. Weil das Differenzsignal eine niedrigere Korrelation als das ursprüngliche Signal aufweist, werden weniger Bits für dessen Übertragung benötigt.
Eine Folge von Codierungseinheiten kann ein Slice bilden und ein oder mehrere Slices können ein Bild bilden. Ein Slice kann ein oder mehrere Slice-Segmente enthalten, wobei jedes in seiner eigenen NAL-Einheit ist. Ein Slice oder Slice-Segment kann Header Informationen für den Slice oder Bitstrom enthalten.
-
Ein Slice, wie beispielsweise ein gesamtes Bild oder ein Bereich eines Bildes, das vollständig mit Intraprädiktions-CUs codiert ist, kann ein I-Slice sein, dass ohne Referenz zu anderen Slices decodiert werden kann und als solches ein möglicher Ausgangspunkt zum Beginnen des Decodierens darstellen. Ein Slice, das mit wenigstens einigen Interprädiktions-CUs codiert ist, kann ein prädiktives (P) oder bi-prädiktives (B) Slice sein, das basierend auf einem oder mehreren Referenzbildern decodiert werden kann. P-Slices können Intraprädiktion und Interprädiktion mit zuvor codierten Slices verwenden. Beispielsweise können P-Slices weiterkomprimiert werden als die I-Slices durch Verwenden von Interprädiktion, aber benötigen die Codierung eines vorher codierten Slice, um diese zu codieren. B-Slices können Daten aus vorherigen und/oder folgenden Slices für ihre Codierung verwenden, und Intraprädiktion oder Interprädiktion verwenden und eine interpolierte Prädiktion aus zwei unterschiedlichen Frames verwenden, und daher die Genauigkeit des Bewegungsschätzungsprozesses erhöhen. In einigen Fällen können P-Slices und B-Slices auch oder abwechselnd mittels Intrablockkopie encodiert werden, bei der Daten von anderen Bereichen desselben Slice verwendet werden.
-
Wie nachfolgend beschrieben, kann Intraprädiktion oder Interprädiktion basierend auf rekonstruierten CUs 434 aus vorher codierten CUs 102 wie benachbarten CUs 102 oder CUs 102 in Referenzbildern, durchgeführt werden.
-
Wenn eine CU räumlich mittels Intraprädiktion bei 404 codiert ist, kann ein Intraprädiktionsmodus gefunden werden, der am besten die Pixelwerte der CU 102 basierend auf Samples der benachbarten CUs in dem Bild vorhersagt.
-
Wenn die Luma- oder Chroma-Blockkomponenten eines CUs codiert werden, kann der Encoder eine Liste von Kandidaten Intraprädiktionsmodi erzeugen. Während HEVC 35 mögliche Intraprädiktionsmodi für Luma-Komponenten aufwies, gibt es in JVET 67 mögliche Intraprädiktionsmodi für Luma-Komponenten. Diese enthalten einen Planarmodus (Planer Mode) der eine dreidimensionale Ebene von Werten aus benachbarten Pixeln erzeugt, einen DC-Modus (DC Mode) der Durchschnittswerte von benachbarten Pixeln verwendet und die 65 direktionalen Modi, die in 5 gezeigt sind, die von benachbarten Pixeln entlang der angedeuteten Richtung kopierte Werte verwenden. Wenn eine Liste von Kandidaten Intraprädiktionsmodi für eine Luma-Blockkomponente eines CUs erzeugt wird, kann die Anzahl der Kandidatenmodi auf der Liste von der Größe der CU abhängen. Die Kandidatenliste kann enthalten: eine Untermenge der 35 Modi von HEVC mit den niedrigsten SATD-Kosten (Englisch: Sum of Absolute Transform Difference); neue Direktionalmodi, die für JVET hinzugefügt wurden, die den gefundenen Kandidaten der HEVC-Modi benachbart sind; und Modi aus einer Menge der sechs wahrscheinlichsten Modi (Most Probable Modes, Englisch: MPMs) für die CU 102, die identifiziert werden, basierend auf Intraprädiktionsmodi, die für zuvor codierte benachbarte Blöcke verwendet wurden, wie eine Liste von Standardmodi.
-
Beim Codieren der Chroma-Blockkomponenten einer CU kann auch eine Liste von Kandidaten Intraprädiktionsmodi erzeugt werden. Die Liste von Kandidatenmodi kann mittels Kreuzkomponenten linear Modellprojektion aus Luma Samples generierte Modi, für Luma CBs gefundenen Intraprädiktionsmodi, insbesondere kombinierte Positionen in dem Chromablock, und Chromaprädiktionsmodi, die zuvor für benachbarte Blöcke gefunden wurden, enthalten. Der Encoder kann die Kandidatenmodi auf der Liste mit den niedrigsten Ratenverzerrungskosten finden und diese Intraprädiktionsmodi beim Codieren der Luma- und Chromakomponenten der CU verwenden. Syntax kann in dem Bitstrom codiert werden, der die zum Codieren jeder CU 102 verwendeten Intraprädiktionsmodi anzeigt.
-
Nach dem die besten Intraprädiktionsmodi für eine CU 102 ausgewählt worden sind, kann der Encoder eine Prädiktions-CU 402 unter Verwendung dieser Modi erzeugen. Wenn die ausgewählten Modi Direktionalmodi sind, kann ein Vier-Tab-Filter verwendet werden um die direktionale Genauigkeit zu verbessern. Spalten oder Reihen an der oberen oder linken Seite des Prädiktionsblocks können mittels Randprädiktionsfiltern, wie etwa Zwei-Tab oder Drei-Tab-Filtern eingestellt werden.
-
Die Prädiktions-CU 402 kann mit einem positionsabhängigen Intraprädiktionskombinationsverfahren (Englisch: Intra Prediction Combination, PDPC) weiter geglättet werden, dass eine Prädiktions-CU 402 anpasst, die erzeugt worden ist, basierend auf gefilterten Samples von benachbarten Blocks unter Verwendung ungefilterter Samples benachbarter Blocks oder adaptive Reference Sample Glättung unter Verwendung von Drei-Tab oder Fünf-Tab-Tiefpassfiltern zum Verarbeiten der Reference Samples.
-
Wenn eine CU 102 zeitlich mittels Interprädiktion bei 406 codiert wird, kann eine Menge von Bewegungsvektoren (Englisch: Motion Vectors, MVs) gefunden werden, die auf Samples in Referenzbildern zeigen, die am besten die Pixelwerte der CU 102 vorhersagen. Interprädiktion nutzt die zeitliche Redundanz zwischen Slices aus, in dem eine Verschiebung eines Blocks von Pixeln in einem Slice repräsentiert werden. Die Verschiebung wird entsprechend dem Wert der Pixel in vorherigen oder folgenden Slices durch eine Bewegungskompensation genannten Prozess bestimmt. Bewegungsvektoren und damit assoziierte Referenzindizes, die die Pixelverschiebung relativ zu einem bestimmten Referenzbild anzeigen, können in dem Bitstrom zu einem Decoder bereitgestellt werden, zusammen mit dem Residuum zwischen den ursprünglichen Pixeln und den bewegungskompensierten Pixeln. Der Decoder kann die verbleibenden und signalisierten Bewegungsvektoren und Referenzindizes verwenden, um einen Block von Pixeln in einen rekonstruierten Slice zu rekonstruieren.
-
Bei JVET kann die Bewegungsvektorgenauigkeit mit 1/16 Pel gespeichert werden und der Unterschied zwischen den Bewegungsvektor und einem vorhergesagten Bewegungsvektor einer CU kann mit entweder Viertel-Pel Auflösung oder Ganzzahl-Pel Auflösung codiert werden.
-
Bei JVET, können Bewegungsvektoren für multiple Unter-CUs innerhalb einer CU 102 gefunden werden, in dem Verfahren wie Advanced-Temperal Motion Vector Prediction (ATMVP), Special-Temperal Motion Vector Prediction (STMVP), affine Bewegungskompensationsprädiktion, Pattern Matched Motion Vector Derivation (PMMVD) und/oder By-Directional Optical Flow (BIO) verwendet werden.
-
Durch Verwenden von ATMVP, kann der Encoder einen Zeitvektor für die CU 102 finden, der zu einem entsprechenden Block in einem Referenzbild zeigt. Der Zeitvektor kann basierend auf Bewegungsvektoren und Referenzbildern gefunden werden, die für vorher codierte benachbarte CUs 102 gefunden wurden. Unter Verwenden des Referenzblocks, auf den durch den Zeitvektor für die gesamte CU 102 gezeigt wird, kann ein Bewegungsvektor für jede Sub-CU innerhalb der CU 102 gefunden werden.
-
STMVP kann Bewegungsvektoren für Sub-CUs durch Skalieren und Ermitteln von Bewegungsvektoren finden, die für benachbarte Blöcke zuvor mittels Interprädiktion codiert wurden, zusammen mit einem Zeitvektor.
-
Affine Bewegungskompensationsprädiktion kann verwendet werden, um ein Feld von Bewegungsvektoren für jede Sub-CU in einem Block vorherzusagen, basierend auf zwei Kontrollbewegungsvektoren, die für die oberen Ecken des Blocks gefunden wurden. Beispielsweise können Bewegungsvektoren für Sub-CUs basierend auf den oberen Eckbewegungsvektoren, die für jeden 4x4 Block innerhalb der CU 102 gefunden wurden, abgeleitet werden.
PMMVD kann einen Anfangsbewegungsvektor für die momentane CU 102 mittels by-lateral matching oder template matching finden. By-lateral matching kann die momentane CU 102 und Referenzblöcke in zwei unterschiedlichen Referenzbildern entlang einer Bewegungsdreiecktorie betrachten, während Template-Matching entsprechende Blöcke in der momentanen CU 102 und einem durch das Template identifizierte Referenzbild betrachtet.
-
Der Anfangsbewegungsvektor der für die CU 102 gefunden wurde, kann dann individuell für jede Sub-CU verfeinert werden.
-
BIO kann verwendet werden, wenn Interprädiktion zusammen mit Bi-Prädiktion verwendet wird, basierend auf früheren oder späteren Referenzbildern und erlaubt es Bewegungsvektoren für Sub-CUs basierend auf dem Gradienten des Unterschieds zwischen den beiden Referenzbildern zu finden.
-
In einigen Situationen, kann Local Illumination Compensation (LIC) verwendet werden auf dem CU Level um Werte für einen skalierten Faktorparameter und einen Offsetparameter zu finden, basierend auf Samples die der momentanen CU 102 benachbart sind und entsprechenden Samples, die einem durch einen Kandidatenbewegungsvektor identifizierten Referenzblock benachbart sind. Bei JVET können die LIC-Parameter sich verändern und auf dem CU Level signalisiert werden.
-
Für einige der vorgenannten Methoden, können die für jede Sub-CU einer CU gefundenen Bewegungsvektoren den Decodern auf dem CU Level mitgeteilt werden. Für andere Methoden, wie etwa PMMVD und BIO, wird keine Bewegungsinformation in dem Bitstrom mitgeteilt, um Aufwand zu sparen und die Decoder können die Bewegungsvektoren durch die selbigen Prozesse ableiten.
-
Nach dem die Bewegungsvektoren für eine CU 102 gefunden wurden, kann der Encoder eine Prädiktions-CU 402 unter Verwendung dieser Bewegungsvektoren erzeugen. In einigen Fällen, wenn die Bewegungsvektoren für individuelle CUs gefunden wurden, kann Overlapped Block Motion Compensation (OBMC) beim Erzeugen einer Prädiktions-CU 402 verwendet werden, in dem diese Bewegungsvektoren mit vorher für ein oder mehrere benachbart gefundene Sub-CUs gefundenen Bewegungsvektoren kombiniert werden.
-
Wenn Bi-Prädiktion verwendet wird, kann JVET eine decoderseitige Bewegungsvektorverfeinerung (Englisch: Decoder Side Motion Vector Refinement, DMVR) verwenden, um Bewegungsvektoren zu finden. DMVR ermöglicht es einen Bewegungsvektor basierend auf zwei Bewegungsvektoren, die für die Bi-Prädiktion unter Verwendung eines By-lateral template matching-Verfahrens gefunden wurden, zu finden. Bei DMVR kann eine gewichtete Kombination von Prädiktions-CUs 402 gefunden werden, die mit jedem der beiden Bewegungsvektoren erzeugt wurden, wobei die Bewegungsvektoren durch Ersetzen mit neuen Bewegungsvektoren, die am besten zu der kombinierten Prädiktions-CU 402 zeigen verfeinert werden können. Die beiden verfeinerten Bewegungsvektoren können verwendet werden, um die endgültige Prädiktions-CU 402 zu erzeugen.
-
Bei 408, kann der Encoder die Prädiktions-CU 402 von der momentanen CU 102 abziehen und eine Rest-CU 410 finden, nach dem eine Prädiktions-CU 402 mittels Intraprädiktion bei 404 oder Interprädiktion bei 406, wie zuvor beschrieben, gefunden worden ist.
-
Der Encoder kann eine oder mehrere Transformationen bei 412 verwenden, um die Rest-CU 410 in Transformationskoeffizienten 414 umzuwandeln, die die Rest-CU 410 in eine Transformationsdomäne ausdrücken, beispielsweise unter Verwendung einer diskreten Kosinus-Blocktransformation (Englisch: DCT-Transform) um Daten in die Transformationsdomäne umzuwandeln. JVET erlaubt mehr Arten von Transformationsoperationen als HEVC, einschließlich DCT-II, DST-VII, DCT-VIII, DST-I und DCT-V Operationen. Die erlaubten Transformationsoperationen können in Untermengen gruppiert werden und einen Hinweis darauf, welche Untermenge und welche spezifische Operation in dieser Untermenge benutzt wurde, kann dem Encoder mitgeteilt werden. In einigen Fällen, können große Blockgrößen Transformationen verwendet werden, um hochfrequente Transformationskoeffizienten in CUs 102 die größer als eine bestimmte Größe sind, Null zu stellen, so dass lediglich niederfrequente Transformationskoeffizienten für diese CUs 102 erhalten bleiben.
-
In einigen Fällen kann eine modenabhängige nicht separable Sekundärtransformation (Englisch: Mode Dependent Non-Separable Secondary Transform, MDMSST von niederfrequenten Transformationskoeffizienten 414 nach der Vorwärtskerntransformation angewandt werden. Die MDMSST Operation kann eine Hyperkubus-Gibbons Transformation (Englisch: Hyper Cube Gibbons Transform, HIT) basierend auf Rotationsdaten verwenden. Falls diese verwendet wird, kann ein die bestimmte MDMSST Operation identifizierender Indexwert dem Encoder mitgeteilt werden.
-
Bei 416 kann der Encoder die Transformationskoeffizienten 414 in quantisierte Transformationskoeffizienten 416 quantisieren. Die Quantisierung jedes Koeffizienten kann durch Teilen des Wertes des Koeffizienten durch einen Quantisierungsschritt, der durch einen Quantisierungsparameter (QP) abgeleitet wird berechnet werden. In einigen Ausführungsformen ist der Q-Step definiert als 2(QP-4)/6. Weil hochpräzise Transformationskoeffizienten 414 in quantisierte Transformationskoeffizienten 416 mit einer ähnlichen Anzahl möglicher Werte umgewandelt werden können, kann die Quantisierung bei der Datenkompression unterstützen. Daher kann die Quantisierung der Transformationskoeffizienten die Anzahl der von dem Transformationsprozess erzeugten und gesendeten Bits limitieren. Weil jedoch Quantisierung eine verlustbehaftete Operation ist, und der Verlust aufgrund von Quantisierung nicht zurückgewonnen werden kann, stellt der Quantisierungsprozess einen Trade-Off zwischen Qualität der rekonstruierten Sequenz und der zur Darstellung der Sequenz benötigten Informationsmenge dar. Beispielsweise kann ein niedrigerer QP-Wert in einer besseren Qualität des decodierten Videos resultieren, obwohl eine höhere Datenmenge zur Repräsentation der Übertragung erforderlich ist. Ein Unterschied kann ein hoher QP-Wert in niedrigerer Qualität der rekonstruierten Videosequenz resultieren, allerdings mit niedrigeren Daten- und Bandbreitenanforderungen.
-
JVET kann varianzbasierte adaptive Quantisierungsverfahren verwenden, die es jeder CU ermögliche, einen unterschiedlichen Quantisierungsparameter für dessen Codierungsprozess zu verwenden (anstelle denselben Frame QP beim Codieren jeder CU 102 des Frames zu verwenden). Die varianzbasierten adaptiven Quantisierungsverfahren senken adaptiv den Quantisierungsparameter bestimmter Blöcke, während sie ihn in anderen Blöcken erhöhen. Um einen spezifischen Coupe für eine CU 102 auszuwählen, wird die Varianz der CU berechnet. Kurz gesagt, wenn eine Varianz der CU höher ist, als die durchschnittliche Varianz des Frames, kann ein höherer Coupe als der Frame-Coupe für die CU 102 eingestellt werden. Wenn die CU 102 eine niedrigere Varianz als die Durchschnittsvarianz des Frames aufweist, kann ein niedrigerer Coupe zugeordnet werden.
-
Bei 420 kann der Encoder endgültige Komprimierungsbits 422 durch Entropie codieren der quantisierten Transformationskoeffizienten 418 finden. Entropiecodierung zielt darauf, statistische Redundanzen der zu übertragenden Information zu entfernen. Bei JVET kann CABAC (Englisch: Context Adaptive Binary Arithmatic Coding) verwendet werden, um die quantisierten Transformationskoeffizienten 418 zu codieren, wobei CABAC Wahrscheinlichkeitsmaße verwendet, um die statistischen Redundanzen zu entfernen. Für CUs 102 die quantisierte Transformationskoeffizienten 418 ungleich 0 aufweisen, können die quantisierten Transformationskoeffizienten 418 in Binär umgewandelt werden. Jedes Bit („bin“) der binären Repräsentation kann dann mit einem Context Modell encodiert werden. Eine CU 102 kann in drei Regionen gebrochen werden, die jede ihre eigene Menge von Context Modellen zur Verwendung in dieser Region befindliche Pixel aufweist.
-
Multiple Abtastvorgänge können durchgeführt werden um die Bins zu encodieren. Während der Encodierungsvorgänge der ersten drei Bins (Bin 0, Bin 1 und Bin 2), kann ein Indexwert der angibt, welches Context Modell für das Bin benutzt wird, gefunden werden, in dem die Summe der Bin Position in bis zu fünf vorher codierten benachbarten quantisierten Transformationskoeffizienten 418 durch eine Template identifiziert wird.
-
Ein Context Modell kann auf den Wahrscheinlichkeiten dafür, dass ein Binwert „0“ oder „1“ ist, gestützt werden. Während die Werte codiert werden, können die Wahrscheinlichkeiten in dem Context Modell basierend auf der eigentlich angetroffenen Anzahl von „0“ und „1“ Werten aktualisiert werden. Während HEVC feste Tabellen verwendet, um Context Modelle für jedes neue Bild zu reinitialisieren, können bei JVET die Wahrscheinlichkeiten der Context Modelle für neue interprädizierte Bilder basierend auf den für die zuvor codierten interprädizierten Bilder entwickelten Context Modelle initialisiert werden.
-
Der Encoder kann einen Bitstrom erzeugen der Entropie encodierte Bits 422 von Rest-CUs 410, Prädiktionsinformation, wie etwa ausgewählte Intraprädiktionsmodi oder Bewegungsvektoren, Indikatoren, wie die CUs 102 aus einer CTU 100 entsprechend der QTBT-Struktur partitioniert wurden, und/oder andere Informationen über das encodierte Video enthalten. Der Bitstrom kann durch einen Decoder decodiert werden, wie nachfolgend diskutiert. In einigen Ausführungsarten, kann der Encoder Aufwand in dem Bitstrom durch Weglassen von Informationen aus dem Bitstrom sparen, die angibt, welche Intraprädiktionsmodi verwendet wurden, um die CUs 102 zu encodieren, wobei der Decoder Template-Matching beim Decodieren der mittels Intraprädiktion codierten CUs 102 verwenden kann.
-
Zusätzlich zum Verwenden der quantisierten Transformationskoeffizienten 418, um die endgültigen Kompressionsbits 422 zu finden, kann der Encoder auch die quantisierten Transformationskoeffizienten 418 zum Erzeugen rekonstruierter CUs 434 verwenden, indem er denselben Dekodierungsprozess folgt, den der Decoder verwenden würde, um rekonstruierte CUs 434 zu erzeugen. Daher können die quantisierten Transformationskoeffizienten 418 zu der Dekodierungsschleife in dem Encoder übertragen werden, sobald die Transformationskoeffizienten durch den Encoder berechnet und quantisiert wurden. Nach Quantisierung der Transformationskoeffizienten einer CU, erlaubt es die Dekodierungsschleife dem Encoder, eine rekonstruierte CU 434 zu erzeugen, die identisch zu der von dem Decoder in dem Dekodierungsprozess erzeugten ist. Entsprechend kann der Encoder dieselbe rekonstruierte CU 434 verwenden, die der Decoder für benachbarte CUs 102 oder Referenzbilder beim Durchführen der Intraprädiktion oder Interprädiktion für eine neue CU 102 verwenden würde. Rekonstruierte CUs 102, rekonstruierte Slices oder rekonstruierte Bilder oder Frames können als Referenzen für weitere Prädiktionsstufen dienen.
-
In der Decoderschleife des Encoders (siehe unten für dieselben Operationen in dem Decoder), kann ein Dequantisierungsprozess durchgeführt werden, um die Pixelwerte für das rekonstruierte Bild zu erhalten. Um beispielsweise einen Frame zu dequantisieren, kann ein quantisierter Wert für jeden Pixel eines Frames mit dem Quantisierungsschritt, beispielsweise dem zuvor beschriebenen Q-Step, multipliziert werden, um rekonstruierte dequantisierte Transformationskoeffizienten 426 zu erhalten. Beispielsweise können in dem in 4 dargestellten Decodierungsprozess in dem Encoder dequantisierten Transformationskoeffizienten 418 einer Rest-CU 410 bei 424 dequantisiert werden, um dequantisierte Transformationskoeffizienten 426 zu finden. Wenn eine MDMSST-Operation während des Encodierens durchgeführt wurde, kann diese Operation nach Dequantisierung umgekehrt werden.
-
Bei 428 können die dequantisierten Transformationskoeffizienten 426 rücktransformiert werden, um eine rekonstruierte Rest-CU 430 zu erhalten, beispielsweise durch Anwenden einer DCT au die Werte zum Erhalten des rekonstruierten Bildes. Bei 432 kann die rekonstruierte Rest-CU 430 in eine entsprechende mittels Intraprädiktion bei 404 oder Interprädiktion bei 406 gefundenen Prädiktions-CU 402 hinzugefügt werden, um eine rekonstruierte CU 434 zu finden. Während in einigen Ausführungsarten der Encoder eine zuvor beschriebene Intraprädiktion bei 404 durchführen kann, kann in anderen Ausführungsarten der Encoder ein Intraprädiktions-Template Matching durchführen, um eine Prädiktions-CU 402 zu erzeugen, auf die gleiche Art wie ein Encoder das Template Matching für Intraprädiktion verwenden würde, wenn den für die CU 102 verwendete Intraprädiktionsmodus identifizierende Information aus dem Bitstrom weggelassen würde.
-
Bei 436 können ein oder mehrere Filter auf die rekonstruierten Daten während des Decodierungsprozesses angewendet werden, in dem Encoder oder wie nachfolgend beschrieben in den Decoder entweder auf dem Bitlevel oder CU-Level. Beispielsweise kann der Encoder einen Deep Logging-Filter anwenden, einen Sample Adaptive Offset (SAO)-Filter und/oder einen Adaptive Loop Filter (ALF). Der Decodierungsprozess des Encoders kann Filter implementieren um optimale Filterparameter für den Decoder zu schätzen und zu übertragen, die mögliche Artefakte in dem rekonstruierten Bild behandeln. Derartige Verbesserungen erhöhen die objektive und subjektive Qualität des rekonstruierten Videos. Beim Deblocking-Filtering, können Pixels nach einer Sub-CU-Grenze modifiziert werden, während in SAO, Pixel in einer CTU 100 unter Verwendung entweder einer Kanten Offset-oder Band-Offset Klassifikation modifiziert werden. ALF von JVET kann Filter mit zirkulär symmetrischen Formen für jeden 2x2 Block verwenden. Eine Angabe der Größe und Identität der Filter, die für jeden 2x2 Block verwendet wird kann mitgeteilt werden.
-
Wenn rekonstruierte Bilder, Referenzbilder sind können sie in einem Referenz-Puffer 438 für die Interprädiktion zukünftiger CUs 102 bei 406 gespeichert werden.
-
Während der vorherigen Schritte, erlaubt JVET inhaltsadaptive Clipping-Operationen dafür verwendet zu werden, Farbwerte zum Anpassen zwischen unteren und oberen Clipping-Grenzen einzustellen. Die Clipping-Grenzen können für jede Slice geändert werden und die Grenzen identifizierende Parameter können in dem Bitstrom mitgeteilt werden.
-
6 zeigt ein vereinfachtes Blockdiagramm für CU-Codierung in einem JVET-Decoder. Ein JVET-Decoder kann einen Bitstrom, oder Bits, 602 empfangen, die Informationen über encodierte Videodaten enthalten.
-
Die encodierten Videodaten können partitionierte Luma-Blöcke und partitionierte Chroma-Blöcke repräsentieren, wobei die Chroma-Blöcke unabhängig von den Luma-Blöcken partitioniert und codiert werden können. Der Decoder kann den jeweiligen Coding-Modus des jeweiligen Blocks innerhalb jeder CU 102 bestimmen. Der Bitstrom kann angeben, wie die CUs 102 eines Bildes von einer CTU 100 entsprechend einer QTBT-Struktur partitioniert wurden. Der Decoder kann die Baumstruktur als Teil des Erhaltens von Syntaxelementen aus dem Bitstrom bestimmen. Die Baumstruktur kann spezifizieren, wie der anfängliche Videoblock, beispielsweise ein CTB, in kleinere Videoblocks, beispielsweise Coding Units, partitioniert wurde.
-
Wie hierin beschrieben, gibt es für jeden jeweiligen nicht-Blatt-Knoten der Baumstruktur auf jedem tiefen Level der Baumstruktur verschiedene Spaltmuster für den jeweiligen Nicht-Blatt-Knoten. Als nicht beschränkendes Beispiel kann der Bitstrom mitteilen, wie die CUs 102 von jeder CTU 100 in einer QTBT unter Verwendung von Quad Tree Partitionierung, symmetrischer Binärpartitionierung und/oder Binärpartitionierung, partitioniert wurden. Der jeweilige dem Nicht-Blatt-Knoten entsprechende Videoblock kann in Videoblocks partitioniert werden, die den Kinder-Knoten des jeweiligen Nicht-Blatt-Knotens entsprechen.
-
Der Bitstrom kann ebenso eine Prädiktionsinformation für die CUs 102 angeben, beispielsweise Intraprädiktionsmodi oder Bewegungsvektoren. Die Bits 602 repräsentieren Entropie encodierte Rest-CUs. In einigen Ausführungsformen, kann Syntax in den Bitstrom codiert werden, die die zum Codieren jeder CU 102 verwendeten Intraprädiktionsmodus angibt. In einigen Ausführungsformen kann der Encoder Informationen in den Bitstrom über Intraprädiktionsmodi, die zum Encodieren einiger oder aller CUs 102, die mittels Intraprädiktion codiert wurden, weggelassen haben und als solcher kann der Decoder Template-Matching für Intraprädiktion verwenden.
-
Bei 406 kann der Decoder die Entropie encodierten Bits 602 mittels des von dem Encoder in den Bitstrom mitgeteilte verwendeten CABAC Context Modell decodiert werden. Der Decoder kann von dem Encoder mitgeteilte Parameter verwenden, um die Wahrscheinlichkeiten des Context Modells zu aktualisieren, auf dieselbe Art, wie diese während des Encodierens aktualisiert wurden.
-
Umkehren der Entropie-Encodierung bei 604 um die quantisierten Transformationskoeffizienten 606 zu finden, kann der Decoder diese bei 608 dequantisieren, um die quantisierten Transformationskoeffizienten 610 zu finden. Wenn eine MDMSST-Operation während des Encodierens durchgeführt wurde, kann diese Operation durch den Decoder nach der Dequantisierung umgekehrt werden.
-
Bei 612 können die dequantisierten Transformationskoeffizienten 610 rücktransformiert werden, um eine rekonstruierte Rest-CU 614 zu finden. Bei 616, kann die rekonstruierte Rest-CU 614 zu einer entsprechenden Prädiktions-CU 626 hinzugefügt werden, die mittels Intraprädiktion bei 622 oder Interprädiktion bei 624 gefunden wurde, um eine rekonstruierte CU 618 zu finden. In einigen Ausführungsformen kann der Decoder die Prädiktions-CU 626 unter Verwendung von Template-Matching für Intraprädiktion finden.
-
Bei 620 kann eine oder mehrere Filter auf die rekonstruierten Daten beispielsweise auf einem Bildlevel, oder CU-Level angewendet werden. Beispielsweise kann der Decoder einen Deblocking-Filter, einen Sample Adaptive Offset Filter (SAO) und/oder einen Adaptive Loop Filter (ALF) verwenden. Wie zuvor beschrieben können die in der Decodingschleife des Encoders angeordneten in der Schleife befindlichen Filter verwendet werden, um optimale Filterparameter zu schätzen, um die objektive und subjektive Qualität eines Frames zu verbessern. Diese Parameter werden zu dem Decoder übertragen, um das rekonstruierte Frame bei 620 zu filtern, um das gefilterte rekonstruierte Frame in dem Encoder zuzuordnen.
Nach dem rekonstruierte Bilder durch Finden rekonstruierter CUs 618 und Anwenden der mitgeteilten Filter erzeugt wurden, kann der Decoder die rekonstruierten Bilder als Ausgangsvideo 628 ausgeben. Wenn die rekonstruierten Bilder als Referenzbilder verwendet werden sollen, können diese in einem Referenzpuffer 630 für die Interprädiktion zukünftiger CUs 102 bei 624 gespeichert werden. In einigen Ausführungsformen kann der von einem JVET Decoder empfangene Bitstrom Syntax enthalten, die identifiziert, welcher Intraprädiktionsmodus zu Encodieren einer CU 102 mit Intraprädiktion verwendet wurde, so dass der Decoder direkt den mitgeteilten Intraprädiktionsmodus bei 622 zum Erzeugen einer Prädiktions-CU 626 verwenden kann. In einigen Ausführungsformen kann diese Syntax weggelassen werden, um Aufwand durch Verminderung der Anzahl von Bits in dem Bitstrom zu sparen. In diesen Ausführungsformen, bei denen der Decoder nicht mit einer Angabe darüber, welcher Prädiktionsmodus zum Encodieren einer CU 102 verwendet wurde, versorgt wird, kann der Decoder Template-Matching zur Intraprädiktion bei 622 benutzen, um den Intraprädiktionsmodus abzuleiten, den der Decoder zum Erzeugen einer Prädiktions-CU 626 verwenden soll. In einigen Ausführungsformen, kann ein Encoder ähnlich Template-Matching zur Intraprädiktion bei 404 benutzen, wenn er eine Prädiktions-CU 402 zum Kombinieren mit einer rekonstruierten Rest-CU 430 bei 432 innerhalb seiner Decodierungsschleife erzeugt.
-
Wie hierin beschrieben, ist Intracodierung das Hauptwerkzeug für Videokompression. Es verwendet die räumlichen Nachbarn eines Pixels, um einen Prädiktor zu erzeugen, aus dem ein Prädiktionsrest zwischen dem Pixel und seinem Prädiktor bestimmt wird. Der Videoencoder komprimiert dann die Reste, was in dem Codierungsbitstrom resultiert. Der sich entwickelnde Videocodierungsstandard, JVET, erlaubt 67 mögliche Intraprädiktionsmodi, einschließlich Planarmodus, DC-Modus, und 65 Winkelrichtungsmodi, wie in 5 dargestellt. Jeder Intraprädiktionsmodus hat eine einzigartige Prädiktionserzeugungsmethode, basierend auf entweder dem linksseitigen Nachbarn oder oberseitigen Nachbarn. Jede Intracodierungseinheit (CU) wählt wenigstens einen zu verwendenden Intraprädiktionsmodus aus, der als Overhead in dem Bitstrom mitgeteilt werden muss. Wo beispielsweise eine einzelne CU einen Luma-Codierungsblock und zwei Chroma-Codierungsblöcke enthält, kann jeder Luma-Codierungsblock und Chroma-Codierungsblock seinen eigenen Intraprädiktionsmodus haben. Daher können mehrere Intraprädiktionsmodi identifiziert werden, wenn diese in den Bitstrom mitgeteilt werden.
-
Hierin werden verschiedene Verfahren zur Implementierung und verbesserten Intraprädiktionscodierungstechnik unter Verwendung einer verfeinerten Planarprädiktion offenbart. In Ausführungsformen werden die bei der Intraprädiktion verwendeten benachbarten Pixel mit größerer Genauigkeit berechnet, was in einer effizienteren und genaueren Prädiktion von Pixeln innerhalb des momentanen Codierungsblocks resultiert. Der Planarmodus ist häufig der am meisten benutzte Intracodierungsmodus bei HEVC und JVET. Der Planarmodus ist häufig für Blöcke mit einem glatten Bild geeignet, dessen Pixelwerte sich graduell mit einem kleinen planaren Gradienten ändern. Die 7a und 7b zeigen den HEVC und JVET planaren Prädiktor Generationsprozess für eine Codierungseinheit (Block) 702 mit Höhe H=8 und Breite W=8, wobei die (0,0) Koordinaten der oberen linken (TL) Position 704 innerhalb der Coding-CU entspricht, wobei die TL-Position 718 ein oberer linker benachbarter Eckenpixel ist. TR 706 bezeichnet die obere rechte Position und BL 708 bezeichnet die linke untere Position. Die gestrichelte Linie 710 gibt Interpolation an und die gepunktete Linie 712 gibt Replikation an. 7a zeigt die horizontale Prädiktorberechnung und 7b zeigt eine vertikale Prädiktorberechnung.
-
Der Planarmodus in HEVC und JVET (HEVC Planar) erzeugt eine Näherung erster Ordnung der Prädiktion für eine momentane Kodierungseinheit (CH) durch Bilden einer auf den Intensitätswerten benachbarter Pixel basierenden Ebene. Aufgrund einer Raster-Scan-Kodierungsordnung sind die rekonstruierten die linke Spalte der benachbarten Pixel 714 und die rekonstruierten die obere Reihe benachbarten Pixel 716 für einen momentanen Kodierungsblock 702 verfügbar, nicht jedoch die rechts der Spalte benachbarten Pixel und die der unteren Reihe benachbarten Pixel. Der Planarprädiktorerzeugungsprozess stellt die Intensitätswerte aller rechtsspaltigen benachbarten Pixel auf denselben Intensitätswert wie die oben rechts benachbarten Pixel 706 ein und die Intensitätswerte aller Pixel der unteren Reihe auf denselben Intensitätswert der unten links benachbarten Pixel 708.
-
Sobald die benachbarten Pixel, die den Prädiktionsblock umgeben, definiert sind, werden der horizontale und der vertikale Prädiktor (P
h(x,y) bzw. P
v(x,y)) für jeden Pixel innerhalb des momentanen Kodierungsblock
702 entsprechend der nachstehenden Gleichungen (1) und (2) bestimmt.
wobei:
- R(x, y) den Intensitätswert des rekonstruierten benachbarten Pixels an den Koordinaten (x, y) bezeichnet,
- W die Blockbreite bezeichnet und
- H die Blockhöhe bezeichnet.
-
Wie in 7A dargestellt, wird ein horizontaler Prädiktor durch Bezugnahme auf das rekonstruierte Reference Sample Ly 722, einen Pixel in der linken Spalte benachbarter Pixel 714, die an derselben y-Koordinate als das momentane Sample C 724 ist und Bezugnahme auf Sample Ty 726, das eine Kopie des zuvor rekonstruierten Samples TR 718 ist, das benachbart zu dem oberen rechten Pixel der Kodierungseinheit ist, interpoliert. Daher wird der horizontale Prädiktor unter Verwendung linearer Interpolation zwischen einem Wert eines jeweiligen horizontalen Randpixels und eines Wertes eines vertikalen Randpixels berechnet.
-
Wie in 7B dargestellt, wird ein vertikaler Prädiktor aus dem rekonstruierten Sample Tx 728 aus der oberen Reihe benachbarter Pixel an derselben x-Koordinate als der momentane Prädiktionspixel C und Reference Sample Lx 730, das eine Kopie des zuvor rekonstruierten Samples BL 708 ist, ein benachbarter linker Pixel der benachbart zu dem unteren linken Sample der Kodierungseinheit ist, interpoliert. Daher wird der vertikale Prädiktor unter Verwendung linearer Interpolation zwischen einem Wert eines jeweiligen vertikalen Randpixels und einem Wert eines horizontalen Randpixels berechnet.
-
Sobald der horizontale und vertikale Prädiktor für einen Kodierungseinheitspixel bestimmt sind, kann der endgültige Prädiktor bestimmt werden. Für jeden Pixel in einem Kodingblock ist der endgültige planare Prädiktor, P(x, y), der Intensitätswert, der durch Mitteln des horizontalen und vertikalen Prädiktors entsprechend Gleichung (3) mit gewissen Einstellungen in Ausführungsformen, in denen die momentane
CU oder der Kodierungsblock nicht quadratisch sind.
-
Der Encoder kann ebenso einen Rest zwischen der Prädiktions-Kodierungseinheit und der momentanen Kodierungseinheit in dem Bitstrom an den Decoder mitteilen.
-
Bestimmte Randbedingungen bei dem momentanen Planarmodus bei JVET können Kodierungsineffizienzen hervorrufen. Wie zuvor beispielsweise beschrieben, werden sämtliche rechtsspaltigen benachbarten Pixel auf denselben Intensitätswert gesetzt, welches der Wert des oben rechts benachbarten Pixels ist. Ähnlich kann die gesamte untere Reihe benachbarter Pixel auf denselben Intensitätswert gesetzt werden, der der Wert des unten links benachbarten Pixels ist. Das Einstellen aller rechtsspaltigen Pixel auf denselben und aller unteren Reihe Pixel auf denselben Wert steht in Konflikt mit der planaren Prädiktionsannahme. Daher können diese Randbedingungen eine Abweichung des planaren Prädiktionsblock von einer ideal flachen Ebene verursachen. 8 zeigt ein Beispiel einer planaren Prädiktionsebene bei der JVET-Methode, die von einer flachen Ebene abweicht (TR bezeichnet die Position oben rechts und BL bezeichnet die Position unten links).
-
Ferner werden hierin Ausführungsformen zum Ableiten eines Intensitätswerts eines unteren rechten benachbarten Pixels P(W, H) für einen momentanen Kodierungsblock offenbart. In Ausführungsformen kann die Kodierungseinheit der kleinste Kodierungsblock/die kleinsten Kodierungsblöcke innerhalb einer CTU, die codiert wird, sein. In Ausführungsformen kann eine Kodierungseinheit Luma- und Chroma-Kodierungsblocks, die unabhängig codiert werden, enthalten. Die vorgeschlagenen Verfahren beinhalten das Berechnen eines Intensitätswerts des unteren rechten benachbarten Pixels (lifting) und dann das Berechnen der Intensitätswerte der unteren Reihe und der rechten Spalte benachbarter Pixel unter Verwendung des abgeleiteten Intensitätswertes des unteren rechten benachbarten Pixels zusammen mit den Intensitätswerten anderer zur Ecke benachbarter Pixel, wie dem oben rechts benachbarten Pixel und dem unten links benachbarten Pixel. Es sollte beachtet werden, dass ein Eckpixel an den Koordinaten x=0, y=0 innerhalb des Kodierungsblocks unterschiedlich von den zur Ecke benachbarten Pixeln (beispielsweise P(W, H)) ist, die außerhalb des Kodierungsblocks sind.
-
Ein Beispiel eines Lifting-Verfahrens ist ein gewichteter Durchschnitt des oberen rechten und des unteren linken benachbarten Pixels, wie in Gleichung (4) definiert.
-
Ein weiteres Beispiel für einen Lifting-Prozess ist das Aufrechterhalten einer flachen Ebene, basierend auf dem Intensitätswert der oben links, oben rechts und unten links benachbarten Pixel, wie in Gleichung (5) definiert.
-
9 illustriert den planaren Prädiktionsblock, der basierend auf Gleichung (5) erzeugt wurde, wobei die Eckintensitätswerte identisch zu einem Beispiel in 8 sind. Wie dargestellt, resultiert eine flache planare Prädiktionsebene aus der Verwendung von Gleichung (5), wenn dieselben drei Eckpunkte wie in 8 gegeben sind (TR bezeichnet die Position oben rechts, TL bezeichnet die Position oben links und BL bezeichnet die Position unten links).
-
Mit dem abgeleiteten Intensitätswert des unten rechts benachbarten Pixels von P(W, H) können die Intensitätswerte der unteren Reihe benachbarter Pixel,
P
b(x, H), und die rechte Spalte benachbarter Pixel, P
r(W, y), entsprechend berechnet werden. Ein Beispiel für eine solche Berechnung folgt linearer Interpolation entsprechend der Gleichungen (6) und (7).
-
Sobald die benachbarten Pixel, die den momentanen Kodierungsblock umgeben, definiert sind, werden der horizontale und der vertikale Prädiktor (P
h(x, y) und P
v(x, y)) für jeden Pixel innerhalb des Kodierungsblocks entsprechend der nachfolgenden Gleichungen (8) und (9) bestimmt.
-
Es sollte beachtet werden, dass in Gleichungen (8) und (9) Ph(x, y) und Pv(x, y) als hochskalierte Version der horizontalen und vertikalen Prädiktoren gezeigt sind. Diese Faktoren werden in dem letzten Prädiktorberechnungsschritt kompensiert.
-
Es kann ebenso vorteilhaft sein, gefilterte Versionen der benachbarten Pixelintensität anstelle der eigentlich benachbarten Pixelintensität zum Anheben eines Teils der Einstellung der Position unten rechts zu verwenden. Dies trifft vor allem zu, wenn der zu kodierende Inhalt rauschig ist. Ein Beispiel für eine solche Filteroperation ist in den Gleichungen (10) und (11) beschrieben.
-
Ein weiteres Beispiel für eine Filteroperation ist in den Gleichungen (10a) und (11 a) beschrieben.
-
Die Filteroperation kann wahlweise verwendet werden, basierend darauf, ob ein benachbarter Pixel bereits durch einen vorhergehenden Prozess gefiltert wurde (wie etwa mode dependent intra smoothing bei HEVC). Bei Ausführungsformen, in denen benachbarte Pixel noch nicht von einem vorherigen Prozess gefiltert wurden, wird die Filteroperation verwendet. Anderenfalls wird die Filteroperation nicht verwendet.
-
Alternativ kann es vorteilhaft sein, die obere rechte und die untere linke Eckposition jeweils auf R(W -1, -1) und R(-1, H -1) einzustellen. In dieser Situation kann die Interpolation für zwischen Prädiktoren beschrieben werden als ein Beispiel durch die Gleichungen (12) bis (16).
-
Die Ausführung der Folge von Instruktionen, die zur Durchführung der Ausführungsformen erforderlich sind, können durch ein Computersystem 1000, das in 10 dargestellt ist, durchgeführt werden. In einer Ausführungsform wird die Ausführung der Folge von Instruktionen durch ein einziges Computersystem 1000 durchgeführt. Entsprechend anderer Ausführungsformen können zwei oder mehr Computersysteme 10, die mittels einer Kommunikationsverbindung 1015 verbunden sind, die Folge von Instruktionen in Koordinierung miteinander durchführen. Obwohl eine Beschreibung in Bezug auf lediglich ein Computersystem 1000 nachfolgend vorgenommen wird, sollte beachtet werden, dass jede Anzahl von Computersystemen 10 zur Durchführung der Ausführungsformen verwendet werden kann.
-
Ein Computersystem 1000 entsprechend einer Ausführungsform wird nunmehr mit Bezug auf 10 beschrieben, die ein Blockdiagramm der funktionalen Komponenten eines Computersystems 1000 zeigt. Wie hierin verwendet, wird der Begriff Computersystem 1000 weit verstanden, um jegliche Computervorrichtung zu beschreiben, die ein oder mehrere Programme speichern und unabhängig voneinander ausführen kann.
-
Jedes Computersystem 1000 kann eine Kommunikationsschnittstelle 1014 enthalten, die mit dem Bus 1006 gekoppelt ist. Die Kommunikationsschnittstelle 1014 stellt eine Zwei-Wege-Kommunikation zwischen Computersystemen 1000 bereit. Die Kommunikationsschnittstelle 1014 eines jeweiligen Computersystems 1000 überträgt und empfängt elektrische, elektromagnetische oder optische Signale, die Datenströme enthalten, die unterschiedliche Arten von Signalinformation, beispielsweise Anweisungen, Nachrichten und Daten enthalten. Eine Kommunikationsverbindung 1015 verbindet ein Computersystem 1000 mit einem anderen Computersystem 1000. Beispielsweise kann die Kommunikationsverbindung 1015 ein LAN sein, wobei in diesem Fall die Kommunikationsschnittstelle 1014 eine Netzwerkkarte ist, oder die Kommunikationsverbindung 1015 kann ein PSTN sein, wobei in diesem Fall die Kommunikationsschnittstelle 1014 eine Integrated Services Digital Network (ISDN)-Karte oder -Modem sein kann, oder die Kommunikationsverbindung 1015 kann das Internet sein, wobei in diesem Fall die Kommunikationsschnittstelle 1014 ein Einwahlmodem, Kabelmodem oder drahtloses Modem sein.
-
Ein Computersystem 1000 kann Nachrichten, Daten und Anweisungen einschließlich Programme, d.h. Anwendungen, Code senden und empfangen, über seine jeweilige Kommunikationsverbindung 1015 und die Kommunikationsschnittstelle 1014. Empfangener Programmcode kann durch den jeweiligen Prozessor/die jeweiligen Prozessoren 1007 ausgeführt werden, wenn es empfangen wurde und/oder in der Speichereinrichtung 1010 oder anderen assoziierten, nicht flüchtigen Medien für die spätere Ausführung gespeichert werden.
-
In einer Ausführungsform arbeitet das Computersystem 1000 mit einem Datenspeichersystem 1031, beispielsweise einem Datenspeichersystem 1031, das eine Datenbank 1032 enthält, zusammen, die bequem durch das Computersystem 1000 zugänglich ist. Das Computersystem 1000 kommuniziert mit dem Datenspeichersystem 1031 mittels einer Datenschnittstelle 1033. Eine Datenschnittstelle 1033, die mit dem Bus 1006 gekoppelt ist, überträgt und empfängt elektrische, elektromagnetische oder optische Signale, die Datenströme enthalten, die verschiedene Arten von Signalinformation, beispielsweise Anweisungen, Nachrichten und Daten, repräsentieren. In einigen Ausführungsformen kann die Funktion der Datenschnittstelle 1033 durch die Kommunikationsschnittstelle 1014 ausgeführt werden.
-
Das Computersystem 1000 enthält einen Bus 1006 oder anderen Kommunikationsmechanismus zum Kommunizieren von Anweisungen, Nachrichten und Dateninformation, um einen oder mehrere Prozessoren 1007, die mit dem Bus 1006 zum Verarbeiten von Information gekoppelt sind. Das Computersystem 1000 enthält ebenso einen Hauptspeicher 1008, wie beispielsweise einen Arbeitsspeicher (RAM) oder andere dynamische Speichereinrichtungen, die mit dem Bus 1006 zum Speichern dynamischer Daten und Anweisungen, die durch den Prozessor/die Prozessoren 1007 ausgeführt werden sollen, gekoppelt ist. Der Hauptspeicher 1008 kann auch zum Speichern temporärer Daten, d.h. Variablen oder anderer Zwischeninformation, während der Ausführung von Anweisungen durch den Prozessor/die Prozessoren 1007 verwendet werden.
-
Das Computersystem 1000 kann ferner einen Nur-Lesespeicher (ROM) 1009 oder andere mit dem Bus 1006 gekoppelte statische Speichereinrichtungen zum Speichern statischer Daten und Anweisungen für den Prozessor/die Prozessoren 1007 enthalten. Eine Speichereinrichtung 1010, wie beispielsweise eine magnetische Diskette oder optische Diskette, kann ebenso vorgesehen und mit dem Bus 1006 zum Speichern von Daten und Instruktionen für den Prozessor/die Prozessoren 1007 vorgesehen sein.
-
Ein Computersystem 1000 kann über den Bus 1006 mit einer Display-Einrichtung 1011 gekoppelt sein, enthaltend, aber nicht beschränkt auf einen Röhrenmonitor (CRT) oder einen Flüssigkristallmonitor (LCD) zum Anzeigen von Information für den Nutzer. Eine Eingabeeinrichtung 1012, beispielsweise alphanumerische und andere Tasten, sind mit dem Bus 1006 zum Kommunizieren von Information und Befehlsauswahlen an den Prozessor/die Prozessoren 1007 vorgesehen.
-
Entsprechend einer Ausführungsform führt ein individuelles Computersystem 1000 spezifische Operationen aus, in dem sein jeweiliger Prozessor/seine jeweiligen Prozessoren 1007 ein oder mehrere Folgen von einer oder mehrerer Anweisungen, die in dem Hauptspeicher 1008 enthalten sind, ausführen. Derartige Anweisungen können in den Hauptspeicher 1008 von einem anderen Computer verwendbarem Medium, wie dem ROM 1009 oder der Speichereinrichtung 1010, eingelesen werden. Die Ausführung der Folgen von Anweisungen, die in dem Hauptspeicher 1008 enthalten sind, bewirkt, dass der Prozessor/die Prozessoren 2007 die hierin beschriebenen Verfahren durchführen. In alternativen Ausführungsformen können fest verdrahtete Schaltkreise anstelle oder in Kombination mit Software-Anweisungen verwendet werden. Daher sind die Ausführungsformen nicht auf eine spezifische Kombination aus Hardware-Schaltkreisen und/oder Software beschränkt.
-
Der Begriff „computerverwendbares Medium“, wie er hierin verwendet wird, bezieht sich auf jegliches Medium, das Information bereitstellt oder von dem Prozessor/den Prozessoren 1007 verwendbar ist. Ein solches Medium kann verschiedene Formen annehmen, einschließlich, aber nicht beschränkt auf nicht flüchtige, nicht flüchtige Medien und Übertragungsmedien. Nicht flüchtige Medien, d.h. Medien, die Informationen auch in Abwesenheit von Energie behalten können, umfassen den ROM 1009, CD-ROM, Magnetband und magnetische Disketten. Flüchtige Medien, d.h. Medien, die Information in Abwesenheit von Energie nicht behalten können, umfassen den Hauptspeicher 1008. Übertragungsmedien umfassen Koaxialkabel, Kupferdrähte und optische Fasern, einschließlich der Drähte, die den Bus 1006 bilden. Übertragungsmedien können auch die Form von Trägerwellen annehmen; d.h. elektromagnetische Wellen, die in Frequenz, Amplitude oder Phase moduliert werden können, um Informationssignale zu übertragen. Zusätzlich können Übertragungsmedien die Gestalt von Akustik- oder Lichtwellen annehmen, wie diejenigen, die während Radioübertragungen und Infrarotdatenkommunikation erzeugt werden. In der vorangegangenen Beschreibung wurden die Ausführungsformen mit Bezug auf spezifische Elemente beschrieben. Es ist jedoch ersichtlich, dass unterschiedliche Modifikationen und Veränderungen gemacht werden können, ohne vom breiteren Geist und Umfang der Ausführungsformen abzuweichen. Beispielsweise sollte der Leser verstehen, dass die spezifische Reihenfolge und Kombination der Verfahrensschritte, die in den Verfahrensflussdiagrammen gezeigt und hierin beschrieben ist, lediglich Darstellungszwecken dient und dass unterschiedliche oder zusätzliche Verfahrensschritte oder eine andere Kombination oder Reihenfolge der Verfahrensschritte verwendet werden kann, um die Ausführungsformen zu verwirklichen. Die Beschreibung und Zeichnungen sind dementsprechend darstellungsmäßig und nicht einschränkend zu verstehen.
-
Es sollte auch beachtet werden, dass die vorliegende Erfindung auf einer Reihe von Computersystemen verwirklicht werden kann. Die unterschiedlichen hierin beschriebenen Verfahren können in Hardware oder Software oder einer Kombination aus beidem implementiert werden. Vorzugsweise werden die Verfahren in Computerprogrammen implementiert, die auf programmierbaren Computern ausgeführt werden, die einen Prozessor, ein von dem Prozessor lesbares Speichermedium (einschließlich flüchtiger und nicht flüchtiger Speicher und/oder Speicherelemente), wenigstens eine Eingabeeinrichtung und wenigstens eine Ausgabeeinrichtung enthalten. Programmcode wird auf mittels der Eingabeeinrichtung eingegebene Daten angewandt, um die zuvor beschriebenen Funktionen auszuführen und Ausgabeinformation zu erzeugen. Die Ausgabeinformation wird auf eine oder mehrere Ausgabeeinrichtungen angewandt. Jedes Programm ist vorzugsweise in einer höheren prozeduralen oder objektorientierten Programmiersprache zum Kommunizieren mit einem Computersystem implementiert. Jedoch können die Programme auch in Assembly oder Maschinensprache, wenn gewünscht, implementiert sein. In jedem Fall kann die Sprache eine kompilierte oder interpretierte Sprache sein. Jedes solches Computerprogramm ist vorzugsweise auf einem Speichermedium oder Speichereinrichtung (beispielsweise ROM oder magnetische Diskette) gespeichert, die auf einem programmierbaren Universalcomputer oder Spezialcomputer lesbar ist, zum Konfigurieren und Betreiben des Computers, wenn das Speichermedium oder die Speichereinrichtung von dem Computer gelesen wird, um die zuvor beschriebenen Prozeduren auszuführen. Das System kann ebenso als computerlesbares Speichermedium implementiert werden, das mit einem Computerprogramm konfiguriert ist, wobei das derart konfigurierte Speichermedium bewirkt, dass ein Computer auf spezifische Weise und vordefinierte Weise betrieben wird. Ferner können die Speicherelemente der beispielhaften Computeranmeldung relational oder sequenziell (flat file) Computerdatenbanken sein, die in der Lage sind, Daten in unterschiedlichen Kombinationen und Konfigurationen zu speichern.
-
11 ist ein Flussdiagramm, das ein Verfahren zum Durchführen der offenbarten Verfahren zeigt, aber es sollte beachtet werden, dass die hierin beschriebenen Verfahren mit Bezug auf die verbleibenden Figuren auf ähnliche Weise die zur Verfügung stehenden Verfahren umfassen. Wie in 11 dargestellt, umfasst das Verfahren bei 1102 das Berechnen eines Intensitätswerts eines unten rechts benachbarten Pixels des momentanen Kodierungsblocks, wie eine Kodierungseinheit oder eines Luma- oder Chromablocks. Bei 1104 kann der untere rechte Intensitätswert mit einem benachbarten Pixel aus der Spalte von vertikalen Randpixeln auf der linken Seite des momentanen Kodierungsblocks verwendet werden, um die Intensitätswerte der benachbarten Pixel in einer Reihe entlang der Unterseite des momentanen Blocks zu berechnen. Bei 1106 kann der untere rechte Intensitätswert mit einem Intensitätswert eines benachbarten Pixels aus der Reihe von horizontalen Randpixeln auf der Oberseite des momentanen Kodierungsblocks verwendet werden, um den Intensitätswert für die benachbarten Pixel in einer Spalte entlang der rechten Seite des momentanen Blocks zu berechnen. Das Verfahren umfasst bei 1108 und 1110 ferner das Berechnen eines ersten und zweiten Prädiktors und bei 1112 umfasst das Verfahren das Ableiten des Prädiktionspixelwerts aus dem ersten und zweiten Prädiktor, wobei eine Mehrzahl von Prädik-tionspixelwerten einen Prädiktionsblock bilden.
-
12 ist eine hochlevelige Ansicht eines Source Device 12 und eines Destination Device 10, die Merkmale der hierin beschriebenen Systeme und Devices enthalten können. Wie in 12 dargestellt, enthält das beispielhafte Videokodierungssystem 10 ein Source Device 12 und ein Destination Device 14, wobei in diesem Beispiel das Source Device 12 enkodierte Videodaten erzeugt. Entsprechend kann Source Device 12 auch als Video Encoding Device bezeichnet werden. Das Destination Device 14 kann die von dem Source Device 12 erzeugten enkodierten Videodaten dekodieren. Entsprechend kann das Destination Device 14 als Video Decoding Device bezeichnet werden. Das Source Device 12 und das Destination Device 14 können Beispiele von Videokodierungsvorrichtungen sein.
-
Das Destination Device 14 kann über einen Kanal 16 enkodierte Videodaten von dem Source Device 12 empfangen. Der Kanal 16 kann eine Art von Medium oder ein Device aufweisen, das geeignet ist, die enkodierten Videodaten von dem Source Device 12 zu dem Destination Device 14 zu bewegen. In einem Beispiel kann der Kanal 16 ein Kommunikationsmedium umfassen, das es dem Source Device 12 ermöglicht, enkodierte Videodaten direkt zu dem Destination Device 14 in Echtzeit zu übertragen.
-
In diesem Beispiel kann das Source Device 12 die enkodierten Videodaten entsprechend einem Kommunikationsstandard modulieren, wie einem drahtlosen Kommunikationsprotokoll, und kann die modulierten Videodaten zum Destination Device 14 übertragen. Das Kommunikationsmedium kann ein drahtloses oder drahtgebundenes Kommunikationsmedium, wie etwa ein Radiofrequenzspektrum (RF) oder eine oder mehrere physische Übertragungsleitungen umfassen. Das Kommunikationsmedium kann Teil eines paketbasierten Netzwerks wie etwa eines lokalen Netzwerks, eines Großraumnetzwerks oder eines globalen Netzwerks, wie etwa das Internet, sein. Das Kommunikationsmedium kann Router, Switches, Basisstationen oder andere Ausrüstung enthalten, welche die Kommunikation von dem Source Device 12 zu dem Destination Device 14 erleichtern. In einem anderen Beispiel kann der Kanal 16 einem Speichermedium, welches die von dem Source Device 12 erzeugten enkodierten Videodaten speichert, entsprechen.
-
In dem Beispiel aus 12 enthält das Source Device 12 eine Videoquelle 18, einen Video-Enkoder 20 und eine Ausgabeschnittstelle 22. In einigen Fällen kann das Ausgabeinterface 28 einen Modulator/Demodulator (Modem) und/oder einen Transmitter enthalten. Im Source Device 12 kann die Videoquelle 18 eine Quelle wie etwa eine Videoaufnahmeeinrichtung, beispielsweise eine Videokamera, ein Videoarchiv, das zuvor aufgenommene Videodaten enthält, oder eine Video Feed Schnittstelle zum Empfangen von Videodaten von einem Video Content Provider und/oder Computer-Graphiksystem zum Erzeugen von Videodaten oder eine Kombination von solchen Quellen enthalten.
-
Der Video-Enkoder 20 kann die aufgenommenen, voraufgenommenen oder computergenerierten Videodaten enkodieren. Eine Eingabebild kann von dem Video-Enkoder 20 empfangen und in dem Eingangsframespeicher 21 gespeichert werden. Der Allzweckprozessor 23 kann die Information von dort laden und die Enkodierung durchführen. Das Programm zum Betreiben des Allzweckprozessors kann von einer Speichereinrichtung, wie etwa den in 12 dargestellten Speichermodulen, geladen werden.
-
Der Allzweckprozessor kann Prozessorspeicher 22 zum Durchführen des Enkodierens benutzen und die Ausgabe der enkodierten Information von dem Allzweckprozessor kann in einem Puffer, wie dem Ausgangspuffer 26, gespeichert werden.
-
Der Video-Enkoder 20 kann ein Resampling Modul 25 enthalten, das ausgebildet ist, Videodaten in einem skalierbaren Kodierungsschema zu kodieren (beispielsweise zu enkodieren), das wenigstens eine Basisschicht und wenigstens eine Verstärkungsschicht definiert. Das Resampling Modul 25 kann wenigstens einige Videodaten als Teil des Enkodierungsprozesses resamplen, wobei das Resampling auf adaptive Weise unter Verwendung von Resampling Filtern durchgeführt werden kann.
-
Die enkodierten Videodaten, beispielsweise ein kodierter Bitstrom, können direkt zu dem Destination Device 14 über die Ausgabeschnittstelle 28 des Source Devices 12 übertragen werden. In dem Beispiel aus 12 enthält das Destination Device 14 eine Eingabeschnittstelle 38, einen Video-Dekoder 30 und eine Display-Einrichtung 32. In einigen Fällen kann die Eingabeschnittstelle 28 einen Empfänger und/oder ein Modem enthalten. Die Eingabeschnittstelle 38 des Destination Device 14 empfängt die enkodierten Videodaten über den Kanal 16. Die enkodierten Videodaten können eine Variation von durch den Video-Enkoder 20 erzeugten Syntaxelementen enthalten, welche die Videodaten repräsentieren. Derartige Syntaxelemente können in den enkodierten Videodaten enthalten sein, die über ein Kommunikationsmedium übertragen, auf einem Speichermedium gespeichert oder auf einem Dateiserver gespeichert werden.
-
Die enkodierten Videodaten können auch auf einem Speichermedium oder einem Dateiserver für späteren Zugriff durch das Destination Device 14 zum Dekodieren und/oder Wiedergeben gespeichert werden. Beispielsweise kann der kodierte Bitstrom temporär in dem Eingangspuffer 31 gespeichert und anschließend in den Allzweckprozessor 33 geladen werden. Das Programm zum Betreiben des Allzweckprozessors kann von einer Speichereinrichtung oder einem Speicher geladen werden. Der Allzweckprozessor kann einen Prozessorspeicher 32 zum Durchführen des Dekodierens verwenden. Der Video-Dekoder 30 kann ebenso ein Resampling Modul 35 ähnlich zu dem von dem Video-Enkoder 20 verwendeten Resampling Modul 25 enthalten.
-
12 zeigt das Resampling Modul 35 getrennt von dem Allzweckprozessor 33, aber der Fachmann erkennt, dass die Resampling Funktion von einem auf dem Allzweckprozessor ausgeführten Programm durchgeführt werden kann und dass das Verarbeiten in dem Video-Enkoder durch Verwenden eines oder mehrerer Prozessoren erreicht werden kann. Die dekodierten Bilder können in dem Ausgangs-Frame-Buffer 36 gespeichert und sodann an die Eingabeschnittstelle 38 ausgesendet werden.
-
Die Display-Einrichtung 38 kann in das Destination Device 14 integriert oder extern sein. In einigen Beispielen kann das Destination Device 14 eine integrierte Display-Einrichtung enthalten und kann ebenso ausgebildet sein, mit einer externen Display-Einrichtung zusammenzuarbeiten. In anderen Beispielen kann das Destination Device 14 eine Display-Einrichtung sein. Allgemein zeigt die Display-Einrichtung 38 die dekodierten Videodaten einem Nutzer an.
-
Der Video-Enkoder 20 und Video-Dekoder 30 können entsprechend einem Video-Kompressionsstandard betrieben werden. ITU-T VCEG (Q6/16) und ISO/IEC MPEG (JTC 1/SC 29/WG 11) untersuchen den möglichen Bedarf für die Standardisierung zukünftiger Video-Kodierungstechnologie mit einer Kompressionsfähigkeit, die signifikant über den momentanen High Efficiency Video Coding HEVC-Standard hinausgeht (einschließlich seiner derzeitigen Erweiterungen und kurzfristigen Erweiterungen für Bildschirminhalt-Kodierung und High Dynamic Range Kodierung). Die Gruppen arbeiten bei diesen Entdeckungsaktivitäten in einer gemeinsamen Kollaboration zusammen, die als Joint Video Exploration Team (JVET) bekannt ist, um die von ihren Experten auf diesem Gebiet vorgeschlagenen Kompressionstechnologie-Designs zu evaluieren. Ein kürzlicher Stand der JVET-Entwicklung ist in „Algorithm Description of Joint Exploration Test Model 5 (JEM 5)“, JVET-E1001-V2, verfasst von J. Chen, E. Alshina, G. Sullivan, J. Ohm, J. Boyce, beschrieben.
-
Alternativ oder zusätzlich können der Video-Enkoder 20 und der Video-Dekoder 30 entsprechend anderer proprietärer oder industrieller Standards, die mit den offenbarten JVET-Merkmalen funktionieren, betrieben werden. Daher können auch andere Standards, wie etwa ITU-T H.264 Standard, auch genannt MPEG-4, Part 10, Advanced Video Coding (AVC), oder Erweiterungen solcher Standards verwendet werden. Daher sind die hierin offenbarten Verfahren nicht auf einen speziellen Kodierungsstandard oder Kodierungsverfahren beschränkt, obschon sie für den neu entwickelten JVET gedacht sind. Andere Beispiele von Video-Kompressionsstandards und -Verfahren umfassen MPEG-2, ITU-T H.263 und proprietäre oder Open Source Kompressionsformate und verwandte Formate.
-
Der Video-Enkoder 20 und der Video-Dekoder 30 können in Hardware, Software, Firmware oder irgendeiner Kombination davon verwirklicht werden. Beispielsweise können der Video-Enkoder 20 und Dekoder 30 einen oder mehrere Prozessoren, digitale Signalprozessoren (DSP), applikationsspezifische integrierte Schaltkreise (ASICs), Field Programmable Gate Arrays (FPGAs), diskrete Logik oder jegliche Kombination davon verwenden. Wenn der Video-Enkoder 20 und Dekoder 30 teilweise in Software implementiert sind, kann ein Device Anweisungen für die Software in geeignetem, nicht flüchtigem computerlesbarem Speichermedium speichern und die Anweisungen in der Hardware unter Verwendung eines oder mehrerer Prozessoren zum Durchführen der Verfahren dieser Offenbarung ausführen. Jeder Video-Enkoder 20 und jeder Video-Dekoder 30 kann in einen oder mehrere Enkoder oder Dekoder, der jeweils auch als Teil eines kombinierten Enkoders/Dekoders in einem entsprechenden Device integriert sein kann (CODEC) enthalten.
-
Aspekte des hierin beschriebenen Gegenstandes können im allgemeinen Kontext computerausführbare Anweisungen, wie Programmmodule, die von einem Computer ausgeführt werden, beschrieben werden, wie z.B. Allzweckprozessoren 23 und 33. Allgemein enthalten Programmmodule Routinen, Programme, Objekte, Komponenten, Datenstrukturen usw., welche spezifische Aufgabe durchführen oder bestimmte abstrakte Datentypen implementieren. Aspekte des hierin beschriebenen Gegenstandes können auch in verteilten Rechnerumgebungen verwirklicht werden, wobei Aufgaben durch Remote Processing Devices, die über ein Kommunikationsnetzwerk verbunden sind, durchgeführt werden. In einer verteilten Rechenumgebung können Prorammmodule sowohl in lokalen als auch Remote-Computerspeichermedien, einschließlich Memory Story Devices, untergebracht sein.
-
Beispiele des Speichers umfassen Random Access Memory (RAM), Read Only Memory (ROM), oder beides. Speicher kann Anweisungen speichern, wie etwa Quellcode oder Binärcode, zum Durchführen der hierin beschriebenen Verfahren. Der Speicher kann ebenso zum Speichern von Variablen oder anderer Zwischeninformation während des Ausführens der durch den Prozessor auszuführenden Anweisungen verwendet werden, wie etwa dem Prozessor 23 und 33.
-
Eine Speichereinrichtung kann ebenso Anweisungen speichern, Anweisungen wie etwa Quellcode oder Binärcode zum Durchführen der hierin beschriebenen Verfahren. Eine Speichereinrichtung kann zusätzlich von dem Computerprozessor verwendete und manipulierte Daten speichern. Beispielsweise kann die Speichereinrichtung in einem Video-Enkoder 20 oder einem Video-Dekoder 30 eine von dem Computersystem 23 oder 33 zugreifbare Datenbank sein. Andere Beispiele für Speichereinrichtungen umfassen Random Access Memory (RAM), Read Only Memory (ROM), eine Festplatte, eine magnetische Diskette, eine optische Diskette, eine CD-ROM, eine DVD, Flash Speicher, USB-Speicherkarten oder jedes andere Medium, von dem ein Computer lesen kann.
-
Ein Speicher oder eine Speichereinrichtung kann ein Beispiel für ein nicht flüchtiges computerlesbares Speichermedium zur Verwendung durch oder in Verbindung mit einem Video-Enkoder und/oder Dekoder sein. Das nicht flüchtige computerlesbare Speichermedium enthält Anweisungen zum Steuern eines Computersystems derart, dass es zum Durchführen der hierin beschriebenen Funktionen und speziellen Ausführungsformen konfiguriert wird. Die Anweisungen, wenn sie von einem oder mehreren Computerprozessoren ausgeführt werden, können konfiguriert sein, hierin beschriebene spezifische Ausführungsformen durchzuführen.
-
Ferner wird darauf hingewiesen, dass einige Ausführungsformen als ein Verfahren beschrieben wurden, das als Flussdiagramm oder Blockdiagramm dargestellt werden kann. Obwohl jedes Diagramm die Operationen als einen sequentiellen Prozess beschreibt, können viele der Operationen parallel oder gleichzeitig ausgeführt werden. Zusätzlich kann die Reihenfolge der Operationen geändert werden. Ein Prozess kann ferner zusätzliche Schritte, die nicht in den Figuren dargestellt sind, enthalten.
-
Einzelne Ausführungsformen können in einem nicht flüchtigen computerlesbaren Speichermedium zur Verwendung durch oder in Verbindung mit dem Anweisungsausführungssystem, -apparat, -system oder -maschine implementiert werden. Das computerlesbare Speichermedium enthält Anweisungen, ein Computersystem derart zu steuern, dass ein Verfahren entsprechend einer hier vorgestellten Ausführungsform durchgeführt wird. Das Computersystem kann ein oder mehrere Computervorrichtungen enthalten. Die Anweisungen, wenn sie von einem oder mehreren Computerprozessoren ausgeführt werden, kann konfiguriert sein, eine bestimmte beschriebene Ausführungsform auszuführen.
-
Wie hierin in der Beschreibung und auch in den Ansprüchen verwendet, enthalten die Artikel „ein/einer/eines“ und „der/die/das“ den Plural, außer aus dem Kontext ergibt sich klar etwas Anderes. Ferner, wie hier in der Beschreibung und in den Ansprüchen verwendet, enthält der Begriff „in“ die Bedeutung „in“ und „auf“, außer aus dem Kontext ergibt sich klar etwas Anderes.
-
Obwohl der Gegenstand in einer Sprache beschrieben worden ist, die sich spezifisch auf die strukturellen Merkmale und/oder Verfahrensschritte bezieht, sollte verstanden werden, dass der durch die angehängten Ansprüche definierte Gegenstand nicht notwendigerweise durch die spezifischen Merkmale oder Schritte, die zuvor beschrieben wurden, beschränkt sind.
-
Obwohl die hierin beschriebenen Ausführungsformen detailliert und in einer Sprache spezifisch für die strukturellen Merkmale und/oder Verfahrensschritte beschrieben worden sind, sollte verstanden werden, dass die Fachleute wahrnehmen, dass viele zusätzliche Modifikationen der Ausführungsbeispiele möglich sind, ohne substantiell von den neuen Lehren und Vorteilen der Erfindung abzuweichen. Überdies sollte verstanden werden, dass der durch die angehängten Ansprüche definierte Gegenstand nicht notwendigerweise auf die spezifischen Merkmale oder Schritte, die zuvor beschrieben wurden, beschränkt ist. Entsprechend können diese und alle Modifikationen, die beabsichtigterweise im Umfang dieser Erfindung enthalten sind, in Übereinstimmung mit den angehängten Ansprüchen in Breite und Umfang ausgelegt werden.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-
- US 62/439723 [0001]
- US 62/440379 [0001]
- US 62/459797 [0001]
- US 62/522420 [0001]
- US 62/482178 [0001]