DE102020125612A1 - Kontinuierliche lokale 3d-rekonstruktionsverfeinerung in video - Google Patents

Kontinuierliche lokale 3d-rekonstruktionsverfeinerung in video Download PDF

Info

Publication number
DE102020125612A1
DE102020125612A1 DE102020125612.4A DE102020125612A DE102020125612A1 DE 102020125612 A1 DE102020125612 A1 DE 102020125612A1 DE 102020125612 A DE102020125612 A DE 102020125612A DE 102020125612 A1 DE102020125612 A1 DE 102020125612A1
Authority
DE
Germany
Prior art keywords
camera
scene
points
cameras
point
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102020125612.4A
Other languages
English (en)
Inventor
Elad Tauber
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE102020125612A1 publication Critical patent/DE102020125612A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • G06T7/73Determining position or orientation of objects or cameras using feature-based methods
    • G06T7/75Determining position or orientation of objects or cameras using feature-based methods involving models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/20Perspective computation
    • G06T15/205Image-based rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/292Multi-camera tracking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/50Depth or shape recovery
    • G06T7/55Depth or shape recovery from multiple images
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10028Range image; Depth image; 3D point clouds
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30221Sports video; Sports image

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Computing Systems (AREA)
  • Multimedia (AREA)
  • Software Systems (AREA)
  • Processing Or Creating Images (AREA)
  • Image Processing (AREA)

Abstract

Techniken, die sich auf verbesserte kontinuierliche lokale 3D-Rekonstruktionsverfeinerung beziehen, sind diskutiert. Derartige Techniken enthalten Konstruieren und Auflösen pro 3D-Objekt von Ausgleichungsmodellen in Echtzeit, um eine Punktwolke und/oder aktualisierte Kameraparameter für jedes Objektausgleichungsmodell zu erzeugen.

Description

  • HINTERGRUND
  • In verschiedenen Kontexten wie z. B. für Sportereignisse oder andere anspruchsvolle Ereignisse sind mehrere (z. B. etwa 40) Kameras mit Blick auf eine Szene (z. B. um ein Stadion) installiert. Bei der Installation mehrerer Kameras werden Segmentierung und 3D-Rekonstruktionstechnologien verwendet, um Volumetrieinhalte zum Zweck der Bereitstellung einer immersiven Medienerfahrung für Anwender zu erzeugen. Beispielsweise wird ein gleichzeitiges oder zeitgleiches Video der Szene aufgenommen, und es kann eine Punktwolke aufgebaut werden, um ein Volumetriemodell der Szene zu erzeugen, und die Punktwolke kann dann mit der aufgenommenen Textur aus mehreren aufgenommenen Bildern der Szene in jedem Augenblick, in dem ein solches fotorealistisches 3D-Modell der Szene erzeugt wird, gezeichnet werden. Darüber hinaus kann dann eine virtuelle Kamera oder Ansicht innerhalb des 3D-Modells verwendet werden, um in diesem 3D-Raum zu navigieren und eine wahrgenommene Sicht zu rendern, um mehrere Freiheitsgrade für eine in hohem Maße immersive Anwendererfahrung anzubieten.
  • Das Erzeugen eines Echtzeit-Volumetrievideos des Ereignisses in solchen Kontexten erfordert eine sehr hohe Rechenleistung. Darüber hinaus muss die endgültige Systemausgabe (z. B. das gerenderte Bild auf dem 3D-Modell) eine sehr hohe Qualität aufweisen, um die immersive Anwendererfahrung beizubehalten, und idealerweise in Echtzeit arbeiten. Es ist im Hinblick auf diese und andere Überlegungen, dass die vorliegenden Verbesserungen benötigt wurden. Solche Verbesserungen können wichtig werden, da sich der Wunsch, immersive Anwendererfahrungen in 3D-Szenen, die durch mehrere Kameras erhalten werden, weiter verbreitet.
  • Figurenliste
  • Das hier beschriebene Material ist als Beispiel und nicht zur Einschränkung in den begleitenden Figuren dargestellt. Zur Vereinfachung und Verdeutlichung der Darstellung sind in den Figuren dargestellte Elemente nicht notwendigerweise maßstabsgerecht gezeichnet. Beispielsweise können die Abmessungen einiger Elemente relativ zu anderen Elementen zur Verdeutlichung übertrieben sein. Ferner sind dort, wo es als geeignet erachtet wurde, Bezugszeichen unter den Figuren wiederholt, um entsprechende oder analoge Elemente anzugeben; es zeigen:
    • 1 ein Beispielsystem zum Erzeugen einer virtuellen Ansicht innerhalb einer Szene durch Bereitstellen einer Kalibrierungsmodellierung pro Objekt dar;
    • 2 eine beispielhafte Kameraanordnung, die auf einer Beispielszene für 3D-Modellierung trainiert ist, dar;
    • 3 beispielhafte dichte Punktwolken und Objektkennzeichen, die beispielhaften 3D-Objekten entsprechen, dar;
    • 4 beispielhafte 3D-Objekte und entsprechende Kameragruppen innerhalb der Szene dar;
    • 5 eine beispielhafte Bündelausgleichung für ein beispielhaftes 3D-Objekt dar;
    • 6 einen Beispielkontext zum Bereitstellen einer Bündelausgleichung für einen Punktwolkenorientierungspunkt dar;
    • 7 einen beispielhaften Prozess zum Aktualisieren von Objektpunktwolken und/oder Kameraparametern basierend auf Ausgleichungsmodellierung pro Objekt dar;
    • 8 einen beispielhaften Prozess zum separaten Konstruieren und Auflösen und Ausgleichungsmodellen unter Verwendung von Rückwärtsschnitt- und Vorwärtsschnitttechniken dar;
    • 9 ein Ablaufdiagramm, das einen Beispielprozess zum Erzeugen einer virtuellen Ansicht innerhalb einer Szene darstellt;
    • 10 ein erläuterndes Diagramm eines Beispielsystems zum Erzeugen einer virtuellen Ansicht innerhalb einer Szene;
    • 11 ein erläuterndes Diagramm eines Beispielsystems; und
    • 12 eine Beispielvorrichtung dar, die insgesamt in Übereinstimmung mit wenigstens einigen Implementierungen der vorliegenden Offenbarung ausgelegt ist.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Eine oder mehrere Ausführungsformen oder Implementierungen sind jetzt mit Bezug auf die beigefügten Figuren beschrieben. Obwohl spezifische Konfigurationen und Anordnungen diskutiert sind, ist zu verstehen dass das nur zu anschaulichen Zwecken so vorgenommen ist. Fachleute auf dem relevanten technischen Gebiet werden erkennen, dass andere Konfigurationen und Anordnungen eingesetzt werden können, ohne von dem Geist und Schutzbereich der Beschreibung abzuweichen. Es wird für Fachleute der relevanten Technik offensichtlich sein, dass hier beschriebene Techniken und/oder Anordnungen auch in einer Vielzahl anderer Systeme und Anwendungen, die nicht das sind, was hier beschrieben ist, eingesetzt werden können.
  • Obwohl die folgende Beschreibung verschiedene Implementierungen darlegt, die in Architekturen wie beispielsweise Einchipsystem-Architekturen (SoC-Architekturen) offenbart sein können, sind Implementierungen der hier beschriebenen Techniken und/oder Anordnungen nicht auf spezielle Architekturen und/oder Berechnungssysteme beschränkt und können durch irgendein/e Architektur und Berechnungssystem zu ähnlichen Zwecken implementiert sein. Beispielsweise können verschiedenen Architekturen, die beispielsweise mehrere Chips oder Baugruppen mit integrierter Schaltung (IC) und/oder verschiedene Berechnungsvorrichtungen und/oder elektronische Unterhaltungsgeräte (CE-Geräte) wie z. B. Set-Top-Boxes, Smartphones usw. einsetzen, die hier beschriebenen Techniken und/oder Anordnungen implementieren. Ferner kann, obwohl die folgende Beschreibung zahlreiche spezifische Einzelheiten wie z. B. Logikimplementierungen, Typen und wechselseitige Beziehungen von Systemkomponenten, Wahlmöglichkeiten für Logik-Partitionierung/Integration usw. darlegen kann, der beanspruchte Gegenstand ohne solche spezifischen Einzelheiten praktiziert werden. In anderen Fällen kann einiges Material wie beispielsweise Steuerstrukturen und vollständige Software-Befehlssequenzen nicht im Einzelnen gezeigt sein, um das hier offenbarte Material nicht zu verdecken.
  • Das hier offenbarte Material kann in Hardware, Firmware, Software oder irgendeiner Kombination daraus implementiert sein. Das hier offenbarte Material kann auch als Befehle, die auf einem maschinenlesbaren Medium gespeichert sind, die durch einen oder mehrere Prozessoren gelesen und ausgeführt werden können, implementiert sein. Ein maschinenlesbares Medium kann irgendein Medium und/oder Mechanismus zum Speichern oder Übertragen von Informationen in einer durch eine Maschine (z. B. eine Berechnungsvorrichtung) lesbaren Form enthalten. Beispielsweise kann ein maschinenlesbares Medium Festwertspeicher (ROM); Direktzugriffsspeicher (RAM); Magnetplattenspeichermedien; optische Speichermedien; Flash-Speichervorrichtungen; elektrische, optische, akustische oder andere Formen verbreiteter Signale (z. B. Trägerwellen, Infrarotsignale, digitale Signale usw.) und andere enthalten.
  • Bezugnahmen in der Spezifikation auf „eine Implementierung“, „eine Beispielimplementierung“ usw. geben an, dass die beschriebene Implementierung ein/e spezielle/s Merkmal, Struktur oder Eigenschaft enthalten kann, jedoch muss nicht jede Ausführungsform notwendigerweise das/die spezielle Merkmal, Struktur oder Eigenschaft enthalten. Außerdem beziehen sich solche Ausdrücke nicht notwendigerweise auf dieselbe Implementierung. Ferner ist, wenn ein/e spezielle/s Merkmal, Struktur oder Eigenschaft in Verbindung mit einer Ausführungsform beschrieben ist, übermittelt, dass es in dem Wissensbereich eines Fachmanns ist, ein/e solche/s Merkmal, Struktur oder Eigenschaft in Verbindung mit anderen Implementierungen zu bewirken, seien sie hier ausdrücklich beschrieben oder nicht.
  • Die Begriffe „im Wesentlichen“, „nahe“, „ungefähr“, „in der Nähe“ und „etwa“ beziehen sich allgemein auf einen Bereich innerhalb von +/-10 % um einen Zielwert. Beispielsweise bedeuten, sofern nicht im expliziten Kontext der Verwendung anders spezifiziert, die Begriffe „im Wesentlichen gleich“, „etwa gleich“ und „ungefähr gleich“, dass nicht mehr als eine zufällige Variation zwischen so beschriebenen Dingen vorhanden ist. In der Technik ist eine solche Variation typischerweise nicht größer als +/-10 % eines vorbestimmten Zielwerts. Sofern nicht anderweitig spezifiziert gibt die Verwendung der Ordnungsadjektive „erster“, „zweiter“ und „dritter“ usw., um ein gewöhnliches Objekt zu beschreiben, lediglich an, dass verschiedene Instanzen der gleichen Objekte bezeichnet sind, und ist nicht dafür vorgesehen zu implizieren, dass die so beschriebenen Objekte in einer gegebenen Reihenfolge, entweder zeitlich, räumlich, in der Rangfolge oder auf irgendeine andere Weise, sein müssen.
  • Verfahren, Vorrichtungen, Einrichtungen, Berechnungsplattformen und Artikel sind hier mit Bezug auf kontinuierliche 3D-Rekonstruktionsverfeinerung zur Erzeugung virtueller Ansichten von hoher Qualität innerhalb einer Szene beschrieben.
  • Wie vorstehend beschrieben kann es notwendig sein, in dem Kontext von 3D-Modellierung unter Verwendung von Rahmen, die von mehreren Kameras erhalten werden, die auf einer Szene trainiert sind, und anderen Kontexten eine 3D-Rekonstruktion der Szene von sehr hoher Qualität für die Erzeugung virtueller Ansichten innerhalb der Szene bereitzustellen. Die Erzeugung solcher virtuellen Ansichten strebt danach, Echtzeit-Videostreaming mit 6 Freiheitsgraden (6DOF) innerhalb der Umgebung bereitzustellen, so dass Ansichten von Positionen, wo keine physikalischen Kameras platziert werden können, für den Anwender bereitgestellt werden. Es ist das Ziel einer solchen Verarbeitung, eine minimale Latenz mit hoher Qualität bereitzustellen, damit das Ergebnis für den Betrachter immersiv ist. Insbesondere ist, da das Ziel ist, dreidimensionale dynamische Bewegung von Objekten und Personen in einer Szene (z. B. Spieler auf einem Fußballfeld, einem Basketballfeld usw.) basierend auf Voxeln (dreidimensionalen Pixeln) zu präsentieren, die Wiedergabetreue jedes einzelnen Voxels für das gesamte Erscheinungsbild der immersiven Videoausgabe wesentlich.
  • Beispielsweise kann Multiview-Stereo- (MVS-) Verarbeitung, wie sie hier diskutiert ist, eine erste Stufe, die Kalibrierung einer Szene bereitstellt, und eine zweite Stufe, die Erzeugung einer dichten Punktwolke ausführt, enthalten. Die erste Stufe kann als eine Struktur-aus-Bewegung- (SfM-) Verarbeitung charakterisiert sein und enthält das Rekonstruieren einer 3D-Struktur aus der Projektion der 3D-Struktur auf eine Reihe von Bildern (z. B. die projektive Geometrie). In einer solchen Verarbeitung ist die Eingabe eine Gruppe überlappender Bilder derselben Szene oder desselben Objekts, aufgenommen aus variierenden Blickwinkeln, und die Ausgabe ist eine 3D-Rekonstruktion des Objekts oder der Szene und der rekonstruierten intrinsischen und extrinsischen Kameraparametern aller Bilder. Eine solche SfM-Verarbeitung kann in Stufen unterteilt sein, die Merkmalsdetektion und -extraktion, Merkmalsabgleich und geometrische Verifizierung und Struktur- und Bewegungsrekonstruktion enthalten. Die hier diskutierten Techniken fokussieren auf die letzte Stufe (Struktur- und Bewegungsrekonstruktion), die eine Gruppe von Kamerastellungen und Merkmalspunkte einer dünnbesetzten Punktwolke optimiert, wie hier weiter diskutiert ist.
  • Beispielsweise stellt die erste Verarbeitungsstufe eine dünnbesetzte Punktwolke eines Objekts oder von Objekten in der Szene bereit und kalibriert alle Kameras, die auf dem Objekt oder den Objekten trainiert sind. Die Kamerakalibrierungsergebnisse geben sowohl dreidimensionale Kamerapositionen und dreidimensionale Orientierung der Kameras innerhalb eines Koordinatensystems, das für die Szene eingeführt ist, als auch intrinsische Parameter der Kameras an. Solche Parameter sind hier als Kameraparameter charakterisiert und können extrinsische und intrinsische Kameraparameter enthalten. Wie hier verwendet gibt der Begriff Position (oder Ort) allgemein Koordinaten eines/einer Objekts, Merkmalspunkts, Kamera usw. innerhalb eines Koordinatensystems, das für die Szene eingeführt ist (z. B. x, y und z), an, und der Begriff Orientierung stellt, wie der Name angibt, die Orientierung des Objekts an der Position bereit und kann beispielsweise in Form von Neigung, Gierung und Rollen ausgedrückt sein. Der Begriff Stellung ist verwendet, um sowohl die Position als auch die Orientierung eines Elements anzugeben. Insbesondere können in einigen Fällen Elemente nur mit einer Position versehen sein, und in einigen Fällen können Elemente mit sowohl einer Position als auch einer Orientierung (d. h. einer Stellung) versehen sein. Darüber hinaus geben die Begriffe 3D-Ort oder 3D-Position einen Ort oder eine Position an, die mit 3 Freiheitsgraden (z. B. in einem räumlichen Koordinatensystem) versehen sein können, während die Begriffe 2D-Ort oder 2D-Position einen Ort oder eine Position angeben, die mit 2 Freiheitsgraden (z. B. in einem ebenen Koordinatensystem wie z. B. auf einer Bildebene) versehen sein können.
  • In einer zweiten Stufe wird die Kalibrierung aus der ersten Stufe verwendet, um eine dichte Punktwolke zu erzeugen. Die dichte Punktwolke kann auf der Umsetzung von wechselseitigen zweidimensionalen Informationen zwischen Rahmen aus benachbarten Kameras zu einer dreidimensionalen Lokalisierung von Punkten und Merkmalen, um die dichte Punktwolke zu erhalten basieren. Die dichte Punktwolke kann dann verwendet werden, um eine virtuelle Ansicht innerhalb einer Szene zu erzeugen. Beispielsweise kann eine Ansicht aus irgendeiner Position und Orientierung innerhalb der Szene unter Verwendung der Punktwolke und von Texturinformationen aus Rahmen der Szene gerendert und gezeichnet werden. Hier ist der Begriff Rahmen verwendet, um einen Rahmen eines Videos oder eines Bilds der Szene wie es von einer Kamera erhalten wird, anzugeben. Die Begriffe Rahmen und Bild sind allgemein austauschbar verwendet. Es wird darauf hingewiesen, dass die Genauigkeit und Qualität der lokalisierten dichten Punktwolke, die verwendet ist, um virtuelle Ansichten zu rendern, durch sowohl die erste als auch die zweite Stufe begrenzt ist.
  • In einigen Ausführungsformen stellt die diskutierte Erzeugung der dichten Punktwolke die Separierung von Objekten in unterscheidbare rekonstruierte 3D-Objekte bereit. Wie sie hier verwendet sind, sind die Begriffe separat und unterscheidbar verwendet, um anzugeben, dass ein Modell oder eine Datenmenge geschlossen ist und nicht von einem/einer weiteren Modell oder Datenmenge abhängt. Beispielsweise beschreibt eine separate oder unterscheidbare Punktwolke ein Objekt vollständig ohne Abhängigkeit von zusätzlichen Daten. Darüber hinaus kann ein separates oder unterscheidbares Modell ohne Abhängigkeit von (oder ohne Einfluss aus) anderen Modellen oder Daten außerhalb des Modells aufgelöst werden. Solche dichte Punktwolken enthalten für jeden Punkt der dichten Punktwolke einen geschätzten 3D-Ort des Punkts in dem Koordinatensystem der 3D-Szene, eine Identifizierung der Kamera, die verwendet ist, um den Punkt zu lokalisieren oder zu erzeugen, und die Position (z. B. in x-, y-Koordinaten) in einem 2D-Bild, das der Kamera entspricht, so dass die Position in dem Bild einem 2D-Merkmalspunkt entspricht, der dem 3D-Ort des Punkts entspricht. Beispielsweise wurde der 2D-Merkmalspunkt in dem Bild basierend auf einem unterscheidbaren Merkmal, das ihm entspricht, extrahiert (das Merkmal kann als ein Deskriptor bezeichnet sein, da er den 2D-Punkt eindeutig beschreibt). Insbesondere kann die Rückprojektion des geschätzten 3D-Orts des Punkts auf die Bildebene, beispielsweise nach der Bündelausgleichung, nicht vollständig mit dem 2D-Merkmalspunkt in dem Bild übereinstimmen. Das heißt, jeder 2D-Merkmalspunkt und die entsprechende geschätzte 3D-Orts-Rückprojektion kann eine Differenz oder einen Verlust (oder Energie, Einbuße usw.) schaffen. Beispielsweise wird eine Zuordnung zwischen den übereinstimmenden Merkmalen von 2D-Punkten aus mehreren Ansichten zu dem 3D-Punkt, der durch sie trianguliert ist, bestimmt, und ein Verlust oder eine Energie ist der Rückprojektionsfehler (z. B. Ebene-Zwei-, L2-, Abstand zwischen 2D- (x, y)- projiziertem Punkt und dem ursprünglichen (x,y)-Punkt, wo das Merkmal extrahiert wurde. Die Kombination (z. B. Summe) solcher Verluste über Punkte kann in dem Bündelausgleichungsmodell reduziert sein. Darüber hinaus werden solche Verluste durch Kameraparameter beeinflusst, die ebenfalls beim Auflösen des Bündelausgleichungsmodells variieren können. Das heißt, die geschätzten 3D-Orte von Punkten in der Punktwolke und die Kameraparameter, sowohl intrinsische (z. B. Brennweite usw.) als auch extrinsische (z. B. Position und Orientierung) können beim Auflösen der Bündelausgleichung ausgeglichen werden.
  • Hier wird solche Bündelausgleichungsmodellierung auf einer Basis pro Objekt ausgeführt, so dass mehrere Modelle gleichzeitig konstruiert und aufgelöst werden, eines für jedes Objekt oder jeden Blob in der Szene. Obwohl in Bezug auf Bündelausgleichungen diskutiert kann jedes geeignete Energiemodell konstruiert und aufgelöst werden. Wie er hier verwendet ist gibt der Begriff Konstruktion in Bezug auf ein Modell die Erzeugung des Modells durch Aufbauen von Initialisierungsparametern von Merkmalspunkten, Kameraparametern usw. und Einschränkungen für die Parameter wie z. B. Festlegen einiger Punkte (z. B. nicht erlauben, sie zu bewegen, wenn das Modell aufgelöst wird) und Bereitstellen von Modellierungseinschränkungen (z. B. Bereitstellen der Energiefunktion, die zu minimieren ist, usw.) an. Der Begriff Auflösen in Bezug auf ein Modell gibt das Verwenden des konstruierten Modells zum Erzeugen von resultierenden Parametern für diejenigen Parameter, die in dem Modell variieren dürfen, an. Der Begriff Auflösen gibt nicht notwendigerweise an, dass eine optimale Lösung gefunden ist, da es vorteilhaft sein kann, Lösungen für die Zwecke rechnerischer Effizienz anzunähern, und/oder es nicht realisierbar sein kann, eine optimale Lösung in solchen Modellierungskontexten zu bestimmen oder zu definieren.
  • In einigen Ausführungsformen erzeugt die Modellkonstruktion pro Objekt (z. B. Bündelausgleichungsmodell) ein Energiemodell, das Fehlausgleichungen zwischen Positionen detektierter Merkmale in Rahmen (z. B. 2D-Merkmalspunkten) und den rückprojizierten Positionen der Merkmale von ihren geschätzten Positionen in dem 3D-Raum (z. B. 2D-Merkmalspunktrückprojektionen) bestraft. Das Modell kann außerdem andere Energiebegriffe enthalten. Wie diskutiert gibt es für ein Merkmal einen Ort des Merkmals, wie er in einem aus einer Kamera erhaltenen Rahmen erhalten wird, und einen Ort, der dem Merkmal entspricht, wie es aus seiner geschätzten Position auf der Punktwolke in dem 3D-Koordinatensystem rückprojiziert ist. Die Minimierung des Energiemodells kann solche Positionen näher zu einander anstoßen lassen, während sowohl die Fehler aus vielen anderen Merkmalen (z. B. einigen zehn oder hunderte) berücksichtigt werden als auch die Stellungen (und intrinsischen Parameter) der Kameras innerhalb des Koordinatensystems modelliert und ausgeglichen werden. Solche Techniken optimieren gleichzeitig eine Gruppe von Kameraparametern und 3D-Objektpunkte (z. B. Punkte einer Punktwolke).
  • In einigen Ausführungsformen legt jedes Bündelausgleichungsmodell vorteilhafterweise eine Kamera fest (z. B. legt die Kameraparameter für die Kamera fest, so dass sie sich nicht ändern können, wenn das Bündelausgleichungsmodell aufgelöst wird), um eine schwache Einschränkung bereitzustellen, um die Bündelausgleichung an die globale Szene zu binden. In einigen Ausführungsformen wird eine solche Bündelausgleichungsmodellierung nur für dynamische (z. B. sich bewegende) Objekte ausgeführt, so dass nur Objekte, die eine spezielle Bewegungsgröße aufweisen, modelliert werden. Darüber hinaus können, wie weiter unten diskutiert ist, für ein spezielles Objekt Rückwärtsschnitt (z. B. nur variierende Kameraparameter, während Merkmalspunkte festlegt sind) und Vorwärtsschnitt (z. B. nur variierende Merkmalspunkte, während Kameraparameter festgelegt sind) zum Zweck der Vereinfachung der Modellauflösung und optimaler Konvergenz abwechseln. In einigen Ausführungsformen erzeugt das Auflösen jedes Bündelausgleichungsmodells sowohl eine aktualisierte Punktwolke für das Objekt (optional eine weniger dichte oder dünnbesetzte Punktwolke) als auch aktualisierte Kameraparameter.
  • In den hier diskutierten Kontexten sind die Kameras (oder wenigstens die meisten Kameras) stationär (z. B. mit einer bekannten Bewegung), jedoch enthält die Struktur der Szene eine Kombination aus einer statischen Szene (z. B. einem Spielfeld oder einem Platz in Sportkontexten) kombiniert mit einer nicht starren dynamischen Szene (z. B. sich bewegenden Sportlern und Objekten) bei variierender Geschwindigkeit und Richtung der Bewegung. Wie hier ferner diskutiert ist, bieten die offenbarten Techniken Echtzeitkalibrierung (z. B. ermöglichen Kalibrierung und Rekonstruktion in weniger als einer Inversen einer Rahmenrate des von der Szene aufgenommenen Videos) in einer kombinierten dynamischen und statischen Szene mit Hunderten von Merkmalsspuren und einer hochfrequenten Änderung der Struktur in dem Gesichtsfeld durch Bereitstellen von Modellierung pro Objekt zur Kalibrierung.
  • 1 stellt ein Beispielsystem 100 zum Erzeugen einer virtuellen Ansicht innerhalb einer Szene durch Bereitstellen von Kalibrierungsmodellierung pro Objekt dar, ausgelegt in Übereinstimmung mit wenigstens einigen Implementierungen der vorliegenden Offenbarung. Wie in 1 gezeigt ist, enthält das System 100 ein Initialisierungsmodul 101 (beschriftet als statische/Hintergrund-Initialisierung), ein Modul 102 für dichte 3D-Rekonstruktion, ein Modul 103 für Echtzeitkalibrierung pro Objekt und ein Modul 104 für virtuelle Ansicht. Das System 100 kann in irgendeiner geeigneten Vorrichtung oder Gruppierung von Vorrichtungen implementiert sein. In einigen Ausführungsformen ist das System 100, oder Abschnitte davon, über einen Server-Computer, eine Cloud-Computing-Umgebung, einen Personalcomputer, einen Laptop-Computer, ein Tablet oder dergleichen implementiert. In einigen Ausführungsformen ist das System 100 über eine Kombination solcher Vorrichtungen implementiert. Insbesondere kann das System 100 unter mehreren Vorrichtungen zum Zweck der verbesserten Leistungsfähigkeit wie z. B. Rechengeschwindigkeit implementiert sein. Das System 100 kann als Teil eines Hardware- und Software-Systems beispielsweise in einem Veranstaltungsort oder einer Arena implementiert sein, um virtuelle Ansichten innerhalb einer Szene bereitzustellen.
  • 2 stellt eine beispielhafte Kameraanordnung 201 dar, die auf einer Beispielszene 210 für 3D-Modellierung trainiert ist, ausgelegt in Übereinstimmung mit wenigstens einigen Implementierungen der vorliegenden Offenbarung. Insbesondere kann die Szene 210 durch das System 100 3D-modelliert werden, und virtuelle Ansichten können innerhalb der Szene für ein immersives Anwendererlebnis erzeugt werden. In der dargestellten Ausführungsform enthält die Kameraanordnung 201 36 Kameras, die auf einem Sport-Spielfeld trainiert sind. Die Kameraanordnung 201 kann jedoch irgendeine geeignete Anzahl von Kameras enthalten, die auf die Szene 210 trainiert sind, wie z. B. nicht weniger als 20 Kameras, wobei 40 oder mehr Kameras von Vorteil sind. Beispielsweise kann die Kameraanordnung 201 auf die Szene 210 trainiert sein, um zeitgleiche oder gleichzeitige und überlappende Videorahmen und Sequenzen der Szene 210 zur Erzeugung eines Echtzeit-3D-Modells der Szene 210 zu erhalten. Die Kameraanordnung 201 kann in einem Stadion (nicht gezeigt), das ein Sport-Spielfeld der Szene 210 umgibt, montiert, kalibriert und auf die Szene 210 trainiert sein, um zeitgleiche oder gleichzeitige Bilder oder Video aufzunehmen. Wie gezeigt weist jede Kamera der Kameraanordnung 201 eine spezielle Ansicht der Szene 210 auf. Beispielsweise weist die Kamera 202 eine erste Ansicht der Szene 210 auf, und Kamera 203 weist eine zweite Ansicht der Szene 210 auf, und so weiter. Wie er hier verwendet ist, gibt der Begriff Ansicht den Bildinhalt einer Bildebene einer speziellen Kamera der Kameraanordnung 201 oder Bildinhalt irgendeiner Ansicht aus einer virtuellen Kamera, die sich innerhalb der Szene 210 befindet, an. Insbesondere kann die Ansicht eine aufgenommene Ansicht (z. B. eine Ansicht, die unter Verwendung einer Bildaufnahme in einer Kamera erhalten wird) sein, so dass mehrere Ansichten Repräsentationen derselben Person, desselben Objekts, derselben Entität usw. enthalten.
  • Zurück zu 1 empfängt wie gezeigt das Initialisierungsmodul 101 Initialisierungsrahmen 119 von der Kameraanordnung 201 zum Zweck der Initialisierung der Szene 210 in einer statischen oder Hintergrundeinstellung, wie z. B. wenn die Szene 210 leer ist und eine Aufführung oder ein Sportwettbewerb noch nicht begonnen hat. Darüber hinaus können, sobald sie initialisiert sind und während der Echtzeitimplementierung, das Modul 102 für dichte 3D-Rekonstruktion, das Modul 103 für Echtzeitkalibrierung pro Objekt und das Modul 104 für virtuelle Ansicht laufend Videorahmen 118 zum Gebrauch in ihrer jeweiligen Verarbeitung wie erforderlich empfangen. Das heißt, das System 100 empfängt Videorahmen 118 zum Erzeugung der hier diskutierten Datenstrukturen. Insbesondere erhält zu jedem Zeitpunkt (z. B. bei jedem Aufnehmen eines Rahmens) jede Kamera der Kameraanordnung 201 einen Videorahmen aus ihrer Ansicht der Szene 210, so dass ein synchronisiertes Video erhalten wird. Ein solches synchronisiertes Video wird verwendet, um ein dynamisches 3D-Modell der Szene 210 in Bezug auf ein Koordinatensystem 205 (siehe 2), das in Bezug auf die Szene 210 hergestellt wird, zu erzeugen, und das dynamische 3D-Modell wird wiederum verwendet, um virtuelle Bilder 116 innerhalb der Szene zu erzeugen. In dem Beispiel von 2 besitzt das Koordinatensystem 205 einen Ursprung in einer mittleren Oberfläche eines Spielfelds, es kann jedoch irgendein geeigneter Ursprung verwendet werden. Das 3D-Modell der Szene 210 kann beispielsweise durch irgendeine Anzahl von Punktwolken repräsentiert sein, wobei jeder Punkt jeder Punktwolke eine Koordinate eines Punkts auf einer Oberfläche des durch die Punktwolke repräsentierten Objekts bereitstellt.
  • Initialisierungsrahmen 119 und Videorahmen 118 können aus der Kameraanordnung 201, dem Speicher oder irgendeiner anderen Quelle erhalten werden. Beispielsweise kann, obwohl es hier in Bezug auf das Verarbeiten von Video, das aus der Kameraanordnung 201 erhalten wird, diskutiert ist, irgendeine Videoquelle verwendet werden. Die Initialisierungsrahmen 119 und Videorahmen 118 können irgendwelche Grafikdaten, Videorahmendaten, Bilddaten oder dergleichen oder irgendeine Datenstruktur, die für eine Grafik repräsentativ ist, in irgendeiner geeigneten Bildauflösung enthalten. In einer Ausführungsform können die Initialisierungsrahmen 119 und Videorahmen 118 eine 5k-Bildauflösung aufweisen (z. B. eine horizontale Bildauflösung von etwa 5.000 Pixeln wie z. B. eine Bildauflösung von 5120x3072 Pixeln). In einigen Ausführungsformen weisen die Initialisierungsrahmen 119 und Videorahmen 118 eine Bildauflösung von nicht weniger als 4k auf (z. B. horizontale Bildauflösung von ungefähr 4.000 Pixeln und nicht weniger als 3840 Pixeln, wie z. B. eine Bildauflösung von 3840x2160 Pixeln oder eine Bildauflösung von 4096x2160 Pixeln). Es kann jedoch irgendeine geeignete Bildauflösung des Eingabevideos implementiert sein.
  • Das Initialisierungsmodul 101 empfängt Initialisierungsrahmen 119 und führt vor dem Aufzeichnen eines Echtzeitereignisses innerhalb der Szene 210 einen Initialisierungs-SfM-Prozess aus, der beispielsweise eine globale Bündelausgleichung oder relative Bündelausgleichung über die statische Szene 210 enthält (die z. B. den Veranstaltungsort, die Tribüne, das Fußballfeld, das Spielfeld usw. enthält). Eine solche SfM-Verarbeitung kann außerdem Merkmalsdetektion und -extraktion und Merkmalsabgleich und geometrische Verifizierung vor einer solchen Bündelausgleichungsverarbeitung enthalten. Obwohl sie hier der Deutlichkeit der Präsentation halber in Bezug auf Sportereignisse dargestellt und diskutiert ist, kann die Szene 210 irgendein geeignetes Ereignis wie z. B. Unterhaltungsereignisse (Konzerte, Vorträge usw.), politische Ereignisse und so weiter enthalten.
  • Wie gezeigt erzeugt das Initialisierungsmodul 101 eine oder mehrere Hintergrund-Punktwolken 110 und initialisierte Kameraparameter 111. Wie er hier verwendet ist, gibt der Begriff Punktwolke irgendeine Datenstruktur an, die für eine Anzahl von Punkten innerhalb des Koordinatensystems 205 (z. B. in einem Koordinatenraum) repräsentativ sind. Typischerweise gibt eine Punktwolke 3D-Punkte an, die für eine Oberfläche eines Objekts oder von Objekten repräsentativ ist. Beispielsweise kann jeder 3D-Punkt (oder einfach Punkt) einer Punktwolke x-, y-, z-Koordinaten für einen Punkt auf einer Oberfläche eines Objekts enthalten. Solche Punktwolkendaten können andere Informationen wie z. B. eine Richtung normal zu der Oberfläche, eine Identifizierung eines Merkmals oder den Objektabschnitt, von dem der Punkt ein Teil ist, oder dergleichen enthalten. Beispielsweise kann in dem Kontext dichter Objektpunktwolken jede Punktwolke ein Objektkennzeichen (das z. B. das Objekt identifiziert) und eine Kameragruppe (die z. B. die Kameras identifiziert, die eine Ansicht der Punktwolke besitzen) enthalten, und jeder Punkt der Punktwolke kann eine spezielle Kamera (oder Kameras), die verwendet ist, um den Punkt zu erzeugen oder zu identifizieren, und eine x-, y-Koordinate (oder Koordinaten) innerhalb eines Bilds (oder Bildern) aus der Kamera (oder den Kameras), die verwendet wird, um den Punkt (z. B. den Merkmalspunkt) zu erzeugen, angeben. Das heißt, jeder 3D-Punkt der Punktwolke (in dem Koordinatensystem 205) kann einen 2D-Merkmalspunkt (auf einer Bildebene eines Rahmens, der durch eine spezielle Kamera erhalten wird), der dem 3D-Punkt entspricht, identifizieren. Insbesondere können die x-, y-Koordinate des Merkmalspunkts und die x-, y-Koordinate einer Rückprojektion des 3D-Punkts auf die Bildebene nicht übereinstimmen.
  • Darüber hinaus gibt, wie er hier verwendet ist, der Begriff Kameraparameter extrinsische Kameraparameter und/oder intrinsische Kameraparameter für jede Kamera der Kameraanordnung 201 an. Intrinsische Kameraparameter enthalten diejenigen Parameter, die zu der Kamera selbst intrinsisch sind, wie z. B. Brennweite usw. Extrinsische Kameraparameter enthalten den Ort (z. B. die x-, y-, z-Koordinaten) und die Drehung (z. B. Neigung, Gierung, Rollen) der Kamera innerhalb des Koordinatensystems 205. Zusammen stellen der Ort und die Drehung eine Stellung der Kamera bereit. Es wird darauf hingewiesen, dass einige Kameras der Kameraanordnung 201 festgelegt sein können, jedoch ihre Stellung innerhalb des Koordinatensystems immer noch Teil des 3D-Modells der Szene ist und durch Verarbeitung des 3D-Modells besser geschätzt werden kann. Das heißt, sowohl Kamerastellungen und Objektpunktwolken sind Variablen des zu optimierenden 3D-Modells.
  • Wie gezeigt sind Hintergrund-Punktwolken 110 und initialisierte Kameraparameter 111 für das Modul 102 für dichte 3D-Rekonstruktion zum Gebrauch bei der Erzeugung dichter Punktwolken 112 und der Objektkennzeichen 113 in der laufenden Verarbeitung bereitgestellt. Beispielsweise sind Hintergrund-Punktwolken 110 und initialisierte Kameraparameter 111 Initialisierungsparameter zum Gebrauch in der dichten Multiview-Stereo-Pipeline. Das Modul 102 für dichte 3D-Rekonstruktion empfängt Hintergrund-Punktwolken 110, initialisierte Kameraparameter 111 und Videorahmen 118, und das Modul 102 für dichte 3D-Rekonstruktion erzeugt laufend dichte Punktwolken 112 und Objektkennzeichen 113, wie z. B. auf Basis pro Rahmengruppe. Das Modul 102 für dichte 3D-Rekonstruktion kann Punktwolken 112 und Objektkennzeichen 113 unter Verwendung irgendeiner geeigneten Technik oder Techniken erzeugen.
  • Beispielsweise besitzt das Modul 102 für dichte 3D-Rekonstruktion Hintergrund-Punktwolken 110 (z. B. ein 3D-Modell der statischen Szene), und das Modul 102 für dichte 3D-Rekonstruktion empfängt pro Objekt Punktwolken 114 und Kameraparameter 115 (wie nachstehend weiter diskutiert ist). Das Modul 102 für dichte 3D-Rekonstruktion kann die Kameramodelle ausrichten, während es ein dichtes 3D-Modell rekonstruiert. Während einer solchen Verarbeitung segmentiert das Modul 102 für dichte 3D-Rekonstruktion 3D-Objekte, führt dichte Rekonstruktion solcher 3D-Objekte aus und verfolgt die 3D-Objekte sowohl in dem 3D-Modell als auch in dem 2D-Bildrahmenraum. Solche Techniken sind in der Technik bekannt und sind hier der Kürze halber nicht weiter diskutiert.
  • 3 stellt beispielhafte dichte Punktwolken 112 und Objektkennzeichen 113 dar, die beispielhaften 3D-Objekten 301, 302, 303 entsprechen, ausgelegt in Übereinstimmung mit wenigstens einigen Implementierungen der vorliegenden Offenbarung. Wie gezeigt wird jedes der 3D-Objekte 301, 302, 303 durch das Modul 102 für dichte 3D-Rekonstruktion modelliert und verfolgt. Insbesondere können, obwohl sie mit derselben Punktwolke und Stellung eines Spielers dargestellt sind, die 3D-Objekte 301, 302, 303 in der Implementierung unterschiedlich sein und können irgendwelche Objekte wie z. B. Menschen, Bälle usw. enthalten. Darüber hinaus sind die 3D-Objekte 301, 302, 303 durch entsprechende Punktwolken 341, 342, 343, Objektkennzeichen 311, 312, 313, Merkmalsgruppen 321, 322, 323 und Kameragruppen 331, 332, 333 repräsentiert. Solche Datenstrukturen sind als dichte Punktwolken 112 und Objektkennzeichen 113 von dem Modul 102 für dichte 3D-Rekonstruktion für das Modul 103 für Echtzeitkalibrierung pro Objekt zur Verarbeitung wie hier diskutiert bereitgestellt.
  • Beispielsweise identifiziert für das 3D-Objekt 301 das Objektkennzeichen 311 das Objekt und kann irgendeine geeignete Datenstruktur wie z. B. eines oder mehrere aus einem Indexierungswert, einem Objekttyp usw. enthalten. Darüber hinaus kann das Objektkennzeichen 311 identifizieren, ob das 3D-Objekt 301 statisch oder dynamisch ist (z. B. in Bewegung ist oder nicht), und/oder einen groben Bewegungswert für das 3D-Objekt 301 (z. B. eine Bewegungsrate in der Distanz über die Zeit) identifizieren. Die Punktwolke 341 (z. B. eine dichte Punktwolke), wie diskutiert, enthält jeden Punkt der dichten Punktwolke über einen geschätzten 3D-Ort jedes Punkts in dem Koordinatensystem (z. B. eine x-, y-, z-Koordinate jedes Punkts). Darüber hinaus stellen die Punktwolke 341, die Merkmalsgruppe 321 und die Kameragruppe 331 für jeden Punkt der Punktwolke 341 eine Identifizierung der Kamera bereit, die verwendet wird, um jeden Punkt der Punktwolke zu erzeugen oder zu bestimmen, und eine x-, y-Position eines Merkmalspunkts, der dem Punkt der Punktwolke in einem Bild oder Rahmen aus dieser Kamera entspricht, bereit. Solche Datenstrukturen können über die Punktwolke 341, die Merkmalsgruppe 321 und die Kameragruppe 331 unter Verwendung irgendeiner geeigneten Technik oder Techniken bereitgestellt werden. Beispielsweise kann die Kameragruppe 331 eine Untergruppe der Kameraanordnung 201 angeben, die eine Ansicht des Objekts 301 aufweist (z. B. einen Index, der alle Kameras auflistet, die verwendet werden, um 3D-Punkte der Punktwolke 341 zu erzeugen), und jeder Punkt der Punktwolke 341 kann eine der Kamerauntergruppen referenzieren und eine x-, y-Position des Merkmalspunkts in dem Bild aus der Kamera bereitstellen. In einigen Ausführungsformen stellt die Merkmalsgruppe 321 eine Datenstruktur bereit, die den Merkmalspunkt angibt, der jedem 3D-Punkt der Punktwolke 341 entspricht. Beispielsweise können die 3D-Punkte der Punktwolke 341 indiziert sein, und die Merkmalsgruppe 321 kann eine Kamera der Kameragruppe 331 und eine x-, y-Koordinate auf der Bildebene eines Rahmens, der durch die Kamera erhalten wird, identifizieren.
  • Ähnlich stellen für jedes der 3D-Objekte 302, 303 und so weiter die entsprechenden Objektkennzeichen 312, 313, Punktwolken 342, 343, Merkmalsgruppen 322, 323 und Kameragruppen 332, 333 für jedes 3D-Objekt die folgenden Daten bereit: ein Objektkennzeichen für das 3D-Objekt (das einen Objekttyp, ob das Objekt dynamisch oder statisch ist und/oder eine Bewegung des Objekts angibt), eine Punktwolke aus irgendeiner Anzahl von 3D-Punkten, wovon jeder einen Ort in der 3D-Szene relativ zu dem Koordinatensystem 205 angibt, und für jeden Punkt der Punktwolke eine Kamera, die verwendet wird, um den 3D-Punkt zu bestimmen oder zu lokalisieren, und eine x-, y-Position eines Rahmens aus der Kamera, die verwendet wird, um den 3D-Punkt der Punktwolke zu bestimmen oder zu lokalisieren.
  • Zurück zu 1 empfängt das Modul 103 für Echtzeitkalibrierung pro Objekt solche Daten, wie sie durch dichte Punktwolken 112 und Objektkennzeichen 113 repräsentiert sind, für einen speziellen Zeitpunkt und entsprechend einer speziellen Gruppe von Rahmen aus der Kameraanordnung 201. Das Modul 103 für Echtzeitkalibrierung pro Objekt konstruiert für jedes 3D-Objekt ein separates Bündelausgleichungsmodell und löst es auf. Insbesondere verwendet jedes Bündelausgleichungsmodell nur Daten, die einem 3D-Objekt entsprechen, und gleicht nur die Punktwolkenpunkte für das 3D-Objekt und/oder die Kameraparameter für die Kameragruppe, die für das 3D-Objekt relevant sind, aus. Das heißt, jede Bündelausgleichung ist auf ein 3D-Objekt und die Kameras, die das 3D-Objekt sehen, lokalisiert. Solche mehreren separaten Bündelausgleichungsmodelle werden in Echtzeit und wenigstens teilweise gleichzeitig konstruiert und aufgelöst, um eine aktualisierte 3D-Punktwolke (z. B. eine dünnbesetzte Punktwolke) und aktualisierte Kameraparameter für jedes Bündelausgleichungsmodell zu erzeugen. Beispielsweise werden für ein spezielles Bündelausgleichungsmodell aktualisierte 3D-Punkte der Punktwolke für (nur) dieses 3D-Objekt und/oder aktualisierte Kameraparameter für nur die Kameragruppe mit Blick auf das 3D-Objekt erzeugt.
  • In einigen Ausführungsformen empfängt das Modul 103 für Echtzeitkalibrierung pro Objekt für jedes von mehreren separaten rekonstruierten 3D-Objekten 301, 302, 303 in der Szene 210 zu einem speziellen Zeitpunkt 3D-Punkte für jedes 3D-Objekt, 2D-Merkmalspunkte, wovon jeder einen Ort in einem 2D-Rahmen oder Bild, das einem 3D-Punkt (z. B. einem Punkt der Punktwolke) entspricht, jedes 3D-Objekts und eine Kameragruppe, die eine Untergruppe von Kameras der Kameraanordnung 210, die den 2D-Bildern entspricht, angibt. Derartige Informationen werden für jedes der 3D-Objekte 301, 302, 303 empfangen. Beispielsweise wird für das 3D-Objekt 301 die Punktwolke 341 aus irgendeiner Anzahl von 3D-Punkten empfangen. Darüber hinaus wird für das 3D-Objekt 301 für jeden 3D-Punkt ein 2D-Merkmalspunkt empfangen, so dass der 2D-Merkmalspunkt einen Ort (z. B. x-, y-Koordinaten) des Merkmals innerhalb eines speziellen Rahmens oder Bilds, der/das durch eine der Kameras in der Kameragruppe 331 erhalten wird, angibt. Derartige Informationen für das 3D-Objekt 301 werden zusammen mit Kameraparametern für die Kameragruppe 331 verwendet, um ein Bündelausgleichungsmodell für nur das 3D-Objekt 301 zu konstruieren und aufzulösen. Ähnliche Daten werden für jedes der 3D-Objekte 302, 303 empfangen, und separate Bündelausgleichungsmodelle werden konstruiert und aufgelöst.
  • Wie gezeigt sind solche Punktwolken 114 pro Objekt und Kameraparameter 115 für das Modul 102 für dichte 3D-Rekonstruktion zum Gebrauch zum Erzeugen dichter 3D-Punktwolken wie hier diskutiert bereitgestellt. Punktwolken 114 pro Objekt und Kameraparameter 115 stellen dadurch eine Echtzeitkalibrierung (und insbesondere Kamerakalibrierung für eine Untergruppe von Kameras der Kameraanordnung 201) zum Gebrauch in der 3D-Objektrekonstruktion bereit. Durch Bereitstellen von Kalibrierung pro Objekt in Echtzeit wird eine verbesserte Kalibrierung bereitgestellt. Dadurch werden robustere und genauere 3D-Modelle erzeugt. Insbesondere können Kalibrierungstechniken der vollständigen Szene aufgrund von Einschränkungen in Bezug auf die benötigte Zeit und andere Einschränkungen nicht kalibriert werden. In einigen Ausführungsformen wird jedes der Bündelausgleichungsmodelle konstruiert und aufgelöst, dichte 3D-Rekonstruktion wird ausgeführt (z. B. Aktualisierungen der dichten 3D-Rekonstruktion bei Bedarf), und eine virtuelle Ansicht innerhalb der Szene 210 wird vor einer nächsten Gruppe von Rahmen, die durch die Kameraanordnung 201 aufgenommen werden, erzeugt. Beispielsweise wird jedes der Bündelausgleichungsmodelle in einer Zeitspanne, die kürzer ist als eine Zielzeitspanne, konstruiert und aufgelöst, so dass die Zielzeitspanne die Inverse einer Rahmenrate einer Kameraanordnung 201 minus einer vorbestimmten Dauer einer virtuellen Ansicht ist (z. B. einer geschätzten Zeitspanne, die benötigt wird, um Aktualisierungen der dichten 3D-Rekonstruktion auszuführen und eine virtuelle Ansicht zu erzeugen).
  • 4 stellt beispielhafte 3D-Objekte 301, 302 und entsprechende Kameragruppen 321 innerhalb der Szene 210 dar, ausgelegt in Übereinstimmung mit wenigstens einigen Implementierungen der vorliegenden Offenbarung. Wie gezeigt können sich die 3D-Objekte 301, 302 an irgendeinem Ort in der Szene 210 befinden und modelliert sein. Darüber hinaus wird das 3D-Objekt 301 unter Verwendung der Kameragruppe 331 (z. B. der Kameras 331a, 331b, 331c, ..., 331h) rekonstruiert. Das heißt, jede der Kameras 331a, 331b, 331c, ..., 331h wird verwendet, um wenigstens einen Punktwolkenpunkt des 3D-Objekts 301 zu rekonstruieren. Ähnlich wird das 3D-Objekt 302 unter Verwendung der Kameragruppe 332 (z. B. der Kameras 332a, 332b, 332c, ..., 332g) rekonstruiert.
  • Beim Konstruieren und Auflösen eines Bündelausgleichungsmodells für das 3D-Objekt 301 können die Orte von 3D-Punkten der 3D-Punktwolke 341 ausgeglichen werden, und/oder die Kameraparameter der Kameras 331a, 331b, 331c, ..., 331h können ausgeglichen werden. Solche Kameraparameter können intrinsische und/oder extrinsische Parameter sein. Insbesondere werden beim Konstruieren und Auflösen eines Bündelausgleichungsmodells für das 3D-Objekt 301 die Orte der Punkte der 3D-Punktwolke 342 und die Kameraparameter der Kameras 332a, 332b, 332c, ..., 332g nicht verwendet. Es wird darauf hingewiesen, dass in einigen Fällen die Kameragruppe 331 und die Kameragruppe 332 eine oder mehrere Kameras gemeinsam verwenden können. In einigen Ausführungsformen können, wenn ein Bündelausgleichungsmodell für das 3D-Objekt 301 und ein Bündelausgleichungsmodell für das 3D-Objekt 302 beide aktualisierte Kameraparameter für dieselbe Kamera bereitstellen, die Kameraparameter separat in der 3D-Rekonstruktion verwendet werden, oder die Kameraparameter können zum Gebrauch in der 3D-Rekonstruktion zusammengeführt werden (z. B. gemittelt oder dergleichen). In Ausführungsformen, in denen die Kameraparameter separat verwendet werden, wird eine erste Gruppe von Kameraparametern (aus dem ersten Bündelausgleichungsmodell) zur 3D-Rekonstruktion des 3D-Objekts 301 verwendet, und eine zweite Gruppe von Kameraparametern (aus dem zweiten Bündelausgleichungsmodell) wird zur 3D-Rekonstruktion des 3D-Objekts 302 verwendet.
  • Wie diskutiert wird ein Bündelausgleichungsmodell für jedes der 3D-Objekte 301, 302, 303 konstruiert und aufgelöst. Obwohl hier mit Bezug auf Bündelausgleichungsmodelle diskutiert, kann irgendein geeignetes Modell, das die Orte der Punkte der 3D-Punktwolke 341 und/oder die Kameraparameter ausgleicht, verwendet werden.
  • 5 stellt eine beispielhafte Bündelausgleichung für ein beispielhaftes 3D-Objekt 301 dar, ausgelegt in Übereinstimmung mit wenigstens einigen Implementierungen der vorliegenden Offenbarung. Insbesondere können separate Bündelausgleichungen für mehrere 3D-Objekte 301, 302, 303 gleichzeitig ausgeführt werden, der Deutlichkeit halber ist jedoch nur ein Bündelausgleichungsmodell dargestellt. Wie gezeigt enthalten für das 3D-Objekt 301 Eingaben für das Bündelausgleichungsmodell eine aktuelle Punktwolke 341 (Punktwolke _0) für das 3D-Objekt 301 und eine aktuelle Kameragruppe 331 für das 3D-Objekt 301, wie sie von dem Modul 102 für dichte 3D-Rekonstruktion empfangen werden. Wie diskutiert gibt jeder Punkt der Punktwolke 341 eine Position des Punkts in dem Koordinatensystem 205, eine Kamera, die verwendet ist, um den Punkt zu bestimmen oder zu lokalisieren, und eine x-, y-Koordinate eines Merkmalspunkts in einem Bild aus der Kamera, die verwendet wird, um den Punkt zu bestimmen oder zu lokalisieren, an.
  • Insbesondere enthält jede der Kameras 331a, 331b, 331c, ..., 331h initiale Kameraparameter, wie in Bezug auf die Kamera 331d und 331h dargestellt ist. Beispielsweise geben die Kameraparameter 501 intrinsische Parameter (nicht gezeigt) und extrinsische Kameraparameter für die Kamera 331d an. Die dargestellten extrinsischen Parameter für die Kamera 331d enthalten die initiale Position und Orientierung (z. B. x0, y0, z0, Neigung0, Gierung0, Rollen0). Ähnlich geben die Kameraparameter 503 intrinsische Parameter (nicht gezeigt) und extrinsische Kameraparameter für die Kamera 331h an. Insbesondere weist jede der Kameras 331a, 331b, 331c, ..., 331h solche initialen Kameraparameter auf, jedoch sind der Deutlichkeit halber nur die der Kameras 331d, 331 gezeigt.
  • 6 stellt einen Beispielkontext 600 zum Bereitstellen einer Bündelausgleichung für einen Punktwolkenorientierungspunkt 623 dar, ausgelegt in Übereinstimmung mit wenigstens einigen Implementierungen der vorliegenden Offenbarung. Beispielsweise kann der Orientierungspunkt 623 ein tatsächlicher Orientierungspunkt in dem Koordinatensystem 205 sein (so dass z. B. die Position des tatsächlichen Orientierungspunkts eine Unbekannte ist und die diskutierten Techniken anstreben, ihn und andere mit hoher Genauigkeit zu lokalisieren). Die aktuelle Punktwolkenposition (oder der Punkt) 622 ist eine geschätzte Position für den Orientierungspunkt 623 in der Punktwolke 341. Das heißt, die Punktwolkenposition 622 ist ein aktueller Punkt der Punktwolke 341 in dem 3D-Modell. Insbesondere ist die Punktwolkenposition 622 (die x-, y-, z-Koordinaten in dem Koordinatensystem 205 aufweist) nahe an der tatsächlichen Position des Orientierungspunkts 623 lokalisiert worden, es sind jedoch Verbesserungen durch Modellieren und Bündelausgleichung wünschenswert.
  • Darüber hinaus stellt 6 eine Punktwolkenposition 622 dar, die (wenigstens teilweise) durch die Kamera 331d der Kameragruppe 331 bestimmt oder lokalisiert worden ist. Darüber hinaus hat das 3D-Modell die Kamera 331d mit einer Kamerastellung 615 angeordnet und orientiert, so dass die Kamerastellung 615 einen Ort (z. B. x-, y-, z-Koordinaten) und eine Orientierung (z. B. Neigung, Gierung, Rollen) der Kamera 331d angibt (wie durch die Parameter 501 bereitgestellt). Darüber hinaus sind intrinsische Kameraparameter (nicht gezeigt) für die Kamera 331d hergestellt worden. Insbesondere können solche Kameraparameter (intrinsisch und extrinsisch) auch unter Verwendung von Bündelausgleichungsmodellierung bestimmt und verbessert werden. In jedem Bündelausgleichungsmodell pro Objekt sind viele solche Orientierungspunkte/Punktwolkenorte und Kameras/Kameraparameter vorhanden, die im Spiel sind, und die Ausgleichung von Punktwolkenposition 622 und der Kameraparameter für die Kamera 331d muss in Bezug auf alle solche Kombinationen (und nicht in Bezug allein auf den Kontext 600) und einige solcher Kombinationen optimiert werden (wobei einige Variablen in der Bündelausgleichung festgelegt sein können, wie hier weiter diskutiert ist).
  • 6 stellt außerdem einen Merkmalspunkt 603 (xF) dar, der der Punktwolkenposition 622 (wie sie durch die Punktwolke 341 oder die Merkmalsgruppe 321 identifiziert ist, wie hier diskutiert ist) innerhalb eines Rahmens 611 entspricht. Das heißt, der Rahmen 611 kann durch die Kamera 331d erhalten worden sein, und der Merkmalspunkt 603 kann verwendet worden sein, um die Punktwolkenposition 622 zu lokalisieren oder zu definieren. Insbesondere kann eine Projektion des Merkmalspunkts 603 auf einen 3D-Merkmalsort 621 (z. B. unter Verwendung stereoskopischer Techniken) eine Differenz 617 zwischen dem 3D-Merkmalsort 621 und der Punktwolkenposition 622 angeben. Ähnlich stellt die Projektion der Punktwolkenposition 622 auf die Bildebene des Rahmens 611 einen entsprechenden 2D-Punktwolkenprojektionspunkt 604 (xP) bereit. Insbesondere existiert eine Differenz 636 (die x- und y-Komponenten aufweisen kann) auf der Bildebene zwischen dem Merkmalspunkt 603 und dem 2D-Punktwolkenprojektionspunkt 604 analog zu der Differenz 617.
  • Beim Konstruieren eines Bündelausgleichungsmodells stellt die Differenz 636 (oder die Differenz 617) einen Fehlerterm (oder Energieterm) bereit, der minimiert werden kann, wenn angestrebt wird, den Orientierungspunkt 623 genauer zu lokalisieren. Zusammen mit vielen anderen solcher Fehlerterme oder Differenzen (z. B. für jede Punktwolkenposition 622) modelliert und reduziert das Bündelausgleichungsmodell den Gesamtfehler insgesamt, um aktualisierte Punktwolkenpositionen (die die Punktwolkenposition 622 enthalten) und/oder aktualisierte Kameraparameter (die die Kamerastellung 615 enthalten) zu erzeugen. Insbesondere beeinflussen die Kameraparameter das Bündelausgleichungsmodell (beispielsweise über die Projektion auf die Bildebene des Rahmens 611) und können bei seiner Konstruktion und Auflösung variiert werden. Das heißt, die Punktwolkenpositionen und/oder Kameraparameter werden als Variablen verwendet, die für die Bündelausgleichung aufzulösen sind. Diese Bündelausgleichung kann irgendwelche geeigneten Fehlerterme, Verlustfunktionen usw. einsetzen, um Differenzen wie z. B. die Differenz 636 zu berücksichtigen. In einigen Ausführungsformen kann eine Summe der Quadrate der Differenzen in Übereinstimmung mit der Differenz 636 in dem Bündelausgleichungsmodell minimiert werden.
  • Zurück zu 5 wird wie diskutiert ein lokales Bündelausgleichungsmodell (z. B. unter Verwendung nur von Informationen, die dem 3D-Objekt 301 entsprechen) konstruiert und aufgelöst. Das Ausgleichungsmodell modelliert Fehler zwischen der Punktwolke 341 und detektierten Merkmalspunktorten für jeden Punkt der Punktwolke 341 (z. B. basierend auf einer Differenz zwischen dem detektierten Merkmalspunktort auf einer 2D-Bildebene und einem projizierten Ort des Punktwolkenpunkts auf die 2D-Bildebene) mit den Positionen der Punkte in der Punktwolke und den Kameraparametern als Variablen, für die das Modell auflöst. Beispielsweise kann das Ausgleichungsmodell nichtlinear sein und kann unter Verwendung irgendeiner geeigneten Technik oder Techniken aufgelöst oder geschätzt werden.
  • Wie in 5 gezeigt wird das konstruierte lokale Bündelausgleichungsmodell bei Operation 510 aufgelöst. Insbesondere werden nach dem Auflösen des konstruierten lokalen Bündelausgleichungsmodells eine aktualisierte Punktwolke 512 (Punktwolke _2) und/oder aktualisierte Kameraparameter erzeugt. Beispielsweise kann die aktualisierte Punktwolke 512 neue Orte für einige der oder alle Punkte der Punktwolke in Bezug auf die Punktwolke 341 aufweisen. In einigen Ausführungsformen weisen die aktualisierte Punktwolke 512 und die Punktwolke 341 unterschiedliche Punktdichten auf, so dass die aktualisierte Punktwolke 512 eine dünnbesetzte Punktwolke ist, die weniger Punkte aufweist als die dichte Punktwolke 341. Beispielsweise kann der nächste dichte Punkt unter Verwendung der aktualisierten Punktwolke 512 und 3D-Rekonstruktionstechniken rekonstruiert werden.
  • Zusätzlich oder alternativ werden aktualisierte Kameraparameter erzeugt, wie mit Bezug auf die Kamera 331d gezeigt ist, die aktualisierte extrinsische Kameraparameter 511 aufweisen, die aktualisierte Position und Orientierung (z. B. xl, y1, z1, Neigung1, Gierung1, Rollenl) enthalten. Beispielsweise kann jede der Kameras 331a, 331b, 331c, ..., 331h neue oder aktualisierte Kameraparameter (sowohl intrinsische als auch extrinsische) aufweisen.
  • Darüber hinaus stellt 5 dar, dass bei der Konstruktion und dem Auflösen des Bündelausgleichungsmodells eine Kamera (z. B. die Kamera 331h in dem dargestellten Beispiel) festgelegt oder gebunden sein kann, so dass die extrinsischen Kameraparameter 503 in dem Ausgleichungsmodell nicht variieren dürfen. Solche Bindetechniken können eine schwache Einschränkung für die lokalen Bündelausgleichungen pro 3D-Objekt bereitstellen, um den Maßstab und den Ort (global) innerhalb des Koordinatensystems 205 beizubehalten. Die festgelegte oder gebundene Kamera kann unter Verwendung irgendeiner geeigneten Technik oder Techniken ausgewählt werden.
  • Wie diskutiert wird ein separates Bündelausgleichungsmodell für jedes 3D-Objekt unter Verwendung der 3D-Punkte (z. B. der Punkte der Punktwolke 341), der 2D-Merkmalspunkte (die Merkmalspunkte in einem 2D-Bild, die den Punkten der Punktwolke 341 entsprechen, identifizieren) und Kameraparameter jeder Kamera, die verwendet wird, um die 2D-Bilder zu erzeugen, konstruiert. Ferner ist in einigen Ausführungsformen in jedem Bündelausgleichungsmodell eine ausgewählte Kamera an einer aktuellen Stellung in der Szene festgelegt. Jedes der Bündelausgleichungsmodelle wird dann aufgelöst, wenigstens teilweise gleichzeitig, um für jedes Bündelausgleichungsmodell aktualisierte Kameraparameter für jede Kamera in der Kameragruppe und/oder eine aktualisierte Punktwolke für das 3D-Objekt zu erzeugen.
  • In einigen Ausführungsformen sind Rückwärtsschnitt- und Vorwärtsschnitttechniken alternierend für jedes Objekt und Bündelausgleichungsmodell eingesetzt. Solche Techniken alternieren zwischen dem Festlegen aller Kameraparameter, während die 3D-Punkte variieren dürfen, (Vorwärtsschnitt), und Festlegen aller 3D-Punkte, während die Kameraparameter variieren dürfen (Rückwärtsschnitt). Solche Techniken implementieren Bündelausgleichung, die die Schritte zum Verfeinern der Kameraparameter (Rückwärtsschnitt) und 3D-Punkte (Vorwärtsschnitt) verschachtelt, um die Menge von Berechnungs-Overhead vorteilhaft zu reduzieren. Beispielsweise wird durch Einschränken der Parameterverfeinerung auf Kameraparameter oder 3D-Punktwolken die rechnerische Komplexität zum Konstruieren und Auflösen des Bündelausgleichungsmodells reduziert, so dass Echtzeitverarbeitung implementiert werden kann.
  • Darüber hinaus wird in einigen Ausführungsformen Bündelausgleichungsmodellierung (z. B. Modellkonstruktion und Auflösung) nur für diejenigen Objekte der Szene 210 ausgeführt, die als dynamisch bezeichnet (z. B. in Bewegung) sind. Falls beispielsweise ein Objekt als statisch bezeichnet ist, kann die Bündelausgleichungsmodellierung für den aktuellen Zeitpunkt übersprungen werden. Wie diskutiert kann die 3D-Konstruktions-Pipeline (wie sie durch das Modul 102 für dichte 3D-Rekonstruktion implementiert ist) Vordergrundobjekte (z. B. dynamische oder sich im Feld bewegende Objekte) segmentieren und kennzeichnen, und für jedes bezeichnete Objekt wird eine dichte Punktwolke in Echtzeit unter Verwendung wechselseitiger Merkmale in Bildern erzeugt, während für jedes Objekt ein Kameragraph (oder eine Kameragruppe) individuell gespeichert wird, so dass der Kameragraph (oder die Kameragruppe) nur die Kamerauntergruppe enthält, die das Objekt mit jeweiligen Schlüsselpunkt-Merkmalszuordnungen (Merkmalsspuren) abdeckt. Zusätzlich kann jedes Objekt als statisch oder dynamisch bezeichnet sein, und Bündelausgleichungsmodellierung kann nur für die dynamischen Objekte ausgeführt werden (wobei z. B. das Kennzeichen statisch oder dynamisch darauf basiert, ob die Bewegung des Objekts größer oder kleiner als ein Schwellenwert ist). Beispielsweise ist, da die Kameras der Kameraanordnung 201 typischerweise stationär sind, nach einigen wenigen Bündelausgleichungsiterationen und/oder 3D-Rekonstruktionsiterationen ein geringer oder marginaler Beitrag zu der Bündelausgleichung der Kameras vorhanden, und die Kameraparameter des individuell bezeichneten Objekts erreichen Relaxation. In einigen Ausführungsformen kann eine Änderung der Lokalisierung des Objekts oder seiner Bewegung die Einleitung der Wiederaufnahme der Bündelausgleichungsmodellierung triggern. In einigen Ausführungsformen werden Objektort und/oder -bewegung verfolgt und verwendet, um Bündelausgleichungsmodellierung zu triggern (z. B. wenn sich der Ort des Objekts um einen Betrag größer als ein Schwellenwert bewegt oder sich mit einer Geschwindigkeit größer als ein Schwellenwert bewegt).
  • Jetzt zurück zu 1 werden Punktwolken 114 pro Objekt und Kameraparameter 115 für das Modul 102 für dichte 3D-Rekonstruktion zum Gebrauch zum Erzeugen dichter 3D-Punktwolken auf iterative oder laufende Weise bereitgestellt. In einigen Ausführungsformen kann lokale Pro-Objekt-Kalibrierung durch das Modul 103 für Echtzeitkalibrierung pro Objekt mit einer vorbestimmten Häufigkeit (z. B. für jeden 60. Rahmen) ausgeführt werden, während dichte 3D-Rekonstruktion auf einer Basis pro Rahmen ausgeführt wird. Darüber hinaus können wie gezeigt dichte Punktwolken 112 und Objektkennzeichen 113 für das Modul 104 für virtuelle Ansicht bereitgestellt werden (auf einer Basis pro Rahmen oder dergleichen).
  • Das Modul 104 für virtuelle Ansicht empfängt dichte Punktwolken 112 und Objektkennzeichen 113, Videorahmen 118 und eine Eingabe für die gewünschte virtuelle Kamerastellung (z. B. eine Eingabe der Spur des Orts und Orientierungen) oder andere Anwender- oder Anwendungseingabe (nicht gezeigt), die eine gewünschte virtuelle Ansicht innerhalb der Szene 210 angibt. Die virtuelle Kamerastellung kann an irgendeinem Ort innerhalb der Szene 210 sein und kann eine Auswahl der immersiven Ansicht durch einen Anwender angeben (z. B. um die Szene 210 aus der Perspektive eines Spielers, der Perspektive einer Überkopfkamera nahe der Szenenaktion usw. zu erleben). Unter Verwendung der virtuellen Kamerastellung, der dichten Punktwolken 112 und der Videorahmen 118 rendert das Modul 104 für virtuelle Ansicht eine Ansicht aus der virtuellen Kamerastellung. Die hier diskutierten Techniken stellen eine verbesserte Kalibrierung und schließlich verbesserte 3D-Modellierung und Erzeugung einer virtuellen Ansicht bereit.
  • 7 stellt einen beispielhaften Prozess 700 zum Aktualisieren von Objektpunktwolken und/oder Kameraparametern basierend auf Ausgleichungsmodellierung pro Objekt dar, ausgelegt in Übereinstimmung mit wenigstens einigen Implementierungen der vorliegenden Offenbarung. Beispielsweise kann der Prozess 700 durch das System 100 oder irgendein/e andere/s System oder Vorrichtung, die hier diskutiert sind, ausgeführt werden, um eine aktualisierte Punktwolke und/oder aktualisierte Kameraparameter basierend auf der Konstruktion und dem Auflösen eines Ausgleichungsmodells pro Objekt zur kontinuierlichen lokalen 3D-Rekonstruktionsverfeinerung zu erzeugen.
  • Der Prozess 700 beginnt bei Operation 701, wo 3D-Objekte empfangen werden, so dass die empfangene Datenstruktur für jedes 3D-Objekt eine Punktwolke (die viele 3D-Punkte enthält, die geschätzte Punktpositionen in einem 3D-Koordinatensystem angeben), Merkmalspunkte (die einen Merkmalspunkt für jeden 3D-Punkt der Punktwolke enthalten, so dass jeder Merkmalspunkt einen Ort des Merkmalspunkts in einem Rahmen angibt) und eine Kameragruppe (die die Kameras angibt, die verwendet werden, um die Rahmen, die Merkmalspunkte aufweisen, zu erhalten) enthält. Insbesondere werden eine Punktwolke, eine Gruppe von Merkmalspunkten und eine Kameragruppe für jedes Objekt empfangen.
  • Die Verarbeitung fährt mit der Operation 702, wo ein erstes Objekt zum Verarbeiten ausgewählt wird, und der Entscheidungsoperation 703, wo eine Bestimmung dazu vorgenommen wird, ob das bei Operation 702 ausgewählte Objekt dynamisch ist, fort. Die Bestimmung dazu, ob das ausgewählte Objekt dynamisch ist, kann unter Verwendung irgendeiner geeigneten Technik oder Techniken vorgenommen werden. Beispielsweise kann jedes Objekt für die aktuelle Verarbeitung als dynamisch oder statisch bezeichnet sein, wobei nur dynamische Objekte modelliert werden. In einer Ausführungsform wird ein Objekt als dynamisch bezeichnet, wenn die Bewegung des Objekts einen Schwellenwert übersteigt. In einigen Ausführungsformen werden alle Objekte als dynamisch bezeichnet und verarbeitet, bis wenig oder keine Bewegung für das Objekt detektiert wird (z. B. die Bewegung des Objekts kleiner ist als ein Schwellenwert). Eine solche Verarbeitung ermöglicht, dass Kalibrierung für das Objekt bereitgestellt wird, bis es stationär ist oder wenig Bewegung aufweist. In einigen Ausführungsformen kann das Objekt für ein vorher statisches Objekt zu dynamisch übergeleitet werden, wenn entweder sich der Ort des Objekts ändert oder die Rate der Bewegung des Objekts einen Schwellenwert übersteigt. Darüber hinaus kann eine solche Positionsänderung und Bewegungsrate des Objekts in Bezug auf die Bewegung zwischen Positionen in dem Koordinatensystem oder in Bezug auf eine Änderung der Form der Punktwolke selbst sein.
  • Falls in der Entscheidungsoperation 702 bestimmt wird, dass das Objekt statisch ist, fährt die Verarbeitung mit Operation 704 fort, wo Ausgleichungsmodellierung für das Objekt übersprungen wird. Insbesondere kann die Ausgleichungsmodellierung für statische Objekte die Relaxation der Kameraparameter auf einen stabilen Zustand bereitstellen, und zusätzliches Modellieren kann nicht notwendig sein. Falls in der Entscheidungsoperation 702 bestimmt wird, dass das Objekt dynamisch ist, fährt die Verarbeitung mit Operation 705 fort, wo Ausgleichungsmodellierung für das Objekt aktiviert wird. Die Verarbeitung fährt mit der Entscheidungsoperation 706 fort, wo eine Bestimmung dazu vorgenommen wird, ob das letzte separate Objekt in der Szene ausgewählt worden ist. Falls nein fährt die Verarbeitung mit Operation 702 fort, wie vorstehend diskutiert, bis ein letztes Objekt verarbeitet wird.
  • Nachdem das letzte Objekt verarbeitet worden ist, fährt die Verarbeitung mit Operation 707 fort, wo separate Ausgleichungsmodelle (z. B. Bündelausgleichungsmodelle) für jedes der separaten Objekte wie hier diskutiert konstruiert und aufgelöst werden. In einigen Ausführungsformen gleicht jedes Bündelausgleichungsmodell sowohl Punktwolkenpunkte als auch Kameraparameter aus (wobei eine Kamera festgelegte extrinsische Kameraparameter aufweist). In anderen Ausführungsformen alterniert das Bündelausgleichungsmodell für jedes Objekt zwischen Rückwärtsschnitt (Festlegen von Punktwolkenpunkten, während die Kameraparameter außer der Kamera mit festgelegter Stellung variieren dürfen) und Vorwärtsschnitt (Festlegen aller Kameraparameter während Punktwolkenpunkte variieren dürfen), wie mit Bezug auf 8 diskutiert ist.
  • Die Verarbeitung fährt mit Operation 708 fort, wo pro Objekt aktualisierte Punktwolken und/oder die aktualisierten Kameraparameter zum Gebrauch für dichte 3D-Rekonstruktion ausgegeben werden, wie hier diskutiert. Insbesondere überwinden der Prozess 700 und die hier an anderer Stelle diskutierten Techniken die Degeneration in einer initialen Kalibrierung und dynamische Änderungen innerhalb einer Szene, teilweise dadurch, dass die initiale Kalibrierung die Rekonstruktion von als sich bewegend bezeichneten Objekten triggert, die wiederum neue Merkmale rückmeldet, die zu einem spezifischen rekonstruierten Objekt gehören. Nach der ersten Stufe wird eine lokale Modellierung pro Gegenstand zur verbesserten lokalen Kalibrierung angewandt. In einigen Ausführungsformen kann die lokale Modellierung Rückwärtsschnitt-Vorwärtsschnitt implementieren (z. B. Optimieren der Kameraparameter und wiederum der Punktwolkenpositionen. Beispielsweise werden für eine erste Rahmengruppe (t) nur Kameraparameter verfeinert, und in einem zweiten Rahmen (t+1) werden nur Punktwolken verfeinert, und so weiter. Unter Verwendung solcher Techniken wird das Optimierungsproblem (z. B. das Ausgleichungsmodell) hinsichtlich der Echtzeitverarbeitung machbar.
  • 8 stellt einen beispielhaften Prozess 800 zum separaten Konstruieren und Auflösen und Ausgleichungsmodellen unter Verwendung von Rückwärtsschnitt- und Vorwärtsschnitttechniken dar, ausgelegt in Übereinstimmung mit wenigstens einigen Implementierungen der vorliegenden Offenbarung. Beispielsweise kann der Prozess 800 bei Operation 706 des Prozesses 700 zur verbesserten Recheneffizienz implementiert sein.
  • Der Prozess 800 beginnt bei der Startoperation 801, wo die Ausgleichungsmodellverarbeitung für ein Objekt beginnt. Es wird darauf hingewiesen, dass der Prozess 800 parallel für irgendeine Anzahl von Objekten wie hier diskutiert ausgeführt werden kann, während jedes Objekt in unterschiedlichen Rückwärtsschnitt/Vorwärtsschnitt-Modi oder Implementierung von Rückwärtsschnitt/Vorwärtsschnitt überhaupt sein kann. Beispielsweise können ein oder mehrere Objekte Rückwärtsschnitt/Vorwärtsschnitt umgehen. Darüber hinaus können für diejenigen Objekte, die Rückwärtsschnitt/Vorwärtsschnitt-Verarbeitung einsetzen, einige im Rückwärtsschnitt sein, während andere im Vorwärtsschnitt sind.
  • Die Verarbeitung fährt mit der Entscheidungsoperation 802 fort, wo für ein spezielles Objekt eine Bestimmung dazu vorgenommen wird, ob die aktuelle Ausgleichungsmodellierung und Auflösung eine Rückwärtsschnittiteration oder eine Vorwärtsschnittiteration ist. Eine solche Bestimmung kann unter Verwendung irgendeiner geeigneten Technik oder Techniken vorgenommen werden, wie z. B. unter Verwendung von Flags, die dem Objekt entsprechen, um Rückwärtsschnitt oder Vorwärtsschnitt in der aktuellen Iteration anzugeben. Falls das Objekt dahingehend mit einem Flag versehen ist, dass es eine Rückwärtsschnittiteration aufweist, fährt die Verarbeitung mit Operation 803 fort, wo ein Bündelausgleichungsmodell erzeugt wird, das alle Punktwolkenpunkte festlegt oder bindet (z. B. stellt das Modell Punktwolkenpunkte als Konstanten ein) und ihnen nicht erlaubt, beim Auflösen des Bündelausgleichungsmodells zu variieren. Das heißt, nur Kameraparameter (mit der Ausnahme einer Kamera, die verwendet ist, um das Bündelausgleichungsmodell pro Objekt locker an die globale Szene und globale Struktur aus dem Bewegungsmodell zu binden) dürfen in dem Bündelausgleichungsmodell variieren. Darüber hinaus wird das Bündelausgleichungsmodell mit festgelegten Punktwolkenpositionen aufgelöst, um nur aktualisierte Kameraparameter zu erzeugen. Solche aktualisierten Kameraparameter werden dann zum Gebrauch bei der dichten 3D-Rekonstruktion wie hier diskutiert ausgegeben. Die Verarbeitung fährt mit Operation 804 fort, wo ein Modus für das Objekt in einer nächsten Verarbeitungsiteration auf Vorwärtsschnitt eingestellt wird. Das heißt, in einigen Ausführungsformen alternieren Rückwärtsschnitt/Vorwärtsschnitt für das Objekt.
  • Falls das Objekt bei der Entscheidungsoperation 802 dahingehend mit einem Flag versehen ist, dass es eine Rückwärtsschnittiteration aufweist, fährt die Verarbeitung mit Operation 805 fort, wo ein Bündelausgleichungsmodell erzeugt wird, das alle Kameraparameter festlegt oder bindet (z. B. stellt das Modell Kameraparameter als Konstanten ein) und ihnen nicht erlaubt, beim Auflösen des Bündelausgleichungsmodells zu variieren. Das heißt, nur Punktwolkenpunkte dürfen in dem Bündelausgleichungsmodell variieren. Darüber hinaus wird das Bündelausgleichungsmodell mit festgelegten Kameraparametern aufgelöst, um eine aktualisierte Punktwolke zu erzeugen. Die aktualisierte Punktwolke wird dann zum Gebrauch bei der dichten 3D-Rekonstruktion wie hier diskutiert ausgegeben. Die Verarbeitung fährt mit Operation 806 fort, wo ein Modus für das Objekt in einer nächsten Verarbeitungsiteration auf Rückwärtsschnitt in Analogie zu Operation 804 eingestellt wird.
  • Obwohl mit Bezug auf alternierenden Rückwärtsschnitt/Vorwärtsschnitt diskutiert, kann irgendein Muster zum Umschalten zwischen Rückwärtsschnitt- und Vorwärtsschnitt-Modellierung verwendet werden. Beispielsweise kann die Modellierung mit der Ausgleichung sowohl der Kameraparameter als auch der Punktwolkenpositionen mit Rückwärtsschnitt/Vorwärtsschnitt in einem Rückwärtsschnitt/Vorwärtsschnitt/beide-variierend-Muster oder einem Rückwärtsschnitt/beidevariierend/Vorwärtsschnitt-Muster gemischt sein. Zusätzlich oder alternativ kann die Häufigkeit von Rückwärtsschnitt-, Vorwärtsschnitt- oder beidevariierend-Verarbeitung in Bezug auf die anderen erhöht werden.
  • 9 ist ein Ablaufdiagramm, das einen Beispielprozess 900 zum Erzeugen einer virtuellen Ansicht innerhalb einer Szene darstellt, ausgelegt in Übereinstimmung mit wenigstens einigen Implementierungen der vorliegenden Offenbarung. Der Prozess 900 kann eine oder mehrere Operationen 901-904 enthalten, wie in 9 dargestellt ist. Der Prozess 900 kann wenigstens einen Teil eines 3D-Modellkalibrierungsprozesses, einer 3D-Modellerzeugung oder eines Prozesses zum Erzeugen einer virtuellen Ansicht bilden. Als nicht einschränkendes Beispiel kann der Prozess 900 wenigstens einen Teil eines 3D-Modellkalibrierungsprozesses, einer 3D-Modellerzeugung oder eines Prozesses zum Erzeugen einer virtuellen Ansicht, wie sie wie hier diskutiert durch das System 100 ausgeführt werden, bilden. Darüber hinaus wird der Prozess 900 hier mit Bezug auf das System 1000 von 10 beschrieben.
  • 10 ist ein erläuterndes Diagramm eines Beispielsystems 1000 zum Erzeugen einer virtuellen Ansicht innerhalb einer Szene, ausgelegt in Übereinstimmung mit wenigstens einigen Implementierungen der vorliegenden Offenbarung. Wie in 10 gezeigt ist, kann das System 1000 einen zentralen Prozessor 1001, einen Bildprozessor 1002 und einen Speicher 1003 enthalten. Wie ebenfalls gezeigt ist, kann der Bildprozessor 1002 eines oder mehrere aus dem Initialisierungsmodul 101, dem Modul 102 für dichte 3D-Rekonstruktion, dem Modul 103 für Echtzeitkalibrierung pro Objekt und dem Modul 104 für virtuelle Ansicht enthalten oder implementieren. In dem Beispiel von System 1000 kann der Speicher 1003 Punktwolkendaten, Kameraparameter, Merkmalspunktdaten, Rahmendaten, virtuelle Bilddaten oder irgendwelche anderen hier diskutierten Daten speichern.
  • Wie gezeigt sind in einigen Beispielen eines oder mehrere oder Abschnitte des Initialisierungsmoduls 101, des Moduls 102 für dichte 3D-Rekonstruktion, des Moduls 103 für Echtzeitkalibrierung pro Objekt und des Moduls 104 für virtuelle Ansicht über den Bildprozessor 1002 implementiert. In anderen Beispielen sind eines oder mehrere oder Abschnitte des Initialisierungsmoduls 101, des Moduls 102 für dichte 3D-Rekonstruktion, des Moduls 103 für Echtzeitkalibrierung pro Objekt und des Moduls 104 für virtuelle Ansicht über den zentralen Prozessor 1001, eine Bildverarbeitungseinheit, eine Bildverarbeitungs-Pipeline, einen Bildsignalprozessor oder dergleichen implementiert. In einigen Beispielen sind eines oder mehrere oder Abschnitte des Initialisierungsmoduls 101, des Moduls 102 für dichte 3D-Rekonstruktion, des Moduls 103 für Echtzeitkalibrierung pro Objekt und des Moduls 104 für virtuelle Ansicht in Hardware als ein Ein-Chip-System (SoC) implementiert. In einigen Beispielen sind eines oder mehrere oder Abschnitte des Initialisierungsmoduls 101, des Moduls 102 für dichte 3D-Rekonstruktion, des Moduls 103 für Echtzeitkalibrierung pro Objekt und des Moduls 104 für virtuelle Ansicht in Hardware über eine FPGA implementiert.
  • Der Bildprozessor 1002 kann irgendeine/n Anzahl und Typ von Bilder- oder Grafikverarbeitungseinheiten enthalten, die die hier diskutierten Operationen bereitstellen können. Solche Operationen können über Software oder Hardware oder eine Kombination daraus implementiert sein. Beispielsweise kann der Bildprozessor 1002 eine Schaltungsanordnung enthalten, die dediziert ist, Bilder, die aus dem Speicher 1003 erhalten werden, zu manipulieren und/oder zu analysieren. Der zentrale Prozessor 1001 kann irgendeine/n Anzahl und Typ von Verarbeitungseinheiten oder Modulen enthalten, die Steuerung und andere Funktionen hoher Ebene für das System 1000 bereitstellen können und/oder irgendwelche Operationen wie hier diskutiert bereitstellen können. Der Speicher 1003 kann irgendein Typ von Speicher sein, wie z. B. flüchtiger Speicher (z. B. statischer Direktzugriffsspeicher (SRAM), dynamischer Direktzugriffsspeicher (DRAM) usw.) oder nichtflüchtiger Speicher (z. B. Flash-Speicher usw.) und so weiter. In einem nicht einschränkenden Beispiel kann der Speicher 1003 durch einen Cache-Speicher implementiert sein. In einer Ausführungsform sind eines oder mehrere oder Abschnitte des Initialisierungsmoduls 101, des Moduls 102 für dichte 3D-Rekonstruktion, des Moduls 103 für Echtzeitkalibrierung pro Objekt und des Moduls 104 für virtuelle Ansicht über eine Ausführungseinheit (EU) des Bildprozessors 1002 implementiert. Die EU kann beispielsweise programmierbare Logik oder Schaltungsanordnung wie z. B. einen Logikkern oder -kerne enthalten, die ein weites Feld programmierbarer Logikfunktionen bereitstellen können. In einer Ausführungsform sind eines oder mehrere oder Abschnitte des Initialisierungsmoduls 101, des Moduls 102 für dichte 3D-Rekonstruktion, des Moduls 103 für Echtzeitkalibrierung pro Objekt und des Moduls 104 für virtuelle Ansicht über dedizierte Hardware wie z. B. eine Schaltungsanordnung mit festgelegter Funktion oder dergleichen implementiert. Die Schaltungsanordnung mit festgelegter Funktion kann dedizierte Logik oder Schaltungsanordnung enthalten und kann eine Menge von Eintrittspunkten mit festgelegter Funktion enthalten, die auf die dedizierte Logik für eine/n festgelegten Zweck oder Funktion abbilden können.
  • Zurück zur Diskussion von 9 beginnt der Prozess 900 bei Operation 901, wo für jedes der mehreren separaten rekonstruierten 3D-Objekte in der Szene zu einem speziellen Zeitpunkt mehrere 3D-Punkte für das 3D-Objekt, mehrere 2D-Merkmalspunkte, die jeweils einen Ort in wenigstens einem aus mehreren 2D-Bildern, die einem 3D-Punkt des 3D-Objekts entsprechen, angeben, und eine Kameragruppe, die eine Untergruppe von Kameras aus mehreren Kameras angibt, um Rahmen der Szene, die den 2D-Bildern entspricht, zu erhalten, empfangen werden. Beispielsweise können die mehreren 3D-Punkte für das 3D-Objekt Teil einer gesamten Punktwolke sein, die das 3D-Objekt repräsentiert. Die mehreren 2D-Merkmalspunkte können den mehreren 3D-Punkten entsprechen, wobei jeder 2D-Merkmalspunkt einen Ort in einem von mehreren 2D-Bildern angibt. Beispielsweise kann der 2D-Merkmalspunkt in einem Rahmen sein, der für die Szene durch eine der Kameras in der Untergruppe erhalten wird. Wie diskutiert gibt die Untergruppe der Kameras (oder der Kameragraph) diejenigen Kameras an, die verwendet werden, um wenigstens einen 2D-Merkmalspunkt zu erzeugen, so dass die Untergruppe der Kameras eine Untergruppe von mehreren Kameras ist, die in einem Veranstaltungsort installiert und auf der Szene trainiert sind, um gleichzeitiges Video der Szene zu erhalten.
  • In einigen Ausführungsformen enthält der Prozess 900 ferner das Ausführen von Struktur-aus-Bewegung-Verarbeitung für einen Hintergrund der Szene, wobei kein dynamisches Objekt vorhanden ist, um initiale Kameraparameter für jede der mehreren Kameras und eine Hintergrund-Punktwolke zu erzeugen, die 3D-Punkte für identifizierte Merkmale innerhalb der Szene enthält, so dass jedes der separaten Bündelausgleichungsmodelle die initialen Kameraparameter enthält. Beispielsweise können die auf der Szene trainierten Kameras initial für einen leeren Veranstaltungsort oder eine statische Szene oder dergleichen kalibriert sein, und solche Kameraparameter können als Initialisierungsparameter in der Bündelausgleichungsmodellierung verwendet werden. Darüber hinaus kann eine Hintergrund-Punktwolke oder statische Punktwolke zum Gebrauch in der dichten 3D-Rekonstruktion der Szene erzeugt werden.
  • Die Verarbeitung fährt mit Operation 902 fort, wo ein separates Bündelausgleichungsmodell für jedes 3D-Objekt unter Verwendung der 3D-Punkte, der 2D-Merkmalspunkte und der Kameraparameter jeder Kamera in der Kameragruppe konstruiert wird. Beispielsweise werden für N 3D-Objekte N separate Bündelausgleichungsmodelle erzeugt, jedes basierend auf, für das pertinente 3D-Objekt, den 3D-Punkten, den 2D-Merkmalspunkten und Kameraparametern für die Kamerauntergruppe, die dem 3D-Objekt entspricht. In einigen Ausführungsformen ist in jedem Bündelausgleichungsmodell eine ausgewählte Kamera in einer aktuellen Stellung in der Szene festgelegt, so dass sich die ausgewählte Kamerastellung beim Auflösen des Bündelausgleichungsmodells nicht ändert (z. B. sind die extrinsischen Kameraparameter oder sowohl die extrinsischen als auch die intrinsischen Kameraparameter für die ausgewählte Kamera festgelegt oder gebunden). In einigen Ausführungsformen enthält jedes der separaten Bündelausgleichungsmodelle eine Summe von Verlustfunktionen, wobei die Verlustfunktionen jeweils zum Messen einer Differenz zwischen einem 2D-Merkmalspunkt und einem rückprojizierten Punkt für einen entsprechenden 3D-Punkt dienen, so dass der rückprojizierte Punkt auf den Kameraparametern basiert. Beispielsweise kann die Summe der Verlustfunktionen eine Summe einer Verlustfunktion für jede Kombination aus einer 3D-Punkt-Rückprojektion und einem 2D-Merkmalspunkt sein.
  • Die Verarbeitung fährt mit Operation 903 fort, wo jedes der Bündelausgleichungsmodelle separat wenigstens teilweise gleichzeitig aufgelöst wird, um für jedes Bündelausgleichungsmodell wenigstens eines aus aktualisierten Kameraparametern für Kameras in der Kameragruppe oder einer aktualisierten Punktwolke für das 3D-Objekt zu erzeugen. In einigen Ausführungsformen werden sowohl aktualisierte Kameraparameter als auch eine aktualisierte Punktwolke durch Auflösen jedes Bündelausgleichungsmodells erzeugt. Insbesondere können die aktualisierten Kameraparameter aktualisierte Parameter für alle Kameras außer der ausgewählten festgelegten Kamera, die keine aktualisierten Parameter oder nur Aktualisierungen intrinsischer Parameter aufweisen kann, enthalten.
  • In einigen Ausführungsformen entsprechen die 3D-Punkte, die 2D-Merkmalspunkte und die Kameragruppe mehreren ersten zeitgleichen Rahmen in der Szene, die durch die Kameras, die auf der Szene trainiert sind, zu dem speziellen Zeitpunkt erhalten werden, und jedes der Bündelausgleichungsmodelle legt jede Kamera auf aktuelle Stellungen der Kameras in der Szene fest. Beispielsweise können die Bündelausgleichungsmodelle Rückwärtsschnitt-Bündelausgleichungsmodelle sein. In einigen Ausführungsformen enthält der Prozess 900 ferner das Empfangen für jedes der mehreren separaten 3D-Objekte mehrerer zweiter 3D-Punkte für das 3D-Objekt, mehrerer zweiter 2D-Merkmalspunkte, wovon jeder einen zweiten Ort in wenigstens einem aus mehreren zweiten 2D-Bildern angibt, der einem zweiten 3D-Punkt des 3D-Objekts entspricht, und eine zweite Kameragruppe, die eine zweite Untergruppe von Kameras der mehreren Kameras angibt, die den zweiten 2D-Bildern entsprechen, Konstruieren eines zweiten Bündelausgleichungsmodells für jedes 3D-Objekt unter Verwendung der zweiten 3D-Punkte, der zweiten 2D-Merkmalspunkte und Kameraparameter jeder Kamera in der zweiten Kameragruppe, so dass in jedem zweiten Bündelausgleichungsmodell eine ausgewählte zweite Kamera auf eine zweite aktuelle Stellung in der Szene festgelegt ist und alle zweiten 3D-Punkte für jedes Objekt auf aktuellen zweiten 3D-Punktorten in der Szene festgelegt sind, und separates Auflösen jedes der zweiten Bündelausgleichungsmodelle wenigstens teilweise gleichzeitig, um für jedes zweite Bündelausgleichungsmodell zweite aktualisierte Kameraparameter zu erzeugen, so dass alle zweiten 3D-Punkte für jedes 3D-Objekt festgelegt bleiben. Beispielsweise können die zweiten Bündelausgleichungsmodelle Vorwärtsschnitt-Bündelausgleichungsmodelle sein. In einigen Ausführungsformen enthält der Prozess 900 ferner alternierendes Konstruieren und Auflösen von Bündelausgleichungsmodellen mit festgelegten Kamerastellungen und Konstruieren und Auflösen zweiter Bündelausgleichungsmodelle mit festgelegten 3D-Punkten über mehrere Gruppen gleichzeitiger Rahmen der Szene. Beispielsweise können Rückwärtsschnitt und Vorwärtsschnitt für eines oder mehrere der Objekte alternieren.
  • In einigen Ausführungsformen enthält der Prozess 900 ferner das Verfolgen der Bewegung jedes der separaten rekonstruierten 3D-Objekte, Detektieren einer kleinen oder keiner Bewegung für ein erstes 3D-Objekt der separaten 3D-Objekte basierend darauf, dass eine Strecke der Bewegung des ersten Objekts kleiner ist als ein Schwellenwert, und Überspringen des Konstruierens eines zweiten Bündelausgleichungsmodells für das erste 3D-Objekt in Reaktion darauf, dass eine kleine oder keine Bewegung detektiert wird. In einigen Ausführungsformen enthält der Prozess 900 ferner das Aufteilen eines vollständigen 3D-Modells der Szene in Hintergrundobjekte und die separaten rekonstruierten 3D-Objekte und Bezeichnen jedes der separaten rekonstruierten 3D-Objekte als dynamisch und der Hintergrundobjekte als statisch, so dass das Empfangen, Konstruieren, separate Auflösen und Ausgeben in Reaktion darauf ausgeführt werden, dass die separaten rekonstruierten 3D-Objekte als dynamisch bezeichnet sind, und das Empfangen, Konstruieren, Auflösen und Ausgeben für die Hintergrundobjekte übersprungen wird. Beispielsweise können die separaten Bündelausgleichungsmodelle für jedes 3D-Objekt basierend darauf ausgeführt werden, dass das 3D-Objekt dynamisch und nicht statisch ist. In einigen Ausführungsformen enthalten die 3D-Punkte für jedes separate rekonstruierte 3D-Objekt eine dichte Punktwolke, die eine größere 3D-Punkt-Dichte aufweist als die entsprechende aktualisierte Punktwolke aus dem Auflösen des Bündelausgleichungsmodells.
  • Die Verarbeitung fährt mit Operation 904 fort, wo die aktualisierten Kameraparameter und/oder die aktualisierten Punktwolken zum Gebrauch zur Erzeugung einer virtuellen Ansicht innerhalb der Szene ausgegeben werden. Beispielsweise werden unter Verwendung der aktualisierten Kameraparameter und/oder der aktualisierten Punktwolken in der dichten 3D-Konstruktion eines dichten 3D-Modells (das eine dichte 3D-Punktwolke enthält) verwendet, das wiederum zur Erzeugung einer virtuellen Ansicht innerhalb der Szene verwendet werden kann. Beispielsweise kann eine virtuelle Stellung innerhalb der Szene ausgewählt werden, und eine Ansicht von der Stellung innerhalb der Szene kann unter Verwendung der Punktwolke und Texturinformationen aus Rahmen der Szene gerendert und gezeichnet werden, um eine virtuelle Ansicht (z. B. ein gerendertes Bild aus der virtuellen Stellung) zu erzeugen. Der diskutierte Prozess kann in Echtzeit ausgeführt werden, um eine 3D-Rekonstruktion hoher Qualität und virtuelle Bilder hoher Qualität zu erzeugen. In einigen Ausführungsformen werden das diskutierte Empfangen, Konstruieren, separate Auflösen und Ausgeben des Prozesses 900 innerhalb einer Zeitspanne ausgeführt, die kürzer ist als eine Zielzeitspanne, wobei die Zielzeitspanne gleich einer Inversen einer Rahmenrate, die dem Aufnehmen der Szene durch die mehreren Kameras entspricht, minus einer vorbestimmten virtuellen Ansichtzeitspanne ist.
  • Der Prozess 900 kann beliebig oft wiederholt werden, entweder der Reihe nach oder parallel, für irgendeine Anzahl von Zeitpunkten, Gruppen von Rahmen von Videos, Szenen oder dergleichen. Der Prozess 900 kann 3D-Szenenkalibrierung, 3D-Szenenrekonstruktion und Erzeugung virtueller Ansichten enthalten. Die hier diskutierten Techniken stellen eine Rekonstruktion mit hoher Qualität und eine Erfahrung einer immersiven Ansicht für einen Anwender bereit. Solche Techniken adressieren sowohl das Problem der Echtzeitstruktur aus Bewegung als auch die Variation aus Änderungen mit hoher Frequenz in der Bewegung nicht starrer Objekte. Solche Techniken unterteilen eine verfolgte Szene in als statisch und dynamisch bezeichnete Objekte, um individuelle Struktur aus Bewegung und Ausgleichung pro bezeichnetem sich bewegenden Objekt zu ermöglichen, während eine schwache Einschränkung auf das Binden an die Struktur aus der Bewegung der statischen Szene erhalten bleibt. Darüber hinaus stellen die diskutierten Techniken eine genaue Punktwolkenerzeugung durchgehend durch eine gesamte Videoaufzeichnung einer Szene unabhängig von der Lokalisierung jedes Objekts in der Szene bereit. Dadurch erscheinen keine sichtbaren Inkonsistenzen in der Volumetrieausgabe, und die immersive Wahrnehmung für den Anwender ist realistischer.
  • Der Prozess 900 kann durch irgendeine/irgendwelche geeignete(n) Vorrichtung(en), System(e) oder Plattform(en) wie die hier diskutierten implementiert sein. In einer Ausführungsform ist wenigstens ein Abschnitt des Prozesses 000 durch eine Vorrichtung implementiert, die einen Speicher zum Speichern sowohl von Daten, die separaten rekonstruierten 3D-Objekten entsprechen, als auch irgendeiner anderen diskutierten Datenstruktur und einen oder mehrere Prozessoren zum Ausführen irgendwelcher der Operationen 901-904 aufweist. In einer Ausführungsform sind der Speicher und der Prozessor über eine monolithische integrierte Schaltung einer im Feld programmierbaren Gatter-Anordnung implementiert. Wie hier verwendet gibt der Begriff monolithisch eine Vorrichtung an, die von anderen Vorrichtungen diskret ist, obwohl sie mit anderen Vorrichtungen zur Kommunikation und Energieversorgung gekoppelt sein kann. In einigen Ausführungsformen sind der Speicher und der eine oder die mehreren Prozessoren in verschiedenen Vorrichtungen implementiert.
  • Verschiedene Komponenten der hier beschriebenen Systeme können in Software, Firmware und/oder Hardware und/oder irgendeiner Kombination daraus implementiert sein. Beispielsweise können verschiedene Komponenten von Vorrichtungen oder Systemen, die hier diskutiert sind, wenigstens teilweise durch Hardware eines Berechnungs-Ein-Chip-Systems (SoC) bereitgestellt sein, wie es in einem Berechnungssystem wie beispielsweise einem Smartphone zu finden ist. Fachleute können erkennen, dass Systeme, die hier beschrieben sind, zusätzliche Komponenten enthalten können, die in den entsprechenden Figuren nicht abgebildet worden sind. Beispielsweise können die hier diskutierten Systeme zusätzliche Komponenten enthalten, die im Interesse der Deutlichkeit nicht abgebildet worden sind.
  • Obwohl die Implementierung der hier diskutierten Beispielprozesse das Durchführen aller gezeigten Operationen in der dargestellten Reihenfolge enthalten können, ist die vorliegende Offenbarung in dieser Hinsicht nicht eingeschränkt, und in verschiedenen Beispielen kann die Implementierung der Beispielprozesse hier nur eine Teilmenge der gezeigten Operationen, Operationen, die in einer anderen Reihenfolge als dargestellt ausgeführt werden, oder zusätzliche Operationen enthalten.
  • Zusätzlich können irgendeine der oder mehrere der hier diskutierten Operationen in Reaktion auf Befehle, die durch ein oder mehrere Computerprogrammprodukte bereitgestellt sind, durchgeführt werden. Solche Programmprodukte können Signalüberträgermedien enthalten, die Befehle bereitstellen, die dann, wenn sie beispielsweise durch einen Prozessor ausgeführt werden, die hier beschriebene Funktionalität bereitstellen können. Die Computerprogrammprodukte können in irgendeiner Form aus einem oder mehreren maschinenlesbaren Medien bereitgestellt sein. Somit kann beispielsweise ein Prozessor, der eine/n oder mehrere Grafikverarbeitungseinheit(en) oder Prozessorkern(e) enthält, einen oder mehrere der Blöcke der Beispielprozesse hier in Reaktion auf Programmcode und/oder Befehle oder Befehlssätze, die dem Prozessor durch ein oder mehrere maschinenlesbare Medien übermittelt werden, durchführen. Im Allgemeinen kann ein maschinenlesbares Medium Software in der Form von Programmcode und/oder Befehlen und/oder Befehlssätzen übermitteln, die irgendeine der hier beschriebenen Vorrichtungen und/oder Systeme veranlassen können, wenigstens Abschnitte der Vorrichtungen oder Systeme oder irgendein anderes Modul oder Komponente wie hier diskutiert zu implementieren.
  • Wie er in irgendeiner hier beschriebenen Implementierung verwendet ist, bezieht sich der Begriff „Modul“ auf irgendeine Kombination aus Software-Logik, Firmware-Logik, Hardware-Logik und/oder Schaltungsanordnung, die konfiguriert ist, die hier beschriebene Funktionalität bereitzustellen. Die Software kann als ein Software-Paket, Code und/oder Befehlssatz oder Befehle ausgeführt sein, und „Hardware“, wie sie in irgendeiner hier beschriebenen Implementierung verwendet ist, kann beispielsweise, einzeln oder in irgendeiner Kombination, festverdrahtete Schaltungsanordnung, programmierbare Schaltungsanordnung, Zustandsautomaten-Schaltungsanordnung, Schaltungsanordnung mit festgelegter Funktion, Ausführungseinheit-Schaltungsanordnung und/oder Firmware, die Befehle, die durch programmierbare Schaltungsanordnung ausgeführt werden, speichert, enthalten. Die Module können, gemeinsam oder individuell, als Schaltungsanordnung ausgeführt sein, die einen Teil eines größeren Systems bildet, beispielsweise eine integrierte Schaltung (IC), ein Ein-Chip-System (SoC) und so weiter.
  • 11 ist ein erläuterndes Diagramm eines Beispielsystems 1100, ausgelegt in Übereinstimmung mit wenigstens einigen Implementierungen der vorliegenden Offenbarung. In verschiedenen Implementierungen kann das System 1100 ein System einer mobilen Vorrichtung sein, obwohl das System 1100 nicht auf diesen Kontext beschränkt ist. Beispielsweise kann das System 1100 in einen Personalcomputer (PC), einen Laptop-Computer, einen Ultra-Laptop-Computer, ein Tablet, ein Touchpad, einen tragbaren Computer, einen Hand-Computer, einen Palmtop-Computer, einen persönlichen digitalen Assistenten (PDA), ein Mobiltelefon, eine Kombination aus Mobiltelefon/PDA, ein Fernsehgerät, eine intelligente Vorrichtung (z. B. ein Smartphone, ein Smart-Tablet oder ein intelligentes Fernsehgerät), eine Vorrichtung für mobiles Internet (MID), eine Nachrichtenübermittlungsvorrichtung, eine Datenkommunikationsvorrichtung, Kameras (z. B. Kompaktkameras, Super-Zoom-Kameras, digitale Spiegelreflexkameras (DSLR-Kameras)), eine Überwachungskamera, ein Überwachungssystem, das eine Kamera enthält, und so weiter integriert sein.
  • In verschiedenen Implementierungen enthält das System 1100 eine Plattform 1102, die mit einer Anzeigevorrichtung 1120 gekoppelt ist. Die Plattform 1102 kann Inhalt von einer Inhaltsvorrichtung wie z. B. Inhaltsdienstvorrichtung(en) 1130 oder Inhaltszustellvorrichtung(en) 1140 oder anderen ähnlichen Inhaltsquellen wie z. B. Bildsensoren 1119 empfangen. Beispielsweise kann die Plattform 1102 Bilddaten wie hier diskutiert aus Bildsensoren 1119 oder irgendeiner anderen Inhaltsquelle empfangen. Eine Navigationssteuereinheit 1150, die ein oder mehrere Navigationsmerkmale enthält, kann verwendet werden, um beispielsweise mit der Plattform 1102 und/oder der Anzeigevorrichtung 1120 zusammenzuwirken. Jede dieser Komponenten ist nachstehend genauer beschrieben.
  • In verschiedenen Implementierungen kann die Plattform 1102 irgendeine Kombination aus einem Chipsatz 1105, einem Prozessor 1110, einem Speicher 1112, einer Antenne 1113, einer Speichereinrichtung 1114, einem Grafikteilsystem 1115, Anwendungen 1116, einem Bildsignalprozessor 1117 und/oder einer Funkeinrichtung 1118 enthalten. Der Chipsatz 1105 kann wechselseitige Kommunikation zwischen dem Prozessor 1110, dem Speicher 1112, der Speichereinrichtung 1114, dem Grafikteilsystem 1115, den Anwendungen 1116, dem Bildsignalprozessor 1117 und/oder der Funkeinrichtung 1118 bereitstellen. Beispielsweise kann der Chipsatz 1105 einen Speicheradapter (nicht abgebildet) enthalten, der zum Bereitstellen wechselseitiger Kommunikation mit der Speichereinrichtung 1114 fähig ist.
  • Der Prozessor 1110 kann als Prozessoren mit „Complex Instruction Set Computer“ (CISC) oder „Reduced Instruction Set Computer“ (RISC), mit dem x86-Befehlssatz kompatible Prozessoren, Mehrkern- oder irgendein anderer Mikroprozessor oder zentrale Verarbeitungseinheit (CPU) implementiert sein. In verschiedenen Implementierungen kann der Prozessor 1110 Zweikern-Prozessor(en), Zweikern-Mobilprozessor(en) und so weiter sein.
  • Der Speicher 1112 kann als eine flüchtige Speicher-Vorrichtung wie z. B., ohne jedoch darauf beschränkt zu sein, ein Direktzugriffsspeicher (RAM), ein dynamischer Direktzugriffsspeicher (DRAM) oder ein statischer RAM (SRAM) sein.
  • Die Speichereinrichtung 1114 kann als eine nichtflüchtige Speicher-Vorrichtung implementiert sein, wie z. B., ohne jedoch darauf beschränkt zu sein, ein magnetisches Plattenlaufwerk, ein optisches Plattenlaufwerk, ein Bandlaufwerk, eine interne Speicher-Vorrichtung, eine angeschlossene Speicher-Vorrichtung, ein Flash-Speicher, ein batteriegestützter SDRAM (synchroner DRAM) und/oder eine über ein Netz zugängliche Speicher-Vorrichtung. In verschiedenen Implementierungen kann die Speichereinrichtung 1114 eine Technologie enthalten zum Erhöhen der erweiterten Speicherschutzleistung für wertvolle digitale Medien, beispielsweise wenn mehrere Festplattenlaufwerke enthalten sind.
  • Der Bildsignalprozessor 1117 kann als ein spezialisierter digitaler Signalprozessor oder dergleichen, der zur Bildbearbeitung verwendet wird, implementiert sein. In einigen Beispielen kann der Bildsignalprozessor 1117 basierend auf einer Ein-Befehl-mehrere-Daten- oder Mehrere-Befehle-mehrere-Daten-Architektur oder dergleichen implementiert sein. In einigen Beispielen kann der Bildsignalprozessor 1117 als ein Medienprozessor charakterisiert sein. Wie hier diskutiert kann der Bildsignalprozessor 1117 basierend auf einer Ein-Chip-System-Architektur und/oder basierend auf einer Mehrkernarchitektur implementiert sein.
  • Das Grafikteilsystem 1115 kann Verarbeitung von Bildern wie z. B. Standbildern oder Video zur Anzeige ausführen. Das Grafikteilsystem 1115 kann beispielsweise eine Grafikverarbeitungseinheit (GPU) oder eine visuelle Verarbeitungseinheit (VPU) sein. Eine analoge oder digitale Schnittstelle kann verwendet sein, um das Grafikteilsystem 1115 und die Anzeigevorrichtung 1120 kommunikationstechnisch zu koppeln. Beispielsweise kann die Schnittstelle irgendeine aus einer hochauflösenden Multimedia-Schnittstelle, DisplayPort, drahtlosem HDMI und/oder drahtlosen HD-konformen Techniken sein. Das Grafikteilsystem 1115 kann in den Prozessor 1110 oder den Chipsatz 1105 integriert sein. In einigen Implementierungen kann das Grafikteilsystem 1115 eine eigenständige Vorrichtung sein, die mit dem Chipsatz 1105 kommunikationstechnisch gekoppelt ist.
  • Die Grafik- und/oder Videoverarbeitungstechniken, die hier beschrieben sind, können in verschiedenen Hardware-Architekturen implementiert sein. Beispielsweise kann Grafik- und/oder Video-Funktionalität in einem Chipsatz integriert sein. Alternativ kann ein diskreter Grafik- und/oder Video-Prozessor verwendet sein. Als noch eine weitere Implementierung können die Grafik- und/oder Video-Funktionen durch einen Allzweckprozessor, der einen Mehrkernprozessor enthält, bereitgestellt sein. In weiteren Ausführungsformen können die Funktionen in einer Unterhaltungselektronikvorrichtung implementiert sein.
  • Die Funkeinrichtung 1118 kann eine oder mehrere Funkeinrichtungen enthalten, die zum Senden und Empfangen von Signalen unter Verwendung verschiedener geeigneter Drahtloskommunikationstechniken fähig sind. Solche Techniken können Kommunikation über ein oder mehrere Drahtlosnetze beinhalten. Beispielhafte Drahtlosnetze enthalten (ohne jedoch darauf beschränkt zu sein) drahtlose lokale Netze (WLANs), drahtlose persönliche Netze (WPANs), drahtlose Regionalnetze (WMANs), Mobilfunknetze und Satellitennetze. Bei der Kommunikation über solche Netze kann die Funkeinrichtung 1118 in Übereinstimmung mit einem oder mehreren anwendbaren Standards in irgendeiner Version arbeiten.
  • In verschiedenen Implementierungen kann die Anzeigevorrichtung 1120 irgendeine/n Monitor oder Anzeigevorrichtung vom Typ eines Fernsehgeräts enthalten. Die Anzeigevorrichtung 1120 kann beispielsweise einen Computer-Anzeigebildschirm, eine Anzeigevorrichtung mit berührungssensitivem Bildschirm, einen Video-Monitor, eine Fernsehgerät-ähnliche Vorrichtung und/oder ein Fernsehgerät enthalten. Die Anzeigevorrichtung 1120 kann digital und/oder analog sein. In verschiedenen Implementierungen kann die Anzeigevorrichtung 1120 eine holografische Anzeigevorrichtung sein. Außerdem kann die Anzeigevorrichtung 1120 eine transparente Oberfläche sein, die eine sichtbare Projektion empfangen kann. Solche Projektionen können verschiedene Formen von Informationen, Bilder und/oder Objekten übermitteln. Beispielsweise können solche Projektionen eine visuelle Überlagerung für eine Anwendung für mobile erweiterte Realität (MAR) sein. Unter der Steuerung einer oder mehrerer Software-Anwendungen 1116 kann die Plattform 1102 eine Anwenderschnittstelle 1122 auf der Anzeigevorrichtung 1120 anzeigen.
  • In verschiedenen Implementierungen können Inhaltsdienstvorrichtung(en) 1130 durch irgendeinen nationalen, internationalen und/oder unabhängigen Dienst gehostet und somit für die Plattform 1102 beispielsweise über das Internet zugänglich sein. Inhaltsdienstvorrichtung(en) 1130 können mit der Plattform 1102 und/oder der Anzeigevorrichtung 1120 gekoppelt sein. Die Plattform 1102 und/oder die Inhaltsdienstvorrichtung(en) 1130 können mit einem Netz 1160 gekoppelt sein, um Medieninformationen zu und von dem Netz 1160 zu kommunizieren (z. B. zu senden und/oder zu empfangen). Inhaltszustellvorrichtung(en) 1140 können ebenfalls mit der Plattform 1102 und/oder der Anzeigevorrichtung 1120 gekoppelt sein.
  • Die Bildsensoren 1119 können irgendwelche geeigneten Bildsensoren enthalten, die Bilddaten basierend auf einer Szene bereitstellen können. Beispielsweise können die Bildsensoren 1119 einen auf einer ladungsgekoppelten Halbleitervorrichtung (Halbleiter-CCD) basierenden Sensor, einen auf komplementärem Metalloxidhalbleiter (CMOS) basierenden Sensor, einen auf einem N-Typ-Metalloxidhalbleiter (NMOS) basierenden Sensor oder dergleichen enthalten. Beispielsweise können die Bildsensoren 1119 irgendeine Vorrichtung enthalten, die Informationen über eine Szene detektieren kann, um Bilddaten zu erzeugen.
  • In verschiedenen Implementierungen können Inhaltsdienstvorrichtung(en) 1130 eine Kabelfernseh-Box, einen Personalcomputer, ein Netz, ein Telefon, über das Internet aktivierte Vorrichtungen oder Geräte, die zum Zustellen digitaler Informationen und/oder Inhalt fähig sind, und irgendeine andere ähnliche Vorrichtung, die zum unidirektionalen oder bidirektionalen Kommunizieren von Inhalt zwischen Inhaltsanbietern und der Plattform 1102 und/oder der Anzeigevorrichtung 1120 über ein Netz 1160 oder direkt fähig sind, enthalten. Es ist zu verstehen, dass der Inhalt unidirektional und/oder bidirektional zu und von irgendeiner der Komponenten im System 1100 und einem Inhaltsanbieter über das Netz 1160 kommuniziert werden kann. Beispiele für Inhalt können irgendwelche Medieninformationen enthalten, die beispielsweise Video, Musik, medizinische und Spiele-Informationen und so weiter enthalten.
  • Inhaltsdienstvorrichtung(en) 1130 können Inhalt enthalten wie z. B. Kabelfernsehprogramme, die Medieninformationen, digitale Informationen und/oder anderen Inhalt enthalten. Beispiele für Inhaltsanbieter können irgendwelche Inhaltsanbieter für Kabel- oder Satellitenfernsehen oder -radio oder Internet sein. Die bereitgestellten Beispiele sind nicht dafür vorgesehen, die Implementierungen in Übereinstimmung mit der vorliegenden Offenbarung in irgendeiner Weise einzuschränken.
  • In verschiedenen Implementierungen kann die Plattform 1102 Steuersignale von der Navigationssteuereinheit 1150, die eine oder mehrere Navigationsmerkmale aufweist, empfangen. Die Navigationsmerkmale der Navigationssteuereinheit 1150 können verwendet werden, um beispielsweise mit der Anwenderschnittstelle 1122 zusammenzuwirken. In verschiedenen Ausführungsformen kann die Navigationssteuereinheit 1150 eine Zeigevorrichtung sein, die eine Computer-Hardware-Komponente (insbesondere eine Vorrichtung für eine menschliche Schnittstelle) sein kann, die es einem Anwender ermöglicht, räumliche (z. B. kontinuierliche und mehrdimensionale) Daten in einem Computer einzugeben. Viele Systeme wie z. B. grafische Anwenderschnittstellen (GUI) und Fernsehgeräte und Monitore ermöglichen dem Anwender, den Computer oder das Fernsehgerät unter physikalischer Gesten zu steuern und Daten einzugeben.
  • Bewegungen der Navigationsmerkmale der Navigationssteuereinheit 1150 können auf einer Anzeigevorrichtung (z. B. der Anzeigevorrichtung 1120) durch Bewegungen eines Zeigers, eines Cursors, eines Fokusrings oder anderer visueller Kennzeichen, die auf der Anzeigevorrichtung angezeigt werden, repliziert werden. Beispielsweise können unter der Steuerung von Software-Anwendungen 1116 die Navigationsmerkmale, die sich auf der Navigationssteuereinheit 1150 befinden, auf virtuelle Navigationsmerkmale, die beispielsweise auf der Anwenderschnittstelle 1122 angezeigt werden, abgebildet werden. In verschiedenen Ausführungsformen kann die Navigationssteuereinheit 1150 keine separate Komponente sein, sondern kann in die Plattform 1102 und/oder die Anzeigevorrichtung 1120 integriert sein. Die vorliegende Offenbarung ist jedoch nicht auf die Elemente oder den Kontext, die hier gezeigt oder beschrieben sind, beschränkt.
  • In verschiedenen Implementierungen können Treiber (nicht gezeigt) Technologie enthalten, um Anwendern zu ermöglichen, die Plattform 1102 sofort an- und abzuschalten, wie beispielsweise ein Fernsehgerät mit der Berührung einer Taste nach dem initialen Hochlauf, wenn aktiviert. Programmlogik kann ermöglichen, dass die Plattform 1102 Inhalt zu Medienadaptern oder anderen Inhaltsdienstvorrichtung(en) 1130 oder Inhaltszustellvorrichtung(en) 1140 streamt, selbst wenn die Plattform auf „Aus“ geschaltet ist. Zusätzlich kann der Chipsatz 1105 Hardware- und/oder Software-Unterstützung beispielsweise für Audio mit 5.1-Surround-Klang und/oder Audio mit hochauflösendem (7.1) Surround-Klang enthalten. Treiber können einen Grafiktreiber für integrierte Grafikplattformen enthalten. In verschiedenen Ausführungsformen kann der Grafiktreiber eine „Peripheral Component Interconnect“-(PCI-) Express-Grafikkarte umfassen.
  • In verschiedenen Implementierungen können irgendeine oder mehrere der im System 1100 gezeigten Komponenten integriert sein. Beispielsweise können die Plattform 1102 und die Inhaltsdienstvorrichtung(en) 1130 integriert sein, oder die Plattform 1102 und die Inhaltszustellvorrichtung(en) 1140 können integriert sein, oder die Plattform 1102, die Inhaltsdienstvorrichtung(en) 1130 und die Inhaltszustellvorrichtung(en) 1140 können beispielsweise integriert sein. In verschiedenen Ausführungsformen können die Plattform 1102 und die Anzeigevorrichtung 1120 eine integrierte Einheit sein. Die Anzeigevorrichtung 1120 und die Inhaltsdienstvorrichtung(en) 1130 können integriert sein, oder die Anzeigevorrichtung 1120 und die Inhaltszustellvorrichtung(en) 1140 können beispielsweise integriert sein. Diese Beispiele sind nicht dafür vorgesehen, die vorliegende Offenbarung einzuschränken.
  • In verschiedenen Ausführungsformen kann das System 1100 als ein drahtloses System, ein drahtgebundenes System oder eine Kombination aus beidem implementiert sein. Wenn es als ein drahtloses System implementiert ist, kann das System 1100 Komponenten und Schnittstellen enthalten, die zum Kommunizieren über drahtlose gemeinsam verwendete Medien geeignet sind, wie z. B. eine oder mehrere Antennen, Sender, Empfänger Sender/Empfänger, Verstärker, Filter, Steuerlogik und so weiter. Ein Beispiel für drahtlose gemeinsam verwendete Medien kann Abschnitte eines Drahtlosspektrums wie z. B. des HF-Spektrums und so weiter enthalten. Wenn es als ein drahtgebundenes System implementiert ist, kann das System 1100 Komponenten und Schnittstellen enthalten, die zum Kommunizieren über drahtgebundene Kommunikationsmedien geeignet sind, wie z. B. Eingabe/Ausgabe- (I/O-) Adapter, physikalische Verbindungselemente zum Verbinden des I/O-Adapters mit einem entsprechenden drahtgebundenen Kommunikationsmedium, eine Netzschnittstellenkarte (NIC), eine Plattensteuereinheit, eine Videosteuereinheit, eine Audiosteuereinheit und dergleichen. Beispiele für drahtgebundene Kommunikationsmedien können eine Leitung, ein Kabel, Metallleitungen, eine Leiterplatte (PCB), eine Rückwandplatine, ein Switch-Fabric, Halbleitermaterial, eine Zweidrahtleitung, ein Koaxialkabel, einen Lichtwellenleiter und so weiter enthalten.
  • Die Plattform 1102 kann einen oder mehrere logische oder physikalische Kanäle aufbauen, um Informationen zu kommunizieren. Die Informationen können Medieninformationen und Steuerinformationen enthalten. Medieninformationen können sich auf irgendwelche Daten beziehen, die für einen Anwender bestimmten Inhalt repräsentieren. Beispiele für Inhalt können beispielsweise Daten aus einem Gespräch, Videokonferenz, Video-Streaming, Nachricht der elektronischen Post („E-Mail“), Voicemail-Nachricht, alphanumerische Symbole, Grafik, Bild, Video, Text und so weiter enthalten. Daten aus einem Gespräch können beispielsweise Sprachinformationen, Sprechpausen, Hintergrundgeräusche, Beruhigungsgeräusche, Töne und so weiter enthalten. Steuerinformationen können sich auf irgendwelche Daten beziehen, die Befehle, Anweisungen oder Steuerwörter, die für ein automatisiertes System bestimmt sind, beziehen. Beispielsweise können Steuerinformationen verwendet werden, um Medieninformationen durch ein System zu routen oder um einen Knoten anzuweisen, die Medieninformationen auf eine vorbestimmte Weise zu verarbeiten. Die Ausführungsformen sind jedoch nicht auf die Elemente oder den Kontext, die in 11 gezeigt und beschrieben sind, beschränkt.
  • Wie vorstehend beschrieben kann das System 1100 in variierenden physikalischen Stilen oder Formfaktoren verwirklicht sein. 12 stellt eine Beispielvorrichtung 1200 mit kleinem Formfaktor dar, die in Übereinstimmung mit wenigstens einigen Implementierungen der vorliegenden Offenbarung ausgelegt ist. In einigen Beispielen kann das System 1100 über die Vorrichtung 1200 implementiert sein. In anderen Beispielen können andere Systeme, Komponenten oder Module, die hier diskutiert sind, oder Abschnitte davon über die Vorrichtung 1200 implementiert sein. In verschiedenen Ausführungsformen kann die Vorrichtung 1200 beispielsweise als eine mobile Berechnungsvorrichtung, die Drahtlosfähigkeiten aufweist, implementiert sein. Eine mobile Berechnungsvorrichtung kann sich auf irgendeine Vorrichtung beziehen, die ein Verarbeitungssystem und eine mobile Stromquelle oder -versorgung wie beispielsweise eine oder mehrere Batterien aufweist.
  • Beispiele für eine mobile Berechnungsvorrichtung können einen Personalcomputer (PC), einen Laptop-Computer, einen Ultra-Laptop-Computer, ein Tablet, ein Touchpad, einen tragbaren Computer, einen Hand-Computer, einen Palmtop-Computer, einen persönlichen digitalen Assistenten (PDA), ein Mobiltelefon, eine Kombination aus Mobiltelefon/PDA, eine intelligente Vorrichtung (z. B. ein Smartphone, ein Smart-Tablet oder ein intelligentes Fernsehgerät), eine mobile Internet-Vorrichtung (MID), eine Nachrichtenübermittlungsvorrichtung, eine Datenkommunikationsvorrichtung, Kameras (z. B. Kompaktkameras, Super-Zoom-Kameras, Digitale Spiegelreflex- (DSLR-) Kameras) und so weiter enthalten.
  • Beispiele für eine mobile Berechnungsvorrichtung können außerdem Computer enthalten, die dafür ausgelegt sind, durch ein Kraftfahrzeug oder einen Roboter implementiert zu sein, von einer Person am Körper getragen zu werden, wie z. B. Handgelenk-Computer, Finger-Computer, Ring-Computer, Brillen-Computer, Gürtelclip-Computer, Armband-Computer, Schuh-Computer, Kleidungs-Computer und andere am Körper tragbare Computer. In verschiedenen Ausführungsformen kann beispielsweise eine mobile Berechnungsvorrichtung als ein Smartphone implementiert sein, das sowohl zum Ausführen von Computer-Anwendungen als auch zur Sprachkommunikation und/oder Datenkommunikation fähig ist. Obwohl einige Ausführungsformen mit einer mobilen Berechnungsvorrichtung beschrieben sein können, die als Beispiel als ein Smartphone implementiert ist, ist zu verstehen, dass andere Ausführungsformen auch unter Verwendung anderer drahtloser mobiler Berechnungsvorrichtungen implementiert sein können. Die Ausführungsformen sind in diesem Kontext nicht eingeschränkt.
  • Wie in 12 gezeigt ist, kann die Vorrichtung 1200 ein Gehäuse mit einer Vorderseite 1201 und einer Rückseite 1202 enthalten. Die Vorrichtung 1200 enthält eine Anzeigevorrichtung 1204, eine Eingabe/Ausgabe-(I/O-) Vorrichtung 1206, eine Farbkamera 1221, eine Farbkamera 1222 und eine integrierte Antenne 1208. In einigen Ausführungsformen erhalten die Farbkamera 1221 und Farbkamera 1222 planare Bilder wie hier diskutiert. In einigen Ausführungsformen enthält die Vorrichtung 1200 keine Farbkamera 1221 und 1222, und die Vorrichtung 1200 erhält Eingabebilddaten (z. B. irgendwelche hier diskutierten Eingabebilddaten) von einer weiteren Vorrichtung. Die Vorrichtung 1200 kann außerdem Navigationsmerkmale 1212 enthalten. Die I/O-Vorrichtung 1206 kann irgendeine geeignete I/O-Vorrichtung zum Eingeben von Informationen in eine mobile Berechnungsvorrichtung enthalten. Beispiele für die I/O-Vorrichtung 1206 können eine alphanumerische Tastatur, ein numerisches Tastenfeld, ein Touchpad, Eingabetasten, Schaltflächen, Schalter, Mikrofone, Lautsprecher, Spracherkennungsvorrichtung und Software und so weiter enthalten. Informationen können auch mit Hilfe des Mikrofons (nicht gezeigt) in die Vorrichtung 1200 eingegeben werden oder können durch eine Spracherkennungsvorrichtung digitalisiert werden. Wie gezeigt kann die Vorrichtung 1200 die Farbkameras 1221, 1222 und einen Blitz 1210, der in die Rückseite 1202 (oder an anderer Stelle) der Vorrichtung 1200 integriert ist, enthalten. In anderen Beispielen können die Farbkameras 1221, 1222 und der Blitz 1210 in die Vorderseite 1201 der Vorrichtung 1200 integriert sein, oder sowohl vorderseitige als auch rückseitige Gruppen von Kameras können vorgesehen sein. Die Farbkameras 1221, 1222 und ein Blitz 1210 können Komponenten eines Kameramoduls sein, um Farbbilddaten mit IR-Texturkorrektur zu erzeugen, die in ein Bild oder ein Streaming-Video verarbeitet werden können, das zu der Anzeigevorrichtung 1204 ausgegeben wird und/oder entfernt von der Vorrichtung 1200 beispielsweise über die Antenne 1208 kommuniziert wird.
  • Verschiedene Ausführungsformen können unter Verwendung von Hardware-Elementen, Software-Elementen oder einer Kombination aus beidem implementiert sein. Beispiele für Hardware-Elemente können Prozessoren, Mikroprozessoren, Schaltungen, Schaltungselemente (z. B. Transistoren, Widerstände, Kondensatoren, Induktoren und so weiter), integrierte Schaltungen, anwendungsspezifische integrierte Schaltungen (ASIC), programmierbare Logikvorrichtungen (PLD), digitale Signalprozessoren (DSP), im Feld programmierbares Gatter-Array (FPGA), Logik-Gatter, Register, Halbleitervorrichtung, Chips, Mikrochips, Chipsätze und so weiter enthalten. Beispiele für Software können Software-Komponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystem-Software, Middleware, Firmware, Software-Module, Routinen, Subroutinen, Funktionen, Methoden, Prozeduren, Software-Schnittstellen, Anwendungsprogrammschnittstellen (API), Befehlssätze, Berechnungscode, Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder irgendeine Kombination daraus enthalten. Das Bestimmen, ob eine Ausführungsform unter Verwendung von Hardware-Elementen und/oder Software-Elementen implementiert ist, kann in Übereinstimmung mit einer Anzahl von Faktoren variieren, wie z. B. der gewünschten Rechengeschwindigkeit, Leistungspegeln, Wärmetoleranzen, Verarbeitungszyklusbudget, Eingabedatenraten, Ausgabedatenraten, Speicherbetriebsmittel, Datenbusgeschwindigkeiten und anderen Design- oder Leistungseinschränkungen.
  • Ein oder mehrere Aspekte wenigstens einer Ausführungsform können durch repräsentative Befehle implementiert sein, die auf einem maschinenlesbaren Medium gespeichert sind, die verschiedene Logik innerhalb des Prozessors repräsentieren, die dann, wenn sie durch eine Maschine ausgeführt werden, die Maschine veranlassen, Logik zum Ausführen der hier beschriebenen Techniken zu produzieren. Solche Repräsentationen, als IP-Kerne bezeichnet, können auf einem greifbaren maschinenlesbaren Medium gespeichert sein und an verschiedene Kunden oder Produktionsanlagen geliefert werden, um in die Produktionsmaschinen geladen zu werden, die die Logik oder den Prozessor tatsächlich herstellen.
  • Obwohl spezielle Merkmale, die hier dargelegt sind, mit Bezug auf verschiedene Implementierungen beschrieben worden sind, ist diese Beschreibung nicht dafür gedacht, in einem einschränkenden Sinn gedeutet zu werden. Somit sind sowohl verschiedene Modifikationen der hier beschriebenen Implementierungen als auch andere Implementierungen, die für Fachleute der Technik, zu der die vorliegende Offenbarung gehört, offenkundig sind, als in dem Geist und Schutzbereich der vorliegenden Offenbarung liegend erachtet.
  • In einer oder mehreren ersten Ausführungsformen umfasst ein Verfahren zum Erzeugen einer virtuellen Ansicht innerhalb einer Szene das Empfangen für jedes von mehreren separater rekonstruierter 3D-Objekte in der Szene zu einem speziellen Zeitpunkt mehrerer 3D-Punkte für das 3D-Objekt, mehrerer 2D-Merkmalspunkte, wovon jeder einen Ort in wenigstens einem aus mehreren 2D-Bildern, der einem 3D-Punkt des 3D-Objekts entspricht, angibt, und einer Kameragruppe, die eine Untergruppe von Kameras aus mehreren Kameras angibt, um Rahmen der Szene, die den 2D-Bildern entsprechen, zu erhalten, Konstruieren eines separaten Bündelausgleichungsmodells für jedes 3D-Objekt unter Verwendung der 3D-Punkte, der 2D-Merkmalspunkte und der Kameraparameter jeder Kamera in der Kameragruppe, separates Auflösen jedes der Bündelausgleichungsmodelle wenigstens teilweise gleichzeitig, um für jedes Bündelausgleichungsmodell wenigstens eines aus aktualisierten Kameraparametern für Kameras in der Kameragruppe oder einer aktualisierten Punktwolke für das 3D-Objekt zu erzeugen, und Ausgeben wenigstens eines aus den aktualisierten Kameraparametern oder den aktualisierten Punktwolken zum Gebrauch in der 3D-Rekonstruktion der Szene.
  • In einer oder mehreren zweiten Ausführungsformen, zusätzlich zu den ersten Ausführungsformen, ist in jedem Bündelausgleichungsmodell eine ausgewählte Kamera auf eine aktuelle Stellung in der Szene festgelegt.
  • In einer oder mehreren dritten Ausführungsformen, zusätzlich zu der ersten oder der zweiten Ausführungsform, entsprechen die 3D-Punkte, die 2D-Merkmalspunkte und die Kameragruppe mehreren ersten zeitgleichen Rahmen in der Szene, die durch die mehreren Kameras zu dem speziellen Zeitpunkt erhalten werden, und wobei jedes der Bündelausgleichungsmodelle jede Kamera auf aktuelle Stellungen der Kameras in der Szene festlegt.
  • In einer oder mehreren vierten Ausführungsformen, zusätzlich zu einer aus der ersten bis dritten Ausführungsform, umfasst das Verfahren ferner Empfangen für jedes der mehreren separaten 3D-Objekte mehrerer zweiter 3D-Punkte für das 3D-Objekt, mehrerer zweiter 2D-Merkmalspunkte, wovon jeder einen zweiten Ort in wenigstens einem aus mehreren zweiten 2D-Bildern angibt, der einem zweiten 3D-Punkt des 3D-Objekts entspricht, und einer zweiten Kameragruppe, die eine zweite Untergruppe von Kameras aus den mehreren Kameras angibt, die den zweiten 2D-Bildern entsprechen, Konstruieren eines zweiten Bündelausgleichungsmodells für jedes 3D-Objekt unter Verwendung der zweiten 3D-Punkte, der zweiten 2D-Merkmalspunkte und Kameraparameter jeder Kamera in der zweiten Kameragruppe, wobei in jedem zweiten Bündelausgleichungsmodell eine ausgewählte zweite Kamera auf eine zweite aktuelle Stellung in der Szene festgelegt ist und alle zweiten 3D-Punkte für jedes Objekt auf aktuelle zweite 3D-Punktorte in der Szene festgelegt sind, und separates Auflösen jedes der zweiten Bündelausgleichungsmodelle wenigstens teilweise gleichzeitig, um für jedes zweiten Bündelausgleichungsmodell zweite aktualisierte Kameraparameter zu erzeugen, wobei alle zweiten 3D-Punkte für jedes 3D-Objekt festgelegt bleiben.
  • In einer oder mehreren fünften Ausführungsformen, zusätzlich zu einer aus der ersten bis vierten Ausführungsform, umfasst das Verfahren ferner alternierendes Konstruieren und Auflösen von Bündelausgleichungsmodellen mit festgelegten Kamerastellungen und Konstruieren und Auflösen zweiter Bündelausgleichungsmodelle mit festgelegten 3D-Punkten über mehrere Gruppen gleichzeitiger Rahmen der Szene.
  • In einer oder mehreren sechsten Ausführungsformen, zusätzlich zu einer aus der ersten bis fünften Ausführungsform, umfasst das Verfahren ferner Ausführen von Struktur-aus-Bewegung-Verarbeitung für einen Hintergrund der Szene, wobei kein dynamisches Objekt vorhanden ist, um initiale Kameraparameter für jede der mehreren Kameras und eine Hintergrund-Punktwolke, die 3D-Punkte für identifizierte Merkmale innerhalb der Szene enthält, zu erzeugen, wobei jedes der separaten Bündelausgleichungsmodelle die initialen Kameraparameter umfasst.
  • In einer oder mehreren siebten Ausführungsformen, zusätzlich zu einer aus der ersten bis sechsten Ausführungsform, umfasst jedes der separaten Bündelausgleichungsmodelle eine Summe von Verlustfunktionen, wobei die Verlustfunktionen jeweils zum Messen einer Differenz zwischen einem 2D-Merkmalspunkt und einem rückprojizierten Punkt für einen entsprechenden 3D-Punkt dienen, wobei der rückprojizierte Punkt auf den Kameraparametern basiert.
  • In einer oder mehreren achten Ausführungsformen, zusätzlich zu einer aus der ersten bis siebten Ausführungsform, werden das Empfangen, Konstruieren, separate Auflösen und Ausgeben innerhalb einer Zeitspanne ausgeführt, die kürzer ist als eine Zielzeitspanne, wobei die Zielzeitspanne gleich einer Inversen einer Rahmenrate, die dem Aufnehmen der Szene durch die mehreren Kameras entspricht, minus einer vorbestimmten virtuellen Ansichtzeitspanne ist.
  • In einer oder mehreren neunten Ausführungsformen, zusätzlich zu einer aus der ersten bis achten Ausführungsform, umfasst das Verfahren ferner das Verfolgen der Bewegung jedes der separaten rekonstruierten 3D-Objekte, Detektieren einer kleinen oder keiner Bewegung für ein erstes 3D-Objekt der separaten 3D-Objekte basierend darauf, dass eine Strecke der Bewegung des ersten Objekts kleiner ist als ein Schwellenwert, und Überspringen des Konstruierens eines zweiten Bündelausgleichungsmodells für das erste 3D-Objekt in Reaktion darauf, dass eine kleine oder keine Bewegung detektiert wird.
  • In einer oder mehreren zehnten Ausführungsformen, zusätzlich zu einer aus der ersten bis neunten Ausführungsform, umfasst das Verfahren ferner das Aufteilen eines vollständigen 3D-Modells der Szene in Hintergrundobjekte und die separaten rekonstruierten 3D-Objekte und Bezeichnen jedes der separaten rekonstruierten 3D-Objekte als dynamisch und der Hintergrundobjekte als statisch, wobei das Empfangen, Konstruieren, separate Auflösen und Ausgeben in Reaktion darauf ausgeführt werden, dass die separaten rekonstruierten 3D-Objekte als dynamisch bezeichnet sind, und das Empfangen, Konstruieren, Auflösen und Ausgeben für die Hintergrundobjekte übersprungen wird.
  • In einer oder mehreren elften Ausführungsformen, zusätzlich zu einer aus der ersten bis zehnten Ausführungsform, umfassen die mehreren 3D-Punkte für jedes separate rekonstruierte 3D-Objekt eine dichte Punktwolke, die eine größere 3D-Punkt-Dichte aufweist als die entsprechende aktualisierte Punktwolke aus dem Auflösen des Bündelausgleichungsmodells.
  • In einer oder mehreren zwölften Ausführungsformen enthält eine Vorrichtung oder ein System einen Speicher und einen oder mehrere Prozessoren, um ein Verfahren nach einem der vorstehenden Ausführungsformen auszuführen.
  • In einer oder mehreren dreizehnten Ausführungsformen enthält wenigstens ein nicht-transitorisches maschinenlesbares Medium mehrere Befehle, die in Reaktion darauf, dass sie auf einer Berechnungsvorrichtung ausgeführt werden, die Berechnungsvorrichtung veranlassen, das Verfahren nach einer der vorstehenden Ausführungsformen auszuführen.
  • In einer oder mehreren vierzehnten Ausführungsformen kann die Einrichtung Mittel zum Ausführen eines Verfahrens nach einer der vorstehenden Ausführungsformen enthalten.
  • Es ist zu erkennen, dass die Ausführungsformen nicht auf die so beschriebenen Ausführungsformen beschränkt sind, sondern mit Modifikation und Veränderung praktiziert werden können, ohne von dem Schutzbereich der beigefügten Ansprüche abzuweichen. Beispielsweise können die vorstehenden Ausführungsformen eine spezifische Kombination von Merkmalen enthalten. Die vorstehenden Ausführungsformen sind jedoch in dieser Hinsicht nicht eingeschränkt, und in verschiedenen Implementierungen können die vorliegenden Ausführungsformen das Durchführen nur einer Teilmenge solcher Merkmale, das Durchführen in einer anderen Reihenfolge solcher Merkmale, das Durchführen einer unterschiedlichen Kombination solcher Merkmale und/oder das Durchführen zusätzlicher Merkmale zu den ausdrücklich aufgelisteten Merkmale enthalten. Der Schutzbereich der Ausführungsformen deshalb sollte mit Bezug auf die beigefügten Ansprüche bestimmt werden, zusammen mit dem vollständigen Schutzbereich von Äquivalenten, für die solche Ansprüche berechtigt sind.

Claims (25)

  1. System zum Erzeugen einer virtuellen Ansicht innerhalb einer Szene, das Folgendes umfasst: einen Speicher zum Speichern für jedes aus mehreren separaten rekonstruierten 3D-Objekten in der Szene zu einem speziellen Zeitpunkt mehrerer 3D-Punkte für das 3D-Objekt, mehrerer 2D-Merkmalspunkte, wovon jeder einen Ort in wenigstens einem aus mehreren 2D-Bildern angibt, der einem 3D-Punkt des 3D-Objekts entspricht, und einer Kameragruppe, die eine Untergruppe von Kameras aus mehreren Kameras angibt, um Rahmen der Szene zu erhalten, die den 2D-Bildern entsprechen; und einen oder mehrere Prozessoren, die mit dem Speicher gekoppelt sind, wobei der eine oder die mehreren Prozessoren dienen zum: Konstruieren eines separaten Bündelausgleichungsmodells für jedes 3D-Objekt unter Verwendung der 3D-Punkte, der 2D-Merkmalspunkte und von Kameraparametern jeder Kamera in der Kameragruppe, wobei in jedem Bündelausgleichungsmodell eine ausgewählte Kamera auf eine aktuelle Stellung in der Szene festgelegt ist; separaten Auflösen jedes der Bündelausgleichungsmodelle wenigstens teilweise gleichzeitig, um für jedes Bündelausgleichungsmodell aktualisierte Kameraparameter für jede Kamera in der Kameragruppe und/oder eine aktualisierte Punktwolke für das 3D-Objekt zu erzeugen; und Ausgeben der aktualisierten Kameraparameter und/oder der aktualisierten Punktwolken zum Gebrauch in der 3D-Rekonstruktion der Szene.
  2. System nach Anspruch 1, wobei in jedem Bündelausgleichungsmodell eine ausgewählte Kamera auf eine aktuelle Stellung in der Szene festgelegt ist.
  3. System nach Anspruch 1, wobei die 3D-Punkte, die 2D-Merkmalspunkte und die Kameragruppe mehreren ersten zeitgleichen Rahmen in der Szene, die durch die mehreren Kameras zu dem speziellen Zeitpunkt erhalten werden, entsprechen und wobei jedes der Bündelausgleichungsmodelle jede Kamera auf aktuelle Stellungen der Kameras in der Szene festlegt.
  4. System nach Anspruch 3, wobei der eine oder die mehreren Prozessoren ferner dienen zum: Empfangen für jedes der mehreren separaten 3D-Objekte mehrerer zweiter 3D-Punkte für das 3D-Objekt, mehrerer zweiter 2D-Merkmalspunkte, wovon jeder einen zweiten Ort in wenigstens einem aus mehreren zweiten 2D-Bildern, der einem zweiten 3D-Punkt des 3D-Objekts entspricht, angibt, und einer zweiten Kameragruppe, die eine zweite Untergruppe von Kameras aus den mehreren Kameras angibt, die den zweiten 2D-Bildern entsprechen; Konstruieren eines zweiten Bündelausgleichungsmodells für jedes 3D-Objekt unter Verwendung der zweiten 3D-Punkte, der zweiten 2D-Merkmalspunkte und Kameraparameter jeder Kamera in der zweiten Kameragruppe, wobei in jedem zweiten Bündelausgleichungsmodell eine ausgewählte zweite Kamera auf eine zweiten aktuelle Stellung in der Szene festgelegt ist und alle zweiten 3D-Punkte für jedes Objekt auf aktuelle zweite 3D-Punkt-Orte in der Szene festgelegt sind; und separaten Auflösen jedes der zweiten Bündelausgleichungsmodelle wenigstens teilweise gleichzeitig, um für jedes zweite Bündelausgleichungsmodell zweite aktualisierte Kameraparameter zu erzeugen, wobei alle zweiten 3D-Punkte für jedes 3D-Objekt festgelegt bleiben.
  5. System nach Anspruch 4, wobei der eine oder die mehreren Prozessoren ferner dienen zum: alternierenden Konstruieren und Auflösen von Bündelausgleichungsmodellen mit festgelegten Kamerastellungen und Konstruieren und Auflösen zweiter Bündelausgleichungsmodelle mit festgelegten 3D-Punkten über mehrere Gruppen gleichzeitiger Rahmen der Szene.
  6. System nach einem der Ansprüche 1 bis 5, wobei der eine oder die mehreren Prozessoren ferner dienen zum: Ausführen einer Struktur-aus-Bewegung-Verarbeitung für einen Hintergrund der Szene, wobei kein dynamisches Objekt vorhanden ist, um initiale Kameraparameter für jede der mehreren Kameras und eine Hintergrund-Punktwolke, die 3D-Punkte für identifizierte Merkmale innerhalb der Szene enthält, zu erzeugen, wobei jedes der separaten Bündelausgleichungsmodelle die initialen Kameraparameter umfasst.
  7. System nach einem der Ansprüche 1 bis 5, wobei jedes der separaten Bündelausgleichungsmodelle eine Summe von Verlustfunktionen umfasst, wobei die Verlustfunktionen jeweils zum Messen einer Differenz zwischen einem 2D-Merkmalspunkt und einem rückprojizierten Punkt für einen entsprechenden 3D-Punkt dienen, wobei der rückprojizierte Punkt auf den Kameraparametern basiert.
  8. System nach einem der Ansprüche 1 bis 5, wobei der eine oder die mehreren Prozessoren dazu dienen, dass Empfangen, Konstruieren, separates Auflösen und Ausgeben innerhalb einer Zeitspanne ausgeführt werden, die kürzer ist als eine Zielzeitspanne, wobei die Zielzeitspanne gleich einer Inversen einer Rahmenrate, die dem Aufnehmen der Szene durch die mehreren Kameras entspricht, minus einer vorbestimmten virtuellen Ansichtzeitspanne ist.
  9. System nach einem der Ansprüche 1 bis 5, wobei der eine oder die mehreren Prozessoren ferner dienen zum: Verfolgen der Bewegung jedes der separaten wiederhergestellten 3D-Objekte; Detektieren einer kleinen oder keiner Bewegung für ein erstes 3D-Objekt aus den separaten 3D-Objekten basierend darauf, dass eine Bewegungsstrecke des ersten Objekts kleiner ist als ein Schwellenwert; und Überspringen des Konstruierens eines zweiten Bündelausgleichungsmodells für das erste 3D-Objekt in Reaktion darauf, dass eine kleine oder keine Bewegung detektiert wird.
  10. System nach einem der Ansprüche 1 bis 5, wobei der eine oder die mehreren Prozessoren ferner dienen zum: Unterteilen eines vollständigen 3D-Modells der Szene in Hintergrundobjekte und die separaten wiederhergestellten 3D-Objekte; und Bezeichnen jedes der separaten rekonstruierten 3D-Modelle als dynamisch und der Hintergrundobjekte als statisch, wobei der eine oder die mehreren Prozessoren dazu dienen, dass das Empfangen, Konstruieren, separates Auflösen und Ausgeben in Reaktion darauf ausgeführt werden, dass die separaten rekonstruierten 3D-Objekte als dynamisch bezeichnet sind, und der eine oder die mehreren Prozessoren dazu dienen, Empfangen, Konstruieren, separates Auflösen und Ausgeben für Hintergrundobjekte zu überspringen.
  11. System nach einem der Ansprüche 1 bis 5, wobei die mehreren 3D-Punkte für jedes separate rekonstruierte 3D-Objekt eine dichte Punktwolke umfassen, die eine größere 3D-Punkt-Dichte aufweist als die entsprechende aktualisierte Punktwolke aus dem Auflösen des Bündelausgleichungsmodells.
  12. Verfahren zum Erzeugen einer virtuellen Ansicht innerhalb einer Szene, das Folgendes umfasst: Empfangen für jedes aus mehreren separaten rekonstruierten 3D-Objekten in der Szene zu einem speziellen Zeitpunkt mehrerer 3D-Punkte für das 3D-Objekt, mehrerer 2D-Merkmalspunkte, wovon jeder einen Ort in wenigstens einem aus mehreren 2D-Bildern, der einem 3D-Punkt des 3D-Objekts entspricht, angibt, und einer Kameragruppe, die eine Untergruppe von Kameras aus mehreren Kameras angibt, um Rahmen der Szene zu erhalten, die den 2D-Bildern entsprechen; Konstruieren eines separaten Bündelausgleichungsmodells für jedes 3D-Objekt unter Verwendung der 3D-Punkte, der 2D-Merkmalspunkte und von Kameraparametern jeder Kamera in der Kameragruppe; separates Auflösen jedes der Bündelausgleichungsmodelle wenigstens teilweise gleichzeitig, um für jedes Bündelausgleichungsmodell wenigstens eines aus aktualisierten Kameraparametern für Kameras in der Kameragruppe oder einer aktualisierten Punktwolke für das 3D-Objekt zu erzeugen; und Ausgeben wenigstens eines aus den aktualisierten Kameraparametern oder den aktualisierten Punktwolken zum Gebrauch in der 3D-Rekonstruktion der Szene.
  13. Verfahren nach Anspruch 12, wobei die 3D-Punkte, die 2D-Merkmalspunkte und die Kameragruppe mehreren ersten zeitgleichen Rahmen in der Szene, die durch die mehreren Kameras zu dem speziellen Zeitpunkt erhalten werden, entsprechen, und wobei jedes der Bündelausgleichungsmodelle jede Kamera auf aktuelle Stellungen der Kameras in der Szene festlegt.
  14. Verfahren nach Anspruch 13, das ferner Folgendes umfasst: Empfangen für jedes der mehreren separaten 3D-Objekte mehrerer zweiter 3D-Punkte für das 3D-Objekt, mehrerer zweiter 2D-Merkmalspunkte, wovon jeder einen zweiten Ort in wenigstens einem aus mehreren zweiten 2D-Bildern angibt, der einem zweiten 3D-Punkt des 3D-Objekts entspricht, und einer zweiten Kameragruppe, die eine zweite Untergruppe von Kameras aus den mehreren Kameras angibt, die den zweiten 2D-Bildern entsprechen; Konstruieren eines zweiten Bündelausgleichungsmodells für jedes 3D-Objekt unter Verwendung der zweiten 3D-Punkte, der zweiten 2D-Merkmalspunkte und von Kameraparametern jeder Kamera in der zweiten Kameragruppe, wobei in jedem zweiten Bündelausgleichungsmodell eine ausgewählte zweite Kamera auf eine zweite aktuelle Stellung in der Szene festgelegt ist und alle zweiten 3D-Punkte für jedes Objekt auf aktuelle zweite 3D-Punkt-Orte in der Szene festgelegt sind; und separates Auflösen jedes der zweiten Bündelausgleichungsmodelle wenigstens teilweise gleichzeitig, um für jedes zweite Bündelausgleichungsmodell zweite aktualisierte Kameraparameter zu erzeugen, wobei alle zweiten 3D-Punkte für jedes 3D-Objekt festgelegt bleiben.
  15. Verfahren nach einem der Ansprüche 12 bis 14, wobei das Empfangen, Konstruieren, separate Auflösen und Ausgeben innerhalb einer Zeitspanne ausgeführt werden, die kürzer ist als eine Zielzeitspanne, wobei die Zielzeitspanne gleich einer Inversen einer Rahmenrate, die dem Aufnehmen der Szene durch die mehreren Kameras entspricht, minus einer vorbestimmten virtuellen Ansichtzeitspanne ist.
  16. Verfahren nach einem der Ansprüche 12 bis 14, das ferner Folgendes umfasst: Aufteilen eines vollständigen 3D-Modells der Szene in Hintergrundobjekte und separate rekonstruierte 3D-Objekte; und Bezeichnen jedes der separaten rekonstruierten 3D-Objekte als dynamisch und der Hintergrundobjekte als statisch, wobei das Empfangen, Konstruieren, separate Auflösen und Ausgeben in Reaktion darauf ausgeführt werden, dass die separaten rekonstruierten 3D-Objekte als dynamisch bezeichnet sind, und das Empfangen, Konstruieren, Auflösen und Ausgeben für die Hintergrundobjekte übersprungen werden.
  17. Maschinenlesbares Medium bzw. maschinenlesbare Medien, das mehrere Befehle umfasst, die in Reaktion darauf, dass sie auf einer Berechnungsvorrichtung ausgeführt werden, die Berechnungsvorrichtung veranlassen, eine virtuelle Ansicht innerhalb einer Szene zu erzeugen durch: Empfangen für jedes aus mehreren separaten rekonstruierten 3D-Objekten in der Szene zu einem speziellen Zeitpunkt mehrerer 3D-Punkte für das 3D-Objekt, mehrerer 2D-Merkmalspunkte, wovon jeder einen Ort in wenigstens einem aus mehreren 2D-Bildern, der einem 3D-Punkt des 3D-Objekts entspricht, angibt, und einer Kameragruppe, die eine Untergruppe von Kameras aus mehreren Kameras angibt, um Rahmen der Szene zu erhalten, die den 2D-Bildern entsprechen; Konstruieren eines separaten Bündelausgleichungsmodells für jedes 3D-Objekt unter Verwendung der 3D-Punkte, der 2D-Merkmalspunkte und von Kameraparametern jeder Kamera in der Kameragruppe; separates Auflösen jedes der Bündelausgleichungsmodelle wenigstens teilweise gleichzeitig, um für jedes Bündelausgleichungsmodell wenigstens eines aus aktualisierten Kameraparametern für Kameras in der Kameragruppe oder einer aktualisierten Punktwolke für das 3D-Objekt zu erzeugen; und Ausgeben wenigstens eines aus den aktualisierten Kameraparametern oder der aktualisierten Punktwolken zum Gebrauch in der 3D-Rekonstruktion der Szene.
  18. Maschinenlesbares Medium nach Anspruch 17, wobei die 3D-Punkte, die 2D-Merkmalspunkte und die Kameragruppe mehreren ersten zeitgleichen Rahmen in der Szene, die durch die mehreren Kameras zu dem speziellen Zeitpunkt erhalten werden, entsprechen, und wobei jedes der Bündelausgleichungsmodelle jede Kamera auf aktuelle Stellungen der Kameras in der Szene festlegt.
  19. Maschinenlesbares Medium nach Anspruch 18, das ferner Befehle umfasst, die in Reaktion darauf, dass sie auf einer Berechnungsvorrichtung ausgeführt werden, die Berechnungsvorrichtung veranlassen, die virtuelle Ansicht innerhalb der Szene zu erzeugen durch: Empfangen für jedes der mehreren separaten 3D-Objekte mehrerer zweiter 3D-Punkte für das 3D-Objekt, mehrerer zweiter 2D-Merkmalspunkte, wovon jeder einen zweiten Ort in wenigstens einem aus mehreren zweiten 2D-Bildern angibt, der einem zweiten 3D-Punkt des 3D-Objekts entspricht, und einer zweiten Kameragruppe, die eine zweite Untergruppe von Kameras aus den mehreren Kameras angibt, die den zweiten 2D-Bildern entsprechen; Konstruieren eines zweiten Bündelausgleichungsmodells für jedes 3D-Objekt unter Verwendung der zweiten 3D-Punkte, der zweiten 2D-Merkmalspunkte und von Kameraparametern von Kameras in der zweiten Kameragruppe, wobei in dem zweiten Bündelausgleichungsmodell eine ausgewählte zweite Kamera auf eine zweite aktuelle Stellung in der Szene festgelegt ist und alle zweiten 3D-Punkte für jedes Objekt auf aktuelle zweite 3D-Punkt-Orte in der Szene festgelegt sind; und separates Auflösen jedes der zweiten Bündelausgleichungsmodelle wenigstens teilweise gleichzeitig, um für jedes zweite Bündelausgleichungsmodell zweite aktualisierte Kameraparameter zu erzeugen, wobei alle zweiten 3D-Punkte für jedes 3D-Objekt festgelegt bleiben.
  20. Maschinenlesbares Medium nach einem der Ansprüche 17 bis 19, wobei das Empfangen, Konstruieren, separate Auflösen und Ausgeben innerhalb einer Zeitspanne ausgeführt werden, die kürzer ist als eine Zielzeitspanne, wobei die Zielzeitspanne gleich einer Inversen einer Rahmenrate, die dem Aufnehmen der Szene durch die mehreren Kameras entspricht, minus einer vorbestimmten virtuellen Ansichtzeitspanne ist.
  21. Maschinenlesbares Medium nach einem der Ansprüche 17 bis 19, das ferner Befehle umfasst, die in Reaktion darauf, dass sie auf einer Berechnungsvorrichtung ausgeführt werden, die Berechnungsvorrichtung veranlassen, die virtuelle Ansicht innerhalb der Szene zu erzeugen durch: Aufteilen eines vollständigen 3D-Modells der Szene in Hintergrundobjekte und die separaten rekonstruierten 3D-Objekte; und Bezeichnen jedes der separaten rekonstruierten 3D-Objekte als dynamisch und der Hintergrundobjekte als statisch, wobei das Empfangen, Konstruieren, separate Auflösen und Ausgeben in Reaktion darauf ausgeführt werden, dass die separaten rekonstruierten 3D-Objekte als dynamisch bezeichnet sind, und das Empfangen, Konstruieren, Auflösen und Ausgeben für die Hintergrundobjekte übersprungen werden.
  22. System, das Folgendes umfasst: Mittel zum Empfangen für jedes aus mehreren separaten rekonstruierten 3D-Objekten in der Szene zu einem speziellen Zeitpunkt mehrerer 3D-Punkte für das 3D-Objekt, mehrerer 2D-Merkmalspunkte, wovon jeder einen Ort in wenigstens einem aus mehreren 2D-Bildern angibt, der einem 3D-Punkt des 3D-Objekts entspricht, und einer Kameragruppe, die eine Untergruppe von Kameras aus mehreren Kameras angibt, um Rahmen der Szene zu erhalten, die den 2D-Bildern entsprechen; Mittel zum Konstruieren eines separaten Bündelausgleichungsmodells für jedes 3D-Objekt unter Verwendung der 3D-Punkte, der 2D-Merkmalspunkte und von Kameraparametern jeder Kamera in der Kameragruppe; Mittel zum separaten Auflösen jedes der Bündelausgleichungsmodelle wenigstens teilweise gleichzeitig, um für jedes Bündelausgleichungsmodell wenigstens eines aus aktualisierten Kameraparametern für Kameras in der Kameragruppe oder einer aktualisierten Punktwolke für das 3D-Objekt zu erzeugen; und Mittel zum Ausgeben wenigstens eines aus den aktualisierten Kameraparametern oder den aktualisierten Punktwolken zum Gebrauch in der 3D-Rekonstruktion der Szene.
  23. System nach Anspruch 22, wobei die 3D-Punkte, die 2D-Merkmalspunkte und die Kameragruppe mehreren ersten zeitgleichen Rahmen in der Szene, die durch die mehreren Kameras zu dem speziellen Zeitpunkt erhalten werden, entsprechen, und wobei jedes der Bündelausgleichungsmodelle jede Kamera auf aktuelle Stellungen der Kameras in der Szene festlegt.
  24. System nach Anspruch 23, das ferner Folgendes umfasst: Mittel zum Empfangen für jedes der mehreren separaten 3D-Objekte mehrerer zweiter 3D-Punkte für das 3D-Objekt, mehrerer zweiter 2D-Merkmalspunkte, wovon jeder einen zweiten Ort in wenigstens einem aus mehreren zweiten 2D-Bildern angibt, der einem zweiten 3D-Punkt des 3D-Objekts entspricht, und einer zweiten Kameragruppe, die eine zweite Untergruppe von Kameras aus den mehreren Kameras angibt, die den zweiten 2D-Bildern entsprechen; Mittel zum Konstruieren eines zweiten Bündelausgleichungsmodells für jedes 3D-Objekt unter Verwendung der zweiten 3D-Punkte, der zweiten 2D-Merkmalspunkte und von Kameraparametern jeder Kamera in der zweiten Kameragruppe, wobei in jedem zweiten Bündelausgleichungsmodell eine ausgewählte zweite Kamera auf eine zweite aktuelle Stellung in der Szene festgelegt ist und alle zweiten 3D-Punkte für jedes Objekt auf aktuelle zweite 3D-Punkt-Orte in der Szene festgelegt sind; und Mittel zum separaten Auflösen jedes der zweiten Bündelausgleichungsmodelle wenigstens teilweise gleichzeitig, um für jedes zweite Bündelausgleichungsmodell zweite aktualisierte Kameraparameter zu erzeugen, wobei alle zweiten 3D-Punkte für jedes 3D-Objekt festgelegt bleiben.
  25. System nach einem der Ansprüche 22 bis 24, das ferner Folgendes umfasst: Mittel zum Aufteilen eines vollständigen 3D-Modells der Szene in Hintergrundobjekte und die separaten rekonstruierten 3D-Objekte; und Mittel zum Bezeichnen jedes der separaten rekonstruierten 3D-Objekte als dynamisch und der Hintergrundobjekte als statisch, wobei das Empfangen, Konstruieren, separate Auflösen und Ausgeben in Reaktion darauf ausgeführt werden, dass die separaten rekonstruierten 3D-Modelle als dynamisch bezeichnet sind, und das Empfangen, Konstruieren, Auflösen und Ausgeben für die Hintergrundobjekte übersprungen werden.
DE102020125612.4A 2019-12-18 2020-09-30 Kontinuierliche lokale 3d-rekonstruktionsverfeinerung in video Pending DE102020125612A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/719,557 US11295473B2 (en) 2019-12-18 2019-12-18 Continuous local 3D reconstruction refinement in video
US16/719,557 2019-12-18

Publications (1)

Publication Number Publication Date
DE102020125612A1 true DE102020125612A1 (de) 2021-06-24

Family

ID=70279651

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020125612.4A Pending DE102020125612A1 (de) 2019-12-18 2020-09-30 Kontinuierliche lokale 3d-rekonstruktionsverfeinerung in video

Country Status (3)

Country Link
US (1) US11295473B2 (de)
CN (1) CN113012275A (de)
DE (1) DE102020125612A1 (de)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107958482B (zh) * 2016-10-17 2021-06-18 杭州海康威视数字技术股份有限公司 一种三维场景模型构建方法及装置
US11158087B2 (en) 2019-12-06 2021-10-26 Intel Corporation Adaptive virtual camera for indirect-sparse simultaneous localization and mapping systems
US11295473B2 (en) * 2019-12-18 2022-04-05 Intel Corporation Continuous local 3D reconstruction refinement in video
US11601636B2 (en) * 2020-05-22 2023-03-07 Google Llc Methods, systems, and media for generating an immersive light field video with a layered mesh representation
US11924397B2 (en) * 2020-07-23 2024-03-05 Samsung Electronics Co., Ltd. Generation and distribution of immersive media content from streams captured via distributed mobile devices
KR20220038996A (ko) 2020-09-21 2022-03-29 삼성전자주식회사 특징 임베딩 방법 및 장치
CN112102411B (zh) * 2020-11-02 2021-02-12 中国人民解放军国防科技大学 一种基于语义误差图像的视觉定位方法及装置
CN112767541A (zh) * 2021-01-15 2021-05-07 浙江商汤科技开发有限公司 三维重建方法及装置、电子设备和存储介质
US12003806B2 (en) * 2021-03-11 2024-06-04 Quintar, Inc. Augmented reality system for viewing an event with multiple coordinate systems and automatically generated model
US11527047B2 (en) 2021-03-11 2022-12-13 Quintar, Inc. Augmented reality system for viewing an event with distributed computing
US11645819B2 (en) 2021-03-11 2023-05-09 Quintar, Inc. Augmented reality system for viewing an event with mode based on crowd sourced images
US20220295040A1 (en) * 2021-03-11 2022-09-15 Quintar, Inc. Augmented reality system with remote presentation including 3d graphics extending beyond frame
US11657578B2 (en) 2021-03-11 2023-05-23 Quintar, Inc. Registration for augmented reality system for viewing an event
US11776275B2 (en) * 2021-10-11 2023-10-03 Worlds Enterprises, Inc. Systems and methods for 3D spatial tracking
CN115100327B (zh) * 2022-08-26 2022-12-02 广东三维家信息科技有限公司 动画立体视频生成的方法、装置及电子设备
KR20240070356A (ko) * 2022-11-07 2024-05-21 팜피 주식회사 전처리된 이미지를 이용하여 3d 객체를 생성하는 방법 및 이를 위한 장치

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150070468A1 (en) * 2013-09-10 2015-03-12 Faro Technologies, Inc. Use of a three-dimensional imager's point cloud data to set the scale for photogrammetry
CN106959103B (zh) * 2014-05-05 2019-12-31 赫克斯冈技术中心 测量子***和测量***
US10347008B2 (en) * 2017-08-14 2019-07-09 Trimble Inc. Self positioning camera system to 3D CAD/BIM model
US11087549B2 (en) * 2018-10-15 2021-08-10 University Of Maryland, College Park Methods and apparatuses for dynamic navigable 360 degree environments
US10957062B2 (en) * 2018-10-31 2021-03-23 Bentley Systems, Incorporated Structure depth-aware weighting in bundle adjustment
US11295473B2 (en) * 2019-12-18 2022-04-05 Intel Corporation Continuous local 3D reconstruction refinement in video
US20210118182A1 (en) * 2020-12-22 2021-04-22 Intel Corporation Methods and apparatus to perform multiple-camera calibration

Also Published As

Publication number Publication date
CN113012275A (zh) 2021-06-22
US20200126257A1 (en) 2020-04-23
US11295473B2 (en) 2022-04-05

Similar Documents

Publication Publication Date Title
DE102020125612A1 (de) Kontinuierliche lokale 3d-rekonstruktionsverfeinerung in video
DE102020123304A1 (de) Tiefes lernen für engmaschige semantische segmentierung in video mit automatisierter interaktivität und verbesserter zeitlicher kohärenz
US20200404247A1 (en) System for and method of social interaction using user-selectable novel views
DE102018132245A1 (de) Verfahren und System zur rekurrenten semantischen Segmentierung zur Bildverarbeitung
CN108616731B (zh) 一种360度vr全景图形图像及视频实时生成方法
DE102020129800A1 (de) Interaktive segmentierung mit hoher wiedergabetreue für videodaten mit tief faltenden tessellationen und kontextsensitiven skip-verbindungen
US9430861B2 (en) System and method for integrating multiple virtual rendering systems to provide an augmented reality
DE102019216136A1 (de) Verfahren und system zur 3d-rekonstruktion mit volumenbasierter filterung zur bildverarbeitung
US20190259136A1 (en) Method and apparatus for person super resolution from low resolution image
US5748199A (en) Method and apparatus for converting a two dimensional motion picture into a three dimensional motion picture
US9160938B2 (en) System and method for generating three dimensional presentations
US11880939B2 (en) Embedding complex 3D objects into an augmented reality scene using image segmentation
DE112016004216T5 (de) Allgemeine Sphärische Erfassungsverfahren
DE102020124815A1 (de) System und vorrichtung für benutzergesteuerte virtuelle kamera für volumetrisches video
CN105654471A (zh) 应用于互联网视频直播的增强现实ar***及方法
DE102020128899A1 (de) Adaptive virtuelle kamera für indirect-sparse-simultaneous-localization- und mapping-systeme
US20120120201A1 (en) Method of integrating ad hoc camera networks in interactive mesh systems
Fehn et al. 3D analysis and image-based rendering for immersive TV applications
DE112018007730T5 (de) 3d objekterkennung unter verwendung von 3d konvolutionalen neuronalen netzen mit tiefenbasierten multiskalierungsfiltern
CN106231368A (zh) 主播类互动平台道具呈现方法及其装置、客户端
CN104469179A (zh) 一种将动态图片结合到手机视频中的方法
CN108605119B (zh) 2d到3d视频帧转换
CN111371966B (zh) 一种在虚拟演播室中合成前景人物阴影的方法、装置及存储介质
Lafruit et al. Understanding MPEG-I coding standardization in immersive VR/AR applications
DE102021119882A1 (de) Videohintergrundschätzung unter verwendung von räumlich-zeitlichen modellen