blender/extern
Sergey Sharybin cf5e979fb4 Motion tracking: automatic keyframe selection
Implements an automatic keyframe selection algorithm which uses
couple of approaches to find out best keyframes candidates:

- First, slightly modifier Pollefeys's criteria is used, which
  limits correspondence ration from 80% to 100%. This allows to
  reject keyframe candidate early without doing heavy math in
  cases there're not much common features with first keyframe.

- Second step is based on Geometric Robust Information Criteria
  (aka GRIC), which checks whether features motion between
  candidate keyframes is better defined by homography or
  fundamental matrices.

  To be a good keyframe candidate, fundamental matrix need to
  define motion better than homography (in this case F-GRIC will
  be smaller than H-GRIC).

  This two criteria are well described in this paper:
  http://www.cs.ait.ac.th/~mdailey/papers/Tahir-KeyFrame.pdf

- Final step is based on estimating reconstruction error of
  a full-scene solution using candidate keyframes. This part
  is based on the following paper:

  ftp://ftp.tnt.uni-hannover.de/pub/papers/2004/ECCV2004-TTHBAW.pdf

  This step requires reconstruction using candidate keyframes
  and obtaining covariance matrix of 3D points positions.
  Reconstruction was done pretty much straightforward using
  other simple pipeline routines, and for covariance estimation
  pseudo-inverse of Hessian is used, which is in this case
  (J^T * J)+, where + denotes pseudo-inverse.

  Jacobian matrix is estimating using Ceres evaluate API.

  This is also crucial to get rid of possible gauge ambiguity,
  which is in our case made by zero-ing 7 (by gauge freedoms
  number) eigen values in pseudo-inverse.

  There're still room for improving and optimizing the code,
  but we need some point to start with anyway :)

  Thanks to Keir Mierle and Sameer Agarwal who assisted a lot
  to make this feature working.
2013-05-30 09:03:49 +00:00
..
binreloc update gpl header in cmake files 2012-02-11 04:05:00 +00:00
bullet2 bullet: Don't use sse in api for windows. 2013-05-06 22:53:11 +00:00
carve move BLO_sys_types.h -> BLI_sys_types.h (it had nothing todo with loading) 2013-05-28 19:35:26 +00:00
colamd update gpl header in cmake files 2012-02-11 04:05:00 +00:00
Eigen3 Merging r50625 through r51896 from trunk into soc-2011-tomato 2012-11-05 19:42:27 +00:00
glew Merging r51923 through r52851 from trunk into soc-2011-tomato 2012-12-10 15:18:00 +00:00
libmv Motion tracking: automatic keyframe selection 2013-05-30 09:03:49 +00:00
libopenjpeg add cmake option WITH_SYSTEM_OPENJPEG so linux can build cycles without having libopenjpeg installed. 2012-06-23 14:23:44 +00:00
libredcode style cleanup 2012-05-27 00:36:50 +00:00
lzma update gpl header in cmake files 2012-02-11 04:05:00 +00:00
lzo Update bundled version of minilzo 2013-02-25 08:16:28 +00:00
rangetree Import the RangeTree library into extern 2012-12-30 18:20:52 +00:00
recastnavigation misc minor edits. 2013-03-29 06:25:22 +00:00
wcwidth code cleanup: misc warnings/style 2013-03-21 02:58:21 +00:00
xdnd Merging r51923 through r52851 from trunk into soc-2011-tomato 2012-12-10 15:18:00 +00:00
CMakeLists.txt Remplace bunch of annoying ifdefs in tracking.c with a libmv-capi_stub.cc 2013-05-12 22:17:37 +00:00
SConscript Remplace bunch of annoying ifdefs in tracking.c with a libmv-capi_stub.cc 2013-05-12 22:17:37 +00:00