This is mainly a maintenance release but contains quite a number of improvements. **There are some breaking changes in this release and models have to be re-downloaded in the new format.**
Major changes:
* Changed `PcaModel`, `MorphableModel` and blendshapes to use Eigen for matrices and vectors instead of OpenCV's `cv::Mat`. This change was motivated by the fact that we need Eigen already anyway for solving linear systems. And since Eigen is a header-only library, the core of eos becomes more independent of OpenCV and easier to compile in the near future.
**This change means that the model format has changed as well, so users will have to re-download the models and blendshapes in the new model format.**
* Changed `PcaModel` constructor to take an orthonormal basis (4662c59c4d9ae233047d1b5130470db1ed6bf894)
This introduces a **breaking change**: If you're currently using the `PcaModel` constructor and are passing it a PCA basis matrix, your code will (probably silently) break: The function now expects an orthonormal basis matrix, whereas before, it expected a rescaled basis matrix. However it makes more sense for the function to take an orthonormal basis matrix, as this is usually the result after computing a PCA on data.
* Furthermore, "unnormalised" basis has been renamed to "orthonormal", and "normalised" basis to "rescaled", and the getters have been modified accordingly. This should clear up confusion and make the descriptions good and unambiguous ("normalised" and "unnormalised" was really not a good choice!). (0fdd8a126e82f653001452e88bf1d34210a9ba36)
Minor changes:
* Updated all apps and utilities to reflect all the changes in this release
* We now only store the orthonormal basis in the model files - the rescaled basis is computed when models are loaded. This halves the file size of all models. (50c059c3ff8ced6057e3a7aa15fc5943467c19df)
* Renamed `get_*_pca_basis(int)` to `get_*_pca_basis_at_point(int)` (354deb3e962dce0e7dab7b20f1d4c5886a06e103)
* The mean, basis and eigenvalues of PcaModel are now returned by const reference (8901c1141af0217f64b509378f9effc9e8febc23)
* Added a setup.py file for python's pip:
This means eos's python bindings can now be built and installed with `pip install ./eos`, and packages can be created with `python setup.py sdist` and `python setup.py bdist_wheel`. A `setup.cfg.template` exists to set library paths to OpenCV and Boost.
* Added various python bindings: write_obj, save_model, functionality to construct new models, draw_sample, and more
* Added Eigen as git submodule. This was required because Ubuntu 14.04 only ships with Eigen 3.2.2, while pybind11's new Eigen bindings requires at least 3.2.7. This way, we're also more independent with regards to Python's `sdist` package. An external Eigen can still be used by setting `EIGEN3_INCLUDE_DIR`.
* Added cereal as submodule, removed local copy (f38ac6237e9dc372aea69d6aa43baf8f10507600)
* Added better warnings and errors as to the use of `fit-model-ceres`
* Minor documentation fixes and improvements.
eos python bindings are now available on [PyPI](https://pypi.python.org/pypi/eos-py/)! There's a wheel for python 3.5 on Windows, and a source dist. The source dist needs CMake's find_package to be able to find OpenCV and Boost automatically for it to work (so install it beforehand from a package manager).
If there are issues, you can always clone the repo and do `pip install ./eos` locally, after adjusting the paths in `setup.cfg`.
As always, make sure to clone the repository with `git clone --recursive`, or, if you're updating, run `git submodule update --init --recursive`.
Windows binaries are compiled with Windows 8.1 64bit, Visual Studio 2015. A .whl with python bindings for python 3.5 is available on [PyPI](https://pypi.python.org/pypi/eos-py/). The Matlab bindings are created for Matlab R2016b.
Linux binaries are compiled with Linux Mint 18, based on Ubuntu 16.04, gcc-5.4.