DE102020000306A1 - Generieren einer Sequenz von Texturen zur Videoversendung - Google Patents

Generieren einer Sequenz von Texturen zur Videoversendung Download PDF

Info

Publication number
DE102020000306A1
DE102020000306A1 DE102020000306.0A DE102020000306A DE102020000306A1 DE 102020000306 A1 DE102020000306 A1 DE 102020000306A1 DE 102020000306 A DE102020000306 A DE 102020000306A DE 102020000306 A1 DE102020000306 A1 DE 102020000306A1
Authority
DE
Germany
Prior art keywords
tiles
sequence
texture image
video
ordered
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102020000306.0A
Other languages
English (en)
Inventor
Gwendal Simon
Viswanathan Swaminathan
Nathan Carr
Stefano Petrangeli
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Adobe Inc
Original Assignee
Adobe Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US16/584,591 external-priority patent/US11049290B2/en
Application filed by Adobe Inc filed Critical Adobe Inc
Publication of DE102020000306A1 publication Critical patent/DE102020000306A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/129Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Image Generation (AREA)

Abstract

Bereitgestellt werden Techniken und Systeme zum Generieren eines Videos aus Texturbildern und zum Rekonstruieren der Texturbilder aus dem Video. Ein Texturbild kann beispielsweise in eine Anzahl von Kacheln unterteilt werden, und die Anzahl von Kacheln kann zu einer Sequenz von geordneten Kacheln sortiert werden. Die Sequenz von geordneten Kacheln kann für einen Videocodierer zum Generieren eines codierten Videos bereitgestellt werden. Die Anzahl von Kacheln kann auf Grundlage der Sequenz von geordneten Kacheln codiert werden. Das codierte Video, das die codierte Sequenz von geordneten Kacheln beinhaltet, kann decodiert werden. Wenigstens ein Abschnitt des decodierten Videos kann die Anzahl von Kacheln, die zu einer Sequenz von geordneten Kacheln sortiert sind, beinhalten. Eine Datendatei, die wenigstens dem Abschnitt des decodierten Videos zugeordnet ist, kann zum Rekonstruieren des Texturbildes unter Nutzung der Kacheln benutzt werden.

Description

  • Querverweis auf verwandte Anmeldungen
  • Die vorliegende Anmeldung beansprucht die Rechtsvorteile der am 21. März 2019 eingereichten vorläufigen US-Anmeldung Nr. 62/821,958 , die hiermit durch Verweis in Gänze für alle Zwecke mit aufgenommen ist.
  • Gebiet
  • Die vorliegende Anmeldung betrifft die Verarbeitung von Texturbildern. Aspekte der vorliegenden Anmeldung betreffen beispielsweise das Generieren und Streamen einer Sequenz von Texturbildern in einem Video.
  • Hintergrund
  • Um die Bedürfnisse von Konsumenten, Videobereitstellern und anderen zu erfüllen, beinhaltet Digitalmediencontent große Mengen von Daten. Viele Nutzer wünschen beispielsweise qualitativ hochwertige Videos mit hohen Auflösungen, Frameraten und dergleichen. Die großen Mengen von Daten, die erforderlich sind, um diesen Bedürfnissen gerecht zu werden, bringen Belastungen für Kommunikationsnetzwerke wie auch für Vorrichtungen, die die Videodaten verarbeiten und speichern, mit sich.
  • Dreidimensionaler (3D) Mediencontent beinhaltet eine sogar noch größere Datenmenge als zweidimensionaler (2D) Mediencontent. Eine 3D-Szene kann beispielsweise zahlreiche 3D-Objekte beinhalten, wobei jedes Objekt einer riesigen Menge von Daten zugeordnet sein kann, die zum Definieren der Geometrie und Eigenschaften des Objektes benötigt werden. Das Versenden von umfangreichen und qualitativ hochwertigen 3D-Szenen über ein Netzwerk (beispielsweise das Internet) ist aufgrund der Größe der verschiedenen 3D-Objekte in einer 3D-Szene problematisch.
  • Zusammenfassung
  • Beschrieben werden hier bei einigen Beispielen Techniken und Systeme zum Generieren und Verarbeiten vom Texturbildern derart, dass die Texturbilder effizient und adaptiv an den Konsumenten versendet werden können. Eine 3D-Szene kann beispielsweise aus verschiedenen Objekten (in einigen Fällen beispielsweise Tausende oder mehr Objekte) zusammengesetzt sein, was zu einer riesigen Datenmenge führt, wenn keine Kompression erfolgt. Die Versendung von unkomprimierten Daten von einem System (beispielsweise einem Contentbereitsteller) an ein anderes System (beispielsweise eine Endnutzervorrichtung) ist auf Grundlage der Netzwerk- und Vorrichtungskapazitäten gegebenenfalls schwierig.
  • Die große Datenmenge rührt wenigstens teilweise daher, dass jedes Objekt in einer virtuellen 3D-Welt durch ein 3D-Gitter und Texturdaten hoher Auflösung definiert ist. Das 3D-Gitter eines Objektes kann einen Teil der Gesamtgeometrie des Objektes definieren, während die Texturdaten verschiedene Eigenschaften des Objektes definieren können. Die Texturdaten, die einem Objekt zugeordnet sind, können ein oder mehrere Texturbilder (nachstehend auch als „Texturen“ bezeichnet) beinhalten. In einigen Fällen kann ein einziges Objekt mehrere Texturbilder aufweisen, die verschiedene Eigenschaften des Objektes definieren. Ein Texturbild kann auf das 3D-Gitter eines Objektes angewendet werden, um Oberflächeneigenschaften des Objektes zu modifizieren. Bei einem illustrativen Beispiel kann ein erstes Texturbild Werte beinhalten, die die Farben der Oberfläche des Objektes definieren, kann ein zweites Texturbild Werte beinhalten, die definieren, wie glänzend oder rau gewisse Bereiche der Oberfläche des Objektes gestaltet werden sollen, und kann ein drittes Texturbild Werte beinhalten, die eine Oberflächennormale verschiedener Punkte an der Oberfläche (die beispielsweise zum Modifizieren der Oberflächeneigenschaften des Objektes benötigt werden) definieren. Viele weitere Beispiele für Texturbilder sind zum Definieren von Eigenschaften eines Objektes verfügbar.
  • Die hier beschriebenen Techniken und Systemen ermöglichen, dass Texturbilder als Videosequenz codiert und versendet werden, anstatt dass sie unabhängig als einzelne Texturbilder oder als einzelne codierte Texturbilder versendet werden. Die Texturbilder können derart verarbeitet werden, dass bestehende Contentversendeinfrastrukturen benutzt werden können, was eine engmaschige Steuerung bzw. Regelung der Qualität der sich ergebenden Videosequenz bereitstellt. Ein oder mehrere Texturbilder können beispielsweise in überlappende oder nichtüberlappende Kacheln unterteilt werden. In einigen Fällen können die Kacheln eine gleichmäßige Kachelgröße aufweisen. Die Kacheln eines Texturbildes oder die Kacheln mehrerer Texturbilder mit verschiedenen Auflösungen können beispielsweise alle dieselbe gleichmäßige Kachelgröße aufweisen. Die gleichmäßige Kachelgröße ermöglicht, dass die Kacheln von einem Videocodierer codiert werden, als ob sie Videoframes mit einer gewissen Videoauflösung wären.
  • Eine Sequenz von geordneten Kacheln kann sodann durch Sortieren der Kacheln zu einer bestimmten Ordnung generiert werden. Bei einem illustrativen Beispiel kann ein ähnlichkeitsbasiertes Ordnen durchgeführt werden, wobei eine Ordnung der Kacheln in der Sequenz auf Grundlage von Ähnlichkeiten zwischen den Kacheln des einen oder der mehreren Texturbilder bestimmt werden kann. Die Sequenz von geordneten Kacheln kann in einer Ordnung sein, die die Kacheln verschiedener Texturbilder einstreut. Das ähnlichkeitsbasierte Ordnen kann in der Sequenz zu aufeinanderfolgenden Bildern mit hoher Ähnlichkeit führen, wodurch ermöglicht wird, dass ein Videocodierer diese Ähnlichkeit ausnutzt und das Video effizienter komprimiert. Bei wieder einem anderen illustrativen Beispiel kann ein teilsequenzbasiertes Ordnen durchgeführt werden. Das teilsequenzbasierte Ordnen kann die Kacheln anhand von Videosegmenten mit einer gewissen Anzahl von Sekunden sortieren, was dazu führt, dass die Sequenz von geordneten Kacheln eine Anzahl von Teilsequenzen beinhaltet. Die Kacheln können beispielsweise zu der Sequenz von geordneten Kacheln in einer Ordnung sortiert werden, die die Anzahl von Videosegmenten, die heruntergeladen werden müssen, um das erste Texturbild zu erhalten, minimiert. In einigen Fällen kann das teilsequenzbasierte Ordnen sicherstellen, dass die meisten oder alle Kacheln eines gegebenen Texturbildes in einer minimalen Anzahl von Segmenten sind. Bei einigen Beispielen können die Kacheln eines Texturbildes in einer Rasterabtastordnung geordnet sein, sie können willkürlich geordnet sein, oder sie können auf Grundlage des ähnlichkeitsbasierten Ordnens geordnet sein. Andere Techniken zum Ordnen der Kacheln können zusätzlich oder alternativ zum ähnlichkeitsbasierten Ordnen und teilsequenzbasierten Ordnen durchgeführt werden.
  • Die Sequenz von geordneten Kacheln kann als Eingabeframes für einen Videocodierer bereitgestellt werden. Der Videocodierer behandelt die Kacheln in der Sequenz von geordneten Kacheln als einzelne Bildframes. Der Videocodierer erzeugt ein codiertes Texturvideo, das codierte Kacheln aus der Sequenz von geordneten Kacheln wie auch andere Information beinhaltet. Die codierten Kacheln können hier auch als codierte Bilder bezeichnet werden. Verschiedene Eingabeparameter können für den Videocodierer zudem bereitgestellt werden, so beispielsweise die Anzahl von Frames pro Sekunde (Frames per Second FPS), die Zielvideobitrate, die Anzahl von unabhängig decodierbaren und herunterladbaren Segmenten, die in dem Video beinhaltet sein sollen, eine beliebige Kombination hieraus und/oder andere Parameter. Im Gegensatz zu einem Standardvideo, das Frames mit einer zeitlichen Beziehung (beispielsweise werden die Frames eines Videos in einer gewissen Ordnung ausgegeben oder abgespielt) beinhaltet, weisen die Texturbilder und die einzelnen Kacheln der Texturbilder keine zeitliche oder zeitbasierte Beziehung auf (was hier auch als „zeitlich unabhängig“ bezeichnet wird). Eine derartige zeitliche Unabhängigkeit zwischen den Texturbildern und den Kacheln ermöglicht die Wahl eines beliebigen FPS-Wertes. In einigen Fällen ermöglichen die FPS- und Bitratenparameter, dass ein Dienstbereitsteller mehrere Versionen desselben Videos (mit dem Satz von Texturen) mit mehreren Qualitäten und mehreren Versendeverzögerungen generiert. In einigen Fällen kann eine Datendatei mit dem codierten Video bereitgestellt werden, die von einem Decodierer zum Rekonstruieren der Texturbilder benutzt werden kann.
  • Das codierte Video (das die codierten Kacheln beinhaltet) kann über ein Netzwerk unter Nutzung einer bestehenden Videoversendeinfrastruktur an einen Videodecodierer versendet werden. Das codierte Video kann beispielsweise unter Nutzung eines Internetstreamingprotokolls über das Internet gestreamt werden. Der Videodecodierer kann das Video decodieren, um die decodierte Sequenz von geordneten Kacheln zu erhalten, und kann die decodierte Sequenz an ein Texturbildrekonstruktionssystem senden. Das Texturbildrekonstruktionssystem kann die Datendatei, die mit dem codierten Video bereitgestellt wird, erhalten und kann die Texturbilder unter Nutzung von Information aus der Datendatei rekonstruieren. Die Datendatei kann beispielsweise Kontextdaten für die Kacheln, die die Sequenz von geordneten Kacheln bilden, beinhalten. Für eine gegebene Kachel können die Kontextdaten einen Kachelnidentifizierer für die Kachel, eine Identifizierung eines Texturbildes, das der Kachel zugeordnet ist, und einen Ort der ersten Kachel innerhalb des Texturbildes beinhalten. Bei einigen Beispielen kann in der Datendatei auch Transformationsinformation für eine Kachel beinhaltet sein. Wie hier detailliert beschrieben wird, kann die Transformationsinformation eine Transformation angeben, die auf eine Kachel angewendet werden soll, um Pixel der Kachel dafür, das endgültige Texturbild zu generieren, zu modifizieren.
  • Entsprechend wenigstens einem Beispiel wird ein Verfahren zum Generieren eines Videos aus einem oder mehreren Texturbildern bereitgestellt. Das Verfahren umfasst ein Unterteilen eines ersten Texturbildes in eine erste Mehrzahl von Kacheln. Das erste Texturbild ist zur Anwendung auf wenigstens ein erstes dreidimensionales Gitter konfiguriert. Das Verfahren umfasst des Weiteren ein Sortieren der ersten Mehrzahl von Kacheln zu einer Sequenz von geordneten Kacheln und ein Bereitstellen der Sequenz von geordneten Kacheln zum Generieren eines codierten Videos. Das Generieren des codierten Videos beinhaltet ein Codieren der ersten Mehrzahl von Kacheln auf Grundlage der Sequenz von geordneten Kacheln.
  • Bei einem weiteren Beispiel wird eine Einrichtung zum Generieren eines Videos aus einem oder mehreren Texturbildern bereitgestellt, die einen Speicher, der dafür konfiguriert ist, das eine oder die mehreren Texturbilder zu speichern, und einen Prozessor, der mit dem Speicher gekoppelt ist, beinhaltet. Der Prozessor ist dafür konfiguriert, ein erstes Texturbild in eine erste Mehrzahl von Kacheln zu unterteilen. Das erste Texturbild ist zur Anwendung auf wenigstens ein erstes dreidimensionales Gitter konfiguriert. Der Prozessor ist des Weiteren dafür konfiguriert, die erste Mehrzahl von Kacheln zu einer Sequenz von geordneten Kacheln zu sortieren. Der Prozessor ist des Weiteren dafür konfiguriert, die Sequenz von geordneten Kacheln zum Generieren eines codierten Videos bereitzustellen. Das Generieren des codierten Videos beinhaltet ein Codieren der ersten Mehrzahl von Kacheln auf Grundlage der Sequenz von geordneten Kacheln.
  • Bei einem weiteren Beispiel wird ein nichttemporäres computerlesbares Medium bereitgestellt, auf dem Anweisungen gespeichert sind, die bei Ausführung durch einen oder mehrere Prozessoren den einen oder die mehreren Prozessoren veranlassen zum: Unterteilen eines ersten Texturbildes in eine erste Mehrzahl von Kacheln, wobei das erste Texturbild zur Anwendung auf wenigstens ein erstes dreidimensionales Gitter konfiguriert ist; Sortieren der ersten Mehrzahl von Kacheln zu einer Sequenz von geordneten Kacheln; und Bereitstellen der Sequenz von geordneten Kacheln zum Generieren eines codierten Videos, wobei das Generieren des codierten Videos das Codieren der ersten Mehrzahl von Kacheln auf Grundlage der Sequenz von geordneten Kacheln beinhaltet.
  • Bei einem weiteren Beispiel wird eine Einrichtung zum Generieren eines Videos aus einem oder mehreren Texturbildern bereitgestellt. Die Einrichtung umfasst Mittel zum Unterteilen eines ersten Texturbildes in eine erste Mehrzahl von Kacheln. Das erste Texturbild ist zur Anwendung auf wenigstens ein erstes dreidimensionales Gitter konfiguriert. Die Einrichtung umfasst des Weiteren Mittel zum Sortieren der ersten Mehrzahl von Kacheln zu einer Sequenz von geordneten Kacheln und Mittel zum Bereitstellen der Sequenz von geordneten Kacheln zum Generieren eines codierten Videos. Das Generieren des codierten Videos beinhaltet ein Codieren der ersten Mehrzahl von Kacheln auf Grundlage der Sequenz von geordneten Kacheln.
  • Bei einigen Aspekten weist die erste Mehrzahl von Kacheln eine gleichmäßige Kachelgröße auf.
  • Bei einigen Aspekten ist die erste Mehrzahl von Kacheln zu der Sequenz von geordneten Kacheln derart sortiert, dass die Kompressionseffizienz maximiert wird.
  • Bei einigen Aspekten ist die erste Mehrzahl von Kacheln zu der Sequenz von geordneten Kacheln auf Grundlage von Ähnlichkeiten zwischen der ersten Mehrzahl von Kacheln sortiert.
  • Bei einigen Aspekten können das Verfahren, die Einrichtungen und das computerlesbare Medium, die vorstehend beschrieben worden sind, des Weiteren umfassen: Bestimmen von Ähnlichkeiten zwischen Paaren von Kacheln aus der ersten Mehrzahl von Kacheln; und unter Nutzung der Ähnlichkeiten zwischen den Paaren von Kacheln erfolgendes Bestimmen der Sequenz von geordneten Kacheln auf Grundlage dessen, dass die Sequenz eine Summe von Nichtähnlichkeiten zwischen aufeinanderfolgenden Kacheln in der Sequenz von geordneten Kacheln minimiert.
  • Bei einigen Aspekten ist die erste Mehrzahl von Kacheln zu der Sequenz von geordneten Kacheln in einer Ordnung sortiert, die eine Anzahl von Videosegmenten, die heruntergeladen werden müssen, um das erste Texturbild zu erhalten, minimiert. Bei einigen Beispielen beinhaltet die Sequenz von geordneten Kacheln eine erste Teilsequenz und eine zweite Teilsequenz. Die erste Teilsequenz kann beispielsweise einen ersten Satz von Kacheln aus der ersten Mehrzahl von Kacheln beinhalten, während die zweite Teilsequenz einen zweiten Satz von Kacheln aus der ersten Mehrzahl von Kacheln beinhalten kann.
  • Bei einigen Aspekten können das Verfahren, die Einrichtungen und das computerlesbare Medium, die vorstehend beschrieben worden sind, des Weiteren umfassen: Unterteilen eines zweiten Texturbildes in eine zweite Mehrzahl von Kacheln, wobei das zweite Texturbild zur Anwendung auf wenigstens eines von dem ersten dreidimensionalen Gitter und einem zweiten dreidimensionalen Gitter konfiguriert ist, wobei das Sortieren ein Sortieren der ersten Mehrzahl von Kacheln und der zweiten Mehrzahl von Kacheln zu der Sequenz von geordneten Kacheln beinhaltet; und wobei das Generieren des codierten Videos ein Codieren der ersten Mehrzahl von Kacheln und der zweiten Mehrzahl von Kacheln auf Grundlage der Sequenz von geordneten Kacheln beinhaltet.
  • Bei einigen Aspekten sind das erste Texturbild und das zweite Texturbild zeitlich unabhängig. Bei einigen Aspekten sind eine erste Auflösung des ersten Texturbildes und eine zweite Auflösung des zweiten Texturbildes verschiedene Auflösungen, wobei die erste Mehrzahl von Kacheln und die zweite Mehrzahl von Kacheln eine gleichmäßige Kachelgröße (beispielsweise als Anzahl von Pixeln) aufweisen.
  • Bei einigen Aspekten sind die erste Mehrzahl von Kacheln und die zweite Mehrzahl von Kacheln zu der Sequenz von geordneten Kacheln derart sortiert, dass die Kompressionseffizienz maximiert wird. Bei einigen Aspekten sind die erste Mehrzahl von Kacheln und die zweite Mehrzahl von Kacheln zu der Sequenz von geordneten Kacheln auf Grundlage von Ähnlichkeiten zwischen der ersten Mehrzahl von Kacheln und der zweiten Mehrzahl von Kacheln sortiert. Bei einigen Beispielen können das Verfahren, die Einrichtungen und das computerlesbare Medium, die vorstehend beschrieben worden sind, des Weiteren umfassen: Bestimmen von Ähnlichkeiten zwischen Paaren von Kacheln aus der ersten Mehrzahl von Kacheln und der zweiten Mehrzahl von Kacheln; unter Nutzung der Ähnlichkeiten zwischen den Paaren von Kacheln erfolgendes Bestimmen der Sequenz von geordneten Kacheln auf Grundlage dessen, dass die Sequenz eine Summe von Nichtähnlichkeiten zwischen aufeinanderfolgenden Kacheln in der Sequenz von geordneten Kacheln minimiert.
  • Bei einigen Aspekten sind die erste Mehrzahl von Kacheln und die zweite Mehrzahl von Kacheln zu der Sequenz von geordneten Kacheln in einer Ordnung sortiert, die eine Anzahl von Videosegmenten, die heruntergeladen werden müssen, um das erste Texturbild und das zweite Texturbild zu erhalten, minimiert. Bei einigen Beispielen beinhaltet die Sequenz von geordneten Kacheln eine erste Teilsequenz und eine zweite Teilsequenz. Die erste Teilsequenz kann beispielsweise einen ersten Satz von Kacheln aus der ersten Mehrzahl von Kacheln beinhalten, während die zweite Teilsequenz einen zweiten Satz von Kacheln aus der ersten Mehrzahl von Kacheln beinhalten kann. In einigen Fällen beinhaltet die Sequenz von geordneten Kacheln eine dritte Teilsequenz und eine vierte Teilsequenz. Die dritte Teilsequenz kann beispielsweise einen ersten Satz von Kacheln aus der zweiten Mehrzahl von Kacheln beinhalten, während die vierte Teilsequenz einen zweiten Satz von Kacheln aus der zweiten Mehrzahl von Kacheln beinhalten kann.
  • Bei einigen Aspekten erhält man das codierte Video durch Ausnutzen von Ähnlichkeiten zwischen Kacheln in der Sequenz von geordneten Kacheln. Bei einigen Beispielen wird das codierte Video unter Nutzung einer Bewegungsausgleiches (motion compensation) generiert. Das codierte Video kann auf Grundlage einer Intervorhersage einer ersten Kachel unter Nutzung einer zweiten Kachel als Referenzkachel zur Vorhersage generiert werden. Wenigstens ein Abschnitt der Referenzkachel kann durch Generieren eines Bewegungsvektors von der ersten Kachel zu der zweiten Kachel (oder von der zweiten Kachel zu der ersten Kachel) identifiziert werden. In einigen Fällen können mehrere Bewegungsvektoren generiert werden, wobei jeder Bewegungsvektor zu einem anderen Referenzbild weist. Bei einigen Beispielen sind die erste Kachel und die zweite Kachel aus dem ersten Texturbild. Bei einigen Beispielen ist die erste Kachel aus dem ersten Texturbild, während die zweite Kachel aus dem zweiten Texturbild ist.
  • Bei einigen Aspekten wird eine Mehrzahl von codierten Videos für die Sequenz von geordneten Kacheln generiert. In einigen Fällen kann ein erstes codiertes Video der Mehrzahl von codierten Videos wenigstens eines von einer anderen Bitrate, einer anderen Framerate oder einer anderen Segmentgröße (beispielsweise einer Anzahl von Frames), oder eine beliebige Kombination hieraus im Vergleich zu einem zweiten codierten Video der Mehrzahl von codierten Videos aufweisen.
  • Bei einigen Aspekten können das Verfahren, die Einrichtungen und das computerlesbare Medium, die vorstehend beschrieben worden sind, des Weiteren ein Übertragen des codierten Videos zum Decodieren durch eine Clientvorrichtung umfassen.
  • Bei einigen Aspekten können das Verfahren, die Einrichtungen und das computerlesbare Medium, die vorstehend beschrieben worden sind, des Weiteren ein Anwenden einer Transformationsfunktion auf eine oder mehrere Kacheln der ersten Mehrzahl von Kacheln umfassen, wobei die Transformationsfunktion Pixel der einen oder der mehreren Kacheln modifiziert.
  • Bei einigen Aspekten erhöht das Modifizieren der Pixel der einen oder der mehreren Kacheln unter Nutzung der Transformationsfunktion die Codiereffizienz. Das Modifizieren der Pixel der einen oder der mehreren Kacheln unter Nutzung der Transformationsfunktion kann beispielsweise eine Ähnlichkeit zwischen den Pixeln der einen oder mehreren Kacheln und anderen Pixeln der einen oder mehreren Kacheln erhöhen.
  • Bei einigen Aspekten können das Verfahren, die Einrichtungen und das computerlesbare Medium, die vorstehend beschrieben worden sind, des Weiteren ein Generieren einer Datendatei, die Kontextdaten für die erste Mehrzahl von Kacheln beinhaltet, umfassen. Die Kontextdaten für eine erste Kachel können wenigstens einen Kachelidentifizierer, eine Identifizierung eines Texturbildes, das der ersten Kachel zugeordnet ist, und einen Ort der ersten Kachel innerhalb des Texturbildes beinhalten. Bei einigen Aspekten beinhalten die Kontextdaten für die erste Kachel des Weiteren eine Angabe einer Transformationsfunktion. Die Transformationsfunktion ist dafür konfiguriert, Pixel einer oder mehrerer Kacheln der ersten Mehrzahl von Kacheln zu modifizieren.
  • Entsprechend wenigstens einem weiteren Beispiel wird ein Verfahren zum Rekonstruieren eines oder mehrerer Texturbilder aus einem Video bereitgestellt. Das Verfahren umfasst ein Erhalten wenigstens eines Abschnittes eines decodierten Videos mit einer ersten Mehrzahl von Kacheln, die zu einer Sequenz von geordneten Kacheln sortiert sind. Die erste Mehrzahl von Kacheln ist einem ersten Texturbild zugeordnet, das zur Anwendung auf ein erstes dreidimensionales Gitter konfiguriert ist. Das Verfahren umfasst des Weiteren ein Erhalten einer Datendatei, die wenigstens dem Abschnitt des decodierten Videos zugeordnet ist. Die Datendatei beinhaltet Kontextdaten, die die erste Mehrzahl von Kacheln auf das erste Texturbild abbilden. Das Verfahren umfasst des Weiteren ein Rekonstruieren des ersten Texturbildes auf Grundlage der Kontextdaten, die die erste Mehrzahl von Kacheln auf das erste Texturbild abbilden.
  • Bei einem weiteren Beispiel wird eine Einrichtung zum Rekonstruieren eines oder mehrerer Texturbilder aus einem Video bereitgestellt, die einen Speicher, der dafür konfiguriert ist, das eine oder die mehreren Texturbilder zu speichern, und einen Prozessor, der mit dem Speicher gekoppelt ist, beinhaltet. Der Prozessor ist dafür konfiguriert, wenigstens einen Abschnitt eines decodierten Videos mit einer ersten Mehrzahl von Kacheln, die zu einer Sequenz von geordneten Kacheln sortiert sind, zu erhalten. Die erste Mehrzahl von Kacheln ist einem ersten Texturbild zugeordnet, das zur Anwendung auf ein erstes dreidimensionales Gitter konfiguriert ist. Der Prozessor ist des Weiteren dafür konfiguriert, eine Datendatei zu erhalten, die wenigstens dem Abschnitt des decodierten Videos zugeordnet ist. Die Datendatei beinhaltet Kontextdaten, die die erste Mehrzahl von Kacheln auf das erste Texturbild abbilden. Der Prozessor ist des Weiteren dafür konfiguriert, das erste Texturbild auf Grundlage der Kontextdaten, die die erste Mehrzahl von Kacheln auf das erste Texturbild abbilden, zu rekonstruieren.
  • Bei einem weiteren Beispiel wird ein nichttemporäres computerlesbares Medium bereitgestellt, auf dem Anweisungen gespeichert sind, die bei Ausführung durch einen oder mehrere Prozessoren den einen oder die mehreren Prozessoren veranlassen zum: Erhalten wenigstens eines Abschnittes eines decodierten Videos mit einer ersten Mehrzahl von Kacheln, die zu einer Sequenz von geordneten Kacheln sortiert sind, wobei die erste Mehrzahl von Kacheln einem ersten Texturbild zugeordnet ist, das zur Anwendung auf ein erstes dreidimensionales Gitter konfiguriert ist; Erhalten einer Datendatei, die wenigstens dem Abschnitt des decodierten Videos zugeordnet ist, wobei die Datendatei Kontextdaten beinhaltet, die die erste Mehrzahl von Kacheln auf das erste Texturbild abbilden; und Rekonstruieren des ersten Texturbildes auf Grundlage der Kontextdaten, die die erste Mehrzahl von Kacheln auf das erste Texturbild abbilden.
  • Bei einem weiteren Beispiel wird eine Einrichtung zum Rekonstruieren eines oder mehrerer Texturbilder aus einem Video bereitgestellt. Die Einrichtung umfasst Mittel zum Erhalten wenigstens eines Abschnittes eines decodierten Videos mit einer ersten Mehrzahl von Kacheln, die zu einer Sequenz von geordneten Kacheln sortiert sind. Die erste Mehrzahl von Kacheln ist einem ersten Texturbild zugeordnet, das zur Anwendung auf ein erstes dreidimensionales Gitter konfiguriert ist. Die Einrichtung umfasst des Weiteren Mittel zum Erhalten einer Datendatei, die wenigstens dem Abschnitt des decodierten Videos zugeordnet ist. Die Datendatei beinhaltet Kontextdaten, die die erste Mehrzahl von Kacheln auf das erste Texturbild abbilden. Die Einrichtung umfasst des Weiteren Mittel zum Rekonstruieren des ersten Texturbildes auf Grundlage der Kontextdaten, die die erste Mehrzahl von Kacheln auf das erste Texturbild abbilden.
  • Bei einigen Aspekten beinhalten Kontextdaten für eine Kachel der ersten Mehrzahl von Kacheln wenigstens einen Kachelidentifizierer, eine Identifizierung eines Texturbildes, das der Kachel zugeordnet ist, und einen Ort der Kachel innerhalb des Texturbildes. Bei einigen Aspekten beinhalten die Kontextdaten für die Kachel des Weiteren eine Angabe einer Transformationsfunktion. Die Transformationsfunktion ist dafür konfiguriert, Pixel einer oder mehrerer Kacheln der ersten Mehrzahl von Kacheln zu modifizieren.
  • Bei einigen Aspekten können das Verfahren, die Einrichtungen und das computerlesbare Medium, die vorstehend beschrieben worden sind, des Weiteren ein Anwenden einer Inverstransformationsfunktion auf die Pixel der einen oder der mehreren Kacheln der ersten Mehrzahl von Kacheln umfassen. Die Inverstransformationsfunktion ist eine Inverse der Transformationsfunktion.
  • Bei einigen Aspekten weist die erste Mehrzahl von Kacheln eine gleichmäßige Kachelgröße auf.
  • Bei einigen Aspekten ist die erste Mehrzahl von Kacheln zu der Sequenz von geordneten Kacheln auf Grundlage von Ähnlichkeiten zwischen der ersten Mehrzahl von Kacheln sortiert.
  • Bei einigen Aspekten ist die erste Mehrzahl von Kacheln zu der Sequenz von geordneten Kacheln in einer Ordnung sortiert, die eine Anzahl von Videosegmenten, die heruntergeladen werden müssen, um das erste Texturbild zu erhalten, minimiert. Bei einigen Beispielen beinhaltet die Sequenz von geordneten Kacheln eine erste Teilsequenz und eine zweite Teilsequenz. Die erste Teilsequenz kann beispielsweise einen ersten Satz von Kacheln aus der ersten Mehrzahl von Kacheln beinhalten, während die zweite Teilsequenz einen zweiten Satz von Kacheln aus der ersten Mehrzahl von Kacheln beinhalten kann.
  • Bei einigen Aspekten beinhaltet wenigstens der Abschnitt des decodierten Videos des Weiteren eine zweite Mehrzahl von Kacheln. Die zweite Mehrzahl von Kacheln ist einem zweiten Texturbild zugeordnet, das zur Anwendung auf wenigstens eines von dem ersten dreidimensionalen Gitter oder einem zweiten dreidimensionalen Gitter konfiguriert ist. Bei einigen Aspekten sind eine erste Auflösung des ersten Texturbildes und eine zweite Auflösung des zweiten Texturbildes verschiedene Auflösungen, und die erste Mehrzahl von Kacheln und die zweite Mehrzahl von Kacheln weisen eine gemeinsame Kachelgröße auf.
  • Bei einigen Aspekten sind die erste Mehrzahl von Kacheln und die zweite Mehrzahl von Kacheln zu der Sequenz von geordneten Kacheln auf Grundlage von Ähnlichkeiten zwischen der ersten Mehrzahl von Kacheln und der zweiten Mehrzahl von Kacheln sortiert.
  • Bei einigen Aspekten sind die erste Mehrzahl von Kacheln und die zweite Mehrzahl von Kacheln zu der Sequenz von geordneten Kacheln in einer Ordnung sortiert, die eine Anzahl von Videosegmenten, die heruntergeladen werden müssen, um das erste Texturbild und das zweite Texturbild zu erhalten, minimiert. Bei einigen Beispielen beinhaltet die Sequenz von geordneten Kacheln eine erste Teilsequenz und eine zweite Teilsequenz. Die erste Teilsequenz kann beispielsweise einen ersten Satz von Kacheln aus der ersten Mehrzahl von Kacheln beinhalten, während die zweite Teilsequenz einen zweiten Satz von Kacheln aus der ersten Mehrzahl von Kacheln beinhalten kann. In einigen Fällen beinhaltet die Sequenz von geordneten Kacheln eine dritte Teilsequenz und eine vierte Teilsequenz. Die dritte Teilsequenz kann beispielsweise einen ersten Satz von Kacheln aus der zweiten Mehrzahl von Kacheln beinhalten, während die vierte Teilsequenz einen zweiten Satz von Kacheln aus der zweiten Mehrzahl von Kacheln beinhalten kann.
  • Bei einigen Aspekten erhält man das decodierte Video durch Ausnutzen von Ähnlichkeiten zwischen Kacheln in der Sequenz von geordneten Kacheln. In einigen Fällen wird wenigstens der Abschnitt des decodierten Videos unter Nutzung eines Bewegungsausgleiches generiert. Wenigstens der Abschnitt des decodierten Videos kann beispielsweise auf Grundlage einer Intervorhersage einer ersten Kachel unter Nutzung einer zweiten Kachel als Referenzkachel generiert werden. Wenigstens ein Abschnitt der Referenzkachel kann unter Nutzung eines Bewegungsvektors von der ersten Kachel zu der zweiten Kachel (oder von der zweiten Kachel zu der ersten Kachel) identifiziert werden. In einigen Fällen können mehrere Bewegungsvektoren generiert werden, wobei jeder Bewegungsvektor zu einem anderen Referenzbild weist. In einigen Fällen sind die erste Kachel und die zweite Kachel aus dem ersten Texturbild. In einigen Fällen ist die erste Kachel aus dem ersten Texturbild, während die zweite Kachel aus einem zweiten Texturbild ist.
  • Bei einigen Aspekten wird eine Mehrzahl von codierten Videos für die Sequenz von geordneten Kacheln generiert. Ein erstes codiertes Video der Mehrzahl von codierten Videos kann beispielsweise wenigstens eines von einer anderen Bitrate, einer anderen Framerate oder einer anderen Segmentgröße (oder eine beliebige Kombination hieraus) im Vergleich zu einem zweiten codierten Video der mehreren codierten Videos beinhalten. Bei einigen Aspekten können das Verfahren, die Einrichtungen und das computerlesbare Medium, die vorstehend beschrieben worden sind, ein über ein Netzwerk erfolgendes Empfangen von wenigstens einem von einem Abschnitt des ersten codierten Videos oder einem Abschnitt des zweiten codierten Videos auf Grundlage wenigstens einer oder mehrerer Netzwerkbedingungen, die dem Netzwerk zugeordnet sind, umfassen. Bei einigen Aspekten wird wenigstens einer von dem Abschnitt des ersten codierten Videos oder dem Abschnitt des zweiten codierten Videos des Weiteren auf Grundlage von wenigstens einem von physischen Ressourcen einer Clientvorrichtung oder einer Anwendung der Clientvorrichtung empfangen.
  • In einigen Fällen sind das erste Texturbild und das zweite Texturbild zeitlich unabhängig. Bei einigen Aspekten ist jede Kachel der ersten Mehrzahl von Kacheln zeitlich von anderen Kacheln der ersten Mehrzahl von Kacheln unabhängig.
  • Diese Zusammenfassung soll Schlüsselmerkmale oder wesentliche Merkmale des beanspruchten Erfindungsgegenstandes weder identifizieren, noch soll sie isoliert zur Bestimmung des Umfanges des beanspruchten Erfindungsgegenstandes benutzt werden. Der Erfindungsgegenstand soll unter Verweis auf geeignete Abschnitte der Gesamtbeschreibung des vorliegenden Patentes, auf beliebige oder alle Zeichnungsfiguren und auf jeden Anspruch gedeutet werden.
  • Die vorstehenden Merkmale und Ausführungsformen erschließen sich zusammen mit weiteren Merkmalen und Ausführungsformen unter Verweis auf die nachfolgende Beschreibung, die nachfolgenden Ansprüche und die begleitenden Zeichnungsfiguren.
  • Figurenliste
  • Illustrative Ausführungsformen der vorliegenden Anwendung werden nachstehend anhand der nachfolgenden Zeichnung detailliert beschrieben.
    • 1 ist ein Beispiel für ein Texturbild entsprechend einigen hier bereitgestellten Beispielen.
    • 2 ist ein weiteres Beispiel für ein Texturbild entsprechend einigen hier bereitgestellten Beispielen.
    • 3 ist ein weiteres Beispiel für ein Texturbild, entsprechend einigen hier bereitgestellten Beispielen.
    • 4 ist ein Blockdiagramm zur Darstellung eines Beispiels für ein Texturbildsequenziersystem entsprechend einigen hier bereitgestellten Beispielen.
    • 5A und 5B sind Konzeptdiagramme zur Darstellung von Beispielen von zwei verschiedenen Texturbildern, die in Kacheln unterteilt sind, entsprechend einigen hier bereitgestellten Beispielen.
    • 5C ist ein Konzeptdiagramm zur Darstellung eines Beispiels für einen Teilsatz einer Sequenz von geordneten Kacheln, die sich aus einem ähnlichkeitsbasierten Ordnen von Kacheln, wie in 5A und 5B gezeigt, ergeben, entsprechend einigen hier bereitgestellten Beispielen.
    • 5D und 5E sind Konzeptdiagramme zur Darstellung von Beispielen von zwei Sequenzen von geordneten Kacheln, die sich aus einem teilsequenzbasierten Ordnen von Kacheln ergeben, entsprechend einigen hier bereitgestellten Beispielen.
    • 6 ist ein Bild zur Darstellung einer Anwendung einer Transformation auf eine Kachel, die einen Teil eines Objektes beinhaltet, entsprechend einigen hier bereitgestellten Beispielen.
    • 7 ist ein Blockdiagramm zur Darstellung eines Beispiels eines Texturbildrekonstruktionssystems entsprechend einigen hier bereitgestellten Beispielen.
    • 8 ist ein Konzeptdiagramm zur Darstellung eines Beispiels für das Generieren, Codieren, Decodieren und Rekonstruieren mehrerer Texturbilder entsprechend einigen hier bereitgestellten Beispielen.
    • 9 ist ein Flussdiagramm zur Darstellung eines Beispiels für einen Prozess zum Generieren eines Videos aus einem oder mehreren Texturbildern entsprechend einigen hier bereitgestellten Beispielen.
    • 10 ist ein Flussdiagramm zur Darstellung eines Beispiels eines Prozesses zum Rekonstruieren eines oder mehrerer Texturbilder aus einem Video entsprechend einigen hier bereitgestellten Beispielen.
    • 11 ist ein Graph zur Darstellung eines Beispiels einer Ratenverzerrungskurve auf Grundlage von verschiedenen Codiertechniken entsprechend einigen hier bereitgestellten Beispielen.
    • 12 ist ein Blockdiagramm zur Darstellung einer exemplarischen Videocodiervorrichtung entsprechend einigen hier bereitgestellten Beispielen.
    • 13 ist ein Blockdiagramm zur Darstellung einer exemplarischen Videodecodiervorrichtung entsprechend einigen hier bereitgestellten Beispielen.
    • 14 ist eine exemplarische Rechenvorrichtungsarchitektur einer exemplarischen Rechenvorrichtung, die die verschiedenen hier beschriebenen Techniken implementieren kann.
  • Detailbeschreibung
  • Nachstehend werden gewisse Aspekte und Ausführungsformen der vorliegenden Offenbarung beschrieben. Einige dieser Aspekte und Ausführungsformen können unabhängig angewendet werden, während einige von ihnen in Kombination angewendet werden können, wie sich einem Fachmann auf dem Gebiet erschließt. In der nachfolgenden Beschreibung werden spezifische Details zu Zwecken der Erläuterung dargestellt, um ein eingehendes Verständnis von Ausführungsformen der Anmeldung zu ermöglichen. Es sollte jedoch einsichtig sein, dass verschiedene Ausführungsformen ohne diese spezifischen Details umgesetzt werden können. Die Figuren und die Beschreibung sollen nicht einschränkend sein.
  • Die nachfolgende Beschreibung stellt lediglich exemplarische Ausführungsformen dar und soll den Umfang, die Anwendbarkeit oder die Konfiguration der Offenbarung nicht beschränken. Vielmehr soll die nachfolgende Beschreibung der exemplarischen Ausführungsformen für einen Fachmann auf dem Gebiet eine Beschreibung sein, die ihm ermöglicht, eine exemplarische Ausführungsform zu implementieren. Es sollte einsichtig sein, dass verschiedene Änderungen an der Funktion und Anordnung von Elementen vorgenommen werden können, ohne vom Wesen und Umfang der Anmeldung so, wie sie in den beigefügten Ansprüchen niedergelegt sind, abzuweichen.
  • In der nachfolgenden Beschreibung sind spezifische Details angegeben, um ein eingehendes Verständnis der Ausführungsformen zu ermöglichen. Für einen Durchschnittsfachmann auf dem Gebiet sollte jedoch einsichtig sein, dass die Ausführungsformen auch ohne diese spezifischen Details umgesetzt werden können. Schaltungen, Systeme, Netzwerke, Prozesse und andere Komponenten können beispielsweise als Komponenten in Form eines Blockdiagramms gezeigt werden, damit die Ausführungsformen nicht durch überflüssige Details unklar werden. In anderen Fällen sind gegebenenfalls bekannte Schaltungen, Prozesse, Algorithmen, Strukturen und Techniken ohne überflüssige Details gezeigt, damit die Ausführungsformen nicht unklar werden.
  • Man beachte zudem, dass einzelne Ausführungsformen als Prozess beschrieben werden können, der als Flussdiagramm, Ablaufdiagramm, Datenflussdiagramm, Strukturdiagramm oder Blockdiagramm dargestellt ist. Obwohl ein Flussdiagramm Operationen als sequenziellen Prozess beschreiben kann, können viele der Operationen parallel oder simultan durchgeführt werden. Zudem kann die Ordnung der Operationen umgestellt werden. Ein Prozess endet, wenn dessen Operationen beendet sind; er kann jedoch zusätzliche Schritte aufweisen, die in einer Figur nicht beinhaltet sind. Ein Prozess kann einem Verfahren, einer Funktion, einer Prozedur, einer Subroutine, einem Subprogramm und dergleichen entsprechen. Entspricht ein Prozess einer Funktion, so kann dessen Beendigung einer Rückgabe der Funktion an die aufrufende Funktion oder die Hauptfunktion entsprechen.
  • Der Begriff „computerlesbares Medium“ beinhaltet unter anderem tragbare oder nichttragbare Speichervorrichtungen, optische Speichervorrichtungen und verschiedene andere Medien, die eine Anweisung / Anweisungen und/oder Daten speichern, enthalten oder tragen können. Ein computerlesbares Medium kann ein nichttemporäres Medium beinhalten, auf dem Daten gespeichert werden können und das keine Trägerwellen und/oder temporäre elektronische Signale, die sich drahtlos oder über verdrahtete Verbindungen ausbreiten, beinhaltet. Beispiele für nichttemporäre Medien beinhalten unter anderem eine magnetische Platte oder ein magnetisches Band, optische Speichermedien, so beispielsweise eine Compact Disc (CD) oder eine Digitale Versatile Disc (DVD), einen Flash-Speicher, einen Memory oder Memory-Vorrichtungen. Auf einem computerlesbaren Medium können Code und/oder maschinenausführbare Anweisungen gespeichert sein, die eine Prozedur, eine Funktion, ein Subprogramm, ein Programm, eine Routine, eine Subroutine, ein Modul, ein Softwarepaket, eine Klasse oder eine beliebige Kombination von Anweisungen, Datenstrukturen oder Programmangaben darstellen können. Ein Codesegment kann mit einem anderen Codesegment oder einer Hardwareschaltung gekoppelt werden, indem Information, Daten, Argumente, Parameter oder Speicherinhalte durchgeleitet und/oder empfangen werden. Information, Argumente, Parameter, Daten und dergleichen können über beliebige geeignete Mittel, darunter Memory Sharing (Teilen eines Speichers), Message Passing (Durchleiten von Nachrichten), Token Passing (Durchleiten von Tokens), Network Transmission (Netzwerkübertragung) oder dergleichen, durchgeleitet, weitergereicht oder übertragen werden.
  • Des Weiteren können Ausführungsformen durch Hardware, Software, Firmware, Middleware, Microcode, Hardwarebeschreibungssprachen oder eine beliebige Kombination hieraus implementiert werden. Bei Implementierung in Software, Firmware, Middleware oder Microcode können der Programmcode oder die Programmsegmente zur Durchführung der notwendigen Aufgaben (beispielsweise ein Computerprogrammerzeugnis) auf einem computerlesbaren oder maschinenlesbaren Medium gespeichert sein. Ein Prozessor / Prozessoren kann/können die notwendigen Aufgaben durchführen.
  • Dreidimensionaler (3D) Videocontent kann für verschiedene Anwendungen bereitgestellt werden, so beispielsweise für Anwendungen mit virtueller Realität (Virtual Reality VR), Gaming-Anwendungen bzw. Spieleanwendungen (darunter VR oder andere Gaming-Systeme bzw. Spielesysteme), Audio-Video-Anwendungen (beispielsweise VR-Filme oder Shows, 3D-Filme oder Shows und dergleichen) und eine beliebige Kombination hieraus, neben vielen weiteren Anwendungen. VR-Content kann beispielsweise die Fähigkeit bereitstellen, dass ein Nutzer in eine nichtphysische Welt eintauchen kann, die durch die Wiedergabe von natürlichen und/oder synthetischen Bildern (und in einigen Fällen Ton) geschaffen wird. Ein Nutzer kann beispielsweise mit einer VR-Umgebung interagieren, indem er sich beispielsweise durch die Umgebung bewegt und mit Objekten in der VR-Umgebung interagiert, neben weiteren Interaktionen. In einigen Fällen kann ein Nutzer, der ein VR-Video, ein VR-Spiel und/oder ein anderes VR-Erlebnis erlebt, elektronische Geräte benutzen, so beispielsweise eine am Kopf montierte Anzeige (Head-Mounted Display HMD) und optional gewisse Werkzeuge oder Stoffteile (beispielsweise mit Sensoren bestückte Handschuhe), um mit der virtuellen Umgebung zu interagieren. Bewegt sich der Nutzer in der realen physischen Welt, so ändern sich auch die Bilder, die in der virtuellen Umgebung wiedergegeben werden, was dem Nutzer den Eindruck vermittelt, dass er sich innerhalb der virtuellen Umgebung bewegt. Bei einigen Anwendungen können bei der Präsentation einer VR-Umgebung auch Bilder aus der realen Welt benutzt werden, was im Gegensatz zu computergenerierten Grafiken steht, die beispielsweise in Spielen und virtuellen Welten vorzufinden sind. Ein Nutzer kann beispielsweise ein Rennspiel in Paris aus der Ich-Perspektive spielen, einen Spaziergang durch Berlin erleben und einem Sportereignis in New York beiwohnen, neben anderen Ereignissen an anderen Orten, während er ein VR-Videosystem benutzt, das sich physisch in San Francisco befindet.
  • Die wachsende Beliebtheit von Anwendungen, die 3D-Szenen verarbeiten, bringt neue technische Probleme mit sich, die mit der Versendung von 3D-Content über ein Netzwerk, so beispielsweise über das Internet, zusammenhängen. Das Versenden von umfangreichen, qualitativ hochwertigen dreidimensionalen (3D) Szenen über ein Netzwerk ist beispielsweise aufgrund der Größe der 3D-Objekte infolge ihrer Geometrie und Texturen problematisch. Die große Datenmenge, die mit einer 3D-Szene einhergeht, rührt daher, dass jedes Objekt in einer virtuellen 3D-Welt durch ein oder mehrere 3D-Gitter und Texturdaten definiert ist. Ein 3D-Gitter eines Objektes (auch als „3D-Modell“ bezeichnet) kann wenigstens einen Teil einer Geometrie eines Objektes definieren. Ein 3D-Gitter kann aus einer Anzahl von Vielecken zusammengesetzt sein, die die Geometrie des Objektes definieren. Es können Details zu einem 3D-Objekt hinzugefügt werden, indem mehr Vielecke (entsprechend mehr geometrischen Details) hinzugefügt werden oder indem die Anzahl von benutzten Texturen und die Auflösung der Texturbilder erhöht werden.
  • Es können Texturdaten auf ein 3D-Gitter angewendet werden, um detaillierte Eigenschaften zu einem Objekt hinzuzufügen. Die Texturdaten, die einem Objekt zugeordnet sind, können ein oder mehrere Texturbilder (hier auch als „Texturen“ bezeichnet) beinhalten. Die Texturbilder definieren verschiedene Eigenschaften des Objektes und können auf ein oder mehrere 3D-Gitter angewendet werden, um die Eigenschaften zu dem Objekt hinzuzufügen. In einigen Fällen kann ein einziges Objekt mehrere Texturbilder aufweisen, die verschiedene Eigenschaften des Objektes definieren.
  • Es gibt verschiedene Beispiele für Texturbilder, die auf ein einziges Objekt oder auf mehrere Objekte angewendet werden können. Ein diffuses Texturbild ist beispielsweise eine Textur mit Farbinformation. Ein Albedo-Texturbild ist dahingehend ähnlich zu einer diffusen Textur, dass es über Farbinformation verfügt, jedoch alle Schatten und Markierungen bzw. Hervorhebungen entfernt sind. 1 ist ein Beispiel für ein Albedo-Texturbild 100 für ein Objekt. Ein Normalentexturbild definiert verschiedene Normalen (beispielsweise der Richtungsachse) für die Oberfläche eines Objektes. 2 ist ein Beispiel für ein Normalentexturbild 200 für ein Objekt. Ein Normalentexturbild kann ermöglichen, dass ein Computer die Form eines Objektes ohne Weiteres erfasst, und zwar beispielsweise dort, wo Erhebungen oder andere Änderungen an einer Oberfläche des Objektes vorhanden sind. Ein Versetzungstexturbild definiert Verformungen des 3D-Gitters, auf das die Versetzungstextur angewendet werden soll. Eine Versetzungstextur kann in einigen Fällen in Kombination mit einer Normalentextur benutzt werden. Ein Normalentexturbild kann beispielsweise dafür benutzt werden, kleine bis mittelgroße Erhebungen zu definieren, während ein Versetzungstexturbild dafür benutzt werden kann, größere Erhebungen zu definieren. In einigen Fällen kann erwünscht sein, eine Versetzungstextur zusammen mit einer Albedo-Textur zu benutzen, um Dimensionalität bzw. Raumtiefe zu dem Objekt hinzuzufügen.
  • Ein Umgebungsverdeckungstexturbild gibt an, wie zugänglich jeder Punkt in einer Szene für Umgebungslicht ist. Eine Umgebungsverdeckungstextur erscheint beispielsweise als Schatten auf einem Objekt so, als ob das Objekt gleichmäßig von allen Seiten beleuchtet würde. Ein Maskentexturbild (oder ein Transparenztexturbild) definiert, welche Pixel des Texturbildes bei der Wiedergabe berücksichtigt werden müssen. 3 ist ein Beispiel für ein Maskentexturbild 300 für ein Objekt. Ein Maskentexturbild kann dafür benutzt werden, die Form eines Objektes zu definieren. Die Formen von Grashalmen können beispielsweise durch ein Maskentexturbild definiert werden, das die Bereiche der 3D-Gitter-Vielecke, die transparent gemacht werden sollen (indem die Pixel maskiert werden), und die Bereiche, für die Pixel wiedergegeben werden sollen, indem die Grashalme effektiv aus den Vieleckformen geschnitten werden, angeben kann. Ein Rauheitstexturbild definiert die Schärfe von Reflexionen an der Oberfläche eines Bildes. Eine Glanztexturbild kann dafür benutzt werden, die Schärfe von Reflexionen an der Oberfläche eines Bildes zu definieren. Ein Glanztexturbild kann umgekehrt zu einem Rauheitstexturbild sein. Andere Typen von Texturbildern sind ebenso verfügbar.
  • Ein Texturbild ist eine zweidimensionale Feldanordnung (array) von Werten, die die Eigenschaften des Texturbildes definieren. Ein Albedo-Texturbild kann beispielsweise Werte an jedem Pixel des Bildes beinhalten, wobei jedes Pixel einen Rot-Wert, einen Grün-Wert und einen Blau-Wert (für Rot-Grün-Blau-Bilder (RGB)) beinhaltet, oder einen anderen geeigneten Farbkomponentenwert angeben, der eine Farbe an jenem Ort an der Oberfläche des Objektes definiert. Bei einem anderen Beispiel kann eine Normalentexturkarte RGB-Werte (oder andere Farbkomponentenwerte) an jedem Pixelort beinhalten, wobei jede RGB-Farbe eine andere Richtungsachse (die die Normale an jenem Pixelort definiert) darstellt. In einigen Fällen kann ein Texturbild dreidimensional sein.
  • Die verschiedenen Abbildungen, die durch Texturbilder bereitgestellt werden (beispielsweise eine Farbabbildung, eine Erhebungsabbildung, eine Versetzungsabbildung, eine Normalenabbildung, eine Höhenabbildung, eine Reflexionsabbildung, eine Spiegelungsabbildung, eine Verdeckungsabbildung und andere), haben dazu geführt, dass Systeme zum in Echtzeit erfolgenden Simulieren von realistischen 3D-Szenen in der Lage sind, indem sie die Anzahl von Vielecken und Beleuchtungsberechnungen, die zum Konstruieren einer realistischen und funktionellen 3D-Szene benötigt werden, verringern. Texturbilder können gleichwohl hohe Auflösungen aufweisen, um Details bereitzustellen, die zum Schaffen einer qualitativ hochwertigen und realistischen 3D-Szene notwendig sind. Qualitativ hochwertige fotorealistische 3D-Szenen können Hunderte, Tausende oder in einigen Fällen sogar noch mehr Objekte enthalten, die bei fehlender Kompression zu Gigabytes von Information führen. Die großen Datenmengen können für Vorrichtungen und die Netzwerkinfrastruktur eine Belastung darstellen und zu einem unbefriedigenden Nutzererlebnis führen. Vor Beginn eines immersiven Erlebnisses, das 3D-Content zugeordnet ist, muss eine Clientvorrichtung beispielsweise die 3D-Objekte, die die Szene bilden, herunterladen. Die große Datenmenge, die zum Generieren der 3D-Objekte erforderlich ist, kann trotz des in jüngster Zeit vorhandenen Fortschrittes bei der Netzwerkbandbreite und Versendung zu unannehmbaren Ladezeiten führen. Fortschritte sind mit Blick auf die Kompression und die Versendung von 3D-Netzen gemacht worden. Weniger im Mittelpunkt stand jedoch die Versendung von Texturbildern über ein Netzwerk.
  • Bei einigen Beispielen stellen ein oder mehrere Systeme, eine oder mehrere Einrichtungen, ein oder mehrere Verfahren und ein oder mehrere computerlesbare Medien, die hier beschrieben werden, darauf ab, eine effiziente und adaptive bzw. anpassungsfähige Versendung und Verarbeitung der Texturbilder bereitzustellen. Wie hier noch detaillierter beschrieben wird, stellen die hier beschriebenen Systeme und Techniken Universalität, Adaptivität und Optionalität in Bezug auf Texturbilder bereit. Die Universalität wird als Folge dessen bereitgestellt, dass das System keine Implementierung neuer Software oder einer physischen Infrastruktur in der Versendekette benötigt. Die Texturbilder können beispielsweise auf eine Art verarbeitet werden, die die Nutzung von bestehenden Contentversendeinfrastrukturen (beispielsweise von Contentversendenetzwerken (Content Delivery Networks, CDNs)) sowie Endnutzergeräten und Anwendungen ermöglicht. Die Nutzung von entwickelten Versende- und Verarbeitungssystemen ermöglicht die Nutzung einer engmaschigen Steuerung bzw. Regelung der Qualität der sich ergebenden Videosequenz. Die Adaptivität ist ein erwünschtes Merkmal von skalierbaren Versendelösungen, was durch den massiven Einsatz von HAS (HTTP Adaptive Streaming, HAS) zur Videoversendung nachgewiesen ist. Die Systeme und Techniken ermöglichen eine mit Blick auf Netzwerk- und Vorrichtungsressourcen adaptive Versendung von Texturbildern. Die Optionalität erhält man, indem die Texturbilder auf eine Art verarbeitet werden, die ermöglicht, dass mehrere Optionen für Clients zwischen der Qualität des angezeigten Contents und der Verzögerung dabei, diesen über ein Netzwerk zu erhalten, gewählt werden können. Die Optionalität ist mit Blick auf eine fehlende Abstimmung zwischen der Größe der Texturbilddaten, die versendet werden sollen, und den physischen Netzwerkressourcen wichtig.
  • Die hier beschriebenen Systeme und Techniken ermöglichen, dass Texturbilder als Videosequenz codiert und versendet werden können, anstatt dass sie unabhängig als einzelne Texturbilder oder als einzelne codierte Texturbilder versendet werden. Anstatt die Texturbilder jeweils einzeln zu komprimieren und die Texturbilder unabhängig zu versenden, wird beispielsweise eine Sequenz von Texturen generiert und unter Nutzung von Videocodiertechniken komprimiert. Die sich ergebende komprimierte Videosequenz kann sodann unter Nutzung einer beliebigen geeigneten Videostreamingtechnik versendet werden. Die Darstellung der Texturen als Videosequenz und nicht als einzelne Bilder ermöglicht, dass der Bereitsteller die optimierte Versendekette, die bereits für das Streamen von Videos verfügbar ist, sowohl mit Blick auf die Infrastruktur wie auch mit Blick auf die Software (Universalität) und Algorithmen (Adaptivität) erneut nutzt. Wie vorstehend beschrieben worden ist, wird zudem eine engmaschigere Steuerung bzw. Regelung der Texturversendekette (Optionalität) bereitgestellt, ohne dass dies auf Kosten der Qualität ginge.
  • 4 ist ein Blockdiagramm zur Darstellung eines Beispiels für ein Texturbildsequenziersystem 400. Das Texturbildsequenziersystem 400 kann in einer Rechenvorrichtung beinhaltet sein. Die Rechenvorrichtung kann beispielsweise einen Server, einen PC, einen Tabletcomputer und/oder eine beliebige andere Rechenvorrichtung mit Ressourcekapazitäten zur Durchführung der hier beschriebenen Techniken beinhalten. Das Texturbildsequenziersystem 400 weist verschiedene Komponenten auf, darunter eine Kachelungsengine 404, eine Transformationsengine 406 (die optional ist, wie durch den gepunkteten Umriss in 4 gezeigt ist) und eine Sequenzgenerierungsengine 408. Die Komponenten des Texturbildsequenziersystems 400 können elektronische Schaltungen oder andere elektronische Hardware beinhalten und/oder unter Nutzung derselben implementiert sein, wobei die elektronischen Schaltungen oder die andere elektronische Hardware eine oder mehrere programmierbare elektronische Schaltungen (beispielsweise Mikroprozessoren, Grafikverarbeitungseinheiten (GPUs), digitale Signalprozessoren (DSPs), zentrale Verarbeitungseinheiten (CPUs) und/oder andere geeignete elektronische Schaltungen) beinhalten, und/oder können Computersoftware, Firmware oder eine Kombination hieraus beinhalten und/oder unter Nutzung derselben implementiert sein, um die hier beschriebenen verschiedenen Operationen durchzuführen.
  • Obwohl das Texturbildsequenziersystem 400 derart gezeigt ist, dass es gewisse Komponenten beinhaltet, erschließt sich einem Durchschnittsfachmann, dass das Texturbildsequenziersystem 400 auch mehr oder weniger als die in 4 gezeigten Komponenten beinhalten kann. Beinhalten kann das Texturbildsequenziersystem 400 in einigen Fällen beispielsweise eine oder mehrere Speichervorrichtungen (beispielsweise eine oder mehrere RAM-Komponenten (Random Access Memory), ROM-Komponenten (Read-Only Memory), Cache-Speicherkomponenten, Pufferkomponenten, Datenbankkomponenten und/oder andere Speichervorrichtungen), eine oder mehrere Verarbeitungsvorrichtungen (beispielsweise eine oder mehrere CPUs, GPUs und/oder andere Verarbeitungsvorrichtungen), eine oder mehrere drahtlose Schnittstellen (darunter beispielsweise einen oder mehrere Sender-Empfänger (transceiver) und einen Basisbandprozessor für jede drahtlose Schnittstelle) zur Durchführung von drahtlosen Kommunikationen, eine oder mehrere verdrahtete Schnittstellen (beispielsweise eine serielle Schnittstelle, so beispielsweise eine USB-Eingabe (Universal Serial Bus USB), einen Beleuchtungsstecker und/oder eine andere verdrahtete Schnittstelle) zur Durchführung von Kommunikationen über eine oder mehrere festverdrahtete Verbindungen und/oder andere Komponenten, die in 4 nicht gezeigt sind.
  • Das Texturbildsequenziersystem 400 kann ein oder mehrere Texturbilder 402 erhalten. Das eine oder die mehreren Texturbilder 402 kann von einer anderen Vorrichtung empfangen werden, von einem Speicher erhalten werden, durch die Rechenvorrichtung, die das Texturbildsequenziersystem 400 beinhaltet, generiert werden oder auf beliebige andere Weise erhalten werden. In einigen Fällen können das eine oder die mehreren Texturbilder 402 mehrere Texturbilder beinhalten, die zum Generieren einer 3D-Szene (beispielsweise einer VR-Welt für ein Spiel, einen Film oder einen anderen Typ von Medium) benötigt werden. Das eine oder die mehreren Texturbilder 402 können einen beliebigen geeigneten Typ von Texturbild beinhalten, der zur Anwendung auf ein oder mehrere 3D-Gitter konfiguriert ist. Beinhalten können das eine oder die mehreren Texturbilder 402 beispielsweise ein diffuses Texturbild, ein Albedo-Texturbild, ein Normalentexturbild, ein Versetzungstexturbild, ein AO-Texturbild, ein Maskentexturbild, ein Rauheitstexturbild, ein Glanztexturbild, einen beliebigen anderen Typ von Texturbild oder eine beliebige Kombination hieraus.
  • Das eine oder die mehreren Texturbilder 402 können von der Kachelungsengine 404 zur Verarbeitung empfangen werden. Die Kachelungsengine 404 kann jedes Texturbild des einen oder der mehreren Texturbilder 402 in mehrere Kacheln unterteilen. Die Kacheln, die von der Kachelungsengine 404 generiert werden, können überlappend oder nichtüberlappend sein. Obwohl hier zu illustrativen Zwecken Beispiele unter Nutzung von nichtüberlappenden Kacheln beschrieben werden, erschließt sich einem Durchschnittsfachmann, dass die Techniken auch bei überlappenden Kacheln angewendet werden können. Die Eingabevideoframes, die für einen Videocodierer bereitgestellt werden, sollen eine gleichmäßige Auflösung (die hier als Videoauflösung bezeichnet wird) aufweisen. Die Kachelungsengine 404 kann das eine oder die mehreren Texturbilder 402 derart unterteilen, dass die Kacheln eine gleichmäßige Kachelgröße aufweisen. Die Kacheln eines Texturbildes können beispielsweise dieselbe gleichmäßige Kachelgröße aufweisen, und die Kacheln aller anderen Texturbilder können ebenfalls dieselbe gleichmäßige Kachelgröße aufweisen. Man beachte, dass die verschiedenen Texturbilder verschiedene Auflösungen aufweisen können. Die Kachelungsengine 404 kann die Texturbilder mit den verschiedenen Auflösungen in Kacheln mit derselben gleichmäßigen Größe unterteilen. Bei einigen Beispielen ist die gleichmäßige Kachelgröße als Anzahl von Pixeln definiert, die verschiedene Auflösungen von Texturbildern ermöglicht, die zu einem Video kombiniert werden sollen. Für den Fall, dass die Auflösung eines Texturbildes kein Vielfaches der Kachelgröße ist, können ein oder mehrere Abschnitte des Texturbildes vorhanden sein, die nicht in eine Kachel mit der gleichmäßigen Kachelgröße unterteilt werden können. In derartigen Fällen können verschiedene Techniken eingesetzt werden, um eine Kachel mit der gleichmäßigen Kachelgröße zu schaffen. Bei einem Beispiel kann ein Padding ausgeführt werden, um eine Kachel mit der gleichmäßigen Kachelgröße zu schaffen. Bei einem anderen Beispiel können gewisse Pixel unkomprimiert belassen werden, um eine Kachel mit der gleichen Kachelgröße zu schaffen. Die gleichmäßige Kachelgröße ermöglicht, dass die Kacheln von einem Videocodierer so codiert werden, als ob sie in Videoframes mit einer gewissen Videoauflösung wären. Die gleichmäßige Kachelgröße der Kacheln wird im Wesentlichen beispielsweise zur Videoauflösung der Sequenz von geordneten Kacheln, die für den Codierer bereitgestellt wird.
  • 5A und 5B sind Konzeptdiagramme zur Darstellung von Beispielen für zwei verschiedene Texturbilder 500A und 500B, die in Kacheln unterteilt sind. Wie gezeigt ist, ist die Auflösung des Texturbildes 500A von der Auflösung des Texturbildes 500B verschieden. Die (in Pixeln gemessene) Auflösung der Texturbilder 500A und 500B kann als Breite (w) × Höhe (h) geschrieben werden. Bei Nutzung dieser Notation weist das Texturbild 500A eine Auflösung von w1 Pixeln × h1 Pixeln auf, während das Texturbild 500B eine Auflösung von w2 Pixeln × h2 Pixeln aufweist. Die Auflösungen der Texturbilder 500A und 500B können von beliebiger geeigneter Größe sein und auf Grundlage der gewünschten Qualität der Eigenschaften, die von den Texturen bereitgestellt werden, gewählt werden. Bei einem illustrativen Beispiel ist die Auflösung des Texturbildes 500A gleich 2048×640, während die Auflösung des Texturbildes 500B gleich 1792×512 ist. Einige Texturbilder können Auflösungen von 8K (beispielsweise 7680×4320) oder sogar noch größer aufweisen.
  • Die Kachelungsengine 404 kann das Texturbild 500A in M Kacheln × N Kacheln unterteilen, darunter unter anderem die Kacheln 502A, 504A, 505A, 506A, 508A und 509A. Die Kachelungsengine 404 kann das Texturbild 500B zudem in × Kacheln × Y Kacheln unterteilen, darunter unter anderem die Kacheln 510B, 512B, 514B, 515B, 516B und 518B. Wie vorstehend bemerkt worden ist, können die Texturbilder 500A und 500B in Kacheln mit gleichmäßiger Kachelgröße unterteilt werden. In Fortsetzung des vorstehenden illustrativen Beispiels kann die gleichmäßige Kachelgröße auf eine Größe von 256×128 Pixel gesetzt werden. Unter Nutzung der gleichmäßigen Kachelgröße von 256×128 kann die Kachelungsengine 404 das 2048×640-Texturbild 500A in 8 Kacheln (M) × 5 Kacheln (N) unterteilen, wobei jede Kachel eine Größe von 256×128 aufweist. Die Kachelungsengine 404 kann zudem das 1792×512-Texturbild 500B in 7 Kacheln (M) × 4 Kacheln (N) unterteilen, wobei jede Kachel eine Größe von 256×128 aufweist. Im Ergebnis kann die Kachelungsengine 404 eine Gesamtzahl von achtundsechzig 256×128-Kacheln aus dem Texturbild 500A und dem Texturbild 500B generieren. Bei diesem Beispiel ist die Videoauflösung der Kacheln (aus Sicht des Videocodierers) gleich 256×128.
  • Bei einigen Implementierungen kann das Texturbildsequenziersystem 400 eine Transformationsengine 406 beinhalten, die dafür benutzt werden kann, die Pixel einer oder mehrerer Kacheln zu transformieren, bevor die Kacheln für die Sequenzgenerierungsengine 408 bereitgestellt werden. Die Transformationsengine 406 ist eine optionale Komponente des Texturbildsequenziersystems 400, wie durch den gepunkteten Umriss in 4 gezeigt ist. Die Transformationsengine 406 kann aus verschiedenen Gründen eine oder mehrere Transformationen auf gewisse Teile eines Bildes anwenden. Ein Beispiel für eine von der Transformationsengine 406 angewendete Transformation wird anhand 6 beschrieben.
  • 6 ist ein Beispiel für ein Texturbild 600 mit einem Schmetterlingsobjekt. Das Texturbild 600 weist eine Auflösung von 300×100 (Breite×Höhe) auf. Die Kachelungsengine 404 kann das Texturbild 600 in zwei Kacheln 602 und 604 unterteilen. Jede der Kacheln 602 und 604 nimmt die Hälfte des Bildes ein, sodass jedes eine Auflösung von 150×100 aufweist. Wie aus dem Texturbild 600 ersichtlich ist, weisen die Kachel 602 und die Kachel 604 wenige Ähnlichkeiten auf. Würde eine der Kacheln 602 oder 604 unter Nutzung einer Spiegelungstransformation (beispielsweise einer Horizontalfunktion) gespiegelt, so ergäben sich identische Kacheln. Die Transformationsengine 406 kann beispielsweise eine Spiegelungstransformation auf die Kachel 604 anwenden, um eine gespiegelte Version der Kachel 604 zu generieren, wobei in diesem Fall die gespiegelte Version der Kachel 604 zu der Kachel 602 identisch wäre. Indem die Kachel 604 gespiegelt und zu der Kachel 602 identisch gemacht wird, kann die Codiereffizienz erhöht werden, wenn die Kachel 602 und die gespiegelte Kachel 604 von dem Videocodierer codiert werden. Der Videocodierer kann diese Ähnlichkeit beispielsweise ausnutzen, um das Video effizient zu komprimieren. Ein Beispiel für eine Konfigurationsdatei, die in einer Datendatei (nachstehend noch detaillierter beschrieben) beinhaltet ist, um die Spiegelungsfunktion anzugeben, lautet folgendermaßen (wobei das Beispiel unter Nutzung einer Horizontalfunktion als Beispiel für eine Spiegelungsfunktion angegeben ist):
    nameTile (NameKachel) ImageTexture (Bildtextur) X_pos Y_pos Funktion
    Left_image (linkes_Bild) Schmetterling 0 0 plain (einfach)
    Right_image (rechtes_Bild) Schmetterling 150 0 horizontal mirror (Horizontalspiegelung)
  • Das Texturbild 600 wird in der Konfigurationsdatei als „Schmetterling“ bezeichnet, die Kachel 602 wird als „Left-image“ bezeichnet, und die Kachel 604 wird in der Konfigurationsdatei als „Right-image“ bezeichnet. Die Bezeichnung „X_pos“ gibt die x-Koordinate des linken, oberen Pixels der entsprechenden Kachel 602 oder 604 an, während die Bezeichnung „Y_pos“ die y-Koordinate des linken, oberen Pixels der entsprechenden Kachel 602 oder 604 angibt. Das linke, obere Pixel der Kachel 602 weist beispielsweise eine (x, y)-Koordinatenposition von (0, 0) auf, und das linke, obere Pixel der Kachel 602 weist eine (x, y)-Koordinatenposition von (150, 0) auf (und zwar auf Grundlage dessen, dass die Auflösung des Texturbildes 600 gleich 300×100 ist und jede Kachel eine Auflösung von 150×100 aufweist). Die Konfigurationsdatei kann gegenüber einer Clientvorrichtung angeben, dass die Clientvorrichtung eine Horizontalspiegelungsfunktion (als „horizontal_mirror“ bezeichnet) an den Pixeln der Kachel 604 („Right-image“) anwenden soll, bevor die Kachel 604 zur Rekonstruktion des Texturbildes 600 benutzt wird. Die „einfache“ (plain) Funktion in der Konfigurationsdatei gibt an, dass keine Transformation auf die Pixel der Datei 602 („Left_image“) anzuwenden ist. Andere Typen von Transformationen (beispielsweise Verzerren (warping) oder Entzerren (unwarping) und dergleichen) können ebenfalls auf Kacheln angewendet werden, um beispielsweise die Codiereffizienz zu erhöhen.
  • Die Kacheln, die von der Kachelungsengine 404 generiert werden (und in einigen Fällen eine oder mehrere Kacheln, die von der Transformationsengine 406 transformiert werden), können an die Sequenzgenerierungsengine 408 ausgegeben werden. Die Sequenzgenerierungsengine 408 kann eine Sequenz von geordneten Kacheln 410 generieren, indem sie die Kacheln zu einer bestimmten Ordnung sortiert. Wie nachstehend noch detailliert beschrieben wird, ist die Sequenz von geordneten Kacheln 410 das Video, das codiert werden soll. Andere Techniken des Ordnens können von der Sequenzgenerierungsengine 408 benutzt werden, um die Kacheln beim Generieren der Sequenz von geordneten Kacheln 410 zu sortieren. Beispiele für Techniken des Ordnens können das ähnlichkeitsbasierte Ordnen, das teilsequenzbasierte Ordnen, eine Kombination hieraus oder einen anderen Typ des Ordnens oder Sortierens beinhalten.
  • Unter Nutzung des ähnlichkeitsbasierten Ordnens kann die Sequenzgenerierungsengine 408 eine Ordnung der Kacheln auf Grundlage von Ähnlichkeiten zwischen den Kacheln des einen oder der mehreren Texturbilder 402 bestimmen. Die Ähnlichkeit zwischen Kacheln kann auf Grundlage der Pixelwerte der Kacheln bestimmt werden. Wie vorstehend ausgeführt worden ist, können Pixelwerte in einem Texturbild zum Definieren von verschiedenen Eigenschaften, so beispielsweise Farbe, Tiefe und Verdeckungen neben weiteren Beispielen, benutzt werden. Die Pixelwerte von verschiedenen Kacheln können verglichen werden, um Ähnlichkeiten zwischen den Kacheln aufzufinden. Bei einem illustrativen Beispiel kann die Nichtähnlichkeit (nachstehend mit di,j bezeichnet) zwischen jedem Paar von Texturkacheln unter Nutzung eines beliebigen geeigneten Ähnlichkeitsmaßes bestimmt werden. Bei einem Beispiel kann ein mittlerer absoluter Fehler (Mean Absolute Error MAE) zur Bestimmung der Nichtähnlichkeit benutzt werden. Weitere Beispiele für differenzbasierte Berechnungen, die benutzt werden können, beinhalten den mittleren quadrierten Fehler (Mean Squared Error MSE), den unter die Wurzel genommenen mittleren quadrierten Fehler (Root Mean Squared Error RMSE), die Summe der Absolutdifferenz (Sum of Absolute Difference SAD), die Summe der Quadratdifferenz (Sum of Square Difference SSD) oder eine andere geeignete Berechnung. Die Nichtähnlichkeiten zwischen Kacheln können in einer Abstandsmatrix D (nachstehend noch beschrieben) gesammelt werden.
  • Bei einigen Beispielen kann die Ordnung der Kacheln (aus dem einen oder den mehreren Texturbildern 402) in der Sequenz von geordneten Kacheln 410 bestimmt werden, indem die Kachelordnung als Zuweisungsproblem, als Problem des Reisenden Kaufmanns (traveling salesman problem) oder als anderes ähnlichkeitsbasiertes Problem modelliert wird. Bei einem illustrativen Beispiel kann die optimale Lösung für eine Sequenzordnung erhalten werden, indem (beispielsweise unter Nutzung einer dynamischen Programmierung oder einer anderen geeigneten Technik) das Problem der minimalen Reise eines Kaufmannes bei gegebener Abstandsmatrix D = {di,j,∀i,j ∈ T} gelöst wird, wobei T der Satz von Kacheln ist, der in der Sequenz von geordneten Kacheln 410 beinhaltet sein soll, und di,j die Ähnlichkeit zwischen zwei unabhängigen Kacheln i und j ist (wobei i = 1, 2, ..., n gilt und n die Anzahl von Kacheln in dem Satz T ist). Wie vorstehend bemerkt worden ist, kann die Nichtähnlichkeit unter Nutzung von MAE, MSE, RMSE, SAD, SSD oder einer anderen geeigneten differenzbasierten Berechnung bestimmt werden. Das Symbol V ist ein universeller Quantisierer, der angibt, dass die getroffenen Annahmen, hier D, „für alle Versionen“ der gegebenen Variable i (die betroffene Kachel) gelten. Das Symbol ∈ wird benutzt, um anzugeben, dass j ein Element von T ist (dass also jede Kachel j zu dem Satz von Kacheln T gehört). Ein Beispiel für eine Abstandsmatrix D lautet folgendermaßen: D = 1 2 n 1    2    3              n ( d 11 d 12 d 13 d 1 n d 21 d 22 d 23 d 2 n d n 1 d n 1 d n 3 d n n )
    Figure DE102020000306A1_0001
  • Die Lösung maximiert die Summe der Ähnlichkeiten (oder minimiert die Summe der Nichtähnlichkeiten) zwischen aufeinanderfolgenden Bildern und beinhaltet alle Kacheln in dem Satz von Kacheln T. Das Ergebnis des Lösens des Problems des Reisenden Kaufmannes (beispielsweise unter Nutzung einer dynamischen Programmierung oder einer anderen geeigneten Technik) ist eine Sequenz von geordneten Kacheln 410 (die mit S bezeichnet werden kann). Andere ähnlichkeitsbasierte Lösungen können ebenfalls benutzt werden, so beispielsweise die Ungarische Methode, ein Zuweisungsproblem oder ein anderes ähnlichkeitsbasiertes Problem.
  • Wie 5A und 5B zeigen, können die Kacheln 502A und 504A des Texturbildes 500A und die Kacheln 510B und 515B des Texturbildes 500B von der Sequenzgenerierungsengine 408 als ähnlich bestimmt werden. Die Sequenzgenerierungsengine 408 kann zudem bestimmen, dass die Kacheln 505A und 506A des Texturbildes 500A und die Kacheln 512B und 514B des Texturbildes 500B ähnlich sind. Die Sequenzgenerierungsengine 408 kann des Weiteren bestimmen, dass die Kacheln 508A und 509A des Texturbildes 500A und die Kacheln 516B und 518B des Texturbildes 500B ähnlich sind.
  • Auf Grundlage der Ähnlichkeitsbestimmungen können die verschiedenen Kacheln der Texturbilder 500A und 500B in einer Sequenz von geordneten Kacheln sortiert werden. 5C ist ein Diagramm zur Darstellung eines Beispiels für einen Teilsatz einer Sequenz von geordneten Kacheln 500C, die sich aus einem ähnlichkeitsbasierten Ordnen der Kacheln aus den Texturbildern 500A und 500B ergeben. Wie in 5C gezeigt ist, sind die Kacheln 502A, 504A, 510B, 515B in der Sequenz von geordneten Kacheln 500C aufeinanderfolgend platziert. Auf ähnliche Weise sind die Kacheln 505A, 506A, 512B, 514B in der Sequenz von geordneten Kacheln 500C aufeinanderfolgend, gefolgt von den Kacheln 508A, 509A, 516B, 518B platziert.
  • Das ähnlichkeitsbasierte Ordnen kann sicherstellen, dass aufeinanderfolgende Bilder in der Sequenz von geordneten Kacheln eine starke Ähnlichkeit aufweisen. Wie in 5C dargestellt ist, kann das ähnlichkeitsbasierte Ordnen auch zu einer Sequenz von geordneten Kacheln führen, die Kacheln aus verschiedenen Texturbildern (beispielsweise dem Texturbild 500A und dem Texturbild 500B) beinhaltet, die in der Sequenz (beispielsweise der Sequenz von geordneten Kacheln 500C) eingestreut sind. Durch Maximieren der Ähnlichkeit zwischen aufeinanderfolgenden Kacheln kann infolge der Fähigkeit des Videocodierers, die Ähnlichkeit zum effektiven Komprimieren des Videos auszunutzen, eine hohe Codiereffizienz erreicht werden.
  • Ein weiteres Beispiel für eine Technik des Ordnens, die von der Sequenzgenerierungsengine 408 durchgeführt werden kann, ist das teilsequenzbasierte Ordnen. Das teilsequenzbasierte Ordnen kann die Kacheln in Bezug auf Segmente eines Videos mit einer gewissen Anzahl von Sekunden sortieren, was zu einer Sequenz von geordneten Kacheln führt, die eine Anzahl von Teilsequenzen beinhaltet. In einigen Fällen kann das teilsequenzbasierte Ordnen sicherstellen, dass die meisten oder alle Kacheln aus einem gegebenen Texturbild in einer minimalen Anzahl von Teilsequenzen beinhaltet sind. Das Video wird beispielsweise in Segmente mit derselben Dauer unterteilt, so beispielsweise Dauern von 1 s (entsprechend 30 Frames für ein 30-FPS-Video), Dauern von 2 s (entsprechend 60 Frames für ein 30-FPS-Video) oder andere geeignete Dauern. Die Segmentgröße (auch als Segmentdauer oder Segmentlänge bezeichnet) kann gemessen an der Anzahl von Frames (beispielsweise ein Segment aus 4 Frames, 6 Frames, 30 Frames oder eine andere geeignete Größe) oder gemessen an der Zeitspanne (beispielsweise 1 s, entsprechend 30 Frames in einem 30-FPS-Video oder eine andere geeignete Zeitspanne) definiert werden. Bei einigen Implementierungen kann die Segmentgröße als Eingabeparameter benutzt werden, um unabhängig decodierbare codierte Videosequenzen durch den Videocodierer zu bilden. In einigen Fällen kann die Segmentgröße beispielsweise als Eingabeparameter für den Videocodierer bereitgestellt werden. In einigen Fällen ist die Segmentgröße kein erforderlicher Eingabeparameter. Wie vorstehend bemerkt worden ist, kann ein Texturbild in mehrere Kacheln unterteilt werden, was zu k Kacheln führen kann (wobei k von der Texturbilderauflösung und der gleichmäßigen Kachelgröße abhängt). Der Parameter k kann größer oder kleiner als eine Segmentgröße sein. Ist die Anzahl k von Kacheln beispielsweise größer als die Segmentgröße, so passen nicht alle Kacheln eines gegebenen Texturbildes in ein einzelnes Segment. Ist die Anzahl k von Kacheln demgegenüber kleiner als die Segmentgröße, so passen alle Kacheln eines gegebenen Texturbildes in ein einziges Segment. Das teilsequenzbasierte Ordnen kann dafür benutzt werden, die Anzahl von Segmenten zu minimieren, die zum Versenden aller Kacheln des Texturbildes benötigt werden, was durch Sortieren der Kacheln eines gegebenen Texturbildes zu Teilsequenzen erreicht werden kann. Die Teilsequenzen beinhalten aufeinanderfolgende Kacheln aus einem Texturbild.
  • Bei einem illustrativen Beispiel können zwei Videosegmente von jeweils 2 s (60 Frames in einem 30-FPS-Video) bereitgestellt sein. Ein erstes Texturbild kann in 96 Kacheln unterteilt sein. Beim Generieren der Sequenz von geordneten Kacheln können die Kacheln zu einer Teilsequenz sortiert werden, die in zwei Segmente passt. Ein erstes ganzes Segment (mit einer Größe von 60 Frames) wird mit 60 Kacheln des ersten Texturbildes gefüllt. Die verbleibenden 36 Kacheln werden in einem zweiten Segment (ebenfalls mit einer Größe von 60 Frames) platziert, sodass 24 Frames verbleiben, die zu dem zweiten Segment hinzugefügt werden können. Die 24 weiteren Frames des zweiten Segmentes können aus Kacheln eines zweiten Texturbildes stammen, das in 84 Kacheln unterteilt sein kann. Die 84 Kacheln des zweiten Texturbildes können zu einer Teilsequenz sortiert werden, die teilweise in dem zweiten Segment (beispielsweise 24 Frames) liegt, während die verbleibenden 60 Kacheln in einem dritten Segment platziert werden können. In einigen Fällen kann das vorbeschriebene ähnlichkeitsbasierte Ordnen auf Kacheln eines Texturbildes angewendet werden, um die Ordnung der Kacheln zu bestimmen. In derartigen Fällen wird das ähnlichkeitsbasierte Ordnen auf jedes Texturbild einzeln angewendet. Durch Anwenden des ähnlichkeitsbasierten Ordnens auf Kacheln eines Texturbildes kann die Ähnlichkeit zwischen aufeinanderfolgenden Kacheln jenes Texturbildes maximiert werden. Andere Techniken des Ordnens der Kacheln können zusätzlich zum ähnlichkeitsbasierten Ordnen und teilsequenzbasierten Ordnen oder auch alternativ hierzu durchgeführt werden.
  • 5D ist ein Diagramm zur Darstellung eines Beispiels für verschiedene Teilsequenzen (darunter eine Teilsequenz 522, eine Teilsequenz 524, eine Teilsequenz 526 und eine Teilsequenz 528) einer Sequenz von geordneten Kacheln 520, die unter Nutzung des teilsequenzbasierten Ordnens geordnet worden sind. Die Kacheln in der Sequenz von geordneten Kacheln 520 stammen aus drei verschiedenen Texturbildern, die mit Textur A, Textur B und Textur C bezeichnet sind. Textur A ist in zehn Kacheln unterteilt, Textur B ist in sechs Kacheln unterteilt, und Textur C ist in acht Kacheln unterteilt, wie in 5D gezeigt ist. Ein Parameter, der in den Codierer eingegeben werden kann, beinhaltet eine Länge der Videosegmente, die in dem Video generiert werden. Bei dem in 5D gezeigten Beispiel wird ein Video mit einer Segmentgröße gleich vier Frames generiert. Im Ergebnis beinhaltet die Sequenz von geordneten Kacheln 520 sechs Segmente (die zu illustrativen Zwecken durch eine gepunktete Linie unterteilt gezeigt sind), wobei jedes Segment eine Dauer von 1 s bei einer Framerate von 4 Frames pro Sekunde aufweist.
  • Beim adaptiven Streaming wird ein Kompromiss zwischen der Adaptivität (je kürzer beispielsweise die Segmente, desto schneller die Reaktion auf Bandbreitenänderungen) und der Kompressionsleistung (je länger beispielsweise die Segmente, desto besser die Kompression) eingegangen. Die Größe eines Segmentes ist wichtig, da Streamingsysteme in einigen Fällen RAP-Bilder (Random Access Point RAP, willkürlicher Zugangspunkt) (beispielsweise ein IDR-Bild (Instantaneous Decode Reference IDR), ein BLA-Bild (Broken Link Access BLA) oder ein anderes geeignetes RAP-Bild) zu Beginn eines jeden Segmentes beinhalten. Ein Segment, das mit einem RAP beginnt, wird hier als RAP-Segment bezeichnet. RAP-Bilder weisen eine größere Größe als andere Kacheln des Segmentes (da RAP ein Intraframe ist) auf. Je länger das Segment ist, desto weniger beschränkt ist der Codierer und desto besser ist die erreichbare Kompression. Je kürzer ein Segment jedoch ist, desto schneller kann sich die Clientvorrichtung (mit einem Videodecodierer) an Änderungen der Netzwerkbedingungen anpassen. Ein Segment von 1 s kann beispielsweise schnelle Änderungen ermöglichen, da eine Clientvorrichtung jede Sekunde von einem Segment auf ein anderes schalten kann; Segmente von 1 s erfordern jedoch, dass mehr RAPs in dem Videobitstream beinhaltet sind. Der Umstand, dass so viele Kacheln eines gegebenen Texturbildes in so wenigen Segmenten wie möglich beinhaltet sind, ermöglicht, dass eine Clientvorrichtung die Kacheln für das Texturbild effizienter erhält. Einige adaptive Streamingsysteme (beispielsweise HLS) ermöglichen auch Nicht-RAP-Segmente. Ein Nicht-RAP-Segment ist ein Segment, das kein RAP-Bild beinhaltet. Bei einigen Implementierungen können sogar in derartigen Systemen alle Segmente zwangsweise RAP-Segmente sein (beispielsweise Segmente, die ein RAP-Bild zu Beginn eines jeden Segmentes aufweisen), wodurch die Segmente im Wesentlichen zu einer ganzen Zahl einer codierten Videosequenz (Coded Video Sequence CVS) gemacht werden. Eine CVS kann beispielsweise eine Abfolge von Bildern (beispielsweise Zugriffseinheiten) beinhalten, und zwar beginnend mit einem RAP-Bild bis zu einem ausgeschlossenen, nächsten RAP-Bild.
  • Das teilsequenzbasierte Ordnen berücksichtigt die Segmentgröße zum Ordnen der gekachelten Bilder derart, dass die Anzahl von Videosegmenten, die heruntergeladen werden müssen, um das Texturbild zu erhalten, minimiert wird. Die Sequenz von geordneten Kacheln 520 ist (gemessen an der Anzahl von Segmenten pro Texturbild) aufgrund der Nutzung der verschiedenen Teilsequenzen 522, 524, 526 und 528, die sich gut an die Segmente anpassen, optimal. Wie in 5D gezeigt ist, sind die zehn Kacheln von Textur A in zwei Teilsequenzen 522 und 526 unterteilt. Die erste Teilsequenz 522 für Textur A beinhaltet sechs der zehn Kacheln, während die zweite Teilsequenz 526 die anderen vier Kacheln aus Textur A beinhaltet. Im Ergebnis muss eine Clientvorrichtung die drei Segmente (die ersten, zweiten und vierten Segmente) herunterladen und decodieren, um die Kacheln zu erhalten, die zum Rekonstruieren des Texturbildes A notwendig sind. Die sechs Kacheln aus Textur B sind in einer einzigen Teilsequenz 524 beinhaltet, die über zwei Segmente hinweg unterteilt ist. Eine Clientvorrichtung muss die beiden Segmente (die zweiten und dritten Segmente) herunterladen und decodieren, um die Kacheln zu erhalten, die zum Rekonstruieren des Texturbildes B notwendig sind. Die acht Kacheln aus Textur C sind ebenfalls in einer einzigen Teilsequenz 528 beinhaltet, die über zwei Sequenzen hinweg unterteilt ist. Eine Clientvorrichtung muss die letzten beiden Sequenzen herunterladen und decodieren, um die Kacheln zu erhalten, die zum Rekonstruieren des Texturbildes C notwendig sind.
  • 5E ist ein Diagramm zur Darstellung eines weiteren Beispiels für verschiedene Teilsequenzen (darunter eine Teilsequenz 532, eine Teilsequenz 534, eine Teilsequenz 536 und eine Teilsequenz 538) einer Sequenz von geordneten Kacheln 530, die unter Nutzung des teilsequenzbasierten Ordnens angeordnet worden sind. Die Kacheln in der Sequenz von geordneten Kacheln 530 sind aus denselben drei verschiedenen Texturbildern wie in 5D, nämlich Textur A (beinhaltend zehn Kacheln), Textur B (beinhaltend sechs Kacheln) und Textur C (beinhaltend acht Kacheln). Wie in 5E gezeigt ist, wird ein Video mit einer Segmentgröße gleich sechs Frames generiert. Im Ergebnis beinhaltet die Sequenz von geordneten Kacheln 530 vier Segmente (die zu illustrativen Zwecken als durch eine gepunktete Linie unterteilt gezeigt sind), wobei jedes Segment eine Dauer von 1 s bei einer Framerate von sechs Frames pro Sekunde aufweist.
  • Die Sequenz von geordneten Kacheln 530 ist aufgrund der Nutzung der vier Teilsequenzen 532, 534, 536 und 538 (gemessen an der Anzahl von Segmenten pro Texturbild) optimal. Wie gezeigt ist, sind die zehn Kacheln von Textur A in einer einzigen Teilsequenz 532 beinhaltet. Die Teilsequenz 532 ist über die ersten beiden Segmente des Videos hinweg unterteilt. Im Ergebnis muss eine Clientvorrichtung zwei Segmente (die ersten und zweiten Segmente) herunterladen und decodieren, um die Kacheln zu erhalten, die zum Rekonstruieren des Texturbildes A notwendig sind. Das zweite Segment beinhaltet zudem zwei Kacheln aus Textur C. Die sechs Kacheln aus Textur B sind ebenfalls in einer einzigen Teilsequenz 536 beinhaltet. Die Teilsequenz 536 ist in einem einzigen Segment beinhaltet. Eine Clientvorrichtung muss nur ein Segment (das dritte Segment) herunterladen und decodieren, um die Kacheln zu erhalten, die zum Rekonstruieren des Texturbildes B notwendig sind. Die acht Kacheln aus Textur C sind in zwei Teilsequenzen 534 und 538 unterteilt. Die erste Teilsequenz 534 für Textur C beinhaltet zwei der acht Kacheln, die in dem zweiten Segment beinhaltet sind, das ebenfalls die Kacheln aus Textur A beinhaltet. Die zweite Teilsequenz 538 für Textur C beinhaltet die anderen sechs Kacheln aus Textur C und ist in dem vierten Segment beinhaltet. Eine Clientvorrichtung muss zwei Segmente (die zweiten und vierten Segmente) herunterladen und decodieren, um die Kacheln zu erhalten, die zum Rekonstruieren des Texturbildes C notwendig sind.
  • Ein ähnlichkeitsbasiertes Ordnen kann ebenfalls getrennt auf die Kacheln in Textur A, Textur B, und Textur C derart angewendet werden, dass die Ähnlichkeit zwischen aufeinanderfolgenden Kacheln innerhalb der Teilsequenzen maximiert werden kann. In einigen Fällen kann das ähnlichkeitsbasierte Ordnen, wenn das teilsequenzbasierte Ordnen durchgeführt wird, getrennt auf Gruppen von Texturbildern angewendet werden, die zur gleichen Zeit benötigt werden (wenn beispielsweise eine Anforderung eines bestimmten 3D-Objektes, das mehrere Texturbilder benötigt, empfangen wird). Wie in 5D gezeigt ist, können die ersten sechs Kacheln aus Textur A in der Teilsequenz 522 auf Grundlage ihrer Ähnlichkeit zueinander beinhaltet sein. Das Durchführen des ähnlichkeitsbasierten Ordnens zusätzlich zum teilsequenzbasierten Ordnen kann Effizienzen mit Blick auf Downloadzeiten ermöglichen, jedoch auch eine hohe Codiereffizienz (aufgrund dessen, dass der Videocodierer die Ähnlichkeit zum effizienten Komprimieren des Videos ausnutzen kann) bereitstellen.
  • Sobald die Ordnung bestimmt ist, kann die Sequenz von geordneten Kacheln 410 als Eingabeframes für eine Codiervorrichtung 412 (auch als Videocodierer bezeichnet) bereitgestellt werden, die ein oder mehrere Texturvideos (nachstehend als codierter Texturvideobitstream bezeichnet) unter Nutzung der Sequenz von geordneten Kacheln 410 generieren kann. Die Codiervorrichtung 412 behandelt die Kacheln in der Sequenz von geordneten Kacheln 410 als einzelne Bildframes und erzeugt codierte Kacheln, die ein Texturvideo bilden. Die codierten Kacheln können hier auch als codierte Bilder bezeichnet werden. Die Codiervorrichtung 412 kann die Sequenz von geordneten Kacheln 410 beispielsweise dafür codieren, einen codierten Texturvideobitstream zu erzeugen, der die codierten Kacheln, eine Datendatei und andere Informationen beinhaltet. Die Datendatei kann einen Satz von Metadaten (auch als „Kontextdaten“ bezeichnet) beinhalten, die die Rekonstruktion der Texturbilder ermöglichen. Ein beliebiger Typ von Videocodierung kann von der Codiervorrichtung 412 durchgeführt werden. Beispiele für Videocodierwerkzeuge, die von der Codiervorrichtung 412 benutzt werden können, beinhalten ITU-T H.261 (ISO/IEC MPEG-1 Visual), ITU-T H.262 (ISO/IEC MPEG-2 Visual) ITU-T H.263 (ISO/IEC MPEG-4 Visual), ITU-T H.264 (ISO/IEC MPEG-4 AVC), darunter SVC- und MVC-Erweiterungen (SVC Scalable Video Coding, MVC Multiview Video Coding) von AVC, ITU-T H.265 (HEVC High Efficiency Video Coding), die Bereichs- und Bildschirmcontentcodiererweiterungen von HEVC, darunter 3D-HEVC (3D Video Coding), die Multiview-Erweiterungen (MV-HEVC) und SHVC (Scalable Extension), VVC (Versatile Video Coding) und/oder einen anderen Videocodierstandard, der gerade jetzt oder zukünftig noch entwickelt wird. Ein illustratives Beispiel für eine Videocodiervorrichtung 1200 wird anhand 12 beschrieben.
  • Es können auch andere Eingabeparameter für den Videocodierer bereitgestellt werden, so beispielsweise die Anzahl von Frames pro Sekunde (Frames Per Second FPS), eine Zielvideobitrate, eine Anzahl von unabhängig decodierbaren und herunterladbaren Segmenten, die in dem Video beinhaltet sein sollen, eine beliebige Kombination hieraus und/oder andere Parameter. Im Gegensatz zu einem Standardvideo, das Frames mit einer zeitlichen Beziehung (beispielsweise werden Frames eines Videos in einer gewissen Ordnung ausgegeben oder abgespielt) aufweist, sind die Texturbilder und die einzelnen Kacheln der Texturbilder zeitlich unabhängig, da sie keine zeitliche oder zeitbasierte Beziehung aufweisen. Eine derartige zeitliche Unabhängigkeit zwischen den Texturbildern und Kacheln ermöglicht die Wahl eines beliebigen FPS-Wertes.
  • Die FPS- und Bitratenparameter ermöglichen, dass ein Dienstbereitsteller mehrere Versionen desselben Videos (mit demselben Satz von Texturen) mit mehreren Qualitäten und mehreren Versendeverzögerungen generiert. Wie vorstehend bemerkt worden ist, weisen die Kacheln keine zeitliche Beziehung auf, sodass ein beliebiger Wert für FPS (beispielsweise von einem Nutzer, vom Contentbereitsteller oder dergleichen) gewählt werden kann. Je höher der FPS-Wert ist, desto mehr Kacheln werden pro Zeiteinheit gesendet und desto kürzer ist die Zeit, die zum Versenden des gesamten Satzes von Kacheln für das eine oder die mehreren Texturbilder 402 benötigt wird. Bei einem Beispiel führt für eine Sequenz S, die 300 Bilder enthält, die Einstellung FPS = 30 zu einem Video, das 10 s lang ist. Bei einem gegebenen FPS-Parameter ermöglicht die Videobitrate Einstellungen der Qualität. Je höher die Bitrate ist, desto niedriger ist die Kompression und desto höher ist daher die Qualität der Bilder. Sowohl die FPS- wie auch die Bitratenparameter ermöglichen, dass der Dienstbereitsteller mehrere Versionen desselben Satzes von Texturen T mit mehreren Qualitäten und mehreren Versendeverzögerungen präpariert. Eine große Anzahl von Qualitäten wird verschiedenen Bandbreitenbedingungen gerecht, während mehrere Versendeverzögerungen eine Koordination des Versendens von Texturen auf Grundlage dessen ermöglichen, wann der Client sie benötigt und/oder wann ein Dienstbereitsteller sie benötigt.
  • Jedes codierte Video desselben Contents mit anderer Qualität wird als Darstellung bezeichnet. In einigen Fällen können mehrere Sätze von Darstellungen für ein einziges Texturvideo generiert werden (entsprechend einer einzigen Sequenz von geordneten Kacheln). Jeder andere Satz von Darstellungen kann andere Segmentgrößen auf Grundlage der Segmentgrößeneingabeparameter aufweisen. Die verschiedenen Darstellungen innerhalb eines gegebenen Darstellungssatzes weisen dieselbe Segmentgröße auf, können jedoch verschiedene Bitraten und/oder Frameraten aufweisen. Ein Satz von zwei Darstellungen kann beispielsweise eine Segmentgröße von 1 s aufweisen, wobei die eine Darstellung eine Bitrate von 1 MB/s (Megabit pro Sekunde) aufweist, während die andere Darstellung eine Bitrate von 2 MB/s aufweist. Für dasselbe Texturvideo kann ein zweiter Satz von zwei Darstellungen eine Segmentgröße von 10 s aufweisen, wobei die eine Darstellung eine Bitrate von 1 MB/s aufweist, während eine zweite Darstellung eine Bitrate von 2 MB/s aufweist. Eine Clientvorrichtung kann eine der Darstellungen auf Grundlage der Netzwerkbedingungen und in einigen Fällen auf Grundlage von Randbedingungen der Clientvorrichtung (beispielsweise Verarbeitungskapazitäten, Speicherkapazität, Kapazitäten einer 3D-Grafikwiedergabeanwendung und dergleichen mehr) empfangen. Ist die Netzwerkbandbreite zu einem Zeitpunkt beispielsweise ausreichend, so kann die Clientvorrichtung ein Texturvideo mit hoher Bitrate (beispielsweise einer Bitrate von 2 MB/s) empfangen. Zu einem anderen Zeitpunkt können sich die Bandbreitenbedingungen verschlechtern, wobei in diesem Fall die von der Clientvorrichtung empfangene Darstellung auf ein Texturvideo mit niedrigerer Bitrate (beispielsweise einer Bitrate von 1 MB/s) umgeschaltet werden kann.
  • Wie vorstehend bemerkt worden ist, kann eine Datendatei mit dem codierten Video bereitgestellt werden. Wie nachstehend noch detaillierter beschrieben wird, kann die Datendatei von einem Decodierer zum Rekonstruieren der Texturbilder benutzt werden. Die Datendatei kann Kontextdaten für die Kacheln des einen oder der mehreren Texturbilder 402 beinhalten. Die Kontextdaten (auch als Konfigurationsdatei bezeichnet) für eine Kachel eines Texturbildes kann einen Kachelidentifizierer, eine Identifizierung eines Texturbildes, das der Kachel zugeordnet ist, einen Ort der Kachel innerhalb des Texturbildes, eine Angabe einer Transformationsfunktion, eine beliebige Kombination hieraus und/oder andere Kontextinformationen beinhalten. Wie vorstehend beschrieben worden ist, kann eine Transformationsfunktion auf eine Kachel angewendet werden, um Pixel der Kachel zu modifizieren.
  • Das codierte Texturvideo mit den codierten Kacheln kann über ein Netzwerk unter Nutzung einer bestehenden Videoversendeinfrastruktur an eine Clientvorrichtung versandt werden. Das codierte Video kann beispielsweise unter Nutzung eines Internetstreamingprotokolls über das Internet gestreamt werden. Es sind verschiedene Protokolle des adaptiven Bitratenstreamings vorhanden, und es kann ein beliebiges geeignetes Videoversendeprotokoll benutzt werden, um die hier beschriebenen Texturvideos zu versenden. Ein Beispiel ist DASH (Dynamic Adaptive Streaming over HyperText Transfer Protocol DASH, Dynamisches adaptives Streamen über HTTP) (definiert bei ISO/IEC 23009-1:2014). Bei DASH kann eine Medienpräsentationsbeschreibung (Media Presentation Description MPD) (beispielsweise in einer XML-Datei (eXtensible Markup Language XML) dargestellt) einen Satz von Elementen beinhalten, die einen Adaptationssatz definieren. Der Adaptationssatz kann einen Satz von alternativen Darstellungen beinhalten. Wie vorstehend bemerkt worden ist, kann jede alternative Darstellung eines Kachelvideos einer bestimmten Bitrate, Framerate und/oder Segmentgröße zugeordnet werden und einen Satz von Mediensegmenten beinhalten. Jedes Mediensegment einer Darstellung kann in der MPD einem Ort (beispielsweise unter Nutzung einer URL (Uniform Resource Location) oder eines anderen Ortsidentifizierers) einer Mediensegmentdatei, die heruntergeladen und decodiert werden kann, zugeordnet sein.
  • Ein weiteres Beispiel für das adaptive Bitratenstreaming ist das HTTP-Live-Streaming (HLS), das das Streamen von Dateisegmenten ermöglicht, die dem TS-Format (Transport Stream TS, Transportstream) zugeordnet sind. Der Transportstream spezifiziert ein Containerformat, das verpackte elementare Streams (Packetized Elementary Streams PES) einkapselt. Jeder PES umfasst eine Einkapselung von sequenziellen Datenbytes aus einem Video- oder Audiodecodierer in PES-Paketen. Unter Nutzung von HLS kann ein Server einen Satz von Playlist-Dateien (auch als Beschreibungsdatei oder Manifestdatei bezeichnet) für die Clientvorrichtung bereitstellen. Jede der Playlist-Dateien kann Links zu einer Sequenz von Dateisegmenten im TS-Format beinhalten und einer bestimmten Bitrate zugeordnet sein. In einigen Fällen kann eine Playlist-Datei in einem .m3u8-Format vorliegen. Eine Variante der Playlist-Datei kann sich auf einen Satz von Playlist-Dateien beziehen. Jede Playlist-Datei kann einem Satz von Mediensegmentdateien für dasselbe Texturvideo zugeordnet sein und kann einer anderen Bitrate zugeordnet sein. Für die Clientvorrichtung kann eine Variante der Playlist-Datei bereitgestellt werden, und die Clientvorrichtung kann auf Grundlage der örtlichen Bedingungen (beispielsweise der Netzwerkbandbreite) die Playlist-Datei, die einer bestimmten Bandbreite, Bitrate, Framerate und dergleichen zugeordnet ist, auswählen. Die Clientdatei kann die Information der ausgewählten Playlist-Datei sodann nutzen, um die Mediensegmentdateien zum Streamen zu erhalten.
  • Ein Videodecodierer kann ein codiertes Texturvideo empfangen und das Video decodieren, um eine decodierte Sequenz von geordneten Kacheln zu erhalten. Die decodierte Sequenz von geordneten Kacheln entspricht der Sequenz von geordneten Kacheln 410, die von der Sequenzgenerierungsengine 408 generiert wird. Das Ausmaß, in dem die decodierte Sequenz von geordneten Kacheln zu der Sequenz von geordneten Kacheln 410 passt, hängt von der Codiereffizienz ab. Ein illustratives Beispiel für eine Videodecodiervorrichtung 1300 wird anhand 13 beschrieben.
  • Der Videodecodierer kann die decodierte Sequenz an ein Texturbildrekonstruktionssystem senden. 7 ist ein Blockdiagramm zur Darstellung eines Beispiels für ein Texturbildrekonstruktionssystem 700. Das Texturbildrekonstruktionssystem 700 kann in einer Clientvorrichtung (beispielsweise einer Rechenvorrichtung) beinhaltet sein. Beinhalten kann die Clientvorrichtung beispielsweise einen PC, einen Tabletcomputer, eine mobile Vorrichtung (beispielsweise ein zellenbasiertes Telefon, ein Smartphone, eine am Körper tragbare Vorrichtung oder dergleichen), ein Gaming- bzw. Spielesystem oder eine solche Konsole, einen Fernseher (beispielsweise einen mit einem Netzwerk verbundenen Fernseher) und/oder eine beliebige andere Rechenvorrichtung mit Ressourcenkapazitäten zum Durchführen der hier beschriebenen Techniken. Das Texturbildrekonstruktionssystem 700 weist verschiedene Komponenten auf, darunter eine Transformationsengine 726 (die optional ist, wie durch den in 7 gezeigten gepunkteten Umriss angegeben ist) und eine Kachelabbildungsengine 730. Die Komponenten des Texturbildrekonstruktionssystems 700 können elektronische Schaltungen oder andere elektronische Hardware beinhalten und/oder unter Nutzung derselben implementiert sein, wobei die elektronischen Schaltungen oder die andere elektronische Hardware eine oder mehrere programmierbare elektronische Schaltungen (beispielsweise Mikroprozessoren, grafische Verarbeitungseinheiten (GPUs), digitale Signalprozessoren (DSPs), zentrale Verarbeitungseinheiten (CPUs) und/oder andere geeignete elektronische Schaltungen) und/oder Computersoftware, Firmware oder beliebige Kombinationen hieraus beinhalten können und/oder unter Nutzung derselben implementiert sein können, um die verschiedenen hier beschriebenen Operationen durchzuführen.
  • Obwohl das Texturbildrekonstruktionssystem 700 derart gezeigt ist, dass es gewisse Komponenten beinhaltet, erschließt sich einem Durchschnittsfachmann, dass das Texturbildrekonstruktionssystem 700 auch mehr oder weniger als die in 7 gezeigten Komponenten beinhalten kann. Beinhalten kann das Texturbildsequenziersystem 400 in einigen Fällen beispielsweise eine oder mehrere Speichervorrichtungen (beispielsweise eine oder mehrere RAM-Komponenten (Random Access Memory), ROM-Komponenten (Read-Only Memory), Cache-Speicherkomponenten, Pufferkomponenten, Datenbankkomponenten und/oder andere Speichervorrichtungen), eine oder mehrere Verarbeitungsvorrichtungen (beispielsweise eine oder mehrere CPUs, GPUs und/oder andere Verarbeitungsvorrichtungen), eine oder mehrere drahtlose Schnittstellen (darunter beispielsweise einen oder mehrere Sender-Empfänger (transceiver) und einen Basisbandprozessor für jede drahtlose Schnittstelle) zur Durchführung von drahtlosen Kommunikationen, eine oder mehrere verdrahtete Schnittstellen (beispielsweise eine serielle Schnittstelle, so beispielsweise eine USB-Eingabe (Universal Serial Bus USB), einen Beleuchtungsverbinder und/oder eine andere verdrahtete Schnittstelle) zur Durchführung von Kommunikationen über eine oder mehrere festverdrahtete Verbindungen und/oder andere Komponenten, die in 7 nicht gezeigt sind.
  • Wie in 7 gezeigt ist, wird das codierte Texturvideo 720 von der Codiervorrichtung 412 für die Decodiervorrichtung 722 bereitgestellt, die den Texturvideobitstream decodiert, um die decodierte Sequenz von geordneten Kacheln 724 entsprechend der Sequenz von geordneten Kacheln 410, die von der Sequenzgenerierungsengine 408 generiert wird, zu erhalten. Das Texturbildrekonstruktionssystem 700 kann die Datendatei 728 erhalten, die von dem codierten Texturvideo bereitgestellt wird. Die Datendatei 728 kann Kontextdaten für die Kacheln des einen oder der mehreren Texturbilder 402 beinhalten. Eine Konfigurationsdatei kann beispielsweise für jede Kachel in der decodierten Sequenz von geordneten Kacheln 724 beinhaltet sein. Wie vorstehend bemerkt worden ist, kann die Kontextdatei (beispielsweise eine Konfigurationsdatei) für eine Kachel eines Texturbildes einen Kachelidentifizierer, eine Identifizierung eines Texturbildes, das der Kachel zugeordnet ist, einen Ort der Kachel innerhalb des Texturbildes, eine Angabe einer Transformationsfunktion, eine beliebige Kombination hieraus und/oder andere Kontextinformation beinhalten. Die Tabelle, die vorstehend anhand 6 erläutert worden ist, ist ein Beispiel für Kontextdaten (darunter eine Transformationsfunktion) für eine Kachel:
    nameTile (NameKachel) ImageTexture (Bildtextur) X_pos Y_pos Funktion
    Left_image (linkes_Bild) Schmetterling 0 0 (plein) einfach
    Right_image (rechtes_Bild) Schmetterling 150 0 horizontal_mirror (Horizontalspiegelung
  • Das Texturbildrekonstruktionssystem 700 kann das eine oder die mehreren Texturbilder 402 unter Nutzung von Information aus der Datendatei 728 rekonstruieren. Bei Implementierungen, bei denen eine Transformationsengine 726 beinhaltet ist, kann die Transformationsengine 726 beispielsweise bestimmen, ob eine Transformationsfunktion in der Datendatei 728 für eine gegebene Kachel vorhanden ist. Ist eine Transferfunktion bzw. Transformationsfunktion für die Kachel vorhanden, so kann die Transformationsengine 726 die Transformation auf die Kachel anwenden, um Pixel der Kachel zu modifizieren. Unter Nutzung des Beispiels von 6 und der vorstehenden Tabelle geben die Kontextdaten, die einer Kachel 604 zugeordnet sind, gegenüber der Transformationsengine 726 an, dass eine Horizontalspiegelungsfunktion (als „horizontal_mirror“ bezeichnet) auf die Pixel der Kachel 604 („Right image“) angewendet werden soll, bevor die Kachel 604 zum Rekonstruieren des Texturbildes 600 benutzt wird. Auf Grundlage der Angabe der Transformation in der Datendatei kann die Transformationsengine 726 die Transformation auf die entsprechende Kachel anwenden.
  • Die Kachelabbildungsengine 730 kann die Texturbilder 732 unter Nutzung der Information in der Datendatei 728 rekonstruieren. Für eine gegebene Kachel kann die Kachelabbildungsengine 730 den Kachelidentifizierer, die Identifizierung eines Texturbildes, das der Kachel zugeordnet ist, und den Ort der Kachel innerhalb des Texturbildes nutzen, um die Kachel am richtigen Ort relativ zu dem Texturbild, das der Kachel zugeordnet ist, anzuordnen. Die Kachelabbildungsengine 730 kann die Texturen rekonstruieren, indem sie die decodierten Kacheln geeignet zusammenfügt. Eine erste Kachel kann beispielsweise auf die obere, am weitesten linke Position in einem ersten Texturbild abgebildet werden, eine zweite Kachel kann neben der ersten Kachel platziert werden und so weiter, und dies auf Grundlage der Datendatei zur Angabe der Kacheln, die zu dem ersten Texturbild gehören, und der spezifischen Positionen der ersten, zweiten etc. Kacheln in dem ersten Texturbild. In einigen Fällen können die sich ergebenden Texturbilder 732 eine verlustbehaftete Version des ursprünglichen Satzes des einen oder der mehreren Texturbilder 402 sein, wobei der Verlust von den Einstellungen sowohl des FPS wie auch der Bitrate mit Bereitstellung für die Codiervorrichtung 412 abhängen kann.
  • 8 ist ein Diagramm zur Darstellung eines Beispiels für das Generieren, Codieren, Decodieren und Rekonstruieren mehrerer Texturbilder unter Nutzung der hier beschriebenen Techniken. Wie vorstehend beschrieben worden ist, können viele Texturen in einer 3D-Szene Ähnlichkeiten aufweisen, was beispielsweise bei mehreren holzbasierten Texturen in einer Szene im Wald der Fall ist. Ein Videocodierer kann die Ähnlichkeit zwischen n unabhängigen Texturen ausnutzen, um diese zu einem Video mit einer gewissen Anzahl von Frames (wobei die Frames die vorbeschriebenen Kacheln sind) mit einem tragbaren Kompromiss zwischen Rate und Verzerrung zu komprimieren. Wie in 8 gezeigt ist, kann ein codiertes Texturvideo 811 beispielsweise aus einem Satz von Texturbildern 802, 804 und 806 generiert werden. Bei einem illustrativen Beispiel können die Texturbilder 802, 804 und 806 unter Nutzung einer 3D-Multimedia-Anwendung wiedergegeben werden, indem die Texturbilder 802, 804 und 806 auf ein oder mehrere 3D-Gitter der 3D-Szene angewendet werden. Man beachte, dass die Kacheln, die von der Kachelungsengine 404 generiert werden, als „Frames“ bezeichnet werden, die für die Codiervorrichtung bereitgestellt werden.
  • Wie vorstehend beschrieben worden ist, kann die Kachelungsengine 404 Kacheln generieren, um eine Vergleichmäßigung der Frameauflösung zu erhalten. Der Satz von Texturen (beinhaltend die Texturbilder 802, 804, 806), die versendet werden sollen, um die 3D-Szene zu generieren, kann mit T bezeichnet werden. Wie gezeigt ist, weisen die Texturbilder 802, 804 und 806 in dem Satz T verschiedene Auflösungen auf, obwohl die Eingabeframes für die Codiervorrichtung dieselbe Auflösung aufweisen sollten. Die Kachelungsengine 404 kann die Eingabeframes vergleichmäßigen, indem sie jedes Texturbild in T zu Kacheln mit Einheitsgröße schneidet. Der Satz von Kacheln, die aus den Texturbildern 802, 804 und 806 generiert werden, kann mit T bezeichnet werden. Wie in 8 gezeigt ist, ist das Texturbild 802 in vier Kacheln A, B, C und D unterteilt, das Texturbild 804 ist in vier Kacheln A, B, C und D unterteilt, und das Texturbild 806 ist in zwei Kacheln A und B unterteilt. Der sich ergebende Satz von Kacheln 808 kann für die Sequenzgenerierungsengine 408 bereitgestellt werden
  • Die Sequenzgenerierungsengine 408 kann das Bildsequenzordnen, wie vorstehend beschrieben worden ist, durchführen. Alle Kacheln in T können beispielsweise auf Grundlage ihrer Ähnlichkeiten (unter Nutzung des ähnlichkeitsbasierten Ordnens), mit Blick auf Teilsequenzen (unter Nutzung des teilsequenzbasierten Ordnens), auf Grundlage des zufälligen Ordnens, einer beliebigen geeigneten Kombination hieraus und/oder einer anderen Technik des Ordnens sortiert werden. Beim ähnlichkeitsbasierten Ordnen kann di,j die Nichtähnlichkeit zwischen zwei unabhängigen texturgekachelten Bildern i und j in T bezeichnen. Je niedriger der Wert di,j ist, desto ähnlicher sind i und j zueinander. Das ähnlichkeitsbasierte Ordnen kann sicherstellen, dass aufeinanderfolgende Bilder in der Sequenz oder geordnete Kacheln zur Codierung eine hohe Ähnlichkeit aufweisen, damit der Videocodierer diese Ähnlichkeit ausnutzen und das Video effizient komprimieren kann. Bei einem illustrativen Beispiel erhält man die theoretische Optimallösung des ähnlichkeitsbasierten Ordnens, indem man das Problem der minimalen Reise eines Kaufmanns bei gegebener Abstandsmatrix D = {di,j, ∀i,j ∈T} berechnet. Die Lösung maximiert die Summe der Ähnlichkeiten zwischen aufeinanderfolgenden Bildern und beinhaltet alle texturgekachelten Bilder. Die Operation führt zu einer Sequenz von geordneten Kacheln 810 (mit S bezeichnet). Wie in 8 gezeigt ist, sind die Kacheln aus den verschiedenen Texturbildern 802, 804 und 806 innerhalb der Sequenz von geordneten Kacheln gemischt. Kachel A aus dem Texturbild 802 ist beispielsweise neben Kachel A aus dem Texturbild 804, da die Kacheln einen hohen Grad der Ähnlichkeit aufweisen. Wie vorstehend beschrieben worden ist, können andere Typen von Techniken des Ordnens zusätzlich zum ähnlichkeitsbasierten Ordnen oder alternativ hierzu eingesetzt werden.
  • Der Videocodierer nimmt die Sequenz von geordneten Kacheln 410 (S) als Eingabe (als ob S ein Satz von Eingabevideoframes oder Bildern wäre) und komprimiert die Sequenz von geordneten Kacheln 410 zu einem codierten Texturvideo 810 (zusammen mit der Datendatei 812, die einen Satz von Metadaten oder Kontextdaten beinhaltet, die die Rekonstruktion der Texturbilder ermöglichen). Wie vorstehend beschrieben worden ist, beinhalten Parameter, die ein Videocodierer gegebenenfalls benötigt, die Anzahl von Frames pro Sekunde (mit f bezeichnet) und die Zielvideobitrate (mit v bezeichnet). Die Kacheln weisen keine zeitliche Beziehung auf, sodass der Dienstbereitsteller einen beliebigen Wert für f frei wählen kann (je größer f ist, desto mehr texturgekachelte Bilder werden pro Zeiteinheit gesendet und desto kürzer ist die Zeit, die zum Versenden des gesamten Satzes von Texturen benötigt wird). Für einen gegebenen Parameter f ermöglicht die Videobitrate v Einstellungen der Qualität (je höher v ist, desto niedriger ist die Kompression und desto höher ist die Qualität der Bilder). Beide Parameter f und v ermöglichen, dass ein Dienstbereitsteller mehrere Versionen desselben Satzes von Texturen T mit mehreren Qualitäten und mehreren Versendeverzögerungen präpariert. Eine große Anzahl von Qualitäten ist auf die variierenden Bandbreitenbedingungen eines Clients abgestimmt, während mehrere Verzögerungen das Koordinieren der Versendung von Texturen auf Grundlage dessen, wann der Client sie benötigt, ermöglichen.
  • Die Clientvorrichtung kann das Texturvideo 811 und die Datendatei 812 erhalten. Die Clientvorrichtung kann das Video des Texturvideos 811 decodieren und eine Sequenz Σ von Videoframes (die die decodierte Sequenz der geordneten Kacheln 820 sind) extrahieren. Bei einigen Implementierungen kann die Operation des Decodierens von der grafischen Verarbeitungseinheit (GPU) der Clientvorrichtung durchgeführt werden. Da effiziente Videodecodierer in vielen Vorrichtungen implementiert sind, die für 3D-Anwendungen bestimmt sind, respektiert die hier beschriebene Lösung das Merkmal der Universalität eines Texturversendesystems. In einigen Fällen können, wie vorstehend beschrieben worden ist, eine oder mehrere Transformationsfunktionen (beispielsweise eine Inverstransformationsfunktion) auf die eine oder die mehreren decodierten Kacheln angewendet werden. Eine Transformationsfunktion kann in der Datendatei 812 für eine gegebene Kachel identifiziert werden.
  • Die Kachelabbildungengine 730 kann eine Texturrekonstruktion durchführen. Auf Grundlage der Datendatei im Zusammenhang mit den Videoframes (Kacheln) und den ursprünglichen Texturbildern 802, 804 und 806 rekonstruiert der Client beispielsweise die Texturbilder 822, 824 und 826, indem er die decodierten Frames in Σ geeignet zusammenfügt. Wie vorstehend bemerkt worden ist, kann der sich ergebende Satz von Texturen R eine verlustbehaftete Version des ursprünglichen Satzes T sein, wobei in diesem Fall der Verlust von den Einstellungen sowohl von f wie auch von v abhängen kann. Das Texturbild 822 ist die rekonstruierte Version des Texturbildes 802, das Texturbild 824 ist die rekonstruierte Version des Texturbildes 804, und das Texturbild 826 ist die rekonstruierte Version des Texturbildes 806.
  • Die Nutzung der hier beschriebenen Systeme und Techniken bietet verschiedene Vorteile. Der Texturbildcontent kann beispielsweise mit einer vorhersagbaren oder garantierten Versendezeit versendet werden. Eine derartige vorhersagbare Versendezeit kann beispielsweise dann wichtig sein, wenn Content ein Zeitlimit (beispielsweise ein Zeitlimit von 30 s) dafür setzt, alle Texturen einer gegebenen Szene zu versenden. Ein weiterer exemplarischer Vorteil der hier beschriebenen Systeme und Techniken liegt darin, dass die Texturbilddaten versendet werden können, während sie an Netzwerkänderungen angepasst werden, sodass eine Adaptivität (Anpassungsfähigkeit) mit Blick auf Beschränkungen bei der Bandbreite und den Vorrichtungen bereitgestellt wird. Ein weiteres Beispiel für einen Vorteil ist derart, dass die Notwendigkeit entfällt, neue Software und Geräte (beispielsweise einen HTTP-Server, eine CDN-Infrastruktur (Content Delivery Network CDN), Endnutzerclientvorrichtungen oder dergleichen) entlang der End-to-End-Versendekette zu installieren. Die hier beschriebenen Systeme und Techniken bieten zudem einen schnellen Zugriff auf einen Teilsatz von Texturbildern (indem sie beispielsweise nur gewisse Segmente für gewünschte Texturen herunterladen und decodieren).
  • Darüber hinaus ermöglichen die hier beschriebenen Systeme und Techniken, dass Texturbilder als Videosequenz codiert und versendet werden, anstatt dass sie unabhängig als einzelne Texturbilder oder als einzelne codierte Texturbilder versendet werden. Wie vorstehend beschrieben worden ist, wird, anstatt dass Texturbilder einzeln komprimiert und die Texturbilder unabhängig versendet werden, beispielsweise eine Sequenz von Texturen generiert und unter Nutzung von Videocodiertechniken komprimiert. Eine derartige Lösung ist gegenüber Systemen vorteilhaft, die jedes Texturbild einzeln komprimieren und einen Zugriff auf jede Textur, die unabhängig heruntergeladen werden soll, (beispielsweise in einer Bildkompressionsbibliothek) bereitstellen. Systeme, die Texturbilder einzeln codieren, erlauben keinen Einsatz des adaptiven Streamings für ein Video. Diese Systeme garantieren keine zeitgerechte Versendung der komprimierten Bilder und zwingen Clientvorrichtungen dazu, über die Kompressionsqualität eines jeden Bildes ohne Rücksicht auf die Konsequenzen, die die Wahl der Qualität für die Gesamtzeit des Herunterladens hat, zu entscheiden.
  • Ein Beispiel für eine Leistungsbewertung unter Nutzung der hier beschriebenen Techniken wird nunmehr beschrieben. Die Leistungsbewertung wurde unter Nutzung einer Szene durchgeführt, die qualitativ hochwertige Texturen und eine große Vielfalt von Typen von Texturen aufwies. Ein Satz von 145 Texturbildern, die 1,13 Gigabyte darstellten, wurde extrahiert. Eine Einheitskachelgröße von 1024x1024 wurde benutzt, da die Auflösung aller ursprünglichen Texturen ein Vielfaches von 1024 war. Es wurde das ähnlichkeitsbasierte Ordnen benutzt, bei dem die Nichtähnlichkeit zwischen jedem Paar von texturgekachelten Bildern unter Nutzung des mittleren absoluten Fehlers (Mean Absolute Error MAE) bestimmt wurde. Die Videokompression der Textursequenz wurde unter Nutzung einer HEVC-Software (High Efficiency Video Coding HEVC, hocheffizientes Videocodieren) aus der Iibx265-Bibliothek durchgeführt. Nach dem Videodecodieren wurde das Verhältnis des Spitzensignals zum Rauschen (Peak Signal to Noise Ratio PSNR) zwischen den ursprünglichen unkomprimierten Texturbildern und den rekonstruierten Bildern berechnet. Die Frames pro Sekunde f waren auf 10 FPS festgelegt, was zu einem Video mit einer Länge von 56 s führte. Die Zielvideobitrate v reichte von 2,5 Mbps bis 50 Mbps.
  • Um die Leistung der hier beschriebenen Techniken mit Techniken aus dem Stand der Technik zu vergleichen, wurden die Texturen unter Nutzung von sowohl jpeg wie auch webp aus der openCV-Bildbibliothek komprimiert. Der PSNR-Wert und die Rate wurden für beide Sätze von komprimierten Bildern gemessen. Die herkömmliche Ratenverzerrungskurve ist in dem in 11 dargestellten Graph 1100 gezeigt, wobei hier die y-Achse der durchschnittliche PSNR-Wert über alle Texturen in R hinweg (rekonstruierte Texturen) ist. Sogar ohne irgendeine zusätzliche Optimierung führen die hier beschriebenen Techniken zu einer besseren Kompressionsleistung als die webp-Bibliothek aus dem Stand der Technik und sind erheblich leistungsfähiger als jpeg. Die Videolösung ist bei niedrigen Bitraten (Hauptziel von webp) besser als bei webp, wobei die Kompression bei höheren Bitraten stärker anwächst und mehr als 5 dB für 0,4 bpp erreicht. Die hier beschriebenen Techniken bieten zudem einen weiteren Bereich von Medieneinstellungen hinsichtlich der Qualität (beispielsweise von 32 dB bis 49 dB) und Größe (beispielsweise von 17 MByte bis 328 MByte), was die Implementierung von adaptiven Streaminglösungen bei zeitgerechter Versendung aller Texturen ermöglicht.
  • Beispiele für Prozesse, die unter Nutzung der hier beschriebenen Techniken durchgeführt werden, werden nunmehr beschrieben. 9 ist ein Flussdiagramm zur Darstellung eines Beispiels für einen Prozess 900 des Generierens eines Videos aus einem oder mehreren Texturbildern unter Nutzung einer oder mehrerer der hier beschriebenen Techniken. Der Prozess 900 kann ein erstes Texturbild erhalten und das erste Texturbild verarbeiten. Bei Block 902 beinhaltet der Prozess 900 beispielsweise ein Unterteilen des ersten Texturbildes in eine erste Mehrzahl von Kacheln. Das erste Texturbild ist zur Anwendung auf wenigstens ein erstes dreidimensionales Gitter konfiguriert. Beinhalten kann das erste Texturbild beispielsweise ein diffuses Texturbild, ein Albedo-Texturbild, ein Normalentexturbild, ein Versetzungstexturbild, ein AO-Texturbild, ein Maskentexturbild, ein Rauheitstexturbild, ein Glanztexturbild oder einen beliebigen anderen Typ von Texturbild, der auf ein dreidimensionales Gitter angewendet werden kann, um zusätzliche Eigenschaften zu dem Gitter hinzuzufügen.
  • Bei Block 904 beinhaltet der Prozess 900 ein Sortieren der ersten Mehrzahl von Kacheln zu einer Sequenz von geordneten Kacheln. In einigen Fällen weist die erste Mehrzahl von Kacheln eine gleichmäßige Kachelgröße auf. In einigen Fällen wird die erste Mehrzahl von Kacheln zu der Sequenz von geordneten Kacheln derart sortiert, dass die Kompressionseffizienz maximiert wird. Die erste Mehrzahl von Kacheln kann beispielsweise auf Grundlage von Ähnlichkeiten (oder Nichtähnlichkeiten) zwischen der ersten Mehrzahl von Kacheln zu der Sequenz von geordneten Kacheln sortiert werden. Beinhalten kann der Prozess 900 bei einem illustrativen Beispiel ein Bestimmen von Ähnlichkeiten zwischen Paaren von Kacheln aus der ersten Mehrzahl von Kacheln und ein unter Nutzung der Ähnlichkeiten zwischen den Paaren von Kacheln erfolgendes Bestimmen der Sequenz von geordneten Kacheln auf Grundlage dessen, dass die Sequenz eine Summe von Nichtähnlichkeiten zwischen aufeinanderfolgenden Kacheln in der Sequenz von geordneten Kacheln minimiert. Bei einem illustrativen Beispiel kann das Ordnen der Kacheln zu der Sequenz von geordneten Kacheln als Problem des Reisenden Kaufmanns modelliert werden. Das Problem des Reisenden Kaufmanns kann unter Nutzung von Lösungen, so beispielsweise der dynamischen Programmierung, gelöst werden, die die Ähnlichkeiten (oder Nichtähnlichkeiten) zwischen den Paaren von Kacheln berücksichtigen, um die Sequenz von geordneten Kacheln zu bestimmen. Andere Techniken des Ordnens können ebenfalls benutzt werden, so beispielsweise die Ungarische Methode, ein Zuweisungsproblem oder dergleichen. In einigen Fällen ist die erste Mehrzahl von Kacheln zu der Sequenz von geordneten Kacheln in einer Ordnung sortiert, die eine Anzahl von Videosegmenten, die heruntergeladen werden müssen, um ein erstes Texturbild zu erhalten, minimiert. Wie vorstehend anhand 5D und 5E beschrieben worden ist, kann die Sequenz von geordneten Kacheln beispielsweise eine erste Teilsequenz und eine zweite Teilsequenz beinhalten. Die erste Teilsequenz kann einen ersten Satz von Kacheln aus der ersten Mehrzahl von Kacheln beinhalten, während die zweite Teilsequenz einen zweiten Satz von Kacheln aus der ersten Mehrzahl von Kacheln beinhalten kann.
  • Bei Block 906 beinhaltet der Prozess 900 ein Bereitstellen der Sequenz von geordneten Kacheln zum Generieren eines codierten Videos. Das Generieren des codierten Videos beinhaltet ein Codieren der ersten Mehrzahl von Kacheln auf Grundlage der Sequenz von geordneten Kacheln.
  • Bei einigen Beispielen können mehrere Texturbilder unter Nutzung des Prozesses 900 verarbeitet werden. So kann beispielsweise ein zweites Texturbild erhalten werden. Das zweite Texturbild kann zur Anwendung auf wenigstens eines von dem ersten dreidimensionalen Gitter oder einem zweiten dreidimensionalen Gitter konfiguriert sein. Beinhalten kann das zweite Texturbild beispielsweise ein diffuses Texturbild, ein Albedo-Texturbild, ein Normalentexturbild, ein Versetzungstexturbild, ein AO-Texturbild, ein Maskentexturbild, ein Rauheitstexturbild, ein Glanztexturbild oder einen beliebigen anderen Typ von Texturbild, der auf ein dreidimensionales Gitter angewendet werden kann, um detaillierte Eigenschaften zu dem Gitter hinzuzufügen. Der Prozess 900 kann ein Unterteilen des zweiten Texturbildes in eine zweite Mehrzahl von Kacheln beinhalten. Das bei Block 904 durchgeführte Sortieren kann ein Sortieren der ersten Mehrzahl von Kacheln und der zweiten Mehrzahl von Kacheln zu der Sequenz geordneten Kacheln beinhalten. Das Generieren des codierten Videos kann ein Codieren der ersten Mehrzahl von Kacheln und der zweiten Mehrzahl von Kacheln auf Grundlage der Sequenz von geordneten Kacheln beinhalten.
  • Im Gegensatz zu typischen Videoframes, die von einem Videocodierer codiert werden, sind das erste Texturbild und das zweite Texturbild zeitlich unabhängig, wobei jede Kachel der ersten Mehrzahl von Kacheln zeitlich unabhängig von anderen Kacheln der ersten Mehrzahl von Kacheln ist und jede Kachel der zweiten Mehrzahl von Kacheln zeitlich unabhängig von anderen Kacheln der zweiten Mehrzahl von Kacheln ist. In einigen Fällen sind eine erste Auflösung des ersten Texturbildes und eine zweite Auflösung des zweiten Texturbildes verschiedene Auflösungen (beispielsweise ähnlich zu den Texturbildern 500A und 500B), wobei die erste Mehrzahl von Kacheln und die zweite Mehrzahl von Kacheln eine gleichmäßige Kachelgröße aufweisen. Die gleichmäßige Kachelgröße kann eine beliebige geeignete Größe, so beispielsweise 256×128, 612×256, oder eine beliebige andere Größe aufweisen.
  • Bei einigen Beispielen wird die erste Mehrzahl von Kacheln zu der Sequenz von geordneten Kacheln derart sortiert, dass die Kompressionseffizienz maximiert wird. Die erste Mehrzahl von Kacheln und die zweite Mehrzahl von Kacheln können auf Grundlage von Ähnlichkeiten (oder Nichtähnlichkeiten) zwischen der ersten Mehrzahl von Kacheln und der zweiten Mehrzahl von Kacheln zu der Sequenz von geordneten Kacheln sortiert werden. Beinhalten kann der Prozess 900 bei einem illustrativen Beispiel ein Bestimmen von Ähnlichkeiten zwischen Paaren von Kacheln aus der ersten Mehrzahl von Kacheln und der zweiten Mehrzahl von Kacheln und ein unter Nutzung der Ähnlichkeiten zwischen den Paaren von Kacheln erfolgendes Bestimmen der Sequenz von geordneten Kacheln auf Grundlage dessen, dass die Sequenz eine Summe von Nichtähnlichkeiten zwischen aufeinanderfolgenden Kacheln in der Sequenz von geordneten Kacheln minimiert. Wie vorstehend bemerkt worden ist, kann das Ordnen der Kacheln auf Grundlage von Ähnlichkeiten als Problem des Reisenden Kaufmanns oder als Zuweisungsproblem modelliert werden, kann unter Nutzung der Ungarischen Methode durchgeführt werden und/oder kann auf Grundlage eines beliebigen anderen geeigneten Verfahrens durchgeführt werden.
  • Bei einigen Implementierungen sind die erste Mehrzahl von Kacheln und die zweite Mehrzahl von Kacheln zu der Sequenz von geordneten Kacheln in einer Ordnung sortiert, die eine Anzahl von Videosegmenten, die heruntergeladen werden müssen, um das erste Texturbild und das zweite Texturbild zu erhalten, minimiert. Bei einigen Beispielen beinhaltet die Sequenz von geordneten Kacheln eine erste Teilsequenz und eine zweite Teilsequenz. Die erste Teilsequenz kann beispielsweise einen ersten Satz von Kacheln aus der ersten Mehrzahl von Kacheln beinhalten, während die zweite Teilsequenz einen zweiten Satz von Kacheln aus der ersten Mehrzahl von Kacheln beinhalten kann. In einigen Fällen beinhaltet die Sequenz von geordneten Kacheln eine dritte Teilsequenz und eine vierte Teilsequenz. Die dritte Teilsequenz kann beispielsweise einen ersten Satz von Kacheln aus der zweiten Mehrzahl von Kacheln beinhalten, während die vierte Teilsequenz einen zweiten Satz von Kacheln aus der zweiten Mehrzahl von Kacheln beinhalten kann. Teilsequenzen für andere Texturbildkacheln können ebenfalls bestimmt werden, wie anhand 5D und 5E beschrieben worden ist.
  • Wie nachstehend noch detaillierter anhand der Codiervorrichtung 1200 (12) und der Decodiervorrichtung 1300 (13) beschrieben wird, kann das codierte Video dadurch erhalten werden, dass Ähnlichkeiten zwischen Kacheln in der Sequenz von geordneten Kacheln ausgenutzt werden. Bei einigen Beispielen kann ein Bewegungsausgleich (beispielsweise unter Nutzung einer Intervorhersage) durchgeführt werden, und in einigen Fällen kann eine Intravorhersage zum Codieren der Kacheln durchgeführt werden. Das codierte Video kann auf Grundlage einer Intervorhersage einer ersten Kachel unter Nutzung einer zweiten Kachel als Referenzkachel zur Vorhersage generiert werden. Wenigstens ein Abschnitt der Referenzkachel kann durch Generieren eines Bewegungsvektors von der ersten Kachel zu der zweiten Kachel identifiziert werden. Unter Nutzung des blockbasierten Codierens kann ein Bewegungsvektor beispielsweise von einem Block der ersten Kachel zu einem Referenzblock der zweiten Kachel reichen. Ein Block kann ein Makroblock (Macroblock MB), eine Codierbaumeinheit (Coding Tree Unit CTU), eine Codiereinheit (Coding Unit CU), eine Vorhersageeinheit (Prediction Unit PU) oder eine andere blockbasierte Partition eines Frames oder Bildes sein. In einigen Fällen kann der Bewegungsvektor von der zweiten Kachel zu der ersten Kachel reichen. Unter Nutzung des blockbasierten Codierens kann ein Bewegungsvektor beispielsweise von einem Referenzblock der zweiten Kachel zu einem Block der ersten Kachel reichen. In einigen Fällen können mehrere Bewegungsvektoren generiert werden, wobei jeder Bewegungsvektor zu einer anderen Referenzkachel (oder einem Block der Referenzkachel) weist. Bei einigen Beispielen sind die erste Kachel und die zweite Kachel aus dem ersten Texturbild. Bei einigen Beispielen ist die erste Kachel aus dem ersten Texturbild, während die zweite Kachel aus dem zweiten Texturbild ist. In einigen Fällen kann die erste Kachel einer Teilsequenz unter Nutzung einer Intravorhersage codiert werden, während andere Kacheln einer Teilsequenz unter Nutzung einer Intervorhersage codiert werden können.
  • Bei einigen Implementierungen wird eine Mehrzahl von codierten Videos für die Sequenz von geordneten Kacheln generiert. Bei einem Beispiel kann ein erstes codiertes Video der Mehrzahl von codierten Videos eine andere Bitrate, eine andere Framerate und/oder eine andere Segmentgröße (oder eine Kombination hieraus) im Vergleich zu einem zweiten codierten Video der Mehrzahl von codierten Videos aufweisen. Die beiden Videos können als Optionen für eine Clientvorrichtung in Abhängigkeit von Netzwerkbedingungen und Einschränkungen (beispielsweise Rechen- und/oder Speichereinschränkungen) der Clientvorrichtung bereitgestellt werden.
  • Der Prozess 900 kann zudem ein Übertragen des codierten Videos zum Decodieren durch eine Clientvorrichtung beinhalten. In einigen Fällen kann der Prozess 900 eine Transformationsfunktion auf eine oder mehrere Kacheln der ersten Mehrzahl von Kacheln anwenden. Wie vorstehend beschrieben worden ist, kann eine Transformationsfunktion zum Modifizieren von Pixeln der einen oder mehreren Kacheln (beispielsweise durch Spiegeln einer Kachel, Verzerren oder Entzerren einer Kachel und dergleichen) angewendet werden. Bei einigen Beispielen erhöht das Modifizieren der Pixel der einen oder mehreren Kacheln unter Nutzung der Transformationsfunktion die Codiereffizienz beim Codieren der einen oder mehreren Kacheln. Das Modifizieren der Pixel der einen oder mehreren Kacheln unter Nutzung der Transformationsfunktion kann beispielsweise die Ähnlichkeit zwischen den Pixeln der einen oder mehreren Kacheln und anderen Pixeln der einen oder mehreren Kacheln erhöhen
  • Bei einigen Beispielen kann der Prozess 900 ein Generieren einer Datendatei, die Kontextdaten für die erste Mehrzahl von Kacheln beinhaltet, beinhalten. Die Kontextdaten für eine erste Kachel können einen Kachelidentifizierer, eine Identifizierung eines Texturbildes, das der ersten Kachel zugeordnet ist, einen Ort der ersten Kachel innerhalb des Texturbildes und/oder eine Angabe einer Transformationsfunktion oder eine beliebige Kombination hieraus beinhalten.
  • 10 ist ein Flussdiagramm zur Darstellung eines Beispiels für einen Prozess 1000 des Rekonstruierens eines oder mehrerer Texturbilder aus einem Video unter Nutzung einer oder mehrerer der hier beschriebenen Techniken. Bei Block 1002 beinhaltet der Prozess 1000 ein Erhalten wenigstens eines Abschnittes eines decodierten Videos, das eine erste Mehrzahl von Kacheln beinhaltet, die zu einer Sequenz von geordneten Kacheln sortiert sind. Ein Decodierer kann beispielsweise ein codiertes Texturvideo erhalten und das codierte Texturvideo decodieren, um wenigstens den Abschnitt des decodierten Videos zu generieren. Wenigstens der Abschnitt des decodierten Videos kann eine oder mehrere Teilsequenzen des codierten Texturvideos beinhalten. Die erste Mehrzahl von Kacheln ist einem ersten Texturbild zugeordnet, das zur Anwendung auf ein erstes dreidimensionales Gitter konfiguriert ist. Beinhalten kann das erste Texturbild beispielsweise ein diffuses Texturbild, ein Albedo-Texturbild, ein Normalentexturbild, ein Versetzungstexturbild, ein AO-Texturbild, ein Maskentexturbild, ein Rauheitstexturbild, ein Glanztexturbild oder einen beliebigen anderen Typ von Texturbild, der auf ein dreidimensionales Gitter angewendet werden kann, um detaillierte Eigenschaften zu dem Gitter hinzuzufügen. Bei einigen Beispielen weist die erste Mehrzahl von Kacheln eine gleichmäßige Kachelgröße auf. In einigen Fällen ist die erste Mehrzahl von Kacheln zu der Sequenz von geordneten Kacheln derart sortiert, dass die Kompressionseffizienz maximiert wird. Die erste Mehrzahl von Kacheln kann zu der Sequenz von geordneten Kacheln auf Grundlage von Ähnlichkeiten zwischen der ersten Mehrzahl von Kacheln sortiert werden.
  • Bei einigen Aspekten ist die erste Mehrzahl von Kacheln zu der Sequenz von geordneten Kacheln in einer Ordnung sortiert, die eine Anzahl von Videosegmenten, die heruntergeladen werden müssen, um das erste Texturbild zu erhalten, minimiert. Wie vorstehend anhand 5D und 5E beschrieben worden ist, kann die Sequenz von geordneten Kacheln beispielsweise eine erste Teilsequenz und eine zweite Teilsequenz beinhalten. Die erste Teilsequenz kann einen ersten Satz von Kacheln aus der ersten Mehrzahl von Kacheln beinhalten, während die zweite Teilsequenz einen zweiten Satz von Kacheln aus der ersten Mehrzahl von Kacheln beinhalten kann.
  • In einigen Fällen kann wenigstens der Abschnitt des decodierten Videos Kacheln, die mehreren Texturbildern zugeordnet sind, beinhalten. Wenigstens der Abschnitt des decodierten Videos kann zudem beispielsweise eine zweite Mehrzahl von Kacheln beinhalten. Die zweite Mehrzahl von Kacheln ist einem zweiten Texturbild zugeordnet, das zur Anwendung auf wenigstens eines von dem ersten dreidimensionalen Gitter oder einem zweiten dreidimensionalen Gitter konfiguriert ist. Beinhalten kann das zweite Texturbild beispielsweise ein diffuses Texturbild, ein Albedo-Texturbild, ein Normalentexturbild, ein Versetzungstexturbild, ein AO-Texturbild, ein Maskentexturbild, ein Rauheitstexturbild, ein Glanztexturbild oder einen beliebigen anderen Typ von Texturbild, der auf ein dreidimensionales Gitter angewendet werden kann, um detaillierte Eigenschaften zu dem Gitter hinzuzufügen. In einigen Fällen sind eine erste Auflösung des ersten Texturbildes und eine zweite Auflösung des zweiten Texturbildes verschiedene Auflösungen, wobei die erste Mehrzahl von Kacheln und die zweite Mehrzahl von Kacheln eine gleichmäßige Kachelgröße aufweisen. Im Gegensatz zu typischen Videos sind das erste Texturbild und das zweite Texturbild zeitlich unabhängig, wobei jede Kachel der ersten Mehrzahl von Kacheln zeitlich unabhängig von anderen Kacheln der ersten Mehrzahl von Kacheln ist und wobei jede Kachel der zweiten Mehrzahl von Kacheln zeitlich unabhängig von anderen Kacheln der zweiten Mehrzahl von Kacheln ist.
  • Bei einigen Implementierungen sind die erste Mehrzahl von Kacheln und die zweite Mehrzahl von Kacheln zu der Sequenz von geordneten Kacheln in einer Ordnung sortiert, die eine Anzahl von Videosegmenten, die heruntergeladen werden müssen, um das erste Texturbild und das zweite Texturbild zu erhalten, minimiert. Bei einigen Beispielen beinhaltet die Sequenz von geordneten Kacheln eine erste Teilsequenz und eine zweite Teilsequenz. Die erste Teilsequenz kann beispielsweise einen ersten Satz von Kacheln aus der ersten Mehrzahl von Kacheln beinhalten, während die zweite Teilsequenz einen zweiten Satz von Kacheln aus der ersten Mehrzahl von Kacheln beinhalten kann. In einigen Fällen beinhaltet die Sequenz von geordneten Kacheln eine dritte Teilsequenz und eine vierte Teilsequenz. Die dritte Teilsequenz kann beispielsweise einen ersten Satz von Kacheln aus der zweiten Mehrzahl von Kacheln beinhalten, während die vierte Teilsequenz einen zweiten Satz von Kacheln aus der zweiten Mehrzahl von Kacheln beinhalten kann. Teilsequenzen für andere Texturbildkacheln können ebenfalls bestimmt werden, wie anhand 5D und 5E beschrieben worden ist.
  • Wie nachstehend anhand der Codiervorrichtung 1200 (12) und der Decodiervorrichtung 1300 (13) noch detaillierter beschrieben wird, kann das decodierte Video erhalten werden, indem Ähnlichkeiten zwischen Kacheln in der Sequenz von geordneten Kacheln ausgenutzt werden. Bei einigen Beispielen kann ein Bewegungsausgleich (unter Nutzung einer Intervorhersage) und in einigen Fällen eine Intravorhersage durchgeführt werden, um die Kacheln zu codieren. Wenigstens der Abschnitt des decodierten Videos kann auf Grundlage einer Intervorhersage einer ersten Kachel unter Nutzung einer zweiten Kachel als Referenzkachel generiert werden. Wenigstens ein Abschnitt der Referenzkachel kann unter Nutzung eines Bewegungsvektors von der ersten Kachel zu der zweiten Kachel identifiziert werden. Unter Nutzung des blockbasierten Codierens kann ein Bewegungsvektor beispielsweise von einem Block der ersten Kachel zu einem Referenzblock der zweiten Kachel reichen. In einigen Fällen kann der Bewegungsvektor von der zweiten Kachel zu der ersten Kachel reichen. Unter Nutzung des blockbasierten Codierens kann beispielsweise ein Bewegungsvektor von einem Referenzblock der zweiten Kachel zu einem Block der ersten Kachel reichen. In einigen Fällen können mehrere Bewegungsvektoren generiert werden, wobei jeder Bewegungsvektor zu einer anderen Referenzkachel (oder einem Block der Referenzkachel) weist. In einigen Fällen sind die erste Kachel und die zweite Kachel aus dem ersten Texturbild. In einigen Fällen ist die erste Kachel aus dem ersten Texturbild, während die zweite Kachel aus einem zweiten Texturbild ist.
  • Bei einigen Aspekten wird eine Mehrzahl von codierten Videos (beispielsweise Darstellungen, wie vorstehend beschrieben worden ist) für die Sequenz von geordneten Kacheln generiert. Bei einem Beispiel kann ein erstes codiertes Video der Mehrzahl von codierten Videos eine andere Bitrate, eine andere Framerate und/oder eine andere Segmentgröße (oder eine beliebige Kombination hieraus) im Vergleich zu einem zweiten codierten Video der Mehrzahl von codierten Videos aufweisen. Der Prozess 1000 kann eines der Videos als Option zum Herunterladen und Decodieren auf Grundlage von Netzwerkbedingungen und Beschränkungen (beispielsweise Rechen- und/oder Speicherbeschränkungen) der Clientvorrichtung auswählen. Beinhalten kann der Prozess 1000 beispielsweise ein über ein Netzwerk erfolgendes Empfangen von wenigstens einem von einem Abschnitt des ersten codierten Videos oder einem Abschnitt des zweiten codierten Videos auf Grundlage von wenigstens einer oder mehreren Netzwerkbedingungen, die dem Netzwerk zugeordnet sind. Das erste codierte Video kann auf Grundlage der wenigstens einen oder der mehreren Netzwerkbedingungen, die dem Netzwerk zugeordnet sind, ausgewählt werden. In einigen Fällen wird wenigstens einer von dem Abschnitt des ersten codierten Videos oder dem Abschnitt des zweiten codierten Videos des Weiteren auf Grundlage von physischen bzw. physikalischen Ressourcen einer Clientvorrichtung, auf Grundlage einer Anwendung der Clientvorrichtung, einer Kombination hieraus oder auf Grundlage anderer Faktoren empfangen. Das erste codierte Video kann des Weiteren beispielsweise auf Grundlage der physischen bzw. physikalischen Ressourcen einer Clientvorrichtung und einer Anwendung der Clientvorrichtung (beispielsweise einer Gaming- bzw. Spieleanwendung, einer Filmanwendung oder dergleichen) ausgewählt werden
  • Bei Block 1004 beinhaltet der Prozess 1000 ein Erhalten einer Datendatei, die wenigstens dem Abschnitt des decodierten Videos zugeordnet ist. Die Datendatei beinhaltet Kontextdaten, die die erste Mehrzahl von Kacheln auf das erste Texturbild abbilden. Die Kontextdaten für eine Kachel der ersten Mehrzahl von Kacheln kann beispielsweise einen Kachelidentifizierer, eine Identifizierung eines Texturbildes, das der Kachel zugeordnet ist, einen Ort der Kachel innerhalb des Texturbildes und/oder eine Angabe einer Transformationsfunktion oder eine beliebige Kombination hieraus beinhalten. Die Transformationsfunktion ist dafür konfiguriert, Pixel einer oder mehrerer Kacheln der ersten Mehrzahl von Kacheln zu modifizieren. Der Prozess 1000 kann beispielsweise ein Anwenden der Inverstransformationsfunktion auf die Pixel der Kachel der ersten Mehrzahl von Kacheln beinhalten. Diese Inverstransformationsfunktion kann eine Inverse der Transformationsfunktion, die in der Datendatei für die Kachel angegeben ist, beinhalten.
  • Bei Block 1006 beinhaltet der Prozess 1000 ein Rekonstruieren des ersten Texturbildes auf Grundlage der Kontextdaten, die die erste Mehrzahl von Kacheln auf das erste Texturbild abbilden. Das erste Texturbild kann beispielsweise rekonstruiert werden, indem die decodierten Kacheln entsprechend der durch die Datendatei bereitgestellten Abbildung zusammengefügt werden.
  • Bei einigen Beispielen können die Prozesse 900 und 1000 von einer Rechenvorrichtung oder einer Einrichtung, so beispielsweise einer Rechenvorrichtung mit der Rechenvorrichtungsarchitektur 1400, die in 14 gezeigt ist, durchgeführt werden. Bei einem Beispiel kann der Prozess 900 von einer Rechenvorrichtung mit der Rechenvorrichtungsarchitektur 1400, die das Texturbildsequenziersystem 400 implementiert, durchgeführt werden. Bei einem weiteren Beispiel kann der Prozess 1000 von einer Rechenvorrichtung mit der Rechenvorrichtungsarchitektur 1400, die das Texturbildrekonstruktionssystem 700 implementiert, durchgeführt werden. Beinhalten kann die Rechenvorrichtung zum Durchführen des Prozesses 900 und/oder des Prozesses 1000 eine beliebige geeignete Vorrichtung, so beispielsweise einen PC, einen Tabletcomputer, eine Mobilvorrichtung (beispielsweise ein zellenbasiertes Telefon, ein Smartphone, eine am Körper tragbare Vorrichtung oder dergleichen), ein Gaming- bzw. Spielesystem oder eine solche Konsole, einen Fernseher (beispielsweise einen mit einem Netzwerk verbundenen Fernseher), einen Server und/oder eine beliebige andere Rechenvorrichtung mit Ressourcenkapazitäten zum Durchführen des Prozesses 1500. In einigen Fällen können die Rechenvorrichtung oder die Einrichtung verschiedene Komponenten beinhalten, so beispielsweise eine oder mehrere Eingabevorrichtungen, einen oder mehrere Prozessoren, einen oder mehrere Mikroprozessoren, einen oder mehrere Mikrocomputer, eine oder mehrere Ausgabevorrichtungen und/oder eine andere Komponente, die dafür konfiguriert ist, die Schritte der Prozesse 900 und 1000 auszuführen. Beinhalten kann die Rechenvorrichtung des Weiteren eine Netzwerkschnittstelle, die dafür konfiguriert ist, die Daten zu kommunizieren und/oder zu empfangen. Die Netzwerkschnittstelle kann dafür konfiguriert sein, IP-basierte (Internet Protocol IP) Daten oder einen anderen Typ von Daten zu kommunizieren und/oder zu empfangen. Bei einigen Beispielen kann die Rechenvorrichtung oder die Einrichtung eine Anzeige zum Anzeigen von 3D-Content oder anderem geeigneten Content beinhalten.
  • Die Komponenten der Rechenvorrichtung können in Schaltkreisen implementiert sein. Die Komponenten können beispielsweise elektronische Schaltungen oder andere elektronische Hardware beinhalten und/oder unter Nutzung derselben implementiert sein, wobei die elektronischen Schaltungen oder die andere elektronische Hardware eine oder mehrere programmierbare elektronische Schaltungen (beispielsweise Mikroprozessoren, Grafikverarbeitungseinheiten (GPUs), digitale Signalprozessoren (DSPs), zentrale Verarbeitungseinheiten (CPUs) und/oder andere geeignete elektronische Schaltungen) beinhalten kann, und/oder können Computersoftware, Firmware oder eine beliebige Kombination hieraus beinhalten und/oder unter Nutzung derselben implementiert sein, um die verschiedenen hier beschriebenen Operationen durchzuführen. Beinhalten kann die Rechenvorrichtung des Weiteren eine Anzeige (als Beispiel für die Ausgabevorrichtung oder zusätzlich zur Ausgabevorrichtung), eine Netzwerkschnittstelle, die dafür konfiguriert ist, die Daten zu kommunizieren und/oder zu empfangen, eine beliebige Kombination hieraus und/oder eine andere Komponente / andere Komponenten. Die Netzwerkschnittstelle kann dafür konfiguriert sein, IP-basierte Daten (Internet Protocol IP) oder einen anderen Typ von Daten zu kommunizieren und/oder zu empfangen.
  • Die Prozesse 900 und 1000 sind als logische Flussdiagramme dargestellt, deren Betrieb eine Sequenz von Operationen darstellt, die in Hardware, Computeranweisungen oder einer Kombination hieraus implementiert sein können. Im Zusammenhang mit Computeranweisungen stellen die Operationen computerausführbare Anweisungen dar, die auf einem oder mehreren computerlesbaren Speichermedien gespeichert sind, die bei Ausführung durch einen oder mehrere Prozessoren die aufgeführten Operationen durchführen. Im Allgemeinen beinhalten computerausführbare Anweisungen Routinen, Programme, Objekte, Komponenten, Datenstrukturen und dergleichen, die bestimmte Funktionen übernehmen oder bestimmte Datentypen implementieren. Die Ordnung bzw. Reihenfolge, in der die Operationen hier beschrieben sind, soll nicht im Sinne einer Beschränkung verstanden werden; vielmehr kann eine beliebige Anzahl der beschriebenen Operationen in einer beliebigen Ordnung bzw. Reihenfolge und/oder parallel zur Implementierung der Prozesse kombiniert werden.
  • Zusätzlich können die Prozesse 900 und 1000 unter Steuerung bzw. Regelung eines oder mehrerer Computersysteme, die mit ausführbaren Anweisungen konfiguriert sind, durchgeführt werden und können als Code (beispielsweise ausführbare Anweisungen, ein oder mehrere Computerprogramme oder eine oder mehrere Anwendungen), der kollektiv auf einem oder mehreren Prozessoren ausgeführt wird, durch Hardware oder Kombinationen hieraus implementiert sein. Wie vorstehend bemerkt worden ist, kann der Code auf einem computerlesbaren oder maschinenlesbaren Speichermedium gespeichert sein, und zwar beispielsweise in Form eines Computerprogramms, das eine Mehrzahl von Anweisungen umfasst, die von einem oder mehreren Prozessoren ausführbar sind. Das computerlesbare oder maschinenlesbare Speichermedium kann nichttemporär sein.
  • 12 ist ein Blockdiagramm zur Darstellung einer exemplarischen Codiervorrichtung 1200, die dafür benutzt werden kann, die Sequenz von geordneten Kacheln 1250 zu einem codierten Texturvideo 1273 zu codieren. Die Codiervorrichtung 1200 kann die Sequenz von geordneten Kacheln wie auch beliebige andere Videoframes codieren. Die Codiervorrichtung 1200 kann beispielsweise eine Intravorhersagecodierung und eine Bewegungsausgleichscodierung (beispielsweise unter Nutzung einer Intervorhersage) der Videoblöcke 1253 innerhalb von Videoausschnitten (video slices) durchführen. Die Videoblöcke 1253 und die Videoausschnitte werden aus der Sequenz von geordneten Kacheln, die für die Codiervorrichtung 1200 bereitgestellt werden, generiert. In einigen Fällen wird eine Intravorhersage für eine erste Kachel einer Teilsequenz durchgeführt, und es kann ein Bewegungsausgleich (beispielsweise unter Nutzung einer Intervorhersage) für alle anderen Kacheln der Teilsequenz durchgeführt werden. Die Intravorhersage beruht wenigstens teilweise auf einer räumlichen Vorhersage, um die räumliche Redundanz innerhalb eines gegebenen Videoframes oder Bildes zu verringern oder zu entfernen. Die Intervorhersage beruht wenigstens teilweise auf einer zeitlichen Vorhersage, um die zeitliche Redundanz innerhalb benachbarter oder umgebender Frames einer Videosequenz zu verringern oder zu entfernen. Der Intramodus (I-Modus) kann einen beliebigen von mehreren räumlich basierten Kompressionsmodi betreffen. Intermodi, so beispielsweise die unidirektionale Vorhersage (P-Modus) oder die Bi-Vorhersage (B-Modus), können einen beliebigen von mehreren zeitlich basierten Kompressionsmodi betreffen. Die exemplarischen Codier- und Decodierprozesse, die von der Codiervorrichtung 1200 und der Decodiervorrichtung 1300 durchgeführt werden, beruhen auf dem hocheffizienten Videocodieren HEVC (High Efficiency Video Coding). Einem Durchschnittsfachmann erschließt sich, dass die Codier- und Decodier-Techniken, die auf die Sequenz von geordneten Kacheln angewendet werden, auf einem beliebigen Typ von Videocodierung beruhen können. Beruhen können weitere illustrative Beispiele für Videocodiertechniken auf ITU-T H.261 (ISO/IEC MPEG-1 Visual), ITU-T H.262 (ISO/IEC MPEG-2 Visual), ITU-T H.263 (ISO/IEC MPEG-4 Visual), ITU-T H.264 (ISO/IEC MPEG-4 AVC), darunter die AVC-Erweiterungen Scalable Video Coding (SVC) und Multiview Video Coding (MVC), Versatile Video Coding (VVC) und/oder einen anderen Videocodierstandard, der gerade jetzt oder in Zukunft noch entwickelt wird.
  • Die Codiervorrichtung 1200 beinhaltet eine Partitionierengine 1252, eine Vorhersageverarbeitungsengine 1254, eine Filterengine 1270, einen Bildspeicher 1272, eine Restgenerierungsengine 1256, eine Transformationsverarbeitungsengine 1258, eine Quantisierungsengine 1260 und eine Entropiecodierengine 1262. Die Vorhersageverarbeitungsengine 54 kann eine Bewegungsschätzungsengine, eine Bewegungsausgleichsengine und eine Intravorhersageverarbeitungsengine beinhalten. Zur Videoblockrekonstruktion beinhaltet die Codiervorrichtung 1200 zudem eine Inversquantisierungsengine 1264, eine Inverstransformationsverarbeitungsengine 1266 und eine Blockrekonstruktionsengine 1268. Die Filterengine 1270 kann einen oder mehrere Schleifenfilter (loop filter) darstellen.
  • Wie in 12 gezeigt ist, empfängt die Codiervorrichtung 1200 eine Sequenz von geordneten Kacheln (als Videodaten), und die Partitionierengine 1252 partitioniert die Daten zu Videoblöcken 1253. Das Partitionieren kann zudem ein Partitionieren in Ausschnitte (slices), Ausschnittssegmente, Kacheln oder andere größere Engines wie auch ein Videoblockpartitionieren (beispielsweise entsprechend einer QuadTree-Struktur von LCUs und CUs) beinhalten. Die Codiervorrichtung 1200 illustriert allgemein die Komponenten, die die Videoblöcke 1253 innerhalb eines Videoausschnittes, der codiert werden soll, codieren. Ein Ausschnitt kann in mehrere Videoblöcke 1253 unterteilt werden. Die Vorhersageverarbeitungsengine 1254 kann einen aus einer Mehrzahl von möglichen Codiermodi auswählen, so beispielsweise einen aus einer Mehrzahl von Intravorhersagecodiermodi oder einen aus einer Mehrzahl von Intervorhersagecodiermodi, und zwar für den aktuellen Videoblock auf Grundlage von Fehlerergebnissen (beispielsweise der Codierrate und dem Grad der Verzerrung oder dergleichen). Bereitstellen kann die Vorhersageverarbeitungsengine 1254 den sich ergebenden intra- oder intercodierten Block für die Restgenerierungsengine 1256, damit selbige Restblöcke 1257 (beinhaltend Restblockdaten) generiert, und für die Blockrekonstruktionsengine 1268, damit selbige den codierten Block zur Nutzung als Referenzbild rekonstruiert.
  • Die Intravorhersageverarbeitungsengine innerhalb der Vorhersageverarbeitungsengine 1254 kann ein Intravorhersagecodieren des aktuellen Videoblocks relativ zu einem oder mehreren benachbarten Blöcken in demselben Frame oder Ausschnitt wie der aktuelle zu codierende Block durchführen, um eine räumliche Kompression bereitzustellen. Die Bewegungsschätzungsengine und die Bewegungsausgleichsengine innerhalb der Vorhersageverarbeitungsengine 1254 führen ein intervorhersagendes Codieren des aktuellen Videoblocks relativ zu einem oder mehreren vorhersagenden Blöcken in einem oder mehreren Referenzbildern durch, um eine zeitliche Kompression bereitzustellen. In einigen Fällen wird eine Intravorhersage für eine erste Kachel einer Teilsequenz durchgeführt, und es kann eine Intervorhersage für alle anderen Kacheln der Teilsequenz durchgeführt werden. Ein codierter Videobitstream kann beispielsweise eine Abfolge einer oder mehrerer codierter Videosequenzen sein, wobei eine codierte Videosequenz (Coded Video Sequence CVS) eine Abfolge von Zugriffseinheiten (Access Units AUs) beinhaltet, beginnend mit einer AU, die ein RAP-Bild (Random Access Point RAP) in der Basisschicht aufweist, und mit bestimmten Eigenschaften bis ausschließlich einer nächsten AU, die ein RAP-Bild in der Basisschicht aufweist, und mit gewissen Eigenschaften. Eine Zugriffseinheit (AU) beinhaltet ein oder mehrere codierte Bilder und Steuer- bzw. Regelinformation, die den codierten Bildern, die dieselbe Ausgabezeit teilen, entspricht. Codierte Ausschnitte von Bildern werden im Bitstreampegel zu Dateneinheiten eingekapselt, die NAL-Einheiten (Network Abstraction Layer NAL, Netzwerkabstraktionsschicht) heißen. Eine CVS und ein Teilbitstream können hierbei analog benutzt werden, wobei sich beide auf einen unabhängig herunterladbaren und decodierbaren Abschnitt des Videobitstreams beziehen.
  • Die Bewegungsschätzungsengine kann dafür konfiguriert sein, den Intervorhersagemodus für einen Videoausschnitt entsprechend einem vorbestimmten Muster für eine Videosequenz zu bestimmen. Das vorbestimmte Muster kann Videoausschnitte in der Sequenz als P-Ausschnitte (P slices), B-Ausschnitte (B slices) oder GPB-Ausschnitte (GPB slices) bezeichnen. Die Bewegungsschätzungsengine und die Bewegungsausgleichsengine können hochintegriert sein, sind jedoch aus konzeptuellen Gründen separat dargestellt. Die Bewegungsschätzung, die von der Bewegungsschätzungsengine durchgeführt wird, ist der Prozess des Generierens von Bewegungsvektoren, die die Bewegung für Videoblöcke schätzen. Ein Bewegungsvektor kann beispielsweise die Versetzung einer Vorhersageeinheit (Prediction Unit PU) eines Videoblocks innerhalb eines aktuellen Videoframes oder Bildes relativ zu einem vorhersagenden Block innerhalb eines Referenzbildes angeben.
  • Ein vorhersagender Block ist ein Block, von dem man herausgefunden hat, dass er zu der PU des zu codierenden Videoblocks passt, und zwar gemessen an der Pixeldifferenz, die durch die Summe der absoluten Differenz (Sum of Absolute Difference SAD), die Summe der quadrierten Differenz (Sum of Square Difference SSD) oder andere Differenzmetriken bestimmt werden kann. Bei einigen Beispielen kann die Codiervorrichtung 1200 Werte für teilganze (sub-integer) Pixelpositionen von Referenzbildern, die in dem Bildspeicher 1272 gespeichert sind, berechnen. Die Codiervorrichtung 1200 kann beispielsweise Werte von Ein-Viertel-Pixelpositionen, Ein-Achtel-Pixelpositionen oder anderen bruchteiligen Pixelpositionen des Referenzbildes interpolieren. Die Bewegungsschätzungsengine kann daher eine Bewegungssuche relativ zu den vollen Pixelpositionen und den bruchteiligen Pixelpositionen durchführen und einen Bewegungsvektor mit bruchteiliger Pixelgenauigkeit ausgeben.
  • Die Bewegungsschätzungsengine kann einen Bewegungsvektor für eine PU eines Videoblocks in einem intercodierten Ausschnitt berechnen, indem sie die Position der PU mit der Position eines vorhersagenden Blocks eines Referenzbildes vergleicht. Das Referenzbild kann aus einer ersten Referenzbildliste (Liste 0) oder einer zweiten Referenzbildliste (Liste 1) ausgewählt sein, die jeweils ein oder mehrere Referenzbilder, die in dem Bildspeicher 1272 gespeichert sind, identifizieren. Die Bewegungsschätzungsengine sendet den berechneten Bewegungsvektor an eine Entropiecodierengine 1262 und eine Bewegungsausgleichsengine.
  • Implizieren kann der Bewegungsausgleich, der von der Bewegungsausgleichsengine durchgeführt wird, ein Holen oder Generieren des vorhersagenden Blocks auf Grundlage des Bewegungsvektors, der durch Bewegungsschätzung gegebenenfalls unter Durchführung von Interpolationen mit Subpixelgenauigkeit, bestimmt worden ist. Beim Empfangen des Bewegungsvektors für die PU des aktuellen Videoblocks kann die Bewegungsausgleichsengine den vorhersagenden Block, zu dem der Bewegungsvektor in einer Referenzbildliste weist, lokalisieren. Die Codiervorrichtung 1200 bildet einen Restblock 1257, indem sie Pixelwerte des vorhersagenden Blocks von den Pixelwerten des gerade codierten aktuellen Videoblocks subtrahiert und so Pixeldifferenzwerte bildet. Die Pixeldifferenzwerte bilden Restdaten für den Block und können sowohl Luma- wie auch Chroma-Differenzkomponenten beinhalten. Die Restgenerierungsengine 1256 stellt diejenige Komponente oder diejenigen Komponenten dar, die diese Subtraktionsoperation durchführt/durchführen, um die Restblöcke 1257 zu erzeugen. Die Bewegungsausgleichsengine kann zudem Syntaxelemente, die in der Syntax 1255 beinhaltet sind, generieren. Die Syntaxelemente sind den Videoblöcken und dem Videoausschnitt zugeordnet und können von der Decodiervorrichtung 1300 beim Decodieren der Videoblöcke des Videoausschnittes benutzt werden.
  • Die Intravorhersageverarbeitungsengine kann eine Intravorhersage eines aktuellen Blocks als Alternative zur Intervorhersage vornehmen, die von der Bewegungsschätzungsengine und der Bewegungsausgleichsengine, wie vorstehend beschrieben worden ist, durchgeführt werden. Insbesondere kann die Intravorhersageverarbeitungsengine einen Intravorhersagemodus bestimmen, der zum Codieren eines aktuellen Blocks benutzt wird. Bei einigen Beispielen kann die Intravorhersageverarbeitungsengine einen aktuellen Block unter Nutzung von verschiedenen Intravorhersagemodi (beispielsweise während getrennter Codierdurchläufe) codieren, und eine Intravorhersageengineverarbeitung bzw. eine Intravorhersageverarbeitungsengine kann einen geeigneten Intravorhersagemodus zur Nutzung aus den getesteten Modi auswählen. Die Intravorhersageverarbeitungsengine kann beispielsweise Ratenverzerrungswerte unter Nutzung einer Ratenverzerrungsanalyse für die verschiedenen getesteten Intravorhersagemodi berechnen und denjenigen Intravorhersagemodus mit den besten Ratenverzerrungskennwerten unter den getesteten Modi auswählen. Die Ratenverzerrungsanalyse bestimmt allgemein den Grad der Verzerrung (oder Fehler) zwischen einem codierten Block und einem ursprünglichen, nichtcodierten Block, der codiert worden ist, um den codierten Block zu erzeugen, wie auch eine Bitrate (das heißt eine Anzahl von Bits), die zum Erzeugen des codierten Blocks verwendet wird. Die Intravorhersageverarbeitungsengine kann Verhältnisse aus den Verzerrungen und Raten für die verschiedenen codierten Blöcke berechnen, um zu bestimmen, welcher Intravorhersagemodus den besten Ratenverzerrungswert für den Block ergibt.
  • In jedem Fall kann die Intravorhersageverarbeitungsengine nach dem Auswählen eines Intravorhersagemodus für einen Block Information, die den ausgewählten Intravorhersagemodus für den Block angibt, für die Entropiecodierengine 1262 bereitstellen. Die Entropiecodierengine 1262 kann die Information, die den ausgewählten Intravorhersagemodus angibt, codieren. In den übertragenen Bitstreamkonfigurationsdaten kann die Codiervorrichtung 1200 Definitionen von Codierkontexten für verschiedene Blöcke wie auch Angaben zum wahrscheinlichsten Intravorhersagemodus, eine Intravorhersagemodusindextabelle und eine modifizierte Intravorhersagemodusindextabelle zur Nutzung für jeden der Kontexte beinhalten. Die Bitstreamkonfigurationsdaten können eine Mehrzahl von Intravorhersagemodusindextabellen und eine Mehrzahl von modifizierten Intravorhersagemodusindextabellen beinhalten.
  • Nachdem die Vorhersageverarbeitungsengine 1254 den vorhersagenden Block für den aktuellen Videoblock entweder über eine Intervorhersage oder eine Intravorhersage generiert hat, bildet die Codiervorrichtung 1200 einen Restvideoblock, indem sie den vorhersagenden Block von dem aktuellen Videoblock subtrahiert. Die Restvideodaten in dem Restblock können in einer oder mehreren Transformationseinheiten (Transform Units TUs) beinhaltet sein und auf die Transformationsverarbeitungsengine 1258 angewendet werden. Die Transformationverarbeitungsengine 1258 transformiert die Restvideodaten unter Nutzung einer Transformation, so beispielsweise einer diskreten Kosinustransformation (Discrete Cosine Transform DCT) oder einer dem Konzept nach ähnlichen Transformation, in Resttransformationskoeffizienten. Die Transformationverarbeitungsengine 1258 kann die Restvideodaten aus einer Pixeldomäne in eine Transformationsdomäne, so beispielsweise eine Frequenzdomäne, umwandeln.
  • Die Transformationsverarbeitungsengine 1258 kann die sich ergebenden Transformationskoeffizienten an die Quantisierungsengine 1260 senden. Die Quantisierungsengine 1260 quantisiert die Transformationskoeffizienten, um die Bitrate weiter zu verringern. Die Ausgabe der Quantisierungsengine 1260 beinhaltet quantisierte Transformationskoeffizienten 1261. Der Quantisierungsprozess kann die Bittiefe, die einigen oder allen Koeffizienten zugeordnet ist, verringern. Der Grad der Quantisierung kann durch Anpassen eines Quantisierungsparameters modifiziert werden. Bei einigen Beispielen kann die Quantisierungsengine 1260 (oder in einigen Fällen die Entropiecodierengine 1262) sodann ein Abtasten der Matrix, die die quantisierten Transformationskoeffizienten 1261 beinhaltet, durchführen.
  • Im Anschluss an die Quantisierung nimmt die Entropiecodierengine 1262 ein Entropiecodieren der quantisierten Transformationskoeffizienten 1261 vor. Durchführen kann die Entropiecodierengine 1262 beispielsweise ein kontextadaptives und längenvariables Codieren (Context Adaptive Variable Length Coding CAVLC), ein kontextadaptives binärarithmetisches Codieren (Context Adaptive Binary Arithmetic Coding CABAC), ein syntaxbasiertes kontextadaptives binärarithmetisches Codieren (Syntax-based context-adaptive Binary Arithmetic Coding SBAC), ein PIPE-Codieren (Propability Interval Partitioning Entropy PIPE) oder eine andere Entropiecodiertechnik. Die Entropiecodierengine 1262 kann zudem ein Entropiecodieren der Bewegungsvektoren und der anderen Syntaxelemente für den gerade codierten aktuellen Videoausschnitt vornehmen. Im Anschluss an das Entropiecodieren durch die Entropiecodierengine1262 kann der codierte Bitstream an die Decodiervorrichtung 1300 übertragen oder zur späteren Übertragung oder den späteren Abruf durch die Decodiervorrichtung 1300 gespeichert werden.
  • Die Inversquantisierungsengine 1264 und die Inverstransformationsverarbeitungsengine 1266 können eine Inversquantisierung beziehungsweise eine Inverstransformation anwenden, um die Restblöcke (die als rekonstruierte Restblöcke 1267 bezeichnet werden) in der Pixeldomäne zur späteren Nutzung als Referenzblock eines Referenzbildes zu rekonstruieren. Die Bewegungsausgleichsengine kann einen Referenzblock berechnen, indem sie den Restblock zu einem vorhersagenden Block eines der Referenzbilder innerhalb einer Referenzbildliste hinzufügt. Die Bewegungsausgleichsengine kann zudem einen oder mehrere Interpolationsfilter auf den rekonstruierten Restblock anwenden, um teilganze Pixelwerte zur Nutzung bei der Bewegungsschätzung zu berechnen. Die Blockrekonstruktionsengine 1268 fügt den rekonstruierten Restblock zu dem bewegungsausgeglichenen Vorhersageblock, der von der Bewegungsausgleichsengine erzeugt worden ist, hinzu, um einen rekonstruierten Videoblock zu erzeugen. Mehrere rekonstruierte Videoblocks 1269 werden von der Blockrekonstruktionsengine 1268 generiert. Der rekonstruierte Videoblock kann als Referenzblock zur Speicherung in dem Bildspeicher 1272 verwendet werden. Der Referenzblock kann von der Bewegungsschätzungsengine und der Bewegungsausgleichsengine als Referenzblock für eine Intervorhersage eines Blocks in einem nachfolgenden Videoframe oder Bild benutzt werden.
  • Auf diese Weise stellt die Codiervorrichtung 1200 von 12 ein Beispiel für einen Videocodierer dar, der dafür konfiguriert ist, wenigstens einen Teil des einen oder der mehreren hier beschriebenen Prozesse durchzuführen. Die Codiervorrichtung 1200 kann beispielsweise eine beliebige der hier beschriebenen Techniken durchführen, darunter Teile der vorstehend anhand 9 und 10 beschriebenen Prozesse.
  • 13 ist ein Blockdiagramm zur Darstellung eines Beispiels einer Decodiervorrichtung 1300. Die Decodiervorrichtung 1300 beinhaltet eine Entropiedecodierengine 1372, eine Vorhersageverarbeitungsengine 1378, eine Inversquantisierungsengine 1374, eine Inverstransformationsverarbeitungsengine 1376, eine Blockrekonstruktionsengine 1380, eine Filterengine 1382 und einen Bildspeicher 1384. Die Vorhersageverarbeitungsengine 1378 kann eine Bewegungsausgleichsengine und eine Intravorhersageverarbeitungsengine beinhalten. Die Decodiervorrichtung 1300 kann bei einigen Beispielen einen Decodierdurchlauf durchführen, der im Allgemeinen reziprok zu dem Codierdurchlauf ist, der im Zusammenhang mit der Codiervorrichtung 1200 anhand 12 beschrieben worden ist.
  • Während des Decodierprozesses empfängt die Decodiervorrichtung 1300 ein codiertes Texturvideo 1371, das die codierte Sequenz von geordneten Kacheln beinhaltet. Das codierte Texturvideo 1371 beinhaltet Videoblöcke eines codierten Videoausschnittes und zugeordnete Syntaxelemente (in der Syntax 1255), die von der Codiervorrichtung 1200 gesendet werden. Bei einigen Beispielen kann die Decodiervorrichtung 1300 das codierte Texturvideo 1371 von der Codiervorrichtung 1200 empfangen. Bei einigen Beispielen kann die Codiervorrichtung 1300 das codierte Texturvideo 1371 von einer Netzwerkentität, so beispielsweise einem Server, oder einer anderen derartigen Vorrichtung empfangen.
  • Die Entropiedecodierengine 1372 der Decodiervorrichtung 1300 nimmt ein Entropiedecodieren des Bitstreams vor, um quantisierte Koeffizienten 1373, Bewegungsvektoren und andere Syntaxelemente (in der Syntax 1375 beinhaltet) zu generieren. Die Entropiedecodierengine 1372 leitet die Bewegungsvektoren oder die anderen Syntaxelemente an die Vorhersageverarbeitungsengine 1378 weiter. Die Decodiervorrichtung 1300 kann die Syntaxelemente auf der Ebene von Videoausschnitten und/oder auf der Ebene von Videoblöcken empfangen. Die Entropiedecodierengine 1372 kann sowohl längenfeste Syntaxelemente wie auch längenvariable Syntaxelemente in einem oder mehreren Parametersätzen verarbeiten und zerlegen (parsing).
  • Ist der Videoausschnitt als intracodierter (I) Ausschnitt codiert, so kann die Intravorhersageverarbeitungsengine der Vorhersageverarbeitungsengine 1378 Vorhersagedaten für einen Videoblock des aktuellen Videoausschnittes auf Grundlage eines signalisierten Intravorhersagemodus und von Daten aus vorher decodierten Blöcken des aktuellen Frames oder Bildes generieren. Ist das Videoframe als intercodierter (beispielsweise B, P oder GPB) Ausschnitt codiert, so erzeugt die Bewegungsausgleichsengine der Vorhersageverarbeitungsengine 1378 vorhersagende Blöcke für einen Videoblock des aktuellen Videoausschnittes auf Grundlage der Bewegungsvektoren und anderer Syntaxelemente, die von der Entropiedecodierengine 1372 empfangen werden. Die vorhersagenden Blöcke können aus einem der Referenzbilder innerhalb einer Referenzbildliste erzeugt werden. Die Decodiervorrichtung 1300 kann die Referenzframelisten, nämlich Liste 0 und Liste 1, unter Nutzung von Standardkonstruktionstechniken auf Grundlage von Referenzbildern, die in dem Bildspeicher 1384 gespeichert sind, konstruieren.
  • Die Bewegungsausgleichsengine bestimmt Vorhersageinformation für einen Videoblock des aktuellen Videoausschnittes, indem sie die Bewegungsvektoren und die anderen Syntaxelemente zerlegt und die Vorhersageinformation dafür nutzt, die vorhersagenden Blöcke für den gerade decodierten aktuellen Videoblock zu erzeugen. Die Bewegungsausgleichsengine kann beispielsweise ein oder mehrere Syntaxelemente in einem Parametersatz nutzen, um einen Vorhersagemodus (beispielsweise eine Intra- oder Intervorhersage), der dafür genutzt wird, die Videoblöcke des Videoausschnittes zu codieren, einen Typ des Intervorhersageausschnittes (beispielsweise B-Ausschnitt, P-Ausschnitt oder GPB-Ausschnitt), eine Konstruktionsinformation für eine oder mehrere Referenzbildlisten für den Ausschnitt, Bewegungsvektoren für jeden intercodierten Videoblock des Ausschnittes, den Intervorhersagestatus für jeden intercodierten Videoblock der Scheibe und andere Informationen zum Decodieren der Videoblöcke in dem aktuellen Videoausschnitt zu bestimmen.
  • Die Bewegungsausgleichsengine kann zudem eine Interpolation auf Grundlage eines oder mehrerer Interpolationsfilter durchführen. Die Bewegungsausgleichsengine kann Interpolationsfilter nutzen, wie sie von der Codiervorrichtung 1200 während des Codierens der Videoblöcke benutzt werden, um interpolierte Werte für teilganze Pixel von Referenzblöcken zu berechnen. In einigen Fällen kann die Bewegungsausgleichsengine die Interpolationsfilter, die von der Codiervorrichtung 1200 benutzt werden, aus den empfangenen Syntaxelementen bestimmen und die Interpolationsfilter nutzen, um vorhersagende Blöcke zu erzeugen.
  • Die Inversquantisierungsengine 1374 nimmt eine Inversquantisierung (auch als Dequantisierung bezeichnet) der quantisierten Transformationskoeffizienten vor, die in dem Bitstream bereitgestellt sind und von der Entropiedecodierengine 1372 decodiert werden. Der Inversquantisierungsprozess kann die Nutzung eines Quantisierungsparameters beinhalten, der von der Codiervorrichtung 1200 für jeden Videoblock in dem Videoausschnitt berechnet wird, um den Grad der Quantisierung und ebenso den Grad der Inversquantisierung, die angewendet werden soll, zu bestimmen. Die Inverstransformationsverarbeitungsengine 1376 wendet eine Inverstransformation (beispielsweise eine Invers-DCT oder eine andere geeignete Inverstransformation), eine Inversganzzahltransformation oder einen dem Konzept nach ähnlichen Inverstransformationsprozess auf die Transformationskoeffizienten an, um die Restblöcke 1377 in der Pixeldomäne zu erzeugen.
  • Nachdem die Bewegungsausgleichsengine den vorhersagenden Block für den aktuellen Videoblock auf Grundlage der Bewegungsvektoren und anderer Syntaxelemente generiert hat, bildet die Decodiervorrichtung 1300 einen decodierten Videoblock, indem sie die Restblöcke aus der Inverstransformationsvearbeitungsengine 1376 zu den entsprechenden vorhersagenden Blöcken, die von der Bewegungsausgleichsengine generiert werden, summiert. Die Blockrekonstruktionsengine 1380 stellt die Komponente oder die Komponenten dar, die diese Operation des Summierens durchführt/durchführen. So dies erwünscht ist, können auch Schleifenfilter (entweder in der Codierschleife oder nach der Codierschleife) benutzt werden, um Pixelübergänge zu glätten oder die Videoqualität auf andere Weise zu verbessern. Die Filterengine 1382 soll einen oder mehrere Schleifenfilter darstellen. Obwohl die Filterengine 1382 in 13 derart gezeigt ist, dass sie ein schleifeninterner Filter (in-loop filter) ist, kann die Filterengine 1382 bei anderen Ausführungsformen auch als schleifennachgeschalteter Filter (post-loop filter) implementiert sein. Die decodierten Videoblöcke bilden decodierte Kacheln, die die decodierte Sequenz der geordneten Kacheln 1383 darstellen. Die decodierten Videoblöcke in einem gegebenen Frame oder Bild werden sodann in dem Bildspeicher 1384 gespeichert, der Referenzbilder speichert, die für den nachfolgenden Bewegungsausgleich benutzt werden. Der Bildspeicher 1384 speichert zudem das decodierte Video zur späteren Präsentation auf einer Anzeigevorrichtung.
  • Auf diese Weise stellt die Decodiervorrichtung 1300 von 13 ein Beispiel für einen Videodecodierer dar, der dafür konfiguriert ist, einen oder mehrere der vorbeschriebenen Prozesse durchzuführen. Die Decodiervorrichtung 1300 kann beispielsweise eine beliebige der hier beschriebenen Techniken durchführen, darunter einen Teil der Prozesse, die anhand von 9 und 10 beschrieben worden sind.
  • 14 zeigt eine exemplarische Rechenvorrichtungsarchitektur 1400 einer exemplarischen Rechenvorrichtung, die die verschiedenen hier beschriebenen Techniken implementieren kann. Die Rechenvorrichtungsarchitektur 1400 kann beispielsweise das Texturbildsequenziersystem 400, das in 4 gezeigt ist, implementieren. Bei einem weiteren Beispiel kann die Rechenvorrichtungsarchitektur 1400 das Texturbildrekonstruktionssystem 700, das in 7 gezeigt ist, implementieren. Die Komponenten der Rechenvorrichtungsarchitektur 1400 kommunizieren, wie gezeigt ist, unter Verwendung der Verbindung 1405, so beispielsweise eines Busses, elektrisch miteinander. Die exemplarische Rechenvorrichtungsarchitektur 1400 beinhaltet eine Verarbeitungseinheit (eine CPU oder einen Prozessor) 1410 und eine Rechenvorrichtungsverbindung 1405, die verschiedene Rechenvorrichtungskomponenten, darunter den Rechenvorrichtungsspeicher 1415, so beispielsweise den Nur-Lese-Speicher (ROM) 1420 und den Speicher mit wahlfreiem Zugriff (RAM) 1425, mit dem Prozessor 1410 koppelt.
  • Die Rechenvorrichtungsarchitektur 1400 kann einen Cache eines Hochgeschwindigkeitsspeichers beinhalten, der direkt mit dem Prozessor 1410 verbunden ist, in enger Nachbarschaft zu diesem befindlich ist oder als Teil desselben integriert ist. Die Rechenvorrichtungsarchitektur 1400 kann Daten aus dem Speicher 1415 und/oder der Speichervorrichtung 1430 für einen Schnellzugriff durch den Prozessor 1410 in den Cache 1412 kopieren. Auf diese Weise kann der Cache einen Leistungssprung ermöglichen, der vermeidet, dass der Prozessor 1410 während des Wartens auf Daten verzögert. Diese und andere Module können dafür steuern bzw. regeln oder konfiguriert sein, den Prozessor 1410 zu steuern bzw. zu regeln, damit dieser verschiedene Handlungen durchführt. Ein weiterer Rechenvorrichtungsspeicher 1415 kann ebenfalls zur Nutzung verfügbar sein. Der Speicher 1415 kann mehrere verschiedene Arten von Speichern mit verschiedenen Leistungskennwerten beinhalten. Beinhalten kann der Prozessor 1410 einen beliebigen Allzweckprozessor und einen Hardware- oder Softwaredienst, so beispielsweise einen Dienst 1 1432, einen Dienst 2 1434 und einen Dienst 3 1436, die in der Speichervorrichtung 1430 gespeichert und zur Steuerung bzw. Regelung des Prozessors 1410 konfiguriert sind, wie auch einen Spezialzweckprozessor, bei dem Softwareanwendungen ins Prozessordesign integriert sind. Der Prozessor 1410 kann ein eigenständiges System sein, er kann mehrere Kerne oder Prozessoren, einen Bus, einen Speichercontroller, einen Cache und dergleichen mehr beinhalten. Ein Prozessor mit mehreren Kernen kann symmetrisch oder asymmetrisch sein.
  • Um eine Nutzerinteraktion mit der Rechenvorrichtungsarchitektur 1400 zu ermöglichen, kann eine Eingabevorrichtung 1445 eine beliebige Anzahl von Eingabemechanismen darstellen, so beispielsweise ein Mikrofon für Sprache, einen berührungsempfindlichen Bildschirm für Gesten oder grafische Eingaben, eine Tastatur, eine Maus, eine Bewegungseingabe, Sprache und dergleichen. Eine Ausgabevorrichtung 1435 kann zudem einer oder mehrere von einer Anzahl von Ausgabemechanismen sein, die einem Fachmann auf dem Gebiet bekannt sind, so beispielsweise eine Anzeige, ein Projektor, ein Fernseher, eine Lautsprechervorrichtung und dergleichen. In einigen Fällen können multimodale Rechenvorrichtungen ermöglichen, dass ein Nutzer mehrere Arten von Eingaben bereitstellt, um mit der Rechenvorrichtungsarchitektur 1400 zu kommunizieren. Die Kommunikationsschnittstelle 1440 kann die Nutzereingabe und die Rechenvorrichtungsausgabe allgemein handeln und verwalten. Es ist keine Beschränkung hinsichtlich des Betriebs einer bestimmten Hardwareanordnung vorhanden, weshalb die grundlegenden Merkmale ohne Weiteres gegen verbesserte Hardware- oder Firmware-Anordnungen, wenn diese entwickelt werden, ausgetauscht werden können.
  • Die Speichervorrichtung 1430 ist ein nichtflüchtiger Speicher und kann eine Festplatte oder auch andere Typen von computerlesbaren Medien sein, die Daten speichern können und auf die ein Computer zugreifen kann, so beispielsweise Magnetkassetten, Flash-Speicherkarten, Solid-State-Memory-Vorrichtungen, DVDs, Cartridges, Speicher mit wahlfreiem Zugriff (RAMs) 1425, Nur-Lese-Speicher 1420 (ROM) und Hybride hieraus. Die Speichervorrichtung 1430 kann die Dienste 1432, 1434, 1436 zum Steuern bzw. Regeln des Prozessors 1410 beinhalten. Weitere Hardware- und Softwaremodule sind einbezogen. Die Speichervorrichtung 1430 kann mit der Rechenvorrichtungsverbindung 1405 verbunden sein. Bei einem Aspekt kann ein Hardwaremodul, das eine bestimmte Funktion durchführt, die Softwarekomponente, die auf einem computerlesbaren Medium gespeichert ist, in Verbindung mit den notwendigen Hardwarekomponenten beinhalten, so beispielsweise den Prozessor 1410, die Verbindung 1405, die Ausgabevorrichtung 1435 und dergleichen mehr, um die Funktion wahrzunehmen.
  • Zur einfacheren Erläuterung kann die vorliegende Technologie in einigen Fällen derart präsentiert werden, dass sie einzelne funktionelle Blöcke beinhaltet, die funktionelle Blöcke beinhalten, die Vorrichtungen, Vorrichtungskomponenten, Schritte oder Routinen in einem Verfahren beinhalten, das in Software oder in Kombinationen aus Hardware und Software verkörpert ist.
  • Bei einigen Ausführungsformen können die computerlesbaren Speichervorrichtungen, Medien und Speicher (Memorys) ein Kabel- oder Drahtlossignal beinhalten, das einen Bitstream und dergleichen enthält. Nichttemporäre computerlesbare Speichermedien schließen jedoch, so von ihnen die Rede ist, Medien wie Energie, Trägersignale, elektromagnetische Wellen und Signale als solche aus.
  • Verfahren und Prozesse entsprechend den vorbeschriebenen Beispielen können unter Nutzung von computerausführbaren Anweisungen implementiert sein, die auf computerlesbaren Medium gespeichert oder auf andere Weise verfügbar sind. Beinhalten können derartige Anweisungen beispielsweise Anweisungen und Daten, die einen Allzweckcomputer, einen Spezialzweckcomputer oder eine Verarbeitungsvorrichtung veranlassen oder auf andere Weise dafür konfigurieren, eine bestimmte Funktion oder Gruppe von Funktionen zu übernehmen. Abschnitte von genutzten Computerressourcen können über ein Netzwerk zugänglich sein. Die computerausführbaren Anweisungen können beispielsweise Binaries, Anweisungen in einem Zwischenformat wie beispielsweise Assemblersprache, Firmware, Sourcecode und dergleichen sein. Beispiele für computerlesbare Medien, die dazu benutzt werden, Anweisungen, benutzte Information und/oder Information, die während Verfahren entsprechend den beschriebenen Beispielen geschaffen wird, zu speichern, beinhalten magnetische oder optische Platten, einen Flash-Speicher, USB-Vorrichtungen, die mit einem nichtflüchtigen Speicher ausgestattet sind, vernetzte Speichervorrichtungen und dergleichen mehr.
  • Vorrichtungen, die Verfahren entsprechend den vorliegenden Offenbarungen implementieren, können Hardware, Firmware und/oder Software beinhalten und einen beliebigen aus einer Vielzahl von Formfaktoren annehmen. Typische Beispiele für derartige Formfaktoren beinhalten Laptops, Smartphones, PCs mit kleinem Formfaktor, Persönliche Digitale Assistenten, Rackmount-Vorrichtungen, eigenständige Vorrichtungen und dergleichen mehr. Die hier beschriebene Funktionalität kann auch in Peripheriegeräten oder Add-in-Karten verkörpert sein. Eine derartige Funktionalität kann bei einem weiteren Beispiel auch auf einer Leiterplatte zwischen verschiedenen Chips oder verschiedenen Prozessen, die auf einer einzelnen Vorrichtung ausgeführt werden, implementiert sein.
  • Die Anweisungen, Medien zur Bereitstellung derartiger Anweisungen, Rechenressourcen zur Ausführung derselben und anderen Strukturen zur Unterstützung derartiger Rechenressourcen sind exemplarische Mittel zur Bereitstellung der in der Offenbarung beschriebenen Funktionen.
  • In der vorstehenden Beschreibung werden Aspekte der Anmeldung anhand spezifischer Ausführungsformen derselben beschrieben. Einem Fachmann auf dem Gebiet erschließt sich jedoch, dass die Anmeldung nicht hierauf beschränkt ist. Obwohl illustrative Ausführungsformen der Anmeldung hier detailliert beschrieben worden sind, sollte einsichtig sein, dass die erfinderischen Konzepte auch auf andere verschiedene Weisen verkörpert und eingesetzt werden können und dass die beigefügten Ansprüche derart gedeutet werden sollen, dass sie derartige Abwandlungen beinhalten, es sei denn, es besteht eine Einschränkung durch den Stand der Technik. Verschiedene Merkmale und Aspekte der vorbeschriebenen Anmeldung können einzeln oder gemeinsam genutzt werden. Des Weiteren können Ausführungsformen in einer beliebigen Anzahl von Umgebungen und Anwendungen über die hier beschriebenen hinausgehend eingesetzt werden, ohne vom allgemeineren Wesen und Umfang der Beschreibung abzuweichen. Die Beschreibung und die Zeichnung sollen entsprechend als illustrativ und nicht als beschränkend gedeutet werden. Zu darstellerischen Zwecken sind Verfahren in einer bestimmten Ordnung bzw. Reihenfolge beschrieben worden. Es sollte einsichtig sein, dass die Verfahren bei alternativen Ausführungsformen auch in einer anderen Ordnung bzw. Reihenfolge, als sie hier beschrieben ist, durchgeführt werden können.
  • Einem Durchschnittsfachmann erschließt sich, dass die Symbole oder die hier verwendete Terminologie „kleiner als“ („<“) und „größer als“ („>“) durch die Symbole „kleiner gleich“ („≤“) beziehungsweise „größer gleich“ („≥“) ersetzt werden können, ohne vom Wesen der vorliegenden Erfindung abzuweichen.
  • Wo Komponenten derart beschrieben sind, dass sie „dafür/dazu konfiguriert sind“, bestimmte Operationen auszuführen, kann eine derartige Konfigurierung beispielsweise dadurch verwirklicht sein, dass elektronische Schaltungen oder andere Hardware zum Durchführen der Operation gestaltet werden, dass programmierbare elektronische Schaltungen (beispielsweise Mikroprozessoren oder andere geeignete elektronische Schaltungen) zur Durchführung der Operationen programmiert werden, oder eine beliebige Kombination hieraus.
  • Die Wendung „gekoppelt mit“ betrifft eine beliebige Komponente, die entweder direkt oder indirekt physisch mit einer anderen Komponente verbunden ist, und/oder eine beliebige Komponente, die mit einer anderen Komponente entweder direkt oder indirekt kommuniziert (mit der anderen Komponente beispielsweise über eine verdrahtete oder drahtlose Verbindung und/oder eine andere geeignete Kommunikationsschnittstelle verbunden ist).
  • Die Sprache in den Ansprüchen oder an anderer Stelle, wo von „wenigstens einem von“ einem Satz und/oder „einem oder mehreren“ von einem Satz die Rede ist, gibt an, dass ein Element des Satzes oder mehrere Elemente des Satzes (in einer beliebigen Kombination) dem Anspruch genügen. Die Sprache in einem Anspruch, wo beispielsweise von „wenigstens einem von A und B“ die Rede ist, bezeichnet A, B oder A und B. Bei einem weiteren Beispiel bezeichnet die Sprache in den Ansprüchen, wo von „wenigstens einem von A, B und C“ die Rede ist, A, B, C oder A und B, oder A und C, oder B und C, oder A und B und C. Die Aussage „wenigstens eines von einem Satz“ und/oder „eines oder mehrere von einem Satz“ beschränkt den Satz nicht auf die in dem Satz aufgelisteten Objekte. Die Sprache in den Ansprüchen, wo beispielsweise von „wenigstens einem von A und B“ die Rede ist, kann A, B, oder A und B bezeichnen und kann zusätzlich Objekte, die in dem Satz von A und B nicht aufgelistet sind, beinhalten.
  • Die verschiedenen illustrativen logischen Blöcke, Module, Schaltungen und Algorithmusschritte, die in Verbindung mit den hier offenbarten Ausführungsformen beschrieben worden sind, können als elektronische Hardware, Computersoftware, Firmware oder Kombinationen hieraus implementiert sein. Um die wechselseitige Austauschbarkeit von Hardware und Software zu erläutern, sind vorstehend verschiedene illustrative Komponenten, Blöcke, Module, Schaltungen und Schritte anhand ihrer Funktionalität allgemein beschrieben worden. Ob eine derartige Funktionalität als Hardware oder Software implementiert ist, hängt von der speziellen Anwendung und den Randbedingungen der Ausgestaltung, die in dem Gesamtsystem vorherrschen, ab. Ein Fachmann kann die beschriebene Funktionalität für jede spezielle Anwendung auf verschiedene Weisen implementieren, wobei derartige Implementierungsentscheidungen nicht derart gedeutet werden sollen, dass sie ein Abweichen vom Umfang der vorliegenden Anmeldung bedingen.
  • Die hier beschriebenen Techniken können auch in elektronischer Hardware, Computersoftware, Firmware oder einer beliebigen Kombination hieraus implementiert sein. Derartige Techniken können in einer Vielzahl von Vorrichtungen implementiert sein, so beispielsweise Allzweckcomputer, Handsets von Drahtloskommunikationsvorrichtungen, oder integrierte Schaltungsvorrichtungen mit mehreren Nutzungen, darunter Anwendungen in Handsets von Drahtloskommunikationsvorrichtungen und andere Vorrichtungen. Beliebige Merkmale, die als Module oder Komponenten beschrieben worden sind, können zusammen in einer integrierten logischen Schaltung oder getrennt als diskrete, aber interoperable logische Vorrichtungen implementiert sein. Bei Implementierung als Software können die Techniken wenigstens teilweise durch ein computerlesbares Datenspeichermedium verwirklicht sein, das Programmcode umfasst, der Anweisungen beinhaltet, die bei Ausführung eines oder mehrere der vorbeschriebenen Verfahren durchführen. Das computerlesbare Datenspeichermedium kann einen Teil eines Computerprogrammerzeugnisses bilden, der Packmaterialien beinhalten kann. Das computerlesbare Medium kann einen Speicher (Memory) oder Datenspeichermedien umfassen, so beispielsweise einen Speicher mit wahlfreiem Zugriff (RAM) wie beispielsweise einen synchronen dynamischen Speicher mit wahlfreiem Zugriff (SDRAM), einen Nur-Lese-Speicher (ROM), einen nichtflüchtigen Speicher mit wahlfreiem Zugriff (NVRAM), einen elektrisch löschbaren programmierbaren Nur-Lese-Speicher (EEPROM), einen FLASH-Speicher, magnetische oder optische Datenspeichermedien und dergleichen. Die Techniken können zusätzlich oder alternativ wenigstens teilweise durch ein computerlesbares Kommunikationsmedium verwirklicht sein, das Programmcode in Form von Anweisungen oder Datenstrukturen trägt oder kommuniziert und das für einen Computer zugänglich ist, von diesem gelesen und/oder ausgeführt werden kann, so beispielsweise sich ausbreitende Signale oder Wellen.
  • Der Programmcode kann von einem Prozessor ausgeführt werden, der einen oder mehrere Prozessoren beinhalten kann, so beispielsweise einen oder mehrere digitale Signalprozessoren (DSPs), Allzweckmikroprozessoren, anwendungsspezifische integrierte Schaltungen (ASICs), feldprogrammierbare logische Arrays (FPGAs) oder andere gleichwertige integrierte oder diskrete logische Schaltungen. Ein derartiger Prozessor kam dafür konfiguriert sein, beliebige in der vorliegenden Offenbarung beschriebene Techniken durchzuführen. Ein Allzweckprozessor kann ein Mikroprozessor sein. Bei einer Alternative kann der Prozessor jedoch ein beliebiger herkömmlicher Prozessor, ein Controller, ein Microcontroller oder eine Zustandsmaschine (state machine) sein. Ein Prozessor kann als Kombination von Rechenvorrichtungen implementiert sein, beispielsweise als Kombination eines DSP und eines Mikroprozessors, als Mehrzahl von Mikroprozessoren, als ein oder mehrere Mikroprozessoren in Verbindung mit einem DSP-Kern oder als beliebige andere derartige Konfiguration. Entsprechend kann der Begriff „Prozessor“ im Sinne des Vorliegenden eine beliebige der vorbeschriebenen Strukturen, eine beliebige Kombination der vorbeschriebenen Strukturen oder eine beliebige andere Struktur oder Einrichtung bezeichnen, die zur Implementierung der hier beschriebenen Techniken geeignet ist. Bei einigen Aspekten kann die hier beschriebene Funktionalität zusätzlich innerhalb von dedizierten Softwaremodulen oder Hardwaremodulen, die zum Codieren und Decodieren konfiguriert sind, oder in einem kombinierten Videocodierer/decodierer (auch als Codec bezeichnet) integriert sein.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 62821958 [0001]

Claims (20)

  1. Verfahren zum Generieren eines Videos aus einem oder mehreren Texturbildern, umfassend: Unterteilen eines ersten Texturbildes in eine erste Mehrzahl von Kacheln, wobei das erste Texturbild zur Anwendung auf wenigstens ein erstes dreidimensionales Gitter konfiguriert ist; Sortieren der ersten Mehrzahl von Kacheln zu einer Sequenz von geordneten Kacheln; und Bereitstellen der Sequenz von geordneten Kacheln zum Generieren eines codierten Videos, wobei das Generieren des codierten Videos ein Codieren der ersten Mehrzahl von Kacheln auf Grundlage der Sequenz von geordneten Kacheln beinhaltet.
  2. Verfahren nach Anspruch 1, des Weiteren umfassend: Bestimmen von Ähnlichkeiten zwischen Paaren von Kacheln aus der ersten Mehrzahl von Kacheln; und unter Nutzung der Ähnlichkeiten zwischen den Paaren von Kacheln erfolgendes Bestimmen der Sequenz von geordneten Kacheln auf Grundlage dessen, dass die Sequenz eine Summe von Nichtähnlichkeiten zwischen aufeinanderfolgenden Kacheln in der Sequenz von geordneten Kacheln minimiert
  3. Verfahren nach Anspruch 1 oder 2, wobei die erste Mehrzahl von Kacheln zu der Sequenz von geordneten Kacheln in einer Ordnung sortiert wird, die eine Anzahl von Videosegmenten, die heruntergeladen werden müssen, um das erste Texturbild zu erhalten, minimiert.
  4. Verfahren nach Anspruch 3, wobei die Sequenz von geordneten Kacheln eine erste Teilsequenz und eine zweite Teilsequenz beinhaltet, wobei die erste Teilsequenz einen ersten Satz von Kacheln aus der ersten Mehrzahl von Kacheln beinhaltet und die zweite Teilsequenz einen zweiten Satz von Kacheln aus der ersten Mehrzahl von Kacheln beinhaltet.
  5. Verfahren nach einem der vorangegangenen Ansprüche, des Weiteren umfassend: Unterteilen eines zweiten Texturbildes in eine zweite Mehrzahl von Kacheln, wobei das zweite Texturbild zur Anwendung auf wenigstens eines von dem ersten dreidimensionalen Gitter oder einem zweiten dreidimensionalen Gitter konfiguriert ist; wobei das Sortieren ein Sortieren der ersten Mehrzahl von Kacheln und der zweiten Mehrzahl von Kacheln zu der Sequenz von geordneten Kacheln beinhaltet; und wobei das Generieren des codierten Videos ein Codieren der ersten Mehrzahl von Kacheln und der zweiten Mehrzahl von Kacheln auf Grundlage der Sequenz von geordneten Kacheln beinhaltet.
  6. Verfahren nach Anspruch 5, wobei das erste Texturbild und das zweite Texturbild zeitlich unabhängig sind, wobei eine erste Auflösung des ersten Texturbildes und eine zweite Auflösung des zweiten Texturbildes verschiedene Auflösungen sind und wobei die erste Mehrzahl von Kacheln und die zweite Mehrzahl von Kacheln eine gleichmäßige Kachelgröße aufweisen.
  7. Verfahren nach Anspruch 5 oder 6, wobei die erste Mehrzahl von Kacheln und die zweite Mehrzahl von Kacheln zu der Sequenz von geordneten Kacheln auf Grundlage von Ähnlichkeiten zwischen der ersten Mehrzahl von Kacheln und der zweiten Mehrzahl von Kacheln sortiert werden.
  8. Verfahren nach einem der Ansprüche 5 bis 7, des Weiteren umfassend: Bestimmen von Ähnlichkeiten zwischen Paaren von Kacheln aus der ersten Mehrzahl von Kacheln und der zweiten Mehrzahl von Kacheln; und unter Nutzung der Ähnlichkeiten zwischen den Paaren von Kacheln erfolgendes Bestimmen der Sequenz von geordneten Kacheln auf Grundlage dessen, dass die Sequenz eine Summe von Nichtähnlichkeiten zwischen aufeinanderfolgenden Kacheln in der Sequenz von geordneten Kacheln minimiert.
  9. Verfahren nach einem der Ansprüche 5 bis 8, wobei die erste Mehrzahl von Kacheln und die zweite Mehrzahl von Kacheln zu der Sequenz von geordneten Kacheln in einer Ordnung sortiert werden, die eine Anzahl von Videosegmenten, die heruntergeladen werden müssen, um das erste Texturbild und das zweite Texturbild zu erhalten, minimiert.
  10. Verfahren nach einem der vorangegangenen Ansprüche, wobei das codierte Video auf Grundlage einer Intervorhersage einer ersten Kachel unter Nutzung einer zweiten Kachel als Referenzkachel zur Vorhersage generiert wird.
  11. Verfahren nach Anspruch 10, wobei die erste Kachel und die zweite Kachel aus dem ersten Texturbild sind.
  12. Verfahren nach Anspruch 10 oder 11, wobei die erste Kachel aus dem ersten Texturbild ist und wobei die zweite Kachel aus einem zweiten Texturbild ist.
  13. Verfahren nach einem der vorangegangenen Ansprüche, wobei eine Mehrzahl von codierten Videos für die Sequenz von geordneten Kacheln generiert wird, wobei ein erstes codiertes Video der Mehrzahl von codierten Videos wenigstens eines von einer anderen Bitrate, einer anderen Framerate oder einer anderen Segmentgröße im Vergleich zu einem zweiten codierten Video der Mehrzahl von codierten Videos aufweist.
  14. Einrichtung zum Generieren eines Videos aus einem oder mehreren Texturbildern, wobei die Einrichtung umfasst: einen Speicher, der dafür konfiguriert ist, das eine oder die mehreren Texturbilder zu speichern; und einen Prozessor, der in Schaltkreisen implementiert ist und konfiguriert ist zum: Unterteilen eines ersten Texturbildes in eine erste Mehrzahl von Kacheln, wobei das erste Texturbild zur Anwendung auf wenigstens ein erstes dreidimensionales Gitter konfiguriert ist; Sortieren der ersten Mehrzahl von Kacheln zu einer Sequenz von geordneten Kacheln; und Bereitstellen der Sequenz von geordneten Kacheln zum Generieren eines codierten Videos, wobei das Generieren des codierten Videos ein Codieren der ersten Mehrzahl von Kacheln auf Grundlage der Sequenz von geordneten Kacheln beinhaltet.
  15. Einrichtung nach Anspruch 14, wobei der Prozessor des Weiteren konfiguriert ist zum: Bestimmen von Ähnlichkeiten zwischen Paaren von Kacheln aus der ersten Mehrzahl von Kacheln; und unter Nutzung der Ähnlichkeiten zwischen den Paaren von Kacheln erfolgenden Bestimmen der Sequenz von geordneten Kacheln auf Grundlage dessen, dass die Sequenz eine Summe von Nichtähnlichkeiten zwischen aufeinanderfolgenden Kacheln in der Sequenz von geordneten Kacheln minimiert.
  16. Einrichtung nach Anspruch 14 oder 15, wobei die Sequenz von geordneten Kacheln eine erste Teilsequenz und eine zweite Teilsequenz beinhaltet, die erste Teilsequenz einen ersten Satz von Kacheln aus der ersten Mehrzahl von Kacheln beinhaltet und die zweite Teilsequenz einen zweiten Satz von Kacheln aus der ersten Mehrzahl von Kacheln beinhaltet.
  17. Einrichtung nach einem der Ansprüche 14 bis 16, wobei der Prozessor des Weiteren konfiguriert ist zum: Unterteilen eines zweiten Texturbildes in eine zweite Mehrzahl von Kacheln, wobei das zweite Texturbild zur Anwendung auf wenigstens eines von dem ersten dreidimensionalen Gitter oder einem zweiten dreidimensionalen Gitter konfiguriert ist; wobei das Sortieren ein Sortieren der ersten Mehrzahl von Kacheln und der zweiten Mehrzahl von Kacheln zu der Sequenz von geordneten Kacheln beinhaltet; und wobei das Generieren des codierten Videos ein Codieren der ersten Mehrzahl von Kacheln und der zweiten Mehrzahl von Kacheln auf Grundlage der Sequenz von geordneten Kacheln beinhaltet.
  18. Einrichtung nach Anspruch 17, wobei das erste Texturbild und das zweite Texturbild zeitlich unabhängig sind, wobei eine erste Auflösung des ersten Texturbildes und eine zweite Auflösung des zweiten Texturbildes verschiedene Auflösungen sind und wobei die erste Mehrzahl von Kacheln und die zweite Mehrzahl von Kacheln eine gleichmäßige Kachelgröße aufweisen.
  19. Einrichtung nach Anspruch 17 oder 18, wobei der Prozessor des Weiteren konfiguriert ist zum: Bestimmen von Ähnlichkeiten zwischen Paaren von Kacheln aus der ersten Mehrzahl von Kacheln und der zweiten Mehrzahl von Kacheln; und unter Nutzung der Ähnlichkeiten zwischen den Paaren von Kacheln erfolgenden Bestimmen der Sequenz von geordneten Kacheln auf Grundlage dessen, dass die Sequenz eine Summe von Nichtähnlichkeiten zwischen aufeinanderfolgenden Kacheln in der Sequenz von geordneten Kacheln minimiert.
  20. Nichttemporäres computerlesbares Medium, das dafür bereitgestellt ist, dass auf ihm Anweisungen gespeichert sind, die bei Ausführung durch einen oder mehrere Prozessoren den einen oder die mehreren Prozessoren veranlassen zum: Unterteilen eines ersten Texturbildes in eine erste Mehrzahl von Kacheln, wobei das erste Texturbild zur Anwendung auf wenigstens ein erstes dreidimensionales Gitter konfiguriert ist; Sortieren der ersten Mehrzahl von Kacheln zu einer Sequenz von geordneten Kacheln; und Bereitstellen der Sequenz von geordneten Kacheln zum Generieren eines codierten Videos, wobei das Generieren des codierten Videos ein Codieren der ersten Mehrzahl von Kacheln auf Grundlage der Sequenz von geordneten Kacheln beinhaltet.
DE102020000306.0A 2019-03-21 2020-01-17 Generieren einer Sequenz von Texturen zur Videoversendung Pending DE102020000306A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962821958P 2019-03-21 2019-03-21
US62/821,958 2019-03-21
US16/584,591 2019-09-26
US16/584,591 US11049290B2 (en) 2019-03-21 2019-09-26 Generation of a sequence of textures for video delivery

Publications (1)

Publication Number Publication Date
DE102020000306A1 true DE102020000306A1 (de) 2020-09-24

Family

ID=69636819

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020000306.0A Pending DE102020000306A1 (de) 2019-03-21 2020-01-17 Generieren einer Sequenz von Texturen zur Videoversendung

Country Status (2)

Country Link
DE (1) DE102020000306A1 (de)
GB (1) GB2584747B (de)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8019167B2 (en) * 2007-01-03 2011-09-13 Human Monitoring Ltd. Compressing high resolution images in a low resolution video
CN104702954B (zh) * 2013-12-05 2017-11-17 华为技术有限公司 视频编码方法及装置
EP3016075A1 (de) * 2014-11-03 2016-05-04 Graphine NV Vorhersagesystem für Textur-Streaming
US10129559B2 (en) * 2016-06-22 2018-11-13 Microsoft Technology Licensing, Llc Image compression

Also Published As

Publication number Publication date
GB202000822D0 (en) 2020-03-04
GB2584747B (en) 2022-06-01
GB2584747A (en) 2020-12-16

Similar Documents

Publication Publication Date Title
US11528414B2 (en) Method and apparatus for reconstructing 360-degree image according to projection format
US11962744B2 (en) Image data encoding/decoding method and apparatus
DE112018005250T5 (de) Punktwolkenkomprimierung
DE69831961T2 (de) Bildobjekterzeugungsverfahren für objektbasierte kodierungssysteme unter verwendung von masken und gerundeten mittelwerten
US11580675B2 (en) Generation of a sequence of textures for video delivery
DE102016125379B4 (de) Bewegungsvektoraufteilung des letzten Frames
DE102013015821B4 (de) System und Verfahren zur Verbesserung der Videokodierung unter Verwendung von Inhaltsinformation
CN113785593B (zh) 用于视频编解码的方法和装置
DE102020127627A1 (de) Verfahren und System zum Videocodieren mit Intra-Block-Kopieren
JP2017513318A (ja) 改善されたスクリーンコンテンツおよび混合コンテンツの符号化
DE102019209067A1 (de) Adaptive in-loop filtering for video coding
DE112020004716T5 (de) Objektbasierte volumetrische videocodierung
DE102019201370A1 (de) Verarbeitung von multidirektionalen bildern in räumlich geordneten videokodieranwendungen
DE102020125206A1 (de) Verfahren und system zur mehrkanalvideocodierung mit frameratenänderung und kanalübergreifender referenzierung
CN107409212A (zh) 用于编码和解码的使用变换系数的逐渐更新
DE102022106872A1 (de) Verfahren und system zur mehrschichtigen videocodierung
Yang et al. Real-time 3d video compression for tele-immersive environments
DE102013013190A1 (de) Erweitern von Vorhersagemodi und Leistungsvermögen von Video-Codecs
Kovács et al. Architectures and codecs for real-time light field streaming
Mallik et al. Mixed-resolution HEVC based multiview video codec for low bitrate transmission
WO2019130794A1 (ja) 映像処理装置
Santamaria et al. Coding of volumetric content with MIV using VVC subpictures
DE102020000306A1 (de) Generieren einer Sequenz von Texturen zur Videoversendung
JP7376211B2 (ja) 点群コーディングにおけるカメラパラメータのシグナリング
CN114365499A (zh) 使用l型划分树的帧内编码

Legal Events

Date Code Title Description
R012 Request for examination validly filed