# What does the alignment error returned from FindGeometricTransform measure?

FindGeometricTransform returns "the alignment error together with the transformation function." How is the alignment error computed?

I ask because if you iterate FindGeometricTransform, applying the transformation each time, the transformation converges to the unitary transform, as one would expect, but the alignment error is monotonically increasing, which seems a little counter-intuitive.

Here are two sets of points:

a = {{9, 46.}, {10, 45.}, {11, 44.}, {12, 44.}, {13, 43.}, {14, 43.}, {15,   42.}, {16, 42.}, {17, 41.}, {18, 41.}, {19, 32.}, {20, 21.}, {21, 20.}, {22, 17.}, {23, 23.}}


and

b = {{9.18212, 45.4089}, {10., 45.}, {10.9782, 44.5109}, {12.,  44.}, 13.0683, 43.4658}, {14.1864, 42.9068}, {15.3579,  42.321}, {16., 42.}, {16.8475, 1.5762}, {18., 41.}, {18.804, 40.598}, {18.8214, 40.5893}, {19.7035, 40.1482}, 20.3818,  39.8091}, {23., 38.5}}


The application of

{e, t} = FindGeometricTransform[a, b]


yields an alignment error e = 0.288599.

Setting

b = t[b]


yields

b = {{9.18212, 45.4089}, {10., 45.}, {10.9782, 44.5109}, {12., 44.}, {13.0683, 43.4658}, {14.1864, 42.9068}, {15.3579, 42.321}, {16., 42.}, {16.8475, 41.5762}, {18., 41.}, {18.804,  40.598}, {18.8214, 40.5893}, {19.7035, 40.1482}, {20.3818, 39.8091}, {23., 38.5}}


and applying

{e, t} = FindGeometricTransform[a, b]


again, yields an alignment error ofe = 0.355193. The sum of the Euclidean distances between a and the second and third version of b is the same, 89.6673, so whatever alignment error is being measured doesn't seem to have to do with the location of the points.

• I ask because if you iterate FindGeometricTransform, applying the transformation each time, the transformation converges to the unitary transform as one would expect but the alignment error is monotonically increasing which seems a little counter-intuitive. – Scott Guthery Jun 28 '17 at 21:56
• Can you give a minimal example to illustrate the problem? – aardvark2012 Jun 29 '17 at 0:41
• You have some braces missing in the first b. – Michael E2 Jul 2 '17 at 0:39
• After adding the missing braces I get (with Mathematica 8.0.4) different outputs from given in your question: the first e is 0.720145, the second is 0.29502, and b is also different. – Alexey Popkov Jul 2 '17 at 11:20

{err, transform} = FindGeometricTransform[data2, data1];

Mean@MapThread[EuclideanDistance, {transform@data1, data2}]