Python implementation of "Elliptic Fourier Features of a Closed Contour"
Project description
PyEFD
An Python/NumPy implementation of the method described in [1].
Usage
$ pip install pyefd
Given a closed contour of a shape, generated by e.g. scikit-image or OpenCV, this package can fit a Fourier series approximating the shape of the contour:
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 [1] for more technical details.
Testing
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 ([2]) as a contour to use for testing.
Documentation
See the Github pages.
References
[2] LeCun et al. (1999): The MNIST Dataset Of Handwritten Digits
v0.1.2 (2016-02-29)
Testing with pytest instead of nosetests.
Added Coveralls use.
v0.1.1 (2016-02-17)
Fixed MANIFEST
Added LICENSE file that was missing.
v0.1.0 (2016-02-09)
Initial release
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for pyefd-0.1.2-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3d9e991268a851c13c91fc8f827157d3ac1f6e196654b2ac5101cdffe176c679 |
|
MD5 | f7c8f1882725bc4dacd7d3d513dec9c6 |
|
BLAKE2b-256 | db196d0946c98aac9b0dcc9b8895f626b2098d017753b562ca2a4d742a1d5e85 |