[Soc-2011-dev] Weekly Progress Report #11 - libmv Tracker

Matthias Fauconneau matthias.fauconneau at gmail.com
Fri Aug 5 21:42:06 CEST 2011


Hi,

Complete formatted version of the report (with screenshots):
 http://wiki.blender.org/index.php/User:Matthias.fauconneau/GSoC2011

=== Week 11: July 29 - August 5 ===

This week was dedicated to research ways to refine tracking precision.

Efficient second order minimization (ESM) would be an interesting
method to investigate, but it might require a significant investment
to implement since there is apparently no available open source
example to help a quick integration (unlike the traditional KLT
method).

In the meantime, we can improve our interpolation to provide smooth
function for the tracking algorithm to work on.
B-Spline interpolation is the fastest and most accurate method for a
given order.
Particularly, Cubic B-Spline are the best tradeoff of speed vs precision.
B-Spline can also be easily differentiated in exact smooth derivatives
which are useful to KLT.

Cubic B-Spline interpolation is also useful for high quality texture
filtering and image transformation.

To test my implementation, I created a small sample application
showing an image warped using cubic B-Spline interpolation. Nearest
and linear interpolation are provided for comparison.

[https://gitorious.org/cubic-b-spline-interpolator Interpolator Source Code]

Example: Linear vs Cubic B-Spline image scaling:
http://wiki.blender.org/uploads/1/1e/GSoC-interpolation-linear.png
http://wiki.blender.org/uploads/c/c3/GSoC-interpolation-cubic.png

=== Week 12: August 5 - August 12 ===

Once Keir is finished with the tracker refactor, we will be able to
improve and optimize it.
Once the tracking works robustly in most case, we should improve
feature detection (with outlier rejection) to allow nearly automatic
tracking.
Feature prediction could be added to help avoid drifting markers.

Libmv will need to be refactored to remove all unused and unsupported parts.
Only methods relevant to tracking and reconstruction should be kept.
This simplification of libmv design will ease the maintenance, reduce
compile time,
decrease binary size, increase performance, and help attract contributors.

This step will also enable the integration of OpenCV calibration
methods on sane foundations, thus enabling Blender developers to add a
camera calibration interface without requiring a dependency on the
complete OpenCV framework.


More information about the Soc-2011-dev mailing list