[ITK-users] [ITK] Estimation of initial rotation for Euler3DTransform
Timothee Evain
tevain at telecom-paristech.fr
Mon Jun 6 05:23:07 EDT 2016
Hi Sharmin,
If your are able to know which point of dataset 1 correspond to each point of dataset 2 (e.g. the point [-1.158 -9.962 -7.944] should match the point [70.3771 16.9556 -77.8874] after registration), then your problem is the one of Absolute Orientation. You could find the exact rotation solving this problem.
You could refer to the Horn method (http://people.csail.mit.edu/bkph/papers/Absolute_Orientation.pdf) or the paper of Besl and McKay which introduce the ICP (http://graphics.stanford.edu/courses/cs164-09-spring/Handouts/paper_icp.pdf) to know how to do it. They are using quaternion for the rotation, but you could retrieve the rotation matrix from it, hence the euler angles (if you know the sequence of rotation, ITK's one is Z->Y->X if I remember correctly). Or you could go with the itkVersorRigid3DTransform.
If you're unable to know the correspondence, you could maybe do a PCA to find principal directions (at least 2) of each curve, take a point in each direction plus the centroid, and resolve the Absolute Orientation with them (you need at least 3 points). But I've never tried it.
HTH,
Tim
----- Mail original -----
De: "Sharmin Sultana" <ssult003 at odu.edu>
À: insight-users at itk.org
Envoyé: Samedi 4 Juin 2016 00:01:31
Objet: [ITK] [ITK-users] Estimation of initial rotation for Euler3DTransform
Dear all,
I am trying to register two pointsets where each pointset represents a curve. I have tried using the IterativeClosestPointRegistration2.cxx example. But the problem with the results here is that while the translation seems to be OK, the rotation is not when I do not set an initial rotation.
According to the user guide, the Euler3DTranform cannot handle for large rotations, and the user has to provide an initial rotation that is correct to within 10 or 20 degrees. When I have provided the initial rotations, and the resulting registered curve seems to be correct. I got the initial rotations by manually rotating and translating the moving pointset in Paraview against the fixed pointset using the Transform filter.
Is there a way to automatically estimate the initial rotation required? Below are the pointsets that I was using.
Fixed PointSet
70.3771 16.9556 -77.8874
69.2143 17.2079 -77.253
68.1514 17.8068 -76.7957
66.9762 18.1519 -76.4658
65.8135 18.6132 -76.2163
64.67 19.0656 -75.7242
63.5119 19.2921 -75.3272
62.3751 19.597 -75.0951
61.2921 19.8394 -74.793
60.2845 20.1405 -74.4514
59.3191 20.3305 -74.1283
58.408 20.3767 -73.9007
57.5404 20.4277 -73.9293
56.8618 20.7408 -73.5224
55.4173 20.853 -72.9256
54.7285 20.8667 -72.693
53.6634 20.0938 -72.5906
Moving PointSet:
-1.158 -9.962 -7.944
-1.026 -9.224 -7.430
-0.883 -8.423 -6.872
-0.757 -7.646 -6.300
-0.640 -6.883 -5.727
-0.518 -6.120 -5.179
-0.406 -5.366 -4.622
-0.352 -4.661 -4.000
-0.291 -3.939 -3.394
-0.185 -3.181 -2.817
-0.042 -2.460 -2.183
0.074 -1.710 -1.531
0.174 -0.927 -0.853
0.296 -0.109 -0.120
0.459 0.737 0.693
0.640 1.647 1.657
0.861 2.763 2.808
Thanks and regards,
--
Sharmin Sultana
Old Dominion University
_____________________________________
Powered by www.kitware.com
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Kitware offers ITK Training Courses, for more information visit:
http://www.kitware.com/products/protraining.php
Please keep messages on-topic and check the ITK FAQ at:
http://www.itk.org/Wiki/ITK_FAQ
Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/insight-users
_______________________________________________
Community mailing list
Community at itk.org
http://public.kitware.com/mailman/listinfo/community
More information about the Insight-users
mailing list