2

I have a set of n ≥ 3 points in 3D that are measurements of a possible circle. The measured points are "noisy" so best-fitting algorithms are involved. I'm programming in C# and have put together some algorithms to do my procedure to find the best fitting circle to the points.

My procedure is the following:

  1. Find the centroid C (x0, y0, z0) of the points.
  2. Find the best fitting plane for the points using SVD. I now have a normalvector N [a, b, c] and a point C, fully describing the plane P
  3. Orthogonal project all points to the plane
  4. Subtract C from all points, such that C becomes the new origin O for the points. I now have a plane that crosses origin.
  5. Translate the projected points into a 2D coordinate system that lies in the plane, using this algorithm.
  6. With the points now described in a 2D coordinate system, i can use Levenberg-Marquardt to find the best fitting cirlce. This gives me a circle center A (a, b) and a radius R
  7. The found circle center is described in the 2D coordinate system of the plane P

Now; my question:

How do I translate the found circle center A to the original 3D coordinate system?

I've tried to do A + C but this produces the following, which places the circle center in the centroid of the points:

Circle center is placed at the centroid of the points

  • 1
    I agree with the process that you use. It is mainely the same as in paper : https://fr.scribd.com/doc/31477970/Regressions-et-trajectoires-3D , pages 28-32 , applied to ellipse, parabola and hyperbola in 3D. Circle is a particular case. The main difference is that the final fitting is not carried out with a Levenberg-Marquardt algorithm. It uses a direct method (no itteration, no guessed initial values). In case of circle, the direct fitting is explained pages 11-13 in the paper : https://fr.scribd.com/doc/14819165/Regressions-coniques-quadriques-circulaire-spherique – JJacquelin Feb 23 '16 at 22:09

1 Answers1

2

Found the answer my self.

Using notation from this question: 2D Coordinates of Projection of 3D Vector onto 2D Plane

Find the matrix M that converts coordinates from the X, Y, Z-system to the coordinate system of the plane: N, e'1, e'2. This is a 3 x 3 matrix with e'1 as row 1, e'2 as row 2 and N as row 3. By taking the inverse (transpose) of this matrix you can convert coordinates the other way around.