[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