Lease squares fitting of Ellipses

# Least Squares fitting of ellipses, python routine

based on the publication Halir, R., Flusser, J.: 'Numerically Stable Direct Least Squares Fitting of Ellipses'

## Install

pip install lsq-ellipse


https://pypi.org/project/lsq-ellipse/

## Example execution

import numpy as np
from ellipse import LsqEllipse
import matplotlib.pyplot as plt
from matplotlib.patches import Ellipse

if __name__ == '__main__':
# avalible in the example.py script in this repo
X1, X2 = example.make_test_ellipse()

X = np.array(list(zip(X1, X2)))
reg = LsqEllipse().fit(X)
center, width, height, phi = reg.as_parameters()

print(f'center: {center[0]:.3f}, {center[1]:.3f}')
print(f'width: {width:.3f}')
print(f'height: {height:.3f}')
print(f'phi: {phi:.3f}')

fig = plt.figure(figsize=(6, 6))
ax = plt.subplot()
ax.axis('equal')
ax.plot(X1, X2, 'ro', zorder=1)
ellipse = Ellipse(
edgecolor='b', fc='None', lw=2, label='Fit', zorder=2
)

plt.xlabel('$X_1$')
plt.ylabel('$X_2$')

plt.legend()
plt.show()


Cite this work

@software{ben_hammel_2020_3723294,
author       = {Ben Hammel and Nick Sullivan-Molina},
title        = {bdhammel/least-squares-ellipse-fitting: v2.0.0},
month        = mar,
year         = 2020,
publisher    = {Zenodo},
version      = {v2.0.0},
doi          = {10.5281/zenodo.3723294},
url          = {https://doi.org/10.5281/zenodo.3723294}
}


Ben Hammel, & Nick Sullivan-Molina. (2020, March 21). bdhammel/least-squares-ellipse-fitting: v2.0.0 (Version v2.0.0). Zenodo. http://doi.org/10.5281/zenodo.3723294

## Project details

Uploaded source
Uploaded py3