## Fourier Descriptor

While developing an optical character recognition system, I had to implement several feature extractors in order to classify the letters. One of them was an elliptic Fourier descriptor. You can download the MATLAB version here.

Since I could not find any working implementation of a Fourier descriptor for shape recognition, I'm publishing my implementation here.

This is a basic implementation of the descriptor presented in
O. D. Trier, A. K. Jain, T. Taxt, Feature Extraction Methods for Character Recognition - A Survey, Pattern Recognition, Vol. 29, No. 4, pp. 641 - 662 (1996).
You can find the paper here

### How to extract feature vectors

You can extract the feature vectors using the `[a,b,c,d,T] = ellipticFourierDescriptor(filename, N, p, rotation)` function.

1. `filename` The name of the image file which contains the shape to recognize. The MATLAB-contour-algorithm is used to detect the outer contour.
2. `N` The number of coefficients
3. `p` The number of sampling points in percent. e.g. `p = 0.15`
4. `rotation` Whether or not the features shall be rotation invariant

The variables `a,b,c,d` carry the features. `T` is the contour length, which is only used to plot the contour.

### How to plot the contour

Once the features have been extracted, you can plot the contour using the `plotEllipticFourierDescriptor(a,b,c,d,T,s)` function where `a,b,c,d,T` is the result of the feature extractor and `s` is the stepsize. `s = 0.1` should be sufficient for most plots.