Make planar tracking much faster.
authorKeir Mierle <mierle@gmail.com>
Fri, 8 Jun 2012 17:42:17 +0000 (17:42 +0000)
committerKeir Mierle <mierle@gmail.com>
Fri, 8 Jun 2012 17:42:17 +0000 (17:42 +0000)
commit276701502a6a55be8e447a728914406150e7b7c0
treed74dcc08ccbb17abb6bdee8698a041733b2f45ba
parent511ee1175a9bcb45de68543f73c12b1ef8105632
Make planar tracking much faster.

- This makes planar tracking around 2-3x or more faster than
  before, by rearranging how the sampling is done.
  Previously, the source patch was sampled repeatedly on
  every optimizer iteration; this was done for
  implementation speed, but was wasteful in computation.

- This also contains some additions to Ceres to help
  deailing with mixed numeric / automatic differentation. In
  particular, there is now a "Chain::Rule" operator that
  facilitates calling a function that takes Jet arguments,
  yet does numeric derivatives internally. This is used to
  mix the numeric differentation of the images with the warp
  parameters, passed as jets by Ceres to the warp functor.

  There is also a new "JetOps" object for doing operations
  on types which may or may not be jets, such as scaling
  the derivative part only, or extracting the scalar part
  of a jet.

  The Ceres patches are aimed at upstream.

- A new function for sampling a patch is now part of the
  track_region.h API; this will get used to make the preview
  widget properly show what is getting tracked. Currently
  the preview widget does not handle perspective tracks.

Known issues:

  This patch introduces a bug such that the "Minimum
  Correlation" flag does not work; if it is enabled, tracking
  aborts immediately. The workaround for now is to disable the
  correlation checking, and examine your tracks carefully. A
  fix will get added shortly.
extern/libmv/libmv/image/sample.h
extern/libmv/libmv/tracking/track_region.cc
extern/libmv/libmv/tracking/track_region.h
extern/libmv/third_party/ceres/include/ceres/jet.h