<< Back to main page

C++ code for circle fitting algorithms

Created and tested with GNU g++ compiler under LINUX operating system.    E-mail your questions and comments to Nikolai Chernov

Geometric circle fits

Algebraic circle fits

Levenberg-Marquardt fit in the "full" (a,b,R) space
    (perhaps the best geometric circle fit)

Levenberg-Marquardt fit in the "reduced" (a,b) space
    (may be a little faster than above in favorable cases)

Chernov-Lesort fit
    (designed to converge from any initial guess,
    but slower that the Levenberg-Marquardt)

Chernov-Houssam fit     (designed to converge from any initial guess;
    employs numerically stable formulas for large circles)

Note: every geometric fit must be supplied with an initial guess.
Use an algebraic fit for this purpose. We recommend Taubin fit.
Kasa fit     (the simplest and fastest fit, but biased toward smaller circles when an incomplete arc is observed)

Pratt fit
    (more robust than Kasa fit, but a little slower)

Taubin fit
    (similar to Pratt fit, but a bit faster and a bit more accurate)
           (perhaps the best algebraic circle fit)

Hyper fit
    (a new fit: a combination of Pratt and Taubin fits that eliminates essential bias; the speed is the same as that of Pratt fit)

Auxiliary files (all must be downloaded)

Simple testing programs

Data class (for data points)

Circle class (for circle parameters)

Top header file

Auxiliary functions
Test geometric circle fits

Test algebraic circle fits