-
VERWANDTE ANMELDUNG
-
Dieses Patent beansprucht den Vorteil der vorläufigen US-Patentanmeldung mit der Seriennummer 62/908,855, die am 1. Oktober 2019 eingereicht wurde. Die vorläufige US-Patentanmeldung mit der Seriennummer 62/908,855 wird hiermit durch Bezugnahme in ihrer Gesamtheit aufgenommen. Die Priorität der vorläufigen US-Patentanmeldung mit der Seriennummer 62/908,855 wird hiermit beansprucht.
-
GEBIET DER OFFENBARUNG
-
Diese Offenbarung betrifft allgemein die Videocodierung und genauer die objektbasierte volumetrische Videocodierung.
-
HINTERGRUND
-
Punktwolken können verwendet werden, um dreidimensionale Objekte im Raum darzustellen. Punktwolken können zum Beispiel einen Satz von Datenpunkten einschließen, die verwendet werden können, um volumetrische Daten darzustellen, die eine oder mehrere Eigenschaften des dreidimensionalen Objekts/der dreidimensionalen Objekte im Raum charakterisieren.
-
Figurenliste
-
- 1 veranschaulicht ein Blockdiagramm eines beispielhaften Systems zur videobasierten Punktwolkenkomprimierungscodierung (V-PCC-Codierung).
- 2 veranschaulicht beispielhafte Projektionsebenen, die Punktwolken zugeordnet sind.
- 3 veranschaulicht ein Blockdiagramm eines beispielhaften Systems zur V-PCC-Decodierung.
- 4 veranschaulicht ein Blockdiagramm eines beispielhaften objektbasierten volumetrischen Videocodierungssystems, das gemäß Lehren dieser Offenbarung implementiert wird.
- 5 veranschaulicht ein Blockdiagramm einer beispielhaften Implementierung des objektbasierten V-PCC-Codierers, der in dem beispielhaften objektbasierten volumetrischen Videocodierungssystem von 4 enthalten ist.
- 6 veranschaulicht ein Blockdiagramm einer beispielhaften Implementierung des V-PCC-Decodierers, der in dem beispielhaften objektbasierten volumetrischen Videocodierungssystem von 4 enthalten ist.
- 7 veranschaulicht beispielhafte Projektionsschichtpaare, die Punktwolken zugeordnet sind.
- 8 veranschaulicht beispielhafte Flächenstapel beispielhafter Nah- und Fernprojektionsschichten, die Punktwolken zugeordnet sind.
- 9 veranschaulicht beispielhafte Projektionsebenen, die einer Punktwolke eines ersten Objekts zugeordnet sind.
- 10A veranschaulicht einen beispielhaften Begrenzungsrahmen.
- 10B veranschaulicht den beispielhaften Begrenzungsrahmen von 10A und ein beispielhaftes globales Koordinatensystem.
- 11 ist ein Flussdiagramm, das maschinenlesbare Anweisungen darstellt, die ausgeführt werden können, um den objektbasierten V-PCC-Codierer von 4 und/oder 5 zu implementieren.
- 12 ist ein Flussdiagramm, das maschinenlesbare Anweisungen darstellt, die ausgeführt werden können, um den V-PCC-Decodierer von 4 und/oder 6 zu implementieren.
- 13 ist ein Blockdiagramm einer beispielhaften Verarbeitungsplattform, die zum Ausführen der Anweisungen von 11 strukturiert ist, um den objektbasierten V-PCC-Codierer von 4 und/oder 5 zu implementieren.
- 14 ist ein Blockdiagramm einer beispielhaften Verarbeitungsplattform, die zum Ausführen der Anweisungen von 12 strukturiert ist, um den V-PCC-Decodierer von 4 und/oder 6 zu implementieren.
- 15 ist ein Blockdiagramm einer beispielhaften Softwareverteilungsplattform zum Verteilen von Software (z. B. Software, die den beispielhaften computerlesbaren Anweisungen von 13-14 entspricht) an Client-Vorrichtungen, wie Verbraucher (z. B. für Lizenz, Verkauf und/oder Verwendung), Einzelhändler (z. B. für Verkauf, Wiederverkauf, Lizenz und/oder Sublizenz) und/oder Originalgerätehersteller (OEMs) (z. B. zur Aufnahme in Produkte, die zum Beispiel an Einzelhändler und/oder an Direktkäufer zu verteilen sind).
-
Die Figuren sind nicht maßstabsgetreu. Im Allgemeinen werden die gleichen Bezugszeichen über die Zeichnung(en) und die begleitende schriftliche Beschreibung hinweg verwendet, um auf die gleichen oder ähnliche Teile Bezug zu nehmen.
-
Sofern nicht spezifisch anders angegeben, werden Deskriptoren, wie „erste/r/s“, „zweite/r/s“, „dritte/r/s“ usw., hier verwendet, ohne eine Bedeutung von Priorität, physischer Reihenfolge, Anordnung in einer Liste und/oder Reihenfolge auf irgendeine Weise beizumessen oder anderweitig anzugeben, sondern werden lediglich als Bezeichnungen und/oder beliebige Namen verwendet, um Elemente zum einfachen Verständnis der offenbarten Beispiele zu unterscheiden. In einigen Beispielen kann der Deskriptor „erste/r/s“ verwendet werden, um auf ein Element in der detaillierten Beschreibung Bezug zu nehmen, während auf das gleiche Element in einem Anspruch mit einem anderen Deskriptor, wie „zweite/r/s“ oder „dritte/r/s“, Bezug genommen werden kann. In diesen Fällen versteht es sich, dass diese Deskriptoren lediglich zum speziellen Identifizieren dieser Elemente verwendet werden, die zum Beispiel ansonsten einen gleichen Namen teilen könnten. Wie hier verwendet, verweist „im Wesentlichen in Echtzeit“ auf ein Auftreten auf eine nahezu unverzögerte Weise, wobei anerkannt wird, dass es Verzögerungen in der realen Welt für Rechenzeit, Übertragung usw. geben kann. Sofern nicht anderweitig angegeben, verweist „im Wesentlichen in Echtzeit“ somit auf Echtzeit +/- 1 Sekunde.
-
DETAILLIERTE BESCHREIBUNG
-
Fortschritte in der Technologie digitaler Medien ermöglichen die Bereitstellung fesselnder immersiver Erfahrungen mit neuen Medienformaten. Die Moving Picture Experts Group (MPEG) ist eine Standardisierungsgruppe, die Standards entwickelt, um den Zugriff auf immersive Medien und deren Bereitstellung zu unterstützen. Zum Beispiel ist die codierte Darstellung immersiver Medien (MPEG-I) ein Satz von Industriestandards für immersive Medien, die auf Formate für immersive Medien, wie 360°-Panorama-Video, volumetrische Punktwolken und immersives Video, ausgerichtet sind.
-
Der immersive volumetrische Standard für videobasierte Punktwolkenkomprimierung (V-PCC), wie im Mai 2015 vorgelegt, codiert eine Punktwolkensequenz durch Projizieren der Punktwolke auf planare Oberflächen und Codieren der planaren Textur- und Tiefenprojektionen unter Verwendung vorhandener Video-Codec-Standards, wie Advanced Video Coding (AVC) oder High Efficiency Video Coding (HEVC). Der V-PCC-Entwurfsstandard schließt ein Kachelgruppenmerkmal ein, das es ermöglicht, dass ein Atlas unter Verwendung eines Gittermusters in rechteckige Kacheln aufgeteilt wird, um die Kacheln parallel zu verarbeiten.
-
Der V-PCC-Entwurfsstandard schließt jedoch keine Darstellung von Objekten in einer Videoszene ein. Wie hier verwendet, werden die Begriffe „Objekt“ oder „Entität“ austauschbar verwendet und beziehen sich auf Aktoren, Dinge, Eigenschaften usw. in Bildern. In einigen Beispielen ist eine Entität ein Objekt, das in einer Szene aufgenommen wird. Zum Beispiel kann ein Objekt einem physischen Objekt (z. B. einer Person, einem Möbelstück usw.) und/oder einem Teil eines physischen Objekts (z. B. einer Hand einer Person, einem Kopf einer Person, einem T-Shirt, das eine Person trägt, usw.) entsprechen, das in der Szene dargestellt ist. Zusätzlich oder alternativ dazu kann ein Objekt einer Segmentierung der Szene basierend auf einem oder mehreren Gesichtspunkten der Szene, wie Reflexionsgradeigenschaften, Materialdefinitionen usw., entsprechen. Zum Beispiel kann ein Objekt auch Materialien (z. B. Haut einer Person, Haar einer Person, Gras usw.), Farben (z. B. Grün, Blau usw.) usw. sein, die in der Szene dargestellt sind. Aufgrund der fehlenden Unterstützung für die Darstellung von Objekten in einer Videoszene unterstützt der V-PCC-Entwurfsstandard keine verbesserte, personalisierte, objektbasierte Erfahrung mit sechs Freiheitsgraden (6DoF-Erfahrung). In vielen typischen Einrichtungen zur Punktwolkenerfassung und -bildung werden die Hintergrundinformationen zum Beispiel in Einstellungen mit niedriger Genauigkeit aufgenommen und können verworfen werden. Ein Benutzer kann Videoszenenobjekte mit einem neuen Hintergrund, der mit synthetischen Daten (z. B. einem synthetisierten Bild) erzeugt oder mit videotexturierten Netzen gebildet wird, überlagern oder anderweitig damit zusammenführen. Ohne die Fähigkeit, Punktwolkenobjekte und Hintergründe getrennt darzustellen, erlauben die aktuellen Spezifikationen von Industriestandards keine Trennung von Hintergrund und Videoszenenobjekten (z. B., sodass neue Hintergrundmodelle verwendet werden können), ermöglichen keine native Objektfilterung und -verarbeitung, unterstützen keine netzadaptive Szenensynthese, unterstützen keine objektbasierte Verbesserung usw.
-
Verfahren, Einrichtungen und Systeme zur objektbasierten volumetrischen Videocodierung sind hier offenbart. Hier offenbarte Techniken berücksichtigen zum Beispiel eine Objekt- und Hintergrunddarstellung in volumetrischen Videocodierungsschemata. Die Fähigkeit, Punktwolkenobjekte und einen Hintergrund getrennt darzustellen, unterstützt innovative Verwendungen von volumetrischem Video, wie eine netzbasierte Szenensynthese, eine personalisierte 6DoF-Erfahrung, eine aufmerksamkeitsbasierte Priorisierung, ein personalisiertes Punktwolken-Rendern usw.
-
Hier offenbarte beispielhafte Techniken schließen ein Zuweisen von Objektkennungen zu Punkten einer Punktwolke ein, wobei die Punkte eines ersten Objekts die gleiche Objektkennung aufweisen, die sich von der Objektkennung eines zweiten Objekts unterscheidet. Offenbarte beispielhafte Techniken schließen außerdem ein Projizieren von Punktwolken auf orthogonale Projektionsebenen ein. Einige offenbarte beispielhafte Techniken projizieren Punktwolken objektweise auf orthogonale Projektionsebenen, projizieren Punktwolken von Objekten auf separate Projektionsschichtpaare und/oder projizieren Punktwolken von Objekten auf separate Projektionsebenen. Offenbarte beispielhafte Techniken schließen ferner ein Erzeugen von Flächen aus den Projektionsebenen und Packen von Flächen in Zeichenbereiche ein, wobei die Flächen in einigen Beispielen jeweils einem einzelnen Objekt entsprechen. Offenbarte beispielhafte Techniken schließen außerdem ein Multiplexen von Zeichenbereichen mit Texturdaten, Tiefendaten, Belegungskartendaten und/oder Metadaten ein, um einen einzelnen codierten Bitstrom zu erzeugen.
-
Hier offenbarte beispielhafte Techniken schließen ein Decodieren eines codierten Bitstroms in Texturdaten, Geometriedaten, Belegungskartendaten und Flächendaten ein. Hier offenbarte beispielhafte Techniken schließen außerdem ein Ermitteln von Objekten von Interesse zum Rendern ein. Zum Beispiel können die Objekte von Interesse basierend auf Bildkontext, Benutzerpräferenz usw. ermittelt werden. Hier offenbarte beispielhafte Techniken schließen ferner ein Rendern und/oder Ersetzen von Objekten von Interesse basierend auf decodierten Flächen ein.
-
1 veranschaulicht ein Blockdiagramm eines beispielhaften videobasierten Punktwolkenkomprimierungscodierungssystems (V-PCC-Codierungssystems) 100, das auch als V-PCC-Codierer 100 bezeichnet wird, zur V-PCC-Codierung. Das veranschaulichte Beispiel von 1 stellt den Codierungsprozess in Techniken nach dem Stand der Technik zur V-PCC-Komprimierung dar. Der beispielhafte V-PCC-Codierer 100 empfängt beispielhafte dynamische Punktwolkenvolumendaten 102. Wie hier verwendet, ist eine Punktwolke ein Satz von Pixeln im Raum. Zum Beispiel schließt eine Punktwolke (X, Y, Z, R, G, B) Daten für jedes Pixel im 3D-Raum ein, wobei das Tupel (X, Y, Z) Tiefendaten entspricht und das Tupel (R, G, B) Texturdaten entspricht.
-
Der V-PCC-Codierer 100 empfängt die dynamischen Punktwolkendaten 102 als eine Eingabe (z. B. pro Frame) und projiziert (dargestellt durch Blöcke 120 und 122 in 1) die dynamischen Punktwolkendaten 102 auf orthogonale Ebenen (wodurch z. B. Würfel gebildet werden), um beispielhafte Geometriebilder 104 und beispielhafte Texturbilder 106 zu erzeugen. Der V-PCC-Codierer 100 schließt vorhandene Videocodierer, wie AVC und HEVC, ein, um die räumliche und zeitliche Redundanz der Geometriebilder 104 und der Texturbilder 106, die aus den dynamischen Punktwolkenvolumendaten 102 gebildet werden, zu nutzen. In dem veranschaulichten Beispiel ist jedes Pixel der Texturbilder 106 die projizierte Farbkomponente von einem entsprechenden Punkt einer Punktwolke (z. B. die Punktwolkenvolumendaten 102) auf eine Projektionsebene und stellt jedes Pixel der Geometriebilder 104 die Tiefe (z. B. den Abstand) zwischen der Projektionsebene und der Punktwolke dar. Zum Beispiel schließen die Texturbilder 106 Rot-Grün-Blau-Komponenten (RGB-Komponenten) ein. Projektionsebenen werden unten in Verbindung mit 2 ausführlicher beschrieben.
-
Der V-PCC-Codierer 100 führt bei Block 124 eine Segmentierung durch, um beispielhafte Flächeninformationen 108 zu extrahieren. Das heißt, dass der V-PCC-Codierer 100 rechteckige Bereiche als Flächen ähnlicher Tiefen aus jeder Projektionsebene extrahiert. Wie hier verwendet, können ähnliche Tiefen durch ein oder mehrere Kriterien, wie einen oder mehrere Schwellenwerte, Prozentsätze usw., ermittelt werden. Zum Beispiel weisen ähnliche Tiefen in Abhängigkeit von der Anwendung möglicherweise keine Verschiebung von mehr als einem Fuß, einem Zoll, einem Millimeter usw. auf. Bei dem beispielhaften Block 110 packt der V-PCC-Codierer 100 die Flächen 108 und eine beispielhafte Belegungskarte 112 (unten beschrieben) in einen gekachelten Zeichenbereich (z. B. einen Atlas). Wie hier verwendet, gibt eine Belegungskarte Bereiche im Atlas an, die durch Flächen belegt sind. Zum Beispiel schließt die Belegungskarte einen Wert von 1, der angibt, dass das entsprechende Pixel im Atlas belegt ist, und einen Wert von 0, der angibt, dass das entsprechende Pixel im Atlas nicht belegt ist, ein. In einigen Beispielen erzeugt der V-PCC-Codierer 100 die Belegungskarte. In dem veranschaulichten Beispiel gibt die Belegungskarte 112 Teile des Atlas an, die belegt sind. Der V-PCC-Codierer 100 erzeugt ferner Flächeninformationsmetadaten, um anzugeben, wie Flächen zwischen den Projektionsebenen und dem Atlas abgebildet werden.
-
Der V-PCC-Codierer 100 führt eine Bildauffüllung (dargestellt durch Block 126 in 1) nach dem Erzeugen der Geometriebilder 104 und der Texturbilder 106 durch. Das heißt, dass der V-PCC-Codierer 100 einen leeren Raum/leere Räume zwischen Flächen ausfüllt, um die Effizienz der Videocodierung zu verbessern. Zum Beispiel verarbeitet der V-PCC-Codierer 100 jeden Block von Pixeln, die in Rasterreihenfolge angeordnet sind, und weist den Index der Fläche als Blockmetadateninformationen zu. Wie hier verwendet, ist ein Block eine Gruppe von einem oder mehreren Pixeln. Zum Beispiel kann ein Block eine Gruppe von acht Pixeln der Punktwolke sein. Ein Block kann jedoch eine größere oder geringere Anzahl von Pixeln einschließen. In dem veranschaulichten Beispiel bestehen die bei Block 110 erzeugten Flächen aus einem oder mehreren Blöcken.
-
Der V-PCC-Codierer 100 erzeugt (dargestellt durch Block 110 in 1) Metadateninformationen für jede Fläche (z. B. Flächeninformationen). In dem veranschaulichten Beispiel schließen die Metadateninformationen den Index der Flächenprojektionsebene, den Flächenort im dreidimensionalen Raum (3D-Raum), den Flächenort in der 2D-Projektionsebene usw. ein. Der V-PCC-Codierer 100 sagt die Flächeninformationen voraus und codiert die Flächeninformationen arithmetisch. In einigen Beispielen ist eine Liste von Flächen vorhanden, die denselben Block enthalten (z. B. Flächein-Fläche-Fall). Zum Beispiel können sich Flächen überlappen, so dass Blöcke von Pixeln zu einem oder mehreren Flächen gehören können. In solchen Beispielen werden die Flächen decodiererseitig aufgelöst, indem die gestreamten Belegungskarten genutzt werden und derselben Reihenfolge gefolgt wird, die zum Codieren der Flächen an dem V-PCC-Codierer 100 verwendet wird.
-
Der V-PCC-Codierer 100 erzeugt (dargestellt durch Block 110) eine Belegungskarte. In einigen Beispielen ist die Belegungskarte einem Atlas (z. B. selbe Abmessungen und Auflösung) zugeordnet, der Flächen von einer Vielzahl von Punktwolken einschließen kann. In dem veranschaulichten Beispiel ist eine Belegungskarte eine Binärkarte, um anzugeben, ob eine Zelle (z. B. Pixel) in einem 2D-Gitter (das z. B. Punktpositionen/-orte in einem Atlas darstellt) belegt ist und zu einer Fläche der Punktwolke gehört. In einigen Beispielen wird die Belegungskarte in Blöcke oder Unterblöcke mit einer Vielzahl von Scanmodi komprimiert, um eine verlustfreie Codierung zu erreichen.
-
Bei der beispielhaften Rekonstruktionsschleife 114 simuliert der V-PCC-Codierer 100 eine Rekonstruktion von Geometrieinformationen mit einer Glättungsprozedur (dargestellt durch Block 128). Zum Beispiel simuliert der V-PCC-Codierer 100 die Rekonstruktion der Geometriebilder 104 mit einer Glättungsprozedur, die im V-PCC-Decodierer zur Referenzierung während des Codierungsprozesses durchzuführen ist. In einigen Beispielen entfernt die Glättungsprozedur Diskontinuitäten an den Flächengrenzen aufgrund von Kompressionsartefakten.
-
Bei der beispielhaften Komprimierungsschicht 116 komprimiert der V-PCC-Codierer 100 die erzeugten Bitströme. Zum Beispiel komprimiert der V-PCC-Codierer 100 Videobitströme (z. B. gepackte Geometrie- und Texturbilder), die Belegungskarte 112 und die Flächeninformationen 108. In dem veranschaulichten Beispiel kombiniert der V-PCC-Codierer 100 die videocodierten Ströme (z. B. einschließlich der codierten Geometriebilder 104 und Texturbilder 106), die videocodierten Belegungskarten 112 und die codierten Flächeninformationsmetadaten 108 zu einem einzelnen Bitstrom 118.
-
2 veranschaulicht beispielhafte Projektionsebenen, die Punktwolken zugeordnet sind. Das veranschaulichte Beispiel von 2 schließt eine erste beispielhafte Punktwolke 202, die ein erstes Objekt (z. B. ein erstes Objekt, das als eine erste Person veranschaulicht ist) darstellt, und eine zweite beispielhafte Punktwolke 204, die ein zweites Objekt (z. B. ein zweites Objekt, das als eine zweite Person veranschaulicht ist) darstellt, ein. Das veranschaulichte Beispiel von 2 schließt eine beispielhafte linke Projektionsebene 206, eine beispielhafte obere Projektionsebene 208 und eine beispielhafte rechte Projektionsebene 210 ein. In einigen Beispielen sind die beispielhaften Projektionsebenen 206, 208, 210 Teil eines Projektionswürfels, der ferner eine untere Projektionsebene, eine hintere Projektionsebene und eine vordere Projektionsebene einschließt, die in 2 nicht gezeigt sind.
-
In hier offenbarten Beispielen werden Punktwolken (z. B. die Punktwolken 202, 204) unter Verwendung orthogonaler Projektionen von Textur und Geometrie (z. B. der Geometriebilder 104 und der Texturbilder 106 von 1) auf Ebenen (z. B. die Projektionsebenen 206, 208, 210) codiert, die einen begrenzenden rechteckigen Festkörper darstellen. Flächen werden aus den 3D-Oberflächen gebildet und basierend auf der Ebene, die den nächsten Normalenabstand zu dem Oberflächenbereich für die Fläche aufweist, auf eine bestimmte Projektionsebene abgebildet. Die Flächen werden in Atlasse (z. B. Zeichenbereiche) gepackt.
-
In hier offenbarten Beispielen schließen die Projektionsebenen 206, 208, 210 Projektionsschichten ein. In einigen Beispielen schließen die Projektionsebenen eine Nahschicht und eine Fernschicht ein. Zum Beispiel schließt die linke Projektionsebene 206 eine beispielhafte Nahschicht 212 und eine beispielhafte Fernschicht 214 ein, schließt die obere Projektionsebene 208 eine beispielhafte Nahschicht 216 und eine beispielhafte Fernschicht 218 ein und schließt die rechte Projektionsebene 210 eine beispielhafte Nahschicht 220 und eine beispielhafte Fernschicht 222 ein. In einigen Beispielen werden für jede Projektionsebene (z. B. die Projektionsebenen 206, 208, 210) zwei Bilder erzeugt, wobei eines einer Nahschicht (z. B. den Nahschichten 212, 216, 220) entspricht und das andere einer Fernschicht (z. B. den Fernschichten 214, 218, 222) entspricht. In einigen Beispielen adressiert die Verwendung von Nah- und Fernschichten Beispiele, in denen mehr als ein Punkt der Punktwolken auf dieselbe Pixelposition in der planaren Projektion abgebildet wird (z. B. überlappende Punkte derselben Punktwolke, überlappende Punkte mehrerer Punktwolken usw.). In einigen Beispielen codiert der V-PCC-Codierer 100 (1) sowohl die Nahschicht als auch die Fernschicht, nur die Nahschicht usw.
-
3 veranschaulicht ein Blockdiagramm eines beispielhaften V-PCC-Decodierungssystems 300, das auch als V-PCC-Decodierer 300 bezeichnet wird, zur V-PCC-Decodierung. Der V-PCC-Decodierer 300 empfängt den komprimierten Bitstrom 118 ( 1), der durch den V-PCC-Codierer 100 erzeugt wird. Der V-PCC-Decodierer 300 demultiplext (dargestellt durch Block 314) den komprimierten Bitstrom 118, um beispielhafte Daten 302, einschließlich Texturbitströmen, Geometriebitströmen, Belegungskartenbitströmen und Flächenbitströmen, zu erzeugen, wie gezeigt. Bei der beispielhaften Dekomprimierungsschicht 304 dekomprimiert der V-PCC-Decodierer 300 die Daten 302 (z. B. den Texturbitstrom, den Geometriebitstrom, den Belegungskartenbitstrom und/oder den Flächenbitstrom). Zum Beispiel dekomprimiert der V-PCC-Decodierer 300 die Textur- und Geometriebitströme der Daten 302. In dem veranschaulichten Beispiel dekomprimiert der V-PCC-Decodierer 300 die Textur- und Geometriebitströme unter Verwendung eines Videodecodierers, der mit dem Videocodierer übereinstimmt, der durch den V-PCC-Codierer 100 verwendet wird.
-
Bei Block 306 führt der V-PCC-Decodierer 300 eine Geometrierekonstruktion durch. Zum Beispiel erzeugt der V-PCC-Decodierer 300 rekonstruierte Geometriedaten basierend auf dem dekomprimierten Geometriebitstrom, dem dekomprimierten Belegungskartenbitstrom und dem dekomprimierten Flächenbitstrom. Bei Block 308 führt der V-PCC-Decodierer 300 eine Glättung an den rekonstruierten Geometrieinformationen durch. Bei Block 310 erzeugt der V-PCC-Decodierer 300 eine decodierte dynamische Punktwolke 312 unter Verwendung der geglätteten rekonstruierten Geometrieinformationen, um das Texturvideo abzubilden.
-
4 veranschaulicht ein Blockdiagramm eines beispielhaften objektbasierten volumetrischen Videocodierungssystems 400, das gemäß Lehren dieser Offenbarung implementiert ist. Das beispielhafte objektbasierte volumetrische Videocodierungssystem 400 schließt ein beispielhaftes serverseitiges immersives Videocodierungssystem 402 und ein beispielhaftes clientseitiges immersives Videodecodierungssystem 450 ein. Das beispielhafte serverseitige immersive Videocodierungssystem 402 schließt einen oder mehrere beispielhafte Videoaufnehmer 404, einen beispielhaften Punktwolkengenerator 406, einen beispielhaften Virtuelle-Kamera-Renderer 407, eine beispielhafte Objekt- und Tiefeninformationsspeicherung 408, einen beispielhaften objektbasierten V-PCC-Codierer 410, einen beispielhaften Videocodierer 412, einen beispielhaften Strompacker 414, ein beispielhaftes Inhaltsverwaltungssystem 415 und ein beispielhaftes Inhaltsverteilungsnetzwerk 416 ein.
-
Der/die beispielhafte(n) Videoaufnehmer 404 nehmen Bilddaten auf. Zum Beispiel können der/die Videoaufnehmer 404 einen Bildsensor (z. B. eine Kamera) einschließen und/oder mit diesem verbunden sein, um Frames von Bildern aufzunehmen. Zusätzlich oder alternativ dazu können der/die beispielhafte(n) Videoaufnehmer 404 eine Lidar-Bildgebung implementieren. Der Punktwolkengenerator 406 transformiert die Daten, die von dem/den beispielhaften Videoaufnehmer(n) 404 erhalten werden (z. B. Frames), in Punktwolken (z. B. die Punktwolke 102 von 1). Die Objekt- und Tiefeninformationsspeicherung 408 und/oder der beispielhafte objektbasierte V-PCC-Codierer 410 empfängt die Punktwolkendaten.
-
Der Punktwolkengenerator 406 erzeugt beispielhafte Objekt- und Tiefeninformationen (die z. B. in der Objekt- und Tiefeninformationsspeicherung 408 gespeichert sind), die in die Punktwolkendaten eingeschlossen werden sollen. In einigen Beispielen erzeugt der Punktwolkengenerator 406 Objektkennungen (z. B. Objekt-IDs) für jeden Punkt der Punktwolkendaten. Zum Beispiel verwendet der Punktwolkengenerator 406 einen Maschinenlernklassifizierer, einen herkömmlichen Klassifizierer und/oder einen Segmentierungsalgorithmus, um Punkte der Punktwolke zu analysieren, um (i) ein oder mehrere unterschiedliche Objekte zu identifizieren, die in der Punktwolke dargestellt sind, und (ii) jedem Punkt eine Objekt-ID zuzuweisen. Das heißt, dass Punkte der Punktwolke, die zum selben Objekt gehören, dieselbe Objekt-ID aufweisen. Zusätzlich oder alternativ dazu können der/die beispielhafte(n) Videoaufnehmer 404 einzelne Punktwolkenobjekte getrennt aufnehmen und diesen eine Objekt-ID zuweisen und dann die Objekte in derselben Szene auffüllen. In einigen Beispielen werden die Objekt-IDs durch ein computergeneriertes Grafikprogramm bereitgestellt. Das heißt, dass Objekt-IDs Objekten während der Grafikerzeugung zugewiesen werden können. Zum Beispiel kann ein Videospiel ein Video erzeugen, das mit Objektkennungen gekennzeichnet ist (z. B. stellt das Videospiel Objektkennungen für jedes Objekt in einer Videosequenz bereit).
-
In hier offenbarten Beispielen schließen die Punktwolken, die durch den Punktwolkengenerator 406 erzeugt werden, Texturdaten, Geometriedaten und Objektkennungen ein. In einigen Beispielen kann jeder Datenpunkt einer Punktwolke Werte für ein Tupel (X, Y, Z, R, G, B, Attribute) einschließen. Zum Beispiel stellen die Werte (X, Y, Z) die Geometrie (z. B. den Ort) eines Punkts in der Punktwolke in Bezug auf ein globales 3D-Referenzkoordinatensystem dar (das z. B. 3 orthogonale Dimensionen aufweist, die als X-, Y- und Z-Dimensionen bezeichnet sind). Die Werte (R, G, B) stellen Texturkomponenten (z. B. 3 Farbkomponenten, wie rote, grüne und blaue Farbkomponenten) des Punkts in der Punktwolke dar. Der/die Wert(e) des Felds „Attribute“ stellt zumindest die Objektkennung des entsprechenden Objekts dar, das der Punkt darstellt.
-
In hier offenbarten Beispielen identifiziert die Objekt-ID ein Punktwolkenobjekt, so dass keine duplizierten Objekt-IDs für unterschiedliche Punktwolkenobjekte in einer Szene innerhalb eines endlichen Zeitraums vorhanden sind. In einigen Beispielen hängt die Anzahl von Bits, die zum Darstellen der Objekt-ID benötigt werden, von der Anzahl von Objekten ab, die in dem objektbasierten volumetrischen Videocodierungssystem 400 unterstützt werden. Zum Beispiel kann die Anzahl von Bits zum Codieren von Objektkennungen eine feste Länge oder eine variable Länge in Abhängigkeit von der maximalen Anzahl von Objekten in einer Szene aufweisen. Die Objekt-ID kann zum Beispiel durch ein Byte dargestellt werden, wobei das letzte Bit reserviert ist, um eine Erweiterung anzugeben. In einigen solchen Beispielen soll die Erweiterbarkeit der Objekt-ID Verwendungen mit einer großen Anzahl (z. B. Tausenden) möglicher Punktwolkenobjekte unterstützen. Wenn zum Beispiel die Bilder, die durch den/die Videoaufnehmer 404 aufgenommen werden, sechs Objekte einschließen, kann das Attributfeld des Punktwolkendatentupels zumindest drei Bits einschließen, um die sechs Objekt-IDs zu speichern. Als weiteres Beispiel, wenn die Bilder, die durch den/die Videoaufnehmer 404 aufgenommen werden, 20.000 Objekte einschließen, kann das Attributfeld der Punktwolkendaten zumindest 16 Bits einschließen, um 20.000 Objekt-IDs zu speichern. In einigen Beispielen ändert sich die Anzahl von Bits, die im Attributfeld enthalten sind, basierend auf der Anzahl von Objekten in einer Szene, wodurch die Anzahl von nicht verwendeten Bits reduziert wird.
-
Der beispielhafte objektbasierte V-PCC-Codierer 410 empfängt Punktwolkendaten (die z. B. durch den Punktwolkengenerator 406 erzeugt werden) und/oder Objekt- und Tiefeninformationen (die z. B. in der Objekt- und Tiefeninformationsspeicherung 408 gespeichert sind). Der objektbasierte V-PCC-Codierer 410 führt eine objektbasierte Codierung der Punktwolkendaten durch. Zum Beispiel projiziert der objektbasierte V-PCC-Codierer 410 die Punktwolkendaten auf Projektionsebenen (z. B. einen Projektionswürfel) und erzeugt Flächen. In hier offenbarten Beispielen erzeugt der objektbasierte V-PCC-Codierer 410 Flächen, die einem Singularobjekt zugeordnet sind. Der objektbasierte V-PCC-Codierer 410 packt die erzeugten Flächen in Atlassen.
-
Der objektbasierte V-PCC-Codierer 410 ermöglicht eine objektbasierte Codierung. Zum Beispiel markiert der objektbasierte V-PCC-Codierer 410 Punktwolkenobjekte und den Hintergrund der Szene mit unterschiedlichen Objektkennungen. In einigen Beispielen ermöglichen die Objektkennungen eine objektbasierte Skalierbarkeit für adaptives Streaming über unterschiedliche Netzwerkbedingungen. Zum Beispiel ermittelt der objektbasierte V-PCC-Codierer 410 des veranschaulichten Beispiels Objekte von Interesse und/oder eine relative Wichtigkeit jedes Objekts einer Szene basierend auf Kontextinformationen. Zum Beispiel identifiziert der objektbasierte V-PCC-Codierer 410 einen Ball eines Sportspiels als ein Objekt von Interesse, eine Platte eines Kochwettbewerbs als ein Objekt von Interesse usw. Der beispielhafte objektbasierte V-PCC-Codierer 410 ermittelt, ob Flächen, die Punktwolkenobjekten entsprechen, die nicht von Interesse sind (z. B. Hintergrundobjekte usw.), vollständig verworfen (z. B. nicht codiert) oder mit einer niedrigeren visuellen Qualität codiert werden können. Dies ermöglicht es dem objektbasierten V-PCC-Codierer 410, relativ mehr Bandbreite zuzuweisen, um Objekte von Interesse zu codieren, anstatt eine gleiche Bandbreite auf alle Objekte der Szene zu verteilen.
-
Der beispielhafte objektbasierte V-PCC-Codierer 410 kann Objekte von Interesse auch basierend auf einer Benutzeraufmerksamkeit identifizieren. Das heißt, dass der objektbasierte V-PCC-Codierer 410 Aktionen von Objekten analysiert, um zu ermitteln, ob das Objekt von Interesse ist. In einem Sportspiel analysiert der objektbasierte V-PCC-Codierer 410 zum Beispiel die Bewegung eines Balls (z. B. Tiefeninformationen eines Objekts über einen Zeitraum), um zu ermitteln, wo die Aktion ist, und nimmt Aktivität um den Ball herum auf (z. B. Ermitteln von Objektkennungen, die Spielern innerhalb eines Schwellenwertabstands vom Ball entsprechen). In einigen Beispielen ermittelt der objektbasierte V-PCC-Codierer 410, dass die Objekte innerhalb eines Schwellenwertabstands von einer Aktion (z. B. der sich bewegende Ball) Objekte von Interesse sind, und ordnet somit den Flächen der Objekte von Interesse ein höheres Bit-Budget (z. B. eine höhere Auflösung) zu. Dies ermöglicht es einem Benutzer des clientseitigen immersiven Videodecodierungssystems 450, in die Flächen mit höherer Auflösung zu zoomen und eine Wiedergabe des Objekts von Interesse mit hoher Genauigkeit zu erzeugen. Eine beispielhafte Implementierung des objektbasierten V-PCC-Codierers 410 wird unten in Verbindung mit 5 beschrieben.
-
Der beispielhafte Virtuelle-Kamera-Renderer 407 verarbeitet die Punktwolkendaten, die durch den Punktwolkengenerator 406 erzeugt werden. Zum Beispiel rendert der Virtuelle-Kamera-Renderer 407 eine Umgebungsszene basierend auf den Punktwolkendaten. Zum Beispiel rendert der Virtuelle-Kamera-Renderer 407 ergänzende Informationen in Bezug auf die Punktwolkendaten, die durch den Punktwolkengenerator 406 erzeugt werden.
-
Der beispielhafte Videocodierer 412 führt eine Videocodierung durch. Zum Beispiel codiert der Videocodierer 412 Frames, die von virtuellen Kameras in separaten Kanälen aufgenommen werden (z. B. 360°-Videos), um Rückwärtskompatibilität zu unterstützen. Das heißt, dass der beispielhafte Videocodierer 412 Daten codiert, die mit Decodierern kompatibel sind, die V-PCC nicht unterstützen (z. B. unterstützt die Verbrauchervorrichtung am clientseitigen immersiven Videodecodierungssystem 450 keinen V-PCC-Decodierer). In einigen Beispielen schließt das serverseitige immersive Videocodierungssystem 402 das Virtuelle-Kamera-Rendern 407 und/oder den Videocodierer 412 nicht ein.
-
Der beispielhafte Strompacker 414 kombiniert die codierten Bitströme miteinander. Das heißt, dass der beispielhafte Strompacker 414 einen gemultiplexten Bitstrom erzeugt. Zum Beispiel kombiniert der Strompacker 414 den codierten Bitstrom des objektbasierten V-PCC-Codierers 410 und den codierten Bitstrom des Videocodierers 412. In einigen Beispielen fügt der Strompacker 414 Metadaten hinzu, die verschiedene Assets in der Szene angeben. Zum Beispiel fügt der Strompacker 414 Daten hinzu, die die Frame-Rate des codierten Bitstroms, die Auflösung des codierten Bitstroms, die Menge an verfügbarer Bandbreite usw. angeben.
-
Das beispielhafte Inhaltsverwaltungssystem 415 steuert Bildgebungsmodalitäten, die zu dem clientseitigen immersiven Videodecodierungssystem 450 gestreamt werden. Zum Beispiel erzeugt das serverseitige immersive Videocodierungssystem 402 eine Ansicht aus unterschiedlichen Bildgebungsmodalitäten (z. B. Punktwolkenbilder, 360°-Video usw.), die dieselbe Szene aufnehmen. Das Inhaltsverwaltungssystem 415 ermittelt, ob Teilmengen der Modalitäten ausgewählt werden sollen. Wenn zum Beispiel ein Benutzer keinen 360°-Inhalt betrachtet, extrahiert das Inhaltsverwaltungssystem 415 ein Ansichtsfenster, das der Betrachterposition und - ausrichtung entspricht.
-
Das beispielhafte Inhaltsverteilungsnetzwerk 416 ist ein Netzwerk, das zum Übertragen des gemultiplexten Bitstroms zu dem beispielhaften clientseitigen immersiven Videodecodierungssystem 450 verwendet wird. In einigen Beispielen kann das Inhaltsverteilungsnetzwerk 416 das Internet oder ein beliebiges anderes geeignetes externes Netzwerk sein. Zusätzlich oder alternativ dazu können beliebige andere geeignete Mittel zum Übertragen des gemultiplexten Bitstroms an das clientseitige immersive Videodecodierungssystem 450 verwendet werden.
-
Das beispielhafte clientseitige immersive Videodecodierungssystem 450 schließt eine beispielhafte Client-Wiedergabevorrichtung 452 ein. In dem veranschaulichten Beispiel von 4 schließt die Client-Wiedergabevorrichtung 452 einen beispielhaften Entpacker 454, einen beispielhaften V-PCC-Decodierer 456, eine beispielhafte Darstellungs-Engine 458, einen beispielhaften Videodecodierer 460 und einen beispielhaften Video-Renderer 462 ein.
-
Der beispielhafte Entpacker 454 demultiplext den gemultiplexten Bitstrom. Das heißt, dass der beispielhafte Entpacker 454 den gemultiplexten Bitstrom von der beispielhaften Serverseite 402 über das beispielhafte Inhaltsverteilungsnetzwerk 416 empfängt und den Bitstrom demultiplext, um Teilströme (z. B. den Videobitstrom, den V-PCC-Bitstrom usw.) zu erzeugen.
-
Der beispielhafte V-PCC-Decodierer 456 decodiert den V-PCC-Bitstrom. Zum Beispiel dekomprimiert der V-PCC-Decodierer 456 Belegungskartenbitströme und/oder Flächenbitströme, um Geometriedaten zu rekonstruieren. Zusätzlich oder alternativ dazu führt der V-PCC-Decodierer 456 eine Glättung an den rekonstruierten Geometriedaten durch und erzeugt eine decodierte dynamische Punktwolke. Eine beispielhafte Implementierung des V-PCC-Decodierers 456 ist unten in Verbindung mit 6 beschrieben.
-
Die beispielhafte Darstellungs-Engine 458 bildet die decodierten Atlasse und Metadaten, die durch den objektbasierten V-PCC-Codierer 410 erzeugt werden, auf das Projektionsformat der Client-Wiedergabevorrichtung 452 ab. Zum Beispiel rekonstruiert die Darstellungs-Engine 458 die Quellansichten. Zum Beispiel rekonstruiert die Darstellungs-Engine 458 die Quellansichten basierend auf dem Projektionsformat (z. B. rechteckige Projektion, perspektivische Projektion, orthografische Projektion usw.).
-
Der beispielhafte Videodecodierer 460 decodiert den Videobitstrom. Zum Beispiel dekomprimiert der Videodecodierer 460 die Textur- und Geometriebitströme. In einigen Beispielen stimmt der Videodecodierer 460 mit dem Videocodierer 412 überein (verwendet z. B. dasselbe Videocodierungsformat).
-
Der beispielhafte Video-Renderer 462 erzeugt einen Ansichtsfensterinhalt (z. B. volumetrischen Inhalt). Zum Beispiel empfängt der Video-Renderer 462 die rekonstruierten Quellansichten von der Darstellungs-Engine 458 und den decodierten Videobitstrom von dem Videodecodierer 460 und erzeugt einen volumetrischen Inhalt (z. B. die beispielhafte decodierte Punktwolke 312 von 3). Der volumetrische Inhalt wird einem Benutzer der Client-Wiedergabevorrichtung 452 angezeigt. In einigen Beispielen filtert und rendert der Video-Renderer 462 einen volumetrischen Inhalt basierend auf Objektkennungen der rekonstruierten Quellansichten.
-
Zum Beispiel kann der V-PCC-Decodierer 456 Objekte basierend auf Begrenzungsrahmenattributen von Punktwolkenobjekten herausfiltern. Das heißt, dass die beispielhafte Client-Wiedergabevorrichtung 452 und somit der beispielhafte V-PCC-Decodierer 456 Bitstromdaten (z. B. Texturdaten, Geometriedaten, Objektkennungen usw.) empfängt, die einer gesamten Szene entsprechen. Der beispielhafte V-PCC-Decodierer 456 kann jedoch Objekte von Interesse (z. B. Spieler von Interesse in einem Sportspiel usw.) identifizieren. Dementsprechend identifiziert der V-PCC-Decodierer 456 die entsprechende Objektkennung des Objekts von Interesse, und der Video-Renderer 462 kann dazu ausgelegt sein, die Flächen, die den Objektkennungen von Interesse entsprechen, zu rendern, aber keine Fläche(n), die einem oder mehreren anderen Objekten in der Szene entsprechen, zu rendern. Dies ermöglicht eine personalisierte Erfahrung für Benutzer der Client-Wiedergabevorrichtung 452, um Inhalte von Interesse auszuwählen (z. B. nur Spieler eines Teams eines Sportspiels zu rendern, nur Angriffsspieler eines Sportspiels zu rendern usw.).
-
Der beispielhafte Video-Renderer 462 ermöglicht eine Benutzeranpassung des gerenderten Videos. Das heißt, dass ein Benutzer der Client-Wiedergabevorrichtung 452 Objekte und/oder den Hintergrund einer Szene individuell anpassen kann. Zum Beispiel kann der Video-Renderer 462 basierend auf einer Benutzereingabe, einer Client-Anwendung usw. Objektkennungen verwenden, die durch den V-PCC-Decodierer 456 bereitgestellt werden, um ein oder mehrere Objekte in einer Szene durch andere Bilddaten zu ersetzen (z. B.individuell angepasste Werbebanner an der Wand eines Sportstadions zu rendern, einen künstlichen Hintergrund zu rendern, die Farbe eines Hemds zu ändern usw.).
-
In einigen Beispielen ermittelt der Video-Renderer 462 eine Reihenfolge des Renderns. Zum Beispiel wählt der Video-Renderer 462 ein oder mehrere Objekte einer Szene aus, die zuerst zu rendern sind (z. B. Objekte, die relativ näher an der Perspektive des Benutzers liegen). Der beispielhafte Video-Renderer 462 kann zusätzliche Objekte (z. B. Hintergrundobjekte, statische Objekte usw.) zu einem relativ späteren Zeitpunkt (z. B. entsprechend dem letzten Intra-Frame) rendern. In solchen Beispielen spart die beispielhafte Client-Wiedergabevorrichtung 452 Rechen- und Bandbreitenressourcen ein, wodurch das Echtzeit-Rendern von Objekten von Interesse verbessert wird.
-
5 veranschaulicht ein Blockdiagramm einer beispielhaften Implementierung des objektbasierten V-PCC-Codierers 410, der in dem beispielhaften objektbasierten volumetrischen Videocodierungssystem 400 von 4 enthalten ist. Der beispielhafte objektbasierte V-PCC-Codierer 410 schließt einen beispielhaften Punktannotator 501, einen beispielhaften Projektor 502, einen beispielhaften Objekttrenner 504, einen beispielhaften objektbasierten Generator 506, einen beispielhaften Metadatengenerator 508 und einen beispielhaften Bitstromcodierer 510 ein.
-
Der beispielhafte objektbasierte V-PCC-Codierer 410 empfängt Punktwolkendaten 500. In dem veranschaulichten Beispiel von 5 schließen die Punktwolkendaten 500 drei Objekte ein: einen Hintergrund, eine erste Person und eine zweite Person. Wie oben beschrieben, schließt jeder Punkt der Punktwolkendaten Daten (X, Y, Z, R, G, B, O) ein, wobei das Tupel (X, Y, Z) Tiefendaten entspricht, das Tupel (R, G, B) Texturdaten entspricht und das Attributfeld, das durch „O“ dargestellt wird, Objektdaten entspricht. Die Objektdaten schließen eine oder mehrere Objektkennungen zum eindeutigen Identifizieren des einen oder der mehreren entsprechenden Objekte in der Szene ein. In dem veranschaulichten Beispiel entspricht der Hintergrund der Objektkennung 0, die erste Person entspricht der Objektkennung 1 und die zweite Person entspricht der Objektkennung 2.
-
Der beispielhafte Punktannotator 501 ermittelt, ob die Punktwolkendaten Objekt-IDs einschließen. Zum Beispiel schließen die Attributdaten der Punktwolkendaten 500 möglicherweise keine Objekt-IDs ein. Wenn der Punktannotator 501 ermittelt, dass die Punktwolkendaten keine Objekt-IDs einschließen, annotiert der Punktannotator 501 Punkte der Punktwolkendaten 500 mit Objekt-IDs, wie oben beschrieben. Zum Beispiel verwendet der Punktannotator 501 einen Maschinenlernklassifizierer, um unterschiedliche Objekte in den Punktwolkendaten 500 zu identifizieren. Zusätzlich oder alternativ ermittelt der Punktannotator 501, dass die Punktwolkendaten 500 Objekt-IDs einschließen. In einigen Beispielen werden die Objekt-IDs durch ein computergeneriertes Grafikprogramm bereitgestellt. Zum Beispiel kann ein Videospiel ein Video (z. B. einschließlich der Punktwolkendaten 500) erzeugen, das mit Objektkennungen gekennzeichnet ist (z. B. stellt das Videospiel Objektkennungen für jedes Objekt in einer Videosequenz bereit).
-
Wie in Tabelle 1 unten veranschaulicht, kann das Datenelement num_objects in einer Datenstruktur (z. B. atlas_tile_group_data_unit) hinzugefügt werden, die einen Atlas definiert. Wie in Tabelle 2 gezeigt, kann die Objekt-ID für ein gegebenes Objekt in einer entsprechenden Datenstruktur enthalten sein, die die jeweiligen Flächeninformationen für dieses Objekt definiert, wie einer Datenstruktur, die Flächenparameter definiert. Der Objekt-ID-Wert kann auf mehrere Weisen signalisiert werden. Zum Beispiel kann eine Codierung u(v) verwendet werden, wie in Tabelle 2 gezeigt, wobei die Anzahl von Bits, die zum Darstellen eines gegebenen Objekts verwendet werden, gleich ceil(log2(num_objects)) ist. Die Funktion ceil(n) gibt den kleinstmöglichen ganzzahligen Wert zurück, der größer oder gleich der Eingabe n ist. Zum Beispiel gibt ceil(2.8) die ganze Zahl 3 zurück. Die Funktion log2(x) gibt den Basis-2-Logarithmus der Eingabe x zurück. Zum Beispiel gibt log2(2) den Wert 1 zurück.
-
Zusätzlich oder alternativ weist der beispielhafte Punktannotator 501 einen jeweiligen Begrenzungsrahmen zu, um jedes entsprechende Punktwolkenobj ekt einzuschließen. Zum Beispiel sind die Tiefendaten eines Objekts (z. B. die Komponente X, Y, Z der Punktwolkendaten 500) innerhalb des Begrenzungsrahmens begrenzt. Die Platzierung des Begrenzungsrahmens verknüpft den Ort eines Punktwolkenobjekts mit einem globalen 3D-Referenzkoordinatensystem. In einigen Beispielen ist der Begrenzungsrahmen der Objekt-ID zugeordnet. In hier offenbarten Beispielen kann ein entfernter Client (z. B. das clientseitige immersive Videodecodierungssystem 450) Begrenzungsrahmeninformationen verwenden, um die Szene mit Punktwolkenobjekten zu konstruieren, die Objekte zu kennzeichnen und das Ansichtsfenster eines Endbenutzers zu rendern.
-
Die Attribute eines Begrenzungsrahmens stellen die Lokalisierungsinformationen sowie Ergänzungsinformationen des Punktwolkenobjekts dar. Der beispielhafte Punktannotator 501 ermittelt die Geometrie des Begrenzungsrahmens durch Angeben eines Startpunkts. Zum Beispiel kann der Begrenzungsrahmen einen Startpunkt an der oberen linken vorderen Ecke (x, y, z) mit Abmessungen (w, h, d) aufweisen, wobei w auf die Breite des Begrenzungsrahmens in Bezug auf den Startpunkt verweist, h auf die Höhe des Begrenzungsrahmens in Bezug auf den Startpunkt verweist und d auf die Tiefe des Begrenzungsrahmens in Bezug auf den Startpunkt verweist. In einigen Beispielen werden die Lokalisierungsinformationen als Gleitkommawerte gespeichert.
-
In einigen Beispielen speichert der Punktannotator 501 die Lokalisierungsinformationen und/oder die Ergänzungsinformationen des Begrenzungsrahmens als eine Supplementary Enhancement Information-Nachricht (SEI-Nachricht) in einem komprimierten Punktwolkenvideobitstrom. Begrenzungsrahmen können durch den beispielhaften Punktannotator 501 innerhalb einer SEI-Nachricht signalisiert werden. Für eine volumetrische Medienanwendung kann der Begrenzungsrahmen auf drei Dimensionen (3D) erweitert werden, sodass die SEI-Metadaten einen rechteckigen Würfel pro Objekt angeben. Zusätzlich oder alternativ dazu kann die SEI-Nachricht die Objektkennzeichnungen (z. B. Objekt-IDs) auflisten, wobei jede SEI-Nachricht durch mehrere Objekte verwendet werden kann. Die Objektkennzeichnungen werden durch eine Datenstruktur (z. B. ar_label[ar_label_idx[i]]) innerhalb der SEI-Nachricht angegeben, wie unten in Tabelle 3 veranschaulicht.
-
Beispiele für zumindest einige der in Tabelle 3 aufgelisteten SEI-Datenelemente sind in „Proposed Revision to Annotated Regions SEI Message for HEVC and Inclusion in AVC“, JCTVC-AK0025, veröffentlicht im Okt. 2019, enthalten. Beispiele für die SEI-Datenelemente, die gemäß Lehren dieser Offenbarung hinzugefügt/modifiziert werden, sind hier wie folgt definiert. Das Datenelement ar_object_idx[i] ist der Index von Objektparametern (z. B. Begrenzungsrahmen, Kennzeichen), die signalisiert werden sollen, und gibt die Objekt-ID der zugehörigen Flächen an. Die Datenelemente ar_bounding_box_top[ ], ar_bounding_box_left[ ], ar_bounding_box_front[ ], ar_bounding_box_width[ ], ar_bounding_box_height[] und ar_bounding_box_depth[ ] geben die Koordinaten der oberen linken vorderen Ecke und die Breite, Höhe bzw. Tiefe des 3D-Begrenzungsrahmens des i-ten Objekts (identifiziert durch ar_object_idx[ i ]) relativ zu dem 3D-Referenzkoordinatensystem (z. B. demselben Koordinatensystem, auf das Projektionsebenen referenziert sind) an.
-
In einigen hier offenbarten Beispielen ist jede Entität einem Begrenzungsrahmen zugeordnet, um effizient identifiziert, gekennzeichnet, lokalisiert, verarbeitet und direkt gerendert zu werden, anstatt auf alle Pixel über Atlasse und/oder Flächen hinweg zuzugreifen. Zum Beispiel kann das System 400 Hintergrunddaten (z. B. Böden, Wände usw.) und/oder hintergrundbezogene Elemente (z. B. Werbebanner, Basketballnetz usw.) als spezielle Punktwolkenobjekte behandeln, die aus den Entitäts-IDs abgeleitet werden, die Begrenzungsrahmen zugeordnet sind, die ihre jeweiligen Ankerpositionen und Attribute darstellen. In einigen Beispielen werden die Punktwolkendaten, die einem Hintergrund (z. B. Boden, Stadion, Zuschauersitzbereiche usw.) entsprechen, mit einer geringen Genauigkeit aufgenommen und konstruiert, wie wenn die Hintergrundpunktwolkendaten von einer Vielzahl von Kameras rekonstruiert werden. Hier offenbarte beispielhafte Techniken segmentieren jedoch die Punktwolkendaten, um die Hintergrundentität von anderen Objekten von Interesse in den Punktwolkendaten zu trennen. In solchen Beispielen kann der V-PCC-Decodierer 456 den Hintergrund durch ein künstliches qualitativ hochwertiges Modell, videotexturierte Netze, einen Live-Video-Feed usw. ersetzen.
-
Wenn zum Beispiel die Hintergrundobjekte statischer Art sind (z. B. sie ändern sich nicht zwischen Frames von Punktwolkendaten), kann der objektbasierte V-PCC-Codierer 410 Hintergrundobjekte vorzeitig senden (z. B. vor einem Live-Streamlinen eines Spiels usw.), und der V-PCC-Decodierer 456 kann die Hintergrundobjekte später unter Verwendung der entsprechenden Objekt-ID abrufen. In einigen Beispielen sendet der objektbasierte V-PCC-Codierer 410 die Hintergrundobjekte bei Bedarf einmal pro Intraperiode zwischen Eintrittspunkten eines Komprimierungsbitstroms.
-
Zusätzlich oder alternativ dazu können die Hintergrundobjekte zusätzliche Objekte einschließen. Der Hintergrund eines Sportspiels kann zum Beispiel ein Stadion, einschließlich Zuschauern, sein. In solchen Beispielen kann der dem Hintergrundobjekt zugeordnete Begrenzungsrahmen mit seinem zugrundeliegenden Live-Videostrom verknüpft werden, und der V-PCC-Decodierer 456 kann das Hintergrundobjekt als ein künstliches Stadionmodell rendern.
-
Der beispielhafte Projektor 502 projiziert die Punktwolkendaten 500 auf Projektionsebenen, um Geometrie- und Texturansichten zusammen mit Objektkarten zu bilden. In hier offenbarten Beispielen segmentiert der Projektor 502 die Punktwolkendaten 500 und projiziert diese auf orthogonale Projektionsebenen. In einigen Beispielen bilden die orthogonalen Projektionsebenen einen Projektionswürfel mit sechs Ebenen (z. B. einer oberen Ebene, einer unteren Ebene, einer linken Ebene, einer rechten Ebene, einer vorderen Ebene und einer hinteren Ebene). Zusätzlich oder alternativ dazu können jedoch andere Projektionsebenengeometrien verwendet werden (z. B. eine Pyramide usw.). Wie oben beschrieben, können die Projektionsebenen Projektionsschichtpaare (z. B. eine Nahschicht und eine Fernschicht) einschließen.
-
In einigen Beispielen projiziert der Projektor 502 die Punktwolkendaten eines Objekts nach dem anderen auf Projektionsebenen. Das heißt, dass der Projektor 502 durch jede Objektkennung iteriert und für eine gegebene Iteration nur die Punktwolkendaten der ausgewählten Objektkennung auf die Projektionsebenen projiziert. Das Iterieren durch ein Objekt nach dem anderen kann jedoch rechnerisch zeitaufwendig sein.
-
In einigen Beispielen projiziert der Projektor 502 die Punktwolkendaten 500 auf die Projektionsebenen. Das heißt, dass der Projektor 502 die Punktwolkendaten 500 der drei Objekte auf die Projektionsebenen projiziert. Der beispielhafte Objekttrenner 504 erzeugt eine Vielzahl von Ansichten (z. B. Textur- und Geometriedaten), die unterschiedlichen Projektionsschichten entsprechen, basierend auf den zugeordneten Objektkarten. Das heißt, dass jede Schicht nur einem Objekt zugeordnet ist. In hier offenbarten Beispielen erzeugt der Objekttrenner 504 Schichten basierend auf Obj ektkennungen.
-
In einigen Beispielen trennt der Objekttrenner 504 die Projektionen von Punktwolkendaten jedes Objekts auf Projektionsebenen eines unterschiedlichen Projektionsschichtpaars, so dass der beispielhafte Projektor 502 Punktwolkendaten einer Vielzahl von Objekten gleichzeitig projizieren kann. Um Objekte zu trennen, trennt der Objekttrenner 504 Objekte und weist diese unterschiedlichen Projektionsschichtpaaren zu. Das Ordnen von Projektionsschichtpaaren stellt den Abstand des Objekts von der Projektionsoberfläche dar, so dass das Projektionsschichtpaar eines näheren Objekts vor dem eines ferneren Objekts geordnet ist. Zum Beispiel weist der Objekttrenner 504 die Projektion des Hintergrunds auf ein erstes Projektionsschichtpaar zu, weist der Objekttrenner 504 die Projektion der ersten Person auf ein zweites Projektionsschichtpaar zu und weist der Objekttrenner 504 die Projektion der zweiten Person auf ein drittes Projektionsschichtpaar zu. Dementsprechend schließt jedes Projektionsschichtpaar Daten von nur einem Objekt ein. In solchen Beispielen erzeugt der Objekttrenner 504 eine Anzahl von 6 x n Projektionsschichtpaaren, wobei n die Anzahl von Objekten in der Szene ist und 6 der Anzahl von Projektionsebenen des Projektionswürfels entspricht. 6 kann jedoch durch eine beliebige andere Anzahl ersetzt werden, die der Projektionsgeometrie entspricht (z. B. 5 für eine Pyramide usw.). Ein veranschaulichtes Beispiel für objektbasierte Projektionsschichtpaare ist weiter unten in Verbindung mit 7 beschrieben.
-
In einigen Beispielen schließt der beispielhafte Projektor 502 einen beispielhaften Projektionsgenerator 512 zum Durchführen einer objektspezifischen Projektion ein. Das heißt, dass der beispielhafte Projektionsgenerator 512 Punktwolkendaten jedes Objekts auf separate Projektionsebenen (z. B. separate Projektionswürfel) projiziert. Zum Beispiel kann jedes Objekt der Punktwolkendaten seinen eigenen Projektionsebenen zugeordnet sein. In einigen Beispielen weisen die Projektionswürfel dieselbe Auflösung auf. Zusätzlich oder alternativ dazu können die Projektionswürfel unterschiedliche Auflösungen aufweisen. Zum Beispiel kann ein Objekt von Interesse auf Projektionsebenen eines Projektionswürfels mit einer höheren Auflösung als ein Objekt nicht von Interesse projiziert werden. Zum Beispiel kann der Projektionsgenerator 512 durch Auswählen der Punktwolkendaten, die der Objekt-ID der ersten Person zugeordnet sind, die Punktwolkendaten der ersten Person auf einen ersten Satz von Projektionsebenen (z. B. einen ersten Projektionswürfel, der der Objekt-ID der ersten Person zugeordnet ist) projizieren. Zusätzlich oder alternativ dazu wählt der Projektor 502 die Punktwolkendaten aus, die der Objekt-ID der zweiten Person zugeordnet sind, und projiziert die Punktwolkendaten der zweiten Person auf einen zweiten Satz von Projektionsebenen (z. B. einen zweiten Projektionswürfel, der der Objekt-ID der zweiten Person zugeordnet ist). In solchen Beispielen sind die objektspezifischen Projektionswürfel auf dasselbe globale 3D-Koordinatensystem referenziert. In einigen Beispielen führt der Projektor 502 eine objektbasierte Projektion (z. B. lokalisiert und dimensioniert) durch, um die Auflösung und Genauigkeit von Flächen eines Objekts von Interesse zu erhöhen. Somit werden die von jedem Punktwolkenobjekt erzeugten Flächen in separaten Atlassen und Zeichenbereichen gespeichert, die durch die Objekt-ID indexiert werden.
-
Der beispielhafte objektbasierte Generator 506 (z. B. ein Flächengenerator 506) erzeugt Flächen basierend auf den Projektionsschichten. Der beispielhafte objektbasierte Generator 506 schließt einen beispielhaften Flächenstapler 514, einen beispielhaften Flächen-ID-Zuweiser 516 und einen beispielhaften Flächengruppierer 518 ein. Zum Beispiel segmentiert der objektbasierte Generator 506 die Projektionsschichten in Flächen (z. B. rechteckige Bereiche) für jede Projektionsebene. Die Flächen schließen Texturdaten und Geometriedaten ein. Der objektbasierte Generator 506 packt die Flächen in einen gekachelten Zeichenbereich (z. B. einen Atlas). Der objektbasierte Generator 506 erzeugt ferner Flächeninformationsmetadaten, um anzugeben, wie Flächen zwischen den Projektionsebenen und dem Zeichenbereich abgebildet werden.
-
Der objektbasierte Generator 506 erzeugt Flächen, in denen jede Fläche einen Inhalt von einem einzelnen Objekt aufweist. Dementsprechend schließt jede Fläche die entsprechende Objekt-ID ein und/oder ist damit markiert. Der objektbasierte Generator 506 kann jedoch Flächen, die mehreren Objekten entsprechen, in einen Zeichenbereich packen. Wenn zum Beispiel der Objekttrenner 504 Projektionsschichtpaare erzeugt hat, die einem Objekt entsprechen, kann der objektbasierte Generator 506 Flächen des Objekts basierend auf nur den entsprechenden Projektionsschichtpaaren für dieses Objekt erzeugen. Gleichermaßen, wenn der Projektor 502 Punktwolkendaten jedes Objekts auf separate Projektionswürfel projiziert hat, kann der objektbasierte Generator 506 Flächen des Objekts basierend auf nur den Projektionsebenen des entsprechenden Projektionswürfels für dieses Objekt erzeugen.
-
Der objektbasierte Generator 506 erzeugt zusätzlich oder alternativ dazu gestapelte Flächen. Das heißt, dass der Flächenstapler 514 gestapelte Flächen in Projektionsschichten (z. B. in der Nahprojektionsschicht, in der Fernprojektionsschicht usw.) der Projektionsebenen erzeugt. In solchen Beispielen stellt jede Fläche die Projektion von einem Punktwolkenobjekt dar. In einigen Beispielen sind Flächen von unterschiedlichen Objekten an derselben Gitterposition (z. B. selbe Koordinaten) in einer Projektionsschicht vorhanden. Dementsprechend stapelt der beispielhafte Flächenstapler 514 die Flächen, so dass das Ordnen der gestapelten Flächen die Nähe des Objekts zu der Oberfläche der Projektionsschicht bestimmt (z. B. stellt die erste Fläche in einem Stapel ein Objekt dar, das näher an der Oberfläche der Projektionsschicht als das fernere Objekt ist). Zum Beispiel projiziert der Projektor 502 Attributdaten, Geometriedaten und/oder Objektkarten auf Projektionsebenen (z. B. Projektionsschichtpaare). Der beispielhafte Flächenstapler 514 erzeugt einen Stapel von Flächen, die in der Nahschicht einer Projektionsebene enthalten sind, basierend auf den Objektkarten (z. B. Objekt-IDs). Zusätzlich oder alternativ dazu erzeugt der Flächenstapler 514 einen Stapel von Flächen, die in der Fernschicht der Projektionsebene enthalten sind, basierend auf den Objektkarten. Der Flächenstapler 514 packt gestapelte Flächen getrennt in Atlassen, so dass keine Fläche eine andere Fläche überschreibt.
-
Der beispielhafte Flächen-ID-Zuweiser 516 markiert die erzeugten Flächen mit der entsprechenden Objekt-ID des in der Fläche dargestellten Objekts. Zum Beispiel wird eine Fläche, die die erste Person der Punktwolkendaten 500 einschließt, mit der Objekt-ID der ersten Person gekennzeichnet und wird eine Fläche, die die zweite Person der Punktwolkendaten 500 einschließt, mit der Objekt-ID der zweiten Person markiert. Der beispielhafte Flächengruppierer 518 gruppiert Flächen mit derselben Objekt-ID zusammen.
-
Der beispielhafte Metadatengenerator 508 erzeugt Metadaten, die den Flächen der Zeichenbereiche entsprechen. Der Metadatengenerator 508 erzeugt zum Beispiel eine Belegungskarte. Zum Beispiel gibt die Belegungskarte Abschnitte des Zeichenbereichs an, die decodiert werden sollten (z. B. belegte Bereiche innerhalb der Flächen, die in den Zeichenbereich gepackt sind). Der Metadatengenerator 508 kann zusätzlich oder alternativ dazu eine Geometrie- und Texturbildauffüllung, eine Tiefenbelegungscodierung usw. durchführen.
-
Der beispielhafte Bitstromcodierer 510 codiert Daten. Zum Beispiel codiert der Bitstromcodierer 510 die durch den Metadatengenerator 508 erzeugte Belegungskarte, codiert Tiefendaten, codiert Texturdaten usw. Der Bitstromcodierer 510 multiplext die codierten Daten und die Zeichenbereiche, um einen beispielhaften komprimierten Bitstrom 520 zu erzeugen.
-
6 veranschaulicht ein Blockdiagramm einer beispielhaften Implementierung des V-PCC-Decodierers 456, der in dem beispielhaften clientseitigen immersiven Videodecodierungssystem 450 von 4 enthalten ist. Der V-PCC-Decodierer 456 empfängt den komprimierten Bitstrom 520 (5), der durch das serverseitige volumetrische Videocodierungssystem 402 erzeugt wird. Der V-PCC-Decodierer 456 demultiplext (dargestellt durch Block 614) den komprimierten Bitstrom 520, um beispielhafte Daten 602, einschließlich Texturbitströmen, Geometriebitströmen, Belegungskartenbitströmen und Flächenbitströmen, zu erzeugen, wie gezeigt. Bei dem beispielhaften Bitstromdecodierer 604 dekomprimiert der V-PCC-Decodierer 456 die Daten 602 (z. B. den Texturbitstrom, den Geometriebitstrom, den Belegungskartenbitstrom und/oder den Flächenbitstrom). Zum Beispiel dekomprimiert der V-PCC-Decodierer 356 die Textur- und Geometriebitströme der Daten 602. In dem veranschaulichten Beispiel dekomprimiert der V-PCC-Decodierer 356 die Textur- und Geometriebitströme unter Verwendung eines Videodecodierers, der mit dem Videocodierer übereinstimmt, der durch das serverseitige volumetrische Videocodierungssystem 402 verwendet wird.
-
Der beispielhafte V-PCC-Decodierer 356 schließt ein beispielhaftes Objektfilter 605 und einen beispielhaften Rekonstruktor 607 ein. Das beispielhafte Objektfilter 605 empfängt die dekomprimierten Flächendaten und/oder die dekomprimierten Belegungskartendaten. Das beispielhafte Objektfilter 605 filtert Blöcke der Flächendaten basierend auf der Belegungskarte. Zum Beispiel ermittelt das Objektfilter 605, welche Pixel der Flächendaten zu rendern sind, basierend darauf, ob entsprechende Pixel der Belegungskarte belegt sind (z. B. entsprechen die belegten Pixel der Belegungskarte Objekten, die gerendert werden sollen). In einigen Beispielen identifiziert das Objektfilter 605 den zugeordneten Begrenzungsrahmen unter Verwendung der Objekt-ID des ausgewählten Objekts. Das heißt, dass das Objektfilter 605 eine Objektfilterung durchführt. Das Objektfilter 605 entfernt zum Beispiel Flächen der Objekte, die aus den Atlasdaten herausgefiltert werden sollen. Zum Beispiel entfernt das Objektfilter 605 Flächen, die der Objekt-ID zugeordnet sind, wodurch gefilterte Flächendaten erzeugt werden. Zum Beispiel identifiziert das Objektfilter 605 die Objekt-IDs der zu entfernenden Objekte und entfernt die Flächen, die den identifizierten Objekt-IDs entsprechen. In einigen Beispielen entfernt das Objektfilter 507 die Fläche durch Entfernen der Blöcke, die die Fläche bilden.
-
Der beispielhafte Rekonstruktor 607 schließt einen beispielhaften Geometrierekonstruktor 606, einen beispielhaften Glätter 608 und einen beispielhaften Texturrekonstruktor 610 ein. Der beispielhafte Geometrierekonstruktor 606 führt eine Geometrierekonstruktion durch. Zum Beispiel erzeugt der Geometrierekonstruktor 606 rekonstruierte Geometriedaten basierend auf dem dekomprimierten Geometriebitstrom, dem dekomprimierten Belegungskartenbitstrom und den verbleibenden Flächen (z. B., nachdem das Objektfilter 605 Flächen entfernt). Der beispielhafte Glätter 608 führt eine Glättung an den rekonstruierten Geometrieinformationen durch. Der beispielhafte Texturrekonstruktor 610 führt eine Texturrekonstruktion durch. Zum Beispiel erzeugt der Texturrekonstruktor 610 rekonstruierte Texturdaten basierend auf dem dekomprimierten Texturbitstrom und den geglätteten Geometrieinformationen. Der V-PCC-Decodierer 456 erzeugt eine decodierte dynamische Punktwolke 612 unter Verwendung der geglätteten rekonstruierten Geometrieinformationen, um die rekonstruierten Texturdaten abzubilden. In hier offenbarten Beispielen ist die decodierte dynamische Punktwolke 612 die gefilterte Ausgabe. Das heißt, dass der V-PCC-Decodierer 456 (z. B. das Objektfilter 605) Objekte von Interesse identifiziert und Flächen entfernt, die Objekt-IDs entsprechen, die nicht von Interesse sind. Somit erzeugt der V-PCC-Decodierer 456 die decodierte dynamische Punktwolke 612 basierend auf den verbleibenden Flächen.
-
7 veranschaulicht beispielhafte Projektionsschichtpaare, die Punktwolken zugeordnet sind. Das veranschaulichte Beispiel von 7 schließt eine erste beispielhafte Punktwolke 702 und eine zweite beispielhafte Punktwolke 704 ein, die eine erste bzw. eine zweite Person darstellen. Das veranschaulichte Beispiel von 7 schließt eine beispielhafte linke Projektionsebene 706, eine beispielhafte obere Projektionsebene 708 und eine beispielhafte rechte Projektionsebene 710 ein. Die beispielhaften Projektionsebenen 706, 708, 710 sind Teil eines Projektionswürfels (nicht veranschaulicht). Das heißt, dass die untere Projektionsebene, die hintere Projektionsebene und die vordere Projektionsebene des Projektionswürfels nicht veranschaulicht sind.
-
In dem veranschaulichten Beispiel von 7 schließen die Projektionsebenen 706, 708, 710 objektspezifische Projektionsschichtpaare ein. Zum Beispiel schließt die linke Projektionsebene 706 beispielhafte Nahprojektionsschichten 712 und beispielhafte Fernprojektionsschichten 714 ein, schließt die obere Projektionsebene 708 beispielhafte Nahprojektionsschichten 716 und beispielhafte Fernprojektionsschichten 718 ein und schließt die rechte Projektionsebene 710 beispielhafte Nahprojektionsschichten 720 und beispielhafte Fernprojektionsschichten 722 ein. In hier offenbarten Beispielen entspricht die Anzahl von Nahprojektionsschichten 712, 716, 720 und Fernprojektionsschichten 714, 718, 722 der Anzahl von Objekten. Zum Beispiel kann jede der Projektionsebenen 706, 708, 710 drei Projektionsschichtpaare einschließen, wobei der Objekttrenner 504 ein Projektionsschichtpaar zu dem Hintergrund, ein Projektionsschichtpaar zu der ersten Person (z. B. der ersten Punktwolke 702) bzw. ein Projektionsschichtpaar zu der zweiten Person (z. B. der zweiten Punktwolke 704) zuweist.
-
Zum Beispiel identifiziert der Objekttrenner 504 die Objekt-ID des Hintergrunds, trennt die Projektionsschicht, die der identifizierten Objekt-ID entspricht, in ein erstes Projektionsschichtpaar und markiert das erste Projektionsschichtpaar mit der Objekt-ID des Hintergrunds. Zusätzlich oder alternativ dazu identifiziert der Objekttrenner 504 die Objekt-ID der ersten Person (z. B. die Punktwolke 702), trennt die Projektionsschicht, die der identifizierten Objekt-ID entspricht, in ein zweites Projektionsschichtpaar und markiert das zweite Projektionsschichtpaar mit der Objekt-ID der ersten Person. Zusätzlich oder alternativ dazu identifiziert der Objekttrenner 504 die Objekt-ID der zweiten Person (z. B. die Punktwolke 704), trennt die Projektionsschicht, die der identifizierten Objekt-ID entspricht, in ein drittes Projektionsschichtpaar und markiert das dritte Projektionsschichtpaar mit der Objekt-ID der zweiten Person.
-
8 veranschaulicht beispielhafte Flächenstapel beispielhafter Nah- und Fernprojektionsschichten, die Punktwolken zugeordnet sind. Das veranschaulichte Beispiel von 8 schließt eine erste beispielhafte Punktwolke 802 und eine zweite beispielhafte Punktwolke 804 ein, die eine erste bzw. eine zweite Person darstellen. Das veranschaulichte Beispiel von 8 schließt eine beispielhafte linke Projektionsebene 806, eine beispielhafte obere Projektionsebene 808 und eine beispielhafte rechte Projektionsebene 810 ein. Die beispielhaften Projektionsebenen 806, 808, 810 sind Teil eines Projektionswürfels (nicht veranschaulicht). Das heißt, dass die untere Projektionsebene, die hintere Projektionsebene und die vordere Projektionsebene des Projektionswürfels nicht veranschaulicht sind.
-
In dem veranschaulichten Beispiel von 8 schließen die Projektionsebenen 806, 808, 810 Projektionsschichten ein. Zum Beispiel schließt die linke Projektionsebene 806 eine beispielhafte Nahprojektionsschicht 812 und eine beispielhafte Fernprojektionsschicht 814 ein, schließt die obere Projektionsebene 808 eine beispielhafte Nahprojektionsschicht 816 und eine beispielhafte Fernprojektionsschicht 818 ein und schließt die rechte Projektionsebene 810 eine beispielhafte Nahprojektionsschicht 820 und eine beispielhafte Fernprojektionsschicht 822 ein. Der beispielhafte Flächenstapler 514 erzeugt einen beispielhaften linken Stapel von Flächen 824 in der Nahproj ektionsschicht 812 der linken Projektionsebene 806. Zum Beispiel kann eine beispielhafte erste Fläche 826 in dem linken Stapel von Flächen 824 der Punktwolke 802 entsprechen. Somit weist der beispielhafte Flächen-ID-Zuweiser 516 die erste Fläche 826 mit der Objekt-ID der ersten Person (z. B. der Punktwolke 802) zu. Zusätzlich oder alternativ dazu erzeugt der beispielhafte Flächenstapler 514 einen beispielhaften rechten Stapel von Flächen 828 in der Nahprojektionsschicht 820 der rechten Projektionsebene 810. Zum Beispiel kann eine beispielhafte erste Fläche 830 in dem rechten Stapel von Flächen 828 der Punktwolke 804 entsprechen. Somit weist der beispielhafte Flächen-ID-Zuweiser 516 die erste Fläche 830 mit der Objekt-ID der zweiten Person (z. B. der Punktwolke 804) zu.
-
9 veranschaulicht beispielhafte Projektionsebenen, die einer Punktwolke eines ersten Objekts zugeordnet sind. Das veranschaulichte Beispiel von 9 schließt eine erste beispielhafte Punktwolke 902 und eine zweite beispielhafte Punktwolke 904 ein, die eine erste und eine zweite Person darstellen. Das veranschaulichte Beispiel von 9 schließt eine beispielhafte linke Projektionsebene 906, eine beispielhafte obere Projektionsebene 908 und eine beispielhafte rechte Projektionsebene 910 ein. Die beispielhaften Projektionsebenen 906, 908, 910 sind Teil eines Projektionswürfels (nicht veranschaulicht). Das heißt, dass die untere Projektionsebene, die hintere Projektionsebene und die vordere Projektionsebene des Projektionswürfels nicht veranschaulicht sind.
-
In dem veranschaulichten Beispiel von 9 schließen die Projektionsebenen 906, 908, 910 Projektionsschichten ein. Zum Beispiel schließt die linke Projektionsebene 906 eine beispielhafte Nahprojektionsschicht 912 und eine beispielhafte Fernprojektionsschicht 914 ein, schließt die obere Projektionsebene 908 eine beispielhafte Nahprojektionsschicht 916 und eine beispielhafte Fernprojektionsschicht 918 ein und schließt die rechte Projektionsebene 910 eine beispielhafte Nahprojektionsschicht 920 und eine beispielhafte Fernprojektionsschicht 922 ein.
-
In dem veranschaulichten Beispiel von 9 sind die Projektionsebenen 906, 908, 910 Teil eines Projektionswürfels, der der ersten Punktwolke 902 zugeordnet ist. Das heißt, dass der beispielhafte Projektionsgenerator 512 (5) die erste Punktwolke 902 auf einen ersten Projektionswürfel (z. B. einschließlich der Projektionsebenen 906, 908, 910) projiziert und die zweite Punktwolke 904 auf einen zweiten Projektionswürfel (nicht veranschaulicht) projiziert. Dementsprechend projiziert der beispielhafte Projektionsgenerator 512 die Punktwolke 904 nicht auf die Projektionsebenen 906, 908, 910. Zum Beispiel identifiziert der Projektionsgenerator 512 die Objekt-ID der ersten Punktwolke 902 (z. B. die Objekt-ID der ersten Person) und projiziert die Punktwolke, die der Objekt-ID der ersten Person zugeordnet ist, auf den ersten Projektionswürfel. Zusätzlich oder alternativ dazu identifiziert der Projektionsgenerator 512 die Objekt-ID der zweiten Punktwolke 904 (z. B. die Objekt-ID der zweiten Person) und projiziert die Punktwolke, die der Objekt-ID der zweiten Person zugeordnet ist, auf den zweiten Projektionswürfel.
-
10A veranschaulicht einen beispielhaften Begrenzungsrahmen 1000. In hier offenbarten Beispielen ist der Begrenzungsrahmen 1000 einer Punktwolke (nicht veranschaulicht) zugeordnet. Die Geometrie des Begrenzungsrahmens 1000 wird durch einen Startpunkt 1002 angegeben. In dem veranschaulichten Beispiel von 10A entspricht der Startpunkt 1002 den Koordinaten (x, y, z). Der Begrenzungsrahmen 1000 weist eine beispielhafte Breite (w) 1004, eine beispielhafte Höhe (h) 1006 und eine beispielhafte Tiefe (d) 1008 auf. Das heißt, dass die Breite 1004, die Höhe 1006 und die Tiefe 1008 in Bezug auf den Startpunkt 1002 gemessen werden. In einigen Beispielen sind die Breite 1004, die Höhe 1006 und die Tiefe 1008 in Gleitkommawerten dargestellt.
-
10B veranschaulicht den beispielhaften Begrenzungsrahmen 1000 von 10A und ein beispielhaftes globales Koordinatensystem 1050. In dem veranschaulichten Beispiel von 10B wird der Startpunkt 1002 in Bezug auf den Ursprung 1052 des globalen Koordinatensystems 1050 ermittelt. Zum Beispiel ist der Ursprung 1052 (0, 0, 0). Dementsprechend stellt der Begrenzungsrahmen 1000 die Position der eingeschlossenen Punktwolke (nicht veranschaulicht) in Bezug auf das globale Koordinatensystem 1050 bereit. In dem veranschaulichten Beispiel von 10B schließt der Begrenzungsrahmen 1000 eine beispielhafte Objekt-ID 1054 ein. Das heißt, dass der Begrenzungsrahmen 1000 SEI-Informationen einschließt, die die beispielhafte Objekt-ID 1054 einschließen. Zum Beispiel kann jeder Begrenzungsrahmen einem Objekt zugeordnet sein und somit mit der Objekt-ID markiert sein.
-
Während eine beispielhafte Weise des Implementierens des serverseitigen immersiven Videocodierungssystems 402 von 4 in 5 veranschaulicht ist, können eines/einer/eine oder mehrere der Elemente, Prozesse und/oder Vorrichtungen, die in 5 veranschaulicht sind, kombiniert, geteilt, neu angeordnet, weggelassen, beseitigt und/oder auf eine beliebige andere Weise implementiert werden. Ferner können der/die beispielhafte(n) Videoaufnehmer 404, der beispielhafte Punktwolkengenerator 406, der beispielhafte Virtuelle-Kamera-Renderer 407, die beispielhafte Objekt- und Tiefeninformationsspeicherung 408, der beispielhafte objektbasierte V-PCC-Codierer 410, der beispielhafte Videocodierer 412, der beispielhafte Strompacker 414, das beispielhafte Inhaltsverwaltungssystem 415, das beispielhafte Inhaltsverteilungsnetzwerk 416, der beispielhafte Projektor 502, der beispielhafte Objekttrenner 504, der beispielhafte objektbasierte Generator 506, der beispielhafte Metadatengenerator 508, der beispielhafte Bitstromcodierer 510 und/oder allgemeiner das beispielhafte serverseitige immersive Videocodierungssystem 402 von 4 durch Hardware, Software, Firmware und/oder eine beliebige Kombination von Hardware, Software und/oder Firmware implementiert werden. Somit könnten zum Beispiel beliebige des/der beispielhaften Videoaufnehmer(s) 404, des beispielhaften Punktwolkengenerators 406, des beispielhaften Virtuelle-Kamera-Renderers 407, der beispielhaften Objekt- und Tiefeninformationsspeicherung 408, des beispielhaften objektbasierten V-PCC-Codierers 410, des beispielhaften Videocodierers 412, des beispielhaften Strompackers 414, des beispielhaften Inhaltsverwaltungssystems 415, des beispielhaften Inhaltsverteilungsnetzwerks 416, des beispielhaften Projektors 502, des beispielhaften Objekttrenners 504, des beispielhaften objektbasierten Generators 506, des beispielhaften Metadatengenerators 508, des beispielhaften Bitstromcodierers 510 und/oder allgemeiner des beispielhaften serverseitigen immersiven Videocodierungssystems 402 durch eine(n) oder mehrere analoge oder digitale Schaltung(en), Logikschaltungen, programmierbare(n) Prozessor(en), programmierbare Steuerung(en), Grafikverarbeitungseinheit(en) (GPU(s)), Digitalsignalprozessor(en) (DSP(s)), anwendungsspezifische integrierte Schaltung(en) (ASIC(s)), programmierbare Logikvorrichtung(en) (PLD(s)) und/oder feldprogrammierbare Logikvorrichtung(en) (FPLD(s)) implementiert werden. Beim Lesen beliebiger der Einrichtungs- oder Systemansprüche dieses Patents, die eine reine Software- und/oder Firmware-Implementierung abdecken sollen, ist zumindest einer/eines/eine von dem/den beispielhaften Videoaufnehmer(n) 404, dem beispielhaften Punktwolkengenerator 406, dem beispielhaften Virtuelle-Kamera-Renderer 407, der beispielhaften Objekt- und Tiefeninformationsspeicherung 408, dem beispielhaften objektbasierten V-PCC-Codierer 410, dem beispielhaften Videocodierer 412, dem beispielhaften Strompacker 414, dem beispielhaften Inhaltsverwaltungssystem 415, dem beispielhaften Inhaltsverteilungsnetzwerk 416, dem beispielhaften Projektor 502, dem beispielhaften Objekttrenner 504, dem beispielhaften objektbasierten Generator 506, dem beispielhaften Metadatengenerator 508, dem beispielhaften Bitstromcodierer 510 und/oder dem beispielhaften serverseitigen immersiven Videocodierungssystem 402 hierdurch ausdrücklich derart definiert, dass er/sie/es eine nichtflüchtige computerlesbare Speicherungsvorrichtung oder Speicherungsplatte, wie einen Speicher, eine Digital Versatile Disk (DVD), eine Compact Disk (CD), einen Blu-Ray-Datenträger usw., einschließlich der Software und/oder Firmware, einschließt. Ferner kann außerdem das beispielhafte serverseitige immersive Videocodierungssystem 402 von 4 ein/einen/eine oder mehrere Elemente, Prozesse und/oder Vorrichtungen zusätzlich zu oder anstelle von den in 5 veranschaulichten einschließen und/oder kann mehr als eines/einen/eine von beliebigen oder allen der veranschaulichten Elemente, Prozesse und Vorrichtungen einschließen. Wie hier verwendet, umfasst die Phrase „in Kommunikation“, einschließlich Variationen davon, eine direkte Kommunikation und/oder eine indirekte Kommunikation durch eine oder mehrere Zwischenkomponenten und erfordert keine direkte physische (z. B. drahtgebundene) Kommunikation und/oder konstante Kommunikation, sondern schließt stattdessen zusätzlich eine selektive Kommunikation in periodischen Intervallen, geplanten Intervallen, aperiodischen Intervallen und/oder bei einmaligen Ereignissen ein.
-
Während eine beispielhafte Weise des Implementierens des clientseitigen immersiven Videodecodierungssystems 450 von 4 in 6 veranschaulicht ist, können eines oder mehrere der Elemente, Prozesse und/oder Vorrichtungen, die in 6 veranschaulicht sind, kombiniert, geteilt, neu angeordnet, weggelassen, beseitigt und/oder auf eine beliebige andere Weise implementiert werden. Ferner können der beispielhafte Entpacker 454, der beispielhafte V-PCC-Decodierer 456, die beispielhafte Darstellungs-Engine 458, der beispielhafte Videodecodierer 460, der beispielhafte Video-Renderer 462, der beispielhafte Bitstromdecodierer 604, das beispielhafte Objektfilter 605, der beispielhafte Rekonstruktor 607, der beispielhafte Geometrierekonstruktor 606, der beispielhafte Glätter 608, der beispielhafte Texturrekonstruktor 610 und/oder allgemeiner das beispielhafte clientseitige immersive Videodecodierungssystem 450 von 4 durch Hardware, Software, Firmware und/oder eine beliebige Kombination von Hardware, Software und/oder Firmware implementiert werden. Somit könnten zum Beispiel beliebige von dem beispielhaften Entpacker 454, dem beispielhaften V-PCC-Decodierer 456, der beispielhaften Darstellungs-Engine 458, dem beispielhaften Videodecodierer 460, dem beispielhaften Video-Renderer 462, dem beispielhaften Bitstromdecodierer 604, dem beispielhaften Objektfilter 605, dem beispielhaften Rekonstruktor 607, dem beispielhaften Geometrierekonstruktor 606, dem beispielhaften Glätter 608, dem beispielhaften Texturrekonstruktor 610 und/oder allgemeiner dem beispielhaften clientseitigen immersiven Videodecodierungssystem 450 durch eine(n) oder mehrere analoge oder digitale Schaltung(en), Logikschaltungen, programmierbare(n) Prozessor(en), programmierbare Steuerung(en), Grafikverarbeitungseinheit(en) (GPU(s)), Digitalsignalprozessor(en) (DSP(s)), anwendungsspezifische integrierte Schaltung(en) (ASIC(s)), programmierbare Logikvorrichtung(en) (PLD(s)) und/oder feldprogrammierbare Logikvorrichtung(en) (FPLD(s)) implementiert werden. Beim Lesen beliebiger der Einrichtungs- oder Systemansprüche dieses Patents, die eine reine Software- und/oder Firmware-Implementierung abdecken sollen, ist zumindest einer/eines/eine von dem beispielhaften Entpacker 454, dem beispielhaften V-PCC-Decodierer 456, der beispielhaften Darstellungs-Engine 458, dem beispielhaften Videodecodierer 460, dem beispielhaften Video-Renderer 462, dem beispielhaften Bitstromdecodierer 604, dem beispielhaften Objektfilter 605, dem beispielhaften Rekonstruktor 607, dem beispielhaften Geometrierekonstruktor 606, dem beispielhaften Glätter 608, dem beispielhaften Texturrekonstruktor 610 und/oder dem beispielhaften clientseitigen immersiven Videodecodierungssystem 450 hierdurch ausdrücklich derart definiert, dass er/sie/es eine nichtflüchtige computerlesbare Speicherungsvorrichtung oder Speicherungsplatte, wie einen Speicher, eine Digital Versatile Disk (DVD), eine Compact Disk (CD), einen Blu-Ray-Datenträger usw., einschließlich der Software und/oder Firmware, einschließt. Ferner kann das beispielhafte clientseitige immersive Videodecodierungssystem 450 von 4 außerdem ein/einen/eine oder mehrere Elemente, Prozesse und/oder Vorrichtungen zusätzlich zu oder anstelle von den in 6 veranschaulichten einschließen und/oder kann mehr als eines/einen/eine von beliebigen oder allen der veranschaulichten Elemente, Prozesse und Vorrichtungen einschließen. Wie hier verwendet, umfasst die Phrase „in Kommunikation“, einschließlich Variationen davon, eine direkte Kommunikation und/oder eine indirekte Kommunikation durch eine oder mehrere Zwischenkomponenten und erfordert keine direkte physische (z. B. drahtgebundene) Kommunikation und/oder konstante Kommunikation, sondern schließt stattdessen zusätzlich eine selektive Kommunikation in periodischen Intervallen, geplanten Intervallen, aperiodischen Intervallen und/oder bei einmaligen Ereignissen ein.
-
Ein Flussdiagramm, das beispielhafte Hardwarelogik, maschinenlesbare Anweisungen, hardwareimplementierte Zustandsmaschinen und/oder eine beliebige Kombination davon zum Implementieren des serverseitigen immersiven Videocodierungssystems 402 von 4 darstellt, ist in 11 gezeigt. Die maschinenlesbaren Anweisungen können ein oder mehrere ausführbare Programme oder Abschnitt(e) eines ausführbaren Programms zur Ausführung durch einen Computerprozessor und/oder eine Prozessorschaltungsanordnung, wie den Prozessor 1312, der in der unten in Verbindung mit 13 erörterten beispielhaften Prozessorplattform 1300 gezeigt ist, sein. Das Programm kann in Software ausgeführt sein, die auf einem nichtflüchtigen computerlesbaren Speicherungsmedium, wie einer CD-ROM, einer Diskette, einer Festplatte, einer DVD, einem Blu-ray-Datenträger oder einem Speicher in Verbindung mit dem Prozessor 1312, gespeichert ist, aber das gesamte Programm und/oder Teile davon könnten alternativ dazu durch eine andere Vorrichtung als den Prozessor 1312 ausgeführt werden und/oder in Firmware oder dedizierter Hardware ausgeführt sein. Obwohl das beispielhafte Programm unter Bezugnahme auf das in 11 veranschaulichte Flussdiagramm beschrieben ist, können ferner alternativ viele andere Verfahren zum Implementieren des beispielhaften serverseitigen immersiven Videocodierungssystems 402 verwendet werden. Zum Beispiel kann die Ausführungsreihenfolge der Blöcke geändert werden, und/oder einige der beschriebenen Blöcke können geändert, beseitigt oder kombiniert werden. Zusätzlich oder alternativ dazu können beliebige oder alle der Blöcke durch eine oder mehrere Hardwareschaltungen (z. B. eine diskrete und/oder integrierte analoge und/oder digitale Schaltungsanordnung, eine FPGA, eine ASIC, einen Komparator, einen Operationsverstärker (op-amp), eine Logikschaltung usw.) implementiert werden, die strukturiert sind, um die entsprechende Operation durchzuführen, ohne Software oder Firmware auszuführen. Die Prozessorschaltungsanordnung kann an verschiedenen Netzwerkorten verteilt und/oder für eine oder mehrere Vorrichtungen (z. B. einen Mehrkernprozessor in einer einzelnen Maschine, mehrere Prozessoren, die über ein Server-Rack verteilt sind, usw.) lokal sein.
-
Ein Flussdiagramm, das beispielhafte Hardwarelogik, maschinenlesbare Anweisungen, hardwareimplementierte Zustandsmaschinen und/oder eine beliebige Kombination davon zum Implementieren des clientseitigen immersiven Videodecodierungssystems 450 von 4 darstellt, ist in 12 gezeigt. Die maschinenlesbaren Anweisungen können ein oder mehrere ausführbare Programme oder Abschnitt(e) eines ausführbaren Programms zur Ausführung durch einen Computerprozessor und/oder eine Prozessorschaltungsanordnung, wie den Prozessor 1412, der in der unten in Verbindung mit 14 erörterten beispielhaften Prozessorplattform 1400 gezeigt ist, sein. Das Programm kann in Software ausgeführt sein, die auf einem nichtflüchtigen computerlesbaren Speicherungsmedium, wie einer CD-ROM, einer Diskette, einer Festplatte, einer DVD, einem Blu-ray-Datenträger oder einem Speicher in Verbindung mit dem Prozessor 1412, gespeichert ist, aber das gesamte Programm und/oder Teile davon könnten alternativ dazu durch eine andere Vorrichtung als den Prozessor 1412 ausgeführt werden und/oder in Firmware oder dedizierter Hardware ausgeführt sein. Obwohl das beispielhafte Programm unter Bezugnahme auf das in 12 veranschaulichte Flussdiagramm beschrieben ist, können ferner alternativ viele andere Verfahren zum Implementieren des beispielhaften clientseitigen immersiven Videodecodierungssystems 450 verwendet werden. Zum Beispiel kann die Ausführungsreihenfolge der Blöcke geändert werden, und/oder einige der beschriebenen Blöcke können geändert, beseitigt oder kombiniert werden. Zusätzlich oder alternativ dazu können beliebige oder alle der Blöcke durch eine oder mehrere Hardwareschaltungen (z. B. eine diskrete und/oder integrierte analoge und/oder digitale Schaltungsanordnung, eine FPGA, eine ASIC, einen Komparator, einen Operationsverstärker (op-amp), eine Logikschaltung usw.) implementiert werden, die strukturiert sind, um die entsprechende Operation durchzuführen, ohne Software oder Firmware auszuführen. Die Prozessorschaltungsanordnung kann an verschiedenen Netzwerkorten verteilt und/oder für eine oder mehrere Vorrichtungen (z. B. einen Mehrkernprozessor in einer einzelnen Maschine, mehrere Prozessoren, die über ein Server-Rack verteilt sind, usw.) lokal sein.
-
Die hier beschriebenen maschinenlesbaren Anweisungen können in einem oder mehreren von einem komprimierten Format, einem verschlüsselten Format, einem fragmentierten Format, einem kompilierten Format, einem ausführbaren Format, einem gepackten Format usw. gespeichert sein. Maschinenlesbare Anweisungen, wie hier beschrieben, können als Daten oder eine Datenstruktur (z. B. Abschnitte von Anweisungen, Code, Darstellungen von Code usw.) gespeichert sein, die genutzt werden können, um maschinenausführbare Anweisungen zu erzeugen, herzustellen und/oder zu produzieren. Zum Beispiel können die maschinenlesbaren Anweisungen fragmentiert und auf einer oder mehreren Speicherungsvorrichtungen und/oder Rechenvorrichtungen (z. B. Servern) gespeichert sein, die sich an denselben oder unterschiedlichen Orten eines Netzwerks oder einer Sammlung von Netzwerken (z. B. in der Cloud, in Edge-Vorrichtungen usw.) befinden. Die maschinenlesbaren Anweisungen können eines oder mehrere von Installation, Modifikation, Anpassung, Aktualisieren, Kombinieren, Ergänzen, Konfigurieren, Entschlüsselung, Dekomprimierung, Entpacken, Verteilung, Neuzuweisung, Kompilierung usw. erfordern, um sie durch eine Rechenvorrichtung und/oder eine andere Maschine direkt lesbar, interpretierbar und/oder ausführbar zu machen. Zum Beispiel können die maschinenlesbaren Anweisungen in mehreren Teilen gespeichert sein, die einzeln komprimiert, verschlüsselt und auf separaten Rechenvorrichtungen gespeichert sind, wobei die Teile, wenn sie entschlüsselt, dekomprimiert und kombiniert werden, einen Satz ausführbarer Anweisungen bilden, die eine oder mehrere Funktionen implementieren, die zusammen ein Programm, wie das hier beschriebene, bilden können.
-
In einem anderen Beispiel können die maschinenlesbaren Anweisungen in einem Zustand gespeichert sein, in dem sie durch eine Prozessorschaltungsanordnung gelesen werden können, aber die Hinzufügung einer Bibliothek (z. B. einer Dynamical Link Library (DLL)), eines Software Development Kit (SDK), einer Anwendungsprogrammierschnittstelle (API) usw. erfordern, um die Anweisungen auf einer bestimmten Rechenvorrichtung oder anderen Vorrichtung auszuführen. In einem anderen Beispiel müssen die maschinenlesbaren Anweisungen möglicherweise konfiguriert (z. B. Einstellungen gespeichert, Daten eingegeben, Netzwerkadressen erfasst usw.) werden, bevor die maschinenlesbaren Anweisungen und/oder das/die entsprechende(n) Programm(e) ganz oder teilweise ausgeführt werden können. Somit können maschinenlesbare Medien, wie hier verwendet, maschinenlesbare Anweisungen und/oder (ein) Programm(e) unabhängig von dem bestimmten Format oder Zustand der maschinenlesbaren Anweisungen und/oder des Programms/der Programme, wenn sie gespeichert oder auf andere Weise im Ruhezustand oder im Übermittlungszustand sind, einschließen.
-
Die hier beschriebenen maschinenlesbaren Anweisungen können durch eine beliebige vergangene, aktuelle oder zukünftige Anweisungssprache, Skriptsprache, Programmiersprache usw. dargestellt werden. Zum Beispiel können die maschinenlesbaren Anweisungen unter Verwendung einer beliebigen der folgenden Sprachen dargestellt werden: C, C++, Java, C#, Perl, Python, JavaScript, HyperText Markup Language (HTML), Structured Query Language (SQL), Swift usw.
-
Wie oben erwähnt, können die beispielhaften Prozesse von 11-12 unter Verwendung ausführbarer Anweisungen (z. B. computer- und/oder maschinenlesbarer Anweisungen) implementiert werden, die auf einem nichtflüchtigen computer- und/oder maschinenlesbaren Medium gespeichert sind, wie einem Festplattenlaufwerk, einem Flash-Speicher, einem Nurlesespeicher, einer Compact Disk, einer Digital Versatile Disk, einem Cache, einem Direktzugriffsspeicher und/oder einer beliebigen anderen Speicherungsvorrichtung oder Speicherungsplatte, in der Informationen für eine beliebige Dauer (z. B. für längere Zeiträume, permanent, für kurze Instanzen, zum temporären Puffern und/oder zum Zwischenspeichern der Informationen) gespeichert sind. Wie hier verwendet, ist der Begriff nichtflüchtiges computerlesbares Medium ausdrücklich derart definiert, dass er einen beliebigen Typ von computerlesbarer Speicherungsvorrichtung und/oder Speicherungsplatte einschließt und sich ausbreitende Signale ausschließt und Übertragungsmedien ausschließt.
-
„Einschließlich“ und „umfassend“ (und alle Formen und Zeitformen davon) werden hier als offene Begriffe verwendet. Somit versteht es sich, dass immer dann, wenn ein Anspruch eine beliebige Form von „einschließen“ oder „umfassen“ (z. B. umfasst, schließt ein, umfassend, einschließlich, aufweisend usw.) als einen Oberbegriff oder innerhalb einer Anspruchsangabe irgendeiner Art einsetzt, zusätzliche Elemente, Begriffe usw. vorhanden sein können, ohne außerhalb des Schutzumfangs des entsprechenden Anspruchs oder der entsprechenden Angabe zu fallen. Wenn bei Verwendung in diesem Dokument die Phrase „zumindest“ als der Übergangsbegriff in zum Beispiel einem Oberbegriff eines Anspruchs verwendet wird, ist dieser in der gleichen Weise offen, wie die Begriffe „umfassend“ und „einschließlich“ offen sind. Der Begriff „und/oder“ bezieht sich, wenn er zum Beispiel in einer Form, wie A, B und/oder C, verwendet wird, auf eine beliebige Kombination oder einen beliebigen Teilsatz von A, B, C, wie (1) A allein, (2) B allein, (3) C allein, (4) A mit B, (5) A mit C, (6) B mit C und (7) A mit B und mit C. Bei Verwendung in diesem Dokument im Kontext des Beschreibens von Strukturen, Komponenten, Elementen, Objekten und/oder Dingen soll sich der Ausdruck „zumindest eines von A und B“ auf Implementierungen beziehen, die ein beliebiges von (1) zumindest ein A, (2) zumindest ein B und (3) zumindest ein A und zumindest ein B einschließen. In ähnlicher Weise soll sich der Ausdruck „zumindest eines von A oder B“ bei Verwendung in diesem Dokument im Kontext des Beschreibens von Strukturen, Komponenten, Elementen, Objekten und/oder Dingen auf Implementierungen beziehen, die ein beliebiges von (1) zumindest ein A, (2) zumindest ein B und (3) zumindest ein A und zumindest ein B einschließen. Bei Verwendung in diesem Dokument im Kontext des Beschreibens der Durchführung oder Ausführung von Prozessen, Anweisungen, Aktionen, Aktivitäten und/oder Schritten soll sich der Ausdruck „zumindest eines von A und B“ auf Implementierungen beziehen, die ein beliebiges von (1) zumindest ein A, (2) zumindest ein B und (3) zumindest ein A und zumindest ein B einschließen. In ähnlicher Weise soll sich der Ausdruck „zumindest eines von A oder B“ bei Verwendung in diesem Dokument im Kontext des Beschreibens der Durchführung oder Ausführung von Prozessen, Anweisungen, Aktionen, Aktivitäten und/oder Schritten auf Implementierungen beziehen, die ein beliebiges von (1) zumindest ein A, (2) zumindest ein B und (3) zumindest ein A und zumindest ein B einschließen.
-
Wie hier verwendet, schließen Bezugnahmen auf die Einzahl (z. B. „ein“, „eine“, „erste/r/s“, „zweite/r/s“ usw.) eine Vielzahl nicht aus. Der Begriff „eine“ Entität, wie hier verwendet, bezieht sich auf eine oder mehrere von dieser Entität. Die Begriffe „ein“ (oder „eine/r/s“), „eine/r/s oder mehrere“ und „zumindest ein/e/r/s“ können hier austauschbar verwendet werden. Des Weiteren, wenngleich einzeln aufgeführt, kann eine Vielzahl von Mitteln, Elementen oder Verfahrensaktionen durch z. B. eine einzelne Einheit oder einen einzelnen Prozessor implementiert werden. Zusätzlich, wenngleich einzelne Merkmale in verschiedenen Beispielen oder Ansprüchen eingeschlossen sein können, können diese möglicherweise kombiniert werden, und der Einschluss in verschiedenen Beispielen oder Ansprüchen impliziert nicht, dass eine Kombination von Merkmalen nicht durchführbar und/oder vorteilhaft ist.
-
Das Programm 1100 von 11 weist Block 1102 auf. Bei Block 1102 empfängt der beispielhafte Projektor 502 (5) Punktwolkendarstellungen von Objekten. Zum Beispiel empfängt der Projektor 502 Punktwolkendaten 500 (5) von Objekten. Bei Block 1104 annotiert der beispielhafte Punktannotator 501 jeden Eingabepunkt mit einer Objekt-ID. Zum Beispiel ermittelt der Punktannotator 501, ob die Eingabepunkte der Punktwolke Objektkennungen einschließen. Wenn der Punktannotator 501 ermittelt, dass die Eingabepunkte keine Objektkennungen einschließen, erzeugt der Punktannotator 501 eine Objektkennung unter Verwendung von Maschinenlernklassifizierern, eines herkömmlichen Klassifizierers und/oder eines Segmentierungsalgorithmus und weist diese jeder Eingabe der Punktwolke zu. Das heißt, dass der Punktannotator 501 jedem Objekt in der Punktwolke eine andere Objekt-ID zuweist.
-
Bei Block 1106 führt der beispielhafte Projektor 502 eine objektbasierte Projektion durch. In einigen Beispielen iteriert der Projektor 502 durch die Objekt-IDs, um die Punktwolken jedes Objekts objektweise auf Projektionsebenen zu projizieren. Zusätzlich oder alternativ dazu projiziert der Projektor 502 die Punktwolken jedes Objekts auf separate Projektionsebenen, die einem Projektionswürfel zugeordnet sind, der diesem einzelnen Objekt entspricht. In einigen Beispielen trennt der beispielhafte Objekttrenner 504 (5) jedes projizierte Objekt in jeweilige Projektionsschichten der Projektionsebenen. Das heißt, dass der Objekttrenner 504 Projektionsschichtpaare des Projektionswürfels für jedes Objekt erzeugt.
-
Bei Block 1108 extrahiert der beispielhafte objektbasierte Generator 506 (5) Flächen, wobei jede Fläche Pixel aufweist, die zu einem Objekt gehören. Zum Beispiel erzeugt der objektbasierte Generator 506 einen Stapel von Flächen in Projektionsschichten der Projektionsebene. Das heißt, dass der objektbasierte Generator 506 Flächen erzeugt, so dass jede Fläche einem Objekt entspricht. Bei Block 1110 weist der beispielhafte objektbasierte Generator 506 eine zugeordnete Objekt-ID zu jeder Fläche zu. Zum Beispiel markiert der objektbasierte Generator 506 jede Fläche mit der entsprechenden Objekt-ID.
-
Bei Block 1112 packt der beispielhafte objektbasierte Generator 506 Flächen in Atlasse und erzeugt Flächeninformationen. Zum Beispiel packt der objektbasierte Generator 506 Flächen eines oder mehrerer Objekte in Atlasse. In einigen Beispielen erzeugt der objektbasierte Generator 506 entsprechende Flächenmetadaten, um jede Fläche auf seine Position im Atlas abzubilden.
-
Bei Block 1114 erzeugt der beispielhafte Metadatengenerator 508 (5) Attribut- und Geometrieatlasse. Der Metadatengenerator 508 erzeugt zum Beispiel codierte Geometriedaten. Bei Block 1116 codiert und multiplext der beispielhafte Bitstromcodierer 510 (5) Videodaten und Metadaten in einen einzelnen Bitstrom. Zum Beispiel empfängt der Bitstromcodierer 510 die Attribut- und Geometrieatlasse von dem beispielhaften Metadatengenerator 508 und Atlasse von dem beispielhaften objektbasierten Generator 506. Der beispielhafte Bitstromcodierer 510 multiplext die empfangenen Daten und gibt einen einzelnen Bitstrom aus.
-
12 ist ein Flussdiagramm, das maschinenlesbare Anweisungen darstellt, die ausgeführt werden können, um die Client-Wiedergabevorrichtung 452 von 4 zu implementieren. Bei Block 1202 empfängt der beispielhafte Entpacker 454 (4) einen V-PCC-codierten Bitstrom. Zum Beispiel empfängt der Entpacker 454 den V-PCC-codierten Bitstrom, der durch den beispielhaften objektbasierten V-PCC-Codierer 410 ( 4) erzeugt wird, über das Inhaltsverteilungsnetzwerk 416 (4).
-
Bei Block 1204 demultiplext der beispielhafte Entpacker 454 den V-PCC-codierten Bitstrom. Zum Beispiel erzeugt der Entpacker 454 Teilströme (z. B. einen Videoteilstrom, einen Flächenteilstrom, einen Belegungskartenteilstrom usw.) aus dem V-PCC-codierten Bitstrom. Bei Block 1206 ermittelt das beispielhafte Objektfilter 605 (6), ob eine Objektfilterung durchgeführt werden soll. Zum Beispiel ermittelt das Objektfilter 605, ob Flächen mit Objekt-IDs entfernt werden sollen, die Objekten entsprechen, die nicht von Interesse sind. Wenn das beispielhafte Objektfilter 605 bei Block 1206 bestimmt, eine Objektfilterung durchzuführen, filtert das Objektfilter 605 bei Block 1208 Objekte. Das Objektfilter 605 identifiziert zum Beispiel Flächen, die den Objekt-IDs der zu entfernenden Objekte entsprechen, und entfernt die entsprechenden Flächen aus dem Atlas. Wenn das beispielhafte Objektfilter 605 bei Block 1206 bestimmt, keine Objektfilterung durchzuführen, geht die Steuerung zu Block 1210 über.
-
Bei Block 1210 rekonstruiert der beispielhafte V-PCC-Decodierer 456 (4) Geometriedaten und führt eine Glättung durch. Zum Beispiel rekonstruiert der Geometrierekonstruktor 606 (6) Geometriedaten basierend auf den Flächeninformationen und/oder der Belegungskarte. In einigen Beispielen rekonstruiert der V-PCC-Decodierer 456 Geometriedaten, die Objekten von Interesse entsprechen (z. B. Flächen, die den Objekten von Interesse entsprechen). Der beispielhafte Glätter 608 (6) führt eine Glättung basierend auf den rekonstruierten Geometriedaten durch. Der beispielhafte Texturrekonstruktor 610 (6) rekonstruiert Texturdaten basierend auf den rekonstruierten Geometriedaten und den Flächeninformationen. Bei Block 1212 erzeugt der beispielhafte Video-Renderer 462 (4) eine decodierte dynamische Punktwolke.
-
13 ist ein Blockdiagramm einer beispielhaften Prozessorplattform 1300, die zum Ausführen der Anweisungen von 11 strukturiert ist, um das serverseitige immersive Videocodierungssystem 402 von 4 und/oder 5 zu implementieren. Die Prozessorplattform 1300 kann zum Beispiel ein Server, ein Personal Computer, eine Workstation, eine selbstlernende Maschine (z. B. ein neuronales Netzwerk), eine Mobilvorrichtung (z. B. ein Mobiltelefon, ein Smartphone, ein Tablet, wie ein iPad™), ein Personal Digital Assistant (PDA), ein Internetgerät, ein DVD-Player, ein CD-Player, ein digitaler Videorecorder, ein Blue Ray-Player, eine Spielkonsole, ein persönlicher Videorecorder, eine Set-Top-Box, ein Kopfhörersatz oder eine andere am Körper tragbare Vorrichtung oder ein beliebiger anderer Typ von Rechenvorrichtung sein.
-
Die Prozessorplattform 1300 des veranschaulichten Beispiels schließt einen Prozessor 1312 ein. Der Prozessor 1312 des veranschaulichten Beispiels ist Hardware. Zum Beispiel kann der Prozessor 1312 durch eine oder mehrere integrierte Schaltungen, Logikschaltungen, Mikroprozessoren, GPUs, DSPs oder Steuerungen von einer beliebigen gewünschten Familie oder einem beliebigen gewünschten Hersteller implementiert sein. Der Hardwareprozessor kann eine halbleiterbasierte (z. B. siliziumbasierte) Vorrichtung sein. In diesem Beispiel implementiert der Prozessor den/die beispielhaften Videoaufnehmer 404, den beispielhaften Punktwolkengenerator 406, den beispielhaften Virtuelle-Kamera-Renderer 407, den beispielhaften objektbasierten V-PCC-Codierer 410, den beispielhaften Videocodierer 412, den beispielhaften Strompacker 414 und das beispielhafte Inhaltsverwaltungssystem 415.
-
Der Prozessor 1312 des veranschaulichten Beispiels schließt einen lokalen Speicher 1313 (z. B. einen Cache) ein. Der Prozessor 1312 des veranschaulichten Beispiels ist über einen Bus 1318 in Kommunikation mit einem Hauptspeicher, einschließlich eines flüchtigen Speichers 1314 und eines nichtflüchtigen Speichers 1316. Der flüchtige Speicher 1314 kann durch Synchronous Dynamic Random Access Memory (SDRAM), Dynamic Random Access Memory (DRAM), RAMBUS® Dynamic Random Access Memory (RDRAM®) und/oder einen beliebigen anderen Typ von Vorrichtung eines Speichers mit wahlfreiem Zugriff implementiert sein. Der nichtflüchtige Speicher 1316 kann durch Flash-Speicher und/oder einen beliebigen anderen gewünschten Typ von Speichervorrichtung implementiert sein. Zugriff auf den Hauptspeicher 1314, 1316 wird durch eine Speichersteuerung gesteuert.
-
Die Prozessorplattform 1300 des veranschaulichten Beispiels schließt auch eine Schnittstellenschaltung 1320 ein. Die Schnittstellenschaltung 1320 kann durch einen beliebigen Typ von Schnittstellenstandard, wie eine Ethernet-Schnittstelle, einen Universal Serial Bus (USB), eine Bluetooth®-Schnittstelle, eine Near Field Communication-Schnittstelle (NFC-Schnittstelle) und/oder eine PCI express-Schnittstelle, implementiert sein.
-
In dem veranschaulichten Beispiel sind eine oder mehrere Eingabevorrichtungen 1322 mit der Schnittstellenschaltung 1320 verbunden. Die Eingabevorrichtung(en) 1322 ermöglichen es einem Benutzer, Daten und/oder Befehle in den Prozessor 1012 einzugeben. Die Eingabevorrichtung(en) kann/können durch zum Beispiel einen Audiosensor, ein Mikrofon, eine Kamera (Foto oder Video), eine Tastatur, eine Taste, eine Maus, einen Touchscreen, ein Trackpad, einen Trackball, Isopoint und/oder ein Spracherkennungssystem implementiert werden.
-
Eine oder mehrere Ausgabevorrichtungen 1324 sind ebenfalls mit der Schnittstellenschaltung 1320 des veranschaulichten Beispiels verbunden. Die Ausgabevorrichtungen 1324 können zum Beispiel durch Anzeigevorrichtungen (z. B. eine Leuchtdiode (LED), eine organische Leuchtdiode (OLED), eine Flüssigkristallanzeige (LCD), eine Kathodenstrahlröhre (CRT), eine In-Place Switching-Anzeige (IPS-Anzeige), einen Touchscreen usw.), eine Tastausgabevorrichtung, einen Drucker und/oder einen Lautsprecher implementiert werden. Die Schnittstellenschaltung 1320 des veranschaulichten Beispiels schließt somit typischerweise eine Grafiktreiberkarte, einen Grafiktreiberchip und/oder einen Grafiktreiberprozessor ein.
-
Die Schnittstellenschaltung 1320 des veranschaulichten Beispiels schließt außerdem eine Kommunikationsvorrichtung, wie einen Sender, einen Empfänger, einen Transceiver, ein Modem, ein Residential Gateway, einen drahtlosen Zugangspunkt und/oder eine Netzwerkschnittstelle, ein, um den Austausch von Daten mit externen Maschinen (z. B. Rechenvorrichtungen irgendeiner Art) über ein Netzwerk 1326 zu unterstützen. Die Kommunikation kann über zum Beispiel eine Ethernet-Verbindung, eine Digital Subscriber Line-Verbindung (DSL-Verbindung), eine Telefonleitungsverbindung, ein Koaxialkabelsystem, ein Satellitensystem, ein drahtloses Sichtliniensystem, ein Mobiltelefonsystem usw. erfolgen.
-
Die Prozessorplattform 1300 des veranschaulichten Beispiels schließt auch eine oder mehrere Massenspeichervorrichtungen 1328 zum Speichern von Software und/oder Daten ein. Beispiele für solche Massenspeichervorrichtungen 1328 schließen Diskettenlaufwerke, Festplattendatenträger, Compact Disk-Laufwerke, Blu-ray-Festplattenlaufwerke, Redundant Array of Independent Disks-Systeme (RAID-Systeme) und Digital Versatile Disk-Laufwerke (DVD-Laufwerke) ein.
-
Die maschinenausführbaren Anweisungen 1332 von 11 können in der Massenspeicherungsvorrichtung 1328, in dem flüchtigen Speicher 1314, in dem nichtflüchtigen Speicher 1316 und/oder auf einem entfernbaren nichtflüchtigen computerlesbaren Speichermedium, wie einer CD oder DVD, gespeichert sein.
-
14 ist ein Blockdiagramm einer beispielhaften Prozessorplattform 1400, die zum Ausführen der Anweisungen von 12 strukturiert ist, um das clientseitige immersive Videodecodierungssystem 450 von 4 und/oder 6 zu implementieren. Die Prozessorplattform 1400 kann zum Beispiel ein Server, ein Personal Computer, eine Workstation, eine selbstlernende Maschine (z. B. ein neuronales Netzwerk), eine Mobilvorrichtung (z. B. ein Mobiltelefon, ein Smartphone, ein Tablet, wie ein iPad™), ein Personal Digital Assistant (PDA), ein Internetgerät, ein DVD-Player, ein CD-Player, ein digitaler Videorecorder, ein Blue Ray-Player, eine Spielkonsole, ein persönlicher Videorecorder, eine Set-Top-Box, ein Kopfhörersatz oder eine andere am Körper tragbare Vorrichtung oder ein beliebiger anderer Typ von Rechenvorrichtung sein.
-
Die Prozessorplattform 1400 des veranschaulichten Beispiels schließt einen Prozessor 1412 ein. Der Prozessor 1412 des veranschaulichten Beispiels ist Hardware. Zum Beispiel kann der Prozessor 1412 durch eine oder mehrere integrierte Schaltungen, Logikschaltungen, Mikroprozessoren, GPUs, DSPs oder Steuerungen von einer beliebigen gewünschten Familie oder einem beliebigen gewünschten Hersteller implementiert sein. Der Hardwareprozessor kann eine halbleiterbasierte (z. B. siliziumbasierte) Vorrichtung sein. In diesem Beispiel implementiert der Prozessor den beispielhaften Entpacker 454, den beispielhaften V-PCC-Decodierer 456, die beispielhafte Darstellungs-Engine 458, den beispielhaften Videodecodierer 460 und den beispielhaften Video-Renderer 462.
-
Der Prozessor 1412 des veranschaulichten Beispiels schließt einen lokalen Speicher 1413 (z. B. einen Cache) ein. Der Prozessor 1412 des veranschaulichten Beispiels ist über einen Bus 1418 in Kommunikation mit einem Hauptspeicher, einschließlich eines flüchtigen Speichers 1414 und eines nichtflüchtigen Speichers 1416. Der flüchtige Speicher 1414 kann durch Synchronous Dynamic Random Access Memory (SDRAM), Dynamic Random Access Memory (DRAM), RAMBUS® Dynamic Random Access Memory (RDRAM®) und/oder einen beliebigen anderen Typ von Vorrichtung eines Speichers mit wahlfreiem Zugriff implementiert sein. Der nichtflüchtige Speicher 1416 kann durch Flash-Speicher und/oder einen beliebigen anderen gewünschten Typ von Speichervorrichtung implementiert sein. Zugriff auf den Hauptspeicher 1414, 1416 wird durch eine Speichersteuerung gesteuert.
-
Die Prozessorplattform 1400 des veranschaulichten Beispiels schließt auch eine Schnittstellenschaltung 1420 ein. Die Schnittstellenschaltung 1420 kann durch einen beliebigen Typ von Schnittstellenstandard, wie eine Ethernet-Schnittstelle, einen Universal Serial Bus (USB), eine Bluetooth®-Schnittstelle, eine Near Field Communication-Schnittstelle (NFC-Schnittstelle) und/oder eine PCI express-Schnittstelle, implementiert sein.
-
In dem veranschaulichten Beispiel sind eine oder mehrere Eingabevorrichtungen 1422 mit der Schnittstellenschaltung 1420 verbunden. Die Eingabevorrichtung(en) 1422 ermöglichen es einem Benutzer, Daten und/oder Befehle in den Prozessor 1012 einzugeben. Die Eingabevorrichtung(en) kann/können durch zum Beispiel einen Audiosensor, ein Mikrofon, eine Kamera (Foto oder Video), eine Tastatur, eine Taste, eine Maus, einen Touchscreen, ein Trackpad, einen Trackball, Isopoint und/oder ein Spracherkennungssystem implementiert werden.
-
Eine oder mehrere Ausgabevorrichtungen 1424 sind ebenfalls mit der Schnittstellenschaltung 1420 des veranschaulichten Beispiels verbunden. Die Ausgabevorrichtungen 1324 können zum Beispiel durch Anzeigevorrichtungen (z. B. eine Leuchtdiode (LED), eine organische Leuchtdiode (OLED), eine Flüssigkristallanzeige (LCD), eine Kathodenstrahlröhre (CRT), eine In-Place Switching-Anzeige (IPS-Anzeige), einen Touchscreen usw.), eine Tastausgabevorrichtung, einen Drucker und/oder einen Lautsprecher implementiert werden. Die Schnittstellenschaltung 1420 des veranschaulichten Beispiels schließt somit typischerweise eine Grafiktreiberkarte, einen Grafiktreiberchip und/oder einen Grafiktreiberprozessor ein.
-
Die Schnittstellenschaltung 1420 des veranschaulichten Beispiels schließt außerdem eine Kommunikationsvorrichtung, wie einen Sender, einen Empfänger, einen Transceiver, ein Modem, ein Residential Gateway, einen drahtlosen Zugangspunkt und/oder eine Netzwerkschnittstelle, ein, um den Austausch von Daten mit externen Maschinen (z. B. Rechenvorrichtungen irgendeiner Art) über ein Netzwerk 1426 zu unterstützen. Die Kommunikation kann über zum Beispiel eine Ethernet-Verbindung, eine Digital Subscriber Line-Verbindung (DSL-Verbindung), eine Telefonleitungsverbindung, ein Koaxialkabelsystem, ein Satellitensystem, ein drahtloses Sichtliniensystem, ein Mobiltelefonsystem usw. erfolgen.
-
Die Prozessorplattform 1400 des veranschaulichten Beispiels schließt auch eine oder mehrere Massenspeichervorrichtungen 1428 zum Speichern von Software und/oder Daten ein. Beispiele für solche Massenspeichervorrichtungen 1428 schließen Diskettenlaufwerke, Festplattendatenträger, Compact Disk-Laufwerke, Blu-ray-Festplattenlaufwerke, Redundant Array of Independent Disks-Systeme (RAID-Systeme) und Digital Versatile Disk-Laufwerke (DVD-Laufwerke) ein.
-
Die maschinenausführbaren Anweisungen 1432 von 12 können in der Massenspeicherungsvorrichtung 1428, in dem flüchtigen Speicher 1414, in dem nichtflüchtigen Speicher 1416 und/oder auf einem entfernbaren nichtflüchtigen computerlesbaren Speichermedium, wie einer CD oder DVD, gespeichert sein.
-
Ein Blockdiagramm, das eine beispielhafte Softwareverteilungsplattform 1505 zum Verteilen von Software, wie der beispielhaften computerlesbaren Anweisungen 1332 von 13 und/oder der beispielhaften computerlesbaren Anweisungen 1432 von 14, an Dritte veranschaulicht, ist in 15 veranschaulicht. Die beispielhafte Softwareverteilungsplattform 1505 kann durch einen beliebigen Computerserver, eine beliebige Dateneinrichtung, einen beliebigen Cloud-Dienst usw. implementiert werden, der/die in der Lage ist, Software zu speichern und an andere Rechenvorrichtungen zu übertragen. Die Dritten können Kunden der Entität sein, die im Besitz der Softwareverteilungsplattform sind und/oder diese betreiben. Zum Beispiel kann die Entität, die die Softwareverteilungsplattform besitzt und/oder betreibt, ein Entwickler, ein Verkäufer und/oder ein Lizenzgeber von Software, wie der beispielhaften computerlesbaren Anweisungen 1332 von 13 und/oder der beispielhaften computerlesbaren Anweisungen 1432 von 14, sein. Die Dritten können Verbraucher, Benutzer, Einzelhändler, OEMs usw. sein, die die Software zur Verwendung und/oder zum Wiederverkauf und/oder zur Unterlizenzierung kaufen und/oder lizenzieren. In dem veranschaulichten Beispiel schließt die Softwareverteilungsplattform 1505 einen oder mehrere Server und eine oder mehrere Speicherungsvorrichtungen ein. Die Speicherungsvorrichtungen speichern die computerlesbaren Anweisungen 1332 und/oder 1432, die den beispielhaften computerlesbaren Anweisungen 1332 von 13 und/oder den beispielhaften computerlesbaren Anweisungen 1432 von 14 entsprechen können, wie oben beschrieben. Der eine oder die mehreren Server der beispielhaften Softwareverteilungsplattform 1505 stehen in Kommunikation mit einem Netzwerk 1510, das einem beliebigen oder beliebigen mehreren von dem Internet und/oder beliebigen der oben beschriebenen beispielhaften Netzwerke 1326, 1426 entsprechen kann. In einigen Beispielen reagieren der eine oder die mehreren Server auf Anforderungen, die Software als Teil einer kommerziellen Transaktion an eine anfordernde Partei zu übertragen. Die Zahlung für die Lieferung, den Verkauf und/oder die Lizenz der Software kann durch den einen oder die mehreren Server der Softwareverteilungsplattform und/oder über eine Drittparteizahlungsentität abgewickelt werden. Die Server ermöglichen es Käufern und/oder Lizenzgebern, die computerlesbaren Anweisungen 1332 und/oder 1432 von der Softwareverteilungsplattform 1505 herunterzuladen. Zum Beispiel kann die Software, die den beispielhaften computerlesbaren Anweisungen 1332 von 13 entsprechen kann, auf die beispielhafte Prozessorplattform 1300 heruntergeladen werden, die die computerlesbaren Anweisungen 1432 ausführen soll, um das serverseitige immersive Videocodierungssystem 402 zu implementieren. Zum Beispiel kann die Software, die den beispielhaften computerlesbaren Anweisungen 1432 von 14 entsprechen kann, auf die beispielhafte Prozessorplattform 1400 heruntergeladen werden, die die computerlesbaren Anweisungen 1432 ausführen soll, um das clientseitige immersive Videodecodierungssystem 450 zu implementieren. In einigen Beispielen bieten ein oder mehrere Server der Softwareverteilungsplattform 1505 periodisch Aktualisierungen der Software (z. B. der beispielhaften computerlesbaren Anweisungen 1332 von 13 und/oder der beispielhaften computerlesbaren Anweisungen 1432 von 14) an, übertragen und/oder erzwingen diese, um sicherzustellen, dass Verbesserungen, Patches, Aktualisierungen usw. verteilt und auf die Software an den Endbenutzervorrichtungen angewendet werden.
-
Aus dem Vorstehenden versteht es sich, dass beispielhafte Verfahren, Einrichtungen und Herstellungsartikel offenbart wurden, die eine objektbasierte volumetrische Videocodierung ermöglichen. Die offenbarten Verfahren, Einrichtungen und Herstellungsartikel verbessern die Effizienz der Verwendung einer Rechenvorrichtung durch Zuweisen von Objekt-IDs zu Objekten, die in einer Videoszene dargestellt sind. In einigen Beispielen variiert ein objektbasierter Codierer die Anzahl von Bits, die zum Speichern von Objekt-IDs verwendet werden, basierend auf der Gesamtanzahl von Objekten in einer Szene. In einigen Beispielen identifiziert der objektbasierte Codierer Objekte von Interesse und ordnet relativ mehr Bandbreite zum Codieren der Objekte von Interesse und relativ weniger Bandbreite zu Hintergrundobjekten, statischen Objekten usw. zu. Die offenbarten Verfahren, Einrichtungen und Herstellungsartikel richten sich dementsprechend auf eine oder mehrere Verbesserung(en) der Funktionsweise eines Computers.
-
Beispielhafte Verfahren, Einrichtungen, Systeme und Herstellungsartikel für eine objektbasierte volumetrische Videocodierung sind hier offenbart. Weitere Beispiele und Kombinationen davon schließen Folgendes ein:
-
Beispiel 1 schließt einen Videocodierer ein, umfassend einen Projektor zum Projizieren von Punktwolkendaten auf Projektionsebenen, um Texturbilder und Geometriebilder zu erzeugen, die einem Objekt zugeordnet sind, einen Flächengenerator zum Erzeugen einer Fläche basierend auf einer Objektkennung des Objekts, wobei die Fläche zumindest eines von den Texturbildern oder den Geometriebildern einschließt, die dem Objekt zugeordnet sind, wobei die Fläche der Objektkennung des Objekts zugeordnet ist, einen Atlasgenerator zum Erzeugen eines Atlas, der in codierte Videodaten aufzunehmen ist, wobei der Atlas die Fläche einschließt.
-
Beispiel 2 schließt den Codierer von Beispiel 1 ein, wobei die Projektionsebenen Projektionsschichtpaare einschließen.
-
Beispiel 3 schließt den Codierer von Beispiel 2 ein, wobei das Objekt ein erstes Objekt ist, und schließt ferner einen Objekttrenner zum Erzeugen eines ersten Projektionsschichtpaars, das dem ersten Objekt entspricht, und eines zweiten Projektionsschichtpaars, das einem zweiten Objekt entspricht, ein.
-
Beispiel 4 schließt den Codierer von Beispiel 3 ein, wobei der Objekttrenner das erste Projektionsschichtpaar vor dem zweiten Projektionsschichtpaar ordnen soll, wenn sich das erste Objekt näher an einer ersten der Projektionsebenen als das zweite Objekt befindet.
-
Beispiel 5 schließt den Codierer von Beispiel 1 ein, wobei das Objekt ein erstes Objekt ist, das einer ersten Objektkennung zugeordnet ist, die Fläche eine erste Fläche ist, die der ersten Objektkennung zugeordnet ist, und der Flächengenerator eine zweite Fläche basierend auf einer zweiten Objektkennung erzeugen soll, wobei die zweite Fläche zweite Texturbilder und zweite Geometriebilder eines zweiten Objekts einschließt, wobei die zweite Fläche der zweiten Objektkennung zugeordnet ist, um das zweite Objekt zu identifizieren.
-
Beispiel 6 schließt den Codierer von Beispiel 5 ein, wobei der Flächengenerator die erste Fläche und die zweite Fläche in einer Projektionsschicht einer ersten der Projektionsebenen stapeln soll, wobei die erste Fläche vor der zweiten Fläche gestapelt wird, wenn sich das erste Objekt näher an der ersten der Projektionsebenen als das zweite Objekt befindet.
-
Beispiel 7 schließt den Codierer von Beispiel 1 ein, wobei das Objekt ein erstes Objekt ist, das einer ersten Objektkennung zugeordnet ist, und der Projektor die Punktwolkendaten, die der ersten Objektkennung zugeordnet sind, auf Projektionsebenen eines ersten Würfels projizieren soll und die Punktwolkendaten, die einer zweiten Objektkennung zugeordnet sind, auf Projektionsebenen eines zweiten Würfels projizieren soll, wobei die zweite Objektkennung einem zweiten Objekt in den Punktwolkendaten zugeordnet ist.
-
Beispiel 8 schließt den Codierer von Beispiel 7 ein, wobei der erste Würfel eine größere Auflösung als der zweite Würfel aufweist, der zweite Würfel eine größere Auflösung als der erste Würfel aufweist oder der erste Würfel dieselbe Auflösung wie der zweite Würfel aufweist.
-
Beispiel 9 schließt den Codierer von Beispiel 1 ein, ferner einschließend einen Punktannotator zum Empfangen von Punktwolkendaten, die einem Objekt zugeordnet sind, und Annotieren von Punkten der Punktwolkendaten mit einer Objektkennung des Objekts.
-
Beispiel 10 schließt den Codierer von Beispiel 1 ein, wobei die Objektkennung eine erste Objektkennung ist, die Fläche eine erste Fläche ist und der Flächengenerator eine zweite Fläche, die einer zweiten Objektkennung zugeordnet ist, mit einer niedrigeren Auflösung als die erste Fläche erzeugen soll, wobei die Punktwolkendaten ein zweites Objekt einschließen, das der zweiten Objektkennung zugeordnet ist.
-
Beispiel 11 schließt ein nichtflüchtiges computerlesbares Medium ein, das Anweisungen umfasst, die, wenn sie ausgeführt werden, eine Maschine zumindest veranlassen zum Projizieren von Punktwolkendaten auf Projektionsebenen, um Texturbilder und Geometriebilder zu erzeugen, die einem Objekt zugeordnet sind, Erzeugen einer Fläche basierend auf einer Objektkennung des Objekts, wobei die Fläche zumindest eines von den Texturbildern oder den Geometriebildern, die dem Objekt zugeordnet sind, einschließt, wobei die Fläche der Objektkennung des Objekts zugeordnet ist, Erzeugen eines Atlas, der in codierte Videodaten aufzunehmen ist, wobei der Atlas die Fläche einschließt.
-
Beispiel 12 schließt das nichtflüchtige computerlesbare Medium von Beispiel 11 ein, wobei die Projektionsebenen Projektionsschichtpaare einschließen.
-
Beispiel 13 schließt das nichtflüchtige computerlesbare Medium von Beispiel 12 ein, wobei das Objekt ein erstes Objekt ist und die Anweisungen die Maschine zum Erzeugen eines ersten Projektionsschichtpaars, das dem ersten Objekt entspricht, und eines zweiten Projektionsschichtpaars, das einem zweiten Objekt entspricht, veranlassen.
-
Beispiel 14 schließt das nichtflüchtige computerlesbare Medium von Beispiel 13 ein, wobei die Anweisungen die Maschine zum Ordnen des ersten Projektionsschichtpaars vor dem zweiten Projektionsschichtpaar, wenn sich das erste Objekt näher an einer ersten der Projektionsebenen als das zweite Objekt befindet, veranlassen.
-
Beispiel 15 schließt das nichtflüchtige computerlesbare Medium von Beispiel 11 ein, wobei das Objekt ein erstes Objekt ist, das einer ersten Objektkennung zugeordnet ist, die Fläche eine erste Fläche ist, die der ersten Objektkennung zugeordnet ist, und die Anweisungen die Maschine zum Erzeugen einer zweiten Fläche basierend auf einer zweiten Objektkennung veranlassen, wobei die zweite Fläche zweite Texturbilder und zweite Geometriebilder eines zweiten Objekts einschließt, wobei die zweite Fläche der zweiten Objektkennung zugeordnet ist, um das zweite Objekt zu identifizieren.
-
Beispiel 16 schließt das nichtflüchtige computerlesbare Medium von Beispiel 15 ein, wobei die Anweisungen die Maschine zum Stapeln der ersten Fläche und der zweiten Fläche in einer Projektionsschicht einer ersten der Projektionsebenen veranlassen, wobei die erste Fläche vor der zweiten Fläche gestapelt wird, wenn sich das erste Objekt näher an der ersten der Projektionsebenen als das zweite Objekt befindet.
-
Beispiel 17 schließt das nichtflüchtige computerlesbare Medium von Beispiel 11 ein, wobei das Objekt ein erstes Objekt ist, das einer ersten Objektkennung zugeordnet ist, und die Anweisungen die Maschine zum Projizieren der Punktwolkendaten, die der ersten Objektkennung zugeordnet sind, auf Projektionsebenen eines ersten Würfels und Projizieren der Punktwolkendaten, die einer zweiten Objektkennung zugeordnet sind, auf Projektionsebenen eines zweiten Würfels veranlassen, wobei die zweite Objektkennung einem zweiten Objekt in den Punktwolkendaten zugeordnet ist.
-
Beispiel 18 schließt das nichtflüchtige computerlesbare Medium von Beispiel 17 ein, wobei der erste Würfel eine größere Auflösung als der zweite Würfel aufweist, der zweite Würfel eine größere Auflösung als der erste Würfel aufweist oder der erste Würfel dieselbe Auflösung wie der zweite Würfel aufweist.
-
Beispiel 19 schließt das nichtflüchtige computerlesbare Medium von Beispiel 11 ein, wobei die Anweisungen die Maschine zum Empfangen von Punktwolkendaten, die einem Objekt zugeordnet sind, und Annotieren von Punkten der Punktwolkendaten mit einer Objektkennung des Objekts veranlassen.
-
Beispiel 20 schließt das nichtflüchtige computerlesbare Medium von Beispiel 11 ein, wobei die Objektkennung eine erste Objektkennung ist, die Fläche eine erste Fläche ist und die Anweisungen die Maschine zum Erzeugen einer zweiten Fläche, die einer zweiten Objektkennung zugeordnet ist, mit einer niedrigeren Auflösung als die erste Fläche veranlassen, wobei die Punktwolkendaten ein zweites Objekt einschließen, das der zweiten Objektkennung zugeordnet ist.
-
Beispiel 21 schließt ein Verfahren ein, umfassend ein Projizieren von Punktwolkendaten auf Projektionsebenen, um Texturbilder und Geometriebilder zu erzeugen, die einem Objekt zugeordnet sind, Erzeugen einer Fläche basierend auf einer Objektkennung des Objekts, wobei die Fläche zumindest eines von den Texturbildern oder den Geometriebildern, die dem Objekt zugeordnet sind, einschließt, wobei die Fläche der Objektkennung des Objekts zugeordnet ist, Erzeugen eines Atlas, der in codierte Videodaten aufzunehmen ist, wobei der Atlas die Fläche einschließt.
-
Beispiel 22 schließt das Verfahren von Beispiel 21 ein, wobei die Projektionsebenen Projektionsschichtpaare einschließen.
-
Beispiel 23 schließt das Verfahren von Beispiel 22 ein, wobei das Objekt ein erstes Objekt ist, und schließt ferner ein Erzeugen eines ersten Projektionsschichtpaars, das dem ersten Objekt entspricht, und eines zweiten Projektionsschichtpaars, das einem zweiten Objekt entspricht, ein.
-
Beispiel 24 schließt das Verfahren von Beispiel 23 ein, das ferner ein Ordnen des ersten Projektionsschichtpaars vor dem zweiten Projektionsschichtpaar einschließt, wenn sich das erste Objekt näher an einer ersten der Projektionsebenen als das zweite Objekt befindet.
-
Beispiel 25 schließt das Verfahren von Beispiel 21 ein, wobei das Objekt ein erstes Objekt ist, das einer ersten Objektkennung zugeordnet ist, die Fläche eine erste Fläche ist, die der ersten Objektkennung zugeordnet ist, und ferner einschließend ein Erzeugen einer zweiten Fläche basierend auf einer zweiten Objektkennung, wobei die zweite Fläche zweite Texturbilder und zweite Geometriebilder eines zweiten Objekts einschließt, wobei die zweite Fläche der zweiten Objektkennung zugeordnet ist, um das zweite Objekt zu identifizieren.
-
Beispiel 26 schließt das Verfahren von Beispiel 25 ein, das ferner ein Stapeln der ersten Fläche und der zweiten Fläche in einer Projektionsschicht einer ersten der Projektionsebenen einschließt, wobei die erste Fläche vor der zweiten Fläche gestapelt wird, wenn sich das erste Objekt näher an der ersten der Projektionsebenen als das zweite Objekt befindet.
-
Beispiel 27 schließt das Verfahren von Beispiel 21 ein, wobei das Objekt ein erstes Objekt ist, das einer ersten Objektkennung zugeordnet ist, und ferner einschließend ein Projizieren der Punktwolkendaten, die der ersten Objektkennung zugeordnet sind, auf Projektionsebenen eines ersten Würfels, und Projizieren der Punktwolkendaten, die einer zweiten Objektkennung zugeordnet sind, auf Projektionsebenen eines zweiten Würfels, wobei die zweite Objektkennung einem zweiten Objekt in den Punktwolkendaten zugeordnet ist.
-
Beispiel 28 schließt das Verfahren von Beispiel 27 ein, wobei der erste Würfel eine größere Auflösung als der zweite Würfel aufweist, der zweite Würfel eine größere Auflösung als der erste Würfel aufweist oder der erste Würfel die gleiche Auflösung wie der zweite Würfel aufweist.
-
Beispiel 29 schließt das Verfahren von Beispiel 21 ein, das ferner ein Empfangen von Punktwolkendaten, die einem Objekt zugeordnet sind, und Annotieren von Punkten der Punktwolkendaten mit einer Objektkennung des Objekts einschließt.
-
Beispiel 30 schließt das Verfahren von Beispiel 21 ein, wobei die Objektkennung eine erste Objektkennung ist, die Fläche eine erste Fläche ist und ferner einschließend ein Erzeugen einer zweiten Fläche, die einer zweiten Objektkennung zugeordnet ist, mit einer niedrigeren Auflösung als die erste Fläche, wobei die Punktwolkendaten ein zweites Objekt einschließen, das der zweiten Objektkennung zugeordnet ist.
-
Beispiel 31 schließt einen Decodierer ein, umfassend einen Bitstromdecodierer zum Empfangen eines codierten Bitstroms und Erzeugen eines decodierten Bitstroms, einschließlich Texturdaten, Geometriedaten, Belegungskartendaten, Atlas- und Parametermetadaten und Flächendaten, ein Objektfilter zum Auswählen einer Fläche, die einer Objektkennung zugeordnet ist, aus den Flächendaten, um gefilterte Flächendaten zu erzeugen, wobei die Fläche Texturdaten und Geometriedaten einschließt, die dem Objekt zugeordnet sind, und einen Rekonstruktor zum Erzeugen einer Punktwolke basierend auf den gefilterten Flächendaten.
-
Beispiel 32 schließt den Decodierer von Beispiel 31 ein, wobei die Objektkennung eine erste Objektkennung ist, der decodierte Bitstrom einen Begrenzungsrahmen einschließt, der einer zweiten Objektkennung zugeordnet ist, und der Rekonstruktor die Punktwolke basierend auf den Flächendaten erzeugen soll, die in dem Begrenzungsrahmen enthalten sind.
-
Beispiel 33 schließt den Decodierer von Beispiel 31 ein, wobei das Objekt ein erstes Objekt ist, die Objektkennung eine erste Objektkennung ist, die Fläche eine erste Fläche ist, der codierte Bitstrom eine zweite Fläche einschließt, die einer zweiten Objektkennung eines zweiten Objekts zugeordnet ist, und die gefilterten Flächendaten die zweite Fläche einschließen.
-
Beispiel 34 schließt den Decodierer von Beispiel 33 ein, wobei die Punktwolke eine erste Punktwolke ist und das Objektfilter die zweite Fläche, die der zweiten Objektkennung zugeordnet ist, durch zumindest eines von einer zweiten Punktwolke oder Projektion ersetzen soll.
-
Beispiel 35 schließt den Decodierer von Beispiel 34 ein, wobei der decodierte Bitstrom ein drittes Objekt einschließt, das einer dritten Objektkennung zugeordnet ist, und der Rekonstruktor eine dritte Punktwolke basierend auf den Flächendaten, die der dritten Objektkennung zugeordnet sind, einmal pro Frame erzeugen soll.
-
Beispiel 36 schließt den Decodierer von Beispiel 35 ein, wobei der Rekonstruktor die dritte Punktwolke vor der zweiten Punktwolke erzeugen soll.
-
Beispiel 37 schließt den Decodierer von Beispiel 31 ein, wobei die Atlas- und Parametermetadaten die Objektkennung einschließen, die der Fläche zugeordnet ist.
-
Beispiel 38 schließt den Decodierer von Beispiel 31 ein, wobei der codierte Bitstrom eine Supplementary Enhancement Information-Nachricht (SEI-Nachricht) einschließt, wobei die SEI-Nachricht die Objektkennung einschließt, die der Fläche zugeordnet ist.
-
Beispiel 39 schließt ein nichtflüchtiges computerlesbares Medium ein, umfassend Anweisungen, die, wenn sie ausgeführt werden, eine Maschine zumindest zum Empfangen eines codierten Bitstroms, Erzeugen eines decodierten Bitstroms, einschließlich Texturdaten, Geometriedaten, Belegungskartendaten, Atlas- und Parametermetadaten und Flächendaten, Auswählen einer Fläche, die einer Objektkennung zugeordnet ist, aus den Flächendaten, um gefilterte Flächendaten zu erzeugen, wobei die Fläche Texturdaten und Geometriedaten einschließt, die dem Objekt zugeordnet sind, und Erzeugen einer Punktwolke basierend auf den gefilterten Flächendaten veranlassen.
-
Beispiel 40 schließt das nichtflüchtige computerlesbare Medium von Beispiel 39 ein, wobei die Objektkennung eine erste Objektkennung ist, der decodierte Bitstrom einen Begrenzungsrahmen einschließt, der einer zweiten Objektkennung zugeordnet ist, und die Anweisungen die Maschine zum Erzeugen der Punktwolke basierend auf den Flächendaten, die in dem Begrenzungsrahmen enthalten sind, veranlassen.
-
Beispiel 41 schließt das nichtflüchtige computerlesbare Medium von Beispiel 39 ein, wobei das Objekt ein erstes Objekt ist, die Objektkennung eine erste Objektkennung ist, die Fläche eine erste Fläche ist, der codierte Bitstrom eine zweite Fläche einschließt, die einer zweiten Objektkennung eines zweiten Objekts zugeordnet ist, und die gefilterten Flächendaten die zweite Fläche einschließen.
-
Beispiel 42 schließt das nichtflüchtige computerlesbare Medium von Beispiel 41 ein, wobei die Punktwolke eine erste Punktwolke ist und die Anweisungen die Maschine zum Ersetzen der zweiten Fläche, die der zweiten Objektkennung zugeordnet ist, durch zumindest eines von einer zweiten Punktwolke oder Projektion veranlassen.
-
Beispiel 43 schließt das nichtflüchtige computerlesbare Medium von Beispiel 42 ein, wobei der decodierte Bitstrom ein drittes Objekt einschließt, das einer dritten Objektkennung zugeordnet ist, und die Anweisungen die Maschine zum Erzeugen einer dritten Punktwolke basierend auf den Flächendaten, die der dritten Objektkennung zugeordnet sind, einmal pro Frame veranlassen.
-
Beispiel 44 schließt das nichtflüchtige computerlesbare Medium von Beispiel 43 ein, wobei die Anweisungen die Maschine zum Erzeugen der dritten Punktwolke vor der zweiten Punktwolke veranlassen.
-
Beispiel 45 schließt das nichtflüchtige computerlesbare Medium von Beispiel 39 ein, wobei die Atlas- und Parametermetadaten die Objektkennung einschließen, die der Fläche zugeordnet ist.
-
Beispiel 46 schließt das nichtflüchtige computerlesbare Medium von Beispiel 39 ein, wobei der codierte Bitstrom eine Supplementary Enhancement Information-Nachricht (SEI-Nachricht) einschließt, wobei die SEI-Nachricht die Objektkennung einschließt, die der Fläche zugeordnet ist.
-
Beispiel 47 schließt ein Verfahren ein, umfassend ein Empfangen eines codierten Bitstroms, Erzeugen eines decodierten Bitstroms, einschließlich Texturdaten, Geometriedaten, Belegungskartendaten, Atlas- und Parametermetadaten und Flächendaten, Auswählen einer Fläche, die einer Objektkennung zugeordnet ist, aus den Flächendaten, um gefilterte Flächendaten zu erzeugen, wobei die Fläche Texturdaten und Geometriedaten einschließt, die dem Objekt zugeordnet sind, und Erzeugen einer Punktwolke basierend auf den gefilterten Flächendaten.
-
Beispiel 48 schließt das Verfahren von Beispiel 47 ein, wobei die Objektkennung eine erste Objektkennung ist, der decodierte Bitstrom einen Begrenzungsrahmen einschließt, der einer zweiten Objektkennung zugeordnet ist, und ferner einschließend ein Erzeugen der Punktwolke basierend auf den Flächendaten, die in dem Begrenzungsrahmen enthalten sind.
-
Beispiel 49 schließt das Verfahren von Beispiel 47 ein, wobei das Objekt ein erstes Objekt ist, die Objektkennung eine erste Objektkennung ist, die Fläche eine erste Fläche ist, der codierte Bitstrom eine zweite Fläche einschließt, die einer zweiten Objektkennung eines zweiten Objekts zugeordnet ist, und die gefilterten Flächendaten die zweite Fläche einschließen.
-
Beispiel 50 schließt das Verfahren von Beispiel 49 ein, wobei die Punktwolke eine erste Punktwolke ist, und ferner einschließend ein Ersetzen der zweiten Fläche, die der zweiten Objektkennung zugeordnet ist, durch zumindest eines von einer zweiten Punktwolke und/oder einer Projektion.
-
Beispiel 51 schließt das Verfahren von Beispiel 50 ein, wobei der decodierte Bitstrom ein drittes Objekt einschließt, das einer dritten Objektkennung zugeordnet ist, und ferner einschließend ein Erzeugen einer dritten Punktwolke basierend auf den Flächendaten, die der dritten Objektkennung zugeordnet sind, einmal pro Frame.
-
Beispiel 52 schließt das Verfahren von Beispiel 51 ein, ferner einschließend ein Erzeugen der dritten Punktwolke vor der zweiten Punktwolke.
-
Beispiel 53 schließt das Verfahren von Beispiel 47 ein, wobei die Atlas- und Parametermetadaten die Objektkennung einschließen, die der Fläche zugeordnet ist.
-
Beispiel 54 schließt das Verfahren von Beispiel 47 ein, wobei der codierte Bitstrom eine Supplementary Enhancement Information-Nachricht (SEI-Nachricht) einschließt, wobei die SEI-Nachricht die Objektkennung einschließt, die der Fläche zugeordnet ist.
-
Wenngleich bestimmte beispielhafte Verfahren, Einrichtungen und Herstellungsartikel hier offenbart wurden, ist der Schutzumfang der Abdeckung dieses Patents nicht darauf beschränkt. Vielmehr deckt dieses Patent alle Verfahren, Einrichtungen und Herstellungsartikel ab, die ordentlich innerhalb des Schutzumfangs der Ansprüche dieses Patents liegen.
-
Die folgenden Ansprüche werden hiermit durch diese Bezugnahme in diese detaillierte Beschreibung aufgenommen, wobei jeder Anspruch für sich allein als eine separate Ausführungsform der vorliegenden Offenbarung steht.