File Exchange

image thumbnail

Fitting quadratic curves and surfaces

version 1.4 (157 KB) by

Fit ellipses, ellipsoids and other quadratic curves and surfaces to noisy data.

10 Ratings



View License

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. [1] and direct ellipsoid fit by Qingde Li and John G. Griffiths [4], 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 [5]. 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.

[1] Andrew W. Fitzgibbon, Maurizio Pilu and Robert B. Fisher, "Direct Least Squares Fitting of Ellipses", IEEE Trans. PAMI 21, 1999, pp476-480.
[2] Levente Hunyadi, "Estimation methods in the errors-in-variables context", PhD dissertation, Budapest University of Technology and Economics, 2013.
[3] 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.
[4] Qingde Li and John G. Griffiths, "Least Squares Ellipsoid Specific Fitting", Proceedings of the Geometric Modeling and Processing, 2004.
[5] István Vajk and Jenő Hetthéssy, "Identification of nonlinear errors-in-variables models", Automatica 39, 2003, pp2099-2107.


Levente Hunyadi

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.

Comments and Ratings (13)

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.

Knight Jake

Awesome, thanks you

jjj www

Thanks a lot, your code is very easy-read and useful.谢谢 :)


Jules (view profile)

Extremely impressive code with very nice examples! Have you thought about fitting (hyperbolic) paraboloids too? :)

Yi Zhou

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.

Martti K

Martti K (view profile)

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];

Martti K

Martti K (view profile)

Levente Hunyadi

optimset is a standard MATLAB function, see:

Carey Smith

Carey Smith (view profile)

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, 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.)

Jean-Yves Tinevez



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.

MATLAB Release
MATLAB 7.14 (R2012a)

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video

Win prizes and improve your MATLAB skills

Play today