Hi Michael,

das scheint tatsächlich erst mal ein Rundungsfehler zu sein. Das die Matrix 
sich von 1.00 auf 0.99 ändert nach einer Transformation ist normal, das sind 
einfach float-Berechnungsfehler. Die sollten sich aber eigentlich nicht 
aufsummieren, sondern herausmitteln...
Die Bibliothek, die ITK bzw. VTK zur Matrixrechnung verwendet heißt vnl 
(http://paine.wiau.man.ac.uk/pub/doc_vxl/core/vnl/html/index.html)
und hat uns auch schon mal Probleme wegen Ungenauigkeiten bereitet, allerdings 
bei der Matrixinversion.
Da du zusätzlich einen Arcustangens verwendest kommen da natürlich aber auch 
noch mal Rundungsfehler rein.

Musst du unbedingt mehrmals hintereinander rotieren? Sonst könntest du mal 
versuchen immer direkt die (zwischengespeicherte) Originaltransformation zu 
rotieren. Also statt:

Orig->Rotate(1°); doSomething(); Result->Rotate(1°); doSomething(); usw.

besser

Orig->Rotate(1°); doSomething(); Orig->Rotate(2°); doSomething(); usw.

Dann hast du jeweils nur eine Rotation, und die Rundungsfehler sollten klein 
bleiben.

Das Problem mit dem mehrfach hintereinander rotieren und der Anzeige hatte ich 
auch schon mal. Ist glaube ich nur ein Rendering-Problem, die Anzeige kommt den 
schnellen Änderungen nicht hinterher und aktualisiert sich nicht mehr. Die 
Berechnungen müssten aber korrekt ausgeführt werden. Wenn du zuschauen willst 
musst du eine Pause von 100 ms oder so nach den Rotationen einbauen, sonst geht 
das zu schnell.

P.S.: Bitte immer auch Cc an die Users-List schreiben, das erleichtert anderen 
die dasselbe Problem haben die Suche.

Viele Grüße,
Tobi

------------------------------------------------------------
Dipl. Phys. Tobias Schwarz
DKFZ
German Cancer Research Center (Deutsches Krebsforschungszentrum)
Member of the Helmholtz Association
Division of Medical & Biological Informatics E130
Im Neuenheimer Feld 280
D-69120 Heidelberg
Phone: 49-(0)6221-42-2353
Fax: 49-(0)6221-42-2345
E-Mail: [email protected]<mailto:[email protected]>
Web: 
http://www.dkfz.de/en/mbi/<https://dkfzowa0.dkfz-heidelberg.de/owa/redir.aspx?C=6ebb39f6c3b94e03a77eca6c5e2e87a9&URL=http%3a%2f%2fwww.dkfz.de%2fen%2fmbi%2f>
Confidentiality Note: This message is intended only for the use of the named 
recipient(s) and may obtain confidential and/or privileged information. If you 
are not the intended recipient, please contact the sender and delete the 
message. Any unauthorized use of the information contained in this message is 
prohibited.

________________________________
Von: michael.luehrs [[email protected]]
Gesendet: Freitag, 16. Juli 2010 14:13
An: Schwarz Tobias
Betreff: Mitk Compose Problem

Hi Tobias,
du hattest mir letzten Monat mal bei einem kleinen Problem bzgl.
mehrfacher Ausführung einer Rotation hintereinander geholfen. Das hat
mit mitk::AffineTransform3D::Compose(...) soweit auch funktioniert, aber
es ist mir gerade ein weiteres Problem aufgefallen. Wenn ich den
Datensatz ca. 10 mal rotiere, verändert sich die Transformationsmatrix
von 1.00 in den jeweiligen stellen zu 0.99. Diese nimmt dann mit jeder
Rotation weiter ab, bis die Matrix an jeder Stelle eine 0.00 enthält und
das Bild irgendwo hin verschoben wird. Liegt das an einem Rundungsfehler
bei der übergabe an die Rotate3D Funktion?


caffineTransform->Compose(affineTransform,false);
caffineTransform->Rotate3D(rotate,90.0*(atan(1.0)/45.0),false);
affineTransform->Compose(caffineTransform,false);

affineTransform enthält alle vorherigen Transformationen,
caffineTransform wird neu auf die affineTransform angewandt.

Noch ne kleine Frage, wieso kann ich die Rotation nur 4 mal in eine
Richtung ausführen? Danach wird die Anzeige nicht mehr verändert, das
Problem mit der Matrix bleibt jedoch.

Grüße,
Michael


------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
mitk-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mitk-users

Reply via email to