commit 7d6020d2ec42c6cb2749bc891186b4880d26d40b Author: Sergey Sharybin Date: Wed Dec 31 15:32:07 2014 +0500 Update GLog to latest upstream revision 143 Mainly to solve compilation error with demangle.cc. commit 5dc746700eaf85cb674f0fb73ff3c1b49a7f6315 Author: Sergey Sharybin Date: Fri Dec 12 14:59:55 2014 +0500 Update GFlags to latest release 2.1.1 Main purpose of this (andsome of upcoming) update is to check if the upstream sources are useable without any modifications for us. And if not, then we'll need to consider moving some changes into upstream. This commit contains an one-to-one copy of the upstream GFlags library and also changes namespace usage since it's changed in the upstream. commit 6fe6d75f7e90e161b44643b953f058a3829a5247 Author: Sergey Sharybin Date: Sat Nov 1 02:53:36 2014 +0500 Libmv: Code cleanup, mixed class/struct in declaration/definition commit d2a5f7953812d2d09765431b59c6c4ac72faf35b Author: Sergey Sharybin Date: Thu Oct 30 23:13:53 2014 +0500 Libmv: Support disabled color channels in tracking settings This was never ported to a new tracking pipeline and now it's done using FrameAccessor::Transform routines. Quite striaghtforward, but i've changed order of grayscale conversion in blender side with call of transform callback. This way it's much easier to perform rescaling in libmv side. commit d976e034cdf74b34860e0632d7b29713f47c5756 Author: Keir Mierle 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 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 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 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 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 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 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 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 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 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 Date: Thu May 8 16:05:28 2014 +0200 Add constructor to AutoTrack commit c39e20a0c27da3733804c3848454b5d4c4f0e66b Author: Keir Mierle Date: Thu May 8 16:04:20 2014 +0200 Fix GetMarker compilation issue commit 8dd93e431b6e44439c803bfd26ec2669b656177e Author: Keir Mierle 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 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 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 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 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 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 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 Date: Wed May 7 11:12:23 2014 +0200 Fix compilation error in frame accessor - int64 is not a standard type, we've got int64_t defined in std int. We also have an msvc port of this header, so should not be an issue. - Fixed inconsistency in usage of CacheKey and Key, used Key. - Some functions weren't marked as virtual. Additional change: added self to authors. Reviewers: keir Reviewed By: keir Differential Revision: https://developer.blender.org/D504 commit 06bc207614e262cd688e2c3ed820ade7c77bdb66 Author: Keir Mierle Date: Tue May 6 22:30:59 2014 +0200 Start new Tracks implementation This adds the new Tracks implementation, as well as a trivial test to show it compiles. Reviewers: sergey Reviewed By: sergey Differential Revision: https://developer.blender.org/D502 commit 25ce061e6da69881460ba7718bb0d660a2380a02 Author: Keir Mierle Date: Tue May 6 19:10:51 2014 +0200 Add Reconstruction class for new API This starts the new Reconstruction class (with support for e.g. planes). This also starts the new namespace "mv" which will eventually have all the symbols we wish to export. Reviewers: sergey Reviewed By: sergey Differential Revision: https://developer.blender.org/D501 commit 0a6af3e29016048978aea607673340500e050339 Author: Keir Mierle Date: Tue May 6 17:52:53 2014 +0200 Add a new Tracks implementation Reviewers: sergey Reviewed By: sergey Differential Revision: https://developer.blender.org/D500 commit 887b68d29c2b198f4939f9ab5153881aa2c1806e Author: Keir Mierle Date: Tue May 6 17:01:39 2014 +0200 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. Note: This does not add any of the API to the build system! It likely does not compile. Reviewers: sergey Reviewed By: sergey Differential Revision: https://developer.blender.org/D499 commit 08cc227d431d257d27f300fbb8e6991e663302da Author: Sergey Sharybin Date: Tue May 6 13:09:22 2014 +0200 Fix homography test failure It was caused by assuming that reconstructed homography matrix should look exactly the same as the matrix used to generate a test case. It's not actually valid assumption because different-looking matrices could correspond to the same exact transform. In this change we make it so actual "re-projected" vectors are being checked, not the values in matrix. This makes it more predictable verification. Reviewers: keir Reviewed By: keir Differential Revision: https://developer.blender.org/D488 commit 0b7d83dc9627447dc7df64d7e3a468aefe9ddc13 Author: Sergey Sharybin Date: Wed Apr 23 19:14:55 2014 +0600 Fix compilation on OSX after previous commit EXPECT_EQ wasn't defined in the scope. commit d14049e00dabf8fdf49056779f0a3718fbb39e8f Author: Sergey Sharybin Date: Wed Apr 23 15:08:16 2014 +0600 Move aligned malloc implementation into own file It was rather stupid having it in brute region tracker, now it is in own file in base library (which was also added in this commit, before this it consist of header files only). Reviewers: keir Reviewed By: keir Differential Revision: https://developer.blender.org/D479 commit 0ddf3851bfcb8de43660b119a25a77a25674200d Author: Sergey Sharybin Date: Mon Apr 21 14:14:03 2014 +0600 Optimization of PearsonProductMomentCorrelation Pass the arrays by reference rather than by value, should give some percent of speedup. Also don't pass the dimensions to the function but get them from the images themselves. Hopefully this will give some %% of tracker speedup. commit f68fdbe5896a6c5bd8b500caeec61b876c5e44c6 Author: Sergey Sharybin Date: Mon Apr 21 14:10:43 2014 +0600 Fix wrong assert in ResizeImage() The assert didn't make any sense because ComputeBoundingBox() is intended to return bounding box in the following way: (xmin, xmax, ymin, ymax). commit 1d386b6775a71c499e9b8e4a288c0785c4937677 Author: Sergey Sharybin Date: Thu Apr 17 18:42:43 2014 +0600 Add unit tests for buffer (un)distortion Currently only uses identity camera intrinsics just to see whether lookup grids are properly allocated. Should prevent accidents like that one happened recently with crashing Blender after Libmv re-integration. commit e1fe41b6604771ba769a9b15eb2f489fbf7af251 Author: Sergey Sharybin Date: Thu Apr 17 17:52:23 2014 +0600 Fix offset array not being properly allocated We really do need unit test for buffer (un)distortion, didn't notice this bug for until new Libmv has been integrated into Blender. commit ee21415a353396df67ef21e82adaffab2a8d2a0a Author: Sergey Sharybin Date: Thu Apr 17 16:26:12 2014 +0600 Support multiple distortion models, including a new division model This commit makes it so CameraIntrinsics is no longer hardcoded to use the traditional polynomial radial distortion model. Currently the distortion code has generic logic which is shared between different distortion models, but had no other models until now. This moves everything specific to the polynomial radial distortion to a subclass PolynomialDistortionCameraIntrinsics(), and adds a new division distortion model suitable for cameras such as the GoPro which have much stronger distortion due to their fisheye lens. This also cleans up the internal API of CameraIntrinsics to make it easier to understand and reduces old C-style code. Reviewers: keir Reviewed By: keir CC: jta Differential Revision: https://developer.blender.org/D335 commit 313252083f6dfa69a93c287bed81dec616503c1b Author: Sergey Sharybin Date: Tue Apr 15 18:23:38 2014 +0600 Fix failure of the image transform linear test Mainly was caused by the flakyness of image rotation in cases when image has even size. The test was expecting the transform code to rotate the image around pixel corner, which isn't a common behavior in image processing applications. Rotation is usually done around the pixel center. So now made it so RotateImage() rotates the image around the pixel center which gives 100% proper result for odd sized images (i.e. center pixel stays untouched). Also made the tests to use odd image sizes which are more predictable by the humans. We can use even sized images in the tests as well but their result wouldn't be so much spectacular. Another issue with the tests was caused by RescaleImageTranslation test which did expect things which are not happening in the function. Reviewers: keir Reviewed By: keir Differential Revision: https://developer.blender.org/D463 commit 80d6945bf5f996b97cd41df0e422afce5e10e7f9 Author: Sergey Sharybin Date: Mon Apr 14 00:01:32 2014 +0600 Unit tests for feature detector Currently covers only simplest cases with synthetic images. Also at this point mainly Harris detector is being testes, other detectors behaves a bit unexpected on synthetic images and this is to be investigated further. Tests will be extended further later. Additional change: - Added constructor to Feature structure - Added operator << for feature for easier debug dumps. TODO: Some tests are not giving the result which i was expected to. This is to be investigated further by finding the reference detector implementation. For until then keeping that tests commented out. Reviewers: keir Reviewed By: keir Differential Revision: https://developer.blender.org/D316 commit 397c3d3ed46eb4967eb285c8369cc125bea4b132 Author: Sergey Sharybin Date: Fri Apr 4 16:17:57 2014 +0600 Compilation error fix Not totally sure why this is needed, but multiview indeed uses V3D library still, so it needs to be linked against it. Patc by Martijn Berger, thanks! commit 1c36279239cbffe152493106eb04e55df7ebd649 Author: Sergey Sharybin Date: Fri Apr 4 14:03:43 2014 +0600 Upgrade Eigen to 3.2.1 version To main reasons for this: - Probably this would solve strict compiler warnings - It brings new stuff like sparse LU decomposition which might be useful in the future. commit de698f442934f475478463445f78a00ea632e823 Author: Sergey Sharybin Date: Thu Apr 3 15:08:26 2014 +0600 Fix compilation error when using make from the sources root - Don't force flann to be static. It's a general rule on linux to have dynamic libraries for all the bits instead of having statically-linked dynamic libraries. - Some weirdo stuff was happening around OpenExif, it was only built on Apple, so don't link targets against this lib on other platforms. - Some libraries were missing for qt-tracker. commit 901b146f28825d3e05f4157ca2a34ae00261b91a Author: Sergey Sharybin Date: Wed Mar 26 17:44:09 2014 +0600 Fix bad memory write in BA code when having zero-weighted tracks Issue was really stupid and caused by the wrong vector initialization. commit d14a372dfe09c7339f267c4904a541fbe2efec43 Author: Sergey Sharybin Date: Fri Mar 21 16:02:41 2014 +0600 Attempt to fix compilation error with msvc2013 commit 933531580b4dc4b65601d785cedc16506d615d7b Author: Sergey Sharybin Date: Thu Mar 20 23:07:34 2014 +0600 Compilation fixes for MinGW Many thanks to Antony Riakiotakis for the patch! commit f1aefcbf58fe04ea2967434f39f703bb486777c8 Author: Sergey Sharybin Date: Thu Feb 27 16:21:19 2014 +0600 Implement separate BA step for tracks which have constant zero weight This is needed to minimize their reprojection error over the footage. Without this extra step positions of such tracks were calculated by algebraic intersection code only, which doesn't give best precision. commit bcf7f9470b2ea33cf89a31a72037ec03be631637 Author: Sergey Sharybin Date: Thu Feb 27 14:16:42 2014 +0600 Avoid zero-sized problem when doing euclidean intersection Zero-sized problem might occur when intersecting track with constant zero weight. For such tracks we'll just use result of algebraic intersection. TODO: We probably need to have a separate BA step to adjust positions of tracks with constant zero weight. commit f884bb20a93189b8210639f3de939c64177d66b3 Author: Sergey Sharybin Date: Wed Feb 26 18:00:40 2014 +0600 Ignore zero weighted markers in keyframe selection It doesn't make sense to use zero-weighted tracks as a correspondences in keyframe selection. Such tracks are not guaranteed to be tracked accurately because their purpose is to add reference points in 3D space without affecting the solution. commit 74db5175cdbcabe673b82eef59c88fb7f342c43f Author: Sergey Sharybin Date: Wed Feb 26 13:23:02 2014 +0600 Tweaks to make bundling into Blender warning-less Mainly issue i caused by conflicts in include directories, so glog used to include config.h from gflags. It might be fixed by splitting gflags/glog from Libmv in Blender build system but that's not something fun to work on. Fixed by making include directories bit more explicit. Also solved no-previous-prototype warnings. commit bc4bc66af0115069562b79e837ccf4fd95c8f97e Author: Sergey Sharybin Date: Fri Feb 21 14:55:13 2014 +0600 Raise epsilon used for model solver test It was too much small leading to false failure triggering caused simply by precision issues. commit bf750590a6af4af3622c01fd1004c44da60484a7 Author: Sergey Sharybin Date: Tue Feb 18 23:35:52 2014 +0600 Made it possible to link against Ceres installed on the system Main purpose of this is to get away from bundled Ceres library which is not so trivial to re-bundle and takes some to do this (not talking about CMake options conflicts and pollution). Enabled by setting WITH_SYSTEM_CERES=ON. Default paths to search Ceres library: - /usr/local - /sw - /opt/local - /opt/csw - /opt/lib/ceres You might also specify Ceres root directory using CERES_ROOT_DIR variable (both CMake and environment variables are supported). If your Ceres is build statically, you're to control all additional libraries needed to link against using CMAKE_EXE_LINKER_FLAGS. commit c9156fbf80c86853806844b754b1e48f45c5ec11 Author: Sergey Sharybin Date: Tue Feb 18 19:38:22 2014 +0600 Remove .orig file which was added by accident