Das quelloffene Bildanalyse- und Bildverabeitungs-Programm Image-J kommt aus einem medizinischen Institut in den USA. Dass sein GUI sehr zurückhaltend startet, täuscht über die gewaltigen Anwendungs- und Erweiterungsmöglichkeiten hinweg.
Um Fotos zu betrachten und zu verschönern, sind Gimp oder Darktable zweifellos gute Werkzeuge. Sie scheitern jedoch an der in der Wissenschaft oder der Industrie anfallenden Aufgabe, Bilder quantitativ zu analysieren. Hier schlägt die Stunde von Spezialprogrammen wie Image-J [1], das sich in der wissenschaftlichen Bildanalyse einen festen Platz erarbeitet hat.
Wayne Rasband, ein früherer Mitarbeiter der National Institutes of Health in den USA, hat seit 1997 die Software entwickelt und ist auch heute der Projektverantwortliche des Hauptprogramms, das Image-J 1 [2] genannt wird. Das personell besser bestückte Projekt Image-J 2 [3] entwickelt an der Bibliothek Imglib2, das multidimensionale Bilddaten verarbeitet. Image-J enthält sowohl Image-J 1 als auch Image-J 2.
Des Weiteren existieren von Image-J diverse Distributionen mit Zusatzpaketen, von denen Fiji (Fiji is just Image-J, [4]) wohl die bekannteste ist. Ihre Macher wollten anfangs möglichst viele Werkzeuge für die Analyse von Bildern biologischer Proben bündeln. Mit den Erweiterungen wuchs nach und nach auch Fijis Anwendungsbreite. Viele Plugins, die Fiji mit der Zeit zusammengetragen hat, sind heute wiederum Bestandteil von Image-J selbst, etwa der Updater und der Script Editor. Image-J’s Entwicklerkosmos ist also einigermaßen unübersichtlich, was dem Anwender jedoch egal sein darf.
Von ganz kleinen Dimensionen bis in ganz große
Das mit einer grafischen Oberfläche startende Java-Programm stellt alles bereit, was für eine statistische Bildanalyse erforderlich ist. Nur einige Beispiele: Es zählt Leukozyten und filtert Objekte aller Art nach Form, Größe und Farbe. Der Grad der Homogenisierung und der Fettgehalt von Milch folgen unmittelbar aus der Größe und dem Mengenanteil von Fetttröpfchen, die ein Mikroskopbild offenbart.
Weitere Anwendungsbeispiele: Auf Karten oder entsprechend vorverarbeiteten Luftaufnahmen vermisst das Programm Agrarflächen und ihre Verteilung. Metallurgen schließen aus der Kornverteilung bei Schliffbildern auf die Eigenschaften des Werkstoffs. In der Produktionstechnik gibt die Zahl von Einschlüssen Hinweise auf die Qualität der Produkte. Astronomen nutzen Image-J mit dem unglaublich funktionsreichen Zusatzpaket Astro Image-J [5], um Himmelsaufnahmen zu verbessern und astronomische Objekte besser herauszustellen.
Keine Hürde: Installation und der erste Start
Image-J erwartet auf allen Zielplattformen eine funktionierende Java-Installation. Für Anwender der gängigen Linux-Distributionen steht es über die Paketquellen bereit. Zum Redaktionsschluss dieses Magazins hielt beispielsweise Ubuntu die Version 1.51 vor. Auf der Seite der Entwickler [6] findet sich die Version 1.52. Das Zip-File ist nur 6 MByte groß – stets vorausgesetzt, das Gastsystem verfügt über eine Java-Installation.
Die Fiji-Entwickler stellen unter [7] ein aktualisiertes Programmpaket in der Version 1.52i bereit. Es bringt seine eigene Java-Umgebung mit, weshalb der Download fast 300 MByte beansprucht. Viele der optionalen Plugins sind bereits installiert, außerdem eine Autoupdate-Funktion.
Nach Entpacken der Zip-Datei gelingt der Programmaufruf über »ImageJ-linux64« (Fiji 1.52b) oder »java -jar ij.jar« (Image-J 1.50). Der Programmstart erfolgt unspektakulär (siehe Abbildung 1). Ähnlich unaufdringlich präsentiert sich das mächtige Hilfswerkzeug seinen Benutzern. Je nach Position des Cursors erscheinen am unteren Rand die Optionen, die sich hinter einem Icon verbergen. Schlagwörter im Suchfenster rechts unten öffnen weitere Beschreibungsseiten, die insbesondere den Zugang zu den Filterfunktionen erleichtern (Abbildung 2). Wer ausschließlich nach Befehlen suchen will, kann auch den Weg über »Plugins | Utilities | Find Commands…« gehen.
Verwendete Hardware
Der Funktionsumfang von Image-J ist sehr mächtig und die Anwendungsmöglichkeiten so vielfältig, dass ein Artikel beide nur anhand ausgewählter Beispiele beschreiben kann, was der folgende Beitrag auch tut. Dabei lässt er es sich aber nicht nehmen, selbst angefertigte mikroskopische Bilder an passender Stelle zu benutzen. Denn (einfache) quantitative Bildanalysen setzen flächenhafte Bilder voraus, wie sie beispielsweise in der Mikroskopie entstehen.
Abbildung 3 zeigt den Kamerakopf eines simplen USB-Mikroskops. Der Schaft hat einen Durchmesser von 8 Millimeter, ausreichend groß für ein Beleuchtungssystem bestehend aus acht kleinen Leuchtdioden. Im Unterschied zu so genannten Endoskopkameras verfügen USB-Mikroskope über eine Fokussierschraube. Mit ihr überstreicht das Mikroskop typischerweise einen Arbeitsabstand von 10 Millimeter (maximale Vergrößerung) bis 50 Millimeter (maximaler Weitwinkel).
Anzahl von Objekten herausfinden
Das erste Mikrofoto in Abbildung 4 links oben zeigt echten Vanillezucker – “echt”, weil gemahlene Vanilleschoten beigemischt sind. Vor dem roten Hintergrund heben sich weiße Zuckerkristalle ab, unregelmäßig geformte Schotenreste und die kugelförmigen Vanillesamen. Um mit Image-J ihre Anzahl zu bestimmen, bedarf es folgender Schritte:

Abbildung 4: Die Aufgabe lautet, Vanille-Samen in einer Vanille-Zucker-Mischung auszuzählen. Das Ergebnis nach einigen Klicks: zwölf Stück.
- »File | Open…« und Auswählen der Bilddatei. Neben den üblichen Bildformaten wie JPG, Tiff oder PNG öffnet das Programm übrigens auch die Formate Dicom (Medizin), FITS (Astronomie) und andere.
- »Process | Substract Background…« hilft den Bildkontrast angleichen.
- »Image | Type | RGB Stack« anhaken spaltet das Bild in seine Farbkanäle auf. Nun aus dem Bildstack das Bild mit dem Rotkanal auswählen (Abbildung 4, oben rechts).
- »Image | Adjust | Threshold…«, Bildschwelle einstellen und in ein Binärbild umwandeln (Abbildung 4, unten links).
- Unter »Analyse | Analyse Particles…« »Summarize« anhaken, bei »Show:« die »Outlines« auswählen, das öffnet mehrere Fenster. Eines (»Summary of Dateiname«) zeigt die Gesamtfläche und die Anzahl der Teilchen an (Abbildung 4, rechts unten).
Somit ist die Zähl-Aufgabe gelöst: Zwölf Vanillesamen enthält das Bild.
Mikroskopierte Objekte vermessen
Das Brennhaar in Abbildung 5 ist mit dem USB-Mikroskop aus Abbildung 3 aufgenommen. Um seine Maße zu bestimmen, genügt es nicht, den Vergrößerungsfaktor anzugeben. Denn der ändert sich mit der Größe der Reproduktion. Üblich ist es, wissenschaftliche Bilder mit einem Maßstab zu versehen, hier rechts unten im Bild.
Der Eichprozess von Bildern passiert durch den Vergleich mit einer Referenzlänge. Abbildung 6 zeigt eine Mikroskala von 2 Millimeter Länge. Wer keine Mikroskala zur Hand hat, kann sich mit einem menschlichen Kopfhaar behelfen, wie es hier senkrecht durch das Bild läuft. Dessen Durchmesser liegt typischerweise bei 100 Mikrometern.
Die Eichung erfolgt in drei Schritten. Zunächst misst der Image-J-Benutzer die Pixelgröße. Im Beispiel aus Abbildung 6 bilden 455 Pixel eine Länge von 2 Millimeter ab. Der zweiten Schritt überträgt die Eichung auf das zu messende Bild. Bei Mikroskopen mit kleiner Schärfentiefe genügt es, die Brennweite beizubehalten. Beim USB-Mikroskop bleibt deshalb die Rändelschraube unberührt, der Bediener stellt das Objekt durch Verändern des Objektivabstands scharf. Zuletzt zeichnet das Programm den Maßstab ins Bild. Die Schritte eins und zwei umzusetzen erfordert folgende Arbeiten:
1. Das Linienwerkzeug (fünftes Icon von links) bestimmt die Strecke von 2 Millimeter zwischen den beiden äußeren Millimetermarken. Die gelbe Messlinie ist in Abbildung 6 hervorgehoben.
2. Das Menü »Analyse | Set Scale…« öffnet das Eingabefenster für die Eichung, siehe Abbildung 7. Die Länge der Strecke aus 1. steht bereits im ersten Eingabefeld (455 Pixel).
3. Im zweiten Feld gibt der Benutzer die gemessene Länge ein, hier »2« Millimeter. Feld vier fragt nach der Einheit: »mm«.
4. Zur Information wird unten das Verhältnis von Pixeln zur Länge ausgegeben, hier 227,5 Pixel pro Millimeter.
5. Um den Maßstab zu zeichnen, öffnet der Benutzer das Menü »Analyse | Tools | Scale Bar« und legt im oberen Eingabefenster die Länge des Maßstabs fest, wie sie auf dem Bild erscheinen soll. Dabei verwendet er besser einfache Zahlen wie »1« Millimeter statt »1.345«.
In der Feinanpassung bestimmt er Dicke und Farbe und positioniert den Messbalken entweder auf der Auswahl oder in einer der Bildecken.
Ein Profil in Makrofotos analysieren
In Abbildung 8 sind Sicherheitsmerkmale eines 20-Euro-Geldscheins zu sehen. Die rote Linie ist mit dem Linienwerkzeug von Image-J hineingezeichnet. Das Ziel soll sein, an der Linie entlang die Helligkeitswechsel zu bestimmen, um beispielsweise den Schein als echt zu identifizieren.
Der Befehl »Analyze | Plot Profile« erzeugt einen Line-Scan entlang der ausgewählten Linie. Das dunkle Strichmuster des Geldscheins spiegelt sich deutlich im Diagramm der Abbildung 9 wider. In der Menüleiste erscheint »Live« in Rot. Dieser Modus generiert den Line-Scan für jede Linie neu, die der Benutzer mit dem Linienwerkzeug zeichnet. Der Schalter »List« öffnet eine Tabelle mit allen Koordinaten des Diagramms. Einfacher geht es kaum, um die Daten zur Weiterverarbeitung in andere Programme zu übertragen.

Abbildung 9: Das Profil als Resultat des Linienscans aus Abbildung 8, das sich mit den Angaben der Bundesdruckerei vergleichen ließe.
Periodizität in Strukturen erkennen
Abbildung 10 zeigt in der Hauptsache eine Mikroaufnahme eines Farbfotos im Linux-Magazin. Die Druckpunkte haben einen Abstand von ungefähr 200 Mikrometer, also zwei Haaresbreiten. Eine in Image-J vollzogene Fourier-Transformation ist geeignet, periodische Strukturen hervorzuheben. Um die Rechnung zu vereinfachen, sollte das Ausgangsbild quadratisch und die Seitenlänge ein Vielfaches von 2 sein. Nur dann lässt sich statt der diskreten eine “schnelle Fourier-Transformation” ausführen (Fast Fourier Transform, FFT).

Abbildung 10: Druckrasterpunkte eines Farbdrucks in einer Zeitschrift, oben links die Fourier-Transformation.
Das Originalbild hat eine Größe von 512 mal 512 Pixel. Die Transformation (»Process | FFT | FFT«) erzeugt ein komplexes Bild der gleichen Größe. In einfachen Fällen genügt es, mit dem Betragsbild zu arbeiten. Der innere Ausschnitt der Fourier-Transformation ist in Abbildung 10 oben links zu sehen. Im Originalbild liegt der mittlere Abstand der Reflexe bei 19,6 Pixel, was einer Periode von 512:19,6 = 26 Pixel entspricht. Je größer der periodische Abstand der Punkte ist, desto enger rücken die Reflexe der Transformierten zusammen.

Abbildung 11: Eine inverse schnelle Fourier-Transformation basierend auf Abbildung 10 betont die Struktur.
Die Fourier-Transformation ist nicht nur ein Hilfsmittel, um Perioden genauer auszumessen. Sie erkennt wiederkehrende Bildstrukturen und betont sie durch eine Rücktransformation (»Process | FFT | Inverse FFT«), deren Ergebnis in Abbildung 11 zu besichtigen ist.
Morphologisch filtern
Während der Verarbeitung des Vanille-Zucker-Bildes (siehe oben) entstehen mehrere Binärbilder, also Bilder, die nur zwei Farbwerte kennen: Schwarz und Weiß. Auf sie lassen sich so genannte morphologische Filter anwenden. Von denen kennt Image-J wohl so ziemlich alle. Der Anwender gelangt zum jeweiligen Filter über die Suchzeile des Programms, wenn er beispielsweise den Begriff “Voronoi” eingibt.
Im Folgenden soll es um einen einfachen Weg gehen, der eine Aussage über den mittleren Abstand von Bakterienkolonien trifft – recht typisch für die morphologische Bildverarbeitung, die mit nicht-linearen Algorithmen Formen und Strukturen erkennen will. Das Foto in Abbildung 13 dient als Ausgangspunkt, ein Binärbild, das aus dem oberen Bereich von Abbildung 12 herausgeschnitten ist.

Abbildung 13: Das Binärbild basiert auf der Abbildung 12.
Unter dem Menüpunkt »Process | Binary | Voronoi« verbirgt sich der Voronoi-Algorithmus. Basierend auf dem euklidischen Abstand berechnet er die Punktmengen mit dem geringsten Abstand zum Zentralpartikel. Linien trennen diese Flächen voneinander. (Interessant, aber hier nicht von Belang: Die Intensität der Voronoi-Linie ist ein Maß für den Abstand von der Linie zum Partikel.)

Abbildung 14: Die errechneten Voronoi-Linien, überlagert mit durchnummerierten Partikeln. Quelle: Joaquin D Taylor, CC BY 4.0, https://creativecommons.org/licenses/by/4.0/
Nun gilt es, die Flächen um die Partikel zu betrachten. Dazu erzeugt der Benutzer wieder ein Binärbild der Voronoi-Linie. Nach einer Invertierung trennen weiße Linien die schwarzen Flächen. In Abbildung 14 ist zudem das Ausgangsbild (Abbildung 13) überlagert. Die Größe dieser Flächen (genauer deren Quadratwurzeln) ist ein Maß für den Abstand der Partikel voneinander, die Streuung ihrer Größe für die Streuung des mittleren Abstands.
Bevor das Programm sie automatisch vermisst, schaltet der Anwender unter »Analyze | Set Measurements…« zusätzlich die Parameter »Center of mass«, »Fit ellipse« und gegebenenfalls »Feret’s diameter« ein.
Nach der Auswertung über »Analyze | Analyse Particles« gibt Image-J die Messwerte in einer Tabelle aus, (Abbildung 15). Bei Bedarf übergibt der Bediener die Daten an ein Statistikprogramm. Das berechnet dann beispielsweise die Korrelation von mittlerem Abstand und Lage der Partikel, um Cluster automatisch zu erkennen.
Komplexe Objekte zählen
Abbildung 16 zeigt oben links eine Blütendolde der Gartenpflanze Giersch (Aegopodium podagraria). Image-J ist in der Lage, die fast 300 Blüten zu zählen. Das Vorgehen ist ähnlich dem von Abbildung 4. Zusätzlich hat der Benutzer auf das Binärbild den morphologischen Filter Watershed per »Process | Binary | Watershed« angewendet. Der Algorithmus erkennt eingeschnürte Partikel und trennt sie auf. Nebenbei berechnet das Programm Schwerpunkt, Fläche oder Umfang aller Partikel.
In der Ausschnittsvergrößerung in der unteren Reihe verweisen die Pfeile auf das Resultat. An vielen Stellen konnte der Filter Blüten korrekt trennen (drei Pfeile), an manchen separierte er zu viele oder zu wenige (einzelne Pfeile).
Die Bildmarkierungen sind ebenfalls mit Image-J gezeichnet. Verweilt die Maus auf dem Linien-Icon, gibt die Hilfezeile die nötigen Informationen: Das Icon mit der rechten Maustaste klicken und Pfeilsymbole auswählen. [Ctrl]+[D] zeichnet den Pfeil direkt ins Bild, [Ctrl]+[B] nur in eine Maske. Wer das Bild im Tiff-Format speichert, dem bleibt die Maske separat erhalten, anderenfalls verschmilzt sie mit dem Bild.
Bestandteile wiegen
Die Schnittfläche einer Blutwurst ist in Abbildung 17 zu sehen. Gesucht ist der Fettgehalt der Wurst. Der Befehl »Image | Type | HSB-Stack« zerlegt das Bild in drei Komponenten Farbwert, Farbsättigung und Hellwert (Hue, Saturation, Brightness). Im Teilbild mit der Komponente Farbsättigung tritt der weiße Fettanteil am deutlichsten hervor (siehe kleine Teilbilder). Nach der Umwandlung in ein Binärbild erfasst Image-J den Flächenanteil. Um den Hintergrundbereich aus der Messung auszuschließen, grenzt der Benutzer die Wurstfläche mit dem Auswahlwerkzeug Lasso ein.
Das Programm kommt auf einen Flächenanteil von 17 Prozent. Die Dichte von Muskelgewebe liegt bei 1,05 Gramm pro Kubikzentimeter, die von Fett bei 0,95 Gramm pro Kubikzentimeter. Dem Flächen- oder Volumenanteil von 17 Prozent entspricht somit ein Gewichtsanteil von 15 Prozent. Der Wert ist im Einklang mit der Herstellerangabe von 14 Prozent.
Ein Gelände vermessen
Nicht nur Lebensmittel, auch Grundstücke kann Image-J ausmessen. Abbildung 18 zeigt den Englischen Garten in München in einer Darstellung aus Openstreetmap [8]. Nach der Eichung – den Maßstab schreibt Openstreetmap unten links in die Karte – rechnet Image-J alle Angaben von Pixeln in Kilometer um. Die Grenzen umfährt der Benutzer mit dem Polygon-Auswahlwerkzeug. Ein Klick auf »Analyse | Measure« (oder kürzer mit [Ctrl]+[M]) liefert für die eingeschlossene Fläche die Größe von 3,43 Quadratkilometer, also 343 Hektar.
Der Wert scheint kleiner zu sein als die offizielle Angabe von 375 Hektar [9]. Des Rätsels Lösung sind die Maximiliansanlagen um den Friedensengel, auf der Karte unten links. Wer ihre Fläche von 30 Hektar mitzählt, erkennt, dass die Berechnung von Image-J korrekt ist.
Filter benutzen
Von den vielen Bildfiltern, die Fiji bereits in seiner Standardausstattung mitbringt, greift der folgende Abschnitt drei heraus. Normalerweise bindet Image-J Zusatzfilter unter »Plugins | Utilities« ein.
Unter der Bezeichnung Liquid Remover, Seam Carving oder inhaltsabhängige Bildverzerrung firmiert ein Werkzeug, das das Größenverhältnis von Bildern anpasst, ohne dabei bildtragende Elemente zu verzerren. Ein Beispiel zeigt Abbildung 19. Es ist das Ergebnis einer Stauchung in der Breite um 20 Prozent von Abbildung 1. Die Texte und Icons bleiben nahezu unverändert.
Abbildung 19: Eine Seam-Carving-Filterung nach der 20-prozentigen Stauchung von Abbildung 1.
Dem scheinbar magischen Verhalten liegt eine einfache Idee zugrunde. Statt bei der Breitenreduktion senkrechte Pixelzeilen zu entfernen, sucht Seam Carving nach einem Pfad von unten nach oben mit genau einem Pixel pro Zeile, der die geringsten Störungen des Bildes verursacht.
Der zweite Filter, lokale Kontrastanpassung, schaut sich die Umgebung der Pixel an, um dort den Kontrast anzuheben. So erzeugt sie aus einer ungleichmäßig beleuchteten Buchseite (Abbildung 20, oben) einen schwarzen Text auf weißem Untergrund (unten).
Abbildung 21 zeigt den Klassiker numerischer Bildverarbeitung, die Detektion von Bewegungen durch Verrechnen der Pixel: Der dritte herausgegriffene Filter startet mit »Process | Image Calculator…«. Die beiden oberen Bilder verrechnet Image-J durch eine einfache Subtraktion zu dem unten rechts. Negative Pixel werden erst erkennbar, wenn der Benutzer beide Bilder vorab in 32-Bit-Floating-Point umwandelt: »Image | Type | 32-bit«.
Im Unterschied zur einfachen Differenz von Integer-Farbwerten zeigt das kleine Overlay auch die Abweichung der Münze auf der rechten Seite. Die Vorzeichenproblematik umgeht der »XOR«-Operator. Das rechte untere Teilbild zeigt sowohl die deutliche Abweichung auf dem Untergrund als weiße sichelförmige Flächen als auch die verschobene Münze selbst. Zudem sind Unterschiede beim Bildrauschen beider Kandidaten sichtbar.
Makros und Batchbetrieb
Dass Image-J auf eine beachtliche Zahl an Plugins blicken kann, resultiert aus seiner mächtigen Makrosprache. Einen ersten Eindruck über den Aufbau gibt der Makrorekorder in »Plugins | Macros«. Er zeichnet alle Bearbeitungsschritte auf und erläutert die benutzten Funktionen. Das folgende Beispiel wird das Bild in Abbildung 22 erzeugen. Die Makroaufzeichnung gelingt mit wenigen Schritten: Der Benutzer öffnet über »Plugins | Macros | Record…« ein Eingabefenster für die »Macro.ijm«. Dort gibt er die Zeilen

Abbildung 22: Das Macro aus Listing 1 erzeugt ein Textfeld und einen Graustufenkeil.
Listing 1
findedges.ijm-Makro findet Bildkanten
01 fn=getArgument();
02 print('Bild: ', fn)
03 open(fn);
04 run("Find Edges")
05 saveAs("jpg", "out");
06 close();
07 run("Quit");
print("Hello world");
newImage("Untitled", "8-bit ramp", 256, 256, 1);
ein. Falls gewünscht, speichert er das Bild mit:
saveAs("png", "Pfad_zum_Bild/Bildname");
Er speichert das Makro und ruft es mit »Plugins| Macros | Run…« auf.
Mit den aufgezeichneten oder programmierten Makros fällt es Image-J leicht, im Batchbetrieb zu arbeiten. Typischerweise erwartet das Programm Skripte in seinem Unterverzeichnis »macros/«. Dort könnte die Textdatei aus Listing 1 (»macros/findedges.ijm«) liegen. Die Batchverarbeitung startet beispielsweise aus dem Image-J-Verzeichnis heraus per:
ImageJ-linux64 --headless --console -macro findedges.ijm /Pfad_zu/brennnessel.jpg
Auf der Zeile ruft »ImageJ-linux64« das Programm Image-J auf. Der Parameter »–headless« unterdrückt den Start der Eingabeoberfläche. Der Schalter »-macro« startet das übergebene Makro im Unterverzeichnis »macros/« und übergibt den nachfolgenden String an das Programm. Der Schalter »–console« leitet Meldungen von Image-J an die Konsole weiter. Für Tests empfiehlt es sich, den Schalter zunächst herauszunehmen, da mit Schalter nicht mehr alle Fehlermeldungen beim Benutzer ankommen.

Abbildung 23: Betonung der Bildkanten (vergleiche auch Abbildung 5).
Die ersten drei Zeilen in Listing 1 verarbeiten die übergebene Textzeile und rufen das Bild »brennnessel.jpg« auf. Die Schreibweise des Befehls »Find Edges« ist schwer zu erraten, auch weil die Groß-Klein-Schreibung zu beachten ist. Hier hilft der Makrorecorder. Nach seinem Start gibt er den Funktionsnamen preis, wenn der Benutzer den Menübefehl »Process | Find Edges« auf der Oberfläche anklickt. Die Zeilen 5 und 6 speichern das bearbeitete Bild im aktuellen Verzeichnis unter »out.jpg«. Abbildung 23 zeigt das Ergebnis der Bearbeitung.
Listing 2
Analyse-Ergebnisse in CSV-Tabellen speichern
01 run("Analyze Particles...", "display summarize");
02 saveAs("Results", "Summary.csv");
03 saveAs("Results", "Results.csv");
Genauso einfach gelingen auch komplexe Analysen. Beispielsweise speichern die Befehle aus Listing 2 die Daten einer Partikelauszählung in einfachen Textdateien, auf die weitere Programme zur Auswertung zugreifen könnten.
Totales Understatement
Für ein Bildverarbeitungs- und Bildanalyseprogramm startet Image-J sehr zurückhaltend – nur ein paar Icons, das Hauptmenü zeigt gerade mal acht (recht pixelige) Einträge. Wer nun annimmt, die in den Untermenüs angebotenen Funktionen in kurzer Zeit zu durchblicken, sieht sich aufs Positivste getäuscht: Hier ist ein Tausendsassa am Werk.
Dieser Artikel hat es daher nur geschafft, einige Vermessungsfunktionen und Bearbeitungsfilter zu streifen. Auch die Makros erläuterte er nur im Ansatz, ebenso die mächtigen mathematischen Funktionen, die direkten Zugriff auf die numerischen Werte der Pixel erlauben. Die Bearbeitung von Bildfolgen (Stacks) blieben genauso außen vor wie das Einbetten von Image-J-Programmbibliotheken in Python oder Java, was etwa in Embedded-Systemen mit angeschlossenen Kameras großen Nutzen verspricht.
Auf der anderen Seite ist Image-J spielend in der Lage, Urlaubsfotos mit ein paar Eingriffen in Sachen Kontrast und Gradationskurven auf die Sprünge zu helfen. Alles in allem ist Image-J eine Einladung an alle, für die ein Bild mehr ist als ein Haufen leuchtender Pixel.
Infos
- Image-J: https://imagej.nih.gov/ij/sowiehttps://imagej.net
- Image-J 1: https://github.com/imagej/imagej1/
- Image-J 2: https://imagej.net/ImageJ2
- Fiji: http://fiji.sc
- Astro Image-J: https://www.astro.louisville.edu/software/astroimagej/index.html
- Image-J-Distribution der Entwickler: http://wsr.imagej.net/distros/cross-platform/ij152.zip
- Download Fiji: https://imagej.nih.gov/ij/download.html
- Englischen Garten in Openstreetmap: https://www.openstreetmap.org/way/159075298#map=12/48.1439/11.5868
- Offizielle Größe des Englischen Gartens: http://www.muenchen.de/sehenswuerdigkeiten/muenchen-in-zahlen.html



















