-
HINTERGRUND
-
Die vorliegende Offenbarung betrifft Kodierungstechniken für multidirektionale Bildgebungsanwendungen.
-
Einige moderne Bildgebungsanwendungen erfassen Bilddaten aus mehreren Richtungen um eine Kamera. Einige Kameras schwenken während der Bilderfassung, was es einer Kamera ermöglicht, Bilddaten über einen Winkelbereich zu erfassen, der das effektive Sichtfeld der Kamera erweitert. Einige andere Kameras weisen mehrere Bildgebungssysteme auf, die Bilddaten in mehreren unterschiedlichen Sichtfeldern aufnehmen. In beiden Fällen kann ein Gesamtbild erstellt werden, das die aus diesen verschiedenen Ansichten erfassten Bilddaten zusammenführt.
-
Eine Vielfalt von Wiedergabeanwendungen ist für multidirektionale Inhalte verfügbar. Eine Wiedergabeanwendung beinhaltet die Extraktion und Anzeige einer Teilmenge des Inhalts eines multidirektionalen Bildes. So kann beispielsweise ein Betrachter ein kopfmontiertes Display verwenden und die Ausrichtung des Displays ändern, um einen Teil des multidirektionalen Bildes zu identifizieren, an dem der Betrachter interessiert ist. Alternativ kann ein Betrachter auch ein stationäres Display verwenden und einen Teil des multidirektionalen Bildes, an dem der Betrachter interessiert ist, über Bedienelemente der Benutzeroberfläche identifizieren. In diesen Wiedergabeanwendungen extrahiert eine Anzeigevorrichtung einen Teil des Bildinhalts aus dem multidirektionalen Bild (zur Vereinfachung als „Ansichtsfenster“ bezeichnet) und zeigt ihn an. Die Anzeigevorrichtung zeigt keine anderen Teile des multidirektionalen Bildes an, die sich außerhalb des vom Ansichtsfenster abgedeckten Bereichs befinden.
-
Folglich empfängt in solchen Anwendungen eine Anzeigevorrichtung Bilddaten, die die zur Anzeige benötigten Daten übersteigen. Wenn empfangene Daten durch Videokompressionstechniken kodiert werden, kann eine Dekodiervorrichtung verwendet werden, um komprimierte Bilddaten des multidirektionalen Bildes in seiner Gesamtheit zu dekodieren, bevor das multidirektionale Bild auf der Anzeige zur Wiedergabe präsentiert wird. Ein Dekodieren solcher Bilddaten beinhaltet Verarbeitungslatenzen, die die Darstellung der Ansichtsfensterdaten verzögern können.
-
Dementsprechend sehen die Erfinder im Stand der Technik einen Bedarf an Videokodierungstechniken, die Daten von multidirektionalen Bildern kodieren, aber unnötige Latenzen bei der Erzeugung von Ansichtsfensterdaten für Anzeigeanwendungen vermeiden.
-
Figurenliste
-
- 1 veranschaulicht ein System gemäß einem Aspekt der vorliegenden Offenbarung.
- 2 veranschaulicht bildlich eine Wiedergabeanwendung für ein Senkengerät gemäß einem Aspekt der vorliegenden Offenbarung.
- 3 veranschaulicht ein Verfahren gemäß einem Aspekt der vorliegenden Offenbarung.
- 4 veranschaulicht ein Bild eines omnidirektionalen Videos, das von einem Quellgerät kodiert werden kann.
- 5 veranschaulicht ein verschobenes Bild, das durch das Verfahren von 3 erhalten werden kann.
- 6 ist ein Funktionsblockdiagramm eines Kodierungssystems gemäß einem Aspekt der vorliegenden Offenbarung.
- 7 ist ein Funktionsblockdiagramm eines Dekodierungssystems gemäß einem Aspekt der vorliegenden Offenbarung.
- 8 ist ein Funktionsblockdiagramm eines Kodierungssystems gemäß einem Aspekt der vorliegenden Offenbarung.
- 9 ist ein Funktionsblockdiagramm eines Dekodierungssystems gemäß einem Aspekt der vorliegenden Offenbarung.
- 10 veranschaulicht ein Verfahren gemäß einem Aspekt der vorliegenden Offenbarung.
- 11 veranschaulicht ein Bild eines omnidirektionalen Videos, das von einem Quellgerät kodiert werden kann.
- 12 veranschaulicht ein verschobenes Bild, das durch das Verfahren von
- 10 erhalten werden kann, wenn es mit den exemplarischen Ansichtsfensterdaten von 11 in einem Aspekt der vorliegenden Offenbarung arbeitet.
- 13 veranschaulicht ein verschobenes Bild, das durch das Verfahren von 10 erhalten werden kann, wenn es mit den exemplarischen Ansichtsfensterdaten von 11 in einem anderen Aspekt der vorliegenden Offenbarung arbeitet.
- Die 14-16 veranschaulichen exemplarische multidirektionale Bildformate, die sich für die Techniken der vorliegenden Offenbarung eignen.
-
DETAILLIERTE BESCHREIBUNG
-
Aspekte der vorliegenden Offenbarung stellen Bildverarbeitungstechniken bereit, die die Kodierung von Ansichtsfensterdaten beschleunigen und dabei unnötige Latenzen beim Erzeugen von Ansichtsfensterdaten für Anzeigeanwendungen vermeiden. Gemäß diesen Techniken kann ein Kodierer den Inhalt eines multidirektionalen Bilddatensatzes entsprechend den von einem Dekodierer bereitgestellten Ansichtsfensterpositionsdaten verschieben. Der Kodierer kann die verschobenen multidirektionalen Bilddaten durch prädiktive Kodierung kodieren und die kodierten multidirektionalen Bilddaten und Daten, die einen Betrag der Verschiebung identifizieren, an den Dekodierer senden. Dadurch kann die Ansichtsfensterposition an Positionen in den Bilddaten verschoben werden, die früher als die Positionen kodiert wurden, die die Ansichtsfensterposition natürlicherweise einnimmt, was die Kodierung beschleunigen kann. Beim Dekodieren kann ein Dekodierer seine aktuelle Ansichtsfensterposition mit den vom Kodierer mit den kodierten Videodaten gelieferten Ansichtsfensterpositionsdaten vergleichen. Der Dekodierer kann die kodierten Videodaten dekodieren und einen Teil der dekodierten Videodaten extrahieren, der einer aktuellen Ansichtsfensterposition für die Anzeige entspricht.
-
1 veranschaulicht ein System 100 gemäß einem Aspekt der vorliegenden Offenbarung. Das System 100 ist dabei so dargestellt, dass es ein Quellgerät 110 und ein Senkengerät 120 aufweist, die durch ein Netzwerk 130 miteinander verbunden sind. Das Quellgerät 110 kann eine kodierte Darstellung von omnidirektionalem Video an das Senkengerät 120 übertragen. Das Senkengerät 120 kann das kodierte Video empfangen, es dekodieren und einen ausgewählten Teil des dekodierten Videos anzeigen.
-
1 veranschaulicht das Quellgerät 110 als eine multidirektionale Kamera, die Bilddaten einer örtlichen Umgebung erfasst, bevor sie kodiert werden. In einem weiteren Aspekt kann das Quellgerät 110 omnidirektionales Video von einer externen Quelle (nicht dargestellt) empfangen, wie beispielsweise einem Streaming-Dienst oder einer Speichervorrichtung.
-
Das Senkengerät 120 kann eine Ansichtsfensterposition in einem dreidimensionalen Raum bestimmen, der durch das multidirektionale Bild dargestellt wird. Das Senkengerät 120 kann einen Teil des dekodierten Videos, der angezeigt werden soll, zum Beispiel basierend auf der Ausrichtung des Geräts im freien Raum, auswählen. 1 veranschaulicht das Senkengerät 120 als ein kopfmontiertes Display, aber in anderen Aspekten kann das Senkengerät 120 ein anderer Typ einer Anzeigevorrichtung sein, wie eine stationäre Flachbildschirmanzeige, ein Smartphone, ein Tablet-Computer, eine Spielvorrichtung oder ein tragbarer Mediaplayer. Verschiedene Arten von Benutzersteuerungen können mit jedem solchen Anzeigetyp bereitgestellt werden, durch den ein Betrachter das Ansichtsfenster identifiziert. Der Gerätetyp des Senkengeräts ist für die vorliegende Diskussion unbedeutend, sofern hier nicht anders angegeben.
-
Das Netzwerk 130 stellt eine beliebige Anzahl von Computer- und/oder Kommunikationsnetzwerken dar, die sich von dem Quellgerät 110 zum Senkengerät 120 erstrecken. Das Netzwerk 130 kann ein oder eine Kombination von leitungsvermittelten und/oder paketvermittelten Kommunikationsnetzen beinhalten. Das Netzwerk 130 kann Daten zwischen dem Quellgerät 110 und dem Senkengerät 120 durch eine beliebige Anzahl von drahtgebundenen und/oder drahtlosen Kommunikationsmedien übermitteln. Die Architektur und der Betrieb des Netzwerks 130 sind für die vorliegende Diskussion unerheblich, sofern hier nicht anders angegeben.
-
1 veranschaulicht eine Kommunikationskonfiguration, bei der kodierte Videodaten in einer einzigen Richtung von dem Quellgerät 110 zu dem Senkengerät 120 übertragen werden. Aspekte der vorliegenden Offenbarung finden Anwendung bei Kommunikationsgeräten, die kodierte Videodaten bidirektional austauschen, von Gerät 110 zur Gerät 120 und auch von Gerät 120 zu Gerät 110. Die Prinzipien der vorliegenden Offenbarung finden Anwendung mit sowohl unidirektionalem als auch bidirektionalem Austausch von Video.
-
2 veranschaulicht bildlich eine Wiedergabeanwendung für ein Senkengerät 200 gemäß einem Aspekt der vorliegenden Offenbarung. Dort wird das omnidirektionale Video so dargestellt, als ob es entlang einer kugelförmigen Oberfläche 210 existiert, die um das Senkengerät 200 herum vorgesehen ist. Basierend auf der Ausrichtung des Senkengeräts 200, kann das Gerät 200 einen Abschnitt des Videos (zur Vereinfachung als „Ansichtsfenster“ bezeichnet) auswählen und den ausgewählten Abschnitt anzeigen. Wenn sich die Ausrichtung des Senkengeräts 200 ändert, kann das Gerät 200 verschiedene Abschnitte aus dem Video auswählen. In 2 ist beispielsweise das Ansichtsfenster veranschaulicht, das sich von einer ersten Position 230 zu einer zweiten Position 240 entlang der Oberfläche 210 ändert.
-
Aspekte der vorliegenden Offenbarung können Videokompressionstechniken gemäß einem beliebigen aus einer Anzahl von Kodierungsprotokollen anwenden. So kann beispielsweise das Quellgerät 110 (1) Videodaten gemäß einem ITU-T-Kodierungsprotokoll wie H.265 (HEVC), H.264 (AVC) oder einem Vorgänger-Kodierungsprotokoll kodieren. Üblicherweise zerlegen solche Protokolle einzelne Bilder des Videos in räumliche Video-Arrays, die hier „Kacheln“ genannt werden, und sie kodieren die Pixelblöcke in einer regulären Kodierreihenfolge, wie beispielsweise einer Raster-Scanreihenfolge.
-
3 veranschaulicht ein Verfahren 300 gemäß einem Aspekt der vorliegenden Offenbarung. Gemäß dem Verfahren 300 kann ein Senkengerät 120 Daten an das Quellgerät 110 übertragen, die eine Position eines Ansichtsfensters identifizieren, das von dem Senkengerät 120 angezeigt wird (Nachricht 310). Als Reaktion auf die Ansichtsfensterpositionsdaten kann das Verfahren 300 Kacheln des omnidirektionalen Bildes um einen Betrag verschieben, der den Ansichtsfensterpositionsdaten (Kasten 320) entspricht. Das Verfahren 300 kann das verschobene Bild prädiktiv kodieren (Kasten 330) und danach das kodierte Video des verschobenen Bildes zusammen mit den die Position des Ansichtsfensters identifizierenden Daten zum Senkengerät 120 übertragen (Nachricht 340).
-
Das Senkengerät 120 kann die kodierten Videodaten empfangen und dekodieren (Kasten 350). Das Senkengerät 120 kann auch Daten aus dem dekodierten Bild extrahieren, die dem Ansichtsfenster entsprechen und es anzeigen (Kasten 360).
-
Das Verfahren 300 von 3 kann sich im Laufe einer Videokodierungssitzung in mehreren Iterationen wiederholen. Es wird erwartet, dass das Senkengerät 120 seine Ansichtsfensterposition (Nachricht 310) in periodischen Intervallen berichtet und, zwischen solchen Berichten von Ansichtsfensterpositionen, kodiert das Quellgerät 110 neu empfangene Bilder einer Videosequenz, nachdem sie verschoben wurden, um die dann aktuelle Ansichtsfensterposition zu berücksichtigen (Kasten 310). Wie hier beschrieben, nutzt die prädiktive Videokodierung oft die zeitliche Redundanz in einer Videosequenz aus, indem sie ein Eingangsbild differentiell in Bezug auf zuvor kodierte Bilder darstellt, die als Referenzbilder dienen sollen. In einem Aspekt kann das Verfahren 300 auch die Referenzbilder verschieben, so dass sie einer neu empfangenen Ansichtsfensterposition entsprechen (Kasten 370). Auf diese Weise kann die Ausrichtung zwischen der Orientierung der Eingangsbilder und der Orientierung der Referenzbilder beibehalten werden, was die Größe der Bewegungsvektoren reduzieren kann, die bei der prädiktiven Kodierung abgeleitet werden.
-
4 veranschaulicht ein Bild 400 eines omnidirektionalen Videos, das von einem Quellgerät 110 kodiert werden kann. Dort wird das Bild 400 als in eine Vielzahl von Kacheln 410.0-410.n zerlegt dargestellt. Jede Kachel ist in einer Raster-Scanreihenfolge kodiert. So kann der Inhalt der Kachel 410.0 vor dem Inhalt der Kachel 410.1 kodiert werden, der Inhalt der Kachel 410.1 kann vor dem Inhalt der Kachel 410.2 kodiert werden. Der Prozess kann sequentiell fortgesetzt werden, indem jede Kachel entlang einer gemeinsamen Reihe kodiert wird und die Kacheln in einer nachfolgenden Reihe kodiert werden, bis eine endgültige Kachel 410.n einer letzten Reihe von Kacheln kodiert ist. Üblicherweise werden die Kacheln 410.0-410.n mit Bezug auf einen Ursprungspunkt 420 definiert, der für das Quellbild 400 definiert ist.
-
Wie besprochen, kann ein Senkengerät 120 (1) ein Ansichtsfenster 430 aus dem Bild 400 extrahieren, nachdem es von dem Quellgerät 110 (1) kodiert, an das Senkengerät 120 übertragen und dekodiert wurde. Das Senkengerät 120 kann das Ansichtsfenster 400 lokal anzeigen. Das Senkengerät 120 kann Daten an das Quellgerät 110 senden, die eine Position des Ansichtsfensters 430 innerhalb eines Bereichs des Bildes 400 identifizieren. Zum Beispiel kann das Senkengerät 120 Offsetdaten, als Offset-x und Offset-y gezeigt, übertragen, die eine Position des Ansichtsfensters 430 innerhalb des Bereichs des Bildes 400 identifizieren.
-
5 veranschaulicht ein verschobenes Bild 500, das durch das Verfahren 300 von 3 erhalten werden kann, das auf das exemplarische Bild 400 von 4 angewandt wird. In diesem Beispiel kann das Verfahren 400 die Bilddaten 400 in ganzzahligen Anzahlen von Kacheln verschoben haben, um das Ansichtsfenster 530 so nahe an einem Ursprung 520 des Bildes 500 wie möglich zu lokalisieren. Wenn die Bilddaten verschoben werden, können Kachel-für-Kachel-Kodierungsprozesse dazu führen, dass die Kacheln 510.0-510.3 in der ersten Reihe des verschobenen Bildes 500 zuerst kodiert werden, gefolgt von den Kacheln 510.4-510.7 und 510.8-510.n der nachfolgenden Reihen. Es wird erwartet, dass das Verschieben von Videodaten dazu führt, dass die Bildinhalte des Ansichtsfensters 530 in die erste(n) Reihe(n) gebracht werden, die kodiert ist/sind.
-
Das Dekodieren der kodierten Videodaten kann auch in einer Raster-Scanreihenfolge erfolgen. Wenn somit die kodierten Videodaten des Bildes 500 dekodiert werden, wird erwartet, dass dekodierte Videodaten der Kacheln 510.0-510.3 in der ersten Reihe verfügbar sind, bevor dekodierte Videodaten der Kacheln 510.4-510.7 und 510.8 - 510.n der nachfolgenden Reihen verfügbar sind. Auf diese Weise werden dekodierte Videodaten des Ansichtsfensters 530 mit reduzierter Latenzzeit erhalten und angezeigt.
-
Das Verschieben von Daten in einem omnidirektionalen Bild kann dazu führen, dass der Bildinhalt um die Ränder des Bildes herum „gewickelt“ wird. Wenn also die Kacheln 410.4-410.7 (4) von einer Position in einer mittleren Reihe zu den Kacheln 510.0-510.3 in einer Position in einer oberen Reihe verschoben werden, wickeln sich die Kacheln 410.0-410.3, die früher die Position der oberen Reihe belegten, um eine niedrigste Position des Bildes. In dem Beispiel der 4 und 5 wird das Ansichtsfenster 430 um eine Zeile verschoben und daher werden die Kacheln 410.0-410.3 der oberen Reihe in 4 um eine Zeilenposition in die untere Reihe von Kacheln 510.8-510.n von 5 verschoben.
-
In ähnlicher Weise können die Kacheln in einer Spalten-Richtung verschoben werden, wobei sich die Kacheln von den tiefen Spaltenpositionen 400 in einem Quellbild um die entsprechenden hohen Spaltenpositionen in dem verschobenen Bild 500 wickeln. Somit kann in dem Beispiel von 4 und 5 das Ansichtsfenster 430 um eine Spaltenposition verschoben werden, um die Kachel 510.0 in dem verschobenen Bild zu belegen. Der Bildinhalt, der die Kacheln 410.0, 410.4 und 410.8 belegt, kann aufgrund der Verschiebung entsprechend zu den Spaltenpositionen 510.3, 510.7 und 510.n verschoben werden. 5 veranschaulicht eine Position des Quellenursprungs 540 nach der Verschiebung.
-
Wenn das Quellgerät 110 das verschobene Bild 500 kodiert (Kasten 330, 3), kann das Quellgerät 110 Metadaten in die kodierten Videodaten einschließen, die die Position des Ansichtsfensters innerhalb des kodierten Bildes identifizieren. Zum Beispiel können, wie in 5 dargestellt, die kodierten Videodaten Offset-X'- und Offset-Y'-Indikatoren einschließen, die eine Position des Ansichtsfensters innerhalb des kodierten Bildes identifizieren.
-
Während des Betriebs des Verfahrens 300 von 3 können Kommunikationslatenzen auftreten, die dazu führen, dass sich das Ansichtsfenster an dem Senkengerät 120 von dem Zeitpunkt an ändert, an dem das Senkengerät die Ansichtsfensterposition in Nachricht 310 mitteilt, und dem Zeitpunkt, an dem das Senkengerät 120 Ansichtsfensterdaten in Box 360 anzeigt. In einem Aspekt können die Vorgänge des Verfahrens 300 iterativ durchgeführt werden, wobei das Senkengerät 120 seine Ansichtsfensterposition in verschiedenen Intervallen identifiziert und das Senkengerät 120 kodierte verschobene Bilder als Reaktion empfängt. Darüber hinaus können die Quell- und Senkengeräte 110, 120 an einer Signalisierung beteiligt sein, die die verschiedenen Iterationen von Ansichtsfensterpositionsberichten verfolgt, die von einem Senkengerät 120 in Nachricht 310 identifiziert werden. Unter einem solchen Aspekt kann, wenn ein Senkengerät 120 ein verschobenes Bild in Kasten 350 dekodiert, dieses einen Bildinhalt extrahieren, der einer Ansichtsfensterposition entspricht, die zum Zeitpunkt der Anzeige vorhanden ist. Zum Beispiel kann das Senkengerät 120 bestimmen, ob eine aktuelle Ansichtsfensterposition sich von einer von dem Quellgerät 110 in Box 320 verwendeten Ansichtsfensterposition unterscheidet, und um wieviel. Auf diese Weise kann das Senkengerät 120 Videoinhalt für ein aktuell definiertes Ansichtsfenster sogar bei Vorhandensein von Kommunikationslatenz extrahieren und anzeigen.
-
Quellgeräte
110 können Positionen von Ansichtsfenstern auf verschiedene Arten und Weisen berichten. In einem Aspekt kann die Ansichtsfensterposition unter Verwendung von
x- und
y-Offsets identifiziert werden, wie in
5 veranschaulicht (Offset-
x', Offset-
y'). In einem weiteren Aspekt können Ansichtsfensterpositionen mit Hilfe der Drehwinkel
θ,
φ und
α identifiziert werden (
2). Tatsächlich kann eine Syntax für ein Kodierungsprotokoll definiert werden, um eine Kodierung mithilfe dieser Techniken zu unterstützen. Eine solche Syntax ist in Tabelle 1 unten definiert:
Tabelle 1
Syntax | Bedeutung |
frame_shift | true/false um anzuzeigen, dass ein Bild verschoben wurde |
if (frame_shift) { | |
| offset_x | bei definierter Genauigkeit, horizontale Verschiebung des Bildes |
| offset_y | bei definierter Genauigkeit, vertikale Verschiebung des Bildes |
} else { | |
| sphere rotated | true/false um anzuzeigen, dass die Kugel gedreht wird |
| if (sphere rotated) { | |
| | rotation_angle_θ bei definierter Genauigkeit, Drehwinkel entlang der x-Achse |
| | rotation_angle_φ bei definierter Genauigkeit, Drehwinkel entlang der y-Achse |
| | rotation_angle_α bei definierter Genauigkeit, Drehwinkel entlang der z-Achse |
} | | | |
} | | | |
-
6 ist ein Funktionsblockdiagramm eines Kodierungssystems 600 gemäß einem Aspekt der vorliegenden Offenbarung. Das System 600 kann eine Bildquelle 610, ein Bildverarbeitungssystem 620, einen Videokodierer 630, einen Videodekodierer 640, einen Referenzbildspeicher 650 und einen Prädiktor 660 beinhalten. Die Bildquelle 610 kann Bilddaten als ein multidirektionales Bild erzeugen, das Bilddaten eines Sichtfelds enthält, das sich um einen Bezugspunkt in mehreren Richtungen erstreckt. Das Bildverarbeitungssystem 620 kann Bildverarbeitungsvorgänge durchführen, um das Bild für die Kodierung zu konditionieren. Gemäß einem Aspekt kann das Bildverarbeitungssystem 620 den Inhalt des multidirektionalen Bildes gemäß der Ansichtsfensterpositionsdaten verschieben, wie in der vorstehenden Diskussion beschrieben. Der Videokodierer 630 kann eine kodierte Darstellung seiner Eingangsbilddaten erzeugen, üblicherweise durch Ausnutzung räumlicher und/oder zeitlicher Redundanzen in den Bilddaten. Der Videokodierer 630 kann eine kodierte Darstellung der Eingangsdaten ausgeben, die bei der Übertragung und/oder Speicherung weniger Bandbreite verbraucht als das ursprüngliche Quellvideo.
-
Der Videodekodierer 640 kann die vom Videokodierer 630 durchgeführten Kodiervorgänge invertieren, um ein rekonstruiertes Bild aus den kodierten Videodaten zu erhalten. Üblicherweise sind die Kodierungsprozesse, die durch den Videokodierer 630 angewendet werden, verlustbehaftete Prozesse, die bewirken, dass das rekonstruierte Bild im Vergleich zu dem ursprünglichen Bild verschiedene Fehler aufweist. Der Videodekodierer 640 kann das Bild ausgewählter kodierter Bilder, die als „Referenzbilder“ bezeichnet werden, rekonstruieren und die dekodierten Referenzbilder im Referenzbildspeicher 650 speichern. Wenn keine Übertragungsfehler vorliegen, replizieren die dekodierten Referenzbilder dekodierte Referenzbilder, die von einem Dekodierer erhalten wurden (in 6 nicht gezeigt).
-
Der Prädiktor 660 kann Prädiktionsreferenzen für neue Eingangsbilder auswählen, wenn sie kodiert sind. Für jeden Abschnitt des Eingangsbildes, das kodiert wird (zur Vereinfachung als „Pixelblock“ bezeichnet), kann der Prädiktor 660 einen Kodierungsmodus auswählen und einen Abschnitt eines Referenzbildes identifizieren, der als eine Prädiktionsreferenzsuche für den Pixelblock dienen kann, der kodiert wird. Der Kodierungsmodus kann ein Intra-Kodierungsmodus sein, in welchem Fall die Prädiktionsreferenz aus einem zuvor kodierten (und dekodierten) Abschnitt des Bildes gezogen werden kann, das kodiert wird. Alternativ kann der Kodierungsmodus ein Inter-Kodierungsmodus sein, in welchem Fall die Prädiktionsreferenz aus einem anderen zuvor kodierten und dekodierten Bild gezogen werden kann.
-
Wenn eine geeignete Prädiktionsreferenz identifiziert wird, kann der Prädiktor 660 die Prädiktionsdaten an den Videokodierer 630 liefern. Der Videokodierer 630 kann Eingangsvideodaten differenziell in Bezug auf Prädiktionsdaten kodieren, die von dem Prädiktor 660 geliefert werden. Üblicherweise werden die Prädiktionsvorgänge und das differentielle Kodieren auf einer Pixelblock-für-Pixelblock-Basis durchgeführt. Prädiktionsreste, die pixelweise Unterschiede zwischen den Eingangspixelblöcken und den Prädiktionspixelblöcken darstellen, können weiteren Kodierungsvorgängen unterzogen werden, um die Bandbreite weiter zu reduzieren.
-
Wie angegeben, sollte die kodierte Videodatenausgabe des Videokodierers 630 bei der Übertragung und/oder Speicherung weniger Bandbreite verbrauchen als die Eingangsdaten. Das Kodierungssystem 600 kann die kodierten Videodaten an eine Ausgabevorrichtung 670, wie einen Sendeempfänger, ausgeben, der die kodierten Videodaten über ein Kommunikationsnetzwerk 130 (1) übertragen kann. Alternativ kann das Kodierungssystem 600 die kodierten Daten an eine Speichervorrichtung (nicht gezeigt) wie ein elektronisches, magnetisches und/oder optisches Speichermedium übertragen.
-
Der Sendeempfänger 670 kann auch Ansichtsfensterpositionsdaten von einem Dekodiergerät (7) empfangen und die Ansichtsfensterpositionsdaten an den Bildprozessor 620 liefern.
-
7 ist ein Funktionsblockdiagramm eines Dekodierungssystems 700 gemäß einem Aspekt der vorliegenden Offenbarung. Das Dekodierungssystem 700 kann einen Sendeempfänger 710, einen Videodekodierer 720, einen Bildprozessor 730, eine Videosenke 740, einen Referenzbildspeicher 750 und einen Prädiktor 760 beinhalten. Der Sendeempfänger 710 kann kodierte Videodaten von einem Kanal empfangen und zu dem Videodekodierer 720 leiten. Der Videodekodierer 720 kann die kodierten Videodaten mit Bezug auf Prädiktionsdaten dekodieren, die von dem Prädiktor 760 geliefert werden. Der Videodekodierer 720 kann dekodierte Videodaten in einer Darstellung ausgeben, die durch einen Bildprozessor 220 (2) eines Kodierungssystems bestimmt wird, das das kodierte Video erzeugt hat. Der Bildprozessor 730 kann Videodaten aus dem dekodierten Video entsprechend der derzeit an dem Dekodierungssystem geltenden Ansichtsfensterausrichtung extrahieren. Der Bildprozessor 730 kann die extrahierten Ansichtsfensterdaten an die Videosenkenvorrichtung 740 ausgeben.
-
Die Videosenke 740 kann, wie angegeben, dekodiertes Video verbrauchen, das von dem Dekodierungssystem 700 erzeugt wird. Die Videosenken 740 können beispielsweise durch Anzeigevorrichtungen verkörpert werden, die dekodiertes Video wiedergeben, wie beispielsweise die Videosenke 120. Bei anderen Anwendungen können die Videosenken 740 durch Computeranwendungen, zum Beispiel Spielanwendungen, Virtual-Reality-Anwendungen und/oder Videoeditieranwendungen, die das dekodierte Video in ihren Inhalt integrieren, verkörpert sein. In einigen Anwendungen kann eine Videosenke das gesamte multidirektionale Sichtfeld des dekodierten Videos für ihre Anwendung verarbeiten, aber in anderen Anwendungen kann eine Videosenke 740 eine ausgewählte Teilmenge von Inhalten aus dem dekodierten Video verarbeiten. Wenn beispielsweise dekodiertes Video auf einem Flachbildschirm wiedergegeben wird, kann es ausreichen, nur eine ausgewählte Teilmenge des multidirektionalen Videos anzuzeigen. In einer anderen Anwendung kann dekodiertes Video in einem multidirektionalen Format wiedergegeben werden, z. B. in einem Planetarium.
-
Der Sendeempfänger 710 kann auch Ansichtsfensterpositionsdaten von einem Kodiergerät (6) senden, die von dem Bildprozessor 620 bereitgestellt werden.
-
8 ist ein Funktionsblockdiagramm eines Kodierungssystems 800 gemäß einem Aspekt der vorliegenden Offenbarung. Das System 800 kann einen Pixelblockkodierer 810, einen Pixelblockdekodierer 820, ein In-Loop-Filtersystem 830, einen Referenzbildspeicher 840, einen Prädiktor 850, eine Steuerung 860 und eine Syntaxeinheit 870 beinhalten. Der Pixelblockkodierer und -dekodierer 810, 820 und der Prädiktor 850 können iterativ an einzelnen Pixelblöcken eines Bildes arbeiten, das gemäß einer der vorstehenden Ausführungsformen verschoben wurde. Üblicherweise werden die Pixelblöcke erzeugt, indem die Kacheln in kleinere Einheiten zur Kodierung zerlegt werden. Der Prädiktor 850 kann Daten zur Verwendung während der Kodierung eines neu präsentierten Eingangspixelblocks vorhersagen. Der Pixelblockkodierer 810 kann den neuen Pixelblock durch prädiktive Kodierungstechniken kodieren und kodierte Pixelblockdaten an die Syntaxeinheit 870 übergeben. Der Pixelblockdekodierer 820 kann die kodierten Pixelblockdaten dekodieren, wobei er daraus dekodierte Pixelblockdaten erzeugt. Der In-Loop-Filter 830 kann verschiedene Filtervorgänge an einem dekodierten Bild durchführen, das aus den dekodierten Pixelblöcken zusammengesetzt ist, die durch den Pixelblockdekodierer 820 erhalten werden. Das gefilterte Bild kann in dem Referenzbildspeicher 840 gespeichert werden, wo es als eine Quelle der Vorhersage eines später empfangenen Pixelblocks verwendet werden kann. Die Syntaxeinheit 870 kann einen Datenstrom aus den kodierten Pixelblockdaten zusammenstellen, der einem gültigen Kodierungsprotokoll entspricht.
-
Der Pixelblockkodierer 810 kann einen Subtrahierer 812, eine Transformationseinheit 814, einen Quantisierer 816 und einen Entropiekodierer 818 beinhalten. Der Pixelblockkodierer 810 kann Pixelblöcke von Eingangsdaten am Subtrahierer 812 akzeptieren. Der Subtrahierer 812 kann vorhergesagte Pixelblöcke von dem Prädiktor 850 empfangen und eine Matrix von Pixelresten erzeugen, die eine Differenz zwischen dem Eingangspixelblock und dem vorhergesagten Pixelblock darstellen. Die Transformationseinheit 814 kann eine Transformation auf die von dem Subtrahierer 812 ausgegebenen Probendaten anwenden, um Daten von der Pixeldomäne in eine Domäne von Transformationskoeffizienten umzuwandeln. Der Quantisierer 816 kann eine Quantisierung von Transformationskoeffizienten, die von der Transformationseinheit 814 ausgegeben werden, durchführen. Der Quantisierer 816 kann ein einheitlicher oder ein nicht einheitlicher Quantisierer sein. Der Entropiekodierer 818 kann die Bandbreite der Ausgabe des Koeffizientenquantisierers reduzieren, indem er die Ausgabe kodiert, beispielsweise durch Codewörter variabler Länge.
-
Die Transformationseinheit 814 kann in einer Vielzahl von Transformationsmodi arbeiten, wie durch die Steuerung 860 bestimmt. Zum Beispiel kann die Transformationseinheit 814 eine diskrete Kosinustransformation (DCT), eine diskrete Sinustransformation (DST), eine Walsh-Hadamard-Transformation, eine Haar-Transformation, eine Daubechies-Wavelet-Transformation oder dergleichen anwenden. In einem Aspekt kann die Steuerung 860 einen Kodierungsmodus M auswählen, der von der Transformationseinheit 815 angewendet werden soll, die Transformationseinheit 815 entsprechend konfigurieren und den Kodierungsmodus M in den kodierten Videodaten entweder ausdrücklich oder implizit signalisieren.
-
Der Quantisierer 816 kann gemäß einem Quantisierungsparameter QP arbeiten, der von der Steuerung 860 geliefert wird. In einem Aspekt kann der Quantisierungsparameter QP als mehrwertiger Quantisierungsparameter auf die Transformationskoeffizienten angewendet werden, der beispielsweise über verschiedene Koeffizientenpositionen innerhalb eines Transformationsdomänen-Pixelblocks variieren kann. Somit kann der Quantisierungsparameter Qp als Quantisierungsparameter-Array bereitgestellt werden.
-
Der Entropiekodierer 818 kann, wie sein Name impliziert, eine Entropiekodierung der von dem Quantisierer 816 ausgegebenen Daten durchführen. Zum Beispiel kann der Entropiekodierer 818 eine Lauflängenkodierung, Huffman-Kodierung, Golomb-Kodierung und dergleichen ausführen.
-
Der Pixelblockdekodierer 820 kann Kodierungsvorgänge des Pixelblockkodierers 810 invertieren. Zum Beispiel kann der Pixelblockdekodierer 820 einen Dequantisierer 822, eine inverse Transformationseinheit 824 und einen Addierer 826 einschließen. Der Pixelblockdekodierer 820 kann seine Eingangsdaten von einem Ausgang des Quantisierers 816 nehmen. Obwohl zulässig, muss der Pixelblockdekodierer 820 keine Entropiedekodierung von entropiekodierten Daten durchführen, da die Entropiekodierung ein verlustfreies Ereignis ist. Der Dequantisierer 822 kann Vorgänge des Quantisierers 816 des Pixelblockkodierers 810 invertieren. Der Dequantisierer 822 kann eine einheitliche oder nicht einheitliche Dequantisierung durchführen, wie durch das dekodierte Signal QP angegeben. Ebenso kann die inverse Transformationseinheit 824 Vorgänge der Transformationseinheit 814 invertieren. Der Dequantisierer 822 und die inverse Transformationseinheit 824 können den gleichen Quantisierungsparameter Qp und Transformationsmodus M wie ihre Gegenstücke in dem Pixelblockkodierer 810 verwenden. Quantisierungsvorgänge werden wahrscheinlich Daten in verschiedener Hinsicht kürzen, und daher werden die vom Dequantisierer 822 wiederhergestellten Daten wahrscheinlich Kodierungsfehler aufweisen, wenn sie mit den Daten verglichen werden, die dem Quantisierer 816 im Pixelblockkodierer 810 präsentiert werden.
-
Der Addierer 826 kann die vom Subtrahierer 812 ausgeführten Vorgänge invertieren. Er kann denselben Prädiktionspixelblock von dem Prädiktor 850 empfangen, den der Subtrahierer 812 beim Erzeugen von Restsignalen verwendet. Der Addierer 826 kann den Prädiktionspixelblock zu den rekonstruierten Restwerten hinzufügen, die von der inversen Transformationseinheit 824 ausgegeben werden, und kann rekonstruierte Pixelblockdaten ausgeben.
-
Der In-Loop-Filter 830 kann verschiedene Filtervorgänge für wiederhergestellte Pixelblockdaten durchführen. So kann beispielsweise der In-Loop-Filter 830 einen Deblocking-Filter 832 und einen Sample-Adaptive-Offset-(„SAO“)-Filter 833 beinhalten. Der Deblocking-Filter 832 kann Daten an Nähten zwischen rekonstruierten Pixelblöcken filtern, um Diskontinuitäten zwischen den Pixelblöcken zu reduzieren, die durch die Kodierung entstehen. SAO-Filter können Offsets zu Pixelwerten entsprechend einem SAO-„Typ“ hinzufügen, z. B. basierend auf Kantenrichtung/-form und/oder auf Pixel-/Farben-Komponentenebene. Der In-Loop-Filter 830 kann nach den Parametern arbeiten, die von der Steuerung 860 ausgewählt werden.
-
Der Referenzbildspeicher 840 kann gefilterte Pixeldaten zur Verwendung bei einer späteren Vorhersage von anderen Pixelblöcken speichern. Dem Prädiktor 850 werden verschiedene Arten von Prädiktionsdaten für verschiedene Prädiktionsmodi zur Verfügung gestellt. Beispielsweise nimmt die Intra-Prädiktion für einen Eingangspixelblock eine Prädiktionsreferenz aus dekodierten Daten des gleichen Bildes, in dem sich der Eingangspixelblock befindet. Somit kann der Referenzbildspeicher 840 dekodierte Pixelblockdaten jedes Bildes beim Kodieren speichern. Für denselben Eingangspixelblock kann die Inter-Prädiktion eine Prädiktionsreferenz aus einem oder mehreren zuvor kodierten und dekodierten Bildern annehmen, die als Referenzbilder bezeichnet werden. Somit kann der Referenzbildspeicher 840 diese dekodierten Referenzbilder speichern.
-
Wie besprochen, kann der Prädiktor 850 dem Pixelblockkodierer 810 Prädiktionsdaten zur Verwendung beim Erzeugen von Resten liefern. Der Prädiktor 850 kann einen Inter-Prädiktor 852, einen Intra-Prädiktor 853 und eine Modusentscheidungseinheit 852 beinhalten. Der Inter-Prädiktor 852 kann Pixelblockdaten empfangen, die einen neuen zu kodierenden Pixelblock darstellen, und kann nach Referenzbilddaten aus dem Speicher 840 für Pixelblockdaten aus einem oder mehreren Referenzbildern suchen, um sie bei der Kodierung des Eingangspixelblocks zu verwenden. Der Inter-Prädiktor 852 kann eine Vielzahl von Prädiktionsmodi unterstützen, wie die P-Modus-Kodierung und die B-Modus-Kodierung. Der Inter-Prädiktor 852 kann einen Inter-Prädiktionsmodus und eine Identifizierung von Referenzdaten der Kandidatenprädiktion auswählen, die eine möglichst genaue Übereinstimmung mit dem zu kodierenden Eingangspixelblock bieten. Der Inter-Prädiktor 852 kann Prädiktions-Referenz-Metadaten, wie beispielsweise Bewegungsvektoren, erzeugen, um zu identifizieren, welcher Abschnitt (welche Abschnitte) von welchen Referenzbildern als Quelle(n) der Prädiktion für den Eingangspixelblock ausgewählt wurden.
-
Der Intra-Prädiktor 853 kann die Intra-(I)-Modus-Kodierung unterstützen. Der Intra-Prädiktor 853 kann nach Pixelblockdaten aus dem gleichen Bild wie der zu kodierende Pixelblock suchen, die eine möglichst genaue Übereinstimmung mit dem Eingangspixelblock bieten. Der Intra-Prädiktor 853 kann auch Prädiktionsreferenzindikatoren erzeugen, um zu identifizieren, welcher Teil des Bildes als eine Prädiktionsquelle für den Eingangspixelblock ausgewählt wurde.
-
Die Modusentscheidungseinheit 852 kann einen endgültigen Kodierungsmodus auswählen, der auf den Eingangspixelblock angewendet werden soll. In der Regel wählt die Modusentscheidungseinheit 852, wie oben beschrieben, den Prädiktionsmodus aus, der die niedrigste Verzerrung erreicht, wenn das Video mit einer Soll-Bitrate dekodiert wird. Ausnahmen können auftreten, wenn Kodierungsmodi ausgewählt werden, um andere Richtlinien zu erfüllen, an die sich das Kodierungssystem 800 hält, wie z. B. die Erfüllung eines bestimmten Kanalverhaltens oder die Unterstützung von Richtlinien für Direktzugriff oder Datenaktualisierung. Wenn die Modusentscheidung den endgültigen Kodierungsmodus auswählt, kann die Modusentscheidungseinheit 852 einen ausgewählten Referenzblock aus dem Speicher 840 an den Pixelblockkodierer und -dekodierer 810, 820 ausgeben und kann der Steuerung 860 eine Identifizierung des ausgewählten Prädiktionsmodus zusammen mit den Prädiktionsreferenzindikatoren liefern, die dem ausgewählten Modus entsprechen.
-
Die Steuerung 860 kann den Gesamtbetrieb des Kodierungssystems 800 steuern. Die Steuerung 860 kann Betriebsparameter für den Pixelblockkodierer 810 und den Prädiktor 850 auswählen, die auf Analysen von Eingangspixelblöcken und auch auf externen Einschränkungen wie Soll-Kodierbitraten und anderen Betriebsparametern basieren. Wie für die vorliegende Diskussion relevant, kann sie, wenn sie die Quantisierungsparameter Qp auswählt, einheitliche oder nicht einheitliche Quantisierer und/oder den Transformationsmodus M verwendet, diese Parameter der Syntaxeinheit 870 zur Verfügung stellen, die ihrerseits Daten, die diese Parameter darstellen, in den Datenstrom der vom System 800 ausgegebenen kodierten Videodaten einschließen kann. Die Steuerung 860 kann auch zwischen verschiedenen Betriebsmodi auswählen, mit denen das System Referenzbilder erzeugen kann, und kann Metadaten einschließen, die die für jeden Abschnitt kodierter Daten ausgewählten Modi identifizieren.
-
Während des Betriebs kann die Steuerung 860 die Betriebsparameter des Quantisierers 816 und der Transformationseinheit 815 bei unterschiedlichen Granularitäten von Bilddaten entweder auf einer Pro-Pixelblock-Basis oder auf einer größeren Granularität (zum Beispiel pro Bild, pro Schicht, pro größter Kodiereinheit (largest coding unit „LCU“) oder einem anderen Bereich) überarbeiten. In einem Aspekt können die Quantisierungsparameter auf einer Pro-Pixel-Basis innerhalb eines kodierten Bildes überarbeitet werden.
-
Zusätzlich kann die Steuerung 860, wie besprochen, den Betrieb des In-Loop-Filters 830 und der Prädiktionseinheit 850 steuern. Eine solche Steuerung kann für die Prädiktionseinheit 850 eine Modusauswahl (Lambda, zu testende Modi, Suchfenster, Verzerrungsstrategien usw.) und für den In-Loop-Filter 830 die Auswahl von Filterparametern, Neuordnungsparametern, gewichteter Prädiktion usw. beinhalten.
-
Die Prinzipien der vorliegenden Diskussion können zusammenwirkend mit anderen Kodierungsvorgängen verwendet werden, die für multidirektionales Video vorgeschlagen worden sind. Beispielsweise kann der Prädiktor
850 unter Verwendung von Eingangspixelblockdaten und Referenzpixelblockdaten Prädiktionssuchvorgänge in einer kugelförmigen Projektion durchführen. Der Betrieb derartiger Prädiktionstechniken kann durchgeführt werden wie in der
US-Patentanmeldung 15/390,202 , eingereicht am 23. Dezember 2016 und
US-Patentanmeldung 15/443,342 , eingereicht am 27. Februar 2017, beschrieben, die beide dem Anmelder der vorliegenden Anmeldung zugeordnet sind, deren Offenbarung hierin durch Bezugnahme aufgenommen wird.
-
9 ist ein Funktionsblockdiagramm eines Dekodierungssystems 900 gemäß einem Aspekt der vorliegenden Offenbarung. Das Dekodierungssystem 900 kann eine Syntaxeinheit 910, einen Pixelblockdekodierer 920, einen In-Loop-Filter 930, einen Referenzbildspeicher 940, einen Prädiktor 950, eine Steuerung 960 und eine Umformatierungseinheit 970 beinhalten. Die Syntaxeinheit 910 kann einen kodierten Videodatenstrom empfangen und kann die kodierten Daten in ihre Bestandteile zerlegen. Daten, die Kodierungsparameter darstellen, können der Steuerung 960 zur Verfügung gestellt werden, während Daten, die kodierte Reste darstellen (die vom Pixelblockkodierer 810 aus 8 ausgegebenen Daten), dem Pixelblockdekodierer 920 bereitgestellt werden können. Der Pixelblockdekodierer 920 kann die vom Pixelblockkodierer 810 (8) bereitgestellten Kodierungsvorgänge invertieren. Der In-Loop-Filter 930 kann rekonstruierte Pixelblockdaten filtern. Die rekonstruierten Pixelblockdaten können zu Bildern zur Anzeige zusammengestellt und vom Dekodierungssystem 900 als Ausgabevideo ausgegeben werden. Die Bilder können auch im Prädiktionspuffer 940 zur Verwendung in Prädiktionsvorgängen gespeichert werden. Der Prädiktor 950 kann dem Pixelblockdekodierer 920 Prädiktionsdaten liefern, die durch Kodierung der im kodierten Videodatenstrom empfangenen Daten bestimmt werden.
-
Der Pixelblockdekodierer 920 kann einen Entropiedekodierer 922, einen Dequantisierer 924, eine inverse Transformationseinheit 926 und einen Addierer 928 beinhalten. Der Entropiedekodierer 922 kann eine Entropiedekodierung durchführen, um die vom Entropiekodierer 818 (8) durchgeführten Prozesse zu invertieren. Der Dequantisierer 924 kann Vorgänge des Quantisierers 916 des Pixelblockkodierers 810 (8) invertieren. Ebenso kann die inverse Transformationseinheit 926 Vorgänge der Transformationseinheit 814 (8) invertieren. Sie können die Quantisierungsparameter QP und die Transformationsmodi M verwenden, die in dem kodierten Videodatenstrom bereitgestellt werden. Da es wahrscheinlich ist, dass Daten durch die Quantisierung gekürzt werden, weisen die vom Dequantisierer 924 wiederhergestellten Daten wahrscheinlich Kodierungsfehler auf, wenn sie mit den Eingangsdaten verglichen werden, die dessen Gegenstück, dem Quantisierer 916, im Pixelblockkodierer 810 (8) präsentiert werden.
-
Der Addierer 928 kann die vom Subtrahierer 810 (8) ausgeführten Vorgänge invertieren. Er kann einen Prädiktionspixelblock von dem Prädiktor 950 empfangen, wie durch Prädiktionsreferenzen in dem kodierten Videodatenstrom bestimmt. Der Addierer 928 kann den Prädiktionspixelblock zu den rekonstruierten Restwerten hinzufügen, die von der inversen Transformationseinheit 926 ausgegeben werden, und kann rekonstruierte Pixelblockdaten ausgeben.
-
Der In-Loop-Filter 930 kann verschiedene Filtervorgänge für rekonstruierte Pixelblockdaten durchführen. Wie veranschaulicht, kann der In-Loop-Filter 930 einen Deblocking-Filter 932 und einen SAO-Filter 934 beinhalten. Der Deblocking-Filter 932 kann Daten an Nähten zwischen rekonstruierten Pixelblöcken filtern, um Diskontinuitäten zwischen den Pixelblöcken zu reduzieren, die durch die Kodierung entstehen. Der SAO-Filter 934 kann einen Offset zu Pixelwerten entsprechend einem SAO-Typ hinzufügen, z. B. basierend auf Kantenrichtung/-form und/oder Pixelebene. Andere Typen von In-Loop-Filtern können ebenfalls in einer ähnlichen Weise verwendet werden. Die Funktionsweise des Deblocking-Filters 932 und des SAO-Filters 934 würde im Idealfall die Funktionsweise ihrer Gegenstücke im Kodierungssystem 800 (8) nachahmen. Somit wäre, ohne Übertragungsfehler oder andere Anomalien, das vom In-Loop-Filter 930 des Dekodierungssystems 900 erhaltene dekodierte Bild das gleiche wie das vom In-Loop-Filter 810 des Kodierungssystems 800 (8) erhaltene dekodierte Bild; auf diese Weise sollten das Kodierungssystem 800 und das Dekodierungssystem 900 einen gemeinsamen Satz von Referenzbildern in ihren jeweiligen Referenzbildspeichern 840, 940 speichern.
-
Der Referenzbildspeicher 940 kann gefilterte Pixeldaten zur Verwendung bei einer späteren Vorhersage von anderen Pixelblöcken speichern. Der Referenzbildspeicher 940 kann dekodierte Pixelblockdaten jedes Bildes zur Verwendung bei der Intra-Prädiktion beim Kodieren speichern. Der Referenzbildspeicher 940 kann auch dekodierte Referenzbilder speichern.
-
Wie erörtert, kann der Prädiktor 950 die transformierten Referenzblockdaten an den Pixelblockdekodierer 920 liefern. Der Prädiktor 950 kann vorhergesagte Pixelblockdaten liefern, die durch die im kodierten Videodatenstrom gelieferten Vorhersage-Referenzindikatoren bestimmt werden.
-
Die Steuerung 960 kann den Gesamtbetrieb des Kodierungssystems 900 steuern. Die Steuerung 960 kann Betriebsparameter für den Pixelblockdekodierer 920 und den Prädiktor 950 basierend auf den im kodierten Videodatenstrom empfangenen Parametern festlegen. Wie für die vorliegende Diskussion relevant ist, können diese Betriebsparameter Quantisierungsparameter QP für den Dequantisierer 924 und Transformationsmodi M für die inverse Transformationseinheit 910 einschließen. Wie besprochen, können die empfangenen Parameter auf verschiedene Granularitäten der Bilddaten eingestellt werden, z. B. auf Pro-Pixelblock-Basis, Pro-Bild-Basis, Pro-Schicht-Basis, Pro-LCU-Basis oder auf Basis anderer Arten von Bereichen, die für das Eingangsbild definiert sind.
-
In einer Ausführungsform können Kodierungen von Pixelblöcken aufgrund ihrer Beziehung zu den vom Dekodierer berichteten Ansichtsfenstern unterschiedlich durchgeführt werden. Um zu 5 zurückzukehren, können beispielsweise Pixelblöcke (nicht dargestellt), die zu den Kacheln 510.0, 510.1 gehören, in denen sich das Ansichtsfenster 530 befindet, eine relativ höhere Qualität aufweisen als Kodierungen der Pixelblöcke anderer Kacheln 510.2-510.n. In der Regel wird eine solche Kodierung höherer Qualität erreicht, indem Quantisierungsparameter, die während der Kodierung verwendet werden, verringert werden, was einen geringeren Datenverlust verursacht als wenn höhere Quantisierungsparameter verwendet werden.
-
10 veranschaulicht ein Verfahren 1000 gemäß einem Aspekt der vorliegenden Offenbarung. Gemäß dem Verfahren 1000 kann ein Senkengerät 120 Daten an das Quellgerät 110 übertragen, die eine Position eines Ansichtsfensters identifizieren, das von dem Senkengerät 120 angezeigt wird (Nachricht 1010). Als Reaktion auf die Ansichtsfensterpositionsdaten kann das Verfahren 1000 Bilddaten des omnidirektionalen Bildes um einen Betrag verschieben, der den Ansichtsfensterpositionsdaten (Kasten 1020) entspricht. Das Verfahren 1000 kann das verschobene Bild prädiktiv kodieren (Kasten 1030) und danach das kodierte Video des verschobenen Bildes zusammen mit den die Position des Ansichtsfensters identifizierenden Daten an das Senkengerät 120 übertragen (Nachricht 1040).
-
Das Senkengerät 120 kann die kodierten Videodaten empfangen und dekodieren (Kasten 1050). Das Senkengerät 120 kann auch Daten aus dem dekodierten Bild extrahieren, die dem Ansichtsfenster entsprechen und es anzeigen (Kasten 1060).
-
11 veranschaulicht ein Bild 1100 eines omnidirektionalen Videos, das von einem Quellgerät 110 kodiert werden kann. Wie besprochen, kann ein Senkengerät 120 (1) ein Ansichtsfenster 1110 aus dem Bild 1100 extrahieren, nachdem es von dem Quellgerät 110 (1) kodiert, an das Senkengerät 120 übertragen und dekodiert wurde und das Ansichtsfenster 1110 lokal anzeigen. Das Senkengerät 120 kann Daten an das Quellgerät 110 senden, die eine Position des Ansichtsfensters 1110 innerhalb eines Bereichs des Bildes 1100 identifizieren. In dem Beispiel von 11 kann das Senkengerät 120 Offset- und Orientierungsdaten, als Offset-θ, und Offset-φ und Offset-α in diesem Beispiel gezeigt, übertragen, die eine Position und Orientierung des Ansichtsfensters 1110 innerhalb des Bereichs des Bildes 1100 identifizieren.
-
12 veranschaulicht ein verschobenes Bild 1200, das durch das Verfahren 1000 von 10 erhalten werden kann, das auf die exemplarischen Ansichtsfensterdaten von 11 angewandt wird. In diesem Beispiel kann das Verfahren 1000 die Bilddaten 1100 verschoben haben, um das Ansichtsfenster 1210 an einem Ursprung 1220 des Bildes 1200 zu lokalisieren. Dies bewirkt, dass die Daten des Bildes 1200 gemäß den Ansichtsfensterdaten verschoben werden. Nach der Verschiebung befinden sich die Bilddaten, die sich früher an der Position des Ansichtsfensters 1210 befanden, am Ursprung 1220 des Bildes 1200 (dargestellt durch das Ansichtsfenster 1230). Es wird erwartet, dass Videokodierungsprozesse beginnen, indem zuerst Videodaten am Ursprung 1220 kodiert werden und die Kodierung dann in Raster-Scanreihenfolge über das Bild 1200 fortgesetzt wird.
-
Das Dekodieren der kodierten Videodaten wird auch erwartungsgemäß in einer Raster-Scanreihenfolge erfolgen. Wenn also die kodierten Videodaten des Bildes 1200 dekodiert werden, werden zuerst dekodierte Videodaten für Videodaten erstellt, die sich in der Nähe des Ursprungs des Bildes 1220 befinden. Dekodierte Videodaten des verschobenen Ansichtsfensters 1230 sollten früher zur Anzeige verfügbar sein als dekodierte Videodaten anderer Teile der Anzeige.
-
Obwohl in 10 nicht veranschaulicht, ermöglicht das Verfahren 1000 auch die Verschiebung von Referenzbildern, wie in 3 erörtert.
-
In einem Aspekt, der in 13 gezeigt ist, können verschobene Ansichtsfensterdaten Padding-Daten umfassen, um Kommunikationslatenzen zwischen Quell- und Senkenvorrichtungen aufzunehmen. Unter Verwendung der Bilddaten 1100 von 11 werden beispielsweise die Ansichtsfensterdaten 1310 auf den Ursprung 1320 eines neuen zu kodierenden Bildes 1300 verschoben, wobei Verschiebungsbeträge einen Padding-Bereich (dargestellt als Δ) um einen Umfang des verschobenen Ansichtsfensters 1330 aufnehmen können. Anstatt die Ansichtsfensterdaten 1310 direkt auf den Ursprung 1320 des Bildes 1300 zu verschieben, können die Ansichtsfensterdaten 1310 auf eine Position verschoben werden, die durch eine Position Δx, Δy, die sich in der Nähe des Ursprungs 1320 befindet, repräsentiert wird. Es wird erwartet, dass, wenn sich beim Dekodieren die tatsächliche Ansichtsfensterposition am Dekodierer verschoben hat, um Daten aus dem Padding-Bereich um die verschobenen Ansichtsfensterdaten 1330 herum aufzunehmen, der Dekodierer Zugriff auf die Padding-Daten an einem früheren Punkt während der Dekodierung des Bildes 1300 hat, als wenn kein Padding-Bereich verwendet worden wäre. In einem Aspekt, in dem kein Padding-Bereich verwendet wurde, können einige Anwendungsfälle auftreten, in denen die tatsächliche Ansichtsfensterposition verschoben wurde, um Daten an räumlich entfernten Positionen des Bildes 1300 aufzunehmen, wie beispielsweise ein unterer Bereich des Bildes 1300, der erst nach der vollständigen Dekodierung des Bildes 1300 verfügbar würde.
-
Die Prinzipien der vorliegenden Offenbarung lassen sich mit einer Vielfalt von Formaten von multidirektionalen Bildern anwenden.
-
14 veranschaulicht ein multidirektionales Bildformat gemäß einem Aspekt. Das multidirektionale Bild 1430 kann von einer Kamera 1410 erzeugt werden, die sich entlang einer Achse dreht. Während des Betriebs kann die Kamera 1410 den Bildinhalt erfassen, während sie sich um einen vorbestimmten Winkelabstand 1420 (vorzugsweise um 360°) dreht, und den erfassten Bildinhalt zu einem 360°-Bild zusammenführen. Der Erfassungsvorgang kann ein multidirektionales Bild 1430 ergeben, das ein multidirektionales Sichtfeld darstellt, das entlang einer Scheibe 1422 aufgeteilt wurde, die ein zylindrisches Sichtfeld in eine zweidimensionale Anordnung von Daten unterteilt. In dem multidirektionalen Bild 1430 stellen Pixel an beiden Rändern 1432, 1434 des Bildes 1430 benachbarte Bildinhalte dar, obwohl sie auf verschiedenen Kanten des multidirektionalen Bildes 1430 erscheinen.
-
15 veranschaulicht ein multidirektionales Bildformat gemäß einem weiteren Aspekt. Im Aspekt von 15 kann eine Kamera 1510 Bildsensoren 1512-1516 besitzen, die Bilddaten in verschiedenen Sichtfeldern von einem gemeinsamen Bezugspunkt aus erfassen. Die Kamera 1510 kann ein multidirektionales Bild 1530 ausgeben, in dem der Bildinhalt gemäß einem Würfelkartenerfassungsvorgang 1520 angeordnet ist, in dem die Sensoren 1512-1516 Bilddaten in verschiedenen Sichtfeldern 1521-1526 (typischerweise sechs) um die Kamera 1510 erfassen. Die Bilddaten der unterschiedlichen Sichtfelder 1521-1526 können gemäß einem Würfelkartenlayout 1530 zusammengefügt werden. In dem in 15 dargestellten Beispiel können sechs Teilbilder, die einer linken Ansicht 1521, einer Vorderansicht 1522, einer rechten Ansicht 1523, einer Rückansicht 1524, einer Draufsicht 1525 und einer Unteransicht 1526 entsprechen, erfasst, zusammengefügt und innerhalb des multidirektionalen Bildes 1530 entsprechend den „Nähten“ des Bildinhalts zwischen den jeweiligen Ansichten 1521-1526 angeordnet werden. So stellen, wie in 15 veranschaulicht, Pixel aus dem Vorderbild 1532, die an die Pixel aus jedem der linken, rechten, oberen und unteren Bilder 1531, 1533, 1535, 1536 angrenzen, Bildinhalte dar, die jeweils an den Inhalt der benachbarten Teilbilder angrenzen. Ebenso stellen Pixel aus dem rechten und hinteren Bild 1533, 1534, die aneinander angrenzen, einen benachbarten Bildinhalt dar. Des Weiteren ist der Inhalt von einer Endkante 1538 des hinteren Bildes 1534 angrenzend an den Inhalt von einer gegenüberliegenden Endkante 1539 des linken Bildes. Das Bild 1530 kann auch Bereiche 1537.1-1537.4 aufweisen, die zu keinem Bild gehören. Die in 15 veranschaulichte Darstellung wird oft als „Würfelkarten“-Bild bezeichnet.
-
Die Kodierung von Würfelkartenbildern kann auf verschiedene Weisen erfolgen. In einer Kodierungsanwendung kann das Würfelkartenbild 1530 direkt kodiert werden, was die Kodierung von Nullbereichen 1537.1-1537.4 beinhaltet, die keinen Bildinhalt haben. In einem solchen Fall, wenn das Ansichtsfensterbild gemäß den in 3 oder 10 beschriebenen Techniken verschoben wird, können die Bildverschiebungen Ansichtsfensterdaten in Bereiche verschieben, die früher durch den Nullbereich 1537.4 belegt waren.
-
In anderen Kodierungsanwendungen kann das Würfelkartenbild 1530 neu gepackt werden, um Nullbereiche 1537.1-1537.4 vor der Kodierung zu eliminieren, dargestellt als Bild 1540. Die in 3 oder 10 beschriebene Technik kann auch auf einen gepackten Bildrahmen 1540 angewendet werden.
-
Die Bilddaten können gemäß den von einem Dekodierer berichteten Ansichtsfensterpositionsdaten verschoben und dann kodiert werden. Beim Dekodieren können die dekodierten Bilddaten zuerst dekodiert, dann entsprechend den Offsets zurückgeschoben und vor der Anzeige entpackt werden.
-
16 veranschaulicht ein weiteres beispielhaftes multidirektionales Bildformat 1630. Das Bildformat von 16 kann durch eine andere Art von omnidirektionaler Kamera 1600 erzeugt werden, die als Panoramakamera bezeichnet wird. Eine Panoramakamera besteht typischerweise aus einem Paar Fischaugenlinsen 1612, 1614 und zugehörigen Bildgebungsvorrichtungen (nicht dargestellt), die jeweils so angeordnet sind, dass sie Bilddaten in einer halbkugelförmigen Ansicht der Sicht erfassen. Bilder, die aus den halbkugelförmigen Sichtfeldern erfasst wurden, können zusammengefügt werden, um Bilddaten in einem vollen 360° Sichtfeld darzustellen. Zum Beispiel veranschaulicht 16 ein multidirektionales Bild 1630, das Bildinhalte 1631, 1632 aus den halbkugelförmigen Ansichten 1622, 1624 der Kamera enthält und die an einer Naht 1635 verbunden sind. Die hier beschriebenen Techniken finden auch Anwendung mit multidirektionalen Bilddaten in solchen Formaten 1630 Die vorstehende Diskussion hat die Funktionsweise der Aspekte der vorliegenden Offenbarung im Zusammenhang mit Videokodierern und -dekodierern beschrieben. Üblicherweise werden diese Komponenten als elektronische Vorrichtungen bereitgestellt. Videodekodierer und/oder -steuerungen können in integrierten Schaltungen wie anwendungsspezifischen integrierten Schaltungen, anwenderprogrammierbaren Gatteranordnungen und/oder Digitalsignalprozessoren ausgeführt sein. Alternativ dazu können sie in Computerprogrammen ausgeführt sein, die auf Kameravorrichtungen, Personalcomputern, Notebook-Computern, Tablet-Computern, Smartphones oder Computerservern ausgeführt werden. Diese Computerprogramme werden üblicherweise in physischen Speichermedien wie elektronisch, magnetisch und/oder optisch basierten Speichervorrichtungen gespeichert, wo sie auf einen Prozessor gelesen und ausgeführt werden. Dekodierer werden üblicherweise in Geräten der Unterhaltungselektronik verpackt, wie z. B. Smartphones, Tablet-Computer, Spielsysteme, DVD-Player, tragbare Mediaplayer und dergleichen; und sie können auch in Verbraucher-Softwareanwendungen wie Videospiele, Media-Player, Media-Editoren und dergleichen verpackt werden. Und natürlich können diese Komponenten als Hybridsysteme bereitgestellt werden, die Funktionalität wie gewünscht über speziell dafür vorgesehene Hardwarekomponenten und programmierte Universalprozessoren verteilen.
-
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 15390202 [0050]
- US 15443342 [0050]