Revision history for TutoriumDokumentstrukturanalyse
Additions:
CategoryDelete
Deletions:
{{files}}
**{{color text="Tutor:" c="#00386a"}}**
Jordan Zapf
**{{color text="Ziel des Tutoriums:" c="#00386a"}}**
- Aufbau von Grundverständnis für Automatische optische Inspektion
- Erklärung verschiedener Bildverarbeitungsmethoden
**{{color text="Adressaten des Lehrangebotes:" c="#00386a"}}**
Interessierte Studenten der Fakultät Informatik
**{{color text="Teilnahme:" c="#00386a"}}**
Wird durch Rundmail bekannt gegeben.
**{{color text="Veranstaltungsinhalte:" c="#00386a"}}**
======Automatische optische Inspektion======
=====Leiterplatten=====
Bei der Produktion elektronischer Baugruppen werden in der Regel nach dem Bestücken und Löten der Leiterplatten Kontrollen durchgeführt, um die fehlerfreie Herstellung sicherzustellen. Es kommt durchaus vor, dass beim Bestücken durch Bestückungsautomaten oder beim anschließenden Lötprozess Fehler auftreten. Fehler können z. B. fehlende oder falsch bestückte Bauteile, verdrehte oder versetzte Bauteile oder Verunreinigungen der Leiterplatte sein. Diese Fehler müssen vor dem nächsten Arbeitsschritt in der Fertigung abgefangen und sofern möglich repariert werden; andernfalls, wenn sich eine Reparatur nicht lohnt oder nicht möglich ist, wird die Leiterplatte verschrottet.
Die Kontrolle der Leiterplatten auf Fehler kann auf zwei Arten erfolgen:
- durch den Menschen
- durch Maschinen
Hierbei hat die Kontrolle durch Menschen einige gravierende Nachteile:
- Menschen können Fehler übersehen
- Menschen werden müde und brauchen Pausen
- Menschen können die feinen Strukturen und Bauteile auf den heutigen Leiterplatten ohne Hilfsmittel wie Mikroskope nicht mehr prüfen
- Menschen klassifizieren Fehler unterschiedlich (wichtig bei Traceability = Rückverfolgbarkeit)
AOI-Systeme haben all die oben genannten Nachteile nicht (Wobei das Übersehen von Fehlern sich aus dem Arbeitsprinzip und der Qualität der Maschine ergibt).
=====Bildaufnahme=====
Die Bildaufnahmen der Leiterplatten können mit Scannern oder mit Kameras erfolgen. Werden die Bilder mit einem Scanner aufgenommen, muss dieser nur einmal über die zu kontrollierende Leiterplatte fahren. Bei Kamerasystemen gibt es Systeme mit einer Kamera die von oben auf die Platte gerichtet ist, Systeme mit mehreren Kameras und Systeme, bei denen noch zusätzlich schräg angebrachte Kameras vorhanden sind. Durch den im Gegensatz zu Scannern begrenzten Sichtbereich muss die Kamera mittels einer XY-Verfahreinheit über die Leiterplatte bewegt werden. Eine Software steuert, wohin der Schlitten bewegt werden muss und wann Bilder gemacht werden sollen.
Damit die Maschine weiß, an welcher Position welches Bauteil sein muss, benötigt diese die CAD Daten der entsprechenden Leiterplatte, in denen die Position, die Bezeichnung, der Drehwinkel und ggf. noch die Gehäuseform verzeichnet sind.
=====Stand-Alone oder Inline=====
Bei Stand-Alone-Geräten wird immer eine Leiterplatte von Hand in das System eingeführt und nach der Kontrolle wieder von Hand entnommen.
Beim Inline-System werden die Leiterplatten über ein Förderband in die Maschine gebracht. Über SMEMA- oder Siemensschnittstelle und Lichtschranken wird der Transport überwacht und gesteuert und nach der Kontrolle wird die Leiterplatte auf der anderen Seite der Maschine herausgefahren.
=====Nur AOI oder Kombigerät=====
Normale Geräte bieten nur die Möglichkeit, eine optische Sichtkontrolle durchzuführen. Einige Hersteller haben jedoch auch Geräte im Programm, die zusätzlich beispielsweise eine Röntgenprüfung durchführen können und so eine Zwei-in-eins-Funktionalität bieten (AOI und AXI kombiniert).
=====Beleuchtung=====
Damit mit den Kameras oder Scannern die zu kontrollierenden Bauteile auf einer Leiterplatte ausreichend gut erkannt werden können, muss diese künstlich beleuchtet werden. Die Lichtquellen sind in der Maschine unterschiedlich angeordnet. Es gibt je nach System die Möglichkeit, den aktuellen Bildausschnitt mit Direktlicht von oben oder mit indirektem Licht von der Seite (Seitenlicht) zu bescheinen. Zusätzlich können je nach System auch noch verschiedenfarbige Lichtquellen benutzt werden. In den Geräten früherer Tage wurden zum Teil Leuchtstoffröhren für die Beleuchtung benutzt. Da jedoch die Beleuchtungen ständig abgewechselt werden müssen, werden die Leuchtstoffröhren durch das ständige Ein- und Ausschalten schnell zerstört. Moderne Geräte benutzen daher LEDs. Diese dunkeln zwar mit der Zeit ein wenig nach, dies kann jedoch durch eine Kalibrierung (Grauwertabgleich), die in bestimmten Abständen durchgeführt wird, kompensiert werden.
=====Offen oder geschlossen=====
Offene Systeme besitzen keinerlei Abschirmung gegen den Einfall von Störlicht. Fällt Sonnenlicht oder das Licht einer Leuchtstofflampe auf die Leiterplatte, können die Systeme Schwierigkeiten bekommen.
Geschlossene Systeme sind gegen den Einfall von Störlichtquellen durch ein nahezu komplett geschlossenes Gehäuse und Spezialscheiben geschützt. In ihnen werden die Leiterplatten nahezu nur noch von künstlichem Licht beleuchtet. Dadurch können die Beleuchtungssituationen beliebig reproduziert und die Maschinen optimal eingestellt werden.
=====Analyseverfahren und Art der Bildauswertung=====
Die von einem Leiterplattenausschnitt mit Bauteilen gemachten Bilder werden darauf untersucht, ob das abgebildete Bauteil ordnungsgemäß bestückt und gelötet wurde.
Beim Bitmapvergleich werden die aufgenommenen Bilder mit früher aufgenommenen Vergleichsbildern von guten Bauteilen verglichen. Kommt es zu einer vorher definierten Abweichung, gilt das Bauteil als fehlerhaft.
Beim Vektorvergleich wird versucht, anhand von Hell-Dunkelübergängen das Bauteil zu finden. Daran kann man dann erkennen, wie sehr das Bauteil versetzt und/oder verdreht ist. Für die Pins kommt die gleiche Analyse zur Anwendung. Für die Lötstellenkontrolle werden dann Grauwertanalysen verwendet, bei denen in einem Messfenster, das am Ende des Pins angelegt wird, der mittlere Grauwert der Lötstelle unter einer bestimmten Beleuchtung gemessen wird.
Zusätzlich gibt es noch Systeme, die in keine der beiden oben genannten Kategorien passen und eine Mischung aus 2-Farben-Bild- und Grauwertanalyse benutzen, um Bauteile und Lötstellen zu finden.
======Bildverarbeitung======
=====Ausgangsbild=====
{{image url="source.jpg" title="Ausgangsbild"}}
=====Canny-Algorithmus (auch: Canny Edge Detector)=====
Der Canny Kantendektor ist 1986 von dem Namensgeber John Canny im Jahr 1986 veröffentlich worden und gehört zu den Algorithmen der Kantendetektion
Canny wollte einen Algorithmus zur Kantendetektion entwickeln, der wesentlich drei Ziele verfolgt:
- Erkennung
- Alle tatsächlichen Kanten sollen gefunden werden, aber keine falschen
- Lokalisierung
- Abstand zwischen tatsächlicher und erkannter Kante möglichst klein
- Ansprechverhalten
- Keine Mehrfacherkennung ein- und derselben Kante
=====Vorgehen=====
Der Algorithmus lässt sich in vier Stufen unterteilen:
- Vorverarbeitung (Glättung)
- Mit einem Gauß-Filter wird das Rauschen unterdrückt
- Gradienten berechnen (Kantendetektion)
- Die Detektion berechnet die Kantenstärke und Kantenrichtung
- Unterdrückung von Nicht-Maxima
- Es werden nur lokale Maxima der Kantenstärke als Kantenpixel zugelassen
- Schwellenwertbildung mit Hysterese
- Die Hysterese unterdrückt nicht relevante Kanten mittels eines Schwellenwertverfahrens
====Vorverarbeitung====
Kantendetektoren sind anfällig für Rauschen. Damit das Rauschen reduziert wird, wird üblicherweise ein 5x5 Gauß-Filter verwendet mit einer Standardabweichung von 1,4.
{{image url="gauss.png" title="5x5 Gauss-Kernel"}}
Dennoch ist zu beachten, dass die Werte von diesem Filter je nach Situation angepasst werden müssen.
====Gradienten berechnen====
Danach wird auf das geglättete Bild eine Ableitung angewendet. Dazu können beispielsweise der Sobel-Operator oder auch der Laplace Operator eingesetzt werden.
====Kantendetektion====
{{image url="kantendetektion.png" title="Kantendetektion"}}
====Sobel-Operator====
{{image url="sobeloperator.png" title="Sobel-Operator"}}
===Sobel X Resultat===
{{image url="sobelx.jpg" title="Scale = 1, Delta = 0"}}
===Sobel Y Resultat===
{{image url="sobely.jpg" title="Scale = 1, Delta = 0"}}
===Sobel Resultat===
{{image url="sobel.jpg" title="Scale = 1, Delta = 0"}}
====Absolute Kantenstärke und Kantenrichtung====
{{image url="absoluteKantenstaerkeUndKantenrichtung.png" title="Absolute Kantenstärke und Kantenrichtung"}}
====Unterdrückung von Nicht-Maxima====
Um sicherzustellen, dass eine Kante nicht mehr als ein Pixel breit ist, sollen im folgenden Schritt einzig die Maxima entlang einer Kante erhalten bleiben. Dafür wird vom Bild mit den absoluten Kantenstärken ausgegangen und für jedes Pixel die Werte
====Schwellenwertbildung mit Hysterese====
{{image url="schwellenwertbildungUndHysterese.png" title="Schwellenwertbildung mit Hysterese"}}
====Canny Edge Detector Resultat 1====
{{image url="cannyEdgeDetector1.jpg" title="T1 = 20, T2 = 200, Aperture Size = 3 (Sobel Kernel Size), L2 Gradient = true"}}
====Canny Edge Detector Resultat 2====
{{image url="cannyEdgeDetector2.jpg" title="T1 = 150, T2 = 200, Aperture Size = 3 (Sobel Kernel Size), L2 Gradient = true"}}
====Canny Edge Detector Resultat 3====
{{image url="cannyEdgeDetector3.jpg" title="T1 = 150, T2 = 200, Aperture Size = 7 (Sobel Kernel Size), L2 Gradient = true"}}
======Filter======
=====Normalized Block and Gaussian Filter=====
{{image url="normalizedBlockAndGaussian.png" title="Normalized Block and Gaussian Filter"}}
=====Median Filter=====
{{image url="median.png" title="Median Filter"}}
=====Bilateral Filter=====
{{image url="bilateral.png" title="Bilateral Filter"}}
=====Normalized Block Filter=====
{{image url="normalizedBlockFilter.jpg" title="Kernel Length = 5, Sehr simpler Filter"}}
=====Gaussian Filter=====
{{image url="gaussianFilter.jpg" title="Kernel Length = 5, Sehr verbreiteter und sehr guter allgemeiner Filter"}}
=====Median Filter=====
{{image url="medianFilter.jpg" title="Kernel Length = 5, Sehr gut um komplette Bildlücken zu entfernen, da fehlende Pixel komplett ersetzt werden und Extremwerte ignoriert werden"}}
=====Bilateral Filter=====
{{image url="bilateralFilter.jpg" title="Kernel Length = 21, Sehr gut um Kanten zu erhalten und trotzdem Rauschen heraus zu filtern"}}
======Histogram======
{{image url="histogram.png" title="Histogram"}}
=====Gray=====
{{image url="gray.jpg" title="(R+G+B)/3"}}
=====Histogram Equalization=====
{{image url="histogramEqualization1.png" title="Histogram Equalization Berechnung"}}
{{image url="histogramEqualization2.png" title="Histogram Equalization Resultat im Histogram"}}
{{image url="histogramEqualization.jpg" title="Histogram Equalization Resultat"}}
=====Contrast Limited Adaptive Histogram Equalization (CLAHE)=====
- Bild wird in Kacheln unterteilt (OpenCV 8x8 als Standard)
- Darüber wird dann eine Histogram Equalization angewendet
- Sollte Rauschen in der Kachel vorhanden sein würde es aber somit nur verstärkt werden, deshalb wird eine Kontrastbegrenzung vorgenommen
- Wenn ein Histogram-Bin über der Kontrastbegrenzung liegt (OpenCV 40 als Standard) werden die Pixel beschnitten und gleichmäßig auf andere Bins verteilt, bevor die Histogram Equalization durchgeführt wird
{{image url="verteilung.png" title="Verteilung der Pixel"}}
- Um Artefakte in den Kachelrändern zu entfernen, wird eine bilineare Interpolation angewendet
{{image url="histogramEqualization3.png" title="CLAHE Resultat im Histogram"}}
{{image url="clahe.jpg" title="CLAHE Resultat, Cliplimit = 2, tileSize = 8"}}
=====Quellen=====
""https://de.wikipedia.org/wiki/Automatische_optische_Inspektion""
""https://www.kuppelwieser.net/index.php/technik/15-bildverarbeitung/40-canny-algorithmus""
""https://de.wikipedia.org/wiki/Sobel-Operator""
""https://de.wikipedia.org/wiki/Arctan2""
""https://de.wikipedia.org/wiki/Canny-Algorithmus""
""https://docs.opencv.org/2.4/modules/imgproc/doc/filtering.html?highlight=blur#blur""
""https://de.wikipedia.org/wiki/Gau%C3%9F-Filter""
""https://de.wikipedia.org/wiki/Rangordnungsfilter#Medianfilter""
""https://de.wikipedia.org/wiki/Bilaterale_Filterung""
""http://eric-yuan.me/bilateral-filtering/""
""https://www.researchgate.net/figure/Histogram-of-the-pixel-grayscale-values-of-the-Corpus-Callosum_fig4_228695982""
""https://en.wikipedia.org/wiki/Adaptive_histogram_equalization""
Additions:
{{files}}
Additions:
=====Quellen=====
""https://de.wikipedia.org/wiki/Automatische_optische_Inspektion""
""https://www.kuppelwieser.net/index.php/technik/15-bildverarbeitung/40-canny-algorithmus""
""https://de.wikipedia.org/wiki/Sobel-Operator""
""https://de.wikipedia.org/wiki/Arctan2""
""https://de.wikipedia.org/wiki/Canny-Algorithmus""
""https://docs.opencv.org/2.4/modules/imgproc/doc/filtering.html?highlight=blur#blur""
""https://de.wikipedia.org/wiki/Gau%C3%9F-Filter""
""https://de.wikipedia.org/wiki/Rangordnungsfilter#Medianfilter""
""https://de.wikipedia.org/wiki/Bilaterale_Filterung""
""http://eric-yuan.me/bilateral-filtering/""
""https://www.researchgate.net/figure/Histogram-of-the-pixel-grayscale-values-of-the-Corpus-Callosum_fig4_228695982""
""https://en.wikipedia.org/wiki/Adaptive_histogram_equalization""
""https://de.wikipedia.org/wiki/Automatische_optische_Inspektion""
""https://www.kuppelwieser.net/index.php/technik/15-bildverarbeitung/40-canny-algorithmus""
""https://de.wikipedia.org/wiki/Sobel-Operator""
""https://de.wikipedia.org/wiki/Arctan2""
""https://de.wikipedia.org/wiki/Canny-Algorithmus""
""https://docs.opencv.org/2.4/modules/imgproc/doc/filtering.html?highlight=blur#blur""
""https://de.wikipedia.org/wiki/Gau%C3%9F-Filter""
""https://de.wikipedia.org/wiki/Rangordnungsfilter#Medianfilter""
""https://de.wikipedia.org/wiki/Bilaterale_Filterung""
""http://eric-yuan.me/bilateral-filtering/""
""https://www.researchgate.net/figure/Histogram-of-the-pixel-grayscale-values-of-the-Corpus-Callosum_fig4_228695982""
""https://en.wikipedia.org/wiki/Adaptive_histogram_equalization""
Additions:
=====Gray=====
{{image url="gray.jpg" title="(R+G+B)/3"}}
=====Histogram Equalization=====
{{image url="histogramEqualization1.png" title="Histogram Equalization Berechnung"}}
{{image url="histogramEqualization2.png" title="Histogram Equalization Resultat im Histogram"}}
{{image url="histogramEqualization.jpg" title="Histogram Equalization Resultat"}}
=====Contrast Limited Adaptive Histogram Equalization (CLAHE)=====
- Bild wird in Kacheln unterteilt (OpenCV 8x8 als Standard)
- Darüber wird dann eine Histogram Equalization angewendet
- Sollte Rauschen in der Kachel vorhanden sein würde es aber somit nur verstärkt werden, deshalb wird eine Kontrastbegrenzung vorgenommen
- Wenn ein Histogram-Bin über der Kontrastbegrenzung liegt (OpenCV 40 als Standard) werden die Pixel beschnitten und gleichmäßig auf andere Bins verteilt, bevor die Histogram Equalization durchgeführt wird
{{image url="verteilung.png" title="Verteilung der Pixel"}}
- Um Artefakte in den Kachelrändern zu entfernen, wird eine bilineare Interpolation angewendet
{{image url="histogramEqualization3.png" title="CLAHE Resultat im Histogram"}}
{{image url="clahe.jpg" title="CLAHE Resultat, Cliplimit = 2, tileSize = 8"}}
{{image url="gray.jpg" title="(R+G+B)/3"}}
=====Histogram Equalization=====
{{image url="histogramEqualization1.png" title="Histogram Equalization Berechnung"}}
{{image url="histogramEqualization2.png" title="Histogram Equalization Resultat im Histogram"}}
{{image url="histogramEqualization.jpg" title="Histogram Equalization Resultat"}}
=====Contrast Limited Adaptive Histogram Equalization (CLAHE)=====
- Bild wird in Kacheln unterteilt (OpenCV 8x8 als Standard)
- Darüber wird dann eine Histogram Equalization angewendet
- Sollte Rauschen in der Kachel vorhanden sein würde es aber somit nur verstärkt werden, deshalb wird eine Kontrastbegrenzung vorgenommen
- Wenn ein Histogram-Bin über der Kontrastbegrenzung liegt (OpenCV 40 als Standard) werden die Pixel beschnitten und gleichmäßig auf andere Bins verteilt, bevor die Histogram Equalization durchgeführt wird
{{image url="verteilung.png" title="Verteilung der Pixel"}}
- Um Artefakte in den Kachelrändern zu entfernen, wird eine bilineare Interpolation angewendet
{{image url="histogramEqualization3.png" title="CLAHE Resultat im Histogram"}}
{{image url="clahe.jpg" title="CLAHE Resultat, Cliplimit = 2, tileSize = 8"}}
Additions:
====Schwellenwertbildung mit Hysterese====
{{image url="schwellenwertbildungUndHysterese.png" title="Schwellenwertbildung mit Hysterese"}}
====Canny Edge Detector Resultat 1====
{{image url="cannyEdgeDetector1.jpg" title="T1 = 20, T2 = 200, Aperture Size = 3 (Sobel Kernel Size), L2 Gradient = true"}}
====Canny Edge Detector Resultat 2====
{{image url="cannyEdgeDetector2.jpg" title="T1 = 150, T2 = 200, Aperture Size = 3 (Sobel Kernel Size), L2 Gradient = true"}}
====Canny Edge Detector Resultat 3====
{{image url="cannyEdgeDetector3.jpg" title="T1 = 150, T2 = 200, Aperture Size = 7 (Sobel Kernel Size), L2 Gradient = true"}}
======Filter======
=====Normalized Block and Gaussian Filter=====
{{image url="normalizedBlockAndGaussian.png" title="Normalized Block and Gaussian Filter"}}
=====Median Filter=====
{{image url="median.png" title="Median Filter"}}
=====Bilateral Filter=====
{{image url="bilateral.png" title="Bilateral Filter"}}
=====Normalized Block Filter=====
{{image url="normalizedBlockFilter.jpg" title="Kernel Length = 5, Sehr simpler Filter"}}
=====Gaussian Filter=====
{{image url="gaussianFilter.jpg" title="Kernel Length = 5, Sehr verbreiteter und sehr guter allgemeiner Filter"}}
=====Median Filter=====
{{image url="medianFilter.jpg" title="Kernel Length = 5, Sehr gut um komplette Bildlücken zu entfernen, da fehlende Pixel komplett ersetzt werden und Extremwerte ignoriert werden"}}
=====Bilateral Filter=====
{{image url="bilateralFilter.jpg" title="Kernel Length = 21, Sehr gut um Kanten zu erhalten und trotzdem Rauschen heraus zu filtern"}}
======Histogram======
{{image url="histogram.png" title="Histogram"}}
{{image url="schwellenwertbildungUndHysterese.png" title="Schwellenwertbildung mit Hysterese"}}
====Canny Edge Detector Resultat 1====
{{image url="cannyEdgeDetector1.jpg" title="T1 = 20, T2 = 200, Aperture Size = 3 (Sobel Kernel Size), L2 Gradient = true"}}
====Canny Edge Detector Resultat 2====
{{image url="cannyEdgeDetector2.jpg" title="T1 = 150, T2 = 200, Aperture Size = 3 (Sobel Kernel Size), L2 Gradient = true"}}
====Canny Edge Detector Resultat 3====
{{image url="cannyEdgeDetector3.jpg" title="T1 = 150, T2 = 200, Aperture Size = 7 (Sobel Kernel Size), L2 Gradient = true"}}
======Filter======
=====Normalized Block and Gaussian Filter=====
{{image url="normalizedBlockAndGaussian.png" title="Normalized Block and Gaussian Filter"}}
=====Median Filter=====
{{image url="median.png" title="Median Filter"}}
=====Bilateral Filter=====
{{image url="bilateral.png" title="Bilateral Filter"}}
=====Normalized Block Filter=====
{{image url="normalizedBlockFilter.jpg" title="Kernel Length = 5, Sehr simpler Filter"}}
=====Gaussian Filter=====
{{image url="gaussianFilter.jpg" title="Kernel Length = 5, Sehr verbreiteter und sehr guter allgemeiner Filter"}}
=====Median Filter=====
{{image url="medianFilter.jpg" title="Kernel Length = 5, Sehr gut um komplette Bildlücken zu entfernen, da fehlende Pixel komplett ersetzt werden und Extremwerte ignoriert werden"}}
=====Bilateral Filter=====
{{image url="bilateralFilter.jpg" title="Kernel Length = 21, Sehr gut um Kanten zu erhalten und trotzdem Rauschen heraus zu filtern"}}
======Histogram======
{{image url="histogram.png" title="Histogram"}}
Additions:
=====Ausgangsbild=====
{{image url="source.jpg" title="Ausgangsbild"}}
=====Canny-Algorithmus (auch: Canny Edge Detector)=====
Der Canny Kantendektor ist 1986 von dem Namensgeber John Canny im Jahr 1986 veröffentlich worden und gehört zu den Algorithmen der Kantendetektion
Canny wollte einen Algorithmus zur Kantendetektion entwickeln, der wesentlich drei Ziele verfolgt:
- Erkennung
- Alle tatsächlichen Kanten sollen gefunden werden, aber keine falschen
- Lokalisierung
- Abstand zwischen tatsächlicher und erkannter Kante möglichst klein
- Ansprechverhalten
- Keine Mehrfacherkennung ein- und derselben Kante
=====Vorgehen=====
Der Algorithmus lässt sich in vier Stufen unterteilen:
- Vorverarbeitung (Glättung)
- Mit einem Gauß-Filter wird das Rauschen unterdrückt
- Gradienten berechnen (Kantendetektion)
- Die Detektion berechnet die Kantenstärke und Kantenrichtung
- Unterdrückung von Nicht-Maxima
- Es werden nur lokale Maxima der Kantenstärke als Kantenpixel zugelassen
- Schwellenwertbildung mit Hysterese
- Die Hysterese unterdrückt nicht relevante Kanten mittels eines Schwellenwertverfahrens
====Vorverarbeitung====
Kantendetektoren sind anfällig für Rauschen. Damit das Rauschen reduziert wird, wird üblicherweise ein 5x5 Gauß-Filter verwendet mit einer Standardabweichung von 1,4.
{{image url="gauss.png" title="5x5 Gauss-Kernel"}}
Dennoch ist zu beachten, dass die Werte von diesem Filter je nach Situation angepasst werden müssen.
====Gradienten berechnen====
Danach wird auf das geglättete Bild eine Ableitung angewendet. Dazu können beispielsweise der Sobel-Operator oder auch der Laplace Operator eingesetzt werden.
====Kantendetektion====
{{image url="kantendetektion.png" title="Kantendetektion"}}
====Sobel-Operator====
{{image url="sobeloperator.png" title="Sobel-Operator"}}
===Sobel X Resultat===
{{image url="sobelx.jpg" title="Scale = 1, Delta = 0"}}
===Sobel Y Resultat===
{{image url="sobely.jpg" title="Scale = 1, Delta = 0"}}
===Sobel Resultat===
{{image url="sobel.jpg" title="Scale = 1, Delta = 0"}}
====Absolute Kantenstärke und Kantenrichtung====
{{image url="absoluteKantenstaerkeUndKantenrichtung.png" title="Absolute Kantenstärke und Kantenrichtung"}}
====Unterdrückung von Nicht-Maxima====
Um sicherzustellen, dass eine Kante nicht mehr als ein Pixel breit ist, sollen im folgenden Schritt einzig die Maxima entlang einer Kante erhalten bleiben. Dafür wird vom Bild mit den absoluten Kantenstärken ausgegangen und für jedes Pixel die Werte
{{image url="source.jpg" title="Ausgangsbild"}}
=====Canny-Algorithmus (auch: Canny Edge Detector)=====
Der Canny Kantendektor ist 1986 von dem Namensgeber John Canny im Jahr 1986 veröffentlich worden und gehört zu den Algorithmen der Kantendetektion
Canny wollte einen Algorithmus zur Kantendetektion entwickeln, der wesentlich drei Ziele verfolgt:
- Erkennung
- Alle tatsächlichen Kanten sollen gefunden werden, aber keine falschen
- Lokalisierung
- Abstand zwischen tatsächlicher und erkannter Kante möglichst klein
- Ansprechverhalten
- Keine Mehrfacherkennung ein- und derselben Kante
=====Vorgehen=====
Der Algorithmus lässt sich in vier Stufen unterteilen:
- Vorverarbeitung (Glättung)
- Mit einem Gauß-Filter wird das Rauschen unterdrückt
- Gradienten berechnen (Kantendetektion)
- Die Detektion berechnet die Kantenstärke und Kantenrichtung
- Unterdrückung von Nicht-Maxima
- Es werden nur lokale Maxima der Kantenstärke als Kantenpixel zugelassen
- Schwellenwertbildung mit Hysterese
- Die Hysterese unterdrückt nicht relevante Kanten mittels eines Schwellenwertverfahrens
====Vorverarbeitung====
Kantendetektoren sind anfällig für Rauschen. Damit das Rauschen reduziert wird, wird üblicherweise ein 5x5 Gauß-Filter verwendet mit einer Standardabweichung von 1,4.
{{image url="gauss.png" title="5x5 Gauss-Kernel"}}
Dennoch ist zu beachten, dass die Werte von diesem Filter je nach Situation angepasst werden müssen.
====Gradienten berechnen====
Danach wird auf das geglättete Bild eine Ableitung angewendet. Dazu können beispielsweise der Sobel-Operator oder auch der Laplace Operator eingesetzt werden.
====Kantendetektion====
{{image url="kantendetektion.png" title="Kantendetektion"}}
====Sobel-Operator====
{{image url="sobeloperator.png" title="Sobel-Operator"}}
===Sobel X Resultat===
{{image url="sobelx.jpg" title="Scale = 1, Delta = 0"}}
===Sobel Y Resultat===
{{image url="sobely.jpg" title="Scale = 1, Delta = 0"}}
===Sobel Resultat===
{{image url="sobel.jpg" title="Scale = 1, Delta = 0"}}
====Absolute Kantenstärke und Kantenrichtung====
{{image url="absoluteKantenstaerkeUndKantenrichtung.png" title="Absolute Kantenstärke und Kantenrichtung"}}
====Unterdrückung von Nicht-Maxima====
Um sicherzustellen, dass eine Kante nicht mehr als ein Pixel breit ist, sollen im folgenden Schritt einzig die Maxima entlang einer Kante erhalten bleiben. Dafür wird vom Bild mit den absoluten Kantenstärken ausgegangen und für jedes Pixel die Werte
Deletions:
{{image url="ak2.png" title="Einteilung der Objekte"}}
=====Einfaches Beispiel=====
====Rohdaten====
{{image url="ak3_2.png" title="Einfaches Beispiel: Rohdaten"}}
====Berechnung====
{{image url="ak4.png" title="Ähnlichkeitskoeffizientsberechnung"}}
=====Großes Beispiel=====
====Rohdaten====
{{image url="ak5.png" title="Großes Beispiel"}}
====Ergebnis Tanimoto/Jaccard====
{{image url="ak6.png" title="Beispiel Ergebnis Tanimoto/Jaccard"}}
======Levenshtein-Distanz======
- minimale Anzahl von Einfüge-, Lösch- und Ersetz-Operationen, um die erste Zeichenkette in die zweite umzuwandeln
- benannt ist die Distanz nach dem russischen Wissenschaftler Wladimir Lewenstein (engl. Levenshtein), der sie 1965 einführte
- mathematisch ist die Levenshtein-Distanz eine Metrik auf dem Raum der Symbolsequenzen
=====Einfache Beispiele=====
{{image url="ld1.png" title="2 einfache Beispiele"}}
=====Berechnung=====
{{image url="ld2.png" title="Raster für Levenshtein-Tabelle"}}
{{image url="ld3.png" title="Fertige Levenshtein-Tabelle"}}
=====Levenshtein-Distanz in C# umgesetzt=====
{{image url="ld4.png" title="Levenshtein-Distanz in C#"}}
=====Eigenes Programm zum Vergleich von beliebig vielen Wörtern miteinander=====
{{image url="ld5.png" title="Tabelle der Levenshtein-Distanzen der genannten Wörter" width="1550"}}
----
CategoryTutorienFKITWS1819
{{files}}
Additions:
{{files}}
Additions:
===**{{color text="Tutorium: Automatische optische Inspektion"c="#00386a"}}** ===
- Aufbau von Grundverständnis für Automatische optische Inspektion
- Erklärung verschiedener Bildverarbeitungsmethoden
======Automatische optische Inspektion======
=====Leiterplatten=====
Bei der Produktion elektronischer Baugruppen werden in der Regel nach dem Bestücken und Löten der Leiterplatten Kontrollen durchgeführt, um die fehlerfreie Herstellung sicherzustellen. Es kommt durchaus vor, dass beim Bestücken durch Bestückungsautomaten oder beim anschließenden Lötprozess Fehler auftreten. Fehler können z. B. fehlende oder falsch bestückte Bauteile, verdrehte oder versetzte Bauteile oder Verunreinigungen der Leiterplatte sein. Diese Fehler müssen vor dem nächsten Arbeitsschritt in der Fertigung abgefangen und sofern möglich repariert werden; andernfalls, wenn sich eine Reparatur nicht lohnt oder nicht möglich ist, wird die Leiterplatte verschrottet.
Die Kontrolle der Leiterplatten auf Fehler kann auf zwei Arten erfolgen:
- durch den Menschen
- durch Maschinen
Hierbei hat die Kontrolle durch Menschen einige gravierende Nachteile:
- Menschen können Fehler übersehen
- Menschen werden müde und brauchen Pausen
- Menschen können die feinen Strukturen und Bauteile auf den heutigen Leiterplatten ohne Hilfsmittel wie Mikroskope nicht mehr prüfen
- Menschen klassifizieren Fehler unterschiedlich (wichtig bei Traceability = Rückverfolgbarkeit)
AOI-Systeme haben all die oben genannten Nachteile nicht (Wobei das Übersehen von Fehlern sich aus dem Arbeitsprinzip und der Qualität der Maschine ergibt).
=====Bildaufnahme=====
Die Bildaufnahmen der Leiterplatten können mit Scannern oder mit Kameras erfolgen. Werden die Bilder mit einem Scanner aufgenommen, muss dieser nur einmal über die zu kontrollierende Leiterplatte fahren. Bei Kamerasystemen gibt es Systeme mit einer Kamera die von oben auf die Platte gerichtet ist, Systeme mit mehreren Kameras und Systeme, bei denen noch zusätzlich schräg angebrachte Kameras vorhanden sind. Durch den im Gegensatz zu Scannern begrenzten Sichtbereich muss die Kamera mittels einer XY-Verfahreinheit über die Leiterplatte bewegt werden. Eine Software steuert, wohin der Schlitten bewegt werden muss und wann Bilder gemacht werden sollen.
Damit die Maschine weiß, an welcher Position welches Bauteil sein muss, benötigt diese die CAD Daten der entsprechenden Leiterplatte, in denen die Position, die Bezeichnung, der Drehwinkel und ggf. noch die Gehäuseform verzeichnet sind.
=====Stand-Alone oder Inline=====
Bei Stand-Alone-Geräten wird immer eine Leiterplatte von Hand in das System eingeführt und nach der Kontrolle wieder von Hand entnommen.
Beim Inline-System werden die Leiterplatten über ein Förderband in die Maschine gebracht. Über SMEMA- oder Siemensschnittstelle und Lichtschranken wird der Transport überwacht und gesteuert und nach der Kontrolle wird die Leiterplatte auf der anderen Seite der Maschine herausgefahren.
=====Nur AOI oder Kombigerät=====
Normale Geräte bieten nur die Möglichkeit, eine optische Sichtkontrolle durchzuführen. Einige Hersteller haben jedoch auch Geräte im Programm, die zusätzlich beispielsweise eine Röntgenprüfung durchführen können und so eine Zwei-in-eins-Funktionalität bieten (AOI und AXI kombiniert).
=====Beleuchtung=====
Damit mit den Kameras oder Scannern die zu kontrollierenden Bauteile auf einer Leiterplatte ausreichend gut erkannt werden können, muss diese künstlich beleuchtet werden. Die Lichtquellen sind in der Maschine unterschiedlich angeordnet. Es gibt je nach System die Möglichkeit, den aktuellen Bildausschnitt mit Direktlicht von oben oder mit indirektem Licht von der Seite (Seitenlicht) zu bescheinen. Zusätzlich können je nach System auch noch verschiedenfarbige Lichtquellen benutzt werden. In den Geräten früherer Tage wurden zum Teil Leuchtstoffröhren für die Beleuchtung benutzt. Da jedoch die Beleuchtungen ständig abgewechselt werden müssen, werden die Leuchtstoffröhren durch das ständige Ein- und Ausschalten schnell zerstört. Moderne Geräte benutzen daher LEDs. Diese dunkeln zwar mit der Zeit ein wenig nach, dies kann jedoch durch eine Kalibrierung (Grauwertabgleich), die in bestimmten Abständen durchgeführt wird, kompensiert werden.
=====Offen oder geschlossen=====
Offene Systeme besitzen keinerlei Abschirmung gegen den Einfall von Störlicht. Fällt Sonnenlicht oder das Licht einer Leuchtstofflampe auf die Leiterplatte, können die Systeme Schwierigkeiten bekommen.
Geschlossene Systeme sind gegen den Einfall von Störlichtquellen durch ein nahezu komplett geschlossenes Gehäuse und Spezialscheiben geschützt. In ihnen werden die Leiterplatten nahezu nur noch von künstlichem Licht beleuchtet. Dadurch können die Beleuchtungssituationen beliebig reproduziert und die Maschinen optimal eingestellt werden.
=====Analyseverfahren und Art der Bildauswertung=====
Die von einem Leiterplattenausschnitt mit Bauteilen gemachten Bilder werden darauf untersucht, ob das abgebildete Bauteil ordnungsgemäß bestückt und gelötet wurde.
Beim Bitmapvergleich werden die aufgenommenen Bilder mit früher aufgenommenen Vergleichsbildern von guten Bauteilen verglichen. Kommt es zu einer vorher definierten Abweichung, gilt das Bauteil als fehlerhaft.
Beim Vektorvergleich wird versucht, anhand von Hell-Dunkelübergängen das Bauteil zu finden. Daran kann man dann erkennen, wie sehr das Bauteil versetzt und/oder verdreht ist. Für die Pins kommt die gleiche Analyse zur Anwendung. Für die Lötstellenkontrolle werden dann Grauwertanalysen verwendet, bei denen in einem Messfenster, das am Ende des Pins angelegt wird, der mittlere Grauwert der Lötstelle unter einer bestimmten Beleuchtung gemessen wird.
Zusätzlich gibt es noch Systeme, die in keine der beiden oben genannten Kategorien passen und eine Mischung aus 2-Farben-Bild- und Grauwertanalyse benutzen, um Bauteile und Lötstellen zu finden.
======Bildverarbeitung======
- Aufbau von Grundverständnis für Automatische optische Inspektion
- Erklärung verschiedener Bildverarbeitungsmethoden
======Automatische optische Inspektion======
=====Leiterplatten=====
Bei der Produktion elektronischer Baugruppen werden in der Regel nach dem Bestücken und Löten der Leiterplatten Kontrollen durchgeführt, um die fehlerfreie Herstellung sicherzustellen. Es kommt durchaus vor, dass beim Bestücken durch Bestückungsautomaten oder beim anschließenden Lötprozess Fehler auftreten. Fehler können z. B. fehlende oder falsch bestückte Bauteile, verdrehte oder versetzte Bauteile oder Verunreinigungen der Leiterplatte sein. Diese Fehler müssen vor dem nächsten Arbeitsschritt in der Fertigung abgefangen und sofern möglich repariert werden; andernfalls, wenn sich eine Reparatur nicht lohnt oder nicht möglich ist, wird die Leiterplatte verschrottet.
Die Kontrolle der Leiterplatten auf Fehler kann auf zwei Arten erfolgen:
- durch den Menschen
- durch Maschinen
Hierbei hat die Kontrolle durch Menschen einige gravierende Nachteile:
- Menschen können Fehler übersehen
- Menschen werden müde und brauchen Pausen
- Menschen können die feinen Strukturen und Bauteile auf den heutigen Leiterplatten ohne Hilfsmittel wie Mikroskope nicht mehr prüfen
- Menschen klassifizieren Fehler unterschiedlich (wichtig bei Traceability = Rückverfolgbarkeit)
AOI-Systeme haben all die oben genannten Nachteile nicht (Wobei das Übersehen von Fehlern sich aus dem Arbeitsprinzip und der Qualität der Maschine ergibt).
=====Bildaufnahme=====
Die Bildaufnahmen der Leiterplatten können mit Scannern oder mit Kameras erfolgen. Werden die Bilder mit einem Scanner aufgenommen, muss dieser nur einmal über die zu kontrollierende Leiterplatte fahren. Bei Kamerasystemen gibt es Systeme mit einer Kamera die von oben auf die Platte gerichtet ist, Systeme mit mehreren Kameras und Systeme, bei denen noch zusätzlich schräg angebrachte Kameras vorhanden sind. Durch den im Gegensatz zu Scannern begrenzten Sichtbereich muss die Kamera mittels einer XY-Verfahreinheit über die Leiterplatte bewegt werden. Eine Software steuert, wohin der Schlitten bewegt werden muss und wann Bilder gemacht werden sollen.
Damit die Maschine weiß, an welcher Position welches Bauteil sein muss, benötigt diese die CAD Daten der entsprechenden Leiterplatte, in denen die Position, die Bezeichnung, der Drehwinkel und ggf. noch die Gehäuseform verzeichnet sind.
=====Stand-Alone oder Inline=====
Bei Stand-Alone-Geräten wird immer eine Leiterplatte von Hand in das System eingeführt und nach der Kontrolle wieder von Hand entnommen.
Beim Inline-System werden die Leiterplatten über ein Förderband in die Maschine gebracht. Über SMEMA- oder Siemensschnittstelle und Lichtschranken wird der Transport überwacht und gesteuert und nach der Kontrolle wird die Leiterplatte auf der anderen Seite der Maschine herausgefahren.
=====Nur AOI oder Kombigerät=====
Normale Geräte bieten nur die Möglichkeit, eine optische Sichtkontrolle durchzuführen. Einige Hersteller haben jedoch auch Geräte im Programm, die zusätzlich beispielsweise eine Röntgenprüfung durchführen können und so eine Zwei-in-eins-Funktionalität bieten (AOI und AXI kombiniert).
=====Beleuchtung=====
Damit mit den Kameras oder Scannern die zu kontrollierenden Bauteile auf einer Leiterplatte ausreichend gut erkannt werden können, muss diese künstlich beleuchtet werden. Die Lichtquellen sind in der Maschine unterschiedlich angeordnet. Es gibt je nach System die Möglichkeit, den aktuellen Bildausschnitt mit Direktlicht von oben oder mit indirektem Licht von der Seite (Seitenlicht) zu bescheinen. Zusätzlich können je nach System auch noch verschiedenfarbige Lichtquellen benutzt werden. In den Geräten früherer Tage wurden zum Teil Leuchtstoffröhren für die Beleuchtung benutzt. Da jedoch die Beleuchtungen ständig abgewechselt werden müssen, werden die Leuchtstoffröhren durch das ständige Ein- und Ausschalten schnell zerstört. Moderne Geräte benutzen daher LEDs. Diese dunkeln zwar mit der Zeit ein wenig nach, dies kann jedoch durch eine Kalibrierung (Grauwertabgleich), die in bestimmten Abständen durchgeführt wird, kompensiert werden.
=====Offen oder geschlossen=====
Offene Systeme besitzen keinerlei Abschirmung gegen den Einfall von Störlicht. Fällt Sonnenlicht oder das Licht einer Leuchtstofflampe auf die Leiterplatte, können die Systeme Schwierigkeiten bekommen.
Geschlossene Systeme sind gegen den Einfall von Störlichtquellen durch ein nahezu komplett geschlossenes Gehäuse und Spezialscheiben geschützt. In ihnen werden die Leiterplatten nahezu nur noch von künstlichem Licht beleuchtet. Dadurch können die Beleuchtungssituationen beliebig reproduziert und die Maschinen optimal eingestellt werden.
=====Analyseverfahren und Art der Bildauswertung=====
Die von einem Leiterplattenausschnitt mit Bauteilen gemachten Bilder werden darauf untersucht, ob das abgebildete Bauteil ordnungsgemäß bestückt und gelötet wurde.
Beim Bitmapvergleich werden die aufgenommenen Bilder mit früher aufgenommenen Vergleichsbildern von guten Bauteilen verglichen. Kommt es zu einer vorher definierten Abweichung, gilt das Bauteil als fehlerhaft.
Beim Vektorvergleich wird versucht, anhand von Hell-Dunkelübergängen das Bauteil zu finden. Daran kann man dann erkennen, wie sehr das Bauteil versetzt und/oder verdreht ist. Für die Pins kommt die gleiche Analyse zur Anwendung. Für die Lötstellenkontrolle werden dann Grauwertanalysen verwendet, bei denen in einem Messfenster, das am Ende des Pins angelegt wird, der mittlere Grauwert der Lötstelle unter einer bestimmten Beleuchtung gemessen wird.
Zusätzlich gibt es noch Systeme, die in keine der beiden oben genannten Kategorien passen und eine Mischung aus 2-Farben-Bild- und Grauwertanalyse benutzen, um Bauteile und Lötstellen zu finden.
======Bildverarbeitung======
Deletions:
- Aufbau von Grundverständnis für Distanzmaße
- Vergleich von verschiedenen Ähnlichkeitskoeffizienten
- Programmierung der Levenshtein-Distanz
======Distanzmaße======
Ähnlichkeitsmaße/ Distanzmaße werden im Rahmen der Datenanalyse (z.B. Clusteranalyse; Multidimensionale Skalierung) zur Bestimmung der Beziehungen zwischen Messobjekten eingesetzt. Dabei werden durch Vergleiche von metrisch skalierten Ausgangsdaten (Skalenniveau) die zwischen Objekten bestehenden Ähnlichkeiten gemessen. Ist die Distanz gering, dann ist die Ähnlichkeit groß; entsprechend sind sich Objekte bei großer Distanz sehr unähnlich.
=====Clusteranalyse=====
Oberbegriff für einen Typ der in der multivariaten Analyse und vor allem in der Clusteranalyse verwendeten Proximitätsmaße, mit denen im Gegensatz zu den Ähnlichkeitsmaßen und den - Korrelationsmaßen die Entfernungsbeziehung zwischen Meßobjekten bestimmt wird. Durch sie wird die Entfernung zwischen Objekten im n-dimensionalen - Merkmalsraum bestimmt. Voraussetzung für die Verwendung von Distanzmaßen ist das Vorliegen intervallskalierter Daten. Die Anwendung von Distanzmaßen ist neben der Clusteranalyse auch in vielen anderen Bereichen der Datenanalyse sinnvoll, so bei Skalierungsverfahren und hier insbesondere bei multidimensionalen Skalierungsverfahren und bei der Diskriminanzanalyse (z.B. Mahalanobis-Distanz).
Die beiden am meisten verwendeten Distanzmaße sind Sonderfälle der zur größeren Familie der als Minkowski-Metrik bezeichneten zählenden Distanzmaße in der allgemeinen Form:
{{image url="cluster.png" title="Clusteranalyse-Formel"}}
Dabei bezeichnet d die Distanz zwischen den Punkten j und k bei Beachtung des Minkowski-Parameters r; xja und xka sind die Koordinatenwerte des Objekts j(k) auf den Achsen a(a = 1,2, ... , m) und r ist der Metrik-Parameter (1 > r > 0). Daraus lassen sich die beiden am meisten verwendeten Distanzmaße, die Euklidische Distanz und die City-Block Distanz ableiten.
=====City-Block-Distanz(Manhattan)=====
Setzt man in die Minkowski-Metrik für r = 1 ein, ergibt sich die City-Block-Distanz:
{{image url="manhattan2.png" title="City-Block-Distanz-Formel"}}
Die Bezeichnung City-Block-Distanz ist aus dem Bild rechteckig angelegter Straßenzüge abgeleitet, in denen die Entfernung von einem Punkt zum anderen nicht durch die in Form der Luftlinie angegebene kürzeste Distanz zwischen zwei Punkten, sondern nur durch Entlangfahren an den Straßenzügen zurückgelegt werden kann. Im angelsächsischen Sprachraum spricht man deshalb auch von der Manhattan-Distanz bzw. der Taxifahrer-Distanz (taxicab metric).
=====Euklidische Distanz=====
Setzt man in die Minkowski-Metrik für r = 2 ein, ergibt sich die Euklid-Distanz:
{{image url="euklidisch.png" title="Euklidische Distanz-Formel"}}
wobei xja und xka die Projektionen der Punkte j und k auf die Dimension a(a = 1,2, ..., m) darstellen. Durch die Euklidische Distanz wird die kürzeste Distanz zwischen zwei Objekten angegeben.
=====Euklidische u. City-Block-Distanz im Vergleich=====
{{image url="manhattan.png" title="Euklidische und City-Block-Distanz im Vergleich"}}
======Ähnlichkeitskoeffizienten======
=====Ähnlichkeitskoeffizienten im Vergleich=====
{{image url="ak1.png" title="Ähnlichkeitskoeffizienten im Vergleich"}}
Additions:
**{{color text="Tutor:" c="#00386a"}}**
Deletions:
Additions:
**{{color text="Tutor" c="#00386a"}}**
**{{color text="Ziel des Tutoriums:" c="#00386a"}}**
**{{color text="Adressaten des Lehrangebotes:" c="#00386a"}}**
**{{color text="Teilnahme:" c="#00386a"}}**
**{{color text="Veranstaltungsinhalte:" c="#00386a"}}**
**{{color text="Ziel des Tutoriums:" c="#00386a"}}**
**{{color text="Adressaten des Lehrangebotes:" c="#00386a"}}**
**{{color text="Teilnahme:" c="#00386a"}}**
**{{color text="Veranstaltungsinhalte:" c="#00386a"}}**
Deletions:
**{{color text="2. Ziel des Tutoriums:" c="#00386a"}}**
**{{color text="3. Adressaten des Lehrangebotes:" c="#00386a"}}**
**{{color text="4. Teilnahme:" c="#00386a"}}**
**{{color text="5. Veranstaltungsinhalte:" c="#00386a"}}**
Additions:
===**{{color text="Tutorium: Dokumentstrukturanalyse "c="#00386a"}}** ===
**{{color text="1. Tutoren:" c="#00386a"}}**
Jordan Zapf
**{{color text="2. Ziel des Tutoriums:" c="#00386a"}}**
- Aufbau von Grundverständnis für Distanzmaße
- Vergleich von verschiedenen Ähnlichkeitskoeffizienten
- Programmierung der Levenshtein-Distanz
**{{color text="3. Adressaten des Lehrangebotes:" c="#00386a"}}**
Interessierte Studenten der Fakultät Informatik
**{{color text="4. Teilnahme:" c="#00386a"}}**
Wird durch Rundmail bekannt gegeben.
**{{color text="5. Veranstaltungsinhalte:" c="#00386a"}}**
======Distanzmaße======
Ähnlichkeitsmaße/ Distanzmaße werden im Rahmen der Datenanalyse (z.B. Clusteranalyse; Multidimensionale Skalierung) zur Bestimmung der Beziehungen zwischen Messobjekten eingesetzt. Dabei werden durch Vergleiche von metrisch skalierten Ausgangsdaten (Skalenniveau) die zwischen Objekten bestehenden Ähnlichkeiten gemessen. Ist die Distanz gering, dann ist die Ähnlichkeit groß; entsprechend sind sich Objekte bei großer Distanz sehr unähnlich.
=====Clusteranalyse=====
Oberbegriff für einen Typ der in der multivariaten Analyse und vor allem in der Clusteranalyse verwendeten Proximitätsmaße, mit denen im Gegensatz zu den Ähnlichkeitsmaßen und den - Korrelationsmaßen die Entfernungsbeziehung zwischen Meßobjekten bestimmt wird. Durch sie wird die Entfernung zwischen Objekten im n-dimensionalen - Merkmalsraum bestimmt. Voraussetzung für die Verwendung von Distanzmaßen ist das Vorliegen intervallskalierter Daten. Die Anwendung von Distanzmaßen ist neben der Clusteranalyse auch in vielen anderen Bereichen der Datenanalyse sinnvoll, so bei Skalierungsverfahren und hier insbesondere bei multidimensionalen Skalierungsverfahren und bei der Diskriminanzanalyse (z.B. Mahalanobis-Distanz).
Die beiden am meisten verwendeten Distanzmaße sind Sonderfälle der zur größeren Familie der als Minkowski-Metrik bezeichneten zählenden Distanzmaße in der allgemeinen Form:
{{image url="cluster.png" title="Clusteranalyse-Formel"}}
Dabei bezeichnet d die Distanz zwischen den Punkten j und k bei Beachtung des Minkowski-Parameters r; xja und xka sind die Koordinatenwerte des Objekts j(k) auf den Achsen a(a = 1,2, ... , m) und r ist der Metrik-Parameter (1 > r > 0). Daraus lassen sich die beiden am meisten verwendeten Distanzmaße, die Euklidische Distanz und die City-Block Distanz ableiten.
=====City-Block-Distanz(Manhattan)=====
Setzt man in die Minkowski-Metrik für r = 1 ein, ergibt sich die City-Block-Distanz:
{{image url="manhattan2.png" title="City-Block-Distanz-Formel"}}
Die Bezeichnung City-Block-Distanz ist aus dem Bild rechteckig angelegter Straßenzüge abgeleitet, in denen die Entfernung von einem Punkt zum anderen nicht durch die in Form der Luftlinie angegebene kürzeste Distanz zwischen zwei Punkten, sondern nur durch Entlangfahren an den Straßenzügen zurückgelegt werden kann. Im angelsächsischen Sprachraum spricht man deshalb auch von der Manhattan-Distanz bzw. der Taxifahrer-Distanz (taxicab metric).
=====Euklidische Distanz=====
Setzt man in die Minkowski-Metrik für r = 2 ein, ergibt sich die Euklid-Distanz:
{{image url="euklidisch.png" title="Euklidische Distanz-Formel"}}
wobei xja und xka die Projektionen der Punkte j und k auf die Dimension a(a = 1,2, ..., m) darstellen. Durch die Euklidische Distanz wird die kürzeste Distanz zwischen zwei Objekten angegeben.
=====Euklidische u. City-Block-Distanz im Vergleich=====
{{image url="manhattan.png" title="Euklidische und City-Block-Distanz im Vergleich"}}
======Ähnlichkeitskoeffizienten======
=====Ähnlichkeitskoeffizienten im Vergleich=====
{{image url="ak1.png" title="Ähnlichkeitskoeffizienten im Vergleich"}}
=====Einteilung der Objekte=====
{{image url="ak2.png" title="Einteilung der Objekte"}}
=====Einfaches Beispiel=====
====Rohdaten====
{{image url="ak3_2.png" title="Einfaches Beispiel: Rohdaten"}}
====Berechnung====
{{image url="ak4.png" title="Ähnlichkeitskoeffizientsberechnung"}}
=====Großes Beispiel=====
====Rohdaten====
{{image url="ak5.png" title="Großes Beispiel"}}
====Ergebnis Tanimoto/Jaccard====
{{image url="ak6.png" title="Beispiel Ergebnis Tanimoto/Jaccard"}}
======Levenshtein-Distanz======
- minimale Anzahl von Einfüge-, Lösch- und Ersetz-Operationen, um die erste Zeichenkette in die zweite umzuwandeln
- benannt ist die Distanz nach dem russischen Wissenschaftler Wladimir Lewenstein (engl. Levenshtein), der sie 1965 einführte
- mathematisch ist die Levenshtein-Distanz eine Metrik auf dem Raum der Symbolsequenzen
=====Einfache Beispiele=====
{{image url="ld1.png" title="2 einfache Beispiele"}}
=====Berechnung=====
{{image url="ld2.png" title="Raster für Levenshtein-Tabelle"}}
{{image url="ld3.png" title="Fertige Levenshtein-Tabelle"}}
=====Levenshtein-Distanz in C# umgesetzt=====
{{image url="ld4.png" title="Levenshtein-Distanz in C#"}}
=====Eigenes Programm zum Vergleich von beliebig vielen Wörtern miteinander=====
{{image url="ld5.png" title="Tabelle der Levenshtein-Distanzen der genannten Wörter" width="1550"}}
**{{color text="1. Tutoren:" c="#00386a"}}**
Jordan Zapf
**{{color text="2. Ziel des Tutoriums:" c="#00386a"}}**
- Aufbau von Grundverständnis für Distanzmaße
- Vergleich von verschiedenen Ähnlichkeitskoeffizienten
- Programmierung der Levenshtein-Distanz
**{{color text="3. Adressaten des Lehrangebotes:" c="#00386a"}}**
Interessierte Studenten der Fakultät Informatik
**{{color text="4. Teilnahme:" c="#00386a"}}**
Wird durch Rundmail bekannt gegeben.
**{{color text="5. Veranstaltungsinhalte:" c="#00386a"}}**
======Distanzmaße======
Ähnlichkeitsmaße/ Distanzmaße werden im Rahmen der Datenanalyse (z.B. Clusteranalyse; Multidimensionale Skalierung) zur Bestimmung der Beziehungen zwischen Messobjekten eingesetzt. Dabei werden durch Vergleiche von metrisch skalierten Ausgangsdaten (Skalenniveau) die zwischen Objekten bestehenden Ähnlichkeiten gemessen. Ist die Distanz gering, dann ist die Ähnlichkeit groß; entsprechend sind sich Objekte bei großer Distanz sehr unähnlich.
=====Clusteranalyse=====
Oberbegriff für einen Typ der in der multivariaten Analyse und vor allem in der Clusteranalyse verwendeten Proximitätsmaße, mit denen im Gegensatz zu den Ähnlichkeitsmaßen und den - Korrelationsmaßen die Entfernungsbeziehung zwischen Meßobjekten bestimmt wird. Durch sie wird die Entfernung zwischen Objekten im n-dimensionalen - Merkmalsraum bestimmt. Voraussetzung für die Verwendung von Distanzmaßen ist das Vorliegen intervallskalierter Daten. Die Anwendung von Distanzmaßen ist neben der Clusteranalyse auch in vielen anderen Bereichen der Datenanalyse sinnvoll, so bei Skalierungsverfahren und hier insbesondere bei multidimensionalen Skalierungsverfahren und bei der Diskriminanzanalyse (z.B. Mahalanobis-Distanz).
Die beiden am meisten verwendeten Distanzmaße sind Sonderfälle der zur größeren Familie der als Minkowski-Metrik bezeichneten zählenden Distanzmaße in der allgemeinen Form:
{{image url="cluster.png" title="Clusteranalyse-Formel"}}
Dabei bezeichnet d die Distanz zwischen den Punkten j und k bei Beachtung des Minkowski-Parameters r; xja und xka sind die Koordinatenwerte des Objekts j(k) auf den Achsen a(a = 1,2, ... , m) und r ist der Metrik-Parameter (1 > r > 0). Daraus lassen sich die beiden am meisten verwendeten Distanzmaße, die Euklidische Distanz und die City-Block Distanz ableiten.
=====City-Block-Distanz(Manhattan)=====
Setzt man in die Minkowski-Metrik für r = 1 ein, ergibt sich die City-Block-Distanz:
{{image url="manhattan2.png" title="City-Block-Distanz-Formel"}}
Die Bezeichnung City-Block-Distanz ist aus dem Bild rechteckig angelegter Straßenzüge abgeleitet, in denen die Entfernung von einem Punkt zum anderen nicht durch die in Form der Luftlinie angegebene kürzeste Distanz zwischen zwei Punkten, sondern nur durch Entlangfahren an den Straßenzügen zurückgelegt werden kann. Im angelsächsischen Sprachraum spricht man deshalb auch von der Manhattan-Distanz bzw. der Taxifahrer-Distanz (taxicab metric).
=====Euklidische Distanz=====
Setzt man in die Minkowski-Metrik für r = 2 ein, ergibt sich die Euklid-Distanz:
{{image url="euklidisch.png" title="Euklidische Distanz-Formel"}}
wobei xja und xka die Projektionen der Punkte j und k auf die Dimension a(a = 1,2, ..., m) darstellen. Durch die Euklidische Distanz wird die kürzeste Distanz zwischen zwei Objekten angegeben.
=====Euklidische u. City-Block-Distanz im Vergleich=====
{{image url="manhattan.png" title="Euklidische und City-Block-Distanz im Vergleich"}}
======Ähnlichkeitskoeffizienten======
=====Ähnlichkeitskoeffizienten im Vergleich=====
{{image url="ak1.png" title="Ähnlichkeitskoeffizienten im Vergleich"}}
=====Einteilung der Objekte=====
{{image url="ak2.png" title="Einteilung der Objekte"}}
=====Einfaches Beispiel=====
====Rohdaten====
{{image url="ak3_2.png" title="Einfaches Beispiel: Rohdaten"}}
====Berechnung====
{{image url="ak4.png" title="Ähnlichkeitskoeffizientsberechnung"}}
=====Großes Beispiel=====
====Rohdaten====
{{image url="ak5.png" title="Großes Beispiel"}}
====Ergebnis Tanimoto/Jaccard====
{{image url="ak6.png" title="Beispiel Ergebnis Tanimoto/Jaccard"}}
======Levenshtein-Distanz======
- minimale Anzahl von Einfüge-, Lösch- und Ersetz-Operationen, um die erste Zeichenkette in die zweite umzuwandeln
- benannt ist die Distanz nach dem russischen Wissenschaftler Wladimir Lewenstein (engl. Levenshtein), der sie 1965 einführte
- mathematisch ist die Levenshtein-Distanz eine Metrik auf dem Raum der Symbolsequenzen
=====Einfache Beispiele=====
{{image url="ld1.png" title="2 einfache Beispiele"}}
=====Berechnung=====
{{image url="ld2.png" title="Raster für Levenshtein-Tabelle"}}
{{image url="ld3.png" title="Fertige Levenshtein-Tabelle"}}
=====Levenshtein-Distanz in C# umgesetzt=====
{{image url="ld4.png" title="Levenshtein-Distanz in C#"}}
=====Eigenes Programm zum Vergleich von beliebig vielen Wörtern miteinander=====
{{image url="ld5.png" title="Tabelle der Levenshtein-Distanzen der genannten Wörter" width="1550"}}
Deletions:
{{files}}
Additions:
{{files}}
Additions:
//In Bearbeitung//