Digital Signal Processing Reference
In-Depth Information
Zeitaufwand fuhrt. Eine Lookup-Tabelle (LUT) realisiert eine diskrete
Abbildung (Funktion) von den ursprunglichen
K
Pixelwerten zu den
neuen Pixelwerten, d. h.
5
Punktoperationen
L
:[0
,K
−
1]
−→
[0
,K
−
1]
.
(5.36)
Fur eine Punktoperation, die durch die Funktion
a
=
f
(
a
)definiertist,
erhalt die Tabelle
L
die Werte
L
[
a
]
← f
(
a
) ur 0
≤ a<K
(5.37)
Die Tabelleneintrage werden also nur einmal fur die Werte
a
=0
...K
1
berechnet. Um die eigentliche Punktoperation im Bild durchzufuhren, ist
nur ein Nachschlagen in der Tabelle
L
erforderlich, also
−
I
(
u, v
)
←
L
[
I
(
u, v
)]
,
(5.38)
was wesentlich e
zienter ist als jede Funktionsberechnung. ImageJ bietet
die Methode
void applyTable(int[]
lut
)
fur Objekte vom Typ
ImageProcessor
, an die eine Lookup-Tabelle
lut
(
L
) als eindimensionales
int
-Array der Große
K
ubergeben wird (s. Bei-
spiel in Prog. 5.4). Der Vorteil ist eindeutig - fur ein 8-Bit-Grauwertbild
z. B. muss in diesem Fall die Abbildungsfunktion (unabhangig von der
Bildgroße) nur 256-mal berechnet werden und nicht moglicherweise mil-
lionenfach. Die Benutzung von Tabellen fur Punktoperationen ist also
immer dann sinnvoll, wenn die Anzahl der Bildpixel (
M
N
)dieAn-
zahl der moglichen Pixelwerte
K
deutlich ubersteigt (was fast immer
zutrifft).
×
5.7.2 Arithmetische Standardoperationen
Die ImageJ-Klasse
ImageProcessor
stellt außerdem eine Reihe von
haufig benotigten Operationen als entsprechende Methoden zur Ver-
fugung, von denen die wichtigsten in Tabelle 5.2 zusammengefasst sind.
Ein Beispiel fur eine Kontrasterhohung durch Multiplikation mit einem
skalaren
double
-Wert zeigt folgendes Beispiel:
ImageProcessor ip = ...
//some image
ip.multiply(1.5);
Das Bild in
ip
wird dabei destruktiv verandert, wobei die Ergebnisse
durch
”
Clamping“ auf den minimalen bzw. maximalen Wert des Werte-
bereichs begrenzt werden.