Digital Signal Processing Reference
In-Depth Information
•
PlugIn
benotigt keinerlei Argumente, kann daher auch ohne Betei-
ligung eines Bilds ausgefuhrt werden,
3
ImageJ
•
PlugInFilter
wird beim Start immer ein Bild (das aktuelle Bild)
ubergeben.
Wir verwenden in diesem Buch fast ausschließlich den zweiten Typ -
PlugInFilter
- zur Realisierung von Bildverarbeitungsoperationen. Ein
Plugin vom Typ
PlugInFilter
muss mindestens die folgenden zwei Me-
thoden implementieren (Abb. 3.2) -
setup()
und
run()
:
int setup (String
arg
, ImagePlus
img
)
Diese Methode wird bei der Ausfuhrung eines Plugin von ImageJ
als erste aufgerufen, vor allem um zu uberprufen, ob die Spezifika-
tionen des Plugin mit dem ubergebenen Bild zusammenpassen. Die
Methode liefert einen Bitvektor (als
int
-Wert), der die Eigenschaf-
ten des Plugin beschreibt.
void run (ImageProcessor
ip
)
Diese Methode erledigt die tatsachliche Arbeit des Plugin. Der ein-
zige Parameter
ip
(ein Objekt vom Typ
ImageProcessor
)enthalt
das zu bearbeitende Bild und alle relevanten Informationen dazu.
Die
run
-Methode liefert keinen Ruckgabewert (
void
), kann aber das
ubergebene Bild verandern und auch neue Bilder erzeugen.
3.2.4 Beispiel-Plugin:
”
inverter“
Am besten wir sehen uns diese Sache an einem konkreten Beispiel an. Wir
versuchen uns an einem einfachen Plugin, das ein 8-Bit-Grauwertbild in-
vertieren, also ein Positiv in ein Negativ verwandeln soll. Das Invertieren
der Intensitat ist eine typische Punktoperation, wie wir sie in Kap. 5 im
Detail behandeln. Unser Bild hat 8-Bit-Grauwerte im Bereich von 0 bis
zum Maximalwert 255 sowie eine Breite und Hohe von
M
bzw.
N
Pi-
xel. Die Operation ist sehr einfach: Der Wert jedes einzelnen Bildpixels
I
(
u, v
) wird umgerechnet in einen neuen Pixelwert
I
(
u, v
)
←
255
− I
(
u, v
)
,
der den ursprunglichen Pixelwert ersetzt, und das fur alle Bildkoordina-
ten
u
=0
...M
−
1 und
v
=0
...N
−
1.
Plugin-Klasse
MyInverter
Die vollstandige Auflistung des Java-Codes fur dieses Plugin findet
sich in Prog. 3.1. Das Programm enthalt nach den Import-Anweisungen
fur die notwendigen Java-Packages die Definition einer einzigen Klasse
MyInverter
in einer Datei mit (wie in Java ublich) demselben Namen
(
MyInverter .java
). Das Unterstreichungszeichen
”
_
“ am Ende des Na-
mens ist wichtig, da ImageJ nur so diese Klasse als Plugin akzeptiert.