Problem with Transform.SimilarityTransform
Hi everyone, I'm currently trying to use skleanr.Transform.SimilarityTransform to remove scaling translation and rotation from one set of points to align it to the other. However, if I centre the sets around the origin first, there seems to be frequently a problem (which doesn't occur if the points are all positives), the output being NaN. I tried to write a small reproducible code: In [77]: #I fixed the seed here for reproducibility but this happens often np.random.seed(4) #Two random set of points a = np.random.randn(10, 2) b = np.random.randn(10, 2) # Center the points arount the origin a -= np.mean(a, axis=0)[np.newaxis, :] b -= np.mean(b, axis=0)[np.newaxis, :] tform = SimilarityTransform() tform.estimate(a, b) tform(a) Out[77]: array([[ nan, nan], [ nan, nan], [ nan, nan], [ nan, nan], [ nan, nan], [ nan, nan], [ nan, nan], [ nan, nan], [ nan, nan], [ nan, nan]]) Note that if I don't centre the point there is no problem: In [89]: #I fixed the seed here for reproducibility but this happens often np.random.seed(4) #Two random set of points a = np.random.randn(10, 2) b = np.random.randn(10, 2) # Center the points arount the origin #a -= np.mean(a, axis=0)[np.newaxis, :] #b -= np.mean(b, axis=0)[np.newaxis, :] tform = SimilarityTransform() tform.estimate(a, b) tform(a) Out[89]: array([[ 3.76870886, -0.35152078], [ 1.83453334, -1.25080725], [ 5.42428044, -4.30088121], [ 2.51364241, -1.00154154], [ 6.14244682, -2.71511189], [ 5.37956586, -0.65190768], [ 4.5752074 , -0.19039746], [ 1.96968262, -1.99729896], [ 1.47865106, 0.59493455], [ 5.39473376, -0.31125435]]) Sometime it also tells me that the *SVD doesn't converge*. Any idea what is going on? Thanks, Jean
participants (1)
-
Jean K