[Bf-blender-cvs] [b15a056] master: Libmv: Initial commit of unfinished AutoTrack API

Keir Mierle noreply at git.blender.org
Thu Oct 30 19:32:11 CET 2014


Commit: b15a056230434bbb873a5d5d04e560a6569d8e62
Author: Keir Mierle
Date:   Sun Jun 22 14:34:23 2014 +0600
Branches: master
https://developer.blender.org/rBb15a056230434bbb873a5d5d04e560a6569d8e62

Libmv: Initial commit of unfinished AutoTrack API

This starts the creating the new AutoTrack API. The new API will
make it possible for libmv to do full autotracking, including
predictive tracking and also support multiple motion models (3D
planes etc).

The first goal (not in this patch) is to convert Blender to use
the new API without adding any new functionality.

This API currently contanins:

- Frame accessor to access frames which are stored in Blender side.
- New Tracks implementation
- New Reconstruction implementation

Currently this API only tested on doing the same frame-to-frame
tracking as the old API allowed to do. But it also supports now
predictive tracking which is based on the Kalman filter.

===================================================================

M	extern/libmv/CMakeLists.txt
M	extern/libmv/ChangeLog
M	extern/libmv/SConscript
M	extern/libmv/files.txt
A	extern/libmv/libmv/autotrack/autotrack.cc
A	extern/libmv/libmv/autotrack/autotrack.h
A	extern/libmv/libmv/autotrack/callbacks.h
A	extern/libmv/libmv/autotrack/frame_accessor.h
A	extern/libmv/libmv/autotrack/marker.h
A	extern/libmv/libmv/autotrack/model.h
A	extern/libmv/libmv/autotrack/predict_tracks.cc
A	extern/libmv/libmv/autotrack/predict_tracks.h
A	extern/libmv/libmv/autotrack/predict_tracks_test.cc
A	extern/libmv/libmv/autotrack/quad.h
A	extern/libmv/libmv/autotrack/reconstruction.h
A	extern/libmv/libmv/autotrack/region.h
A	extern/libmv/libmv/autotrack/tracks.cc
A	extern/libmv/libmv/autotrack/tracks.h
A	extern/libmv/libmv/autotrack/tracks_test.cc
M	extern/libmv/libmv/base/vector.h
M	extern/libmv/libmv/image/array_nd.h
M	extern/libmv/libmv/simple_pipeline/keyframe_selection.cc
A	extern/libmv/libmv/tracking/kalman_filter.h
M	extern/libmv/libmv/tracking/track_region.h

===================================================================

diff --git a/extern/libmv/CMakeLists.txt b/extern/libmv/CMakeLists.txt
index 09c36fc..bd27228 100644
--- a/extern/libmv/CMakeLists.txt
+++ b/extern/libmv/CMakeLists.txt
@@ -66,7 +66,7 @@ if(WITH_LIBMV)
 
 	list(APPEND INC_SYS
 		../Eigen3
-		${PNG_INCLUDE_DIRS}
+		${PNG_INCLUDE_DIR}
 		${ZLIB_INCLUDE_DIRS}
 	)
 
@@ -79,6 +79,9 @@ if(WITH_LIBMV)
 		intern/reconstruction.cc
 		intern/track_region.cc
 		intern/tracks.cc
+		libmv/autotrack/autotrack.cc
+		libmv/autotrack/predict_tracks.cc
+		libmv/autotrack/tracks.cc
 		libmv/base/aligned_malloc.cc
 		libmv/image/array_nd.cc
 		libmv/image/convolve.cc
@@ -122,6 +125,16 @@ if(WITH_LIBMV)
 		intern/reconstruction.h
 		intern/track_region.h
 		intern/tracks.h
+		libmv/autotrack/autotrack.h
+		libmv/autotrack/callbacks.h
+		libmv/autotrack/frame_accessor.h
+		libmv/autotrack/marker.h
+		libmv/autotrack/model.h
+		libmv/autotrack/predict_tracks.h
+		libmv/autotrack/quad.h
+		libmv/autotrack/reconstruction.h
+		libmv/autotrack/region.h
+		libmv/autotrack/tracks.h
 		libmv/base/aligned_malloc.h
 		libmv/base/id_generator.h
 		libmv/base/scoped_ptr.h
@@ -171,6 +184,7 @@ if(WITH_LIBMV)
 		libmv/simple_pipeline/tracks.h
 		libmv/tracking/brute_region_tracker.h
 		libmv/tracking/hybrid_region_tracker.h
+		libmv/tracking/kalman_filter.h
 		libmv/tracking/klt_region_tracker.h
 		libmv/tracking/pyramid_region_tracker.h
 		libmv/tracking/region_tracker.h
@@ -197,6 +211,8 @@ if(WITH_LIBMV)
 	if(WITH_GTESTS)
 		blender_add_lib(libmv_test_dataset "./libmv/multiview/test_data_sets.cc" "" "")
 
+		BLENDER_SRC_GTEST("libmv_predict_tracks" "./libmv/autotrack/predict_tracks_test.cc" "libmv_test_dataset;extern_libmv;extern_ceres")
+		BLENDER_SRC_GTEST("libmv_tracks" "./libmv/autotrack/tracks_test.cc" "libmv_test_dataset;extern_libmv;extern_ceres")
 		BLENDER_SRC_GTEST("libmv_scoped_ptr" "./libmv/base/scoped_ptr_test.cc" "libmv_test_dataset;extern_libmv;extern_ceres")
 		BLENDER_SRC_GTEST("libmv_vector" "./libmv/base/vector_test.cc" "libmv_test_dataset;extern_libmv;extern_ceres")
 		BLENDER_SRC_GTEST("libmv_array_nd" "./libmv/image/array_nd_test.cc" "libmv_test_dataset;extern_libmv;extern_ceres")
@@ -229,7 +245,7 @@ if(WITH_LIBMV)
 	endif()
 else()
 	list(APPEND SRC
-		intern/stub.cc
+		libmv-capi_stub.cc
 	)
 endif()
 
@@ -240,7 +256,7 @@ if(WITH_LIBMV)
 endif()
 
 # make GLog a separate target, so it can be used for gtest as well.
-if(WITH_LIBMV OR WITH_GTESTS OR WITH_CYCLES_LOGGING)
+if(WITH_LIBMV OR WITH_GTESTS)
 	# We compile GLog together with GFlag so we don't worry about
 	# adding extra lib to linker.
 	set(GLOG_SRC
diff --git a/extern/libmv/ChangeLog b/extern/libmv/ChangeLog
index 276fbb2..5c2129b 100644
--- a/extern/libmv/ChangeLog
+++ b/extern/libmv/ChangeLog
@@ -1,3 +1,365 @@
+commit d976e034cdf74b34860e0632d7b29713f47c5756
+Author: Keir Mierle <mierle at gmail.com>
+Date:   Sat Aug 23 00:38:01 2014 -0700
+
+    Minor keyframe selection cleanups
+    
+    Reviewers: sergey
+    
+    Reviewed By: sergey
+    
+    Differential Revision: https://developer.blender.org/D757
+
+commit bc99ca55dadfca89fde0f93764397c2fe028943d
+Author: Sergey Sharybin <sergey.vfx at gmail.com>
+Date:   Sat Aug 23 01:55:32 2014 +0600
+
+    implement backward prediction
+    
+    The title actually says it all, just extend current implementation
+    of PredictMarkerPosition() to cases when tracking happens in the reverse
+    order (from the end frame to start).
+    
+    it's still doesn't solve all the ambiguity happening in the function
+    in cases when one tracks the feature and then re-tracks it in order
+    to refine the sliding. This is considered a separate TODO for now and
+    will likely be solved by passing tracking direction to the prediction
+    function.
+    
+    Reviewers: keir
+    
+    Reviewed By: keir
+    
+    Differential Revision: https://developer.blender.org/D663
+
+commit 5b87682d98df65ade02638bc6482d824cf0dd0b3
+Author: Keir Mierle <mierle at gmail.com>
+Date:   Thu Aug 21 22:45:22 2014 -0700
+
+    Make libmv compile on Ubuntu 14.04
+    
+    Reviewers: fsiddi
+    
+    Reviewed By: fsiddi
+    
+    Subscribers: sergey
+    
+    Differential Revision: https://developer.blender.org/D755
+
+commit 0a81db623c458e0384b4f7060d1bcff8993fb469
+Author: Sergey Sharybin <sergey.vfx at gmail.com>
+Date:   Wed Jul 23 00:42:00 2014 +0600
+
+    Fix wrong residual blocks counter
+    
+    This happened in cases when having zero-weighted tracks
+    and could lead to some assert failures on marking parameter
+    block constant.
+
+commit 2824dbac54cacf74828678be7a5c9fd960ce83e2
+Author: Sergey Sharybin <sergey.vfx at gmail.com>
+Date:   Fri Jul 18 12:52:03 2014 +0600
+
+    Fix search area sliding issue
+    
+    The only way to do this is to store search region in floats
+    and round when we need to sample it. Otherwise you'll always
+    have sliding effect caused by rounding the issues, especially
+    when doing incremental offset (thing which happens in the
+    prediction code).
+    
+    Pretty much straightforward change apart from stuff to be kept
+    in mind: offset calculation int should happen relative to the
+    rounded search region. This is because tracker works in the space
+    of the search window image which get's rounded on the frame access,
+    
+    This makes API a bit creepy because frame accessor uses the same
+    Region struct as the search window in Marker and ideally we would
+    need to have either IntRegion or Region<int> in order to make
+    Libmv fully track on what's getting rounded and when.
+    
+    Reviewers: keir
+    
+    Reviewed By: keir
+    
+    Differential Revision: https://developer.blender.org/D616
+
+commit 04862c479332308be47a0f27361402444ace8880
+Author: Keir Mierle <mierle at gmail.com>
+Date:   Fri May 9 23:00:03 2014 +0200
+
+    Start the automatic 2D tracking code
+    
+    This starts the 2D automatic tracking code. It is totally unfinished.
+    
+    Reviewers: sergey
+    
+    Reviewed By: sergey
+    
+    Differential Revision: https://developer.blender.org/D523
+
+commit be679f67d807a2139c1f7d7e2ca45141940b30d5
+Author: Keir Mierle <mierle at gmail.com>
+Date:   Fri May 9 14:36:04 2014 +0200
+
+    Also shift the search window
+    
+    Reviewers: sergey
+    
+    Reviewed By: sergey
+    
+    Differential Revision: https://developer.blender.org/D520
+
+commit 66b8f5eef2633ebcde32a388fc14c60171011821
+Author: Keir Mierle <mierle at gmail.com>
+Date:   Fri May 9 13:06:28 2014 +0200
+
+    Change the search region to absolute frame coordinates
+    
+    Smarter Eigen usage
+    
+    Better error logging
+    
+    Reviewers: sergey
+    
+    Reviewed By: sergey
+    
+    Differential Revision: https://developer.blender.org/D519
+
+commit a08193319ae409fad8f08887eae1f79f02e91eaa
+Author: Keir Mierle <mierle at gmail.com>
+Date:   Fri May 9 12:02:47 2014 +0200
+
+    First cut at predictive tracing
+    
+    This adds a Kalman filter-based approach to predict where a marker
+    will go in the next frame to track. Hopefully this will make the
+    tracker work faster by avoiding lengthy searches. This code
+    compiles, but is otherwise untested, and likely does not work.
+    
+    Fix else branch
+    
+    Add some tests
+    
+    Update patch coordinates as well (and test)
+    
+    Reviewers: sergey
+    
+    Reviewed By: sergey
+    
+    Differential Revision: https://developer.blender.org/D518
+
+commit 607ffb2f62b56e34a841abbb952d83e19cd1e23c
+Author: Keir Mierle <mierle at gmail.com>
+Date:   Thu May 8 16:05:28 2014 +0200
+
+    Add constructor to AutoTrack
+
+commit c39e20a0c27da3733804c3848454b5d4c4f0e66b
+Author: Keir Mierle <mierle at gmail.com>
+Date:   Thu May 8 16:04:20 2014 +0200
+
+    Fix GetMarker compilation issue
+
+commit 8dd93e431b6e44439c803bfd26ec2669b656177e
+Author: Keir Mierle <mierle at gmail.com>
+Date:   Thu May 8 15:50:26 2014 +0200
+
+    Expose GetMarker() in AutoTrack
+    
+    Reviewers: sergey
+    
+    Reviewed By: sergey
+    
+    Differential Revision: https://developer.blender.org/D516
+
+commit 4405dff60ea08d454b64da1a7c0595d9328cf8a3
+Author: Keir Mierle <mierle at gmail.com>
+Date:   Thu May 8 15:38:14 2014 +0200
+
+    Add public SetMarkers to AutoTrack
+    
+    Reviewers: sergey
+    
+    Reviewed By: sergey
+    
+    Differential Revision: https://developer.blender.org/D515
+
+commit c90837f6db276a3b1f610eaad509155f6a43b24f
+Author: Keir Mierle <mierle at gmail.com>
+Date:   Thu May 8 15:17:48 2014 +0200
+
+    Make autotrack skeleton compile
+    
+    Reviewers: sergey
+    
+    Reviewed By: sergey
+    
+    Differential Revision: https://developer.blender.org/D514
+
+commit be01baa2e82e36f63e548f073157e68d2ff870c0
+Author: Keir Mierle <mierle at gmail.com>
+Date:   Wed May 7 18:48:55 2014 +0200
+
+    Add preliminary TrackMarkerToFrame in autotrack
+    
+    Reviewers: sergey
+    
+    Reviewed By: sergey
+    
+    Differential Revision: https://developer.blender.org/D509
+
+commit 0cab028d591b3d08672ca86eb6c6e4ac1aacf1d0
+Author: Sergey Sharybin <sergey.vfx at gmail.com>
+Date:   Wed May 7 17:59:11 2014 +0200
+
+    Remove assert from ArrayND Resize
+    
+    That assert broke initialization of arrays which doesn't
+    own the data since constructor uses Resize to set shape
+    and strides.
+    
+    Strides are still to be fixed, but that's for later.
+
+commit 64f9c118029a9351e9023e96527c120e1d724d5b
+Author: Sergey Sharybin <sergey.vfx at gmail.com>
+Date:   Wed May 7 17:42:21 2014 +0200
+
+    Fix ArrayND freeing the data it doesn't own
+    
+    Can't really guarantee it works fully correct now,
+    but at least this check is needed anyway and compilation
+    works just fine.
+    
+    Reviewers: keir
+    
+    Reviewed By: keir
+    
+    Differential Revision: https://developer.blender.org/D508
+
+commit 0618f1c8e88dfc738cdde55784da80b889905e7c
+Author: Keir Mierle <mierle at gmail.com>
+Date:   Wed May 7 12:03:32 2014 +0200
+
+    Minor changes
+    
+    Reviewers: sergey
+    
+    Reviewed By: sergey
+    
+    Differential Revision: https://developer.blender.org/D505
+
+commit 5c34335e1bb90c4ed701ee830c718ed4e20dbffa
+Author: Sergey Sharybin <sergey.vfx at gmail.com>
+Date:   Wed May 7 11:12

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list