AIM - Atari Image Manager Das Bildverarbeitungs-Programm AIM 2.3 fr den Atari wurde von Frans Groen und Robert de Vries an der Technischen Universit„t Delft (Niederlande) entwickelt. Frans ist wissenschaftlicher Mitarbeiter der Abteilung "Mustererkennung" im Fachbereich Signal- und Regeltechniken, Robert ist Student einer anderen Abteilung des selben Fachbereichs. AIM l„uft in hoher und niedriger Aufl”sung; die mittlere Aufl”sung wird nicht untersttzt. AIM ist in C geschrieben, unter Verwendung des Lattice-C-Compilers. Zweck des Programms ist das Experimentieren mit den M”glichkeiten digitaler Bildverarbeitung (Image Processing). Benutzerschnittstelle Die Benutzerschnittstelle von AIM besteht aus - der GEM-Schnittstelle. Operationen und Parameter k”nnen ber Dialogboxen und drop-down Menues angew„hlt werden. Die Anwahl in einem Menue l”st einen Befehl aus, der dem Command Interpreter bergeben wird. Bilder k”nnen am Bildschirm verschoben und skaliert werden; - dem Command Interpreter. Folgen von Befehlen k”nnen zu einem Command File (Macro) zusammengefaát werden. Wenn logging aktiviert ist, werden alle eingegebenen Befehle (auch Korrekturen falscher Eingaben!) in einem Command File (.AIM) protokolliert. Aufrufe von Command Files aus anderen Command Files k”nnen bis zu 16 Ebenen tief gestaffelt sein. Bilder in AIM AIM 2.3 verfgt ber vier Bildspeicher. Die Bildspeicher sind 8 Bit tief und haben eine maximale Gr”áe von 65536 Pixels (2^16). Das Standard-Bildformat von AIM ist 256 * 256 Pixels. Diese vier Bildspeicher k”nnen am Atari-Bildschirm dargestellt werden. Die Fenster sind mit 'A', 'B', 'C' und 'D' gekennzeichnet. Die Positionen der Fenster stehen in einem Setup-Datei. Bildfenster k”nnen verschoben und skaliert werden. Ein Farbbild besteht aus vier Speicherbereichen (Sub-Images) von maximal 16384 Pixels jeweils fr Helligkeit, Rot, Grn und Blau. Diese Gr”áenbeschr„nkung bezieht sich auf die 1-Megabyte- Speicherbeschr„nkung des Atari ST. Steht mehr Speicher zur Verfgung, wird auch die Bearbeitung gr”áerer Farbbilder untersttzt. AIM Standard-Farbbilder haben ein Format von 4 mal 128 * 128 Pixels. Sie beanspruchen den selben Platz wie ein Grauwert-Bild im Format 256 * 256. Die meisten der (Farb-)Bildoperationen beziehen sich auf alle Sub-Images eines Farbbilds. Einige Bildoperationen (gradx, grady, equal) beziehen sich auf das Sub-Image 'Helligkeit'. Nach einer solchen Operation werden die Farbwerte fr Rot, Grn und Blau entsprechend dem neuen Intensit„tswert neu aufgefrischt. Die 8 Bit-Ebenen eines Grauwertbilds k”nnen auch wie 8 bin„re Einzelbilder behandelt werden. Bin„re und zellulare Operationen k”nnen auf die Bit-Ebenen angewandt werden. Die Bit-Ebenen sind von '1' bis '8' numeriert. Wenn eine Bilddatei von Disk eingelesen wird, werden alle 8 Bit-Ebenen gleichzeitig gelesen. Dasselbe gilt fr das Schreiben auf Disk. Bilder werden in Grauwert-Modus dargestellt, wenn die Extension .IM lautet, und im Farbmodus, wenn die Extension .COL lautet. Die Darstellung von Farbbildern l„uft nur in der niedrigen Aufl”sung. Es k”nnen auch DEGAS- oder NEOCHROME-Bilder gelesen und geschrieben werden. Mit dem read-Befehl werden diese Bilder (automatisch) in 320 * 200-Grauwertbilder konvertiert. Mit dem cread-Befehl werden sie in Farbbilder des Formats 160 * 100 konvertiert. Wenn die Extension .PI1 oder .PI3 lautet, wird ein DEGAS-Bild gelesen oder geschrieben; wenn die Extension .NEO lautet, wird ein NEOCHROME-Bild gelesen oder geschrieben. Beispiele in \DEMO4. Beim Speichern von Bildern im DEGAS- oder NEOCHROME-Format sollte man Vorsicht walten lassen. In diesen Formaten wird eine eingeschr„nkte Zahl von Grauwert oder Farben benutzt (palette), wodurch eine drastische Reduktion von Information eintritt, die die M”glichkeiten weiterer Bildverarbeitung begrenzt. Nur Bilder im AIM-Format (.IM oder .COL) werden in voller Grauwert- oder Farb-Aufl”sung gespeichert. Im hochaufl”senden Modus (monochrom) besteht ein Standard- Grauwertbild aus 256 * 256 schwarzen oder weiáen Punkten (es gibt also nur zwei verfgbare Grauwert: Schwarz und Weiá). Eine Sigma- Delta-Technik wird benutzt, um eine lokale Punktdichte zu erreichen, die die Grauwert des Bilds so gut wie m”glich darstellt. In der bin„ren Darstellung steht 0 fr einen schwarzen und 1 fr einen weiáen Punkt. In der niedrigen Aufl”sung besteht ein Standard-Grauwertbild aus 128 * 128 Pixels mit jeweils 8 Grauwerten (resp. Farben). Wiederum wird eine Sigma-Delta-Technik angewendet, um die originalen 256 Grauwert so gut wie m”glich darzustellen. Da das Standardbild ein Format von 256 * 256 Pixels hat, wird in der niedrigen Aufl”sung nur 1 Pixel aus einer Umgebung von 2 * 2 Pixels angezeigt. Im voreingestellten Bin„rmodus der niedrigen Aufl”sung (don 1) wird ein schwarzer Punkt angezeigt, wenn alle Pixels einer 2 * 2-Umgebung '0' sind und ein weiáer Punkt, wenn alle Pixels einer 2 * 2-Umgebung '1' sind. In allen anderen F„llen erscheint ein grauer Punkt. Ein Standard-Farbbild wird im Format 128 * 128 Pixels in 16 verschiedenen Farben dargestellt. Eine optimale Platte gilt fr das jeweils aktuelle angezeigte Bild; die Paletten anderer Bilder gelten nicht mehr. Die Palette des jeweils aktiven Fensters wird angezeigt. Wird ein anderes Fenster angeklickt, so wird es mit der zugeh”rigen korrekten Palette aktiviert. Stadard-Grauwertbilder auf Disk (Extension .IM) bestehen aus 256 Zeilen zu 256 Pixels (unsigned char) aus 1 Byte. Demgem„á besteht ein Bild aus insgesamt 65536 Bytes. Die Abfolge ist Zeile fr Zeile, von links oben nach rechts unten. Stadard-Farbbilder auf Disk (Extension .COL) bestehen aus einer Folge von 4 Sub-Images zu jeweils 128 Zeilen a 128 Pixels (unsigned char) aus 1 Byte. Die Sub-Images stehen fr Helligkeit, Rot, Grn und Blau. Wenn ein Bild nicht dem Standardformat entspricht, braucht es einen Header (Extension .HD), in dem Breite und H”he des Bilds verzeichnet sind. Der verwendete Header ist der im Centre for Image Processing Delft verwendete (er ist im Appendix beschrieben). Wenn ein Bild im AIM-Format gespeichert wird, wird immer automatisch ein Header erzeugt. Der Command Interpreter Es ist nicht notwendig, Befehle vollst„ndig auszuschreiben. Es gengt jeweils die kleinste Anzahl von Buchstaben, die keine Doppeldeutigkeit mehr zul„át. Achten Sie darauf, daá der Command Interpreter pingelig zwischen Groá- und Kleinschreibung unterscheidet! Das Verbessern von eingegebene Befehlen ist einfach. Mit den Tasten oder l„át sich das jeweils letzte Zeichen hinter dem Cursor l”schen. - l”scht die ganze Zeile. Eine Folge von Befehlen, die bestimmte Operationen ausfhren, kann zu einem Command File zusammengefaát und auf Disk gespeichert werden. Die Extension von Command Files lautet .AIM. Wenn der Protokoll-Modus (logging) aktiviert ist, werden alle eingegebenen Befehle gespeichert (a la Cassettenrecorder). Wenn der Protokoll-Modus wieder abgeschaltet wird, wird ein Befehls-Logfile (= Command File) auf Disk geschrieben. Command Files werden ausgefhrt durch Eingabe von \NAME (ohne Extension). Aufrufe von Command Files aus anderen Command Files k”nnen bis zu 16 Ebenen tief gestaffelt sein. Wird also anstelle eines Befehls \NAME (eines Command Files) eingegeben, so wird das Command- File ausgefhrt (d.h. es werden die in dem Command File verzeichneten Befehle abgearbeitet). Fortgeschrittene Anwender k”nnen eigene Command Files auch extern in einem gew”hnlichen Texteditor erzeugen. stoppt die Ausfhrung eines Command Files und fragt, ob fortgefahren werden soll oder nicht. Wenn keine Parameter angegeben werden, werden die voreingestellten Werte verwendet. Wenn ein fehlerhafter Wert eingegeben wird, fragt der Command Interpreter nach einem korrekten Wert. Wird in einem solchen Fall eingegeben, so wird der voreingestellte Wert verwendet. Dies erm”glicht auch die Abfrage und Eingabe von Parametern anstelle festgelegter Werte w„hrend der Ausfhrung eines Command Files. Im Command File kann dafr beispielsweise ein Fragezeichen (?) anstelle eines Werts verwendet werden. Ein Fragezeichen (?) anstelle eines Befehls fhrt zu einer Auflistung aller verfgbaren Befehle. Ein Sternchen (*) zeigt an, daá der Rest der Befehlszeile als Kommentar anzusehen ist. Die GEM-Schnittstelle Mit einem Sternchen (*) gekennzeichnete Operationen sind nur ber den Command Interpreter ausfhrbar. Dialogboxen Die Eingabe von Parametern in Dialogboxen erfolgt, indem zuerst mit der voreingestellte Wert gel”scht und der Strichcursor auf die erste Stelle gesetzt wird. Minus-Zeichen (-) sind ausschlieáelich an erster Stelle erlaubt. Es gibt zwei spezielle Dialogboxen. Eine ist fr den Befehl threshold. Der vorgegebene threshold-Wert wird jedesmal neu berechnet, wenn ein neues Ausgangs-Bild angew„hlt wird. Die andere spezielle Dialogbox ist fr die Palette. Wird eine Farbe angew„hlt, dann werden die Farbkoeffizienten in der edierbaren Textzeile darunter angezeigt. Wenn die Koeffizienten ver„ndert werden und eine andere Farb-Box angeklickt wird, werden die Ergebnisse der Ver„nderung sichtbar. Die drei Koeffizienten stehen fr Rot, Grn und Blau und k”nnen im Bereich zwischen 0 und 7 variiert werden. H”here eingegebene Werte werden automatisch auf 7 reduziert. Operationen in AIM Datei-Operationen readf(ile): Liest ein Bild vom aktuellen Laufwerk. Der erste Befehlsparameter ist der Bildname, der zweite optionale Parameter ist der Bildspeicher (A, B, C oder D). Voreingestellt ist Bildspeicher A. Die Extension eines Grauwertbilds lautet .IM. Wenn keine andere Extension angegeben ist, wird .IM vorausgesetzt. (Lautet die Extension .COL, wird ein Farbbild eingelesen). Wenn keine Header-Datei vorhanden ist, wird das Standard-Bildformat angenommen, im anderen Fall wird die Formatbeschreibung aus der Header-Datei benutzt. Lautet die Extension .PI1 oder .PI3, wird eine DEGAS-Bilddatei in ein Grauwertbild von 320 * 200 Pixels konvertiert. Lautet die Extension .NEO, wird eine NEOCHROME-Bilddatei in ein Grauwertbild von 320 * 200 Pixels konvertiert. Befehlssyntax: Voreinstellung: Bereich: creadf(ile) Liest ein Farbbild vom aktuellen Laufwerk Der erste Befehlsparameter ist der Bildname, der zweite optionale Parameter ist der Bildspeicher (A, B, C oder D). Voreingestellt ist Bildspeicher A. Die Extension von Farbbildern lautet .COL. Wenn keine andere Extension angegeben ist, wird .COL vorausgesetzt. (Wenn die Extension .IM lautet, wird ein Grauwertbild eingelesen). Wenn keine Header-Datei vorhanden ist, wird das Standard-Bildformat angenommen, im anderen Fall wird die Formatbeschreibung aus der Header-Datei benutzt. Lautet die Extension .PI1, wird eine DEGAS- Bilddatei in ein Farbbild von 160 * 100 Pixels konvertiert. Lautet die Extension .NEO, wird eine NEOCHROME-Bilddatei in ein Farbbild von 160 * 100 Pixels konvertiert. Befehlssyntax: Voreinstellung: Bereich: writf(ile): Schreibt eine Bilddatei auf das aktuelle Laufwerk Der erste Befehlsparameter ist der Bildname. Der zweite Parameter ist der Name der Bilddatei. Wenn keine andere Extension angegeben ist, wird .IM vorausgesetzt. Neben der Bilddatei wird noch eine Header-Datei geschrieben (Extension .HD). Die Struktur des Headers ist im Appendix beschrieben. Lautet die Extension .PI1 oder .PI3, wird eine DEGAS-Bilddatei geschrieben. Lautet die Extension .NEO, wird eine NEOCHROME-Bilddatei geschrieben. Befehlssyntax: Voreinstellung: Bereich: load setup Mit diesem Befehl wird eine Setup-Datei geladen. Die setup-Datei enth„lt den Pfad zu den Bilddateien (read/write), den Command Files, den Hilfe-Dateien, die aspect- und align-Flags und die Positionen und Gr”áen der Fenster. save setup Mit diesem Befehl werden die aktuellen Einstellungen (Pfade und Fensterpositionen) in eine Setup-Datei geschrieben. Macro: W„hlt ein Command File an und startet es \name ist ein Command File. Ein @ startet das Command File. Command Files k”nnen bis zu 16 Ebenen tief ineinander gestaffelt werden. Die Extension von Command Files lautet .AIM, diese Extension wird dem Namen des Command Files automatisch angefgt. Wenn infinite = -1, wird das Command File in einer unendlichen Schleife wiederholt. Befehlssyntax: Voreinstellung: Bereich: Logging Wenn logging (Protokollmodus) eingeschaltet ist, werden alle eingegebenen Befehle gespeichert. Wenn das logging wieder ausgeschaltet wird, werden die gespeicherten Befehle in ein Command File geschrieben (.AIM). Es erscheint eine Fileselect-Box, geben Sie dem zu speichernden Command File einen Namen (Extension .AIM). Auf diese Weise k”nnen automatische Befehlsdateien erzeugt werden (Batchbetrieb, Stapeldateien, Makros) exit: Beendet das Programm Das Programm kann auch mit - oder durch Anklicken des Schlieáfelds am Command-Fenster beendet werden. Befehl: exit Arithmetische Grauwert-Operationen copy: Kopiert ein Bild Die beiden Befehlsparameter sind das Ausgangsbild und das Zielbild (A, B, C oder D). Befehlssyntax: Voreinstellung: Bereich: add: Addiert zwei Bilder Der erste Befehlsparameter ist das Ausgangsbild. Der zweite Parameter ist das Zielbild, dem das Ausgangsbild aufaddiert werden soll. Das Ergebnis der Operation entspricht der Formel: Zielbild = (Ausgangsbild + Zielbild)/2 Befehlssyntax: Voreinstellung: Bereich: sub: Subtrahiert zwei Bilder Der erste Befehlsparameter ist das Ausgangsbild. Der zweite Parameter ist das Zielbild, von dem das Ausgangsbild subtrahiert werden soll. Der dritte Parameter ist eine Konstante, die dem Bild aufaddiert werden kann. Da das Bild nicht negativ werden kann, wird der resultierende Wert automatisch auf den Bereich zwischen 0 und 255 begrenzt. Das Ergebnis der Operation entspricht der Formel: Zielbild = (Zielbild - Ausgangsbild) + Konstante Befehlssyntax: Voreinstellung: Bereich: mul: Multipliziert zwei Bilder Das Zielbild (zweiter Parameter) wird mit dem Ausgangsbild (erster Parameter) multipliziert. Das Ergebnis der Operation entspricht der Formel: Zielbild = (Ausgangsbild * Zielbild)/256 Befehlssyntax: Voreinstellung: Bereich: div: Dividiert zwei Bilder Das Zielbild (zweiter Parameter) wird durch das Ausgangsbild (erster Parameter) dividiert. Das Ergebnis der Operation entspricht der Formel: Zielbild = (Ausgangsbild * Zielbild)/256 Befehlssyntax: Voreinstellung: Bereich: (*) minimum: Das Minimum zweier Bilder Das Zielbild (zweiter Parameter) wird als Minimum von Ziel- und Ausgangsbild (erster Parameter) angesehen. Das Ergebnis der Operation entspricht der Formel: Zielbild = Minimum (Ausgangsbild, Zielbild) Befehlssyntax: Voreinstellung: Bereich: (*) maximum: Das Maximum zweier Bilder Das Zielbild (zweiter Parameter) wird als Maximum von Ziel- und Ausgangsbild (erster Parameter) angesehen. Das Ergebnis der Operation entspricht der Formel: Zielbild = Maximum (Ausgangsbild, Zielbild) Befehlssyntax: Voreinstellung: Bereich: (*) mindev: Ausgangswert mit der geringsten Abweichung (minimum deviation) Der Ziel-(Pixel)wert entspricht demjenigen Wert eines der beiden Ausgangsbilder, der sich vom Wert des Zielbilds am wenigsten unterscheidet. Das Ergebnis der Operation entspricht der algorithmischen Darstellung: if (Zielwert - Ausgangswert1) < (Zielwert - Ausgangswert2) Zielwert = Ausgangswert1 else Zielwert = Ausgangswert2 Befehlssyntax: Voreinstellung: Bereich: cadd: Addiert einem Bild eine Konstante auf Der erste Befehlsparameter ist das Bild. Der zweite Parameter ist die Konstante, die dem Bild aufaddiert wird. Befehlssyntax: Voreinstellung: Bereich: cmul: Multipliziert ein Bild mit einer Konstanten Der erste Befehlsparameter ist das Bild. Der zweite Parameter ist die Konstante, mit der das Bild multipliziert wird. Befehlssyntax: Voreinstellung: Bereich: cdiv: Dividiert ein Bild durch eine Konstante Der erste Befehlsparameter ist das Bild. Der zweite Parameter ist die Konstante, durch die das Bild dividiert wird. Befehlssyntax: Voreinstellung: Bereich: Grauwert-Filter Ein Pixelwert im Zielbild wird durch die Werte der Pixel festgelegt, die sich in einer lokalen Umgebung um das jeweils untersuchte Pixel im Ausgangsbild befinden. Auf diese Umgebungen k”nnen sowohl lineare als auch nichtlineare Operationen angewandt werden. Lineare Filter Ein linearer Filter kann durch die Multiplikation eines Pixels und seiner Umgebungs-Pixel mit Koeffizienten verwirklicht werden. Das Ergebnis, die Summe dieser Multiplikationen, wird convolution genannt. Beispiele linearer Filter sind die 'laplace'- und 'gradient'-Filter. Die Gr”áe linearer Filter in AIM ist auf 3 * 3-Umgebungen beschr„nkt. Der Menuepunkt 'Filter' bezeichnet einen rotationssymmetrischen 3 * 3- Filter, dessen Koeffizienten vom Anwender spezifiziert werden k”nnen. Beim 'laplace'- und 'gradient'-Filter sind die Koeffizienten festgelegt. Die Keffizienten sind: -1 0 -1 -1 -2 -1 0 -1 0 cd chv cd -2 0 -2 0 0 0 -1 5 -1 chv cc chv -1 0 -1 -1 -2 -1 0 -1 0 cd chv dc x-gradient y-gradient laplace filter laplace: Linearer Filter zur Kontraststeigerung Der erste Befehlsparameter ist das Ausgangsbild, der zweite Parameter ist das Zielbild. Voreinstellungen: A als Ausgangsbild und B als Zielbild. Befehlssyntax: Voreinstellung: Bereich: gradx: Filter zur Anhebung horizontaler Schwellwerte Der erste Parameter ist das Ausgangsbild (voreingestellt: A), der zweite Parameter ist das Zielbild (voreingestellt: B). Das Zielbild kann mit einem Faktor (Multiplikator/1024) multipliziert werden, und dem Ergebnis kann eine Konstante (add) aufaddiert werden. Das Ergebnis der Operation entspricht der Formel: Zielbild = gradx (Ausgangsbild) * (Multiplikator/1024) + add Befehlssyntax: Voreinstellung: Bereich: grady: Filter zur Anhebung vertikaler Schwellwerte Der erste Parameter ist das Ausgangsbild (voreingestellt: A), der zweite Parameter ist das Zielbild (voreingestellt: B). Das Zielbild kann mit einem Faktor (Multiplikator/1024) multipliziert werden, und dem Ergebnis kann eine Konstante (add) aufaddiert werden. Das Ergebnis der Operation entspricht der Formel: Zielbild = grady (Ausgangsbild) * (Multiplikator/1024) + add Befehlssyntax: Voreinstellung: Bereich: filter: 3 * 3 rotationssymmetrischer Filter Dieser Filter fhrt eine 3 * 3 rotationssymmetrische convolution durch. Parameter sind Ausgangsbild, Zielbild sowie die drei verschiedenen Koeffizienten in einer 3 * 3-Umgebung. Der Koeffizient des zentralen Pixels ist cc, der Koeffizient der horizontalen und vertikalen Nachbarpixel sind chv und die Koeffizienten der diagonalen Nachbarpixel sind cd. Das Ergebnis kann mit einem Faktor multipliziert werden (Multiplikator/1024) und eine Konstante (add) kann dem Resultat aufaddiert werden. Das Ergebnis der Operation entspricht der Formel: Zielbild = filter (Ausgangsbild) * (Multiplikator/1024) + add Befehlssyntax: Voreinstellung: Bereich: unif: Ausgleichs-Filter Dieser Filter ermittelt fr jedes Pixel den Durchschnitt der lokalen Umgebung im Ausgangsbild. Dieser Durchschnitt wird als Pixelwert im Zielbild gesetzt. Der erste Parameter ist das Ausgangsbild, der zweite Parameter ist das Zielbild. Der dritte Parameter ist die Gr”áe der lokalen Umgebung. Diese Gr”áe ist ein ungerader Wert zwischen 1 und 63. Befehlssyntax: Voreinstellung: Bereich: Nichtlineare Filter Nichtlineare Filter fhren Bildoperationen aus, die mit linearen Filtern nicht m”glich sind. Bildrauschen (noise) kann mit nichtlinearen Filtern unterdrckt werden, ohne Eckpunkte in Bildfl„chen in Mitleidenschaft zu ziehen. In AIM sind nur die Filter median, minimum und maximum implementiert. medi: Mittelwert-Filter Der Filter median ermittelt fr jedes Pixel den Mittelwert aus einer lokalen (3 * 3) Umgebung. Dieser Mittelwert wird im Zielbild als Pixelwert gesetzt. Dieser Filter unterdrckt Bildrauschen. Erster Parameter ist das Ausgangsbild, zweiter Parameter das Zielbild. Befehlssyntax: Voreinstellung: Bereich: lmin: Lokales Minimum Der Filter minimum ermittelt fr jedes Pixel das Minimum aus einer lokalen (3 * 3) Umgebung im Ausgangsbild. Dieses Minimum wird im Zielbild als Pixelwert gesetzt. Diese Operation ergibt eine Verst„rkung der dunklen Teile eines Bilds und wird auch Grauwert- Erosion genannt. Erster Parameter ist das Ausgangsbild, zweiter Parameter das Zielbild. Der dritte Parameter ist die Gr”áe der lokalen Umgebung. Diese Gr”áe ist ein ungerader Wert zwischen 1 und 63. Befehlssyntax: Voreinstellung: Bereich: lmax: Lokales Maximum Der Filter maximum ermittelt fr jedes Pixel das Maxium aus einer lokalen (3 * 3) Umgebung im Ausgangsbild. Dieses Maximum wird im Zielbild als Pixelwert gesetzt. Diese Operation ergibt eine Verst„rkung der hellen Teile eines Bilds und wird auch Grauwert- Dilation genannt. Erster Parameter ist das Ausgangsbild, zweiter Parameter das Zielbild. Der dritte Parameter ist die Gr”áe der lokalen Umgebung. Diese Gr”áe ist ein ungerader Wert zwischen 1 und 63. Befehlssyntax: Voreinstellung: Bereich: (*) hara: Nichtlinearer Eckfilter Der Filter hara frt eine Variante (Lucas van Vliet) des 3 * 3-Lee- Haralick-Eckfilters (Pattern Recognition Conference, Paris '86) durch. Dieser Filter besiert auf gewichteten Differenzen zwischen dem Ausgangsbild und dem lokalen Minimum sowie dem lokalen Maximum des Zielbilds. Erster Parameter ist das Ausgangsbild, zweiter Parameter ist das Zielbild. Voreinstellungen: A als Ausgangsbild, B als Zielbild. Befehlssyntax: Voreinstellung: Bereich: (*) have: Nichtlinearer laplace-artiger Filter Der Filter have fhrt eine nichtlineare laplace-artige Operation „hnlich dem 3 * 3-Lee-Haralick-Eckfilter durch. Durch Addition des have-Resultats zum Ausgangsbild wird eine Bildsch„rfung wie durch den linearen Filter laplace erzielt. Dieser Filter basiert auf einer gewichteten Differenz zwischen dem Ausgangsbild und dem lokalen Minimum als auch dem lokalen Maximum des gefilterten Bilds. Befehlssyntax: Voreinstellung: Bereich: equal(ization): Histogramm-Ausgleich Diese Operation fhrt eine Neuzuweisung der Grauwerte eines Bilds durch und fhrt zu einer "optimalen" Ausnutzung der verfgbaren Grauwerte. Das Grauwert-Histogramm des Zielbilds ist so flach wie m”glich (ausgehend von der n”tigen Neuquantisierung). Befehlssyntax: Voreinstellung: Bereich: thresh(olding): Wandelt ein Grauwertbild in ein bin„res Bild Das bin„re Bild wird aus den Schwellwerten des Ausgangsbilds ermittelt. Nach dem thresholding k”nnen bin„re Bildoperationen angewendet werden. Pixels mit einem Grauwert ber dem Schwellenwert erhalten den bin„ren Wert 1 und werden Weiá. Pixels mit einem Grauwert unter dem Schwellenwert erhalten den bin„ren Wert 0 und werden Schwarz. Der Ausgangs-Schwellwert wird aus dem Grauwert-Histogramm nach der Methode von Ridler und Calvert berechnet. Befehlssyntax: Voreinstellung: Bereich: Bin„re Operationen mit zellularer Logik Diese Operationen k”nnen auf die 8 Bit-Ebenen eines Bild angewendet werden. Die Bit-Ebenen sind durchnumeriert von 1 bis 8. Ein schwarzes Pixel hat den Wert 0, ein weiáes Pixel den Wert 1. Der Eckwert des Bilds kann bei allen Operationen auf 0 oder 1 gesetzt werden. voreingestellter Wert ist Schwarz (0). Die vorgegebene Anzahl von Iterationen ist das Maximum. Die Iterationen werden abtgebrochen, wenn sich keine weiteren Ver„nderungen in den Pixelwerten ergeben. In diesem Fall wird die Anzahl der erfolgten Iterationen ausgegeben. erosion: Erodiert weiáe Fl„chen Bei jeder Iteration wird eine (Rand)Schicht von allen weiáen Fl„chen 'gesch„lt'. Weiáe Fl„chen, die kleiner als die Anzahl an Iterationen * 2 sind, verschwinden. Die connectivity legt fest, welche weiáen Pixel zu einer abzusch„lenden Schicht geh”ren. Ist die connectivity auf 4 gesetzt, besteht die Schicht aus jenen weiáen Pixels, die einen horizontalen oder vertikalen schwarzen Nachbarn haben. Ist die connectivity auf 8 gesetzt, besteht die Schicht aus jenen weiáen Pixels, die einen horizontalen, vertikalen oder diagonalen schwarzen Nachbarn haben. Ist die connectivity auf 6 gesetzt, gilt fr die geradzahligen Iterationen connectivity 4 und fr die ungeradzahligen connectivity 8. Befehlssyntax: Voreinstellung: Bereich: dilation: Vergr”áert weiáe Fl„chen Bei jeder Iteration wird allen weiáen Fl„chen eine (ein Pixel starke) Schicht hinzugefgt. Schwarze Teile oder L”cher, die kleiner sind als die Anzahl an Iterationen * 2, verschwinden. Die connectivity legt fest, welche weiáen Pixel zu einer anzufgenden Schicht geh”ren. Ist die connectivity auf 4 gesetzt, besteht die Schicht aus jenen weiáen Pixels, die einen horizontalen oder vertikalen schwarzen Nachbarn haben. Ist die connectivity auf 8 gesetzt, besteht die Schicht aus jenen weiáen Pixels, die einen horizontalen, vertikalen oder diagonalen schwarzen Nachbarn haben. Ist die connectivity auf 6 gesetzt, gilt fr die geradzahligen Iterationen connectivity 4 und fr die ungeradzahligen connectivity 8. Befehlssyntax: Voreinstellung: Bereich: propag(ation): Vergr”áert eine Bit-Ebene unter einer Maske Die propagation „hnelt der dilation sehr stark. Schwarze Pixel werden nur angefgt, wenn sie in der als Maske verwendeten Bit-Ebene weiá (1) sind. Die propagation kann angewendet werden, um die Origialkonturen von Fl„chen wiederzufinden, die nach erodierenden Iterationen verschwunden sind. Erster Parameter ist die Anzahl an Iterationen. Zweiter Parameter ist die Bit-Ebene, auf der die Vergr”áerung stattfinden soll (seed bitplane). Der dritte Parameter ist die Masken- Bit-Ebene. Die anderen Parameter sind wieder connectivity und Eckwert des Bilds. Wenn der Eckwert 0 betr„gt, wird nur auf der seed bitplane vergr”áert. Befehlssyntax: Voreinstellung: Bereich: skelet: Skelett mit Endpixels Das Skelett ist eine 1 Pixel dicke Linie in der Mitte weiáer Fl„chen. Die Skelett-Operation „hnelt der Erosion, aber die Pixel einer Schicht werden nur gel”scht, sofern ihre L”schung nicht die Topologie des Bilds ver„ndert. Eine zus„tzliche Einschr„nkung besteht darin, daá Pixels am Ende einer Skelettlinie nicht gel”scht werden. Die Anzahl der Iterationen sollte ziemlich hoch liegen, um das vollst„ndige Skelett ausfindig zu machen (die gr”áe Diagonale der weiáen Fl„chen dividiert durch 2). Die Operation stoppt, wenn die Anzahl an Iterationen erreicht ist, oder wenn sich die Pixels nicht mehr ver„ndern. Befehlssyntax: Voreinstellung: Bereich: -skelet: Skelett ohne Endpixels Das Skelett ohne Endpixels ist mit der vorangehenden Skelett-Operation identisch bis darauf, daá in diesem Fall die Endpixels gel”scht werden. Zusammenh„ngende Fl„chen schrumpfen auf einen Punkt zund L”scher in zusammenh„ngenden Fl„chen werden zu Ringen. Befehlssyntax: Voreinstellung: Bereich: contour: Ermittelt die Konturen von Fl„chen Resultat sind die Umrisse weiáer Fl„chen (aller weiáen Pixel mit einem oder mehreren schwarzen Nachbarn. Befehlssyntax: Voreinstellung: Bereich: majority: Ermittlung von Mehrheiten Das zentrale Pixel einer 3 * 3-Umgebung wird schwarz oder weiá gesetzt, je nachdem ob in der Umgebung mehr schwarze oder mehr weiáe Pixels vorkommen. Befehlssyntax: Voreinstellung: Bereich: remove(noise): Entfernt 'Pfeffer und Salz'-Bildrauschen Ein weiáes Pixel in einer vollst„ndig schwarzen 3 * 3-Nachbarschaft wird schwarz. Ein schwarzes Pixel in einer vollst„ndig weiáen 3 * 3- Nachbarschaft wird weiá. Befehlssyntax: Voreinstellung: Bereich: life: Game of Life Das berhmte Game of Life ist auch eine zellular-logische Operation! Befehlssyntax: Voreinstellung: Bereich: Spezielle Strichfigur-Pixels sinpix(els): Erfaát isolierte weiáe Pixels Diese weiáen Pixels haben keinen weiáenm Nachbarn in einer 3 * 3- Umgebung. Befehlssyntax: Voreinstellung: Bereich: endpix(els): Ermittelt die Endpixels einer Strichfigur Diese weiáen Pixels haben nur einen weiáen Nachbarn in einer 3 * 3- Umgebung. Befehlssyntax: Voreinstellung: Bereich: linkpix(els): Ermittelt alle Pixels mit zwei weiáen Nachbarn Diese weiáen Pixels haben zwei weiáe Nachbarn in einer 3 * 3- Umgebung. Befehlssyntax: Voreinstellung: Bereich: vertices: Ermittelt die Vertikalen in einer Strichfigur Diese weiáen Pixels haben mehr als zwei weiáe Nachbarn in einer 3 * 3- Umgebung. Befehlssyntax: Voreinstellung: Bereich: Bit-Operationen bcopy: Kopiert eine Bit-Ebene Befehlsparameter sind die Ausgangs-Bitebene und die Ziel-Bitebene. Befehlssyntax: Voreinstellung: Bereich: and: Logische UND-Verknpfung zweier Bit-Ebenen Befehlsparameter sind die Ausgangs-Bitebenen, auf die die UND-Funktion angewendet wird, und die Ziel-Bitebene. Befehlssyntax: Voreinstellung: Bereich: or: Logische ODER-Verknpfung zweier Bit-Ebenen Befehlsparameter sind die Ausgangs-Bitebenen, auf die die ODER- Funktion angewendet wird, und die Ziel-Bitebene. Befehlssyntax: Voreinstellung: Bereich: xor: Logische Exclusiv-ODER-Verknpfung zweier Bit-Ebenen Befehlsparameter sind die Ausgangs-Bitebenen, auf die die XOR-Funktion angewendet wird, und die Ziel-Bitebene. Befehlssyntax: Voreinstellung: Bereich: invert: Invertiert eine Bit-Ebene Erster Befehlsparameter ist die Bitebene, zweiter Parameter ist das Bild. Befehlssyntax: Voreinstellung: Bereich: set: Setzt eine Bit-Ebene weiá Erster Befehlsparameter ist die Bitebene, zweiter Parameter ist das Bild. Befehlssyntax: Voreinstellung: Bereich: reset: Setzt eine Bitebene schwarz Erster Befehlsparameter ist die Bitebene, zweiter Parameter ist das Bild. Befehlssyntax: Voreinstellung: Bereich: label: Markiert verbundene Komponenten Dieser Befehl markiert verbundene Komponenten in einem bin„ren Bild. Die maximale Anzahl der Markierungen betr„gt 255. (In der niedrigen Aufl”sung lassen sich die besten Ergebnisse mit don,3 gefolgt von bdisp erzielen) Befehlssyntax: Voreinstellung: Bereich: Utilities (*) don: Automatische Darstellung an Ist die automatische Darstellung angeschaltet, wird das Bild nach jeder Operation neu gezeichnet. Ein optionaler Parameter bestimmt die Art der Darstellung in der niedrigen Aufl”sung: 0: Darstellung aus (= doff) 1: Wenn alle Pixels einer 2 * 2-Umgebung auf der Original-Bit-Ebene 0 sind, wird ein schwarzer Punkt dargestellt. Wenn alle Pixels 1 sind, wird ein weiáer Punkt dargestellt. In allen anderen F„llen wird ein grauer Punkt dargestellt. 2: Die Bit-Ebene wird in Abh„ngigkeit von der Gr”áe des GEM-Fensters dargestellt. Wenn das erste Pixel einer Musterregion 0 ist, wird ein schwarzer Punkt dargestellt. Wenn das erste Pixel 1 ist, wird ein weiáer Punkt dargestellt. 3: Multiple Darstellung von Bit-Ebenen. Bit-Ebenen werden in Abh„ngigkeit von der Gr”áe des GEM-Fensters dargestellt. Bit-Ebene 1 wird rot dargestellt, Bit-Ebene 2 blau und Bit-Ebene 3 grn. Wenn ale drei unteren Bit-Ebenen 0 sind, werden die drei obersten Bit-Ebenen in Form von Grauwerten dargestellt. 4: Multiple Darstellung von Bit-Ebenen. Bit-Ebenen werden in Abh„ngigkeit von der Gr”áe des GEM-Fensters dargestellt. Bit-Ebene 8 wird rot dargestellt, Bit-Ebene 7 blau und Bit-Ebene 6 grn. Befehlssyntax: Voreinstellung: Bereich: (*) doff: Automatische Darstellung aus Ist die automatische Darstellung ausgeschaltet, wird das Bild nur jeweils nach den Befehlen gdisp oder bdisp neu gezeichnet. Befehlssyntax: (*) ton: Timer an Ist der Timer eingeschaltet, wird die Ausfhrungszeit jedes Befehls angezeigt. Befehlssyntax: (*) toff: Timer aus Timer ausschalten. Befehlssyntax: gdisp: Grauwert- oder Farbbild darstellen Diese Routine stellt ein Grauwertbild aus 256 * 256 schwarzen oder weiáen Punkten in der hohen Aufl”sung dar. In der niedrigen Aufl”sung werden 128 * 128 pixels a 8 Grauwerte (bzw. Farben) dargestellt. Bilder werden immer mit maximalem Kontrast dargestellt. Farbbilder werden in der niedrigen Aufl”sung dargestellt. Parameter ist das Bild (A, B, C oder D). Befehlssyntax: Voreinstellung: Bereich: bdisp: Stellt eine der 8 Bit-Ebenen eines Bilds dar Erster Befehlsparameter ist das Bild (voreingestellt: A). Zweiter Parameter ist die Bit-Ebene (voreingestellt: 1). In der hohen Aufl”sung werden schwarze oder weiáe Pixels dargestellt. Die Art der Darstellung in der niedrigen Aufl”sung h„ngt von dem (optionalen) don- Parameter ab. Befehlssyntax: Voreinstellung: Bereich: hist: Berechnet das Histogramm eines Bilds Das Histogramm wird ber das aktuelle Bildfenster (A, B, C oder D) gezeichnet. Ein Schwellenwert wird zur Segmentierung des Bilds aus dem Histogramm berechnet (fr den Befehl threshold). Der Befehlsparameter ist das Bild (voreingestellt: A). Befehlssyntax: Voreinstellung: Bereich: Palette: Interaktive Žnderung der Farbpalette Diese Option wird nur in der niedrigen Aufl”sung untersttzt. Preferences: Einstellungen „ndern Nach einer Skalierung der Bildfenster k”nnen die neuen Einstellungen gespeichert werden (oder auch nicht). Die Bilder k”nnen auf Bytegrenzen festgelegt werden (oder auch nicht). help: Interaktives Hilfe-System zu den Befehlen Befehlssyntax: APPENDIX: Struktur des File-Headers /* gesetzt den fall, ein headerfile heisst BILD.HD, dann enth„lt es die struktur des korrespondierenden image-file BILD.IM mit allen parametern */ typedef struct short adress; /* bildadresse im speicher */ short format; /* format */ short sizex; /* dimension 1 */ short sizey; /* dimension 2 */ short sizez; /* dimension 3 */ unsigned short commsz; /* kommentarl„nge in bytes */ short data(16); /* vom user-bild abh„ngige daten */ HEADER; #define F WORDS 0 /* format-words im bild */ #define F BYTES 1 /* format-bytes im bild */ #define F FOBIT 2 /* vier-bits-bild, gepackt in 4 pixel/word */ #define F TWBIT 3 /* zwei-bits-bild, gepackt in 8 pixel/word) */ #define F SBITS 4 /* einzelne format-bits im bild */ Die folgenden Leute haben zur Entstehung von AIM beigetragen: Frans Groen: Image Processing Robert de Vries: GEM-Schnittstelle Igor Weber (Universit„t Zagreb, YU): Farbdarstellung Gert van Antwerpen: lmin, lmax, unif, label Piet Verbeek: hara-, have-Filter Lucas van Vliet, Ben Verver: erosion, dilation, propagation, skeleton Jaap Joosten: Test und evaluation Rijswijk, 1. Juli 1987 Bitte senden Sie Anmerkungen und Kommentare an Frans Groen, Applied Physics Department, Delft University of Technology, Lorentzweg 1, NL-2628 CJ Delft, Niederlande.