DE112010002174B4 - Verfahren und Vorrichtung für ein praktisches 3D-Sehsystem - Google Patents

Verfahren und Vorrichtung für ein praktisches 3D-Sehsystem Download PDF

Info

Publication number
DE112010002174B4
DE112010002174B4 DE112010002174.0T DE112010002174T DE112010002174B4 DE 112010002174 B4 DE112010002174 B4 DE 112010002174B4 DE 112010002174 T DE112010002174 T DE 112010002174T DE 112010002174 B4 DE112010002174 B4 DE 112010002174B4
Authority
DE
Germany
Prior art keywords
interest
camera
double
cameras
area
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.)
Active
Application number
DE112010002174.0T
Other languages
English (en)
Other versions
DE112010002174T5 (de
Inventor
Aaron Wallack
David Michael
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.)
Cognex Technology And Investment Natick Us LLC
Original Assignee
Cognex Technology and Investment LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Cognex Technology and Investment LLC filed Critical Cognex Technology and Investment LLC
Publication of DE112010002174T5 publication Critical patent/DE112010002174T5/de
Application granted granted Critical
Publication of DE112010002174B4 publication Critical patent/DE112010002174B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1694Programme controls characterised by use of sensors other than normal servo-feedback from position, speed or acceleration sensors, perception control, multi-sensor controlled systems, sensor fusion
    • B25J9/1697Vision controlled systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/0002Inspection of images, e.g. flaw detection
    • G06T7/0004Industrial image inspection
    • 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/20092Interactive image processing based on input by user
    • G06T2207/20104Interactive definition of region of interest [ROI]

Landscapes

  • Engineering & Computer Science (AREA)
  • Robotics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Mechanical Engineering (AREA)
  • Length Measuring Devices By Optical Means (AREA)
  • Image Processing (AREA)
  • Testing, Inspecting, Measuring Of Stereoscopic Televisions And Televisions (AREA)
  • Stereoscopic And Panoramic Photography (AREA)
  • Image Analysis (AREA)

Abstract

Verfahren zum Spezifizieren eines Gebiets von Interesse bei einem 3D-Abbildungssystem, das mehrere Kameras (24) enthält, die mindestens erste und zweite Kameras (24) einschließen, wobei jede Kamera (24) ein Sehfeld aufweist, das entlang einer eigenständigen Kamerabahn verläuft, wobei das Verfahren die folgenden Schritte umfasst:Darstellen eines Teils (12) an einem Ort innerhalb der Sehfelder der mehreren Kameras (24),Anzeigen (32, 54) an dem Teil (12) eines Gebiets von Interesse, das sich im Sehfeld jeder der mehreren Kameras (24) befindet, wobei das Gebiet von Interesse ein ausgewähltes Gebiet von Interesse istfür jede der mehreren Kameras (24):(i) Erfassen (32, 56) mindestens eines Bilds des Teils (12), während des Anzeigens (32, 54) des Gebiets von Interesse auf dem Teil (12) welches sich im Sehfeld jeder der mehreren Kameras (24) befindet und wobei die Gebiet von Interesse ein ausgewähltes Gebiet von Interesse ist,(ii) Identifizieren (32, 58) des ausgewählten Gebiets von Interesse in dem mindestens einem Bild mittels des 3D-Abbildungssystems, wobei das identifizierte ausgewählte Gebiet von Interesse ein kameraspezifisches Feld von Interesse innerhalb des Sehfelds der Kamera (24) ist, das mit dem Gebiet von Interesse in dem mindestens einen Bild verbunden ist, und(iii) Speichern (32, 62) des kameraspezifischen Felds von Interesse mittels des 3D-Abbildungssystems für spätere Verwendung.

Description

  • Die Erfindung betrifft maschinelles Sehen und insbesondere dreidimensionales (3D) maschinelles Sehen. Die Erfindung findet Anwendung bei der Herstellung, Qualitätskontrolle und Robotertechnik, um nur einige Gebiete zu erwähnen.
  • Maschinelles Sehen bezeichnet die automatisierte Analyse von Bildern zur Bestimmung von Eigenschaften von in ihnen gezeigten Gegenständen. Es wird häufig bei automatisierten Fertigungsstraßen verwendet, bei denen Bilder von Komponenten analysiert werden, um Stückentnahme zu erleichtern sowie Stückplatzierung und -ausrichtung für die Montage zu bestimmen. Wenn Roboter die Mittel für automatisierten Zusammenbau darstellen und automatisierte Bildanalyse zur Erleichterung von Stückentnahme, -platzierung und -ausrichtung verwendet wird, bezeichnet man das System als sichtgestützte Robotertechnik. Maschinelles Sehen wird ebenso für Roboternavigation verwendet, zum Beispiel zur Sicherstellung der Erkennung von Szenen, wenn sich Roboter durch Umgebungen bewegen.
  • Obgleich dreidimensionale (3D-) Analyse schon lange in der Literatur diskutiert wird, verlassen sich die meisten Maschinensehsysteme von heute auf zweidimensionale (2D-) Bildanalyse. Dazu ist es in der Regel notwendig, dass dem Sehsystem Untersuchungsgegenstände in beschränkten Orientierungen und Orten „dargestellt“ werden. Gewöhnlich wird für diesen Zweck ein Förderband verwendet. Zu montierende oder untersuchende Gegenstände werden in der Regel mit einer bestimmten bekannten, stabilen 3D-Konfiguration auf das Band platziert, aber mit einer unbekannten Position und Orientierung, und in das Sehfeld des Sehsystems bewegt. Auf Grundlage der 2D-Pose (d. h. Position und Orientierung) eines Gegenstands im Sehfeld, und unter Berücksichtigung der Tatsache, dass es auf dem Förderer angeordnet ist (wodurch seine „Lage“ und sein Abstand zu der Sichtsystemkamera sichergestellt wird), wendet das System 2D-Geometrie an, um die genaue 3D-Pose des Gegenstands und/oder dessen Übereinstimmung mit einem erwarteten Erscheinungsbild zu bestimmen.
  • Beispiele, bei denen eine derartige 2D-Analyse verwendet wird, liegen in früheren Arbeiten der hiesigen Inhaberin vor, einschließlich den US-Patenten US 6,748,104 B1 mit dem Titel „Methods and apparatus for machine vision inspection using single and multiple templates or patterns“ [Verfahren und Vorrichtung zur Maschinensichtprüfung mit einziger und mehrfachen Vorlagen und Mustern], US 6,639,624 B1 mit dem Titel „Machine vision methods for inspection of leaded components“ [Maschinensehverfahren für die Prüfung von verdrahteten Bauteilen], US 6,301,396 B1 mit dem Titel „Nonfeedback-based machine vision methods for determining a calibration relationship between a camera and a moveable object“ [Maschinensehverfahren, die nicht auf Feedback basieren, zur Bestimmung einer Kalibrationsbeziehung zwischen einer Kamera und einem bewegbaren Gegenstand], US 6,137,893 A mit dem Titel „Machine vision calibration targets and methods of determining their location and orientation in an image“ [Maschinensehkalibrationsziele und -verfahren zur Bestimmung ihrer Position und Orientierung in einem Bild], US 5,978,521 A mit dem Titel „Machine vision methods using feedback to determine calibration locations of multiple cameras that image a common object“ [Maschinensehverfahren unter Verwendung von Feedback zum Bestimmen von Kalibrationspositionen von mehreren Kameras, die einen gemeinsamen Gegenstand abbilden], US 5,978,080 A mit dem Titel „Machine vision methods using feedback to determine an orientation, pixel width and pixel height of a field of view“ [Maschinensehverfahren unter Verwendung von Feedback zum Bestimmen von Orientierung, Pixelbreite und Pixelhöhe eines Sehfelds], US 5,960,125 A mit dem Titel „Nonfeedback-based machine vision method for determining a calibration relationship between a camera and a moveable object“ [Maschinensehverfahren, das nicht auf Feedback basiert, zur Bestimmung einer Kalibrationsbeziehung zwischen einer Kamera und einem bewegbaren Gegenstand], US 6,856,698 A mit dem Titel „Fast high-accuracy multi-dimensional pattern localization“ [Schnelle hochgenaue mehrdimensionale Musterlokalisierung], US 6,850,646 B1 mit dem Titel „Fast high-accuracy multi-dimensional pattern inspection“ [Schnelle hochgenaue mehrdimensionale Musterprüfung] und US 6,658,145 B1 mit dem Titel „Fast high-accuracy multi-dimensional pattern inspection“ [Schnelle hochgenaue mehrdimensionale Musterprüfung], um nur einige zu erwähnen.
  • Mit zunehmendem Verlassen auf die Robotik ist überall von Fabrikhallen bis zur Privatwohnung der Bedarf an praktischen 3D-Sehsystemen hervorgetreten. Dies liegt daran, dass in vielen dieser Umgebungen Gegenstände, die einer Prüfung unterzogen werden, nicht unbedingt in einer Gesamtposition und -lage eingeschränkt sind, wie es zum Beispiel ansonsten der Fall bei Gegenständen sein kann, die auf einem Förderband präsentiert werden. Das heißt, die präzise 3D-Konfiguration des Gegenstands kann unbekannt sein.
  • Zur Einbeziehung der zusätzlichen Freiheitsgrade von Pose und Position in einer 3D-Szene sind 3D-Sehwerkzeuge hilfreich, wenn nicht sogar notwendig. Beispiele für diese sind die US-Patente Nr. US 6,771,808 B1 mit dem Titel „System and method for registering patterns transformed in six degrees of freedom using machine vision“ [System und Verfahren zum Registrieren von Mustern, transformiert in sechs Freiheitsgraden, durch maschinelles Sehen] und US 6,728,582 B1 mit dem Titel „System and method for determining the position of an object in three dimensions using a machine vision system with two cameras“ [System und Verfahren zum Bestimmen der Position eines Gegenstands in drei Dimensionen unter Verwendung eines Maschinensehsystems mit zwei Kameras].
  • Aus der DE 11 2006 002 674 T5 wird ein Verfahren und eine Vorrichtung für ein praktisches 3D-Sehsystem beschrieben. Weitere Verfahren und Vorrichtungen für Sehsysteme sind aus der US 2008 / 0 279 446 A1 , der WO 2006 / 005 187 A1 , der JP H11- 23 262 A und der JP 2000 - 205 821 A bekannt.
  • Andere Maschinensehtechniken sind auf dem technischen Gebiet vorgeschlagen worden. Einige erfordern zu viel Prozessorleistung, um für eine Echtzeitanwendung praktisch zu sein. Andere erfordern es, dass Gegenstände, die einer Prüfung unterzogen werden, komplexe Registrierungsvorgänge durchlaufen und/oder dass während der Laufzeit viele der Merkmale der Gegenstände gleichzeitig im Sehfeld des Maschinensehsystems sichtbar sind.
  • Außerhalb des Bereichs des maschinellen Sehens stellt die Technik auch auf Kontakt basierende Verfahren zur Bestimmung von 3D-Posen bereit - wie etwa die Verwendung einer x,y,z-Messmaschine mit einem Berührungssensor. Jedoch erfordert dies Kontakt, ist relativ langsam und kann manuelles Eingreifen erfordern. Verfahren auf der Basis von elektromagnetischen Wellen zum Bestimmen von 3D-Posen sind ebenfalls angeboten worden. Diese erfordern keinen physischen Kontakt, leiden aber an separaten Nachteilen, wie zum Beispiel, dass sie den oft unpraktischen Schritt des Anbringens von Sendern an Gegenständen, die einer Prüfung unterzogen werden, erfordern.
  • Eine Aufgabe der vorliegenden Erfindung ist die Bereitstellung verbesserter Verfahren und Vorrichtungen für maschinelles Sehen und insbesondere für maschinelles Sehen in 3D.
  • Eine verwandte Aufgabe der vorliegenden Erfindung liegt in der Bereitstellung derartiger Verfahren und Vorrichtungen, die ein Spektrum praktischer Anwendungen aufweisen, einschließlich, aber nicht darauf beschränkt, der Herstellung, Qualitätskontrolle und Robotertechnik.
  • Eine weitere verwandte Aufgabe der Erfindung ist die Bereitstellung derartiger Verfahren und Vorrichtungen, die die Bestimmung von beispielsweise der Position und Pose im dreidimensionalen Raum erlauben.
  • Eine noch weitere verwandte Aufgabe der Erfindung ist die Bereitstellung derartiger Verfahren und Vorrichtungen, die reduzierte Beschränkungen, zum Beispiel hinsichtlich der Gesamtposition und -lage, von Gegenständen, die geprüft werden, auferlegen.
  • Eine noch weitere verwandte Aufgabe der Erfindung ist die Bereitstellung derartiger Verfahren und Vorrichtungen, die Erfordernisse für die Registrierung von Gegenständen, die einer Prüfung unterzogen werden, minimieren.
  • Eine immer noch weitere verwandte Aufgabe der Erfindung ist die Bereitstellung derartiger Verfahren und Vorrichtungen, die bei heutigen und zukünftigen Plattformen für maschinelles Sehen umgesetzt werden können.
  • Die oben angegebenen Aufgaben gehören zu den Aufgaben, die von der Erfindung gelöst werden, welche unter anderem Verfahren und Vorrichtungen zur Bestimmung der Pose, d. h. die Position längs der x-, y- und z-Achse, des Nickens, Rollens und Gierens (oder einer oder mehrerer Eigenschaften der Pose), eines Gegenstands in drei Dimensionen durch Triangulieren von Daten, die von mehreren Bildern des Gegenstands gesammelt wurden, bereitstellt.
  • Somit stellt die Erfindung beispielsweise in einem Aspekt ein Verfahren für maschinelles Sehen in 3D bereit, bei dem während eines Kalibrierungsschritts mehrere Kameras, die angeordnet sind, um Bilder vom Gegenstand aus verschiedenen jeweiligen Blickpunkten zu erfassen, kalibriert werden, um eine Abbildungsfunktion wahrzunehmen, die Strahlen im 3D-Raum identifiziert, die von der Linse jeder jeweiligen Kamera ausgehen und Pixelorten im Sehfeld dieser Kamera entsprechen. In einem Trainingsschritt wird die mit den Kameras verbundene Funktionalität trainiert, um erwartete Muster in Bildern, die von dem Gegenstand zu erfassen sind, zu erkennen. Ein Laufzeitschritt trianguliert Orte im 3D-Raum von einem oder mehreren dieser Muster von Pixeln betreffenden Positionen dieser Muster in Bildern des Gegenstands und von den während des Kalibrierungsschritts wahrgenommenen Abbildungen.
  • Weitere Aspekte der Erfindung stellen wie oben beschriebene Verfahren bereit, bei denen der Laufzeitschritt Orte aus Bildern vom Gegenstand trianguliert, die im Wesentlichen gleichzeitig von den mehreren Kameras aufgenommen wurden.
  • Noch weitere Gegenstände der Erfindung stellen derartige Verfahren bereit, die einen Rekalibrierungsschritt beinhalten, bei dem Laufzeitbilder des Gegenstands zur Wahrnehmung der oben genannten Abbildungsfunktion, zum Beispiel für eine Kamera, die aus der Kalibrierung geraten ist, eingesetzt werden. Somit können zum Beispiel, wenn eine Kamera Bilder erzeugt, in denen die Muster an Orten zu liegen scheinen (zum Beispiel, wenn sie auf den 3D-Strahlen für diese Kamera abgebildet sind), die mit Bildern von den anderen Kameras inkonsistent sind und/oder im Wesentlichen nicht übereinstimmen (zum Beispiel, wenn sie unter Verwendung ihrer jeweiligen 3D-Strahlen abgebildet sind), mit den Bildern von diesen anderen Kameras bestimmte Musterorte zur Rekalibrierung der einen Kamera verwendet werden.
  • Immer noch weitere Aspekte der Erfindung stellen wie oben beschriebene Verfahren bereit, bei denen der Kalibrierungsschritt das Positionieren von Registrierungszielen (wie etwa Mittelpunktmarkierungen, Fadenkreuz oder dergleichen, zum Beispiel auf Kalibrierungsplatten oder anderweitig) an bekannten Positionen im 3D-Raum und das Aufzeichnen - oder anderweitig Charakterisieren, zum Beispiel algorithmisch - von Korrelationen zwischen diesen Positionen und den Pixelbezogenen Orten der jeweiligen Ziele in den Sehfeldern der Kameras beinhaltet. Verwandte Aspekte der Erfindung stellen derartige Verfahren bereit, bei denen eines oder mehrere dieser Registrierungsziele, Kalibrierungsplatten usw. verwendet werden, um mehrere Kameras zur gleichen Zeit, zum Beispiel mittels gleichzeitigem Abbilden, zu kalibrieren.
  • Andere Aspekte der Erfindung stellen Verfahren, wie oben beschrieben, bereit, bei denen der Kalibrierungsschritt das Wahrnehmen einer Abbildungsfunktion für jede Kamera, die ein Verzerren im Sehfeld berücksichtigt, beinhaltet.
  • Weitere Aspekte der Erfindung beinhalten wie oben beschriebene Verfahren, bei denen der Trainingsschritt das Trainieren der mit den Kameras verbundenen Funktionalität zur Erkennung erwarteter Muster, wie etwa Buchstaben, Zahlen, anderer Symbole (wie zum Beispiel Registrierungsziele), Ecken oder anderer wahrnehmbarer Merkmale (wie zum Beispiel dunkler und heller Flecken) des Gegenstands, beinhaltet und beispielsweise für die Messtechniken und Such-/ Detektionsmodelle auf dem technischen Gebiet bekannt sind.
  • Weitere verwandte Aspekte der Erfindung stellen derartige Verfahren bereit, bei denen der Trainingsschritt das Trainieren der oben genannten Funktionalität hinsichtlich der „Modellpunkte“ - d. h. erwarteter Orte im 3D-Raum der Muster (zum Beispiel absolut oder verhältnismäßig) auf Gegenständen beinhaltet, die in der Laufzeit geprüft werden. In Kombination mit den aus diesen Bildern wahrgenommenen triangulierten 3D-Orten kann diese Information während des Laufzeitschritts verwendet werden, um die Pose dieses Gegenstands wahrzunehmen.
  • Gemäß Aspekten der Erfindung beinhaltet das Trainieren hinsichtlich erwarteter Orte der Muster (d. h. Modellpunkte) das Finden von 2D-Posen eines Referenzpunkts (oder „Ursprungs“) von jedem derartigen Muster. Für Muster, von denen erwartet wird, dass sie in den Sehfeldern von zwei oder mehr Kameras erscheinen, erleichtern derartige Referenzpunkte die Triangulation, wie nachstehend beschrieben wird, zu Zwecken des Bestimmens der Position dieser Muster (und daher des Gegenstands) im 3D-Raum.
  • Verwandte Aspekte der Erfindung stellen derartige Verfahren bereit, bei denen das Training hinsichtlich erwarteter Muster die Verwendung - innerhalb der jeder Kamera zugeordneten Funktionalität - gleicher Modelle zum Trainieren gleicher erwarteter Muster wie zwischen verschiedenen Kameras beinhaltet. Dies hat den Vorteil, dass sichergestellt wird, dass die Referenzpunkte (oder Ursprünge) für in der Laufzeit gefundene Muster wie zwischen Bildern, die von diesen verschiedenen Kameras erhalten wurden, zusammenfallen.
  • Weitere verwandte Aspekte der Erfindung stellen derartige Verfahren bereit, bei denen das Training hinsichtlich erwarteter Muster die Verwendung - innerhalb der jeder Kamera zugeordneten Funktionalität - verschiedener Modelle für gleiche Muster wie zwischen verschiedenen Kameras beinhaltet. Dies erleichtert das Finden von Mustern, zum Beispiel, wenn Pose, Sichtwinkel und/oder Hindernisse den Weg, auf dem verschiedene Kameras diese Muster abbilden werden, ändern.
  • Verwandte Aspekte der Erfindung stellen derartige Verfahren bereit, die das Trainieren der Auswahl von Referenzpunkten (oder Ursprüngen) von derart modellhaft dargestellten Mustern beinhalten. Ein derartiges Training kann beispielsweise von einer Bedienperson, die zum Beispiel einen Laserzeiger oder etwas anderweitiges verwendet, durchgeführt werden, um sicherzustellen, dass diese Referenzpunkte (oder Ursprünge) wie zwischen Bildern, die von diesen verschiedenen Kameras erhalten werden, zusammenfallen.
  • Verwandte Aspekte der Erfindung stellen derartige Verfahren bereit, bei denen der Trainingsschritt das Wahrnehmen des Orts der Muster, beispielsweise durch Verwendung einer Triangulationsmethodologie ähnlich derjenigen, die während der Laufzeitphase angewendet wird, beinhaltet. Alternativ dazu können die erwarteten (relativen) Orte der Muster von den Bedienpersonen eingegeben und/oder durch andere Messmethodologien wahrgenommen werden.
  • Weitere verwandte Aspekte der Erfindung stellen derartige Verfahren bereit, bei denen der Trainingsschritt das Finden eines erwarteten Musters in einem Bild von einer (oder mehreren) Kamera(s) auf der Basis vorheriger Identifizierung dieses Musters in einem Bild von einer anderen Kamera beinhaltet. So kann zum Beispiel, wenn die Bedienperson erst einmal ein erwartetes Muster in einem von einer Kamera aufgenommenen Bild identifiziert hat, der Trainingsschritt automatisch das Finden dieses gleichen Musters in Bildern von den anderen Kameras beinhalten.
  • Noch weitere Aspekte der Erfindung stellen wie oben beschriebene Verfahren bereit, bei denen der Trainingsschritt mehrere Ansichten des Gegenstands für jede Kamera erfasst, bevorzugt so, dass die auf diesen Gegenständen gefundenen Ursprünge der Muster konsistent definiert sind. Zur Berücksichtigung einer möglichen Inkonsistenz unter den Bildern können die, die das höchste Abstimmungsergebnis für die Muster erzeugen, verwendet werden. Dies hat den Vorteil, dass die Methodologie robuster zum Finden von Teilen in willkürlichen Posen gemacht wird.
  • In noch anderen Aspekten der Erfindung beinhaltet der Laufzeitschritt das Triangulieren der Position von einem oder mehreren der Muster in Laufzeitbildern, zum Beispiel unter Verwendung von Musterabstimmung oder anderen zweidimensionalen Sehwerkzeugen, und das Verwenden der Abbildungen, die während der Kalibrierungsphase wahrgenommen wurden, um die pixelbezogenen Orte dieser Muster in den Sehfeldern der jeweiligen Kamera mit den oben erwähnten 3D-Strahlen zu korrelieren, auf denen diese Muster liegen.
  • Gemäß verwandten Aspekten der Erfindung kann es sich bei der Triangulation des Musterorts um „direkte“ Triangulation handeln, wie zum Beispiel dort, wo der Ort eines gegebenen Musters aus dem Schnittpunkt (oder dem Punkt der Approximation nach der Methode der kleinsten Quadrate) mehrerer 3D-Strahlen (von mehreren Kameras), auf denen dieses Muster liegt, bestimmt wird. Alternativ oder zusätzlich dazu kann die Triangulation „indirekt“ gestaltet sein, wie z. B. dort, wo der Ort eines gegebenen Musters nicht nur aus dem Strahl (oder den Strahlen), auf dem (denen) dieses Muster liegt, bestimmt wird, sondern auch aus (i) den Strahlen, auf denen die anderen Muster liegen, und (ii) den relativen Orten dieser Muster zueinander (zum Beispiel wie während der Trainingsphase bestimmt).
  • Andere Aspekte der Erfindung stellen wie oben beschriebene Verfahren bereit, bei denen die mit den Kameras verbundene Funktionalität „unterbrochen wird“, wenn sie ein erwartetes Muster in einem Bild eines Gegenstands - während des Trainings oder der Laufzeit - nicht finden kann, wodurch eine ungebührliche Verzögerung bei der Positionsbestimmung vermieden wird, zum Beispiel wenn ein derartiges Muster fehlt, verdeckt ist oder anderweitig nicht erfasst wird.
  • Noch andere Aspekte der Erfindung entsprechen den oben beschriebenen Verfahren, bei denen ID-Matrixcodes (oder andere Muster, deren Erscheinungsbild und/oder Positionen vordefiniert oder anderweitig bekannt sind) statt der oben diskutierten Muster verwendet werden. Bei diesen Aspekten der Erfindung entfällt der Trainingsschritt oder er ist reduziert. Stattdessen können die 2D-Positionen dieser Codes (oder andere Muster) aus den Trainingsphasen- oder Laufzeitbildern wahrgenommen werden, zum Beispiel durch Sehwerkzeuge, die für generische Arten von Merkmalen entwickelt sind, um auf 3D-Orte abzubilden.
  • Noch andere Aspekte der Erfindung entsprechen den oben beschriebenen Verfahren, bei denen ID-Matrixcodes (oder andere Muster, deren Erscheinungsbild und/oder Positionen vordefiniert oder anderweitig bekannt sind) statt der oben diskutierten Muster verwendet werden. Bei diesen Aspekten der Erfindung entfällt der Trainingsschritt oder er ist reduziert. Stattdessen können die 2D-Positionen dieser Codes (oder andere Muster) aus den Trainingsphasen- oder Laufzeitbildern wahrgenommen werden, zum Beispiel durch Sehwerkzeuge, die für generische Arten von Merkmalen entwickelt sind, um auf 3D-Orte abzubilden.
  • Noch weitere Aspekte der Erfindung stellen Systeme für maschinelles Sehen bereit, zum Beispiel einschließlich einer digitalen Verarbeitungsfunktionalität und Kameras, die in Übereinstimmung mit den obigen Verfahren arbeiten. Diese und andere Aspekte der Erfindung sind in den Zeichnungen und in der folgenden Beschreibung ersichtlich.
  • Ein noch weiterer verwandter Aspekt der Erfindung sieht solche Verfahren und Vorrichtungen bereit, die die Prüfung eines Gegenstands erlauben, z. B. um relative Positionen von seinen Bereichen zu bestimmen und zu validieren. Derartige Verfahren und Vorrichtungen können mit Bezug auf ein nicht einschränkendes Beispiel verwendet werden, um die Prüfung und Verifikation, zum Beispiel während einer Montage, Qualitätssicherung, Wartung oder eines anderen Vorgangs, zu unterstützen.
  • Weitere verwandte Aspekte der Erfindung stellen derartige Verfahren und Vorrichtungen bereit, die auf die Abwesenheit oder Falschplatzierung eines Teils (oder anderen Abschnitts) eines Gegenstands schließen, wo eines oder mehrere erwartete Muster (zum Beispiel mit diesem Teil/Abschnitt verbunden) bei Laufzeitbildern fehlen oder in diesen Bildern vorhanden sind, aber an Pixelorten, die auf 3D-Orte abbilden, die nicht erwartet oder erwünscht sind.
  • Noch weitere verwandte Aspekte der Erfindung stellen derartige Verfahren und Vorrichtungen bereit, wobei während des Laufzeitschritts die Positionen von Teilen oder anderen Abschnitten des Gegenstands auf der Basis von Teilmengen von 3D-Orten entsprechend Mustern, die in Laufzeitbildern gefunden werden, bestimmt werden und wobei diese 3D-Orte benutzt werden, um erwartete Orte noch weiterer Muster zu bestimmen. Die erwarteten Orte dieser weiteren Muster können mit ihren tatsächlichen 3D-Orten, wie sie zum Beispiel aus den Laufzeitbildern bestimmt werden, verglichen werden. Wo bei dem Vergleich identifizierte Positionsunterschiede eine vorgegebene Toleranz überschreiten, kann das System geeignete Benachrichtigungen (zum Beispiel an die Bedienperson) erzeugen.
  • Vorteile von erfindungsgemäßen Systemen und Verfahren bestehen darin, dass sie leichter zu verwenden sind und praktischer als Vorgehensweisen bei Systemen des Standes der Technik sind, und dennoch auf Sehen basieren und daher keinen Kontakt mit oder eine vorherige Vorbereitung von Gegenständen, die einer Prüfung unterzogen werden, benötigen. Derartige (erfindungsgemäße) Systeme und Verfahren können leicht eingerichtet werden und dann mittels „Zeigen-und-Durchführen“ trainiert werden.
  • Außerdem bieten sie schnelle Leistung und Robustheit, zum Beispiel gegenüber fehlender und inkorrekter Ergebnisse. So können beispielsweise Verfahren und Vorrichtungen gemäß Aspekten der Erfindung die Pose von Gegenständen bestimmen, selbst wenn einige Muster nicht in einigen (und unter manchen Umständen in keinen) der Laufzeitbilder gefunden werden, zum Beispiel weil die Muster für den Blick durch eine oder mehrere Kameras verdeckt sind oder weil Bilder dieser Muster nicht rechtzeitig erfasst werden konnten. Nach einem weiteren Beispiel stellen Verfahren und Vorrichtungen gemäß Aspekten der Erfindung Robustheit gegenüber inkorrekten Ergebnissen (die zum Beispiel durch falsch ausgerichtete Kameras verursacht wurden) durch Triangulieren unter Verwendung von Teilmengen der 3D-Orte bereit, die in Laufzeitbildern gefundenen Mustern entsprechen: wenn eine der Teilmengen zu einer niedrigeren Summe der Fehlerquadrate führt, kann statt aller Muster diese Teilmenge für die Positionstriangulation verwendet werden.
  • Mindestens einige Ausführungsformen enthalten ein Verfahren zum Spezifizieren eines Gebiets von Interesse bei einem 3D-Abbildungssystem, das mehrere Kameras enthält, die mindestens erste und zweite Kameras einschließen, wobei jede Kamera ein Sehfeld aufweist, das entlang einer eigenständigen Kamerabahn verläuft, wobei das Verfahren die Schritte Darstellen eines Teils an einem Ort innerhalb der Sehfelder der mehreren Kameras, Anzeigen an dem Teil eines Gebiets von Interesse, das sich im Sehfeld jeder der mehreren Kameras befindet, für jede der mehreren Kameras: (i) Erfassen mindestens eines Bilds des Teils, enthaltend das Gebiet von Interesse, (ii) Identifizieren eines kameraspezifischen Felds von Interesse innerhalb des Sehfelds der Kamera, das mit dem Gebiet von Interesse in dem mindestens einem Bild verbunden ist, und (iii) Speichern des Felds von Interesse für spätere Verwendung umfasst.
  • Bei einigen Ausführungsformen enthält der Schritt des Anzeigens eines Gebiets von Interesse an dem Teil das Anzeigen von mindestens drei Punkten an dem Teil, die das Gebiet von Interesse definieren. Bei einigen Ausführungsformen enthält der Schritt des Anzeigens von mindestens drei Punkten die Verwendung einer Lasereinrichtung zur sequenziellen Anzeige jedes der mindestens drei Punkte, wobei der Schritt des Erfassens mindestens eines Bilds das Erfassen eines separaten Bilds für jeden der mindestens drei Punkte enthält. Bei einigen Ausführungsformen enthält der Schritt des Identifizierens eines kameraspezifischen Felds von Interesse die Verwendung von mehreren erfassten Bildern zur Identifizierung des Felds von Interesse.
  • In einigen Fällen enthält das Verfahren weiterhin die folgenden Schritte: für jeden Punkt, Bestimmen, wann der Punkt in mindestens einem von jeder Kamera erfassten Bild identifiziert worden ist, und Anzeigen, wann der Punkt in mindestens einem von jeder der Kameras erfassten Bild identifiziert worden ist. In einigen Fällen enthält das Verfahren weiterhin die folgenden Schritte: für jeden Punkt, Bestimmen, wann der Punkt in mindestens einem von mindestens einer Kamera erfassten Bild identifiziert worden ist, während der Punkt in mindestens einem von mindestens einer weiteren Kamera erfassten Bild nicht identifiziert worden ist.
  • Bei einigen Ausführungsformen enthält der Schritt des Anzeigens eines Gebiets von Interesse an dem Teil die Verwendung einer Lasereinrichtung zur Anzeige des Gebiets von Interesse auf der Oberfläche des Teils durch Beleuchtung mindestens eines Abschnitts des Teils mittels eines Laserstrahls. Bei einigen Ausführungsformen enthält die Lasereinrichtung einen Knopf, der dazu auswählbar ist, anzuzeigen, dass ein derzeit beleuchteter Abschnitt des Teils mindestens einem Gebiet von Interesse definierenden Informationen entspricht und dass Bilder des Teils zu dem Zeitpunkt, an dem der Knopf gewählt wird, analysiert werden sollten, um Ortsinformationen, die mit dem derzeit beleuchteten Abschnitt des Teils verbunden sind, zu erhalten, wobei das Verfahren weiterhin den Schritt des Überwachens auf eine Anzeige von der Lasereinrichtung enthält.
  • In einigen Fällen ist die Lasereinrichtung dazu programmiert, wenn der Knopf gewählt wird, eine Veränderung des Erscheinungsbilds des Beleuchtungsstrahls auf dem Teil zu verursachen, wobei der Schritt des Überwachens auf eine Anzeige von der Lasereinrichtung das Analysieren von Kamerabildern enthält, um die Veränderung des Erscheinungsbilds des Beleuchtungsstrahls auf dem Teil zu identifizieren. In einigen Fällen enthält das Verfahren weiterhin die Schritte des Bereitstellens von Feedback an den Systembenutzer, das anzeigt, wann die kameraspezifischen Felder von Interesse für jede der mehreren Kameras identifiziert worden sind. Bei einigen Ausführungsformen enthält der Schritt des Erfassens mindestens eines Bilds das Erfassen von Bildern in schneller Folge, wobei der Schritt des Anzeigens von mindestens drei Punkten die Verwendung einer Lasereinrichtung zur unabhängigen Beleuchtung von jedem der drei Punkte enthält. Bei einigen Ausführungsformen enthält der Schritt des Anzeigens von mindestens drei Punkten, für jeden Punkt, während die Lasereinrichtung den Punkt beleuchtet, das Anzeigen, dass der beleuchtete Ort einer der Punkte zum Definieren des Gebiets von Interesse ist.
  • Einige Ausführungsformen enthalten ein Verfahren zum Spezifizieren eines Gebiets von Interesse in einem 3D-Abbildungssystem, enthaltend mehrere Kameras, die mindestens erste und zweite Kameras enthalten, wobei jede Kamera ein Sehfeld aufweist, das entlang einer eigenständigen Kamerabahn verläuft, wobei das Verfahren die folgenden Schritte umfasst: Darstellen eines Teils an einem Ort innerhalb der Sehfelder der Kameras, Verwenden einer Lasereinrichtung zum sequenziellen und unabhängigen Anzeigen an dem Teil von mehreren Punkten, die ein Gebiet von Interesse definieren, für jede der mehreren Kameras, während des Anzeigens der Punkte an dem Teil, Erfassen von Bildern des Teils, enthaltend das Gebiet von Interesse, Verwenden der Punkte in mehreren Bildern für jede Kamera zum Identifizieren eines Felds von Interesse in dem Sehfeld, das dem Gebiet von Interesse entspricht, und Speichern des Felds von Interesse in dem Sehfeld als kameraspezifisches Feld von Interesse.
  • Andere Ausführungsformen enthalten ein System zum Trainieren eines Systems für dreidimensionales Sehen zur Definierung von kameraspezifischen Feldern von Interesse, wo ein Gebiet von Interesse an einem Teil angezeigt ist, wobei das System mehrere Kameras umfasst, wobei jede Kamera ein Sehfeld aufweist, das entlang einer eigenständigen Kamerabahn verläuft, so dass das Gebiet von Interesse innerhalb des Sehfelds der Kamera liegt, wobei jede Kamera zum Erhalten von Bildern des Teils in dem Sehfeld der Kamera ist, und einen Maschinensehprozessor umfasst, der für jede Kamera zur Ausführung der folgenden Schritte programmiert ist: (i) Erhalten von Bildern, (ii) Verwenden mindestens eines der erhaltenen Bilder zur Identifizierung eines Abschnitts des Sehfelds der zur Erzeugung des Bilds verwendeten Kamera, das mit dem Gebiet von Interesse verbunden ist, als ein Feld von Interesse und (iii) Speichern des Felds von Interesse, das mit dem Gebiet von Interesse verbunden ist, als ein kameraspezifisches Feld von Interesse.
  • In einigen Fällen enthält das System weiterhin eine Laserzeigereinrichtung für das Lenken eines Laserstrahls in Richtung des Teils zur Anzeige des Gebiets von Interesse an dem Teil. In einigen Fällen enthält die Laserzeigereinrichtung einen Knopf, der dazu auswählbar ist, anzuzeigen, dass ein derzeit beleuchteter Abschnitt des Teils mindestens einem Gebiet von Interesse definierenden Informationen entspricht und dass Bilder des Teils zu dem Zeitpunkt, an dem der Knopf gewählt wird, analysiert werden sollten, um Ortsinformationen, die mit dem derzeit beleuchteten Abschnitt des Teils verbunden sind, zu erhalten, wobei der Prozessor weiterhin dazu programmiert ist, den Schritt des Überwachens auf eine Anzeige von der Laserzeigereinrichtung, dass Bilder analysiert werden sollen, auszuführen. In einigen Fällen ist die Laserzeigereinrichtung dazu programmiert, wenn der Knopf gewählt wird, eine Veränderung des Erscheinungsbilds des Beleuchtungsstrahls auf dem Teil zu verursachen, wobei der Schritt des Überwachens auf eine Anzeige von der Laserzeigereinrichtung das Analysieren von Kamerabildern enthält, um die Veränderung des Erscheinungsbilds des Beleuchtungsstrahls auf dem Teil zu identifizieren. In einigen Ausführungsformen enthält die Laserzeigereinrichtung einen Sender, der ein Signal sendet, wenn der Knopf gewählt wird.
  • Ein umfassenderes Verständnis der Erfindung kann unter Bezugnahme auf die Zeichnungen erreicht werden, in denen:
    • 1 einen Digitaldatenprozessor zeigt, der für die Praxis der Erfindung konfiguriert ist;
    • 2 ein Flussdiagramm ist, das den Betrieb eines Systems gemäß der Erfindung zeigt;
    • 3 die Kalibrierung eines Systems gemäß der Erfindung zeigt;
    • 4A-4B das Training und/oder den Laufzeitbetrieb eines erfindungsgemäßen Systems zeigen; und
    • 5 ein Flussdiagramm ist, das ein Verfahren zum Training von eigenständigen Feldern von Interesse für mehrere Kameras in einem 3D-Abbildungssystem zeigt.
  • 1 zeigt ein erfindungsgemäßes Maschinensehsystem 10, das dazu fähig ist, die Pose eines Gegenstands 12 in drei Dimensionen durch Triangulieren von Daten, die von mehreren Bildern des Gegenstands gesammelt wurden, zu bestimmen. Bei der dargestellten Ausführungsform ist die Pose die definierte Position und Ausrichtung des Gegenstands im dreidimensionalen Raum - oder genauer gesagt, die Position des Gegenstands längs der x-, y- und z-Achse 14, 16, 18 sowie das Nicken, Rollen und Gieren des Gegenstands relativ zu diesen. Bei anderen Ausführungsformen kann die Pose auf Teilmengen dieser räumlichen Eigenschaften beschränkt sein (zum Beispiel Position entlang der Achse 16 und Gieren; Position entlang der Achsen 14-18; Rollen; usw.). Die dargestellten Achsen 14-18 sind mit einem Rahmen 20 des Sehsystems 10 ausgerichtet; obwohl bei anderen Ausführungsformen andere Bezugsrahmen verwendet werden können. Der Rahmen 20 der dargestellten Ausführungsform ist figürlich durch Kameraträger 20a und Plattform 20b dargestellt, die mit starker Schattierung gezeigt sind; obwohl bei anderen Ausführungsformen andere oder keine derartigen Glieder verwendet zu werden brauchen.
  • Das System 10 enthält weiterhin einen Digitaldatenprozessor 22 und Bilderfassungseinrichtungen 24. Der Digitaldatenprozessor 22, der hier der Einfachheit halber als iMac® G5 Personalcomputer gezeigt ist, kann ein Zentralrechner, ein Arbeitsplatzrechner, ein Personalcomputer (der zum Beispiel auf einer Windows®/Intel Pentium 4-Plattform oder sonstigem läuft), ein zweckbestimmter Sehcomputer, ein eingebetteter Prozessor oder eine andere Digitaldateneinrichtung sein, die mit einem proprietären Open-Source- oder anderweitigem Betriebssystem läuft, das in Übereinstimmung mit den vorliegenden Lehren programmiert oder anderweitig konfiguriert ist, um die Pose des Gegenstands 12 aus von Erfassungseinrichtungen 24 gelieferten Bildern zu bestimmen. Der Digitaldatenprozessor kann eine Anzeige 22a, wie gezeigt, sowie eine Tastatur 22b, eine Maus 22c und andere Eingabe-/Ausgabeeinrichtungen enthalten, die alle von dem Typ sind, der im Stand der Technik bekannt ist.
  • Die Bilderfassungseinrichtungen 24 können Maschinensehkameras, Videokameras, Standbildkameras oder andere Einrichtungen sein, die dazu fähig sind, Bilder des Gegenstands 12 im sichtbaren oder einem anderen relevanten Spektrum zu erfassen. Ohne Verlust von Allgemeinheit werden in dem folgenden Text die Einrichtungen 24 typischerweise als „Kameras“ bezeichnet - obwohl sie in der Praxis irgendeine Art von Bilderfassungsfunktionalität umfassen können. In der veranschaulichten Ausführungsform sind drei derartige Einrichtungen 24 gezeigt, obwohl in der Praxis irgendeine Mehrzahl von Einrichtungen (zum Beispiel zwei oder mehr) eingesetzt werden kann. Diese Einrichtungen sind dazu angeordnet, Bilder des Gegenstands 24 aus verschiedenen jeweiligen Blickpunkten zu erfassen. Der Fachmann wird auch wissen, dass bei einigen Ausführungsformen die 3D-Pose eines Prüfgegenstands auch unter Verwendung von Bildern von einer einzigen derartigen Einrichtung 24 bestimmt werden kann und dass daher nicht alle Ausführungsformen Bilder von mehreren Kameras benötigen.
  • Der Digitaldatenprozessor 22 enthält weiterhin einen Zentralprozessor (CPU), einen Speicher (RAM) und eine Eingabe-/Ausgabe-Funktionalität (I/O-Funktionalität) der Art, die in dem technischen Gebiet bekannt ist, obwohl sie für den Betrieb in Übereinstimmung mit den vorliegenden Lehren programmiert ist.
  • Insbesondere sind diese in der dargestellten Ausführungsform dazu konfiguriert, 3D-Maschinensehen in Übereinstimmung mit dem in 2 gezeigten Verfahren bereitzustellen. Dort wird im Kalibrierungsschritt 30 jede der mehreren Kameras 24 kalibriert, um eine jeweilige Abbildungsfunktion wahrzunehmen, die Strahlen im 3D-Raum, die von der Linse dieser Kamera ausgehen und Pixelorten im Sehfeld dieser Kamera entsprechen, identifiziert.
  • Mit Bezug auf 3 enthält in dieser Hinsicht der Kalibrierungsschritt das Positionieren von Registrierungszielen (wie etwa Mittelpunktmarkierungen, Fadenkreuze oder dergleichen, zum Beispiel auf Kalibrierungsplatten 40 oder anderweitig) an bekannten Positionen im 3D-Raum und das Aufzeichnen - oder sonstiges Charakterisieren, zum Beispiel algorithmisch - von Korrelationen zwischen diesen Positionen und den pixelbezogenen Orten der jeweiligen Ziele in den Sehfeldern der Kameras. Vorzugsweise berücksichtigt dieses Abbilden das Verzerren im Sehfeld jeder jeweiligen Kamera 24.
  • In der dargetellten Ausführungsform werden die Registrierungsziele, Kalibrierungsplatten 40 usw. dazu verwendet, mehrere Kameras 24 zur gleichen Zeit zu kalibrieren, zum Beispiel mittels simultanen Abbildens. Somit kann die Bedienperson beispielsweise ein Ziel im Sehfeld von zwei oder mehr der Bilderfassungseinrichtungen 24 platzieren, die das Ziel zu Kalibrierungszwecken gleichzeitig abbilden. Wo Kalibrierungsplatten 40 oder dergleichen zur Kalibrierung verwendet werden, zeigen sie vorzugsweise eine Passermarke 41 (zum Beispiel ein einzigartiges Muster, das sich von dem gleichförmigen Schachbrettmuster unterscheidet) an einem Ursprung, so dass alle Erfassungseinrichtungen 24 bezüglich des gleichen einzigartigen Referenzpunktes mit spezifizierter Ausrichtung kalibriert werden können. Indem die Einrichtungen 24 so in konsistenter Weise kalibriert werden, können sie alle zum Abbilden von ihren Bildkoordinaten (zum Beispiel den pixelbezogenen Orten von Musterursprüngen) auf einen gemeinsamen Referenzpunkt oder -rahmen verwendet werden. Bevorzugte derartige Passermarken sind asymmetrisch, wie in dem Fall der L-förmigen Passermarke in der Zeichnung.
  • Zugrundeliegende Methodologien und Vorrichtungen für eine derartige Kalibrierung werden mittels eines nichteinschränkenden Beispiels in den US-Patenten US 6,748,104 B1 mit dem Titel „Methods and apparatus for machine vision inspection using single and multiple templates or Patterns“, US 6,639,624 B1 mit dem Titel „Machine vision methods for inspection of leaded components“, US 6,301,396 B1 mit dem Titel „Nonfeedback-based machine vision methods for determining a calibration relationship between a camera and a moveable object“, US 6,137,893 A mit dem Titel „Machine vision calibration targets and methods of determining their location and orientation in an image“, US 5,978,521 A mit dem Titel „Machine vision methods using feedback to determine calibration locations of multiple cameras that image a common object“, US 5,978,080 A mit dem Titel „Machine vision methods using feedback to determine an orientation, pixel width and pixel height of a field of view“, US 5,960,125 A mit dem Titel „Nonfeedback-based machine vision method for determining a calibration relationship between a camera and a moveable object“, US 6,856,698 A mit dem Titel „Fast high-accuracy multi-dimensional pattern localization“, US 6,850,646 B1 mit dem Titel „Fast high-accuracy multi-dimensional pattern inspection“ und US 6,658,145 B1 mit dem Titel „Fast high-accuracy multi-dimensional pattern inspection“ gelehrt, deren Lehren hiermit durch Bezugnahme aufgenommen sind. Die in den letzten drei Patenten beschriebenen Methodologien und Vorrichtungen werden an anderer Stelle mit dem Namen „PatMax“ bezeichnet.
  • In einem optionalen Trainingsschritt 32 wird ein mit jeder jeweiligen Kamera 24 verbundenes Modul (zum Beispiel eine Codesequenz, Subroutine, Funktion, ein Objekt, andere Datenstruktur und/oder zugehörige Software oder eine andere Funktionalität) dazu trainiert, erwartete Muster in zu erfassenden Bildern des Gegenstands 12 während der Laufzeit zu erkennen. Bei diesen kann es sich um Buchstaben, Zahlen, andere Symbole (wie etwa Registrierungsziele), Ecken oder andere Merkmale (wie etwa dunkle und helle Flecken) handeln, von denen erwartet wird, dass sie in den Laufzeitbildern des Gegenstands 12 wahrnehmbar sind und für die beispielsweise Messtechniken und Such-/ Detektionsmodelle auf dem technischen Gebiet bekannt sind. Diese Muster können permanent Teil des Gegenstands oder an ihm befestigt sein. Sie können jedoch auch temporär sein, wie zum Beispiel in dem Fall von entfernbaren Kalibrierungszielen. In der Tat brauchen sie nicht einmal physisch mit dem Objekt verbunden zu sein. Zum Beispiel können sie optisch oder anderweitig auf Gegenstände projiziert sein, die während Trainings- und/oder Laufzeitphasen abgebildet werden, zum Beispiel durch einen Laser oder andere Vorrichtungen.
  • Zusätzlich zum Trainieren der Module oder einer anderen mit jeder Kamera 24 verbundenen Funktionalität zum Erkennen eines Musters enthält der Trainingsschritt 32 der veranschaulichten Ausführungsform das Trainieren davon hinsichtlich der Modellpunktorte, d. h. der erwarteten Orte der Muster, zum Beispiel relativ zueinander (d. h. im 3D-Raum) auf Gegenständen, die während der Laufzeit geprüft werden. Dies kann zum Beispiel durch Verwendung einer Triangulationsmethodologie ähnlich der, die während der Laufzeitphase ausgeübt wurde, sein. Alternativ dazu können die erwarteten (relativen) Orte der Muster von der Bedienperson eingegeben und/oder durch andere Messmethodologien (zum Beispiel Lineale, Messschieber, Messgeräte für optischen Abstand und so weiter) wahrgenommen werden.
  • Ungeachtet dessen, ob Triangulation oder andere Methodologien verwendet werden, enthält der Trainingsschritt 32 bevorzugt das Trainieren der Module oder anderen Funktionalität oder anderen mit jeder Kamera 24 verbundenen Funktionalität hinsichtlich eines Referenzpunkts (oder „Ursprungs“) von jedem derartigen trainierten Muster. Für Muster, von denen erwartet wird, dass sie in den Sehfeldern von zwei oder mehr Kameras erscheinen, erleichtert das Training hinsichtlich derartiger Referenzpunkte das direkte und indirekte Triangulieren der Position dieser Muster und/oder des Gegenstands im 3D-Raum.
  • In der dargestellten Ausführungsform kann ein derartiges Training unter Verwendung gleicher Modelle (zum Beispiel „PatMax“ oder so weiter) zum Trainieren gleicher erwarteter Muster wie zwischen verschiedenen Kameras 24 durchgeführt werden. Dies hat den Vorteil, dass sichergestellt wird, dass die Referenzpunkte (oder Ursprünge) für zur Laufzeit gefundene Muster wie zwischen von diesen verschiedenen Kameras erhaltenen Bildern zusammenfallen.
  • Wo Pose, Sichtwinkel und/oder Hindernisse den Weg ändern, entlang dem verschiedene Kameras 24 gleiche Muster sehen, kann ein derartiges Training die Verwendung verschiedener Modelle (für gleiche Muster) wie zwischen verschiedenen Kameras enthalten. Da verschiedene Modelle dahin tendieren können, verschiedene Referenzpunkte für gleiche Muster zu identifizieren, erlaubt es die veranschaulichte Ausführungsform einer Bedienperson, die Auswahl gleicher Referenzpunkte für gleiche Muster zu trainieren.
  • Dies kann beispielsweise während des Trainingsschritts 32 durch gleichzeitiges Erfassen von Bildern des Musters von mehreren Kameras 24 (um als Vorlage für die Suche in Schritt 34 verwendet zu werden) und anschließendes Leuchten eines Laserzeigers auf den Gegenstand erreicht werden. Aus Bildern, die mit dem Laserbeleuchten erfasst werden, kann der 3D-Ort des Laserpunkts berechnet werden, wodurch zusammenfallende Ursprünge auf allen Bildern der Muster definiert werden (obwohl sie hier bezüglich der Verwendung verschiedener Modelle für das Mustertraining beschrieben ist, kann diese Technik auch in Fällen angewendet werden, in denen gleiche Modelle verwendet werden). Zu diesem Zweck kann unter Verwendung der Bilder mit und ohne den überflüssigen Laserzeigerfleck eine Autoschwellwertverarbeitung und eine Klecksanalyse ablaufen gelassen werden, um die Mitte des Flecks in allen Bildern zu finden und so konsistente zusammenfallende Ursprünge zu bestimmen. Wie hier an anderer Stelle diskutiert ist, kann die Triangulation eingesetzt werden, um die 3D-Position des Flecks zu erhalten, wodurch die Verwendung dieser Technik für mehrere Muster auf dem (Trainings-)Gegenstand gestattet ist, z. B. vorausgesetzt, dass es sich nicht bewegt.
  • Dies kann beispielsweise während des Trainingsschritts 32 durch gleichzeitiges Erfassen von Bildern des Musters von mehreren Kameras 24 (um als Vorlage für die Suche in Schritt 34 verwendet zu werden) und anschließendes Leuchten eines Laserzeigers auf den Gegenstand erreicht werden. Aus Bildern, die mit dem Laserbeleuchten erfasst werden, kann der 3D-Ort des Laserpunkts berechnet werden, wodurch zusammenfallende Ursprünge auf allen Bildern der Muster definiert werden (obwohl sie hier bezüglich der Verwendung verschiedener Modelle für das Mustertraining beschrieben ist, kann diese Technik auch in Fällen angewendet werden, in denen gleiche Modelle verwendet werden). Zu diesem Zweck kann unter Verwendung der Bilder mit und ohne den überflüssigen Laserzeigerfleck eine Autoschwellwertverarbeitung und eine Klecksanalyse ablaufen gelassen werden, um die Mitte des Flecks in allen Bildern zu finden und so konsistente zusammenfallende Ursprünge zu bestimmen. Wie hier an anderer Stelle diskutiert ist, kann die Triangulation eingesetzt werden, um die 3D-Position des Flecks zu erhalten, wodurch die Verwendung dieser Technik für mehrere Muster auf dem (Trainings-)Gegenstand gestattet ist, z. B. vorausgesetzt, dass es sich nicht bewegt.
  • Gemäß einer bevorzugten Praxis der Erfindung enthält der Trainingsschritt 32 das Finden eines erwarteten Musters in einem Bild von einer (oder mehreren) Kamera(s) 24 auf der Basis einer vorherigen Identifizierung dieses Musters in einem Bild von einer anderen Kamera. Somit kann beispielsweise, sobald die Bedienperson ein erwartetes Muster in einem von einer Kamera aufgenommenen Bild identifiziert hat, der Trainingsschritt automatisch das Finden des gleichen Musters in Bildern von den anderen Kameras enthalten.
  • Bei bevorzugten Ausführungsformen enthält der Schritt 32 das Erfassen mehrerer Ansichten des Gegenstands für jede Kamera 24, vorzugsweise derart, dass die Ursprünge der auf diesen Gegenständen gefundenen Muster konsistent definiert sind. Zur Berücksichtigung einer möglichen Inkonsistenz zwischen Bildern können diejenigen verwendet werden, die das höchste Abstimmungsergebnis für die Muster erzeugen. Dies hat den Vorteil, dass die Methodologie robuster für das Finden von Teilen in willkürlichen Posen gemacht wird.
  • Wie oben angegeben, ist der Trainingsschritt 32 optional: bei einigen Ausführungsformen der Erfindung wird er in verringerter Kapazität oder überhaupt nicht eingesetzt. Sind beispielsweise die zur Laufzeit erwarteten Muster für eine Suche über ein Klecksmodell anfällig (zum Beispiel eine, die nach hellen Merkmalen sucht), ist kein Mustertraining nötig - obwohl ein Positionstraining der Art, wie sie oben beschrieben ist, immer noch verwendet werden wird. Dies trifft auch, erneut beispielsweise, zu, wenn es sich bei den Mustern um ID-Matrixcodes handelt (oder um andere Muster, deren Erscheinungsbild und/oder Positionen vordefiniert oder anderweitig bekannt sind) und statt der oben diskutierten trainierbaren Muster verwendet werden. Hier werden die 2D-Positionen dieser Codes (oder anderer Muster) aus den Trainingsphasen- oder Laufzeitbildern wahrgenommen, zum Beispiel durch Sehwerkzeuge, die für generische Arten von Merkmalen entworfen wurden, um auf 3D-Orten abzubilden. Solche Umsetzungen der Erfindung sind nützlich, weil industrielle Teile immer ID-Matrixcodes haben können und mehrere trainingslose Sensoren dadurch 3D-Positionen des ID-Matrixcodes ausgeben könnten. Da weiterhin ein ID-Matrixcode ein rechteckiges Gebiet überspannt, könnten alle Sensoren die 2D-Positionen der 4 Ecken ausgeben; wenn ferner die ID-Matrix mit einem bestimmten Prozess gedruckt wird, kann man die 3D-Positionen kennen (aufgrund der gefundenen Größe/des gefundenen Typs des Codes) und die 3D-Pose berechnen.
  • Im Laufzeitschritt 34 trianguliert der Digitaldatenprozessor 22 Orte im 3D-Raum von einem oder mehreren der Muster 42a-42c auf dem Gegenstand 12 auf Basis von pixelbezogenen Positionen von Darstellungen dieser Muster in Laufzeitbildern des Gegenstands 12 und aus den Abbildungen, die während des Kalibrierungsschritts 32 wahrgenommen wurden. Bei der veranschaulichten Ausführungsform werden diese Laufzeitbilder vom Gegenstand 12 durch die Einrichtungen 24 bevorzugt gleichzeitig oder im Wesentlichen gleichzeitig erfasst. In dieser Hinsicht bezieht sich „im Wesentlichen gleichzeitig“ auf eine Bilderfassung, die zeitlich so nahe auftritt, dass die Bewegung des Gegenstands 12, der Einrichtungen 24, des Rahmens 20 oder anderweitig den pixelbezogenen Ort von Mustern in den Laufzeitbildern und/oder daraus bestimmten Abbildungen im Wesentlichen nicht beeinflusst. Eine derartige gleichzeitige Erfassung kann durch Auslösen der Kameras 24 zur gleichen (oder fast gleichen) Zeit oder durch andere Mittel erreicht werden - einschließlich beispielsweise des stroboskopischen Beleuchtens des abgebildeten Gegenstands, während die Verschlüsse der Kamera 24 offen sind.
  • Bei der dargestellten Ausführungsform wird die Positionstriangulation erreicht, indem Musterabstimmung oder andere zweidimensionale Sehwerkzeuge zur Wahrnehmung des pixelbezogenen Orts von Mustern in den Laufzeitbildern und die Abbildungen, die während der Kalibrierungsphase wahrgenommen werden, um die pixelbezogenen Orte dieser Muster in den Sehfeldern der jeweiligen Kamera 24 mit den oben erwähnten 3D-Strahlen, auf denen diese Muster liegen, zu korrelieren, verwendet werden. Beispiele, die solche 2D-Sehwerkzeuge verwenden, beinhalten die oben erwähnten, durch Bezugnahme hier aufgenommenen US-Patente US 6,748,104 B1 , US 6,639,624 B1 , US 6,301,396 B1 , US 6,137,893 A , US 5,978,521 A , US 5,978,080 A , US 5,960,125 A , US 6,856,698 A , US 6,850,646 B1 und US 6,658,145 B1 .
  • Die Triangulation von Musterort kann durch „direkte“ Triangulation erfolgen, wie zum Beispiel dort, wo der Ort eines gegebenen Musters aus dem Schnittpunkt mehrerer 3D-Strahlen (von mehreren Kameras), auf denen dieses Muster liegt, bestimmt wird. Alternativ oder zusätzlich dazu kann die Triangulation „indirekt“ sein, wie dort, wo der Ort eines gegebenen Musters nicht nur aus dem Strahl (oder Strahlen), auf dem/denen dieses Muster liegt, bestimmt wird, sondern auch aus (i) den Strahlen, auf denen die anderen Muster liegen, und (ii) den relativen Orten dieser Muster zueinander (zum Beispiel wie während der Trainingsphase bestimmt) auf dem abgebildeten Gegenstand.
  • Bei der dargestellten Ausführungsform kann die direkte und/oder indirekte Triangulation eine „Anpassung durch die Methode der kleinsten Quadrate“ oder andere solche Methodologien zum Finden von Schnittpunkten (oder nächstliegenden Schnittstellen) wie zwischen oder unter mehreren 3D-Strahlen verwenden (von mehreren Kameras 24), auf welchen (ein oder mehrere) Muster zu liegen scheint oder scheinen. Beispielsweise liegt, wo von zwei oder mehr Kameras 24 erfasste Bilder anzeigen, dass ein gegebenes Muster (und genauer gesagt der anscheinende Ursprung dieses Musters) auf zwei oder mehr Strahlen liegt, eine Methodologie der Anpassung durch die Methode der kleinsten Quadrate verwendet werden, um einen Schnittstellenort dieser Strahlen im 3D-Raum oder einen nächstliegenden Punkt dazu (d. h. einen Punkt im Raum, der diesen Strahlen am nächsten liegt) zu bestimmen. Ebenso kann, wo Bilder von den Kameras 24 Ursprünge für mehrere Muster auf mehreren Strahlen anzeigen, eine Anpassung durch die Methode der kleinsten Quadrate unter Verwendung der Modellpunkte dieser Muster auf dem Objekt verwendet werden, um die wahrscheinlichsten Orte der Muster und/oder des Gegenstands selbst zu bestimmen.
  • Die dargestellte Ausführungsform verwendet einen Optimierer (oder „Löser“), um die Anpassung durch die Methode der kleinsten Quadrate (oder des Effektivwerts) von Strahlen und Mustern zu finden. Bei diesem kann es sich um ein Allzweckwerkzeug des Typs handeln, der auf dem technischen Gebiet erhältlich ist, und/oder er kann in der unten ausführlich beschriebenen Weise betrieben werden. Auf jeden Fall wird während des Laufzeitschritts 34 der Löser mit Definitionen der 3D-Strahlen versorgt, auf denen die Muster (und genauer gesagt die Musterursprünge) liegen, die aus den Laufzeitbildern identifiziert wurden, sowie (wo relevant) der Orte oder relativen Orte der Muster auf dem Gegenstand.
  • In der Regel definieren diese Informationen ein übereingeschränktes System (d. h. mehr Informationen werden mittels Strahlendefinitionen und relativen Musterorten auf dem Gegenstand geliefert, als nötig ist, um die tatsächlichen Orte zu erschließen), eine Tatsache, aus der das veranschaulichte System zu Zwecken der Robustheit Kapital schlägt. Somit kann beispielsweise der Laufzeitschritt 34 die Gegenstandpose bestimmen, zum Beispiel sogar dort, wo Muster aus dem Gegenstand oder seinem Laufzeitbild fehlen (wie zum Beispiel dort, wo ein Muster für den Blick von einer oder mehr Kameras verdeckt ist oder wo Beleuchtung oder andere Bedingungen eine rechtzeitige Erfassung eines Musterbilds nicht erlauben). Beispielsweise kann der Laufzeitschritt 34 das Probieren von Teilmengen der Musterursprünge (und genauer gesagt Teilmengen der Orte, die den Musterursprüngen entsprechen), die von den Erfassungseinrichtungen 24 gefunden wurden, enthalten, um den Effektivwert („Root Mean Square“ - RMS)-Fehler der Anpassung zwischen den Strahlen und den Modellpunkten oder die Triangulation der Strahlen zu minimieren. Wenn eine der Teilmengen eine niedrigere Summe der Fehlerquadrate aufweist, kann statt aller Musterursprünge diese Teilmenge für die Positionstriangulation verwendet werden.
  • In der Regel definiert diese Information ein übereingeschränktes System (d. h. mehr Informationen werden mittels Strahlendefinitionen und relativen Musterorten auf dem Gegenstand geliefert, als nötig ist, um die tatsächlichen Orte zu erschließen), eine Tatsache, aus dem das veranschaulichte System zu Zwecken der Robustheit Kapital schlägt. Somit kann beispielsweise der Laufzeitschritt 34 die Gegenstandspose bestimmen, zum Beispiel sogar dann, wenn bestimmte Muster absichtlich aus der Überlegung weggelassen werden (zum Beispiel, um eine Position eines Musters zu inspizieren/validieren, indem sie mit der von den anderen gefundenen Mustern vorhergesagten Position verglichen wird).
  • Nach einem weiteren Beispiel kann der Laufzeitschritt 34 das Probieren von Teilmengen der Musterursprünge (und genauer gesagt Teilmengen der Orte, die Musterursprüngen entsprechen) enthalten, die von den Erfassungseinrichtungen 24 gefunden wurden, um den Effektivwert (RMS)-Fehler der Anpassung zwischen den Strahlen und den Modellpunkten oder die Triangulation der Strahlen zu minimieren. Dann kann der Schritt die 3D-Position der Muster extrapolieren, die nicht in der Teilmenge enthalten waren (d. h. die absichtlich ausgelassen wurden, wie oben erwähnt), und die 2D-Bildpositionen in ihren jeweiligen Kameras vorhersagen. Die vorhergesagte Bildposition kann mit der tatsächlichen gemessenen Bildposition verglichen werden: Wenn der Abstand zwischen der vorhergesagten Bildposition und der tatsächlich gemessenen Bildposition eine benutzerspezifizierte Abstandstoleranz überschreitet, dann kann das System eine geeignete Warnung oder eine andere Benachrichtigung erzeugen. Alternativ oder zusätzlich dazu können die extrapolierten 3D-Positionen der weggelassenen Muster mit 3D-Positionen, die durch Triangulieren bestimmt wurden, verglichen werden; erneut kann, wo der Abstand zwischen extrapolierten (vorhergesagten) und tatsächlichen Positionen unterschiedlich ist, der Laufzeitschritt 34 das Erzeugen einer geeigneten Warnung oder einer anderen Benachrichtigung enthalten.
  • Um die Mustererkennung während sowohl der Trainingsphase als auch der Laufzeitphase zu beschleunigen, kann die veranschaulichte Ausführungsform die gefundene Position eines Musters zur Begrenzung der Such-Freiheitsgrade für das andere Muster ausnutzen. Wenn zum Beispiel eine erste Kamera 24 das Muster bei 15 Grad findet und sich eine andere Kamera ungefähr in derselben Orientierung wie die erste Kamera befindet, braucht sie nur nach dem Muster bei den Orientierungen 15 +/-10 Grad zu suchen. Zusätzlich weiß man, wenn die Position des Ursprungs von einer Kamera gegeben ist, dass der Ursprung entlang eines 3D-Strahls liegen wird; dadurch können wir diesen Strahl auf das Sehfeld der zweiten Kamera projizieren und nur nach dem Muster entlang dieser Linie suchen.
  • Wenn zwei Muster miteinander verwechselbar sind (d. h. es gibt zwei Fälle, die dem Muster im Sehfeld der Kamera ähnlich sind), kann die veranschaulichte Ausführungsform alle der verschiedenen möglichen Entsprechungen ausprobieren. Wenn zum Beispiel die Technologie verwendet wird, die in den oben erwähnten, durch Bezugnahme hier aufgenommenen US-Patenten Nr. US 6,856,698 A mit dem Titel „Fast high-accuracy multi-dimensional pattern localization“, US 6,850,646 B1 mit dem Titel „Fast high-accuracy multi-dimensional pattern inspection“ und US 6,658,145 B1 mit dem Titel „Fast high-accuracy multi-dimensional pattern inspection“ beschrieben ist, sind beispielsweise Muster wie die Buchstabenfolgen „P“, „ST“, „It“ und „Notes“ (von einer POST-IT®-Notes-Aufschrift) alle unterschiedlich, also weiß man, wenn eine Übereinstimmung gefunden wird, dass es eine korrekte Übereinstimmung ist.
  • Alternativ dazu kann das als „Blob“- bzw. „Klecks“-Analyse bekannte Maschinensehwerkzeug verwendet werden, um Muster zu finden (zum Beispiel, wenn es sich um dunkle Löcher handelt). In diesem Fall könnte die Hypothese aufgestellt werden, dass Klecks #1 dem 3D-Modellpunkt 1 und Klecks #2 dem 3D-Modellpunkt 2 usw. entspricht. Wenn dies nicht funktioniert, dann kann die Analyse zur nächsten Hypothese fortschreiten: dass Klecks #2 dem 3D-Modellpunkt #2 und Klecks #1 dem 3D-Modellpunkt #1 entspricht.
  • Ein umfassenderes Verständnis des Triangulationsprozesses der veranschaulichten Ausführungsform kann aus der folgenden Diskussion verstanden werden.
  • Um n 3D-Strahlen zu schneiden (d. h. um den Punkt zu finden, der den Summenquadratabstand zu n 3D-Strahlen minimiert), wird zunächst jeder Strahl als zwei separate orthogonale Ebenen charakterisiert (da der Quadratabstand von einem Punkt zu einem Strahl die Summe der Quadratabstände des Punkts zu zwei diesen Strahl schneidenden orthogonalen Ebenen ist). Dies ist in dem folgenden C++-Code beispielhaft dargestellt:
 statte vold solveMlnlmizeSquareErrorEquatlons(
                                         const cmStd vector<cc3Vect> &eqs,
                                         const cmStd vector<double> &val,
                                         cc3Vect &ans,
                                         double &rmsError)
 {
  int slze = eqs.sfze();
  assert(slze==val.size();
  ccNMMetrix func(size,3);
  ccNMMatrix vals(size,1);
  Int l;
  for (l = 0; l < size; ++i)
 {
   func.element(i,0,eqs[i].x());
   func.element(i,1,eqs[i].y());
   func.element(i,2,eqsp[i].z());
   vals.element(i,0,val[i]);
 }
  ccNMMatrix func2 = func.Tmultiply(func);
  ccNMMatrlx vals2 = func.Tmultfply(vals);

  double cnum;
  ccNMMatrix result =
   ccNMMatrix::solve (func2, vals2,truer/*symmetric*/,cnum,HUGE_VAL);
  // throw In degenerate cases
  If (func2.conditionNumber(false) > 1e12)
   throw ccMathError::Singular();

  ans = cc3Vert(result.element(0,0),
         result.element(1,0),
         result.element(2,0));
  double sumSqError = 0;
  for (i = 0; i < size; ++i)
  {
   double error = eqs[i].dot(ans)-val[i];
   sumSqError += error*error;
  }
 rmsError = cfSqrt(sumSqError/size);
 {
 void cfComputePerpendlculars(const cc3Vect &start1,
                  const cc3Vect &end1,
                  cc3Vect &perp1,
                  cc3Vect &perp2) 
 {

   cc3Vect diff = end1 - start1;
   cc3Vect axes[3] = {cc3Vect(1,0,0),
                  cc3Vect(0,1,0),
                  cc3Vect(0,0,1)};
   cc3Vect crosses[3];
   double tens[3];
   int i;
   for (l = 0; l < 3; ++i)
    crosses[i] = dlff.cross(axes[i]);
   for (l = 0; l < 3; ++l)
    lens[i] = crosses[i].dot(crosses[i]);
   int j;
  for (i = 0; i < 2; ++i)
    for (j = 1+1; j < 3; ++j)
     if (lens[i] < lens[j]
     {
      double tmp = lens[i];
      lens[i] = lene[j];
      lens[j] = tmp;
      cc3Vect cross = crosses[i];
      crosses[i] = crosses[i];
      crosses[i] = cross;
     }
  perp1 = crosses[0] * 1./lens[0];
  perp2 = crosses[1] * 1./lens[1];
 }

 static void IntersectLinesInThreeSpace
 (const cmStd vector<cc3DLineSeg> &segs,
 cc3Vect &Intersection,
 double &rmsError)
{
  // Find point which minimizes total squared error between
  // segs.size()*2 planes
  int size = segs.size();
  cmStd vector<cc3Vect> eqs(size*2);
  cmStd vector<double> vals(size*2);
  int i;
  for (l = 0; l < size; ++i)
  {
   cfComputePerpendteulars(segs[i].p1(),segs[i].p2(),eqs[i*2],eqs[i*2+1]);
   vals[i*2] = segs[l].p1().dot(eqs[i*2]);
   vals[i*2+1] = segs[i].p1().dot(eqs[l*2+1]);
  }
  solveMlnimizeSquareErrorEquationsf[eqs.vals.intersection.rmsError);
 }
  • Um nach der Pose aufzulösen, die am besten die 3D-Punkte auf die entsprechenden 3D-Strahlen abbildet, kann gesagt werden, dass die folgenden Gleichungen verwendet werden (die im Maple-Mathematik-Paket ausgedrückt sind, das von Maplesoft, einem Unternehmensbereich von Waterloo Maple, im Handel erhältlich ist), die zur Erstellung eines optimierten C-Codes verwendet werden.
  • Der Ansatz löst nach der Pose auf (die hinsichtlich der Variablen a, b, c, d, tx, ty, tz ausgedrückt ist), die die Summe der Fehlerquadrate zwischen Punkten p (die als x, y, z ausgedrückt sind) und Ebenen, die als (px, py, pz, pt) ausgedrückt sind, minimiert. Es ist zu beachten, dass jeder 3D-Strahl zwei solchen Ebeneneinschränkungen entspricht. Der Ansatz berechnet die Summe der Fehlerquadrate durch Aufaddieren der Koeffizienten der algebraischen Fehlerfunktion. Dann löst der Ansatz nach dem optimalen a, b, c, d, tx, ty, tz unter Verwendung der Gradientenabnahme auf. Man beachte, dass man, da es 7 Variablen (a, b, c, d, tx, ty, tz) und nur 6 Freiheitsgrade gibt, 4 verschiedene Fälle ausprobiert - wo a auf 1 gesetzt wird und die Variablen b, c, d sind; wo b auf 1 gesetzt wird und die Variablen a, c, d sind; wo c auf 1 gesetzt wird und die Variablen a, b, d sind; und wo d auf 1 gesetzt wird und die Variablen a, b, c sind.
  •  quatRot :=
      matrix(4,4,
        [[a*a+b*b-b*c-d*d,2*b*d-2*a*d,2*a*c+2*b*d,tx],
        [2*a*d+2*b*c,a*a-b+c*c-d*d,2*c*d-2*a*b,ty],
        [2*b*d-2*a*c,2*a*b+2*c*d,a*a-b*b-c*c+d*d,tz],
        [0,0,0,a*a+b*b+c*c+d*d]]);
    
     val := matrix(1,4,[x,y,z,1]);
    
     dot := matrix(1,4,[px,py,pz,pt]);
    
     pos := multiply(quatRot,transpose(val));
    
     unit := (a*a+b*b+c*c+d*d);
    
     weightMat := multlply(dot,pos);
     weight := weightMat[1,1]/unit;
    
     welghtSq := expand(weight*weight);
    
     weightSqDA := slmplify(expand(diff(weightSq,a)*unit*unit));
     welghtSqDB := simpllfy(expand(diff(welghtSq,b)*unit*unit));
     weightSqDC := simpllfy(expand(diff(weightSq,c)*unit*unit));
     weightSqDD = simpllfy(expand(diff(weightSq,d)*unit*unit));
     weightSqDTX := simplify(expand(diff(weightSq,tx)*unit*unit));
     weightSqDTY := simplify(expand(diff(weightSq,ty)*unit*unit));
     weightSqDTZ := simplify(expand(diff(weightSq.tz)*unit*unit));
  • Das zuvor Gesagte wird weiterhin angesichts des Folgenden verstanden, in dem GenericPoly() eine Funktion ist, die die Koeffizienten einer Funktion extrahiert. Somit ist, wenn die Funktion x*x+2*x*y+y*y ist, die generische Funktion f0x2y0*x*x+f0x1y1*x*y+f0x0y2*y*y, wo f0x2y0 = 1, f0x1y1 = 2, f0x0y2 = 1. GenericPoly() ist in MARS enthalten, einem öffentlich und frei erhältlichen Maple Matlab Resultat-Löser-System, zum Beispiel von www.cs.unc.edu/-geom/MARS (nichteinschränkendes Beispiel).
  •  read('genericpoly.map ');
     genPoly:=
     GenericPoly(expand(eval(weightMat[1,1]*weightMat(1,1[)),
     array(1..7,[a,b,c,d,tx,ty,tz]),'f');
    
     genPolyDA := simpllfy(expand(unit*diff(eval(genPoly{1]),a)-eval(genPoly[1])*4*a));
     genPolyDB := simplify(expand(unit*diff(eval(genPoly[1]),b)-eval(genPoly[1])*4*b));
     genPolyDC := simpllfy(expand(unit*diff(eval(genPoly[1]),c)-val(genPolyp[1]*4*c));
     genPolyDD := simplity(expand(unit*diff(eval(genPoly[1]),d)-eval(genPoly[1])*4*d));
     genPolyDTX := simpllfy(expand(diff(eval(genPoly[1]),tx)));
     genPolyDTY := simpllfy(expand(diff(eval(genPoly[1]),ty)));
     genPolyDTZ := simplffy(expand(diff(eval(genPoly[1]),tz)));
    
     C(genPolyDA);
     C(genPolyDB);
     C(genPolyDC);
     C(genPolyDD);
     C(genPolyDTX);
     C(genPolyDTY);
     C(genPolyDTZ);
  • (Man beachte, dass, weil die Fehlerfunktion nicht nur derivative(weightMat*weightMat) ist, sondern tatsächlich (a*a+b*b+c*c+d*d)*derivative(weightMat*weightMat) minus 4*a*weightMat*weightMat (zum Berechnen der Teilableitung bezüglich a) (die geschrieben ist als: unit*diff(eval(genPoly[1]),a)-eval(genPoly[1])*4*a));), weil die Kettenregel für Quotienten: deriv ( F ( x ) /G ( x ) ) = = ( G ( x ) * F' ( x ) F ( x ) * G' ( x ) ) / ( G ( x ) * G ( x ) ) ,
    Figure DE112010002174B4_0001
    ist zu beachten, dass man das Quadrat des Nenners (im Nenner der Kettenregel für Teilableitungen) für diese Analyse ignorieren kann, da der Nenner (a*a+b*b+c*c+d*d) gleichmäßig auf alle Teilableitungen zutrifft: d ( ( a * a + b * b + c * c + d * d ) 2 ) /da = 4 * a * ( a * a + b * b + c * c + d * d ) ) .
    Figure DE112010002174B4_0002
  • Nach weiterer Erklärung des oben Erwähnten verwenden Verfahren mit numerischer Gradientenabnahme eine Fehlerfunktion, ebenso wie Ableitungen dieser Fehlerfunktion. Die Derivate einer Fehlerfunktion lassen sich numerisch oder symbolisch berechnen. Für numerisch berechnete Derivate kann man einfach eine der Variablen um einen kleinen Betrag ändern und dann die Fehlerfunktion neu berechnen und so die Ableitung numerisch berechnen. Für symbolisch berechnete Ableitungen benötigt man eine der Ableitung entsprechende symbolische Funktion, die in diesem Fall vorliegt, da die die Fehlerfunktion beschreibenden algebraischen Ausdrücke vorliegen, und man kann diese algebraische Fehlerfunktion symbolisch differenzieren.
  • In der veranschaulichten Ausführungsform hält eine C-Datenstruktur alle Koeffizienten für den algebraischen Ausdruck wie folgt:
  • 
      typedef struct ptRayGenericPoly
      {
       double fa0b0c0d0tx0ty0tz2 ;
       double fa0b0c0d0tx0ty1tz1 ;
       double fa0b0c0d0tx0ty2tz0 ;
       double fa0b0c0d0tx1ty0tz1 ;
       double fa0b0c0d0tx1ty1tz0;
       double fa0b0c0d0tx2ty0tz0;
       double fa0b0c0d2tx0ty0tz1 ;
       double fa0b0c0d2tx0ty1tz0 ;
       double fa0b0c0d2tx1ty0tz0 ;
       double fa0b0c0d4tx0ty0tz0 ;
       double fa0b0c1d1tx0ty0tz1 ;
       double fe0b0c1d1tx0ty1 tz0 ;
       double fa0b0c1d1bc1ty0tz0;
       double fa0b0c1d3tx0ty0tz0 ;
       double fa0b0c2d0bctx0tz1 ;
       double fa0b0c2d0bt0ty1tz0 ;
       double fa0b0c2d0tx1ty0tz0 ;
       double fa0b0c2d2tx0ty0tz0 ;
       double fa0b0c3d1tx0ty0tz0 ;
       double fa0b0c4d0tx0ty0tz0 ;
       double fa0b1c0d1tx0ty0tz1 ;
       double fa0b1c0d1tx0ty1tz0 ;
       double fa0b1c0d1tx0ty1tz0 ;
       double fa0b1c0d3tx0ty0tz0 ;
       double fa0b1c1d0tx0ty0tz1 ;
       double fa0b1c1d0tx0ty1tz0 ;
       double fa0b1c1d0tx1ty0tz0 ;
       double fa0b1c1d2tx0ty0tz0 ;
       double fa0b1c2d1tx0ty0tz0;
       double fa0b1c3d0tx0ty0tz0 ;
       double fa0b2c0d0tx0ty0tz1 ;
       double fa0b2c0d0b0ty1tz0 ;
       double fa0b2c0d0tx1ty0tz0;
       double fa0b2c0d2tx0ty0tz0 ;
       double fa0b2c1d1tx0ty0tz0 ;
       double fa0b2c2d0tx0ty0tz0 ;
       double fa0b3c0d1tx0ty0tz0 ;
       double fa0b3c1d0tx0ty0tz0 ;
       double fa0b4c0d0tx0ty0tz0 ; 
       double fa1b0c0d1tx0ty0tz1 ;
       double fa1b0c0d1tx0ty1tz0 ;
       double fa1b0c0d1tx1ty0tz0 ;
       double fa1b0c0d3tx0ty0tz0 ;
       double fa1b0c1d0tx0ty0tz1 ;
       double fa1b0c1d0tx0ty1tz0 ;
       double fa1b0c1d0tx1ty0tz0 ;
       double fa1b0c1d2tx0ty0tz0 ;
       double fa1b0c2d1tx0ty0tz0 ;
       double fa1b0c3d0tx0ty0tz0 ;
       double fa1b1c0d0tx0ty0tz1 ;
       double fa1b1c0d0tx0ty1tz0 ;
       double fa1b1c0d0tx1ty0tz0 ;
       double fa1b1c0d2tx0ty0tz0;
       double fa1b1c1d1tx0ty0tz0 ;
       double fa1b1c2d0tx0ty0tz0 ;
       double fa1b2c0d1tx0ty0tz0 ;
       double fa1b2c1d0tx0ty0tz0 ;
       double fa1b3c0d0tx0ty0tz0 ;
       double fa2b0c0d0tx0ty0tz1 ;
       double fa2b0c0d0tx0ty1tz0 ;
       double fa2b0c0d0tx1ty0tz0 ;
       double fa2b0c0d2tx0ty0tz0 ;
       double fa2b0c1d1tx0ty0tz0 ;
       double fa2b0c2d0tx0ty0tz0 ;
       double fe2b1c0d1tx0ty0tz0 ;
       double fa2b1c1d0tx0ty0tz0 ;
       double fa2b2c0d0tx0ty0tz0 ;
       double fa3b0c0d1tx0ty0tz0 ;
       double fa3b0c1d0tx0ty0tz0 ;
       double fa3b1c0d0tx0ty0tz0 ;
       double fa4b0c0d0tx0ty0tz0 ;
     } ptRayGenerlcPoly;
  • Die veranschaulichte Ausführungsform verwendet auch eine Funktion, die zu den Koeffizienten des algebraischen Ausdrucks (diese Funktionen nehmen als Eingabe einen 3D-Punkt (x, y, z) und eine entsprechende Ebene - charakterisiert durch px, py, pz, pt) Folgendes addiert:
  • 
      vold ptRayGenerlcPoly_addToVals{ptRayGenericPoly*vals,
                          double x,
                          double y,
                          double z,
                          double px,
                          double py,
                          double pz,
                          double pt);
  • Die veranschaulichte Ausführungsform verwendet auch eine Funktion, die den Fehler an einer gegebenen Pose (a, b, c, d, tx, ty, tz) berechnet, wo (a, b, c, d) eine Quaternion-Darstellung der 3D-Rotation (rollen, nicken, gieren) ist und (tx, ty, tz) die Translation sind:
  • double ptRayGenericPoly_eval(const ptRayGeneriePoly *vals,
    
    
    
    
    
    
                           double a,
                           double b,
                           double c,
                           double d,
                           double tx,
                           double ty,
                           double tz);
  • Die veranschaulichte Ausführungsform stellt auch Funktionen bereit, die die Ableitungen berechnen:
  • double ptRayGenericPoly_DA(const ptRayGenericPoly *vals,
                        double a,
                        double b,
                        double c,
                        double d,
                        double tx,
                        double ty,
                        double tz);
    
      double ptRayGenericPoly_DB(const ptRayGenericPoly *vals,
                        double a,
                        double b,
                        double c,
                        double d,
                        double tx,
                        double ty,
                        double tz);
    
      double ptRayGenericPoly_DC(const ptRayGenericPoly *vals,
                        double a,
                        double b,
                        double c,
                        double d,
                        double tx,
                        double ty,
                        double tz);
    
      double ptRayGenericPoly_DD(const ptRayGenericPoly *vals,
                        double a,
                        double b,
                        double c,
                        double d,
                        double tx,
                        double ty,
                        double tz);
    
      double ptRayGenericPoly_PTX(const ptRayGenericPoly *vals,
                        double a,
                        double b,
                        double c,
                        double d,
                        double tx,
                        double ty,
                        double tz); 
      double ptRayGenericPoly_DTY(const ptRayGenericPoly *vals,
                        double a,
                        double b,
                        double c,
                        double d,
                        double tx,
                        double ty,
                        double tz);
    
      double ptRayGenericPoly_DTZ(oonst ptRayGenericPoly *vals,
                        double a,
                        double b,
                        double c,
                        double d,
                        double tx,
                        double ty,
                        double tz);
  • Zum Beispiel kann die Funktion, die zu den Koeffizienten addiert, auf eine Weise ausgedrückt werden, die mit den beispielhaften folgenden Auszügen konsistent ist; die vollständige Funktion ist angesichts der vorliegenden Lehren und dem bereitgestellten Maple-Code offensichtlich:
    Figure DE112010002174B4_0003
  • Es ist zu beachten, dass die Art, wie dies funktioniert, darin besteht, dass die fa...'s die Koeffizienten sind und dass die Namen der Variablen den Grad jedes Monoms kodieren
  • F(e,b,c,d,tx,ty,tz) = fa0b0c0d0tx0ty0tz0+ fa0b0c0d0tx0ty0tz1 * tz + fa0b0c0d0tx0ty0tz2 * tz^2 +
     fa0b0c0d0tx0ty1tz1 * ty * tz + ...
    
     And that you start with a generic zero error function
     fa0b0c0d0tx0ty0tz0 = 0
     fa0b0c0d0tx0ty0tz1 = 0 
    ...
  • Darauf folgend wird ein Aufruf an eine Funktion ptRayGenericPoly_addToVals() für jeden Satz von Punkten, eine Ebene (charakterisiert durch (x, y, z, px, py, pz, pt)) durchgeführt und er akkumuliert die Monom-Koeffizienten zu der Summenfehlerfunktion.
  • Mit Bezug auf den optionalen Schritt 36 in 2 kann das dargestellte System 10 Bilderfassungseinrichtungen 24 rekalibrieren, die aus der Ausrichtung geraten sind, zum Beispiel, wenn eine der Kameras nach der Kalibrierung angestoßen wird. (In dieser Hinsicht versteht es sich, dass es bei der dargestellten Ausführungsform vorzugsweise beabsichtigt ist, dass die Kameras 24 nach der Kalibrierung fixiert und/oder ortsfest bleiben, um während der Kalibrierungsphase bestimmte Abbildungen beizubehalten). Dies kann während der in Schritt 34 durchgeführten Ortstriangulation und möglicherweise während der, die in Schritt 32 durchgeführt wurde, detektiert werden. Zu diesem Zweck können, wenn eine Kamera 24 Bilder erzeugt, in denen die in Laufzeitbildern gefundenen Muster eines Gegenstands, der geprüft wird, an Orten zu liegen scheinen (zum Beispiel, wenn sie auf den 3D-Strahlen für diese Kamera abgebildet sind), die mit Bildern von den anderen Kameras inkonsistent sind und/oder im Wesentlichen nicht übereinstimmen (zum Beispiel, wenn sie unter Verwendung ihrer jeweiligen 3D-Strahlen abgebildet werden), Musterorte, die mit den Bildern von diesen anderen Kameras bestimmt wurden, verwendet werden, um die eine Kamera unter Anwendung derselben Kalibrierungsmethodologie, die oben in Verbindung mit Schritt 30 beschrieben wurde, zu rekalibrieren.
  • In dieser Hinsicht versteht es sich, dass die in Schritt 30 (sowie auch in Schritt 36) bestimmten Abbildungen in zwei separate Effekte zerlegbar sind: Linsenverzerrung, wie etwa Kissenverzerrung und andere Abbildungsfehler, die konstant bleiben, wenn gegen die Kamera 24 gestoßen wird (weil sie nur eine Funktion der Linse ist und weil die Linse zum Beispiel hinsichtlich der CCD, CMOS oder eines anderen Bildsensors festgeklebt werden kann) und die Pose der Kamera 24 in Bezug auf den Arbeitsbereich. Es ist Letzteres - die Pose -, die sich ändert, wenn die Kamera angestoßen wird. In Schritt 36 kann dieser Aspekt der Abbildung, der der Pose der Kamera im Arbeitsbereich zuschreibbar ist, erneut berechnet werden, beispielsweise ohne, dass eine Kalibrierungsplatte nötig ist, da angenommen wird, dass die Linsenverzerrung konstant bleibt.
  • Das veranschaulichte System 10 enthält vorzugsweise ein „Unterbrechungs“-Merkmal, das eine ungebührliche Verzögerung in Fällen verhindert, in denen ein erwartetes Muster nicht in einem Bild, das während der Laufzeitphase 34 erfasst wurde, detektiert wird. In dieser Hinsicht behandelt das System einfach ein Muster, das nicht innerhalb eines vorgegebenen Verzögerungsintervalls (zum Beispiel gesetzt durch die Bedienperson oder anderweitig) detektiert wird, als nicht gefunden und fährt mit der Positionsbestimmung auf der Basis der anderen, gefundenen Muster fort. Dies hat den Vorteil, dass das System 10 bezüglich fehlender Merkmale robuster und in seinem Betrieb zeitgemäßer gemacht wird.
  • Bei zumindest einigen Ausführungsformen kann es ein bestimmter Maschinensehprozess erfordern, oder dadurch optimiert sein, dass ein Systemanwender ein oder mehrere spezifische Gebiete innerhalb erhaltener Bilder eines zu untersuchenden oder analysierenden Teils identifiziert. Zum Beispiel kann ein Systemanwender in dem Fall, dass ein erster Teil überprüft wird, wissen, dass ein Muster von Interesse stets innerhalb eines Sehfelds einer Kamera liegen wird, so dass das Muster in dem oberen linken Viertel von durch die Kamera erzeugten Bildern erscheinen wird. In diesem Fall wäre es zur Beschleunigung des Mustererkennungsprozesses optimal, wenn ein Kameraprozessor die Suche nach dem Muster auf das obere linke Viertel eines erhaltenen Bilds einschränken würde. Wo eine zweite Kamera ebenfalls Bilder von Instanzen des ersten Teils gleichzeitig wie die erste Kamera erhält, kann das Muster dabei stets in dem unteren rechten Viertel des Sehfelds der zweiten Kamera erscheinen, so dass es optimal wäre, wenn ein Prozessor, der Bilder von der zweiten Kamera verarbeitet, die Suche nach dem Muster auf die untere rechte Ecke einschränkt. Wo ein System eine dritte, vierte etc. Kamera enthält, kann ähnlich die Bildverarbeitung für die Mustererkennung optimal auf nur Abschnitte der Kamerabilder eingeschränkt werden.
  • Bei zumindest einigen Ausführungsformen ist es denkbar, dass ein Anwender während eines Trainingsprozesses einen Trainingsvorgang in Bezug auf ein Gebiet von Interesse („Area Of Interest“ - AOI) durchführt, wobei der Anwender, wenn ein ideales Teil innerhalb eines Sehfelds von zwei oder mehr Kameras positioniert ist, per Hand Punkte auf dem Teil identifiziert, die zusammen ein Gebiet von Interesse definieren, das in erhaltenen Bildern geprüft oder analysiert werden sollte. Bilder werden mittels der zwei oder mehr Kameras erhalten, bei denen die Punkte, die durch den Anwender ausgewählt werden, durch die oder den Computer-CPU/Prozessor wahrnehmbar sind (siehe 1). Daraufhin speichert der Prozessor die Koordinaten der ausgewählten Punkte in den erhaltenen Bildern, um separate „Felder von Interesse“ („Fields Of Interest“ - FOIs), die dem Gebiet von Interesse für jede der Kameras entsprechen, zu definieren.
  • Während die Punkte in den separaten Bildern mit den gleichen ausgewählten Punkten auf dem Teil, das abgebildet wird, übereinstimmen, sind die Felder von Interesse (d. h. Abschnitte von Bildern), die den ausgewählten Punkten entsprechen, für jede Kamera unterschiedlich, weil jede Kamera anders in Bezug auf das Teil und die ausgewählten Punkte orientiert ist. So können zum Beispiel, wenn vier ausgewählte Punkte ein Quadrat in einem Bild, das mittels einer ersten Kamera, deren Sehfeld entlang einer ersten Bahn verläuft, erzeugt wird, definieren können, dieselben vier Punkte in einem Bild, das mittels einer zweiten Kamera, deren Sehfeld entlang einer zweiten Bahn verläuft, erzeugt wird, ein Rechteck, Trapez oder anderes Viereck definieren.
  • Es versteht sich, dass dieser AOI-Trainingsvorgang relativ leicht ist und sicherstellt, dass jede Kamera eines Mehrkamera-3D-Systems darauf kalibriert ist, das genau gleiche Gebiet oder den genau gleichen Bereich eines Teils zu prüfen oder zu analysieren. Es versteht sich, dass während eines einzigen AOI-Trainingsvorgangs alle Felder von Interesse der Kameras gleichzeitig trainiert werden können.
  • Mehrere unterschiedliche Verfahren werden für das Anzeigen oder Spezifizieren eines AOIs während des Inbetriebnahmevorgangs in Betracht gezogen. Beispielsweise kann in einigen Fällen ein Systemanwender einen manuellen Laserzeiger 80 zum punktweisen Aufzeigen von ausgewählten Punkten auf einem Teil 12 verwenden. Dabei können die Kameras, wenn ein erster Punkt über den Laserzeiger ausgewählt wird, dahingehend gesteuert werden, gleichzeitige Bilder zu erhalten.
  • In zumindest einigen Fällen kann der manuelle Laserzeiger einen Sender und einen Knopf enthalten, wobei bei Auswahl des Knopfs der Zeigersender ein Signal an einen mit einem Computer 22a (siehe erneut 1) verbundenen Empfänger sendet, das anzeigt, dass diesem Zeitpunkt entsprechende Bilder untersucht werden sollten, um die Orte in den Bildern des laserbeleuchteten Punkts zu identifizieren. In anderen Fällen kann eine Aktivität des Lasers innerhalb einer Serie von erhaltenen Bildern dem Computerprozessor anzeigen, dass ein Punkt ausgewählt worden ist. Zum Beispiel kann der Zeiger 80 an sein und einen Laserstrahl in Dauerleistung erzeugen, aber zweimal aus- und angehen, wenn ein Zeigerknopf ausgewählt wird. In diesem Fall, wenn jede Kamera eine Serie von Bildern in schneller Aufeinanderfolge während des AOI-Trainingsvorgangs erhält, kann der Computerprozessor dazu programmiert sein, den an- und ausgehenden Leuchtpunkt als ein Signal zu erkennen, dass der Punkt ausgewählt worden ist und dass verbundene Bilder überprüft werden sollten, um die Orte innerhalb der Bilder des laserbeleuchteten Punkts zu identifizieren. In noch anderen Fällen kann ein Anwender einfach eine Taste über eine Tastatur 22b auswählen, um anzuzeigen, dass Bilder zu einem speziellen Zeitpunkt analysiert werden sollten, um die Orte eines beleuchteten Punkts in jedem Bild zu identifizieren.
  • Als nächstes kann der Anwender den Zeiger 80 verwenden, um einen zweiten gebietdefinierenden Punkt auszuwählen und die Kameras dazu veranlassen, gleichzeitig Bilder zu erhalten, gefolgt von einer Auswahl eines dritten benötigten Punkts und so weiter. Wenn Bilder einschließlich aller Punkte, die zur Definition des AOIs nötig sind, erfasst worden sind, kann der Computerprozessor FOIs für jede der separaten Kameras für darauffolgende Verwendung identifizieren. Nachdem kameraspezifische FOIs gespeichert worden sind, während eines normalen Betriebes, wenn ein Teil daraufhin abgebildet wird, kann der Prozessor nur die FOIs in Bildern für die spezifischen Kameras analysieren.
  • Während einige Ausführungsformen es erfordern, dass ein Anwender vier Punkte zur Definition von im Allgemeinen rechteckigen AOIs auswählt, können bei zumindest einigen Ausführungsformen je nach Anwenderwunsch mehr oder weniger Punkte verwendet werden, um andere AOI-Formen auszuwählen. Beispielsweise können drei Punkte zum Spezifizieren eines Dreiecks, fünf Punkte für ein Pentagon usw. spezifiziert/ausgewählt werden.
  • Wie bei anderen Beispielen kann eine Laserlichtquelle dazu programmiert sein, schnell einen Laserstrahl zu scannen, unter Ausbildung eines Quadrats (siehe 82 in 1), eines Rechtecks, eines Dreiecks, eines Kreises usw., AOI-Grenze, wo die AOI-Grenze in Richtung einer Fläche, und zum Schneiden einer Fläche, eines Teils 12 gerichtet werden kann, um ein AOI zu definieren. Hier braucht jede Kamera evtl. nur ein einziges Bild des Teils aufnehmen können, und der oder die Kameraprozessor(en) kann oder können dazu programmiert sein, daraus die kameraspezifischen FOIs zu „erlernen“. Hier kann erneut das Signal zur Anzeige, dass ein AOI ausgewählt worden ist, erleichtert werden über ein Senden von Laserzeiger zu Computerprozessor, eine Aktivität, die von dem Computerprozessor erkannt werden kann, wenn ein Zeigerknopf ausgewählt wird (z. B. an- und ausgehen der AOI-Grenze, eine Veränderung der AOI-Grenzintensität, schneller Wechsel von einer AOI-Grenze zu einer Menge grenzendefinierender Punkte usw.), Auswahl eines Computertastaturknopfes usw.
  • Wie bei noch einem anderen Beispiel kann ein Systemanwender während eines AOI-Trainingsvorgangs Aufkleber oder dergleichen auf ein Teil anbringen. Nach Anbringung der Aufkleber zur Definition eines AOIs, werden Bilder über mehrere Kameras erhalten, der Computerprozessor identifiziert die kameraspezifischen FOIs in jedem den Aufkleberorten entsprechenden Bild und verwendet daraufhin die kameraspezifischen FOIs entsprechend.
  • Bei zumindest einigen Ausführungsformen ist es denkbar, dass jede Kamera während eines AOI-Trainingsvorgangs dahingehend wirken kann, mehrere Bilder in schneller Aufeinanderfolge zu erhalten. In diesem Fall kann bei zumindest einigen Ausführungsformen ein Laser zur „Zeichnung“ eines Kastens, Kreises etc., AOI-Grenze um ein AOI verwendet werden, während die Bilder erhalten werden, wo der Computerprozessor dazu programmiert ist, Laserpunktortsinformationen aus den mehreren Bildern für jede Kamera zu verwenden, um kameraspezifische FOIs zu erzeugen.
  • Bei zumindest einigen Ausführungsformen ist es denkbar, dass der Computerprozessor dazu programmiert werden kann, einem Systemanwender während eines AOI-Trainingsvorgangs zumindest etwas Feedback bereitzustellen. Beispielsweise kann in einem Fall, wo ein System drei Kameras enthält und ein Anwender einen Punkt über einen Laserzeiger auswählt, wenn die Kameras Bilder erhalten, aber das Bild oder die Bilder, die mit einer oder mehr der Kameras verbunden sind, zu der von dem Anwender angezeigten Instanz keinen Punkt enthalten, der von dem Laser beleuchtet wird, entweder der Prozessor über einen Piepton oder dergleichen anzeigen, dass ein anderer Punkt ausgewählt werden sollte, oder der Prozessor kann nicht anzeigen, dass der Punkt erfasst wurde (d. h. nur einen Piepton abgeben, wenn Punkte in Bildern für alle Kameras identifiziert wurden), und den Anwender so dazu anregen, einen anderen Punkt auszuwählen. Als weiteres Beispiel, wo die mit zwei von drei Systemkameras verbundenen Bilder dazu verwendet werde können, vier ausgewählte Punkte wahrzunehmen, während mit der dritten Kamera verbundene Bilder nur dazu verwendet werden können, zwei ausgewählte Punkte in gleichzeitig erhaltenen Bildern wahrzunehmen, kann der Prozessor anzeigen, dass der Trainingsprozess nicht erfolgreich war. Als weiteres Beispiel, wo ein Laser dazu verwendet wird, eine AOI-Grenze auf einem Teil zu „zeichnen“, während Kameras Bilder in schneller Aufeinanderfolge aufnehmen, kann der Prozessor dazu programmiert sein, zu erkennen, wenn ein Umriss geschlossen wird (d. h. eine Schneidung tritt auf), und kann die Schließung über einen Piepton oder dergleichen anzeigen. Feedback kann auch optisch über den Computerdisplayschirm 22a stattfinden.
  • Bei zumindest einigen Ausführungsformen kann, zusätzlich zur Verwendung eines AOI-Trainingsvorgangs zur Definition von kameraspezifischen AOIs für spätere Verwendung, ein ähnlicher Trainingsvorgang während einer Muster/Modell-Trainingssitzung verwendet werden, um ein Gebiet/Bereich an einem Teil, für das oder den ein Modellmuster geschaffen werden sollte, anzuzeigen. Beispielsweise kann ein Anwender den Laserzeiger 80 oder dergleichen verwenden, um ein AOI auf einem Teil zu definieren, einschließlich spezifische Merkmale von Interesse, und der Computerprozessor kann dann einen separaten Modellerzeugungsprozess für jedes der kameraspezifischen FOIs, die von dem Anwender spezifiziert wurden, ausführen.
  • Mit Bezug auf 5 ist ein beispielhafter AOI-Trainingsvorgang 50 veranschaulicht. Bei Block 52 beginnt der AOI-Trainingsvorgang. Zum Starten des Vorgangs kann ein Anwender hier über einen Computer 22 (oder über den Laserzeiger 80) anzeigen, dass der Vorgang starten soll (siehe 1). Bei Block 54 zeigt der Anwender AOI-Punkte auf einem Teil (siehe 12 in 1) an, der sich im Sehfeld der Systemkameras 24 befindet. In dem vorliegenden Beispiel werden Punkte zur Definition des AOIs wie in 1 über den Laserzeiger 80 angezeigt, obgleich auch irgendeine andere oben gelehrte Methode oder eine den obigen Lehren gleichwertige Methode verwendet werden kann.
  • Bei Block 56 werden Kameras 24 verwendet, um Bilder des Teils 12 zu erhalten. Bei Block 58 werden die Bilder von dem Computerprozessor untersucht, um die ausgewählten Punkte, die das AOI definieren, zu identifizieren. Bei Block 60 bestimmt der Prozessor, ob die AOI-definierenden Punkte in wenigstens einem mit jeder Kamera verbunden Bild lokalisiert wurden. Wo die AOI-definierenden Punkte nicht alle identifiziert worden sind, wird die Ansteuerung bei Block 54 zurückgereicht, wo der Prozess weiterhin in einer Schleife läuft. Im optimalen Fall kann dem Systemanwender am Block 55 Feedback bereitgestellt werden. Sind einmal alle AOI-definierenden Punkte identifiziert worden, werden bei Block 62 die FOIs für jede Kamera gespeichert und dem Anwender wird bei Block 64 Feedback (z. B. ein Piepton) bereitgestellt, was anzeigt, dass der AOI-Trainingsvorgang für das derzeitige AOI beendet wurde. Wenn ein Anwender ein zweites AOI für den Teil definieren möchte, kann der Prozess 50 wiederholt werden.
  • Claims (18)

    1. Verfahren zum Spezifizieren eines Gebiets von Interesse bei einem 3D-Abbildungssystem, das mehrere Kameras (24) enthält, die mindestens erste und zweite Kameras (24) einschließen, wobei jede Kamera (24) ein Sehfeld aufweist, das entlang einer eigenständigen Kamerabahn verläuft, wobei das Verfahren die folgenden Schritte umfasst: Darstellen eines Teils (12) an einem Ort innerhalb der Sehfelder der mehreren Kameras (24), Anzeigen (32, 54) an dem Teil (12) eines Gebiets von Interesse, das sich im Sehfeld jeder der mehreren Kameras (24) befindet, wobei das Gebiet von Interesse ein ausgewähltes Gebiet von Interesse ist für jede der mehreren Kameras (24): (i) Erfassen (32, 56) mindestens eines Bilds des Teils (12), während des Anzeigens (32, 54) des Gebiets von Interesse auf dem Teil (12) welches sich im Sehfeld jeder der mehreren Kameras (24) befindet und wobei die Gebiet von Interesse ein ausgewähltes Gebiet von Interesse ist, (ii) Identifizieren (32, 58) des ausgewählten Gebiets von Interesse in dem mindestens einem Bild mittels des 3D-Abbildungssystems, wobei das identifizierte ausgewählte Gebiet von Interesse ein kameraspezifisches Feld von Interesse innerhalb des Sehfelds der Kamera (24) ist, das mit dem Gebiet von Interesse in dem mindestens einen Bild verbunden ist, und (iii) Speichern (32, 62) des kameraspezifischen Felds von Interesse mittels des 3D-Abbildungssystems für spätere Verwendung.
    2. Verfahren nach Anspruch 1, wobei der Schritt des Anzeigens (32, 54) eines Gebiets von Interesse an dem Teil (12) das Anzeigen von mindestens drei Punkten an dem Teil (12), die das ausgewählte Gebiet von Interesse definieren, enthält.
    3. Verfahren nach Anspruch 2, wobei der Schritt des Anzeigens von mindestens drei Punkten die Verwendung einer Lasereinrichtung zur sequenziellen Anzeige jedes der mindestens drei Punkte enthält, und wobei der Schritt des Erfassens (32, 56) mindestens eines Bilds das Erfassen eines separaten Bilds für jeden der mindestens drei Punkte enthält.
    4. Verfahren nach Anspruch 3, wobei der Schritt des Identifizierens (32, 58) eines kameraspezifischen Felds von Interesse die Verwendung von mehreren erfassten Bildern zur Identifizierung des kameraspezifischen Felds von Interesse enthält.
    5. Verfahren nach Anspruch 3, ferner enthaltend die folgenden Schritte: für jeden der zumindest drei Punkte, Bestimmen (32, 60), wann der Punkt in mindestens einem von jeder Kamera (24) erfassten Bild identifiziert worden ist, und Anzeigen (64), wann der Punkt in mindestens einem von jeder der Kameras (24) erfassten Bild identifiziert worden ist.
    6. Verfahren nach Anspruch 3, ferner enthaltend die folgenden Schritte: für jeden der zumindest 3 Punkte, Bestimmen (32, 60), wann der Punkt in mindestens einem von mindestens einer Kamera (24) erfassten Bild identifiziert worden ist, während der Punkt in mindestens einem von mindestens einer weiteren Kamera (24) erfassten Bild nicht identifiziert worden ist.
    7. Verfahren nach Anspruch 1, wobei der Schritt des Anzeigens (32, 54) eines Gebiets von Interesse auf dem Teil (12) die Verwendung einer Lasereinrichtung zur Anzeige des Gebiets von Interesse auf der Oberfläche des Teils (12) durch Beleuchtung mindestens eines Abschnitts des Teils (12) mittels eines Laserstrahls enthält.
    8. Verfahren nach Anspruch 7, wobei die Lasereinrichtung einen Knopf enthält, der dazu auswählbar ist, anzuzeigen, dass ein derzeit beleuchteter Abschnitt des Teils (12) mindestens einem Gebiet von Interesse definierenden Informationen entspricht und dass Bilder des Teils (12) zu dem Zeitpunkt, an dem der Knopf gewählt wird, analysiert werden sollten, um Ortsinformationen, die mit dem derzeit beleuchteten Abschnitt des Teils (12) verbunden sind, zu erhalten, wobei das Verfahren weiterhin den Schritt des Überwachens auf eine Anzeige von der Lasereinrichtung enthält.
    9. Verfahren nach Anspruch 8, wobei die Lasereinrichtung dazu programmiert ist, wenn der Knopf gewählt wird, eine Veränderung des Erscheinungsbilds des Beleuchtungsstrahls auf dem Teil (12) zu verursachen, wobei der Schritt des Überwachens auf eine Anzeige von der Lasereinrichtung das Analysieren von Kamerabildern enthält, um die Veränderung des Erscheinungsbilds des Beleuchtungsstrahls auf dem Teil (12) zu identifizieren.
    10. Verfahren nach Anspruch 1, ferner enthaltend die Schritte des Bereitstellens (64) von Feedback an den Systembenutzer, das anzeigt, wann die kameraspezifischen Felder von Interesse für jede der mehreren Kameras (24) identifiziert worden sind.
    11. Verfahren nach Anspruch 2, wobei der Schritt des Erfassens (32, 56) mindestens eines Bilds das Erfassen von Bildern in schneller Folge enthält und wobei der Schritt des Anzeigens von mindestens drei Punkten die Verwendung einer Lasereinrichtung zur unabhängigen Beleuchtung von jedem der drei Punkte enthält.
    12. Verfahren nach Anspruch 11, wobei der Schritt des Anzeigens von mindestens drei Punkten, für jeden Punkt, während die Lasereinrichtung den Punkt beleuchtet, das Anzeigen, dass der beleuchtete Ort einer der Punkte zum Definieren des Gebiets von Interesse ist, enthält.
    13. Verfahren zum Spezifizieren eines Gebiets von Interesse bei einem 3D-Abbildungssystem, das mehrere Kameras (24) enthält, die mindestens erste und zweite Kameras (24) einschließen, wobei jede Kamera (24) ein Sehfeld aufweist, das entlang einer eigenständigen Kamerabahn verläuft, wobei das Verfahren die folgenden Schritte umfasst: Darstellen eines Teils (12) an einem Ort innerhalb der Sehfelder der Kameras (24), Verwenden einer Lasereinrichtung zum sequenziellen und unabhängigen Anzeigen (32, 54) von mehreren Punkten an dem Teil (12), die ein Gebiet von Interesse definieren, wobei das angezeigte Gebiet von Interesse ein ausgewähltes Gebiet von Interesse ist für jede der mehreren Kameras (24): während des Anzeigens (32, 54) der Punkte an dem Teil (12), Erfassen von Bildern des Teils (12) enthaltend die Punkte, die das ausgewählte Gebiet von Interesse definieren, Verwenden der Punkte in mehreren Bildern für jede Kamera (24) mittels des 3D-Abbildungssystems zum Identifizieren des ausgewählten Gebiets von Interesse im Sehfeld der Kamera (24), wobei das identifizierte ausgewählte Gebiet von Interesse im Sehfeld der Kamera (24) ein kameraspezifischen Felds von Interesse, und Speichern des kameraspezifischen Felds von Interesse mittels dem 3D-Abbildungssystems für die jeweilige Kamera (24) in einem Speicher.
    14. System zum Trainieren eines Systems für dreidimensionales Sehen zur Definierung von kameraspezifischen Feldern von Interesse, wo ein ausgewähltes Gebiet von Interesse an einem Teil (12) angezeigt (32, 54) ist, wobei das System Folgendes umfasst: mehrere Kameras (24), wobei jede Kamera (24) ein Sehfeld aufweist und entlang einer eigenständigen Kamerabahn verläuft, so dass das ausgewählte Gebiet von Interesse innerhalb des Sehfelds der Kamera (24) liegt, wobei jede Kamera (24) zum Erhalten von Bildern des Teils (12) in dem Sehfeld der Kamera (24) ist, und einen Maschinensehprozessor, der zur Ausführung der folgenden Schritte programmiert ist: für jede Kamera (24) (i) Erhalten von mit den Kameras (24) erzeugten Bildern, während des Anzeigens (32, 54) des ausgewählten Gebiets von Interesse auf dem Teil (12) (ii) Verwenden mindestens eines der von einer Kamera (24) erzeugten erhaltenen Bilder zur Identifizierung (32, 64) des ausgewählten Gebiets von Interesse im Sehfeld einer Kamera (24), wobei das identifizierte ausgewählte Gebiet des Sehfelds ein kameraspezifisches Feld von Interesse ist und (iii) Speichern (32, 64) eines kameraspezifischen Feld von Interesse.
    15. System nach Anspruch 14, ferner enthaltend eine Laserzeigereinrichtung für das Lenken eines Laserstrahls in Richtung des Teils (12) zur Anzeige (32, 54) eines ausgewählten Gebiets von Interesse an dem Teil (12).
    16. System nach Anspruch 15, wobei die Laserzeigereinrichtung einen Knopf enthält, der dazu auswählbar ist, anzuzeigen, dass ein derzeit beleuchteter Abschnitt des Teils (12) mindestens einem Gebiet von Interesse definierenden Informationen entspricht und dass Bilder des Teils (12) zu dem Zeitpunkt, an dem der Knopf gewählt wird, analysiert werden sollten, um Ortsinformationen, die mit dem derzeit beleuchteten Abschnitt des Teils (12) verbunden sind, zu erhalten, wobei der Prozessor weiterhin dazu programmiert ist, den Schritt des Überwachens auf eine Anzeige von der Laserzeigereinrichtung, dass Bilder analysiert werden sollten, auszuführen.
    17. System nach Anspruch 16, wobei die Laserzeigereinrichtung dazu programmiert ist, wenn der Knopf gewählt wird, eine Veränderung des Erscheinungsbilds des Beleuchtungsstrahls auf dem Teil (12) zu verursachen, wobei der Schritt des Überwachens auf eine Anzeige von der Laserzeigereinrichtung das Analysieren von Kamerabildern enthält, um die Veränderung des Erscheinungsbilds des Beleuchtungsstrahls auf dem Teil (12) zu identifizieren.
    18. System nach Anspruch 16, wobei die Laserzeigereinrichtung einen Sender enthält, der ein Signal sendet, wenn der Knopf gewählt wird.
    DE112010002174.0T 2009-05-29 2010-05-26 Verfahren und Vorrichtung für ein praktisches 3D-Sehsystem Active DE112010002174B4 (de)

    Applications Claiming Priority (3)

    Application Number Priority Date Filing Date Title
    US12/474,778 2009-05-29
    US12/474,778 US9533418B2 (en) 2009-05-29 2009-05-29 Methods and apparatus for practical 3D vision system
    PCT/US2010/036171 WO2010138565A2 (en) 2009-05-29 2010-05-26 Methods and apparatus for practical 3d vision system

    Publications (2)

    Publication Number Publication Date
    DE112010002174T5 DE112010002174T5 (de) 2012-10-04
    DE112010002174B4 true DE112010002174B4 (de) 2020-01-02

    Family

    ID=42671161

    Family Applications (1)

    Application Number Title Priority Date Filing Date
    DE112010002174.0T Active DE112010002174B4 (de) 2009-05-29 2010-05-26 Verfahren und Vorrichtung für ein praktisches 3D-Sehsystem

    Country Status (5)

    Country Link
    US (1) US9533418B2 (de)
    JP (2) JP5922572B2 (de)
    CN (1) CN102762344B (de)
    DE (1) DE112010002174B4 (de)
    WO (1) WO2010138565A2 (de)

    Families Citing this family (40)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US7957554B1 (en) 2002-12-31 2011-06-07 Cognex Technology And Investment Corporation Method and apparatus for human interface to a machine vision system
    US20110199491A1 (en) * 2008-10-28 2011-08-18 Takashi Jikihira Calibration index determination device, calibration device, calibration performance evaluation device, system, method, and program
    US9533418B2 (en) * 2009-05-29 2017-01-03 Cognex Corporation Methods and apparatus for practical 3D vision system
    JP5631086B2 (ja) * 2010-07-12 2014-11-26 キヤノン株式会社 情報処理装置及びその制御方法、プログラム
    CN102467756B (zh) * 2010-10-29 2015-11-25 国际商业机器公司 用于三维场景的透视方法及装置
    WO2013166022A2 (en) * 2012-04-30 2013-11-07 Cryoxtract Instruments, Llc Machine vision system for frozen aliquotter for biological samples
    US9251582B2 (en) * 2012-12-31 2016-02-02 General Electric Company Methods and systems for enhanced automated visual inspection of a physical asset
    US9410980B2 (en) * 2013-02-20 2016-08-09 Toyota Motor Engineering & Manufacturing North America, Inc. Work monitoring system
    US9233470B1 (en) * 2013-03-15 2016-01-12 Industrial Perception, Inc. Determining a virtual representation of an environment by projecting texture patterns
    CN103707300A (zh) * 2013-12-20 2014-04-09 上海理工大学 机械手装置
    TWI520100B (zh) * 2014-03-17 2016-02-01 緯創資通股份有限公司 自由空間定位方法及系統
    JP6642968B2 (ja) * 2014-03-20 2020-02-12 キヤノン株式会社 情報処理装置、情報処理方法、プログラム
    CN103925877A (zh) * 2014-04-03 2014-07-16 东莞市天勤仪器有限公司 多镜头尺寸快速测量设备
    CN104266587B (zh) * 2014-09-22 2017-04-12 电子科技大学 一种三维测量系统及获得真实3d纹理点云数据方法
    EP3278304B1 (de) 2015-03-30 2022-09-07 Volvo Construction Equipment AB System und verfahren zur bestimmung des materialbeladungszustands einer schaufel einer materialbewegungsmaschine
    US9967523B2 (en) * 2015-12-16 2018-05-08 General Electric Company Locating systems and methods for components
    CN105444697A (zh) * 2015-12-31 2016-03-30 河南科达东大国际工程有限公司 阳极炭块外形测量系统
    DE102016201736B3 (de) 2016-02-04 2017-03-30 Volkswagen Aktiengesellschaft System und Verfahren zum Bestücken eines mindestens einen Steckplatz aufweisenden Gebindes
    US10577081B2 (en) * 2016-03-24 2020-03-03 Intel Corporation Proactive vehicle control systems and methods
    US9940721B2 (en) * 2016-06-10 2018-04-10 Hand Held Products, Inc. Scene change detection in a dimensioner
    CN108000499B (zh) * 2016-10-27 2020-07-31 达明机器人股份有限公司 机器人视觉坐标的编程方法
    CN110291554B (zh) * 2017-02-03 2022-06-03 本杰明·摩尔公司 协助消费者选择颜色的自主系统
    CN107650122B (zh) * 2017-07-31 2019-11-05 宁夏巨能机器人股份有限公司 一种基于3d视觉识别的机器人手爪定位系统及其定位方法
    DE102017213362A1 (de) * 2017-08-02 2019-02-07 Siemens Aktiengesellschaft Bewerten einer Kalibrierung eines Sensorsystems
    DE102017123576A1 (de) * 2017-10-10 2019-04-11 Thermodyne Gmbh Verfahren und System zur Konturdatenermittlung und Herstellung eines Formkörpers und Verarbeitungseinheit
    DE102017123577A1 (de) * 2017-10-10 2019-04-11 Thermodyne Gmbh Verfahren und System zur Konturdatenermittlung und Herstellung eines Formkörpers und Verarbeitungseinrichtung
    CN107823883B (zh) * 2017-11-21 2020-12-29 河南黄烨科技有限公司 基于图像识别和激光定位的瞄准点屏幕坐标获取方法
    JP6646034B2 (ja) * 2017-12-14 2020-02-14 ファナック株式会社 ロボットシステム
    GB201804194D0 (en) * 2018-03-15 2018-05-02 Blue Vision Labs Uk Ltd Urban Environmrnt labeling
    US20190314995A1 (en) * 2018-04-12 2019-10-17 Aeolus Robotics Corporation Limited Robot and method for controlling the same
    WO2020142495A1 (en) * 2018-12-31 2020-07-09 Abb Schweiz Ag Multiple robot and/or positioner object learning system and method
    CN111723598A (zh) * 2019-03-18 2020-09-29 北京邦天信息技术有限公司 机器视觉系统及其实现方法
    JP6785931B1 (ja) * 2019-08-30 2020-11-18 Dmg森精機株式会社 生産システム
    US11927438B2 (en) * 2020-01-02 2024-03-12 The Boeing Company Methods and systems for calibrating fiducial markers relative to an object
    KR102118125B1 (ko) * 2020-01-15 2020-06-09 주식회사 사라다 레이더와 카메라를 이용한 영상 관제 장치 및 방법
    CN116648727A (zh) * 2021-01-19 2023-08-25 谷歌有限责任公司 用于相机标定的交叉光谱特征映射
    CN112797900B (zh) * 2021-04-07 2021-07-06 中科慧远视觉技术(北京)有限公司 多相机板材尺寸测量方法
    CN113415087B (zh) * 2021-06-21 2022-12-23 天津大学 印章式柔性传感器原位制造装置
    CN113554644B (zh) * 2021-08-17 2022-08-09 湖南金烽信息科技有限公司 一种基于卷积神经网络的农产品身份识别及数量盘点系统
    CN116100562B (zh) * 2023-04-11 2023-06-09 四川大学 多机器人协同上下料的视觉引导方法及系统

    Citations (16)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    JPH1123262A (ja) 1997-07-09 1999-01-29 Nekusuta:Kk 三次元位置計測システム
    US5960125A (en) 1996-11-21 1999-09-28 Cognex Corporation Nonfeedback-based machine vision method for determining a calibration relationship between a camera and a moveable object
    US5978521A (en) 1997-09-25 1999-11-02 Cognex Corporation Machine vision methods using feedback to determine calibration locations of multiple cameras that image a common object
    US5978080A (en) 1997-09-25 1999-11-02 Cognex Corporation Machine vision methods using feedback to determine an orientation, pixel width and pixel height of a field of view
    JP2000205821A (ja) 1999-01-07 2000-07-28 Nec Corp 三次元形状計測装置及びその三次元形状計測方法
    US6137893A (en) 1996-10-07 2000-10-24 Cognex Corporation Machine vision calibration targets and methods of determining their location and orientation in an image
    US6639624B1 (en) 1999-12-30 2003-10-28 Cognex Corporation Machine vision methods for inspection of leaded components
    US6658145B1 (en) 1997-12-31 2003-12-02 Cognex Corporation Fast high-accuracy multi-dimensional pattern inspection
    US6728582B1 (en) 2000-12-15 2004-04-27 Cognex Corporation System and method for determining the position of an object in three dimensions using a machine vision system with two cameras
    US6748104B1 (en) 2000-03-24 2004-06-08 Cognex Corporation Methods and apparatus for machine vision inspection using single and multiple templates or patterns
    US6771808B1 (en) 2000-12-15 2004-08-03 Cognex Corporation System and method for registering patterns transformed in six degrees of freedom using machine vision
    US6850646B1 (en) 1997-12-31 2005-02-01 Cognex Corporation Fast high-accuracy multi-dimensional pattern inspection
    US6856698B1 (en) 1997-11-26 2005-02-15 Cognex Corporation Fast high-accuracy multi-dimensional pattern localization
    WO2006005187A1 (en) 2004-07-09 2006-01-19 Parham Aarabi Interactive three-dimensional scene-searching, image retrieval and object localization
    DE112006002674T5 (de) 2005-10-07 2008-09-11 Cognex Corp., Natick Verfahren und Vorrichtungen für praktisches 3D-Sichtigkeitssystem
    US20080279446A1 (en) 2002-05-21 2008-11-13 University Of Kentucky Research Foundation System and technique for retrieving depth information about a surface by projecting a composite image of modulated light patterns

    Family Cites Families (58)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    FR2598019B1 (fr) 1986-04-25 1992-09-11 Thomson Csf Procede d'utilisation d'une matrice photosensible a transfert de charge, et matrice photosensible ainsi utilisee
    FR2604320B1 (fr) 1986-09-19 1988-11-04 Thomson Csf Systeme de prise de vues en videographie rapide utilisant un capteur optique matriciel a transfert de charges
    FR2631188A1 (fr) 1988-05-03 1989-11-10 Thomson Csf Photodetecteur matriciel a transfert de charges avec dispositif integre de filtrage de charges
    FR2711824B1 (fr) 1993-10-21 1996-01-05 Recif Sa Procédés et dispositifs d'identification de caractères inscrits sur des substrats.
    JPH08128966A (ja) * 1994-10-31 1996-05-21 Taiyo Elex Kk 撮像式検査装置
    JPH08201021A (ja) 1995-01-23 1996-08-09 Mazda Motor Corp キャリブレーション方法
    US5742037A (en) 1996-03-07 1998-04-21 Cognex Corp. Method and apparatus for high speed identification of objects having an identifying feature
    US5978502A (en) 1996-04-01 1999-11-02 Cognex Corporation Machine vision methods for determining characteristics of three-dimensional objects
    US5859924A (en) 1996-07-12 1999-01-12 Robotic Vision Systems, Inc. Method and system for measuring object features
    US5918196A (en) 1996-11-29 1999-06-29 Cognex Corporation Vision system for analyzing solid-of-revolution radius profile
    US6005965A (en) 1997-04-07 1999-12-21 Komatsu Ltd. Inspection apparatus for semiconductor packages
    US6044530A (en) 1997-10-02 2000-04-04 Stanley Fastening Systems, L.P. Slotted clip and method
    US6173070B1 (en) 1997-12-30 2001-01-09 Cognex Corporation Machine vision method using search models to find features in three dimensional images
    US6352517B1 (en) * 1998-06-02 2002-03-05 Stephen Thomas Flock Optical monitor of anatomical movement and uses thereof
    US6850656B1 (en) 1998-10-07 2005-02-01 Ecole Polytechnique Federale De Lausanne Method and apparatus for measuring locally and superficially the scattering and absorption properties of turbid media
    US7068825B2 (en) 1999-03-08 2006-06-27 Orametrix, Inc. Scanning system and calibration method for capturing precise three-dimensional information of objects
    JP2000269286A (ja) * 1999-03-16 2000-09-29 Toshiba Microelectronics Corp 半導体基板の欠陥位置特定方法
    US6619406B1 (en) * 1999-07-14 2003-09-16 Cyra Technologies, Inc. Advanced applications for 3-D autoscanning LIDAR system
    US6304050B1 (en) * 1999-07-19 2001-10-16 Steven B. Skaar Means and method of robot control relative to an arbitrary surface using camera-space manipulation
    US6166811A (en) 1999-08-12 2000-12-26 Perceptron, Inc. Robot-based gauging system for determining three-dimensional measurement data
    US6594623B1 (en) 1999-11-12 2003-07-15 Cognex Technology And Investment Corporation Determining three-dimensional orientation of objects
    US6701005B1 (en) 2000-04-29 2004-03-02 Cognex Corporation Method and apparatus for three-dimensional object segmentation
    US7414732B2 (en) 2000-05-16 2008-08-19 Steinbichler Optotechnik Gmbh Method and device for determining the 3D profile of an object
    US6718074B1 (en) 2000-06-02 2004-04-06 Cognex Corporation Method and apparatus for inspection for under-resolved features in digital images
    US6624899B1 (en) 2000-06-29 2003-09-23 Schmitt Measurement Systems, Inc. Triangulation displacement sensor
    US7058204B2 (en) * 2000-10-03 2006-06-06 Gesturetek, Inc. Multiple camera control system
    US6751338B1 (en) 2000-12-15 2004-06-15 Cognex Corporation System and method of using range image data with machine vision tools
    US6681151B1 (en) 2000-12-15 2004-01-20 Cognex Technology And Investment Corporation System and method for servoing robots based upon workpieces with fiducial marks using machine vision
    US6798925B1 (en) 2000-12-22 2004-09-28 Cognex Corporation Method and apparatus for calibrating an image acquisition system
    US6751361B1 (en) 2000-12-22 2004-06-15 Cognex Corporation Method and apparatus for performing fixturing in a machine vision system
    US7206434B2 (en) * 2001-07-10 2007-04-17 Vistas Unlimited, Inc. Method and system for measurement of the duration an area is included in an image stream
    SE0103279L (sv) 2001-10-02 2003-04-03 Integrated Vision Prod Förfarande för mätning av ljusspridning och geometrisk profil
    US6993177B1 (en) 2001-11-02 2006-01-31 Cognex Technology And Investment Corporation Gauging based on global alignment and sub-models
    WO2004011876A1 (en) 2002-07-25 2004-02-05 Solutionix Corporation Apparatus and method for automatically arranging three dimensional scan data using optical marker
    US7366333B2 (en) * 2002-11-11 2008-04-29 Art, Advanced Research Technologies, Inc. Method and apparatus for selecting regions of interest in optical imaging
    JP3944091B2 (ja) 2003-02-06 2007-07-11 パルステック工業株式会社 3次元画像データ生成方法
    US20060173324A1 (en) 2003-03-13 2006-08-03 Koninklijke Philips Electronics N.V. 3d imaging system and method for signaling an object of interest in a volume of data
    IL155525A0 (en) * 2003-04-21 2009-02-11 Yaron Mayer System and method for 3d photography and/or analysis of 3d images and/or display of 3d images
    US8224064B1 (en) * 2003-05-21 2012-07-17 University Of Kentucky Research Foundation, Inc. System and method for 3D imaging using structured light illumination
    US7586655B1 (en) * 2003-06-30 2009-09-08 Google Inc. Acquiring and using three-dimensional information in a document scanning system
    DE10333802B4 (de) 2003-07-24 2005-09-08 Steinbichler Optotechnik Gmbh Verfahren und Vorrichtung zum Prüfen von Reifen
    US7609893B2 (en) 2004-03-03 2009-10-27 Trw Automotive U.S. Llc Method and apparatus for producing classifier training images via construction and manipulation of a three-dimensional image model
    HU226450B1 (en) * 2004-09-20 2008-12-29 Attila Dr Balogh Telerecorder or medical tools movable stock receiver mainly for brain-surgery
    US20060247863A1 (en) * 2005-04-28 2006-11-02 Bui Huy A Optimizing maldi mass spectrometer operation by sample plate image analysis
    KR20070088318A (ko) * 2005-06-17 2007-08-29 오므론 가부시키가이샤 3차원 계측을 행하는 화상 처리 장치 및 화상 처리 방법
    JP4909543B2 (ja) * 2005-08-01 2012-04-04 株式会社トプコン 三次元計測システム及びその方法
    WO2007050776A2 (en) * 2005-10-25 2007-05-03 University Of Kentucky Research Foundation System and method for 3d imaging using structured light illumination
    JP2008187564A (ja) * 2007-01-31 2008-08-14 Sanyo Electric Co Ltd カメラ校正装置及び方法並びに車両
    JP5270670B2 (ja) 2007-05-29 2013-08-21 コグネックス・テクノロジー・アンド・インベストメント・コーポレーション 2次元画像による3次元組立て検査
    US8126260B2 (en) * 2007-05-29 2012-02-28 Cognex Corporation System and method for locating a three-dimensional object using machine vision
    US7777300B2 (en) 2007-09-18 2010-08-17 Infineon Technologies Ag Semiconductor device with capacitor
    US7784946B2 (en) * 2007-12-21 2010-08-31 Alcon Refractivehorizons, Inc. Virtual microscope system for monitoring the progress of corneal ablative surgery and associated methods
    US8646689B2 (en) * 2007-12-28 2014-02-11 Cognex Corporation Deformable light pattern for machine vision system
    US8442304B2 (en) 2008-12-29 2013-05-14 Cognex Corporation System and method for three-dimensional alignment of objects using machine vision
    SE534271C2 (sv) * 2009-03-30 2011-06-21 Niklas Barringer Strålningstålig kamera
    US9533418B2 (en) * 2009-05-29 2017-01-03 Cognex Corporation Methods and apparatus for practical 3D vision system
    US11699247B2 (en) * 2009-12-24 2023-07-11 Cognex Corporation System and method for runtime determination of camera miscalibration
    US8600192B2 (en) * 2010-12-08 2013-12-03 Cognex Corporation System and method for finding correspondence between cameras in a three-dimensional vision system

    Patent Citations (17)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US6137893A (en) 1996-10-07 2000-10-24 Cognex Corporation Machine vision calibration targets and methods of determining their location and orientation in an image
    US5960125A (en) 1996-11-21 1999-09-28 Cognex Corporation Nonfeedback-based machine vision method for determining a calibration relationship between a camera and a moveable object
    US6301396B1 (en) 1996-11-21 2001-10-09 Cognex Corporation Nonfeedback-based machine vision methods for determining a calibration relationship between a camera and a moveable object
    JPH1123262A (ja) 1997-07-09 1999-01-29 Nekusuta:Kk 三次元位置計測システム
    US5978521A (en) 1997-09-25 1999-11-02 Cognex Corporation Machine vision methods using feedback to determine calibration locations of multiple cameras that image a common object
    US5978080A (en) 1997-09-25 1999-11-02 Cognex Corporation Machine vision methods using feedback to determine an orientation, pixel width and pixel height of a field of view
    US6856698B1 (en) 1997-11-26 2005-02-15 Cognex Corporation Fast high-accuracy multi-dimensional pattern localization
    US6850646B1 (en) 1997-12-31 2005-02-01 Cognex Corporation Fast high-accuracy multi-dimensional pattern inspection
    US6658145B1 (en) 1997-12-31 2003-12-02 Cognex Corporation Fast high-accuracy multi-dimensional pattern inspection
    JP2000205821A (ja) 1999-01-07 2000-07-28 Nec Corp 三次元形状計測装置及びその三次元形状計測方法
    US6639624B1 (en) 1999-12-30 2003-10-28 Cognex Corporation Machine vision methods for inspection of leaded components
    US6748104B1 (en) 2000-03-24 2004-06-08 Cognex Corporation Methods and apparatus for machine vision inspection using single and multiple templates or patterns
    US6728582B1 (en) 2000-12-15 2004-04-27 Cognex Corporation System and method for determining the position of an object in three dimensions using a machine vision system with two cameras
    US6771808B1 (en) 2000-12-15 2004-08-03 Cognex Corporation System and method for registering patterns transformed in six degrees of freedom using machine vision
    US20080279446A1 (en) 2002-05-21 2008-11-13 University Of Kentucky Research Foundation System and technique for retrieving depth information about a surface by projecting a composite image of modulated light patterns
    WO2006005187A1 (en) 2004-07-09 2006-01-19 Parham Aarabi Interactive three-dimensional scene-searching, image retrieval and object localization
    DE112006002674T5 (de) 2005-10-07 2008-09-11 Cognex Corp., Natick Verfahren und Vorrichtungen für praktisches 3D-Sichtigkeitssystem

    Also Published As

    Publication number Publication date
    CN102762344A (zh) 2012-10-31
    WO2010138565A2 (en) 2010-12-02
    JP5922572B2 (ja) 2016-05-24
    CN102762344B (zh) 2016-08-03
    DE112010002174T5 (de) 2012-10-04
    US9533418B2 (en) 2017-01-03
    WO2010138565A3 (en) 2011-03-10
    JP2012528395A (ja) 2012-11-12
    US20100303337A1 (en) 2010-12-02
    JP2015135331A (ja) 2015-07-27

    Similar Documents

    Publication Publication Date Title
    DE112010002174B4 (de) Verfahren und Vorrichtung für ein praktisches 3D-Sehsystem
    DE112006002674B4 (de) Verfahren und Vorrichtungen für praktisches 3D-Sichtigkeitssystem
    DE69826753T2 (de) Optischer Profilsensor
    DE102012112322B4 (de) Verfahren zum optischen Abtasten und Vermessen einer Umgebung
    DE102008041523B4 (de) Verfahren zur dreidimensionalen Messung und Vorrichtung zur dreidimensionalen Messung
    DE112010005008B4 (de) System und Verfahren zur Bestimmung von Kamerafehlkalibrierung im Laufzeitbetrieb
    DE102012112321B4 (de) Vorrichtung zum optischen Abtasten und Vermessen einer Umgebung
    DE102015101710B4 (de) Verfahren zum Kalibrieren eines beweglichen Greiforgans unter Verwendung einer entfernten Digitalkamera
    DE102006005036B4 (de) Vorrichtung und Verfahren zur verbesserten Formcharakterisierung
    DE112016006262B4 (de) Dreidimensionaler Scanner und Verarbeitungsverfahren zur Messunterstützung für diesen
    DE112010004767T5 (de) Punktwolkedaten-Verarbeitungsvorrichtung, Punktwolkedaten-Verarbeitungsverfahren und Punktwolkedaten-Verarbeitungsprogramm
    DE102017116952A1 (de) System und verfahren für verbessertes scoring von 3d-lagen und entfernen von störpunkten in 3d-bilddaten
    DE10137241A1 (de) Registrierung von Tiefenbildern mittels optisch projizierter Marken
    DE102008041524B4 (de) Verfahren und Vorrichtung zur Durchführung dreidimensionaler Messungen
    DE202012104890U1 (de) Vorrichtung zum optischen Abtasten und Vermessen einer Umgebung
    EP1190211A1 (de) Verfahren zur optischen formerfassung von gegenständen
    DE102016107900B4 (de) Verfahren und Vorrichtung zur Kantenermittlung eines Messobjekts in der optischen Messtechnik
    Sioma Assessment of wood surface defects based on 3D image analysis
    WO2014139504A1 (de) Vorrichtung zur volumetrischen vermessung eines schlachttierkörperobjekts
    DE202019105838U1 (de) Anordnung mit einem Koordinatenmessgerät oder Mikroskop
    DE102012223047B4 (de) Mehrteil-Korrespondierer (corresponder) für mehrere Kameras
    DE102006036346A1 (de) Verfahren zur automatisierten 3-D-Objekterkennung und Lagebestimmung
    DE102016008406A1 (de) Bildmessvorrichtung, Steuerprogramm dieser Vorrichtung und nicht temporäres Aufzeichnungsmedium, auf welchem das Steuerprogramm aufgezeichnet ist
    DE102007047499A1 (de) Verfahren und Vorrichtung zur Erfassung von Informationen eines Werkzeugs
    DE10016963A1 (de) Verfahren zur Bestimmung der Position eines Werkstücks im 3D-Raum

    Legal Events

    Date Code Title Description
    R012 Request for examination validly filed

    Effective date: 20130425

    R016 Response to examination communication
    R016 Response to examination communication
    R018 Grant decision by examination section/examining division
    R020 Patent grant now final
    R081 Change of applicant/patentee

    Owner name: COGNEX TECHNOLOGY AND INVESTMENT LLC, NATICK, US

    Free format text: FORMER OWNER: COGNEX TECHNOLOGY AND INVESTMENT CORP., MOUNTAIN VIEW, CALIF., US

    R081 Change of applicant/patentee

    Owner name: COGNEX TECHNOLOGY AND INVESTMENT LLC, NATICK, US

    Free format text: FORMER OWNER: COGNEX TECHNOLOGY AND INVESTMENT LLC, MOUNTAIN VIEW, CA, US