Digital Signal Processing Reference
In-Depth Information
6
Filter
public void run(ImageProcessor orig) {
1
int w = orig.getWidth();
Programm 6.2
3
×
3-Glattungsfilter (ImageJ-Plugin).
Die Filtermatrix ist als zweidimen-
sionales
double
-Array definiert (Zeile
5). Der Koordinatenursprung des
Filters liegt im Zentrum der Ma-
trix, also an der Array-Koordinate
[1
,
1], daher der Offset von 1 fur
die Koordinaten
i
und
j
in Zeile
20. In Zeile 24 wird die fur die
aktuelle Bildposition berechnete
Summe gerundet und anschließend
(Zeile 25) im Originalbild eingesetzt.
2
int h = orig.getHeight();
3
//
3
×
3
filter matrix
4
double[][] filter = {
5
{0.075, 0.125, 0.075},
6
{0.125, 0.200, 0.125},
7
{0.075, 0.125, 0.075}
8
};
9
ImageProcessor copy = orig.duplicate();
10
11
12
for (int v=1; v<=h-2; v++) {
for (int u=1; u<=w-2; u++) {
13
// compute filter result for position
(
u, v
)
14
double sum = 0;
15
for (int j=-1; j<=1; j++) {
16
for (int i=-1; i<=1; i++) {
17
int p = copy.getPixel(u+i,v+j);
18
// get the corresponding filter coe
cient:
19
double c = filter[j+1][i+1];
20
sum = sum + c * p;
21
}
22
}
23
int q = (int) Math.round(sum);
24
orig.putPixel(u,v,q);
25
}
26
}
27
}
28
mit
s
. Falls alle Koe
zienten positiv sind, wie bei
Glattungsfiltern ublich, definiert man
s
reziprok zur Summe der Koe
-
zienten
∈
R
und
H
(
i, j
)
∈
Z
1
i,j
H
(
i, j
)
,
s
=
(6.9)
um die Filtermatrix zu normalisieren. In diesem Fall liegt auch das Er-
gebnis in jedem Fall innerhalb des ursprunglichen Wertebereichs. Die
Filtermatrix aus Gl. 6.7 konnte daher beispielsweise auch in der Form
⎡
⎤
⎡
⎤
0
.
075
0
.
125
0
.
075
353
585
353
1
40
⎣
⎦
⎣
⎦
H
(
i, j
)=
=
(6.10)
0
.
125
0
.
200
0
.
125
0
.
075
0
.
125
0
.
075
1
definiert werden, mit dem gemeinsamen Skalierungsfaktor
s
=
40
=
0
.
025. Eine solche Skalierung wird etwa auch fur die Filteroperation in
Prog. 6.3 verwendet.
In
Adobe Photoshop
sind u. a. lineare Filter unter der Bezeichnung
”
Custom Filter“ in dieser Form realisiert. Auch hier werden Filter mit
ganzzahligen Koe
zienten und einem gemeinsamen Skalierungsfaktor