DE102022123680A1 - Objektposenschätzung - Google Patents

Objektposenschätzung Download PDF

Info

Publication number
DE102022123680A1
DE102022123680A1 DE102022123680.3A DE102022123680A DE102022123680A1 DE 102022123680 A1 DE102022123680 A1 DE 102022123680A1 DE 102022123680 A DE102022123680 A DE 102022123680A DE 102022123680 A1 DE102022123680 A1 DE 102022123680A1
Authority
DE
Germany
Prior art keywords
cameras
vehicle
camera
image
pose
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
DE102022123680.3A
Other languages
English (en)
Inventor
Punarjay Chakravarty
Shubham Shrivastava
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.)
Ford Global Technologies LLC
Original Assignee
Ford Global Technologies LLC
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 Ford Global Technologies LLC filed Critical Ford Global Technologies LLC
Publication of DE102022123680A1 publication Critical patent/DE102022123680A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • G06T3/4038Image mosaicing, e.g. composing plane images from plane sub-images
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0231Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means
    • G05D1/0246Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means using a video camera in combination with image processing means
    • G05D1/0251Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means using a video camera in combination with image processing means extracting 3D information from a plurality of images taken from different locations, e.g. stereo vision
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0276Control of position or course in two dimensions specially adapted to land vehicles using signals provided by a source external to the vehicle
    • G05D1/028Control of position or course in two dimensions specially adapted to land vehicles using signals provided by a source external to the vehicle using a RF signal
    • G05D1/0282Control of position or course in two dimensions specially adapted to land vehicles using signals provided by a source external to the vehicle using a RF signal generated in a local control room
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/20Control system inputs
    • G05D1/24Arrangements for determining position or orientation
    • G05D1/243Means capturing signals occurring naturally from the environment, e.g. ambient optical, acoustic, gravitational or magnetic signals
    • G05D1/2435Extracting 3D information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/0895Weakly supervised learning, e.g. semi-supervised or self-supervised learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/01Probabilistic graphical models, e.g. probabilistic networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/18Image warping, e.g. rearranging pixels individually
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Computational Linguistics (AREA)
  • Biomedical Technology (AREA)
  • Aviation & Aerospace Engineering (AREA)
  • Remote Sensing (AREA)
  • Molecular Biology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Automation & Control Theory (AREA)
  • Multimedia (AREA)
  • Electromagnetism (AREA)
  • Probability & Statistics with Applications (AREA)
  • Algebra (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Image Analysis (AREA)

Abstract

Eine Vielzahl von virtuellen dreidimensionalen (3D-)Punkten, die auf einer 3D-Referenzebene für ein Kamera-Array verteilt ist, das eine Vielzahl von Kameras beinhaltet, wird zufällig ausgewählt. Die Vielzahl von Kameras beinhaltet eine Host-Kamera und eine oder mehrere zusätzliche Kameras. Es werden jeweilige zweidimensionale (2D-)Projektionen der Vielzahl von virtuellen 3D-Punkten für die Vielzahl von Kameras auf Grundlage jeweiliger Posen der Kameras bestimmt. Für die jeweilige eine zusätzliche oder die jeweiligen mehreren zusätzlichen Kameras werden jeweilige Homographiematrizen auf Grundlage der 2D-Projektionen für die jeweilige Kamera und der 2D-Proj ektionen für die Host-Kamera bestimmt. Die jeweiligen Homographiematrizen bilden die 2D-Proj ektionen für die jeweilige Kamera auf die 2D-Projektionen für die Host-Kamera ab. Ein zusammengesetztes Bild wird auf Grundlage jeweiliger Bilder, die durch die Vielzahl von Kameras aufgenommen werden, und der jeweiligen Homographiematrizen generiert.

Description

  • GEBIET DER TECHNIK
  • Die Offenbarung betrifft tiefe neuronale Netze in einem Fahrzeug.
  • ALLGEMEINER STAND DER TECHNIK
  • Tiefe neuronale Netze können trainiert werden, um eine Vielfalt von Rechenaufgaben durchzuführen. Zum Beispiel können neuronale Netze dazu trainiert werden, Daten aus Bildern zu extrahieren. Daten, die durch tiefe neuronale Netze aus Bildern extrahiert werden, können durch Rechenvorrichtungen verwendet werden, um Systeme, einschließlich Fahrzeugen, Robotern, Sicherheit, Produktfertigung und Produktverfolgung, zu betreiben. Bilder können durch Sensoren erfasst werden, die in einem System eingeschlossen sind, und unter Verwendung von tiefen neuronalen Netzen verarbeitet werden, um Daten bezüglich Objekten in einer Umgebung um ein System zu bestimmen. Der Betrieb eines Systems kann durch Erfassen genauer und aktueller Daten bezüglich Objekten in einer Systemumgebung unterstützt werden.
  • KURZDARSTELLUNG
  • Ein tiefes neuronales Netz (deep neural network - DNN) kann trainiert werden, um Objekte in Bilddaten zu bestimmen, die von Sensoren unter Verwendung eines Trainingsdatensatzes für Systeme, einschließlich Fahrzeugführung, Roboterbetrieb, Sicherheit, Fertigung und Produktverfolgung, erfasst werden. Die Fahrzeugführung kann einen Betrieb von Fahrzeugen in einem autonomen oder teilautonomen Modus beinhalten. Die Roboterführung kann Führen eines Roboterendeffektors, zum Beispiel eines Greifers, beinhalten, um ein Teil aufzunehmen und das Teil zur Montage auszurichten. Sicherheitssysteme beinhalten Merkmale, bei denen ein Computer Videodaten von einer Kamera erfasst, die einen sicheren Bereich beobachtet, um einen Zugriff für autorisierte Benutzer bereitzustellen und nicht autorisierten Zugang zu detektieren. Sicherheitssysteme können außerdem einem autorisierten Benutzer Zugriff auf zum Beispiel eine Rechenvorrichtung oder ein Mobiltelefon bereitstellen. In einem Fertigungssystem kann ein DNN in einem Computer einen unerwünschten Betrieb von Maschinen in einem Fertigungsvorgang detektieren, indem zum Beispiel eine Position der Hände einer Person zu einem konkreten Zeitpunkt in Bezug auf einen Maschinenbetriebszyklus bestimmt wird. In einem Produktverfolgungssystem kann ein tiefes neuronales Netz detektieren, dass eine Person ein Objekt aus einem Regal entfernt und in einen Einkaufswagen legt, und der Person zum Beispiel automatisch eine Gebühr für das Objekt in Rechnung stellen. Andere Produktverfolgungssysteme beinhalten zum Beispiel Paketsortierung für den Versand.
  • Die Fahrzeugführung wird in dieser Schrift als nicht einschränkendes Beispiel für die Verwendung eines DNN zum Detektieren von Objekten, zum Beispiel Fahrzeugen, beschrieben. Zum Beispiel kann eine Rechenvorrichtung in einem Verkehrsinfrastruktursystem dazu programmiert sein, Daten bezüglich ihrer Umgebung zu erfassen und um Objekte in den Daten unter Verwendung eines DNN zu detektieren. Die Daten können Bilddaten, die von einer Standbild- oder Videokamera erfasst wurden, und Entfernungsdaten, die von einem Entfernungssensor, einschließlich eines Lidarsensors, erfasst wurden, beinhalten. Ein DNN kann trainiert werden, um Objekte in den Bilddaten oder Entfernungsdaten zu beschriften und zu lokalisieren. Eine Rechenvorrichtung, die in einem Verkehrsinfrastruktursystem eingeschlossen ist, kann die Identität und Position der detektierten Objekte verwenden, um einen Fahrzeugpfad zu bestimmen, auf dem ein Fahrzeug in einem autonomen oder teilautonomen Modus betrieben werden soll. Ein Fahrzeug kann auf Grundlage eines Fahrzeugpfades betrieben werden, indem Befehle bestimmt werden, welche die Antriebsstrang-, Brems- und Lenkungskomponenten des Fahrzeugs anweisen, das Fahrzeug so zu betreiben, dass es den Pfad entlangfährt.
  • Jedoch weisen Bilddaten von einer Kamera einer Vielzahl von Kameras in dem Verkehrsinfrastruktursystem unter Umständen nicht ausreichend Daten über ein detektiertes Fahrzeug auf, um eine Ausrichtung des detektierten Fahrzeugs angemessen zu bestimmen. Zum Beispiel können die Bilddaten von der einen Kamera einen Abschnitt des detektierten Fahrzeugs beinhalten. In dieser Situation kann eine Vielzahl von Ausrichtungen für das Fahrzeug dem detektierten Abschnitt des Fahrzeugs in den Bilddaten von der einen Kamera entsprechen. In dieser Schrift erörterte Techniken verbessern eine Bestimmung der Ausrichtung eines detektierten Fahrzeugs durch Erfassen jeweiliger Bilddaten des Fahrzeugs von der Vielzahl von Kameras und Generieren eines zusammengesetzten Bildes aus der Vielzahl von Bildern auf Grundlage jeweiliger Homographiematrizen zwischen einer Host-Kamera und zusätzlichen Kameras in der Vielzahl von Kameras.
  • Ein System beinhaltet einen Computer, der einen Prozessor und einen Speicher beinhaltet, wobei auf dem Speicher Anweisungen gespeichert sind, die durch den Prozessor ausführbar sind, um eine Vielzahl von virtuellen dreidimensionalen (3D-)Punkten, die auf einer 3D-Referenzebene verteilt sind, für ein Kamera-Array, das eine Vielzahl von Kameras beinhaltet, zufällig auszuwählen. Die Vielzahl von Kameras beinhaltet eine Host-Kamera und eine oder mehrere zusätzliche Kameras. Die Anweisungen beinhalten ferner Anweisungen zum Bestimmen jeweiliger zweidimensionaler (2D-)Projektionen der Vielzahl von virtuellen 3D-Punkten für die Vielzahl von Kameras auf Grundlage jeweiliger Posen der Kameras. Die Anweisungen beinhalten ferner Anweisungen zum Bestimmen, für die jeweilige eine zusätzliche oder die jeweiligen mehreren zusätzlichen Kameras, jeweiliger Homographiematrizen auf Grundlage der 2D-Projektionen für die jeweilige Kamera und der 2D-Projektionen für die Host-Kamera. Die jeweiligen Homographiematrizen bilden die 2D-Projektionen für die jeweilige Kamera auf die 2D-Projektionen für die Host-Kamera ab. Die Anweisungen beinhalten ferner Anweisungen zum Generieren eines zusammengesetzten Bildes auf Grundlage jeweiliger Bilder, die durch die Vielzahl von Kameras aufgenommen werden, und der jeweilige Homographiematrizen.
  • Die Anweisungen können ferner Anweisungen zum Eingeben des zusammengesetzten Bildes in ein neuronales Netz, das eine Pose eines Objekts ausgibt, das in dem zusammengesetzten Bild eingeschlossen ist, beinhalten.
  • Die Pose des Objekts kann in Koordinaten eines realen Koordinatensystems auf Grundlage einer orthogonalen x-, y- und z-Achse und einer Gierdrehung um die z-Achse bestimmt werden.
  • Bei dem Objekt kann es sich um ein Fahrzeug handeln. Die Anweisungen können ferner Anweisungen zum Generieren eines Pfades für das Fahrzeug auf Grundlage der bestimmten Pose beinhalten. Die Anweisungen können ferner Anweisungen zum Betreiben des Fahrzeugs entlang des generierten Pfades beinhalten.
  • Die Anweisungen können ferner Anweisungen zum Bestimmen einer ersten 2D-Silhouette des Objekts auf Grundlage von Eingeben der Pose des Objekts und eines 3D-Modells des Objekts in ein Silhouettenrendering-Programm beinhalten. Die Anweisungen können ferner Anweisungen zum Bestimmen einer zweiten 2D-Silhouette des Objekts auf Grundlage des zusammengesetzten Bildes beinhalten. Die Anweisungen können ferner Anweisungen zum Trainieren des neuronalen Netzes auf Grundlage eines Unterschieds zwischen der ersten 2D-Silhouette und der zweiten 2D-Silhouette beinhalten.
  • Die Anweisungen können ferner Anweisungen zum Bestimmen jeweiliger Posen der Vielzahl von Kameras auf Grundlage von Kalibrierungsbildern, die von den jeweiligen Kameras aufgenommen werden und eine Passermarke beinhalten, beinhalten.
  • Die Posen der jeweiligen Kameras können in Koordinaten eines realen Koordinatensystems auf Grundlage einer orthogonalen x-, y- und z-Achse und jeweils einer Roll-, Nick- und Gierdrehung um die x-, y- und z-Achse bestimmt werden.
  • Die Anweisungen können ferner Anweisungen zum Bestimmen von Aktualisierungsposen für jeweilige Kameras auf Grundlage eines Neuproj ektionsfehlers in dem zusammengesetzten Bild beinhalten.
  • Die 3D-Referenzebene kann durch eines von einer Bodenfläche oder einer Fläche eines Objekts definiert sein.
  • Die Bilder können zeitsynchronisiert sein.
  • Bei der Vielzahl von Kameras kann es sich um Rot-Grün-Blau-Tiefenkameras (RGB-D-Kameras) handeln.
  • Ein Verfahren beinhaltet zufälliges Auswählen einer Vielzahl von virtuellen dreidimensionalen (3D-)Punkten, die auf einer 3D-Referenzebene für ein Kamera-Array verteilt ist, das eine Vielzahl von Kameras beinhaltet. Die Vielzahl von Kameras beinhaltet eine Host-Kamera und eine oder mehrere zusätzliche Kameras. Das Verfahren beinhaltet ferner Bestimmen jeweiliger zweidimensionaler (2D-)Projektionen der Vielzahl von virtuellen 3D-Punkten für die Vielzahl von Kameras auf Grundlage jeweiliger Posen der Kameras. Das Verfahren beinhaltet ferner Bestimmen, für die jeweilige eine zusätzliche oder die jeweiligen mehreren zusätzlichen Kameras, jeweiliger Homographiematrizen auf Grundlage der 2D-Projektionen für die jeweilige Kamera und der 2D-Projektionen für die Host-Kamera. Die jeweiligen Homographiematrizen bilden die 2D-Projektionen für die jeweilige Kamera auf die 2D-Projektionen für die Host-Kamera ab. Das Verfahren beinhaltet ferner Generieren eines zusammengesetzten Bildes auf Grundlage jeweiliger Bilder, die durch die Vielzahl von Kameras aufgenommen werden, und der jeweilige Homographiematrizen.
  • Das Verfahren kann ferner Eingeben des zusammengesetzten Bildes in ein neuronales Netz, das eine Pose eines Objekts ausgibt, das in dem zusammengesetzten Bild eingeschlossen ist, beinhalten.
  • Die Pose des Objekts kann in Koordinaten eines realen Koordinatensystems auf Grundlage einer orthogonalen x-, y- und z-Achse und einer Gierdrehung um die z-Achse bestimmt werden.
  • Bei dem Objekt kann es sich um ein Fahrzeug handeln. Das Verfahren kann ferner Generieren eines Pfades für das Fahrzeug auf Grundlage der bestimmten Pose beinhalten. Das Verfahren kann ferner Betreiben des Fahrzeugs entlang des generierten Pfades beinhalten.
  • Das Verfahren kann ferner Bestimmen einer ersten 2D-Silhouette des Objekts auf Grundlage von Eingeben der Pose des Objekts und eines 3D-Modells des Objekts in ein Silhouettenrendering-Programm beinhalten. Das Verfahren kann ferner Bestimmen einer zweiten 2D-Silhouette des Objekts auf Grundlage des zusammengesetzten Bildes beinhalten. Das Verfahren kann ferner Trainieren des neuronalen Netzes auf Grundlage eines Unterschieds zwischen der ersten 2D-Silhouette und der zweiten 2D-Silhouette beinhalten.
  • Das Verfahren kann ferner Bestimmen jeweiliger Posen der Vielzahl von Kameras auf Grundlage von Kalibrierungsbildern, die von den jeweiligen Kameras aufgenommen werden und eine Passermarke beinhalten, beinhalten.
  • Die Posen der jeweiligen Kameras können in Koordinaten eines realen Koordinatensystems auf Grundlage einer orthogonalen x-, y- und z-Achse und jeweils einer Roll-, Nick- und Gierdrehung um die x-, y- und z-Achse bestimmt werden.
  • Das Verfahren kann ferner Bestimmen von aktualisierten Posen für jeweilige Kameras auf Grundlage eines Neuprojektionsfehlers in dem zusammengesetzten Bild beinhalten.
  • Ferner ist in dieser Schrift eine Rechenvorrichtung offenbart, die dazu programmiert ist, beliebige der vorstehenden Verfahrensschritte auszuführen. Weiterhin ist in dieser Schrift ein Computerprogrammprodukt offenbart, das ein computerlesbares Medium beinhaltet, auf dem Anweisungen gespeichert sind, die durch einen Computerprozessor ausführbar sind, um beliebige der vorstehenden Verfahrensschritte auszuführen.
  • Figurenliste
    • 1 ist ein Blockdiagramm eines beispielhaften Verkehrsinfrastruktursystems.
    • 2 ist eine grafische Darstellung eines beispielhaften Betriebsbereichs.
    • 3 ist eine grafische Darstellung von drei beispielhaften Bildern eines Kalibrierungsfahrzeugs.
    • 4 ist eine grafische Darstellung eines beispielhaften zweiten tiefen neuronalen Netzes, das verwendet wird, um eine Pose mit sechs Freiheitsgraden für eine Kamera zu bestimmen.
    • 5A und 5B sind grafische Darstellungen einer beispielhaften 3D-Referenzebene.
    • 6 ist eine grafische Darstellung einer Vielzahl von Bildern, die einen Abschnitt eines Fahrzeugs beinhaltet und durch jeweilige Kameras in einem Kamera-Array erfasst wurde.
    • 7 ist eine grafische Darstellung eines beispielhaften zusammengesetzten Bildes des Fahrzeugs, das aus der Vielzahl von Bildern aus 6 generiert wurde.
    • 8 ist eine grafische Darstellung eines beispielhaften ersten tiefen neuronalen Netzes, das verwendet wird, um eine Pose mit vier Freiheitsgraden eines Objekts zu bestimmen.
    • 9 ist eine grafische Darstellung eines beispielhaften dreidimensionalen Modells eines Fahrzeugs.
    • 10 ist eine grafische Darstellung eines beispielhaften computergestützten Konstruktionsmodells eines Fahrzeugs.
    • 11 ist eine grafische Darstellung eines beispielhaften selbstüberwachten Trainingssystems.
    • 12 ist ein Ablaufdiagramm eines beispielhaften Prozesses zum Generieren eines zusammengesetzten Bildes.
    • 13 ist ein Ablaufdiagramm eines beispielhaften Prozesses zum Trainieren eines tiefen neuronalen Netzes.
  • DETAILLIERTE BESCHREIBUNG
  • Unter Bezugnahme auf 1-11 beinhaltet ein beispielhaftes Verkehrsinfrastruktursystem 100 ein Fahrzeug 105, einen entfernten Servercomputer 140 und ein entferntes Kamera-Array 145, das eine Vielzahl von Kameras 150 beinhaltet, die dazu positioniert ist, jeweilige Bilder eines Betriebsbereichs 200 zu erlangen. Ein Fahrzeugcomputer 110 in dem Fahrzeug 105 ist dazu programmiert, das Fahrzeug 105 unter Verwendung einer Pose mit vier Freiheitsgraden (four degree-of-freedom - 4DoF) für das Fahrzeug 105 zu betreiben, die von dem entfernten Servercomputer 140 empfangen wird, wie nachstehend erörtert.
  • Um die 4DoF-Pose für das Fahrzeug 105 zu bestimmen, ist der entfernte Servercomputer 140 dazu programmiert, eine Vielzahl von virtuellen dreidimensionalen (3D-)Punkten 502, die auf einer 3D-Referenzebene 500 verteilt ist, für das entfernte Kamera-Array 145 zufällig auszuwählen. Die Vielzahl von Kameras 150 beinhaltet eine Host-Kamera 152 und eine oder mehrere zusätzliche Kameras 154. Der entfernte Servercomputer 140 ist ferner dazu programmiert, jeweilige dreidimensionale (2D-)Projektionen 612 der Vielzahl von virtuellen 3D-Punkten 502 für die Vielzahl von Kameras 150 auf Grundlage jeweiliger Posen der Kameras 150 zu bestimmen. Der entfernte Servercomputer 140 ist ferner dazu programmiert, für die jeweilige eine zusätzliche oder die jeweiligen mehreren zusätzlichen Kameras 154 jeweilige Homographiematrizen auf Grundlage der 2D-Projektionen 612 für die jeweilige zusätzliche Kamera 154 und der 2D-Proj ektionen 612 für die Host-Kamera 152 zu bestimmen. Die jeweiligen Homographiematrizen bilden die 2D-Projektionen 612 für die jeweilige zusätzliche Kamera 154 auf die 2D-Projektionen 612 für die Host-Kamera 152 ab. Der entfernte Servercomputer 140 ist ferner dazu programmiert, ein zusammengesetztes Bild 700 auf Grundlage der jeweiligen Bilder, die durch die Vielzahl von Kameras 150 aufgenommen werden, und der jeweilige Homographiematrizen zu generieren.
  • In dieser Schrift beschriebene Techniken können das zusammengesetzte Bild 700 aus einer Perspektive der Host-Kamera 152 generieren. Eine beliebige der Kameras 150 kann als die Host-Kamera 152 ausgewählt werden. Zum Beispiel kann der entfernte Servercomputer 140 nach dem Generieren eines zusammengesetzten Bildes 700 aus der Perspektive einer Kamera 150 eine andere Kamera 150 als die Host-Kamera 152 auswählen und ein nachfolgendes zusammengesetztes Bild 700 aus der Perspektive der anderen Kamera 150 generieren. Das heißt, der entfernte Servercomputer 140 kann eine Vielzahl von zusammengesetzten Bildern 700 aus jeweiligen Perspektiven der Vielzahl von Kameras 150 generieren.
  • Unter nunmehriger Bezugnahme auf 1 beinhaltet das Fahrzeug 105 den Fahrzeugcomputer 110, die Sensoren 115, Aktoren 120 zum Betätigen verschiedener Fahrzeugkomponenten 125 und ein Fahrzeugkommunikationsmodul 130. Das Kommunikationsmodul 130 ermöglicht es dem Fahrzeugcomputer 110, mit einem entfernten Servercomputer 140 und/oder anderen Fahrzeugen zu kommunizieren, z. B. über ein Nachrichten- oder Rundrufprotokoll, wie etwa dedizierte Nahbereichskommunikation (Dedicated Short Range Communications - DSRC), ein Mobilfunk- und/oder anderes Protokoll, das die Kommunikation von Fahrzeug zu Fahrzeug, von Fahrzeug zu Infrastruktur, von Fahrzeug zu Cloud oder dergleichen unterstützen kann, und/oder über ein Paketnetzwerk 135.
  • Der Fahrzeugcomputer 110 beinhaltet einen Prozessor und einen Speicher, wie sie bekannt sind. Der Speicher beinhaltet eine oder mehrere Formen computerlesbarer Medien und speichert Anweisungen, die durch den Fahrzeugcomputer 110 ausführbar sind, um verschiedene Vorgänge durchzuführen, einschließlich der in dieser Schrift offenbarten. Der Fahrzeugcomputer 110 kann ferner zwei oder mehr Rechenvorrichtungen beinhalten, die gemeinsam betrieben werden, um Vorgänge des Fahrzeugs auszuführen, einschließlich der in dieser Schrift beschriebenen. Ferner kann der Fahrzeugcomputer 110 ein Universalcomputer mit einem Prozessor und einem Speicher sein, wie vorstehend beschrieben, und/oder kann eine elektronische Steuereinheit (electronic control unit - ECU) oder eine elektronische Steuerung oder dergleichen für eine spezifische Funktion oder einen Satz von Funktionen beinhalten und/oder kann eine dedizierte elektronische Schaltung beinhalten, die eine ASIC beinhaltet, die für einen konkreten Vorgang hergestellt ist, z. B. eine ASIC zum Verarbeiten von Daten des Sensors und/oder Kommunizieren von Daten des Sensors 115. In einem weiteren Beispiel kann der Fahrzeugcomputer 110 ein FPGA (feldprogrammierbares Gate-Array) beinhalten, bei dem es sich um eine integrierte Schaltung handelt, die so hergestellt ist, dass sie durch einen Benutzer konfigurierbar ist. Typischerweise wird eine Hardware-Beschreibungssprache, wie etwa VHDL (Very High Speed Integrated Circuit Hardware Description Language - Hardware-Beschreibungssprache für integrierte Schaltungen mit sehr hoher Geschwindigkeit), in der elektronischen Konstruktionsautomatisierung verwendet, um digitale und Mischsignal-Systeme, wie etwa FPGA und ASIC, zu beschreiben. Zum Beispiel wird eine ASIC auf Grundlage von VHDL-Programmierung gefertigt, die vor der Fertigung bereitgestellt wird, wohingegen logische Komponenten innerhalb einer FPGA auf Grundlage von VHDL-Programmierung konfiguriert sein können, z. B. auf einem Speicher gespeichert, der elektrisch mit der FPGA-Schaltung verbunden ist. In einigen Beispielen kann eine Kombination aus (einem) Prozessor(en), (einer) ASIC(s) und/oder FPGA-Schaltungen in dem Fahrzeugcomputer 110 eingeschlossen sein.
  • Der Fahrzeugcomputer 110 kann das Fahrzeug 105 in einem autonomen Modus, einem teilautonomen Modus oder einem nicht autonomen (oder manuellen) Modus betreiben und/oder überwachen, d. h., er kann den Betrieb des Fahrzeugs 105 steuern und/oder überwachen, einschließlich Steuern und/oder Überwachen der Komponenten 125. Im Rahmen dieser Offenbarung ist ein autonomer Modus als einer definiert, bei dem jedes von Antrieb, Bremsung und Lenkung des Fahrzeugs 105 durch den Fahrzeugcomputer 110 gesteuert wird; in einem teilautonomen Modus steuert der Fahrzeugcomputer 110 eines oder zwei von Antrieb, Bremsung und Lenkung des Fahrzeugs 105; in einem nicht autonomen Modus steuert ein menschlicher Fahrzeugführer jedes von Antrieb, Bremsung und Lenkung des Fahrzeugs 105.
  • Der Fahrzeugcomputer 110 kann eine Programmierung beinhalten, um eines oder mehrere von Bremsen, Antrieb (z. B. Steuerung der Beschleunigung in dem Fahrzeug 105 durch Steuern eines oder mehrerer von einer Brennkraftmaschine, einem Elektromotor, einem Hybridmotor usw.), Lenkung, Getriebe, Klimatisierung, Innen- und/oder Außenbeleuchtung, Hupe, Türen usw. des Fahrzeugs 105 zu betreiben sowie um zu bestimmen, ob und wann der Fahrzeugcomputer 110 derartige Vorgänge anstelle eines menschlichen Fahrzeugführers steuern soll.
  • Der Fahrzeugcomputer 110 kann mehr als einen Prozessor, z. B. in elektronischen Steuereinheiten (ECUs) oder dergleichen eingeschlossen, die in dem Fahrzeug 105 eingeschlossen sind, beinhalten oder z. B. über ein Kommunikationsnetzwerk des Fahrzeugs, wie etwa einen Kommunikationsbus, wie nachstehend näher beschrieben, kommunikativ an diese gekoppelt sein, um verschiedene Fahrzeugkomponenten 125 zu überwachen und/oder zu steuern, z. B. eine Getriebesteuerung, eine Bremssteuerung, eine Lenksteuerung usw. Der Fahrzeugcomputer 110 ist im Allgemeinen zur Kommunikation in einem Fahrzeugkommunikationsnetzwerk angeordnet, das einen Bus in dem Fahrzeug 105, wie etwa ein Controller Area Network (CAN) oder dergleichen, und/oder andere drahtgebundene und/oder drahtlose Mechanismen beinhalten kann.
  • Der Fahrzeugcomputer 110 kann über das Netzwerk des Fahrzeugs 105 Nachrichten an verschiedene Vorrichtungen in dem Fahrzeug 105 übertragen und/oder Nachrichten (z. B. CAN-Nachrichten) von den verschiedenen Vorrichtungen, z. B. den Sensoren 115, Aktoren 120, ECUs usw., empfangen. Alternativ oder zusätzlich kann das Fahrzeugkommunikationsnetzwerk in Fällen, in denen der Fahrzeugcomputer 110 tatsächlich eine Vielzahl von Vorrichtungen umfasst, zur Kommunikation zwischen Vorrichtungen verwendet werden, die in dieser Offenbarung als der Fahrzeugcomputer 110 dargestellt sind. Ferner können, wie nachstehend erwähnt, verschiedene Steuerungen und/oder Sensoren 115 dem Fahrzeugcomputer 110 Daten über das Fahrzeugkommunikationsnetzwerk bereitstellen.
  • Der Fahrzeugcomputer 110 ist dazu programmiert, Daten von einem oder mehreren Sensoren 115 im Wesentlichen kontinuierlich, periodisch und/oder auf Anweisung eines entfernten Servercomputers 140 usw. zu empfangen. Die Sensoren 115 können eine Vielfalt von Vorrichtungen beinhalten, die bekannt sind, z. B. (einen) Light-Detection-and-Ranging-(LIDAR-)Sensor(en), Radarsensoren, Kamerasensoren usw., um Daten an dem Fahrzeugcomputer 110 bereitzustellen.
  • Die Aktoren 120 des Fahrzeugs 105 sind über Schaltungen, Chips oder andere elektronische und/oder mechanische Komponenten umgesetzt, die verschiedene Teilsysteme des Fahrzeugs 105 gemäß zweckmäßigen Steuersignalen betätigen können, wie es bekannt ist. Die Aktoren 120 können verwendet werden, um Komponenten 125 zu steuern, die Bremsung, Beschleunigung und Lenkung eines Fahrzeugs 125 beinhalten.
  • Im Zusammenhang mit der vorliegenden Offenbarung handelt es sich bei einer Fahrzeugkomponente 125 um eine oder mehrere Hardwarekomponenten, die dazu ausgelegt sind, eine(n) mechanische(n) oder elektromechanische(n) Funktion oder Vorgang durchzuführen - wie etwa das Fahrzeug 105 zu bewegen, das Fahrzeug 105 abzubremsen oder anzuhalten, das Fahrzeug 105 zu lenken usw. Nicht einschränkende Beispiele für Komponenten 125 beinhalten eine Antriebskomponente (die z. B. eine Brennkraftmaschine und/oder einen Elektromotor usw. beinhaltet), eine Getriebekomponente, eine Lenkkomponente (die z. B. eines oder mehrere von einem Lenkrad, einer Lenkungszahnstange usw. beinhalten kann), eine Aufhängungskomponente (die z. B. eines oder mehrere von einem Stoßdämpfer, z. B. einem Achsdämpfer oder einem Federbein, einer Buchse, einer Feder, einem Steuerarm, einem Kugelgelenk, einem Gestänge usw. beinhalten kann), eine Bremskomponente, eine Einparkhilfekomponente, eine Komponente zur adaptiven Geschwindigkeitsregelung, eine Komponente zum adaptiven Lenken, ein oder mehrere passive Rückhaltesysteme (z. B. Airbags), einen bewegbaren Sitz usw.
  • Außerdem kann der Fahrzeugcomputer 110 dazu konfiguriert sein, über ein Fahrzeug-zu-Fahrzeug-Kommunikationsmodul 130 oder eine Schnittstelle mit Vorrichtungen außerhalb des Fahrzeugs, z. B. durch eine drahtlose Kommunikation von Fahrzeug zu Fahrzeug (V2V) oder von Fahrzeug zu Infrastruktur (V2X) (Mobilfunk und/oder Kurzstreckenfunkkommunikation usw.) mit einem anderen Fahrzeug und/oder mit einem entfernten Servercomputer 140 (typischerweise über direkte Funkfrequenzkommunikation) zu kommunizieren. Das Kommunikationsmodul 130 könnte einen oder mehrere Mechanismen, wie etwa einen Sendeempfänger, beinhalten, durch welche die Computer von Fahrzeugen kommunizieren können, einschließlich einer beliebigen gewünschten Kombination aus drahtlosen (z. B. Mobilfunk-, Drahtlos-, Satelliten-, Mikrowellen- und Hochfrequenz- )Kommunikationsmechanismen und einer beliebigen gewünschten Netzwerktopologie (oder - topologien, wenn eine Vielzahl von Kommunikationsmechanismen genutzt wird). Beispielhafte über das Kommunikationsmodul bereitgestellte Kommunikation beinhaltet Mobilfunk, Bluetooth, IEEE802.11, dedizierte Nahbereichskommunikation (DSRC), Mobilfunk-V2X (CV2X) und/oder Weitbereichsnetzwerke (wide area networks - WAN), einschließlich des Internets, die Datenkommunikationsdienste bereitstellen. Der Einfachheit halber wird die Bezeichnung „V2X“ in dieser Schrift für Kommunikation verwendet, die von Fahrzeug zu Fahrzeug (V2V) und/oder von Fahrzeug zu Infrastruktur (V2I) erfolgen kann und die gemäß einem beliebigen geeigneten Kurzstreckenkommunikationsmechanismus, z. B. DSRC, Mobilfunk oder dergleichen, durch das Kommunikationsmodul 130 bereitgestellt werden kann.
  • Das Netzwerk 135 stellt einen oder mehrere Mechanismen dar, durch die ein Fahrzeugcomputer 110 mit entfernten Rechenvorrichtungen, z. B. dem entfernten Servercomputer 140, einem anderen Fahrzeugcomputer usw., kommunizieren kann. Dementsprechend kann es sich bei dem Netzwerk 135 um einen oder mehrere von verschiedenen drahtgebundenen oder drahtlosen Kommunikationsmechanismen handeln, einschließlich einer beliebigen gewünschten Kombination aus drahtgebundenen (z. B. Kabel- und Glasfaser-) und/oder drahtlosen (z. B. Mobilfunk-, Drahtlos-, Satelliten-, Mikrowellen- und Hochfrequenz-)Kommunikationsmechanismen und einer beliebigen gewünschten Netzwerktopologie (oder -topologien, wenn mehrere Kommunikationsmechanismen genutzt werden). Beispielhafte Kommunikationsnetzwerke 135 beinhalten drahtlose Kommunikationsnetzwerke (z. B. unter Verwendung von Bluetooth®, Bluetooth® Low Energy (BLE), IEEE 802.11, Fahrzeug-zu-Fahrzeug (V2V), wie etwa dedizierte Nahbereichskommunikation (DSRC) usw.), lokale Netzwerke (local area network - LAN) und/oder Weitverkehrsnetzwerke (WAN), einschließlich des Internets, die Datenkommunikationsdienste bereitstellen.
  • Der entfernte Servercomputer 140 kann eine herkömmliche Rechenvorrichtung sein, d. h., die einen oder mehrere Prozessoren und einen oder mehrere Speicher beinhaltet, die dazu programmiert sind, Vorgänge bereitzustellen, wie in dieser Schrift offenbart. Ferner kann auf den entfernten Servercomputer 140 über das Netzwerk 135, z. B. das Internet, ein Mobilfunknetzwerk und/oder ein anderes Weitverkehrsnetzwerk, zugegriffen werden.
  • Die Vielzahl von Kameras 150 in dem entfernten Kamera-Array 145 ist so positioniert, dass sie den Betriebsbereich 200 von oben betrachtet. Die Vielzahl von Kameras 150 kann zum Beispiel voneinander beabstandet sein, um eine Überlappung ihrer jeweiligen Sichtfelder zu minimieren. Alternativ kann die Vielzahl von Kameras 150 voneinander beabstandet sein, um ein gewünschtes Maß an Überlappung zu erreichen, das z. B. durch einen Besitzer einer Struktur vorgegeben ist, der den Betriebsbereich 200 definiert.
  • Bei den Kameras 150 kann es sich zum Beispiel um eine beliebige geeignete Art von Kamera handeln, die in der Lage ist, registrierte Sicht- und Entfernungsdaten zu erfassen. Registrierte Sicht- und Entfernungsdaten, die in dieser Schrift als RGB-D-Bilddaten (rot, grün, blau, Abstand) bezeichnet werden, sind Bilddaten, in denen entsprechende Pixel in dem RGB- oder Sichtbild und dem D- oder Entfernungsbild Daten von demselben Punkt in der äußeren Umgebung erfassen. Ein nicht einschränkendes Beispiel für eine Kamera 150 ist eine Rot-Grün-Blau-Tiefenkamera (RGB-D-Kamera). In einem derartigen Beispiel kann die Kamera 150 ein lichtempfindliches Array (nicht gezeigt), einen Infrarot-(IR-)Emitter (nicht gezeigt) und einen IR-Tiefensensor (nicht gezeigt) beinhalten. Im Betrieb bestimmt die Kamera 150 ein oder mehrere Bilder (z. B. Einzelbilder) und jedes Einzelbild umfasst Farbinformationen und Tiefeninformationen, die Objekten innerhalb des Einzelbildes entsprechen. Zum Beispiel kann das lichtempfindliche Array Farbbilddaten empfangen, während gleichzeitig die IR-Emitter und IR-Tiefensensoren verwendet werden, um Tiefenbilddaten zu bestimmen; und schließlich korreliert ein Prozessor (nicht gezeigt) der Kamera 150 sowohl Farbbilddaten als auch Tiefenbilddaten zu einem Bild, das an dem Computer 140 des entfernten Servers bereitgestellt wird (wie nachfolgend beschrieben). Zwei nicht einschränkende kommerzielle Beispiele für RGB-D-Kameras sind die 3D-Kamera Astra S von Orbbec und die Realsense D435 von Intel; andere Beispiele sind vorhanden. In einigen Umsetzungen des Verkehrsinfrastruktursystems 100 ist eine RGB-D-Kamera wünschenswert, da RGB-D-Kameras typischerweise eine vordere Brennweite (front focal distance - FFD) zwischen 2 und 5 Metern aufweisen (z. B. im Gegensatz zu Lidarsystemen, die typischerweise eine FFD von Metern im dreistelligen Bereich aufweisen). Die kürzere FFD für die RGB-D-Kamera im Vergleich zu Lidarsystemen ermöglicht es der RGB-D-Kamera, ein breiteres Sichtfeld als bei Lidarsystemen aufzunehmen. Zusätzlich ermöglicht die kürzere FFD, dass die RGB-D-Kamera eine größere Tiefenschärfe, d. h. einen größeren Abstand zwischen einem nächstgelegenen und einem am weitesten entfernten Objekt von der RGB-D-Kamera, die in einem Bild fokussiert ist, als Lidarsysteme aufnimmt.
  • Als ein weiteres Beispiel kann eine Kamera 150 Bilddaten des Betriebsbereichs 200 erlangen. Im in dieser Schrift verwendeten Sinne bedeuten Bilddaten digitale Bilddaten, die z. B. Pixel mit Intensitäts- und Farbwerten umfassen. Zusätzlich kann ein Lidarsystem Tiefendaten erlangen, d. h. eine Entfernung zwischen der Kamera 150 und einer Fläche eines Objekts innerhalb des Sichtfeldes der Kamera 150. In dieser Situation könnte der entfernte Servercomputer 140 verschiedene Techniken zur Fusion von Daten von dem Lidarsensor und der Kamera 150 einsetzen. Bei der Fusion von Sensoren 115 werden Daten aus unterschiedlichen Quellen derart miteinander kombiniert, dass die resultierenden Daten eine geringere Unsicherheit aufweisen, als wenn die Daten von jeder Quelle einzeln verwendet würden, z. B. beim Erzeugen eines einheitlichen Modells der Umgebung des Fahrzeugs 105. Die Fusion von Sensoren 115 kann mit einem oder mehreren Algorithmen durchgeführt werden, z. B. dem Kalman-Filter, Bayesschen Netzwerken, Dempster-Shafer, neuronalen Faltungsnetzwerken usw.
  • 2 ist eine grafische Darstellung, die ein Fahrzeug 105 veranschaulicht, das in einem beispielhaften Betriebsbereich 200 betrieben wird, der markierte Teilbereiche 205 (z. B. Parklücken) für Fahrzeuge 105 beinhaltet. Ein Betriebsbereich 200 ist ein vorgegebenen Bereich der Bodenfläche zum Betreiben und/oder Verstauen eines Fahrzeugs 105. Der Betriebsbereich 200 kann in einer Struktur eingeschlossen sein, z. B. einem Parkdeck (d. h. einer Struktur, die ein oder mehrere Stockwerke beinhaltet, auf denen ein Fahrzeug betrieben und/oder verstaut werden kann), Fertigungsanlagen, Wartungseinrichtungen, einem Tunnel usw. Die Struktur beinhaltet eine Decke über dem Betriebsbereich 200. Die Decke kann parallel zu dem Betriebsbereich 200 sein oder nicht. Die Vielzahl von Kameras 150, einschließlich einer Host-Kamera 152 und zusätzlicher Kameras 154a, 154b, 154c, ist an der Decke montiert. Ein Teilbereich 205 kann zum Beispiel eine Parklücke sein, die durch herkömmliche Markierungen angegeben ist, z. B. gemalte Linien auf einer Bodenfläche, und herkömmliche Bilderkennungstechniken können durch den Fahrzeugcomputer 110 eingesetzt werden, um den Teilbereich 205 zu identifizieren.
  • Im Allgemeinen weisen mindestens einige Regionen des Betriebsbereichs 200 unter Umständen kein nützliches satellitenbasiertes Positionsbestimmungssignal auf (d. h. es ist kein satellitenbasiertes Positionsbestimmungssignal vorhanden oder alternativ ist das Satellitenpositionsbestimmungssignal vorhanden, jedoch schwach). Schwach kann als abgeschwächt und unter einem Schwellenwert liegend definiert sein; z. B. kann der Schwellenwert unter einem vorbestimmten Wert liegen, der durch ein Fahrzeugnavigationsgerät verwendbar ist. Gemäß einem Beispiel kann es sich bei dem satellitenbasierten Positionsbestimmungssignal um ein drahtloses Signal von einem Satelliten handeln, der ein globales Positionsbestimmungssystem (GPS), ein globales Satellitennavigationssystem (GLONASS) oder dergleichen verwendet.
  • Jeweilige Posen mit sechs Freiheitsgraden (six degree-of-freedom - 6DoF) für die Kameras 150 in Bezug auf ein globales Koordinatensystem können bestimmt werden und daher kann das Bestimmen der Position eines Fahrzeugs 105 in einem zusammengesetzten Bild 700, das aus Bildern generiert wird, die durch die Kameras 150 erfasst werden, die Position des Fahrzeugs 105 in Bezug auf das globale Koordinatensystem bestimmen. Der entfernte Servercomputer 140 kann mit den Kameras 150 kommunizieren, um einen Fahrzeugpfad 210 zu bestimmen, auf dem das Fahrzeug 105 betrieben werden kann, um durch den Betriebsbereich 200, z. B. zu einen Teilbereich 205, zu fahren. Der Fahrzeugpfad 210 kann an das Fahrzeug 105 kommuniziert werden, um es dem Fahrzeug 105 zu ermöglichen, autonom oder teilautonom durch den Betriebsbereich 200 betrieben zu werden.
  • Der entfernte Servercomputer 140 kann ein DNN beinhalten, d. h. ein Softwareprogramm, das es dem entfernten Servercomputer 140 ermöglicht, eine 4DoF-Pose für das Fahrzeug 105 bezogen auf den Betriebsbereich 200 zu bestimmen. Der entfernte Servercomputer 140 kann dann den Fahrzeugpfad 210 auf Grundlage der 4DoF-Pose für das Fahrzeug 105 bestimmen. Der Fahrzeugpfad 210 kann eine Vielzahl von Positionen beinhalten, die als „Breadcrumbs“ bezeichnet werden und, wenn sie zum Beispiel durch eine Polynomfunktion zusammengefügt sind, verwendet werden können, um ein Fahrzeug 105 zu einer Position, z. B. einem Unterbereich 205, in dem Betriebsbereich 200 zu betreiben. Während das Fahrzeug 105 in dem Betriebsbereich 200 betrieben wird, können die Kameras 150 Daten bezüglich der Position des Fahrzeugs 105 erfassen, um zu bestimmen, ob das Fahrzeug 105 dem durch den entfernten Servercomputer 140 bestimmten Fahrzeugpfad 210 angemessen folgt. In Beispielen, in denen das Fahrzeug 105 von dem Fahrzeugpfad 210 abweicht, kann der entfernte Servercomputer 140 aktualisierte Befehle an den Fahrzeugcomputer 110 übertragen, um den Betrieb des Fahrzeugs 105 zu korrigieren, z. B. durch Betätigen einer oder mehrerer Fahrzeugkomponenten 125.
  • 3 ist eine grafische Darstellung, die ein beispielhaftes RGB-Bild 302, ein beispielhaftes Tiefenbild 304 und ein beispielhaftes Binärbild 306 von einer RGB-D-Kamera 150 beinhaltet. Das RGB-Bild 302, das Tiefenbild 304 und das Binärbild 306 beinhalten jeweils einen selben Abschnitt eines Kalibrierungsfahrzeugs 308. Das RGB-Bild 302 wird durch den visuellen Abschnitt einer RGB-D-Kamera 150 erfasst.
  • Das Tiefenbild 304 wird durch einen Entfernungssensor, wie etwa einen Lidarsensor, oder durch den Tiefen- oder Entfernungsabschnitt einer RGB-D-Kamera 150, erfasst. In den in dieser Schrift erörterten Beispielen wird das Tiefenbild 304 mit dem RGB-Bild 302 registriert. Dies bedeutet, dass für eine gegebene x-, y-Position eines Pixels in den Bildern 302, 304 das RGB-Bild 302 die Farbe einer Position beinhaltet und das Tiefenbild 304 den Abstand oder die Entfernung zu derselben Position beinhaltet. In Beispielen, in denen das RGB-Bild 302 und das Tiefenbild 304 nicht registriert sind, kann der Versatz der Positionen jedes Pixels zwischen dem RGB-Bild 302 und dem Tiefenbild 304 bestimmt und der Versatz verwendet werden, um das RGB-Bild 302 und das Tiefenbild 304 zu registrieren.
  • Das Binärbild 306 ist das Ergebnis einer Schwellenwertbildung für das Tiefenbild 304. Schwellenwertbildung ist ein Bildverarbeitungsvorgang, bei dem ein Schwellenwert ausgewählt wird und alle Pixel, die einen Wert größer oder gleich dem Schwellenwert aufweisen, auf „1“ gesetzt werden und alle Pixel, die einen Wert unter dem Schwellenwert aufweisen, auf „0“ gesetzt werden. Die Schwellenwertbildung für ein Tiefenbild 304, um ein Binärbild 306 zu bestimmen, ermöglicht ein Bestimmen von Unterschieden der Position des Fahrzeugs zwischen einem Binärbild 306, das durch Schwellenwertbildung eines Tiefenbildes 304 gebildet wird, und einer Fahrzeugposition in einem Binärbild, das durch Rendern eines Tiefenbildes auf Grundlage eines dreidimensionalen (3D-)Modells eines Fahrzeugs bestimmt wird. In dieser Schrift erörterte Techniken können ein erstes tiefes neuronales Netz (DNN) 800 (wie nachstehend in Bezug auf 8 beschrieben) trainieren, indem ein zusammengesetztes Tiefenbild in das erste DNN 800 eingegeben wird, um eine 4DoF-Pose für ein Fahrzeug 105 zu bestimmen, das in dem zusammengesetzten Tiefenbild eingeschlossen ist. Die 4DoF-Pose kann in ein Format zur Eingabe in ein Bildrendering-Softwareprogramm umgewandelt werden, indem eine Translations- und Rotationsmatrix bestimmt werden, die verwendet werden können, um ein 3D-Modell von einer Eingabepose in eine Pose zu verschieben und zu rotieren, die der 4DoF-Pose entspricht. Die Translation bewegt das 3D-Modell in der x-, y-Ebene und die Rotation rotiert das 3D-Modell um die z-Achse an einem ausgewählten Mittelpunkt des 3D-Modells. Das Umwandeln der 4DoF-Pose auf diese Weise bewahrt die Unterscheidbarkeit der 4DoF-Pose. Dies ist wichtig, wenn die 4DoF-Pose verwendet wird, um eine Verlustfunktion zum Trainieren des ersten DNN 800 zu bestimmen, wie nachstehend in Bezug auf 11 erörtert.
  • Das Kalibrierungsfahrzeug 308 beinhaltet eine Passermarke 310. Eine Passermarke 310 kann eine Anzahl von ArUco-Passermarken beinhalten. ArUco-Passermarken sind zweidimensionale (2D-)Muster aus einer Sammlung von Passermarken, die auf www.uco.es/grupos/ava/node/26, „Aplicaciones de la Vision Artificial“, Universität von Cordoba, Spanien, 15. Mai 2019, beschrieben sind. ArUco-Passermarken sind dazu ausgelegt, von Software für maschinelles Sehen gelesen zu werden, die eine Pose in Bezug auf ein Koordinatensystem für jede in einer Passermarke 310 eingeschlossene ArUco-Passermarke bestimmen kann, indem sie ein 2D-Videobild der Passermarke 310 verarbeitet.
  • Das Kalibrierungsfahrzeug 308 kann einen Computer (nicht gezeigt) beinhalten, der einen zweiten Prozessor und einen zweiten Speicher, wie sie bekannt sind, beinhaltet. Der zweite Speicher beinhaltet eine oder mehrere Formen von computerlesbaren Medien und speichert Anweisungen, die durch den zweiten Computer zum Durchführen verschiedener Vorgänge, einschließlich der in dieser Schrift offenbarten, ausgeführt werden können.
  • Zusätzlich kann das Kalibrierungsfahrzeug 308 Sensoren (nicht gezeigt), Aktoren (nicht gezeigt) zum Betätigen verschiedener Komponenten (nicht gezeigt) und ein Kommunikationsmodul (nicht gezeigt) beinhalten. Die Sensoren, Aktoren zum Betätigen verschiedener Komponenten und das Kommunikationsmodul weisen typischerweise gemeinsame Merkmale mit den Sensoren 115, Aktoren 120 zum Betätigen verschiedener Fahrzeugkomponenten 125 und dem Fahrzeugkommunikationsmodul 130 auf und werden daher nicht weiter beschrieben, um Redundanz zu vermeiden.
  • 4 ist eine grafische Darstellung eines beispielhaften zweiten tiefen neuronalen Netzes (DNN) 400, das verwendet wird, um eine Pose mit sechs Freiheitsgraden (6DoF) für eine Kamera 150 zu bestimmen. Der entfernte Servercomputer 140 kann jeweilige 6DoF-Posen für die Vielzahl von Kameras 150 in dem entfernten Kamera-Array 145 auf Grundlage von jeweiligen Kalibrierungsbildern 402 bestimmen, die durch jeweilige Kameras 150 erfasst werden. Ein Kalibrierungsbild 402 ist ein RGB-Bild, das mindestens einen Abschnitt des Kalibrierungsfahrzeugs 308 beinhaltet, z. B. eine Passermarke 310. Sechs Freiheitsgrade bezieht sich auf die Bewegungsfreiheit eines Objekts im dreidimensionalen Raum (z. B. Translation entlang dreier senkrechter Achsen und Rotation um jede der drei senkrechten Achsen). Mit einer 6DoF-Pose einer Kamera 150 ist eine Position bezogen auf ein Koordinatensystem (z. B. ein Satz von Koordinaten, der eine Lage in dem Koordinatensystem vorgibt, z. B. eine X-, Y-, Z-Koordinate) und eine Ausrichtung (z. B. ein Gieren, ein Nicken und ein Rollen) um jede Achse in dem Koordinatensystem gemeint. Die 6DoF-Pose der Kamera 150 kann in realen Koordinaten auf Grundlage einer orthogonale x-, y- und z-Achse und jeweils einer Roll-, Nick- und Gierdrehung um die x-, y- und z-Achse bestimmt werden. Die 6DoF-Pose der Kamera 150 lokalisiert die Kamera 150 in Bezug auf ein globales Koordinatensystem.
  • Wenn das Kalibrierungsfahrzeug 308 den Betriebsbereich 200 durchquert, kann sich das Kalibrierungsfahrzeug 308 innerhalb des Betriebsbereichs 200 selbst lokalisieren. Zum Beispiel kann das Kalibrierungsfahrzeug 308 Positionsdaten von einem Sensor, einem Navigationssystem usw. empfangen. Positionsdaten geben einen Punkt oder Punkte auf einer Bodenfläche vor und können in einer bekannten Form vorliegen, z. B. Geokoordinaten, wie etwa Längengrad- und Breitengradkoordinaten, die über ein Navigationssystem erlangt wurden, wie es bekannt ist, welches das globale Positionsbestimmungssystem (GPS) verwendet. In dieser Situation kann der Computer in dem Kalibrierungsfahrzeug 308 eine 6DoF-Pose für die Passermarke 310 bezogen auf das globale Koordinatensystem bestimmen. Zum Beispiel kann eine Position der Passermarke 310 bezogen auf das Kalibrierungsfahrzeug 308 physisch gemessen werden. Die 6DoF-Pose der Passermarke 310 kann dann durch Kombinieren der Geokoordinaten mit der physisch gemessenen Position der Passermarke 310 bestimmt werden. Das heißt, die 6DoF-Pose für die Passermarke 310 lokalisiert die Passermarke 310 bezogen auf das globale Koordinatensystem. Der Computer in dem Kalibrierungsfahrzeug 308 kann dann die 6DoF-Pose für die Passermarke 310 an dem entfernten Servercomputer 140 bereitstellen. Zum Beispiel kann der Computer in dem Kalibrierungsfahrzeug 308 die 6DoF-Pose für die Passermarke 310 z. B. über das Netzwerk 135, V-zu-I-Kommunikationen usw., an den entfernten Servercomputer 140 übertragen.
  • Wenn das Kalibrierungsfahrzeug 308 in ein Sichtfeld einer Kamera 150 einfährt, kann die Kamera 150 ein Kalibrierungsbild 402 aufnehmen. Die Kamera 150 kann dann das Kalibrierungsbild 402 an dem entfernten Servercomputer 140 bereitstellen. Nach dem Empfangen des Kalibrierungsbildes 402 kann der entfernte Servercomputer 140 das Kalibrierungsbild 402 in das zweite DNN 400 eingeben. Das zweite DNN 400 kann dazu trainiert werden, das Kalibrierungsbild 402 als Eingabe anzunehmen und eine Ausgabe einer 6DoF-Pose der Kamera 150 in Bezug auf die Passermarke 310 auf Grundlage einer Ausrichtung der Passermarke 310 in dem Kalibrierungsbild 402 zu generieren.
  • Gemäß einem nicht einschränkenden Beispiel kann das zweite DNN 400 eine Faltungsschicht 404, eine Bündelungsschicht 406 und eine Abflachung 408 umfassen. Die Faltungsschicht 404 kann Einzelbilder empfangen und die Einzelbilder unter Verwendung eines Kernels oder Filters falten - was z. B. eine Vielzahl von gefalteten Merkmalen ergibt. Danach können die Bündelungsschichten 406 die räumliche Größe der gefalteten Merkmale reduzieren. Typischerweise (wenngleich nicht erforderlich) können mehrere Iterationen der Faltung, gefolgt von einer Bündelung, vorhanden sein. Danach kann die Abflachung 408 die Bündelungsausgabe in einen geeigneten Spaltenvektor zur Eingabe in ein neuronales Netz umwandeln, wobei eine Klassifizierung erfolgt (z. B. unter Verwendung mindestens einer vorbestimmten Funktion des neuronalen Netzes, wie z. B. SoftMax) - wobei sich die Klassifizierung im vorliegenden Beispiel auf die 6DoF-Pose der Kamera 150 in Bezug auf die Passermarke 310 bezieht. Andere Aspekte und Faltungstechniken können ebenfalls eingesetzt werden.
  • Der entfernte Servercomputer 140 kann dann die 6DoF-Pose für die Kamera 150 bezogen auf das globale Koordinatensystem auf Grundlage der 6DoF-Pose der Passermarke 310 und der 6DoF-Pose für die Kamera 150 bezogen auf die Passermarke 310 bestimmen. Der entfernte Servercomputer 140 kann die 6DoF-Pose für die Kamera 150 bezogen auf das globale Koordinatensystem durch Verknüpfung der Posendaten der Passermarke 310 mit den Posendaten der Kamera 150 bestimmen. Zum Beispiel kann die 6DoF-Pose für die Kamera 150 bezogen auf das globale Koordinatensystem berechnet werden, indem eine Matrixmultiplikation unter Verwendung der Matrixwerte durchgeführt wird, welche die Posendaten der Passermarke 310 und die Posendaten der Kamera 150 darstellen. Der entfernte Servercomputer 140 kann das Bestimmen der 6DoF-Pose für jeweilige Kameras 150 bezogen auf das globale Koordinatensystem auf diese Weise fortsetzen, bis eine 6DoF-Pose bezogen auf das globale Koordinatensystem für alle Kameras 150 in dem entfernten Kamera-Array 145 bestimmt ist. Der entfernte Servercomputer 140 kann dann die jeweiligen 6DoF-Posen für die Kameras 150 speichern, z. B. auf einem Speicher des entfernten Servercomputers 140.
  • 5A und 5B sind grafische Darstellungen einer beispielhaften 3D-Referenzebene 500. Der entfernte Servercomputer 140 kann die 3D-Referenzebene 500 auf Grundlage eines durch die Host-Kamera 152 erfassten Tiefenbildes 304 bestimmen. Zum Beispiel kann der entfernte Servercomputer 140 die 3D-Referenzebene 500 durch Einfügen einer Vielzahl von Punkten in das Tiefenbild 304 und Anpassen einer Ebene an die Punkte bestimmen. Der entfernte Servercomputer 140 fügt die Punkte derart ein, dass alle eingefügten Punkte auf einer gemeinsamen Fläche vorhanden sind. Das heißt, der entfernte Servercomputer 140 kann Punkte in das Tiefenbild 304 gemäß einem Abschnitt in dem Tiefenbild 304 einfügen, der eine gemeinsamen Entfernung von der Kamera 150 angibt. Als ein Beispiel kann die gemeinsame Fläche eine Bodenfläche des Betriebsbereichs 200 sein (siehe 5A). Als ein anderes Beispiel kann die gemeinsame Fläche eine Fläche, z. B. ein Dach, eine Motorhaube usw., eines Fahrzeugs sein, das in dem Tiefenbild 304 eingeschlossen ist. Die 3D-Referenzebene 500 kann zum Beispiel unter Verwendung eines Algorithmus der kleinsten Quadrate an die Punkte angepasst werden. Ein Algorithmus der kleinsten Quadrate minimiert die Unterschiede zwischen den realen Positionen von Punkten und der Position der 3D-Referenzebene 500. Das heißt, die 3D-Referenzebene 500 entspricht im Allgemeinen der gemeinsamen Fläche.
  • Die 3D-Referenzebene 500 kann in realen Koordinaten beschrieben werden. Die realen Koordinaten können die Position und Ausrichtung der 3D-Referenzebene 500 in sechs Achsen beschreiben, und zwar drei x-, y- und z-Positionsachsen und jeweils drei Roll-, Nick- und Gierdrehungen um die drei Positionsachsen. Die 3D-Referenzebene 500 kann sich zum Beispiel vollständig über den Betriebsbereich 200 erstrecken.
  • Nach dem Bestimmen der 3D-Referenzebene 500 wählt der entfernte Servercomputer 140 zufällig eine Vielzahl von virtuellen 3D-Punkten 502 in der 3D-Referenzebene 500 aus (siehe 5B). Ein virtueller 3D-Punkt 502 ist durch einen Satz von Koordinaten in der 3D-Referenzebene 500 definiert. Der entfernte Servercomputer 140 wählt mindestens vier virtuelle 3D-Punkte 502 aus, sodass der entfernte Servercomputer 140 in der Lage ist, jeweilige Homographiematrizen für die zusätzlichen Kameras 154 zu generieren, wie nachstehend erörtert. Das heißt, mindestens vier virtuelle 3D-Punkte 502 sind erforderlich, um die Transformation eines Bildes aus einer Perspektive einer Kamera 150 auf eine Perspektive einer anderen Kamera 150 einzuschränken.
  • 6 ist eine grafische Darstellung von beispielhaften jeweiligen Bildern 602, 604, 606, 608, die von der Host-Kamera 152 und zusätzlichen Kameras 154a, 154b, 154c (siehe 2) erfasst werden, und 2D-Projektionen 612 für die jeweiligen Kameras 152, 154. Jedes Bild 602, 604, 606, 608 beinhaltet einen Abschnitt eines Fahrzeugs 105. Der Abschnitt des Fahrzeugs 105, der in einem Bild 602, 604, 606, 608 eingeschlossen ist, kann sich mit dem Abschnitt des Fahrzeugs überlappen, der in einem oder mehreren anderen Bildern 602, 604, 606, 608 eingeschlossen ist.
  • Die jeweiligen Kameras 150 können eine Vielzahl von Bildern des Betriebsbereichs 200 erfassen. Die jeweiligen Kameras 150 können dann die jeweiligen erfassten Bilder an dem entfernten Servercomputer 140 bereitstellen. Der entfernte Servercomputer 140 kann die Bilder 602, 604, 606, 608, z. B. aus den erfassten Bildern, die von den jeweiligen Kameras 150 empfangenen wurden, auf Grundlage von Zeitstempeln auswählen, die den jeweiligen Bildern 602, 604, 606, 608 zugeordnet sind, die einer selben Zeit entsprechen. Das heißt, die Bilder 602, 604, 606, 608 können zeitsynchronisiert sein.
  • Der entfernte Servercomputer 140 generiert ein zusammengesetztes Bild 700 auf Grundlage der Vielzahl von ausgewählten Bildern 602, 604, 606, 608 und der 2D-Projektionen 612 für die jeweiligen Kameras 152, 154. Die Bilder 604, 606, 608 von drei zusätzlichen Kameras 154a, 154b, 154c sind in 6 gezeigt, es versteht sich jedoch, dass jeweilige Bilder von einer beliebigen geeigneten Anzahl von zusätzlichen Kameras 154 verwendet werden können, um das zusammengesetzte Bild 700 zu generieren. Das Generieren des zusammengesetzten Bildes 700 kann das Training eines ersten DNN 800 verbessern, um die 4DoF-Pose des Fahrzeugs 105 zu bestimmen, das in dem zusammengesetzten Bild 700 eingeschlossen ist. Bei der Vielzahl von Bildern 602, 604, 606, 608 kann es sich um eine Vielzahl von RGB-Bildern, eine Vielzahl von Tiefenbildern, die bei der Vielzahl von RGB-Bildern registriert ist, und/oder Binärbilder handeln, die durch Schwellenwertbildung der Vielzahl von Tiefenbildern generiert werden. Das heißt, in dieser Schrift beschriebene Techniken können ein zusammengesetztes RGB-Bild, ein zusammengesetztes Tiefenbild und/oder ein zusammengesetztes Binärbild generieren.
  • Für die jeweiligen Kameras 150 kann der entfernte Servercomputer 140 dann 2D-Projektionen 612, die den virtuellen 3D-Punkten 502 entsprechen, auf Grundlage der jeweiligen 6DoF-Posen der Kameras 150 bestimmen. Zum Beispiel kann der entfernte Servercomputer 140 2D-Projektionen 612 für eine Kamera 150 bestimmen, die den virtuellen 3D-Punkten 502 entsprechen, indem die virtuellen 3D-Punkte 502 gerendert werden. Das Rendern kann 2D-Projektionen 612 aus virtuellen 3D-Punkten 502 erzeugen, indem ein virtueller Kamerablickwinkel bestimmt wird, von dem aus die virtuellen 3D-Punkte 502 auf eine 2D-Ebene 614 projiziert werden sollen.
  • Eine virtuelle Kamera kann durch Programmierung des entfernten Servercomputers 140 bereitgestellt werden, um die 2D-Projektionen 612 aus den virtuellen 3D-Punkten 502 zu generieren. Der entfernte Servercomputer 140 kann virtuelle Lichtstrahlen generieren, die von einem virtuellen Bildsensor durch eine virtuelle Linse verlaufen und dabei den Gesetzen der Physik gehorchen, als ob der Bildsensor und die Linse physische Objekte wären. Der entfernte Servercomputer 140 fügt Daten in den virtuellen Bildsensor ein, die dem Erscheinungsbild eines virtuellen 3D-Punktes 502 entsprechen, den ein Lichtstrahl, der durch den virtuellen 3D-Punkt 502 emittiert wird und durch eine physische Linse verläuft, auf einem physischen Bildsensor erzeugen würde. Durch Positionieren einer virtuellen Kamera in einer ausgewählten Position und Ausrichtung in Bezug auf die virtuellen 3D-Punkte 502 können 2D-Projektionen 612, die einem ausgewählten Blickwinkel in Bezug auf die 3D-Referenzebene 500 entsprechen, generiert werden.
  • Der Blickwinkel der virtuellen Kamera beinhaltet Positions- und Ausrichtungsdaten für eine optische Achse der virtuellen Kamera und Daten bezüglich der Vergrößerung der virtuellen Kameralinse. Der Blickwinkel der virtuellen Kamera wird auf Grundlage der Position und Ausrichtung einer virtuellen Kamera in Bezug auf die 3D-Referenzebene 500 bestimmt. Die Position der virtuellen Kamera wird als die Position der jeweiligen Kamera 150 ausgewählt und die Ausrichtung der virtuellen Kamera wird als die Ausrichtung der jeweiligen Kamera 150 ausgewählt. Die Position und die Ausrichtung der jeweiligen Kamera 150 werden aus der 6DoF-Pose der jeweiligen Kamera 150 bestimmt. Das Projizieren der virtuellen 3D-Punkte 502 auf eine 2D-Ebene 614 entspricht dem Bestimmen der Koordinaten der virtuellen 3D-Punkte 502 auf der 2D-Ebene 614 bezogen auf eine Kamera 150 in der ausgewählten Position und Ausrichtung. Da die 2D-Projektionen 612 aus virtuellen 3D-Punkten 502 auf Grundlage einer virtuellen Kamera in einer ausgewählten Position und einer ausgewählten Ausrichtung generiert wurden, sind Daten bezüglich der Position und der Ausrichtung der 2D-Projektionen 612 bekannt.
  • Die 2D-Ebene 614 kann in realen Koordinaten beschrieben werden. Die realen Koordinaten können die Position und Ausrichtung der 2D-Ebene 614 in drei Achsen beschreiben, und zwar einer x- und y-Positionsachse und einer Gierdrehung um die z-Positionsachse.
  • Bei Bestimmen der 2D-Projektionen 612 für die Vielzahl von Kameras 150 kann der entfernte Servercomputer 140 jeweilige Homographiematrizen für die eine zusätzliche oder die mehreren zusätzlichen Kameras 154 auf Grundlage der 2D-Projektionen 612 für die jeweilige zusätzliche Kamera 154 und der 2D-Projektionen 612 für die Host-Kamera 152 berechnen. Eine Homographiematrix wird verwendet, um die 2D-Projektionen 612 für die jeweilige zusätzliche Kamera 154 von Koordinaten in einer Bildebene, die durch die jeweilige zusätzliche Kamera 154 definiert ist, in Koordinaten in einer Bildebene zu transformieren, die durch die Host-Kamera 152 definiert ist. Anders ausgedrückt, stellt die Homographiematrix eine mathematische Beziehung zwischen Koordinaten von 2D-Projektionen 612 in den Bildern bereit. Der entfernte Servercomputer 140 bestimmt die Homographiematrix auf Grundlage eines Translationsunterschieds entlang jeder der drei orthogonalen Achsen und eines Rotationsunterschieds um jede der drei orthogonalen Achsen zwischen 2D-Projektionen 612 für die jeweilige zusätzliche Kamera 154 und entsprechenden 2D-Projektionen 612 für die Host-Kamera 152.
  • 7 ist eine grafische Darstellung eines zusammengesetzten Bildes 700, das aus der Vielzahl von Bildern 602, 604, 606, 608 aus 6 generiert wird. Der entfernte Servercomputer 140 generiert das zusammengesetzte Bild 700 aus der Perspektive der Host-Kamera 152 auf Grundlage der jeweiligen Bilder 604, 606, 608, die von den zusätzlichen Kameras 154a, 154b, 154c erfasst wurden, und der entsprechenden Homographiematrizen für die jeweiligen zusätzlichen Kameras 154a, 154b, 154c. Beim Empfangen eines Bildes 604, 606, 608 von einer zusätzlichen Kamera 154a, 154b, 154c verzerrt der entfernte Servercomputer 140 das Bild 604, 606, 608, d. h. transformiert dieser Pixelkoordinaten für das Bild 604, 606, 608 unter Verwendung der Homographiematrix für die jeweilige zusätzliche Kamera 154a, 154b, 154c in ein Host-Pixel-Koordinatensystem, das z. B. durch die Bildebene der Host-Kamera 152 definiert ist. Der entfernte Servercomputer 140 kann dann z. B. unter Verwendung bekannter Computer-Vision-Techniken das durch die zusätzliche Kamera 154a, 154b, 154c erfasste zusammengesetzte Bild 604, 606, 608 mit dem durch die Host-Kamera 152 erfassten Bild 602 zusammenfügen, z. B. durch Ausrichten der 2D-Projektionen 612 in den jeweiligen Bildern 602, 604, 606, 608. Der entfernte Servercomputer 140 kann dann Alpha Blending für die überlappenden Abschnitte der jeweiligen Bilder 602, 604, 606, 608 einsetzen. Alpha Blending ist eine Bildverarbeitungstechnik, die eine Transparenz von überlappenden Pixeln in einem zusammengesetzten Bild so einstellt, dass ein überlappendes Pixel eines Bildes, das verwendet wird, um das zusammengesetzte Bild zu generieren, mindestens teilweise transparent ist und das entsprechende überlappende Pixel in einem anderen Bild, das verwendet wird, um das zusammengesetzte Bild zu generieren, sichtbar ist. Wie in dieser Schrift verwendet, bedeutet „transparent“, dass das überlappende Pixel des einen Bildes nicht durch das überlappende Pixel des anderen Bildes hindurchscheint, d. h., das überlappende Pixel des einen Bildes ist unsichtbar. Das heißt, nur das überlappende Pixel des anderen Bildes ist sichtbar. Wie in dieser Schrift verwendet, bedeutet „teilweise transparent“, d. h. durchscheinend, dass das überlappende Pixel des einen Bildes nicht durch das überlappende Pixel des anderen Bildes hindurchscheint. Anders ausgedrückt, können beide überlappenden Pixel sichtbar sein. Zum Beispiel können Alpha-Blending-Techniken eine Stufe, z. B. von 254 Stufen zwischen vollständig sichtbar und transparent, der partiellen Transparenz für das überlappende Pixel des einen Bildes vorgeben, was dem entspricht, wie sichtbar das überlappende Pixel des einen Bildes bezogen auf das überlappende Pixel des anderen Bildes ist. Der entfernte Servercomputer 140 kann damit fortfahren, die Bilder 604, 606, 608, die durch die zusätzlichen Kameras 154a, 154b, 154c erfasst wurden, mit dem Bild 602, das durch die Host-Kamera 152 erfasst wurde, auf diese Weise zusammenzufügen, bis das gesamte Fahrzeug 105 in dem zusammengesetzten Bild 700 eingeschlossen ist.
  • Das zusammengesetzte Bild 700 kann einen Neuprojektionsfehler E beinhalten, d. h. einen geometrischen Fehler, der einem Bildabstand (d. h. einem Versatz oder einer Fehlausrichtung) in dem zusammengesetzten Bild 700 zwischen entsprechenden Merkmalen, z. B. einer Linie, einer Fläche, einer Markierung usw., entspricht, die in einer Vielzahl von Bildern 602, 604, 606, 608 eingeschlossen sind, die verwendet wird, um das zusammengesetzte Bild 700 zu generieren. Der entfernte Servercomputer 140 kann die 6DoF-Posen für die jeweiligen zusätzlichen Kameras 154 auf Grundlage des Neuprojektionsfehlers E aktualisieren. Zum Beispiel kann der entfernte Servercomputer 140 eine nichtlineare Optimierungstechnik verwenden, z. B. Levenberg-Marquardt, um die extrinsischen Kalibrierungsparameter, z. B. eine Rotationsmatrix und eine Translationsmatrix, für die jeweilige zusätzliche Kamera 154 zu optimieren, um den Neuproj ektionsfehler E in dem zusammengesetzten Bild 700 zwischen den entsprechenden Merkmalen zu reduzieren, die in der Vielzahl von Bildern 602, 604, 606, 608 eingeschlossen sind. Der entfernte Servercomputer 140 kann dann die 6DoF-Posen für die jeweiligen zusätzlichen Kameras 154 aktualisieren, um den optimierten extrinsischen Kalibrierungsparametern zu entsprechen.
  • 8 ist eine grafische Darstellung eines beispielhaften ersten DNN 800. Das erste DNN 800 kann ein Softwareprogramm sein, das auf dem entfernten Servercomputer 140 ausgeführt wird, der in einem Verkehrsinfrastruktursystem 100 eingeschlossen ist. In diesem Beispiel ist das erste DNN 800 als ein neuronales Faltungsnetz (convolutional neural network - CNN) veranschaulicht. In dieser Schrift beschriebene Techniken können auch für DNNs gelten, die nicht als CNNs umgesetzt sind. Ein als erstes CNN umgesetztes DNN 800 gibt typischerweise ein Eingabebild (IN) 802 als Eingabedaten ein. Das Eingabebild 802 wird durch Faltungsschichten 804 verarbeitet, um latente Variablen 806 (d. h. zwischen Neuronen in dem ersten DNN 800 weitergeleitete Variablen) zu bilden. Die Faltungsschichten 804 beinhalten eine Vielzahl von Schichten, die jeweils ein Eingabebild 802 mit Faltungskernen falten, die das Eingabebild 802 transformieren und das transformierte Eingabebild 802 unter Verwendung von Algorithmen, wie etwa maximaler Bündelung, verarbeiten, um die Auflösung des transformierten Eingabebildes 802 zu reduzieren, wenn es durch die Faltungsschichten 804 verarbeitet wird. Die durch die Faltungsschichten 804 ausgegebenen latenten Variablen 806 werden an vollständig verbundene Schichten 808 weitergeleitet. Die vollständig verbundenen Schichten 808 beinhalten Verarbeitungsknoten. Die vollständig verbundenen Schichten 808 verarbeiten die latenten Variablen 806 unter Verwendung von linearen und nichtlinearen Funktionen, um eine Ausgabevorhersage (OUT) 810 zu bestimmen. In den in dieser Schrift erörterten Beispielen beinhaltet die Ausgabevorhersage 810 eine Objektbeschriftung und eine Objektposition. Der Servercomputer 140 kann ein zusammengesetztes Tiefenbild eingeben.
  • Das erste DNN 800 kann unter Verwendung eines Trainingsdatensatzes trainiert werden, der Bilder und entsprechende Ground-Truth-Daten beinhaltet. Trainingsdatensätze für ein erstes DNN 800 können Tausende oder Millionen von Bildern und entsprechenden Annotationen oder Ground-Truth-Daten beinhalten. Jedes Bild des Trainingsdatensatzes kann eine Vielzahl von Malen durch das erste DNN 800 verarbeitet werden. Eine Vorhersage 810, die von dem ersten DNN 800 als Reaktion auf ein Eingabebild 802 ausgegeben wird, wird mit den Ground-Truth-Daten verglichen, die dem Eingabebild 802 entsprechen, um eine Verlustfunktion zu bestimmen. Die Verlustfunktion ist eine mathematische Funktion, die bestimmt, wie genau die von dem ersten DNN 800 ausgegebene Vorhersage 810 mit den Ground-Truth-Daten übereinstimmt, die dem Eingabebild 802 entsprechen. Der durch die Verlustfunktion bestimmte Wert wird in die Faltungsschichten 804 und die vollständig verbundenen Schichten 808 des ersten DNN 800 eingegeben, wo er durch die Schichten rückpropagiert wird, um Gewichtungen für die Schichten zu bestimmen, die einer minimalen Verlustfunktion entsprechen. Die Rückpropagierung ist eine Technik zum Trainieren eines ersten DNN 800, bei der eine Verlustfunktion in die Faltungsschichten 804 und vollständig verbundenen Schichten 808 eingegeben wird, die am weitesten von der Eingabe entfernt sind, und von hinten nach vorne kommuniziert wird, und zum Bestimmen von Gewichtungen für jede Schicht 804, 808 durch Auswählen von Gewichtungen, welche die Verlustfunktion minimieren. Das Trainieren eines ersten DNN 800, um eine 4DoF-Pose für ein Fahrzeug zu bestimmen, wird nachstehend in Bezug auf 11 erörtert.
  • Ein erstes DNN 800 kann trainiert werden, um eine 4DoF-Pose für ein Fahrzeug zu bestimmen. Eine dreidimensionale Pose für ein Objekt kann durch Bestimmen der Position und Ausrichtung des Objekts in 6DoF vorgegeben werden, wie vorstehend beschrieben. In den in dieser Schrift erörterten Beispielen wird angenommen, dass das Objekt, ein Fahrzeug, von einer Fahrbahn oder einer anderen Fläche, wie etwa einem Parkdeck oder einem Parkplatz, getragen wird, die eine Ebene parallel zu der x- und y-Achse ist, und es wird daher angenommen, dass die Roll- und Nickdrehung null sind. Eine 4DoF-Pose für ein Fahrzeug, das von einer ebenen Fläche getragen wird, beinhaltet Werte für x, y, z und Gieren, wobei Gieren ein Winkel in der Ebene ist, die durch die x- und y-Achse definiert ist. In dieser Schrift erörterte Techniken verbessern das Trainieren eines ersten DNN 800, um eine 4DoF-Pose für ein Fahrzeug durch Annotieren von RGB-Bilddaten unter Verwendung von 4DoF-Daten zu bestimmen, die aus einem Entfernungsbild erfasst werden, das durch eine RGB-D-Kamera erfasst wurde.
  • Typischerweise kann eine große Anzahl von annotierten Sicht- oder Entfernungsbildern erforderlich sein, um ein DNN dazu zu trainieren, Objekte zur Fahrzeugführung zu detektieren. Annotierte Sicht- oder Entfernungsbilder sind Bilder, die Daten bezüglich einer Identität und Position von Objekten beinhalten, die in den Sicht- oder Entfernungsbildern eingeschlossen sind. Das Annotieren von Sicht- oder Entfernungsbildern kann viele Stunden Benutzereingabe und viele Stunden Computerzeit erforderlich machen. Zum Beispiel beinhalten einige Trainingsdatensätze Millionen von Bildern und können Millionen von Stunden an Benutzereingaben und Computerzeit erforderlich machen. In dieser Schrift erörterte Techniken verbessern das Training von DNNs, um Objekte zu identifizieren und zu lokalisieren, indem registrierte Sicht- und Entfernungsbilddaten erfasst werden und die Entfernungsbilddaten verwendet werden, um Ground-Truth-Daten zum Trainieren des DNN bereitzustellen. Die Entfernungsbilddaten stellen Ground-Truth-Daten bereit, um das DNN zu trainieren, ohne dass eine Annotation der Sicht- oder Entfernungsbilddaten erforderlich ist, wodurch die Zeit und die Computerressourcen reduziert werden, die erforderlich sind, um einen Trainingsdatensatz zum Trainieren eines DNN zu erzeugen. Ground-Truth-Daten bezieht sich auf Daten, die verwendet werden können, um die Angemessenheit eines Ergebnisses zu bestimmen, das von einem DNN ausgegeben wird, die von einer Quelle unabhängig von dem DNN erfasst wurden. Das Annotieren von RGB-Bilddaten auf diese Weise kann eine große Anzahl (mehr als Tausende) von annotierten RGB-Bildern zum Trainieren eines DNN bereitstellen, ohne dass eine manuelle Annotation erforderlich ist, wodurch Computerressourcen und Zeit gespart werden.
  • Die ausgegebene und umgewandelte 4DoF-Pose kann zusammen mit einem 3D-Modell des Fahrzeugs in ein Bildrendering-Softwareprogramm eingegeben werden, zum Beispiel UnReal Engine, erhältlich von Epic Games, Cary, NC 27518, um ein gerendertes Tiefenbild zu generieren, das ein 3D-Rendering eines Fahrzeugs in der eingegebenen 4DoF-Pose beinhaltet. Das 3D-Modell des Fahrzeugs kann auf Daten einer computergestützten Konstruktion (computer aided design - CAD) für das Fahrzeug basieren, wie nachstehend in Bezug auf 10 erörtert, oder kann durch Scannen des Fahrzeugs mit einem Lidar-Scanner generiert werden, wie nachstehend in Bezug auf 9 erörtert, um die 3D-Modelldaten zu generieren. Die 3D-Modelldaten werden unter Verwendung der Rotations- und Translationsmatrix rotiert und verschoben und das 3D-Modell wird durch die Rendering-Software gerendert, um ein Bild zu generieren, das eine gerenderte Version des 3D-Modells an den Bildkoordinaten beinhaltet, die der 4DoF-Pose entsprechen. Ein gerendertes Binärbild kann durch eine Schwellenwertbildung des gerenderten Tiefenbildes generiert werden.
  • Das gerenderte Binärbild kann mit einem zusammengesetzten Binärbild verglichen werden, das z. B. gemäß den vorstehend in Bezug auf 3-7 erörterten Techniken generiert wurde, um eine Verlustfunktion zum Trainieren des ersten DNN 800 zu bestimmen. Der Vergleich zwischen dem gerenderten Binärbild und dem zusammengesetzten Binärbild kann durch Bestimmen von Unterschieden in den Positionen der Fahrzeuge in dem zusammengesetzten Binärbild und dem gerenderten Binärbild unter Verwendung von L1-Metriken, Fasenabstand, Schwerpunktabstand oder einer Kombination dieser Messwerte bestimmt werden. Eine L1-Metrik misst den Vektorabstand zwischen zwei Binärbildern durch Summieren des x- und y-Abstands zwischen entsprechenden Pixeln jedes Bildes. Dies wird manchmal auch als „Taxi“-Abstand bezeichnet. Ein Fasenabstand gewichtet den Abstand zwischen entsprechenden Pixeln in den zwei Binärbildern durch Gewichten des Abstands, z. B. ist die Gewichtung umso größer, je größer der Abstand ist. Ein Schwerpunktabstand findet einen Mittelpunkt für die Bereiche, die den „1“-Pixeln in dem zusammengesetzten Binärbild und dem gerenderten Binärbild entsprechen, und misst den Abstand zwischen den Mittelpunkten. Die Unterschiede zwischen dem zusammengesetzten Binärbild und dem gerenderten Binärbild bestimmen die Verlustfunktion, die durch die Schichten des ersten DNN 800 rückpropagiert werden soll. Die Rückpropagierung ist eine Technik zum Übertragen einer Verlustfunktion von den letzten Schichten eines ersten DNN 800 an die ersten Schichten und zum Auswählen von Gewichtungen für jede Schicht auf Grundlage des Minimierens der Verlustfunktion, während dieselben Eingabedaten eine Vielzahl von Malen verarbeitet werden, während die Gewichtungen variiert werden.
  • In dieser Schrift erörterte Techniken, welche die Verlustfunktion aus gerenderten 4DoF-Posen und zusammengesetzten Bildern bestimmen, sind differenzierbar. Differenzierbar bedeutet, dass die zum Bestimmen der Verlustfunktionen verwendeten Funktionen partielle Ableitungen in Bezug auf die Gewichtungen aufweisen, die zum Bestimmen der 4DoF-Posen durch das erste DNN 800 verwendet werden. Dies bedeutet, dass für eine gegebene Verlustfunktion eine Richtung bestimmt werden kann, in der die Gewichtungen für die nächste Verarbeitungsiteration, welche die Verlustfunktion reduziert, zu ändern sind. Auf diese Weise können über eine Vielzahl von Verarbeitungsiterationen Gewichtungen bestimmt werden, die bewirken, dass die Verlustfunktionen zu einem Minimalwert konvergieren, wodurch das erste DNN 800 trainiert wird.
  • 9 ist eine grafische Darstellung eines 3D-Modells 900 eines Fahrzeugs 902, das zum Beispiel durch Scannen eines realen Fahrzeugs mit einem Lidar-Scanner generiert wird. Das 3D-Modell 900 kann in ein Bildrendering-Softwareprogramm eingegeben und gemäß einer 4DoF-Pose rotiert, verschoben und skaliert werden, um ein gerendertes Tiefenbild des Fahrzeugs 902 von oben nach unten zu generieren. Ein gerendertes Binärbild des Fahrzeugs 902 kann durch Schwellenwertbildung des gerenderten Tiefenbildes des Fahrzeugs 902 von oben nach unten erzeugt werden. Das gerenderte Binärbild des Fahrzeugs 902 kann auf Grundlage eines zusammengesetzten Tiefenbildes derselben Art von Fahrzeug, das durch eine RGB-D-Kamera 150 erfasst wird, mit einem zusammengesetzten Binärbild verglichen werde, um eine Verlustfunktion zum Trainieren eines ersten DNN 800 zu bilden.
  • 10 ist eine grafische Darstellung einer CAD-Zeichnung 1000 eines Fahrzeugs 1002. Eine CAD-Zeichnung 1000 ist ein Rendering auf Grundlage von CAD-Daten, die einem Fahrzeug 1002 entsprechen. Die CAD-Daten, die einem Fahrzeug 1002 entsprechen, beinhalten die Positionen, Ausrichtungen und Beschaffenheiten der Flächen, aus denen ein Fahrzeug 1002 besteht. Die CAD-Daten können in ein Rendering-Softwareprogramm eingegeben werden, um ein gerendertes Tiefenbild von oben nach unten zu erzeugen. Ein gerendertes Binärbild kann durch eine Schwellenwertbildung des gerenderten Tiefenbildes von oben nach unten generiert werden. Das gerenderte Binärbild kann auf Grundlage eines zusammengesetzten Tiefenbildes derselben Art von Fahrzeug, das durch eine RGB-D-Kamera 150 erfasst wird, mit einem zusammengesetzten Binärbild verglichen werde, um eine Verlustfunktion zum Trainieren eines ersten DNN 800 zu bilden.
  • 11 ist eine grafische Darstellung eines selbstüberwachten Trainingssystems 1100 zum Trainieren eines DNN 1106, um eine 4DoF-Pose auf Grundlage einer Eingabe eines zusammengesetzten Tiefenbildes 1102 zu bestimmen. Ein selbstüberwachtes Trainingssystem 1100 ist ein Softwareprogramm, das auf einem entfernten Servercomputer 140 ausgeführt wird, der in einem Verkehrsinfrastruktursystem 100 eingeschlossen ist. Das selbstüberwachte Trainingssystem 1100 gibt ein zusammengesetztes Tiefenbild (depth image - DI) 1102 ein, das durch einen Tiefengeneratorsensor, zum Beispiel eine RGB-D-Kamera 150, erfasst wurde. Das zusammengesetzte Tiefenbild 1102 wird zuerst in ein Größenänderungsprogramm (RS) 1104 eingegeben, das ein hochauflösendes zusammengesetztes Tiefenbild 1102, zum Beispiel 1K X 1K Pixel (1000 Pixel mal 1000 Pixel), auf eine niedrigere Auflösung, zum Beispiel 256 X 256 Pixel, reduziert. Das zusammengesetzte Tiefenbild mit niedrigerer Auflösung wird in ein DNN (DNN) 1106 eingegeben, das in dieser Schrift auch als SiriusNet 1106 bezeichnet wird. Das DNN oder SiriusNet 1106 ist zusammen mit einem 3D-Modell-Renderer (3D) 1110 in SiriusRenderNet 1108 eingeschlossen. Das DNN oder SiriusNet 1106 gibt ein zusammengesetztes Tiefenbild mit niedriger Auflösung ein und gibt eine geschätzte 4DoF-Pose (POSE) 1112 als (x̂, ŷ, ẑ, yâw) aus. Die geschätzte 4DoF-Pose 1112 wird zusammen mit einem 3D-Modell eines Fahrzeugs, bei dem es sich um dieselbe Marke und dasselbe Modell handeln kann, wie es durch die RGB-D-Kamera 150 abgebildet wurde, in den 3D-Modell-Renderer 1110 eingegeben, um das zusammengesetzte Tiefenbild 1102 zu bilden. Der 3D-Modell-Renderer 1110 generiert das gerenderte Tiefenbild 1114 mit derselben hohen Auflösung wie das ursprüngliche eingegebene zusammengesetzten Tiefenbild 1102.
  • Der 3D-Modell-Renderer 1110 gibt ein gerendertes Tiefenbild an ein erstes Silhouettenprogramm (SIL1) 1116 aus, welches das gerenderte Tiefenbild einer Schwellenwertbildung unterzieht, um ein erstes Binärbild 1118 zu bilden. Das eingegebene zusammengesetzte Tiefenbild 1102 wird an ein zweites Silhouettenprogramm (SIL2) weitergegeben, welches das zusammengesetzte Tiefenbild 1102 einer Schwellenwertbildung unterzieht, um ein zusammengesetztes Binärbild 1122 zu bilden. Die zwei Binärbilder 1118, 1122 werden in ein Silhouettenfehlerprogramm (SERR) 1124 eingegeben, um den Abstand zwischen den zwei Binärbildern 1118, 1122 zu messen, um einen binären Silhouettenfehler gemäß der folgenden Gleichung zu generieren: e r r o r s i l h o u e t t e = f d m a p _ d i s t a n c e ( s i l h o u e t t e r e n d e r e d ,   s i l h o u e t t e d e p t h )
    Figure DE102022123680A1_0001
    wobei fdmap_distance auf einem oder mehreren von einem L1-Abstand, Fasenabstand und Schwerpunktabstand basiert, wie vorstehend in Bezug auf 8 erörtert. Der Silhouettenfehler wird an die Verlustfunktion (LOSS) 1126 weitergegeben, die einen Verlustwert generiert, der an das DNN oder SiriusNet 1106 zurückgegeben wird, wo er rückpropagiert wird, um Gewichtungen durch Minimieren des Verlustwertes zu bestimmen.
  • 12 ist eine grafische Darstellung eines beispielhaften Prozesses 1200, der in einem entfernten Servercomputer 140 gemäß auf einem Speicher davon gespeicherten Programmanweisungen ausgeführt wird, um ein zusammengesetztes Bild 700 aus jeweiligen Bildern 602, 604, 606, 608, die durch eine Vielzahl von Kameras 150 erfasst werden, und jeweiligen Homographiematrizen für die zusätzlichen Kameras 154 zu generieren. Der Prozess 1200 beinhaltet mehrere Blöcke, die in der veranschaulichten Reihenfolge ausgeführt werden können. Der Prozess 1200 könnte alternativ oder zusätzlich weniger Blöcke beinhalten oder beinhalten, dass die Blöcke in anderen Reihenfolgen ausgeführt werden.
  • Der Prozess 1200 beginnt bei einem Block 1205. Bei dem Block 1205 bestimmt der entfernte Servercomputer 140 jeweilige 6DoF-Posen für die Vielzahl von Kameras 150. Wie vorstehend erörtert, sind die Kameras 150 in einem entfernten Kamera-Array 145 angeordnet, um Bilder eines Betriebsbereichs 200 zu erfassen. Die Vielzahl von Kameras 150 beinhaltet eine Host-Kamera 152 und eine oder mehrere zusätzliche Kameras 154. Der entfernte Servercomputer 140 kann die jeweiligen 6DoF-Posen für die Kameras 150 auf Grundlage einer 6DoF-Pose für eine Passermarke 310 und einer 6DoF-Pose für die jeweilige Kamera 150 bezogen auf die Passermarke 310 bestimmen, wie vorstehend in Bezug auf 4 erörtert. Der Prozess 1200 geht zu einem Block 1210 über.
  • Bei dem Block 1210 empfängt der entfernte Servercomputer 140 jeweilige Bilder 602, 604, 606, 608 von der Vielzahl von Kameras 150. Die Bilder 602, 604, 606, 608 beinhalten mindestens einen Abschnitt eines Fahrzeugs 105. Wie vorstehend dargelegt, können die Bilder RGB-Bilder, Tiefenbilder, die mit RGB-Bildern registriert sind, und/oder Binärbilder sein, die durch Schwellenwertbildung der Tiefenbilder generiert werden. Der Prozess 1200 geht zu einem Block 1215 über.
  • Bei dem Block 1215 bestimmt der entfernte Servercomputer 140 eine 3D-Referenzebene 500 auf Grundlage eines durch die Host-Kamera 152 erfassten Tiefenbildes, wie vorstehend in Bezug auf 5 erörtert. Wie vorstehend dargelegt, kann die 3D-Referenzebene 500 durch eines von einer Bodenfläche oder einer Fläche des Fahrzeugs 105, z. B. einer Motorhaube, einem Dach usw., definiert sein. Der entfernte Servercomputer 140 wählt dann zufällig eine Vielzahl von virtuellen 3D-Punkten 502 in der 3D-Referenzebene 500 aus, wie vorstehend in Bezug auf 5B erörtert. Der Prozess 1200 geht zu einem Block 1220 über.
  • Bei dem Block 1220 bestimmt der entfernte Servercomputer 140 2D-Projektionen 612 der virtuellen 3D-Punkte 502 für die jeweiligen zusätzlichen Kameras 154. Das heißt, der entfernte Servercomputer 140 rendert die ausgewählten virtuellen 3D-Punkte 502 in einer 2D-Ebene 614 auf Grundlage einer 6DoF-Pose für die jeweiligen zusätzlichen Kameras 154, wie vorstehend in Bezug auf 7 erörtert. Der Prozess 1200 geht zu einem Block 1225 über.
  • Bei dem Block 1225 berechnet der entfernte Servercomputer 140 jeweilige Homographiematrizen für die zusätzlichen Kameras 154. Wie vorstehend dargelegt, gibt eine Homographiematrix eine mathematische Beziehung zwischen Pixelkoordinaten in einem Bild und Pixelkoordinaten in einem anderen Bild vor. Das heißt, die Homographiematrix kann verwendet werden, um Pixelkoordinaten von einem Pixelkoordinatensystem, das durch eine Kamera 150 definiert ist, in ein Pixelkoordinatensystem zu transformieren, das durch eine andere Kamera 150 definiert ist. Der entfernte Servercomputer 140 berechnet die jeweiligen Homographiematrizen zum Transformieren der 2D-Projektionen 612 für die jeweiligen zusätzlichen Kameras 154 in die 2D-Projektionen 612 für die Host-Kamera 152, wie vorstehend in Bezug auf 7 erörtert. Der Prozess 1200 geht zu einem Block 1230 über.
  • Bei dem Block 1230 verzerrt der entfernte Servercomputer 140 jeweilige, z. B. RGB-, Tiefen- und/oder Binärbilder 604, 606, 608, die durch die zusätzlichen Kameras 154 erfasst wurden, auf Grundlage der jeweiligen Homographiematrizen für die zusätzlichen Kameras 154. Das heißt, der entfernte Servercomputer 140 transformiert die Pixelkoordinaten für die jeweiligen Bilder 604, 606, 608 in Pixelkoordinaten für das durch die Host-Kamera 152 erfasste Bild 602, d. h. ein durch die Host-Kamera 152 definiertes Pixelkoordinatensystem, wie vorstehend in Bezug auf 8 erörtert. Der Prozess 1200 geht zu einem Block 1235 über.
  • Bei dem Block 1235 generiert der entfernte Servercomputer 140 ein zusammengesetztes Bild, z. B. ein zusammengesetztes RGB-, Tiefen- und/oder Binärbild, 700, indem er die 2D-Projektionen 612 in den jeweiligen verzerrten Bildern 604, 606, 608 mit den 2D-Projektionen in dem Bild 602 ausrichtet, das durch die Host-Kamera 152 erfasst wurde, wie vorstehend in Bezug auf 8 erörtert. Zusätzlich kann der entfernte Servercomputer 140 jeweilige 6DoF-Posen für die zusätzlichen Kameras 154 aktualisieren, indem er Optimierungstechniken anwendet, die extrinsische Kalibrierungsparameter für die zusätzlichen Kameras 154 optimieren, um einen Neuproj ektionsfehler E in dem zusammengesetzten Bild 700 zu reduzieren, wie vorstehend erörtert. Der Prozess 1200 endet im Anschluss an den Block 1235.
  • 13 ist eine grafische Darstellung eines beispielhaften Prozesses 1300, der in einem entfernten Servercomputer 140 gemäß auf einem Speicher davon gespeicherten Programmanweisungen ausgeführt wird, um ein erster DNN 800 auf Grundlage von zusammengesetzten Tiefenbildern 1102 zu trainieren. Der Prozess 1300 beinhaltet mehrere Blöcke, die in der veranschaulichten Reihenfolge ausgeführt werden können. Der Prozess 1300 könnte alternativ oder zusätzlich weniger Blöcke beinhalten oder beinhalten, dass die Blöcke in anderen Reihenfolgen ausgeführt werden.
  • Der Prozess 1300 beginnt bei einem Block 1305. Bei dem Block 1305 gibt der entfernte Servercomputer ein zusammengesetztes Tiefenbild 1102 (das z. B. gemäß dem Prozess 1200 generiert wurde) in ein DNN oder SiriusNet 1106 ein, um eine 4DoF-Pose eines Objekts zu bestimmen, das in dem zusammengesetzten Tiefenbild 1102 eingeschlossen ist, wie vorstehend in Bezug auf 11 erörtert. Bei dem Objekt kann es sich zum Beispiel um ein Fahrzeug 105 handeln. Der Prozess 1300 geht zu einem Block 1310 über.
  • Bei dem Block 1310 bestimmt der entfernte Servercomputer 140 ein erstes Silhouettenbild durch Eingeben der 4DoF-Pose des Objekts in ein 3D-Rendering-Programm zusammen mit einem 3D-Modell des Objekts, um ein gerendertes Tiefenbild des Objekts zu bestimmen. Zum Beispiel kann es sich bei dem 3D-Modell um CAD-Daten bezüglich der konkreten Marke und des konkreten Modells des Fahrzeugs handeln, die in dem zusammengesetzten Tiefenbild 1102 eingeschlossen sind, das bei dem Block 1305 in das DNN 1106 eingegeben wird. Das erste Silhouettenbild kann durch Schwellenwertbildung des gerenderten Tiefenbildes auf Grundlage eines durch einen Benutzer bestimmten Schwellenwertes bestimmt werden, wie vorstehend in Bezug auf 11 erörtert. Der Prozess 1300 geht zu einem Block 1315 über.
  • Bei dem Block 1315 bildet der entfernte Servercomputer 140 einen Schwellenwert für das zusammengesetzte Tiefenbild 1102 auf Grundlage eines von einem Benutzer bestimmten Schwellenwertes, um es als zweites Schattenbildbild zu bestimmen, wie vorstehend in Bezug auf 11 erörtert. Der Prozess 1300 geht zu einem Block 1320 über.
  • Bei dem Block 1320 vergleicht der entfernte Servercomputer 140 das erste Silhouettenbild mit dem zweiten Silhouettenbild, um eine Verlustfunktion zu bestimmen, wie vorstehend in Bezug auf 11 erörtert. Der Prozess 1300 geht zu einem Block 1325 über.
  • Bei dem Block 1325 trainiert der entfernte Servercomputer 140 das DNN 1106 auf Grundlage der Verlustfunktion. Die Verlustfunktion kann durch die Schichten des DNN 1106 rückpropagiert werden, um Gewichtungen zu bestimmen, die auf Grundlage der Verarbeitung des eingegebenen zusammengesetzten Tiefenbildes eine Vielzahl von Malen und des Bestimmens einer Verlustfunktion für jede Verarbeitungsiteration eine minimale Verlustfunktion ergeben. Da die zum Bestimmen der Verlustfunktion verwendeten Schritte differenzierbar sind, können die in Bezug auf die Gewichtungen bestimmten partiellen Ableitungen angeben, in welcher Richtung die Gewichtungen für eine nachfolgende Verarbeitungsiteration zu ändern sind, welche die Verlustfunktion reduziert, und dadurch ermöglichen, dass die Trainingsfunktion konvergiert, wodurch das DNN 1106 optimiert wird. Der Prozess 1300 geht zu einem Block 1330 über.
  • Bei dem Block 1330 stellt der entfernte Servercomputer 140 einen Fahrzeugpfad 210 an einem Fahrzeugcomputer 110 in einem Fahrzeug 105 bereit. Der entfernte Servercomputer 140 kann zusammengesetzte Tiefenbilder 1102 in das trainierte DNN 1106 eingeben und das trainierte DNN 1106 kann 4DoF-Posen 1112 für das Fahrzeug 105 ausgeben, das in einem Betriebsbereich 200 betrieben wird. Der entfernte Servercomputer 140 kann die 4DoF-Posen 1112 verarbeiten, um eine Vielzahl von Positionen zu bestimmen, die in dieser Schrift als „Breadcrumbs“ bezeichnet werden und in einem Fahrzeugpfad 210 eingeschlossen sind. Das bedeutet, der entfernte Servercomputer 140 kann den Fahrzeugpfad 210 auf Grundlage der ausgegebenen 4DoF-Posen 1112 für das Fahrzeug 105 bestimmen. Ein Fahrzeugpfad 210 kann zum Beispiel auf Grundlage der „Breadcrumbs“ bestimmt werden, indem eine Polynomfunktion bestimmt wird, die durch die „Breadcrumbs“ iteriert. Der entfernte Servercomputer 140 kann den Fahrzeugpfad 210 z. B. über V-zu-I-Kommunikation, das Netzwerk 135 usw. an den Fahrzeugcomputer 110 übertragen. Der Fahrzeugpfad 210 kann durch den Fahrzeugcomputer 110 verwendet werden, um das Fahrzeug 105 durch Steuern einer oder mehrerer Fahrzeugkomponenten 125 zu betreiben, um das Fahrzeug 105 dazu zu veranlassen, entlang des Fahrzeugpfades 210 zu fahren. Im Anschluss an Block 1330 endet der Prozess 1300.
  • Im vorliegenden Zusammenhang ist mit dem Ausdruck „im Wesentlichen“ gemeint, dass eine Form, eine Struktur, ein Messwert, eine Menge, eine Zeit usw. aufgrund von Mängeln bei Materialien, Bearbeitung, Fertigung, Datenübertragung, Berechnungszeit usw. von einem/einer genauen beschriebenen Geometrie, Abstand, Messwert, Menge, Zeit usw. abweichen kann.
  • Im Allgemeinen können die beschriebenen Rechensysteme und/oder -vorrichtungen ein beliebiges aus einer Reihe von Computerbetriebssystemen einsetzen, einschließlich unter anderem Versionen und/oder Varianten der Anwendung Ford Sync®, der Middleware AppLink/Smart Device Link, des Betriebssystems Microsoft Automotive®, des Betriebssystems Microsoft Windows®, des Betriebssystems Unix (z. B. des Betriebssystems Solaris®, vertrieben durch die Oracle Corporation in Redwood Shores, Kalifornien), des Betriebssystems AIX UNIX, vertrieben durch International Business Machines in Armonk, New York, des Betriebssystems Linux, der Betriebssysteme Mac OSX und iOS, vertrieben durch die Apple Inc. in Cupertino, Kalifornien, des BlackBerry OS, vertrieben durch die Blackberry, Ltd. in Waterloo, Kanada, und des Betriebssystems Android, entwickelt durch die Google, Inc. und die Open Handset Alliance, oder der QNX® CAR Platform for Infotainment, angeboten durch QNX Software Systems. Beispiele für Rechenvorrichtungen beinhalten unter anderem einen ersten bordeigenen Computer, einen Computerarbeitsplatz, einen Server, einen Desktop-, Notebook-, Laptop- oder Handheld-Computer oder ein anderes Rechensystem und/oder eine andere Rechenvorrichtung.
  • Computer und Rechenvorrichtungen beinhalten im Allgemeinen computerausführbare Anweisungen, wobei die Anweisungen durch eine oder mehrere Rechenvorrichtungen, wie etwa die vorstehend aufgeführten, ausführbar sein können. Computerausführbare Anweisungen können von Computerprogrammen kompiliert oder interpretiert werden, die unter Verwendung einer Vielfalt von Programmiersprachen und/oder -technologien erstellt werden, einschließlich unter anderem und entweder für sich oder in Kombination Java™, C, C++, Matlab, Simulink, Stateflow, Visual Basic, Java Script, Perl, HTML usw. Einige dieser Anwendungen können auf einer virtuellen Maschine zusammengestellt und ausgeführt werden, wie etwa der Java Virtual Machine, der Dalvik Virtual Machine oder dergleichen. Im Allgemeinen empfängt ein Prozessor (z. B. ein Mikroprozessor) Anweisungen z. B. von einem Speicher, einem computerlesbaren Medium usw. und führt diese Anweisungen aus, wodurch er einen oder mehrere Prozesse durchführt, einschließlich eines oder mehrerer der in dieser Schrift beschriebenen Prozesse. Derartige Anweisungen und andere Daten können unter Verwendung einer Vielfalt von computerlesbaren Medien gespeichert und übertragen werden. Eine Datei in einer Rechenvorrichtung ist im Allgemeinen eine Sammlung von Daten, die auf einem computerlesbaren Medium, wie etwa einem Datenspeichermedium, einem Direktzugriffsspeicher usw., gespeichert ist.
  • Ein Speicher kann ein computerlesbares Medium (auch als prozessorlesbares Medium bezeichnet) beinhalten, das ein beliebiges nicht transitorisches (z. B. materielles) Medium beinhaltet, das am Bereitstellen von Daten (z. B. Anweisungen) beteiligt ist, die durch einen Computer (z. B. durch einen Prozessor eines Computers) ausgelesen werden können. Ein derartiges Medium kann viele Formen annehmen, einschließlich unter anderem nicht flüchtiger Medien und flüchtiger Medien. Zu nicht flüchtigen Medien gehören beispielsweise optische oder Platten- und sonstige dauerhafte Speicher. Flüchtige Medien können zum Beispiel einen dynamischen Direktzugriffsspeicher (dynamic random access memory - DRAM) beinhalten, der typischerweise einen Hauptspeicher darstellt. Derartige Anweisungen können durch ein oder mehrere Übertragungsmedien übertragen werden, einschließlich Koaxialkabeln, Kupferdraht und Glasfaser, einschließlich der Drähte, aus denen ein Systembus besteht, der mit einem Prozessor einer ECU gekoppelt ist. Übliche Formen von computerlesbaren Medien beinhalten zum Beispiel RAM, ein PROM, ein EPROM, ein FLASH-EEPROM, einen beliebigen anderen Speicherchip oder eine beliebige andere Speichereinheit oder ein beliebiges anderes Medium, von dem ein Computer lesen kann.
  • Datenbanken, Datendepots oder andere Datenspeicher, die in dieser Schrift beschrieben sind, können verschiedene Arten von Mechanismen zum Speichern von, Zugreifen auf und Abrufen von verschiedenen Arten von Daten beinhalten, darunter eine hierarchische Datenbank, einen Satz von Dateien in einem Dateisystem, eine Anwendungsdatenbank in einem anwendereigenen Format, ein relationales Datenbankverwaltungssystem (Relational Database Management System - RDBMS) usw. Jeder derartige Datenspeicher ist im Allgemeinen in einer Rechenvorrichtung eingeschlossen, die ein Computerbetriebssystem einsetzt, wie etwa eines der vorstehend erwähnten, wobei auf eine oder mehrere einer Vielfalt von Weisen über ein Netzwerk darauf zugegriffen wird. Auf ein Dateisystem kann von einem Computerbetriebssystem zugegriffen werden und es kann Dateien beinhalten, die in verschiedenen Formaten gespeichert sind. Ein RDBMS setzt im Allgemeinen die Structured Query Language (SQL) zusätzlich zu einer Sprache zum Erzeugen, Speichern, Editieren und Ausführen gespeicherter Prozeduren ein, wie etwa die vorstehend erwähnte PL/SQL-Sprache.
  • In einigen Beispielen können Systemelemente als computerlesbare Anweisungen (z. B. Software) auf einer oder mehreren Rechnervorrichtungen (z. B. Servern, PCs usw.) umgesetzt sein, welche auf einem mit dieser assoziierten computerlesbaren Speichermedium gespeichert sind (z. B. Platten, Speicher usw.). Ein Computerprogrammprodukt kann derartige auf computerlesbaren Medien gespeicherte Anweisungen zum Ausführen der in dieser Schrift beschriebenen Funktionen umfassen.
  • Hinsichtlich der in dieser Schrift beschriebenen Medien, Prozesse, Systeme, Verfahren, Heuristiken usw. versteht es sich, dass, auch wenn die Schritte derartiger Prozesse usw. als gemäß einer gewissen Reihenfolge erfolgend beschrieben worden sind, derartige Prozesse jedoch so umgesetzt werden können, dass die beschriebenen Schritte in einer Reihenfolge durchgeführt werden, die von der in dieser Schrift beschriebenen Reihenfolge verschieden ist. Es versteht sich ferner, dass gewisse Schritte gleichzeitig durchgeführt, andere Schritte hinzugefügt oder gewisse in dieser Schrift beschriebene Schritte weggelassen werden können. Anders ausgedrückt, dienen die Beschreibungen von Prozessen in dieser Schrift dem Zwecke der Veranschaulichung gewisser Ausführungsformen und sollten keinesfalls dahingehend ausgelegt werden, dass sie die Patentansprüche einschränken.
  • Dementsprechend versteht es sich, dass die vorstehende Beschreibung veranschaulichend und nicht einschränkend sein soll. Viele Ausführungsformen und Anwendungen, bei denen es sich nicht um die bereitgestellten Beispiele handelt, werden dem Fachmann beim Lesen der vorstehenden Beschreibung ersichtlich. Der Umfang der Erfindung sollte nicht unter Bezugnahme auf die vorstehende Beschreibung festgelegt werden, sondern stattdessen unter Bezugnahme auf die beigefügten Patentansprüche in Zusammenhang mit dem vollständigen Umfang von Äquivalenten, zu denen derartige Patentansprüche berechtigen. Es wird erwartet und ist beabsichtigt, dass es zukünftige Entwicklungen im in dieser Schrift erörterten Stand der Technik geben wird und dass die offenbarten Systeme und Verfahren in derartige zukünftige Ausführungsformen aufgenommen werden. Insgesamt versteht es sich, dass die Erfindung modifiziert und variiert werden kann und ausschließlich durch die folgenden Patentansprüche eingeschränkt ist.
  • Allen in den Patentansprüchen verwendeten Ausdrücken soll deren allgemeine und gewöhnliche Bedeutung zukommen, wie sie vom Fachmann verstanden wird, sofern in dieser Schrift nicht ausdrücklich etwas anderes angegeben ist. Insbesondere ist die Verwendung der Singularartikel, wie etwa „ein“, „eine“, „der“, „die“, „das“ usw., dahingehend auszulegen, dass ein oder mehrere der angegebenen Elemente genannt werden, sofern ein Patentanspruch nicht eine ausdrückliche gegenteilige Einschränkung nennt.
  • Gemäß der vorliegenden Erfindung ist ein System bereitgestellt, das einen Computer aufweist, der einen Prozessor und einen Speicher beinhaltet, wobei auf dem Speicher Anweisungen gespeichert sind, die durch den Prozessor zu Folgendem ausführbar sind: zufälligem Auswählen einer Vielzahl von virtuellen dreidimensionalen (3D-)Punkten, die auf einer 3D-Referenzebene für ein Kamera-Array verteilt ist, das eine Vielzahl von Kameras beinhaltet, wobei die Vielzahl von Kameras eine Host-Kamera und eine oder mehrere zusätzliche Kameras beinhaltet; Bestimmen jeweiliger zweidimensionaler (2D-)Projektionen der Vielzahl von virtuellen 3D-Punkten für die Vielzahl von Kameras auf Grundlage jeweiliger Posen der Kameras; Bestimmen, für die jeweilige eine oder die jeweiligen mehreren zusätzlichen Kameras, jeweiliger Homographiematrizen auf Grundlage der 2D-Projektionen für die jeweilige Kamera und der 2D-Projektionen für die Host-Kamera, wobei die jeweiligen Homographiematrizen die 2D-Projektionen für die jeweilige Kamera auf die 2D-Projektionen für die Host-Kamera abbilden; und Generieren eines zusammengesetzten Bildes auf Grundlage jeweiliger Bilder, die durch die Vielzahl von Kameras aufgenommen werden, und der jeweilige Homographiematrizen.
  • Gemäß einer Ausführungsform beinhalten die Anweisungen ferner Anweisungen zum Eingeben des zusammengesetzten Bildes in ein neuronales Netz, das eine Pose eines Objekts ausgibt, das in dem zusammengesetzten Bild eingeschlossen ist.
  • Gemäß einer Ausführungsform wird die Pose des Objekts in Koordinaten eines realen Koordinatensystems auf Grundlage einer orthogonalen x-, y- und z-Achse und einer Gierdrehung um die z-Achse bestimmt.
  • Gemäß einer Ausführungsform handelt es sich bei dem Objekt um ein Fahrzeug und wobei die Anweisungen ferner Anweisungen zum Generieren eines Pfades für das Fahrzeug auf Grundlage der bestimmten Pose beinhalten.
  • Gemäß einer Ausführungsform beinhalten die Anweisungen ferner Anweisungen zum Betreiben des Fahrzeugs entlang des generierten Pfades.
  • Gemäß einer Ausführungsform beinhalten die Anweisungen ferner Anweisungen zu Folgendem: Bestimmen einer ersten 2D-Silhouette des Objekts auf Grundlage von Eingeben der Pose des Objekts und eines 3D-Modells des Objekts in ein Silhouettenrendering-Programm; Bestimmen einer zweiten 2D-Silhouette des Objekts auf Grundlage des zusammengesetzten Bildes; und Trainieren des neuronalen Netzes auf Grundlage eines Unterschiedes zwischen der ersten 2D-Silhouette und der zweiten 2D-Silhouette.
  • Gemäß einer Ausführungsform beinhalten die Anweisungen ferner Anweisungen zum Bestimmen jeweiliger Posen der Vielzahl von Kameras auf Grundlage von Kalibrierungsbildern, die von den jeweiligen Kameras aufgenommen werden und eine Passermarke beinhalten.
  • Gemäß einer Ausführungsform werden die Posen der jeweiligen Kameras in Koordinaten eines realen Koordinatensystems auf Grundlage einer orthogonalen x-, y- und z-Achse und jeweils einer Roll-, Nick- und Gierdrehung um die x-, y- und z-Achse bestimmt.
  • Gemäß einer Ausführungsform beinhalten die Anweisungen ferner Anweisungen zum Bestimmen von Aktualisierungsposen für jeweilige Kameras auf Grundlage eines Neuprojektionsfehlers in dem zusammengesetzten Bild.
  • Gemäß einer Ausführungsform ist die 3D-Referenzebene durch eines von einer Bodenfläche oder einer Fläche eines Objekts definiert.
  • Gemäß einer Ausführungsform sind die Bilder zeitsynchronisiert.
  • Gemäß einer Ausführungsform handelt es sich bei der Vielzahl von Kameras um Rot-Grün-Blau-Tiefenkameras (RGB-D-Kameras).
  • Gemäß der vorliegenden Erfindung beinhaltet ein Verfahren Folgendes: zufälliges Auswählen einer Vielzahl von virtuellen dreidimensionalen (3D-)Punkten, die auf einer 3D-Referenzebene für ein Kamera-Array verteilt ist, das eine Vielzahl von Kameras beinhaltet, wobei die Vielzahl von Kameras eine Host-Kamera und eine oder mehrere zusätzliche Kameras beinhaltet; Bestimmen jeweiliger zweidimensionaler (2D-)Projektionen der Vielzahl von virtuellen 3D-Punkten für die Vielzahl von Kameras auf Grundlage jeweiliger Posen der Kameras; Bestimmen, für die jeweilige eine zusätzliche oder die jeweiligen mehreren zusätzlichen Kameras, jeweiliger Homographiematrizen auf Grundlage der 2D-Projektionen für die jeweilige Kamera und der 2D-Projektionen für die Host-Kamera, wobei die jeweiligen Homographiematrizen die 2D-Projektionen für die jeweilige Kamera auf die 2D-Projektionen für die Host-Kamera abbilden; und Generieren eines zusammengesetzten Bildes auf Grundlage jeweiliger Bilder, die durch die Vielzahl von Kameras aufgenommen werden, und der jeweiligen Homographiematrizen.
  • In einem Aspekt der Erfindung beinhaltet das Verfahren Eingeben des zusammengesetzten Bildes in ein neuronales Netz, das eine Pose eines Objekts ausgibt, das in dem zusammengesetzten Bild eingeschlossen ist.
  • In einem Aspekt der Erfindung wird die Pose des Objekts in Koordinaten eines realen Koordinatensystems auf Grundlage einer orthogonalen x-, y- und z-Achse und einer Gierdrehung um die z-Achse bestimmt.
  • In einem Aspekt der Erfindung handelt es sich bei dem Objekt um ein Fahrzeug und ferner umfassend: Generieren eines Pfades für das Fahrzeug auf Grundlage der bestimmten Pose; und Betreiben des Fahrzeugs entlang des generieren Pfades.
  • In einem Aspekt der Erfindung beinhaltet das Verfahren Folgendes: Bestimmen einer ersten 2D-Silhouette des Objekts auf Grundlage von Eingeben der Pose des Objekts und eines 3D-Modells des Objekts in ein Silhouettenrendering-Programm; Bestimmen einer zweiten 2D-Silhouette des Objekts auf Grundlage des zusammengesetzten Bildes; und Trainieren des neuronalen Netzes auf Grundlage eines Unterschiedes zwischen der ersten 2D-Silhouette und der zweiten 2D-Silhouette.
  • In einem Aspekt der Erfindung beinhaltet das Verfahren Bestimmen jeweiliger Posen der Vielzahl von Kameras auf Grundlage von Kalibrierungsbildern, die von den jeweiligen Kameras aufgenommen werden und eine Passermarke beinhalten.
  • In einem Aspekt der Erfindung werden die Posen der jeweiligen Kameras in Koordinaten eines realen Koordinatensystems auf Grundlage einer orthogonalen x-, y- und z-Achse und jeweils einer Roll-, Nick- und Gierdrehung um die x-, y- und z-Achse bestimmt.
  • In einem Aspekt der Erfindung beinhaltet das Verfahren Bestimmen von aktualisierten Posen für jeweilige Kameras auf Grundlage eines Neuprojektionsfehlers in dem zusammengesetzten Bild.

Claims (15)

  1. Verfahren, umfassend einen Computer, der einen Prozessor und einen Speicher beinhaltet, wobei auf dem Speicher Anweisungen gespeichert sind, die durch den Prozessor zu Folgendem ausführbar sind: zufälligem Auswählen einer Vielzahl von virtuellen dreidimensionalen (3D-)Punkten, die auf einer Referenz-3D-Ebene für ein Kamera-Array verteilt ist, das eine Vielzahl von Kameras beinhaltet, wobei die Vielzahl von Kameras eine Host-Kamera und eine oder mehrere zusätzliche Kameras beinhaltet; Bestimmen jeweiliger zweidimensionaler (2D-)Projektionen der Vielzahl von virtuellen 3D-Punkten für die Vielzahl von Kameras auf Grundlage jeweiliger Posen der Kameras; Bestimmen, für die jeweilige eine zusätzliche oder die jeweiligen mehreren zusätzlichen Kameras, jeweiliger Homographiematrizen auf Grundlage der 2D-Projektionen für die jeweilige Kamera und der 2D-Projektionen für die Host-Kamera, wobei die jeweiligen Homographiematrizen eine Transformation der 2D-Proj ektionen zwischen einer Bildebene, die durch die jeweilige Kamera definiert ist, und einer Bildebene vermitteln, die durch die Host-Kamera definiert ist; und Generieren eines zusammengesetzten Bildes auf Grundlage jeweiliger Bilder, die durch die Vielzahl von Kameras aufgenommen werden, und der jeweiligen Homographiematrizen.
  2. Verfahren nach Anspruch 1, ferner umfassend Eingeben des zusammengesetzten Bildes in ein neuronales Netz, das eine Pose eines Objekts ausgibt, das in dem zusammengesetzten Bild eingeschlossen ist.
  3. Verfahren nach Anspruch 2, wobei die Pose des Objekts in Koordinaten des realen Koordinatenverfahrens auf Grundlage einer orthogonalen x-, y- und z-Achse und einer Gierdrehung um die z-Achse bestimmt wird.
  4. Verfahren nach Anspruch 2, wobei das Objekt ein Fahrzeug ist, und ferner umfassend Generieren eines Pfades für das Fahrzeug auf Grundlage der bestimmten Pose.
  5. Verfahren nach Anspruch 4, ferner umfassend Betreiben des Fahrzeugs entlang des generierten Pfades.
  6. Verfahren nach Anspruch 2, ferner umfassend: Bestimmen einer ersten 2D-Silhouette des Objekts auf Grundlage von Eingeben der Pose des Objekts und eines 3D-Modells des Objekts in ein Silhouettenrendering-Programm; Bestimmen einer zweiten 2D-Silhouette des Objekts auf Grundlage des zusammengesetzten Bildes; und Trainieren des neuronalen Netzes auf Grundlage eines Unterschieds zwischen der ersten 2D-Silhouette und der zweiten 2D-Silhouette.
  7. Verfahren nach Anspruch 1, ferner umfassend Bestimmen jeweiliger Posen der Vielzahl von Kameras auf Grundlage von Kalibrierungsbildern, die durch die jeweiligen Kameras aufgenommen werden und ein Kalibrierungsmuster beinhalten.
  8. Verfahren nach Anspruch 1, wobei die Posen der jeweiligen Kameras in Koordinaten des realen Koordinatenverfahrens auf Grundlage einer orthogonalen x-, y- und z-Achse und jeweils einer Roll-, Neige- und Gierdrehung um die x-, y- und z-Achse bestimmt werden.
  9. Verfahren nach Anspruch 1, ferner umfassend Eingeben des zusammengesetzten Bildes in ein neuronales Netz, das aktualisierte Posen für jeweilige Kameras auf Grundlage eines Neuprojektionsfehlers in dem zusammengesetzten Bild ausgibt.
  10. Verfahren nach Anspruch 1, wobei die Referenz-3D-Ebene durch eine von einer Bodenfläche oder einer Fläche eines Objekts definiert ist.
  11. Verfahren nach Anspruch 1, wobei die Bilder zeitsynchronisiert sind.
  12. Verfahren nach Anspruch 1, wobei es sich bei der Vielzahl von Kameras um Rot-Grün-Blau-Tiefenkameras (RGBD-Kameras) handelt.
  13. Computer, der dazu programmiert ist, das Verfahren nach einem der Ansprüche 1-12 auszuführen.
  14. Computerprogrammprodukt, umfassend Anweisungen zum Ausführen des Verfahrens nach einem der Ansprüche 1-12.
  15. Fahrzeug, umfassend einen Computer, der dazu programmiert ist, das Verfahren nach einem der Ansprüche 1-12 auszuführen.
DE102022123680.3A 2021-09-27 2022-09-15 Objektposenschätzung Pending DE102022123680A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/485,746 2021-09-27
US17/485,746 US12045950B2 (en) 2021-09-27 2021-09-27 Object pose estimation

Publications (1)

Publication Number Publication Date
DE102022123680A1 true DE102022123680A1 (de) 2023-03-30

Family

ID=85477343

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102022123680.3A Pending DE102022123680A1 (de) 2021-09-27 2022-09-15 Objektposenschätzung

Country Status (3)

Country Link
US (1) US12045950B2 (de)
CN (1) CN115880357A (de)
DE (1) DE102022123680A1 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116193274B (zh) * 2023-04-27 2023-07-07 北京博瑞翔伦科技发展有限公司 一种多摄像头安全控制方法和系统
CN116524217B (zh) * 2023-07-03 2023-08-25 北京七维视觉传媒科技有限公司 人体姿态图像匹配方法、装置、电子设备及存储介质
CN118294165A (zh) * 2024-04-09 2024-07-05 上海车右智能科技有限公司 道路交通标线生成系统、方法及自动驾驶在环测试系统

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5729471A (en) * 1995-03-31 1998-03-17 The Regents Of The University Of California Machine dynamic selection of one video camera/image of a scene from multiple video cameras/images of the scene in accordance with a particular perspective on the scene, an object in the scene, or an event in the scene
KR100943719B1 (ko) * 2008-11-04 2010-02-23 광주과학기술원 다시점 영상의 기하학적 보정 시스템 및 방법
US9013550B2 (en) 2010-09-09 2015-04-21 Qualcomm Incorporated Online reference generation and tracking for multi-user augmented reality
US20130208009A1 (en) 2010-10-01 2013-08-15 Saab Ab Method and apparatus for optimization and incremental improvement of a fundamental matrix
US10055667B2 (en) * 2016-08-03 2018-08-21 X Development Llc Generating a model for an object encountered by a robot
KR102662201B1 (ko) 2017-06-28 2024-04-30 매직 립, 인코포레이티드 콘볼루셔널 이미지 변환을 사용하여 동시 로컬화 및 맵핑을 수행하기 위한 방법 및 시스템
WO2021119363A2 (en) * 2019-12-10 2021-06-17 Agnetix, Inc. Multisensory imaging methods and apparatus for controlled environment horticulture using irradiators and cameras and/or sensors
CN111340710B (zh) 2019-12-31 2023-11-07 智慧互通科技股份有限公司 一种基于图像拼接获取车辆信息的方法及系统
US12001171B2 (en) * 2020-04-24 2024-06-04 Meta Platforms Technologies, Llc Electronic system and related devices and methods
CN111862673B (zh) 2020-06-24 2021-10-15 北京易航远智科技有限公司 基于顶视图的停车场车辆自定位及地图构建方法
US11758101B2 (en) * 2020-08-25 2023-09-12 Samsung Electronics Co., Ltd. Restoration of the FOV of images for stereoscopic rendering
CN112040265B (zh) * 2020-09-09 2022-08-09 河南省科学院地理研究所 一种多摄像机协同的地理视频直播流生成方法
CN112288827B (zh) * 2020-11-22 2022-09-02 吉林大学 基于线光场的汽车检测无公共视场相机全局标定方法与系统

Also Published As

Publication number Publication date
US20230097584A1 (en) 2023-03-30
US12045950B2 (en) 2024-07-23
CN115880357A (zh) 2023-03-31

Similar Documents

Publication Publication Date Title
DE102022123680A1 (de) Objektposenschätzung
DE102019102205A1 (de) System und verfahren zur end-to-end-validierung von autonomen fahrzeugen
DE102021100101A1 (de) Fahrzeugsensorkalibrierung
DE102021112616A1 (de) Selbstüberwachte schätzung einer beobachteten fahrzeugpose
DE102019125131A1 (de) Sensorblickfeldabbildung
DE102021101270A1 (de) Trainieren eines neuronalen netzwerks eines fahrzeugs
DE102021109413A1 (de) Augmentation von fahrzeugdaten
DE102019127038A1 (de) Erfassung von angriffen auf fahrzeugnetzwerke
DE102022123859A1 (de) Objektlageerfassung durch ein neuronales netz
DE102021125166A1 (de) Bestimmung von seitenwindrisiken
DE102019127062A1 (de) Transportinfrastrukturkommunikation und -steuerung
DE102014108858A1 (de) Verfahren und Vorrichtung zum Abschätzen und Verfolgen von Form und Pose eines dreidimensionalen Objekts
DE102020126155A1 (de) Trainieren eines neuronalen netzwerks eines fahrzeugs
DE102022114047A1 (de) Bildannotation für tiefe neuronale netze
DE102020122086A1 (de) Messen von vertrauen in tiefen neuronalen netzwerken
DE102020128978A1 (de) Trainieren von tiefen neuronalen netzwerken mit synthetischen bildern
DE102022108505A1 (de) Objekterfassung durch ein neuronales netz
DE102022114048A1 (de) Bildentzerrung
DE102023102645A1 (de) Lokalisierung von fahrzeugen
DE102020100230A1 (de) Rekonstruktion von landmarkenpositionen in autonomen maschinenanwendungen
DE102021122407A1 (de) Segmentierung und klassifizierung von punktwolkendaten
DE102023120330A1 (de) Neuronales strahlungsfeld für ein fahrzeug
DE102022109113A1 (de) Objektidentifizierung mit neuronalem netz
DE102023109927A1 (de) Augmented-reality-bilderzeugung mit mehreren ebenen
DE102023100515A1 (de) Kalibrierung holografischer displays durch maschinelles lernen

Legal Events

Date Code Title Description
R082 Change of representative

Representative=s name: BONSMANN - BONSMANN - FRANK PATENTANWAELTE, DE