-
INFORMATION ÜBER ZUGEHÖRIGE ANMELDUNGEN
-
Diese Anmeldung beansprucht die Priorität der provisorischen US-Patentanmeldung Nr.
62/793,948 , eingereicht am 18. Januar 2019, der provisorischen US-Patentanmeldung Nr.
62/878,819 , eingereicht am 26. Juli 2019 und der US-Gebrauchsmusteranmeldung Nr.
16/736,451 , eingereicht am 7. Januar 2020, die hierin durch Bezugnahme in ihrer Gesamtheit enthalten.
-
HINTERGRUND
-
Technisches Gebiet
-
Die vorliegende Erfindung betrifft Deep Learning (= tiefgehendes Lernen) und insbesondere ein Anwenden von Deep Learning zur Kameraselbstkalibrierung.
-
Beschreibung des zugehörigen Standes der Technik
-
Deep Learning ist ein Maschinenlernmethode, die auf künstlichen neuronalen Netzen basiert. Deep-Learning-Architekturen können auf Gebiete angewendet werden, die Computer Vision, Spracherkennung, natürliche Sprachverarbeitung, Audioerkennung, Filterung für Soziale Netzwerke, maschinelle Übersetzung, Bioinformatik, Arzneimitteldesign, medizinische Bildanalyse, Materialuntersuchung und Brettspielprogramme etc. enthalten. Deep Learning kann beaufsichtigt, semibeaufsichtigt oder unbeaufsichtigt sein.
-
ZUSAMMENFASSUNG
-
Gemäß einem Aspekt der vorliegenden Erfindung wird ein Verfahren zur Kameraselbstkalibrierung zur Verfügung gestellt. Das Verfahren enthält ein Empfangen realer unkalibrierter Bilder und ein Schätzen, unter Verwendung eines Kameraselbstkalibrierungsnetzes, von mehreren vorhergesagten Kameraparametern entsprechend den realen unkalibrierten Bildern. Eine tiefgehende Beobachtung bzw. Überwachung ist basierend auf einer Abhängigkeitsreihenfolge zwischen der Vielzahl von vorhergesagten Kameraparametern implementiert, um Überwachungssignale über mehrere Schichten gemäß der Abhängigkeitsreihenfolge zu platzieren. Das Verfahren enthält auch ein Bestimmen von kalibrierten Bildern unter Verwendung der realen unkalibrierten Bilder und der vorhergesagten Kameraparametern.
-
Gemäß einem weiteren Aspekt der vorliegenden Erfindung wird ein System zur Kameraselbstkalibrierung zur Verfügung gestellt. Das System enthält eine Prozessorvorrichtung, die operativ mit einer Speichervorrichtung gekoppelt ist, wobei die Prozessorvorrichtung konfiguriert ist, um reale unkalibrierte Bilder zu empfangen und, unter Verwendung eines Kameraselbstkalibrierungsnetzes, mehrere vorhergesagte Kameraparametern entsprechend den realen unkalibrierten Bildern zu schätzen. Eine tiefgehende Beobachtung bzw. Überwachung ist basierend auf einer Abhängigkeitsreihenfolge zwischen der Vielzahl von vorhergesagten Kameraparametern implementiert, um Überwachungssignale über mehrere Schichten gemäß der Abhängigkeitsreihenfolge zu platzieren. Die Prozessorvorrichtung bestimmt auch kalibrierte Bilder unter Verwendung der realen unkalibrierten Bilder und der vorhergesagten Kameraparameter.
-
Diese und andere Merkmale und Vorteile werden aus der folgenden detaillierten Beschreibung von dargestellten Ausführungsformen davon offensichtlich werden, die in Verbindung mit den beigefügten Zeichnungen zu lesen ist.
-
Figurenliste
-
Die Offenbarung wird in der folgenden Beschreibung von bevorzugten Ausführungsformen unter Bezugnahme auf die folgenden Figuren Details zur Verfügung stellen, wobei:
- 1 eine verallgemeinerte grafische Darstellung eines neuronalen Netzes gemäß einer Ausführungsform der vorliegenden Erfindung ist;
- 2 eine grafische Darstellung einer Architektur für künstliche neuronalen Netze (ANN) gemäß einer Ausführungsform der vorliegenden Erfindung ist;
- 3 ein Blockdiagramm ist, das eine Architektur für neuronale Faltungsnetze (CNN) zum Schätzen von Kameraparametern aus einem einzelnen unkalibrierten Bild gemäß einer Ausführungsform der vorliegenden Erfindung darstellt;
- 4 ein Blockdiagramm ist, das eine detaillierte Architektur eines Kameraselbstkalibrierungsnetzes gemäß einer Ausführungsform der vorliegenden Erfindung darstellt;
- 5 ein Blockdiagramm ist, das ein System zur Anwendung einer Kameraselbstkalibrierung auf unkalibrierte simultane Positionsbestimmung und Kartierung (SLAM (= Simultaneous Localization and Mapping)) gemäß einer Ausführungsform der vorliegenden Erfindung darstellt;
- 6 ein Blockdiagramm ist, das ein System zur Anwendung einer Kameraselbstkalibrierung auf eine unkalibrierte Struktur aus einer Bewegung (SFM (= Structure From Motion)) gemäß einer Ausführungsform der vorliegenden Erfindung darstellt;
- 7 ein Blockdiagramm ist, das eine Entartung bzw. Degenerierung bei einer Selbstkalibrierung bei einer radialen Verzerrung bzw. Verzeichnung bei zwei Ansichten unter einer Vorwärtsbewegung gemäß einer Ausführungsform der vorliegenden Erfindung darstellt; und
- 8 ein Ablaufdiagramm ist, das ein Verfahren zum Implementieren einer Kameraselbstkalibrierung gemäß einer Ausführungsform der vorliegenden Erfindung darstellt.
-
DETAILLIERTE BESCHREIBUNG BEVORZUGTER AUSFÜHRUNGSFORMEN
-
Gemäß Ausführungsformen der vorliegenden Erfindung werden Systeme und Verfahren zur Kameraselbstkalibrierung zur Verfügung gestellt. Die Systeme und Verfahren implementieren eine Architektur von neuronalen Faltungsnetzen (CNN) zum Schätzen radialer Verzerrungsparameter sowie kameraintrinsischer Parameter (z.B. Brennweite, Projektionszentrum) aus einem einzigen unkalibrierten Bild. Die Systeme und Verfahren wenden eine tiefgehende Überwachung zum Ausnutzen bzw. Auswerten der Abhängigkeit zwischen den vorhergesagten Parametern an, was zu einer verbesserten Regularisierung und höherer Genauigkeit führt. Zusätzlich können Anwendungen des Kameraselbstkalibrierungsnetzes für simultane Positionsbestimmung und Kartierung (SLAM (= Simultaneous Localization and Mapping)) / Struktur aus einer Bewegung (SFM (= Structure From Motion)) mit unkalibrierten Bildern/Videos implementiert sein.
-
Bei einer Ausführungsform, werden während einer Trainingsphase eine Gruppe von kalibrierten Bildern und entsprechende Kameraparameter zum Erzeugen synthetisierter Kameraparameter und synthetisierter unkalibrierter Bilder verwendet. Die unkalibrierten Bilder werden dann als Eingangsdaten verwendet, während die Kameraparameter dann als Überwachungssignale zum Trainieren des vorgeschlagenen Kameraselbstkalibrierungsnetzes verwendet werden. Bei einer Testphase wird ein einzelnes reales, unkalibriertes Bild zum Netzwerk eingegeben, das Kameraparameter entsprechend dem eingegebenen Bild vorhersagt. Schließlich werden das unkalibrierte Bild und die geschätzten Kameraparameter zum Rektifizierungsmodul gesendet, um das kalibrierte Bild zu erzeugen.
-
Hierin beschriebene Ausführungsformen können gänzlich Hardware, gänzlich Software oder sowohl Hardware- als auch Softwareelemente enthaltend sein. Bei einer bevorzugten Ausführungsform ist die vorliegende Erfindung in Software implementiert, die Firmware, residente Software, eine Mikrocode etc. enthält, aber nicht darauf beschränkt ist.
-
Ausführungsformen können ein Computerprogrammprodukt enthalten, das von einem computeranwendbaren oder computerlesbaren Medium aus zugreifbar ist, das einen Programmcode zur Verwendung durch einen Computer oder irgendein beliebiges Anweisungsausführungssystem, oder in Verbindung damit, zur Verfügung stellt. Ein computerverwendbares oder computerlesbares Medium kann irgendeine Vorrichtung enthalten, die das Programm zur Verwendung durch das Anweisungsausführungssystem, die Vorrichtung oder das Gerät, oder in Verbindung damit, speichert, kommuniziert, ausbreitet oder transportiert. Das Medium kann ein magnetisches, optisches, elektronisches, elektromagnetisches, infrarotes oder Halbleitersystem (oder eine Vorrichtung oder ein Gerät) oder ein Ausbreitungsmedium sein. Das Medium kann ein computerlesbares Speichermedium, wie beispielsweise einen Halbleiter- oder Festkörperspeicher, ein Magnetband, eine herausnehmbare bzw. entfernbare Computerdiskette, einen Direktzugriffsspeicher (RAM), einen Nurlesespeicher (ROM), eine starre Magnetscheibe und eine optische Scheibe etc. enthalten.
-
Jedes Computerprogramm kann auf maschinenlesbaren Speichermedien oder einem Gerät (z. B. einem Programmspeicher oder einer Magnetscheibe) konkret bzw. materiell gespeichert sein, die oder das durch einen allgemeinen oder einen speziellen programmierbaren Computer lesbar ist, zum Konfigurieren und Steuern einer Operation bzw. eines Betriebs eines Computers, wenn die Speichermedium oder das Gerät durch den Computer gelesen wird, um die hierin beschriebenen Prozeduren durchzuführen. Das erfinderische System kann auch als in einem computerlesbaren Speichermedium verkörpert betrachtet werden, das mit einem Computerprogramm konfiguriert ist, wobei das so konfigurierte Speichermedium bewirkt, dass ein Computer auf eine spezifische und vordefinierte Weise arbeitet, um die hierin beschriebenen Funktionen durchzuführen.
-
Ein Datenverarbeitungssystem, das zum Speichern und/oder Ausführen eines Programmcode geeignet ist, kann wenigstens einen Prozessor enthalten, der direkt oder indirekt über einen Systembus mit Speicherelementen gekoppelt ist. Die Speicherelemente können einen lokalen Speicher enthalten, der während einer aktuellen Ausführung des Programmcodes verwendet wird, Massenspeicher und Cachespeicher, die eine temporäre Speicherung von wenigstens etwas vom Programmcode zur Verfügung stellen, um die Anzahl der Malen zu reduzieren, für welche ein Code während einer Ausführung aus einem Massenspeicher wiedergewonnen wird. Eingabe-/Ausgabe- oder I/O-Vorrichtungen (einschließlich, aber nicht beschränkt darauf, von Tastaturen, Anzeigen, Zeigevorrichtungen etc.) können entweder direkt oder über dazwischenliegende I/O-Steuerungen mit dem System gekoppelt sein.
-
Netzwerkadapter können auch mit dem System gekoppelt sein, um zu ermöglichen, dass das Datenverarbeitungssystem über dazwischenliegende private oder öffentliche Netzwerke mit anderen Datenverarbeitungssystemen oder entfernten Druckern oder Speichervorrichtungen gekoppelt wird. Modems, ein Kabelmodem und Ethernet-Karten sind nur einige der derzeit verfügbaren Typen von Netzwerkadaptern.
-
Nimmt man nun Bezug auf die Zeichnungen, in welchen gleiche Ziffern dieselben oder ähnliche Elemente darstellen, und zunächst auf 1, ist eine verallgemeinerte grafische Darstellung eines neuronalen Netzes gemäß einer beispielhaften Ausführungsform gezeigt.
-
Ein künstliches neuronales Netz (ANN) ist ein Informationsverarbeitungssystem, das durch biologische Nervensysteme, wie beispielsweise das Gehirn, inspiriert ist. Das Schlüsselelement von ANNs ist die Struktur des Informationsverarbeitungssystems, das viele stark miteinander verbundene Verarbeitungselemente (sogenannte „Neuronen“) enthält, die parallel arbeiten, um spezifische Probleme zu lösen. ANNs werden weiterhin im Einsatz geschult, und zwar mit einem Lernen, das Einstellungen an Gewichten bzw. Gewichtungen beinhaltet, die zwischen den Neuronen existieren. Ein ANN wird durch einen solchen Lernprozess für eine spezifische Anwendung, wie beispielsweise Mustererkennung oder Datenklassifizierung, konfiguriert.
-
ANNs zeigen eine Fähigkeit, aus komplizierten oder ungenauen Daten eine Bedeutung abzuleiten, und können verwendet werden, um Muster zu extrahieren und Trends zu erkennen, die zu komplex sind, um von Menschen oder anderen computerbasierten Systemen erkannt zu werden. Die Struktur eines neuronalen Netzes hat allgemein Eingabe- bzw. Input-Neuronen 102, die Information zu einem oder mehreren „versteckten“ bzw. „Hidden-“ Neuronen 104 liefern. Verbindungen 108 zwischen den Input-Neuronen 102 und den Hidden-Neuronen 104 werden gewichtet und diese gewichteten Eingaben werden dann mit gewichteten Verbindungen 108 zwischen den Schichten durch die Hidden-Neuronen 104 gemäß einer Funktion in den Hidden-Neuronen 104 verarbeitet. Es kann eine beliebige Anzahl von Schichten von Hidden-Neuronen 104 geben, und ebenso gut Neuronen, die unterschiedliche Funktionen durchführen. Es existieren unterschiedliche Strukturen von neuronalen Netzen, wie beispielsweise ein faltendes neuronales Netz, ein Maxout-Netz, etc. Schließlich akzeptiert und verarbeitet eine Gruppe von Ausgabe- bzw. Output-Neuronen 106 eine gewichtete Eingabe aus der letzten Gruppe von Hidden-Neuronen 104.
-
Dies stellt eine „Feed-Forward“-Berechnung dar, bei der sich Information von den Input-Neuronen 102 zu den Output-Neuronen 106 ausbreiten. Die Trainingsdaten (oder in einigen Fällen Testdaten) können kalibrierte Bilder, Kameraparameter und unkalibrierte Bilder (zum Beispiel gespeichert in einer Datenbank) enthalten. Die Trainingsdaten können für die Einzelbild-Selbstkalibrierung verwendet werden, wie es hierin nachstehend in Bezug auf die 2 bis 7 beschrieben wird. Die Trainings- oder Testdaten können zum Beispiel Bilder oder Videos enthalten, die ohne Zugriff auf die Originalkameras aus dem Internet heruntergeladen sind, oder Kameraparameter sind aufgrund verschiedener Ursachen, wie beispielsweise Vibrationen, thermische/mechanische Schocks oder Zoomeffekte geändert worden. In solchen Fällen wird eine Kameraselbstkalibrierung (automatische Kamerakalibrierung), die Kameraparameter aus einem oder mehreren unkalibrierten Bildern berechnet, bevorzugt. Die beispielhaften Ausführungsformen implementieren einen Ansatz, der auf einem faltenden neuronalen Netz (CNN) basiert, zur Kameraselbstkalibrierung von einem einzigen unkalibrierten Bild aus, z.B. mit unbekannter Brennweite, Projektionszentrum und radialer Verzerrung.
-
Nach einer Beendigung einer Feed-Forward-Berechnung wird die Ausgabe mit einer erwünschten Ausgabe verglichen, die aus Trainingsdaten zur Verfügung steht. Der Fehler in Relation zu den Trainingsdaten wird dann in einer „Feed-Back“-Berechnung verarbeitet, bei der die Hidden-Neuronen 104 und die Input-Neuronen 102 Information bezüglich des Fehlers erhalten, der sich von den Output-Neuronen 106 rückwärts ausbreitet. Wenn die Rückwärtsfehlerausbreitung einmal beendet worden ist, werden Gewichts- bzw. Gewichtungsupdates bzw. -aktualisierungen durchgeführt, wobei die gewichteten Verbindungen 108 derart aktualisiert werden, dass der empfangene Fehler berücksichtigt ist. Dies stellt nur eine Vielfalt von ANN dar.
-
Nimmt man nun Bezug auf 2, wird eine Architektur eines künstlichen neuronalen Netzes (ANN) 200 gezeigt. Es sollte verstanden werden, dass die gegenwärtige Architektur rein exemplarisch ist und dass stattdessen andere Architekturen oder Typen von neuronalen Netzen verwendet werden können. Die hierin beschriebene ANN-Ausführungsform ist mit der Absicht enthalten, allgemeine Prinzipien einer Berechnung eines neuronalen Netzes auf einer hohen Ebene an Allgemeinheit zu veranschaulichen, und sie sollte in keiner Weise als beschränkend ausgelegt werden.
-
Weiterhin werden die nachstehend beschriebenen Neuronenschichten und die sie verbindenden Gewichte auf eine allgemeine Weise beschrieben und können durch irgendeinen Typ von Schichten eines neuronalen Netzes mit irgendeinem geeigneten Grad oder Typ von Interkonnektivität ersetzt werden. Zum Beispiel können Schichten Faltungsschichten, Pooling-Schichten, vollständig verbundene Schichten, Softmax-Schichten oder irgendeinen anderen geeigneten Typ von Schicht eines neuronalen Netzes enthalten. Weiterhin können Schichten hinzugefügt oder entfernt werden, wie es nötig ist, und die Gewichte bzw. Gewichtungen können für kompliziertere Formen einer Verbindung miteinander weggelassen werden.
-
Während einer Feed-Forward-Operation stellt eine Gruppe von Input-Neuronen 202 jeweils ein Eingangssignal parallel zu einer jeweiligen Reihe von Gewichten 204 zur Verfügung. Bei der hierin beschriebenen Ausführungsform in Hardware haben die Gewichtungen 204 jeweils einen jeweiligen einstellbaren Wert, so dass eine gewichtete Ausgabe von der Gewichtung 204 zu ein einem jeweiligen Hidden-Neuron 206 übergeht, um die gewichtete Eingabe zum Hidden-Neuron 206 darzustellen. Bei Ausführungsformen in Software können die Gewichtungen 204 einfach als Koeffizientenwerte dargestellt werden, die gegenüber den relevanten Signale multipliziert werden. Das Signal von jeder Gewichtung fügt sich spaltenweise zu einem Hidden-Neuron 206 hinzu und fließt zu diesem.
-
Die versteckten Neuronen bzw. Hidden-Neuronen 206 verwenden die Signale aus dem Feld von Gewichtungen 204, um etwas an Berechnung durchzuführen. Die versteckten Neuronen 206 geben dann ihr eigenes Signal zu einem anderen Feld von Gewichtungen 204 aus. Dieses Feld führt auf dieselbe Weise mit einer Spalte von Gewichtungen 204 durch, die ein Signal von ihrem jeweiligen versteckten Neuron 206 empfängt, um eine gewichtete Signalausgabe zu erzeugen, die zeilenweise zu den Ausgabe-Neuronen bzw. Output-Neuronen 208 hinzufügt und zu diesen geliefert wird.
-
Es sollte verstanden werden, dass eine beliebige Anzahl dieser Stufen implementiert werden kann, indem zusätzliche Schichten von Feldern und versteckten Neuronen 206 eingefügt werden. Es sollte auch angemerkt werden, dass einige Neuronen konstante Neuronen 209 sein können, die eine konstante Ausgabe zum Feld liefern. Die konstanten Neuronen 209 können unter den Input-Neuronen 202 und/oder Hidden-Neuronen 206 vorhanden sein und werden nur während einer Feed-Forward-Operation verwendet.
-
Während einer Rückwärtsausbreitung liefern die Output-Neuronen 208 ein Signal quer über das Feld von Gewichtungen 204 zurück. Der Ausgabe-Schicht vergleicht die erzeugte Netzantwort mit Trainingsdaten und berechnet einen Fehler. Das Fehlersignal kann proportional zum Fehlerwert gemacht werden. Bei diesem Beispiel empfängt eine Zeile von Gewichtungen 204 ein Signal von einem jeweiligen Output-Neuron 208 parallel und erzeugt eine Ausgabe, die sich spaltenweise hinzufügt bzw. addiert, um eine Eingabe zu Hidden-Neuronen 206 zu liefern. Die Hidden-Neuronen 206 kombinieren das gewichtete Rückkoppel- bzw. Feedbacksignal mit einer Ableitung seiner Feed-Forward-Berechnung und speichern einen Fehlerwert vor einem Ausgeben eines Feedbacksignals zu seiner jeweiligen Spalte von Gewichtungen 204. Diese Rückwärtsausbreitung wandert durch das gesamte Netz 200, bis alle Hidden-Neuronen 206 und die Input-Neuronen 202 einen Fehlerwert gespeichert haben.
-
Während Gewichtungsaktualisierungen werden die gespeicherten Fehlerwerte verwendet, um die einstellbaren Werte der Gewichtungen 204 zu aktualisieren. Auf diese Weise können die Gewichtungen 204 trainiert werden, um das neuronale Netz 200 an Fehler bei seiner Verarbeitung anzupassen. Es sollte angemerkt werden, dass sich die drei Betriebsarten, nämlich Feed Forward bzw. Vorwärtsgerichtet, Back Propagation bzw. Rückwärtsausbreitung und Gewichtsaktualisierung, einander nicht überschneiden.
-
Ein faltendes neuronales Netz (CNN) ist eine Unterklasse von ANNs, die wenigstens eine Faltungsschicht hat. Ein CNN besteht aus einer Eingabe- und einer Ausgabeschicht sowie mehreren versteckten Schichten. Die versteckten Schichten eines CNN bestehen aus Faltungsschichten, Schichten einer gleichgerichteten linearen Einheit ((RELU)-Schichten) (z.B. Aktivierungsfunktionen), Pooling-Schichten, vollständig verbundene Schichten und Normalisierungsschichten. Faltungsschichten wenden eine Faltungsoperation auf die Eingabe an und übergeben das Ergebnis zur nächsten Schicht. Die Faltung emuliert die Reaktion eines einzelnen Neurons auf visuelle Anreize.
-
CNNs können auf ein Analysieren visueller Bilder angewendet werden. CNNs können lokale Information erfassen (z. B. benachbarte Pixel in einem Bild oder umgebende Wörter in einem Text) sowie die Komplexität eines Modells reduzieren (um zum Beispiel ein schnelleres Trainieren, einen Bedarf an weniger Proben bzw. Abtastungen und eine Reduzierung der Wahrscheinlichkeit einer Überanpassung zu ermöglichen).
-
CNNs verwenden eine Variation von mehrschichtigen Perzeptronen, die entwickelt sind, um eine minimale Vorverarbeitung zu erfordern. CNNs werden auch als verschiebungsinvariante oder rauminvariante künstliche neuronale Netze (SIANN) bezeichnet, basierend auf ihren Architekturen mit geteilten Gewichten (Shared-Weight-Architekturen) und Tanslationsinvarianz-Charakteristiken. CNNs können für Anwendungen bei einer Bild- und Videoerkennung, Empfehlungssystemen, einer Bildklassifizierung, einer medizinischen Bildanalyse und einer natürlichen Sprachverarbeitung verwendet werden.
-
Die CNNs können in eine CNN-Architektur zum Schätzen von Kameraparametern aus einem einzigen unkalibrierten Bild integriert werden, wie es beispielsweise hierin nachstehend in Bezug auf die 3 bis 7 beschrieben ist. Zum Beispiel können die CNNs implementiert werden, um Bilder zu erzeugen, die dann als Eingabe für SFM/SLAM-Systeme verwendet werden.
-
Nimmt man nun Bezug auf 3, ist ein Blockdiagramm gezeigt, das eine CNN-Architektur zum Schätzen von Kameraparametern aus einem einzigen unkalibrierten Bild gemäß beispielhaften Ausführungsformen darstellt.
-
Wie es in 3 gezeigt ist, enthält eine Architektur 300 eine CNN-Architektur zum Schätzen radialer Verzerrungsparameter sowie (alternativ, zusätzlich, etc.) kameraintrinsischer Parameter (zum Beispiel Brennweite, Projektionszentrum) aus einem einzelnen unkalibrierten Bild. Die Architektur 300 kann implementiert werden, um eine tiefe Überwachung anzuwenden, die die Abhängigkeit zwischen den vorhergesagten Parametern ausnutzt, was zu einer verbesserten Regularisierung und höherer Genauigkeit führt. Zusätzlich kann die Architektur 300 eine Anwendung eines Kameraselbstkalibrierungsnetzes in Richtung zu einer Struktur aus einer Bewegung (SFM) und einer simultanen Positionsbestimmung und Kartierung (SLAM) mit unkalibrierten Bildern/Videos implementieren.
-
Computer-Vision-Prozesse wie SFM und SLAM nehmen ein Lochblendenkamera- bzw. Lochkameramodell an (das eine mathematische Beziehung zwischen Punkten in dreidimensionalen Koordinaten und Punkten in Bildkoordinaten in einer idealen Lochkamera beschreibt) und erfordern Eingabebilder oder -videos, die mit bekannten Kameraparametern aufgenommen sind, einschließlich Brennweite, Bildmittelpunkt und radialer Verzerrung. Eine Kamerakalibrierung ist der Prozess eines Schätzens von Kameraparametern. Die Architektur 300 kann eine Kamerakalibrierung in Fällen implementieren, in welchen ein Kalibrierungsobjekt (zum Beispiel Schachbrett) oder eine Struktur einer speziellen Szene (zum Beispiel Kompassrichtung von einem einzelnen Bild durch Bayes-Inferenz) nicht verfügbar ist, bevor die Kamera in Computer Vision-Anwendungen eingesetzt wird. Zum Beispiel kann die Architektur 300 für die Fälle implementiert werden, in welchen Bilder oder Videos ohne Zugriff auf die Originalkameras aus dem Internet heruntergeladen sind, oder Kameraparameter aufgrund unterschiedlicher Gründe, wie beispielsweise Vibrationen, thermische/mechanische Schocks oder Zoomeffekte, geändert wurden. In solchen Fällen wird eine Kameraselbstkalibrierung (automatische Kamerakalibrierung) bevorzugt, die Kameraparameter aus einem oder mehreren unkalibrierten Bildern berechnet. Die vorliegende Erfindung schlägt einen auf einem faltenden neuronalen Netz (CNN) basierenden Ansatz zur Kameraselbstkalibrierung aus einem einzigen unkalibrierten Bild vor, z.B. mit unbekannter Brennweite, Projektionszentrum und radialer Verzerrung. Zusätzlich kann die Architektur 300 bei Anwendungen implementiert werden, die auf unkalibrierte SFM und unkalibrierte SLAM ausgerichtet sind.
-
Die hierin beschriebenen Systeme und Verfahren verwenden eine tiefgehende Überwachung zum Ausnutzen der Beziehung zwischen unterschiedlichen Aufgaben und zum Erreichen einer überragende Leistungsfähigkeit. Im Gegensatz zu Prozessen zur Einzelbild-Selbstkalibrierung verwenden die hierin beschriebenen Systeme und Verfahren alle im Bild verfügbaren Merkmale und führen keinerlei Annahmen über Szenenstrukturen durch. Die Ergebnisse sind nicht abhängig von einem ersten Extrahieren von Linien-/Kurven-Merkmalen im Eingabebild und dann einem Vertrauen auf sie zum Schätzen von Kameraparametern. Die Systeme und Verfahren sind nicht davon abhängig, Linien-/Kurven-Merkmale richtig zu erkennen, noch von einem Erfüllen von irgendeiner zugrundeliegenden Annahme über Szenestrukturen.
-
Die Architektur 300 kann implementiert werden, um unkalibrierte Bilder/Videos zu verarbeiten, ohne Eingabebilder/-videos mit bekannten Kameraparametern anzunehmen (im Gegensatz zu einigen SFM/SLAM-Systemen). Die Architektur 300 kann eine Verarbeitung, wie zum Beispiel bei herausfordernden Fällen, wie beispielsweise beim Vorhandensein einer signifikanten radialen Verzerrung, in einem zweistufigen Ansatz anwenden, der zuerst eine Kameraselbstkalibrierung (einschließlich einer Korrektur einer radialen Verzerrung) durchführt und dann Rekonstruktionsprozesse, wie beispielsweise SFM/SLAM-Systeme, bei den kalibrierten Bilder/Videos verwendet.
-
Wie es in 3 gezeigt ist, implementiert die Architektur 300 einen CNN-basierten Ansatz zur Kameraselbstkalibrierung. Während der Trainingsphase 305 werden eine Gruppe von kalibrierten Bildern 310 und entsprechende Kameraparameter 315 zum Erzeugen von synthetisierten Kameraparametern 330 und synthetisierten unkalibrierten Bildern 325 verwendet. Die unkalibrierten Bilder 325 werden dann als Eingabedaten (für das Kameraselbstkalibrierungsnetz 340) verwendet, während die Kameraparameter 330 dann als Überwachungssignale für ein Trainieren des Kameraselbstkalibrierungsnetzes 340 verwendet werden. Bei einer Testphase 350 wird ein einzelnes reales, unkalibriertes Bild 355 zum Kameraselbstkalibrierungsnetz 340 eingegeben, das (geschätzte) Kameraparameter 360 vorhersagt, die dem Eingangsbild 355 entsprechen. Das unkalibrierte Bild 355 und die geschätzten Kameraparameter 360 werden zum Rektifizierungsmodul 365 gesendet, um das kalibrierte Bild 370 zu erzeugen.
-
4 ist ein Blockdiagramm, das eine detaillierte Architektur 400 eines Kameraselbstkalibrierungsnetzes 340 gemäß beispielhaften Ausführungsformen darstellt.
-
Wie es in 4 gezeigt ist, empfängt die Architektur 400 (zum Beispiel des Kameraselbstkalibrierungsnetzes 340) ein unkalibriertes Bild 405 (wie beispielsweise synthetisierte unkalibrierte Bilder 325 während eines Trainierens 305 oder ein echtes bzw. reales unkalibriertes Bild 355 während eines Testens 350). Zum Beispiel führt die Architektur 400 während des Trainierens des Netzes eine tiefgehende Überwachung durch. Im Gegensatz zur herkömmlichen Multitask-Überwachung, die alle Parameter nur bei der letzten Schicht vorhersagt (alle Überwachungen platziert), quer über mehrere Schichten vorhersagt, nutzt eine tiefgehende Überwachung die Abhängigkeitsreihenfolge zwischen den vorhergesagten Parametern aus und sagt die Parameter über mehrere Schichten gemäß dieser Abhängigkeitsreihenfolge vorher (platziert die Überwachungen). Für eine Kameraselbstkalibrierung unter Kenntnis davon, dass (1) ein bekannter Bildmittelpunkt deutlich eine Voraussetzung zum Schätzen einer radialen Verzerrung ist und dass (2) eine Bilderscheinung durch die zusammengesetzte Wirkung aus radialer Verzerrung und Brennweite beeinflusst wird, kann das System die Parameter in der folgenden Reihenfolge vorhersagen (die Überwachungen platzieren): (1) Bildmittelpunkt im ersten Zweig und (2) sowohl Brennweite als auch radiale Verzerrung im zweiten Zweig. Daher verwendet die Architektur 400 gemäß beispielhaften Ausführungsformen ein Restnetz (zum Beispiel ResNet-34) 415 als Basismodell und fügt (zum Beispiel einige, einige wenige, etc.) Faltungsschichten (zum Beispiel Schichten 410 (Conv, 512, 3x3), 420 (Conv, 256, 3x3), 430 (Conv, 128, 3x3), 440 (Conv, 64, 3x3), 450 (Conv, 32, 3x3) und 460 (Conv, 2, 1x1), Batch- bzw. Stapel-Normalisierungsschichten 425 und ReLU-Aktivierungsschichten 435 für Aufgaben zur Schätzung von Bildmittelpunkt 470 (zum Beispiel cx, cy), Schätzung von Brennweite (f) und Schätzung radialer Verzerrung (λ) 480 hinzu. Die Architektur 400 kann eine tiefgehende Überwachung zum Ausnutzen der Abhängigkeit zwischen den Aufgaben verwenden (zum Beispiel verwenden, implementieren, etc.). Bei einer beispielhaften Ausführungsform ist zum Beispiel die Bildmittelpunktschätzung 470 eine Zwischenaufgabe für eine Schätzung radialer Verzerrung und Brennweitenschätzung 480, was zu verbesserter Regularisierung und höherer Genauigkeit führt.
-
Eine tiefgehende Überwachung nutzt die Abhängigkeitsreihenfolge zwischen der Vielzahl von vorhergesagten Kameraparametern aus und sagt die Kameraparameter über mehrere Schichten gemäß dieser Abhängigkeitsreihenfolge vorher (platziert die Überwachungssignale). Eine tiefgehende Überwachung kann basierend auf einer Bildmittelpunktschätzung als eine Zwischenaufgabe zur Schätzung radialer Verzerrung und Brennweitenschätzung implementiert werden, weil: (1) ein bekannter Bildmittelpunkt klar eine Voraussetzung zum Schätzen radialer Verzerrung ist und (2) die Bilderscheinung durch die zusammengesetzte Wirkung aus radialer Verzerrung und Brennweite beeinflusst wird.
-
5 ist ein Blockdiagramm, das ein System 500 zur Anwendung einer Kameraselbstkalibrierung auf unkalibrierte SLAM gemäß beispielhaften Ausführungsformen darstellt.
-
Wie es in 5 gezeigt ist, kann eine Kameraselbstkalibrierung auf unkalibrierte SLAM angewendet werden. Ein Eingabevideo ist eine Gruppe aufeinanderfolgender Bilderrahmen bzw. Bildframes, die unkalibriert sind (unkalibriertes Video 505). Jeder Rahmen bzw. Frame wird dann jeweils zu der Kameraselbstkalibrierung (einer Komponente) 510 übergeben, wie zum Beispiel dem System 300 in 3, das den entsprechenden kalibrierten Rahmen bzw. Frame (und das entsprechend kalibrierte Video 520) erzeugt. Die kalibrierten Frames (das kalibrierte Video 520) werden dann zum Schätzen der im Video beobachteten Kamerabahn und Szenenstrukturen zu einem SLAM-Modul 530 gesendet. Das System 500 gibt einen wiederhergestellten Kamerapfad und eine Szenenkarte 540 aus.
-
6 ist ein Blockdiagramm, das ein System 600 zur Anwendung einer Kameraselbstkalibrierung auf eine unkalibrierte SFM gemäß beispielhaften Ausführungsformen darstellt.
-
Wie es in 6 gezeigt ist, kann eine Kameraselbstkalibrierung auf eine unkalibrierte SFM angewendet werden. Das System 600 kann als Modul in einer Kamera oder einer Bild-/Video-Verarbeitungsvorrichtung implementiert werden. Eine ungeordnete Gruppe von unkalibrierten Bildern, wie beispielsweise denjenigen, die aus einer Internetbildsuche erhalten sind, kann als Eingabe verwendet werden (unkalibrierte Bilder 605). Jedes unkalibrierte Bild 605 wird dann separat zu der Kameraselbstkalibrierung (einer Komponente) 610 übergeben, zum Beispiel dem System 300 in 3, die das entsprechende kalibrierte Bild 620 erzeugt. Die kalibrierten Bilder 620 werden dann zum Schätzen der in den Bildern beobachteten Kamerastellungen und Szenenstrukturen zu einem SFM-Modul 630 gesendet. Das System 600 kann dann wiederhergestellte Kamerastellungen und Szenenstrukturen 640 ausgeben.
-
7 ist ein Blockdiagramm 700, das eine Entartung bzw. Degenerierung bei einer Selbstkalibrierung bei einer radialen Verzerrung bzw. Verzeichnung bei zwei Ansichten unter einer Vorwärtsbewegung gemäß der vorliegenden Erfindung darstellt.
-
Wie es in 7 gezeigt ist, können die beispielhaften Ausführungsformen auf die Degenerierung bei einer radialen Verzerrung bei zwei Ansichten unter einer Vorwärtsbewegung selbstkalibriert werden. Es gibt eine unendliche Anzahl von gültigen Kombinationen aus radialer Verzerrung und Szenenstruktur, einschließlich des speziellen Falls mit radialer Verzerrung von Null.
-
Man bezeichne die 2D-Koordinaten eines verzerrten Punktes (
720,
725) auf einer normalisierten Bildebene als s
d = [x
d, y
d]
T und den entsprechenden unverzerrten Punkt (
710,
715) als s
u = [x
u,y
u]
T = ƒ(s
d; θ)s
d. θ ist der radiale Verzerrungsparameter und ƒ(s
d; θ) ist die Entzerrungsfunktion, die s
d zu s
u skaliert. Die spezifische Form von ƒ(s
d; θ) hängt von dem radialen Verzerrungsmodell ab, das verwendet wird. Zum Beispiel kann das System ƒ(s
d; λ) = 1/(1 + 1λr
2) für das Divisionsmodell mit einem Parameter haben, oder wir haben ƒ(s
d; λ) = 1 + λr
2 für das Polynommodell mit einem Parameter. Bei beiden Modellen ist Ä der 1D-Parameter für radiale Verzerrung und ist
der Abstand vom Bildmittelpunkt
705. Die beispielhaften Ausführungsformen können die allgemeine Form ƒ(s
d; θ) für die nachstehende Analyse verwenden.
-
Die beispielhaften Ausführungsformen formulieren die geometrische Beziehung unter zwei Ansichten unter einer Vorwärtsbewegung, zum Beispiel wie eine reine Translationsbewegung einer Kamera entlang der optischen Achse auf 2D-Entsprechungen und ihre Tiefen bezogen ist. Im Fall eines 3D-Punktes S, jeweils ausgedrückt als S
1 = [X
1, Y
1, Z
1]
T und S
2 = [X
2, Y
2, Z
2]
T in den beiden Kamerakoordinaten. Unter einer Vorwärtsbewegung kann das System bestimmen, dass folgendes gilt: S
2 = S
1 - T mit T = [0,0,t
z]
T. Ohne Verlust an Allgemeingültigkeit fixiert das System t
z = 1, um die globale Skalenmehrdeutigkeit zu entfernen. Projiziert man die obige Beziehung auf die Bildebenen, erhält das System
wobei
und
jeweils 2D-Projektionen von S
1 und S
2 sind (zum Beispiel ist
eine 2D-Korrespondenz). Ein Ausdrücken des obigen in Ausdrücken der beobachteten verzerrten Punkte
und
ergibt:
-
-
wobei θ1 und θ2 jeweils Parameter für radiale Verzerrung in den zwei Bildern darstellen (es ist anzumerken, dass θ1 sich von θ2 unterscheiden kann). Gl. 1 stellt die gesamte verfügbare Information zum Schätzen der radialen Verzerrung und der Szenenstruktur dar. Die richtige radiale Verzerrung und Punkttiefe kann jedoch aus der obigen Gleichung nicht bestimmt werden. Das System kann die durch {θ1; θ2} bezeichnete Grundwahrheits-Radialverzerrung mit einer gefälschten Radialverzerrung {θ1', θ2'} ersetzen und die Grundwahrheits-Punkttiefe Z1 für jede 2D-Korrespondenz bzw. 2D-Entsprechung mit der folgenden gefälschten Tiefe Z1', so dass Gl. 1 noch gilt:
-
-
Insbesondere kann das System
als die gefälschte Radialverzerrung einstellen und die gemäß Gl. 2 berechnete beschädigte bzw. verschlechterte Tiefe
verwenden, so dass Gl. 1 noch gilt. Diese spezielle Lösung entspricht dem Lochkameramodell, zum Beispiel
und
In der Tat kann dieser spezielle Fall intuitiver abgeleitet werden. Gl. 1 zeigt an, dass sich alle 2D-Punkte entlang 2D-Linien bewegen, die vom Bildmittelpunkt
705 ausstrahlen, wie es in
7 dargestellt ist. Dieses Muster ist genau dasselbe wie beim Lochkameramodell und ist der einzige Hinweis darauf, die Vorwärtsbewegung zu erkennen.
-
Intuitiv sind die 2D-Punktbewegungen, die allein durch radiale Verzerrung induziert sind, wie z.B. zwischen
und
oder zwischen
und
entlang derselben Richtung wie die 2D-Punktbewegungen, die allein durch Vorwärtsbewegung induziert sind, wie z.B. zwischen
und
(siehe
7). Somit wirkt sich eine radiale Verzerrung nur auf die Größen von 2D-Punktversätzen aus, nicht aber ihre Richtungen in Fällen einer Vorwärtsbewegung. Weiterhin kann eine solche radiale Verzerrung mit einer geeigneten Beschädigung bzw. Verschlechterung bezüglich der Tiefen so kompensiert werden, dass eine beschädigte Szenenstruktur, die die Bildbeobachtungen erklärt, wie zum Beispiel 2D-Korrespondenzen, hinsichtlich Fehlern bei einer erneuten Projektion noch genau wiederhergestellt werden kann.
-
Demgemäß bestimmt das System, dass eine Selbstkalibrierung einer radialen Verzerrung unter zwei Ansichten für den Fall einer reinen Vorwärtsbewegung degeneriert bzw. entartet ist. Insbesondere gibt es eine unendliche Anzahl von gültige Kombinationen aus radialer Verzerrung und Szenenstruktur, einschließlich des speziellen Falls einer radialen Verzerrung von Null.
-
8 ist ein Ablaufdiagramm, das ein Verfahren 800 zum Implementieren einer Kameraselbstkalibrierung gemäß der vorliegenden Erfindung darstellt.
-
Bei einem Block 810, empfängt das System 300 kalibrierte Bilder und Kameraparameter. Zum Beispiel kann das System 300 während der Trainingsphase eine Gruppe von kalibrierten Bildern und entsprechenden Kameraparametern annehmen, um zum Erzeugen synthetisierter Kameraparameter und synthetisierter unkalibrierter Bilder verwendet zu werden. Die Kameraparameter können Brennweite, Projektionszentrum und radiale Verzerrung, etc. enthalten.
-
Bei einem Block 820 erzeugt das System 300 synthetisierte unkalibrierte Bilder und synthetisierte Kameraparameter.
-
Bei einem Block 830, trainiert das System 300 das Kameraselbstkalibrierungsnetz unter Verwendung der synthetisierten unkalibrierten Bilder und der synthetisierten Kameraparameter. Die unkalibrierten Bilder werden als Eingabedaten verwendet, während die Kameraparameter als Überwachungssignale zum Trainieren des Kameraselbstkalibrierungsnetzes 340 verwendet werden.
-
Bei einem Block 840 empfängt das System 300 reale bzw. echte unkalibrierte Bilder.
-
Bei einem Block 850 sagt das System 300 Kameraparameter für das reale unkalibrierte Bild vorher (schätzt sie zum Beispiel). Das System 300 sagt die Kameraparameter unter Verwendung des Kameraselbstkalibrierungsnetzes 340 vorher. Das System 300 kann eine tiefgehende Überwachung basierend auf einer Bildmittelpunktschätzung als eine Zwischenaufgabe für eine Radialverzerrungsschätzung und Brennweitenschätzung implementieren. Die gelernten Merkmale zum Schätzen des Bildmittelpunkts werden zum Schätzen der radialen Verzerrung verwendet, und eine Bilderscheinung wird basierend auf einer zusammengesetzten Wirkung aus radialer Verzerrung und Brennweite bestimmt.
-
Bei einem Block 860 erzeugt bzw. produziert das System 300 ein kalibriertes Bild unter Verwendung des realen unkalibrierten Bildes und der geschätzten Kameraparameter.
-
Wie er hierin verwendet wird, kann sich der Ausdruck „Hardwareprozessor-Untersystem“ oder „Hardwareprozessor“ auf einen Prozessor, einen Speicher, Software oder Kombinationen davon, die zusammenarbeiten, um eine oder mehrere spezifische Aufgaben auszuführen, beziehen. Bei nützlichen Ausführungsformen kann das Hardwareprozessor-Untersystem ein oder mehrere Datenverarbeitungselemente (z.B. Logikschaltungen, Verarbeitungsschaltungen, Anweisungsausführungsvorrichtungen, etc.) enthalten. Das eine oder die mehreren Datenverarbeitungselemente können in einer zentralen Verarbeitungseinheit, einer Grafikverarbeitungseinheit und/oder einer separaten prozessor- oder computerelementbasierten Steuerung (z.B. Logik-Gatter, etc.) enthalten sein. Das Hardwareprozessor-Untersystem kann einen oder mehrere Speicher an Bord enthalten (z.B. Caches, bestimmte Speicher-Arrays, einen Nurlesespeicher, etc.). Bei einigen Ausführungsformen kann das Hardwareprozessor-Untersystem einen oder mehrere Speicher enthalten, die an Bord sein können oder nicht, oder die zur Verwendung durch das Hardwareprozessor-Untersystem bestimmt sein können (z.B. ROM, RAM, Basisdatenaustauschsystem (BIOS), etc.).
-
Bei einigen Ausführungsformen kann das Hardwareprozessor-Untersystem ein oder mehrere Softwareelemente enthalten und ausführen. Das eine oder die mehreren Softwareelemente können ein Betriebssystem und/oder eine oder mehrere Anwendungen und/oder einen bestimmten Code enthalten, um ein spezifiziertes Ergebnis zu erreichen.
-
Bei anderen Ausführungsformen kann das Hardwareprozessor-Untersystem eine bestimmte, spezialisierte Schaltung enthalten, die eine oder mehrere elektronische Verarbeitungsfunktionen durchführt, um ein spezifiziertes Ergebnis zu erreichen. Eine solche Schaltung kann eine oder mehrere anwendungsspezifische integrierte Schaltungen (ASICs), feldprogrammierbare Gate-Arrays (FPGAs) und/oder programmierbare Logik-Arrays (PLAs) enthalten.
-
Eine Bezugnahme in der Beschreibung auf „eine einzige Ausführungsform“ oder „eine Ausführungsform“ der vorliegenden Erfindung sowie andere Variationen davon bedeutet, dass ein bestimmtes Merkmal, eine Struktur, eine Charakteristik und so weiter, die in Verbindung mit der Ausführungsform beschrieben sind, in wenigstens einer Ausführungsform der vorliegenden Erfindung enthalten ist. Somit beziehen sich die Erscheinungsformen der Phrase „bei einer einzigen Ausführungsform“ oder „bei einer Ausführungsform“ sowie irgendwelche anderen Variationen, die an verschiedenen Stellen durch die gesamte Beschreibung hindurch erscheinen, nicht notwendigerweise alle auf dieselbe Ausführungsform. Es ist jedoch einzusehen, dass Merkmale von einer oder mehreren Ausführungsformen bei Vorgabe der hierin zur Verfügung gestellten Lehren der vorliegenden Erfindung kombiniert werden können.
-
Es ist einzusehen, dass die Verwendung von irgendeinem von folgendem „/“, „und/oder“ und „wenigstens einer von“, wie zum Beispiel in den Fällen von „A/B“, „A und/oder B“ und „wenigstens eines von A und B“, die Auswahl von nur der ersten aufgelisteten Option (A) oder die Auswahl von nur der zweiten aufgelisteten Option (B) oder die Auswahl von beiden Optionen (A und B) umfassen soll. Als ein weiteres Beispiel soll in den Fällen „A, B und/oder C“ und „wenigstens eines von A, B und C“ die Phrasierung die Auswahl von nur der ersten aufgelisteten Option (A) oder die Auswahl von nur der zweiten aufgelisteten Option (B) oder die Auswahl von nur der dritten aufgelisteten Option (C) oder die Auswahl von nur der ersten und der zweiten aufgelisteten Optionen (nur A und B) oder die Auswahl von nur der ersten und der dritten aufgelisteten Optionen (nur A und C) oder die Auswahl von nur der zweiten und der dritten aufgelisteten Optionen (B und C) oder die Auswahl von allen drei Optionen (A und B und C) umfassen. Dies kann für so viele Elemente erweitert werden, wie sie aufgelistet sind.
-
Das Vorstehende ist in jeder Hinsicht illustrativ und beispielhaft, aber nicht beschränkend zu verstehen, und der Schutzumfang der hierin offenbarten Erfindung ist nicht aus der detaillierten Beschreibung zu bestimmen, sondern vielmehr aus den Ansprüchen in der Auslegung gemäß der vollen Breite, die durch die Patentgesetze zugelassen ist. Es ist zu verstehen, dass die hierin gezeigten und beschriebenen Ausführungsformen nur illustrativ für die vorliegende Erfindung sind und dass Fachleute auf dem Gebiet verschiedene Modifikationen implementieren können, ohne vom Schutzumfang und Sinngehalt der Erfindung abzuweichen. Fachleute auf dem Gebiet könnten verschiedene andere Merkmalskombinationen implementieren, ohne vom Schutzumfang und Sinngehalt der Erfindung abzuweichen. Hat man somit Aspekte der Erfindung mit den Details und der Besonderheit beschrieben, die durch die Patentgesetze erforderlich sind, ist das, was durch das Patentgesetz zu schützen beansprucht und erwünscht ist, in den beigefügten Ansprüchen dargelegt.
-
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
-
- US 62/793948 [0001]
- US 62/878819 [0001]
- US 16/736451 [0001]