-
STAND DER TECHNIK
-
Virtual Reality (VR) ermöglicht es Benutzern, eine immersive künstliche Umgebung derart zu erleben und/oder damit zu interagieren, dass der Benutzer das Gefühl hat, sich physisch in dieser Umgebung zu befinden. Zum Beispiel können Virtual-Reality-Systeme Benutzern stereoskopische Szenen anzeigen, um eine Illusion der Tiefe zu erzeugen, und ein Computer kann den Szeneninhalt in Echtzeit anpassen, um die Illusion bereitzustellen, dass sich der Benutzer innerhalb der Szene bewegt. Wenn der Benutzer Bilder durch ein Virtual-Reality-System anzeigt, kann der Benutzer somit das Gefühl haben, sich in einer Egoperspektive innerhalb der Szenen zu bewegen. In ähnlicher Weise kombiniert Mixed Reality (MR) computergenerierte Informationen (als virtuelle Inhalte bezeichnet) mit Bildern der realen Welt oder einer Ansicht der realen Welt, um eine Ansicht der Welt eines Benutzers zu erweitern oder dieser Inhalte hinzuzufügen, oder kombiniert alternativ virtuelle Darstellungen von Objekten der realen Welt mit Ansichten einer dreidimensionalen (3D) virtuellen Welt. Die simulierten Umgebungen der Virtual Reality und/oder die gemischten Umgebungen der Mixed Reality können somit genutzt werden, um eine interaktive Benutzererfahrung für mehrere Anwendungen bereitzustellen.
-
KURZDARSTELLUNG
-
Es werden verschiedene Ausführungsformen eines Videocodiersystems beschrieben, das hochauflösende Videoquellen mit niedrigen Latenzen zur Übertragung über eine Kommunikationsverbindung (z. B. eine drahtlose Verbindung) an eine Vorrichtung zum Decodieren und Anzeigen codieren kann. Ausführungsformen des Videocodiersystems können auch eine schrittweise Leistungsminderung von codiertem Video bereitstellen, das an die Vorrichtung übertragen wird, um eine gewünschte Bildrate unter variierenden Bedingungen, wie Variationen der Kanalkapazität der Kommunikationsverbindung, beizubehalten. Eine beispielhafte Anwendung des Videocodiersystems besteht in Virtual- oder Mixed-Reality-Systemen, in denen Videobilder, die virtuelle Inhalte enthalten, durch eine Basisstation gerendert, codiert und zum Decodieren und zur Anzeige an eine Vorrichtung (z. B. einen Notebook- oder Laptop-Computer, eine Pad- oder Tablet-Vorrichtung, ein Smartphone oder eine am Kopf befestigte Anzeige (HMD), wie ein Headset, einen Helm oder eine Brille, die durch einen Benutzer am Körper getragen werden können) übertragen werden.
-
In einigen Ausführungsformen kann das Videocodiersystem vor dem Codieren eine Wavelet-Transformation an den Pixeldaten durchführen, um die Pixeldaten in Frequenzbänder zu zerlegen. Die Frequenzbänder werden dann in Blöcke organisiert, die einem blockbasierten Codierer zur Codierung/Komprimierung bereitgestellt werden. Die codierten Frequenzdaten werden dann an eine drahtlose Schnittstelle gesendet, welche die codierten Frequenzdaten paketiert und die Pakete an die Empfangsvorrichtung überträgt. An der Empfangsvorrichtung werden die codierten Daten entpackt und durch einen blockbasierten Decodierer geleitet, um die Frequenzbänder wiederherzustellen. Die Wavelet-Synthese wird dann an den wiederhergestellten Frequenzbändern durchgeführt, um die Pixeldaten zur Anzeige zu rekonstruieren.
-
Verschiedene Verfahren und Einrichtungen können durch das Videocodiersystem implementiert werden, um die Zielbildrate durch die drahtlose Verbindung beizubehalten und um die Latenz beim Rendern, bei der Übertragung und bei der Anzeige eines Bilds zu minimieren und um eine schrittweise Leistungsminderung von codiertem Video, das an die Vorrichtung übertragen wird, bereitzustellen, um eine gewünschte Bildrate unter variierenden Bedingungen, wie Variationen der Kanalkapazität der drahtlosen Verbindung, beizubehalten.
-
Ein Ziel eines Systems, das eine Ausführungsform des Videocodiersystems implementiert, kann darin bestehen, eine sehr niedrige Latenz (z. B. 4-5 Millisekunden) zwischen dem Zeitpunkt, zu dem der virtuelle Inhalt an der Basisstation gerendert wird, und dem Zeitpunkt, zu dem der virtuelle Inhalt an der Vorrichtung angezeigt wird, bereitzustellen, während Fehler (z. B. verworfene Pakete) minimiert werden und die Bandbreitennutzung über die drahtlose Verbindung maximiert wird. Ausführungsformen des Videocodiersystems können ein Ratensteuerungsverfahren implementieren, um beim Codieren von Daten, die über die drahtlose Verbindung an die Vorrichtung übertragen werden sollen, das Erreichen der angestrebten niedrigen Latenz für das System zu unterstützen.
-
In einigen Ausführungsformen schließt das Videocodiersystem eine Wavelet-Transformationskomponente ein, die eine 2-Schicht-Wavelet-Zerlegung durchführt, die Blöcke von Pixeln aus einer Scheibe eines Bilds in mehrere verschiedene Frequenzbänder zerlegt, gefolgt von einem blockbasierten Codierer, wie HEVC, der die Frequenzbänder codiert. In einigen Ausführungsformen kann eine Ratensteuerungskomponente, um eine Ratensteuerung unter den strengen Latenzanforderungen des VR-/MR-Systems durchzuführen, anstatt über eine Zeitkonstante eines Bilds oder von zwei Bildern zu arbeiten, um Codiererparameter anzupassen, Codiererparameter (z. B. Quantisierungsparameter für die Frequenzbänder) für jede Scheibe einstellen. In einigen Ausführungsformen können die Frequenzbänder für eine Scheibe nach der Wavelet-Transformation im lokalen Speicher gepuffert werden, sodass Komplexitätsstatistiken über die Frequenzbänder vor dem Codieren berechnet werden können, zum Beispiel durch eine Komplexitätsanalysekomponente des Videocodiersystems. In einigen Ausführungsformen können die Komplexitätsstatistiken eines oder mehrere von einem Pixelgradienten und einer Größenvarianz für die CTU-Blöcke einschließen, sind jedoch nicht darauf beschränkt. Die Komplexitätsstatistiken können dann durch eine Ratensteuerungskomponente beim Bestimmen von Quantisierungsparametern für die Frequenzbänder zum Modulieren der Rate in dem Codierer für die derzeitige Scheibe verwendet werden. Das Berechnen der Komplexitätsstatistiken auf den gepufferten Frequenzbändern ermöglicht es dem Videocodiersystem, das Maß an Komplexität in einer Scheibe vor dem Codieren der Scheibe zu schätzen.
-
In einigen Ausführungsformen kann die Ratensteuerungskomponente Statistiken für eines oder mehrere zuvor verarbeitete Bilder untersuchen, um eine tatsächliche Anzahl von Bits zu bestimmen, die verwendet wurden, um zusammen angeordnete Blöcke oder Scheiben des Bilds/der Bilder zu codieren. Diese Informationen können dann in Kombination mit den Komplexitätsstatistiken für eine derzeitige Scheibe beim Bestimmen der Quantisierungsparameter für die derzeitige Scheibe verwendet werden.
-
In einigen Ausführungsformen können die Quantisierungsparameter für die Frequenzbänder gemeinsam berechnet werden, um die gesamte angezeigte Qualität der Bilder zu optimieren, nachdem die Decodiererrekonstruktion und die Wavelet-Synthese an der Vorrichtung durchgeführt wurden. Ein Verfahren zur Ratenzuordnung zwischen den Frequenzbändern besteht darin, in jedem der Frequenzbänder einen Arbeitspunkt zu finden, der zu gleichen Flanken auf der Arbeitsratenverzerrungskurve führt. In einigen Ausführungsformen kann die Betriebsratenverzerrungskurve unter Verwendung einer Kombination von Statistiken aus der Entropiecodierstufe der Codierer-Pipeline geschätzt werden, wobei die Rate der Koeffizienten für Quantisierungsparameterschritte von 6 gut näherungsweise bestimmt werden kann.
-
In einigen Ausführungsformen kann ein interessierender Bereich innerhalb eines Bilds (z. B. der foveale Bereich) vorhanden sein, der eine höhere Auflösung als der umgebende Bereich (z. B. der periphere Bereich) in demselben Bild aufweisen sollte. In einigen Ausführungsformen können Komplexitätsstatistiken aus einem vorhergehenden Bild zusammen mit dem fovealen Bereich aus dem vorhergehenden Bild gespeichert und beim Berechnen der Quantisierungsparameter für die Frequenzbänder in Scheiben eines derzeitigen Bilds verwendet werden. Als ein Beispiel kann für jeden Block, der codiert werden soll, der foveale Bereich eines vorhergehenden Bilds verwendet werden, um die Komplexitätsstatistiken zu modulieren, die für das vorhergehende Bild berechnet wurden. Die resultierenden Komplexitätsstatistiken können dann zusätzlich zu den Komplexitätsstatistiken verwendet werden, die für Scheiben eines derzeitigen Bilds beim Bestimmen der Quantisierungsparameter berechnet werden.
-
In einigen Ausführungsformen kann die Ratensteuerungskomponente Codiererparameter (z. B. Quantisierungsparameter für die Frequenzbänder oder Prioritätsstufen) auf der Blockebene anstatt auf der Scheibenebene anpassen. In einigen Ausführungsformen können Komplexitätsstatistiken für jeden Block einer Scheibe berechnet werden und können Quantisierungsparameter für die Blöcke bestimmt werden.
-
Figurenliste
-
- 1 ist ein Blockdiagramm, das ein Videocodiersystem, das Pixeldaten vor dem Codieren unter Verwendung einer Wavelet-Transformation in Frequenzbänder zerlegt, gemäß mindestens einigen Ausführungsformen veranschaulicht.
- 2 veranschaulicht ein Videocodiersystem, das mehrere Codierer einschließt, die Kacheln aus Bildern parallel verarbeiten, gemäß mindestens einigen Ausführungsformen.
- 3A veranschaulicht ein beispielhaftes Bild, das in Scheiben und Kacheln unterteilt ist, gemäß mindestens einigen Ausführungsformen.
- 3B veranschaulicht eine beispielhafte Kachel, die in Blöcke unterteilt ist, gemäß mindestens einigen Ausführungsformen.
- 3C veranschaulicht das Durchführen einer Wavelet-Transformation eines Pixelblocks, der Pixeldaten speichert, um Frequenzbanddaten vor dem Codieren zu erzeugen, gemäß mindestens einigen Ausführungsformen.
- 4 ist ein übersichtartiges Flussdiagramm eines Betriebsverfahrens für VR-/MR-Systeme, die Videocodiersysteme, wie in 1 und 2 veranschaulicht, gemäß mindestens einigen Ausführungsformen einschließen.
- 5 ist ein Flussdiagramm eines Betriebsverfahrens für ein Videocodiersystem, wie in
- 1 veranschaulicht, gemäß mindestens einigen Ausführungsformen.
- 6 ist ein Flussdiagramm eines Betriebsverfahrens für ein Videocodiersystem, wie in
- 2 veranschaulicht, gemäß mindestens einigen Ausführungsformen.
- 7 ist ein Blockdiagramm, das ein Videocodiersystem, wie in 1 oder 2 veranschaulicht, in dem Komplexitätsstatistiken für die Frequenzbänder berechnet und beim Erzeugen von Quantisierungsparametern zum Codieren verwendet werden, gemäß mindestens einigen Ausführungsformen veranschaulicht.
- 8 ist ein Flussdiagramm eines Betriebsverfahrens für ein Videocodiersystem wie in
- 7 veranschaulicht, gemäß mindestens einigen Ausführungsformen.
- 9 veranschaulicht ein beispielhaftes VR-/MR-System, das ein Videocodiersystem implementieren kann, gemäß mindestens einigen Ausführungsformen.
- 10 ist ein Blockdiagramm, das Komponenten eines VR-/MR-Systems, wie in 9 veranschaulicht, gemäß mindestens einigen Ausführungsformen veranschaulicht.
-
Diese Patentschrift beinhaltet Bezugnahmen auf „eine Ausführungsform“. Wenn der Ausdruck „in einer Ausführungsform“ auftaucht, ist damit nicht unbedingt immer dieselbe Ausführungsform gemeint. Besondere Merkmale, Strukturen oder Eigenschaften können auf jegliche geeignete Weise kombiniert werden, die mit dieser Offenbarung im Einklang steht.
-
„Umfassen.“ Dies ist ein offener Begriff. Wenn er in den Ansprüchen verwendet wird, schließt dieser Begriff eine zusätzliche Struktur oder zusätzliche Schritte nicht aus. Dies soll am Beispiel des folgenden Anspruchs verdeutlicht werden: „Vorrichtung, eine oder mehrere Prozessoreinheiten umfassend...“ Ein solcher Anspruch schließt nicht aus, dass die Vorrichtung zusätzliche Komponenten aufweist (z. B. eine Netzwerkschnittstelleneinheit, Grafikschaltungen usw.).
-
„Dafür ausgelegt.“ Verschiedene Einheiten, Schaltungen oder andere Komponenten können als „dafür ausgelegt“, eine oder mehrere Aufgaben zu erfüllen, beschrieben oder beansprucht werden. In einem solchen Kontext wird „dafür ausgelegt“ verwendet, um eine Struktur näher zu bezeichnen, indem angegeben wird, dass die Einheiten/Schaltungen/Komponenten eine Struktur (z. B. eine Schaltung) aufweisen, die diese Aufgabe(n) während des Betriebs ausführt. Somit kann man sagen, dass die Einheit/Schaltung/Komponente dafür konfiguriert ist, die Ausgabe auszuführen, auch wenn die bezeichnete Einheit/Schaltung/Komponente gerade nicht in Betrieb ist (z. B. nicht eingeschaltet ist). Die Einheiten/Schaltungen/Komponenten, die mit dem Ausdruck „dafür ausgelegt“ verwendet werden, schließen Hardware - zum Beispiel Schaltungen, Speicher, in dem Programmanweisungen gespeichert sind, die ausführbar sind, um den Betrieb zu implementieren, usw. - ein. Wenn angegeben wird, dass eine Einheit/Schaltung/Komponente „dafür ausgelegt“ ist, eine oder mehrere Aufgaben durchzuführen, ist ausdrücklich nicht beabsichtigt, sich auf die Anwendung von 35 U.S.C. § 112 Absatz (f) für diese Einheit/Schaltung/Komponente zu berufen. Außerdem kann „dafür ausgelegt“ eine allgemeine Struktur (z. B. eine allgemeine Schaltlogik) einschließen, die durch Software oder Firmware (z. B. eine FPGA oder eine Universalprozessor-Ausführungssoftware) gesteuert wird, um auf eine Weise zu arbeiten, die in der Lage ist, die vorliegende(n) Aufgabe(n) durchzuführen. „Dafür ausgelegt“ kann auch das Adaptieren eines Herstellungsverfahrens (z. B. einer Halbleiterherstellungsanlage) zur Herstellung von Vorrichtungen (z. B. integrierten Schaltungen) beinhalten, die daran angepasst sind, eine oder mehrere Aufgaben zu implementieren oder auszuführen.
-
„Erste“, „zweite“ usw. Wie hierin verwendet, werden diese Begriffe als Bezeichnungen für nachgestellte Nomina verwendet und implizieren keine Reihenfolge (z. B. räumlich, zeitlich, logisch usw.). Zum Beispiel kann eine Pufferschaltung hierin als eine beschrieben werden, die Schreiboperationen für „erste“ und „zweite“ Werte durchführt. Die Begriffe „erste“ und „zweite“ implizieren nicht unbedingt, dass der erste Wert von dem zweiten Wert geschrieben werden muss.
-
„Basierend auf‟ oder „abhängig von“. Wie hierin verwendet, werden diese Begriffe verwendet, um einen oder mehrere Faktoren zu beschreiben, die eine Bestimmung beeinflussen. Diese Begriffe schließen zusätzliche Faktoren, die eine Bestimmung beeinflussen können, nicht aus. Das heißt, eine Entscheidung kann ausschließlich auf diesen Faktoren basieren oder sie kann zumindest zum Teil auf diesen Faktoren basieren. Man betrachte den Ausdruck „Bestimmen von A auf Basis von B“. Obwohl in diesem Fall B ein Faktor ist, der die Bestimmung von A beeinflusst, schließt dieser Ausdruck nicht aus, dass A auch auf Basis von C bestimmt wird. In anderen Fällen kann A ausschließlich auf Basis von B bestimmt werden.
-
„Oder“. Bei Verwendung in den Ansprüchen wird der Begriff „oder“ als inklusives „oder“ und nicht als exklusives „oder“ verwendet. So bedeutet zum Beispiel die Wendung „mindestens eines von x, y oder z“ ein beliebiges von x, y und z sowie eine beliebige Kombination davon.
-
DETAILLIERTE BESCHREIBUNG
-
Verschiedene Ausführungsformen eines Videocodiersystems werden beschrieben. Ausführungsformen des Videocodiersystems können hochauflösende Videoquellen mit niedrigen Latenzen zur Übertragung über eine Kommunikationsverbindung (z. B. eine drahtlose Verbindung) an eine Vorrichtung zum Decodieren und zur Anzeige codieren. Ausführungsformen des Videocodiersystems können auch eine schrittweise Leistungsminderung von codiertem Video bereitstellen, das an die Vorrichtung übertragen wird, um eine gewünschte Bildrate unter variierenden Bedingungen, wie Variationen der Kanalkapazität der Kommunikationsverbindung, beizubehalten.
-
Eine beispielhafte Anwendung des Videocodiersystems besteht in Virtual- oder Mixed-Reality-Systemen, in denen Videobilder, die virtuelle Inhalte enthalten, gerendert, codiert und zum Decodieren und zur Anzeige an eine Vorrichtung übertragen werden. Ausführungsformen eines Virtual- oder Mixed-Reality-Systems (hierin als VR-/MR-System bezeichnet) werden beschrieben, in denen Ausführungsformen des Videocodiersystems implementiert werden können. In einigen Ausführungsformen kann das VR-/MR-System eine Vorrichtung (z. B. eine Pad- oder Tablet-Vorrichtung, ein Smartphone oder ein Headset, einen Helm oder eine Brille, die durch den Benutzer getragen werden, hierin als eine am Kopf befestigte Anzeige (HMD) bezeichnet) und eine separate Rechenvorrichtung, hierin als eine Basisstation bezeichnet, einschließen. In einigen Ausführungsformen können die Vorrichtung und die Basisstation jeweils eine Drahtloskommunikationstechnologie einschließen, die es der Vorrichtung und der Basisstation ermöglicht, über eine drahtlose Verbindung zu kommunizieren und Daten auszutauschen. In einigen Ausführungsformen kann die Vorrichtung Sensoren einschließen, die Informationen über die Umgebung des Benutzers (z. B. Video, Tiefeninformationen, Beleuchtungsinformationen usw.) und Informationen über den Benutzer (z. B. die Mienen, Augenbewegung, Handgesten usw. des Benutzers) sammeln. Die durch die Sensoren gesammelten Informationen können über die drahtlose Verbindung an die Basisstation übertragen werden. Die Basisstation kann Software und Hardware (z. B. Prozessoren (System-on-a-Chip (SOC), CPUs, Bildsignalprozessoren (ISPs), Grafikverarbeitungseinheiten (GPUs), Codierer/Decodierer (Codecs) usw.), Speicher usw.) einschließen, die dafür ausgelegt sind, Bilder, die virtuelle Inhalte einschließen, mindestens teilweise basierend auf den Sensorinformationen, die über die drahtlose Verbindung von der Vorrichtung empfangen werden, zu erzeugen und zu rendern. Die Basisstation kann auch eine Ausführungsform des Videocodiersystems, wie hierin beschrieben, einschließen, welche die gerenderten Bilder vorfiltern, komprimieren und über die drahtlose Verbindung zur Anzeige an die Vorrichtung übertragen kann.
-
In einigen Ausführungsformen kann das VR-/MR-System eine proprietäre Drahtloskommunikationstechnologie implementieren, die eine hochdirektionale drahtlose Verbindung zwischen der Vorrichtung und der Basisstation bereitstellt. In einigen Ausführungsformen können die Direktionalität und Bandbreite der Drahtloskommunikationstechnologie mehrere Vorrichtungen unterstützen, die gleichzeitig mit der Basisstation kommunizieren, um es somit mehreren Benutzern zu ermöglichen, das System gleichzeitig in einer am gleichen Standort befindlichen Umgebung zu verwenden. Jedoch können andere kommerzielle (z. B. Wi-Fi, Bluetooth usw.) oder proprietäre Drahtloskommunikationstechnologien in einigen Ausführungsformen unterstützt werden.
-
Primäre Einschränkungen, die bei einer drahtlosen Verbindung zu berücksichtigen sind, schließen Bandbreite und Latenz ein. Ein Ziel des VR-/MR-Systems besteht darin, eine hochauflösende virtuelle Anzeige mit breitem Sichtfeld (FOV) mit einer Bildrate bereitzustellen, um dem Benutzer eine qualitativ hochwertige VR-/MR-Ansicht bereitzustellen. Ein weiteres Ziel ist es, die Latenz zwischen der Zeit, zu der ein Bild durch die Basisstation gerendert wird, und der Zeit, zu der das Bild durch die Vorrichtung angezeigt wird, zu minimieren. Jedoch kann die Kanalkapazität der drahtlosen Verbindung mit der Zeit variieren, und die drahtlose Verbindung kann somit nur eine bestimmte Menge an Informationen unterstützen, die zu einem gegebenen Zeitpunkt übertragen werden sollen.
-
Hierin werden verschiedene Verfahren und Einrichtungen beschrieben, die durch das Videocodiersystem implementiert werden können, um die Zielbildrate durch die drahtlose Verbindung beizubehalten und um die Latenz beim Rendern, bei der Übertragung und bei der Anzeige eines Bilds zu minimieren. Zusätzlich können die Verfahren und Einrichtungen eine schrittweise Leistungsminderung von codiertem Video bereitstellen, das an die Vorrichtung übertragen wird, um eine gewünschte Bildrate unter variierenden Bedingungen, wie Variationen der Kanalkapazität der Kommunikationsverbindung, beizubehalten.
-
In einigen Ausführungsformen kann das Videocodiersystem vor dem Codieren eine Wavelet-Transformation an den Pixeldaten durchführen, um die Pixeldaten in Frequenzbänder zu zerlegen. Die Frequenzbänder werden dann in Blöcke organisiert, die einem blockbasierten Codierer zur Codierung/Komprimierung bereitgestellt werden. Als ein Beispiel kann ein Bild in 128×128-Blöcke unterteilt werden, und eine zweistufige Wavelet-Zerlegung kann auf jeden 128x128-Block angewendet werden, um 16 32x32-Blöcke von Frequenzdaten zu erzeugen, die sieben Frequenzbänder darstellen, die dann an einen Codierer (z. B. einen High Efficiency Video Coding-Codierer (HEVC-Codierer)) gesendet werden können, um codiert zu werden. Die codierten Frequenzdaten werden dann an eine drahtlose Schnittstelle gesendet, welche die codierten Frequenzdaten paketiert und die Pakete an die Empfangsvorrichtung (z. B. eine HMD, eine Pad- oder Tablet-Vorrichtung, ein Smartphone usw.) überträgt. An der Empfangsvorrichtung werden die codierten Daten entpackt und durch einen blockbasierten Decodierer geleitet, um die Frequenzbänder wiederherzustellen. Die Wavelet-Synthese wird dann an den wiederhergestellten Frequenzbändern durchgeführt, um die Pixeldaten zur Anzeige zu rekonstruieren.
-
Während allgemein Ausführungsformen beschrieben werden, in denen die Wavelet-Transformation eine zweistufige Wavelet-Zerlegung ist, die auf jeden Pixelblock aus einem Videobild angewendet wird, kann in verschiedenen Ausführungsformen die Wavelet-Zerlegung eine beliebige Anzahl von Stufen (z. B. eine Stufe, zwei Stufen, drei Stufen, vier Stufen usw.) sein und kann angepasst werden, um einen Kompromiss zwischen der Qualität des codierten Bilds und der Komplexität der zu codierenden Blöcke zu schließen.
-
In einigen Ausführungsformen kann das Videocodiersystem ein Rendern, ein Codieren und eine Übertragung auf Scheibenbasis durchführen. Das Rendern, Codieren und Übertragen ganzer Bilder kann eine Latenz- und Speicherauswirkung haben, weil jedes Bild abgeschlossen, gespeichert und dann an die nächste Stufe des VR-/MR-Systems übertragen werden muss. Beim Rendern auf Scheibenbasis kann die Basisstation, anstatt ganze Bilder in der Basisstation zu rendern und zu codieren und die gerenderten Bilder an die Vorrichtung zu übertragen, Teile von Bildern (als Scheiben bezeichnet) rendern und codieren und die codierten Scheiben an die Vorrichtung übertragen, wenn sie fertig sind. Eine Scheibe kann zum Beispiel eine Zeile von 128x128-Blöcken oder zwei oder mehr Zeilen von Blöcken sein. Rendern und Codieren auf Scheibenbasis kann dazu beitragen, die Latenz zu reduzieren, und kann auch die Menge an Speicher reduzieren, die zum Puffern benötigt wird, was den Speicherbedarf auf dem/den Chip(s) oder dem/den Prozessor(en) sowie Leistungsanforderungen reduzieren kann.
-
In einigen Ausführungsformen kann das Videocodiersystem ein Rendern, ein Codieren und eine Übertragung auf Kachelbasis durchführen. Beim Rendern, Codieren und Übertragen auf Kachelbasis kann jede Scheibe in mehrere Kacheln (z. B. vier Kacheln) unterteilt werden, und die Basisstation kann die Kacheln rendern und codieren und die codierten Kacheln an die Vorrichtung übertragen, wenn sie bereit sind.
-
In einigen Ausführungsformen kann das Videocodiersystem ein Codieren auf Kachelbasis unter Verwendung eines einzelnen Codierers durchführen, um Kacheln aus jeder Scheibe zu verarbeiten. In einigen Ausführungsformen kann das Videocodiersystem jedoch ein Codieren auf Kachelbasis unter Verwendung mehrerer Codierer durchführen, um jeweilige Kacheln aus jeder Scheibe zu verarbeiten. Zum Beispiel kann in einigen Ausführungsformen jede Scheibe in vier Kacheln unterteilt sein, wobei jede Kachel mehrere 128×128-Blöcke einschließt, und zwei Codierer (e0 und el) können auf zwei Kacheln aus jeder Scheibe arbeiten (z. B. arbeitet e0 auf t0 und t1; el arbeitet auf t2 und t3). Jeder Codierer kann das Verarbeiten von Blöcken aus unterschiedlichen Frequenzbändern zwischen seinen zwei Kacheln multiplexen, um 16 Zeiteinheiten zwischen dem Verarbeiten von Blöcken aus demselben Frequenzband zu ermöglichen. Durch Multiplexen des Verarbeitens von Blöcken zwischen zwei Kacheln können Abhängigkeiten zwischen Blöcken in einem Frequenzband auf geeignete Weise gehandhabt werden. Während Ausführungsformen beschrieben werden, in denen jede Scheibe in vier Kacheln unterteilt ist und zwei Codierer auf jeweiligen Kacheln aus jeder Scheibe arbeiten, können in einigen Ausführungsformen Scheiben in mehrere Kacheln (z. B. sechs oder acht Kacheln) unterteilt werden, und in einigen Ausführungsformen können mehrere Codierer (z. B. drei oder vier Codierer) verwendet werden.
-
In einigen Ausführungsformen kann das Videocodiersystem ein Vorfiltern der Pixeldaten in Bildern vor der Wavelet-Transformation durchführen. Ein Vorfiltern kann zum Beispiel die Auflösung der Bilder reduzieren, die vor dem Durchführen der Wavelet-Transformation, dem Codieren und der Übertragung der Bilder an die Vorrichtung über die drahtlose Verbindung durch die Basisstation gerendert werden, was zur Verbesserung der Komprimierung beitragen kann und die Latenzzeit und Bandbreitennutzung auf der drahtlosen Verbindung reduzieren kann.
-
In einigen Ausführungsformen, in denen die Vorrichtung eine HMD ist, kann das Vorfiltern ein Durchführen einer Linsenverzerrung an den Bildern auf der Basisstation vor der Wavelet-Transformation einschließen. Die Linsenverzerrung wird durchgeführt, um die Verzerrung der Bilder zu korrigieren, die durch die Linsen an der HMD, durch welche die Bilder betrachtet werden, eingeführt wird, wodurch die Qualität der Bilder verbessert wird. In einigen Ausführungsformen kann die HMD Linsenverzerrungsdaten für die Linsen, die zum Beispiel durch einen Kalibrierungsprozess erzeugt werden, speichern und kann die Linsenverzerrungsdaten der Basisstation über die drahtlose Verbindung bereitstellen. Die Basisstation kann dann die Linsenverzerrung basierend auf den Linsenverzerrungsdaten für diese HMD an den Bildern durchführen. Bei herkömmlichen VR-/MR-Systemen wird die Linsenverzerrung nach dem Decodieren und vor der Anzeige an der HMD durchgeführt. Das Durchführen der Linsenverzerrung an der Basisstation in der Vorfilterstufe kann die Auflösung der Bilder vor dem Durchführen der Wavelet-Transformation und dem Codieren reduzieren, was zur Verbesserung der Komprimierung beitragen kann, und kann die Latenz und Bandbreitennutzung auf der drahtlosen Verbindung reduzieren. Außerdem muss durch das Durchführen der Linsenverzerrung an der Basisstation in der Vorfilterstufe anstatt an der HMD nach dem Decodieren im Gegensatz zu einem Durchführen eines Filterns an der Basisstation, um die Auflösung vor dem Codieren zu reduzieren, und einem anschließenden Durchführen eines Linsenverzerrungsfilterns an der HMD möglicherweise nur einmal ein Filtern der Bilddaten durchgeführt werden.
-
In einigen Ausführungsformen kann das Vorfiltern ein Filtern einschließen, um die Auflösung in peripheren Bereichen zu reduzieren, während eine höhere Auflösung in fovealen Bereichen beibehalten wird. In diesem Verfahren können Blickverfolgungsinformationen, die von der Vorrichtung erhalten werden, verwendet werden, um die Richtung zu identifizieren, in die der Benutzer derzeit blickt. Menschliche Augen können im fovealen Bereich eine höhere Auflösung wahrnehmen als im peripheren Bereich. Somit kann ein Bereich des Bilds, welcher der Fovea entspricht, (als der foveale Bereich bezeichnet) mindestens teilweise basierend auf der bestimmten Blickrichtung identifiziert werden. In einigen Ausführungsformen kann der periphere Bereich (d. h. der Abschnitt des Bilds außerhalb des fovealen Bereichs) vorgefiltert werden, um Informationen basierend auf der Kenntnis des menschlichen Sichtsystems zu reduzieren, zum Beispiel durch Filtern von Hochfrequenzinformationen und/oder Erhöhen der Farbkomprimierung. In einigen Ausführungsformen kann das Filtermaß, das auf den peripheren Bereich angewendet wird, in Richtung des Bildumfangs zunehmen. Ein Vorfiltern des peripheren Bereichs kann dazu beitragen, eine verbesserte Komprimierung des Bilds bereitzustellen.
-
1 ist ein Blockdiagramm, das ein Videocodiersystem 120, das Pixeldaten vor dem Codieren unter Verwendung einer Wavelet-Transformation in Frequenzbänder zerlegt, gemäß mindestens einigen Ausführungsformen veranschaulicht. Ein VR-/MR-System 10 kann mindestens eine Vorrichtung 150 (z. B. eine Pad- oder Tablet-Vorrichtung, ein Smartphone oder eine HMD, wie ein Headset, einen Helm oder eine Brille, die durch einen Benutzer am Körper getragen werden können) und eine Rechenvorrichtung 100 (hierin als Basisstation bezeichnet) einschließen. Die Basisstation 100 rendert VR- oder MR-Bilder, einschließlich virtueller Inhalte, codiert die Bilder und überträgt die codierten Bilder über eine drahtlose Verbindung 180 an die Vorrichtung 150 zum Decodieren und zur Anzeige durch die Vorrichtung 150.
-
In einigen Ausführungsformen kann die Vorrichtung 150 Sensoren 160 einschließen, die Informationen über die Umgebung des Benutzers 190 (z. B. Video, Tiefeninformationen, Beleuchtungsinformationen usw.) und über den Benutzer 190 (z. B. die Mienen, Augenbewegung, Blickrichtung, Handgesten usw. des Benutzers) sammeln. Die Vorrichtung 150 kann mindestens einige der durch die Sensoren 160 gesammelten Informationen über die drahtlose Verbindung 180 an die Basisstation 100 übertragen. Die Basisstation 100 kann Bilder, die virtuelle Inhalte einschließen, mindestens teilweise basierend auf den verschiedenen Informationen, die von den Sensoren 160 erhalten werden, zur Anzeige durch die Vorrichtung 150 rendern, die Bilder codieren und die codierten Bilder zum Decodieren und zur Anzeige für den Benutzer über die drahtlose Verbindung 180 an die Vorrichtung 150 übertragen.
-
Die Basisstation 100 und die Vorrichtung 150 können eine Drahtloskommunikationstechnologie implementieren, die es der Basisstation 100 und der Vorrichtung 150 ermöglicht, über eine drahtlose Verbindung 180 zu kommunizieren und Daten auszutauschen. In einigen Ausführungsformen kann die drahtlose Verbindung 180 gemäß einer proprietären Drahtloskommunikationstechnologie implementiert werden, die eine hochdirektionale drahtlose Verbindung zwischen der Vorrichtung 150 und der Basisstation 100 bereitstellt. Jedoch können andere kommerzielle (z. B. Wi-Fi, Bluetooth usw.) oder proprietäre Drahtloskommunikationstechnologien in einigen Ausführungsformen verwendet werden.
-
Primäre Einschränkungen, die bei der drahtlosen Verbindung 180 zwischen der Vorrichtung 150 und der Basisstation 100 in einem VR-/MR-System 10 zu berücksichtigen sind, schließen Bandbreite und Latenz ein. Zum Beispiel besteht in einigen Ausführungsformen ein Ziel darin, dem Benutzer eine hochauflösende virtuelle Anzeige mit breitem Sichtfeld (FOV) mit einer Bildrate bereitzustellen, die dem Benutzer eine qualitativ hochwertige VR-/MR-Ansicht bereitstellt. Ein weiteres Ziel besteht darin, die Latenz zwischen der Zeit, zu der ein Videobild durch die Vorrichtung erfasst wird, und der Zeit, zu der ein gerendertes VR-/MR-Bild basierend auf dem Videobild durch die Vorrichtung angezeigt wird, zu minimieren.
-
Die Basisstation 100 kann verschiedene Hardwarekomponenten zum Rendern, Filtern, Codieren und Übertragen von Video und/oder Bildern, wie hierin beschrieben, einschließen, zum Beispiel verschiedene Typen von Prozessoren, integrierten Schaltungen (ICs), zentralen Verarbeitungseinheiten (CPUs), Grafikverarbeitungseinheiten (GPUs), Bildsignalprozessoren (ISPs), Codierern/Decodierern (Codecs) usw. Die Basisstation 100 kann, ohne darauf beschränkt zu sein, eine Komponente zum GPU-Rendern 110, eine Komponente für eine drahtlose Schnittstelle 130 und ein Videocodiersystem 120, das eine oder mehrere Hardwarekomponenten einschließen kann, die verschiedene Verfahren implementieren, die dazu beitragen können, die Zielbildrate durch die drahtlose Verbindung 180 beizubehalten und die Latenz beim Rendern, beim Codieren, bei der Übertragung und bei der Anzeige zu minimieren, einschließen. Das Videocodiersystem 120 kann, ohne darauf beschränkt zu sein, eine Komponente zum Vorfiltern 122 (z. B. eine N-Kanal-Filterbank), eine Komponente zur Wavelet-Transformation 124 und eine Komponente für einen Codierer 126 einschließen.
-
Das GPU-Rendern 110 kann eine oder mehrere Hardwarekomponenten einschließen, die Bilder zur Anzeige durch die Vorrichtung 150, die virtuelle Inhalte einschließen, mindestens teilweise basierend auf den verschiedenen Informationen, die von den Sensoren 160 erhalten werden, rendern können.
-
In einigen Ausführungsformen kann das Videocodiersystem 120 eine oder mehrere Hardwarekomponenten einschließen, welche die Pixeldaten in den gerenderten Bildern vor dem Durchführen einer Wavelet-Transformation 124 vorfiltern 122. Das Vorfiltern 122 kann zum Beispiel die Auflösung der Bilder reduzieren, die vor dem Durchführen der Wavelet-Transformation 124, dem Codieren 126 und der Übertragung an die Vorrichtung 150 über die drahtlose Verbindung 180 an der Basisstation 100 gerendert werden, was zur Verbesserung der Komprimierung beitragen kann, und kann die Latenz und Bandbreitennutzung an der drahtlosen Verbindung 180 reduzieren.
-
In einigen Ausführungsformen kann das Vorfiltern 122 vor der Wavelet-Transformation 124 eine Linsenverzerrung an den Bildern auf der Basisstation 100 durchführen. Die Linsenverzerrung wird durchgeführt, um die Verzerrung der Bilder zu korrigieren, die durch die Linsen an der Vorrichtung, durch welche die Bilder betrachtet werden, eingeführt wird, wodurch die Qualität der Bilder verbessert wird. In einigen Ausführungsformen kann die Vorrichtung 150 Linsenverzerrungsdaten für die Linsen, die zum Beispiel durch einen Kalibrierungsprozess erzeugt werden, speichern und kann die Linsenverzerrungsdaten der Basisstation 100 über die drahtlose Verbindung 180 bereitstellen. Die Komponente zum Vorfiltern 122 des Videocodiersystems 120 kann dann die Linsenverzerrung basierend auf den Linsenverzerrungsdaten für diese Vorrichtung 150 an den Bildern durchführen. In herkömmlichen VR-/MR-Systemen wird die Linsenverzerrung nach dem Decodieren und vor der Anzeige an der Vorrichtung 150 durchgeführt. Das Durchführen der Linsenverzerrung an der Basisstation 100 in der Stufe des Vorfilterns 122 kann die Auflösung der Bilder vor dem Durchführen der Wavelet-Transformation 124 und dem Codieren 126 reduzieren, was zur Verbesserung der Komprimierung beitragen kann, und kann die Latenz und Bandbreitennutzung auf der drahtlosen Verbindung 180 reduzieren. Außerdem muss durch das Durchführen der Linsenverzerrung an der Basisstation 100 in der Stufe des Vorfilterns 122 anstatt an der Vorrichtung 150 nach dem Decodieren im Gegensatz zu einem Durchführen eines Filterns an der Basisstation 100, um die Auflösung vor dem Codieren 126 zu reduzieren, und einem anschließenden Durchführen eines Linsenverzerrungsfilterns an der Vorrichtung 150 möglicherweise nur einmal ein Filtern der Bilddaten durchgeführt werden.
-
In einigen Ausführungsformen kann das Vorfiltern 122 auch einen oder mehrere Filter anwenden, um die Auflösung in peripheren Bereichen zu reduzieren, während eine höhere Auflösung in fovealen Bereichen beibehalten wird. In diesem Verfahren können Blickverfolgungsinformationen, die von der Vorrichtung 150 erhalten werden, verwendet werden, um die Richtung zu identifizieren, in die der Benutzer derzeit blickt. Menschliche Augen können im fovealen Bereich eine höhere Auflösung wahrnehmen als im peripheren Bereich. Somit kann ein Bereich des Bilds, welcher der Fovea entspricht, (als der foveale Bereich bezeichnet) mindestens teilweise basierend auf der bestimmten Blickrichtung identifiziert werden. In einigen Ausführungsformen kann der periphere Bereich (d. h. der Abschnitt des Bilds außerhalb des fovealen Bereichs) vorgefiltert werden, um Informationen basierend auf der Kenntnis des menschlichen Sichtsystems zu reduzieren, zum Beispiel durch Filtern von Hochfrequenzinformationen und/oder Erhöhen der Farbkomprimierung. In einigen Ausführungsformen kann das Filtermaß, das auf den peripheren Bereich angewendet wird, in Richtung des Bildumfangs zunehmen. Ein Vorfiltern des peripheren Bereichs kann dazu beitragen, eine verbesserte Komprimierung des Bilds bereitzustellen.
-
In einigen Ausführungsformen kann eine Komponente zur Wavelet-Transformation 124 des Videocodiersystems 120 eine oder mehrere Hardwarekomponenten (z. B. eine N-Kanal-Filterbank) einschließen, die vor dem Codieren eine Wavelet-Transformation an den Pixeldaten durchführen, um die Pixeldaten in Frequenzbänder zu zerlegen. Die Frequenzbänder werden dann in Blöcke organisiert, die einem blockbasierten Codierer 126 zur Codierung/Komprimierung bereitgestellt werden. Als ein Beispiel, wie in 3A bis 3C veranschaulicht, kann ein Bild in 128×128-Blöcke unterteilt werden, und eine zweistufige Wavelet-Zerlegung kann auf jeden 128x128-Block angewendet werden, um 16 32x32-Blöcke von Frequenzdaten zu erzeugen, die sieben Frequenzbänder darstellen, die dann an einen Codierer (z. B. einen High Efficiency Video Coding-Codierer (HEVC-Codierer)) 126 gesendet werden können, um codiert zu werden. Die codierten Frequenzdaten werden dann an eine drahtlose Schnittstelle 130 gesendet, die durch eine oder mehrere Hardwarekomponenten implementiert ist und welche die Daten paketiert und die Pakete über eine drahtlose Verbindung 180 an die Vorrichtung 150 überträgt. Die Vorrichtung 150 kann verschiedene Hardwarekomponenten zum Decodieren und Anzeigen von Video und/oder Bildern, wie hierin beschrieben, einschließen, zum Beispiel verschiedene Typen von Prozessoren, integrierten Schaltungen (ICs), zentralen Verarbeitungseinheiten (CPUs), Grafikverarbeitungseinheiten (GPUs), Bildsignalprozessoren (ISPs), Codierern/Decodierern (Codecs) usw. Die Vorrichtung 150 kann, ohne darauf beschränkt zu sein, eine drahtlose Schnittstelle 152, eine Komponente für einen Decodierer 154 (z. B. einen High Efficiency Video Coding-Decodierer (HEVC-Decodierer)), eine Komponente zur Wavelet-Synthese 156 und eine Komponente für eine Anzeige 158 einschließen. An der Vorrichtung 150 empfängt die drahtlose Schnittstelle 152 die Pakete, die durch die Basisstation 100 über die drahtlose Verbindung 180 übertragen wurden. Die codierten Daten werden entpackt und durch einen blockbasierten Decodierer 154 (z. B. einen High Efficiency Video Coding-Decodierer (HEVC-Decodierer)) geleitet, um die Frequenzbänder wiederherzustellen. Die Wavelet-Synthese 156 wird dann an den wiederhergestellten Frequenzdaten durchgeführt, um die Pixeldaten zur Anzeige 158 zu rekonstruieren.
-
In einigen Ausführungsformen kann das Videocodiersystem 120 ein Rendern, ein Codieren und eine Übertragung auf Scheibenbasis durchführen. Das Rendern, Codieren und Übertragen ganzer Bilder kann eine Latenz- und Speicherauswirkung haben, weil jedes Bild abgeschlossen, gespeichert und dann an die nächste Stufe des VR-/MR-Systems 10 übertragen werden muss. Beim Rendern auf Scheibenbasis kann die Basisstation 100, anstatt ganze Bilder in der Basisstation 100 zu rendern und zu codieren und die gerenderten Bilder an die Vorrichtung 150 zu übertragen, Teile von Bildern (als Scheiben bezeichnet) rendern und codieren und die codierten Scheiben an die Vorrichtung 150 übertragen, wenn sie bereit sind. Eine Scheibe kann zum Beispiel eine Zeile von 128x128-Blöcken sein. Rendern und Codieren auf Scheibenbasis kann dazu beitragen, die Latenz zu reduzieren, und kann auch die Menge an Speicher reduzieren, die zum Puffern benötigt wird, was den Speicherbedarf auf dem/den Chip(s) oder dem/den Prozessor(en) sowie Leistungsanforderungen reduziert.
-
In einigen Ausführungsformen kann das Videocodiersystem 120 ein Rendern, ein Codieren und eine Übertragung auf Kachelbasis durchführen. Beim Rendern, Codieren und Übertragen auf Kachelbasis kann jede Scheibe in mehrere Kacheln (z. B. vier Kacheln) unterteilt werden, und die Basisstation 100 kann die Kacheln rendern und codieren und die codierten Kacheln an die Vorrichtung 150 übertragen, wenn sie bereit sind.
-
In einigen Ausführungsformen kann das Videocodiersystem 120 ein Rendern, ein Codieren und eine Übertragung auf Kachelbasis unter Verwendung eines einzelnen Codierers 126 durchführen, um Kacheln aus jeder Scheibe zu verarbeiten. In einigen Ausführungsformen kann das Videocodiersystem 120 jedoch ein Codieren auf Kachelbasis unter Verwendung mehrerer Codierer 126 durchführen, um jeweilige Kacheln aus jeder Scheibe zu verarbeiten. 2 veranschaulicht ein Videocodiersystem 220, das mehrere Codierer (in diesem Beispiel zwei Codierer 226A und 226B) einschließt, die Kacheln aus gerenderten Bildern parallel verarbeiten, gemäß mindestens einigen Ausführungsformen.
-
Eine Komponente zum GPU-Rendern 210 der Basisstation 200 kann eine oder mehrere GPUs und/oder andere Komponenten einschließen, die Bilder (oder Scheiben von Bildern) zur Anzeige rendern. Ein Bild kann in Abschnitte unterteilt sein, wie zum Beispiel in 3A veranschaulicht. Wie in 3A veranschaulicht, kann jede Scheibe in mehrere Kacheln (in diesem Beispiel vier) unterteilt sein, wobei jede Kachel mehrere Blöcke einschließt. 3B veranschaulicht eine beispielhafte Kachel, die vier 128x128-Blöcke einschließt. Blöcke anderer Größen (z. B. 64x64, 32x32 usw.) können jedoch in einigen Ausführungsformen verwendet werden, und eine Kachel kann mehr oder weniger Blöcke einschließen.
-
Komponenten zum Vorfiltern 222 und zur Wavelet-Transformation 224 des Videocodiersystems 220 können dann jede Kachel vor dem Codieren 226 verarbeiten. In einigen Ausführungsformen kann das Videocodiersystem 220 eine separate Komponente zum Vorfiltern 222 und Komponente zur Wavelet-Transformation 224 zum Verarbeiten jeder Kachel einschließen. In diesem Beispiel verarbeiten die Komponente zum Vorfiltern 222A und die Komponente zur Wavelet-Transformation 224A eine Kachel 0, verarbeiten die Komponente zum Vorfiltern 222B und die Komponente zur Wavelet-Transformation 224B eine Kachel 1, verarbeiten die Komponente zum Vorfiltern 222C und die Komponente zur Wavelet-Transformation 224C eine Kachel 2 und verarbeiten die Komponente zum Vorfiltern 222D und die Komponente zur Wavelet-Transformation 224D eine Kachel 3. Die Komponenten zum Vorfiltern 222 führen ein Vorfiltern der Kacheln, wie hierin beschrieben, durch, und die Komponenten zur Wavelet-Transformation 224 zerlegen die Kacheln in Frequenzbänder, wie hierin beschrieben. In einigen Ausführungsformen kann das Videocodiersystem 220 jedoch eine einzelne Komponente zum Vorfiltern 222 und eine einzelne Komponente zur Wavelet-Transformation 224 einschließen, welche die Kacheln verarbeiten. In einigen Ausführungsformen kann das Videocodiersystem 220 mehrere (z. B. 2) Komponenten zum Vorfiltern 222 und mehrere (z. B. 2) Komponenten zur Wavelet-Transformation 224 einschließen, die jeweils mehrere (z. B. 2) Kacheln verarbeiten.
-
Zwei Codierer 226A und 226B können auf zwei Kacheln aus jeder Scheibe arbeiten (z. B. arbeitet der Codierer 226A auf Kachel 0 und Kachel 1; der Codierer 226B arbeitet auf Kachel 2 und Kachel 3). Jeder Codierer 226 kann das Verarbeiten von Blöcken aus unterschiedlichen Frequenzbändern (d. h. die 16 32x32-Blöcke, die in 3C veranschaulicht sind) zwischen seinen zwei Kacheln multiplexen, um 16 Zeiteinheiten zwischen dem Verarbeiten von Blöcken aus demselben Frequenzband zu ermöglichen. Durch Multiplexen des Verarbeitens von Blöcken zwischen zwei Kacheln können Abhängigkeiten zwischen Blöcken im selben Frequenzband auf geeignete Weise behandelt werden.
-
Während Ausführungsformen beschrieben werden, in denen jede Scheibe in vier Kacheln unterteilt ist und zwei Codierer auf jeweiligen Kacheln aus jeder Scheibe arbeiten, können in einigen Ausführungsformen Scheiben in mehrere Kacheln (z. B. sechs oder acht Kacheln) unterteilt werden, und in einigen Ausführungsformen können mehrere Codierer (z. B. drei, vier oder mehr Codierer) verwendet werden.
-
3C veranschaulicht das Durchführen einer Wavelet-Transformation eines Pixelblocks, der Pixeldaten speichert, um Frequenzbanddaten vor dem Codieren zu erzeugen, gemäß mindestens einigen Ausführungsformen. In diesem Beispiel wird eine zweistufige Wavelet-Zerlegung durch die Komponente zur Wavelet-Transformation 324 auf einen 128×128-Pixelblock 300 angewendet, um sechzehn 32x32-Blöcke 302 von Frequenzdaten zu erzeugen, die sieben Frequenzbänder darstellen. Die Frequenzblöcke 302 werden dann einem Codierer 326 zum Codieren bereitgestellt. Zum Beispiel können die Frequenzblöcke 302 durch die Komponente zur Wavelet-Transformation 324 in einen Puffer geschrieben und durch die Komponente für einen Codierer 326 aus dem Puffer gelesen werden.
-
In den Bezeichnungen der Frequenzblöcke 302 steht der Buchstabe L für ein Tiefpassfilter und steht der Buchstabe H für ein Hochpassfilter. Die mit zwei Buchstaben bezeichneten Blöcke 302 stellen eine einstufige (2D-) Wavelet-Transformation oder Zerlegung dar. In den Blöcken 302, die mit zwei Buchstaben bezeichnet sind (die drei der sieben Frequenzbänder LH, HL und HH darstellen), steht der erste Buchstabe für ein vertikales Filtern (entweder hoch oder tief), das als Erstes durchgeführt wird, und steht der zweite Buchstabe für ein horizontales Filtern (entweder hoch oder tief), das als Zweites durchgeführt wird. Die mit vier Buchstaben bezeichneten Blöcke 302 stellen eine zweistufige Wavelet-Transformation oder Zerlegung dar. In den Blöcken 302, die mit vier Buchstaben bezeichnet sind, geben die ersten zwei Buchstaben (LL) an, dass als Erstes ein vertikales Tiefpassfilter gefolgt von einem horizontalen Tiefpassfilter vorhanden war; die zweiten zwei Buchstaben geben an, dass der resultierende LL-Block dann auf vier Weisen, LL, LH, HL und HH, gefiltert wurde (wodurch vier der sieben Frequenzbänder (LLLL, LLLH, LLHL und LLHH) erzeugt wurden.
-
Durch Zerlegen der Pixeldaten in Frequenzbänder, wie in 3C veranschaulicht, können die Frequenzbänder gepuffert und als separate Ströme durch den Codierer 326 verarbeitet werden. Durch das Verarbeiten der Frequenzbänder als separate Ströme kann die Komponente für einen Codierer 326 das Verarbeiten der unabhängigen Ströme multiplexen. In Verfahren zum blockbasierten Codieren, wie einem HEVC-Codieren, werden Blöcke (als Codierbaumeinheiten (CTUs) bezeichnet) in mehreren Stufen in einer Blockverarbeitungs-Pipeline verarbeitet; zwei oder mehr Blöcke können sich in einem gegebenen Taktzyklus auf unterschiedlichen Stufen der Pipeline befinden, und die Blöcke bewegen sich als die Taktzyklen durch die Pipeline. Das Verarbeiten eines gegebenen Blocks kann Abhängigkeiten von einem oder mehreren zuvor verarbeiteten Nachbarblöcken aufweisen, zum Beispiel einem oder mehreren Blöcken in der Zeile über dem gegebenen Block und/oder dem Block links von dem gegebenen Block. Durch Multiplexen des Verarbeitens der Ströme von Frequenzbanddaten verteilt der Codierer 326 das Verarbeiten der Blöcke in einem gegebenen Strom in Abständen, wodurch zusätzliche Taktzyklen bereitgestellt werden, um einen Nachbarblock zu verarbeiten, von dem ein gegebener Block Abhängigkeiten aufweist. Zum Beispiel kann der Block links von dem gegebenen Block mehrere Stufen vor dem gegebenen Block in der Pipeline sein, wenn der gegebene Block eine Stufe erreicht, die von dem zuvor verarbeiteten Nachbarblock abhängt. Dies ermöglicht es dem Codierer 326, Abhängigkeiten von zuvor verarbeiteten Blöcken besser zu handhaben, und reduziert oder beseitigt die Notwendigkeit, auf den Abschluss des Verarbeitens eines Nachbarblocks in der Pipeline zu warten, bevor der gegebene Block in einer Stufe verarbeitet wird, die von dem Nachbarblock abhängt.
-
Außerdem ermöglicht das Zerlegen der Pixeldaten in Frequenzbänder, wie in 3C veranschaulicht, eine Priorisierung der Frequenzbänder durch den Codierer 326 und die drahtlose Schnittstelle. Üblicherweise sind bei der Bild- und Videoübertragung die niedrigeren Frequenzen wichtiger, während die höheren Frequenzen weniger wichtig sind. Höhere Frequenzen entsprechen üblicherweise Details im Bild und können somit als niedrigere Priorität angesehen werden. Die höheren Frequenzbänder enthalten einen geringeren Prozentsatz der Energie im Bild. Der größte Teil der Energie ist in den niedrigeren Frequenzbändern enthalten. Das Zerlegen der Pixeldaten in Frequenzbänder stellt somit eine Prioritätsreihenfolge für den Datenstrom bereit, die durch den Codierer 326 und die drahtlose Schnittstelle beim Codieren und Übertragen des Datenstroms genutzt werden kann. Zum Beispiel können in einigen Ausführungsformen unterschiedliche Komprimierungstechniken auf den unterschiedlichen Frequenzbändern verwendet werden, wobei eine aggressivere Komprimierung auf die Bänder mit niedrigerer Priorität angewendet wird und eine konservativere Komprimierung auf die Bänder mit höherer Priorität angewendet wird. Als weiteres Beispiel kann die Prioritätsreihenfolge der Frequenzbänder dazu beitragen, eine schrittweise Leistungsminderung des VR-/MR-Systems bereitzustellen. Die Leistung der drahtlosen Verbindung kann überwacht werden, und Rückmeldungen von der Vorrichtung können berücksichtigt werden, um die Leistung des Gesamtsystems zu verfolgen. Wenn das System aus irgendeinem Grund zurückfällt, zum Beispiel, wenn sich die drahtlose Verbindung verschlechtert und die Bandbreitenkapazität der drahtlosen Verbindung unter einen Schwellenwert fällt, können der Codierer 326 und die drahtlose Schnittstelle das Codieren und die Übertragung eines oder mehrerer der niedrigeren Frequenzbänder priorisieren, und können das Codieren und/oder die Übertragung einer oder mehrerer der Frequenzstufen, denen eine niedrigere Prioritätsstufe zugewiesen wurde, zum Beispiel eines oder mehrerer der höheren Frequenzbänder, reduzieren oder verwerfen.
-
Wie oben beschrieben, zerlegt die Wavelet-Transformation ein Bild in Frequenzbänder. In einigen Ausführungsformen kann dies genutzt werden, um dasselbe Signal an Anzeigen variierender Auflösung zu senden. Als Beispiel sei angenommen, dass eine zweistufige Wavelet-Zerlegung angewendet wird, um das Signal in sieben Bänder zu zerlegen. Wenn vier der Bänder gesendet werden (LLLL, LLLH, LLHL und LLHH), können die Bänder mit geringerer visueller Qualität auf die ursprüngliche beabsichtigte Auflösung rekonstruiert werden. Alternativ können die Bänder auch mit 1/4 der Auflösung (1/2 in jeder Dimension) rekonstruiert werden, was für ein Anzeigefeld mit niedrigerer Anzeigeauflösung geeignet sein kann.
-
4 ist ein übersichtartiges Flussdiagramm eines Betriebsverfahrens für VR-/MR-Systeme, die Videocodiersysteme, wie in 1 und 2 veranschaulicht, gemäß mindestens einigen Ausführungsformen einschließen. Wie bei 400 angegeben, sendet die Vorrichtung Daten über die drahtlose Verbindung an die Basisstation. Wie bei 410 angegeben, rendert die Basisstation Bilder, die virtuelle Inhalte einschließen, mindestens teilweise basierend auf den Vorrichtungsdaten. Wie bei 420 angegeben, komprimiert die Basisstation die gerenderten Daten und sendet die komprimierten Daten über die drahtlose Verbindung an die Vorrichtung. Wie bei 430 angegeben, dekomprimiert die Vorrichtung die virtuellen Inhalte und zeigt diese an, um eine virtuelle 3D-Ansicht zum Anzeigen durch den Benutzer zu erzeugen. Wie durch den Pfeil angegeben, der von 430 zu 400 zurückkehrt, fährt das Verfahren fort, solange der Benutzer das VR-/MR-System verwendet.
-
In einigen Ausführungsformen kann die Basisstation, anstatt ganze Bilder in der Basisstation zu rendern und zu codieren und die gerenderten Bilder an die Vorrichtung zu übertragen, Teile von Bildern (als Scheiben bezeichnet) rendern und codieren und die codierten Scheiben an die Vorrichtung übertragen, wenn sie bereit sind. Eine Scheibe kann zum Beispiel eine Zeile von 128x128-Blöcken sein. In einigen Ausführungsformen kann das Videocodiersystem ein Rendern, ein Codieren und eine Übertragung auf Kachelbasis durchführen. Beim Rendern, Codieren und Übertragen auf Kachelbasis kann jede Scheibe in mehrere Kacheln, die jeweils einen oder mehrere Blöcke einschließen (z. B. vier Kacheln, jeweils einschließlich vier Blöcken), unterteilt werden, und die Basisstation kann die Kacheln rendern und codieren und die codierten Kacheln an die Vorrichtung übertragen, wenn sie bereit sind.
-
5 ist ein Flussdiagramm eines Betriebsverfahrens für ein Videocodiersystem, wie in 1 veranschaulicht, gemäß mindestens einigen Ausführungsformen. Das Verfahren von 5 kann zum Beispiel bei 420 von 4 durchgeführt werden. Das Verfahren von 5 geht davon aus, dass eine Codierung und Übertragung auf Scheibenbasis durchgeführt wird. In einigen Ausführungsformen kann jedoch eine Codierung und Übertragung auf Kachelbasis durchgeführt werden.
-
Wie bei 510 angegeben, wendet die Vorfilterkomponente Linsenverzerrungs- und/oder Foveationsfilter auf Pixelblöcke in einer Scheibe des Bilds an. In einigen Ausführungsformen kann das Vorfiltern ein Durchführen einer Linsenverzerrung an den Bildern auf der Basisstation vor der Wavelet-Transformation einschließen. Die Linsenverzerrung wird durchgeführt, um die Verzerrung der Bilder zu korrigieren, die durch die Linsen an der Vorrichtung, durch welche die Bilder betrachtet werden, eingeführt wird, wodurch die Qualität der Bilder verbessert wird. In einigen Ausführungsformen kann die Vorrichtung Linsenverzerrungsdaten für die Linsen, die zum Beispiel durch einen Kalibrierungsprozess erzeugt werden, speichern und kann die Linsenverzerrungsdaten der Basisstation über die drahtlose Verbindung bereitstellen. Die Basisstation kann dann die Linsenverzerrung basierend auf den Linsenverzerrungsdaten für diese Vorrichtung an den Bildern durchführen. Das Durchführen der Linsenverzerrung an der Basisstation in der Vorfilterstufe kann die Auflösung der Bilder vor dem Durchführen der Wavelet-Transformation und dem Codieren reduzieren, was zur Verbesserung der Komprimierung beitragen kann, und kann die Latenz und Bandbreitennutzung auf der drahtlosen Verbindung reduzieren. Außerdem muss durch das Durchführen der Linsenverzerrung an der Basisstation in der Vorfilterstufe anstatt an der Vorrichtung nach dem Decodieren im Gegensatz zu einem Durchführen eines Filterns an der Basisstation, um die Auflösung vor dem Codieren zu reduzieren, und einem anschließenden Durchführen eines Linsenverzerrungsfilterns an der Vorrichtung möglicherweise nur einmal ein Filtern der Bilddaten durchgeführt werden.
-
In einigen Ausführungsformen kann das Vorfiltern bei 510 auch ein Filtern einschließen, um die Auflösung in peripheren Bereichen zu reduzieren, während eine höhere Auflösung in fovealen Bereichen beibehalten wird. In einigen Ausführungsformen können Blickverfolgungsinformationen, die von der Vorrichtung erhalten werden, verwendet werden, um die Richtung zu identifizieren, in die der Benutzer derzeit blickt. Ein Bereich des Bilds, welcher der Fovea entspricht (als der foveale Bereich bezeichnet), kann mindestens teilweise basierend auf der bestimmten Blickrichtung identifiziert werden. Der periphere Bereich (d. h. der Abschnitt des Bilds außerhalb des fovealen Bereichs) kann vorgefiltert werden, um Informationen basierend auf der Kenntnis des menschlichen Sichtsystems zu reduzieren, zum Beispiel durch Filtern von Hochfrequenzinformationen und/oder Erhöhen der Farbkomprimierung. Ein Vorfiltern des peripheren Bereichs kann dazu beitragen, eine verbesserte Komprimierung des Bilds bereitzustellen.
-
Wie bei 520 angegeben, wendet die Wavelet-Transformations-Komponente eine Wavelet-Transformations-Technik auf die Pixelblöcke an, um die Pixeldaten in N (z. B. 7) Frequenzbänder zu zerlegen. Die Frequenzbänder werden dann in Blöcke organisiert, die einem blockbasierten Codierer zur Codierung/Komprimierung bereitgestellt werden. Als ein Beispiel kann ein Bild in 128×128-Blöcke unterteilt werden, und eine zweistufige Wavelet-Zerlegung kann auf jeden 128x128-Block angewendet werden, um 16 32x32-Blöcke von Frequenzdaten zu erzeugen, die sieben Frequenzbänder darstellen, zum Beispiel wie in 3C veranschaulicht.
-
Wie bei 530 angegeben, wendet der Codierer eine Codiertechnik auf die Frequenzbänder in den Blöcken an, um die Daten zu komprimieren. Der Codierer kann zum Beispiel ein High Efficiency Video Coding-Codierer (HEVC-Codierer) sein. In einigen Ausführungsformen können jedoch auch andere Codiertechniken verwendet werden. Durch Zerlegen der Pixeldaten in Frequenzbänder, wie bei Element 520 angegeben, können die Frequenzbänder gepuffert und als separate Ströme durch den Codierer verarbeitet werden. Durch das Verarbeiten der Frequenzbänder als separate Ströme kann die Codiererkomponente das Verarbeiten der unabhängigen Ströme multiplexen. In Verfahren zum blockbasierten Codieren, wie einem HEVC-Codieren, werden Blöcke (als Codierbaumeinheiten (CTUs) bezeichnet) in mehreren Stufen in einer Pipeline verarbeitet; zwei oder mehr Blöcke können sich in einem gegebenen Taktzyklus auf unterschiedlichen Stufen der Pipeline befinden, und die Blöcke bewegen sich als die Taktzyklen durch die Pipeline. Das Verarbeiten eines gegebenen Blocks kann Abhängigkeiten von einem oder mehreren zuvor verarbeiteten Nachbarblöcken aufweisen, zum Beispiel einem oder mehreren Blöcken in der Zeile über dem gegebenen Block und/oder dem Block links von dem gegebenen Block. Durch Multiplexen des Verarbeitens der Ströme verteilt der Codierer das Verarbeiten der Blöcke in einem gegebenen Strom in Abständen, wodurch zusätzliche Taktzyklen bereitgestellt werden, um einen Nachbarblock zu verarbeiten, von dem ein gegebener Block Abhängigkeiten aufweist. Zum Beispiel kann der Block links von dem gegebenen Block mehrere Stufen vor dem gegebenen Block in der Pipeline sein, wenn der gegebene Block eine Stufe erreicht, die von dem zuvor verarbeiteten Nachbarblock abhängt. Dies ermöglicht es dem Codierer, Abhängigkeiten von zuvor verarbeiteten Blöcken besser zu handhaben, und reduziert oder beseitigt die Notwendigkeit, auf den Abschluss des Verarbeitens eines Nachbarblocks in der Pipeline zu warten, bevor der gegebene Block in einer Stufe verarbeitet wird, die von dem Nachbarblock abhängt.
-
Wie bei 540 angegeben, paketiert die drahtlose Schnittstelle die komprimierten Daten und sendet die Pakete über die drahtlose Verbindung an die Vorrichtung.
-
Durch Zerlegen der Pixeldaten in Frequenzbänder, wie bei Element 520 angegeben, können die Frequenzbänder durch den Codierer bei Element 530 und die drahtlose Schnittstelle bei Element 540 priorisiert werden. Üblicherweise sind bei der Bild- und Videoübertragung die niedrigeren Frequenzen wichtiger, während die höheren Frequenzen weniger wichtig sind. Höhere Frequenzen entsprechen üblicherweise Details im Bild und können somit als niedrigere Priorität angesehen werden. Die höheren Frequenzbänder enthalten einen geringeren Prozentsatz der Energie im Bild. Der größte Teil der Energie ist in den niedrigeren Frequenzbändern enthalten. Das Zerlegen der Pixeldaten in Frequenzbänder stellt somit eine Prioritätsreihenfolge für den Datenstrom bereit, die durch den Codierer und die drahtlose Schnittstelle beim Codieren und Übertragen des Datenstroms genutzt werden kann. Zum Beispiel können in einigen Ausführungsformen unterschiedliche Komprimierungstechniken auf den unterschiedlichen Frequenzbändern verwendet werden, wobei eine aggressivere Komprimierung auf die Bänder mit niedrigerer Priorität angewendet wird und eine konservativere Komprimierung auf die Bänder mit höherer Priorität angewendet wird. Als weiteres Beispiel kann die Prioritätsreihenfolge der Frequenzbänder dazu beitragen, eine schrittweise Leistungsminderung des VR-/MR-Systems bereitzustellen. Die Leistung der drahtlosen Verbindung kann überwacht werden, und Rückmeldungen von der Vorrichtung können berücksichtigt werden, um die Leistung des Gesamtsystems zu verfolgen. Wenn das System aus irgendeinem Grund zurückfällt, zum Beispiel, wenn sich die drahtlose Verbindung verschlechtert und die Bandbreitenkapazität der drahtlosen Verbindung unter einen Schwellenwert fällt, können der Codierer und die drahtlose Schnittstelle das Codieren und die Übertragung eines oder mehrerer der niedrigeren Frequenzbänder priorisieren, und können das Codieren und/oder die Übertragung einer oder mehrerer der Frequenzstufen, denen eine niedrigere Prioritätsstufe zugewiesen wurde, zum Beispiel eines oder mehrerer der höheren Frequenzbänder, reduzieren oder verwerfen.
-
Wenn mehr Scheiben vorhanden sind, die codiert und übertragen werden sollen, kehrt das Verfahren bei 550 zu Element 510 zurück, um die nächste Scheibe zu verarbeiten. Ansonsten, wenn mehr Bilder vorhanden sind, die codiert und übertragen werden sollen, kehrt das Verfahren bei 560 zu Element 510 zurück, um mit dem Verarbeiten des nächsten Bilds zu beginnen.
-
6 ist ein Flussdiagramm eines Betriebsverfahrens für ein Videocodiersystem, wie in 2 veranschaulicht, gemäß mindestens einigen Ausführungsformen. Das Verfahren von 6 kann zum Beispiel bei 420 von 4 durchgeführt werden. In dem Verfahren von 6 kann das Videocodiersystem ein Codieren auf Kachelbasis unter Verwendung mehrerer Codierer durchführen, um jeweilige Kacheln aus jeder Scheibe zu verarbeiten.
-
Wie bei 600 angegeben, rendert eine Rendering-Engine eine Scheibe, die mehrere Kacheln (in diesem Beispiel vier Kacheln) einschließt, wobei jede Kachel mehrere Pixelblöcke (in diesem Beispiel vier 128×128-Pixelblöcke) einschließt.
-
Wie bei 610 angegeben, wendet die Vorfilterkomponente Linsenverzerrungs- und/oder Foveationsfilter auf die Scheibe an. In einigen Ausführungsformen kann das Vorfiltern ein Durchführen einer Linsenverzerrung an den Bildern auf der Basisstation vor der Wavelet-Transformation einschließen. Die Linsenverzerrung wird durchgeführt, um die Verzerrung der Bilder zu korrigieren, die durch die Linsen an der Vorrichtung, durch welche die Bilder betrachtet werden, eingeführt wird, wodurch die Qualität der Bilder verbessert wird. In einigen Ausführungsformen kann die Vorrichtung Linsenverzerrungsdaten für die Linsen, die zum Beispiel durch einen Kalibrierungsprozess erzeugt werden, speichern und kann die Linsenverzerrungsdaten der Basisstation über die drahtlose Verbindung bereitstellen. Die Basisstation kann dann die Linsenverzerrung basierend auf den Linsenverzerrungsdaten für diese Vorrichtung an den Bildern durchführen. Das Durchführen der Linsenverzerrung an der Basisstation in der Vorfilterstufe kann die Auflösung der Bilder vor dem Durchführen der Wavelet-Transformation und dem Codieren reduzieren, was zur Verbesserung der Komprimierung beitragen kann, und kann die Latenz und Bandbreitennutzung auf der drahtlosen Verbindung reduzieren. Außerdem muss durch das Durchführen der Linsenverzerrung an der Basisstation in der Vorfilterstufe anstatt an der Vorrichtung nach dem Decodieren im Gegensatz zu einem Durchführen eines Filterns an der Basisstation, um die Auflösung vor dem Codieren zu reduzieren, und einem anschließenden Durchführen eines Linsenverzerrungsfilterns an der Vorrichtung möglicherweise nur einmal ein Filtern der Bilddaten durchgeführt werden.
-
In einigen Ausführungsformen kann das Vorfiltern bei 610 auch ein Filtern einschließen, um die Auflösung in peripheren Bereichen zu reduzieren, während eine höhere Auflösung in fovealen Bereichen beibehalten wird. In einigen Ausführungsformen können Blickverfolgungsinformationen, die durch die Vorrichtung erhalten werden, verwendet werden, um die Richtung zu identifizieren, in die der Benutzer derzeit blickt. Ein Bereich des Bilds, welcher der Fovea entspricht (als der foveale Bereich bezeichnet), kann mindestens teilweise basierend auf der bestimmten Blickrichtung identifiziert werden. Der periphere Bereich (d. h. der Abschnitt des Bilds außerhalb des fovealen Bereichs) kann vorgefiltert werden, um Informationen basierend auf der Kenntnis des menschlichen Sichtsystems zu reduzieren, zum Beispiel durch Filtern von Hochfrequenzinformationen und/oder Erhöhen der Farbkomprimierung. Ein Vorfiltern des peripheren Bereichs kann dazu beitragen, eine verbesserte Komprimierung des Bilds bereitzustellen.
-
In einigen Ausführungsformen kann das Videocodiersystem eine einzelne Vorfilterkomponente einschließen, welche die Kacheln verarbeitet. In einigen Ausführungsformen kann das Videocodiersystem eine separate Vorfilterkomponente zum Verarbeiten jeder Kachel einschließen. In einigen Ausführungsformen kann das Videocodiersystem mehrere (z. B. 2) Vorfilterkomponenten einschließen, die jeweils mehrere (z. B. 2) Kacheln verarbeiten.
-
Wie bei 620 angegeben, wendet die Wavelet-Transformations-Komponente eine Wavelet-Transformations-Technik auf die Pixelblöcke in der Scheibe an, um die Pixeldaten in N (z. B. 7) Frequenzbänder zu zerlegen. Die Frequenzbänder werden dann in Blöcke (z. B. CTUs) organisiert, die einem blockbasierten Codierer zur Codierung/Komprimierung bereitgestellt werden können. Als ein Beispiel kann ein Bild in 128×128-Blöcke unterteilt werden, und eine zweistufige Wavelet-Zerlegung kann auf jeden 128x128-Block angewendet werden, um 16 32x32-Blöcke von Frequenzdaten zu erzeugen, die sieben Frequenzbänder darstellen, zum Beispiel wie in 3C veranschaulicht.
-
In einigen Ausführungsformen kann das Videocodiersystem eine einzelne Wavelet-Transformations-Komponente einschließen, die die Kacheln verarbeitet. In einigen Ausführungsformen kann das Videocodiersystem eine separate Wavelet-Transformations-Komponente zum Verarbeiten jeder Kachel einschließen. In einigen Ausführungsformen kann das Videocodiersystem mehrere (z. B. 2) Wavelet-Transformations-Komponenten einschließen, die jeweils mehrere (z. B. 2) Kacheln verarbeiten.
-
In dem Verfahren von 6 schließt ein beispielhaftes Videocodiersystem zwei Codierer ein, die dafür ausgelegt sind, die Blöcke von Frequenzdaten von unterschiedlichen der Scheiben zu codieren, die bei Element 620 parallel erzeugt werden. Zum Beispiel kann ein erster Codierer dafür ausgelegt sein, Blöcke aus den Scheiben 0 und 1 zu codieren, und ein zweiter Codierer kann dafür ausgelegt sein, Blöcke aus den Scheiben 2 und 3 zu codieren. Wie bei 630A angegeben, wendet der erste Codierer eine Codiertechnik auf die Frequenzbänder in den Blöcken der Kacheln 0 und 1 an, wobei das Verarbeiten von Blöcken aus unterschiedlichen Frequenzbändern zwischen den zwei unterschiedlichen Kacheln gemultiplext wird. Wie bei 630B angegeben, wendet ein zweiter Codierer eine Codiertechnik auf die Frequenzbänder in den Blöcken der Kacheln 2 und 3 an, wobei das Verarbeiten von Blöcken aus unterschiedlichen Frequenzbändern zwischen den zwei unterschiedlichen Kacheln gemultiplext wird.
-
Die Codierer können zum Beispiel ein High Efficiency Video Coding-Codierer (HEVC-Codierer) sein. In einigen Ausführungsformen können jedoch auch andere Codiertechniken verwendet werden. Durch Zerlegen der Pixeldaten in Frequenzbänder, wie bei Element 620 angegeben, können die Frequenzbänder gepuffert und als separate Ströme durch die Codierer bei den Elementen 630A und 630B verarbeitet werden. Durch das Verarbeiten der Frequenzbänder als separate Ströme können die Codierer das Verarbeiten der unabhängigen Ströme multiplexen. In Verfahren zum blockbasierten Codieren, wie einem HEVC-Codieren, werden Blöcke (als Codierbaumeinheiten (CTUs) bezeichnet) in mehreren Stufen in einer Pipeline verarbeitet; zwei oder mehr Blöcke können sich in einem gegebenen Taktzyklus auf unterschiedlichen Stufen der Pipeline befinden, und die Blöcke bewegen sich als die Taktzyklen durch die Pipeline. Das Verarbeiten eines gegebenen Blocks kann Abhängigkeiten von einem oder mehreren zuvor verarbeiteten Nachbarblöcken aufweisen, zum Beispiel einem oder mehreren Blöcken in der Zeile über dem gegebenen Block und/oder dem Block links von dem gegebenen Block. Durch Multiplexen des Verarbeitens der Ströme verteilt der Codierer das Verarbeiten der Blöcke in einem gegebenen Strom in Abständen, wodurch zusätzliche Taktzyklen bereitgestellt werden, um einen Nachbarblock zu verarbeiten, von dem ein gegebener Block Abhängigkeiten aufweist. Zum Beispiel kann der Block links von dem gegebenen Block mehrere Stufen vor dem gegebenen Block in der Pipeline sein, wenn der gegebene Block eine Stufe erreicht, die von dem zuvor verarbeiteten Nachbarblock abhängt. Dies ermöglicht es dem Codierer, Abhängigkeiten von zuvor verarbeiteten Blöcken besser zu handhaben, und reduziert oder beseitigt die Notwendigkeit, auf den Abschluss des Verarbeitens eines Nachbarblocks in der Pipeline zu warten, bevor der gegebene Block in einer Stufe verarbeitet wird, die von dem Nachbarblock abhängt.
-
Wie bei 640 angegeben, paketiert die drahtlose Schnittstelle die komprimierten Daten, die durch die Codierer bei Element 530 erzeugt werden, und sendet die Pakete über die drahtlose Verbindung an die Vorrichtung. Wie durch den Pfeil angegeben, der von 650 zu 600 zurückkehrt, wird das Verfahren fortgesetzt, solange der Benutzer das VR-/MR-System verwendet.
-
Durch Zerlegen der Pixeldaten in Frequenzbänder, wie bei Element 620 angegeben, können die Frequenzbänder durch die Codierer bei den Elementen 630A und 630B und die drahtlose Schnittstelle bei Element 640 priorisiert werden. Üblicherweise sind bei der Bild- und Videoübertragung die niedrigeren Frequenzen wichtiger, während die höheren Frequenzen weniger wichtig sind. Höhere Frequenzen entsprechen üblicherweise Details im Bild und können somit als niedrigere Priorität angesehen werden. Die höheren Frequenzbänder enthalten einen geringeren Prozentsatz der Energie im Bild. Der größte Teil der Energie ist in den niedrigeren Frequenzbändern enthalten. Das Zerlegen der Pixeldaten in Frequenzbänder stellt somit eine Prioritätsreihenfolge für den Datenstrom bereit, die durch den Codierer und die drahtlose Schnittstelle beim Codieren und Übertragen des Datenstroms genutzt werden kann. Zum Beispiel können in einigen Ausführungsformen unterschiedliche Komprimierungstechniken auf den unterschiedlichen Frequenzbändern verwendet werden, wobei eine aggressivere Komprimierung auf die Bänder mit niedrigerer Priorität angewendet wird und eine konservativere Komprimierung auf die Bänder mit höherer Priorität angewendet wird. Als weiteres Beispiel kann die Prioritätsreihenfolge der Frequenzbänder dazu beitragen, eine schrittweise Leistungsminderung des VR-/MR-Systems bereitzustellen. Die Leistung der drahtlosen Verbindung kann überwacht werden, und Rückmeldungen von der Vorrichtung können berücksichtigt werden, um die Leistung des Gesamtsystems zu verfolgen. Wenn das System aus irgendeinem Grund zurückfällt, zum Beispiel, wenn sich die drahtlose Verbindung verschlechtert und die Bandbreitenkapazität der drahtlosen Verbindung unter einen Schwellenwert fällt, können der Codierer und die drahtlose Schnittstelle das Codieren und die Übertragung eines oder mehrerer der niedrigeren Frequenzbänder priorisieren, und können das Codieren und/oder die Übertragung einer oder mehrerer der Frequenzstufen, denen eine niedrigere Prioritätsstufe zugewiesen wurde, zum Beispiel eines oder mehrerer der höheren Frequenzbänder, reduzieren oder verwerfen.
-
Während Ausführungsformen beschrieben werden, in denen jede Scheibe in vier Kacheln unterteilt ist und zwei Codierer auf jeweiligen Kacheln aus jeder Scheibe arbeiten, können in einigen Ausführungsformen Scheiben in mehrere Kacheln (z. B. sechs oder acht Kacheln) unterteilt werden, und in einigen Ausführungsformen können mehrere Codierer (z. B. drei oder vier Codierer) verwendet werden.
-
Ratensteuerung
-
Ein Codierer kann ein Ratensteuerungsverfahren oder einen Ratensteuerungsalgorithmus einsetzen, um Codiererparameter dynamisch anzupassen, um eine Zielbitrate zu erreichen. Ein Ratensteuerungsverfahren kann die Videobitrate basierend auf der verfügbaren Bandbreite der drahtlosen Verbindung schätzen. Die geschätzte Bitrate kann verwendet werden, um die Codiererparameter anzupassen, um sicherzustellen, dass der codierte Bitstrom erfolgreich übertragen werden kann, während die Nutzung der verfügbaren Bandbreite optimiert wird. Üblicherweise arbeiten Ratensteuerungsverfahren für Video-Streaming-Systeme über eine Zeitkonstante eines Bilds oder von zwei Bildern, um die Videobitrate zu schätzen und Codiererparameter entsprechend anzupassen.
-
Ein Ziel eines VR-/MR-Systems, das eine Ausführungsform des wie hierin beschriebenen Videocodiersystems implementiert, kann darin bestehen, eine sehr niedrige Latenz (z. B. 4-5 Millisekunden) zwischen dem Zeitpunkt, zu dem der virtuelle Inhalt an der Basisstation gerendert wird, und dem Zeitpunkt, zu dem der virtuelle Inhalt an der Vorrichtung angezeigt wird, bereitzustellen, während Fehler (z. B. verworfene Pakete) minimiert werden und die Bandbreitennutzung über die drahtlose Verbindung maximiert wird. Die angestrebte niedrige Latenz für das System ist eine Herausforderung für die Ratensteuerung in dem Codierer, wenn Daten codiert werden, die über die drahtlose Verbindung an die Vorrichtung übertragen werden sollen.
-
In einigen Ausführungsformen schließt das Videocodiersystem eine Wavelet-Transformations-Komponente ein, die eine 2-Schicht-Wavelet-Zerlegung durchführt, die Blöcke von Pixeln (z. B. 64x64- oder 128x128-Blöcke) aus einer Scheibe eines Bilds in mehrere (z. B. sieben) unterschiedliche Frequenzbänder zerlegt, gefolgt von einem blockbasierten Codierer, wie HEVC, der die Frequenzbänder codiert. In einigen Ausführungsformen kann eine Ratensteuerungskomponente, um eine Ratensteuerung unter den strengen Latenzanforderungen des VR-/MR-Systems durchzuführen, anstatt über eine Zeitkonstante eines Bilds oder von zwei Bildern zu arbeiten, um Codiererparameter anzupassen, Codiererparameter (z. B. Quantisierungsparameter für die Frequenzbänder) für jede Scheibe einstellen. In einigen Ausführungsformen können die Frequenzbänder für eine Scheibe nach der Wavelet-Transformation im lokalen Speicher gepuffert werden, sodass Komplexitätsstatistiken über die Frequenzbänder vor dem Codieren berechnet werden können, zum Beispiel durch eine Komplexitätsanalysekomponente des Videocodiersystems. In einigen Ausführungsformen können die Komplexitätsstatistiken eines oder mehrere von einem Pixelgradienten und einer Größenvarianz für die CTU-Blöcke einschließen, sind jedoch nicht darauf beschränkt. Die Komplexitätsstatistiken können dann durch eine Ratensteuerungskomponente beim Bestimmen von Quantisierungsparametern für die Frequenzbänder zum Modulieren der Rate in dem Codierer für die derzeitige Scheibe verwendet werden. Das Berechnen der Komplexitätsstatistiken auf den gepufferten Frequenzbändern ermöglicht es dem Videocodiersystem, das Maß an Komplexität in einer Scheibe vor dem Codieren der Scheibe zu schätzen.
-
In einigen Ausführungsformen kann die Ratensteuerungskomponente Statistiken für ein oder mehrere zuvor verarbeitete Bilder untersuchen, um eine tatsächliche Anzahl von Bits zu bestimmen, die verwendet wurden, um zusammen angeordnete Blöcke oder Scheiben des Bilds/der Bilder zu codieren. Diese Informationen können dann in Kombination mit den Komplexitätsstatistiken für eine derzeitige Scheibe beim Bestimmen der Quantisierungsparameter für die derzeitige Scheibe verwendet werden.
-
In einigen Ausführungsformen können die Quantisierungsparameter für die Frequenzbänder gemeinsam berechnet werden, um die gesamte angezeigte Qualität der Bilder zu optimieren, nachdem die Decodiererrekonstruktion und die Wavelet-Synthese an der Vorrichtung durchgeführt wurden. Ein Verfahren zur Ratenzuordnung zwischen den Frequenzbändern besteht darin, in jedem der Frequenzbänder einen Arbeitspunkt zu finden, der zu gleichen Flanken auf der Betriebsratenverzerrungskurve führt. In einigen Ausführungsformen kann die Betriebsratenverzerrungskurve unter Verwendung einer Kombination von Statistiken aus der Entropiecodierstufe der Codierer-Pipeline geschätzt werden, wobei die Rate der Koeffizienten für Quantisierungsparameterschritte von 6 gut näherungsweise bestimmt werden kann.
-
In einigen Ausführungsformen kann ein interessierender Bereich innerhalb eines Bilds (z. B. der foveale Bereich) vorhanden sein, der eine höhere Auflösung als der umgebende Bereich (z. B. der periphere Bereich) in demselben Bild aufweisen sollte. In einigen Ausführungsformen können Komplexitätsstatistiken aus einem vorhergehenden Bild zusammen mit dem fovealen Bereich aus dem vorhergehenden Bild gespeichert und beim Berechnen der Quantisierungsparameter für die Frequenzbänder in Scheiben eines derzeitigen Bilds verwendet werden. Als ein Beispiel kann für jeden Block, der codiert werden soll, der foveale Bereich eines vorhergehenden Bilds verwendet werden, um die Komplexitätsstatistiken zu modulieren, die für das vorhergehende Bild berechnet wurden. Die resultierenden Komplexitätsstatistiken können dann zusätzlich zu den Komplexitätsstatistiken verwendet werden, die für Scheiben eines derzeitigen Bilds beim Bestimmen der Quantisierungsparameter berechnet werden.
-
In einigen Ausführungsformen kann die Ratensteuerungskomponente Codiererparameter (z. B. Quantisierungsparameter für die Frequenzbänder oder Prioritätsstufen) auf der Blockebene anstatt auf der Scheibenebene anpassen. In einigen Ausführungsformen können Komplexitätsstatistiken für jeden Block einer Scheibe berechnet werden und können Quantisierungsparameter für die Blöcke bestimmt werden.
-
7 ist ein Blockdiagramm, das ein Videocodiersystem, wie in 1 oder 2 veranschaulicht, in dem Komplexitätsstatistiken für die Frequenzbänder vor dem Codieren berechnet und beim Erzeugen von Quantisierungsparametern zum Codieren verwendet werden, gemäß mindestens einigen Ausführungsformen veranschaulicht.
-
In einigen Ausführungsformen werden gerenderte Scheiben eines Bilds, die Pixeldaten einschließen, zuerst durch eine Komponente zum Vorfiltern 1004, zum Beispiel eine N-Kanal-Filterbank, verarbeitet. In einigen Ausführungsformen können Blickverfolgungsinformationen, die von der Vorrichtung erhalten werden, verwendet werden, um die Richtung zu identifizieren, in die der Benutzer derzeit blickt. Ein Bereich des Bilds, welcher der Fovea entspricht (als der foveale Bereich bezeichnet), kann mindestens teilweise basierend auf der bestimmten Blickrichtung identifiziert werden. Der periphere Bereich (d. h. der Abschnitt des Bilds außerhalb des fovealen Bereichs) kann vorgefiltert werden, um Informationen basierend auf der Kenntnis des menschlichen Sichtsystems zu reduzieren, zum Beispiel durch Filtern von Hochfrequenzinformationen und/oder Erhöhen der Farbkomprimierung.
-
Die Ausgabe des Vorfilters 1004 wird durch eine Komponente zur Wavelet-Transformation 1006 verarbeitet. In einigen Ausführungsformen führt die Komponente zur Wavelet-Transformation 1006 eine 2-Schicht-Wavelet-Zerlegung durch, die Blöcke von Pixeln (z. B. 64x64- oder 128x128-Blöcke) aus einer Scheibe eines Bilds in mehrere (z. B. sieben) unterschiedliche Frequenzbänder zerlegt. Die Frequenzbänder für eine Scheibe können nach der Wavelet-Transformation 1005 gepuffert 1008 werden, sodass Komplexitätsstatistiken über die Frequenzbänder für die Scheibe durch eine Komponente für eine Komplexitätsanalyse 1050 des Videocodiersystems vor dem Codieren berechnet werden können. In einigen Ausführungsformen können die Komplexitätsstatistiken eines oder mehrere von einem Pixelgradienten und einer Größenvarianz für die CTU-Blöcke einschließen, sind jedoch nicht darauf beschränkt. Die Komponente für eine Komplexitätsanalyse 1050 stellt die Komplexitätsstatistiken für die Frequenzbänder in der Scheibe der Komponente zur Ratensteuerung 1018 des Codierers 1008 bereit. Die Komponente zur Ratensteuerung 1018 berechnet dann Quantisierungsparameter für jedes der Frequenzbänder in der Scheibe mindestens teilweise basierend auf den Komplexitätsstatistiken.
-
In einigen Ausführungsformen können die Quantisierungsparameter für die Frequenzbänder durch die Komponente zur Ratensteuerung 1018 gemeinsam berechnet werden, um die Rate zwischen den Frequenzbändern zuzuordnen, während die gesamte angezeigte Qualität der Bilder optimiert wird, nachdem die Decodiererrekonstruktion und die Wavelet-Synthese an der Vorrichtung durchgeführt wurden. Ein Verfahren zur Ratenzuordnung zwischen den Frequenzbändern besteht darin, in jedem der Frequenzbänder einen Arbeitspunkt zu finden, der zu gleichen Flanken auf der Betriebsratenverzerrungskurve führt. In einigen Ausführungsformen kann die Betriebsratenverzerrungskurve unter Verwendung einer Kombination von Statistiken aus der Entropiecodierstufe der Codierer-Pipeline 1020 geschätzt werden, wobei die Rate der Koeffizienten für Quantisierungsparameterschritte von 6 gut näherungsweise bestimmt werden kann.
-
In einigen Ausführungsformen kann die Komponente zur Ratensteuerung 1018 Statistiken für ein oder mehrere zuvor verarbeitete Bilder untersuchen, um eine tatsächliche Anzahl von Bits zu bestimmen, die verwendet wurden, um zusammen angeordnete Blöcke oder Scheiben des Bilds/der Bilder zu codieren. Diese Informationen können dann in Kombination mit den Komplexitätsstatistiken für die derzeitige Scheibe beim Bestimmen der Quantisierungsparameter für die derzeitige Scheibe verwendet werden.
-
In einigen Ausführungsformen kann ein interessierender Bereich innerhalb eines Bilds (z. B. der foveale Bereich) vorhanden sein, der eine höhere Auflösung als der umgebende Bereich (z. B. der periphere Bereich) in demselben Bild aufweisen sollte. In einigen Ausführungsformen können Komplexitätsstatistiken aus einem vorhergehenden Bild zusammen mit dem fovealen Bereich aus dem vorhergehenden Bild gespeichert und durch die Komponente zur Ratensteuerung 1018 beim Berechnen der Quantisierungsparameter für die Frequenzbänder in Scheiben eines derzeitigen Bilds verwendet werden. Als ein Beispiel kann für jeden Block, der codiert werden soll, der foveale Bereich eines vorhergehenden Bilds verwendet werden, um die Komplexitätsstatistiken zu modulieren, die für das vorhergehende Bild berechnet wurden. Die resultierenden Komplexitätsstatistiken können dann zusätzlich zu den Komplexitätsstatistiken verwendet werden, die für Scheiben eines derzeitigen Bilds beim Bestimmen der Quantisierungsparameter berechnet werden.
-
Die Komponente zur Ratensteuerung 1018 stellt die Quantisierungsparameter für die Frequenzbänder in der Scheibe der Blockverarbeitungs-Pipeline 1020 bereit, welche die Quantisierungsparameter verwendet, um die Frequenzbänder der derzeitigen Scheibe zu codieren. Die codierten Frequenzbänder werden der drahtlosen Schnittstelle 1010 bereitgestellt, welche die codierten Frequenzbänder paketiert und über eine drahtlose Verbindung 1080 an eine Vorrichtung überträgt.
-
Ein Ziel des Videocodiersystems besteht darin, die Qualität des Videostroms an die Vorrichtung zu optimieren, während die Bandbreitennutzung maximiert und die Latenz über die drahtlose Verbindung 1080 an die Vorrichtung minimiert wird. In einigen Ausführungsformen kann die drahtlose Schnittstelle 1010 derzeitige Informationen über die drahtlose Verbindung als Rückmeldung an die Komponente zur Ratensteuerung 1018 des Codierers 1008 bereitstellen, um zur Erreichung dieses Ziels beizutragen. Die Komponente zur Ratensteuerung 1018 kann diese Informationen beim Bestimmen von Quantisierungsparametern für die Frequenzbänder verwenden. In einigen Ausführungsformen kann die drahtlose Schnittstelle 1010 die momentane Gesamtbitrate der drahtlosen Verbindung 1080 verfolgen und kann außerdem die Rate verworfener Pakete auf der Verbindung 1080 verfolgen. In einigen Ausführungsformen meldet die drahtlose Schnittstelle 1010 die derzeitige Bitrate für die drahtlose Verbindung 1080 zurück an die Komponente zur Ratensteuerung 1018, die diese Informationen verwenden kann, um die verfügbare Bitrate unter den unterschiedlichen Frequenzbändern zuzuordnen. Wenn zum Beispiel die Bitrate der drahtlosen Verbindung 1080 derzeit niedrig ist, kann die Komponente zur Ratensteuerung 1018 den Quantisierungsparameter eines oder mehrerer der höheren Frequenzbänder anpassen, sodass diesen Bändern weniger Bits zugeordnet werden. In einigen Ausführungsformen meldet die drahtlose Schnittstelle 1010 auch die derzeitige Rate verworfener Pakete für die drahtlose Verbindung 1080 an die Komponente zur Ratensteuerung 1018 zurück; die Komponente zur Ratensteuerung 1018 kann die derzeitige Rate verworfener Pakete und die derzeitige Bitrate verwenden, um die Anpassung der Quantisierungsparameter der Frequenzbänder auszugleichen, um die Rate verworfener Pakete zu reduzieren oder zu minimieren, während die Bandbreitennutzung bei der derzeitigen Bitrate maximiert wird, um die Qualität des Videostroms zu optimieren.
-
In einigen Ausführungsformen kann die Komponente zur Ratensteuerung 1018 die Quantisierungsparameter für die Frequenzbänder auf der Blockebene anstatt auf der Scheibenebene anpassen.
-
8 ist ein Flussdiagramm eines Betriebsverfahrens für ein Videocodiersystem, wie in 7 veranschaulicht, gemäß mindestens einigen Ausführungsformen. Wie bei 1100 angegeben, bestimmt die Vorfilterkomponente foveale Bereiche für ein Bild/Bilder und filtert Pixeldaten in Scheiben vor. In einigen Ausführungsformen werden gerenderte Scheiben eines Bilds, die Pixeldaten einschließen, zuerst durch eine Vorfilterkomponente, zum Beispiel eine N-Kanal-Filterbank, verarbeitet. In einigen Ausführungsformen können Blickverfolgungsinformationen, die von der Vorrichtung erhalten werden, verwendet werden, um die Richtung zu identifizieren, in die der Benutzer derzeit blickt. Ein Bereich des Bilds, welcher der Fovea entspricht (als der foveale Bereich bezeichnet), kann mindestens teilweise basierend auf der bestimmten Blickrichtung identifiziert werden. Der periphere Bereich (d. h. der Abschnitt des Bilds außerhalb des fovealen Bereichs) kann vorgefiltert werden, um Informationen basierend auf der Kenntnis des menschlichen Sichtsystems zu reduzieren, zum Beispiel durch Filtern von Hochfrequenzinformationen und/oder Erhöhen der Farbkomprimierung.
-
Wie bei 1110 angegeben, zerlegt die Wavelet-Transformations-Komponente die vorgefilterten Pixeldaten in N (z. B. 7) Frequenzbänder. In einigen Ausführungsformen führt die Wavelet-Transformation-Komponente eine 2-Schicht-Wavelet-Zerlegung durch, die Blöcke von Pixeln (z. B. 64x64- oder 128x128-Blöcke) aus einer Scheibe eines Bilds in mehrere (z. B. sieben) verschiedene Frequenzbänder zerlegt. Die Frequenzbänder für eine Scheibe können nach der Wavelet-Transformation gepuffert werden, sodass Komplexitätsstatistiken über die Frequenzbänder für die Scheibe durch eine Komplexitätsanalysekomponente des Videocodiersystems vor dem Codieren berechnet werden können.
-
Wie bei 1120 angegeben, berechnet die Komplexitätsanalysekomponente Komplexitätsstatistiken über die Frequenzbänder. In einigen Ausführungsformen können die Komplexitätsstatistiken eines oder mehrere von einem Pixelgradienten und einer Größenvarianz für die CTU-Blöcke einschließen, sind jedoch nicht darauf beschränkt. Die Komplexitätsanalysekomponente stellt die Komplexitätsstatistiken für die Frequenzbänder in der Scheibe der Ratensteuerungskomponente des Codierers bereit.
-
Wie bei 1130 angegeben, bestimmt die Codierer-Ratensteuerungskomponente Quantisierungsparameter für jedes der Frequenzbänder in der Scheibe mindestens teilweise basierend auf den Komplexitätsstatistiken. In einigen Ausführungsformen können die Quantisierungsparameter für die Frequenzbänder durch die Ratensteuerungskomponente gemeinsam berechnet werden, um die Rate zwischen den Frequenzbändern zuzuordnen, während die gesamte angezeigte Qualität der Bilder optimiert wird, nachdem die Decodiererrekonstruktion und die Wavelet-Synthese an der Vorrichtung durchgeführt wurden. Ein Verfahren zur Ratenzuordnung zwischen den Frequenzbändern besteht darin, in jedem der Frequenzbänder einen Arbeitspunkt zu finden, der zu gleichen Flanken auf der Betriebsratenverzerrungskurve führt. In einigen Ausführungsformen kann die Betriebsratenverzerrungskurve unter Verwendung einer Kombination von Statistiken aus der Entropiecodierstufe der Codierer-Pipeline 1020 geschätzt werden, wobei die Rate der Koeffizienten für Quantisierungsparameterschritte von 6 gut näherungsweise bestimmt werden kann.
-
In einigen Ausführungsformen kann die Ratensteuerungskomponente Statistiken für ein oder mehrere zuvor verarbeitete Bilder untersuchen, um eine tatsächliche Anzahl von Bits zu bestimmen, die verwendet wurden, um zusammen angeordnete Blöcke oder Scheiben des Bilds/der Bilder zu codieren. Diese Informationen können dann in Kombination mit den Komplexitätsstatistiken für die derzeitige Scheibe beim Bestimmen der Quantisierungsparameter für die derzeitige Scheibe verwendet werden.
-
In einigen Ausführungsformen kann ein interessierender Bereich innerhalb eines Bilds (z. B. der foveale Bereich) vorhanden sein, der eine höhere Auflösung als der umgebende Bereich (z. B. der periphere Bereich) in demselben Bild aufweisen sollte. In einigen Ausführungsformen können Komplexitätsstatistiken aus einem vorhergehenden Bild zusammen mit dem fovealen Bereich aus dem vorhergehenden Bild gespeichert und durch die Ratensteuerungskomponente beim Berechnen der Quantisierungsparameter für die Frequenzbänder in Scheiben eines derzeitigen Bilds verwendet werden. Als ein Beispiel kann für jeden Block, der codiert werden soll, der foveale Bereich eines vorhergehenden Bilds verwendet werden, um die Komplexitätsstatistiken zu modulieren, die für das vorhergehende Bild berechnet wurden. Die resultierenden Komplexitätsstatistiken können dann zusätzlich zu den Komplexitätsstatistiken verwendet werden, die für Scheiben eines derzeitigen Bilds beim Bestimmen der Quantisierungsparameter berechnet werden.
-
Wie bei 1140 angegeben, wendet der Codierer (z. B. ein HEVC-Codierer) eine Codiertechnik auf die Frequenzbänder unter Verwendung der Quantisierungsparameter an, um die Daten zu komprimieren. Die Ratensteuerungskomponente stellt die Quantisierungsparameter für die Frequenzbänder in der Scheibe der Blockverarbeitungs-Pipeline des Codierers bereit, welche die Quantisierungsparameter verwendet, um die Frequenzbänder der derzeitigen Scheibe zu codieren. Die codierten Frequenzbänder werden der drahtlosen Schnittstelle der Basisstation bereitgestellt.
-
Wie bei 1150 angegeben, paketiert die drahtlose Schnittstelle die komprimierten Daten und sendet diese über die drahtlose Verbindung an die Vorrichtung. In einigen Ausführungsformen kann die drahtlose Schnittstelle derzeitige Informationen über die drahtlose Verbindung als Rückmeldung an die Ratensteuerungskomponente des Codierers bereitstellen. Die Ratensteuerungskomponente kann diese Informationen beim Bestimmen von Quantisierungsparametern für die Frequenzbänder verwenden. In einigen Ausführungsformen kann die drahtlose Schnittstelle die momentane Gesamtbitrate der drahtlosen Verbindung verfolgen und kann außerdem die Rate verworfener Pakete auf der Verbindung verfolgen. In einigen Ausführungsformen kann die Ratensteuerungskomponente die derzeitige Bitrate für die drahtlose Verbindung verwenden, um die verfügbare Bitrate unter den unterschiedlichen Frequenzbändern zuzuordnen. In einigen Ausführungsformen kann die Ratensteuerungskomponente die derzeitige Rate verworfener Pakete und die derzeitige Bitrate verwenden, um die Anpassung der Quantisierungsparameter der Frequenzbänder auszugleichen, um die Rate verworfener Pakete zu reduzieren oder zu minimieren, um die Qualität des Videostroms bei der derzeitigen Bitrate zu optimieren.
-
Wie durch den Pfeil angegeben, der von Element 1160 zu Element 1100 zurückkehrt, kann das Verfahren fortfahren, solange Daten an die Vorrichtung übertragen werden sollen.
-
Beispielhaftes VR-/MR-System
-
9 veranschaulicht ein beispielhaftes VR-/MR-System 2000, das ein Videocodiersystem implementieren kann, gemäß mindestens einigen Ausführungsformen. Ein VR-/MR-System 2000 kann mindestens eine Vorrichtung 2150 (z. B. einen Notebook- oder Laptop-Computer, eine Pad- oder Tablet-Vorrichtung, ein Smartphone, eine handgehaltene Rechenvorrichtung oder eine HMD, wie ein Headset, einen Helm oder eine Brille, die durch einen Benutzer am Körper getragen werden können) und eine Rechenvorrichtung 2100 (hierin als Basisstation bezeichnet) einschließen. Die Basisstation 2100 rendert VR- oder MR-Bilder, einschließlich virtueller Inhalte, codiert die Bilder und überträgt die codierten Bilder über eine drahtlose Verbindung 2180 an die Vorrichtung 2150 zum Decodieren und zur Anzeige durch die Vorrichtung 2150.
-
Die Basisstation 2100 und die Vorrichtung 2150 können jeweils eine Drahtloskommunikationstechnologie einschließen, die es der Basisstation 2100 und der Vorrichtung 2150 ermöglicht, über eine drahtlose Verbindung 2180 zu kommunizieren und Daten auszutauschen. In einigen Ausführungsformen kann die drahtlose Verbindung 2180 gemäß einer proprietären Drahtloskommunikationstechnologie implementiert werden, die eine hochdirektionale drahtlose Verbindung zwischen der Vorrichtung 2150 und der Basisstation 2100 bereitstellt. Jedoch können andere kommerzielle (z. B. Wi-Fi, Bluetooth usw.) oder proprietäre Drahtloskommunikationstechnologien in einigen Ausführungsformen verwendet werden.
-
In einigen Ausführungsformen kann die Vorrichtung 2150 Sensoren einschließen, die Informationen über die Umgebung des Benutzers (z. B. Video, Tiefeninformationen, Beleuchtungsinformationen usw.) und/oder über den Benutzer (z. B. die Mienen, Augenbewegung, Blickrichtung, Handgesten usw. des Benutzers) sammeln. Die Vorrichtung 2150 kann mindestens einige der durch Sensoren gesammelten Informationen über die drahtlose Verbindung 2180 an die Basisstation 2100 übertragen. Die Basisstation 2100 kann Bilder, die virtuelle Inhalte einschließen, mindestens teilweise basierend auf den verschiedenen Informationen, die von den Sensoren erhalten werden, zur Anzeige durch die Vorrichtung 2150 rendern, die Bilder codieren und die codierten Bilder zum Decodieren und zur Anzeige für den Benutzer über die drahtlose Verbindung 2180 an die Vorrichtung 2150 übertragen. Um die Bilder zu codieren und zu übertragen, kann die Basisstation 2100 ein Videocodiersystem, wie in 1 bis 8 veranschaulicht, implementieren.
-
10 ist ein Blockdiagramm, das Funktionskomponenten eines beispielhaften VR-/MR-Systems, wie in 9 veranschaulicht, und ein Verarbeiten in einem solchen gemäß einigen Ausführungsformen veranschaulicht. Die Vorrichtung 2150 kann, ohne darauf beschränkt zu sein, ein Notebook- oder Laptop-Computer, eine Pad- oder Tablet-Vorrichtung, ein Smartphone, eine handgehaltene Rechenvorrichtung oder eine HMD, wie ein Headset, ein Helm oder eine Brille, die durch einen Benutzer am Körper getragen werden können, sein. Die Vorrichtung 2150 kann eine Komponente oder ein Subsystem für eine Anzeige 2156 einschließen, die/das einen beliebigen von verschiedenen Typen von Virtual- oder Augmented-Reality-Anzeigetechnologien implementieren kann. Zum Beispiel kann eine HMD-Vorrichtung 2150 ein augennahes System sein, das linke und rechte Bilder auf Bildschirmen vor den Augen des Benutzers anzeigt, die durch eine Person betrachtet werden, wie VR-Systeme der Technologien DLP (Digital Light Processing), LCD (Liquid Crystal Display) und LCoS (Liquid Crystal on Silicon). Als weiteres Beispiel kann eine HMD-Vorrichtung 2150 ein direktes Netzhautprojektorsystem sein, das linke und rechte Bilder Pixel um Pixel zu den Augen der Person abtastet. Zum Abtasten der Bilder erzeugen linke und rechte Projektoren Strahlen, die auf linke und rechte reflektierende Komponenten (z. B. Ellipsoidspiegel) gerichtet sind, die sich vor den Augen des Benutzers befinden, die reflektierenden Komponenten reflektieren die Strahlen zu den Augen des Benutzers. Um einen dreidimensionalen Effekt (3D-Effekt) zu erzeugen, werden virtuelle Inhalte in unterschiedlichen Tiefen oder Abständen in der virtuellen 3D-Ansicht in den zwei Bildern in Abhängigkeit von der Triangulation des Abstands nach links oder rechts verschoben, wobei näher gelegene Objekte mehr verschoben werden als entfernter gelegene Objekte.
-
Die Vorrichtung 2150 kann auch eine Steuerung 2154 einschließen, die dafür ausgelegt ist, eine vorrichtungsseitige Funktionalität des VR-/MR-Systems 2000, wie hierin beschrieben, zu implementieren. In einigen Ausführungsformen kann die Vorrichtung 2150 auch einen Speicher 2170 einschließen, der dafür ausgelegt ist, Software (Code 2172) der Vorrichtungskomponente des VR-/MR-Systems 2000, die durch die Steuerung 2154 ausführbar ist, sowie Daten 2174, die durch die Software verwendet werden können, wenn sie auf der Steuerung 2154 ausgeführt werden, zu speichern. In verschiedenen Ausführungsformen kann die Steuerung 2154 ein Einzelprozessorsystem, das einen Prozessor einschließt, oder ein Multiprozessorsystem, das mehrere Prozessoren (z. B. zwei, vier, acht oder eine andere geeignete Anzahl) einschließt, sein. Die Steuerung 2154 kann zentrale Verarbeitungseinheiten (CPUs) einschließen, die dafür ausgelegt sind, eine beliebige geeignete Anweisungssatzarchitektur zu implementieren, und kann dafür ausgelegt sein, Anweisungen auszuführen, die in dieser Anweisungssatzarchitektur definiert sind. Zum Beispiel kann die Steuerung 2154 in verschiedenen Ausführungsformen Universal- oder eingebettete Prozessoren einschließen, die eine von einer Vielfalt von Anweisungssatzarchitekturen (ISAs), wie x86-, PowerPC-, SPARC-, RISC- oder MIPS-ISAs oder eine beliebige andere geeignete ISA, implementieren. In Multiprozessorsystemen kann jeder der Prozessoren herkömmlicherweise, jedoch nicht zwingend, dieselbe ISA implementieren. Die Steuerung 2154 kann eine beliebige Mikroarchitektur, einschließlich skalar, superskalar, Pipeline, Superpipeline, Out-of-order, In-order, spekulativ, nichtspekulativ usw. oder Kombinationen davon, einsetzen.
-
Die Steuerung 2154 kann eine Schaltlogik zum Implementieren von Mikrocodiertechniken einschließen. Die Steuerung 2154 kann einen oder mehrere Verarbeitungskerne einschließen, die jeweils dafür ausgelegt sind, Anweisungen auszuführen. Die Steuerung 2154 kann eine oder mehrere Ebenen von Caches einschließen, die eine beliebige Größe und Konfiguration einsetzen können (Set-assoziativ, direkt abgebildet usw.). In einigen Ausführungsformen kann die Steuerung 2154 mindestens eine Grafikverarbeitungseinheit (GPU) einschließen, die eine beliebige geeignete Grafikverarbeitungsschaltlogik einschließen kann. Allgemein kann eine GPU dafür ausgelegt sein, Objekte zur Anzeige in einen Bildpuffer (z. B. einen, der Pixeldaten für ein gesamtes Bild einschließt) zu rendern. Eine GPU kann einen oder mehrere Grafikprozessoren einschließen, die Grafiksoftware ausführen können, um einen Teil oder die Gesamtheit der Grafikoperation oder die Hardwarebeschleunigung bestimmter Grafikoperationen durchzuführen. In einigen Ausführungsformen kann die Steuerung 2154 eine oder mehrere andere Komponenten zum Verarbeiten und Rendern von Video und/oder Bildern einschließen, zum Beispiel Bildsignalprozessoren (ISPs), Codierer/Decodierer (Codecs) usw. In einigen Ausführungsformen kann die Steuerung 2154 mindestens ein System-on-a-Chip (SOC) einschließen.
-
Der Speicher 2170 kann einen beliebigen Speichertyp, wie dynamischen Speicher mit wahlfreiem Zugriff (DRAM), synchronen DRAM (SDRAM), SDRAM mit doppelter Datenrate (DDR, DDR2, DDR3 usw.) (einschließlich mobiler Versionen der SDRAMs, wie mDDR3 usw., oder Versionen der SDRAMs mit niedrigem Energieverbrauch, wie LPDDR2 usw.), RAMBUS DRAM (RDRAM), statischen RAM (SRAM) usw., einschließen. In einigen Ausführungsformen können eine oder mehrere Speichervorrichtungen auf einer Leiterplatte gekoppelt sein, um Speichermodule, wie einzelne Inline-Speichermodule (SIMMs), doppelte Inline-Speichermodule (DIMMs) usw., zu bilden. Alternativ können die Vorrichtungen mit einem System zum Implementieren integrierter Schaltungen in einer Chip-on-Chip-Konfiguration, einer Package-on-Package-Konfiguration oder einer Multi-Chip-Modul-Konfiguration montiert sein.
-
In einigen Ausführungsformen können die Sensoren 2160 einen oder mehrere Blickverfolgungssensoren (z. B. IR-Kameras mit einer IR-Beleuchtungsquelle) einschließen, die verwendet werden können, um die Position und Bewegung der Augen des Benutzers zu verfolgen, sind jedoch nicht darauf beschränkt. In einigen Ausführungsformen können zwei Blickverfolgungssensoren vorhanden sein, wobei jeder Blickverfolgungssensor ein jeweiliges Auge verfolgt. In einigen Ausführungsformen können die durch die Blickverfolgungssensoren gesammelten Informationen verwendet werden, um das Rendern von Bildern durch die Basisstation 2100 anzupassen und/oder um die Projektion der Bilder durch das Projektionssystem der Vorrichtung 2150 basierend auf der Richtung und dem Winkel, in die/dem die Augen des Benutzers blicken, anzupassen. Zum Beispiel können in einigen Ausführungsformen Inhalte der Bilder in einem Bereich um den Ort herum, auf den die Augen des Benutzers derzeitig blicken, detaillierter und mit einer höheren Auflösung gerendert werden als Inhalte in Bereichen, auf die der Benutzer nicht blickt, wodurch verfügbare Verarbeitungszeit für Bilddaten für Inhalte, die durch die fovealen Bereiche der Augen betrachtet werden, anstatt für Inhalte, die durch die peripheren Bereiche der Augen betrachtet werden, genutzt werden kann. In ähnlicher Weise können Inhalt von Bildern in Bereichen, auf die der Benutzer nicht blickt, mehr komprimiert werden als Inhalte des Bereichs um den Punkt, auf den der Benutzer derzeitig blickt. In einigen Ausführungsformen können sich zwei Blickverfolgungssensoren an einer Innenoberfläche der Vorrichtung 2150 derart an Positionen befinden, dass die Sensoren Ansichten von jeweiligen Augen des Benutzers haben. In verschiedenen Ausführungsformen können jedoch mehr oder weniger Blickverfolgungssensoren verwendet werden, und Blickverfolgungssensoren können an anderen Stellen positioniert sein. In einer beispielhaften nicht einschränkenden Ausführungsform kann jeder Blickverfolgungssensor eine IR-Lichtquelle und eine IR-Kamera einschließen, zum Beispiel eine 400x400-Pixel-Zählkamera mit einer Bildrate von 120 FPS oder mehr, HFOV von 70 Grad und mit einem Arbeitsabstand von 10 Millimeter (mm) bis 80 mm.
-
In einigen Ausführungsformen kann die Vorrichtung 2150 mindestens eine inertiale Messeinheit (IMU) 2162 einschließen, die dafür ausgelegt ist, Position, Ausrichtung und/oder Bewegung der Vorrichtung 2150 zu erfassen und die erfassten Positions-, Ausrichtungs- und/oder Bewegungsdaten der Steuerung 2154 der Vorrichtung 2150 und/oder der Basisstation 2100 bereitzustellen.
-
Die Vorrichtung 2150 kann auch eine drahtlose Schnittstelle 2152 einschließen, die dafür ausgelegt ist, mit einer externen Basisstation 2100 über eine drahtlose Verbindung 2180 zu kommunizieren, um Sensoreingaben an die Basisstation 2100 zu übertragen und komprimierte gerenderte Bilder, Scheiben oder Kacheln von der Basisstation 2100 zu empfangen. In einigen Ausführungsformen kann die drahtlose Schnittstelle 2152 eine proprietäre Drahtloskommunikationstechnologie implementieren, die eine hochdirektionale drahtlose Verbindung zwischen der Vorrichtung 2150 und der Basisstation 2100 bereitstellt. Jedoch können andere kommerzielle (z. B. Wi-Fi, Bluetooth usw.) oder proprietäre Drahtloskommunikationstechnologien in einigen Ausführungsformen verwendet werden.
-
Die Basisstation 2100 kann eine externe Vorrichtung (z. B. ein Rechensystem, eine Spielkonsole usw.) sein, die über eine drahtlose Schnittstelle 2180 kommunikativ mit der Vorrichtung 2150 gekoppelt ist. Die Basisstation 2100 kann einen oder mehrere verschiedene Typen von Prozessoren (z. B. SOCs, CPUs, ISPs, GPUs, Codecs und/oder andere Komponenten) zum Rendern, Filtern, Codieren und Übertragen von Video und/oder Bildern einschließen. Die Basisstation 2100 kann Bilder (wobei jedes Bild ein linkes und ein rechtes Bild einschließt), die virtuelle Inhalte einschließen, mindestens teilweise basierend auf den verschiedenen Eingaben, die von den Sensoren 2160 über die drahtlose Verbindung 2180 erhalten werden, rendern, die gerenderten Bilder (oder Scheiben der Bilder) unter Verwendung eines Videocodiersystems, wie hierin beschrieben, filtern und komprimieren und die komprimierten Bilder oder Scheiben an die Vorrichtung 2150 zur Anzeige übertragen.
-
Die Basisstation 2100 kann ein beliebiger Typ von Rechensystem oder Rechenvorrichtung, wie ein Desktop-Computer, ein Notebook- oder Laptop-Computer, eine Pad- oder Tablet-Vorrichtung, ein Smartphone, eine handgehaltene Rechenvorrichtung, eine Spielsteuerung, ein Spielsystem und so weiter, sein oder einen solchen einschließen. Die Basisstation 2100 kann eine Steuerung 2110 einschließen, die einen oder mehrere Prozessoren umfasst, die eine basisseitige Funktionalität des VR-/MR-Systems 2000, einschließlich des Videocodiersystems, wie hierin beschrieben, implementieren. Die Basisstation 2100 kann auch einen Speicher 2120 einschließen, der dafür ausgelegt ist, Software (Code 2122) der Basisstationskomponente des VR-/MR-Systems 2000, die durch die Basisstationssteuerung 2110 ausführbar ist, sowie Daten 2124, die durch die Software verwendet werden können, wenn sie auf der Steuerung 2110 ausgeführt werden, zu speichern.
-
In verschiedenen Ausführungsformen kann die Basisstationssteuerung 2110 ein Einzelprozessorsystem, das einen Prozessor einschließt, oder ein Multiprozessorsystem, das mehrere Prozessoren (z. B. zwei, vier, acht oder eine andere geeignete Anzahl) einschließt, sein. Die Steuerung 2110 kann zentrale Verarbeitungseinheiten (CPUs) einschließen, die dafür ausgelegt sind, eine beliebige geeignete Anweisungssatzarchitektur zu implementieren, und kann dafür ausgelegt sein, Anweisungen auszuführen, die in dieser Anweisungssatzarchitektur definiert sind. Zum Beispiel kann die Steuerung 2110 in verschiedenen Ausführungsformen Universal- oder eingebettete Prozessoren einschließen, die eine von einer Vielfalt von Anweisungssatzarchitekturen (ISAs), wie x86-, PowerPC-, SPARC-, RISC- oder MIPS-ISAs oder eine beliebige andere geeignete ISA, implementieren. In Multiprozessorsystemen kann jeder der Prozessoren gemeinsam, jedoch nicht zwingend, dieselbe ISA implementieren. Die Steuerung 2110 kann eine beliebige Mikroarchitektur, einschließlich skalar, superskalar, Pipeline, Superpipeline, Out-of-order, In-order, spekulativ, nichtspekulativ usw. oder Kombinationen davon, einsetzen. Die Steuerung 2110 kann eine Schaltlogik zum Implementieren von Mikrocodiertechniken einschließen. Die Steuerung 2110 kann einen oder mehrere Verarbeitungskerne einschließen, die jeweils dafür ausgelegt sind, Anweisungen auszuführen. Die Steuerung 2110 kann eine oder mehrere Ebenen von Caches einschließen, die eine beliebige Größe und Konfiguration einsetzen können (Set-assoziativ, direkt abgebildet usw.). In einigen Ausführungsformen kann die Steuerung 2110 mindestens eine Grafikverarbeitungseinheit (GPU) einschließen, die eine beliebige geeignete Grafikverarbeitungsschaltlogik einschließen kann. Allgemein kann eine GPU dafür ausgelegt sein, Objekte zur Anzeige in einen Bildpuffer (z. B. einen, der Pixeldaten für ein gesamtes Bild einschließt) zu rendern. Eine GPU kann einen oder mehrere Grafikprozessoren einschließen, die Grafiksoftware ausführen können, um einen Teil oder die Gesamtheit der Grafikoperation oder die Hardwarebeschleunigung bestimmter Grafikoperationen durchzuführen. In einigen Ausführungsformen kann die Steuerung 2110 eine oder mehrere andere Komponenten zum Verarbeiten, Rendern, Filtern und Codieren von Video und/oder Bildern, wie hierin beschrieben, einschließen, zum Beispiel eine oder mehrere von verschiedenen Typen von integrierten Schaltungen (ICs), Bildsignalprozessoren (ISPs), Codierern/Decodierern (Codecs) usw. In einigen Ausführungsformen kann die Steuerung 2110 mindestens ein System-on-a-Chip (SOC) einschließen.
-
Der Basisstationsspeicher 2120 kann einen beliebigen Speichertyp, wie dynamischen Speicher mit wahlfreiem Zugriff (DRAM), synchronen DRAM (SDRAM), SDRAM mit doppelter Datenrate (DDR, DDR2, DDR3 usw.) (einschließlich mobiler Versionen der SDRAMs, wie mDDR3 usw., oder Versionen der SDRAMs mit niedrigem Energieverbrauch, wie LPDDR2 usw.), RAMBUS DRAM (RDRAM), statischen RAM (SRAM) usw., einschließen. In einigen Ausführungsformen können eine oder mehrere Speichervorrichtungen auf einer Leiterplatte gekoppelt sein, um Speichermodule, wie einzelne Inline-Speichermodule (SIMMs), doppelte Inline-Speichermodule (DIMMs) usw., zu bilden. Alternativ können die Vorrichtungen mit einem System zum Implementieren integrierter Schaltungen in einer Chip-on-Chip-Konfiguration, einer Package-on-Package-Konfiguration oder einer Multi-Chip-Modul-Konfiguration montiert sein.
-
Die Basisstation 2100 kann auch eine oder mehrere Drahtlostechnologieschnittstellen 2130 einschließen, die dafür ausgelegt sind, mit der Vorrichtung 2150 über eine drahtlose Verbindung 2180 zu kommunizieren, um Sensoreingaben von der Vorrichtung 2150 zu empfangen und komprimierte Bilder, Scheiben oder Kacheln von der Basisstation 2100 an die Vorrichtung 2150 zu senden. In einigen Ausführungsformen kann die Drahtlostechnologieschnittstelle 2130 eine proprietäre Drahtloskommunikationstechnologie implementieren, die eine hochdirektionale drahtlose Verbindung zwischen der Vorrichtung 2150 und der Basisstation 2100 bereitstellt. In einigen Ausführungsformen können die Direktionalität und Bandbreite der Drahtloskommunikationstechnologie mehrere Vorrichtungen 2150 unterstützen, die gleichzeitig mit der Basisstation 2100 kommunizieren, um es somit mehreren Benutzern zu ermöglichen, das System 2000 gleichzeitig in einer am gleichen Standort befindlichen Umgebung zu verwenden. Jedoch können andere kommerzielle (z. B. Wi-Fi, Bluetooth usw.) oder proprietäre Drahtloskommunikationstechnologien in einigen Ausführungsformen verwendet werden.
-
In einigen Ausführungsformen kann die Basisstation 2100 dafür ausgelegt sein, Bilder zu rendern und an die Vorrichtung 2150 zu übertragen, um eine virtuelle 3D-Ansicht für den Benutzer bereitzustellen, die mindestens teilweise auf von der Vorrichtung 2150 empfangenen Eingaben des Sensors 2160 basiert. In einigen Ausführungsformen kann die virtuelle Ansicht ein Rendern der Umgebung des Benutzers, einschließlich ein Rendern von realen Objekten in der Umgebung des Benutzers, basierend auf Video einschließen, das durch eine oder mehrere Szenenkameras (z. B. RGB-Videokameras (Kameras für sichtbares Licht)) aufgenommen wird, die hochwertiges, hochauflösendes Video der Umgebung des Benutzers in Echtzeit zur Anzeige aufnehmen. In einigen Ausführungsformen kann die virtuelle Ansicht auch virtuelle Inhalte (z. B. virtuelle Objekte, virtuelle Tags für reale Objekte, Avatare des Benutzers usw.) einschließen, die durch die Basisstation 2100 gerendert und mit der projizierten 3D-Ansicht der realen Umgebung des Benutzers zusammengesetzt werden.
-
Obwohl in 9 und 10 nicht gezeigt, kann das VR-/MR-System 2000 in einigen Ausführungsformen eine oder mehrere andere Komponenten einschließen. Zum Beispiel kann das System eine Cursor-Steuervorrichtung (z. B. Maus) zum Bewegen eines virtuellen Cursors in der virtuellen 3D-Ansicht einschließen, um mit virtuellen Inhalten zu interagieren. Während 9 und 10 eine einzelne Vorrichtung 2150 zeigen, kann das VR-/MR-System 2000 in einigen Ausführungsformen mehrere Vorrichtungen 2150 unterstützen, die gleichzeitig mit der Basisstation 2100 kommunizieren, um es somit mehreren Benutzern zu ermöglichen, das System gleichzeitig in einer am gleichen Standort befindlichen Umgebung zu verwenden.
-
Die hierin beschriebenen Verfahren können in Software, Hardware oder einer Kombination davon in verschiedenen Ausführungsformen implementiert werden. Außerdem kann die Reihenfolge der Blöcke der Verfahren geändert werden, und verschiedene Elemente können hinzugefügt, aufgezeichnet, kombiniert, weggelassen, modifiziert werden usw. Verschiedene Modifikationen und Änderungen können vorgenommen werden, wie dies für einen Fachmann, der sich dieser Offenbarung bedient, naheliegen würde. Die verschiedenen, hierin beschriebenen Ausführungsformen sollen veranschaulichend und nicht einschränkend sein. Es sind viele Variationen, Modifikationen, Hinzufügungen und Verbesserungen möglich. Dementsprechend können für Komponenten, die hierin als einzelne Instanz beschrieben sind, mehrere Instanzen bereitgestellt werden. Grenzen zwischen verschiedenen Komponenten, Operationen und Datenspeicherungen sind in gewissem Maß willkürlich, und bestimmte Operationen sind im Kontext spezifischer, veranschaulichender Konfigurationen veranschaulicht. Andere Zuordnungen von Funktionalitäten sind denkbar und können in den Umfang der folgenden Ansprüche fallen. Schließlich können Strukturen und Funktionalitäten, die in den Beispielkonfigurationen als diskrete Komponenten dargestellt werden, als eine kombinierte Struktur oder Komponente implementiert werden. Diese und andere Variationen, Modifikationen, Erweiterungen und Verbesserungen können in den Umfang der Ausführungsformen fallen, wie er in den folgenden Ansprüchen definiert ist.