-
HINTERGRUND
-
Die vorliegende Erfindung bezieht sich auf Techniken zum Erzeugen von Augmented-Reality-Inhalten durch Automatisieren einer Punktwolkenbereinigung mit Hilfe einer unscharfen Punktesegmentierung entsprechend einem Objekt oder einem Hintergrund.
-
Die 3D-Punktwolke ist ein Standardformat zum Speichern von 3D-Modellen, die Tausende von Punkten umfassen können, von denen jeder seine Position und Farbe hat. In der Regel wird eine Punktwolke während einer 3D-Rekonstruktion erzeugt - einer Rechenpipeline, die die 3D-Geometrie eines Modells eines Objekts oder einer Szene anhand seines Videos berechnet. Beim Rekonstruieren eines 3D-Objekts anhand eines Videos enthält die sich ergebende Punktwolke in der Regel nicht nur das Objekt, sondern auch einige Hintergrundelemente, z.B. den Tisch, auf dem das Objekt steht, die Wände, den Boden und andere Objekte, die auf dem Video zu sehen sind. Für viele Anwendungen des 3D-Modells ist eine saubere Punktwolke wichtig, die nur zum Objekt gehörende Punkte enthält. Daher ist es sehr wichtig, die nicht zum Objekt gehörenden Bereiche des Modells zu entfernen. Diese Aufgabe wird manchmal als „Segmentierung in ,Objekt' und ,Hintergrund'“ bezeichnet.
-
Ein Ansatz für die Segmentierung ist manuelles Löschen von Hintergrundpunkten unter Verwendung einer interaktiven Anwendung, die es ermöglicht, Hintergrundbereiche zu markieren und zu entfernen. Tools wie Blender und MeshLab sind Beispiele für diesen Ansatz, der manuelle Arbeit und einen hohen Zeitaufwand erfordert und daher nicht skalierbar ist. Ein zweiter Ansatz besteht darin, Heuristik einzusetzen, z.B. eine Schwellenwertberechnung für den Abstand zur Kamera oder Berechnen von kompakten Blobs. Diese Verfahren versagen, wenn das Objekt den Annahmen über seine Größe und seinen Abstand zu Hintergrundelementen entspricht.
-
Daher besteht ein Bedarf an Techniken, die ein automatisches und zuverlässiges Durchführen der Aufgabe einer Segmentierung von Punktwolken in Objekte und Hintergründe bereitstellen.
-
Die Druckschrift
US 2012 / 0 041 722 A1 betrifft ein Verfahren, das die bildbasierte Modellierung erleichtert. Das Verfahren umfasst: Empfangen von Eingangsbilddaten, die eine Fassade darstellen; Rekonstruieren von Eingangsbilddaten mit einer Rechenvorrichtung, um dreidimensionale Punkte, Linien und Kamerapositionen zu berechnen, die mit der Fassade assoziiert sind; und Durchführen einer semantischen Segmentierung mit mehreren Ansichten an den rekonstruierten Eingangsbilddaten, um die Fassadenstruktur zu erkennen und die Fassade zu segmentieren.
-
KURZDARSTELLUNG
-
Die Erfindung betrifft ein Verfahren, ein System und Computerprogrammprodukt zum Erzeugen von Augmented-Reality-Inhalten, deren Merkmale in den entsprechenden Patentansprüchen angegeben sind. Ausführungsformen sind in den abhängigen Ansprüchen angegeben. Insbesondere können die Ausführungsformen der vorliegenden Systeme und Verfahren Techniken bereitstellen, die automatisches und zuverlässiges Durchführen der Aufgabe einer Segmentierung von Punktwolken bereitstellen. Ausführungsformen können die Fähigkeit bereitstellen, die Objekt-Hintergrund-Segmentierung aus Erfassungssitzungen in Augmented-Reality-Anwendungen (AR-Anwendungen) schrittweise zu erlernen. Die 3D-Punktwolke kann für Erfassen in AR-Anwendungen verwendet werden, indem Punkte aus der Wolke mit Bereichen im Live-Video in Übereinstimmung gebracht werden. Ein 3D-Punkt, der viele Übereinstimmungen hat, gehört mit größerer Wahrscheinlichkeit zum Objekt, während ein 3D-Punkt, der selten Übereinstimmungen hat, mit größerer Wahrscheinlichkeit ein Teil des Hintergrunds ist. Vorteile dieses Ansatzes sind unter anderem, dass keine manuelle Arbeit für die Segmentierung erforderlich ist und die Ergebnisse im Laufe der Zeit ständig verbessert werden können, da das Objekt in verschiedenen Umgebungen erfasst wird.
-
Ein Verfahren zum Erzeugen von Augmented-Reality-Inhalten kann beispielsweise in einem Computer implementiert werden, der einen Prozessor, einen Speicher, auf den der Prozessor zugreifen kann, und Computerprogrammanweisungen aufweist, die in dem Speicher gespeichert sind und von dem Prozessor ausführbar sind, und das Verfahren kann Erfassen eines 3D-Modells eines Objekts in einer Szene in einem Video-Stream im Computersystem aufweisen, während sich eine Kamera durch die Szene bewegt, wobei das Erfassen für jeden Punkt für jedes Bild im Video-Stream Ermitteln aufweist, ob der Punkt dem Objekt entspricht oder ob der Punkt dem Hintergrund entspricht, Segmentieren jedes der Mehrzahl von Punkten im Computersystem in entweder einen Punkt, der dem Objekt entspricht, oder einen Punkt, der dem Hintergrund entspricht, auf der Grundlage einer Wahrscheinlichkeit, dass der Punkt dem Objekt entspricht, und einer Wahrscheinlichkeit, dass der Punkt dem Hintergrund entspricht, wobei die Wahrscheinlichkeit, dass der Punkt dem Objekt entspricht, für jeden Punkt umso höher ist, je öfter das Erfassen feststellt, dass der Punkt innenliegend ist, und die Wahrscheinlichkeit, dass der Punkt dem Hintergrund entspricht, für jeden Punkt umso höher ist, je öfter das Erfassen feststellt, dass der Punkt außenliegend ist, und Erzeugen von Augmented-Reality-Inhalten auf der Grundlage des segmentierten 3D-Modells des Objekts im Computersystem.
-
In Ausführungsformen kann das Erfassen aufweisen, dass das segmentierte 3D-Modell des Objekts verwendet wird, um die Position der Kamera in Bezug auf das 3D-Modell des Objekts zu schätzen. Das 3D-Modell des Objekts kann zunächst unter Verwendung einer Standardeinstellung der Wahrscheinlichkeit für jeden Punkt segmentiert werden, und für jedes Bild wird die Wahrscheinlichkeit für jeden Punkt aktualisiert, je nachdem, ob das Erfassen feststellt, dass der Punkt dem Objekt oder dem Hintergrund entspricht. Die Standardeinstellung der Wahrscheinlichkeit für jeden Punkt kann 0,5 betragen, und die Wahrscheinlichkeit kann erhöht werden, wenn das Erfassen den Punkt mit einem Pixel im Videobild in Übereinstimmung bringt, und die Wahrscheinlichkeit wird verringert, wenn das Erfassen den Punkt nicht mit einem der Pixel im Videobild in Übereinstimmung bringen kann. 5. Das 3D-Modell des Objekts in der Szene kann eine 3D-Punktwolke aufweisen, die eine Mehrzahl von Punkten aufweist, darunter mindestens einige Punkte, die dem Objekt entsprechen, und mindestens einige Punkte, die einem Hintergrund der Szene entsprechen. Der Video-Stream kann von der Kamera stammen, die sich durch die Szene bewegt.
-
Ein System zum Erzeugen von Augmented-Reality-Inhalten kann einen Prozessor, einen Speicher, auf den der Prozessor zugreifen kann, und Computerprogrammanweisungen aufweisen, die in dem Speicher gespeichert sind und von dem Prozessor ausführbar sind, um ein Erfassen eines 3D-Modells eines Objekts in einer Szene in einem Video-Stream durchzuführen, während sich eine Kamera durch die Szene bewegt, wobei das Erfassen für jeden Punkt für jedes Bild Ermitteln aufweist, ob der Punkt dem Objekt entspricht oder ob der Punkt dem Hintergrund entspricht, Segmentieren jedes der Mehrzahl von Punkten in entweder einen Punkt, der dem Objekt entspricht, oder einen Punkt, der dem Hintergrund entspricht, auf der Grundlage einer Wahrscheinlichkeit, dass der Punkt dem Objekt entspricht, und einer Wahrscheinlichkeit, dass der Punkt dem Hintergrund entspricht, wobei die Wahrscheinlichkeit, dass der Punkt dem Objekt entspricht, für jeden Punkt umso höher ist, je öfter das Erfassen feststellt, dass der Punkt dem Objekt entspricht, und die Wahrscheinlichkeit, dass der Punkt dem Hintergrund entspricht, für jeden Punkt umso höher ist, je öfter das Erfassen feststellt, dass der Punkt dem Hintergrund entspricht, und Erzeugen von Augmented-Reality-Inhalten auf der Grundlage des segmentierten 3D-Modells des Objekts.
-
Ein Computerprogrammprodukt zum Erzeugen von Augmented-Reality-Inhalten kann einen nichtflüchtigen durch einen Computer lesbaren Speicher mit darin gespeicherten Programmanweisungen aufweisen, wobei die Programmanweisungen durch einen Computer ausführbar sind, um den Computer zu veranlassen, ein Verfahren durchzuführen, das Erfassen eines 3D-Modells eines Objekts in einer Szene in einem Video-Stream aufweist, während sich eine Kamera durch die Szene bewegt, wobei das Erfassen für jeden Punkt für jedes Bild Ermitteln aufweist, ob der Punkt dem Objekt entspricht oder ob der Punkt dem Hintergrund entspricht, sowie Segmentieren jedes der Mehrzahl von Punkten in entweder einen Punkt, der dem Objekt entspricht, oder einen Punkt, der dem Hintergrund entspricht, auf der Grundlage einer Wahrscheinlichkeit, dass der Punkt dem Objekt entspricht, und einer Wahrscheinlichkeit, dass der Punkt dem Hintergrund entspricht, wobei die Wahrscheinlichkeit, dass der Punkt dem Objekt entspricht, für jeden Punkt umso höher ist, je öfter das Erfassen feststellt, dass der Punkt dem Objekt entspricht, und die Wahrscheinlichkeit, dass der Punkt dem Hintergrund entspricht, für jeden Punkt umso höher ist, je öfter das Erfassen feststellt, dass der Punkt dem Hintergrund entspricht, und Erzeugen von Augmented-Reality-Inhalten auf der Grundlage des segmentierten 3D-Modells des Objekts.
-
Figurenliste
-
Die Einzelheiten der vorliegenden Erfindung können - sowohl was ihren Aufbau als auch ihre Funktionsweise betrifft - am besten anhand der Begleitzeichnungen verstanden werden, in denen gleiche Bezugszahlen und Bezeichnungen gleichen Elementen entsprechen.
- 1 veranschaulicht eine beispielhafte Darstellung eines Systems, in dem Ausführungsformen der vorliegenden Systeme und Verfahren implementiert werden können.
- 2 ist ein beispielhafter Ablaufplan einer Ausführungsform eines Prozesses gemäß Ausführungsformen der vorliegenden Systeme und Verfahren.
- 3 veranschaulicht ein Beispiel für ein 3D-Modell gemäß Ausführungsformen der vorliegenden Systeme und Verfahren.
- 4 ist eine beispielhafte Darstellung des Verwendens von Segmentierungsinformationen zum Schätzen der Kameraposition in Bezug auf das Modell gemäß Ausführungsformen der vorliegenden Systeme und Verfahren.
- 5 ist eine beispielhafte Darstellung des Verwendens von Segmentierungsinformationen zum Schätzen der Kameraposition in Bezug auf das Modell mit Aktualisieren der Segmentierungsinformationen gemäß Ausführungsformen der vorliegenden Systeme und Verfahren.
- 6 ist ein beispielhaftes Blockschaubild eines Computersystems, in dem Prozesse der hier beschriebenen Ausführungsformen implementiert werden können.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Ausführungsformen der vorliegenden Systeme und Verfahren können Techniken bereitstellen, die ein automatisches und zuverlässiges Durchführen der Aufgabe einer Segmentierung einer Punktwolke in Objekt und Hintergrund bereitstellen. Ausführungsformen können die Fähigkeit bereitstellen, eine automatische Segmentierung einer 3D-Punktwolke in Objekt- und Hintergrundsegmente durchzuführen, indem die Objekt-Hintergrund-Segmentierung schrittweise aus Erfassungssitzungen in Augmented-Reality-Anwendungen (AR-Anwendungen) erlernt wird. In AR-Anwendungen kann ein 3D-Modell von einem oder mehreren Objekten, die in einer Szene in einem Video-Stream angezeigt werden sollen, erzeugt und auf einer Szene oder auf Objekten in einer Szene angezeigt werden. Um solche AR-Inhalte korrekt anzuzeigen, kann die Position der Kamera relativ zur Szene und zu Objekten in der Szene, auf denen AR-Inhalte angezeigt werden sollen, ermittelt und erfasst werden, während sich die Kamera bewegt. Ein Modell eines Objekts in der Szene kann durch 3D-Rekonstruktion von Bildern oder des Video-Streams erzeugt werden, um eine 3D-Punktwolke des Objekts zu erzeugen. Die 3D-Punktwolke kann für Erfassen in AR-Anwendungen verwendet werden, indem Punkte aus der Wolke mit Bereichen im Live-Video in Übereinstimmung gebracht werden.
-
Ein erzeugtes 3D-Modell, das eine 3D-Punktwolke aufweist, kann in der Regel nicht unverändert verwendet werden, da die Punktwolke Punkte enthalten kann, die sich auf dem Hintergrund der Szene und nicht auf dem zu erfassenden Objekt befinden. Eine Form des „Bereinigens“ des Bildes oder des Video-Streams kann angewandt werden, um den Hintergrund zu entfernen oder um die Punkte in Punkte zu segmentieren, die Teil des zu erfassenden Objekts sind, und Punkte, die nicht dazu gehören. Ausführungsformen der vorliegenden Systeme und Verfahren können eine solche Bereinigung automatisch durchführen, indem sie die Punkte in Punkte, die Teil des zu erfassenden Objekts sind, und in Punkte, die nicht dazugehören, segmentieren. Eine solche automatische Segmentierung kann eine höhere Leistung bereitstellen.
-
Beispielsweise können Ausführungsformen ein Verfahren zur schrittweisen Segmentierung einer 3D-Punktwolke in Objekt und Hintergrund bereitstellen. Ausführungsformen können Erfassungssitzungen verwenden, um Punkte schrittweise Objekt- und Hintergrundklassen zuzuordnen. Ausführungsformen können anstelle einer binären Segmentierung eine unscharfe Segmentierung verwenden, und die Segmentierung kann als „Nebeneffekt“ des Erfassungsprozesses betrachtet werden. Ein 3D-Punkt, der viele Übereinstimmungen mit Pixeln im Video hat, wird als innenliegender Punkt für das Erfassen des Objekts im Zeitverlauf betrachtet und ist mit höherer Wahrscheinlichkeit Teil des Objekts, während ein 3D-Punkt, der nur wenige Übereinstimmungen mit Pixeln im Video hat, mit höherer Wahrscheinlichkeit Teil des Hintergrunds ist. Vorteile dieses Ansatzes können ein besseres Erkennen und Erfassen von Objekten ermöglichen, wenn Objekte in verschiedenen Umgebungen neu positioniert werden, und können weiterhin umfassen, dass keine manuelle Arbeit für die Segmentierung erforderlich ist und die Ergebnisse im Laufe der Zeit ständig verbessert werden können, wenn das Objekt in mehreren Umgebungen erfasst wird.
-
Ein beispielhaftes System 100, in dem Ausführungsformen der vorliegenden Systeme und Verfahren implementiert werden können, ist in 1 dargestellt. Wie im Beispiel von 1 dargestellt ist, kann das System 100 eine Plattform 101 umfassen, die eine Kamera sein oder eine Kamera umfassen kann, um Videobilder eines dreidimensionalen (3D) Objekts 104 aufzuzeichnen, während sich die Kamera durch eine Mehrzahl von Blickpunkten 102A bis H bewegt, um einen Video-Stream 103 zu bilden. Die Plattform 101 kann sich entlang eines Pfades oder einer Bewegungsbahn 108 bewegen. Der Video-Stream 103 kann an das Bildverarbeitungssystem 106 übertragen werden, in dem Prozesse, die in Ausführungsformen der vorliegenden Systeme und Verfahren enthalten sind, implementiert werden können. Zum Beispiel kann das Bildverarbeitungssystem 106 eine 3D-Rekonstruktion durchführen, indem es gemäß Ausführungsformen der vorliegenden Systeme und Verfahren eine 3D-Punktwolke der Szene und/oder der Objekte in der Szene erzeugt. Ein Beispiel für ein solches Modell 300 eines Objekts ist in 3 dargestellt. Nachdem eine 3D-Punktwolke der Szene einschließlich des Modells 300 erzeugt wurde, können die Punkte in der 3D-Punktwolke in Punkte 302, die sich in dem durch das Modell 300 dargestellten Objekt befinden, und Punkte 304, die zum Hintergrund gehören, segmentiert werden.
-
Eine Ausführungsform eines Prozesses 200 für die Funktionsweise von Ausführungsformen der vorliegenden Systeme und Verfahren ist in 2 dargestellt. Der Prozess 200 beginnt bei 202, wo eine 3D-Punktwolke erzeugt werden kann. Beispielsweise kann der Video-Stream 103 empfangen und eine 3D-Punktwolke für ein Modell eines Objekts aus dem Video-Stream 103 mit n Punkten rekonstruiert werden. Jedem Punkt kann eine Wahrscheinlichkeit, Teil eines Objekts in einer Szene im Video-Stream 103 zu sein, zugewiesen werden. In Ausführungsformen einer unscharfen Segmentierung kann jedem Punkt i in der 3D-Punktwolke eine Wahrscheinlichkeit, bezeichnet als pi, zugewiesen werden, zu einem Objekt zu gehören. Dann ist 1-pi is, die Wahrscheinlichkeit, zum Hintergrund zu gehören. Die Wahrscheinlichkeit pi of, dass der Punkt i Teil eines Objekts ist, kann z.B. mit 50 % initialisiert werden. Die Wahrscheinlichkeiten aller Punkte in der Punktwolke können zu einem Vektor zusammengefasst werden. Bei 204 kann bei einer Punktwolke und einem Wahrscheinlichkeitsvektor P=[p0, p1...pn] eine Segmentierung durchgeführt werden, indem alle Punkte mit pi > 7, einem Schwellenwert, als zum Objekt gehörend betrachtet werden.
-
Um die Punktwolke für das Erfassen in einer Augmented-Reality-Sitzung (AR-Sitzung) zu verwenden, können bei 206 jedem Punkt einige Deskriptoren für sein visuelles Erscheinungsbild aus verschiedenen Blickwinkeln zugewiesen werden. Der Deskriptor kann anhand des Videos berechnet werden, das zur Rekonstruktion der Punktwolke verwendet wird. Bei 208 kann die 3D-Punktwolke dazu verwendet werden, ein Modell eines Objekts in einer AR-Sitzung zu erfassen. Wie in 4 dargestellt, kann der Erfasser 404 für jedes Bild 402 unter Verwendung der Segmentierungsinformationen 408 die Position 406 der Kamera in Bezug auf das Modell 410 schätzen, und anhand des Deskriptors der Punkte kann eine Übereinstimmung mit Punkten im AR-Video-Stream 103 berechnet werden. Eine Schätzung kann beispielsweise auf übereinstimmenden visuellen Deskriptoren beruhen, z.B. der skaleninvarianten Merkmalstransformation (scale-invariant feature transform - SIFT), die 3D-Punkte Bildpunkten zuordnen kann. Eine Segmentierung kann für ein Auswählen der zu berücksichtigenden 3D-Punkte verwendet werden. Zum Beispiel kann das Erfassen nur mit Punkten erfolgen, bei denen pi > T ist. Oder das Erfassen kann z.B. anhand von Stichprobenpunkten auf der Grundlage ihrer Wahrscheinlichkeit erfolgen. Das Ergebnis des Erfassens kann die Objektposition im Video-Stream 103 sein, da der Erfasser die geschätzte Kameraposition ausgeben kann. Übereinstimmungen, die die geschätzte Position unterstützen, können für die Position als innenliegend betrachtet werden, während die anderen Übereinstimmungen als außenliegend betrachtet werden können.
-
Bei 210 kann für die 3D-Punkte, die zu innenliegenden Übereinstimmungen gehören, der pi-Wert erhöht werden, während für Punkte, die zu außenliegenden Übereinstimmungen gehören, der pi-Wert verringert werden kann. Bei 212 werden die pi-Werte im Laufe der Zeit durch den Prozess so festgelegt, dass Punkte, die zum Objekt gehören, hohe pi-Werte haben können, während Hintergrundpunkte niedrige pi-Werte haben können. Bei 214 kann die ermittelte Segmentierung aktualisiert werden, um die Segmentierung zu verbessern. In Ausführungsformen kann die 3D-2D-Übereinstimmungsstatistik, bei der es sich um interne Daten im Erfasser handeln kann, zum Verbessern der Segmentierung verwendet werden. So können beispielsweise die 3D-Punkte, die zum Objektsegment gehören, als in der Regel „richtig“ und die Punkte, die zum Hintergrund gehören, als „schlecht“ übereinstimmend betrachtet werden. Wie in 5 dargestellt, kann in Ausführungsformen der Modellerfasser 502 für jeden Punkt seinen Übereinstimmungsfehler 504 ausgeben und angeben, ob er zur Positionsschätzung beigetragen hat (innenliegend-außenliegend). Das heißt, der Modellerfasser 502 kann anzeigen, welche Punkte tatsächlich für das Erfassen verwendet wurden (innenliegende Punkte) und welche nicht (außenliegende Punkte). Die Segmentierungsaktualisierung 506 kann die aktuelle Segmentierung 508 aktualisieren, indem sie den pi-Wert für innenliegende Punkte erhöht und den pi-Wert für außenliegende Punkte verringert, und dies kann verwendet werden, um die Segmentierungsinformationen 510 zu aktualisieren, die dann für den Modellerfasser 502 verwendet werden können. So können Informationen darüber, welche Punkte tatsächlich für das Erfassen verwendet wurden und welche nicht, zum Aktualisieren der Segmentierung verwendet werden, die dann zur Verbesserung des Erfassens verwendet werden kann.
-
Ein beispielhaftes Blockschaubild eines Computersystems 600, in dem Prozesse implementiert werden können, die in den hierin beschriebenen Ausführungsformen enthalten sind, wird in 6 gezeigt. Das Computersystem 600 kann unter Verwendung eines oder mehrerer programmierter Universalcomputersysteme wie eingebettete Prozessoren, Systeme auf einem Chip, Personal Computer, Workstations, Serversysteme und Minicomputer oder Großrechner oder in verteilten, vernetzten Datenverarbeitungsumgebungen implementiert werden. Das Computersystem 600 kann einen oder mehrere Prozessoren (CPUs) 602A bis N, die Eingabe/Ausgabe-Schaltung 604, den Netzwerkadapter 606 und den Speicher 608 enthalten. Die CPUs 602A bis N führen Programmanweisungen aus, um die Funktionen der vorliegenden Datenübertragungssysteme und -verfahren durchzuführen. Bei den CPUs 602A bis N handelt es sich in der Regel um einen oder mehrere Mikroprozessoren wie einen INTEL CORE®-Prozessor. 6 veranschaulicht eine Ausführungsform, bei der das Computersystem 600 als ein einzelnes Multiprozessor-Computersystem implementiert ist, in dem mehrere Prozessoren 602A bis N gemeinsam Systemressourcen wie den Speicher 608, die Eingabe/Ausgabe-Schaltung 604 und den Netzwerkadapter 606 nutzen. Die vorliegenden Datenübertragungssysteme und -verfahren umfassen jedoch auch Ausführungsformen, bei denen das Computersystem 600 als eine Mehrzahl von vernetzten Computersystemen implementiert ist, bei denen es sich um Einzelprozessor-Computersysteme, Multiprozessor-Computersysteme oder eine Mischung daraus handeln kann.
-
Die Eingabe/Ausgabe-Schaltung 604 stellt die Funktionalität bereit, Daten in das Computersystem 600 einzugeben oder aus dem Computersystem 600 auszugeben. Die Eingabe/Ausgabe-Schaltung kann Eingabeeinheiten wie Tastaturen, Mäuse, Touchpads, Trackballs, Scanner, Analog-Digital-Wandler usw., Ausgabeeinheiten wie Videoadapter, Monitore, Drucker usw. und Eingabe/Ausgabe-Einheiten wie Modems usw. umfassen. Der Netzwerkadapter 606 verbindet die Einheit 600 mit einem Netzwerk 610. Bei dem Netzwerk 610 kann es sich um ein öffentliches oder proprietäres LAN oder WAN handeln, das das Internet umfassen kann, ohne darauf beschränkt zu sein.
-
Der Speicher 608 speichert Programmanweisungen, die von der CPU 602 ausgeführt werden, sowie Daten, die von der CPU 602 verwendet und verarbeitet werden, um die Funktionen des Computersystems 600 durchzuführen. Der Speicher 608 kann zum Beispiel elektronische Speichereinheiten wie einen Direktzugriffsspeicher (RAM), einen Nur-Lese-Speicher (ROM), einen programmierbaren Nur-Lese-Speicher (PROM), einen elektrisch löschbaren programmierbaren Nur-Lese-Speicher (EEPROM), einen Flash-Speicher usw. sowie einen elektromechanischen Speicher wie Magnetplattenlaufwerke, Bandlaufwerke, optische Plattenlaufwerke usw. umfassen, die eine Schnittstelle für integrierte Laufwerkselektronik (IDE) oder eine Variation oder Verbesserung davon wie Enhanced IDE (EIDE) oder Ultra-Direkt-Speicherzugriff (UDMA), oder eine auf Small Computer System Interface (SCSI) beruhende Schnittstelle oder eine Variation oder Verbesserung davon wie Fast-SCSI, Wide-SCSI, Fast and Wide-SCSI usw., oder Serial Advanced Technology Attachment (SATA) oder eine Variation oder Verbesserung davon, oder eine Fibre Channel-Arbitrated Loop (FC-AL)-Schnittstelle verwenden können.
-
Der Inhalt des Speichers 608 kann je nach der Funktion, für deren Durchführen das Computersystem 600 programmiert ist, variieren. In dem in 6 gezeigten Beispiel werden beispielhafte Speicherinhalte veranschaulicht, die Routinen und Daten für Ausführungsformen der vorstehend beschriebenen Prozesse darstellen. Für den Fachmann ist jedoch offensichtlich, dass diese Routinen zusammen mit den Speicherinhalten in Verbindung mit diesen Routinen nicht in einem System oder einer Einheit enthalten sein können, sondern auf Grundlage von bekannten technischen Überlegungen unter einer Mehrzahl von Systemen oder Einheiten verteilt sein können. Die vorliegenden Datenübertragungssysteme und -verfahren können beliebige und alle diese Anordnungen enthalten.
-
In dem in 6 gezeigten Beispiel kann der Speicher 608 die Punktwolken-Erzeugungsroutinen 612, die Segmentierungsermittlungsroutinen 614, die Erfassungsroutinen 616, die Segmentierungsaktualisierung 618, die Video-Stream-Bilddaten 620 und das Betriebssystem 622 umfassen. Die Punktwolkenroutinen 612 können Softwareroutinen umfassen, um eine 3D-Punktwolke für ein Modell eines Objekts zu erzeugen, das aus Video-Stream-Bilddaten 620 rekonstruiert werden kann, das Wahrscheinlichkeiten zuweisen kann, dass jeder Punkt in der Punktwolke Teil des Objekts ist, und das Deskriptoren des visuellen Erscheinungsbildes aus verschiedenen Blickwinkeln zuweisen kann. Die Segmentierungsermittlungsroutinen 614 können Softwareroutinen umfassen, um auf der Grundlage der von den Erfassungsroutinen 616 empfangenen Informationen Wahrscheinlichkeiten, dass jeder Punkt Teil eines Objekts ist, zu ermitteln und zu aktualisieren. Die Erfassungsroutinen 616 können Softwareroutinen umfassen, um die Objektposition in den Video-Stream-Bilddaten 620 zu erfassen und die geschätzte Kameraposition sowie Informationen auszugeben, die angeben, ob jeder Punkt zum Erfassen des Objekts verwendet wurde, was von den Segmentierungsermittlungsroutinen 614 verwendet werden kann, um Wahrscheinlichkeiten, dass jeder Punkt Teil eines Objekts ist, zu ermitteln und zu aktualisieren. Das Betriebssystem 634 kann die gesamte Systemfunktionalität bereitstellen.
-
Wie in 6 gezeigt, können die vorliegenden Datenübertragungssysteme und Verfahren eine Implementierung auf einem System oder Systemen enthalten, die eine Multiprozessor-, Multitasking-, Multiprozess- und/oder Multi-Thread-Datenverarbeitung bereitstellen, sowie eine Implementierung auf Systemen, die eine Einzelprozessor-, Einzel-Thread-Datenverarbeitung bereitstellen. Die Multiprozessor-Datenverarbeitung umfasst ein Durchführen von Datenverarbeitung unter Verwendung von mehr als einem Prozessor. Die Multi-Tasking-Datenverarbeitung umfasst ein Durchführen von Datenverarbeitung unter Verwendung von mehr als einer Betriebssystemaufgabe. Bei einer Aufgabe (task) handelt es sich um ein Betriebssystemkonzept, das sich auf die Kombination eines ausgeführten Programms und der vom Betriebssystem verwendeten Buchhaltungsinformationen bezieht. Immer wenn ein Programm ausgeführt wird, erzeugt das Betriebssystem eine neue Aufgabe für das Programm. Die Aufgabe ist insofern wie eine Verpackung für das Programm, als sie das Programm mit einer Aufgabennummer kennzeichnet und andere Buchhaltungsinformationen anhängt. Viele Betriebssysteme, darunter Linux, UNIX®, OS/2® und Windows®, sind in der Lage, viele Aufgaben gleichzeitig auszuführen, und werden als Multitasking-Betriebssysteme bezeichnet. Bei Multitasking handelt es sich um die Fähigkeit eines Betriebssystems, mehr als eine ausführbare Funktion gleichzeitig durchzuführen. Jede ausführbare Funktion wird in einem eigenen Adressraum ausgeführt, was bedeutet, dass die ausführbaren Funktionen keine Möglichkeit haben, ihren Speicher gemeinsam zu nutzen. Dies hat Vorteile, da es unmöglich ist, dass ein Programm die Ausführung eines der anderen auf dem System ausgeführten Programme beschädigt. Die Programme haben jedoch keine Möglichkeit, Informationen auszutauschen, außer über das Betriebssystem (oder durch Lesen von Dateien, die auf dem Dateisystem gespeichert sind). Multiprozess-Datenverarbeitung ähnelt der Multitasking-Datenverarbeitung, da die Begriffe Aufgabe und Prozess oft austauschbar verwendet werden, obwohl einige Betriebssysteme einen Unterschied zwischen beiden machen.
-
Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt auf jedem möglichen technischen Detaillierungsgrad der Integration handeln. Das Computerprogrammprodukt kann (ein) durch einen Computer lesbare(s) Speichermedium (oder -medien) umfassen, auf dem/denen durch einen Computer lesbare Programmanweisungen gespeichert ist/sind, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
-
Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch eine Einheit zur Ausführung von Anweisungen behalten und speichern kann.
-
Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die Folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder gehobene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. einen Lichtwellenleiter durchlaufende Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
-
Hierin beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs/Verarbeitungs-Einheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetzwerk und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Router, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs/Verarbeitungs-Einheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs/Verarbeitungs-Einheit weiter.
-
Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten, Konfigurationsdaten für integrierte Schaltungen oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o. ä. sowie prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, vor Ort programmierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
-
Aspekte der vorliegenden Erfindung sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern bzw. Schaubildern mittels durch einen Computer lesbare Programmanweisungen ausgeführt werden können.
-
Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, sodass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, einen Herstellungsartikel aufweist, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder bzw. Schaubilder angegebenen Funktion/Schritts umsetzen.
-
Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, sodass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte umsetzen.
-
Die Ablaufpläne und die Blockschaltbilder bzw. Schaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaltbildern bzw. Schaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Ausführungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaltbilder bzw. Schaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern bzw. Schaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.