Python implementation of "Elliptic Fourier Features of a Closed Contour"
An Python/NumPy implementation of the method described in .
$ pip install pyefd
from pyefd import elliptic_fourier_descriptors coeffs = elliptic_fourier_descriptors(contour, order=10)
The coefficients returned are the a_n, b_n, c_n and d_n of the following Fourier series representation of the shape.
The coefficients returned are by default normalized so that they are rotation and size-invariant. This can be overridden by calling:
from pyefd import elliptic_fourier_descriptors coeffs = elliptic_fourier_descriptors(contour, order=10, normalize=False)
Normalization can also be done afterwards:
from pyefd import normalize_efd coeffs = normalize_efd(coeffs)
To use these as features, one can write a small wrapper function:
def efd_feature(contour): coeffs = elliptic_fourier_descriptors(contour, order=10, normalize=True) return coeffs.flatten()[3:]
If the coefficients are normalized, then coeffs[0, 0] = 1.0, coeffs[0, 1] = 0.0 and coeffs[0, 2] = 0.0, so they can be disregarded when using the elliptic Fourier descriptors as features.
See  for more technical details.
Run tests with:
$ python setup.py test
or with Pytest:
$ py.test tests.py
The tests includes a single image from the MNIST dataset of handwritten digits () as a contour to use for testing.
See the Github pages.
 Frank P Kuhl, Charles R Giardina, Elliptic Fourier features of a closed contour, Computer Graphics and Image Processing, Volume 18, Issue 3, 1982, Pages 236-258, ISSN 0146-664X, http://dx.doi.org/10.1016/0146-664X(82)90034-X.
- Initial release
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
|File Name & Checksum SHA256 Checksum Help||Version||File Type||Upload Date|
|pyefd-0.1.0.dev1-py2.py3-none-any.whl (7.3 kB) Copy SHA256 Checksum SHA256||2.7||Wheel||Feb 9, 2016|
|pyefd-0.1.0.dev1.tar.gz (5.2 kB) Copy SHA256 Checksum SHA256||–||Source||Feb 9, 2016|