Lease squares fitting of Ellipses
Project description
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(
xy=center, width=2*width, height=2*height, angle=np.rad2deg(phi),
edgecolor='b', fc='None', lw=2, label='Fit', zorder=2
)
ax.add_patch(ellipse)
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
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
lsq-ellipse-2.2.1.tar.gz
(5.6 kB
view details)
Built Distribution
File details
Details for the file lsq-ellipse-2.2.1.tar.gz
.
File metadata
- Download URL: lsq-ellipse-2.2.1.tar.gz
- Upload date:
- Size: 5.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a40860d1af348f9e71491cb1f5cd2b9ef99f22e54fc98e7fa801caf459bda7ba |
|
MD5 | a154859a3b5e469a50f00bb9e0c1d437 |
|
BLAKE2b-256 | 0a4815f788d84729d68de91d5c7ecc5511b964beccb00c723f981e1841a9e1a2 |
File details
Details for the file lsq_ellipse-2.2.1-py3-none-any.whl
.
File metadata
- Download URL: lsq_ellipse-2.2.1-py3-none-any.whl
- Upload date:
- Size: 5.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2d8588b353914530ba6e6645610d06f73d20650b3ed6565acc66a652cf7db008 |
|
MD5 | 73e1caa68999f694463a0040ee3aa5c3 |
|
BLAKE2b-256 | 47c82a441f1ad6e96a5bf1e8285fa93bf5a482d533241de6965b102f6c9ad7c5 |