Permalink
Switch branches/tags
Nothing to show
Commits on Sep 25, 2013
  1. Code cleanup: Minor function capitalization fix

    Original patch by Joseph Mansfield to the Blender repository.
    committed Sep 25, 2013
  2. Code cleanup: spelling correction

    Original patch by Joseph Mansfield to the Blender repository.
    committed Sep 25, 2013
  3. Fix for uninitialized covariance matrix

    Lead to unpredictable tracking termination criteria.
    committed Sep 25, 2013
  4. Add Procrustes PNP ("PPnP") resection algorithm to libmv

    This adds a new Euclidean resection method, used to create the
    initial reconstruction in the motion tracker, to libmv. The method
    is based on the Procrustes PNP algorithm (aka "PPnP"). Currently
    the algorithm is not connected with the motion tracker, but it
    will be eventually since it supports initialization.
    
    Having an initial guess when doing resection is important for
    ambiguous cases where potentially the user could offer extra
    guidance to the solver, in the form of "this point is in front of
    that point".
    
    Original patch by Keir Mierle made to Blender repository.
    committed Sep 25, 2013
Commits on Jun 18, 2013
  1. Compilation error when using clang

    Where couple of issues:
    
    - Overloaded assignment operator usage ambiguity
      around some of the Eigen matrix assignment.
    
    - Using -O4 flag here on linux ended up in lots
      of cryptic linker issues, even when using recently
      release clang 3.3.
    
      Disabled forcing optimization flag for now.
      We could end up with something smarter in the
      future, but for now i'm not as much fan of
      forcing compiler's flag.
    committed Jun 18, 2013
Commits on Jun 1, 2013
  1. Pass vectors by a reference

    Saves couple of time which used to waste on copying objects,
    also solves win32 compilation errors caused by alignment.
    committed Jun 1, 2013
Commits on May 30, 2013
  1. Code cleanup

    - Made some arguments passing to detector const.
    - Remove unneeded include from track_region header.
    committed May 30, 2013
Commits on May 12, 2013
  1. Pass ApplyRadialDistortionCameraIntrinsics input arguments by reference

    This shall save some CPU time on calling copy constructor and give
    some boost of bundle adjuster (where jet could take some time to
    be passed by value).
    committed May 12, 2013
  2. Minor code style cleanup.

    committed May 12, 2013
  3. Cleanup in simple pipeline's bundler

    - Better match Google's code style conventions.
    - Move evaluation part into own function, makes
      bundling itself easier to follow.
    - Made evaluation an optional parameter.
    - Removed note about unsupported camera intrinsics
      refining flags. Technically, all combinations
      are possible.
    committed May 12, 2013
  4. Remove check for zero focal length in BA cost functor

    This check is actually redundant, because empty intrinsics
    will have focal length of 1.0, which means original comment
    about BundleIntrinsics was not truth.
    
    It is possible that external user will send focal length of
    zero to be refined, but blender prevents this from happening.
    committed May 12, 2013
Commits on May 11, 2013
  1. Fix compilation error with msvc2012

    Using change from glog's upstream for this.
    committed May 11, 2013
Commits on May 10, 2013
  1. Keyframe selection improvements

    Added additional criteria, which ignores
    keyframe pair if success intersection factor
    is lower than current candidate pair factor.
    
    This solves issue with keyframe pair at which
    most of the tracks are intersecting behind the
    camera is accepted (because variance in this
    case is really small),
    
    Also tweaked generalized inverse function,
    which now doesn't scale epsilon by maximal
    matrix element. This gave issues at really bad
    candidates with unstable covariance. In this
    case almost all eigen values getting zeroed
    on inverse leading to small expected error.
    committed May 10, 2013
  2. Keyframe selection code cleanup

    - Updated comments in code.
    - Removed currently unused functions.
      Actually, they'd better be moved to some generic
      logging module, but we don't have it now so was
      lazy to create one now. Could happen later using
      code from git history
    - Renamed function to match better to what's going
      on in it.
    committed May 10, 2013
  3. Optimization for reconstruction variance

    Achieved by replacing SVD-based pseudo-inverse with
    an eigen solver pseudo inverse.
    
    New function works in the same way: it decomposes
    matrix to V*D*V^-1, then inverts diagonal of D
    and composes matrix back.
    
    The same way is used to deal with gauges - last
    7 eigen values are getting zeroed.
    
    In own tests gives approx 2x boost, without
    visible affect on selected keyframe quality.
    committed May 10, 2013
  4. Initial commit of reconstruction variance criteria

    which is an addition for GRIC-based keyframe selection.
    
    Uses paper Keyframe Selection for Camera Motion and Structure
    Estimation from Multiple Views,
    ftp://ftp.tnt.uni-hannover.de/pub/papers/2004/ECCV2004-TTHBAW.pdf
    as a basis.
    
    Currently implemented camera positions reconstructions,
    bundle positions estimation and bundle adjustment step.
    
    Covariance matrix is estimating using generalized inverse
    with 7 (by the number of gauge freedoms) zeroed eigen values
    of J^T * J.
    
    Additional changes:
    - Added utility function FundamentalToEssential to extract
      E from F matrix, used by both final reconstruction pipeline
      and reconstruction variance code.
    
    - Refactored bundler a bit, so now it's possible to return
      different evaluation data, such as number of cameras and
      points being minimized and also jacobian.
    
      Jacobian currently contains only camera and points columns,
      no intrinsics there yet. It is also currently converting to
      an Eigen dense matrix. A bit weak, but speed is nice for
      tests.
    
      Columns in jacobian are ordered in the following way:
      first columns are cameras (3 cols for rotation and 3 cols
      for translation), then goes 3D point columns.
    
    - Switched F and H refining to normalized space. Apparently,
      refining F in pixel space squeezes it a lot making it wrong.
    
    - EuclideanIntersect will not add point to reconstruction if
      it happened to be behind the camera.
    
    - Cleaned style a bit.
    committed Mar 14, 2013
  5. Add check for points behind camera in euclidan BA cost functor

    In cases keyframes are no so good, algebraic two frames construction
    could produce result, for which more aggressive Ceres-based BA code
    will fall to a solution for which points goes behind the camera,
    which is not so nice.
    
    Seems in newer Ceres returning false from cost functor wouldn't
    abort solution, but will restrict solver from moving points behind
    the camera.
    
    Works fine in own tests, but requires more tests.
    committed May 10, 2013
Commits on Apr 24, 2013
  1. Reconstructed scene scale ambiguity improvement

    Added a function EuclideanScaleToUnity() which is
    aimed to solve scale ambiguity by scaling solution
    in a way cameras centers variance in unity.
    
    Currently only available for euclidean pipeline,
    projective one is not finished anyway.
    committed Apr 24, 2013
Commits on Apr 22, 2013
  1. Use epsilon in modal solver test

    Default epsilon for isApprox was too small,
    leading to some false test failures.
    committed Apr 22, 2013
  2. Update Ceres to current HEAD

    Brings optimization for DENSE_NORMAL_CHOLESKY and
    also fixes threading issues with BLAS.
    committed Apr 22, 2013
Commits on Apr 14, 2013
  1. Fix for bundle adjusting with motion restricted

    Was a bug introduced in previous commit, which
    was trying to set parameterization for non-existing
    camera->t parameter block.
    
    Replaced with subset parameterization.
    
    Also added basic synthetic unit test for modal solver.
    committed Apr 14, 2013
Commits on Apr 8, 2013
  1. Bundle adjustment improvements

    - Get rid of rotation matrix parameterization,
      use angle-axis instead.
    
      Also Joined rotation and translation into
      a single parameter block.
    
      This made minimization go significantly faster,
      like 1.3x times in average.
    
    - Fix first camera when bundling. This is to
      address orientation ambiguity.
    
      Reconstruction result could still vary in
      size, but that's another issue to be addressed
      later.
    
    Additional change:
    
    Split EuclideanBundleCommonIntrinsics into
    smaller functions, so it's now a bit easier
    to follow.
    committed Apr 8, 2013
  2. Update Ceres to current HEAD

    Brings up some noticeable speed improvements. In particular
    the automatic differentiation and bundle adjustment solvers.
    committed Apr 8, 2013
Commits on Apr 7, 2013
  1. Corrected path to gflags

    Currently tools/track.cc is not used, but let's
    keep things a bit more up-to-date :)
    committed Apr 7, 2013
  2. Re-enable tests for multiview and image

    For as long code is in repo and used by some tools
    better to have it covered by tests.
    
    Some of them are failing tho, but that's completely
    different story to be addressed later.
    committed Apr 7, 2013
  3. Do not modify cache's CMAKE_CXX_FLAGS_RELEASE when configuring Ceres

    Otherwise you'll have infinite appending of Ceres-specific flags
    on every saving of any CmakeLists.txt.
    committed Apr 7, 2013
  4. Fixed compilation with BUILD_TOOLS enabled

    This commit mainly reverts parts of following commits:
        0eebc21
        d8109b7
        e595958
        2d6cd58
    
    They declared  lots of stuff deprecated, but in
    fact it's not deprecated just a bit different
    usage pipeline. Anyway, deprecation shall not
    happen spontaneously as a part of other changes.
    And for sure shall not break anything.
    committed Apr 7, 2013
Commits on Apr 6, 2013
  1. Revert "Change libmv's bilinear sampling to assume the same"

    Revert changes to bilinear sampler which were originally
    aimed to match blender's pixel center (where integer coord
    is a left-bottom corner, x.5 coords are centers.
    
    The reason of revert is changing this assumption in only
    sampler didn't work well and lead to wrong results of
    BlurredImageAndDerivativesChannels for example.
    
    Discovered when was doing unit-tests for brute region tracker.
    
    This reverts commit daa354c.
    committed Apr 6, 2013
  2. Added basic test for brute region tracker

    It is failing at this moment and this is caused because
    of how SampleLinear works - seems it's assumption about
    pixel center is not correct for internal sampling.
    committed Apr 6, 2013
  3. Tweak to KLT region tracker test

    KLT is usually used to track relatively small
    motions, and in this case motion almost equals
    to half window size. This confuses math and
    leads to not so much expected result.
    
    Further, not actually sure this is nice idea
    to use KLT in such synthetic case.
    committed Apr 6, 2013
  4. Pyramid tracker unit test fix

    Issue was caused by trackers modifying guessed
    point location even in case of failure. So made
    id so both level 0 and level 3 of pyramid are
    starting from the same initial guessed location.
    
    Modifying locations in case tracker returns false
    is not actually a bug - someone could still want
    to use that location. False in this case  means
    more like "returned location is not so much
    accurate".
    committed Apr 6, 2013
Commits on Apr 5, 2013
  1. Intersect unit test fix

    EuclideanIntersect is not aware of camera calibration
    matrix yet and always assumes it to be an identity.
    
    So using non-identity matrix to construct sample case
    leads to wrong projection results.
    
    For now made it so test case uses identity matrix for
    calibration.
    
    Also fixed variable shadowing which lead to wrong
    markers positions (were either zero or undefined).
    committed Apr 5, 2013