-
Querverweis auf verwandte Anmeldungen
-
Die vorliegende Erfindung beansprucht die Priorität der vorläufigen
US-Patentanmeldung Nr. 62/332,505 , eingereicht am 6. Mai 2016, und der vorläufigen
US-Patentanmeldung Nr. 62/356,571 , eingereicht am 30. Juni 2016. Die vorläufigen US-Patentanmeldungen sind hiermit durch Bezugnahme in ihrer Gesamtheit eingeschlossen.
-
Gebiet der Erfindung
-
Die vorliegende Erfindung bezieht sich auf 360-Grad-Video. Insbesondere bezieht sich die vorliegende Erfindung auf ein Abbilden eines Satzes von Omnidirektionalbildern, die von jedem sphärischen Bild in einer 360-Grad Panoramavideosequenz unter Verwendung eines ausgewählten Projektionsformats konvertiert sind, in ein Ausgabeformat.
-
Hintergrund und Stand der Technik
-
Die Fortschritte von digitalen Videocodierungsstandards haben zu Erfolgen von Multimediasystemen wie Smartphones, digitalen Fernsehern und digitalen Kameras während des vergangenen Jahrzehnts geführt. Nach Standardisierungsaktivitäten von H.261, MPEG-1, MPEG-2, H.263, MPEG-4 und H.264/AVC war die Nachfrage nach einer Verbesserung einer Videokompressionsleistung aufgrund von Anforderungen von höheren Bildauflösungen, höheren Rahmenraten und besserer Videoqualität weiterhin stark. Deshalb hat eine Entwicklung von neuen Videocodierungstechniken für eine bessere Codierungseffizienz als H.264/AVC nicht aufgehört. HEVC basiert auf einer hybriden blockbasierten bewegungskompensierten Transformationscodierungsarchitektur.
-
Dreidimensionales (3D-) Fernsehen ist in den letzten Jahren ein Technologietrend gewesen, welcher beabsichtigt, Betrachtern eine sensationelle Betrachtungserfahrung zu ermöglichen. Verschiedene Technologien sind entwickelt worden, um eine 3D-Betrachtung zu ermöglichen, und das Multi-View-Video ist unter anderen eine Schlüsseltechnologie für eine 3D-TV-Anwendung. Zum Beispiel kann das Videomaterial ein zweidimensionales (2D) Medium sein, welches Betrachtern nur eine einzelne Ansicht einer Szene aus der Perspektive der Kamera bereitstellt. Das Multi-View-Video ist jedoch geeignet, beliebige Blickpunkte von dynamischen Szenen anzubieten und stellt Betrachtern das Erlebnis von Realismus zur Verfügung. 3D-Videoformate können auch Tiefenabbildungen mit korrespondierenden Texturbildern aufweisen. Die Tiefenabbildungen müssen ebenfalls codiert werden, um eine dreidimensionale Ansicht oder eine Mehrfachansicht wiederzugeben. Aufgrund der starken Nachfrage nach einer Verbesserung der Codierungseffizienz von 3D- und Multi-View-Video, die durch die Anforderungen eines Codierens von Daten von Mehrfachansichten, einer höheren Bildauflösung und einer besseren Qualität verursacht werden, sind verschiedene Techniken vorgeschlagen worden.
-
Als eine Erweiterung zu HEVC und ein 3D-Videocodierungsstandard einer nächsten Generation wurde die Standardisierung des 3D-HEVC-Videocodierungsstandards durch das Joint Collaborative Team on 3D Video Coding Extension Development (JCT-3V) im Juli 2012 formell begonnen und ist nach der 11-ten im Februar 2015 gehaltenen JCT-3V-Versammlung abgeschlossen. Um die auto-stereoskopische Multi-View-Anzeige praktischer zu unterstützen, ist ein Multi-View-Video-plus-Tiefen- (MVD-) Format als ein neues 3D-Videoformat für 3D-HEVC eingeführt worden. Das MVD-Format besteht aus einem Texturbild und seiner zugehörigen Tiefenabbildung. Anders als ein Texturbild, das die Luminanz- und Chrominanzinformationen eines Objekts repräsentiert, ist eine Tiefenabbildung ein Bild, das Informationen aufweist, die sich auf die Distanz der Objekte von der durch die Kamera aufgenommenen Ebene bezieht, und wird allgemein für eine Wiedergabe einer virtuellen Ansicht als unsichtbare Information eingesetzt.
-
Virtuelle Realität (VR) mit am Kopf befestigten Anzeigen (HMDs) wird mit verschiedenen Anwendungen in Verbindung gebracht. Die Möglichkeit, einem Anwender ein weites Feld von Ansichtsinhalten zu zeigen, kann verwendet werden, um eindringliche visuelle Erfahrungen zur Verfügung zu stellen. Eine Umgebung einer realen Welt muss in allen Richtungen aufgenommen werden, was in einem Omnidirektionalvideo resultiert, das zu einer Ansichtssphäre korrespondiert. Mit Fortschritten in Kameraausrüstungen und HMDs kann die Bereitstellung von VR-Inhalten aufgrund der hohen Bitrate, die zum Repräsentieren solchen Inhalts benötigt wird, bald der Engpass werden. Da die Omnidirektionalvideos oft mit 4K oder einer höheren Auflösung vorliegen, ist eine Komprimierung entscheidend, um die Bitrate zu reduzieren. Die bereitgestellten Omnidirektionalvideos sind eine äquirektanguläre Projektion. 1 stellt ein Beispiel eines Bildes eines Omnidirektionalvideos (bekannt als „Hangpai_2“) in dem äquirektangulären Projektionsformat dar. Während das Originalbild vollständig in Farbe ist, ist in 1 eine Schwarz-Weiß-Version gezeigt, da das Schwarz-Weiß-Bild ausreichend ist, um die vorliegende Erfindung darzustellen.
-
Das äquirektanguläre Projektionsformat kann in verschiedene Formate konvertiert werden, wie in 2 gezeigt: (a) Cubemap, (b) Cubemap_32, (c) Cubemap_180, (d) Plane_poles, (e) Plane_poles_6, (f) Plane_poles_cubemap, (g) Plane_cubemap, (h) Plane_cubemap_32, (i) Flat_fixed, (j) 180-Grad-3D-Video (d.h. 180-3D) und (k) Cylindermap/Cylindrical. Bilder in 2a bis 2i basieren auf dem Bild in 1.
-
3 stellt ein Beispiel eines Konvertierens des äquirektangulären Projektionsformats in ein kubisches Format unter Verwendung einer Projektionskonvertierung 310 dar, wobei Bilder, die mit 1 bis 6 bezeichnet sind, zu Bildern auf sechs Flächen eines kubischen Systems zum Repräsentieren eines 360-Grad-Videos korrespondieren. Vier gemeinhin verwendete Anordnungen (d.h. eine 1x6-Anordnung 410, eine 2x3-Anordnung 420, eine 3x2-Anordnung 430 und eine 6x1-Anordnung 440) sind in 4 dargestellt. In jeder Anordnung sind die Bilder von 6 Flächen in ein einzelnes rechteckiges Bild zusammengefügt. 5 stellt den Geometrievergleich zwischen dem äquirektangulären Format und dem kubischen Format dar. Die äquirektanguläre Geometrie 510 und die kubische Geometrie 520 sind in 5 gezeigt. Das Bild 512 ist ein Beispiel eines äquirektangulären Formats und das Bild 522 ist ein Beispiel eines kubischen Formats.
-
In dem existierenden Ansatz für ein Konvertieren von kubischen Flächen in ein Ausgabeformat wird immer ein gleiches ausgewähltes Ausgabeanordnungsformat verwendet, und die sechs Flächen werden auf eine feste Weise dem Ausgabeanordnungsformat zugewiesen. Während die feste Abbildung einfach ist, hindert sie einen Benutzer daran, ein anderes Anordnungsformat zu verwenden, um die Anforderungen des Benutzers zu erfüllen. Weiter werden, nachdem die kubischen Flächen zu einem Ausgabeanordnungsformat konvertiert sind, die konvertierten Ausgabebilder oft komprimiert, um den benötigten Platz zu reduzieren. Das ausgewählte Ausgabeanordnungsformat und die feste Abbildung können für eine Kompression nicht effizient sein.
-
Kurze Zusammenfassung der Erfindung
-
Verfahren und Vorrichtungen eines Verarbeitens von Omnidirektionalbildern werden offenbart. Gemäß einem Verfahren wird ein aktueller Satz von Omnidirektionalbildern, die von jedem sphärischen Bild in einer 360-Grad Panoramavideosequenz unter Verwendung eines ausgewählten Projektionsformats konvertiert sind, empfangen, wobei das ausgewählte Projektionsformat zu einer Projektionsformatgruppe gehört, die ein sechsflächiges Format umfasst, und der aktuelle Satz von Omnidirektionalbildern mit dem sechsflächigen Format aus sechs kubischen Flächen besteht. Wenn das ausgewählte Projektionsformat zu dem sechsflächigen Format korrespondiert, werden ein oder mehrere Abbildungssyntaxelemente signalisiert, um den aktuellen Satz von Omnidirektionalbildern in ein aktuelles Cubemap-Bild abzubilden. Die codierten Daten werden dann in einem Bitstrom bereitgestellt, der das eine oder die mehreren Abbildungssyntaxelemente für den aktuellen Satz von Omnidirektionalbildern aufweist.
-
Die Projektionsformatgruppe kann weiter ein äquirektanguläres Format, ein 180-3D-Format und ein Cylindermap-Format aufweisen. Wenn der aktuelle Satz von Omnidirektionalbildern in dem äquirektangulären Format vorliegt, wird der aktuelle Satz von Omnidirektionalbildern in das sechsflächige Format konvertiert, und die Abbildungssyntaxelemente werden für den konvertierten aktuellen Satz von Omnidirektionalbildern durch Behandeln des konvertierten aktuellen Satzes von Omnidirektionalbildern, als ob er das sechsflächige Format hätte, signalisiert.
-
Die Abbildungssyntaxelemente können einen aktuellen kubischen Typ aufweisen, der zu dem aktuellen Cubemap-Bild gehört, und der aktuelle kubische Typ gehört zu einem aktuellen Ausgabeanordnungsformatsatz, der aus einer 1×6-Cubemap-Anordnung, einer 2x3-Cubemap-Anordnung, einer 3x2-Cubemap-Anordnung und einer 6×1-Cubemap-Anordnung besteht. Die Abbildungssyntaxelemente können weiter Anordnungsabbildungsindizes aufweisen, wobei jeder Anordnungsabbildungsindex eine kubische Fläche des aktuellen Satzes von Omnidirektionalbildern mit einer Stelle des aktuellen Cubemap-Bildes assoziiert. Ein Anordnungsabbildungsindex kann für jede kubische Fläche des aktuellen Satzes von Omnidirektionalbildern bis auf die letzte kubische Fläche des aktuellen Satzes von Omnidirektionalbildern signalisiert werden. Jeder Anordnungsabbildungsindex kann unter Verwendung einer Code-Tabelle mit einer Anzahl von Einträgen, die gleich einer Anzahl von übrigen abzubildenden kubischen Flächen ist, codiert werden. In einer anderen Ausführungsform wird jeder Anordnungsabbildungsindex unter Verwendung einer Code-Tabelle mit einer Anzahl von Einträgen codiert, die gleich einer Anzahl von abzubildenden kubischen Flächen ist.
-
In einer anderen Ausführungsform können die Abbildungssyntaxelemente weiter Rotationsindizes aufweisen, wobei jeder Rotationsindex einen Rotationswinkel für eine kubischen Fläche des aktuelles Satzes von Omnidirektionalbildern an einer Position des aktuellen Cubemap-Bilds anzeigt. Ein Rotationsindex kann für jede kubische Fläche des aktuellen Satzes von Omnidirektionalbildern signalisiert werden. Jeder Rotationsindex wird unter Verwendung einer Code-Tabelle codiert, um einen Rotationswinkel anzuzeigen, der von einem Rotationswinkelsatz ausgewählt wird, der zu {0° und 90°}, {0°, +90°, -90° und 180°} oder{0°, 90°, 180° und 270°} korrespondiert.
-
Die Abbildungssyntaxelemente weisen weiter ein Vorgabeanordnungskennzeichen auf, um anzuzeigen, ob ein Vorgabe-Cubemap-Bild für den aktuellen Satz von Omnidirektionalbildern mit dem aktuellen kubischen Typ verwendet wird, und wobei die Anordnungsabbildungsindizes und die Rotationsindizes für den aktuellen Satz von Omnidirektionalbildern nur signalisiert werden, wenn das Vorgabeanordnungskennzeichen anzeigt, dass das Vorgabe-Cubemap-Bild nicht für den aktuellen Satz von Omnidirektionalbildern verwendet wird. Wenn das Vorgabeanordnungskennzeichen anzeigt, dass das Vorgabe-Cubemap-Bild für den aktuellen Satz von Omnidirektionalbildern verwendet wird, werden Vorgabeanordnungsabbildungsindizes und Vorgaberotationsindizes für den aktuellen Satz von Omnidirektionalbildern verwendet.
-
Der Ausgabeanordnungsformatsatz, der für den aktuellen Satz von Omnidirektionalbildern verwendet wird, kann in einer Sequenzebene, einer Ansichtsebene, einer Bildebene, einer Slice-Ebene, einem Sequenzparametersatz (SPS), einem Videoparametersatz (VPS) oder einem Applikationsparametersatz (APS) in einem Bitstrom für die 360-Grad-Panoramavideosequenz signalisiert werden. Die Abbildungssyntaxelemente können in einer Sequenzebene, einer Ansichtsebene, einer Bildebene, einer Slice-Ebene, einem SPS, einem VPS oder einem APS in dem Bitstrom für die 360-Grad-Panoramavideosequenz signalisiert werden.
-
Die Abbildungssyntaxelemente können vorhergesagt basierend auf einem oder mehreren Referenzabbildungssyntaxelementen signalisiert werden. In einer Ausführungsform werden mehrere Sätze von einem oder mehreren Referenzabbildungssyntaxelementen in einer Sequenzebene, einer Ansichtsebene oder einer Bildebene in dem Bitstrom für die 360-Grad-Panoramavideosequenz signalisiert, und ein Kennzeichen wird in einer Slice-Ebene oder der Bildebene signalisiert, um die Abbildungssyntaxelemente von den mehreren Sätzen von einem oder mehreren Referenzabbildungssyntaxelementen für den aktuellen Satz von Omnidirektionalbildern auszuwählen. In einer anderen Ausführungsform können die Referenzabbildungssyntaxelemente durch ein oder mehrere erste Abbildungssyntaxelemente von einem vorherigen Bild, Slice oder Rahmen vorhergesagt werden.
-
Figurenliste
-
- 1 stellt ein Beispiel eines Bildes eines Omnidirektionalvideos (bekannt als „Hangpai_2“) in dem äquirektangulären Projektionsformat dar.
- 2 stellt verschiedene Beispiele von Ausgabeanordnungsformaten dar, die (a) Cubemap, (b) Cubremap_32, (c) Cubemap_180, (d) Plane_poles, (e) Plane_Poles_6, (f) Plane_poles_cubemap, (g) Plane-Cubemap, (h) Plane_Cubemap_32, (i) Flat_fixed, (j) 180-Grad-3D-Video (d.h. 180-3D) und (k) Cylindermap/Cylindrical umfassen.
- 3 stellt ein Beispiel eines Konvertierens des äquirektangulären Projektionsformats in ein kubisches Format unter Verwendung einer Projektionskonvertierung dar, wobei Bilder, die mit 1 bis 6 gekennzeichnet sind, zu Bildern auf sechs Flächen eines kubischen Systems zum Repräsentieren eines 360-Grad Video korrespondieren.
- 4 stellt vier allgemein verwendete Anordnungen dar: eine 1x6-Anordnung, eine 2x3-Anordnung, eine 3x2-Anordnung und eine 6x1-Anordnung.
- 5 stellt den Geometrievergleich zwischen dem äquirektangulären Format und dem kubischen Format dar.
- 6 stellt ein Beispiel eines Abbildens der sechs kubischen Flächen auf eine 1x6-Anordnung dar.
- 7 stellt ein Beispiel eines Abbildens der sechs kubischen Flächen auf eine 2x3-Anordnung dar.
- 8 stellt ein Beispiel eines Abbildens von sechs kubischen Flächen auf eine 1x6-Anordnung dar, wobei (a) in Schritt 1 Fläche #5 zu der ersten Position der Anordnung zugewiesen wird, (b) in Schritt 2 Fläche #4 zu der zweiten Position der Anordnung zugewiesen wird und (c) in Schritt 3 Fläche #6 zu der dritten Position der Anordnung zugewiesen wird.
- 9 stellt ein Beispiel eines Abbildens von sechs kubischen Flächen auf eine 1x6-Anordnung dar, wobei die kubische Fläche #1 mit einer (-90-Grad-Rotation) zu der vierten Position in der Ausgabeanordnung zugewiesen wird.
- 10 stellt ein Beispiel einer Rotationsvorausberechnung dar, wobei die Referenzausgabeanordnung verwendet wird, um die Zielausgabeanordnung vorauszuberechnen.
- 11 stellt ein Beispiel der Benennung von sechs kubischen Flächen von Indizes kubischer Flächen und des korrespondierenden äquirektangulären Bilds dar.
- 12 stellt ein Beispiel einer Reihenfolge der Position in jeder kubischen Anordnung für eine 1x6-Anordnung, eine 2x3-Anordnung, eine 3x2-Anordnung und eine 6x1-Anordnung dar.
- 13 stellt ein Beispiel einer Vorgabeanordnung der sechs kubischen Flächen und eine kubische Ziel-3x2-Anordnung dar.
- 14 stellt ein Beispiel der vorgegebenen relativen Lage von kubischen Flächen und ihrer Indizes für den Index kubischer Flächen und korrespondierend äquirektangulär dar.
- 15 stellt eine beispielhafte Reihenfolge der Position in jeder kubischen Anordnung für eine 1x6-Anordnung, eine 2x3-Anordnung, eine 3x2-Anordnung und eine 6x1-Anordnung dar.
- 16 stellt Beispiele einer anderen vorbestimmten Anordnung für (a) eine unterschiedliche kubische 6x1-Anordnung, (b) eine unterschiedliche kubische 3x2-Anordnung, (c) eine unterschiedliche kubische 2x3-Anordnung und (d) eine unterschiedliche kubische 1x6-Anordnung dar.
- 17 stellt ein beispielhaftes Ablaufdiagramm eines Systems dar, das Omnidirektionalbilder gemäß einer Ausführungsform der vorliegenden Erfindung verarbeitet.
-
Detaillierte Beschreibung der Erfindung
-
Die nachfolgende Beschreibung ist von der am eingehendsten betrachteten Betriebsart eines Ausführens der Erfindung. Diese Beschreibung dient dem Zeck einer Darstellung der allgemeinen Prinzipien der Erfindung und sollte nicht in einem einschränkenden Sinn verstanden werden. Der Umfang der Erfindung wird am besten durch Bezug auf die angehängten Ansprüche bestimmt.
-
In einem Aspekt der vorliegenden Erfindung ist ein Satz von verschiedenen Ausgabeanordnungen vordefiniert und ein explizites Kennzeichen wird in dem Bitstrom in der Sequenzebene, der Ansichtsebene, der Bildebene, der Slice-Ebene, dem Sequenzparametersatz (SPS), dem Videoparametersatz (VPS) oder dem Applikationsparametersatz (APS) übertragen, um die Ausgabeanordnung von dem Satz von verschiedenen Ausgabeanordnungen auszuwählen. Zum Beispiel kann der Satz von verschiedenen Ausgabeanordnungen mindestens zwei Ausgabeanordnungsformate aufweisen, die von einer Gruppe ausgewählt sind, die eine Cubemap-Anordnung, eine Cubemap_32-Anordnung, eine Cubemap_180-Anordnung, eine Plane_poles-Anordnung, eine Plane_poles_6-Anordnung, eine Plane_poles_cubemap-Anordnung, eine Plane_cubemap-Anordnung, eine Plane_cubemap_32-Anordnung, eine Flat_fixed-Anordnung, eine Cubemap_1×6-Anordnung, eine Cubemap_2×3-Anordnung, eine Cubemap_3x2-Anordnung und eine Cubemap_6x1-Anordnung umfasst.
-
In einem anderen Beispiel umfasst der Satz von Ausgabeanordnungsformaten nur eine Cubemap_1x6-Anordnung, eine Cubemap_2x3-Anordnung, eine Cubemap_3x2-Anordnung und eine Cubemap_6×1 -Anordnung. Ein Kennzeichen wird übertragen, um die Ausgabeanordnung unter der Cubemap_1×6-Anordnung, der Cubemap_2x3-Anordnung, der Cubemap_3x2-Anordnung und der Cubemap_6x1-Anordnung auszuwählen.
-
6 und 7 stellen ein Beispiel eines Abbildens der sechs kubischen Flächen auf zwei mögliche Anordnungen dar, wobei die sechs kubischen Flächen in 6 auf eine 1x6-Anordnung abgebildet werden und die sechs kubischen Flächen in 7 auf eine 2x3-Anordnung abgebildet werden.
-
Gemäß einem Verfahren der vorliegenden Erfindung können die sechs kubischen Flächen gemäß den nachfolgenden Schritten auf eine mögliche Anordnung abgebildet werden:
-
Schritt 1: Sende (an einer Codierer-Seite)/Empfange (an einer Decodierer-Seite) ein Kennzeichen, um eine der sechs kubischen Flächen zu einer ersten Position in der Anordnung zuzuweisen. 8a zeigt ein Beispiel eines Zuweisens einer Fläche #5 zu der ersten Position der 1x6-Anordnung.
-
Schritt 2: Sende/Empfange ein Kennzeichen, um eine der übrigen fünf kubischen Flächen zu einer zweiten Position in der Anordnung zuzuweisen. 8b zeigt ein Beispiel eines Zuweisens einer Fläche #4 zu der zweiten Position der 1x6-Anordnung.
-
Schritt 3: Sende/Empfange ein Kennzeichen, um eine der übrigen vier kubischen Flächen zu einer dritten Position in der Anordnung zuzuweisen. 8c zeigt ein Beispiel eines Zuweisens einer Fläche #6 zu der dritten Position der 1x6-Anordnung.
-
Schritt 4: Sende/Empfange ein Kennzeichen, um eine der übrigen drei kubischen Flächen zu einer vierten Position in der Anordnung zuzuweisen.
-
Schritt 5: Sende/Empfange ein Kennzeichen, um eine der übrigen zwei kubischen Flächen zu einer fünfen Position in der Anordnung zuzuweisen.
-
Schritt 6: Weise die letzte übrige Fläche der letzten Position in der Anordnung zu. Es ist unnötig, das Kennzeichen für die Letzte zu signalisieren, da es nur eine übrige kubische Fläche gibt.
-
In dem vorstehend vorgeschlagenen Verfahren kann das Kennzeichen unter Verwendung eines verkürzten Unär-Codes übertragen werden, wie in Tabelle 1 gezeigt. In Schritt
1 wird ein erstes Kennzeichen unter Verwendung des verkürzten Unär-Codes mit der Größe
6 codiert, um eine der sechs kubischen Flächen auszuwählen. In Schritt
2 wird ein zweites Kennzeichen unter Verwendung des verkürzten Unär-Codes mit der Größe
5 codiert, um eine der fünf übrigen kubischen Flächen auszuwählen, und so weiter.
Tabelle 1.
n (nichtnegativ) | n (streng positiv) | Verkürzter Unär-Code | Alternative |
0 | 1 | 0 | 1 |
1 | 2 | 10 | 01 |
2 | 3 | 110 | 001 |
3 | 4 | 1110 | 0001 |
4 | 5 | 11110 | 00001 |
5 | 6 | 11111 | 00000 |
-
In einer anderen Ausführungsform wird auch die Rotation der Fläche zum Abbilden einer kubischen Fläche auf eine Ausgabeanordnung definiert. Zum Beispiel werden die sechs kubischen Flächen gemäß den nachfolgenden Schritten den möglichen Anordnungen zugewiesen:
-
Schritt 1: Sende (auf einer Codierer-Seite)/Empfange (auf einer Decodierer-Seite) ein Kennzeichen, um eine der sechs kubischen Flächen einer ersten Position in der Anordnung zuzuweisen. Sende/Empfange ein anderes Kennzeichen, um die Rotation dieser ausgewählten Fläche zu definieren.
-
Schritt n (n von 2 bis 5): Sende/Empfange ein Kennzeichen, um eine der übrigen (6-n+1) kubischen Flächen der n-ten Position in der Anordnung zuzuweisen. Sende/Empfange ein anderes Kennzeichen, um die Rotation der ausgewählten Fläche zu definieren.
-
Schritt 6: Weise die letzte übrige Fläche der letzten Position in der Anordnung zu. Sende/Empfange ein anderes Kennzeichen, um die Rotation dieser ausgewählten Fläche zu definieren.
-
Die Rotation dieser sechs Flächen kann auch übertragen werden, nachdem die sechs Flächen zugewiesen sind, wie in dem nachfolgenden Schritt dargestellt:
-
Schritt 1-a: Sende (auf einer Codierer-Seite)/Empfange (auf einer Decodierer-Seite) ein Kennzeichen, um eine der sechs kubischen Flächen einer ersten Position in der Anordnung zuzuweisen.
-
Schritt n-a (n von 2 bis 5): Sende/Empfange ein Kennzeichen, um eine der übrigen (6-n+1) kubischen Flächen der n-ten Position in der Anordnung zuzuweisen.
-
Schritt 6-a: Weise die letzte übrige Fläche der letzten Position in der Anordnung zu.
-
Schritt n-b (n von 1 bis 6): Sende/Empfange ein Kennzeichen, um die Rotation der n-ten Fläche zu definieren.
-
Andererseits kann die Zuweisung der Fläche und die Rotation dieser Fläche auch als ein Kennzeichen kombiniert werden, wie in den nachfolgenden Schritten dargestellt:
-
Schritt 1: Sende (auf einer Codierer-Seite)/Empfange (auf einer Decodierer-Seite) ein Kennzeichen, um eine der sechs kubischen Flächen und ihre Rotation einer ersten Position in der Anordnung zuzuweisen.
-
Schritt n (n von 2 bis 5): Sende/Empfange ein Kennzeichen, um eine der übrigen (6-n+1) kubischen Flächen und ihre Rotation der n-ten Position in der Anordnung zuzuweisen.
-
Schritt 6: Weise die letzte übrige Fläche der letzten Position in der Anordnung zu. Sende/Empfange ein Kennzeichen, um die Rotation der sechsten Fläche zu definieren.
-
Die Rotation der Fläche kann von dem Satz {0 Grad, 90 Grad} ausgewählt werden. In einer anderen Ausführungsform kann die Rotation der Fläche auch von dem Satz {0 Grad, 90 Grad, 180 Grad und 270 Grad} oder {0 Grad, 90 Grad, -90 Grad, 180 Grad} ausgewählte werden. Zum Beispiel wird in Schritt
4 ein Kennzeichen gesendet oder empfangen, um eine kubische Fläche #1 mit einer Rotation der vierten Position in der Anordnung zuzuweisen. In diesem Beispiel sind nach den Schritten
1 bis
3 die übrigen Flächen {Fläche #1, Fläche #2 und Fläche #3}. Basierend auf der nachfolgenden verkürzten Unär-Tabelle wird ein Index
0 (nicht-negativ)/Index 1 (streng positiv) mit einem Code „0“, um die Fläche #1 der vierten in Tabelle 2 gezeigten Position zuzuweisen, und ein in Tabelle 3 gezeigter Rotations-Code „10“ (oder ein in Tabelle 4 gezeigter Rotations-Code „1“), um eine -90-Grad-Rotation zu definieren, übertragen.
Tabelle 2.
n (nichtnegativ) | n (streng positiv) | Verkürzter Unär-Code | Alternative |
0 | 1 | 0 | 1 |
1 | 2 | 10 | 01 |
2 | 3 | 11 | 00 |
Tabelle 3.
n (nichtnegativ) | Rotationsgrad Typ 1 | Verkürzter Unär-Code | Alternative |
0 | 0 Grad | 0 | 1 |
1 | -90 Grad | 10 | 01 |
2 | +90 Grad | 110 | 001 |
3 | +180 Grad | 111 | 000 |
Tabelle 4.
n (nichtnegativ) | Rotationsgrad Typ 1 | Verkürzter Unär-Code | Alternative |
0 | 0 Grad | 0 | 1 |
1 | -90 Grad | 1 | 0 |
-
9 stellt ein Beispiel eines Zuweisens einer kubischen Fläche #1 mit (-90-Grad-Rotation) zu der vierten Position in der Anordnung dar.
-
Das vorstehend vorgeschlagene Verfahren zum Signalisieren des äquirektangulären Formats zu der Anordnung kann in dem Bitstrom in der Sequenzebene, der Ansichtsebene, der Bildebene, der Slice-Ebene, der SPS- (Sequenzparametersatz-), der VPS-(Videoparametersatz-) oder der APS- (Adaptionsparametersatz-) Ebene übertragen werden. In einer anderen Ausführungsform werden N Sätze der Abbildungsformate für die äquirektanguläre Projektion zu der Ausgabeanordnung in der Sequenzebene, der Ansichtsebene, der Bildebene, dem SPS, dem VPS oder dem APS signalisiert, wie nachfolgend gezeigt:
-
Abbildungsformat:
- Index 1: {Fläche#1 (Rotationsgrad), Fläche#2 (Rotationsgrad), Fläche#3 (Rotationsgrad), Fläche#4 (Rotationsgrad), Fläche#5 (Rotationsgrad), Fläche#6 (Rotationsgrad)}
- Index 2: {Fläche#1 (Rotationsgrad), Fläche#2 (Rotationsgrad), Fläche#3 (Rotationsgrad), Fläche#5 (Rotationsgrad), Fläche#4 (Rotationsgrad), Fläche#6 (Rotationsgrad)}
- ....
- Index N: {Fläche#2 (Rotationsgrad), Fläche#3 (Rotationsgrad), Fläche#1 (Rotationsgrad), Fläche#5 (Rotationsgrad), Fläche#4 (Rotationsgrad), Fläche#6 (Rotationsgrad)}
-
Ein Kennzeichen wird dann weiter in der Slice- oder Bildebene übertragen, um ein Abbildungsformat von {Index 1, Index 2, ..., Index N} auszuwählen.
-
In einer anderen Ausführungsform kann das Abbildungsformat von einem anderen Abbildungsformat vorausberechnet werden. Zum Beispiel kann das nachfolgende Referenzabbildungsformat von den N Sätzen von Abbildungsformaten ausgewählt werden, die in der Sequenzebene, der Ansichtsebene oder der Bildebene übertragen werden. In noch einer anderen Ausführungsform kann das Abbildungsformat von dem vorherigen Bild/Slice/Rahmen als das Referenzabbildungsformat verwendet werden, um das aktuelle Abbildungsformat vorauszuberechnen. Das Referenzabbildungsformat {Fläche#1, Fläche#2, Fläche#3, Fläche#4, Fläche#5, Fläche#6} ist bekannt und wird verwendet, um das aktuelle Abbildungsformat vorauszuberechnen.
-
Angenommen das Zielabbildungsformat ist {Fläche#1, Fläche#2, Fläche#4, Fläche#3, Fläche#5, Fläche#6}, um das Zielabbildungsformat von {Fläche#1, Fläche#2, Fläche#3, Fläche#4, Fläche#5, Fläche#6} vorauszuberechnen, kann der Vorausberechnungsalgorithmus wie folgt dargestellt werden:
- Schritt 1: Die übrigen Flächen der Reihenfolge folgend sind: {Fläche#1, Fläche#2, Fläche#3, Fläche#4, Fläche#5, Fläche#6}. Index 0 wird zu der ausgewählten Fläche#1 in die erste Position in der Anordnung {Fläche#1, ---, ---, ---, ---, ---} übertragen.
- Schritt 2: Die übrigen Flächen der Reihenfolge folgend sind: {Fläche#2, Fläche#3, Fläche#4, Fläche#5, Fläche#6}. Index 0 wird zu der ausgewählten Fläche#2 in die zweite Position in der Anordnung {Fläche#1, Fläche#2, ---, ---, ---, ---} übertragen.
- Schritt 3: Die übrigen Flächen der Reihenfolge folgend sind: {Fläche#3, Fläche#4, Fläche#5, Fläche#6}. Index 1 wird zu der ausgewählten Fläche#4 in die dritte Position in der Anordnung {Fläche#1, Fläche#2, Fläche#4, ---, ---, ---} übertragen.
- Schritt 4: Die übrigen Flächen der Reihenfolge folgend sind: {Fläche#3, Fläche#5, Fläche#6}. Index 0 wird zu der ausgewählten Fläche#3 in die vierte Position in der Anordnung {Fläche#1, Fläche#2, Fläche#4, Fläche#3, ---, ---} übertragen.
- Schritt 5: Die übrigen Flächen der Reihenfolge folgend sind: {Fläche#5, Fläche#6}. Index 0 wird zu der ausgewählten Fläche#5 in die fünfte Position in der Anordnung {Fläche#1, Fläche#2, Fläche#4, Fläche#3, Fläche#5, ---} übertragen.
- Schritt 6: Die übrige Fläche ist {Fläche#6} und wird als die letzte Position in der Anordnung {Fläche#1, Fläche#2, Fläche#4, Fläche#3, Fläche#5, Fläche#6} gewählt.
-
Die Rotation kann auch von der Referenzanordnung vorausberechnet werden. 10 stellt ein Beispiel einer Rotationsvorausberechnung dar, wobei ein Bild 1010 zu sechs kubischen Flächen korrespondiert, ein Bild 1020 zu einer Referenzanordnung korrespondiert und ein Bild 1030 zu der Zielanordnung korrespondiert. In 10 sind die ersten drei Positionen in der Zielanordnung rotiert.
-
In dem vorstehenden Beispiel können die nachfolgenden Schritte angewendet werden, um die Zielanordnung von der Referenzanordnung vorauszuberechnen. In diesem Beispiel ist die Referenzanordnung {Fläche#1 (0), Fläche#2 (0), Fläche#3 (0), Fläche#4 (0), Fläche#5 (0), Fläche#6 (0)} und die Zielanordnung ist {Fläche#1 (-90), Fläche#2 (-90), Fläche#3 (-90), Fläche#5 (0), Fläche#4 (0), Fläche#6 (0)}, wobei (0) 0 Grad kennzeichnet und (-90) -90 Grad kennzeichnet.
-
Schritt
1: Die übrigen Flächen der Reihenfolge folgend sind: {Fläche#1 (0), Fläche#2 (0), Fläche#3 (0), Fläche#4 (0), Fläche#5 (0), Fläche#6 (0)}. Index
0 wird zu der ausgewählten Fläche#1 in die erste Position in der Anordnung {Fläche#1, ---, ---, ---, ---, ---} übertragen. Der verkürzte Unär-Code mit der Größe
6, wie in Tabelle 5 gezeigt, kann verwendet werden, um den Index
0 zu codieren, wobei die Zeile des ausgewählten Codes in fettem, kursivem Font angezeigt ist. Die Differenz des Grads (-90) wird weiter übertragen und der endgültige Grad wird rekonstruiert als: Referenzgrad + Differenz des Grads = (0) + (-90) = (-90). Die Differenz des Grads (-90) kann unter Verwendung entweder des Rotations-Codes vom Typ
1 in Tabelle 6 oder dem Rotations-Code vom Typ
2 (Tabelle
4) in Tabelle 7 codiert werden, wobei die Zeile des ausgewählten Codes in fettem, kursivem Font angezeigt ist.
Tabelle 5.
n (nichtnegativ) | n (streng positiv) | Verkürzter Unär-Code | Alternative |
0 | 1 | | 0 | | 1 |
1 | 2 | | 10 | | 01 |
2 | 3 | | 110 | | 001 |
3 | 4 | | 1110 | | 0001 |
4 | 5 | | 11110 | | 00001 |
5 | 6 | | 11111 | | 00000 |
Tabelle 6.
n (nichtnegativ) | Rotationsgrad Typ 1 | Verkürzter Unär-Code | Alternative |
0 | 0 Grad | | 0 | | 1 |
1 | -90 Grad | | 10 | | 01 |
2 | +90 Grad | | 110 | | 001 |
3 | +180 Grad | | 111 | | 000 |
Tabelle 7.
n (nichtnegativ) | Rotationsgrad Typ 1 | Verkürzter Unär-Code | Alternative |
0 | 0 Grad | | 0 | | 1 |
1 | -90 Grad | | 1 | | 0 |
-
Schritt
2: Die übrigen Flächen der Reihenfolge folgend sind: {Fläche#2 (0), Fläche#3 (0), Fläche#4 (0), Fläche#5 (0), Fläche#6 (0)}. Index
0 wird zu der ausgewählten Fläche#2 in die zweite Position in der Anordnung {Fläche#1, Fläche#2, ---, ---, ---, ---} übertragen. Die Differenz des Grads (-90) wird weiter übertragen. In diesem Fall kann ein verkürzter Unär-Code mit der Größe
5, wie in Tabelle 8 gezeigt, verwendet werden, um den Index
0 zu codieren, wobei die Zeile des ausgewählten Codes in fettem, kursivem Font angezeigt ist.
Tabelle 8.
n (nichtnegativ) | n (streng positiv) | Verkürzter Unär-Code | Alternative |
0 | 1 | | 0 | | 1 |
1 | 2 | | 10 | | 01 |
2 | 3 | | 110 | | 001 |
3 | 4 | | 1110 | | 0001 |
4 | 5 | | 1111 | | 0000 |
-
Schritt
3: Die übrigen Flächen der Reihenfolge folgend sind: {Fläche#3 (0), Fläche#4 (0), Fläche#5 (0), Fläche#6 (0)}. Index
0 wird zu der ausgewählten Fläche#3 in die dritte Position in der Anordnung {Fläche#1, Fläche#2, Fläche#3, ---, ---, ---} übertragen. Die Differenz des Grads (-90) wird weiter übertragen. In diesem Fall kann ein verkürzter Unär-Code mit der Größe
4, wie in Tabelle 9 gezeigt, verwendet werden, um den Index
0 zu codieren, wobei die Zeile des ausgewählten Codes in fettem, kursivem Font angezeigt ist.
Tabelle 9.
n (nichtnegativ) | n (streng positiv) | Verkürzter Unär-Code | Alternative |
0 | 1 | | 0 | | 1 |
1 | 2 | | 10 | | 01 |
2 | 3 | | 110 | | 001 |
3 | 4 | | 111 | | 000 |
-
Schritt
4: Die übrigen Flächen der Reihenfolge folgend sind: {Fläche#4 (0), Fläche#5 (0), Fläche#6 (0)}. Index
1 wird zu der ausgewählten Fläche#5 in die vierte Position in der Anordnung {Fläche#1, Fläche#2, Fläche#3, Fläche#5, ---, ---} übertragen. Die Differenz des Grads (
0) wird weiter übertragen. In diesem Fall kann ein verkürzter Unär-Code mit der Größe
3, wie in Tabelle 10 gezeigt, verwendet werden, um den Index
1 zu codieren, wobei die Zeile des ausgewählten Codes in fettem, kursivem Font angezeigt ist.
Tabelle 10.
n (nichtnegativ) | n (streng positiv) | Verkürzter Unär-Code | Alternative |
0 | 1 | | 0 | | 1 |
1 | 2 | | 10 | | 01 |
2 | 3 | | 11 | | 00 |
-
Schritt
5: Die übrigen Flächen der Reihenfolge folgend sind: {Fläche#4 (0), Fläche#6 (0)}. Index
0 wird zu der ausgewählten Fläche#4 in die fünfte Position in der Anordnung {Fläche#1, Fläche#2, Fläche#3, Fläche#5, Fläche#4, ---} übertragen. Die Differenz des Grads (
0) wird weiter übertragen. In diesem Fall kann ein verkürzter Unär-Code mit der Größe
2, wie in Tabelle 11 gezeigt, verwendet werden, um den Index
0 zu codieren, wobei die Zeile des ausgewählten Codes in fettem, kursivem Font angezeigt ist.
Tabelle 11.
n (nichtnegativ) | n (streng positiv) | Verkürzter Unär-Code | Alternative |
0 | 1 | | 0 | | 1 |
1 | 2 | | 1 | | 0 |
-
Schritt 6: Die übrige Fläche ist {Fläche#6 (0)} und wird als die letzte Position in der Anordnung {Fläche#1, Fläche#2, Fläche#4, Fläche#3, Fläche#5, Fläche#6} gewählt. Die Differenz des Grads (0) wird weiter übertragen.
-
Zum Beispiel kann ein Index zuerst in der Bild-/Slice-/Rahmen-Ebene übertragen werden, um eine Abbildungsanordnung als die Referenzanordnung auszuwählen. Das Vorausberechnungsverfahren wird dann weiter angewendet, um die Zielanordnung für das/den aktuelle/aktuellen Bild/Slice/Rahmen von der Referenzanordnung vorauszuberechnen. In einem anderen Beispiel kann die Referenzanordnung von dem vorhergehend codierten Bild/Slice/Rahmen hergeleitet werden, und das Vorausberechnungsverfahren wird dann angewendet, um die Zielanordnung für das/den aktuelle/aktuellen Bild/Slice/Rahmen vorauszuberechnen.
-
In den vorstehend vorgeschlagenen Verfahren kann der verkürzte Unär-Code auch durch ein anderes Entropie-Codierungsverfahren ersetzt werden. Zum Beispiel kann eins der nachfolgenden Entropie-Codierungsverfahren in dieser Erfindung angewendet werden.
- - ae(v): ein kontextadaptives, arithmetisches, entropie-codiertes Syntaxelement.
- - b(8): ein Byte, das ein Muster einer Bit-Reihe (8 Bits) aufweist. Der Analyseprozess für diesen Deskriptor wird durch den Rückgabewert der Funktion read_bits(8) spezifiziert.
- - f(n): eine Festmuster-Bit-Reihe, die n Bits verwendet, die (von links nach rechts) mit dem linken Bit zuerst geschrieben werden. Der Analyseprozess für diesen Deskriptor wird durch den Rückgabewert der Funktion read_bits(n) spezifiziert.
- - se(v): ein Exp-Golomb-codiertes Syntaxelement einer vorzeichenbehafteten ganzen Zahl 0-ter Ordnung mit dem linken Bit zuerst.
- - u(n): eine vorzeichenlose ganze Zahl, die n Bits verwendet. Wenn n gleich „v“ in der Syntaxtabelle ist, variiert die Anzahl von Bits auf eine Weise, die von dem Wert anderer Syntaxelemente abhängt. Der Analyseprozess für diesen Deskriptor wird durch den Rückgabewert der Funktion read_bits(n) spezifiziert, der als eine binäre Repräsentation einer vorzeichenlosen ganzen Zahl mit dem höchstwertigen Bit zuerst geschrieben interpretiert wird.
- - ue(v): ein Exp-Golomb-codiertes Syntaxelement einer vorzeichenlosen ganzen Zahl 0-ter Ordnung mit dem linken Bit zuerst.
-
Ein beispielhafter Syntaxaufbau für das Anordnungssignalisieren gemäß einer Ausführungsform der vorliegenden Erfindung wird wie folgt gezeigt:
Tabelle 12.
layout_mapping_extension() { | Deskriptor |
| ... | |
| for (i=0 i<num_of_layout_faces-1; i++ ) { | |
| layout_face[i] | ue(v) |
| |
| } | |
| ... | |
} | |
-
In der vorstehenden Syntaxtabelle spezifiziert eine Syntax num_of_layout_faces die Gesamtzahl von Flächen in der Anordnung. Eine Syntax layout-face[i] spezifiziert den Index in den übrigen (num_of_layout_faces- i) Flächen als die korrespondierende Fläche für die i-te Position in der Anordnung, und der Wert von layout_face[i] soll in dem Bereich von einschließlich 0 bis einschließlich (num_of_layout_faces- i - 1) liegen. Eine Syntax layout_face[num_of_layout_faces- 1] wird abgeleitet, gleich der letzten übrigen Fläche zu sein.
-
Ein beispielhafter Syntaxaufbau für eine Anordnungssignalisierung mit einer Rotation gemäß einer Ausführungsform der vorliegenden Erfindung wird wie folgt gezeigt:
Tabelle 13.
layout_mapping_extension() { | Deskriptor |
| ... | |
| for (i=0 i<num_of_layout_faces-1; i++ ) { | |
| layout_face[i] | ue(v) |
| layout_rotation[i] | ue(v) |
| } | |
| layout_rotation[num_of_layout_faces-1] | ue(v) |
} | | |
-
In der vorstehenden Syntaxtabelle spezifiziert die Syntax num_of_layout_faces den Index in den übrigen num_of_layout_faces - i Flächen als die korrespondierende Fläche für die i-te Position in der Anordnung, und der Wert von layout_face[i] soll in dem Bereich von einschließlich 0 bis einschließlich (num_of_layout_faces- i - 1) liegen. Die Syntax layout_face[num_of_layout_faces- 1] wird abgeleitet, gleich der letzten übrigen Fläche zu sein. Die Syntax layout_face[i] spezifiziert die korrespondierende Flächenrotation für die i-te Position in der Anordnung, wie in Tabelle 14 oder Tabelle 15 spezifiziert, und der Wert von layout_face[i] soll in dem Bereich von einschließlich 0 bis einschließlich 3 (oder 1) liegen.
Tabelle 14.
layout_rotation[i] | Rotationsgrad |
0 | 0 |
1 | -90 |
2 | +90 |
3 | +180 |
Tabelle 15.
layout_rotation[i] | Rotationsgrad |
0 | 0 |
1 | -90 |
-
Gemäß einer anderen Ausführungsform wird ein beispielhafter Syntaxaufbau für die Anordnungssignalisierung in Tabelle 16a und Tabelle 16b gezeigt, wobei eine zusätzliche Syntax für die Informationen der Permutation und der Rotation dieser sechs kubischen Flächen signalisiert wird. Eine vorgegebene relative Lage der kubischen Flächen. Das anfängliche Feld kubischer Flächen ist gleich {Left, Front, Right, Rear, Top, Bottom}. Die Bezeichnung von Indizes kubischer Flächen und einer korrespondierenden äquirektangulären Projektion sind in
11 gezeigt.
Tabelle 16a.
Extension_data(i) { | Deskriptor |
| While (next_bits(32) == extension_startcode) { | |
| extension_startcode | f(32) |
| if (i == 0) { | |
| if (next_bits(4)== ‘0010’) | |
| sequence_display_extension() | |
| else if (next_bits(4) == ‘0011’) | |
| temporal_scalability_extension() | |
| else if (next_bits(4) == ‘0100’) | |
| copyright_extension() | |
| else if (next_bits(4) == ‘1010’) | |
| mastering_display_and_content_metadata_extension() | |
| else if (next_bits(4) == ‘1011’) | |
| camera_parameters_extension() | |
| else if (next_bits(4) == ' 1100') | |
| layout_mapping_extension() | |
| else | |
| ... | |
Tabelle 16b.
layout_mapping_extension() { | Deskriptor |
| |
| num_of_layout_face_minus1 | ue(v) |
| for (i=0 i<num_of_layout_face_minus1; i++ ) { | |
| layout_face[i] | ue(v) |
| layout_rotation[i] | ue(v) |
| } | | |
| layout_rotation[num_of_layout_face_minus1] | ue(v) |
} | | |
-
In der vorstehenden Syntaxtabelle spezifiziert num_of_layout_face_minus1 die Gesamtzahl von Flächen in der Anordnung. Die Syntax num_of_layout_faces wird abgeleitet, num_of_layout_face_minus1 + 1 zu sein. Die Syntax layout_face[i] spezifiziert den Index in den übrigen (num_of_layout_faces- i) Flächen als die korrespondierende Fläche für die i-te Position in der Anordnung, und der Wert von layout_face[i] soll in dem Bereich von einschließlich 0 bis einschließlich (num_of_layout_face_minus1 - i) liegen. Die Syntax layout_face[num_of_layout_face_minus1] wird abgeleitet, gleich der letzten übrigen Fläche zu sein. Die Syntax layout_rotation[i] spezifiziert die korrespondierende Flächenrotation für die i-te Position in der Anordnung, wie in Tabelle 17 spezifiziert, und der Wert von layout_rotation[i] soll in dem Bereich von einschließlich 0 bis einschließlich 3 liegen.
Tabelle 17.
layout_rotation[i] | Rotationsgrad (entgegen dem Uhrzeigersinn) |
0 | 0 |
1 | -90 |
2 | +90 |
3 | +180 |
-
Die Reihenfolge der Position in jeder kubischen Anordnung (d.h. layout_face[i]) ist in 12 für eine 1x6-Anordnung 1210, eine 2x3-Anordnung 1220, eine 3x2-Anordnung 1230 und eine 6x1-Anordnung 1240 gezeigt. 13 stellt ein Beispiel einer Vorgabeanordnung 1310 der sechs kubischen Flächen und eine kubische Ziel-3x2-Anordnung 1320 dar.
-
Ein Beispiel eines Signalisierens der sechsflächigen Anordnung gemäß der vorstehenden Ausführungsform ist in der nachfolgenden Tabelle gezeigt. Für i=0, 1 und 2 korrespondieren die ersten drei Anordnungsflächenwahlen zu den ersten Positionen in der Liste (d.h. 0 {Left}, 0 {Front}, und 0 {Right}). Entsprechend wird Index
0 für i=0,
1 und
2 ausgewählt. Für i-3 wird die zweite Position in der Liste (d.h. 1 {Top}) ausgewählt. Entsprechend wird Index
1 signalisiert. Für i=4 wird die erste zweite Position in der Liste (d.h. 0 {Rear}) ausgewählt. Entsprechend wird Index
0 signalisiert. Es besteht keine Notwendigkeit, den Index für die letzte sechsflächige Anordnung zu signalisieren, da es nur eine übrige kubische Fläche gibt. Layout_rotation[i] wird jedoch für die letzte kubische Fläche (d.h. i=5) benötigt.
Tabelle 18.
Schritt #0: num_of_layout_face_minus1 = 5 |
Schritt #1 | Übrige Flächen im sechsflächigen Feld | layout_face[i] | layout_rotation[i] |
i = 0 | {Left(0), Front(1), Right(2), Rear(3), Top(4), Bottom(5)} | 0 {Left} | 0 |
i = 1 | {Front(0), Right(1), Rear(2), Top(3), Bottom(4)} | 0 {Front} | 0 |
i = 2 | {Right(0), Rear(1), Top(2), Bottom(3)} | 0 {Right} | 0 |
i = 3 | {Rear(0), Top(1), Bottom(2)} | 1 {Top} | 1 |
i = 4 | {Rear(0), Bottom(1)} | 0 {Rear} | 2 |
Schritt #2: |
Die letzte Position der Anordnung ist kubische Fläche {Bottom} und layout_rotation[num_of_layout_face_minus1] = 1 |
-
In einer anderen Ausführungsform weist der Syntaxaufbau für ein Anordnungssignalisieren eine zusätzliche Syntax auf, um Informationen der Permutation und der Rotation dieser sechs kubischen Flächen zu signalisieren. Die vorgegebene relative Lage von kubischen Flächen und ihre Indizes sind in 14 gezeigt, wobei der Index kubischer Flächen 1410 und eine korrespondierende äquirektanguläre Projektion 1420 gezeigt sind.
-
Ein beispielhafter Syntaxaufbau gemäß der vorstehenden Ausführungsform ist in Tabelle 19a und Tabelle 19b gezeigt. In Tabelle 19a ist die mapping_extension() definiert, wie durch den Text in Kursivschrift angezeigt. Die Details der mapping_extension() sind in Tabelle 19b gezeigt.
Tabelle 19a.
Extension data(i) { | Deskriptor |
| While (next_bits(32) = extension_start_code ) { | |
| extension_start_code | f(32) |
| if(i == 0) { | |
| if (next_bits(4) == ‘0010’) | |
| sequence_display_extension() | |
| else if (next_bits(4) == ‚0011‘) | |
| temporal_scalability _extension() | |
| else if (next_bits(4) == ‘0100’) | |
| copyright_extension() | |
| else if (next_bits(4) == ‘1010’) | |
| mastering_display_and_content_metadata_extension() | |
| else if (next_bits(4) == ‚1011‘) | |
| camera_parameters_extension() | |
| else if (next_bits(4) == ‘xxxx’) | |
| mapping extension () | |
| else | |
Tabelle 19b.
mapping_extension() { | Deskriptor |
| |
| num_of_layout_face_minus1 | ue(v) |
| for (i=0; i<num_of_layout_face_minus1; i++) { | |
| layout_face[i] | ue(v) |
| layout_rotation[i] | ue(v) |
| } | | |
| layout_rotation[num_of_layout_face_minus1] | ue(v) |
} | | | |
-
In den vorstehenden Tabellen spezifiziert die Syntax num_of_layout_face_minus1 die Gesamtzahl von Flächen in der Anordnung. Die Syntax num_of_layout_faces wird abgeleitet, num_of_layout_face_minus1 + 1 zu sein. Die Syntax layout_face[i] spezifiziert den Index kubischer Flächen als die korrespondierende Fläche für die i-te Position in der Anordnung, und der Wert von layout_face[i] soll in dem Bereich von einschließlich 0 bis einschließlich (num_of_layout_face_minus1) liegen. Die Syntax layout_face[num_of_layout_face_minus1] wird abgeleitet, gleich der letzten übrigen Fläche zu sein. Die Syntax layout_rotation[i] spezifiziert die korrespondierende Flächenrotation für die i-te Position in der Anordnung, wie in Tabelle 20 spezifiziert, und der Wert von layout_rotation[i] soll in dem Bereich von einschließlich 0 bis einschließlich 3 liegen.
Tabelle 20.
layout_rotation[i] | Rotationsgrad (entgegen dem Uhrzeigersinn) |
0 | 0 |
1 | -90 |
2 | +90 |
3 | +180 |
-
Eine andere beispielhafte Reihenfolge der Position in jeder kubischen Anordnung (d.h. layout_face[i]) ist in 15 für eine 1x6-Anordnung 1510, eine 2x3-Anordnung 1520, eine 3x2-Anordnung 1530 und eine 6x1-Anordnung 1540 gezeigt.
-
Ein anderer beispielhafter Syntaxaufbau gemäß der vorstehenden Ausführungsform ist in Tabelle 21 gezeigt.
Tabelle 21.
mapping_extension() { | Deskriptor |
| mapping_format | ue(v) |
| if (mapping format == ‚CUBICFACE‘) { | |
| cubic_type | ue(v) |
| default _layout_flag | u(1) |
| if(default_layout_flag) { | |
| for (i=0; i<5; i++ ) { | |
| layout_face[i] | ue(v) |
| layout_rotation[i] | ue(v) |
| } | |
| layout_rotation[5] | ue(v) |
| } | |
| } | |
| else if (mapping _format == ‚EQUIRECTANGULAR‘) | |
| ... | |
| else if (mapping_format == ‚180-3D‘) | |
| ... | |
| else if (mapping_format == ‚CYLINDERMAP‘) | |
| ... | |
| |
| |
} | |
-
In der vorstehenden Tabelle spezifiziert mapping_format das Eingabeabbildungsformat eines 360-Grad-Videos, wie in der nachfolgenden Tabelle spezifiziert, wobei der Wert von mapping_format in dem Bereich von einschließlich 0 bis einschließlich 3 liegen soll.
Tabelle 22.
Value | Beschreibung |
0 | CUBICFACE |
1 | EQUIRECTANGULAR |
2 | 180-3D |
3 | CYLINDERMAP |
-
In der Tabelle 21 spezifiziert cubic_type den kubischen Typ in dem kubischen Format (cubic format), wie in der Tabelle 23 spezifiziert, und der Wert von cubic_type soll on dem Bereich von einschließlich 0 bis einschließlich 3 liegen.
Tabelle 23.
Value | Beschreibung |
0 | 1×6 cubic format |
1 | 2×3 cubic format |
2 | 3×2 cubic format |
3 | 6×1 cubic format |
-
Die Syntax default_layout_flag gleich 1 zeigt an, dass die kubische Anordnung der Vorgabeanordnung folgt, wie in Tabelle 24 spezifiziert. Die Syntax default_layout_flag gleich 0 zeigt an, dass die kubische Vorgabeanordnung nicht vorhanden ist und die korrespondierende Fläche und Rotation für jede Position explizit signalisiert wird. Tabelle 24 spezifiziert die Vorgabeanordnung. Die korrespondierende Fläche und Rotation für jede Position in der kubischen Anordnung gemäß der in
12 beschriebenen Reihenfolge wird wie folgt spezifiziert. Die Abbildung von der äquirektangulären Projektion zu den kubischen Flächen ist in
11 definiert.
Tabelle 24.
Cubic_type | Vorgabeanordnung |
1x6 cubic format | {Left(-900), Front(-900), Right(-900), Top(+1800), Rear(00), Bottom(+1800)} |
2x3 cubic format | {Left(-900), Top(+1800), Front(-900), Rear(00), Right(-900), Bottom(+1800)} |
3×2 cubic format | {Left(00), Front(00), Right(00), Top(-900), Rear(+900), Bottom(-900)} |
6×1 cubic format | {Left(00), Front(00), Right(00), Top(-900), Rear(+900), Bottom(-900)} |
-
In Tabelle 21 spezifiziert layout_face[i] den Index in den übrigen Flächen als die korrespondierende Fläche für die i-te Position in der Anordnung. Die Fläche und Rotation für jede Position (d.h. layout_face[i] und layout_rotation[i]) gemäß der in 12 beschriebenen Reihenfolge werden iterativ wie folgt signalisiert. Das anfängliche (Flächenauswahl-) Feld weist alle sechs Flächen in der Reihenfolge von {Left, Front, Right, Rear, Top, Bottom} auf. Für die erste Position wird layout_face[0] signalisiert, um den Index einer ausgewählten Fläche in dem Feld (d.h. {Left, Front, Right, Rear, Top, Bottom}) als die korrespondierende Fläche für die Position 0 anzuzeigen. Der Wert von layout_face[0] soll in dem Bereich von einschließlich 0 bis einschließlich 5 liegen. Die ausgewählte Fläche für die Position 0 wird danach von dem Feld für übrige Kandidaten entfernt. Für die i-te Position wird layout_face[i] signalisiert, um einen Index in dem aktualisierten Feld anzuzeigen, das aus den übrigen nicht ausgewählten Flächen aufgebaut ist, als die korrespondierende Fläche für die Position i anzuzeigen. Der Wert von layout_face[i] soll in dem Bereich einschließlich 0 bis einschließlich 5 - i liegen. Die korrespondierende ausgewählte Fläche für die Position i wird danach von dem Feld von übrigen Kandidaten entfernt. Für die letzte Position wird abgeleitet, dass sie die letzte übrige nicht ausgewählte Fläche ist.
-
In Tabelle 21 spezifiziert layout_rotation[i] die korrespondierende Flächenrotation für die i-te Position in der Anordnung, wie in Tabelle 20 spezifiziert, und der Wert von layout_rotation[i] soll in dem Bereich von einschließlich 0 bis einschließlich 3 liegen.
-
Gemäß einer anderen Ausführungsform ist ein beispielhafter Syntaxaufbau für die Anordnungssignalisierung in Tabelle 25 gezeigt, wobei eine zusätzliche Syntax für die Informationen der Permutation und der Rotation dieser sechs kubischen Flächen signalisiert wird.
Tabelle 25.
mapping_extension() { | Deskriptor |
mapping_format | u(8) |
| if (mapping format == ‚CUBICFACE‘) { | |
cubic_type | u(4) |
default_layout_flag | u(1) |
if(default_layout_flag) { | |
| for (i=0; i<6; i++ ) { | |
| layout_face[i] | u(3) |
| layout_rotation[i] | u(2) |
| } | |
} | |
} | |
| else if (mapping _format == ‚EQUIRECTANGULAR‘) | |
| ... | |
| else if (mapping_format== ‚180-3D‘) | |
| ... | |
| else if (mapping _format == ‚CYLINDERMAP‘) | |
| ... | |
} | |
-
In einer anderen Ausführungsform der vorliegenden Erfindung wird, wenn sechsflächig (cubicface) als das Anordnungsformat ausgewählt wird, ein zweites Kennzeichen in der Sequenzebene, der Ansichtsebene, der Bildebene, der Slice-Ebene, der Tile-Ebene, dem SPS, dem VPS oder dem APS des Bitstroms übertagen, um einen kubischen Typ von einem Satz von kubischen Typen auszuwählen, welcher mindestens zwei von einem kubischen 1x6-Format, einem kubischen 2x3-Format, einem kubischen 3x2-Format und einem kunbischen 6x1-Format umfasst.
-
In einer anderen Ausführungsform wird ein Kennzeichen in der Sequenzebene, der Ansichtsebene, der Bildebene, der Slice-Ebene, der Tile-Ebene, dem SPS, dem VPS oder dem APS des Bitstroms übertragen, um anzuzeigen, ob eine vordefinierte Vorgabeanordnung für kubisch oder ein anderes Format verwendet wird. Wenn die vordefinierte Vorgabeanordnung für kubisch oder ein anderes Format nicht verwendet wird, dann wird die Anordnung explizit in den Bitstrom übertragen. Die vordefinierte Anordnung für die kubische Fäche könnte wie Tabelle 24 definiert sein.
-
Andere vordefinierte Anordnungen können ebenfalls verwendet werden. Zum Beispiel kann eine unterschiedliche kubische 6x1-Anordnung auch, wie in 16a gezeigt, definiert werden. Eine unterschiedliche kubische 3x2-Anordnung ist in 16b gezeigt. Zwei unterschiedliche kubische 2x3-Anordnungen (1610 und 1611) sind in 16c gezeigt. Sechs unterschiedliche kubische 1x6-Anordnungen (1620 bis 1625) sind in 16d gezeigt.
-
Um die Anordnung explizit zu signalisieren, wird (werden) die korrespondierende(n) Fläche(n) und/oder die zu jeder korrespondierenden Fläche gehörende(n) Rotation(en) in dem Bitstrom übertragen. In einem Beispiel weist ein anfängliches (Flächenauswahl-) Feld mindestens zwei von {Left, Front, Right, Rear, Top, Bottom} auf, wobei eine vordefinierten Reihenfolge gegeben ist.
-
Für die erste Position wird eine Syntax signalisiert, um den Index einer ausgewählten Fläche in dem gegebenen Feld als die korrespondierende Fläche für die erste Position anzuzeigen, und der Wert der Syntax soll in dem Bereich von 0 bis (N - 1) liegen, wobei N die Anzahl aller Flächen repräsentiert.
-
Für die i-te Position wird eine andere Syntax signalisiert, um den Index in dem aktualisierten Feld, das aus den übrigen nicht ausgewählten Flächen aufgebaut ist, als die korrespondierende Fläche für die Position i anzuzeigen, und der Wert dieser Syntax soll in dem Bereich von einschließlich 0 bis einschließlich (N - 1) liegen. Für die letzte Position wird hergeleitet, dass sie die letzte übrige, nicht ausgewählte Fläche ist.
-
In einem anderen Beispiel weist ein anfängliches (Flächenauswahl-) Feld mindestens zwei von {Left, Front, Right, Rear, Top, Bottom} auf, wobei eine vordefinierten Reihenfolge gegeben ist.
-
Für die erste Position wird eine Syntax signalisiert, um den Index einer ausgewählten Fläche in dem gegebenen Feld als die korrespondierende Fläche für die erste Position anzuzeigen, und der Wert der Syntax soll in dem Bereich von 0 bis (N - 1) liegen, wobei N die Anzahl aller Flächen repräsentiert. Die ausgewählte Fläche für die erste Position wird danach von dem Feld entfernt.
-
Für die i-te Position wird eine andere Syntax signalisiert, um einen Index in dem aktualisierten Feld, das aus den übrigen nicht ausgewählten Flächen besteht, als die korrespondierende Fläche für die Position i anzuzeigen, und der Wert dieser Syntax soll in dem Bereich von einschließlich 0 bis einschließlich (N - 1 - i) liegen. Die korrespondierende ausgewählte Fläche für die Position i wird danach von dem Feld entfernt. Für die letzte Position wird hergeleitet, dass sie die letzte übrige nicht ausgewählte Fläche ist.
-
Um die korrespondierende Flächenrotation für jede Position in der Anordnung zu spezifizieren, wird eine Syntax für jede Position übertragen, um die korrespondierende Flächenrotation von einem Satz von Rotationskandidaten anzuzeigen, welcher mindestens zwei von (-90°, +90°, +180°, 0°) aufweist. Die Spezifikation des Index der Rotation kann wie Tabelle 20 definiert werden.
-
17 stellt ein beispielhaftes Ablaufdiagramm eines Systems dar, dass Omnidirektionalbilder gemäß einer Ausführungsform der vorliegenden Erfindung verarbeitet. Die in dem Ablaufdiagramm gezeigten Schritte sowie andere Ablaufdiagramme in dieser Offenbarung können als Programm-Codes implementiert sein, die auf einem oder mehreren Prozessoren (z.B. eine oder mehrere CPUs) auf der Codierer-Seite und/oder der Decodierer-Seite ausführbar sind. Die in dem Ablaufdiagramm gezeigten Schritt können auch basierend auf Hardware wie einer oder mehreren elektronischen Vorrichtungen oder Prozessoren implementiert sein, die angeordnet sind, um die Schritte in dem Ablaufdiagramm auszuführen. Gemäß diesem Verfahren wird ein aktueller Satz von Omnidirektionalbildern, die von jedem sphärischen Bild in einer 360-Grad-Panoramavideosequenz unter Verwendung eines ausgewählten Projektionsformats konvertiert sind, in Schritt 1710 empfangen, wobei das ausgewählte Projektionsformat zu einer Projektionsformatgruppe gehört, die ein sechsflächiges Format umfasst, und der aktuelle Satz von Omnidirektionalbildern mit dem sechsflächigen Format aus sechs kubischen Flächen besteht. Ob das ausgewählte Projektionsformat zu dem sechsflächigen Format korrespondiert, wird in Schritt 1720 geprüft. Wenn das ausgewählte Projektionsformat zu dem sechsflächigen Format korrespondiert, werden die Schritte 1730 und 1740 ausgeführt. Andernfalls (d.h. der „Nein“-Pfad für kein kubisches Format), werden die Schritte 1730 und 1740 übersprungen. In Schritt 1730 werden ein oder mehrere Abbildungssyntaxelemente zum Abbilden des aktuellen Satzes von Omnidirektionalbildern in ein aktuelles Cubemap-Bild, das zu einem Ausgabeanordnungsformatsatz gehört, signalisiert, wobei der Ausgabeanordnungsformatsatz mindestens zwei Ausgabeanordnungsformate aufweist, die von einer Anordnungsgruppe ausgewählt werden, die eine Cubemap-Anordnung und ein äquirektanguläres Format aufweist. In Schritt 1740 werden codierte Daten in einem Bitstrom, der das eine oder die mehreren Abbildungssyntaxelemente aufweist, für den aktuellen Satz von Omnidirektionalbildern bereitgestellt.
-
Das vorstehend gezeigte Ablaufdiagramm ist dazu gedacht, als Beispiele zu dienen, um Ausführungsformen der vorliegenden Erfindung darzustellen. Eine Person mit Kenntnissen auf dem Gebiet kann die vorliegende Erfindung durch Modifizieren von individuellen Schritten, Aufteilen oder Kombinieren von Schritten mit einem Verlassen von dem Geist der vorliegenden Erfindung praktizieren.
-
Die vorstehende Beschreibung wird präsentiert, um einer Person mit gewöhnlichen Kenntnissen auf dem Gebiet zu ermöglichen, die vorliegende Erfindung, wie sie in dem Kontext einer bestimmten Anwendung und ihrer Anforderungen bereitgestellt wird, auszuführen. Verschiedene Modifikationen an den beschriebenen Ausführungsformen sind für diejenigen mit Kenntnissen auf dem Gebiet offensichtlich, und die allgemeinen, hier definierten Prinzipien können auf andere Ausführungsformen angewendet werden. Deshalb ist es nicht beabsichtigt, die vorliegende Erfindung auf die bestimmten gezeigten und beschriebenen Ausführungsformen zu beschränken, sondern sie soll mit dem weitesten Umfang übereinstimmen, der mit den hier offenbarten Prinzipien und Neuheitsmerkmalen konsistent ist. In der vorstehenden detaillierten Beschreibung sind verschiedene spezifische Details dargestellt, um ein vollständiges Verständnis der vorliegenden Erfindung bereitzustellen. Dennoch wird von denjenigen mit Kenntnissen auf dem Gebiet verstanden, dass die vorliegende Erfindung ausgeführt werden kann.
-
Eine Ausführungsform der vorliegenden Erfindung, wie vorstehend beschrieben, kann in verschiedener Hardware, Software-Codes oder einer Kombination von beidem implementiert werden. Zum Beispiel kann eine Ausführungsform der vorliegenden Erfindung eine oder mehrere elektronische Schaltungen, die in einen Videokompressions-Chip integriert sind, oder ein Programm-Code, der in eine Videokompressions-Software integriert ist, sein, um die hier beschriebene Verarbeitung auszuführen. Eine Ausführungsform der vorliegenden Erfindung kann auch ein Programm-Code sein, der auf einem digitalen Signalprozessor (DSP) ausgeführt wird, um die hier beschriebene Verarbeitung auszuführen. Die Erfindung kann auch eine Anzahl von Funktionen involvieren, die durch einen Computer-Prozessor, einen digitalen Signalprozessor, einen Mikro-Prozessor oder ein Field Programmable Gate Array (FPGA) auszuführen sind. Diese Prozessoren können konfiguriert sein, durch Ausführen von maschinenlesbarem Software-Code oder Firmware-Code, welcher die bestimmten Verfahren definiert, die durch die Erfindung verkörpert werden, bestimmte Aufgaben gemäß der Erfindung auszuführen. Der Software-Code oder der Firmware-Code können in unterschiedlichen Programmiersprachen und unterschiedlichen Formaten oder Stilen entwickelt werden. Der Software-Code kann auch für unterschiedliche Ziel-Plattformen übersetzt werden. Unterschiedliche Code-Formate, -Stile und -Sprachen von Software-Codes und andere Mittel eines Konfigurierens von Code, um die Aufgaben gemäß der Erfindung auszuführen, werden jedoch nicht von dem Geist und Umfang der Erfindung abweichen.
-
Die Erfindung kann in anderen spezifischen Formen ausgeführt werden, ohne von ihrem Geist oder essenziellen Eigenschaften abzuweichen. Die beschriebenen Beispiele sollen in allen Bezügen nur als darstellend und nicht einschränkend betrachtet werden. Der Umfang der Erfindung wird deshalb eher durch die angehängten Ansprüche angezeigt als durch die vorstehende Beschreibung. Alle Änderungen, welche innerhalb der Bedeutung und dem Umfang einer Äquivalenz der Ansprüche bleiben, werden durch ihren Umfang eingeschlossen.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-
- US 62332505 [0001]
- US 62356571 [0001]