Diplomarbeit

Transcription

Diplomarbeit
Optische Überwachung
einer automatischen Fertigungsanlage
über Farb- und Konturmerkmale
Diplomarbeit
Fachhochschule Köln, Abt. Gummersbach,
Fachbereich Informatik
von
Michael Krings
Studiengang: Technische Informatik
Juli 1998
1.Prüfer: Herr Prof. Dr. rer. nat. Dipl.-Phys. P. Göttel
2.Prüfer: Herr Prof. Dr. rer. nat. Dipl.- Math. H. Stenzel
Inhaltsverzeichnis
Inhaltsverzeichnis
Inhaltsverzeichnis ...........................................................................................................................2
1
Intention ...................................................................................................................................4
2
Einführung in die Hard- und Softwareumgebung ...............................................................5
2.1
2.2
2.3
Die Fertigungsanlage......................................................................................................................... 5
Die Meteor-Framegrabber-Karte....................................................................................................... 5
Die Kamera ....................................................................................................................................... 6
2.3.1
2.3.2
2.3.3
2.4
3
MIL Matrox Imaging Library............................................................................................................ 8
Aufnahmetechnik und Perspektive........................................................................................9
3.1
3.2
3.3
3.4
3.5
Beleuchtung....................................................................................................................................... 9
Abbildungsfehler von Objektiven und Schärfe ............................................................................... 10
Kamera und Belichtung................................................................................................................... 11
Auflösung und Abweichung............................................................................................................ 12
Perspektive ...................................................................................................................................... 13
3.5.1
3.6
Mustererkennung............................................................................................................................. 17
Blob Verarbeitung ........................................................................................................................... 19
4.2.1
4.2.2
4.2.3
4.3
Blob Erzeugung..................................................................................................................................... 19
Blob-Analyse ........................................................................................................................................ 22
Auswahl von Schwellenwerten und Kriterien in der Blobanalyse......................................................... 26
Bearbeitungsdauer........................................................................................................................... 27
Farbe.......................................................................................................................................28
5.1
5.2
5.3
5.4
Was ist Farbe? ................................................................................................................................. 28
Additive Farbmischung ................................................................................................................... 29
Subtraktive Farbmischung............................................................................................................... 30
Modell der additiven und subtraktiven Farbmischung .................................................................... 30
5.4.1
5.4.2
5.4.3
5.5
5.6
RGB (Red, Green, Blue) ....................................................................................................................... 30
CMY (Cyan, Magenta, Yellow) ............................................................................................................ 30
CMYK (Cyan, Magenta, Yellow, Black) .............................................................................................. 31
Weitere Farbmodelle ....................................................................................................................... 31
5.5.1
5.5.2
5.5.3
5.5.4
6
Histogramm........................................................................................................................................... 16
MIL 4.0- Objekterkennung ..................................................................................................17
4.1
4.2
5
Perspektivisches Sehen ......................................................................................................................... 14
Quantifizierung, Digitalisierung, Binarisierung .............................................................................. 15
3.6.1
4
Weißabgleich .......................................................................................................................................... 7
Einstellung des RGB Signal-Konverters ................................................................................................. 7
Anschluß ................................................................................................................................................. 7
HSB (Hue, Saturation, Brightness) ....................................................................................................... 31
HLS (Hue, Luminance, Saturation)....................................................................................................... 32
L*a*b-Modell ....................................................................................................................................... 32
DIN Farbsystem 6164 ........................................................................................................................... 33
Gamut.............................................................................................................................................. 33
Farbe als Kriterium...............................................................................................................34
6.1
6.2
6.3
Abstand der Farbbänder als Kriterium ............................................................................................ 34
Hue als Kriterium ............................................................................................................................ 37
LookUpTable .................................................................................................................................. 42
2
Inhaltsverzeichnis
6.4
Binarisierung nach Farbbändern...................................................................................................... 43
6.4.1
Auswahl der Farbe ................................................................................................................................ 45
7
Pseudo-MIL-Funktionen ......................................................................................................47
8
Funktionen aus bina.c ...........................................................................................................48
8.1
8.2
8.3
8.4
8.5
8.6
9
MblobSeparateRGBFast.................................................................................................................. 49
MblobSeparateRGB ........................................................................................................................ 51
MblobSeparateOneColor................................................................................................................. 53
MblobCord ...................................................................................................................................... 55
MblobTraceOne .............................................................................................................................. 57
ColorMaxMinDiff ........................................................................................................................... 60
Problematik Zentralprojektion............................................................................................61
9.1
9.2
Koordinatentransformation ............................................................................................................. 62
Die Raumkoordinaten des Roboterarms.......................................................................................... 64
10 Funktionen aus scale.c ..........................................................................................................68
10.1 GetScale .......................................................................................................................................... 69
10.2 GetPivot........................................................................................................................................... 72
10.3 GetPivotPlusLength ........................................................................................................................ 74
10.4 ProToReal ....................................................................................................................................... 76
10.5 GetPointOfRobot............................................................................................................................. 78
10.6 GetPointOfRobot_2......................................................................................................................... 80
10.7 GetRobotCord ................................................................................................................................. 82
10.8 GetCarriageCord ............................................................................................................................. 84
10.9 DrawScene ...................................................................................................................................... 86
10.10 GetAngle ......................................................................................................................................... 91
10.11 GetAngle_2 ..................................................................................................................................... 92
11 Überwachung einer Fertigungsanlage.................................................................................93
11.1 Programm ........................................................................................................................................ 93
11.1.1
Geschwindigkeit.................................................................................................................................... 94
12 Resümee..................................................................................................................................95
13 Anhang A................................................................................................................................97
14 Anhang B................................................................................................................................99
15 Abbildungsverzeichnis ........................................................................................................101
16 Literaturverzeichnis............................................................................................................103
3
Intention
1 Intention
Die fortschreitende technische Entwicklung im Personal-Computer-Bereich macht es heute möglich, umfangreiche Bilddaten in hoher Geschwindigkeit zu verarbeiten. Framegrabberkarten können 25 Bilder pro Sekunde in den Speicher eines Personal Computers schreiben. Bilddatenverarbeitunglibraries bieten dem Anwender verschiedene Möglichkeiten, die große Menge der gewonnenen Daten ohne erheblichen Programmieraufwand weiter zu verarbeiten.
In der vorliegenden Arbeit wird geprüft, inwieweit eine reale Fertigungsanlage mit Hilfe eines
solchen Bildverarbeitungssystems überwacht werden kann. Die zu überwachende Anlage besteht
aus einem Roboterarm und einer Fräse.
Mit Hilfe der Library können Bildverarbeitungs-Programme geschrieben werden, die die Abbildung einer Szene (Aufnahme) nach mathematisch definierbaren Eigenschaften von Objekten untersuchen. Die Abbildung liegt als eine Menge von farbigen Bildpunkten (Pixeln) vor. Das Programm untersucht Gruppen von Pixeln und bewertet deren Übereinstimmung mit mathematisch
beschriebenen Eigenschaften des wiederzuerkennenden Objekts.
Die zur Verfügung stehende Library bietet verschiedene Verfahren zur Untersuchung von Bilddaten. Diese Verfahren werden auf ihre Eignung untersucht, in der Szene "Roboter-Fräse" Objekte
zu finden. Die Untersuchung der Verfahren auf ihre Verwendbarkeit erfolgt zunächst anhand eines Bildes, das einen Ausschnitt aus der Szene "Roboter-Fräse" zeigt. Die Ergebnisse der Untersuchungen werden dann auf eine Abfolge von Bildern übertragen.
Der zentrale Punkt der Wiedererkennung ist das Auffinden der wesentlichen Eigenschaften des
wiederzuerkennenden Objekts. Diese Eigenschafen sollen in der Szene einzigartig sein. Die Eigenschaften, die die Objekte charakterisieren, teilen sich in zwei wesentliche Gruppen: Die der
geometrischen Eigenschaften und die der farbigen Eigenschaften.
Es wird untersucht, ob eine Kombination aus Farbmerkmalen und geometrischen Merkmalen zur
Erkennung von Objekten in der Szene "Roboter-Fräse" genutzt werden kann.
Die zu untersuchenden Abbildungen werden durch das System "Beleuchtung-Objektiv-KameraFramegrabber" erzeugt. Die wesentlichen systeminhärenten Fehler werden beschrieben, um ihren
Einfluß auf Farbe und Geometrie der Abbildung zu kennen.
Bei der Aufnahme erfolgt die Abbildung der dreidimensionalen Szene auf die zweidimensionale
Bildebene der Kamera. Dieser Abbildungsvorgang entspricht einer gnomonischen Projektion
(Zentralprojektion). Aus den aus der Abbildung gewonnenen zweidimensionalen Koordinaten eines Objekts kann ohne zusätzliche Information keine Koordinate des Raums bestimmt werden. Es
wird gezeigt, daß unter Ausnutzung der Kenntnis der festen Abmessungen von Objekten in bestimmten Fällen auf die Raumkoordinate, die das Objekt beschreibt, geschlossen werden kann.
Die im Rahmen dieser Arbeit entwickelten Methoden zur Separation von Farbmerkmalen finden
sich in einem Funktionspool wieder. Zusätzliche Funktionen sind zur Umrechnung von Koordinaten der zweidimensionalen Abbildung in Koordinaten des Raums entstanden. Eine weitere
Funktion dient der schematischen Darstellung der Szene. Sämtliche Funktionen sind im Stil der
MIL 4.0 Funktionen geschrieben und lassen sich Dank einer, an die MIL-Dokumentation angepaßten Funktionsbeschreibung, leicht in Bildverarbeitungsprogramme einbauen.
Im Rahmen dieser Diplomarbeit wurde mit den erzeugten Funktionen ein Programm angefertigt,
welches die Koordinaten des Roboters und der Fräse ermittelt und grafisch darstellt.
4
Einführung in die Hard- und Softwareumgebung
2 Einführung in die Hard- und Softwareumgebung
Um ein Bild von der Ausgangssituation zu erhalten, werden die technischen Gräte und die beobachtete Szene im folgenden näher beschrieben, da diese den Lösungsweg mitbestimmen. Eine
Kamera nimmt Bilder einer Szene auf. Die Bilder zeigen einen Roboterarm1 und eine Fräse in der
Draufsicht. Die von der Kamera aufgenommenen Bilder gelangen als analoge Spannungswerte in
die Meteor-Framegrabber-Karte. Die Framegrabber-Karte besitzt einen A/D-Wandler2, der das
Signal in digitale Information umsetzt und in dieser Form in den Arbeitsspeicher des Rechners
oder der Grafikkarte schreibt. Von dort wird ein Teil oder die gesamte Bildinformation mit Hilfe
der MIL (Matrox Imaging Library) weiterverarbeitet.
2.1 Die Fertigungsanlage
Innerhalb des von der Kamera erfaßten Ausschnitts der Fertigungsanlage befinden sich bewegliche Maschinen. Es handelt sich um einen Roboterarm und eine Fräse. Die Fräse kann durch eine
Transporteinrichtung in drei
Achsen verfahren werden.
Die Kamera betrachtet die
Szene von oben. Somit sind
im wesentlichen nur Bewegungen in X- und Y- Achse
der Maschinen zu erkennen.
Der Abstand des Brennpunktes der Kamera zur
Ebene des Tischs beträgt
2150 mm. Der Bildausschnitt ist ca.1490 mm x
1110 mm, was bei dem
PAL Format der Kamera
(768 Pixel x 576 Pixel) eine
Auflösung von ca. 1,93 mm
pro Pixel entspricht.
Abbildung 1: Fertigungsanlage
2.2 Die Meteor-Framegrabber-Karte
Bei der Meteor-Framegrabber-Karte handelt es sich um eine PCI3-Bus Karte der Firma Matrox.
Die Matrox-Meteor ist in der Lage, digitalisierte Daten mit bis zu 45 MB/sec Transferrate über
den PCI-Bus eines Rechners mit geeignetem Chipsatz in den Speicher einer Grafikkarte oder den
Hauptspeicher des Rechners zu transferieren. Dieser Vorgang erfolgt per DMA4, was im Vergleich mit anderen Methoden eine nur geringe CPU5-Belastung zur Folge hat.
1
Roboterarm a)(elektronisch gesteuerter selbstbeweglicher Automat) b)(äußerlich wie der Arm eines
Menschen gestaltete Apparatur, die gewisse manuelle Funktionen ausführen kann. Diese Funktionen
gleichen den Funktionen des menschlichen Arms.)
2
A/D-Wandler (analog-digital-Wandler)
3
PCI (Peripheral Component Interconnect)
4
DMA (Direct Memory Access)
5
CPU (Central Processing Unit)
5
Einführung in die Hard- und Softwareumgebung
Folgende Tabelle zeigt, welche Transferrate ein System erfüllen muß, um eine entsprechende
Bildwiederholrate zu erreichen:
Transferrate auf
dem PCI-BUS
(MB/Sec)
9
11
35
42
Videoformat
Auflösung
(Pixel)
Farbtiefe
Bildwiederholrate
(Bilder/Sec)
RS-170
CCIR
NTSC oder
RGB
PAL oder
RGB
640 x 480
768 x576
640 x 480
8 Bit Monochrom
8 Bit Monochrom
24 Bit Farbe
30
25
30
768 x 576
24 Bit Farbe
25
Tabelle 1
Folgende Video-Farb- und Monochrom-Formate kann die Matrox Meteor verarbeiten:
• Komposite oder Y/C (S-Video: S-VHS, Hi8)
• RS-170 (640 x 480) / CCIR (768 x 576)
• NTSC (640 x 480) / PAL (768 x 576) / SECAM (768 x 576)
Die vorliegende Version der Meteor ist das sogenannte Matrox-Meteor-RGB-Modell. Zu den
Standard Videoformaten können zusätzlich RGB-Videosignale einer Standard-RGB-Videokamera
mit 24 Bit Farbtiefe aufgenommen werden. Zusätzlich kann softwareseitig und pro RGB-Kanal
unabhängig eine Dehnung eingestellt werden. So kann auch die Einstellung von
gung, Helligkeit und Kontrast per Software beeinflußt werden. Alternativ zu einer Farbkamera
können an den Eingängen der Meteor auch bis zu vier Monochrom Video Signale gleichzeitig
aufgenommen werden.
Abbildung 2: Blockschaltbild der Meteor Framegrabber-Karte
2.3 Die Kamera
Die Kamera der Firma Panasonic Modell F15 hat zur Aufnahme ein CCD Element mit ca. 439000
Pixeln bei einer Horizontalauflösung (Leuchtdichte) von 460 Zeilen eingebaut. In der Betriebsart
ATW werden Farbtemperaturschwankungen in einem Bereich von 2600° K bis 6500° K durch einen automatischen Weißpunktabgleich (Whitebalance) ausgeregelt. In der Betriebsart AWC kann
ein manueller Weißabgleich durchgeführt werden. Die Kamera erlaubt fünf Ver
1/200, 1/259, 1/500, 1/1000, und 1/2000 Sekunde. Die erforderliche Standardbeleuchtung beträgt
1400 Lux. Die Kamera ist mit einer Fernsteuerungseinheit verbunden. An diese wird auch ein
Netzteil zur Spannungsversorgung angeschlossen. Am Netzteil ist der Ausgang mit einem PAL6
Einführung in die Hard- und Softwareumgebung
Komposit-Videosignal zu finden. An der Kamera befindet sich zusätzlich ein RGB Adapter (WVAD38E). An diesem können die Signale Red, Green, Blue, Luminance und Sync über 5 BNCStecker abgegriffen werden.
Die Kamera kann mit verschiedenen Objektiven ausgestattet werden. Das vorliegende AutofokusZoom-Objektiv WV-LZ14/8 AFE hat die Lichtstärke 1:1,4. Die Brennweite läßt sich stufenlos
von 10,5 mm bis 48 mm mittels eines Antriebs verstellen.
2.3.1 Weißabgleich
Um bei der Aufnahme mit der Kamera ein möglichst korrekte Wiedergabe der Farbe zu gewähren
wird vor der Aufnahme ein Weißabgleich durchgeführt. Der Weißabgleich sollte wie folgt durchgeführt werden um reproduzierbare Ergebnisse zu erhalten:
• Vor einem Weißabgleich ist sicherzustellen, daß die Beleuchtung die optimale Betriebstemperatur erreicht hat. Dies kann je nach Leuchtmittel bis zu einigen Minuten dauern.
• An der Fernbedienungseinheit sind die Regler für Red Gain, Blue Gain und Auto Iris auf ihre
neutrale Mittelstellung hin zu überprüfen.
• Da die Szene von einer Lichtquelle konstanter Farbtemperatur beleuchtet wird, sollte der
Wahlschalter für die Whitebalance an der Fernbedienungseinheit auf AWC gestellt werden.
• Ein weißes Blatt wird so auf den Arbeitstisch gelegt, daß es die zu betrachtende Szene völlig
bedeckt. Falls notwendig, wird der Zoom des Objektives entsprechend verstellt.
• Nachdem die Kamera diesen Bereich scharf fokussiert hat, wird zum Abschluß der Weißbalance Einstellung der Knopf "SET WHITE BAL" an der Fernbedienungseinheit betätigt.
2.3.2 Einstellung des RGB Signal-Konverters
Da der RGB Signal-Konverter vom Hersteller optimal eingestellt wurde, sollte die Einstellung
nicht verändert werden. Ist jedoch eine Einstellung erforderlich, sollte zuerst ein Weißabgleich erfolgen. Anschließend ist nach dem Manual "RGB Adapter WV-AD38" zu verfahren. Zusätzlich
kann eine Aufnahme des Testbildes "RGB CHART V8RA 0114AN" durch ein Grafikprogramm
mit Histogrammfunktion überprüft werden. Hierbei sollten die einzelnen Farbkomponenten der
drei Farbflächen einen gleichmäßig hohen Wert haben. Die Weißfläche sollte ebenfalls drei gleich
hohe Werte für den Rot-, Grün-, und Blauanteil aufweisen.
2.3.3 Anschluß
Schließt man die Farbsignal-Ausgänge des RGB-Konverters der Kamera an die Eingänge Chanel
0, 1, 2 der Matrox Meteor und den Komposit-Ausgang der Kamera an Chanel 3 der Matrox
Framegrabber-Karte an, ist es ohne Änderung der Verkabelung möglich, zwischen zwei Betriebsarten zu wechseln.
Betriebsrat RGB-PAL: Das Farbsignal der Channel 0-2 wird ausgewertet. Zur Synchronisation
wird das Komposit-Signal von Channel 3 verwendet.
Betriebsart PAL:
Als Eingangssignal muß nun der Channel 3 gewählt werden. Das komplette Komposit-Signal wird ausgewertet.
7
Einführung in die Hard- und Softwareumgebung
2.4 MIL Matrox Imaging Library
Die Matrox Imaging Library (MIL) ist eine Library mit optimierten Funktionen für Bilddatenverarbeitung, Blob-Analyse, morphologische6 und geometrische7 Transformationen, Mustererkennung, OCR-Erkennung8, Filterung und Punkt zu Punkt Transformationen.
Die MIL kann in verschiedenen Entwicklungsumgebungen und Programmiersprachen eingesetzt
werden. Bei Programmiersprachen wie Microsoft C++ und Microsoft VB unter dem Betriebssystem Windows 95, WinNT 3.5 oder WinNT 4.0 wird die Library als Dynamic Link Library9 aufgerufen. Möglich ist auch eine Verwendung unter DOS mit einem Standard C Compiler.
Die Funktionen einer Funktionsgruppe werden alle mit denselben führenden Buchstabenfolgen
benannt. So beginnen zum Beispiel Funktionsaufrufe, die sich mit der Mustererkennung beschäftigen, mit Mpat. "M" steht hierbei für MIL und "pat" für Pattern recognition. Diese Gruppierung
zieht sich durch den gesamten Funktionsumfang.
Die MIL unterstützt jede Standard-VGA-Karte und die große Serie von PCI-Framegrabber-Karten
der Firma Matrox. Die Framegrabber-Karten gibt es mit verschieden hohen Leistungen, von einer
einfachen Grabber-Karte bis hin zu Karten, die über mehrere Onboard-Prozessoren zur Bildverarbeitung verfügen. Die Programme, die mit Hilfe der MIL Library geschrieben wurden, sind leicht
auf unterschiedliche Systeme zu portieren, da sie bis auf wenige Funktionen hardwareunabhängig
sind.
Zur Verfügung steht die Version 4.0. Zur Zeit existiert bereits die Version 5.0. Diese ist besonders
ozessoren. Benutzt man die MIL 5.0 gegenüber der MIL 4.0 auf einem MMX Prozessor, sind bei einigen Bildoperationen Geschwindigkeitssteigerungen um ein
Vielfaches zu erwarten.
Um eine deutlich langsamere Bildausgabe zu vermeiden, sollte beim Einsatz der Betriebssysteme
Windows 95, WinNT 3.5 oder WinNT 4.0 unbedingt auf eine Unterstützung von DirectX geachtet
werden. Bei der Verwendung von NT4.0 ist dringend das Servicepack 3 von Microsoft einzuspielen, damit das Betriebssystem DirectX verwendet.
6
morphologisch (die äußere Gestalt betreffend)
geometrisch (die Geometrie betreffend)
8
OCR (Optical Character Regcognition, Bezeichnung für alle Arten maschineller Zeichenerkennung)
9
DLL (Dynamic Link Library, Libraries die während der Laufzeit dynamisch eingebunden werden. Sie
sind an der Dateikennung .dll zu erkennen.)
7
8
Aufnahmetechnik und Perspektive
3 Aufnahmetechnik und Perspektive
Die Aufnahmen der Szene werden mit einer Kamera aufgenommen. Das System "Objektiv-Kamera-Beleuchtung" bestimmt die Qualität der Aufnahme. Ziel der Aufnahme ist es, ein möglichst
konstantes Abbild eines Objekts zu erzeugen. Die Abbildung des Objekts soll weder von seiner
Lage noch von Fehlern des Systems "Objektiv-Kamera-Beleuchtung" beeinflußt werden. Fehler
bei der Erzeugung der Abbildung erschweren die spätere Weiterverarbeitung des Bildes und die
Wiedererkennung von Objekten. Das Ergebnis einer Aufnahme eines Objekts muß reproduzierbar
sein. Um eine möglichst stigmatische10 Abbildung eines Objekts zu erreichen, sind bei der Aufnahme einer Szene grundlegende Kenntnisse des Systems "Objektiv-Kamera-Beleuchtung" nötig.
Dem System "Objektiv-Kamera-Beleuchtung" sind physikalische und systematische Grenzen bei
der Erzeugung von Aufnahmen gesetzt. Die Einschränkungen sind zu kennen, um ihre Auswirkungen auf die Abbildung besser verstehen zu können.
Die wesentlichste Eigenschaft der Aufnahmetechnik ist, daß von einer dreidimensionalen Szene
ein zweidimensionales Abbild erzeugt wird. Das Aussehen und die Abmessungen der Objekte auf
der Abbildung hängen von der Perspektive ab. Daher wird in diesem Kapitel neben der eigentlichen Aufnahmetechnik auch die Perspektive erörtert.
3.1 Beleuchtung
Die in der Szene liegenden Objekte sind keine Selbstleuchter. Sie reflektieren nur das Licht, das
sie von einer Lichtquelle ausgehend trifft. Nicht selbstleuchtende Objekte müssen beleuchtet werden, damit sie sichtbar sind. Bei der Erkennung von Objekten durch ein Bildverarbeitungssystem
ist die Konstanz und Reproduzierbarkeit der Beleuchtung wichtig. Eine Veränderung der Beleuchtung führt zu einer Veränderung der Abbildung. Ein verändertes Abbild macht eine Wiedererkennung schwierig.
Eine solche Beleuchtungsänderung tritt beispielsweise auf, wenn man die einzige seitliche Beleuchtung eines dreidimensionalen Körpers von einer auf die andere Seite des Körpers dreht. Der
punktweise Vergleich einer Aufnahme vor der Beleuchtungsänderung mit einer Aufnahme nach
rung zeigt eine erhebliche Abweichung über das gesamte Bild, obwohl beide Aufnahmen
doch dasselbe Objekt zeigen. Die Beleuchtung sollte so beschaffen sein, daß auf jeden Punkt der
che des Objekts die gleiche Lichtmenge strahlt. Die Strahlung sollte diffus (aus jeder
Richtung) das Objekt treffen. Dieser ideale Zustand ist jedoch in der Praxis nicht zu erreichen.
Reale Lichtquellen geben kein vollständig gleichmäßiges Licht ab. Die Intensität in den Randbereichen ist daher meist schwächer als im Zentrum.
Ein weiteres Problem ist die Farbtemperatur der Beleuchtung. Ein angeleuchteter Körper kann nur
die Anteile eines Farbspektrums reflektieren, die in dem Licht enthalten sind, das ihn beleuchtet.
So erscheint ein Körper, dessen Farbpigmente ein Absorptionsspektrum11 aufweisen, so daß er im
weißen Licht12 rot erscheint, unter der Beleuchtung mit grünem Licht grau oder schwarz. Eine
Beleuchtung, die weiß erscheint, muß nicht zwangsläufig eine gleichmäßige Verteilung von Licht
jeder Wellenlänge über das gesamte sichtbare Spektrum enthalten. Es kann durchaus der Eindruck
10
stigmatische Abbildung (optische Abbildung mit sehr geringen Abbildungsfehlern. Die stigmatische
Abbildung zeigt nur geringe Abweichungen von der idealen Abbildung. )
11
Absorptionsspektrum (Spektrum, das jene Bereiche des gesamten Spektrums angibt, in dem ein Stoff
auftreffende Strahlung absorbiert.)
12
weißes Licht (enthält sämtliche sichtbaren Wellenlängen des Spektrums)
9
Aufnahmetechnik und Perspektive
von weißem Licht entstehen, wenn bestimmte Wellenlängen vollständig fehlen oder an
durchschnittlich stark enthalten sind. Für eine Farbanalyse eines Objekts kann ein solches Licht
Werden Beobachtungen unter einer Beleuchtung über einen längeren Zeitraum gemacht, so muß
berücksichtigt werden, daß sich sowohl die Lichtintensität als auch die Farbtemperatur mit der
Alterung des Leuchtmittels deutlich ändern können.
Reflexionen auf Objekten sind in Bezug auf das Wiedererkennen von Objekten kritisch. Sie sind
so weit wie möglich zu vermeiden. An einer reflektierenden Stelle erscheint das Objekt die Farbe
Die Helligkeit oder auch Leistung der Beleuchtungen, die direkt an die Wechselspannung aus
dem Netz der EVU13 angeschlossen sind, schwankt mit der Frequenz der Wechselspannung. Bei
uns sind das 50 Hz oder 50 Schwingungen pro Sekunde. Eine solche Beleuchtung kann unterschiedlich helle Aufnahmen hervorrufen.
Nicht immer ist eine vollständige und gleichmäßige Ausleuchtung gewünscht. Beispielsweise ist
bei einem einfarbigen Körper, in den eine Kontur gefräst ist, erst durch die geringen Helligkeitsunterschiede an den Kanten die Kontur erkennbar. Schatten können helfen, Abmessungen und
Größenunterschiede zu erkennen.
3.2 Abbildungsfehler von Objektiven und Schärfe
Die Aberrationen14 bei Objektiven sind zahlreich. Im folgenden eine Auswahl der wichtigen und
häufig auftretenden Fehler.
Ein häufig zu beobachtender Fehler bei Objektiven ist, daß die Helligkeit in den Ecken des Bildes
abnimmt. Mit einem solchen Objektiv wird ein Objekt, das in der Mitte der Szene liegt, heller erscheinen als ein gleiches Objekt, das in einer Ecke liegt. Objektive sind auch nie völlig orthoskopisch15, so daß häufig gerade in den Randbereichen des Bildes Verzeichnungsfehler auftreten.
Man erkennt sie daran, daß eine gerade Linie sich wölbt. Ist die Abbildung in den Randbereichen
unscharf, so nennt man diesen Fehler Bildfeldwölbung. Die Lichtbrechung kürzerer Wellenlängen
(blauer Strahlen) ist stärker als die langwelliger Strahlen (roter Strahlen); dadurch liegen ihre
Brennpunkte nicht in einer Ebene. Man nennt diesen Fehler chromatische Aberration. Linsenanordnungen, die diesen Fehler korrigieren, nennt man Aprochromaten. Für diese Objektive werden
sen benutzt.
Als Tiefenschärfe wird der Bereich benannt, der bei einer Aufnahme scharf (focussiert) abgebildet
wird. Die Tiefenschärfe ist um so größer, je größer die Blendenzahl ist, oder auch je kleiner die
Öffnung der Blende am Objektiv ist. Natürlich fällt bei kleinerer Blendenöffnung weniger Licht
durch das Objektiv, und die Belichtungszeit muß entsprechend verändert werden. Die Veränderung um einen vollen Blendenwert entspricht der halben, respektive der doppelten Lichtmenge.
Bei Videokameras wird häufig die Belichtungszeit pro Bild konstant gehalten; so ändert sich die
Öffnung der Blende bei wechselnden Beleuchtungsverhältnissen automatisch, um eine korrekte
Belichtung zu gewähren. Dies bedingt, daß sich die Tiefenschärfe mit wechselnder Beleuchtung
ändert. Es kommt vor, daß Bereiche, die vor einer Beleuchtungsänderung noch scharf abgebildet
worden sind, nach Änderung der Beleuchtung nun nicht mehr scharf abgebildet werden. Verändert man die Brennweite bei Zoom- oder auch Vario-Objektiven, ändern sich häufig auch die
Lichtstärke und Tiefenschärfe. Je nach Methode der automatischen Schärferegulierung (Auto13
EVU (Elektrischen Versorgungs Unternehmen)
Aberration (auf Grund von Abbildungsfehlern entstehende Abweichungen von der idealen Abbildung.)
15
orthoskopisch (verzeichnungsfrei)
14
10
Aufnahmetechnik und Perspektive
focus) können folgende Motive dazu führen, daß es der Automatik nicht möglich ist, ein Motiv
scharf einzustellen: bei einfarbigen Flächen, bei strukturlosen Flächen, bei großen Helligkeitsunterschieden im Motiv.
3.3 Kamera und Belichtung
Videokameras besitzen im Normalfall eine automatische Belichtungsregelung. Mittels der Belichtungsautomatik wird versucht, bei jeder Aufnahmesituation die Belichtung optimal den Verhältnissen anzupassen. Dies führt bei den meisten Belichtungsregelungen dazu, daß ein Objekt
mittlerer Helligkeit auf einem hellen Hintergrund dunkler abgebildet wird als dasselbe Objekt auf
einem hellen Hintergrund. Ändert sich in einer sonst konstanten Szene eine große Fläche in ihrer
Helligkeit, ist davon auszugehen, daß sich bei automatischer Belichtungssteuerung die Einstellung
der Belichtung ändert. Dieses Verhalten wird von der Messung des einfallenden Lichtes bestimmt.
Neben den verschieden Sensoren zur Messung der Lichtmenge gibt es verschiedene Messverfahren. Bei den verschiedenen Messverfahren kennt man z.B. die Spot-, Zonen- oder auch PunktMessung (nur der in der Mitte des Suchers liegende Teil des Bildes wird zur Belichtungsmessung
herangezogen ) oder die Mittenbetonte-Messung (auch der Randbereich fließt mit ca. 40% in das
Messergebnis ein). Bei einigen Belichtungsregelungen wird bei der Auswertung der Messergebnisse von der Belichtungs-Automatik berücksichtigt, daß im oberen Bereich der überdurchschnittlich helle Himmel liegt. Es ist bei Kameras mit solcher Automatik darauf zu achten, daß die
Ausrichtung der Kamera die Belichtung beeinflußt.
Mit Kameras soll im Regelfall der menschliche Eindruck von farbigem Sehen reproduziert werden. Die Verfahren und Hilfsmittel sind jedoch nur bedingt geeignet, den Eindruck des Sehens zu
imitieren.
Abbildung 3 zeigt die Farbempfindlichkeit des menschlichen
Auges und des chemischen
Schwarzweißfilms auf Basis von
Silberhalogeniden. Man sieht
deutlich, daß die beiden Kurven
sich nicht decken. Die Kurve eines CCD16-Elements liegt auch
nicht auf der Kurve des menschlichen Auges. Selbst die Kurven,
die den Verlauf der Empfindlichkeit des CCD-Elements pro
Farbkanal über die Wellenlänge
des Lichts darstellen, entsprechen nicht dem idealen Verlauf.
Abbildung 3: Farbempfindlichkeit eines Films
Da ein Farbfilm immer nur bei einer bestimmten Farbtemperatur die für ihn optimalen Ergebnisse
erzielt, gibt es z.B. für Kunstlicht andere Filme als für Außenaufnahmen bei Tageslicht.
Bei Videokameras sollte man dann immer den Weißpunkt neu abgleichen, wenn man die Farbtemperatur der Beleuchtung ändert, oder man erkennt deutlich, daß das Bild nach Rot oder Blau
hin verschoben ist.
16
CCD (charge-coupled device, ladungsgekoppeltes Bauelement, integrierter Schaltkreis zur Verarbeitung
elektrischer und optischer Signale)
11
Aufnahmetechnik und Perspektive
Hohe Kontraste können sowohl von Filmen als auch von CCD-Kameras nicht so gut ausbalanciert
werden wie vom menschlichen Auge. So wird der Blick aus einem Fenster einer dunkleren
Wohnung hinaus auf eine von der Sonne beschienenen Straße kaum "richtig" belichtet werden.
Entweder werden die Elemente des Bildes, die Teile der Wohnung zeigen, zu dunkel oder die
Elemente der Straße zu hell abgebildet. Menschen ist es besser möglich, beide Bereiche deutlich
zu erkennen.
3.4 Auflösung und Abweichung
Das CCD-Element der Videokamera hat nur eine begrenzte Anzahl von Bildpunkten. Als Auflösung wird die Anzahl der Bildpunkte pro Flächeneinheit bezeichnet. Die Abbildung 4 zeigt dasselbe Objekt, aufgenommen bei drei verschiedenen Auflösungen. Deutlich zu sehen ist hierbei die
A
B
Abbildung 4: Linien bei verschiedenen Auflösungen
12
Aufnahmetechnik und Perspektive
mit abnehmender Auflösung sinkende Qualität der Aufnahmen von links nach rechts. Sinkende
Qualität bedeutet, daß die Bildinformation -in diesem Beispiel die Linien- schlechter wiederzuerAbbildung 4, die Linie ist bezeichnet mit dem Buchstaben
"A") zeigt, daß sowohl die Farbe als auch die Breite der Linie in dem Bild mit geringer Auf
falsch dargestellt werden. Die ca. nur eine halben Pixel breite Linie wird als sehr schwach graue,
vier Pixel breite Linie dargestellt. Die dicke schwarze Linie (Abbildung 4, die Linie ist bezeichnet mit dem Buchstaben "B") verschwimmt zu einem dunkelgrauen Band.
Betrachtet man die einzelnen Pixel einer einfarbigen und formatfüllend aufgenommenen Fläche,
stellt man Abweichungen einzelner Pixel dieser Fläche von über 20% vom Mittelwert fest.
Treffen zwei unterschiedlich farbige Flächen aufeinander, so liegt die Breite der Grenzfläche
(Fläche, an der sich die unterschiedlich farbigen Flächen berühren, die aber dennoch Pixel beinhaltet, die deutlich von der ein oder anderen Farbe abweichen) bei 3 bis 5 Pixeln. Vergleiche
Abbildung 5.
Abbildung 5: Zwei einfarbige Flächen
3.5 Perspektive
Einen wesentlichen Einfluß auf das Bild hat
die Perspektive. Perspektive ist die ebene
bildliche Darstellung von dreidimensionalen
Objekten durch eine Projektion.
In einer Kamera wird die dreidimensionale
Szene auf die Bildebene projiziert. Dieser
Vorgang gleicht einer Zentral- oder Punktprojektion durch den Brennpunkt. Die Projektionsebene ist bei der Kamera die Bildebene. In der Bildebene liegt der Film oder
das lichtempfindliche Element der Kamera.
Werden alle Punkte des abzubildenden Objekts durch Strahlen mit dem Brennpunkt
verbunden und schneiden die Strahlen die
Bildebene, ergibt die Schnittfigur ein ebenes
Abbild des Objekts.
Projektion
Brennpunkt
Objekt
Ein wesentliches Merkmal dieser Projektionsmethode ist, daß die Entfernung des Ob- Abbildung 6: Zentralprojektion
jekts einen entscheidenden Einfluß auf die
Größe des Objekts in der Abbildung hat. Steigt der Abstand des Objekts zur Projektionsebene, so
wird das Objekt im Abbild kleiner dargestellt (vergleiche Abbildung 7). Steht eine Fläche mit parallelen Kanten gekippt zur Projektionsfläche, so sind die Kanten der Fläche im Abbild nicht parallel, sondern laufen zusammen.
13
Aufnahmetechnik und Perspektive
Projektion
Brennpunkt
Objekt
Abbildung 7: Zentralprojektion zweier Objekte
In der Photographie wird von Perspektive als Zusammenspiel von Brennweite (Bildwinkel) und
von Abständen der Bildebene zu Motiv, Vordergrund und Hintergrund gesprochen. Weitere aus
der Photographie bekannte Begriffe sind stürzende Linien oder stürzende Kanten. Ein Beispiel
dafür ist die Aufnahme eines Hochhauses, das von der Höhe des Straßenniveaus aufgenommen
wird. Da die Fläche der Vorderfront des Hochhauses gekippt zur Bildebene des Films liegt, wirkt
das Hochhaus in der Abbildung (der Photographie) unten deutlich breiter als oben. Hierbei spricht
man in der Photographie vom perspektivischen Fehler oder von stürzenden Kanten. Fällt der
Blick von schräg oben auf das Objekt, spricht man von Vogelperspektive. Schaut man von unten
auf das Objekt, so spricht man von einer Froschperspektive.
Unter perspektivischer Täuschung verstehen wir eine optische Täuschung bei einer Perspektivischen Darstellung, die z.B. gleich große Körper in unterschiedlicher Größe erscheinen läßt.
Aus den Abmessungen, die ein Objekt in der Abbildung aufweist, kann ohne zusätzliche Informationen nicht auf die tatsächlichen Abmessungen des realen Objekts geschlossen werden.
Dies Tatsache ist von großer Relevanz für die Lösungsansätze dieser Diplomarbeit.
3.5.1 Perspektivisches Sehen
Die beiden Augen des Menschen befinden sich in einem festen Abstand zueinander in den Augenhöhlen. Durch diesen Abstand entsteht eine Parallaxe. Parallaxe ist der Winkel, den zwei Gerade bilden, die von verschiedenen Standorten zu einem Punkt gerichtet sind. Beim Sehvorgang
ist die Parallaxe der Winkel zwischen zwei Sehstrahlen zu einem Objekt, wobei jeweils ein Sehstrahl zum linken und der andere zum rechten Auge geht. Diese Parallaxe ist um so größer, je nä-
14
Aufnahmetechnik und Perspektive
her die Entfernung des Objektes zu den Augen ist. Der stereoskopische17 Eindruck, den wir Menschen von unserer betrachteten Umwelt erhalten, wird zum Teil aus Erfahrung und zum andern
aus der Information, die sich durch die Parallaxe ergibt, gewonnen.
3.6 Quantifizierung, Digitalisierung, Binarisierung
In der Videokamera wird die Bildinformation quantifiziert. Das Bild wird dazu in ein Raster aus
Zeilen und Spalten aufgeteilt. Pro Bildpunkt werden bei einer Farbkamera drei analoge Spannungswerte, für die Farben Rot, Grün und Blau, ausgegeben.
Die einzelnen Zellen oder Bildpunkte arbeiteten meistens nicht für sich unabhängig von ihren
Nachbarn, das bedeutet, daß die Beleuchtung eines einzelnen Bildpunkts dazu führt, daß die
Nachbarn einen (wenn auch nur geringen) Spannungswert abgeben. Benachbarte Zellen beeinflussen sich offenbar meistens; man spricht auch von Überlappen18.
Die Anordnung der Abtastzellen und ihre Form sind auch unterschiedlich. Bauartbedingt sind oft
kleine Lücken zwischen diesen Elementen. Die Lücken und Fehler werden meist durch interpolierte19 Werte ersetzt. Beim Abtasten z.B. einer im Rasterdruckverfahren hergestellten Vorlage
entstehen Interferenz-Muster, wenn das Abtastraster ein Vielfaches oder Teiler des ursprünglichen
Rasters der Vorlage ist. Dieses Ergebnis ist auch als Moiré-Effekt bekannt.
Das Digitalisieren entspricht dem Aufteilen einer kontinuierlichen Größe in genau eingeteilte Intervalle (Stufen oder Schritte). Die Intervalle sind abzählbar, müssen aber nicht zwangsläufig
gleich große Bereiche erfassen. Die Intervalle können z.B. logarithmisch oder dekadisch aufgeteilt werden.
Bei der Digitalisierung von Bildern wird ein Raster über das Quellbild gelegt. Nun wird die Helligkeits- oder Farbinformation jedes einzelnen Bildpunktes des Rasters des Quellbildes digitalisiert. Das Zielbild kann man sich als Quader vorstellen, in X-und Y-Achse dehnen sich die Höhe
und Breite des Bildes und in der Z-Richtung die Farbe oder auch Grauwerte aus. Die Größe, die
der Quader im Speicher verbraucht, ist nun von der Auflösung in allen drei Richtungen abhängig.
In X- und Y-Richtung wird die Auflösung in Pixeln pro Längeneinheit angegeben. In der ZRichtung bestimmt die Anzahl der Grau- oder Farbwerte, wieviele Bits zum Speichern benötigt
werden.
Handelt es sich um ein Bild mit lediglich einem Bit Farbtiefe, spricht man von einem Binärbild.
Zur Abspeicherung von Bildinformationen im Arbeitsspeicher werden selten Kompressionsverfahren angewandt, da das Bild zur Weiterverarbeitung wieder entkomprimiert werden müßte.
Beide Vorgänge benötigen, wenn sie nicht von der Hardware der Digitalisierkarte unterstützt
Bei der hier zur Verfügung stehenden Kamera ist die Auflösung 768 x 576 Pixel. Das entspricht
einem erforderlichen Speicherplatz für ein Bild mit 16Milionen Farben (24 Bit) von ca.1,2 MB.
Für das gleiche Bild mit 256 Graustufen ca. 432KB, und für 1 Bit Binärbild braucht man
ca.54KB. Operationen mit einem Bild erfordern entsprechend höhere Rechenzeiten, je höher sein
Speicherbedarf ist. Es ist zu prüfen, ob frühzeitig die Bildinformation auf das benötigte Maß zu
reduzieren ist, um für die folgenden Operationen die Rechenzeit zu verkürzen.
17
stereoskopisch (dreidimensional wirkend)
Dies ist bei vielen digitalisierenden Geräten wie z.B. Scanner der Fall
19
interpolieren (Werte zwischen bekannten Werten errechnen)
18
15
Aufnahmetechnik und Perspektive
3.6.1 Histogramm
Als Histogramm wird die grafische Darstellung einer Häufigkeitsverteilung bezeichnet. Die Darstellung erfolgt für gewöhnlich in Säulen, wobei die Höhe der Säule der Häufigkeit des Meßwertes entspricht.
In der Bilddatenverarbeitung werden häufig Histogramme eingesetzt, die die Häufigkeitsverteilung von Grau- oder Farbwerten eines Bildes zeigen. Seltener sind Histogramme, die die Häufigkeit des Auftretens von Farbwerten in einzelnen Bildzeilen, Bildspalten oder frei definierten Linien aufzeigen.
Die Abbildung 8 zeigt einige Grauwert Histogramme. In der Abbildung 8 befinden sich die Histogramme immer neben dem dazugehörigen Quellbild.
Abbildung 8: Histogramme von Grauwerten
16
MIL 4.0- Objekterkennung
4 MIL 4.0- Objekterkennung
Im Vordergrund der Überlegung steht das schnelle und eindeutige Auffinden von Objekten. Das
Verfahren muß eine ausreichende Bildwiederholrate bei sicherer Erkennung ermöglichen. Die
MIL 4.0 stellt für diese Aufgabe grundsätzlich zwei unterschiedliche Verfahren zur Verfügung:
Die Blob-Analyse und die Mustererkennung. Sie werden in dem folgendem Abschnitt vorgestellt.
4.1 Mustererkennung
Die MIL Library beinhaltet einige Funktionen zur Mustererkennung20. Die Funktionen zur Mustererkennung können nur auf Bilder mit maximal 8 Bit Grauwerten angewendet werden. Um ein
bestimmtes Muster wiederzuerkennen, wird ein Modell benötigt. Das Modell ist ein Bild oder ein
Bildausschnitt, nach dem in einem andern Bild gesucht werden soll. Die Erzeugung eines Modells
wird mit den Funktionen MpatAllocModel oder MpatAllocAutoModel durchgeführt. Es kann
auch ein vorher abgespeichertes Modell wieder in den Speicher geladen werden, um nach ihm zu
suchen. Mit MpatSetDontCare können bestimmte Bereiche des Modells, wie z.B. Bildpunkte aus
dem Hintergrund, aus der Suche ausgeschlossen werden. Das Quellbild, in dem die Suchoperation
vorgenommen wird, sollte zur Verbesserung der Suchergebnisse von störenden Rauschen befreit
werden. Mit dem Aufruf von MpatPreprocModel wir das System "trainiert" und findet so später
das Abbild des Modells im Quellbild schneller. Mit dem Befehl MpatFindModel wird nun das
Abbild des Modells gesucht. Die Ergebnisse der Suche können mit MpatGet Result abgefragt
werden.
Diese Schritte erzeugen ein Programm, welches Objekte erkennt, die nicht gegen das Modell verdreht sind. Liegt der wiederzuerkennende Bildausschnitt verdreht in der Szene, so ist das Programm um den Befehl MpatSetAngle zu erweitern. Hierdurch wird der Suchwinkel bestimmt.
Große Suchwinkel erhöhen jedoch deutlich die Verarbeitungszeit. Die Schrittweite des Suchwinkels ist durch Parameter zu variieren. Bei zu großen Schritten sinkt jedoch die Qualität der Wiedererkennung. Auf die Geschwindigkeit des Programms wirken sich noch folgende Befehle deutlich aus: MpatSetSpeed, MpatSetAcceptance, MpatSetAccuracy.
Anhand eines Beispiels wird die Auswirkung der Befehle auf die Geschwindigkeit ermittelt.
Die folgenden Bilder zeigen eine Szene, die durchsucht wurde, und das verwendete Suchmodell.
Abbildung 9: Suchmodell
Abbildung 10: Beispiel Szene
20
Die Funktionsaufrufe dieser Gruppe beginnen alle mit Mpat.
17
MIL 4.0- Objekterkennung
Die Tabelle zeigt die Abhängigkeit der verschiedenen Parameter auf die Suchdauer. In den Spalten zwei bis neun ist jeweils nur ein Feld gegenüber der Referenz-Spalte eins geändert. Für die
Spalte zehn wurde das Quellbild aus Zeile eins bis neun so manipuliert, daß nur noch ein Treffer
gefunden wird. Alle Messungen sind mit MpatSetSpeed auf HIGH auf einem Pentium 166 ohne
MMX mit der MIL 4.0 ausgeführt worden. Die angegebene Zeit bezieht sich auf den gesamten
Ablauf des Programms einschließlich Laden des Bildes und Grafikausgabe, wobei der weitaus
größte Teil der Zeit auf den Befehl MpatFindModel entfällt (ca. 90%).
1
2
3
4
5
19x13
34x34
19x13
19x13
19x13
Quellgröße (Pixel)
765x576
765x576
261x81
765x576
765x576
Suchwinkel (Grad)
MpatSetAngle
Trainings Phase
MpatPreprocModel
Akzeptanzlevel (%)
MpatSetAcceptance
Genauigkeit
MpatSetAccuracy
Trefferanzahl
0/-70
0/-70
0/-70
-10/10
-35/35
JA
JA
JA
JA
JA
90
90
90
90
90
M_LOW
M_LOW
M_LOW
M_LOW
M_LOW
4
2
4
2
4
95,3 - 93,0
96,5 - 95,8
94,7 - 92,3
93,8 - 93,5
94,8 - 92,7
4,4
4,2
3,5
3,1
5,1
6
7
8
9
10
19x13
19x13
19x13
19x13
19x13
Quellgröße (Pixel)
765x576
765x576
765x576
765x576
765x576
Suchwinkel (Grad)
MpatSetAngle
Trainings Phase
MpatPreprocModel
Akzeptanzlevel (%)
MpatSetAcceptance
Genauigkeit
MpatSetAccuracy
Trefferanzahl
0/-70
0/-70
0/-70
0/-70
0/-70
NEIN
JA
JA
JA
JA
90
20
90
90
90
M_LOW
M_LOW
M_HIGH
M_MEDIUM
M_LOW
4
4
4
4
1
94,7 - 92,5
95,1 - 92,4
94,9 - 92,8
94,8 - 93,4
94,5
6,8
5,1
8,7
5,1
4,5
Modellgröße (Pixel)
Treffer Genauigkeit (%)
Zeit für Suchvorgang
(sec)
Modellgröße (Pixel)
Treffer Genauigkeit (%)
Zeit für Suchvorgang
(sec)
Tabelle 2: Spalte 1 zeigt den Referenzfall, die Markierungen heben die variierten Werte hervor
Zur Suche von Modellen ist anzumerken, daß tatsächlich nach Bildübereinstimmungen zwischen
Modell und Bild gesucht wird. Fehlern, wie Schwankung der Belichtung durch automatische Belichtungssteuerung, Beleuchtungsänderungen, oder Fehlern, wie sie in Kapitel 3 beschrieben werden, ist besondere Aufmerksamkeit zu schenken, da sie sehr schnell die Treffergenauigkeit erheb-
18
MIL 4.0- Objekterkennung
lich herabsetzen. In der Praxis reicht oft eine ungleichmäßige Beleuchtung aus, eine Erkennung
unmöglich zu machen.
Wie im Abschnitt Perspektive gezeigt, führt das Anheben des zu suchenden Objekts (nicht zur
Bildebene parallel verlaufende Bewegung) dazu, daß die Abbildung des Objekts nicht wiedererkannt wird. Dies läßt sich dadurch erklären, da die Größe des Objekts in der Abbildung vom Abstand zum Brennpunkt abhängig ist.
Soll ohnehin nur die Position und nicht die Drehung um die eigene Achse erfaßt werden, so kann
das Objekt z.B. mit einem einfarbigen Kreis markiert werden. Bei einer Suche nach dem Kreis
muß unter günstigen Beleuchtungsverhältnissen kein Suchwinkel berücksichtigt werden, was die
Suchzeit deutlich reduzieren kann. Wird jedoch nach einem Objekt im Bild gesucht, was den Abstand zur Bildebene verändert, so kann man z.B. das Objekt mit einem einfarbig gefülltem gleichschenkligen Dreieck markieren. Als Modell wird nicht das gesamte Dreieck sondern nur der obere
Teil genommen. In den unteren Abbildungen (Abbildung 11 und Abbildung 12) ist das Modell
mit einem roten Kästchen umrandet, und die Aufnahme des Dreiecks ist mit schwarz umrandet.
Die Aufnahmen erfolgten mit verschiedenen Abständen zum Objektiv. Dadurch daß das Dreieck
des Modells in beiden Abbildungen enthalten ist, kann es trotz verschiedener Aufnahmeabstände
erkannt werden.
Abbildung 11: Aufnahme eines Dreiecks bei großem
Abstand "Kamera –Dreieck"
Abbildung 12: Aufnahme eines Dreiecks bei kleinem
Abstand "Kamera –Dreieck"
4.2 Blob Verarbeitung
4.2.1 Blob Erzeugung
Ein Blob ist eine Gruppe von sich berührenden Pixeln, die den gleichen Farbwert aufweisen. Typischerweise werden die Pixel mit dem Status Null (Pixel ist nicht gesetzt) dem Vordergrund und
damit auch den Blobs zugeordnet. Alle andern Pixel gehören zum Hintergrund. Ein Bild kann
mehrere Blobs enthalten.
Meistens wird ein Quellbild binarisiert, um anschließend die Blobanalyse durchzuführen. Von
entscheidender Bedeutung für das Ergebnis der Binarisierung sind die Schwellenwerte, die angeben, wann ein Pixel auf eins oder null gesetzt wird. Eine Möglichkeit, gute Schwellenwerte zu
finden, ist die experimentelle Methode. Hier ist z.B. das Programm Matrox Inspector 2.1 zu
nennen. Mit diesem Programm wird unter der Rubrik Filter/Register/Threshold an einem vorher
geladenen Bild eine Binarisierung durchgeführt. Da der Wert "Threshold" mit einem Schieber
eingestellt wird, ist schnell ein geeigneter Wert eingestellt und getestet. Ein zweite Möglichkeit
ist, das Histogramm des Bildes zu erzeugen und hier nach einem guten Schwellenwert zu suchen.
19
MIL 4.0- Objekterkennung
Die Auswirkung des Schwellenwertes und der Auflösung wird an einer Aufnahme des Buchstabens "A" gezeigt. Der Buchstabe "A" wird in Abbildung 13 in drei Auflösungen gezeigt. Die Abbildung 14 zeigt das jeweilige Histogramm des darüberliegenden Bildes.
Abbildung 13: Buchstabe "A" bei verschiedenen Auflösungen
Abbildung 14: Histogramm von Abbildung 13
Aus dem Histogramm ist eine bimodale Verteilung der Grauwerte zu erkennen. Das Histogramm
weist zwei lokale Maxima auf, wobei der meiste Anteil an Pixeln aus dem hellen Hintergrund besteht. Das zweite Maxima zeigt das Schwarz des Buchstabens "A". Im dritten Histogramm fällt
das schwarze Maxima sehr flach aus. Es ist kaum noch eine scharfe Grenze zwischen Vordergrund und Hintergrundpixeln zu finden.
Die Abbildung 15 zeigt das Ergebnis der Binarisierung des Bildes aus Abbildung 13 mit verschiedenen Schwellenwerten. Das Bild (Abbildung 13) ist ein 256 Graustufenbild. Die Schwellenwerte der Binarisierung sind von oben nach unten: 50, 80, 110, 140, 170, 200. Die Schwellenwerte 140 und 170 ergeben selbst bei der geringen Auflösung des Buchstaben A ganz rechts im
Bild noch affirmative Ergebnisse. Durch Benutzung von Filtern könnte das Ergebnis noch deutlich verbessert und eventuelle Löcher im Blob geschlossen werden. Das so gewonnene Ergebnis
könnte nun weiterverarbeitet werden.
In den meisten Fällen liegt der Grauwert der Objekte und deren Hintergrund jedoch nicht so günstig, womit die Auswahl der Schwellenwerte entsprechend schwerfällt.
20
MIL 4.0- Objekterkennung
50
80
110
140
170
200
Abbildung 15: Ergebnisse der Binarisierungen von Abbildung 13 bei
verschiedenen Schwellenwerten
21
MIL 4.0- Objekterkennung
4.2.2 Blob-Analyse
Die MIL Library verfügt über Funktionen, Blobs zu untersuchen und zu klassifizieren. Funktionen, die der Blob-Analyse dienen, beginnen alle mit Mblob. Prinzipiell können Funktionen der
Blob-Analyse nur auf Bilder mit Grauabstufungen einer Datentiefe von maximal 8 Bit angewandt
werden. Jedoch werden meistens Binärbilder analysiert.
Die Blobs werden für gewöhnlich durch Binarisierung eines Quellbildes mit MimBinarize gewonnen. Um kleine Partikel und kleine Löcher21 aus den Blobs zu filtern, können nun die Befehle
MimOpen und MimClose auf das binarisierte Bild angewandt werden. Speicherplatz für eine Liste der zu untersuchenden Merkmale wird mit dem Befehl MblobAllocFeatureList angelegt. Mit
dem Aufruf MblobSelectFeature können nun die Merkmale, die untersucht werden sollen, in die
vorher angelegte Liste geschrieben werden. Es steht eine große Menge von geometrischen Eigenschaften von Blobs zur Verfügung, deren Berechnungsdauer jedoch sehr unterschiedlich ist. Mit
dem Funktionsaufruf MblobAllocResult wird der Speicherplatz für die Ergebnisse belegt. Die Berechnung der ausgewählten Merkmale erfolgt mit dem Aufruf MblobCalculate. Die Funktion
MblobSelect ermöglicht unter Berücksichtigung der Berechnungsergebnisse (der ausgewählten
Merkmale) den Ausschluß von Blobs aus der Ergebnisliste. Bei nur wenigen Merkmalen in der
FeatureList entfällt der weitaus größte Teil der Rechenzeit auf die Binarisierung des Quellbildes.
Als Beispiel wird das Quellbild Abbildung 10 (aus der Mustererkennung) binarisiert. Die Binarisierung dieses 8 Bit Bildes (765x576) dauert auf einem Pentium 166 ohne MMX mit der MIL
Library 4.0 ca. 50 Millisekunden (msec.) Die Binarisierung eines gleich großen 24 Bit Farbbildes
(765x576) dauert ca. 150 msec. Die dreimal längere Bearbeitungsdauer ist auf die dreimal grö-
Es werden nur dieselben vier Dreiecke wie schon bei der Mustererkennung gesucht und ihre Positionen bestimmt. Da die Farbe der Dreiecke schwarz ist und sie sich auf weißem Hintergrund
ierung ein recht niedriger Schwellenwert geeignet. Abbildung 16
zeigt das Ergebnis der Binarisierung mit einem Schwellenwert von 105.
Abbildung 16: Binarisierte Abbildung 10 bei einem Schwellenwert von 105
21
kleine Partikel und kleine Löcher (meistens handelt es sich um Fehler oder sehr kleine Objekte)
22
MIL 4.0- Objekterkennung
Um das Bild von Rauschen, kleinen Blobs und kleinen Löchern zu befreien, wurden die Funktionen MimOpen und MimClose auf das binarisierte Bild angewandt. Die Abbildung 17 zeigt das
Ergebnis der Operationen.
Abbildung 17: Gefilterte Abbildung 16
Das gewonnene Bild kann nun der eigentlichen Blob-Analyse unterzogen werden. Gesucht werden wie bei der Mustererkennung die beiden kleinen und die zwei großen Dreiecke. Die Schlüsselstellung für eine erfolgreiche Blobanalyse kommt der Wahl eines oder mehrerer geeigneter Eigenschaften zu. Die Eigenschaften müssen die vier gewünschten Blobs von den Nichtdreiecken
abgrenzen.
In Abbildung 18 sind die Blobs, mit denen ihnen zugeordneten Label Nummern, wiederzufinden.
Die beiden großen Dreiecke sind mit den Labelnummern 19 und 41 beschriftet und die beiden
kleinen Dreieck mit den Nummern 4 und 33.
Abbildung 18: Abbildung 17 mit Labels
23
MIL 4.0- Objekterkennung
In den folgenden Tabellen sind für Abbildung 18 die Eigenschaften AREA,
FERET_ELONGATION und COMPACTNESS ausgewählt und berechnet worden.
AREA:
Mit AREA wird die Fläche des Blobs in Pixeln beschrieben.
COMPACTNESS:
Mit COMPACTNESS das Verhältnis des Umfangs des Blobs zu (4 x Pi x Area) beschrieben.
Compactness =
Umfang
4 × π × Area
FERET_ELONGATION:
Mit FERET_ELONGATION wird das Verhältnis von FERET_MAX_DIAMETER zu
FERET_MIN_DIAMETER beschrieben.
FeretElongation =
FeretMaxDiameter
FeretMinDiameter
FERET_MAX_DIAMETER bezeichnet den größten gefundenen Durchmesser des Blobs, nach
dem eine bestimmte Anzahl von Winkeln durchsucht wurden. Die Anzahl der Winkel, unter denen gesucht werden soll, kann mit MblobSelectFeret eingestellt werden.
FERET_MIN_DIAMETER ist der kleinste gefundene Durchmesser des Blobs.
Die markierten Zeilen der Tabellen 3 bis 5 zeigen die Ergebnisse für die Dreiecksflächen.
Label Area
20
39
19
41
56
62
55
4
33
13
5
11
23
12
14
25
58
59
60
2
1
2344
2015
629
596
348
308
263
204
192
160
138
135
105
60
53
35
35
35
35
25
Tabelle 3 Kriterium AREA
10
100
1000
10000
2344
2015
629
596
348
308
263
204
192
160
138
135
105
60
53
35
35
35
35
25
Diagramm 1
24
MIL 4.0- Objekterkennung
Bei der Betrachtung der Tabellen AREA oder COMPACTNESS können Grenzwerte gefunden
werden, die eine Selektion der Dreiecke möglich machen. Jedoch sind die Abstände zu ihren
Nachbarn recht klein. Die Tabelle FERET_ELONGATION bietet keine geeigneten Grenzen, ein
Blob mit dem Label 20 liegt zwischen den Dreiecken. Anhand der jeweils rechts von den Tabelle
stehende Balkengrafik kann der Abstand der Ergebnisse zueinander besser abgeschätzt werden.
Label Compactness
39
4,536
62
3,409
20
3,189
55
2,037
23
1,825
13
1,75
11
1,743
56
1,702
5
1,666
41
1,553
19
1,552
4
1,422
33
1,373
58
1,31
60
1,31
2
1,273
14
1,248
25
1,246
59
1,246
12
1,213
0
1
2
3
5
4,536
3,409
3,189
2,037
1,825
1,75
1,743
1,702
1,666
1,553
1,552
1,422
1,373
1,31
1,31
1,273
1,248
1,246
1,246
1,213
Tabelle 4 Kriterium COMPACTNESS
Label Feret Elongation
39
4,826
62
3,11
13
2,193
11
1,973
23
1,656
58
1,615
60
1,615
55
1,466
14
1,456
5
1,45
59
1,345
25
1,34
2
1,331
12
1,274
4
1,256
20
1,24
19
1,192
41
1,191
33
1,167
56
1,099
4
0
Diagramm 2
1
Tabelle 5 Kriterium FERET_ELONGATION
2
3
4
5
4,536
3,409
3,189
2,037
1,825
1,75
1,743
1,702
1,666
1,553
1,552
1,422
1,373
1,31
1,31
1,273
1,248
1,246
1,246
1,213
Diagramm 3
25
MIL 4.0- Objekterkennung
In diesem Beispiel sind die Eigenschaften der zu suchenden Objekte, wie z.B. seine Form, nur
willkürlich gewählt. Können die in der Szene wiederzuerkennenden Objekte frei ausgewählt werden, sollten solche Objekte gewählt werden, die Eigenschaften aufweisen, deren Ausprägung in
der Szene einzigartig ist.
Von erheblichem Einfluß auf das Ergebnis sind auch die beschriebenen Randbedienungen aus Kapitel 3.
4.2.3 Auswahl von Schwellenwerten und Kriterien in der Blobanalyse
In Abschnitt 4.2.1 und Abschnitt 4.2.2 ist an einem Beispiel das Binarisieren und die anschließende Blobanalyse für ein einzelnes Bild gezeigt worden. Meistens soll jedoch mit der Methode
der Blobanalyse eine Folge von Bildern untersucht werden. Es sollte auch noch die Zuverlässigkeit der Wiedererkennung geprüft werden.
Daher enthält der folgende Abschnitt einige Bemerkungen zu der Auswahl geeigneter Objekte,
der Auswahl von Schwellenwerten zur Binarisierung und der Auswahl von Kriterien in der Blobanalyse.
Im ersten Schritt werden die beobachtete Szene und in ihr enthaltene Objekte untersucht. Die Objekte sind auf ihre Eigenschaften hin zu untersuchen und zu katalogisieren. Hier sind nur die Eigenschaften der Objekte als Blob zu untersuchen. Darüber hinaus sind die Objekte dahingehend
zu untersuchen, ob ihre Eigenschaften während der Aufnahme veränderlich sind.
Sind die zu suchenden Objekte vorgegeben, so ist auch für diese Objekte eine entsprechende Liste
mit bekannten Eigenschafen anzulegen. Durch einen Vergleich der Listen sollen nun ein oder
mehrere Kriterien des zu suchenden Objekts mit einer relativen großen Abweichung des Wertes
zu den Werten der auszuschließenden Objekte gefunden werden.
Eine solche Untersuchungsmethode ist aus der Statistik als Clusteranalyse22 bekannt.
Ausgangsmaterial einer Clusteranalyse:
• Objekte mit mehreren Merkmalen, die in Gruppen zusammengefaßt werden sollen.
Ziel einer Clusteranalyse ist:
• Objekte in einer Gruppe sollen homogen sein.
• Objekte in verschiedenen Gruppen sollen möglichst unterschiedlich sein.
Ist das zu suchende Objekt wahlfrei, so ist ein geeignetes Objekt zu suchen, das diese Bedingungen erfüllt.
Die Objekte, deren Eigenschaften als Blob untersucht werden, sind durch Binarisierung eines Bildes entstanden. Es ist dahingehend auch eine intensive Untersuchung erforderlich, ob sich die
Grundmenge an Blobs nicht schon vor der eigentlichen Blobanalyse reduzieren läßt. Ist die beobachtete Szene nicht so zu verändern, daß die Anzahl der Objekte sich reduziert, so sollte doch ein
Schwellenwert für die Binarisierung gefunden werden, der diese Bedingung erfüllt. Es ist immer
zu berücksichtigen, in welchen Schranken sich die Objekteigenschaften während einer Aufnahme
verändern. Es ist verständlich, daß durch eine Reduzierung der Objekte das Verfahren erheblich
übersichtlicher und einfacher wird.
22
Vergleiche Backhaus, Erichson, Plinke, Weber: Multivariante Analysemethoden, 7. Auflage, S.262 u. f.
26
MIL 4.0- Objekterkennung
4.3 Bearbeitungsdauer
Die beiden Verfahren: 1. Blobanalyse mit vorhergehender Binarisierung und 2. Mustererkennung
unterscheiden sich, wie in diesem Kapitel gezeigt, nicht nur durch ihre Probleme und Vorteile
völlig voneinander. Es hat sich gezeigt, daß eine Blobanalyse selbst bei einer aufwendigen Berechnung der Auswahlkriterien und einer vorangegangenen Binarisierung des Quellbildes 10 –20
mal schneller durchzuführen ist als eine Mustererkenung. In den folgenden Kapiteln wird daher
nur noch auf die Binarisierung und Blobanalyse eingegangen.
27
Farbe
5 Farbe
Als ein wichtiges Unterscheidungsmerkmal könnte sich die Farbe herausstellen. Um jedoch eine
Vorstellung von dem Begriff Farbe zu bekommen, bietet dieses Kapitel eine Einführung in den
Begriff Farbe, die Darstellung von Farbe und die Beschreibungsformen von Farbe.
5.1 Was ist Farbe?
Die Farbe als optische Erscheinung ist die Empfindung eines Rezipienten23 von elektromagnetischer Strahlung bestimmter Wellenlängen. Menschen nehmen eine Wellenlänge von ca. 400-700
Nanometer (nm) mit Hilfe von Zapfen wahr. Diese befinden sich auf der Netzhaut. Es existieren
drei Arten von Zapfen mit unterschiedlichen Sehstoffen, die sich in ihren Absorptionsspektren
unterscheiden. Die unterschiedlichen Erregungszustände der drei Zapfenarten bestimmen die Farberscheinung.
Der Mensch kann unter günstigen Bedingungen ca. 160 reine Farbtöne und 600.000 Farbnuancen
unterscheiden. Einigen nachtaktiven Tieren fehlt völlig die Fähigkeit des Farbsehens. Bei anderen
Tieren kann der Spektralbereich, der von ihnen wahrgenommen wird, verschoben sein. So ist er
z.B. bei einigen Insekten nach ultraviolett verschoben; sie können kein Rot wahrnehmen. Bei bestimmten Vögeln ist der wahrnehmbare Bereich gegenüber dem Menschen nach Rot hin verschoben.
Es wird zwischen zwei Arten der Erscheinungsform von Farbe unterschieden: Die des farbigen
Lichtes der Selbstleuchter und den Körperfarben der Nichtselbstleuchter. Das zurückgeworfene
Licht der Nichtselbstleuchter bezeichnet man auch als Aufsichtfarben.
Seit über 300 Jahren versucht der Mensch, Farben in eine Ordnung zu bringen. Zur Beschreibung
des Phänomens Farbe dienen Farbmodelle. Allen Modellen ist gemeinsam, daß sie die Farbenzahl
auf einen abzählbaren Bereich reduzieren. Grundsätzlich dienen alle Farbmodelle der Beschreibung von Farben durch Parameter. Kennt
man alle Parameter einer bestimmten Farbe,
so ist eine eindeutige Rekonstruktion der
Farbe in dem durch die Parameter aufgespannten Farbraum möglich. Ein Farbraum
wird durch drei nichtplanare Vektoren24 aufgespannt.
Als Farbvalenz wird der Vektor bezeichnet,
der eine Farbe im Farbraum wiedergibt. Jede
Farbvalenz kann als Summe dreier als Primärvalenzen bezeichneten Vektoren dargestellt werden. Prinzipiell können die drei
Primarvalenzen beliebig gewählt sein. Sie
dürfen nur nicht in einer Ebene liegen. Der
Ursprung der Vektoren ist im Normalfall der
Schwarzpunkt. Auch die Einheiten sind theoretisch frei wählbar.
Abbildung 19: Drei Tafeln des L*a*b Systems
23
24
rezipieren (etwas als Hörer, Leser, Betrachter aufnehmen, übernehmen)
planare Vektoren liegen in einer Ebene
28
Farbe
Als Farbtafel bezeichnet man den Schnitt durch einen Farbraum. Dieser Schnitt geht durch drei
Punkte, die auf den Primärvalenzen liegen. Die drei Punkte weisen gleichen Abstand zum Ursprung auf.
Jedes Farbmodell oder jeder Farbraum hat seinen speziellen Nutzen oder dient einem besonderen
Kreis von Personen. Einige der Farbmodelle sind an technische Gegebenheiten angepaßt und eignen sich dadurch speziell für eine Gruppe von technischen Einzelfällen. Bevor jedoch auf die einzelnen Farbmodelle eingegangen wird, werden zum besseren Verständnis die Prinzipien der additiven und subtraktiven Farbmischung erklärt.
5.2 Additive Farbmischung
Isaac Newton stellte fest, daß man das weiße Tageslicht durch ein Prisma in die Farben des Sonnenlichtes zerlegen kann. Diese Farbzerlegung des Lichtes oder allgemein die spektrale Zerlegung
der Strahlung bezeichnet man als Dispersion. Die Dispersion tritt beim Durchgang der Strahlung
durch Medien mit verschiedenem Brechungsindex auf.
Abbildung 20: Dispersion
Der englische Wissenschaftler und Arzt Thomas Young stellte durch ein Experiment fest, daß
man durch die Übereinanderprojektion des in die Grundfarben (rot, grün, blau) gefärbten Lichtes
dreier Laternen ein weißes Licht bekommen kann.
Ein großer Bereich des für das menschliche Auge sichtbaren
Spektrums kann durch das Mischen von drei in den Grundfarben gefärbten Lichtes hergestellt werden. Dies geschieht durch
verschieden starke Dosierung der einzelnen Farbanteile. Die
Grundfarben Rot (R), Grün (G) und Blau (B) werden auch
ben genannt. Werden diese Primärfarben in gleich
hohen Anteilen übereinander projiziert, ergeben sie weißes
schneiden sich nur zwei Primärfarben, mischen sie
sich zu den sogenannten Sekundärfarben Cyan (C), Magenta
(M) und Gelb (Y für Yellow). Die additive Farbmischung wird
z.B. verwendet bei Beleuchtung, Monitoren, Fernseher und
anderen Geräten, die Licht emittieren.
Abbildung 21: Additive Farbmischung
29
Farbe
5.3 Subtraktive Farbmischung
Während die additive Farbmischung auf Mischung von Licht basiert, so basiert die subtraktive Farbmischung auf der Eigenschaft
von Pigmenten in Tinte oder Farbe, Licht besonderer Wellenlänge
zu absorbieren..
Will z.B. ein Maler Grün verwenden, so mischt er Zyanblau und
Gelb. Zyanblau absorbiert den Rotanteil des Lichtes, und Gelb absorbiert den Blauanteil des natürlichen Lichtes; so bleibt als reflektiertes Licht lediglich Grün übrig.
Das reflektierte Licht bestimmt die Farbe des Objekts. Die Farbe
Weiß z.B. reflektiert Licht aller Wellenlängen. Schwarze Flächen Abbildung 22: Subtraktive
hingegen absorbieren Licht aller Wellenlängen. In der Theorie mi- Farbmischung
schen sich die Sekundärfarben Cyan (C), Magenta (M), Gelb
(Y=Yellow) zu Schwarz. In der Praxis entsteht jedoch aus realen Druckfarben ein "schmutziges
Braun". So wird für ein "sattes Schwarz" eine vierte "Farbe", nämlich Schwarz, zum Druck hinzuchen Sinne keine Farbe ist, sondern das Fehlen von Farbe, beschreibt der Ausdruck "Farbe Schwarz" häufig eine Tinte, deren Mischung aus Pigmenten besteht,
die jegliche Wellenlänge absorbiert. In der Malerei spricht man oft von Schwarz als Unfarbe.
5.4 Modell der additiven und subtraktiven Farbmischung
Aus der additiven und subtraktiven Farbmischung, die in der Praxis in technischen Prozessen eingesetzt werden, ergibt sich fast zwangsläufig die Notwendigkeit der drei folgenden Farbmodelle.
Sie werden bei der Rekonstruktion von Farben z.B. bei Drucken von Farbe oder auch der Visualisierung von Farbe in einem Monitor benötigt.
5.4.1 RGB (Red, Green, Blue)
Das RGB-Modell ist ein additives Farbmodell. Im RGB-Modell wird eine Farbe durch ein
Zahlentrippel eindeutig dargestellt. Jeder Wert des Zahlentrippels repräsentiert eine Grundfarbe
(Rot, Grün und Blau), wobei die Höhe einer Zahl anzeigt, wie stark die entsprechende Grundfarbe
in der zu beschreibenden Farbe enthalten ist. Durch das additive Mischen der drei Grundfarben
(Rot, Grün und Blau) entsteht z.B. im Monitor das Farbbild.
Sind alle Grundfarben zu je 100% (R=G=B=100%) vorhanden, so addieren sich die Farben zu
Weiß.
Gilt R=G=B=0%, zeigt der Bildschirm Schwarz.
Mischfarbe
Schwarz
Weiß
Rot
Gelb
ROT GRÜN BLAU
0%
0%
0%
100% 100% 100%
100%
0%
0%
100% 100%
0%
Tabelle 4
5.4.2 CMY (Cyan, Magenta, Yellow)
Das CMY-Modell ist besonders für den Druckbereich geeignet. Bei diesem Modell wird eine
Farbe durch die zu mischenden Anteile der Druckfarben Zyan (C für Cyan), Magenta (M) und
30
Farbe
Es handelt sich um ein subtraktives Farbmodell.
Mischfarbe
Schwarz
Weiß
Rot
Gelb
CYAN
100%
0%
100%
0%
MAGENTA
100%
0%
0%
0%
GELB
100%
0%
100%
100%
Tabelle 5
5.4.3 CMYK (Cyan, Magenta, Yellow, Black)
Das CMYK-Modell entspricht dem CMY-Modell; Hinzu kommt als vierter Parameter Schwarz
(K=Black). Die vier Parameter des CMYK-Farbmodells sind perfekt für die Beschreibung von
Farbe beim modernen Vierfarbendruck geeignet25.
5.5
Weitere Farbmodelle
Weitere Farbmodelle haben ihre Begründung darin, daß sie versuchen, dem menschlichem Empfinden von Farbe gerecht zu werden.
In der Literatur wird eine Vielzahl von verschiedenen Modellen vorgestellt, die als ersten Parameter Hue (Farbton) angeben:
HSB (Hue Saturation Brightness)
HSI (Hue Saturation Intensity)
HSV (Hue Saturation Value)
HCI (Hue Colorfulnes Intensity)
HCI (Hue Chroma Intensity)
HSD (Hue Saturation Darknes)
HUV (Hue Colordistance Intensity)
HLS (Hue Luminance Saturation)
Leider sind die Definition des HSB und die Umrechnung in das RGB-System einzelner Systeme
oftmals abweichend voneinander beschrieben.
Helligkeit (Brightness)
Helligkeit wurde von dem Commission Internationale de L’Éclairage (CIE) als die Eigenschaft
einer visuellen Empfindung festgelegt, nach der eine Fläche mehr oder weniger Licht zu emittieren
scheint.
Intensität (Intensity)
Die Intensität ist die Menge an abgestrahlter Energie pro Fläche.
5.5.1 HSB (Hue, Saturation, Brightness)
Das HSB-Modell soll der menschlichen Wahrnehmung von Farbe durch das menschliche Auge
entgegenkommen. Das HSB-Modell beschreibt im ersten Parameter den Farbton. Mit dem Farbton wird die Basisfarbe bezeichnet. Sie wird in 360 Schritte des Standard Farbkreises aufgeteilt.
Die Farben werden beginnend bei 0 Grad Rot mit steigenden Werten über Grün nach Blau und
wieder nach Rot hin aufgezeichnet, womit sich der Kreis schließt. Die beiden andern Werte des
HSB-Modells beschreiben Sättigung und Helligkeit. Sie bestimmt die Tiefe oder Lebhaftigkeit
der Farbe. Die Sättigung gibt den Gehalt der Reinheit einer Farbe an. Die Sättigung repräsentiert
die Menge von Grau in Proportion zu der Basisfarbe und wird in Prozent von 0 % = Grau (oder
auch ungesättigt) bis 100% (völlig gesättigt) angegeben. Die Helligkeit legt den Weißanteil fest,
25
Das K=Black (Schwarz) wurde genommen um Verwechslungen mit B=Blue (Blau) zu vermeiden.
31
Farbe
der der Farbe beigemischt wird. Diese relative Helligkeit von Farbe wird in Prozent von 0%
(Schwarz) bis 100% (Weiß) angegeben.
Abbildung 23: HSB Änderungen
5.5.2 HLS (Hue, Luminance, Saturation)
Wie bereits aus dem HSB-Farbmodell bekannt, wird beim HLS-Modell der Farbton als Wert zwischen 0 und 360 Grad einer Grundfarbe zugeordnet. Die Werte für Helligkeit bestimmt die wahrgenommene Intensität (hellere oder dunklere Farbe). Die Sättigung bestimmt die Farbtiefe (von
5.5.3 L*a*b-Modell
Das L*a*b Modell wurde ursprünglich 1931 von
der Commission Internationale d'Eclairage (CIE)
als internationales Model für Farbmessungen vorgestellt. Unter dem Namen CIE L*a*b wurde 1976
das verfeinerte L*a*b Modell veröffentlicht. In der
Literatur und einigen Zeichen- und Grafik-Programmen findet es jedoch auch als Lab-Modell
Erwähnung. Das CIE L*a*b Modell ist mit der
Zielsetzung entstanden, ein System zu schaffen,
daß die geräteunabhängige Reproduktion von
Farbe erlaubt. Das bedeutet, daß auf jedem Drukker oder Bildschirm die gleiche Farbe (soweit sie
durch das Gerät darstellbar ist) erhält.
Der Parameter L gibt die Luminanz an; er läuft von
0 (Schwarz) bis 100 (Weiß). Die Werte a und b geben die chromatischen26 Komponenten an. a für
den Bereich Grün bis Magenta und b für das
Spektrum zwischen Blau und Gelb. Das L*a*b
Farbmodell umspannt einen der größten Farb-
26
Abbildung 24: L*a*b-Farbtafel
Chromatik (Farbenlehre)
32
Farbe
5.5.4 DIN27 Farbsystem 6164
Hier handelt es sich um ein leicht modifiziertes CIE System. Man findet 24 DIN A4 Blätter mit
Farbtafeln des modifizierten CIE Systems und ein DIN A4 Blatt mit den unbunten28 Farben.
Aus dem Druckbereich sind noch Farbsysteme wie Pantone, HKS, NSC (Natual Color System),
RAL, EUROCOLOR, SCOTDIC bekannt.
5.6 Gamut
Der Gamut gibt das Farbspektrum an, das
von einem Farbsystem oder einem technischen Gerät abgebildet werden kann.
Auf einem RGB basierten System, wie einem Farbmonitor, kann z.B. kein reines
Cyan angezeigt werden. Umgekehrt ist es
nicht möglich, mit einem Farbdrucker
(meist CMY oder CMYK) ein reines Rot zu
drucken.
Von der Theorie ausgehend sollten die Farben CMY solche spektrale Absorptionskurven zeigen, die sich nicht überlappen; mit
solchen Farben würde sich exakt ein Rot,
Grün oder Blau erzeugen lassen. In der
Praxis überschneiden sich die Absorptionskurven in weiten Bereichen, womit der
Ausdruck von Rot, Grün oder Blau schwierig ist.
27
28
Abbildung 25: Gamut: Lab, RGB, CMYK
Abbildung 26: Gamut: Farbfilm, Offsetdruck, Zeitung
DIN (Deutsche Industrie-Norm)
unbunt (Gesamter Grauwertbereich von Weiß bis Schwarz)
33
Farbe als Kriterium
6 Farbe als Kriterium
Dieses Kapitel untersucht, ob Farbe als bewertbares Kriterium herangezogen werden kann, Objekte in einer Szene wiederzuerkennen.
6.1 Abstand der Farbbänder als Kriterium
In Kapitel 4 ist mit dem 8 Bit Monochrombild29 (Abbildung 10) nur ein Teil der Szene "Fräse
und Roboterarm" betrachtet worden. Wird das 24 Bit Polychrombild30 der Szene (Abbildung 27)
betrachtet, gewinnt man den subjektiven Eindruck, das Bild sei bis auf wenige Stellen recht farblos.
Abbildung 27: Farbaufnahme der Szene
Die zeilen- oder spaltenweise Untersuchung des intern als RGB Bild abgespeicherten Bilds zeigt,
daß die drei Farbwerte häufig sehr dicht beieinander liegen. In Abbildung 28 kann man exemplarisch den Verlauf eines Linien-Farb-Histogramms sehen.
Abbildung 28: Linien-Farb-Histogramm einer Linie durch die Farbaufnahme der Szene
29
30
monochrom (einfarbig)
polychrom (vielfarbig)
34
Farbe als Kriterium
Eine im Rahmen dieser Diplomarbeit erstellte Pseudo-MIL-Funktion ColorMaxMinDiff erzeugt
mittels Punktoperationen aus einem 24 Bit-Farbbild ein 8 Bit-Graustufenbild mit der Eigenschaft,
besonders farbige31 Punkte hell erscheinen zu lassen. Durch die Funktion wird pro Punkt der
kleinste auftretende Wert aus den drei Farbbändern vom größten abgezogen. Das Ergebnis wird
dann als 8 Bit-Graustufenbild gespeichert. Abbildung 29 zeigt das mit Hilfe von
ColorMaxMinDiff und dem Quellbild (Abbildung 27) entstandene Bild. Abbildung 29 ist invertiert dargestellt, um es besser drucken zu können.
Abbildung 29: Ergebnis der Funktion ColorMaxMinDiff angewendet auf Abbildung 27
Da sich in Abbildung 29 nur wenig schwarze Flächen zeigen, ist bestätigt, daß pro Punkt betrachtet der maximale Abstand der Farbbänder recht gering ist. Der Eindruck, Abbildung 27 sei
recht farblos, bestätigt sich durch das Ergebnis der Funktion ColorMaxMinDiff. Ein roter, blauer
oder grüner Punkt müßte einen recht hellen Punkt in einem mit ColorMaxMinDiff bearbeiteten
Bild ergeben. Um dies zu zeigen, wurde der Roboterarm mit drei roten und einem grünen Stück
Pappe beklebt (Abbildung 30). Die Papierstücke und die blauen Schultern des Transportsystems
rbig umrandet.
31
farbig bedeutet in diesem Zusammenhang den möglichst großen Abstand zweier Farbbänder eines RGBBildes.
35
Farbe als Kriterium
Abbildung 30: Markante Punkte des Roboters farbig markiert
Das Ergebnis der Anwendung von ColorMaxMinDiff zeigt Abbildung 31. Auch hier ist das Bild
invertiert dargestellt und die entsprechenden Objekte sind farbig umrandet.
Abbildung 31: Ergebnis der Funktion ColorMaxMinDiff angewendet auf Abbildung 30
Die Verwendung des Kriteriums Farbe durch die Funktion ColorMaxMinDiff hat jedoch einige
Nachteile:
• Die Farbinformation geht verloren. Ob ein Punkt rot oder grün ist, kann nicht mehr mehr unterschieden werden.
• Die Rechenzeit ist extrem hoch, da auf jedes 8 Bit-Farbband einige arithmetische Rechenoperationen ausgeführt werden.
• Farben wie z.B. Magenta oder Gelb ergeben auch helle Punkte.
• Eine Binarisierung muß anschließend durchgeführt werden.
36
Farbe als Kriterium
6.2 Hue als Kriterium
Mit der MIL Funktion MimConvert32 kann man ein RGB Bild in ein HLS33-Bild konvertieren.
Der Wert Hue, der nach der Definition von 0° bis 360° aufgetragen wird, muß hier auf 256 Abstufungen reduziert werden (neue Skalierung).
Um ein besseres Verständnis vom Farbmodell HLS zu bekommen, führe ich an dieser Stelle ein
entwickeltes Testbild ein (Abbildung 32).
Abbildung 32: Testbild "HLS-RGB"
32
MimConvert HLS
Sind die RGB Farbbänder auch in der Reihenfolge rot, grün, blau im Speicher abgelegt, so wird
jedoch das HLS Bild in der Reihenfolge hue, saturation, luminace abgelegt.
Diese Besonderheit geht aus der Definitionsdatei mil.h hervor:
#define M_HUE
#define M_SATURATION
#define M_LUMINANCE
M_RED
M_GREEN
M_BLUE
Wird über die Parameter M_HUE, M_LUMINANCE, M_SATURATION auf die einzelnen
Bänder zurückgegriffen, so hat diese Definition keine Auswirkung.
33
HLS (hue, luminance, saturation) vergleiche Kapitel Farbe und MIL 4.0 Manual
37
Farbe als Kriterium
Das Testbild enthält 6 kleinere Bilder:
•
1
2
3
4
5
6
HLS-Test: Bilder 1-4
Bild 1 Hue läuft von links nach rechts von 0-255.
Luminace ist konstant mit dem Wert127.
Saturation läuft von unten nach oben 0-255.
Bild 2 Hue läuft von links nach rechts von 0-255.
Luminace läuft von unten nach oben 0-255.
Saturation ist konstant mit dem Wert127.
Bild 3 Hue ist konstant mit dem Wert127.
Luminace läuft von unten nach oben 0-255.
Saturation läuft von links nach rechts von 0-255.
Bild 4 Hue läuft von links nach rechts von 0-255.
Luminace läuft von unten nach oben 0-255.
Saturation läuft von unten zur Mitte von 127 bis 255 und von der Mitte bis nach oben
von 255 bis 127.
•
RGB-Test: Bilder 5, 6
Bild 5 Es zeigt 255 Rot, 255 Grün, 255 Blau.
Bild 6 Die Balken von links nach rechts:
Der Balken läuft von unten nach oben, von Zyan nach Weiß.
Der Balken läuft von unten nach oben, von Magent
Der Balken läuft von unten nach oben, von Gelb nach Weiß.
Der Balken läuft von unten nach oben, von Schwarz nach Rot.
Der Balken läuft von unten nach oben, von Schwarz nach Grün.
Der Balken läuft von unten nach oben, von Schwarz nach Blau.
Die Zerlegung in die Komponenten RGB zeigt Abbildung 33, wobei Rot oben, Grün in der Mitte
und Blau unten dargestellt werden. Hohe Werte werden als Weiß dargestellt, niedrige Werte als
Schwarz.
Abbildung 34 zeigt die Zerlegung des Testbildes in die HLS-Komponenten. Hier sind Hue oben,
Saturation in der Mitte und Luminace unten dargestellt. Hohe Werte werden als Weiß dargestellt,
niedrige Werte als Schwarz.
38
Farbe als Kriterium
Rot
Grün
Blau
Abbildung 33: RGB-Farbseparation
39
Farbe als Kriterium
Hue
Saturation
Luminance
Abbildung 34: HLS-Separation
40
Farbe als Kriterium
Da in der Szene nach einfarbigen Flächen gesucht wird, ist das obere rechte Testbild 3 besonders
interessant. Es zeigt einen konstanten Farbton (Hue), nämlich Zyanblau bei Veränderung von Luminace und Saturation.
Genau diese Situation soll näher untersucht werden. So müßte eine konstante Farbe, -egal unter
welcher Beleuchtung,- einen konstanten Farbton haben. Folglich müßte ein einfarbiges Objekt
sehr schnell durch den Farbton gefunden werden.
Abbildung 30 wird deshalb in die HLS-Komponenten zerlegt. Abbildung 35 zeigt den Farbtonwert, interpretiert als Grauwert (invertiert wegen des besseren Druckergebnisses).
Abbildung 35: Farbton grau invertiert
Die farbig umrandeten Bereiche heben die Flächen hervor, an denen farbige Markierungen an
dem Roboter angebracht wurden. Betrachtet man diese Bereiche, so kann man sie zwar deutlich
erkennen, eine Abgrenzung zur Umgebung fällt jedoch schwer. Vormals unbunte Flächen lassen
sich nicht eindeutig einem Farbton zuweisen.
Eine Aufnahme des Testbildes (Abbildung 32) und anschließende Berechnung des Farbtons
(HUE) zeigen diesen Mangel deutlich. Das Ergebnis sieht man in Abbildung 36. Trotz des Qualitätsverlustes -aufgrund der Aufnahme eines gedruckten Testbildes- ist die Tendenz, daß unbunten
Flächen nur ungesichert ein Farbwert zugewiesen werden kann, erkennbar. Dieses Verhalten ist
erklärbar, betrachtet man sich den HLS Farbraum. Bei geringen Werten von Saturation erscheinen
nahezu alle Farbtöne grau. Wie hell- oder dunkelgrau die Farbe erscheint, ist nahezu nur noch von
der Luminance abhängig. Bei kleinen oder großen Werten für die Luminance erscheinen alle
Farbtöne schwarz oder weiß. Da die Aufnahme und anschließende Digitalisierung in der Framegrabberkarte eine Reduzierung des ursprünglichen Informationsgehalts der darzustellenden Szene
bedeutet, wird ersichtlich, warum der Farbton von relativ unbunten Farben oft nur verfälscht berechnet wird. Ein nur geringer Fehler bei der Aufnahme oder und Digitalisierung kann z.B. ein
sehr dunkles Rot (fast Grau) zu jeder anderen dunkleren fast grauen Farbe machen. In der Konsequenz führt das dazu, daß ein sehr unbunter Farbwert bei einem geringen Fehler in der Aufnahme
oder Digitalisierung zu fast jedem Farbton werden kann.
41
Farbe als Kriterium
Abbildung 36: HUE-Werte des Testbildes
Es ist zwar möglich, Filter34 zu entwickeln, die diese unbunten Bereiche herausfiltern. Leider sind
die bis hierher nötigen Rechenoperationen sehr zeitaufwendig und lassen diese Methode, farbige
Objekte in einer Szene zu finden, in Bezug auf die Berechnungsdauer als sehr schwierig erscheinen.
6.3 LookUpTable
Ein LookUpTable LUT ist nichts anderes als eine Tabelle, in der jedem Farbwert auf der Eingangsseite ein Farbwert auf der Ausgangsseite zugeordnet ist. Durch ein Programm oder durch
entsprechende Hardware wird nun jeder Punkt des Quellbildes in einen entsprechenden Punkt des
Zielbildes transformiert. Man könnte den LUT so beschreiben, daß bestimmte Farbwerte bestimmte Grauwerte erzeugen.
So könnte z.B. der Bereich von Rotwerten RGB= 200-255, 0-40, 0-40 dem Grauwert= 50,50,50
zugeordnet werden.
Der Bereich von Grünwerten RGB= 0-40, 200-255, 0-40 kann dementsprechend dem Grauwert=
100,100,100 zugeordnet werden u.s.w.
Sämtliche andern Farbwerte könnte man dem Grauwert = 0, 0, 0 zuordnen.
Mit Hilfe eines so manipulierten Bildes ließe sich durch Binarisierung mit dem Schwellenwert 4060 einem Binärbild erzeugen, das nur noch ehemals rote Bereiche enthält.
34
Filter (Verfahren zur Verbesserung der Bildqualität oder Hervorhebung oder Unterdrückung von
bestimmten Merkmalen.)
42
Farbe als Kriterium
Dieses Verfahren mag sehr aufwendig erscheinen. Man muß jedoch wissen, daß bestimmte
Framegrabber-Karten über eine Zusatzhardware verfügen, die eine solche Bildoperation ohne
jegliche CPU-Belastung des eigentlichen Hostrechners durchführen. Damit fällt auch keine zusätzliche Rechenzeit an. Die Gesamtdauer der Operation wird sehr klein, weil nur noch die Binarisierung von der Host-CPU durchgeführt werden muß.
Leider verfügt die Matrox-Meteor über keine Zusatzhardware. Eine Bildoperation mittels eines
LUT ist zwar durch Software mit Hilfe der MIL 4.0 Library durchzuführen; diese Rechenoperation benötigt jedoch sehr lange Rechenzeit.
6.4 Binarisierung nach Farbbändern
Eine Methode, die jedoch nur die Unterscheidung der drei Grundfarben RGB ermöglicht, ist die
einzelne Binarisierung der Farbbänder und anschießende arithmetische Operationen auf die so
gewonnenen Binärbilder. Alle drei Farbbänder des RGB Bildes werden mit einem Schwellenwert35 binarisiert. Wird nach Rot gesucht, werden die Binärbilder aus dem grünen und blauen
Farbband invertiert. Das Ergebnis "Binärbild rotes Band", das Ergebnis "invertiertes Binärbild
blaues Band" und das Ergebnis "invertiertes Binärbild grünes Band" werden durch eine logische
Und-Operation verknüpft. Das entstandene Bild wird in Abbildung 37 gezeigt. Man erkennt, daß
nur noch vormals rote Anteile des Testbildes (Abbildung 30) vorhanden sind. Diese werden
schwarz dargestellt.
Ziel:
Abbildung 37: Binarisierung des Testbildes nach der Farbe Rot
Die Verknüpfung mit dem invertierten blauen und invertierten grünen Farbband führt dazu, daß
die ungewollten Bereiche, in denen z.B. Rot mit hohem Wert vertreten ist, jedoch Blau oder Grün
auch, ausmaskiert werden. Ansonsten würde zum Beispiel Gelb in dem Ergebnis erscheinen, weil
auch Gelb eine hohen roten Farbanteil aufweist.
Der Aufwand mag erheblich klingen, betrachtet auf die Rechenzeit sind jedoch die Operationen
im Farbraum des 24 Bit Quellbildes ausschlaggebend. Da hier nur eine Binarisierung erfolgt und
anschließend nur noch Operationen im 1 Bit tiefen Binärbildern erforderlich sind, bestimmt fast
ausschließlich die Binarisierung die gesamte Rechendauer.
Diese Methode, auf Abbildung 30 zur Suche der Farbe Rot mit einem Schwellenwert 90 angewandt, liefert das in Abbildung 38 gezeigte Bild, das hier wieder invertiert dargestellt wird.
35
Es können auch drei verschiedene Schwellenwerte sein, wird später erörtert.
43
Farbe als Kriterium
Abbildung 38: Binarisierung der Abbildung 30 nach der Farbe Rot
Nach einer Filterung mit MimOpen und MimClose sieht das Bild wie in Abbildung 39 dargestellt
aus (invertiert).
Abbildung 39: Abbildung 38 gefiltert
Die Beispielbilder sind bei schlechter Ausleuchtung aufgenommen worden. Daher wurde zur Binarisierung der roten Pappstreifen ein niedriger Schwellenwert von 90 genommen. Das Beispiel
zeigt, daß das Verfahren auch bei nicht optimalen Bedingungen funktioniert.
Eine Binarisierung mit zwei Schwellenwerten kann die Genauigkeit des Ergebnisses in Bezug auf
die Reinheit der Grundfarbe verändern. So könnte man, um bei dem Beispiel zu bleiben, die Farb-
44
Farbe als Kriterium
bänder Grün und Blau mit deutlich höherem Schwellenwert und Rot mit einem niedrigerem
Schwellenwert berechnen. Dann würde man ein reineres Rot36 bekommen.
Bei günstigerer Beleuchtung können die Schwellenwerte für das Bild (Abbildung 30) auch entsprechend verändert werden.
Fazit:
Ein geeignetes Verfahren, in den Grundfarben bedruckte Flächen zu finden, ist mit der beschriebenen Methode "Binarisieren nach Farbbändern" gefunden. In Kapitel 8 werden Funktionen beschrieben, die Bilder oder Bildauschnitte nach Farbbändern mit Schwellenwerten binarisieren.
Diese Funktionen sind so angelegt, daß sie sich in das Erscheinungssbild des Funktionspools der
MIL 4.0 einfügen. Damit steht einer Wiederverwendung der Funktionen nichts im Wege
6.4.1 Auswahl der Farbe
Wird nach den Farben Rot, Grün und Blau gesucht, so sollten die Farben möglichst frei von störenden Anteilen der jeweils anderen Farbbänder sein. Eine Untersuchung mit verschiedenen Pappen aus verschiedenen Farbsystemen ergab gute Werte für die Farben HKS 13K (Rot), HKS 65K
(Grün), HKS 43K (Blau) mit je 100% Deckung aus dem HKS Farbsystem.
Abbildung 40: Histogramm der HKS Farbe 13K (ROT)
Abbildung 40 zeigt das Histogramm für Rot.
Der höchste Wert für ein nicht erwünschtes Farbband beträgt ca. 30 aus dem Bereich von 0-255.
Abbildung 41: Histogramm der HKS Farbe 65K (GRÜN)
36
reineres Rot (hier im Sinne frei von Anteilen von Grün und Blau )
45
Farbe als Kriterium
Abbildung 41 zeigt das Histogramm für Grün.
Der höchste Wert für ein nicht erwünschtes Farbband beträgt ca. 95 aus dem Bereich von 0-255.
Abbildung 42: Histogramm der HKS Farbe 43K (BLAU)
Abbildung 42 zeigt das Histogramm für Blau.
Der höchste Wert für ein nicht erwünschtes Farbband beträgt ca. 70 aus dem Bereich von 0-255.
Um eine gute Wiedererkennung zu gewährleisten, müssen die Farbbänder, die unterdrückt werden, bei einem Schwellenwert von ca. 100 binarisiert werden. Die nutzbaren Bänder müßten dementsprechend mit Werten größer als 100 binarisiert werden. Da alle Histogramme eine fast völlige
Aussteuerung des zu nutzenden Farbbandes aufzeigen, ist ein höherer Wert ca. 190 angebracht. Es
ist jedoch zu berücksichtigen, daß die Histogramme bei optimaler Beleuchtung erstellt wurden.
Bei schlechter Beleuchtung ist ein entsprechend niedriger Wert zu wählen. Die Beleuchtung sollte
so gewählt sein, daß das tatsächliche Nutzsignal über dem Filterwert des Störsignals liegt (hier
Im weiteren Verlauf dieser Arbeit wird, wenn nicht gesondert erwähnt, von den oben beschriebenen HKS-Farben für die Farben Rot, Grün und Blau ausgegangen.
46
Pseudo-MIL-Funktionen
7 Pseudo-MIL-Funktionen
Mit Hilfe der Programmiersprache C werden die Funktionen, die zur Unterscheidung der Farbund Konturmerkmale benötigt werden, erstellt. Um einmal geschriebene Funktionen wiederverwenden zu können, werden diese, soweit sie auf den Funktionsumfang der MIL4.0 zurückgreifen,
als sogenannte Pseudo-MIL-Funktionen implementiert. Die Pseudo-MIL-Funktionen erlauben
eine Prüfung der übergebenen Parameter und ermöglichen den Zugriff auf unter dem Funktionsumfang der MIL4.0 reservieren oder erzeugten Speicherinhalte. Bei diesen Speicherinhalten kann
es sich z.B. um den Inhalt des Bildspeichers der Grabberkarte handeln.
Die im Rahmen dieser Diplomarbeit erzeugten Funktionen sind so aufgebaut, daß sie den Funktionen der MIL 4.0 sowohl von der Art des Funktionaufrufs als auch der Funktionsbeschreibung
ähneln. Dies erleichtert den Umgang mit den erzeugten Funktionen und ermöglicht eine Nutzung
gende Arbeiten.
Die erzeugen Funktionen sind in zwei Dateien mit den Namen bina.c und scale.c abgespeichert.
Darüber hinaus gibt es eine Header-Datei mit dem Namen bina.h, in ihr sind sämtliche notwendigen Definitionen enthalten.
Die Funktionen aus der Datei bina.c dienen im besonderen der Binarisierung von Farbbildern und
der Blobanalyse. Mit Hilfe der Funktionen aus der Datei scale.c können die aus der Blobanalyse
gewonnenen Koordinaten in Raumkoordinaten umgerechnet werden. Die genaue Funktionsbeschreibung ist in den Kapiteln Funktionen aus bina.c und Funktionen aus scale.c zu finden. Die
beiden Kapitel beginnen mit einer kurzen Übersicht über die Funktionen.
47
Funktionen aus bina.c
8 Funktionen aus bina.c
In Kapitel 6 wurde ein geeignetes Verfahren zum Auffinden von farbigen Markierungen in der
Szene entwickelt.
Bei den unterschiedenen Farben handelt es sich um die drei Grundfarben.
Diese Methode hat den Vorteil, daß nach der Binarisierung der hier vorliegenden Szene nur noch
wenige Blobs zur Blobanalyse übrigbleiben.
Funktionen zur Binarisierung nach Farbbändern: MblobSeparateRGBFast, MblobSeparateRGB,
MblobSeparateOneColor.
MblobSeparateRGBFast und MblobSeparateRGB berechnen beide aus einem Farbbild ein
dreibandiges Binärbild. MblobSeparateRGB binarisiert das Quellbild mit zwei Schwellenwerten.
MblobSeparateRGBFast binarisiert nur mit einem Schwellenwert. Deswegen benötigt
MblobSeparateRGBFast nur die halbe Rechendauer gegenüber MblobSeparateRGB.
Bei beiden Funktionen werden alle drei Grundfarben separiert.
Soll das Quellbild nur nach einer der drei Farben untersucht werden, ist MblobSeparateOneColor
die geeignete Funktion. Diese Funktion benötigt für einen gleich gro
halbe Rechendauer wie MblobSeparateRGB. Beide Funktionen binarisieren nach zwei Schwellenwerten.
Weitere Funktionen aus bina.c: MblobTraceOne, MblobCord
MblobCord führt eine Blobanalyse eines Binärbildes durch. Die Funktion berücksichtigt dabei die
maximale und die minimale Fläche eines Blobs und das Verhältnis von maximaler zu minimaler
Ausdehnung eines Blobs. Das Ergebnis ist eine Liste mit den Koordinaten der selektierten Blobs.
MblobTraceOne sucht in einem Suchfenster nach Blobs bestimmter Farbe und gibt die Mittelpunktkoordinate zurück. Mit Hilfe dieser Funktion können Objekte, die sich langsam bewegen,
verfolgt werden. Eine Bedingung ist jedoch, daß das Objekt das Suchfenster von einer zu nächsten Aufnahme nicht verläßt. Der Vorteil ist, daß die Untersuchung des Suchfensters viel weniger
Zeit in Anspruch nimmt als die des gesamtem Quellbildes. Somit kann die Bewegung eines einmal gefundenen Blobs nachverfolgt werden; das Suchfenster folgt dem Blob von Aufnahme zu
Aufnahme. Die Aufnahmen können in kürzeren Abständen erfolgen, weil die Binarisierung des
Inhaltes des Suchfensters nur Bruchteile der Zeit in Anspruch nimmt.
48
Funktionen aus bina.c
8.1 MblobSeparateRGBFast
Pseudo MIL Funktion: MblobSeparateRGBFast
Synopsis:
Binarisierung eines Farbbildes nach den drei Grundfarben.
Format:
void MblobSeparateRGBFast (ColorImage, Bin3BandImage, OffsetX, OffsetY, Max)
MIL_ID ColorImage
Bin3BandImage
Quellbildidentifizierer.
Zielbildidentifizierer.
long
Versatz zur linken oberen Bildecke X-Achse.
Versatz zur linken oberen Bildecke Y-Achse.
Der Schwellenwert, ab dem das Pixel des jeweiligen
Farbbandes noch zum Blob gehört.
OffsetX
OffsetY
Max
Beschreibung:
Diese Funktion kopiert den Ausschnitt des Farbquellbildes, der durch die Größe des Zielbildes und die
Parameter OffsetX und OffsetY gegeben ist. Der Bildausschnitt muß innerhalb des Quellbildes liegen.
Aus diesen Farbbändern werden nun drei neue Farbbänder des Zielbildes erzeugt.
Im roten Farbband des Zielbildes wird ein Pixel auf 1 gesetzt, wenn das entsprechende Pixel des
Bildausschnittes des Quellbildes im roten Farbband größer Max und im blauen und grünen Farbband
kleiner Max ist.
Im grünen Farbband des Zielbildes wird ein Pixel auf 1 gesetzt, wenn das entsprechende Pixel des
Bildauschnittes des Quellbildes im grünen Farbband größer Max und im roten und blauen Farbband kleiner
Max ist.
Im blauen Farbband des Zielbildes wird ein Pixel auf 1 gesetzt, wenn das entsprechende Pixel des
Bildauschnittes des Quellbildes im grünen Farbband größer Max und im roten und grünen Farbband kleiner
Max ist.
Der mit ColorImage bezeichnete Parameter spezifiziert den Identifizierer des Quellbildes. Das Quellbild
muß ein 3 Band Farbbild mit jeweils 8 Bit Datentiefe pro Farbband sein.
Der mit Bin3BandImage bezeichnete Parameter spezifiziert den Identifizierer des Zielbildes. Das Zielbild
muß ein 3 Band Farbbild mit jeweils 1 Bit Datentiefe pro Farbband sein.
Der mit OffsetX bezeichnete Parameter spezifiziert den Versatz des zu überprüfenden Ausschnittes des
Quellbildes zur linken oberen Bildecke in Richtung der X-Achse.
Der mit OffsetY bezeichnete Parameter spezifiziert den Versatz des zu überprüfenden Ausschnittes des
Quellbildes zur linken oberen Bildecke in Richtung der Y-Achse.
Der mit Max bezeichnete Parameter spezifiziert den Schwellenwert für die Binarisierung.
Bemerkung:
Quellbild muß ein 3 Band Farbbild sein.
Zielbild muß ein 3 Band Binärbild sein.
Der angegebene Ausschnitt, der sich durch die Größe des Zielbildes und die Parameter OffsetX und
OffsetY ergibt, muß in den Grenzen des Quellbildes liegen.
49
Funktionen aus bina.c
Die Ausführungsdauer dieser Funktion ist ca. gleich der Ausführungsdauer der Funktion
MblobSeparateOneColor. Die Funktion MblobSeparateRGB benötigt ca. doppelt so viel Zeit.
Es erfolgt keine Rückgabe.
50
Funktionen aus bina.c
8.2 MblobSeparateRGB
Pseudo MIL Funktion: MblobSeparateRGB
Synopsis:
Binarisierung eines Farbbildes nach den drei Grundfarben.
Format:
void MblobSeparateRGB (ColorImage, Bin3BandImage, OffsetX, OffsetY, Max, Min)
MIL_ID ColorImage
Bin3BandImage
Quellbildidentifizierer.
Zielbildidentifizierer.
long
Versatz zur linken oberen Bildecke X-Achse.
Versatz zur linken oberen Bildecke Y-Achse.
Der Schwellenwert, ab dem das Pixel des jeweiligen
Farbbandes noch zum Blob gehört.
Der Schwellenwert, ab dem das Pixel des jeweiligen
Farbbandes nicht mehr zum Blob gehört.
OffsetX
OffsetY
Max
Min
Beschreibung:
Diese Funktion kopiert den Ausschnitt des Farbquellbildes, der durch die Größe des Zielbildes und die
Parameter OffsetX und OffsetY gegeben ist. Der Bildausschnitt muß innerhalb des Quellbildes liegen.
Aus diesen Farbbändern werden nun drei neue Farbbänder des Zielbildes erzeugt.
Im roten Farbband des Zielbildes wird ein Pixel auf 1 gesetzt, wenn das entsprechende Pixel des
Bildausschnittes des Quellbildes im roten Farbband größer Max und im blauen und grünen Farbband
kleiner Min ist.
Im grünen Farbband des Zielbildes wird ein Pixel auf 1 gesetzt, wenn das entsprechende Pixel des
Bildausschnittes des Quellbildes im grünen Farbband größer Max und im roten und blauen Farbband
kleiner Min ist.
Im blauen Farbband des Zielbildes wird ein Pixel auf 1 gesetzt, wenn das entsprechende Pixel des
Bildausschnittes des Quellbildes im grünen Farbband größer Max und im roten und grünen Farbband
kleiner Min ist.
Der mit ColorImage bezeichnete Parameter spezifiziert den Identifizierer des Quellbildes. Das Quellbild
muß ein 3 Band Farbbild mit jeweils 8 Bit Datentiefe pro Farbband sein.
Der mit Bin3BandImage bezeichnete Parameter spezifiziert den Identifizierer des Zielbildes. Das Zielbild
muß ein 3 Band Farbbild mit jeweils 1 Bit Datentiefe pro Farbband sein.
Der mit OffsetX bezeichnete Parameter spezifiziert den Versatz des zu überprüfenden Ausschnittes des
Quellbildes zur linken oberen Bildecke in Richtung der X-Achse.
Der mit OffsetY bezeichnete Parameter spezifiziert den Versatz des zu überprüfenden Ausschnittes des
Quellbildes zur linken oberen Bildecke in Richtung der Y-Achse.
Der mit Max bezeichnete Parameter spezifiziert den Schwellenwert für die Binarisierung des jeweiligen
Nutzanteils.
Der mit Min bezeichnete Parameter spezifiziert den Schwellenwert für die Binarisierung des jeweils zu
51
Funktionen aus bina.c
Bemerkung:
Quellbild muß ein 3 Band Farbbild sein.
Zielbild muß ein 3 Band Binärbild sein.
Der angegebene Ausschnitt, der sich durch die Größe des Zielbildes und den Parametern OffsetX und
OffsetY ergibt, muß in den Grenzen des Quellbildes liegen.
Die Ausführungsdauer dieser Funktion ist ca. doppelt so lang wie die Ausführungszeit der Funkton
MblobSerperateOneColor, und MblobSeparateRGBFast.
R ückgabe:
Es erfolgt keine Rückgabe.
52
Funktionen aus bina.c
8.3 MblobSeparateOneColor
Pseudo MIL Funktion: MblobSeparateOneColor
Synopsis:
Binarisierung eines Farbbandes nach den drei Grundfarben.
Format:
void MblobSeparateRGB (ColorImage, BinaryImage, OffsetX, OffsetY, Max, Min, Color)
MIL_ID ColorImage
BinaryImage
Quellbildidentifizierer.
Zielbildidentifizierer.
long
Versatz zur linken oberen Bildecke X-Achse.
Versatz zur linken oberen Bildecke Y-Achse.
Der Schwellenwert, ab dem das Pixel des jeweiligen
Farbbandes noch zum Blob gehört.
Der Schwellenwert, ab dem das Pixel des jeweiligen
Farbbandes nicht mehr zum Blob gehört.
Die Farbe des Farbbandes, nach dem binarisiert wird.
OffsetX
OffsetY
Max
Min
Color
Beschreibung:
Diese Funktion kopiert den Ausschnitt des Farbquellbildes, der durch die Größe des Zielbildes und die
Parameter OffsetX und OffsetY gegeben ist. Der Bildausschnitt muß innerhalb des Quellbildes liegen.
Aus diesen Farbbändern wird nun ein Binärbild erzeugt.
Im Zielbild wird ein Pixel auf 1 gesetzt, wenn das entsprechende Pixel des Bildausschnittes des Quellbildes
in dem durch Color angegebenen Farbband größer Max und in den beiden anderen Farbbändern kleiner
Min ist.
Der mit ColorImage bezeichnete Parameter spezifiziert den Identifizierer des Quellbildes. Das Quellbild
muß ein 3 Band Farbbild mit jeweils 8 Bit Datentiefe pro Farbband sein.
Der mit BinaryImage bezeichnete Parameter spezifiziert den Identifizierer des Zielbildes. Das Zielbild
muß ein 1 Band Bild mit 1 Bit Datentiefe sein.
Der mit OffsetX bezeichnete Parameter spezifiziert den Versatz des zu überprüfenden Ausschnittes des
Quellbildes zur linken oberen Bildecke in Richtung der X-Achse.
Der mit OffsetY bezeichnete Parameter spezifiziert den Versatz des zu überprüfenden Ausschnittes des
Quellbildes zur linken oberen Bildecke in Richtung der Y-Achse.
Der mit Max bezeichnete Parameter spezifiziert den Schwellenwert für die Binarisierung des jeweiligen
Nutzanteils.
Der mit Min bezeichnete Parameter spezifiziert den Schwellenwert für die Binarisierung des jeweils zu
Der mit Color bezeichnete Parameter spezifiziert das Farbband, nach dem binarisiert werden soll.
Möglichkeiten sind hier: RED, GREEN, BLUE.
Bemerkung:
Quellbild muß ein 3 Band Farbbild sein.
Zielbild muß ein 1 Band Binärbild sein.
53
Funktionen aus bina.c
Der angegebene Ausschnitt, der sich durch die Größe des Zielbildes und den Parametern OffsetX und
OffsetY ergibt, muß in den Grenzen des Quellbildes liegen.
Die Ausführungsdauer dieser Funktion ist ca. gleich lang wie die Ausführungsdauer der Funktion
MblobSeparateRGBFast. Die Funktion MblobSeparateRGB benötigt etwa doppelt so viel Zeit.
Es erfolgt keine Rückgabe.
54
Funktionen aus bina.c
8.4
MblobCord
Pseudo MIL Funktion: MblobCord
Synopsis:
Diese Funktion führt eine Blobanalyse eines Binärbildes durch. Die Funktion berücksichtigt dabei die
maximale-, minimale Fläche eines Blobs und das Verhältnis von maximaler- zu minimaler Ausdehnung
eines Blobs.
Format:
long MblobCord (BinImage, MaxNumBlobs, MinBlobArea, MaxBlobArea, MaxDiffElongation,
RemoveSmallHoles, CordXPtr, CordYPtr)
MIL_ID BinImage
Quellbildidentifizierer.
long
Die Anzahl der zur Verfügung stehenden Speicherplätze in der
Liste der X- und Y-Koordinaten der gefundenen Blobs.
Die minimale Anzahl an Pixeln, ab dem ein Blob
noch berücksichtigt wird.
Die maximale Anzahl der Pixel, bis zu dem ein Blob
noch berücksichtigt wird.
Abweichung, wieviel mal größer die maximale Ausdehnung
gegenüber der minimalen Ausdehnung des Blobs betragen darf.
Anzahl der zur Glättung verwendeten Iterationen.
Speicherort der X- Koordinaten.
Speicherort der Y- Koordinaten.
MaxNumBlobs
MinBlobArea
MaxBlobArea
MaxDiffElongation
RemoveSmallHoles
*CordXPtr
*CordYPtr
Beschreibung:
Diese Funktion führt eine Blobanalyse des durch BinImage bekannten Binärbildes durch. Es werden die
Elemente ausgeschlossen, deren Fläche kleiner MinBlobArea oder größer MaxBlobArea ist. Es werden
auch die Elemente ausgeschlossen, deren Verhältnis maximaler- zu minimaler Ausdehnung des
entsprechenden Blobs größer ist als MaxDiffElongation.
Vor der Blobanalyse wird eine Filterung mit MimOpen und MimClose ausgeführt. Die Anzahl der
Iterationen wird mit RemoveSmallHoles angegeben.
Der mit BinImage bezeichnete Parameter spezifiziert den Identifizierer des Quellbildes. Das Quellbild muß
ein 1 Band Bild mit 1 Bit Datentiefe sein.
Der mit MaxNumBlobs bezeichnete Parameter spezifiziert die Anzahl der zur Verfügung stehenden
Speicherplätze in der Liste der X- und Y-Koordinaten der gefundenen Blobs.
Der mit MinBlobArea bezeichnete Parameter spezifiziert die Anzahl der Pixel, die ein Blob minimal noch
haben muß, um in die Ergebnisliste aufgenommen zu werden.
Der mit MaxBlobArea bezeichnete Parameter spezifiziert die Anzahl der Pixel, die ein Blob maximal
haben darf, um in die Ergebnisliste aufgenommen zu werden.
Der mit MaxDiffElongation bezeichnete Parameter spezifiziert die Abweichung, wieviel mal größer die
maximale Ausdehnung gegenüber der minimalen Ausdehnung des Blobs betragen darf, um noch in der
Ergebnisliste berücksichtigt zu werden.
Der mit RemoveSmallHoles bezeichnete Parameter spezifiziert die Anzahl der Iterationen, mit der die
Befehle MimOpen und MimClose ausgeführt werden.
55
Funktionen aus bina.c
Elemente, die in der Liste für die X- Koordinaten und Y-Koordinaten gespeichert werden können.
Der mit CordXPtr bezeichnete Parameter spezifiziert die Adresse des ersten Elementes der Liste der XKoordinaten der gefundenen Blobs.
Das Feld sollte so groß sein wie die Anzahl, die in MaxNumBlobs spezifiziert ist.
Das Feld sollte jedoch ausreichend groß bemessen sein, um alle Treffer aufnehmen zu können.
Der mit CordYPtr bezeichnete Parameter spezifiziert die Adresse des ersten Elementes der Liste der YKoordinaten der gefundenen Blobs.
Das Feld sollte so groß sein wie die Anzahl, die in MaxNumBlobs spezifiziert ist.
Das Feld sollte jedoch ausreichend groß bemessen sein, um alle Treffer aufnehmen zu können.
Bemerkung:
Quellbild muß ein 1 Band Binärbild sein.
Der reservierte Speicherplatz für die X-Koordinaten und Y-Koordinaten muß ausreichend groß bemessen
sein.
Diese Funktion verändert die Werte der Liste, deren Adresse des erstes Elements mit CordXPtr und
CordYPtr übergeben wurde.
R ückgabe:
RückgabeWert long
TotalNumBlobs wenn die Ausführung erfolgreich war, dann wird mit TotalNumBlobs die Anzahl der
gefunden Blobs zurückgegeben.
eine
-1
wenn in MaxNumBlobs zu wenig Felder frei sind, um alle Ergebnisse einzutragen
(es werden dann keine Ergebnisse in die Listen eingetragen).
eine
0
wenn kein Objekt im Quellbild gefunden wird.
56
Funktionen aus bina.c
8.5 MblobTraceOne
Pseudo MIL Funktion: MblobTraceOne
Synopsis:
Sucht in einem Suchfenster nach Blobs bestimmter Farbe und gibt die Mittelpunktkoordinate zurück.
Format:
long MblobTraceOne (ColorImage, CenterXPtr, CenterYPtr, SizeX, SizeY, Max, Min, Color,
MinBlobArea, MaxBlobArea, MaxDiffElongation, RemoveSmallHoles)
MIL_ID ColorImage
Quellbildidentifizierer.
long
Speicherort des alten Mittelpunktes des zu verfolgenden
Objektes (X-Achse) gemessen vom Koordinatenursprung.
Durch diese Funktion wird der Wert auf die neue Koordinate
geändert.
Speicherort des alten Mittelpunktes des zu verfolgenden
Objektes (X-Achse) gemessen vom Koordinatenursprung.
Durch die Funktion wird der Wert auf die neue Koordinate
geändert.
Die Größe des zu beobachtenden Fensters (X-Achse).
Die Größe des zu beobachtenden Fensters (Y-Achse).
Der Schwellenwert, ab dem das Pixel des jeweiligen
Farbbandes noch zum Blob gehört.
Der Schwellenwert, ab dem das Pixel des jeweiligen
Farbbandes nicht mehr zum Blob gehört.
Die Farbe des Farbbandes, nach dem binarisiert wird.
Die minimale Anzahl an Pixeln, ab dem ein Blob
noch berücksichtigt wird.
Die maximale Anzahl der Pixel, bis zu dem ein Blob
noch berücksichtigt wird.
Abweichung, wieviel mal größer die maximale Ausdehnung
gegenüber der minimalen Ausdehnung des Blobs betragen darf.
Anzahl der zur Glättung verwendeten Iterationen.
*CenterXPtr
*CenterYPtr
SizeX
SizeY
Max
Min
Color
MinBlobArea
MaxBlobArea
MaxDiffElongation
RemoveSmallHoles
Beschreibung:
Der an den Adressen von CenterXPtr, CenterYPtr gefunden X-Wert, Y-Wert entspricht dem ehemaligen
Koordinaten des Mittelpunkts eines Objekts. Diese Funktion sucht in einem Suchfenster nach einem Objekt
der Farbe, die durch den Parameter Color angegebenen wird. Das Suchfenster hat die Abmessungen SizeX
und SizeY. Sein Mittelpunkt wird durch den an den Adressen von CenterXPtr, CenterYPtr gefundenen
X-Wert, Y-Wert bestimmt, es sei denn, dieses Suchfenster würde die Grenzen des durch ColorImage
bekannten Bildes verlassen. Ist dies der Fall, so wird zwar die Abmessung des Suchfensters beibehalten,
jedoch wird der Mittelpunkt des Suchfensters soweit korrigiert, daß das Suchfenster noch innerhalb der
Abmessungen des durch ColorImage bekannten Bildes liegt.
Der durch das Suchfenster bekannte Bereich wird nun in ein Binärbild transformiert.
Im Zielbild wird ein Pixel auf 1 gesetzt, wenn das entsprechende Pixel des Suchfensters im Quellbild in
dem durch Color angegebenen Farbband größer Max und in den beiden anderen Farbbändern kleiner Min
57
Funktionen aus bina.c
ist. Vor der Blobanalyse wird eine Filterung mit MimOpen und MimClose ausgeführt. Die Anzahl der
Iterationen wird mit RemoveSmallHoles angegeben.
Das so gewonnene Binärbild wird nun einer Blobanalyse unterzogen.
Es werden die Elemente ausgeschlossen, deren Fläche kleiner MinBlobArea oder größer MaxBlobArea
ist. Es werden auch die Elemente ausgeschlossen, deren Verhältnis maximaler- zu minimaler Ausdehnung
MaxDiffElongation.
Bleibt nur noch ein Objekt übrig, so verändert diese Funktion die Werte, deren Adressen mit CenterXPtr
und CenterYPtr übergeben wurden, durch die neuen Mittelpunktkoordinaten und gibt eine 1 zurück an das
aufrufende Programm.
Wenn mehr als ein Blob im Suchfenster gefunden wurde, übergibt die Funktion eine -1.
Wenn kein Blob im Suchfenster gefunden wurde, übergibt die Funktion eine 0.
Der mit ColorImage bezeichnete Parameter spezifiziert den Identifizierer des Quellbildes. Das Quellbild
muß ein 3 Band Farbbild mit jeweils 8 Bit Datentiefe pro Farbband sein.
Der mit CenterXPtr bezeichnete Parameter spezifiziert den Speicherort des alten Mittelpunktes des zu
verfolgenden Objektes (X-Achse), gemessen vom Koordinatenursprung.
Durch diese Funktion wird der Wert auf die neue Koordinate geändert.
Der mit CenterYPtr bezeichnete Parameter spezifiziert den Speicherort des alten Mittelpunktes des zu
verfolgenden Objektes (Y-Achse), gemessen vom Koordinatenursprung.
Durch diese Funktion wird der Wert auf die neue Koordinate geändert.
Der mit SizeX bezeichnete Parameter spezifiziert die Größe des zu beobachtenden Fensters in Richtung der
X-Achse.
Der mit SizeY bezeichnete Parameter spezifiziert die Größe des zu beobachtenden Fensters in Richtung der
Y-Achse.
Der mit Max bezeichnete Parameter spezifiziert den Schwellenwert für die Binarisierung des jeweiligen
Nutzanteils.
Der mit Min bezeichnete Parameter spezifiziert den Schwellenwert für die Binarisierung des jeweils zu
Der mit Color bezeichnete Parameter spezifiziert das Farbband, nach dem binarisiert werden soll.
Möglichkeiten sind hier: RED, GREEN, BLUE.
Der mit MinBlobArea bezeichnete Parameter spezifiziert die Anzahl der Pixel, die ein Blob minimal noch
haben muß, um in die Ergebnisliste aufgenommen zu werden.
Der mit MaxBlobArea bezeichnete Parameter spezifiziert die Anzahl der Pixel, die ein Blob maximal
haben darf, um in die Ergebnisliste aufgenommen zu werden.
Der mit MaxDiffElongation bezeichnete Parameter spezifiziert die Abweichung, wieviel mal größer die
maximale Ausdehnung gegenüber der minimalen Ausdehnung des Blobs betragen darf, um noch in der
Ergebnisliste berücksichtigt zu werden.
Der mit RemoveSmallHoles bezeichnete Parameter spezifiziert die Anzahl der Iterationen, mit der die
Befehle MimOpen und MimClose ausgeführt werden.
Der mit CenterXPtr bezeichnete Parameter spezifiziert die Adresse, an der die X-Koordinaten des
gefundenen Blobs gespeichert wird.
Der mit CenterYPtr bezeichnete Parameter spezifiziert die Adresse, an der die X-Koordinaten des
gefundenen Blobs gespeichert wird.
Bemerkung:
Quellbild muß ein 3 Band Farbbild sein.
Diese Funktion verändert die Werte, deren Adresse mit CordXPtr und CordYPtr übergeben wurde.
58
Funktionen aus bina.c
R ückgabe:
RückgabeWert long
eine
eine
1
-1
eine
0
wenn die Ausführung erfolgreich war und nur ein Blob im Suchfenster gefunden wurde.
wenn mehr als ein Blob im Suchfenster gefunden wurde.
(es werden dann keine Ergebnisse verändert).
wenn kein Blob im Suchfenster gefunden wurde.
59
Funktionen aus bina.c
8.6 ColorMaxMinDiff
Pseudo MIL Funktion: ColorMaxMinDiff
Synopsis:
Pro Punkt wird der kleinste auftretende Wert aus den drei Farbbändern des Quellbildes vom größten
abgezogen, das Ergebnis ist dann das 8 Bit Zielbild.
Format:
void ColorMaxMinDiff (ColorImageSource, ImageResult)
MIL_ID ColorImageSource
ImageResult
Quellbildidentifizierer.
Zielbildidentifizierer.
Beschreibung:
Diese Funktion erzeugt mittels Punktoperationen aus dem durch den Parameter ColorImageSource
gegebenen 24 Bit Farbbild das durch den Parameter ImageResult bekannte 8 Bit Grausftufenbild mit der
Eigenschaft, besonders farbige37 Punkte hell erscheinen zu lassen. Durch die Funktion wird pro Punkt der
kleinste auftretende Wert aus den drei Farbbändern vom größten abgezogen, das Ergebnis wird dann als 8
Bit Grauwertbild interpretiert.
Der mit ColorImageSource bezeichnete Parameter spezifiziert den Identifizierer des Quellbildes. Das
Quellbild muß ein 3 Band Farbbild mit jeweils 8 Bit Datentiefe pro Farbband sein.
Der mit ImageResult bezeichnete Parameter spezifiziert den Identifizierer des Zielbildes. Das Zielbild muß
ein 1 Band Graustufenbild mit 8 Bit Datentiefe sein.
Bemerkung:
Quellbild muß ein 3 Band Farbbild sein.
Zielbild muß ein 1 Band Graustufenbild sein.
Quellbild und Zielbild müssen in X und Y-Richtung die gleichen Abmessungen haben.
37
farbig bedeutet in diesem Zusammenhang den möglichst großen Abstand zweier Farbbänder eines RGBBildes.
60
Problematik Zentralprojektion
9 Problematik Zentralprojektion
In den vorhergegangenen Kapiteln wurden Verfahren entwickelt, die uns ermöglichen, markante
Punkte, die mit farbigen Kreisen beklebt sind, wiederzuerkennen. Aus der anschließenden Blobanalyse gewinnen wir die zweidimensionalen Koordinaten des fotografisch gewonnen Abbildes
dieser markanten Punkte. Wie bereits festgestellt, kann man das Ergebnis einer Fotografie mit
dem Ergebnis einer Zentralprojektion gleichsetzen. Hat man nur die zweidimensionale Abbildung
vorliegen, so können Informationen über die Abmessung bestimmter Objekte nur mit zusätzlichen
Informationen gewonnen werden.
Selbst wenn nur die X- und Y- Koordinaten des Objektes berechnet werden sollen, muß hierfür
der Abstand zur Filmebene bekannt sein.
Eine Möglichkeit die Koordinaten zu berechnen, ist dann gegeben, wenn alle Objekte sich auf einer parallel zur Filmebene liegenden Ebene befinden.
Dies ist jedoch sowohl beim Roboterarm als auch bei der Fräse nicht der Fall.
Eine weitere Möglichkeit, die Punkte zu berechnen, ist dann gegeben, wenn man den Abstand aller Objekte zu einer parallel zur Filmebene liegenden Ebene kennt.
In den Funktionen aus scale.c soll die Bezugsebene die Tischplatte sein.
Es mußten einige Funktionen geschrieben werden, die sich mit der Umrechnung der Projektionskoordinaten in Koordinaten des Raums beschäftigen.
Um mit ihnen arbeiten zu können, gelten folgende Bedingungen:
• Die Bildebene der Kamera ist parallel zu dem Arbeitstisch.
• Die Koordinaten der flächigen Abbildung werden wie in Abbildung 44 bezeichnet und in der
Reihenfolge (X-,Y-Achse) angegeben.
• Die realen Koordinaten der jeweiligen Punkte im Raum werden wie in Abbildung 43 bezeichnet und in der Reihenfolge (X-,Y-,Z-Achse) angegeben.
• Die Kamera befindet sich nicht verdreht zum Arbeitstisch. Daraus folgt, daß die obere Kante
des Abbildes parallel zur Kante der Schiene des Transportsystems liegt.
• Die Definitionen aus der Datei bina.h sind korrekt angegeben. In dieser Datei sind Werte definiert, wie die Höhe des Brennpunktes über dem Tisch oder die Auflösung der Kamera.
Abbildung 43: Achsenbezeichnung in der dreidimensionalen Darstellung
61
Problematik Zentralprojektion
Abbildung 44: Achsenbezeichnung in der zweidimensionalen Darstellung
Um die Einhaltung einiger dieser Definitionen mittels einer Funktion zu überprüfen, wurden auf
Höhe des Tischniveaus drei blaue Markierungen angebracht. Vergleiche Abbildung 44, in der die
drei Markierungen zu sehen sind.
Funktion GetScale überprüft, ob die Kamera verdreht oder gekippt zum Tisch aufgestellt ist und
hnung von Bildkoordinaten in Raumkoordinaten, die in Höhe
des Tischniveaus liegen.
Viele andere Funktionen greifen auf diesen Maßstab zurück.
9.1 Koordinatentransformation
Mit der Funktion ProToReal haben wir eine Funktion, die es uns ermöglicht, bei bekannter Höhe
(Z-Achse) und den Koordinaten aus der Blobanalyse auf die Position des Objekts im Raum zu
schließen. Somit eignet sich die Funktion ProToReal, um die X- Y-Achse der Positioniereinrichtung der Fräse zu überwachen. Für diesen Zweck wurden zwei markante Punkte mit farbigen
Punkten beklebt. Diese Punkte verändern zu keinem Zeitpunkt ihre Höhe über dem Tisch. Vergleiche Abbildung 43.
Ist von einem Punkt im Raum seine Höhe bekannt, so kann mit Hilfe der Funktion ProToReal aus
den zweidimensionalen Koordinaten der Projektion die dreidimensionale Koordinate des Punktes
im Raum bestimmt werden.
In Abbildung 45 ist das Verfahren exemplarisch für eine Achse zu sehen.
K ist bekannt aus der Projektion.
h ist die bekannte Höhe des Punktes im Raum.
hK ist die bekannte Kammerahöhe über dem Tisch.
Somit kann K berechnet werden.
62
Problematik Zentralprojektion
K=
P(hK − h)
hK
Abbildung 45: Beispiel zur Anwendung der Funktion ProToReal
63
Problematik Zentralprojektion
9.2 Die Raumkoordinaten des Roboterarms
Bei dem Roboterarm wurden die markanten Punkte Handgelenk und Ellenbogen mit farbigen
Punkten beklebt. Vergleiche Abbildung 46. Somit kann man mit einer Blobanalyse an die Koordinaten der Abbildung gelangen. Eine einfache Berechnung der reellen Raumkoordinaten mit
ProToReal scheidet aus, da die Höhe der einzelnen Punkte im Raum veränderlich ist. Es sind jedoch die konstanten Längen des Unter- Oberarms des Roboterarms bekannt. Ein weiterer fester
Punkt ist das Schultergelenk.
Für die Berechnung des Ellenbogens könnte man folgende Aufgabe formulieren:
Zu berechnen sind die Koordinaten des Ellenbogens Punkt4, der auf einem Vektor liegt. Dieser
Vektor ist durch die Punkte Punkt1 und Punkt2 definiert. Der Vektor entspricht dem Sehstahl
"Kamera Abbildungsebene-Tisch".
Punkt1 ist der Brennpunkt der Kamera.
Punkt2 ist durch die zweidimensionale Abbildung in der Kamera gegeben. Er entspricht der Position, an der der Sehstrahl "Kamera Ellenbogen" die Tischebene schneiden würde.
Es ist noch die Koordinate von Punkt3 bekannt.
Die Koordinate von Punkt3 entspricht der Koordinate des Schultergelenks.
Ferner ist noch der Abstand l des Punkts4 zu dem Punkt3 bekannt.
l entspricht der Läge des Oberarms.
Um die Berechnung leichter durchführen zu können, wird das Koordinatensystem so transformiert, daß Punkt1 im Nullpunkt des neuen Koordinatensystems liegt.
Der neue Punkt1 ist P1.
Der neue Punkt2 ist P2.
Der neue Punkt3 ist P3.
Es werden die Koordinaten für den Punkt4 gesucht, im neuen Koordinatensystem heißt er
P4=(?, ?, ?)
Abbildung 46: Beispiel zur Berechnung der Koordinate des Ellenbogens
64
Problematik Zentralprojektion
Es gilt:
P4i = P1i + λ (P2i − P1i )
P4 j = P1j + λ (P2 j − P1j )
P4 k = P1k + λ (P2 k − P1k )
Da P1=(0, 0, 0)gilt:
P4 i = λ ( P2 i )
P4 j = λ ( P2 j )
P4 k = λ ( P2 k )
Weiter gilt:
l = (P4i − P3i ) 2 + (P4 j − P3 j ) 2 + (P4 k − P3k ) 2
Wir setzen ein und erhalten:
l = (λP2i − P3i ) 2 + (λP2 j − P3 j ) 2 + (λP2 k − P3k ) 2
l = (λ2 (P2 i + P2 j + P2 k ) - 2λ (λP2 i P3i + P2 j P3 j + P2 k P3k ) + P3i + P3 j + P3k
2
2
2
2
2
2
Wir substituieren:
v = P2 i + P2 j + P2 k
2
2
2
w = P2i P3i + P2 j P3 j + P2 k P3k
u = P3i + P3 j + P3k
2
2
2
Und erhalten:
l = λ2 v - 2λw + u
l 2 = λ2 v - 2λw + u
Wir stellen um und erhalten:
λ1 =
λ2 =
w
+
v
w
v
uv - l 2 v - w 2
v
2
uv - l v - w 2
v
65
Problematik Zentralprojektion
Wir resubstituieren und erhalten:
λ =
λ
P3 + P2
P2 P3
P2 + P2
P3 + P2
+ P2 P3
P2 + P2
+
−
(P3 +
P3 )(P2 +
+ P2 ) l (P2
P2 +
(P3
P3 +
)(P2 + P2
+ P2 ) (P2 P3 +
P3
P2
+ P2
) - (P2 + P2 +
)-
P3
+ P2 P3
P2
P2 + P2
Es existieren, wie zu erwarten war, zwei Lösungen!
Die Lösungen werden eingesetzt:
P4i = P1i + λ P2i − P1i
P4 j = P1j + λ P2 j − P1j
P4 k = P1 + λ P2 − P1
Man erhält zwei Punkte im Raum, die beide die Anfangsbedingungen erfüllen.
Diese Punkte können auch durch die zwei folgenden Bedienungen beschrieben werden:
Die Punkte liegen auf der Oberfläche einer Kugel mit dem Radius l um den Mittelpunkt P3.
Die Punkt liegen auf der Graden P1 P2.
Die beiden gefundenen Punkte werden zurücktransformiert in das alte Koordinatensystem, und
1 und P42
Um nun eine Lösung ausschließen zu können, werden drei Vektoren gebildet.
Vektor1 wird gebildet zwischen den Punkten P3 und P41 (Schultergelenk und Ellenbogen1 aus
Lösung 1).
Vektor2 wird gebildet zwischen den Punkten P3 und P42 (Schultergelenk und Ellenbogen2 aus
Lösung2).
Vektor3 wird gebildet zwischen den Punkten P5 und P6 (die beiden Meßpunkte auf Höhe des
Schultergelenks)
Nun werden die Winkel zwischen Vektor1, Vektor3 und zwischen Vektor2, Vektor3 ausgerechnet.
Einer der beiden Winkel muß genau 90° ergeben.
Der Punkt P4, mit dem der Winkel 90° ausgerechnet wurde, ist der gesuchte Punkt4.
In der Praxis muß man jedoch betrachten, welcher der beiden Winkel näher an 90 Grad liegt, da
der genaue Wert nur selten erreicht wird.
Da diese Methode nur dann anwendbar ist, wenn einer der Winkel von 90° abweicht, ist hier zu
untersuchen, wann beide Winkel dicht bei 90° liegen.
Beide Winkel sind genau 90 Grad, wenn die Punkte P41
2 auf der Graden P1 P2 liegen, die
Hier sind die beiden Lösungen für P4 gleich. Es ist also irrelevant, welcher P4 genommen wird,
da sie gleich sind.
lenk, Ellenbogen aufgespannt wird, zu liegen kommt.
In dieser Situation müßte eine zweite Aufnahme einer Kamera aus einer anderen Position herangezogen werden. Vergleiche Abbildung 47.
66
)
Problematik Zentralprojektion
Abbildung 47: Auswahl der Kameraposition
67
Funktionen aus scale.c
10 Funktionen aus scale.c
Die Datei mit dem Namen scale.c beinhaltet die Funktionen, die zur Berechnung der Raumkoordinaten des Roboterarms und der Transporteinrichtung der Fräse erforderlich sind.
Im einzelnen sind das die Funktionen GetScale, GetPivot, GetPivotPlusLength, ProToReal,
GetPointOfRobot, GetPointOfRobot_2, GetRobotCord, GetCarriageCord, DrawScene,
GetAngle, GetAngle_2.
GetScale ermittelt, ob die Kamera sich verdreht oder gekippt zum Tisch befindet und errechnet
den Maßstab zur Umrechnung von Bildkoordinaten in Raumkoordinaten anhand von drei Markierungen auf dem Arbeitstisch.
GetPivot ermittelt die Koordinate, die den Drehpunkt, um den sich das Schultergelenk des Robo-
GetPivotPlusLength ermittelt die Koordinate, die den Drehpunkt, um den sich das Schultergelenk
des Roboterarms dreht, bezeichnet. Zusätzlich wird die Länge des Ober- und Unterarms berechnet.
ProToReal berechnet aus den 2D Koordinaten der Abbildung und unter Angabe der Höhe die 3D
Koordinaten.
berechnet die Koordinaten eines Punkts Punkt4, der auf einem Vektor liegt.
Dieser Vektor ist durch die Punkte Punkt1 und Punkt2 definiert. Es ist noch die Koordinate von
Da es zwei Lösungen gibt, wird mit Hilfe von Angle betrachtet, welche Lösung besser ist.
GetPointOfRobot_2 berechnet die Koordinaten eines Punkts Punkt4, der auf einem Vektor liegt.
Punkt3 gegeben. Ferner ist noch der Abstand Length des Punkts4 zu dem Punkt3 bekannt.
berechnet die Koordinaten der vier Punkte im Raum, die auf dem Roboterarm angebracht sind.
GetCarriageCord berechnet aus den Koordinaten der beiden Punkte, die auf der Transporteinrichtung der Fräse geklebt sind, die Raumkoordinaten, die die Transporteinrichtung beschreiben.
DrawScene zeichnet eine dreidimensionale Szene auf den Bildschirm. Diese Funktion dient der
schematischen Darstellung des Roboterarms und des Transportssystems der Fräse. Es können
auch noch weitere Punkte, Linien und Kreuze gezeichnet werden.
GetAngle
werden muß, um auf dem Vektor2 zu liegen.
GetAngle_2 berechnet den Schnittwinkel zwischen Vektor 1 und Vektor 2.
68
Funktionen aus scale.c
10.1 GetScale
Pseudo MIL Funktion: GetScale
Synopsis:
Ermittelt, ob sich die Kamera verdreht oder gekippt zum Tisch befindet und errechnet den Maßstab zur
Umrechnung von Bildkoordinaten in Raumkoordinaten anhand von drei Markierungen auf dem
Arbeitstisch.
Format:
long GetScale (ColorImage, Max, Min, Color, MinBlobArea, MaxBlobArea, MaxDiffElongation,
RemoveSmallHoles, Scale2Dto3DPtr)
MIL_ID ColorImage
Quellbildidentifizierer.
long
Der Schwellenwert, ab dem das Pixel des jeweiligen
Farbbandes noch zum Blob gehört.
Der Schwellenwert, ab dem das Pixel des jeweiligen
Farbbandes nicht mehr zum Blob gehört.
Die Farbe des Farbbandes, nach dem binarisiert wird.
Die minimale Anzahl an Pixeln, ab dem ein Blob
noch berücksichtigt wird.
Die maximale Anzahl der Pixel, bis zu dem ein Blob
noch berücksichtigt wird.
Abweichung, wieviel mal größer die maximale Ausdehnung
gegenüber der minimalen Ausdehnung des Blobs betragen darf.
Anzahl der zur Glättung verwendeten Iterationen.
Speicherort des Maßstabes Scale2Dto3D.
Max
Min
Color
MinBlobArea
MaxBlobArea
MaxDiffElongation
RemoveSmallHoles
*Scale2Dto3DPtr
Beschreibung:
Diese Funktion sucht in dem durch ColorImage bekannten Bild nach drei Objekten der Farbe, die durch
den Parameter Color angegebenen wird.
Das Bild wird, wie unter MblobSeparateOneColor beschrieben, mit den Parametern Max, Min, Color
binarisiert.
Das so gewonnene Binärbild wird, wie unter MblobGetCord beschrieben, einer Blobanalyse mit den
Parametern MinBlobArea, MaxBlobArea, MaxDiffElongation und RemoveSmallHoles unterzogen.
Es werden die Elemente ausgeschlossen, deren Fläche kleiner MinBlobArea oder größer MaxBlobArea
ist. Es werden auch die Elemente ausgeschlossen, deren Verhältnis maximaler- zu minimaler Ausdehnung
MaxDiffElongation.
Bleiben genau drei Objekte übrig, werden diese Punkte auf ihre Lage geprüft.
Sind es mehr oder weniger Punkte, wird die Funktion mit dem Rückgabewert –1 verlassen.
Die Punkte sollten wie folgt auf dem Tisch angebracht sein:
• Der erste Punkt ist im Prinzip frei wählbar anzubringen, sollte jedoch so liegen, daß die andern zwei
Punkte noch im Bildausschnitt zu sehen sind.
• Der zweite Punkt sollte auf der selben X-Koordinate wie Punkt 1 liegen, jedoch im Abstand
DISTANCE_3_POINTS_SCALE. Der Wert der Y-Koordinate von Punkt 2 ist somit um
DISTANCE_3_POINTS_SCALE größer als der von Punkt 1. Der Wert von
DISTANCE_3_POINTS_SCALE wird in mm in der Header-Datei bina.h angegeben.
69
Funktionen aus scale.c
•
Der dritte Punkt sollte auf der selben Y-Koordinate wie Punkt 2 liegen, jedoch im Abstand
DISTANCE_3_POINTS_SCALE. Der Wert der X-Koordinate von Punkt 3 ist somit um
DISTANCE_3_POINTS_SCALE größer als der von Punkt 2. Der Wert von
DISTANCE_3_POINTS_SCALE wird in mm in der Header-Datei bina.h angegeben.
Prüfung TOLERANCE:
Mit TOLERANCE wird in der Header-Datei bina.h ein Toleranzwert angegeben, um den maximal der XWerte von Punkt 2 vom X-Wert von Punkt 1 als auch der Y-Werte von Punkt 2 vom Y-Wert von Punkt 3
abweichen kann.
TOLERANCE wird in mm angegeben.
Wird der Toleranzwert überschritten, gibt die Funktion eine –1 zurück.
TOLERANCE_ANGLE:
Mit TOLERANCE_ANGLE wird in der Header-Datei bina.h ein Toleranzwert angegeben, um den
maximal der Winkel, unter dem sich die Strecke Punkt 2 nach Punkt 1 mit der Strecke Punkt 2 nach Punkt 3
schneidet, von 90° abweichen darf .
Wird der Toleranzwert überschritten, gibt die Funktion eine –1 zurück
Sind jedoch die Toleranzen eingehalten, so wird von der Funktion der Maßstab zum Umrechnen von Pixel
Koordinaten (Aufnahme der Kamera) in reale Koordinaten (des Raumes) ausgerechnet.
Der Maßstab wird an die durch den Parameter Scale2Dto3DPtr angegebene Speicherstelle geschrieben, und
die Funktion wird beendet mit dem Rückgabewert 1.
Der mit ColorImage bezeichnete Parameter spezifiziert den Identifizierer des Quellbildes. Das Quellbild
muß ein 3 Band Farbbild mit jeweils 8 Bit Datentiefe pro Farbband sein.
Der mit Max bezeichnete Parameter spezifiziert den Schwellenwert für die Binarisierung des jeweiligen
Nutzanteils.
Der mit Min bezeichnete Parameter spezifiziert den Schwellenwert für die Binarisierung des jeweils zu
Der mit Color bezeichnete Parameter spezifiziert das Farbband, nach dem binarisiert werden soll.
Möglichkeiten sind hier: RED, GREEN, BLUE.
Der mit MinBlobArea bezeichnete Parameter spezifiziert die Anzahl der Pixel, die ein Blob minimal noch
haben muß, um in die Ergebnisliste aufgenommen zu werden.
Der mit MaxBlobArea bezeichnete Parameter spezifiziert die Anzahl der Pixel, die ein Blob maximal
haben darf, um in die Ergebnisliste aufgenommen zu werden.
Der mit MaxDiffElongation bezeichnete Parameter spezifiziert die Abweichung, um wieviel mal größer
die maximale Ausdehnung gegenüber der minimalen Ausdehnung des Blobs sein darf, damit dieser in der
Der mit RemoveSmallHoles bezeichnete Parameter spezifiziert die Anzahl der Iterationen, mit der die
Befehle MimOpen und MimClose ausgeführt werden.
Der mit Scale2Dto3DPtr bezeichnete Parameter spezifiziert die Adresse, an der der Maßstab gespeichert
wird. Der Maßstab, multipliziert mit der Länge der Abbildung eines Objektes, ergibt die reale Länge des
Objektes. Diese einfache Form gilt nur für Objekte, die sich auf Tischniveau befinden, wobei die Länge des
Objekts in der Abbildung in Pixel angegeben wird.
Der Maßstab wird von andern Funktionen benötigt, um die reale Länge von Objekten zu bestimmen.
Bemerkung:
Quellbild muß ein 3 Band Farbbild sein.
Angaben von Winkel in Radiant.
Diese Funktion verändert den Wert, dessen Adresse mit Scale2Dto3DPtr übergeben wurde.
70
Funktionen aus scale.c
R ückgabe:
eine
eine
1
-1
wenn die Ausführung erfolgreich war.
wenn mehr oder weniger als ein Blob gefunden wurden oder
wenn die Punkte nicht innerhalb der Toleranzen (TOLERANCE_ANGLE,
TOLERANCE) lagen .
Spezifikationen aus der Datei bina.h
Folgende Werte müssen für den Fall, daß sie verändert werden, neu in die Header-Datei bina.h eingetragen
werden. Siehe auch Header-Datei bina.h
DISTANCE_3_POINTS_SCALE,
TOLERANCE,
TOLERANCE_ANGLE
71
Funktionen aus scale.c
10.2 GetPivot
Pseudo MIL Funktion: GetPivot
Synopsis:
Ermittelt die Koordinate, die den Drehpunkt, um den sich das Schultergelenk des Roboterarms dreht,
bezeichnen.
Format:
long GetPivot (ColorImage, Max, Min, MinBlobArea, MaxBlobArea, MaxDiffElongation,
RemoveSmallHoles, Scale2Dto3D, Pivot)
MIL_ID ColorImage
Quellbildidentifizierer.
long
Der Schwellenwert, ab dem das Pixel des jeweiligen
Farbbandes noch zum Blob gehört.
Der Schwellenwert, ab dem das Pixel des jeweiligen
Farbbandes nicht mehr zum Blob gehört.
Die minimale Anzahl an Pixeln, ab dem ein Blob
noch berücksichtigt wird.
Die maximale Anzahl der Pixel, bis zu dem ein Blob
noch berücksichtigt wird.
Abweichung, wieviel mal größer die maximale Ausdehnung
gegenüber der minimalen Ausdehnung des Blobs betragen darf.
Anzahl der zur Glättung verwendeten Iterationen.
Max
Min
MinBlobArea
MaxBlobArea
MaxDiffElongation
RemoveSmallHoles
double Scale2Dto3D
*Pivot
Maßstab Scale2Dto3D wird zur Umrechnung von 2D in 3D
Koordinaten gebraucht.
Speicherort der ersten Komponente der Koordinate von drei
Komponenten, die den Drehpunkt, um den sich das
Schultergelenk des Roboterarms dreht, bezeichnen.
Insgesamt handelte es sich um ein Feld der Dimension [3].
Beschreibung:
Diese Funktion sucht in dem durch ColorImage bekannten Bild nach drei Objekten der Farbe Rot.
Das Bild wird wie unter MblobSeparateOneColor beschrieben mit den Parametern Max, Min binarisiert.
Das so gewonnene Binärbild wird nun, wie unter MblobGetCord beschrieben, einer Blobanalyse mit den
Parametern MinBlobArea, MaxBlobArea, MaxDiffElongation und RemoveSmallHoles unterzogen.
Es werden die Elemente ausgeschlossen, deren Fläche kleiner MinBlobArea oder größer MaxBlobArea
ist. Es werden auch die Elemente ausgeschlossen, deren Verhältnis maximaler- zu minimaler Ausdehnung
MaxDiffElongation.
Bleiben genau drei Objekte übrig, so wird ein Dreieck aus den Koordinaten gebildet. Die kürzeste Seite des
Dreiecks wird gesucht. Nun wird der Mittelpunkt der kürzesten Seite bestimmt. Der Mittelpunkt enspricht
dem Drehpunkt, um den sich das Schultergelenk des Roboterarms dreht.
Der mit ColorImage bezeichnete Parameter spezifiziert den Identifizierer des Quellbildes. Das Quellbild
muß ein 3 Band Farbbild mit jeweils 8 Bit Datentiefe pro Farbband sein.
72
Funktionen aus scale.c
Der mit Max bezeichnete Parameter spezifiziert den Schwellenwert für die Binarisierung des jeweiligen
Nutzanteils.
Der mit Min bezeichnete Parameter spezifiziert den Schwellenwert für die Binarisierung des jeweils zu
Der mit MinBlobArea bezeichnete Parameter spezifiziert die Anzahl der Pixel, die ein Blob minimal noch
haben muß, um in die Ergebnisliste aufgenommen zu werden.
Der mit MaxBlobArea bezeichnete Parameter spezifiziert die Anzahl der Pixel, die ein Blob maximal
haben darf, um in die Ergebnisliste aufgenommen zu werden.
Der mit MaxDiffElongation bezeichnete Parameter spezifiziert die Abweichung, wieviel mal größer die
maximale Ausdehnung gegenüber der minimalen Ausdehnung des Blobs betragen darf, um noch in der
Ergebnisliste berücksichtigt zu werden.
Der mit RemoveSmallHoles bezeichnete Parameter spezifiziert die Anzahl der Iterationen, mit der die
Befehle MimOpen und MimClose ausgeführt werden.
Der mit Scale2Dto3D bezeichnete Parameter spezifiziert den Maßstab. Der Maßstab, multipliziert mit der
Länge der Abbildung eines Objektes, ergibt die reale Länge des Objektes. Diese einfache Form gilt nur für
Objekte, die sich auf Tischniveau befinden, wobei die Länge des Objekts in der Abbildung in Pixel
angegeben wird. Der Maßstab wird benötigt, um die reale Länge von Objekten zu bestimmen.
Der mit Pivot bezeichnete Parameter spezifiziert die Adresse der ersten von drei Komponenten der
Koordinate, die den Drehpunkt, um den sich das Schultergelenk des Roboterarms dreht, bezeichnet.
Bemerkung:
Quellbild muß ein 3 Band Farbbild sein.
Quellbild mu ßden Roboterarm bei ausgestrecktem Arm zeigen. Das hei ßt, sowohl der Unterarm als
auch der Oberarm des Roboterarms sind parallel zur Tischebene.
Diese Funktion verändert die drei Werte der Raumkoordinate, wobei die Adresse der ersten Komponente
mit dem Parameter Pivot übergeben wurde.
R ückgabe:
eine
eine
1
-1
wenn die Ausführung erfolgreich war.
wenn die Ausführung nicht erfolgreich war.
Spezifikationen aus der Datei bina.h
Folgende Werte müssen für den Fall, daß sie verändert werden, neu in die Header-Datei bina.h eingetragen
werden. Siehe auch Header-Datei bina.h
SHOULDER_HEIGHT
73
Funktionen aus scale.c
10.3 GetPivotPlusLength
Pseudo MIL Funktion: GetPivotPlusLength
Synopsis:
Ermittelt die Koordinate, die den Drehpunkt, um den sich das Schultergelenk des Roboterarms dreht,
bezeichnen. Zusätzlich wird die Länge des Ober- und Unterarms berechnet.
Format:
long GetPivotPlusLength (ColorImage, Max, Min, MinBlobArea, MaxBlobArea, MaxDiffElongation,
RemoveSmallHoles, Scale2Dto3D, Length1, Length2, Pivot)
MIL_ID ColorImage
Quellbildidentifizierer.
long
Der Schwellenwert, ab dem das Pixel des jeweiligen
Farbbandes noch zum Blob gehört.
Der Schwellenwert, ab dem das Pixel des jeweiligen
Farbbandes nicht mehr zum Blob gehört.
Die minimale Anzahl an Pixeln, ab dem ein Blob
noch berücksichtigt wird.
Die maximale Anzahl der Pixel, bis zu dem ein Blob
noch berücksichtigt wird.
Abweichung, wieviel mal größer die maximale Ausdehnung
gegenüber der minimalen Ausdehnung des Blobs betragen darf.
Anzahl der zur Glättung verwendeten Iterationen.
Max
Min
MinBlobArea
MaxBlobArea
MaxDiffElongation
RemoveSmallHoles
double Scale2Dto3D
*Length1
*Length2
*Pivot
Maßstab Scale2Dto3D wird zur Umrechnung von 2D in 3D
Koordinaten gebraucht.
Speicherort der Länge des Oberarms des Roboterarms.
Speicherort der Länge des Unterarms des Roboterarms.
Speicherort der ersten Komponente der Koordinate von drei
Komponenten, die den Drehpunkt, um den sich das
Schultergelenk des Roboterarms dreht, bezeichnen.
Insgesamt handelte es sich um ein Feld der Dimension [3].
Beschreibung:
Diese Funktion sucht in dem durch ColorImage bekannten Bild nach vier Objekten. Ein Objekt hat die
Farbe Grün drei Objekte die Farbe Rot.
Das Bild wird, wie unter MblobSeparateOneColor beschrieben, mit den Parametern Max, Min für beide
Farben binarisiert.
Die so gewonnenen Binärbilder werden nun, wie unter MblobGetCord beschrieben, einer Blobanalyse mit
den Parametern MinBlobArea, MaxBlobArea, MaxDiffElongation und RemoveSmallHoles unterzogen.
Es werden die Elemente ausgeschlossen, deren Fläche kleiner MinBlobArea oder größer MaxBlobArea
ist. Es werden auch die Elemente ausgeschlossen, deren Verhältnis maximaler- zu minimaler Ausdehnung
MaxDiffElongation.
Bleiben genau drei rote Objekte übrig, so wird ein Dreieck aus den Koordinaten gebildet. Die kürzeste Seite
des Dreiecks wird gesucht. Nun wird der Mittelpunkt der kürzesten Seite bestimmt. Der Mittelpunkt
entspricht dem Drehpunkt, um den sich das Schultergelenk des Roboterarms dreht.
74
Funktionen aus scale.c
Von diesem Drehpunkt aus wird nun die Länge bis zum grünen Punkt bestimmt. Diese Distanz entspricht
(Length1).
Vom grünen Punkt aus wird die Länge bis zu dem roten Punkt bestimmt, der am weitesten vom Mittelpunkt
entfernt liegt. Diese Distanz entspricht der Länge des Unterarms (Length2).
Der mit ColorImage bezeichnete Parameter spezifiziert den Identifizierer des Quellbildes. Das Quellbild
muß ein 3 Band Farbbild mit jeweils 8 Bit Datentiefe pro Farbband sein.
Der mit Max bezeichnete Parameter spezifiziert den Schwellenwert für die Binarisierung des jeweiligen
Nutzanteils.
Der mit Min bezeichnete Parameter spezifiziert den Schwellenwert für die Binarisierung des jeweils zu
Der mit MinBlobArea bezeichnete Parameter spezifiziert die Anzahl der Pixel, die ein Blob minimal noch
haben muß, um in die Ergebnisliste aufgenommen zu werden.
Der mit MaxBlobArea bezeichnete Parameter spezifiziert die Anzahl der Pixel, die ein Blob maximal
haben darf, um in die Ergebnisliste aufgenommen zu werden.
Der mit MaxDiffElongation bezeichnete Parameter spezifiziert die Abweichung, wieviel mal größer die
maximale Ausdehnung gegenüber der minimalen Ausdehnung des Blobs betragen darf, um noch in der
Ergebnisliste berücksichtigt zu werden.
Der mit RemoveSmallHoles bezeichnete Parameter spezifiziert die Anzahl der Iterationen, mit der die
Befehle MimOpen und MimClose ausgeführt werden.
Der mit Scale2Dto3D bezeichnete Parameter spezifiziert den Maßstab. Der Maßstab, multipliziert mit der
Länge der Abbildung eines Objektes, ergibt die reale Länge des Objektes. Diese einfache Form gilt nur für
Objekte, die sich auf Tischniveau befinden, wobei die Länge des Objekts in der Abbildung in Pixeln
angegeben wird. Der Maßstab wird benötigt, um die reale Länge von Objekten zu bestimmen.
Der mit Lengt1 bezeichnete Parameter spezifiziert die Adresse, an der die Länge des Oberarms des
Roboterarms gespeichert wird.
Der mit Lengt2 bezeichnete Parameter spezifiziert die Adresse, an der die Länge des Unterarms des
Roboterarms gespeichert wird.
Der mit Pivot bezeichnete Parameter spezifiziert die Adresse der ersten von drei Komponenten der
Koordinate, die den Drehpunkt, um den sich das Schultergelenk des Roboterarms dreht, bezeichnet.
Bemerkung:
Quellbild muß ein 3 Band Farbbild sein.
Quellbild mu ßden Roboterarm bei ausgestrecktem Arm zeigen. Das hei ßt sowohl der Unterarm als
auch der Oberarm des Roboterarms sind parallel zur Tischebene.
Diese Funktion verändert die drei Werte der Raumkoordinate, wobei die Adresse der ersten Komponente
mit dem Parameter Pivot übergeben wurde.
Diese Funktion verändert den Wert, dessen Adresse mit Length1 übergeben wurde.
Diese Funktion verändert den Wert, dessen Adresse mit Length2 übergeben wurde.
R ückgabe:
eine
eine
1
-1
wenn die Ausführung erfolgreich war.
wenn die Ausführung nicht erfolgreich war.
Spezifikationen aus der Datei bina.h
Folgende Werte müssen für den Fall, daß sie verändert werden, neu in die Header-Datei bina.h eingetragen
werden. Siehe auch Header-Datei bina.h
SHOULDER_HEIGHT
75
Funktionen aus scale.c
10.4 ProToReal
Funktion: ProToReal
Synopsis:
Diese Funktion berechnet aus den 2D Koordinaten der Abbildung und unter Angabe der Höhe die 3D
Koordinaten.
Format:
long ProToReal (PosX, PosY, Height, Scale2Dto3D, Point)
long
PosX
PosY
double Height
Scale2Dto3D
*Point
Der Schwellenwert, ab dem das Pixel des jeweiligen
Farbbandes noch zum Blob gehört.
Der Schwellenwert, ab dem das Pixel des jeweiligen
Farbbandes nicht mehr zum Blob gehört.
Höhe des Objekts über dem Tisch.
Maßstabes Scale2Dto3D wird zur Umrechnung von 2D in 3D
Koordinaten gebraucht.
Speicherort der ersten Komponente der Koordinate von drei
Komponenten, die den zu berechnenden Punkt bezeichnen.
Insgesamt handelte es sich um ein Feld der Dimension [3].
Beschreibung:
Berechnet aus den Bildkoordinaten und der Höhe über dem Tisch die realen Raumkoordinaten.
Der mit PosX bezeichnete Parameter spezifiziert die Bildkoordinate in Richtung der X-Achse des zu
berechnenden Punkts im Bild. Die Angabe erfolgt in Pixeln.
Der mit PosY bezeichnete Parameter spezifiziert die Bildkoordinate in Richtung der Y-Achse des zu
berechnenden Punkts im Bild. Die Angabe erfolgt in Pixeln.
Der mit Height bezeichnete Parameter spezifiziert die Höhe des zu berechnenden Punkts über der
Tischplatte. Die Angabe erfolgt in Millimeter. Man kann auch sagen, Height spezifiziert die dritte
Komponente des zu berechnenden Punkts.
Der mit Scale2Dto3D bezeichnete Parameter spezifiziert den Maßstab. Der Maßstab, multipliziert mit der
Länge der Abbildung eines Objektes, ergibt die reale Länge des Objektes. Diese einfache Form gilt nur für
Objekte, die sich auf Tischniveau befinden, wobei die Länge des Objekts in der Abbildung in Pixel
angegeben wird. Der Maßstab wird benötigt, um die reale Länge von Objekten zu bestimmen.
Der mit Point bezeichnete Parameter spezifiziert die Adresse der ersten von drei Komponenten der
Koordinate, die den zu berechnenden Punkt bezeichnen.
Bemerkung:
Diese Funktion verändert die drei Werte der Raumkoordinate, wobei die Adresse der ersten Komponente
mit dem Parameter Point übergeben wurde.
R ückgabe:
eine
eine
1
-1
wenn die Ausführung erfolgreich war.
wenn die Ausführung nicht erfolgreich war.
76
Funktionen aus scale.c
Spezifikationen aus der Datei bina.h
Folgende Werte müssen für den Fall, daß sie verändert werden, neu in die Header-Datei bina.h eingetragen
werden. Siehe auch Header-Datei bina.h
CAMERA_RES_X_SIZE,
CAMERA_RES_Y_SIZE,
CAMERA_HEIGHT
77
Funktionen aus scale.c
10.5 GetPointOfRobot
Funktion: GetPointOfRobot
Synopsis:
Berechnet die Koordinaten eines Punkts Punkt4, der auf einem Vektor liegt. Dieser Vektor ist durch die
Punkte Punkt1 und Punkt2 definiert. Es ist noch die Koordinate von Punkt3 gegeben. Ferner ist noch der
Abstand Length des Punktes4 zu dem Punkt3 bekannt.
Da es zwei Lösungen gibt, wird mit Hilfe von Angle betrachtet, welche Lösung besser ist.
Format:
long GetPointOfRobot (Point1, Point2, Point3, Point4, Length, Angle)
double *Point1
*Point2
*Point3
*Point4
Length
Angle
Speicherort der ersten Komponente der Koordinate von drei
Komponenten, die den Punkt1 bezeichnen.
Insgesamt handelte es sich um ein Feld der Dimension [3].
Speicherort der ersten Komponente der Koordinate von drei
Komponenten, die den Punkt2 bezeichnen.
Insgesamt handelte es sich um ein Feld der Dimension [3].
Speicherort der ersten Komponente der Koordinate von drei
Komponenten, die den Punkt3 bezeichnen.
Insgesamt handelte es sich um ein Feld der Dimension [3].
Speicherort der ersten Komponente der Koordinate von drei
Komponenten, die den zu berechnenden Punkt4 bezeichnen.
Insgesamt handelte es sich um ein Feld der Dimension [3].
Die Läge der Strecke von Punkt3 nach Punkt4.
Der Winkel, um den der Vektor (von Punkt3 nach Punkt4) im
mathematisch positiven Sinn gedreht werden muß, um auf dem
X- Schenkel des Koordinatensystems zu liegen.
Angaben von Winkeln in Radiant.
Beschreibung:
Diese Funktion findet ihren Einsatz z.B. dann, wenn die Koordinaten des Roboterarms berechnet werden.
Diese Funktion liefert z.B. die Raumkoordinate Ellenbogen Roboterarm (Punkt4), wenn folgende Werte
angegeben werde:
Punkt1 die Kameraposition.
Punkt2 der Punkt, an dem der Sehstrahl Kamera Ellebogen (Punkt4) auf die Tischplatte treffen würde.
Punkt3 der Drehpunkt, um den sich das Schultergelenk des Roboterarms dreht.
Length die Läge des Oberarms (Strecke Schultergelenk –Ellenbogen).
Da es für diese Aufgabenstellung zwei Lösungen gibt, wird mit der Angabe Angle die Lösung bevorzugt,
bei der der Oberarm genauer unter dem mit Angle angegebenen Winkel zu liegen kommt.
Vergleiche Funktion GetPointOfRobot_2.
Der mit Point1 bezeichnete Parameter spezifiziert die Adresse der ersten von drei Komponenten der
Koordinate, die den Punkt1 bezeichnen.
Der mit Point2 bezeichnete Parameter spezifiziert die Adresse der ersten von drei Komponenten der
Koordinate, die den Punkt2 bezeichnen.
78
Funktionen aus scale.c
Der mit Point3 bezeichnete Parameter spezifiziert die Adresse der ersten von drei Komponenten der
Koordinate, die den Punkt3 bezeichnen.
Der mit Point4 bezeichnete Parameter spezifiziert die Adresse der ersten von drei Komponenten der
Koordinate, die den zu berechnenden Punkt4 bezeichnen.
Der mit Length bezeichnete Parameter spezifiziert die Länge der Strecke von Punkt nach Punkt4.
Der mit Angle bezeichnete Parameter spezifiziert den Winkel ,um den der Vektor (von Punkt3 nach
Punkt4) im mathematisch positiven Sinn gedreht werden muß, um auf dem X- Schenkel des
Koordinatensystems zu liegen. Angaben von Winkeln in Radiant.
Bemerkung:
Diese Funktion verändert die drei Werte der Raumkoordinate, wobei die Adresse der ersten Komponente
mit dem Parameter Point4 übergeben wurde.
Angaben von Winkeln in Radiant.
R ückgabe:
eine
eine
1
-1
wenn die Ausführung erfolgreich war.
wenn Punkt1 auf Punkt2 liegt oder wenn Length =0 ist.
79
Funktionen aus scale.c
10.6 GetPointOfRobot_2
Funktion: GetPointOfRobot_2
Synopsis:
Berechnet die Koordinaten eines Punkts Punkt4, der auf einem Vektor liegt. Dieser Vektor ist durch die
Punkte Punkt1 und Punkt2 definiert. Es ist noch die Koordinate von Punkt3 gegeben. Ferner ist noch der
Abstand Length des Punktes4 zu dem Punkt3 bekannt.
Es gibt zwei Lösungen.
Format:
long GetPointOfRobot_2 (Point1, Point2, Point3, Point4_A, Point4_B, Length)
double *Point1
*Point2
*Point3
*Point4_A
*Point4_B
Length
Speicherort der ersten Komponente der Koordinate von drei
Komponenten, die den Punkt1 bezeichnen.
Insgesamt handelte es sich um ein Feld der Dimension [3].
Speicherort der ersten Komponente der Koordinate von drei
Komponenten, die den Punkt2 bezeichnen.
Insgesamt handelte es sich um ein Feld der Dimension [3].
Speicherort der ersten Komponente der Koordinate von drei
Komponenten, die den Punkt3 bezeichnen.
Insgesamt handelte es sich um ein Feld der Dimension [3].
Speicherort der ersten Komponente der Koordinate von drei
Komponenten, die den zu berechnenden Punkt4 bezeichnen.
Insgesamt handelte es sich um ein Feld der Dimension [3].
Lösung Nr. 1
Speicherort der ersten Komponente der Koordinate von drei
Komponenten, die den zu berechnenden Punkt4 bezeichnen.
Insgesamt handelte es sich um ein Feld der Dimension [3].
Lösung Nr. 2
Die Läge der Strecke von Punkt3 nach Punkt4.
Beschreibung:
Diese Funktion findet ihren Einsatz z.B. dann, wenn die Koordinaten des Roboterarms berechnet werden.
Diese Funktion liefert z.B. die Raumkoordinate Ellenbogen Roboterarm (Punkt4), wenn folgende Werte
angegeben werde:
Punkt1 die Kameraposition
Punkt2 der Punkt, an dem der Sehstrahl Kamera Ellebogen (Punkt4) auf die Tischplatte treffen würde.
Punkt3 der Drehpunkt, um den sich das Schultergelenk des Roboterarms dreht.
Length die Läge des Oberarms (Strecke Schultergelenk –Ellenbogen).
Da es auf diese Aufgabenstellung zwei Lösungen gibt, werden beide Lösungen mit Punkt4_A und Punk4_B
Vergleiche Funktion GetPointOfRobot.
Der mit Point1 bezeichnete Parameter spezifiziert die Adresse der ersten von drei Komponenten der
Koordinate, die den Punkt1 bezeichnen.
Der mit Point2 bezeichnete Parameter spezifiziert die Adresse der ersten von drei Komponenten der
Koordinate, die den Punkt2 bezeichnen.
80
Funktionen aus scale.c
Der mit Point3 bezeichnete Parameter spezifiziert die Adresse der ersten von drei Komponenten der
Koordinate, die den Punkt3 bezeichnen.
Der mit Point4_A bezeichnete Parameter spezifiziert die Adresse der ersten von drei Komponenten der
Koordinate, die den zu berechnenden Punkt4 bezeichnen. Lösung Nummer eins von zwei möglichen
Der mit Point4_B bezeichnete Parameter spezifiziert die Adresse der ersten von drei Komponenten der
Koordinate, die den zu berechnenden Punkt4 bezeichnen. Lösung Nummer zwei von zwei möglichen
Lösungen.
Der mit Length bezeichnete Parameter spezifiziert die Länge der Strecke von Punkt nach Punkt4.
Bemerkung:
Diese Funktion verändert die drei Werte der Raumkoordinate, wobei die Adresse der ersten Komponente
mit dem Parameter Point4_A übergeben wurde
Diese Funktion verändert die drei Werte der Raumkoordinate, wobei die Adresse der ersten Komponente
mit dem Parameter Point4_B übergeben wurde
R ückgabe:
eine
eine
1
-1
wenn die Ausführung erfolgreich war.
wenn Punkt1 auf Punkt2 liegt.
81
Funktionen aus scale.c
10.7 GetRobotCord
Funktion: GetRobotCord
Synopsis:
Berechnet die Koordinaten der vier Punkte im Raum, die auf dem Roboterarm angebracht sind.
Format:
double GetRobotCord (ProCord, RealCord, CameraCord, Length1, Length2, Scale2Dto3D, Pivot)
long
*ProCord
double *RealCord
*CameraCord
Scale2Dto3D
Length1
Length2
Scale2Dto3D
*Pivot
Speicherort der ersten Komponente der ersten Koordinate.
Insgesamt handelte es sich um ein Feld der Dimension [4][2].
Es sind die vier Koordinaten (jeweils X-, Y- Komponente) der
Punkte, die in der Aufnahme des Roboterarms zu finden sind.
Speicherort der ersten Komponente der ersten Koordinate.
Insgesamt handelte es sich um ein Feld der Dimension [4][3].
Es sind die vier Raumkoordinaten (jeweils X-, Y-, ZKomponente) der Punkte, die auf dem Roboterarm aufgebracht
sind.
Speicherort der ersten Komponente der Koordinate von drei
Komponenten, die die Lage der Kamera beschreiben.
Insgesamt handelte es sich um ein Feld der Dimension [3].
Maßstabes Scale2Dto3D wird zur Umrechnung von 2D in 3D
Koordinaten gebraucht.
Länge des Oberarms des Roboterarms.
Länge des Unterarms des Roboterarms.
Maßstabes Scale2Dto3D wird zur Umrechnung von 2D in 3D
Koordinaten gebraucht.
Speicherort der ersten Komponente der Koordinate von drei
Komponenten, die den Drehpunkt um den sich das
Schultergelenk des Roboterarms dreht, bezeichnen.
Insgesamt handelte es sich um ein Feld der Dimension [3].
Beschreibung:
Diese Funktion liefert die Raumkoordinaten für die Punkte, die auf dem Roboterarm aufgebracht sind.
Dabei müssen die Koordinaten der Abbildung (ab Adresse ProCord) in der Reihenfolge roter Punkt, roter
Punkt, grüner Punkt, roter Punkt übergeben werden, wobei die Positionen der roten Punkte untereinander
beliebig sind.
In den Speicherplätzen ab der Adresse RealCord bekommt man dann die Raumkoordinaten in der nun
sortierten Reihenfolge:
P1 (rot), P2 (rot), P3 (grün), P4 (rot)
Pivot = Schultergelenk
P3 = Ellbogen
P4 = Handgelenk
P1 = Markierung dreht sich mit Schultergelenk
P2 = Markierung dreht sich mit Schultergelenk
82
Funktionen aus scale.c
O (P1)rot
|
(P4)rot
(P3)grün
|
O-----------O---------------O (Pivot)
Länge
Länge
|
Oberarm
Unterarm
|
O (P2)rot
Abbildung 48: Bezeichnung der Punkte auf dem
Roboterarm
Der mit ProCord bezeichnete Parameter spezifiziert die Adresse der ersten Komponente der ersten
Koordinate. Insgesamt handelte es sich um ein Feld der Dimension [4][2]. Es sind die vier Koordinaten
(jeweils X-, Y- Komponente) der Punkte, die in der Aufnahme des Roboterarms zu finden sind.
Der mit RealCord bezeichnete Parameter spezifiziert die Adresse der ersten Komponente der ersten
Koordinate. Insgesamt handelte es sich um ein Feld der Dimension [4][3]. Es sind die vier
Raumkoordinaten (jeweils X-, Y-, Z- Komponente) der Punkte, die auf dem Roboterarm aufgebracht sind.
Der mit CameraCord bezeichnete Parameter spezifiziert die Adresse der ersten von drei Komponenten der
Koordinate, die den Punkt3 bezeichnen.
Der mit Scale2Dto3D bezeichnete Parameter spezifiziert den Maßstab. Der Maßstab, multipliziert mit der
Länge der Abbildung eines Objektes, ergibt die reale Länge des Objektes. Diese einfache Form gilt nur für
Objekte, die sich auf Tischniveau befinden, wobei die Länge des Objekts in der Abbildung in Pixel
angegeben wird. Der Maßstab wird benötigt, um die reale Länge von Objekten zu bestimmen.
Der mit Lengt1 bezeichnete Parameter spezifiziert die Länge des Oberarms des Roboterarms.
Der mit Lengt2 bezeichnete Parameter spezifiziert die Länge des Unterarms des Roboterarms.
Der mit Pivot bezeichnete Parameter spezifiziert die Adresse der ersten von drei Komponenten der
Koordinate, die den Drehpunkt, um den sich das Schultergelenk des Roboterarms dreht, bezeichnet.
Bemerkung:
Diese Funktion verändert die Werte der Raumkoordinaten, wobei die Adresse der ersten Komponente mit
dem Parameter RealCord übergeben wurde.
R ückgabe:
Angle
eine
-1
Der Winkel, um den der Vektor (von Drehpunkt des Roboterarms zur Spitze des
Oberarms) im mathematisch positiven Sinn gedreht werden muß, um auf dem XSchenkel des Koordinatensystems zu liegen. Angaben von Winkeln in Radiant.
wenn die Ausführung nicht erfolgreich war.
83
Funktionen aus scale.c
10.8 GetCarriageCord
Funktion: GetCarriageCord
Synopsis:
Berechnet aus den Koordinaten der beiden Punkte, die auf der Transporteinrichtung der Fräse geklebt sind,
die Raumkoordinaten, die die Transporteinrichtung beschreiben.
Format:
double GetCarriageCord (ProCordP1, ProCordP2, RealCord, HeightX5, Scale2Dto3D)
long
*ProCordP1
*ProCordP2
double *RealCord
*CameraCord
HeightX5
Scale2Dto3D
Speicherort der ersten Komponente der Koordinate von zwei
Komponenten, die die Lage des Punkt1 beschreiben.
Insgesamt handelte es sich um ein Feld der Dimension [2].
Speicherort der ersten Komponente der Koordinate von zwei
Komponenten, die die Lage des Punkt2 beschreiben.
Insgesamt handelte es sich um ein Feld der Dimension [2].
Speicherort der ersten Komponente der ersten Koordinate.
Insgesamt handelte es sich um ein Feld der Dimension [5][3].
Es sind die fünf Raumkoordinaten (jeweils X-, Y-, ZKomponente), die das Transportsystem der Fräse beschreiben.
Speicherort der ersten Komponente der Koordinate von drei
Komponenten, die die Lage der Kamera beschreiben.
Insgesamt handelte es sich um ein Feld der Dimension [3].
Abstand der Aufnahme des Fräskopf (PunktX5) von Tisch.
Maßstabes Scale2Dto3D wird zur Umrechnung von 2D in 3D.
Beschreibung:
Berechnet aus den Koordinaten der beiden Punkte, die auf der Transporteinrichtung der Fräse geklebt sind,
die Raumkoordinaten, die die Transporteinrichtung beschreiben. Diese errechneten Koordinaten sind in
dem Format, daß sie von DrawScene benutzt werden können.
Der mit ProCordP1 bezeichnete Parameter spezifiziert die Adresse der ersten Komponente der Koordinate
von zwei Komponenten, die den Punkt1 bezeichnen.
Der mit ProCordP2 bezeichnete Parameter spezifiziert die Adresse der ersten Komponente der Koordinate
von zwei Komponenten, die den Punkt2 bezeichnen.
Der mit RealCord bezeichnete Parameter spezifiziert die Adresse der ersten Komponente der ersten
Koordinate. Insgesamt handelte es sich um ein Feld der Dimension [5][3]. Es sind die fünf
Raumkoordinaten (jeweils X-, Y-, Z- Komponente), die das Transportsystem der Fräse beschreiben.
Der mit CameraCord bezeichnete Parameter spezifiziert die Adresse der ersten von drei Komponenten der
Koordinate, die den Punkt3 bezeichnen.
Der mit Lengt1 bezeichnete Parameter spezifiziert den Abstand der Aufnahme des Fräskopf (PunktX5) von
Tisch.
Der mit HeightX5 bezeichnete Parameter spezifiziert den Maßstab. Der Maßstab, multipliziert mit der
Länge der Abbildung eines Objektes, ergibt die reale Länge des Objektes. Diese einfache Form gilt nur für
Objekte, die sich auf Tischniveau befinden, wobei die Länge des Objekts in der Abbildung in Pixel
angegeben wird. Der Maßstab wird benötigt um die reale Länge von Objekten zu bestimmen.
84
Funktionen aus scale.c
Bemerkung:
Diese Funktion verändert die Werte der Raumkoordinaten, wobei die Adresse der ersten Komponente mit
dem Parameter RealCord übergeben wurde.
R ückgabe:
eine
eine
1
-1
wenn die Ausführung erfolgreich war.
wenn die Ausführung nicht erfolgreich war.
85
Funktionen aus scale.c
10.9 DrawScene
Pseudo MIL Funktion: DrawScene
Synopsis:
Zeichnet eine dreidimensionale Szene auf den Bildschirm.
Format:
long DrawScene (DestImage, ColorImage, MaxDim, CordPoint, NumPoint, CordCross, NumCross,
CordLine, NumLine, Carriage, CarriageSelectFrame, Cord2dCross, Num2dCross)
MIL_ID DestImage
ColorImage
double *MaxDim
double *CordPoint
long
NumPoint
double *CordCross
long
NumCross
Zielbildidentifizierer bezeichnet das Bild, in das die
Darstellung gezeichnet wird.
Quellbildidentifizierer bezeichnet das Bild, das in der oberen
rechten Ecke der Darstellung eingeblendet wird.
Speicherort der ersten Komponente der Koordinate von drei
Komponenten. Die Koordinate bezeichnet die maximal noch
abzubildende Koordinate.
Die Funktion paßt die einzelnen Fenster entsprechend an.
Speicherort der ersten Komponente der ersten Koordinate.
Pro Koordinate werden jeweils drei Komponenten (X,Y,Z)
abgelegt.
CordPoint[][3]
Pro Koordinate wird ein Punkt gezeichnet.
Insgesamt werden so viele Koordinaten ausgelesen, wie mit
dem Parameter NumPoint angegeben werden.
Bestimmt die Anzahl der Punkte, die ausgegeben werden.
Speicherort der ersten Komponente der ersten Koordinate.
Pro Koordinate werden jeweils drei Komponenten (X,Y,Z)
abgelegt.
CordCross[][3]
Pro Koordinate wird ein Kreuz gezeichnet.
Insgesamt werden so viele Koordinaten ausgelesen, wie mit
dem Parameter NumCross angegeben werden.
Bestimmt die Anzahl der Kreuze, die ausgegeben werden.
double *CordLine
Speicherort der ersten Komponente des ersten
Koordinatenpaares.
Pro Koordinatenpaar werden jeweils sechs Komponenten
(X,Y,Z)Anfangspunkt und (X,Y,Z)Endpunkt abgelegt.
CordLine[][2][3]
Pro Koordinatenpaar wird eine Linie gezeichnet.
Insgesamt werden so viele Koordinatenpaare ausgelesen, wie
mit dem Parameter NumLine angegeben werden.
long
Bestimmt die Anzahl der Linien, die ausgegeben werden.
NumLine
86
Funktionen aus scale.c
double Carriage
Speicherort der ersten Komponente der ersten Koordinate.
Insgesamt handelte es sich um ein Feld der Dimension [5][3].
Es sind die fünf Raumkoordinaten (jeweils X-, Y-, ZKomponente), die das Transportsystem der Fräse beschreiben.
long
Bestimmt ,ob und in welchem Fenster das Transportsystem
gezeichnet wird.
CarriageSelectFrame
double *Cord2dCross
long
Num2dCross
Speicherort der ersten Komponente der ersten Koordinate.
Pro Koordinate werden jeweils zwei Komponenten (X,Y)
abgelegt.
Cord2dCross[][2]
Pro Koordinate wird ein Kreuz in die zweidimensionale
Abbildung in der oberen rechten Ecke gezeichnet.
Insgesamt werden so viele Koordinaten ausgelesen, wie mit
dem Parameter Num2dCross angegeben werden.
Bestimmt die Anzahl der Kreuze, die ausgegeben werden.
Beschreibung:
Diese Funktion dient der schematischen Darstellung des Roboterarms und des Transportssystems der Fräse.
Jedoch können auch noch weitere Punkte, Linien und Kreuze gezeichnet werden.
Das Zielbild ist ein 8 Bit 1 Band Grauwertbild. Das Zielbild DestImage wird entsprechend seiner Größe
und den Angaben der maximal darzustellenden Koordinate in vier Frames unterteilt.
Abbildung 49: Bezeichnung der Koordinatenachsen in den Frames
87
Funktionen aus scale.c
In Frame 4 wird das Farbbild, das mit ColorImage übergeben wird, dargestellt.
In Frame 1 die X und Y-Komponente.
In Frame 2 die X und Z-Komponente.
In Frame 3 die Y und Z-Komponente.
Abbildung 50: Darstellung des Roboters in den Frames
Mit den jeweils übergebenen Komponenten werden in den Frames Punkte, Kreuze oder Linien gezeichnet.
Es können auch schematisch die Fräse und die Transporteinrichtung der Fräse dargestellt werden.
88
Funktionen aus scale.c
Abbildung 51: Darstellung der Fräse in den Frames
Die Koordinaten werden ab der Adresse, die durch den Parameter Carriage übergeben wird, in der
Reihenfolge X1, X2, X3, X4, X5 abgelegt. Jede Koordinate mit drei Komponenten X,Y,Z.
CarriageSelectFrame bestimmt, in welchem der Frames das Transportsystem gezeichnet werden soll. Soll
kein Transportsystem gezeichnet werden, ist hier eine 0 zu übergeben.
Die folgende Tabelle gibt Aufschluß, wann welcher Frame gezeichnet wird.
CarriageSelectFrame Frame1 Frame2 Frame3
0
nein
nein
nein
1
ja
nein
nein
2
nein
ja
nein
3
ja
ja
nein
4
nein
nein
ja
5
ja
nein
ja
6
nein
ja
ja
7
ja
ja
ja
Tabelle 6
Ja bedeutet: In dem entsprechenden Frame wird das Transportsystem gezeichnet.
Nein bedeutet: In dem entsprechenden Frame wird das Transportsystem nicht gezeichnet.
Der mit ColorImage bezeichnete Parameter spezifiziert den Identifizierer des Quellbildes. Das Quellbild
muß ein 3 Band Farbbild mit jeweils 8 Bit Datentiefe pro Farbband sein. Dieses Bild wird in die obere
rechte Ecke (Frame 4) von DestImage als Graustufenbild gezeichnet.
89
Funktionen aus scale.c
Der mit DestImage bezeichnete Parameter spezifiziert den Identifizierer des Zielbildes. Das Zielbild muß
ein 1 Band Grauwertbild mit 8 Bit Datentiefe sein. In diesem Bild wird die schematische Darstellung des
Roboterarms und der Fräse gezeichnet.
Der mit MaxDim bezeichnete Parameter spezifiziert die Adresse der ersten Komponente der Koordinate
von drei Komponenten. Die Koordinate bezeichnet die maximal noch abzubildende Koordinate.
Die Funktion paßt die einzelnen Fenster entsprechend an.
Der mit CordPoint bezeichnete Parameter spezifiziert die Adresse der ersten Komponente der ersten
Koordinate. Pro Koordinate werden jeweils drei Komponenten (X,Y,Z) abgelegt.
Die Dimension des Feldes ist: CordPoint[][3]
Pro Koordinate wird ein Punkt gezeichnet.
Insgesamt werden so viele Koordinaten ausgelesen, wie mit dem Parameter NumPoint angegeben werden.
Der mit NumPoint bezeichnete Parameter spezifiziert die Anzahl der Punkte, die ausgegeben werden.
Der mit CordCross bezeichnete Parameter spezifiziert die Adresse der ersten Komponente der ersten
Koordinate. Pro Koordinate werden jeweils drei Komponenten (X,Y,Z) abgelegt.
Die Dimension des Feldes ist: CordCross[][3]
Pro Koordinate wird ein Kreuz gezeichnet.
Insgesamt werden so viele Koordinaten ausgelesen, wie mit dem Parameter NumCross angegeben werden.
Der mit NumCross bezeichnete Parameter spezifiziert die Anzahl der Kreuze, die ausgegeben werden.
Der mit CordLine bezeichnete Parameter spezifiziert die Adresse der ersten Komponente des ersten
Koordinatenpaares. Pro Koordinatenpaar werden jeweils sechs Komponenten ((X,Y,Z) Anfangspunkt und
(X,Y,Z) Endpunkt) abgelegt.
Die Dimension des Feldes ist: CordLine[][2][3]
Pro Koordinatenpaar wird eine Linie gezeichnet.
Insgesamt werden so viele Koordinatenpaare ausgelesen, wie mit dem Parameter NumLine angegeben Der
mit NumLine bezeichnete Parameter spezifiziert die Anzahl der Linien, die ausgegeben werden.
Der mit Carriage bezeichnete Parameter spezifiziert die Adresse der ersten Komponente der ersten
Koordinate. Insgesamt handelte es sich um ein Feld der Dimension [5][3]. Es sind dies die fünf
Raumkoordinaten (jeweils X-, Y-, Z- Komponente), die das Transportsystem der Fräse beschreiben.
Der mit CarriageSelect bezeichnete Parameter spezifiziert, ob und in welchem Fenster das
Transportsystem gezeichnet wird.
Der mit Cord2dCross bezeichnete Parameter spezifiziert die Adresse der ersten Komponente der ersten
Koordinate. Pro Koordinate werden jeweils zwei Komponenten (X,Y) abgelegt.
Die Dimension des Feldes ist: Cord2dCross[][2]
Pro Koordinate wird ein Kreuz in die zweidimensionale Abbildung in der oberen rechten Ecke gezeichnet.
Insgesamt werden so viele Koordinaten ausgelesen, wie mit dem Parameter Num2dCross angegeben
werden.
Der mit Num2dCross bezeichnete Parameter spezifiziert die Anzahl der Kreuze, die ausgegeben werden.
R ückgabe:
eine
eine
1
-1
wenn die Ausführung erfolgreich war.
wenn die Ausführung nicht erfolgreich war.
90
Funktionen aus scale.c
10.10 GetAngle
Funktion: GetAngle
Synopsis:
Berechnet den Winkel, um den der Vektor1 im mathematisch positiven Sinn gedreht werden muß, um auf
dem Vektor2 zu liegen.
Format:
double GetAngle (ai, aj, bi, bj)
double ai
aj
bi
bj
X-Komponente von Vektor1.
Y-Komponente von Vektor1.
X-Komponente von Vektor2.
Y-Komponente von Vektor2.
Beschreibung:
Diese Funktion berechnet den Winkel, um den der Vektor1 im mathematisch positiven Sinn gedreht werden
muß, um auf dem Vektor2 zu liegen.
Der mit ai bezeichnete Parameter spezifiziert die X-Komponente von Vektor1.
Der mit aj bezeichnete Parameter spezifiziert die Y-Komponente von Vektor1.
Der mit bi bezeichnete Parameter spezifiziert die X-Komponente von Vektor2.
Der mit bj bezeichnete Parameter spezifiziert die Y-Komponente von Vektor2.
R ückgabe:
Angle
Der Winkel, um den der Vektor1 im mathematisch positiven Sinn gedreht werden muß,
um auf dem Vektor2 zu liegen.
91
Funktionen aus scale.c
10.11 GetAngle_2
Funktion: GetAngle_2
Synopsis:
Berechnet den Schnittwinkel zwischen Vektor 1 und Vektor 2.
Format:
double GetAngle_2 (ai, aj, bi, bj)
double ai
aj
bi
bj
X-Komponente von Vektor1.
Y-Komponente von Vektor1.
X-Komponente von Vektor2.
Y-Komponente von Vektor2.
Beschreibung:
Diese Funktion berechnet den Schnittwinkel zwischen Vektor 1 und Vektor 2
Der mit ai bezeichnete Parameter spezifiziert die X-Komponente von Vektor1.
Der mit aj bezeichnete Parameter spezifiziert die Y-Komponente von Vektor1.
Der mit bi bezeichnete Parameter spezifiziert die X-Komponente von Vektor2.
Der mit bj bezeichnete Parameter spezifiziert die Y-Komponente von Vektor2.
R ückgabe:
Angle
Der Schnittwinkel zwischen Vektor 1 und Vektor 2.
92
Überwachung einer Fertigungsanlage
11 Überwachung einer Fertigungsanlage
11.1 Programm
Das eigentliche Programm ist ein Beispiel, wie aus den Funktionen der MIL 4.0 und den Funktionen aus scale.c und bin.c eine Anwendung programmiert werden kann. Da für die Aufnahme nur
eine Kamera und damit eine Kameraposition herangezogen werden kann, gelten für die Koordinaten, die mit diesem Programm berechnet werden, die bekannten Einschränkungen aus dem Kapitel 9.
Das Programm kann in mehrere Schritte unterteilt werden:
1. Es wird das Bild binarisiert ausgegeben. Man kann hierdurch die Einstellung der Schwellenwerte überprüfen. Alle farbig beklebten Flächen (rot, grün, blau) sollten gut zu erkennen sein.
Andernfalls sollten die Einstellungen verändert oder die Beleuchtung verbessert werden.
2. Durch die drei blauen großen Markierungen auf dem Arbeitstisch wird überprüft, ob sich die
Bildebene der Kamera parallel zum Tisch befindet und der obere Bildrand parallel zur Tischkante liegt. Ist dies der Fall, wird der Umrechnungsmaßstab Pixel in mm ausgegeben.
3. Im diesem Schritt werden die Länge des Oberarms und Unterarms des Roboterarms sowie der
Drehpunkt des Schultergelenks ermittelt. Damit dieser Schritt korrekt durchgeführt wird, sind
vor der Durchführung sowohl Oberarm als auch der Unterarm in eine Stellung zu bringen, in
der sie parallel zur Tischoberfläche über dem Tisch stehen.
4. Im letzten Schritt werden die Positionen der farbigen Markierungen verfolgt und ihre Koordinaten auf dem Display schematisch angezeigt.
Abbildung 52: Die Szene mit allen farbigen Makierungen
In der Abbildung 52 sind die drei großen blauen Markierungen zu sehen, die für die Berechnung
des Maßstabs benutzt werden. Die große rote und die große grüne Markierung werden benutzt,
um die Position des Transportsystems der Fräse zu überwachen. Die drei kleinen roten und die
eine kleine grüne Markierung auf dem Roboterarm werden benutzt, um seine Position zu ermitteln.
93
Überwachung einer Fertigungsanlage
Das Programm kann mit den folgenden Parametern gestartet werden:
Carriage
nur das Transportsystem wird berechnet
Robot
nur der Roboterarm wird berechnet.
File "FileName" Transportsystem und Roboterarm werden berechnet. Als Quelle wird anstelle
der Framegrabberkarte die Datei mit den Namen "FileName" bearbeitet.
"Ziffern 0-7"
Bei den Parametern 0, 1, 2, 3, 4, 5, 6, 7 werden das Transportsystem und der
Roboterarm berechnet. Die übergebene Zahl bestimmt, in welchem der
Frames das Transportsystem gezeichnet wird. Soll kein Transportsystem gezeichnet werden, ist hier eine 0 zu übergeben.
Die folgende Tabelle gibt Aufschluß, wann welcher Frame gezeichnet wird.
CarriageSelectFrame Frame1 Frame2 Frame3
0
nein
nein
nein
1
ja
nein
nein
2
nein
ja
nein
3
ja
ja
nein
4
nein
nein
ja
5
ja
nein
ja
6
nein
ja
ja
7
ja
ja
ja
Tabelle 7
Ja bedeutet: In den entsprechenden Frame wird das Transportsystem gezeichnet.
Nein bedeutet: In den entsprechenden Frame wird das Transportsystem nicht gezeichnet.
Die Frames werden mit der Funktion DrawScene gezeichnet. Es gelten somit die Bedingungen,
die in der Funktionsbeschreibung von Funktion DrawScene erklärt wurden.
11.1.1 Geschwindigkeit
Die Matrox Framegrabberkarte kann ca. 25 Bilder pro Sekunde liefern. Bei der ersten Berechnung
der Koordinaten der Szene benötigt das Programm ca. 530 msec. Wurden alle zu erwartenden
Blobs gefunden, so dauert die nächste Berechnung ca.145 msec. Verlassen die Objekte bis zur
nächsten Berechnung nicht ihr beobachtetes Suchfenster, so dauert die darauf folgende Berechnung wieder ca.145 msec, was einer Bildrate von ca. 6,8 Bilder pro Sekunde entspricht. Bewegt
sich jedoch ein zu erkennendes Objekt zu schnell und verläßt innerhalb der 145 msec. das Suchfenster, so dauert der nächste Suchvorgang wieder ca. 530 msec.
Bei einer Bildausgabe, wie sie im Programm vorkommt, ist mit einer Bildwiederholrate von ca. 3
Bilder pro Sekunde zu rechnen (ca. 340 msec. Rechendauer pro Bild).
Alle Angaben beziehen sich auf einen Pentium 166 MHz unter Benutzung der MIL 4.0.
Eine deutliche Leistungssteigerung ist durch den Einsatz der MIL 5.0 Library auf einem MMX
Prozessor zu erwarten. Die MIL 5.0 ist für die Zusammenarbeit mit einem MMX fähigen Prozessor optimiert worden.
Die Zeiten werden durch die Anzahl und Größe der Suchfenster beeinflußt.
94
Resümee
12 Resümee
Die Funktionen der Bilddatenverarbeitungslibrary MIL 4.0 sind unter der Bedingung, die Position
von Objekten in dem Umfeld einer Fertigungsanlage zu bestimmen, auf ihre Eignung und Geschwindigkeit überprüft worden. Es ergab sich, daß die Methoden der Bloberkennung deutlich
weniger Verarbeitungszeit benötigen als die der Mustererkennung. Bei der Untersuchung der
durch die Kamera beobachteten Szene kann man feststellen, daß nur wenige farbige Objekte in
der Szene liegen. Es bietet sich somit an, die zu suchenden Objekte farbig zu bekleben und einen
geeigneten Algorithmus zu entwickeln, der die Objekteigenschaft Farbe separieren kann. Unter
den so verbleibenden Objekten kann eine Blobanalyse die gewünschten Objekte selektieren und
ihre Position auf der Abbildung bestimmen.
Im Rahmen der Diplomarbeit entstanden einige Funktionen, die derart gestaltet sind, daß sie sich
in den Funktionspool der MIL Library 4.0 eingliedern. Die erste Gruppe von Funktionen ermöglicht das Binarisieren einer farbigen Aufnahme unter Berücksichtigung der Information der einzelnen Farbbänder. Hierbei wird ein Binärbild geschaffen, welches die Eigenschaft, hat nur noch
die jeweilige "reine" Grundfarbe zu beinhalten. Wie "rein" die Farbe sein muß, kann als Parameter der jeweiligen Funktion übermittelt werden.
Wird das gesamte Bild binarisiert, so ergibt sich eine recht lange Bearbeitungsdauer. Es ist jedoch
mit den erzeugten Funktionen auf bequeme Weise möglich, einen nur kleinen Bildausschnitt zu
bearbeiten. Mit Hilfe dieser Technik kann ein Fenster um ein Objekt der Bewegung des Objekts
folgen. Da hierbei nur das jeweilige Fenster berechnet wird, kann die gesamte Rechnendauer
deutlich reduziert werden.
Um aus dem Abbild einer Szene auf die Abmessungen der in ihr enthaltenen Objekte zu schließen, ist die zweite Gruppe von Funktionen entstanden. Diese Funktionen bieten die Möglichkeit,
unter Ausnutzung bekannter Abstände die tatsächliche Lage und Größe eines Objekts zu bestimmen.
Um die Berechnung unter verschiedenen Zoom-Einstellungen und bei verschiedenen Befestigungspositionen des Roboterarms zu bestimmen, ist eine Funktion entstanden, die zu Beginn eines Programms sich von der richtigen Lage der Kamera überzeugt und den richtigen Maßstab
zwischen Abbildung und dem realen Raum ermittelt. Auch werden die Befestigungsposition des
Roboterarms und die Länge der Roboterarme zu Beginn ermittelt.
Um die Ergebnisse der Berechnungen visualisieren zu können, ist eine einfache Ausgabefunktion
geschrieben worden.
Durch die beschriebenen Funktionen ist es möglich geworden, neue Programme zu entwickeln,
die sich weitergehend mit der Thematik beschäftigen. Die Ergebnisse der Binarisierung sind
selbst unter schlechten Beleuchtungsverhältnissen zufriedenstellend. Jedoch könnte die Verbesserung der Beleuchtung für deutlich mehr Stabilität der Erkennung sorgen.
Ein weiter Ansatzpunkt zur Erhöhung der Zuverlässigkeit ergibt sich aus der Nutzung einer
zweiten Kamera. Die zweite Kamera liefert ein neues Bild aus einer andern Perspektive. Es wäre
somit möglich, die Position des Roboterarms immer genau zu berechnen.
95
Resümee
Durch die Nutzung der MIL Library 5.0 und einen MMX Prozessor würde die Berechnungsdauer
pro Bild deutlich abnehmen (im Fall der Binarisierung Faktor 6,4). Es wäre nun möglich, von
deutlich mehr Objekten die Positionen zu bestimmen oder die Objekte schneller in der Szene zu
bewegen.
Bei den Betrachtungen wurden zum Teil Verfahren -wegen ihre langen Berechnungszeit- aus weiteren Überlegungen ausgeschlossen. Bei Anschaffung der MIL 5.0 Library sollte die Auswahl der
Methoden erneut diskutiert werden. Einige der Kapitel können hierzu Anregung bieten.
96
Anhang A
13 Anhang A
Abbildung 53: Natürliches Licht bei einem Sonnenuntergang
Abbildung 54: Natürliches Licht um die Mittagszeit
97
Anhang A
Abbildung 55: Licht einer Glühbirne
Abbildung 56: Licht einer Leuchtstofflampe
98
Anhang B
14 Anhang B
Verfahren zum Umrechnen von RGB, HSI, HLS
RGB to HSI (Joblove G.H., Greenberg D.)
H=
2 * R − G − B 
1
* arctan

2 *π
 3 * (G − B) 
S = R ² + G ² + B ² − RG − RB − GB
1
I = * ( R + G + B)
3
RGB to HSI (Gonzalez and Woods)
I = 1/3(R+G+B)
S = 1 - ( 3/(R+G+B))*a
where a is the minimum of R, G and B
H = cos^(-1) ( (0.5*((R-G)+(R-B))) / ((R-G)^2 + (R-B)*(G-B))^(0.5) )
If S = 0, H is meaningless.
If (B/I) (G/I) then H = 360 - H since H is an angle in degrees we
then normalise to 0,1 with H=H/360
HSI to RGB (Gonzalez and Woods)
First we restore H to degrees with H = 360*H
If 0 <= 120 then
B = 1/3(1-S)
R = 1/3(1+ [(S cos H) / (cos(60 - H))] )
G = 1 - (B+R)
If 120 <= 240 then
H = H - 120
R = 1/3(1-S)
G = 1/3(1+ [(S cos H) / (cos(60 - H))] )
B = 1 - (R+G)
If 240 <= 360 then
H = H - 240
G = 1/3(1-S)
B = 1/3(1+ [(S cos H) / (cos(60 - H))] )
R = 1 - (G+B)
RGB to HLS (Foley and VanDam)
max = maximum of RGB
min = minimum of RGB
l = (max+min) / 2
if max = min, S = 0, H = undefined
if l <= 0.5, S = (max-min)/(max+min)
else, S = (max-min)/(2 - max - min)
delta = max-min
if R = max, H = (G-B)/delta
if G = max, H = 2 + (B-R)/delta
if B = max, H = 4 + (R-G)/delta
H = H * 60
if H < 0, H = H + 360
99
Anhang B
HLS to RGB (Foley and VanDam)
if L <= 0.5, m2 = L * (1+S)
else m2 = L + S - L * S
m2 = 2 * L - m2
if S = 0 and H = undefined, R = G = B = L
R = value(m1,m2,h+120)
G = value(m1,m2,H)
B = value(m1,m2,h-120)
where value(a,b,c) is the following function
value(n1,n2,hue)
if hue 360, hue = hue - 360
else if hue < 0, hue = hue + 360
if hue < 60, value = n1 + (n2 - n1) * hue / 60
else if hue < 180, value = n2
else if hue < 240, value = n1 + (n2 - n1) * (240 - hue) / 60
else value = n1
return value
100
Abbildungsverzeichnis
15 Abbildungsverzeichnis
Abbildung 1:
Fertigungsanlage
Abbildung 2:
Blockschaltbild der Meteor Framegrabber-Karte
Quelle:
Werbematerial der Firma Matrox, Canada
Abbildung 3:
Farbempfindlichkeit eines Films
Quelle:
Werbematerial der Firma Canon Euro-Photo GmbH
Abbildung 4:
Linien bei verschiedenen Auflösungen
Abbildung 5:
Zwei einfarbige Flächen
Abbildung 6:
Zentralprojektion
Abbildung 7:
Zentralprojektion zweier Objekte
Abbildung 8:
Histogramme von Grauwerten
Abbildung 9:
Suchmodell
Abbildung 10:
Beispiel Szene
Abbildung 11:
Aufnahme eines Dreiecks bei großem Abstand "Kamera – Dreieck"
Abbildung 12:
Aufnahme eines Dreiecks bei kleinem Abstand "Kamera – Dreieck"
Abbildung 13:
Buchstabe "A" bei verschiedenen Auflösungen
Abbildung 14:
Histogramm von Abbildung 13
Abbildung 15:
Ergebnisse der Binarisierungen von Abbildung 13 bei verschiedenen Schwellenwerten
Abbildung 16:
Binarisierte Abbildung 10 bei einem Schwellenwert von 105
Abbildung 17:
Gefilterte Abbildung 16
Abbildung 18:
Abbildung 17 mit Labels
Abbildung 19:
Drei Tafeln des L*a*b Systems
Abbildung 20:
Dispersion
Abbildung 21:
Additive Farbmischung
Abbildung 22:
Subtraktive Farbmischung
Abbildung 23:
HSB Änderungen
Abbildung 24:
L*a*b-Farbtafel
Abbildung 25:
Gamut: Lab, RGB, CMYK
Abbildung 26:
Gamut: Farbfilm, Offsetdruck, Zeitung
Abbildung 27:
Farbaufnahme der Szene
Abbildung 28:
Linien-Farb-Histogramm einer Linie durch die Farbaufnahme der Szene
Abbildung 29:
Ergebnis der Funktion ColorMaxMinDiff angewendet auf Abbildung 27
101
Abbildungsverzeichnis
Abbildung 30:
Markante Punkte des Roboters farbig markiert
Abbildung 31:
Ergebnis der Funktion ColorMaxMinDiff angewendet auf Abbildung 30
Abbildung 32:
Testbild "HLS-RGB"
Abbildung 33:
RGB-Farbseparation
Abbildung 34:
HLS-Separation
Abbildung 35:
Farbton grau invertiert
Abbildung 36:
HUE-Werte des Testbildes
Abbildung 37:
Binarisierung des Testbildes nach der Farbe Rot
Abbildung 38:
Binarisierung der Abbildung 30 nach der Farbe Rot
Abbildung 39:
Abbildung 38 gefiltert
Abbildung 40:
Histogramm der HKS Farbe 13K (ROT)
Abbildung 41:
Histogramm der HKS Farbe 65K (GRÜN)
Abbildung 42:
Histogramm der HKS Farbe 43K (BLAU)
Abbildung 43:
Achsenbezeichnung in der dreidimensionalen Darstellung
Abbildung 44:
Achsenbezeichnung in der zweidimensionalen Darstellung
Abbildung 45:
Beispiel zur Anwendung der Funktion ProToReal
Abbildung 46:
Beispiel zur Berechnung der Koordinate des Ellenbogens
Abbildung 47:
Auswahl der Kameraposition
Abbildung 48:
Bezeichnung der Punkte auf dem Roboterarm
Abbildung 49:
Bezeichnung der Koordinatenachsen in den Frames
Abbildung 50:
Darstellung des Roboters in den Frames
Abbildung 51:
Darstellung der Fräse in den Frames
Abbildung 52:
Die Szene mit allen farbigen Makierungen
Abbildung 53:
Natürliches Licht bei einem Sonnenuntergang
Quelle:
Das große Buch der Farben, J. M. Parramon, Verlagsservice Henniger.GmbH, 1993,
ISBN 3-924433-74-7
Abbildung 54:
Natürliches Licht um die Mittagszeit
Quelle:
Das große Buch der Farben, J. M. Parramon, Verlagsservice Henniger.GmbH, 1993,
ISBN 3-924433-74-7
Abbildung 55:
Licht einer Glühbirne
Quelle:
Das große Buch der Farben, J. M. Parramon, Verlagsservice Henniger.GmbH, 1993,
ISBN 3-924433-74-7
Abbildung 56:
Licht einer Leuchtstofflampe
Quelle:
Das große Buch der Farben, J. M. Parramon, Verlagsservice Henniger.GmbH, 1993,
ISBN 3-924433-74-7
102
Literaturverzeichnis
16 Literaturverzeichnis
3D Images Analysis and
Synthesis ´97
Algorithmen zur Grafik und
Bildverarbeitung
Angewandte Szenenanalyse
Beleuchtungstechnik für den
Elektrofachmann
Beleuchtungstechnik Band1
Grundlagen
Beleuchtungstechnik Band2
Innenbeleuchtung
Das Gesetz der Farbe
H.-P. Seidel, B.
Girod, H. Niemann
Theo Pavlidis
infix
1997 ISBN 3-89601-007-7
Heinz Heise Verlag
1990 ISBN 3-88229-124-9
J. P. Foith
Carl-Heinz Zieseniß
Springer Verlag
Hürtig Verlag
1979 ISBN 3-540-09665-5
1993 ISBN 3-7785-2221-3
Joh. Jansen
1954
Das große Buch der Farben
J. M. Parramon
Die Pracht der Farben
Prof. Dr. Roman
Liedl
RRZN
F.M. Wahl
Philips´technische
Bibliothek
Philips´technische
Bibliothek
Muster-Schmidt
Verlag
Verlagsservice
Henniger.GmbH
Wissenschaftsverlag
RRZN
Springer Verlag
1991
1984 ISBN 3-540-13586-3
Hanser
Studienbücher
Springer Verlag
Herbert Wichmann
Verlag
DuMont Buchverlag
1989 ISBN 3-446-15644-5
VEB Deutscher
Verlag der
Wissenschaften
Springer Verlag
1985
Callwey Verlag
Verlag Paul Haupt
Edward Arnold
1987 ISBN 3-7667-0855-4
1985 ISBN 3-258-03504-0
1972 ISBN 0-7131-3267-1
Hürtig Verlag
1987 ISBN 3-7785-1365-6
Die Programmiersprache C
Digitale
Bildsignalverarbeitung
Digitale Bildverarbeitung
Joh. Jansen
Dr.Heinrich Frieling
P.Haberäcker
Digitale Bildverarbeitung
Digitale Bildverarbeitung
Bernd Jähne
Hans-Peter Bähr
DuMont´s Handbuch der
Farbe
Einführung in die digitale
Bildverarbeitung
Hans Gekler
Erfassung und maschinelle
Verarbeitung von Bilddaten
Farbe
Farbe Licht Sehen Empfinden
Lamps and Lighting
H.Kazmierczak
Licht und Beleuchtung
Light Sources
Manual Matrox Imaging
Library, Version 4.0, Boardspecific Notes
Manual Matrox Imaging
Library, Version 4.0,
Command Reference
Manual Matrox Imaging
Library, Version 4.0, User
Guide
Manual Matrox Intellicam,
L. P. Jaroslavskij
Harald Küppers
Moritz Zwimpfer
Henderson &
Marsden
Hans-Jürgen
Hentschel
Elenbaas
1954
1990 ISBN 3-7881-4031-3
1993 ISBN 3-924433-74-7
1994 ISBN 3-411-16691-6
1997 ISBN 3-540-61379-X
1985 ISBN 3-87907-149-7
1988 ISBN 3-7701-2111-2
1980 ISBN 3-211-81555-4
THE MACMILLAN 1972 ISBN 0-8448-0057-0
PRESS LTD.
1997
1997
1996
1996
103
Literaturverzeichnis
UserGuide, Version 2.0
Methoden der digitalen
Bildsignalverarbeitung
Modelling and new methods
in image processing and in
geographical information
systems
Multivariante
Analysemethoden
Mustererkennung ´86
Pattern Reccognition
Theorie der Farbe
Visual C++ 5.0
Zamperoni
Vieweg
1989 ISBN 3-528-03365-7
Peter Mandl
Österreichische
Computer
Gesellschaft
1991 ISBN 3-486-22128-0
Backhaus Erichson
Plinke Weiber
W. G. Kropatsch, P.
Mandl
Springer Lehrbuch
Verlag
Österreichische
Computer
Gesellschaft
Plenum Press
M. DuMont
QUE
1996 ISBN 3-540-600917-2
Bruce G. Batchelor
Johannes Pawlik
Kate Gregory
1986 ISBN 3-486-20358-4
1978 ISBN 0-306-31020-1
1969
1997 ISBN 3-8272-1019-4
104