Conclusion

In this paper we have presented an ellipse least squares fitting method which for is specific to ellipses and direct at the same time; other previous method were either not ellipse-specific or iterative.

We argue that our method is possibly the best trade-off between speed and accuracy for ellipse fitting and its uniqueness property makes it also extremely robust to noise and usable in many applications, especially in industrial vision. In order for other researchers to quickly assess the validity of the method, Figure gif gives a Matlab implementation of the proposed algorithm and an interactive JAVA demonstration is available at http:// vision.dai.ed.ac.uk/maurizp/ElliFitDemo/demo.html.

In the near future, a method for correcting the bias to the noise for incomplete elliptical arcs will be explored that is inspired by [5]. Moreover, the proposed ellipse-specific method could be used to produce excellent initial estimates for iterative methods, thus significantly increasing their speed; we are currently investigating this possibility.

% x,y are lists of coordinates
function a = fit_ellipse(x,y)
% Build design matrix
D = [ x.*x x.*y y.*y x y ones(size(x)) ];
% Build scatter matrix
S = D'*D;
% Build 6x6 constraint matrix
C(6,6) = 0; C(1,3) = -2; C(2,2) = 1; C(3,1) = -2;
% Solve eigensystem
[gevec, geval] = eig(inv(S)*C);
% Find the negative eigenvalue
[NegR, NegC] = find(geval < 0 & ~isinf(geval));
% Extract eigenvector corresponding to positive eigenvalue
a = gevec(:,NegC);

Figure: Complete 6-line Matlab implementation of the proposed algorithm.



Acknowledgements: Maurizio Pilu was partially sponsored by SGS-THOMSON Microelectronics. This work was partially funded by UK EPSRC Grant GR/H/86905.