-
TECHNISCHES GEBIET
-
Die vorliegende Offenbarung betrifft Systeme zum maschinellen Sehen.
-
HINTERGRUND
-
Systeme zum maschinellen Sehen werden in Produktionsumgebungen verwendet, um Teile, Komponenten, Teilsysteme und andere Herstellungsprodukte automatisch zu untersuchen, indem digitale Bilder aufgenommen und analysiert werden.
-
ZUSAMMENFASSUNG
-
Ein System zum maschinellen Sehen ist ausgestaltet, um ein Objekt in einem Sichtfeld dynamisch zu untersuchen. Dies umfasst das Aufnehmen von dreidimensionalen Punktwolkendaten (3D-Punktwolkendaten) des Sichtfelds unter Verwendung einer Kamera und das Transformieren aller Punkte der 3D-Punktwolkendaten in eine Vielzahl von tangentialen Oberflächenvektoren. Oberflächennormalvektoren werden für jeden Punkt der 3D-Punktwolkendaten auf der Grundlage der Vielzahl der tangentialen Oberflächenvektoren ermittelt. Spitzenwerte der Verteilung der Oberflächennormalvektoren werden unter Verwendung eines Einheitskugelnetzes [engl.: unit sphere mesh] detektiert. Parallele Ebenen werden unter Verwendung der Spitzenwerte der Distanzverteilung separiert. Eine Strategie des nächstgelegenen Nachbarn mit radialer Begrenzung kombiniert mit einem Prozess des Suchens des nächstgelegenen Nachbarn auf der Grundlage einer Zellteilung wird ausgeführt, um einen planaren Bereich zu segmentieren. Auf der Grundlage des segmentierten planaren Bereichs wird eine planare Oberfläche erkannt.
-
Die vorstehenden Merkmale und Vorteile und andere Merkmale und Vorteile der vorliegenden Lehren ergeben sich leicht aus der folgenden genauen Beschreibung einiger der besten Arten und anderer Ausführungsformen, um die vorliegenden Lehren auszuführen, die in den beigefügten Ansprüchen definiert sind, wenn sie in Verbindung mit den beiliegenden Zeichnungen gelesen wird.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Es werden nun eine oder mehrere Ausführungsformen anhand von Beispielen mit Bezug auf die beiliegenden Zeichnungen beschrieben, in denen:
-
1 ein beispielhaftes System zum maschinellen Sehen in Übereinstimmung mit der Offenbarung schematisch veranschaulicht, das einen Bilddetektor (eine Kamera) und einen analytischen Controller enthält;
-
2 einen Segmentierungsprozess für planare Oberflächen zum Segmentieren planarer Oberflächenbereiche in der Punktwolke einer Szene in Übereinstimmung mit der Offenbarung schematisch zeigt, die in einem Sichtfeld einer digitalen Kamera, die zum Aufnehmen eines dreidimensionalen Bilds (3D-Bilds) in der Lage ist, erzeugt wurde;
-
3 eine Nachbarschaft um einen Punkt einer 3D-Punktwolke herum in Übereinstimmung mit der Offenbarung graphisch zeigt, die eine Vielzahl von tangentialen Oberflächenvektoren und den geschätzten Oberflächennormalvektor enthält;
-
4 eine Ausführungsform eines Einheitskugelnetzes im Kontext eines 3D-Koordinatensystems in Übereinstimmung mit der Offenbarung zeigt;
-
5-1, 5-2 und 5-3 die Anwendung eines Einheitskugelnetzes auf einen 3D-Punktwolken-Datensatz eines Kästchens, das drei orthogonale Ebenen aufweist, in Übereinstimmung mit der Offenbarung graphisch zeigen;
-
6-1 eine Vielzahl von Kandidaten für Punkte in parallelen Ebenen in Übereinstimmung mit der Offenbarung graphisch zeigt, die mit Bezug auf einen durchschnittlichen Oberflächennormalvektor N → und einen Punktvektor Dp → vom Ursprung in dem 3D-Raum aus graphisch zeigt;
-
6-2 ein eindimensionales Histogramm (1D-Histogramm) der Distanzverteilung in Übereinstimmung mit der Offenbarung graphisch zeigt, die entlang einer Ebene der Oberflächennormalrichtung auf der Grundlage der Ergebnisse, die mit Bezug auf 6-1 gezeigt sind, projektiert wurde.
-
7 Ergebnisse des Ausführens einer schnellen Segmentierung von planaren Oberflächenbereichen in Übereinstimmung mit der Offenbarung graphisch zeigt, was umfasst, dass alle Punkte in jedem der Bereiche auf der gleichen Ebene in eine XOY-Ebene transformiert werden; und
-
8 ein Triangulationsnetz graphisch zeigt, das auf ein Einheitskugelnetz, beispielsweise das Einheitskugelnetz, das mit Bezug auf 4 gezeigt ist, angewendet werden kann.
-
GENAUE BESCHREIBUNG
-
Eine Punktwolke ist eine Sammlung von Punkten, die eine dreidimensionale Szene in einem Sichtfeld im Kontext eines dreidimensionalen Koordinatensystems (3D-Koordinatensystems) beschreiben, und sie kann in einer Ausführungsform Außenoberflächen von Objekten repräsentieren. Punktwolken können verwendet werden, um verschiedene Operationen auszuführen, wie beispielsweise Objekterkennung, Objektklassifizierung, Szenenvisualisierung, Segmentierung, zweidimensionale Erweiterung von Bilddaten und/oder andere Typen von Operationen. Das Leistungsniveau, mit dem diese Operationen unter Verwendung einer Punktwolke durchgeführt werden, kann von der Auflösung dieser Punktwolke abhängen. Bei der Verwendung hierin kann die Auflösung einer Punktwolke das Detailniveau sein, mit welchem Merkmale in der durch die Punktwolke aufgenommenen Szene innerhalb der Punktwolke unterscheidbar sein können. Die Auflösung einer Punktwolke kann von der Anzahl der Punkte in der Punktwolke und/oder von der Punktdichte der Punkte in einem oder in mehreren Abschnitten der Punktwolke abhängen. Bei der Verwendung hierin ist die Punktdichte ein Maß für die Anzahl der Punkte pro Volumeneinheit. Ein Abschnitt einer Punktwolke mit einer höheren Punktdichte als ein anderer Abschnitt der Punktwolke kann weniger dünn besetzt sein als der andere Abschnitt.
-
Mit Bezug nun auf die Zeichnungen, bei denen die Darstellungen nur zur Veranschaulichung bestimmter beispielhafter Ausführungsformen und nicht zur Einschränkung derselben gedacht sind, veranschaulicht 1 auf schematische Weise ein beispielhaftes System 100 zum maschinellen Sehen mit einer Bildaufzeichnungsvorrichtung (einer Kamera) 10, einem Kameracontroller 20 und einem analytischen Controller 60.
-
Die Kamera 10 ist vorzugsweise eine Vorrichtung zum Aufzeichnen digitaler Bilder, die zum Aufnehmen eines dreidimensionalen Bilds (3D-Bilds) eines Sichtfelds (FOV) 35 in der Lage ist, das durch den Kameracontroller 20 transformiert wird, um eine Datendatei zu erzeugen, die eine 3D-Punktwolke 25 enthält. Alternativ kann die Kamera 10 eine beliebige Bilderfassungsvorrichtung enthalten, die eine Datendatei erzeugt, welche eine 3D-Punktwolke 25 in dem FOV 35 enthält, wobei ein Abschnitt von dieser in vorteilhafter Weise ein physikalisches Objekt 40 repräsentiert. Daher repräsentiert die 3D-Punktwolke 25 eine gemessene Oberfläche des physikalischen Objekts 40 und sie kann Punkte in einem dreidimensionalen Koordinatensystem enthalten (z. B. einen Satz von Punkten, der durch x-, y- und z-Koordinaten definiert ist). Als Definition ist ein Bild eine beliebige visuell wahrnehmbare Darstellung, die ein Sichtfeld repräsentiert. Ein Bild kann in einer Ausführungsform das gesamte oder einen Teil des reflektierten Lichts in dem Sichtfeld aus einem sichtbaren Lichtspektrum umfassen, was eine Grauskala-Reflexion, eine Rot-Grün-Blau-Reflexion (RGB-Reflexion), eine Schwarz-Weiß-Reflexion oder eine beliebige andere geeignete oder wünschenswerte Reflexion umfasst. Vorzugsweise wird ein Bild aufgenommen und in einem nicht vorübergehenden Massenspeichermedium aufgezeichnet, etwa in einem nicht vorübergehenden digitalen Datenmassenspeichermedium.
-
Die Kamera 10 kann sich bei einer beliebigen Position und Orientierung relativ zu dem FOV 35 befinden. In einer Ausführungsform enthält das FOV 35 das physikalische Objekt 40, das auf einer beweglichen Ebene 45 orientiert ist, die sich bei einem vorbestimmten Abstand 22 zu der Kamera 10 befindet. Das Objekt 40 ist eine strukturelle Entität mit Merkmalen, die als Beispiel unter anderem räumliche Dimensionen, Materialien und Oberflächenendbearbeitungen, die eine Reflektivität angeben, umfassen. In einer Ausführungsform kann das Objekt 40 eine Komponente oder eine Fläche an einem Fahrzeug in einer Montageanlage sein.
-
In einer Ausführungsform ist das auf der beweglichen Ebene 45 orientierte Objekt 40 an einem ersten Transportsystem 42 montiert, welches das Objekt 40 auf einem linearen Pfad 41 mit einer bekannten Geschwindigkeitsrate befördert und die Kamera 10 ist an einem zweiten Transportsystem 12 montiert, das diese auf einem entsprechenden linearen Pfad mit der bekannten Geschwindigkeitsrate über eine festgelegte Distanz befördert. Der lineare Pfad 41, auf welchem das Objekt 40 und die Kamera 10 befördert werden, umfasst das FOV 35.
-
In einer Ausführungsform werden die 3D-Punktwolkendaten 25 erzeugt, indem mehrere Bitmap-Bilder 15 in der Form eines Grauskalenbilds mit 8 Bit mit codierten strukturierten Lichtmustern, welches das FOV 35 repräsentiert, oder in der Form von Farbbildern, die durch die Hue-Saturation-Intensity (HSI-Triplets) oder durch Rot-Grün-Blau-Primärfarben (RGB-Primärfarben) des FOV oder ohne Einschränkung durch andere Bilddarstellungen repräsentiert sind, decodiert werden. Andere Ausführungsformen der 3D-Punktwolkendaten können durch einen Abtastlaser oder einen RGB-D-Sensor erhalten werden. Die Kamera 10 enthält einen Bildaufnahmesensor, der mit dem Kameracontroller 20 signaltechnisch verbunden ist, welcher eine digitale Signalverarbeitung (DSP) auf der Bitmap-Bilddatei 15 ausführt, um die 3D-Punktwolke 25 zu erzeugen. Der Kameracontroller 20 übermittelt die 3D-Punktwolke 25 an den analytischen Controller 60 zur Verarbeitung und Analyse, wie hier beschrieben wird.
-
Der Bildaufnahmesensor nimmt Pixel in dem FOV 35 mit einer vorbestimmten Auflösung auf und erzeugt eine Bitmap-Bilddatei 15 des FOV 35, z. B. eine 8-Bit-Bitmap der Pixel, welche das FOV 35 mit einer vorbestimmten Auflösung repräsentiert. Die Bitmap-Bilddatei 15 wird an den Kameracontroller 20 übermittelt. Die Bitmap-Bilddatei 15 ist in einer Ausführungsform eine codierte Datendatei, die in einem nicht vorübergehenden digitalen Datenmassenspeichermedium gespeichert ist. Die Bitmap-Bilddatei 15 enthält eine digitale Repräsentation des Bilds, die ein oder eine Vielzahl von Objekten 40 enthalten kann, und sie repräsentiert ein ursprüngliches Bild des FOV 35, das mit der ursprünglichen Auflösung der Kamera 10 aufgenommen wurde. Der Bildaufnahmesensor der Kamera 10 nimmt das Bild des FOV 35 mit einer Standarddefinitions-Nennauflösung auf, beispielsweise mit 640×480 Pixel. Alternativ kann der Bildaufnahmesensor der Kamera 10 das Bild mit einer Hochdefinitions-Nennauflösung aufnehmen, beispielsweise mit 1440×1024 Pixel oder mit einer anderen geeigneten Auflösung. Der Bildaufnahmesensor der Kamera 10 nimmt das 3D-Bild vorzugsweise in der Form eines oder mehrerer stehender Bilder auf.
-
Controller, Steuerungsmodul, Modul, Steuerung, Steuerungseinheit, Prozessor und ähnliche Begriffe bezeichnen eine beliebige oder verschiedene Kombinationen aus einer oder mehreren anwendungsspezifischen integrierten Schaltungen (ASICs), elektronischen Schaltungen, zentralen Verarbeitungseinheiten (vorzugsweise Mikroprozessoren) mit zugehörigem Arbeitsspeicher und Massenspeicher (Festwertspeicher, programmierbarer Festwertspeicher, Speicher mit wahlfreiem Zugriff, Festplattenlaufwerke usw.), die ein oder mehrere Software- oder Firmwareprogramme oder Routinen ausführen, kombinatorischen Logikschaltungen, Eingabe/Ausgabe-Schaltungen und Vorrichtungen, geeigneten Signalaufbereitungs- und Pufferschaltungen und anderen Komponenten, um die beschriebene Funktionalität bereitzustellen, die Datenspeicherung und Datenanalyse umfasst. Software, Firmware, Programme, Anweisungen, Routinen, Code, Algorithmen und ähnliche Begriffe bezeichnen beliebige von einem Controller ausführbare Anweisungssätze, die Kalibrierungen und Nachschlagetabellen enthalten.
-
2 zeigt auf schematische Weise einen Prozess
200 zum Segmentieren von planaren Oberflächenbereichen, um planare Oberflächenbereiche in einer 3D-Punktwolke zu segmentieren, die in einem Sichtfeld
35 einer digitalen Kamera
10 erzeugt wurde, welche zur Aufnahme eines dreidimensionalen Bilds (3D-Bilds) in der Lage ist, wobei eine Ausführungsform des Systems
100 zum maschinellen Sehen verwendet wird, das mit Bezug auf
1 beschrieben wurde. Der Prozess
200 zum Segmentieren von planaren Oberflächenbereichen ist in Steuerungsroutinen umgeformt, die in dem analytischen Controller
60 oder in einer anderen geeigneten Verarbeitungsvorrichtung in Echtzeit dynamisch ausgeführt werden können. Tabelle 1 ist als ein Schlüssel bereitgestellt, bei dem die numerisch beschrifteten Blöcke und die entsprechenden Funktionen wie folgt offengelegt sind, entsprechend dem Prozess
200 zum Segmentieren von planaren Oberflächenbereichen. Tabelle 1
BLOCK | BLOCKINHALTE |
210 | 3D-Punktwolkendaten von einer Szene aufnehmen |
220 | 3D-Punktwolke in tangentiale Oberflächenvektoren transformieren |
230 | Aus tangentialen Oberflächenvektoren Oberflächennormalvektoren schätzen |
240 | Spitzenwerte unter Verwendung eines Einheitskugelnetzes detektieren |
250 | Parallele Ebenen unter Verwendung der Spitzenwerte der Distanzverteilung separieren |
260 | Planare Bereiche segmentieren |
270 | Planare Oberfläche auf der Grundlage der planaren Bereiche erkennen |
280 | Ende |
-
Insgesamt umfasst der Prozess 200 zum Segmentieren von planaren Oberflächenbereichen Verfahren und zugehörige Algorithmen zum dynamischen Erkennen von planaren Oberflächen, die umfassen, dass für jeden Punkt Oberflächennormalvektoren durch eine einfache Berechnung von Vektorkreuzprodukten geschätzt werden und dass Spitzenwerte mit einem vorberechneten Einheitskugelnetz detektiert werden. Parallele Ebenen werden unter Verwendung einer Distanzverteilung entlang einer planaren Normalrichtung separiert und planare Bereiche werden unter Verwendung eines Zellteilungsverfahrens erkannt und segmentiert. Der Prozess 200 zum Segmentieren von planaren Oberflächenbereichen und Elemente desselben werden vorzugsweise periodisch ausgeführt, um Merkmale eines Objekts aus Bildern zu erkennen, die unter Verwendung einer Ausführungsform des Systems 100 zum maschinellen Sehen aufgenommen wurden. In einer Ausführungsform wird der Prozess 200 zum Segmentieren von planaren Oberflächenbereichen mit einer Rate periodisch ausgeführt, die kleiner als 1 Sekunde ist. Bei der Verwendung hierin beschreiben die Begriffe ”Dynamik” und ”dynamisch” Schritte oder Prozesse, die in Echtzeit ausgeführt werden und die sich dadurch auszeichnen, dass sie Zustände von Parametern überwachen oder auf andere Weise ermitteln und die Zustände der Parameter während einer Ausführung einer Routine oder zwischen Iterationen der Ausführung der Routine regelmäßig oder periodisch aktualisieren. In einer Ausführungsform umfasst dies das Folgende.
-
Eine Ausführungsform des Systems zum maschinellen Sehen erzeugt eine 3D-Punktwolke 25 aus einer Szene in dem FOV (210) und ein Prozessor transformiert jeden Punkt in der 3D-Punktwolke 25 in einen tangentialen Oberflächenvektor, indem er für alle Punkte in der 3D-Punktwolke 25 eine Differenz von zwei benachbarten Punkten erfasst (220). In einer Ausführungsform erzeugt die 3D-Punktwolke 25, die von der Kamera 10 des Systems 100 zum maschinellen Sehen erzeugt wurde, 3D-Datensätze des FOV mit einer 3D-Auflösung von 0,2 mm und in einer Ausführungsform entspricht jeder Punkt einem Pixel in dem 3D-Datensatz.
-
Die Auflösung im 3D-Raum wird durch die Distanz gemessen. Oberflächennormalvektoren werden aus den tangentialen Oberflächenvektoren von Schritt 220 geschätzt (230). Ein Oberflächennormalvektor ist ein Vektor, der in etwa senkrecht/rechtwinklig zu einer implizierten Oberfläche an jedem Punkt in der 3D-Punktwolke 25 ist. Jeder Punkt in der 3D-Punktwolke 25 wird als Ursprungspunkt mit einem entsprechenden Oberflächennormalvektor betrachtet.
-
Das Schätzen der Oberflächennormalvektoren aus den tangentialen Oberflächenvektoren umfasst, dass eine Nachbarschaft von Punkten um jeden Punkt in der 3D-Punktwolke 25 erkannt wird, wobei jeder Punkt einen Punkt in der 3D-Punktwolke 25 repräsentiert. Vorzugsweise wird die Nachbarschaft der Punkte um jeden Punkt in der 3D-Punktwolke 25 herum als eine Oberfläche mit 7×7 Punkten definiert. 3 zeigt auf graphische Weise eine Nachbarschaft 310 um einen Punkt 320 einer 3D-Punktwolke 25 herum, wobei die 7×7 benachbarten Punkte durch Eckpunkte P1 302, P2 304, P3 306 und P4 308 und zugehörige tangentiale Oberflächenvektoren a → 322, b → 324, c → 326, d → 328, e → 330 und f → 332 angezeigt sind. Ein Oberflächennormalvektor Np → 325 kann für den einen Punkt 320 der 3D-Punktwolke 25 unter Verwendung von Techniken der linearen Algebra berechnet werden, indem ein Kreuzprodukt der Vektoren wie folgt berechnet wird. Np → = (a → + c → + e →)×(b → + d → + f →) [1] Auf diese Weise kann ein Oberflächennormalvektor für jeden Punkt in der 3D-Punktwolke 25 berechnet werden. In einer Ausführungsform wird mit dieser Konfiguration ein Zielkonflikt zwischen Genauigkeit und Berechnungszeit zum Ausführen der Berechnung minimiert.
-
Wieder mit Bezug auf 2 werden Spitzenwerte unter Verwendung eines Einheitskugelnetzes in einem IJK-Raum detektiert (240), welcher den Oberflächennormalraum definiert. 4 zeigt auf graphische Weise eine Ausführungsform eines Einheitskugelnetzes 410 im Kontext eines IJK-Raums, wobei der IJK-Raum einen Vektorraum repräsentiert, der ein 3D-Koordinatensystem definiert, das einen Ursprung 415 und Achsen I 412, J 414 und K 416 aufweist. Das Einheitskugelnetz 410 stellt auf graphische Weise eine Vielzahl von Referenzpunkten an den Scheitelpunkten dar, deren Nachbarschaftsdistanzen gleich sind. Das Einheitskugelnetz 410 wird verwendet, um Spitzenwerte in dem IJK-Raum zu detektieren, da Spitzenwerte mit hoher Dichte die am meisten konzentrierten Oberflächennormalvektoren betonen. Auf die Netzscheitelpunkte wird ein diskreter Laplace-Beltrami-Operator (LB-Operator) angewendet, um Spitzenwerte zu detektieren und zu erkennen.
-
Das beim Ausbilden des Einheitskugelnetzes verwendete optimale dreieckige Netz von Kugeln bedeutet, dass der Trunkierungsfehler des diskreten LB-Operators der kleinste Fehler ist und dass er begrenzt ist. Das dreieckige Netz der Kugeln kann rekursiv erzeugt werden. Dies umfasst, dass mit einem Ikosaeder, d. h. Zwanzigflächner gestartet wird, der in der Einheitskugel eingeschrieben ist, dass jedes Dreieck rekursiv in vier Dreiecke unterteilt wird, indem jede Kante am Mittelpunkt in zwei Teile unterteilt wird und dass dann der Mittelpunkt in der Normalrichtung auf die Einheitskugel projektiert wird. Dieser Prozess erzeugt eine Sequenz von Triangulationen, die jeweils eine Menge von 20, 80, 320, 1280, 5120, 20480, 81820, ... Dreiecksfacetten aufweisen. Als Beispiel kann ein Einheitskugelnetz mit 20480 Dreiecken und 10242 Scheitelpunkten vorteilhaft zur Spitzenwertdetektion in dem IJK-Raum als Kompromiss zwischen Berechnungszeit und Genauigkeit verwendet werden. Bei einer Ausführungsform des Einheitskugelnetzes 410 betragen der minimale, der maximale und der mittlere Winkel zwischen zwei benachbarten Scheitelpunkten 1,98, 2,36 bzw. 2,16 Grad. Aufgrund der Berechnungskosten zum Erzeugen dieser Referenzpunkte werden das beispielhafte Einheitskugelnetz 410 und der minimale, der maximale und der mittlere Winkel zwischen zwei benachbarten Scheitelpunkten vorzugsweise in einer nicht vorübergehenden Speichervorrichtung gespeichert und geladen, wenn der Prozess 200 zum Segmentieren von planaren Oberflächenbereichen ausgeführt wird. Das Einheitskugelnetz 410, das mit Bezug auf 4 im Kontext des IJK-Raums graphisch gezeigt ist, enthält 20480 Dreiecke und 10242 Scheitelpunkte, die zur Spitzenwertdetektion in dem IJK-Raum verwendet werden können. Das Einheitskugelnetz 410 kann zur Laufzeit aus der nicht vorübergehenden Speichervorrichtung geladen werden, wobei ein diskreter Laplace-Beltrami-Operator (LB-Operator) an den Stellen der Netzscheitelpunkte angewendet wird, um Spitzenwerte zu erkennen.
-
8 zeigt auf graphische Weise eine Dreiecksnetzmaske 800, die auf ein Einheitskugelnetz angewendet werden kann, beispielsweise auf das Einheitskugelnetz 410, das mit Bezug auf 4 gezeigt ist, um eine diskrete Laplaceoperation auszuführen. Ein Laplace-Operator ist eine Form eines Differentialoperators, der verwendet werden kann, um partielle Differentialgleichungen (PDEs) in einem multidimensionalen Euklidschen Raum zu beschreiben. Ein LB-Operator bildet geometrische PDEs, etwa einen mittleren Krümmungsverlauf [engl.: mean curvature flow] und einen Oberflächendiffusionsverlauf [engl.: surface diffusion flow] für die Bildverarbeitung, Oberflächenmodellierung und Computergraphik. Ein diskreter LB-Operator, der über einem Oberflächennetz angewendet wird, steht in enger Beziehung mit der Einheitlichkeit des Netzes. Beim Anwenden auf ein Einheitskugel-Triangulationsnetz weist jeder Referenzpunkt pi 810 sechs benachbarte Punkte pj auf, die durch Elemente 820, 822, 824 826, 828 und 830 bezeichnet sind. Die Distanz zwischen zwei benachbarten der Nachbarpunkte ist für beide Paare nahezu gleich, was die folgenden Annahmen ermöglicht: αij = βij, A(pi) = A(pj) und pipj = pipj-1 = pipj+1 = pjpj-1 = pjpj+1 wobei
- α
- ein geometrischer Winkel bei einem Scheitelpunkt zwischen pipj-1 und pjpj-1 ist
- βij
- ein geometrischer Winkel zwischen pipj+1 und pjpj+1 ist
- pj, pj-1 und pj+1
- benachbarte Punkte sind, z. B. die Punkte 822, 820 bzw. 824, und
- pipj, pipj-1, pipj+1, pjpj+1 und pjpj+1
- lineare Distanzen zwischen den jeweiligen Punkten sind.
-
Diese Diskretisierung kann durch die folgende Gleichung umgeschrieben werden:
wobei die Funktionen f(p
i) und f(p
i) die Anzahl der Punkte repräsentieren, die zu der Fläche um p
i und p
j herum gehören.
-
Ein Laplacewert kann für alle Referenzpunkte auf dem Einheitskugelnetz 410 unter Verwendung einer Dreiecksnetzmaske 800 berechnet werden, die einen Wert von (1,1,1–6,1,1,1) aufweist, da jeder Referenzpunkt nur sechs Nachbarpunkte aufweist. Der diskrete LB-Operator kann visualisiert werden, wie mit Bezug auf 8 gezeigt ist, wobei der Referenzpunkt pi 810 einen Wert von –6 aufweist und jeder der sechs Nachbarpunkte pj, die durch die Elemente 820, 822, 824, 826, 828 und 830 angezeigt sind, einen Wert von 1 aufweist. Diese Maske wird auf das Einheitskugelnetz 410 angewendet, um zweite Ableitungen in einer Definition des Laplacewerts zu approximieren. Referenzpunkte mit einem negativen Laplacewert werden als Kandidaten für Spitzenwertpunkte betrachtet und vorzugsweise wird ein vordefinierter Schwellenwert für den Laplacewert verwendet, um dominante Spitzenwerte zu detektieren.
-
5-1, 5-2 und 5-3 zeigen auf graphische Weise die Anwendung eines Einheitskugelnetzes auf 3D-Punktwolkendaten eines Kästchens, das drei orthonormale Ebenen aufweist. 5-1 zeigt auf graphische Weise eine isometrische Ansicht einer Ausführungsform eines 3D-Kästchens 510 mit drei orthonormalen Ebenen. 3D-Punktwolkendaten für das 3D-Kästchen 510 werden unter Verwendung des beispielhaften Systems zum maschinellen Sehen, das mit Bezug auf 1 beschrieben ist, aufgenommen. 5-2 zeigt auf graphische Weise eine resultierende Oberflächennormalverteilung 522 der 3D-Punktwolkendaten des 3D-Kästchens 510 mit Bezug auf 5-1, die mit einem Einheitskugelnetz 520 aufgenommen wurden. 5-3 zeigt auf graphische Weise einen Abschnitt der 3D-Punktwolkendaten 530 des 3D-Kästchens mit einem ersten Spitzenwert 532, der die Orientierung einer ersten Ebene anzeigt, die mit der resultierenden Oberflächennormalverteilung 522 verbunden ist, die in 5-2 erkannt wurde.
-
Wieder mit Bezug auf 2 umfassen die Ausgaben aus dem Schritt des Detektierens der Spitzenwerte aus dem Einheitskugelnetz (240) eine Orientierung N→→(i, j, k) der Ebenen. Parallele Ebenen werden unter Verwendung der Distanzverteilungsspitzenwerte separiert (250). Das Separieren der parallelen Ebenen umfasst, dass die Ebenen in der gleichen Orientierung segmentiert werden, wobei die Ausgaben aus dem Schritt des Detektierens der Spitzenwerte aus dem Einheitskugelnetz die Orientierungen N→→(i, j, k) der parallelen Ebenen sind. Die 3D-Punkte, die zu einem gefundenen Spitzenwert gehören, repräsentieren einen Satz von parallelen Ebenen mit dem gleichen Normalvektor, aber diese 3D-Punkte liegen bei verschiedenen Distanzen. Distanzen {D1, D2, ..., Dn} können für die 3D-Punkte P(xn, yn, zn) auf einer Ebene mit der detektierten Ebenenoberflächennormalen berechnet oder anderweitig bestimmt werden.
-
Alle 3D-Punkte, die zu einer Ebene von mehreren parallelen Ebenen gehören, können durch ihre zugehörigen Distanzverteilungsspitzenwerte entlang eines durchschnittlichen Ebenennormalvektors N → 610 separiert werden. Der Ebenennormalvektor N → 610 ist analog zu dem Oberflächennormalvektor, der in dem Prozess 200 zum Segmentieren von planaren Oberflächenbereichen wie beschrieben hergeleitet wird. 6-1 zeigt auf graphische Weise eine Vielzahl von Kandidaten für Punkte in parallelen Ebenen, die eine Ebene 1 611, eine Ebene 2 613 und eine Ebene 3 615 umfassen, die auf den durchschnittlichen Ebenennormalvektor N → 610 projiziert wurden, und einen Distanzvektor Dp → 605 in 3D, der im Kontext einer x-Achse 602, einer y-Achse 604 und einer z-Achse 606 definiert ist, die einen Ursprung 601 aufweisen, welcher mit einem Ursprung des Distanzvektors Dp → 605 übereinstimmt.
-
6-2 zeigt auf graphische Weise ein eindimensionales Histogramm (1D-Histogramm) der Distanzverteilung von allen 3D-Punkten für einen Ebenennormalvektor N → 610 auf der Grundlage der Ergebnisse, die mit Bezug auf 6-1 gezeigt sind. Die horizontale Achse 620 stellt eine Distanz in die Richtung des Ebenennormalvektors N → 610 aus der Distanzverteilungsdichte des Distanzvektors Dp → 605 dar und Histogramme 621, 623 und 625 entsprechen der Ebene 1 611, der Ebene 2 613 bzw. der Ebene 3 615, die mit Bezug auf 6-1 gezeigt sind. Die Größen der Histogramme 621, 623 und 625 werden auf der Grundlage von Dp →·N → ermittelt, d. h. aus dem Skalarprodukt des Distanzvektors Dp → 605 und dem durchschnittlichen Ebenennormalvektor N → 610. Dieses Ergebnis liefert eine Distanzverteilung entlang der gleichen Oberflächennormalrichtung für alle parallelen Ebenen. Folglich wird die Ebenennormalrichtung verwendet, um eine Distanzverteilung zu berechnen. Dies ermöglicht das Projizieren eines 3D-Punkts in eine eindimensionale Richtung, beispielsweise wird jeder 3D-Punkt, der zu der Ebene 1 611 gehört, in einen Spitzenwert in eine Distanzdimension entlang der Richtung des Ebenennormalvektors gruppiert. Wenn zwei Punkte zu der gleichen Ebene gehören, können sie in den gleichen Spitzenwert in der Distanzdimension projiziert werden. Andernfalls gehören sie zu verschiedenen parallelen Ebenen. Die Projektionsrichtung, die parallel zu dem Ebenennormalvektor N → 610 ist, wird in der Lage sein, in diesem Fall diese zwei parallelen Ebenen zu unterscheiden.
-
Wenn eine Distanzverteilung entlang des Ebenennormalvektors verfügbar ist, kann ein kombiniertes Verfahren, das ein simuliertes Abkühlen und einen Bergsteigeralgorithmus umfasst, verwendet werden, um die Spitzenwerte zu detektieren. Simulated Annealing, bzw. ein simuliertes Abkühlen und der Bergsteigeralgorithmus sind bekannte analytische Techniken zum Identifizieren lokaler Minimum- und Maximum-Spitzenwerte, wobei der Bergsteigeralgorithmus zum Erkennen von Aufwärts- und Abwärts-Operationen verwendet wird und das simulierte Abkühlen angewendet wird, um sowohl lokale Minimum- als auch Maximum-Spitzenwerte zu erkennen. Diese Spitzenwerte repräsentieren Segmente paralleler Ebenen, die verwendet werden, um die Daten zu erkennen und zu segmentieren, um einen oder mehrere Spitzenwerte in einem Distanzraum zu detektieren.
-
Wieder mit Bezug auf 2 werden, nachdem die verschiedenen Ebenen mit den gleichen Normalvektoren bei verschiedenen Höhen unter Verwendung der Distanzverteilungsspitzenwerte separiert wurden (250), die planaren Daten in ein oder mehrere Bereiche auf der gleichen Ebene segmentiert, d. h. in planare Bereiche segmentiert (260), wobei vorzugsweise eine Strategie mit radialer Begrenzung des nächstgelegenen Nachbarn (RBNN-Strategie von radially bounded nearest neighbor) kombiniert mit einem Prozess des Suchens des nächstgelegenen Nachbarn auf der Grundlage einer Zellteilung verwendet wird. RBNN-Strategien sind bekannt und umfassen, dass Punktwolken, die innerhalb eines bestimmten Radius gelegen sind, zur Analyse einer Gruppe zugeordnet werden. Das RBNN-Verfahren wird vorzugsweise mit einer Verbesserung der Suche des nächstgelegenen Nachbarn auf Grundlage einer Zellenabweichung angewendet, um die Verarbeitung zu beschleunigen und damit die Ausführungszeit zu reduzieren. Die RBNN-Strategie ist zum Detektieren flacher Kästchen und flacher Oberflächen mit hoher Genauigkeit in der Lage. Alle Punkte auf einer Ebene werden in Zellen mit der gleichen Größe unterteilt und jede Zelle repräsentiert einen Satz von Punkt. Es werden Zellen gewählt, die eine Menge von Punkten aufweisen, die größer als ein vordefinierte Schwellenwert ist. Bei allen gewählten Zellen werden Nachbarzellen durch 3×3-Masken definiert. Folglich umfasst das Segmentieren der planaren Daten in einen oder in eine Vielzahl gleicher planarer Bereiche das Transformieren aller Punkte in jedem der planaren Bereiche auf der gleichen Ebene in eine XOY-Ebene, d. h. die Ebene, die rechtwinklig zu ihrer Normalrichtung ist. Ein größtes Rechteck wird erkannt, in gleiche Zellen unterteilt und Zellen, die mindestens einen Punkt enthalten, werden gewählt. Das Gruppieren wird auf der Grundlage einer Regel, dass zwei benachbarte Zellen Punkte in der gleichen Gruppe aufweisen sollen, bewerkstelligt. Diese Herangehensweise kann beliebige Gestalten auf der Grundlage der lokalen Dichte beim EPS-Nachbar für vieldimensionale Daten erkennen. In einer Ausführungsform werden 37 Millisekunden benötigt, um 100.000 Punkte zu verarbeiten, was diesen Abschnitt des Prozesses geeignet für eine Echtzeitanwendung macht, um eine planare Oberfläche zu erkennen. Wie es beschrieben und verwendet wird, liegt jeder Nachbar in einer 3×3-Matrix. Durch Unterteilen der Daten in Zellen und Betrachten der Zelle als Punkte kann die Anzahl der analysierten Punkte um einen Faktor von 40 bis 50 reduziert werden, wobei die Berechnungszeit zur Nachbarsuche unverändert bleibt. Eine planare Oberfläche wird auf der Grundlage der planaren Bereiche erkannt (270) und diese Iteration endet (280).
-
Das Verfahren zur schnellen Segmentierung planarer Oberflächenbereiche wird schnell ausgeführt. Die hauptsächliche Verringerung der Berechnungszeit liegt in dem Schritt der Spitzenwertdetektion unter Verwendung des Einheitskugelnetzes in dem IJK-Raum, d. h. in Schritt 240. Folglich können hauptsächlich planare Oberflächen unter Verwendung dieses Verfahrens erkannt werden. Daher kann eine automatische visuelle Teileuntersuchung in Echtzeit verwendet werden, um die Produktqualität in einer Produktionsumgebung zu verbessern.
-
7 zeigt auf graphische Weise Ergebnisse des Ausführens der schnellen Segmentierung planarer Oberflächenbereiche, was umfasst, dass alle Punkte in jedem der Bereiche auf der gleichen Ebene in eine XOY-Ebene 705 transformiert werden, d. h. die Ebene, die rechtwinklig zu der Normalrichtung ist. Indem die Punkte in eine Richtung projiziert werden, die parallel zu der Ebenennormalrichtung ist, können wie gezeigt zwei Bereiche 710 und 720 unterschieden werden.
-
Die genaue Beschreibung und die Zeichnungen oder Figuren unterstützen und beschreiben die vorliegenden Lehren, aber der Umfang der vorliegenden Lehren wird alleine durch die Ansprüche definiert. Obwohl einige der besten Arten und andere Ausführungsformen zum Ausführen der vorliegenden Lehren im Detail beschrieben wurden, existieren verschiedene alternative Konstruktionen und Ausführungsformen, um die vorliegenden Lehren, die in den beigefügten Ansprüchen definiert sind, in die Praxis umzusetzen.