diff options
Diffstat (limited to 'extern/libmv/libmv-capi.cpp')
-rw-r--r-- | extern/libmv/libmv-capi.cpp | 33 |
1 files changed, 25 insertions, 8 deletions
diff --git a/extern/libmv/libmv-capi.cpp b/extern/libmv/libmv-capi.cpp index aa05279d731..ed89f8cbfb3 100644 --- a/extern/libmv/libmv-capi.cpp +++ b/extern/libmv/libmv-capi.cpp @@ -36,6 +36,8 @@ #include "Math/v3d_optimization.h" #include "libmv/tracking/esm_region_tracker.h" +#include "libmv/tracking/brute_region_tracker.h" +#include "libmv/tracking/hybrid_region_tracker.h" #include "libmv/tracking/klt_region_tracker.h" #include "libmv/tracking/trklt_region_tracker.h" #include "libmv/tracking/lmicklt_region_tracker.h" @@ -109,18 +111,33 @@ void libmv_setLoggingVerbosity(int verbosity) /* ************ RegionTracker ************ */ -libmv_RegionTracker *libmv_regionTrackerNew(int max_iterations, int pyramid_level, int half_window_size) +libmv_RegionTracker *libmv_pyramidRegionTrackerNew(int max_iterations, int pyramid_level, int half_window_size) { - libmv::EsmRegionTracker *klt_region_tracker = new libmv::EsmRegionTracker; + libmv::EsmRegionTracker *esm_region_tracker = new libmv::EsmRegionTracker; + esm_region_tracker->half_window_size = half_window_size; + esm_region_tracker->max_iterations = max_iterations; + esm_region_tracker->min_determinant = 1e-4; - klt_region_tracker->half_window_size = half_window_size; - klt_region_tracker->max_iterations = max_iterations; - klt_region_tracker->min_determinant = 1e-4; + libmv::PyramidRegionTracker *pyramid_region_tracker = + new libmv::PyramidRegionTracker(esm_region_tracker, pyramid_level); - libmv::PyramidRegionTracker *region_tracker = - new libmv::PyramidRegionTracker(klt_region_tracker, pyramid_level); + return (libmv_RegionTracker *)pyramid_region_tracker; +} + +libmv_RegionTracker *libmv_hybridRegionTrackerNew(int max_iterations, int half_window_size) +{ + libmv::EsmRegionTracker *esm_region_tracker = new libmv::EsmRegionTracker; + esm_region_tracker->half_window_size = half_window_size; + esm_region_tracker->max_iterations = max_iterations; + esm_region_tracker->min_determinant = 1e-4; + + libmv::BruteRegionTracker *brute_region_tracker = new libmv::BruteRegionTracker; + brute_region_tracker->half_window_size = half_window_size; + + libmv::HybridRegionTracker *hybrid_region_tracker = + new libmv::HybridRegionTracker(brute_region_tracker, esm_region_tracker); - return (libmv_RegionTracker *)region_tracker; + return (libmv_RegionTracker *)hybrid_region_tracker; } static void floatBufToImage(const float *buf, int width, int height, libmv::FloatImage *image) |