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