java.lang.Object
imagingbook.common.geometry.fitting.circle.algebraic.CircleFitPratt
All Implemented Interfaces:
CircleFitAlgebraic

public class CircleFitPratt extends Object implements CircleFitAlgebraic
This is an implementation of the algebraic circle fitting algorithm by Pratt [1], as described in [2] (Sec. 5.5-5.6). The algorithm uses singular-value decomposition (SVD) and eigen-decomposition. See [3, Alg. 11.2] for additional details.

Fits to exactly 3 (non-collinear) points are handled properly. Data centering is used to improve numerical stability (alternatively, a reference point can be specified).

[1] V. Pratt. "Direct least-squares fitting of algebraic surfaces". ACM SIGGRAPH Computer Graphics 21(4), 145–152 (July 1987).
[2] N. Chernov. "Circular and Linear Regression: Fitting Circles and Lines by Least Squares". Monographs on Statistics and Applied Probability. Taylor & Francis (2011).
[3] W. Burger, M.J. Burge, Digital Image Processing – An Algorithmic Introduction, 3rd ed, Springer (2022).

  • Constructor Details

    • CircleFitPratt

      public CircleFitPratt(Pnt2d[] points)
      Constructor. The centroid of the sample points is used as the reference point.
      Parameters:
      points - sample points
    • CircleFitPratt

      public CircleFitPratt(Pnt2d[] points, Pnt2d xref)
      Constructor. The centroid of the sample points is used as the reference point for data centering if null is passed for xref.
      Parameters:
      points - sample points
      xref - reference point or null
  • Method Details