Digital Signal Processing Reference
In-Depth Information
16
Geometrische
Bildoperationen
}
28
29
30
double cubic(double r) {
if (r < 0) r = -r;
31
double w = 0;
32
if (r < 1)
33
w = (a+2)*r*r*r - (a+3)*r*r + 1;
34
else if (r < 2)
35
w = a*r*r*r - 5*a*r*r + 8*a*r - 4*a;
36
return w;
37
}
38
39
}
16.4.3 Anwendungsbeispiele
Die folgenden zwei ImageJ-Plugins zeigen einfache Beispiele fur die An-
wendung der oben beschriebenen Klassen fur geometrische Abbildungen
und Interpolation.
Rotation
Das erste Beispiel zeigt ein Plugin (
PluginRotation
)fur die Rotation
des Bilds um 15
◦
.Zunachst wird (in Zeile 14) das Transformationsob-
jekt (
map
) der Klasse
Rotation
erzeugt, die angegebenen Winkelgrade
werden dafur in Radianten umgerechnet. Anschließend wird (in Zeile 15)
das Interpolator-Objekt
ipol
angelegt. Die eigentliche Transformation
des Bilds erfolgt in Zeile 16 durch Aufruf der Methode
applyTo()
:
1
import ij.ImagePlus;
2
import ij.plugin.filter.PlugInFilter;
3
import ij.process.*;
4
5
public class PluginRotation_ implements PlugInFilter {
6
7
double angle = 15;
// rotation angle (in degrees)
8
9
public int setup(String arg, ImagePlus imp) {
return DOES_8G;
10
}
11
12
13
public void run(ImageProcessor ip) {
Rotation map = new Rotation((2 * Math.PI * angle) / 360);
14
PixelInterpolator ipol = new BicubicInterpolator();
15
map.applyTo(ip, ipol);
16
}
17
18
}