Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2012-09-20Make Euclidean resection "always" succeed.Keir Mierle
The Euclidean resection code had a magical constant, 1e-3, used to compare the results of solving an equation. This failure detection was well-intended, trying to prevent poor solutions from getting made without notifying the caller. Unfortunately in practice, this threshold is too conservative. Furthermore, it is not clear the threshold should exist at all; the purpose of the Euclidean resection is to come up with the best solution it can; other methods (e.g. reprojection error) should be used to compare whether the method succeeded. This commit changes the Euclidean EPnP code to always succeed, causing the previous fallback to projective resection to never run. In most cases, this will result in better reconstructions. This should, in most cases, fix the dreaded "flipping" problem.
2012-09-20Fix variable naming in the planar tracker.Keir Mierle
2012-09-20Add smarter tolerance checking in the planar tracker.Keir Mierle
The planar tracker uses Ceres for the refinement stage. During refinement, Ceres iteratively updates the parameters with the latest best guess. If the change in the parameters falls below a threshold, Ceres will abort successfully ("converged"). For the case of pure translation tracking, the parameters are exactly the two pixel shifts (dx, dy), and measuring the change in these parameters gives a meaningful termination criterion. However, for all the other parameterizations like affine, where the parameterization involves affine parameters that have no physical interpretation, Ceres is left with no way to terminate the solver early. With the existing code, often many iterations are run long after Ceres has found a solution sufficiently accurate for all tracking needs. No one needs tracking with a quadrillionth of a pixel accuracy; that time is wasted. This patch extends the existing iteration callback that is passed in to Ceres to check if the pattern has fallen out of the search window, to also check if the optimizer has made a tiny step. In particular, if the maximum shift of any patch corner between two successful optimizer steps is less than a threshold (currently 0.005 pixels), the track is declared successful and tracking is terminated. This leads to dramatic speed increases in some cases, with little to no loss in track quality. This is especially apparent when tracking patches with affine or perspective motion models. For example, on some tracking cases I tried, the iterations Ceres took went from 50 to 3.
2012-09-20Detect too-small planar tracking patches.Keir Mierle
The planar tracker did not detect very skinny patches which have effectively zero area and are untrackable. This adds detection and rejection of patterns with zero area. This fixes a crash found by during Mango production.
2012-09-20Cleanup for when trackers fall out of the search window.Keir Mierle
Sergey originally left a TODO() here, but his fix is the correct one. I removed the TODO and fixed some comment issues.
2012-09-19Fix crash when tracking in planar motion model (and maybe some other)Sergey Sharybin
It was an Abort() caused by check for solver result not equal to USER_ABORT. In some cases solver returns USER_ABORT due to BoundaryCheckingCallback detects coordinates does not belong to image. Somehow this callback wasn't called in previous version of Ceres and in the same case marker was jumping. Now when the callback is called it seems we could simply return failure of tracking without aborting Blender. Probably this is in fact some issue somewhere else, would double check with Keir about this.
2012-09-18Ceres: resolve no previous declarations warningsSergey Sharybin
Currently done as patch applied on bundling, would forward it to Ceres developers.
2012-09-18Libmv: resolved some compilation warnings (missed prototypes)Sergey Sharybin
In some cases it was missed include of header file, in some other cases symbol could be static.
2012-09-18Libmv: fixed wrong function prototypesSergey Sharybin
Also mark non-public functions as static.
2012-09-17code cleanup: correct include paths and commentCampbell Barton
2012-09-16Real fix for OSX CMake -- was a typo in build file generation fileSergey Sharybin
Now Ceres re-bundling should go smooth :)
2012-09-16Fix OSX compileJens Verwiebe
2012-09-16Fix typo in one of previous commitsSergey Sharybin
2012-09-16Ceres: tweak namespace for hash classes for MSVC2010Sergey Sharybin
Not sure if it'll solve all issues, but at least it should reduce amount of errors. Also added missed patch from previous commit.
2012-09-16Ceres: reshuffle include order to solve compilation error with MSVCSergey Sharybin
Not sure why exactly this happens, would need extra investigation and should probably be also fixed in upstream.
2012-09-16Libmv: remove unwind hack from CMake rules.Sergey Sharybin
Such stuff better be solved in glog itself. Should be pretty safe change since it was defined for CMake only and AFAIR Jens wanted to get rid of this too.
2012-09-16Ceres: upgrade to version 1.3.0Sergey Sharybin
This should contain real fixes for Windows, making it more robost and hopefully faster (due to proper collection port) on that platform. Also hack to fix Eigen alignment shouldn't be needed anymore. Also on platforms which have got broken TR1 collections it's better to define CERES_NO_TR1 instead of using Boost hacks. Made changes to Scons and CMake, but can not check if this indeed works since i don't have OSX here.
2012-09-16Ceres: remove debug-only code from bundling script, also move osx workaround ↵Sergey Sharybin
to template
2012-09-11Fix libmv build on OS X with 10.5 SDK. The tr1::unordered_map implementationBrecht Van Lommel
is broken in this SDK, now it uses the boost implementation instead.
2012-08-01Code cleanup: silence some -Wnarrowing warnings from C++11Sergey Sharybin
2012-07-27Fix compile errors on VC++ 2012 RC1.Daniel Genrich
Note: Compile still fails during ceres compile (namespace tr1 problems).
2012-06-14Disable fixed-sized specializations for schur solverSergey Sharybin
As far as i remember Keir, this should be safe for our usages of ceres and it should save noticeable amount of time and used memory when compiling blender with libmv support. Quick tests with tracking went smooth after this.
2012-06-12Masking support for motion tracksSergey Sharybin
Added option to use Grease Pencil datablock as a mask for pattern when doing motion tracking. Option could be found in Tracking Settings panel. All strokes would be rasterized separately from each other and every stroke is treating as a closed spline. Also added option to apply a mask on track preview which is situated just after B/B/W channel button under track preview.
2012-06-11Fix compilation of new tracker for MinGW/MinGW64Antony Riakiotakis
2012-06-11Scale search area when doing planar trackingSergey Sharybin
Helps keeping features tracked when there's large scale happens without need to manually re-adjust search area. Currently using factor of pattern's boundbox scale, but probably could be done in more accurate way?
2012-06-11SVN maintenance.Guillermo S. Romero
2012-06-10Commit patch from Stephan Kassemeyer sent to MLSergey Sharybin
This patch aims to solve unaligned operation assert happens in Eigen library. This is short-term solution which in fact shall be reverted as soon as real solution would be added to Ceres. Meanwhile this should be acceptable to have for a while.
2012-06-10Planar tracking support for motion trackingSergey Sharybin
=========================================== Major list of changes done in tomato branch: - Add a planar tracking implementation to libmv This adds a new planar tracking implementation to libmv. The tracker is based on Ceres[1], the new nonlinear minimizer that myself and Sameer released from Google as open source. Since the motion model is more involved, the interface is different than the RegionTracker interface used previously in Blender. The start of a C API in libmv-capi.{cpp,h} is also included. - Migrate from pat_{min,max} for markers to 4 corners representation Convert markers in the movie clip editor / 2D tracker from using pat_min and pat_max notation to using the a more general, 4-corner representation. There is still considerable porting work to do; in particular sliding from preview widget does not work correct for rotated markers. All other areas should be ported to new representation: * Added support of sliding individual corners. LMB slide + Ctrl would scale the whole pattern * S would scale the whole marker, S-S would scale pattern only * Added support of marker's rotation which is currently rotates only patterns around their centers or all markers around median, Rotation or other non-translation/scaling transformation of search area doesn't make sense. * Track Preview widget would display transformed pattern which libmv actually operates with. - "Efficient Second-order Minimization" for the planar tracker This implements the "Efficient Second-order Minimization" scheme, as supported by the existing translation tracker. This increases the amount of per-iteration work, but decreases the number of iterations required to converge and also increases the size of the basin of attraction for the optimization. - Remove the use of the legacy RegionTracker API from Blender, and replaces it with the new TrackRegion API. This also adds several features to the planar tracker in libmv: * Do a brute-force initialization of tracking similar to "Hybrid" mode in the stable release, but using all floats. This is slower but more accurate. It is still necessary to evaluate if the performance loss is worth it. In particular, this change is necessary to support high bit depth imagery. * Add support for masks over the search window. This is a step towards supporting user-defined tracker masks. The tracker masks will make it easy for users to make a mask for e.g. a ball. Not exposed into interface yet/ * Add Pearson product moment correlation coefficient checking (aka "Correlation" in the UI. This causes tracking failure if the tracked patch is not linearly related to the template. * Add support for warping a few points in addition to the supplied points. This is useful because the tracking code deliberately does not expose the underlying warp representation. Instead, warps are specified in an aparametric way via the correspondences. - Replace the old style tracker configuration panel with the new planar tracking panel. From a users perspective, this means: * The old "tracking algorithm" picker is gone. There is only 1 algorithm now. We may revisit this later, but I would much prefer to have only 1 algorithm. So far no optimization work has been done so the speed is not there yet. * There is now a dropdown to select the motion model. Choices: * Translation * Translation, rotation * Translation, scale * Translation, rotation, scale * Affine * Perspective * The old "Hybrid" mode is gone; instead there is a toggle to enable or disable translation-only tracker initialization. This is the equivalent of the hyrbid mode before, but rewritten to work with the new planar tracking modes. * The pyramid levels setting is gone. At a future date, the planar tracker will decide to use pyramids or not automatically. The pyramid setting was ultimately a mistake; with the brute force initialization it is unnecessary. - Add light-normalized tracking Added the ability to normalize patterns by their average value while tracking, to make them invariant to global illumination changes. Additional details could be found at wiki page [2] [1] http://code.google.com/p/ceres-solver [2] http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.64/Motion_Tracker
2012-06-10Initial Ceres integration into BlenderSergey Sharybin
Currently only put sources of Ceres library into extern/libmv/third_party and setup CMake and SCons building systems. Integration details: - Even CMake build files are not re-used from Ceres's trunk: they're using some automatic stuff detection like glog, pthreads, protobuf and so and it's not so clear how to re-use that files without modifications. And IMO it's easier if build files are getting re-generated automatically to match Blender-specific setup rather than keeping changes made locally in Blender in sync when re-bundling Ceres library. Especially in case when it's already needed to support SCons build system. - Integrated only actual sources, all tests were stripped. Probably it'll be nice to have them, but they'll need clear integration with current module test stuff in Blender. - Suitesparse was disabled. It'll help a lot having it, but there are some difficulties making cholmod working fine on windows. Would be added in future - collections_port.cc was also stripped. It's not used by Ceres's upstream and it gives compilation error (undefined uint32 -- looks like namespace issue). - Currently all schur eliminators are included. Not sure if it makes sense, also not sure if it makes sense having them switchable on and off -- IMO better to have single configuration which works and does not require special tweaks after everything was set up. To bundle updated version of Ceres: - Go to extern/libmv/third_party/ceres folder - Run ./bundle.sh This will checkout fresh Ceres snapshot of Windows branch (which is currently most interesting from integration into Blender POV), apply all patches listed in patches/series and copy needed files into Blender's working copy. This will also re-generate CMake/SCons build rules. If you'll need extra files from Ceres repository which are not present in Blender, you'll need to copy them manually and then run ./mkfiles.sh from extern/libmv/third_party/ceres folder which will update list of files used by Blender. Thanks to Leir Mierle and Sameer Agarwal (and all others who helped developing Ceres) this library and thanks to Keir Mierle with help integrating it into Blender!
2012-05-10Style cleanup: use 2 spaces for indentation in bundle scriptsSergey Sharybin
2012-05-10Carve and libmv bundling scripts: should work with svn checkout nowSergey Sharybin
2012-05-10Synchronize libmv with changes in git branchSergey Sharybin
2012-05-09Remove unneeded and unused patch for libmvSergey Sharybin
2012-05-09Enhance logging in libmv's trackers.Keir Mierle
Cleanups in brute_region_tracker.cc.
2012-04-28Camera tracking: support of tripod motion solvingSergey Sharybin
Expose option into interface to use modal solver which currently supports only tripod motion. This solver requires two tracks at least to reconstruct motion. Using more tracks aren't improving solution in general, just adds instability into solution and slows down things a lot. Refirement of camera intrinsics was disabled due to it's not only refines camera intrinsics but also adjusts camera position which isn't necessary here To use this solver just activate "Tripod Motion" checkbox in solver panel. Merged from tomato: svn merge ^/branches/soc-2011-tomato -r45622:45624 -r46036:46037 P.S. Quite experimental yet, requires more checking and probably tweaks to prevent camera jumps when tracks apperars/disappears from the screen.
2012-04-24Add libMV and Scons support for MinGW-w64, patches by Caleb Joseph with ↵Antony Riakiotakis
slight modifications. Thanks!
2012-04-14Camera tracking: support of tripod motion solvingSergey Sharybin
Expose option into interface to use modal solver which currently supports only tripod motion. This solver requires two tracks at least to reconstruct motion. Using more tracks aren't improving solution in general, just adds instability into solution and slows down things a lot. Refirement of camera intrinsics is supported by this solver. To use this solver just activate "Tripod Motion" checkbox in solver panel.
2012-04-14libmv: bundle new upstream version of libmv from own branchSergey Sharybin
Added modal solver module which is needed for tripod solving. For details of this solver read changelog of libmv.
2012-04-14Merging r44227 through r45619 from trunk into soc-2011-tomatoSergey Sharybin
2012-04-12libmv: bundle new upstream version from own branch with rigid registration ↵Sergey Sharybin
implementation Currently not used in blender code but is needed for some current work.
2012-04-11libmv: bundle new upstream version from own branch which should supportSergey Sharybin
compilation of glog on hurd platform.
2012-03-30Camera tracking refactoring:Sergey Sharybin
- Deduplicate patetrn sampling used in esm and lmicklt trackers and move SamplePattern to image/sample.h - Move computation of Pearson product-moment correlation into own function in new file image/correlation.h so all trackers can use it to check final correlation. - Remove SAD tracker. It's almost the same as brute tracker, with only two differences: 1. It does brute search of affine transformation which in some cases helps to track rotating features 2. It didn't use common tracker api which probably gave some speed advantage, but lead to a real headache to use it together with other trackers leading to duplicated code in blender side. - Switch blenedr to use brute tracker instead of sad tracker which tracking made source code much more simple to follow.
2012-03-23fix for cmake error on non osx systemsCampbell Barton
2012-03-21modify osx CMake hack so the CMake files can be parsed more easily by naive ↵Campbell Barton
my error checker.
2012-03-12Re-bundle libmv from own branch.Sergey Sharybin
Should resolve compilation error on some platforms when using linux and compilation error of libmv on FreeBSB. It was a regression caused by not applied changes on config_linux.h and some changes made to utilities.cc were also occasionally missed.
2012-03-12SVN maintenance.Guillermo S. Romero
2012-03-12Port changes from libmv/CMakeLists.txt to build rules files generator scriptSergey Sharybin
2012-03-11Bundle new upstream version of libmv from own branchSergey Sharybin
This version of libmv includes new gflags and glog libraries which makes it possible to compile libmv with clang compiler. Also remove code from CMakeLists which was disabling libmv if using clang. Tested on linux with gcc-4.6 and clang-3.0, windows cmake+msvc and scons+mingw. Could be some issues with other platforms/build system which shall be simple to resolve.
2012-03-11OSX/libmv: restrict the unwind.h workaround to 10.6.sdk onlyJens Verwiebe
2012-03-11OSX/libmv: added a ahck to fix compiling with 10.6.sdk, unwind.h relatedJens Verwiebe