Digital Signal Processing Reference
In-Depth Information
6.6.2 Gauß-Filter
6.7
Aufgaben
In der ImageJ-Klasse ij.plugin.filter.GaussianBlur ist ein einfaches Gauß-
Filter implementiert, dessen Radius (
σ
) frei spezifiziert werden kann.
Dieses Gauß-Filter ist naturlich mit separierten Filterkernen implemen-
tiert (s. Abschn. 6.3.3).
4
Hier ist ein Beispiel fur dessen Anwendung:
import ij.plugin.filter.GaussianBlur;
1
...
2
public void run(ImageProcessor I) {
3
GaussianBlur gb = new GaussianBlur();
4
double radius = 2.5;
5
gb.blur(I, radius);
6
}
7
6.6.3 Nichtlineare Filter
Ein kleiner Baukasten von nichtlinearen Filtern ist in der ImageJ-
Klasse ij.plugin.filter.RankFilters indexMedianfilter implementiert, ins-
besondere Minimum-, Maximum- und gewohnliches Medianfilter. Die
Filterregion ist jeweils (annahernd) kreisformig mit frei wahlbarem Ra-
dius. Hier ein entsprechendes Anwendungsbeispiel:
import ij.plugin.filter.RankFilters;
1
...
2
public void run(ImageProcessor I) {
3
RankFilters rf = new RankFilters();
4
double radius = 3.5;
5
rf.rank(I, radius, RankFilters.MIN);
// Minimum Filter
6
// Maximum Filter
rf.rank(I, radius, RankFilters.MAX);
7
// Median Filter
rf.rank(I, radius, RankFilters.MEDIAN);
8
}
9
6.7 Aufgaben
Aufg. 6.1.
Erklaren Sie, warum das
”
Custom Filter“ in
Adobe Photo-
shop
(Abb. 6.6) streng genommen kein lineares Filter ist.
Aufg. 6.2.
Berechnen Sie den maximalen und minimalen Ergebniswert
eines linearen Filters mit nachfolgender Filtermatrix
H
(
i, j
)beiAnwen-
dung auf ein 8-Bit-Grauwertbild (mit Pixelwerten im Bereich [0
,
255]).
Gehen Sie zunachst davon aus, dass dabei kein
Clamping
der Resultate
erfolgt.
4
Zur Implementierung in ImageJ ist anzumerken, dass die in der Methode
blur()
generierten Filterkerne relativ zum angegebenen Radius zu klein
dimensioniert werden, und es dadurch zu erheblichen Fehlern kommt.