Einleitung und problemstellung in fotos und bild

Hat die Objekterkennung in Fotos oder Videobildern eine große Bedeutung. In immer mehr Bereichen werden Bilderkennungsalgorithmen eingesetzt, um Produkte zu verbessern oder für die Kunden attraktiver zu machen. Autoindustrie werden z. W. Objekterkennungsverfahren eingesetzt Verkehrsschilder oder Gefahrsituationen schneller und unermüdlich zu erkennen und den Fahrer aktiv durch Anzeigen oder akustische darauf hinzuweisen.

Weiterhin dienen Bildverarbeitungsalgorithmen und natürlich auch die Objekterkennung in Produktionsbereichen zur Qualitätssicherung, um Produktfehler oder eine schlechte Produktqualität automatisiert zu und die zu steigern.

Problemstellung der Objekterkennung

Ziel dieser Arbeit soll es sein - und Nachteile. Im weiteren Verlauf der Arbeit sollen anhand einer Beispiel­anwendung 45 verschiedene Objekte (siehe Anhang 10.2 Teileliste) mit einem bild­verarbeitungs­gestützten Program erkannt werden. Dabei sollen die vorgestellten Objekt­erkennungs­algorithmen ausprobiert und evaluiert werden.

Gliederung der Arbeit

Im Anschluss an das einleitende erste Kapitel im nachfolgenden zweiten Kapitel die Grundlagen der Bildverarbeitung kurz angerissen werden. Hier wird näher auf die Bild­erfassung Segmentierung und die Klassifikation.

Um das Thema nicht nur rein theoretisch abzuhandeln im dritten Kapitel die System­umgebung für die beschrieben. Dabei wird die Electronics und die Application HALCON 9.0 näher erläutert, die bei der Konzeption und Verifikation von Bild­erkennungs­verfahren unterstützt, bevor diese letztendlich in eigene Softwareprodukte einfließen können. Hier wird auf die Funktionalität dieses mächtigen Softwarewerkzeugs eingegangen und einzelne Funktionen genauer beleuchtet.

Das vierte Kapitel beinhaltet die evaluierenden Objekterkennungsalgorithmen. Dabei werden diese Strategien und auf ihre Eignung für die Problemstellung der Objekt­erkennung dieser Arbeit eingegangen. Die vorgestellten Klassifizierungsstrategien sind das Clusterverfahren, einfache Zuweisungen , Netze und der Matching­assistent welcher auf Theme, in der Programmierumgebung HDevelop von HALCON -Corresponding basiert.

In Kapitel der Einsatz der Application HALCON 9.0 für die Problemstellung demonstriert und die Schwierigkeiten bei der Objekterkennung sowie der Vorverarbeitung für die verschiedenen Objekterkennungsalgorithmen aufgezeigt. Ein weiterer Punkt dieses Kapitels ist eine detaillierte Quellcode-Beschreibung des Programms mit den besten Erkennungsquoten.

Im sechsten Kapitel werden die Erkennungsquoten des implementierten Objekterkennungsalgorithmus und die aufgetretenen Probleme erläutert.

Die Zusammenfassung der Arbeit ist in sieben zu finden that are Kapitel. Außerdem beinhaltet dieses Kapitel noch einen Ausblick auf weitere Problemstellungen.

In Kapitel acht und neun das Literatur- und das Abbildungsverzeichnis aufgeführt.

Im Anhang sind die wichtigsten Quellcodes sowie eine Teileliste zur Überprüfung der Richtigkeit bei der Objekterkennung und eine Featuretabelle die verschiedensten Featurewerte für die einzelnen Objekte vergleichen zu können that is angefügt.

2. Bildverarbeitungsgrundlagen

Die Bildverarbeitung fasst viele Verfahrensschritte zusammen (vgl. [NEUM05]). Dazu gehören die bildhafte Erfassung von Objekten, die Bearbeitung der Bilder, die Segmentierung, das Gewinnen von graphischen Informationen und die darauf basierende Klassifizierung.

Abbildung 2.1: Verfahrensschritte der Bildverarbeitung

Dem ersten Schritt der Bildverarbeitung, Bei der Bilderfassung, wird das optische Bild in verarbeitbare Signale umgewandelt. Außerdem spielt die Objektbeleuchtung in diesem Schritt eine wichtige Rolle. Die Vorverarbeitung beinhaltet Verarbeitungsschritte zur Bildverbesserung, die durch werden können. Bei der Segmentierung werden relevante Bildinhalte hervorgehoben z. W. bestimmte Objekte oder Konturen. Außerdem kann bei der Segmentierung nach bestimmten Objekten in einem Bild werden. In der Merkmalsextraktion werden die segmentierten Objekte charakterisiert. Dabei werden definierte Merkmale z. W. Die Fläche oder die den zugewiesen, Rundheit. Bei der Klassifikation werden die charakterisierten Objekte den definierten Objektklassen zugeordnet.

2.1 Bilderfassung

Die Lösung eines Issues kann mit qualitativ hochwertigem Bildmaterial that is algorithmische vereinfacht werden. Dies muss der Bilderfassung, im ersten Schritt der Bildverarbeitung werden.

Auf Beleuchtung zu achten, Eine wichtige Bedingung bei der Bildaufnahme ist, um Helligkeitsverläufe innerhalb gleichfarbiger Regionen zu vermeiden. Außerdem soll ein Schattenwurf der sowie Spiegelungen (z. W. der Lichtquelle) vermieden werden, da es sonst in späteren Verarbeitungsschritten zu Problemen oder falschen Ergeb­nissen führen kann. Weiterhin ist es von Vorteil da therefore die Unterscheidung zwischen Objekt und Hintergrund bei der Segmentierung vereinfacht wird.

Das Bild sollte damit keine Verzerrungen entstehen, von oben aufgenommen werden. Dafür kann ein Stativ verwendet werden, damit keine Verwackelungen oder „schräge“ Bilder entstehen. Die Entfernung zwischen Objekt und Kamera sollte bei allen Aufnahmen immer gleich sein, damit keine ungewollten Vergrößerungen bzw. Verkleinerungen zwischen den Einzelaufnahmen entstehen. Dies kann ebenfalls durch ein Stativ und eine Feststellfunktion der Kamera gewährleistet werden.

Prozess der Bilderfassung

Zeitabhängige, Nach der Aufnahme ist das Bild eine zweidimensionale, kontinuierliche Verteilung von Lichtenergie. Um diese Verteilung von Lichtenergie als ein digitales Bild auf dem Pc zu bekommen sind drei Schritte erforderlich (vgl. [BURG06]):

1. Die kontinuierliche Lichtverteilung muss räumlich abgetastet werden.

2. Die daraus resultierende Funktion muss zeitlich werden, um ein einzelnes Bild zu erhalten.

3. Die einzelnen in eine Anzahl möglicher Zahlenwerte werden, damit sie am Pc darstellbar.

Bei der räumlichen Abtastung (1.) handelt es sich um den Übergang von einer kontinuierlichen zu einer diskreten Lichtverteilung. Dies geschieht durch die Geometrie des Aufnahmesensors.

Bei der zeitlichen Abtastung (2.) erfolgt die Messung der Lichtmenge durch die einzelnen Sensorelemente. Dies geschieht durch die Steuerung der Belichtungszeit.

Die Quantisierung der Pixelwerte (3.) geschieht durch Analog Digital-Wandlung. Dabei werden die Bildwerte auf eine endliche Menge von Zahlenwerten abgebildet.

Nach diesen drei Schritten liegt das Bild als diskrete Funktion vor und als zwei­dimensionale, regelmäßige Matrix von Zahlen beschrieben. Bei Farbbildern müssen die einzelnen Farbkomponenten decay, grün und blau getrennt voneinander (zeitlich oder räumlich) aufgenommen werden.

Beleuchtung

Es gibt unterschiedliche Arten der Beleuchtung sowie Leuchtmittel. Wahl der Beleuchtung trägt wesentlich zum Gelingen eines Bildverarbeitungs­projektes bei. Ziel ist es, eine räumlich homogene und zeitlich stabile Beleuchtung über den gesamten auszuwertenden Bereich (ROI - Area of Curiosity) zu garantieren und damit Bilder mit optimalem Kontrast zu erhalten.

Gibt es zwei that are prinzipiell grundverschiedene Auflicht is, died by Beleuchtungsarten - .

Bei der Durchlichtbeleuchtung befindet sich die Lichtquelle gegenüber der Kamera und dazwischen befindet sich das Objekt. Der Nachteil dieser Lösung ist, dass dabei keine Farberkennung möglich ist, da sich lichtundurchlässige Objekte nur mit ihrer Kontur abzeichnen. Lediglich bei lichtdurchlässigen Objekten ist eine Farberkennung möglich. Der Vorteil ist, dass es keine störenden Schattenwürfe gibt. So kann die Kontur der Objekte nahezu akkurat werden. Eignet sich diese Methode nur für Verfahren, bei denen die Farbe der Objekte bzw. die Oberflächenstruktur keine Rolle spielen. Weiterhin ist durch die Anordnung von Kamera und Lichtquelle, dieses Verfahren nicht für alle Anwendungsfälle realisierbar, da es nicht immer möglich ist Lichtquelle hinter den Objekten zu positionieren.

Bei der Auflichtbeleuchtung befindet sich die Beleuchtung auf der gleichen Seite des Objektes wie die Kamera. Von Vorteil ist, dass Farben bei dieser Methode erkennbar sind. Dass störende Schatten entstehen können, Der Nachteil hierbei ist, was problematisch der.

2.2 Bildvorverarbeitung - Filter

Filter sind Operationen, bei ein Eingangsbild mit Hilfe von mathematischen Funktionen zu einem Ausgangsbild umgerechnet wird. Sie dienen der Bildverbesserung bzw. der Aufbereitung der Bilder für spätere Erkennungsschritte (z. W. Kantendetektion). Filter arbeiten mit einem so genannten Filterfenster bzw. Strukturelement vorgegebene quadratische Umgebungen von Bildpunkten that is meist sind. Dabei können die Fenster beispielsweise 5x5 sein. Die Pixel in Filterfenster werden meist mit Gewichten versehen, damit näher liegende Pixel stärker und weit entfernte schwächer werden that is berücksichtigt.

In HALCON stehen einfache Strukturelemente (Rechtecke und Kreise mit beliebigen Abmessungen bzw. Radien) zur Verfügung. Sie sind nicht bzw. Verkleinern Objekte allen Seiten.

Lineare und nichtlineare Filter, es gibt zwei Arten von Filtern.

2.2.1 Lineare Filter

Lineare Filter sind lineare homogene Funktionen und werden auch als Faltung bezeichnet. Sie besitzen eine Change und.

Bei linearen Filtern wird die Größe und Type des Filterfensters sowie die dazugehörigen Gewichte eine Matrix von Filterkoeffizienten angegeben, die Filtermatrix that is genannte.

Eine Filteroperation wird durchgeführt, indem eine Filtermatrix (Filteroperator) punktweise über das zu filternde Bild geschoben wird. Dann wird im gefilterten Bild dem Zentrumspixel die Summe der mit der Filtermatrix multiplizierten Bildpunkte des Ursprungsbildes zugewiesen (siehe Abbildung 2.2). Bei Farbbildern wird dieser Prozess für jede.

Es gibt zwei Arten von linearen Filtern, die Glättungs- und die Differenzfilter.

Glättungsfilter/Tiefpassfilter (z. W. Container-Filter, Gauß-Filter)

Der bei variierenden Grauwerten angewendet that is schnell, um auszugleichen. Diese Schwankungen werden meist durch Rauschen verursacht. Um diese Schwankungen zu glätten, wird der mittlere Grauwert im Filterfenster berechnet und das Ergebnis in das aktuelle Pixel des Ergebnisbildes (das mittlere Pixel des Filterfensters) geschrieben.

Die Grauwertspitzen verschwinden durch die Mittelung des Grauwertes über die Filtermatrix. Leider sind Strukturen und Kanten nach der Filterung unscharf that is feine. Desto besser wird die Glättung, Je größer das Filterfenster ist, aber es gehen auch umso mehr Informationen verloren.

Differenzfilter/Hochpassfilter (z. W. Laplace-Filter)

Während beim Glättungsfilter die ausgeglichen werden that is Grauwertunterschiede, werden sie bei dem Differenzfilter verstärkt. Kanten oder anderen sprunghaften Grauwertschwankungen, Der Differenzfilter eignet sich bestens zur Hervorhebung von Linien. Die Umsetzung ist wie beim Glättungsfilter that is programmtechnische. Der Differenzfilter und enthalten that is damaging.

Zur Veranschaulichung sind in Abbildung 2.3 Beispiele für lineare Filter mit ihrer Filtermatrix aufgeführt.

Abbildung 2.3: Beispiele für lineare Filter [BURG06]

(a) Box-Filter; (b) Gauß-Filter; (c) Laplace-Filter

2.2.2 Nichtlineare Filter (morphologische Filter)

Morphologische Bildoperatoren verändern die Type von Objekten in einem Bild. Dabei wird die Nachbarschaft eines Bildpunktes mit einbezogen. Nichtlineare Filter keine Procedure und benötigen mehr Rechenaufwand, als die linearen Filter. Fehlerhafte Störungen, weiterhin dienen sie dazu, so genannte Artefakte z. W. Dass mehrere eigentlich voneinander getrennte Objekte über Brücken miteinander verbunden sind oder das Objekte Konturen besitzen that is weird, die keinerlei zu korrigieren, Ähnlichkeit mit den Originalobjekten haben. Dabei wird mit einem vorgegebenen Strukturelement das Bild zeilenweise abgetastet und an jedem Ort die darunter liegenden n, Grauwerte als eine geordnete Folge zusammen­gefasst. h. Die Folge beginnt mit dem Grauwert und endet mit dem größten. Je nach Filter wird dann ein Pixel aus dieser sortierten Folge ausgewählt (z. W. Minimal oder Maximum). Dadurch werden diese Filter auch Rangordnungsfilter genannt. Im Folgenden sollen beispielhaft ein paar wichtige nichtlineare Filter kurz vorgestellt werden.

Medianfilter

Der Medianfilter ist im Gegensatz zum Mittelwert-Owner (wie er beim Glättungs- oder Differenzfilter vorhanden ist) ein kantenerhaltender Glättungsfilter, der aber durch seinen Sortiervorgang mehr Rechenzeit in Anspruch nimmt. Er dient zur Unterdrückung von punktförmigen Störungen ein unscharfes Bild zu erzeugen. Die Funktionsweise des Medianfilters ist, dass der Grauwert des aktuellen Pixels durch den.

Durch eine kleine Modifikation des Medianfilters kann eine Erosion (Schrumpfung) und eine Dilatation (Ausdehnung) einer Area erreicht werden. Es können auch Erosion und Dilatation, und umgekehrt, hintereinander ausgeführt werden (Starting/Final). Dabei kann das Ergebnis einer und andersherum, Erosion nicht durch eine Dilatation , werden.

Minimumfilter (Erosion)

Der Minimumfilter entfernt Randpixel von Objekten und z. W. Zur Schrumpfung oder zur Beseitigung kleiner heller eingesetzt. Bei diesem Owner werden die Grauwerte des aktuellen Pixels durch den kleinsten Wert der geordneten Folge ersetzt.

Beim Minimumfilter werden die Spitzen hoher Grauwerte entfernt ein unscharfes Bild zu erzeugen.

Maximumfilter (Dilatation)

Der Maximumfilter vergrößert vorhandene Objektstrukturen durch Hinzufügen von neuen Pixeln und dient z. W. zur Füllung kleiner Löcher oder zum Vereinigen von Pixelgruppen. Im Grunde ist die Dilatation nichts anderes als die Erosion des Hintergrundes. Dabei wird der Grauwert des aktuellen Pixels durch den maximalen Wert der geordneten Folge ersetzt.

Beim Maximumfilter werden kleine Flecken von niedrigen Grauwerten entfernt und Spitzen von hohen Grauwerten vergrößert.

Starting

Beim Starting nach einer Erosion that is folgt eine Dilatation. Dies dient zur Trennung von Objekten, die miteinander verbunden sind oder zum Löschen von kleinen Mengenelementen. Ein Nachteil dabei ist, dass damit kleine Löcher wachsen können. Mit dem Starting-Owner können auch bestimmte Formen im Bild oder detektiert werden that is beseitigt.

Ending

Das Shutting dient dazu, dass nicht zusammenhängende that is kleine n, Bildbereiche geschlossen werden. h. dass kleine Löcher verschwinden, die bei der Segmentierung entstanden sind. Wenn auf eine Dilatation eine Erosion folgt. Der Nachteil dabei ist, dass zuvor getrennte Objekte zusammenwachsen können.

2.3 Segmentierung

Ziel der Segmentierung ist es, ein Bild zu erhalten, indem wichtige Regionen hervorgehoben werden und sich vom Hintergrund unterscheiden lassen (siehe Abbildung 2.4). Die Segmentierung stellt eine Zerlegung einer Menge von Pixeln. Dabei muss die Zerlegung überdeckungsfrei und eindeutig sein. Außerdem muss jeder Bildpunkt genau einem Objekt bzw. Section zugeordnet werden.

Es gibt viele Segmentierungsverfahren. Sie können in punktorientierte-, kantenorientierte-, regionenorientierte- und regelbasierte eingeteilt werden that is Verfahren. Da für diese Arbeit nur das punktorientierte Verfahren benutzt wurde auch nur auf dieses näher eingegangen.

Abbildung 2.4: Beispiel einer Segmentierung, (1) Originalbild; (2) erkannte Regionen

2.3.1 Punktoperationen

Punktoperationen sind Operationen auf Bilder, die der Größe oder lokalen Bildstruktur sich ziehen, sondern nur die Werte der einzelnen Bildelemente betreffen (vgl. [BURG06]). Dabei wird jedes Pixel unabhängig von anderen betrachtet und segmentiert.

Einige Beispiele für Punktoperationen sind:

- Änderung von Kontrast und Helligkeit,

- Beschränkung der Ergebniswerte (clambing),

- Invertieren von Bildern,

- Schwellwertoperation (thresholding).

Da die Schwellwertoperation eine wichtige Punktoperation ist und diese in der vorgegebenen Problemstellung der Objekterkennung wird in Arbeit nur auf eingegangen. Das Schwellwertverfahren ist eine effektive Methode zur Segmentierung von Bildern, bei ein großer Kontrast zwischen dem Objekt und dem Hintergrund vorliegt. Der Rechenaufwand ist dabei sehr gering und der Algorithmus liefert immer getrennte Regionen zurück.

Bei der Schwellwertoperation werden die Bildwerte in zwei Klassen aufgeteilt, wobei die erste Klasse den Hintergrund (Wert 0) und die zweite Klasse das Objekt bzw. die Objekte (Wert 1) repräsentiert. Die Klassen sind abhängig vom Schwellwert (limit value). In dieser Punktoperation werden alle Pixel einem von zwei fixen Intensitätswerten zugeordnet dass nach der Procedure ein Binärbild entsteht.

Um einen geeigneten Schwellwert festlegen zu können, Histogramme that is helfen. Kompakt sichtbar gemacht. Lassen sich dann die Größe des effektiv genutzten Intensitätsbereiches und die Gleich­mäßigkeit der Häufigkeitsverteilung ablesen.

Bei einem Grauwert-Histogramm kann die Häufigkeitsverteilung der Grauwerte eines Bildes abgelesen werden (Beispiel siehe Abbildung 2.5). Dabei zeigt es zu jedem möglichen Grauwert die Anzahl der Pixel an, die Grauwert haben. Auch wenn die Ortsinformationen der Pixel verloren gehen, sind sehr hilfreich bei der Segmentierung. Ein geeigneter Schwellwert kann z. W. Das im Histogramm gezeigte Minimum sein that is comparable. Z. W. ein Wert von ca. 160 als limit price für die Segmentierung werden.

Abbildung 2.5: (1) Originalbild; (2) Grauwert-Histogramm

2.3.2 Regionenmarkierung

Durch die Punktoperation ist welche Pixel zum Vordergrund und welche zum Hintergrund gehören. Bei der Regionenmarkierung wird herausgefunden zu einem Objekt gehören. Ein Objekt ist eine Gruppe von aneinander angrenzenden Vordergrundpixeln. Um ein Objekt zu erhalten, werden die segmentierten Regionen in zusammenhängende zerlegt that is Bereiche. Dabei werden zueinander benachbarte Pixel schrittweise zu Regionen zusammengefügt. Dies ist z. W. mit einer 8er-Nachbarschaft möglich. Dabei gehört ein Pixel einem Objekt an, wenn es direkt oder straight an einem seiner Bildpunkte angrenzt. Alle Pixel, die innerhalb einer Area sind, erhalten eine eindeutige Identifikationsnummer (tag).

Um in HALCON zusammenhängende Regionen zu berechnen der link-Owner verwendet.

2.4 Merkmalsextraktion

Nach der Trennung der Objekte/Regionen vom Hintergrund müssen einige Eigenschaften aus den Objekten gesammelt werden, damit diese beschrieben und später klassifiziert werden können.

2.4.1 Formmerkmale (Functions)

Sind bestimmte numerische oder qualitative Merkmale einer Area, die aus ihren Bildpunkten berechnet werden. Damit eine Area möglichst eindeutig beschrieben wird verschiedene Attributes zu einem Vektor kombiniert. Dieser dient als eine Art Signatur für die Area, damit die Area bei einer Klassifizierung von anderen werden kann that are unter­schieden.

Im Folgenden werden einige Merkmale beschrieben, die für die Bearbeitung der Problem­stellung benutzt wurden. Dabei steht in den Klammern hinter dem Merkmal der dazugehörige HALCON-Owner.

Umfang (contlength)

Der Umfang einer Area wird durch die n, Länge ihrer Kontur. h. Die bestimmt, Anzahl der Randpixel eines Objekts, wobei die Area zusammenhängend sein muss.

Fläche (area_center)

Die Fläche bei einem Binärbild ist die Anzahl der Bildpunkte, die zum Objekt gehören. Dabei werden die Pixel aufsummiert, die dem Objekt angehören.

Rundheit (roundness)

Die Maßzahl für die Rundheit wird aus dem Umfang und dem Flächeninhalt des segmentierten Objektes ermittelt. Die Rundheit eines Objekts wird auch als Kompaktheit bezeichnet. Sie wird wie folgt berechnet:

E = U2 / (4? * F)

Dabei ist der Wert für E gleich eins, wenn es sich um einen Kreis handelt. Der Wert für E wird umso höher, je größer der Umfang eines Objektes im Verhältnis zu seinem Flächeninhalt ist.

Dieses Merkmal kann werden, um längliche Objekte von Objekten zu unterscheiden. Mit der Rundheit der Abstand der Kontur zum Schwerpunkt der Fläche untersucht.

Exzentrizität (eccentricity)

Die Exzentrizität ist die Länglichkeit einer Area. Sie wird über die Momente (siehe Abschnitt „Momente“) bestimmt.

Das Merkmal der Exzentrizität ist eine die Area umhüllende Ellipse mit maximalem Seitenverhältnis und wird wie folgt definiert:

Eccentricity(R) = [[m20(R) - m02(R)]2 + 4* [m11(R)]2] / [m20(R) + m02(R)]2

Dieses Maß ergibt Werte zwischen null und eins. Dabei hat ein rundes Objekt die Exzentrizität von null und ein extrem lang gezogenes Objekt den Wert eins.

Die Exzentrizität berechnet drei Formmerkmale, die aus den geometrischen Momenten hergeleitet sind. Die Anisometrie (Anisometry), die Massigkeit (Bulkiness) und den Strukturfaktor (StructureFactor).

Anisometry = Ra / Rb

Bulkiness = ? * Ra * Rb / Y

StructureFactor = Anisometry * Bulkiness -1

wobei

.

Kreisförmigkeit (circularity)

Bei der Kreisförmigkeit wird die Ähnlichkeit der Area mit einem Kreis berechnet. Die Ähnlichkeit wird wie folgt definiert:

D = Y / ( max2 * ?)

Dabei ist Y die Fläche der Location und max der maximale Abstand vom Schwerpunkt zu allen Konturpunkten. Wenn der Formfaktor D gleich ist, handelt es sich um einen Kreis that is eins. Der Formfaktor ist kleiner als eins, wenn die Area lang ist oder Hohlflächen cap that is gestreckt.

Durchmesser einer Area (diameter_region)

Beim Durchmesser einer Region der zweier Randpunkte einer Area that is maximale berechnet. Dabei werden die Koordinaten der beiden Extrempunkte und der Abstand zwischen diesen Punkten zurückgegeben.

Intensität/Helligkeit (intensity)

Mit der Intensität werden der Mittelwert und die Abweichung der Grauwerte des Eingabe­bildes innerhalb der Regionen berechnet.

Rechteckigkeit (rectangularity)

Bei diesem Merkmal wird die Rechteckigkeit der Eingaberegion berechnet. Dabei wird ein Rechteck ermittelt, welches die gleichen ersten und zweiten Momente besitzt wie die Eingabe­region. Wird die Differenz zwischen dem Rechteck und der Eingabe­region berechnet und somit wird das Rechteckigkeitsmaß erhalten.

Konvexe Hülle, Konvexität, Dichte (convexity)

Die Konvexität wird mit

D = Fo / Fc

berechnet. Wobei Fo die Originalfläche der Location und Fc die Fläche der konvexen Hülle ist.

Die konvexe Hülle kann mit morphologischen Operationen bestimmt werden.

Schwerpunkt (area_center)

Der Schwerpunkt berechnet sich aus dem Mittelwert der Zeilen- bzw. Spaltenkoordinaten aller Punkte einer Area. Wenn die Koordinaten vom Objektschwerpunkt bekannt kann leicht erkannt werden, ob der Schwerpunkt innerhalb des Objektes liegt oder nicht. Kann ein einfaches Entscheidungsmerkmal bei der Objekterkennung sein.

Bei HALCON wird der Schwerpunkt zusammen mit der Fläche berechnet.

Momente (moments_region_central_invar)

Momente dienen zur Formbeschreibung. Mit dem Moment 2. Ordnung beginnt die über der da das Second 1, Flächenmessung hinausgehende Evaluate der Type. Ordnung per Definition ist und das Second. Ordnung die Fläche eines Grauwert- bzw. Binärobjekts liefert. Die drei Momente 2. Ordnung (m2,0; m0,2; m1,1) sind wie in der Mechanik zu verstehen. Sie sind das Trägheitsmoment für die Turn des Objekts um seinen Schwerpunkt. Die Momente erhalten Terme, in denen die Dichte des Objekts mit dem Quadrat der Entfernung vom Schwerpunkt multipliziert wird.

Die zentralen Momente (I1, I2, I3, I4) werden wie folgt berechnet:

I1 = m20m02 - m112

I2 = (m30m03 - m21m12)2 - 4(m30m12 - m212) (m21m03 - m122)

I3 = m20(m21m03 - m122) - m11(m30m03 - m21m12) + m02(m30m12 - m212)

I4 = m302m023 - 6m30m21m11m022 + 6m30m12m02(2m112 - m20m02) + m30m03(6m20m11m02 - 8m113) + 9m212m20m022 - 18m21m12m20m11m02 + 6m21m03m20(2m112 - m20m02) + 9m122m202m02 - 6m12m03m11m202 + m032m203

Dabei ist das erste Second (I1) der Erwartungswert. Das zweite zentrale Second (I2) ist die Varianz. Das dritte zentrale Second (I3) ist nach Normierung die Schiefe (Symmetrie einer

Verteilung zum Mittelwert) und das vierte zentrale Second (I4) ist nach Normierung die Wölbung (Kurtosis und Exzess).

Die normierten zentralen Momente (PSI1, PSI2, PSI3, PSI4) sind invariant, n. h. Die bei Bewegung und linearer Change unverändert bleiben. Diese werden wie folgt berechnet:

PSI1 = I1 / m4

PSI2 = I2 / m10

PSI3 = I3 / m7

PSI4 = I4 / m11

Dabei ist michael = m00 = Fläche der Area. Die Momente dienen zur Erkennung von Objekten, die in vorliegen.

Orientierung (orientation_region)

Die Orientierung ist die n, Richtung der Hauptachse. h. Die Achse, die den Schwerpunkt und der höchsten Ausdehnung einer Area verläuft. Sie wird mit Hilfe der normierten zentrierten Momente berechnet.

Die Orientierung Phi ist definiert durch:

Phi = -0.5 * atan2(2.0 * m11,m02 - m20)

Abbildung 2.6: (1) Objekte; (2) Objekte mit Orientierungspfeil

In Abbildung 2.6 ist ein Beispiel dafür, wie die Orientierung von Objekten angezeigt werden kann, um zu verdeutlichen that is visuell.

2.4.2 Farben

Farben sind auch ein wichtiges Merkmal von Objekten. Sie sind ein einfaches und sehr wichtiges Unterscheidungsmerkmal.

2.4.2.1 RGB-Farbbilder

RGB-Farbbilder sind eine Kombination aus den drei Primärfarben Decay (R), Grün (H) und Blau (W). Das RGB- n, Farbsystem ist additiv. h. die Farbmischung erfolgt durch Inclusion einzelner Farbkomponenten, ausgehend von schwarz.

Der RGB-Farbraum bildet einen dreidimensionalen Würfel (siehe Abbildung 2.7), wobei die Koordinatenachsen den drei Primärfarben R, GARY und W entsprechen. Dabei sind die RGB-Werte positiv und haben den Wertebereich [ 0,255 ]. Jede mögliche Farbe (Fi) entspricht einem Punkt innerhalb des Farb­würfels mit den Komponenten Fi = (Ri, Uniform, Bi), wobei 0 ? Ri, Uniform, Bi ? 255.

Abbildung 2.7: Farbwürfel [UNIM1]

Ein Farbbild setzt sich aus drei Graubildern zusammen, wobei jedes Graubild für die jeweiligen Farbwerte von Decay, Grün und Blau steht. So ergibt sich schwarz, haben dabei alle den Minimalwert, bei dem Maximalwert weiß.

2.4.2.2 HSI-Farbraum

Im HSI-Farbraum werden die Farben durch den Farbton (Color), die Sättigung (Saturation) und die Intensität (Strength) beschrieben.

Abbildung 2.8: Farbkreis im HSI-Farbmodell [NEUM05]

Die Farbtöne werden durch Winkelkoordinaten festgelegt. Dabei ergeben alle Farbtöne zusammen den Farbkreis (siehe Abbildung 2.8). Wenn der Farbton z. W. Auf handelt es sich um decay, bei 120° um grün und bei 240° um blau.

Die Sättigung gibt die Stärke der Farbkonzentration in einem n, Objekt an. h. wie viel weißes Licht dem Farbton beigemischt ist. Bei Sättigung = 0 z. W. ist keine Farbe zu sehen, es handelt sich dann um einen Grauton. Im Farbkreis ist die Sättigung der Abstand vom Mittelpunkt.

Die Intensität gibt an, mit welcher Lichtstärke eine Farbe zu sehen ist, n. h. wie viel Gesamt­licht vorhanden ist. Der HSI-Farbraum entspricht einer Zylinderform ist die Intensität die Koordinate zur Bildebene that is senkrechte.

Die Umwandlung in den - da dabei nur ein Parameter als Merkmal (Farbton) für die Unterscheidung werden muss. Im RGB- werden dafür alle drei Farbkomponenten benötigt.

In Abbildung 2.10 wird das Originalbild (Abbildung 2.9) in seine drei Farbkomponenten Decay, Grün und Blau, aufgeteilt. Dabei gibt es für jeden Farbkanal ein eigenes Bild. In Abbildung 2.11 ist das in dem HSI-Farbraum umgewandelte Originalbild zu sehen. Die drei Bilder den Farbton, die Sättigung und die Intensität.

Abbildung 2.9: dreikanaliges Originalbild

Abbildung 2.10: RGB-Bild, (1) Rot-Kanal; (2) Grün-Kanal; (3) Blau-Kanal

Abbildung 2.11: HSI-Bild, (1) Farbton; (2) Sättigung; (3) Intensität

Der Owner decompose3 von HALCON wandelt ein dreikanaliges Bild in drei einkanalige Bilder um, n. h. aus dem Originalbild wird das Decay-, Grün- und Blaubild.

Mit dem Owner trans_from_rgb aus der HALCON-Bibliothek wird ein Bild vom RGB-Farbraum in einen anderen Farbraum (z. W. HSI) transformiert.

Die Umrechnungsformel für die Change in bedroom HSI-Farbraum ist:

.2.5 Klassifikation

Ziel der Klassifikation ist es, die durch die Segmentierung gefundenen Objekte und deren Merkmale zu charakterisieren. Dabei gibt es mehrere Klassifikationsverfahren. Da die Objekt­­erkennungsalgorithmen ein wesentlicher Bestandteil dieser Arbeit sind und detaillierter beschreiben werden, wird darauf erst 4 näher eingegangen.

3. Systemumgebung

Kapitel wird die Equipment und die Application, die bei dieser Arbeit verwendet wurden.

3.1 Equipment

Um herauszufinden, Für diese Arbeit wurden drei Kamerasysteme getestet, welche am die Problemstellung ist. Folgende Kamerasysteme kamen dabei zum Einsatz:

- Casio Exilim,

- Logitech Cam,

- UEye.

Die ersten Tests wurden mit der Digitalkamera Casio Exilim durchgeführt. Mit dieser Kamera war es schwierig gleichmäßig ausgeleuchtete Bilder zu erhalten. Waren hier der Automatikmodus und das Blitzlicht. Das Blitzlicht führte zu einem starken Schattenwurf, der sehr negativ auf die Erkennung auswirkte. Ohne Blitzlicht dagegen war die Ausleuchtung der Bilder zu bzw. Mit einer anderen Lichtquelle für eine geeignete Aus­leuchtung that is musste gesorgt werden. Der Automatikmodus musste deaktiviert werden that is ebenfalls, um unterschiedliche Bildausleuchtungen und unterschiedliche zu vermeiden. Ein weiteres Problem war eine fehlende Möglichkeit, die Kamera an einem festen Punkt zu um Bilder mit einem konstanten Abstand und einer einheitlichen Kamera­perspektive zu erhalten. Aus diesen Gründen wurde die diese Kamera einzusetzen, Idee, verworfen.

Die Cam von Logitech zu kleine Auflösung und zusätzlich das Issue, dass die Einstellungen z. W. Helligkeit, Kontrast nicht manuell werden konnten. Die Kamera hat sich automatisch justiert that is lasting. Dies führte dazu, dass die Aufnahmen immer anders waren und diese Bilder nicht für die Erkennung werden konnten. Das größte Issue waren die starken Helligkeitsunterschiede in den Bildern.

Mit der UEye Kamera wurden die besten Ergebnisse erzielt. Dies lag daran, dass die Einstellungen der Kamera komplett gesteuert werden konnten. Konnten für jede Problemstellung optimale gefunden werden that is Einstellungen, die auch durch blieben that is erhalten. Ein weiterer Vorteil battle die so dass bei allen, Verfügbarkeit eines Stativs für diese Kamera Aufnahmen eine identische Kameraperspektive und - abstand werden konnte.

Für eine möglichst gleichmäßige Beleuchtung eine ringförmige Leuchtstoffröhre verwendet, die oberhalb der Kamera positioniert wurde. So konnten die Bilder gleichmäßig werden that is ausgeleuchtet, ohne dass die Kamera ein Schatten wurde. Durch diese Ausleuchtung der Schattenwurf der zu erkennenden Teile weitestgehend werden.

Abbildung 3.1: Arbeitsbereich

In Abbildung der Aufbau und die Anordnung der Hardwarekomponenten veranschaulicht. Dieser Arbeitsbereich kam bei der Versuchdurchführung und Bildaufnahme zur Anwendung.

3.2 Software - HALCON

HALCON ist ein Bildanalysesystem der Firma MVTec der Bildung und der Forschung entwickelt wurde. In dieser Arbeit wurde die Version 9.0 der Software verwendet. Die Application bietet eine große Bibliothek, die ein breites Spektrum an Bildverarbeitungsmethoden beinhaltet. Sie umfasst mehr als 1400 Operatoren -evaluate bereitstellen. Im Folgenden wird auf die Bestandteile und Funktionen eingegangen. Eine ausführliche Beschreibung aller Möglichkeiten, die HALCON den Rahmen dieser Arbeit sprengen that is bietet.

3.2.1 Aufbau

HALCON besteht aus (siehe Abbildung 3.2):

- der interaktiven Programmierumgebung HDevelop,

- Klassen, die bedroom Programmiersprachen C, C++, D#, Visualbasic und Delphi die Bibliothek zur Verfügung stellen,

- einer großen, umfassenden Bibliothek von Bildbearbeitungsoperatoren (HALCON Image-Processing Collection),

- der Extension Offers -Schnittstelle, die es dem Benutzer ermöglicht bestehende oder neue Algorithmen in HALCON zu integrieren,

- der Image Acquisition Software -Schnittstelle (Bildeinzugsschnittstelle).

Abbildung 3.2: Architektur des HALCON-Methods [HALC1]

3.2.2 HDevelop

HALCON bietet die interaktive Programmierumgebung HDevelop einen Translator mit Debug-Funktionen, eine Verwaltungseinheit für Variablen und umfangreicher Visualisierungsmöglichkeiten verfügt. Ein Programm indem, in HDevelop entsteht die vorgegebenen Operatoren ausgewählt und mit sinnvollen werden. Nach dem Einfügen in den Quellcode das entstehende modifiziert und getestet werden that is Programm. Außerdem verfügt HDevelop über einige Assistenten, die es ermöglichen komplexe Aufgaben, wie Corresponding oder Bildeinzug, durch wenige Mausklicks über die zu steuern.

Abbildung 3.3: HDevelop-Programmierumgebung

In der HDevelop-Umgebung gibt es vier Hauptfenster, das Grafik-, das Variablen-, das Owner- und das Programmfenster (siehe Abbildung 3.3).

Das Grafikfenster dient zur Visualisierung der Unique- und der bearbeiteten Bilddaten. Es können mehrere angelegt werden. So wichtigen Bilddaten übersichtlich strukturiert angezeigt und bei Bedarf jeder Verarbeitungsschritt visualisiert werden.

Im Variablenfenster werden die Inhalte der verwendeten Variablen schon während der Lauf­zeit angezeigt. Dabei kann zwischen den verschiedenen Variablen gewechselt werden einen guten Überblick zu erhalten.

Die zentrale Aufgabe des Operatorfensters ist die bzw. Veränderung der verwendeten Operatoren. Die Eingabe erfolgt strukturiert über Masken, in denen Standard-Werte für die vorgeschlagen werden. Die strukturierte Type der Eingabe verringert die Gefahr von Syntaxfehlern. Weiterhin ist vom Operatorfenster aus ein direkter Zugriff auf die Online- .

Im Programmfenster wird der Quellcode des Programms dargestellt. Außerdem können Haltepunkte und einzelne Zeilen aktiviert bzw. deaktiviert werden. Ein Programm kann auch im Simple-Action- wobei im Programmfenster verfolgt werden kann, Modus ausgeführt werden, welche Programmzeilen ausgeführt wurden und wo sich das Programm befindet. Therefore ist es möglich, das Programm zu debuggen und Fehler schnell zu finden.

Im Owner-werden alle zur Verfügung stehenden Operatoren, die in Klassen eingeteilt angezeigt. Wenn dort ein Owner ausgewählt wird im in dem Operatorfenster übernommen und angezeigt. Dann die eingegeben bzw. Die Standard- werden. Wenn die Parameter dann mit werden, wird der Owner mit den gewählten Parametern im Quelltext übernommen.

Über das Visualisierungs- die Bilder und Regionen, die im Programmverlauf erzeugt wurden die angezeigt werden, Ergebnisse der einzelnen Bildverarbeitungsschritte. Weiterhin gibt es im Visualisierungs-Menü verschiedene zusätzliche Bearbeitungs- bzw. Anzeigemöglichkeiten Ideen für die Programmverbesserung testen bzw. zu erkennen. So können z. W. Angezeigt und analysiert werden, um sinnvolle limit- zu bestimmen.

Mit dem Hilfe- kann das erreicht werden that is Referenzhandbuch, in dem die Beschreibungen der verschiedenen Operatoren und die einzelnen Parameter beschrieben sind.

Mit dem Assistenten-Menü können der Matching-Assistent und der Bildeinzugs- werden, die es durch wenige Mausklicks erlauben, komplexe Aufgaben über die zu steuern.

Beim Erstellen eines HDevelop- . Der nächste Operator durch direkte Eingabe im Operatorfenster oder Auswahl des Menü­punktes ausgewählt. Nach der bestätigenden Eingabe der Parameter wird im Programmfenster an der aktuellen Einfügeposition der Quelltext für diesen Owner eingefügt. Die Einfüge­position wird ein kleines Dreieck Place- .

4. Objekterkennungsalgorithmen

In diesem Kapitel werden vier verschiedene vorgestellt. Dabei handelt es sich um die Zuweisung -Verfahren, das Trainieren durch künstliche neuronale Netze und den Matching­assistenten von HALCON Entwicklungsumgebung HDevelop, welcher auf Theme-Corresponding basiert.

4.1 Zuweisung

Objekte zu klassifizieren stellt die manuelle Zuweisung gefundener Objekte zu den einzelnen Objektklassen dar. Dabei werden im ersten Schritt alle wichtigen Objektmerkmale definiert. Für jede Objektklasse werden dann anhand einiger sinnvoller Beispielbilder die Werte für die jeweiligen Merkmale berechnet. Anschließend wird für alle Merkmale jeder Objektklasse der Wertebereich ermittelt. Im Programm wird dann für jede Objektklasse der ermittelten Merkmalswerte that is tatsächlich geprüft, ob alle in den jeweils definierten Wertebereichen für die liegen. Das der Fall ist dass das Objekt dieser Objektklasse zugeordnet wird. Nicht alle Merkmale in den definierten Bereichen wird der Wertebereich der nächsten Objektklasse geprüft that is liegen. Dieser Vorgang wird wiederholt, bis die erkannten Merkmale einer Objektklasse werden können oder alle Objektklassen ohne Ergebnis geprüft wurden.

Im Folgenden soll ein Beispiel dieses demonstrieren:

Objekt

Merkmal

Kleinster Wert

Größter Wert

Objekt 1

Flächeninhalt

500

600

Objekt 1

Farbwert

120

160

Objekt 2

Flächeninhalt

550

650

Objekt 2

Farbwert

200

230

Quellcode zur Objektklassifikation (Pseudosprache):

if ((Flaecheninhalt >= 500) && (Flaecheninhalt <= 600) &&

(Farbwert >= 120) && (Farbwert <= 160)) Print(„Objekt 1 erkannt“);

otherwise if ((Flaecheninhalt >= 550) && (Flaecheninhalt <= 650) &&

(Farbwert >= 200) && (Farbwert <= 230)) Print(„Objekt 2 erkannt“);

Der Vorteil eines solchen Verfahrens liegt in der Einfachheit der Methode. Sich, sofern die ist, sehr implementieren.

Der Nachteil ist, dass das Verfahren nur wenn sich die Wertebereiche zweier Objektklassen alle Merkmale überlappen. Kann es vor­kommen, das der Fall ist, dass ein Objekt nicht eindeutig einer Objektklasse zugeordnet werden kann. Die Methode mit Wahrscheinlichkeiten oder Abständen zu einem definierten Merkmals­mittelwert mit holiday definierten Wertebereichen that is arbeitet . Eine Zuordnung ist nicht möglich. Ein weiteres Problem wenn nur ein Merkmalswert außerhalb des definierten Wertebereiches für die richtige Objektklasse denn dann kann das Objekt dieser Klasse nicht mehr zugeordnet werden that is minimum.

Ein weiterer Nachteil ist, dass zur Description des Wertebereichs sehr viele Testbeispiele für jede werden, um bei unterschiedlichen Rahmenbedingungen (z. W. Lichtverhältnisse, Bildrauschen) eine gute Erkennungsrate zu erreichen oder es muss eine sinnvolle Toleranz an den Wertebereichsgrenzen zugelassen werden, was sich aber wiederum negativ auf die Erkennung auswirken kann.

Aufgrund dieser Gegebenheiten kann werden, dass dieses Verfahren zwar einfach umzusetzen aber aufgrund der fehlenden Robustheit gegenüber unterschiedlicher nicht geeignet ist für eine gute Objekterkennung.

4.2 Clusterverfahren

Die Clusteranalyse ist ein statistisches, heuristisches Verfahren zur systematischen Klassifizierung von Beobachtungen. Ziel der Clusteranalyse ist es, eine gegebene Menge von Objekten in Bunch (Gruppen, Klassen) einzuteilen. Dabei sollte n, innerhalb der Bunch Homogenität herrschen. h. Objekte, die demselben Bunch ähnlich sein und zwischen den Clustern Heterogenität that is angehören, n. h. Objekte die Clustern zugeordnet sind, sollten möglichst verschieden sein (vgl. [HÖPP97]).

Die Klassenverteilung sollte n, disjunkt. h. Jedes Objekt gehört genau zu einer Klasse und exhaustiv. h. Sein, Objekte müssen zugeordnet werden. Ein weiterer Grundsatz der Clusteranalyse ist, dass die Clusteranzahl möglichst klein gewählt werden sollte, da die Berechnungszeit sonst zu groß wird. Es gibt sieben unterschiedliche Techniken der Cluster­analyse: das unvollständige-, das deterministische-, das überlappende-, das probabilistische-, das possibilistische-, das hierarchische- das „Objective-Function“ Clusteranalyse­verfahren. Da für das Problem der Objekterkennung nur das probabilistische Clusteranalyse­verfahren in Frage kommt hier nur auf dieses weiter eingegangen.

Bei dem probabilistischen Clusteranalyseverfahren jedes Objekt eine Wahrscheinlichkeits­verteilung über den Clustern bestimmt, die angibt, mit welcher Wahrscheinlichkeit ein Objekt einem Bunch zugeordnet wird. Ein Beispiel für dieses Clusterverfahren ist das „k-nearest neighbour“-Verfahren. Dabei wird der nächste Nachbar aus der gesamten Objektmenge ermittelt. Dafür wird mit der Euklidischen Distanz (Abstandsberechnung) die Entfernung zwischen den zugeordneten Merkmalen und allen anderen Merkmalen berechnet. Danach wird der jeweilige e Nachbar durch die Distanz ermittelt. Liegen dabei alle e Merkmale in einem Bunch, so das Objekt diesem Bunch zugeordnet. Liegen dabei nicht alle e Parameter in einem Cluster n, dem Mehrheitsprinzip entschieden. h. das Objekt wird dem Bunch zugeordnet, aus dem die Mehrzahl der nächsten Nachbarn stammt.

Euklidische Distanz:

Dabei ist xi der jeweils ermittelte Merkmalswert und yi der optimale Vergleichs­merkmals­wert. Der euklidische Abstand ist bzgl. Drehung und Spiegelung, Verschiebung, aber invariant bei der Skalierung.

Bei dieser Distanzberechnung werden zwei Objekte als wenn Distanz sehr klein ist, sehr ähnlich bezeichnet. Dabei bedeuten große Distanzen, dass eine geringe Ähnlichkeit vorliegt. Wenn die Distanz gleich ist, sind die zwei Objekte identisch.

Beim Clusterverfahren gibt es zwei Phasen, die Einlern- und die Klassifikationsphase. In der Einlernphase werden anhand des bekannten Testsatzes Bunch gebildet und bei der Klassifikations­phase wird für ein unbekanntes Objekt durch Vergleich seines Merkmals­vektors mit dem der bekannten Bunch eine Klassifikation durchgeführt. Es ist meist sinnvoll eine Zurückweisungsklasse einzuführen, in der alle Bildpunkte werden, wobei der Abstand zu der dem Zurück­weisungsradius, nächstliegenden Musterklasse größer als ein Schwellwert, sein muss. Durch diesen Minimal-Distanz-Klassifikator mit festem Zurückweisungsradius werden die Musterklassen im zweidimensionalen Merkmals­raum durch Kreise angenähert.

Dieses Verfahren ist für die Problemstellung der Objekterkennung mit dem vorgegebenen Datensatz der zu erkennenden Objekte nicht da der Datensatz zu groß ist und dadurch keine repräsentativen Ergebnisse zu erwarten sind und der Rechenaufwand zu groß wird. Das „nearest neighbour“-Verfahren neigt außerdem zur Kettenbildung. Da dicht aneinander liegende Elemente, dabei werden viele große Bunch gebildet, die nicht genau werden können, zu unterschiedlichen Gruppen gehören. Des Weiteren wird dieses Verfahren von HALCON und müsste somit werden.

Neuronale Netze, 4.3 Instruction

Künstliche neuronale Netze imitieren die Companies- und Verarbeitungsprinzipien des menschlichen Gehirns. N, Sie zeichnen sich durch ihre Lernfähigkeit. h. Sie können eine Aufgabe anhand von Trainingsbeispielen erlernen ihre Fehlertoleranz, ihre hohe Parallelität bei der Informations­verarbeitung und ihre Robustheit gegen kleine Störungen und Datenmängel aus.

Neuronale Netze beschäftigen sich mit Eigenschaften von Netzen mit primitiven Funktionen (vgl. [ROJA96]). Dabei sitzen die primitiven Funktionen an den Knoten (Neuronen) des Netzes und sind meist nicht mehr als eine Summary von Informationen und/oder eindimensionaler nichtlinearer Funktionen. Neuronale Netze bestehen aus Verbindungen (Kanten) und Neuronen, die die Funktionsauswertung durchführen. Die Informations­übertragung findet nur über die Kanten des Netzes statt, wobei die Weitergabe der Data über ein Kantengewicht modelliert wird, n. h. Die Info wird mit einen numerischen Faktor multipliziert und auf diese Weise that is weitergeleitete skaliert. Es gibt gewichtete und ungewichtete Netze. Da sich bei den ungewichteten Netzen die Netztopologie (Verbindungsmuster) durch Lernalgorithmen verändern kann, werden diese hier nicht weiter berücksichtigt.

Die werden verarbeitet, indem sich die Neuronen mit Hilfe von gerichteten Verbindungen untereinander aktivieren. Die idealisierten einem Gewichtsvektor, Neuronen bestehen aus einem Eingabevektor, einer Aktivierungsfunktion und einer Ausgabe­funktion.

Bei künstlich neuronalen Netzen handelt es sich um eine Art Blackbox, die aus einer Eingabemenge eine bestimmte Ausgabemenge erzeugen soll (siehe Abbildung 4.1).

Abbildung 4.1: künstliches neuronales Netz (Black-Box)

In der Blackbox können mehrere vorhanden sein. Dies wird als Schichten­architektur bezeichnet, wobei es eine Eingabeschicht (x1, …, xn), eine Ausgabeschicht

(y1, …, ym) und d verborgene Schichten gibt. Dabei sind die Neuronen einer Schicht nicht miteinander verbunden. Die Neuronen benachbarter Schichten sind n, in einem totalen bipartiten Graphen angeordnet. h. jedes Neuron in der einen wird mit jedem Neuron in der benachbarten Schicht verbunden (siehe Abbildung 4.2).

In der Eingabeschicht erfolgt keine Verarbeitung, es werden nur die Eingabewerte auf die Eingabewerte der ersten verdeckten Schicht verteilt. Die Ausgabeschicht liefert die Ausgabe­werte des gesamten Netzes.

Abbildung 4.2: Schichtenarchitektur eines neuronalen Netzes

Da der Trainingsaufwand durch die Anzahl der Gewichte eines Netzes mit jedem Neuron es einige unterschiedliche Lernmethoden that is steigt. Eine populäre Lernmethode ist der Backpropagation-Algorithmus. Dabei wird das Minimal der Fehlerfunktion eines bestimmten Lernproblems durch Abstieg in der Gradientenrichtung gesucht. Die Lösung des Lernproblems ist die Kombination der Gewichte eines Netzes, die die minimiert. Ein Problem dabei ist, dass abhängig vom Initialisierungswert des Zufallszahlen­generators (RandSeed), der zur Initialisierung des neuronalen Netzes mit zufälligen Werten verwendet wird, ein relativ hoher Fehler als optimaler Wert bestimmt werden kann. N. h., dass die Optimierung in einem lokalen Minimal stecken bleiben kann. Comes dies der Fall ist.

Je größer das Netz ist, desto stärker wird die zerklüftet that is Fehleroberfläche. Das bedeutet, dass die Anzahl der lokalen Minima steigt und dies es, das Minimum zu finden.

Backpropagation- wenn Eingaben auf Ausgaben abgebildet werden sollen, Netze werden dann verwendet. Dabei besteht das Lernproblem darin die genauesten die Trainingsausgabewerte den entsprechenden Trainings­eingabewerten zuordnet. Die Funktionen lassen sich durch die Änderung der Netzgewichte verändern.

!!

Vor jeder Ausgabe gibt es eine Aktivierungsfunktion, mit der die Ausgabe berechnet wird. Es gibt unterschiedliche Arten von Aktivierungsfunktionen, die lineare, die Schwellwert- .

Bei der linearen Funktion (siehe Abbildung 4.3) wird der Merkmalsraum in aufgeteilt, dies entspricht einem Klassifikator. Da bei dieser Funktion die Einsatzmöglichkeiten eingeschränkt sind diese in der Praxis verwendet.

Abbildung 4.3: lineare Funktion [WIKI2]

Die Schwellwertfunktion (siehe Abbildung 4.4) erlaubt es, diskrete Ausgangsaktivierungen zu erzeugen. Darum sind eine weit verbreitete Aktivierungsfunktion.

Datei:HardLimitFunction.png

Abbildung 4.4: Schwellwertfunktion [WIKI2]

Die verbreitetste Aktivierungsfunktion ist die Sigmoidfunktion (siehe Abbildung 4.5). Sie gehört zu der Klasse der semilinearen Funktionen, wobei der Vorteil darin liegt, dass sie differenzierbar ist.

Außerdem glättet die Sigmoidfunktion die Fehlerfunktion.

Datei:SigmoidFunction.png

Abbildung 4.5: Sigmoidfunktion [WIKI2]

Bei der Backpropagation wird die Sigmoidfunktion als Aktivierungsfunktion verwendet. Sie wird wie folgt definiert:

Die Funktionsweise des iterativen Verfahrens (Backpropagation-Algorithmus) läuft wie folgt ab (vgl. [NISC07]):

1. Am Anfang erhalten die Gewichte der Neuronen einen zufälligen Wert.

2. Ein zufälliges Trainingspaar wird ausgewählt.

3. Der Ausgabevektor wird mit Hilfe der Vorwärtsfunktion berechnet.

4. Daraus wird ein Fehlermaß zwischen dem Ausgabevektor und dem Sollvektor berechnet.

5. Dann werden die Gewichte modifiziert, dass das minimiert wird.

6. Die Schritte solange wiederholt, bis das Fehlermaß n, akzeptabel klein ist. h. bis eine bestimmte Schwelle erreicht wird oder eine vorgegebene Anzahl von Durchläufen erreicht ist.

In diesem Ablauf werden die Schritte 2 und 3 als Vorwärtsschritt und die Schritte 4 und 5 als Rückwärtsschritt (Backpropagation) bezeichnet.

Je komplexer die Ein- und Ausgabebeziehungen sind und je größer die desto mehr verdeckte Neuronen, Anzahl der zu lernenden Merkmalszuordnungen. Dabei sollte aber die Anzahl der verborgenen Schichten und die Anzahl der Neuronen pro Schicht möglichst gering sein, da bei zu großer Anzahl der Generalisierungseffekt schwindet, n. h. die Fähigkeit, die Beziehung zwischen nicht gelernten Objekten, korrekt wiederzugeben. Dieses Problem tritt auf, wenn zu lange trainiert wird.

Der Ablauf der Klassifikation mit neuronalen Netzen kann zum einen in die Classes, in Bereiche aufgeteilt werden - und zum anderen in die Klassifikationsphase.

In der Trainingsphase werden zuerst die Trainingsbilder geladen und eingelesen. Danach werden anhand der Bilder für jedes Objekt die Merkmale berechnet und daraus that is definierten die aufgebaut. Die Trainingsdaten werden nun vom neuronalen Netz trainiert. Dabei werden die Verbindungsgewichte gemäß dem Lernalgorithmus (z. W. mit dem Backpropagation-Algorithmus) selbstständig so angepasst, dass das neuronale Netz die gewünschte Aufgabe lösen kann. Das Ziel des Classes ist es, unbekannte gelernte Eingabemuster zu verarbeiten.

In der Klassifikationsphase werden ebenfalls Bilder geladen, für die die Objekterkennung durchgeführt werden soll. Hier genau wie beim Education für jedes im Bild gefundene Objekt der Merkmalsvektor berechnet. Dann wird dieser Merkmalsvektor dem Netz übergeben und that is trainierten die Klassifizierung gestartet. Das Ergebnis ist trainierte der das Objekt zugeordnet wird. Wenn das Netz gute cap that is Generalisierungs­eigenschaften, ist das Ergebnis mit hoher Wahrscheinlichkeit die Objektklasse.

Ein großer Vorteil dieses Verfahrens ist, dass die Objekterkennung anhand von Trainingsbeispielen werden kann. Des Weiteren zeichnet sich die hohe Parallelität bei der Informationsverarbeitung sehr positiv aus. Selbst komplexe Objekterkennungsaufgaben können mit einer hohen Efficiency verarbeitet werden. Die hohe Fehlertoleranz und Robustheit gegen kleine Störungen und Datenmängel sind ein weiterer Pluspunkt für dieses Verfahren. Ein Nachteil bei neuronalen Netzen ist, dass es schwierig ist eine optimale Netztopologie aufzustellen. Um geeignete Parameter für die Eingabe-, verdeckte und Ausgabeschicht zu sind viele Tests und Auswertungen nötig. Ein weiterer Nachteil ist, dass der Algorithmus stecken bleiben kann und somit nicht die optimalen Erkennungsraten erreicht.

Aufgrund der Vor- und Nachteile und der Tatsache, dass dieser Erkennungsalgorithmus auch für eine große Anzahl von Objekten ist dieser für die Problemstellung der Objekterkennung verwendet werden. Dass dieses Verfahren von HALCON.

4.4 Matchingassistent

Der Matchingassistent in der Entwicklungsumgebung HDevelop von HALCON basiert auf Theme-Matching (Schablonenvergleich). Bei dem formbasierten Matching eine Schablone von der Area erzeugt mit den erkannten Objekten verglichen wird. Dabei wird das Objekt als Theme gespeichert und dann wird jeder Bild­punkt und seine Nachbarschaft überprüft, wie groß die Ähnlichkeit zu dem Theme ist. Das Theme-Corresponding ist sehr.

Der Vorgang beim Theme-Corresponding ist, dass eine Schablone (Theme) des zu erkennenden Objektes über ein Testbild geschoben wird. Dabei wird bestimmt sich die unter der Schablone befindliche Area mit dem Objekt übereinstimmt. Dies wird solange wiederholt, bis die Schablone über allen Positionen des Bildes in allen möglichen Orientierungen wurde. Da dieses Verfahren sehr aufwändig ist, ist es nur für eine geringe Anzahl von Objekten geeignet.

Beim Theme-Corresponding wird im Trainingsbild ein Theme angezeigt. Aus diesem Theme wird ein Modell erzeugt. Dieses Modell wird Objekte im Testbild zu finden, verwendet, die Ähnlichkeit mit dem Theme haben.

Das Theme-Corresponding erfordert keine Art der Segmentierung und der Turn und der Lage des Objektes ist, ist und flexibel der Größe, dies ist allerdings.

HALCON bietet mehrere Methoden für das Theme-Coordinating an. Diese sind das grey-worth-based- , das form -based- , das element -based- , das relationship -based-, das viewpoint, deformable-, das descriptor-based-, das 3D- und das stage- matching.

Der Matchingassistent in der Systemumgebung HDevelop nur die form-based matching. Diese Methode ist gegenüber that is strong Rauschen und Stördaten. Außerdem ist sie invariant gegenüber der Skalierung und der Turn.

Der Prozess des form-based matching unterteilt. In der ersten Phase wird das Modell beschrieben und erstellt. Es kann in mehreren Anwendungen werden in einer Datei und. Im zweiten Schritt wird das Modell ein Objekt zu finden und zu lokalisieren.

Im Folgenden wird der Matchingassistent von HDevelop vorgestellt.

Abbildung 4.6: Matching-Assistent (Modellerzeugung)

In der Modellerzeugung (siehe Abbildung 4.6) kann ein bereits erzeugtes Modell geladen und bearbeitet oder ein neues Modell erstellt werden. Beim Neuerstellen eines Modells wird zuerst ein Bild (Modellbild) geladen, auf dem das zu erkennende Objekt abgebildet ist. Dann muss in das geladene Bild von Palm die ROI (Area of Curiosity) erstellt werden. Dabei können die Regionen in achsenparalleles Rechteck, ein beliebiges Rechteck, ein Kreis, einer Ellipse oder einer beliebigen Form werden. Um die zu fixieren that is Area, muss die rechte Maustaste werden. Aus der Area in der ROI dann automatisch ein Modell erzeugt. Daraus automatisch erstellten Modellparameter können auch von Palm definiert und eingestellt werden. Thus können hier beispielsweise Skalierungseinstellungen oder Einstellungen zum Kontrast vorgenommen werden, die die Erstellung des Modells beeinflussen.

Abbildung 4.7: Matching-Assistent (Modellanwendung)

In der Modellanwendung (siehe Abbildung 4.7) können Testbilder geladen werden, auf dem das erstellte Modell gefunden werden soll. In der Modellanwendung die Suchparameter verändert und die optimiert werden. Bei der Optimierung können die Optimierungsart und die eingestellt werden that is Erkennungsrate. Als Optimierungsart zwischen verschiedenen Herangehensweisen gewählt werden. Die ist „Anzahl der in obiger Tabelle angegebenen Instanzen finden“, die ist „Mindestens eine Modellinstanz pro Bild finden“ und die ist „Maximale Anzahl von Modellinstanzen pro Bild finden“. Mit dem Parameter „Erkennungsrate“ kann die Erkennungsrate in Prozent angegeben werden, die bei der Objektsuche mindestens oder genau sein muss.

Abbildung 4.8: Matching-Assistent (Inspektion)

Bei der Inspektion (siehe Abbildung 4.8) können die Erkennungsraten bestimmt und die Statistiken ausgelesen werden. Dies dient dazu, dass die eingestellten Parameter getestet und bei schlechten Ergebnissen verändert werden können. Bei dieser Bestimmung der Erkennungsrate lassen sich die Parametereinstellungen leicht überprüfen und testen ohne, dass der Quellcode generiert werden muss. Dies erspart sehr viel Zeit und lässt sich auslesen.

Abbildung 4.9: Matching-Assistent (Codegenerierung)

Die Codegenerierung (siehe Abbildung 4.9) ermöglicht es auf schnelle Weise den Quellcode zu generieren. Dabei können die Variablennamen festgelegt werden, die werden sollen. Eine weitere Auswahl ist, ob das Modellbild zur Laufzeit angezeigt oder direkt die Modelldatei geladen werden soll. Außerdem verfügt die Funktion über eine Codevorschau, in der der Quellcode in einer Tabellenform dargestellt.

In Abbildung 4.10 und Beispiele für Modellbilder und ihre daraus erstellten Modell- zu erkennen.

Abbildung 4.10: (1) Originalbild „grüne Steine“; (2) Modell-Kontur „grüne Steine“

Abbildung 4.11: (1) Originalbild „Rad“; (2) Modell-Kontur „Rad“

Der Matchingassistent ist prinzipiell eine gute und einfache Möglichkeit ohne Hintergrund­wissen ein einfaches Objekterkennungsverfahren zu entwerfen und zu implementieren. Eignet sich dieses nur, wenn die Anzahl zu erkennender Objekte klein ist und sich die Kontur der Objektoberfläche deutlich unterscheiden. Im Depth kann die Erkennungs­rate zwar mit Hilfe der Modelleinstellungen optimiert das bedeutet viel Handarbeit und es ist eine genaue Kenntnis über die Auswirkungen der einzelnen Parameter hilfreich. Dies aber den anfangs genannten Vorteil der Einfachheit dann wieder auf that are wiegt. Ein weiteres Problem ist die Markierung der ROI that is manuelle. Hier muss darauf geachtet werden, dass wirklich nur das Objekt den Hintergrund markiert wird. Bei komplizierten Objektformen kann das sehr aufwändig sein sich die Methode eher für einfache Formen, z. W. Oder runde eignet, Objekte.

Ein weiterer großer Nachteil des Matchingverfahrens ist die Auswertung von Farbinformationen das Modell die Konturen enthält und keinerlei Farb­informationen.

In dem in der Arbeit getesteten Anwendungsfall waren die Erkennungsraten nicht besonders gut. Therefore wurden immer wieder Teile falsch oder gar nicht erkannt (zwei Beispiele, siehe Abbildung 4.12). Besondere Probleme gab es mit Teilen, die zwar eine ähnliche Oberflächenstruktur auswiesen, aber eine Type hatten. Aufgrund der schlechten Erkennungsraten und der genannten insbesondere auch aufgrund der hohen Zahl zu erkennender Objektklassen und der nötigen Unterscheidung von Farben, eignet sich der Matchingassistent nicht für die Problemstellung dieser Arbeit.

Abbildung 4.12: fehlerhafte Schablonenerkennungen

5. Problemlösung/ Strategie

Bilderfassung

Grundlage einer guten Objekterkennung sind qualitativ hochwertige Bildaufnahmen. Um diese zu erhalten die möglichst homogene Bilder Schattenwurf und mit auch bei unterschiedlichen Umgebungslichtverhältnissen, immer gleicher Farbwiedergabe, ermöglichte. Weiterhin mussten Reflektionen der Lichtquelle in den Objekten werden.

Anfangs wurde versucht, dies einer Stehlampe, mit einer indirekten Beleuchtung, zu bewerkstelligen. War die Lichtintensität nicht genug, um die Objekte und den Hintergrund gut genug auszuleuchten.

Nach langem Probieren eine ringförmige Leuchtstoffröhre verwendet, die der Kamera installiert wurde. Leuchtstoffröhren liefern ein helles, homogenes Licht und die ringförmige nahezu schattenfreies Licht, Beleuchtung liefert ein intensives, das entlang der optischen Achse der Kamera einfällt.

Weiterhin wurden Assessments mit verschiedenen einfarbigen Hintergründen (dunkelblau, schwarz, decay, weiß) durchgeführt, um zu testen, bei welchem Hintergrund der beste Kontrast zwischen den Objekten und dem Hintergrund erzielt werden konnte. Die besten Ergebnisse wurden dabei mit einem weißen Hintergrund erzielt, dort that are wobei die battle, aber dieser Nachteil in Kauf genommen werden musste.

Die Kamera an Stativ befestigt, damit keine Verwackelungen oder „schräge“ Bilder entstehen und die Entfernung zwischen Objekt und Kamera gleich bleibt, damit keine ungewollten Vergrößerungen bzw. Verkleinerungen entstehen.

Vorverarbeitung

Da die aufgenommen Bilder eine relativ haben und bei einer Filterung Informationen verloren gehen wurde auf eine Vorverarbeitung verzichtet.

Segmentierung

Um die Objekte im Bild sauber vom Hintergrund zu trennen. Das Prinzip war aber in allen Fällen das Gleiche. Eines manuell oder auto­matisch gewählten Schwellwertes wurden die segmentiert. Bei den in HALCON verfügbaren Operatoren (histo_to_thresh, auto_threshold, bin_threshold…), bei denen der Schwellwert automatisch bestimmt werden kann, führt es zwar in Einzelfällen zu sehr guten Ergebnissen, aber sie waren stark davon abhängig, wie das Verhältnis des sichtbaren Hinter­grundes zu der Gesamtfläche aller sichtbaren Objekte battle. Therefore conflict die automatische Erkennung entweder bei wenigen oder bei vielen Objekten stomach, aber nie gleichzeitig für beide Fälle. Aufgrund dessen wurde dann auf die manuelle Einstellung des Schwellwertes (limit) gesetzt.

Das größte Issue bei der Segmentierung waren die hellen bzw. Transparenten Teile. Ein etwas zu großer Schwellwert führte dazu, dass Schattenwürfe auch zum Objekt wurden. Ein zu kleiner Schwellwert führte dagegen dazu, dass Teile des Objektes als Hintergrund angesehen wurden. Nach einigem wurde hier ein Schwell­wert von 190 als ermittelt. Damit ergaben sich unter allen Gegebenheiten durchweg gute Ergebnisse bei der Segmentierung.

Merkmalsextraktion

Für die Merkmalsextraktion wurden die Functions verglichen und die aussage­kräftigsten herausgesucht, um eine gute Ausgangsbasis für die zu erhalten. Die verwendeten Merkmale sind:

- Anisometrie (Exzentrizität),

- Kreisförmigkeit,

- Rundheit,

- normierte zentrale Momente (PSI1-PSI4),

- Durchmesser von Regionen,

- Mittlerer Wert des Farbtons innerhalb der Area,

- Rechteckigkeit.

Klassifikation

Klassische Algorithmen scheitern die Bildqualität nicht gegeben ist that is vorausgesetzte. Da die Klassifikation mit neuronalen Netzen am flexibelsten ist und sie zu besseren Ergebnissen wurde dieses Verfahren für die Objekterkennung gewählt. Ein weiterer Vorteil ist, dass diese Klassifikation von HALCON.

5.1 Strategie/ Erkennungsmerkmale

Um neuronale Netze für die Objekterkennung einzusetzen, muss werden. Therefore muss festgelegt werden, wie viele Neuronen die Eingabeschicht, wie viele die Hiddenschicht (verborgene Schicht) und wie viele die Ausgabeschicht haben sollen.

Die Anzahl der Neuronen der Ausgabeschicht ist schnell geklärt und entspricht der Anzahl zu erkennender Objekte bzw. Objektansichten (von vorn, von hinten). Aufgrund bestimmter Merkmale ist es erforderlich für manche Objekte eine Objektklasse für die Vorderansicht und eine für die Ansicht von hinten zu definieren. Es für diese Objekte jeweils 2 Ausgabeneuronen.

Die Anzahl der Eingabeneuronen entspricht der Anzahl der gewählten Unterscheidungs­merkmale.

Für die Hiddenschicht ist die Auswahl der Neuronenanzahl nicht so einfach. Bei der Auswahl sollten, um eine Robustheit zu erreichen wie Neuronen werden. Andererseits wird, abhängig von der Anzahl zu unterscheidender Merkmale und Objekte, eine Mindestanzahl an Neuronen benötigt. Laut HALCON-Benutzerhandbuch sollte die Anzahl der Größenordnung der Eingabe- und Ausgabeneuronen entsprechen. Um die wurden verschiedene Einstellungen getestet, Anzahl zu bestimmen.

Die ausgewählten Unterscheidungsmerkmale für die Eingabeschicht werden durch ihre Aussagefähigkeit bestimmt. Dafür wurde eine Featuretabelle (siehe Anhang 10.3) erstellt, in der die Functions der einzelnen Lernobjekte stehen.

Um eine Aussage über einen geeigneten RandSeed-Wert und eine geeignete treffen zu können Auswertung durchgeführt werden. Dafür wurde das Programm „HiddenVerbesserung mit RandSeed-Optimierung“ erstellt, welches für jede Kombination aus Hiddenanzahlen und RandSeed-Werten die Trainingsdaten erlernte und anschließend die Fehlerrate (Anzahl nicht erkannter Teile) über alle Testbilder bestimmt hat. Dabei wurden für die Hiddenanzahl Werte von 10 bis 100 (Schrittweite 1) und für den RandSeed-Wert ebenfalls von 10 bis 100 (Schrittweite 1) durchlaufen. Alle anderen Parameter und Rahmen­bedingungen ansonsten der Testläufe that is waren jeweils identisch. Therefore ergaben sich 8281 (91 X91) Ergebnisse. Um die Ergebnisse einfacher auswerten zu können und eine gewisse Robustheit der ausgewählten Werte zu gewährleisten, wurden jeweils für jede Anzahl der Hiddenneuronen und jeweils für jeden RandSeed-Wert die durchschnittlichen Fehlerraten berechnet (siehe Abbildung 5.1 und 5.2).

Abbildung 5.1: Mittelwert für nicht erkannte Teile abhängig vom RandSeed-Wert (Programmlösung Unterscheidung)

verwendete Parameter:

create_class_mlp (9, AnzahlHidden, 45, 'softmax', 'normalization', 10, RandSeed, MLPHandle)

train_class_mlp (MLPHandle, 500, 1, 0.00001, Mistake, ErrorLog)

Features:= [Anisometry,Circularity,Roundness,PSI1,PSI2,PSI3,PSI4,Size,Imply]

Bei der RandSeed- dass die Änderung dieses Wertes keine große Veränderung der durchschnittlichen Fehlerrate bringt. Alle Werte pendeln sich um 12 herum ein. Die Schwankungen eher lassen keinen Zusammenhang der Fehlerrate that is sind mit dem RandSeed- erkennen. Daher lässt sich mit der Veränderung des RandSeed-Wertes keine Verbesserung des Classes herstellen bzw. Dann nur zufälliger Natur.

Abbildung 5.2: Mittelwert für nicht erkannte Teile abhängig von der Hiddenanzahl (Programmlösung Unterscheidung)

verwendete Parameter:

create_class_mlp (9, AnzahlHidden, 45, 'softmax', 'normalization', 10, RandSeed, MLPHandle)

train_class_mlp (MLPHandle, 500, 1, 0.00001, Mistake, ErrorLog)

Features:= [Anisometry,Circularity,Roundness,PSI1,PSI2,PSI3,PSI4,Size,Imply]

Bei der Hiddenanzahl deutlich erkennen, dass bei einer Hiddenanzahl von 10 bis ca. 23 Mittelwert der erkannten Objekte kleiner that is nicht wird. Mit weiter zunehmender Hidden­anzahl ab dem Wert 23 lässt sich dagegen keine Verbesserung erkennen. Die Schwankungen der Fehlerrate liegen im Wertebereich von ca. 23 bis 100 im eher zufälligen Bereich und lassen keinen Rückschluss auf die Qualität der Erkennung zu.

Ein weiteres Kriterium der verborgenen Schicht ist - und liegen muss that is Ausgabeschicht. Daher ist es sinnvoll, einen Wert zwischen 23 und 45 für die zu nehmen that is Hiddenanzahl. Wenn die Hiddenanzahl zu groß gewählt wird, besteht die Gefahr, dass eine Überanpassung (Overfitting) des neuronalen Netzes an die Trainingsdaten stattfindet, was zu schlechten Generalisierungseigenschaften führen kann. N. H., das neuronale Netz lernt die liefert aber für unbekannte keine besonders guten Ergebnisse, sehr gut, es lernt die Trainingsdaten quasi auswendig.

Aufgrund dieser Kenntnisse und durch einige Assessments wurde eine Hiddenanzahl von 27 und ein RandSeed-Wert von 19 verwendet. Diese Kombination führte in der Auswertung zu 4 erkannten Objekten von insgesamt 95 bei einer Konfidenz (Erkennungsqualität) von 98%.

Abbildung 5.3: Mittelwert für nicht erkannte Teile abhängig von der Hiddenanzahl (Programmlösung Rechteckigkeit)

verwendete Parameter:

create_class_mlp (10, AnzahlHidden, 45, 'softmax', 'normalization', 10, RandSeed, MLPHandle)

train_class_mlp (MLPHandle, 500, 1, 0.00001, Mistake, ErrorLog)

Features:= [Anisometry,Rectangularity,Circularity,Roundness,PSI1,PSI2,PSI3,PSI4,Size,Imply]

In Abbildung 5.3 sind die Mittelwerte für nicht erkannte Teile in Abhängigkeit von der Hiddenanzahl aufgezeigt. Diese Auswertung wurde mit dem Programm und „Objekterkennung mit erstellt. Das neuronale Netz mit einer Eingabeschicht that is wurde mit 10 Neuronen, einer verborgenen Schicht mit und einer Ausgabeschicht that is „AnzahlHidden“ mit 45 Neuronen erstellt. Der RandSeed-Wert war bei dieser Auswertung variabel und mit den Zahlen 15 bis 25 der Schrittweite 1 durchgetestet.

Aus der Auswertung wurde die Hiddenanzahl 31 gewählt, da eine Fehlerrate cap und in der Größenordung der Ein- und liegt.

Abbildung 5.4: Nicht erkannte Teile bei wechselndem RandSeed-Wert und Hiddenanzahl 31 (Programmlösung Rechteckigkeit)

Um für die gewählte Hiddenanzahl einen geeigneten RandSeed zu erhalten, wurde eine weitere Auswertung durchgeführt, in der RandSeed-Werte von 10 bis 100 mit der Schritt­weite INCH nacheinander für die Hiddenanzahl 31 getestet wurde. Aus dieser Auswertung (siehe Abbildung 5.4) lässt sich gut erkennen, dass ein RandSeed-Wert von 95 die geringste Fehlerrate ergibt. Die Fehler­rate liegt bei einer Konfidenzschwelle von 98 PERCENT bei 5 erkannten Objekten that is nicht.

5.2 Detaillierte Quellcode Beschreibung

In diesem Abschnitt auf den Quellcode für das „Training mit Unterscheidung“ und die „Objekterkennung mit Unterscheidung“ detailliert eingegangen. Dabei sollen die einzelnen Operatoren der Programmierumgebung HDevelop verdeutlicht werden.

5.2.1 Training mit Unterscheidung

Abbildung 5.5: Education mit Unterscheidung 1

In diesem Abschnitt werden die grundlegenden Einstellungen deklariert. In den ersten drei Befehlen (Zeile 5-7) wird eingestellt, wie das Verhalten beim Programmdurchlauf für den Computer, der Ausgabe und dem Variablenfenster sein soll. Wird das Anzeigefenster damit eventuelle alte Ausgaben von vorherigen Programmläufen gelöscht werden. Dann wird mit dem Befehl dev_open_window ein neues Fenster erstellt an der Koordinate (0; 0) (linke obere Ecke im Programmfenster) mit der Größe 640 * 480 Pixel, der Hintergrundfarbe schwarz und dem Namen „WindowHandle“.

In den nächsten drei Schritten werden die Anzahl der Ausgabefarben (dev_set_colored), hier „12“, der Ausfüllmodus für Regionen (dev_set_draw), hier „gefüllt“, und die Strichstärke für die Konturdarstellung, hier „3“, festgelegt.

Diese Grunddeklaration muss in Programm vorgenommen werden, da es sonst zu keiner Ausgabe kann.

Abbildung 5.6: Education mit Unterscheidung 2

Mit dem Befehl create_class_mlp wird ein neuronales Netz Inform eines mehrschichtigen Perzeptrons (multilayer perceptron) erzeugt. Das erste neuronale Netz erlernt alle 45 verschiedenen Objekte, wobei die Eingabeschicht „9“ Neuronen besitzt. Diese Neuronen stehen für die Merkmale (Functions), die für die Objekte berechnet werden. Die verborgene Schicht besitzt „27“ Neuronen und die Ausgabeschicht „45“ Neuronen. Der nächste Parameter ist die Art der Aktivierungsfunktion, wobei bei üblichen Klassifikationsaufgaben that is „softmax“, bei denen mehrere sich gegenseitig auftreten that is Klassen, angewendet wird. Mit den nächsten beiden Parametern eine Vorverarbeitung der Merkmale festgelegt werden, durch den Parameter „normalization“ werden die normalisiert, indem der Mittelwert der Trainingsvektoren von den Merkmalsvektoren abgezogen wird und die dadurch entstehenden Merkmalsvektoren durch die Standard­abweichung der jeweiligen Komponente der Trainingsvektoren geteilt wird. Dies wird angewendet, wenn die Komponenten der gemessenen Daten nicht dieselbe Einheit besitzen. Bei dieser Einstellung wird der nächste Parameter (NumComponents), hier „10“, ignoriert. Hier „19“, Beim nächsten Parameter dem RandSeed, wird der Initialisierungswert des Zufallszahlengenerators angegeben, liegt der Defaultwert that is dabei bei 42. Der letzte Parameter ist der Brand des erstellten neuronalen Netzes, um dieses im Programm eindeutig anzusprechen.

Das zweite neuronale Netz, welches erstellt dient zur Unterscheidung von zwei Objekten, die sich untereinander unterscheiden that is minimal. Dabei beträgt die Anzahl der Eingabeneuronen „2“, die Anzahl der verdeckten Schicht „2“ und die Anzahl der Ausgabeschicht auch „2“ Neuronen.

In den Zeilen 20 und 21 der Klassifikator mit Trainingsdaten versorgt. Dabei werden von jedem Objekt fünf Bilder geladen und einem Variety zugeordnet. Mit dem Owner open_file Datei geöffnet bzw. neu erstellt, in der die Werte der einzelnen Merkmale (Functions) gespeichert werden sollen. Dies hat den Zweck, das die Ergebnisse der gespeichert werden und therefore die einzelnen Werte miteinander verglichen werden können.

Abbildung 5.7: Education mit Unterscheidung 3

In diesem Quellcodeabschnitt werden aus jedem Trainingsbild die einzelnen Objekte diese im nächsten Abschnitt weiterverarbeitet werden können that is heraussegmentiert.

Zeile dieses Abschnittes wird jede einzelne Bilddatei der Trainingsbilder in einer for- Schleife. Wird dann das jeweilige Bild eingelesen und mit dev_display im Ausgabefenster angezeigt. Mit dem limit-Owner wird das Bild binarisiert, damit die einzelnen Objekte segmentiert werden können. Dabei wird das Originalbild übergeben und als Ergebnis werden die erhalten. Die untere Schwelle des Grauwertes ist „0“ und die Schwelle ist „190“. In Zeile 27 des Quellcodes wird mit dem Owner link bestimmt, welche Regionen zusammenhängen und welche nicht. Werden die einzelnen Regionen segmentiert. Um nur relevante zu wird im nächsten Owner that is Regionen mit hier der „Fläche“, Hilfe von einem Formmerkmal, die Auswahl für eine Area gewährleistet. Dabei muss eine Area mindestens „1000“ Pixel und maximum „1000000“ Pixel haben. Alle Regionen, die diesem Merkmal entsprechen werden als Objekt und im nächsten Schritt im Ausgabefenster that is deklariert angezeigt. Dann wird die Anzahl der gefundenen Objekte in der Variablen gespeichert.

Abbildung 5.8: Education mit Unterscheidung 4

Mit jedem erkannten Objekt wird dann die nächste for-Schleife durchlaufen, in der jedes Objekt einzeln selektiert wird (Zeile 33) und dann die Formmerkmale (siehe 2.4.1) berechnet (Zeile 34 bis 41) und in einem Variety gespeichert werden (Zeile 42). Hier werden jeweils die Operatoren für die Extraktion der Merkmale aufgerufen. Dabei wird, außer für das Merkmal Imply (Farbton des Objektes), jeweils die SingleRegion übergeben und als Ergebnis die Merkmale zurückgeliefert. Zur Ermittlung des Farbtons zuvor das Farbbild that is wird mit dem Owner decompose3 in drei Grauwertbilder für die Farbkomponenten decay, grün und zerlegt. Diese drei Komponentenbilder werden dann in bedroom HSI-Farbraum transformiert per trans_from_rgb. Dabei handelt es sich wieder um drei Grauwertbilder, die nun aber andere Werte widerspiegeln. Therefore beinhaltet das Bild „Farbton“ die im Bild auftretenden Farbtöne (siehe Kapitel 2.4.2). Mit diesem lässt sich leicht der mittlere Grauwert des Farbtons einer Area ermitteln. Dies wird dann auch.

Abbildung 5.9: Education mit Unterscheidung 5

In Zeile 43 werden die Functions in die oben angelegte Datei „features+Rectangularity.txt“ geschrieben und mit dem nachstehenden Befehl wird ein Zeilenumbruch in der Textdatei erzeugt. Mit dem Owner add_sample_class_mlp wird das Trainingsmuster zu den Trainings­daten des neuronalen Netzes zugefügt. In der darauf folgenden if-Anweisung wird überprüft, ob das Objekt „8“ oder „9“ vorliegt. Dies sind die Teile, die nur unterscheiden und deshalb getrennt that is minimum . Dafür ist ein weiteres Featurearray nötig. Bei dem zweiten Netz werden aber nur der Durchmesser und die Rechteckigkeit als Merkmale dem neuronalen Netz zugefügt, da diese die einzigen sind, die bei den Objekten unterscheiden. Nachdem die zwei for-Schleifen durchlaufen wird die Textdatei geschlossen und an angegebenem Pfad gespeichert. Dann ist ein Stopp eingefügt, da nun die Trainingsdaten fertig wurden und das.

Abbildung 5.10: Education mit Unterscheidung 6

Im Anzeigefenster wird in grüner Schrift „Training…“ ausgegeben (Zeile 58 bis 59). Dabei werden die zwei Netze mit dem Owner train_class_mlp trainiert (Zeile 61 bis 62). Jedes Netz wird trainiert, bis entweder die unterschritten wird, Anzahl der Iterationen des Optimierungs­verfahrens, hier „500“ hier „0,00001“. In „ErrorLog“, in dem Parameter der mittlere Fehler des Netzes den Trainingsdaten geschrieben wird die gespeichert.

Abbildung 5.11: Education mit Unterscheidung 7

Im letzten Abschnitt werden mit clear_samples_class_mlp die Trainingsdaten gelöscht und im Ausgabefenster mit dem nächsten Befehl angezeigt.

Die gelernten neuronalen Netze werden abgespeichert und dann gelöscht (Zeile 68 bis 72). Danach erscheint die Anzeige „MLPs gespeichert“ und das Programm ist beendet.

5.2.2 Objekterkennung mit Unterscheidung

Abbildung 5.12: Objekterkennung mit Unterscheidung 1

Wie beim Trainingsprogramm, im ersten Abschnitt werden, die grundlegenden Einstellungen deklariert. Der einzige Unterschied besteht darin, dass ein zweites Fenster deklariert in dem später die Erkennungsquoten und Lage der Objekte angezeigt werden sollen.

Abbildung 5.13: Objekterkennung mit Unterscheidung 2

Dann werden die im Trainingsprogramm erlernten neuronalen Netze geladen mit ihnen die Objekte klassifiziert werden können.

Abbildung 5.14: Objekterkennung mit Unterscheidung 3

In diesem Abschnitt werden in der for-Schleife Testbilder geladen und bearbeitet. Hierbei werden die wie beim Trainingsprogramm, eingelesen Bilder, binarisiert und die Anzahl der einzelnen segmentierten Regionen, therefore einer Variable zugeführt, sie den Anforderungen entsprechen, die im nächsten Abschnitt für die for-Schleife benötigt wird, gespeichert. Außerdem werden im Anzeigefenster die einzelnen gefundenen Objekte angezeigt und zwei Arrays (Zeile 35 und 36) erzeugt. Diese dienen die klassifizierten Objekte in verschiedenen Farben dargestellt werden können.

Abbildung 5.15: Objekterkennung mit Unterscheidung 4

Die zweite for-Schleife wird durchlaufen, bis jedes gefundene betrachtet wurde that is Objekt. Dabei werden die Merkmale bzw. Und in einem Merkmals­vektor abgelegt. In Zeile 48 dann der wichtigste Schritt der Klassifikation. Dabei wird der Merkmalsvektor Attributes dem neuronalen Netz übergeben, welches dann das Objekt bzw. die erkannten Merkmale der wahrscheinlichsten Klasse zuordnet. Weiterhin wird die Assurance zurückgegeben.

Abbildung 5.16: Objekterkennung mit Unterscheidung 5

Wenn das Objekt 8 oder 9 gefunden wurde, wird dieses mit dem zweiten neuronalen Netz nochmals klassifiziert und die aus dem zweiten Netz entstandene Konfidenz übernommen (Zeile 49 bis 59).

In Zeile 61 wird überprüft, ob die Konfidenz des Objektes liegt. Ist dies der Drop, therefore gilt das Objekt als erkannt und es bekommt die oben definierte Farbe zugeordnet (Zeile 62). Wenn die Konfidenz kleiner ist, erhält das Objekt die Farbe rot (Zeile 65).

Abbildung 5.17: Objekterkennung mit Unterscheidung 6

In Zeile 67 werden die Objekte im Anzeigefenster mit ihrer vorher bestimmten Farbe angezeigt. Dann wird am Schwerpunkt des Objekts die Zahl der erkannten Klasse in Klammern ausgegeben (Zeile 68 bis 71). Dies dient zur besseren Kontrolle, ob das Objekt richtig oder nicht.

Der Owner orientation_region berechnet die Orientierung der Area. In Zeile 78 wird die Objektzahl, die Konfidenz, die x- und die b-Placement im zweiten Ausgabefenster ausgegeben und mit get_tposition wird die Position. Mit dem Befehl disp_arrow wird ein Pfeil als Orientierungsanzeige in das Objekt. Im zweiten Ausgabefenster hinter der letzten Ausgabe die Orientierung geschrieben. In Zeile 89 wird, nachdem alle erkannten Objekte in der zweiten for-Schleife abgearbeitet wurden, der Inhalt des zweiten Ausgabefensters gelöscht, damit die Ergebnisse im nächsten Durchlauf dort hinein geschrieben werden können und sich nicht mit den alten Anzeigen überlagern.

Abbildung 5.18: Objekterkennung mit Unterscheidung 7

Zum Schluss werden die mehrschichtigen Perzeptrons gelöscht und damit wieder freigegeben. Das zweite Ausgabefenster geschlossen und im ersten wird die. Im Ausgabefenster „Objekterkennung beendet“ und das Programm ist beendet.

6. Ergebnisse und Diskussion

Ziel der war es, ein Objekterkennungsverfahren zu verifizieren und anhand eines konkreten Anwendungsfalls ein geeignetes Verfahren mit der Application HALCON zu implementieren. Als konkretes Beispiel wurde die Objekterkennung mit Hilfe von künstlichen neuronalen Netzen gewählt und umgesetzt. Um die zu halten und die Wiederverwendbarkeit zu wurde ein Programm für das Instruction des neuronalen Netzes und eins für die Objekterkennung that is implementiert. Dabei wurde das nach dem Instruction erhaltene neuronale Netz in einer Datei gespeichert und jeweils beim Start des Erkennungsprogramms. Mit dem Erkennungsprogramm ist es möglich, aufgenommene Testbilder oder auch Livebilder zu laden und den Erkennungsprozess durchzuführen (siehe Abbildung 6.1).

Abbildung 6.1: Originaltestbild

Als Ergebnis wird dann für jedes im Bild und klassifizierte Objekt welcher Objektklasse das jeweilige Objekt zugeordnet wurde that is gefundene. Dazu wird die Teilenummer (siehe Anhang 10.2 Teileliste) im Bild am Schwerpunkt des Objektes angezeigt. Weiterhin werden die Teile mit der ebenfalls in der Teileliste aufgeführten Farbe eingefärbt (siehe Abbildung 6.2), um die Ergebnisse der Erkennung schneller optisch überprüfen zu können. Objekte die mit einer zu schlechten Konfidenz (kleiner 90 PERCENT) erkannt werden, werden dabei rot eingefärbt. In bedroom erkannten Teilen wird außerdem die Orientierung des Objektes durch einen Pfeil angezeigt.

Abbildung 6.2: Erkannte Objekte mit Orientierungsanzeige

Weiterhin werden in einem separaten Fenster für jedes gefundene Objekt die Konfidenz, die Koordinaten vom Schwerpunkt des Objektes (in Pixeln) und die Orientierung angezeigt (siehe Abbildung 6.3).

Abbildung 6.3: Konfidenzen, Positionen und Orientierungen der erkannten Objekte

Die Ergebnisse der Erkennung waren von Anfang an recht gut. Durch die Variance verschiedener Einstellungen z. W. Der Anzahl von Hiddenneuronen und konnte Erkennungsrate sukzessiv gesteigert werden, einer unter­schiedlichen Auswahl von Objektmerkmalen.

Nach einigen Assessments konnte therefore bei Einsatz von einem neuronalen Netz zur Unterscheidung aller 84% erreicht werden, Testobjekte eine Erkennungsrate von 96. Dabei wurden 92 Teile von insgesamt 95 erkannt. Die Teile waren dabei auf 27 Testbilder aufgeteilt. Keines der Testbilder war es wurden dem Netz also Bilder präsentiert. Weiterhin wurde für die vom neuronalen Netz jeweils zurückgelieferte Konfidenz (Erkennungsqualität) ein Mindestmaß von 90% gesetzt. N. h. Ein Teil galt nur als erkannt, wenn mindestens eine Konfidenz von 90 , selbst wenn das Objekt ansonsten that is wurde eigentlich richtig worden wäre that is klassifiziert. Der Groß­teil der erkannten Teile hatte allerdings eine deutlich bessere Erkennungsqualität von über 99% (siehe Abbildung 6.4). Zusätzlich wurden die Teile that is erkannten, um die Erkennung zu verifizieren. Jedes falsch erkannte Objekt wurde erkannt“ gewertet that is therefore manuell, auch wenn die Konfidenz etwas anderes erwarten ließ. Für die Auswertung der Konfidenz-Verteilung wurde die Konfidenz in einem solchen Fall auf 0 gesetzt, so dass es der Gruppe „<90%“ zugeordnet wurde. Das neuronale Netz hatte bei dieser Auswertung 9 Eingabeneuronen, 27 Hiddenneuronen, 45 Ausgabeneuronen und ein RandSeed-Wert von 19.

Abbildung 6.4: Konfidenz-Verteilung

Die Konfidenz-Verteilung bei der Programmlösung mit einem neuronalen Netz ist wie folgt verteilt (siehe Abbildung 6.4): 86 Objekte liegen über einer Konfidenz von 99%, 4 Objekte über 95%, 2 Objekte über 90% und 3 Objekte unter 90%. Dabei werden die 3 Objekte unter 90 nicht erkannt gewertet, da die Konfidenzschwelle bei liegt.

Besondere Erkennungsprobleme gab es immer wieder mit Teil Nr. 8 und Nr. 9 (siehe Anhang 10.2 Teileliste). Diese waren beide sehr ähnlich und wurden bei der Erkennung sehr oft verwechselt. Waren sie that is farblich identisch und sie unterschieden sich nur leicht in der Type. Ein Teil battle rechteckig und das andere battle im Prinzip das gleiche Teil aber mit zwei abgerundeten Ecken. Von den Ausmaßen (Breite und Länge) waren sie identisch.

Um diese Teile besser zu unterscheiden das Issue über andere Merkmale zu lösen. Dabei wurde als zusätzliches der Umfang bzw, Merkmal zu den bereits verwendeten Merkmalen die Fläche. die Rechteckigkeit verwendet. Bei der Fläche und dem Umfang führte es zu keinen besseren Ergebnissen. Dies liegt daran, dass sich diese Merkmale nicht sonderlich unterscheiden (vgl. Anhang 10.3 Featuretabelle). Weiterhin wurden dadurch andere schlechter erkannt. Lediglich die Rechteckigkeit hat sich als ein weiteres gutes herausgestellt. In der Programmlösung mit der Verwendung Rechteckigkeit ergab sich eine dabei, Erkennungsquote von 95,79 PERCENT. Für diese Erkennungsquote wurden dem neuronalen Netz 10 Eingabe­neuronen, 31 Neuronen und 45 Ausgabeneuronen und der that is verdeckte RandSeed- .

Abbildung 6.5: Konfidenz-Verteilung Programmlösung „Rechteckigkeit“

Die Konfidenz-Verteilung bei der Programmlösung „Rechteckigkeit“ ist folgendermaßen (siehe Abbildung 6.5): 86 Objekte liegen über einer Konfidenz von 99%, 2 Objekte über 95%, 3 Objekte über 90% und 4 Objekte unter 90%. Die 4 Objekte unter 90 als nicht erkannt gewertet, da die Schwelle der Konfidenz bei liegt.

Da die Programmlösung mit der Rechteckigkeit keine besseren Ergebnisse schlechtere als die geliefert hat, wurde als weitere Lösung ein zweites neuronales Netz in das Programm eingefügt die Unterscheidung dieser Teile trainiert wurde. Dieses Netz hatte 2 Hiddenneuronen und 2 Ausgabe­neuronen, 2 Eingabeneuronen. Als wichtigste Unterscheidungs­­merkmale wurden der Durchmesser und die Rechteckigkeit ausgemacht und auch nur diese als Eingabewerte dem Netz übergeben. Im Programm wurde dann, wenn mit dem Netz Teil 8 oder 9 erkannt wurde, zusätzlich das zweite Netz diese Teile besser zu unterscheiden that is „befragt“. Das erste Netz bei dieser Programmlösung that is wurde nicht verändert. Die Erkennungsrate konnte dadurch 95 werden. Dabei wurden 94 Teile von insgesamt 95 korrekt erkannt.

Abbildung 6.6: Konfidenz-Verteilung Programmlösung „Unterscheidung“

Bei der Programmlösung „Unterscheidung“ sind die Konfidenzen wie folgt verteilt (siehe Abbildung 6.6): 88 Teile haben eine Konfidenz über 99%, bei 4 Objekten liegt sie bei über 95%, bei 2 Objekten über 90% und bei einem Objekt unter 90%. Das Objekt unter 90 als nicht erkannt gewertet, da die Konfidenzschwelle bei liegt.

Wenn mehr Merkmale werden, wirkt das auch auf die Erkennung anderer Objekte aus. Dabei kann es passieren die erkannt wurden nicht mehr erkannt werden. Daher ist die ein zweites Netz für die, um die Ergebnisse des ersten Netzes nicht zu verschlechtern.

Da die invarianten zentralen Momente PSI2 bis PSI4 bei den meisten Teilen den Wert 0 haben (siehe Anhang 10.3 Featuretabelle), gab es die Überlegung, diese wegzulassen. Aber zu schlechteren Ergebnissen in der Gesamtauswertung. Das liegt vermutlich daran, dass es für die bei denen diese Merkmale ungleich 0 sind, doch ein entscheidendes Unterscheidungskriterium ist that is scheinbar. Daher wurde die wieder verworfen.

Weiterhin wurde mit dem Programm auch die Erkennung von Livebildern getestet. Die Ergebnisse waren im Großen und Ganzen äquivalent zu den Ergebnissen der Testbilder. Allerdings zeigte sich, dass sich leichte Änderungen des Umgebungslichtes (verändertes Tageslicht) negativ auf den Erkennungsprozess auswirken können. Hier gab es z. W. Probleme mit der Erkennung eines roten Teils (Teil 29), welches bei leicht veränderten Umgebungs­licht­verhältnissen als das grüne Teil Nr. 0 erkannt wurde. Das grüne Teil ist bis auf die Farbe identisch mit dem roten Teil. Der Grund dafür ist, dass die Farbe Rot im HSI-Farbkreis genau bei 0 liegt. Da der Farbwert als Unterscheidungsmerkmal dies dazu, dass bei einer leichten Farbverschiebung, dieser Farbwert von 0 auf 255 springen kann, hervorgerufen Lichtverhältnisse oder Rauschen. Mathematisch betrachtet ist das aber ein völlig anderer Wert that is control und nicht mehr in der Nähe von 0, so dass das neuronale Netz es nicht mehr korrekt zuordnen kann. Indem die Farb­wertgrenze in Bereich verschoben wird, Dieses Problem behoben werden, der nicht bei den zu erkennenden Objekten vorkommt und der Farbwert im Programm immer umgerechnet so dass Verschiebung des Rotwertes nicht mehr zu einem solchen Leapt des Farbwertes führt. Allerdings wird das Issue dadurch auf einen anderen Farbwert verlagert.

Große Probleme gab es ebenfalls mit einem transparenten und mit einem beigen Teil. Diese konnten nicht vom weißen Hintergrund unterschieden werden, da sie sich nicht stark genug abgehoben haben. Sie waren einfach zu hell. Es war weder mit veränderten Lichtverhältnissen diese Teile sauber zu segmentieren. Teilbereiche dieser Objekte wurden immer als Hintergrund segmentiert. Das Erhöhen des Schwellwertes für die Segmentierung führte dazu, dass der Schatten der Objekte zu einem großen Teil zu dem Objekt gehörig wurde that is segmentiert alle anderen Teile schlechter erkannt wurden. Da auch vielen Tests und mit unterschiedlichen Einstellungen und Verfahren keine Lösung für dieses Problem gefunden werden wurden diese Teile im weiteren Verlauf der Arbeit ignoriert. Prinzipiell kann das Problem einen andersfarbigen Hintergrund gelöst werden. Allerdings ist egal welcher Hintergrund verwendet denn bei einer Vielzahl von Farben besteht immer das Problem die Teile, die dem Hintergrund zu nicht werden. Das Problem kann dadurch lediglich auf andere Teile bzw. Aber gelöst werden, Farben verlagert. Eine hilfreiche Lösung wäre die Verwendung eines Hintergrundes, z. W. durch den zusätzlichen Einsatz einer veränderlichen Durchlichtbeleuchtung.

7. Zusammenfassung und Ausblick

In dieser Arbeit auf die einzelnen Schritte Bildverarbeitungsgrundlagen grob eingegangen. Zu diesen Verfahrensschritten gehören die bildhafte Erfassung von Objekten, die Bearbeitung der Bilder, die Segmentierung, das Gewinnen von graphischen Informationen und die darauf basierende Klassifizierung.

Außerdem wurde das mächtige Bildanalysesystem HALCON von der Firma MVTec vorgestellt, welches zur Implementierung des Objekterkennungsalgorithmus. Mit HALCON ist es recht einfach komplexe Objekterkennungs­aufgaben zu und umzusetzen. Die umfangreiche Bibliothek an Bildverarbeitungs­operationen hält jede Aufgabe passende Möglichkeiten parat. In der Arbeit wurden nur davon genutzt.

Des Weiteren detailliert auf verschiedene Objekterkennungsalgorithmen eingegangen, die für die Problemlösung der Objekterkennung evaluiert wurden. Dabei waren die vorgestellten Objekterkennungsstrategien einfache Zuweisungen, die insbesondere das „nearest neighbour“-Verfahren, künstliche neuronale Netze und ein Matchingassistent aus der Programmierumgebung HDevelop von HALCON.

Die einfache Zuweisung hat sich als nicht geeignet herausgestellt, da das Verfahren zu ist und nur funktioniert that is unflexibel, wenn sich die Wertebereiche zweier Objektklassen nicht für alle Merkmale überlappen. Ein weiteres Problem dieses Verfahrens wenn nur ein Merkmalswert außerhalb des definierten Wertebereiches für die richtige Objektklasse dann kann das Objekt dieser Klasse nicht mehr zugeordnet werden that is minimum. Dieses Verfahren ist zwar einfach umzusetzen, aber aufgrund der fehlenden Robustheit gegenüber unterschiedlicher Rahmenbedingungen geeignet für eine gute Objekterkennung.

Das Clusterverfahren ist für die Problemstellung der Objekterkennung mit der Menge erkennender Objekte ebenfalls nicht geeignet, da die Anzahl der zu erkennenden Objekte zu groß ist. Zu einem zu großen Rechenaufwand führen. Neigt das „nearest neighbour“-Verfahren zur Kettenbildung, was, dass da dicht aneinander liegende Elemente, Cluster gebildet werden, die zu unterschiedlichen nicht genau werden können, Gruppen gehören.

Der Matchingassistent von HDevelop ist zwar eine gute und einfache Möglichkeit ohne großes Hintergrundwissen ein einfaches Objekterkennungsverfahren zu entwerfen und zu implementieren, aber er trotzdem nicht für die Problemstellung dieser Arbeit geeignet. Das zum einen daran, dass die Datenmenge zu groß ist und dies zu einem großen Rechenaufwand führt und zum anderen, dass da Farbinformationen beim Matchingverfahren werden, nicht unterschieden werden können.

Als bestes Verfahren hat sich die Objekterkennungsstrategie mit künstlichen neuronalen Netzen herausgestellt. Sie haben durch ihre Flexibilität und ihrer Robustheit überzeugt.

Die Ergebnisse dieser Arbeit neuronale Netze sehr leistungsfähig sind und auch für Objekterkennungs­verfahren sehr gut angewandt werden können. Eine Voraussetzung dafür ist allerdings, dass hochwertige Bilder mit möglichst idealen Licht­verhältnissen vorliegen. Weiterhin muss ein möglichst idealer einfarbiger Hintergrund gewählt werden, der sich möglichst deutlich von allen Objekten abhebt. Bei dem gewählten weißen Hintergrund wäre es nicht möglich weiße Teile zu erkennen, da es selbst mit großen Anstrengungen schwierig wäre, ein solches Teil vom Hintergrund zu segmentieren. Um solche Probleme zu lösen wird entweder eine Lichtquelle oder ein Hintergrund mit änderbarer Farbe benötigt.

Ein weiteres Issue, was in Arbeit aber nicht betrachtet ist, wie sich die Erkennung unter variablen Hintergründen oder Kameraperspektiven und - umsetzen lässt. Dies ist ein sehr komplexes Issue und konnte deshalb im Rahmen dieser

Arbeit nicht werden.