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 }
Search WWH ::




Custom Search