-
TECHNISCHES GEBIET
-
Aspekte dieser Offenbarung betreffen allgemein die Fahrzeugnavigation und insbesondere die Kartengeneration.
-
ALLGEMEINER STAND DER TECHNIK
-
Moderne Vorrichtungen zur optischen Abstands- und Geschwindigkeitsmessung (light detection und ranging - LIDAR) haben eine geringere Auflösung als moderne Kamerabildgebungsvorrichtungen. Eine relativ geringere Tiefenauflösung in LIDAR-Vorrichtungen (z. B. als die Bildauflösung in Kameravorrichtungen) kann gleichbedeutend mit weniger Situationsbewusstsein sein, insbesondere in Situationen, in denen sich eine Umgebung der LIDAR-Vorrichtungen häufig ändert.
-
KURZDARSTELLUNG
-
Es wird ein tiefenauflösendes System beschrieben, das einen ersten Sensor, einen zweiten Sensor und einen Computer beinhaltet, der Daten von dem ersten und dem zweiten Sensor empfängt. Der Computer kann dazu programmiert sein, unter Verwendung der Daten eine Superauflösungs-Tiefenkarte zu generieren. Und es werden mehrere Verfahren zum Generieren der Superauflösungs-Tiefenkarte beschrieben. Gemäß einem veranschaulichenden Beispiel umfasst das Verfahren: Bestimmen einer Vielzahl ungemessener Tiefenkartenpositionen unter Verwendung von Tiefenelementen von einem ersten Sensor und räumlichen Elementen von einem zweiten Sensor; Berechnen, für jede der Vielzahl, geschätzter Tiefenelemente unter Verwendung einer gradientenbasierten Optimierung; und Generieren einer Superauflösungs-Tiefenkarte, welche die gemessenen und geschätzten Tiefenelemente umfasst.
-
Gemäß dem mindestens einen oben genannten Beispiel handelt es sich bei dem ersten Sensor um eine Vorrichtung zur optischen Abstands- und Geschwindigkeitsmessung (light detection und ranging - LIDAR), wobei es sich bei dem zweiten Sensor um eine Kamera handelt.
-
Gemäß dem mindestens einen oben genannten Beispiel, ferner umfassend das Registrieren der räumlichen Elemente mit den gemessenen Tiefenelementen, wobei die Vielzahl ungemessener Tiefenkartenpositionen indizierte Positionen eines Arrays der räumlichen Elemente sind, die kein entsprechendes gemessenes Tiefenelement haben.
-
Gemäß dem mindestens einen oben genannten Beispiel entspricht in der Superauflösungs-Tiefenkarte jedes der gemessenen und geschätzten Tiefenelemente einer einzigartigen Pixelstelle eines Arrays von räumlichen Elementen, die von dem zweiten Sensor empfangen werden.
-
Gemäß dem mindestens einen oben genannten Beispiel umfasst das Berechnen der geschätzten Tiefenelemente ferner in Bezug auf jede ungemessene Tiefenkartenposition das Quantifizieren einer Stärke einer Tiefendiskontinuität in Bezug auf die benachbarten Pixelstellen.
-
Gemäß dem mindestens einen oben genannten Beispiel umfasst die Optimierung das Bestimmen von Minima einer Kostenfunktion.
-
Gemäß dem mindestens einen oben genannten Beispiel umfasst die Optimierung:
vorbehaltlich x
Ω = y
Ω, wobei x̂ die Superauflösungs-Tiefenkarte ist, wobei x eine multidimensionale Variable ist, die das zu schätzende Tiefenkartenbild darstellt, wobei y einen Satz gemessener Tiefenelemente umfasst, wobei D ein Gradientenoperator ist, wobei || x ∥
l
2 , eine l
2-Norm ist und wobei Ω einen Satz von Pixelindizes darstellt, der mit den gemessenen Tiefenelementen assoziiert ist.
-
Gemäß dem mindestens einen oben genannten Beispiel umfasst die Optimierung das Bestimmen einer Konvergenz
-
Gemäß dem mindestens einen oben genannten Beispiel, wobei
wiederholt bestimmt wird, bis Konvergenz bestimmt ist oder Konvergenz innerhalb eines Schwellenwerts (T) bestimmt ist.
-
Gemäß dem mindestens einen oben genannten Beispiel umfasst die Optimierung das Bestimmen einer Konvergenz
-
Gemäß dem mindestens einen oben genannten Beispiel, wobei
wiederholt bestimmt wird, bis Konvergenz bestimmt ist oder Konvergenz innerhalb eines Schwellenwerts (T) bestimmt ist.
-
Gemäß dem mindestens einen oben genannten Beispiel umfasst das Bestimmen der Konvergenz ein Nesterov-Verfahren zum Lösen eines konvexen Programmierungsproblems mit einer Konvergenzrate [0(1/K2)].
-
Gemäß dem mindestens einen oben genannten Beispiel, ferner umfassend das Verschmelzen der Superauflösungs-Tiefenkarte mit den räumlichen Elementen.
-
Gemäß dem mindestens einen oben genannten Beispiel, ferner umfassend das Navigieren eines Fahrzeugs in einem autonomen Modus unter Verwendung der Superauflösungs-Tiefenkarte.
-
Gemäß einem weiteren veranschaulichenden Beispiel wird ein Computer beschrieben, der einen Prozessor und einen Speicher umfasst, der Anweisungen speichert, die von dem Prozessor ausführbar sind. Die Anweisungen umfassen Folgendes: Bestimmen einer Vielzahl ungemessener Tiefenkartenpositionen unter Verwendung von Tiefenelementen von einem ersten Sensor und räumlichen Elementen von einem zweiten Sensor; Berechnen, für jede der Vielzahl, geschätzter Tiefenelemente unter Verwendung einer gradientenbasierten Optimierung; und Generieren einer Superauflösungs-Tiefenkarte, welche die gemessenen und geschätzten Tiefenelemente umfasst.
-
Gemäß dem mindestens einen oben genannten Beispiel umfassen die Anweisungen ferner Folgendes: Registrieren der räumlichen Elemente, die von dem zweiten Sensor empfangen werden, mit den gemessenen Tiefenelementen, wobei die Vielzahl ungemessener Tiefenkartenpositionen indizierte Positionen eines Arrays der räumlichen Elemente sind, die kein entsprechendes gemessenes Tiefenelement haben.
-
Gemäß dem mindestens einen oben genannten Beispiel entspricht in der Superauflösungs-Tiefenkarte jedes der gemessenen und geschätzten Tiefenelemente einer einzigartigen Pixelstelle eines Arrays von räumlichen Elementen, die von dem zweiten Sensor empfangen werden.
-
Gemäß dem mindestens einen oben genannten Beispiel umfasst die Anweisung zum Berechnen geschätzter Tiefenelemente ferner Folgendes: in Bezug auf jede ungemessene Tiefenkartenposition das Quantifizieren einer Stärke einer Tiefendiskontinuität in Bezug auf die benachbarten Pixelstellen.
-
Gemäß dem mindestens einen oben genannten Beispiel umfasst die Optimierung:
vorbehaltlich x
Ω = y
Ω, wobei x̂ die Superauflösungs-Tiefenkarte ist, wobei x eine multidimensionale Variable ist, die das zu schätzende Tiefenkartenbild darstellt, wobei y einen Satz gemessener Tiefenelemente umfasst, wobei D ein Gradientenoperator ist, wobei || x ∥
l
2 eine l
2-Norm ist und wobei Ω einen Satz von Pixelindizes darstellt, der mit den gemessenen Tiefenelementen assoziiert ist.
-
Gemäß dem mindestens einen oben genannten Beispiel umfassen die Anweisungen ferner Folgendes: Bestimmen einer Konvergenz in Bezug auf die Werte der geschätzten Tiefenelemente; und Verwenden eines Nesterov-Verfahrens für eine jeweilige Konvergenzrate.
-
Gemäß dem mindestens einen Beispiel wird ein Computer offenbart, der dazu programmiert ist, eine beliebige Kombination der oben genannten Anweisungsbeispiele auszuführen.
-
Gemäß dem mindestens einen Beispiel wird ein Computer offenbart, der dazu programmiert ist, eine beliebige Kombination der oben genannten Verfahrensbeispiele auszuführen.
-
Gemäß dem mindestens einen Beispiel wird ein Computerprogrammprodukt offenbart, das ein computerlesbares Medium beinhaltet, das Anweisungen speichert, die von einem Computerprozessor ausführbar sind, wobei die Anweisungen eine beliebige Kombination der oben genannten Anweisungs- oder Verfahrensbeispiele beinhalten.
-
Figurenliste
-
- 1 ist ein schematisches Diagramm, das ein Fahrzeug veranschaulicht, das einen Computer, einen ersten Sensor und einen zweiten Sensor umfasst.
- 2 veranschaulicht eine Vielzahl gemessener Tiefenelemente.
- 3 veranschaulicht eine Vielzahl gemessener räumlicher Elemente, die in einem Array angeordnet sind.
- 4 veranschaulicht die gemessenen Tiefenelemente, die in dem Array aus 3 abgeglichen sind.
- 5 veranschaulicht eine Superauflösungs-Tiefenkarte, welche die Vielzahl gemessener Tiefenelemente und eine Vielzahl geschätzter Tiefenelemente (berechnet unter Verwendung des Computers aus 1) umfasst.
- 6 ist ein Ablaufdiagramm, das einen Prozess zum Generieren einer Schätzung der Superauflösungs-Tiefenkarte veranschaulicht.
- 7 veranschaulicht ein Beispiel des Ausführens eines Teils des Prozesses, der in 6 gezeigt ist.
- 8 veranschaulicht ein weiteres Beispiel des Ausführens eines Teils des Prozesses, der in
- 6 gezeigt ist.
- 9 veranschaulicht eine beispielhafte Szene, die als räumliche Daten verkörpert ist, wobei die räumlichen Daten eine Vielzahl von räumlichen Elementen umfassen.
- 10 veranschaulicht die beispielhafte Szene aus 9 als Tiefendaten verkörpert, wobei die Tiefendaten eine Vielzahl von gemessenen Tiefenelementen umfassen.
- 11 veranschaulicht die beispielhafte Szene aus 9 als eine Schätzung einer Superauflösungs-Tiefenkarte verkörpert, wobei die Superauflösungs-Tiefenkarte die Vielzahl von gemessenen Tiefenelementen und eine Vielzahl von geschätzten Tiefenelementen umfasst.
-
DETAILLIERTE BESCHREIBUNG
-
Nun unter Bezugnahme auf die Figuren, in denen gleiche Elemente auf ähnliche oder identische Merkmale oder Funktionen verweisen, ist ein tiefenauflösendes System 10 veranschaulicht. Das System 10 ist als Teil eines Fahrzeugs 12 veranschaulicht, welches das System 10 zum autonomen Navigieren oder Ähnlichem benutzen kann. Es versteht sich, dass eine Fahrzeugumsetzung nur eine Umgebung ist und andere Umgebungen möglich sind; einschließlich eines geeigneten Überwachungssystems, Situationsbewusstseinssystems, Sicherheitssystems oder dergleichen, das an eine Mobilvorrichtung, eine tragbare Vorrichtung oder an eine statische Struktur (z. B. statische Strukturen einschließlich unter anderem fahrzeugbezogener Infrastruktur oder Infrastruktur ohne Zusammenhang mit Fahrzeugen) gekoppelt ist oder davon getragen wird.
-
Gemäß dem veranschaulichten Beispiel umfasst das tiefenauflösende System 10 zwei Sensoren 14, 16 und einen Computer 18. Ein erster Sensor 14 (z. B. eine Vorrichtung zur optischen Abstands- und Geschwindigkeitsmessung) kann dazu konfiguriert sein, dem Computer 18 Tiefendaten bereitzustellen, und ein zweiter Sensor 16 (z. B. eine Kamera) kann dazu konfiguriert sein, dem Computer 18 räumliche Daten bereitzustellen. Gemäß mindestens einem veranschaulichenden Beispiel empfangen der erste Sensor und der zweite Sensor 14, 16 (jeweils) Tiefen- und räumliche Daten zumindest eines Teils einer gemeinsamen Szene in ihren jeweiligen Umgebungen. Der Computer 18 kann dazu programmiert sein, eine Registrierung (manchmal auch als Kalibrierung bezeichnet) der Tiefendaten und der räumlichen Daten durchzuführen; d. h. Elemente der Tiefendaten können auf Elemente der räumlichen Daten projiziert werden, was in einem Abgleich oder anderweitiger Bestimmung in Bezug darauf resultiert, welche der gemessenen Tiefenelemente mit den gemessenen räumlichen Elementen in Bezug auf die Szene abgeglichen sind. Typischerweise und basierend auf dem aktuellen Stand der Technik ist ein räumlicher Auflösungsparameter des zweiten Sensors 16 größer als ein entsprechender Auflösungsparameter des ersten Sensors 14. Dementsprechend gibt es mehr räumliche Elemente (für eine gegebene Szene) als Tiefenelemente (der Szene). Und wie es für den Fachmann ersichtlich sein wird, kann ein Beobachter (z. B. ein Mensch, der Computer 18 usw.) umso mehr Detail(s) in Bezug auf die Szene ausmachen, je höher die verfügbare Auflösung ist.
-
Wie hierin verwendet, werden die räumlichen Elemente, für die es ein entsprechendes gemessenes Tiefenelement in dem zweidimensionalen räumlichen Elementarray gibt, als von dem Computer 18 abgeglichen (z. B. abgeglichene Elemente) bezeichnet, während die räumlichen Elemente, die kein entsprechendes Tiefenelement aufweisen, hierin als ungemessene Tiefenkartenpositionen bezeichnet werden. Nach der Registrierung, und wie im Folgenden detailliert beschrieben wird, kann der Computer 18 mit Anweisungen programmiert sein, um eine gradientenbasierte Optimierung durchzuführen, um Tiefenwerte zu schätzen, die der Vielzahl ungemessener Tiefenpositionen entsprechen. Dementsprechend kann der Computer 18 in Echtzeit eine sogenannte Superauflösungs-Tiefenkarte generieren und/oder ausgeben, die eine Zusammensetzung gemessener Tiefenelemente (vom ersten Sensor 14 gemessen) und geschätzter Tiefenelemente (vom Computer 18 für die ungemessenen Tiefenpositionen berechnet) umfasst. Somit kann der Computer vor diesem Prozess eine sogenannte spärliche Tiefenkarte (z. B. niedrige Tiefenauflösung) empfangen, und nach dem Prozess kann der Computer eine Superauflösungs-Tiefenkarte generiert haben (z. B. hohe Tiefenauflösung). Ferner kann die (Hochauflösungs-) Superauflösungs-Tiefenkarte dieselbe oder eine ähnliche Auflösung wie die des zweiten Sensors 16 aufweisen. Auf diese Weise können Tiefendaten und räumliche Daten miteinander verschmolzen werden (z. B. Eins-zu-Eins-Abgleich), um die dem Computer in Bezug auf seine Umgebung verfügbaren Informationen zu verbessern.
-
In der beispielhaften Umgebung von Fahrzeug 12 kann dies dazu benutzt werden, um das Fahrzeug 12 autonom zu navigieren. Und in anderen Umgebungen kann es dazu benutzt werden, das Situationsbewusstsein zu verbessern, die Detektion verschiedener Objekte zu verbessern, die unter Verwendung von nur räumlichen Daten schwierig zu detektieren sind, andere Aufgaben durchzuführen usw.
-
Es folgt eine Beschreibung einer beispielhaften Fahrzeugumgebung. Danach werden beispielhafte Verfahren zum Bestimmen geschätzter Tiefenelemente und/oder zur Ausgabe von Superauflösungs-Tiefenkarten beschrieben.
-
1 veranschaulicht das Fahrzeug 12, das ein tiefenauflösendes System 10 umfasst. Das Fahrzeug 12 ist als Personenkraftwagen gezeigt, doch das Fahrzeug 12 könnte auch ein Lastkraftwagen, eine Geländelimousine (sports utility vehicle - SUV), ein Wohnmobil, Bus, Waggon, Flugzeug oder dergleichen sein, welche/s/r das tiefenauflösende System 10 beinhaltet. Gemäß einem nichteinschränkenden Beispiel ist das Fahrzeug 12 ein autonomes Fahrzeug; d. h. es wird in einem vollautonomen Modus betrieben (z. B. einer Stufe 5) wie von der Society of Automotive Engineers (SAE) definiert (die einen Betrieb auf Stufen den 0-5 definiert hat). Beispielsweise überwacht oder steuert auf den Stufen 0-2 ein menschlicher Fahrzeugführer die Mehrheit der Fahraufgaben, oftmals ohne Hilfe vom Fahrzeug 12. Beispielsweise ist ein menschlicher Fahrzeugführer auf Stufe 0 („keine Automatisierung“) für alle Fahrzeugvorgänge verantwortlich. Auf Stufe 1 („Fahrzeugführerassistenz“) hilft das Fahrzeug 12 manchmal in Bezug auf das Lenken, Beschleunigen oder Bremsen, aber der Fahrzeugführer ist noch immer für den Großteil der Fahrzeugsteuerung verantwortlich. Auf Stufe 2 („partielle Automatisierung“) kann das Fahrzeug 12 das Lenken, Beschleunigen und Bremsen unter bestimmten Umständen ohne menschliche Interaktion steuern. Auf den Stufen 3-5 übernimmt das Fahrzeug 12 mehr fahrbezogene Aufgaben. Auf Stufe 3 („bedingte Automatisierung“) kann das Fahrzeug 12 das Lenken, Beschleunigen und Bremsen unter bestimmten Umständen bewältigen sowie die Fahrumgebung überwachen. Auf Stufe 3 kann es jedoch erforderlich sein, dass der Fahrzeugführer gelegentlich eingreift. Bei Stufe 4 („hohe Automatisierung“) kann das Fahrzeug 12 die gleichen Aufgaben wie auf Stufe 3 bewältigen, aber ohne darauf angewiesen zu sein, dass der Fahrzeugführer in bestimmten Fahrmodi eingreift. Auf Stufe 5 („volle Automatisierung“) kann das Fahrzeug 12 alle Aufgaben ohne jegliches Eingreifen des Fahrzeugführers bewältigen.
-
In anderen Beispielen ist das Fahrzeug 12 kein vollautonomes Fahrzeug. Beispielsweise kann das Fahrzeug 12 stattdessen in einem teilautonomen oder einem nichtautonomen Modus (z. B. auf einer der Stufen 0-5) betrieben werden.
-
Wie teilweise oben erläutert, kann das System 10 einen ersten Sensor 14, einen zweiten Sensor 16 und einen Computer 18 sowie eine geeignete drahtgebundene oder drahtlose Netzwerkverbindung 24 umfassen, die Kommunikation zwischen den Vorrichtungen 14, 16, 18 und anderen elektronischen Vorrichtungen (nicht gezeigt) an Bord des Fahrzeugs 12 ermöglicht. In mindestens einem Beispiel beinhaltet die Verbindung 24 eines oder mehrere von einem Controller Area Network (CAN)-Bus, Ethernet, Local Interconnect Network (LIN), einer faseroptischen Verbindung oder dergleichen. Andere Beispiele existieren ebenfalls. Beispielsweise könnte die Verbindung 24 alternativ oder in Kombination mit z. B. einem CAN-Bus eine oder mehrere diskrete verdrahtete oder drahtlose Verbindungen umfassen.
-
Der erste Sensor 14 kann eine beliebige elektronische Vorrichtung sein, die dazu konfiguriert und/oder programmiert ist, einen räumlichen Abstand zwischen einem Empfänger (nicht gezeigt) des Sensors 14 und einem Objekt in der Szene (davon beabstandet) zu bestimmen. Gemäß einem nichteinschränkenden Beispiel ist der ersten Sensor 14 eine Vorrichtung zur optischen Abstands- und Geschwindigkeitsmessung (light detection und ranging - LIDAR). LID AR-Vorrichtungen sind aktive Sensorvorrichtungen; d. h. sie emittieren zu einem Zeitpunkt (t0) eine elektromagnetisches Strahlungssignal von einem Emitter und empfangen zu einem Zeitpunkt (t1) an einem Empfänger eine Rückkehr oder Reflektion des emittierten Signals; wodurch sie die Eigenschaften eines Licht- und Zeitdifferentials (Δt oder t1 - t0) benutzen, um einen Abstand zwischen der LIDAR-Vorrichtung und dem Objekt bestimmen, von dem das Signal reflektiert wird. Die von LIDAR-Vorrichtungen empfangenen Tiefendaten können als Punktwolkendaten bezeichnet werden (d. h., wie hierin verwendet, dass Punktwolkendaten eine Reihe von Datenpunkten (hierin als gemessene Tiefenelemente bezeichnet) in einem vorbestimmten Koordinatensystem umfassen). Im Allgemeinen sind dem Fachmann LIDAR-Vorrichtungen bekannt, weshalb sie hierin nicht ausführlicher erläutert werden. Es versteht sich, dass eine LIDAR-Vorrichtung nur ein Beispiel eines ersten Sensors 14 ist; andere abstands- und entfernungsmessende Vorrichtungen (z. B. Radio Detection und Ranging (Radar)-Vorrichtungen, Sonarvorrichtungen usw.) könnten stattdessen verwendet werden.
-
2 veranschaulicht einen Teil von Punktwolkendaten 26. Ein kleiner Teil einer gesamten Punktwolke ist hier allein zur Veranschaulichung gezeigt. Die Punktwolkendaten 26 umfassen eine Vielzahl gemessener Tiefenelemente 28. Wie hierin verwendet, ist eine gemessene Tiefeneinheit eine Einheit von Daten, die vom ersten Sensor 14 empfangen werden, wobei besagte Dateneinheit eine räumliche Messung umfasst, die einen Abstand zwischen dem ersten Sensor 14 und einem Objekt definiert, von dem eine Energieübertragung reflektiert wird und zum ersten Sensor 14 zurückkehrt.
-
Der zweite Sensor 16, in 1 gezeigt, kann eine beliebige geeignete elektronische Vorrichtung sein, die dazu konfiguriert und/oder programmiert ist, Lichtenergie zu empfangen und verschiedene Lichtbänder innerhalb des elektromagnetischen Spektrums zu empfangen. Gemäß einem nichteinschränkendem Beispiel ist der zweite Sensor 16 eine Kamera. Zu nichteinschränkenden Beispielen von Kameras gehören komplementäre Metalloxid-Halbleiter (complementary metal oxide semiconductor - CMOS)-Vorrichtungen, ladungsgekoppelte Vorrichtungen (cahrge-coupled devices - CCDs), andere passive Sensorvorrichtungen, aktive Sensorvorrichtungen, passive und aktive Sensorvorrichtungen (d. h. beides) und dergleichen. Kameras sind dem Fachmann bekannt, daher werden sie hierin ebenfalls nicht ausführlich erläutert.
-
Rein zur Veranschaulichung kann der zweite Sensor 16 ein zweidimensionales Array von räumlichen Elementen an den Computer 18 ausgeben; wobei die Größe und Form des Arrays eine Eigenschaft des bestimmten zweiten Sensors 16 ist. Rein zur Veranschaulichung ist ein nichteinschränkendes Beispiel eines Teils eines zweidimensionalen Arrays 34 in 3 gezeigt (z. B. ein Array 34 10x10 Pixeln 36). Gesamte Pixel-Arrays sind typischerweise viel größer und können eine hohe Auflösung aufweisen (z. B. können Hochauflösungsarrays größer als 1600x1200 Pixel sein und eine relativ höhe Pixeldichte (d. h. Menge von Pixeln per Flächeneinheit) aufweisen). Allein zum Zwecke der Erläuterung der vorliegenden Offenbarung wird ein Teil eines Arrays 34 gezeigt. 3 veranschaulicht, dass jedes Pixel 36 ein räumliches Element 38 umfassen kann; wie hierin verwendet, ist ein räumliches Element eine Dateneinheit, die unter Verwendung eines Pixels oder einem pixelähnlichen Bereich des zweiten Sensors 16 empfangen wird, wobei die Dateneinheit eine Messung elektromagnetischer (EM-) Energie umfasst, die mit einer Reflektion oder Emission von der umgebenden Szene assoziiert ist (dementsprechend können solche räumlichen Elemente auch als gemessene räumliche Elemente bezeichnet werden, da der zweite Sensor 16 die empfangene EM-Energie quantifiziert). In mindestens einem Beispiel stammt die empfangene EM-Energie nicht von dem zweiten Sensor 16 (d. h. Sensor 16 ist in mindestens einem Beispiel keine aktive Sensorvorrichtung).
-
Unter erneuter Bezugnahme auf 1 umfasst der Computer 18 mindestens einen Prozessor 42 und einen Speicher 44. Der Prozessor 42 kann dazu programmiert sein, digitale Anweisungen zu verarbeiten und/oder auszuführen, um mindestens einige der hierin beschriebenen Aufgaben durchzuführen. Nichteinschränkende Beispiele des Prozessors 42 beinhalten einen Mikroprozessor, einen Mikrocontroller oder einen Controller, eine anwendungsspezifische integrierte Schaltung (application specific integrated circuit - ASIC) usw., um nur einige zu nennen. Und einige nichteinschränkende Beispiel von digital gespeicherten Anweisungen - speicherbar im Speicher 44 und ausführbar vom Speicher 42 - beinhalten die Folgenden: Empfangen gemessener Tiefenelemente vom ersten Sensor 14; Empfangen von räumlichen Elementen vom zweiten Sensor 16; Registrieren der empfangenen räumlichen Elemente mit entsprechenden gemessenen Tiefenelementen; Bestimmen einer Vielzahl ungemessener Tiefenkartenpositionen; Berechnen geschätzter Tiefenelemente für die Vielzahl ungemessener Tiefenkartenpositionen; und Generieren einer Superauflösungs-Tiefenkarte, die eine Zusammensetzung der gemessenen Tiefenelemente (z. B. von dem ersten Sensor 14 empfangen) und der geschätzten Tiefenelemente (vom Computer 18 berechnet) umfasst. Zusätzliche und spezifischere Beispiele für Anweisungen, die statt und/oder zusätzlich dieser Beispiele benutzt werden können, sind in dem einen oder den mehreren Prozessen unten beschrieben.
-
Wie unten genauer erläutert wird, veranschaulicht 4 eine Registrierung 46 gemessener Tiefenelemente 28 (von Punktwolkendaten 26) mit dem Array 34 von Pixeln 36, welche die räumlichen Elemente 38 umfassen (hier sind jedoch die räumlichen Elemente 38 der Klarheit halber verborgen). Wie unten genauer erläutert wird, werden in Bezug auf eine gemeinsame Szene (von welcher der erste Sensor 14 Tiefendaten empfängt und der zweite Sensor 16 räumliche Daten empfängt) räumliche Elemente 38 mit entsprechenden Tiefenelementen 28 abgeglichen. Wie hierin verwendet, werden indizierte Positionen in dem Array 34, in dem räumliche Elemente 38 nicht mit einem entsprechenden Tiefenelement abgeglichen sind, als ungemessene Tiefenkartenpositionen 48 beschrieben. Wie unten genauer erläutert wird, wird der Computer 18 geschätzte Tiefenelemente (z. B. Tiefenwerte) für diese ungemessenen Tiefenkartenpositionen 48 berechnen, um eine Superauflösungs-Tiefenkarte zu erzeugen.
-
Ferner veranschaulicht 5 eine beispielhafte Superauflösungs-Tiefenkarte 50 (oder zumindest einen Teil davon). Wie unten ebenfalls genauer beschrieben wird, umfasst die veranschaulichte Karate 50 eine Zusammensetzung gemessener Tiefenelemente 28 und einer Vielzahl geschätzter Tiefenelemente 52 in Positionen 48. Wie hierin verwendet, ist eine Superauflösungs-Tiefenkarte eine Tiefenkarte, die eine tatsächliche (z. B. gemessene) Datenpunktdichte (vom ersten Sensor 14) für einen Teil einer erfassten Szene aufweist, die mit einer geschätzten (z. B. berechneten) räumlichen Punktdichte (vom zweiten Teil 16) übereinstimmt. Beispielsweise hätte angesichts der identischen Blickfelder (für Sensor 14 und Sensor 16) die Superauflösungs-Tiefenkarte dieselbe Auflösung (z. B. Menge an Datenpunkten) wie ein Pixel-Array des Blickfelds von Sensor 16.
-
Der Speicher 44 kann ein beliebiges nichttransitorisches computerverwendbares oder -lesbares Medium beinhalten, das eine oder mehrere Speichervorrichtungen oder -artikel beinhalten kann. Beispielhafte nichttransitorische computerverwendbare Speichervorrichtungen beinhalten eine herkömmliche Festplatte, einen Festspeicher, einen Direktzugriffspeicher (random access memory - RAM), Nurlesespeicher (read-only memory - ROM), löschbare programmierbare Nurlesespeicher (erasable programmable read-only memory - EPROM), elektrisch löschbare programmierbare Nurlesespeicher (electrically erasable programmable read-only memory - EEPROM) sowie andere flüchtige oder nichtflüchtige Medien. Nichtflüchtige Medien beinhalten beispielsweise optische oder Magnetplatten und andere permanente Speicher, und flüchtige Medien können beispielsweise auch dynamische Direktzugriffspeicher (dynamic random access memory - DRAM) beinhalten. Diese Speichervorrichtungen sind nichteinschränkende Beispiele; z. B. existieren andere Formen computerlesbarer Medien und beinhalten magnetische Medien, Compact Disc ROM (CD-ROMs), Digital Video Disc (DVDs), andere optische Medien, geeignete Speicherchip oder -Kassetten oder ein beliebiges anderes Medium, von dem ein Computer lesen kann. Wie oben erläutert kann der Speicher 44 ein oder mehrere Computerprogrammprodukte speichern, die als Software, Firmware oder andere vom Prozessor 42 ausführbare Programmieranweisungen umgesetzt sein können.
-
Unter Bezugnahme auf 6 wird nun ein Prozess 600 veranschaulicht, der von dem Computer 18 ausgeführt werden kann. Unter Verwendung des Prozesses 600 kann der Computer 18 eine Superauflösungs-Tiefenkarte 50 generieren und/oder ausgeben. Der Prozess 600 beginnt mit Block 610, in dem der Computer 18 räumliche Elemente 38 (vom zweiten Sensor 16) einer gemeinsamen Szene 60 empfängt. Eine beispielhafte gemeinsame Szene 60 ist in den 9-11 gezeigt; wie hierin verwendet, ist eine gemeinsame Szene eine gleichzeitige Beobachtung durch den ersten und den zweiten Sensor 14, 16, wobei beide Sensoren 14, 16 Informationen in Bezug auf einen gemeinsamen Bereich ihrer jeweiligen Umgebungen empfangen. Beispielsweise kann das Blickfeld des ersten Sensors sich zumindest teilweise mit dem Blickfeld des Sensors 16 überschneiden. Wie in 3 gezeigt, können die räumlichen Elemente 38 gemäß dem Array 34 angeordnet sein, und das Array 34 kann auf geeignete Art indiziert sein, z. B. eine horizontale Achse kann mithilfe eines Labels i identifiziert werden und eine vertikale Achse kann mithilfe eines Labels j identifiziert werden. Dementsprechend kann ein beliebiges Pixel 36 durch seine Pixelstelle (i, j) identifiziert werden. Und wie unten beschrieben kann auch jede ungemessene Tiefenkartenposition 48 durch ihre jeweilige Pixelstelle (i, j) identifiziert werden.
-
In Block 620 kann der Computer 18 Punktwolkendaten 26 empfangen; z. B. die gemessenen Tiefenelemente 28 vom ersten Sensor 14 empfangen. Wie in den 2-3 gezeigt, kann für eine gemeinsame Szene die relative Dichte der gemessenen Tiefenelemente 28 in Bezug auf die entsprechenden räumlichen Elemente 38 spärlich sein, da die Auflösung von Tiefendaten (z. B. für LIDAR-Vorrichtungen) typischerweise geringer ist als die von räumlichen Daten (z. B. für Kameras).
-
Nach Empfangen von sowohl räumlichen Elementen 38 als auch gemessenen Tiefenelementen 28 kann der Computer 18 in Block 630 die Registrierung 46 durchführen (z. B. in einem Teil von 4 gezeigt). Während räumliche Elemente 38 in 4 verborgen sind, versteht es sich, dass die gemessenen Tiefenelemente 28 auf die entsprechenden Pixelstellen (i, j) des Arrays 34 gemappt sind, wie oben erläutert. Die Registrierung umfasst ferner das Identifizieren der Vielzahl ungemessener Tiefenkartenpositionen 48; z. B. durch Computer 18, indem bestimmt wird, welche Pixelstellen kein entsprechendes gemessenes Tiefenelement 28 aufweisen.
-
In Block 640 wendet der Computer 18 eine iterative gradientenbasierte Optimierung an und berechnet eine Vielzahl geschätzter Tiefenelemente; wie hierin verwendet, sind die geschätzten Tiefenelemente computerberechnete Tiefenwerte für die ungemessenen Tiefenkartenpositionen 48 (siehe 4-5). Beispiele dafür, wie Block 640 bestimmt wird, werden unten ausführlicher unter Bezugnahme auf die 7 und 8 erklärt.
-
In Block 650, der Block 640 folgt, kann der Computer 18 die Superauflösungs-Tiefenkarte 50 generieren. Da der Computer 18 die gemessenen Tiefenelemente 28 für eine gegebene Abtastung vorläufig speichern kann, kann er beispielsweise diese Tiefenwerte mit den geschätzten Tiefenelementen zusammenführen. Block 650 wird unten ebenfalls unter Bezugnahme auf die 7-8 genauer beschrieben. Gemäß mindestens einem Beispiel umfasst Block 650 das Ausgeben der generierten Superauflösungs-Tiefenkarte 50 an eine andere Rechenvorrichtung (z. B. über die Netzwerkverbindung 24). Doch in anderen Beispielen gibt der Computer 18 die Karte 50 nicht aus. Beispielsweise kann der Computer 18 die Superauflösungs-Tiefenkarte 50 intern benutzen; z. B. kann der Computer 18 auch dazu programmiert sein, eine oder mehrere autonome Fahrunktionen auszuführen, und die Superauflösungs-Tiefenkarte 50 kann von dem Computer 18 dazu benutzt werden, um zu bestimmen, wie das Fahrzeug 12 zu navigieren ist.
-
Es versteht sich, dass der Prozess 600 zahlreiche Male während eines Zündzyklus wiederholt werden kann. Beispielsweise kann eine einzige Iteration der Blöcke 610-650 eine Superauflösungs-Tiefenkarte 50 für einen einzigen Augenblick bereitstellen. Beispielsweise veranschaulicht 9 ein Beispiel einer Vielzahl von räumlichen Elementen (z. B. ein Bild in einer Szene 60), die von dem Computer 18 von dem zweiten Sensor 16 empfangen wird (Block 610). 10 veranschaulicht ein Beispiel einer Vielzahl gemessener Tiefenelemente (z. B. spärliche Tiefenkarte derselben Szene 60), die von dem Computer 18 von dem ersten Sensor 14 empfangen wird (Block 620). Und 11 veranschaulicht ein Beispiel einer ausgegebenen Superauflösungs-Tiefenkarte 50 für Szene 60; umfassend sowohl die gemessenen Tiefenelemente (aus 10) als auch der geschätzten Tiefenelemente 52 für die Vielzahl ungemessener Tiefenkartenpositionen 48 (z. B. die geschätzten Tiefenelemente 52, die durch den Computer 18 in Block 640 bestimmt werden). Hinweis: in 11 sind dunklere Bereiche weiter vom ersten Sensor 14 entfernt, während hellere Bereich näher am ersten Sensor 14 liegen.
-
Die 9-11 veranschaulichen eine einzige Szene zu einem derartigen einzigen Augenblick. Doch einige der Objekte 62, 64 (z. B. Person 62, Fahrzeug 64) können sich bewegen; somit ist es möglicherweise wünschenswert, die Blöcke 610-650 wiederholt auszuführen. In autonomen Fahrzeugumgebungen kann die Bewegung von Objekten 62, 64, 66 (z. B. Boden 66) relativ sein; z. B. können sich das Fahrzeug 12 und/oder die Objekte selbst (z. B. 62, 64) bewegen. Somit kann nach Block 650 der Prozess 600 zum Anfang zurückkehren und jeden der oben beschriebenen Blöcke wiederholen, sodass der Computer 18 oder andere bordeigene Systeme aktuelle Informationen in Bezug auf die Objekte 62-66 um das Fahrzeug 12 haben kann.
-
7 und 8 veranschaulichen jeweils Techniken zum Bestimmen einer gradientenbasierten Optimierung (6, 640) und Erzeugen einer Superauflösungs-Tiefenkarte 50 (6, 650). Jede wird für sich erläutert.
-
In
7 kann Block
640 mehrere beispielhafte Blöcke
710,
720,
730 und
740 umfassen. Im Allgemeinen bestimmen die Blöcke
640 und
650 gemeinsam die Gleichung (1), die ein Minimum f(x) bestimmt, wobei f(x) eine erste Bedingung in einer Kostenfunktion ist (z. B. auch als eine Verlustfunktion bezeichnet), wobei f(x) = ||Dx||
l
2 , (Hinweis: obwohl eine l
2-Norm benutzt wird, ist dies nur ein Beispiel; z.B. kann stattdessen eine l
1-Norm oder dergleichen benutzt werden.)
wobei x eine multidimensionale Variable ist, die das zu schätzende Tiefenkartenbild darstellt, das eine theoretische Hochauflösungstiefenkarte (
50) darstellt, gemäß einer in der Gleichung (2) festgelegten Bedingung
-
In Bezug auf die Gleichungen (1) und (2), stellt Ω einen Satz von Pixelindizen dar, der mit den gemessenen Tiefenelementen
28 assoziiert ist, und stellt Ω' einen Satz Pixelindizen dar, der mit den ungemessenen Tiefenkartenpositionen
48 assoziiert ist. Somit stellt y
Ω einen Satz gemessener Tiefenelemente
28 dar (z. B. empfangen von einer relativ niedrigauflösenden LIDAR-Vorrichtung, registriert und gemappt auf Array
34), und stellt x
Ω einen Satz generierter gemessener Tiefenelemente
28 dar (z. B. in der Superauflösungs-Tiefenkarte
50, entsprechend den ungemessenen Tiefenkartenpositionen
48), wie unten genauer erklärt. Ferner stellt x̂ eine berechnete (z. B. geschätzte) Superauflösungs-Tiefenkarte
50 dar, die gemäß einem Beispiel eine Kombination aus y
Ω (Gleichung 2) und
(siehe Gleichung 4 unten) umfasst.
-
Auf Gleichung (1) zurückkommend, ist D ein mathematischer Gradientenoperator, der bei jeder ungemessenen Tiefenkartenposition
48 die Stärke der Tiefendiskontinuität in Bezug auf die benachbarten Pixelstellen quantifizieren kann; z. B. in den D
h (horizontalen) und D
v (vertikalen) Richtungen, wie in Gleichung (3) gezeigt. Ferner stellt ||x||
l
2 eine l
2-Norm dar, die für Vektor x als
definiert ist, wobei N eine Quantität skalarer Elemente x
n ist.
-
Um x̂ in Gleichung (1) zu schätzen, kann der Computer 18 die Blöcke 710-740 ausführen. Beispielsweise kann in Block 710 der Computer 18 mehrere Werte initialisieren: t (ein Optimierungsiterationswert) kann auf 1 gesetzt werden, s0 (Optimierungstransformiterationswert) kann auf y gesetzt werden und γ (ein vorbestimmter, positiver Skalarwert, der eine Lernrate des Gradientengefälles darstellt (z. B. eine Stärke eines Beitrags einer Kostenfunktion (unten beschrieben) in Bezug auf die Optimierung) kann auf einen Wert größer als Null eingestellt werden. Jeder dieser Werte kann in dem Speicher 55 gespeichert werden. Der γ -Wert kann vorkonfiguriert sein, um eine Qualität der Superauflösungs-Tiefenkarten(50)-Rekonstruktion mit einer Konvergenzdauer auszugleichen.
-
Im folgenden Block
720 kann der Computer
18 die Gleichung (4) unten ausführen.
wobei
eine Tiefenkartenschätzung umfasst, oder genauer eine Schätzung der Werte geschätzter Tiefenelemente 52
-
Unter Bezugnahme auf Gleichung (4) stellt IΩ, eine Funktion dar, die nur die durch Ω' definierten Pixelstellen auswählt (z. B. ungemessene Tiefenkartenpositionen 48). ∇ ist ein Gradientenoperator einer Kostenfunktion. Beispielsweise ist eine Kostenfunktion eine Funktion, die Werte einer oder mehrerer Variablen auf eine reelle Zahl mappt und dadurch einige Kosten (oder Verluste) darstellt, die mit den Werten assoziiert sind; da die Kostenfunktion zum Optimieren konfiguriert ist, soll die Funktion hier die Kostenfunktion für einen Satz jeweiliger geschätzter Tiefenelemente 52 minimieren (z. B. globale Minima bestimmen). Somit kann die Kostenfunktion mit diesen globalen Minima konvergieren oder sich den Minima innerhalb eines Schwellenwerts (T) annähern.
-
Im folgenden Block 730 kann der Computer 18 den Wert t inkrementieren. Beispielsweise kann der Computer 18 t = t + 1 berechnen. Somit ist bei einer ersten Iteration der berechnete t gleich 2.
-
Im folgenden Block
740 kann der Computer
18 bestimmen, ob
mit den Minima konvergiert hat oder ob
innerhalb eines Konvergenz-Schwellenwerts (T) liegt. Konvergenz kann auf eine beliebige geeignete Art und Weise bestimmt werden. Beispielsweise kann jede Iteration (t) von
mit einem vorherigen Wert von
verglichen werden. Konvergenz kann basierend auf einem Mangel an Veränderung der Werte von
oder minimaler Veränderung der Werte (z. B. geringer als Schwellenwert (T)) bestimmt werden. In Block
740 fährt der Prozess, falls Konvergenz oder Konvergenz innerhalb des Schwellenwerts (T) bestimmt wird, mit Block
650 fort, und falls keine Konvergenz oder Konvergenz innerhalb des Schwellenwerts (T) bestimmt wird, kann der Prozess zum Anfang zurückkehren und Blöcke
720-
740 wiederholen (z. B. bis
angemessen in Block
740 konvergiert).
-
Im folgenden Block
650 kann die Superauflösungs-Tiefenkarte
50 (x̂) unter Verwendung des Werts von
generiert werden, wie in Gleichung (5) gezeigt, wobei x̂
Ω = y
Ω und
stellt die Fusionierung eines Satzes gemessener Tiefenelemente
28 mit einem Satz geschätzter Tiefenelemente
52 dar
-
Nun wird unter Bezugnahme 8 eine weitere Umsetzung von Block 640, 6 gezeigt, die es dem Computer 18 ermöglicht, die Optimierung schneller durchzuführen (z. B. veranschaulicht 8 Blöcke 640' und 650). In dieser Umsetzung von Block 640' wird eines von Nesterovs Verfahren zum Lösen eines konvexen Programmierungsproblems mit Konvergenzrate [0(1/k2)] benutzt. Und da Block 650 mit dem oben beschriebenen zumindest in einem Beispiel identisch sein kann, wird nur Block 640' ausführlich beschrieben.
-
Block 640' kann die Böcke 810, 820, 830, 840, 850, 860 und 870 umfassen. Block 810 kann Block 630 (6) folgen und Block 810 kann identisch mit Block 710 sein, abgesehen davon, dass ein zusätzlicher Wert initialisiert werden kann; und zwar q0 = 1, wobei qt-Werte skalare Quantitäten sein können, die eine zusätzliche Lernrate darstellen (z. B. einen zusätzlichen Stärkewert), die dazu benutzt wird, das Bestimmen des Gradientengefälles zu beschleunigen.
-
Im folgenden Block
820 kann der Computer
18 einen Wert von
wie in Gleichung (6) dargelegt bestimmen. Wie aus der Erläuterung oben ersichtlich ist, kann
einen Zwischenwert umfassen und kann dazu benutzt werden,
zu berechnen, wie unten (siehe Gleichung (9)) und in Bezug auf den in
7 gezeigten Prozess beschrieben. Andere Variablen und Funktionen, die in Gleichung (6) gezeigt sind, können dieselben oder ähnlich wie die oben beschriebenen sein.
-
Im folgenden Block
830 kann der Computer
18 die Gleichung (7) bestimmen.
-
Im folgenden Block
840 kann der Computer
18 die Gleichung (8) bestimmen; unter Verwendung des q
t-Werts, der in Gleichung (7) bestimmt wurde.
wobei λ
t-Werte ebenfalls skalare Quantitäten sein können, die eine zusätzliche Lernrate darstellen (z. B. einen zusätzlichen Stärkenwert), die dazu benutzt wird, das Bestimmen des Gradientengefälles zu beschleunigen
-
Im folgenden Block
850 kann der Computer
18 die Gleichung (9) bestimmen; unter Verwendung der Werte, die in den Gleichungen (6) und (8) berechnet wurden.
-
Der folgende Block
860 kann mit Block
730 identisch sein, deshalb wird er hierin nicht erneut beschrieben. Ähnlich kann der folgende Block
870 mit Block
740 identisch sein; deshalb wird er hierin nicht erneut beschrieben; z. B. mit der Ausnahme, dass, falls keine Konvergenz oder Konvergenz innerhalb des Schwellenwerts (T) bestimmt wird, der Prozess zum Anfang zurückkehren und die Blöcke
820-
870 wiederholen kann (z. B. bis
angemessen in Block
870 konvergiert).
-
Wie oben besprochen, kann nach Block 870 der Prozess mit Block 650 fortfahren, der derselbe wie zuvor beschrieben sein kann. Somit kann der Computer 18 unter Verwendung von Block 640' das Bestimmen von Konvergenz beschleunigen, was die Geschwindigkeit erhöht, mit welcher der Computer 18 die Superauflösungs-Tiefenkarte 50 bestimmt. Dementsprechend kann die Frequenz der Superauflösungs-Tiefenkartenbestimmungen erhöht werden, was ermöglicht - z. B. in einer Fahrzeugumsetzung -, dass das Fahrzeug 12 mehr Echtzeit-Situationsbewusstsein empfängt. Wie hierin verwendet, bezieht sich Echtzeit auf ein Zeitdifferential zwischen Eingabedaten (z. B. Blöcke 610, 620) und Ausgabedaten (z. B. Block 650), wobei das Zeitdifferential zwischen diesen Zeitpunkten weniger als 150 ms beträgt.
-
Damit kann der Computer 18 unter Verwendung der oben beschriebenen Prozesse und Beispiele eine spärliche Tiefenkarte (z. B. mit niedriger Tiefenauflösung) empfangen und eine Superauflösungs-Tiefenkarte 50 (z. B. mit hoher Tiefenauflösung) generieren. Ferner kann die (Hochauflösungs-) Superauflösungs-Tiefenkarte 50 eine gleiche oder ähnliche Auflösung aufweisen wie die vom zweiten Sensor 16, wobei manche der Tiefendaten gemessen sein können, während einige der Tiefendaten geschätzt sein können. In manchen Beispielen können Tiefendaten und räumliche Daten verschmolzen werden (z. B. Eins-zu-Eins-Abgleich), um die dem Computer in Bezug auf seine Umgebung verfügbaren Informationen zu verbessern. Beispielsweise kann jedes der gemessenen und geschätzten Tiefenelemente 28, 52 einer einzigartigen Pixelstelle des Arrays 34 räumlicher Elemente 38 entsprechen, die von dem zweiten Sensor 16 empfangen werden.
-
Somit wurde ein tiefenauflösendes System für ein Fahrzeug beschrieben. Das System kann einen ersten Sensor, einen zweiten Sensor und einen Computer beinhalten. Der erste Sensor kann spärliche Tiefendaten in Bezug auf seine Umgebung empfangen, und der Computer kann eine Superauflösungs-Tiefenkarte unter Verwendung der spärlichen Tiefendaten und geschätzten Tiefendaten berechnen, die unter Verwendung von gradientenbasierter Optimierung berechnet werden.
-
Im Allgemeinen können die beschriebenen Rechensysteme und/oder -vorrichtungen ein beliebiges aus einer Reihe von Rechnerbetriebssystemen einsetzen, einschließlich unter anderem Versionen und/oder Varianten der SYNC®-Anwendung von Ford, AppLink/Smart Device Link Middleware, der Betriebssysteme MICROSOFT® Automotive, Microsoft WINDOWS®, Unix (z. B. das Betriebssystem SOLARIS®, vertrieben durch die Oracle Corporation in Redwood Shores, Kalifornien), AIX UNIX, vertrieben durch International Business Machines in Armonk, New York, das Linux-Betriebssystem, Mac OSX- und iOS-Betriebssysteme, vertrieben durch die Apple Inc. in Cupertino, Kalifornien, BlackBerry OS, vertrieben durch Blackberry, Ltd. in Waterloo, Kanada, und Android, entwickelt von Google, Inc. und der Open Handset Alliance, oder der Plattform QNX® CAR für Infotainment, angeboten von QNX Software Systems. Beispiele für Rechenvorrichtungen sind unter anderem ein im Fahrzeug integrierter Rechner, ein Arbeitsplatzcomputer, ein Server, ein Desktop, ein Notebook, ein Laptop oder Handcomputer oder ein anderes Rechensystem und/oder eine andere Rechenvorrichtung.
-
Rechenvorrichtungen enthalten im Allgemeinen computerausführbare Anweisungen, wobei die Anweisungen durch eine oder mehrere Rechenvorrichtungen ausgeführt werden können, wie beispielsweise die vorstehend aufgeführten Vorrichtungen. Computerausführbare Anweisungen können von Computerprogrammen zusammengestellt oder ausgewertet werden, die unter Verwendung einer Vielzahl von Programmiersprachen und/oder - technologien erstellt wurden, einschließlich unter anderem und entweder für sich oder in Kombination Java™, C, C++, Visual Basic, Java Script, Perl usw. Einige dieser Anwendungen können auf einer virtuellen Maschine zusammengestellt und ausgeführt werden, wie beispielsweise die Java Virtual Machine, die 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, indem er ein oder mehrere Verfahren durchführt, darunter ein oder mehrere der in der vorliegenden Schrift beschriebenen Verfahren. Derartige Anweisungen und sonstige Daten können unter Verwendung einer Vielzahl computerlesbarer Medien gespeichert und übertragen werden.
-
Ein computerlesbares Speichermedium (auch als vom Prozessor lesbares Medium bezeichnet) umfasst ein nichtflüchtiges (z. B. materielles) Medium, das an der Bereitstellung von Daten (z. B. Anweisungen) beteiligt ist, die von einem Computer (z. B. von einem Prozessor eines Computers) gelesen werden können. Ein solches Medium kann eine Vielzahl von Formen annehmen, einschließlich unter anderem nichtflüchtige Medien und flüchtige Medien. Zu nichtflüchtigen Medien gehören beispielsweise optische oder Magnetplatten und sonstige dauerhafte Speicher. Zu flüchtigen Medien können beispielsweise ein dynamischer Direktzugriffsspeicher (Dynamic Random Access Memory - DRAM) gehören, welcher in der Regel einen Hauptspeicher darstellt. Derartige Anweisungen können über ein oder mehrere Übertragungsmedien übertragen werden, darunter Koaxialkabel, Kupferdraht und Glasfaser, einschließlich jener Drähte, die einen mit einem Prozessor eines Computers verbundenen Systembus umfassen. Zu gängigen Formen computerlesbarer Medien gehören beispielsweise eine Diskette, eine Festplatte, ein Magnetband, ein beliebiges anderes magnetisches Medium, eine CD-ROM, eine DVD, ein beliebiges anderes optisches Medium, Lochkarten, Lochstreifen, ein beliebiges anderes physisches Medium mit Lochmustern, ein RAM, ein PROM, ein EPROM, ein FLASH-EEPROM, ein beliebiger anderer Speicherchip oder eine beliebige andere Speicherkassette oder ein beliebiges anderes Medium, das von einem Computer gelesen werden kann.
-
Datenbanken, Datenbestände oder sonstige Datenspeicher, welche in der vorliegenden Schrift beschrieben sind, können verschiedene Arten von Mechanismen zum Speichern von, Zugreifen auf und Abrufen von verschiedenen Arten von Daten umfassen, einschließlich einer hierarchischen Datenbank, einer Gruppe von Dateien in einem Dateisystem, einer Anwendungsdatenbank in einem proprietären Format, einem relationalen Datenbankverwaltungssystem (Relational Database Management System - RDBMS) usw. Jeder dieser Datenspeicher ist im Allgemeinen in einer Rechenvorrichtung enthalten, welche ein Rechnerbetriebssystem, wie beispielsweise eines der vorstehend aufgeführten, verwendet, und es wird auf eine oder mehrere mögliche Weisen über ein Netzwerk darauf zugegriffen. Auf ein Dateisystem kann von einem Rechnerbetriebssystem zugegriffen werden und es kann in verschiedenen Formaten gespeicherte Dateien enthalten. Ein RDBMS verwendet im Allgemeinen die strukturierte Abfragesprache SQL (Structured Query Language) zusätzlich zu einer Sprache zum Erstellen, Speichern, Bearbeiten und Ausführen gespeicherter Verfahren, wie beispielsweise die vorstehend aufgeführte PL/SQL-Sprache.
-
In einigen Beispielen können Systemelemente als computerlesbare Anweisungen (z. B. Software) auf einer oder mehreren Rechenvorrichtungen (z. B. Server, PCs usw.) implementiert sein, welche auf einem mit dieser assoziierten computerlesbaren Speichermedium gespeichert sind (z. B. Platten, Speicher usw.). Ein Computerprogrammprodukt kann derartige Anweisungen umfassen, welche auf einem computerlesbaren Medium zum Ausführen der in der vorliegenden Schrift beschriebenen Funktionen gespeichert sind.
-
Der Prozessor wird via Schaltkreise, Chips oder andere elektronische Komponenten umgesetzt und kann eine oder mehrere Mikrocontroller, einen oder mehrere feldprogrammierbare Gate Arrays (field programmable gate arrays - FPGAs), einen oder mehrere anwendungsspezifische integrierte Schaltkreise (application specific circuits - ASICs), einen oder mehrere digitale Signalprozessoren (digital signal processors - DSPs), einen oder mehrere kundenspezifische integrierte Schaltkreise usw. beinhalten. Der Prozessor kann dazu programmiert sein, die Sensordaten zu verarbeiten. Das Verarbeiten der Daten kann ein Verarbeiten des Videofeeds oder eines anderen Datenstroms beinhalten, der von den Sensoren erfasst wird, um die Fahrspur des Host-Fahrzeugs und das Vorhandensein von Zielfahrzeugen zu bestimmen. Wie nachstehend beschrieben, weist der Prozessor Fahrzeugkomponenten zum Betätigen gemäß den Sensordaten an. Der Prozessor kann in eine Steuerung eingebaut sein, z. B. eine Autonommodussteuerung.
-
Der Speicher (oder die Datenspeichervorrichtung) wird via Schaltkreise, Chips oder andere elektronische Komponenten umgesetzt und kann eines oder mehrere der Folgenden beinhalten: Nurlesespeicher (ROM), Direktzugriffsspeicher (RAM), Flash-Speicher, elektronisch programmierbare Speicher (EPROM), elektronisch programmierbar und löschbare Speicher (EEPROM), eingebettete Multimedia Card (eMMC) oder beliebige flüchtige oder nichtflüchtige Medien usw. Der Speicher kann von Sensoren gesammelte Daten speichern.
-
Die Offenbarung wurde auf veranschaulichende Weise beschrieben, und es versteht sich, dass die benutzte Terminologie beschreibenden und nicht einschränkenden Charakters sein soll. Viele Modifikationen und Variationen der vorliegenden Beschreibung sind in Anbetracht der vorangehenden Lehren möglich, und die Offenbarung kann anders ausgeführt werden als spezifisch beschrieben.
-
Gemäß der vorliegenden Erfindung beinhaltet ein Verfahren Bestimmen einer Vielzahl ungemessener Tiefenkartenpositionen unter Verwendung von Tiefenelementen von einem ersten Sensor und räumlichen Elementen von einem zweiten Sensor; Berechnen, für jede der Vielzahl, geschätzter Tiefenelemente unter Verwendung einer gradientenbasierten Optimierung; und Generieren einer Superauflösungs-Tiefenkarte, welche die gemessenen und geschätzten Tiefenelemente umfasst.
-
Gemäß einer Ausführungsform handelt es sich bei dem ersten Sensor um eine Vorrichtung zur optischen Abstands- und Geschwindigkeitsmessung (light detection und ranging - LIDAR), wobei es sich bei dem zweiten Sensor um eine Kamera handelt.
-
Gemäß einer Ausführungsform ist die vorliegende Erfindung ferner gekennzeichnet durch das Registrieren der räumlichen Elemente mit den gemessenen Tiefenelementen, wobei die Vielzahl ungemessener Tiefenkartenpositionen indizierte Positionen eines Arrays der räumlichen Elemente sind, die kein entsprechendes gemessenes Tiefenelement haben.
-
Gemäß einer Ausführungsform entspricht in der Superauflösungs-Tiefenkarte jedes der gemessenen und geschätzten Tiefenelemente einer einzigartigen Pixelstelle eines Arrays von räumlichen Elementen, die von dem zweiten Sensor empfangen werden.
-
Gemäß einer Ausführungsform umfasst das Berechnen der geschätzten Tiefenelemente ferner in Bezug auf jede ungemessene Tiefenkartenposition das Quantifizieren einer Stärke einer Tiefendiskontinuität in Bezug auf die benachbarten Pixelstellen.
-
Gemäß einer Ausführungsform umfasst die Optimierung das Bestimmen von Minima einer Kostenfunktion.
-
Gemäß einer Ausführungsform umfasst die Optimierung:
vorbehaltlich x
Ω = y
Ω, wobei x̂ die Superauflösungs-Tiefenkarte ist, wobei x eine multidimensionale Variable ist, die das zu schätzende Tiefenkartenbild darstellt, wobei y einen Satz gemessener Tiefenelemente umfasst, wobei D ein Gradientenoperator ist, wobei || x ∥
l
2 , eine l
2 -Norm ist und wobei Ω einen Satz von Pixelindizes darstellt, der mit den gemessenen Tiefenelementen assoziiert ist.
-
Gemäß einer Ausführungsform umfasst die Optimierung das Bestimmen einer Konvergenz
-
Gemäß einer Ausführungsform wird
wiederholt bestimmt, bis Konvergenz bestimmt ist oder Konvergenz innerhalb eines Schwellenwerts (T) bestimmt ist.
-
Gemäß einer Ausführungsform umfasst die Optimierung das Bestimmen einer Konvergenz
-
Gemäß einer Ausführungsform wird
wiederholt bestimmt, bis Konvergenz bestimmt ist oder Konvergenz innerhalb eines Schwellenwerts (T) bestimmt ist.
-
Gemäß einer Ausführungsform umfasst das Bestimmen der Konvergenz ein Nesterov-Verfahren zum Lösen eines konvexen Programmierungsproblems mit einer Konvergenzrate [0(1/k2)].
-
Gemäß einer Ausführungsform ist die obige Erfindung ferner gekennzeichnet durch das Verschmelzen der Superauflösungs-Tiefenkarte mit den räumlichen Elementen.
-
Gemäß einer Ausführungsform ist die obige Erfindung ferner gekennzeichnet durch das Navigieren eines Fahrzeugs in einem autonomen Modus unter Verwendung der Superauflösungs-Tiefenkarte.
-
Gemäß der vorliegenden Erfindung wird ein Computer bereitgestellt, der Folgendes aufweist: einen Prozessor; und einen Speicher, der Anweisungen speichert, die von dem Prozessor ausführbar sind, wobei die Anweisungen Folgendes umfassen: Bestimmen einer Vielzahl ungemessener Tiefenkartenpositionen unter Verwendung von Tiefenelementen von einem ersten Sensor und räumlichen Elementen von einem zweiten Sensor; Berechnen, für jede der Vielzahl, geschätzter Tiefenelemente unter Verwendung einer gradientenbasierten Optimierung; und Generieren einer Superauflösungs-Tiefenkarte, welche die gemessenen und geschätzten Tiefenelemente umfasst.
-
Gemäß einer Ausführungsform umfassen die Anweisungen ferner Folgendes: Registrieren der räumlichen Elemente, die von dem zweiten Sensor empfangen werden, mit den gemessenen Tiefenelementen, wobei die Vielzahl ungemessener Tiefenkartenpositionen indizierte Positionen eines Arrays der räumlichen Elemente sind, die kein entsprechendes gemessenes Tiefenelement haben.
-
Gemäß einer Ausführungsform entspricht in der Superauflösungs-Tiefenkarte jedes der gemessenen und geschätzten Tiefenelemente einer einzigartigen Pixelstelle eines Arrays von räumlichen Elementen, die von dem zweiten Sensor empfangen werden.
-
Gemäß einer Ausführungsform umfasst die Anweisung zum Berechnen geschätzter Tiefenelemente ferner Folgendes: in Bezug auf jede ungemessene Tiefenkartenposition das Quantifizieren einer Stärke einer Tiefendiskontinuität in Bezug auf die benachbarten Pixelstellen.
-
Gemäß einer Ausführungsform umfasst die Optimierung:
vorbehaltlich x
Ω = y
Ω, wobei x̂ die Superauflösungs-Tiefenkarte ist, wobei x eine multidimensionale Variable ist, die das zu schätzende Tiefenkartenbild darstellt, wobei y einen Satz gemessener Tiefenelemente umfasst, wobei D ein Gradientenoperator ist, wobei || x ∥
l
2 eine l
2 -Norm ist und wobei Ω einen Satz von Pixelindizes darstellt, der mit den gemessenen Tiefenelementen assoziiert ist.
-
Gemäß einer Ausführungsform umfassen die Anweisungen ferner Folgendes: Bestimmen einer Konvergenz in Bezug auf die Werte der geschätzten Tiefenelemente; und Verwenden eines Nesterov-Verfahrens für eine jeweilige Konvergenzrate.