Skip to content
Patrik Huber edited this page Nov 27, 2016 · 26 revisions

Welcome to the eos wiki!

Here you can find some additional information of things that are not mentioned in the front-page README.md.

Some example fitting results on the HELEN database, created with the fit-model example app:

HELEN fitting result HELEN fitting result HELEN fitting result
HELEN fitting result HELEN fitting result HELEN fitting result

Using the library with the Basel Face Model (BFM)

If you want to use the Basel Face Model with eos, you can convert it to the cereal format that eos uses using the following steps:

Using the edge fitting with Canny edges

In the fit-model app, the edge fitting is just used to fit the occluding face contour to the ibug contour landmarks. However, the edge fitting is very general, and can be used to fit to edges from an edge detector (e.g. Canny edges). In fact this is how it is used in the original paper.

To achieve this in eos, the fitting::find_occluding_edge_correspondences() function just has to be called with a list of edges, instead of the landmarks. For example like so:

Mat edge_image;
double canny_thresh = 150.0;
cv::Canny(image, edge_image, canny_thresh*0.4, canny_thresh);
vector<cv::Point> image_edges;
cv::findNonZero(edge_image, image_edges);
vector<Eigen::Vector2f> image_edges_; // Need to convert these points to Eigen::Vector2f
std::for_each(begin(image_edges), end(image_edges), [&image_edges_](auto&& p) { image_edges_.push_back({ p.x, p.y }); });
auto mesh = morphable_model.get_mean();
auto edge_correspondences = fitting::find_occluding_edge_correspondences(mesh, edge_topology, rendering_params, image_edges_);

This will return a list of edge correspondences that can then be added to the landmark correspondences in the subsequent fitting.

Clone this wiki locally