WPF Bildverarbeitung: Übungen ImageJ

 

 

Prof. Dr. Wolfgang Konen                          FH Köln                                                        WS06

 

Download ImageJ-Tutorial von W. Bailer im ILIAS-Verzeichnis zu WPF 44

 

Benutzung ImageJ

Ü1.                Bilder und Selektionen

Starten Sie ImageJ.
Machen Sie sich mit den wichtigsten Befehlen im
Menü "Edit" vertraut.
Laden Sie das Bild
images\baboon.jpg.

o       Wählen Sie eine genau 150x100 Pixel (w x h) große Region aus dem Bild aus.

o       Erzeugen Sie ein neues Bild "Ausschnitt-baboon", das genau diese Region enthält (mind. 2 verschiedene Methoden)

o       Erzeugen Sie jetzt eine Kopie des Originalbildes "Neg-baboon", für die Sie das Negativ erzeugen (Schwarz wird Weiß, Blau wird Orange usw.).  Mit welchem Shortcut kann man das Negativ bilden?

o       Kontrollieren Sie für Pixel (x,y)=(176,68): Welche RGB-Werte hat es im Original, welche RGB-Werte im Negativbild? Wie ist wohl die Formel für die Umrechnung?

Fahren Sie fort mit:

 

Ü2.                Bilder konvertieren / modifizieren

Machen Sie sich mit den wichtigsten Befehlen im Menü "Image" vertraut (OHNE Stack, OHNE Lookup Tables).
Laden Sie das Bild images\baboon.jpg.

o       Wählen Sie eine beliebig platzierte 120x100 Region aus und packen Sie diese in ein neues Bild (s. Ü1)

o       Machen Sie daraus ein doppelt so großes Bild (Faktor 2 mehr Pixel in jeder Richtung) (2 Möglichkeiten)

o       Was ist der Unterschied zu Zoom auf 200%?

o       Konvertieren Sie den Ausschnitt auf 8-Bit-Grauwertbild und speichern Sie dies als "baboon-grey.jpg" ab.

o       Was passiert, wenn Sie den Ausschnitt jetzt wieder auf RGB konvertieren? Ist also RGB ® 8-Bit-Grau ® RGB eine invariante Operation?

o       Wäre 8-Bit-Grau ® RGB ® 8-Bit-Grau eine invariante Operation?

 

 

Ü3.                     Macros

Mit Macros lassen sich Bildverarbeitungsschritte in ImageJ ähnlich wie mit einer Skriptsprache automatisieren.

o       Schalten Sie den Macro-Recorder ein (Plugins – Macros – Record...) und führen Sie die Verarbeitungsschritte aus Ü2 erneut durch.

o       Speichern Sie das Macro als "MacroBaboon.txt" ab.

o       Installieren Sie dieses Macro und bringen es erneut zur Ausführung

 

 

Ü4.                     Beispiel-Macros


Spielen Sie einige Macros aus dem Ordner <ImageJ>/macros durch (Plugins – Edit..., im Edit-Window dann Strg+R). Versuchen Sie nachzuvollziehen, was das jeweilige Macro macht und wie es dies mit seinen einzelnen Befehlen macht. Schlagen Sie Befehle, deren Bedeutung Ihnen unklar bleibt, in der Dokumentation
Builtin-Functions nach. Interessante Demo-Macros sind

o       DoWandDemo.txt

o       DrawRandomDots.txt

o       FindMaxPixelLocation.txt

o       ....



 

Bildbearbeitung mit ImageJ

Hinweis (Für jede der Nachfolgenden Übungen):
Nachdem Sie durch Ausprobieren wissen, wie Sie die Übung lösen können, dokumentieren Sie diese Ihre Lösung, indem Sie sie als möglichst kompaktes Macro aufzeichnen, abspeichern und ausführlich dokumentieren!
(Kommentare in Macros werden wie in Java durch "//" eingeleitet)

 

Ü5.                     Grünes Reiskorn

Laden Sie das Bild images\rice-bin.png. Erzeugen Sie durch geeignete ImageJ-Operationen ein RGB-Bild mit folgenden Eigenschaften:

o       es sieht überall so aus wie rice-bin.png,

o       außer an der Stelle des mit Pfeil markierten Reiskorns, dieses ist komplett grün gefärbt.


[Hinweis: RGB-Bild, Wand-Tool]


           

 

 

 

Ü6.                     "Blau gerahmter Affe"

Laden Sie das Bild images\baboon.jpg. Verkleinern Sie das Bild um den Faktor 2 und versehen Sie es dann mit einem genau 5 Pixel breiten blauen Rand, wie nebenstehend gezeigt.
Kontrollieren Sie durch Explorieren der Pixelwerte im Status-Bar, dass genau 5 Spalten / Zeilen den RGB-Wert für Blau haben (welcher?)



[Hinweis: Selection, erst spezifizieren, dann invertieren]

 

 

 

 

 

 

ImageJ-Plugins programmieren

 

Ü7.                     Spieglein, Spieglein ...

Verwenden Sie MyInverter_.java (aus [Burger05, S. 33]) als Vorlage, um ein eingenes Plugin zu programmieren, das ein Grauwertbild horizontal (oder vertikal) spiegelt. Testen Sie das neue Plugin anhand geeigneter (auch sehr kleiner) Bilder und überprüfen Sie die Ergebnisse genau.

Zusatzaufgabe: Erweitern Sie das Plugin so, dass im Falle einer im Bild definierten rechteckigen ROI (Region of Interest) nur dieses Rechteck gespiegelt wird.

Ü8.                     Weißer Rahmen

Erstellen Sie ein neues Plugin für 8-Bit-Grauwertbilder, das um (d.h. in) das übergebene Bild (beliebiger Größe) einen weißen Rahmen (Pixelwert = 255) mit 10 Pixeln Breite malt.

Ü9.                     Horizontales Rollen

-- s. Aufg. 3.4 in [Burger05] --

Zusatzaufgabe: Erweitern Sie das Plugin so, dass im Falle einer im Bild definierten rechteckigen ROI (Region of Interest) nur dieses horzontal gerollt wird.

Ü10.               Einfache GUI

Für viele Algorithmen muss man einige Parameter eingeben. ImageJ stellt einfache Methoden zur Verfügung, um aus Plugins über einen Dialog numerische Werte, Strings, Checkboxen oder Listen einzugeben: Die Klasse GenericDialog.

Arbeiten Sie die Abschnitte 6.1-6.3 aus dem Tutorial [Bailer01] durch und schreiben Sie ein Plugin, das vom User die Eingabe eines oberen und unteren Schwellwertes O und U verlangt und dann in einem Grauwertbild alle Pixel mit Grauwert aus Intervall [U,O[ auf weiß und alle anderen auf schwarz setzt (Binarisierung).


Zusatzaufgabe: Checken Sie, ob der User im Dialog auch gültige Zahlenwerte eingegeben hat und geben Sie fallweise eine Fehlermeldung in einer Dialogbox aus.

[Hinweis: Methoden boolean invalidNumber() der Klasse GenericDialog und IJ.showMessage(String s)]