Prof. Dr. Wolfgang
Konen FH Köln WS06
Download ImageJ-Tutorial von W. Bailer im ILIAS-Verzeichnis zu WPF 44
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:
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?
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
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 ....
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)
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.
|
|
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]
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.
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.
-- 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.
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)]