DE112015004764T5 - Kontinuierlicher prädiktionsbereich - Google Patents

Kontinuierlicher prädiktionsbereich Download PDF

Info

Publication number
DE112015004764T5
DE112015004764T5 DE112015004764.6T DE112015004764T DE112015004764T5 DE 112015004764 T5 DE112015004764 T5 DE 112015004764T5 DE 112015004764 T DE112015004764 T DE 112015004764T DE 112015004764 T5 DE112015004764 T5 DE 112015004764T5
Authority
DE
Germany
Prior art keywords
block
frame
spherical
video
tile
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
DE112015004764.6T
Other languages
English (en)
Inventor
Adrian William Grange
Alexander Jay Converse
Jim Bankoski
Debargha Mukherjee
Riley Adams
Andrew Ian Russell
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
Priority claimed from US14/518,956 external-priority patent/US9918082B2/en
Priority claimed from US14/519,006 external-priority patent/US9918094B2/en
Priority claimed from US14/518,779 external-priority patent/US20160112713A1/en
Priority claimed from US14/518,710 external-priority patent/US9917877B2/en
Application filed by Google LLC filed Critical Google LLC
Publication of DE112015004764T5 publication Critical patent/DE112015004764T5/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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/597Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
    • 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/167Position within a video image, e.g. region of interest [ROI]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/107Selection of coding mode or of prediction mode between spatial and temporal predictive coding, e.g. picture refresh
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • 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/174Methods 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 slice, e.g. a line of blocks or a group of blocks
    • 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
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • 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/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/698Control of cameras or camera modules for achieving an enlarged field of view, e.g. panoramic image capture

Landscapes

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

Abstract

Ein Verfahren für die Codierung eines sphärischen Videos wird offenbart. Das Verfahren beinhaltet die Abbildung eines Frames des sphärischen Videos auf einer zweidimensionalen Darstellung auf Basis einer Projektion. Des Weiteren beinhaltet das Verfahren in einem Prädiktionsprozess die Ermittlung, ob sich mindestens ein Block der einem Prädiktionsschema zugeordnet ist, an einer Grenze der zweidimensionalen Darstellung befindet, und, nach dem Ermitteln, dass sich der mindestens eine Block, der dem Prädiktionsschema zugeordnet ist, an der Grenze befindet, das Auswählen eines benachbarten Endblocks als ein Block einschließlich mindestens eines Pixels für die Verwendung während des Prädiktionsprozesses, wobei der benachbarte Endblock zwei oder mehr Grenzen der zweidimensionalen Darstellung zugeordnet ist.

Description

  • VERWANDTE ANWENDUNGEN
  • Diese Anmeldung beansprucht Priorität und Nutzen aus der nicht provisorischen US-Patentanmeldung Nr. 14/518,956, eingereicht am 20. Oktober 2014, mit dem Titel „CONTINUOUS PREDICTION DOMAIN”, der nicht provisorischen US-Patentanmeldung Nr. 14/519,006, eingereicht am 20. Oktober 2014, unter dem Titel „COMPRESSING AND REPRESENTING MULTI-VIEW VIDEO”, der nicht provisorischen US-Patentanmeldung Nr. 14/518,710, eingereicht am 20. Oktober 2014, unter dem Titel „STREAMING THE VISIBLE PARTS OF A SPHERICAL VIDEO”, und der nicht provisorischen US-Patentanmeldung Nr. 14/518,779, eingereicht am 20. Oktober 2014, unter dem Titel „MAPPING SPHERICAL IMAGE TO 2D REPRESENTATIONS”, deren Inhalt durch Bezugnahme vollständig hierin aufgenommen wird.
  • TECHNISCHES GEBIET
  • Ausführungsformen beziehen sich auf die Codierung und Decodierung eines sphärischen Bildes und eines sphärischen Videos. Ausführungsformen beziehen sich auf das Streamen sphärischer Videos.
  • HINTERGRUND
  • Normalerweise wählt ein herkömmliches, zweidimensionales (2D) Intraprädiktionsschema eine Grenze von 1, 2, 3... n Pixeln links und über dem zu codierenden Block für die Ermittlung von Resten aus einem oberen oder linken rekonstruierten Block. Des Weiteren wird in einem Intraprädiktionsschema ein Referenzblock ähnlich dem zu codierenden Block mithilfe einer Bewertungsfunktion innerhalb eines Suchbereichs von mindestens einem Referenzbild gesucht. Jedoch kann es sein, dass es während der Intraprädiktion entlang einer Grenze eines 2D-Frames oder -Bildes nicht mindestens einen oberen oder linken rekonstruierten Block gibt. Des Weiteren kann der Suchbereich entlang der Grenze während der Interprädiktion begrenzt sein. Daher besteht die Notwendigkeit eines Intra-/Interprädiktionsschemas, in dem Eigenschaften eines 2D-Frames oder -Bildes, das einem sphärischen Video oder Bild entspricht, genutzt werden können.
  • Das Streamen des sphärischen Videos (oder eines anderen dreidimensionalen Videos) kann eine erhebliche Menge an Systemressourcen verbrauchen. Ein codiertes sphärisches Video kann zum Beispiel eine große Anzahl an Bits für die Übertragung beinhalten, die eine erhebliche Menge der Bandbreite sowie der Verarbeitung und des Speichers verbrauchen können, die Codierern und Decodierern zugewiesen sind.
  • Bei der Codierung von Bildern und/oder Frames eines Videos werden Codierer und Decodierer normalerweise auf einer zweidimensionalen (2D) Palette betrieben. Sphärische Bilder und Videos sind dreidimensional, daher sind herkömmliche Codierer und Decodierer nicht in der Lage, sphärische Bilder und Videos zu codieren/decodieren.
  • KURZDARSTELLUNG
  • Exemplarische Ausführungsformen beschreiben Techniken für die Umwandlung sphärischer Bilder und Videos in 2D-Darstellungen und die Nutzung spezieller Eigenschaften der 2D-Darstellungen während der Codierung/Decodierung der Bilder und/oder Frames eines Videos.
  • In einem allgemeinen Aspekt kann ein Verfahren für das Codieren eines sphärischen Videos die Abbildung eines Frames des sphärischen Videos auf einer zweidimensionalen Darstellung auf Basis einer Projektion beinhalten. Des Weiteren kann das Verfahren in einem Prädiktionsprozess das Ermitteln beinhalten, ob sich mindestens ein Block, der einem Prädiktionsschema zugeordnet ist, an einer Grenze der zweidimensionalen Darstellung befindet, und, nach dem Ermitteln, dass sich der mindestens eine Block, der dem Prädiktionsschema zugeordnet ist, an der Grenze befindet, das Auswählen eines benachbarten Endblocks als ein Block einschließlich mindestens eines Pixels für die Verwendung während des Prädiktionsprozesses, wobei der benachbarte Endblock zwei oder mehr Grenzen der zweidimensionalen Darstellung zugeordnet ist.
  • Implementierungen können eines oder mehrere der folgenden Merkmale beinhalten. Der Prädiktionsprozess kann zum Beispiel ein Intraprädiktionsprozess sein, der mindestens eine Block, der dem Prädiktionsschema zugeordnet ist, kann ein zu codierender Block sein, und der benachbarte Endblock kann als ein linker rekonstruierter Block oder ein oberer rekonstruierter Block des zu codierenden Blocks ausgewählt werden. Der Prädiktionsprozess kann ein Interprädiktionsprozess sein und der mindestens eine Block, der dem Prädiktionsschema zugeordnet ist, kann ein Block sein, der in einer Vielzahl von Blöcken in einem Referenzframe enthalten ist, in dem nach einem übereinstimmenden Block gesucht werden soll. Der Prädiktionsprozess kann ein Interprädiktionsprozess sein und der mindestens eine Block, der dem Prädiktionsschema zugeordnet ist, kann als Prädiktionsblock aus einer Vielzahl von Blöcken in einem zu durchsuchenden Referenzframe ausgewählt werden, wobei die Vielzahl von Blöcken eine Grenze des Referenzframes queren.
  • Die Abbildung des Frames des sphärischen Videos auf der zweidimensionalen Darstellung kann zum Beispiel die Verwendung einer Gleichung beinhalten, die auf einer äquirektangulären Projektion basiert. Die Abbildung des Frames des sphärischen Videos auf der zweidimensionalen Darstellung kann die Verwendung einer Gleichung beinhalten, die auf einer semi-äquirektangulären Projektion basiert. Das Verfahren kann zum Beispiel des Weiteren nach dem Ermitteln, dass sich der zu codierende Block von der Grenze entfernt befindet, in einem Intraprädiktionsprozess das Auswählen eines benachbarten Blocks als Vorlage beinhalten, wobei der benachbarte Endblock mindestens ein linker rekonstruierter Block oder ein oberer rekonstruierter Block des zu codierenden Blocks ist. Die Auswahl des benachbarten Endblocks beinhaltet das Auswählen eines rekonstruierten Blocks aus mindestens einem entgegengesetzten Ende einer gleichen Reihe wie dem Block, der dem Prädiktionsschema zugeordnet ist, oder einem entgegengesetzten Ende derselben Spalte wie der zu codierende Block. Die Auswahl des benachbarten Endblocks beinhaltet das Auswählen eines rekonstruierten Blocks aus einer Lookup-Tabelle.
  • Das Verfahren kann zum Beispiel des Weiteren das Erzeugen mindestens eines Rests auf Basis nicht codierter Pixel eines zu codierenden Blocks beinhalten, das Codieren des mindestens einen Rests durch Anwendung einer Transformation auf einen restlichen Block einschließlich des mindestens einen Rests, das Quantisieren von Transformationskoeffizienten, die dem codierten mindestens einen Rest zugeordnet sind, das Entropiecodieren der quantisierten Transformationskoeffizienten als ein komprimierter Videobit-Datenstrom und das Übertragen des komprimierten Videobit-Datenstroms einschließlich eines Headers, der einen Intraframe-Codiermodus angibt, wobei der Intraframe-Codiermodus eine Technik angibt, die während der Abbildung des Frames des sphärischen Videos auf der zweidimensionalen Darstellung verwendet wird.
  • In einem allgemeinen Aspekt beinhaltet ein Verfahren für die Decodierung eines sphärischen Videos das Empfangen eines codierten Bit-Datenstroms einschließlich eines Headers, der einen Intraframe-Codiermodus angibt, wobei der Intraframe-Codiermodus eine Technik angibt, die während einer Umwandlung eines Frames eines sphärischen Videos in eine zweidimensionale Darstellung verwendet wird. Des Weiteren kann das Verfahren in einem Prädiktionsprozess die Ermittlung beinhalten, ob sich mindestens ein Block, der einem Prädiktionsschema zugeordnet ist, an einer Grenze der zweidimensionalen Darstellung befindet, nach dem Ermitteln, dass sich der mindestens eine Block, der dem Prädiktionsschema zugeordnet ist, an der Grenze befindet, das Auswählen eines benachbarten Endblocks als ein Block einschließlich mindestens eines Pixels für die Verwendung während des Prädiktionsprozesses, wobei der benachbarte Endblock zwei oder mehr Grenzen der zweidimensionalen Darstellung zugeordnet ist. Das Verfahren beinhaltet des Weiteren das Umwandeln der zweidimensionalen Darstellung in einen Frame des sphärischen Videos auf Basis einer zylindrischen Projektion.
  • Implementierungen können eines oder mehrere der folgenden Merkmale beinhalten. Das Umwandeln der zweidimensionalen Darstellung kann zum Beispiel die Abbildung der zweidimensionalen Darstellung auf einem sphärischen Bild mithilfe einer Gleichung beinhalten, die auf der inversen Transformation einer Projektion basiert. Der Prädiktionsprozess kann ein Intraprädiktionsprozess sein, der mindestens eine Block, der dem Prädiktionsschema zugeordnet ist, kann ein zu codierender Block sein, und der benachbarte Endblock kann als ein linker rekonstruierter Block oder ein oberer rekonstruierter Block ausgewählt werden. Der Prädiktionsprozess kann zum Beispiel ein Interprädiktionsprozess sein und der mindestens eine Block, der dem Prädiktionsschema zugeordnet ist, kann ein Block sein, der in einer Vielzahl von Blöcken in einem Referenzframe beinhaltet ist, in dem nach einem übereinstimmenden Block gesucht werden soll. Der Prädiktionsprozess kann ein Interprädiktionsprozess sein und der mindestens eine Block, der dem Prädiktionsschema zugeordnet ist, kann als Prädiktionsblock aus einer Vielzahl von Blöcken in einem zu durchsuchenden Referenzframe ausgewählt werden, wobei die Vielzahl von Blöcken eine Grenze des Referenzframes queren.
  • In einen allgemeinen Aspekt kann auf einem nicht flüchtigen, computerlesbaren Speichermedium computerlesbarer Programmcode gespeichert sein, der, wenn er auf einem Computersystem ausgeführt wird, das Computersystem veranlasst, Schritte einschließlich der Abbildung eines Frames des sphärischen Videos auf einer zweidimensionalen Darstellung auf Basis einer Projektion durchzuführen. Des Weiteren können die Schritte in einem Prädiktionsprozess die Ermittlung beinhalten, ob sich mindestens ein Block, der einem Prädiktionsschema zugeordnet ist, an einer Grenze der zweidimensionalen Darstellung befindet, und, nach dem Ermitteln, dass sich der mindestens eine Block, der dem Prädiktionsschema zugeordnet ist, an der Grenze befindet, das Auswählen eines benachbarten Endblocks als ein Block einschließlich mindestens eines Pixels für die Verwendung während des Prädiktionsprozesses, wobei der benachbarte Endblock zwei oder mehr Grenzen der zweidimensionalen Darstellung zugeordnet ist.
  • Implementierungen können eines oder mehrere der folgenden Merkmale beinhalten. Der Prädiktionsprozess kann zum Beispiel ein Intraprädiktionsprozess sein, der mindestens eine Block, der dem Prädiktionsschema zugeordnet ist, kann ein zu codierender Block sein, und der benachbarte Endblock kann als ein linker rekonstruierter Block oder ein oberer rekonstruierter Block des zu codierenden Blocks ausgewählt werden. Der Prädiktionsprozess kann zum Beispiel ein Interprädiktionsprozess sein und der mindestens eine Block, der dem Prädiktionsschema zugeordnet ist, kann ein Block sein, der in einer Vielzahl von Blöcken in einem Referenzframe beinhaltet ist, in dem nach einem übereinstimmenden Block gesucht werden soll. Der Prädiktionsprozess kann ein Interprädiktionsprozess sein und der mindestens eine Block, der dem Prädiktionsschema zugeordnet ist, kann als Prädiktionsblock aus einer Vielzahl von Blöcken in einem zu durchsuchenden Referenzframe ausgewählt werden, wobei die Vielzahl von Blöcken eine Grenze des Referenzframes queren. Die Auswahl des benachbarten Endblocks kann das Auswählen eines rekonstruierten Blocks aus mindestens einem entgegengesetzten Ende einer gleichen Reihe wie dem Block, der dem Prädiktionsschema zugeordnet ist, oder einem entgegengesetzten Ende derselben Spalte wie der zu codierende Block, beinhalten.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Exemplarische Ausführungsformen werden aus der hierin unten gegebenen genauen Beschreibung und den begleitenden Beschreibungen besser verständlich, wobei ähnliche Elemente durch ähnliche Bezugsnummern dargestellt werden, die nur der Veranschaulichung dienen und somit die exemplarischen Ausführungsformen nicht begrenzen, und wobei:
  • 1A ein Videocodierersystem gemäß mindestens einer exemplarischen Ausführungsform veranschaulicht.
  • 1B ein Videodecodierersystem gemäß mindestens einer exemplarischen Ausführungsform veranschaulicht.
  • 2A ein Flussdiagramm für ein Videocodierersystem gemäß mindestens einer exemplarischen Ausführungsform veranschaulicht.
  • 2B ein Flussdiagramm für ein Videodecodierersystem gemäß mindestens einer exemplarischen Ausführungsform veranschaulicht.
  • 3 eine zweidimensionale (2D) Darstellung einer Kugel gemäß mindestens einer exemplarischen Ausführungsform veranschaulicht.
  • 4A ein sphärisches Bild in einem Zylinder gemäß mindestens einer exemplarischen Ausführungsform veranschaulicht.
  • 4B Blockdiagramme abgewickelter Videoframes/-blöcke oder Bilder/Blöcke gemäß mindestens einer exemplarischen Ausführungsform veranschaulichen.
  • 4C und 4D Lookup-Tabellen (LUT) gemäß mindestens einer exemplarischen Ausführungsform veranschaulichen.
  • 5 ein Flussdiagramm eines Verfahrens für die Abbildung eines sphärischen Frames/Bildes auf einer 2D-Darstellung des sphärischen Frames/Bildes gemäß mindestens einer exemplarischen Ausführungsform ist.
  • 6 und 7 Flussdiagramme eines Verfahrens für die Codierung/Decodierung eines Videoframes gemäß mindestens einer exemplarischen Ausführungsform sind.
  • 8 ein Flussdiagramm eines Verfahrens für die Umwandlung einer 2D-Darstellung eines sphärischen Bildes in einen sphärischen Frame/ein sphärisches Bild gemäß mindestens einer exemplarischen Ausführungsform ist.
  • 9A und 9B eine 2D-Darstellung eines sphärischen Videoframes oder Bildes einschließlich Kacheln gemäß mindestens einer exemplarischen Ausführungsform veranschaulichen.
  • 10 ein System gemäß mindestens einer exemplarischen Ausführungsform veranschaulicht.
  • 11A ein Flussdiagramm für ein Videocodierersystem gemäß mindestens einer exemplarischen Ausführungsform veranschaulicht.
  • 11B und 11C Flussdiagramm für ein Videodecodierersystem gemäß mindestens einer exemplarischen Ausführungsform veranschaulichen.
  • 12 und 13 Verfahren für die Codierung/Decodierung des Streamings von sphärischen Videos gemäß mindestens einer exemplarischen Ausführungsform veranschaulichen.
  • 14A ein weiteres Flussdiagramm für ein Videocodierersystem gemäß mindestens einer exemplarischen Ausführungsform veranschaulicht.
  • 14B ein weiteres Flussdiagramm für ein Videodecodierersystem gemäß mindestens einer exemplarischen Ausführungsform veranschaulicht.
  • 15A und 15B ein Flussdiagramm für ein Videocodierersystem gemäß mindestens einer exemplarischen Ausführungsform veranschaulichen.
  • 16 ein System gemäß mindestens einer exemplarischen Ausführungsform veranschaulicht.
  • 1719 Verfahren für die Codierung des Streamings von sphärischen Videos gemäß mindestens einer exemplarischen Ausführungsform veranschaulichen.
  • 20 ein Verfahren für die Decodierung des Streamings von sphärischen Videos gemäß mindestens einer exemplarischen Ausführungsform veranschaulicht.
  • 21A ein sphärisches Bild gemäß mindestens einer exemplarischen Ausführungsform veranschaulicht.
  • 21B und 21C ein Blockdiagramm einer quadratischen 2D-Darstellung sphärischer Videoframes/-blöcke oder Bilder/Blöcke gemäß mindestens einer exemplarischen Ausführungsform veranschaulichen.
  • 21D ein Blockdiagramm einer rechteckigen 2D-Darstellung sphärischer Videoframes/-blöcke oder Bilder/Blöcke gemäß mindestens einer exemplarischen Ausführungsform veranschaulicht.
  • 21E eine Lookup-Tabelle (LUT) gemäß mindestens einer exemplarischen Ausführungsform veranschaulicht.
  • 21F eine Lookup-Tabelle gemäß mindestens einer exemplarischen Ausführungsform veranschaulicht.
  • 22 ein Flussdiagramm eines Verfahrens für die Abbildung eines sphärischen Frames/Bildes auf einer 2D-Darstellung des sphärischen Frames/Bildes gemäß mindestens einer exemplarischen Ausführungsform ist.
  • 23 und 24 Flussdiagramme eines Verfahrens für die Codierung/Decodierung eines Videoframes gemäß mindestens einer exemplarischen Ausführungsform sind.
  • 25 ein Flussdiagramm eines Verfahrens für die Umwandlung einer 2D-Darstellung eines sphärischen Bildes in einen sphärischen Frame/ein sphärisches Bild gemäß mindestens einer exemplarischen Ausführungsform ist.
  • 26A und 26B Flussdiagramme für ein Verfahrens des Betriebs eines Deblockierungsfilters gemäß mindestens einer exemplarischen Ausführungsform sind.
  • 27 ein schematisches Blockdiagramm eines Computergeräts und eines mobilen Computergeräts ist, das zur Implementierung der hierin beschriebenen Techniken verwendet werden kann.
  • Es sollte beachtet werden, dass diese Figuren dazu gedacht sind, die allgemeinen Eigenschaften der in gewissen exemplarischen Ausführungsformen verwendeten Verfahren, Struktur und/oder Materialien und die unten bereitgestellte schriftliche Beschreibung zu ergänzen. Diese Zeichnungen sind jedoch nicht maßstabsgetreu und es kann sein, dass sie nicht den exakten strukturellen oder Leistungseigenschaften einer bestimmten Ausführungsform entsprechen. Sie sollten nicht als Definition oder Begrenzung des Bereichs der Werte oder Eigenschaften interpretiert werden, die die exemplarischen Ausführungsformen beinhalten. Die relative Dicke oder Positionierung struktureller Elemente können zum Beispiel zur besseren Übersichtlichkeit verkleinert oder vergrößert sein. Die Verwendung von ähnlichen oder identischen Referenznummern in den verschiedenen Zeichnungen soll auf das Vorhandensein von ähnlichen oder identischen Elementen oder Funktionen hinweisen.
  • DETAILLIERTE BESCHREIBUNG DER AUSFÜHRUNGSFORMEN
  • Obwohl exemplarische Ausführungsformen verschiedene Änderungen und alternative Formen beinhalten können, werden dazugehörige Ausführungsformen in den Zeichnungen als Beispiele dargestellt und werden hierin im Detail beschrieben. Es sollte aber beachtet werden, dass es nicht beabsichtigt ist, die exemplarischen Ausführungsformen auf die offenbarten besonderen Formen zu beschränken, sondern dass die exemplarischen Ausführungsformen im Gegenteil alle Änderungen, Äquivalente und Alternativen abdecken sollen, die in den Umfang dieser Ansprüche fallen. In der gesamten Beschreibung der Figuren beziehen sich ähnliche Nummern auf ähnliche Elemente.
  • Im Beispiel in 1A kann ein Videocodierersystem 100 mindestens ein Computergerät sein oder beinhalten und kann praktisch jegliche Computergeräte repräsentieren, die so konfiguriert sind, dass die hierin beschriebenen Verfahren durchgeführt werden können. Als solches kann das Videocodierersystem 100 unterschiedliche Komponenten beinhalten, die für die Implementierung der hier beschriebenen Techniken oder anderer Versionen oder künftiger Versionen davon verwenden werden können. So ist das Videocodierersystem 100 zum Beispiel so veranschaulicht, als ob es jeweils mindestens einen Prozessor 105 sowie mindestens einen Speicher 110 (z. B. ein nicht flüchtiges computerlesbares Speichermedium) beinhaltet.
  • 1A veranschaulicht das Videocodierersystem gemäß mindestens einer exemplarischen Ausführungsform. Wie in 1A dargestellt, beinhaltet das Videocodierersystem 100 den mindestens einen Prozessor 105, den mindestens einen Speicher 110, einen Controller 120, und einen Videocodierer 125. Der mindestens eine Prozessor 105, der mindestens eine Speicher 110, der Controller 120 und der Videocodierer 125 sind kommunikativ durch den Bus 115 gekoppelt.
  • Der mindestens eine Prozessor 105 kann eingesetzt werden, um Anweisungen auszuführen, die im mindestens einen Speicher 110 gespeichert sind, um dadurch die verschiedenen hierin beschriebenen Merkmale und Funktionen oder zusätzliche oder alternative Merkmale und Funktionen auszuführen. Der mindestens eine Prozessor 105 und der mindestens eine Speicher 110 können für verschiedene andere Zwecke genutzt werden. Der mindestens eine Speicher 110 kann insbesondere ein Beispiel verschiedener Arten von Speicher und zugehöriger Hardware und Software darstellen, die dazu verwendet werden könnten, um eines der hierin beschriebenen Module zu implementieren.
  • Der mindestens eine Speicher 110 kann so konfiguriert sein, dass er Daten und/oder Informationen speichert, die dem Videocodierersystem 100 zugeordnet sind. Der mindestens eine Speicher 110 kann zum Beispiel so konfiguriert sein, dass er Codecs speichert, die Intraprädiktion und/oder der Abbildung sphärischer Videos oder Bilder auf 2D-Darstellungen der sphärischen Videos oder Bilder zugeordnet sind. Der mindestens eine Speicher 110 kann eine gemeinsam genutzte Ressource sein. Das Videocodierersystem 100 kann zum Beispiel ein Element eines größeren Systems (z. B. eines Servers, eines PCs, eines Mobilgeräts und dergleichen) sein. Daher kann der mindestens eine Speicher 110 so konfiguriert sein, dass er Daten und/oder Informationen speichert, die anderen Elementen (z. B. Bild-/Videobereitstellung, Webbrowsing oder drahtgebundener/drahtloser Kommunikation) im größeren System zugeordnet ist.
  • Der Controller 120 kann so konfiguriert sein, dass er verschiedene Steuersignale erzeugt und die Steuersignale verschiedenen Blöcken im Videocodierersystem 100 kommuniziert. Der Controller 120 kann so konfiguriert sein, dass er die Steuersignale zur Implementierung der unten beschriebenen Techniken erzeugt. Der Controller 120 kann so konfiguriert sein, dass er den Videocodierer 125 steuert, um ein Bild, eine Reihe von Bildern, ein Videoframe, eine Videosequenz und dergleichen gemäß exemplarischen Ausführungsformen zu codieren. Der Controller 120 kann zum Beispiel Steuersignale erzeugen, die Interprädiktion, Intraprädiktion und/oder der Abbildung sphärischer Videos oder Bilder auf 2D-Darstellungen der sphärischen Videos oder Bilder entsprechen. Nähere Details in Verbindung mit den Funktionen und dem Betrieb des Videocodierer 125 und Controllers 120 werden mindestens in Verbindung mit 5 und 6 beschrieben.
  • Der Videocodierer 125 kann so konfiguriert sein, dass er eine Videodatenstrom-Eingabe 5 empfängt und komprimierte (z. B. codierte) Videobits 10 ausgibt. Der Videocodierer 125 kann die Videodatenstrom-Eingabe 5 in diskrete Videoframes umwandeln. Die Videodatenstrom-Eingabe 5 kann auch ein Bild sein, entsprechend können die komprimierten (z. B. codierten) Videobits 10 auch komprimierte Bildbits sein. Der Videocodierer 125 kann des Weiteren jedes diskrete Videoframe (oder Bild) in eine C×R-Matrix von Blöcken (im Folgenden als Blöcke oder Makroblöcke bezeichnet) umwandeln. Ein Videoframe (oder Bild) kann zum Beispiel in eine Matrix von 16×16, 16×8, 8×8, 4×4 oder 2×2 Blöcken umgewandelt werden, die jeweils eine Anzahl an Pixeln haben. Auch wenn fünf Beispielmatrizen aufgeführt sind, sind exemplarische Ausführungsformen nicht darauf beschränkt.
  • Die komprimierten Videobits 10 können die Ausgabe von Videocodierersystem 100 darstellen. Die komprimierten Videobits 10 können zum Beispiel ein codiertes Videoframe (oder ein codiertes Bild) darstellen. Die komprimierten Videobits 10 können zum Beispiel für die Übertragung an ein Empfangsgerät (nicht dargestellt) bereit sein. Die Videobits können zum Beispiel zu einem System-Sender-Empfänger (nicht dargestellt) für die Übertragung zum Empfangsgerät übertragen werden.
  • Der mindestens eine Prozessor 105 kann so konfiguriert sein, dass er Computeranweisungen ausführt, die dem Controller 120 und/oder dem Videocodierer 125 zugeordnet sind. Der mindestens eine Prozessor 105 kann eine gemeinsam genutzte Ressource sein. Das Videocodierersystem 100 kann zum Beispiel ein Element eines größeren Systems (z. B. eines Mobilgeräts) sein. Daher kann der mindestens eine Prozessor 105 so konfiguriert sein, dass er Computeranweisungen ausführt, die anderen Elementen (z. B. Bild-/Videobereitstellung, Webbrowsing oder drahtgebundener/drahtloser Kommunikation) im größeren System zugeordnet sind.
  • Im Beispiel in 1A kann ein Videodecodierersystem 150 mindestens ein Computergerät sein und kann praktisch jegliche Computergeräte repräsentieren, die so konfiguriert sind, dass die hierin beschriebenen Verfahren durchgeführt werden können. Als solches kann das Videodecodierersystem 150 unterschiedliche Komponenten beinhalten, die für die Implementierung der hier beschriebenen Techniken oder anderer Versionen oder künftiger Versionen davon verwenden werden können. So ist das Videodecodierersystem 150 zum Beispiel so veranschaulicht, als ob es jeweils mindestens einen Prozessor 155 sowie mindestens einen Speicher 160 (z. B. ein computerlesbares Speichermedium) beinhaltet.
  • Somit kann der mindestens eine Prozessor 155 eingesetzt werden, um Anweisungen auszuführen, die im mindestens einen Speicher 160 gespeichert sind, um dadurch die verschiedenen hierin beschriebenen Merkmale und Funktionen oder zusätzliche oder alternative Merkmale und Funktionen auszuführen. Der mindestens eine Prozessor 155 und der mindestens eine Speicher 160 können für verschiedene andere Zwecke genutzt werden. Der mindestens eine Speicher 160 kann insbesondere ein Beispiel verschiedener Arten von Speicher und zugehöriger Hardware und Software darstellen, die dazu verwendet werden könnten, um eines der hierin beschriebenen Module zu implementieren. Gemäß exemplarischen Ausführungsformen können das Videocodierersystem 100 und das Videodecodierersystem 150 im selben größeren System (z. B. einem PC, einem Mobilgerät und dergleichen) enthalten sein. Das Videodecodierersystem 150 kann so konfiguriert sein, dass es die entgegengesetzten oder umgekehrten Vorgänge von Codierer 100 durchführt.
  • Der mindestens eine Speicher 160 kann so konfiguriert sein, dass er Daten und/oder Informationen speichert, die dem Videodecodierersystem 150 zugeordnet sind. Der mindestens eine Speicher 110 kann zum Beispiel so konfiguriert sein, dass er Interprädiktion, Intraprädiktion und/oder die Abbildung sphärischer Videos oder Bilder auf 2D-Darstellungen der sphärischen Videos oder Bilder speichert. Der mindestens eine Speicher 160 kann eine gemeinsam genutzte Ressource sein. Das Videodecodierersystem 150 kann zum Beispiel ein Element eines größeren Systems (z. B. eines PCs, eines Mobilgeräts und dergleichen) sein. Daher kann der mindestens eine Speicher 160 so konfiguriert sein, dass er Daten und/oder Informationen speichert, die anderen Elementen (z. B. Webbrowsing oder drahtloser Kommunikation) im größeren System zugeordnet ist.
  • Der Controller 170 kann so konfiguriert sein, dass er verschiedene Steuersignale erzeugt und die Steuersignale verschiedenen Blöcken im Videodecodierersystem 150 kommuniziert. Der Controller 170 kann so konfiguriert sein, dass er die Steuersignale zur Implementierung der unten beschriebenen Video-Decodierungstechniken erzeugt. Der Controller 170 kann so konfiguriert sein, dass er den Videodecodierer 175 steuert, um ein Videoframe gemäß exemplarischer Ausführungsformen zu decodieren. Der Controller 170 kann so konfiguriert sein, dass er Steuersignale erzeugt, die Intraprädiktion und/oder der Abbildung sphärischer Videos oder Bilder auf 2D-Darstellungen der sphärischen Videos oder Bilder entsprechen. Nähere Details in Verbindung mit den Funktionen und dem Betrieb des Videodecodierers 175 und Controllers 170 werden mindestens in Verbindung mit 7 und 8 beschrieben.
  • Der Videodecodierer 175 kann so konfiguriert sein, dass er eine komprimierte Videobit-Eingabe 10 empfängt und einen Videodatenstrom 5 ausgibt. Der Videodecodierer 175 kann diskrete Videoframes der komprimierten Videobits 10 in den Videodatenstrom 5 umwandeln. Die komprimierten Videobits 10 können auch komprimierte Bildbits sein, entsprechend kann Videodatenstrom 5 auch ein Bild sein.
  • Der mindestens eine Prozessor 155 kann so konfiguriert sein, dass er Computeranweisungen ausführt, die dem Controller 170 und/oder dem Videodecodierer 175 zugeordnet sind. Der mindestens eine Prozessor 155 kann eine gemeinsam genutzte Ressource sein. Das Videodecodierersystem 150 kann zum Beispiel ein Element eines größeren Systems (z. B. eines PCs, eines Mobilgeräts und dergleichen) sein. Daher kann der mindestens eine Prozessor 155 so konfiguriert sein, dass er Computeranweisungen ausführt, die anderen Elementen (z. B. Webbrowsing oder drahtloser Kommunikation) im größeren System zugeordnet sind.
  • 2A und 2B veranschaulichen ein Flussdiagramm für den Videocodierer 125, der in 1A dargestellt ist, bzw. den Videodecodierer 175, der in 1B dargestellt ist, gemäß mindestens einer exemplarischen Ausführungsform. Der Videocodierer 125 (oben beschrieben) beinhaltet einen Block der sphärischen-zu-2D-Darstellung 205, einen Prädiktionsblock 210, einen Transformationsblock 215, einen Quantisierungsblock 220, einen Entropiecodierungsblock 225, einen inversen Quantisierungsblock 230, einen inversen Transformationsblock 235, einen Rekonstruktionsblock 240 und einen Schleifenfilterblock 245. Andere strukturelle Variationen des Videocodierers 125 können verwendet werden, um den Eingabe-Videodatenstrom 5 zu codieren. Wie in 2A dargestellt, stellen gestrichelte Linien einen Rekonstruktionspfad zwischen den verschiedenen Blöcken dar und die durchgezogenen Linien stellen einen Weiterleitungspfad zwischen den verschiedenen Blöcken dar.
  • Jeder der vorher erwähnten Blöcke kann als Softwarecode ausgeführt werden, der in einem Speicher (z. B. dem mindestens einen Speicher 110) gespeichert ist, der einem Videocodierersystem (z. B. wie in 1A dargestellt) zugeordnet ist und durch den mindestens einen Prozessor (z. B. den mindestens einen Prozessor 105) ausgeführt wird, der dem Videocodierersystem zugeordnet ist. Es werden jedoch alternative Ausführungsformen erwägt, wie zum Beispiel ein Videocodierer, der als Spezialprozessor verkörpert ist. Jeder der vorher erwähnten Blöcke kann (allein und/oder in Kombination) eine anwendungsspezifische integrierte Schaltung oder ASIC sein. Die ASIC kann zum Beispiel als Transformationsblock 215 oder Quantisierungsblock 220 konfiguriert sein.
  • Der Block der sphärischen-zu-2D-Darstellung 205 kann so konfiguriert sein, dass er einen sphärischen Frame oder ein sphärisches Bild auf einer 2D-Darstellung des sphärischen Frames oder Bildes abbildet. 4A veranschaulicht zum Beispiel die Kugel 300 (z. B. als einen Frame oder ein Bild) in einem Zylinder 400. Die Kugel 300 kann auf die Oberfläche des Zylinders 400 projiziert werden. Die Projektion kann zum Beispiel äquirektangulär oder semi-äquirektangulär sein. Die Abbildung eines sphärischen Frames oder Bildes auf einer 2D-Darstellung des sphärischen Frames oder Bildes ist unten in Bezug auf 5 genauer beschrieben.
  • Der Prädiktionsblock 210 kann so konfiguriert sein, dass er Videoframe-Kohärenz verwendet (z. B. Pixel, die sich im Vergleich zu früher codierten Pixeln nicht geändert haben). Prädiktion kann zwei Arten beinhalten. Prädiktion kann zum Beispiel Intraframe-Prädiktion und Interframe-Prädiktion beinhalten. Intraframe-Prädiktion bezieht sich auf die Vorhersage der Pixelwerte in einem Block eines Bildes in Bezug auf Referenzmuster in benachbarten, früher codierten Blöcke desselben Bildes. Bei der Intraframe-Prädiktion wird ein Muster aus rekonstruierten Pixeln innerhalb desselben Frames vorhergesagt, um den Restfehler zu verringern, der durch den Transformations(z. B. Entropiecodierungsblock 225)- und Entropiecodierungs(z. B. Entropiecodierungsblock 225)-Teil eines prädiktiven Transformationscodec codiert wird. Interframe-Prädiktion bezieht sich auf die Vorhersage des Pixelwertes in einem Block eines Bildes in Bezug auf Daten mindestens eines früher codierten Bildes.
  • Der Transformationsblock 215 kann so konfiguriert sein, dass er die Werte der Pixel aus der räumlichen Domäne in Transformationskoeffizienten in einer Transformationsdomäne umwandelt. Die Transformationskoeffizienten können einer zweidimensionalen Matrix von Koeffizienten entsprechen, die dieselbe Größe wie der ursprüngliche Block haben können. Mit anderen Worten, es kann so viele Transformationskoeffizienten wie Pixel im ursprünglichen Block geben. Aufgrund der Transformation kann jedoch ein Teil der Transformationskoeffizienten Werte gleich null haben.
  • Der Transformationsblock 215 kann so konfiguriert sein, dass er den Rest (aus Prädiktionsblock 210) in Transformationskoeffizienten verwandelt, zum Beispiel die Frequenzdomäne. Die Transformationen können Karhunen-Loève-Transformation (KLT), diskrete Kosinustransformation (Discrete Cosine Transformm DCT), Singulwertzerlegungstransformation (Singular Value Decomposition Transform, SVD) und asymmetrische diskrete Sinustransformation (Asymmetric Discrete Sine Transform, ADST) beinhalten.
  • Der Quantisierungsblock 220 kann so konfiguriert sein, dass er die Daten in jedem Transformationskoeffizienten verringert. Quantisierung kann die Abbildung von Werten in einem relativ großen Bereich von Werten in einen relativ kleinen Bereich beinhalten, was die Menge der Daten verringert, die zur Darstellung der quantisierten Transformationskoeffizienten erforderlich sind. Der Quantisierungsblock 220 kann die Transformationskoeffizienten in diskrete Quantenwerte umwandeln, die als quantisierte Transformationskoeffizienten oder Quantisierungsstufen bezeichnet werden. Der Quantisierungsblock 220 kann zum Beispiel so konfiguriert sein, dass er Nullen zu den Daten hinzufügt, die dem Transformationskoeffizienten zugeordnet sind. Zum Beispiel kann ein Codierungsstandard 128 Quantisierungsstufen in einem skalaren Quantisierungsprozess definieren.
  • Die quantisierten Transformationskoeffizienten werden dann durch den Entropiecodierungsblock 225 entropiecodiert. Die entropiecodierten Koeffizienten werden dann zusammen mit den Informationen, die zum Decodieren des Blocks erforderlich sind, z. B. verwendete Prädiktion, Bewegungsvektoren und Quantisiererwert, als komprimierte Videobits 10 ausgegeben. Die komprimierten Videobits 10 können mit verschiedenen Verfahren wie Lauflängencodierung (Run-Length Encoding, RLE) und Null-Lauflängencodierung formatiert werden.
  • Der Rekonstruktionspfad in 2A wird dargestellt, um sicherzustellen, dass sowohl der Videocodierer 125 als auch der Videodecodierer 175 (unten in Bezug auf 2B beschrieben) dieselben Referenzframes verwenden, um komprimierte Videobits 10 (oder komprimierte Bildbits) zu decodieren. Der Rekonstruktionspfad führt Funktionen durch, die Funktionen ähnlich sind, die während des Decodierprozesses stattfinden und unten genauer erörtert werden, z. B. inverse Quantisierung der quantisierten Transformationskoeffizienten am inversen Quantisierungsblock 230 und inverse Transformation der inversen quantisierten Transformationskoeffizienten am inversen Transformationsblock 235, um einen derivativen Restblock (derivativen Rest) zu erstellen. Bei Rekonstruktionsblock 240 kann der Prädiktionsblock, der bei Prädiktionsblock 210 vorhergesagt wurde, zum derivativen Restblock hinzugefügt werden, um einen rekonstruierten Block zu erstellen. Der Schleifenfilter 245 kann dann auf den rekonstruierten Block angewendet werden, um Verzerrungen wie Blockartefakte zu verringern.
  • Der oben in Bezug auf 2A beschriebene Videocodierer 125 beinhaltet die dargestellten Blöcke. Exemplarische Ausführungsformen sind jedoch nicht darauf beschränkt. Auf Basis der verschiedenen verwendeten Videocodierkonfigurationen und/oder Techniken können zusätzliche Blöcke hinzugefügt werden. Des Weiteren kann jeder der Blöcke, der im Videocodierer 125 dargestellt ist, der oben in Bezug auf 2A beschrieben wird, optionale Blöcke auf Basis der verschiedenen verwendeten Videocodierkonfigurationen und/oder Techniken sein.
  • 2B ist ein schematisches Blockdiagramm eines Decodierers 175, der so konfiguriert ist, dass er komprimierte Videobits 10 (oder komprimierte Bildbits) decodiert. Decodierer 175 beinhaltet, ähnlich dem Rekonstruktionspfad von Codierer 125, der früher erörtert wurde, einen Entropiedecodierblock 250, einen inversen Quantisierungsblock 255, einen inversen Transformationsblock 260, einen Rekonstruktionsblock 265, einen Schleifenblock 270, einen Prädiktionsblock 275, einen Deblockierungsfilterblock 280 und einen Block der 2D-Darstellung-zu-sphärisch 285.
  • Die Datenelemente in den komprimierten Videobits 10 können durch Entropiedecodierblock 250 decodiert werden (z. B. mithilfe kontextadaptiver binärarithmetischer Decodierung), um eine Reihe quantisierter Transformationskoeffizienten zu erzeugen. Der inverse Quantisierungsblock 255 dequantisiert die quantisierten Transformationskoeffizienten und der inverse Transformationsblock 260 inverstransformiert (mithilfe von ADST) die dequantisierten Transformationskoeffizienten, um einen derivativen Rest zu erzeugen, der mit dem identisch sein kann, der durch die Rekonstruktionsphase im Codierer 125 erstellt wurde.
  • Unter Verwendung von Headerinformationen, die aus den komprimierten Videobits 10 decodiert wurden, kann Decodierer 175 Prädiktionsblock 275 verwenden. um denselben Prädiktionsblock zu erstellen, der in Codierer 175 erstellt wurden. Der Prädiktionsblock kann zum derivativen Rest hinzugefügt werden, um einen rekonstruierten Block durch Rekonstruktionsblock 265 zu erzeugen. Der Schleifenfilterblock 270 kann auf den rekonstruierten Block angewendet werden, um Blockartefakte zu verringern. Der Deblockierungsfilterblock 280 kann auf den rekonstruierten Block angewendet werden, um Blockverzerrungen zu verringern, und das Ergebnis kann als Videodatenstrom 5 ausgegeben werden.
  • Der Block der sphärischen-zu-2D-Darstellung 285 kann so konfiguriert sein, dass er eine 2D-Darstellung eines sphärischen Frames oder Bildes in einem sphärischen Frame oder Bild abbildet. 4A veranschaulicht zum Beispiel die Kugel 300 (z. B. als einen Frame oder ein Bild) in einem Zylinder 400. Die Kugel 300 kann früher auf die Oberfläche des Zylinders 400 projiziert worden sein. Die Projektion kann zum Beispiel äquirektangulär oder semi-äquirektangulär sein. Die Abbildung der 2D-Darstellung des sphärischen Frames oder Bildes auf dem sphärischen Frame oder Bild kann umgekehrt zur vorherigen Abbildung sein. Die Abbildung einer 2D-Darstellung des sphärischen Frames oder Bildes auf einem sphärischen Frame oder Bild wird unten in Bezug auf 8 näher beschrieben.
  • Der oben in Bezug auf 2B beschriebene Videodecodierer 175 beinhaltet die dargestellten Blöcke. Exemplarische Ausführungsformen sind jedoch nicht darauf beschränkt. Auf Basis der verschiedenen verwendeten Videocodierkonfigurationen und/oder Techniken können zusätzliche Blöcke hinzugefügt werden. Des Weiteren kann jeder der Blöcke, der im Videodecodierer 175 dargestellt ist, der oben in Bezug auf 2B beschrieben wird, optionale Blöcke auf Basis der verschiedenen verwendeten Videocodierkonfigurationen und/oder Techniken sein.
  • Der Codierer 125 und der Decodierer können so konfiguriert sein, dass sie sphärische Videos und/oder Bilder codieren bzw. sphärische Videos und/oder Bilder decodieren. Ein sphärisches Bild ist ein Bild, das eine Vielzahl von Pixeln beinhaltet, die sphärisch angeordnet sind. Mit anderen Worten, ein sphärisches Bild ist ein Bild, das in alle Richtungen kontinuierlich ist. Demgemäß kann sich ein Betrachter eines sphärischen Bildes in jede Richtung (z. B. nach oben, nach unten, nach links, nach rechts oder jede Kombination davon) neu positionieren (z. B. seinen Kopf oder seine Augen bewegen) und kontinuierlich einen Teil des Bildes sehen.
  • Ein sphärisches Bild kann eine Perspektive haben. Ein sphärisches Bild könnte zum Beispiel das Bild eines Globus sein. Eine Innenperspektive könnte eine Sicht aus der Mitte des Globus nach außen sein. Oder die Innenperspektive könnte auf dem Globus, nach außen in den Weltraum blickend sein. Eine Außenperspektive könnte eine Sicht aus dem Weltraum, nach unten auf den Globus blickend sein. Als weiteres Beispiel kann die Perspektive darauf basieren, was sichtbar ist. Mit anderen Worten, eine sichtbare Perspektive kann die sein, die von einem Betrachter gesehen werden kann. Die sichtbare Perspektive kann ein Teil des sphärischen Bildes sein, das sich vor dem Betrachter befindet. Bei der Sicht aus einer Innenperspektive könnte ein Betrachter zum Beispiel am Boden (z. B. auf der Erde) liegen und in den Weltraum hinaus blicken. Der Betrachter könnte im Bild den Mond, die Sonne oder bestimmte Sterne sehen. Jedoch befindet sich, auch wenn der Boden, auf dem der Betrachter liegt, im sphärischen Bild enthalten ist, der Boden außerhalb der zurzeit sichtbaren Perspektive. In diesem Beispiel könnte der Betrachter seinen Kopf drehen und der Boden wäre in einer peripheren sichtbaren Perspektive enthalten. Der Betrachter könnte sich umdrehen und der Boden wäre in der sichtbaren Perspektive, der Mond, die Sonne oder die Sterne dagegen nicht.
  • Eine sichtbares Perspektive aus einer Außenperspektive könnte ein Teil eines sphärischen Bildes sein, das nicht blockiert ist (z. B. durch einen anderen Teil des Bildes) und/oder ein Teil des sphärischen Bildes, das nicht aus der Sicht nach außen gekrümmt ist. Ein anderer Teil des sphärischen Bildes kann in aus einer Außenperspektive in eine sichtbare Perspektive gebracht werden, indem das sphärische Bild bewegt (z. B. gedreht) wird und/oder durch Bewegung des sphärischen Bildes. Daher ist die sichtbare Perspektive ein Teil des sphärischen Bildes, der sich innerhalb eines sichtbaren Bereichs eines Betrachters des sphärischen Bildes befindet.
  • Ein sphärisches Bild ist ein Bild, das sich in Bezug auf die Zeit nicht ändert. Ein sphärisches Bild aus einer Innenperspektive in Bezug auf die Erde kann den Mond und die Sterne in einer Position zeigen. Dagegen kann sich ein sphärisches Video (oder eine Reihe von Bildern) in Bezug auf die Zeit ändern. Ein sphärisches Bild aus einer Innenperspektive in Bezug auf die Erde kann zum Beispiel den Mond und die Sterne in Bewegung (z. B. aufgrund der Erdrotation) und/oder einen Flugzeugstreifen über das Bild (z. B. den Himmel) zeigen.
  • 3 ist eine zweidimensionale (2D) Darstellung einer Kugel. Wie in 3 dargestellt, veranschaulicht die Kugel 300 (z. B. als sphärisches Bild) eine Richtung der Innenperspektive 305, 310, Außenperspektive 315 und sichtbaren Perspektive 320, 325, 330. Die sichtbare Perspektive 320 kann ein Teil eines sphärischen Bildes 335 von der Innenperspektive 310 aus gesehen sein. Die sichtbare Perspektive 320 kann ein Teil der Kugel 300 von der Innenperspektive 305 aus gesehen sein. Die sichtbare Perspektive 325 kann ein Teil der Kugel 300 von der Außenperspektive 315 aus gesehen sein.
  • 58 sind Flussdiagramme der Verfahren nach exemplarischen Ausführungsformen. Die Schritte, die mit Bezug auf 58 beschrieben sind, können aufgrund der Ausführung von Softwarecode, der in einem Speicher (z. B. mindestens einem Speicher 110) gespeichert ist, der einer Vorrichtung (z. B. wie in 1 dargestellt) zugeordnet ist, und der durch mindestens einen Prozessor (z. B. mindestens einen Prozessor 105) ausgeführt wird, der der Vorrichtung zugeordnet ist, durchgeführt werden. Alternative Ausführungsformen werden allerdings bedacht, wie ein System, welches als Spezialprozessor ausgeführt ist. Obwohl die unten beschriebenen Schritte so beschrieben sind, als würden sie von einem Prozessor ausgeführt werden, müssen die Schritte nicht zwingend von dem selben Prozessor ausgeführt werden. Mit anderen Worten, mindestens ein Prozessor kann die Schritte ausführen, die unten in 58 erörtert.
  • 5 ist ein Flussdiagramm eines Verfahrens für die Abbildung eines sphärischen Bildes auf einer 2D-Darstellung des sphärischen Bildes gemäß mindestens einer exemplarischen Ausführungsform. Wie in 5 dargestellt, wird in Schritt S505 ein sphärischer Frame (oder Bild) in einer zylindrischen Darstellung abgebildet. Die Abbildung (oder Umwandlung) kann die Abbildung eines Frames eines sphärischen Videos oder des Bildes auf einer 2D-Darstellung auf Basis einer Projektion von sphärisch zu zylindrisch beinhalten. 4A veranschaulicht zum Beispiel die Kugel 300 (z. B. als einen Frame oder ein Bild) in einem Zylinder 400. Die Kugel 300 kann auf die Oberfläche des Zylinders 400 projiziert werden. In einer exemplarischen Implementierung kann die Projektion äquirektangulär sein. Eine Linie zwischen Punkten C und D kann zum Beispiel abstandsgleich zwischen Polen A und B sein. Die Linie zwischen Punkten C und D kann auf den Zylinder 400 projiziert werden. Mit anderen Worten, Pixel entlang der Linie zwischen Punkten C und D werden auf einer abstandsgleichen Linie (zwischen der Oberseite und der Unterseite des Zylinders 400) rund um den Umfang des Zylinders 400 abgebildet. Beim Wegbewegen (nach oben und nach unten von den Linien zwischen Punkten C und D) wird jede horizontale Linie auf dem Zylinder als eine gerade Linie über die Mitte des Bildes abgebildet, wobei die vertikale Linie vertikal bleibt. Wenn die horizontale Linie immer näher zu den Polen A und B gelangt, kann das Bild gedehnt werden, um zum Zylinder zu passen. Mathematisch kann die äquirektanguläre Projektion als x = λcosθ und y = θ definiert werden, wobei λ der Längengrad und θ der Breitengrad ist.
  • In einer anderen exemplarischen Implementierung kann die Projektion semi-äquirektangulär sein. In einer semi-äquirektangulären Projektion wird jede horizontale Linie auf dem Zylinder als eine gerade Linie über die Mitte des Bildes abgebildet, wobei die vertikale Linie genauso wie bei der äquirektangulären Projektion vertikal bleibt. Wenn die horizontale Linie jedoch immer näher zu den Polen A und B gelangt, kann das Bild auf den Zylinder projiziert werden, ohne Dehnung oder mit verringerter Dehnung (z. B. skaliert). In der semi-äquirektangulären Projektion sind Teile des Bildes, die auf den Zylinder projiziert werden, leere oder Nullpixel. Die leeren oder Nullpixel können als schwarze oder weiße (oder eine andere konstante Pixeldarstellung) Pixel dargestellt werden. Mathematisch kann die semi-äquirektanguläre Projektion als x = aλcosθ und y = bθ definiert werden, wobei λ der Längengrad und θ der Breitengrad ist und wobei a und b Skalierungsfaktoren sind. Andere zylindrische Projektionen entsprechen dem Umfang dieser Offenbarung.
  • In Schritt S510 wird die zylindrische Darstellung in einer rechteckigen 2D-Darstellung abgewickelt. Zylinder 400 kann zum Beispiel an irgendeiner vertikalen Linie getrennt und geöffnet werden, um ein Rechteck zu bilden. 4B veranschaulicht eine abgewickelte zylindrische Darstellung 405 als rechteckige 2D-Darstellung. Eine äquirektanguläre Projektion eines Bildes, das als abgewickelte zylindrische Darstellung 405 dargestellt ist, kann als gedehntes Bild erscheinen, da sich das Bild vertikal (nach oben und nach unten, wie in 4B dargestellt) von einer Mittellinie zwischen Punkten A und B voran bewegt. In einer semi-äquirektangulären Projektion kann das Bild als oval mit leeren oder Nullpixeln erscheinen, die den Raum im Inneren oder rund um Eckblöcke 410-1, 410-2, 410-3, 410-4 der abgewickelten zylindrischen Darstellung 405 füllen.
  • In Schritt S515 wird die rechteckige 2D-Darstellung in eine C×R-Matrix von N×N-Blöcken zerlegt. Wie zum Beispiel in 4B dargestellt, ist die veranschaulichte abgewickelte zylindrische Darstellung 405 eine 30×16-Matrix mit N×N-Blöcken. Die anderen C×R-Dimensionen entsprechen jedoch dem Umfang dieser Offenbarung. Die Blöcke können 2×2, 4×4, 8×8, 16×16 und ähnliche Blöcke (oder Blöcke von Pixeln) sein.
  • In Schritt S520 sind Nullblöcke bezeichnet. In einer semi-äquirektangulären Projektion kann zum Beispiel eine Anzahl an Blöcken leere oder Nullpixel beinhalten. Blöcke, die alle, die meisten oder einen erheblichen Teil leere oder Nullpixel beinhalten, können als Nullblöcke bezeichnet werden. Wenn die Blöcke zum Beispiel 2×2 Blöcke sind, können alle Blöcke, die zum Beispiel eine Schwellenwertanzahl oder einen Prozentsatz von leeren oder Nullpixeln beinhalten, als Nullblöcke bezeichnet werden. Nullblöcke können in einer Tabelle oder Lookup-Tabelle gespeichert werden. Nullblöcke können zum Beispiel in der Lookup-Tabelle 445 gespeichert werden, die in 4C veranschaulicht ist. Wie unten erörtert, können Nullblöcke von der Verwendung während der Intra-/Interprädiktion ausgeschlossen werden. Wenn äquirektanguläre Projektion verwendet wird, kann es keine Bezeichnung von Nullblöcken geben.
  • Wie oben erörtert, ist ein sphärisches Bild ein Bild, das in alle Richtungen kontinuierlich ist. Demgemäß sind, wenn das sphärische Bild in eine Vielzahl von Blöcken zerlegt wird, die Vielzahl von Blöcken über das sphärische Bild fortlaufend. Mit anderen Worten, es gibt keine Ränder oder Grenzen wie in einem 2D-Bild. In exemplarischen Implementierungen kann ein benachbarter Endblock neben einer Grenze der 2D-Darstellung liegen. Außerdem kann ein benachbarter Endblock ein fortlaufender Block zu einem Block an der Grenze der 2D-Darstellung sein. Der benachbarte Endblock ist zum Beispiel zwei oder mehr Grenzen der zweidimensionalen Darstellung zugeordnet. Mit anderen Worten, da ein sphärisches Bild ein Bild ist, das in alle Richtungen fortlaufend ist, kann ein benachbarter Endblock einer oberen Grenze (z. B. einer Spalte von Blöcken) und einer unteren Grenze in einem Bild oder Frame zugewiesen und/oder einer linken Grenze (z. B. einer Reihe von Blöcken) und einer rechten Grenze in einem Bild oder Frame zugewiesen sein.
  • Wenn zum Beispiel äquirektanguläre Projektion verwendet wird, kann ein benachbarter Endblock der Block am anderen Ende der Spalte oder Reihe sein. Wie in 4B dargestellt, können Block 415-1 und 425-1 zum Beispiel jeweilige zueinander benachbarte Endblöcke (nach Spalte) sein. Des Weiteren können Block 435 und 440 jeweilige zueinander benachbarte Endblöcke (nach Spalte) sein. Noch des Weiteren können Block 420 und 430 jeweilige zueinander benachbarte Endblöcke (nach Reihe) sein. Wie unten erörtert, können benachbarte Endblöcke als eine 1, 2, 3, ..., n Pixelgrenze nach links und/oder über dem codierten Block (hierin als Vorlage bezeichnet) für ein Intraprädiktionsschema sein. Des Weiteren können benachbarte Endblöcke als Prädiktionsblock für ein Interprädiktionsschema verwendet werden. In einer semi-äquirektangulären Projektion kann eine Anzahl an Blöcken Nullblöcke beinhalten. Als Folge können in einer semi-äquirektangulären Projektion einige benachbarte Endblöcke nicht als Vorlage für ein Intra-/Interprädiktionsschema verwendet werden.
  • Demgemäß werden in Schritt S525 benachbarte Endblöcke zugeordnet. Wie oben erörtert, kann in einer semi-äquirektangulären Projektion zum Beispiel eine Anzahl an Blöcken leere oder Nullpixel beinhalten. Daher kann es sein, dass sich ein Endblock in einer Reihe oder Spalte nicht unten oder oben in einer Reihe und/oder links oder rechts von einer Spalte befindet. Demgemäß kann es bei Blöcken, die sich am Ende eines Bildes, aber nicht am Ende einer Spalte oder Reihe befinden (z. B. Block 415-2, wobei 415-1 ein Nullblock ist), sein, dass sich der benachbarte Endblock nicht am Ende der anderen Seite der Spalte oder Reihe befindet (z. B. Block 425-2, wobei 425-1 ein Nullblock ist). Daher können die benachbarten Endblöcke zugeordnet und in einer Lookup-Tabelle (z. B. Lookup-Tabelle 450, wie in 4D dargestellt) gespeichert sein.
  • Die Nutzung der räumlichen Redundanz zwischen Mustern innerhalb eines Frames (z. B. Frame, Bild, Schicht, Gruppe von Makroblöcken) wird als Intraprädiktion bezeichnet. Bei der Intraprädiktion kann eine Vorlage aus früher codierten und rekonstruierten Blöcken, Pixeln oder Subpixeln (z. B. 1/2, 1/4 und dergleichen) in demselben Frame (oder Bild) erzeugt werden. Die Vorlage wird vor der Codierung aus dem aktuellen Block subtrahiert. Bei Luminanz(Luma)-Proben kann die Vorlage zum Beispiel für jeden N×N(z. B. 4×4)-Teilblock oder für einen N×N(z. B. 16×16)-Makroblock gebildet werden. Bei der Codierung und/oder Decodierung können die Blöcke oder Makroblöcke sequenziell innerhalb jedes Frames oder jede Schicht codiert werden. Gemäß exemplarischen Ausführungsformen beinhaltet die räumliche Redundanz die Berücksichtigung der kontinuierlichen Natur des Frames auf Basis eines sphärischen Videos oder Bildes. Demgemäß kann Intraprädiktion eine Vorlage auf Basis früher codierter und rekonstruierter Blöcke, Pixel oder Subpixel (z. B. 1/2, 1/4 und dergleichen) über Grenzen hinweg in demselben Frame (oder Bild) verwenden.
  • Bei der Intraprädiktion kann ein Codierdurchlauf die sequenzielle Codierung von Blöcken entlang einer Reihe (z. B. von oben nach unten), einer Spalte (z. B. von links nach rechts) oder eines Zickzack-Musters (z. B. beginnend in der oberen linken Ecke) beinhalten. In einem Intraprädiktionsschema oder Codierdurchlauf wurden die Blöcke, die sich über dem und links vom aktuellen Block im Frame (oder Bild) befinden, früher codiert und rekonstruiert. Demgemäß können die Blöcke, die sich über dem und links vom aktuellen Block befinden, für den Codierer/Decodierer als Vorlage verfügbar sein. Wenn sich der aktuelle Block (oder der zu codierende Block) jedoch in der oberen linken Ecke eines Frames befinden, wurden keine früheren Blöcke im Frame früher codiert und rekonstruiert oder decodiert. Des Weiteren wurden, wenn sich der aktuelle Block in der oberen Reihe eines Frames befindet, keine Nachbarn über dem aktuellen Block (oder dem zu codierenden Block) früher codiert und rekonstruiert oder decodiert. Noch des Weiteren wurden, wenn sich der aktuelle Block (oder der zu codierende Block) in der linken Spalte eines Frames befinden, keine zwei Nachbarn in derselben Reihe wie der aktuelle Block früher codiert und rekonstruiert oder decodiert.
  • Die Nutzung der räumlichen Redundanz für Muster zwischen Frames (z. B. Frame, Bild, Schicht, Gruppe von Makroblöcken) wird als Interprädiktion bezeichnet. Bei der Interprädiktion kann ein Prädiktionsblock als Reaktion auf früher codierte und rekonstruierte Blöcke in einem anderen (z. B. im Zeitverlauf früheren oder Basis/Vorlagen)-Frame erzeugt werden.
  • Bei der Interprädiktion kann der aktuelle Frame in Blöcke (z. B. Makroblöcke) von fester Größe aufgeteilt werden. Um einen Block (z. B. einen aktuellen Block oder einen zu codierenden Block) zu codieren, wird ein am besten passender Block im Referenzframe gesucht. Die Suche kann zum Beispiel das Durchsuchen eines Suchbereichs eines Referenzframes beinhalten. Es wird ein Vergleich zwischen dem Makroblock im aktuellen Frame mit möglichen Kandidaten-Makroblöcken durchgeführt, um einen passenden (z. B. eine weitgehende oder gute Übereinstimmung) Kandidaten-Makroblock zu finden. Kandidaten-Makroblöcke können im Suchbereich zum Beispiel auf Basis einer gewünschten Bewegungsschätzungsauflösung, dem Unterschied zwischen dem Makroblock des aktuellen Frames und dem Kandidaten-Makroblock, den Verarbeitungskosten der Codierung des Bewegungsvektors für diesen Makroblock oder dergleichen geprüft werden (z. B. Pixel für Pixel und/oder Subpixel für Subpixel). Gemäß exemplarischen Ausführungsformen beinhaltet die räumliche Redundanz die Berücksichtigung der kontinuierlichen Natur des Frames auf Basis eines sphärischen Videos oder Bildes. Demgemäß kann Interprädiktion einen Suchbereich eines Referenzframes einschließlich Blöcken, Pixeln oder Subpixeln (z. B. 1/2, 1/4 und dergleichen) über Grenzen im Referenzframe (oder Bild) hinweg verwenden, um einen am besten passenden Block, einen Kandidatenblock und/oder einen Prädiktionsblock auszuwählen.
  • 6 ist ein Flussdiagramm eines Verfahrens für die Codierung eines Videoframes gemäß mindestens einer exemplarischen Ausführungsform. Wie in 6 dargestellt, empfängt in Schritt S605 ein Controller (z. B. Controller 120) eine rechteckige 2D-Darstellung eines sphärischen Videosequenzframes (oder Bildes) zum Codieren. Der Videocodierer kann zum Beispiel eine sphärische Videodatenstrom-Eingabe 5 empfangen, den Datenstrom in eine Vielzahl von Videoframes aufteilen, jedes Frame in eine rechteckige 2D-Darstellung umwandeln (wie oben in Bezug auf 5 erörtert) und das erste Videoframe auswählen. Der Controller kann außerdem Anfangskonfigurationen einstellen. Der Controller kann zum Beispiel ein Intraframe-Codierschema oder einen Intraframe-Codiermodus einstellen.
  • In Schritt S610 wird ermittelt, ob sich ein Block, der einem Prädiktionsschema zugeordnet ist, an/auf einer Framegrenze (oder Bildgrenze) der rechteckigen 2D-Darstellung befindet (oder Blöcke eine solche Grenze beinhalten). Der zugeordnete Block (oder die zugeordneten Blöcke) können ein oder mehrere benachbarten linke oder obere Blöcke in einer Intraprädiktionsimplementierung sein. Alternativ können der Block oder die Blöcke ein oder mehrere Blöcke innerhalb eines Suchbereichs eines Referenzframes in einer Interprädiktionsimplementierung sein. In einer exemplarischen Ausführungsform kann zum Beispiel eine C×R-Matrix von N×N-Blöcken Pixel in jedem Block beinhalten (z. B. wenn eine äquirektanguläre Projektion verwendet wird). Demgemäß beinhalten Blöcke in Reihe 0, Spalte 0, Reihe R-1 und Spalte C-1 Pixel des sphärischen Bildes. Daher befindet sich, wenn die C×R-Matrix der Blöcke während eines Scans oder einer Suche Pixel in jedem Block beinhaltet (z. B. äquirektanguläre Projektion) und die Spalte/Reihe = 0 oder die Spalte/Reihe = C-1/R-1 ist, der Block an der Grenze.
  • In einer weiteren exemplarischen Implementierung beinhaltet eine N×N-Matrix von Blöcken mindestens einen Nullblock oder leere oder Nullpixel in mindestens einem Block (z. B. wenn eine semi-äquirektanguläre Projektion verwendet wird). Daher befindet sich, wenn ein benachbarter Block während eines Scans oder einer Suche ein Nullblock ist, der Block an einer Grenze. Um zum Beispiel zu ermitteln, ob ein benachbarter Block ein Nullblock ist, kann der benachbarte Block in einer Lookup-Tabelle (z. B. LUT 445, 450) nachgeschlagen (z. B. gesucht, identifiziert) werden. In diesem Beispielszenario ist ein Block auch an der Grenze wenn der Block bei Spalte/Reihe = 0 oder Spalte/Reihe = A-1/B-1 ist. Wenn der Block an einer Grenze ist, geht die Verarbeitung zu Schritt S615 weiter. Andernfalls fährt die Verarbeitung mit Schritt S625 fort.
  • In Schritt S615 wird ein benachbarter Endblock/werden benachbarte Endblöcke nachgeschlagen. In einer exemplarischen Implementierung kann zum Beispiel eine C×R-Matrix von N×N-Blöcken Pixel in jedem Block beinhalten (wenn beispielsweise eine äquirektanguläre Projektion verwendet wird). Demgemäß ist ein benachbarter Endblock, der einer Spalte für einen Block in Reihe 0 zugeordnet ist, ein Block in Reihe R-1. Des Weiteren ist ein benachbarter Endblock, der einer Spalte für einen Block in Reihe R-1 zugeordnet ist, ein Block in Reihe 0. Ein benachbarter Endblock, der einer Reihe für einen Block in Spalte 0 zugeordnet ist, ist ein Block in Spalte C-1. Und schließlich, ist ein benachbarter Endblock, der einer Reihe für einen Block in Spalte C-1 zugeordnet ist, ein Block in Spalte 0. In einer weiteren exemplarischen Implementierung beinhaltet zum Beispiel eine C×R-Matrix von Blöcken Nullblöcke (z. B. wenn eine semi-äquirektanguläre Projektion verwendet wird). In diesem Beispiel können Spalten und Reihen benachbarter Endblöcke in einer Lookup-Tabelle (z. B. LUT 450) nachgeschlagen werden.
  • In Schritt S620 wird mindestens ein Block einschließlich eines benachbarten Endblocks ausgewählt. In einem Intraprädiktionsschema kann mindestens ein benachbarter Endblock als Vorlage ausgewählt werden. Mit anderen Worten, ein oder mehrere der 1, 2, 3, ..., n Pixel links vom und/oder über dem zu codierenden Block können aus der Vorlage ausgewählt werden, die aus mindestens einem benachbarten Endblock ausgewählt werden kann. Der benachbarte Endblock ist zwei oder mehr Grenzen der zweidimensionalen Darstellung zugeordnet. Die Auswahl des benachbarten Endblocks kann das Auswählen eines rekonstruierten Blocks aus mindestens einem entgegengesetzten Ende einer gleichen Reihe wie dem Block, der dem Prädiktionsschema zugeordnet ist, oder einem entgegengesetzten Ende derselben Spalte wie der zu codierende Block, beinhalten.
  • Der benachbarte Endblock kann zum Beispiel ein rekonstruierter Endblock außer einem linken rekonstruierten Endblock oder einem oberen rekonstruierten Endblock des (oder im Vergleich zu dem) zu codierenden Blocks sein. Mit anderen Worten, ein benachbarter Endblock befindet sich während des Intraprädiktionsscans der nicht codierten Blöcke nicht über dem oder links vom zu codierenden Block. Wie oben erörtert, kann zum Beispiel während der Intraprädiktion eine Vorlage auf Basis früher codierter und rekonstruierter Blöcke in demselben Frame (oder Bild) erzeugt werden. Der früher codierte und rekonstruierte Block/die früher codierten und rekonstruierten Blöcke können aus benachbarten Blöcken (z. B. einem Block, der sich über dem und/oder links vom zu codierenden Block befindet) als Vorlage ausgewählt werden. In diesem Fall befindet sich der zu codierende Block am Ende einer Spalte und/oder Reihe in der C×R-Matrix oder neben einem Nullblock (z. B. der Block darüber ist null oder der linke Block ist null). Mit anderen Worten, ein Block der als Vorlage verwendet werden würde, ist nicht vorhanden oder ist ein Nullblock. Demgemäß kann mindestens einer der benachbarten Blöcke, der als Vorlage ausgewählt werden soll, einer der nachgeschlagenen benachbarten Endblöcke sein.
  • In einem Interprädiktionsschema kann mindestens ein benachbarter Block als Block in einem Suchbereich eines Referenzframes ausgewählt werden. Demgemäß kann mindestens ein benachbarter Block als am besten passender Block, Kandidatenblock und/oder Prädiktionsblock ausgewählt werden.
  • In Schritt S625 wird mindestens ein Block auswählt. In diesem Fall beinhaltet der mindestens eine Block keinen benachbarten Endblock. In einem Intraprädiktionsschema können zum Beispiel der vorher codierte und rekonstruierte Block/die früher codierten und rekonstruierten Blöcke aus benachbarten Blöcken (z. B. einem Block, der sich über dem und/oder links vom zu codierenden Block befindet) als Vorlage ausgewählt werden. In diesem Fall befindet sich der zu codierende Block von der Grenze entfernt. Mit anderen Worten, der zu codierende Block befindet sich nicht am Ende einer Spalte und/oder Reihe in der C×R-Matrix und nicht neben einem Nullblock. Demgemäß kann mindestens einer der benachbarten Blöcke, der als Vorlage ausgewählt werden sollen, aus einem Block über dem und/oder links vom zu codierenden Block ausgewählt werden. In einem Interprädiktionsschema kann der Suchbereich zum Beispiel im 2D-Frame fortlaufend sein. Demgemäß kann der Suchbereich ausgewählt werden, ohne eine Grenze des 2D-Rahmens zu überqueren. Daher beinhaltet der Suchbereich keinen benachbarten Endblock.
  • In mindestens einer exemplarischen Implementierung kann mehr als ein Block für die Verwendung als Vorlage ausgewählt werden. In einem Intraprädiktionsschema können zum Beispiel ein benachbarter Block und ein Block neben (in derselben Richtung) dem benachbarten Block ausgewählt werden (z. B. zwei Blöcke). Die ausgewählten Blöcke können gemittelt werden, um einen Vorlagenblock zu bilden. In diesem Beispiel ist es möglich, dass die Vorlage auf einem benachbarten Block und einem benachbarten Endblock basiert. In einem Interprädiktionsschema kann der am besten passende Block auf einem Pixel mit Teilen einer Vielzahl von Blöcken zentriert werden, die den am besten passenden Block, den Kandidatenblock und/oder den Prädiktionsblock bilden.
  • In Schritt S630 wird ein Satz von Resten für nicht codierte Pixel des Videosequenz-Frames (oder Bildes) auf Basis der Vorlage erzeugt. Der Satz von Resten kann einem Intraprädiktionsprozess oder Interprädiktionsprozess zugeordnet sein. Im Intraprädiktionsprozess kann zum Beispiel mindestens ein Wert, der dem jeweiligen Pixel zugeordnet ist, von einem entsprechenden Wert subtrahiert werden, der einem entsprechenden Block (oder Pixel) der ausgewählten Vorlage zugeordnet ist. Im Interprädiktionsprozess kann zum Beispiel mindestens ein Wert, der dem jeweiligen Pixel zugeordnet ist, von einem entsprechenden Wert subtrahiert werden, der einem entsprechenden Block (oder Pixel) des ausgewählten, am besten passenden Blocks, eines Kandidatenblocks und/oder eines Prädiktionsblocks zugeordnet ist.
  • In Schritt S635 werden die nicht codierten Pixel codiert. Die Reste für die nicht codierten Pixel können zum Beispiel mithilfe einer konfigurierten Transformation (z. B. einer KLT, einer SVD, einer DCT oder einer ADST) in Transformationskoeffizienten transformiert (codiert oder komprimiert) werden.
  • In Schritt S640 quantisiert der Codierer den codierten Satz der Restwerte für den Block. Der Controller 120 kann zum Beispiel den Quantisierungsblock 220 anweisen (oder aufrufen), um codierte Bewegungsvektoren und die codierten Restfehler durch eine beliebige einigermaßen geeignete Quantisierungstechnik zu quantisieren. Außerdem kann der Controller 120 in Schritt S645 den Entropiecodierblock 220 anweisen, zum Beispiel Codes durch eine beliebige Codiertechnik zu den quantisierten Bewegungsvektorcodes und Restfehlercodes zuzuweisen, um Codelängen mit den Wahrscheinlichkeiten der quantisierten Bewegungsvektorcodes und Restfehlercode abzugleichen.
  • In Schritt S650 gibt der Codierer den/die codierten (komprimierten) Videoframe(s) aus. Der Controller 120 kann zum Beispiel das codierte Video (z. B. als codierte Videoframes) zu einem oder mehreren Ausgabegeräten ausgeben. Der Controller 120 kann das codierte Video als einzelnen Bewegungsvektor und einen einzelnen Satz von Prädiktorwerten (z. B. Restfehler) für den Makroblock ausgeben. Der Controller 120 kann Informationen ausgeben, die den Modus oder das Schema für die Verwendung bei der Intraframe-Codierung durch den Codierer angeben. Das/die codierte(n) (komprimierte(n)) Videoframe(s) können zum Beispiel einen Header für die Übertragung beinhalten. Der Header kann u. a. Informationen beinhalten, die den Modus oder das Schema für die Verwendung bei der Intraframe-Codierung durch den Codierer angeben. Das Intraframe-Codierschema oder der Intraframe-Codiermodus kann dem/den codierten (komprimierten) Videoframe(s) kommuniziert werden (z. B. im Header). Das kommunizierte Intraframe-Codierschema oder der kommunizierte Intraframe-Codiermodus kann Parameter angeben, die für die Umwandlung jedes Frames in eine rechteckige 2D-Darstellung verwendet werden (z. B. äquirektanguläre Projektion oder semi-äquirektanguläre Projektion) sowie alle verwendeten Gleichungen angeben. Das kommunizierte Intraframe-Codierschema oder der kommunizierte Intraframe-Codiermodus kann auf Zahlen basieren (z. B. kann Modus 101 eine semi-äquirektanguläre Projektion mit Skalierungsfaktoren a und b angeben).
  • 7 ist ein Flussdiagramm eines Verfahrens für die Decodierung eines Videoframes gemäß mindestens einer exemplarischen Ausführungsform. Wie in 7 dargestellt, empfängt ein Videodecodierer (z. B. Videodecodierer 175) bei Schritt S705 codierte (komprimierte) Videobits (z. B. komprimierte Videobits 10). Die codierten (komprimierten) Videobits können zum Beispiel ein früher codierter (z. B. durch Videocodierer 125) sphärischer Echtzeit-Videodatenstrom (z. B. die Aufzeichnung eines Konzerts oder einer Sportveranstaltung) sein, der über ein Kommunikationsnetzwerk (z. B. Internet oder Intranet) empfangen wurde. Der Videodatenstrom kann auch ein früher aufgezeichnetes Video (z. B. ein Film oder eine Videorecorder-Aufzeichnung) sein. Das/die codierte(n) (komprimierte(n)) Videoframe(s) können einen Header für die Übertragung beinhalten. Der Header kann u. a. Informationen beinhalten, die den Modus oder das Schema für die Verwendung bei der Intraframe-Codierung durch den Codierer angeben. Das Intraframe-Codierschema oder der Intraframe-Codiermodus kann zum Beispiel Parameter angeben, die für die Umwandlung jedes Frames in eine rechteckige 2D-Darstellung verwendet werden (z. B. äquirektanguläre Projektion oder semi-äquirektanguläre Projektion sowie alle verwendeten Gleichungen angeben).
  • In Schritt S710 entropiedecodiert der Videodecodierer die codierten Videobits. Die komprimierten Videobits können zum Beispiel durch Entropiedecodierung decodiert werden, z. B. mithilfe kontextadaptiver binärarithmetischer Decodierung, um eine Reihe quantisierter Transformationskoeffizienten zu erzeugen. In Schritt S715 dequantisiert der Videodecodierer die Transformationskoeffizienten, die durch die entropiedecodierten Bits angegeben werden. Die entropiedecodierten Videobits können zum Beispiel durch Abbildung von Werten in einem relativ kleinen Bereich der Werte in einen relativ großen Bereich dequantisiert werden (z. B. im Gegensatz zur oben beschriebenen Quantisierungsabbildung). Des Weiteren transformiert in Schritt S720 der Videodecodierer die Videobits mithilfe einer angegebenen (z. B. im Header) Transformation (z. B. einer KLT, einer SVD, einer DCT oder einer ADST).
  • In Schritt S725 wird ermittelt, ob sich ein Block, der einem Prädiktionsschema zugeordnet ist, an/auf einer Framegrenze (oder Bildgrenze) der rechteckigen 2D-Darstellung befindet (oder Blöcke eine solche Grenze beinhalten). Der zugeordnete Block (oder die zugeordneten Blöcke) können ein oder mehrere benachbarten linke oder obere Blöcke in einer Intraprädiktionsimplementierung sein. Alternativ können der Block oder die Blöcke ein oder mehrere Blöcke innerhalb eines Suchbereichs eines Referenzframes in einer Interprädiktionsimplementierung sein. In einer exemplarischen Ausführungsform kann zum Beispiel eine C×R-Matrix von N×N-Blöcken Pixel in jedem Block beinhalten (z. B. wenn eine äquirektanguläre Projektion verwendet wird). Demgemäß beinhalten Blöcke in Reihe 0, Spalte 0, Reihe R-1 und Spalte C-1 Pixel des sphärischen Bildes. Daher befindet sich, wenn die C×R-Matrix der Blöcke während eines Scans oder einer Suche Pixel in jedem Block beinhaltet (z. B. äquirektanguläre Projektion) und die Spalte/Reihe = 0 oder die Spalte/Reihe = C-1/R-1 ist, der Block an der Grenze.
  • In einer weiteren exemplarischen Implementierung beinhaltet eine C×R-Matrix von N×N-Blöcken mindestens einen Nullblock oder leere oder Nullpixel in mindestens einem Block (z. B. wenn eine semi-äquirektanguläre Projektion verwendet wird). Daher befindet sich, wenn ein benachbarter Block während eines Scans oder einer Suche ein Nullblock ist, der Block an einer Grenze. Um zum Beispiel zu ermitteln, ob ein benachbarter Block ein Nullblock ist, kann der benachbarte Block in einer Lookup-Tabelle (z. B. LUT 445, 450) nachgeschlagen (oder gesucht) werden. In diesem Beispielszenario ist ein Block auch an der Grenze wenn der Block bei Spalte/Reihe = 0 oder Spalte/Reihe = C-1/R-1 ist. Wenn der Block an einer Grenze ist, geht die Verarbeitung zu Schritt S730 weiter. Andernfalls fährt die Verarbeitung mit Schritt S740 fort.
  • In Schritt S730 wird ein benachbarter Endblock nachgeschlagen. In einer exemplarischen Implementierung kann zum Beispiel eine C×R-Matrix von Blöcken Pixel in jedem Block beinhalten (z. B. wenn eine äquirektanguläre Projektion verwendet wird). Demgemäß ist ein benachbarter Endblock, der einer Spalte für einen Block in Reihe 0 zugeordnet ist, ein Block in Reihe R-1. Des Weiteren ist ein benachbarter Endblock, der einer Spalte für einen Block in Reihe R-1 zugeordnet ist, ein Block in Reihe 0. Ein benachbarter Endblock, der einer Reihe für einen Block in Spalte 0 zugeordnet ist, ist ein Block in Spalte C-1. Und schließlich, ist ein benachbarter Endblock, der einer Reihe für einen Block in Spalte C-1 zugeordnet ist, ein Block in Spalte 0. In einer weiteren exemplarischen Implementierung beinhaltet zum Beispiel eine C×R-Matrix von Blöcken Nullblöcke (z. B. wenn eine semi-äquirektanguläre Projektion verwendet wird). In diesem Beispiel können Spalten und Reihen benachbarter Endblöcke in einer Lookup-Tabelle (z. B. LUT 450) nachgeschlagen (z. B. identifiziert) werden.
  • In Schritt S735 wird mindestens ein Block einschließlich eines benachbarten Endblocks ausgewählt. In einem Intraprädiktionsschema kann mindestens ein benachbarter Endblock als Vorlage ausgewählt werden. Mit anderen Worten, ein oder mehrere der 1, 2, 3, ..., n Pixel links vom und/oder über dem zu codierenden Block können aus der Vorlage ausgewählt werden, die aus mindestens einem benachbarten Endblock ausgewählt werden kann. Der benachbarte Endblock ist zwei oder mehr Grenzen der zweidimensionalen Darstellung zugeordnet. Der benachbarte Endblock kann zum Beispiel ein rekonstruierter Endblock außer einem linken rekonstruierten Endblock oder einem oberen rekonstruierten Endblock des (oder im Vergleich zu dem) zu codierenden Blocks sein. Mit anderen Worten, ein benachbarter Endblock befindet sich während des Intraprädiktionsscans der nicht codierten Blöcke nicht über dem oder links vom zu codierenden Block. Wie oben erörtert, kann zum Beispiel während der Intraprädiktion eine Vorlage auf Basis früher codierter und rekonstruierter Blöcke in demselben Frame (oder Bild) erzeugt werden. Der früher codierte und rekonstruierte Block/die früher codierten und rekonstruierten Blöcke können aus benachbarten Blöcken (z. B. einem Block der sich über dem und/oder links vom zu codierenden Block befindet) als Vorlage ausgewählt werden. In diesem Fall befindet sich der zu codierende Block am Ende einer Spalte und/oder Reihe in der C×R-Matrix oder neben einem Nullblock (z. B. der Block darüber ist null oder der linke Block ist null). Mit anderen Worten, ein Block der als Vorlage verwendet werden würde, ist nicht vorhanden oder ist ein Nullblock. Demgemäß kann mindestens einer der benachbarten Blöcke, der als Vorlage ausgewählt werden soll, einer der nachgeschlagenen benachbarten Endblöcke sein.
  • In einem Intraprädiktionsschema kann mindestens ein benachbarter Block als Block in einem Suchbereich eines Referenzframes ausgewählt werden. Demgemäß kann mindestens ein benachbarter Block als am besten passender Block, Kandidatenblock und/oder Prädiktionsblock ausgewählt werden.
  • In Schritt S740 wird mindestens ein Block auswählt. In diesem Fall beinhaltet der mindestens eine Block keinen benachbarten Endblock. In einem Intraprädiktionsschema können zum Beispiel der vorher codierte und rekonstruierte Block/die früher codierten und rekonstruierten Blöcke aus benachbarten Blöcken (z. B. einem Block, der sich über dem und/oder links vom zu codierenden Block befindet) als Vorlage ausgewählt werden. In diesem Fall befindet sich der zu codierende Block nicht am Ende einer Spalte und/oder Reihe in der C×R-Matrix und nicht neben einem Nullblock. Demgemäß kann mindestens einer der benachbarten Blöcke, der als Vorlage ausgewählt werden sollen, aus einem Block über dem und/oder links vom zu codierenden Block ausgewählt werden. In einem Interprädiktionsschema kann der Suchbereich zum Beispiel im 2D-Frame fortlaufend sein. Demgemäß kann der Suchbereich ausgewählt werden, ohne eine Grenze des 2D-Rahmens zu überqueren. Daher beinhaltet der Suchbereich keinen benachbarten Endblock.
  • In mindestens einer exemplarischen Implementierung kann mehr als ein Block für die Verwendung als Vorlage ausgewählt werden. In einem Intraprädiktionsschema können zum Beispiel ein benachbarter Block und ein Block neben (in derselben Richtung) dem benachbarten Block ausgewählt werden (z. B. zwei Blöcke). Die ausgewählten Blöcke können gemittelt werden, um einen Vorlagenblock zu bilden. In diesem Beispiel ist es möglich, dass die Vorlage auf einem benachbarten Block und einem benachbarten Endblock basiert. In einem Interprädiktionsschema kann der am besten passende Block auf einem Pixel mit Teilen einer Vielzahl von Blöcken zentriert werden, die den am besten passenden Block, den Kandidatenblock und/oder den Prädiktionsblock bilden.
  • In Schritt S745 erzeugt der Videodecodierer rekonstruierte Pixel als Videoframe auf Basis decodierter Videobits. In einem Intraprädiktionsschema können die rekonstruierten Pixel mithilfe des Blocks als Vorlage erzeugt werden. Mit anderen Worten, ein oder mehrere der 1, 2, 3, ..., n Pixel links vom und/oder über dem zu decodierenden Block können aus dem Block/den Blöcken ausgewählt und als Vorlage verwendet werden, um rekonstruierte Pixel aus den decodierten Videobits zu erzeugen. In einer exemplarischen Implementierung kann der Block (und damit die 1, 2, 3, ..., n Pixel links vom und/oder über dem zu codierenden Block) benachbarte Endblöcke beinhalten. In einem Intraprädiktionsschema können die rekonstruierten Pixel mithilfe des Blocks als Prädiktionsblock erzeugt werden. Daher kann in einer exemplarischen Implementierung der Prädiktionsblock benachbarte Endblöcke beinhalten. Um zum Beispiel die rekonstruierten Pixel zu erzeugen, kann der Videodecodierer die Reste (z. B. transformierte oder dekomprimierte Videobits) zur entsprechenden Position in der Vorlage oder im Prädiktionsblock hinzufügen, was zu einem rekonstruierten Pixel führt.
  • In Schritt S750 filtert der Videodecodierer das rekonstruierte Pixel im Videoframe. Ein Schleifenfilter kann zum Beispiel auf den rekonstruierten Block angewendet werden, um Blockartefakte zu verringern. Ein Deblockierungsfilter kann zum Beispiel auf den rekonstruierten Block angewendet werden, um Verzerrungen zu verringern.
  • In Schritt S755 wird der 2D-Frame (oder das Bild) in ein sphärisches Videoframe (oder Bild) umgewandelt. Der 2D-Frame kann zum Beispiel durch Umkehr der Technik, wie oben in Bezug auf die Abbildung eines sphärischen Frames (oder Bildes) auf einer 2D-Darstellung des sphärischen Frames (oder Bildes) beschrieben, umgewandelt werden. Eine Beispieltechnik ist in Bezug auf 8 unten näher beschrieben.
  • In Schritt S760 erzeugt der Videodecodierer einen sphärischen Videodatenstrom (oder ein sphärisches Bild) auf Basis des/der Videoframes. Mindestens ein Videoframe der rekonstruierten umgewandelten Pixel kann zum Beispiel in einer Sequenz organisiert werden, um einen sphärischen Videodatenstrom zu bilden.
  • 8 ein Flussdiagramm eines Verfahrens für die Umwandlung einer 2D-Darstellung eines sphärischen Bildes in einen sphärischen Frame/ein sphärisches Bild gemäß mindestens einer exemplarischen Ausführungsform ist. Wie in 8 dargestellt, werden in Schritt S805 Nullblöcke entfernt. Wie oben erörtert, können zum Beispiel in einer Implementierung mit semi-äquirektangulärer Projektion Nullblöcke hinzugefügt, wenn es keine Pixel in einem oder mehreren der N×N-Blöcke in der C×R-Matrix gibt. Diese Nullblöcke können übersprungen (z. B. während der Verarbeitung), gelöscht oder aus einem 2D-Frame oder -Bild entfernt werden. Die Nullblöcke können in einer Lookup-Tabelle (z. B. LUT 445) angegeben sein, die im Header enthalten sein kann, der dem/den empfangenen codierten (komprimierten) Videoframe(s) zugeordnet ist. In einer Implementierung mit äquirektangulärer Projektion kann dieser Schritt übersprungen werden.
  • In Schritt S810 wird die 2D-Darstellung in einem sphärischen Frame (oder Bild) abgebildet. Die zylindrische Darstellung kann zum Beispiel mithilfe einer inversen Transformation (z. B. mithilfe der Umkehr der oben beschriebenen Gleichungen) basierend darauf auf einem sphärischen Bild abgebildet werden, welche Art von Projektion (z. B. äquirektanguläre oder semi-äquirektanguläre) zum Umwandeln des sphärischen Bildes in die 2D-Darstellung verwendet wurde. Die Gleichungen können die Umkehr von x = λcosθ und y = θ sein, wobei λ der Längengrad und θ der Breitengrad von λ = xcosy und θ = y ist. Andere inverse Transformationen entsprechen dem Umfang dieser Offenbarung.
  • 9A und 9B eine 2D-Darstellung eines sphärischen Videoframes oder Bildes einschließlich Kacheln gemäß mindestens einer exemplarischen Ausführungsform veranschaulichen. Wie in 9A dargestellt, beinhaltet die 2D-Darstellung eines sphärischen Videoframes 900 eine Vielzahl von Blöcken (z. B. Block 902), die in einer C×R-Matrix organisiert sind. Jeder Block kann ein N×N-Block von Pixeln sein. Ein Videoframe (oder Bild) kann zum Beispiel in eine Matrix von Blöcken umgewandelt werden, die jeweils eine Anzahl an Pixeln haben. Eine Kachel kann aus einer Anzahl an Blöcken oder Pixeln gebildet werden. Kacheln 905, 910-1, 910-2, 910-3, 910-4, 910-5, 910-6, 910-7 und 910-8 beinhalten zum Beispiel jeweils 16 Blöcke, die wiederum eine Vielzahl (z. B. N×N) Pixel beinhalten. Kachel 905 kann eine Kachel sein, die eine Ansichtsperspektive eines Betrachters des Videos (oder Bildes) während einer Wiedergabe des sphärischen Videos beinhaltet. Mit anderen Worten, Kachel 905 kann eine Kachel sein, die einen Teil des sphärischen Videoframes beinhaltet, den ein Betrachter des sphärischen Videos sehen kann (z. B. die sichtbare Perspektive). Kacheln 910-1, 910-2, 910-3, 910-4, 910-5, 910-6, 910-7 und 910-8 können Kacheln sein, die Teile des sphärischen Videoframes in einer peripheren Ansicht oder außerhalb (z. B. bei der Wiedergabe nicht von einem Betrachter gesehen) der Ansichtsperspektive beinhalten.
  • Gemäß einer exemplarischen Implementierung können sich Kacheln überlappen. Mit anderen Worten, ein Teil eines Blocks, ein Pixel und/oder eine Vielzahl von Pixeln können mehr als einer Kachel zugeordnet sein. Wie in 9A und 9B dargestellt, können Kacheln 910-1, 910-2, 910-3, 910-4, 910-5, 910-6, 910-7 und 910-8 Kachel 905 überlappen (z. B. einen Block, einen Teil eines Blocks, ein Pixel und/oder eine Vielzahl von Pixeln, die ebenfalls Kachel 905 zugeordnet sind). Wie in 9B dargestellt, kann sich dieses Überlappungsmuster fortsetzen und von Kachel 905 auswärts erstrecken. Kacheln 915-1, 915-2, 915-3, 915-4, 915-5, 915-6, 915-7, 915-8, 915-9, 915-10, 915-11, 915-12, 915-13, 915-14, 915-15 und/oder 915-16 können zum Beispiel eine oder mehrere Kacheln 910-1, 910-2, 910-3, 910-4, 910-5, 910-6, 910-7 und/oder 910-8 überlappen. Wie in 9B dargestellt, wird die Überlappung als überlappende Videoteile 920-1, 920-2, 920-3, 920-4, 920-5, 920-6, 920-7 und 920-8 veranschaulicht.
  • Gemäß einer exemplarischen Implementierung kann nur ein Teil des sphärischen Videos gestreamt werden, um während des Streamens des sphärischen Videos Ressourcen zu sparen. Zum Beispiel kann der Teil des sphärischen Videos, von dem angegeben wird, dass er von einem Betrachter während der Wiedergabe angesehen wird, gestreamt werden. Unter Bezugnahme auf 9B kann die Kachel 905 eine Kachel sein, die als ein Teil eines sphärischen Videoframes angegeben ist, die ein Betrachter des sphärischen Videos ansieht. Daher sollte für ein minimales Betrachtungserlebnis Kachel 905 gestreamt werden. Sollte der Betrachter jedoch das, was angesehen wird, ändern (z. B. seine Augen oder seinen Kopf bewegen), und nur Kachel 905 wird gestreamt, wird das Betrachtungserlebnis unerfreulich, da der Betrachter warten müsste, bis das entsprechende sphärische Video gestreamt wird. Wenn der Betrachter zum Beispiel eine Ansichtsperspektive von Kachel 905 zu Kachel 910-2 ändert und nur Kachel 905 gestreamt wird, kann der Betrachter eine Verzögerung erleben, bis Kachel 910-2 gestreamt wird.
  • Daher kann gemäß mindestens einer exemplarischen Ausführungsform eine Vielzahl von Kacheln (z. B. als Teil des sphärischen Videoframes) gestreamt werden. Unter erneuter Bezugnahme auf 9B können Kacheln 905, 910-1, 910-2, 910-3, 910-4, 910-5, 910-6, 910-7, 910-8, 915-1, 915-2, 915-3, 915-4, 915-5, 915-6, 915-7, 915-8, 915-9, 915-10, 915-11, 915-12, 915-13, 915-14, 915-15 und/oder 915-16 gestreamt werden. Des Weiteren kann, um Ressourcen während des Streamens des sphärischen Videos zu sparen, die Vielzahl von Kacheln auf Basis von mehr als einer Servicequalität (quality of service, QoS) codiert werden. Wie unten erörtert, kann die QoS Ressourcen beeinflussen, die zum Codieren einer Kachel oder von Kacheln verwendet werden, die Bandbreite, die für das Streamen einer Kachel oder von Kacheln genutzt wird, und die QoS kann auch die Auflösung der Kachel und/oder Kacheln beim Decodieren beeinflussen. Kachel 905 kann zum Beispiel auf Basis einer ersten QoS gestreamt werden, Kacheln 910-1, 910-2, 910-3, 910-4, 910-5, 910-6, 910-7 und 910-8 können auf Basis einer zweiten QoS gestreamt werden und Kacheln 915-1, 915-2, 915-3, 915-4, 915-5, 915-6, 915-7, 915-8, 915-9, 915-10, 915-11, 915-12, 915-13, 915-14, 915-15 und 915-16 können auf Basis einer dritten QoS gestreamt werden. Die erste QoS, die zweite QoS und die dritte QoS können sich unterscheiden. Die erste QoS kann zum Beispiel höher als die zweite QoS sein und die dritte QoS kann niedriger als die erste und die zweite QoS sein.
  • Demgemäß sind decodierte Kacheln, die Kacheln 915-1, 915-2, 915-3, 915-4, 915-5, 915-6, 915-7, 915-8, 915-9, 915-10, 915-11, 915-12, 915-13, 915-14, 915-15 und/oder 915-16 entsprechen, von einer geringeren Qualität im Vergleich zu decodierten Kacheln, die Kacheln 910-1, 910-2, 910-3, 910-4, 910-5, 910-6, 910-7 und 910-8 entsprechen. Des Weiteren hat eine decodierte Kachel, die Kachel 905 entspricht, die höchste Qualität. Als Folge kann der Teil des sphärischen Videos, von dem angegeben wird, dass er von einem Betrachter während der Wiedergabe angesehen wird (z. B. Kachel 905), die höchste relative Qualität haben. Des Weiteren kann der Teil des sphärischen Videos, der sich an der peripheren Ansicht oder außerhalb (z. B. bei der Wiedergabe nicht von einem Betrachter gesehen) der Ansichtsperspektive befindet, während der Wiedergabe eine geringere Qualität haben im Vergleich zu dem Teil des sphärischen Videos (oder in der Nähe), von dem angegeben wird, das es von einem Betrachter während der Wiedergabe angesehen wird.
  • Sollte daher der Betrachter ändern, was angesehen wird (z. B. indem er seine Augen oder seinen Kopf bewegt), sieht der Betrachter weiterhin das gestreamte sphärische Video (wenn auch mit einer möglicherweise geringeren Qualität). Ein nachfolgend gestreamter Frame kann dann eine periphere Ansicht auf Basis der geänderten Position beinhalten und somit ein gewünschtes Benutzererlebnis aufrechterhalten und gleichzeitig Ressourcen während des Streamens des sphärischen Videos sparen.
  • In einer exemplarischen Implementierung kann Kachel 905 eine erste Dimension N1×N1 haben; Kacheln 910-1, 910-2, 910-3, 910-4, 910-5, 910-6, 910-7 und 910-8 können eine zweite Dimension N2×N2 haben; und Kacheln 915-1, 915-2, 915-3, 915-4, 915-5, 915-6, 915-7, 915-8, 915-9, 915-10, 915-11, 915-12, 915-13, 915-14, 915-15 und 915-16 können eine dritte Dimension N3×N3 haben. Des Weiteren können Überlappungen, die näher bei Kachel 905 liegen, kleiner sein als Überlappungen, die von Kachel 905 weiter entfernt sind. Die Überlappung zwischen Kachel 905 und Kachel 910-5 kann 0 oder 1 Pixel sein, während die Überlappung zwischen Kachel 910-5 und Kachel 915-9 50 Pixel sein kann. Dieses Muster kann sich von Kachel 905 weg fortsetzen. Die Auswahl von 0, 1 und 50 ist exemplarischer Natur und exemplarische Ausführungsformen sind darauf beschränkt.
  • Wenn Kachel 905 kleiner (z. B. eine geringere Länge mal Breite) als Kachel 910-5 ist, ist die Codierung von Kachel 910-5 effizienter als die Codierung von Kachel 905. Demgemäß können zusätzliche Effizienten erreicht werden, indem die Erzeugung der Kacheln so konfiguriert wird, dass die Kacheln größer (z. B. größere Länge mal Breite) und die Überlappungen größer werden, je weiter diese sich von der Kachel weg befinden, die eine Ansichtsperspektive eines Betrachters des Videos (oder Bildes) während der Wiedergabe des sphärischen Videos beinhaltet.
  • 10 veranschaulicht ein System 1000 gemäß mindestens einer exemplarischen Ausführungsform. Wie in 10 dargestellt, beinhaltet das System 1000 den Controller 120, den Controller 170, den Codierer 1105 (unten genauer beschrieben) und einen Positionssensor 1025. Der Controller 120 beinhaltet des Weiteren ein Ansichtspositionssteuermodul 1005 und ein Kachelauswahlmodul 1010. Der Controller 170 beinhaltet des Weiteren ein Ansichtspositionsermittlungsmodul 1015 und ein Kachelanforderungsmodul 1020.
  • Gemäß einer exemplarischen Implementierung erkennt der Positionssensor 1025 eine Position (oder Änderung bei der Position) der Augen (oder des Kopfes) eines Betrachters, wobei das Ansichtspositionsermittlungsmodul 1015 eine Ansicht, Perspektive oder Ansichtsperspektive auf Basis der erkannten Position ermittelt und das Kachelanforderungsmodul 1020 die Ansicht, Perspektive oder Ansichtsperspektive als Teil einer Anforderung für einen Frame eines sphärischen Videos, einer Kachel oder einer Vielzahl von Kacheln kommuniziert. Gemäß einer anderen exemplarischen Implementierung erkennt der Positionssensor 1025 eine Position (oder Änderung bei der Position) auf Basis einer Bildschwenkposition, wie auf einem Display wiedergegeben. Ein Benutzer kann zum Beispiel eine Maus, ein Trackpad oder eine Geste (z. B. auf einem berührungsempfindlichen Display) verwenden, um einen Teil des sphärischen Videos oder Bildes, wie auf dem Display wiedergegeben, auszuwählen, zu verschieben, zu ziehen, zu erweitern und/oder dergleichen.
  • Die Anforderung für den Frame des sphärischen Videos, die Kachel oder die Vielzahl von Kacheln kann zusammen mit einer Anforderung für einen Frame eines sphärischen Videos kommuniziert werden. Die Anforderung für die Kachel kann getrennt von einer Anforderung für einen Frame des sphärischen Videos kommuniziert werden. Die Anforderung für die Kachel kann zum Beispiel als Reaktion auf eine geänderte Ansicht, Perspektive oder Ansichtsperspektive erfolgen, die zu einer Notwendigkeit führt, früher eine vorher angeforderte und/oder in die Warteschlange gestellte Kachel, Vielzahl von Kacheln oder einen Frame zu ersetzen.
  • Das Ansichtspositionssteuermodul 1005 empfängt und verarbeitet die Anforderung für die Kachel. Das Ansichtspositionssteuermodul 1005 kann zum Beispiel einen Frame und eine Position der Kachel oder Vielzahl von Kacheln im Frame auf Basis der Ansichtsperspektive ermitteln. Anschließend kann das Ansichtspositionssteuermodul 1005 das Kachelauswahlmodul 1010 anweisen, die Kachel und/oder Vielzahl von Kacheln auszuwählen. Das Auswählen der Kachel und/oder Vielzahl von Kacheln kann das Weitergeben eines Parameters an den Codierer 1105 beinhalten. Der Parameter kann vom Ansichtsauswahlmodul 1120 während der Codierung des sphärischen Videos und/oder der Kachel verwendet werden.
  • Demgemäß kann der Positionssensor 1025 so konfiguriert sein, dass er eine Position (Ausrichtung, Änderung bei der Position und/oder Änderung bei der Ausrichtung) der Augen (oder des Kopfes) eines Betrachters erkennt. Der Positionssensor 1025 kann zum Beispiel einen Beschleunigungsmesser beinhalten, um Bewegung zu erkennen, und ein Gyroskop, um die Position zu erkennen. Alternativ oder zusätzlich kann der Positionssensor 1025 eine Kamera oder einen Infrarot-Sensor beinhalten, der auf die Augen oder den Kopf des Betrachter fokussiert ist, um eine Position der Augen oder des Kopfes des Betrachters zu ermitteln. Der Positionssensor 1025 kann so konfiguriert sein, dass er Informationen zur Position und zur Änderung bei der Position an das Ansichtspositionsermittlungsmodul 1015 kommuniziert.
  • Das Ansichtspositionsermittlungsmodul 1015 kann so konfiguriert sein, dass es eine Ansicht oder Perspektivenansicht (z. B. einen Teil eines sphärischen Videos, das ein Betrachter zurzeit ansieht) in Bezug auf das sphärische Video ermittelt. Die Ansicht, Perspektive oder Ansichtsperspektive kann als Position, Punkt oder Fokalpunkt im sphärischen Video ermittelt werden. Die Ansicht könnte zum Beispiel eine Breitengrad- oder Längengradposition im sphärischen Video sein. Die Ansicht, Perspektive oder Ansichtsperspektive kann als eine Seite eines Kubus auf Basis des sphärischen Videos ermittelt werden. Die Ansicht (z. B. Breitengrad- und Längengradposition oder Seite) kann dem Ansichtspositionssteuermodul 1005 zum Beispiel mithilfe eines Hypertext Transfer Protocol (HTTP) kommuniziert werden.
  • Das Ansichtspositionssteuermodul 1005 kann so konfiguriert sein, dass es eine Ansichtsposition (z. B. Frame und Position im Frame) einer Kachel oder einer Vielzahl von Kacheln im sphärischen Video ermittelt. Das Ansichtspositionssteuermodul 1005 kann ein Quadrat oder ein Rechteck auswählen, das an der Ansichtsposition, dem Punkt oder Fokalpunkt (z. B. Breitengrad- und Längengradposition oder Seite) zentriert ist. Das Kachelauswahlmodul 1010 kann so konfiguriert sein, dass es das Quadrat oder Rechteck als Block, Kachel oder Vielzahl von Kacheln auswählt. Das Kachelauswahlmodul 1010 kann so konfiguriert sein, dass es den Codierer 1105 anweist (z. B. über einen Parameter oder eine Konfigurationseinstellung), die ausgewählte Kachel oder Vielzahl von Kacheln zu codieren.
  • 11A veranschaulicht ein Flussdiagramm für ein Videocodierersystem gemäß mindestens einer exemplarischen Ausführungsform. Der Videocodierer 1105 beinhaltet einen Block der sphärischen-zu-2D-Darstellung 1110, ein Frame-Zerlegungsmodul 1115, ein Ansichtsauswahlmodul 1120, ein Kachelmodul 1125, den Videocodierer 125 und einen Paketersteller (oder Kombinierer) 1130. Die Elemente 11101130, 125, die im Codierer 1105 enthalten sind, können Softwaremodule, Hardwarekomponenten oder Kombinationen davon beinhalten. Der Codierer 1105 kann statt des Codierers 125 in System 100 verwendet werden. Demgemäß kann der Controller 120 die Elemente 11101130, 125 anweisen (oder aufrufen), die sphärischen Videoframes zu codieren.
  • Der Block der sphärischen-zu-2D-Darstellung 1110 kann so konfiguriert sein, dass er einen sphärischen Frame oder ein sphärisches Bild auf einer 2D-Darstellung des sphärischen Frames oder Bildes abbildet. Die Kugel 300 kann zum Beispiel auf eine 2D-Fläche (z. B. einen Zylinder (in ein Rechteck abgewickelt), ein Quadrat und/oder ein Rechteck) projiziert werden. Die Projektion kann zum Beispiel auf einer äquirektangulären Projektionsgleichung basieren.
  • Das Frame-Zerlegungsmodul 1115 kann so konfiguriert sein, dass es jedes der sphärischen Videoframes in eine Vielzahl von Blöcken (z. B. Block 902) mit einem ersten Satz von Abmessungen N N zerlegt. Demgemäß kann das Frame-Zerlegungsmodul 1115 so konfiguriert sein, dass es die sphärischen Videoframes zerlegt (z. B. auf Basis einer Quad-Baum-Zerlegung).
  • Das Ansichtsauswahlmodul 1120 kann so konfiguriert sein, dass es eine Kachel (oder eine Vielzahl von Kacheln) auf Basis einer Ansicht oder Perspektive oder Ansichtsperspektive eines Benutzers auswählt, der das sphärische Video ansieht. Wie oben erörtert, kann die Ansicht, Perspektive oder Ansichtsperspektive eine sichtbare Perspektive 320 sein, die wiederum ein Teil der Kugel 300, wie aus der Innenperspektive 305 gesehen, sein kann. Die Kachel kann eine Vielzahl von Pixeln sein, die auf Basis der Ansicht ausgewählt werden. Die Vielzahl der Pixel können ein Block, eine Vielzahl von Blöcken oder ein Makroblock sein, der einen Teil des sphärischen Bildes beinhalten kann, das vom Benutzer gesehen werden kann. Der Teil des sphärischen Bildes kann eine Länge und eine Breite haben. Der Teil des sphärischen Bildes kann zweidimensional oder im Wesentlichen zweidimensional sein. Das Ansichtsauswahlmodul 1120 kann eine Kachel (oder eine Vielzahl von Kacheln) auf Basis einer Angabe einer Ansicht oder Perspektive oder Ansichtsperspektive von einem Gerät auswählen, das das sphärische Video wiedergibt.
  • Das Kachelmodul 1125 kann eine Vielzahl von Kacheln auf Basis der Kachel auswählen, die vom Ansichtsauswahlmodul 1120 ausgewählt werden. Das Kachelmodul 1125 kann Kacheln für die Einbeziehung in die Vielzahl von Kacheln auswählen, die die durch das Ansichtsauswahlmodul 1120 ausgewählte Kachel umgeben oder sich von ihr weg erstrecken (z. B. 905). Wie zum Beispiel in 9B dargestellt, kann die Vielzahl von Kacheln zwei Reihen über und zwei Zeilen unter sowie zwei Spalten links und zwei Spalten rechts von der vom Ansichtsauswahlmodul 1120 ausgewählten Kachel (z. B. Kachel 905) beinhalten. Die Vielzahl von Kacheln kann sich überlappen. Das Kachelmodul 1125 kann so konfiguriert sein, dass es jeder der Vielzahl von Kacheln eine QoS zuweist. Das Kachelmodul 1125 kann so konfiguriert sein, dass es jede der Kacheln und die der QoS für jede Kachel zugeordneten Parameter an den Codierer 125 in einer Schleife weitergibt.
  • Das Kachelmodul 1125 kann zum Beispiel die Blöcke (z. B. die Pixel), die jeder Kachel zugeordnet sind, lesen und die Blöcke und QoS in einer Warteschlange speichern und die Inhalte der Warteschlange einen Eintrag nach dem anderen ausgeben (z. B. wie vom Controller 120 angewiesen oder aufgerufen). Der Codierer 125 kann die Blöcke einer Kachel mithilfe der Parameter codieren, die der QoS zugeordnet sind, und die Ergebnisse an den Paketersteller 1130 ausgeben. Der Codierer 125 kann jede der Vielzahl von Kacheln getrennt codieren. Der Paketersteller 1130 kann außerdem eine Warteschlange beinhalten, um die Ergebnisse in die Warteschlange zu stellen, bis jede der Vielzahl von Kacheln codiert ist. In einer anderen exemplarischen Implementierung kann der Codierer 1105 eine Vielzahl von Codierern 125 (oder eine Vielzahl von Softwareimplementierungen des Videocodierers 125) beinhalten, sodass die Vielzahl von Kacheln parallel codiert werden kann.
  • Der Paketersteller 1130 kann so konfiguriert sein, dass er ein Paket für die Übertragung erstellt. Das Paket kann komprimierte Videobits 10A beinhalten. Das Paket kann die Vielzahl von codierten Kacheln beinhalten. Das Paket kann einen Header für die Übertragung beinhalten. Der Header kann u. a. Informationen beinhalten, die den Modus oder das Schema für die Verwendung bei der Intraframe-Codierung durch den Codierer angeben. Der Header kann Informationen beinhalten, die Parameter angeben, die zum Umwandeln eines Frames des sphärischen Videoframes in eine rechteckige 2D-Darstellung verwendet werden. Der Header kann Informationen beinhalten, die Parameter angeben, die zur Erreichung der QoS der (z. B. jeder der) Vielzahl codierter 2D-Kacheln verwendet werden.
  • In einer exemplarischen Implementierung kann der Paketersteller 1130 ein Paket erstellen, das nur die Vielzahl codierter Kacheln als codierte Bits beinhaltet. In einer anderen Ausführungsform kann der Paketersteller 1130 ein Paket erstellen, das ein codierter Frame der sphärischen Videodaten (oder ein sphärisches Bild) nachahmt. Demgemäß kann der Paketersteller 1130 einen nachgeahmten Frame mit Dummydaten an Daten(oder Bit)-Orten (des Frames) füllen, die nicht der Vielzahl der codierten Kacheln zugewiesen sind. Der Paketersteller 1130 könnte zum Beispiel eine Vorlage für einen codierten Frame beinhalten, Bits, die der Vielzahl codierter Kacheln zugeordnet sind, in einer Position in der Vorlage abbilden, die der Vielzahl codierter Kacheln entspricht, und den Rest der Positionen in der Vorlage mit Dummydaten (z. B. einem Wert 0) zuweisen.
  • 11B veranschaulicht ein Flussdiagramm für ein Videodecodierersystem gemäß mindestens einer exemplarischen Ausführungsform. Der Videodecodierer 1150 beinhaltet ein Frame-Erstellungsmodul 1155, den Videodecodierer 175 und einen Block der 2D-Darstellung-zu-sphärisch 1160. Die Elemente 1155, 175, 1160. die in Decodierer 1150 enthalten sind, können Softwaremodule, Hardwarekomponenten oder Kombinationen davon beinhalten. Der Decodierer 1150 kann statt des Decodierers 175 in System 150 verwendet werden. Demgemäß kann der Controller 170 die Elemente 1155, 175, 1160 anweisen (oder aufrufen), die sphärischen Videoframes zu codieren.
  • Das Frame-Erstellungsmodul 1155 kann so konfiguriert sein, dass es einen Frame erstellt, der einen codierten Frame der sphärischen Videodaten (oder eines sphärischen Bildes) nachahmt. Das Frame-Erstellungsmodul 1155 kann demgemäß einen nachgeahmten Frame mit Dummydaten an Daten(oder Bit)-Orten (des Frames) füllen, die nicht der Vielzahl der codierten Kacheln zugeordnet sind. Das Frame-Erstellungsmodul 1155 könnte zum Beispiel eine Vorlage für einen codierten Frame beinhalten, Bits, die der Vielzahl codierter Kacheln zugeordnet sind, in einer Position in der Vorlage abbilden, die der Vielzahl codierter Kacheln entspricht, und den Rest der Positionen in der Vorlage mit Dummydaten (z. B. einem Wert 0) zuweisen.
  • Der Block der sphärischen-zu-2D-Darstellung 1160 kann so konfiguriert sein, dass er eine 2D-Darstellung eines sphärischen Frames oder Bildes in einem sphärischen Frame oder Bild abbildet. 3 veranschaulicht zum Beispiel die Kugel 300 (z. B. als einen Frame oder ein Bild). Die Kugel 300 hätte früher auf die Oberfläche eines Zylinders (der zu einem Rechteck entwickelt werden kann), eines Quadrats oder Rechtecks projiziert werden können. Die Projektion kann zum Beispiel äquirektangulär oder semi-äquirektangulär sein. Die Abbildung der 2D-Darstellung des sphärischen Frames oder Bildes auf dem sphärischen Frame oder Bild kann umgekehrt zur vorherigen Abbildung sein.
  • 11C veranschaulicht ein Flussdiagramm für ein Videodecodierersystem gemäß mindestens einer exemplarischen Ausführungsform. Der Videodecodierer 1170 beinhaltet den Videodecodierer 175 und den Block der 2D-Darstellung zu sphärisch 1160. Die Elemente 175, 1160, die in Decodierer 1170 enthalten sind, können Softwaremodule, Hardwarekomponenten oder Kombinationen davon beinhalten. Der Decodierer 1170 kann statt des Decodierers 175 in System 150 verwendet werden. Demgemäß kann der Controller 170 die Elemente 175, 1160 anweisen (oder aufrufen), die sphärischen Videoframes zu codieren.
  • In einer exemplarischen Implementierung kann der Decodierer 1150 in einem System verwendet werden, in dem der Codierer 1105 Pakete als komprimierte Videobits 10A kommuniziert, wobei die Pakete nur Daten beinhalten, die dem sphärischen Video in der Vielzahl codierter Kacheln entsprechen. In einer anderen exemplarischen Implementierung kann der Decodierer 1170 in einem System verwendet werden, in dem der Codierer 1105 Pakete als komprimierte Videobits 10A kommuniziert, wobei die Pakete Daten beinhalten, die ein codiertes Videoframe nachahmen, das Daten beinhaltet, die dem sphärischen Video einschließlich der Vielzahl codierter Kacheln entsprechen.
  • Es ist darauf hinzuweisen, dass die Systeme 100 und 150, die in 1A und 1B veranschaulicht sind, die Codierer 125, 1105, die in 2A und 11A veranschaulicht sind, sowie die Decodierer 175, 1150, 1170, die in 2B, 11B und 11C veranschaulicht sind, als ein Element und/oder eine Erweiterung des generischen Computergeräts 2700 und/oder des generischen mobilen Computergeräts 950 implementiert werden können, das nachfolgend in Bezug auf 27 beschrieben wird. Alternativ oder zusätzlich können die Systeme 100 und 150, die in 1A und 1B veranschaulicht sind, die Codierer 125, 1105, die in 2A und 11A veranschaulicht sind, sowie die Decodierer 175, 1150, 1170, die in 2B, 11B und 11C veranschaulicht sind, in einem System getrennt vom generischen Computergerät 2700 und/oder dem generischen mobilen Computergerät 2750, das einige oder alle nachfolgend beschriebenen Funktionen in Bezug auf das generische Computergerät 2700 und/oder das generische tragbare Computergerät 2750 aufweist, implementiert werden.
  • 12 und 13 sind Flussdiagramme der Verfahren nach exemplarischen Ausführungsformen. Die Schritte, die mit Bezug auf 12 und 13 beschrieben sind, können aufgrund der Ausführung von Softwarecode, der in einem Speicher (z. B. mindestens einem Speicher 110) gespeichert ist, der einer Vorrichtung (z. B. wie in 1 dargestellt) zugeordnet ist, und der durch mindestens einen Prozessor (z. B. mindestens einen Prozessor 105) ausgeführt wird, welcher der Vorrichtung zugeordnet ist, durchgeführt werden. Alternative Ausführungsformen werden allerdings bedacht, wie ein System, welches als Spezialprozessor ausgeführt ist. Obwohl die unten beschriebenen Schritte so beschrieben sind, als würden sie von einem Prozessor ausgeführt werden, müssen die Schritte nicht zwingend von dem selben Prozessor ausgeführt werden. Mit anderen Worten, mindestens ein Prozessor kann die Schritte ausführen, die unten in 12 und 13 dargestellt sind.
  • 12 veranschaulicht ein Verfahren für die Codierung des Streamings von sphärischen Videos gemäß mindestens einer exemplarischen Ausführungsform. Wie in 12 dargestellt, wird in Schritt S1205 ein Frame eines sphärischen Videodatenstroms (oder eines sphärischen Bildes) empfangen. Ein Controller (z. B. Controller 120) kann einen Codierer (z. B. Codierer 125, 1105) anweisen, ein oder mehrere Frames von (einer) Videoquelle(n) zu empfangen. Die Videoquelle(n) kann/können eine beliebige Videoquelle (z. B. ein Datenspeichergerät, ein Netzwerk, das Internet, ein getrenntes Computergerät und dergleichen) beinhalten. Der/die Videosequenzframe(s) kann/können Videoframes sein, die einem sphärischen Videodatenstrom (z. B. Videodatenstrom 5) zugeordnet sind. Der Videodatenstrom kann ein Echtzeit-Videodatenstrom (z. B. eine Videokonferenz oder ein Videochat) sein. Der Videodatenstrom kann ein früher aufgezeichnetes Video (z. B. ein Film oder eine Videorecorder-Aufzeichnung) sein. Außerdem kann der Videoinhalt analoges oder digitales Video sein.
  • In Schritt S1210 wird der sphärische Frame (Bild) auf einer 2D-Darstellung abgebildet. Die Abbildung eines Frames (oder sphärischen Bildes) auf einer 2D-Darstellung kann zum Beispiel die Projektion des Frames (oder sphärischen Bildes) auf die Oberfläche eines Zylinders (der dann in ein Rechteck abgewickelt wird), ein Quadrat oder Rechteck beinhalten. In einer exemplarischen Implementierung kann die Projektion äquirektangulär sein. Mit anderen Worten, Pixel entlang einer Linie in der Mitte der Kugel (z. B. ein Äquator) werden auf einer abstandsgleichen Linie zwischen der Oberseite und Unterseite des Zylinders, Quadrats oder Rechtecks abgebildet. Beim Wegbewegen von der Linie (z. B. nach oben und nach unten von der Linie) wird dann jede horizontale Linie auf dem Zylinder als gerade Linie durch die Mitte des Bildes abgebildet, wobei die vertikale Linie vertikal bleibt. Wenn die horizontale Linie immer näher zu den Polen der Kugel gelangt, kann das Bild gedehnt werden, um zum Zylinder, Quadrat oder Rechteck zu passen. Andere Projektionen werden erwägt. Zum Beispiel könnte eine semi-äquirektanguläre Projektion verwendet werden. Eine semi-äquirektanguläre Projektion kann den Umfang der vorher erwähnten Dehnung so skalieren, dass die Projektion den Zylinder, das Quadrat oder das Rechteck nicht vollständig füllt.
  • In Schritt S1215 wird der Frame einschließlich der 2D-Darstellung in eine C×R-Matrix von N×N-Blöcken oder Makroblöcken zerlegt. Der Controller 120 kann zum Beispiel den Codierer (z. B. das Frame-Zerlegungsmodul 1115) anweisen, die sphärischen Videoframes in eine C×R-Matrix von Makroblöcken mit N×N-Dimensionen zu zerlegen. Der Codierer kann zum Beispiel eine Quad-Baum-Zerlegungstechnik verwenden, um den Frame einschließlich der 2D-Darstellung (oder Bild) zu zerlegen.
  • In Schritt S1220 wird eine Angabe einer Ansichtsperspektive empfangen. Die Angabe der Ansichtsperspektive kann von einem Gerät empfangen werden, das eine Wiedergabe des sphärischen Videos durchführt. Mit anderen Worten, die Angabe der Ansichtsperspektive kann von einem Gerät empfangen werden, das einen Decodierer (z. B. Decodierer 175, 1150, 1170) implementiert, damit ein Betrachter das sphärische Video ansehen kann. Wie oben erörtert, kann die Angabe einer Ansichtsperspektive auf einem Teil eines sphärischen Videos basieren, das ein Betrachter zurzeit ansieht. Die Angabe kann zum Beispiel ein Punkt oder eine Position (z. B. Längengrad oder Breitengrad) auf der Kugel, eine Vielzahl von Punkten auf der Kugel oder eine Seite eines Kubus, der die Kugel darstellt, sein.
  • In einer exemplarischen Implementierung wird die Angabe einer Ansichtsperspektive empfangen, bevor der sphärische Frame (oder Bild) in einer 2D-Darstellung abgebildet wird. In dieser Implementierung kann der sphärische Frame (oder das sphärische Bild) gedreht werden, sodass die Ansichtsperspektive zum Beispiel entlang der Linie in der Mitte der Kugel (z. B. entlang des Äquators) zentriert ist. Als Folge können die Pixel, Blöcke und/oder Makroblöcke (aus denen z. B. die oben beschriebenen Kacheln bestehen) in einer solchen Position sein, dass jegliche Verzerrung der Pixel, Blöcke und/oder Makroblöcke während einer Projektion der Pixel, Blöcke und/oder Makroblöcke auf der Oberfläche des Zylinders, Rechtecks oder Quadrats minimiert werden können.
  • In Schritt S1225 wird eine Kachelposition im sphärischen Frame auf Basis der Ansichtsperspektive ermittelt. Wenn die Angabe zum Beispiel ein Punkt oder eine Position auf der Kugel (als ein sphärisches Bild oder ein sphärischer Frame) ist, kann eine Kachel (z. B. eine Anzahl an Pixeln, ein Block und/oder ein Makroblock) auf Basis des Punkts oder der Position ermittelt werden. In einer exemplarischen Implementierung kann die Position der Kachel (mindestens eine Kachel oder eine Vielzahl von Kacheln) ein Rechteck sein, das am Punkt oder an der Position zentriert ist.
  • In Schritt S1230 wird eine Vielzahl von 2D-Kacheln auf Basis der Kachelposition erzeugt. Wie oben erörtert, können die 2D-Kacheln zum Beispiel ein Bild einschließlich einer Vielzahl von Pixeln oder Blöcken sein. Die 2D-Kacheln können einen Teil des Frames des sphärischen Videos beinhalten. Die Vielzahl von 2D-Kacheln können durch Auswählen eines ersten Teils des Frames des sphärischen Videos als erste zweidimensionale Kachel (z. B. 905) auf Basis der Kachelposition und Auswählen einer Vielzahl zweiter zweidimensionaler Kacheln aus einem zweiten Teil des Frames des sphärischen Videos (z. B. Kacheln 910-1 bis 8 und/oder Kacheln 915-1 bis 16) erzeugt werden, wobei der zweite Teil des Frames den ersten Teil des Frames umgibt und sich vom ersten Teil des Frames weg erstreckt. In einer Implementierung können die 2D-Kacheln auf Basis der Kachelposition oder Ansichtsperspektive erzeugt werden, um die Vielzahl von Pixel oder Blöcken zu beinhalten, die in einem Quadrat oder Rechteck enthalten sind, das am Punkt oder an der Position zentriert ist. In einer anderen exemplarischen Implementierung ist die Vielzahl von Pixeln oder Blöcken, die die Vielzahl von 2D-Kacheln im Frame (oder Bild) bilden, vordefiniert oder vorkonfiguriert und die 2D-Kacheln können (als die erzeugten 2D-Kacheln) ausgewählt werden, sodass mindestens eine der 2D-Kacheln die Kachelposition in der Mitte der Kachelposition oder Ansichtsperspektive beinhaltet. In noch einer anderen Implementierung kann während der vorher erwähnten Rotation des sphärischen Frames (oder Bildes) der sphärische Frame (oder das sphärische Bild) gedreht werden, sodass die Kachelposition oder Ansichtsperspektive in der Mitte der Projektion auf der Oberfläche des Zylinders, Rechtecks oder Quadrats positioniert ist. Daher kann die mittlere Kachel eine der ausgewählten Kacheln (wie die erzeugten 2D-Kacheln) sein.
  • In Schritt S1235 werden die 2D-Kacheln mithilfe von zwei oder mehr QoS-Einstellungen codiert. Die 2D-Kachel kann zum Beispiel mithilfe einer konfigurierten Transformation (z. B. einer KLT, einer SVD, einer DCT oder einer ADST) in Transformationskoeffizienten transformiert (codiert oder komprimiert) werden. Die codierte Transformationskoeffizienten oder Sätze von Restwerten für den Block können quantisiert werden. Der Controller 120 kann zum Beispiel den Quantisierungsblock 220 anweisen (oder aufrufen), um codierte Bewegungsvektoren und die codierten Restfehler durch eine beliebige einigermaßen geeignete Quantisierungstechnik zu quantisieren. Außerdem kann der Controller 120 den Entropiecodierblock 220 anweisen, zum Beispiel Codes durch eine beliebige Codiertechnik zu den quantisierten Bewegungsvektorcodes und Restfehlercodes zuzuweisen, um Codelängen mit den Wahrscheinlichkeiten der quantisierten Bewegungsvektorcodes und Restfehlercode abzugleichen. Der Codierer 125 (wie in Codierer 1105 implementiert) kann jede der Vielzahl von 2D-Kacheln getrennt codieren.
  • In einer exemplarischen Implementierung kann eine andere Qualität (oder Servicequalität (QoS) bei einer Kachel (oder der Vielzahl von Kacheln) verwendet werden, die die Ansichtsperspektive beinhaltet, im Vergleich zu Kacheln an einer peripheren Ansicht oder außerhalb der Ansichtsperspektive (z. B. von einem Betrachter während der Wiedergabe nicht gesehen). Die QoS kann auf einem Kompressionsalgorithmus, einer Übertragungsrate und/oder einem Codierschema basieren. Die Kachel (oder Kacheln), die die Ansichtsperspektive beinhaltet, kann mit einer höheren QoS codiert sein, als die Kacheln an der Peripheriesicht oder außerhalb der Ansichtsperspektive. Die QoS kann die Auflösung der Kachel und/oder Kacheln bei der Decodierung beeinflussen. Demgemäß kann die Kachel, die die Ansichtsperspektive (als sichtbare Perspektive einschließlich eines Teils des sphärischen Videoframes) beinhaltet, so codiert werden, dass die Kachel, die die Ansichtsperspektive beinhaltet, (wenn sie decodiert ist) eine höhere Auflösung hat im Vergleich zu Kacheln an einer peripheren Ansicht oder außerhalb der Ansichtsperspektive (z. B. von einem Betrachter während der Wiedergabe nicht gesehen) (wenn sie decodiert sind).
  • In einer exemplarischen Implementierung kann die Vielzahl von 2D-Kacheln an einer peripheren Ansicht oder außerhalb der Ansichtsperspektive Kacheln unterschiedlicher Dimensionen beinhalten. Des Weiteren kann eine größere der Kacheln mit unterschiedlichen Dimensionen mit einer geringeren QoS codiert werden im Vergleich zu einer QoS einer kleineren der Kacheln mit unterschiedlichen Dimensionen. Demgemäß kann sich eine Auflösung decodierter Kacheln, die 2D-Kacheln an einer peripheren Ansicht oder außerhalb der Ansichtsperspektive zugeordnet sind, auf Basis einer Größe einer Kachel und/oder einer Position einer Kachel unterscheiden.
  • In Schritt S1240 wird ein codiertes (komprimiertes) Videobitpaket einschließlich codierter 2D-Kacheln erzeugt. Der Paketersteller 1130 kann zum Beispiel ein Paket für die Übertragung erstellen. Das Paket kann komprimierte Videobits 10A beinhalten. Das Paket kann die codierten Kacheln (z. B. eine Vielzahl von Kacheln) beinhalten. Das Paket kann einen Header für die Übertragung beinhalten. Der Header kann u. a. Informationen beinhalten, die den Modus oder das Schema für die Verwendung bei der Intraframe-Codierung durch den Codierer angeben. Der Header kann Informationen beinhalten, die Parameter angeben, die zum Umwandeln eines Frames des sphärischen Videoframes in eine rechteckige 2D-Darstellung verwendet werden. Der Header kann Informationen beinhalten, die Parameter angeben, die zur Erreichung der QoS (z. B. einer Vielzahl von QoS) der codierten Kacheln verwendet werden.
  • In einer exemplarischen Implementierung erstellt der Paketersteller 1130 ein Paket, das nur die Vielzahl codierter Kacheln als codierte Bits beinhaltet. In einer anderen Ausführungsform kann der Paketersteller 1130 ein Paket erstellen, das einen codierten vollständigen Frame nachahmt. Demgemäß kann der Paketersteller 1130 einen nachgeahmten Frame mit Dummydaten an Daten(oder Bit)-Orten (eines Frames) füllen, die nicht der Vielzahl der codierten Kacheln zugeordnet sind. Der Paketersteller 1130 könnte zum Beispiel eine Vorlage für einen codierten Frame beinhalten, Bits, die der Vielzahl codierter Kacheln zugeordnet sind, in einer Position in der Vorlage abbilden, die der Vielzahl codierter Kacheln entspricht, und den Rest der Positionen in der Vorlage mit Dummydaten (z. B. einem Wert 0) zuweisen.
  • 13 veranschaulicht ein Verfahren für die Decodierung des Streamings von sphärischen Videos gemäß mindestens einer exemplarischen Ausführungsform. Wie in 13 dargestellt, wird in Schritt S1305 ein Paket einschließlich codierter (komprimierter) Videobits empfangen, wobei das Paket eine Vielzahl codierter 2D-Kacheln beinhaltet, die aus eine sphärischen Videoframe (oder sphärischen Bild) ausgewählt wurden. Das Paket kann zum Beispiel komprimierte Videobits 10A beinhalten. Das Paket kann einen Header für die Übertragung beinhalten. Der Header kann u. a. Informationen beinhalten, die den Modus oder das Schema für die Verwendung bei der Intraframe-Codierung durch den Codierer angeben. Der Header kann Informationen beinhalten, die Parameter angeben, die zum Umwandeln eines Frames des sphärischen Videos in eine rechteckige 2D-Darstellung verwendet werden. Der Header kann Informationen beinhalten, die Parameter angeben, die zur Erreichung der QoS der Vielzahl codierter Kacheln verwendet werden. Wie oben erörtert, kann eine andere Qualität (oder Servicequalität (QoS) bei einer Kachel (oder der Vielzahl von Kacheln) verwendet werden, die die Ansichtsperspektive beinhaltet, im Vergleich zu Kacheln an einer peripheren Ansicht oder außerhalb der Ansichtsperspektive (z. B. von einem Betrachter während der Wiedergabe nicht gesehen). Die QoS der Kachel, die die Ansichtsperspektive beinhaltet, kann zum Beispiel höher sein als die QoS der Kacheln an einer peripheren Ansicht oder außerhalb der Ansichtsperspektive (z. B. von einem Betrachter während der Wiedergabe nicht gesehen).
  • In Schritt S1310 kann in einer Implementierung eine 2D-Darstellung des sphärischen Videoframes (oder Bildes), das auf den 2D-Kacheln basiert, erzeugt werden. In diesem Fall wird zum Beispiel nur die Vielzahl der codierten Kacheln empfangen. Daher kann ein Decodierer (der z. B. Frame-Erstellungsmodul 1155 implementiert) einen nachgeahmten Frame mit Dummydaten an Daten(oder Bit)-Orten (eines Frames) füllen, die nicht der Vielzahl der codierten Kacheln zugeordnet sind. Das Frame-Erstellungsmodul 1155 könnte zum Beispiel eine Vorlage für einen codierten Frame beinhalten, Bits, die der Vielzahl codierter Kacheln zugeordnet sind, in einer Position in der Vorlage abbilden, die der Vielzahl codierter Kacheln entspricht, und den Rest der Positionen in der Vorlage mit Dummydaten (z. B. einem Wert 0) zuweisen.
  • In Schritt S1315 wird die 2D-Darstellung, die die Vielzahl codierter Kacheln beinhaltet, decodiert. Ein Videodecodierer (z. B. Decodierer 175, 1150, 1170) entropiedecodiert zum Beispiel die codierte 2D-Darstellung. Die komprimierten Videobits können zum Beispiel durch Entropiedecodierung decodiert werden, z. B. mithilfe kontextadaptiver binärarithmetischer Decodierung, um eine Reihe quantisierter Transformationskoeffizienten zu erzeugen. Der Videodecodierer dequantisiert die Transformationskoeffizienten, die durch die entropiedecodierten Bits angegeben werden. Die entropiedecodierten Videobits können zum Beispiel durch Abbildung von Werten in einem relativ kleinen Bereich der Werte in einen relativ großen Bereich dequantisiert werden (z. B. im Gegensatz zur oben beschriebenen Quantisierungsabbildung). Des Weiteren transformiert der Videodecodierer die Videobits mithilfe einer angegebenen (z. B. im Header) Transformation (z. B. einer KLT, einer SVD, einer DCT oder einer ADST). Der Videodecodierer kann die rekonstruierten Pixel im Videoframe filtern. Ein Schleifenfilter kann zum Beispiel auf den rekonstruierten Block angewendet werden, um Blockartefakte zu verringern. Ein Deblockierungsfilter kann zum Beispiel auf den rekonstruierten Block angewendet werden, um Verzerrungen zu verringern. Die Decodierung der 2D-Darstellung kann die Verwendung (jede der) QoS als Eingabeparameter für das Decodierungsschema oder den Codec beinhalten.
  • In Schritt S1320 wird die 2D-Darstellung in das sphärische Videoframe umgewandelt. Die decodierte 2D-Darstellung kann zum Beispiel in ein sphärisches Videoframe (oder Bild) umgewandelt werden. Die 2D-Darstellung kann zum Beispiel durch Umkehr der Technik wie oben in Bezug auf die Abbildung eines sphärischen Frames (oder Bildes) auf einer 2D-Darstellung des sphärischen Frames (oder Bildes) beschrieben umgewandelt werden.
  • In Schritt S1325 wird ein sphärischer Videodatenstrom (oder sphärisches Bild) auf Basis mindestens eines sphärischen Videoframes einschließlich der decodierten Vielzahl von Kacheln erzeugt. Mindestens ein Videoframe der rekonstruierten umgewandelten Pixel des sphärischen Videos, das die decodierte Vielzahl von Kacheln beinhaltet, kann zum Beispiel in einer Sequenz organisiert werden, um einen sphärischen Videodatenstrom zu bilden. Wie oben erörtert, wurde die Kachel (oder die Vielzahl von Kacheln), die die Ansichtsperspektive beinhaltet, mit einer höhere QoS codiert als die Kacheln an der peripheren Ansicht oder außerhalb der Ansichtsperspektive (z. B. von einem Betrachter während der Wiedergabe nicht gesehen). Demgemäß kann das Erzeugen des sphärischen Videodatenstroms dazu führen, dass der sichtbare Teil des sphärischen Videodatenstroms von einer höheren Qualität ist als der periphere oder nicht sichtbare Teil des sphärischen Videodatenstroms während einer Wiedergabe des sphärischen Videodatenstroms.
  • In einer exemplarischen Implementierung kann, wenn sich die Ansichtsperspektive, wie vom Betrachter gesehen, während des Streamens (und/oder Decodieren) des sphärischen Videos oder Bildes ändert, eine Angabe der geänderte Ansichtsperspektive ausgelöst und an ein Gerät gesendet werden, das eine Codierung des sphärischen Videos ausführt.
  • 14A veranschaulicht ein weiteres Flussdiagramm für ein Videocodierersystem 1405 gemäß mindestens einer exemplarischen Ausführungsform. Der Videocodierer 1405 kann Videocodierer 125 in System 100 ersetzen, das in 1A dargestellt und oben beschrieben ist. Demgemäß beinhaltet der Videocodierer 1405 einen Block der sphärischen-zu-2D-Darstellung 205, einen Prädiktionsblock 210, einen Transformationsblock 215, einen Quantisierungsblock 220, einen Entropiecodierungsblock 225, einen inversen Quantisierungsblock 230, einen inversen Transformationsblock 235, einen Rekonstruktionsblock 240 und einen Schleifenfilterblock 245.
  • Außerdem beinhaltet der Videocodierer 1405 ein Ansichtsauswahlmodul 1410, einen Codierer 125 und einen Paketersteller (oder Kombinierer) 1415. In einer alternativen Implementierung (und/oder einer zusätzlichen Implementierung) beinhaltet der Codierer 1405 einen Switch 1440. Andere strukturelle Variationen des Videocodierers 1405 können verwendet werden, um den Eingabe-Videodatenstrom 5 zu codieren. Wie in 14A dargestellt, stellen gestrichelte Linien einen Rekonstruktionspfad zwischen den verschiedenen Blöcken dar und die durchgezogenen Linien stellen einen Weiterleitungspfad zwischen den verschiedenen Blöcken dar.
  • Das Ansichtsauswahlmodul 1410 kann so konfiguriert sein, dass es eine Kachel (oder eine Vielzahl von Kacheln) auf Basis einer Ansicht oder Perspektive oder Ansichtsperspektive eines Benutzers auswählt, der das sphärische Video ansieht. Wie oben erörtert, kann die Ansicht, Perspektive oder Ansichtsperspektive eine sichtbare Perspektive 320 sein, die wiederum ein Teil der Kugel 300, wie aus der Innenperspektive 305 gesehen, sein kann. Die Kachel kann eine Vielzahl von Pixeln sein, die auf Basis der Ansicht ausgewählt werden. Die Vielzahl der Pixel können ein Block, eine Vielzahl von Blöcken oder ein Makroblock sein, der einen Teil des sphärischen Bildes beinhalten kann, das vom Benutzer gesehen werden kann. Der Teil des sphärischen Bildes kann eine Länge und eine Breite haben. Der Teil des sphärischen Bildes kann zweidimensional oder im Wesentlichen zweidimensional sein. Die Kacheln können eine variable Größe haben (z. B. wie viel der Kugel die Kachel abdeckt). Die Größe der Kachel kann zum Beispiel basierend darauf codiert und gestreamt werden, wie breit das Sichtfeld des Betrachters ist und/oder wie schnell der Benutzer seinen Kopf dreht. Wenn sich der Betrachter zum Beispiel ständig umsieht, kann eine größere Kachel von geringerer Qualität ausgewählt werden. Wenn sich der Betrachter jedoch auf eine Perspektive konzentriert, können kleinere, detailliertere Kacheln ausgewählt werden.
  • In einer exemplarischen Implementierung können Parameter, die in Codierer 125 verwendet und/oder von ihm ermittelt werden, von anderen Elementen des Codierers 1405 verwendet werden. Zum Beispiel könnten Bewegungsvektoren (z. B. wie bei der Prädiktion verwendet), die zur Codierung der 2D-Darstellung verwendet werden, zur Codierung der Kachel verwendet werden. Des Weiteren könnten Parameter, die im Prädiktionsblock 210, im Transformationsblock 215, im Quantisierungsblock 220, den Entropiecodierungsblock 225, im inversen Quantisierungsblock 230, im inversen Transformationsblock 235, im Rekonstruktionsblock 240 und im Schleifenfilterblock 245 verwendet und/oder durch diese ermittelt werden, zwischen Codierer 125 und Codierer 1405 gemeinsam genutzt werden.
  • Der Teil des sphärischen Videoframes oder Bildes kann als Bild verarbeitet werden. Daher kann der Teil des sphärischen Videoframes in eine C×R-Matrix von Blöcken (im Folgenden als Blöcke bezeichnet) umgewandelt werden. Der Teil des sphärischen Videoframes kann in eine C×R-Matrix mit jeweils 16×16, 16×8, 8×16, 8×8, 8×4, 4×8, 4×4 oder 2×2 Blöcken umgewandelt werden, die jeweils eine Anzahl an Pixeln haben.
  • Gemäß einer exemplarischen Implementierung kann Codierer 125 einen Frame mit einer anderen Qualität (oder Servicequalität (QoS)) codieren, wie durch Q angegeben, als der Codierer 1405 die Kachel codiert. Die QoS kann auf einem Kompressionsalgorithmus, einer Übertragungsrate und/oder einem Codierschema basieren. Daher kann der Codierer 125 einen anderen Codieralgorithmus und/oder ein anderes Codierschema als Codierer 1405 verwenden. Die codierte Kachel kann zum Beispiel eine höhere QoS haben als der Frame, der durch Codierer 125 codiert wurde. Wie oben erörtert, kann Codierer 125 so konfiguriert sein, dass er eine 2D-Darstellung des sphärischen Videoframes codiert. Demgemäß kann die Kachel (als sichtbare Perspektive einschließlich eines Teils des sphärischen Videoframes) mit einer höheren QoS codiert werden als die 2D-Darstellung des sphärischen Videoframes. Die QoS kann die Auflösung des Frames bei der Decodierung beeinflussen. Demgemäß kann die Kachel (als sichtbare Perspektive einschließlich eines Teils des sphärischen Videoframes) so codiert werden, dass die Kachel decodiert eine höhere Auflösung des Frames im Vergleich zu einer decodierten 2D-Darstellung des sphärischen Videoframes hat.
  • Der Paketersteller 1415 kann so konfiguriert sein, dass er ein Paket für die Übertragung erstellt. Das Paket kann komprimierte Videobits 10A beinhalten. Das Paket kann die codierte 2D-Darstellung des sphärischen Videoframes und der codierten Kachel (oder der Vielzahl von Kacheln) beinhalten. Das Paket kann einen Header für die Übertragung beinhalten. Der Header kann u. a. Informationen beinhalten, die den Modus oder das Schema für die Verwendung bei der Intraframe-Codierung durch den Codierer angeben. Der Header kann Informationen beinhalten, die Parameter angeben, die zum Umwandeln eines Frames des sphärischen Videoframes in eine rechteckige 2D-Darstellung verwendet werden. Der Header kann Informationen beinhalten, die Parameter angeben, die zur Erreichung der QoS der codierten rechteckigen 2D-Darstellung der codierten Kachel verwendet werden.
  • In einer alternativen Implementierung (und/oder einer zusätzlichen Implementierung) kann der Codierer 1405 die Kachel mithilfe einer anderen Projektionstechnik oder eines anderen Algorithmus projizieren als zur Erzeugung der 2D-Darstellung des sphärischen Videoframes verwendet. Einige Projektionen können Verzerrungen in bestimmten Bereichen des Frames haben. Demgemäß kann eine Projektion der Kachel, die sich vom sphärischen Frame unterscheidet, die Qualität des endgültigen Bildes verbessern und/oder Pixel effizienter nutzen. In einer exemplarischen Implementierung kann das sphärische Bild vor Projektion der Kachel gedreht werden, um die Kachel in einer Position auszurichten, die auf Basis des Projektionsalgorithmus minimal verzerrt ist. In einer anderen exemplarischen Implementierung kann die Kachel einen Projektionsalgorithmus verwenden (und/oder ändern), der auf der Position der Kachel basiert. Die Projektion des sphärischen Videoframes der 2D-Darstellung kann zum Beispiel eine ä quirektanguläre Projektion verwenden, während die Projektion des sphärischen Videoframes in einer Darstellung einschließlich eines Teils, der als Kachel ausgewählt werden muss, eine kubische Projektion verwenden kann.
  • In einer alternativen Implementierung (und/oder einer zusätzlichen Implementierung) beinhaltet der Codierer 1405 den Switch 1440. In dieser exemplarischen Implementierung wird, statt eine Kachel auf Basis der ausgewählten Ansicht zu codieren, die Kachel aus einer früher codierten (und gespeicherten) Kachel ausgewählt, wie aus einem Datenspeicher (z. B. Ansichtsframe-Speicher 1515) gelesen. Die früher codierte Kachel kann zeit- und ansichtsabhängig sein. Mit anderen Worten, die Kachel kann auf Basis des Frames ausgewählt werden, der zurzeit codiert wird (z. B. durch Codierer 125, wie in 14A dargestellt). Demgemäß sind der Frame, der zurzeit codiert wird, und die ausgewählte Kachel aus derselben Quelldatei (z. B. dieselbe (oder äquivalente) sphärische Videodatei) und im selben Zeitintervall. Die Kachel kann ansichts-, perspektiven- oder ansichtsperspektivenabhängig sein, da die früher codierte Kachel auf Basis derselben Ansicht ausgewählt werden kann wie die Ansicht, die aus dem sphärischen Videoframe ausgewählt worden wäre. Mit anderen Worten, die ausgewählte, früher codierte Kachel wird auf Basis derselben Kriterien ausgewählt, die durch das Ansichtsauswahlmodul 1410 verwendet wurden, um eine Kachel aus dem zu codierenden sphärischen Videoframe auszuwählen.
  • 14B veranschaulicht ein weiteres Flussdiagramm für ein Videodecodierersystem gemäß mindestens einer exemplarischen Ausführungsform. Der Videodecodierer 1420 kann Videodecodierer 175 in System 150 ersetzen, das in 1B dargestellt und oben beschrieben ist. Demgemäß beinhaltet der Videodecodierer 1420 einen Entropiedecodierblock 250, einen inversen Quantisierungsblock 255, einen inversen Transformationsblock 260, einen Rekonstruktionsblock 265, einen Schleifenblock 270, einen Prädiktionsblock 275, einen Deblockierungsfilterblock 280 und einen Block der 2D-Darstellung zu sphärisch 285. Außerdem beinhaltet der Videodecodierer 1420 Decodierer 175, einen Paketdekonstruktor 1425 und ein Kachelaustauschmodul 1430.
  • Der Paketdekonstruktor 1425 kann so konfiguriert sein, dass er die codierte rechteckige 2D-Darstellung des sphärischen Videoframes von der codierten Kachel trennt. Die codierte rechteckige 2D-Darstellung des sphärischen Videoframes wird dann von Decodierer 175 decodiert. Die Kachel wird ebenfalls decodiert und anschließend kann das Kachelaustauschmodul 1430 so konfiguriert sein, dass es die entsprechenden Pixel (oder Blöcke oder Makroblock) im sphärischen Videoframe mit den Pixeln der decodierten Kachel ersetzt. Wie oben erörtert, wurde die Kachel mit einer höheren QoS codiert als die rechteckige 2D-Darstellung des sphärischen Videoframes. Demgemäß hat das resultierende sphärische Video ein hochwertigeres Bild (oder Teil des sphärischen Videos) in der Ansicht, Perspektive oder Ansichtsperspektive des Betrachters des sphärischen Videos im Vergleich zu dem/den Bild(ern) (oder Teil des sphärischen Videos), das/die sich nicht in der Sicht, Perspektive oder Ansichtsperspektive des Betrachters (oder außerhalb) befindet/befinden.
  • In einer exemplarischen Implementierung können Parameter, die in Decodierer 175 verwendet und/oder von ihm ermittelt werden, von anderen Elementen des Decodierer 1420 verwendet werden. Zum Beispiel könnten Bewegungsvektoren (z. B. wie bei der Prädiktion verwendet), die zur Decodierung der 2D-Darstellung verwendet werden, zur Decodierung der Kachel verwendet werden. Des Weiteren könnten Parameter, die im Entropiedecodierungsblock 250, im inversen Quantisierungsblock 255, im inversen Transformationsblock 260, im Rekonstruktionsblock 265, im Schleifenfilterblock 270, in einem Prädiktionsblock 275, im Deblockierungsfilterblock 280 verwendet und/oder durch diese ermittelt werden, zwischen Decodierer 175 und Decodierer 1420 gemeinsam genutzt werden.
  • 15A und 15V ein Flussdiagramm für ein Videocodierersystem gemäß mindestens einer exemplarischen Ausführungsform veranschaulichen. Wie in 15A dargestellt, fügt der Decodierer 1505 Funktionen zu Decodierer 125 hinzu. Demgemäß beinhaltet der Videocodierer 1505 einen Block der sphärischen-zu-2D-Darstellung 205, einen Prädiktionsblock 210, einen Transformationsblock 215, einen Quantisierungsblock 220, einen Entropiecodierungsblock 225, einen inversen Quantisierungsblock 230, einen inversen Transformationsblock 235, einen Rekonstruktionsblock 240 und einen Schleifenfilterblock 245. Außerdem beinhaltet der Videocodierer 1505 ein Ansichtsauswahlmodul 1510. Andere strukturelle Variationen des Videocodierers 1505 können verwendet werden, um den Eingabe-Videodatenstrom 5 zu codieren. Wie in 15A dargestellt, stellen gestrichelte Linien einen Rekonstruktionspfad zwischen den verschiedenen Blöcken dar und die durchgezogenen Linien stellen einen Weiterleitungspfad zwischen den verschiedenen Blöcken dar.
  • Das Ansichtsauswahlmodul 1510 kann so konfiguriert sein, dass es eine Kachel (oder eine Vielzahl von Kacheln) auf Basis einer Ansicht oder Perspektive eines Benutzers auswählt, der das sphärische Video ansieht. Wie oben erörtert, kann die Ansicht, Perspektive oder Ansichtsperspektive eine sichtbare Perspektive 320 sein, die wiederum ein Teil der Kugel 300, wie aus der Innenperspektive 305 gesehen, sein kann. Die Kachel kann eine Vielzahl von Pixeln sein, die auf Basis der Ansicht ausgewählt werden. Die Vielzahl der Pixel können ein Block, eine Vielzahl von Blöcken oder ein Makroblock sein, der einen Teil des sphärischen Bildes beinhalten kann, das vom Benutzer gesehen werden kann. Der Teil des sphärischen Bildes kann eine Länge und eine Breite haben. Der Teil des sphärischen Bildes kann zweidimensional oder im Wesentlichen zweidimensional sein.
  • In einer alternativen Implementierung (und/oder einer zusätzlichen Implementierung) kann der Codierer 1505 die Kachel (oder Vielzahl von Kacheln) mithilfe einer anderen Projektionstechnik oder eines anderen Algorithmus projizieren als zur Erzeugung der 2D-Darstellung des sphärischen Videoframes verwendet. Einige Projektionen können zum Beispiel Verzerrungen in bestimmten Bereichen des Frames haben, daher kann eine Projektion der Kachel, die sich vom sphärischen Frame unterscheidet, die Qualität des endgültigen Bildes verbessern und/oder Pixel effizienter nutzen. In einer exemplarischen Implementierung kann das sphärische Bild vor Projektion der Kachel gedreht werden, um die Kachel in einer Position auszurichten, die auf Basis des Projektionsalgorithmus minimal verzerrt ist. In einer anderen exemplarischen Implementierung kann die Kachel einen Projektionsalgorithmus verwenden (und/oder ändern), der auf der Position der Kachel basiert. Die Projektion des sphärischen Videoframes der 2D-Darstellung kann zum Beispiel eine äquirektanguläre Projektion verwenden, während die Projektion des sphärischen Videoframes in einer Darstellung einschließlich eines Teils, der als Kachel ausgewählt werden muss, eine kubische Projektion verwenden kann.
  • Der Teil des sphärischen Videoframes oder Bildes kann als Bild verarbeitet werden. Daher kann der Teil des sphärischen Videoframes in eine C×R-Matrix von Blöcken (im Folgenden als Blöcke bezeichnet) umgewandelt werden. Der Teil des sphärischen Videoframes kann in eine C×R-Matrix mit jeweils 16×16, 16×8, 8×8, 4×4 oder 2×2 Blöcken umgewandelt werden, die jeweils eine Anzahl an Pixeln haben.
  • Codierer 1505 kann offline als Teil eines Einrichtungsverfahrens betrieben werden, um ein sphärisches Video für das Streamen zur Verfügung zu stellen. Das Ansichtsauswahlmodul 1510 kann so konfiguriert sein, dass es eine Vielzahl von Ansichten auswählt, damit der Codierer 1505 eine Vielzahl von Kacheln codieren kann. Jede der Vielzahl von Kacheln kann in einem Ansichtsframe-Speicher 1515 gespeichert sein. Jede der Vielzahl von Kacheln kann indiziert werden, sodass jede der Vielzahl der Kacheln mit einem Verweis auf den Frame (z. B. eine Zeitabhängigkeit) und eine Ansicht (z. B. eine Ansichtsabhängigkeit) gespeichert wird. Demgemäß wird jede der Vielzahl von Kacheln so gespeichert, dass sie zeit- und ansichts-, perspektiven- oder ansichtsperspektivenabhängig ist und auf Basis der Zeit- und Ansichtsabhängigkeit erneut aufgerufen werden kann.
  • Daher kann in einer exemplarischen Implementierung der Codierer 1505 so konfiguriert sein, dass er eine Schleife ausführt, wobei ein Frame ausgewählt wird und ein Teil des Frames als Kachel auf Basis der Ansicht ausgewählt wird. Die Kachel wird dann codiert und gespeichert. Die Schleife läuft dann durch eine Vielzahl von Ansichten weiter ab. Wenn eine gewünschte Anzahl an Ansichten, z. B. alle 5 Grad um die Vertikale und alle 5 Grad um die Horizontale des sphärischen Bildes, als Kachel gespeichert sind, wird ein neuer Frame ausgewählt und der Vorgang wird wiederholt, bis für alle Frames des sphärischen Videos eine gewünschte Anzahl an Frames gespeichert ist. Dies ist nur eine exemplarische Implementierung für die Codierung und Speicherung von Kacheln. Andere Implementierungen werden erwägt und entsprechen dem Umfang dieser Offenbarung.
  • Wie in 15B dargestellt, kann Codierer 125 einen sphärischen Videodatenstrom 5 codieren. Der Codierer 125 kann Informationen an ein Kachelauswahlmodul 1520 kommunizieren. Der Codierer 125 kann zum Beispiel eine Angabe einer Framenummer, eine Angabe einer Ansicht, Perspektive oder Ansichtsperspektive und eine Angabe einer QoS kommunizieren, die für die Codierung des sphärischen Videodatenstroms 5 verwendet werden. Das Kachelauswahlmodul 1520 kann diese Informationen verwenden, um eine Kachel (oder eine Vielzahl von Kacheln) aus dem Ansichtsframe-Speicher 1515 auszuwählen. Der Paketersteller 1415 kann so konfiguriert sein, dass er ein Paket für die Übertragung erstellt. Das Paket kann komprimierte Videobits 10A beinhalten. Neben anderen Daten oder Informationen kann das Paket die codierte 2D-Darstellung des sphärischen Videoframes, wie durch den Codierer 125 codiert, und die codierte Kachel (oder Vielzahl von Kacheln), wie aus dem Ansichtsframe-Speicher 1515 gelesen, beinhalten.
  • 16 veranschaulicht ein System 1600 gemäß mindestens einer exemplarischen Ausführungsform. Wie in 16 dargestellt, beinhaltet das System 1600 den Controller 120, den Controller 170, den Codierer 1405, den Ansichtsframe-Speicher 1515 und einen Orientierungssensor 1625. Der Controller 120 beinhaltet des Weiteren ein Ansichtspositionssteuermodul 1605 und ein Kachelauswahlmodul 1610. Der Controller 170 beinhaltet des Weiteren ein Ansichtspositionsermittlungsmodul 1615 und ein Kachelanforderungsmodul 1620.
  • Gemäß einer exemplarischen Implementierung erkennt der Orientierungssensor 1625 eine Orientierung (oder Änderung bei der Orientierung) der Augen (oder des Kopfes) eines Betrachters, wobei das Ansichtspositionsermittlungsmodul 1615 eine Ansicht, Perspektive oder Ansichtsperspektive auf Basis der erkannten Orientierung ermittelt und das Kachelanforderungsmodul 1620 die Ansicht, Perspektive oder Ansichtsperspektive als Teil einer Anforderung für eine Kachel oder eine Vielzahl von Kacheln (neben dem sphärischen Video) kommuniziert. Gemäß einer anderen exemplarischen Implementierung erkennt der Orientierungssensor 1625 eine Orientierung (oder Änderung bei der Orientierung) auf Basis einer Bildschwenkposition, wie auf einem Display wiedergegeben. Ein Benutzer kann zum Beispiel eine Maus, ein Trackpad oder eine Geste (z. B. auf einem berührungsempfindlichen Display) verwenden, um einen Teil des sphärischen Videos oder Bildes, wie auf dem Display wiedergegeben, auszuwählen, zu verschieben, zu ziehen, zu erweitern und/oder dergleichen.
  • Die Anforderung für die Kachel kann zusammen mit einer Anforderung für einen Frame des sphärischen Videos kommuniziert werden. Die Anforderung für die Kachel kann getrennt von einer Anforderung für einen Frame des sphärischen Videos kommuniziert werden. Die Anforderung für die Kachel kann zum Beispiel als Reaktion auf eine geänderte Ansicht, Perspektive oder Ansichtsperspektive erfolgen, die zu einer Notwendigkeit führt, eine früher angeforderte und/oder in die Warteschlange gestellte Kachel zu ersetzen.
  • Das Ansichtspositionssteuermodul 1605 empfängt und verarbeitet die Anforderung für die Kachel. Das Ansichtspositionssteuermodul 1605 kann zum Beispiel einen Frame und eine Position der Kachel oder Vielzahl von Kacheln im Frame auf Basis der Ansicht ermitteln. Anschließend kann das Ansichtspositionssteuermodul 1605 das Kachelauswahlmodul 1610 anweisen, die Kachel oder Vielzahl von Kacheln auszuwählen. Das Auswählen der Kachel oder Vielzahl von Kacheln kann das Weitergeben eines Parameters an den Codierer 1405 beinhalten. Der Parameter kann vom Ansichtsauswahlmodul 1410 während der Codierung des sphärischen Videos und/oder der Kachel verwendet werden. Alternativ kann das Auswählen der Kachel oder Vielzahl von Kacheln das Auswählen der Kachel oder Vielzahl von Kacheln aus dem Ansichtsframe-Speicher 1515 beinhalten. Die ausgewählte Kachel oder Vielzahl von Kacheln kann dann an Codierer 1405 als Kachel 1445 weitergegeben werden. In einer anderen exemplarischen Implementierung kann das Auswählen der Kachel oder Vielzahl von Kacheln das Weitergeben eines Parameters des Kachelauswahlmoduls 1520 beinhalten, das diese Informationen verwenden kann, um eine Kachel (oder eine Vielzahl von Kacheln) aus dem Ansichtsframe-Speicher 1515 auszuwählen, wie oben in Bezug auf 15B beschrieben.
  • Demgemäß kann der Orientierungssensor 1625 so konfiguriert sein, dass er eine Orientierung (oder Änderung bei der Orientierung) der Augen (oder des Kopfes) eines Betrachters erkennt. Der Orientierungssensor 1625 kann zum Beispiel einen Beschleunigungsmesser beinhalten, um Bewegung zu erkennen, und ein Gyroskop, um die Orientierung zu erkennen. Alternativ oder zusätzlich kann der Orientierungssensor 1625 eine Kamera oder einen Infrarot-Sensor beinhalten, der auf die Augen oder den Kopf des Betrachter fokussiert ist, um eine Orientierung der Augen oder des Kopfes des Betrachters zu ermitteln. Alternativ oder zusätzlich kann der Orientierungssensor 1625 einen Teil des sphärischen Videos oder Bildes, wie auf dem Display wiedergegeben, ermitteln, um eine Orientierung des sphärischen Videos oder Bildes zu erkennen. Der Orientierungssensor 1625 kann so konfiguriert sein, dass er Informationen zur Orientierung und zur Änderung bei der Orientierung an das Ansichtspositionsermittlungsmodul 1615 kommuniziert.
  • Das Ansichtspositionsermittlungsmodul 1615 kann so konfiguriert sein, dass es eine Ansicht oder Perspektivenansicht (z. B. einen Teil eines sphärischen Videos, das ein Betrachter zurzeit ansieht) in Bezug auf das sphärische Video ermittelt. Die Ansicht, Perspektive oder Ansichtsperspektive kann als Position, Punkt oder Fokalpunkt im sphärischen Video ermittelt werden. Die Ansicht könnte zum Beispiel eine Breitengrad- oder Längengradposition im sphärischen Video sein. Die Ansicht, Perspektive oder Ansichtsperspektive kann als eine Seite eines Kubus auf Basis des sphärischen Videos ermittelt werden. Die Ansicht (z. B. Breitengrad- und Längengradposition oder Seite) kann dem Ansichtspositionssteuermodul 1605 zum Beispiel mithilfe eines Hypertext Transfer Protocol (HTTP) kommuniziert werden.
  • Das Ansichtspositionssteuermodul 1605 kann so konfiguriert sein, dass es eine Ansichtsposition (z. B. Frame und Position im Frame) einer Kachel oder einer Vielzahl von Kacheln im sphärischen Video ermittelt. Das Ansichtspositionssteuermodul 1605 kann ein Rechteck auswählen, das an der Ansichtsposition, dem Punkt oder Fokalpunkt (z. B. Breitengrad- und Längengradposition oder Seite) zentriert ist. Das Kachelauswahlmodul 1610 kann so konfiguriert sein, dass es das Rechteck als Kachel oder Vielzahl von Kacheln auswählt. Das Kachelauswahlmodul 1610 kann so konfiguriert sein, dass es den Codierer 1405 anweist (z. B. über einen Parameter oder eine Konfigurationseinstellung), die ausgewählte Kachel oder Vielzahl von Kacheln zu codieren, und/oder das Kachelauswahlmodul 1610 kann so konfiguriert sein, dass es die Kachel oder Vielzahl von Kacheln aus dem Ansichtsframe-Speicher 1515 auswählt.
  • 1720 sind Flussdiagramme der Verfahren nach exemplarischen Ausführungsformen. Die Schritte, die mit Bezug auf 1720 beschrieben sind, können aufgrund der Ausführung von Softwarecode, der in einem Speicher (z. B. mindestens einem Speicher 110) gespeichert ist, der einer Vorrichtung (z. B. wie in 1 dargestellt) zugeordnet ist, und der durch mindestens einen Prozessor (z. B. mindestens einen Prozessor 105) ausgeführt wird, der der Vorrichtung zugeordnet ist, durchgeführt werden. Alternative Ausführungsformen werden allerdings bedacht, wie ein System, welches als Spezialprozessor ausgeführt ist. Obwohl die unten beschriebenen Schritte so beschrieben sind, als würden sie von einem Prozessor ausgeführt werden, müssen die Schritte nicht zwingend von dem selben Prozessor ausgeführt werden. Mit anderen Worten, mindestens ein Prozessor kann die Schritte ausführen, die unten in 1720 beschrieben sind.
  • 17 veranschaulicht ein Verfahren für die Codierung des Streamings von sphärischen Videos gemäß mindestens einer exemplarischen Ausführungsform. Wie in 17 dargestellt, wird in Schritt S1705 ein Frame eines sphärischen Videodatenstroms empfangen. Ein Controller (z. B. Controller 120) kann einen Codierer (z. B. Codierer 125, 1405, 1505) anweisen, ein oder mehrere Frames von (einer) Videoquelle(n) zu empfangen. Die Videoquelle(n) kann/können eine beliebige Videoquelle (z. B. ein Datenspeichergerät, ein Netzwerk, das Internet, ein getrenntes Computergerät und dergleichen) beinhalten. Der/die Videosequenzframe(s) kann/können Videoframes sein, die einem sphärischen Videodatenstrom (z. B. Videodatenstrom 5) zugeordnet sind. Der Videodatenstrom kann ein Echtzeit-Videodatenstrom (z. B. eine Videokonferenz oder ein Videochat) sein. Der Videodatenstrom kann ein früher aufgezeichnetes Video (z. B. ein Film oder eine Videorecorder-Aufzeichnung) sein. Außerdem kann der Videoinhalt analoges oder digitales Video sein.
  • In Schritt S1710 wird der sphärische Frame auf einer 2D-Darstellung abgebildet. Die Abbildung eines Frames (oder sphärischen Bildes) auf einer 2D-Darstellung kann zum Beispiel die Projektion des Frames (oder sphärischen Bildes) auf die Oberfläche eines Zylinders (der dann in ein Rechteck abgewickelt wird), ein Quadrat oder Rechteck beinhalten. In einer exemplarischen Implementierung kann die Projektion äquirektangulär sein. Mit anderen Worten, Pixel entlang einer Linie in der Mitte der Kugel (z. B. ein Äquator) werden auf einer abstandsgleichen Linie zwischen der Oberseite und Unterseite des Zylinders, Quadrats oder Rechtecks abgebildet. Beim Wegbewegen von der Linie (z. B. nach oben und nach unten von der Linie) wird dann jede horizontale Linie auf dem Zylinder als gerade Linie durch die Mitte des Bildes abgebildet, wobei die vertikale Linie vertikal bleibt. Wenn die horizontale Linie immer näher zu den Polen der Kugel gelangt, kann das Bild gedehnt werden, um zum Zylinder, Quadrat oder Rechteck zu passen. Andere Projektionen werden erwägt. Zum Beispiel könnte eine semi-äquirektanguläre Projektion verwendet werden. Eine semi-äquirektanguläre Projektion kann den Umfang der vorher erwähnten Dehnung so skalieren, dass die Projektion den Zylinder, das Quadrat oder das Rechteck nicht vollständig füllt.
  • In Schritt S1715 wird eine Angabe einer Ansichtsperspektive empfangen. Die Angabe der Ansichtsperspektive kann von einem Gerät empfangen werden, das eine Wiedergabe des sphärischen Videos durchführt. Mit anderen Worten, die Angabe der Ansichtsperspektive kann von einem Gerät empfangen werden, das einen Decodierer (z. B. Decodierer 175, 1420) implementiert, damit ein Betrachter das sphärische Video ansehen kann. Wie oben erörtert, kann die Angabe einer Ansichtsperspektive auf einem Teil eines sphärischen Videos basieren, das ein Betrachter zurzeit ansieht. Die Angabe kann zum Beispiel ein Punkt oder eine Position (z. B. Längengrad oder Breitengrad) auf der Kugel, eine Vielzahl von Punkten auf der Kugel oder eine Seite eines Kubus, der die Kugel darstellt, und/oder eine Vielzahl von Seiten eines Kubus, der die Kugel darstellt, sein.
  • In Schritt S1720 wird eine Kachelposition im sphärischen Frame auf Basis der Ansichtsperspektive ermittelt. Wenn die Angabe zum Beispiel ein Punkt oder eine Position auf der Kugel (als ein sphärisches Bild oder Frame) ist, kann eine Kachel (z. B. eine Anzahl an Pixeln, ein Block und/oder ein Makroblock) auf Basis des Punkts oder der Position ermittelt werden. In einer exemplarischen Implementierung kann die Position der Kachel (mindestens eine Kachel oder eine Vielzahl von Kacheln) ein Rechteck sein, das am Punkt oder an der Position zentriert ist.
  • In Schritt S1725 wird eine 2D-Kachel auf Basis der Kachelposition erzeugt. Die 2D-Kachel kann zum Beispiel ein Bild einschließlich einer Vielzahl von Pixeln sein. Die 2D-Kachel oder das Bild kann einen Teil des Frames des sphärischen Videos sein. Die 2D-Kachel oder das Bild kann die Vielzahl von Kacheln beinhalten, die im Rechteck enthalten sind, das am Punkt oder an der Position zentriert ist.
  • In einer alternativen Implementierung (und/oder einer zusätzlichen Implementierung) kann die Kachel mithilfe einer anderen Projektionstechnik oder eines anderen Algorithmus projiziert werden als zur Erzeugung der 2D-Darstellung des sphärischen Videoframes verwendet. Einige Projektionen können zum Beispiel Verzerrungen in bestimmten Bereichen des Frames haben, daher kann eine Projektion der Kachel, die sich vom sphärischen Frame unterscheidet, die Qualität des endgültigen Bildes verbessern und/oder Pixel effizienter nutzen. In einer exemplarischen Implementierung kann das sphärische Bild vor Projektion der Kachel gedreht werden, um die Kachel in einer Position auszurichten, die auf Basis des Projektionsalgorithmus minimal verzerrt ist. In einer anderen exemplarischen Implementierung kann die Kachel einen Projektionsalgorithmus verwenden (und/oder ändern), der auf der Position der Kachel basiert. Die Projektion des sphärischen Videoframes der 2D-Darstellung kann zum Beispiel eine äquirektanguläre Projektion verwenden, während die Projektion des sphärischen Videoframes in einer Darstellung einschließlich eines Teils, der als Kachel ausgewählt werden muss, eine kubische Projektion verwenden kann.
  • In Schritt S1730 wird die 2D-Darstellung codiert. Die 2D-Darstellung kann zum Beispiel mithilfe einer konfigurierten Transformation (z. B. einer KLT, einer SVD, einer DCT oder einer ADST) in Transformationskoeffizienten transformiert (codiert oder komprimiert) werden. Die codierte Transformationskoeffizienten oder Sätze von Restwerten für den Block können quantisiert werden. Der Controller 120 kann zum Beispiel den Quantisierungsblock 220 anweisen (oder aufrufen), um codierte Bewegungsvektoren und die codierten Restfehler durch eine beliebige einigermaßen geeignete Quantisierungstechnik zu quantisieren. Außerdem kann der Controller 120 den Entropiecodierblock 220 anweisen, zum Beispiel Codes durch eine beliebige Codiertechnik zu den quantisierten Bewegungsvektorcodes und Restfehlercodes zuzuweisen, um Codelängen mit den Wahrscheinlichkeiten der quantisierten Bewegungsvektorcodes und Restfehlercode abzugleichen. Des Weiteren kann die Codierung des Frames einschließlich der 2D-Darstellung die Zerlegung des Frames in N×N-Blöcke oder Makroblöcke beinhalten. Der Controller 120 kann zum Beispiel den Codierer anweisen, jedes der Videosequenzframes in Makroblöcke mit N×N-Dimensionen zu zerlegen. Der Codierer kann zum Beispiel eine Quad-Baum-Zerlegungstechnik verwenden, um die Frames einschließlich der 2D-Darstellung zu zerlegen.
  • In Schritt S1735 wird die 2D-Kachel codiert. Die 2D-Kachel kann zum Beispiel mithilfe einer konfigurierten Transformation (z. B. einer KLT, einer SVD, einer DCT oder einer ADST) in Transformationskoeffizienten transformiert (codiert oder komprimiert) werden. Die codierte Transformationskoeffizienten oder Sätze von Restwerten für den Block können quantisiert werden. Der Controller 120 kann zum Beispiel den Quantisierungsblock 220 anweisen (oder aufrufen), um codierte Bewegungsvektoren und die codierten Restfehler durch eine beliebige einigermaßen geeignete Quantisierungstechnik zu quantisieren. Außerdem kann der Controller 120 den Entropiecodierblock 220 anweisen, mm Beispiel Codes durch eine beliebige Codiertechnik zu den quantisierten Bewegungsvektorcodes und Restfehlercodes zuzuweisen, um Codelängen mit den Wahrscheinlichkeiten der quantisierten Bewegungsvektorcodes und Restfehlercode abzugleichen. Des Weiteren kann die Codierung des Frames einschließlich der 2D-Kachel die Zerlegung des Frames in N×N-Blöcke oder Makroblöcke beinhalten. Der Controller 120 kann zum Beispiel den Codierer anweisen, jedes der Videosequenzframes in Makroblöcke mit N×N-Dimensionen zu zerlegen. Der Codierer kann zum Beispiel eine Quad-Baum-Zerlegungstechnik verwenden, um die Frames einschließlich der 2D-Darstellung zu zerlegen. Des Weiteren kann die Codierung der 2D-Kachel die Zerlegung der 2D-Kachel in N×N-Blöcke oder Makroblöcke beinhalten. Der Controller 120 kann zum Beispiel den Codierer anweisen, die 2D-Kachel in Makroblöcke mit N×N-Dimensionen zu zerlegen. Der Codierer kann zum Beispiel eine Quad-Baum-Zerlegungstechnik verwenden, um die 2D-Kachel zu zerlegen.
  • In Schritt S1740 wird ein codiertes (komprimiertes) Videobitpaket einschließlich codierter 2D-Darstellung und der codierten 2D-Kachel erzeugt. Der Paketersteller 1415 kann zum Beispiel ein Paket für die Übertragung erstellen. Das Paket kann komprimierte Videobits 10A beinhalten. Das Paket kann die codierte 2D-Darstellung des sphärischen Videoframes und der codierten Kachel (oder der Vielzahl von Kacheln) beinhalten. Das Paket kann einen Header für die Übertragung beinhalten. Der Header kann u. a. Informationen beinhalten, die den Modus oder das Schema für die Verwendung bei der Intraframe-Codierung durch den Codierer angeben. Der Header kann Informationen beinhalten, die Parameter angeben, die zum Umwandeln eines Frames des sphärischen Videoframes in eine rechteckige 2D-Darstellung verwendet werden. Der Header kann Informationen beinhalten, die Parameter angeben, die zur Erreichung der QoS der codierten rechteckigen 2D-Darstellung der codierten Kachel verwendet werden. Wie oben erörtert, können sich die QoS der codierten rechteckigen 2D-Darstellung und die QoS der kodierten 2D-Kachel unterscheiden. Die QoS der codierten rechteckigen 2D-Darstellung kann zum Beispiel geringer als die QoS der codierten 2D-Kachel sein.
  • 18 veranschaulicht ein weiteres Verfahren für die Codierung des Streamings von sphärischen Videos gemäß mindestens einer exemplarischen Ausführungsform. Wie in 18 dargestellt, wird in Schritt S1805 ein Frame eines sphärischen Videodatenstroms empfangen. Ein Controller (z. B. Controller 120) kann einen Codierer (z. B. Codierer 125, 1405, 1505) anweisen, ein oder mehrere Frames von (einer) Videoquelle(n) zu empfangen. Die Videoquelle(n) kann/können eine beliebige Videoquelle (z. B. ein Datenspeichergerät, ein Netzwerk, das Internet, ein getrenntes Computergerät und dergleichen) beinhalten. Der/die Videosequenzframe(s) kann/können Videoframes sein, die einem sphärischen Videodatenstrom (z. B. Videodatenstrom 5) zugeordnet sind. Der Videodatenstrom kann ein Echtzeit-Videodatenstrom (z. B. eine Videokonferenz oder ein Videochat) sein. Der Videodatenstrom kann ein früher aufgezeichnetes Video (z. B. ein Film oder eine Videorecorder-Aufzeichnung) sein. Außerdem kann der Videoinhalt analoges oder digitales Video sein.
  • In Schritt S1810 wird eine Vielzahl von Ansichtsperspektiven erzeugt. Das Ansichtsauswahlmodul 1510 kann zum Beispiel so konfiguriert sein, dass es eine Vielzahl von Ansichten oder Ansichtsperspektiven auswählt, damit der Codierer 1505 eine Vielzahl von Kacheln codieren kann. Der Codierer 1505 kann so konfiguriert sein, dass er eine Schleife ausführt, wobei ein Frame ausgewählt wird und ein Teil des Frames als Kachel auf Basis der Ansicht ausgewählt wird. Die Kachel wird dann codiert und gespeichert. Die Schleife läuft dann durch eine Vielzahl von Ansichten weiter ab. Wenn eine gewünschte Anzahl an Ansichten, z. B. alle 5 Grad um die Vertikale und alle 5 Grad um die Horizontale des sphärischen Bildes, als Kachel gespeichert sind, wird ein neuer Frame ausgewählt und der Vorgang wird wiederholt, bis für alle Frames des sphärischen Videos eine gewünschte Anzahl an Frames gespeichert ist.
  • In Schritt S1815 wird eine Vielzahl von Kachelpositionen im sphärischen Frame auf Basis jeder der Ansichtsperspektiven ermittelt. Es kann zum Beispiel eine Kachelposition für jede der Vielzahl von Ansichtsperspektiven ermittelt werden. Wenn die Vielzahl von Ansichtsperspektiven zum Beispiel jeweils auf einem Punkt oder einer Position auf der Kugel (als ein sphärisches Bild oder ein sphärischer Frame) basiert, kann eine Kachel (z. B. eine Anzahl an Pixeln, ein Block und/oder ein Makroblock) auf Basis des Punkts oder der Position ermittelt werden. In einer exemplarischen Implementierung kann die Position der Kachel (mindestens eine Kachel oder eine Vielzahl von Kacheln) ein Rechteck sein, das am Punkt oder an der Position zentriert ist.
  • In Schritt S1820 wird eine Vielzahl von 2D-Kacheln auf Basis der Kachelpositionen erzeugt. Es kann zum Beispiel eine 2D-Kachel für jede der Vielzahl von Kachelpositionen erzeugt werden (z. B. als Vielzahl von Bildern). Jede der 2D-Kacheln kann zum Beispiel ein Bild einschließlich einer Vielzahl von Pixeln sein. Die 2D-Kacheln oder Bilder können ein Teil des Frames des sphärischen Videos sein. Die 2D-Kacheln oder Bilder können die Vielzahl von Kacheln beinhalten, die im Rechteck enthalten sind, das am Punkt oder an der Position zentriert ist.
  • In einer alternativen Implementierung (und/oder einer zusätzlichen Implementierung) kann die Kachel mithilfe einer anderen Projektionstechnik oder eines anderen Algorithmus projiziert werden als zur Erzeugung der 2D-Darstellung des sphärischen Videoframes verwendet. Einige Projektionen können zum Beispiel Verzerrungen in bestimmten Bereichen des Frames haben, daher kann eine Projektion der Kachel, die sich vom sphärischen Frame unterscheidet, die Qualität des endgültigen Bildes verbessern und/oder Pixel effizienter nutzen. In einer exemplarischen Implementierung kann das sphärische Bild vor Projektion der Kachel gedreht werden, um die Kachel in einer Position auszurichten, die auf Basis des Projektionsalgorithmus minimal verzerrt ist. In einer anderen exemplarischen Implementierung kann die Kachel einen Projektionsalgorithmus verwenden (und/oder ändern), der auf der Position der Kachel basiert. Die Projektion des sphärischen Videoframes der 2D-Darstellung kann zum Beispiel eine äquirektanguläre Projektion verwenden, während die Projektion des sphärischen Videoframes in einer Darstellung einschließlich eines Teils, der als Kachel ausgewählt werden muss, eine kubische Projektion verwenden kann.
  • In Schritt S1825 wird jede der 2D-Kacheln codiert. Jede der Vielzahl von 2D-Kacheln kann zum Beispiel mithilfe einer konfigurierten Transformation (z. B. einer KLT, einer SVD, einer DCT oder einer ADST) in Transformationskoeffizienten transformiert (codiert oder komprimiert) werden. Die codierte Transformationskoeffizienten oder Sätze von Restwerten für den Block können quantisiert werden. Der Controller 120 kann zum Beispiel den Quantisierungsblock 220 anweisen (oder aufrufen, um codierte Bewegungsvektoren und die codierten Restfehler durch eine beliebige einigermaßen geeignete Quantisierungstechnik zu quantisieren. Außerdem kann der Controller 120 den Entropiecodierblock 220 anweisen, zum Beispiel Codes durch eine beliebige Codiertechnik zu den quantisierten Bewegungsvektorcodes und Restfehlercodes zuzuweisen, um Codelängen mit den Wahrscheinlichkeiten der quantisierten Bewegungsvektorcodes und Restfehlercode abzugleichen. Des Weiteren kann die Codierung des Frames einschließlich der 2D-Kachel die Zerlegung des Frames in N×N-Blöcke oder Makroblöcke beinhalten. Der Controller 120 kann zum Beispiel den Codierer anweisen, jedes der Videosequenzframes in Makroblöcke mit N×N-Dimensionen zu zerlegen. Der Codierer kann zum Beispiel eine Quad-Baum-Zerlegungstechnik verwenden, um die Frames einschließlich der 2D-Darstellung zu zerlegen. Des Weiteren kann die Codierung der 2D-Kachel die Zerlegung der 2D-Kachel in N×N-Blöcke oder Makroblöcke beinhalten. Der Controller 120 kann zum Beispiel den Codierer anweisen, die 2D-Kachel in Makroblöcke mit N×N-Dimensionen zu zerlegen. Der Codierer kann zum Beispiel eine Quad-Baum-Zerlegungstechnik verwenden, um die 2D-Kachel zu zerlegen.
  • In Schritt S1830 wird jede der 2D-Kacheln zusammen mit einer Angabe des Frames und einer Position der codierten Kachel im Frame gespeichert. Jede der Vielzahl von Kacheln der codierten 2D-Kacheln kann zum Beispiel in einem Ansichtsframe-Speicher 1515 gespeichert sein. Jede der Vielzahl von Kacheln kann indiziert werden, sodass jede der Vielzahl der Kacheln mit einem Verweis auf den Frame (z. B. eine Zeitabhängigkeit) und eine Ansicht (z. B. eine Ansichtsabhängigkeit) gespeichert wird. Demgemäß wird jede der Vielzahl von Kacheln so gespeichert, dass sie zeit- und ansichts-, perspektiven- oder ansichtsperspektivenabhängig ist und auf Basis der Zeit- und Ansichtsabhängigkeit erneut aufgerufen werden kann.
  • 19 veranschaulicht ein Verfahren für die Codierung des Streamings von sphärischen Videos gemäß mindestens einer exemplarischen Ausführungsform. Wie in 19 dargestellt, wird in Schritt S1905 eine Angabe einer Ansichtsperspektive empfangen. Wie oben erörtert, kann zum Beispiel eine Kachel von einem Gerät, einschließlich eines Decodierers, angefordert werden. Die Kachelanforderung kann Informationen auf Basis einer Perspektive oder Ansichtsperspektive in Verbindung mit einer Orientierung, einer Position, einem Punkt oder Fokalpunkt eines Betrachters eines sphärischen Videos beinhalten. Die Ansichtsperspektive könnte zum Beispiel eine Breitengrad- oder Längengradposition im sphärischen Video sein. Die Ansicht, Perspektive oder Ansichtsperspektive kann als eine Seite eines Kubus auf Basis des sphärischen Videos ermittelt werden. Die Angabe einer Ansichtsperspektive kann außerdem sphärische Videoinformationen beinhalten. In einer exemplarischen Implementierung kann die Angabe einer Ansichtsperspektive Informationen über einen Frame (z. B. die Framesequenz) beinhalten, welche der Ansichtsperspektive zugeordnet sind. Die Ansicht (z. B. Breitengrad- und Längengradposition oder Seite) kann zum Beispiel dem Ansichtspositionsermittlungsmodul 1615 vom Ansichtspositionssteuermodul 1605 zum Beispiel mithilfe eines Hypertext Transfer Protocol (HTTP) kommuniziert werden.
  • In Schritt S1910 werden ein Frame und eine Kachelposition in einem sphärischen Video auf Basis der Ansichtsperspektive ermittelt. Die vorher erwähnten Informationen über den Frame können zum Beispiel Informationen sein, die angeben, dass der Frame der aktuelle zu codierende Frame oder ein früher codierter Frame ist (z. B. als Framesequenz oder als Sequenznummer). Demgemäß kann der Frame als aktueller zu codierender Frame oder früher codierter Frame ermittelt werden. Anschließend kann die Kachelposition auf der Ansicht oder Ansichtsperspektive im ermittelten Frame basieren.
  • In Schritt S1915 wird ein Ort einer codierten 2D-Kachel auf Basis des Frames und der Kachelposition ermittelt. Mithilfe des Frames und der Kachelposition kann zum Beispiel eine codierte 2D-Kachel im Ansichtsframe-Speicher 1515 nachgeschlagen oder gesucht werden. Nach Finden der 2D-Kachel im Ansichtsframe-Speicher 1515, kann die 2D-Kachel aus dem Ansichtsframe-Speicher 1515 abgerufen oder gelesen werden.
  • In Schritt S1920 wird eine codierte 2D-Darstellung des Frames des sphärischen Videos empfangen. Zum Beispiel kann die Ausgabe von Codierer 125 empfangen werden. Die Ausgabe von Codierer 125 kann codierte Videobits sein, die die 2D-Darstellung des Frames des sphärischen Videos darstellen.
  • In Schritt S1925 wird ein codiertes (komprimiertes) Videobitpaket einschließlich codierter 2D-Darstellung und der codierten 2D-Kachel erzeugt. Der Paketersteller 1415 kann zum Beispiel ein Paket für die Übertragung erstellen. Das Paket kann komprimierte Videobits 10A beinhalten. Das Paket kann die codierte 2D-Darstellung des sphärischen Videoframes und der codierten Kachel (oder der Vielzahl von Kacheln) beinhalten. Das Paket kann einen Header für die Übertragung beinhalten. Der Header kann u. a. Informationen beinhalten, die den Modus oder das Schema für die Verwendung bei der Intraframe-Codierung durch den Codierer angeben. Der Header kann Informationen beinhalten, die Parameter angeben, die zum Umwandeln eines Frames des sphärischen Videoframes in eine rechteckige 2D-Darstellung verwendet werden. Der Header kann Informationen beinhalten, die Parameter angeben, die zur Erreichung der QoS der codierten rechteckigen 2D-Darstellung der codierten Kachel verwendet werden. Wie oben erörtert, können sich die QoS der codierten rechteckigen 2D-Darstellung und die QoS der kodierten 2D-Kachel unterscheiden. Die QoS der codierten rechteckigen 2D-Darstellung kann zum Beispiel geringer als die QoS der codierten 2D-Kachel sein.
  • In einer alternativen Implementierung der Schritte, die 79 zugeordnet sind, werden in einem Initialisierungsvorgang nur die codierten 2D-Kacheln codiert und gestreamt, um die Geschwindigkeit des anfänglichen Datenstroms des Videos zu erhöhen. Dann wird nach dem anfänglichen Datenstrom die codierte 2D-Darstellung des sphärischen Videos zum Paket einschließlich der 2D-Kacheln wie vorher beschrieben hinzugefügt.
  • In einer anderen alternativen Implementierung können die QoS der codierten rechteckigen 2D-Darstellung und die QoS der codierten 2D-Kachel dynamisch angepasst werden, zum Beispiel auf Basis der Bandbreite, die für den Videodatenstrom verfügbar ist. Demgemäß kann in einigen Implementierungen die QoS der codierten rechteckigen 2D-Darstellung ungefähr gleich der QoS der codierten 2D-Kachel sein, sollte zum Beispiel ein Schwellenwert der Bandbreite verfügbar sein. Die Decodierung kann ähnlich implementiert werden.
  • 20 veranschaulicht ein Verfahren für die Decodierung des Streamings von sphärischen Videos gemäß mindestens einer exemplarischen Ausführungsform. Wie in 20 dargestellt, wird in Schritt S2005 ein Paket einschließlich codierter (komprimierter) Videobits empfangen, wobei das Paket eine codierte 2D-Darstellung eines sphärischen Videoframes und eine 2D-Kachel beinhaltet, die aus dem sphärischen Videoframe ausgewählt wurde. Das Paket kann zum Beispiel komprimierte Videobits 10A beinhalten. Das Paket kann die codierte 2D-Darstellung des sphärischen Videoframes und der codierten Kachel (oder der Vielzahl von Kacheln) beinhalten. Das Paket kann einen Header für die Übertragung beinhalten. Der Header kann u. a. Informationen beinhalten, die den Modus oder das Schema für die Verwendung bei der Intraframe-Codierung durch den Codierer angeben. Der Header kann Informationen beinhalten, die Parameter angeben, die zum Umwandeln eines Frames des sphärischen Videoframes in eine rechteckige 2D-Darstellung verwendet werden. Der Header kann Informationen beinhalten, die Parameter angeben, die zur Erreichung der QoS der codierten rechteckigen 2D-Darstellung der codierten Kachel verwendet werden. Wie oben erörtert, können sich die QoS der codierten rechteckigen 2D-Darstellung und die QoS der kodierten 2D-Kachel unterscheiden. Die QoS der codierten rechteckigen 2D-Darstellung kann zum Beispiel geringer als die QoS der codierten 2D-Kachel sein.
  • In Schritt S2010 wird die codierte 2D-Darstellung decodiert. Ein Videodecodierer (z. B. Decodierer 175) entropiedecodiert zum Beispiel die codierte 2D-Darstellung. Die komprimierten Videobits können zum Beispiel durch Entropiedecodierung decodiert werden, z. B. mithilfe kontextadaptiver binärarithmetischer Decodierung, um eine Reihe quantisierter Transformationskoeffizienten zu erzeugen. Der Videodecodierer dequantisiert die Transformationskoeffizienten, die durch die entropiedecodierten Bits angegeben werden. Die entropiedecodierten Videobits können zum Beispiel durch Abbildung von Werten in einem relativ kleinen Bereich der Werte in einen relativ großen Bereich dequantisiert werden (z. B. im Gegensatz zur oben beschriebenen Quantisierungsabbildung). Des Weiteren transformiert der Videodecodierer die Videobits mithilfe einer angegebenen (z. B. im Header) Transformation (z. B. einer KLT, einer SVD, einer DCT oder einer ADST). Der Videodecodierer kann die rekonstruierten Pixel im Videoframe filtern. Ein Schleifenfilter kann zum Beispiel auf den rekonstruierten Block angewendet werden, um Blockartefakte zu verringern. Ein Deblockierungsfilter kann zum Beispiel auf den rekonstruierten Block angewendet werden, um Verzerrungen zu verringern.
  • In Schritt S2015 wird die 2D-Darstellung in das sphärische Videoframe umgewandelt. Die decodierte 2D-Darstellung kann zum Beispiel in ein sphärisches Videoframe (oder Bild) umgewandelt werden. Die 2D-Darstellung kann zum Beispiel durch Umkehr der Technik wie oben in Bezug auf die Abbildung eines sphärischen Frames (oder Bildes) auf einer 2D-Darstellung des sphärischen Frames (oder Bildes) beschrieben umgewandelt werden.
  • In Schritt S2020 wird die codierte 2D-Kachel decodiert. Ein Videodecodierer (z. B. Decodierer 1420) entropiedecodiert zum Beispiel die codierte 2D-Kachel. Die komprimierten Videobits können zum Beispiel durch Entropiedecodierung decodiert werden, z. B. mithilfe kontextadaptiver binärarithmetischer Decodierung, um eine Reihe quantisierter Transformationskoeffizienten zu erzeugen. Der Videodecodierer dequantisiert die Transformationskoeffizienten, die durch die entropiedecodierten Bits angegeben werden. Die entropiedecodierten Videobits können zum Beispiel durch Abbildung von Werten in einem relativ kleinen Bereich der Werte in einen relativ großen Bereich dequantisiert werden (z. B. im Gegensatz zur oben beschriebenen Quantisierungsabbildung). Des Weiteren transformiert der Videodecodierer die Videobits mithilfe einer angegebenen (z. B. im Header) Transformation (z. B. einer KLT, einer SVD, einer DCT oder einer ADST). Der Videodecodierer kann die rekonstruierten Pixel im Videoframe filtern. Ein Schleifenfilter kann zum Beispiel auf den rekonstruierten Block angewendet werden, um Blockartefakte zu verringern. Ein Deblockierungsfilter kann zum Beispiel auf den rekonstruierten Block angewendet werden, um Verzerrungen zu verringern.
  • In Schritt S2025 werden entsprechende Blöcke des sphärischen Videoframes durch die decodierte 2D-Kachel ersetzt. Das Kachelaustauschmodul 1430 kann zum Beispiel so konfiguriert sein, dass es die entsprechenden Blöcke (oder Pixel oder Makroblock) im sphärischen Videoframe mit den Pixeln der decodierten Kachel ersetzt. Der Austausch kann ein Pixel-für-Pixel- oder Block-für-Block-Austausch von Pixeln oder Blöcken im decodierten und konvertierten sphärischen Videoframe durch Pixel oder Blöcke der decodierten 2D-Kachel sein. Mit anderen Worten, ein Teil der Daten, die in einem Speicher (z. B. einer Videowarteschlange) gespeichert sind, der dem sphärischen Videoframe zugeordnet ist, werden durch Daten ersetzt, die Pixel oder Blöcke der 2D-Kachel darstellen. Wie oben erörtert, kann die 2D-Kachel mit einer höheren QoS codiert sein als die 2D-Darstellung des sphärischen Videoframes. Demgemäß kann das resultierende sphärische Video ein hochwertigeres Bild (oder Teil des sphärischen Videos) in der Ansicht, Perspektive oder Ansichtsperspektive des Betrachters des sphärischen Videos haben im Vergleich zu dem/den Bild(ern) (oder Teil des sphärischen Videos), das/die sich nicht in der Sicht, Perspektive oder Ansichtsperspektive des Betrachters (oder außerhalb) befindet/befinden.
  • In Schritt S2030 wird ein sphärischer Videodatenstrom auf Basis mindestens eines sphärischen Videoframes einschließlich der ersetzten 2D-Kachel erzeugt. Mindestens ein Videoframe der rekonstruierten umgewandelten Pixel des sphärischen Videos, das Teile beinhaltet, die durch die 2D-Kachel ersetzt wurden, kann zum Beispiel in einer Sequenz organisiert werden, um einen sphärischen Videodatenstrom zu bilden. Wie oben erörtert, wurde die Kachel mit einer höheren QoS codiert als die rechteckige 2D-Darstellung des sphärischen Videoframes. Demgemäß kann das Erzeugen des sphärischen Videodatenstroms einschließlich des Ersetzen durch die 2D-Kachel dazu führen, dass der sichtbare Teil des sphärischen Videodatenstroms von einer höheren Qualität ist als der nicht sichtbare Teil des sphärischen Videodatenstroms während einer Wiedergabe des sphärischen Videodatenstroms.
  • 21A veranschaulicht des Weiteren eine Kugel 300 als ein sphärisches Bild gemäß mindestens einer exemplarischen Ausführungsform. Gemäß einer exemplarischen Implementierung kann eine Linie zwischen Punkten C und D abstandsgleich zwischen Punkten oder Polen A und B sein. Mit anderen Worten, die Linie zwischen Punkten C und D kann als ein Äquator (z. B. die Kugel 300 als Globus) von Kugel 300 bezeichnet werden. Die Linie zwischen Punkten C und D kann auf eine 2D-Form (z. B. ein Quadrat oder Rechteck) projiziert werden.
  • 21B und 21C ein Blockdiagramm einer quadratischen 2D-Darstellung sphärischer Videoframes/-blöcke oder Bilder/Blöcke gemäß mindestens einer exemplarischen Ausführungsform veranschaulichen. Im Beispiel von 4B wird Pol B auf der Mitte von Quadrat 2100 abgebildet oder projiziert. Pol B wird auf die Ecken von Quadrat 2100 abgebildet oder projiziert und wird als B1, B2, B3 und B4 veranschaulicht. Die Linie CD1, CD2, CD3, CD4 zwischen Punkten C und D (oder dem Äquator) wird als gedrehtes Quadrat (gestrichtelte Linien) in Bezug auf Quadrat 2100 dargestellt. Die Ecken von Linien CD1, CD2, CD3, CD4 schneiden die Seiten von Quadrat 2100 abstandsgleich von den Ecken B1, B2, B3 und B4. Die Projektion von Kugel 300 als sphärisches Videoframe oder Bild auf Quadrat 2100 kann mithilfe eines Quincunx-Projektionsalgorithmus nach Pierce implementiert werden. Es kann wünschenswert sein, die 2D-Darstellung des sphärischen Videoframes oder Bildes als Rechteck zu codieren. Mit anderen Worten, viele Codierstandards sind so konfiguriert, dass sie ein Videoframe oder Bild codieren, das ein Rechteck ist (z. B. ein Seitenverhältnis von 2:1). Daher kann in einer exemplarischen Implementierung die quadratische 2D-Darstellung des sphärischen Videoframes oder Bildes auf einer rechteckigen 2D-Darstellung des sphärischen Videoframes oder Bildes abgebildet werden. In einigen exemplarischen Implementierungen kann eine zusätzliche Verarbeitung durchgeführt werden, um die Größe der rechteckigen 2D-Darstellung auf Basis eines gewünschten Codierschemas zu ändern.
  • 21C veranschaulicht die Projektion von Kugel 300 als sphärisches Videoframe oder Bild auf Quadrat 2100, wobei Quadrat 2100 um 45 Grad entgegen dem Uhrzeigersinn gedreht ist (Quadrat 2100 könnte auch um 45 Grad im Uhrzeigersinn gedreht sein). Die Linie CD1, CD2, CD3, CD4 zwischen Punkten C und D wird als Quadrat (gestrichtelte Linien) dargestellt, das mit Quadrat 2100 gedreht wird. In 21D wird das Quadrat 2100 nach Abbildung auf einem Rechteck veranschaulicht. Das Rechteck (als zweite 2D-Darstellung) kann aus zwei Quadraten mit gleichen Längsseiten auf Basis von Quadrat 2100 (als erste 2D-Darstellung) gebildet werden. Die zwei Quadrate können aus dem Quadrat 2100 (als der ersten 2D-Darstellung) erzeugt werden. Ein erstes Quadrat kann Ecken haben, die jede Seite des Quadrats 2100 abstandsgleich von den Ecken der ersten zweidimensionalen Darstellung schneiden. Ein zweites Quadrat kann auf vier Dreiecken basieren, von denen jeweils eine Seite eine andere Seite eines Innenkreises des Frames des sphärischen Videos berührt. Die zweite zweidimensionale Darstellung kann auf dem ersten Quadrat und dem zweiten Quadrat basieren.
  • Wie in 21D dargestellt, bleibt Dreieck 2110 in derselben Position wie in 21C, Dreieck 2115 wurde im Uhrzeigersinn gedreht, Dreieck 2120 wurde entgegen dem Uhrzeigersinn gedreht und Dreieck 2125 wurde um 180 Grad gedreht und nach rechts erweitert. Dreiecke 2110, 2115, 2120 und 2125 ergeben zusammen ein Quadrat, das dieselbe Größe wie das Quadrat hat, das durch die gestrichtelte Linie CD1, CD2, CD3, CD4 dargestellt wird. Außerdem ist Pol B in der Mitte des Quadrats positioniert, das durch die Dreiecke 2110, 2115, 2120 und 2125 gebildet wird. Zusammen bilden das Quadrat, das durch gestrichelte Linie CD1, CD2, CD3, CD4 dargestellt wird, und das Quadrat, das durch die Dreiecke 2110, 2115, 2120 und 2125 gebildet wird, ein Rechteck mit einer Länge, die zweimal so lang wie die Seite ist. Das Quadrat, das durch die gestrichelte Linie CD1, CD2, CD3, CD4 dargestellt wird, und das Quadrat, das durch die Dreiecke 2110, 2115, 2120 und 2125 dargestellt wird, sind die rechteckige 2D-Darstellung des sphärischen Videoframes oder Bildes (z. B. Kugel 300).
  • 21D veranschaulicht ein Blockdiagramm einer rechteckigen 2D-Darstellung sphärischer Videoframes/-blöcke oder Bilder/Blöcke gemäß mindestens einer exemplarischen Ausführungsform. Die rechteckige 2D-Darstellung eines sphärischen Videoframes oder Bildes wird als zerlegtes Bild einer C×R-Matrix von N×N-Blöcken dargestellt. Die C×R-Matrix wird mit einem Verhältnis von 2:1 dargestellt. Die N×N-Blöcke können 2×2, 4×4, 8×8, 8×16, 16×16 und ähnliche Blöcke (oder Blöcke von Pixeln) sein. Blöcke 2130-1, 2130-2, 2135-1, 2135-2, 2140-1 und 2140-2 sind in 21E als Grenzblöcke oder an der Grenze der rechteckigen 2D-Darstellung dargestellt. Ein sphärisches Bild ist jedoch fortlaufend und hat keine Grenzen. Demgemäß gilt dies auch für eine rechteckige 2D-Darstellung.
  • Wie oben erörtert, ist ein sphärisches Bild ein Bild, das in alle Richtungen kontinuierlich ist. Demgemäß sind, wenn das sphärische Bild in eine Vielzahl von Blöcken zerlegt wird, die Vielzahl von Blöcken über das sphärische Bild fortlaufend. Mit anderen Worten, es gibt keine Ränder oder Grenzen wie in einem 2D-Bild. In exemplarischen Implementierungen kann ein benachbarter Endblock ein fortlaufender Block zu einem Block n der Grenze der 2D-Darstellung sein. In der exemplarischen Implementierung, die in 21E dargestellt ist, kann Block 2130-1 ein benachbarter Endblock für 2130-2 sein, Block 2135-1 kann ein benachbarter Endblock für 2135-2 sein und Block 2140-1 kann ein benachbarter Endblock für 2140-2 sein. Das Gegenteil kann ebenfalls der Fall sein. Mit anderen Worten, Block 2130-2 kann ein benachbarter Endblock für 2130-1 sein, Block 2135-2 kann ein benachbarter Endblock für 2135-1 sein und Block 2140-2 kann ein benachbarter Endblock für 2140-2 sein.
  • Daher kann in einem Codierschema, in dem ein benachbarter Block verwendet wird, ein Block an einer Grenze der rechteckigen 2D-Darstellung einen entsprechenden benachbarten Endblock haben, der sich anderswo in der rechteckigen 2D-Darstellung befindet. 21F eine Lookup-Tabelle (LUT) gemäß mindestens einer exemplarischen Ausführungsform veranschaulicht. Die LUT 2145 kann Referenzen zwischen entsprechenden Grenzblöcken und benachbarten Endblöcken für die rechteckige 2D-Darstellung speichern. Die LUT 2145 ist als Speicher von Blocknummerindikatoren wie zum Beispiel 2130-1 und 2130-2 dargestellt, die einander entsprechen. Die LUT 2145 kann jedoch Entsprechungen nach X-, Y-Koordinaten speichern. Wenn zum Beispiel die obere linke Ecke 0,0 ist, kann Block 0,10 Block 0,21 entsprechen (kann z. B. neben dem Endblock dafür liegen).
  • 2226B sind Flussdiagramme der Verfahren nach exemplarischen Ausführungsformen. Die Schritte, die mit Bezug auf 2226B beschrieben sind, können aufgrund der Ausführung von Softwarecode, der in einem Speicher (z. B. mindestens einem Speicher 110) gespeichert ist, der einer Vorrichtung (z. B. wie in 1 dargestellt) zugeordnet ist, und der durch mindestens einen Prozessor (z. B. mindestens einen Prozessor 105) ausgeführt wird, welcher der Vorrichtung zugeordnet ist, durchgeführt werden. Alternative Ausführungsformen werden allerdings bedacht, wie ein System, welches als Spezialprozessor ausgeführt ist. Obwohl die unten beschriebenen Verfahren so beschrieben sind, als würden sie von einem Prozessor ausgeführt werden, müssen die Verfahren (oder Teile davon) nicht zwingend von demselben Prozessor ausgeführt werden. Mit anderen Worten, mindestens ein Prozessor kann die Verfahren ausführen, die unten in Bezug auf 2226B beschrieben sind.
  • 22 ist ein Flussdiagramm eines Verfahrens für die Abbildung eines sphärischen Bildes auf einer 2D-Darstellung des sphärischen Bildes gemäß mindestens einer exemplarischen Ausführungsform. Wie in 22 dargestellt, wird in Schritt S2205 ein sphärisches Bild auf einer quadratischen 2D-Darstellung abgebildet. 21B veranschaulicht zum Beispiel die Kugel 300, die in 21A als quadratische 2D-Darstellung veranschaulicht ist. Die Abbildung kann die Abbildung des Bildes eines Frames eines sphärischen Videos auf einer 2D-Darstellung auf Basis einer Projektion von sphärisch zu quadratisch beinhalten. In diesem Beispiel kann die 2D-Darstellung ein Quadrat sein. Die Kugel 300 kann mithilfe eines Projektionsalgorithmus auf die quadratische 2D-Darstellung projiziert werden. In einer exemplarischen Implementierung kann der Projektionsalgorithmus ein Quincunx-Projektionsalgorithmus nach Pierce sein.
  • Der Quincunx-Projektionsalgorithmus nach Pierce gibt einen Punkt P auf der Oberfläche der Erde an, ein Abstand p vom Nordpol mit Längengrad θ und Breitengrad λ wird zuerst auf einem Punkt (p, θ) der Ebene durch den Äquator abgebildet, gesehen als komplexe Ebene mit Koordinate w; diese w Koordinate wird auf einem anderen Punkt (x, y) der komplexen Eben (gegeben sei die Koordinate z) durch eine elliptische Funktion der ersten Art abgebildet. Bei Verwendung der Notation von Gudermann für die Ellipsenfunktion nach Jabobi sind die Beziehungen: tan( p / 2)e = cn(z, 1 / 2) (1) wobei w = pe und z = x + iy
  • Andere quadratische und/oder rechteckige Projektionen entsprechen dem Umfang dieser Offenbarung.
  • In Schritt S2210 wird die quadratische 2D-Darstellung auf einer rechteckigen 2D-Darstellung abgebildet. Die Abbildung kann die Abbildung der quadratischen 2D-Darstellung auf einer anderen (oder zweiten) 2D-Darstellung beinhalten. Die andere 2D-Darstellung kann ein Rechteck sein. 21B veranschaulicht zum Beispiel eine quadratische 2D-Darstellung. In einer exemplarischen Implementierung kann die quadratische 2D-Darstellung im Uhrzeigersinn oder entgegen dem Uhrzeigersinn gedreht werden (z. B. wie in 21C). Dreiecke, die durch die Kreuzung von Linien (die ein Quadrat bilden) auf Basis des Äquators der Kugel mit den Seiten der quadratischen 2D-Darstellung und abstandsgleich von den Ecken der quadratischen 2D-Darstellung gebildet werden, können neu positioniert werden, um ein weiteres Quadrat zu bilden, das dieselbe Größe hat wie der Äquator der Kugel. Durch Zusammenführung des Quadrats auf Basis der Dreiecke und des Quadrats auf Basis des Äquators kann ein Rechteck mit einem Seitenverhältnis von 2:1 gebildet werden.
  • In Schritt S2215 wird die rechteckige 2D-Darstellung in eine C×R-Matrix von N×N-Blöcken zerlegt. Wie zum Beispiel in 21E dargestellt, ist die rechteckige 2D-Darstellung 2150 eine 32×16 Matrix von N×N-Blöcken. Die N×N-Blöcke können 2×2, 4×4, 8×8, 8×16, 16×16 und ähnliche Blöcke (oder Blöcke von Pixeln) sein.
  • Demgemäß sind in Schritt S2220 benachbarte Endblöcke zugeordnet. Wie oben erörtert, werden zum Beispiel Blöcke 2130-1, 2130-2, 2135-1, 2135-2, 2140-1 und 2140-2 als Grenzblöcke oder an der Grenze der rechteckigen 2D-Darstellung dargestellt. Ein sphärisches Bild ist jedoch fortlaufend und hat keine Grenzen. Demgemäß gilt dies auch für eine rechteckige 2D-Darstellung. In der exemplarischen Implementierung, die in 21E dargestellt ist, kann Block 2130-1 ein benachbarter Endblock für 2130-2 sein, Block 2135-1 kann ein benachbarter Endblock für 2135-2 sein und Block 2140-1 kann ein benachbarter Endblock für 2140-2 sein. Das Gegenteil kann ebenfalls der Fall sein. Mit anderen Worten, Block 2130-2 kann ein benachbarter Endblock für 2130-1 sein, Block 2135-2 kann ein benachbarter Endblock für 2135-1 sein und Block 2140-2 kann ein benachbarter Endblock für 2140-2 sein. Daher können die benachbarten Endblöcke zugeordnet und in einer Lookup-Tabelle (z. B. Lookup-Tabelle 2145, wie in 21C dargestellt) gespeichert sein.
  • In der exemplarischen Implementierung, die in 21E dargestellt ist, liefert die rechteckige Abbildung ein Seitenverhältnis von 2×1 (äquivalent 16×8). Codierstandards können andere Seitenverhältnisse verwenden. Mindestens ein Codierstandard kann zum Beispiel ein Seitenverhältnis von 16×9 verwenden. Demgemäß kann die Größe der rechteckigen 2D-Darstellung 2150 zu einem Seitenverhältnis von 16×9 geändert werden (z. B. vertikal).
  • Die Nutzung der räumlichen Redundanz zwischen Mustern innerhalb eines Frames (z. B. Frame, Bild, Schicht, Gruppe von Makroblöcken) wird als Intraprädiktion bezeichnet. Die Nutzung der räumlichen Redundanz für Muster zwischen Frames (z. B. Frame, Bild, Schicht, Gruppe von Makroblöcken) wird als Interprädiktion bezeichnet. Bei der Intraprädiktion kann ein Prädiktionsblock als Reaktion auf früher codierte und rekonstruierte Blöcke in demselben Frame (oder Bild) erzeugt werden. Bei der Interprädiktion kann ein Prädiktionsblock als Reaktion auf früher codierte und rekonstruierte Blöcke in einem anderen (z. B. im Zeitverlauf früheren oder Basis/Vorlagen)-Frame erzeugt werden. Der Prädiktionsblock wird vor der Codierung aus dem aktuellen Block subtrahiert. Bei Luminanz(Luma)-Proben kann der Prädiktionsblock zum Beispiel für jeden N×N(z. B. 4×4)-Teilblock oder für einen N×N(z. B. 16×16)-Makroblock gebildet werden. Bei der Codierung und/oder Decodierung können die Blöcke oder Makroblöcke sequenziell innerhalb jedes Frames oder jede Schicht codiert werden.
  • Bei der Intraprädiktion kann ein Codierdurchlauf die sequenzielle Codierung von Blöcken entlang einer Reihe (z. B. von oben nach unten), einer Spalte (z. B. von links nach rechts) oder eines Zickzack-Musters (z. B. beginnend in der oberen linken Ecke) beinhalten. In einem Intraprädiktionscodierdurchlauf wurden die Blöcke, die sich über dem und links vom aktuellen Block im Frame (oder Bild) befinden, früher codiert und rekonstruiert. Demgemäß können die Blöcke, die sich über dem und links vom aktuellen Block befinden, für den Codierer/Decodierer als Prädiktionsreferenz verfügbar sein. Wenn sich der aktuelle Block jedoch in der oberen linken Ecke eines Frames befindet, wurden keine früheren Blöcke im Frame codiert. Des Weiteren wurden, wenn sich der aktuelle Block in der oberen Reihe eines Frames befindet, keine Nachbarn über dem aktuellen decodiert. Noch des Weiteren wurden, wenn sich der aktuelle Block in der linken Spalte eines Frames befindet, keine zwei Nachbarn in derselben Reihe wie der aktuelle Block codiert.
  • 23 ist ein Flussdiagramm eines Verfahrens für die Codierung eines Videoframes gemäß mindestens einer exemplarischen Ausführungsform. Wie in 23 dargestellt, empfängt in Schritt S2305 ein Controller (z. B. Controller 120) eine rechteckige 2D-Darstellung eines sphärischen Videosequenzframes (oder Bildes) zum Codieren. Der Videocodierer kann zum Beispiel eine sphärische Videodatenstrom-Eingabe 5 empfangen, den Datenstrom in eine Vielzahl von Videoframes aufteilen, jeden Frame in eine rechteckige 2D-Darstellung umwandeln (wie oben erörtert) und das erste Videoframe auswählen. Der Controller kann außerdem Anfangskonfigurationen einstellen. Der Controller kann zum Beispiel ein Intraframe-Codierschema oder einen Intraframe-Codiermodus einstellen.
  • In Schritt S2310 wird ermittelt, ob der aktuelle Block eine Frame(oder Bild)-Grenze ist. In einer exemplarischen Implementierung kann zum Beispiel eine C×R-Matrix von N×N-Blöcken Pixel in jedem Block beinhalten. Demgemäß beinhalten Blöcke in Reihe 0, Spalte 0, Reihe R-1 und Spalte C-1 Pixel des sphärischen Bildes. Daher befindet sich, wenn die C×R-Matrix der Blöcke während eines Scans Pixel in jedem Block beinhaltet und die Spalte/Reihe = 0 oder die Spalte/Reihe = C-1/R-1 ist, der Block an der Grenze. Wenn der Block an einer Grenze ist, geht die Verarbeitung zu Schritt S2315 weiter. Andernfalls fährt die Verarbeitung mit Schritt S2325 fort.
  • In Schritt S2315 wird ein benachbarter Endblock nachgeschlagen (oder identifiziert oder gesucht). In einer exemplarischen Implementierung kann zum Beispiel eine C×R-Matrix von Blöcken eine zugeordnete LUT haben, die Grenzblöcke auf einem entsprechenden benachbarten Endblock abbildet. In diesem Beispiel können Spalten und Reihen benachbarter Endblöcke in einer Lookup-Tabelle (z. B. LUT 2145) nachgeschlagen werden.
  • In Schritt S2320 wird ein benachbarter Endblock als mindestens eine Vorlage ausgewählt. Wie oben erörtert, kann zum Beispiel während der Intraprädiktion ein Prädiktionsblock als Reaktion auf früher codierte und rekonstruierte Blöcke in demselben Frame (oder Bild) erzeugt werden. Der früher codierte und rekonstruierte Block/die früher codierten und rekonstruierten Blöcke können aus benachbarten Blöcken (z. B. einem Block, der sich über dem und/oder links vom zu codierenden Block befindet) als Vorlage ausgewählt werden. In diesem Fall befindet sich der zu codierende Block am Ende einer Spalte und/oder Reihe in der C×R-Matrix. Demgemäß kann mindestens einer der benachbarten Blöcke, der als Vorlage ausgewählt werden soll, einer der nachgeschlagenen benachbarten Endblöcke sein.
  • In Schritt S2325 wird ein benachbarter Block als mindestens eine Vorlage ausgewählt. Der früher codierte und rekonstruierte Block/die früher codierten und rekonstruierten Blöcke können zum Beispiel aus benachbarten Blöcken (z. B. einem Block, der sich über dem und/oder links vom zu codierenden Block befindet) als Vorlage ausgewählt werden. In diesem Fall befindet sich der zu codierende Block nicht am Ende einer Spalte und/oder Reihe in der C×R-Matrix. Demgemäß kann mindestens einer der benachbarten Blöcke, der als Vorlage ausgewählt werden sollen, aus einem Block über dem und/oder links vom zu codierenden Block ausgewählt werden.
  • In mindestens einer exemplarischen Ausführungsform kann mehr als ein benachbarter Block für die Verwendung als Vorlage ausgewählt werden. Zum Beispiel können ein benachbarter Block und ein Block neben (in derselben Richtung) dem benachbarten Block ausgewählt werden (z. B. zwei Blöcke). Die ausgewählten Blöcke können gemittelt werden, um einen Vorlagenblock zu bilden. In diesem Beispiel ist es möglich, dass die Vorlage auf einem benachbarten Block und einem benachbarten Endblock basiert.
  • In Schritt S2330 wird ein Satz von Resten für nicht codierte Pixel des Videosequenz-Frames (oder Bildes) auf Basis der Vorlage erzeugt. Zum Beispiel kann mindestens ein Wert, der dem jeweiligen Pixel zugeordnet ist, von einem entsprechenden Wert subtrahiert werden, der einem entsprechenden Block der ausgewählten Vorlage zugeordnet ist.
  • In Schritt S2335 werden die nicht codierten Pixel codiert. Die erzeugten Pixel können zum Beispiel mithilfe einer konfigurierten Transformation (z. B. einer KLT, einer SVD, einer DCT oder einer ADST) in Transformationskoeffizienten transformiert (codiert oder komprimiert) werden.
  • In Schritt S2340 quantisiert der Codierer den codierten Satz der Restwerte für den Block. Der Controller 120 kann zum Beispiel den Quantisierungsblock 220 anweisen (oder aufrufen), um codierte Bewegungsvektoren und die codierten Restfehler durch eine beliebige einigermaßen geeignete Quantisierungstechnik zu quantisieren. Außerdem kann der Controller 120 in Schritt S2345 den Entropiecodierblock 220 anweisen, zum Beispiel Codes durch eine beliebige Codiertechnik zu den quantisierten Bewegungsvektorcodes und Restfehlercodes zuzuweisen, um Codelängen mit den Wahrscheinlichkeiten der quantisierten Bewegungsvektorcodes und Restfehlercode abzugleichen.
  • In Schritt S2350 gibt der Codierer den/die codierten (komprimierten) Videoframe(s) aus. Der Controller 120 kann zum Beispiel das codierte Video (z. B. als codierte Videoframes) zu einem oder mehreren Ausgabegeräten ausgeben. Der Controller 120 kann das codierte Video als einzelnen Bewegungsvektor und einen einzelnen Satz von Prädiktorwerten (z. B. Restfehler) für den Makroblock ausgeben. Der Controller 120 kann Informationen ausgeben, die den Modus oder das Schema für die Verwendung bei der Intraframe-Codierung durch den Codierer angeben. Das/die codierte(n) (komprimierte(n)) Videoframe(s) können zum Beispiel einen Header für die Übertragung beinhalten. Der Header kann u. a. Informationen beinhalten, die den Modus oder das Schema für die Verwendung bei der Intraframe-Codierung durch den Codierer angeben. Das Intraframe-Codierschema oder der Intraframe-Codiermodus kann dem/den codierten (komprimierten) Videoframe(s) kommuniziert werden (z. B. im Header). Das kommunizierte Intraframe-Codierschema oder der kommunizierte Intraframe-Codiermodus kann Parameter angeben, die für die Umwandlung jedes Frames in eine rechteckige 2D-Darstellung verwendet werden (z. B. eine Quincunx-Projektion nach Pierce sowie alle verwendeten Gleichungen angeben). Das kommunizierte Intraframe-Codierschema oder der kommunizierte Intraframe-Codiermodus kann auf Zahlen basieren (z. B. kann Modus 101 eine Quincunx-Projektion nach Pierce angeben).
  • 24 ist ein Flussdiagramm eines Verfahrens für die Decodierung eines Videoframes gemäß mindestens einer exemplarischen Ausführungsform. Wie in 24 dargestellt, empfängt ein Videodecodierer (z. B. Videodecodierer 175) bei Schritt S2405 codierte (komprimierte) Videobits (z. B. komprimierte Videobits 10). Die codierten (komprimierten) Videobits können zum Beispiel ein früher codierter (z. B. durch Videocodierer 125) sphärischer Echtzeit-Videodatenstrom (z. B. die Aufzeichnung eines Konzerts oder einer Sportveranstaltung) sein, der über ein Kommunikationsnetzwerk (z. B. Internet oder Intranet) empfangen wurde. Der Videodatenstrom kann auch ein früher aufgezeichnetes Video (z. B. ein Film oder eine Videorecorder-Aufzeichnung) sein. Das/die codierte(n) (komprimierte(n)) Videoframe(s) können einen Header für die Übertragung beinhalten. Der Header kann u. a. Informationen beinhalten, die den Modus oder das Schema für die Verwendung bei der Intraframe-Codierung durch den Codierer angeben. Das Intraframe-Codierschema oder der Intraframe-Codiermodus kann zum Beispiel Parameter angeben, die für die Umwandlung jedes Frames in eine rechteckige 2D-Darstellung verwendet werden (z. B. eine Quincunx-Projektion nach Pierce sowie alle verwendeten Gleichungen angeben).
  • In Schritt S2410 entropiedecodiert der Videodecodierer die codierten Videobits. Die komprimierten Videobits können zum Beispiel durch Entropiedecodierung decodiert werden, z. B. mithilfe kontextadaptiver binärarithmetischer Decodierung, um eine Reihe quantisierter Transformationskoeffizienten zu erzeugen. In Schritt S2415 dequantisiert der Videodecodierer die Transformationskoeffizienten, die durch die entropiedecodierten Bits angegeben werden. Die entropiedecodierten Videobits können zum Beispiel durch Abbildung von Werten in einem relativ kleinen Bereich der Werte in einen relativ großen Bereich dequantisiert werden (z. B. im Gegensatz zur oben beschriebenen Quantisierungsabbildung). Des Weiteren transformiert in Schritt S2420 der Videodecodierer die Videobits mithilfe einer angegebenen (z. B. im Header) Transformation (z. B. einer KLT, einer SVD, einer DCT oder einer ADST).
  • In Schritt S2425 wird ermittelt, ob der aktuelle Block eine Frame(oder Bild)-Grenze ist. In einer exemplarischen Implementierung kann zum Beispiel eine C×R-Matrix von N×N-Blöcken Pixel in jedem Block beinhalten. Demgemäß beinhalten Blöcke in Reihe 0, Spalte 0, Reihe R-1 und Spalte C-1 Pixel des sphärischen Bildes. Daher befindet sich, wenn die C×R-Matrix der Blöcke während eines Scans Pixel in jedem Block beinhaltet und die Spalte/Reihe = 0 oder die Spalte/Reihe = C-1/R-1 ist, der Block an der Grenze. Wenn der Block an einer Grenze ist, geht die Verarbeitung zu Schritt S2430 weiter. Andernfalls fährt die Verarbeitung mit Schritt S2440 fort.
  • In Schritt S2430 wird ein benachbarter Endblock nachgeschlagen. In einer exemplarischen Implementierung kann zum Beispiel eine C×R-Matrix von Blöcken eine zugeordnete LUT haben, die Grenzblöcke auf einem entsprechenden benachbarten Endblock abbildet. In diesem Beispiel können Spalten und Reihen benachbarter Endblöcke in einer Lookup-Tabelle (z. B. LUT 2145) nachgeschlagen werden.
  • In Schritt S2435 wird ein benachbarter Endblock als mindestens eine Vorlage ausgewählt. Wie oben erörtert, kann zum Beispiel während der Intraprädiktion ein Prädiktionsblock als Reaktion auf früher codierte und rekonstruierte Blöcke in demselben Frame (oder Bild) erzeugt werden. Der früher codierte und rekonstruierte Block/die früher codierten und rekonstruierten Blöcke können aus benachbarten Blöcken (z. B. einem Block der sich über dem und/oder links vom zu codierenden Block befindet) als Vorlage ausgewählt werden. In diesem Fall befindet sich der zu codierende Block am Ende einer Spalte und/oder Reihe in der C×R-Matrix. Demgemäß kann mindestens einer der benachbarten Blöcke, der als Vorlage ausgewählt werden soll, einer der nachgeschlagenen benachbarten Endblöcke sein.
  • In Schritt S2440 wird ein benachbarter Block als mindestens eine Vorlage ausgewählt. Der früher codierte und rekonstruierte Block/die früher codierten und rekonstruierten Blöcke können zum Beispiel aus benachbarten Blöcken (z. B. einem Block, der sich über dem und/oder links vom zu codierenden Block befindet) als Vorlage ausgewählt werden. In diesem Fall befindet sich der zu codierende Block nicht am Ende einer Spalte und/oder Reihe in der N×N-Matrix. Demgemäß kann mindestens einer der benachbarten Blöcke, der als Vorlage ausgewählt werden sollen, aus einem Block über dem und/oder links vom zu codierenden Block ausgewählt werden.
  • In mindestens einer exemplarischen Ausführungsform kann mehr als ein benachbarter Block für die Verwendung als Vorlage ausgewählt werden. Zum Beispiel können ein benachbarter Block und ein Block neben (in derselben Richtung) dem benachbarten Block ausgewählt werden (z. B. zwei Blöcke). Die ausgewählten Blöcke können gemittelt werden, um einen Vorlagenblock zu bilden. In diesem Beispiel ist es möglich, dass die Vorlage auf einem benachbarten Block und einem benachbarten Endblock basiert.
  • In Schritt S2445 erzeugt der Videodecodierer rekonstruierte Pixel als Videoframe auf Basis der passenden Vorlage und der decodierten Videobits. Der Videodecodierer kann zum Beispiel die Reste (z. B. transformierte oder dekomprimierte Videobits) zur entsprechenden Position in der passenden Vorlage hinzufügen, was zu einem rekonstruierten Pixel führt.
  • In Schritt S2450 filtert der Videodecodierer das rekonstruierte Pixel im Videoframe. Ein Schleifenfilter kann zum Beispiel auf den rekonstruierten Block angewendet werden, um Blockartefakte zu verringern. Ein Deblockierungsfilter (z. B. wie unten in Bezug auf 26A und 26B beschrieben) kann zum Beispiel auf den rekonstruierten Block angewendet werden, um Verzerrungen zu verringern.
  • In Schritt S2455 wird der 2D-Frame (oder das Bild) in ein sphärisches Videoframe (oder Bild) umgewandelt. Der 2D-Frame kann zum Beispiel durch Umkehr der Technik, wie oben in Bezug auf die Abbildung eines sphärischen Frames (oder Bildes) auf einer 2D-Darstellung des sphärischen Frames (oder Bildes) beschrieben, umgewandelt werden. Eine Beispieltechnik ist in Bezug auf 8 unten näher beschrieben.
  • In Schritt S2460 erzeugt der Videodecodierer einen sphärischen Videodatenstrom (oder ein sphärisches Bild) auf Basis des/der Videoframes. Mindestens ein Videoframe der rekonstruierten umgewandelten Pixel kann zum Beispiel in einer Sequenz organisiert werden, um einen sphärischen Videodatenstrom zu bilden.
  • 25 ist ein Flussdiagramm eines Verfahrens für die Umwandlung einer 2D-Darstellung eines sphärischen Bildes in einen sphärischen Frame/ein sphärisches Bild gemäß mindestens einer exemplarischen Ausführungsform. Wie in 25 dargestellt, wird in Schritt S2505 eine rechteckige 2D-Darstellung auf einer quadratischen 2-D-Darstellung abgebildet. Wie in 21C und 21 D dargestellt kann ein Quadrat auf einem Rechteck abgebildet werden, das durch zwei gleich große Quadrate gebildet wird. Eines der gleich großen Quadrate kann in vier Dreiecke mit jeweils einer Seite des Quadrats aufgeteilt werden. Demgemäß kann eine inverse Abbildung durch Neupositionierung von drei von vier Dreiecken durchgeführt werden, um ein drittes Quadrat als zweite zweidimensionale Darstellung zu bilden. In einer exemplarischen Implementierung kann Dreieck 2115 gegen den Uhrzeigersinn gedreht werden, Dreieck 2120 kann im Uhrzeigersinn gedreht werden und Dreieck 2125 kann um 180 Grad gedreht werden. Jedes der Dreiecke 2115, 2120 und 2125 kann wie in 21C dargestellt gedreht und positioniert werden.
  • In Schritt S2510 wird die quadratische 2D-Darstellung auf einem sphärischen Frame (oder Bild) abgebildet. Der Quincunx-Projektionsalgorithmus nach Pierce kann zum Beispiel verwendet werden, um die quadratische 2D-Darstellung in einen sphärischen Frame umzuwandeln. Gleichung 1 kann zum Beispiel verwendet werden, um sphärische Koordinaten für Pixel im sphärischen Frame auf Basis der X-, Y-Koordinaten der entsprechenden Pixel in der quadratischen 2D-Darstellung zu erzeugen.
  • 6A und 26B Flussdiagramme für ein Verfahrens des Betriebs eines Deblockierungsfilters gemäß mindestens einer exemplarischen Ausführungsform sind. Quantisierung kann zu blockartigen Artefakten im rekonstruierten Bild führen. Der Deblockierungsfilter kann so konfiguriert sein, dass er die Ränder zwischen Transformationsblöcken glättet. Vertikale Ränder werden zuerst deblockiert, dann werden horizontale Ränder deblockiert (diese Reihenfolge kann sich jedoch in verschiedenen Implementierungen unterscheiden). Der Deblockierungsfilter kann inhaltsadaptiv sein. Mit anderen Worten, die Breite des Deblockierungsfilters (z. B. Anzahl der deblockierten Pixel) hängt von der Breite oder Höhe des Artefakts (oder der Verzerrung) ab. Ränder können Pixel für Pixel verarbeitet werden, sodass 8, 4, 2 oder 1 Pixel an jeder Seite der Randes deblockiert werden. Der Deblockierungsfilter sucht nach Ebenheit und einem deutlichen Schritt bei der Helligkeit über den Rand. Normalerweise werden die Grenze eines Bildes, eines Frames oder einer Schicht nicht deblockiert, da es keinen Vergleichsblock in einem 2D-Bild, einem 2D-Frame oder einer 2D-Schicht gibt. In exemplarischen Ausführungsformen sind das Bild, der Frame oder die Scheibe jedoch ein sphärische Bild, ein sphärischer Frame oder eine sphärische Scheibe. Demgemäß gibt es keine Grenzen, wie in einem 2D-Bild, einem 2D-Frame oder einer 2D-Schicht.
  • Wie in 26A dargestellt, wird in S2605 ein vertikaler Rand gescannt. Ein Scan kann zum Beispiel in der oberen linken Ecke (0,0) des decodierten Frames beginnen. Der Scan kann sich die Spalte nach unten bewegen, bis er Spalte R-1 erreicht. Der Scan kann dann erneut bei Spalte 0 beginnen und sich nach unten arbeiten oder in einer Sequenz nach unten-nach oben-nach unten scannen. Jedes Scannen eines vertikalen Randes kann einen oder mehrere Blöcke beinhalten.
  • In Schritt S2610 wird ermittelt, ob der aktuelle Block eine Frame(oder Bild)-Grenze ist. In einer exemplarischen Implementierung kann zum Beispiel eine C×R-Matrix von N×N-Blöcken Pixel in jedem Block beinhalten. Demgemäß beinhalten Blöcke in Reihe 0, Spalte 0, Reihe R-1 und Spalte C-1 Pixel des sphärischen Bildes. Daher befindet sich, wenn die C×R-Matrix der Blöcke während eines vertikalen Scans Pixel in jedem Block beinhaltet und die Spalte = 0 oder die Spalte = C-1 ist, der Block an der Grenze. Des Weiteren könnten sich bei einem vertikalen Scan die zu scannenden Blöcke links vom zum verarbeitenden Block oder rechts vom zu verarbeitenden Block befinden. Daher kann beim Scannen mit einer linken Verarbeitungsorientierung Spalte 0 Grenzblöcke beinhalten. Beim Scannen mit einer rechten Verarbeitungsorientierung kann Spalte C-1 Grenzblöcke beinhalten. Beim Scannen mit einer doppelten Verarbeitungsorientierung können Spalten 0 und C-1 Grenzblöcke beinhalten. Wenn der Block an einer Grenze ist, geht die Verarbeitung zu Schritt S2615 weiter. Andernfalls fährt die Verarbeitung mit Schritt S2625 fort.
  • In Schritt S2615 wird ein benachbarter Endblock nachgeschlagen. In einer exemplarischen Implementierung kann zum Beispiel eine C×R-Matrix von Blöcken eine zugeordnete LUT haben, die Grenzblöcke auf einem entsprechenden benachbarten Endblock abbildet. In diesem Beispiel können Spalten und Reihen benachbarter Endblöcke in einer Lookup-Tabelle (z. B. LUT 2145) nachgeschlagen werden.
  • In Schritt S2620 wird ein benachbarter Endblock als ein Vergleichsblock ausgewählt. Wie oben erörtert, können zum Beispiel während der Deblockierungsfilterung Pixel über einen Rand von zwei Blöcken hinweg gefiltert werden, um blockartige Übergänge zu entfernen. Der Vergleichsblock (für einen gescannten vertikalen Randblock) kann aus benachbarten Blöcken (z. B links vom Block, der den zu filternden vertikalen Rand beinhaltet) als Vergleichsblock ausgewählt werden. In diesem Fall befindet sich der Block, der den zu filternden vertikalen Rand beinhaltet, an einer Endspalte in der C×R-Matrix des Frames (oder Bildes). Demgemäß kann mindestens einer der benachbarten Blöcke, der als Vergleichsblock ausgewählt werden soll, einer der nachgeschlagenen benachbarten Endblöcke sein. Mit anderen Worten, der benachbarte Block, der als Vergleichsblock ausgewählt werden soll, kann ein anderer als der linke rekonstruierte Block im Vergleich zum zu deblockierenden Block sein.
  • In Schritt S2625 wird ein benachbarter Block als ein Vergleichsblock ausgewählt. Wie oben erörtert, können zum Beispiel während der Deblockierungsfilterung Pixel über einen Rand von zwei Blöcken hinweg gefiltert werden, um blockartige Übergänge zu entfernen. Der Vergleichsblock (für einen gescannten vertikalen Randblock) kann aus benachbarten Blöcken (z. B links vom Block, der den zu filternden vertikalen Rand beinhaltet) als Vergleichsblock ausgewählt werden. In diesem Fall befindet sich der Block, der den zu filternden vertikalen Rand beinhaltet, nicht an einer Endspalte in der C×R-Matrix des Frames (oder Bildes). Demgemäß kann mindestens einer der benachbarten Blöcke, der als Vergleichsblock ausgewählt werden soll, aus einem Block in einer benachbarten (z. B. linken) Spalte ausgewählt werden.
  • In Schritt S2630 wird der vertikale Rand gefiltert. Wie oben erörtert, kann zum Beispiel der die Breite des Deblockierungsfilters (z. B. Anzahl der zu deblockierenden Pixel) von der Breite des Artefakts (oder Verzerrung) abhängen. Daher wird eine Anzahl an Pixeln aus dem Block, der den zu filternden vertikalen Rand beinhaltet (z. B. 1, 2, 4 oder 8), eine entsprechende Anzahl aus dem Vergleichsblock ausgewählt. Die Pixel werden dann gefiltert. Das Filtern (oder Deblockieren) kann zum Beispiel einen Tiefpassfilter (z. B. zur Verringerung der Helligkeit über den Rand), die Anwendung eines Regressionsalgorithmus über die ausgewählten Pixel, die Anwendung eines Wavelet-basierenden Algorithmus über die ausgewählten Pixel, die Anwendung eines auf anisotroper Diffusion basierenden Algorithmus über die ausgewählten Pixel und/oder die Durchführung einer gewichteten Summe von Pixeln über die ausgewählten Pixel beinhalten. In jedem Fall kann ein Deblockieren über Blockgrenzen hinweg durchgeführt werden.
  • In Schritt S2635 wird ermittelt, ob der aktuelle Block der letzte vertikale Block ist. Wenn das Scannen zum Beispiel bei Block 0,0 begonnen wurde, kann der letzte Block C-1, R-1 sein. Wenn der Block der letzte vertikale Block ist, geht die Verarbeitung zu Schritt S2640 weiter. Andernfalls kehrt die Verarbeitung zu Schritt S2605 zurück.
  • In Schritt S2640 wird ein horizontaler Rand gescannt. Ein Scan kann zum Beispiel in der oberen linken Ecke (0,0) des decodierten Frames beginnen. Der Scan kann sich entlang (nach rechts) bewegen, bis er Spalte C-1 erreicht. Der Scan kann erneut bei Spalte 0 beginnen und sich nach rechts arbeiten oder in einer Sequenz nach rechts-nach links-nach rechts scannen. Jedes Scannen eines horizontalen Randes kann einen oder mehrere Blöcke beinhalten.
  • In Schritt S2645 wird ermittelt, ob der aktuelle Block eine Frame(oder Bild)-Grenze ist. In einer exemplarischen Implementierung kann zum Beispiel eine C×R-Matrix von N×N-Blöcken Pixel in jedem Block beinhalten. Demgemäß beinhalten Blöcke in Reihe 0, Spalte 0, Reihe R-1 und Spalte C-1 Pixel des sphärischen Bildes. Daher befindet sich, wenn die C×R-Matrix der Blöcke während eines horizontalen Scans Pixel in jedem Block beinhaltet und die Reihe = 0 oder die Reihe = R-1 ist, der Block an der Grenze. Wenn der Block an einer Grenze ist, geht die Verarbeitung zu Schritt S2650 weiter. Andernfalls fährt die Verarbeitung mit Schritt S2660 fort.
  • In Schritt S2650 wird ein benachbarter Endblock nachgeschlagen. In einer exemplarischen Implementierung kann zum Beispiel eine C×R-Matrix von Blöcken eine zugeordnete LUT haben, die Grenzblöcke auf einem entsprechenden benachbarten Endblock abbildet. In diesem Beispiel können Spalten und Reihen benachbarter Endblöcke in einer Lookup-Tabelle (z. B. LUT 2145) nachgeschlagen werden.
  • In Schritt S2655 wird ein benachbarter Endblock als ein Vergleichsblock ausgewählt. Wie oben erörtert, können zum Beispiel während der Deblockierungsfilterung Pixel über einen Rand von zwei Blöcken hinweg gefiltert werden, um blockartige Übergänge zu entfernen. Der Vergleichsblock (für einen gescannten horizontalen Randblock) kann aus benachbarten Blöcken (z. B über dem Block, der den zu filternden horizontalen Rand beinhaltet) als Vergleichsblock ausgewählt werden. In diesem Fall befindet sich der Block, der den zu filternden horizontalen Rand beinhaltet, in einer oberen oder unteren Reihe in der C×R-Matrix des Frames (oder Bildes). Demgemäß kann mindestens einer der benachbarten Blöcke, der als Vergleichsblock ausgewählt werden soll, einer der nachgeschlagenen benachbarten Endblöcke sein. Mit anderen Worten, der benachbarte Block, der als Vergleichsblock ausgewählt werden soll, kann ein anderer als der obere rekonstruierte Block im Vergleich zum zu deblockierenden Block sein.
  • In Schritt S2660 wird ein benachbarter Block als ein Vergleichsblock ausgewählt. Wie oben erörtert, können zum Beispiel während der Deblockierungsfilterung Pixel über einen Rand von zwei Blöcken hinweg gefiltert werden, um blockartige Übergänge zu entfernen. Der Vergleichsblock (für einen gescannten horizontalen Randblock) kann aus benachbarten Blöcken (z. B über dem Block, der den zu filternden horizontalen Rand beinhaltet) als Vergleichsblock ausgewählt werden. In diesem Fall befindet sich der Block, der den zu filternden horizontalen Rand beinhaltet, nicht in einer oberen oder unteren Reihe in der C×R-Matrix des Frames (oder Bildes). Demgemäß kann mindestens einer der benachbarten Blöcke, der als Vergleichsblock ausgewählt werden soll, aus einem Block in einer benachbarten (z. B. oberen) Reihe ausgewählt werden.
  • In Schritt S2665 wird der horizontale Rand gefiltert. Wie oben erörtert, kann zum Beispiel der die Breite des Deblockierungsfilters (z. B. Anzahl der zu deblockierenden Pixel) von der Höhe des Artefakts (oder Verzerrung) abhängen. Daher wird eine Anzahl an Pixeln aus dem Block, der den zu filternden horizontalen Rand beinhaltet (z. B. 1, 2, 4 oder 8), und eine entsprechende Anzahl aus dem Vergleichsblock ausgewählt. Die Pixel werden dann gefiltert. Das Filtern (oder Deblockieren) kann zum Beispiel einen Tiefpassfilter (z. B. zur Verringerung der Helligkeit über den Rand), die Anwendung eines Regressionsalgorithmus über die ausgewählten Pixel, die Anwendung eines Wavelet-basierenden Algorithmus über die ausgewählten Pixel, die Anwendung eines auf anisotroper Diffusion basierenden Algorithmus über die ausgewählten Pixel und/oder die Durchführung einer gewichteten Summe von Pixeln über die ausgewählten Pixel beinhalten. In jedem Fall kann ein Deblockieren über Blockgrenzen hinweg durchgeführt werden.
  • In Schritt S2670 wird ermittelt, ob der aktuelle Block der letzte horizontale Block ist. Wenn das Scannen zum Beispiel bei Block 0,0 begonnen wurde, kann der letzte Block C-1, R-1 sein. Wenn der Block der letzte horizontale Block ist, endet der Deblockierungsvorgang. Andernfalls kehrt die Verarbeitung zu Schritt S2640 zurück.
  • Es ist darauf hinzuweisen, dass die Systeme 100 und 150, die in 1A und 1B veranschaulicht sind, als ein Element und/oder eine Erweiterung des generischen Computergeräts 2700 und/oder des generischen mobilen Computergeräts 2750 implementiert werden können, das nachfolgend in Bezug auf 27 beschrieben wird. Alternativ oder zusätzlich können die Systeme 100 und 150, die in 1A und 1B veranschaulicht sind, in einem System getrennt vom generischen Computergerät 2700 und/oder dem generischen mobilen Computergerät 2750, das einige oder alle nachfolgend beschriebenen Funktionen in Bezug auf das generische Computergerät 2700 und/oder das generische tragbare Computergerät 2750 aufweist, implementiert werden.
  • 27 ist ein schematisches Blockdiagramm eines Computergeräts und eines mobilen Computergeräts, das zur Implementierung der hierin beschriebenen Techniken verwendet werden kann. 27 ist ein Beispiel eines generischen Computergeräts 2700 und eines generischen Mobilcomputergeräts 2750, die mit den hier beschriebenen Techniken verwendet werden können. Das Computergerät 2700 ist zur Darstellung verschiedener Formen von Digitalcomputern vorgesehen, wie Laptops, Desktops, Workstations, Personal Digital Assistants, Server, Blade-Server, Mainframes und andere geeignete Computer. Das Computergerät 2750 soll verschiedene Formen mobiler Geräte repräsentieren, wie Personal Digital Assistants, Mobiltelefone, Smartphones und andere ähnliche Computergeräte. Die hier gezeigten Komponenten, ihre Verbindungen und Beziehungen und ihre Funktionen sollen nur exemplarisch sein und sollen Implementierungen der in diesem Dokument beschriebenen und/oder beanspruchten Erfindungen nicht einschränken.
  • Computergerät 2700 beinhaltet einen Prozessor 2702, einen Speicher 2704, ein Speichergerät 2706, eine High-Speed-Schnittstelle 2708, die sich mit Speicher 2704 und High-Speed-Erweiterungsanschlüssen 2710 verbindet, und eine Low-Speed-Schnittstelle 2712, die sich mit dem 2714 und Speichergerät 2706 verbindet. Jede der Komponenten 2702, 2704, 2706, 2708, 2710 und 2712 ist unter Verwendung verschiedener Busse untereinander verbunden und kann auf einer gängigen Hauptplatine oder gegebenenfalls in anderer Weise angebracht sein. Der Prozessor 2702 kann Anweisungen zur Ausführung innerhalb des Computergeräts 2700 verarbeiten, die Anweisungen beinhalten, die in dem Speicher 2704 oder auf dem Speichergerät 2706 gespeichert sind, um grafische Informationen für ein GUI auf einer externen Eingabe-/Ausgabevorrichtung, wie Anzeige 2716, die mit High-Speed-Schnittstelle 2708 verbunden ist, anzuzeigen. In anderen Implementierungen können mehrere Prozessoren und/oder mehrere Busse, wie angemessen, zusammen mit mehreren Speichern und Speichertypen verwendet werden. Es können auch mehrere Computergeräte 2700 verbunden sein, wobei jedes Gerät Teile der notwendigen Operationen bereitstellt (z. B. als eine Serverbank, eine Gruppe von Blade-Servern oder ein Mehrprozessorsystem).
  • Der Speicher 2704 speichert Informationen innerhalb des Computergeräts 2700. In einer Implementierung ist der Speicher 2704 eine oder mehrere flüchtige Speichereinheiten. In anderen Implementierungen ist der Speicher 2704 eine oder mehrere nicht flüchtige Speichereinheiten. Der Speicher 2704 kann auch eine andere Form von computerlesbarem Medium sein, zum Beispiel ein magnetischer oder optischer Datenträger und/oder ein nicht flüchtiges, computerlesbares Speichermedium.
  • Das Speichergerät 2706 ist in der Lage, Massenspeicher für die Computergerät 2700 bereitzustellen. In einer Implementierung kann das Speichergerät 2706 ein computerlesbares Medium sein oder beinhalten, wie ein Diskettenlaufwerk, ein Festplattenlaufwerk, ein optisches Datenträgergerät, ein Magnetbandlaufwerk, ein Flash-Speicher oder anderes ähnliches Solid-State-Speichergerät oder eine Reihe anderer Geräte, einschließlich Geräte in einem Speichernetzwerk oder anderen Konfigurationen.
  • Ein Computerprogrammprodukt kann konkret in einem Informationsträger ausgeführt sein. Das Computerprogrammprodukt kann auch Anweisungen enthalten, die, wenn sie ausgeführt werden, ein oder mehrere Verfahren wie die oben beschriebenen durchführen. Der Informationsträger ist ein computer- oder maschinenlesbares Medium wie der Speicher 2704, das Speichergerät 2706 oder Speicher auf einem Prozessor 2702.
  • Der High-Speed-Controller 2708 verwaltet bandbreitenintensive Operationen für das Computergerät 2700, während der Low-Speed-Controller 2712 weniger bandbreitenintensive Operationen verwaltet. Eine solche Zuordnung von Funktionen ist nur exemplarisch. In einer Ausführungsform ist der High-Speed-Controller 2708 mit Speicher 2704, Display 2716 (z. B. über einen Grafikprozessor oder -beschleuniger) und mit High-Speed-Erweiterungsanschlüssen 2710 gekoppelt, die verschiedene Erweiterungskarten aufnehmen können (nicht dargestellt). In der Implementierung ist Low-Speed-Controller 2712 mit Speichergerät 2706 und Low-Speed-Erweiterungsanschluss 2714 gekoppelt. Der langsame Erweiterungsanschluss, der verschiedene Kommunikationsanschlüsse (z. B. USB, B, Ethernet, Funkethernet) beinhalten kann, kann an ein oder mehrere Eingabe-/Ausgabevorrichtungen, wie eine Tastatur, ein Zeigegerät, einen Scanner oder ein Netzwerkgerät, wie einen Switch oder Router, z. B. durch einen Netzwerkadapter gekoppelt sein.
  • Das Computergerät 2700 kann in einer Reihe unterschiedlicher Formen implementiert sein, wie in der Figur dargestellt. So kann es beispielsweise als ein Standardserver 2720 oder mehrfach in einer Gruppe solcher Server implementiert sein. Es kann außerdem als Teil eines Rack-Serversystems 2724 implementiert sein. Zusätzlich kann es in einem Personal Computer wie einem Laptop-Computer 2722 implementiert sein. Alternativ können Komponenten von Computergerät 2700 mit anderen Komponenten in einem mobilen Gerät kombiniert sein (nicht dargestellt), z. B. Gerät 2750. Jedes dieser Geräte kann ein oder mehrere von Computergeräte 2700, 2750 enthalten und ein gesamtes System kann aus mehreren Computergeräten 2700, 2750, die miteinander kommunizieren, zusammengesetzt sein.
  • Computergerät 2750 beinhaltet neben anderen Komponenten einen Prozessor 2752, einen Speicher 2764, eine Eingabe-/Ausgabevorrichtung wie eine Anzeige 2754, eine Kommunikationsschnittstelle 2766 und einen Sender-Empfänger 2768. Das Gerät 2750 kann ebenfalls mit einem Speichergerät z. B. einem Microdrive oder einem anderen Gerät ausgestattet werden, um zusätzlichen Speicher bereitzustellen. Jede der Komponenten 2750, 2752, 2764, 2754, 2766 und 2768 ist unter Verwendung verschiedener Busse untereinander verbunden und mehrere der Komponenten können auf einer gängigen Hauptplatine oder gegebenenfalls in anderer Weise angebracht sein.
  • Der Prozessor 2752 kann Anweisungen im Computergerät 2750 ausführen, einschließlich im Speicher 2764 gespeicherter Anweisungen. Der Prozessor kann als ein Chipsatz von Chips implementiert werden, die separate und mehrere analoge und digitale Prozessoren beinhalten. Der Prozessor kann beispielsweise zur Koordinierung der anderen Komponenten des Geräts 2750, wie etwa Steuerung von Benutzeroberflächen, Anwendungen, die vom Gerät 2750 ausgeführt werden, und drahtlose Kommunikation durch Gerät 2750 bereitstellen.
  • Prozessor 2752 kann mit einem Benutzer über Steuerschnittstelle 2758 und Anzeigeschnittstelle 2756, die mit einer Anzeige 2754 verbunden ist, kommunizieren. Die Anzeige 2754 kann zum Beispiel eine TFT LCD(Thin-Film-Transistor Liquid Crystal Display)- oder eine OLED-Anzeige (organische Leuchtdiode) oder eine andere angemessene Anzeigetechnologie sein. Die Anzeigeschnittstelle 2756 kann eine angemessene Schaltung als Treiber der Anzeige 2754 umfassen, um einem Benutzer grafische und andere Informationen zu präsentieren. Die Steuerschnittstelle 2758 kann Befehle von einem Benutzer empfangen und sie zur Abgabe an den Prozessor 2752 konvertieren. Außerdem kann eine externe Schnittstelle 2762 in Kommunikation mit Prozessor 2752 bereitgestellt werden, um die Nahbereichskommunikation von Gerät 2750 mit anderen Geräten zu ermöglichen. Die externe Schnittstelle 2762 kann beispielsweise in manchen Implementierungen eine drahtgestützte Verbindung oder in anderen Implementierungen eine drahtlose Verbindung aufbauen, und es können auch mehrere Schnittstellen zur Anwendung kommen.
  • Der Speicher 2764 speichert Informationen innerhalb des Computergeräts 2750. Der Speicher 2764 kann als ein computerlesbares Medium bzw. als eines von mehreren computerlesbaren Medien, als flüchtiger Speicher bzw. als flüchtige Speicher oder als ein nicht-flüchtiger Speicher bzw. als nicht-flüchtige Speicher implementiert werden. Erweiterungsspeicher 2774 kann ebenfalls bereitgestellt und mit dem Gerät 2750 über die Erweiterungsschnittstelle 2772 verbunden sein, die zum Beispiel eine SIMM(Single In Line Memory Module)-Kartenschnittstelle umfassen kann. Ein solcher Erweiterungsspeicher 2774 kann zusätzlichen Speicherplatz für Gerät 2750 bereitstellen oder kann auch Anwendungen oder andere Informationen für Gerät 2750 speichern. Insbesondere kann Erweiterungsspeicher 2774 Anweisungen zum Ausführen oder Ergänzen der oben beschriebenen Prozesse enthalten und er kann außerdem sichere Informationen enthalten. Demnach kann Erweiterungsspeicher 2774 beispielsweise als ein Sicherheitsmodul für Gerät 2750 bereitgestellt sein und kann mit Anweisungen programmiert sein, die eine sichere Benutzung von Gerät 2750 ermöglichen. Zusätzlich dazu können über die SIMM-Karten sichere Anwendungen bereitgestellt werden, zusammen mit zusätzlichen Informationen, wie dem Ablegen von Identifizierungsinformationen auf der SIMM-Karte auf eine Weise, die nicht gehackt werden kann.
  • Der Speicher kann zum Beispiel Flashspeicher und/oder NVRAM-Speicher beinhalten, wie unten besprochen. In einer Implementierung ist ein Computerprogrammprodukt greifbar in einem Informationsträger ausgeführt. Das Computerprogrammprodukt enthält Anweisungen, die, wenn sie ausgeführt werden, ein oder mehrere Verfahren wie die oben beschriebenen durchführen. Der Informationsträger ist ein computer- oder maschinenlesbares Medium, wie der Speicher 2764, die Speichererweiterung 2774 oder der Prozessorspeicher 2752, das beispielsweise über den Sender-Empfänger 2768 oder die externe Schnittstelle 2762 empfangen werden kann.
  • Gerät 2750 kann über Kommunikationsschnittstelle 2766, die bei Bedarf eine digitale Signalverarbeitungsschaltung beinhalten kann, drahtlos kommunizieren. Die Verbindungsschnittstelle 2766 kann Verbindungen mit verschiedenen Kommunikationstypen oder -protokollen aufbauen, darunter GSM-Sprachanrufe, SMS, EMS, oder MMS-Messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000 oder GPRS unter anderen. Solche Kommunikation kann beispielsweise durch Funkfrequenz-Sender-Empfänger 2768 stattfinden. Zusätzlich kann eine Kurzstreckenkommunikation stattfinden, wie unter Verwendung eines Bluetooth-, WLAN- oder anderen solchen Sende-Empfängern (nicht gezeigt). Außerdem kann das GPS(Global Positioning System)-Empfängermodul 2770 zusätzliche mit der Navigation und dem Ort verbundene drahtlose Daten für Gerät 2750 bereitstellen, die ggf. von Anwendungen verwendet werden können, die auf Gerät 2750 ausgeführt werden.
  • Gerät 2750 kann ebenfalls unter Verwendung des Audio-Codec 2760, der gesprochene Informationen von einem Benutzer empfangen und diese in nutzbare digitale Informationen konvertieren kann, hörbar kommunizieren. Audio-Codec 2760 kann ebenfalls akustische Töne für einen Benutzer erzeugen, zum Beispiel durch einen Lautsprecher zum Beispiel in einem Handgerät von Gerät 2750. Solche Töne können Töne von Sprachtelefonanrufen beinhalten, können aufgezeichnete Töne (z. B. Sprachnachrichten, Musikdateien usw.) beinhalten und er kann außerdem Tone enthalten, die durch Anwendungen erzeugt werden, die auf Gerät 2750 betrieben werden.
  • Das Computergerät 2750 kann in einer Reihe unterschiedlicher Formen implementiert sein, wie in der Figur dargestellt. Zum Beispiel kann es als Mobiltelefon 2780 implementiert werden. Er kann ebenfalls als Bestandteil eines Smartphones 2782, eines Personal Digital Assistant oder eines ähnlichen mobilen Geräts implementiert sein.
  • Einige der vorstehend genannten exemplarischen Ausführungsformen werden als Prozesse oder Verfahren anhand von Flussdiagrammen beschrieben. Obwohl die Flussdiagramme die Operationen als sequentielle Prozesse darstellen, verlaufen viele der Operationen parallel, gleichzeitig oder simultan. Zusätzlich kann die Reihenfolge der Vorgänge neu angeordnet werden. Die Prozesse können beendet werden, wenn die Operationen abgeschlossen sind, können aber auch zusätzliche Schritte innehaben, die nicht in der Figur dargestellt sind. Die Prozesse können Verfahren, Funktionen, Prozeduren, Subroutinen, Subprogrammen, usw. entsprechen.
  • Die oben erörterten Verfahren, von denen einige durch die Flussdiagramme veranschaulicht sind, können durch Hardware, Software, Firmware, Middleware, Mikrocode, Hardwarebeschreibungssprachen oder eine beliebige Kombination davon implementiert sein. Falls durch Software, Firmware, Middleware oder Microcode implementiert, können der Programmcode oder Codesegmente, die die erforderlichen Aufgaben ausführen, auf einem maschinen- oder computerlesbaren Medium wie einem Speichermedium gespeichert werden. Ein Prozessor/Prozessoren kann/können die nötigen Aufgaben durchführen.
  • Spezifische strukturelle und funktionelle Details, die hierin offenbart sind, sind lediglich zum Zwecke der Beschreibung exemplarischer Ausführungsformen angegeben. Exemplarische Ausführungsformen können in vielen Formen ausgeführt sein und sollten nicht als durch die hierin beschriebenen Ausführungsformen begrenzt angesehen werden.
  • Obgleich die Begriffe erste, zweite usw. hierin verwendet werden können, um verschiedene Elemente zu beschreiben, sollten diese Elemente nicht durch diese Begriffe beschränkt werden. Diese Begriffe werden nur verwendet, um ein Element vom anderen zu unterscheiden. Ein erstes Element könnte beispielsweise als zweites Element bezeichnet sein und, auf gleiche Weise, kann ein zweites Element als erstes Element bezeichnet sein, ohne dass von dem Umfang der exemplarischen Ausführungsform abgewichen wird. Wie hierin verwendet, schließt der Begriff „und/oder” sämtliche Kombinationen von einem oder mehreren der zugewiesenen aufgeführten Posten ein.
  • Es versteht sich, dass, wenn ein Element als mit einem anderen Element „verbunden” oder „gekoppelt” bezeichnet wird, es mit dem anderen Element direkt verbunden oder gekoppelt sein kann, oder es können dazwischen geschaltete Elemente vorhanden sein. Wenn hingegen ein Element als mit einem anderen Element „direkt verbunden” oder „direkt gekoppelt” bezeichnet wird, gibt es keine vorhandenen, dazwischenliegenden Elemente. Andere Worte, die verwendet werden, um die Beziehung zwischen Elementen zu beschreiben, sollten in einer ähnlichen Weise interpretiert werden (z. B. „zwischen” versus „direkt zwischen”, „benachbart” und „direkt benachbart” usw.).
  • Die hier verwendete Terminologie dient lediglich der Beschreibung spezieller Ausführungsformen und soll keine Beschränkung von exemplarischen Ausführungsformen darstellen. Wie hierin verwendet, sind die Singularformen „ein” und „die” dafür beabsichtigt, ebenso die Pluralformen mit einzuschließen, außer wenn der Kontext eindeutig etwas anderes angibt. Es versteht sich ferner, dass die Begriffe „umfasst”, „umfassend”, „beinhalten” und/oder „beinhaltend”, wenn sie hierin verwendet werden, das Bestehen angegebener Funktionen, Ganzzahlen, Schritte, Operationen, Elemente und/oder Komponenten angeben, aber nicht das Bestehen oder Hinzufügen von einem oder mehreren anderen Funktionen, Ganzzahlen, Schritten, Operationen, Elementen, Komponenten und/oder Gruppen davon ausschließt.
  • Es sollte auch angemerkt werden, dass in einigen alternativen Ausführungsformen die Funktionen/Vorgänge außerhalb der in den Figuren dargestellten Reihenfolge auftreten können. Zwei Figuren, die beispielsweise nacheinander gezeigt werden, können gleichzeitig oder manchmal in umgekehrter Reihenfolge ausgeführt werden, je nach den involvierten Funktionalitäten/Handlungen.
  • Sofern nicht anders definiert, haben alle hierin verwendeten Begriffe (einschließlich technischer und wissenschaftlicher Begriffe) dieselbe Bedeutung wie sie von Fachleuten auf dem Gebiet, zu dem exemplarischen Ausführungsformen gehören, allgemein verstanden werden. Es sollte auch beachtet werden, dass Begriffe, z. B. solche, die in allgemeingültigen Wörterbüchern verwendet werden, so zu verstehen sind, dass sie die Bedeutung annehmen, die für sie im fachlichen Zusammenhang gilt und dass sie nicht idealisiert oder übermäßig formal verwendet werden, es sei denn, dies wird ausdrücklich angegeben.
  • Teile der obigen exemplarischen Ausführungsformen und entsprechende detaillierte Beschreibung werden in Bezug auf Software oder Algorithmen und symbolische Darstellungen der Operationen an Databits innerhalb eines Computerspeichers präsentiert. Diese Beschreibungen und Darstellungen sind von Datenverarbeitungsexperten verwendete Mittel, um das Wesentliche ihrer Arbeit anderen Fachleuten auf dem Gebiet zu vermitteln. Ein Algorithmus, so wie der Begriff hier verwendet wird und im Allgemeinen verstanden wird, wird als selbstkonsistente Sequenz von Schritten verstanden, die zu einem erwünschten Ergebnis führen. Die Schritte sind die, die eine physische Manipulierung der physischen Mengen erfordern. Normalerweise, aber nicht notwendigerweise, können solche Mengen die Form optischer, elektrischer oder magnetischer Signale annehmen, die gespeichert, übertragen, kombiniert, verglichen oder sonst manipuliert werden können. Es hat sich zuweilen bewährt, diese Signale hauptsächlich aus Gründen der gemeinsamen Verwendung, als Bits, Werte, Elemente, Symbole, Zeichen, Begriffe, Zahlen oder dergleichen zu bezeichnen.
  • Bei den obigen veranschaulichenden Ausführungsformen beinhaltet die Bezugnahme auf Handlungen und symbolische Darstellungen von Operationen (z. B. in Form von Flussdiagrammen), die als Programmmodule oder funktionale Prozesse implementiert werden können, Routinen, Programme, Objekte, Komponenten, Datenstrukturen usw., die bestimmte Aufgaben durchführen oder bestimmte abstrakte Datentypen implementieren, und sie können unter Verwendung bestehender Hardware an vorhandenen Strukturelementen beschrieben und/oder implementiert werden. Diese bestehende Hardware kann eine oder mehrere zentrale Recheneinheiten (CPUs), digitale Signalprozessoren (DSPs), anwendungsspezifische integrierte Schaltungen, feldprogrammierbare Gate-Arrays(FPGAs)-Computer oder dergleichen beinhalten.
  • Es sollte jedoch beachtet werden, dass alle diese und ähnliche Begriffe den entsprechenden physikalischen Mengen zugeordnet werden müssen und lediglich praktische Beschriftungen sind, die auf diese Mengen angewendet werden. Außer wenn spezifisch anders ausgesagt als aus der obigen Abhandlung ersichtlich, beziehen sich verwendete Begriffe, wie z. B. „verarbeitend” oder „berechnend” oder „bestimmend” oder „anzeigend” oder dergleichen, auf die Aktion und Prozesse eines Computersystems oder eines ähnlichen elektronischen Computergeräts beziehen, das Daten manipuliert und umwandelt, die als physikalische (elektronische) Mengen innerhalb der Computersystemspeicher oder -register oder anderer solcher Informationsspeicher-, Übertragungs- oder Anzeigegeräte dargestellt sind.
  • Es ist auch zu beachten, dass die softwareimplementierten Aspekte der exemplarischen Ausführungsformen normalerweise auf irgendeiner Form eines nicht flüchtigen Programmspeichermediums codiert oder über irgendeine Art von Übertragungsmedium implementiert werden. Das Programmspeichermedium kann magnetisch (z. B. eine Diskette oder ein Festplattenlaufwerk) oder optisch (z. B. eine CD-Nur-Lesespeicher oder „CD-ROM”) sein und kann als Nur-Lesen oder Zufallszugriff gestaltet sein. Auf gleiche Weise kann das Transmissionsmedium verdrillte Adernpaare, Koaxialkabel, Lichtwellenleiter oder ein anderes passendes, dem Fach bekanntes Transmissionsmedium sein. Die exemplarischen Ausführungsformen sind nicht auf diese Aspekte jeglicher beschriebener Implementierungen limitiert.
  • Exemplarische Ausführungsformen beschreiben Techniken für die Umwandlung sphärischer Bilder und Videos in 2D-Darstellungen und die Nutzung spezieller Eigenschaften der 2D-Darstellungen während der Codierung/Decodierung der Bilder und/oder Frames eines Videos.
  • In einem allgemeinen Aspekt kann ein Verfahren für das Codieren eines sphärischen Videos die Abbildung eines Frames des sphärischen Videos auf einer zweidimensionalen Darstellung auf Basis einer Projektion beinhalten. Des Weiteren kann das Verfahren in einem Prädiktionsprozess die Ermittlung beinhalten, ob sich mindestens ein Block, der einem Prädiktionsschema zugeordnet ist, an einer Grenze der zweidimensionalen Darstellung befindet, und, nach dem Ermitteln, dass sich der mindestens eine Block, der dem Prädiktionsschema zugeordnet ist, an der Grenze befindet, das Auswählen eines benachbarten Endblocks als ein Block einschließlich mindestens eines Pixels für die Verwendung während des Prädiktionsprozesses, wobei der benachbarte Endblock zwei oder mehr Grenzen der zweidimensionalen Darstellung zugeordnet ist.
  • Implementierungen können eines oder mehrere der folgenden Merkmale beinhalten. Der Prädiktionsprozess kann zum Beispiel ein Intraprädiktionsprozess sein, der mindestens eine Block, der dem Prädiktionsschema zugeordnet ist, kann ein zu codierender Block sein, und der benachbarte Endblock kann als ein linker rekonstruierter Block oder ein oberer rekonstruierter Block des zu codierenden Blocks ausgewählt werden. Der Prädiktionsprozess kann ein Interprädiktionsprozess sein und der mindestens eine Block, der dem Prädiktionsschema zugeordnet ist, kann ein Block sein, der in einer Vielzahl von Blöcken in einem Referenzframe enthalten ist, in dem nach einem übereinstimmenden Block gesucht werden soll. Der Prädiktionsprozess kann ein Interprädiktionsprozess sein und der mindestens eine Block, der dem Prädiktionsschema zugeordnet ist, kann als Prädiktionsblock aus einer Vielzahl von Blöcken in einem zu durchsuchenden Referenzframe ausgewählt werden, wobei die Vielzahl von Blöcken eine Grenze des Referenzframes queren.
  • Die Abbildung des Frames des sphärischen Videos auf der zweidimensionalen Darstellung kann zum Beispiel die Verwendung einer Gleichung beinhalten, die auf einer äquirektangulären Projektion basiert. Die Abbildung des Frames des sphärischen Videos auf der zweidimensionalen Darstellung kann die Verwendung einer Gleichung beinhalten, die auf einer semi-äquirektangulären Projektion basiert. Das Verfahren kann zum Beispiel des Weiteren nach dem Ermitteln, dass der zu codierende Block sich von der Grenze entfernt befindet, in einem Intraprädiktionsprozess das Auswählen eines benachbarten Blocks als Vorlage beinhalten, wobei der benachbarte Endblock mindestens ein linker rekonstruierter Block oder ein oberer rekonstruierter Block des zu codierenden Blocks ist. Die Auswahl des benachbarten Endblocks beinhaltet das Auswählen eines rekonstruierten Blocks aus mindestens einem entgegengesetzten Ende einer gleichen Reihe wie dem Block, der dem Prädiktionsschema zugeordnet ist, oder einem entgegengesetzten Ende derselben Spalte wie der zu codierende Block. Die Auswahl des benachbarten Endblocks beinhaltet das Auswählen eines rekonstruierten Blocks aus einer Lookup-Tabelle.
  • Das Verfahren kann zum Beispiel des Weiteren das Erzeugen mindestens eines Rests auf Basis nicht codierter Pixel eines zu codierenden Blocks beinhalten, das Codieren des mindestens einen Rests durch Anwendung einer Transformation auf einen restlichen Block einschließlich des mindestens einen Rests, das Quantisieren von Transformationskoeffizienten, die dem codierten mindestens einen Rest zugeordnet sind, das Entropiecodieren der quantisierten Transformationskoeffizienten als ein komprimierter Videobit-Datenstrom und das Übertragen des komprimierten Videobit-Datenstroms einschließlich eines Headers, der einen Intraframe-Codiermodus angibt, wobei der Intraframe-Codiermodus eine Technik angibt, die während der Abbildung des Frames des sphärischen Videos auf der zweidimensionalen Darstellung verwendet wird.
  • In einem allgemeinen Aspekt beinhaltet ein Verfahren für die Decodierung eines sphärischen Videos das Empfangen eines codierten Bit-Datenstroms einschließlich eines Headers, der einen Intraframe-Codiermodus angibt, wobei der Intraframe-Codiermodus eine Technik angibt, die während einer Umwandlung eines Frames eines sphärischen Videos in eine zweidimensionale Darstellung verwendet wird. Des Weiteren kann das Verfahren in einem Prädiktionsprozess die Ermittlung beinhalten, ob sich mindestens ein Block, der einem Prädiktionsschema zugeordnet ist, an einer Grenze der zweidimensionalen Darstellung befindet, nach dem Ermitteln, dass sich der mindestens eine Block, der dem Prädiktionsschema zugeordnet ist, an der Grenze befindet, das Auswählen eines benachbarten Endblocks als ein Block einschließlich mindestens eines Pixels für die Verwendung während des Prädiktionsprozesses, wobei der benachbarte Endblock zwei oder mehr Grenzen der zweidimensionalen Darstellung zugeordnet ist. Das Verfahren beinhaltet des Weiteren das Umwandeln der zweidimensionalen Darstellung in einen Frame des sphärischen Videos auf Basis einer zylindrischen Projektion.
  • Implementierungen können eines oder mehrere der folgenden Merkmale beinhalten. Das Umwandeln der zweidimensionalen Darstellung kann zum Beispiel die Abbildung der zweidimensionalen Darstellung auf einem sphärischen Bild mithilfe einer Gleichung beinhalten, die auf der inversen Transformation einer Projektion basiert. Der Prädiktionsprozess kann ein Intraprädiktionsprozess sein, der mindestens eine Block, der dem Prädiktionsschema zugeordnet ist, kann ein zu codierender Block sein, und der benachbarte Endblock kann als ein linker rekonstruierter Block oder ein oberer rekonstruierter Block ausgewählt werden. Der Prädiktionsprozess kann zum Beispiel ein Interprädiktionsprozess sein und der mindestens eine Block, der dem Prädiktionsschema zugeordnet ist, kann ein Block sein, der in einer Vielzahl von Blöcken in einem Referenzframe beinhaltet ist, in dem nach einem übereinstimmenden Block gesucht werden soll. Der Prädiktionsprozess kann ein Interprädiktionsprozess sein und der mindestens eine Block, der dem Prädiktionsschema zugeordnet ist, kann als Prädiktionsblock aus einer Vielzahl von Blöcken in einem zu durchsuchenden Referenzframe ausgewählt werden, wobei die Vielzahl von Blöcken eine Grenze des Referenzframes queren.
  • In einen allgemeinen Aspekt kann auf einem nicht flüchtigen, computerlesbaren Speichermedium computerlesbarer Programmcode gespeichert sein, der, wenn er auf einem Computersystem ausgeführt wird, das Computersystem veranlasst, Schritte einschließlich der Abbildung eines Frames des sphärischen Videos auf einer zweidimensionalen Darstellung auf Basis einer Projektion durchzuführen. Des Weiteren können die Schritte in einem Prädiktionsprozess die Ermittlung beinhalten, ob sich mindestens ein Block, der einem Prädiktionsschema zugeordnet ist, an einer Grenze der zweidimensionalen Darstellung befindet, und, nach dem Ermitteln, dass sich der mindestens eine Block, der dem Prädiktionsschema zugeordnet ist, an der Grenze befindet, das Auswählen eines benachbarten Endblocks als ein Block einschließlich mindestens eines Pixels für die Verwendung während des Prädiktionsprozesses, wobei der benachbarte Endblock zwei oder mehr Grenzen der zweidimensionalen Darstellung zugeordnet ist.
  • Implementierungen können eines oder mehrere der folgenden Merkmale beinhalten. Der Prädiktionsprozess kann zum Beispiel ein Intraprädiktionsprozess sein, der mindestens eine Block, der dem Prädiktionsschema zugeordnet ist, kann ein zu codierender Block sein, und der benachbarte Endblock kann als ein linker rekonstruierter Block oder ein oberer rekonstruierter Block des zu codierenden Blocks ausgewählt werden. Der Prädiktionsprozess kann zum Beispiel ein Interprädiktionsprozess sein und der mindestens eine Block, der dem Prädiktionsschema zugeordnet ist, kann ein Block sein, der in einer Vielzahl von Blöcken in einem Referenzframe beinhaltet ist, in dem nach einem übereinstimmenden Block gesucht werden soll. Der Prädiktionsprozess kann ein Interprädiktionsprozess sein und der mindestens eine Block, der dem Prädiktionsschema zugeordnet ist, kann als Prädiktionsblock aus einer Vielzahl von Blöcken in einem zu durchsuchenden Referenzframe ausgewählt werden, wobei die Vielzahl von Blöcken eine Grenze des Referenzframes queren. Die Auswahl des benachbarten Endblocks kann das Auswählen eines rekonstruierten Blocks aus mindestens einem entgegengesetzten Ende einer gleichen Reihe wie dem Block, der dem Prädiktionsschema zugeordnet ist, oder einem entgegengesetzten Ende derselben Spalte wie der zu codierende Block, beinhalten.
  • Exemplarische Ausführungsformen beschreiben Systeme und Verfahren zur Optimierung des Streamens sphärischer Videos (und/oder dreidimensionalen Videos) auf Basis sichtbarer (durch einen Betrachter eines Videos) Teile des sphärischen Videos.
  • In einem allgemeinen Aspekt beinhaltet ein Verfahren die Ermittlung einer Kachelposition in einem Frame eines sphärischen Videos auf Basis einer Ansichtsperspektive, das Auswählen eines ersten Teils des Frames des sphärischen Videos als erste zweidimensionale Kachel auf Basis der Kachelposition, das Auswählen einer Vielzahl von zweiten zweidimensionalen Kacheln aus einem zweiten Teil des Frames des sphärischen Videos, wobei der zweite Teil des Frames den ersten Teil des Frames umgibt und sich vom ersten Teil des Frames weg erstreckt, das Codieren der ersten zweidimensionalen Kachel mithilfe einer ersten Qualität, das Codieren der Vielzahl zweiter zweidimensionaler Kacheln mithilfe mindestens einer zweiten Qualität und das Übertragen eines Pakets als ein streamendes sphärisches Video, wobei das Paket die codierte erste zweidimensionale Kachel und die Vielzahl codierter zweiten zweidimensionalen Kacheln beinhaltet.
  • Implementierungen können eines oder mehrere der folgenden Merkmale beinhalten. Das Verfahren kann zum Beispiel des Weiteren die Abbildung des Frames des sphärischen Videos auf einer zweidimensionalen Darstellung auf Basis einer Projektion auf einer Fläche einer zweidimensionalen Form beinhalten. Die erste Qualität ist eine höhere Qualität im Vergleich zu der mindestens einen zweiten Qualität. Die Ansichtsperspektive basiert auf einem sichtbaren Teil des sphärischen Videos, wie von einem Betrachter während einer Wiedergabe des sphärischen Videos gesehen. Das Verfahren kann des Weiteren das Empfangen einer Angabe der Ansichtsperspektive von einem Gerät beinhalten, das eine Wiedergabe des sphärischen Videos ausführt. Das Paket beinhaltet des Weiteren einen Header und einen nachgeahmten Frame einschließlich Dummydaten an Datenorten des Frames, die nicht der codierten ersten zweidimensionalen Kachel und der Vielzahl codierter zweiten zweidimensionalen Kacheln zugeordnet sind. Die Vielzahl codierter zweidimensionaler Kacheln beinhaltet zwei oder mehr zweidimensionale Kacheln unterschiedlicher Größe und die zwei oder mehr zweidimensionalen Kacheln überlappen einander. Da sich die Vielzahl zweiter zweidimensionaler Kacheln vom ersten Teil des Frames weg erstreckt, beinhaltet die Vielzahl zweiter zweidimensionaler Kacheln eine dritte Kachel, die eine Dimension hat, die größer im Vergleich zu einer Dimension einer vierten Kachel ist, die sich näher bei der ersten Kachel befindet.
  • Die Vielzahl zweiter zweidimensionaler Kacheln beinhaltet Kacheln von unterschiedlichen Dimensionen und eine größere der Kacheln unterschiedlicher Dimensionen ist mit einer geringeren Qualität codiert im Vergleich zu einer kleineren der Kacheln unterschiedlicher Dimensionen. Das Codieren der ersten zweidimensionalen Kachel und der Vielzahl zweiter zweidimensionaler Kacheln kann das getrennte Codieren jeder Kachel beinhalten, wobei das Codieren das Erzeugen mindestens eines Rests für die zweidimensionale Kachel durch Subtrahieren einer Vorlage von nicht codierten Pixeln eines Blocks der zu codierenden zweidimensionalen Kachel beinhalten kann, wobei das Codieren des mindestens einen Rests durch Anwendung einer Transformation auf einen Restblock einschließlich des mindestens einen Rests, das Quantisieren von Transformationskoeffizienten, die dem codierten mindestens einen Rest zugeordnet sind, und das Entropiecodieren der quantisierten Transformationskoeffizienten als mindestens ein komprimiertes Videobit beinhaltet, wobei mindestens eine der Optionen – das Erzeugen des mindestens einen Rests, das Codieren des mindestens einen Rests, das Quantisieren der Transformationskoeffizienten und/oder das Quantisieren der Transformationskoeffizienten – das Einstellen des mindestens einen Parameters auf Basis der ersten Qualität beinhaltet.
  • In einem allgemeinen Aspekt beinhaltet ein Verfahren das Empfangen eines codierten Bitdatenstroms einschließlich einer Vielzahl codierter zweidimensionaler Kacheln, die aus einem Frame eines sphärischen Videos ausgewählt wurden, das Decodieren einer zweidimensionalen Darstellung auf Basis der Vielzahl codierter zweidimensionaler Kacheln, das Umwandeln der zweidimensionalen Darstellung in einen sphärisches Videoframe und das Wiedergeben des sphärischen Videos einschließlich des sphärischen Videoframes. Der sphärische Videoframe kann eine Kachel in höhere Qualität beinhalten, die einem Teil des sphärischen Videoframes in einer Ansichtsperspektive, wie von einem Betrachter gesehen, zugeordnet ist, im Vergleich zu einem Teil des sphärischen Videoframes in einer peripheren Ansicht oder außerhalb der Ansichtsperspektive während der Wiedergabe des sphärischen Videos.
  • Implementierungen können eines oder mehrere der folgenden Merkmale beinhalten. Das Verfahren kann zum Beispiel des Weiteren das Erzeugen der zweidimensionalen Darstellung auf Basis eines nachgeahmten Frames des sphärischen Videos einschließlich Dummydaten an Datenorten des Frames beinhalten, die nicht der Vielzahl codierter zweidimensionaler Kacheln zugeordnet sind. Das Umwandeln der zweidimensionalen Darstellung des sphärischen Videoframes beinhaltet die Abbildung der zweidimensionalen Darstellung des sphärischen Videoframes auf einem sphärischen Bild mithilfe einer Umkehr einer Technik, die zum Abbilden des sphärischen Videoframes auf der zweidimensionalen Darstellung des sphärischen Videoframes verwendet wurde. Das Verfahren kann des Weiteren zum Beispiel das Ermitteln beinhalten, dass sich die Ansichtsperspektive, wie von einem Betrachter gesehen, geändert hat, und nach dem Ermitteln, dass sich die Ansichtsperspektive geändert hat, das Auslösen einer Angabe der geänderten Ansichtsperspektive für ein Gerät, das eine Codierung des sphärischen Videos ausführt.
  • In einem allgemeinen Aspekt kann auf einem nicht flüchtigen, computerlesbaren Speichermedium computerlesbarer Programmcode gespeichert sein, der, wenn er auf einem Computersystem ausgeführt wird, das Computersystem veranlasst, Schritte einschließlich der Ermittlung einer Kachelposition in einem Frame eines sphärischen Videos auf Basis einer Ansichtsperspektive, das Auswählen eines ersten Teils des Frames des sphärischen Videos als erste zweidimensionale Kachel auf Basis der Kachelposition, das Auswählen einer Vielzahl von zweiten zweidimensionalen Kacheln aus einem zweiten Teil des Frames des sphärischen Videos, wobei der zweite Teil des Frames den ersten Teil des Frames umgibt und sich vom ersten Teil des Frames weg erstreckt, das Codieren der ersten zweidimensionalen Kachel mithilfe einer ersten Qualität, das Codieren der Vielzahl zweiter zweidimensionaler Kacheln mithilfe mindestens einer zweiten Qualität und das Übertragen eines Pakets als ein sphärisches Streaming-Video, wobei das Paket die codierte erste zweidimensionale Kachel und die Vielzahl codierter zweiten zweidimensionalen Kacheln beinhaltet.
  • Implementierungen können eines oder mehrere der folgenden Merkmale beinhalten. Die erste Qualität ist zum Beispiel eine höhere Qualität im Vergleich zur mindestens einen zweiten Qualität. Die Ansichtsperspektive basiert auf einem sichtbaren Teil des sphärischen Videos, wie von einem Betrachter während einer Wiedergabe des sphärischen Videos gesehen. Die Schritte können des Weiteren das Empfangen einer Angabe der Ansichtsperspektive von einem Gerät beinhalten, das eine Wiedergabe des sphärischen Videos ausführt. Die Vielzahl codierter zweidimensionaler Kacheln beinhaltet zwei oder mehr zweidimensionale Kacheln unterschiedlicher Größe und die zwei oder mehr zweidimensionalen Kacheln überlappen einander. Da sich die Vielzahl zweiter zweidimensionaler Kacheln vom ersten Teil des Frames weg erstreckt, beinhaltet die Vielzahl zweiter zweidimensionaler Kacheln eine dritte Kachel, die eine Dimension hat, die größer im Vergleich zu einer Dimension einer vierten Kachel ist, die sich näher bei der ersten Kachel befindet.
  • Exemplarische Ausführungsformen beschreiben Systeme und Verfahren zur Optimierung des Streamens sphärischer Videos (und/oder dreidimensionalen Videos) auf Basis sichtbarer (durch einen Betrachter eines Videos) Teile des sphärischen Videos.
  • In einem allgemeinen Aspekt beinhaltet ein Verfahren die Ermittlung einer Kachelposition in einem Frame eines sphärischen Videos auf Basis einer Ansichtsperspektive, das Auswählen eines Teils des Frames des sphärischen Videos als eine zweidimensionale Kachel auf Basis der Kachelposition, das Codieren der zweidimensionalen Kachel mit einer ersten Qualität, die Abbildung des Frames des sphärischen Videos auf einer zweidimensionalen Darstellung des sphärischen Videos auf Basis eines zweidimensionalen Projektionsalgorithmus und das Codieren der zweidimensionalen Darstellung des sphärischen Videos mit einer zweiten Qualität.
  • Implementierungen können eines oder mehrere der folgenden Merkmale beinhalten. Das Verfahren kann das Weiteren das Übertragen der codierten zweidimensionalen Kachel und der codierten zweidimensionalen Darstellung als sphärisches Streaming-Video beinhalten. Die erste Qualität ist eine höhere Qualität im Vergleich zur zweiten Qualität. Die Ansichtsperspektive kann auf einem sichtbaren Teil des sphärischen Videos basieren, wie von einem Betrachter während einer Wiedergabe des sphärischen Videos gesehen. Das Verfahren kann des Weiteren das Empfangen einer Angabe der Ansichtsperspektive von einem Gerät beinhalten, das eine Wiedergabe des sphärischen Videos ausführt. Das Verfahren kann des Weiteren das Übertragen der codierten zweidimensionalen Kachel über einen ersten Zeitraum, während das sphärische Video übertragen wird, und das Übertragen der codierten zweidimensionalen Kachel und der codierten zweidimensionalen Darstellung über einen ersten Zeitraum, während das sphärische Video gestreamt wird, beinhalten.
  • Das Auswählen des Teils des Frames des sphärischen Videos als zweidimensionale Kachel und das Codieren der zweidimensionalen Kachel können zum Beispiel das Auswählen der zweidimensionalen Kachel aus einem Datenspeicher früher codierter Kacheln und das Lesen der zweidimensionalen Kachel aus dem Datenspeicher beinhalten. Das Auswählen des Teils des Frames des sphärischen Videos als zweidimensionale Kachel kann das Auswählen der zweidimensionalen Kachel aus dem Frame des sphärischen Videos als zu codierendes Frame auf Basis einer Position des sphärischen Videos beinhalten, wobei die Position auf dem sphärischen Video auf der Ansichtsperspektive basiert. Das Codieren der zweidimensionalen Kachel kann das Erzeugen mindestens eines Rests für die zweidimensionale Kachel durch Subtrahieren einer Vorlage von nicht codierten Pixeln eines Blocks der zu codierenden zweidimensionalen Kachel beinhalten, das Codieren des mindestens einen Rests durch Anwendung einer Transformation auf einen Restblock einschließlich des mindestens einen Rests, das Quantisieren von Transformationskoeffizienten, die mit dem codierten mindestens eines Rests verbunden sind, und das Entropiecodieren der quantisierten Transformationskoeffizienten als mindestens ein komprimiertes Videobit, wobei mindestens die Erzeugung des mindestens einen Rests, das Codieren des mindestens einen Rests, das Quantisieren der Transformationskoeffizienten und/oder das Quantisieren der Transformationskoeffizienten die Einstellung mindestens eines Parameters auf Basis der ersten Qualität beinhaltet.
  • Das Codieren der zweidimensionalen Darstellung des sphärischen Videos kann das Erzeugen mindestens eines Rests für die zweidimensionale Darstellung des sphärischen Videos durch Subtrahieren einer Vorlage von nicht codierten Pixeln eines Blocks der zu codierenden zweidimensionalen Darstellung des sphärischen Videos beinhalten, das Codieren des mindestens einen Rests durch Anwendung einer Transformation auf einen Restblock einschließlich des mindestens einen Rests, das Quantisieren von Transformationskoeffizienten, die dem codierten mindestens einen Rest zugeordnet sind, und das Entropiecodieren der quantisierten Transformationskoeffizienten als mindestens ein komprimiertes Videobit, wobei mindestens die Erzeugung des mindestens einen Rests, das Codieren des mindestens einen Rests, das Quantisieren der Transformationskoeffizienten und/oder das Quantisieren der Transformationskoeffizienten die Einstellung mindestens eines Parameters auf Basis der ersten Qualität beinhaltet.
  • In einem allgemeinen Aspekt beinhaltet ein Verfahren das Empfangen eines codierten Bitdatenstroms einschließlich einer codierten zweidimensionalen Darstellung eines sphärischen Videoframes und einer codierten zweidimensionalen Kachel, die aus dem sphärischen Videoframe ausgewählt wurde, das Decodieren der zweidimensionalen Kachel, das Decodieren der zweidimensionalen Darstellung des sphärischen Videoframes, das Umwandeln der zweidimensionalen Darstellung des sphärischen Videoframes und das Ersetzen entsprechender Blöcke des sphärischen Videoframes durch die decodierte zweidimensionale Kachel.
  • Implementierungen können eines oder mehrere der folgenden Merkmale beinhalten. Das Empfangen des codierten Bitdatenstroms beinhaltet das Empfangen eines Headers, der eine Technik angibt, die während einer Umwandlung des Frames des sphärischen Videos in die zweidimensionale Darstellung des sphärischen Videoframes verwendet wurde. Das Ersetzen der entsprechenden Blöcke des sphärischen Videoframes durch die decodierte zweidimensionale Kachel beinhaltet einen Ersetzung Pixel für Pixel oder Block für Block von Pixeln oder Blöcken im decodierten und umgewandelten sphärischen Videoframe durch Pixel oder Blöcke der decodierten zweidimensionalen Kachel.
  • Das Umwandeln der zweidimensionalen Darstellung des sphärischen Videoframes beinhaltet zum Beispiel die Abbildung der zweidimensionalen Darstellung des sphärischen Videoframes auf einem sphärischen Bild mithilfe einer Umkehr einer Technik, die zum Abbilden des sphärischen Videoframes auf der zweidimensionalen Darstellung des sphärischen Videoframes verwendet wurde. Das Verfahren kann des Weiteren zum Beispiel das Erzeugen eines sphärischen Videodatenstroms auf Basis mindestens eines sphärischen Videoframes einschließlich der ersetzten zweidimensionalen Kachel während der Wiedergabe des sphärischen Videodatenstroms beinhalten, wobei ein sichtbarer Teil des sphärischen Videodatenstroms von höherer Qualität ist als ein nicht sichtbarer Teil des sphärischen Videodatenstroms.
  • In einem allgemeinen Aspekt kann auf einem nicht flüchtigen, computerlesbaren Speichermedium computerlesbarer Programmcode gespeichert sein, der, wenn er auf einem Computersystem ausgeführt wird, das Computersystem veranlasst, Schritte einschließlich der Ermittlung einer Kachelposition in einem Frame eines sphärischen Videos auf Basis einer Ansichtsperspektive, das Auswählen eines Teils des Frames des sphärischen Videos als eine zweidimensionale Kachel auf Basis der Kachelposition, das Codieren der zweidimensionalen Kachel mit einer ersten Qualität, die Abbildung des Frames des sphärischen Videos auf einer zweidimensionalen Darstellung des sphärischen Videos auf Basis eines zweidimensionalen Projektionsalgorithmus und das Codieren der zweidimensionalen Darstellung des sphärischen Videos mit einer zweiten Qualität, durchzuführen.
  • Implementierungen können eines oder mehrere der folgenden Merkmale beinhalten. Die Schritte können des Weiteren das Empfangen einer Angabe der Ansichtsperspektive von einem Gerät beinhalten, das eine Wiedergabe des sphärischen Videos ausführt, wobei die Ansichtsperspektive auf einem sichtbaren Teil des sphärischen Videos basiert, wie von einem Betrachter während der Wiedergabe des sphärischen Videos gesehen. Die erste Qualität ist eine höhere Qualität im Vergleich zur zweiten Qualität. Das Auswählen des Teils des Frames des sphärischen Videos als zweidimensionale Kachel und das Codieren der zweidimensionalen Kachel kann das Auswählen der zweidimensionalen Kachel aus einem Datenspeicher früher codierter Kacheln und das Lesen der zweidimensionalen Kachel aus der zweidimensionalen Kachel aus dem Datenspeicher beinhalten. Das Auswählen des Teils des Frames des sphärischen Videos als zweidimensionale Kachel kann das Auswählen der zweidimensionalen Kachel aus dem Frame des sphärischen Videos als zu codierendes Frame auf Basis einer Position des sphärischen Videos beinhalten, wobei die Position auf dem sphärischen Video auf der Ansichtsperspektive basiert.
  • Exemplarische Ausführungsformen beschreiben Techniken für die Umwandlung sphärischer Bilder und Videos in 2D-Darstellungen und die Nutzung spezieller Eigenschaften der 2D-Darstellungen während der Codierung/Decodierung der Bilder und/oder Frames eines Videos.
  • In einem allgemeinen Aspekt kann ein Verfahren für das Codieren eines sphärischen Videos die Abbildung eines Frames des sphärischen Videos auf einer ersten zweidimensionalen Darstellung auf Basis einer Projektion sphärisch zu quadratisch beinhalten, wobei die erste zweidimensionale Darstellung ein Quadrat ist, die Abbildung der ersten zweidimensionalen Darstellung auf einer zweiten zweidimensionalen Darstellung, die ein Rechteck ist, und das Codieren der zweiten zweidimensionalen Darstellung als codierter Bitdatenstrom.
  • Implementierungen können eines oder mehrere der folgenden Merkmale beinhalten. Die Projektion sphärisch zu quadratisch kann zum Beispiel eine Quincunx-Projektion nach Pierce sein. Während eines Intraprädiktionsprozesses kann das Verfahren das Ermitteln beinhalten, ob sich ein zu codierender Block an einer Grenze der zweiten zweidimensionalen Darstellung befindet, und nach dem Ermitteln, dass sich der zu codierende Block an der Grenze befindet, einen benachbarten Endblock als eine Vorlage auswählen, wobei der benachbarte Endblock ein anderer als ein linker rekonstruierter Block oder ein oberer rekonstruierter Block des zu codierenden Blocks ist. Das Verfahren kann des Weiteren das Ermitteln beinhalten, ob sich ein zu deblockierender Block an einer Grenze der zweidimensionalen Darstellung befindet, und nach dem Ermitteln, dass sich der zu deblockierende Block an der Grenze befindet, einen benachbarten Endblock als einen Vergleichsblock auswählen, wobei der benachbarte Endblock ein anderer als ein linker rekonstruierter Block oder ein oberer rekonstruierter Block des zu deblockierenden Blocks ist.
  • Die zweite zweidimensionale Darstellung wird zum Beispiel von zwei Quadraten mit gleichen Längenseiten gebildet, und den zwei Quadraten, die aus der ersten zweidimensionalen Darstellung erzeugt werden. Die Abbildung der ersten zweidimensionalen Darstellung auf der zweiten zweidimensionalen Darstellung kann die Ermittlung eines ersten Quadrats mit Ecken beinhalten, die jede Seite der ersten zweidimensionalen Darstellung abstandsgleich von den Ecken der ersten zweidimensionalen Darstellung schneiden, die Ermittlung von vier Dreiecken, von denen eine Seite eine andere Seite des Innenkreises des Frames des sphärischen Videos berührt, das Erzeugen eines zweiten Quadrats auf Basis der vier Dreiecke und das Erzeugen der zweiten zweidimensionalen Darstellung auf Basis des ersten Quadrats und des zweiten Quadrats. Das Verfahren kann des Weiteren das Erzeugen einer Lookup-Tabelle beinhalten, die eine Position von mindestens einem entsprechenden benachbarten Endblock angibt.
  • Das Codieren der zweiten zweidimensionalen Darstellung kann zum Beispiel das Erzeugen mindestens eines Rests durch Subtrahieren einer Vorlage von nicht codierten Pixeln des zu codierenden Blocks beinhalten, das Codieren des mindestens einen Rests durch Anwenden einer Transformation auf den Restblock einschließlich des mindestens einen Rests, das Quantisieren von Transformationskoeffizienten, die dem mindestens einen Rest zugeordnet sind, das Entropiecodieren der quantisierten Transformationskoeffizienten als komprimierten Videobit-Datenstrom und das Übertragen des komprimierten Videobit-Datenstroms einschließlich eines Headers, der einen Intraframe-Codiermodus angibt, wobei der Intraframe-Codiermodus eine Technik angibt, die während der Abbildung des Frames des sphärischen Videos auf der zweidimensionalen Darstellung verwendet wird.
  • In einem allgemeinen Aspekt kann ein Verfahren für das Decodieren eines sphärischen Videos das Empfangen eines codierten Bitdatenstroms einschließlich eines Headers beinhalten, der eine Projektionstechnik angibt, die während der Umwandlung eines Frames eines sphärischen Videos in eine erste zweidimensionale Darstellung verwendet wird, des Decodieren der ersten zweidimensionalen Darstellung, die Abbildung der ersten zweidimensionalen Darstellung auf einer zweiten zweidimensionalen Darstellung, wobei die erste zweidimensionale Darstellung ein Rechteck und die zweite zweidimensionale Darstellung ein Quadrat ist, und die Abbildung der zweiten zweidimensionalen Darstellung auf einem Frame des sphärischen Videos auf Basis einer Projektion sphärisch zu quadratisch.
  • Implementierungen können eines oder mehrere der folgenden Merkmale beinhalten. Die Projektion sphärisch zu quadratisch ist zum Beispiel eine Quincunx-Projektion nach Pierce. Während eines Intraprädiktionsprozesses kann das Verfahren des Weiteren die Ermittlung beinhalten, ob sich ein zu decodierender Block an einer Grenze der ersten zweidimensionalen Darstellung befindet, und nach dem Ermitteln, dass sich der zu decodierende Block an der Grenze befindet, einen benachbarten Endblock als eine Vorlage auswählen, wobei der benachbarte Endblock ein anderer als ein linker rekonstruierter Block oder ein oberer rekonstruierter Block des zu codierenden Blocks ist.
  • Das Verfahren kann des Weiteren zum Beispiel das Ermitteln beinhalten, ob sich ein zu deblockierender Block an einer Grenze der zweidimensionalen Darstellung befindet, und nach dem Ermitteln, dass sich der zu deblockierende Block an der Grenze befindet, einen benachbarten Endblock als einen Vergleichsblock auswählen, wobei der benachbarte Endblock ein anderer als ein linker rekonstruierter Block oder ein oberer rekonstruierter Block des zu deblockierenden Blocks ist. Die erste zweidimensionale Darstellung wird durch zwei Quadrate mit gleichen Längsseiten gebildet. Die Abbildung der ersten zweidimensionalen Darstellung auf der zweiten zweidimensionalen Darstellung kann das Erzeugen eines ersten Quadrats und eines zweiten Quadrats auf Basis der ersten zweidimensionalen Darstellung beinhalten, die Ermittlung von vier Dreiecken aus dem zweiten Quadrat, wobei jedes der Dreiecke eine Seite des zweiten Quadrats hat, und die Neupositionierung von drei der vier Dreiecke, um ein drittes Quadrat als zweite zweidimensionale Darstellung zu bilden.
  • Das Verfahren kann des Weiteren das Erzeugen einer Lookup-Tabelle beinhalten, die eine Position von mindestens einem entsprechenden benachbarten Endblock angibt. Das Decodieren der ersten zweidimensionalen Darstellung kann das Entropie decodieren des codierten Bitdatenstroms beinhalten, um quantisierte codierte Transformationskoeffizienten zu erzeugen, das Dequantisieren der quantisierten codierten Transformationskoeffizienten, um codierte Transformationskoeffizienten zu erzeugen, das Anwenden einer Transformation auf die codierten Transformationskoeffizienten, um mindestens einen rekonstruierten Prädiktionsrest zu erzeugen, und das Hinzufügen des mindestens einen rekonstruierten Prädiktionsrests zu einem Prädiktionsblock, der mit der passenden Vorlage verbunden ist, um einen Pixelblock zu rekonstruieren.
  • In einem allgemeinen Aspekt kann auf einem nicht flüchtigen, computerlesbaren Speichermedium computerlesbarer Programmcode gespeichert sein, der, wenn er auf einem Computersystem ausgeführt wird, das Computersystem veranlasst, Schritte einschließlich der der Abbildung eines Frames eines sphärischen Videos auf einer ersten zweidimensionalen Darstellung auf Basis einer Projektion sphärisch zu quadratisch durchzuführen, wobei die erste zweidimensionale Darstellung ein Quadrat ist, die Zuordnung der der ersten zweidimensionalen Darstellung auf einer zweiten zweidimensionalen Darstellung, wobei die zweite zweidimensionale Darstellung ein Rechteck ist, und das Codieren der zweiten zweidimensionalen Darstellung als codierter Bitdatenstrom.
  • Implementierungen können eines oder mehrere der folgenden Merkmale beinhalten. Während eines Intraprädiktionsprozesses können die Schritte des Weiteren das Ermitteln beinhalten, ob sich ein zu codierender Block an einer Grenze der zweiten zweidimensionalen Darstellung befindet, und nach dem Ermitteln, dass sich der zu codierende Block an der Grenze befindet, einen benachbarten Endblock als eine Vorlage auswählen, wobei der benachbarte Endblock ein anderer als ein linker rekonstruierter Block oder ein oberer rekonstruierter Block des zu codierenden Blocks ist. Die Schritte können des Weiteren die Ermittlung beinhalten, ob sich ein zu deblockierender Block an einer Grenze der zweidimensionalen Darstellung befindet, und nach dem Ermitteln, dass sich der zu deblockierende Block an der Grenze befindet, einen benachbarten Endblock als einen Vergleichsblock auswählen, wobei der benachbarte Endblock ein anderer als ein linker rekonstruierter Block oder ein oberer rekonstruierter Block des zu deblockierenden Blocks ist.
  • Die Abbildung der ersten zweidimensionalen Darstellung auf der zweiten zweidimensionalen Darstellung kann die Ermittlung eines ersten Quadrats mit Ecken beinhalten, die jede Seite der ersten zweidimensionalen Darstellung abstandsgleich von den Ecken der ersten zweidimensionalen Darstellung schneiden, die Ermittlung von vier Dreiecken, von denen eine Seite eine andere Seite des Innenkreises des Frames des sphärischen Videos berührt, das Erzeugen eines zweiten Quadrats auf Basis der vier Dreiecke und das Erzeugen der zweiten zweidimensionalen Darstellung auf Basis des ersten Quadrats und des zweiten Quadrats.
  • Obwohl die beigefügten Ansprüche spezielle Kombinationen von Merkmalen darstellen, die hierin beschrieben sind, ist der Umfang der vorliegenden Offenbarung nicht auf die speziellen Kombinationen beschränkt, die hierin nachstehend beansprucht werden, sondern umfasst stattdessen eine beliebige Kombination von Merkmalen oder Ausführungsformen, die hierin offenbart sind, unabhängig davon, ob diese spezielle Kombination in den beigefügten Ansprüchen zu diesem Zeitpunkt speziell aufgezählt worden ist.

Claims (20)

  1. Verfahren zum Codieren eines sphärischen Videos, das Verfahren umfassend: das Abbilden eines Frames des sphärischen Videos auf einer zweidimensionalen Darstellung auf Basis einer Projektion; das Durchführen eines Prädiktionsprozesses, beinhaltend: das Ermitteln, ob sich mindestens ein Block, der einem Prädiktionsschema zugeordnet ist, an einer Grenze der zweidimensionalen Darstellung befindet, und das Auswählen, nach dem Ermitteln, dass sich der mindestens eine Block, der dem Prädiktionsschema zugeordnet ist, an der Grenze befindet, eines benachbarten Endblocks als ein Block einschließlich mindestens eines Pixels für die Verwendung während des Prädiktionsprozesses, wobei der benachbarte Endblock zwei oder mehr Grenzen der zweidimensionalen Darstellung zugeordnet ist.
  2. Verfahren nach Anspruch 1, wobei der Prädiktionsprozess ein Intraprädiktionsprozess ist, der mindestens eine Block, der dem Prädiktionsschema zugeordnet ist, ein zu codierender Block ist, und der benachbarte Block als ein linker rekonstruierter Block oder ein oberer rekonstruierter Block des zu codierenden Blocks ausgewählt ist.
  3. Verfahren nach irgendeinem der Ansprüche 1 bis 2, wobei der Prädiktionsprozess ein Interprädiktionsprozess ist, und der mindestens eine Block, der dem Prädiktionsschema zugeordnet ist, als Prädiktionsblock aus einer Vielzahl von Blöcken in einem zu durchsuchenden Referenzframe ausgewählt ist, wobei die Vielzahl von Blöcken eine Grenze des Referenzframes queren.
  4. Verfahren nach irgendeinem der Ansprüche 1 bis 3, wobei die Abbildung des Frames des sphärischen Videos auf der zweidimensionalen Darstellung zum Beispiel die Verwendung einer Gleichung beinhaltet, die auf einer äquirektangulären Projektion basiert.
  5. Verfahren nach irgendeinem der Ansprüche 1 bis 4, wobei die Abbildung des Frames des sphärischen Videos auf der zweidimensionalen Darstellung Folgendes beinhaltet: das Abbilden eines Frames eines sphärischen Videos auf einer ersten zweidimensionalen Darstellung auf Basis einer Projektion sphärisch zu quadratisch, wobei die erste zweidimensionale Darstellung ein Quadrat ist, das Abbilden der ersten zweidimensionalen Darstellung auf einer zweiten zweidimensionalen Darstellung, wobei die zweite zweidimensionale Darstellung ein Rechteck ist.
  6. Verfahren nach Anspruch 5, wobei die Projektion sphärisch zu quadratisch eine Quincunx-Projektion nach Pierce ist.
  7. Verfahren nach irgendeinem der Ansprüche 1 bis 6, des Weiteren umfassend: das Auswählen, nach dem Ermitteln, dass sich der zu codierende Block von der Grenze entfernt befindet, in einem Intraprädiktionsprozess, eines benachbarten Blocks als Vorlage, wobei der benachbarte Endblock mindestens ein linker rekonstruierter Block oder ein oberer rekonstruierter Block des zu codierenden Blocks ist.
  8. Verfahren nach irgendeinem der Ansprüche 1 bis 7, wobei das Auswählen des benachbarten Endblocks das Auswählen eines rekonstruierten Blocks aus mindestens einem entgegengesetzten Ende einer gleichen Reihe wie dem Block, der dem Prädiktionsschema zugeordnet ist, oder einem entgegengesetzten Ende derselben Spalte wie der zu codierende Block, beinhaltet.
  9. Verfahren nach irgendeinem der Ansprüche 1 bis 8, wobei die Auswahl des benachbarten Endblocks das Auswählen eines rekonstruierten Blocks aus einer Nachschlagetabelle beinhaltet.
  10. Verfahren nach irgendeinem der Ansprüche 1 bis 9, des Weiteren umfassend: das Erzeugen mindestens eines Rests, der auf nicht codierten Pixeln eines zu codierenden Blocks basiert; das Codieren des mindestens einen Rests durch Anwenden einer Transformation auf einen Restblock einschließlich des mindestens einen Rests; das Quantisieren von Transformationskoeffizienten, die dem codierten mindestens einen Rest zugeordnet sind; das Entropiecodieren der quantisierten Transformationskoeffizienten als komprimierter Videobit-Datenstrom; und das Übertragen des komprimierten Videobit-Datenstroms einschließlich eines Headers, der einen Intraframe-Codiermodus angibt, wobei der Intraframe-Codiermodus eine Technik angibt, die während der Abbildung des Frames des sphärischen Videos auf der zweidimensionalen Darstellung verwendet wird.
  11. Verfahren für die Decodierung eines sphärischen Videos, das Verfahren umfassend: das Empfangen eines codierten Bitdatenstroms einschließlich eines Headers, der einen Intraframe-Codiermodus angibt, wobei der Intraframe-Codiermodus eine Technik angibt, die während einer Umwandlung eines Frames eines sphärischen Videos zu einer zweidimensionalen Darstellung verwendet wird; das Durchführen eines Prädiktionsprozesses beinhaltend: das Ermitteln, ob sich mindestens ein Block, der einem Prädiktionsschema zugeordnet ist, einer Grenze der zweidimensionalen Darstellung befindet; das Auswählen, nach dem Ermitteln, dass sich der mindestens ein Block, der dem Prädiktionsschema zugeordnet ist, an der Grenze befindet, eines benachbarten Endblocks als ein Block einschließlich mindestens eines Pixels für die Verwendung während des Prädiktionsprozesses, wobei der benachbarte Endblock mit zwei oder mehr Grenzen der zweidimensionalen Darstellung zugeordnet ist; und das Umwandeln der zweidimensionalen Darstellung in einen Frame des sphärischen Videos auf Basis einer zylindrischen Projektion.
  12. Verfahren nach Anspruch 11, wobei das Umwandeln der zweidimensionalen Darstellung das Abbilden der zweidimensionalen Darstellung auf einem sphärischen Bild mithilfe einer Gleichung beinhaltet, die auf der inversen Transformation einer Projektion basiert.
  13. Verfahren nach irgendeinem der Ansprüche 11 bis 12, wobei der Prädiktionsprozess ein Intraprädiktionsprozess ist, der mindestens eine Block, der dem Prädiktionsschema zugeordnet ist, ein zu codierender Block ist, und der benachbarte Block als ein linker rekonstruierter Block oder ein oberer rekonstruierter Block ausgewählt ist.
  14. Verfahren nach irgendeinem der Ansprüche 11 bis 13, wobei der Prädiktionsprozess ein Interprädiktionsprozess ist, und der mindestens eine Block, der dem Prädiktionsschema zugeordnet ist, ein Block ist, der in einer Vielzahl von Blöcken in einem Referenzframe enthalten ist, in dem nach einem übereinstimmenden Block gesucht werden soll.
  15. Verfahren nach irgendeinem der Ansprüche 11 bis 14, wobei der Prädiktionsprozess ein Interprädiktionsprozess ist, und der mindestens eine Block, der dem Prädiktionsschema zugeordnet ist, als Prädiktionsblock aus einer Vielzahl von Blöcken in einem zu durchsuchenden Referenzframe ausgewählt ist, wobei die Vielzahl von Blöcken eine Grenze des Referenzframes queren.
  16. Nicht-flüchtiges computerlesbares Speichermedium, auf welchem ein computerausführbarer Programmiercode gespeichert ist, und welches das Computersystem dazu veranlasst, wenn es auf dem Computersystem ausgeführt wird, die folgenden Schritte auszuführen: das Abbilden eines Frames des sphärischen Videos auf einer zweidimensionalen Darstellung auf Basis einer Projektion; das Durchführen eines Prädiktionsprozesses, beinhaltend: das Ermitteln, ob sich mindestens ein Block, der einem Prädiktionsschema zugeordnet ist, an einer Grenze der zweidimensionalen Darstellung befindet, und das Auswählen, nach dem Ermitteln, dass sich der mindestens eine Block, der dem Prädiktionsschema zugeordnet ist, an der Grenze befindet, eines benachbarten Endblocks als ein Block einschließlich mindestens eines Pixels für die Verwendung während des Prädiktionsprozesses, wobei der benachbarte Endblock zwei oder mehr Grenzen der zweidimensionalen Darstellung zugeordnet ist.
  17. Nicht-flüchtiges computerlesbares Medium nach Anspruch 16, wobei der Prädiktionsprozess ein Intraprädiktionsprozess ist, der mindestens eine Block, der dem Prädiktionsschema zugeordnet ist, ein zu codierender Block ist, und der benachbarte Block als ein linker rekonstruierter Block oder ein oberer rekonstruierter Block des zu codierenden Blocks ausgewählt ist.
  18. Nicht-flüchtiges computerlesbares Medium nach irgendeinem der Ansprüche 16 bis 17, wobei der Prädiktionsprozess ein Interprädiktionsprozess ist, und der mindestens eine Block, der dem Prädiktionsschema zugeordnet ist, ein Block ist, der in einer Vielzahl von Blöcken in einem Referenzframe enthalten ist, in dem nach einem übereinstimmenden Block gesucht werden soll.
  19. Nicht-flüchtiges computerlesbares Medium nach irgendeinem der Ansprüche 16 bis 18, wobei der Prädiktionsprozess ein Interprädiktionsprozess ist, und der mindestens eine Block, der dem Prädiktionsschema zugeordnet ist, als Prädiktionsblock aus einer Vielzahl von Blöcken in einem zu durchsuchenden Referenzframe ausgewählt ist, wobei die Vielzahl von Blöcken eine Grenze des Referenzframes queren.
  20. Nicht-flüchtiges computerlesbares Speichermedium nach irgendeinem der Ansprüche 16 bis 19, wobei das Auswählen des benachbarten Endblocks das Auswählen eines rekonstruierten Blocks aus mindestens einem entgegengesetzten Ende einer gleichen Reihe wie dem Block, der dem Prädiktionsschema zugeordnet ist, oder einem entgegengesetzten Ende derselben Spalte wie der zu codierende Block, beinhaltet.
DE112015004764.6T 2014-10-20 2015-10-20 Kontinuierlicher prädiktionsbereich Pending DE112015004764T5 (de)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US14/518,956 2014-10-20
US14/518,956 US9918082B2 (en) 2014-10-20 2014-10-20 Continuous prediction domain
US14/519,006 US9918094B2 (en) 2014-10-20 2014-10-20 Compressing and representing multi-view video
US14/519,006 2014-10-20
US14/518,710 2014-10-20
US14/518,779 US20160112713A1 (en) 2014-10-20 2014-10-20 Mapping spherical image to 2d representations
US14/518,710 US9917877B2 (en) 2014-10-20 2014-10-20 Streaming the visible parts of a spherical video
US14/518,779 2014-10-20
PCT/US2015/056442 WO2016064862A1 (en) 2014-10-20 2015-10-20 Continuous prediction domain

Publications (1)

Publication Number Publication Date
DE112015004764T5 true DE112015004764T5 (de) 2017-10-19

Family

ID=55761417

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112015004764.6T Pending DE112015004764T5 (de) 2014-10-20 2015-10-20 Kontinuierlicher prädiktionsbereich

Country Status (5)

Country Link
EP (2) EP3813374A1 (de)
CN (2) CN112218074A (de)
DE (1) DE112015004764T5 (de)
GB (1) GB2545999A (de)
WO (1) WO2016064862A1 (de)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9918094B2 (en) 2014-10-20 2018-03-13 Google Llc Compressing and representing multi-view video
US9918082B2 (en) 2014-10-20 2018-03-13 Google Llc Continuous prediction domain
US9917877B2 (en) 2014-10-20 2018-03-13 Google Llc Streaming the visible parts of a spherical video
US20170214937A1 (en) * 2016-01-22 2017-07-27 Mediatek Inc. Apparatus of Inter Prediction for Spherical Images and Cubic Images
FI20165547A (fi) 2016-06-30 2017-12-31 Nokia Technologies Oy Laitteisto, menetelmä ja tietokoneohjelma videokoodausta ja videokoodauksen purkua varten
US10375371B2 (en) * 2016-07-15 2019-08-06 Mediatek Inc. Method and apparatus for filtering 360-degree video boundaries
KR102273199B1 (ko) * 2016-08-23 2021-07-02 에스지 디제이아이 테크놀러지 코., 엘티디 곡선 뷰 비디오 인코딩/디코딩에서 효율성 향상을 위한 시스템 및 방법
JP2019530311A (ja) 2016-09-02 2019-10-17 ヴィド スケール インコーポレイテッド 360度ビデオ情報をシグナリングするための方法およびシステム
WO2018059500A1 (zh) * 2016-09-30 2018-04-05 华为技术有限公司 运动补偿预测方法和设备
EP3301931A1 (de) * 2016-09-30 2018-04-04 Thomson Licensing Verfahren und vorrichtung zur omnidirektionalen videocodierung mit adaptiver intraprädiktion
CN107888928B (zh) 2016-09-30 2020-02-14 华为技术有限公司 运动补偿预测方法和设备
CN108111851B (zh) * 2016-11-25 2020-12-22 华为技术有限公司 一种去块滤波方法及终端
CN108235031B (zh) 2016-12-15 2019-11-05 华为技术有限公司 一种运动矢量解码方法及解码器
US20180192074A1 (en) * 2017-01-03 2018-07-05 Mediatek Inc. Video processing method for processing projection-based frame with 360-degree content represented by projection faces packed in 360-degree virtual reality projection layout
US20190379914A1 (en) * 2017-01-31 2019-12-12 Sharp Kabushiki Kaisha Systems and methods for partitioning a picture into video blocks for video coding
US10728494B2 (en) 2017-02-20 2020-07-28 Disney Enterprises, Inc. Differential transformation of video
WO2018156243A1 (en) * 2017-02-22 2018-08-30 Twitter, Inc. Transcoding video
CN107071445A (zh) * 2017-04-10 2017-08-18 上海国茂数字技术有限公司 一种全景视频帧内预测编码方法及装置
EP3610649A1 (de) * 2017-04-11 2020-02-19 VID SCALE, Inc. Codierung von 360-grad-video unter verwendung von gesichtskontinuitäten
US20190387212A1 (en) * 2017-05-26 2019-12-19 Lg Electronics Inc. 360 video processing method and apparatus therefor
GB2563944B (en) * 2017-06-30 2021-11-03 Canon Kk 360-Degree video encoding with block-based extension of the boundary of projected parts
US10798417B2 (en) 2017-07-05 2020-10-06 Qualcomm Incorporated Deblock filtering for 360-degree video coding
WO2019009750A1 (en) * 2017-07-05 2019-01-10 Huawei Technologies Co., Ltd APPARATUS AND METHOD FOR PANORAMIC VIDEO CODING
US10614609B2 (en) * 2017-07-19 2020-04-07 Mediatek Inc. Method and apparatus for reduction of artifacts at discontinuous boundaries in coded virtual-reality images
WO2019060443A1 (en) 2017-09-20 2019-03-28 Vid Scale, Inc. HANDLING FACIAL DISCONTINUITIES IN 360-DEGREE VIDEO CODING
US10818087B2 (en) 2017-10-02 2020-10-27 At&T Intellectual Property I, L.P. Selective streaming of immersive video based on field-of-view prediction
WO2019083119A1 (ko) * 2017-10-23 2019-05-02 엘지전자 주식회사 360도 비디오에 대한 영상 코딩 시스템에서 회전 파라미터를 사용한 영상 디코딩 방법 및 장치
WO2019159820A1 (ja) * 2018-02-14 2019-08-22 シャープ株式会社 動画像符号化装置及び動画像復号装置
EP3741126A1 (de) 2018-03-02 2020-11-25 Huawei Technologies Co., Ltd. Vorrichtung und verfahren zur bildcodierung mit selektiver schleifenfilterung
US10659815B2 (en) 2018-03-08 2020-05-19 At&T Intellectual Property I, L.P. Method of dynamic adaptive streaming for 360-degree videos
US11039139B2 (en) 2018-09-14 2021-06-15 Tencent America LLC Method and apparatus for identity transform in multiple transform selection
GB2580084B (en) * 2018-12-20 2022-12-28 Canon Kk Video coding and decoding
EP3672251A1 (de) * 2018-12-20 2020-06-24 Koninklijke KPN N.V. Verarbeitung von videodaten für ein videospielgerät
CN110677692B (zh) * 2019-09-27 2022-12-06 腾讯科技(深圳)有限公司 视频解码方法及装置、视频编码方法及装置

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6466254B1 (en) * 1997-05-08 2002-10-15 Be Here Corporation Method and apparatus for electronically distributing motion panoramic images
US6356297B1 (en) * 1998-01-15 2002-03-12 International Business Machines Corporation Method and apparatus for displaying panoramas with streaming video
FR2798761B1 (fr) * 1999-09-17 2002-03-29 Thomson Multimedia Sa Procede de construction d'un modele de scene 3d par analyse de sequence d'images
US6993074B2 (en) * 2000-03-24 2006-01-31 Microsoft Corporation Methods and arrangements for handling concentric mosaic image data
EP1296243A3 (de) * 2001-09-25 2007-04-11 Interuniversitair Microelektronica Centrum Vzw Verfahren zum Betrieb eines Echtzeit-Multimedia-Endgerätes auf QoS Weise
KR100677142B1 (ko) * 2004-08-13 2007-02-02 경희대학교 산학협력단 파노라마 영상의 움직임 추정 및 보상
KR100679031B1 (ko) * 2004-12-03 2007-02-05 삼성전자주식회사 다 계층 기반의 비디오 인코딩 방법, 디코딩 방법 및 상기방법을 이용한 장치
JP4413203B2 (ja) * 2006-05-08 2010-02-10 富士通株式会社 画像呈示装置
CN101771830B (zh) * 2008-12-30 2012-09-19 华为终端有限公司 立体全景视频流生成方法、设备及视频会议方法和设备
DK2947877T3 (en) * 2010-04-23 2017-01-23 M&K Holdings Inc Apparatus for encoding an image
US9930225B2 (en) * 2011-02-10 2018-03-27 Villmer Llc Omni-directional camera and related viewing software
JP2013255210A (ja) * 2012-01-19 2013-12-19 Nippon Telegr & Teleph Corp <Ntt> 映像表示方法、映像表示装置および映像表示プログラム
EP2645713A1 (de) * 2012-03-30 2013-10-02 Alcatel Lucent Verfahren und Vorrichtung zur Codierung eines ausgewählten räumlichen Abschnitts eines Video-Streams
CN102685532B (zh) * 2012-06-04 2014-04-16 山东大学 自由视点四维空间视频编码系统的编码方法
CN102831644A (zh) * 2012-07-09 2012-12-19 哈尔滨工程大学 一种海洋环境信息三维可视化方法

Also Published As

Publication number Publication date
CN106664403B (zh) 2020-10-16
WO2016064862A1 (en) 2016-04-28
EP3210379A1 (de) 2017-08-30
GB2545999A (en) 2017-07-05
CN106664403A (zh) 2017-05-10
EP3210379B1 (de) 2021-02-17
CN112218074A (zh) 2021-01-12
EP3210379A4 (de) 2018-03-21
GB201621542D0 (en) 2017-02-01
EP3813374A1 (de) 2021-04-28

Similar Documents

Publication Publication Date Title
DE112015004764T5 (de) Kontinuierlicher prädiktionsbereich
US10681377B2 (en) Streaming the visible parts of a spherical video
US20220182542A1 (en) Method and apparatus for reconstructing 360-degree image according to projection format
DE102016225270A1 (de) Verfahren, anwendungsprozessor, und mobiles endgerät zum verarbeiten eines referenzbildes
DE102016125117B4 (de) Bewegungsvektorkodierung mit dynamischen Referenzbewegungsvektoren
DE102016125379B4 (de) Bewegungsvektoraufteilung des letzten Frames
JP6858277B2 (ja) 方向性イントラ予測コーディング
US20160112713A1 (en) Mapping spherical image to 2d representations
DE112017001540T5 (de) Verfahren und vorrichtung zum codieren von video unter verwendung signalabhängiger adaptiver quantisierung und decodierung
KR101946598B1 (ko) 이미지 코딩, 디코딩 방법 및 장치
DE112016005457T5 (de) Effiziente, kompatible und skalierbare Intra-Video/Bild-Codierung unter Verwendung von Wavelets und HEVC-Codierung
DE112019000219T5 (de) Adaptive-Loop-Filterung-Verfahren für einen rekonstruierten projektionsbasierten Rahmen, welcher eine Projektionsanordnung einer 360-Grad-Virtual-Reality-Projektion einsetzt
DE202016008175U1 (de) Adaptive gerichtete Intra-Prädiktion mit Blockgröße
DE102016120173A1 (de) Verfahren zum Codieren von Videodaten, Videocodierer, welcher dasselbe durchführt und elektronisches System mit demselben
DE102016207230A1 (de) Wahrnehmbare Farbumwandlungen für Videokodierung mit einem breiten Farbumfang
DE102015009683A1 (de) Cloudbasierte inhaltsspezifische Füllung für Bilder
DE102016125125A1 (de) Tile-Copying für Videokompression
DE102019201370A1 (de) Verarbeitung von multidirektionalen bildern in räumlich geordneten videokodieranwendungen
DE102016124926A1 (de) Bewegungsvektorvorhersage mittels eines vorhergehenden Einzelbildresiduums
DE102016125591A1 (de) Hybrid-Prädiktionsmodi zur Kodierung von Videos
DE202016008164U1 (de) Intelligente Sortierung der rekursiven Blockaufteilung für die erweiterte Intra-Prädiktion bei der Videocodierung
DE102016125086A1 (de) Adaptiver direktionaler Schleifenfilter
DE102016015996B3 (de) Anpassungsfähige Kachel-Daten-Grössenkodierung für Video- und Bildkompression
DE112015005159B4 (de) Kodierung im alternierenden blockbeschränkten entscheidungsmodus
WO2019130794A1 (ja) 映像処理装置

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R081 Change of applicant/patentee

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

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

R082 Change of representative

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

R016 Response to examination communication