Digital Signal Processing Reference
In-Depth Information
6 Filter
(a)
(b)
(c)
Abbildung 6.20. Methoden zur Filterberechnung an den Bildrandern. Die Annahme ist, dass die (nicht vorhandenen) Pixel
außerhalb des ursprunglichen Bilds einen konstanten Wert aufweisen (a), den Wert der nachstliegenden Randpixel aufweisen
(b) oder sich zyklisch von der gegenuberliegenden Seite her wiederholen (c).
ist selbst eine Plugin-Klasse, die allerdings außer run() noch weitere
Methoden zur Verfugung stellt. Am einfachsten zu zeigen ist das anhand
eines Beispiels mit einem 8-Bit-Grauwertbild und der Filtermatrix (aus
Gl. 6.7):
0 . 075
0 . 125
0 . 075
.
0 . 125
0 . 200
0 . 125
H ( i, j )=
0 . 075
0 . 125
0 . 075
In der folgenden run() -Methode eines ImageJ-Plugins wird zunachst die
Filtermatrix als eindimensionales float -Array definiert (man beachte
die Form der float -Konstanten 0.075f “ usw.), dann wird in Zeile 8
ein neues Convolver -Objekt angelegt:
import ij.plugin.filter.Convolver;
1
...
2
public void run(ImageProcessor I) {
3
float[] H = {
4
0.075f, 0.125f, 0.075f,
5
0.125f, 0.200f, 0.125f,
6
0.075f, 0.125f, 0.075f };
7
Convolver cv = new Convolver();
8
cv.setNormalize(false);
// turn off filter normalization
9
cv.convolve(I, H, 3, 3); // do the filter operation
10
}
11
Die Methode convolve() in Zeile 10 benotigt fur die Filteroperation
neben dem Bild I und der Filtermatrix H selbst auch deren Breite und
Hohe (weil H ein eindimensionales Array ist). Das Bild I wird durch die
Filteroperation modifiziert.
In diesem Fall hatte man auch die nicht normalisierte ganzzahlige Fil-
termatrix in Gl. 6.10 verwenden konnen, denn convolve() normalisiert
das ubergebene Filter automatisch (nach cv.setNormalize(true) ).
Search WWH ::




Custom Search