|
Hallo, Zum einen ist es v"ollig unwichtig zu wissen aus welchen Rotationen, Translationen und Skalierungen eine Transformation entstanden ist. Da man beliebig viele Transformationen in beliebiger Reihenfolge anwenden kann ist die Information "diese Transformation k"onnte durch eine Rotation mit .., eine Translation mit .. und eine Skalierung mit ... aber auch durch eine beliebige andere Anzahl und Reihenfolge dieser Operationen dargestellt werden" ziemlich sinnlos. Wenn man die Matrix hat ist die Sache gelaufen. > hier habe ich ich bei meiner anfrage etwas unklar ausgedrueckt denn > eigentlich will ich nicht die matrix sondern a, sx, sy, tx, ta ermitteln. > Kann man wohl sagen. Die Reihenfolge der Transformationen in M={ {sx Cos[a],sx Sin[a],tx}, {-sy Sin[a],sy Cos[a],ty}, {0,0,1} } ist genau umgekehrt als es die erste Mail beschreibt hier das original: > Gegeben seien punkte {{x1, y1},{x2,y2},...{xn,yn}} sowie punkte >{{p1, q1},{p2,q2},...{pn,qn}} einer ebene. >dabei gehen die {pi,qi} aus den {xi,yi} durch die linearen transformationen: translation x, >translation y, scalierung x, scalierung y, und rotation hervor. was man wohl als Translation, Scalierung und Rotation des Original Punktes verstehen sollte und *nicht* als Rotation, Scalierung und Translation. > wenn ich nun a, sx, sy ,tx, ty bestimmen will habe ich 6 nichtlineare > gleichungen fuer 5 parameter ..... > was nun ? Naja, die Gleichungen sind aber nicht unabh"anging. Eine Skalierung mit {sx->-1,sy->-1} entspricht einer Rotation um Pi. Da man sowohl mit einer Translation, als auch mit einer Skaliering jeden Punkt der Ebene erreichen kann sind auch diese operationen in nicht eindeutig. Es gilt also auf kluge Weise diese Mehrdeutigkeit aufzul"osen. > Selbst wenn dafuer ein linearer ansatz ueber least square gelingt werden 2 > "hintereinander geschaltete minimierungen wohl nicht das mathematisch exakte > least square minimum fuer meine parameter liefern oder ? > > soviel auch fuer unseren trivialgeritzten ziemlich selten oder gar nie > ueberheblichen Jens-Peer Kuska vieleicht schuettelt er auch hierbei eine > loesung aus dem aermel. Nehmen wir mal an wir der Punkt wird erst Rotiert, dann Skaliert und am Schluss verschoben dann ist {-a + sx*Cos[alpha]==0, -b + sx*Sin[alpha]==0, -c + tx==0, -d - sy*Sin[alpha]==0, -e + sy*Cos[alpha]==0, -f + ty==0} also tx->c und ty->f. Wie man leicht sieht ist der Rest der Gleichung es bleiben also nur die Gleichungen {sx*Cos[alpha]==a, sx*Sin[alpha]==b, - sy*Sin[alpha]==d, sy*Cos[alpha]==e} Da die rechte Seite einfach {{sx, 0 }, {0, sy}}.{{Cos[alpha],Sin[alpha]}, {-Sin[alpha],Cos[alpha]}} == {{a,b}, {d,e}} Erh"alt man nach dem Bilden der Determinate sx*sy==a*e-b*d. Denn die Rotationsmatrix hat nat"urlich die Determinaten 1. Hier kommt die erste Fallunterscheidung. Ist n"amlich a*e-b*d==0 so erh"alt man entweder sx->0 oder sy->0. Dann hat man sx*Cos[alpha]==a und -sx*Sin[alpha]==d, im anderen Fall ist nat"urlich sy*Sin[alpha]==b und sy*Cos[alpha]==e zu l"osen. Die anderen Gleichungen sind entweder automatisch erf"ullt oder es gibt keine L"osung f"ur diese Reihenfolge der Transformationen. Was aber nicht schlimm ist, weil man sich ja unendlich viele andere ausdenken kann. Ist a*e-b*d != 0 so setzt man erst mal sy -> Det[{{a, b}, {d, e}}]/sx Nun ist das System noch wesentlich mehr "uberbestimmt da man vier Gleichungen und nur noch zwei Variablen sx, alpha hat. Mit xi=Cos[alpha] gibts zwei S"atze von Gleichungen: {sx*xi == a, sx*Sqrt[1 - xi^2] == b} {((b*d - a*e)*Sqrt[1 - xi^2])/sx == d, ((-(b*d) + a*e)*xi)/sx == e} Die anderen jeweils anderen sind etweder simultan erf"ullt oder Die gew"ahlte Reihenfolge der Transformationen ist nicht m"oglich. Gruss Jens |