Digital Signal Processing Reference
In-Depth Information
16 Geometrische
Bildoperationen
double[] X = new double[] {Q1.x, Q2.x, Q3.x, Q4.x};
28
double[] Y = new double[] {Q1.y, Q2.y, Q3.y, Q4.y};
29
Zmat zX = makeColumnVector(X);
30
Zmat zY = makeColumnVector(Y);
31
32
33
double[][] M = new double[][]
{{P1.x, P1.y, P1.x * P1.y, 1},
34
{P2.x, P2.y, P2.x * P2.y, 1},
35
{P3.x, P3.y, P3.x * P3.y, 1},
36
{P4.x, P4.y, P4.x * P4.y, 1}};
37
Zmat zM = new Zmat(M);
38
39
40
double a1, a2, a3, a4; a1 = a2 = a3 = a4 = 0;
double b1, b2, b3, b4; b1 = b2 = b3 = b4 = 0;
41
42
43
try {
Zmat Ax = Solve.aib(zM,zX); // solve X = M · a (Gl. 16.31)
44
Zmat By = Solve.aib(zM,zY); // solve Y = M · b (Gl. 16.32)
45
a1 = zA.get(1,1).re; a2 = zA.get(2,1).re;
46
a3 = zA.get(3,1).re; a4 = zA.get(4,1).re;
47
b1 = zB.get(1,1).re; b2 = zB.get(2,1).re;
48
b3 = zB.get(3,1).re; b4 = zB.get(4,1).re;
49
} catch(JampackException e) {}
50
51
52
return new BilinearMapping(a1,a2,a3,a4,b1,b2,b3,b4,true);
}
53
4-
Gleichungssystem (s. Gl. 16.31, 16.32) mithilfe der statischen Methode
Solve.aib() aus der Jampack -Bibliothek 9 gelost, die grundsatzlich mit
komplexwertigen Matrizen bzw. Vektoren arbeitet. Zur einfacheren Ge-
nerierung der notwendigen Spaltenvektoren dient folgende Hilfsmethode:
In Zeile 44 und 45 der obigen Methode wird jeweils ein lineares 4
×
// utility method for Jampack linear algebra package
54
static Zmat makeColumnVector(double[] x){
55
int n = x.length;
56
Znum z = new Znum(0,0);
57
Zmat y = new Zmat(n,1);
58
for (int i=0; i<n; i++){
59
z.re = x[i];
60
y.put(i+1,1,z);
61
}
62
return y; } }
63
TwirlMapping (Klasse)
Diese Klasse implementiert als Beispiel fur eine typische Warp“ -
Abbildung die Twirl -Transformation (Gl. 16.33, 16.34). Auch fur diese
9 ftp://math.nist.gov/pub/Jampack/Jampack/AboutJampack.html
Search WWH ::




Custom Search