Digital Signal Processing Reference
In-Depth Information
Projektive Transformation
16.4
Java-Implementierung
Im zweiten Beispiel ist die Anwendung der projektiven Abbildung ge-
zeigt. Die Abbildung
T
ist durch zwei Vierecke in Form der Punkte
p1..p4
bzw.
q1..q4
definiert. Diese Punkte wurde man in einer kon-
kreten Anwendung interaktiv bestimmen oder waren durch eine Mesh-
Partitionierung vorgegeben.
Die Vorwartstransformation
T
und das zugehorige Objekt
map
wird
durch die Methode
ProjectiveMapping.makeMapping()
erzeugt (Zeile
22). In diesem Fall wird ein bilinearer Interpolator verwendet (Zeile 24),
die Anwendung der Transformation erfolgt wie im vorherigen Beispiel:
1
import ij.ImagePlus;
2
import ij.plugin.filter.PlugInFilter;
3
import ij.process.*;
4
5
public class PluginProjectiveMapping_ implements PlugInFilter
{
6
7
public int setup(String arg, ImagePlus imp) {
return DOES_8G;
8
}
9
10
11
public void run(ImageProcessor ip) {
Pnt2d p1 = new Pnt2d(0,0);
12
Pnt2d p2 = new Pnt2d(400,0);
13
Pnt2d p3 = new Pnt2d(400,400);
14
Pnt2d p4 = new Pnt2d(0,400);
15
16
17
Pnt2d q1 = new Pnt2d(0,60);
Pnt2d q2 = new Pnt2d(400,20);
18
Pnt2d q3 = new Pnt2d(300,400);
19
Pnt2d q4 = new Pnt2d(30,200);
20
21
22
ProjectiveMapping map =
ProjectiveMapping.makeMapping(p1,p2,p3,p4,q1,q2,q3,q4);
23
PixelInterpolator ipol = new BilinearInterpolator();
24
map.applyTo(ip, ipol);
25
}
26
27
}
Die korrespondierenden Punkte der Vierecke
P1..P4
und
Q1..Q4
wurde
man im praktischen Einsatz naturlich interaktiv spezifizieren.