Generating points along an ellipse or ellipsoid, plotting ellipses and ellipsoids in various parametric representations, and fitting ellipses, ellipsoids or other quadratic curves and surfaces to noisy data occur frequently in fields such as computer vision, pattern recognition and system identification.
This toolbox provides a fairly comprehensive toolset of estimating quadratic curves and surfaces in an errors-in-variables context, with and without constraints. In addition to classical fitting methods such as least squares (with and without curve or surface normals), Taubin's method, direct ellipse fit by Fitzgibbon et al.  and direct ellipsoid fit by Qingde Li and John G. Griffiths , the toolbox features an estimation algorithm by the author [2,3], based on and extending the work of István Vajk and Jenő Hetthéssy . The proposed quadratic curve and surface fitting algorithm combines direct fitting with a noise cancellation step, producing consistent estimates close to maximum likelihood but without iterations.
 Andrew W. Fitzgibbon, Maurizio Pilu and Robert B. Fisher, "Direct Least Squares Fitting of Ellipses", IEEE Trans. PAMI 21, 1999, pp476-480.
 Levente Hunyadi, "Estimation methods in the errors-in-variables context", PhD dissertation, Budapest University of Technology and Economics, 2013.
 Levente Hunyadi and István Vajk, "Constrained quadratic errors-in-variables fitting", The Visual Computer, 12 pages, in print, available on-line from October 2013.
 Qingde Li and John G. Griffiths, "Least Squares Ellipsoid Specific Fitting", Proceedings of the Geometric Modeling and Processing, 2004.
 István Vajk and Jenő Hetthéssy, "Identification of nonlinear errors-in-variables models", Automatica 39, 2003, pp2099-2107.
Please use my private e-mail address to submit bug reports, which will be addressed upon short notice; reviews, however, are not monitored. Any feedback is most welcome.
This is extremely useful.
We are trying to determine how to constrain the direct fitting of an ellipse to data to (e.g.) limit the aspect ratios allowed for the solution. We would greatly appreciate any advice on how to proceed from this group.
Awesome, thanks you
Thanks a lot, your code is very easy-read and useful.谢谢 ：)
Extremely impressive code with very nice examples! Have you thought about fitting (hyperbolic) paraboloids too? :)
Very well written. Do you provide example code of each specific type of quadric fitting in your project? I only find a general one (quad3dfit_taubin.m).
A very useful set of codes. well written.
not easy to use at first but powerful once you understand it.
In file quad3dfit_taubin.m, line 39 is written as
dX = dx.^2 + dy.^2 + dz.^2;
but it should be
dX = [dx; dy; dz];
optimset is a standard MATLAB function, see: http://www.mathworks.com/help/matlab/ref/optimset.html
Although the zip contains 97 files (many examples, I believe), it does not contain the needed file imconic.m.
This (by the same author) can also be downloaded, imconic.zip. It has 24 files, but does not have optimset.m.
So I couldn't run ellipsefit.
(A search for optimset returns many files, but none by the same author, so I gave up.)
Fixed an issue with 3D Taubin fit (contributed by Martti K).
Included all external dependencies into a single package.
Added automatic dependency check for Optimization Toolbox and suggestion which function to use when the toolbox is not installed.
Improved numerical robustness for standard least-squares estimation of ellipsoid parameters.
Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.