# pyefd 1.0

Python implementation of "Elliptic Fourier Features of a Closed Contour"

## PyEFD

An Python/NumPy implementation of a method for approximating a contour with a Fourier series, as described in [1].

### Installation

```\$ pip install pyefd
```

### Usage

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.

## v1.0 (2016-04-19)

• Deemed stable enough for version 1.0 release
• Created documentation.

## v0.1.2 (2016-02-29)

• Testing with pytest instead of nosetests.

## v0.1.1 (2016-02-17)

• Fixed MANIFEST

## v0.1.0 (2016-02-09)

• Initial release

File Type Py Version Uploaded on Size
Python Wheel 2.7 2016-04-19 7KB
Source 2016-04-19 7KB
• Author: Henrik Blidh