DE102020213587A1 - Verfahren und Vorrichtung zum Verknüpfen von optischen Fluss über eine Mehrzahl von Bildern einer Bilderfassungseinrichtung - Google Patents

Verfahren und Vorrichtung zum Verknüpfen von optischen Fluss über eine Mehrzahl von Bildern einer Bilderfassungseinrichtung Download PDF

Info

Publication number
DE102020213587A1
DE102020213587A1 DE102020213587.8A DE102020213587A DE102020213587A1 DE 102020213587 A1 DE102020213587 A1 DE 102020213587A1 DE 102020213587 A DE102020213587 A DE 102020213587A DE 102020213587 A1 DE102020213587 A1 DE 102020213587A1
Authority
DE
Germany
Prior art keywords
flow
track
map
tile
image
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
DE102020213587.8A
Other languages
English (en)
Inventor
Christopher Herbon
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.)
Robert Bosch GmbH
Original Assignee
Robert Bosch GmbH
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 Robert Bosch GmbH filed Critical Robert Bosch GmbH
Priority to DE102020213587.8A priority Critical patent/DE102020213587A1/de
Priority to US17/451,422 priority patent/US20220138962A1/en
Priority to CN202111271475.0A priority patent/CN114429485A/zh
Publication of DE102020213587A1 publication Critical patent/DE102020213587A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/215Motion-based segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/246Analysis of motion using feature-based methods, e.g. the tracking of corners or segments
    • 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/4023Scaling of whole images or parts thereof, e.g. expanding or contracting based on decimating pixels or lines of pixels; based on inserting pixels or lines of pixels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/50Context or environment of the image
    • G06V20/56Context or environment of the image exterior to a vehicle by using sensors mounted on the vehicle
    • G06V20/58Recognition of moving objects or obstacles, e.g. vehicles or pedestrians; Recognition of traffic objects, e.g. traffic signs, traffic lights or roads
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20021Dividing image into blocks, subimages or windows
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30241Trajectory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30248Vehicle exterior or interior
    • G06T2207/30252Vehicle exterior; Vicinity of vehicle

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Multimedia (AREA)
  • Image Analysis (AREA)

Abstract

Die Erfindung betrifft ein Verfahren zum Verknüpfen von optischen Fluss über eine Mehrzahl von Bildern einer Bilderfassungseinrichtung für ein Fahrzeug (100). Es wird zumindest eine Kachel aus einer Trackkarte ausgewählt, wobei die Trackkarte eine Mehrzahl von Flusstracks umfasst und in eine Mehrzahl von Kacheln unterteilt ist. Anschließend wird zumindest ein von der Kachel umfasster Flusstrack unter Verwendung eines dem Flusstrack zuordenbaren Flussvektors einer Flusskarte verlängert. Dabei umfasst die Flusskarte eine Mehrzahl von auf einem aktuellen Bild der Mehrzahl von Bildern basierende Flussvektoren.

Description

  • Stand der Technik
  • Die Erfindung geht von einer Vorrichtung oder einem Verfahren nach Gattung der unabhängigen Ansprüche aus. Gegenstand der vorliegenden Erfindung ist auch ein Computerprogramm.
  • Durch den optischen Fluss können Bewegungen in einer Abfolge von Bildern abgebildet werden.
  • Die DE 10 2017 214 614 A1 offenbart ein Verfahren zur Plausibilisierung einer Flussvektor-Hypothese.
  • Offenbarung der Erfindung
  • Vor diesem Hintergrund werden mit dem hier vorgestellten Ansatz ein Verfahren zum Verknüpfen von optischen Fluss über eine Mehrzahl von Bildern einer Bilderfassungseinrichtung, weiterhin eine Vorrichtung, die das dieses Verfahren verwendet, sowie schließlich ein entsprechendes Computerprogramm gemäß den Hauptansprüchen vorgestellt. Durch die in den abhängigen Ansprüchen aufgeführten Maßnahmen sind vorteilhafte Weiterbildungen und Verbesserungen der im unabhängigen Anspruch angegebenen Vorrichtung möglich.
  • Der beschrieben Ansatz ermöglicht eine Verkettung von Flussvektoren, um einen optischen Fluss über einen langen Zeitraum zu bestimmen.
  • Ein Verfahren zum Verknüpfen von optischen Fluss über eine Mehrzahl von Bildern einer Bilderfassungseinrichtung umfasst die folgenden Schritte:
    • Auswählen zumindest einer Kachel aus einer Trackkarte, wobei die Trackkarte eine Mehrzahl von Flusstracks umfasst und in eine Mehrzahl von Kacheln unterteilt ist; und
    • Verlängern zumindest eines von der Kachel umfassten Flusstracks unter Verwendung eines dem Flusstrack zuordenbaren Flussvektors einer Flusskarte. Dabei umfasst die Flusskarte eine Mehrzahl von Flussvektoren. Die Flussvektoren basieren auf einem aktuellen Bild der Bilder.
  • Bei der Bilderfassungseinrichtung kann es sich um eine Kamera handeln, wie sie beispielsweise an einem Fahrzeug zur Umfelderfassung verwendet wird. Die Bilderfassung kann Bilder aufnehmen und über eine Schnittstelle bereitstellen. Ein Versatz von Bildpunkten zwischen zwei der Bilder kann durch den optischen Fluss beschrieben werden. Der optische Fluss kann durch die Flusskarte abgebildet werden. Jedem Punkt der Flusskarte kann ein Flussvektor zugeordnet sein. Ein Flusstrack kann gebildet werden, indem ein Flussvektor einer ersten Flusskarte mit einem Flussvektor einer nachfolgenden zweiten Flusskarte verkettet wird, wenn ein Endpunkt des Flussvektors der ersten Flusskarte einem Startpunkt des Flussvektors der zweiten Flusskarte zugeordnet werden kann. Auf diese Weise gebildete Flusstracks können in der Trackkarte zusammengefasst sein. Ein Flusstrack kann durch einen Anfangspunkt, eine beliebige Anzahl von Zwischenpunkte und einen Endpunkt definiert sein. Wird ein Flusstrack durch einen weiteren Flussvektor verlängert, so kann der bisherige Endpunkt des Flusstracks einen weiteren Zwischenpunkt und der Endpunkt des weiteren Flussvektors einen neuen Endpunkt des Flusstracks darstellen. Die Trackkarte kann in einzelne Regionen unterteilt sein, wobei jede Region einer Kachel zugeordnet sein kann. Die Trackkarte kann fortlaufend mit aktuellen Flussvektoren aktualisiert werden. Beispielsweise können die Schritte des Auswählens und des Verlängerns sowie optionale weitere Schritte des Verfahrens solange wiederholt werden, bis alle Kacheln der Trackkarte aktualisiert sind. Gemäß einer Ausführungsform können die Schritte des Verfahrens erneut ausgeführt werden, sobald neue Flussvektoren oder eine komplette neue Flusskarte zur Verfügung steht.
  • Im Schritt des Verlängerns kann der Flusstrack verlängert werden, wenn ein Endpunkt des Flusstracks einem Startpunkt des Flussvektors zuordenbar ist. Beispielsweise kann geprüft werden, ob sich in der aktuellen Flusskarte ein Flussvektor findet, dessen Startpunkt dem Endpunkt des zu aktualisierenden Flusstracks zugeordnet werden kann. Wenn dies der Fall ist kann der bestehende Flusstrack um den gefundenen Flussvektor ergänzt werden. Dadurch wird der Endpunkt des gefundenen Flussvektors zum neuen Endpunkt des verlängerten Flusstracks. Auf diese Weise lassen sich bestehende Flusstracks auf einfache Weise und prinzipiell beliebig oft verlängern.
  • Wenn sich in der aktuellen Flusskarte kein Flussvektor findet, dessen Startpunkt dem Endpunkt des zu aktualisierenden Flusstracks zugeordnet werden kann, kann der bestehende Flusstrack als inaktiv, invalid oder ungültig gekennzeichnet werden, beispielsweise durch markieren des Flusstracks mit einem entsprechenden Validitätsattribut. Auf diese Weise lassen sich Flusstracks aussortieren, die sich nicht mehr fortsetzen lassen.
  • Das Verfahren kann einen Schritt des Startens eines neuen Flusstracks unter Verwendung eines Flussvektors der Flusskarte umfassen. Dieser Schritt kann ausgeführt werden, wenn die Kachel keinen Flusstrack umfasst, dem ein Flussvektor der Flusskarte zuordenbar ist. Dies kann beispielsweise der Fall sein, wenn die Kachel keinen Flusstrack umfasst oder zwar zumindest einen Flusstrack umfasst, es sich jedoch kein zuordenbarer Flussvektor findet. Vorteilhafterweise kann dadurch einem Absinken der Anzahl der Flusstracks entgegengewirkt werden.
  • Im Schritt des Startens kann der neue Flusstrack mit einem Startpunkt in der Kachel, also der aktuell zu aktualisierenden Kachel, gestartet werden. Dies kann dann der Fall sein, wenn ein Freigabesignal eine Freigabe der Kachel für das Starten neuer Flusstracks anzeigt. Vorteilhafterweise können auf diese Weise Flusstracks vorrangig in Regionen gestartet werden, die einen Mehrwert beispielsweise für nachgeschaltete Auswertesysteme bieten. Gemäß einer Ausführungsform kann der neue Flusstrack ebenfalls in dieser Kachel gestartet werden, wenn ein Objektsignal eine Abbildung eines relevanten Objekts in einem der Kachel zugeordneten Bildabschnitt des aktuellen Bilds anzeigt. Dadurch wird die Verfolgung relevanter Objekte unter Verwendung der Flusskarte erleichtert. Wenn die aktuelle Kachel beispielsweise nicht für einen Start eines neuen Flusstracks freigegeben ist, kann der Schritt des Startens übersprungen werden oder es kann eine andere Kachel ausgewählt werden, in dem der neue Flusstrack gestartet werden kann.
  • Nach dem Schritt des Verlängerns kann einen Schritt des Aussortierens folgen, in dem entweder der Flusstrack oder ein weiterer Flusstrack aus der Trackkarte aussortiert werden. Das Aussortieren kann beispielsweise dann erfolgen, wenn der Endpunkt des Flusstracks nach dem Verlängern von einem Endpunkt des weiteren Flusstracks belegt ist. Auf diese Weise kann ein Kreuzen oder Verschmelzen von Flusstracks vermieden werden.
  • Dabei kann im Schritt des Aussortierens der Flusstrack oder der weitere Flusstrack abhängig von einem Vergleich zwischen einem Gütemaß des Flusstracks und einem Gütemaß des weiteren Flusstracks zum Aussortieren ausgewählt werden. Es kann also derjenige der Flusstracks aussortiert werden, dessen Gütemaß als weniger relevant angesehen wird. Als Gütemaß kann beispielsweise die Länge der Flusstracks in Pixeln, die Anzahl der Segmente der Flusstracks, die Größe des Quantisierungsfehlers der Flusstracks oder der Ursprung der Flusstracks verwendet werden. Vorteilhafterweise kann dadurch eine gleichförmige Verteilung der Endpunkte der von der Trackkarte umfassten Flusstracks erreicht werden.
  • Der Schritt des Aussortierens kann abhängig von einem Situationssignal durchgeführt oder übersprungen werden. Vorteilhafterweise können auf diese Weise Flusstracks situationsabhängig aussortiert oder eben beibehalten werden. Beispielsweise können unter Verwendung des Situationssignals bestimmte Bereiche im Bild von dem Aussortieren ausgeschlossen werden oder es kann zur Reduktion von Rechenzeit für bestimmte Aufnahmesituationen der Bilder auf ein Aussortieren verzichtet werden.
  • In einem Schritt des Neustartens kann ein zusätzlicher Flusstrack gestartet werden, wenn der Flusstrack nach dem Verlängern, also der im Schritt des Verlängerns verlängerte Flusstrack, ein Neustartkriterium erfüllt. Beispielsweise kann als das Neustartkriterium eine Anzahl von Segmenten des Flusstracks, eine Länge des Flusstracks, also eine Distanz zwischen einem Anfangspunkt und einem Endpunkt des Flusstracks, oder eine Beschleunigung des Flusstracks verwendet werden. Dadurch kann einer Ausdünnung einzelner Regionen entgegengewirkt werden, das beispielsweise auftreten kann, wenn sich viele der Flusstracks weit von ihren Anfangspunkten entfernen.
  • Im Schritt des Verlängerns kann ein Endpunkt des Flusstracks vor dem Verlängern als Zwischenpunkt des Flusstracks beibehalten werden. Dadurch ist eine nachträgliche Rückverfolgung einer durch den Flusstrack abgebildeten Bewegung, beispielsweise eines Objekts oder Objektabschnitts möglich.
  • Im Schritt des Verlängerns kann ein eine Validität des Flusstracks anzeigendes Validitätsattribut des Flusstracks gesetzt werden. Dadurch kann ein Flusstrack beispielsweise als aktiv oder gültig markiert werden, wenn er fortgeführt werden kann. Andernfalls kann der Flusstrack als inaktiv markiert werden, wenn er nicht mehr fortgeführt werden kann.
  • Im Schritt des Verlängerns kann ein Quantisierungsfehler des Flusstracks aktualisiert werden. Ein Quantisierungsfehler kann auftreten, wenn ein Flusstrack auf einem nicht-ganzzahligen Bildpunkt endet, sodass bei einer Verlängerung des Flusstracks auf den nächsten ganzzahligen Bildpunkt gerundet werden muss. Der Quantisierungsfehler kann somit eine Abweichung zwischen einem für den Schritt des Verlängerns verwendeten quantifizierten Endpunkt des Flusstracks und einem tatsächlichen Endpunkt anzeigen. Indem dem Flusstrack im Schritt des Verlängerns eine Größe des Quantifizierungsfehlers zugeordnet wird, kann der Quantifizierungsfehler beispielsweise bei einer nachfolgenden erneuten Verlängerung des Flusstracks oder bei einer Verwendung der Trackkarte berücksichtigt werden.
  • So kann im Schritt des Verlängerns der Endpunkt des Flusstracks nach dem Verlängern beispielsweise um einen dem Flusstrack zugeordneten Quantisierungsfehler korrigiert werden. Beispielsweise kann der Quantisierungsfehler bei der Verlängerung von Flussvektoren vom letzten Endpunkt des Tracks abgezogen werden. Auf diese Weise kann sichergestellt werden, dass sich der Quantisierungsfehler nicht über längere Zeit in nur positive oder nur negative Richtung aufakkumuliert.
  • Das Verfahren kann einen Schritt des Einlesens der Flusskarte mit den auf dem aktuellen Bild der Mehrzahl von Bildern basierenden Flussvektoren umfassen. Ansprechend auf das Einlesen können zumindest die Schritte des Auswählens und Verlängerns für zumindest eine, mehrere oder alle Kacheln der Trackkarte ausgeführt werden. Der Schritt des Einlesens und die daran anschließenden Schritte können wiederholt werden, beispielsweise sobald zeitlich nachfolgend eine neue Flusskarte zur Verfügung steht. Auf diese Weise kann die Trackkarte fortlaufend aktualisiert werden.
  • Vorteilhafterweise können die Schritte des Verfahrens dabei in Echtzeit ausgeführt werden. Vorteilhafterweise kann die Trackkarte somit in Echtzeit aktualisiert zur Verfügung stehen.
  • Das Verfahren kann einen Schritt des Erfassens zumindest des aktuellen Bilds der Mehrzahl von Bildern unter Verwendung der Bilderfassungseinrichtung umfassen. Dazu kann das Verfahren einen Schritt des Bildens der Flusskarte unter Verwendung des aktuellen Bilds umfassen. Zum Bilden der Flusskarte kann auf bekannte Verfahren zurückgegriffen werden. Vorteilhafterweise können die von der Bilderfassungseinrichtung zur Verfügung gestellten Bilder sofort, auch in Echtzeit, verarbeitet werden, um die Trackkarte zu aktualisieren.
  • Dieses Verfahren kann beispielsweise in Software oder Hardware oder in einer Mischform aus Software und Hardware beispielsweise in einem Steuergerät implementiert sein.
  • Der hier vorgestellte Ansatz schafft ferner eine Vorrichtung, die ausgebildet ist, um die Schritte einer Variante eines hier vorgestellten Verfahrens in entsprechenden Einrichtungen durchzuführen, anzusteuern bzw. umzusetzen. Auch durch diese Ausführungsvariante der Erfindung in Form einer Vorrichtung kann die der Erfindung zugrunde liegende Aufgabe schnell und effizient gelöst werden.
  • Hierzu kann die Vorrichtung zumindest eine Recheneinheit zum Verarbeiten von Signalen oder Daten, zumindest eine Speichereinheit zum Speichern von Signalen oder Daten, zumindest eine Schnittstelle zu einem Sensor oder einem Aktor zum Einlesen von Sensorsignalen von dem Sensor oder zum Ausgeben von Daten- oder Steuersignalen an den Aktor und/oder zumindest eine Kommunikationsschnittstelle zum Einlesen oder Ausgeben von Daten aufweisen, die in ein Kommunikationsprotokoll eingebettet sind. Die Recheneinheit kann beispielsweise ein Signalprozessor, ein Mikrocontroller oder dergleichen sein, wobei die Speichereinheit ein Flash-Speicher, ein EEPROM oder eine magnetische Speichereinheit sein kann. Die Kommunikationsschnittstelle kann ausgebildet sein, um Daten drahtlos und/oder leitungsgebunden einzulesen oder auszugeben, wobei eine Kommunikationsschnittstelle, die leitungsgebundene Daten einlesen oder ausgeben kann, diese Daten beispielsweise elektrisch oder optisch aus einer entsprechenden Datenübertragungsleitung einlesen oder in eine entsprechende Datenübertragungsleitung ausgeben kann.
  • Unter einer Vorrichtung kann vorliegend ein elektrisches Gerät verstanden werden, das Sensorsignale verarbeitet und in Abhängigkeit davon Steuer- und/oder Datensignale ausgibt. Die Vorrichtung kann eine Schnittstelle aufweisen, die hard- und/oder softwaremäßig ausgebildet sein kann. Bei einer hardwaremäßigen Ausbildung können die Schnittstellen beispielsweise Teil eines sogenannten System-ASICs sein, der verschiedenste Funktionen der Vorrichtung beinhaltet. Es ist jedoch auch möglich, dass die Schnittstellen eigene, integrierte Schaltkreise sind oder zumindest teilweise aus diskreten Bauelementen bestehen. Bei einer softwaremäßigen Ausbildung können die Schnittstellen Softwaremodule sein, die beispielsweise auf einem Mikrocontroller neben anderen Softwaremodulen vorhanden sind.
  • Von Vorteil ist auch ein Computerprogrammprodukt oder Computerprogramm mit Programmcode, der auf einem maschinenlesbaren Träger oder Speichermedium wie einem Halbleiterspeicher, einem Festplattenspeicher oder einem optischen Speicher gespeichert sein kann und zur Durchführung, Umsetzung und/oder Ansteuerung der Schritte des Verfahrens nach einer der vorstehend beschriebenen Ausführungsformen verwendet wird, insbesondere wenn das Programmprodukt oder Programm auf einem Computer oder einer Vorrichtung ausgeführt wird.
  • Ausführungsbeispiele des hier vorgestellten Ansatzes sind in den Zeichnungen dargestellt und in der nachfolgenden Beschreibung näher erläutert. Es zeigt:
    • 1 eine schematische Darstellung eines Fahrzeugs mit einer Vorrichtung zum Verknüpfen von optischen Fluss gemäß einem Ausführungsbeispiel;
    • 2 eine grafischen Darstellung eines dünnbesetzten optischen Flusses gemäß einem Ausführungsbeispiel;
    • ein Blockschaltbild einer Vorrichtung gemäß einem Ausführungsbeispiel;
    • 2 ein Ablaufdiagramm eines Verfahrens zum Verknüpfen von optischen Fluss gemäß einem Ausführungsbeispiel gemäß einem Ausführungsbeispiel;
    • 3 ein Ablaufdiagramm eines Verfahren zum Verknüpfen von optischen Fluss gemäß einem Ausführungsbeispiel;
    • 4 ein Ablaufdiagramm eines Ausführungsbeispiels eines Schritts des Aktualisierens eines Flusstracks;
    • 5 ein Ablaufdiagramm eines Verfahren zum Aktualisieren einer Flusstrackkarte gemäß einem Ausführungsbeispiel;
    • 6 eine aktualisierte Trackkarte gemäß einem Ausführungsbeispiel;
    • 7 eine aktualisierte Trackkarte gemäß einem Ausführungsbeispiel;
    • 8 eine indizierte Trackkarte gemäß einem Ausführungsbeispiel;
    • 9 eine Belegungskarte gemäß einem Ausführungsbeispiel;
    • 10 eine Trackkarte gemäß einem Ausführungsbeispiel;
    • 11 eine Trackkarte gemäß einem Ausführungsbeispiel;
    • 12 ein Bild mit neuen Flusstracks gemäß einem Ausführungsbeispiel;
    • 13 ein schematische Darstellung eines Datenlayouts einer Trackkarte gemäß einem Ausführungsbeispiel;
    • 14 ein Bild mit einem zu verlängernden Flusstrack gemäß einem Ausführungsbeispiel;
    • 15 Flusskarten gemäß einem Ausführungsbeispiel;
    • 16 bis 19 Bilder mit Flusstracks gemäß einem Ausführungsbeispiel; und
    • 20 ein Ablaufdiagramm eines Verfahren gemäß einem Ausführungsbeispiel.
  • In der nachfolgenden Beschreibung günstiger Ausführungsbeispiele der vorliegenden Erfindung werden für die in den verschiedenen Figuren dargestellten und ähnlich wirkenden Elemente gleiche oder ähnliche Bezugszeichen verwendet, wobei auf eine wiederholte Beschreibung dieser Elemente verzichtet wird.
  • 1 zeigt eine schematische Darstellung eines Fahrzeugs 100 mit einer Vorrichtung 102 zum Verknüpfen von optischen Fluss gemäß einem Ausführungsbeispiel. Bei dem Fahrzeug 100 handelt es sich beispielsweise um einen Personenkraftwagen. Die Anwendung des hier beschriebenen Ansatzes im Zusammenhang mit dem Fahrzeug 100 ist dabei lediglich beispielhaft gewählt. Der beschriebenen Ansatz kann beispielsweise auch im Zusammenhang mit Überwachungskameras, der Robotik oder Medizin eingesetzt werden.
  • Das Fahrzeug 100 weist eine Bilderfassungseinrichtung 104 auf, mit der beispielsweise eine Umgebung des Fahrzeugs 100, hier beispielhaft ein Vorfeld des Fahrzeugs 100, erfasst wird. Die Bilderfassungseinrichtung 104 umfasst beispielsweise eine oder mehrere Kameras. Beispielsweise stellt die Bilderfassungseinrichtung 104 eine Front-Video-Kamera für das Fahrzeug 100 dar.
  • Von der Bilderfassungseinrichtung 104 erfasste Bilder 106 werden von der Vorrichtung 102 verwendet, um eine Trackkarte 108 zu bestimmen und in einer fortlaufend aktualisierten Form bereitzustellen. Die Bilder 106 werden daher auch als Eingangsbilder bezeichnet. Beispielshaft wird die Trackkarte 108 von einem Fahrassistenzsystem 110 des Fahrzeugs 100 verwendet, um eine Fahrassistenzfunktion zu steuern. Die Trackkarte 108 bildet gemäß einem Ausführungsbeispiel den optischen Fluss der von der Bilderfassungseinrichtung 104 über einen längeren Zeitraum erfassten Bilder 106 ab.
  • Der optische Fluss beschreibt den Versatz von Bildpunkten zwischen zwei der Bilder 106. Bildpunkte der Bilder 106 werden im folgenden auch als Pixel bezeichnet. Die Bilder 106 können dabei zeitlich versetzt aus einer Videosequenz stammen oder von zwei unterschiedlichen Kameras der Bilderfassungseinrichtung 104. Die zeitliche oder räumliche Distanz der Bilder 106 hat einen großen Einfluss auf das Ergebnis des optischen Flusses. Je geringer die Distanz der Bilder 106 ist, desto besser kann der optische Fluss berechnet werden.
  • Optischer Fluss kann in unterschiedlichen Ausprägungen existieren. Ein dichter optischer Fluss („dense optical flow“) berechnet oder interpoliert für jeden Pixel der Bilder 106 einen Flussvektor. Quasi-dichter optischer Fluss kann für jeden Pixel einen Flussvektor bereitstellen, der jedoch auch ungültig sein kann. Wenn optischer Fluss als Flusskarte dargestellt wird, kann jeder Pixel von einem Flussvektor beschrieben werden, muss es aber nicht. Als Algorithmus zum Erstellen einer entsprechenden Flusskarte kann auf bekannte Verfahren zurückgegriffen werden. Ein dünnbesetzter optischer Fluss (sparse optical flow) stellt optischen Fluss in Form einer Liste mit wenigen, üblicherweise einige hundert bis einige tausend Flussvektoren dar. Der optische Fluss, wie er beispielsweise nachfolgend in 2 gezeigt ist, ist dabei abhängig von Zeitabständen zwischen den Bildern 106. Typische Zeitabstände zwischen aufeinanderfolgenden Bildern sind beispielsweise 132ms, 264ms oder 528ms.
  • Ein dichter oder quasi-dichter optischer Fluss erzeugt sein Ergebnis in Form einer Flusskarte, die üblicherweise dieselbe Auflösung wie die Eingangsbilder, also beispielsweise die Bilder 106, hat oder um eine Potenz von zwei kleiner ist, z.B. ein Flussvektor für vier Pixel. Diese Darstellung bietet dem Nutzer die Freiheit, an einer beliebigen Stelle eines der Bilder 106 die Bewegung zu ermitteln, ohne alle Flussvektoren durchlaufen zu müssen. Im Gegensatz dazu liegt das Ergebnis eines dünnbesetzten optischen Flusses als Flussliste vor, in denen Start- und Endpunkt für jeden Eintrag bereitgestellt werden, ohne dass die Einträge eine definierte Reihenfolge haben müssen. Im Rahmen des hier vorgestellten Ansatzes werden nur Flusskarten betrachtet.
  • Der optische Fluss wird für eine Vielzahl von Anwendungen verwendet. Im Automotive-Bereich wird der optische Fluss in Videokameras, beispielsweise der Bilderfassungseinrichtung 104 eingesetzt, um die Bewegung der abgebildeten Szene zu beschrieben. Aus dem optischen Fluss können darauf folgend verschiedene Informationen bestimmt werden. Dies sind beispielsweise die Eigenbewegung des Fahrzeugs 100 (visuelle Odometrie), die Bewegung von Objekten in der Szene (Fahrzeuge, Fußgänger, Straßenschilder etc.), die Tiefe der Szene (Structure-from- Motion), eine Blindheit, beispielsweise ein Mangel an Bewegung in der Szene der Kamera, beispielsweise der Bilderfassungseinrichtung 104, oder eine Lokalisierung des Fahrzeugs 100 in der Welt.
  • All diese Anwendungsfälle finden auch außerhalb des Automotive-Bereichs Anwendung, beispielsweise in der Robotik, der Raumfahrt, der Medizin und vielem mehr. Die im Folgenden beschriebenen Ausführungen beziehen sich hauptsächlich auf Automotive-Anwendungen, sind aber uneingeschränkt übertragbar.
  • 2 zeigte eine mögliche grafischen Darstellung einer Flusskarte 200. Die Flusskarte 200 repräsentiert einen dünnbesetzten optischen Flusses. Die Flusskarte 200 umfasst eine Mehrzahl von Flussvektoren 202. Dabei kodiert die Farbe oder Gestaltung jedes der Flussvektoren 202 seine Richtung und die Sättigung seine Länge. Dabei nimmt die Anzahl der Flussvektoren 202, auch nur als Vektoren bezeichnet, mit größerem zeitlichen Abstand zwischen den Bildern ab.
  • Je kürzer die zeitliche oder räumliche Distanz zwischen dem Eingangsbildpaar des optischen Flusses ist, desto genauer ist die Bestimmung der Pixelbewegung, dargestellt durch die Flussvektoren 202, und desto höher ist die Verfügbarkeit, also die Anzahl der Flussvektoren 202 des optischen Fluss. Somit ist es für Algorithmen zur Bestimmung des optischen Flusses vorteilhaft, wenn die Distanz zwischen den Eingangsbildern des optischen Flusses möglichst klein ist.
  • Umgekehrt gilt: Je größer die Distanz zwischen den Eingangsbildern ist, desto weniger Flussvektoren 202 können ermittelt werden und desto ungenauer ist ihr Ergebnis. Durch die geometrische Verzerrung der Szene können Bildpunkte schlechter zugeordnet werden und die Ungenauigkeit steigt.
  • Aus Sicht von Algorithmen, die das Ergebnis des optischen Flusses nutzen, ist meist ein langer Zeitabstand und somit eine große Flussvektorlänge vorteilhaft. Der Grund hierfür liegt darin, dass die mit einem Flussvektor beschriebene Bewegung fehlerbehaftet ist. Je länger der Flussvektor selbst ist, desto kleiner ist der relative Fehler des Flussvektors. Beispielhaft zeigt 2 den optischen Fluss auf Bildern mit einem Zeitabstand von 264 ms. Bei einem geringeren Zeitabstand zwischen den Bildern wären mehr jedoch kürzere Flussvektoren und bei einem größeren Zeitabstand zwischen den Bildern wären weniger jedoch längere Flussvektoren vorhanden.
  • Der beschriebene Ansatz befasst sich mit einem Verfahren, um Flusskarten, wie die gezeigte Flusskarte 200 über mehrere Bilder hinweg zu verketten. Hierbei wird für jeden Startpunkt die Bewegung zwischen dem Ursprungsbild und jedem darauffolgenden Bild beschrieben. Es wird nicht nur die Bewegung zwischen Start- und Endbild ermittelt sondern die jeweiligen Einzelbewegungen. Das Ergebnis der verketteten Flussvektoren wird als Flusstrack (Englisch: flow track) bezeichnet. Vorausgesetzt wird ein dichter oder quasi-dichter optischer Fluss zwischen benachbarten Bildpaaren.
  • Der Vorteil des beschriebenen Ansatzes liegt darin, dass der optische Fluss über einen beliebig langen Zeitraum mit beliebig vielen Stützstellen (Zwischenbildern) bestimmt werden kann, ohne dass die geometrische Veränderung der Bildszene die Genauigkeit und die Verfügbarkeit des optischen Flusses einschränkt.
  • Der beschriebene Ansatz ermöglicht abgesehen von dedizierter Hardware, wie FPGA oder ASIC, insbesondere eine echtzeitfähige Berechnung in Software. Optional ist eine gleichförmige Verteilung der Endpunkte der Flusstracks erreichbar. Der beschriebene Ansatz kann insbesondere für die Eigenbewegungsschätzung, Objekterkennung und Objekttracking auf integrierten Bildverarbeitungssystemen eingesetzt werden.
  • Anders als bei klassischen Tracking-Algorithmen ist das Ziel des beschriebenen Ansatzes nicht oder nicht nur, einzelne Landmarken oder Objekte zu tracken. Gemäß einem Ausführungsbeispiel ist es das Ziel, einen möglichst homogen verteilen optischen Fluss über eine sehr lange räumliche oder zeitliche Distanz zu erzeugen, der die oben beschriebenen Eigenschaften beispielsweise hinsichtlich Verfügbarkeit und Genauigkeit erfüllt. Dies ist in zwei Anwendungsfällen besonders wichtig:
    • Zum einen erfordert eine Eigenbewegungsschätzung eine möglichst homogene Verteilung der Flusstrackendpunkte zur Vermeidung von Singularitäten bzw. degenerierten Flussvektorkonfigurationen. Eine solche degenerierte Konfiguration liegt beispielsweise vor, wenn alle Flussvektoren 202 auf einer Linie liegen, z.B. am Horizont, oder wenn alle Flussvektoren 202 denselben Ursprungspunkt haben. Derartige Konfigurationen werden im Rahmen der vorgestellten Erfindung mit Hilfe der unten beschriebenen Verfahren vermieden.
  • Zum anderen kann der optische Fluss zur Tiefenrekonstruktion der abgebildeten Szene genutzt werden (Structure-from-Motion). Hierfür ist entweder eine Bewegung der Kamera über die Zeit oder eine Aufnahme durch mehr als eine Kamera erforderlich. Wenn es nun aber, wie oben dargestellt, erforderlich ist, den zeitlichen oder räumlichen Abstand zwischen zwei Aufnahmen gering zu halten, sinkt auch die Trennschärfe von bewegten oder unbewegten Objekten zum Hintergrund. Fährt z.B. ein Fahrzeug auf der Autobahn auf ein Stauende zu, ist es erforderlich, das stehende Fahrzeug am Stauende sauber vom Hintergrund oder der Straße zu trennen. Geschieht dies nicht ausreichend genau, kann das Fahrzeug nicht als Hindernis erkannt werden und kein Bremsvorgang eingeleitet werden.
  • Durch die Verkettung von Flussvektoren 202 über eine längere Zeit, unabhängig vom Inhalt der Szene, steigt die Trennschärfe von Objekten zum Hintergrund und somit auch die Genauigkeit einer Tiefenrekonstruktion. Für eine Erkennung von generischen Objekten ist es erforderlich, die Szene gleichförmig abzutasten, im Gegensatz zur Selektion bestimmter Merkmale im Bild, die in klassischen Trackingalgorithmen zum Einsatz kommt.
  • 3 zeigt ein Ablaufdiagramm eines Verfahren zum Verknüpfen von optischen Fluss gemäß einem Ausführungsbeispiel. Beispielsweise kann dadurch ein optischer Fluss, wie er in 2 dargestellt ist, also die in 2 dargestellten Flussvektoren, um einen weiteren optischen Fluss, beispielsweise generiert unter Verwendung zumindest eines nachfolgenden Bilds oder generiert aus einem nachfolgenden Bildpaar ergänzt werden.
  • Ein Beginn 300 des Verfahrens erfolgt, wenn eine erste Flusskarte verfügbar ist. Eine solche Flusskarte stellt beispielsweise eine Liste mit Flussvektoren dar, wie sie grafischen in 2 dargestellt sind. Beispielsweise umfasst eine Flusskarte für jeden der Flussvektoren eine Position eines Anfangspunkts und eine Position eines Endpunkts. Die erste Flusskarte kann beispielsweise erzeugt werden, sobald ein Paar von Bildern zur Verfügung steht, aus denen ein optischer Fluss bestimmt werden kann.
  • Ein Hauptalgorithmus des Verfahrens besteht gemäß einem Ausführungsbeispiel aus drei Teilen in Form der Schritte 302, 304, 306, des in 3 dargestellten schematischen Ablaufs. Die Hauptlogik ist in einer durch den Schritt 306 dargestellten sogenannten update Tracks- Routine zu finden, die nachfolgend anhand von 4 anhand eines Ausführungsbeispiels näher beschrieben wird.
  • Vor der iterativen Aktualisierung der Flusstracks in Schritt 306 findet in dem Schritt 302 eine Bestimmung von Saatpunkten (seeds) statt, die dann im Schritt 304 zu initialen Flusstracks weiterverarbeitet werden.
  • Eine Wiederholung 308 der Schritte 302, 304, 306 erfolgt, sobald eine neue Flusskarte zur Verfügung steht, wie es durch ein Rückkopplung 308 angedeutet ist. Eine neue Flusskarte kann erzeugt werden, sobald ein neues Bild oder ein neues Bildpaar zur Verfügung steht.
  • Die einzelnen Flusstracks sind gemäß einem Ausführungsbeispiel in einer Trackkarte zusammengefasst.
  • 4 zeigt ein Ablaufdiagramm eines Ausführungsbeispiels des in 3 gezeigten Schritts 306 des Aktualisierens der Flusstracks einer Trackkarte. Der Schritt 306 umfasst eine Mehrzahl von Schritten 410, 412, 416, 418, von denen einige optional sind und die für jeden Flusstrack durchgeführt werden. Auf diese Weise kann jeder Flusstrack einer Trackkarte aktualisiert werden.
  • In dem Schritt 410 wird überprüft, ob der letzte Trackpunkt des zu aktualisierenden Tracks gültig ist. Wenn dies der Fall ist, wird in dem Schritt 412 eine Trackverlängerung des aktualisierenden Tracks vorgenommen. Anschließend wird in dem optionalen Schritt 414 eine Kollisionserkennung und in dem optionalen Schritt 416 ein Multiindexhandhabung durchgeführt.
  • Wenn ein Ergebnis des Schritts 410 ergibt, dass der letzte Trackpunkt des zu aktualisierenden Tracks nicht gültig ist, wird in dem Schritt 418 eine Reinitialisierung durchgeführt.
  • Der beschriebene Ansatz ermöglicht es, die Flusstracks in Echtzeit zu aktualisieren. Es müssen nicht alle Zwischenbilder schon zu Anfang vorliegen. Stattdessen werden die Tracks gemäß einem Ausführungsbeispiel iterativ mit dem Vorliegen neuer Daten aktualisiert, insbesondere ohne dass die Daten rechen- und speicherintensiv sortiert werden müssten.
  • Optional wird eine näherungsweise gleichförmige Verteilung der Flussvektoren über das Bild erreicht, ohne die Flussvektoren neu sortieren zu müssen. Dies geschieht gemäß Ausführungsbeispielen durch zwei Maßnahmen. Zum einen durch eine Belegungskarte zur Kollisionsdetektion und zum anderen durch ein Multiindexkonzept.
  • Gemäß einem Ausführungsbeispiel wird die Region, in der die verketteten Flussvektoren beginnen, optional eingeschränkt, um die Rechenzeit zu reduzieren.
  • Die verketteten Flussvektoren ermöglichen ein Nachverfolgung der Bewegung auch über Zwischenbilder hinweg und nicht nur zwischen Start- und Endbild. Dies ermöglicht Wahl beliebiger Zeitbasen, ausgehend vom aktuellen Bild, aber auch ausgehend von vorherigen Bildern.
  • Der Quantisierungsfehler, der gegebenenfalls beim Verketten der Flussvektoren entsteht, wird gemäß einem Ausführungsbeispiel auf ein Minimum reduziert.
  • Die eingangsseitigen Flusskarten können einen räumlichen Versatz (Offset) haben. Gemäß einem Ausführungsbeispiel wird dieser Versatz kompensiert. Dies ermöglicht eine ressourcensparende Berechnung des optischen Flusses.
  • 5 zeigt ein Blockdiagramm zum Aktualisieren einer aktuellen Trackkarte 500 gemäß einem Ausführungsbeispiel. Dargestellt ist ein Schritt 306 des Aktualisierens der Flusstracks der Trackkarte 500, um eine aktualisierten Trackkarte 502 zu erhalten. Bei der aktuellen Trackkarte 500 handelt es sich entweder um eine initiale Trackkarte oder um eine vorangegangene Trackkarte, je nachdem, ob das Verfahren das erste mal oder wiederholt ausgeführt wird.
  • Durch Ausführung des Schritts 306 wird die aktualisierte Trackkarte 502 unter Verwendung der aktuellen Trackkarte 500 und einer aktuellen Flusskarte 200 bestimmt. Die aktuellen Flusskarte 200 umfasst eine Mehrzahl von Flussvektoren.
  • Die aktuelle Trackkarten 500, 502 sind in einem Mehrzahl von Kacheln 510 unterteilt, von denen in 5 lediglich eine mit Bezugszeichen versehen ist. Lediglich beispielhaft sind die Trackkarten 500 in 36 Kacheln 510 unterteilt, die in sechs Zeilen und sechs Spalten angeordnet sind. Gemäß dem gezeigten Ausführungsbeispiel weisen alle Kacheln 510 dieselbe Größe auf. Alternativ weisen zumindest einige der Kacheln 510 voneinander abweichende Größen auf. Auch die Anordnung der Kacheln 510 in Spalten und Zeilen ist lediglich beispielhaft gewählt.
  • Die aktuelle Trackkarte 500 umfasst eine Mehrzahl von Flusstracks 512, von denen in 4 lediglich einer mit einem Bezugszeichen versehen ist. Beispielhaft umfasst jede der Kacheln 510 zumindest einen Flusstrack 512.
  • Die aktualisierte Trackkarte 502 umfasst eine Mehrzahl von aktualisierten Flusstracks 514, von denen in 4 lediglich einer mit einem Bezugszeichen versehen ist. Allen oder zumindest die meisten der aktualisierten Flusstracks 514 sind aus einer Verlängerung der von der aktuellen Trackkarte 500 umfassten Flusstracks 512. Daher weisen zumindest die meisten der aktualisierten Flusstracks 514 eine größere Länge als die aktuellen Flusstracks 512 auf.
  • Sobald eine neue Flusskarte vorliegt, kann die aktualisierte Trackkarte 502 als neue aktuelle Flusskarte angesehen werden und mit der neuen Flusskarte aktualisiert werden, wie es anhand der gezeigten Flusskarte 200 und der gezeigten aktuellen Trackkarte 500 beschrieben ist. Somit kann der Schritt 306 fortlaufend wiederholt ausgeführt werden, um die jeweils vorliegende aktuelle Trackkarte zu aktualisieren.
  • Die Flusskarte 200 und die Trackkarten 500, 502 liegen gemäß einem Ausführungsbeispiel, unabhängig von der hier und in den Folgenden Figuren gezeigten grafischen Darstellung, als Listen vor. Beispielsweise umfasst eine die aktualisierte Trackkarte 502 repräsentierende Liste für jeden der aktualisierten Flusstracks 514 Werte, die einen Anfangspunkt, einen Endpunkt, und gegebenenfalls zumindest einen durch eine Verlängerung hervorgegangenen Zwischenpunkt definieren.
  • Der beschriebene Ansatz ermöglicht eine echtzeitfähige Verknüpfung von optischem Fluss. Die Aktualisierung in Echtzeit wird anhand von 5 im Folgenden anhand eines Ausführungsbeispiels beschrieben.
  • Dazu zeigt 5 eine Aktualisierung der Flusstracks 512 mit der Flusskarte 200 aus dem optischen Fluss. Jedem Flusstrack 512 ist eine dedizierte Kachel 510 zugeordnet, in der die einzelnen Punkte des jeweiligen Flusstracks 512 gespeichert werden. Jede Kachel 510 beinhaltet M Flusstracks, wobei üblicherweise M = 2...3 gilt. Der Übersichtlichkeit halber ist in den Abbildungen jeweils nur ein Track pro Kachel 510 dargestellt. Die Größe einer Kachel 510 ist prinzipiell variabel. In der Praxis haben sich Größen von 6 Pixel bis 24 Pixel pro Dimension bewährt. Höhe und Breite können, müssen jedoch nicht gleich sein. In der durch den Schritt 306 dargestellten Aktualisierungsroutine wird zunächst jede Kachel 510 einzeln betrachtet. Ist in der Kachel 510 der aktuellen Trackkarte 500 ein valider beziehungsweise aktiver Flusstrack 512 vorhanden, so wird dieser Flusstrack 512 verlängert. Ist kein aktiver Flusstrack 512 vorhanden, so wird ein neuer Flusstrack gestartet, dessen Anfangspunkt sich in der Kachel 510 befindet, in der kein aktiver Flusstrack 512 vorhanden ist. Hierbei wird beispielsweise anhand von Qualitätsmerkmalen, wie sie beispielsweise in der Flusskarte 200 vorhanden sind, der beste Startpunkt für den neuen Flusstrack ausgewählt werden.
  • Bei der Verlängerung eines der Flusstracks 510 können zwei Fälle auftreten:
    • Für den ersten Fall trifft in der eingangsseitigen Flusskarte 200 der Endpunkt des aktuellen Flusstracks 510 auf einen validen Eintrag. Der Flusstrack 510 wird verlängert und der neue Datenpunkt beispielsweise in einem Speicher hinterlegt.
  • Für den zweiten Fall befindet sich in der Flusskarte 200 kein valider Flussvektor am Endpunkt des Flusstracks 510. In diesem Fall kann entweder ein benachbarter Flussvektor aus der Flusskarte 200 verwendet werden, was zu einem entsprechend höheren Fehler führt oder das Ende des Flusstracks 510 wird als invalide markiert.
  • Diese Vorgehensweise wird für alle Flusstracks 510 der aktuellen Trackkarte 500 wiederholt. Dadurch wird aus der initialen oder vorherigen Trackkarte 500 mit verketteten Flussvektoren, die hier als Flusstracks 510 bezeichnet werden, in einem Iterationsschritt eine Aktualisierung der Flusstracks 510 durchgeführt.
  • Ist die Verlängerung des jeweiligen Flusstracks 510 erfolgreich, wird in weiteren optionalen Schritten eine Optimierung der aktualisierten Trackkarte 502 durchgeführt, um eine gleichförmige Verteilung zu erreichen. Dies erfolgt zum einen durch eine Kollisionsdetektion und zum anderen durch ein Multiindexkonzept, wie es anhand der nachfolgenden Figuren erläutert wird.
  • 6 zeigt eine aktualisierte Trackkarte 502 gemäß einem Ausführungsbeispiel. Dabei handelt es sich beispielsweise um die anhand von 5 beschriebene aktualisierte Trackkarte 502. Wiederum ist der Übersichtlichkeit halber von der Mehrzahl von Kacheln nur eine Kachel 510 mit einem Bezugszeichen und von der Mehrzahl der Flusstracks 510 nur ein Flusstrack 510 mit einem Bezugszeichen versehen.
  • Aus 6 ist ersichtlich, dass Kacheln 510 der Flusstrackkarte 502 von mehreren Flusstrackendpunkten belegt sein können. Ein Endpunkt eines Flusstracks 514 entspricht dabei dem Endpunkt des Flussvektors, um den der Flusstrack 514 zuletzt verlängert wurde. Der mit Bezugszeichen versehene Flusstrack 514 setzt sich beispielhaft aus drei Flussvektoren zusammen.
  • Der Grund für die Mehrfachbelegung einer Kachel 510 ist, dass Flusstracks 514 in ihrer Startkachel gespeichert werden und sich die Endpunkte der Flusstracks 514 nur virtuell überschneiden. Dennoch ist dies aus zwei Gründen eine unerwünschte Eigenschaft. Zum einen ist die Verteilung der Flusstrackendpunkte nicht mehr homogen, sondern konzentriert sich in bestimmten Stellen des durch die Flusstrackkarte 502 repräsentierten Bildes. Beispielsweise für eine Eigenbewegungsschätzung ist jedoch eine gleichförmige Verteilung vorteilhaft.
  • Zum anderen kann es bei bestimmten Kameraausrichtungen oder Fahrtrichtungen dazu kommen, dass sich die Flusstrackendpunkte an einer Stelle im Bild zusammenziehen (komprimieren). Dies ist insbesondere dann der Fall, wenn sich der sogenannte Focus-of-Compression (FOC) innerhalb des Bildes befindet. Der Focus-of-Compression (FOC) ist gewissermaßen dasselbe wie der Focus-of-Expansion (FOE) bei umgekehrter Fahrtrichtung. Diese Situation tritt beispielsweise auf, wenn die Fahrtrichtung geradeaus ist und Kamera nach hinten zeigt oder wenn die Fahrrichtung rückwärts ist und die Kamera nach vorne zeigt.
  • Die Mehrfachbelegung von Kacheln 510 der Flusstrackkarte 502 durch Endpunkte von Flusstracks 514 ist in 6 durch eine Schraffur derjenigen der Kacheln 510 gekennzeichnet, in denen mehrere Flussvektoren 514 enden. Bei Flusstracks 514, die aus mehreren Flussvektoren zusammengesetzt sind, erstreckt sich das letzte Segment zum Rand der Flusstrackkarte 502 hin.
  • In 6 ist schematisch eine Vorwärtsfahrt einer Frontkamera dargestellt, bei der sich die Flusstracks 514 von der Bildmitte (Focus-of-Expansion) zum Rand bewegen und dort mit kürzeren Flusstracks 514 kollidieren.
  • 7 zeigt eine aktualisierte Trackkarte 502 gemäß einem Ausführungsbeispiel. Im Unterschied zu 6 ist schematisch eine Rückwärtsfahrt der in 6 genannten Frontkamera dargestellt, bei der sich die Flusstracks 514 in der Mitte des Bildes in einer Art Singularität komprimieren. Selbst bei einer erneuten Vorwärtsfahrt blieben nur noch sehr wenige Flusstracks 514 mit unterschiedlichem Ursprung übrig.
  • 8 zeigt eine aktualisierte Trackkarte 502 gemäß einem Ausführungsbeispiel. Dabei handelt es sich um die in 7 gezeigte Trackkarte, die nun mit Indexen versehen ist. So ist die mit dem Bezugszeichen versehene Kachel 510 mit dem Index „9“ versehen.
  • Bei einer solchen indizierten Flusstrackkarte 502 hat jede Kachel 510 einen Index, beispielsweise eine Adresse.
  • 9 zeigt eine Belegungskarte 902 gemäß einem Ausführungsbeispiel. Die Belegungskarte 902 basiert auf der in 8 dargestellten indizierten Flusstrackkarte.
  • In der Belegungskarte 902 steht die Adresse des okkupierenden Flusstracks. Im Speicher, der beispielsweise zum Speichern einer die Flusstrackkarte abbildenden Liste verwendet wird, steht jeweils nur eine Adresse, Mehrfachnennungen symbolisieren lediglich eine aufzulösende Kollision. Ist eine Kachel 510 nicht belegt, wird eine Null-Adresse verwendet.
  • Die Nutzung der Belegungskarte 902 stellt eine Gegenmaßnahme zur Überbelegung von Kacheln 510 mit Flusstrackendpunkten dar. Hierbei wird nach jeder Trackerweiterung, wie sie beispielsweise anhand von 5 beschrieben ist, geprüft, ob in der Belegungskarte 902 am Endpunkt des Flusstracks bereits eine Adresse eines anderen Flusstracks vorhanden ist. Ist dies nicht der Fall, wird die Adresse des aktuellen Flusstracks hinterlegt. Bei einer bereits vorhandenen Belegung wird eine Kollisionsstrategie angewendet, um den besseren Flusstracks auszuwählen. Eine solche Kollisionsstrategie kann beispielsweise die Länge des Flusstracks in Pixeln, die Anzahl der Segmente (entspricht Alter des Flusstracks), die Größe des Quantisierungsfehlers, den Ursprung des Flusstracks oder andere Gütemaße des Flusstracks verwenden.
  • Die Belegungskarte 902, in der die Endpunkte gespeichert werden, kann in manchen Fällen dazu führen, dass eine deutliche Ausdünnung der Flusstracks stattfindet. Ist das Ziel nicht zwingend eine gleichförmige Verteilung der Endpunkte sondern die Vermeidung von degenerierten Konfigurationen für die Eigenbewegungsschätzung, ist es sinnvoller, nicht die Endpunkte zu speichern sondern den Startpunkt des letzten Tracksegments, was dem zweitletzten Punkt des Flusstracks entspricht. Im Gegensatz zur oben genannten Herangehensweise wird damit nicht die Mehrfachbelegung der Endpunkte verhindert, sondern die Mehrfachbelegung einer Kachel 510 mit Startpunkten eines Flusstracks oder eines Tracksegments.
  • Ein besonderes Merkmal des beschriebenen Ansatzes ist, dass die Belegungskarte 902 nicht etwa die Anzahl der okkupierenden Flusstracks oder andere Metainformationen speichert, sondern dessen Adresse, womit ein direkter Zugriff in den Speicher möglich ist. Ein weiteres Merkmal, das Hand in Hand mit einem nachfolgend beschriebenen Multiindexkonzept geht, ist dass zur Kollisionsdetektion keine speicher- und rechenaufwändige Neusortierung der Flusstracks notwendig ist.
  • Ein weiteres Merkmal ist, dass die Kollisionsdetektion situationsabhängig ein- und ausgeschaltet werden kann, sowie dass sie regionenbasiert aktiviert oder deaktiviert werden kann. Zur Reduktion von Rechenzeit kann es sinnvoll sein, die Kollisionsdetektion nur in bestimmten Situationen einzuschalten. Dies ist beispielsweise der Fall, wenn ein Fahrzeug mit einer Frontkamera rückwärts fährt. In anderen Szenarien ist eine Kollisionsdetektion nicht nötig. Ein vergleichbares Verhalten kann erreicht werden, wenn die Kollisionsdetektion nur in einer oder mehreren Regionen aktiviert wird. Auch hier bietet sich der Bereich um den Focus-of-Expansion an.
  • Gemäß einem Ausführungsbeispiel werden Situationen, in denen ein Aussortieren von Flusstracks erwünscht ist, unter Verwendung eines Situationssignals angezeigt. Das Situationssignal wird beispielsweise von einer Steuereinrichtung zum Steuern eines Betriebs der Bilderfassungseinrichtung bereitgestellt. Wenn das Situationssignal eine gewünschte Aussortierung anzeigt, wird beispielsweise nach oder während jeder durchgeführten Verlängerung eines Flusstracks geprüft, ob ein Flusstrack aus der Trackkarte aussortiert werden kann. Wenn ein auszusortierender Flusstrack gefunden wird, wird dieser aus der Trackkarte aussortiert oder beispielsweise als ungültig oder inaktiv gekennzeichnet. Wenn das Situationssignal dagegen keine gewünschte Aussortierung anzeigt, wird eine solche Prüfung beispielsweise nicht durchgeführt oder es wird ein gegebenenfalls aussortierbarer Flusstrack nicht aussortiert.
  • 10 zeigt eine Trackkarte 502 gemäß einem Ausführungsbeispiel. Im Unterschied zu den vorangegangenen Figuren ist für jeden der Flusstracks 514 ein Endpunkt 1010 markiert. Der Übersichtlichkeit halber ist wiederum nur eine der Kacheln 510 mit einem Bezugszeichen und nur einer der neun dargestellten Flusstracks und dessen Endpunkt mit Bezugszeichen versehen.
  • Anhand der 10 und 11 wird ein Multiindexkonzept beschrieben. Das Multiindexkonzept stellt eine weitere Strategie zur Homogenisierung der Flusstrackkarte 502 und insbesondere der Verteilung der Endpunkte 1010 der Flusstracks 514 dar. Wie in 10 dargestellt, entfernt sich der Endpunkt 1010 eines Flusstracks 514 im Laufe der Zeit von seinem Startpunkt, was tatsächlich aber ein gewünschtes Verhalten ist. Bei vielen Kameraausrichtungen führt dies jedoch dazu, dass Regionen im Bild recht schnell verwaisen. Insbesondere im Bereich des FOE ist dies zwangsläufig der Fall.
  • Zur Verhinderung der Ausdünnung der Endpunkte 1010 um den FOE wird in dem dargestellten Ansatz das Multiindexkonzept genutzt. Hierbei wird erkannt, wenn sich ein Flusstrack 514 von seiner Ursprungskachel entfernt. Bei der Überschreitung einer gewissen Schwelle, wird dann ein neuer Flusstrack 514 gestartet, während der bisherige Flusstrack 514 fortgeführt wird. Auf diese Weise wird gewährleistet, dass die Verteilung der Endpunkte 1010 der Flusstracks 514 näherungsweise homogen ist. Auf Datenebene wird jedem Flusstrack 514 ein Attribut hinzugefügt, das beschreibt, ob der Flusstrack 514 aktiv oder inaktiv ist. Alternativ kann dieser Zustand über den letzten Punkt im Flusstrack 514 abgefragt werden, der Auskunft über Validität des Flusstracks 514 gibt.
  • Die Anzahl der Flusstracks 514 pro Kachel ist konfigurierbar und wird hauptsächlich von den Erfordernissen der abnehmenden Algorithmen und der Änderungsgeschwindigkeit der Szene bestimmt. Für den Anwendungsfall der Eigenbewegungsschätzung sind in der Praxis zwei Flusstracks 514 pro Kachel 510 ausreichend. Zur Detektion und Verfolgung von Objekten ist eine höhere Anzahl wünschenswert. Hierbei ist es möglich, die Anzahl von Flusstracks 514 pro Kachel 510 zur Laufzeit in bestimmten interessanten Regionen zu vergrößern oder zu verkleinern. Dies könnte beispielsweise im Bereich des FOE oder des Horizonts der Fall sein, um weit entfernte Objekte zu detektieren. Um zu bestimmten, wann ein weiterer Flusstrack 514 gestartet wird, existiert eine Reihe von Strategien, die im Folgenden beschrieben werden. Der am wenigsten rechenintensive Indikator ist Anzahl von Segmenten des Flusstracks 514 und somit dessen Alter. Kollidieren zwei Flusstracks 514, so bleibt der längere erhalten; bei gleicher Länge gewinnt der Bestehende. Dies führt zu einer Verringerung der Speicherzugriffe.
  • Eine weitere und algorithmisch gegebenenfalls besser geeignete Strategie ist die geometrische Distanz zwischen Anfangs- und Endpunkt 1010 zu bestimmen. Sobald diese Distanz einen Schwellwert überschreitet wird ein neuer Flusstrack 514 gestartet. Der Vorteil ist hier, dass bei sehr kleinen Bewegungen, in denen der Flusstrack 514 beispielsweise seine eigene Kachel 510 nicht verlässt, keine Notwendigkeit für einen weiteren Flusstrack 514 besteht. Auch bei einem Flusstrack 514, der sich zunächst vom Startpunkt entfernt und sich anschließend annähert, ist die geometrische Distanz als Indikator gut geeignet. Auf diese Weise werden Rechenzeit und Speicherzugriffe gespart. Die beiden genannten Indikatoren können zudem von der Bildregion abhängen und sich somit lokal unterschiedlich verhalten.
  • Statt der geometrischen Distanz wird gemäß einem Ausführungsbeispiel die Geschwindigkeitsänderung des Flusstracks 514 genutzt. Beschleunigt sich der Flusstrack 514, werden also die Segmente länger, kann es sinnvoll sein, einen neuen Flusstrack 514 zu beginnen. In diesem Fall ist zu erwarten, dass die Geschwindigkeit der Veränderung zunimmt. Ein ähnlicher Ansatz auf globaler Ebene wird durch die Nutzung von Fahrzeugsignalen erreicht. Üblicherweise wird über den Fahrzeug-Bus die Geschwindigkeit sowie die Beschleunigung bereitgestellt, ebenso wie die Änderung der Ausrichtung des Fahrzeugs (Gier-, Nick- und Rollrate). All diese Indikatoren können genutzt werden, um die Schwelle zum Beginn neuer Flusstracks 514 zu ändern, wobei große Beschleunigungssignale zu einem früheren Beginn neuer Flusstracks 514 führen. 11 zeigt die anhand von 10 beschriebene Trackkarte 502 nach dem Anwenden des Multiindexkonzepts gemäß einem Ausführungsbeispiel. Beispielsweise ist der mit Bezugszeichen versehenen Flusstrack 514 vom FOE in Richtung des Bildrandes gewandert. Für diesen Flusstrack 514 wird ein neuer zusätzlicher Flusstrack 1114 gestartet, dessen Startpunkt in derselben Kachel 510 liegt, in der der Startpunkt des Flusstracks 514 liegt.
  • Auf diese Weise kann der in 10 zu erkennenden inhomogenen Verteilung der Endpunkte 1010 entgegengewirkt werden. Für jeden Flusstrack 514, dessen Endpunkt 1010 sich ausreichend weit von seiner Ursprungskachel entfernt hat, wird ein neuer zusätzlicher Flusstrack 1114 gestartet. Die Verteilung der Endpunkte 1010 ist dadurch gleichmäßiger als zuvor.
  • Beispielhaft wurde die Trackkarte 502 um sechs zusätzliche Flusstracks 1114 ergänzt, die jeweils einen Endpunkt 1010 aufweisen, der sich nahe am FOE befindet.
  • 12 zeigt ein Bild 106 mit unter Verwendung dieses Bildes 106 bestimmten neue Flusstracks 1214 gemäß einem Ausführungsbeispiel. Ferner ist ein Kreuz eingezeichnet, dass den Focus- of- Expansion (FOE) 1220 darstellt. Die neuen Flusstracks 1214 können in eine Trackkarte eingetragen werden, wie sie bereits beschrieben wurde.
  • Anhand von 12 wird eine mögliche Einschränkung der Startregion für die neuen Flusstracks 1214 beschrieben.
  • Dargestellt sind in 12 die neuen Flusstracks 1214, die in einem einzelnen Durchlauf, beispielsweise während der anhand von 5 beschriebenen Aktualisierung einer Trackkarte, neuinitialisiert werden. Eine solche Neuinitialisierung geschieht gemäß einem Ausführungsbeispiel, wenn der vorherige Flusstrack der Kachel keinen Nachfolger findet oder in der Kollisionsdetektion gelöscht wurde. Aus dem Bild 106 ist ersichtlich, dass hauptsächlich Vektoren am Bildrand neu initialisiert wurden, insbesondere in den Regionen, die weit entfernt vom FOE 1220 liegen. Zusätzlich ist zu sehen, dass die Vektoren im nächsten Bild, also die um die sich aus dem nächsten Bild ergebenden Flussvektoren ergänzten neuen Flusstracks 1214, schon nicht mehr in der Bildebene liegen werden. Ihr langfristiger Nutzen ist also begrenzt, während der Rechen- und Speicherzugriffsaufwand groß ist.
  • Um dieses Problem zu lösen, wird gemäß einem Ausführungsbeispiel zur Steigerung der Recheneffizienz ein regionenbasiert eingeschränktes Starten von Tracks durchgeführt. Zum Hintergrund dieses Merkmals ist die Kenntnis über die Anzahl der Speicherzugriffe zur Auswahl eines Startpunktes entscheidend. Existiert in einer Kachel kein aktiver bzw. gültiger Flusstrack muss ein geeigneter Startpunkt für einen neuen Flusstrack 1214 gefunden werden. Im günstigsten Fall werden diese Startpunkte extern bereitgestellt. Ist dies nicht möglich, so werden gemäß einem Ausführungsbeispiel alle möglichen Startpunkte einer Kachel auf Eignung untersucht. Im Normalfall bedeutet dies nicht nur einen hohen Rechenaufwand sondern auch einen gesteigerten Aufwand zum Zugriff auf den (potenziell langsamen) Arbeitsspeicher.
  • Um diese Aufwände zu reduzieren, wird gemäß einem Ausführungsbeispiel eine regionenbasierte Aktivierung von Startpunkten durchgeführt. Durch Parametrierung kann festgelegt werden, in welchen Kacheln neue Flusstracks 1214 starten dürfen. Üblicherweise ist dies nicht in allen Regionen des Bildes 106 sinnvoll. Bei einer Frontkamera während einer Vorwärtsfahrt bringt die Initialisierung von neuen Flusstracks 1214 am Bildrand wenig Mehrwert, da diese neuen Flusstracks 1214 in naher Zukunft aus dem Bildbereich wandern werden oder von längeren Tracks im Rahmen der Kollisionsdetektion überschrieben werden. Bei einer seitlich ausgerichteten Fischaugenkamera komprimieren sich die Flussvektoren in der Mitte des linken oder rechten Bildrandes. Auch hier wird gemäß einem Ausführungsbeispiel dieser Bereich ausgespart, um die Rechen- und Speicherlast zu reduzieren.
  • Gemäß einem Ausführungsbeispiel wird ein Freigabesignal generiert, das anzeigt, in welchen Kacheln neue Flusstracks 1214 gestartet werden dürfen. Das Freigabesignal wird beispielsweise abhängig von einem Betriebsmodus der Bilderfassungseinrichtung generiert, die das Bild 106 erfasst hat. Alternativ ist ein entsprechendes Freigabesignal vorbestimmt. Unter Verwendung des Freigabesignals kann für jeden Durchlauf ermittelt werden, ob in einer Kachel ein neuer Flusstrack 1214 starten darf oder nicht.
  • Ein anderer Ansatz ist die Einschränkung der Startregion auf Objekte im Bild 106. Diese Objekte werden extern vorgeben, beispielsweise von einer gestaltbasierten Objektdetektion oder einer semantischen Segmentierung. In diesem Fall werden neue Flusstracks 1214 auf die vorgegebenen Objekte beschränkt und eigenen sich zum Tracking. Beispielsweise kann ein das im Bild 106 abgebildete Fahrzeug als ein solches Objekt 1225 verwendet werden.
  • Gemäß einem Ausführungsbeispiel wird ein Objektsignal generiert, das anzeigt, in welchen Kacheln das Objekt 1225 befindet. Das Objektsignal wird beispielsweise von einer Objekterkennungseinrichtung bereitgestellt, die ausgebildet ist, das relevante Objekt 1225 in dem Bild 106 zu erkennen und eine Position desselben innerhalb des Bildes 106 anzuzeigen. Unter Verwendung des Objektsignals kann für jeden Durchlauf ermittelt werden, ob eine Kachel einen Bereich des Bildes 106 abdeckt, der beispielsweise zur Nachverfolgung des Objekts 1225 relevant ist. Wenn dies der Fall ist, kann das Starten eines neuen Flusstracks 1214 für diese Kachel freigeben sein. Ansonsten kann diese Kachel für das Neustarten von Tracks gesperrt sein.
  • 13 zeigt eine schematische Darstellung eines Datenlayouts 1330 einer Trackkarte 502 gemäß einem Ausführungsbeispiel. Die Trackkarte 502 wird auch als Track-Map bezeichnet. Beispielhaft sind für einen Flusstrack 514 der Trackkarte 501 ein Startpunkt 1310, ein erster Zwischenpunkt 1312, ein zweiter Zwischenpunkt 1314 und ein Endpunkt 1010 dargestellt. Der Flusstrack 514 erstreckt sich zwischen dem Startpunkt 1310 und dem Endpunkt 1010. Der Flusstrack 514 setzt sich aus einem sich zwischen dem Startpunkt 1310 und dem ersten Zwischenpunkt 1312 erstreckenden ersten Flussvektor, einem sich zwischen dem ersten Zwischenpunkt 1312 und dem zweiten Zwischenpunkt 1314 erstreckenden zweiten Flussvektor und einem sich zwischen dem zweiten Zwischenpunkt 1314 und dem Endpunkt 1010 erstreckenden dritten Flussvektor zusammen.
  • Zu jedem Punkt 1310, 1312, 1314, 1010 existieren x- und y-Koordinate, eine Validitätsinformation „v“ sowie ein beim Verketten gemachter Quantisierungsfehler dx und dy. Der Übersichtlichkeit halber ist lediglich ein Flusstrack 514 pro Kachel 510 dargestellt, wobei wiederum nur eine Kachel und ein Flusstrack mit Bezugszeichen versehen sind. Das Konzept beinhaltet M Flusstracks 514 pro Kachel 510, um eine gleichförmige Verteilung der Endpunkte 1010 der Flusstracks 514 zu erreichen, wie es beispielsweise durch das beschriebene Multiindexkonzept erreichbar ist.
  • In 13 ist beispielhaft der strukturellen Aufbau eines einzelnen Flusstracks 514 gezeigt. Es ist zu sehen, dass ein Track nicht nur aus Startpunkt 1310 und Endpunkt 1010 besteht, sondern den jeweiligen Einzelpunkten (x und y), einem Validitätsattribut sowie dem Quantisierungsfehler dx und dy. Hierdurch wird ermöglicht, dass, ausgehend vom letzten Bild bzw. Bildpunkt, eine beliebig lange oder kurze Distanz des Flusstracks 514 rekonstruiert werden kann. Dies ist in der Praxis besonders wichtig, denn hier ist stets das aktuelle Bild die Bezugsgröße. Wenn das aktuelle Bild als T bezeichnet wird, dann ist in der praktischen Anwendung sowohl eine Eigenbewegungsschätzung als auch eine Tiefenrekonstruktion der Szene als auch eine Objektdetektion zwischen Bild T und T - X erforderlich. Hierbei kann X gewählt werden als X = 1...m mit m als variabler Ganzzahl und m < M - 1, wobei M die maximale Anzahl der in einem Flusstrack 514 gespeicherten Punkte 1010, 1310, 1312, 1314 ist.
  • Durch das hier vorgestellte Datenlayout können verschiedene m realisiert werden, obwohl nur eine Trackkarte 502 vorliegt. Somit wird eine Schätzung der Eigenbewegung über mehrere zeitliche oder räumliche Distanzen ermöglicht sowie zusätzlich die Rekonstruktion der Tiefe der Szene über mehrere zeitliche Distanzen. In der Praxis werden verschiedene zeitliche Distanzen genutzt, um unterschiedliche Arten von Objekten in der Szene zu erkennen.
  • Für schnellbewegte Objekte, wie beispielsweise querende Radfahrer oder entgegenkommende Fahrzeuge bietet sich eine kurze Zeitbasis an, da das Objekt entweder nur kurz im Bild zu sehen ist oder durch Einschränkungen des optischen Flusses, wie nachfolgend anhand von 15 erläutert, nicht präzise über längere Zeiträume erkannt werden kann. Andererseits ist für weit entfernte oder sich langsam bewegende Objekte eine lange Zeitbasis vorteilhaft. Dies können beispielsweise vorausfahrende Fahrzeuge sein oder Fahrzeuge in einem Stauende. Beide Anwendungsfälle können mit dem hier gezeigten Datenkonzept gleichzeitig bedient werden.
  • 14 zeigt ein Bild 106 mit einem zu verlängernden Flusstrack 514 gemäß einem Ausführungsbeispiel. Der Flusstrack 514 wird mit einem aktuellen Flussvektor 202 verlängert, wobei ein Quantisierungsfehler dx, dy entsteht. Der Quantisierungsfehler entsteht, wenn ein Flussvektor, der hier dem Flusstrack 514 entspricht, auf einem nicht-ganzzahligen Wert endet. Zum Auslesen des nächsten Flussvektors, hier des Flussvektors 202, muss der Endpunkt auf den nächsten ganzzahligen Pixel gerundet werden. Dabei entsteht der Quantisierungsfehler. Eine Minimierung des Quantisierungsfehlers ist vorteilhaft.
  • Aus 13 wird ersichtlich, dass jeder Punkt im Flusstrack 514 auch Informationen über den Quantisierunsfehler beinhaltet (dx und dy). Dieser entsteht, wenn ein Flusstrack 514 auf einem nicht-ganzzahligen Pixel endet, wie es bei Fluss-Algorithmen mit Subpixelschätzung üblich ist. Soll der Flusstrack 514 verlängert werden, muss vom Ende des Flusstrack 514 auf den nächsten ganzzahligen Pixel gerundet werden, wie es in 14 gezeigt ist. Hierbei entsteht ein Quanitisierungsfehler.
  • Unter der Annahme, dass stets eine Subpixelschätzung im optischen Fluss vorliegt, kann der Subpixel auf ±1px begrenzt werden, indem der Quanitisierungsfehler bei der Verkettung von Flussvektoren 202 vom letzten Punkt des Flusstracks 514 abgezogen wird. Zunächst werden die Indizes zum Zugriff in die Flusskarte mit der Bezeichnung xidx und yidx berechnet. Hierbei wird der Quantisierungsfehler des letzten Durchlaufs vom Endpunkt des letzten Durchlaufs abgezogen: x idx =round ( x t-1 -dx t-1 )
    Figure DE102020213587A1_0001
    y idx =round ( y t-1 -dy t-1 )
    Figure DE102020213587A1_0002
  • Zur Verkettung der Flussvektoren, hier zur Verkettung des Flusstracks 514 mit dem Flussvektor 202, wird nun der optische Fluss (OF(x, y)) an der Stelle der zuvor berechneten gerundeten Koordinaten abgefragt und komponentenweise zum letztem Punkt (xt-1, yt-1) hinzugefügt: ( x t , y t ) = ( x t-1 , y t-1 ) + OF t-1 ,t ( x idx , y idx )
    Figure DE102020213587A1_0003
  • Der neue Quanitisierungsfehler wird nun bestimmt, wie in den folgenden Gleichungen zu sehen, indem der gerundete Index für x bzw. y des vorherigen Endpunktes vom wahren Wert abgezogen wird: d xt =round ( x t-1 -dx t-1 ) ( x t-1 -d xt-1 )
    Figure DE102020213587A1_0004
    d yt =round ( y t-1 -dy t-1 ) ( y t-1 -d yt-1 )
    Figure DE102020213587A1_0005
  • Auf diese Weise ist sichergestellt, dass sich der Quanisierungsfehler nicht über längere Zeit in nur positive oder nur negative Richtung aufakkumuliert sondern einen Wert von ±1px nicht überschreitet.
  • Eine Alternative zu dem Vorgehen ist die Interpolation einer Nachbarschaft von Flussvektoren. Die bisher betrachtete Bestimmung des nächsten Tracksegments entspricht einer Nearest-Neighbor-Interpolation. Bei einer anderen Interpolation, z.B. bilinear, entsteht kein Quantisierungsfehler sondern ein Rundungsfehler. Allerdings ist die Berechnung um ein vielfaches rechenaufwändiger und mit mehr Zugriffen auf den langsamen Arbeitsspeicher verbunden, da sich die Daten über mehrere Bildzeilen verteilt im Speicher befinden. Ein Cache-freundlicher Zugriff ist nicht möglich. Zudem ist nicht sichergestellt, dass die Ergebnisse durch eine Interpolation tatsächlich genauer werden.
  • 15 zeigt Flusskarten 200, 1500 gemäß einem Ausführungsbeispiel. Dargestellt ist eine Flusskarten 200 aus dem aktuellen Durchlauf und eine Flusskarte 1500 aus dem vorherigen Durchlauf. Die Flusskarten 200, 1500 können einen räumlichen Versatz haben, wie es in 15 schematisch dargestellt ist.
  • In Systemen, die sich frei in der Welt bewegen, haben nicht alle Regionen eines Bildes dieselbe Relevanz. Aus diesem Grund bietet es sich an, die ressourcenintensive Berechnung des optischen Flusses räumlich einzuschränken, wie in 15 mit den Flusskarten 200, 1500 dargestellt. In vielen Fällen ist es sinnvoll, dass die Region des optischen Flusses einer bestimmten Stelle im Bild folgt oder sich auf eine bestimmte Region beschränkt. Dies kann beispielsweise ein Objekt oder der Focus-of-Expansion sein. Dagegen ist z.B. der Himmel meist von geringer Relevanz. Um dies zu realisieren, wird gemäß einem Ausführungsbeispiel ein räumlicher Versatz der Flussfelder kompensiert. Die eigentlichen Dimensionen der Flusstrackkarte werden gesondert festgelegt.
  • Die 16 bis 19 zeigen Bilder 106, 1706, 1806, 1906 mit Flusstracks 514 gemäß einem Ausführungsbeispiel. Dabei sind die Flusstracks 514 mit charakteristischer Kodierung der einzelnen Flussvektoren dargestellt. Jede Charakteristik repräsentiert einen Flussvektor aus einem einzelnen Zeitschritt zwischen zwei Bildern 106, 1706, 1806, 1906. Beispielsweise repräsentiert ein gepunktetes Segment einen neuen Flussvektor und eine gestrichelter Flussvektor einen alten Flussvektor. Dargestellt sind sowohl Flusstracks 514 der statischen Welt, die zur Eigenbewegungsschätzung verwendet werden, als auch Flusstracks 514 auf einem bewegten Fahrzeug zur Nutzung in der Objekterkennung.
  • 20 zeigt ein Ablaufdiagramm eines Verfahrens zum Verknüpfen von optischen Fluss über eine Mehrzahl von Bildern. Dazu können beispielsweise aus einer Reihe von zeitlich aufeinanderfolgenden Bildern Flussvektoren bestimmt und zu Flusstracks aneinandergereiht. Beispielsweise handelt es sich hierbei um ein Ausführungsbeispiel eines Verfahrens, wie es bereits anhand der vorangegangenen Figuren beschrieben wurde.
  • In einem Schritt 2000 wird zumindest einer Kachel aus einer Trackkarte ausgewählt. Eine entsprechende Trackkarte mit einer Mehrzahl von Kacheln und Flusstracks ist beispielsweise in 8 gzeigt. In einem Schritt 2002 wird zumindest ein Flusstrack verlängert, der der ausgewählten Kachel zugeordnet ist. Dabei wird der Flusstrack unter Verwendung eines Flussvektors einer Flusskarte verlängert, wie sie beispielsweise in 2 gezeigt ist. Die Schritte 2000, 2002 werden gemäß einem Ausführungsbeispiel für alle oder für ausgewählte der Kacheln der Trackkarte wiederholt ausgeführt.
  • Wenn noch keine Trackkarte zur Verfügung steht, werden gemäß einem Ausführungsbeispiel alle Flussvektoren oder eine Auswahl von Flussvektoren einer Flusskarte als initiale Flusstracks verwendet.
  • Optional werden im Schritt 2002 ein Endpunkt des Flusstracks vor dem Verlängern als Zwischenpunkt des Flusstracks beibehalten. Zusätzlich oder alternativ wird ein eine Validität des Flusstracks anzeigendes Validitätsattribut des Flusstracks gesetzt. Zusätzlich oder alternativ wird ein Quanitisierungsfehler des Flusstracks aktualisiert. Gemäß einem Ausführungsbeispiel wird im Schritt des Verlängerns der Endpunkt des Flusstracks nach dem Verlängern um einen dem Flusstrack zugeordneten Quantisierungsfehler korrigiert.
  • Gemäß einem Ausführungsbeispiel wird der Flusstrack im Schritt 2002 verlängert, wenn ein Endpunkt des Flusstracks einem Startpunkt eines Flussvektors zuordenbar ist. Wenn dies nicht der Fall ist, wird gemäß einem Ausführungsbeispiel anstelle des Schritts 2002 ein Schritt 2004 ausgeführt, in dem ein neuer Flusstrack unter Verwendung eines Flussvektors der Flusskarte gestartet wird. Der Schritt 2004 wird gemäß einem Ausführungsbeispiel auch für den Fall ausgeführt, dass der Kachel kein Flusstrack zugeordnet ist.
  • Gemäß einem Ausführungsbeispiel wird im Schritt 2004 der neue Flusstrack mit einem Startpunkt in der Kachel gestartet, wenn ein Freigabesignal 2030 eine Freigabe der Kachel für das Starten neuer Flusstracks anzeigt oder ein Objektsignal 2032 eine Abbildung eines relevanten Objekts in einem der Kachel zugeordneten Bildabschnitt des aktuellen Bilds anzeigt, unter Verwendung dessen ein Flussvektor bestimmt wurde, der als neuer Flusstrack eingesetzt wird. Das Freigabesignal 2030 und zusätzlich oder alternativ das Objektsignal 2032 werden beispielsweise von einer Bildauswerteeinrichtung bereitgestellt.
  • Optional wird in einem Schritt 2006 entweder der im Schritt 2002 verlängerte Flusstrack oder ein weiterer Flusstrack aus der Trackkarte aussortiert werden. Das Aussortieren erfolgt dann, wenn der Endpunkt des verlängerten Flusstracks von einem Endpunkt des weiteren Flusstracks belegt ist. Um zu bestimmen, welcher der Flusstracks aussortiert werden, wird beispielsweise ein Vergleich zwischen den Flusstracks zugeordneten Gütemaßen durchgeführt, und die Auswahl des auzusortierenden Flusstracks erfolgt abhängig von einem Ergebnis des Vergleichs. Gemäß einem Ausführungsbeispiel wird der Schritt des Aussortierens abhängig von einem Situationssignal 2034 durchgeführt oder übersprungen. Das Situationssignal 2034 wird beispielsweise von einer Steuereinrichtung zum Steuern eines Betriebs einer Bilderfassungseinrichtung zum Erfassen der Bilder bereitgestellt. Beispielsweise wird das Situationssignal 2034 abhängig von einem Betriebsmodus der Bilderfassungseinrichtung bereitgestellt.
  • Optional wird in einem Schritt 2008 ein zusätzlicher Flusstrack gestartet, wenn der Flusstrack nach dem Schritt 2002 des Verlängerns ein Neustartkriterium erfüllt.
  • Optional umfasst das Verfahren einen Schritt 2010, in dem die Flusskarte eingelesen wird. Optional umfasst das Verfahren ferner einen Schritt 2012, in dem Bilder erfasst werden und zusätzlich oder alternativ einen Schritt 2014, in dem die Flusskarte zumindest unter Verwendung eines der erfassten Bilder bestimmt wird.
  • Gemäß einem Ausführungsbeispiel wird das Verfahren in Echtzeit ausgeführt. Auf diese Weise kann beispielsweise ansprechend auf jedes neu erfasste Bild eine aktualisierte Trackkarte bestimmt werden.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • DE 102017214614 A1 [0003]

Claims (15)

  1. Verfahren zum Verknüpfen von optischen Fluss über eine Mehrzahl von Bildern einer Bilderfassungseinrichtung für ein Fahrzeug (100), wobei das Verfahren die folgenden Schritte umfasst: Auswählen (2000) zumindest einer Kachel (510) aus einer Trackkarte (502), wobei die Trackkarte (502) eine Mehrzahl von Flusstracks umfasst und in eine Mehrzahl von Kacheln unterteilt ist; und Verlängern (2002) zumindest eines von der Kachel (510) umfassten Flusstracks (514) unter Verwendung eines dem Flusstrack (514) zuordenbaren Flussvektors einer Flusskarte (200), wobei die Flusskarte (200) eine Mehrzahl von auf einem aktuellen Bild (106) der Mehrzahl von Bildern basierende Flussvektoren umfasst.
  2. Verfahren gemäß Anspruch 1, wobei im Schritt (2002) des Verlängerns der Flusstrack (514) verlängert wird, wenn ein Endpunkt des Flusstracks (514) einem Startpunkt des Flussvektors (202) zuordenbar ist.
  3. Verfahren gemäß einem der vorangegangenen Ansprüche, mit einem Schritt (2004) des Startens eines neuen Flusstracks (1214) unter Verwendung eines Flussvektors (202) der Flusskarte (200), wenn die Kachel (510) keinen Flusstrack umfasst, dem ein Flussvektor (202) der Flusskarte (200) zuordenbar ist.
  4. Verfahren gemäß Anspruch 3, wobei im Schritt (2004) des Startens der neue Flusstrack (1214) mit einem Startpunkt (1310) in der Kachel (510) gestartet wird, wenn ein Freigabesignal (2030) eine Freigabe der Kachel (510) für das Starten neuer Flusstracks anzeigt oder ein Objektsignal (2032) eine Abbildung eines relevanten Objekts (1225) in einem der Kachel (510) zugeordneten Bildabschnitt des aktuellen Bilds (106) anzeigt.
  5. Verfahren gemäß einem der vorangegangenen Ansprüche, mit einem Schritt (2006) des Aussortierens, in dem entweder der Flusstrack (514) oder ein weiterer Flusstrack aus der Trackkarte (502) aussortiert werden, wenn der Endpunkt (1010) des Flusstracks (514) nach dem Verlängern von einem Endpunkt des weiteren Flusstracks belegt ist.
  6. Verfahren gemäß Anspruch 5, wobei im Schritt (2006) des Aussortierens der Flusstrack (514) oder der weitere Flusstrack abhängig von einem Vergleich zwischen einem Gütemaß des Flusstracks (514) und einem Gütemaß des weiteren Flusstracks zum Aussortieren ausgewählt wird.
  7. Verfahren gemäß Anspruch 5 oder 6, wobei der Schritt (2006) des Aussortierens abhängig von einem Situationssignal (2034) durchgeführt oder übersprungen wird.
  8. Verfahren gemäß einem der vorangegangenen Ansprüche, mit einem Schritt (2008) des Neustartens, in dem ein zusätzlicher Flusstrack (1114) gestartet wird, wenn der Flusstrack (514) nach dem Verlängern ein Neustartkriterium erfüllt.
  9. Verfahren gemäß einem der vorangegangenen Ansprüche, wobei im Schritt (2002) des Verlängerns ein Endpunkt (1010) des Flusstracks (514) vor dem Verlängern als Zwischenpunkt (1312, 1314) des Flusstracks (514) beibehalten wird und/oder ein eine Validität des Flusstracks (514) anzeigendes Validitätsattribut des Flusstracks (514) gesetzt wird und/oder eine Quantisierungsfehler des Flusstracks (514) aktualisiert wird.
  10. Verfahren gemäß einem der vorangegangenen Ansprüche, wobei im Schritt (2002) des Verlängerns der Endpunkt (1010) des Flusstracks (514) nach dem Verlängern um einen dem Flusstrack (514) zugeordneten Quantisierungsfehler korrigiert wird.
  11. Verfahren gemäß einem der vorangegangenen Ansprüche, mit einem Schritt (2010) des Einlesens der Flusskarte (200) mit den auf dem aktuellen Bild (106) der Mehrzahl von Bildern basierenden Flussvektoren, wobei ansprechend auf das Einlesen der Flusskarte (200) zumindest die Schritte (2000, 2002) des Auswählen und Verlängerns für die zumindest eine Kachel (510) der Trackkarte (502) ausgeführt werden.
  12. Verfahren gemäß einem der vorangegangenen Ansprüche, das in Echtzeit ausgeführt wird.
  13. Verfahren gemäß einem der vorangegangenen Ansprüche, mit einem Schritt (2012) des Erfassens des aktuellen Bilds (106) der Mehrzahl von Bildern unter Verwendung der Bilderfassungseinrichtung und/oder einem Schritt (2014) des Bildens der Flusskarte (200) unter Verwendung des aktuellen Bilds (106).
  14. Vorrichtung (102), die eingerichtet ist, um die Schritte des Verfahrens gemäß einem der vorangegangenen Ansprüche in entsprechenden Einheiten auszuführen und/oder anzusteuern.
  15. Computerprogramm, das dazu eingerichtet ist, die Schritte des Verfahrens gemäß einem der vorangegangenen Ansprüche auszuführen und/oder anzusteuern.
DE102020213587.8A 2020-10-29 2020-10-29 Verfahren und Vorrichtung zum Verknüpfen von optischen Fluss über eine Mehrzahl von Bildern einer Bilderfassungseinrichtung Pending DE102020213587A1 (de)

Priority Applications (3)

Application Number Priority Date Filing Date Title
DE102020213587.8A DE102020213587A1 (de) 2020-10-29 2020-10-29 Verfahren und Vorrichtung zum Verknüpfen von optischen Fluss über eine Mehrzahl von Bildern einer Bilderfassungseinrichtung
US17/451,422 US20220138962A1 (en) 2020-10-29 2021-10-19 Method and device for linking optical flow across a plurality of images of an image detection device
CN202111271475.0A CN114429485A (zh) 2020-10-29 2021-10-29 用于在用于车辆的图像检测装置的多个图像上关联光流的方法和设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102020213587.8A DE102020213587A1 (de) 2020-10-29 2020-10-29 Verfahren und Vorrichtung zum Verknüpfen von optischen Fluss über eine Mehrzahl von Bildern einer Bilderfassungseinrichtung

Publications (1)

Publication Number Publication Date
DE102020213587A1 true DE102020213587A1 (de) 2022-05-05

Family

ID=81184466

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020213587.8A Pending DE102020213587A1 (de) 2020-10-29 2020-10-29 Verfahren und Vorrichtung zum Verknüpfen von optischen Fluss über eine Mehrzahl von Bildern einer Bilderfassungseinrichtung

Country Status (3)

Country Link
US (1) US20220138962A1 (de)
CN (1) CN114429485A (de)
DE (1) DE102020213587A1 (de)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102017214614A1 (de) 2017-08-22 2019-02-28 Robert Bosch Gmbh Verfahren und Vorrichtung zur Plausibilisierung einer Flussvektor-Hypothese

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7778466B1 (en) * 2003-12-02 2010-08-17 Hrl Laboratories, Llc System and method for processing imagery using optical flow histograms
EP2709064B1 (de) * 2012-07-18 2019-06-26 AGT International GmbH Bildverarbeitung zum Ableiten von Bewegungseigenschaften für eine Vielzahl von Objekten in einer Warteschlange
US11062174B2 (en) * 2017-02-28 2021-07-13 Nec Solution Innovators, Ltd. Mobile entity detection apparatus, mobile entity detection method, and computer-readable recording medium
US11430134B2 (en) * 2019-09-03 2022-08-30 Nvidia Corporation Hardware-based optical flow acceleration

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102017214614A1 (de) 2017-08-22 2019-02-28 Robert Bosch Gmbh Verfahren und Vorrichtung zur Plausibilisierung einer Flussvektor-Hypothese

Also Published As

Publication number Publication date
US20220138962A1 (en) 2022-05-05
CN114429485A (zh) 2022-05-03

Similar Documents

Publication Publication Date Title
DE102014209137B4 (de) Verfahren und Vorrichtung zur Kalibrierung eines Kamerasystems eines Kraftfahrzeugs
DE102009012441B4 (de) Verfahren zur Reduktion des Speicherbedarfs bei der Bestimmung von Disparitätswerten für mindestens zwei stereoskopisch aufgenommene Bilder
EP1995692A2 (de) Verfahren zur Erkennung und Verfolgung von Objekten
WO2018103795A1 (de) Kameravorrichtung sowie verfahren zur situationsangepassten erfassung eines umgebungsbereichs eines fahrzeugs
DE102016213494A1 (de) Kameravorrichtung sowie Verfahren zur Erfassung eines Umgebungsbereichs eines eigenen Fahrzeugs
DE10324895A1 (de) Verfahren und Vorrichtung zur Objektortung für Kraftfahrzeuge
DE102016208056A1 (de) Verfahren und Vorrichtung zur Verarbeitung von Bilddaten und Fahrerassistenzsystem für ein Fahrzeug
DE102017203276A1 (de) Verfahren und Vorrichtung zur Ermittlung einer Trajektorie in Off-road-Szenarien
DE102018205879A1 (de) Verfahren, Vorrichtung und computerlesbares Speichermedium mit Instruktionen zur Verarbeitung von Sensordaten
DE102018100909A1 (de) Verfahren zum Rekonstruieren von Bildern einer Szene, die durch ein multifokales Kamerasystem aufgenommen werden
DE102018111935A1 (de) Bildverarbeitungssystem, Bildverarbeitungsverfahren, Informationsverarbeitungsvorrichtung und Aufzeichnungsmedium
DE102012000459A1 (de) Verfahren zur Objektdetektion
DE102019117559A1 (de) Verfahren und System zum Fusionieren von zweidimensionalen semantischen Informationen aus Bildern mit einer dreidimensionalen Punktwolke
DE102016218852A1 (de) Detektion von Objekten aus Bildern einer Kamera
DE112012004847T5 (de) Dynamisches Liniendetektionssystem für Prozessoren mit begrenztem internen Speicher
WO2018059632A1 (de) Detektion und validierung von objekten aus sequentiellen bildern einer kamera mittels homographien
DE102017112333A1 (de) Verbesserung eines pyramidalen Optical-Flow-Trackers
DE102013017621A1 (de) Verfahren zur Auswertung von stereoskopisch erfassten Einzelbildern
DE102019209473A1 (de) Verfahren und Vorrichtung zur schnellen Erfassung von sich wiederholenden Strukturen in dem Bild einer Straßenszene
DE102020213587A1 (de) Verfahren und Vorrichtung zum Verknüpfen von optischen Fluss über eine Mehrzahl von Bildern einer Bilderfassungseinrichtung
WO2021180679A1 (de) Festlegen eines aktuellen fokusbereichs eines kamerabildes basierend auf der position der fahrzeugkamera an dem fahrzeug und einem aktuellen bewegungsparameter
DE102012020778B4 (de) Verfahren zum Labeln einer Sequenz von in zeitlicher Abfolge aufgenommenen Bildern mit integrierter Qualitätsprüfung
DE102020214622A1 (de) Auswertung von Bilddaten einer Stereokamera zur Objektbewertung
DE102015112389A1 (de) Verfahren zum Erfassen zumindest eines Objekts auf einer Straße in einem Umgebungsbereich eines Kraftfahrzeugs, Kamerasystem sowie Kraftfahrzeug
DE102019129101A1 (de) Verfahren und System zum Schätzen eines Begrenzungsrahmens, der ein Zielfahrzeug einschließt